diff --git a/Android.bp b/Android.bp index c03530ee890c6ab511905314f84191f31c95fbd6..e0e5ed966e4c3c0dc55b61628a6ee0e97f42b010 100644 --- a/Android.bp +++ b/Android.bp @@ -33,6 +33,7 @@ java_library { "core/java/**/*.java", "graphics/java/**/*.java", "location/java/**/*.java", + "lowpan/java/**/*.java", "media/java/**/*.java", "media/mca/effect/java/**/*.java", "media/mca/filterfw/java/**/*.java", @@ -54,8 +55,6 @@ java_library { "core/java/android/accounts/IAccountManagerResponse.aidl", "core/java/android/accounts/IAccountAuthenticator.aidl", "core/java/android/accounts/IAccountAuthenticatorResponse.aidl", - "core/java/android/app/IActivityContainer.aidl", - "core/java/android/app/IActivityContainerCallback.aidl", "core/java/android/app/IActivityController.aidl", "core/java/android/app/IActivityManager.aidl", "core/java/android/app/IActivityPendingResult.aidl", @@ -67,6 +66,7 @@ java_library { "core/java/android/app/ITaskStackListener.aidl", "core/java/android/app/IBackupAgent.aidl", "core/java/android/app/IEphemeralResolver.aidl", + "core/java/android/app/IInputForwarder.aidl", "core/java/android/app/IInstantAppResolver.aidl", "core/java/android/app/IInstrumentationWatcher.aidl", "core/java/android/app/INotificationManager.aidl", @@ -128,6 +128,7 @@ java_library { "core/java/android/content/pm/IPackageInstallerCallback.aidl", "core/java/android/content/pm/IPackageInstallerSession.aidl", "core/java/android/content/pm/IPackageManager.aidl", + ":libbinder_aidl", "core/java/android/content/pm/IPackageMoveObserver.aidl", "core/java/android/content/pm/IPackageStatsObserver.aidl", "core/java/android/content/pm/IPinItemRequest.aidl", @@ -220,6 +221,8 @@ java_library { "core/java/android/os/IRecoverySystemProgressListener.aidl", "core/java/android/os/IRemoteCallback.aidl", "core/java/android/os/ISchedulingPolicyService.aidl", + "core/java/android/os/IThermalEventListener.aidl", + "core/java/android/os/IThermalService.aidl", "core/java/android/os/IUpdateLock.aidl", "core/java/android/os/IUserManager.aidl", "core/java/android/os/IVibratorService.aidl", @@ -390,7 +393,6 @@ java_library { "location/java/android/location/INetInitiatedListener.aidl", "location/java/com/android/internal/location/ILocationProvider.aidl", "media/java/android/media/IAudioService.aidl", - ":libmediadrm_aidl", "media/java/android/media/IAudioFocusDispatcher.aidl", "media/java/android/media/IAudioRoutesObserver.aidl", "media/java/android/media/IMediaHTTPConnection.aidl", @@ -515,6 +517,13 @@ java_library { ":netd_aidl", ":installd_aidl", + "lowpan/java/android/net/lowpan/ILowpanEnergyScanCallback.aidl", + "lowpan/java/android/net/lowpan/ILowpanNetScanCallback.aidl", + "lowpan/java/android/net/lowpan/ILowpanInterfaceListener.aidl", + "lowpan/java/android/net/lowpan/ILowpanInterface.aidl", + "lowpan/java/android/net/lowpan/ILowpanManagerListener.aidl", + "lowpan/java/android/net/lowpan/ILowpanManager.aidl", + "core/java/android/app/admin/SecurityLogTags.logtags", "core/java/android/content/EventLogTags.logtags", "core/java/android/speech/tts/EventLogTags.logtags", @@ -537,6 +546,7 @@ java_library { "core/java", "graphics/java", "location/java", + "lowpan/java", "media/java", "media/mca/effect/java", "media/mca/filterfw/java", @@ -555,7 +565,6 @@ java_library { "system/update_engine/binder_bindings", "frameworks/native/aidl/binder", "frameworks/av/camera/aidl", - "frameworks/av/drm/libmediadrm/aidl", "frameworks/native/aidl/gui", "system/netd/server/binder", "system/bt/binder", @@ -572,6 +581,8 @@ java_library { static_libs: [ "framework-protos", + "android.hidl.base-V1.0-java", + "android.hardware.cas-V1.0-java", "android.hardware.health-V1.0-java-constants", "android.hardware.thermal-V1.0-java-constants", "android.hardware.tv.input-V1.0-java-constants", diff --git a/Android.mk b/Android.mk index b745db0c42a346c14ac353149c3912c6b4c43a52..8846ac18f2ea2ade9a200beaea4bbde37d3fd88e 100644 --- a/Android.mk +++ b/Android.mk @@ -102,7 +102,9 @@ aidl_files := \ frameworks/base/core/java/android/print/PrinterInfo.aidl \ frameworks/base/core/java/android/print/PrintJobId.aidl \ frameworks/base/core/java/android/printservice/recommendation/RecommendationInfo.aidl \ + frameworks/base/core/java/android/hardware/radio/ProgramSelector.aidl \ frameworks/base/core/java/android/hardware/radio/RadioManager.aidl \ + frameworks/base/core/java/android/hardware/radio/RadioMetadata.aidl \ frameworks/base/core/java/android/hardware/usb/UsbDevice.aidl \ frameworks/base/core/java/android/hardware/usb/UsbInterface.aidl \ frameworks/base/core/java/android/hardware/usb/UsbEndpoint.aidl \ @@ -118,6 +120,7 @@ aidl_files := \ frameworks/base/core/java/android/os/DropBoxManager.aidl \ frameworks/base/core/java/android/os/Bundle.aidl \ frameworks/base/core/java/android/os/Debug.aidl \ + frameworks/base/core/java/android/os/SharedMemory.aidl \ frameworks/base/core/java/android/os/StrictMode.aidl \ frameworks/base/core/java/android/accessibilityservice/AccessibilityServiceInfo.aidl \ frameworks/base/core/java/android/net/Network.aidl \ @@ -266,12 +269,17 @@ non_base_dirs := \ ../opt/net/voip/src/java/android/net/rtp \ ../opt/net/voip/src/java/android/net/sip \ +framework_base_android_test_mock_src_files := \ + $(call all-java-files-under, test-runner/src/android/test/mock) + +framework_base_android_test_runner_excluding_mock_src_files := \ + $(filter-out $(framework_base_android_test_mock_src_files), $(call all-java-files-under, test-runner/src)) + # Find all files in specific directories (relative to frameworks/base) # to document and check apis files_to_check_apis := \ $(call find-other-java-files, \ legacy-test/src \ - test-runner/src \ $(non_base_dirs) \ ) @@ -294,7 +302,9 @@ files_to_check_apis_generated := \ # FRAMEWORKS_BASE_SUBDIRS comes from build/core/pathmap.mk files_to_document := \ $(files_to_check_apis) \ - $(call find-other-java-files,$(addprefix ../../, $(FRAMEWORKS_DATA_BINDING_JAVA_SRC_DIRS))) + $(call find-other-java-files,\ + $(addprefix ../../, $(FRAMEWORKS_DATA_BINDING_JAVA_SRC_DIRS)) \ + test-runner/src) # These are relative to frameworks/base html_dirs := \ @@ -313,6 +323,8 @@ framework_docs_LOCAL_SRC_FILES := \ # These are relative to frameworks/base framework_docs_LOCAL_API_CHECK_SRC_FILES := \ + $(framework_base_android_test_mock_src_files) \ + $(framework_base_android_test_runner_excluding_mock_src_files) \ $(files_to_check_apis) \ $(common_src_files) \ @@ -338,7 +350,8 @@ framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES := \ ext \ icu4j \ framework \ - voip-common + voip-common \ + android.test.mock \ # Platform docs can refer to Support Library APIs, but we don't actually build # them as part of the docs target, so we need to include them on the classpath. @@ -385,7 +398,8 @@ framework_docs_LOCAL_DROIDDOC_OPTIONS := \ -since $(SRC_API_DIR)/24.txt 24 \ -since $(SRC_API_DIR)/25.txt 25 \ -since $(SRC_API_DIR)/26.txt 26 \ - -werror -hide 111 -hide 113 -hide 121 \ + -since $(SRC_API_DIR)/27.txt 27 \ + -werror -lerror -hide 111 -hide 113 -hide 121 -hide 125 -hide 126 -hide 127 -hide 128 \ -overview $(LOCAL_PATH)/core/java/overview.html \ framework_docs_LOCAL_API_CHECK_ADDITIONAL_JAVA_DIR:= \ diff --git a/apct-tests/perftests/core/src/android/database/CursorWindowPerfTest.java b/apct-tests/perftests/core/src/android/database/CursorWindowPerfTest.java new file mode 100644 index 0000000000000000000000000000000000000000..897d0aeed4f8a1a92c437deb289147a2a4a146ff --- /dev/null +++ b/apct-tests/perftests/core/src/android/database/CursorWindowPerfTest.java @@ -0,0 +1,123 @@ +/* + * 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.database; + +import static org.junit.Assert.assertTrue; + +import android.content.Context; +import android.database.sqlite.SQLiteCursor; +import android.database.sqlite.SQLiteDatabase; +import android.perftests.utils.BenchmarkState; +import android.perftests.utils.PerfStatusReporter; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.LargeTest; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +@LargeTest +public class CursorWindowPerfTest { + @Rule + public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter(); + + private static Context getContext() { + return InstrumentationRegistry.getTargetContext(); + } + + private static final String DB_NAME = CursorWindowPerfTest.class.toString(); + + private static SQLiteDatabase sDatabase; + + @BeforeClass + public static void setup() { + getContext().deleteDatabase(DB_NAME); + sDatabase = getContext().openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null); + + for (TableHelper helper : TableHelper.TABLE_HELPERS) { + sDatabase.execSQL(helper.createSql()); + final String insert = helper.insertSql(); + + // this test only needs 1 row + sDatabase.execSQL(insert, helper.createItem(0)); + } + + } + + @AfterClass + public static void teardown() { + getContext().deleteDatabase(DB_NAME); + } + + @Test + public void loadInt() { + loadRowFromCursorWindow(TableHelper.INT_1, false); + } + + @Test + public void loadInt_doubleRef() { + loadRowFromCursorWindow(TableHelper.INT_1, true); + } + + @Test + public void load10Ints() { + loadRowFromCursorWindow(TableHelper.INT_10, false); + } + + @Test + public void loadUser() { + loadRowFromCursorWindow(TableHelper.USER, false); + } + + private void loadRowFromCursorWindow(TableHelper helper, boolean doubleRef) { + try (Cursor cursor = sDatabase.rawQuery(helper.readSql(), new String[0])) { + TableHelper.CursorReader reader = helper.createReader(cursor); + + SQLiteCursor sqLiteCursor = (SQLiteCursor) cursor; + + sqLiteCursor.getCount(); // load one window + CursorWindow window = sqLiteCursor.getWindow(); + assertTrue("must have enough rows", window.getNumRows() >= 1); + int start = window.getStartPosition(); + + BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + + if (!doubleRef) { + // normal access + while (state.keepRunning()) { + cursor.moveToPosition(start); + reader.read(); + } + } else { + // add an extra window acquire/release to measure overhead + while (state.keepRunning()) { + cursor.moveToPosition(start); + try { + window.acquireReference(); + reader.read(); + } finally { + window.releaseReference(); + } + } + } + } + } +} diff --git a/apct-tests/perftests/core/src/android/database/TableHelper.java b/apct-tests/perftests/core/src/android/database/TableHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..48f37814786d6f620e5edeaf15ae7ef22e7977cc --- /dev/null +++ b/apct-tests/perftests/core/src/android/database/TableHelper.java @@ -0,0 +1,223 @@ +/* + * 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.database; + +import java.util.Date; +import java.util.UUID; + +/** + * Helper class for creating and querying data from a database in performance tests. + * + * Subclasses can define different table/query formats. + */ +public abstract class TableHelper { + + public interface CursorReader { + void read(); + } + + public abstract String createSql(); + public abstract String insertSql(); + public abstract Object[] createItem(int id); + public abstract String readSql(); + public abstract CursorReader createReader(Cursor cursor); + + /** + * 1 column, single integer + */ + public static TableHelper INT_1 = new TableHelper() { + @Override + public String createSql() { + return "CREATE TABLE `Int1` (" + + "`a` INTEGER," + + " PRIMARY KEY(`a`))"; + } + + @Override + public String insertSql() { + return "INSERT INTO `Int1`(`a`)" + + " VALUES (?)"; + } + + @Override + public Object[] createItem(int id) { + return new Object[] { + id, + }; + } + + @Override + public String readSql() { + return "SELECT * from Int1"; + } + + @Override + public CursorReader createReader(final Cursor cursor) { + final int cursorIndexOfA = cursor.getColumnIndexOrThrow("a"); + return () -> { + cursor.getInt(cursorIndexOfA); + }; + } + }; + /** + * 10 columns of integers + */ + public static TableHelper INT_10 = new TableHelper() { + @Override + public String createSql() { + return "CREATE TABLE `Int10` (" + + "`a` INTEGER," + + " `b` INTEGER," + + " `c` INTEGER," + + " `d` INTEGER," + + " `e` INTEGER," + + " `f` INTEGER," + + " `g` INTEGER," + + " `h` INTEGER," + + " `i` INTEGER," + + " `j` INTEGER," + + " PRIMARY KEY(`a`))"; + } + + @Override + public String insertSql() { + return "INSERT INTO `Int10`(`a`,`b`,`c`,`d`,`e`,`f`,`g`,`h`,`i`,`j`)" + + " VALUES (?,?,?,?,?,?,?,?,?,?)"; + } + + @Override + public Object[] createItem(int id) { + return new Object[] { + id, + id + 1, + id + 2, + id + 3, + id + 4, + id + 5, + id + 6, + id + 7, + id + 8, + id + 9, + }; + } + + @Override + public String readSql() { + return "SELECT * from Int10"; + } + + @Override + public CursorReader createReader(final Cursor cursor) { + final int cursorIndexOfA = cursor.getColumnIndexOrThrow("a"); + final int cursorIndexOfB = cursor.getColumnIndexOrThrow("b"); + final int cursorIndexOfC = cursor.getColumnIndexOrThrow("c"); + final int cursorIndexOfD = cursor.getColumnIndexOrThrow("d"); + final int cursorIndexOfE = cursor.getColumnIndexOrThrow("e"); + final int cursorIndexOfF = cursor.getColumnIndexOrThrow("f"); + final int cursorIndexOfG = cursor.getColumnIndexOrThrow("g"); + final int cursorIndexOfH = cursor.getColumnIndexOrThrow("h"); + final int cursorIndexOfI = cursor.getColumnIndexOrThrow("i"); + final int cursorIndexOfJ = cursor.getColumnIndexOrThrow("j"); + return () -> { + cursor.getInt(cursorIndexOfA); + cursor.getInt(cursorIndexOfB); + cursor.getInt(cursorIndexOfC); + cursor.getInt(cursorIndexOfD); + cursor.getInt(cursorIndexOfE); + cursor.getInt(cursorIndexOfF); + cursor.getInt(cursorIndexOfG); + cursor.getInt(cursorIndexOfH); + cursor.getInt(cursorIndexOfI); + cursor.getInt(cursorIndexOfJ); + }; + } + }; + + /** + * Mock up of 'user' table with various ints/strings + */ + public static TableHelper USER = new TableHelper() { + @Override + public String createSql() { + return "CREATE TABLE `User` (" + + "`mId` INTEGER," + + " `mName` TEXT," + + " `mLastName` TEXT," + + " `mAge` INTEGER," + + " `mAdmin` INTEGER," + + " `mWeight` DOUBLE," + + " `mBirthday` INTEGER," + + " `mMoreText` TEXT," + + " PRIMARY KEY(`mId`))"; + } + + @Override + public String insertSql() { + return "INSERT INTO `User`(`mId`,`mName`,`mLastName`,`mAge`," + + "`mAdmin`,`mWeight`,`mBirthday`,`mMoreText`) VALUES (?,?,?,?,?,?,?,?)"; + } + + @Override + public Object[] createItem(int id) { + return new Object[] { + id, + UUID.randomUUID().toString(), + UUID.randomUUID().toString(), + (int) (10 + Math.random() * 50), + 0, + (float)0, + new Date().getTime(), + UUID.randomUUID().toString(), + }; + } + + @Override + public String readSql() { + return "SELECT * from User"; + } + + @Override + public CursorReader createReader(final Cursor cursor) { + final int cursorIndexOfMId = cursor.getColumnIndexOrThrow("mId"); + final int cursorIndexOfMName = cursor.getColumnIndexOrThrow("mName"); + final int cursorIndexOfMLastName = cursor.getColumnIndexOrThrow("mLastName"); + final int cursorIndexOfMAge = cursor.getColumnIndexOrThrow("mAge"); + final int cursorIndexOfMAdmin = cursor.getColumnIndexOrThrow("mAdmin"); + final int cursorIndexOfMWeight = cursor.getColumnIndexOrThrow("mWeight"); + final int cursorIndexOfMBirthday = cursor.getColumnIndexOrThrow("mBirthday"); + final int cursorIndexOfMMoreTextField = cursor.getColumnIndexOrThrow("mMoreText"); + return () -> { + cursor.getInt(cursorIndexOfMId); + cursor.getString(cursorIndexOfMName); + cursor.getString(cursorIndexOfMLastName); + cursor.getInt(cursorIndexOfMAge); + cursor.getInt(cursorIndexOfMAdmin); + cursor.getFloat(cursorIndexOfMWeight); + if (!cursor.isNull(cursorIndexOfMBirthday)) { + cursor.getLong(cursorIndexOfMBirthday); + } + cursor.getString(cursorIndexOfMMoreTextField); + }; + } + }; + + public static TableHelper[] TABLE_HELPERS = new TableHelper[] { + INT_1, + INT_10, + USER, + }; +} diff --git a/apct-tests/perftests/core/src/android/os/ParcelPerfTest.java b/apct-tests/perftests/core/src/android/os/ParcelPerfTest.java index 8cd45f7f92bd2d0643d3db2b824a732d72716685..a92597f131c33f251ecf1b927a686ba3f145d8f5 100644 --- a/apct-tests/perftests/core/src/android/os/ParcelPerfTest.java +++ b/apct-tests/perftests/core/src/android/os/ParcelPerfTest.java @@ -56,6 +56,46 @@ public class ParcelPerfTest { } } + @Test + public void timeGetDataPosition() { + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + mParcel.dataPosition(); + } + } + + @Test + public void timeSetDataSize() { + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + mParcel.setDataSize(0); + } + } + + @Test + public void timeGetDataSize() { + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + mParcel.dataSize(); + } + } + + @Test + public void timeSetDataCapacity() { + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + mParcel.setDataCapacity(0); + } + } + + @Test + public void timeGetDataCapacity() { + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + mParcel.dataCapacity(); + } + } + @Test public void timeWriteByte() { final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); @@ -112,4 +152,19 @@ public class ParcelPerfTest { mParcel.readLong(); } } + + @Test + public void timeObtainRecycle() { + // Use up the pooled instances. + // A lot bigger than the actual size but in case someone increased it. + final int POOL_SIZE = 100; + for (int i = 0; i < POOL_SIZE; i++) { + Parcel.obtain(); + } + + final BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + Parcel.obtain().recycle(); + } + } } diff --git a/apct-tests/perftests/multiuser/Android.mk b/apct-tests/perftests/multiuser/Android.mk index f67004358ee6ea3cd9792063e94d8d249587a830..e3f7775383bdc0f01aefe5cc66e5db6310957e7c 100644 --- a/apct-tests/perftests/multiuser/Android.mk +++ b/apct-tests/perftests/multiuser/Android.mk @@ -20,8 +20,7 @@ LOCAL_MODULE_TAGS := tests LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := \ - android-support-test \ - apct-perftests-utils + android-support-test LOCAL_PACKAGE_NAME := MultiUserPerfTests diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResults.java b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResults.java new file mode 100644 index 0000000000000000000000000000000000000000..e417ca791c457f2614b3c7e52d7b6a02b0fd910d --- /dev/null +++ b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResults.java @@ -0,0 +1,83 @@ +/* + * 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.multiuser; + +import android.os.Bundle; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.concurrent.TimeUnit; + +public class BenchmarkResults { + private final ArrayList mResults = new ArrayList<>(); + + public void addDuration(long duration) { + mResults.add(TimeUnit.NANOSECONDS.toMillis(duration)); + } + + public Bundle getStatsToReport() { + final Bundle stats = new Bundle(); + stats.putDouble("Mean (ms)", mean()); + return stats; + } + + public Bundle getStatsToLog() { + final Bundle stats = new Bundle(); + stats.putDouble("Mean (ms)", mean()); + stats.putDouble("Median (ms)", median()); + stats.putDouble("Sigma (ms)", standardDeviation()); + return stats; + } + + public ArrayList getAllDurations() { + return mResults; + } + + private double mean() { + final int size = mResults.size(); + long sum = 0; + for (int i = 0; i < size; ++i) { + sum += mResults.get(i); + } + return (double) sum / size; + } + + private double median() { + final int size = mResults.size(); + if (size == 0) { + return 0f; + } + Collections.sort(mResults); + final int idx = size / 2; + return size % 2 == 0 + ? (double) (mResults.get(idx) + mResults.get(idx - 1)) / 2 + : mResults.get(idx); + } + + private double standardDeviation() { + final int size = mResults.size(); + if (size == 0) { + return 0f; + } + final double mean = mean(); + double sd = 0; + for (int i = 0; i < size; ++i) { + double diff = mResults.get(i) - mean; + sd += diff * diff; + } + return Math.sqrt(sd / size); + } +} diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResultsReporter.java b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResultsReporter.java new file mode 100644 index 0000000000000000000000000000000000000000..d3a3ce54e378d07f0194ad61b832fde8fb4db305 --- /dev/null +++ b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkResultsReporter.java @@ -0,0 +1,76 @@ +/* + * 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.multiuser; + +import android.app.Activity; +import android.app.Instrumentation; +import android.os.Bundle; +import android.support.test.InstrumentationRegistry; +import android.util.Log; + +import org.junit.rules.TestRule; +import org.junit.runner.Description; +import org.junit.runners.model.Statement; + +import java.util.ArrayList; + +public class BenchmarkResultsReporter implements TestRule { + private final BenchmarkRunner mRunner; + + public BenchmarkResultsReporter(BenchmarkRunner benchmarkRunner) { + mRunner = benchmarkRunner; + } + + @Override + public Statement apply(final Statement base, final Description description) { + return new Statement() { + @Override + public void evaluate() throws Throwable { + base.evaluate(); + final Bundle stats = mRunner.getStatsToReport(); + final String summary = getSummaryString(description.getMethodName(), + mRunner.getStatsToLog()); + logSummary(description.getTestClass().getSimpleName(), summary, + mRunner.getAllDurations()); + stats.putString(Instrumentation.REPORT_KEY_STREAMRESULT, summary); + InstrumentationRegistry.getInstrumentation().sendStatus( + Activity.RESULT_OK, stats); + } + }; + } + + private void logSummary(String tag, String summary, ArrayList durations) { + final StringBuilder sb = new StringBuilder(summary); + final int size = durations.size(); + for (int i = 0; i < size; ++i) { + sb.append("\n").append(i).append("->").append(durations.get(i)); + } + Log.d(tag, sb.toString()); + } + + private String getSummaryString(String testName, Bundle stats) { + final StringBuilder sb = new StringBuilder(); + sb.append("\n\n").append(getKey(testName)); + for (String key : stats.keySet()) { + sb.append("\n").append(key).append(": ").append(stats.get(key)); + } + return sb.toString(); + } + + private String getKey(String testName) { + return testName.replaceAll("Perf$", ""); + } +} diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkRunner.java b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkRunner.java new file mode 100644 index 0000000000000000000000000000000000000000..c7bebf3847feeebb52db34af62230681cc8fbc49 --- /dev/null +++ b/apct-tests/perftests/multiuser/src/android/multiuser/BenchmarkRunner.java @@ -0,0 +1,107 @@ +/* + * 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.multiuser; + +import android.os.Bundle; +import android.os.SystemClock; + +import java.util.ArrayList; + +// Based on //platform/frameworks/base/apct-tests/perftests/utils/BenchmarkState.java +public class BenchmarkRunner { + + private static long COOL_OFF_PERIOD_MS = 2000; + + private static final int NUM_ITERATIONS = 4; + + private static final int NOT_STARTED = 0; // The benchmark has not started yet. + private static final int RUNNING = 1; // The benchmark is running. + private static final int PAUSED = 2; // The benchmark is paused + private static final int FINISHED = 3; // The benchmark has stopped. + + private final BenchmarkResults mResults = new BenchmarkResults(); + private int mState = NOT_STARTED; // Current benchmark state. + private int mIteration; + + public long mStartTimeNs; + public long mPausedDurationNs; + public long mPausedTimeNs; + + public boolean keepRunning() { + switch (mState) { + case NOT_STARTED: + mState = RUNNING; + prepareForNextRun(); + return true; + case RUNNING: + mIteration++; + return startNextTestRun(); + case PAUSED: + throw new IllegalStateException("Benchmarking is in paused state"); + case FINISHED: + throw new IllegalStateException("Benchmarking is finished"); + default: + throw new IllegalStateException("BenchmarkRunner is in unknown state"); + } + } + + private boolean startNextTestRun() { + mResults.addDuration(System.nanoTime() - mStartTimeNs - mPausedDurationNs); + if (mIteration == NUM_ITERATIONS) { + mState = FINISHED; + return false; + } else { + prepareForNextRun(); + return true; + } + } + + private void prepareForNextRun() { + // TODO: Once http://b/63115387 is fixed, look into using "am wait-for-broadcast-idle" + // command instead of waiting for a fixed amount of time. + SystemClock.sleep(COOL_OFF_PERIOD_MS); + mStartTimeNs = System.nanoTime(); + mPausedDurationNs = 0; + } + + public void pauseTiming() { + if (mState != RUNNING) { + throw new IllegalStateException("Unable to pause the runner: not running currently"); + } + mPausedTimeNs = System.nanoTime(); + mState = PAUSED; + } + + public void resumeTiming() { + if (mState != PAUSED) { + throw new IllegalStateException("Unable to resume the runner: already running"); + } + mPausedDurationNs += System.nanoTime() - mPausedTimeNs; + mState = RUNNING; + } + + public Bundle getStatsToReport() { + return mResults.getStatsToReport(); + } + + public Bundle getStatsToLog() { + return mResults.getStatsToLog(); + } + + public ArrayList getAllDurations() { + return mResults.getAllDurations(); + } +} \ No newline at end of file diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java similarity index 80% rename from apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java rename to apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java index e89157b5210820f6b4a525460792863b7e7e93e4..855be0859520f85404c3e49f040c504258acb487 100644 --- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTest.java +++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java @@ -27,8 +27,6 @@ import android.content.pm.UserInfo; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; -import android.perftests.utils.BenchmarkState; -import android.perftests.utils.PerfStatusReporter; import android.support.test.InstrumentationRegistry; import android.support.test.filters.LargeTest; import android.support.test.runner.AndroidJUnit4; @@ -47,26 +45,36 @@ import java.util.concurrent.TimeUnit; * Perf tests for user life cycle events. * * Running the tests: + * * make MultiUserPerfTests && * adb install -r \ * ${ANDROID_PRODUCT_OUT}/data/app/MultiUserPerfTests/MultiUserPerfTests.apk && - * adb shell am instrument -e class android.multiuser.UserLifecycleTest \ + * adb shell am instrument -e class android.multiuser.UserLifecycleTests \ * -w com.android.perftests.multiuser/android.support.test.runner.AndroidJUnitRunner + * + * or + * + * bit MultiUserPerfTests:android.multiuser.UserLifecycleTests + * + * Note: If you use bit for running the tests, benchmark results won't be printed on the host side. + * But in either case, results can be checked on the device side 'adb logcat -s UserLifecycleTests' */ @LargeTest @RunWith(AndroidJUnit4.class) -public class UserLifecycleTest { - private final int TIMEOUT_IN_SECOND = 10; +public class UserLifecycleTests { + private static final String TAG = UserLifecycleTests.class.getSimpleName(); + + private final int TIMEOUT_IN_SECOND = 30; private final int CHECK_USER_REMOVED_INTERVAL_MS = 200; private UserManager mUm; private ActivityManager mAm; private IActivityManager mIam; - private BenchmarkState mState; private ArrayList mUsersToRemove; + private final BenchmarkRunner mRunner = new BenchmarkRunner(); @Rule - public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter(); + public BenchmarkResultsReporter mReporter = new BenchmarkResultsReporter(mRunner); @Before public void setUp() { @@ -74,7 +82,6 @@ public class UserLifecycleTest { mUm = UserManager.get(context); mAm = context.getSystemService(ActivityManager.class); mIam = ActivityManager.getService(); - mState = mPerfStatusReporter.getBenchmarkState(); mUsersToRemove = new ArrayList<>(); } @@ -90,8 +97,8 @@ public class UserLifecycleTest { } @Test - public void createAndStartUserPerf() throws Exception { - while (mState.keepRunning()) { + public void createAndStartUser() throws Exception { + while (mRunner.keepRunning()) { final UserInfo userInfo = mUm.createUser("TestUser", 0); final CountDownLatch latch = new CountDownLatch(1); @@ -99,91 +106,91 @@ public class UserLifecycleTest { mIam.startUserInBackground(userInfo.id); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.pauseTiming(); + mRunner.pauseTiming(); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void switchUserPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void switchUser() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final int startUser = mAm.getCurrentUser(); final UserInfo userInfo = mUm.createUser("TestUser", 0); - mState.resumeTiming(); + mRunner.resumeTiming(); switchUser(userInfo.id); - mState.pauseTiming(); + mRunner.pauseTiming(); switchUser(startUser); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void stopUserPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void stopUser() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final UserInfo userInfo = mUm.createUser("TestUser", 0); final CountDownLatch latch = new CountDownLatch(1); registerBroadcastReceiver(Intent.ACTION_USER_STARTED, latch, userInfo.id); mIam.startUserInBackground(userInfo.id); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.resumeTiming(); + mRunner.resumeTiming(); stopUser(userInfo.id, false); - mState.pauseTiming(); + mRunner.pauseTiming(); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void lockedBootCompletedPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void lockedBootCompleted() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final int startUser = mAm.getCurrentUser(); final UserInfo userInfo = mUm.createUser("TestUser", 0); final CountDownLatch latch = new CountDownLatch(1); registerUserSwitchObserver(null, latch, userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); mAm.switchUser(userInfo.id); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.pauseTiming(); + mRunner.pauseTiming(); switchUser(startUser); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void managedProfileUnlockPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void managedProfileUnlock() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final UserInfo userInfo = mUm.createProfileForUser("TestUser", UserInfo.FLAG_MANAGED_PROFILE, mAm.getCurrentUser()); final CountDownLatch latch = new CountDownLatch(1); registerBroadcastReceiver(Intent.ACTION_USER_UNLOCKED, latch, userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); mIam.startUserInBackground(userInfo.id); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.pauseTiming(); + mRunner.pauseTiming(); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void ephemeralUserStoppedPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void ephemeralUserStopped() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final int startUser = mAm.getCurrentUser(); final UserInfo userInfo = mUm.createUser("TestUser", UserInfo.FLAG_EPHEMERAL | UserInfo.FLAG_DEMO); @@ -200,35 +207,35 @@ public class UserLifecycleTest { }, new IntentFilter(Intent.ACTION_USER_STOPPED)); final CountDownLatch switchLatch = new CountDownLatch(1); registerUserSwitchObserver(switchLatch, null, startUser); - mState.resumeTiming(); + mRunner.resumeTiming(); mAm.switchUser(startUser); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.pauseTiming(); + mRunner.pauseTiming(); switchLatch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @Test - public void managedProfileStoppedPerf() throws Exception { - while (mState.keepRunning()) { - mState.pauseTiming(); + public void managedProfileStopped() throws Exception { + while (mRunner.keepRunning()) { + mRunner.pauseTiming(); final UserInfo userInfo = mUm.createProfileForUser("TestUser", UserInfo.FLAG_MANAGED_PROFILE, mAm.getCurrentUser()); final CountDownLatch latch = new CountDownLatch(1); registerBroadcastReceiver(Intent.ACTION_USER_UNLOCKED, latch, userInfo.id); mIam.startUserInBackground(userInfo.id); latch.await(TIMEOUT_IN_SECOND, TimeUnit.SECONDS); - mState.resumeTiming(); + mRunner.resumeTiming(); stopUser(userInfo.id, true); - mState.pauseTiming(); + mRunner.pauseTiming(); removeUser(userInfo.id); - mState.resumeTiming(); + mRunner.resumeTiming(); } } @@ -271,7 +278,7 @@ public class UserLifecycleTest { bootCompleteLatch.countDown(); } } - }, "UserLifecycleTest"); + }, TAG); } private void registerBroadcastReceiver(final String action, final CountDownLatch latch, diff --git a/api/current.txt b/api/current.txt index 2b9e3721286ec85dccf0f98bd00e25054f55bf49..6d178a582441aa911c529d21c883269c0b494e1a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -121,7 +121,6 @@ package android { field public static final java.lang.String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"; field public static final java.lang.String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES"; field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES"; - field public static final java.lang.String SEND_EMBMS_INTENTS = "android.permission.SEND_EMBMS_INTENTS"; field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE"; field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS"; field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM"; @@ -389,6 +388,7 @@ package android { field public static final int childIndicatorRight = 16843024; // 0x1010110 field public static final int childIndicatorStart = 16843731; // 0x10103d3 field public static final int choiceMode = 16843051; // 0x101012b + field public static final int classLoader = 16844139; // 0x101056b field public static final int clearTaskOnLaunch = 16842773; // 0x1010015 field public static final int clickable = 16842981; // 0x10100e5 field public static final int clipChildren = 16842986; // 0x10100ea @@ -919,6 +919,7 @@ package android { field public static final int multiprocess = 16842771; // 0x1010013 field public static final int name = 16842755; // 0x1010003 field public static final int navigationBarColor = 16843858; // 0x1010452 + field public static final int navigationBarDividerColor = 16844141; // 0x101056d field public static final int navigationContentDescription = 16843969; // 0x10104c1 field public static final int navigationIcon = 16843968; // 0x10104c0 field public static final int navigationMode = 16843471; // 0x10102cf @@ -1181,6 +1182,7 @@ package android { field public static final int showSilent = 16843259; // 0x10101fb field public static final int showText = 16843949; // 0x10104ad field public static final deprecated int showWeekNumber = 16843582; // 0x101033e + field public static final int showWhenLocked = 16844137; // 0x1010569 field public static final deprecated int shownWeekCount = 16843585; // 0x1010341 field public static final int shrinkColumns = 16843082; // 0x101014a field public static final deprecated int singleLine = 16843101; // 0x101015d @@ -1439,6 +1441,7 @@ package android { field public static final int trimPathOffset = 16843786; // 0x101040a field public static final int trimPathStart = 16843784; // 0x1010408 field public static final int tunerCount = 16844061; // 0x101051d + field public static final int turnScreenOn = 16844138; // 0x101056a field public static final int type = 16843169; // 0x10101a1 field public static final int typeface = 16842902; // 0x1010096 field public static final int uiOptions = 16843672; // 0x1010398 @@ -1522,6 +1525,7 @@ package android { field public static final int windowHideAnimation = 16842935; // 0x10100b7 field public static final int windowIsFloating = 16842839; // 0x1010057 field public static final int windowIsTranslucent = 16842840; // 0x1010058 + field public static final int windowLightNavigationBar = 16844140; // 0x101056c field public static final int windowLightStatusBar = 16844000; // 0x10104e0 field public static final int windowMinWidthMajor = 16843606; // 0x1010356 field public static final int windowMinWidthMinor = 16843607; // 0x1010357 @@ -1936,6 +1940,7 @@ package android { field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015 field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011 field public static final int VideoView_error_title = 17039378; // 0x1040012 + field public static final int autofill = 17039386; // 0x104001a field public static final int cancel = 17039360; // 0x1040000 field public static final int copy = 17039361; // 0x1040001 field public static final int copyUrl = 17039362; // 0x1040002 @@ -3163,6 +3168,7 @@ package android.animation { public final class AnimatorSet extends android.animation.Animator { ctor public AnimatorSet(); + method public android.animation.AnimatorSet clone(); method public java.util.ArrayList getChildAnimations(); method public long getCurrentPlayTime(); method public long getDuration(); @@ -3281,6 +3287,7 @@ package android.animation { public final class ObjectAnimator extends android.animation.ValueAnimator { ctor public ObjectAnimator(); + method public android.animation.ObjectAnimator clone(); method public java.lang.String getPropertyName(); method public java.lang.Object getTarget(); method public static android.animation.ObjectAnimator ofArgb(java.lang.Object, java.lang.String, int...); @@ -3306,6 +3313,7 @@ package android.animation { method public static android.animation.ObjectAnimator ofObject(T, android.util.Property, android.animation.TypeConverter, android.graphics.Path); method public static android.animation.ObjectAnimator ofPropertyValuesHolder(java.lang.Object, android.animation.PropertyValuesHolder...); method public void setAutoCancel(boolean); + method public android.animation.ObjectAnimator setDuration(long); method public void setProperty(android.util.Property); method public void setPropertyName(java.lang.String); } @@ -3387,6 +3395,7 @@ package android.animation { ctor public ValueAnimator(); method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener); method public static boolean areAnimatorsEnabled(); + method public android.animation.ValueAnimator clone(); method public float getAnimatedFraction(); method public java.lang.Object getAnimatedValue(); method public java.lang.Object getAnimatedValue(java.lang.String); @@ -3760,10 +3769,12 @@ package android.app { method public final void setResult(int); method public final void setResult(int, android.content.Intent); method public final deprecated void setSecondaryProgress(int); + method public void setShowWhenLocked(boolean); method public void setTaskDescription(android.app.ActivityManager.TaskDescription); method public void setTitle(java.lang.CharSequence); method public void setTitle(int); method public deprecated void setTitleColor(int); + method public void setTurnScreenOn(boolean); method public void setVisible(boolean); method public final void setVolumeControlStream(int); method public void setVrModeEnabled(boolean, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; @@ -4960,6 +4971,7 @@ package android.app { ctor public IntentService(java.lang.String); method public android.os.IBinder onBind(android.content.Intent); method protected abstract void onHandleIntent(android.content.Intent); + method public void onStart(android.content.Intent, int); method public void setIntentRedelivery(boolean); } @@ -5593,6 +5605,7 @@ package android.app { method public java.util.List getNotificationChannelGroups(); method public java.util.List getNotificationChannels(); method public android.app.NotificationManager.Policy getNotificationPolicy(); + method public boolean isNotificationListenerAccessGranted(android.content.ComponentName); method public boolean isNotificationPolicyAccessGranted(); method public void notify(int, android.app.Notification); method public void notify(java.lang.String, int, android.app.Notification); @@ -6123,7 +6136,6 @@ package android.app { } public class WallpaperManager { - method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener); method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler); method public void clear() throws java.io.IOException; method public void clear(int) throws java.io.IOException; @@ -9353,6 +9365,7 @@ package android.content { field public static final java.lang.String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED"; field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT"; field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT"; + field public static final java.lang.String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE"; field public static final java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; field public static final java.lang.String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED"; field public static final java.lang.String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED"; @@ -9535,6 +9548,7 @@ package android.content { field public static final deprecated java.lang.String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT"; field public static final deprecated java.lang.String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME"; field public static final java.lang.String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY"; + field public static final java.lang.String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME"; field public static final java.lang.String EXTRA_STREAM = "android.intent.extra.STREAM"; field public static final java.lang.String EXTRA_SUBJECT = "android.intent.extra.SUBJECT"; field public static final java.lang.String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE"; @@ -10155,6 +10169,7 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public static java.lang.CharSequence getCategoryTitle(android.content.Context, int); + method public boolean isVirtualPreload(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final int CATEGORY_AUDIO = 1; // 0x1 field public static final int CATEGORY_GAME = 0; // 0x0 @@ -10489,6 +10504,7 @@ package android.content.pm { method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException; method public void removeSplit(java.lang.String) throws java.io.IOException; method public void setStagingProgress(float); + method public void transfer(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; } public static abstract class PackageInstaller.SessionCallback { @@ -10506,10 +10522,16 @@ package android.content.pm { method public android.graphics.Bitmap getAppIcon(); method public java.lang.CharSequence getAppLabel(); method public java.lang.String getAppPackageName(); + method public int getInstallLocation(); method public int getInstallReason(); method public java.lang.String getInstallerPackageName(); + method public int getMode(); + method public int getOriginatingUid(); + method public android.net.Uri getOriginatingUri(); method public float getProgress(); + method public android.net.Uri getReferrerUri(); method public int getSessionId(); + method public long getSize(); method public boolean isActive(); method public boolean isSealed(); method public void writeToParcel(android.os.Parcel, int); @@ -10716,8 +10738,11 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; + field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; + field public static final java.lang.String FEATURE_RAM_LOW = "android.hardware.ram.low"; + field public static final java.lang.String FEATURE_RAM_NORMAL = "android.hardware.ram.normal"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; field public static final java.lang.String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait"; field public static final java.lang.String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users"; @@ -10757,6 +10782,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; + field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int GET_ACTIVITIES = 1; // 0x1 field public static final int GET_CONFIGURATIONS = 16384; // 0x4000 field public static final deprecated int GET_DISABLED_COMPONENTS = 512; // 0x200 @@ -10857,6 +10883,7 @@ package android.content.pm { field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40 field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20 field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100 + field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000 field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80 field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400 field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10 @@ -11063,6 +11090,7 @@ package android.content.res { public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream { ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException; + method public void mark(int); } public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream { @@ -11370,6 +11398,7 @@ package android.database { method public void copyStringToBuffer(int, android.database.CharArrayBuffer); method public void deactivate(); method public void fillWindow(int, android.database.CursorWindow); + method protected void finalize(); method public byte[] getBlob(int); method public int getColumnCount(); method public int getColumnIndex(java.lang.String); @@ -11851,6 +11880,7 @@ package android.database.sqlite { method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener); method public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String) throws android.database.SQLException; method public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public static android.database.sqlite.SQLiteDatabase createInMemory(android.database.sqlite.SQLiteDatabase.OpenParams); method public int delete(java.lang.String, java.lang.String, java.lang.String[]); method public static boolean deleteDatabase(java.io.File); method public void disableWriteAheadLogging(); @@ -11880,6 +11910,7 @@ package android.database.sqlite { method public boolean needUpgrade(int); method protected void onAllReferencesReleased(); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int); + method public static android.database.sqlite.SQLiteDatabase openDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.OpenParams); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int, android.database.DatabaseErrorHandler); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.CursorFactory); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory); @@ -11930,6 +11961,28 @@ package android.database.sqlite { method public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery); } + public static final class SQLiteDatabase.OpenParams { + method public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory(); + method public android.database.DatabaseErrorHandler getErrorHandler(); + method public long getIdleConnectionTimeout(); + method public int getLookasideSlotCount(); + method public int getLookasideSlotSize(); + method public int getOpenFlags(); + } + + public static final class SQLiteDatabase.OpenParams.Builder { + ctor public SQLiteDatabase.OpenParams.Builder(); + ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams build(); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(android.database.DatabaseErrorHandler); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(long); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(int, int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int); + } + public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException { ctor public SQLiteDatabaseCorruptException(); ctor public SQLiteDatabaseCorruptException(java.lang.String); @@ -11983,6 +12036,8 @@ package android.database.sqlite { method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int); method public void onOpen(android.database.sqlite.SQLiteDatabase); method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int); + method public void setIdleConnectionTimeout(long); + method public void setLookasideConfig(int, int); method public void setWriteAheadLoggingEnabled(boolean); } @@ -13844,6 +13899,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setOpacity(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); } @@ -13924,6 +13980,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setAntiAlias(boolean); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setGravity(int); method public void setMipMap(boolean); method public void setTargetDensity(android.graphics.Canvas); @@ -14049,6 +14106,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState); + method public void setDither(boolean); method public void setEnterFadeDuration(int); method public void setExitFadeDuration(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); @@ -14115,6 +14173,7 @@ package android.graphics.drawable { method public void setColors(int[]); method public void setCornerRadii(float[]); method public void setCornerRadius(float); + method public void setDither(boolean); method public void setGradientCenter(float, float); method public void setGradientRadius(float); method public void setGradientType(int); @@ -14209,6 +14268,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setDrawable(int, android.graphics.drawable.Drawable); method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable); method public void setId(int, int); @@ -14249,6 +14309,7 @@ package android.graphics.drawable { method public android.graphics.Paint getPaint(); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setTargetDensity(android.graphics.Canvas); method public void setTargetDensity(android.util.DisplayMetrics); method public void setTargetDensity(int); @@ -14311,6 +14372,7 @@ package android.graphics.drawable { method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setIntrinsicHeight(int); method public void setIntrinsicWidth(int); method public void setPadding(int, int, int, int); @@ -14352,27 +14414,32 @@ package android.graphics.drawable.shapes { public class ArcShape extends android.graphics.drawable.shapes.RectShape { ctor public ArcShape(float, float); + method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException; method public final float getStartAngle(); method public final float getSweepAngle(); } public class OvalShape extends android.graphics.drawable.shapes.RectShape { ctor public OvalShape(); + method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException; } public class PathShape extends android.graphics.drawable.shapes.Shape { ctor public PathShape(android.graphics.Path, float, float); + method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); } public class RectShape extends android.graphics.drawable.shapes.Shape { ctor public RectShape(); + method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); method protected final android.graphics.RectF rect(); } public class RoundRectShape extends android.graphics.drawable.shapes.RectShape { ctor public RoundRectShape(float[], android.graphics.RectF, float[]); + method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException; } public abstract class Shape implements java.lang.Cloneable { @@ -14457,6 +14524,7 @@ package android.hardware { method public final void autoFocus(android.hardware.Camera.AutoFocusCallback); method public final void cancelAutoFocus(); method public final boolean enableShutterSound(boolean); + method protected void finalize(); method public static void getCameraInfo(int, android.hardware.Camera.CameraInfo); method public static int getNumberOfCameras(); method public android.hardware.Camera.Parameters getParameters(); @@ -15066,6 +15134,7 @@ package android.hardware.camera2 { method public T get(android.hardware.camera2.CameraCharacteristics.Key); method public java.util.List> getAvailableCaptureRequestKeys(); method public java.util.List> getAvailableCaptureResultKeys(); + method public java.util.List> getKeys(); field public static final android.hardware.camera2.CameraCharacteristics.Key COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_ANTIBANDING_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_MODES; @@ -15422,6 +15491,7 @@ package android.hardware.camera2 { public final class CaptureRequest extends android.hardware.camera2.CameraMetadata implements android.os.Parcelable { method public int describeContents(); method public T get(android.hardware.camera2.CaptureRequest.Key); + method public java.util.List> getKeys(); method public java.lang.Object getTag(); method public boolean isReprocess(); method public void writeToParcel(android.os.Parcel, int); @@ -15500,6 +15570,7 @@ package android.hardware.camera2 { public class CaptureResult extends android.hardware.camera2.CameraMetadata { method public T get(android.hardware.camera2.CaptureResult.Key); method public long getFrameNumber(); + method public java.util.List> getKeys(); method public android.hardware.camera2.CaptureRequest getRequest(); method public int getSequenceId(); field public static final android.hardware.camera2.CaptureResult.Key BLACK_LEVEL_LOCK; @@ -15791,9 +15862,12 @@ package android.hardware.fingerprint { field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5 field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1 field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7 + field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9 field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4 field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3 field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2 + field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa + field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8 } public static abstract class FingerprintManager.AuthenticationCallback { @@ -17937,6 +18011,7 @@ package android.icu.text { } public class DateIntervalFormat extends android.icu.text.UFormat { + method public synchronized java.lang.Object clone(); method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.DateInterval, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition); @@ -18742,6 +18817,7 @@ package android.icu.text { public final class RuleBasedCollator extends android.icu.text.Collator { ctor public RuleBasedCollator(java.lang.String) throws java.lang.Exception; + method public android.icu.text.RuleBasedCollator cloneAsThawed(); method public int compare(java.lang.String, java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator); @@ -18768,6 +18844,7 @@ package android.icu.text { method public void setFrenchCollation(boolean); method public void setFrenchCollationDefault(); method public void setLowerCaseFirst(boolean); + method public android.icu.text.RuleBasedCollator setMaxVariable(int); method public void setNumericCollation(boolean); method public void setNumericCollationDefault(); method public void setStrengthDefault(); @@ -21291,6 +21368,7 @@ package android.media { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); + method protected void finalize(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); @@ -21395,6 +21473,7 @@ package android.media { method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler); method public int attachAuxEffect(int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); + method protected void finalize(); method public void flush(); method public int getAudioFormat(); method public int getAudioSessionId(); @@ -21793,6 +21872,7 @@ package android.media { method public boolean clearQueue(); method public java.lang.Object clone() throws java.lang.CloneNotSupportedException; method public boolean closeJetFile(); + method protected void finalize(); method public static android.media.JetPlayer getJetPlayer(); method public static int getMaxTracks(); method public boolean loadJetFile(java.lang.String); @@ -21832,6 +21912,7 @@ package android.media { ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins(); + method protected void finalize(); method public static boolean isSystemIdSupported(int); method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException; method public void processEmm(byte[], int, int) throws android.media.MediaCasException; @@ -21888,6 +21969,7 @@ package android.media { method public static android.view.Surface createPersistentInputSurface(); method public final int dequeueInputBuffer(long); method public final int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long); + method protected void finalize(); method public final void flush(); method public android.media.MediaCodecInfo getCodecInfo(); method public java.nio.ByteBuffer getInputBuffer(int); @@ -22128,6 +22210,8 @@ package android.media { field public static final int AVCLevel51 = 32768; // 0x8000 field public static final int AVCLevel52 = 65536; // 0x10000 field public static final int AVCProfileBaseline = 1; // 0x1 + field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000 + field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000 field public static final int AVCProfileExtended = 4; // 0x4 field public static final int AVCProfileHigh = 8; // 0x8 field public static final int AVCProfileHigh10 = 16; // 0x10 @@ -22145,11 +22229,13 @@ package android.media { field public static final int DolbyVisionLevelUhd60 = 256; // 0x100 field public static final int DolbyVisionProfileDvavPen = 2; // 0x2 field public static final int DolbyVisionProfileDvavPer = 1; // 0x1 + field public static final int DolbyVisionProfileDvavSe = 512; // 0x200 field public static final int DolbyVisionProfileDvheDen = 8; // 0x8 field public static final int DolbyVisionProfileDvheDer = 4; // 0x4 field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80 field public static final int DolbyVisionProfileDvheDth = 64; // 0x40 field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10 + field public static final int DolbyVisionProfileDvheSt = 256; // 0x100 field public static final int DolbyVisionProfileDvheStn = 32; // 0x20 field public static final int H263Level10 = 1; // 0x1 field public static final int H263Level20 = 2; // 0x2 @@ -22299,6 +22385,7 @@ package android.media { public final class MediaCrypto { ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException; + method protected void finalize(); method public static final boolean isCryptoSchemeSupported(java.util.UUID); method public final void release(); method public final boolean requiresSecureDecoderComponent(java.lang.String); @@ -22319,6 +22406,7 @@ package android.media { ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public final int descramble(java.nio.ByteBuffer, java.nio.ByteBuffer, android.media.MediaCodec.CryptoInfo); + method protected void finalize(); method public final boolean requiresSecureDecoderComponent(java.lang.String); method public final void setMediaCasSession(android.media.MediaCas.Session); } @@ -22361,6 +22449,7 @@ package android.media { public final class MediaDrm { ctor public MediaDrm(java.util.UUID) throws android.media.UnsupportedSchemeException; method public void closeSession(byte[]); + method protected void finalize(); method public android.media.MediaDrm.CryptoSession getCryptoSession(byte[], java.lang.String, java.lang.String); method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], byte[], java.lang.String, int, java.util.HashMap) throws android.media.NotProvisionedException; method public byte[] getPropertyByteArray(java.lang.String); @@ -22457,6 +22546,7 @@ package android.media { public final class MediaExtractor { ctor public MediaExtractor(); method public boolean advance(); + method protected void finalize(); method public long getCachedDuration(); method public android.media.MediaExtractor.CasInfo getCasInfo(int); method public android.media.DrmInitData getDrmInitData(); @@ -22689,6 +22779,7 @@ package android.media { method public android.graphics.Bitmap getFrameAtTime(long, int); method public android.graphics.Bitmap getFrameAtTime(long); method public android.graphics.Bitmap getFrameAtTime(); + method public android.graphics.Bitmap getScaledFrameAtTime(long, int, int, int); method public void release(); method public void setDataSource(java.lang.String) throws java.lang.IllegalArgumentException; method public void setDataSource(java.lang.String, java.util.Map) throws java.lang.IllegalArgumentException; @@ -22758,6 +22849,7 @@ package android.media { method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); method public void deselectTrack(int) throws java.lang.IllegalStateException; + method protected void finalize(); method public int getAudioSessionId(); method public int getCurrentPosition(); method public android.media.MediaPlayer.DrmInfo getDrmInfo(); @@ -22953,6 +23045,7 @@ package android.media { public class MediaRecorder { ctor public MediaRecorder(); + method protected void finalize(); method public static final int getAudioSourceMax(); method public int getMaxAmplitude() throws java.lang.IllegalStateException; method public android.os.PersistableBundle getMetrics(); @@ -23224,6 +23317,7 @@ package android.media { public final class MediaSync { ctor public MediaSync(); method public final android.view.Surface createInputSurface(); + method protected void finalize(); method public void flush(); method public android.media.PlaybackParams getPlaybackParams(); method public android.media.SyncParams getSyncParams(); @@ -23343,6 +23437,10 @@ package android.media { public deprecated class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor { method public synchronized void apply(); + method public synchronized android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putObject(int, java.lang.Object) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putString(int, java.lang.String) throws java.lang.IllegalArgumentException; field public static final int BITMAP_KEY_ARTWORK = 100; // 0x64 } @@ -23389,6 +23487,7 @@ package android.media { } public class Ringtone { + method protected void finalize(); method public android.media.AudioAttributes getAudioAttributes(); method public deprecated int getStreamType(); method public java.lang.String getTitle(android.content.Context); @@ -23442,6 +23541,7 @@ package android.media { ctor public deprecated SoundPool(int, int, int); method public final void autoPause(); method public final void autoResume(); + method protected void finalize(); method public int load(java.lang.String, int); method public int load(android.content.Context, int, int); method public int load(android.content.res.AssetFileDescriptor, int); @@ -23510,6 +23610,7 @@ package android.media { public class ToneGenerator { ctor public ToneGenerator(int, int); + method protected void finalize(); method public final int getAudioSessionId(); method public void release(); method public boolean startTone(int); @@ -23642,6 +23743,7 @@ package android.media { public final class VolumeShaper implements java.lang.AutoCloseable { method public void apply(android.media.VolumeShaper.Operation); method public void close(); + method protected void finalize(); method public float getVolume(); method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean); } @@ -23696,6 +23798,7 @@ package android.media.audiofx { } public class AudioEffect { + method protected void finalize(); method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException; method public boolean getEnabled() throws java.lang.IllegalStateException; method public int getId() throws java.lang.IllegalStateException; @@ -23948,6 +24051,7 @@ package android.media.audiofx { public class Visualizer { ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException; + method protected void finalize(); method public int getCaptureSize() throws java.lang.IllegalStateException; method public static int[] getCaptureSizeRange(); method public boolean getEnabled(); @@ -24505,6 +24609,7 @@ package android.media.tv { method public static boolean isChannelUriForPassthroughInput(android.net.Uri); method public static boolean isChannelUriForTunerInput(android.net.Uri); method public static boolean isProgramUri(android.net.Uri); + method public static boolean isRecordedProgramUri(android.net.Uri); method public static void requestChannelBrowsable(android.content.Context, long); field public static final java.lang.String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS"; field public static final java.lang.String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT"; @@ -27070,7 +27175,8 @@ package android.net.wifi.p2p { method public abstract void onSuccess(); } - public static class WifiP2pManager.Channel { + public static class WifiP2pManager.Channel implements java.lang.AutoCloseable { + method public void close(); } public static abstract interface WifiP2pManager.ChannelListener { @@ -30609,6 +30715,7 @@ package android.os { field public static final int N = 24; // 0x18 field public static final int N_MR1 = 25; // 0x19 field public static final int O = 26; // 0x1a + field public static final int O_MR1 = 27; // 0x1b } public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable { @@ -30674,6 +30781,7 @@ package android.os { method public void putStringArrayList(java.lang.String, java.util.ArrayList); method public void readFromParcel(android.os.Parcel); method public void setClassLoader(java.lang.ClassLoader); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.Bundle EMPTY; @@ -30905,6 +31013,7 @@ package android.os { public abstract class FileObserver { ctor public FileObserver(java.lang.String); ctor public FileObserver(java.lang.String, int); + method protected void finalize(); method public abstract void onEvent(int, java.lang.String); method public void startWatching(); method public void stopWatching(); @@ -31056,11 +31165,11 @@ package android.os { public class MemoryFile { ctor public MemoryFile(java.lang.String, int) throws java.io.IOException; - method public synchronized boolean allowPurging(boolean) throws java.io.IOException; + method public deprecated synchronized boolean allowPurging(boolean) throws java.io.IOException; method public void close(); method public java.io.InputStream getInputStream(); method public java.io.OutputStream getOutputStream(); - method public boolean isPurgingAllowed(); + method public deprecated boolean isPurgingAllowed(); method public int length(); method public int readBytes(byte[], int, int, int) throws java.io.IOException; method public void writeBytes(byte[], int, int, int) throws java.io.IOException; @@ -31357,6 +31466,7 @@ package android.os { method public int describeContents(); method public android.os.PersistableBundle getPersistableBundle(java.lang.String); method public void putPersistableBundle(java.lang.String, android.os.PersistableBundle); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.PersistableBundle EMPTY; @@ -31484,6 +31594,20 @@ package android.os { field public static final android.os.Parcelable.Creator CREATOR; } + public final class SharedMemory implements java.io.Closeable android.os.Parcelable { + method public void close(); + method public static android.os.SharedMemory create(java.lang.String, int) throws android.system.ErrnoException; + method public int describeContents(); + method public int getSize(); + method public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException; + method public boolean setProtect(int); + method public static void unmap(java.nio.ByteBuffer); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public class StatFs { ctor public StatFs(java.lang.String); method public deprecated int getAvailableBlocks(); @@ -31888,6 +32012,7 @@ package android.os.storage { method public android.os.storage.StorageVolume getStorageVolume(java.io.File); method public java.util.List getStorageVolumes(); method public java.util.UUID getUuidForPath(java.io.File) throws java.io.IOException; + method public boolean isAllocationSupported(java.io.FileDescriptor); method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException; method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException; method public boolean isEncrypted(java.io.File); @@ -35679,6 +35804,7 @@ package android.renderscript { method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type); + method public synchronized void resize(int); method public void setFace(android.renderscript.Type.CubemapFace); method public void setLOD(int); method public void setX(int); @@ -36938,6 +37064,30 @@ package android.service.autofill { field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } + public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CharSequenceTransformation.Builder { + ctor public CharSequenceTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation.Builder addField(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation build(); + } + + public final class CustomDescription implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CustomDescription.Builder { + ctor public CustomDescription.Builder(android.widget.RemoteViews); + method public android.service.autofill.CustomDescription.Builder addChild(int, android.service.autofill.Transformation); + method public android.service.autofill.CustomDescription build(); + } + public final class Dataset implements android.os.Parcelable { method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); @@ -37011,6 +37161,32 @@ package android.service.autofill { method public android.service.autofill.FillResponse.Builder setSaveInfo(android.service.autofill.SaveInfo); } + public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class ImageTransformation.Builder { + ctor public ImageTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation.Builder addOption(java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation build(); + } + + public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public LuhnChecksumValidator(android.view.autofill.AutofillId...); + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public RegexValidator(android.view.autofill.AutofillId, java.util.regex.Pattern); + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public final class SaveCallback { method public void onFailure(java.lang.CharSequence); method public void onSuccess(); @@ -37033,11 +37209,14 @@ package android.service.autofill { public static final class SaveInfo.Builder { ctor public SaveInfo.Builder(int, android.view.autofill.AutofillId[]); + ctor public SaveInfo.Builder(int); method public android.service.autofill.SaveInfo build(); + method public android.service.autofill.SaveInfo.Builder setCustomDescription(android.service.autofill.CustomDescription); method public android.service.autofill.SaveInfo.Builder setDescription(java.lang.CharSequence); method public android.service.autofill.SaveInfo.Builder setFlags(int); method public android.service.autofill.SaveInfo.Builder setNegativeAction(int, android.content.IntentSender); method public android.service.autofill.SaveInfo.Builder setOptionalIds(android.view.autofill.AutofillId[]); + method public android.service.autofill.SaveInfo.Builder setValidator(android.service.autofill.Validator); } public final class SaveRequest implements android.os.Parcelable { @@ -37048,6 +37227,17 @@ package android.service.autofill { field public static final android.os.Parcelable.Creator CREATOR; } + public abstract interface Transformation { + } + + public abstract interface Validator { + } + + public final class Validators { + method public static android.service.autofill.Validator and(android.service.autofill.Validator...); + method public static android.service.autofill.Validator or(android.service.autofill.Validator...); + } + } package android.service.carrier { @@ -37681,8 +37871,10 @@ package android.service.wallpaper { method public android.view.SurfaceHolder getSurfaceHolder(); method public boolean isPreview(); method public boolean isVisible(); + method public void notifyColorsChanged(); method public void onApplyWindowInsets(android.view.WindowInsets); method public android.os.Bundle onCommand(java.lang.String, int, int, int, android.os.Bundle, boolean); + method public android.app.WallpaperColors onComputeColors(); method public void onCreate(android.view.SurfaceHolder); method public void onDesiredSizeChanged(int, int); method public void onDestroy(); @@ -38801,6 +38993,7 @@ package android.telecom { public static final class Call.RttCall { method public int getRttAudioMode(); method public java.lang.String read(); + method public java.lang.String readImmediately() throws java.io.IOException; method public void setRttMode(int); method public void write(java.lang.String) throws java.io.IOException; field public static final int RTT_MODE_FULL = 1; // 0x1 @@ -39529,6 +39722,7 @@ package android.telephony { field public static final java.lang.String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string"; field public static final java.lang.String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array"; field public static final java.lang.String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool"; + field public static final java.lang.String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool"; field public static final java.lang.String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool"; field public static final java.lang.String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool"; field public static final java.lang.String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int"; @@ -40278,6 +40472,7 @@ package android.telephony { field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; + field public static final java.lang.String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE"; @@ -40479,6 +40674,7 @@ package android.telephony.gsm { public static deprecated class SmsMessage.SubmitPdu { ctor public deprecated SmsMessage.SubmitPdu(); + method public deprecated java.lang.String toString(); field public deprecated byte[] encodedMessage; field public deprecated byte[] encodedScAddress; } @@ -40689,6 +40885,7 @@ package android.test { method public java.util.List getTestCases(); method public java.lang.String getTestClassName(); method public junit.framework.TestResult getTestResult(); + method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException; method protected void runFailed(java.lang.String); method public void runTest(); method public void runTest(junit.framework.TestResult); @@ -40949,10 +41146,12 @@ package android.test.mock { ctor protected MockContentProvider(); ctor public MockContentProvider(android.content.Context); ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); + method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public java.lang.String getType(android.net.Uri); method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); method public boolean onCreate(); + method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle); method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String); method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]); } @@ -41222,6 +41421,10 @@ package android.test.mock { public deprecated class MockResources extends android.content.res.Resources { ctor public MockResources(); + method public int getColor(int) throws android.content.res.Resources.NotFoundException; + method public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException; + method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException; + method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); } } @@ -41457,6 +41660,7 @@ package android.text { public static class InputFilter.AllCaps implements android.text.InputFilter { ctor public InputFilter.AllCaps(); + ctor public InputFilter.AllCaps(java.util.Locale); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); } @@ -42469,6 +42673,7 @@ package android.text.style { public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout { ctor public MetricAffectingSpan(); + method public android.text.style.MetricAffectingSpan getUnderlying(); method public abstract void updateMeasureState(android.text.TextPaint); } @@ -43149,14 +43354,28 @@ package android.transition { public class TransitionSet extends android.transition.Transition { ctor public TransitionSet(); ctor public TransitionSet(android.content.Context, android.util.AttributeSet); + method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet addTarget(android.view.View); + method public android.transition.TransitionSet addTarget(int); + method public android.transition.TransitionSet addTarget(java.lang.String); + method public android.transition.TransitionSet addTarget(java.lang.Class); method public android.transition.TransitionSet addTransition(android.transition.Transition); method public void captureEndValues(android.transition.TransitionValues); method public void captureStartValues(android.transition.TransitionValues); + method public android.transition.TransitionSet clone(); method public int getOrdering(); method public android.transition.Transition getTransitionAt(int); method public int getTransitionCount(); + method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet removeTarget(int); + method public android.transition.TransitionSet removeTarget(android.view.View); + method public android.transition.TransitionSet removeTarget(java.lang.Class); + method public android.transition.TransitionSet removeTarget(java.lang.String); method public android.transition.TransitionSet removeTransition(android.transition.Transition); + method public android.transition.TransitionSet setDuration(long); + method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator); method public android.transition.TransitionSet setOrdering(int); + method public android.transition.TransitionSet setStartDelay(long); field public static final int ORDERING_SEQUENTIAL = 1; // 0x1 field public static final int ORDERING_TOGETHER = 0; // 0x0 } @@ -43321,6 +43540,9 @@ package android.util { public class Base64InputStream extends java.io.FilterInputStream { ctor public Base64InputStream(java.io.InputStream, int); + method public int available(); + method public void mark(int); + method public void reset(); } public class Base64OutputStream extends java.io.FilterOutputStream { @@ -44288,9 +44510,13 @@ package android.view { field public static final int CONTEXT_CLICK = 6; // 0x6 field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2 field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1 + field public static final int KEYBOARD_PRESS = 3; // 0x3 + field public static final int KEYBOARD_RELEASE = 7; // 0x7 field public static final int KEYBOARD_TAP = 3; // 0x3 field public static final int LONG_PRESS = 0; // 0x0 + field public static final int TEXT_HANDLE_MOVE = 9; // 0x9 field public static final int VIRTUAL_KEY = 1; // 0x1 + field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8 } public class InflateException extends java.lang.RuntimeException { @@ -44319,6 +44545,7 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); + method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -45434,6 +45661,7 @@ package android.view { method public android.graphics.Canvas lockCanvas(); method public android.graphics.Canvas lockCanvas(android.graphics.Rect); method protected final void onDraw(android.graphics.Canvas); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setOpaque(boolean); method public void setSurfaceTexture(android.graphics.SurfaceTexture); method public void setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener); @@ -46457,6 +46685,7 @@ package android.view { method public int getLayoutMode(); method public android.animation.LayoutTransition getLayoutTransition(); method public int getNestedScrollAxes(); + method public android.view.ViewGroupOverlay getOverlay(); method public int getPersistentDrawingCache(); method public boolean getTouchscreenBlocksFocus(); method public int indexOfChild(android.view.View); @@ -46887,6 +47116,7 @@ package android.view { method public final boolean isActive(); method public abstract boolean isFloating(); method public abstract boolean isShortcutKey(int, android.view.KeyEvent); + method public boolean isWideColorGamut(); method public final void makeActive(); method protected abstract void onActive(); method public abstract void onConfigurationChanged(android.content.res.Configuration); @@ -47149,12 +47379,12 @@ package android.view { field public static final int FLAG_SCALED = 16384; // 0x4000 field public static final int FLAG_SECURE = 8192; // 0x2000 field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000 - field public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 + field public static final deprecated int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000 field public static final deprecated int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40 field public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000 field public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000 - field public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 + field public static final deprecated int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000 field public static final int FORMAT_CHANGED = 8; // 0x8 field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63 @@ -47308,6 +47538,7 @@ package android.view.accessibility { } public final class AccessibilityManager { + method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public void addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler); method public boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); @@ -47316,8 +47547,10 @@ package android.view.accessibility { method public java.util.List getEnabledAccessibilityServiceList(int); method public java.util.List getInstalledAccessibilityServiceList(); method public void interrupt(); + method public static boolean isAccessibilityButtonSupported(); method public boolean isEnabled(); method public boolean isTouchExplorationEnabled(); + method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent); @@ -47634,6 +47867,13 @@ package android.view.accessibility { method public void setToIndex(int); } + public abstract class AccessibilityRequestPreparer { + ctor public AccessibilityRequestPreparer(android.view.View, int); + method public android.view.View getView(); + method public abstract void onPrepareExtraData(int, java.lang.String, android.os.Bundle, android.os.Message); + field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1 + } + public final class AccessibilityWindowInfo implements android.os.Parcelable { method public int describeContents(); method public android.view.accessibility.AccessibilityNodeInfo getAnchor(); @@ -47726,6 +47966,7 @@ package android.view.animation { ctor public Animation(android.content.Context, android.util.AttributeSet); method protected void applyTransformation(float, android.view.animation.Transformation); method public void cancel(); + method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException; method public long computeDurationHint(); method protected void ensureInterpolator(); method public int getBackgroundColor(); @@ -47797,6 +48038,7 @@ package android.view.animation { ctor public AnimationSet(android.content.Context, android.util.AttributeSet); ctor public AnimationSet(boolean); method public void addAnimation(android.view.animation.Animation); + method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException; method public java.util.List getAnimations(); } @@ -48001,6 +48243,8 @@ package android.view.autofill { method public void notifyViewEntered(android.view.View, int, android.graphics.Rect); method public void notifyViewExited(android.view.View); method public void notifyViewExited(android.view.View, int); + method public void notifyViewVisibilityChanged(android.view.View, boolean); + method public void notifyViewVisibilityChanged(android.view.View, int, boolean); method public void registerCallback(android.view.autofill.AutofillManager.AutofillCallback); method public void requestAutofill(android.view.View); method public void requestAutofill(android.view.View, int, android.graphics.Rect); @@ -48647,6 +48891,10 @@ package android.webkit { public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager { method public static android.webkit.CookieSyncManager createInstance(android.content.Context); method public static android.webkit.CookieSyncManager getInstance(); + method public deprecated void resetSync(); + method public deprecated void startSync(); + method public deprecated void stopSync(); + method public deprecated void sync(); method protected deprecated void syncFromRamToFlash(); field protected static final java.lang.String LOGTAG = "websync"; field protected android.webkit.WebViewDatabase mDataBase; @@ -48728,6 +48976,13 @@ package android.webkit { method public abstract int rendererPriorityAtExit(); } + public abstract class SafeBrowsingResponse { + ctor public SafeBrowsingResponse(); + method public abstract void backToSafety(boolean); + method public abstract void proceed(boolean); + method public abstract void showInterstitial(boolean); + } + public class ServiceWorkerClient { ctor public ServiceWorkerClient(); method public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest); @@ -49146,8 +49401,10 @@ package android.webkit { method public int getProgress(); method public boolean getRendererPriorityWaivedWhenNotVisible(); method public int getRendererRequestedPriority(); + method public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -49194,11 +49451,15 @@ package android.webkit { method public void setNetworkAvailable(boolean); method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); + method public static void setSafeBrowsingWhitelist(java.util.List, android.webkit.ValueCallback); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); + method public deprecated boolean shouldDelayChildPressedState(); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void startSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); @@ -49261,6 +49522,7 @@ package android.webkit { method public void onReceivedLoginRequest(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String); method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError); method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail); + method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse); method public void onScaleChanged(android.webkit.WebView, float, float); method public deprecated void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message); method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent); @@ -49285,6 +49547,10 @@ package android.webkit { field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0 field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6 + field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1 + field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2 + field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0 + field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3 } public abstract class WebViewDatabase { @@ -49321,6 +49587,7 @@ package android.widget { method public void clearTextFilter(); method public void deferNotifyDataSetChanged(); method public void fling(int); + method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCacheColorHint(); method public int getCheckedItemCount(); method public long[] getCheckedItemIds(); @@ -49487,6 +49754,9 @@ package android.widget { ctor public ActionMenuView(android.content.Context); ctor public ActionMenuView(android.content.Context, android.util.AttributeSet); method public void dismissPopupMenus(); + method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams(); + method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public android.view.Menu getMenu(); method public android.graphics.drawable.Drawable getOverflowIcon(); method public int getPopupTheme(); @@ -49662,7 +49932,6 @@ package android.widget { method public void addAll(T...); method public void clear(); method public static android.widget.ArrayAdapter createFromResource(android.content.Context, int, int); - method public java.lang.CharSequence[] getAutofillOptions(); method public android.content.Context getContext(); method public int getCount(); method public android.content.res.Resources.Theme getDropDownViewTheme(); @@ -49752,6 +50021,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } @@ -50030,6 +50300,7 @@ package android.widget { ctor public EditText(android.content.Context, android.util.AttributeSet, int); ctor public EditText(android.content.Context, android.util.AttributeSet, int, int); method public void extendSelection(int); + method public android.text.Editable getText(); method public void selectAll(); method public void setSelection(int, int); method public void setSelection(int); @@ -50151,6 +50422,8 @@ package android.widget { ctor public FrameLayout(android.content.Context, android.util.AttributeSet); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public deprecated boolean getConsiderGoneChildrenWhenMeasuring(); method public boolean getMeasureAllChildren(); method protected void onLayout(boolean, int, int, int, int); @@ -50197,6 +50470,9 @@ package android.widget { ctor public GridLayout(android.content.Context, android.util.AttributeSet); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getAlignmentMode(); method public int getColumnCount(); method public int getOrientation(); @@ -50409,6 +50685,9 @@ package android.widget { ctor public LinearLayout(android.content.Context, android.util.AttributeSet); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getBaselineAlignedChildIndex(); method public android.graphics.drawable.Drawable getDividerDrawable(); method public int getDividerPadding(); @@ -50795,6 +51074,8 @@ package android.widget { method public final synchronized void incrementSecondaryProgressBy(int); method public boolean isAnimating(); method public synchronized boolean isIndeterminate(); + method protected synchronized void onDraw(android.graphics.Canvas); + method protected synchronized void onMeasure(int, int); method public void onRestoreInstanceState(android.os.Parcelable); method public android.os.Parcelable onSaveInstanceState(); method public synchronized void setIndeterminate(boolean); @@ -50850,6 +51131,7 @@ package android.widget { ctor public RadioGroup(android.content.Context, android.util.AttributeSet); method public void check(int); method public void clearCheck(); + method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCheckedRadioButtonId(); method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener); } @@ -50892,6 +51174,7 @@ package android.widget { ctor public RelativeLayout(android.content.Context, android.util.AttributeSet); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int); + method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getGravity(); method protected void onLayout(boolean, int, int, int, int); method public void setGravity(int); @@ -51435,6 +51718,7 @@ package android.widget { public class TableLayout extends android.widget.LinearLayout { ctor public TableLayout(android.content.Context); ctor public TableLayout(android.content.Context, android.util.AttributeSet); + method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public boolean isColumnCollapsed(int); method public boolean isColumnShrinkable(int); method public boolean isColumnStretchable(int); @@ -51459,6 +51743,7 @@ package android.widget { public class TableRow extends android.widget.LinearLayout { ctor public TableRow(android.content.Context); ctor public TableRow(android.content.Context, android.util.AttributeSet); + method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet); method public android.view.View getVirtualChildAt(int); method public int getVirtualChildCount(); } @@ -51800,6 +52085,7 @@ package android.widget { ctor public ToggleButton(android.content.Context); method public java.lang.CharSequence getTextOff(); method public java.lang.CharSequence getTextOn(); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setTextOff(java.lang.CharSequence); method public void setTextOn(java.lang.CharSequence); } @@ -51811,6 +52097,9 @@ package android.widget { ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int); method public void collapseActionView(); method public void dismissPopupMenus(); + method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams(); + method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getContentInsetEnd(); method public int getContentInsetEndWithActions(); method public int getContentInsetLeft(); @@ -52334,6 +52623,13 @@ package dalvik.system { public class BaseDexClassLoader extends java.lang.ClassLoader { ctor public BaseDexClassLoader(java.lang.String, java.io.File, java.lang.String, java.lang.ClassLoader); method public java.lang.String findLibrary(java.lang.String); + method protected java.util.Enumeration findResources(java.lang.String); + method protected synchronized java.lang.Package getPackage(java.lang.String); + } + + public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader { + ctor public DelegateLastClassLoader(java.lang.String, java.lang.ClassLoader); + ctor public DelegateLastClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader); } public class DexClassLoader extends dalvik.system.BaseDexClassLoader { @@ -52556,6 +52852,10 @@ package java.io { public class BufferedInputStream extends java.io.FilterInputStream { ctor public BufferedInputStream(java.io.InputStream); ctor public BufferedInputStream(java.io.InputStream, int); + method public synchronized int available() throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; + method public synchronized long skip(long) throws java.io.IOException; field protected volatile byte[] buf; field protected int count; field protected int marklimit; @@ -52566,6 +52866,9 @@ package java.io { public class BufferedOutputStream extends java.io.FilterOutputStream { ctor public BufferedOutputStream(java.io.OutputStream); ctor public BufferedOutputStream(java.io.OutputStream, int); + method public synchronized void flush() throws java.io.IOException; + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected byte[] buf; field protected int count; } @@ -52591,7 +52894,12 @@ package java.io { public class ByteArrayInputStream extends java.io.InputStream { ctor public ByteArrayInputStream(byte[]); ctor public ByteArrayInputStream(byte[], int, int); + method public synchronized int available(); + method public void mark(int); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected byte[] buf; field protected int count; field protected int mark; @@ -52604,9 +52912,11 @@ package java.io { method public synchronized void reset(); method public synchronized int size(); method public synchronized byte[] toByteArray(); + method public synchronized java.lang.String toString(); method public synchronized java.lang.String toString(java.lang.String) throws java.io.UnsupportedEncodingException; method public deprecated synchronized java.lang.String toString(int); method public synchronized void write(int); + method public synchronized void write(byte[], int, int); method public synchronized void writeTo(java.io.OutputStream) throws java.io.IOException; field protected byte[] buf; field protected int count; @@ -52626,12 +52936,17 @@ package java.io { public class CharArrayWriter extends java.io.Writer { ctor public CharArrayWriter(); ctor public CharArrayWriter(int); + method public java.io.CharArrayWriter append(java.lang.CharSequence); + method public java.io.CharArrayWriter append(java.lang.CharSequence, int, int); + method public java.io.CharArrayWriter append(char); method public void close(); method public void flush(); method public void reset(); method public int size(); method public char[] toCharArray(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String, int, int); method public void writeTo(java.io.Writer) throws java.io.IOException; field protected char[] buf; field protected int count; @@ -52718,6 +53033,8 @@ package java.io { public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput { ctor public DataOutputStream(java.io.OutputStream); method public final int size(); + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; method public final void writeBoolean(boolean) throws java.io.IOException; method public final void writeByte(int) throws java.io.IOException; method public final void writeBytes(java.lang.String) throws java.io.IOException; @@ -52817,6 +53134,7 @@ package java.io { ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public int read() throws java.io.IOException; @@ -52833,6 +53151,7 @@ package java.io { ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public void write(int) throws java.io.IOException; @@ -52946,6 +53265,8 @@ package java.io { public deprecated class LineNumberInputStream extends java.io.FilterInputStream { ctor public LineNumberInputStream(java.io.InputStream); method public int getLineNumber(); + method public void mark(int); + method public void reset() throws java.io.IOException; method public void setLineNumber(int); } @@ -53175,8 +53496,10 @@ package java.io { ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException; ctor public PipedInputStream(); ctor public PipedInputStream(int); + method public synchronized int available() throws java.io.IOException; method public void connect(java.io.PipedOutputStream) throws java.io.IOException; method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; method protected synchronized void receive(int) throws java.io.IOException; field protected static final int PIPE_SIZE = 1024; // 0x400 field protected byte[] buffer; @@ -53188,6 +53511,7 @@ package java.io { ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException; ctor public PipedOutputStream(); method public synchronized void connect(java.io.PipedInputStream) throws java.io.IOException; + method public synchronized void flush() throws java.io.IOException; method public void write(int) throws java.io.IOException; } @@ -53198,7 +53522,9 @@ package java.io { ctor public PipedReader(int); method public void close() throws java.io.IOException; method public void connect(java.io.PipedWriter) throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; method public synchronized int read(char[], int, int) throws java.io.IOException; + method public synchronized boolean ready() throws java.io.IOException; } public class PipedWriter extends java.io.Writer { @@ -53223,6 +53549,8 @@ package java.io { method public java.io.PrintStream append(char); method public boolean checkError(); method protected void clearError(); + method public void close(); + method public void flush(); method public java.io.PrintStream format(java.lang.String, java.lang.Object...); method public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object...); method public void print(boolean); @@ -53247,6 +53575,8 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); + method public void write(byte[], int, int); } public class PrintWriter extends java.io.Writer { @@ -53258,6 +53588,9 @@ package java.io { ctor public PrintWriter(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; ctor public PrintWriter(java.io.File) throws java.io.FileNotFoundException; ctor public PrintWriter(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; + method public java.io.PrintWriter append(java.lang.CharSequence); + method public java.io.PrintWriter append(java.lang.CharSequence, int, int); + method public java.io.PrintWriter append(char); method public boolean checkError(); method protected void clearError(); method public void close(); @@ -53286,13 +53619,18 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); method public void write(char[], int, int); + method public void write(char[]); + method public void write(java.lang.String, int, int); + method public void write(java.lang.String); field protected java.io.Writer out; } public class PushbackInputStream extends java.io.FilterInputStream { ctor public PushbackInputStream(java.io.InputStream, int); ctor public PushbackInputStream(java.io.InputStream); + method public synchronized void close() throws java.io.IOException; method public void unread(int) throws java.io.IOException; method public void unread(byte[], int, int) throws java.io.IOException; method public void unread(byte[]) throws java.io.IOException; @@ -53416,7 +53754,11 @@ package java.io { public deprecated class StringBufferInputStream extends java.io.InputStream { ctor public StringBufferInputStream(java.lang.String); + method public synchronized int available(); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected java.lang.String buffer; field protected int count; field protected int pos; @@ -53431,10 +53773,16 @@ package java.io { public class StringWriter extends java.io.Writer { ctor public StringWriter(); ctor public StringWriter(int); + method public java.io.StringWriter append(java.lang.CharSequence); + method public java.io.StringWriter append(java.lang.CharSequence, int, int); + method public java.io.StringWriter append(char); method public void close() throws java.io.IOException; method public void flush(); method public java.lang.StringBuffer getBuffer(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String); + method public void write(java.lang.String, int, int); } public class SyncFailedException extends java.io.IOException { @@ -53449,6 +53797,7 @@ package java.io { public class UncheckedIOException extends java.lang.RuntimeException { ctor public UncheckedIOException(java.lang.String, java.io.IOException); ctor public UncheckedIOException(java.io.IOException); + method public java.io.IOException getCause(); } public class UnsupportedEncodingException extends java.io.IOException { @@ -53458,6 +53807,7 @@ package java.io { public class WriteAbortedException extends java.io.ObjectStreamException { ctor public WriteAbortedException(java.lang.String, java.lang.Exception); + method public java.lang.Throwable getCause(); field public java.lang.Exception detail; } @@ -54225,6 +54575,7 @@ package java.lang { ctor public ClassNotFoundException(); ctor public ClassNotFoundException(java.lang.String); ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -54329,6 +54680,7 @@ package java.lang { ctor public ExceptionInInitializerError(); ctor public ExceptionInInitializerError(java.lang.Throwable); ctor public ExceptionInInitializerError(java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -55116,8 +55468,16 @@ package java.lang { method public synchronized java.lang.StringBuffer append(float); method public synchronized java.lang.StringBuffer append(double); method public synchronized java.lang.StringBuffer appendCodePoint(int); + method public synchronized int capacity(); + method public synchronized char charAt(int); + method public synchronized int codePointAt(int); + method public synchronized int codePointBefore(int); + method public synchronized int codePointCount(int, int); method public synchronized java.lang.StringBuffer delete(int, int); method public synchronized java.lang.StringBuffer deleteCharAt(int); + method public synchronized void ensureCapacity(int); + method public synchronized void getChars(int, int, char[], int); + method public synchronized int indexOf(java.lang.String, int); method public synchronized java.lang.StringBuffer insert(int, char[], int, int); method public synchronized java.lang.StringBuffer insert(int, java.lang.Object); method public synchronized java.lang.StringBuffer insert(int, java.lang.String); @@ -55130,9 +55490,18 @@ package java.lang { method public java.lang.StringBuffer insert(int, long); method public java.lang.StringBuffer insert(int, float); method public java.lang.StringBuffer insert(int, double); + method public synchronized int lastIndexOf(java.lang.String, int); + method public synchronized int length(); + method public synchronized int offsetByCodePoints(int, int); method public synchronized java.lang.StringBuffer replace(int, int, java.lang.String); method public synchronized java.lang.StringBuffer reverse(); + method public synchronized void setCharAt(int, char); + method public synchronized void setLength(int); + method public synchronized java.lang.CharSequence subSequence(int, int); + method public synchronized java.lang.String substring(int); + method public synchronized java.lang.String substring(int, int); method public synchronized java.lang.String toString(); + method public synchronized void trimToSize(); } public final class StringBuilder extends java.lang.AbstractStringBuilder implements java.lang.CharSequence java.io.Serializable { @@ -55787,6 +56156,7 @@ package java.lang.reflect { ctor protected InvocationTargetException(); ctor public InvocationTargetException(java.lang.Throwable); ctor public InvocationTargetException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getTargetException(); } @@ -55902,6 +56272,7 @@ package java.lang.reflect { public class UndeclaredThrowableException extends java.lang.RuntimeException { ctor public UndeclaredThrowableException(java.lang.Throwable); ctor public UndeclaredThrowableException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getUndeclaredThrowable(); } @@ -56799,6 +57170,7 @@ package java.net { method public java.lang.String getQuery(); method public java.lang.String getRef(); method public java.lang.String getUserInfo(); + method public synchronized int hashCode(); method public java.net.URLConnection openConnection() throws java.io.IOException; method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException; method public final java.io.InputStream openStream() throws java.io.IOException; @@ -57028,7 +57400,6 @@ package java.nio { method public final int arrayOffset(); method public abstract java.nio.CharBuffer asReadOnlyBuffer(); method public final char charAt(int); - method public java.util.stream.IntStream chars(); method public abstract java.nio.CharBuffer compact(); method public int compareTo(java.nio.CharBuffer); method public abstract java.nio.CharBuffer duplicate(); @@ -57885,6 +58256,7 @@ package java.nio.file { public final class DirectoryIteratorException extends java.util.ConcurrentModificationException { ctor public DirectoryIteratorException(java.io.IOException); + method public java.io.IOException getCause(); } public class DirectoryNotEmptyException extends java.nio.file.FileSystemException { @@ -58850,9 +59222,11 @@ package java.security { public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter { ctor public KeyStore.PasswordProtection(char[]); ctor public KeyStore.PasswordProtection(char[], java.lang.String, java.security.spec.AlgorithmParameterSpec); + method public synchronized void destroy() throws javax.security.auth.DestroyFailedException; method public synchronized char[] getPassword(); method public java.lang.String getProtectionAlgorithm(); method public java.security.spec.AlgorithmParameterSpec getProtectionParameters(); + method public synchronized boolean isDestroyed(); } public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry { @@ -59032,6 +59406,7 @@ package java.security { public class PrivilegedActionException extends java.lang.Exception { ctor public PrivilegedActionException(java.lang.Exception); + method public java.lang.Throwable getCause(); method public java.lang.Exception getException(); } @@ -59054,22 +59429,30 @@ package java.security { method public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function); method public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction); + method public java.util.Enumeration elements(); + method public synchronized java.util.Set> entrySet(); method public synchronized void forEach(java.util.function.BiConsumer); + method public java.lang.Object get(java.lang.Object); method public java.lang.String getInfo(); method public java.lang.String getName(); method public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object); method public synchronized java.security.Provider.Service getService(java.lang.String, java.lang.String); method public synchronized java.util.Set getServices(); method public double getVersion(); + method public java.util.Set keySet(); + method public java.util.Enumeration keys(); method public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object put(java.lang.Object, java.lang.Object); method public synchronized void putAll(java.util.Map); method public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object); method protected synchronized void putService(java.security.Provider.Service); + method public synchronized java.lang.Object remove(java.lang.Object); method protected synchronized void removeService(java.security.Provider.Service); method public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object); method public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object); method public synchronized void replaceAll(java.util.function.BiFunction); + method public java.lang.String toString(); + method public java.util.Collection values(); } public static class Provider.Service { @@ -59115,7 +59498,9 @@ package java.security { method public final java.security.Provider getProvider(); method public static byte[] getSeed(int); method protected final int next(int); + method public synchronized void nextBytes(byte[]); method public synchronized void setSeed(byte[]); + method public void setSeed(long); } public abstract class SecureRandomSpi implements java.io.Serializable { @@ -59662,6 +60047,7 @@ package java.security.cert { public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker { ctor protected PKIXRevocationChecker(); + method public java.security.cert.PKIXRevocationChecker clone(); method public java.util.List getOcspExtensions(); method public java.net.URI getOcspResponder(); method public java.security.cert.X509Certificate getOcspResponderCert(); @@ -61914,7 +62300,6 @@ package java.time { public final class DayOfWeek extends java.lang.Enum implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -61922,8 +62307,6 @@ package java.time { method public java.time.DayOfWeek minus(long); method public static java.time.DayOfWeek of(int); method public java.time.DayOfWeek plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.DayOfWeek valueOf(java.lang.String); method public static final java.time.DayOfWeek[] values(); enum_constant public static final java.time.DayOfWeek FRIDAY; @@ -61999,6 +62382,8 @@ package java.time { method public boolean isBefore(java.time.Instant); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.Instant minus(java.time.temporal.TemporalAmount); + method public java.time.Instant minus(long, java.time.temporal.TemporalUnit); method public java.time.Instant minusMillis(long); method public java.time.Instant minusNanos(long); method public java.time.Instant minusSeconds(long); @@ -62008,6 +62393,7 @@ package java.time { method public static java.time.Instant ofEpochSecond(long); method public static java.time.Instant ofEpochSecond(long, long); method public static java.time.Instant parse(java.lang.CharSequence); + method public java.time.Instant plus(java.time.temporal.TemporalAmount); method public java.time.Instant plus(long, java.time.temporal.TemporalUnit); method public java.time.Instant plusMillis(long); method public java.time.Instant plusNanos(long); @@ -62015,6 +62401,7 @@ package java.time { method public long toEpochMilli(); method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Instant with(java.time.temporal.TemporalAdjuster); method public java.time.Instant with(java.time.temporal.TemporalField, long); field public static final java.time.Instant EPOCH; field public static final java.time.Instant MAX; @@ -62024,6 +62411,7 @@ package java.time { public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { method public java.time.LocalDateTime atStartOfDay(); method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId); + method public java.time.LocalDateTime atTime(java.time.LocalTime); method public java.time.LocalDateTime atTime(int, int); method public java.time.LocalDateTime atTime(int, int, int); method public java.time.LocalDateTime atTime(int, int, int, int); @@ -62038,6 +62426,8 @@ package java.time { method public int getMonthValue(); method public int getYear(); method public int lengthOfMonth(); + method public java.time.LocalDate minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate minusDays(long); method public java.time.LocalDate minusMonths(long); method public java.time.LocalDate minusWeeks(long); @@ -62051,12 +62441,16 @@ package java.time { method public static java.time.LocalDate ofYearDay(int, int); method public static java.time.LocalDate parse(java.lang.CharSequence); method public static java.time.LocalDate parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDate plus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate plusDays(long); method public java.time.LocalDate plusMonths(long); method public java.time.LocalDate plusWeeks(long); method public java.time.LocalDate plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public java.time.Period until(java.time.chrono.ChronoLocalDate); + method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster); + method public java.time.LocalDate with(java.time.temporal.TemporalField, long); method public java.time.LocalDate withDayOfMonth(int); method public java.time.LocalDate withDayOfYear(int); method public java.time.LocalDate withMonth(int); @@ -62081,6 +62475,8 @@ package java.time { method public int getSecond(); method public int getYear(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime minusDays(long); method public java.time.LocalDateTime minusHours(long); method public java.time.LocalDateTime minusMinutes(long); @@ -62103,6 +62499,7 @@ package java.time { method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.LocalDateTime parse(java.lang.CharSequence); method public static java.time.LocalDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime plusDays(long); method public java.time.LocalDateTime plusHours(long); @@ -62116,6 +62513,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long); method public java.time.LocalDateTime withDayOfMonth(int); method public java.time.LocalDateTime withDayOfYear(int); @@ -62145,6 +62543,8 @@ package java.time { method public boolean isBefore(java.time.LocalTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.LocalTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime minusHours(long); method public java.time.LocalTime minusMinutes(long); method public java.time.LocalTime minusNanos(long); @@ -62159,6 +62559,7 @@ package java.time { method public static java.time.LocalTime ofSecondOfDay(long); method public static java.time.LocalTime parse(java.lang.CharSequence); method public static java.time.LocalTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime plusHours(long); method public java.time.LocalTime plusMinutes(long); @@ -62168,6 +62569,7 @@ package java.time { method public int toSecondOfDay(); method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalTime with(java.time.temporal.TemporalField, long); method public java.time.LocalTime withHour(int); method public java.time.LocalTime withMinute(int); @@ -62184,7 +62586,6 @@ package java.time { method public int firstDayOfYear(boolean); method public java.time.Month firstMonthOfQuarter(); method public static java.time.Month from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -62195,8 +62596,6 @@ package java.time { method public java.time.Month minus(long); method public static java.time.Month of(int); method public java.time.Month plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.Month valueOf(java.lang.String); method public static final java.time.Month[] values(); enum_constant public static final java.time.Month APRIL; @@ -62263,6 +62662,8 @@ package java.time { method public boolean isEqual(java.time.OffsetDateTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime minusDays(long); method public java.time.OffsetDateTime minusHours(long); method public java.time.OffsetDateTime minusMinutes(long); @@ -62280,6 +62681,7 @@ package java.time { method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetDateTime parse(java.lang.CharSequence); method public static java.time.OffsetDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime plusDays(long); method public java.time.OffsetDateTime plusHours(long); @@ -62299,6 +62701,7 @@ package java.time { method public java.time.ZonedDateTime toZonedDateTime(); method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetDateTime withDayOfMonth(int); method public java.time.OffsetDateTime withDayOfYear(int); @@ -62331,6 +62734,8 @@ package java.time { method public boolean isEqual(java.time.OffsetTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime minusHours(long); method public java.time.OffsetTime minusMinutes(long); method public java.time.OffsetTime minusNanos(long); @@ -62343,6 +62748,7 @@ package java.time { method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetTime parse(java.lang.CharSequence); method public static java.time.OffsetTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime plusHours(long); method public java.time.OffsetTime plusMinutes(long); @@ -62351,6 +62757,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetTime withHour(int); method public java.time.OffsetTime withMinute(int); @@ -62377,6 +62784,7 @@ package java.time { method public java.time.Period minusMonths(long); method public java.time.Period minusYears(long); method public java.time.Period multipliedBy(int); + method public java.time.Period negated(); method public java.time.Period normalized(); method public static java.time.Period of(int, int, int); method public static java.time.Period ofDays(int); @@ -62415,6 +62823,8 @@ package java.time { method public boolean isSupported(java.time.temporal.TemporalUnit); method public boolean isValidMonthDay(java.time.MonthDay); method public int length(); + method public java.time.Year minus(java.time.temporal.TemporalAmount); + method public java.time.Year minus(long, java.time.temporal.TemporalUnit); method public java.time.Year minusYears(long); method public static java.time.Year now(); method public static java.time.Year now(java.time.ZoneId); @@ -62422,9 +62832,11 @@ package java.time { method public static java.time.Year of(int); method public static java.time.Year parse(java.lang.CharSequence); method public static java.time.Year parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.Year plus(java.time.temporal.TemporalAmount); method public java.time.Year plus(long, java.time.temporal.TemporalUnit); method public java.time.Year plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Year with(java.time.temporal.TemporalAdjuster); method public java.time.Year with(java.time.temporal.TemporalField, long); field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff field public static final int MIN_VALUE = -999999999; // 0xc4653601 @@ -62449,6 +62861,8 @@ package java.time { method public boolean isValidDay(int); method public int lengthOfMonth(); method public int lengthOfYear(); + method public java.time.YearMonth minus(java.time.temporal.TemporalAmount); + method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth minusMonths(long); method public java.time.YearMonth minusYears(long); method public static java.time.YearMonth now(); @@ -62458,10 +62872,12 @@ package java.time { method public static java.time.YearMonth of(int, int); method public static java.time.YearMonth parse(java.lang.CharSequence); method public static java.time.YearMonth parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.YearMonth plus(java.time.temporal.TemporalAmount); method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth plusMonths(long); method public java.time.YearMonth plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster); method public java.time.YearMonth with(java.time.temporal.TemporalField, long); method public java.time.YearMonth withMonth(int); method public java.time.YearMonth withYear(int); @@ -62485,7 +62901,6 @@ package java.time { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public int compareTo(java.time.ZoneOffset); method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getId(); method public long getLong(java.time.temporal.TemporalField); method public java.time.zone.ZoneRules getRules(); @@ -62496,8 +62911,6 @@ package java.time { method public static java.time.ZoneOffset ofHoursMinutes(int, int); method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int); method public static java.time.ZoneOffset ofTotalSeconds(int); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); field public static final java.time.ZoneOffset MAX; field public static final java.time.ZoneOffset MIN; field public static final java.time.ZoneOffset UTC; @@ -62518,6 +62931,8 @@ package java.time { method public int getYear(); method public java.time.ZoneId getZone(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime minusDays(long); method public java.time.ZonedDateTime minusHours(long); method public java.time.ZonedDateTime minusMinutes(long); @@ -62538,6 +62953,7 @@ package java.time { method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId); method public static java.time.ZonedDateTime parse(java.lang.CharSequence); method public static java.time.ZonedDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount); method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime plusDays(long); method public java.time.ZonedDateTime plusHours(long); @@ -62547,10 +62963,12 @@ package java.time { method public java.time.ZonedDateTime plusSeconds(long); method public java.time.ZonedDateTime plusWeeks(long); method public java.time.ZonedDateTime plusYears(long); + method public java.time.LocalDate toLocalDate(); method public java.time.LocalDateTime toLocalDateTime(); method public java.time.OffsetDateTime toOffsetDateTime(); method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long); method public java.time.ZonedDateTime withDayOfMonth(int); method public java.time.ZonedDateTime withDayOfYear(int); @@ -62595,17 +63013,27 @@ package java.time.chrono { method public default boolean isSupported(java.time.temporal.TemporalUnit); method public abstract int lengthOfMonth(); method public default int lengthOfYear(); + method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount); method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator timeLineOrder(); method public default long toEpochDay(); method public abstract java.lang.String toString(); method public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public abstract java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster); method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long); } abstract class ChronoLocalDateImpl implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { + method public D minus(java.time.temporal.TemporalAmount); + method public D minus(long, java.time.temporal.TemporalUnit); + method public D plus(java.time.temporal.TemporalAmount); + method public D plus(long, java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public D with(java.time.temporal.TemporalAdjuster); + method public D with(java.time.temporal.TemporalField, long); } public abstract interface ChronoLocalDateTime implements java.lang.Comparable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { @@ -62622,6 +63050,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoLocalDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(java.time.ZoneOffset); @@ -62629,6 +63060,7 @@ package java.time.chrono { method public abstract D toLocalDate(); method public abstract java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalField, long); } @@ -62666,6 +63098,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoZonedDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(); @@ -62674,6 +63109,7 @@ package java.time.chrono { method public abstract java.time.chrono.ChronoLocalDateTime toLocalDateTime(); method public default java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalField, long); method public abstract java.time.chrono.ChronoZonedDateTime withEarlierOffsetAtOverlap(); method public abstract java.time.chrono.ChronoZonedDateTime withLaterOffsetAtOverlap(); @@ -62740,6 +63176,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.HijrahDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.HijrahChronology INSTANCE; @@ -62751,23 +63188,24 @@ package java.time.chrono { method public java.time.chrono.HijrahChronology getChronology(); method public java.time.chrono.HijrahEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isLeapYear(); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.HijrahDate now(); method public static java.time.chrono.HijrahDate now(java.time.ZoneId); method public static java.time.chrono.HijrahDate now(java.time.Clock); method public static java.time.chrono.HijrahDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster); method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology); } public final class HijrahEra extends java.lang.Enum implements java.time.chrono.Era { method public int getValue(); method public static java.time.chrono.HijrahEra of(int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.chrono.HijrahEra valueOf(java.lang.String); method public static final java.time.chrono.HijrahEra[] values(); enum_constant public static final java.time.chrono.HijrahEra AH; @@ -62792,6 +63230,7 @@ package java.time.chrono { method public java.time.Period period(int, int, int); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.LocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.IsoChronology INSTANCE; @@ -62824,6 +63263,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.JapaneseDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.JapaneseChronology INSTANCE; @@ -62835,17 +63275,19 @@ package java.time.chrono { method public java.time.chrono.JapaneseChronology getChronology(); method public java.time.chrono.JapaneseEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isSupported(java.time.temporal.TemporalField); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.JapaneseDate now(); method public static java.time.chrono.JapaneseDate now(java.time.ZoneId); method public static java.time.chrono.JapaneseDate now(java.time.Clock); method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int); method public static java.time.chrono.JapaneseDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster); } public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable { @@ -62877,6 +63319,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.MinguoDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.MinguoChronology INSTANCE; @@ -62889,13 +63332,17 @@ package java.time.chrono { method public java.time.chrono.MinguoEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.MinguoDate now(); method public static java.time.chrono.MinguoDate now(java.time.ZoneId); method public static java.time.chrono.MinguoDate now(java.time.Clock); method public static java.time.chrono.MinguoDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster); } public final class MinguoEra extends java.lang.Enum implements java.time.chrono.Era { @@ -62925,6 +63372,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE; @@ -62937,13 +63385,17 @@ package java.time.chrono { method public java.time.chrono.ThaiBuddhistEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.ThaiBuddhistDate now(); method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId); method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock); method public static java.time.chrono.ThaiBuddhistDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster); } public final class ThaiBuddhistEra extends java.lang.Enum implements java.time.chrono.Era { @@ -63122,7 +63574,6 @@ package java.time.temporal { method public int checkValidIntValue(long); method public long checkValidValue(long); method public java.time.temporal.TemporalUnit getBaseUnit(); - method public java.lang.String getDisplayName(java.util.Locale); method public long getFrom(java.time.temporal.TemporalAccessor); method public java.time.temporal.TemporalUnit getRangeUnit(); method public boolean isDateBased(); @@ -63170,7 +63621,6 @@ package java.time.temporal { method public java.time.Duration getDuration(); method public boolean isDateBased(); method public boolean isDurationEstimated(); - method public boolean isSupportedBy(java.time.temporal.Temporal); method public boolean isTimeBased(); method public static java.time.temporal.ChronoUnit valueOf(java.lang.String); method public static final java.time.temporal.ChronoUnit[] values(); @@ -63510,7 +63960,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ArrayList extends java.util.AbstractList implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable { @@ -63521,11 +63970,7 @@ package java.util { method public void ensureCapacity(int); method public void forEach(java.util.function.Consumer); method public E get(int); - method public boolean removeIf(java.util.function.Predicate); - method public void replaceAll(java.util.function.UnaryOperator); method public int size(); - method public void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); method public void trimToSize(); } @@ -63896,6 +64341,7 @@ package java.util { method public default boolean removeIf(java.util.function.Predicate); method public abstract boolean retainAll(java.util.Collection); method public abstract int size(); + method public default java.util.Spliterator spliterator(); method public default java.util.stream.Stream stream(); method public abstract java.lang.Object[] toArray(); method public abstract T[] toArray(T[]); @@ -64236,18 +64682,7 @@ package java.util { ctor public HashMap(); ctor public HashMap(java.util.Map); method public java.lang.Object clone(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); - method public V merge(K, V, java.util.function.BiFunction); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); } public class HashSet extends java.util.AbstractSet implements java.lang.Cloneable java.io.Serializable java.util.Set { @@ -64258,7 +64693,6 @@ package java.util { method public java.lang.Object clone(); method public java.util.Iterator iterator(); method public int size(); - method public java.util.Spliterator spliterator(); } public class Hashtable extends java.util.Dictionary implements java.lang.Cloneable java.util.Map java.io.Serializable { @@ -64276,9 +64710,11 @@ package java.util { method public boolean containsValue(java.lang.Object); method public synchronized java.util.Enumeration elements(); method public java.util.Set> entrySet(); + method public synchronized boolean equals(java.lang.Object); method public synchronized void forEach(java.util.function.BiConsumer); method public synchronized V get(java.lang.Object); method public synchronized V getOrDefault(java.lang.Object, V); + method public synchronized int hashCode(); method public synchronized boolean isEmpty(); method public java.util.Set keySet(); method public synchronized java.util.Enumeration keys(); @@ -64293,6 +64729,7 @@ package java.util { method public synchronized V replace(K, V); method public synchronized void replaceAll(java.util.function.BiFunction); method public synchronized int size(); + method public synchronized java.lang.String toString(); method public java.util.Collection values(); } @@ -64302,8 +64739,6 @@ package java.util { ctor public IdentityHashMap(java.util.Map); method public java.lang.Object clone(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } public class IllegalFormatCodePointException extends java.util.IllegalFormatException { @@ -64414,7 +64849,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface List implements java.util.Collection { @@ -65037,6 +65471,7 @@ package java.util { ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int); method public int getOffset(int, int, int, int, int, int); method public int getRawOffset(); + method public synchronized int hashCode(); method public boolean inDaylightTime(java.util.Date); method public void setDSTSavings(int); method public void setEndRule(int, int, int, int); @@ -65309,7 +65744,6 @@ package java.util { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); method public java.util.NavigableMap headMap(K, boolean); method public java.util.SortedMap headMap(K); method public java.util.Map.Entry higherEntry(K); @@ -65321,9 +65755,6 @@ package java.util { method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.NavigableMap subMap(K, boolean, K, boolean); method public java.util.SortedMap subMap(K, K); method public java.util.NavigableMap tailMap(K, boolean); @@ -65351,7 +65782,6 @@ package java.util { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.SortedSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -65388,30 +65818,49 @@ package java.util { ctor public Vector(int); ctor public Vector(); ctor public Vector(java.util.Collection); + method public synchronized boolean add(E); + method public synchronized boolean addAll(java.util.Collection); + method public synchronized boolean addAll(int, java.util.Collection); method public synchronized void addElement(E); method public synchronized int capacity(); method public synchronized java.lang.Object clone(); + method public synchronized boolean containsAll(java.util.Collection); method public synchronized void copyInto(java.lang.Object[]); method public synchronized E elementAt(int); method public java.util.Enumeration elements(); method public synchronized void ensureCapacity(int); + method public synchronized boolean equals(java.lang.Object); method public synchronized E firstElement(); method public synchronized void forEach(java.util.function.Consumer); method public synchronized E get(int); + method public synchronized int hashCode(); method public synchronized int indexOf(java.lang.Object, int); method public synchronized void insertElementAt(E, int); + method public synchronized boolean isEmpty(); + method public synchronized java.util.Iterator iterator(); method public synchronized E lastElement(); + method public synchronized int lastIndexOf(java.lang.Object); method public synchronized int lastIndexOf(java.lang.Object, int); + method public synchronized java.util.ListIterator listIterator(int); + method public synchronized java.util.ListIterator listIterator(); + method public synchronized E remove(int); + method public synchronized boolean removeAll(java.util.Collection); method public synchronized void removeAllElements(); method public synchronized boolean removeElement(java.lang.Object); method public synchronized void removeElementAt(int); method public synchronized boolean removeIf(java.util.function.Predicate); + method protected synchronized void removeRange(int, int); method public synchronized void replaceAll(java.util.function.UnaryOperator); + method public synchronized boolean retainAll(java.util.Collection); + method public synchronized E set(int, E); method public synchronized void setElementAt(E, int); method public synchronized void setSize(int); method public synchronized int size(); method public synchronized void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); + method public synchronized java.util.List subList(int, int); + method public synchronized java.lang.Object[] toArray(); + method public synchronized T[] toArray(T[]); + method public synchronized java.lang.String toString(); method public synchronized void trimToSize(); field protected int capacityIncrement; field protected int elementCount; @@ -65424,8 +65873,6 @@ package java.util { ctor public WeakHashMap(); ctor public WeakHashMap(java.util.Map); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } } @@ -65460,7 +65907,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -65651,13 +66097,9 @@ package java.util.concurrent { ctor public ConcurrentHashMap(java.util.Map); ctor public ConcurrentHashMap(int, float); ctor public ConcurrentHashMap(int, float, int); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public boolean contains(java.lang.Object); method public java.util.Enumeration elements(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiFunction, java.util.function.Consumer); method public void forEachEntry(long, java.util.function.Consumer>); @@ -65666,14 +66108,11 @@ package java.util.concurrent { method public void forEachKey(long, java.util.function.Function, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Function, java.util.function.Consumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentHashMap.KeySetView keySet(V); method public java.util.Enumeration keys(); method public long mappingCount(); - method public V merge(K, V, java.util.function.BiFunction); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(int); - method public V putIfAbsent(K, V); method public U reduce(long, java.util.function.BiFunction, java.util.function.BiFunction); method public java.util.Map.Entry reduceEntries(long, java.util.function.BiFunction, java.util.Map.Entry, ? extends java.util.Map.Entry>); method public U reduceEntries(long, java.util.function.Function, ? extends U>, java.util.function.BiFunction); @@ -65693,10 +66132,6 @@ package java.util.concurrent { method public double reduceValuesToDouble(long, java.util.function.ToDoubleFunction, double, java.util.function.DoubleBinaryOperator); method public int reduceValuesToInt(long, java.util.function.ToIntFunction, int, java.util.function.IntBinaryOperator); method public long reduceValuesToLong(long, java.util.function.ToLongFunction, long, java.util.function.LongBinaryOperator); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public U search(long, java.util.function.BiFunction); method public U searchEntries(long, java.util.function.Function, ? extends U>); method public U searchKeys(long, java.util.function.Function); @@ -65757,7 +66192,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ConcurrentLinkedQueue extends java.util.AbstractQueue implements java.util.Queue java.io.Serializable { @@ -65768,7 +66202,6 @@ package java.util.concurrent { method public E peek(); method public E poll(); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface ConcurrentMap implements java.util.Map { @@ -65800,9 +66233,6 @@ package java.util.concurrent { method public K ceilingKey(K); method public java.util.concurrent.ConcurrentSkipListMap clone(); method public java.util.Comparator comparator(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.NavigableSet descendingKeySet(); method public java.util.concurrent.ConcurrentNavigableMap descendingMap(); method public java.util.Set> entrySet(); @@ -65810,25 +66240,18 @@ package java.util.concurrent { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentNavigableMap headMap(K, boolean); method public java.util.concurrent.ConcurrentNavigableMap headMap(K); method public java.util.Map.Entry higherEntry(K); method public K higherKey(K); + method public java.util.NavigableSet keySet(); method public java.util.Map.Entry lastEntry(); method public K lastKey(); method public java.util.Map.Entry lowerEntry(K); method public K lowerKey(K); - method public V merge(K, V, java.util.function.BiFunction); method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, boolean, K, boolean); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, K); method public java.util.concurrent.ConcurrentNavigableMap tailMap(K, boolean); @@ -65856,7 +66279,6 @@ package java.util.concurrent { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.NavigableSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -65903,9 +66325,7 @@ package java.util.concurrent { ctor public CopyOnWriteArraySet(java.util.Collection); method public void forEach(java.util.function.Consumer); method public java.util.Iterator iterator(); - method public boolean removeIf(java.util.function.Predicate); method public int size(); - method public java.util.Spliterator spliterator(); } public class CountDownLatch { @@ -66064,6 +66484,7 @@ package java.util.concurrent { method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler(); method public boolean hasQueuedSubmissions(); method public T invoke(java.util.concurrent.ForkJoinTask); + method public java.util.List> invokeAll(java.util.Collection>); method public boolean isQuiescent(); method public boolean isShutdown(); method public boolean isTerminated(); @@ -66073,6 +66494,9 @@ package java.util.concurrent { method public void shutdown(); method public java.util.List shutdownNow(); method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.ForkJoinTask); + method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.Callable); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable, T); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable); field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory; } @@ -66196,7 +66620,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public E takeFirst() throws java.lang.InterruptedException; method public E takeLast() throws java.lang.InterruptedException; @@ -66217,7 +66640,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66237,7 +66659,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public void transfer(E) throws java.lang.InterruptedException; method public boolean tryTransfer(E); @@ -66285,7 +66706,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66389,7 +66809,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66401,9 +66820,11 @@ package java.util.concurrent { method public static java.util.concurrent.ThreadLocalRandom current(); method public double nextDouble(double); method public double nextDouble(double, double); + method public double nextGaussian(); method public int nextInt(int, int); method public long nextLong(long); method public long nextLong(long, long); + method public void setSeed(long); } public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService { @@ -66417,6 +66838,7 @@ package java.util.concurrent { method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException; method protected void beforeExecute(java.lang.Thread, java.lang.Runnable); method public void execute(java.lang.Runnable); + method protected void finalize(); method public int getActiveCount(); method public long getCompletedTaskCount(); method public int getCorePoolSize(); @@ -67287,8 +67709,11 @@ package java.util.jar { ctor public JarFile(java.io.File) throws java.io.IOException; ctor public JarFile(java.io.File, boolean) throws java.io.IOException; ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException; + method public java.util.Enumeration entries(); + method public synchronized java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; method public java.util.jar.JarEntry getJarEntry(java.lang.String); method public java.util.jar.Manifest getManifest() throws java.io.IOException; + method public java.util.stream.Stream stream(); field public static final java.lang.String MANIFEST_NAME = "META-INF/MANIFEST.MF"; } @@ -67368,6 +67793,8 @@ package java.util.logging { public class ConsoleHandler extends java.util.logging.StreamHandler { ctor public ConsoleHandler(); + method public void close(); + method public void publish(java.util.logging.LogRecord); } public class ErrorManager { @@ -68157,6 +68584,7 @@ package java.util.zip { method public int deflate(byte[]); method public int deflate(byte[], int, int, int); method public void end(); + method protected void finalize(); method public void finish(); method public boolean finished(); method public int getAdler(); @@ -68189,6 +68617,8 @@ package java.util.zip { ctor public DeflaterInputStream(java.io.InputStream); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int); + method public void mark(int); + method public void reset() throws java.io.IOException; field protected final byte[] buf; field protected final java.util.zip.Deflater def; } @@ -68219,6 +68649,7 @@ package java.util.zip { ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected java.util.zip.CRC32 crc; } @@ -68226,6 +68657,7 @@ package java.util.zip { ctor public Inflater(boolean); ctor public Inflater(); method public void end(); + method protected void finalize(); method public boolean finished(); method public int getAdler(); method public long getBytesRead(); @@ -68352,6 +68784,7 @@ package java.util.zip { ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException; method public void close() throws java.io.IOException; method public java.util.Enumeration entries(); + method protected void finalize() throws java.io.IOException; method public java.lang.String getComment(); method public java.util.zip.ZipEntry getEntry(java.lang.String); method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; @@ -68458,6 +68891,7 @@ package java.util.zip { method public void setComment(java.lang.String); method public void setLevel(int); method public void setMethod(int); + method public synchronized void write(byte[], int, int) throws java.io.IOException; field public static final int CENATT = 36; // 0x24 field public static final int CENATX = 38; // 0x26 field public static final int CENCOM = 32; // 0x20 @@ -68614,6 +69048,7 @@ package javax.crypto { public class ExemptionMechanism { ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, java.lang.String); + method protected void finalize(); method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException; method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; @@ -71002,6 +71437,7 @@ package javax.xml.transform { ctor public TransformerException(java.lang.String, java.lang.Throwable); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); method public java.lang.String getLocationAsString(); method public javax.xml.transform.SourceLocator getLocator(); @@ -71272,6 +71708,7 @@ package javax.xml.xpath { public class XPathException extends java.lang.Exception { ctor public XPathException(java.lang.String); ctor public XPathException(java.lang.Throwable); + method public java.lang.Throwable getCause(); } public abstract interface XPathExpression { diff --git a/api/removed.txt b/api/removed.txt index 49b72e1513005cdbf7aa95ea3ea3b9e342869a29..6c37a8fbf1333e752f6f54a2d2cc04c47eb6e931 100644 --- a/api/removed.txt +++ b/api/removed.txt @@ -15,6 +15,7 @@ package android.app { public class Notification implements android.os.Parcelable { method public deprecated java.lang.String getChannel(); + method public static java.lang.Class getNotificationStyleClass(java.lang.String); method public deprecated long getTimeout(); method public deprecated void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent); } @@ -24,30 +25,9 @@ package android.app { method public deprecated android.app.Notification.Builder setTimeout(long); } - public static final class Notification.TvExtender implements android.app.Notification.Extender { - method public deprecated java.lang.String getChannel(); - } - public final deprecated class PictureInPictureArgs implements android.os.Parcelable { - ctor public deprecated PictureInPictureArgs(); - ctor public deprecated PictureInPictureArgs(float, java.util.List); method public static android.app.PictureInPictureArgs convert(android.app.PictureInPictureParams); method public static android.app.PictureInPictureParams convert(android.app.PictureInPictureArgs); - method public void copyOnlySet(android.app.PictureInPictureArgs); - method public java.util.List getActions(); - method public float getAspectRatio(); - method public android.util.Rational getAspectRatioRational(); - method public android.graphics.Rect getSourceRectHint(); - method public android.graphics.Rect getSourceRectHintInsets(); - method public boolean hasSetActions(); - method public boolean hasSetAspectRatio(); - method public boolean hasSourceBoundsHint(); - method public boolean hasSourceBoundsHintInsets(); - method public deprecated void setActions(java.util.List); - method public deprecated void setAspectRatio(float); - method public deprecated void setSourceRectHint(android.graphics.Rect); - method public deprecated void setSourceRectHintInsets(android.graphics.Rect); - method public void truncateActions(int); field public static final android.os.Parcelable.Creator CREATOR; } @@ -59,10 +39,6 @@ package android.app { method public android.app.PictureInPictureArgs.Builder setSourceRectHint(android.graphics.Rect); } - public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable { - method public deprecated void showAsNotification(android.content.Context); - } - } package android.app.admin { @@ -70,8 +46,6 @@ package android.app.admin { public class DevicePolicyManager { method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle); method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String); - method public deprecated java.lang.String getDeviceInitializerApp(); - method public deprecated android.content.ComponentName getDeviceInitializerComponent(); } } @@ -272,10 +246,6 @@ package android.os { ctor public BatteryManager(); } - public class Build { - field public static final boolean PERMISSIONS_REVIEW_REQUIRED; - } - public final class PowerManager { method public void goToSleep(long); method public deprecated void userActivity(long, boolean); @@ -301,18 +271,8 @@ package android.os { package android.os.storage { public class StorageManager { - method public deprecated void allocateBytes(java.io.File, long, int) throws java.io.IOException; - method public deprecated long getAllocatableBytes(java.io.File, int) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getCacheSizeBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheSizeBytes() throws java.io.IOException; - method public deprecated long getExternalCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getExternalCacheSizeBytes() throws java.io.IOException; method public android.os.storage.StorageVolume getPrimaryVolume(); method public android.os.storage.StorageVolume[] getVolumeList(); - method public deprecated boolean isCacheBehaviorAtomic(java.io.File) throws java.io.IOException; - method public deprecated void setCacheBehaviorAtomic(java.io.File, boolean) throws java.io.IOException; } } @@ -356,11 +316,8 @@ package android.provider { field public static final java.lang.String CREATED = "created"; field public static final java.lang.String DATE = "date"; field public static final java.lang.String FAVICON = "favicon"; - field public static final java.lang.String THUMBNAIL = "thumbnail"; field public static final java.lang.String TITLE = "title"; - field public static final java.lang.String TOUCH_ICON = "touch_icon"; field public static final java.lang.String URL = "url"; - field public static final java.lang.String USER_ENTERED = "user_entered"; field public static final java.lang.String VISITS = "visits"; } diff --git a/api/system-current.txt b/api/system-current.txt index 1620e6561c56ebe901c871ccaa26f3967a1ca877..9a35bf8495b3acc1cbe638d145a2ad4c180de900 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6,12 +6,13 @@ package android { public static final class Manifest.permission { ctor public Manifest.permission(); + field public static final java.lang.String ACCESS_BROADCAST_RADIO = "android.permission.ACCESS_BROADCAST_RADIO"; field public static final java.lang.String ACCESS_CACHE_FILESYSTEM = "android.permission.ACCESS_CACHE_FILESYSTEM"; field public static final java.lang.String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES"; field public static final java.lang.String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION"; field public static final java.lang.String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES"; field public static final java.lang.String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION"; - field public static final java.lang.String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO"; + field public static final deprecated java.lang.String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO"; field public static final java.lang.String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"; field public static final java.lang.String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION"; field public static final java.lang.String ACCESS_MTP = "android.permission.ACCESS_MTP"; @@ -22,6 +23,7 @@ package android { field public static final java.lang.String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER"; field public static final java.lang.String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE"; field public static final java.lang.String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER"; + field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING"; field public static final java.lang.String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL"; field public static final java.lang.String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE"; field public static final java.lang.String ALLOW_ANY_CODEC_FOR_PLAYBACK = "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK"; @@ -120,6 +122,7 @@ package android { field public static final java.lang.String GRANT_RUNTIME_PERMISSIONS = "android.permission.GRANT_RUNTIME_PERMISSIONS"; field public static final java.lang.String HARDWARE_TEST = "android.permission.HARDWARE_TEST"; field public static final java.lang.String HDMI_CEC = "android.permission.HDMI_CEC"; + field public static final java.lang.String HIDE_NON_SYSTEM_OVERLAY_WINDOWS = "android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"; field public static final java.lang.String INJECT_EVENTS = "android.permission.INJECT_EVENTS"; field public static final java.lang.String INSTALL_GRANT_RUNTIME_PERMISSIONS = "android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS"; field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; @@ -146,6 +149,7 @@ package android { field public static final java.lang.String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS"; field public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS"; field public static final java.lang.String MANAGE_OWN_CALLS = "android.permission.MANAGE_OWN_CALLS"; + field public static final java.lang.String MANAGE_SUBSCRIPTION_PLANS = "android.permission.MANAGE_SUBSCRIPTION_PLANS"; field public static final java.lang.String MANAGE_USB = "android.permission.MANAGE_USB"; field public static final java.lang.String MANAGE_USERS = "android.permission.MANAGE_USERS"; field public static final java.lang.String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE"; @@ -156,7 +160,7 @@ package android { field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; field public static final java.lang.String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS"; field public static final java.lang.String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE"; - field public static final java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING"; + field public static final deprecated java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING"; field public static final java.lang.String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS"; field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE"; field public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS"; @@ -178,6 +182,7 @@ package android { field public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR"; field public static final java.lang.String READ_CALL_LOG = "android.permission.READ_CALL_LOG"; field public static final java.lang.String READ_CONTACTS = "android.permission.READ_CONTACTS"; + field public static final java.lang.String READ_CONTENT_RATING_SYSTEMS = "android.permission.READ_CONTENT_RATING_SYSTEMS"; field public static final java.lang.String READ_DREAM_STATE = "android.permission.READ_DREAM_STATE"; field public static final java.lang.String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE"; field public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER"; @@ -188,12 +193,15 @@ package android { field public static final java.lang.String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE"; field public static final java.lang.String READ_PHONE_NUMBERS = "android.permission.READ_PHONE_NUMBERS"; field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE"; + field public static final java.lang.String READ_PRINT_SERVICES = "android.permission.READ_PRINT_SERVICES"; + field public static final java.lang.String READ_PRINT_SERVICE_RECOMMENDATIONS = "android.permission.READ_PRINT_SERVICE_RECOMMENDATIONS"; field public static final java.lang.String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE"; field public static final java.lang.String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES"; field public static final java.lang.String READ_SMS = "android.permission.READ_SMS"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS"; field public static final java.lang.String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL"; + field public static final java.lang.String READ_WALLPAPER_INTERNAL = "android.permission.READ_WALLPAPER_INTERNAL"; field public static final java.lang.String READ_WIFI_CREDENTIAL = "android.permission.READ_WIFI_CREDENTIAL"; field public static final java.lang.String REAL_GET_TASKS = "android.permission.REAL_GET_TASKS"; field public static final java.lang.String REBOOT = "android.permission.REBOOT"; @@ -221,7 +229,6 @@ package android { field public static final java.lang.String RETRIEVE_WINDOW_CONTENT = "android.permission.RETRIEVE_WINDOW_CONTENT"; field public static final java.lang.String REVOKE_RUNTIME_PERMISSIONS = "android.permission.REVOKE_RUNTIME_PERMISSIONS"; field public static final java.lang.String SCORE_NETWORKS = "android.permission.SCORE_NETWORKS"; - field public static final java.lang.String SEND_EMBMS_INTENTS = "android.permission.SEND_EMBMS_INTENTS"; field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE"; field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS"; field public static final java.lang.String SEND_SMS_NO_CONFIRMATION = "android.permission.SEND_SMS_NO_CONFIRMATION"; @@ -257,6 +264,7 @@ package android { field public static final java.lang.String UPDATE_APP_OPS_STATS = "android.permission.UPDATE_APP_OPS_STATS"; field public static final java.lang.String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS"; field public static final java.lang.String UPDATE_LOCK = "android.permission.UPDATE_LOCK"; + field public static final java.lang.String UPDATE_TIME_ZONE_RULES = "android.permission.UPDATE_TIME_ZONE_RULES"; field public static final java.lang.String USER_ACTIVITY = "android.permission.USER_ACTIVITY"; field public static final java.lang.String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT"; field public static final java.lang.String USE_SIP = "android.permission.USE_SIP"; @@ -510,6 +518,7 @@ package android { field public static final int childIndicatorRight = 16843024; // 0x1010110 field public static final int childIndicatorStart = 16843731; // 0x10103d3 field public static final int choiceMode = 16843051; // 0x101012b + field public static final int classLoader = 16844139; // 0x101056b field public static final int clearTaskOnLaunch = 16842773; // 0x1010015 field public static final int clickable = 16842981; // 0x10100e5 field public static final int clipChildren = 16842986; // 0x10100ea @@ -1040,6 +1049,7 @@ package android { field public static final int multiprocess = 16842771; // 0x1010013 field public static final int name = 16842755; // 0x1010003 field public static final int navigationBarColor = 16843858; // 0x1010452 + field public static final int navigationBarDividerColor = 16844141; // 0x101056d field public static final int navigationContentDescription = 16843969; // 0x10104c1 field public static final int navigationIcon = 16843968; // 0x10104c0 field public static final int navigationMode = 16843471; // 0x10102cf @@ -1308,6 +1318,7 @@ package android { field public static final int showSilent = 16843259; // 0x10101fb field public static final int showText = 16843949; // 0x10104ad field public static final deprecated int showWeekNumber = 16843582; // 0x101033e + field public static final int showWhenLocked = 16844137; // 0x1010569 field public static final deprecated int shownWeekCount = 16843585; // 0x1010341 field public static final int shrinkColumns = 16843082; // 0x101014a field public static final deprecated int singleLine = 16843101; // 0x101015d @@ -1566,6 +1577,7 @@ package android { field public static final int trimPathOffset = 16843786; // 0x101040a field public static final int trimPathStart = 16843784; // 0x1010408 field public static final int tunerCount = 16844061; // 0x101051d + field public static final int turnScreenOn = 16844138; // 0x101056a field public static final int type = 16843169; // 0x10101a1 field public static final int typeface = 16842902; // 0x1010096 field public static final int uiOptions = 16843672; // 0x1010398 @@ -1649,6 +1661,7 @@ package android { field public static final int windowHideAnimation = 16842935; // 0x10100b7 field public static final int windowIsFloating = 16842839; // 0x1010057 field public static final int windowIsTranslucent = 16842840; // 0x1010058 + field public static final int windowLightNavigationBar = 16844140; // 0x101056c field public static final int windowLightStatusBar = 16844000; // 0x10104e0 field public static final int windowMinWidthMajor = 16843606; // 0x1010356 field public static final int windowMinWidthMinor = 16843607; // 0x1010357 @@ -2065,6 +2078,7 @@ package android { field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015 field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011 field public static final int VideoView_error_title = 17039378; // 0x1040012 + field public static final int autofill = 17039386; // 0x104001a field public static final int cancel = 17039360; // 0x1040000 field public static final int copy = 17039361; // 0x1040001 field public static final int copyUrl = 17039362; // 0x1040002 @@ -3294,6 +3308,7 @@ package android.animation { public final class AnimatorSet extends android.animation.Animator { ctor public AnimatorSet(); + method public android.animation.AnimatorSet clone(); method public java.util.ArrayList getChildAnimations(); method public long getCurrentPlayTime(); method public long getDuration(); @@ -3412,6 +3427,7 @@ package android.animation { public final class ObjectAnimator extends android.animation.ValueAnimator { ctor public ObjectAnimator(); + method public android.animation.ObjectAnimator clone(); method public java.lang.String getPropertyName(); method public java.lang.Object getTarget(); method public static android.animation.ObjectAnimator ofArgb(java.lang.Object, java.lang.String, int...); @@ -3437,6 +3453,7 @@ package android.animation { method public static android.animation.ObjectAnimator ofObject(T, android.util.Property, android.animation.TypeConverter, android.graphics.Path); method public static android.animation.ObjectAnimator ofPropertyValuesHolder(java.lang.Object, android.animation.PropertyValuesHolder...); method public void setAutoCancel(boolean); + method public android.animation.ObjectAnimator setDuration(long); method public void setProperty(android.util.Property); method public void setPropertyName(java.lang.String); } @@ -3518,6 +3535,7 @@ package android.animation { ctor public ValueAnimator(); method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener); method public static boolean areAnimatorsEnabled(); + method public android.animation.ValueAnimator clone(); method public float getAnimatedFraction(); method public java.lang.Object getAnimatedValue(); method public java.lang.Object getAnimatedValue(java.lang.String); @@ -3896,10 +3914,12 @@ package android.app { method public final void setResult(int); method public final void setResult(int, android.content.Intent); method public final deprecated void setSecondaryProgress(int); + method public void setShowWhenLocked(boolean); method public void setTaskDescription(android.app.ActivityManager.TaskDescription); method public void setTitle(java.lang.CharSequence); method public void setTitle(int); method public deprecated void setTitleColor(int); + method public void setTurnScreenOn(boolean); method public void setVisible(boolean); method public final void setVolumeControlStream(int); method public void setVrModeEnabled(boolean, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; @@ -4701,14 +4721,6 @@ package android.app { field public static final int VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION = 3; // 0x3 } - public abstract deprecated class EphemeralResolverService extends android.app.InstantAppResolverService { - ctor public EphemeralResolverService(); - method public android.os.Looper getLooper(); - method public abstract deprecated java.util.List onEphemeralResolveInfoList(int[], int); - method public android.content.pm.EphemeralResolveInfo onGetEphemeralIntentFilter(java.lang.String); - method public java.util.List onGetEphemeralResolveInfo(int[]); - } - 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(); @@ -5142,6 +5154,7 @@ package android.app { ctor public IntentService(java.lang.String); method public android.os.IBinder onBind(android.content.Intent); method protected abstract void onHandleIntent(android.content.Intent); + method public void onStart(android.content.Intent, int); method public void setIntentRedelivery(boolean); } @@ -5299,7 +5312,6 @@ package android.app { method public java.lang.String getGroup(); method public int getGroupAlertBehavior(); method public android.graphics.drawable.Icon getLargeIcon(); - method public static java.lang.Class getNotificationStyleClass(java.lang.String); method public java.lang.CharSequence getSettingsText(); method public java.lang.String getShortcutId(); method public android.graphics.drawable.Icon getSmallIcon(); @@ -5799,6 +5811,7 @@ package android.app { method public java.util.List getNotificationChannelGroups(); method public java.util.List getNotificationChannels(); method public android.app.NotificationManager.Policy getNotificationPolicy(); + method public boolean isNotificationListenerAccessGranted(android.content.ComponentName); method public boolean isNotificationPolicyAccessGranted(); method public void notify(int, android.app.Notification); method public void notify(java.lang.String, int, android.app.Notification); @@ -6295,6 +6308,7 @@ package android.app { } public class VrManager { + method public void setAndBindVrCompositor(android.content.ComponentName); method public void setPersistentVrModeEnabled(boolean); } @@ -6333,7 +6347,6 @@ package android.app { } public class WallpaperManager { - method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener); method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler); method public void clear() throws java.io.IOException; method public void clear(int) throws java.io.IOException; @@ -6514,8 +6527,6 @@ package android.app.admin { method public int getCurrentFailedPasswordAttempts(); method public java.util.List getDelegatePackages(android.content.ComponentName, java.lang.String); method public java.util.List getDelegatedScopes(android.content.ComponentName, java.lang.String); - method public deprecated java.lang.String getDeviceInitializerApp(); - method public deprecated android.content.ComponentName getDeviceInitializerComponent(); method public java.lang.String getDeviceOwner(); method public android.content.ComponentName getDeviceOwnerComponentOnAnyUser(); method public java.lang.CharSequence getDeviceOwnerLockScreenInfo(); @@ -6682,6 +6693,7 @@ package android.app.admin { field public static final java.lang.String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD"; field public static final java.lang.String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER"; field public static final java.lang.String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION"; + field public static final java.lang.String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE"; field public static final java.lang.String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED"; field public static final java.lang.String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions"; field public static final java.lang.String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall"; @@ -9860,7 +9872,6 @@ package android.content { field public static final java.lang.String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED"; field public static final java.lang.String ACTION_DEFAULT = "android.intent.action.VIEW"; field public static final java.lang.String ACTION_DELETE = "android.intent.action.DELETE"; - field public static final deprecated java.lang.String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD"; field public static final deprecated java.lang.String ACTION_DEVICE_STORAGE_LOW = "android.intent.action.DEVICE_STORAGE_LOW"; field public static final deprecated java.lang.String ACTION_DEVICE_STORAGE_OK = "android.intent.action.DEVICE_STORAGE_OK"; field public static final java.lang.String ACTION_DIAL = "android.intent.action.DIAL"; @@ -9868,7 +9879,6 @@ package android.content { field public static final java.lang.String ACTION_DREAMING_STARTED = "android.intent.action.DREAMING_STARTED"; field public static final java.lang.String ACTION_DREAMING_STOPPED = "android.intent.action.DREAMING_STOPPED"; field public static final java.lang.String ACTION_EDIT = "android.intent.action.EDIT"; - field public static final deprecated java.lang.String ACTION_EPHEMERAL_RESOLVER_SETTINGS = "android.intent.action.EPHEMERAL_RESOLVER_SETTINGS"; field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"; field public static final java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE = "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"; field public static final java.lang.String ACTION_FACTORY_RESET = "android.intent.action.FACTORY_RESET"; @@ -9882,7 +9892,7 @@ package android.content { field public static final java.lang.String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED"; field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT"; field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT"; - field public static final deprecated java.lang.String ACTION_INSTALL_EPHEMERAL_PACKAGE = "android.intent.action.INSTALL_EPHEMERAL_PACKAGE"; + field public static final java.lang.String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE"; field public static final java.lang.String ACTION_INSTALL_INSTANT_APP_PACKAGE = "android.intent.action.INSTALL_INSTANT_APP_PACKAGE"; field public static final java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; field public static final java.lang.String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS"; @@ -9900,7 +9910,6 @@ package android.content { field public static final java.lang.String ACTION_MANAGE_PACKAGE_STORAGE = "android.intent.action.MANAGE_PACKAGE_STORAGE"; field public static final java.lang.String ACTION_MANAGE_PERMISSIONS = "android.intent.action.MANAGE_PERMISSIONS"; field public static final java.lang.String ACTION_MANAGE_PERMISSION_APPS = "android.intent.action.MANAGE_PERMISSION_APPS"; - field public static final deprecated java.lang.String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR"; field public static final java.lang.String ACTION_MASTER_CLEAR_NOTIFICATION = "android.intent.action.MASTER_CLEAR_NOTIFICATION"; field public static final java.lang.String ACTION_MEDIA_BAD_REMOVAL = "android.intent.action.MEDIA_BAD_REMOVAL"; field public static final java.lang.String ACTION_MEDIA_BUTTON = "android.intent.action.MEDIA_BUTTON"; @@ -9945,7 +9954,6 @@ package android.content { field public static final java.lang.String ACTION_QUICK_CLOCK = "android.intent.action.QUICK_CLOCK"; field public static final java.lang.String ACTION_QUICK_VIEW = "android.intent.action.QUICK_VIEW"; field public static final java.lang.String ACTION_REBOOT = "android.intent.action.REBOOT"; - field public static final deprecated java.lang.String ACTION_RESOLVE_EPHEMERAL_PACKAGE = "android.intent.action.RESOLVE_EPHEMERAL_PACKAGE"; field public static final java.lang.String ACTION_RESOLVE_INSTANT_APP_PACKAGE = "android.intent.action.RESOLVE_INSTANT_APP_PACKAGE"; field public static final java.lang.String ACTION_REVIEW_PERMISSIONS = "android.intent.action.REVIEW_PERMISSIONS"; field public static final java.lang.String ACTION_RUN = "android.intent.action.RUN"; @@ -9956,7 +9964,6 @@ package android.content { field public static final java.lang.String ACTION_SEND = "android.intent.action.SEND"; field public static final java.lang.String ACTION_SENDTO = "android.intent.action.SENDTO"; field public static final java.lang.String ACTION_SEND_MULTIPLE = "android.intent.action.SEND_MULTIPLE"; - field public static final deprecated java.lang.String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE"; field public static final java.lang.String ACTION_SET_WALLPAPER = "android.intent.action.SET_WALLPAPER"; field public static final java.lang.String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO"; field public static final java.lang.String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN"; @@ -10032,8 +10039,6 @@ package android.content { field public static final java.lang.String EXTRA_BCC = "android.intent.extra.BCC"; field public static final java.lang.String EXTRA_BUG_REPORT = "android.intent.extra.BUG_REPORT"; field public static final java.lang.String EXTRA_CC = "android.intent.extra.CC"; - field public static final deprecated java.lang.String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator"; - field public static final deprecated java.lang.String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator"; field public static final deprecated java.lang.String EXTRA_CHANGED_COMPONENT_NAME = "android.intent.extra.changed_component_name"; field public static final java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list"; field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list"; @@ -10044,14 +10049,7 @@ package android.content { field public static final java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER"; field public static final java.lang.String EXTRA_COMPONENT_NAME = "android.intent.extra.COMPONENT_NAME"; field public static final java.lang.String EXTRA_CONTENT_ANNOTATIONS = "android.intent.extra.CONTENT_ANNOTATIONS"; - field public static final deprecated java.lang.String EXTRA_CSS_INDICATOR = "cssIndicator"; - field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long"; - field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short"; - field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric"; - field public static final deprecated java.lang.String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology"; - field public static final deprecated java.lang.String EXTRA_DATA_REG_STATE = "dataRegState"; field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED"; - field public static final deprecated java.lang.String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType"; field public static final java.lang.String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE"; field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2 field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1 @@ -10060,7 +10058,6 @@ package android.content { field public static final int EXTRA_DOCK_STATE_UNDOCKED = 0; // 0x0 field public static final java.lang.String EXTRA_DONT_KILL_APP = "android.intent.extra.DONT_KILL_APP"; field public static final java.lang.String EXTRA_EMAIL = "android.intent.extra.EMAIL"; - field public static final deprecated java.lang.String EXTRA_EMERGENCY_ONLY = "emergencyOnly"; field public static final java.lang.String EXTRA_EXCLUDE_COMPONENTS = "android.intent.extra.EXCLUDE_COMPONENTS"; field public static final java.lang.String EXTRA_FORCE_FACTORY_RESET = "android.intent.extra.FORCE_FACTORY_RESET"; field public static final java.lang.String EXTRA_FROM_STORAGE = "android.intent.extra.FROM_STORAGE"; @@ -10069,18 +10066,10 @@ package android.content { field public static final java.lang.String EXTRA_INITIAL_INTENTS = "android.intent.extra.INITIAL_INTENTS"; field public static final java.lang.String EXTRA_INSTALLER_PACKAGE_NAME = "android.intent.extra.INSTALLER_PACKAGE_NAME"; field public static final java.lang.String EXTRA_INTENT = "android.intent.extra.INTENT"; - field public static final deprecated java.lang.String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration"; - field public static final deprecated java.lang.String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation"; field public static final java.lang.String EXTRA_KEY_EVENT = "android.intent.extra.KEY_EVENT"; field public static final java.lang.String EXTRA_LOCAL_ONLY = "android.intent.extra.LOCAL_ONLY"; - field public static final deprecated java.lang.String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost"; - field public static final deprecated java.lang.String EXTRA_MANUAL = "manual"; field public static final java.lang.String EXTRA_MIME_TYPES = "android.intent.extra.MIME_TYPES"; - field public static final deprecated java.lang.String EXTRA_NETWORK_ID = "networkId"; field public static final java.lang.String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE"; - field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long"; - field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short"; - field public static final deprecated java.lang.String EXTRA_OPERATOR_NUMERIC = "operator-numeric"; field public static final java.lang.String EXTRA_ORIGINATING_UID = "android.intent.extra.ORIGINATING_UID"; field public static final java.lang.String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI"; field public static final java.lang.String EXTRA_PACKAGES = "android.intent.extra.PACKAGES"; @@ -10111,15 +10100,11 @@ package android.content { field public static final java.lang.String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME"; field public static final java.lang.String EXTRA_STREAM = "android.intent.extra.STREAM"; field public static final java.lang.String EXTRA_SUBJECT = "android.intent.extra.SUBJECT"; - field public static final deprecated java.lang.String EXTRA_SYSTEM_ID = "systemId"; field public static final java.lang.String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE"; field public static final java.lang.String EXTRA_TEXT = "android.intent.extra.TEXT"; field public static final java.lang.String EXTRA_TITLE = "android.intent.extra.TITLE"; field public static final java.lang.String EXTRA_UID = "android.intent.extra.UID"; field public static final java.lang.String EXTRA_USER = "android.intent.extra.USER"; - field public static final deprecated java.lang.String EXTRA_VOICE_RADIO_TECH = "radioTechnology"; - field public static final deprecated java.lang.String EXTRA_VOICE_REG_STATE = "voiceRegState"; - field public static final deprecated java.lang.String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType"; field public static final int FILL_IN_ACTION = 1; // 0x1 field public static final int FILL_IN_CATEGORIES = 4; // 0x4 field public static final int FILL_IN_CLIP_DATA = 128; // 0x80 @@ -10735,6 +10720,7 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public static java.lang.CharSequence getCategoryTitle(android.content.Context, int); + method public boolean isVirtualPreload(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final int CATEGORY_AUDIO = 1; // 0x1 field public static final int CATEGORY_GAME = 0; // 0x0 @@ -10857,41 +10843,6 @@ package android.content.pm { field public int reqTouchScreen; } - public final deprecated class EphemeralIntentFilter implements android.os.Parcelable { - ctor public EphemeralIntentFilter(java.lang.String, java.util.List); - method public int describeContents(); - method public java.util.List getFilters(); - method public java.lang.String getSplitName(); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - - public final deprecated class EphemeralResolveInfo implements android.os.Parcelable { - ctor public deprecated EphemeralResolveInfo(android.net.Uri, java.lang.String, java.util.List); - ctor public deprecated EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List); - ctor public EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List, int); - ctor public EphemeralResolveInfo(java.lang.String, java.lang.String, java.util.List); - method public int describeContents(); - method public byte[] getDigestBytes(); - method public int getDigestPrefix(); - method public deprecated java.util.List getFilters(); - method public java.util.List getIntentFilters(); - method public java.lang.String getPackageName(); - method public int getVersionCode(); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - field public static final java.lang.String SHA_ALGORITHM = "SHA-256"; - } - - public static final class EphemeralResolveInfo.EphemeralDigest implements android.os.Parcelable { - ctor public EphemeralResolveInfo.EphemeralDigest(java.lang.String); - method public int describeContents(); - method public byte[][] getDigestBytes(); - method public int[] getDigestPrefix(); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - public final class FeatureGroupInfo implements android.os.Parcelable { ctor public FeatureGroupInfo(); ctor public FeatureGroupInfo(android.content.pm.FeatureGroupInfo); @@ -10950,7 +10901,6 @@ package android.content.pm { method public int getVersionCode(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; - field public static final java.lang.String SHA_ALGORITHM = "SHA-256"; } public static final class InstantAppResolveInfo.InstantAppDigest implements android.os.Parcelable { @@ -11155,12 +11105,14 @@ package android.content.pm { method public void abandon(); method public void close(); method public void commit(android.content.IntentSender); + method public void commitTransferred(android.content.IntentSender); method public void fsync(java.io.OutputStream) throws java.io.IOException; method public java.lang.String[] getNames() throws java.io.IOException; method public java.io.InputStream openRead(java.lang.String) throws java.io.IOException; method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException; method public void removeSplit(java.lang.String) throws java.io.IOException; method public void setStagingProgress(float); + method public void transfer(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; } public static abstract class PackageInstaller.SessionCallback { @@ -11175,13 +11127,26 @@ package android.content.pm { public static class PackageInstaller.SessionInfo implements android.os.Parcelable { method public android.content.Intent createDetailsIntent(); method public int describeContents(); + method public boolean getAllocateAggressive(); + method public boolean getAllowDowngrade(); method public android.graphics.Bitmap getAppIcon(); method public java.lang.CharSequence getAppLabel(); method public java.lang.String getAppPackageName(); + method public boolean getDontKillApp(); + method public java.lang.String[] getGrantedRuntimePermissions(); + method public boolean getInstallAsFullApp(boolean); + method public boolean getInstallAsInstantApp(boolean); + method public boolean getInstallAsVirtualPreload(); + method public int getInstallLocation(); method public int getInstallReason(); method public java.lang.String getInstallerPackageName(); + method public int getMode(); + method public int getOriginatingUid(); + method public android.net.Uri getOriginatingUri(); method public float getProgress(); + method public android.net.Uri getReferrerUri(); method public int getSessionId(); + method public long getSize(); method public boolean isActive(); method public boolean isSealed(); method public void writeToParcel(android.os.Parcel, int); @@ -11199,6 +11164,7 @@ package android.content.pm { method public void setDontKillApp(boolean); method public void setGrantedRuntimePermissions(java.lang.String[]); method public void setInstallAsInstantApp(boolean); + method public void setInstallAsVirtualPreload(); method public void setInstallLocation(int); method public void setInstallReason(int); method public void setOriginatingUid(int); @@ -11326,6 +11292,8 @@ package android.content.pm { method public abstract void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public abstract boolean hasSystemFeature(java.lang.String); method public abstract boolean hasSystemFeature(java.lang.String, int); + method public abstract int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public abstract int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract boolean isInstantApp(); method public abstract boolean isInstantApp(java.lang.String); method public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); @@ -11339,6 +11307,7 @@ package android.content.pm { method public abstract java.util.List queryIntentContentProviders(android.content.Intent, int); method public abstract java.util.List queryIntentServices(android.content.Intent, int); method public abstract java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public abstract void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); method public abstract void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public abstract deprecated void removePackageFromPreferred(java.lang.String); method public abstract void removePermission(java.lang.String); @@ -11378,6 +11347,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_BACKUP = "android.software.backup"; field public static final java.lang.String FEATURE_BLUETOOTH = "android.hardware.bluetooth"; field public static final java.lang.String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le"; + field public static final java.lang.String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio"; field public static final java.lang.String FEATURE_CAMERA = "android.hardware.camera"; field public static final java.lang.String FEATURE_CAMERA_ANY = "android.hardware.camera.any"; field public static final java.lang.String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus"; @@ -11417,8 +11387,11 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; + field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; + field public static final java.lang.String FEATURE_RAM_LOW = "android.hardware.ram.low"; + field public static final java.lang.String FEATURE_RAM_NORMAL = "android.hardware.ram.normal"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; field public static final java.lang.String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait"; field public static final java.lang.String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users"; @@ -11459,6 +11432,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; + field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20 field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4 field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40 @@ -11558,6 +11532,11 @@ package android.content.pm { field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff } + public static abstract class PackageManager.DexModuleRegisterCallback { + ctor public PackageManager.DexModuleRegisterCallback(); + method public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String); + } + public static class PackageManager.NameNotFoundException extends android.util.AndroidException { ctor public PackageManager.NameNotFoundException(); ctor public PackageManager.NameNotFoundException(java.lang.String); @@ -11621,8 +11600,8 @@ package android.content.pm { field public static final int PROTECTION_DANGEROUS = 1; // 0x1 field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40 field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20 - field public static final int PROTECTION_FLAG_EPHEMERAL = 4096; // 0x1000 field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100 + field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000 field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80 field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400 field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10 @@ -11843,6 +11822,7 @@ package android.content.res { public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream { ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException; + method public void mark(int); } public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream { @@ -12150,6 +12130,7 @@ package android.database { method public void copyStringToBuffer(int, android.database.CharArrayBuffer); method public void deactivate(); method public void fillWindow(int, android.database.CursorWindow); + method protected void finalize(); method public byte[] getBlob(int); method public int getColumnCount(); method public int getColumnIndex(java.lang.String); @@ -12631,6 +12612,7 @@ package android.database.sqlite { method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener); method public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String) throws android.database.SQLException; method public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public static android.database.sqlite.SQLiteDatabase createInMemory(android.database.sqlite.SQLiteDatabase.OpenParams); method public int delete(java.lang.String, java.lang.String, java.lang.String[]); method public static boolean deleteDatabase(java.io.File); method public void disableWriteAheadLogging(); @@ -12660,6 +12642,7 @@ package android.database.sqlite { method public boolean needUpgrade(int); method protected void onAllReferencesReleased(); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int); + method public static android.database.sqlite.SQLiteDatabase openDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.OpenParams); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int, android.database.DatabaseErrorHandler); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.CursorFactory); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory); @@ -12710,6 +12693,28 @@ package android.database.sqlite { method public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery); } + public static final class SQLiteDatabase.OpenParams { + method public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory(); + method public android.database.DatabaseErrorHandler getErrorHandler(); + method public long getIdleConnectionTimeout(); + method public int getLookasideSlotCount(); + method public int getLookasideSlotSize(); + method public int getOpenFlags(); + } + + public static final class SQLiteDatabase.OpenParams.Builder { + ctor public SQLiteDatabase.OpenParams.Builder(); + ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams build(); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(android.database.DatabaseErrorHandler); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(long); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(int, int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int); + } + public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException { ctor public SQLiteDatabaseCorruptException(); ctor public SQLiteDatabaseCorruptException(java.lang.String); @@ -12763,6 +12768,8 @@ package android.database.sqlite { method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int); method public void onOpen(android.database.sqlite.SQLiteDatabase); method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int); + method public void setIdleConnectionTimeout(long); + method public void setLookasideConfig(int, int); method public void setWriteAheadLoggingEnabled(boolean); } @@ -14624,6 +14631,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setOpacity(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); } @@ -14704,6 +14712,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setAntiAlias(boolean); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setGravity(int); method public void setMipMap(boolean); method public void setTargetDensity(android.graphics.Canvas); @@ -14829,6 +14838,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState); + method public void setDither(boolean); method public void setEnterFadeDuration(int); method public void setExitFadeDuration(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); @@ -14895,6 +14905,7 @@ package android.graphics.drawable { method public void setColors(int[]); method public void setCornerRadii(float[]); method public void setCornerRadius(float); + method public void setDither(boolean); method public void setGradientCenter(float, float); method public void setGradientRadius(float); method public void setGradientType(int); @@ -14989,6 +15000,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setDrawable(int, android.graphics.drawable.Drawable); method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable); method public void setId(int, int); @@ -15029,6 +15041,7 @@ package android.graphics.drawable { method public android.graphics.Paint getPaint(); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setTargetDensity(android.graphics.Canvas); method public void setTargetDensity(android.util.DisplayMetrics); method public void setTargetDensity(int); @@ -15091,6 +15104,7 @@ package android.graphics.drawable { method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setIntrinsicHeight(int); method public void setIntrinsicWidth(int); method public void setPadding(int, int, int, int); @@ -15132,27 +15146,32 @@ package android.graphics.drawable.shapes { public class ArcShape extends android.graphics.drawable.shapes.RectShape { ctor public ArcShape(float, float); + method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException; method public final float getStartAngle(); method public final float getSweepAngle(); } public class OvalShape extends android.graphics.drawable.shapes.RectShape { ctor public OvalShape(); + method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException; } public class PathShape extends android.graphics.drawable.shapes.Shape { ctor public PathShape(android.graphics.Path, float, float); + method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); } public class RectShape extends android.graphics.drawable.shapes.Shape { ctor public RectShape(); + method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); method protected final android.graphics.RectF rect(); } public class RoundRectShape extends android.graphics.drawable.shapes.RectShape { ctor public RoundRectShape(float[], android.graphics.RectF, float[]); + method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException; } public abstract class Shape implements java.lang.Cloneable { @@ -15237,6 +15256,7 @@ package android.hardware { method public final void autoFocus(android.hardware.Camera.AutoFocusCallback); method public final void cancelAutoFocus(); method public final boolean enableShutterSound(boolean); + method protected void finalize(); method public static void getCameraInfo(int, android.hardware.Camera.CameraInfo); method public static int getNumberOfCameras(); method public android.hardware.Camera.Parameters getParameters(); @@ -15854,6 +15874,7 @@ package android.hardware.camera2 { method public T get(android.hardware.camera2.CameraCharacteristics.Key); method public java.util.List> getAvailableCaptureRequestKeys(); method public java.util.List> getAvailableCaptureResultKeys(); + method public java.util.List> getKeys(); field public static final android.hardware.camera2.CameraCharacteristics.Key COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_ANTIBANDING_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_MODES; @@ -16214,6 +16235,7 @@ package android.hardware.camera2 { public final class CaptureRequest extends android.hardware.camera2.CameraMetadata implements android.os.Parcelable { method public int describeContents(); method public T get(android.hardware.camera2.CaptureRequest.Key); + method public java.util.List> getKeys(); method public java.lang.Object getTag(); method public boolean isReprocess(); method public void writeToParcel(android.os.Parcel, int); @@ -16292,6 +16314,7 @@ package android.hardware.camera2 { public class CaptureResult extends android.hardware.camera2.CameraMetadata { method public T get(android.hardware.camera2.CaptureResult.Key); method public long getFrameNumber(); + method public java.util.List> getKeys(); method public android.hardware.camera2.CaptureRequest getRequest(); method public int getSequenceId(); field public static final android.hardware.camera2.CaptureResult.Key BLACK_LEVEL_LOCK; @@ -16542,6 +16565,7 @@ package android.hardware.display { method public android.view.Display getDisplay(int); method public android.view.Display[] getDisplays(); method public android.view.Display[] getDisplays(java.lang.String); + method public android.graphics.Point getStableDisplaySize(); method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler); method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener); field public static final java.lang.String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION"; @@ -16590,9 +16614,12 @@ package android.hardware.fingerprint { field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5 field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1 field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7 + field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9 field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4 field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3 field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2 + field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa + field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8 } public static abstract class FingerprintManager.AuthenticationCallback { @@ -17142,6 +17169,60 @@ package android.hardware.location { package android.hardware.radio { + public final class ProgramSelector implements android.os.Parcelable { + ctor public ProgramSelector(int, android.hardware.radio.ProgramSelector.Identifier, android.hardware.radio.ProgramSelector.Identifier[], long[]); + method public static android.hardware.radio.ProgramSelector createAmFmSelector(int, int); + method public static android.hardware.radio.ProgramSelector createAmFmSelector(int, int, int); + method public int describeContents(); + method public android.hardware.radio.ProgramSelector.Identifier[] getAllIds(int); + method public long getFirstId(int); + method public android.hardware.radio.ProgramSelector.Identifier getPrimaryId(); + method public int getProgramType(); + method public android.hardware.radio.ProgramSelector.Identifier[] getSecondaryIds(); + method public long[] getVendorIds(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; // 0x1 + field public static final int IDENTIFIER_TYPE_DAB_ENSEMBLE = 6; // 0x6 + field public static final int IDENTIFIER_TYPE_DAB_FREQUENCY = 8; // 0x8 + field public static final int IDENTIFIER_TYPE_DAB_SCID = 7; // 0x7 + field public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; // 0x5 + field public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; // 0xa + field public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; // 0xb + field public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; // 0x9 + field public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; // 0x3 + field public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; // 0x4 + field public static final int IDENTIFIER_TYPE_RDS_PI = 2; // 0x2 + field public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; // 0xd + field public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; // 0xc + field public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = 1999; // 0x7cf + field public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = 1000; // 0x3e8 + field public static final int PROGRAM_TYPE_AM = 1; // 0x1 + field public static final int PROGRAM_TYPE_AM_HD = 3; // 0x3 + field public static final int PROGRAM_TYPE_DAB = 5; // 0x5 + field public static final int PROGRAM_TYPE_DRMO = 6; // 0x6 + field public static final int PROGRAM_TYPE_FM = 2; // 0x2 + field public static final int PROGRAM_TYPE_FM_HD = 4; // 0x4 + field public static final int PROGRAM_TYPE_SXM = 7; // 0x7 + field public static final int PROGRAM_TYPE_VENDOR_END = 1999; // 0x7cf + field public static final int PROGRAM_TYPE_VENDOR_START = 1000; // 0x3e8 + } + + public static final class ProgramSelector.Identifier implements android.os.Parcelable { + ctor public ProgramSelector.Identifier(int, long); + method public int describeContents(); + method public int getType(); + method public long getValue(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static abstract class ProgramSelector.IdentifierType implements java.lang.annotation.Annotation { + } + + public static abstract class ProgramSelector.ProgramType implements java.lang.annotation.Annotation { + } + public class RadioManager { method public int listModules(java.util.List); method public android.hardware.radio.RadioTuner openTuner(int, android.hardware.radio.RadioManager.BandConfig, boolean, android.hardware.radio.RadioTuner.Callback, android.os.Handler); @@ -17149,6 +17230,7 @@ package android.hardware.radio { field public static final int BAND_AM_HD = 3; // 0x3 field public static final int BAND_FM = 1; // 0x1 field public static final int BAND_FM_HD = 2; // 0x2 + field public static final int BAND_INVALID = -1; // 0xffffffff field public static final int CLASS_AM_FM = 0; // 0x0 field public static final int CLASS_DT = 2; // 0x2 field public static final int CLASS_SAT = 1; // 0x1 @@ -17184,6 +17266,9 @@ package android.hardware.radio { field public static final android.os.Parcelable.Creator CREATOR; } + public static abstract class RadioManager.Band implements java.lang.annotation.Annotation { + } + public static class RadioManager.BandConfig implements android.os.Parcelable { method public int describeContents(); method public int getLowerLimit(); @@ -17202,6 +17287,8 @@ package android.hardware.radio { method public int getSpacing(); method public int getType(); method public int getUpperLimit(); + method public boolean isAmBand(); + method public boolean isFmBand(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } @@ -17245,20 +17332,31 @@ package android.hardware.radio { method public int getNumTuners(); method public java.lang.String getProduct(); method public java.lang.String getSerial(); + method public java.lang.String getServiceName(); + method public java.util.Map getVendorInfo(); method public java.lang.String getVersion(); + method public boolean isBackgroundScanningSupported(); method public boolean isCaptureSupported(); + method public boolean isProgramIdentifierSupported(int); + method public boolean isProgramTypeSupported(int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } public static class RadioManager.ProgramInfo implements android.os.Parcelable { method public int describeContents(); - method public int getChannel(); + method public deprecated int getChannel(); method public android.hardware.radio.RadioMetadata getMetadata(); + method public android.hardware.radio.ProgramSelector getSelector(); method public int getSignalStrength(); - method public int getSubChannel(); + method public deprecated int getSubChannel(); + method public java.util.Map getVendorInfo(); method public boolean isDigital(); + method public boolean isLive(); + method public boolean isMuted(); method public boolean isStereo(); + method public boolean isTrafficAnnouncementActive(); + method public boolean isTrafficProgram(); method public boolean isTuned(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; @@ -17267,7 +17365,7 @@ package android.hardware.radio { public final class RadioMetadata implements android.os.Parcelable { method public boolean containsKey(java.lang.String); method public int describeContents(); - method public android.graphics.Bitmap getBitmap(java.lang.String); + method public deprecated android.graphics.Bitmap getBitmap(java.lang.String); method public android.hardware.radio.RadioMetadata.Clock getClock(java.lang.String); method public int getInt(java.lang.String); method public java.lang.String getString(java.lang.String); @@ -17311,19 +17409,27 @@ package android.hardware.radio { public abstract class RadioTuner { ctor public RadioTuner(); method public abstract int cancel(); + method public abstract void cancelAnnouncement(); method public abstract void close(); method public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]); method public abstract boolean getMute(); method public abstract int getProgramInformation(android.hardware.radio.RadioManager.ProgramInfo[]); + method public abstract java.util.List getProgramList(java.util.Map); method public abstract boolean hasControl(); + method public abstract boolean isAnalogForced(); method public abstract boolean isAntennaConnected(); method public abstract int scan(int, boolean); + method public abstract void setAnalogForced(boolean); method public abstract int setConfiguration(android.hardware.radio.RadioManager.BandConfig); method public abstract int setMute(boolean); + method public abstract boolean startBackgroundScan(); method public abstract int step(int, boolean); - method public abstract int tune(int, int); + method public abstract deprecated int tune(int, int); + method public abstract void tune(android.hardware.radio.ProgramSelector); field public static final int DIRECTION_DOWN = 1; // 0x1 field public static final int DIRECTION_UP = 0; // 0x0 + field public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; // 0x6 + field public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; // 0x5 field public static final int ERROR_CANCELLED = 2; // 0x2 field public static final int ERROR_CONFIG = 4; // 0x4 field public static final int ERROR_HARDWARE_FAILURE = 0; // 0x0 @@ -17334,12 +17440,15 @@ package android.hardware.radio { public static abstract class RadioTuner.Callback { ctor public RadioTuner.Callback(); method public void onAntennaState(boolean); + method public void onBackgroundScanAvailabilityChange(boolean); + method public void onBackgroundScanComplete(); method public void onConfigurationChanged(android.hardware.radio.RadioManager.BandConfig); method public void onControlChanged(boolean); method public void onEmergencyAnnouncement(boolean); method public void onError(int); - method public void onMetadataChanged(android.hardware.radio.RadioMetadata); + method public deprecated void onMetadataChanged(android.hardware.radio.RadioMetadata); method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo); + method public void onProgramListChanged(); method public void onTrafficAnnouncement(boolean); } @@ -19445,6 +19554,7 @@ package android.icu.text { } public class DateIntervalFormat extends android.icu.text.UFormat { + method public synchronized java.lang.Object clone(); method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.DateInterval, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition); @@ -20250,6 +20360,7 @@ package android.icu.text { public final class RuleBasedCollator extends android.icu.text.Collator { ctor public RuleBasedCollator(java.lang.String) throws java.lang.Exception; + method public android.icu.text.RuleBasedCollator cloneAsThawed(); method public int compare(java.lang.String, java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator); @@ -20276,6 +20387,7 @@ package android.icu.text { method public void setFrenchCollation(boolean); method public void setFrenchCollationDefault(); method public void setLowerCaseFirst(boolean); + method public android.icu.text.RuleBasedCollator setMaxVariable(int); method public void setNumericCollation(boolean); method public void setNumericCollationDefault(); method public void setStrengthDefault(); @@ -23131,6 +23243,7 @@ package android.media { ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException; method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); + method protected void finalize(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); @@ -23237,6 +23350,7 @@ package android.media { method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler); method public int attachAuxEffect(int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); + method protected void finalize(); method public void flush(); method public int getAudioFormat(); method public int getAudioSessionId(); @@ -23635,6 +23749,7 @@ package android.media { method public boolean clearQueue(); method public java.lang.Object clone() throws java.lang.CloneNotSupportedException; method public boolean closeJetFile(); + method protected void finalize(); method public static android.media.JetPlayer getJetPlayer(); method public static int getMaxTracks(); method public boolean loadJetFile(java.lang.String); @@ -23674,6 +23789,7 @@ package android.media { ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins(); + method protected void finalize(); method public static boolean isSystemIdSupported(int); method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException; method public void processEmm(byte[], int, int) throws android.media.MediaCasException; @@ -23730,6 +23846,7 @@ package android.media { method public static android.view.Surface createPersistentInputSurface(); method public final int dequeueInputBuffer(long); method public final int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long); + method protected void finalize(); method public final void flush(); method public android.media.MediaCodecInfo getCodecInfo(); method public java.nio.ByteBuffer getInputBuffer(int); @@ -23970,6 +24087,8 @@ package android.media { field public static final int AVCLevel51 = 32768; // 0x8000 field public static final int AVCLevel52 = 65536; // 0x10000 field public static final int AVCProfileBaseline = 1; // 0x1 + field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000 + field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000 field public static final int AVCProfileExtended = 4; // 0x4 field public static final int AVCProfileHigh = 8; // 0x8 field public static final int AVCProfileHigh10 = 16; // 0x10 @@ -23987,11 +24106,13 @@ package android.media { field public static final int DolbyVisionLevelUhd60 = 256; // 0x100 field public static final int DolbyVisionProfileDvavPen = 2; // 0x2 field public static final int DolbyVisionProfileDvavPer = 1; // 0x1 + field public static final int DolbyVisionProfileDvavSe = 512; // 0x200 field public static final int DolbyVisionProfileDvheDen = 8; // 0x8 field public static final int DolbyVisionProfileDvheDer = 4; // 0x4 field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80 field public static final int DolbyVisionProfileDvheDth = 64; // 0x40 field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10 + field public static final int DolbyVisionProfileDvheSt = 256; // 0x100 field public static final int DolbyVisionProfileDvheStn = 32; // 0x20 field public static final int H263Level10 = 1; // 0x1 field public static final int H263Level20 = 2; // 0x2 @@ -24141,6 +24262,7 @@ package android.media { public final class MediaCrypto { ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException; + method protected void finalize(); method public static final boolean isCryptoSchemeSupported(java.util.UUID); method public final void release(); method public final boolean requiresSecureDecoderComponent(java.lang.String); @@ -24161,6 +24283,7 @@ package android.media { ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public final int descramble(java.nio.ByteBuffer, java.nio.ByteBuffer, android.media.MediaCodec.CryptoInfo); + method protected void finalize(); method public final boolean requiresSecureDecoderComponent(java.lang.String); method public final void setMediaCasSession(android.media.MediaCas.Session); } @@ -24203,6 +24326,7 @@ package android.media { public final class MediaDrm { ctor public MediaDrm(java.util.UUID) throws android.media.UnsupportedSchemeException; method public void closeSession(byte[]); + method protected void finalize(); method public android.media.MediaDrm.CryptoSession getCryptoSession(byte[], java.lang.String, java.lang.String); method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], byte[], java.lang.String, int, java.util.HashMap) throws android.media.NotProvisionedException; method public byte[] getPropertyByteArray(java.lang.String); @@ -24299,6 +24423,7 @@ package android.media { public final class MediaExtractor { ctor public MediaExtractor(); method public boolean advance(); + method protected void finalize(); method public long getCachedDuration(); method public android.media.MediaExtractor.CasInfo getCasInfo(int); method public android.media.DrmInitData getDrmInitData(); @@ -24531,6 +24656,7 @@ package android.media { method public android.graphics.Bitmap getFrameAtTime(long, int); method public android.graphics.Bitmap getFrameAtTime(long); method public android.graphics.Bitmap getFrameAtTime(); + method public android.graphics.Bitmap getScaledFrameAtTime(long, int, int, int); method public void release(); method public void setDataSource(java.lang.String) throws java.lang.IllegalArgumentException; method public void setDataSource(java.lang.String, java.util.Map) throws java.lang.IllegalArgumentException; @@ -24600,6 +24726,7 @@ package android.media { method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); method public void deselectTrack(int) throws java.lang.IllegalStateException; + method protected void finalize(); method public int getAudioSessionId(); method public int getCurrentPosition(); method public android.media.MediaPlayer.DrmInfo getDrmInfo(); @@ -24795,6 +24922,7 @@ package android.media { public class MediaRecorder { ctor public MediaRecorder(); + method protected void finalize(); method public static final int getAudioSourceMax(); method public int getMaxAmplitude() throws java.lang.IllegalStateException; method public android.os.PersistableBundle getMetrics(); @@ -25068,6 +25196,7 @@ package android.media { public final class MediaSync { ctor public MediaSync(); method public final android.view.Surface createInputSurface(); + method protected void finalize(); method public void flush(); method public android.media.PlaybackParams getPlaybackParams(); method public android.media.SyncParams getSyncParams(); @@ -25196,6 +25325,10 @@ package android.media { public deprecated class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor { method public synchronized void apply(); + method public synchronized android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putObject(int, java.lang.Object) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putString(int, java.lang.String) throws java.lang.IllegalArgumentException; field public static final int BITMAP_KEY_ARTWORK = 100; // 0x64 } @@ -25242,6 +25375,7 @@ package android.media { } public class Ringtone { + method protected void finalize(); method public android.media.AudioAttributes getAudioAttributes(); method public deprecated int getStreamType(); method public java.lang.String getTitle(android.content.Context); @@ -25295,6 +25429,7 @@ package android.media { ctor public deprecated SoundPool(int, int, int); method public final void autoPause(); method public final void autoResume(); + method protected void finalize(); method public int load(java.lang.String, int); method public int load(android.content.Context, int, int); method public int load(android.content.res.AssetFileDescriptor, int); @@ -25363,6 +25498,7 @@ package android.media { public class ToneGenerator { ctor public ToneGenerator(int, int); + method protected void finalize(); method public final int getAudioSessionId(); method public void release(); method public boolean startTone(int); @@ -25495,6 +25631,7 @@ package android.media { public final class VolumeShaper implements java.lang.AutoCloseable { method public void apply(android.media.VolumeShaper.Operation); method public void close(); + method protected void finalize(); method public float getVolume(); method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean); } @@ -25549,6 +25686,7 @@ package android.media.audiofx { } public class AudioEffect { + method protected void finalize(); method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException; method public boolean getEnabled() throws java.lang.IllegalStateException; method public int getId() throws java.lang.IllegalStateException; @@ -25801,6 +25939,7 @@ package android.media.audiofx { public class Visualizer { ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException; + method protected void finalize(); method public int getCaptureSize() throws java.lang.IllegalStateException; method public static int[] getCaptureSizeRange(); method public boolean getEnabled(); @@ -26492,6 +26631,7 @@ package android.media.tv { method public static boolean isChannelUriForPassthroughInput(android.net.Uri); method public static boolean isChannelUriForTunerInput(android.net.Uri); method public static boolean isProgramUri(android.net.Uri); + method public static boolean isRecordedProgramUri(android.net.Uri); method public static void requestChannelBrowsable(android.content.Context, long); field public static final java.lang.String ACTION_CHANNEL_BROWSABLE_REQUESTED = "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED"; field public static final java.lang.String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS"; @@ -28128,6 +28268,7 @@ package android.net { method public static void incrementOperationCount(int); method public static void incrementOperationCount(int, int); method public static void setThreadStatsTag(int); + method public static void setThreadStatsTagApp(); method public static void setThreadStatsTagBackup(); method public static void setThreadStatsTagRestore(); method public static void setThreadStatsUid(int); @@ -28685,15 +28826,6 @@ package android.net.sip { package android.net.wifi { - public deprecated class BatchedScanResult implements android.os.Parcelable { - ctor public BatchedScanResult(); - ctor public BatchedScanResult(android.net.wifi.BatchedScanResult); - method public int describeContents(); - method public void writeToParcel(android.os.Parcel, int); - field public final java.util.List scanResults; - field public boolean truncated; - } - public class RttManager { method public void disableResponder(android.net.wifi.RttManager.ResponderCallback); method public void enableResponder(android.net.wifi.RttManager.ResponderCallback); @@ -28912,7 +29044,6 @@ package android.net.wifi { field public int level; field public java.lang.CharSequence operatorFriendlyName; field public long timestamp; - field public boolean untrusted; field public java.lang.CharSequence venueName; } @@ -29026,21 +29157,6 @@ package android.net.wifi { field public static final java.lang.String[] strings; } - public class WifiConnectionStatistics implements android.os.Parcelable { - ctor public WifiConnectionStatistics(); - ctor public WifiConnectionStatistics(android.net.wifi.WifiConnectionStatistics); - method public int describeContents(); - method public void incrementOrAddUntrusted(java.lang.String, int, int); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - field public int num24GhzConnected; - field public int num5GhzConnected; - field public int numAutoJoinAttempt; - field public int numAutoRoamAttempt; - field public int numWifiManagerJoinAttempt; - field public java.util.HashMap untrustedNetworkHistory; - } - public class WifiEnterpriseConfig implements android.os.Parcelable { ctor public WifiEnterpriseConfig(); ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig); @@ -29131,10 +29247,8 @@ package android.net.wifi { method public boolean disableNetwork(int); method public boolean disconnect(); method public boolean enableNetwork(int, boolean); - method public deprecated java.util.List getBatchedScanResults(); method public java.util.List getConfiguredNetworks(); method public android.net.wifi.WifiInfo getConnectionInfo(); - method public android.net.wifi.WifiConnectionStatistics getConnectionStatistics(); method public android.net.DhcpInfo getDhcpInfo(); method public java.util.List getPasspointConfigurations(); method public java.util.List getPrivilegedConfiguredNetworks(); @@ -29143,7 +29257,6 @@ package android.net.wifi { method public int getWifiApState(); method public int getWifiState(); method public boolean is5GHzBandSupported(); - method public deprecated boolean isBatchedScanSupported(); method public boolean isDeviceToApRttSupported(); method public boolean isDeviceToDeviceRttSupported(); method public boolean isEnhancedPowerReportingSupported(); @@ -29164,10 +29277,8 @@ package android.net.wifi { method public void setTdlsEnabled(java.net.InetAddress, boolean); method public void setTdlsEnabledWithMacAddress(java.lang.String, boolean); method public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration); - method public boolean setWifiApEnabled(android.net.wifi.WifiConfiguration, boolean); method public boolean setWifiEnabled(boolean); method public void startLocalOnlyHotspot(android.net.wifi.WifiManager.LocalOnlyHotspotCallback, android.os.Handler); - method public deprecated boolean startLocationRestrictedScan(android.os.WorkSource); method public boolean startScan(); method public boolean startScan(android.os.WorkSource); method public void startWps(android.net.wifi.WpsInfo, android.net.wifi.WifiManager.WpsCallback); @@ -29768,7 +29879,8 @@ package android.net.wifi.p2p { method public abstract void onSuccess(); } - public static class WifiP2pManager.Channel { + public static class WifiP2pManager.Channel implements java.lang.AutoCloseable { + method public void close(); } public static abstract interface WifiP2pManager.ChannelListener { @@ -33266,7 +33378,6 @@ package android.os { field public static final java.lang.String ID; field public static final java.lang.String MANUFACTURER; field public static final java.lang.String MODEL; - field public static final boolean PERMISSIONS_REVIEW_REQUIRED; field public static final java.lang.String PRODUCT; field public static final deprecated java.lang.String RADIO; field public static final deprecated java.lang.String SERIAL; @@ -33321,6 +33432,7 @@ package android.os { field public static final int N = 24; // 0x18 field public static final int N_MR1 = 25; // 0x19 field public static final int O = 26; // 0x1a + field public static final int O_MR1 = 27; // 0x1b } public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable { @@ -33386,6 +33498,7 @@ package android.os { method public void putStringArrayList(java.lang.String, java.util.ArrayList); method public void readFromParcel(android.os.Parcel); method public void setClassLoader(java.lang.ClassLoader); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.Bundle EMPTY; @@ -33628,6 +33741,7 @@ package android.os { public abstract class FileObserver { ctor public FileObserver(java.lang.String); ctor public FileObserver(java.lang.String, int); + method protected void finalize(); method public abstract void onEvent(int, java.lang.String); method public void startWatching(); method public void stopWatching(); @@ -33800,11 +33914,11 @@ package android.os { public class MemoryFile { ctor public MemoryFile(java.lang.String, int) throws java.io.IOException; - method public synchronized boolean allowPurging(boolean) throws java.io.IOException; + method public deprecated synchronized boolean allowPurging(boolean) throws java.io.IOException; method public void close(); method public java.io.InputStream getInputStream(); method public java.io.OutputStream getOutputStream(); - method public boolean isPurgingAllowed(); + method public deprecated boolean isPurgingAllowed(); method public int length(); method public int readBytes(byte[], int, int, int) throws java.io.IOException; method public void writeBytes(byte[], int, int, int) throws java.io.IOException; @@ -34101,6 +34215,7 @@ package android.os { method public int describeContents(); method public android.os.PersistableBundle getPersistableBundle(java.lang.String); method public void putPersistableBundle(java.lang.String, android.os.PersistableBundle); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.PersistableBundle EMPTY; @@ -34111,7 +34226,6 @@ package android.os { method public boolean isIgnoringBatteryOptimizations(java.lang.String); method public boolean isInteractive(); method public boolean isPowerSaveMode(); - method public boolean isScreenBrightnessBoosted(); method public deprecated boolean isScreenOn(); method public boolean isSustainedPerformanceModeSupported(); method public boolean isWakeLockLevelSupported(int); @@ -34121,7 +34235,6 @@ package android.os { field public static final int ACQUIRE_CAUSES_WAKEUP = 268435456; // 0x10000000 field public static final java.lang.String ACTION_DEVICE_IDLE_MODE_CHANGED = "android.os.action.DEVICE_IDLE_MODE_CHANGED"; field public static final java.lang.String ACTION_POWER_SAVE_MODE_CHANGED = "android.os.action.POWER_SAVE_MODE_CHANGED"; - field public static final java.lang.String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED"; field public static final deprecated int FULL_WAKE_LOCK = 26; // 0x1a field public static final int ON_AFTER_RELEASE = 536870912; // 0x20000000 field public static final int PARTIAL_WAKE_LOCK = 1; // 0x1 @@ -34257,6 +34370,20 @@ package android.os { field public static final android.os.Parcelable.Creator CREATOR; } + public final class SharedMemory implements java.io.Closeable android.os.Parcelable { + method public void close(); + method public static android.os.SharedMemory create(java.lang.String, int) throws android.system.ErrnoException; + method public int describeContents(); + method public int getSize(); + method public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException; + method public boolean setProtect(int); + method public static void unmap(java.nio.ByteBuffer); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public class StatFs { ctor public StatFs(java.lang.String); method public deprecated int getAvailableBlocks(); @@ -34389,6 +34516,7 @@ package android.os { method public void resetStatus(); method public void resume(); method public void suspend(); + method public boolean unbind(); } public static final class UpdateEngine.ErrorCodeConstants { @@ -34741,6 +34869,7 @@ package android.os.storage { method public android.os.storage.StorageVolume getStorageVolume(java.io.File); method public java.util.List getStorageVolumes(); method public java.util.UUID getUuidForPath(java.io.File) throws java.io.IOException; + method public boolean isAllocationSupported(java.io.FileDescriptor); method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException; method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException; method public boolean isEncrypted(java.io.File); @@ -38524,6 +38653,22 @@ package android.provider { field public static final java.lang.String TYPE = "type"; } + public final class TimeZoneRulesDataContract { + field public static final java.lang.String AUTHORITY = "com.android.timezone"; + } + + public static final class TimeZoneRulesDataContract.Operation { + field public static final java.lang.String COLUMN_DISTRO_MAJOR_VERSION = "distro_major_version"; + field public static final java.lang.String COLUMN_DISTRO_MINOR_VERSION = "distro_minor_version"; + field public static final java.lang.String COLUMN_REVISION = "revision"; + field public static final java.lang.String COLUMN_RULES_VERSION = "rules_version"; + field public static final java.lang.String COLUMN_TYPE = "type"; + field public static final android.net.Uri CONTENT_URI; + field public static final java.lang.String TYPE_INSTALL = "INSTALL"; + field public static final java.lang.String TYPE_NO_OP = "NOOP"; + field public static final java.lang.String TYPE_UNINSTALL = "UNINSTALL"; + } + public class UserDictionary { ctor public UserDictionary(); field public static final java.lang.String AUTHORITY = "user_dictionary"; @@ -38738,6 +38883,7 @@ package android.renderscript { method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type); + method public synchronized void resize(int); method public void setFace(android.renderscript.Type.CubemapFace); method public void setLOD(int); method public void setX(int); @@ -40009,6 +40155,30 @@ package android.service.autofill { field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } + public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CharSequenceTransformation.Builder { + ctor public CharSequenceTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation.Builder addField(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation build(); + } + + public final class CustomDescription implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CustomDescription.Builder { + ctor public CustomDescription.Builder(android.widget.RemoteViews); + method public android.service.autofill.CustomDescription.Builder addChild(int, android.service.autofill.Transformation); + method public android.service.autofill.CustomDescription build(); + } + public final class Dataset implements android.os.Parcelable { method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); @@ -40082,6 +40252,32 @@ package android.service.autofill { method public android.service.autofill.FillResponse.Builder setSaveInfo(android.service.autofill.SaveInfo); } + public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class ImageTransformation.Builder { + ctor public ImageTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation.Builder addOption(java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation build(); + } + + public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public LuhnChecksumValidator(android.view.autofill.AutofillId...); + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public RegexValidator(android.view.autofill.AutofillId, java.util.regex.Pattern); + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public final class SaveCallback { method public void onFailure(java.lang.CharSequence); method public void onSuccess(); @@ -40104,11 +40300,14 @@ package android.service.autofill { public static final class SaveInfo.Builder { ctor public SaveInfo.Builder(int, android.view.autofill.AutofillId[]); + ctor public SaveInfo.Builder(int); method public android.service.autofill.SaveInfo build(); + method public android.service.autofill.SaveInfo.Builder setCustomDescription(android.service.autofill.CustomDescription); method public android.service.autofill.SaveInfo.Builder setDescription(java.lang.CharSequence); method public android.service.autofill.SaveInfo.Builder setFlags(int); method public android.service.autofill.SaveInfo.Builder setNegativeAction(int, android.content.IntentSender); method public android.service.autofill.SaveInfo.Builder setOptionalIds(android.view.autofill.AutofillId[]); + method public android.service.autofill.SaveInfo.Builder setValidator(android.service.autofill.Validator); } public final class SaveRequest implements android.os.Parcelable { @@ -40119,6 +40318,17 @@ package android.service.autofill { field public static final android.os.Parcelable.Creator CREATOR; } + public abstract interface Transformation { + } + + public abstract interface Validator { + } + + public final class Validators { + method public static android.service.autofill.Validator and(android.service.autofill.Validator...); + method public static android.service.autofill.Validator or(android.service.autofill.Validator...); + } + } package android.service.carrier { @@ -40401,9 +40611,7 @@ package android.service.notification { method public final void cancelNotification(java.lang.String); method public final void cancelNotifications(java.lang.String[]); method public android.service.notification.StatusBarNotification[] getActiveNotifications(); - method public android.service.notification.StatusBarNotification[] getActiveNotifications(int); method public android.service.notification.StatusBarNotification[] getActiveNotifications(java.lang.String[]); - method public android.service.notification.StatusBarNotification[] getActiveNotifications(java.lang.String[], int); method public final int getCurrentInterruptionFilter(); method public final int getCurrentListenerHints(); method public android.service.notification.NotificationListenerService.RankingMap getCurrentRanking(); @@ -40423,16 +40631,12 @@ package android.service.notification { method public void onNotificationRemoved(android.service.notification.StatusBarNotification); method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap); method public void onNotificationRemoved(android.service.notification.StatusBarNotification, android.service.notification.NotificationListenerService.RankingMap, int); - method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException; method public final void requestInterruptionFilter(int); method public final void requestListenerHints(int); method public static void requestRebind(android.content.ComponentName); method public final void requestUnbind(); method public final void setNotificationsShown(java.lang.String[]); - method public final void setOnNotificationPostedTrim(int); - method public final void snoozeNotification(java.lang.String, java.lang.String); method public final void snoozeNotification(java.lang.String, long); - method public void unregisterAsSystemService() throws android.os.RemoteException; method public final void updateNotificationChannel(java.lang.String, android.os.UserHandle, android.app.NotificationChannel); field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4 field public static final int HINT_HOST_DISABLE_EFFECTS = 1; // 0x1 @@ -40467,21 +40671,17 @@ package android.service.notification { field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationListenerService"; field public static final int SUPPRESSED_EFFECT_SCREEN_OFF = 1; // 0x1 field public static final int SUPPRESSED_EFFECT_SCREEN_ON = 2; // 0x2 - field public static final int TRIM_FULL = 0; // 0x0 - field public static final int TRIM_LIGHT = 1; // 0x1 } public static class NotificationListenerService.Ranking { ctor public NotificationListenerService.Ranking(); method public boolean canShowBadge(); - method public java.util.List getAdditionalPeople(); method public android.app.NotificationChannel getChannel(); method public int getImportance(); method public java.lang.CharSequence getImportanceExplanation(); method public java.lang.String getKey(); method public java.lang.String getOverrideGroupKey(); method public int getRank(); - method public java.util.List getSnoozeCriteria(); method public int getSuppressedVisualEffects(); method public boolean isAmbient(); method public boolean matchesInterruptionFilter(); @@ -40895,8 +41095,10 @@ package android.service.wallpaper { method public android.view.SurfaceHolder getSurfaceHolder(); method public boolean isPreview(); method public boolean isVisible(); + method public void notifyColorsChanged(); method public void onApplyWindowInsets(android.view.WindowInsets); method public android.os.Bundle onCommand(java.lang.String, int, int, int, android.os.Bundle, boolean); + method public android.app.WallpaperColors onComputeColors(); method public void onCreate(android.view.SurfaceHolder); method public void onDesiredSizeChanged(int, int); method public void onDestroy(); @@ -42040,6 +42242,7 @@ package android.telecom { public static final class Call.RttCall { method public int getRttAudioMode(); method public java.lang.String read(); + method public java.lang.String readImmediately() throws java.io.IOException; method public void setRttMode(int); method public void write(java.lang.String) throws java.io.IOException; field public static final int RTT_MODE_FULL = 1; // 0x1 @@ -42954,6 +43157,7 @@ package android.telephony { field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string"; field public static final java.lang.String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string"; field public static final java.lang.String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string"; + field public static final java.lang.String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string"; field public static final java.lang.String KEY_CSP_ENABLED_BOOL = "csp_enabled_bool"; field public static final java.lang.String KEY_DATA_LIMIT_THRESHOLD_BYTES_LONG = "data_limit_threshold_bytes_long"; field public static final java.lang.String KEY_DATA_WARNING_THRESHOLD_BYTES_LONG = "data_warning_threshold_bytes_long"; @@ -42961,6 +43165,7 @@ package android.telephony { field public static final java.lang.String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string"; field public static final java.lang.String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array"; field public static final java.lang.String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool"; + field public static final java.lang.String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool"; field public static final java.lang.String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool"; field public static final java.lang.String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool"; field public static final java.lang.String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int"; @@ -43597,8 +43802,10 @@ package android.telephony { method public static int getDefaultSmsSubscriptionId(); method public static int getDefaultSubscriptionId(); method public static int getDefaultVoiceSubscriptionId(); + method public java.util.List getSubscriptionPlans(int); method public boolean isNetworkRoaming(int); method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener); + method public void setSubscriptionPlans(int, java.util.List); field public static final java.lang.String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED"; field public static final java.lang.String ACTION_DEFAULT_SUBSCRIPTION_CHANGED = "android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED"; field public static final int DATA_ROAMING_DISABLE = 0; // 0x0 @@ -43612,6 +43819,38 @@ package android.telephony { method public void onSubscriptionsChanged(); } + public final class SubscriptionPlan implements android.os.Parcelable { + method public java.util.Iterator> cycleIterator(); + method public int describeContents(); + method public int getDataLimitBehavior(); + method public long getDataLimitBytes(); + method public long getDataUsageBytes(); + method public long getDataUsageTime(); + method public java.lang.CharSequence getSummary(); + method public java.lang.CharSequence getTitle(); + method public void writeToParcel(android.os.Parcel, int); + field public static final long BYTES_UNKNOWN = -1L; // 0xffffffffffffffffL + field public static final long BYTES_UNLIMITED = 9223372036854775807L; // 0x7fffffffffffffffL + field public static final android.os.Parcelable.Creator CREATOR; + field public static final int LIMIT_BEHAVIOR_BILLED = 1; // 0x1 + field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0 + field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2 + field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff + field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL + } + + public static class SubscriptionPlan.Builder { + method public android.telephony.SubscriptionPlan build(); + method public static android.telephony.SubscriptionPlan.Builder createNonrecurring(java.time.ZonedDateTime, java.time.ZonedDateTime); + method public static android.telephony.SubscriptionPlan.Builder createRecurringDaily(java.time.ZonedDateTime); + method public static android.telephony.SubscriptionPlan.Builder createRecurringMonthly(java.time.ZonedDateTime); + method public static android.telephony.SubscriptionPlan.Builder createRecurringWeekly(java.time.ZonedDateTime); + method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int); + method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long); + method public android.telephony.SubscriptionPlan.Builder setSummary(java.lang.CharSequence); + method public android.telephony.SubscriptionPlan.Builder setTitle(java.lang.CharSequence); + } + public final class TelephonyHistogram implements android.os.Parcelable { ctor public TelephonyHistogram(int, int, int); ctor public TelephonyHistogram(android.telephony.TelephonyHistogram); @@ -43782,6 +44021,7 @@ package android.telephony { field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; + field public static final java.lang.String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE"; @@ -44020,6 +44260,7 @@ package android.telephony.gsm { public static deprecated class SmsMessage.SubmitPdu { ctor public deprecated SmsMessage.SubmitPdu(); + method public deprecated java.lang.String toString(); field public deprecated byte[] encodedMessage; field public deprecated byte[] encodedScAddress; } @@ -44308,6 +44549,7 @@ package android.test { method public java.util.List getTestCases(); method public java.lang.String getTestClassName(); method public junit.framework.TestResult getTestResult(); + method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException; method protected void runFailed(java.lang.String); method public void runTest(); method public void runTest(junit.framework.TestResult); @@ -44568,10 +44810,12 @@ package android.test.mock { ctor protected MockContentProvider(); ctor public MockContentProvider(android.content.Context); ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); + method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public java.lang.String getType(android.net.Uri); method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); method public boolean onCreate(); + method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle); method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String); method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]); } @@ -44831,6 +45075,8 @@ package android.test.mock { method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean hasSystemFeature(java.lang.String); method public boolean hasSystemFeature(java.lang.String, int); + method public int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public boolean isInstantApp(); method public boolean isInstantApp(java.lang.String); method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); @@ -44843,6 +45089,7 @@ package android.test.mock { method public java.util.List queryIntentContentProviders(android.content.Intent, int); method public java.util.List queryIntentServices(android.content.Intent, int); method public java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public void removePackageFromPreferred(java.lang.String); method public void removePermission(java.lang.String); @@ -44865,6 +45112,10 @@ package android.test.mock { public deprecated class MockResources extends android.content.res.Resources { ctor public MockResources(); + method public int getColor(int) throws android.content.res.Resources.NotFoundException; + method public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException; + method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException; + method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); } } @@ -45100,6 +45351,7 @@ package android.text { public static class InputFilter.AllCaps implements android.text.InputFilter { ctor public InputFilter.AllCaps(); + ctor public InputFilter.AllCaps(java.util.Locale); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); } @@ -46112,6 +46364,7 @@ package android.text.style { public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout { ctor public MetricAffectingSpan(); + method public android.text.style.MetricAffectingSpan getUnderlying(); method public abstract void updateMeasureState(android.text.TextPaint); } @@ -46792,14 +47045,28 @@ package android.transition { public class TransitionSet extends android.transition.Transition { ctor public TransitionSet(); ctor public TransitionSet(android.content.Context, android.util.AttributeSet); + method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet addTarget(android.view.View); + method public android.transition.TransitionSet addTarget(int); + method public android.transition.TransitionSet addTarget(java.lang.String); + method public android.transition.TransitionSet addTarget(java.lang.Class); method public android.transition.TransitionSet addTransition(android.transition.Transition); method public void captureEndValues(android.transition.TransitionValues); method public void captureStartValues(android.transition.TransitionValues); + method public android.transition.TransitionSet clone(); method public int getOrdering(); method public android.transition.Transition getTransitionAt(int); method public int getTransitionCount(); + method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet removeTarget(int); + method public android.transition.TransitionSet removeTarget(android.view.View); + method public android.transition.TransitionSet removeTarget(java.lang.Class); + method public android.transition.TransitionSet removeTarget(java.lang.String); method public android.transition.TransitionSet removeTransition(android.transition.Transition); + method public android.transition.TransitionSet setDuration(long); + method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator); method public android.transition.TransitionSet setOrdering(int); + method public android.transition.TransitionSet setStartDelay(long); field public static final int ORDERING_SEQUENTIAL = 1; // 0x1 field public static final int ORDERING_TOGETHER = 0; // 0x0 } @@ -46964,6 +47231,9 @@ package android.util { public class Base64InputStream extends java.io.FilterInputStream { ctor public Base64InputStream(java.io.InputStream, int); + method public int available(); + method public void mark(int); + method public void reset(); } public class Base64OutputStream extends java.io.FilterOutputStream { @@ -47933,9 +48203,13 @@ package android.view { field public static final int CONTEXT_CLICK = 6; // 0x6 field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2 field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1 + field public static final int KEYBOARD_PRESS = 3; // 0x3 + field public static final int KEYBOARD_RELEASE = 7; // 0x7 field public static final int KEYBOARD_TAP = 3; // 0x3 field public static final int LONG_PRESS = 0; // 0x0 + field public static final int TEXT_HANDLE_MOVE = 9; // 0x9 field public static final int VIRTUAL_KEY = 1; // 0x1 + field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8 } public class InflateException extends java.lang.RuntimeException { @@ -47964,6 +48238,7 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); + method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -49079,6 +49354,7 @@ package android.view { method public android.graphics.Canvas lockCanvas(); method public android.graphics.Canvas lockCanvas(android.graphics.Rect); method protected final void onDraw(android.graphics.Canvas); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setOpaque(boolean); method public void setSurfaceTexture(android.graphics.SurfaceTexture); method public void setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener); @@ -50102,6 +50378,7 @@ package android.view { method public int getLayoutMode(); method public android.animation.LayoutTransition getLayoutTransition(); method public int getNestedScrollAxes(); + method public android.view.ViewGroupOverlay getOverlay(); method public int getPersistentDrawingCache(); method public boolean getTouchscreenBlocksFocus(); method public int indexOfChild(android.view.View); @@ -50532,6 +50809,7 @@ package android.view { method public final boolean isActive(); method public abstract boolean isFloating(); method public abstract boolean isShortcutKey(int, android.view.KeyEvent); + method public boolean isWideColorGamut(); method public final void makeActive(); method protected abstract void onActive(); method public abstract void onConfigurationChanged(android.content.res.Configuration); @@ -50798,12 +51076,12 @@ package android.view { field public static final int FLAG_SCALED = 16384; // 0x4000 field public static final int FLAG_SECURE = 8192; // 0x2000 field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000 - field public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 + field public static final deprecated int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000 field public static final deprecated int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40 field public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000 field public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000 - field public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 + field public static final deprecated int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000 field public static final int FORMAT_CHANGED = 8; // 0x8 field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63 @@ -50957,6 +51235,7 @@ package android.view.accessibility { } public final class AccessibilityManager { + method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public void addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler); method public boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); @@ -50968,6 +51247,7 @@ package android.view.accessibility { method public static boolean isAccessibilityButtonSupported(); method public boolean isEnabled(); method public boolean isTouchExplorationEnabled(); + method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent); @@ -51284,6 +51564,13 @@ package android.view.accessibility { method public void setToIndex(int); } + public abstract class AccessibilityRequestPreparer { + ctor public AccessibilityRequestPreparer(android.view.View, int); + method public android.view.View getView(); + method public abstract void onPrepareExtraData(int, java.lang.String, android.os.Bundle, android.os.Message); + field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1 + } + public final class AccessibilityWindowInfo implements android.os.Parcelable { method public int describeContents(); method public android.view.accessibility.AccessibilityNodeInfo getAnchor(); @@ -51376,6 +51663,7 @@ package android.view.animation { ctor public Animation(android.content.Context, android.util.AttributeSet); method protected void applyTransformation(float, android.view.animation.Transformation); method public void cancel(); + method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException; method public long computeDurationHint(); method protected void ensureInterpolator(); method public int getBackgroundColor(); @@ -51447,6 +51735,7 @@ package android.view.animation { ctor public AnimationSet(android.content.Context, android.util.AttributeSet); ctor public AnimationSet(boolean); method public void addAnimation(android.view.animation.Animation); + method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException; method public java.util.List getAnimations(); } @@ -51651,6 +51940,8 @@ package android.view.autofill { method public void notifyViewEntered(android.view.View, int, android.graphics.Rect); method public void notifyViewExited(android.view.View); method public void notifyViewExited(android.view.View, int); + method public void notifyViewVisibilityChanged(android.view.View, boolean); + method public void notifyViewVisibilityChanged(android.view.View, int, boolean); method public void registerCallback(android.view.autofill.AutofillManager.AutofillCallback); method public void requestAutofill(android.view.View); method public void requestAutofill(android.view.View, int, android.graphics.Rect); @@ -52302,6 +52593,10 @@ package android.webkit { public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager { method public static android.webkit.CookieSyncManager createInstance(android.content.Context); method public static android.webkit.CookieSyncManager getInstance(); + method public deprecated void resetSync(); + method public deprecated void startSync(); + method public deprecated void stopSync(); + method public deprecated void sync(); method protected deprecated void syncFromRamToFlash(); field protected static final java.lang.String LOGTAG = "websync"; field protected android.webkit.WebViewDatabase mDataBase; @@ -52432,6 +52727,13 @@ package android.webkit { method public abstract int rendererPriorityAtExit(); } + public abstract class SafeBrowsingResponse { + ctor public SafeBrowsingResponse(); + method public abstract void backToSafety(boolean); + method public abstract void proceed(boolean); + method public abstract void showInterstitial(boolean); + } + public class ServiceWorkerClient { ctor public ServiceWorkerClient(); method public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest); @@ -52889,8 +53191,10 @@ package android.webkit { method public int getProgress(); method public boolean getRendererPriorityWaivedWhenNotVisible(); method public int getRendererRequestedPriority(); + method public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -52938,16 +53242,19 @@ package android.webkit { method public void setNetworkAvailable(boolean); method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); + method public static void setSafeBrowsingWhitelist(java.util.List, android.webkit.ValueCallback); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); + method public deprecated boolean shouldDelayChildPressedState(); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void startSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); method public boolean zoomOut(); - field public static final java.lang.String DATA_REDUCTION_PROXY_SETTING_CHANGED = "android.webkit.DATA_REDUCTION_PROXY_SETTING_CHANGED"; field public static final int RENDERER_PRIORITY_BOUND = 1; // 0x1 field public static final int RENDERER_PRIORITY_IMPORTANT = 2; // 0x2 field public static final int RENDERER_PRIORITY_WAIVED = 0; // 0x0 @@ -53036,6 +53343,7 @@ package android.webkit { method public void onReceivedLoginRequest(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String); method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError); method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail); + method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse); method public void onScaleChanged(android.webkit.WebView, float, float); method public deprecated void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message); method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent); @@ -53060,6 +53368,10 @@ package android.webkit { field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0 field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6 + field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1 + field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2 + field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0 + field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3 } public abstract class WebViewDatabase { @@ -53130,7 +53442,10 @@ package android.webkit { method public abstract java.lang.String findAddress(java.lang.String); method public abstract void freeMemoryForTests(); method public abstract java.lang.String getDefaultUserAgent(android.content.Context); + method public abstract android.net.Uri getSafeBrowsingPrivacyPolicyUrl(); + method public abstract void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public abstract android.net.Uri[] parseFileChooserResult(int, android.content.Intent); + method public abstract void setSafeBrowsingWhitelist(java.util.List, android.webkit.ValueCallback); method public abstract void setWebContentsDebuggingEnabled(boolean); } @@ -53336,6 +53651,7 @@ package android.widget { method public void clearTextFilter(); method public void deferNotifyDataSetChanged(); method public void fling(int); + method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCacheColorHint(); method public int getCheckedItemCount(); method public long[] getCheckedItemIds(); @@ -53502,6 +53818,9 @@ package android.widget { ctor public ActionMenuView(android.content.Context); ctor public ActionMenuView(android.content.Context, android.util.AttributeSet); method public void dismissPopupMenus(); + method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams(); + method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public android.view.Menu getMenu(); method public android.graphics.drawable.Drawable getOverflowIcon(); method public int getPopupTheme(); @@ -53677,7 +53996,6 @@ package android.widget { method public void addAll(T...); method public void clear(); method public static android.widget.ArrayAdapter createFromResource(android.content.Context, int, int); - method public java.lang.CharSequence[] getAutofillOptions(); method public android.content.Context getContext(); method public int getCount(); method public android.content.res.Resources.Theme getDropDownViewTheme(); @@ -53767,6 +54085,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } @@ -54045,6 +54364,7 @@ package android.widget { ctor public EditText(android.content.Context, android.util.AttributeSet, int); ctor public EditText(android.content.Context, android.util.AttributeSet, int, int); method public void extendSelection(int); + method public android.text.Editable getText(); method public void selectAll(); method public void setSelection(int, int); method public void setSelection(int); @@ -54166,6 +54486,8 @@ package android.widget { ctor public FrameLayout(android.content.Context, android.util.AttributeSet); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public deprecated boolean getConsiderGoneChildrenWhenMeasuring(); method public boolean getMeasureAllChildren(); method protected void onLayout(boolean, int, int, int, int); @@ -54212,6 +54534,9 @@ package android.widget { ctor public GridLayout(android.content.Context, android.util.AttributeSet); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getAlignmentMode(); method public int getColumnCount(); method public int getOrientation(); @@ -54424,6 +54749,9 @@ package android.widget { ctor public LinearLayout(android.content.Context, android.util.AttributeSet); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getBaselineAlignedChildIndex(); method public android.graphics.drawable.Drawable getDividerDrawable(); method public int getDividerPadding(); @@ -54810,6 +55138,8 @@ package android.widget { method public final synchronized void incrementSecondaryProgressBy(int); method public boolean isAnimating(); method public synchronized boolean isIndeterminate(); + method protected synchronized void onDraw(android.graphics.Canvas); + method protected synchronized void onMeasure(int, int); method public void onRestoreInstanceState(android.os.Parcelable); method public android.os.Parcelable onSaveInstanceState(); method public synchronized void setIndeterminate(boolean); @@ -54865,6 +55195,7 @@ package android.widget { ctor public RadioGroup(android.content.Context, android.util.AttributeSet); method public void check(int); method public void clearCheck(); + method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCheckedRadioButtonId(); method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener); } @@ -54907,6 +55238,7 @@ package android.widget { ctor public RelativeLayout(android.content.Context, android.util.AttributeSet); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int); + method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getGravity(); method protected void onLayout(boolean, int, int, int, int); method public void setGravity(int); @@ -55450,6 +55782,7 @@ package android.widget { public class TableLayout extends android.widget.LinearLayout { ctor public TableLayout(android.content.Context); ctor public TableLayout(android.content.Context, android.util.AttributeSet); + method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public boolean isColumnCollapsed(int); method public boolean isColumnShrinkable(int); method public boolean isColumnStretchable(int); @@ -55474,6 +55807,7 @@ package android.widget { public class TableRow extends android.widget.LinearLayout { ctor public TableRow(android.content.Context); ctor public TableRow(android.content.Context, android.util.AttributeSet); + method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet); method public android.view.View getVirtualChildAt(int); method public int getVirtualChildCount(); } @@ -55815,6 +56149,7 @@ package android.widget { ctor public ToggleButton(android.content.Context); method public java.lang.CharSequence getTextOff(); method public java.lang.CharSequence getTextOn(); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setTextOff(java.lang.CharSequence); method public void setTextOn(java.lang.CharSequence); } @@ -55826,6 +56161,9 @@ package android.widget { ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int); method public void collapseActionView(); method public void dismissPopupMenus(); + method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams(); + method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getContentInsetEnd(); method public int getContentInsetEndWithActions(); method public int getContentInsetLeft(); @@ -56349,6 +56687,13 @@ package dalvik.system { public class BaseDexClassLoader extends java.lang.ClassLoader { ctor public BaseDexClassLoader(java.lang.String, java.io.File, java.lang.String, java.lang.ClassLoader); method public java.lang.String findLibrary(java.lang.String); + method protected java.util.Enumeration findResources(java.lang.String); + method protected synchronized java.lang.Package getPackage(java.lang.String); + } + + public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader { + ctor public DelegateLastClassLoader(java.lang.String, java.lang.ClassLoader); + ctor public DelegateLastClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader); } public class DexClassLoader extends dalvik.system.BaseDexClassLoader { @@ -56571,6 +56916,10 @@ package java.io { public class BufferedInputStream extends java.io.FilterInputStream { ctor public BufferedInputStream(java.io.InputStream); ctor public BufferedInputStream(java.io.InputStream, int); + method public synchronized int available() throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; + method public synchronized long skip(long) throws java.io.IOException; field protected volatile byte[] buf; field protected int count; field protected int marklimit; @@ -56581,6 +56930,9 @@ package java.io { public class BufferedOutputStream extends java.io.FilterOutputStream { ctor public BufferedOutputStream(java.io.OutputStream); ctor public BufferedOutputStream(java.io.OutputStream, int); + method public synchronized void flush() throws java.io.IOException; + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected byte[] buf; field protected int count; } @@ -56606,7 +56958,12 @@ package java.io { public class ByteArrayInputStream extends java.io.InputStream { ctor public ByteArrayInputStream(byte[]); ctor public ByteArrayInputStream(byte[], int, int); + method public synchronized int available(); + method public void mark(int); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected byte[] buf; field protected int count; field protected int mark; @@ -56619,9 +56976,11 @@ package java.io { method public synchronized void reset(); method public synchronized int size(); method public synchronized byte[] toByteArray(); + method public synchronized java.lang.String toString(); method public synchronized java.lang.String toString(java.lang.String) throws java.io.UnsupportedEncodingException; method public deprecated synchronized java.lang.String toString(int); method public synchronized void write(int); + method public synchronized void write(byte[], int, int); method public synchronized void writeTo(java.io.OutputStream) throws java.io.IOException; field protected byte[] buf; field protected int count; @@ -56641,12 +57000,17 @@ package java.io { public class CharArrayWriter extends java.io.Writer { ctor public CharArrayWriter(); ctor public CharArrayWriter(int); + method public java.io.CharArrayWriter append(java.lang.CharSequence); + method public java.io.CharArrayWriter append(java.lang.CharSequence, int, int); + method public java.io.CharArrayWriter append(char); method public void close(); method public void flush(); method public void reset(); method public int size(); method public char[] toCharArray(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String, int, int); method public void writeTo(java.io.Writer) throws java.io.IOException; field protected char[] buf; field protected int count; @@ -56733,6 +57097,8 @@ package java.io { public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput { ctor public DataOutputStream(java.io.OutputStream); method public final int size(); + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; method public final void writeBoolean(boolean) throws java.io.IOException; method public final void writeByte(int) throws java.io.IOException; method public final void writeBytes(java.lang.String) throws java.io.IOException; @@ -56832,6 +57198,7 @@ package java.io { ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public int read() throws java.io.IOException; @@ -56848,6 +57215,7 @@ package java.io { ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public void write(int) throws java.io.IOException; @@ -56961,6 +57329,8 @@ package java.io { public deprecated class LineNumberInputStream extends java.io.FilterInputStream { ctor public LineNumberInputStream(java.io.InputStream); method public int getLineNumber(); + method public void mark(int); + method public void reset() throws java.io.IOException; method public void setLineNumber(int); } @@ -57190,8 +57560,10 @@ package java.io { ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException; ctor public PipedInputStream(); ctor public PipedInputStream(int); + method public synchronized int available() throws java.io.IOException; method public void connect(java.io.PipedOutputStream) throws java.io.IOException; method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; method protected synchronized void receive(int) throws java.io.IOException; field protected static final int PIPE_SIZE = 1024; // 0x400 field protected byte[] buffer; @@ -57203,6 +57575,7 @@ package java.io { ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException; ctor public PipedOutputStream(); method public synchronized void connect(java.io.PipedInputStream) throws java.io.IOException; + method public synchronized void flush() throws java.io.IOException; method public void write(int) throws java.io.IOException; } @@ -57213,7 +57586,9 @@ package java.io { ctor public PipedReader(int); method public void close() throws java.io.IOException; method public void connect(java.io.PipedWriter) throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; method public synchronized int read(char[], int, int) throws java.io.IOException; + method public synchronized boolean ready() throws java.io.IOException; } public class PipedWriter extends java.io.Writer { @@ -57238,6 +57613,8 @@ package java.io { method public java.io.PrintStream append(char); method public boolean checkError(); method protected void clearError(); + method public void close(); + method public void flush(); method public java.io.PrintStream format(java.lang.String, java.lang.Object...); method public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object...); method public void print(boolean); @@ -57262,6 +57639,8 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); + method public void write(byte[], int, int); } public class PrintWriter extends java.io.Writer { @@ -57273,6 +57652,9 @@ package java.io { ctor public PrintWriter(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; ctor public PrintWriter(java.io.File) throws java.io.FileNotFoundException; ctor public PrintWriter(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; + method public java.io.PrintWriter append(java.lang.CharSequence); + method public java.io.PrintWriter append(java.lang.CharSequence, int, int); + method public java.io.PrintWriter append(char); method public boolean checkError(); method protected void clearError(); method public void close(); @@ -57301,13 +57683,18 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); method public void write(char[], int, int); + method public void write(char[]); + method public void write(java.lang.String, int, int); + method public void write(java.lang.String); field protected java.io.Writer out; } public class PushbackInputStream extends java.io.FilterInputStream { ctor public PushbackInputStream(java.io.InputStream, int); ctor public PushbackInputStream(java.io.InputStream); + method public synchronized void close() throws java.io.IOException; method public void unread(int) throws java.io.IOException; method public void unread(byte[], int, int) throws java.io.IOException; method public void unread(byte[]) throws java.io.IOException; @@ -57431,7 +57818,11 @@ package java.io { public deprecated class StringBufferInputStream extends java.io.InputStream { ctor public StringBufferInputStream(java.lang.String); + method public synchronized int available(); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected java.lang.String buffer; field protected int count; field protected int pos; @@ -57446,10 +57837,16 @@ package java.io { public class StringWriter extends java.io.Writer { ctor public StringWriter(); ctor public StringWriter(int); + method public java.io.StringWriter append(java.lang.CharSequence); + method public java.io.StringWriter append(java.lang.CharSequence, int, int); + method public java.io.StringWriter append(char); method public void close() throws java.io.IOException; method public void flush(); method public java.lang.StringBuffer getBuffer(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String); + method public void write(java.lang.String, int, int); } public class SyncFailedException extends java.io.IOException { @@ -57464,6 +57861,7 @@ package java.io { public class UncheckedIOException extends java.lang.RuntimeException { ctor public UncheckedIOException(java.lang.String, java.io.IOException); ctor public UncheckedIOException(java.io.IOException); + method public java.io.IOException getCause(); } public class UnsupportedEncodingException extends java.io.IOException { @@ -57473,6 +57871,7 @@ package java.io { public class WriteAbortedException extends java.io.ObjectStreamException { ctor public WriteAbortedException(java.lang.String, java.lang.Exception); + method public java.lang.Throwable getCause(); field public java.lang.Exception detail; } @@ -58240,6 +58639,7 @@ package java.lang { ctor public ClassNotFoundException(); ctor public ClassNotFoundException(java.lang.String); ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -58344,6 +58744,7 @@ package java.lang { ctor public ExceptionInInitializerError(); ctor public ExceptionInInitializerError(java.lang.Throwable); ctor public ExceptionInInitializerError(java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -59131,8 +59532,16 @@ package java.lang { method public synchronized java.lang.StringBuffer append(float); method public synchronized java.lang.StringBuffer append(double); method public synchronized java.lang.StringBuffer appendCodePoint(int); + method public synchronized int capacity(); + method public synchronized char charAt(int); + method public synchronized int codePointAt(int); + method public synchronized int codePointBefore(int); + method public synchronized int codePointCount(int, int); method public synchronized java.lang.StringBuffer delete(int, int); method public synchronized java.lang.StringBuffer deleteCharAt(int); + method public synchronized void ensureCapacity(int); + method public synchronized void getChars(int, int, char[], int); + method public synchronized int indexOf(java.lang.String, int); method public synchronized java.lang.StringBuffer insert(int, char[], int, int); method public synchronized java.lang.StringBuffer insert(int, java.lang.Object); method public synchronized java.lang.StringBuffer insert(int, java.lang.String); @@ -59145,9 +59554,18 @@ package java.lang { method public java.lang.StringBuffer insert(int, long); method public java.lang.StringBuffer insert(int, float); method public java.lang.StringBuffer insert(int, double); + method public synchronized int lastIndexOf(java.lang.String, int); + method public synchronized int length(); + method public synchronized int offsetByCodePoints(int, int); method public synchronized java.lang.StringBuffer replace(int, int, java.lang.String); method public synchronized java.lang.StringBuffer reverse(); + method public synchronized void setCharAt(int, char); + method public synchronized void setLength(int); + method public synchronized java.lang.CharSequence subSequence(int, int); + method public synchronized java.lang.String substring(int); + method public synchronized java.lang.String substring(int, int); method public synchronized java.lang.String toString(); + method public synchronized void trimToSize(); } public final class StringBuilder extends java.lang.AbstractStringBuilder implements java.lang.CharSequence java.io.Serializable { @@ -59802,6 +60220,7 @@ package java.lang.reflect { ctor protected InvocationTargetException(); ctor public InvocationTargetException(java.lang.Throwable); ctor public InvocationTargetException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getTargetException(); } @@ -59917,6 +60336,7 @@ package java.lang.reflect { public class UndeclaredThrowableException extends java.lang.RuntimeException { ctor public UndeclaredThrowableException(java.lang.Throwable); ctor public UndeclaredThrowableException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getUndeclaredThrowable(); } @@ -60814,6 +61234,7 @@ package java.net { method public java.lang.String getQuery(); method public java.lang.String getRef(); method public java.lang.String getUserInfo(); + method public synchronized int hashCode(); method public java.net.URLConnection openConnection() throws java.io.IOException; method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException; method public final java.io.InputStream openStream() throws java.io.IOException; @@ -61043,7 +61464,6 @@ package java.nio { method public final int arrayOffset(); method public abstract java.nio.CharBuffer asReadOnlyBuffer(); method public final char charAt(int); - method public java.util.stream.IntStream chars(); method public abstract java.nio.CharBuffer compact(); method public int compareTo(java.nio.CharBuffer); method public abstract java.nio.CharBuffer duplicate(); @@ -61900,6 +62320,7 @@ package java.nio.file { public final class DirectoryIteratorException extends java.util.ConcurrentModificationException { ctor public DirectoryIteratorException(java.io.IOException); + method public java.io.IOException getCause(); } public class DirectoryNotEmptyException extends java.nio.file.FileSystemException { @@ -62865,9 +63286,11 @@ package java.security { public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter { ctor public KeyStore.PasswordProtection(char[]); ctor public KeyStore.PasswordProtection(char[], java.lang.String, java.security.spec.AlgorithmParameterSpec); + method public synchronized void destroy() throws javax.security.auth.DestroyFailedException; method public synchronized char[] getPassword(); method public java.lang.String getProtectionAlgorithm(); method public java.security.spec.AlgorithmParameterSpec getProtectionParameters(); + method public synchronized boolean isDestroyed(); } public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry { @@ -63047,6 +63470,7 @@ package java.security { public class PrivilegedActionException extends java.lang.Exception { ctor public PrivilegedActionException(java.lang.Exception); + method public java.lang.Throwable getCause(); method public java.lang.Exception getException(); } @@ -63069,22 +63493,30 @@ package java.security { method public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function); method public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction); + method public java.util.Enumeration elements(); + method public synchronized java.util.Set> entrySet(); method public synchronized void forEach(java.util.function.BiConsumer); + method public java.lang.Object get(java.lang.Object); method public java.lang.String getInfo(); method public java.lang.String getName(); method public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object); method public synchronized java.security.Provider.Service getService(java.lang.String, java.lang.String); method public synchronized java.util.Set getServices(); method public double getVersion(); + method public java.util.Set keySet(); + method public java.util.Enumeration keys(); method public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object put(java.lang.Object, java.lang.Object); method public synchronized void putAll(java.util.Map); method public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object); method protected synchronized void putService(java.security.Provider.Service); + method public synchronized java.lang.Object remove(java.lang.Object); method protected synchronized void removeService(java.security.Provider.Service); method public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object); method public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object); method public synchronized void replaceAll(java.util.function.BiFunction); + method public java.lang.String toString(); + method public java.util.Collection values(); } public static class Provider.Service { @@ -63130,7 +63562,9 @@ package java.security { method public final java.security.Provider getProvider(); method public static byte[] getSeed(int); method protected final int next(int); + method public synchronized void nextBytes(byte[]); method public synchronized void setSeed(byte[]); + method public void setSeed(long); } public abstract class SecureRandomSpi implements java.io.Serializable { @@ -63677,6 +64111,7 @@ package java.security.cert { public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker { ctor protected PKIXRevocationChecker(); + method public java.security.cert.PKIXRevocationChecker clone(); method public java.util.List getOcspExtensions(); method public java.net.URI getOcspResponder(); method public java.security.cert.X509Certificate getOcspResponderCert(); @@ -65929,7 +66364,6 @@ package java.time { public final class DayOfWeek extends java.lang.Enum implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -65937,8 +66371,6 @@ package java.time { method public java.time.DayOfWeek minus(long); method public static java.time.DayOfWeek of(int); method public java.time.DayOfWeek plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.DayOfWeek valueOf(java.lang.String); method public static final java.time.DayOfWeek[] values(); enum_constant public static final java.time.DayOfWeek FRIDAY; @@ -66014,6 +66446,8 @@ package java.time { method public boolean isBefore(java.time.Instant); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.Instant minus(java.time.temporal.TemporalAmount); + method public java.time.Instant minus(long, java.time.temporal.TemporalUnit); method public java.time.Instant minusMillis(long); method public java.time.Instant minusNanos(long); method public java.time.Instant minusSeconds(long); @@ -66023,6 +66457,7 @@ package java.time { method public static java.time.Instant ofEpochSecond(long); method public static java.time.Instant ofEpochSecond(long, long); method public static java.time.Instant parse(java.lang.CharSequence); + method public java.time.Instant plus(java.time.temporal.TemporalAmount); method public java.time.Instant plus(long, java.time.temporal.TemporalUnit); method public java.time.Instant plusMillis(long); method public java.time.Instant plusNanos(long); @@ -66030,6 +66465,7 @@ package java.time { method public long toEpochMilli(); method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Instant with(java.time.temporal.TemporalAdjuster); method public java.time.Instant with(java.time.temporal.TemporalField, long); field public static final java.time.Instant EPOCH; field public static final java.time.Instant MAX; @@ -66039,6 +66475,7 @@ package java.time { public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { method public java.time.LocalDateTime atStartOfDay(); method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId); + method public java.time.LocalDateTime atTime(java.time.LocalTime); method public java.time.LocalDateTime atTime(int, int); method public java.time.LocalDateTime atTime(int, int, int); method public java.time.LocalDateTime atTime(int, int, int, int); @@ -66053,6 +66490,8 @@ package java.time { method public int getMonthValue(); method public int getYear(); method public int lengthOfMonth(); + method public java.time.LocalDate minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate minusDays(long); method public java.time.LocalDate minusMonths(long); method public java.time.LocalDate minusWeeks(long); @@ -66066,12 +66505,16 @@ package java.time { method public static java.time.LocalDate ofYearDay(int, int); method public static java.time.LocalDate parse(java.lang.CharSequence); method public static java.time.LocalDate parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDate plus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate plusDays(long); method public java.time.LocalDate plusMonths(long); method public java.time.LocalDate plusWeeks(long); method public java.time.LocalDate plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public java.time.Period until(java.time.chrono.ChronoLocalDate); + method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster); + method public java.time.LocalDate with(java.time.temporal.TemporalField, long); method public java.time.LocalDate withDayOfMonth(int); method public java.time.LocalDate withDayOfYear(int); method public java.time.LocalDate withMonth(int); @@ -66096,6 +66539,8 @@ package java.time { method public int getSecond(); method public int getYear(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime minusDays(long); method public java.time.LocalDateTime minusHours(long); method public java.time.LocalDateTime minusMinutes(long); @@ -66118,6 +66563,7 @@ package java.time { method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.LocalDateTime parse(java.lang.CharSequence); method public static java.time.LocalDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime plusDays(long); method public java.time.LocalDateTime plusHours(long); @@ -66131,6 +66577,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long); method public java.time.LocalDateTime withDayOfMonth(int); method public java.time.LocalDateTime withDayOfYear(int); @@ -66160,6 +66607,8 @@ package java.time { method public boolean isBefore(java.time.LocalTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.LocalTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime minusHours(long); method public java.time.LocalTime minusMinutes(long); method public java.time.LocalTime minusNanos(long); @@ -66174,6 +66623,7 @@ package java.time { method public static java.time.LocalTime ofSecondOfDay(long); method public static java.time.LocalTime parse(java.lang.CharSequence); method public static java.time.LocalTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime plusHours(long); method public java.time.LocalTime plusMinutes(long); @@ -66183,6 +66633,7 @@ package java.time { method public int toSecondOfDay(); method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalTime with(java.time.temporal.TemporalField, long); method public java.time.LocalTime withHour(int); method public java.time.LocalTime withMinute(int); @@ -66199,7 +66650,6 @@ package java.time { method public int firstDayOfYear(boolean); method public java.time.Month firstMonthOfQuarter(); method public static java.time.Month from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -66210,8 +66660,6 @@ package java.time { method public java.time.Month minus(long); method public static java.time.Month of(int); method public java.time.Month plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.Month valueOf(java.lang.String); method public static final java.time.Month[] values(); enum_constant public static final java.time.Month APRIL; @@ -66278,6 +66726,8 @@ package java.time { method public boolean isEqual(java.time.OffsetDateTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime minusDays(long); method public java.time.OffsetDateTime minusHours(long); method public java.time.OffsetDateTime minusMinutes(long); @@ -66295,6 +66745,7 @@ package java.time { method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetDateTime parse(java.lang.CharSequence); method public static java.time.OffsetDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime plusDays(long); method public java.time.OffsetDateTime plusHours(long); @@ -66314,6 +66765,7 @@ package java.time { method public java.time.ZonedDateTime toZonedDateTime(); method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetDateTime withDayOfMonth(int); method public java.time.OffsetDateTime withDayOfYear(int); @@ -66346,6 +66798,8 @@ package java.time { method public boolean isEqual(java.time.OffsetTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime minusHours(long); method public java.time.OffsetTime minusMinutes(long); method public java.time.OffsetTime minusNanos(long); @@ -66358,6 +66812,7 @@ package java.time { method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetTime parse(java.lang.CharSequence); method public static java.time.OffsetTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime plusHours(long); method public java.time.OffsetTime plusMinutes(long); @@ -66366,6 +66821,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetTime withHour(int); method public java.time.OffsetTime withMinute(int); @@ -66392,6 +66848,7 @@ package java.time { method public java.time.Period minusMonths(long); method public java.time.Period minusYears(long); method public java.time.Period multipliedBy(int); + method public java.time.Period negated(); method public java.time.Period normalized(); method public static java.time.Period of(int, int, int); method public static java.time.Period ofDays(int); @@ -66430,6 +66887,8 @@ package java.time { method public boolean isSupported(java.time.temporal.TemporalUnit); method public boolean isValidMonthDay(java.time.MonthDay); method public int length(); + method public java.time.Year minus(java.time.temporal.TemporalAmount); + method public java.time.Year minus(long, java.time.temporal.TemporalUnit); method public java.time.Year minusYears(long); method public static java.time.Year now(); method public static java.time.Year now(java.time.ZoneId); @@ -66437,9 +66896,11 @@ package java.time { method public static java.time.Year of(int); method public static java.time.Year parse(java.lang.CharSequence); method public static java.time.Year parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.Year plus(java.time.temporal.TemporalAmount); method public java.time.Year plus(long, java.time.temporal.TemporalUnit); method public java.time.Year plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Year with(java.time.temporal.TemporalAdjuster); method public java.time.Year with(java.time.temporal.TemporalField, long); field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff field public static final int MIN_VALUE = -999999999; // 0xc4653601 @@ -66464,6 +66925,8 @@ package java.time { method public boolean isValidDay(int); method public int lengthOfMonth(); method public int lengthOfYear(); + method public java.time.YearMonth minus(java.time.temporal.TemporalAmount); + method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth minusMonths(long); method public java.time.YearMonth minusYears(long); method public static java.time.YearMonth now(); @@ -66473,10 +66936,12 @@ package java.time { method public static java.time.YearMonth of(int, int); method public static java.time.YearMonth parse(java.lang.CharSequence); method public static java.time.YearMonth parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.YearMonth plus(java.time.temporal.TemporalAmount); method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth plusMonths(long); method public java.time.YearMonth plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster); method public java.time.YearMonth with(java.time.temporal.TemporalField, long); method public java.time.YearMonth withMonth(int); method public java.time.YearMonth withYear(int); @@ -66500,7 +66965,6 @@ package java.time { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public int compareTo(java.time.ZoneOffset); method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getId(); method public long getLong(java.time.temporal.TemporalField); method public java.time.zone.ZoneRules getRules(); @@ -66511,8 +66975,6 @@ package java.time { method public static java.time.ZoneOffset ofHoursMinutes(int, int); method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int); method public static java.time.ZoneOffset ofTotalSeconds(int); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); field public static final java.time.ZoneOffset MAX; field public static final java.time.ZoneOffset MIN; field public static final java.time.ZoneOffset UTC; @@ -66533,6 +66995,8 @@ package java.time { method public int getYear(); method public java.time.ZoneId getZone(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime minusDays(long); method public java.time.ZonedDateTime minusHours(long); method public java.time.ZonedDateTime minusMinutes(long); @@ -66553,6 +67017,7 @@ package java.time { method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId); method public static java.time.ZonedDateTime parse(java.lang.CharSequence); method public static java.time.ZonedDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount); method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime plusDays(long); method public java.time.ZonedDateTime plusHours(long); @@ -66562,10 +67027,12 @@ package java.time { method public java.time.ZonedDateTime plusSeconds(long); method public java.time.ZonedDateTime plusWeeks(long); method public java.time.ZonedDateTime plusYears(long); + method public java.time.LocalDate toLocalDate(); method public java.time.LocalDateTime toLocalDateTime(); method public java.time.OffsetDateTime toOffsetDateTime(); method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long); method public java.time.ZonedDateTime withDayOfMonth(int); method public java.time.ZonedDateTime withDayOfYear(int); @@ -66610,17 +67077,27 @@ package java.time.chrono { method public default boolean isSupported(java.time.temporal.TemporalUnit); method public abstract int lengthOfMonth(); method public default int lengthOfYear(); + method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount); method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator timeLineOrder(); method public default long toEpochDay(); method public abstract java.lang.String toString(); method public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public abstract java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster); method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long); } abstract class ChronoLocalDateImpl implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { + method public D minus(java.time.temporal.TemporalAmount); + method public D minus(long, java.time.temporal.TemporalUnit); + method public D plus(java.time.temporal.TemporalAmount); + method public D plus(long, java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public D with(java.time.temporal.TemporalAdjuster); + method public D with(java.time.temporal.TemporalField, long); } public abstract interface ChronoLocalDateTime implements java.lang.Comparable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { @@ -66637,6 +67114,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoLocalDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(java.time.ZoneOffset); @@ -66644,6 +67124,7 @@ package java.time.chrono { method public abstract D toLocalDate(); method public abstract java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalField, long); } @@ -66681,6 +67162,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoZonedDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(); @@ -66689,6 +67173,7 @@ package java.time.chrono { method public abstract java.time.chrono.ChronoLocalDateTime toLocalDateTime(); method public default java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalField, long); method public abstract java.time.chrono.ChronoZonedDateTime withEarlierOffsetAtOverlap(); method public abstract java.time.chrono.ChronoZonedDateTime withLaterOffsetAtOverlap(); @@ -66755,6 +67240,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.HijrahDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.HijrahChronology INSTANCE; @@ -66766,23 +67252,24 @@ package java.time.chrono { method public java.time.chrono.HijrahChronology getChronology(); method public java.time.chrono.HijrahEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isLeapYear(); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.HijrahDate now(); method public static java.time.chrono.HijrahDate now(java.time.ZoneId); method public static java.time.chrono.HijrahDate now(java.time.Clock); method public static java.time.chrono.HijrahDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster); method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology); } public final class HijrahEra extends java.lang.Enum implements java.time.chrono.Era { method public int getValue(); method public static java.time.chrono.HijrahEra of(int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.chrono.HijrahEra valueOf(java.lang.String); method public static final java.time.chrono.HijrahEra[] values(); enum_constant public static final java.time.chrono.HijrahEra AH; @@ -66807,6 +67294,7 @@ package java.time.chrono { method public java.time.Period period(int, int, int); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.LocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.IsoChronology INSTANCE; @@ -66839,6 +67327,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.JapaneseDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.JapaneseChronology INSTANCE; @@ -66850,17 +67339,19 @@ package java.time.chrono { method public java.time.chrono.JapaneseChronology getChronology(); method public java.time.chrono.JapaneseEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isSupported(java.time.temporal.TemporalField); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.JapaneseDate now(); method public static java.time.chrono.JapaneseDate now(java.time.ZoneId); method public static java.time.chrono.JapaneseDate now(java.time.Clock); method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int); method public static java.time.chrono.JapaneseDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster); } public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable { @@ -66892,6 +67383,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.MinguoDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.MinguoChronology INSTANCE; @@ -66904,13 +67396,17 @@ package java.time.chrono { method public java.time.chrono.MinguoEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.MinguoDate now(); method public static java.time.chrono.MinguoDate now(java.time.ZoneId); method public static java.time.chrono.MinguoDate now(java.time.Clock); method public static java.time.chrono.MinguoDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster); } public final class MinguoEra extends java.lang.Enum implements java.time.chrono.Era { @@ -66940,6 +67436,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE; @@ -66952,13 +67449,17 @@ package java.time.chrono { method public java.time.chrono.ThaiBuddhistEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.ThaiBuddhistDate now(); method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId); method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock); method public static java.time.chrono.ThaiBuddhistDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster); } public final class ThaiBuddhistEra extends java.lang.Enum implements java.time.chrono.Era { @@ -67137,7 +67638,6 @@ package java.time.temporal { method public int checkValidIntValue(long); method public long checkValidValue(long); method public java.time.temporal.TemporalUnit getBaseUnit(); - method public java.lang.String getDisplayName(java.util.Locale); method public long getFrom(java.time.temporal.TemporalAccessor); method public java.time.temporal.TemporalUnit getRangeUnit(); method public boolean isDateBased(); @@ -67185,7 +67685,6 @@ package java.time.temporal { method public java.time.Duration getDuration(); method public boolean isDateBased(); method public boolean isDurationEstimated(); - method public boolean isSupportedBy(java.time.temporal.Temporal); method public boolean isTimeBased(); method public static java.time.temporal.ChronoUnit valueOf(java.lang.String); method public static final java.time.temporal.ChronoUnit[] values(); @@ -67525,7 +68024,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ArrayList extends java.util.AbstractList implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable { @@ -67536,11 +68034,7 @@ package java.util { method public void ensureCapacity(int); method public void forEach(java.util.function.Consumer); method public E get(int); - method public boolean removeIf(java.util.function.Predicate); - method public void replaceAll(java.util.function.UnaryOperator); method public int size(); - method public void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); method public void trimToSize(); } @@ -67911,6 +68405,7 @@ package java.util { method public default boolean removeIf(java.util.function.Predicate); method public abstract boolean retainAll(java.util.Collection); method public abstract int size(); + method public default java.util.Spliterator spliterator(); method public default java.util.stream.Stream stream(); method public abstract java.lang.Object[] toArray(); method public abstract T[] toArray(T[]); @@ -68251,18 +68746,7 @@ package java.util { ctor public HashMap(); ctor public HashMap(java.util.Map); method public java.lang.Object clone(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); - method public V merge(K, V, java.util.function.BiFunction); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); } public class HashSet extends java.util.AbstractSet implements java.lang.Cloneable java.io.Serializable java.util.Set { @@ -68273,7 +68757,6 @@ package java.util { method public java.lang.Object clone(); method public java.util.Iterator iterator(); method public int size(); - method public java.util.Spliterator spliterator(); } public class Hashtable extends java.util.Dictionary implements java.lang.Cloneable java.util.Map java.io.Serializable { @@ -68291,9 +68774,11 @@ package java.util { method public boolean containsValue(java.lang.Object); method public synchronized java.util.Enumeration elements(); method public java.util.Set> entrySet(); + method public synchronized boolean equals(java.lang.Object); method public synchronized void forEach(java.util.function.BiConsumer); method public synchronized V get(java.lang.Object); method public synchronized V getOrDefault(java.lang.Object, V); + method public synchronized int hashCode(); method public synchronized boolean isEmpty(); method public java.util.Set keySet(); method public synchronized java.util.Enumeration keys(); @@ -68308,6 +68793,7 @@ package java.util { method public synchronized V replace(K, V); method public synchronized void replaceAll(java.util.function.BiFunction); method public synchronized int size(); + method public synchronized java.lang.String toString(); method public java.util.Collection values(); } @@ -68317,8 +68803,6 @@ package java.util { ctor public IdentityHashMap(java.util.Map); method public java.lang.Object clone(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } public class IllegalFormatCodePointException extends java.util.IllegalFormatException { @@ -68429,7 +68913,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface List implements java.util.Collection { @@ -69052,6 +69535,7 @@ package java.util { ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int); method public int getOffset(int, int, int, int, int, int); method public int getRawOffset(); + method public synchronized int hashCode(); method public boolean inDaylightTime(java.util.Date); method public void setDSTSavings(int); method public void setEndRule(int, int, int, int); @@ -69324,7 +69808,6 @@ package java.util { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); method public java.util.NavigableMap headMap(K, boolean); method public java.util.SortedMap headMap(K); method public java.util.Map.Entry higherEntry(K); @@ -69336,9 +69819,6 @@ package java.util { method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.NavigableMap subMap(K, boolean, K, boolean); method public java.util.SortedMap subMap(K, K); method public java.util.NavigableMap tailMap(K, boolean); @@ -69366,7 +69846,6 @@ package java.util { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.SortedSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -69403,30 +69882,49 @@ package java.util { ctor public Vector(int); ctor public Vector(); ctor public Vector(java.util.Collection); + method public synchronized boolean add(E); + method public synchronized boolean addAll(java.util.Collection); + method public synchronized boolean addAll(int, java.util.Collection); method public synchronized void addElement(E); method public synchronized int capacity(); method public synchronized java.lang.Object clone(); + method public synchronized boolean containsAll(java.util.Collection); method public synchronized void copyInto(java.lang.Object[]); method public synchronized E elementAt(int); method public java.util.Enumeration elements(); method public synchronized void ensureCapacity(int); + method public synchronized boolean equals(java.lang.Object); method public synchronized E firstElement(); method public synchronized void forEach(java.util.function.Consumer); method public synchronized E get(int); + method public synchronized int hashCode(); method public synchronized int indexOf(java.lang.Object, int); method public synchronized void insertElementAt(E, int); + method public synchronized boolean isEmpty(); + method public synchronized java.util.Iterator iterator(); method public synchronized E lastElement(); + method public synchronized int lastIndexOf(java.lang.Object); method public synchronized int lastIndexOf(java.lang.Object, int); + method public synchronized java.util.ListIterator listIterator(int); + method public synchronized java.util.ListIterator listIterator(); + method public synchronized E remove(int); + method public synchronized boolean removeAll(java.util.Collection); method public synchronized void removeAllElements(); method public synchronized boolean removeElement(java.lang.Object); method public synchronized void removeElementAt(int); method public synchronized boolean removeIf(java.util.function.Predicate); + method protected synchronized void removeRange(int, int); method public synchronized void replaceAll(java.util.function.UnaryOperator); + method public synchronized boolean retainAll(java.util.Collection); + method public synchronized E set(int, E); method public synchronized void setElementAt(E, int); method public synchronized void setSize(int); method public synchronized int size(); method public synchronized void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); + method public synchronized java.util.List subList(int, int); + method public synchronized java.lang.Object[] toArray(); + method public synchronized T[] toArray(T[]); + method public synchronized java.lang.String toString(); method public synchronized void trimToSize(); field protected int capacityIncrement; field protected int elementCount; @@ -69439,8 +69937,6 @@ package java.util { ctor public WeakHashMap(); ctor public WeakHashMap(java.util.Map); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } } @@ -69475,7 +69971,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -69666,13 +70161,9 @@ package java.util.concurrent { ctor public ConcurrentHashMap(java.util.Map); ctor public ConcurrentHashMap(int, float); ctor public ConcurrentHashMap(int, float, int); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public boolean contains(java.lang.Object); method public java.util.Enumeration elements(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiFunction, java.util.function.Consumer); method public void forEachEntry(long, java.util.function.Consumer>); @@ -69681,14 +70172,11 @@ package java.util.concurrent { method public void forEachKey(long, java.util.function.Function, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Function, java.util.function.Consumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentHashMap.KeySetView keySet(V); method public java.util.Enumeration keys(); method public long mappingCount(); - method public V merge(K, V, java.util.function.BiFunction); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(int); - method public V putIfAbsent(K, V); method public U reduce(long, java.util.function.BiFunction, java.util.function.BiFunction); method public java.util.Map.Entry reduceEntries(long, java.util.function.BiFunction, java.util.Map.Entry, ? extends java.util.Map.Entry>); method public U reduceEntries(long, java.util.function.Function, ? extends U>, java.util.function.BiFunction); @@ -69708,10 +70196,6 @@ package java.util.concurrent { method public double reduceValuesToDouble(long, java.util.function.ToDoubleFunction, double, java.util.function.DoubleBinaryOperator); method public int reduceValuesToInt(long, java.util.function.ToIntFunction, int, java.util.function.IntBinaryOperator); method public long reduceValuesToLong(long, java.util.function.ToLongFunction, long, java.util.function.LongBinaryOperator); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public U search(long, java.util.function.BiFunction); method public U searchEntries(long, java.util.function.Function, ? extends U>); method public U searchKeys(long, java.util.function.Function); @@ -69772,7 +70256,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ConcurrentLinkedQueue extends java.util.AbstractQueue implements java.util.Queue java.io.Serializable { @@ -69783,7 +70266,6 @@ package java.util.concurrent { method public E peek(); method public E poll(); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface ConcurrentMap implements java.util.Map { @@ -69815,9 +70297,6 @@ package java.util.concurrent { method public K ceilingKey(K); method public java.util.concurrent.ConcurrentSkipListMap clone(); method public java.util.Comparator comparator(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.NavigableSet descendingKeySet(); method public java.util.concurrent.ConcurrentNavigableMap descendingMap(); method public java.util.Set> entrySet(); @@ -69825,25 +70304,18 @@ package java.util.concurrent { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentNavigableMap headMap(K, boolean); method public java.util.concurrent.ConcurrentNavigableMap headMap(K); method public java.util.Map.Entry higherEntry(K); method public K higherKey(K); + method public java.util.NavigableSet keySet(); method public java.util.Map.Entry lastEntry(); method public K lastKey(); method public java.util.Map.Entry lowerEntry(K); method public K lowerKey(K); - method public V merge(K, V, java.util.function.BiFunction); method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, boolean, K, boolean); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, K); method public java.util.concurrent.ConcurrentNavigableMap tailMap(K, boolean); @@ -69871,7 +70343,6 @@ package java.util.concurrent { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.NavigableSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -69918,9 +70389,7 @@ package java.util.concurrent { ctor public CopyOnWriteArraySet(java.util.Collection); method public void forEach(java.util.function.Consumer); method public java.util.Iterator iterator(); - method public boolean removeIf(java.util.function.Predicate); method public int size(); - method public java.util.Spliterator spliterator(); } public class CountDownLatch { @@ -70079,6 +70548,7 @@ package java.util.concurrent { method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler(); method public boolean hasQueuedSubmissions(); method public T invoke(java.util.concurrent.ForkJoinTask); + method public java.util.List> invokeAll(java.util.Collection>); method public boolean isQuiescent(); method public boolean isShutdown(); method public boolean isTerminated(); @@ -70088,6 +70558,9 @@ package java.util.concurrent { method public void shutdown(); method public java.util.List shutdownNow(); method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.ForkJoinTask); + method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.Callable); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable, T); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable); field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory; } @@ -70211,7 +70684,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public E takeFirst() throws java.lang.InterruptedException; method public E takeLast() throws java.lang.InterruptedException; @@ -70232,7 +70704,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -70252,7 +70723,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public void transfer(E) throws java.lang.InterruptedException; method public boolean tryTransfer(E); @@ -70300,7 +70770,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -70404,7 +70873,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -70416,9 +70884,11 @@ package java.util.concurrent { method public static java.util.concurrent.ThreadLocalRandom current(); method public double nextDouble(double); method public double nextDouble(double, double); + method public double nextGaussian(); method public int nextInt(int, int); method public long nextLong(long); method public long nextLong(long, long); + method public void setSeed(long); } public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService { @@ -70432,6 +70902,7 @@ package java.util.concurrent { method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException; method protected void beforeExecute(java.lang.Thread, java.lang.Runnable); method public void execute(java.lang.Runnable); + method protected void finalize(); method public int getActiveCount(); method public long getCompletedTaskCount(); method public int getCorePoolSize(); @@ -71302,8 +71773,11 @@ package java.util.jar { ctor public JarFile(java.io.File) throws java.io.IOException; ctor public JarFile(java.io.File, boolean) throws java.io.IOException; ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException; + method public java.util.Enumeration entries(); + method public synchronized java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; method public java.util.jar.JarEntry getJarEntry(java.lang.String); method public java.util.jar.Manifest getManifest() throws java.io.IOException; + method public java.util.stream.Stream stream(); field public static final java.lang.String MANIFEST_NAME = "META-INF/MANIFEST.MF"; } @@ -71383,6 +71857,8 @@ package java.util.logging { public class ConsoleHandler extends java.util.logging.StreamHandler { ctor public ConsoleHandler(); + method public void close(); + method public void publish(java.util.logging.LogRecord); } public class ErrorManager { @@ -72172,6 +72648,7 @@ package java.util.zip { method public int deflate(byte[]); method public int deflate(byte[], int, int, int); method public void end(); + method protected void finalize(); method public void finish(); method public boolean finished(); method public int getAdler(); @@ -72204,6 +72681,8 @@ package java.util.zip { ctor public DeflaterInputStream(java.io.InputStream); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int); + method public void mark(int); + method public void reset() throws java.io.IOException; field protected final byte[] buf; field protected final java.util.zip.Deflater def; } @@ -72234,6 +72713,7 @@ package java.util.zip { ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected java.util.zip.CRC32 crc; } @@ -72241,6 +72721,7 @@ package java.util.zip { ctor public Inflater(boolean); ctor public Inflater(); method public void end(); + method protected void finalize(); method public boolean finished(); method public int getAdler(); method public long getBytesRead(); @@ -72367,6 +72848,7 @@ package java.util.zip { ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException; method public void close() throws java.io.IOException; method public java.util.Enumeration entries(); + method protected void finalize() throws java.io.IOException; method public java.lang.String getComment(); method public java.util.zip.ZipEntry getEntry(java.lang.String); method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; @@ -72473,6 +72955,7 @@ package java.util.zip { method public void setComment(java.lang.String); method public void setLevel(int); method public void setMethod(int); + method public synchronized void write(byte[], int, int) throws java.io.IOException; field public static final int CENATT = 36; // 0x24 field public static final int CENATX = 38; // 0x26 field public static final int CENCOM = 32; // 0x20 @@ -72629,6 +73112,7 @@ package javax.crypto { public class ExemptionMechanism { ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, java.lang.String); + method protected void finalize(); method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException; method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; @@ -75017,6 +75501,7 @@ package javax.xml.transform { ctor public TransformerException(java.lang.String, java.lang.Throwable); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); method public java.lang.String getLocationAsString(); method public javax.xml.transform.SourceLocator getLocator(); @@ -75287,6 +75772,7 @@ package javax.xml.xpath { public class XPathException extends java.lang.Exception { ctor public XPathException(java.lang.String); ctor public XPathException(java.lang.Throwable); + method public java.lang.Throwable getCause(); } public abstract interface XPathExpression { diff --git a/api/system-removed.txt b/api/system-removed.txt index 48f62b13e56fc9cdbb61ae84f9dffb01aac5ede1..4f78176e8c516980a89c0f3257feacdc052648bf 100644 --- a/api/system-removed.txt +++ b/api/system-removed.txt @@ -9,12 +9,20 @@ package android.app { method public static deprecated int getMaxNumPictureInPictureActions(); } + public abstract deprecated class EphemeralResolverService extends android.app.InstantAppResolverService { + ctor public EphemeralResolverService(); + method public abstract deprecated java.util.List onEphemeralResolveInfoList(int[], int); + method public android.content.pm.EphemeralResolveInfo onGetEphemeralIntentFilter(java.lang.String); + method public java.util.List onGetEphemeralResolveInfo(int[]); + } + public class KeyguardManager { method public deprecated void dismissKeyguard(android.app.Activity, android.app.KeyguardManager.KeyguardDismissCallback, android.os.Handler); } public class Notification implements android.os.Parcelable { method public deprecated java.lang.String getChannel(); + method public static java.lang.Class getNotificationStyleClass(java.lang.String); method public deprecated long getTimeout(); method public deprecated void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent); } @@ -29,25 +37,8 @@ package android.app { } public final deprecated class PictureInPictureArgs implements android.os.Parcelable { - ctor public deprecated PictureInPictureArgs(); - ctor public deprecated PictureInPictureArgs(float, java.util.List); method public static android.app.PictureInPictureArgs convert(android.app.PictureInPictureParams); method public static android.app.PictureInPictureParams convert(android.app.PictureInPictureArgs); - method public void copyOnlySet(android.app.PictureInPictureArgs); - method public java.util.List getActions(); - method public float getAspectRatio(); - method public android.util.Rational getAspectRatioRational(); - method public android.graphics.Rect getSourceRectHint(); - method public android.graphics.Rect getSourceRectHintInsets(); - method public boolean hasSetActions(); - method public boolean hasSetAspectRatio(); - method public boolean hasSourceBoundsHint(); - method public boolean hasSourceBoundsHintInsets(); - method public deprecated void setActions(java.util.List); - method public deprecated void setAspectRatio(float); - method public deprecated void setSourceRectHint(android.graphics.Rect); - method public deprecated void setSourceRectHintInsets(android.graphics.Rect); - method public void truncateActions(int); field public static final android.os.Parcelable.Creator CREATOR; } @@ -59,10 +50,6 @@ package android.app { method public android.app.PictureInPictureArgs.Builder setSourceRectHint(android.graphics.Rect); } - public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable { - method public deprecated void showAsNotification(android.content.Context); - } - } package android.app.admin { @@ -70,6 +57,8 @@ package android.app.admin { public class DevicePolicyManager { method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle); method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String); + method public deprecated java.lang.String getDeviceInitializerApp(); + method public deprecated android.content.ComponentName getDeviceInitializerComponent(); } } @@ -104,7 +93,35 @@ package android.content { } public class Intent implements java.lang.Cloneable android.os.Parcelable { + field public static final deprecated java.lang.String ACTION_DEVICE_INITIALIZATION_WIZARD = "android.intent.action.DEVICE_INITIALIZATION_WIZARD"; + field public static final deprecated java.lang.String ACTION_EPHEMERAL_RESOLVER_SETTINGS = "android.intent.action.EPHEMERAL_RESOLVER_SETTINGS"; + field public static final deprecated java.lang.String ACTION_INSTALL_EPHEMERAL_PACKAGE = "android.intent.action.INSTALL_EPHEMERAL_PACKAGE"; + field public static final deprecated java.lang.String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR"; + field public static final deprecated java.lang.String ACTION_RESOLVE_EPHEMERAL_PACKAGE = "android.intent.action.RESOLVE_EPHEMERAL_PACKAGE"; + field public static final deprecated java.lang.String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE"; + field public static final deprecated java.lang.String EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR = "cdmaDefaultRoamingIndicator"; + field public static final deprecated java.lang.String EXTRA_CDMA_ROAMING_INDICATOR = "cdmaRoamingIndicator"; + field public static final deprecated java.lang.String EXTRA_CSS_INDICATOR = "cssIndicator"; + field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_LONG = "data-operator-alpha-long"; + field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_ALPHA_SHORT = "data-operator-alpha-short"; + field public static final deprecated java.lang.String EXTRA_DATA_OPERATOR_NUMERIC = "data-operator-numeric"; + field public static final deprecated java.lang.String EXTRA_DATA_RADIO_TECH = "dataRadioTechnology"; + field public static final deprecated java.lang.String EXTRA_DATA_REG_STATE = "dataRegState"; + field public static final deprecated java.lang.String EXTRA_DATA_ROAMING_TYPE = "dataRoamingType"; + field public static final deprecated java.lang.String EXTRA_EMERGENCY_ONLY = "emergencyOnly"; + field public static final deprecated java.lang.String EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION = "isDataRoamingFromRegistration"; + field public static final deprecated java.lang.String EXTRA_IS_USING_CARRIER_AGGREGATION = "isUsingCarrierAggregation"; + field public static final deprecated java.lang.String EXTRA_LTE_EARFCN_RSRP_BOOST = "LteEarfcnRsrpBoost"; + field public static final deprecated java.lang.String EXTRA_MANUAL = "manual"; + field public static final deprecated java.lang.String EXTRA_NETWORK_ID = "networkId"; + field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_LONG = "operator-alpha-long"; + field public static final deprecated java.lang.String EXTRA_OPERATOR_ALPHA_SHORT = "operator-alpha-short"; + field public static final deprecated java.lang.String EXTRA_OPERATOR_NUMERIC = "operator-numeric"; field public static final deprecated java.lang.String EXTRA_QUICK_VIEW_ADVANCED = "android.intent.extra.QUICK_VIEW_ADVANCED"; + field public static final deprecated java.lang.String EXTRA_SYSTEM_ID = "systemId"; + field public static final deprecated java.lang.String EXTRA_VOICE_RADIO_TECH = "radioTechnology"; + field public static final deprecated java.lang.String EXTRA_VOICE_REG_STATE = "voiceRegState"; + field public static final deprecated java.lang.String EXTRA_VOICE_ROAMING_TYPE = "voiceRoamingType"; } } @@ -119,6 +136,35 @@ package android.content.pm { field public deprecated boolean encryptionAware; } + public final deprecated class EphemeralIntentFilter implements android.os.Parcelable { + ctor public EphemeralIntentFilter(java.lang.String, java.util.List); + method public java.util.List getFilters(); + method public java.lang.String getSplitName(); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final deprecated class EphemeralResolveInfo implements android.os.Parcelable { + ctor public deprecated EphemeralResolveInfo(android.net.Uri, java.lang.String, java.util.List); + ctor public deprecated EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List); + ctor public EphemeralResolveInfo(android.content.pm.EphemeralResolveInfo.EphemeralDigest, java.lang.String, java.util.List, int); + ctor public EphemeralResolveInfo(java.lang.String, java.lang.String, java.util.List); + method public byte[] getDigestBytes(); + method public int getDigestPrefix(); + method public deprecated java.util.List getFilters(); + method public java.util.List getIntentFilters(); + method public java.lang.String getPackageName(); + method public int getVersionCode(); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final java.lang.String SHA_ALGORITHM = "SHA-256"; + } + + public static final class EphemeralResolveInfo.EphemeralDigest implements android.os.Parcelable { + ctor public EphemeralResolveInfo.EphemeralDigest(java.lang.String); + method public byte[][] getDigestBytes(); + method public int[] getDigestPrefix(); + field public static final android.os.Parcelable.Creator CREATOR; + } + public class PackageInfo implements android.os.Parcelable { field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1 } @@ -264,16 +310,51 @@ package android.net { } +package android.net.wifi { + + public class ScanResult implements android.os.Parcelable { + field public boolean untrusted; + } + + public class WifiConnectionStatistics implements android.os.Parcelable { + ctor public WifiConnectionStatistics(); + ctor public WifiConnectionStatistics(android.net.wifi.WifiConnectionStatistics); + method public void incrementOrAddUntrusted(java.lang.String, int, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public int num24GhzConnected; + field public int num5GhzConnected; + field public int numAutoJoinAttempt; + field public int numAutoRoamAttempt; + field public int numWifiManagerJoinAttempt; + field public java.util.HashMap untrustedNetworkHistory; + } + + public class WifiManager { + method public deprecated java.util.List getBatchedScanResults(); + method public android.net.wifi.WifiConnectionStatistics getConnectionStatistics(); + method public deprecated boolean isBatchedScanSupported(); + method public deprecated boolean setWifiApEnabled(android.net.wifi.WifiConfiguration, boolean); + method public deprecated boolean startLocationRestrictedScan(android.os.WorkSource); + } + +} + package android.os { public class BatteryManager { ctor public BatteryManager(); } + public class Build { + field public static final boolean PERMISSIONS_REVIEW_REQUIRED; + } + public final class PowerManager { method public void goToSleep(long); + method public deprecated boolean isScreenBrightnessBoosted(); method public deprecated void userActivity(long, boolean); method public void wakeUp(long); + field public static final deprecated java.lang.String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED"; } public class RecoverySystem { @@ -295,18 +376,8 @@ package android.os { package android.os.storage { public class StorageManager { - method public deprecated void allocateBytes(java.io.File, long, int) throws java.io.IOException; - method public deprecated long getAllocatableBytes(java.io.File, int) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getCacheSizeBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheSizeBytes() throws java.io.IOException; - method public deprecated long getExternalCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getExternalCacheSizeBytes() throws java.io.IOException; method public android.os.storage.StorageVolume getPrimaryVolume(); method public android.os.storage.StorageVolume[] getVolumeList(); - method public deprecated boolean isCacheBehaviorAtomic(java.io.File) throws java.io.IOException; - method public deprecated void setCacheBehaviorAtomic(java.io.File, boolean) throws java.io.IOException; } } @@ -350,11 +421,8 @@ package android.provider { field public static final java.lang.String CREATED = "created"; field public static final java.lang.String DATE = "date"; field public static final java.lang.String FAVICON = "favicon"; - field public static final java.lang.String THUMBNAIL = "thumbnail"; field public static final java.lang.String TITLE = "title"; - field public static final java.lang.String TOUCH_ICON = "touch_icon"; field public static final java.lang.String URL = "url"; - field public static final java.lang.String USER_ENTERED = "user_entered"; field public static final java.lang.String VISITS = "visits"; } @@ -445,6 +513,26 @@ package android.provider { } +package android.service.notification { + + public abstract class NotificationListenerService extends android.app.Service { + method public android.service.notification.StatusBarNotification[] getActiveNotifications(int); + method public android.service.notification.StatusBarNotification[] getActiveNotifications(java.lang.String[], int); + method public void registerAsSystemService(android.content.Context, android.content.ComponentName, int) throws android.os.RemoteException; + method public final void setOnNotificationPostedTrim(int); + method public final void snoozeNotification(java.lang.String, java.lang.String); + method public void unregisterAsSystemService() throws android.os.RemoteException; + field public static final int TRIM_FULL = 0; // 0x0 + field public static final int TRIM_LIGHT = 1; // 0x1 + } + + public static class NotificationListenerService.Ranking { + method public java.util.List getAdditionalPeople(); + method public java.util.List getSnoozeCriteria(); + } + +} + package android.speech.tts { public abstract class UtteranceProgressListener { diff --git a/api/test-current.txt b/api/test-current.txt index 33d96a7b6e6b250d634799015227cd7b402a7a14..5bbf08ddf9bf0d29dcf44eac083d23684ed36053 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -121,7 +121,6 @@ package android { field public static final java.lang.String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"; field public static final java.lang.String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES"; field public static final deprecated java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES"; - field public static final java.lang.String SEND_EMBMS_INTENTS = "android.permission.SEND_EMBMS_INTENTS"; field public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE"; field public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS"; field public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM"; @@ -389,6 +388,7 @@ package android { field public static final int childIndicatorRight = 16843024; // 0x1010110 field public static final int childIndicatorStart = 16843731; // 0x10103d3 field public static final int choiceMode = 16843051; // 0x101012b + field public static final int classLoader = 16844139; // 0x101056b field public static final int clearTaskOnLaunch = 16842773; // 0x1010015 field public static final int clickable = 16842981; // 0x10100e5 field public static final int clipChildren = 16842986; // 0x10100ea @@ -919,6 +919,7 @@ package android { field public static final int multiprocess = 16842771; // 0x1010013 field public static final int name = 16842755; // 0x1010003 field public static final int navigationBarColor = 16843858; // 0x1010452 + field public static final int navigationBarDividerColor = 16844141; // 0x101056d field public static final int navigationContentDescription = 16843969; // 0x10104c1 field public static final int navigationIcon = 16843968; // 0x10104c0 field public static final int navigationMode = 16843471; // 0x10102cf @@ -1181,6 +1182,7 @@ package android { field public static final int showSilent = 16843259; // 0x10101fb field public static final int showText = 16843949; // 0x10104ad field public static final deprecated int showWeekNumber = 16843582; // 0x101033e + field public static final int showWhenLocked = 16844137; // 0x1010569 field public static final deprecated int shownWeekCount = 16843585; // 0x1010341 field public static final int shrinkColumns = 16843082; // 0x101014a field public static final deprecated int singleLine = 16843101; // 0x101015d @@ -1439,6 +1441,7 @@ package android { field public static final int trimPathOffset = 16843786; // 0x101040a field public static final int trimPathStart = 16843784; // 0x1010408 field public static final int tunerCount = 16844061; // 0x101051d + field public static final int turnScreenOn = 16844138; // 0x101056a field public static final int type = 16843169; // 0x10101a1 field public static final int typeface = 16842902; // 0x1010096 field public static final int uiOptions = 16843672; // 0x1010398 @@ -1522,6 +1525,7 @@ package android { field public static final int windowHideAnimation = 16842935; // 0x10100b7 field public static final int windowIsFloating = 16842839; // 0x1010057 field public static final int windowIsTranslucent = 16842840; // 0x1010058 + field public static final int windowLightNavigationBar = 16844140; // 0x101056c field public static final int windowLightStatusBar = 16844000; // 0x10104e0 field public static final int windowMinWidthMajor = 16843606; // 0x1010356 field public static final int windowMinWidthMinor = 16843607; // 0x1010357 @@ -1936,6 +1940,7 @@ package android { field public static final int VideoView_error_text_invalid_progressive_playback = 17039381; // 0x1040015 field public static final int VideoView_error_text_unknown = 17039377; // 0x1040011 field public static final int VideoView_error_title = 17039378; // 0x1040012 + field public static final int autofill = 17039386; // 0x104001a field public static final int cancel = 17039360; // 0x1040000 field public static final int copy = 17039361; // 0x1040001 field public static final int copyUrl = 17039362; // 0x1040002 @@ -3163,6 +3168,7 @@ package android.animation { public final class AnimatorSet extends android.animation.Animator { ctor public AnimatorSet(); + method public android.animation.AnimatorSet clone(); method public java.util.ArrayList getChildAnimations(); method public long getCurrentPlayTime(); method public long getDuration(); @@ -3281,6 +3287,7 @@ package android.animation { public final class ObjectAnimator extends android.animation.ValueAnimator { ctor public ObjectAnimator(); + method public android.animation.ObjectAnimator clone(); method public java.lang.String getPropertyName(); method public java.lang.Object getTarget(); method public static android.animation.ObjectAnimator ofArgb(java.lang.Object, java.lang.String, int...); @@ -3306,6 +3313,7 @@ package android.animation { method public static android.animation.ObjectAnimator ofObject(T, android.util.Property, android.animation.TypeConverter, android.graphics.Path); method public static android.animation.ObjectAnimator ofPropertyValuesHolder(java.lang.Object, android.animation.PropertyValuesHolder...); method public void setAutoCancel(boolean); + method public android.animation.ObjectAnimator setDuration(long); method public void setProperty(android.util.Property); method public void setPropertyName(java.lang.String); } @@ -3387,6 +3395,7 @@ package android.animation { ctor public ValueAnimator(); method public void addUpdateListener(android.animation.ValueAnimator.AnimatorUpdateListener); method public static boolean areAnimatorsEnabled(); + method public android.animation.ValueAnimator clone(); method public float getAnimatedFraction(); method public java.lang.Object getAnimatedValue(); method public java.lang.Object getAnimatedValue(java.lang.String); @@ -3762,10 +3771,12 @@ package android.app { method public final void setResult(int); method public final void setResult(int, android.content.Intent); method public final deprecated void setSecondaryProgress(int); + method public void setShowWhenLocked(boolean); method public void setTaskDescription(android.app.ActivityManager.TaskDescription); method public void setTitle(java.lang.CharSequence); method public void setTitle(int); method public deprecated void setTitleColor(int); + method public void setTurnScreenOn(boolean); method public void setVisible(boolean); method public final void setVolumeControlStream(int); method public void setVrModeEnabled(boolean, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; @@ -4973,6 +4984,7 @@ package android.app { ctor public IntentService(java.lang.String); method public android.os.IBinder onBind(android.content.Intent); method protected abstract void onHandleIntent(android.content.Intent); + method public void onStart(android.content.Intent, int); method public void setIntentRedelivery(boolean); } @@ -5607,6 +5619,7 @@ package android.app { method public java.util.List getNotificationChannelGroups(); method public java.util.List getNotificationChannels(); method public android.app.NotificationManager.Policy getNotificationPolicy(); + method public boolean isNotificationListenerAccessGranted(android.content.ComponentName); method public boolean isNotificationPolicyAccessGranted(); method public void notify(int, android.app.Notification); method public void notify(java.lang.String, int, android.app.Notification); @@ -6144,7 +6157,6 @@ package android.app { } public class WallpaperManager { - method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener); method public void addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler); method public void clear() throws java.io.IOException; method public void clear(int) throws java.io.IOException; @@ -9388,6 +9400,7 @@ package android.content { field public static final java.lang.String ACTION_INPUT_METHOD_CHANGED = "android.intent.action.INPUT_METHOD_CHANGED"; field public static final java.lang.String ACTION_INSERT = "android.intent.action.INSERT"; field public static final java.lang.String ACTION_INSERT_OR_EDIT = "android.intent.action.INSERT_OR_EDIT"; + field public static final java.lang.String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE"; field public static final java.lang.String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; field public static final java.lang.String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED"; field public static final java.lang.String ACTION_LOCKED_BOOT_COMPLETED = "android.intent.action.LOCKED_BOOT_COMPLETED"; @@ -9570,6 +9583,7 @@ package android.content { field public static final deprecated java.lang.String EXTRA_SHORTCUT_INTENT = "android.intent.extra.shortcut.INTENT"; field public static final deprecated java.lang.String EXTRA_SHORTCUT_NAME = "android.intent.extra.shortcut.NAME"; field public static final java.lang.String EXTRA_SHUTDOWN_USERSPACE_ONLY = "android.intent.extra.SHUTDOWN_USERSPACE_ONLY"; + field public static final java.lang.String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME"; field public static final java.lang.String EXTRA_STREAM = "android.intent.extra.STREAM"; field public static final java.lang.String EXTRA_SUBJECT = "android.intent.extra.SUBJECT"; field public static final java.lang.String EXTRA_TEMPLATE = "android.intent.extra.TEMPLATE"; @@ -10192,6 +10206,7 @@ package android.content.pm { method public static java.lang.CharSequence getCategoryTitle(android.content.Context, int); method public boolean isPrivilegedApp(); method public boolean isSystemApp(); + method public boolean isVirtualPreload(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final int CATEGORY_AUDIO = 1; // 0x1 field public static final int CATEGORY_GAME = 0; // 0x0 @@ -10527,6 +10542,7 @@ package android.content.pm { method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException; method public void removeSplit(java.lang.String) throws java.io.IOException; method public void setStagingProgress(float); + method public void transfer(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; } public static abstract class PackageInstaller.SessionCallback { @@ -10544,10 +10560,16 @@ package android.content.pm { method public android.graphics.Bitmap getAppIcon(); method public java.lang.CharSequence getAppLabel(); method public java.lang.String getAppPackageName(); + method public int getInstallLocation(); method public int getInstallReason(); method public java.lang.String getInstallerPackageName(); + method public int getMode(); + method public int getOriginatingUid(); + method public android.net.Uri getOriginatingUri(); method public float getProgress(); + method public android.net.Uri getReferrerUri(); method public int getSessionId(); + method public long getSize(); method public boolean isActive(); method public boolean isSealed(); method public void writeToParcel(android.os.Parcel, int); @@ -10656,6 +10678,7 @@ package android.content.pm { method public abstract int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract java.lang.String[] getPackagesForUid(int); method public abstract java.util.List getPackagesHoldingPermissions(java.lang.String[], int); + method public abstract java.lang.String getPermissionControllerPackageName(); method public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract int getPreferredActivities(java.util.List, java.util.List, java.lang.String); @@ -10757,8 +10780,11 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; + field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; + field public static final java.lang.String FEATURE_RAM_LOW = "android.hardware.ram.low"; + field public static final java.lang.String FEATURE_RAM_NORMAL = "android.hardware.ram.normal"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; field public static final java.lang.String FEATURE_SCREEN_PORTRAIT = "android.hardware.screen.portrait"; field public static final java.lang.String FEATURE_SECURELY_REMOVES_USERS = "android.software.securely_removes_users"; @@ -10798,6 +10824,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; + field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int GET_ACTIVITIES = 1; // 0x1 field public static final int GET_CONFIGURATIONS = 16384; // 0x4000 field public static final deprecated int GET_DISABLED_COMPONENTS = 512; // 0x200 @@ -10897,8 +10924,8 @@ package android.content.pm { field public static final int PROTECTION_DANGEROUS = 1; // 0x1 field public static final int PROTECTION_FLAG_APPOP = 64; // 0x40 field public static final int PROTECTION_FLAG_DEVELOPMENT = 32; // 0x20 - field public static final int PROTECTION_FLAG_EPHEMERAL = 4096; // 0x1000 field public static final int PROTECTION_FLAG_INSTALLER = 256; // 0x100 + field public static final int PROTECTION_FLAG_INSTANT = 4096; // 0x1000 field public static final int PROTECTION_FLAG_PRE23 = 128; // 0x80 field public static final int PROTECTION_FLAG_PREINSTALLED = 1024; // 0x400 field public static final int PROTECTION_FLAG_PRIVILEGED = 16; // 0x10 @@ -11106,6 +11133,7 @@ package android.content.res { public static class AssetFileDescriptor.AutoCloseInputStream extends android.os.ParcelFileDescriptor.AutoCloseInputStream { ctor public AssetFileDescriptor.AutoCloseInputStream(android.content.res.AssetFileDescriptor) throws java.io.IOException; + method public void mark(int); } public static class AssetFileDescriptor.AutoCloseOutputStream extends android.os.ParcelFileDescriptor.AutoCloseOutputStream { @@ -11413,6 +11441,7 @@ package android.database { method public void copyStringToBuffer(int, android.database.CharArrayBuffer); method public void deactivate(); method public void fillWindow(int, android.database.CursorWindow); + method protected void finalize(); method public byte[] getBlob(int); method public int getColumnCount(); method public int getColumnIndex(java.lang.String); @@ -11894,6 +11923,7 @@ package android.database.sqlite { method public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener); method public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String) throws android.database.SQLException; method public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public static android.database.sqlite.SQLiteDatabase createInMemory(android.database.sqlite.SQLiteDatabase.OpenParams); method public int delete(java.lang.String, java.lang.String, java.lang.String[]); method public static boolean deleteDatabase(java.io.File); method public void disableWriteAheadLogging(); @@ -11923,6 +11953,7 @@ package android.database.sqlite { method public boolean needUpgrade(int); method protected void onAllReferencesReleased(); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int); + method public static android.database.sqlite.SQLiteDatabase openDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.OpenParams); method public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory, int, android.database.DatabaseErrorHandler); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase.CursorFactory); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase.CursorFactory); @@ -11973,6 +12004,28 @@ package android.database.sqlite { method public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery); } + public static final class SQLiteDatabase.OpenParams { + method public android.database.sqlite.SQLiteDatabase.CursorFactory getCursorFactory(); + method public android.database.DatabaseErrorHandler getErrorHandler(); + method public long getIdleConnectionTimeout(); + method public int getLookasideSlotCount(); + method public int getLookasideSlotSize(); + method public int getOpenFlags(); + } + + public static final class SQLiteDatabase.OpenParams.Builder { + ctor public SQLiteDatabase.OpenParams.Builder(); + ctor public SQLiteDatabase.OpenParams.Builder(android.database.sqlite.SQLiteDatabase.OpenParams); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder addOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams build(); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder removeOpenFlags(int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setCursorFactory(android.database.sqlite.SQLiteDatabase.CursorFactory); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setErrorHandler(android.database.DatabaseErrorHandler); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setIdleConnectionTimeout(long); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setLookasideConfig(int, int); + method public android.database.sqlite.SQLiteDatabase.OpenParams.Builder setOpenFlags(int); + } + public class SQLiteDatabaseCorruptException extends android.database.sqlite.SQLiteException { ctor public SQLiteDatabaseCorruptException(); ctor public SQLiteDatabaseCorruptException(java.lang.String); @@ -11988,6 +12041,40 @@ package android.database.sqlite { ctor public SQLiteDatatypeMismatchException(java.lang.String); } + public final class SQLiteDebug { + method public static void dump(android.util.Printer, java.lang.String[]); + method public static android.database.sqlite.SQLiteDebug.PagerStats getDatabaseInfo(); + field public static final boolean DEBUG_SQL_LOG; + field public static final boolean DEBUG_SQL_STATEMENTS; + field public static final boolean DEBUG_SQL_TIME; + } + + public static class SQLiteDebug.DbStats { + ctor public SQLiteDebug.DbStats(java.lang.String, long, long, int, int, int, int); + field public java.lang.String cache; + field public java.lang.String dbName; + field public long dbSize; + field public int lookaside; + field public long pageSize; + } + + public static class SQLiteDebug.PagerStats { + ctor public SQLiteDebug.PagerStats(); + field public java.util.ArrayList dbStats; + field public int largestMemAlloc; + field public int memoryUsed; + field public int pageCacheOverflow; + } + + public final class SQLiteDirectCursorDriver implements android.database.sqlite.SQLiteCursorDriver { + ctor public SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, java.lang.String, java.lang.String, android.os.CancellationSignal); + method public void cursorClosed(); + method public void cursorDeactivated(); + method public void cursorRequeried(android.database.Cursor); + method public android.database.Cursor query(android.database.sqlite.SQLiteDatabase.CursorFactory, java.lang.String[]); + method public void setBindArguments(java.lang.String[]); + } + public class SQLiteDiskIOException extends android.database.sqlite.SQLiteException { ctor public SQLiteDiskIOException(); ctor public SQLiteDiskIOException(java.lang.String); @@ -12009,6 +12096,18 @@ package android.database.sqlite { ctor public SQLiteFullException(java.lang.String); } + public final class SQLiteGlobal { + method public static java.lang.String getDefaultJournalMode(); + method public static int getDefaultPageSize(); + method public static java.lang.String getDefaultSyncMode(); + method public static int getIdleConnectionTimeout(); + method public static int getJournalSizeLimit(); + method public static int getWALAutoCheckpoint(); + method public static int getWALConnectionPoolSize(); + method public static java.lang.String getWALSyncMode(); + method public static int releaseMemory(); + } + public class SQLiteMisuseException extends android.database.sqlite.SQLiteException { ctor public SQLiteMisuseException(); ctor public SQLiteMisuseException(java.lang.String); @@ -12026,6 +12125,8 @@ package android.database.sqlite { method public void onDowngrade(android.database.sqlite.SQLiteDatabase, int, int); method public void onOpen(android.database.sqlite.SQLiteDatabase); method public abstract void onUpgrade(android.database.sqlite.SQLiteDatabase, int, int); + method public void setIdleConnectionTimeout(long); + method public void setLookasideConfig(int, int); method public void setWriteAheadLoggingEnabled(boolean); } @@ -13888,6 +13989,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setOpacity(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); field public static final float MASK_SIZE = 100.0f; @@ -13969,6 +14071,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setAntiAlias(boolean); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setGravity(int); method public void setMipMap(boolean); method public void setTargetDensity(android.graphics.Canvas); @@ -14096,6 +14199,7 @@ package android.graphics.drawable { method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); method protected void setConstantState(android.graphics.drawable.DrawableContainer.DrawableContainerState); + method public void setDither(boolean); method public void setEnterFadeDuration(int); method public void setExitFadeDuration(int); method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable); @@ -14162,6 +14266,7 @@ package android.graphics.drawable { method public void setColors(int[]); method public void setCornerRadii(float[]); method public void setCornerRadius(float); + method public void setDither(boolean); method public void setGradientCenter(float, float); method public void setGradientRadius(float); method public void setGradientType(int); @@ -14256,6 +14361,7 @@ package android.graphics.drawable { method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setDrawable(int, android.graphics.drawable.Drawable); method public boolean setDrawableByLayerId(int, android.graphics.drawable.Drawable); method public void setId(int, int); @@ -14296,6 +14402,7 @@ package android.graphics.drawable { method public android.graphics.Paint getPaint(); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setTargetDensity(android.graphics.Canvas); method public void setTargetDensity(android.util.DisplayMetrics); method public void setTargetDensity(int); @@ -14358,6 +14465,7 @@ package android.graphics.drawable { method protected void onDraw(android.graphics.drawable.shapes.Shape, android.graphics.Canvas, android.graphics.Paint); method public void setAlpha(int); method public void setColorFilter(android.graphics.ColorFilter); + method public void setDither(boolean); method public void setIntrinsicHeight(int); method public void setIntrinsicWidth(int); method public void setPadding(int, int, int, int); @@ -14400,27 +14508,32 @@ package android.graphics.drawable.shapes { public class ArcShape extends android.graphics.drawable.shapes.RectShape { ctor public ArcShape(float, float); + method public android.graphics.drawable.shapes.ArcShape clone() throws java.lang.CloneNotSupportedException; method public final float getStartAngle(); method public final float getSweepAngle(); } public class OvalShape extends android.graphics.drawable.shapes.RectShape { ctor public OvalShape(); + method public android.graphics.drawable.shapes.OvalShape clone() throws java.lang.CloneNotSupportedException; } public class PathShape extends android.graphics.drawable.shapes.Shape { ctor public PathShape(android.graphics.Path, float, float); + method public android.graphics.drawable.shapes.PathShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); } public class RectShape extends android.graphics.drawable.shapes.Shape { ctor public RectShape(); + method public android.graphics.drawable.shapes.RectShape clone() throws java.lang.CloneNotSupportedException; method public void draw(android.graphics.Canvas, android.graphics.Paint); method protected final android.graphics.RectF rect(); } public class RoundRectShape extends android.graphics.drawable.shapes.RectShape { ctor public RoundRectShape(float[], android.graphics.RectF, float[]); + method public android.graphics.drawable.shapes.RoundRectShape clone() throws java.lang.CloneNotSupportedException; } public abstract class Shape implements java.lang.Cloneable { @@ -14505,6 +14618,7 @@ package android.hardware { method public final void autoFocus(android.hardware.Camera.AutoFocusCallback); method public final void cancelAutoFocus(); method public final boolean enableShutterSound(boolean); + method protected void finalize(); method public static void getCameraInfo(int, android.hardware.Camera.CameraInfo); method public static int getNumberOfCameras(); method public android.hardware.Camera.Parameters getParameters(); @@ -15114,6 +15228,7 @@ package android.hardware.camera2 { method public T get(android.hardware.camera2.CameraCharacteristics.Key); method public java.util.List> getAvailableCaptureRequestKeys(); method public java.util.List> getAvailableCaptureResultKeys(); + method public java.util.List> getKeys(); field public static final android.hardware.camera2.CameraCharacteristics.Key COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_ANTIBANDING_MODES; field public static final android.hardware.camera2.CameraCharacteristics.Key CONTROL_AE_AVAILABLE_MODES; @@ -15474,6 +15589,7 @@ package android.hardware.camera2 { public final class CaptureRequest extends android.hardware.camera2.CameraMetadata implements android.os.Parcelable { method public int describeContents(); method public T get(android.hardware.camera2.CaptureRequest.Key); + method public java.util.List> getKeys(); method public java.lang.Object getTag(); method public boolean isReprocess(); method public void writeToParcel(android.os.Parcel, int); @@ -15552,6 +15668,7 @@ package android.hardware.camera2 { public class CaptureResult extends android.hardware.camera2.CameraMetadata { method public T get(android.hardware.camera2.CaptureResult.Key); method public long getFrameNumber(); + method public java.util.List> getKeys(); method public android.hardware.camera2.CaptureRequest getRequest(); method public int getSequenceId(); field public static final android.hardware.camera2.CaptureResult.Key BLACK_LEVEL_LOCK; @@ -15843,9 +15960,12 @@ package android.hardware.fingerprint { field public static final int FINGERPRINT_ERROR_CANCELED = 5; // 0x5 field public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1; // 0x1 field public static final int FINGERPRINT_ERROR_LOCKOUT = 7; // 0x7 + field public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; // 0x9 field public static final int FINGERPRINT_ERROR_NO_SPACE = 4; // 0x4 field public static final int FINGERPRINT_ERROR_TIMEOUT = 3; // 0x3 field public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2; // 0x2 + field public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; // 0xa + field public static final int FINGERPRINT_ERROR_VENDOR = 8; // 0x8 } public static abstract class FingerprintManager.AuthenticationCallback { @@ -17989,6 +18109,7 @@ package android.icu.text { } public class DateIntervalFormat extends android.icu.text.UFormat { + method public synchronized java.lang.Object clone(); method public final java.lang.StringBuffer format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.DateInterval, java.lang.StringBuffer, java.text.FieldPosition); method public final synchronized java.lang.StringBuffer format(android.icu.util.Calendar, android.icu.util.Calendar, java.lang.StringBuffer, java.text.FieldPosition); @@ -18794,6 +18915,7 @@ package android.icu.text { public final class RuleBasedCollator extends android.icu.text.Collator { ctor public RuleBasedCollator(java.lang.String) throws java.lang.Exception; + method public android.icu.text.RuleBasedCollator cloneAsThawed(); method public int compare(java.lang.String, java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.lang.String); method public android.icu.text.CollationElementIterator getCollationElementIterator(java.text.CharacterIterator); @@ -18820,6 +18942,7 @@ package android.icu.text { method public void setFrenchCollation(boolean); method public void setFrenchCollationDefault(); method public void setLowerCaseFirst(boolean); + method public android.icu.text.RuleBasedCollator setMaxVariable(int); method public void setNumericCollation(boolean); method public void setNumericCollationDefault(); method public void setStrengthDefault(); @@ -21401,6 +21524,7 @@ package android.media { ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException; method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler); method public deprecated void addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler); + method protected void finalize(); method public int getAudioFormat(); method public int getAudioSessionId(); method public int getAudioSource(); @@ -21505,6 +21629,7 @@ package android.media { method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler); method public int attachAuxEffect(int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); + method protected void finalize(); method public void flush(); method public int getAudioFormat(); method public int getAudioSessionId(); @@ -21903,6 +22028,7 @@ package android.media { method public boolean clearQueue(); method public java.lang.Object clone() throws java.lang.CloneNotSupportedException; method public boolean closeJetFile(); + method protected void finalize(); method public static android.media.JetPlayer getJetPlayer(); method public static int getMaxTracks(); method public boolean loadJetFile(java.lang.String); @@ -21942,6 +22068,7 @@ package android.media { ctor public MediaCas(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public static android.media.MediaCas.PluginDescriptor[] enumeratePlugins(); + method protected void finalize(); method public static boolean isSystemIdSupported(int); method public android.media.MediaCas.Session openSession() throws android.media.MediaCasException; method public void processEmm(byte[], int, int) throws android.media.MediaCasException; @@ -21998,6 +22125,7 @@ package android.media { method public static android.view.Surface createPersistentInputSurface(); method public final int dequeueInputBuffer(long); method public final int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long); + method protected void finalize(); method public final void flush(); method public android.media.MediaCodecInfo getCodecInfo(); method public java.nio.ByteBuffer getInputBuffer(int); @@ -22238,6 +22366,8 @@ package android.media { field public static final int AVCLevel51 = 32768; // 0x8000 field public static final int AVCLevel52 = 65536; // 0x10000 field public static final int AVCProfileBaseline = 1; // 0x1 + field public static final int AVCProfileConstrainedBaseline = 65536; // 0x10000 + field public static final int AVCProfileConstrainedHigh = 524288; // 0x80000 field public static final int AVCProfileExtended = 4; // 0x4 field public static final int AVCProfileHigh = 8; // 0x8 field public static final int AVCProfileHigh10 = 16; // 0x10 @@ -22255,11 +22385,13 @@ package android.media { field public static final int DolbyVisionLevelUhd60 = 256; // 0x100 field public static final int DolbyVisionProfileDvavPen = 2; // 0x2 field public static final int DolbyVisionProfileDvavPer = 1; // 0x1 + field public static final int DolbyVisionProfileDvavSe = 512; // 0x200 field public static final int DolbyVisionProfileDvheDen = 8; // 0x8 field public static final int DolbyVisionProfileDvheDer = 4; // 0x4 field public static final int DolbyVisionProfileDvheDtb = 128; // 0x80 field public static final int DolbyVisionProfileDvheDth = 64; // 0x40 field public static final int DolbyVisionProfileDvheDtr = 16; // 0x10 + field public static final int DolbyVisionProfileDvheSt = 256; // 0x100 field public static final int DolbyVisionProfileDvheStn = 32; // 0x20 field public static final int H263Level10 = 1; // 0x1 field public static final int H263Level20 = 2; // 0x2 @@ -22409,6 +22541,7 @@ package android.media { public final class MediaCrypto { ctor public MediaCrypto(java.util.UUID, byte[]) throws android.media.MediaCryptoException; + method protected void finalize(); method public static final boolean isCryptoSchemeSupported(java.util.UUID); method public final void release(); method public final boolean requiresSecureDecoderComponent(java.lang.String); @@ -22429,6 +22562,7 @@ package android.media { ctor public MediaDescrambler(int) throws android.media.MediaCasException.UnsupportedCasException; method public void close(); method public final int descramble(java.nio.ByteBuffer, java.nio.ByteBuffer, android.media.MediaCodec.CryptoInfo); + method protected void finalize(); method public final boolean requiresSecureDecoderComponent(java.lang.String); method public final void setMediaCasSession(android.media.MediaCas.Session); } @@ -22471,6 +22605,7 @@ package android.media { public final class MediaDrm { ctor public MediaDrm(java.util.UUID) throws android.media.UnsupportedSchemeException; method public void closeSession(byte[]); + method protected void finalize(); method public android.media.MediaDrm.CryptoSession getCryptoSession(byte[], java.lang.String, java.lang.String); method public android.media.MediaDrm.KeyRequest getKeyRequest(byte[], byte[], java.lang.String, int, java.util.HashMap) throws android.media.NotProvisionedException; method public byte[] getPropertyByteArray(java.lang.String); @@ -22567,6 +22702,7 @@ package android.media { public final class MediaExtractor { ctor public MediaExtractor(); method public boolean advance(); + method protected void finalize(); method public long getCachedDuration(); method public android.media.MediaExtractor.CasInfo getCasInfo(int); method public android.media.DrmInitData getDrmInitData(); @@ -22799,6 +22935,7 @@ package android.media { method public android.graphics.Bitmap getFrameAtTime(long, int); method public android.graphics.Bitmap getFrameAtTime(long); method public android.graphics.Bitmap getFrameAtTime(); + method public android.graphics.Bitmap getScaledFrameAtTime(long, int, int, int); method public void release(); method public void setDataSource(java.lang.String) throws java.lang.IllegalArgumentException; method public void setDataSource(java.lang.String, java.util.Map) throws java.lang.IllegalArgumentException; @@ -22868,6 +23005,7 @@ package android.media { method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int); method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration); method public void deselectTrack(int) throws java.lang.IllegalStateException; + method protected void finalize(); method public int getAudioSessionId(); method public int getCurrentPosition(); method public android.media.MediaPlayer.DrmInfo getDrmInfo(); @@ -23063,6 +23201,7 @@ package android.media { public class MediaRecorder { ctor public MediaRecorder(); + method protected void finalize(); method public static final int getAudioSourceMax(); method public int getMaxAmplitude() throws java.lang.IllegalStateException; method public android.os.PersistableBundle getMetrics(); @@ -23334,6 +23473,7 @@ package android.media { public final class MediaSync { ctor public MediaSync(); method public final android.view.Surface createInputSurface(); + method protected void finalize(); method public void flush(); method public android.media.PlaybackParams getPlaybackParams(); method public android.media.SyncParams getSyncParams(); @@ -23453,6 +23593,10 @@ package android.media { public deprecated class RemoteControlClient.MetadataEditor extends android.media.MediaMetadataEditor { method public synchronized void apply(); + method public synchronized android.media.RemoteControlClient.MetadataEditor putBitmap(int, android.graphics.Bitmap) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putLong(int, long) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putObject(int, java.lang.Object) throws java.lang.IllegalArgumentException; + method public synchronized android.media.RemoteControlClient.MetadataEditor putString(int, java.lang.String) throws java.lang.IllegalArgumentException; field public static final int BITMAP_KEY_ARTWORK = 100; // 0x64 } @@ -23499,6 +23643,7 @@ package android.media { } public class Ringtone { + method protected void finalize(); method public android.media.AudioAttributes getAudioAttributes(); method public deprecated int getStreamType(); method public java.lang.String getTitle(android.content.Context); @@ -23552,6 +23697,7 @@ package android.media { ctor public deprecated SoundPool(int, int, int); method public final void autoPause(); method public final void autoResume(); + method protected void finalize(); method public int load(java.lang.String, int); method public int load(android.content.Context, int, int); method public int load(android.content.res.AssetFileDescriptor, int); @@ -23620,6 +23766,7 @@ package android.media { public class ToneGenerator { ctor public ToneGenerator(int, int); + method protected void finalize(); method public final int getAudioSessionId(); method public void release(); method public boolean startTone(int); @@ -23752,6 +23899,7 @@ package android.media { public final class VolumeShaper implements java.lang.AutoCloseable { method public void apply(android.media.VolumeShaper.Operation); method public void close(); + method protected void finalize(); method public float getVolume(); method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean); } @@ -23806,6 +23954,7 @@ package android.media.audiofx { } public class AudioEffect { + method protected void finalize(); method public android.media.audiofx.AudioEffect.Descriptor getDescriptor() throws java.lang.IllegalStateException; method public boolean getEnabled() throws java.lang.IllegalStateException; method public int getId() throws java.lang.IllegalStateException; @@ -24058,6 +24207,7 @@ package android.media.audiofx { public class Visualizer { ctor public Visualizer(int) throws java.lang.RuntimeException, java.lang.UnsupportedOperationException; + method protected void finalize(); method public int getCaptureSize() throws java.lang.IllegalStateException; method public static int[] getCaptureSizeRange(); method public boolean getEnabled(); @@ -24615,6 +24765,7 @@ package android.media.tv { method public static boolean isChannelUriForPassthroughInput(android.net.Uri); method public static boolean isChannelUriForTunerInput(android.net.Uri); method public static boolean isProgramUri(android.net.Uri); + method public static boolean isRecordedProgramUri(android.net.Uri); method public static void requestChannelBrowsable(android.content.Context, long); field public static final java.lang.String ACTION_INITIALIZE_PROGRAMS = "android.media.tv.action.INITIALIZE_PROGRAMS"; field public static final java.lang.String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT"; @@ -27181,7 +27332,8 @@ package android.net.wifi.p2p { method public abstract void onSuccess(); } - public static class WifiP2pManager.Channel { + public static class WifiP2pManager.Channel implements java.lang.AutoCloseable { + method public void close(); } public static abstract interface WifiP2pManager.ChannelListener { @@ -30720,6 +30872,7 @@ package android.os { field public static final int N = 24; // 0x18 field public static final int N_MR1 = 25; // 0x19 field public static final int O = 26; // 0x1a + field public static final int O_MR1 = 27; // 0x1b } public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable { @@ -30785,6 +30938,7 @@ package android.os { method public void putStringArrayList(java.lang.String, java.util.ArrayList); method public void readFromParcel(android.os.Parcel); method public void setClassLoader(java.lang.ClassLoader); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.Bundle EMPTY; @@ -31016,6 +31170,7 @@ package android.os { public abstract class FileObserver { ctor public FileObserver(java.lang.String); ctor public FileObserver(java.lang.String, int); + method protected void finalize(); method public abstract void onEvent(int, java.lang.String); method public void startWatching(); method public void stopWatching(); @@ -31188,11 +31343,11 @@ package android.os { public class MemoryFile { ctor public MemoryFile(java.lang.String, int) throws java.io.IOException; - method public synchronized boolean allowPurging(boolean) throws java.io.IOException; + method public deprecated synchronized boolean allowPurging(boolean) throws java.io.IOException; method public void close(); method public java.io.InputStream getInputStream(); method public java.io.OutputStream getOutputStream(); - method public boolean isPurgingAllowed(); + method public deprecated boolean isPurgingAllowed(); method public int length(); method public int readBytes(byte[], int, int, int) throws java.io.IOException; method public void writeBytes(byte[], int, int, int) throws java.io.IOException; @@ -31489,6 +31644,7 @@ package android.os { method public int describeContents(); method public android.os.PersistableBundle getPersistableBundle(java.lang.String); method public void putPersistableBundle(java.lang.String, android.os.PersistableBundle); + method public synchronized java.lang.String toString(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.PersistableBundle EMPTY; @@ -31617,6 +31773,20 @@ package android.os { field public static final android.os.Parcelable.Creator CREATOR; } + public final class SharedMemory implements java.io.Closeable android.os.Parcelable { + method public void close(); + method public static android.os.SharedMemory create(java.lang.String, int) throws android.system.ErrnoException; + method public int describeContents(); + method public int getSize(); + method public java.nio.ByteBuffer map(int, int, int) throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadOnly() throws android.system.ErrnoException; + method public java.nio.ByteBuffer mapReadWrite() throws android.system.ErrnoException; + method public boolean setProtect(int); + method public static void unmap(java.nio.ByteBuffer); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public class StatFs { ctor public StatFs(java.lang.String); method public deprecated int getAvailableBlocks(); @@ -31641,6 +31811,7 @@ package android.os { method public static android.os.StrictMode.VmPolicy getVmPolicy(); method public static void noteSlowCall(java.lang.String); method public static void setThreadPolicy(android.os.StrictMode.ThreadPolicy); + method public static void setViolationListener(android.os.StrictMode.ViolationListener); method public static void setVmPolicy(android.os.StrictMode.VmPolicy); } @@ -31674,6 +31845,10 @@ package android.os { method public android.os.StrictMode.ThreadPolicy.Builder permitUnbufferedIo(); } + public static abstract interface StrictMode.ViolationListener { + method public abstract void onViolation(java.lang.String); + } + public static final class StrictMode.VmPolicy { field public static final android.os.StrictMode.VmPolicy LAX; } @@ -32024,6 +32199,7 @@ package android.os.storage { method public android.os.storage.StorageVolume getStorageVolume(java.io.File); method public java.util.List getStorageVolumes(); method public java.util.UUID getUuidForPath(java.io.File) throws java.io.IOException; + method public boolean isAllocationSupported(java.io.FileDescriptor); method public boolean isCacheBehaviorGroup(java.io.File) throws java.io.IOException; method public boolean isCacheBehaviorTombstone(java.io.File) throws java.io.IOException; method public boolean isEncrypted(java.io.File); @@ -32715,9 +32891,7 @@ package android.print { public final class PrintManager { method public java.util.List getPrintJobs(); - method public java.util.List getPrintServices(int); method public android.print.PrintJob print(java.lang.String, android.print.PrintDocumentAdapter, android.print.PrintAttributes); - field public static final int ALL_SERVICES = 3; // 0x3 } public final class PrinterCapabilitiesInfo implements android.os.Parcelable { @@ -32847,13 +33021,6 @@ package android.printservice { field public static final java.lang.String SERVICE_META_DATA = "android.printservice"; } - public final class PrintServiceInfo implements android.os.Parcelable { - method public int describeContents(); - method public android.content.ComponentName getComponentName(); - method public void writeToParcel(android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - public abstract class PrinterDiscoverySession { ctor public PrinterDiscoverySession(); method public final void addPrinters(java.util.List); @@ -35120,7 +35287,7 @@ package android.provider { field public static final java.lang.String DISABLED_PRINT_SERVICES = "disabled_print_services"; field public static final java.lang.String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services"; field public static final java.lang.String ENABLED_INPUT_METHODS = "enabled_input_methods"; - field public static final java.lang.String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages"; + field public static final deprecated java.lang.String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages"; field public static final deprecated java.lang.String HTTP_PROXY = "http_proxy"; field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility"; field public static final deprecated java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; @@ -35152,6 +35319,7 @@ package android.provider { field public static final java.lang.String TTS_ENABLED_PLUGINS = "tts_enabled_plugins"; field public static final deprecated java.lang.String TTS_USE_DEFAULTS = "tts_use_defaults"; field public static final deprecated java.lang.String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled"; + field public static final java.lang.String USER_SETUP_COMPLETE = "user_setup_complete"; field public static final deprecated java.lang.String USE_GOOGLE_MAIL = "use_google_mail"; field public static final java.lang.String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; field public static final deprecated java.lang.String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; @@ -35834,6 +36002,7 @@ package android.renderscript { method public static android.renderscript.AllocationAdapter create1D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter create2D(android.renderscript.RenderScript, android.renderscript.Allocation); method public static android.renderscript.AllocationAdapter createTyped(android.renderscript.RenderScript, android.renderscript.Allocation, android.renderscript.Type); + method public synchronized void resize(int); method public void setFace(android.renderscript.Type.CubemapFace); method public void setLOD(int); method public void setX(int); @@ -37105,6 +37274,31 @@ package android.service.autofill { field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } + public final class CharSequenceTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public void apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int) throws java.lang.Exception; + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CharSequenceTransformation.Builder { + ctor public CharSequenceTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation.Builder addField(android.view.autofill.AutofillId, java.util.regex.Pattern, java.lang.String); + method public android.service.autofill.CharSequenceTransformation build(); + } + + public final class CustomDescription implements android.os.Parcelable { + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class CustomDescription.Builder { + ctor public CustomDescription.Builder(android.widget.RemoteViews); + method public android.service.autofill.CustomDescription.Builder addChild(int, android.service.autofill.Transformation); + method public android.service.autofill.CustomDescription build(); + } + public final class Dataset implements android.os.Parcelable { method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); @@ -37178,6 +37372,35 @@ package android.service.autofill { method public android.service.autofill.FillResponse.Builder setSaveInfo(android.service.autofill.SaveInfo); } + public final class ImageTransformation implements android.os.Parcelable android.service.autofill.Transformation { + method public void apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int) throws java.lang.Exception; + method public int describeContents(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public static class ImageTransformation.Builder { + ctor public ImageTransformation.Builder(android.view.autofill.AutofillId, java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation.Builder addOption(java.util.regex.Pattern, int); + method public android.service.autofill.ImageTransformation build(); + } + + public final class LuhnChecksumValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public LuhnChecksumValidator(android.view.autofill.AutofillId...); + method public int describeContents(); + method public boolean isValid(android.service.autofill.ValueFinder); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + + public final class RegexValidator implements android.os.Parcelable android.service.autofill.Validator { + ctor public RegexValidator(android.view.autofill.AutofillId, java.util.regex.Pattern); + method public int describeContents(); + method public boolean isValid(android.service.autofill.ValueFinder); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + } + public final class SaveCallback { method public void onFailure(java.lang.CharSequence); method public void onSuccess(); @@ -37200,11 +37423,14 @@ package android.service.autofill { public static final class SaveInfo.Builder { ctor public SaveInfo.Builder(int, android.view.autofill.AutofillId[]); + ctor public SaveInfo.Builder(int); method public android.service.autofill.SaveInfo build(); + method public android.service.autofill.SaveInfo.Builder setCustomDescription(android.service.autofill.CustomDescription); method public android.service.autofill.SaveInfo.Builder setDescription(java.lang.CharSequence); method public android.service.autofill.SaveInfo.Builder setFlags(int); method public android.service.autofill.SaveInfo.Builder setNegativeAction(int, android.content.IntentSender); method public android.service.autofill.SaveInfo.Builder setOptionalIds(android.view.autofill.AutofillId[]); + method public android.service.autofill.SaveInfo.Builder setValidator(android.service.autofill.Validator); } public final class SaveRequest implements android.os.Parcelable { @@ -37215,6 +37441,21 @@ package android.service.autofill { field public static final android.os.Parcelable.Creator CREATOR; } + public abstract interface Transformation { + } + + public abstract interface Validator { + } + + public final class Validators { + method public static android.service.autofill.Validator and(android.service.autofill.Validator...); + method public static android.service.autofill.Validator or(android.service.autofill.Validator...); + } + + public abstract interface ValueFinder { + method public abstract java.lang.String findByAutofillId(android.view.autofill.AutofillId); + } + } package android.service.carrier { @@ -37522,7 +37763,6 @@ package android.service.notification { method public static void requestRebind(android.content.ComponentName); method public final void requestUnbind(); method public final void setNotificationsShown(java.lang.String[]); - method public final void snoozeNotification(java.lang.String, java.lang.String); method public final void snoozeNotification(java.lang.String, long); method public final void updateNotificationChannel(java.lang.String, android.os.UserHandle, android.app.NotificationChannel); field public static final int HINT_HOST_DISABLE_CALL_EFFECTS = 4; // 0x4 @@ -37563,14 +37803,12 @@ package android.service.notification { public static class NotificationListenerService.Ranking { ctor public NotificationListenerService.Ranking(); method public boolean canShowBadge(); - method public java.util.List getAdditionalPeople(); method public android.app.NotificationChannel getChannel(); method public int getImportance(); method public java.lang.CharSequence getImportanceExplanation(); method public java.lang.String getKey(); method public java.lang.String getOverrideGroupKey(); method public int getRank(); - method public java.util.List getSnoozeCriteria(); method public int getSuppressedVisualEffects(); method public boolean isAmbient(); method public boolean matchesInterruptionFilter(); @@ -37889,8 +38127,10 @@ package android.service.wallpaper { method public android.view.SurfaceHolder getSurfaceHolder(); method public boolean isPreview(); method public boolean isVisible(); + method public void notifyColorsChanged(); method public void onApplyWindowInsets(android.view.WindowInsets); method public android.os.Bundle onCommand(java.lang.String, int, int, int, android.os.Bundle, boolean); + method public android.app.WallpaperColors onComputeColors(); method public void onCreate(android.view.SurfaceHolder); method public void onDesiredSizeChanged(int, int); method public void onDestroy(); @@ -39754,6 +39994,7 @@ package android.telephony { field public static final java.lang.String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string"; field public static final java.lang.String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array"; field public static final java.lang.String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool"; + field public static final java.lang.String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool"; field public static final java.lang.String KEY_DROP_VIDEO_CALL_WHEN_ANSWERING_AUDIO_CALL_BOOL = "drop_video_call_when_answering_audio_call_bool"; field public static final java.lang.String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool"; field public static final java.lang.String KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT = "duration_blocking_disabled_after_emergency_int"; @@ -40505,6 +40746,7 @@ package android.telephony { field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT"; field public static final java.lang.String EXTRA_HIDE_PUBLIC_SETTINGS = "android.telephony.extra.HIDE_PUBLIC_SETTINGS"; field public static final java.lang.String EXTRA_INCOMING_NUMBER = "incoming_number"; + field public static final java.lang.String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH"; field public static final java.lang.String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; field public static final java.lang.String EXTRA_NOTIFICATION_COUNT = "android.telephony.extra.NOTIFICATION_COUNT"; field public static final java.lang.String EXTRA_PHONE_ACCOUNT_HANDLE = "android.telephony.extra.PHONE_ACCOUNT_HANDLE"; @@ -40706,6 +40948,7 @@ package android.telephony.gsm { public static deprecated class SmsMessage.SubmitPdu { ctor public deprecated SmsMessage.SubmitPdu(); + method public deprecated java.lang.String toString(); field public deprecated byte[] encodedMessage; field public deprecated byte[] encodedScAddress; } @@ -40975,6 +41218,7 @@ package android.test { method public java.util.List getTestCases(); method public java.lang.String getTestClassName(); method public junit.framework.TestResult getTestResult(); + method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException; method protected void runFailed(java.lang.String); method public void runTest(); method public void runTest(junit.framework.TestResult); @@ -41235,10 +41479,12 @@ package android.test.mock { ctor protected MockContentProvider(); ctor public MockContentProvider(android.content.Context); ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); + method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public java.lang.String getType(android.net.Uri); method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); method public boolean onCreate(); + method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle); method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String); method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]); } @@ -41464,6 +41710,7 @@ package android.test.mock { method public int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public java.lang.String[] getPackagesForUid(int); method public java.util.List getPackagesHoldingPermissions(java.lang.String[], int); + method public java.lang.String getPermissionControllerPackageName(); method public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public int getPreferredActivities(java.util.List, java.util.List, java.lang.String); @@ -41512,6 +41759,10 @@ package android.test.mock { public deprecated class MockResources extends android.content.res.Resources { ctor public MockResources(); + method public int getColor(int) throws android.content.res.Resources.NotFoundException; + method public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException; + method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException; + method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); } } @@ -41747,6 +41998,7 @@ package android.text { public static class InputFilter.AllCaps implements android.text.InputFilter { ctor public InputFilter.AllCaps(); + ctor public InputFilter.AllCaps(java.util.Locale); method public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int); } @@ -42759,6 +43011,7 @@ package android.text.style { public abstract class MetricAffectingSpan extends android.text.style.CharacterStyle implements android.text.style.UpdateLayout { ctor public MetricAffectingSpan(); + method public android.text.style.MetricAffectingSpan getUnderlying(); method public abstract void updateMeasureState(android.text.TextPaint); } @@ -43440,14 +43693,28 @@ package android.transition { public class TransitionSet extends android.transition.Transition { ctor public TransitionSet(); ctor public TransitionSet(android.content.Context, android.util.AttributeSet); + method public android.transition.TransitionSet addListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet addTarget(android.view.View); + method public android.transition.TransitionSet addTarget(int); + method public android.transition.TransitionSet addTarget(java.lang.String); + method public android.transition.TransitionSet addTarget(java.lang.Class); method public android.transition.TransitionSet addTransition(android.transition.Transition); method public void captureEndValues(android.transition.TransitionValues); method public void captureStartValues(android.transition.TransitionValues); + method public android.transition.TransitionSet clone(); method public int getOrdering(); method public android.transition.Transition getTransitionAt(int); method public int getTransitionCount(); + method public android.transition.TransitionSet removeListener(android.transition.Transition.TransitionListener); + method public android.transition.TransitionSet removeTarget(int); + method public android.transition.TransitionSet removeTarget(android.view.View); + method public android.transition.TransitionSet removeTarget(java.lang.Class); + method public android.transition.TransitionSet removeTarget(java.lang.String); method public android.transition.TransitionSet removeTransition(android.transition.Transition); + method public android.transition.TransitionSet setDuration(long); + method public android.transition.TransitionSet setInterpolator(android.animation.TimeInterpolator); method public android.transition.TransitionSet setOrdering(int); + method public android.transition.TransitionSet setStartDelay(long); field public static final int ORDERING_SEQUENTIAL = 1; // 0x1 field public static final int ORDERING_TOGETHER = 0; // 0x0 } @@ -43612,6 +43879,9 @@ package android.util { public class Base64InputStream extends java.io.FilterInputStream { ctor public Base64InputStream(java.io.InputStream, int); + method public int available(); + method public void mark(int); + method public void reset(); } public class Base64OutputStream extends java.io.FilterOutputStream { @@ -44446,6 +44716,7 @@ package android.view { method public abstract void invalidate(); method public void invalidateContentRect(); method public boolean isTitleOptional(); + method public boolean isUiFocusable(); method public void onWindowFocusChanged(boolean); method public abstract void setCustomView(android.view.View); method public abstract void setSubtitle(java.lang.CharSequence); @@ -44744,9 +45015,13 @@ package android.view { field public static final int CONTEXT_CLICK = 6; // 0x6 field public static final int FLAG_IGNORE_GLOBAL_SETTING = 2; // 0x2 field public static final int FLAG_IGNORE_VIEW_SETTING = 1; // 0x1 + field public static final int KEYBOARD_PRESS = 3; // 0x3 + field public static final int KEYBOARD_RELEASE = 7; // 0x7 field public static final int KEYBOARD_TAP = 3; // 0x3 field public static final int LONG_PRESS = 0; // 0x0 + field public static final int TEXT_HANDLE_MOVE = 9; // 0x9 field public static final int VIRTUAL_KEY = 1; // 0x1 + field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8 } public class InflateException extends java.lang.RuntimeException { @@ -44777,6 +45052,7 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); + method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -45897,6 +46173,7 @@ package android.view { method public android.graphics.Canvas lockCanvas(); method public android.graphics.Canvas lockCanvas(android.graphics.Rect); method protected final void onDraw(android.graphics.Canvas); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setOpaque(boolean); method public void setSurfaceTexture(android.graphics.SurfaceTexture); method public void setSurfaceTextureListener(android.view.TextureView.SurfaceTextureListener); @@ -46392,6 +46669,7 @@ package android.view { method public void setFocusable(int); method public void setFocusableInTouchMode(boolean); method public void setFocusedByDefault(boolean); + method public final void setFocusedInCluster(); method public void setForeground(android.graphics.drawable.Drawable); method public void setForegroundGravity(int); method public void setForegroundTintList(android.content.res.ColorStateList); @@ -46929,6 +47207,7 @@ package android.view { method public int getLayoutMode(); method public android.animation.LayoutTransition getLayoutTransition(); method public int getNestedScrollAxes(); + method public android.view.ViewGroupOverlay getOverlay(); method public int getPersistentDrawingCache(); method public boolean getTouchscreenBlocksFocus(); method public int indexOfChild(android.view.View); @@ -47359,6 +47638,7 @@ package android.view { method public final boolean isActive(); method public abstract boolean isFloating(); method public abstract boolean isShortcutKey(int, android.view.KeyEvent); + method public boolean isWideColorGamut(); method public final void makeActive(); method protected abstract void onActive(); method public abstract void onConfigurationChanged(android.content.res.Configuration); @@ -47622,12 +47902,12 @@ package android.view { field public static final int FLAG_SCALED = 16384; // 0x4000 field public static final int FLAG_SECURE = 8192; // 0x2000 field public static final int FLAG_SHOW_WALLPAPER = 1048576; // 0x100000 - field public static final int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 + field public static final deprecated int FLAG_SHOW_WHEN_LOCKED = 524288; // 0x80000 field public static final int FLAG_SPLIT_TOUCH = 8388608; // 0x800000 field public static final deprecated int FLAG_TOUCHABLE_WHEN_WAKING = 64; // 0x40 field public static final int FLAG_TRANSLUCENT_NAVIGATION = 134217728; // 0x8000000 field public static final int FLAG_TRANSLUCENT_STATUS = 67108864; // 0x4000000 - field public static final int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 + field public static final deprecated int FLAG_TURN_SCREEN_ON = 2097152; // 0x200000 field public static final int FLAG_WATCH_OUTSIDE_TOUCH = 262144; // 0x40000 field public static final int FORMAT_CHANGED = 8; // 0x8 field public static final int LAST_APPLICATION_WINDOW = 99; // 0x63 @@ -47793,6 +48073,7 @@ package android.view.accessibility { method public java.util.List getEnabledAccessibilityServiceList(int); method public java.util.List getInstalledAccessibilityServiceList(); method public void interrupt(); + method public static boolean isAccessibilityButtonSupported(); method public boolean isEnabled(); method public boolean isTouchExplorationEnabled(); method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); @@ -48213,6 +48494,7 @@ package android.view.animation { ctor public Animation(android.content.Context, android.util.AttributeSet); method protected void applyTransformation(float, android.view.animation.Transformation); method public void cancel(); + method protected android.view.animation.Animation clone() throws java.lang.CloneNotSupportedException; method public long computeDurationHint(); method protected void ensureInterpolator(); method public int getBackgroundColor(); @@ -48284,6 +48566,7 @@ package android.view.animation { ctor public AnimationSet(android.content.Context, android.util.AttributeSet); ctor public AnimationSet(boolean); method public void addAnimation(android.view.animation.Animation); + method protected android.view.animation.AnimationSet clone() throws java.lang.CloneNotSupportedException; method public java.util.List getAnimations(); } @@ -48470,6 +48753,7 @@ package android.view.animation { package android.view.autofill { public final class AutofillId implements android.os.Parcelable { + ctor public AutofillId(int); method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; @@ -48488,6 +48772,8 @@ package android.view.autofill { method public void notifyViewEntered(android.view.View, int, android.graphics.Rect); method public void notifyViewExited(android.view.View); method public void notifyViewExited(android.view.View, int); + method public void notifyViewVisibilityChanged(android.view.View, boolean); + method public void notifyViewVisibilityChanged(android.view.View, int, boolean); method public void registerCallback(android.view.autofill.AutofillManager.AutofillCallback); method public void requestAutofill(android.view.View); method public void requestAutofill(android.view.View, int, android.graphics.Rect); @@ -49134,6 +49420,10 @@ package android.webkit { public final deprecated class CookieSyncManager extends android.webkit.WebSyncManager { method public static android.webkit.CookieSyncManager createInstance(android.content.Context); method public static android.webkit.CookieSyncManager getInstance(); + method public deprecated void resetSync(); + method public deprecated void startSync(); + method public deprecated void stopSync(); + method public deprecated void sync(); method protected deprecated void syncFromRamToFlash(); field protected static final java.lang.String LOGTAG = "websync"; field protected android.webkit.WebViewDatabase mDataBase; @@ -49215,6 +49505,13 @@ package android.webkit { method public abstract int rendererPriorityAtExit(); } + public abstract class SafeBrowsingResponse { + ctor public SafeBrowsingResponse(); + method public abstract void backToSafety(boolean); + method public abstract void proceed(boolean); + method public abstract void showInterstitial(boolean); + } + public class ServiceWorkerClient { ctor public ServiceWorkerClient(); method public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebResourceRequest); @@ -49633,8 +49930,10 @@ package android.webkit { method public int getProgress(); method public boolean getRendererPriorityWaivedWhenNotVisible(); method public int getRendererRequestedPriority(); + method public static android.net.Uri getSafeBrowsingPrivacyPolicyUrl(); method public deprecated float getScale(); method public android.webkit.WebSettings getSettings(); + method public android.view.textclassifier.TextClassifier getTextClassifier(); method public java.lang.String getTitle(); method public java.lang.String getUrl(); method public android.webkit.WebChromeClient getWebChromeClient(); @@ -49681,11 +49980,15 @@ package android.webkit { method public void setNetworkAvailable(boolean); method public deprecated void setPictureListener(android.webkit.WebView.PictureListener); method public void setRendererPriorityPolicy(int, boolean); + method public static void setSafeBrowsingWhitelist(java.util.List, android.webkit.ValueCallback); + method public void setTextClassifier(android.view.textclassifier.TextClassifier); method public deprecated void setVerticalScrollbarOverlay(boolean); method public void setWebChromeClient(android.webkit.WebChromeClient); method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); + method public deprecated boolean shouldDelayChildPressedState(); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void startSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); @@ -49748,6 +50051,7 @@ package android.webkit { method public void onReceivedLoginRequest(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String); method public void onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError); method public boolean onRenderProcessGone(android.webkit.WebView, android.webkit.RenderProcessGoneDetail); + method public void onSafeBrowsingHit(android.webkit.WebView, android.webkit.WebResourceRequest, int, android.webkit.SafeBrowsingResponse); method public void onScaleChanged(android.webkit.WebView, float, float); method public deprecated void onTooManyRedirects(android.webkit.WebView, android.os.Message, android.os.Message); method public void onUnhandledKeyEvent(android.webkit.WebView, android.view.KeyEvent); @@ -49772,6 +50076,10 @@ package android.webkit { field public static final int ERROR_UNSAFE_RESOURCE = -16; // 0xfffffff0 field public static final int ERROR_UNSUPPORTED_AUTH_SCHEME = -3; // 0xfffffffd field public static final int ERROR_UNSUPPORTED_SCHEME = -10; // 0xfffffff6 + field public static final int SAFE_BROWSING_THREAT_MALWARE = 1; // 0x1 + field public static final int SAFE_BROWSING_THREAT_PHISHING = 2; // 0x2 + field public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; // 0x0 + field public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; // 0x3 } public abstract class WebViewDatabase { @@ -49808,6 +50116,7 @@ package android.widget { method public void clearTextFilter(); method public void deferNotifyDataSetChanged(); method public void fling(int); + method public android.widget.AbsListView.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCacheColorHint(); method public int getCheckedItemCount(); method public long[] getCheckedItemIds(); @@ -49974,6 +50283,9 @@ package android.widget { ctor public ActionMenuView(android.content.Context); ctor public ActionMenuView(android.content.Context, android.util.AttributeSet); method public void dismissPopupMenus(); + method protected android.widget.ActionMenuView.LayoutParams generateDefaultLayoutParams(); + method public android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.ActionMenuView.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public android.view.Menu getMenu(); method public android.graphics.drawable.Drawable getOverflowIcon(); method public int getPopupTheme(); @@ -50149,7 +50461,6 @@ package android.widget { method public void addAll(T...); method public void clear(); method public static android.widget.ArrayAdapter createFromResource(android.content.Context, int, int); - method public java.lang.CharSequence[] getAutofillOptions(); method public android.content.Context getContext(); method public int getCount(); method public android.content.res.Resources.Theme getDropDownViewTheme(); @@ -50239,6 +50550,7 @@ package android.widget { method public void notifyDataSetChanged(); method public void notifyDataSetInvalidated(); method public void registerDataSetObserver(android.database.DataSetObserver); + method public void setAutofillOptions(java.lang.CharSequence...); method public void unregisterDataSetObserver(android.database.DataSetObserver); } @@ -50521,6 +50833,7 @@ package android.widget { ctor public EditText(android.content.Context, android.util.AttributeSet, int); ctor public EditText(android.content.Context, android.util.AttributeSet, int, int); method public void extendSelection(int); + method public android.text.Editable getText(); method public void selectAll(); method public void setSelection(int, int); method public void setSelection(int); @@ -50642,6 +50955,8 @@ package android.widget { ctor public FrameLayout(android.content.Context, android.util.AttributeSet); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int); ctor public FrameLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.FrameLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.FrameLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public deprecated boolean getConsiderGoneChildrenWhenMeasuring(); method public boolean getMeasureAllChildren(); method protected void onLayout(boolean, int, int, int, int); @@ -50688,6 +51003,9 @@ package android.widget { ctor public GridLayout(android.content.Context, android.util.AttributeSet); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int); ctor public GridLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.GridLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.GridLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.GridLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getAlignmentMode(); method public int getColumnCount(); method public int getOrientation(); @@ -50900,6 +51218,9 @@ package android.widget { ctor public LinearLayout(android.content.Context, android.util.AttributeSet); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int); ctor public LinearLayout(android.content.Context, android.util.AttributeSet, int, int); + method protected android.widget.LinearLayout.LayoutParams generateDefaultLayoutParams(); + method public android.widget.LinearLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.LinearLayout.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getBaselineAlignedChildIndex(); method public android.graphics.drawable.Drawable getDividerDrawable(); method public int getDividerPadding(); @@ -51288,6 +51609,8 @@ package android.widget { method public final synchronized void incrementSecondaryProgressBy(int); method public boolean isAnimating(); method public synchronized boolean isIndeterminate(); + method protected synchronized void onDraw(android.graphics.Canvas); + method protected synchronized void onMeasure(int, int); method public void onRestoreInstanceState(android.os.Parcelable); method public android.os.Parcelable onSaveInstanceState(); method public synchronized void setIndeterminate(boolean); @@ -51343,6 +51666,7 @@ package android.widget { ctor public RadioGroup(android.content.Context, android.util.AttributeSet); method public void check(int); method public void clearCheck(); + method public android.widget.RadioGroup.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getCheckedRadioButtonId(); method public void setOnCheckedChangeListener(android.widget.RadioGroup.OnCheckedChangeListener); } @@ -51385,6 +51709,7 @@ package android.widget { ctor public RelativeLayout(android.content.Context, android.util.AttributeSet); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int); ctor public RelativeLayout(android.content.Context, android.util.AttributeSet, int, int); + method public android.widget.RelativeLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public int getGravity(); method protected void onLayout(boolean, int, int, int, int); method public void setGravity(int); @@ -51929,6 +52254,7 @@ package android.widget { public class TableLayout extends android.widget.LinearLayout { ctor public TableLayout(android.content.Context); ctor public TableLayout(android.content.Context, android.util.AttributeSet); + method public android.widget.TableLayout.LayoutParams generateLayoutParams(android.util.AttributeSet); method public boolean isColumnCollapsed(int); method public boolean isColumnShrinkable(int); method public boolean isColumnStretchable(int); @@ -51953,6 +52279,7 @@ package android.widget { public class TableRow extends android.widget.LinearLayout { ctor public TableRow(android.content.Context); ctor public TableRow(android.content.Context, android.util.AttributeSet); + method public android.widget.TableRow.LayoutParams generateLayoutParams(android.util.AttributeSet); method public android.view.View getVirtualChildAt(int); method public int getVirtualChildCount(); } @@ -52301,6 +52628,7 @@ package android.widget { ctor public ToggleButton(android.content.Context); method public java.lang.CharSequence getTextOff(); method public java.lang.CharSequence getTextOn(); + method public void setBackgroundDrawable(android.graphics.drawable.Drawable); method public void setTextOff(java.lang.CharSequence); method public void setTextOn(java.lang.CharSequence); } @@ -52312,6 +52640,9 @@ package android.widget { ctor public Toolbar(android.content.Context, android.util.AttributeSet, int, int); method public void collapseActionView(); method public void dismissPopupMenus(); + method protected android.widget.Toolbar.LayoutParams generateDefaultLayoutParams(); + method public android.widget.Toolbar.LayoutParams generateLayoutParams(android.util.AttributeSet); + method protected android.widget.Toolbar.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams); method public int getContentInsetEnd(); method public int getContentInsetEndWithActions(); method public int getContentInsetLeft(); @@ -52836,6 +53167,13 @@ package dalvik.system { public class BaseDexClassLoader extends java.lang.ClassLoader { ctor public BaseDexClassLoader(java.lang.String, java.io.File, java.lang.String, java.lang.ClassLoader); method public java.lang.String findLibrary(java.lang.String); + method protected java.util.Enumeration findResources(java.lang.String); + method protected synchronized java.lang.Package getPackage(java.lang.String); + } + + public final class DelegateLastClassLoader extends dalvik.system.PathClassLoader { + ctor public DelegateLastClassLoader(java.lang.String, java.lang.ClassLoader); + ctor public DelegateLastClassLoader(java.lang.String, java.lang.String, java.lang.ClassLoader); } public class DexClassLoader extends dalvik.system.BaseDexClassLoader { @@ -53058,6 +53396,10 @@ package java.io { public class BufferedInputStream extends java.io.FilterInputStream { ctor public BufferedInputStream(java.io.InputStream); ctor public BufferedInputStream(java.io.InputStream, int); + method public synchronized int available() throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; + method public synchronized long skip(long) throws java.io.IOException; field protected volatile byte[] buf; field protected int count; field protected int marklimit; @@ -53068,6 +53410,9 @@ package java.io { public class BufferedOutputStream extends java.io.FilterOutputStream { ctor public BufferedOutputStream(java.io.OutputStream); ctor public BufferedOutputStream(java.io.OutputStream, int); + method public synchronized void flush() throws java.io.IOException; + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected byte[] buf; field protected int count; } @@ -53093,7 +53438,12 @@ package java.io { public class ByteArrayInputStream extends java.io.InputStream { ctor public ByteArrayInputStream(byte[]); ctor public ByteArrayInputStream(byte[], int, int); + method public synchronized int available(); + method public void mark(int); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected byte[] buf; field protected int count; field protected int mark; @@ -53106,9 +53456,11 @@ package java.io { method public synchronized void reset(); method public synchronized int size(); method public synchronized byte[] toByteArray(); + method public synchronized java.lang.String toString(); method public synchronized java.lang.String toString(java.lang.String) throws java.io.UnsupportedEncodingException; method public deprecated synchronized java.lang.String toString(int); method public synchronized void write(int); + method public synchronized void write(byte[], int, int); method public synchronized void writeTo(java.io.OutputStream) throws java.io.IOException; field protected byte[] buf; field protected int count; @@ -53128,12 +53480,17 @@ package java.io { public class CharArrayWriter extends java.io.Writer { ctor public CharArrayWriter(); ctor public CharArrayWriter(int); + method public java.io.CharArrayWriter append(java.lang.CharSequence); + method public java.io.CharArrayWriter append(java.lang.CharSequence, int, int); + method public java.io.CharArrayWriter append(char); method public void close(); method public void flush(); method public void reset(); method public int size(); method public char[] toCharArray(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String, int, int); method public void writeTo(java.io.Writer) throws java.io.IOException; field protected char[] buf; field protected int count; @@ -53220,6 +53577,8 @@ package java.io { public class DataOutputStream extends java.io.FilterOutputStream implements java.io.DataOutput { ctor public DataOutputStream(java.io.OutputStream); method public final int size(); + method public synchronized void write(int) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; method public final void writeBoolean(boolean) throws java.io.IOException; method public final void writeByte(int) throws java.io.IOException; method public final void writeBytes(java.lang.String) throws java.io.IOException; @@ -53319,6 +53678,7 @@ package java.io { ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileInputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public int read() throws java.io.IOException; @@ -53335,6 +53695,7 @@ package java.io { ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException; ctor public FileOutputStream(java.io.FileDescriptor); + method protected void finalize() throws java.io.IOException; method public java.nio.channels.FileChannel getChannel(); method public final java.io.FileDescriptor getFD() throws java.io.IOException; method public void write(int) throws java.io.IOException; @@ -53448,6 +53809,8 @@ package java.io { public deprecated class LineNumberInputStream extends java.io.FilterInputStream { ctor public LineNumberInputStream(java.io.InputStream); method public int getLineNumber(); + method public void mark(int); + method public void reset() throws java.io.IOException; method public void setLineNumber(int); } @@ -53677,8 +54040,10 @@ package java.io { ctor public PipedInputStream(java.io.PipedOutputStream, int) throws java.io.IOException; ctor public PipedInputStream(); ctor public PipedInputStream(int); + method public synchronized int available() throws java.io.IOException; method public void connect(java.io.PipedOutputStream) throws java.io.IOException; method public synchronized int read() throws java.io.IOException; + method public synchronized int read(byte[], int, int) throws java.io.IOException; method protected synchronized void receive(int) throws java.io.IOException; field protected static final int PIPE_SIZE = 1024; // 0x400 field protected byte[] buffer; @@ -53690,6 +54055,7 @@ package java.io { ctor public PipedOutputStream(java.io.PipedInputStream) throws java.io.IOException; ctor public PipedOutputStream(); method public synchronized void connect(java.io.PipedInputStream) throws java.io.IOException; + method public synchronized void flush() throws java.io.IOException; method public void write(int) throws java.io.IOException; } @@ -53700,7 +54066,9 @@ package java.io { ctor public PipedReader(int); method public void close() throws java.io.IOException; method public void connect(java.io.PipedWriter) throws java.io.IOException; + method public synchronized int read() throws java.io.IOException; method public synchronized int read(char[], int, int) throws java.io.IOException; + method public synchronized boolean ready() throws java.io.IOException; } public class PipedWriter extends java.io.Writer { @@ -53725,6 +54093,8 @@ package java.io { method public java.io.PrintStream append(char); method public boolean checkError(); method protected void clearError(); + method public void close(); + method public void flush(); method public java.io.PrintStream format(java.lang.String, java.lang.Object...); method public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object...); method public void print(boolean); @@ -53749,6 +54119,8 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); + method public void write(byte[], int, int); } public class PrintWriter extends java.io.Writer { @@ -53760,6 +54132,9 @@ package java.io { ctor public PrintWriter(java.lang.String, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; ctor public PrintWriter(java.io.File) throws java.io.FileNotFoundException; ctor public PrintWriter(java.io.File, java.lang.String) throws java.io.FileNotFoundException, java.io.UnsupportedEncodingException; + method public java.io.PrintWriter append(java.lang.CharSequence); + method public java.io.PrintWriter append(java.lang.CharSequence, int, int); + method public java.io.PrintWriter append(char); method public boolean checkError(); method protected void clearError(); method public void close(); @@ -53788,13 +54163,18 @@ package java.io { method public void println(java.lang.String); method public void println(java.lang.Object); method protected void setError(); + method public void write(int); method public void write(char[], int, int); + method public void write(char[]); + method public void write(java.lang.String, int, int); + method public void write(java.lang.String); field protected java.io.Writer out; } public class PushbackInputStream extends java.io.FilterInputStream { ctor public PushbackInputStream(java.io.InputStream, int); ctor public PushbackInputStream(java.io.InputStream); + method public synchronized void close() throws java.io.IOException; method public void unread(int) throws java.io.IOException; method public void unread(byte[], int, int) throws java.io.IOException; method public void unread(byte[]) throws java.io.IOException; @@ -53918,7 +54298,11 @@ package java.io { public deprecated class StringBufferInputStream extends java.io.InputStream { ctor public StringBufferInputStream(java.lang.String); + method public synchronized int available(); method public synchronized int read(); + method public synchronized int read(byte[], int, int); + method public synchronized void reset(); + method public synchronized long skip(long); field protected java.lang.String buffer; field protected int count; field protected int pos; @@ -53933,10 +54317,16 @@ package java.io { public class StringWriter extends java.io.Writer { ctor public StringWriter(); ctor public StringWriter(int); + method public java.io.StringWriter append(java.lang.CharSequence); + method public java.io.StringWriter append(java.lang.CharSequence, int, int); + method public java.io.StringWriter append(char); method public void close() throws java.io.IOException; method public void flush(); method public java.lang.StringBuffer getBuffer(); + method public void write(int); method public void write(char[], int, int); + method public void write(java.lang.String); + method public void write(java.lang.String, int, int); } public class SyncFailedException extends java.io.IOException { @@ -53951,6 +54341,7 @@ package java.io { public class UncheckedIOException extends java.lang.RuntimeException { ctor public UncheckedIOException(java.lang.String, java.io.IOException); ctor public UncheckedIOException(java.io.IOException); + method public java.io.IOException getCause(); } public class UnsupportedEncodingException extends java.io.IOException { @@ -53960,6 +54351,7 @@ package java.io { public class WriteAbortedException extends java.io.ObjectStreamException { ctor public WriteAbortedException(java.lang.String, java.lang.Exception); + method public java.lang.Throwable getCause(); field public java.lang.Exception detail; } @@ -54727,6 +55119,7 @@ package java.lang { ctor public ClassNotFoundException(); ctor public ClassNotFoundException(java.lang.String); ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -54831,6 +55224,7 @@ package java.lang { ctor public ExceptionInInitializerError(); ctor public ExceptionInInitializerError(java.lang.Throwable); ctor public ExceptionInInitializerError(java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); } @@ -55618,8 +56012,16 @@ package java.lang { method public synchronized java.lang.StringBuffer append(float); method public synchronized java.lang.StringBuffer append(double); method public synchronized java.lang.StringBuffer appendCodePoint(int); + method public synchronized int capacity(); + method public synchronized char charAt(int); + method public synchronized int codePointAt(int); + method public synchronized int codePointBefore(int); + method public synchronized int codePointCount(int, int); method public synchronized java.lang.StringBuffer delete(int, int); method public synchronized java.lang.StringBuffer deleteCharAt(int); + method public synchronized void ensureCapacity(int); + method public synchronized void getChars(int, int, char[], int); + method public synchronized int indexOf(java.lang.String, int); method public synchronized java.lang.StringBuffer insert(int, char[], int, int); method public synchronized java.lang.StringBuffer insert(int, java.lang.Object); method public synchronized java.lang.StringBuffer insert(int, java.lang.String); @@ -55632,9 +56034,18 @@ package java.lang { method public java.lang.StringBuffer insert(int, long); method public java.lang.StringBuffer insert(int, float); method public java.lang.StringBuffer insert(int, double); + method public synchronized int lastIndexOf(java.lang.String, int); + method public synchronized int length(); + method public synchronized int offsetByCodePoints(int, int); method public synchronized java.lang.StringBuffer replace(int, int, java.lang.String); method public synchronized java.lang.StringBuffer reverse(); + method public synchronized void setCharAt(int, char); + method public synchronized void setLength(int); + method public synchronized java.lang.CharSequence subSequence(int, int); + method public synchronized java.lang.String substring(int); + method public synchronized java.lang.String substring(int, int); method public synchronized java.lang.String toString(); + method public synchronized void trimToSize(); } public final class StringBuilder extends java.lang.AbstractStringBuilder implements java.lang.CharSequence java.io.Serializable { @@ -56289,6 +56700,7 @@ package java.lang.reflect { ctor protected InvocationTargetException(); ctor public InvocationTargetException(java.lang.Throwable); ctor public InvocationTargetException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getTargetException(); } @@ -56404,6 +56816,7 @@ package java.lang.reflect { public class UndeclaredThrowableException extends java.lang.RuntimeException { ctor public UndeclaredThrowableException(java.lang.Throwable); ctor public UndeclaredThrowableException(java.lang.Throwable, java.lang.String); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getUndeclaredThrowable(); } @@ -57301,6 +57714,7 @@ package java.net { method public java.lang.String getQuery(); method public java.lang.String getRef(); method public java.lang.String getUserInfo(); + method public synchronized int hashCode(); method public java.net.URLConnection openConnection() throws java.io.IOException; method public java.net.URLConnection openConnection(java.net.Proxy) throws java.io.IOException; method public final java.io.InputStream openStream() throws java.io.IOException; @@ -57530,7 +57944,6 @@ package java.nio { method public final int arrayOffset(); method public abstract java.nio.CharBuffer asReadOnlyBuffer(); method public final char charAt(int); - method public java.util.stream.IntStream chars(); method public abstract java.nio.CharBuffer compact(); method public int compareTo(java.nio.CharBuffer); method public abstract java.nio.CharBuffer duplicate(); @@ -58387,6 +58800,7 @@ package java.nio.file { public final class DirectoryIteratorException extends java.util.ConcurrentModificationException { ctor public DirectoryIteratorException(java.io.IOException); + method public java.io.IOException getCause(); } public class DirectoryNotEmptyException extends java.nio.file.FileSystemException { @@ -59352,9 +59766,11 @@ package java.security { public static class KeyStore.PasswordProtection implements javax.security.auth.Destroyable java.security.KeyStore.ProtectionParameter { ctor public KeyStore.PasswordProtection(char[]); ctor public KeyStore.PasswordProtection(char[], java.lang.String, java.security.spec.AlgorithmParameterSpec); + method public synchronized void destroy() throws javax.security.auth.DestroyFailedException; method public synchronized char[] getPassword(); method public java.lang.String getProtectionAlgorithm(); method public java.security.spec.AlgorithmParameterSpec getProtectionParameters(); + method public synchronized boolean isDestroyed(); } public static final class KeyStore.PrivateKeyEntry implements java.security.KeyStore.Entry { @@ -59534,6 +59950,7 @@ package java.security { public class PrivilegedActionException extends java.lang.Exception { ctor public PrivilegedActionException(java.lang.Exception); + method public java.lang.Throwable getCause(); method public java.lang.Exception getException(); } @@ -59556,22 +59973,30 @@ package java.security { method public synchronized java.lang.Object compute(java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object computeIfAbsent(java.lang.Object, java.util.function.Function); method public synchronized java.lang.Object computeIfPresent(java.lang.Object, java.util.function.BiFunction); + method public java.util.Enumeration elements(); + method public synchronized java.util.Set> entrySet(); method public synchronized void forEach(java.util.function.BiConsumer); + method public java.lang.Object get(java.lang.Object); method public java.lang.String getInfo(); method public java.lang.String getName(); method public synchronized java.lang.Object getOrDefault(java.lang.Object, java.lang.Object); method public synchronized java.security.Provider.Service getService(java.lang.String, java.lang.String); method public synchronized java.util.Set getServices(); method public double getVersion(); + method public java.util.Set keySet(); + method public java.util.Enumeration keys(); method public synchronized java.lang.Object merge(java.lang.Object, java.lang.Object, java.util.function.BiFunction); method public synchronized java.lang.Object put(java.lang.Object, java.lang.Object); method public synchronized void putAll(java.util.Map); method public synchronized java.lang.Object putIfAbsent(java.lang.Object, java.lang.Object); method protected synchronized void putService(java.security.Provider.Service); + method public synchronized java.lang.Object remove(java.lang.Object); method protected synchronized void removeService(java.security.Provider.Service); method public synchronized boolean replace(java.lang.Object, java.lang.Object, java.lang.Object); method public synchronized java.lang.Object replace(java.lang.Object, java.lang.Object); method public synchronized void replaceAll(java.util.function.BiFunction); + method public java.lang.String toString(); + method public java.util.Collection values(); } public static class Provider.Service { @@ -59617,7 +60042,9 @@ package java.security { method public final java.security.Provider getProvider(); method public static byte[] getSeed(int); method protected final int next(int); + method public synchronized void nextBytes(byte[]); method public synchronized void setSeed(byte[]); + method public void setSeed(long); } public abstract class SecureRandomSpi implements java.io.Serializable { @@ -60164,6 +60591,7 @@ package java.security.cert { public abstract class PKIXRevocationChecker extends java.security.cert.PKIXCertPathChecker { ctor protected PKIXRevocationChecker(); + method public java.security.cert.PKIXRevocationChecker clone(); method public java.util.List getOcspExtensions(); method public java.net.URI getOcspResponder(); method public java.security.cert.X509Certificate getOcspResponderCert(); @@ -62416,7 +62844,6 @@ package java.time { public final class DayOfWeek extends java.lang.Enum implements java.time.temporal.TemporalAccessor java.time.temporal.TemporalAdjuster { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public static java.time.DayOfWeek from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -62424,8 +62851,6 @@ package java.time { method public java.time.DayOfWeek minus(long); method public static java.time.DayOfWeek of(int); method public java.time.DayOfWeek plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.DayOfWeek valueOf(java.lang.String); method public static final java.time.DayOfWeek[] values(); enum_constant public static final java.time.DayOfWeek FRIDAY; @@ -62501,6 +62926,8 @@ package java.time { method public boolean isBefore(java.time.Instant); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.Instant minus(java.time.temporal.TemporalAmount); + method public java.time.Instant minus(long, java.time.temporal.TemporalUnit); method public java.time.Instant minusMillis(long); method public java.time.Instant minusNanos(long); method public java.time.Instant minusSeconds(long); @@ -62510,6 +62937,7 @@ package java.time { method public static java.time.Instant ofEpochSecond(long); method public static java.time.Instant ofEpochSecond(long, long); method public static java.time.Instant parse(java.lang.CharSequence); + method public java.time.Instant plus(java.time.temporal.TemporalAmount); method public java.time.Instant plus(long, java.time.temporal.TemporalUnit); method public java.time.Instant plusMillis(long); method public java.time.Instant plusNanos(long); @@ -62517,6 +62945,7 @@ package java.time { method public long toEpochMilli(); method public java.time.Instant truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Instant with(java.time.temporal.TemporalAdjuster); method public java.time.Instant with(java.time.temporal.TemporalField, long); field public static final java.time.Instant EPOCH; field public static final java.time.Instant MAX; @@ -62526,6 +62955,7 @@ package java.time { public final class LocalDate implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { method public java.time.LocalDateTime atStartOfDay(); method public java.time.ZonedDateTime atStartOfDay(java.time.ZoneId); + method public java.time.LocalDateTime atTime(java.time.LocalTime); method public java.time.LocalDateTime atTime(int, int); method public java.time.LocalDateTime atTime(int, int, int); method public java.time.LocalDateTime atTime(int, int, int, int); @@ -62540,6 +62970,8 @@ package java.time { method public int getMonthValue(); method public int getYear(); method public int lengthOfMonth(); + method public java.time.LocalDate minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate minusDays(long); method public java.time.LocalDate minusMonths(long); method public java.time.LocalDate minusWeeks(long); @@ -62553,12 +62985,16 @@ package java.time { method public static java.time.LocalDate ofYearDay(int, int); method public static java.time.LocalDate parse(java.lang.CharSequence); method public static java.time.LocalDate parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDate plus(java.time.temporal.TemporalAmount); + method public java.time.LocalDate plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDate plusDays(long); method public java.time.LocalDate plusMonths(long); method public java.time.LocalDate plusWeeks(long); method public java.time.LocalDate plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public java.time.Period until(java.time.chrono.ChronoLocalDate); + method public java.time.LocalDate with(java.time.temporal.TemporalAdjuster); + method public java.time.LocalDate with(java.time.temporal.TemporalField, long); method public java.time.LocalDate withDayOfMonth(int); method public java.time.LocalDate withDayOfYear(int); method public java.time.LocalDate withMonth(int); @@ -62583,6 +63019,8 @@ package java.time { method public int getSecond(); method public int getYear(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.LocalDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime minusDays(long); method public java.time.LocalDateTime minusHours(long); method public java.time.LocalDateTime minusMinutes(long); @@ -62605,6 +63043,7 @@ package java.time { method public static java.time.LocalDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.LocalDateTime parse(java.lang.CharSequence); method public static java.time.LocalDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalDateTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalDateTime plusDays(long); method public java.time.LocalDateTime plusHours(long); @@ -62618,6 +63057,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.LocalDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalDateTime with(java.time.temporal.TemporalField, long); method public java.time.LocalDateTime withDayOfMonth(int); method public java.time.LocalDateTime withDayOfYear(int); @@ -62647,6 +63087,8 @@ package java.time { method public boolean isBefore(java.time.LocalTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.LocalTime minus(java.time.temporal.TemporalAmount); + method public java.time.LocalTime minus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime minusHours(long); method public java.time.LocalTime minusMinutes(long); method public java.time.LocalTime minusNanos(long); @@ -62661,6 +63103,7 @@ package java.time { method public static java.time.LocalTime ofSecondOfDay(long); method public static java.time.LocalTime parse(java.lang.CharSequence); method public static java.time.LocalTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.LocalTime plus(java.time.temporal.TemporalAmount); method public java.time.LocalTime plus(long, java.time.temporal.TemporalUnit); method public java.time.LocalTime plusHours(long); method public java.time.LocalTime plusMinutes(long); @@ -62670,6 +63113,7 @@ package java.time { method public int toSecondOfDay(); method public java.time.LocalTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.LocalTime with(java.time.temporal.TemporalAdjuster); method public java.time.LocalTime with(java.time.temporal.TemporalField, long); method public java.time.LocalTime withHour(int); method public java.time.LocalTime withMinute(int); @@ -62686,7 +63130,6 @@ package java.time { method public int firstDayOfYear(boolean); method public java.time.Month firstMonthOfQuarter(); method public static java.time.Month from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getDisplayName(java.time.format.TextStyle, java.util.Locale); method public long getLong(java.time.temporal.TemporalField); method public int getValue(); @@ -62697,8 +63140,6 @@ package java.time { method public java.time.Month minus(long); method public static java.time.Month of(int); method public java.time.Month plus(long); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.Month valueOf(java.lang.String); method public static final java.time.Month[] values(); enum_constant public static final java.time.Month APRIL; @@ -62765,6 +63206,8 @@ package java.time { method public boolean isEqual(java.time.OffsetDateTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime minusDays(long); method public java.time.OffsetDateTime minusHours(long); method public java.time.OffsetDateTime minusMinutes(long); @@ -62782,6 +63225,7 @@ package java.time { method public static java.time.OffsetDateTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetDateTime parse(java.lang.CharSequence); method public static java.time.OffsetDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetDateTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetDateTime plusDays(long); method public java.time.OffsetDateTime plusHours(long); @@ -62801,6 +63245,7 @@ package java.time { method public java.time.ZonedDateTime toZonedDateTime(); method public java.time.OffsetDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetDateTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetDateTime withDayOfMonth(int); method public java.time.OffsetDateTime withDayOfYear(int); @@ -62833,6 +63278,8 @@ package java.time { method public boolean isEqual(java.time.OffsetTime); method public boolean isSupported(java.time.temporal.TemporalField); method public boolean isSupported(java.time.temporal.TemporalUnit); + method public java.time.OffsetTime minus(java.time.temporal.TemporalAmount); + method public java.time.OffsetTime minus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime minusHours(long); method public java.time.OffsetTime minusMinutes(long); method public java.time.OffsetTime minusNanos(long); @@ -62845,6 +63292,7 @@ package java.time { method public static java.time.OffsetTime ofInstant(java.time.Instant, java.time.ZoneId); method public static java.time.OffsetTime parse(java.lang.CharSequence); method public static java.time.OffsetTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.OffsetTime plus(java.time.temporal.TemporalAmount); method public java.time.OffsetTime plus(long, java.time.temporal.TemporalUnit); method public java.time.OffsetTime plusHours(long); method public java.time.OffsetTime plusMinutes(long); @@ -62853,6 +63301,7 @@ package java.time { method public java.time.LocalTime toLocalTime(); method public java.time.OffsetTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.OffsetTime with(java.time.temporal.TemporalAdjuster); method public java.time.OffsetTime with(java.time.temporal.TemporalField, long); method public java.time.OffsetTime withHour(int); method public java.time.OffsetTime withMinute(int); @@ -62879,6 +63328,7 @@ package java.time { method public java.time.Period minusMonths(long); method public java.time.Period minusYears(long); method public java.time.Period multipliedBy(int); + method public java.time.Period negated(); method public java.time.Period normalized(); method public static java.time.Period of(int, int, int); method public static java.time.Period ofDays(int); @@ -62917,6 +63367,8 @@ package java.time { method public boolean isSupported(java.time.temporal.TemporalUnit); method public boolean isValidMonthDay(java.time.MonthDay); method public int length(); + method public java.time.Year minus(java.time.temporal.TemporalAmount); + method public java.time.Year minus(long, java.time.temporal.TemporalUnit); method public java.time.Year minusYears(long); method public static java.time.Year now(); method public static java.time.Year now(java.time.ZoneId); @@ -62924,9 +63376,11 @@ package java.time { method public static java.time.Year of(int); method public static java.time.Year parse(java.lang.CharSequence); method public static java.time.Year parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.Year plus(java.time.temporal.TemporalAmount); method public java.time.Year plus(long, java.time.temporal.TemporalUnit); method public java.time.Year plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.Year with(java.time.temporal.TemporalAdjuster); method public java.time.Year with(java.time.temporal.TemporalField, long); field public static final int MAX_VALUE = 999999999; // 0x3b9ac9ff field public static final int MIN_VALUE = -999999999; // 0xc4653601 @@ -62951,6 +63405,8 @@ package java.time { method public boolean isValidDay(int); method public int lengthOfMonth(); method public int lengthOfYear(); + method public java.time.YearMonth minus(java.time.temporal.TemporalAmount); + method public java.time.YearMonth minus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth minusMonths(long); method public java.time.YearMonth minusYears(long); method public static java.time.YearMonth now(); @@ -62960,10 +63416,12 @@ package java.time { method public static java.time.YearMonth of(int, int); method public static java.time.YearMonth parse(java.lang.CharSequence); method public static java.time.YearMonth parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.YearMonth plus(java.time.temporal.TemporalAmount); method public java.time.YearMonth plus(long, java.time.temporal.TemporalUnit); method public java.time.YearMonth plusMonths(long); method public java.time.YearMonth plusYears(long); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.YearMonth with(java.time.temporal.TemporalAdjuster); method public java.time.YearMonth with(java.time.temporal.TemporalField, long); method public java.time.YearMonth withMonth(int); method public java.time.YearMonth withYear(int); @@ -62987,7 +63445,6 @@ package java.time { method public java.time.temporal.Temporal adjustInto(java.time.temporal.Temporal); method public int compareTo(java.time.ZoneOffset); method public static java.time.ZoneOffset from(java.time.temporal.TemporalAccessor); - method public int get(java.time.temporal.TemporalField); method public java.lang.String getId(); method public long getLong(java.time.temporal.TemporalField); method public java.time.zone.ZoneRules getRules(); @@ -62998,8 +63455,6 @@ package java.time { method public static java.time.ZoneOffset ofHoursMinutes(int, int); method public static java.time.ZoneOffset ofHoursMinutesSeconds(int, int, int); method public static java.time.ZoneOffset ofTotalSeconds(int); - method public R query(java.time.temporal.TemporalQuery); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); field public static final java.time.ZoneOffset MAX; field public static final java.time.ZoneOffset MIN; field public static final java.time.ZoneOffset UTC; @@ -63020,6 +63475,8 @@ package java.time { method public int getYear(); method public java.time.ZoneId getZone(); method public boolean isSupported(java.time.temporal.TemporalField); + method public java.time.ZonedDateTime minus(java.time.temporal.TemporalAmount); + method public java.time.ZonedDateTime minus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime minusDays(long); method public java.time.ZonedDateTime minusHours(long); method public java.time.ZonedDateTime minusMinutes(long); @@ -63040,6 +63497,7 @@ package java.time { method public static java.time.ZonedDateTime ofStrict(java.time.LocalDateTime, java.time.ZoneOffset, java.time.ZoneId); method public static java.time.ZonedDateTime parse(java.lang.CharSequence); method public static java.time.ZonedDateTime parse(java.lang.CharSequence, java.time.format.DateTimeFormatter); + method public java.time.ZonedDateTime plus(java.time.temporal.TemporalAmount); method public java.time.ZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public java.time.ZonedDateTime plusDays(long); method public java.time.ZonedDateTime plusHours(long); @@ -63049,10 +63507,12 @@ package java.time { method public java.time.ZonedDateTime plusSeconds(long); method public java.time.ZonedDateTime plusWeeks(long); method public java.time.ZonedDateTime plusYears(long); + method public java.time.LocalDate toLocalDate(); method public java.time.LocalDateTime toLocalDateTime(); method public java.time.OffsetDateTime toOffsetDateTime(); method public java.time.ZonedDateTime truncatedTo(java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public java.time.ZonedDateTime with(java.time.temporal.TemporalAdjuster); method public java.time.ZonedDateTime with(java.time.temporal.TemporalField, long); method public java.time.ZonedDateTime withDayOfMonth(int); method public java.time.ZonedDateTime withDayOfYear(int); @@ -63097,17 +63557,27 @@ package java.time.chrono { method public default boolean isSupported(java.time.temporal.TemporalUnit); method public abstract int lengthOfMonth(); method public default int lengthOfYear(); + method public default java.time.chrono.ChronoLocalDate minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDate minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDate plus(java.time.temporal.TemporalAmount); method public default java.time.chrono.ChronoLocalDate plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator timeLineOrder(); method public default long toEpochDay(); method public abstract java.lang.String toString(); method public abstract long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); method public abstract java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalAdjuster); method public default java.time.chrono.ChronoLocalDate with(java.time.temporal.TemporalField, long); } abstract class ChronoLocalDateImpl implements java.time.chrono.ChronoLocalDate java.io.Serializable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { + method public D minus(java.time.temporal.TemporalAmount); + method public D minus(long, java.time.temporal.TemporalUnit); + method public D plus(java.time.temporal.TemporalAmount); + method public D plus(long, java.time.temporal.TemporalUnit); method public long until(java.time.temporal.Temporal, java.time.temporal.TemporalUnit); + method public D with(java.time.temporal.TemporalAdjuster); + method public D with(java.time.temporal.TemporalField, long); } public abstract interface ChronoLocalDateTime implements java.lang.Comparable java.time.temporal.Temporal java.time.temporal.TemporalAdjuster { @@ -63124,6 +63594,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoLocalDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoLocalDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoLocalDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoLocalDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(java.time.ZoneOffset); @@ -63131,6 +63604,7 @@ package java.time.chrono { method public abstract D toLocalDate(); method public abstract java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoLocalDateTime with(java.time.temporal.TemporalField, long); } @@ -63168,6 +63642,9 @@ package java.time.chrono { method public default boolean isEqual(java.time.chrono.ChronoZonedDateTime); method public abstract boolean isSupported(java.time.temporal.TemporalField); method public default boolean isSupported(java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime minus(java.time.temporal.TemporalAmount); + method public default java.time.chrono.ChronoZonedDateTime minus(long, java.time.temporal.TemporalUnit); + method public default java.time.chrono.ChronoZonedDateTime plus(java.time.temporal.TemporalAmount); method public abstract java.time.chrono.ChronoZonedDateTime plus(long, java.time.temporal.TemporalUnit); method public static java.util.Comparator> timeLineOrder(); method public default long toEpochSecond(); @@ -63176,6 +63653,7 @@ package java.time.chrono { method public abstract java.time.chrono.ChronoLocalDateTime toLocalDateTime(); method public default java.time.LocalTime toLocalTime(); method public abstract java.lang.String toString(); + method public default java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalAdjuster); method public abstract java.time.chrono.ChronoZonedDateTime with(java.time.temporal.TemporalField, long); method public abstract java.time.chrono.ChronoZonedDateTime withEarlierOffsetAtOverlap(); method public abstract java.time.chrono.ChronoZonedDateTime withLaterOffsetAtOverlap(); @@ -63242,6 +63720,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.HijrahDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.HijrahChronology INSTANCE; @@ -63253,23 +63732,24 @@ package java.time.chrono { method public java.time.chrono.HijrahChronology getChronology(); method public java.time.chrono.HijrahEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isLeapYear(); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.HijrahDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.HijrahDate now(); method public static java.time.chrono.HijrahDate now(java.time.ZoneId); method public static java.time.chrono.HijrahDate now(java.time.Clock); method public static java.time.chrono.HijrahDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.HijrahDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.HijrahDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.HijrahDate with(java.time.temporal.TemporalAdjuster); method public java.time.chrono.HijrahDate withVariant(java.time.chrono.HijrahChronology); } public final class HijrahEra extends java.lang.Enum implements java.time.chrono.Era { method public int getValue(); method public static java.time.chrono.HijrahEra of(int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); method public static java.time.chrono.HijrahEra valueOf(java.lang.String); method public static final java.time.chrono.HijrahEra[] values(); enum_constant public static final java.time.chrono.HijrahEra AH; @@ -63294,6 +63774,7 @@ package java.time.chrono { method public java.time.Period period(int, int, int); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.LocalDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.ZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.ZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.IsoChronology INSTANCE; @@ -63326,6 +63807,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.JapaneseDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.JapaneseChronology INSTANCE; @@ -63337,17 +63819,19 @@ package java.time.chrono { method public java.time.chrono.JapaneseChronology getChronology(); method public java.time.chrono.JapaneseEra getEra(); method public long getLong(java.time.temporal.TemporalField); - method public boolean isSupported(java.time.temporal.TemporalField); method public int lengthOfMonth(); - method public int lengthOfYear(); + method public java.time.chrono.JapaneseDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.JapaneseDate now(); method public static java.time.chrono.JapaneseDate now(java.time.ZoneId); method public static java.time.chrono.JapaneseDate now(java.time.Clock); method public static java.time.chrono.JapaneseDate of(java.time.chrono.JapaneseEra, int, int, int); method public static java.time.chrono.JapaneseDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.JapaneseDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.JapaneseDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.JapaneseDate with(java.time.temporal.TemporalAdjuster); } public final class JapaneseEra implements java.time.chrono.Era java.io.Serializable { @@ -63379,6 +63863,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.MinguoDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.MinguoChronology INSTANCE; @@ -63391,13 +63876,17 @@ package java.time.chrono { method public java.time.chrono.MinguoEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.MinguoDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.MinguoDate now(); method public static java.time.chrono.MinguoDate now(java.time.ZoneId); method public static java.time.chrono.MinguoDate now(java.time.Clock); method public static java.time.chrono.MinguoDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.MinguoDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.MinguoDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.MinguoDate with(java.time.temporal.TemporalAdjuster); } public final class MinguoEra extends java.lang.Enum implements java.time.chrono.Era { @@ -63427,6 +63916,7 @@ package java.time.chrono { method public java.time.chrono.ChronoLocalDateTime localDateTime(java.time.temporal.TemporalAccessor); method public int prolepticYear(java.time.chrono.Era, int); method public java.time.temporal.ValueRange range(java.time.temporal.ChronoField); + method public java.time.chrono.ThaiBuddhistDate resolveDate(java.util.Map, java.time.format.ResolverStyle); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.temporal.TemporalAccessor); method public java.time.chrono.ChronoZonedDateTime zonedDateTime(java.time.Instant, java.time.ZoneId); field public static final java.time.chrono.ThaiBuddhistChronology INSTANCE; @@ -63439,13 +63929,17 @@ package java.time.chrono { method public java.time.chrono.ThaiBuddhistEra getEra(); method public long getLong(java.time.temporal.TemporalField); method public int lengthOfMonth(); + method public java.time.chrono.ThaiBuddhistDate minus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate minus(long, java.time.temporal.TemporalUnit); method public static java.time.chrono.ThaiBuddhistDate now(); method public static java.time.chrono.ThaiBuddhistDate now(java.time.ZoneId); method public static java.time.chrono.ThaiBuddhistDate now(java.time.Clock); method public static java.time.chrono.ThaiBuddhistDate of(int, int, int); - method public java.time.temporal.ValueRange range(java.time.temporal.TemporalField); - method public long toEpochDay(); + method public java.time.chrono.ThaiBuddhistDate plus(java.time.temporal.TemporalAmount); + method public java.time.chrono.ThaiBuddhistDate plus(long, java.time.temporal.TemporalUnit); method public java.time.chrono.ChronoPeriod until(java.time.chrono.ChronoLocalDate); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalField, long); + method public java.time.chrono.ThaiBuddhistDate with(java.time.temporal.TemporalAdjuster); } public final class ThaiBuddhistEra extends java.lang.Enum implements java.time.chrono.Era { @@ -63624,7 +64118,6 @@ package java.time.temporal { method public int checkValidIntValue(long); method public long checkValidValue(long); method public java.time.temporal.TemporalUnit getBaseUnit(); - method public java.lang.String getDisplayName(java.util.Locale); method public long getFrom(java.time.temporal.TemporalAccessor); method public java.time.temporal.TemporalUnit getRangeUnit(); method public boolean isDateBased(); @@ -63672,7 +64165,6 @@ package java.time.temporal { method public java.time.Duration getDuration(); method public boolean isDateBased(); method public boolean isDurationEstimated(); - method public boolean isSupportedBy(java.time.temporal.Temporal); method public boolean isTimeBased(); method public static java.time.temporal.ChronoUnit valueOf(java.lang.String); method public static final java.time.temporal.ChronoUnit[] values(); @@ -64012,7 +64504,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ArrayList extends java.util.AbstractList implements java.lang.Cloneable java.util.List java.util.RandomAccess java.io.Serializable { @@ -64023,11 +64514,7 @@ package java.util { method public void ensureCapacity(int); method public void forEach(java.util.function.Consumer); method public E get(int); - method public boolean removeIf(java.util.function.Predicate); - method public void replaceAll(java.util.function.UnaryOperator); method public int size(); - method public void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); method public void trimToSize(); } @@ -64398,6 +64885,7 @@ package java.util { method public default boolean removeIf(java.util.function.Predicate); method public abstract boolean retainAll(java.util.Collection); method public abstract int size(); + method public default java.util.Spliterator spliterator(); method public default java.util.stream.Stream stream(); method public abstract java.lang.Object[] toArray(); method public abstract T[] toArray(T[]); @@ -64738,18 +65226,7 @@ package java.util { ctor public HashMap(); ctor public HashMap(java.util.Map); method public java.lang.Object clone(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); - method public V merge(K, V, java.util.function.BiFunction); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); } public class HashSet extends java.util.AbstractSet implements java.lang.Cloneable java.io.Serializable java.util.Set { @@ -64760,7 +65237,6 @@ package java.util { method public java.lang.Object clone(); method public java.util.Iterator iterator(); method public int size(); - method public java.util.Spliterator spliterator(); } public class Hashtable extends java.util.Dictionary implements java.lang.Cloneable java.util.Map java.io.Serializable { @@ -64778,9 +65254,11 @@ package java.util { method public boolean containsValue(java.lang.Object); method public synchronized java.util.Enumeration elements(); method public java.util.Set> entrySet(); + method public synchronized boolean equals(java.lang.Object); method public synchronized void forEach(java.util.function.BiConsumer); method public synchronized V get(java.lang.Object); method public synchronized V getOrDefault(java.lang.Object, V); + method public synchronized int hashCode(); method public synchronized boolean isEmpty(); method public java.util.Set keySet(); method public synchronized java.util.Enumeration keys(); @@ -64795,6 +65273,7 @@ package java.util { method public synchronized V replace(K, V); method public synchronized void replaceAll(java.util.function.BiFunction); method public synchronized int size(); + method public synchronized java.lang.String toString(); method public java.util.Collection values(); } @@ -64804,8 +65283,6 @@ package java.util { ctor public IdentityHashMap(java.util.Map); method public java.lang.Object clone(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } public class IllegalFormatCodePointException extends java.util.IllegalFormatException { @@ -64916,7 +65393,6 @@ package java.util { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface List implements java.util.Collection { @@ -65539,6 +66015,7 @@ package java.util { ctor public SimpleTimeZone(int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int); method public int getOffset(int, int, int, int, int, int); method public int getRawOffset(); + method public synchronized int hashCode(); method public boolean inDaylightTime(java.util.Date); method public void setDSTSavings(int); method public void setEndRule(int, int, int, int); @@ -65811,7 +66288,6 @@ package java.util { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); method public java.util.NavigableMap headMap(K, boolean); method public java.util.SortedMap headMap(K); method public java.util.Map.Entry higherEntry(K); @@ -65823,9 +66299,6 @@ package java.util { method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.NavigableMap subMap(K, boolean, K, boolean); method public java.util.SortedMap subMap(K, K); method public java.util.NavigableMap tailMap(K, boolean); @@ -65853,7 +66326,6 @@ package java.util { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.SortedSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -65890,30 +66362,49 @@ package java.util { ctor public Vector(int); ctor public Vector(); ctor public Vector(java.util.Collection); + method public synchronized boolean add(E); + method public synchronized boolean addAll(java.util.Collection); + method public synchronized boolean addAll(int, java.util.Collection); method public synchronized void addElement(E); method public synchronized int capacity(); method public synchronized java.lang.Object clone(); + method public synchronized boolean containsAll(java.util.Collection); method public synchronized void copyInto(java.lang.Object[]); method public synchronized E elementAt(int); method public java.util.Enumeration elements(); method public synchronized void ensureCapacity(int); + method public synchronized boolean equals(java.lang.Object); method public synchronized E firstElement(); method public synchronized void forEach(java.util.function.Consumer); method public synchronized E get(int); + method public synchronized int hashCode(); method public synchronized int indexOf(java.lang.Object, int); method public synchronized void insertElementAt(E, int); + method public synchronized boolean isEmpty(); + method public synchronized java.util.Iterator iterator(); method public synchronized E lastElement(); + method public synchronized int lastIndexOf(java.lang.Object); method public synchronized int lastIndexOf(java.lang.Object, int); + method public synchronized java.util.ListIterator listIterator(int); + method public synchronized java.util.ListIterator listIterator(); + method public synchronized E remove(int); + method public synchronized boolean removeAll(java.util.Collection); method public synchronized void removeAllElements(); method public synchronized boolean removeElement(java.lang.Object); method public synchronized void removeElementAt(int); method public synchronized boolean removeIf(java.util.function.Predicate); + method protected synchronized void removeRange(int, int); method public synchronized void replaceAll(java.util.function.UnaryOperator); + method public synchronized boolean retainAll(java.util.Collection); + method public synchronized E set(int, E); method public synchronized void setElementAt(E, int); method public synchronized void setSize(int); method public synchronized int size(); method public synchronized void sort(java.util.Comparator); - method public java.util.Spliterator spliterator(); + method public synchronized java.util.List subList(int, int); + method public synchronized java.lang.Object[] toArray(); + method public synchronized T[] toArray(T[]); + method public synchronized java.lang.String toString(); method public synchronized void trimToSize(); field protected int capacityIncrement; field protected int elementCount; @@ -65926,8 +66417,6 @@ package java.util { ctor public WeakHashMap(); ctor public WeakHashMap(java.util.Map); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); - method public void replaceAll(java.util.function.BiFunction); } } @@ -65962,7 +66451,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66153,13 +66641,9 @@ package java.util.concurrent { ctor public ConcurrentHashMap(java.util.Map); ctor public ConcurrentHashMap(int, float); ctor public ConcurrentHashMap(int, float, int); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public boolean contains(java.lang.Object); method public java.util.Enumeration elements(); method public java.util.Set> entrySet(); - method public void forEach(java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiConsumer); method public void forEach(long, java.util.function.BiFunction, java.util.function.Consumer); method public void forEachEntry(long, java.util.function.Consumer>); @@ -66168,14 +66652,11 @@ package java.util.concurrent { method public void forEachKey(long, java.util.function.Function, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Consumer); method public void forEachValue(long, java.util.function.Function, java.util.function.Consumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentHashMap.KeySetView keySet(V); method public java.util.Enumeration keys(); method public long mappingCount(); - method public V merge(K, V, java.util.function.BiFunction); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(); method public static java.util.concurrent.ConcurrentHashMap.KeySetView newKeySet(int); - method public V putIfAbsent(K, V); method public U reduce(long, java.util.function.BiFunction, java.util.function.BiFunction); method public java.util.Map.Entry reduceEntries(long, java.util.function.BiFunction, java.util.Map.Entry, ? extends java.util.Map.Entry>); method public U reduceEntries(long, java.util.function.Function, ? extends U>, java.util.function.BiFunction); @@ -66195,10 +66676,6 @@ package java.util.concurrent { method public double reduceValuesToDouble(long, java.util.function.ToDoubleFunction, double, java.util.function.DoubleBinaryOperator); method public int reduceValuesToInt(long, java.util.function.ToIntFunction, int, java.util.function.IntBinaryOperator); method public long reduceValuesToLong(long, java.util.function.ToLongFunction, long, java.util.function.LongBinaryOperator); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public U search(long, java.util.function.BiFunction); method public U searchEntries(long, java.util.function.Function, ? extends U>); method public U searchKeys(long, java.util.function.Function); @@ -66259,7 +66736,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); } public class ConcurrentLinkedQueue extends java.util.AbstractQueue implements java.util.Queue java.io.Serializable { @@ -66270,7 +66746,6 @@ package java.util.concurrent { method public E peek(); method public E poll(); method public int size(); - method public java.util.Spliterator spliterator(); } public abstract interface ConcurrentMap implements java.util.Map { @@ -66302,9 +66777,6 @@ package java.util.concurrent { method public K ceilingKey(K); method public java.util.concurrent.ConcurrentSkipListMap clone(); method public java.util.Comparator comparator(); - method public V compute(K, java.util.function.BiFunction); - method public V computeIfAbsent(K, java.util.function.Function); - method public V computeIfPresent(K, java.util.function.BiFunction); method public java.util.NavigableSet descendingKeySet(); method public java.util.concurrent.ConcurrentNavigableMap descendingMap(); method public java.util.Set> entrySet(); @@ -66312,25 +66784,18 @@ package java.util.concurrent { method public K firstKey(); method public java.util.Map.Entry floorEntry(K); method public K floorKey(K); - method public void forEach(java.util.function.BiConsumer); - method public V getOrDefault(java.lang.Object, V); method public java.util.concurrent.ConcurrentNavigableMap headMap(K, boolean); method public java.util.concurrent.ConcurrentNavigableMap headMap(K); method public java.util.Map.Entry higherEntry(K); method public K higherKey(K); + method public java.util.NavigableSet keySet(); method public java.util.Map.Entry lastEntry(); method public K lastKey(); method public java.util.Map.Entry lowerEntry(K); method public K lowerKey(K); - method public V merge(K, V, java.util.function.BiFunction); method public java.util.NavigableSet navigableKeySet(); method public java.util.Map.Entry pollFirstEntry(); method public java.util.Map.Entry pollLastEntry(); - method public V putIfAbsent(K, V); - method public boolean remove(java.lang.Object, java.lang.Object); - method public boolean replace(K, V, V); - method public V replace(K, V); - method public void replaceAll(java.util.function.BiFunction); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, boolean, K, boolean); method public java.util.concurrent.ConcurrentNavigableMap subMap(K, K); method public java.util.concurrent.ConcurrentNavigableMap tailMap(K, boolean); @@ -66358,7 +66823,6 @@ package java.util.concurrent { method public E pollFirst(); method public E pollLast(); method public int size(); - method public java.util.Spliterator spliterator(); method public java.util.NavigableSet subSet(E, boolean, E, boolean); method public java.util.NavigableSet subSet(E, E); method public java.util.NavigableSet tailSet(E, boolean); @@ -66405,9 +66869,7 @@ package java.util.concurrent { ctor public CopyOnWriteArraySet(java.util.Collection); method public void forEach(java.util.function.Consumer); method public java.util.Iterator iterator(); - method public boolean removeIf(java.util.function.Predicate); method public int size(); - method public java.util.Spliterator spliterator(); } public class CountDownLatch { @@ -66566,6 +67028,7 @@ package java.util.concurrent { method public java.lang.Thread.UncaughtExceptionHandler getUncaughtExceptionHandler(); method public boolean hasQueuedSubmissions(); method public T invoke(java.util.concurrent.ForkJoinTask); + method public java.util.List> invokeAll(java.util.Collection>); method public boolean isQuiescent(); method public boolean isShutdown(); method public boolean isTerminated(); @@ -66575,6 +67038,9 @@ package java.util.concurrent { method public void shutdown(); method public java.util.List shutdownNow(); method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.ForkJoinTask); + method public java.util.concurrent.ForkJoinTask submit(java.util.concurrent.Callable); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable, T); + method public java.util.concurrent.ForkJoinTask submit(java.lang.Runnable); field public static final java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory defaultForkJoinWorkerThreadFactory; } @@ -66698,7 +67164,6 @@ package java.util.concurrent { method public E removeLast(); method public boolean removeLastOccurrence(java.lang.Object); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public E takeFirst() throws java.lang.InterruptedException; method public E takeLast() throws java.lang.InterruptedException; @@ -66719,7 +67184,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66739,7 +67203,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; method public void transfer(E) throws java.lang.InterruptedException; method public boolean tryTransfer(E); @@ -66787,7 +67250,6 @@ package java.util.concurrent { method public void put(E); method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66891,7 +67353,6 @@ package java.util.concurrent { method public void put(E) throws java.lang.InterruptedException; method public int remainingCapacity(); method public int size(); - method public java.util.Spliterator spliterator(); method public E take() throws java.lang.InterruptedException; } @@ -66903,9 +67364,11 @@ package java.util.concurrent { method public static java.util.concurrent.ThreadLocalRandom current(); method public double nextDouble(double); method public double nextDouble(double, double); + method public double nextGaussian(); method public int nextInt(int, int); method public long nextLong(long); method public long nextLong(long, long); + method public void setSeed(long); } public class ThreadPoolExecutor extends java.util.concurrent.AbstractExecutorService { @@ -66919,6 +67382,7 @@ package java.util.concurrent { method public boolean awaitTermination(long, java.util.concurrent.TimeUnit) throws java.lang.InterruptedException; method protected void beforeExecute(java.lang.Thread, java.lang.Runnable); method public void execute(java.lang.Runnable); + method protected void finalize(); method public int getActiveCount(); method public long getCompletedTaskCount(); method public int getCorePoolSize(); @@ -67789,8 +68253,11 @@ package java.util.jar { ctor public JarFile(java.io.File) throws java.io.IOException; ctor public JarFile(java.io.File, boolean) throws java.io.IOException; ctor public JarFile(java.io.File, boolean, int) throws java.io.IOException; + method public java.util.Enumeration entries(); + method public synchronized java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; method public java.util.jar.JarEntry getJarEntry(java.lang.String); method public java.util.jar.Manifest getManifest() throws java.io.IOException; + method public java.util.stream.Stream stream(); field public static final java.lang.String MANIFEST_NAME = "META-INF/MANIFEST.MF"; } @@ -67870,6 +68337,8 @@ package java.util.logging { public class ConsoleHandler extends java.util.logging.StreamHandler { ctor public ConsoleHandler(); + method public void close(); + method public void publish(java.util.logging.LogRecord); } public class ErrorManager { @@ -68659,6 +69128,7 @@ package java.util.zip { method public int deflate(byte[]); method public int deflate(byte[], int, int, int); method public void end(); + method protected void finalize(); method public void finish(); method public boolean finished(); method public int getAdler(); @@ -68691,6 +69161,8 @@ package java.util.zip { ctor public DeflaterInputStream(java.io.InputStream); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater); ctor public DeflaterInputStream(java.io.InputStream, java.util.zip.Deflater, int); + method public void mark(int); + method public void reset() throws java.io.IOException; field protected final byte[] buf; field protected final java.util.zip.Deflater def; } @@ -68721,6 +69193,7 @@ package java.util.zip { ctor public GZIPOutputStream(java.io.OutputStream, int, boolean) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream) throws java.io.IOException; ctor public GZIPOutputStream(java.io.OutputStream, boolean) throws java.io.IOException; + method public synchronized void write(byte[], int, int) throws java.io.IOException; field protected java.util.zip.CRC32 crc; } @@ -68728,6 +69201,7 @@ package java.util.zip { ctor public Inflater(boolean); ctor public Inflater(); method public void end(); + method protected void finalize(); method public boolean finished(); method public int getAdler(); method public long getBytesRead(); @@ -68854,6 +69328,7 @@ package java.util.zip { ctor public ZipFile(java.io.File, java.nio.charset.Charset) throws java.io.IOException; method public void close() throws java.io.IOException; method public java.util.Enumeration entries(); + method protected void finalize() throws java.io.IOException; method public java.lang.String getComment(); method public java.util.zip.ZipEntry getEntry(java.lang.String); method public java.io.InputStream getInputStream(java.util.zip.ZipEntry) throws java.io.IOException; @@ -68960,6 +69435,7 @@ package java.util.zip { method public void setComment(java.lang.String); method public void setLevel(int); method public void setMethod(int); + method public synchronized void write(byte[], int, int) throws java.io.IOException; field public static final int CENATT = 36; // 0x24 field public static final int CENATX = 38; // 0x26 field public static final int CENCOM = 32; // 0x20 @@ -69116,6 +69592,7 @@ package javax.crypto { public class ExemptionMechanism { ctor protected ExemptionMechanism(javax.crypto.ExemptionMechanismSpi, java.security.Provider, java.lang.String); + method protected void finalize(); method public final byte[] genExemptionBlob() throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException; method public final int genExemptionBlob(byte[]) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; method public final int genExemptionBlob(byte[], int) throws javax.crypto.ExemptionMechanismException, java.lang.IllegalStateException, javax.crypto.ShortBufferException; @@ -71504,6 +71981,7 @@ package javax.xml.transform { ctor public TransformerException(java.lang.String, java.lang.Throwable); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator); ctor public TransformerException(java.lang.String, javax.xml.transform.SourceLocator, java.lang.Throwable); + method public java.lang.Throwable getCause(); method public java.lang.Throwable getException(); method public java.lang.String getLocationAsString(); method public javax.xml.transform.SourceLocator getLocator(); @@ -71774,6 +72252,7 @@ package javax.xml.xpath { public class XPathException extends java.lang.Exception { ctor public XPathException(java.lang.String); ctor public XPathException(java.lang.Throwable); + method public java.lang.Throwable getCause(); } public abstract interface XPathExpression { diff --git a/api/test-removed.txt b/api/test-removed.txt index 49b72e1513005cdbf7aa95ea3ea3b9e342869a29..6c37a8fbf1333e752f6f54a2d2cc04c47eb6e931 100644 --- a/api/test-removed.txt +++ b/api/test-removed.txt @@ -15,6 +15,7 @@ package android.app { public class Notification implements android.os.Parcelable { method public deprecated java.lang.String getChannel(); + method public static java.lang.Class getNotificationStyleClass(java.lang.String); method public deprecated long getTimeout(); method public deprecated void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent); } @@ -24,30 +25,9 @@ package android.app { method public deprecated android.app.Notification.Builder setTimeout(long); } - public static final class Notification.TvExtender implements android.app.Notification.Extender { - method public deprecated java.lang.String getChannel(); - } - public final deprecated class PictureInPictureArgs implements android.os.Parcelable { - ctor public deprecated PictureInPictureArgs(); - ctor public deprecated PictureInPictureArgs(float, java.util.List); method public static android.app.PictureInPictureArgs convert(android.app.PictureInPictureParams); method public static android.app.PictureInPictureParams convert(android.app.PictureInPictureArgs); - method public void copyOnlySet(android.app.PictureInPictureArgs); - method public java.util.List getActions(); - method public float getAspectRatio(); - method public android.util.Rational getAspectRatioRational(); - method public android.graphics.Rect getSourceRectHint(); - method public android.graphics.Rect getSourceRectHintInsets(); - method public boolean hasSetActions(); - method public boolean hasSetAspectRatio(); - method public boolean hasSourceBoundsHint(); - method public boolean hasSourceBoundsHintInsets(); - method public deprecated void setActions(java.util.List); - method public deprecated void setAspectRatio(float); - method public deprecated void setSourceRectHint(android.graphics.Rect); - method public deprecated void setSourceRectHintInsets(android.graphics.Rect); - method public void truncateActions(int); field public static final android.os.Parcelable.Creator CREATOR; } @@ -59,10 +39,6 @@ package android.app { method public android.app.PictureInPictureArgs.Builder setSourceRectHint(android.graphics.Rect); } - public final class RecoverableSecurityException extends java.lang.SecurityException implements android.os.Parcelable { - method public deprecated void showAsNotification(android.content.Context); - } - } package android.app.admin { @@ -70,8 +46,6 @@ package android.app.admin { public class DevicePolicyManager { method public deprecated android.os.UserHandle createAndInitializeUser(android.content.ComponentName, java.lang.String, java.lang.String, android.content.ComponentName, android.os.Bundle); method public deprecated android.os.UserHandle createUser(android.content.ComponentName, java.lang.String); - method public deprecated java.lang.String getDeviceInitializerApp(); - method public deprecated android.content.ComponentName getDeviceInitializerComponent(); } } @@ -272,10 +246,6 @@ package android.os { ctor public BatteryManager(); } - public class Build { - field public static final boolean PERMISSIONS_REVIEW_REQUIRED; - } - public final class PowerManager { method public void goToSleep(long); method public deprecated void userActivity(long, boolean); @@ -301,18 +271,8 @@ package android.os { package android.os.storage { public class StorageManager { - method public deprecated void allocateBytes(java.io.File, long, int) throws java.io.IOException; - method public deprecated long getAllocatableBytes(java.io.File, int) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getCacheSizeBytes(java.io.File) throws java.io.IOException; - method public deprecated long getCacheSizeBytes() throws java.io.IOException; - method public deprecated long getExternalCacheQuotaBytes() throws java.io.IOException; - method public deprecated long getExternalCacheSizeBytes() throws java.io.IOException; method public android.os.storage.StorageVolume getPrimaryVolume(); method public android.os.storage.StorageVolume[] getVolumeList(); - method public deprecated boolean isCacheBehaviorAtomic(java.io.File) throws java.io.IOException; - method public deprecated void setCacheBehaviorAtomic(java.io.File, boolean) throws java.io.IOException; } } @@ -356,11 +316,8 @@ package android.provider { field public static final java.lang.String CREATED = "created"; field public static final java.lang.String DATE = "date"; field public static final java.lang.String FAVICON = "favicon"; - field public static final java.lang.String THUMBNAIL = "thumbnail"; field public static final java.lang.String TITLE = "title"; - field public static final java.lang.String TOUCH_ICON = "touch_icon"; field public static final java.lang.String URL = "url"; - field public static final java.lang.String USER_ENTERED = "user_entered"; field public static final java.lang.String VISITS = "visits"; } diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java index f003061cec3a23bf676fc26aee61ea4db4492bdb..ab075ee0e9f206b41621d9d6a02e632787a20d52 100644 --- a/cmds/am/src/com/android/commands/am/Am.java +++ b/cmds/am/src/com/android/commands/am/Am.java @@ -16,70 +16,25 @@ package com.android.commands.am; -import static android.app.ActivityManager.RESIZE_MODE_SYSTEM; -import static android.app.ActivityManager.RESIZE_MODE_USER; -import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; -import static android.app.ActivityManager.StackId.INVALID_STACK_ID; - import android.app.ActivityManager; -import android.app.ActivityManager.StackInfo; -import android.app.IActivityContainer; -import android.app.IActivityController; import android.app.IActivityManager; -import android.app.IInstrumentationWatcher; -import android.app.Instrumentation; -import android.app.IStopUserCallback; -import android.app.ProfilerInfo; -import android.app.UiAutomationConnection; -import android.app.usage.ConfigurationStats; -import android.app.usage.IUsageStatsManager; -import android.app.usage.UsageStatsManager; -import android.content.ComponentCallbacks2; -import android.content.ComponentName; -import android.content.Context; -import android.content.IIntentReceiver; -import android.content.Intent; import android.content.pm.IPackageManager; -import android.content.pm.InstrumentationInfo; -import android.content.pm.ParceledListSlice; -import android.content.pm.UserInfo; -import android.content.res.Configuration; -import android.graphics.Rect; -import android.os.Binder; -import android.os.Build; -import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.SELinux; import android.os.ServiceManager; import android.os.ShellCallback; -import android.os.ShellCommand; -import android.os.SystemProperties; import android.os.UserHandle; -import android.text.TextUtils; import android.util.AndroidException; -import android.util.ArrayMap; -import android.util.Log; -import android.view.IWindowManager; import com.android.internal.os.BaseCommand; -import com.android.internal.util.HexDump; -import com.android.internal.util.Preconditions; -import java.io.BufferedReader; import java.io.File; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStreamReader; import java.io.PrintStream; -import java.io.PrintWriter; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; public class Am extends BaseCommand { diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java index 4966b4380d9b5b273de10e3015c2b302d5d689f4..b69ef1c2fca54bf1604d3e95c9a972903f53d828 100644 --- a/cmds/am/src/com/android/commands/am/Instrument.java +++ b/cmds/am/src/com/android/commands/am/Instrument.java @@ -25,7 +25,6 @@ import android.content.pm.IPackageManager; import android.content.pm.InstrumentationInfo; import android.os.Build; import android.os.Bundle; -import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.util.AndroidException; @@ -34,6 +33,8 @@ import android.view.IWindowManager; import java.io.IOException; import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.List; @@ -95,6 +96,12 @@ public class Instrument { public void onError(String errorText, boolean commandError); } + private static Collection sorted(Collection list) { + final ArrayList copy = new ArrayList<>(list); + Collections.sort(copy); + return copy; + } + /** * Printer for the 'classic' text based status reporting. */ @@ -124,7 +131,7 @@ public class Instrument { System.out.print(pretty); } else { if (results != null) { - for (String key : results.keySet()) { + for (String key : sorted(results.keySet())) { System.out.println( "INSTRUMENTATION_STATUS: " + key + "=" + results.get(key)); } @@ -145,7 +152,7 @@ public class Instrument { System.out.println(pretty); } else { if (results != null) { - for (String key : results.keySet()) { + for (String key : sorted(results.keySet())) { System.out.println( "INSTRUMENTATION_RESULT: " + key + "=" + results.get(key)); } @@ -156,6 +163,10 @@ public class Instrument { @Override public void onError(String errorText, boolean commandError) { + if (mRawMode) { + System.out.println("onError: commandError=" + commandError + " message=" + + errorText); + } // The regular BaseCommand error printing will print the commandErrors. if (!commandError) { System.out.println(errorText); @@ -214,7 +225,7 @@ public class Instrument { private void writeBundle(ProtoOutputStream proto, long fieldId, Bundle bundle) { final long bundleToken = proto.startObject(fieldId); - for (final String key: bundle.keySet()) { + for (final String key: sorted(bundle.keySet())) { final long entryToken = proto.startRepeatedObject( InstrumentationData.ResultsBundle.ENTRIES); diff --git a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java index 1bcfb22fe2f2c3f945b09bbcafe12d97eff42bd0..b61cdecbfb7bfabe340dc09e44087c087ce2cdf5 100644 --- a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java +++ b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java @@ -17,8 +17,8 @@ package com.android.commands.bmgr; import android.app.backup.BackupManager; -import android.app.backup.BackupManagerMonitor; import android.app.backup.BackupProgress; +import android.app.backup.BackupTransport; import android.app.backup.IBackupManager; import android.app.backup.IBackupObserver; import android.app.backup.IRestoreObserver; @@ -30,8 +30,11 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.SystemClock; import android.os.UserHandle; -import android.util.Log; +import android.util.ArraySet; + +import com.android.internal.annotations.GuardedBy; import java.util.ArrayList; import java.util.HashSet; @@ -97,6 +100,11 @@ public final class Bmgr { return; } + if ("init".equals(op)) { + doInit(); + return; + } + if ("list".equals(op)) { doList(); return; @@ -204,7 +212,7 @@ public final class Bmgr { System.out.println("Performing full transport backup"); String pkg; - ArrayList allPkgs = new ArrayList(); + ArraySet allPkgs = new ArraySet(); while ((pkg = nextArg()) != null) { allPkgs.add(pkg); } @@ -218,45 +226,77 @@ public final class Bmgr { } } - class BackupObserver extends IBackupObserver.Stub { - boolean done = false; + // IBackupObserver generically usable for any backup/init operation + abstract class Observer extends IBackupObserver.Stub { + private final Object trigger = new Object(); + + @GuardedBy("trigger") + private volatile boolean done = false; @Override public void onUpdate(String currentPackage, BackupProgress backupProgress) { - System.out.println( - "Package " + currentPackage + " with progress: " + backupProgress.bytesTransferred - + "/" + backupProgress.bytesExpected); } @Override public void onResult(String currentPackage, int status) { - System.out.println("Package " + currentPackage + " with result: " - + convertBackupStatusToString(status)); } @Override public void backupFinished(int status) { - System.out.println("Backup finished with result: " - + convertBackupStatusToString(status)); - synchronized (this) { + synchronized (trigger) { done = true; - this.notify(); + trigger.notify(); } } + public boolean done() { + return this.done; + } + + // Wait forever public void waitForCompletion() { + waitForCompletion(0); + } + + // Wait for a given time and then give up + public void waitForCompletion(long timeout) { // The backupFinished() callback will throw the 'done' flag; we // just sit and wait on that notification. - synchronized (this) { - while (!this.done) { + final long targetTime = SystemClock.elapsedRealtime() + timeout; + synchronized (trigger) { + // Wait until either we're done, or we've reached a stated positive timeout + while (!done && (timeout <= 0 || SystemClock.elapsedRealtime() < targetTime)) { try { - this.wait(); + trigger.wait(1000L); } catch (InterruptedException ex) { } } } } + } + + class BackupObserver extends Observer { + @Override + public void onUpdate(String currentPackage, BackupProgress backupProgress) { + super.onUpdate(currentPackage, backupProgress); + System.out.println( + "Package " + currentPackage + " with progress: " + backupProgress.bytesTransferred + + "/" + backupProgress.bytesExpected); + } + @Override + public void onResult(String currentPackage, int status) { + super.onResult(currentPackage, status); + System.out.println("Package " + currentPackage + " with result: " + + convertBackupStatusToString(status)); + } + + @Override + public void backupFinished(int status) { + super.backupFinished(status); + System.out.println("Backup finished with result: " + + convertBackupStatusToString(status)); + } } private static String convertBackupStatusToString(int errorCode) { @@ -270,7 +310,8 @@ public final class Bmgr { case BackupManager.ERROR_TRANSPORT_ABORTED: return "Transport error"; case BackupManager.ERROR_TRANSPORT_PACKAGE_REJECTED: - return "Transport rejected package"; + return "Transport rejected package because it wasn't able to process it" + + " at the time"; case BackupManager.ERROR_AGENT_FAILURE: return "Agent error"; case BackupManager.ERROR_TRANSPORT_QUOTA_EXCEEDED: @@ -348,7 +389,9 @@ public final class Bmgr { } else if (pkg.equals("--incremental")) { nonIncrementalBackup = false; } else { - allPkgs.add(pkg); + if (!allPkgs.contains(pkg)) { + allPkgs.add(pkg); + } } } if (backupAll) { @@ -469,6 +512,39 @@ public final class Bmgr { } } + class InitObserver extends Observer { + public int result = BackupTransport.TRANSPORT_ERROR; + + @Override + public void backupFinished(int status) { + super.backupFinished(status); + result = status; + } + } + + private void doInit() { + ArraySet transports = new ArraySet<>(); + String transport; + while ((transport = nextArg()) != null) { + transports.add(transport); + } + if (transports.size() == 0) { + showUsage(); + return; + } + + InitObserver observer = new InitObserver(); + try { + System.out.println("Initializing transports: " + transports); + mBmgr.initializeTransports(transports.toArray(new String[transports.size()]), observer); + observer.waitForCompletion(30*1000L); + System.out.println("Initialization result: " + observer.result); + } catch (RemoteException e) { + System.err.println(e.toString()); + System.err.println(BMGR_NOT_RUNNING_ERR); + } + } + private void doList() { String arg = nextArg(); // sets, transports, packages set# if ("transports".equals(arg)) { diff --git a/cmds/bootanimation/Android.mk b/cmds/bootanimation/Android.mk index 7ab402a2cd467dc4c952223c7a29ed9e68113fe8..73ec63f396b443b6489587ef330764c2fee13a6b 100644 --- a/cmds/bootanimation/Android.mk +++ b/cmds/bootanimation/Android.mk @@ -8,10 +8,6 @@ bootanimation_CommonCFlags += -Wall -Werror -Wunused -Wunreachable-code LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_SRC_FILES:= \ - bootanimation_main.cpp \ - audioplay.cpp \ - LOCAL_CFLAGS += ${bootanimation_CommonCFlags} LOCAL_SHARED_LIBRARIES := \ @@ -24,6 +20,29 @@ LOCAL_SHARED_LIBRARIES := \ liblog \ libutils \ +LOCAL_SRC_FILES:= \ + BootAnimationUtil.cpp \ + +ifeq ($(PRODUCT_IOT),true) +LOCAL_SRC_FILES += \ + iot/iotbootanimation_main.cpp \ + iot/BootAction.cpp + +LOCAL_SHARED_LIBRARIES += \ + libandroidthings \ + libbase \ + libbinder + +LOCAL_STATIC_LIBRARIES += cpufeatures + +else + +LOCAL_SRC_FILES += \ + bootanimation_main.cpp \ + audioplay.cpp \ + +endif # PRODUCT_IOT + LOCAL_MODULE:= bootanimation LOCAL_INIT_RC := bootanim.rc @@ -45,6 +64,8 @@ LOCAL_CFLAGS += ${bootanimation_CommonCFlags} LOCAL_SRC_FILES:= \ BootAnimation.cpp +LOCAL_CFLAGS += ${bootanimation_CommonCFlags} + LOCAL_C_INCLUDES += \ external/tinyalsa/include \ frameworks/wilhelm/include diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 6b2de4b7f1fff92a6089915a20fe397d73fa74da..6526123aba13116532beb2a768b7c5818339c5a0 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -96,11 +96,9 @@ static constexpr size_t TEXT_POS_LEN_MAX = 16; // --------------------------------------------------------------------------- -BootAnimation::BootAnimation(InitCallback initCallback, - PlayPartCallback partCallback) +BootAnimation::BootAnimation(sp callbacks) : Thread(false), mClockEnabled(true), mTimeIsAccurate(false), - mTimeFormat12Hour(false), mTimeCheckThread(NULL), - mInitCallback(initCallback), mPlayPartCallback(partCallback) { + mTimeFormat12Hour(false), mTimeCheckThread(NULL), mCallbacks(callbacks) { mSession = new SurfaceComposerClient(); std::string powerCtl = android::base::GetProperty("sys.powerctl", ""); @@ -357,6 +355,8 @@ bool BootAnimation::android() initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png"); initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); + mCallbacks->init({}); + // clear screen glShadeModel(GL_FLAT); glDisable(GL_DITHER); @@ -424,6 +424,7 @@ void BootAnimation::checkExit() { int exitnow = atoi(value); if (exitnow) { requestExit(); + mCallbacks->shutdown(); } } @@ -777,9 +778,7 @@ bool BootAnimation::preloadZip(Animation& animation) } } - if (mInitCallback != nullptr) { - mInitCallback(animation.parts); - } + mCallbacks->init(animation.parts); zip->endIteration(cookie); @@ -887,9 +886,7 @@ bool BootAnimation::playAnimation(const Animation& animation) if(exitPending() && !part.playUntilComplete) break; - if (mPlayPartCallback != nullptr) { - mPlayPartCallback(i, part, r); - } + mCallbacks->playPart(i, part, r); glClearColor( part.backgroundColor[0], diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h index 3ebe7d6e4dffde92414867ebe9cff2da0a166d96..56e131523bcbb3e3801914037226b21efdb18098 100644 --- a/cmds/bootanimation/BootAnimation.h +++ b/cmds/bootanimation/BootAnimation.h @@ -93,22 +93,27 @@ public: Font clockFont; }; - // Callback will be called during initialization after we have loaded - // the animation and be provided with all parts in animation. - typedef std::function& parts)> InitCallback; - - // Callback will be called while animation is playing before each part is - // played. It will be provided with the part and play count for it. - // It will be provided with the partNumber for the part about to be played, - // as well as a reference to the part itself. It will also be provided with - // which play of that part is about to start, some parts are repeated - // multiple times. - typedef std::function - PlayPartCallback; - - // Callbacks may be null and will be called from this class's internal - // thread. - BootAnimation(InitCallback initCallback, PlayPartCallback partCallback); + // All callbacks will be called from this class's internal thread. + class Callbacks : public RefBase { + public: + // Will be called during initialization after we have loaded + // the animation and be provided with all parts in animation. + virtual void init(const Vector& /*parts*/) {} + + // Will be called while animation is playing before each part is + // played. It will be provided with the part and play count for it. + // It will be provided with the partNumber for the part about to be played, + // as well as a reference to the part itself. It will also be provided with + // which play of that part is about to start, some parts are repeated + // multiple times. + virtual void playPart(int /*partNumber*/, const Animation::Part& /*part*/, + int /*playNumber*/) {} + + // Will be called when animation is done and thread is shutting down. + virtual void shutdown() {} + }; + + BootAnimation(sp callbacks); sp session() const; @@ -170,8 +175,7 @@ private: String8 mZipFileName; SortedVector mLoadedFiles; sp mTimeCheckThread = nullptr; - InitCallback mInitCallback = nullptr; - PlayPartCallback mPlayPartCallback = nullptr; + sp mCallbacks; }; // --------------------------------------------------------------------------- diff --git a/cmds/bootanimation/BootAnimationUtil.cpp b/cmds/bootanimation/BootAnimationUtil.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7718daf61d8160dd2dbdea275a028c48cf900222 --- /dev/null +++ b/cmds/bootanimation/BootAnimationUtil.cpp @@ -0,0 +1,61 @@ +/* + * 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. + */ + +#include "BootAnimationUtil.h" + +#include + +#include +#include +#include +#include + +namespace android { + +bool bootAnimationDisabled() { + char value[PROPERTY_VALUE_MAX]; + property_get("debug.sf.nobootanimation", value, "0"); + if (atoi(value) > 0) { + return true; + } + + property_get("ro.boot.quiescent", value, "0"); + return atoi(value) > 0; +} + +void waitForSurfaceFlinger() { + // TODO: replace this with better waiting logic in future, b/35253872 + int64_t waitStartTime = elapsedRealtime(); + sp sm = defaultServiceManager(); + const String16 name("SurfaceFlinger"); + const int SERVICE_WAIT_SLEEP_MS = 100; + const int LOG_PER_RETRIES = 10; + int retry = 0; + while (sm->checkService(name) == nullptr) { + retry++; + if ((retry % LOG_PER_RETRIES) == 0) { + ALOGW("Waiting for SurfaceFlinger, waited for %" PRId64 " ms", + elapsedRealtime() - waitStartTime); + } + usleep(SERVICE_WAIT_SLEEP_MS * 1000); + }; + int64_t totalWaited = elapsedRealtime() - waitStartTime; + if (totalWaited > SERVICE_WAIT_SLEEP_MS) { + ALOGI("Waiting for SurfaceFlinger took %" PRId64 " ms", totalWaited); + } +} + +} // namespace android diff --git a/services/core/jni/com_android_server_radio_RadioService.h b/cmds/bootanimation/BootAnimationUtil.h similarity index 72% rename from services/core/jni/com_android_server_radio_RadioService.h rename to cmds/bootanimation/BootAnimationUtil.h index 91e119c19fe9f7ffe43ca5e11ab5c7b52f5d4fc9..60987cd1ccd18b4d48e2bcfbd175b2b6e30d11f2 100644 --- a/services/core/jni/com_android_server_radio_RadioService.h +++ b/cmds/bootanimation/BootAnimationUtil.h @@ -1,4 +1,4 @@ -/** +/* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,15 +14,12 @@ * limitations under the License. */ -#ifndef _ANDROID_SERVER_RADIO_RADIOSERVICE_H -#define _ANDROID_SERVER_RADIO_RADIOSERVICE_H - -#include - namespace android { -void register_android_server_radio_RadioService(JNIEnv *env); +// Returns true if boot animation is disabled. +bool bootAnimationDisabled(); -} // namespace android +// Waits until the surface flinger is up. +void waitForSurfaceFlinger(); -#endif // _ANDROID_SERVER_RADIO_RADIOSERVICE_H +} // namespace android diff --git a/cmds/bootanimation/bootanimation_main.cpp b/cmds/bootanimation/bootanimation_main.cpp index c11d90522ffd621b67c0e960ad4719326b4d320d..8501982d071c4d25906164387f9407ecc6ad2a2e 100644 --- a/cmds/bootanimation/bootanimation_main.cpp +++ b/cmds/bootanimation/bootanimation_main.cpp @@ -30,6 +30,7 @@ #include #include "BootAnimation.h" +#include "BootAnimationUtil.h" #include "audioplay.h" using namespace android; @@ -95,6 +96,49 @@ bool playSoundsAllowed() { return true; } +class AudioAnimationCallbacks : public android::BootAnimation::Callbacks { +public: + void init(const Vector& parts) override { + const Animation::Part* partWithAudio = nullptr; + for (const Animation::Part& part : parts) { + if (part.audioData != nullptr) { + partWithAudio = ∂ + } + } + + if (partWithAudio == nullptr) { + return; + } + + ALOGD("found audio.wav, creating playback engine"); + initAudioThread = new InitAudioThread(partWithAudio->audioData, + partWithAudio->audioLength); + initAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); + }; + + void playPart(int partNumber, const Animation::Part& part, int playNumber) override { + // only play audio file the first time we animate the part + if (playNumber == 0 && part.audioData && playSoundsAllowed()) { + ALOGD("playing clip for part%d, size=%d", + partNumber, part.audioLength); + // Block until the audio engine is finished initializing. + if (initAudioThread != nullptr) { + initAudioThread->join(); + } + audioplay::playClip(part.audioData, part.audioLength); + } + }; + + void shutdown() override { + // we've finally played everything we're going to play + audioplay::setPlaying(false); + audioplay::destroy(); + }; + +private: + sp initAudioThread = nullptr; +}; + } // namespace @@ -102,83 +146,21 @@ int main() { setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY); - char value[PROPERTY_VALUE_MAX]; - property_get("debug.sf.nobootanimation", value, "0"); - int noBootAnimation = atoi(value); - if (!noBootAnimation) { - property_get("ro.boot.quiescent", value, "0"); - noBootAnimation = atoi(value); - } + bool noBootAnimation = bootAnimationDisabled(); ALOGI_IF(noBootAnimation, "boot animation disabled"); if (!noBootAnimation) { sp proc(ProcessState::self()); ProcessState::self()->startThreadPool(); - // TODO: replace this with better waiting logic in future, b/35253872 - int64_t waitStartTime = elapsedRealtime(); - sp sm = defaultServiceManager(); - const String16 name("SurfaceFlinger"); - const int SERVICE_WAIT_SLEEP_MS = 100; - const int LOG_PER_RETRIES = 10; - int retry = 0; - while (sm->checkService(name) == nullptr) { - retry++; - if ((retry % LOG_PER_RETRIES) == 0) { - ALOGW("Waiting for SurfaceFlinger, waited for %" PRId64 " ms", - elapsedRealtime() - waitStartTime); - } - usleep(SERVICE_WAIT_SLEEP_MS * 1000); - }; - int64_t totalWaited = elapsedRealtime() - waitStartTime; - if (totalWaited > SERVICE_WAIT_SLEEP_MS) { - ALOGI("Waiting for SurfaceFlinger took %" PRId64 " ms", totalWaited); - } - - // TODO: Move audio code to a new class that just exports the callbacks. - sp initAudioThread = nullptr; - - auto initCallback = [&](const Vector& parts) { - const Animation::Part* partWithAudio = nullptr; - for (const Animation::Part& part : parts) { - if (part.audioData != nullptr) { - partWithAudio = ∂ - } - } - - if (partWithAudio == nullptr) { - return; - } - - ALOGD("found audio.wav, creating playback engine"); - initAudioThread = new InitAudioThread(partWithAudio->audioData, - partWithAudio->audioLength); - initAudioThread->run("BootAnimation::InitAudioThread", PRIORITY_NORMAL); - - }; - - auto partCallback = [&](int partNumber, const Animation::Part& part, - int playNumber) { - // only play audio file the first time we animate the part - if (playNumber == 0 && part.audioData && playSoundsAllowed()) { - ALOGD("playing clip for part%d, size=%d", - partNumber, part.audioLength); - // Block until the audio engine is finished initializing. - if (initAudioThread != nullptr) { - initAudioThread->join(); - } - audioplay::playClip(part.audioData, part.audioLength); - } - }; + waitForSurfaceFlinger(); // create the boot animation object - sp boot = new BootAnimation(initCallback, partCallback); + sp boot = new BootAnimation(new AudioAnimationCallbacks()); + ALOGV("Boot animation set up. Joining pool."); IPCThreadState::self()->joinThreadPool(); - - // we've finally played everything we're going to play - audioplay::setPlaying(false); - audioplay::destroy(); } + ALOGV("Boot animation exit"); return 0; } diff --git a/cmds/bootanimation/iot/BootAction.cpp b/cmds/bootanimation/iot/BootAction.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8fda87e990996e41d5d9b2bd9606ef3a4fe62bb8 --- /dev/null +++ b/cmds/bootanimation/iot/BootAction.cpp @@ -0,0 +1,175 @@ +/* + * 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. + */ + +#include "BootAction.h" + +#define LOG_TAG "BootAction" + +#include +#include +#include +#include +#include + +using android::base::Split; +using android::base::Join; +using android::base::StartsWith; +using android::base::EndsWith; + +namespace android { + +BootAction::~BootAction() { + if (mLibHandle != nullptr) { + dlclose(mLibHandle); + } +} + +bool BootAction::init(const std::string& libraryPath, const std::string& config) { + APeripheralManagerClient* client = nullptr; + ALOGD("Connecting to peripheralmanager"); + // Wait for peripheral manager to come up. + while (client == nullptr) { + client = APeripheralManagerClient_new(); + if (client == nullptr) { + ALOGV("peripheralmanager is not up, sleeping before we check again."); + usleep(250000); + } + } + ALOGD("Peripheralmanager is up."); + APeripheralManagerClient_delete(client); + + std::string path_to_lib = libraryPath; + if (!parseConfig(config, &path_to_lib)) { + return false; + } + + ALOGI("Loading boot action %s", path_to_lib.c_str()); + mLibHandle = dlopen(path_to_lib.c_str(), RTLD_NOW); + if (mLibHandle == nullptr) { + ALOGE("Unable to load library at %s :: %s", + path_to_lib.c_str(), dlerror()); + return false; + } + + void* loaded = nullptr; + if (!loadSymbol("boot_action_init", &loaded) || loaded == nullptr) { + return false; + } + mLibInit = reinterpret_cast(loaded); + + loaded = nullptr; + if (!loadSymbol("boot_action_shutdown", &loaded) || loaded == nullptr) { + return false; + } + mLibShutdown = reinterpret_cast(loaded); + + // StartPart is considered optional, if it isn't exported by the library + // we will still call init and shutdown. + loaded = nullptr; + if (!loadSymbol("boot_action_start_part", &loaded) || loaded == nullptr) { + ALOGI("No boot_action_start_part found, action will not be told when " + "Animation parts change."); + } else { + mLibStartPart = reinterpret_cast(loaded); + } + + ALOGD("Entering boot_action_init"); + bool result = mLibInit(); + ALOGD("Returned from boot_action_init"); + return result; +} + +void BootAction::startPart(int partNumber, int playNumber) { + if (mLibStartPart == nullptr) return; + + ALOGD("Entering boot_action_start_part"); + mLibStartPart(partNumber, playNumber); + ALOGD("Returned from boot_action_start_part"); +} + +void BootAction::shutdown() { + ALOGD("Entering boot_action_shutdown"); + mLibShutdown(); + ALOGD("Returned from boot_action_shutdown"); +} + +bool BootAction::loadSymbol(const char* symbol, void** loaded) { + *loaded = dlsym(mLibHandle, symbol); + if (loaded == nullptr) { + ALOGE("Unable to load symbol : %s :: %s", symbol, dlerror()); + return false; + } + return true; +} + + +bool BootAction::parseConfig(const std::string& config, std::string* path) { + auto lines = Split(config, "\n"); + + if (lines.size() < 1) { + ALOGE("Config format invalid, expected one line, found %d", + lines.size()); + return false; + } + + size_t lineNumber = 0; + auto& line1 = lines.at(lineNumber); + while (StartsWith(line1, "#")) { + if (lines.size() < ++lineNumber) { + ALOGE("Config file contains no non-comment lines."); + return false; + } + line1 = lines.at(lineNumber); + } + + const std::string libraryNameToken("LIBRARY_NAME="); + if (!StartsWith(line1, libraryNameToken.c_str())) { + ALOGE("Invalid config format, expected second line to start with %s " + "Instead found: %s", libraryNameToken.c_str(), line1.c_str()); + return false; + } + + std::string libraryName = line1.substr(libraryNameToken.length()); + + *path += "/"; + *path += architectureDirectory(); + *path += "/"; + *path += libraryName; + + return true; +} + +const char* BootAction::architectureDirectory() { + switch(android_getCpuFamily()) { + case ANDROID_CPU_FAMILY_ARM: + return "arm"; + case ANDROID_CPU_FAMILY_X86: + return "x86"; + case ANDROID_CPU_FAMILY_MIPS: + return "mips"; + case ANDROID_CPU_FAMILY_ARM64: + return "arm64"; + case ANDROID_CPU_FAMILY_X86_64: + return "x86_64"; + case ANDROID_CPU_FAMILY_MIPS64: + return "mips64"; + default: + ALOGE("Unsupported cpu family: %d", android_getCpuFamily()); + return ""; + } +} + +} // namespace android diff --git a/cmds/bootanimation/iot/BootAction.h b/cmds/bootanimation/iot/BootAction.h new file mode 100644 index 0000000000000000000000000000000000000000..31d0d1f65b9504157ccc677abc43d2ebfec39f0e --- /dev/null +++ b/cmds/bootanimation/iot/BootAction.h @@ -0,0 +1,63 @@ +/* + * 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. + */ + +#ifndef _BOOTANIMATION_BOOTACTION_H +#define _BOOTANIMATION_BOOTACTION_H + +#include + +#include + +namespace android { + +class BootAction : public RefBase { +public: + ~BootAction(); + // Parse the contents of the config file. We expect one line: + // LIBRARY_NAME= + // + // LIBRARY_NAME is the name of the shared library that contains the boot action. + bool init(const std::string& libraryPath, const std::string& config); + + // The animation is going to start playing partNumber for the playCount'th + // time, update the action as needed. + // This is run in the same thread as the boot animation, + // you must not block here. + void startPart(int partNumber, int playCount); + + // Shutdown the boot action, this will be called shortly before the + // process is shut down to allow time for cleanup. + void shutdown(); + +private: + typedef bool (*libInit)(); + typedef void (*libStartPart)(int partNumber, int playNumber); + typedef void (*libShutdown)(); + + bool parseConfig(const std::string& config, std::string* path); + bool loadSymbol(const char* symbol, void** loaded); + const char* architectureDirectory(); + + void* mLibHandle = nullptr; + libInit mLibInit = nullptr; + libStartPart mLibStartPart = nullptr; + libShutdown mLibShutdown = nullptr; +}; + +} // namespace android + + +#endif // _BOOTANIMATION_BOOTACTION_H diff --git a/cmds/bootanimation/iot/iotbootanimation_main.cpp b/cmds/bootanimation/iot/iotbootanimation_main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d1ae786e83af9c186d74f6bb7d6fb2f99e48cc2f --- /dev/null +++ b/cmds/bootanimation/iot/iotbootanimation_main.cpp @@ -0,0 +1,93 @@ +/* + * 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. + */ + +#define LOG_TAG "IotBootAnimation" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "BootAction.h" +#include "BootAnimationUtil.h" + +using namespace android; +using android::base::ReadFileToString; + +// Create a typedef for readability. +typedef android::BootAnimation::Animation Animation; + +namespace { + +class BootActionAnimationCallbacks : public android::BootAnimation::Callbacks {public: + void init(const Vector&) override { + // Create and initialize BootActions if we have a boot_action.conf. + std::string bootActionConf; + if (ReadFileToString("/oem/app/etc/boot_action.conf", &bootActionConf)) { + mBootAction = new BootAction(); + if (!mBootAction->init("/oem/app/lib", bootActionConf)) { + mBootAction = NULL; + } + } else { + ALOGI("No boot actions specified"); + } + + }; + + void playPart(int partNumber, const Animation::Part&, int playNumber) override { + if (mBootAction != nullptr) { + mBootAction->startPart(partNumber, playNumber); + } + }; + + void shutdown() override { + if (mBootAction != nullptr) { + mBootAction->shutdown(); + // Give it two seconds to shut down. + sleep(2); + mBootAction = nullptr; + } + }; + +private: + sp mBootAction = nullptr; +}; + +} // namespace + +int main() { + setpriority(PRIO_PROCESS, 0, ANDROID_PRIORITY_DISPLAY); + + if (bootAnimationDisabled()) { + ALOGI("boot animation disabled"); + return 0; + } + + waitForSurfaceFlinger(); + + sp proc(ProcessState::self()); + ProcessState::self()->startThreadPool(); + + sp boot = new BootAnimation(new BootActionAnimationCallbacks()); + + IPCThreadState::self()->joinThreadPool(); + return 0; +} diff --git a/cmds/bu/src/com/android/commands/bu/Backup.java b/cmds/bu/src/com/android/commands/bu/Backup.java index 345895b794a39d7138d0ea877195d8c57318d541..834658da8ccc230b055a789dfdac4fd0fe668d53 100644 --- a/cmds/bu/src/com/android/commands/bu/Backup.java +++ b/cmds/bu/src/com/android/commands/bu/Backup.java @@ -136,7 +136,9 @@ public final class Backup { if (fd != null) { try { fd.close(); - } catch (IOException e) {} + } catch (IOException e) { + Log.e(TAG, "IO error closing output for backup: " + e.getMessage()); + } } } } diff --git a/cmds/hid/jni/com_android_commands_hid_Device.cpp b/cmds/hid/jni/com_android_commands_hid_Device.cpp index 5cc4fc4c16b22153d12a6c2454038328cb80efea..f04b08587fd94560bfc98a25f716194b595606dc 100644 --- a/cmds/hid/jni/com_android_commands_hid_Device.cpp +++ b/cmds/hid/jni/com_android_commands_hid_Device.cpp @@ -101,16 +101,15 @@ Device* Device::open(int32_t id, const char* name, int32_t vid, int32_t pid, struct uhid_event ev; memset(&ev, 0, sizeof(ev)); - ev.type = UHID_CREATE2; - strncpy((char*)ev.u.create2.name, name, UHID_MAX_NAME_LENGTH); - memcpy(&ev.u.create2.rd_data, descriptor.get(), - descriptorSize * sizeof(ev.u.create2.rd_data[0])); - ev.u.create2.rd_size = descriptorSize; - ev.u.create2.bus = BUS_BLUETOOTH; - ev.u.create2.vendor = vid; - ev.u.create2.product = pid; - ev.u.create2.version = 0; - ev.u.create2.country = 0; + ev.type = UHID_CREATE; + strncpy((char*)ev.u.create.name, name, UHID_MAX_NAME_LENGTH); + ev.u.create.rd_data = descriptor.get(); + ev.u.create.rd_size = descriptorSize; + ev.u.create.bus = BUS_BLUETOOTH; + ev.u.create.vendor = vid; + ev.u.create.product = pid; + ev.u.create.version = 0; + ev.u.create.country = 0; errno = 0; ssize_t ret = TEMP_FAILURE_RETRY(::write(fd, &ev, sizeof(ev))); @@ -159,9 +158,9 @@ Device::~Device() { void Device::sendReport(uint8_t* report, size_t reportSize) { struct uhid_event ev; memset(&ev, 0, sizeof(ev)); - ev.type = UHID_INPUT2; - ev.u.input2.size = reportSize; - memcpy(&ev.u.input2.data, report, reportSize); + ev.type = UHID_INPUT; + ev.u.input.size = reportSize; + memcpy(&ev.u.input.data, report, reportSize); ssize_t ret = TEMP_FAILURE_RETRY(::write(mFd, &ev, sizeof(ev))); if (ret < 0 || ret != sizeof(ev)) { LOGE("Failed to send hid event: %s", strerror(errno)); diff --git a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java b/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java index 1e426d62e4e04156a2351b1df81a3f6b341c0315..6a4a4beaa7638671a263f1fa4030182df46b2fef 100644 --- a/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java +++ b/cmds/locksettings/src/com/android/commands/locksettings/LockSettingsCmd.java @@ -33,6 +33,12 @@ public final class LockSettingsCmd extends BaseCommand { " locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN\n" + " locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD\n" + " locksettings clear [--old OLD_CREDENTIAL]\n" + + " locksettings verify [--old OLD_CREDENTIAL]\n" + + " locksettings set-disabled DISABLED\n" + + " locksettings get-disabled\n" + + "\n" + + "flags: \n" + + " --user USER_ID: specify the user, default value is current user\n" + "\n" + "locksettings set-pattern: sets a pattern\n" + " A pattern is specified by a non-separated list of numbers that index the cell\n" + @@ -44,7 +50,13 @@ public final class LockSettingsCmd extends BaseCommand { "\n" + "locksettings set-password: sets a password\n" + "\n" + - "locksettings clear: clears the unlock credential\n"; + "locksettings clear: clears the unlock credential\n" + + "\n" + + "locksettings verify: verifies the credential and unlocks the user\n" + + "\n" + + "locksettings set-disabled: sets whether the lock screen should be disabled\n" + + "\n" + + "locksettings get-disabled: retrieves whether the lock screen is disabled\n"; public static void main(String[] args) { (new LockSettingsCmd()).run(args); diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java index c4193f647c32049ee6cad087108fda934916b98f..ad989dee7b5530e9cae6cef57a54ff5bce2ebbf0 100644 --- a/cmds/pm/src/com/android/commands/pm/Pm.java +++ b/cmds/pm/src/com/android/commands/pm/Pm.java @@ -1033,7 +1033,7 @@ public final class Pm { if (info != null) { System.out.println("Success: created user id " + info.id); - return 1; + return 0; } else { System.err.println("Error: couldn't create User."); return 1; diff --git a/cmds/requestsync/src/com/android/commands/requestsync/RequestSync.java b/cmds/requestsync/src/com/android/commands/requestsync/RequestSync.java index 50ee56455b4858462ee062deaa896c1f4ae37503..360b2308b1c7c38afb887b82fc00d88e719ea831 100644 --- a/cmds/requestsync/src/com/android/commands/requestsync/RequestSync.java +++ b/cmds/requestsync/src/com/android/commands/requestsync/RequestSync.java @@ -29,10 +29,41 @@ public class RequestSync { private int mNextArg; private String mCurArgData; + enum Operation { + REQUEST_SYNC { + @Override + void invoke(RequestSync caller) { + ContentResolver.requestSync(caller.mAccount, caller.mAuthority, caller.mExtras); + } + }, + ADD_PERIODIC_SYNC { + @Override + void invoke(RequestSync caller) { + ContentResolver.addPeriodicSync(caller.mAccount, caller.mAuthority, caller.mExtras, + caller.mPeriodicIntervalSeconds); + } + }, + REMOVE_PERIODIC_SYNC { + @Override + void invoke(RequestSync caller) { + ContentResolver.removePeriodicSync( + caller.mAccount, caller.mAuthority, caller.mExtras); + } + }; + + abstract void invoke(RequestSync caller); + } + + private Operation mOperation; + // account & authority - private String mAccountName = null; - private String mAccountType = null; - private String mAuthority = null; + private String mAccountName; + private String mAccountType; + private String mAuthority; + + private Account mAccount; + + private int mPeriodicIntervalSeconds; // extras private Bundle mExtras = new Bundle(); @@ -80,11 +111,28 @@ public class RequestSync { } } - ContentResolver.requestSync(account, mAuthority, mExtras); + mAccount = account; + + mOperation.invoke(this); } } private boolean parseArgs() throws URISyntaxException { + mOperation = Operation.REQUEST_SYNC; + if (mArgs.length > 0) { + switch (mArgs[0]) { + case "add-periodic": + mNextArg++; + mOperation = Operation.ADD_PERIODIC_SYNC; + mPeriodicIntervalSeconds = Integer.parseInt(nextArgRequired()); + break; + case "remove-periodic": + mNextArg++; + mOperation = Operation.REMOVE_PERIODIC_SYNC; + break; + } + } + String opt; while ((opt=nextOption()) != null) { if (opt.equals("-h") || opt.equals("--help")) { @@ -114,6 +162,8 @@ public class RequestSync { mExtras.putBoolean(ContentResolver.SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS, true); } else if (opt.equals("-u") || opt.equals("--upload-only")) { mExtras.putBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, true); + } else if (opt.equals("--rc") || opt.equals("--require-charging")) { + mExtras.putBoolean(ContentResolver.SYNC_EXTRAS_REQUIRE_CHARGING, true); } else if (opt.equals("-e") || opt.equals("--es") || opt.equals("--extra-string")) { final String key = nextArgRequired(); final String value = nextArgRequired(); @@ -207,31 +257,43 @@ public class RequestSync { private static void showUsage() { System.err.println( - "usage: requestsync [options]\n" + - "With no options, a sync will be requested for all account and all sync\n" + - "authorities with no extras. Options can be:\n" + - " -h|--help: Display this message\n" + - " -n|--account-name \n" + - " -t|--account-type \n" + - " -a|--authority \n" + - " Add ContentResolver extras:\n" + - " --is|--ignore-settings: Add SYNC_EXTRAS_IGNORE_SETTINGS\n" + - " --ib|--ignore-backoff: Add SYNC_EXTRAS_IGNORE_BACKOFF\n" + - " --dd|--discard-deletions: Add SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS\n" + - " --nr|--no-retry: Add SYNC_EXTRAS_DO_NOT_RETRY\n" + - " --ex|--expedited: Add SYNC_EXTRAS_EXPEDITED\n" + - " --i|--initialize: Add SYNC_EXTRAS_INITIALIZE\n" + - " --m|--manual: Add SYNC_EXTRAS_MANUAL\n" + - " --od|--override-deletions: Add SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS\n" + - " --u|--upload-only: Add SYNC_EXTRAS_UPLOAD\n" + - " Add custom extras:\n" + - " -e|--es|--extra-string \n" + - " --esn|--extra-string-null \n" + - " --ei|--extra-int \n" + - " --el|--extra-long \n" + - " --ef|--extra-float \n" + - " --ed|--extra-double \n" + - " --ez|--extra-bool \n" + "Usage:\n" + + "\n" + + " requestsync [options]\n" + + " With no options, a sync will be requested for all account and all sync\n" + + " authorities with no extras.\n" + + " Basic options:\n" + + " -h|--help: Display this message\n" + + " -n|--account-name \n" + + " -t|--account-type \n" + + " -a|--authority \n" + + " ContentResolver extra options:\n" + + " --is|--ignore-settings: Add SYNC_EXTRAS_IGNORE_SETTINGS\n" + + " --ib|--ignore-backoff: Add SYNC_EXTRAS_IGNORE_BACKOFF\n" + + " --dd|--discard-deletions: Add SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS\n" + + " --nr|--no-retry: Add SYNC_EXTRAS_DO_NOT_RETRY\n" + + " --ex|--expedited: Add SYNC_EXTRAS_EXPEDITED\n" + + " -i|--initialize: Add SYNC_EXTRAS_INITIALIZE\n" + + " --m|--manual: Add SYNC_EXTRAS_MANUAL\n" + + " --od|--override-deletions: Add SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS\n" + + " -u|--upload-only: Add SYNC_EXTRAS_UPLOAD\n" + + " --rc|--require-charging: Add SYNC_EXTRAS_REQUIRE_CHARGING\n" + + " Custom extra options:\n" + + " -e|--es|--extra-string \n" + + " --esn|--extra-string-null \n" + + " --ei|--extra-int \n" + + " --el|--extra-long \n" + + " --ef|--extra-float \n" + + " --ed|--extra-double \n" + + " --ez|--extra-bool \n" + + "\n" + + " requestsync add-periodic INTERVAL-SECOND [options]\n" + + " requestsync remove-periodic [options]\n" + + " Mandatory options:\n" + + " -n|--account-name \n" + + " -t|--account-type \n" + + " -a|--authority \n" + + " Also takes the above extra options.\n" ); } } diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt new file mode 100644 index 0000000000000000000000000000000000000000..21f67394f3f94dea05d0811a72eca2ac51bd5d99 --- /dev/null +++ b/config/boot-image-profile.txt @@ -0,0 +1,54833 @@ +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->init(ILandroid/os/IBinder;)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onAccessibilityButtonAvailabilityChanged(Z)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onAccessibilityButtonClicked()V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onFingerprintCapturingGesturesChanged(Z)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onFingerprintGesture(I)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onGesture(I)Z +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onInterrupt()V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onMagnificationChanged(Landroid/graphics/Region;FFF)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onPerformGestureResult(IZ)V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onServiceConnected()V +HPLandroid/accessibilityservice/AccessibilityService$Callbacks;->onSoftKeyboardShowModeChanged(I)V +HPLandroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->(Landroid/content/Context;Landroid/os/Looper;Landroid/accessibilityservice/AccessibilityService$Callbacks;)V +HPLandroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->executeMessage(Landroid/os/Message;)V +HPLandroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->init(Landroid/accessibilityservice/IAccessibilityServiceConnection;ILandroid/os/IBinder;)V +HPLandroid/accessibilityservice/AccessibilityService$IAccessibilityServiceClientWrapper;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accessibilityservice/AccessibilityServiceInfo; +HPLandroid/accessibilityservice/AccessibilityServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->-wrap0(Landroid/accessibilityservice/AccessibilityServiceInfo;Landroid/os/Parcel;)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->()V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->(Landroid/content/pm/ResolveInfo;Landroid/content/Context;)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->equals(Ljava/lang/Object;)Z +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->getCapabilities()I +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->getComponentName()Landroid/content/ComponentName; +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->getId()Ljava/lang/String; +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->getResolveInfo()Landroid/content/pm/ResolveInfo; +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->initFromParcel(Landroid/os/Parcel;)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->isDirectBootAware()Z +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->setCapabilities(I)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->setComponentName(Landroid/content/ComponentName;)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->updateDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +HPLandroid/accessibilityservice/AccessibilityServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->init(Landroid/accessibilityservice/IAccessibilityServiceConnection;ILandroid/os/IBinder;)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub;->()V +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accessibilityservice/IAccessibilityServiceClient; +HPLandroid/accessibilityservice/IAccessibilityServiceClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->clearAccessibilityCache()V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->init(Landroid/accessibilityservice/IAccessibilityServiceConnection;ILandroid/os/IBinder;)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onAccessibilityButtonAvailabilityChanged(Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onAccessibilityButtonClicked()V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onFingerprintCapturingGesturesChanged(Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onFingerprintGesture(I)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onGesture(I)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onInterrupt()V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onKeyEvent(Landroid/view/KeyEvent;I)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onMagnificationChanged(Landroid/graphics/Region;FFF)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onPerformGestureResult(IZ)V +HPLandroid/accessibilityservice/IAccessibilityServiceClient;->onSoftKeyboardShowModeChanged(I)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->getWindows()Ljava/util/List; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub$Proxy;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->()V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accessibilityservice/IAccessibilityServiceConnection; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->disableSelf()V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->findAccessibilityNodeInfosByText(IJLjava/lang/String;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->findAccessibilityNodeInfosByViewId(IJLjava/lang/String;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->focusSearch(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getMagnificationCenterX()F +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getMagnificationCenterY()F +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getMagnificationRegion()Landroid/graphics/Region; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getMagnificationScale()F +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->getWindows()Ljava/util/List; +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->isAccessibilityButtonAvailable()Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->isFingerprintGestureDetectionAvailable()Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->performGlobalAction(I)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->resetMagnification(Z)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->sendGesture(ILandroid/content/pm/ParceledListSlice;)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setMagnificationCallbackEnabled(Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setMagnificationScaleAndCenter(FFFZ)Z +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setOnKeyEventResult(ZI)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setSoftKeyboardCallbackEnabled(Z)V +HPLandroid/accessibilityservice/IAccessibilityServiceConnection;->setSoftKeyboardShowMode(I)Z +HPLandroid/accounts/AbstractAccountAuthenticator$Transport;->(Landroid/accounts/AbstractAccountAuthenticator;)V +HPLandroid/accounts/AbstractAccountAuthenticator$Transport;->(Landroid/accounts/AbstractAccountAuthenticator;Landroid/accounts/AbstractAccountAuthenticator$Transport;)V +HPLandroid/accounts/AbstractAccountAuthenticator$Transport;->getAuthToken(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/AbstractAccountAuthenticator$Transport;->hasFeatures(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)V +HPLandroid/accounts/AbstractAccountAuthenticator;->-wrap0(Landroid/accounts/AbstractAccountAuthenticator;)V +HPLandroid/accounts/AbstractAccountAuthenticator;->(Landroid/content/Context;)V +HPLandroid/accounts/AbstractAccountAuthenticator;->addAccount(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/accounts/AbstractAccountAuthenticator;->checkBinderPermission()V +HPLandroid/accounts/AbstractAccountAuthenticator;->confirmCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/accounts/AbstractAccountAuthenticator;->editProperties(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;)Landroid/os/Bundle; +HPLandroid/accounts/AbstractAccountAuthenticator;->getAuthToken(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/accounts/AbstractAccountAuthenticator;->getAuthTokenLabel(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/accounts/AbstractAccountAuthenticator;->getIBinder()Landroid/os/IBinder; +HPLandroid/accounts/AbstractAccountAuthenticator;->hasFeatures(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)Landroid/os/Bundle; +HPLandroid/accounts/AbstractAccountAuthenticator;->updateCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/accounts/Account;->getAccessId()Ljava/lang/String; +HPLandroid/accounts/AccountAndUser;->(Landroid/accounts/Account;I)V +HPLandroid/accounts/AccountAndUser;->equals(Ljava/lang/Object;)Z +HPLandroid/accounts/AccountAndUser;->hashCode()I +HPLandroid/accounts/AccountAndUser;->toString()Ljava/lang/String; +HPLandroid/accounts/AccountAuthenticatorResponse$1;->()V +HPLandroid/accounts/AccountAuthenticatorResponse;->(Landroid/accounts/IAccountAuthenticatorResponse;)V +HPLandroid/accounts/AccountManager$Future2Task;->getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HPLandroid/accounts/AccountManager;->blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String; +HPLandroid/accounts/AccountManager;->getAccountsAsUser(I)[Landroid/accounts/Account; +HPLandroid/accounts/AccountManager;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +HPLandroid/accounts/AccountManager;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/accounts/AccountManager;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z +HPLandroid/accounts/AccountManager;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/AccountManager;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/accounts/AccountManager;->removeOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;)V +HPLandroid/accounts/AccountManager;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/AccountManager;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;->onAppPermissionChanged(Landroid/accounts/Account;I)V +HPLandroid/accounts/AccountManagerInternal;->()V +HPLandroid/accounts/AccountManagerInternal;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V +HPLandroid/accounts/AccountManagerInternal;->backupAccountAccessPermissions(I)[B +HPLandroid/accounts/AccountManagerInternal;->hasAccountAccess(Landroid/accounts/Account;I)Z +HPLandroid/accounts/AccountManagerInternal;->requestAccountAccess(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/RemoteCallback;)V +HPLandroid/accounts/AccountManagerInternal;->restoreAccountAccessPermissions([BI)V +HPLandroid/accounts/AuthenticatorDescription;->(Ljava/lang/String;)V +HPLandroid/accounts/AuthenticatorDescription;->(Ljava/lang/String;Ljava/lang/String;IIIIZ)V +HPLandroid/accounts/AuthenticatorDescription;->equals(Ljava/lang/Object;)Z +HPLandroid/accounts/AuthenticatorDescription;->hashCode()I +HPLandroid/accounts/AuthenticatorDescription;->newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription; +HPLandroid/accounts/AuthenticatorDescription;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/accounts/IAccountAuthenticator$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/accounts/IAccountAuthenticator$Stub$Proxy;->getAuthToken(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator$Stub$Proxy;->hasFeatures(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticator$Stub;->()V +HPLandroid/accounts/IAccountAuthenticator$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/accounts/IAccountAuthenticator$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountAuthenticator; +HPLandroid/accounts/IAccountAuthenticator$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/accounts/IAccountAuthenticator;->addAccount(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->addAccountFromCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->confirmCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->editProperties(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticator;->finishSession(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->getAccountCredentialsForCloning(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;)V +HPLandroid/accounts/IAccountAuthenticator;->getAccountRemovalAllowed(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;)V +HPLandroid/accounts/IAccountAuthenticator;->getAuthToken(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->getAuthTokenLabel(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticator;->hasFeatures(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticator;->isCredentialsUpdateSuggested(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticator;->startAddAccountSession(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->startUpdateCredentialsSession(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticator;->updateCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;->()V +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountAuthenticatorResponse; +HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/accounts/IAccountAuthenticatorResponse;->onError(ILjava/lang/String;)V +HPLandroid/accounts/IAccountAuthenticatorResponse;->onRequestContinued()V +HPLandroid/accounts/IAccountAuthenticatorResponse;->onResult(Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountManager$Stub$Proxy;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +HPLandroid/accounts/IAccountManager$Stub$Proxy;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/accounts/IAccountManager$Stub$Proxy;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/IAccountManager$Stub$Proxy;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/accounts/IAccountManager$Stub$Proxy;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/IAccountManager$Stub$Proxy;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/IAccountManager$Stub$Proxy;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/accounts/IAccountManager$Stub;->()V +HPLandroid/accounts/IAccountManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V +HPLandroid/accounts/IAccountManagerResponse$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManagerResponse; +HPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations()I +HPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V +HPLandroid/animation/Animator;->getListeners()Ljava/util/ArrayList; +HPLandroid/animation/AnimatorSet;->skipToEndValue(Z)V +HPLandroid/animation/FloatArrayEvaluator;->([F)V +HPLandroid/animation/FloatArrayEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/animation/FloatArrayEvaluator;->evaluate(F[F[F)[F +HPLandroid/animation/Keyframe$IntKeyframe;->getValue()Ljava/lang/Object; +HPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V +HPLandroid/animation/KeyframeSet;->ofPath(Landroid/graphics/Path;)Landroid/animation/PathKeyframes; +HPLandroid/animation/LayoutTransition$1;->(Landroid/animation/LayoutTransition;Landroid/view/View;)V +HPLandroid/animation/LayoutTransition$1;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/animation/LayoutTransition$2;->(Landroid/animation/LayoutTransition;Landroid/animation/Animator;IJLandroid/view/View;Landroid/view/ViewGroup;)V +HPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V +HPLandroid/animation/LayoutTransition$3;->(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;ILandroid/view/View$OnLayoutChangeListener;)V +HPLandroid/animation/LayoutTransition$3;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/animation/LayoutTransition$3;->onAnimationStart(Landroid/animation/Animator;)V +HPLandroid/animation/LayoutTransition$4;->(Landroid/animation/LayoutTransition;Landroid/view/View;Landroid/view/ViewGroup;)V +HPLandroid/animation/LayoutTransition$4;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/animation/LayoutTransition$5;->(Landroid/animation/LayoutTransition;Landroid/view/View;FLandroid/view/ViewGroup;)V +HPLandroid/animation/LayoutTransition$5;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/animation/LayoutTransition;->-get0(Landroid/animation/LayoutTransition;)Ljava/util/LinkedHashMap; +HPLandroid/animation/LayoutTransition;->-get1(Landroid/animation/LayoutTransition;)Ljava/util/LinkedHashMap; +HPLandroid/animation/LayoutTransition;->-get10(Landroid/animation/LayoutTransition;)J +HPLandroid/animation/LayoutTransition;->-get11(Landroid/animation/LayoutTransition;)Landroid/animation/TimeInterpolator; +HPLandroid/animation/LayoutTransition;->-get12(Landroid/animation/LayoutTransition;)J +HPLandroid/animation/LayoutTransition;->-get13(Landroid/animation/LayoutTransition;)Ljava/util/ArrayList; +HPLandroid/animation/LayoutTransition;->-get14(Landroid/animation/LayoutTransition;)Ljava/util/HashMap; +HPLandroid/animation/LayoutTransition;->-get16()Landroid/animation/TimeInterpolator; +HPLandroid/animation/LayoutTransition;->-get17()Landroid/animation/TimeInterpolator; +HPLandroid/animation/LayoutTransition;->-get18(Landroid/animation/LayoutTransition;)J +HPLandroid/animation/LayoutTransition;->-get2(Landroid/animation/LayoutTransition;)Ljava/util/LinkedHashMap; +HPLandroid/animation/LayoutTransition;->-get3(Landroid/animation/LayoutTransition;)Ljava/util/HashMap; +HPLandroid/animation/LayoutTransition;->-get7(Landroid/animation/LayoutTransition;)J +HPLandroid/animation/LayoutTransition;->-get8(Landroid/animation/LayoutTransition;)J +HPLandroid/animation/LayoutTransition;->-get9(Landroid/animation/LayoutTransition;)Landroid/animation/TimeInterpolator; +HPLandroid/animation/LayoutTransition;->-set0(Landroid/animation/LayoutTransition;J)J +HPLandroid/animation/LayoutTransition;->-wrap0(Landroid/animation/LayoutTransition;)Z +HPLandroid/animation/LayoutTransition;->hasListeners()Z +HPLandroid/animation/LayoutTransition;->isTransitionTypeEnabled(I)Z +HPLandroid/animation/LayoutTransition;->runAppearingTransition(Landroid/view/ViewGroup;Landroid/view/View;)V +HPLandroid/animation/LayoutTransition;->runDisappearingTransition(Landroid/view/ViewGroup;Landroid/view/View;)V +HPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V +HPLandroid/animation/LayoutTransition;->startChangingAnimations()V +HPLandroid/animation/ObjectAnimator;->ofObject(Ljava/lang/Object;Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/ObjectAnimator; +HPLandroid/animation/ObjectAnimator;->setupEndValues()V +HPLandroid/animation/ObjectAnimator;->setupStartValues()V +HPLandroid/animation/PathKeyframes$SimpleKeyframes;->getKeyframes()Ljava/util/ArrayList; +HPLandroid/animation/PathKeyframes$SimpleKeyframes;->getKeyframes()Ljava/util/List; +HPLandroid/animation/PathKeyframes;->-get0()Ljava/util/ArrayList; +HPLandroid/animation/PathKeyframes;->(Landroid/graphics/Path;)V +HPLandroid/animation/PathKeyframes;->getKeyframes()Ljava/util/ArrayList; +HPLandroid/animation/PathKeyframes;->getKeyframes()Ljava/util/List; +HPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V +HPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V +HPLandroid/animation/PropertyValuesHolder;->-wrap1(Ljava/lang/Class;Ljava/lang/String;)J +HPLandroid/animation/PropertyValuesHolder;->-wrap7(Ljava/lang/Object;JI)V +HPLandroid/animation/PropertyValuesHolder;->ofObject(Landroid/util/Property;Landroid/animation/TypeConverter;Landroid/graphics/Path;)Landroid/animation/PropertyValuesHolder; +HPLandroid/animation/PropertyValuesHolder;->ofObject(Landroid/util/Property;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder; +HPLandroid/animation/PropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V +HPLandroid/animation/PropertyValuesHolder;->setConverter(Landroid/animation/TypeConverter;)V +HPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V +HPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V +HPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V +HPLandroid/animation/RevealAnimator;->(Landroid/view/View;IIFF)V +HPLandroid/animation/RevealAnimator;->onFinished()V +HPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->getChangingConfigurations()I +HPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z +HPLandroid/animation/ValueAnimator;->getAnimatedValue(Ljava/lang/String;)Ljava/lang/Object; +HPLandroid/animation/ValueAnimator;->getCurrentPlayTime()J +HPLandroid/animation/ValueAnimator;->ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator; +HPLandroid/animation/ValueAnimator;->ofPropertyValuesHolder([Landroid/animation/PropertyValuesHolder;)Landroid/animation/ValueAnimator; +HPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4$1;->$m$0()V +HPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4$1;->(IILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4$1;->run()V +HPLandroid/app/ActionBar;->onDestroy()V +HPLandroid/app/Activity$HostCallbacks;->onShouldSaveFragmentState(Landroid/app/Fragment;)Z +HPLandroid/app/Activity$HostCallbacks;->onStartActivityAsUserFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/Activity$NonConfigurationInstances;->()V +HPLandroid/app/Activity;->canStartActivityForResult()Z +HPLandroid/app/Activity;->cancelInputsAndStartExitTransition(Landroid/os/Bundle;)V +HPLandroid/app/Activity;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/app/Activity;->finish()V +HPLandroid/app/Activity;->finish(I)V +HPLandroid/app/Activity;->finishAfterTransition()V +HPLandroid/app/Activity;->finishAndRemoveTask()V +HPLandroid/app/Activity;->getAutofillManager()Landroid/view/autofill/AutofillManager; +HPLandroid/app/Activity;->getRequestedOrientation()I +HPLandroid/app/Activity;->isInPictureInPictureMode()Z +HPLandroid/app/Activity;->onBackPressed()V +HPLandroid/app/Activity;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/Activity;->onDestroy()V +HPLandroid/app/Activity;->onDetachedFromWindow()V +HPLandroid/app/Activity;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/app/Activity;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/app/Activity;->onMenuItemSelected(ILandroid/view/MenuItem;)Z +HPLandroid/app/Activity;->onNewIntent(Landroid/content/Intent;)V +HPLandroid/app/Activity;->onRestart()V +HPLandroid/app/Activity;->onRetainNonConfigurationChildInstances()Ljava/util/HashMap; +HPLandroid/app/Activity;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/app/Activity;->overridePendingTransition(II)V +HPLandroid/app/Activity;->performDestroy()V +HPLandroid/app/Activity;->retainNonConfigurationInstances()Landroid/app/Activity$NonConfigurationInstances; +HPLandroid/app/Activity;->setImmersive(Z)V +HPLandroid/app/Activity;->setResult(I)V +HPLandroid/app/Activity;->startActivity(Landroid/content/Intent;)V +HPLandroid/app/Activity;->startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V +HPLandroid/app/Activity;->startActivityAsUserFromFragment(Landroid/app/Fragment;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/Activity;->startActivityForResultAsUser(Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/Activity;->startActivityForResultAsUser(Landroid/content/Intent;ILandroid/os/UserHandle;)V +HPLandroid/app/Activity;->startActivityForResultAsUser(Landroid/content/Intent;Ljava/lang/String;ILandroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/ActivityManager$AppTask;->setExcludeFromRecents(Z)V +HPLandroid/app/ActivityManager$MemoryInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$OnUidImportanceListener;->onUidImportance(II)V +HPLandroid/app/ActivityManager$RecentTaskInfo;->()V +HPLandroid/app/ActivityManager$RecentTaskInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->(Ljava/lang/String;I[Ljava/lang/String;)V +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->importanceToProcState(I)I +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportance(I)I +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportanceForClient(ILandroid/content/Context;)I +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportanceForTargetSdk(II)I +HPLandroid/app/ActivityManager$RunningAppProcessInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$RunningServiceInfo$1;->()V +HPLandroid/app/ActivityManager$RunningServiceInfo;->()V +HPLandroid/app/ActivityManager$RunningServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$RunningTaskInfo;->()V +HPLandroid/app/ActivityManager$RunningTaskInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$StackId;->allowTopTaskToReturnHome(I)Z +HPLandroid/app/ActivityManager$StackId;->canReceiveKeys(I)Z +HPLandroid/app/ActivityManager$StackId;->hasMovementAnimations(I)Z +HPLandroid/app/ActivityManager$StackId;->isAlwaysOnTop(I)Z +HPLandroid/app/ActivityManager$StackId;->isBackdropToTranslucentActivity(I)Z +HPLandroid/app/ActivityManager$StackId;->isDynamicStack(I)Z +HPLandroid/app/ActivityManager$StackId;->isHomeOrRecentsStack(I)Z +HPLandroid/app/ActivityManager$StackId;->isResizeableByDockedStack(I)Z +HPLandroid/app/ActivityManager$StackId;->isStackAffectedByDragResizing(I)Z +HPLandroid/app/ActivityManager$StackId;->isStaticStack(I)Z +HPLandroid/app/ActivityManager$StackId;->isTaskResizeAllowed(I)Z +HPLandroid/app/ActivityManager$StackId;->keepFocusInStackIfPossible(I)Z +HPLandroid/app/ActivityManager$StackId;->normallyFullscreenWindows(I)Z +HPLandroid/app/ActivityManager$StackId;->persistTaskBounds(I)Z +HPLandroid/app/ActivityManager$StackId;->tasksAreFloating(I)Z +HPLandroid/app/ActivityManager$StackId;->useWindowFrameForBackdrop(I)Z +HPLandroid/app/ActivityManager$StackId;->windowsAreScaleable(I)Z +HPLandroid/app/ActivityManager$StackInfo$1;->()V +HPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$StackInfo; +HPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/ActivityManager$StackInfo;->()V +HPLandroid/app/ActivityManager$StackInfo;->(Landroid/os/Parcel;)V +HPLandroid/app/ActivityManager$StackInfo;->(Landroid/os/Parcel;Landroid/app/ActivityManager$StackInfo;)V +HPLandroid/app/ActivityManager$StackInfo;->readFromParcel(Landroid/os/Parcel;)V +HPLandroid/app/ActivityManager$StackInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$TaskDescription;->(Landroid/app/ActivityManager$TaskDescription;)V +HPLandroid/app/ActivityManager$TaskDescription;->copyFrom(Landroid/app/ActivityManager$TaskDescription;)V +HPLandroid/app/ActivityManager$TaskDescription;->getBackgroundColor()I +HPLandroid/app/ActivityManager$TaskDescription;->getInMemoryIcon()Landroid/graphics/Bitmap; +HPLandroid/app/ActivityManager$TaskDescription;->getLabel()Ljava/lang/String; +HPLandroid/app/ActivityManager$TaskDescription;->getNavigationBarColor()I +HPLandroid/app/ActivityManager$TaskDescription;->getStatusBarColor()I +HPLandroid/app/ActivityManager$TaskDescription;->restoreFromXml(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/app/ActivityManager$TaskDescription;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/app/ActivityManager$TaskDescription;->setIconFilename(Ljava/lang/String;)V +HPLandroid/app/ActivityManager$TaskDescription;->setLabel(Ljava/lang/String;)V +HPLandroid/app/ActivityManager$TaskSnapshot$1;->()V +HPLandroid/app/ActivityManager$TaskSnapshot$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$TaskSnapshot; +HPLandroid/app/ActivityManager$TaskSnapshot$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/ActivityManager$TaskSnapshot;->(Landroid/graphics/GraphicBuffer;ILandroid/graphics/Rect;ZF)V +HPLandroid/app/ActivityManager$TaskSnapshot;->(Landroid/os/Parcel;)V +HPLandroid/app/ActivityManager$TaskSnapshot;->(Landroid/os/Parcel;Landroid/app/ActivityManager$TaskSnapshot;)V +HPLandroid/app/ActivityManager$TaskSnapshot;->getContentInsets()Landroid/graphics/Rect; +HPLandroid/app/ActivityManager$TaskSnapshot;->getOrientation()I +HPLandroid/app/ActivityManager$TaskSnapshot;->getScale()F +HPLandroid/app/ActivityManager$TaskSnapshot;->getSnapshot()Landroid/graphics/GraphicBuffer; +HPLandroid/app/ActivityManager$TaskSnapshot;->isReducedResolution()Z +HPLandroid/app/ActivityManager$TaskSnapshot;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/ActivityManager$TaskThumbnailInfo$1;->()V +HPLandroid/app/ActivityManager$TaskThumbnailInfo;->()V +HPLandroid/app/ActivityManager$TaskThumbnailInfo;->reset()V +HPLandroid/app/ActivityManager$TaskThumbnailInfo;->restoreFromXml(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/app/ActivityManager$TaskThumbnailInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/app/ActivityManager$UidObserver;->(Landroid/app/ActivityManager$OnUidImportanceListener;Landroid/content/Context;)V +HPLandroid/app/ActivityManager$UidObserver;->onUidGone(IZ)V +HPLandroid/app/ActivityManager$UidObserver;->onUidStateChanged(IIJ)V +HPLandroid/app/ActivityManager;->addOnUidImportanceListener(Landroid/app/ActivityManager$OnUidImportanceListener;I)V +HPLandroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ)I +HPLandroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I +HPLandroid/app/ActivityManager;->getDefaultAppRecentsLimitStatic()I +HPLandroid/app/ActivityManager;->getLockTaskModeState()I +HPLandroid/app/ActivityManager;->getMaxAppRecentsLimitStatic()I +HPLandroid/app/ActivityManager;->getPackageImportance(Ljava/lang/String;)I +HPLandroid/app/ActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I +HPLandroid/app/ActivityManager;->isInLockTaskMode()Z +HPLandroid/app/ActivityManager;->isProcStateBackground(I)Z +HPLandroid/app/ActivityManager;->isStartResultSuccessful(I)Z +HPLandroid/app/ActivityManager;->isSystemReady()Z +HPLandroid/app/ActivityManager;->isUserRunning(I)Z +HPLandroid/app/ActivityManager;->noteAlarmFinish(Landroid/app/PendingIntent;ILjava/lang/String;)V +HPLandroid/app/ActivityManager;->noteAlarmStart(Landroid/app/PendingIntent;ILjava/lang/String;)V +HPLandroid/app/ActivityManager;->noteWakeupAlarm(Landroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;)V +HPLandroid/app/ActivityManager;->supportsMultiWindow(Landroid/content/Context;)Z +HPLandroid/app/ActivityManager;->supportsSplitScreenMultiWindow(Landroid/content/Context;)Z +HPLandroid/app/ActivityManagerInternal$SleepToken;->()V +HPLandroid/app/ActivityManagerInternal$SleepToken;->release()V +HPLandroid/app/ActivityOptions;->()V +HPLandroid/app/ActivityOptions;->(Landroid/os/Bundle;)V +HPLandroid/app/ActivityOptions;->abort(Landroid/app/ActivityOptions;)V +HPLandroid/app/ActivityOptions;->disallowEnterPictureInPictureWhileLaunching()Z +HPLandroid/app/ActivityOptions;->forTargetActivity()Landroid/app/ActivityOptions; +HPLandroid/app/ActivityOptions;->getAnimationType()I +HPLandroid/app/ActivityOptions;->getCustomEnterResId()I +HPLandroid/app/ActivityOptions;->getCustomExitResId()I +HPLandroid/app/ActivityOptions;->getHeight()I +HPLandroid/app/ActivityOptions;->getLaunchBounds()Landroid/graphics/Rect; +HPLandroid/app/ActivityOptions;->getLaunchDisplayId()I +HPLandroid/app/ActivityOptions;->getLaunchStackId()I +HPLandroid/app/ActivityOptions;->getLaunchTaskBehind()Z +HPLandroid/app/ActivityOptions;->getLaunchTaskId()I +HPLandroid/app/ActivityOptions;->getOnAnimationStartListener()Landroid/os/IRemoteCallback; +HPLandroid/app/ActivityOptions;->getPackageName()Ljava/lang/String; +HPLandroid/app/ActivityOptions;->getRotationAnimationHint()I +HPLandroid/app/ActivityOptions;->getStartX()I +HPLandroid/app/ActivityOptions;->getStartY()I +HPLandroid/app/ActivityOptions;->getUsageTimeReport()Landroid/app/PendingIntent; +HPLandroid/app/ActivityOptions;->getWidth()I +HPLandroid/app/ActivityOptions;->makeClipRevealAnimation(Landroid/view/View;IIII)Landroid/app/ActivityOptions; +HPLandroid/app/ActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle; +HPLandroid/app/ActivityOptions;->toBundle()Landroid/os/Bundle; +HPLandroid/app/ActivityThread$ApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleActivityConfigurationChanged(Landroid/os/IBinder;Landroid/content/res/Configuration;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleDestroyActivity(Landroid/os/IBinder;ZI)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleNewIntent(Ljava/util/List;Landroid/os/IBinder;Z)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleRelaunchActivity(Landroid/os/IBinder;Ljava/util/List;Ljava/util/List;IZLandroid/content/res/Configuration;Landroid/content/res/Configuration;Z)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleResumeActivity(Landroid/os/IBinder;IZLandroid/os/Bundle;)V +HPLandroid/app/ActivityThread$ApplicationThread;->scheduleWindowVisibility(Landroid/os/IBinder;Z)V +HPLandroid/app/ActivityThread$GcIdler;->queueIdle()Z +HPLandroid/app/ActivityThread$NewIntentData;->()V +HPLandroid/app/ActivityThread;->-wrap14(Landroid/app/ActivityThread;Landroid/app/ActivityThread$NewIntentData;)V +HPLandroid/app/ActivityThread;->-wrap18(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ActivityClientRecord;)V +HPLandroid/app/ActivityThread;->-wrap29(Landroid/app/ActivityThread;Landroid/os/IBinder;Z)V +HPLandroid/app/ActivityThread;->-wrap34(Landroid/app/ActivityThread;ILjava/lang/Object;II)V +HPLandroid/app/ActivityThread;->-wrap5(Landroid/app/ActivityThread;Landroid/os/IBinder;ZIZ)V +HPLandroid/app/ActivityThread;->applyConfigurationToResources(Landroid/content/res/Configuration;)V +HPLandroid/app/ActivityThread;->createNewConfigAndUpdateIfNotNull(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; +HPLandroid/app/ActivityThread;->doGcIfNeeded()V +HPLandroid/app/ActivityThread;->handleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V +HPLandroid/app/ActivityThread;->handleDestroyActivity(Landroid/os/IBinder;ZIZ)V +HPLandroid/app/ActivityThread;->handleDispatchPackageBroadcast(I[Ljava/lang/String;)V +HPLandroid/app/ActivityThread;->handleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HPLandroid/app/ActivityThread;->handleNewIntent(Landroid/app/ActivityThread$NewIntentData;)V +HPLandroid/app/ActivityThread;->handleRelaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;)V +HPLandroid/app/ActivityThread;->handleWindowVisibility(Landroid/os/IBinder;Z)V +HPLandroid/app/ActivityThread;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)V +HPLandroid/app/ActivityThread;->installSystemProviders(Ljava/util/List;)V +HPLandroid/app/ActivityThread;->performConfigurationChanged(Landroid/content/ComponentCallbacks2;Landroid/content/res/Configuration;)V +HPLandroid/app/ActivityThread;->performDestroyActivity(Landroid/os/IBinder;ZIZ)Landroid/app/ActivityThread$ActivityClientRecord; +HPLandroid/app/ActivityThread;->performNewIntents(Landroid/os/IBinder;Ljava/util/List;Z)V +HPLandroid/app/ActivityThread;->requestRelaunchActivity(Landroid/os/IBinder;Ljava/util/List;Ljava/util/List;IZLandroid/content/res/Configuration;Landroid/content/res/Configuration;ZZ)V +HPLandroid/app/ActivityThread;->requestRelaunchAllActivities()V +HPLandroid/app/ActivityThread;->scheduleGcIdler()V +HPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;II)V +HPLandroid/app/ActivityTransitionState;->startExitBackTransition(Landroid/app/Activity;)Z +HPLandroid/app/AlarmManager$ListenerWrapper;->(Landroid/app/AlarmManager;Landroid/app/AlarmManager$OnAlarmListener;)V +HPLandroid/app/AlarmManager$ListenerWrapper;->cancel()V +HPLandroid/app/AlarmManager$ListenerWrapper;->doAlarm(Landroid/app/IAlarmCompleteListener;)V +HPLandroid/app/AlarmManager$ListenerWrapper;->run()V +HPLandroid/app/AlarmManager$ListenerWrapper;->setHandler(Landroid/os/Handler;)V +HPLandroid/app/AlarmManager;->-get0(Landroid/app/AlarmManager;)Landroid/app/IAlarmManager; +HPLandroid/app/AlarmManager;->-get1()Landroid/util/ArrayMap; +HPLandroid/app/AlarmManager;->cancel(Landroid/app/AlarmManager$OnAlarmListener;)V +HPLandroid/app/AlarmManager;->set(IJJJLandroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V +HPLandroid/app/AlarmManager;->set(IJJJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V +HPLandroid/app/AlarmManager;->set(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V +HPLandroid/app/AlarmManager;->setAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V +HPLandroid/app/AlarmManager;->setExact(IJLandroid/app/PendingIntent;)V +HPLandroid/app/AlarmManager;->setExact(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V +HPLandroid/app/AlarmManager;->setWindow(IJJLandroid/app/PendingIntent;)V +HPLandroid/app/AlertDialog$Builder;->setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; +HPLandroid/app/AlertDialog;->onCreate(Landroid/os/Bundle;)V +HPLandroid/app/AppOpsManager$OnOpChangedInternalListener;->()V +HPLandroid/app/AppOpsManager$OpEntry;->(IIJJIILjava/lang/String;)V +HPLandroid/app/AppOpsManager$OpEntry;->getDuration()I +HPLandroid/app/AppOpsManager$OpEntry;->getMode()I +HPLandroid/app/AppOpsManager$OpEntry;->getProxyPackageName()Ljava/lang/String; +HPLandroid/app/AppOpsManager$OpEntry;->getProxyUid()I +HPLandroid/app/AppOpsManager$OpEntry;->getRejectTime()J +HPLandroid/app/AppOpsManager$OpEntry;->getTime()J +HPLandroid/app/AppOpsManager$OpEntry;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/AppOpsManager$PackageOps;->(Ljava/lang/String;ILjava/util/List;)V +HPLandroid/app/AppOpsManager$PackageOps;->getPackageName()Ljava/lang/String; +HPLandroid/app/AppOpsManager$PackageOps;->getUid()I +HPLandroid/app/AppOpsManager$PackageOps;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/AppOpsManager;->finishOp(IILjava/lang/String;)V +HPLandroid/app/AppOpsManager;->finishOp(Ljava/lang/String;ILjava/lang/String;)V +HPLandroid/app/AppOpsManager;->isOperationActive(IILjava/lang/String;)Z +HPLandroid/app/AppOpsManager;->noteOp(Ljava/lang/String;ILjava/lang/String;)I +HPLandroid/app/AppOpsManager;->noteOpNoThrow(IILjava/lang/String;)I +HPLandroid/app/AppOpsManager;->noteOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I +HPLandroid/app/AppOpsManager;->opToRestriction(I)Ljava/lang/String; +HPLandroid/app/AppOpsManager;->setRestriction(III[Ljava/lang/String;)V +HPLandroid/app/AppOpsManager;->setUidMode(III)V +HPLandroid/app/AppOpsManager;->stopWatchingMode(Landroid/app/AppOpsManager$OnOpChangedListener;)V +HPLandroid/app/Application;->dispatchActivityDestroyed(Landroid/app/Activity;)V +HPLandroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/Application;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V +HPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo$1;->()V +HPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;->(Ljava/lang/Throwable;)V +HPLandroid/app/ApplicationPackageManager;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; +HPLandroid/app/ApplicationPackageManager;->checkSignatures(II)I +HPLandroid/app/ApplicationPackageManager;->getChangedPackages(I)Landroid/content/pm/ChangedPackages; +HPLandroid/app/ApplicationPackageManager;->getInstalledApplications(I)Ljava/util/List; +HPLandroid/app/ApplicationPackageManager;->getInstalledApplicationsAsUser(II)Ljava/util/List; +HPLandroid/app/ApplicationPackageManager;->getPackageSizeInfoAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageStatsObserver;)V +HPLandroid/app/ApplicationPackageManager;->getPackageUidAsUser(Ljava/lang/String;I)I +HPLandroid/app/ApplicationPackageManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I +HPLandroid/app/ApplicationPackageManager;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; +HPLandroid/app/ApplicationPackageManager;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; +HPLandroid/app/ApplicationPackageManager;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)V +HPLandroid/app/ApplicationPackageManager;->handlePackageBroadcast(I[Ljava/lang/String;Z)V +HPLandroid/app/ApplicationPackageManager;->isInstantApp()Z +HPLandroid/app/ApplicationPackageManager;->isInstantApp(Ljava/lang/String;)Z +HPLandroid/app/ApplicationPackageManager;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List; +HPLandroid/app/ApplicationPackageManager;->removeOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V +HPLandroid/app/ApplicationPackageManager;->replacePreferredActivityAsUser(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V +HPLandroid/app/ApplicationPackageManager;->setApplicationEnabledSetting(Ljava/lang/String;II)V +HPLandroid/app/AutomaticZenRule$1;->()V +HPLandroid/app/AutomaticZenRule;->(Ljava/lang/String;Landroid/content/ComponentName;Landroid/net/Uri;IZ)V +HPLandroid/app/AutomaticZenRule;->(Ljava/lang/String;Landroid/content/ComponentName;Landroid/net/Uri;IZJ)V +HPLandroid/app/AutomaticZenRule;->isEnabled()Z +HPLandroid/app/BackStackRecord;->hide(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HPLandroid/app/BackStackRecord;->remove(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HPLandroid/app/BackStackRecord;->setBreadCrumbTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction; +HPLandroid/app/BroadcastOptions;->()V +HPLandroid/app/BroadcastOptions;->(Landroid/os/Bundle;)V +HPLandroid/app/BroadcastOptions;->getMaxManifestReceiverApiLevel()I +HPLandroid/app/BroadcastOptions;->getMinManifestReceiverApiLevel()I +HPLandroid/app/BroadcastOptions;->getTemporaryAppWhitelistDuration()J +HPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions; +HPLandroid/app/BroadcastOptions;->setMaxManifestReceiverApiLevel(I)V +HPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V +HPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle; +HPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z +HPLandroid/app/ContextImpl;->checkCallingPermission(Ljava/lang/String;)I +HPLandroid/app/ContextImpl;->deleteSharedPreferences(Ljava/lang/String;)Z +HPLandroid/app/ContextImpl;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/app/ContextImpl;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V +HPLandroid/app/ContextImpl;->getMainThreadHandler()Landroid/os/Handler; +HPLandroid/app/ContextImpl;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)V +HPLandroid/app/ContextImpl;->removeStickyBroadcast(Landroid/content/Intent;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;ILandroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/os/Bundle;)V +HPLandroid/app/ContextImpl;->startActivityAsUser(Landroid/content/Intent;Landroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/ContextImpl;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HPLandroid/app/ContextImpl;->startServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/ComponentName; +HPLandroid/app/Dialog$ListenersHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/app/Dialog;->dismiss()V +HPLandroid/app/Dialog;->dismissDialog()V +HPLandroid/app/Dialog;->dispatchOnCreate(Landroid/os/Bundle;)V +HPLandroid/app/Dialog;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HPLandroid/app/Dialog;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/app/Dialog;->hide()V +HPLandroid/app/Dialog;->isShowing()Z +HPLandroid/app/Dialog;->onAttachedToWindow()V +HPLandroid/app/Dialog;->onCreate(Landroid/os/Bundle;)V +HPLandroid/app/Dialog;->onDetachedFromWindow()V +HPLandroid/app/Dialog;->onStart()V +HPLandroid/app/Dialog;->onStop()V +HPLandroid/app/Dialog;->onWindowFocusChanged(Z)V +HPLandroid/app/Dialog;->sendDismissMessage()V +HPLandroid/app/Dialog;->sendShowMessage()V +HPLandroid/app/Dialog;->show()V +HPLandroid/app/Fragment;->getStateAfterAnimating()I +HPLandroid/app/Fragment;->getTag()Ljava/lang/String; +HPLandroid/app/Fragment;->initState()V +HPLandroid/app/Fragment;->isHideReplaced()Z +HPLandroid/app/Fragment;->isInBackStack()Z +HPLandroid/app/Fragment;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/Fragment;->onDestroy()V +HPLandroid/app/Fragment;->onDestroyView()V +HPLandroid/app/Fragment;->onDetach()V +HPLandroid/app/Fragment;->onHiddenChanged(Z)V +HPLandroid/app/Fragment;->performConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/Fragment;->performDestroy()V +HPLandroid/app/Fragment;->performDestroyView()V +HPLandroid/app/Fragment;->performDetach()V +HPLandroid/app/Fragment;->setAnimatingAway(Landroid/animation/Animator;)V +HPLandroid/app/Fragment;->setStateAfterAnimating(I)V +HPLandroid/app/Fragment;->startActivityForResultAsUser(Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)V +HPLandroid/app/FragmentController;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/FragmentController;->dispatchDestroy()V +HPLandroid/app/FragmentController;->doLoaderDestroy()V +HPLandroid/app/FragmentController;->restoreLoaderNonConfig(Landroid/util/ArrayMap;)V +HPLandroid/app/FragmentController;->retainLoaderNonConfig()Landroid/util/ArrayMap; +HPLandroid/app/FragmentController;->retainNestedNonConfig()Landroid/app/FragmentManagerNonConfig; +HPLandroid/app/FragmentHostCallback;->doLoaderDestroy()V +HPLandroid/app/FragmentHostCallback;->inactivateFragment(Ljava/lang/String;)V +HPLandroid/app/FragmentHostCallback;->restoreLoaderNonConfig(Landroid/util/ArrayMap;)V +HPLandroid/app/FragmentHostCallback;->retainLoaderNonConfig()Landroid/util/ArrayMap; +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentActivityCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentAttached(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/content/Context;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentPreAttached(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/content/Context;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentPreCreated(Landroid/app/FragmentManager;Landroid/app/Fragment;Landroid/os/Bundle;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentResumed(Landroid/app/FragmentManager;Landroid/app/Fragment;)V +HPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->onFragmentStarted(Landroid/app/FragmentManager;Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl$2;->(Landroid/app/FragmentManagerImpl;Landroid/view/ViewGroup;Landroid/view/View;Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl$2;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/app/FragmentManagerImpl;->completeShowHideFragment(Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/FragmentManagerImpl;->dispatchDestroy()V +HPLandroid/app/FragmentManagerImpl;->dispatchDestroyView()V +HPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentDestroyed(Landroid/app/Fragment;Z)V +HPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentDetached(Landroid/app/Fragment;Z)V +HPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentViewDestroyed(Landroid/app/Fragment;Z)V +HPLandroid/app/FragmentManagerImpl;->hideFragment(Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl;->isStateSaved()Z +HPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl;->popBackStackImmediate()Z +HPLandroid/app/FragmentManagerImpl;->popBackStackImmediate(Ljava/lang/String;II)Z +HPLandroid/app/FragmentManagerImpl;->popBackStackState(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/String;II)Z +HPLandroid/app/FragmentManagerImpl;->removeFragment(Landroid/app/Fragment;)V +HPLandroid/app/FragmentManagerImpl;->retainNonConfig()Landroid/app/FragmentManagerNonConfig; +HPLandroid/app/FragmentManagerImpl;->setRetaining(Landroid/app/FragmentManagerNonConfig;)V +HPLandroid/app/FragmentManagerNonConfig;->(Ljava/util/List;Ljava/util/List;)V +HPLandroid/app/FragmentTransition;->captureInSharedElements(Landroid/util/ArrayMap;Landroid/transition/TransitionSet;Landroid/app/FragmentTransition$FragmentContainerTransition;)Landroid/util/ArrayMap; +HPLandroid/app/FragmentTransition;->captureOutSharedElements(Landroid/util/ArrayMap;Landroid/transition/TransitionSet;Landroid/app/FragmentTransition$FragmentContainerTransition;)Landroid/util/ArrayMap; +HPLandroid/app/IActivityManager$Stub$Proxy;->activityDestroyed(Landroid/os/IBinder;)V +HPLandroid/app/IActivityManager$Stub$Proxy;->activityRelaunched(Landroid/os/IBinder;)V +HPLandroid/app/IActivityManager$Stub$Proxy;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z +HPLandroid/app/IActivityManager$Stub$Proxy;->getLockTaskModeState()I +HPLandroid/app/IActivityManager$Stub$Proxy;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String; +HPLandroid/app/IActivityManager$Stub$Proxy;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/app/IActivityManager$Stub$Proxy;->getRequestedOrientation(Landroid/os/IBinder;)I +HPLandroid/app/IActivityManager$Stub$Proxy;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; +HPLandroid/app/IActivityManager$Stub$Proxy;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLandroid/app/IActivityManager$Stub$Proxy;->getUidForIntentSender(Landroid/content/IIntentSender;)I +HPLandroid/app/IActivityManager$Stub$Proxy;->isInLockTaskMode()Z +HPLandroid/app/IActivityManager$Stub$Proxy;->isInPictureInPictureMode(Landroid/os/IBinder;)Z +HPLandroid/app/IActivityManager$Stub$Proxy;->isUserRunning(II)Z +HPLandroid/app/IActivityManager$Stub$Proxy;->keyguardGoingAway(I)V +HPLandroid/app/IActivityManager$Stub$Proxy;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V +HPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V +HPLandroid/app/IActivityManager$Stub$Proxy;->setHasTopUi(Z)V +HPLandroid/app/IActivityManager$Stub$Proxy;->setImmersive(Landroid/os/IBinder;Z)V +HPLandroid/app/IActivityManager$Stub$Proxy;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I +HPLandroid/app/IActivityManager$Stub$Proxy;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V +HPLandroid/app/IActivityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IAlarmCompleteListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IAlarmCompleteListener$Stub$Proxy;->alarmComplete(Landroid/os/IBinder;)V +HPLandroid/app/IAlarmCompleteListener$Stub;->()V +HPLandroid/app/IAlarmCompleteListener$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IAlarmCompleteListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmCompleteListener; +HPLandroid/app/IAlarmCompleteListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IAlarmCompleteListener;->alarmComplete(Landroid/os/IBinder;)V +HPLandroid/app/IAlarmListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IAlarmListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IAlarmListener$Stub$Proxy;->doAlarm(Landroid/app/IAlarmCompleteListener;)V +HPLandroid/app/IAlarmListener$Stub;->()V +HPLandroid/app/IAlarmListener$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IAlarmListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmListener; +HPLandroid/app/IAlarmListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IAlarmListener;->doAlarm(Landroid/app/IAlarmCompleteListener;)V +HPLandroid/app/IAlarmManager$Stub$Proxy;->setTime(J)Z +HPLandroid/app/IAlarmManager$Stub;->()V +HPLandroid/app/IAlarmManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IAppTask$Stub$Proxy;->setExcludeFromRecents(Z)V +HPLandroid/app/IAppTask$Stub;->()V +HPLandroid/app/IAppTask$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IAppTask$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IApplicationThread$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/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;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->clearDnsCache()V +HPLandroid/app/IApplicationThread$Stub$Proxy;->dispatchPackageBroadcast(I[Ljava/lang/String;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->dumpHeap(ZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->dumpMemInfo(Landroid/os/ParcelFileDescriptor;Landroid/os/Debug$MemoryInfo;ZZZZZ[Ljava/lang/String;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleActivityConfigurationChanged(Landroid/os/IBinder;Landroid/content/res/Configuration;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleDestroyActivity(Landroid/os/IBinder;ZI)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleLaunchActivity(Landroid/content/Intent;Landroid/os/IBinder;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;ZZLandroid/app/ProfilerInfo;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleNewIntent(Ljava/util/List;Landroid/os/IBinder;Z)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->schedulePauseActivity(Landroid/os/IBinder;ZZIZ)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleRelaunchActivity(Landroid/os/IBinder;Ljava/util/List;Ljava/util/List;IZLandroid/content/res/Configuration;Landroid/content/res/Configuration;Z)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleResumeActivity(Landroid/os/IBinder;IZLandroid/os/Bundle;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSendResult(Landroid/os/IBinder;Ljava/util/List;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSleeping(Landroid/os/IBinder;Z)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleStopActivity(Landroid/os/IBinder;ZI)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleStopService(Landroid/os/IBinder;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleTrimMemory(I)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleWindowVisibility(Landroid/os/IBinder;Z)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->setProcessState(I)V +HPLandroid/app/IApplicationThread$Stub$Proxy;->unstableProviderDied(Landroid/os/IBinder;)V +HPLandroid/app/IApplicationThread$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IApplicationThread; +HPLandroid/app/IInstantAppResolver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IInstantAppResolver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IInstantAppResolver$Stub$Proxy;->getInstantAppResolveInfoList([ILjava/lang/String;ILandroid/os/IRemoteCallback;)V +HPLandroid/app/IInstantAppResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstantAppResolver; +HPLandroid/app/IInstantAppResolver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IInstrumentationWatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IInstrumentationWatcher$Stub$Proxy;->instrumentationFinished(Landroid/content/ComponentName;ILandroid/os/Bundle;)V +HPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +HPLandroid/app/INotificationManager$Stub$Proxy;->getZenRules()Ljava/util/List; +HPLandroid/app/INotificationManager$Stub$Proxy;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V +HPLandroid/app/INotificationManager$Stub;->()V +HPLandroid/app/INotificationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IProcessObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IProcessObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IProcessObserver$Stub$Proxy;->onForegroundActivitiesChanged(IIZ)V +HPLandroid/app/IProcessObserver$Stub$Proxy;->onProcessDied(II)V +HPLandroid/app/IProcessObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IProcessObserver; +HPLandroid/app/IProcessObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/ISearchManager$Stub;->()V +HPLandroid/app/IServiceConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IServiceConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IServiceConnection$Stub$Proxy;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V +HPLandroid/app/IServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IServiceConnection; +HPLandroid/app/ITaskStackListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onActivityRequestedOrientationChanged(II)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskCreated(ILandroid/content/ComponentName;)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskMovedToFront(I)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskRemovalStarted(I)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskRemoved(I)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V +HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskStackChanged()V +HPLandroid/app/ITaskStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITaskStackListener; +HPLandroid/app/ITransientNotification$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/ITransientNotification$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/ITransientNotification$Stub$Proxy;->hide()V +HPLandroid/app/ITransientNotification$Stub$Proxy;->show(Landroid/os/IBinder;)V +HPLandroid/app/ITransientNotification$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITransientNotification; +HPLandroid/app/IUiAutomationConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IUiAutomationConnection$Stub$Proxy;->connect(Landroid/accessibilityservice/IAccessibilityServiceClient;I)V +HPLandroid/app/IUiAutomationConnection$Stub$Proxy;->executeShellCommand(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;)V +HPLandroid/app/IUiAutomationConnection$Stub$Proxy;->injectInputEvent(Landroid/view/InputEvent;Z)Z +HPLandroid/app/IUiAutomationConnection$Stub$Proxy;->shutdown()V +HPLandroid/app/IUiModeManager$Stub;->()V +HPLandroid/app/IUiModeManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IUidObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IUidObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IUidObserver$Stub$Proxy;->onUidGone(IZ)V +HPLandroid/app/IUidObserver$Stub$Proxy;->onUidStateChanged(IIJ)V +HPLandroid/app/IUidObserver$Stub;->()V +HPLandroid/app/IUidObserver$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IUidObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUidObserver; +HPLandroid/app/IUidObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IUidObserver;->onUidActive(I)V +HPLandroid/app/IUidObserver;->onUidCachedChanged(IZ)V +HPLandroid/app/IUidObserver;->onUidGone(IZ)V +HPLandroid/app/IUidObserver;->onUidIdle(IZ)V +HPLandroid/app/IUidObserver;->onUidStateChanged(IIJ)V +HPLandroid/app/IUserSwitchObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IUserSwitchObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IUserSwitchObserver$Stub$Proxy;->onLockedBootComplete(I)V +HPLandroid/app/IUserSwitchObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUserSwitchObserver; +HPLandroid/app/IUserSwitchObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IWallpaperManager$Stub$Proxy;->isSetWallpaperAllowed(Ljava/lang/String;)Z +HPLandroid/app/IWallpaperManager$Stub;->()V +HPLandroid/app/IWallpaperManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V +HPLandroid/app/IWallpaperManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManagerCallback; +HPLandroid/app/IWallpaperManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/InstantAppResolverService$1;->getInstantAppResolveInfoList([ILjava/lang/String;ILandroid/os/IRemoteCallback;)V +HPLandroid/app/InstantAppResolverService$InstantAppResolutionCallback;->(ILandroid/os/IRemoteCallback;)V +HPLandroid/app/InstantAppResolverService$InstantAppResolutionCallback;->onInstantAppResolveInfo(Ljava/util/List;)V +HPLandroid/app/InstantAppResolverService$ServiceHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/app/InstantAppResolverService;->-get0()Z +HPLandroid/app/InstantAppResolverService;->_onGetInstantAppResolveInfo([ILjava/lang/String;Landroid/app/InstantAppResolverService$InstantAppResolutionCallback;)V +HPLandroid/app/Instrumentation;->callActivityOnDestroy(Landroid/app/Activity;)V +HPLandroid/app/Instrumentation;->callActivityOnRestart(Landroid/app/Activity;)V +HPLandroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/Instrumentation$ActivityResult; +HPLandroid/app/Instrumentation;->getUiAutomation(I)Landroid/app/UiAutomation; +HPLandroid/app/IntentService;->setIntentRedelivery(Z)V +HPLandroid/app/JobSchedulerImpl;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HPLandroid/app/JobSchedulerImpl;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HPLandroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;->binderDied()V +HPLandroid/app/LoadedApk$ServiceDispatcher;->death(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/app/LoadedApk$ServiceDispatcher;->doDeath(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/app/LoadedApk;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)V +HPLandroid/app/LoadedApk;->makePaths(Landroid/app/ActivityThread;Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V +HPLandroid/app/LoadedApk;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V +HPLandroid/app/LoaderManagerImpl$LoaderInfo;->cancel()Z +HPLandroid/app/LoaderManagerImpl;->doDestroy()V +HPLandroid/app/LoaderManagerImpl;->doReportNextStart()V +HPLandroid/app/Notification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Notification; +HPLandroid/app/Notification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/Notification$Action$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Notification$Action; +HPLandroid/app/Notification$Action$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/Notification$Action$1;->newArray(I)[Landroid/app/Notification$Action; +HPLandroid/app/Notification$Action$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/app/Notification$Action;->-get1(Landroid/app/Notification$Action;)[Landroid/app/RemoteInput; +HPLandroid/app/Notification$Action;->(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V +HPLandroid/app/Notification$Action;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;Z)V +HPLandroid/app/Notification$Action;->(Landroid/os/Parcel;)V +HPLandroid/app/Notification$Action;->(Landroid/os/Parcel;Landroid/app/Notification$Action;)V +HPLandroid/app/Notification$Action;->clone()Landroid/app/Notification$Action; +HPLandroid/app/Notification$Action;->getAllowGeneratedReplies()Z +HPLandroid/app/Notification$Action;->getIcon()Landroid/graphics/drawable/Icon; +HPLandroid/app/Notification$Action;->getRemoteInputs()[Landroid/app/RemoteInput; +HPLandroid/app/Notification$Action;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/Notification$Builder;->(Landroid/content/Context;)V +HPLandroid/app/Notification$Builder;->addAction(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(I)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(ILandroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->createSummaryText()Ljava/lang/CharSequence; +HPLandroid/app/Notification$Builder;->extend(Landroid/app/Notification$Extender;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$Builder;->findReplyAction()Landroid/app/Notification$Action; +HPLandroid/app/Notification$Builder;->generateActionButton(Landroid/app/Notification$Action;ZZZ)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->getActionLayoutResource()I +HPLandroid/app/Notification$Builder;->getBigBaseLayoutResource()I +HPLandroid/app/Notification$Builder;->getExtras()Landroid/os/Bundle; +HPLandroid/app/Notification$Builder;->hasValidRemoteInput(Landroid/app/Notification$Action;)Z +HPLandroid/app/Notification$Builder;->makeAmbientNotification()Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->makeLowPriorityContentView(Z)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->makeNotificationHeader(Z)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->makePublicContentView()Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->makePublicView(Z)Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;Z)Landroid/app/Notification; +HPLandroid/app/Notification$Builder;->processLargeLegacyIcon(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;)V +HPLandroid/app/Notification$Builder;->processLegacyText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/app/Notification$Builder;->recoverBuilder(Landroid/content/Context;Landroid/app/Notification;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$Builder;->resetStandardTemplateWithActions(Landroid/widget/RemoteViews;)V +HPLandroid/app/Notification$Builder;->resolveAmbientColor()I +HPLandroid/app/Notification$Builder;->setBackgroundColorHint(I)V +HPLandroid/app/Notification$Builder;->setChannel(Ljava/lang/String;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$Builder;->textColorsNeedInversion()Z +HPLandroid/app/Notification$BuilderRemoteViews;->(Landroid/os/Parcel;)V +HPLandroid/app/Notification$BuilderRemoteViews;->clone()Landroid/app/Notification$BuilderRemoteViews; +HPLandroid/app/Notification$BuilderRemoteViews;->clone()Landroid/widget/RemoteViews; +HPLandroid/app/Notification$Extender;->extend(Landroid/app/Notification$Builder;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$StandardTemplateParams;->ambient(Z)Landroid/app/Notification$StandardTemplateParams; +HPLandroid/app/Notification$StandardTemplateParams;->hasProgress(Z)Landroid/app/Notification$StandardTemplateParams; +HPLandroid/app/Notification$TvExtender;->()V +HPLandroid/app/Notification$TvExtender;->extend(Landroid/app/Notification$Builder;)Landroid/app/Notification$Builder; +HPLandroid/app/Notification$TvExtender;->setChannelId(Ljava/lang/String;)Landroid/app/Notification$TvExtender; +HPLandroid/app/Notification;->-get0(Landroid/app/Notification;)J +HPLandroid/app/Notification;->clone()Landroid/app/Notification; +HPLandroid/app/Notification;->cloneInto(Landroid/app/Notification;Z)V +HPLandroid/app/Notification;->getBadgeIconType()I +HPLandroid/app/Notification;->getChannelId()Ljava/lang/String; +HPLandroid/app/Notification;->getShortcutId()Ljava/lang/String; +HPLandroid/app/Notification;->getTimeoutAfter()J +HPLandroid/app/Notification;->hasCompletedProgress()Z +HPLandroid/app/Notification;->hasMediaSession()Z +HPLandroid/app/Notification;->isGroupChild()Z +HPLandroid/app/Notification;->isGroupSummary()Z +HPLandroid/app/Notification;->isMediaNotification()Z +HPLandroid/app/Notification;->lightenPayload()V +HPLandroid/app/Notification;->showsChronometer()Z +HPLandroid/app/Notification;->toString()Ljava/lang/String; +HPLandroid/app/Notification;->visibilityToString(I)Ljava/lang/String; +HPLandroid/app/NotificationChannel;->canBypassDnd()Z +HPLandroid/app/NotificationChannel;->canShowBadge()Z +HPLandroid/app/NotificationChannel;->getAudioAttributes()Landroid/media/AudioAttributes; +HPLandroid/app/NotificationChannel;->getDescription()Ljava/lang/String; +HPLandroid/app/NotificationChannel;->getGroup()Ljava/lang/String; +HPLandroid/app/NotificationChannel;->getImportance()I +HPLandroid/app/NotificationChannel;->getLightColor()I +HPLandroid/app/NotificationChannel;->getLockscreenVisibility()I +HPLandroid/app/NotificationChannel;->getName()Ljava/lang/CharSequence; +HPLandroid/app/NotificationChannel;->getSound()Landroid/net/Uri; +HPLandroid/app/NotificationChannel;->getUserLockedFields()I +HPLandroid/app/NotificationChannel;->getVibrationPattern()[J +HPLandroid/app/NotificationChannel;->isBlockableSystem()Z +HPLandroid/app/NotificationChannel;->isDeleted()Z +HPLandroid/app/NotificationChannel;->lockFields(I)V +HPLandroid/app/NotificationChannel;->populateFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +HPLandroid/app/NotificationChannel;->safeAudioAttributes(Lorg/xmlpull/v1/XmlPullParser;)Landroid/media/AudioAttributes; +HPLandroid/app/NotificationChannel;->safeBool(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z +HPLandroid/app/NotificationChannel;->safeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +HPLandroid/app/NotificationChannel;->safeLongArray(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[J)[J +HPLandroid/app/NotificationChannel;->safeUri(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/net/Uri; +HPLandroid/app/NotificationChannel;->setBlockableSystem(Z)V +HPLandroid/app/NotificationChannel;->setBypassDnd(Z)V +HPLandroid/app/NotificationChannel;->setDeleted(Z)V +HPLandroid/app/NotificationChannel;->setDescription(Ljava/lang/String;)V +HPLandroid/app/NotificationChannel;->setLightColor(I)V +HPLandroid/app/NotificationChannel;->setLockscreenVisibility(I)V +HPLandroid/app/NotificationChannel;->setName(Ljava/lang/CharSequence;)V +HPLandroid/app/NotificationChannel;->setVibrationPattern([J)V +HPLandroid/app/NotificationChannel;->shouldShowLights()Z +HPLandroid/app/NotificationChannel;->shouldVibrate()Z +HPLandroid/app/NotificationChannel;->tryParseInt(Ljava/lang/String;I)I +HPLandroid/app/NotificationChannel;->unlockFields(I)V +HPLandroid/app/NotificationChannel;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/app/NotificationChannelGroup;->equals(Ljava/lang/Object;)Z +HPLandroid/app/NotificationChannelGroup;->getName()Ljava/lang/CharSequence; +HPLandroid/app/NotificationChannelGroup;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/app/NotificationManager$Policy$1;->()V +HPLandroid/app/NotificationManager$Policy;->(IIII)V +HPLandroid/app/NotificationManager$Policy;->equals(Ljava/lang/Object;)Z +HPLandroid/app/NotificationManager;->fixLegacySmallIcon(Landroid/app/Notification;Ljava/lang/String;)V +HPLandroid/app/NotificationManager;->getAutomaticZenRules()Ljava/util/Map; +HPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V +HPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V +HPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V +HPLandroid/app/NotificationManager;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V +HPLandroid/app/NotificationManager;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V +HPLandroid/app/PackageInstallObserver$1;->(Landroid/app/PackageInstallObserver;)V +HPLandroid/app/PackageInstallObserver$1;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/app/PackageInstallObserver;->()V +HPLandroid/app/PackageInstallObserver;->getBinder()Landroid/content/pm/IPackageInstallObserver2; +HPLandroid/app/PendingIntent$FinishedDispatcher;->(Landroid/app/PendingIntent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V +HPLandroid/app/PendingIntent$FinishedDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HPLandroid/app/PendingIntent$FinishedDispatcher;->run()V +HPLandroid/app/PendingIntent;->describeContents()I +HPLandroid/app/PendingIntent;->getActivityAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; +HPLandroid/app/PendingIntent;->getCreatorPackage()Ljava/lang/String; +HPLandroid/app/PendingIntent;->getCreatorUid()I +HPLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent; +HPLandroid/app/PendingIntent;->getTag(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/app/PendingIntent;->getTarget()Landroid/content/IIntentSender; +HPLandroid/app/PendingIntent;->getTargetPackage()Ljava/lang/String; +HPLandroid/app/PendingIntent;->readPendingIntentOrNullFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent; +HPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;)V +HPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V +HPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V +HPLandroid/app/PendingIntent;->toString()Ljava/lang/String; +HPLandroid/app/PictureInPictureParams$1;->()V +HPLandroid/app/PictureInPictureParams$Builder;->()V +HPLandroid/app/PictureInPictureParams$Builder;->build()Landroid/app/PictureInPictureParams; +HPLandroid/app/PictureInPictureParams;->(Landroid/util/Rational;Ljava/util/List;Landroid/graphics/Rect;)V +HPLandroid/app/RemoteInput$1;->()V +HPLandroid/app/ResourcesManager;->appendLibAssetForMainAssetPath(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/app/ResourcesManager;->applyNewResourceDirsLocked(Ljava/lang/String;[Ljava/lang/String;)V +HPLandroid/app/ResourcesManager;->findKeyForResourceImplLocked(Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey; +HPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; +HPLandroid/app/ResourcesManager;->redirectResourcesToNewImplLocked(Landroid/util/ArrayMap;)V +HPLandroid/app/ResultInfo;->(Ljava/lang/String;IILandroid/content/Intent;)V +HPLandroid/app/ResultInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/SearchableInfo$1;->()V +HPLandroid/app/SearchableInfo;->(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/content/ComponentName;)V +HPLandroid/app/SearchableInfo;->createActivityContext(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/content/Context; +HPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Landroid/content/pm/ActivityInfo;I)Landroid/app/SearchableInfo; +HPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/ComponentName;)Landroid/app/SearchableInfo; +HPLandroid/app/SearchableInfo;->getSearchActivity()Landroid/content/ComponentName; +HPLandroid/app/SearchableInfo;->shouldIncludeInGlobalSearch()Z +HPLandroid/app/Service;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/app/Service;->onTrimMemory(I)V +HPLandroid/app/Service;->stopSelfResult(I)Z +HPLandroid/app/ServiceStartArgs;->(ZIILandroid/content/Intent;)V +HPLandroid/app/ServiceStartArgs;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/SystemServiceRegistry$14;->createService()Landroid/location/CountryDetector; +HPLandroid/app/SystemServiceRegistry$14;->createService()Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$19;->createService(Landroid/app/ContextImpl;)Landroid/os/DropBoxManager; +HPLandroid/app/SystemServiceRegistry$19;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$23;->createService()Landroid/view/textservice/TextServicesManager; +HPLandroid/app/SystemServiceRegistry$23;->createService()Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Landroid/net/wifi/WifiScanner; +HPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Landroid/net/wifi/RttManager; +HPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Landroid/net/EthernetManager; +HPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$71;->createService()Landroid/service/persistentdata/PersistentDataBlockManager; +HPLandroid/app/SystemServiceRegistry$71;->createService()Ljava/lang/Object; +HPLandroid/app/SystemServiceRegistry$81;->createService(Landroid/app/ContextImpl;)Landroid/hardware/location/ContextHubManager; +HPLandroid/app/SystemServiceRegistry$81;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HPLandroid/app/TaskStackListener;->onActivityRequestedOrientationChanged(II)V +HPLandroid/app/TaskStackListener;->onTaskMovedToFront(I)V +HPLandroid/app/TaskStackListener;->onTaskRemovalStarted(I)V +HPLandroid/app/TaskStackListener;->onTaskRemoved(I)V +HPLandroid/app/UiAutomation$IAccessibilityServiceClientImpl$1;->(Landroid/app/UiAutomation;)V +HPLandroid/app/UiAutomation$IAccessibilityServiceClientImpl$1;->init(ILandroid/os/IBinder;)V +HPLandroid/app/UiAutomation$IAccessibilityServiceClientImpl$1;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/app/UiAutomation$IAccessibilityServiceClientImpl$1;->onServiceConnected()V +HPLandroid/app/UiAutomation$IAccessibilityServiceClientImpl;->(Landroid/app/UiAutomation;Landroid/os/Looper;)V +HPLandroid/app/UiAutomation$OnAccessibilityEventListener;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/app/UiAutomation;->-get0(Landroid/app/UiAutomation;)Ljava/util/ArrayList; +HPLandroid/app/UiAutomation;->-get1(Landroid/app/UiAutomation;)Ljava/lang/Object; +HPLandroid/app/UiAutomation;->-get2(Landroid/app/UiAutomation;)Landroid/app/UiAutomation$OnAccessibilityEventListener; +HPLandroid/app/UiAutomation;->-get3(Landroid/app/UiAutomation;)Z +HPLandroid/app/UiAutomation;->-set0(Landroid/app/UiAutomation;I)I +HPLandroid/app/UiAutomation;->-set1(Landroid/app/UiAutomation;J)J +HPLandroid/app/UiAutomation;->(Landroid/os/Looper;Landroid/app/IUiAutomationConnection;)V +HPLandroid/app/UiAutomation;->connect(I)V +HPLandroid/app/UiAutomation;->executeAndWaitForEvent(Ljava/lang/Runnable;Landroid/app/UiAutomation$AccessibilityEventFilter;J)Landroid/view/accessibility/AccessibilityEvent; +HPLandroid/app/UiAutomation;->executeShellCommand(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/app/UiAutomation;->getFlags()I +HPLandroid/app/UiAutomation;->getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/app/UiAutomation;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo; +HPLandroid/app/UiAutomation;->getWindows()Ljava/util/List; +HPLandroid/app/UiAutomation;->injectInputEvent(Landroid/view/InputEvent;Z)Z +HPLandroid/app/UiAutomation;->isConnectedLocked()Z +HPLandroid/app/UiAutomation;->isDestroyed()Z +HPLandroid/app/UiAutomation;->setOnAccessibilityEventListener(Landroid/app/UiAutomation$OnAccessibilityEventListener;)V +HPLandroid/app/UiAutomation;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +HPLandroid/app/UiAutomation;->throwIfConnectedLocked()V +HPLandroid/app/UiAutomation;->throwIfNotConnectedLocked()V +HPLandroid/app/UiAutomation;->waitForIdle(JJ)V +HPLandroid/app/UserSwitchObserver;->onLockedBootComplete(I)V +HPLandroid/app/WaitResult$1;->()V +HPLandroid/app/WaitResult;->()V +HPLandroid/app/WallpaperInfo;->(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V +HPLandroid/app/WallpaperInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/WallpaperManager$Globals;->lambda$-android_app_WallpaperManager$Globals_13333(Landroid/util/Pair;Landroid/app/WallpaperColors;II)V +HPLandroid/app/WallpaperManager$Globals;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V +HPLandroid/app/WallpaperManager;->-get1()Landroid/app/WallpaperManager$Globals; +HPLandroid/app/WallpaperManager;->getDefaultWallpaperComponent(Landroid/content/Context;)Landroid/content/ComponentName; +HPLandroid/app/WallpaperManager;->isSetWallpaperAllowed()Z +HPLandroid/app/admin/DeviceAdminInfo$1;->()V +HPLandroid/app/admin/DeviceAdminInfo$PolicyInfo;->(ILjava/lang/String;II)V +HPLandroid/app/admin/DeviceAdminInfo$PolicyInfo;->(ILjava/lang/String;IIII)V +HPLandroid/app/admin/DeviceAdminInfo;->(Landroid/content/Context;Landroid/content/pm/ActivityInfo;)V +HPLandroid/app/admin/DeviceAdminInfo;->getActivityInfo()Landroid/content/pm/ActivityInfo; +HPLandroid/app/admin/DeviceAdminInfo;->getComponent()Landroid/content/ComponentName; +HPLandroid/app/admin/DeviceAdminInfo;->getPackageName()Ljava/lang/String; +HPLandroid/app/admin/DeviceAdminInfo;->readPoliciesFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +HPLandroid/app/admin/DeviceAdminInfo;->usesPolicy(I)Z +HPLandroid/app/admin/DeviceAdminInfo;->writePoliciesToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/app/admin/DevicePolicyManager;->getDeviceOwner()Ljava/lang/String; +HPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentOnCallingUser()Landroid/content/ComponentName; +HPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +HPLandroid/app/admin/DevicePolicyManager;->getPasswordQuality(Landroid/content/ComponentName;I)I +HPLandroid/app/admin/DevicePolicyManager;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z +HPLandroid/app/admin/DevicePolicyManager;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z +HPLandroid/app/admin/DevicePolicyManager;->packageHasActiveAdmins(Ljava/lang/String;I)Z +HPLandroid/app/admin/DevicePolicyManager;->reportPasswordChanged(I)V +HPLandroid/app/admin/DevicePolicyManager;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V +HPLandroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;->onCrossProfileWidgetProvidersChanged(ILjava/util/List;)V +HPLandroid/app/admin/DevicePolicyManagerInternal;->()V +HPLandroid/app/admin/DevicePolicyManagerInternal;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V +HPLandroid/app/admin/DevicePolicyManagerInternal;->createShowAdminSupportIntent(IZ)Landroid/content/Intent; +HPLandroid/app/admin/DevicePolicyManagerInternal;->createUserRestrictionSupportIntent(ILjava/lang/String;)Landroid/content/Intent; +HPLandroid/app/admin/DevicePolicyManagerInternal;->getCrossProfileWidgetProviders(I)Ljava/util/List; +HPLandroid/app/admin/DevicePolicyManagerInternal;->isActiveAdminWithPolicy(II)Z +HPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +HPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z +HPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z +HPLandroid/app/admin/IDevicePolicyManager$Stub;->()V +HPLandroid/app/admin/IDevicePolicyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/admin/PasswordMetrics$1;->()V +HPLandroid/app/admin/PasswordMetrics;->()V +HPLandroid/app/admin/PasswordMetrics;->(II)V +HPLandroid/app/admin/PasswordMetrics;->(IIIIIIII)V +HPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/assist/AssistStructure; +HPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/assist/AssistStructure$AutofillOverlay;->()V +HPLandroid/app/assist/AssistStructure$ParcelTransferReader;->(Landroid/app/assist/AssistStructure;Landroid/os/IBinder;)V +HPLandroid/app/assist/AssistStructure$ParcelTransferReader;->fetchData()V +HPLandroid/app/assist/AssistStructure$ParcelTransferReader;->go()V +HPLandroid/app/assist/AssistStructure$ParcelTransferReader;->readParcel(II)Landroid/os/Parcel; +HPLandroid/app/assist/AssistStructure$ViewNode;->(Landroid/app/assist/AssistStructure$ParcelTransferReader;I)V +HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillHints()[Ljava/lang/String; +HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillId()Landroid/view/autofill/AutofillId; +HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillType()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getChildAt(I)Landroid/app/assist/AssistStructure$ViewNode; +HPLandroid/app/assist/AssistStructure$ViewNode;->getHeight()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getHint()Ljava/lang/String; +HPLandroid/app/assist/AssistStructure$ViewNode;->getHtmlInfo()Landroid/view/ViewStructure$HtmlInfo; +HPLandroid/app/assist/AssistStructure$ViewNode;->getIdEntry()Ljava/lang/String; +HPLandroid/app/assist/AssistStructure$ViewNode;->getInputType()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getLeft()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getScrollX()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getScrollY()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getTop()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getVisibility()I +HPLandroid/app/assist/AssistStructure$ViewNode;->getWidth()I +HPLandroid/app/assist/AssistStructure$ViewNode;->setAutofillOverlay(Landroid/app/assist/AssistStructure$AutofillOverlay;)V +HPLandroid/app/assist/AssistStructure$ViewNodeText;->(Landroid/os/Parcel;Z)V +HPLandroid/app/assist/AssistStructure$WindowNode;->(Landroid/app/assist/AssistStructure$ParcelTransferReader;)V +HPLandroid/app/assist/AssistStructure$WindowNode;->getHeight()I +HPLandroid/app/assist/AssistStructure$WindowNode;->getRootViewNode()Landroid/app/assist/AssistStructure$ViewNode; +HPLandroid/app/assist/AssistStructure$WindowNode;->getWidth()I +HPLandroid/app/assist/AssistStructure;->-set0(Landroid/app/assist/AssistStructure;J)J +HPLandroid/app/assist/AssistStructure;->-set1(Landroid/app/assist/AssistStructure;J)J +HPLandroid/app/assist/AssistStructure;->-set2(Landroid/app/assist/AssistStructure;I)I +HPLandroid/app/assist/AssistStructure;->(Landroid/os/Parcel;)V +HPLandroid/app/assist/AssistStructure;->ensureData()V +HPLandroid/app/assist/AssistStructure;->getActivityComponent()Landroid/content/ComponentName; +HPLandroid/app/assist/AssistStructure;->getFlags()I +HPLandroid/app/assist/AssistStructure;->getWindowNodeAt(I)Landroid/app/assist/AssistStructure$WindowNode; +HPLandroid/app/assist/AssistStructure;->getWindowNodeCount()I +HPLandroid/app/assist/AssistStructure;->sanitizeForParceling(Z)V +HPLandroid/app/assist/AssistStructure;->setHomeActivity(Z)V +HPLandroid/app/backup/BackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V +HPLandroid/app/backup/BackupHelper;->restoreEntity(Landroid/app/backup/BackupDataInputStream;)V +HPLandroid/app/backup/BackupHelper;->writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V +HPLandroid/app/backup/BackupManager;->dataChanged(Ljava/lang/String;)V +HPLandroid/app/backup/BackupManager;->isBackupEnabled()Z +HPLandroid/app/backup/BackupTransport$TransportImpl;->getCurrentRestoreSet()J +HPLandroid/app/backup/IBackupManager$Stub$Proxy;->isBackupEnabled()Z +HPLandroid/app/backup/IBackupManager$Stub;->()V +HPLandroid/app/backup/IBackupManager$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/app/backup/IBackupManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;->onSuccess(Ljava/lang/String;)V +HPLandroid/app/backup/ISelectBackupTransportCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/ISelectBackupTransportCallback; +HPLandroid/app/backup/ISelectBackupTransportCallback;->onFailure(I)V +HPLandroid/app/backup/ISelectBackupTransportCallback;->onSuccess(Ljava/lang/String;)V +HPLandroid/app/backup/SelectBackupTransportCallback;->()V +HPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStopMessage(IZ)V +HPLandroid/app/job/IJobCallback$Stub$Proxy;->completeWork(II)Z +HPLandroid/app/job/IJobCallback$Stub$Proxy;->dequeueWork(I)Landroid/app/job/JobWorkItem; +HPLandroid/app/job/IJobCallback$Stub;->()V +HPLandroid/app/job/IJobCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HPLandroid/app/job/IJobScheduler$Stub;->()V +HPLandroid/app/job/IJobScheduler$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/job/IJobService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/job/IJobService$Stub$Proxy;->startJob(Landroid/app/job/JobParameters;)V +HPLandroid/app/job/IJobService$Stub$Proxy;->stopJob(Landroid/app/job/JobParameters;)V +HPLandroid/app/job/IJobService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobService; +HPLandroid/app/job/JobInfo$Builder;->setFlags(I)Landroid/app/job/JobInfo$Builder; +HPLandroid/app/job/JobInfo$Builder;->setPriority(I)Landroid/app/job/JobInfo$Builder; +HPLandroid/app/job/JobInfo$TriggerContentUri;->equals(Ljava/lang/Object;)Z +HPLandroid/app/job/JobInfo$TriggerContentUri;->getFlags()I +HPLandroid/app/job/JobInfo$TriggerContentUri;->getUri()Landroid/net/Uri; +HPLandroid/app/job/JobInfo$TriggerContentUri;->hashCode()I +HPLandroid/app/job/JobInfo;->equals(Ljava/lang/Object;)Z +HPLandroid/app/job/JobInfo;->getBackoffPolicy()I +HPLandroid/app/job/JobInfo;->getClipData()Landroid/content/ClipData; +HPLandroid/app/job/JobInfo;->getClipGrantFlags()I +HPLandroid/app/job/JobInfo;->getConstraintFlags()I +HPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle; +HPLandroid/app/job/JobInfo;->getFlags()I +HPLandroid/app/job/JobInfo;->getInitialBackoffMillis()J +HPLandroid/app/job/JobInfo;->getMaxExecutionDelayMillis()J +HPLandroid/app/job/JobInfo;->getMinBackoffMillis()J +HPLandroid/app/job/JobInfo;->getMinLatencyMillis()J +HPLandroid/app/job/JobInfo;->getNetworkType()I +HPLandroid/app/job/JobInfo;->getPriority()I +HPLandroid/app/job/JobInfo;->getTransientExtras()Landroid/os/Bundle; +HPLandroid/app/job/JobInfo;->getTriggerContentMaxDelay()J +HPLandroid/app/job/JobInfo;->getTriggerContentUpdateDelay()J +HPLandroid/app/job/JobInfo;->getTriggerContentUris()[Landroid/app/job/JobInfo$TriggerContentUri; +HPLandroid/app/job/JobInfo;->hasEarlyConstraint()Z +HPLandroid/app/job/JobInfo;->hasLateConstraint()Z +HPLandroid/app/job/JobInfo;->isPersisted()Z +HPLandroid/app/job/JobInfo;->kindofEqualsBundle(Landroid/os/BaseBundle;Landroid/os/BaseBundle;)Z +HPLandroid/app/job/JobParameters;->(Landroid/os/IBinder;ILandroid/os/PersistableBundle;Landroid/os/Bundle;Landroid/content/ClipData;IZ[Landroid/net/Uri;[Ljava/lang/String;)V +HPLandroid/app/job/JobParameters;->completeWork(Landroid/app/job/JobWorkItem;)V +HPLandroid/app/job/JobParameters;->dequeueWork()Landroid/app/job/JobWorkItem; +HPLandroid/app/job/JobParameters;->getReasonName(I)Ljava/lang/String; +HPLandroid/app/job/JobParameters;->getStopReason()I +HPLandroid/app/job/JobParameters;->getTriggeredContentAuthorities()[Ljava/lang/String; +HPLandroid/app/job/JobParameters;->getTriggeredContentUris()[Landroid/net/Uri; +HPLandroid/app/job/JobParameters;->isOverrideDeadlineExpired()Z +HPLandroid/app/job/JobParameters;->setStopReason(I)V +HPLandroid/app/job/JobParameters;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/job/JobService$1;->onStopJob(Landroid/app/job/JobParameters;)Z +HPLandroid/app/job/JobServiceEngine$JobHandler;->ackStopMessage(Landroid/app/job/JobParameters;Z)V +HPLandroid/app/job/JobServiceEngine$JobInterface;->stopJob(Landroid/app/job/JobParameters;)V +HPLandroid/app/job/JobWorkItem$1;->()V +HPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobWorkItem; +HPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/job/JobWorkItem;->(Landroid/content/Intent;)V +HPLandroid/app/job/JobWorkItem;->(Landroid/os/Parcel;)V +HPLandroid/app/job/JobWorkItem;->bumpDeliveryCount()V +HPLandroid/app/job/JobWorkItem;->getGrants()Ljava/lang/Object; +HPLandroid/app/job/JobWorkItem;->getIntent()Landroid/content/Intent; +HPLandroid/app/job/JobWorkItem;->getWorkId()I +HPLandroid/app/job/JobWorkItem;->setWorkId(I)V +HPLandroid/app/job/JobWorkItem;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/timezone/DistroFormatVersion$1;->()V +HPLandroid/app/timezone/DistroFormatVersion;->(II)V +HPLandroid/app/timezone/IRulesManager$Stub;->()V +HPLandroid/app/timezone/IRulesManager;->getRulesState()Landroid/app/timezone/RulesState; +HPLandroid/app/timezone/IRulesManager;->requestInstall(Landroid/os/ParcelFileDescriptor;[BLandroid/app/timezone/ICallback;)I +HPLandroid/app/timezone/IRulesManager;->requestNothing([BZ)V +HPLandroid/app/timezone/IRulesManager;->requestUninstall([BLandroid/app/timezone/ICallback;)I +HPLandroid/app/timezone/Utils;->validateVersion(Ljava/lang/String;I)I +HPLandroid/app/trust/IStrongAuthTracker$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/trust/IStrongAuthTracker$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/app/trust/IStrongAuthTracker$Stub$Proxy;->onStrongAuthRequiredChanged(II)V +HPLandroid/app/trust/IStrongAuthTracker$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/IStrongAuthTracker; +HPLandroid/app/trust/IStrongAuthTracker$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/trust/ITrustListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustChanged(ZII)V +HPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustManagedChanged(ZI)V +HPLandroid/app/trust/ITrustListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/ITrustListener; +HPLandroid/app/trust/ITrustManager$Stub$Proxy;->clearAllFingerprints()V +HPLandroid/app/trust/ITrustManager$Stub$Proxy;->isTrustUsuallyManaged(I)Z +HPLandroid/app/trust/ITrustManager$Stub;->()V +HPLandroid/app/trust/ITrustManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/trust/TrustManager;->clearAllFingerprints()V +HPLandroid/app/trust/TrustManager;->isTrustUsuallyManaged(I)Z +HPLandroid/app/trust/TrustManager;->reportEnabledTrustAgentsChanged(I)V +HPLandroid/app/usage/CacheQuotaHint$1;->()V +HPLandroid/app/usage/CacheQuotaHint$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/CacheQuotaHint; +HPLandroid/app/usage/CacheQuotaHint$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/usage/CacheQuotaHint$Builder;->-get0(Landroid/app/usage/CacheQuotaHint$Builder;)J +HPLandroid/app/usage/CacheQuotaHint$Builder;->-get1(Landroid/app/usage/CacheQuotaHint$Builder;)I +HPLandroid/app/usage/CacheQuotaHint$Builder;->-get2(Landroid/app/usage/CacheQuotaHint$Builder;)Landroid/app/usage/UsageStats; +HPLandroid/app/usage/CacheQuotaHint$Builder;->-get3(Landroid/app/usage/CacheQuotaHint$Builder;)Ljava/lang/String; +HPLandroid/app/usage/CacheQuotaHint$Builder;->()V +HPLandroid/app/usage/CacheQuotaHint$Builder;->build()Landroid/app/usage/CacheQuotaHint; +HPLandroid/app/usage/CacheQuotaHint$Builder;->setQuota(J)Landroid/app/usage/CacheQuotaHint$Builder; +HPLandroid/app/usage/CacheQuotaHint$Builder;->setUid(I)Landroid/app/usage/CacheQuotaHint$Builder; +HPLandroid/app/usage/CacheQuotaHint$Builder;->setUsageStats(Landroid/app/usage/UsageStats;)Landroid/app/usage/CacheQuotaHint$Builder; +HPLandroid/app/usage/CacheQuotaHint$Builder;->setVolumeUuid(Ljava/lang/String;)Landroid/app/usage/CacheQuotaHint$Builder; +HPLandroid/app/usage/CacheQuotaHint;->(Landroid/app/usage/CacheQuotaHint$Builder;)V +HPLandroid/app/usage/CacheQuotaHint;->getQuota()J +HPLandroid/app/usage/CacheQuotaHint;->getUid()I +HPLandroid/app/usage/CacheQuotaHint;->getVolumeUuid()Ljava/lang/String; +HPLandroid/app/usage/CacheQuotaHint;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/usage/ConfigurationStats$1;->()V +HPLandroid/app/usage/ConfigurationStats;->()V +HPLandroid/app/usage/ICacheQuotaService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/app/usage/ICacheQuotaService$Stub$Proxy;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V +HPLandroid/app/usage/ICacheQuotaService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/ICacheQuotaService; +HPLandroid/app/usage/ICacheQuotaService;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V +HPLandroid/app/usage/IStorageStatsManager$Stub;->()V +HPLandroid/app/usage/IStorageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->isAppInactive(Ljava/lang/String;I)Z +HPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents; +HPLandroid/app/usage/IUsageStatsManager$Stub;->()V +HPLandroid/app/usage/IUsageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/app/usage/StorageStats;->()V +HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/lang/String;)J +HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/util/UUID;)J +HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/lang/String;)Z +HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/util/UUID;)Z +HPLandroid/app/usage/TimeSparseArray;->()V +HPLandroid/app/usage/TimeSparseArray;->closestIndexOnOrAfter(J)I +HPLandroid/app/usage/TimeSparseArray;->closestIndexOnOrBefore(J)I +HPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageEvents; +HPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/usage/UsageEvents$Event;->()V +HPLandroid/app/usage/UsageEvents$Event;->getClassName()Ljava/lang/String; +HPLandroid/app/usage/UsageEvents$Event;->getConfiguration()Landroid/content/res/Configuration; +HPLandroid/app/usage/UsageEvents$Event;->getEventType()I +HPLandroid/app/usage/UsageEvents$Event;->getObfuscatedIfInstantApp()Landroid/app/usage/UsageEvents$Event; +HPLandroid/app/usage/UsageEvents$Event;->getPackageName()Ljava/lang/String; +HPLandroid/app/usage/UsageEvents$Event;->getTimeStamp()J +HPLandroid/app/usage/UsageEvents;->(Landroid/os/Parcel;)V +HPLandroid/app/usage/UsageEvents;->(Ljava/util/List;[Ljava/lang/String;)V +HPLandroid/app/usage/UsageEvents;->findStringIndex(Ljava/lang/String;)I +HPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z +HPLandroid/app/usage/UsageEvents;->hasNextEvent()Z +HPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V +HPLandroid/app/usage/UsageEvents;->writeEventToParcel(Landroid/app/usage/UsageEvents$Event;Landroid/os/Parcel;I)V +HPLandroid/app/usage/UsageEvents;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/usage/UsageStats$1;->()V +HPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats; +HPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/app/usage/UsageStats;->()V +HPLandroid/app/usage/UsageStats;->(Landroid/app/usage/UsageStats;)V +HPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String; +HPLandroid/app/usage/UsageStats;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/app/usage/UsageStatsManager;->isAppInactive(Ljava/lang/String;)Z +HPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/UsageEvents; +HPLandroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->()V +HPLandroid/app/usage/UsageStatsManagerInternal;->()V +HPLandroid/app/usage/UsageStatsManagerInternal;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V +HPLandroid/app/usage/UsageStatsManagerInternal;->applyRestoredPayload(ILjava/lang/String;[B)V +HPLandroid/app/usage/UsageStatsManagerInternal;->getBackupPayload(ILjava/lang/String;)[B +HPLandroid/app/usage/UsageStatsManagerInternal;->getIdleUidsForUser(I)[I +HPLandroid/app/usage/UsageStatsManagerInternal;->isAppIdle(Ljava/lang/String;II)Z +HPLandroid/app/usage/UsageStatsManagerInternal;->isAppIdleParoleOn()Z +HPLandroid/app/usage/UsageStatsManagerInternal;->prepareShutdown()V +HPLandroid/app/usage/UsageStatsManagerInternal;->queryUsageStatsForUser(IIJJZ)Ljava/util/List; +HPLandroid/app/usage/UsageStatsManagerInternal;->removeAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V +HPLandroid/app/usage/UsageStatsManagerInternal;->reportConfigurationChange(Landroid/content/res/Configuration;I)V +HPLandroid/app/usage/UsageStatsManagerInternal;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/app/usage/UsageStatsManagerInternal;->reportEvent(Landroid/content/ComponentName;II)V +HPLandroid/app/usage/UsageStatsManagerInternal;->reportEvent(Ljava/lang/String;II)V +HPLandroid/app/usage/UsageStatsManagerInternal;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/appwidget/AppWidgetManager;->isBoundWidgetPackage(Ljava/lang/String;I)Z +HPLandroid/appwidget/AppWidgetProviderInfo;->()V +HPLandroid/bluetooth/BluetoothA2dp$1;->onBluetoothStateChange(Z)V +HPLandroid/bluetooth/BluetoothA2dp$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/BluetoothA2dp;->-get2(Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/IBluetoothA2dp; +HPLandroid/bluetooth/BluetoothA2dp;->-get3(Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HPLandroid/bluetooth/BluetoothA2dp;->-get4(Landroid/bluetooth/BluetoothA2dp;)Ljava/util/concurrent/locks/ReentrantReadWriteLock; +HPLandroid/bluetooth/BluetoothA2dp;->-set0(Landroid/bluetooth/BluetoothA2dp;Landroid/bluetooth/IBluetoothA2dp;)Landroid/bluetooth/IBluetoothA2dp; +HPLandroid/bluetooth/BluetoothA2dp;->close()V +HPLandroid/bluetooth/BluetoothA2dp;->finalize()V +HPLandroid/bluetooth/BluetoothA2dp;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/BluetoothA2dp;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HPLandroid/bluetooth/BluetoothA2dp;->isEnabled()Z +HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->()V +HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothActivityEnergyInfo; +HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->(JIJJJJ)V +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->(Landroid/os/Parcel;)V +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->getControllerEnergyUsed()J +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->getControllerIdleTimeMillis()J +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->getControllerRxTimeMillis()J +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->getControllerTxTimeMillis()J +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->getUidTraffic()[Landroid/bluetooth/UidTraffic; +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->isValid()Z +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->setUidTraffic([Landroid/bluetooth/UidTraffic;)V +HPLandroid/bluetooth/BluetoothActivityEnergyInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/bluetooth/BluetoothAdapter;->checkBluetoothAddress(Ljava/lang/String;)Z +HPLandroid/bluetooth/BluetoothAdapter;->closeProfileProxy(ILandroid/bluetooth/BluetoothProfile;)V +HPLandroid/bluetooth/BluetoothAdapter;->enableBLE()Z +HPLandroid/bluetooth/BluetoothAdapter;->getBluetoothLeScanner()Landroid/bluetooth/le/BluetoothLeScanner; +HPLandroid/bluetooth/BluetoothAdapter;->getLeAccess()Z +HPLandroid/bluetooth/BluetoothAdapter;->getLeState()I +HPLandroid/bluetooth/BluetoothAdapter;->getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice; +HPLandroid/bluetooth/BluetoothAdapter;->isBleScanAlwaysAvailable()Z +HPLandroid/bluetooth/BluetoothAdapter;->isLeEnabled()Z +HPLandroid/bluetooth/BluetoothAdapter;->isOffloadedFilteringSupported()Z +HPLandroid/bluetooth/BluetoothAdapter;->nameForState(I)Ljava/lang/String; +HPLandroid/bluetooth/BluetoothAdapter;->requestControllerActivityEnergyInfo(Landroid/os/ResultReceiver;)V +HPLandroid/bluetooth/BluetoothDevice$2;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothDevice; +HPLandroid/bluetooth/BluetoothDevice$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/BluetoothDevice;->(Ljava/lang/String;)V +HPLandroid/bluetooth/BluetoothDevice;->getAddress()Ljava/lang/String; +HPLandroid/bluetooth/BluetoothDevice;->getService()Landroid/bluetooth/IBluetooth; +HPLandroid/bluetooth/BluetoothDevice;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/bluetooth/BluetoothGattCallback;->()V +HPLandroid/bluetooth/BluetoothHeadset;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/BluetoothHeadset;->isEnabled()Z +HPLandroid/bluetooth/BluetoothHeadset;->phoneStateChanged(IIILjava/lang/String;I)V +HPLandroid/bluetooth/BluetoothInputDevice$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/BluetoothInputDevice;->-get3(Landroid/bluetooth/BluetoothInputDevice;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HPLandroid/bluetooth/BluetoothInputDevice;->-set0(Landroid/bluetooth/BluetoothInputDevice;Landroid/bluetooth/IBluetoothInputDevice;)Landroid/bluetooth/IBluetoothInputDevice; +HPLandroid/bluetooth/BluetoothInputDevice;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/BluetoothInputDevice;->isEnabled()Z +HPLandroid/bluetooth/BluetoothMap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/BluetoothMap;->-get3(Landroid/bluetooth/BluetoothMap;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HPLandroid/bluetooth/BluetoothMap;->-set0(Landroid/bluetooth/BluetoothMap;Landroid/bluetooth/IBluetoothMap;)Landroid/bluetooth/IBluetoothMap; +HPLandroid/bluetooth/BluetoothMap;->-wrap0(Ljava/lang/String;)V +HPLandroid/bluetooth/BluetoothMap;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/BluetoothMap;->isEnabled()Z +HPLandroid/bluetooth/BluetoothMap;->log(Ljava/lang/String;)V +HPLandroid/bluetooth/BluetoothPan$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/BluetoothPan;->-get3(Landroid/bluetooth/BluetoothPan;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HPLandroid/bluetooth/BluetoothPan;->-set0(Landroid/bluetooth/BluetoothPan;Landroid/bluetooth/IBluetoothPan;)Landroid/bluetooth/IBluetoothPan; +HPLandroid/bluetooth/BluetoothPbap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/BluetoothPbap;->-get3(Landroid/bluetooth/BluetoothPbap;)Landroid/bluetooth/BluetoothPbap$ServiceListener; +HPLandroid/bluetooth/BluetoothPbap;->-set0(Landroid/bluetooth/BluetoothPbap;Landroid/bluetooth/IBluetoothPbap;)Landroid/bluetooth/IBluetoothPbap; +HPLandroid/bluetooth/BluetoothPbap;->-wrap0(Ljava/lang/String;)V +HPLandroid/bluetooth/BluetoothPbap;->log(Ljava/lang/String;)V +HPLandroid/bluetooth/BluetoothUuid;->getServiceIdentifierFromParcelUuid(Landroid/os/ParcelUuid;)I +HPLandroid/bluetooth/BluetoothUuid;->parseUuidFrom([B)Landroid/os/ParcelUuid; +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->enable()Z +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->isOffloadedFilteringSupported()Z +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->onLeServiceUp()V +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->registerCallback(Landroid/bluetooth/IBluetoothCallback;)V +HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->requestActivityInfo(Landroid/os/ResultReceiver;)V +HPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HPLandroid/bluetooth/IBluetoothA2dp$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp; +HPLandroid/bluetooth/IBluetoothA2dp$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothCallback$Stub;->()V +HPLandroid/bluetooth/IBluetoothCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetoothCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->registerScanner(Landroid/bluetooth/le/IScannerCallback;Landroid/os/WorkSource;)V +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->startScan(ILandroid/bluetooth/le/ScanSettings;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->stopScan(I)V +HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->unregisterScanner(I)V +HPLandroid/bluetooth/IBluetoothGatt$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothGatt; +HPLandroid/bluetooth/IBluetoothGatt$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->phoneStateChanged(IIILjava/lang/String;I)V +HPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->()V +HPLandroid/bluetooth/IBluetoothInputDevice$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothInputDevice$Stub$Proxy;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/IBluetoothInputDevice$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothInputDevice; +HPLandroid/bluetooth/IBluetoothInputDevice$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt; +HPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->isBleScanAlwaysAvailable()Z +HPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +HPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I +HPLandroid/bluetooth/IBluetoothManager$Stub;->()V +HPLandroid/bluetooth/IBluetoothManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V +HPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManagerCallback; +HPLandroid/bluetooth/IBluetoothMap$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothMap$Stub$Proxy;->getConnectedDevices()Ljava/util/List; +HPLandroid/bluetooth/IBluetoothMap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothMap; +HPLandroid/bluetooth/IBluetoothMap$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/IBluetoothPan$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothPan$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPan; +HPLandroid/bluetooth/IBluetoothPbap$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothPbap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPbap; +HPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothProfileServiceConnection; +HPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->onBluetoothStateChange(Z)V +HPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothStateChangeCallback; +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper$1;->(Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;Landroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper$1;->run()V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->-get0(Landroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;)Landroid/bluetooth/le/ScanCallback; +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->(Landroid/bluetooth/le/BluetoothLeScanner;Landroid/bluetooth/IBluetoothGatt;Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/os/WorkSource;Landroid/bluetooth/le/ScanCallback;Ljava/util/List;)V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->onScanResult(Landroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->onScannerRegistered(II)V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->startRegistration()V +HPLandroid/bluetooth/le/BluetoothLeScanner$BleScanCallbackWrapper;->stopLeScan()V +HPLandroid/bluetooth/le/BluetoothLeScanner;->-get0(Landroid/bluetooth/le/BluetoothLeScanner;)Ljava/util/Map; +HPLandroid/bluetooth/le/BluetoothLeScanner;->(Landroid/bluetooth/IBluetoothManager;)V +HPLandroid/bluetooth/le/BluetoothLeScanner;->isHardwareResourcesAvailableForScan(Landroid/bluetooth/le/ScanSettings;)Z +HPLandroid/bluetooth/le/BluetoothLeScanner;->isSettingsAndFilterComboAllowed(Landroid/bluetooth/le/ScanSettings;Ljava/util/List;)Z +HPLandroid/bluetooth/le/BluetoothLeScanner;->isSettingsConfigAllowedForScan(Landroid/bluetooth/le/ScanSettings;)Z +HPLandroid/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 +HPLandroid/bluetooth/le/BluetoothLeScanner;->startScanFromSource(Ljava/util/List;Landroid/bluetooth/le/ScanSettings;Landroid/os/WorkSource;Landroid/bluetooth/le/ScanCallback;)V +HPLandroid/bluetooth/le/BluetoothLeScanner;->stopScan(Landroid/bluetooth/le/ScanCallback;)V +HPLandroid/bluetooth/le/BluetoothLeUtils;->checkAdapterStateOn(Landroid/bluetooth/BluetoothAdapter;)V +HPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScanResult(Landroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScannerRegistered(II)V +HPLandroid/bluetooth/le/IScannerCallback$Stub;->()V +HPLandroid/bluetooth/le/IScannerCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/bluetooth/le/IScannerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/le/IScannerCallback; +HPLandroid/bluetooth/le/IScannerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/bluetooth/le/IScannerCallback;->onBatchScanResults(Ljava/util/List;)V +HPLandroid/bluetooth/le/IScannerCallback;->onFoundOrLost(ZLandroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/IScannerCallback;->onScanManagerErrorCallback(I)V +HPLandroid/bluetooth/le/IScannerCallback;->onScanResult(Landroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/IScannerCallback;->onScannerRegistered(II)V +HPLandroid/bluetooth/le/ScanCallback;->()V +HPLandroid/bluetooth/le/ScanFilter$1;->()V +HPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanFilter; +HPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/le/ScanFilter$Builder;->()V +HPLandroid/bluetooth/le/ScanFilter$Builder;->build()Landroid/bluetooth/le/ScanFilter; +HPLandroid/bluetooth/le/ScanFilter$Builder;->setManufacturerData(I[B[B)Landroid/bluetooth/le/ScanFilter$Builder; +HPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/ScanFilter$Builder; +HPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder; +HPLandroid/bluetooth/le/ScanFilter;->(Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;[B[BI[B[B)V +HPLandroid/bluetooth/le/ScanFilter;->(Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;[B[BI[B[BLandroid/bluetooth/le/ScanFilter;)V +HPLandroid/bluetooth/le/ScanFilter;->getDeviceAddress()Ljava/lang/String; +HPLandroid/bluetooth/le/ScanFilter;->getDeviceName()Ljava/lang/String; +HPLandroid/bluetooth/le/ScanFilter;->getManufacturerData()[B +HPLandroid/bluetooth/le/ScanFilter;->getManufacturerDataMask()[B +HPLandroid/bluetooth/le/ScanFilter;->getManufacturerId()I +HPLandroid/bluetooth/le/ScanFilter;->getServiceData()[B +HPLandroid/bluetooth/le/ScanFilter;->getServiceDataMask()[B +HPLandroid/bluetooth/le/ScanFilter;->getServiceDataUuid()Landroid/os/ParcelUuid; +HPLandroid/bluetooth/le/ScanFilter;->getServiceUuid()Landroid/os/ParcelUuid; +HPLandroid/bluetooth/le/ScanFilter;->getServiceUuidMask()Landroid/os/ParcelUuid; +HPLandroid/bluetooth/le/ScanFilter;->matches(Landroid/bluetooth/le/ScanResult;)Z +HPLandroid/bluetooth/le/ScanFilter;->matchesPartialData([B[B[B)Z +HPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuid(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z +HPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuids(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Ljava/util/List;)Z +HPLandroid/bluetooth/le/ScanFilter;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/bluetooth/le/ScanRecord;->(Ljava/util/List;Landroid/util/SparseArray;Ljava/util/Map;IILjava/lang/String;[B)V +HPLandroid/bluetooth/le/ScanRecord;->extractBytes([BII)[B +HPLandroid/bluetooth/le/ScanRecord;->getBytes()[B +HPLandroid/bluetooth/le/ScanRecord;->getManufacturerSpecificData(I)[B +HPLandroid/bluetooth/le/ScanRecord;->getServiceData(Landroid/os/ParcelUuid;)[B +HPLandroid/bluetooth/le/ScanRecord;->getServiceUuids()Ljava/util/List; +HPLandroid/bluetooth/le/ScanRecord;->parseFromBytes([B)Landroid/bluetooth/le/ScanRecord; +HPLandroid/bluetooth/le/ScanRecord;->parseServiceUuid([BIIILjava/util/List;)I +HPLandroid/bluetooth/le/ScanResult$1;->()V +HPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanResult; +HPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/le/ScanResult;->(Landroid/bluetooth/BluetoothDevice;IIIIIIILandroid/bluetooth/le/ScanRecord;J)V +HPLandroid/bluetooth/le/ScanResult;->(Landroid/os/Parcel;)V +HPLandroid/bluetooth/le/ScanResult;->(Landroid/os/Parcel;Landroid/bluetooth/le/ScanResult;)V +HPLandroid/bluetooth/le/ScanResult;->getDevice()Landroid/bluetooth/BluetoothDevice; +HPLandroid/bluetooth/le/ScanResult;->getRssi()I +HPLandroid/bluetooth/le/ScanResult;->getScanRecord()Landroid/bluetooth/le/ScanRecord; +HPLandroid/bluetooth/le/ScanResult;->getTimestampNanos()J +HPLandroid/bluetooth/le/ScanResult;->readFromParcel(Landroid/os/Parcel;)V +HPLandroid/bluetooth/le/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/bluetooth/le/ScanSettings$1;->()V +HPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanSettings; +HPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/bluetooth/le/ScanSettings$Builder;->()V +HPLandroid/bluetooth/le/ScanSettings$Builder;->build()Landroid/bluetooth/le/ScanSettings; +HPLandroid/bluetooth/le/ScanSettings$Builder;->isValidCallbackType(I)Z +HPLandroid/bluetooth/le/ScanSettings$Builder;->setCallbackType(I)Landroid/bluetooth/le/ScanSettings$Builder; +HPLandroid/bluetooth/le/ScanSettings$Builder;->setMatchMode(I)Landroid/bluetooth/le/ScanSettings$Builder; +HPLandroid/bluetooth/le/ScanSettings$Builder;->setNumOfMatches(I)Landroid/bluetooth/le/ScanSettings$Builder; +HPLandroid/bluetooth/le/ScanSettings$Builder;->setReportDelay(J)Landroid/bluetooth/le/ScanSettings$Builder; +HPLandroid/bluetooth/le/ScanSettings$Builder;->setScanMode(I)Landroid/bluetooth/le/ScanSettings$Builder; +HPLandroid/bluetooth/le/ScanSettings;->(IIIJIIZI)V +HPLandroid/bluetooth/le/ScanSettings;->(IIIJIIZILandroid/bluetooth/le/ScanSettings;)V +HPLandroid/bluetooth/le/ScanSettings;->(Landroid/os/Parcel;)V +HPLandroid/bluetooth/le/ScanSettings;->(Landroid/os/Parcel;Landroid/bluetooth/le/ScanSettings;)V +HPLandroid/bluetooth/le/ScanSettings;->getCallbackType()I +HPLandroid/bluetooth/le/ScanSettings;->getLegacy()Z +HPLandroid/bluetooth/le/ScanSettings;->getMatchMode()I +HPLandroid/bluetooth/le/ScanSettings;->getReportDelayMillis()J +HPLandroid/bluetooth/le/ScanSettings;->getScanMode()I +HPLandroid/bluetooth/le/ScanSettings;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/companion/ICompanionDeviceManager$Stub;->()V +HPLandroid/companion/ICompanionDeviceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceManager; +HPLandroid/companion/ICompanionDeviceManager;->associate(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V +HPLandroid/companion/ICompanionDeviceManager;->disassociate(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/companion/ICompanionDeviceManager;->getAssociations(Ljava/lang/String;I)Ljava/util/List; +HPLandroid/companion/ICompanionDeviceManager;->hasNotificationAccess(Landroid/content/ComponentName;)Z +HPLandroid/companion/ICompanionDeviceManager;->requestNotificationAccess(Landroid/content/ComponentName;)Landroid/app/PendingIntent; +HPLandroid/companion/ICompanionDeviceManager;->stopScan(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V +HPLandroid/content/AbstractThreadedSyncAdapter;->getContext()Landroid/content/Context; +HPLandroid/content/AsyncTaskLoader$LoadTask;->run()V +HPLandroid/content/AsyncTaskLoader;->onCanceled(Ljava/lang/Object;)V +HPLandroid/content/BroadcastReceiver;->checkSynchronousHint()V +HPLandroid/content/BroadcastReceiver;->getResultCode()I +HPLandroid/content/BroadcastReceiver;->getResultData()Ljava/lang/String; +HPLandroid/content/BroadcastReceiver;->getSendingUserId()I +HPLandroid/content/BroadcastReceiver;->goAsync()Landroid/content/BroadcastReceiver$PendingResult; +HPLandroid/content/BroadcastReceiver;->isOrderedBroadcast()Z +HPLandroid/content/BroadcastReceiver;->setResult(ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/content/BroadcastReceiver;->setResultCode(I)V +HPLandroid/content/BroadcastReceiver;->setResultExtras(Landroid/os/Bundle;)V +HPLandroid/content/ComponentName$1;->newArray(I)[Landroid/content/ComponentName; +HPLandroid/content/ComponentName$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;)V +HPLandroid/content/ComponentName;->compareTo(Landroid/content/ComponentName;)I +HPLandroid/content/ComponentName;->printShortClassName(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/content/ComponentName;->printShortString(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/content/ContentProvider$Transport;->bulkInsert(Ljava/lang/String;Landroid/net/Uri;[Landroid/content/ContentValues;)I +HPLandroid/content/ContentProvider$Transport;->enforceFilePermission(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V +HPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HPLandroid/content/ContentProvider;->getWritePermission()Ljava/lang/String; +HPLandroid/content/ContentProvider;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/content/ContentProvider;->openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HPLandroid/content/ContentProvider;->openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor; +HPLandroid/content/ContentProvider;->openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HPLandroid/content/ContentProviderClient$CursorWrapperInner;->(Landroid/content/ContentProviderClient;Landroid/database/Cursor;)V +HPLandroid/content/ContentProviderClient$CursorWrapperInner;->close()V +HPLandroid/content/ContentProviderClient$CursorWrapperInner;->finalize()V +HPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HPLandroid/content/ContentProviderProxy;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I +HPLandroid/content/ContentProviderProxy;->getType(Landroid/net/Uri;)Ljava/lang/String; +HPLandroid/content/ContentProviderProxy;->insert(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; +HPLandroid/content/ContentProviderProxy;->update(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HPLandroid/content/ContentQueryMap;->getValues(Ljava/lang/String;)Landroid/content/ContentValues; +HPLandroid/content/ContentResolver$OpenResourceIdResult;->(Landroid/content/ContentResolver;)V +HPLandroid/content/ContentResolver;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +HPLandroid/content/ContentResolver;->bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I +HPLandroid/content/ContentResolver;->getResourceId(Landroid/net/Uri;)Landroid/content/ContentResolver$OpenResourceIdResult; +HPLandroid/content/ContentResolver;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HPLandroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream; +HPLandroid/content/ContentResolver;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +HPLandroid/content/ContentUris;->parseId(Landroid/net/Uri;)J +HPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentValues; +HPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/ContentValues;->(Landroid/content/ContentValues;)V +HPLandroid/content/ContentValues;->(Ljava/util/HashMap;)V +HPLandroid/content/ContentValues;->(Ljava/util/HashMap;Landroid/content/ContentValues;)V +HPLandroid/content/ContentValues;->getAsByteArray(Ljava/lang/String;)[B +HPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Double;)V +HPLandroid/content/ContentValues;->putNull(Ljava/lang/String;)V +HPLandroid/content/ContentValues;->valueSet()Ljava/util/Set; +HPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/Context;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V +HPLandroid/content/ContextWrapper;->checkCallingPermission(Ljava/lang/String;)I +HPLandroid/content/ContextWrapper;->createCredentialProtectedStorageContext()Landroid/content/Context; +HPLandroid/content/ContextWrapper;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/content/ContextWrapper;->getMainThreadHandler()Landroid/os/Handler; +HPLandroid/content/ContextWrapper;->moveDatabaseFrom(Landroid/content/Context;Ljava/lang/String;)Z +HPLandroid/content/ContextWrapper;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z +HPLandroid/content/ContextWrapper;->removeStickyBroadcast(Landroid/content/Intent;)V +HPLandroid/content/ContextWrapper;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V +HPLandroid/content/ContextWrapper;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/content/ContextWrapper;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V +HPLandroid/content/ContextWrapper;->startServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/ComponentName; +HPLandroid/content/IClipboard$Stub;->()V +HPLandroid/content/IClipboard$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/IContentService$Stub$Proxy;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +HPLandroid/content/IContentService$Stub$Proxy;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +HPLandroid/content/IContentService$Stub;->()V +HPLandroid/content/IContentService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/IIntentReceiver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/IIntentReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/IIntentReceiver$Stub$Proxy;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HPLandroid/content/IIntentReceiver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/IIntentSender$Stub;->()V +HPLandroid/content/IIntentSender$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/IOnPrimaryClipChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IOnPrimaryClipChangedListener; +HPLandroid/content/IRestrictionsManager$Stub;->()V +HPLandroid/content/IRestrictionsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/ISyncAdapter$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/ISyncAdapter$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/ISyncAdapter$Stub$Proxy;->cancelSync(Landroid/content/ISyncContext;)V +HPLandroid/content/ISyncAdapter$Stub$Proxy;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HPLandroid/content/ISyncAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapter; +HPLandroid/content/ISyncContext$Stub$Proxy;->onFinished(Landroid/content/SyncResult;)V +HPLandroid/content/ISyncContext$Stub;->()V +HPLandroid/content/ISyncContext$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/ISyncContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/ISyncStatusObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/ISyncStatusObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/ISyncStatusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncStatusObserver; +HPLandroid/content/Intent$1;->newArray(I)[Landroid/content/Intent; +HPLandroid/content/Intent$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/content/Intent$CommandOptionHandler;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z +HPLandroid/content/Intent$FilterComparison;->getIntent()Landroid/content/Intent; +HPLandroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V +HPLandroid/content/Intent;->canStripForHistory()Z +HPLandroid/content/Intent;->cloneFilter()Landroid/content/Intent; +HPLandroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent; +HPLandroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;Landroid/content/IntentSender;)Landroid/content/Intent; +HPLandroid/content/Intent;->describeContents()I +HPLandroid/content/Intent;->fillIn(Landroid/content/Intent;I)I +HPLandroid/content/Intent;->getByteArrayExtra(Ljava/lang/String;)[B +HPLandroid/content/Intent;->getContentUserHint()I +HPLandroid/content/Intent;->getFloatExtra(Ljava/lang/String;F)F +HPLandroid/content/Intent;->getLaunchToken()Ljava/lang/String; +HPLandroid/content/Intent;->getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable; +HPLandroid/content/Intent;->getSourceBounds()Landroid/graphics/Rect; +HPLandroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String; +HPLandroid/content/Intent;->hasFileDescriptors()Z +HPLandroid/content/Intent;->isAccessUriMode(I)Z +HPLandroid/content/Intent;->isDocument()Z +HPLandroid/content/Intent;->makeMainActivity(Landroid/content/ComponentName;)Landroid/content/Intent; +HPLandroid/content/Intent;->makeMainSelectorActivity(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; +HPLandroid/content/Intent;->makeRestartActivityTask(Landroid/content/ComponentName;)Landroid/content/Intent; +HPLandroid/content/Intent;->maybeStripForHistory()Landroid/content/Intent; +HPLandroid/content/Intent;->parseCommandArgs(Landroid/os/ShellCommand;Landroid/content/Intent$CommandOptionHandler;)Landroid/content/Intent; +HPLandroid/content/Intent;->parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent; +HPLandroid/content/Intent;->putExtra(Ljava/lang/String;F)Landroid/content/Intent; +HPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent; +HPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/content/Intent; +HPLandroid/content/Intent;->putExtra(Ljava/lang/String;[B)Landroid/content/Intent; +HPLandroid/content/Intent;->putExtra(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/Intent; +HPLandroid/content/Intent;->putParcelableArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent; +HPLandroid/content/Intent;->putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent; +HPLandroid/content/Intent;->replaceExtras(Landroid/content/Intent;)Landroid/content/Intent; +HPLandroid/content/Intent;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent; +HPLandroid/content/Intent;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/content/Intent;->setSelector(Landroid/content/Intent;)V +HPLandroid/content/Intent;->setSourceBounds(Landroid/graphics/Rect;)V +HPLandroid/content/Intent;->toShortString(ZZZZ)Ljava/lang/String; +HPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentFilter; +HPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/IntentFilter$AuthorityEntry;->-get0(Landroid/content/IntentFilter$AuthorityEntry;)Ljava/lang/String; +HPLandroid/content/IntentFilter$AuthorityEntry;->-get1(Landroid/content/IntentFilter$AuthorityEntry;)I +HPLandroid/content/IntentFilter$AuthorityEntry;->-get2(Landroid/content/IntentFilter$AuthorityEntry;)Z +HPLandroid/content/IntentFilter$AuthorityEntry;->match(Landroid/net/Uri;)I +HPLandroid/content/IntentFilter;->(Landroid/content/IntentFilter;)V +HPLandroid/content/IntentFilter;->addDataPath(Landroid/os/PatternMatcher;)V +HPLandroid/content/IntentFilter;->addDataPath(Ljava/lang/String;I)V +HPLandroid/content/IntentFilter;->dump(Landroid/util/Printer;Ljava/lang/String;)V +HPLandroid/content/IntentFilter;->findMimeType(Ljava/lang/String;)Z +HPLandroid/content/IntentFilter;->getDataScheme(I)Ljava/lang/String; +HPLandroid/content/IntentFilter;->hasDataPath(Ljava/lang/String;)Z +HPLandroid/content/IntentFilter;->hasDataScheme(Ljava/lang/String;)Z +HPLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Ljava/lang/String;)Z +HPLandroid/content/IntentFilter;->isImplicitlyVisibleToInstantApp()Z +HPLandroid/content/IntentFilter;->isVisibleToInstantApp()Z +HPLandroid/content/IntentFilter;->match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I +HPLandroid/content/IntentFilter;->matchDataAuthority(Landroid/net/Uri;)I +HPLandroid/content/IntentFilter;->needsVerification()Z +HPLandroid/content/IntentFilter;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/content/IntentSender$1;->()V +HPLandroid/content/IntentSender;->(Landroid/content/IIntentSender;)V +HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V +HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V +HPLandroid/content/ServiceConnection;->onBindingDied(Landroid/content/ComponentName;)V +HPLandroid/content/SyncAdapterType;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/content/SyncAdapterType;->allowParallelSyncs()Z +HPLandroid/content/SyncAdapterType;->equals(Ljava/lang/Object;)Z +HPLandroid/content/SyncAdapterType;->hashCode()I +HPLandroid/content/SyncAdapterType;->isAlwaysSyncable()Z +HPLandroid/content/SyncAdapterType;->newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType; +HPLandroid/content/SyncAdapterType;->supportsUploading()Z +HPLandroid/content/SyncAdapterType;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/SyncAdaptersCache$MySerializer;->()V +HPLandroid/content/SyncAdaptersCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/SyncAdapterType; +HPLandroid/content/SyncAdaptersCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object; +HPLandroid/content/SyncAdaptersCache;->(Landroid/content/Context;)V +HPLandroid/content/SyncAdaptersCache;->getSyncAdapterPackagesForAuthority(Ljava/lang/String;I)[Ljava/lang/String; +HPLandroid/content/SyncAdaptersCache;->onServicesChangedLocked(I)V +HPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/content/SyncAdapterType; +HPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object; +HPLandroid/content/SyncContext;->onFinished(Landroid/content/SyncResult;)V +HPLandroid/content/SyncInfo$1;->()V +HPLandroid/content/SyncInfo;->(ILandroid/accounts/Account;Ljava/lang/String;J)V +HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncRequest; +HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/SyncRequest;->(Landroid/os/Parcel;)V +HPLandroid/content/SyncRequest;->(Landroid/os/Parcel;Landroid/content/SyncRequest;)V +HPLandroid/content/SyncRequest;->getAccount()Landroid/accounts/Account; +HPLandroid/content/SyncRequest;->getBundle()Landroid/os/Bundle; +HPLandroid/content/SyncRequest;->getProvider()Ljava/lang/String; +HPLandroid/content/SyncRequest;->getSyncFlexTime()J +HPLandroid/content/SyncRequest;->getSyncRunTime()J +HPLandroid/content/SyncRequest;->isPeriodic()Z +HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncResult; +HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/SyncResult;->(Landroid/os/Parcel;)V +HPLandroid/content/SyncResult;->(Landroid/os/Parcel;Landroid/content/SyncResult;)V +HPLandroid/content/SyncResult;->hasError()Z +HPLandroid/content/SyncResult;->hasHardError()Z +HPLandroid/content/SyncResult;->hasSoftError()Z +HPLandroid/content/SyncResult;->toDebugString()Ljava/lang/String; +HPLandroid/content/SyncResult;->toString()Ljava/lang/String; +HPLandroid/content/SyncResult;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/SyncStats;->(Landroid/os/Parcel;)V +HPLandroid/content/SyncStats;->toString()Ljava/lang/String; +HPLandroid/content/SyncStats;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/SyncStatusInfo$1;->()V +HPLandroid/content/SyncStatusInfo;->(Landroid/os/Parcel;)V +HPLandroid/content/SyncStatusInfo;->addEvent(Ljava/lang/String;)V +HPLandroid/content/SyncStatusInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/UndoManager$UndoState;->(Landroid/content/UndoManager;I)V +HPLandroid/content/UndoManager$UndoState;->addOperation(Landroid/content/UndoOperation;)V +HPLandroid/content/UndoManager$UndoState;->canMerge()Z +HPLandroid/content/UndoManager$UndoState;->commit()V +HPLandroid/content/UndoManager$UndoState;->destroy()V +HPLandroid/content/UndoManager$UndoState;->getCommitId()I +HPLandroid/content/UndoManager$UndoState;->getLastOperation(Ljava/lang/Class;Landroid/content/UndoOwner;)Landroid/content/UndoOperation; +HPLandroid/content/UndoManager$UndoState;->hasData()Z +HPLandroid/content/UndoManager$UndoState;->hasMultipleOwners()Z +HPLandroid/content/UndoManager$UndoState;->hasOperation(Landroid/content/UndoOwner;)Z +HPLandroid/content/UndoManager$UndoState;->makeExecuted()V +HPLandroid/content/UndoManager$UndoState;->matchOwner(Landroid/content/UndoOwner;)Z +HPLandroid/content/UndoManager$UndoState;->setCanMerge(Z)Z +HPLandroid/content/UndoManager$UndoState;->updateLabel(Ljava/lang/CharSequence;)V +HPLandroid/content/UndoManager$UndoState;->writeToParcel(Landroid/os/Parcel;)V +HPLandroid/content/UndoManager;->addOperation(Landroid/content/UndoOperation;I)V +HPLandroid/content/UndoManager;->beginUpdate(Ljava/lang/CharSequence;)V +HPLandroid/content/UndoManager;->commitState(Landroid/content/UndoOwner;)I +HPLandroid/content/UndoManager;->createWorkingState()V +HPLandroid/content/UndoManager;->endUpdate()V +HPLandroid/content/UndoManager;->findPrevState(Ljava/util/ArrayList;[Landroid/content/UndoOwner;I)I +HPLandroid/content/UndoManager;->getLastOperation(Ljava/lang/Class;Landroid/content/UndoOwner;I)Landroid/content/UndoOperation; +HPLandroid/content/UndoManager;->getTopUndo([Landroid/content/UndoOwner;)Landroid/content/UndoManager$UndoState; +HPLandroid/content/UndoManager;->isInUndo()Z +HPLandroid/content/UndoManager;->matchOwners(Landroid/content/UndoManager$UndoState;[Landroid/content/UndoOwner;)Z +HPLandroid/content/UndoManager;->pushWorkingState()V +HPLandroid/content/UndoManager;->removeOwner(Landroid/content/UndoOwner;)V +HPLandroid/content/UndoManager;->saveOwner(Landroid/content/UndoOwner;Landroid/os/Parcel;)V +HPLandroid/content/UndoOperation;->(Landroid/content/UndoOwner;)V +HPLandroid/content/UndoOperation;->allowMerge()Z +HPLandroid/content/UndoOperation;->commit()V +HPLandroid/content/UndoOperation;->getOwner()Landroid/content/UndoOwner; +HPLandroid/content/UndoOperation;->getOwnerData()Ljava/lang/Object; +HPLandroid/content/UndoOperation;->hasData()Z +HPLandroid/content/UndoOperation;->matchOwner(Landroid/content/UndoOwner;)Z +HPLandroid/content/UndoOperation;->redo()V +HPLandroid/content/UndoOperation;->undo()V +HPLandroid/content/UndoOwner;->getData()Ljava/lang/Object; +HPLandroid/content/om/IOverlayManager$Stub;->()V +HPLandroid/content/om/IOverlayManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/om/OverlayInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V +HPLandroid/content/om/OverlayInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/ActivityInfo$WindowLayout;->(IFIFIII)V +HPLandroid/content/pm/ActivityInfo;->(Landroid/content/pm/ActivityInfo;)V +HPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I +HPLandroid/content/pm/ActivityInfo;->isFixedOrientation(I)Z +HPLandroid/content/pm/ActivityInfo;->isPreserveOrientationMode(I)Z +HPLandroid/content/pm/ActivityInfo;->isResizeableMode(I)Z +HPLandroid/content/pm/ActivityInfo;->isTranslucentOrFloating(Landroid/content/res/TypedArray;)Z +HPLandroid/content/pm/ActivityInfo;->supportsPictureInPicture()Z +HPLandroid/content/pm/ApplicationInfo;->getBaseCodePath()Ljava/lang/String; +HPLandroid/content/pm/ApplicationInfo;->getBaseResourcePath()Ljava/lang/String; +HPLandroid/content/pm/ApplicationInfo;->getSplitCodePaths()[Ljava/lang/String; +HPLandroid/content/pm/ApplicationInfo;->hasCode()Z +HPLandroid/content/pm/ApplicationInfo;->isEncryptionAware()Z +HPLandroid/content/pm/ApplicationInfo;->isPartiallyDirectBootAware()Z +HPLandroid/content/pm/ApplicationInfo;->toString()Ljava/lang/String; +HPLandroid/content/pm/ApplicationInfo;->usesCompatibilityMode()Z +HPLandroid/content/pm/BaseParceledListSlice$1;->(Landroid/content/pm/BaseParceledListSlice;ILjava/lang/Class;I)V +HPLandroid/content/pm/BaseParceledListSlice$1;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/BaseParceledListSlice;->-get0()Z +HPLandroid/content/pm/BaseParceledListSlice;->-get2(Landroid/content/pm/BaseParceledListSlice;)Ljava/util/List; +HPLandroid/content/pm/BaseParceledListSlice;->-wrap0(Ljava/lang/Class;Ljava/lang/Class;)V +HPLandroid/content/pm/BaseParceledListSlice;->setInlineCountLimit(I)V +HPLandroid/content/pm/ChangedPackages$1;->()V +HPLandroid/content/pm/ChangedPackages$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ChangedPackages; +HPLandroid/content/pm/ChangedPackages$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/pm/ChangedPackages;->(ILjava/util/List;)V +HPLandroid/content/pm/ChangedPackages;->(Landroid/os/Parcel;)V +HPLandroid/content/pm/ChangedPackages;->getPackageNames()Ljava/util/List; +HPLandroid/content/pm/ChangedPackages;->getSequenceNumber()I +HPLandroid/content/pm/ChangedPackages;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/ComponentInfo;->(Landroid/content/pm/ComponentInfo;)V +HPLandroid/content/pm/ComponentInfo;->getComponentName()Landroid/content/ComponentName; +HPLandroid/content/pm/ComponentInfo;->isEnabled()Z +HPLandroid/content/pm/ComponentInfo;->loadDefaultIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; +HPLandroid/content/pm/ConfigurationInfo;->()V +HPLandroid/content/pm/ConfigurationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/FallbackCategoryProvider;->loadFallbacks()V +HPLandroid/content/pm/FeatureInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/ILauncherApps$Stub;->()V +HPLandroid/content/pm/ILauncherApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V +HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLandroid/content/pm/IOnAppsChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnAppsChangedListener; +HPLandroid/content/pm/IOnAppsChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnPermissionsChangeListener; +HPLandroid/content/pm/IOtaDexopt$Stub;->()V +HPLandroid/content/pm/IOtaDexopt;->cleanup()V +HPLandroid/content/pm/IOtaDexopt;->dexoptNextPackage()V +HPLandroid/content/pm/IOtaDexopt;->getProgress()F +HPLandroid/content/pm/IOtaDexopt;->isDone()Z +HPLandroid/content/pm/IOtaDexopt;->nextDexoptCommand()Ljava/lang/String; +HPLandroid/content/pm/IOtaDexopt;->prepare()V +HPLandroid/content/pm/IPackageInstallObserver2$Stub;->()V +HPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLandroid/content/pm/IPackageInstaller$Stub;->()V +HPLandroid/content/pm/IPackageInstaller$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IPackageInstaller$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionActiveChanged(IZ)V +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionCreated(I)V +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionFinished(IZ)V +HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionProgressChanged(IF)V +HPLandroid/content/pm/IPackageInstallerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallerCallback; +HPLandroid/content/pm/IPackageInstallerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IPackageInstallerSession$Stub;->()V +HPLandroid/content/pm/IPackageInstallerSession;->abandon()V +HPLandroid/content/pm/IPackageInstallerSession;->addClientProgress(F)V +HPLandroid/content/pm/IPackageInstallerSession;->close()V +HPLandroid/content/pm/IPackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V +HPLandroid/content/pm/IPackageInstallerSession;->getNames()[Ljava/lang/String; +HPLandroid/content/pm/IPackageInstallerSession;->openRead(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/content/pm/IPackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; +HPLandroid/content/pm/IPackageInstallerSession;->removeSplit(Ljava/lang/String;)V +HPLandroid/content/pm/IPackageInstallerSession;->setClientProgress(F)V +HPLandroid/content/pm/IPackageInstallerSession;->transfer(Ljava/lang/String;)V +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->getChangedPackages(II)Landroid/content/pm/ChangedPackages; +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->isInstantApp(Ljava/lang/String;I)Z +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V +HPLandroid/content/pm/IPackageManager$Stub$Proxy;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V +HPLandroid/content/pm/IPackageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IPackageManagerNative$Stub;->()V +HPLandroid/content/pm/IPackageManagerNative$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/IPackageManagerNative;->getNamesForUids([I)[Ljava/lang/String; +HPLandroid/content/pm/IPackageMoveObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/content/pm/IPackageMoveObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/content/pm/IPackageMoveObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageMoveObserver; +HPLandroid/content/pm/IPackageStatsObserver$Stub;->()V +HPLandroid/content/pm/IPackageStatsObserver;->onGetStatsCompleted(Landroid/content/pm/PackageStats;Z)V +HPLandroid/content/pm/IShortcutService$Stub$Proxy;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/content/pm/IShortcutService$Stub;->()V +HPLandroid/content/pm/IShortcutService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/content/pm/InstantAppRequest;->(Landroid/content/pm/AuxiliaryResolveInfo;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;Z)V +HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest$1;->()V +HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->(Ljava/lang/String;)V +HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->(Ljava/lang/String;I)V +HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->generateDigest(Ljava/lang/String;I)[[B +HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->getDigestPrefix()[I +HPLandroid/content/pm/InstrumentationInfo;->()V +HPLandroid/content/pm/InstrumentationInfo;->(Landroid/content/pm/InstrumentationInfo;)V +HPLandroid/content/pm/InstrumentationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/LauncherActivityInfo;->getIcon(I)Landroid/graphics/drawable/Drawable; +HPLandroid/content/pm/LauncherApps$1;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V +HPLandroid/content/pm/LauncherApps$1;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLandroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->()V +HPLandroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;->(Landroid/content/pm/LauncherApps$CallbackMessageHandler$CallbackInfo;)V +HPLandroid/content/pm/LauncherApps$CallbackMessageHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/content/pm/LauncherApps$CallbackMessageHandler;->postOnPackageChanged(Ljava/lang/String;Landroid/os/UserHandle;)V +HPLandroid/content/pm/LauncherApps$CallbackMessageHandler;->postOnShortcutChanged(Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V +HPLandroid/content/pm/LauncherApps$ShortcutQuery;->setActivity(Landroid/content/ComponentName;)Landroid/content/pm/LauncherApps$ShortcutQuery; +HPLandroid/content/pm/LauncherApps$ShortcutQuery;->setPackage(Ljava/lang/String;)Landroid/content/pm/LauncherApps$ShortcutQuery; +HPLandroid/content/pm/LauncherApps$ShortcutQuery;->setShortcutIds(Ljava/util/List;)Landroid/content/pm/LauncherApps$ShortcutQuery; +HPLandroid/content/pm/LauncherApps;->-get0(Landroid/content/pm/LauncherApps;)Ljava/util/List; +HPLandroid/content/pm/PackageBackwardCompatibility;->modifySharedLibraries(Landroid/content/pm/PackageParser$Package;)V +HPLandroid/content/pm/PackageBackwardCompatibility;->orgApacheHttpLegacy(Ljava/util/ArrayList;)Ljava/util/ArrayList; +HPLandroid/content/pm/PackageInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/PackageInfoLite$1;->()V +HPLandroid/content/pm/PackageInfoLite$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInfoLite; +HPLandroid/content/pm/PackageInfoLite$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/pm/PackageInfoLite;->(Landroid/os/Parcel;)V +HPLandroid/content/pm/PackageInfoLite;->(Landroid/os/Parcel;Landroid/content/pm/PackageInfoLite;)V +HPLandroid/content/pm/PackageInstaller$Session;->(Landroid/content/pm/IPackageInstallerSession;)V +HPLandroid/content/pm/PackageInstaller$Session;->addProgress(F)V +HPLandroid/content/pm/PackageInstaller$Session;->close()V +HPLandroid/content/pm/PackageInstaller$Session;->commit(Landroid/content/IntentSender;)V +HPLandroid/content/pm/PackageInstaller$Session;->fsync(Ljava/io/OutputStream;)V +HPLandroid/content/pm/PackageInstaller$Session;->openWrite(Ljava/lang/String;JJ)Ljava/io/OutputStream; +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->handleMessage(Landroid/os/Message;)Z +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionActiveChanged(IZ)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionCreated(I)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionFinished(IZ)V +HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionProgressChanged(IF)V +HPLandroid/content/pm/PackageInstaller$SessionInfo$1;->()V +HPLandroid/content/pm/PackageInstaller$SessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLandroid/content/pm/PackageInstaller$SessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/pm/PackageInstaller$SessionInfo;->()V +HPLandroid/content/pm/PackageInstaller$SessionInfo;->(Landroid/os/Parcel;)V +HPLandroid/content/pm/PackageInstaller$SessionInfo;->getInstallerPackageName()Ljava/lang/String; +HPLandroid/content/pm/PackageInstaller$SessionInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/PackageInstaller$SessionParams$1;->()V +HPLandroid/content/pm/PackageInstaller$SessionParams;->(I)V +HPLandroid/content/pm/PackageInstaller$SessionParams;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +HPLandroid/content/pm/PackageInstaller$SessionParams;->setInstallFlagsInternal()V +HPLandroid/content/pm/PackageInstaller$SessionParams;->setSize(J)V +HPLandroid/content/pm/PackageInstaller;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLandroid/content/pm/PackageManager;->getPackageSizeInfo(Ljava/lang/String;Landroid/content/pm/IPackageStatsObserver;)V +HPLandroid/content/pm/PackageManager;->installStatusToPublicStatus(I)I +HPLandroid/content/pm/PackageManager;->installStatusToString(I)Ljava/lang/String; +HPLandroid/content/pm/PackageManager;->installStatusToString(ILjava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageManager;->permissionFlagToString(I)Ljava/lang/String; +HPLandroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;->getPackageTrustedToInstallApps(Ljava/lang/String;I)I +HPLandroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;->getPackages(Ljava/lang/String;I)[Ljava/lang/String; +HPLandroid/content/pm/PackageManagerInternal;->()V +HPLandroid/content/pm/PackageManagerInternal;->addIsolatedUid(II)V +HPLandroid/content/pm/PackageManagerInternal;->canAccessInstantApps(II)Z +HPLandroid/content/pm/PackageManagerInternal;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLandroid/content/pm/PackageManagerInternal;->getApplicationInfo(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; +HPLandroid/content/pm/PackageManagerInternal;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName; +HPLandroid/content/pm/PackageManagerInternal;->getNameForUid(I)Ljava/lang/String; +HPLandroid/content/pm/PackageManagerInternal;->getOverlayPackages(I)Ljava/util/List; +HPLandroid/content/pm/PackageManagerInternal;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo; +HPLandroid/content/pm/PackageManagerInternal;->getSetupWizardPackageName()Ljava/lang/String; +HPLandroid/content/pm/PackageManagerInternal;->getTargetPackageNames(I)Ljava/util/List; +HPLandroid/content/pm/PackageManagerInternal;->getUidTargetSdkVersion(I)I +HPLandroid/content/pm/PackageManagerInternal;->grantDefaultPermissionsToDefaultDialerApp(Ljava/lang/String;I)V +HPLandroid/content/pm/PackageManagerInternal;->grantDefaultPermissionsToDefaultSimCallManager(Ljava/lang/String;I)V +HPLandroid/content/pm/PackageManagerInternal;->grantDefaultPermissionsToDefaultSmsApp(Ljava/lang/String;I)V +HPLandroid/content/pm/PackageManagerInternal;->grantEphemeralAccess(ILandroid/content/Intent;II)V +HPLandroid/content/pm/PackageManagerInternal;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;IZ)V +HPLandroid/content/pm/PackageManagerInternal;->hasInstantApplicationMetadata(Ljava/lang/String;I)Z +HPLandroid/content/pm/PackageManagerInternal;->isInstantAppInstallerComponent(Landroid/content/ComponentName;)Z +HPLandroid/content/pm/PackageManagerInternal;->isPackageDataProtected(ILjava/lang/String;)Z +HPLandroid/content/pm/PackageManagerInternal;->isPackageEphemeral(ILjava/lang/String;)Z +HPLandroid/content/pm/PackageManagerInternal;->isPackagePersistent(Ljava/lang/String;)Z +HPLandroid/content/pm/PackageManagerInternal;->isPermissionsReviewRequired(Ljava/lang/String;I)Z +HPLandroid/content/pm/PackageManagerInternal;->pruneInstantApps()V +HPLandroid/content/pm/PackageManagerInternal;->queryIntentActivities(Landroid/content/Intent;III)Ljava/util/List; +HPLandroid/content/pm/PackageManagerInternal;->removeIsolatedUid(I)V +HPLandroid/content/pm/PackageManagerInternal;->requestInstantAppResolutionPhaseTwo(Landroid/content/pm/AuxiliaryResolveInfo;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;I)V +HPLandroid/content/pm/PackageManagerInternal;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLandroid/content/pm/PackageManagerInternal;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLandroid/content/pm/PackageManagerInternal;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;IZ)V +HPLandroid/content/pm/PackageManagerInternal;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V +HPLandroid/content/pm/PackageManagerInternal;->setDialerAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z +HPLandroid/content/pm/PackageManagerInternal;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V +HPLandroid/content/pm/PackageManagerInternal;->setKeepUninstalledPackages(Ljava/util/List;)V +HPLandroid/content/pm/PackageManagerInternal;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->setSimCallManagerPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->setSmsAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->setSyncAdapterPackagesprovider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +HPLandroid/content/pm/PackageManagerInternal;->wasPackageEverLaunched(Ljava/lang/String;I)Z +HPLandroid/content/pm/PackageParser$Activity;->-wrap0(Landroid/content/pm/PackageParser$Activity;)Z +HPLandroid/content/pm/PackageParser$Activity;->-wrap1(Landroid/content/pm/PackageParser$Activity;F)V +HPLandroid/content/pm/PackageParser$Activity;->(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ActivityInfo;)V +HPLandroid/content/pm/PackageParser$Activity;->hasMaxAspectRatio()Z +HPLandroid/content/pm/PackageParser$Activity;->setMaxAspectRatio(F)V +HPLandroid/content/pm/PackageParser$ActivityIntentInfo;->(Landroid/content/pm/PackageParser$Activity;)V +HPLandroid/content/pm/PackageParser$ApkLite;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IIILjava/util/List;[Landroid/content/pm/Signature;[[Ljava/security/cert/Certificate;ZZZZZZ)V +HPLandroid/content/pm/PackageParser$CachedComponentArgs;->()V +HPLandroid/content/pm/PackageParser$CachedComponentArgs;->(Landroid/content/pm/PackageParser$CachedComponentArgs;)V +HPLandroid/content/pm/PackageParser$Component;->(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ComponentInfo;)V +HPLandroid/content/pm/PackageParser$Component;->(Landroid/content/pm/PackageParser$ParsePackageItemArgs;Landroid/content/pm/PackageItemInfo;)V +HPLandroid/content/pm/PackageParser$Component;->appendComponentShortName(Ljava/lang/StringBuilder;)V +HPLandroid/content/pm/PackageParser$Component;->printComponentShortName(Ljava/io/PrintWriter;)V +HPLandroid/content/pm/PackageParser$Instrumentation;->(Landroid/content/pm/PackageParser$ParsePackageItemArgs;Landroid/content/pm/InstrumentationInfo;)V +HPLandroid/content/pm/PackageParser$IntentInfo;->()V +HPLandroid/content/pm/PackageParser$Package;->(Ljava/lang/String;)V +HPLandroid/content/pm/PackageParser$Package;->canHaveOatDir()Z +HPLandroid/content/pm/PackageParser$Package;->getAllCodePaths()Ljava/util/List; +HPLandroid/content/pm/PackageParser$Package;->getAllCodePathsExcludingResourceOnly()Ljava/util/List; +HPLandroid/content/pm/PackageParser$Package;->hasComponentClassName(Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser$Package;->isForwardLocked()Z +HPLandroid/content/pm/PackageParser$Package;->isLibrary()Z +HPLandroid/content/pm/PackageParser$Package;->isMatch(I)Z +HPLandroid/content/pm/PackageParser$Package;->setApplicationInfoFlags(II)V +HPLandroid/content/pm/PackageParser$Package;->setBaseCodePath(Ljava/lang/String;)V +HPLandroid/content/pm/PackageParser$Package;->setCodePath(Ljava/lang/String;)V +HPLandroid/content/pm/PackageParser$Package;->setSignatures([Landroid/content/pm/Signature;)V +HPLandroid/content/pm/PackageParser$Package;->setSplitCodePaths([Ljava/lang/String;)V +HPLandroid/content/pm/PackageParser$Package;->setUse32bitAbi(Z)V +HPLandroid/content/pm/PackageParser$Package;->setVolumeUuid(Ljava/lang/String;)V +HPLandroid/content/pm/PackageParser$Package;->toString()Ljava/lang/String; +HPLandroid/content/pm/PackageParser$PackageLite;->(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;[Ljava/lang/String;[Z[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[I)V +HPLandroid/content/pm/PackageParser$PackageLite;->getAllCodePaths()Ljava/util/List; +HPLandroid/content/pm/PackageParser$ParseComponentArgs;->(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII[Ljava/lang/String;III)V +HPLandroid/content/pm/PackageParser$ParsePackageItemArgs;->(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII)V +HPLandroid/content/pm/PackageParser$Permission;->(Landroid/content/pm/PackageParser$Package;)V +HPLandroid/content/pm/PackageParser$Permission;->toString()Ljava/lang/String; +HPLandroid/content/pm/PackageParser$Provider;->(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ProviderInfo;)V +HPLandroid/content/pm/PackageParser$Provider;->toString()Ljava/lang/String; +HPLandroid/content/pm/PackageParser$ProviderIntentInfo;->(Landroid/content/pm/PackageParser$Provider;)V +HPLandroid/content/pm/PackageParser$Service;->(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ServiceInfo;)V +HPLandroid/content/pm/PackageParser$ServiceIntentInfo;->(Landroid/content/pm/PackageParser$Service;)V +HPLandroid/content/pm/PackageParser;->-wrap0(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageItemInfo;[Ljava/lang/String;Ljava/lang/String;Landroid/content/res/TypedArray;ZIIIIII)Z +HPLandroid/content/pm/PackageParser;->-wrap1(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;I[Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageParser;->buildClassName(Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageParser;->buildCompoundName(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageParser;->buildProcessName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;I[Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageParser;->buildTaskAffinityName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/PackageParser;->cacheResult(Ljava/io/File;ILandroid/content/pm/PackageParser$Package;)V +HPLandroid/content/pm/PackageParser;->computeMinSdkVersion(ILjava/lang/String;I[Ljava/lang/String;[Ljava/lang/String;)I +HPLandroid/content/pm/PackageParser;->computeTargetSdkVersion(ILjava/lang/String;I[Ljava/lang/String;[Ljava/lang/String;)I +HPLandroid/content/pm/PackageParser;->generateApplicationInfo(Landroid/content/pm/PackageParser$Package;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ApplicationInfo; +HPLandroid/content/pm/PackageParser;->generateInstrumentationInfo(Landroid/content/pm/PackageParser$Instrumentation;I)Landroid/content/pm/InstrumentationInfo; +HPLandroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;I)Landroid/content/pm/PackageInfo; +HPLandroid/content/pm/PackageParser;->generatePermissionInfo(Landroid/content/pm/PackageParser$Permission;I)Landroid/content/pm/PermissionInfo; +HPLandroid/content/pm/PackageParser;->generateProviderInfo(Landroid/content/pm/PackageParser$Provider;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ProviderInfo; +HPLandroid/content/pm/PackageParser;->generateServiceInfo(Landroid/content/pm/PackageParser$Service;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ServiceInfo; +HPLandroid/content/pm/PackageParser;->getActivityConfigChanges(II)I +HPLandroid/content/pm/PackageParser;->getApkSigningVersion(Landroid/content/pm/PackageParser$Package;)I +HPLandroid/content/pm/PackageParser;->hasDomainURLs(Landroid/content/pm/PackageParser$Package;)Z +HPLandroid/content/pm/PackageParser;->isAvailable(Landroid/content/pm/PackageUserState;)Z +HPLandroid/content/pm/PackageParser;->isImplicitlyExposedIntent(Landroid/content/pm/PackageParser$IntentInfo;)Z +HPLandroid/content/pm/PackageParser;->loadApkIntoAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;I)I +HPLandroid/content/pm/PackageParser;->newConfiguredAssetManager()Landroid/content/res/AssetManager; +HPLandroid/content/pm/PackageParser;->parseActivity(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;ZZ)Landroid/content/pm/PackageParser$Activity; +HPLandroid/content/pm/PackageParser;->parseActivityAlias(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Activity; +HPLandroid/content/pm/PackageParser;->parseAllMetaData(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Ljava/lang/String;Landroid/content/pm/PackageParser$Component;[Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser;->parseApkLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$ApkLite; +HPLandroid/content/pm/PackageParser;->parseApkLite(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;[Landroid/content/pm/Signature;[[Ljava/security/cert/Certificate;)Landroid/content/pm/PackageParser$ApkLite; +HPLandroid/content/pm/PackageParser;->parseBaseApk(Ljava/io/File;Landroid/content/res/AssetManager;I)Landroid/content/pm/PackageParser$Package; +HPLandroid/content/pm/PackageParser;->parseBaseApk(Ljava/lang/String;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package; +HPLandroid/content/pm/PackageParser;->parseBaseApkCommon(Landroid/content/pm/PackageParser$Package;Ljava/util/Set;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package; +HPLandroid/content/pm/PackageParser;->parseBaseApplication(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser;->parseInstrumentation(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Landroid/content/pm/PackageParser$Instrumentation; +HPLandroid/content/pm/PackageParser;->parseIntent(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;ZZLandroid/content/pm/PackageParser$IntentInfo;[Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser;->parseLayout(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/pm/PackageParser$Activity;)V +HPLandroid/content/pm/PackageParser;->parseMetaData(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Landroid/os/Bundle;[Ljava/lang/String;)Landroid/os/Bundle; +HPLandroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; +HPLandroid/content/pm/PackageParser;->parsePackageItemInfo(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageItemInfo;[Ljava/lang/String;Ljava/lang/String;Landroid/content/res/TypedArray;ZIIIIII)Z +HPLandroid/content/pm/PackageParser;->parsePackageLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$PackageLite; +HPLandroid/content/pm/PackageParser;->parsePackageSplitNames(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/util/Pair; +HPLandroid/content/pm/PackageParser;->parsePermission(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser;->parseProvider(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Provider; +HPLandroid/content/pm/PackageParser;->parseProviderTags(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;ZLandroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Provider;[Ljava/lang/String;)Z +HPLandroid/content/pm/PackageParser;->parseService(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Service; +HPLandroid/content/pm/PackageParser;->parseUsesFeature(Landroid/content/res/Resources;Landroid/util/AttributeSet;)Landroid/content/pm/FeatureInfo; +HPLandroid/content/pm/PackageParser;->parseUsesPermission(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;)Z +HPLandroid/content/pm/PackageParser;->populateCertificates(Landroid/content/pm/PackageParser$Package;[[Ljava/security/cert/Certificate;)V +HPLandroid/content/pm/PackageParser;->setActivityResizeMode(Landroid/content/pm/ActivityInfo;Landroid/content/res/TypedArray;Landroid/content/pm/PackageParser$Package;)V +HPLandroid/content/pm/PackageParser;->setCompatibilityModeEnabled(Z)V +HPLandroid/content/pm/PackageParser;->setMaxAspectRatio(Landroid/content/pm/PackageParser$Package;)V +HPLandroid/content/pm/PackageParser;->validateName(Ljava/lang/String;ZZ)Ljava/lang/String; +HPLandroid/content/pm/PackageStats$1;->()V +HPLandroid/content/pm/PackageStats;->(Ljava/lang/String;)V +HPLandroid/content/pm/ParceledListSlice;->emptyList()Landroid/content/pm/ParceledListSlice; +HPLandroid/content/pm/ParceledListSlice;->setInlineCountLimit(I)V +HPLandroid/content/pm/PathPermission;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V +HPLandroid/content/pm/PermissionInfo$1;->newArray(I)[Landroid/content/pm/PermissionInfo; +HPLandroid/content/pm/PermissionInfo$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/content/pm/PermissionInfo;->protectionToString(I)Ljava/lang/String; +HPLandroid/content/pm/PermissionInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/ProviderInfo;->()V +HPLandroid/content/pm/ProviderInfo;->(Landroid/content/pm/ProviderInfo;)V +HPLandroid/content/pm/ProviderInfo;->toString()Ljava/lang/String; +HPLandroid/content/pm/RegisteredServicesCache$1;->(Landroid/content/pm/RegisteredServicesCache;)V +HPLandroid/content/pm/RegisteredServicesCache$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLandroid/content/pm/RegisteredServicesCache$2;->(Landroid/content/pm/RegisteredServicesCache;)V +HPLandroid/content/pm/RegisteredServicesCache$3;->(Landroid/content/pm/RegisteredServicesCache;)V +HPLandroid/content/pm/RegisteredServicesCache$ServiceInfo;->(Ljava/lang/Object;Landroid/content/pm/ComponentInfo;Landroid/content/ComponentName;)V +HPLandroid/content/pm/RegisteredServicesCache$UserServices;->()V +HPLandroid/content/pm/RegisteredServicesCache$UserServices;->(Landroid/content/pm/RegisteredServicesCache$UserServices;)V +HPLandroid/content/pm/RegisteredServicesCache;->-wrap0(Landroid/content/pm/RegisteredServicesCache;Landroid/content/Intent;I)V +HPLandroid/content/pm/RegisteredServicesCache;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/XmlSerializerAndParser;)V +HPLandroid/content/pm/RegisteredServicesCache;->containsType(Ljava/util/ArrayList;Ljava/lang/Object;)Z +HPLandroid/content/pm/RegisteredServicesCache;->createFileForUser(I)Landroid/util/AtomicFile; +HPLandroid/content/pm/RegisteredServicesCache;->findOrCreateUserLocked(I)Landroid/content/pm/RegisteredServicesCache$UserServices; +HPLandroid/content/pm/RegisteredServicesCache;->findOrCreateUserLocked(IZ)Landroid/content/pm/RegisteredServicesCache$UserServices; +HPLandroid/content/pm/RegisteredServicesCache;->generateServicesMap([II)V +HPLandroid/content/pm/RegisteredServicesCache;->getAllServices(I)Ljava/util/Collection; +HPLandroid/content/pm/RegisteredServicesCache;->getDataDirectory()Ljava/io/File; +HPLandroid/content/pm/RegisteredServicesCache;->getServiceInfo(Ljava/lang/Object;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; +HPLandroid/content/pm/RegisteredServicesCache;->getUser(I)Landroid/content/pm/UserInfo; +HPLandroid/content/pm/RegisteredServicesCache;->getUserSystemDirectory(I)Ljava/io/File; +HPLandroid/content/pm/RegisteredServicesCache;->handlePackageEvent(Landroid/content/Intent;I)V +HPLandroid/content/pm/RegisteredServicesCache;->invalidateCache(I)V +HPLandroid/content/pm/RegisteredServicesCache;->migrateIfNecessaryLocked()V +HPLandroid/content/pm/RegisteredServicesCache;->onServicesChangedLocked(I)V +HPLandroid/content/pm/RegisteredServicesCache;->parseServiceInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; +HPLandroid/content/pm/RegisteredServicesCache;->queryIntentServices(I)Ljava/util/List; +HPLandroid/content/pm/RegisteredServicesCache;->readPersistentServicesLocked(Ljava/io/InputStream;)V +HPLandroid/content/pm/RegisteredServicesCache;->setListener(Landroid/content/pm/RegisteredServicesCacheListener;Landroid/os/Handler;)V +HPLandroid/content/pm/RegisteredServicesCache;->updateServices(I)V +HPLandroid/content/pm/ResolveInfo;->getIconResource()I +HPLandroid/content/pm/ResolveInfo;->getIconResourceInternal()I +HPLandroid/content/pm/ResolveInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; +HPLandroid/content/pm/ResolveInfo;->toString()Ljava/lang/String; +HPLandroid/content/pm/ResolveInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/ServiceInfo;->()V +HPLandroid/content/pm/ServiceInfo;->(Landroid/content/pm/ServiceInfo;)V +HPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/SharedLibraryInfo;->getName()Ljava/lang/String; +HPLandroid/content/pm/SharedLibraryInfo;->isStatic()Z +HPLandroid/content/pm/ShortcutInfo;->(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;)V +HPLandroid/content/pm/ShortcutInfo;->(Landroid/content/pm/ShortcutInfo;I)V +HPLandroid/content/pm/ShortcutInfo;->addFlags(I)V +HPLandroid/content/pm/ShortcutInfo;->clearFlags(I)V +HPLandroid/content/pm/ShortcutInfo;->clearIcon()V +HPLandroid/content/pm/ShortcutInfo;->clearImplicitRankAndRankChangedFlag()V +HPLandroid/content/pm/ShortcutInfo;->clone(I)Landroid/content/pm/ShortcutInfo; +HPLandroid/content/pm/ShortcutInfo;->clonePersistableBundle([Landroid/os/PersistableBundle;)[Landroid/os/PersistableBundle; +HPLandroid/content/pm/ShortcutInfo;->copyNonNullFieldsFrom(Landroid/content/pm/ShortcutInfo;)V +HPLandroid/content/pm/ShortcutInfo;->enforceMandatoryFields(Z)V +HPLandroid/content/pm/ShortcutInfo;->ensureUpdatableWith(Landroid/content/pm/ShortcutInfo;)V +HPLandroid/content/pm/ShortcutInfo;->getBitmapPath()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getCategories()Ljava/util/Set; +HPLandroid/content/pm/ShortcutInfo;->getDisabledMessage()Ljava/lang/CharSequence; +HPLandroid/content/pm/ShortcutInfo;->getDisabledMessageResName()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getDisabledMessageResourceId()I +HPLandroid/content/pm/ShortcutInfo;->getExtras()Landroid/os/PersistableBundle; +HPLandroid/content/pm/ShortcutInfo;->getFlags()I +HPLandroid/content/pm/ShortcutInfo;->getIcon()Landroid/graphics/drawable/Icon; +HPLandroid/content/pm/ShortcutInfo;->getIconResName()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getIconResourceId()I +HPLandroid/content/pm/ShortcutInfo;->getImplicitRank()I +HPLandroid/content/pm/ShortcutInfo;->getIntentPersistableExtrases()[Landroid/os/PersistableBundle; +HPLandroid/content/pm/ShortcutInfo;->getIntentsNoExtras()[Landroid/content/Intent; +HPLandroid/content/pm/ShortcutInfo;->getLastChangedTimestamp()J +HPLandroid/content/pm/ShortcutInfo;->getPackage()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getRank()I +HPLandroid/content/pm/ShortcutInfo;->getResourceEntryName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getResourcePackageName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getResourceString(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/content/pm/ShortcutInfo;->getResourceTypeAndEntryName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getText()Ljava/lang/CharSequence; +HPLandroid/content/pm/ShortcutInfo;->getTextResId()I +HPLandroid/content/pm/ShortcutInfo;->getTextResName()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getTitle()Ljava/lang/CharSequence; +HPLandroid/content/pm/ShortcutInfo;->getTitleResId()I +HPLandroid/content/pm/ShortcutInfo;->getTitleResName()Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->getUserId()I +HPLandroid/content/pm/ShortcutInfo;->hasAnyResources()Z +HPLandroid/content/pm/ShortcutInfo;->hasIconFile()Z +HPLandroid/content/pm/ShortcutInfo;->hasIconResource()Z +HPLandroid/content/pm/ShortcutInfo;->hasRank()Z +HPLandroid/content/pm/ShortcutInfo;->hasStringResources()Z +HPLandroid/content/pm/ShortcutInfo;->isAlive()Z +HPLandroid/content/pm/ShortcutInfo;->isFloating()Z +HPLandroid/content/pm/ShortcutInfo;->isIconPendingSave()Z +HPLandroid/content/pm/ShortcutInfo;->isImmutable()Z +HPLandroid/content/pm/ShortcutInfo;->isManifestShortcut()Z +HPLandroid/content/pm/ShortcutInfo;->isOriginallyFromManifest()Z +HPLandroid/content/pm/ShortcutInfo;->isPinned()Z +HPLandroid/content/pm/ShortcutInfo;->isRankChanged()Z +HPLandroid/content/pm/ShortcutInfo;->isReturnedByServer()Z +HPLandroid/content/pm/ShortcutInfo;->lookUpResourceId(Landroid/content/res/Resources;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/content/pm/ShortcutInfo;->lookUpResourceName(Landroid/content/res/Resources;IZLjava/lang/String;)Ljava/lang/String; +HPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceIds(Landroid/content/res/Resources;)V +HPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceNames(Landroid/content/res/Resources;)V +HPLandroid/content/pm/ShortcutInfo;->replaceFlags(I)V +HPLandroid/content/pm/ShortcutInfo;->resolveResourceStrings(Landroid/content/res/Resources;)V +HPLandroid/content/pm/ShortcutInfo;->setBitmapPath(Ljava/lang/String;)V +HPLandroid/content/pm/ShortcutInfo;->setIconResName(Ljava/lang/String;)V +HPLandroid/content/pm/ShortcutInfo;->setIconResourceId(I)V +HPLandroid/content/pm/ShortcutInfo;->setImplicitRank(I)V +HPLandroid/content/pm/ShortcutInfo;->setIntentExtras(Landroid/content/Intent;Landroid/os/PersistableBundle;)Landroid/content/Intent; +HPLandroid/content/pm/ShortcutInfo;->setIntents([Landroid/content/Intent;)V +HPLandroid/content/pm/ShortcutInfo;->setRank(I)V +HPLandroid/content/pm/ShortcutInfo;->setReturnedByServer()V +HPLandroid/content/pm/ShortcutInfo;->setTimestamp(J)V +HPLandroid/content/pm/ShortcutManager;->reportShortcutUsed(Ljava/lang/String;)V +HPLandroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;->onShortcutChanged(Ljava/lang/String;I)V +HPLandroid/content/pm/ShortcutServiceInternal;->()V +HPLandroid/content/pm/ShortcutServiceInternal;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V +HPLandroid/content/pm/ShortcutServiceInternal;->createShortcutIntents(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)[Landroid/content/Intent; +HPLandroid/content/pm/ShortcutServiceInternal;->getShortcutIconFd(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor; +HPLandroid/content/pm/ShortcutServiceInternal;->getShortcutIconResId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I +HPLandroid/content/pm/ShortcutServiceInternal;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List; +HPLandroid/content/pm/ShortcutServiceInternal;->hasShortcutHostPermission(ILjava/lang/String;)Z +HPLandroid/content/pm/ShortcutServiceInternal;->isPinnedByCaller(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Z +HPLandroid/content/pm/ShortcutServiceInternal;->isRequestPinItemSupported(II)Z +HPLandroid/content/pm/ShortcutServiceInternal;->pinShortcuts(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;I)V +HPLandroid/content/pm/ShortcutServiceInternal;->requestPinAppWidget(Ljava/lang/String;Landroid/appwidget/AppWidgetProviderInfo;Landroid/os/Bundle;Landroid/content/IntentSender;I)Z +HPLandroid/content/pm/Signature;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/StringParceledListSlice$1;->()V +HPLandroid/content/pm/StringParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/StringParceledListSlice; +HPLandroid/content/pm/StringParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/pm/StringParceledListSlice;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HPLandroid/content/pm/StringParceledListSlice;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;Landroid/content/pm/StringParceledListSlice;)V +HPLandroid/content/pm/StringParceledListSlice;->getList()Ljava/util/List; +HPLandroid/content/pm/UserInfo;->isDemo()Z +HPLandroid/content/pm/UserInfo;->isInitialized()Z +HPLandroid/content/pm/UserInfo;->isPrimary()Z +HPLandroid/content/pm/UserInfo;->isQuietModeEnabled()Z +HPLandroid/content/pm/UserInfo;->isSystemOnly()Z +HPLandroid/content/pm/UserInfo;->isSystemOnly(I)Z +HPLandroid/content/pm/UserInfo;->toString()Ljava/lang/String; +HPLandroid/content/pm/UserInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/pm/split/DefaultSplitAssetLoader;->(Landroid/content/pm/PackageParser$PackageLite;I)V +HPLandroid/content/pm/split/DefaultSplitAssetLoader;->close()V +HPLandroid/content/pm/split/DefaultSplitAssetLoader;->getBaseAssetManager()Landroid/content/res/AssetManager; +HPLandroid/content/pm/split/DefaultSplitAssetLoader;->loadApkIntoAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;I)V +HPLandroid/content/pm/split/SplitAssetLoader;->getBaseAssetManager()Landroid/content/res/AssetManager; +HPLandroid/content/pm/split/SplitAssetLoader;->getSplitAssetManager(I)Landroid/content/res/AssetManager; +HPLandroid/content/res/AssetFileDescriptor$AutoCloseInputStream;->(Landroid/content/res/AssetFileDescriptor;)V +HPLandroid/content/res/AssetFileDescriptor;->createInputStream()Ljava/io/FileInputStream; +HPLandroid/content/res/AssetFileDescriptor;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/res/AssetManager;->close()V +HPLandroid/content/res/AssetManager;->openXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser; +HPLandroid/content/res/ColorStateList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/ColorStateList; +HPLandroid/content/res/ColorStateList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/content/res/ColorStateList$ColorStateListFactory;->getChangingConfigurations()I +HPLandroid/content/res/ColorStateList;->-get0(Landroid/content/res/ColorStateList;)I +HPLandroid/content/res/ColorStateList;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/res/CompatibilityInfo;->(Landroid/content/pm/ApplicationInfo;IIZ)V +HPLandroid/content/res/CompatibilityInfo;->alwaysSupportsScreen()Z +HPLandroid/content/res/CompatibilityInfo;->computeCompatibleScaling(Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;)F +HPLandroid/content/res/CompatibilityInfo;->neverSupportsScreen()Z +HPLandroid/content/res/CompatibilityInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/content/res/Configuration;->readXmlAttrs(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Configuration;)V +HPLandroid/content/res/Configuration;->reduceScreenLayout(III)I +HPLandroid/content/res/Configuration;->resetScreenLayout(I)I +HPLandroid/content/res/Configuration;->toString()Ljava/lang/String; +HPLandroid/content/res/Configuration;->writeXmlAttrs(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/res/Configuration;)V +HPLandroid/content/res/ConfigurationBoundResourceCache;->shouldInvalidateEntry(Landroid/content/res/ConstantState;I)Z +HPLandroid/content/res/ConfigurationBoundResourceCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z +HPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z +HPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z +HPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I +HPLandroid/content/res/Resources$Theme;->rebase()V +HPLandroid/content/res/Resources;->flushLayoutCache()V +HPLandroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String; +HPLandroid/content/res/Resources;->getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/content/res/Resources;->parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V +HPLandroid/content/res/ResourcesImpl$ThemeImpl;->-get0(Landroid/content/res/ResourcesImpl$ThemeImpl;)Landroid/content/res/Resources$ThemeKey; +HPLandroid/content/res/ResourcesImpl$ThemeImpl;->getChangingConfigurations()I +HPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase()V +HPLandroid/content/res/ResourcesImpl;->newThemeImpl(Landroid/content/res/Resources$ThemeKey;)Landroid/content/res/ResourcesImpl$ThemeImpl; +HPLandroid/content/res/StringBlock$StyleIDs;->-get0(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get1(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get10(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get2(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get3(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get4(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get5(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get6(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get7(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get8(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-get9(Landroid/content/res/StringBlock$StyleIDs;)I +HPLandroid/content/res/StringBlock$StyleIDs;->-set10(Landroid/content/res/StringBlock$StyleIDs;I)I +HPLandroid/content/res/StringBlock$StyleIDs;->()V +HPLandroid/content/res/StringBlock;->applyStyles(Ljava/lang/String;[ILandroid/content/res/StringBlock$StyleIDs;)Ljava/lang/CharSequence; +HPLandroid/content/res/ThemedResourceCache;->pruneEntryLocked(Ljava/lang/Object;I)Z +HPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String; +HPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String; +HPLandroid/content/res/XmlBlock$Parser;->getAttributeFloatValue(IF)F +HPLandroid/content/res/XmlBlock$Parser;->getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F +HPLandroid/content/res/XmlBlock$Parser;->getAttributeIntValue(II)I +HPLandroid/content/res/XmlBlock$Parser;->getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I +HPLandroid/content/res/XmlBlock$Parser;->getIdAttributeResourceValue(I)I +HPLandroid/content/res/XmlBlock$Parser;->nextTag()I +HPLandroid/database/AbstractCursor;->getExtras()Landroid/os/Bundle; +HPLandroid/database/AbstractCursor;->isBeforeFirst()Z +HPLandroid/database/AbstractCursor;->moveToPrevious()Z +HPLandroid/database/AbstractWindowedCursor;->getType(I)I +HPLandroid/database/CrossProcessCursorWrapper;->fillWindow(ILandroid/database/CursorWindow;)V +HPLandroid/database/CrossProcessCursorWrapper;->getWindow()Landroid/database/CursorWindow; +HPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->onChange(ZLandroid/net/Uri;)V +HPLandroid/database/CursorToBulkCursorAdaptor;->binderDied()V +HPLandroid/database/CursorToBulkCursorAdaptor;->getExtras()Landroid/os/Bundle; +HPLandroid/database/CursorWindow;->(Z)V +HPLandroid/database/CursorWindow;->isNull(II)Z +HPLandroid/database/CursorWindow;->putDouble(DII)Z +HPLandroid/database/CursorWrapper;->getDouble(I)D +HPLandroid/database/CursorWrapper;->getType(I)I +HPLandroid/database/CursorWrapper;->getWantsAllOnMoveCalls()Z +HPLandroid/database/CursorWrapper;->isBeforeFirst()Z +HPLandroid/database/CursorWrapper;->moveToLast()Z +HPLandroid/database/CursorWrapper;->moveToPrevious()Z +HPLandroid/database/CursorWrapper;->respond(Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/database/DatabaseUtils;->appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V +HPLandroid/database/DatabaseUtils;->appendValueToSql(Ljava/lang/StringBuilder;Ljava/lang/Object;)V +HPLandroid/database/DatabaseUtils;->concatenateWhere(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/database/DatabaseUtils;->cursorRowToContentValues(Landroid/database/Cursor;Landroid/content/ContentValues;)V +HPLandroid/database/DatabaseUtils;->readExceptionFromParcel(Landroid/os/Parcel;Ljava/lang/String;I)V +HPLandroid/database/DatabaseUtils;->sqlEscapeString(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String; +HPLandroid/database/IContentObserver$Stub$Proxy;->onChange(ZLandroid/net/Uri;I)V +HPLandroid/database/sqlite/SQLiteConnection$OperationLog;->failOperation(ILjava/lang/Exception;)V +HPLandroid/database/sqlite/SQLiteConnection;->collectDbStatsUnsafe(Ljava/util/ArrayList;)V +HPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/database/sqlite/SQLiteConnectionPool;->-get1(Landroid/database/sqlite/SQLiteConnectionPool;)Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler; +HPLandroid/database/sqlite/SQLiteConnectionPool;->-get2(Landroid/database/sqlite/SQLiteConnectionPool;)Ljava/lang/Object; +HPLandroid/database/sqlite/SQLiteConnectionPool;->-wrap0(Landroid/database/sqlite/SQLiteConnectionPool;I)Z +HPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableConnectionLocked(I)Z +HPLandroid/database/sqlite/SQLiteConnectionPool;->discardAcquiredConnectionsLocked()V +HPLandroid/database/sqlite/SQLiteConstraintException;->(Ljava/lang/String;)V +HPLandroid/database/sqlite/SQLiteCursor;->(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V +HPLandroid/database/sqlite/SQLiteCursor;->setSelectionArguments([Ljava/lang/String;)V +HPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V +HPLandroid/database/sqlite/SQLiteDatabase;->enableWriteAheadLogging()Z +HPLandroid/database/sqlite/SQLiteDatabase;->getLabel()Ljava/lang/String; +HPLandroid/database/sqlite/SQLiteDatabase;->insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J +HPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HPLandroid/database/sqlite/SQLiteDatabase;->rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HPLandroid/database/sqlite/SQLiteDatabase;->replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J +HPLandroid/database/sqlite/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V +HPLandroid/database/sqlite/SQLiteDatabase;->setPageSize(J)V +HPLandroid/database/sqlite/SQLiteDirectCursorDriver;->setBindArguments([Ljava/lang/String;)V +HPLandroid/database/sqlite/SQLiteProgram;->bindBlob(I[B)V +HPLandroid/database/sqlite/SQLiteProgram;->bindNull(I)V +HPLandroid/database/sqlite/SQLiteQueryBuilder;->buildUnionQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/database/sqlite/SQLiteSession;->executeForString(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Ljava/lang/String; +HPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/String; +HPLandroid/ddm/DdmHandleHeap;->handleHPGC(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HPLandroid/drm/DrmManagerClient$EventHandler;->(Landroid/drm/DrmManagerClient;Landroid/os/Looper;)V +HPLandroid/drm/DrmManagerClient$InfoHandler;->(Landroid/drm/DrmManagerClient;Landroid/os/Looper;)V +HPLandroid/drm/DrmManagerClient$OnErrorListener;->onError(Landroid/drm/DrmManagerClient;Landroid/drm/DrmErrorEvent;)V +HPLandroid/drm/DrmManagerClient$OnEventListener;->onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;)V +HPLandroid/drm/DrmManagerClient$OnInfoListener;->onInfo(Landroid/drm/DrmManagerClient;Landroid/drm/DrmInfoEvent;)V +HPLandroid/drm/DrmManagerClient;->(Landroid/content/Context;)V +HPLandroid/drm/DrmManagerClient;->canHandle(Landroid/net/Uri;Ljava/lang/String;)Z +HPLandroid/drm/DrmManagerClient;->canHandle(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/drm/DrmManagerClient;->convertUriToPath(Landroid/net/Uri;)Ljava/lang/String; +HPLandroid/drm/DrmManagerClient;->createEventThreads()V +HPLandroid/drm/DrmManagerClient;->createListeners()V +HPLandroid/drm/DrmManagerClient;->setOnErrorListener(Landroid/drm/DrmManagerClient$OnErrorListener;)V +HPLandroid/drm/DrmManagerClient;->setOnEventListener(Landroid/drm/DrmManagerClient$OnEventListener;)V +HPLandroid/drm/DrmManagerClient;->setOnInfoListener(Landroid/drm/DrmManagerClient$OnInfoListener;)V +HPLandroid/graphics/BaseCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HPLandroid/graphics/BaseCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V +HPLandroid/graphics/Bitmap$CompressFormat;->valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$CompressFormat; +HPLandroid/graphics/Bitmap$CompressFormat;->values()[Landroid/graphics/Bitmap$CompressFormat; +HPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap; +HPLandroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer; +HPLandroid/graphics/Bitmap;->createHardwareBitmap(Landroid/graphics/GraphicBuffer;)Landroid/graphics/Bitmap; +HPLandroid/graphics/Bitmap;->reconfigure(IILandroid/graphics/Bitmap$Config;)V +HPLandroid/graphics/Bitmap;->sameAs(Landroid/graphics/Bitmap;)Z +HPLandroid/graphics/BitmapFactory;->decodeByteArray([BII)Landroid/graphics/Bitmap; +HPLandroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap; +HPLandroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap; +HPLandroid/graphics/Canvas;->clipOutPath(Landroid/graphics/Path;)Z +HPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/RectF;)Z +HPLandroid/graphics/Canvas;->drawPicture(Landroid/graphics/Picture;)V +HPLandroid/graphics/Canvas;->drawPicture(Landroid/graphics/Picture;Landroid/graphics/Rect;)V +HPLandroid/graphics/Canvas;->drawPicture(Landroid/graphics/Picture;Landroid/graphics/RectF;)V +HPLandroid/graphics/Canvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HPLandroid/graphics/Canvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V +HPLandroid/graphics/Canvas;->freeTextLayoutCaches()V +HPLandroid/graphics/Canvas;->getClipBounds()Landroid/graphics/Rect; +HPLandroid/graphics/Canvas;->isOpaque()Z +HPLandroid/graphics/Canvas;->saveLayer(FFFFLandroid/graphics/Paint;I)I +HPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFI)I +HPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFII)I +HPLandroid/graphics/Canvas;->saveLayerAlpha(Landroid/graphics/RectF;II)I +HPLandroid/graphics/Canvas;->setDensity(I)V +HPLandroid/graphics/Canvas;->setMatrix(Landroid/graphics/Matrix;)V +HPLandroid/graphics/Canvas;->setScreenDensity(I)V +HPLandroid/graphics/CanvasProperty;->(J)V +HPLandroid/graphics/CanvasProperty;->createFloat(F)Landroid/graphics/CanvasProperty; +HPLandroid/graphics/CanvasProperty;->createPaint(Landroid/graphics/Paint;)Landroid/graphics/CanvasProperty; +HPLandroid/graphics/CanvasProperty;->getNativeContainer()J +HPLandroid/graphics/ColorMatrix;->getArray()[F +HPLandroid/graphics/ColorMatrix;->setSaturation(F)V +HPLandroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J +HPLandroid/graphics/CornerPathEffect;->(F)V +HPLandroid/graphics/FontFamily;->finalize()V +HPLandroid/graphics/GraphicBuffer$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/GraphicBuffer; +HPLandroid/graphics/GraphicBuffer$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/graphics/GraphicBuffer;->-wrap0(Landroid/os/Parcel;)J +HPLandroid/graphics/GraphicBuffer;->(IIIIJ)V +HPLandroid/graphics/GraphicBuffer;->(IIIIJLandroid/graphics/GraphicBuffer;)V +HPLandroid/graphics/GraphicBuffer;->createFromExisting(IIIIJ)Landroid/graphics/GraphicBuffer; +HPLandroid/graphics/GraphicBuffer;->finalize()V +HPLandroid/graphics/GraphicBuffer;->getFormat()I +HPLandroid/graphics/GraphicBuffer;->getHeight()I +HPLandroid/graphics/GraphicBuffer;->getWidth()I +HPLandroid/graphics/GraphicBuffer;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/graphics/Interpolator;->finalize()V +HPLandroid/graphics/LeakyTypefaceStorage;->readTypefaceFromParcel(Landroid/os/Parcel;)Landroid/graphics/Typeface; +HPLandroid/graphics/MaskFilter;->finalize()V +HPLandroid/graphics/Matrix;->getValues([F)V +HPLandroid/graphics/Matrix;->postConcat(Landroid/graphics/Matrix;)Z +HPLandroid/graphics/Matrix;->postRotate(F)Z +HPLandroid/graphics/Matrix;->setConcat(Landroid/graphics/Matrix;Landroid/graphics/Matrix;)Z +HPLandroid/graphics/Matrix;->setRotate(FFF)V +HPLandroid/graphics/Matrix;->setValues([F)V +HPLandroid/graphics/Paint;->clearShadowLayer()V +HPLandroid/graphics/Paint;->getFontSpacing()F +HPLandroid/graphics/Paint;->getUnderlinePosition()F +HPLandroid/graphics/Paint;->getUnderlineThickness()F +HPLandroid/graphics/Paint;->measureText(Ljava/lang/CharSequence;II)F +HPLandroid/graphics/Paint;->measureText([CII)F +HPLandroid/graphics/Paint;->reset()V +HPLandroid/graphics/Paint;->setElegantTextHeight(Z)V +HPLandroid/graphics/Path$Op;->(Ljava/lang/String;I)V +HPLandroid/graphics/Path;->addOval(FFFFLandroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->arcTo(FFFFFFZ)V +HPLandroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FF)V +HPLandroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FFZ)V +HPLandroid/graphics/Path;->detectSimplePath(FFFFLandroid/graphics/Path$Direction;)V +HPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HPLandroid/graphics/Path;->rMoveTo(FF)V +HPLandroid/graphics/Path;->transform(Landroid/graphics/Matrix;)V +HPLandroid/graphics/PathEffect;->()V +HPLandroid/graphics/Picture;->draw(Landroid/graphics/Canvas;)V +HPLandroid/graphics/Picture;->finalize()V +HPLandroid/graphics/Picture;->getHeight()I +HPLandroid/graphics/Picture;->getWidth()I +HPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Point; +HPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/graphics/Point;->(Landroid/graphics/Point;)V +HPLandroid/graphics/Point;->offset(II)V +HPLandroid/graphics/Point;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/graphics/PorterDuff$Mode;->valueOf(Ljava/lang/String;)Landroid/graphics/PorterDuff$Mode; +HPLandroid/graphics/PorterDuff$Mode;->values()[Landroid/graphics/PorterDuff$Mode; +HPLandroid/graphics/RadialGradient;->createNativeInstance(J)J +HPLandroid/graphics/Rect$UnflattenHelper;->getMatcher(Ljava/lang/String;)Ljava/util/regex/Matcher; +HPLandroid/graphics/Rect;->flattenToString()Ljava/lang/String; +HPLandroid/graphics/Rect;->inset(IIII)V +HPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLandroid/graphics/Rect;->toShortString()Ljava/lang/String; +HPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String; +HPLandroid/graphics/Rect;->unflattenFromString(Ljava/lang/String;)Landroid/graphics/Rect; +HPLandroid/graphics/RectF;->(Landroid/graphics/RectF;)V +HPLandroid/graphics/RectF;->offsetTo(FF)V +HPLandroid/graphics/Region;->getBounds(Landroid/graphics/Rect;)Z +HPLandroid/graphics/Region;->obtain()Landroid/graphics/Region; +HPLandroid/graphics/Region;->op(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Region;->op(Landroid/graphics/Rect;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Region;->op(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Region;->op(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z +HPLandroid/graphics/Region;->set(Landroid/graphics/Rect;)Z +HPLandroid/graphics/Region;->translate(II)V +HPLandroid/graphics/Region;->union(Landroid/graphics/Rect;)Z +HPLandroid/graphics/SurfaceTexture;->(I)V +HPLandroid/graphics/SurfaceTexture;->(IZ)V +HPLandroid/graphics/SurfaceTexture;->finalize()V +HPLandroid/graphics/SurfaceTexture;->isSingleBuffered()Z +HPLandroid/graphics/SurfaceTexture;->release()V +HPLandroid/graphics/SurfaceTexture;->setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V +HPLandroid/graphics/TableMaskFilter;->(J)V +HPLandroid/graphics/TableMaskFilter;->CreateClipTable(II)Landroid/graphics/TableMaskFilter; +HPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; +HPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->(Landroid/graphics/drawable/AnimationDrawable;ZZ)V +HPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->start()V +HPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;->stop()V +HPLandroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->(Landroid/graphics/drawable/AnimationDrawable;Z)V +HPLandroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->getInterpolation(F)F +HPLandroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->getTotalDuration()I +HPLandroid/graphics/drawable/AnimatedStateListDrawable$FrameInterpolator;->updateFrames(Landroid/graphics/drawable/AnimationDrawable;Z)I +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->-get0(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)Landroid/animation/Animator$AnimatorListener; +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->-wrap0(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isRunning()Z +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->resume()V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->transferPendingActions(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->(Landroid/graphics/drawable/AnimatedVectorDrawable;)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->init(Landroid/animation/AnimatorSet;)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->invalidateOwningView()V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->isInfinite()Z +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->onDraw(Landroid/graphics/Canvas;)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;->start()V +HPLandroid/graphics/drawable/AnimatedVectorDrawable;->fallbackOntoUI()V +HPLandroid/graphics/drawable/AnimatedVectorDrawable;->forceAnimationOnUI()V +HPLandroid/graphics/drawable/AnimatedVectorDrawable;->setHotspot(FF)V +HPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->-get0(Landroid/graphics/drawable/AnimationDrawable$AnimationState;)[I +HPLandroid/graphics/drawable/AnimationDrawable;->addFrame(Landroid/graphics/drawable/Drawable;I)V +HPLandroid/graphics/drawable/AnimationDrawable;->getDuration(I)I +HPLandroid/graphics/drawable/AnimationDrawable;->getFrame(I)Landroid/graphics/drawable/Drawable; +HPLandroid/graphics/drawable/AnimationDrawable;->getNumberOfFrames()I +HPLandroid/graphics/drawable/AnimationDrawable;->isRunning()Z +HPLandroid/graphics/drawable/AnimationDrawable;->nextFrame(Z)V +HPLandroid/graphics/drawable/AnimationDrawable;->run()V +HPLandroid/graphics/drawable/AnimationDrawable;->setOneShot(Z)V +HPLandroid/graphics/drawable/AnimationDrawable;->start()V +HPLandroid/graphics/drawable/AnimationDrawable;->stop()V +HPLandroid/graphics/drawable/ClipDrawable$ClipState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HPLandroid/graphics/drawable/ClipDrawable;->(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;Landroid/graphics/drawable/ClipDrawable;)V +HPLandroid/graphics/drawable/ColorDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HPLandroid/graphics/drawable/Drawable;->copyBounds()Landroid/graphics/Rect; +HPLandroid/graphics/drawable/Drawable;->hasFocusStateSpecified()Z +HPLandroid/graphics/drawable/DrawableContainer$1;->run()V +HPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V +HPLandroid/graphics/drawable/DrawableContainer;->onLevelChange(I)Z +HPLandroid/graphics/drawable/DrawableContainer;->setColorFilter(Landroid/graphics/ColorFilter;)V +HPLandroid/graphics/drawable/DrawableContainer;->setCurrentIndex(I)V +HPLandroid/graphics/drawable/DrawableContainer;->setEnterFadeDuration(I)V +HPLandroid/graphics/drawable/DrawableContainer;->setExitFadeDuration(I)V +HPLandroid/graphics/drawable/DrawableContainer;->setHotspot(FF)V +HPLandroid/graphics/drawable/DrawableContainer;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V +HPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V +HPLandroid/graphics/drawable/GradientDrawable$GradientState;->setGradientRadius(FI)V +HPLandroid/graphics/drawable/GradientDrawable$GradientState;->setGradientType(I)V +HPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V +HPLandroid/graphics/drawable/GradientDrawable;->buildRing(Landroid/graphics/drawable/GradientDrawable$GradientState;)Landroid/graphics/Path; +HPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter; +HPLandroid/graphics/drawable/GradientDrawable;->onLevelChange(I)Z +HPLandroid/graphics/drawable/GradientDrawable;->setGradientRadius(F)V +HPLandroid/graphics/drawable/GradientDrawable;->setGradientType(I)V +HPLandroid/graphics/drawable/Icon;->createFromStream(Ljava/io/InputStream;)Landroid/graphics/drawable/Icon; +HPLandroid/graphics/drawable/Icon;->sameAs(Landroid/graphics/drawable/Icon;)Z +HPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(II)V +HPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; +HPLandroid/graphics/drawable/Icon;->writeToStream(Ljava/io/OutputStream;)V +HPLandroid/graphics/drawable/LayerDrawable;->setAlpha(I)V +HPLandroid/graphics/drawable/LayerDrawable;->setHotspot(FF)V +HPLandroid/graphics/drawable/LayerDrawable;->setId(II)V +HPLandroid/graphics/drawable/LayerDrawable;->setLayerGravity(II)V +HPLandroid/graphics/drawable/LayerDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HPLandroid/graphics/drawable/LevelListDrawable$LevelListState;->(Landroid/graphics/drawable/LevelListDrawable$LevelListState;Landroid/graphics/drawable/LevelListDrawable;Landroid/content/res/Resources;)V +HPLandroid/graphics/drawable/LevelListDrawable$LevelListState;->addLevel(IILandroid/graphics/drawable/Drawable;)V +HPLandroid/graphics/drawable/LevelListDrawable$LevelListState;->indexOfLevel(I)I +HPLandroid/graphics/drawable/LevelListDrawable;->()V +HPLandroid/graphics/drawable/LevelListDrawable;->(Landroid/graphics/drawable/LevelListDrawable$LevelListState;Landroid/content/res/Resources;)V +HPLandroid/graphics/drawable/LevelListDrawable;->addLevel(IILandroid/graphics/drawable/Drawable;)V +HPLandroid/graphics/drawable/LevelListDrawable;->onLevelChange(I)Z +HPLandroid/graphics/drawable/LevelListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HPLandroid/graphics/drawable/NinePatchDrawable;->getAlpha()I +HPLandroid/graphics/drawable/RippleBackground;->createHardwareExit(Landroid/graphics/Paint;)Landroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet; +HPLandroid/graphics/drawable/RippleBackground;->drawHardware(Landroid/view/DisplayListCanvas;)Z +HPLandroid/graphics/drawable/RippleBackground;->drawSoftware(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Z +HPLandroid/graphics/drawable/RippleBackground;->jumpValuesToExit()V +HPLandroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet;->()V +HPLandroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet;->add(Landroid/view/RenderNodeAnimator;)V +HPLandroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet;->end()V +HPLandroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet;->isRunning()Z +HPLandroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet;->start(Landroid/view/DisplayListCanvas;)V +HPLandroid/graphics/drawable/RippleComponent;->getBounds(Landroid/graphics/Rect;)V +HPLandroid/graphics/drawable/RippleComponent;->onBoundsChange()V +HPLandroid/graphics/drawable/RippleComponent;->onHotspotBoundsChanged()V +HPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable()Landroid/graphics/drawable/Drawable; +HPLandroid/graphics/drawable/RippleDrawable;->drawMask(Landroid/graphics/Canvas;)V +HPLandroid/graphics/drawable/RippleDrawable;->hasFocusStateSpecified()Z +HPLandroid/graphics/drawable/RippleDrawable;->tryRippleExit()V +HPLandroid/graphics/drawable/RippleForeground$1;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/graphics/drawable/RippleForeground$2;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float; +HPLandroid/graphics/drawable/RippleForeground$2;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/graphics/drawable/RippleForeground$2;->setValue(Landroid/graphics/drawable/RippleForeground;F)V +HPLandroid/graphics/drawable/RippleForeground$2;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/RippleForeground$3;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float; +HPLandroid/graphics/drawable/RippleForeground$3;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/graphics/drawable/RippleForeground$3;->setValue(Landroid/graphics/drawable/RippleForeground;F)V +HPLandroid/graphics/drawable/RippleForeground$3;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/RippleForeground$4;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float; +HPLandroid/graphics/drawable/RippleForeground$4;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/graphics/drawable/RippleForeground$4;->setValue(Landroid/graphics/drawable/RippleForeground;F)V +HPLandroid/graphics/drawable/RippleForeground$4;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/RippleForeground$LogDecelerateInterpolator;->getInterpolation(F)F +HPLandroid/graphics/drawable/RippleForeground;->-get0(Landroid/graphics/drawable/RippleForeground;)F +HPLandroid/graphics/drawable/RippleForeground;->-get1(Landroid/graphics/drawable/RippleForeground;)F +HPLandroid/graphics/drawable/RippleForeground;->-get2(Landroid/graphics/drawable/RippleForeground;)F +HPLandroid/graphics/drawable/RippleForeground;->-set0(Landroid/graphics/drawable/RippleForeground;Z)Z +HPLandroid/graphics/drawable/RippleForeground;->-set1(Landroid/graphics/drawable/RippleForeground;F)F +HPLandroid/graphics/drawable/RippleForeground;->-set2(Landroid/graphics/drawable/RippleForeground;F)F +HPLandroid/graphics/drawable/RippleForeground;->-set3(Landroid/graphics/drawable/RippleForeground;F)F +HPLandroid/graphics/drawable/RippleForeground;->-set4(Landroid/graphics/drawable/RippleForeground;F)F +HPLandroid/graphics/drawable/RippleForeground;->computeBoundedTargetValues()V +HPLandroid/graphics/drawable/RippleForeground;->createHardwareExit(Landroid/graphics/Paint;)Landroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet; +HPLandroid/graphics/drawable/RippleForeground;->createSoftwareExit()Landroid/animation/Animator; +HPLandroid/graphics/drawable/RippleForeground;->drawHardware(Landroid/view/DisplayListCanvas;)Z +HPLandroid/graphics/drawable/RippleForeground;->getBounds(Landroid/graphics/Rect;)V +HPLandroid/graphics/drawable/RippleForeground;->getCurrentX()F +HPLandroid/graphics/drawable/RippleForeground;->getCurrentY()F +HPLandroid/graphics/drawable/RippleForeground;->getOpacityExitDuration()I +HPLandroid/graphics/drawable/RippleForeground;->getRadiusExitDuration()I +HPLandroid/graphics/drawable/RippleForeground;->hasFinishedExit()Z +HPLandroid/graphics/drawable/RippleForeground;->jumpValuesToExit()V +HPLandroid/graphics/drawable/RippleForeground;->move(FF)V +HPLandroid/graphics/drawable/RotateDrawable;->onLevelChange(I)Z +HPLandroid/graphics/drawable/ScaleDrawable;->draw(Landroid/graphics/Canvas;)V +HPLandroid/graphics/drawable/ScaleDrawable;->onLevelChange(I)Z +HPLandroid/graphics/drawable/StateListDrawable$StateListState;->newDrawable()Landroid/graphics/drawable/Drawable; +HPLandroid/graphics/drawable/TransitionDrawable;->(Landroid/graphics/drawable/TransitionDrawable$TransitionState;[Landroid/graphics/drawable/Drawable;)V +HPLandroid/graphics/drawable/TransitionDrawable;->([Landroid/graphics/drawable/Drawable;)V +HPLandroid/graphics/drawable/TransitionDrawable;->setCrossFadeEnabled(Z)V +HPLandroid/graphics/drawable/TransitionDrawable;->startTransition(I)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$8;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup$8;->setValue(Ljava/lang/Object;F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup;->setRotation(F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateX(F)V +HPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateY(F)V +HPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getProperty(Ljava/lang/String;)Landroid/util/Property; +HPLandroid/graphics/drawable/VectorDrawable;->-wrap36(JF)V +HPLandroid/graphics/drawable/VectorDrawable;->-wrap42(JF)V +HPLandroid/graphics/drawable/VectorDrawable;->-wrap43(JF)V +HPLandroid/graphics/drawable/VectorDrawable;->getOpticalInsets()Landroid/graphics/Insets; +HPLandroid/hardware/GeomagneticField;->getHorizontalStrength()F +HPLandroid/hardware/GeomagneticField;->getInclination()F +HPLandroid/hardware/ICameraService$Stub$Proxy;->notifySystemEvent(I[I)V +HPLandroid/hardware/ICameraServiceProxy$Stub;->()V +HPLandroid/hardware/ICameraServiceProxy$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/ICameraServiceProxy;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;)V +HPLandroid/hardware/ICameraServiceProxy;->pingForUserUpdate()V +HPLandroid/hardware/IConsumerIrService$Stub;->()V +HPLandroid/hardware/ISerialManager$Stub;->()V +HPLandroid/hardware/Sensor;->getFifoMaxEventCount()I +HPLandroid/hardware/Sensor;->getMaximumRange()F +HPLandroid/hardware/SensorAdditionalInfo;->(Landroid/hardware/Sensor;II[I[F)V +HPLandroid/hardware/SensorAdditionalInfo;->createLocalGeomagneticField(FFF)Landroid/hardware/SensorAdditionalInfo; +HPLandroid/hardware/SensorManager;->getDefaultSensor(IZ)Landroid/hardware/Sensor; +HPLandroid/hardware/SensorManager;->requestTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z +HPLandroid/hardware/SensorManager;->setOperationParameter(Landroid/hardware/SensorAdditionalInfo;)Z +HPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->(Landroid/hardware/TriggerEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V +HPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V +HPLandroid/hardware/SystemSensorManager;->requestTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z +HPLandroid/hardware/SystemSensorManager;->setOperationParameterImpl(Landroid/hardware/SensorAdditionalInfo;)Z +HPLandroid/hardware/TriggerEvent;->(I)V +HPLandroid/hardware/TriggerEventListener;->()V +HPLandroid/hardware/TriggerEventListener;->onTrigger(Landroid/hardware/TriggerEvent;)V +HPLandroid/hardware/camera2/CameraAccessException;->(ILjava/lang/String;Ljava/lang/Throwable;)V +HPLandroid/hardware/camera2/CameraAccessException;->getCombinedMessage(ILjava/lang/String;)Ljava/lang/String; +HPLandroid/hardware/camera2/CameraAccessException;->getProblemString(I)Ljava/lang/String; +HPLandroid/hardware/camera2/CameraDevice$StateCallback;->onClosed(Landroid/hardware/camera2/CameraDevice;)V +HPLandroid/hardware/camera2/CameraManager$AvailabilityCallback;->onCameraAvailable(Ljava/lang/String;)V +HPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$4;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$TorchCallback;Ljava/lang/String;)V +HPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$4;->run()V +HPLandroid/hardware/camera2/CameraManager;->throwAsPublicException(Ljava/lang/Throwable;)V +HPLandroid/hardware/camera2/CaptureRequest;->containsTarget(Landroid/view/Surface;)Z +HPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->disconnect()V +HPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureBufferLost(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/view/Surface;J)V +HPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureSequenceAborted(Landroid/hardware/camera2/CameraDevice;I)V +HPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureBufferLost(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/view/Surface;J)V +HPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureSequenceAborted(Landroid/hardware/camera2/CameraDevice;I)V +HPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->finalize()V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$5;->run()V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$9;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;ILandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;)V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$9;->run()V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$5;->(Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;Landroid/hardware/camera2/CaptureRequest;Landroid/view/Surface;J)V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$5;->run()V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onCaptureErrorLocked(ILandroid/hardware/camera2/impl/CaptureResultExtras;)V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onDeviceError(ILandroid/hardware/camera2/impl/CaptureResultExtras;)V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get4(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/util/SparseArray; +HPLandroid/hardware/camera2/impl/CameraDeviceImpl;->close()V +HPLandroid/hardware/camera2/impl/CameraDeviceImpl;->finalize()V +HPLandroid/hardware/camera2/impl/CameraMetadataNative$14;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HPLandroid/hardware/camera2/impl/CameraMetadataNative;->-wrap2(Landroid/hardware/camera2/impl/CameraMetadataNative;)Landroid/hardware/camera2/params/LensShadingMap; +HPLandroid/hardware/camera2/impl/CameraMetadataNative;->getLensShadingMap()Landroid/hardware/camera2/params/LensShadingMap; +HPLandroid/hardware/camera2/impl/CaptureResultExtras;->getErrorStreamId()I +HPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->disconnect()V +HPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)V +HPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;->getNativeSize()I +HPLandroid/hardware/camera2/params/LensShadingMap;->([FII)V +HPLandroid/hardware/camera2/params/LensShadingMap;->getColumnCount()I +HPLandroid/hardware/camera2/params/LensShadingMap;->getGainFactor(III)F +HPLandroid/hardware/camera2/params/LensShadingMap;->getGainFactorCount()I +HPLandroid/hardware/camera2/params/LensShadingMap;->getRowCount()I +HPLandroid/hardware/camera2/params/RggbChannelVector;->getComponent(I)F +HPLandroid/hardware/camera2/utils/TypeReference;->getArrayClass(Ljava/lang/Class;)Ljava/lang/Class; +HPLandroid/hardware/display/DisplayManager;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V +HPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V +HPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V +HPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(II)V +HPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V +HPLandroid/hardware/display/DisplayManagerGlobal;->-wrap0(Landroid/hardware/display/DisplayManagerGlobal;II)V +HPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(II)V +HPLandroid/hardware/display/DisplayManagerGlobal;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V +HPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V +HPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->copyFrom(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V +HPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->equals(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z +HPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->isBrightOrDim()Z +HPLandroid/hardware/display/DisplayViewport;->copyFrom(Landroid/hardware/display/DisplayViewport;)V +HPLandroid/hardware/display/IDisplayManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->onDisplayEvent(II)V +HPLandroid/hardware/display/IDisplayManagerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManagerCallback; +HPLandroid/hardware/display/IDisplayManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/display/WifiDisplaySessionInfo;->()V +HPLandroid/hardware/display/WifiDisplaySessionInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/display/WifiDisplayStatus;->()V +HPLandroid/hardware/display/WifiDisplayStatus;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/fingerprint/IFingerprintService$Stub;->()V +HPLandroid/hardware/fingerprint/IFingerprintService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback; +HPLandroid/hardware/hdmi/HdmiPlaybackClient$DisplayStatusCallback;->onComplete(I)V +HPLandroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->onInputDevicesChanged([I)V +HPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputDevicesChangedListener; +HPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/input/IInputManager$Stub$Proxy;->injectInputEvent(Landroid/view/InputEvent;I)Z +HPLandroid/hardware/input/IInputManager$Stub;->()V +HPLandroid/hardware/input/IInputManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/input/InputDeviceIdentifier;->getDescriptor()Ljava/lang/String; +HPLandroid/hardware/input/InputDeviceIdentifier;->getProductId()I +HPLandroid/hardware/input/InputDeviceIdentifier;->getVendorId()I +HPLandroid/hardware/input/InputManager$InputDeviceListenerDelegate;->handleMessage(Landroid/os/Message;)V +HPLandroid/hardware/input/InputManager$InputDevicesChangedListener;->onInputDevicesChanged([I)V +HPLandroid/hardware/input/InputManager;->-wrap0(Landroid/hardware/input/InputManager;[I)V +HPLandroid/hardware/input/InputManager;->containsDeviceId([II)Z +HPLandroid/hardware/input/InputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z +HPLandroid/hardware/input/InputManager;->onInputDevicesChanged([I)V +HPLandroid/hardware/input/InputManager;->sendMessageToInputDeviceListenersLocked(II)V +HPLandroid/hardware/input/InputManager;->unregisterInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;)V +HPLandroid/hardware/input/InputManagerInternal;->()V +HPLandroid/hardware/input/InputManagerInternal;->injectInputEvent(Landroid/view/InputEvent;II)Z +HPLandroid/hardware/input/InputManagerInternal;->onInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLandroid/hardware/input/InputManagerInternal;->setDisplayViewports(Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;Ljava/util/List;)V +HPLandroid/hardware/input/InputManagerInternal;->setInteractive(Z)V +HPLandroid/hardware/input/InputManagerInternal;->setPulseGestureEnabled(Z)V +HPLandroid/hardware/input/InputManagerInternal;->toggleCapsLock(I)V +HPLandroid/hardware/input/KeyboardLayout$1;->()V +HPLandroid/hardware/input/KeyboardLayout;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/LocaleList;II)V +HPLandroid/hardware/input/KeyboardLayout;->getDescriptor()Ljava/lang/String; +HPLandroid/hardware/input/TouchCalibration;->getAffineTransform()[F +HPLandroid/hardware/location/ActivityRecognitionHardware;->isSupported()Z +HPLandroid/hardware/location/ContextHubInfo$1;->()V +HPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/ContextHubInfo; +HPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/location/ContextHubInfo;->()V +HPLandroid/hardware/location/ContextHubInfo;->(Landroid/os/Parcel;)V +HPLandroid/hardware/location/ContextHubInfo;->(Landroid/os/Parcel;Landroid/hardware/location/ContextHubInfo;)V +HPLandroid/hardware/location/ContextHubInfo;->getId()I +HPLandroid/hardware/location/ContextHubInfo;->getMaxPacketLengthBytes()I +HPLandroid/hardware/location/ContextHubInfo;->getName()Ljava/lang/String; +HPLandroid/hardware/location/ContextHubInfo;->setId(I)V +HPLandroid/hardware/location/ContextHubInfo;->setMaxPacketLenBytes(I)V +HPLandroid/hardware/location/ContextHubInfo;->setMemoryRegions([Landroid/hardware/location/MemoryRegion;)V +HPLandroid/hardware/location/ContextHubInfo;->setName(Ljava/lang/String;)V +HPLandroid/hardware/location/ContextHubInfo;->setPeakMips(F)V +HPLandroid/hardware/location/ContextHubInfo;->setPeakPowerDrawMw(F)V +HPLandroid/hardware/location/ContextHubInfo;->setPlatformVersion(I)V +HPLandroid/hardware/location/ContextHubInfo;->setSleepPowerDrawMw(F)V +HPLandroid/hardware/location/ContextHubInfo;->setStoppedPowerDrawMw(F)V +HPLandroid/hardware/location/ContextHubInfo;->setSupportedSensors([I)V +HPLandroid/hardware/location/ContextHubInfo;->setToolchain(Ljava/lang/String;)V +HPLandroid/hardware/location/ContextHubInfo;->setToolchainVersion(I)V +HPLandroid/hardware/location/ContextHubInfo;->setVendor(Ljava/lang/String;)V +HPLandroid/hardware/location/ContextHubInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/location/ContextHubManager$1;->(Landroid/hardware/location/ContextHubManager;)V +HPLandroid/hardware/location/ContextHubManager$1;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V +HPLandroid/hardware/location/ContextHubManager$ICallback;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V +HPLandroid/hardware/location/ContextHubManager;->-get0(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$Callback; +HPLandroid/hardware/location/ContextHubManager;->-get2(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$ICallback; +HPLandroid/hardware/location/ContextHubManager;->(Landroid/content/Context;Landroid/os/Looper;)V +HPLandroid/hardware/location/ContextHubManager;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HPLandroid/hardware/location/ContextHubManager;->getContextHubHandles()[I +HPLandroid/hardware/location/ContextHubManager;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; +HPLandroid/hardware/location/ContextHubManager;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; +HPLandroid/hardware/location/ContextHubManager;->registerCallback(Landroid/hardware/location/ContextHubManager$ICallback;)I +HPLandroid/hardware/location/ContextHubManager;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I +HPLandroid/hardware/location/ContextHubMessage$1;->()V +HPLandroid/hardware/location/ContextHubMessage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/ContextHubMessage; +HPLandroid/hardware/location/ContextHubMessage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/location/ContextHubMessage;->(II[B)V +HPLandroid/hardware/location/ContextHubMessage;->(Landroid/os/Parcel;)V +HPLandroid/hardware/location/ContextHubMessage;->(Landroid/os/Parcel;Landroid/hardware/location/ContextHubMessage;)V +HPLandroid/hardware/location/ContextHubMessage;->getData()[B +HPLandroid/hardware/location/ContextHubMessage;->getMsgType()I +HPLandroid/hardware/location/ContextHubMessage;->getVersion()I +HPLandroid/hardware/location/ContextHubMessage;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper;->(Landroid/hardware/location/GeofenceHardware;Landroid/hardware/location/GeofenceHardwareMonitorCallback;)V +HPLandroid/hardware/location/GeofenceHardware;->(Landroid/hardware/location/IGeofenceHardware;)V +HPLandroid/hardware/location/GeofenceHardware;->getMonitorCallbackWrapper(Landroid/hardware/location/GeofenceHardwareMonitorCallback;)Landroid/hardware/location/GeofenceHardware$GeofenceHardwareMonitorCallbackWrapper; +HPLandroid/hardware/location/GeofenceHardware;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/GeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/GeofenceHardwareCallback;->()V +HPLandroid/hardware/location/GeofenceHardwareImpl$1;->(Landroid/hardware/location/GeofenceHardwareImpl;)V +HPLandroid/hardware/location/GeofenceHardwareImpl$2;->(Landroid/hardware/location/GeofenceHardwareImpl;)V +HPLandroid/hardware/location/GeofenceHardwareImpl$2;->handleMessage(Landroid/os/Message;)V +HPLandroid/hardware/location/GeofenceHardwareImpl$3;->(Landroid/hardware/location/GeofenceHardwareImpl;)V +HPLandroid/hardware/location/GeofenceHardwareImpl$3;->handleMessage(Landroid/os/Message;)V +HPLandroid/hardware/location/GeofenceHardwareImpl$Reaper;->(Landroid/hardware/location/GeofenceHardwareImpl;Landroid/hardware/location/IGeofenceHardwareMonitorCallback;I)V +HPLandroid/hardware/location/GeofenceHardwareImpl$Reaper;->binderDied()V +HPLandroid/hardware/location/GeofenceHardwareImpl$Reaper;->binderEquals(Landroid/os/IInterface;Landroid/os/IInterface;)Z +HPLandroid/hardware/location/GeofenceHardwareImpl$Reaper;->equals(Ljava/lang/Object;)Z +HPLandroid/hardware/location/GeofenceHardwareImpl;->-get0()Z +HPLandroid/hardware/location/GeofenceHardwareImpl;->-get1(Landroid/hardware/location/GeofenceHardwareImpl;)[Ljava/util/ArrayList; +HPLandroid/hardware/location/GeofenceHardwareImpl;->-get2(Landroid/hardware/location/GeofenceHardwareImpl;)Landroid/os/Handler; +HPLandroid/hardware/location/GeofenceHardwareImpl;->-get5(Landroid/hardware/location/GeofenceHardwareImpl;)Landroid/os/Handler; +HPLandroid/hardware/location/GeofenceHardwareImpl;->-get6(Landroid/hardware/location/GeofenceHardwareImpl;)Ljava/util/ArrayList; +HPLandroid/hardware/location/GeofenceHardwareImpl;->(Landroid/content/Context;)V +HPLandroid/hardware/location/GeofenceHardwareImpl;->getAllowedResolutionLevel(II)I +HPLandroid/hardware/location/GeofenceHardwareImpl;->getInstance(Landroid/content/Context;)Landroid/hardware/location/GeofenceHardwareImpl; +HPLandroid/hardware/location/GeofenceHardwareImpl;->getMonitoringResolutionLevel(I)I +HPLandroid/hardware/location/GeofenceHardwareImpl;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/GeofenceHardwareImpl;->setFusedGeofenceHardware(Landroid/location/IFusedGeofenceHardware;)V +HPLandroid/hardware/location/GeofenceHardwareImpl;->setGpsHardwareGeofence(Landroid/location/IGpsGeofenceHardware;)V +HPLandroid/hardware/location/GeofenceHardwareImpl;->setMonitorAvailability(II)V +HPLandroid/hardware/location/GeofenceHardwareImpl;->updateFusedHardwareAvailability()V +HPLandroid/hardware/location/GeofenceHardwareImpl;->updateGpsHardwareAvailability()V +HPLandroid/hardware/location/GeofenceHardwareMonitorCallback;->()V +HPLandroid/hardware/location/GeofenceHardwareService$1;->(Landroid/hardware/location/GeofenceHardwareService;)V +HPLandroid/hardware/location/GeofenceHardwareService$1;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/GeofenceHardwareService$1;->setFusedGeofenceHardware(Landroid/location/IFusedGeofenceHardware;)V +HPLandroid/hardware/location/GeofenceHardwareService$1;->setGpsGeofenceHardware(Landroid/location/IGpsGeofenceHardware;)V +HPLandroid/hardware/location/GeofenceHardwareService;->-get0(Landroid/hardware/location/GeofenceHardwareService;)Landroid/content/Context; +HPLandroid/hardware/location/GeofenceHardwareService;->-get1(Landroid/hardware/location/GeofenceHardwareService;)Landroid/hardware/location/GeofenceHardwareImpl; +HPLandroid/hardware/location/GeofenceHardwareService;->-wrap0(Landroid/hardware/location/GeofenceHardwareService;III)V +HPLandroid/hardware/location/GeofenceHardwareService;->()V +HPLandroid/hardware/location/GeofenceHardwareService;->checkPermission(III)V +HPLandroid/hardware/location/GeofenceHardwareService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/hardware/location/GeofenceHardwareService;->onCreate()V +HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V +HPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareClient; +HPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V +HPLandroid/hardware/location/IContextHubCallback$Stub;->()V +HPLandroid/hardware/location/IContextHubCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/location/IContextHubCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubCallback; +HPLandroid/hardware/location/IContextHubCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/location/IContextHubCallback;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->getContextHubHandles()[I +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I +HPLandroid/hardware/location/IContextHubService$Stub$Proxy;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I +HPLandroid/hardware/location/IContextHubService$Stub;->()V +HPLandroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService; +HPLandroid/hardware/location/IContextHubService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/location/IGeofenceHardware$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/location/IGeofenceHardware$Stub$Proxy;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/IGeofenceHardware$Stub;->()V +HPLandroid/hardware/location/IGeofenceHardware$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/location/IGeofenceHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardware; +HPLandroid/hardware/location/IGeofenceHardware$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/location/IGeofenceHardware;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z +HPLandroid/hardware/location/IGeofenceHardware;->getMonitoringTypes()[I +HPLandroid/hardware/location/IGeofenceHardware;->getStatusOfMonitoringType(I)I +HPLandroid/hardware/location/IGeofenceHardware;->pauseGeofence(II)Z +HPLandroid/hardware/location/IGeofenceHardware;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/IGeofenceHardware;->removeGeofence(II)Z +HPLandroid/hardware/location/IGeofenceHardware;->resumeGeofence(III)Z +HPLandroid/hardware/location/IGeofenceHardware;->setFusedGeofenceHardware(Landroid/location/IFusedGeofenceHardware;)V +HPLandroid/hardware/location/IGeofenceHardware;->setGpsGeofenceHardware(Landroid/location/IGpsGeofenceHardware;)V +HPLandroid/hardware/location/IGeofenceHardware;->unregisterForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->()V +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardwareMonitorCallback; +HPLandroid/hardware/location/IGeofenceHardwareMonitorCallback;->onMonitoringSystemChange(Landroid/hardware/location/GeofenceHardwareMonitorEvent;)V +HPLandroid/hardware/location/MemoryRegion$1;->()V +HPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Landroid/hardware/location/MemoryRegion; +HPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/hardware/location/NanoAppFilter$1;->()V +HPLandroid/hardware/location/NanoAppFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppFilter; +HPLandroid/hardware/location/NanoAppFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/location/NanoAppFilter;->(JIIJ)V +HPLandroid/hardware/location/NanoAppFilter;->(Landroid/os/Parcel;)V +HPLandroid/hardware/location/NanoAppFilter;->(Landroid/os/Parcel;Landroid/hardware/location/NanoAppFilter;)V +HPLandroid/hardware/location/NanoAppFilter;->testMatch(Landroid/hardware/location/NanoAppInstanceInfo;)Z +HPLandroid/hardware/location/NanoAppFilter;->versionsMatch(III)Z +HPLandroid/hardware/location/NanoAppFilter;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/location/NanoAppInstanceInfo$1;->()V +HPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppInstanceInfo; +HPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/hardware/location/NanoAppInstanceInfo;->()V +HPLandroid/hardware/location/NanoAppInstanceInfo;->(Landroid/os/Parcel;)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->(Landroid/os/Parcel;Landroid/hardware/location/NanoAppInstanceInfo;)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->getAppId()J +HPLandroid/hardware/location/NanoAppInstanceInfo;->getAppVersion()I +HPLandroid/hardware/location/NanoAppInstanceInfo;->setAppId(J)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setAppVersion(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setContexthubId(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setHandle(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setName(Ljava/lang/String;)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setNeededExecMemBytes(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setNeededReadMemBytes(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setNeededWriteMemBytes(I)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->setPublisher(Ljava/lang/String;)V +HPLandroid/hardware/location/NanoAppInstanceInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/radio/V1_0/ActivityStatsInfo;->()V +HPLandroid/hardware/radio/V1_0/ActivityStatsInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/ActivityStatsInfo;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->()V +HPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->toString()Ljava/lang/String; +HPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->writeVectorToParcel(Landroid/os/HwParcel;Ljava/util/ArrayList;)V +HPLandroid/hardware/radio/V1_0/CellIdentityLte;->()V +HPLandroid/hardware/radio/V1_0/CellIdentityLte;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/CellInfo;->()V +HPLandroid/hardware/radio/V1_0/CellInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/CellInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HPLandroid/hardware/radio/V1_0/CellInfoLte;->()V +HPLandroid/hardware/radio/V1_0/CellInfoLte;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;->()V +HPLandroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V +HPLandroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;->writeVectorToParcel(Landroid/os/HwParcel;Ljava/util/ArrayList;)V +HPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getCellInfoList(I)V +HPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getModemActivityInfo(I)V +HPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setCdmaBroadcastConfig(ILjava/util/ArrayList;)V +HPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setGsmBroadcastConfig(ILjava/util/ArrayList;)V +HPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onRecognition(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V +HPLandroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onServiceDied()V +HPLandroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onServiceStateChange(I)V +HPLandroid/hardware/soundtrigger/SoundTrigger$StatusListener;->onSoundModelUpdate(Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;)V +HPLandroid/hardware/usb/IUsbManager$Stub;->()V +HPLandroid/hardware/usb/IUsbManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/hardware/usb/UsbManager;->addFunction(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/hardware/usb/UsbManager;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/hardware/usb/UsbPort$1;->()V +HPLandroid/hardware/usb/UsbPort;->(Ljava/lang/String;I)V +HPLandroid/hardware/usb/UsbPort;->checkRoles(II)V +HPLandroid/hardware/usb/UsbPort;->combineRolesAsBit(II)I +HPLandroid/hardware/usb/UsbPort;->dataRoleToString(I)Ljava/lang/String; +HPLandroid/hardware/usb/UsbPort;->describeContents()I +HPLandroid/hardware/usb/UsbPort;->getSupportedModes()I +HPLandroid/hardware/usb/UsbPort;->isModeSupported(I)Z +HPLandroid/hardware/usb/UsbPort;->modeToString(I)Ljava/lang/String; +HPLandroid/hardware/usb/UsbPort;->powerRoleToString(I)Ljava/lang/String; +HPLandroid/hardware/usb/UsbPort;->roleCombinationsToString(I)Ljava/lang/String; +HPLandroid/hardware/usb/UsbPort;->toString()Ljava/lang/String; +HPLandroid/hardware/usb/UsbPort;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hardware/usb/UsbPortStatus$1;->()V +HPLandroid/hardware/usb/UsbPortStatus;->(IIII)V +HPLandroid/hardware/usb/UsbPortStatus;->describeContents()I +HPLandroid/hardware/usb/UsbPortStatus;->getCurrentDataRole()I +HPLandroid/hardware/usb/UsbPortStatus;->getCurrentMode()I +HPLandroid/hardware/usb/UsbPortStatus;->getCurrentPowerRole()I +HPLandroid/hardware/usb/UsbPortStatus;->getSupportedRoleCombinations()I +HPLandroid/hardware/usb/UsbPortStatus;->isConnected()Z +HPLandroid/hardware/usb/UsbPortStatus;->isRoleCombinationSupported(II)Z +HPLandroid/hardware/usb/UsbPortStatus;->toString()Ljava/lang/String; +HPLandroid/hardware/usb/UsbPortStatus;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->getTransport(Ljava/lang/String;Ljava/lang/String;)B +HPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/icu/impl/CalendarAstronomer$2;->(Landroid/icu/impl/CalendarAstronomer;)V +HPLandroid/icu/impl/CalendarAstronomer$2;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial; +HPLandroid/icu/impl/CalendarAstronomer$CoordFunc;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial; +HPLandroid/icu/impl/CalendarAstronomer$Equatorial;->(DD)V +HPLandroid/icu/impl/CalendarAstronomer$MoonAge;->(D)V +HPLandroid/icu/impl/CalendarAstronomer$SolarLongitude;->(D)V +HPLandroid/icu/impl/CalendarAstronomer;->()V +HPLandroid/icu/impl/CalendarAstronomer;->(DD)V +HPLandroid/icu/impl/CalendarAstronomer;->(J)V +HPLandroid/icu/impl/CalendarAstronomer;->clearCache()V +HPLandroid/icu/impl/CalendarAstronomer;->eclipticObliquity()D +HPLandroid/icu/impl/CalendarAstronomer;->eclipticToEquatorial(DD)Landroid/icu/impl/CalendarAstronomer$Equatorial; +HPLandroid/icu/impl/CalendarAstronomer;->getJulianDay()D +HPLandroid/icu/impl/CalendarAstronomer;->getSiderealOffset()D +HPLandroid/icu/impl/CalendarAstronomer;->getSunLongitude()D +HPLandroid/icu/impl/CalendarAstronomer;->getSunLongitude(D)[D +HPLandroid/icu/impl/CalendarAstronomer;->getSunPosition()Landroid/icu/impl/CalendarAstronomer$Equatorial; +HPLandroid/icu/impl/CalendarAstronomer;->getSunRiseSet(Z)J +HPLandroid/icu/impl/CalendarAstronomer;->lstToUT(D)J +HPLandroid/icu/impl/CalendarAstronomer;->norm2PI(D)D +HPLandroid/icu/impl/CalendarAstronomer;->normPI(D)D +HPLandroid/icu/impl/CalendarAstronomer;->normalize(DD)D +HPLandroid/icu/impl/CalendarAstronomer;->riseOrSet(Landroid/icu/impl/CalendarAstronomer$CoordFunc;ZDDJ)J +HPLandroid/icu/impl/CalendarAstronomer;->setTime(J)V +HPLandroid/icu/impl/CalendarAstronomer;->trueAnomaly(DD)D +HPLandroid/icu/impl/CharTrie;->getCodePointValue(I)C +HPLandroid/icu/impl/CharacterIteration;->next32(Ljava/text/CharacterIterator;)I +HPLandroid/icu/impl/CharacterIteration;->nextTrail32(Ljava/text/CharacterIterator;I)I +HPLandroid/icu/impl/CharacterIteration;->previous32(Ljava/text/CharacterIterator;)I +HPLandroid/icu/impl/DontCareFieldPosition;->()V +HPLandroid/icu/impl/DontCareFieldPosition;->setBeginIndex(I)V +HPLandroid/icu/impl/DontCareFieldPosition;->setEndIndex(I)V +HPLandroid/icu/impl/ICULangDataTables;->()V +HPLandroid/icu/impl/ICULangDataTables;->get(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/LocaleDisplayNamesImpl$DataTable; +HPLandroid/icu/impl/ICURegionDataTables;->()V +HPLandroid/icu/impl/ICURegionDataTables;->get(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/LocaleDisplayNamesImpl$DataTable; +HPLandroid/icu/impl/ICUResourceTableAccess;->getTableString(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/JavaTimeZone;->(Ljava/util/TimeZone;Ljava/lang/String;)V +HPLandroid/icu/impl/JavaTimeZone;->clone()Ljava/lang/Object; +HPLandroid/icu/impl/JavaTimeZone;->freeze()Landroid/icu/util/TimeZone; +HPLandroid/icu/impl/JavaTimeZone;->getOffset(JZ[I)V +HPLandroid/icu/impl/JavaTimeZone;->hashCode()I +HPLandroid/icu/impl/JavaTimeZone;->isFrozen()Z +HPLandroid/icu/impl/LocaleDisplayNamesImpl$Cache;->-getandroid-icu-text-DisplayContext$TypeSwitchesValues()[I +HPLandroid/icu/impl/LocaleDisplayNamesImpl$Cache;->()V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$Cache;->(Landroid/icu/impl/LocaleDisplayNamesImpl$Cache;)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$Cache;->get(Landroid/icu/util/ULocale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames; +HPLandroid/icu/impl/LocaleDisplayNamesImpl$CapitalizationContextUsage;->(Ljava/lang/String;I)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$DataTable;->(Z)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$DataTable;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl$DataTables;->()V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$DataTables;->load(Ljava/lang/String;)Landroid/icu/impl/LocaleDisplayNamesImpl$DataTables; +HPLandroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTable;->(Ljava/lang/String;Landroid/icu/util/ULocale;Z)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTable;->get(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTable;->getLocale()Landroid/icu/util/ULocale; +HPLandroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTables;->(Ljava/lang/String;)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTables;->get(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/LocaleDisplayNamesImpl$DataTable; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->-getandroid-icu-text-DisplayContext$TypeSwitchesValues()[I +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->(Landroid/icu/util/ULocale;[Landroid/icu/text/DisplayContext;)V +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->adjustForUsageAndContext(Landroid/icu/impl/LocaleDisplayNamesImpl$CapitalizationContextUsage;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->appendWithSep(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->getInstance(Landroid/icu/util/ULocale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->localeDisplayName(Ljava/util/Locale;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->localeDisplayNameInternal(Landroid/icu/util/ULocale;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->localeIdName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/LocaleDisplayNamesImpl;->regionDisplayName(Ljava/lang/String;Z)Ljava/lang/String; +HPLandroid/icu/impl/Normalizer2Impl;->isCompYesAndZeroCC(I)Z +HPLandroid/icu/impl/OlsonTimeZone;->clone()Ljava/lang/Object; +HPLandroid/icu/impl/OlsonTimeZone;->getCanonicalID()Ljava/lang/String; +HPLandroid/icu/impl/OlsonTimeZone;->isFrozen()Z +HPLandroid/icu/impl/SimpleFormatterImpl;->formatCompiledPattern(Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/String; +HPLandroid/icu/impl/SimpleFormatterImpl;->formatRawPattern(Ljava/lang/String;II[Ljava/lang/CharSequence;)Ljava/lang/String; +HPLandroid/icu/impl/TextTrieMap$Node;->(Landroid/icu/impl/TextTrieMap;)V +HPLandroid/icu/impl/TextTrieMap$Node;->(Landroid/icu/impl/TextTrieMap;Landroid/icu/impl/TextTrieMap$Node;)V +HPLandroid/icu/impl/TextTrieMap;->(Z)V +HPLandroid/icu/impl/TimeZoneNamesFactoryImpl;->()V +HPLandroid/icu/impl/TimeZoneNamesFactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; +HPLandroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache;->()V +HPLandroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache;->(Landroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->(Ljava/lang/String;JJ)V +HPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->from()J +HPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->mzID()Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->to()J +HPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->()V +HPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->(Landroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->parseDate(Ljava/lang/String;)J +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;->(Ljava/lang/String;I)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;->values()[Landroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->-getandroid-icu-text-TimeZoneNames$NameTypeSwitchesValues()[I +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->([Ljava/lang/String;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->createMetaZoneAndPutInCache(Ljava/util/Map;[Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->createTimeZoneAndPutInCache(Ljava/util/Map;[Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->getName(Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->getNameTypeIndex(Landroid/icu/text/TimeZoneNames$NameType;)I +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->-wrap0(Landroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;)[Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->()V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->(Landroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->getNames()[Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadMetaZone(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadNames(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadTimeZone(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->nameTypeIndexFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex; +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->setNameIfEmpty(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/impl/TimeZoneNamesImpl;->(Landroid/icu/util/ULocale;)V +HPLandroid/icu/impl/TimeZoneNamesImpl;->_getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set; +HPLandroid/icu/impl/TimeZoneNamesImpl;->_getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl;->getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set; +HPLandroid/icu/impl/TimeZoneNamesImpl;->getDefaultExemplarLocationName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl;->getMetaZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl;->getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl;->getTimeZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String; +HPLandroid/icu/impl/TimeZoneNamesImpl;->initialize(Landroid/icu/util/ULocale;)V +HPLandroid/icu/impl/TimeZoneNamesImpl;->loadMetaZoneNames(Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames; +HPLandroid/icu/impl/TimeZoneNamesImpl;->loadStrings(Ljava/lang/String;)V +HPLandroid/icu/impl/TimeZoneNamesImpl;->loadTimeZoneNames(Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames; +HPLandroid/icu/impl/UBiDiProps;->getClass(I)I +HPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I +HPLandroid/icu/impl/UResource$Key;->substring(II)Ljava/lang/String; +HPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Landroid/icu/util/TimeZone;)Ljava/lang/String; +HPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I +HPLandroid/icu/lang/UCharacter;->getDirection(I)I +HPLandroid/icu/lang/UCharacter;->isHighSurrogate(C)Z +HPLandroid/icu/math/BigDecimal;->(Ljava/lang/String;)V +HPLandroid/icu/math/BigDecimal;->(Ljava/math/BigInteger;I)V +HPLandroid/icu/math/BigDecimal;->([CII)V +HPLandroid/icu/text/AlphabeticIndex$Bucket;->-get0(Landroid/icu/text/AlphabeticIndex$Bucket;)Landroid/icu/text/AlphabeticIndex$Bucket; +HPLandroid/icu/text/AlphabeticIndex$Bucket;->-get1(Landroid/icu/text/AlphabeticIndex$Bucket;)I +HPLandroid/icu/text/AlphabeticIndex$Bucket;->-get3(Landroid/icu/text/AlphabeticIndex$Bucket;)Ljava/lang/String; +HPLandroid/icu/text/AlphabeticIndex$Bucket;->getLabel()Ljava/lang/String; +HPLandroid/icu/text/AlphabeticIndex$BucketList;->-get0(Landroid/icu/text/AlphabeticIndex$BucketList;)Ljava/util/List; +HPLandroid/icu/text/AlphabeticIndex$BucketList;->-wrap0(Landroid/icu/text/AlphabeticIndex$BucketList;)I +HPLandroid/icu/text/AlphabeticIndex$BucketList;->-wrap1(Landroid/icu/text/AlphabeticIndex$BucketList;Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I +HPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I +HPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I +HPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucket(I)Landroid/icu/text/AlphabeticIndex$Bucket; +HPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucketIndex(Ljava/lang/CharSequence;)I +HPLandroid/icu/text/Bidi$ImpTabPair;->([[B[[B[S[S)V +HPLandroid/icu/text/Bidi;->DirPropFlag(B)I +HPLandroid/icu/text/Bidi;->requiresBidi([CII)Z +HPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator; +HPLandroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale; +HPLandroid/icu/text/BreakIterator;->setText(Ljava/lang/String;)V +HPLandroid/icu/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HPLandroid/icu/text/DateFormat;->getCalendar()Landroid/icu/util/Calendar; +HPLandroid/icu/text/DateFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V +HPLandroid/icu/text/DateIntervalFormat$BestMatchInfo;->(Ljava/lang/String;I)V +HPLandroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/icu/text/DateIntervalFormat;->(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/SimpleDateFormat;)V +HPLandroid/icu/text/DateIntervalFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HPLandroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch; +HPLandroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z +HPLandroid/icu/text/DateIntervalFormat;->getDateTimeSkeleton(Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V +HPLandroid/icu/text/DateIntervalFormat;->getInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateIntervalFormat; +HPLandroid/icu/text/DateIntervalFormat;->initializeIntervalPattern(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/util/Map; +HPLandroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V +HPLandroid/icu/text/DateIntervalFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->(Landroid/icu/text/DateIntervalInfo;)V +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->getAndResetNextCalendarType()Ljava/lang/String; +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->processSkeletonTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->setIntervalPatternIfAbsent(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->validateAndProcessPatternLetter(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/icu/text/DateIntervalInfo$PatternInfo;->(Ljava/lang/String;Ljava/lang/String;Z)V +HPLandroid/icu/text/DateIntervalInfo;->-get0()Ljava/lang/String; +HPLandroid/icu/text/DateIntervalInfo;->-get1()Ljava/lang/String; +HPLandroid/icu/text/DateIntervalInfo;->-get2(Landroid/icu/text/DateIntervalInfo;)Ljava/util/Map; +HPLandroid/icu/text/DateIntervalInfo;->-wrap0(Landroid/icu/text/DateIntervalInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo; +HPLandroid/icu/text/DateIntervalInfo;->(Landroid/icu/util/ULocale;)V +HPLandroid/icu/text/DateIntervalInfo;->clone()Ljava/lang/Object; +HPLandroid/icu/text/DateIntervalInfo;->cloneUnfrozenDII()Ljava/lang/Object; +HPLandroid/icu/text/DateIntervalInfo;->freeze()Landroid/icu/text/DateIntervalInfo; +HPLandroid/icu/text/DateIntervalInfo;->genPatternInfo(Ljava/lang/String;Z)Landroid/icu/text/DateIntervalInfo$PatternInfo; +HPLandroid/icu/text/DateIntervalInfo;->getBestSkeleton(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat$BestMatchInfo; +HPLandroid/icu/text/DateIntervalInfo;->getDefaultOrder()Z +HPLandroid/icu/text/DateIntervalInfo;->getIntervalPattern(Ljava/lang/String;I)Landroid/icu/text/DateIntervalInfo$PatternInfo; +HPLandroid/icu/text/DateIntervalInfo;->initializeData(Landroid/icu/util/ULocale;)V +HPLandroid/icu/text/DateIntervalInfo;->parseSkeleton(Ljava/lang/String;[I)V +HPLandroid/icu/text/DateIntervalInfo;->setFallbackIntervalPattern(Ljava/lang/String;)V +HPLandroid/icu/text/DateIntervalInfo;->setIntervalPatternInternally(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo; +HPLandroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V +HPLandroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I +HPLandroid/icu/text/DateIntervalInfo;->stringNumeric(IIC)Z +HPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I +HPLandroid/icu/text/DateTimePatternGenerator;->getBestAppending(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String; +HPLandroid/icu/text/DateTimePatternGenerator;->getDateTimeFormat()Ljava/lang/String; +HPLandroid/icu/text/DecimalFormat;->getNegativePrefix()Ljava/lang/String; +HPLandroid/icu/text/DecimalFormat;->getNegativeSuffix()Ljava/lang/String; +HPLandroid/icu/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String; +HPLandroid/icu/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String; +HPLandroid/icu/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Landroid/icu/text/DecimalFormatSymbols; +HPLandroid/icu/text/DigitList;->getBigDecimalICU(Z)Landroid/icu/math/BigDecimal; +HPLandroid/icu/text/DisplayContext$Type;->values()[Landroid/icu/text/DisplayContext$Type; +HPLandroid/icu/text/Edits$Iterator;->([CIZZ)V +HPLandroid/icu/text/Edits$Iterator;->([CIZZLandroid/icu/text/Edits$Iterator;)V +HPLandroid/icu/text/Edits$Iterator;->destinationIndex()I +HPLandroid/icu/text/Edits$Iterator;->findSourceIndex(I)Z +HPLandroid/icu/text/Edits$Iterator;->hasChange()Z +HPLandroid/icu/text/Edits$Iterator;->next(Z)Z +HPLandroid/icu/text/Edits$Iterator;->sourceIndex()I +HPLandroid/icu/text/Edits$Iterator;->updateIndexes()V +HPLandroid/icu/text/Edits;->getFineIterator()Landroid/icu/text/Edits$Iterator; +HPLandroid/icu/text/LocaleDisplayNames$DialectHandling;->(Ljava/lang/String;I)V +HPLandroid/icu/text/LocaleDisplayNames;->()V +HPLandroid/icu/text/LocaleDisplayNames;->getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext; +HPLandroid/icu/text/LocaleDisplayNames;->getDialectHandling()Landroid/icu/text/LocaleDisplayNames$DialectHandling; +HPLandroid/icu/text/LocaleDisplayNames;->getInstance(Landroid/icu/util/ULocale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames; +HPLandroid/icu/text/LocaleDisplayNames;->getInstance(Ljava/util/Locale;[Landroid/icu/text/DisplayContext;)Landroid/icu/text/LocaleDisplayNames; +HPLandroid/icu/text/LocaleDisplayNames;->getLocale()Landroid/icu/util/ULocale; +HPLandroid/icu/text/LocaleDisplayNames;->getUiListCompareWholeItems(Ljava/util/Set;Ljava/util/Comparator;)Ljava/util/List; +HPLandroid/icu/text/LocaleDisplayNames;->keyDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->keyValueDisplayName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->languageDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->localeDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->localeDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->localeDisplayName(Ljava/util/Locale;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->regionDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->scriptDisplayName(I)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->scriptDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/LocaleDisplayNames;->variantDisplayName(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/RBBIDataWrapper;->getRowIndex(I)I +HPLandroid/icu/text/RBBIDataWrapper;->getStateTableFlags([S)I +HPLandroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->(Ljava/lang/String;I)V +HPLandroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->values()[Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit; +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->(Landroid/icu/text/RelativeDateTimeFormatter$Cache;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache;->()V +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache;->(Landroid/icu/text/RelativeDateTimeFormatter$Cache;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HPLandroid/icu/text/RelativeDateTimeFormatter$Direction;->(Ljava/lang/String;I)V +HPLandroid/icu/text/RelativeDateTimeFormatter$Direction;->values()[Landroid/icu/text/RelativeDateTimeFormatter$Direction; +HPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->(Landroid/icu/util/ULocale;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String; +HPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->-wrap0(Ljava/lang/CharSequence;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->(Ljava/lang/String;ILandroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->-getandroid-icu-text-RelativeDateTimeFormatter$StyleSwitchesValues()[I +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->()V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/RelativeDateTimeFormatter$Style; +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Style; +HPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleSuffixLength(Landroid/icu/text/RelativeDateTimeFormatter$Style;)I +HPLandroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->(Ljava/lang/String;I)V +HPLandroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->values()[Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit; +HPLandroid/icu/text/RelativeDateTimeFormatter$Style;->(Ljava/lang/String;I)V +HPLandroid/icu/text/RelativeDateTimeFormatter$Style;->values()[Landroid/icu/text/RelativeDateTimeFormatter$Style; +HPLandroid/icu/text/RelativeDateTimeFormatter;->-get0()[Landroid/icu/text/RelativeDateTimeFormatter$Style; +HPLandroid/icu/text/RelativeDateTimeFormatter;->-wrap0(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Direction; +HPLandroid/icu/text/RelativeDateTimeFormatter;->(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 +HPLandroid/icu/text/RelativeDateTimeFormatter;->adjustForContext(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/RelativeDateTimeFormatter;->format(DLandroid/icu/text/RelativeDateTimeFormatter$Direction;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;)Ljava/lang/String; +HPLandroid/icu/text/RelativeDateTimeFormatter;->getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;)Landroid/icu/text/RelativeDateTimeFormatter; +HPLandroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String; +HPLandroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPluralPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String; +HPLandroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Direction; +HPLandroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V +HPLandroid/icu/text/RuleBasedBreakIterator;->current()I +HPLandroid/icu/text/RuleBasedBreakIterator;->first()I +HPLandroid/icu/text/RuleBasedBreakIterator;->following(I)I +HPLandroid/icu/text/RuleBasedBreakIterator;->getText()Ljava/text/CharacterIterator; +HPLandroid/icu/text/RuleBasedBreakIterator;->handleNext([S)I +HPLandroid/icu/text/RuleBasedBreakIterator;->handlePrevious([S)I +HPLandroid/icu/text/RuleBasedBreakIterator;->last()I +HPLandroid/icu/text/RuleBasedBreakIterator;->next()I +HPLandroid/icu/text/RuleBasedBreakIterator;->preceding(I)I +HPLandroid/icu/text/RuleBasedBreakIterator;->previous()I +HPLandroid/icu/text/RuleBasedBreakIterator;->rulesFollowing(I)I +HPLandroid/icu/text/RuleBasedBreakIterator;->rulesPreceding(I)I +HPLandroid/icu/text/RuleBasedBreakIterator;->setText(Ljava/text/CharacterIterator;)V +HPLandroid/icu/text/SimpleDateFormat;->getLevelFromChar(C)I +HPLandroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale; +HPLandroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z +HPLandroid/icu/text/TimeZoneNames$Cache;->()V +HPLandroid/icu/text/TimeZoneNames$Cache;->(Landroid/icu/text/TimeZoneNames$Cache;)V +HPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; +HPLandroid/icu/text/TimeZoneNames$Factory;->()V +HPLandroid/icu/text/TimeZoneNames$Factory;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; +HPLandroid/icu/text/TimeZoneNames;->-get0()Landroid/icu/text/TimeZoneNames$Factory; +HPLandroid/icu/text/TimeZoneNames;->()V +HPLandroid/icu/text/TimeZoneNames;->getAvailableMetaZoneIDs()Ljava/util/Set; +HPLandroid/icu/text/TimeZoneNames;->getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set; +HPLandroid/icu/text/TimeZoneNames;->getDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;J)Ljava/lang/String; +HPLandroid/icu/text/TimeZoneNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; +HPLandroid/icu/text/TimeZoneNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames; +HPLandroid/icu/text/TimeZoneNames;->getMetaZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String; +HPLandroid/icu/text/TimeZoneNames;->getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String; +HPLandroid/icu/text/TimeZoneNames;->getReferenceZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/icu/text/TimeZoneNames;->getTimeZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String; +HPLandroid/icu/text/UTF16;->isTrailSurrogate(C)Z +HPLandroid/icu/util/Calendar;->clone()Ljava/lang/Object; +HPLandroid/icu/util/Calendar;->getRepeatedWallTimeOption()I +HPLandroid/icu/util/Calendar;->getSkippedWallTimeOption()I +HPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z +HPLandroid/icu/util/Calendar;->isLenient()Z +HPLandroid/icu/util/GregorianCalendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z +HPLandroid/icu/util/TimeZone;->()V +HPLandroid/icu/util/TimeZone;->equals(Ljava/lang/Object;)Z +HPLandroid/icu/util/TimeZone;->hashCode()I +HPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V +HPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->isEnabled()Z +HPLandroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;->finishedEvent(IZ)V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->doFinishSession()V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->executeMessage(Landroid/os/Message;)V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->finishSession()V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->updateSelection(IIIIII)V +HPLandroid/inputmethodservice/IInputMethodSessionWrapper;->viewClicked(Z)V +HPLandroid/inputmethodservice/IInputMethodWrapper;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V +HPLandroid/inputmethodservice/IInputMethodWrapper;->hideSoftInput(ILandroid/os/ResultReceiver;)V +HPLandroid/inputmethodservice/IInputMethodWrapper;->showSoftInput(ILandroid/os/ResultReceiver;)V +HPLandroid/inputmethodservice/IInputMethodWrapper;->unbindInput()V +HPLandroid/inputmethodservice/InputMethodService$1;->onComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->hideSoftInput(ILandroid/os/ResultReceiver;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->showSoftInput(ILandroid/os/ResultReceiver;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->unbindInput()V +HPLandroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;->updateSelection(IIIIII)V +HPLandroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;->viewClicked(Z)V +HPLandroid/inputmethodservice/InputMethodService;->-get0(Landroid/inputmethodservice/InputMethodService;)Landroid/os/IBinder; +HPLandroid/inputmethodservice/InputMethodService;->-wrap0(Landroid/inputmethodservice/InputMethodService;IZ)Z +HPLandroid/inputmethodservice/InputMethodService;->-wrap1(Landroid/inputmethodservice/InputMethodService;)V +HPLandroid/inputmethodservice/InputMethodService;->-wrap2(Landroid/inputmethodservice/InputMethodService;)V +HPLandroid/inputmethodservice/InputMethodService;->clearInsetOfPreviousIme()V +HPLandroid/inputmethodservice/InputMethodService;->dispatchOnShowInputRequested(IZ)Z +HPLandroid/inputmethodservice/InputMethodService;->doHideWindow()V +HPLandroid/inputmethodservice/InputMethodService;->doMovementKey(ILandroid/view/KeyEvent;I)Z +HPLandroid/inputmethodservice/InputMethodService;->finishViews()V +HPLandroid/inputmethodservice/InputMethodService;->getCurrentInputConnection()Landroid/view/inputmethod/InputConnection; +HPLandroid/inputmethodservice/InputMethodService;->getCurrentInputEditorInfo()Landroid/view/inputmethod/EditorInfo; +HPLandroid/inputmethodservice/InputMethodService;->getExtractEditTextIfVisible()Landroid/inputmethodservice/ExtractEditText; +HPLandroid/inputmethodservice/InputMethodService;->getWindow()Landroid/app/Dialog; +HPLandroid/inputmethodservice/InputMethodService;->handleBack(Z)Z +HPLandroid/inputmethodservice/InputMethodService;->hideStatusIcon()V +HPLandroid/inputmethodservice/InputMethodService;->hideWindow()V +HPLandroid/inputmethodservice/InputMethodService;->isFullscreenMode()Z +HPLandroid/inputmethodservice/InputMethodService;->isInputViewShown()Z +HPLandroid/inputmethodservice/InputMethodService;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/inputmethodservice/InputMethodService;->onConfigureWindow(Landroid/view/Window;ZZ)V +HPLandroid/inputmethodservice/InputMethodService;->onDisplayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HPLandroid/inputmethodservice/InputMethodService;->onEvaluateFullscreenMode()Z +HPLandroid/inputmethodservice/InputMethodService;->onFinishInput()V +HPLandroid/inputmethodservice/InputMethodService;->onFinishInputView(Z)V +HPLandroid/inputmethodservice/InputMethodService;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/inputmethodservice/InputMethodService;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/inputmethodservice/InputMethodService;->onShowInputRequested(IZ)Z +HPLandroid/inputmethodservice/InputMethodService;->onStartInputView(Landroid/view/inputmethod/EditorInfo;Z)V +HPLandroid/inputmethodservice/InputMethodService;->onUnbindInput()V +HPLandroid/inputmethodservice/InputMethodService;->onUpdateSelection(IIIIII)V +HPLandroid/inputmethodservice/InputMethodService;->onViewClicked(Z)V +HPLandroid/inputmethodservice/InputMethodService;->onWindowHidden()V +HPLandroid/inputmethodservice/InputMethodService;->onWindowShown()V +HPLandroid/inputmethodservice/InputMethodService;->requestHideSelf(I)V +HPLandroid/inputmethodservice/InputMethodService;->resetStateForNewConfiguration()V +HPLandroid/inputmethodservice/InputMethodService;->setInputView(Landroid/view/View;)V +HPLandroid/inputmethodservice/InputMethodService;->showWindow(Z)V +HPLandroid/inputmethodservice/InputMethodService;->showWindowInner(Z)V +HPLandroid/inputmethodservice/InputMethodService;->startExtractingText(Z)V +HPLandroid/inputmethodservice/InputMethodService;->updateCandidatesVisibility(Z)V +HPLandroid/inputmethodservice/InputMethodService;->updateExtractFrameVisibility()V +HPLandroid/inputmethodservice/InputMethodService;->updateFullscreenMode()V +HPLandroid/inputmethodservice/InputMethodService;->updateInputViewShown()V +HPLandroid/inputmethodservice/SoftInputWindow;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/location/Address$1;->()V +HPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Address; +HPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/Address;->-get0(Landroid/location/Address;)Ljava/util/HashMap; +HPLandroid/location/Address;->-get1(Landroid/location/Address;)Z +HPLandroid/location/Address;->-get2(Landroid/location/Address;)Z +HPLandroid/location/Address;->-get3(Landroid/location/Address;)I +HPLandroid/location/Address;->-set0(Landroid/location/Address;Ljava/util/HashMap;)Ljava/util/HashMap; +HPLandroid/location/Address;->-set1(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set10(Landroid/location/Address;D)D +HPLandroid/location/Address;->-set11(Landroid/location/Address;I)I +HPLandroid/location/Address;->-set12(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set13(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set14(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set15(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set16(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set17(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set18(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set19(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set2(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set3(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set4(Landroid/location/Address;Landroid/os/Bundle;)Landroid/os/Bundle; +HPLandroid/location/Address;->-set5(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->-set6(Landroid/location/Address;Z)Z +HPLandroid/location/Address;->-set7(Landroid/location/Address;Z)Z +HPLandroid/location/Address;->-set8(Landroid/location/Address;D)D +HPLandroid/location/Address;->-set9(Landroid/location/Address;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/Address;->(Ljava/util/Locale;)V +HPLandroid/location/Address;->getCountryCode()Ljava/lang/String; +HPLandroid/location/Address;->setAddressLine(ILjava/lang/String;)V +HPLandroid/location/Address;->setAdminArea(Ljava/lang/String;)V +HPLandroid/location/Address;->setCountryCode(Ljava/lang/String;)V +HPLandroid/location/Address;->setCountryName(Ljava/lang/String;)V +HPLandroid/location/Address;->setFeatureName(Ljava/lang/String;)V +HPLandroid/location/Address;->setLatitude(D)V +HPLandroid/location/Address;->setLocality(Ljava/lang/String;)V +HPLandroid/location/Address;->setLongitude(D)V +HPLandroid/location/Address;->setPostalCode(Ljava/lang/String;)V +HPLandroid/location/Address;->setPremises(Ljava/lang/String;)V +HPLandroid/location/Address;->setSubThoroughfare(Ljava/lang/String;)V +HPLandroid/location/Address;->setThoroughfare(Ljava/lang/String;)V +HPLandroid/location/Address;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/location/Country$1;->()V +HPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Country; +HPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/Country;->(Landroid/location/Country;)V +HPLandroid/location/Country;->(Ljava/lang/String;I)V +HPLandroid/location/Country;->(Ljava/lang/String;IJ)V +HPLandroid/location/Country;->(Ljava/lang/String;IJLandroid/location/Country;)V +HPLandroid/location/Country;->equals(Ljava/lang/Object;)Z +HPLandroid/location/Country;->getCountryIso()Ljava/lang/String; +HPLandroid/location/Country;->getSource()I +HPLandroid/location/Country;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/location/CountryDetector$ListenerTransport$1;->(Landroid/location/CountryDetector$ListenerTransport;Landroid/location/Country;)V +HPLandroid/location/CountryDetector$ListenerTransport$1;->run()V +HPLandroid/location/CountryDetector$ListenerTransport;->-get0(Landroid/location/CountryDetector$ListenerTransport;)Landroid/location/CountryListener; +HPLandroid/location/CountryDetector$ListenerTransport;->(Landroid/location/CountryListener;Landroid/os/Looper;)V +HPLandroid/location/CountryDetector$ListenerTransport;->onCountryDetected(Landroid/location/Country;)V +HPLandroid/location/CountryDetector;->(Landroid/location/ICountryDetector;)V +HPLandroid/location/CountryDetector;->addCountryListener(Landroid/location/CountryListener;Landroid/os/Looper;)V +HPLandroid/location/CountryDetector;->detectCountry()Landroid/location/Country; +HPLandroid/location/Geocoder;->getFromLocation(DDI)Ljava/util/List; +HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/GeocoderParams; +HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/GeocoderParams;->-set0(Landroid/location/GeocoderParams;Ljava/util/Locale;)Ljava/util/Locale; +HPLandroid/location/GeocoderParams;->-set1(Landroid/location/GeocoderParams;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/location/GeocoderParams;->()V +HPLandroid/location/GeocoderParams;->(Landroid/location/GeocoderParams;)V +HPLandroid/location/GeocoderParams;->getClientPackage()Ljava/lang/String; +HPLandroid/location/GeocoderParams;->getLocale()Ljava/util/Locale; +HPLandroid/location/GeocoderParams;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/location/GpsSatellite;->usedInFix()Z +HPLandroid/location/ICountryDetector$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/ICountryDetector$Stub$Proxy;->detectCountry()Landroid/location/Country; +HPLandroid/location/ICountryDetector$Stub;->()V +HPLandroid/location/ICountryDetector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryDetector; +HPLandroid/location/ICountryDetector$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/location/ICountryDetector;->addCountryListener(Landroid/location/ICountryListener;)V +HPLandroid/location/ICountryDetector;->detectCountry()Landroid/location/Country; +HPLandroid/location/ICountryDetector;->removeCountryListener(Landroid/location/ICountryListener;)V +HPLandroid/location/ICountryListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/ICountryListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/location/ICountryListener$Stub$Proxy;->onCountryDetected(Landroid/location/Country;)V +HPLandroid/location/ICountryListener$Stub;->()V +HPLandroid/location/ICountryListener$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/location/ICountryListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryListener; +HPLandroid/location/ICountryListener;->onCountryDetected(Landroid/location/Country;)V +HPLandroid/location/IFusedProvider$Stub;->()V +HPLandroid/location/IFusedProvider;->onFusedLocationHardwareChange(Landroid/hardware/location/IFusedLocationHardware;)V +HPLandroid/location/IGeocodeProvider$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/IGeocodeProvider$Stub$Proxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +HPLandroid/location/IGeocodeProvider$Stub;->()V +HPLandroid/location/IGeocodeProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeocodeProvider; +HPLandroid/location/IGeocodeProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/location/IGeocodeProvider;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +HPLandroid/location/IGeocodeProvider;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +HPLandroid/location/IGeofenceProvider$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/IGeofenceProvider$Stub$Proxy;->setGeofenceHardware(Landroid/hardware/location/IGeofenceHardware;)V +HPLandroid/location/IGeofenceProvider$Stub;->()V +HPLandroid/location/IGeofenceProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeofenceProvider; +HPLandroid/location/IGeofenceProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/location/IGeofenceProvider;->setGeofenceHardware(Landroid/hardware/location/IGeofenceHardware;)V +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->onGnssStarted()V +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->onGnssStopped()V +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->onNmeaReceived(JLjava/lang/String;)V +HPLandroid/location/IGnssStatusListener$Stub$Proxy;->onSvStatusChanged(I[I[F[F[F[F)V +HPLandroid/location/IGnssStatusListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssStatusListener; +HPLandroid/location/IGnssStatusProvider$Stub;->()V +HPLandroid/location/IGnssStatusProvider;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +HPLandroid/location/IGnssStatusProvider;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +HPLandroid/location/IGpsGeofenceHardware$Stub;->()V +HPLandroid/location/IGpsGeofenceHardware;->addCircularHardwareGeofence(IDDDIIII)Z +HPLandroid/location/IGpsGeofenceHardware;->isHardwareGeofenceSupported()Z +HPLandroid/location/IGpsGeofenceHardware;->pauseHardwareGeofence(I)Z +HPLandroid/location/IGpsGeofenceHardware;->removeHardwareGeofence(I)Z +HPLandroid/location/IGpsGeofenceHardware;->resumeHardwareGeofence(II)Z +HPLandroid/location/ILocationListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/location/ILocationListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/location/ILocationListener$Stub$Proxy;->onLocationChanged(Landroid/location/Location;)V +HPLandroid/location/ILocationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationListener; +HPLandroid/location/ILocationListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/location/ILocationManager$Stub$Proxy;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties; +HPLandroid/location/ILocationManager$Stub$Proxy;->locationCallbackFinished(Landroid/location/ILocationListener;)V +HPLandroid/location/ILocationManager$Stub$Proxy;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HPLandroid/location/ILocationManager$Stub$Proxy;->reportLocation(Landroid/location/Location;Z)V +HPLandroid/location/ILocationManager$Stub$Proxy;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +HPLandroid/location/ILocationManager$Stub;->()V +HPLandroid/location/ILocationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/location/INetInitiatedListener$Stub;->()V +HPLandroid/location/INetInitiatedListener;->sendNiResponse(II)Z +HPLandroid/location/Location;->(Landroid/location/Location;)V +HPLandroid/location/Location;->getBearing()F +HPLandroid/location/Location;->getExtraLocation(Ljava/lang/String;)Landroid/location/Location; +HPLandroid/location/Location;->getSpeed()F +HPLandroid/location/Location;->hasBearingAccuracy()Z +HPLandroid/location/Location;->hasSpeedAccuracy()Z +HPLandroid/location/Location;->hasVerticalAccuracy()Z +HPLandroid/location/Location;->isComplete()Z +HPLandroid/location/Location;->isFromMockProvider()Z +HPLandroid/location/Location;->removeAltitude()V +HPLandroid/location/Location;->removeBearing()V +HPLandroid/location/Location;->removeSpeed()V +HPLandroid/location/Location;->set(Landroid/location/Location;)V +HPLandroid/location/Location;->setElapsedRealtimeNanos(J)V +HPLandroid/location/Location;->setExtraLocation(Ljava/lang/String;Landroid/location/Location;)V +HPLandroid/location/Location;->setProvider(Ljava/lang/String;)V +HPLandroid/location/Location;->setSpeed(F)V +HPLandroid/location/Location;->toString()Ljava/lang/String; +HPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/location/LocationManager$GnssStatusListenerTransport$1;->onFirstFix(I)V +HPLandroid/location/LocationManager$GnssStatusListenerTransport$1;->onStopped()V +HPLandroid/location/LocationManager$GnssStatusListenerTransport;->onFirstFix(I)V +HPLandroid/location/LocationManager$GnssStatusListenerTransport;->onGnssStopped()V +HPLandroid/location/LocationManager$ListenerTransport$1;->handleMessage(Landroid/os/Message;)V +HPLandroid/location/LocationManager$ListenerTransport$2;->(Landroid/location/LocationManager$ListenerTransport;Landroid/os/Looper;)V +HPLandroid/location/LocationManager$ListenerTransport$2;->handleMessage(Landroid/os/Message;)V +HPLandroid/location/LocationManager$ListenerTransport;->-wrap0(Landroid/location/LocationManager$ListenerTransport;Landroid/os/Message;)V +HPLandroid/location/LocationManager$ListenerTransport;->_handleMessage(Landroid/os/Message;)V +HPLandroid/location/LocationManager$ListenerTransport;->onLocationChanged(Landroid/location/Location;)V +HPLandroid/location/LocationManager;->-get1(Landroid/location/LocationManager;)Landroid/location/ILocationManager; +HPLandroid/location/LocationManager;->-get2(Landroid/location/LocationManager;)I +HPLandroid/location/LocationManager;->-set1(Landroid/location/LocationManager;I)I +HPLandroid/location/LocationManager;->createProvider(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;)Landroid/location/LocationProvider; +HPLandroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider; +HPLandroid/location/LocationManager;->removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V +HPLandroid/location/LocationManager;->removeUpdates(Landroid/location/LocationListener;)V +HPLandroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/LocationListener;Landroid/os/Looper;)V +HPLandroid/location/LocationProvider;->(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;)V +HPLandroid/location/LocationRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/LocationRequest; +HPLandroid/location/LocationRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/location/LocationRequest;->(Landroid/location/LocationRequest;)V +HPLandroid/location/LocationRequest;->decrementNumUpdates()V +HPLandroid/location/LocationRequest;->getExpireAt()J +HPLandroid/location/LocationRequest;->getFastestInterval()J +HPLandroid/location/LocationRequest;->getHideFromAppOps()Z +HPLandroid/location/LocationRequest;->getInterval()J +HPLandroid/location/LocationRequest;->getNumUpdates()I +HPLandroid/location/LocationRequest;->getProvider()Ljava/lang/String; +HPLandroid/location/LocationRequest;->getSmallestDisplacement()F +HPLandroid/location/LocationRequest;->getWorkSource()Landroid/os/WorkSource; +HPLandroid/location/LocationRequest;->setExpireAt(J)Landroid/location/LocationRequest; +HPLandroid/location/LocationRequest;->setHideFromAppOps(Z)V +HPLandroid/location/LocationRequest;->setWorkSource(Landroid/os/WorkSource;)V +HPLandroid/media/AudioAttributes$Builder;->(Landroid/media/AudioAttributes;)V +HPLandroid/media/AudioAttributes$Builder;->replaceFlags(I)Landroid/media/AudioAttributes$Builder; +HPLandroid/media/AudioAttributes$Builder;->setInternalCapturePreset(I)Landroid/media/AudioAttributes$Builder; +HPLandroid/media/AudioAttributes$Builder;->setLegacyStreamType(I)Landroid/media/AudioAttributes$Builder; +HPLandroid/media/AudioAttributes;->-get0(Landroid/media/AudioAttributes;)I +HPLandroid/media/AudioAttributes;->-get1(Landroid/media/AudioAttributes;)I +HPLandroid/media/AudioAttributes;->-get2(Landroid/media/AudioAttributes;)Ljava/util/HashSet; +HPLandroid/media/AudioAttributes;->-get3(Landroid/media/AudioAttributes;)I +HPLandroid/media/AudioAttributes;->equals(Ljava/lang/Object;)Z +HPLandroid/media/AudioAttributes;->getCapturePreset()I +HPLandroid/media/AudioAttributes;->getContentType()I +HPLandroid/media/AudioAttributes;->toLegacyStreamType(Landroid/media/AudioAttributes;)I +HPLandroid/media/AudioDeviceCallback;->()V +HPLandroid/media/AudioDeviceInfo;->(Landroid/media/AudioDevicePort;)V +HPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I +HPLandroid/media/AudioDeviceInfo;->getType()I +HPLandroid/media/AudioDevicePort;->(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;)V +HPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioDevicePortConfig; +HPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HPLandroid/media/AudioDevicePort;->type()I +HPLandroid/media/AudioDevicePortConfig;->(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V +HPLandroid/media/AudioFocusInfo$1;->()V +HPLandroid/media/AudioFocusInfo;->(Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;IIII)V +HPLandroid/media/AudioFocusInfo;->clearLossReceived()V +HPLandroid/media/AudioFocusRequest$Builder;->(I)V +HPLandroid/media/AudioFocusRequest$Builder;->build()Landroid/media/AudioFocusRequest; +HPLandroid/media/AudioFocusRequest$Builder;->setAcceptsDelayedFocusGain(Z)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setFocusGain(I)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setLocksFocus(Z)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setOnAudioFocusChangeListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/os/Handler;)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setOnAudioFocusChangeListenerInt(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/os/Handler;)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest$Builder;->setWillPauseWhenDucked(Z)Landroid/media/AudioFocusRequest$Builder; +HPLandroid/media/AudioFocusRequest;->-get0()Landroid/media/AudioAttributes; +HPLandroid/media/AudioFocusRequest;->(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/os/Handler;Landroid/media/AudioAttributes;II)V +HPLandroid/media/AudioFocusRequest;->(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/os/Handler;Landroid/media/AudioAttributes;IILandroid/media/AudioFocusRequest;)V +HPLandroid/media/AudioFocusRequest;->getAudioAttributes()Landroid/media/AudioAttributes; +HPLandroid/media/AudioFocusRequest;->getFlags()I +HPLandroid/media/AudioFocusRequest;->getFocusGain()I +HPLandroid/media/AudioFocusRequest;->getOnAudioFocusChangeListener()Landroid/media/AudioManager$OnAudioFocusChangeListener; +HPLandroid/media/AudioFocusRequest;->getOnAudioFocusChangeListenerHandler()Landroid/os/Handler; +HPLandroid/media/AudioFocusRequest;->isValidFocusGain(I)Z +HPLandroid/media/AudioFocusRequest;->locksFocus()Z +HPLandroid/media/AudioFormat$Builder;->build()Landroid/media/AudioFormat; +HPLandroid/media/AudioFormat;->-set0(Landroid/media/AudioFormat;I)I +HPLandroid/media/AudioFormat;->-set1(Landroid/media/AudioFormat;I)I +HPLandroid/media/AudioFormat;->-set2(Landroid/media/AudioFormat;I)I +HPLandroid/media/AudioFormat;->-set3(Landroid/media/AudioFormat;I)I +HPLandroid/media/AudioFormat;->-set4(Landroid/media/AudioFormat;I)I +HPLandroid/media/AudioFormat;->(I)V +HPLandroid/media/AudioFormat;->(ILandroid/media/AudioFormat;)V +HPLandroid/media/AudioFormat;->channelCountFromOutChannelMask(I)I +HPLandroid/media/AudioFormat;->getBytesPerSample(I)I +HPLandroid/media/AudioFormat;->getChannelCount()I +HPLandroid/media/AudioFormat;->getChannelIndexMask()I +HPLandroid/media/AudioFormat;->getChannelMask()I +HPLandroid/media/AudioFormat;->getEncoding()I +HPLandroid/media/AudioFormat;->getPropertySetMask()I +HPLandroid/media/AudioFormat;->getSampleRate()I +HPLandroid/media/AudioFormat;->isEncodingLinearFrames(I)Z +HPLandroid/media/AudioFormat;->isEncodingLinearPcm(I)Z +HPLandroid/media/AudioFormat;->isPublicEncoding(I)Z +HPLandroid/media/AudioFormat;->isValidEncoding(I)Z +HPLandroid/media/AudioHandle;->(I)V +HPLandroid/media/AudioHandle;->equals(Ljava/lang/Object;)Z +HPLandroid/media/AudioHandle;->id()I +HPLandroid/media/AudioManager$FocusRequestInfo;->(Landroid/media/AudioFocusRequest;Landroid/os/Handler;)V +HPLandroid/media/AudioManager$NativeEventHandlerDelegate$1;->(Landroid/media/AudioManager$NativeEventHandlerDelegate;Landroid/os/Looper;Landroid/media/AudioDeviceCallback;)V +HPLandroid/media/AudioManager$NativeEventHandlerDelegate$1;->handleMessage(Landroid/os/Message;)V +HPLandroid/media/AudioManager$NativeEventHandlerDelegate;->(Landroid/media/AudioManager;Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V +HPLandroid/media/AudioManager$NativeEventHandlerDelegate;->getHandler()Landroid/os/Handler; +HPLandroid/media/AudioManager$OnAmPortUpdateListener;->(Landroid/media/AudioManager;)V +HPLandroid/media/AudioManager$OnAmPortUpdateListener;->(Landroid/media/AudioManager;Landroid/media/AudioManager$OnAmPortUpdateListener;)V +HPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPatchListUpdate([Landroid/media/AudioPatch;)V +HPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V +HPLandroid/media/AudioManager$OnAudioPortUpdateListener;->onAudioPatchListUpdate([Landroid/media/AudioPatch;)V +HPLandroid/media/AudioManager$OnAudioPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V +HPLandroid/media/AudioManager$OnAudioPortUpdateListener;->onServiceDied()V +HPLandroid/media/AudioManager$ServiceEventHandlerDelegate;->getHandler()Landroid/os/Handler; +HPLandroid/media/AudioManager;->-wrap1(Landroid/media/AudioManager;Landroid/os/Handler;)V +HPLandroid/media/AudioManager;->abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;)I +HPLandroid/media/AudioManager;->abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;)I +HPLandroid/media/AudioManager;->abandonAudioFocusForCall()V +HPLandroid/media/AudioManager;->broadcastDeviceListChange(Landroid/os/Handler;)V +HPLandroid/media/AudioManager;->calcListDeltas(Ljava/util/ArrayList;Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; +HPLandroid/media/AudioManager;->checkFlags(Landroid/media/AudioDevicePort;I)Z +HPLandroid/media/AudioManager;->checkTypes(Landroid/media/AudioDevicePort;)Z +HPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HPLandroid/media/AudioManager;->forceVolumeControlStream(I)V +HPLandroid/media/AudioManager;->getDevices(I)[Landroid/media/AudioDeviceInfo; +HPLandroid/media/AudioManager;->getDevicesStatic(I)[Landroid/media/AudioDeviceInfo; +HPLandroid/media/AudioManager;->getIdForAudioFocusListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;)Ljava/lang/String; +HPLandroid/media/AudioManager;->getUiSoundsStreamType()I +HPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; +HPLandroid/media/AudioManager;->isInputDevice(I)Z +HPLandroid/media/AudioManager;->isMicrophoneMute()Z +HPLandroid/media/AudioManager;->isSpeakerphoneOn()Z +HPLandroid/media/AudioManager;->isStreamAffectedByRingerMode(I)Z +HPLandroid/media/AudioManager;->listAudioDevicePorts(Ljava/util/ArrayList;)I +HPLandroid/media/AudioManager;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V +HPLandroid/media/AudioManager;->playSoundEffect(II)V +HPLandroid/media/AudioManager;->preDispatchKeyEvent(Landroid/view/KeyEvent;I)V +HPLandroid/media/AudioManager;->registerAudioDeviceCallback(Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V +HPLandroid/media/AudioManager;->registerAudioFocusRequest(Landroid/media/AudioFocusRequest;)V +HPLandroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V +HPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioFocusRequest;)I +HPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioFocusRequest;Landroid/media/audiopolicy/AudioPolicy;)I +HPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;II)I +HPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;II)I +HPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;IILandroid/media/audiopolicy/AudioPolicy;)I +HPLandroid/media/AudioManager;->requestAudioFocusForCall(II)V +HPLandroid/media/AudioManager;->resetAudioPortGeneration()I +HPLandroid/media/AudioManager;->setMode(I)V +HPLandroid/media/AudioManager;->unregisterAudioFocusRequest(Landroid/media/AudioManager$OnAudioFocusChangeListener;)V +HPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I +HPLandroid/media/AudioManager;->updatePortConfig(Landroid/media/AudioPortConfig;Ljava/util/ArrayList;)Landroid/media/AudioPortConfig; +HPLandroid/media/AudioManagerInternal$RingerModeDelegate;->canVolumeDownEnterSilent()Z +HPLandroid/media/AudioManagerInternal$RingerModeDelegate;->getRingerModeAffectedStreams(I)I +HPLandroid/media/AudioManagerInternal$RingerModeDelegate;->onSetRingerModeExternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I +HPLandroid/media/AudioManagerInternal$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I +HPLandroid/media/AudioManagerInternal;->()V +HPLandroid/media/AudioManagerInternal;->adjustStreamVolumeForUid(IIILjava/lang/String;I)V +HPLandroid/media/AudioManagerInternal;->adjustSuggestedStreamVolumeForUid(IIILjava/lang/String;I)V +HPLandroid/media/AudioManagerInternal;->getRingerModeInternal()I +HPLandroid/media/AudioManagerInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V +HPLandroid/media/AudioManagerInternal;->setRingerModeDelegate(Landroid/media/AudioManagerInternal$RingerModeDelegate;)V +HPLandroid/media/AudioManagerInternal;->setRingerModeInternal(ILjava/lang/String;)V +HPLandroid/media/AudioManagerInternal;->setStreamVolumeForUid(IIILjava/lang/String;I)V +HPLandroid/media/AudioManagerInternal;->updateRingerModeAffectedStreamsInternal()V +HPLandroid/media/AudioMixPort;->(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V +HPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioMixPortConfig; +HPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HPLandroid/media/AudioMixPortConfig;->(Landroid/media/AudioMixPort;IIILandroid/media/AudioGainConfig;)V +HPLandroid/media/AudioPatch;->(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V +HPLandroid/media/AudioPatch;->sinks()[Landroid/media/AudioPortConfig; +HPLandroid/media/AudioPatch;->sources()[Landroid/media/AudioPortConfig; +HPLandroid/media/AudioPlaybackConfiguration$1;->()V +HPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->(Landroid/media/AudioPlaybackConfiguration;Landroid/media/IPlayer;)V +HPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->binderDied()V +HPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->getIPlayer()Landroid/media/IPlayer; +HPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->monitorDeath()V +HPLandroid/media/AudioPlaybackConfiguration$PlayerDeathMonitor;->playerDeath(I)V +HPLandroid/media/AudioPlaybackConfiguration;->-wrap0(Landroid/media/AudioPlaybackConfiguration;)V +HPLandroid/media/AudioPlaybackConfiguration;->(Landroid/media/PlayerBase$PlayerIdCard;III)V +HPLandroid/media/AudioPlaybackConfiguration;->getAudioAttributes()Landroid/media/AudioAttributes; +HPLandroid/media/AudioPlaybackConfiguration;->getClientPid()I +HPLandroid/media/AudioPlaybackConfiguration;->getClientUid()I +HPLandroid/media/AudioPlaybackConfiguration;->getIPlayer()Landroid/media/IPlayer; +HPLandroid/media/AudioPlaybackConfiguration;->getPlayerInterfaceId()I +HPLandroid/media/AudioPlaybackConfiguration;->getPlayerProxy()Landroid/media/PlayerProxy; +HPLandroid/media/AudioPlaybackConfiguration;->getPlayerState()I +HPLandroid/media/AudioPlaybackConfiguration;->getPlayerType()I +HPLandroid/media/AudioPlaybackConfiguration;->handleAudioAttributesEvent(Landroid/media/AudioAttributes;)Z +HPLandroid/media/AudioPlaybackConfiguration;->handleStateEvent(I)Z +HPLandroid/media/AudioPlaybackConfiguration;->init()V +HPLandroid/media/AudioPlaybackConfiguration;->isActive()Z +HPLandroid/media/AudioPlaybackConfiguration;->playerDied()V +HPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V +HPLandroid/media/AudioPort;->handle()Landroid/media/AudioHandle; +HPLandroid/media/AudioPort;->id()I +HPLandroid/media/AudioPort;->role()I +HPLandroid/media/AudioPortConfig;->(Landroid/media/AudioPort;IIILandroid/media/AudioGainConfig;)V +HPLandroid/media/AudioPortConfig;->channelMask()I +HPLandroid/media/AudioPortConfig;->format()I +HPLandroid/media/AudioPortConfig;->gain()Landroid/media/AudioGainConfig; +HPLandroid/media/AudioPortConfig;->port()Landroid/media/AudioPort; +HPLandroid/media/AudioPortConfig;->samplingRate()I +HPLandroid/media/AudioPortEventHandler$1;->(Landroid/media/AudioPortEventHandler;Landroid/os/Looper;)V +HPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V +HPLandroid/media/AudioPortEventHandler;->-get0(Landroid/media/AudioPortEventHandler;)Ljava/util/ArrayList; +HPLandroid/media/AudioPortEventHandler;->handler()Landroid/os/Handler; +HPLandroid/media/AudioPortEventHandler;->init()V +HPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HPLandroid/media/AudioPortEventHandler;->registerListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V +HPLandroid/media/AudioRecord;->(IIIII)V +HPLandroid/media/AudioRecord;->(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)V +HPLandroid/media/AudioRecord;->audioBuffSizeCheck(I)V +HPLandroid/media/AudioRecord;->audioParamCheck(III)V +HPLandroid/media/AudioRecord;->finalize()V +HPLandroid/media/AudioRecord;->getChannelMaskFromLegacyConfig(IZ)I +HPLandroid/media/AudioRecord;->getMinBufferSize(III)I +HPLandroid/media/AudioRecord;->getRecordingState()I +HPLandroid/media/AudioRecord;->getState()I +HPLandroid/media/AudioRecord;->handleFullVolumeRec(Z)V +HPLandroid/media/AudioRecord;->read([BII)I +HPLandroid/media/AudioRecord;->read([BIII)I +HPLandroid/media/AudioRecord;->release()V +HPLandroid/media/AudioRecord;->startRecording()V +HPLandroid/media/AudioRecord;->stop()V +HPLandroid/media/AudioRoutesInfo;->(Landroid/media/AudioRoutesInfo;)V +HPLandroid/media/AudioRoutesInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/media/AudioSystem$AudioRecordingCallback;->onRecordingConfigurationChanged(IIII[ILjava/lang/String;)V +HPLandroid/media/AudioSystem$DynamicPolicyCallback;->onDynamicPolicyMixStateUpdate(Ljava/lang/String;I)V +HPLandroid/media/AudioSystem;->getNumStreamTypes()I +HPLandroid/media/AudioSystem;->getOutputDeviceName(I)Ljava/lang/String; +HPLandroid/media/AudioSystem;->getValueForVibrateSetting(III)I +HPLandroid/media/AudioSystem;->recordingCallbackFromNative(IIII[I)V +HPLandroid/media/AudioSystem;->setRecordingCallback(Landroid/media/AudioSystem$AudioRecordingCallback;)V +HPLandroid/media/AudioTimestamp;->()V +HPLandroid/media/AudioTrack;->(IIIIII)V +HPLandroid/media/AudioTrack;->(IIIIIII)V +HPLandroid/media/AudioTrack;->(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V +HPLandroid/media/AudioTrack;->audioBuffSizeCheck(I)V +HPLandroid/media/AudioTrack;->audioParamCheck(IIIII)V +HPLandroid/media/AudioTrack;->clampGainOrLevel(F)F +HPLandroid/media/AudioTrack;->finalize()V +HPLandroid/media/AudioTrack;->flush()V +HPLandroid/media/AudioTrack;->getAudioSessionId()I +HPLandroid/media/AudioTrack;->getLatency()I +HPLandroid/media/AudioTrack;->getMinBufferSize(III)I +HPLandroid/media/AudioTrack;->getPlayState()I +HPLandroid/media/AudioTrack;->getPlaybackHeadPosition()I +HPLandroid/media/AudioTrack;->getSampleRate()I +HPLandroid/media/AudioTrack;->getState()I +HPLandroid/media/AudioTrack;->getTimestamp(Landroid/media/AudioTimestamp;)Z +HPLandroid/media/AudioTrack;->pause()V +HPLandroid/media/AudioTrack;->play()V +HPLandroid/media/AudioTrack;->playerSetVolume(ZFF)V +HPLandroid/media/AudioTrack;->release()V +HPLandroid/media/AudioTrack;->setStereoVolume(FF)I +HPLandroid/media/AudioTrack;->setVolume(F)I +HPLandroid/media/AudioTrack;->shouldEnablePowerSaving(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)Z +HPLandroid/media/AudioTrack;->startImpl()V +HPLandroid/media/AudioTrack;->stop()V +HPLandroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;II)I +HPLandroid/media/IAudioFocusDispatcher$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IAudioFocusDispatcher$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IAudioFocusDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioFocusDispatcher; +HPLandroid/media/IAudioRoutesObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IAudioRoutesObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IAudioRoutesObserver$Stub$Proxy;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V +HPLandroid/media/IAudioRoutesObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioRoutesObserver; +HPLandroid/media/IAudioRoutesObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IAudioService$Stub$Proxy;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I +HPLandroid/media/IAudioService$Stub$Proxy;->forceVolumeControlStream(ILandroid/os/IBinder;)V +HPLandroid/media/IAudioService$Stub$Proxy;->getUiSoundsStreamType()I +HPLandroid/media/IAudioService$Stub$Proxy;->isStreamAffectedByRingerMode(I)Z +HPLandroid/media/IAudioService$Stub$Proxy;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V +HPLandroid/media/IAudioService$Stub$Proxy;->playerEvent(II)V +HPLandroid/media/IAudioService$Stub$Proxy;->releasePlayer(I)V +HPLandroid/media/IAudioService$Stub$Proxy;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I +HPLandroid/media/IAudioService$Stub;->()V +HPLandroid/media/IAudioService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IMediaResourceMonitor$Stub;->()V +HPLandroid/media/IMediaResourceMonitor$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IMediaResourceMonitor;->notifyResourceGranted(II)V +HPLandroid/media/IMediaRouterClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IMediaRouterClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onRestoreRoute()V +HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onStateChanged()V +HPLandroid/media/IMediaRouterClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterClient; +HPLandroid/media/IMediaRouterClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IMediaRouterService$Stub;->()V +HPLandroid/media/IMediaRouterService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IPlaybackConfigDispatcher$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IPlayer$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IPlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IPlayer$Stub$Proxy;->pause()V +HPLandroid/media/IPlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlayer; +HPLandroid/media/IPlayer$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IRemoteVolumeController$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IRemoteVolumeController$Stub$Proxy;->updateRemoteController(Landroid/media/session/ISessionController;)V +HPLandroid/media/IRemoteVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRemoteVolumeController; +HPLandroid/media/IRemoteVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IRingtonePlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IRingtonePlayer$Stub$Proxy;->stopAsync()V +HPLandroid/media/IRingtonePlayer$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/IVolumeController$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/IVolumeController$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/IVolumeController$Stub$Proxy;->setLayoutDirection(I)V +HPLandroid/media/IVolumeController$Stub$Proxy;->volumeChanged(II)V +HPLandroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController; +HPLandroid/media/IVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/Image$Plane;->()V +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->-wrap0(Landroid/media/ImageReader$SurfaceImage$SurfacePlane;)V +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->(Landroid/media/ImageReader$SurfaceImage;IILjava/nio/ByteBuffer;)V +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->clearBuffer()V +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->getBuffer()Ljava/nio/ByteBuffer; +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->getPixelStride()I +HPLandroid/media/ImageReader$SurfaceImage$SurfacePlane;->getRowStride()I +HPLandroid/media/ImageReader$SurfaceImage;->getPlanes()[Landroid/media/Image$Plane; +HPLandroid/media/ImageReader;->-get1(Landroid/media/ImageReader;)I +HPLandroid/media/ImageReader;->-get5(Landroid/media/ImageReader;)I +HPLandroid/media/ImageReader;->acquireLatestImage()Landroid/media/Image; +HPLandroid/media/ImageReader;->acquireNextImageNoThrowISE()Landroid/media/Image; +HPLandroid/media/ImageReader;->discardFreeBuffers()V +HPLandroid/media/ImageReader;->finalize()V +HPLandroid/media/ImageWriter;->finalize()V +HPLandroid/media/MediaCodec$BufferInfo;->()V +HPLandroid/media/MediaCodec$BufferInfo;->dup()Landroid/media/MediaCodec$BufferInfo; +HPLandroid/media/MediaCodec$BufferInfo;->set(IIJI)V +HPLandroid/media/MediaCodec$BufferMap;->()V +HPLandroid/media/MediaCodec$BufferMap;->(Landroid/media/MediaCodec$BufferMap;)V +HPLandroid/media/MediaCodec$BufferMap;->clear()V +HPLandroid/media/MediaCodec$BufferMap;->remove(I)V +HPLandroid/media/MediaCodec$CryptoInfo$Pattern;->(II)V +HPLandroid/media/MediaCodec$CryptoInfo$Pattern;->set(II)V +HPLandroid/media/MediaCodec$CryptoInfo;->()V +HPLandroid/media/MediaCodec$CryptoInfo;->set(I[I[I[B[BI)V +HPLandroid/media/MediaCodec$EventHandler;->(Landroid/media/MediaCodec;Landroid/media/MediaCodec;Landroid/os/Looper;)V +HPLandroid/media/MediaCodec;->(Ljava/lang/String;ZZ)V +HPLandroid/media/MediaCodec;->cacheBuffers(Z)V +HPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V +HPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;Landroid/os/IHwBinder;I)V +HPLandroid/media/MediaCodec;->createByCodecName(Ljava/lang/String;)Landroid/media/MediaCodec; +HPLandroid/media/MediaCodec;->dequeueInputBuffer(J)I +HPLandroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I +HPLandroid/media/MediaCodec;->finalize()V +HPLandroid/media/MediaCodec;->freeAllTrackedBuffers()V +HPLandroid/media/MediaCodec;->freeByteBuffer(Ljava/nio/ByteBuffer;)V +HPLandroid/media/MediaCodec;->freeByteBuffers([Ljava/nio/ByteBuffer;)V +HPLandroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer; +HPLandroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer; +HPLandroid/media/MediaCodec;->getOutputFormat()Landroid/media/MediaFormat; +HPLandroid/media/MediaCodec;->invalidateByteBuffer([Ljava/nio/ByteBuffer;I)V +HPLandroid/media/MediaCodec;->invalidateByteBuffers([Ljava/nio/ByteBuffer;)V +HPLandroid/media/MediaCodec;->queueInputBuffer(IIIJI)V +HPLandroid/media/MediaCodec;->queueSecureInputBuffer(IILandroid/media/MediaCodec$CryptoInfo;JI)V +HPLandroid/media/MediaCodec;->release()V +HPLandroid/media/MediaCodec;->releaseOutputBuffer(IJ)V +HPLandroid/media/MediaCodec;->releaseOutputBuffer(IZ)V +HPLandroid/media/MediaCodec;->setOutputSurface(Landroid/view/Surface;)V +HPLandroid/media/MediaCodec;->start()V +HPLandroid/media/MediaCodec;->stop()V +HPLandroid/media/MediaCodec;->validateInputByteBuffer([Ljava/nio/ByteBuffer;I)V +HPLandroid/media/MediaCodec;->validateOutputByteBuffer([Ljava/nio/ByteBuffer;ILandroid/media/MediaCodec$BufferInfo;)V +HPLandroid/media/MediaCodecInfo$AudioCapabilities;->getMaxInputChannelCount()I +HPLandroid/media/MediaCodecInfo$AudioCapabilities;->isSampleRateSupported(I)Z +HPLandroid/media/MediaCodecInfo$CodecCapabilities;->getAudioCapabilities()Landroid/media/MediaCodecInfo$AudioCapabilities; +HPLandroid/media/MediaCodecInfo$CodecCapabilities;->getVideoCapabilities()Landroid/media/MediaCodecInfo$VideoCapabilities; +HPLandroid/media/MediaCodecInfo$VideoCapabilities;->isSizeSupported(II)Z +HPLandroid/media/MediaCodecInfo$VideoCapabilities;->supports(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Number;)Z +HPLandroid/media/MediaCrypto;->(Ljava/util/UUID;[B)V +HPLandroid/media/MediaCrypto;->finalize()V +HPLandroid/media/MediaCrypto;->getByteArrayFromUUID(Ljava/util/UUID;)[B +HPLandroid/media/MediaDescription$1;->()V +HPLandroid/media/MediaDescription$Builder;->()V +HPLandroid/media/MediaDescription$Builder;->build()Landroid/media/MediaDescription; +HPLandroid/media/MediaDescription$Builder;->setDescription(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setIconBitmap(Landroid/graphics/Bitmap;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setIconUri(Landroid/net/Uri;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setMediaId(Ljava/lang/String;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setMediaUri(Landroid/net/Uri;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setSubtitle(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/media/MediaDescription$Builder; +HPLandroid/media/MediaDescription;->(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/graphics/Bitmap;Landroid/net/Uri;Landroid/os/Bundle;Landroid/net/Uri;)V +HPLandroid/media/MediaDescription;->(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/graphics/Bitmap;Landroid/net/Uri;Landroid/os/Bundle;Landroid/net/Uri;Landroid/media/MediaDescription;)V +HPLandroid/media/MediaDescription;->getDescription()Ljava/lang/CharSequence; +HPLandroid/media/MediaDescription;->toString()Ljava/lang/String; +HPLandroid/media/MediaDrm$EventHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/media/MediaDrm$KeyRequest;->getData()[B +HPLandroid/media/MediaDrm$KeyRequest;->getDefaultUrl()Ljava/lang/String; +HPLandroid/media/MediaDrm$OnEventListener;->onEvent(Landroid/media/MediaDrm;[BII[B)V +HPLandroid/media/MediaDrm;->-get0(Landroid/media/MediaDrm;)J +HPLandroid/media/MediaDrm;->-get2(Landroid/media/MediaDrm;)Landroid/media/MediaDrm$OnExpirationUpdateListener; +HPLandroid/media/MediaDrm;->-get3(Landroid/media/MediaDrm;)Landroid/media/MediaDrm$OnKeyStatusChangeListener; +HPLandroid/media/MediaDrm;->finalize()V +HPLandroid/media/MediaDrm;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HPLandroid/media/MediaDrm;->setOnEventListener(Landroid/media/MediaDrm$OnEventListener;)V +HPLandroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I +HPLandroid/media/MediaFormat;->setByteBuffer(Ljava/lang/String;Ljava/nio/ByteBuffer;)V +HPLandroid/media/MediaFormat;->setLong(Ljava/lang/String;J)V +HPLandroid/media/MediaMetadata$1;->()V +HPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaMetadata; +HPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/MediaMetadata$Builder;->(Landroid/media/MediaMetadata;)V +HPLandroid/media/MediaMetadata$Builder;->(Landroid/media/MediaMetadata;I)V +HPLandroid/media/MediaMetadata$Builder;->build()Landroid/media/MediaMetadata; +HPLandroid/media/MediaMetadata;->-get1(Landroid/media/MediaMetadata;)Landroid/os/Bundle; +HPLandroid/media/MediaMetadata;->(Landroid/os/Bundle;)V +HPLandroid/media/MediaMetadata;->(Landroid/os/Bundle;Landroid/media/MediaMetadata;)V +HPLandroid/media/MediaMetadata;->(Landroid/os/Parcel;)V +HPLandroid/media/MediaMetadata;->(Landroid/os/Parcel;Landroid/media/MediaMetadata;)V +HPLandroid/media/MediaMetadata;->containsKey(Ljava/lang/String;)Z +HPLandroid/media/MediaMetadata;->getBitmap(Ljava/lang/String;)Landroid/graphics/Bitmap; +HPLandroid/media/MediaMetadata;->getDescription()Landroid/media/MediaDescription; +HPLandroid/media/MediaMetadata;->getLong(Ljava/lang/String;)J +HPLandroid/media/MediaMetadata;->getString(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/media/MediaMetadata;->getText(Ljava/lang/String;)Ljava/lang/CharSequence; +HPLandroid/media/MediaMetadata;->size()I +HPLandroid/media/MediaMetadata;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/media/MediaPlayer$2;->onCompletion(Landroid/media/MediaPlayer;)V +HPLandroid/media/MediaPlayer$TimeProvider;->close()V +HPLandroid/media/MediaPlayer$TimeProvider;->finalize()V +HPLandroid/media/MediaPlayer;->-get11(Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$OnErrorListener; +HPLandroid/media/MediaPlayer;->-get7(Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$OnCompletionListener; +HPLandroid/media/MediaPlayer;->-get8(Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$OnCompletionListener; +HPLandroid/media/MediaPlayer;->-wrap4(Landroid/media/MediaPlayer;Z)V +HPLandroid/media/MediaPlayer;->cleanDrmObj()V +HPLandroid/media/MediaPlayer;->finalize()V +HPLandroid/media/MediaPlayer;->pause()V +HPLandroid/media/MediaPlayer;->playerPause()V +HPLandroid/media/MediaPlayer;->release()V +HPLandroid/media/MediaPlayer;->reset()V +HPLandroid/media/MediaPlayer;->resetDrmState()V +HPLandroid/media/MediaPlayer;->setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V +HPLandroid/media/MediaPlayer;->setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V +HPLandroid/media/MediaPlayer;->setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V +HPLandroid/media/MediaPlayer;->stayAwake(Z)V +HPLandroid/media/MediaPlayer;->updateSurfaceScreenOn()V +HPLandroid/media/MediaRecorder;->getAudioSourceMax()I +HPLandroid/media/MediaRecorder;->isSystemOnlyAudioSource(I)Z +HPLandroid/media/MediaRouter$Static$1$1;->(Landroid/media/MediaRouter$Static$1;Landroid/media/AudioRoutesInfo;)V +HPLandroid/media/MediaRouter$Static$1$1;->run()V +HPLandroid/media/MediaRouter$Static$1;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V +HPLandroid/media/MediaRouter$Static$Client$1;->(Landroid/media/MediaRouter$Static$Client;)V +HPLandroid/media/MediaRouter$Static$Client$1;->run()V +HPLandroid/media/MediaRouter$Static$Client;->onRestoreRoute()V +HPLandroid/media/MediaRouter$Static$Client;->onStateChanged()V +HPLandroid/media/MediaRouter$Static;->onDisplayChanged(I)V +HPLandroid/media/MediaRouter$Static;->updatePresentationDisplays(I)V +HPLandroid/media/MediaRouterClientState$1;->()V +HPLandroid/media/MediaRouterClientState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaRouterClientState; +HPLandroid/media/MediaRouterClientState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/MediaRouterClientState$RouteInfo$1;->()V +HPLandroid/media/MediaRouterClientState;->()V +HPLandroid/media/MediaRouterClientState;->(Landroid/os/Parcel;)V +HPLandroid/media/MediaRouterClientState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/media/PlayerBase$IPlayerWrapper;->pause()V +HPLandroid/media/PlayerBase$PlayerIdCard$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/PlayerBase$PlayerIdCard; +HPLandroid/media/PlayerBase$PlayerIdCard$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/PlayerBase$PlayerIdCard;->(Landroid/os/Parcel;)V +HPLandroid/media/PlayerBase$PlayerIdCard;->(Landroid/os/Parcel;Landroid/media/PlayerBase$PlayerIdCard;)V +HPLandroid/media/PlayerBase;->basePause()V +HPLandroid/media/PlayerBase;->baseRelease()V +HPLandroid/media/PlayerBase;->baseStart()V +HPLandroid/media/PlayerBase;->baseStop()V +HPLandroid/media/PlayerBase;->getStartDelayMs()I +HPLandroid/media/PlayerProxy;->(Landroid/media/AudioPlaybackConfiguration;)V +HPLandroid/media/PlayerProxy;->pause()V +HPLandroid/media/Ringtone;->finalize()V +HPLandroid/media/Ringtone;->setAudioAttributes(Landroid/media/AudioAttributes;)V +HPLandroid/media/Ringtone;->setStreamType(I)V +HPLandroid/media/Ringtone;->stop()V +HPLandroid/media/SoundPool;->finalize()V +HPLandroid/media/SoundPool;->play(IFFIIF)I +HPLandroid/media/SoundPool;->playerPause()V +HPLandroid/media/SoundPool;->release()V +HPLandroid/media/SubtitleController;->-wrap0(Landroid/media/SubtitleController;)V +HPLandroid/media/SubtitleController;->-wrap2(Landroid/media/SubtitleController;Landroid/media/SubtitleTrack;)V +HPLandroid/media/SubtitleController;->doHide()V +HPLandroid/media/SubtitleController;->doSelectTrack(Landroid/media/SubtitleTrack;)V +HPLandroid/media/SubtitleController;->finalize()V +HPLandroid/media/SubtitleController;->hide()V +HPLandroid/media/SubtitleController;->reset()V +HPLandroid/media/SubtitleController;->selectTrack(Landroid/media/SubtitleTrack;)Z +HPLandroid/media/ToneGenerator;->finalize()V +HPLandroid/media/VolumePolicy$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/VolumePolicy; +HPLandroid/media/VolumePolicy$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/VolumePolicy;->equals(Ljava/lang/Object;)Z +HPLandroid/media/VolumeShaper$Configuration$Builder;->()V +HPLandroid/media/VolumeShaper$Configuration$Builder;->build()Landroid/media/VolumeShaper$Configuration; +HPLandroid/media/VolumeShaper$Configuration$Builder;->setCurve([F[F)Landroid/media/VolumeShaper$Configuration$Builder; +HPLandroid/media/VolumeShaper$Configuration$Builder;->setDuration(J)Landroid/media/VolumeShaper$Configuration$Builder; +HPLandroid/media/VolumeShaper$Configuration$Builder;->setId(I)Landroid/media/VolumeShaper$Configuration$Builder; +HPLandroid/media/VolumeShaper$Configuration$Builder;->setOptionFlags(I)Landroid/media/VolumeShaper$Configuration$Builder; +HPLandroid/media/VolumeShaper$Configuration;->-wrap0([F[FZZ)V +HPLandroid/media/VolumeShaper$Configuration;->(I)V +HPLandroid/media/VolumeShaper$Configuration;->(IIIDI[F[F)V +HPLandroid/media/VolumeShaper$Configuration;->(IIIDI[F[FLandroid/media/VolumeShaper$Configuration;)V +HPLandroid/media/VolumeShaper$Configuration;->checkCurveForErrors([F[FZ)Ljava/lang/String; +HPLandroid/media/VolumeShaper$Configuration;->checkCurveForErrorsAndThrowException([F[FZZ)V +HPLandroid/media/VolumeShaper$Operation$Builder;->(Landroid/media/VolumeShaper$Operation;)V +HPLandroid/media/VolumeShaper$Operation$Builder;->build()Landroid/media/VolumeShaper$Operation; +HPLandroid/media/VolumeShaper$Operation$Builder;->createIfNeeded()Landroid/media/VolumeShaper$Operation$Builder; +HPLandroid/media/VolumeShaper$Operation$Builder;->setXOffset(F)Landroid/media/VolumeShaper$Operation$Builder; +HPLandroid/media/VolumeShaper$Operation;->-get0(Landroid/media/VolumeShaper$Operation;)I +HPLandroid/media/VolumeShaper$Operation;->-get1(Landroid/media/VolumeShaper$Operation;)I +HPLandroid/media/VolumeShaper$Operation;->-get2(Landroid/media/VolumeShaper$Operation;)F +HPLandroid/media/VolumeShaper$Operation;->(IIF)V +HPLandroid/media/VolumeShaper$Operation;->(IIFLandroid/media/VolumeShaper$Operation;)V +HPLandroid/media/audiofx/AudioEffect$Descriptor;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/media/audiofx/AudioEffect;->(Ljava/util/UUID;Ljava/util/UUID;II)V +HPLandroid/media/audiofx/AudioEffect;->byteArrayToInt([B)I +HPLandroid/media/audiofx/AudioEffect;->byteArrayToInt([BI)I +HPLandroid/media/audiofx/AudioEffect;->checkState(Ljava/lang/String;)V +HPLandroid/media/audiofx/AudioEffect;->checkStatus(I)V +HPLandroid/media/audiofx/AudioEffect;->finalize()V +HPLandroid/media/audiofx/AudioEffect;->getDescriptor()Landroid/media/audiofx/AudioEffect$Descriptor; +HPLandroid/media/audiofx/AudioEffect;->getParameter(I[I)I +HPLandroid/media/audiofx/AudioEffect;->getParameter([B[B)I +HPLandroid/media/audiofx/AudioEffect;->intToByteArray(I)[B +HPLandroid/media/audiofx/AudioEffect;->isError(I)Z +HPLandroid/media/audiofx/AudioEffect;->queryEffects()[Landroid/media/audiofx/AudioEffect$Descriptor; +HPLandroid/media/audiofx/Virtualizer;->(II)V +HPLandroid/media/audiopolicy/IAudioPolicyCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/audiopolicy/IAudioPolicyCallback; +HPLandroid/media/midi/IMidiManager$Stub;->()V +HPLandroid/media/midi/IMidiManager;->closeDevice(Landroid/os/IBinder;Landroid/os/IBinder;)V +HPLandroid/media/midi/IMidiManager;->getDeviceStatus(Landroid/media/midi/MidiDeviceInfo;)Landroid/media/midi/MidiDeviceStatus; +HPLandroid/media/midi/IMidiManager;->getDevices()[Landroid/media/midi/MidiDeviceInfo; +HPLandroid/media/midi/IMidiManager;->getServiceDeviceInfo(Ljava/lang/String;Ljava/lang/String;)Landroid/media/midi/MidiDeviceInfo; +HPLandroid/media/midi/IMidiManager;->openBluetoothDevice(Landroid/os/IBinder;Landroid/bluetooth/BluetoothDevice;Landroid/media/midi/IMidiDeviceOpenCallback;)V +HPLandroid/media/midi/IMidiManager;->openDevice(Landroid/os/IBinder;Landroid/media/midi/MidiDeviceInfo;Landroid/media/midi/IMidiDeviceOpenCallback;)V +HPLandroid/media/midi/IMidiManager;->registerDeviceServer(Landroid/media/midi/IMidiDeviceServer;II[Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;I)Landroid/media/midi/MidiDeviceInfo; +HPLandroid/media/midi/IMidiManager;->registerListener(Landroid/os/IBinder;Landroid/media/midi/IMidiDeviceListener;)V +HPLandroid/media/midi/IMidiManager;->setDeviceStatus(Landroid/media/midi/IMidiDeviceServer;Landroid/media/midi/MidiDeviceStatus;)V +HPLandroid/media/midi/IMidiManager;->unregisterDeviceServer(Landroid/media/midi/IMidiDeviceServer;)V +HPLandroid/media/midi/IMidiManager;->unregisterListener(Landroid/os/IBinder;Landroid/media/midi/IMidiDeviceListener;)V +HPLandroid/media/projection/IMediaProjectionManager$Stub;->()V +HPLandroid/media/projection/IMediaProjectionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionWatcherCallback; +HPLandroid/media/session/IActiveSessionsListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/IActiveSessionsListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/IActiveSessionsListener$Stub$Proxy;->onActiveSessionsChanged(Ljava/util/List;)V +HPLandroid/media/session/IActiveSessionsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/IActiveSessionsListener; +HPLandroid/media/session/IActiveSessionsListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/ICallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/ICallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V +HPLandroid/media/session/ICallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ICallback; +HPLandroid/media/session/ICallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/ISession$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/ISession$Stub$Proxy;->destroy()V +HPLandroid/media/session/ISession$Stub$Proxy;->getController()Landroid/media/session/ISessionController; +HPLandroid/media/session/ISession$Stub$Proxy;->setActive(Z)V +HPLandroid/media/session/ISession$Stub$Proxy;->setFlags(I)V +HPLandroid/media/session/ISession$Stub$Proxy;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V +HPLandroid/media/session/ISession$Stub$Proxy;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V +HPLandroid/media/session/ISession$Stub$Proxy;->setMetadata(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/ISession$Stub$Proxy;->setPlaybackState(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/ISession$Stub$Proxy;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V +HPLandroid/media/session/ISession$Stub;->()V +HPLandroid/media/session/ISession$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISession; +HPLandroid/media/session/ISession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/ISession;->destroy()V +HPLandroid/media/session/ISession;->getCallingPackage()Ljava/lang/String; +HPLandroid/media/session/ISession;->getController()Landroid/media/session/ISessionController; +HPLandroid/media/session/ISession;->sendEvent(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISession;->setActive(Z)V +HPLandroid/media/session/ISession;->setCurrentVolume(I)V +HPLandroid/media/session/ISession;->setExtras(Landroid/os/Bundle;)V +HPLandroid/media/session/ISession;->setFlags(I)V +HPLandroid/media/session/ISession;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V +HPLandroid/media/session/ISession;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V +HPLandroid/media/session/ISession;->setMetadata(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/ISession;->setPlaybackState(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/ISession;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V +HPLandroid/media/session/ISession;->setPlaybackToRemote(II)V +HPLandroid/media/session/ISession;->setQueue(Landroid/content/pm/ParceledListSlice;)V +HPLandroid/media/session/ISession;->setQueueTitle(Ljava/lang/CharSequence;)V +HPLandroid/media/session/ISession;->setRatingType(I)V +HPLandroid/media/session/ISessionCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/ISessionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionCallback$Stub;->()V +HPLandroid/media/session/ISessionCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionCallback; +HPLandroid/media/session/ISessionCallback;->onAdjustVolume(I)V +HPLandroid/media/session/ISessionCallback;->onCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V +HPLandroid/media/session/ISessionCallback;->onCustomAction(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onFastForward()V +HPLandroid/media/session/ISessionCallback;->onMediaButton(Landroid/content/Intent;ILandroid/os/ResultReceiver;)V +HPLandroid/media/session/ISessionCallback;->onNext()V +HPLandroid/media/session/ISessionCallback;->onPause()V +HPLandroid/media/session/ISessionCallback;->onPlay()V +HPLandroid/media/session/ISessionCallback;->onPlayFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPlayFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPlayFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPrepare()V +HPLandroid/media/session/ISessionCallback;->onPrepareFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPrepareFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPrepareFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionCallback;->onPrevious()V +HPLandroid/media/session/ISessionCallback;->onRate(Landroid/media/Rating;)V +HPLandroid/media/session/ISessionCallback;->onRewind()V +HPLandroid/media/session/ISessionCallback;->onSeekTo(J)V +HPLandroid/media/session/ISessionCallback;->onSetVolumeTo(I)V +HPLandroid/media/session/ISessionCallback;->onSkipToTrack(J)V +HPLandroid/media/session/ISessionCallback;->onStop()V +HPLandroid/media/session/ISessionController$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/ISessionController$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionController$Stub$Proxy;->getMetadata()Landroid/media/MediaMetadata; +HPLandroid/media/session/ISessionController$Stub$Proxy;->getPackageName()Ljava/lang/String; +HPLandroid/media/session/ISessionController$Stub$Proxy;->getPlaybackState()Landroid/media/session/PlaybackState; +HPLandroid/media/session/ISessionController$Stub$Proxy;->getVolumeAttributes()Landroid/media/session/ParcelableVolumeInfo; +HPLandroid/media/session/ISessionController$Stub$Proxy;->registerCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +HPLandroid/media/session/ISessionController$Stub$Proxy;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +HPLandroid/media/session/ISessionController$Stub;->()V +HPLandroid/media/session/ISessionController$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionController; +HPLandroid/media/session/ISessionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/ISessionController;->adjustVolume(IILjava/lang/String;)V +HPLandroid/media/session/ISessionController;->fastForward()V +HPLandroid/media/session/ISessionController;->getExtras()Landroid/os/Bundle; +HPLandroid/media/session/ISessionController;->getFlags()J +HPLandroid/media/session/ISessionController;->getLaunchPendingIntent()Landroid/app/PendingIntent; +HPLandroid/media/session/ISessionController;->getMetadata()Landroid/media/MediaMetadata; +HPLandroid/media/session/ISessionController;->getPackageName()Ljava/lang/String; +HPLandroid/media/session/ISessionController;->getPlaybackState()Landroid/media/session/PlaybackState; +HPLandroid/media/session/ISessionController;->getQueue()Landroid/content/pm/ParceledListSlice; +HPLandroid/media/session/ISessionController;->getQueueTitle()Ljava/lang/CharSequence; +HPLandroid/media/session/ISessionController;->getRatingType()I +HPLandroid/media/session/ISessionController;->getTag()Ljava/lang/String; +HPLandroid/media/session/ISessionController;->getVolumeAttributes()Landroid/media/session/ParcelableVolumeInfo; +HPLandroid/media/session/ISessionController;->isTransportControlEnabled()Z +HPLandroid/media/session/ISessionController;->next()V +HPLandroid/media/session/ISessionController;->pause()V +HPLandroid/media/session/ISessionController;->play()V +HPLandroid/media/session/ISessionController;->playFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->playFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->playFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->prepare()V +HPLandroid/media/session/ISessionController;->prepareFromMediaId(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->prepareFromSearch(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->prepareFromUri(Landroid/net/Uri;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->previous()V +HPLandroid/media/session/ISessionController;->rate(Landroid/media/Rating;)V +HPLandroid/media/session/ISessionController;->registerCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +HPLandroid/media/session/ISessionController;->rewind()V +HPLandroid/media/session/ISessionController;->seekTo(J)V +HPLandroid/media/session/ISessionController;->sendCommand(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V +HPLandroid/media/session/ISessionController;->sendCustomAction(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionController;->sendMediaButton(Landroid/view/KeyEvent;)Z +HPLandroid/media/session/ISessionController;->setVolumeTo(IILjava/lang/String;)V +HPLandroid/media/session/ISessionController;->skipToQueueItem(J)V +HPLandroid/media/session/ISessionController;->stop()V +HPLandroid/media/session/ISessionController;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onMetadataChanged(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onSessionDestroyed()V +HPLandroid/media/session/ISessionControllerCallback$Stub;->()V +HPLandroid/media/session/ISessionControllerCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/media/session/ISessionControllerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionControllerCallback; +HPLandroid/media/session/ISessionControllerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/ISessionControllerCallback;->onEvent(Ljava/lang/String;Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionControllerCallback;->onExtrasChanged(Landroid/os/Bundle;)V +HPLandroid/media/session/ISessionControllerCallback;->onMetadataChanged(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/ISessionControllerCallback;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/ISessionControllerCallback;->onQueueChanged(Landroid/content/pm/ParceledListSlice;)V +HPLandroid/media/session/ISessionControllerCallback;->onQueueTitleChanged(Ljava/lang/CharSequence;)V +HPLandroid/media/session/ISessionControllerCallback;->onSessionDestroyed()V +HPLandroid/media/session/ISessionControllerCallback;->onVolumeInfoChanged(Landroid/media/session/ParcelableVolumeInfo;)V +HPLandroid/media/session/ISessionManager$Stub$Proxy;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;I)Landroid/media/session/ISession; +HPLandroid/media/session/ISessionManager$Stub$Proxy;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V +HPLandroid/media/session/ISessionManager$Stub$Proxy;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V +HPLandroid/media/session/ISessionManager$Stub;->()V +HPLandroid/media/session/ISessionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/media/session/MediaController$CallbackStub;->(Landroid/media/session/MediaController;)V +HPLandroid/media/session/MediaController$CallbackStub;->onMetadataChanged(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/MediaController$CallbackStub;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/MediaController$CallbackStub;->onSessionDestroyed()V +HPLandroid/media/session/MediaController$MessageHandler;->-get0(Landroid/media/session/MediaController$MessageHandler;)Landroid/media/session/MediaController$Callback; +HPLandroid/media/session/MediaController$MessageHandler;->-set0(Landroid/media/session/MediaController$MessageHandler;Z)Z +HPLandroid/media/session/MediaController$MessageHandler;->(Landroid/os/Looper;Landroid/media/session/MediaController$Callback;)V +HPLandroid/media/session/MediaController$MessageHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/media/session/MediaController$MessageHandler;->post(ILjava/lang/Object;Landroid/os/Bundle;)V +HPLandroid/media/session/MediaController$PlaybackInfo;->(ILandroid/media/AudioAttributes;III)V +HPLandroid/media/session/MediaController$PlaybackInfo;->getPlaybackType()I +HPLandroid/media/session/MediaController$TransportControls;->(Landroid/media/session/MediaController;)V +HPLandroid/media/session/MediaController$TransportControls;->(Landroid/media/session/MediaController;Landroid/media/session/MediaController$TransportControls;)V +HPLandroid/media/session/MediaController;->-wrap0(Landroid/media/session/MediaController;ILjava/lang/Object;Landroid/os/Bundle;)V +HPLandroid/media/session/MediaController;->(Landroid/content/Context;Landroid/media/session/ISessionController;)V +HPLandroid/media/session/MediaController;->(Landroid/content/Context;Landroid/media/session/MediaSession$Token;)V +HPLandroid/media/session/MediaController;->addCallbackLocked(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V +HPLandroid/media/session/MediaController;->getHandlerForCallbackLocked(Landroid/media/session/MediaController$Callback;)Landroid/media/session/MediaController$MessageHandler; +HPLandroid/media/session/MediaController;->getMetadata()Landroid/media/MediaMetadata; +HPLandroid/media/session/MediaController;->getPackageName()Ljava/lang/String; +HPLandroid/media/session/MediaController;->getPlaybackInfo()Landroid/media/session/MediaController$PlaybackInfo; +HPLandroid/media/session/MediaController;->getPlaybackState()Landroid/media/session/PlaybackState; +HPLandroid/media/session/MediaController;->getSessionToken()Landroid/media/session/MediaSession$Token; +HPLandroid/media/session/MediaController;->getTransportControls()Landroid/media/session/MediaController$TransportControls; +HPLandroid/media/session/MediaController;->postMessage(ILjava/lang/Object;Landroid/os/Bundle;)V +HPLandroid/media/session/MediaController;->registerCallback(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V +HPLandroid/media/session/MediaController;->removeCallbackLocked(Landroid/media/session/MediaController$Callback;)Z +HPLandroid/media/session/MediaController;->unregisterCallback(Landroid/media/session/MediaController$Callback;)V +HPLandroid/media/session/MediaSession$Callback;->-set0(Landroid/media/session/MediaSession$Callback;Landroid/media/session/MediaSession$CallbackMessageHandler;)Landroid/media/session/MediaSession$CallbackMessageHandler; +HPLandroid/media/session/MediaSession$Callback;->-set1(Landroid/media/session/MediaSession$Callback;Landroid/media/session/MediaSession;)Landroid/media/session/MediaSession; +HPLandroid/media/session/MediaSession$CallbackMessageHandler;->-get0(Landroid/media/session/MediaSession$CallbackMessageHandler;)Landroid/media/session/MediaSession$Callback; +HPLandroid/media/session/MediaSession$CallbackMessageHandler;->(Landroid/media/session/MediaSession;Landroid/os/Looper;Landroid/media/session/MediaSession$Callback;)V +HPLandroid/media/session/MediaSession$CallbackStub;->(Landroid/media/session/MediaSession;)V +HPLandroid/media/session/MediaSession$Token$1;->()V +HPLandroid/media/session/MediaSession$Token$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/MediaSession$Token; +HPLandroid/media/session/MediaSession$Token$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/session/MediaSession$Token;->(Landroid/media/session/ISessionController;)V +HPLandroid/media/session/MediaSession$Token;->equals(Ljava/lang/Object;)Z +HPLandroid/media/session/MediaSession$Token;->getBinder()Landroid/media/session/ISessionController; +HPLandroid/media/session/MediaSession$Token;->hashCode()I +HPLandroid/media/session/MediaSession$Token;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/media/session/MediaSession;->(Landroid/content/Context;Ljava/lang/String;)V +HPLandroid/media/session/MediaSession;->(Landroid/content/Context;Ljava/lang/String;I)V +HPLandroid/media/session/MediaSession;->getSessionToken()Landroid/media/session/MediaSession$Token; +HPLandroid/media/session/MediaSession;->isActive()Z +HPLandroid/media/session/MediaSession;->isActiveState(I)Z +HPLandroid/media/session/MediaSession;->release()V +HPLandroid/media/session/MediaSession;->setActive(Z)V +HPLandroid/media/session/MediaSession;->setCallback(Landroid/media/session/MediaSession$Callback;)V +HPLandroid/media/session/MediaSession;->setCallback(Landroid/media/session/MediaSession$Callback;Landroid/os/Handler;)V +HPLandroid/media/session/MediaSession;->setFlags(I)V +HPLandroid/media/session/MediaSession;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V +HPLandroid/media/session/MediaSession;->setMetadata(Landroid/media/MediaMetadata;)V +HPLandroid/media/session/MediaSession;->setPlaybackState(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/MediaSession;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V +HPLandroid/media/session/MediaSession;->setSessionActivity(Landroid/app/PendingIntent;)V +HPLandroid/media/session/MediaSessionLegacyHelper;->(Landroid/content/Context;)V +HPLandroid/media/session/MediaSessionLegacyHelper;->getHelper(Landroid/content/Context;)Landroid/media/session/MediaSessionLegacyHelper; +HPLandroid/media/session/MediaSessionLegacyHelper;->sendVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V +HPLandroid/media/session/MediaSessionManager$CallbackImpl$3;->(Landroid/media/session/MediaSessionManager$CallbackImpl;Landroid/media/session/MediaSession$Token;)V +HPLandroid/media/session/MediaSessionManager$CallbackImpl$3;->run()V +HPLandroid/media/session/MediaSessionManager$CallbackImpl;->-get0(Landroid/media/session/MediaSessionManager$CallbackImpl;)Landroid/media/session/MediaSessionManager$Callback; +HPLandroid/media/session/MediaSessionManager$CallbackImpl;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;->(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;Ljava/util/List;)V +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;->run()V +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->onActiveSessionsChanged(Ljava/util/List;)V +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->-get0(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/content/Context; +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->-get1(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/os/Handler; +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->-get2(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener; +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->-wrap0(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V +HPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->release()V +HPLandroid/media/session/MediaSessionManager;->createSession(Landroid/media/session/MediaSession$CallbackStub;Ljava/lang/String;I)Landroid/media/session/ISession; +HPLandroid/media/session/MediaSessionManager;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V +HPLandroid/media/session/ParcelableVolumeInfo$1;->()V +HPLandroid/media/session/ParcelableVolumeInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/ParcelableVolumeInfo; +HPLandroid/media/session/ParcelableVolumeInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/session/ParcelableVolumeInfo;->(ILandroid/media/AudioAttributes;III)V +HPLandroid/media/session/ParcelableVolumeInfo;->(Landroid/os/Parcel;)V +HPLandroid/media/session/ParcelableVolumeInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/media/session/PlaybackState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/PlaybackState; +HPLandroid/media/session/PlaybackState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/media/session/PlaybackState$Builder;->(Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/PlaybackState$Builder;->setActions(J)Landroid/media/session/PlaybackState$Builder; +HPLandroid/media/session/PlaybackState$Builder;->setActiveQueueItemId(J)Landroid/media/session/PlaybackState$Builder; +HPLandroid/media/session/PlaybackState$Builder;->setBufferedPosition(J)Landroid/media/session/PlaybackState$Builder; +HPLandroid/media/session/PlaybackState$Builder;->setErrorMessage(Ljava/lang/CharSequence;)Landroid/media/session/PlaybackState$Builder; +HPLandroid/media/session/PlaybackState$Builder;->setExtras(Landroid/os/Bundle;)Landroid/media/session/PlaybackState$Builder; +HPLandroid/media/session/PlaybackState$CustomAction$1;->()V +HPLandroid/media/session/PlaybackState;->-get0(Landroid/media/session/PlaybackState;)J +HPLandroid/media/session/PlaybackState;->-get1(Landroid/media/session/PlaybackState;)J +HPLandroid/media/session/PlaybackState;->-get2(Landroid/media/session/PlaybackState;)J +HPLandroid/media/session/PlaybackState;->-get3(Landroid/media/session/PlaybackState;)Ljava/util/List; +HPLandroid/media/session/PlaybackState;->-get4(Landroid/media/session/PlaybackState;)Ljava/lang/CharSequence; +HPLandroid/media/session/PlaybackState;->-get5(Landroid/media/session/PlaybackState;)Landroid/os/Bundle; +HPLandroid/media/session/PlaybackState;->-get6(Landroid/media/session/PlaybackState;)J +HPLandroid/media/session/PlaybackState;->-get7(Landroid/media/session/PlaybackState;)F +HPLandroid/media/session/PlaybackState;->-get8(Landroid/media/session/PlaybackState;)I +HPLandroid/media/session/PlaybackState;->-get9(Landroid/media/session/PlaybackState;)J +HPLandroid/media/session/PlaybackState;->(Landroid/os/Parcel;)V +HPLandroid/media/session/PlaybackState;->(Landroid/os/Parcel;Landroid/media/session/PlaybackState;)V +HPLandroid/media/session/PlaybackState;->getActiveQueueItemId()J +HPLandroid/media/session/PlaybackState;->getLastPositionUpdateTime()J +HPLandroid/media/session/PlaybackState;->getPlaybackSpeed()F +HPLandroid/media/session/PlaybackState;->getPosition()J +HPLandroid/media/session/PlaybackState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/metrics/LogMaker;->([Ljava/lang/Object;)V +HPLandroid/metrics/LogMaker;->clearCategory()Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->clearSubtype()Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->clearTaggedData(I)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->clearType()Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->deserialize([Ljava/lang/Object;)V +HPLandroid/metrics/LogMaker;->getCategory()I +HPLandroid/metrics/LogMaker;->getCounterBucket()J +HPLandroid/metrics/LogMaker;->getCounterName()Ljava/lang/String; +HPLandroid/metrics/LogMaker;->getCounterValue()I +HPLandroid/metrics/LogMaker;->getSubtype()I +HPLandroid/metrics/LogMaker;->getTimestamp()J +HPLandroid/metrics/LogMaker;->isLongCounterBucket()Z +HPLandroid/metrics/LogMaker;->setCounterBucket(I)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->setCounterName(Ljava/lang/String;)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->setCounterValue(I)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->setProcessId(I)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->setTimestamp(J)Landroid/metrics/LogMaker; +HPLandroid/metrics/LogMaker;->setUid(I)Landroid/metrics/LogMaker; +HPLandroid/metrics/MetricsReader$Event;->(Landroid/util/EventLog$Event;)V +HPLandroid/metrics/MetricsReader$Event;->getData()Ljava/lang/Object; +HPLandroid/metrics/MetricsReader$Event;->getProcessId()I +HPLandroid/metrics/MetricsReader$Event;->getTimeMillis()J +HPLandroid/metrics/MetricsReader$Event;->getUid()I +HPLandroid/metrics/MetricsReader$LogReader;->readEvents([IJLjava/util/Collection;)V +HPLandroid/metrics/MetricsReader$LogReader;->writeCheckpoint(I)V +HPLandroid/metrics/MetricsReader;->checkpoint()V +HPLandroid/metrics/MetricsReader;->hasNext()Z +HPLandroid/metrics/MetricsReader;->next()Landroid/metrics/LogMaker; +HPLandroid/metrics/MetricsReader;->read(J)V +HPLandroid/metrics/MetricsReader;->reset()V +HPLandroid/net/ConnectivityManager$NetworkCallback;->onAvailable(Landroid/net/Network;)V +HPLandroid/net/ConnectivityManager$NetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V +HPLandroid/net/ConnectivityManager$NetworkCallback;->onPreCheck(Landroid/net/Network;)V +HPLandroid/net/ConnectivityManager$OnNetworkActiveListener;->onNetworkActive()V +HPLandroid/net/ConnectivityManager;->bindProcessToNetwork(Landroid/net/Network;)Z +HPLandroid/net/ConnectivityManager;->checkChangePermission(Landroid/content/Context;)Z +HPLandroid/net/ConnectivityManager;->enforceTetherChangePermission(Landroid/content/Context;Ljava/lang/String;)V +HPLandroid/net/ConnectivityManager;->getActiveNetworkForUid(IZ)Landroid/net/Network; +HPLandroid/net/ConnectivityManager;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo; +HPLandroid/net/ConnectivityManager;->getBackgroundDataSetting()Z +HPLandroid/net/ConnectivityManager;->getBoundNetworkForProcess()Landroid/net/Network; +HPLandroid/net/ConnectivityManager;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +HPLandroid/net/ConnectivityManager;->getDefaultProxy()Landroid/net/ProxyInfo; +HPLandroid/net/ConnectivityManager;->getInstance()Landroid/net/ConnectivityManager; +HPLandroid/net/ConnectivityManager;->getInstanceOrNull()Landroid/net/ConnectivityManager; +HPLandroid/net/ConnectivityManager;->getNetworkTypeName(I)Ljava/lang/String; +HPLandroid/net/ConnectivityManager;->getProcessDefaultNetwork()Landroid/net/Network; +HPLandroid/net/ConnectivityManager;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; +HPLandroid/net/ConnectivityManager;->isNetworkTypeMobile(I)Z +HPLandroid/net/ConnectivityManager;->isNetworkTypeWifi(I)Z +HPLandroid/net/ConnectivityManager;->registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V +HPLandroid/net/ConnectivityManager;->registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V +HPLandroid/net/ConnectivityManager;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I +HPLandroid/net/ConnectivityManager;->reportNetworkConnectivity(Landroid/net/Network;Z)V +HPLandroid/net/ConnectivityManager;->setProcessDefaultNetwork(Landroid/net/Network;)Z +HPLandroid/net/ConnectivityManager;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V +HPLandroid/net/ConnectivityMetricsEvent$1;->()V +HPLandroid/net/ConnectivityMetricsEvent;->()V +HPLandroid/net/DhcpInfo$1;->()V +HPLandroid/net/DhcpInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/DhcpInfo; +HPLandroid/net/DhcpInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/DhcpInfo;->()V +HPLandroid/net/DhcpInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/DhcpResults$1;->()V +HPLandroid/net/DhcpResults;->()V +HPLandroid/net/DhcpResults;->(Landroid/net/DhcpResults;)V +HPLandroid/net/DhcpResults;->hasMeteredHint()Z +HPLandroid/net/DhcpResults;->toString()Ljava/lang/String; +HPLandroid/net/EthernetManager$1;->(Landroid/net/EthernetManager;)V +HPLandroid/net/EthernetManager$2;->(Landroid/net/EthernetManager;)V +HPLandroid/net/EthernetManager;->(Landroid/content/Context;Landroid/net/IEthernetManager;)V +HPLandroid/net/EventLogTags;->writeNtpFailure(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/IConnectivityManager$Stub$Proxy;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +HPLandroid/net/IConnectivityManager$Stub$Proxy;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig; +HPLandroid/net/IConnectivityManager$Stub$Proxy;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V +HPLandroid/net/IConnectivityManager$Stub$Proxy;->reportNetworkConnectivity(Landroid/net/Network;Z)V +HPLandroid/net/IConnectivityManager$Stub;->()V +HPLandroid/net/IConnectivityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/IEthernetManager$Stub;->()V +HPLandroid/net/IEthernetManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IEthernetManager; +HPLandroid/net/IEthernetManager;->addListener(Landroid/net/IEthernetServiceListener;)V +HPLandroid/net/IEthernetManager;->getConfiguration()Landroid/net/IpConfiguration; +HPLandroid/net/IEthernetManager;->isAvailable()Z +HPLandroid/net/IEthernetManager;->removeListener(Landroid/net/IEthernetServiceListener;)V +HPLandroid/net/IEthernetManager;->setConfiguration(Landroid/net/IpConfiguration;)V +HPLandroid/net/IEthernetServiceListener$Stub;->()V +HPLandroid/net/IEthernetServiceListener;->onAvailabilityChanged(Z)V +HPLandroid/net/IIpConnectivityMetrics$Stub;->()V +HPLandroid/net/IIpConnectivityMetrics$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IIpConnectivityMetrics; +HPLandroid/net/IIpConnectivityMetrics;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I +HPLandroid/net/IIpConnectivityMetrics;->registerNetdEventCallback(Landroid/net/INetdEventCallback;)Z +HPLandroid/net/IIpConnectivityMetrics;->unregisterNetdEventCallback()Z +HPLandroid/net/INetd$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/net/INetd$Stub$Proxy;->firewallReplaceUidChain(Ljava/lang/String;Z[I)Z +HPLandroid/net/INetd$Stub$Proxy;->setIPv6AddrGenMode(Ljava/lang/String;I)V +HPLandroid/net/INetd$Stub$Proxy;->setResolverConfiguration(I[Ljava/lang/String;[Ljava/lang/String;[I)V +HPLandroid/net/INetd$Stub$Proxy;->socketDestroy([Landroid/net/UidRange;[I)V +HPLandroid/net/INetd$Stub$Proxy;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V +HPLandroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd; +HPLandroid/net/INetd;->addPrivateDnsServer(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;)V +HPLandroid/net/INetd;->bandwidthEnableDataSaver(Z)Z +HPLandroid/net/INetd;->firewallReplaceUidChain(Ljava/lang/String;Z[I)Z +HPLandroid/net/INetd;->getMetricsReportingLevel()I +HPLandroid/net/INetd;->getResolverInfo(I[Ljava/lang/String;[Ljava/lang/String;[I[I)V +HPLandroid/net/INetd;->interfaceAddAddress(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/net/INetd;->interfaceDelAddress(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/net/INetd;->ipSecAddSecurityAssociation(IIILjava/lang/String;Ljava/lang/String;JILjava/lang/String;[BILjava/lang/String;[BIIII)V +HPLandroid/net/INetd;->ipSecAllocateSpi(IILjava/lang/String;Ljava/lang/String;I)I +HPLandroid/net/INetd;->ipSecApplyTransportModeTransform(Ljava/io/FileDescriptor;IILjava/lang/String;Ljava/lang/String;I)V +HPLandroid/net/INetd;->ipSecDeleteSecurityAssociation(IILjava/lang/String;Ljava/lang/String;I)V +HPLandroid/net/INetd;->ipSecRemoveTransportModeTransform(Ljava/io/FileDescriptor;)V +HPLandroid/net/INetd;->isAlive()Z +HPLandroid/net/INetd;->networkRejectNonSecureVpn(Z[Landroid/net/UidRange;)V +HPLandroid/net/INetd;->removePrivateDnsServer(Ljava/lang/String;)V +HPLandroid/net/INetd;->setIPv6AddrGenMode(Ljava/lang/String;I)V +HPLandroid/net/INetd;->setMetricsReportingLevel(I)V +HPLandroid/net/INetd;->setProcSysNet(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/INetd;->setResolverConfiguration(I[Ljava/lang/String;[Ljava/lang/String;[I)V +HPLandroid/net/INetd;->socketDestroy([Landroid/net/UidRange;[I)V +HPLandroid/net/INetd;->tetherApplyDnsInterfaces()Z +HPLandroid/net/INetd;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V +HPLandroid/net/INetd;->wakeupDelInterface(Ljava/lang/String;Ljava/lang/String;II)V +HPLandroid/net/INetworkManagementEventObserver$Stub;->()V +HPLandroid/net/INetworkManagementEventObserver$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/net/INetworkPolicyListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/net/INetworkPolicyListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/net/INetworkPolicyListener$Stub$Proxy;->onMeteredIfacesChanged([Ljava/lang/String;)V +HPLandroid/net/INetworkPolicyListener$Stub$Proxy;->onUidRulesChanged(II)V +HPLandroid/net/INetworkPolicyListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyListener; +HPLandroid/net/INetworkPolicyListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/INetworkPolicyManager$Stub;->()V +HPLandroid/net/INetworkPolicyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/INetworkRecommendationProvider$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/net/INetworkRecommendationProvider$Stub$Proxy;->requestScores([Landroid/net/NetworkKey;)V +HPLandroid/net/INetworkRecommendationProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkRecommendationProvider; +HPLandroid/net/INetworkRecommendationProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/INetworkScoreCache$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/net/INetworkScoreService$Stub$Proxy;->getActiveScorerPackage()Ljava/lang/String; +HPLandroid/net/INetworkScoreService$Stub$Proxy;->updateScores([Landroid/net/ScoredNetwork;)Z +HPLandroid/net/INetworkScoreService$Stub;->()V +HPLandroid/net/INetworkScoreService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/INetworkStatsService$Stub$Proxy;->incrementOperationCount(III)V +HPLandroid/net/INetworkStatsService$Stub;->()V +HPLandroid/net/INetworkStatsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/ITetheringStatsProvider$Stub;->()V +HPLandroid/net/InterfaceConfiguration$1;->()V +HPLandroid/net/InterfaceConfiguration;->()V +HPLandroid/net/InterfaceConfiguration;->getFlags()Ljava/lang/Iterable; +HPLandroid/net/InterfaceConfiguration;->getLinkAddress()Landroid/net/LinkAddress; +HPLandroid/net/InterfaceConfiguration;->setFlag(Ljava/lang/String;)V +HPLandroid/net/InterfaceConfiguration;->setHardwareAddress(Ljava/lang/String;)V +HPLandroid/net/InterfaceConfiguration;->setInterfaceUp()V +HPLandroid/net/InterfaceConfiguration;->setLinkAddress(Landroid/net/LinkAddress;)V +HPLandroid/net/InterfaceConfiguration;->validateFlag(Ljava/lang/String;)V +HPLandroid/net/IpConfiguration;->(Landroid/net/IpConfiguration$IpAssignment;Landroid/net/IpConfiguration$ProxySettings;Landroid/net/StaticIpConfiguration;Landroid/net/ProxyInfo;)V +HPLandroid/net/IpConfiguration;->(Landroid/net/IpConfiguration;)V +HPLandroid/net/IpConfiguration;->setIpAssignment(Landroid/net/IpConfiguration$IpAssignment;)V +HPLandroid/net/IpConfiguration;->setProxySettings(Landroid/net/IpConfiguration$ProxySettings;)V +HPLandroid/net/IpConfiguration;->toString()Ljava/lang/String; +HPLandroid/net/IpConfiguration;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/IpPrefix;->(Ljava/lang/String;)V +HPLandroid/net/IpPrefix;->(Ljava/net/InetAddress;I)V +HPLandroid/net/IpPrefix;->contains(Ljava/net/InetAddress;)Z +HPLandroid/net/IpPrefix;->hashCode()I +HPLandroid/net/IpPrefix;->toString()Ljava/lang/String; +HPLandroid/net/IpPrefix;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/LinkAddress;->(Ljava/lang/String;II)V +HPLandroid/net/LinkAddress;->(Ljava/net/InetAddress;I)V +HPLandroid/net/LinkAddress;->equals(Ljava/lang/Object;)Z +HPLandroid/net/LinkAddress;->getAddress()Ljava/net/InetAddress; +HPLandroid/net/LinkAddress;->getPrefixLength()I +HPLandroid/net/LinkAddress;->isGlobalPreferred()Z +HPLandroid/net/LinkAddress;->isIPv6()Z +HPLandroid/net/LinkAddress;->isIPv6ULA()Z +HPLandroid/net/LinkAddress;->scopeForUnicastAddress(Ljava/net/InetAddress;)I +HPLandroid/net/LinkAddress;->toString()Ljava/lang/String; +HPLandroid/net/LinkAddress;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/LinkProperties$CompareResult;->()V +HPLandroid/net/LinkProperties$ProvisioningChange;->(Ljava/lang/String;I)V +HPLandroid/net/LinkProperties$ProvisioningChange;->values()[Landroid/net/LinkProperties$ProvisioningChange; +HPLandroid/net/LinkProperties;->(Landroid/net/LinkProperties;)V +HPLandroid/net/LinkProperties;->clear()V +HPLandroid/net/LinkProperties;->compareAllInterfaceNames(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult; +HPLandroid/net/LinkProperties;->compareAllRoutes(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult; +HPLandroid/net/LinkProperties;->describeContents()I +HPLandroid/net/LinkProperties;->equals(Ljava/lang/Object;)Z +HPLandroid/net/LinkProperties;->getAddresses()Ljava/util/List; +HPLandroid/net/LinkProperties;->getAllInterfaceNames()Ljava/util/List; +HPLandroid/net/LinkProperties;->getAllRoutes()Ljava/util/List; +HPLandroid/net/LinkProperties;->getDomains()Ljava/lang/String; +HPLandroid/net/LinkProperties;->getHttpProxy()Landroid/net/ProxyInfo; +HPLandroid/net/LinkProperties;->getInterfaceName()Ljava/lang/String; +HPLandroid/net/LinkProperties;->getLinkAddresses()Ljava/util/List; +HPLandroid/net/LinkProperties;->getMtu()I +HPLandroid/net/LinkProperties;->getRoutes()Ljava/util/List; +HPLandroid/net/LinkProperties;->getStackedLinks()Ljava/util/List; +HPLandroid/net/LinkProperties;->getTcpBufferSizes()Ljava/lang/String; +HPLandroid/net/LinkProperties;->hasGlobalIPv6Address()Z +HPLandroid/net/LinkProperties;->hasIPv4Address()Z +HPLandroid/net/LinkProperties;->hasIPv4AddressOnInterface(Ljava/lang/String;)Z +HPLandroid/net/LinkProperties;->hasIPv4DefaultRoute()Z +HPLandroid/net/LinkProperties;->hasIPv4DnsServer()Z +HPLandroid/net/LinkProperties;->hasIPv6DefaultRoute()Z +HPLandroid/net/LinkProperties;->hasIPv6DnsServer()Z +HPLandroid/net/LinkProperties;->isIPv4Provisioned()Z +HPLandroid/net/LinkProperties;->isIPv6Provisioned()Z +HPLandroid/net/LinkProperties;->isIdenticalAddresses(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalDnses(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalHttpProxy(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalInterfaceName(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalMtu(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalRoutes(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalStackedLinks(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isIdenticalTcpBufferSizes(Landroid/net/LinkProperties;)Z +HPLandroid/net/LinkProperties;->isProvisioned()Z +HPLandroid/net/LinkProperties;->isReachable(Ljava/net/InetAddress;)Z +HPLandroid/net/LinkProperties;->removeLinkAddress(Landroid/net/LinkAddress;)Z +HPLandroid/net/LinkProperties;->removeRoute(Landroid/net/RouteInfo;)Z +HPLandroid/net/LinkProperties;->setDnsServers(Ljava/util/Collection;)V +HPLandroid/net/LinkProperties;->setHttpProxy(Landroid/net/ProxyInfo;)V +HPLandroid/net/LinkProperties;->setLinkAddresses(Ljava/util/Collection;)V +HPLandroid/net/LinkProperties;->toString()Ljava/lang/String; +HPLandroid/net/LinkProperties;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/LocalSocket;->getAncillaryFileDescriptors()[Ljava/io/FileDescriptor; +HPLandroid/net/LocalSocketImpl$SocketInputStream;->close()V +HPLandroid/net/LocalSocketImpl$SocketInputStream;->read()I +HPLandroid/net/LocalSocketImpl$SocketInputStream;->read([B)I +HPLandroid/net/LocalSocketImpl$SocketOutputStream;->close()V +HPLandroid/net/LocalSocketImpl$SocketOutputStream;->write(I)V +HPLandroid/net/LocalSocketImpl;->-wrap0(Landroid/net/LocalSocketImpl;Ljava/io/FileDescriptor;)I +HPLandroid/net/LocalSocketImpl;->-wrap2(Landroid/net/LocalSocketImpl;ILjava/io/FileDescriptor;)V +HPLandroid/net/LocalSocketImpl;->getAncillaryFileDescriptors()[Ljava/io/FileDescriptor; +HPLandroid/net/Network$2;->(Landroid/net/Network;)V +HPLandroid/net/Network$2;->lookup(Ljava/lang/String;)Ljava/util/List; +HPLandroid/net/Network$NetworkBoundSocketFactory;->(Landroid/net/Network;I)V +HPLandroid/net/Network$NetworkBoundSocketFactory;->createSocket()Ljava/net/Socket; +HPLandroid/net/Network;->(Landroid/net/Network;)V +HPLandroid/net/Network;->bindSocket(Ljava/io/FileDescriptor;)V +HPLandroid/net/Network;->bindSocket(Ljava/net/Socket;)V +HPLandroid/net/Network;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; +HPLandroid/net/Network;->getSocketFactory()Ljavax/net/SocketFactory; +HPLandroid/net/Network;->hashCode()I +HPLandroid/net/Network;->maybeInitHttpClient()V +HPLandroid/net/Network;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection; +HPLandroid/net/Network;->openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection; +HPLandroid/net/Network;->toString()Ljava/lang/String; +HPLandroid/net/NetworkAgent;->(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V +HPLandroid/net/NetworkAgent;->handleMessage(Landroid/os/Message;)V +HPLandroid/net/NetworkAgent;->log(Ljava/lang/String;)V +HPLandroid/net/NetworkAgent;->queueOrSendMessage(IIILjava/lang/Object;)V +HPLandroid/net/NetworkAgent;->queueOrSendMessage(ILjava/lang/Object;)V +HPLandroid/net/NetworkAgent;->queueOrSendMessage(Landroid/os/Message;)V +HPLandroid/net/NetworkAgent;->sendLinkProperties(Landroid/net/LinkProperties;)V +HPLandroid/net/NetworkAgent;->sendNetworkCapabilities(Landroid/net/NetworkCapabilities;)V +HPLandroid/net/NetworkAgent;->sendNetworkInfo(Landroid/net/NetworkInfo;)V +HPLandroid/net/NetworkAgent;->sendNetworkScore(I)V +HPLandroid/net/NetworkAgent;->unwanted()V +HPLandroid/net/NetworkCapabilities$1;->newArray(I)[Landroid/net/NetworkCapabilities; +HPLandroid/net/NetworkCapabilities$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/net/NetworkCapabilities;->describeFirstNonRequestableCapability()Ljava/lang/String; +HPLandroid/net/NetworkCapabilities;->equalRequestableCapabilities(Landroid/net/NetworkCapabilities;)Z +HPLandroid/net/NetworkCapabilities;->equalsNetCapabilitiesRequestable(Landroid/net/NetworkCapabilities;)Z +HPLandroid/net/NetworkCapabilities;->getLinkDownstreamBandwidthKbps()I +HPLandroid/net/NetworkCapabilities;->getLinkUpstreamBandwidthKbps()I +HPLandroid/net/NetworkCapabilities;->satisfiedByImmutableNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z +HPLandroid/net/NetworkCapabilities;->setSignalStrength(I)V +HPLandroid/net/NetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V +HPLandroid/net/NetworkIdentity;->(IILjava/lang/String;Ljava/lang/String;ZZ)V +HPLandroid/net/NetworkIdentity;->buildNetworkIdentity(Landroid/content/Context;Landroid/net/NetworkState;)Landroid/net/NetworkIdentity; +HPLandroid/net/NetworkIdentity;->equals(Ljava/lang/Object;)Z +HPLandroid/net/NetworkIdentity;->getMetered()Z +HPLandroid/net/NetworkIdentity;->getNetworkId()Ljava/lang/String; +HPLandroid/net/NetworkIdentity;->getRoaming()Z +HPLandroid/net/NetworkIdentity;->getSubType()I +HPLandroid/net/NetworkIdentity;->getSubscriberId()Ljava/lang/String; +HPLandroid/net/NetworkIdentity;->getType()I +HPLandroid/net/NetworkIdentity;->hashCode()I +HPLandroid/net/NetworkInfo;->(Landroid/net/NetworkInfo;)V +HPLandroid/net/NetworkInfo;->describeContents()I +HPLandroid/net/NetworkInfo;->getReason()Ljava/lang/String; +HPLandroid/net/NetworkInfo;->isAvailable()Z +HPLandroid/net/NetworkInfo;->isFailover()Z +HPLandroid/net/NetworkInfo;->setExtraInfo(Ljava/lang/String;)V +HPLandroid/net/NetworkInfo;->setIsAvailable(Z)V +HPLandroid/net/NetworkInfo;->setType(I)V +HPLandroid/net/NetworkInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/NetworkKey$1;->()V +HPLandroid/net/NetworkKey$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkKey; +HPLandroid/net/NetworkKey$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/NetworkKey$1;->newArray(I)[Landroid/net/NetworkKey; +HPLandroid/net/NetworkKey$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/net/NetworkKey;->(Landroid/net/WifiKey;)V +HPLandroid/net/NetworkKey;->(Landroid/os/Parcel;)V +HPLandroid/net/NetworkKey;->(Landroid/os/Parcel;Landroid/net/NetworkKey;)V +HPLandroid/net/NetworkKey;->createFromScanResult(Landroid/net/wifi/ScanResult;)Landroid/net/NetworkKey; +HPLandroid/net/NetworkKey;->equals(Ljava/lang/Object;)Z +HPLandroid/net/NetworkKey;->hashCode()I +HPLandroid/net/NetworkKey;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/NetworkMisc$1;->()V +HPLandroid/net/NetworkMisc;->()V +HPLandroid/net/NetworkMisc;->(Landroid/net/NetworkMisc;)V +HPLandroid/net/NetworkPolicyManager;->isProcStateAllowedWhileIdleOrPowerSaveMode(I)Z +HPLandroid/net/NetworkPolicyManager;->isProcStateAllowedWhileOnRestrictBackground(I)Z +HPLandroid/net/NetworkRecommendationProvider$ServiceWrapper$1;->(Landroid/net/NetworkRecommendationProvider$ServiceWrapper;[Landroid/net/NetworkKey;)V +HPLandroid/net/NetworkRecommendationProvider$ServiceWrapper$1;->run()V +HPLandroid/net/NetworkRecommendationProvider$ServiceWrapper;->enforceCallingPermission()V +HPLandroid/net/NetworkRecommendationProvider$ServiceWrapper;->execute(Ljava/lang/Runnable;)V +HPLandroid/net/NetworkRecommendationProvider$ServiceWrapper;->requestScores([Landroid/net/NetworkKey;)V +HPLandroid/net/NetworkRequest;->(Landroid/net/NetworkRequest;)V +HPLandroid/net/NetworkRequest;->isBackgroundRequest()Z +HPLandroid/net/NetworkRequest;->isForegroundRequest()Z +HPLandroid/net/NetworkRequest;->isListen()Z +HPLandroid/net/NetworkRequest;->isRequest()Z +HPLandroid/net/NetworkRequest;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/NetworkScoreManager;->getActiveScorerPackage()Ljava/lang/String; +HPLandroid/net/NetworkScoreManager;->isCallerActiveScorer(I)Z +HPLandroid/net/NetworkScoreManager;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V +HPLandroid/net/NetworkScoreManager;->requestScores([Landroid/net/NetworkKey;)Z +HPLandroid/net/NetworkScoreManager;->updateScores([Landroid/net/ScoredNetwork;)Z +HPLandroid/net/NetworkScorerAppData$1;->()V +HPLandroid/net/NetworkScorerAppData;->(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;)V +HPLandroid/net/NetworkScorerAppData;->equals(Ljava/lang/Object;)Z +HPLandroid/net/NetworkScorerAppData;->getRecommendationServiceComponent()Landroid/content/ComponentName; +HPLandroid/net/NetworkScorerAppData;->getRecommendationServicePackageName()Ljava/lang/String; +HPLandroid/net/NetworkState$1;->()V +HPLandroid/net/NetworkState;->(Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/Network;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/NetworkStats$Entry;->()V +HPLandroid/net/NetworkStats$Entry;->(Ljava/lang/String;IIIIIJJJJJ)V +HPLandroid/net/NetworkStats$Entry;->(Ljava/lang/String;IIIJJJJJ)V +HPLandroid/net/NetworkStats$Entry;->isEmpty()Z +HPLandroid/net/NetworkStats$Entry;->isNegative()Z +HPLandroid/net/NetworkStats$NonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILandroid/net/NetworkStats;ILjava/lang/Object;)V +HPLandroid/net/NetworkStats;->addValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats; +HPLandroid/net/NetworkStats;->combineAllValues(Landroid/net/NetworkStats;)V +HPLandroid/net/NetworkStats;->combineValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats; +HPLandroid/net/NetworkStats;->combineValues(Ljava/lang/String;IIIJJJJJ)Landroid/net/NetworkStats; +HPLandroid/net/NetworkStats;->findIndex(Ljava/lang/String;IIIII)I +HPLandroid/net/NetworkStats;->findIndexHinted(Ljava/lang/String;IIIIII)I +HPLandroid/net/NetworkStats;->getElapsedRealtime()J +HPLandroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry; +HPLandroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;Ljava/util/HashSet;IZ)Landroid/net/NetworkStats$Entry; +HPLandroid/net/NetworkStats;->getValues(ILandroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry; +HPLandroid/net/NetworkStats;->setElapsedRealtime(J)V +HPLandroid/net/NetworkStats;->size()I +HPLandroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;)Landroid/net/NetworkStats; +HPLandroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;Landroid/net/NetworkStats;)Landroid/net/NetworkStats; +HPLandroid/net/NetworkStatsHistory$1;->()V +HPLandroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLong(Ljava/io/DataInputStream;)J +HPLandroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLongArray(Ljava/io/DataInputStream;)[J +HPLandroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLong(Ljava/io/DataOutputStream;J)V +HPLandroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLongArray(Ljava/io/DataOutputStream;[JI)V +HPLandroid/net/NetworkStatsHistory$Entry;->()V +HPLandroid/net/NetworkStatsHistory;->(J)V +HPLandroid/net/NetworkStatsHistory;->(JI)V +HPLandroid/net/NetworkStatsHistory;->(JII)V +HPLandroid/net/NetworkStatsHistory;->(Ljava/io/DataInputStream;)V +HPLandroid/net/NetworkStatsHistory;->addLong([JIJ)V +HPLandroid/net/NetworkStatsHistory;->ensureBuckets(JJ)V +HPLandroid/net/NetworkStatsHistory;->getBucketDuration()J +HPLandroid/net/NetworkStatsHistory;->getEnd()J +HPLandroid/net/NetworkStatsHistory;->getIndexAfter(J)I +HPLandroid/net/NetworkStatsHistory;->getLong([JIJ)J +HPLandroid/net/NetworkStatsHistory;->getStart()J +HPLandroid/net/NetworkStatsHistory;->getTotalBytes()J +HPLandroid/net/NetworkStatsHistory;->getValues(JJJLandroid/net/NetworkStatsHistory$Entry;)Landroid/net/NetworkStatsHistory$Entry; +HPLandroid/net/NetworkStatsHistory;->insertBucket(IJ)V +HPLandroid/net/NetworkStatsHistory;->recordData(JJLandroid/net/NetworkStats$Entry;)V +HPLandroid/net/NetworkStatsHistory;->recordEntireHistory(Landroid/net/NetworkStatsHistory;)V +HPLandroid/net/NetworkStatsHistory;->recordHistory(Landroid/net/NetworkStatsHistory;JJ)V +HPLandroid/net/NetworkStatsHistory;->setLong([JIJ)V +HPLandroid/net/NetworkStatsHistory;->size()I +HPLandroid/net/NetworkStatsHistory;->writeToStream(Ljava/io/DataOutputStream;)V +HPLandroid/net/NetworkTemplate$1;->()V +HPLandroid/net/NetworkTemplate;->(ILjava/lang/String;Ljava/lang/String;)V +HPLandroid/net/NetworkTemplate;->(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/NetworkTemplate;->buildTemplateMobileWildcard()Landroid/net/NetworkTemplate; +HPLandroid/net/NetworkTemplate;->buildTemplateWifiWildcard()Landroid/net/NetworkTemplate; +HPLandroid/net/NetworkTemplate;->isKnownMatchRule(I)Z +HPLandroid/net/NetworkTemplate;->matches(Landroid/net/NetworkIdentity;)Z +HPLandroid/net/NetworkTemplate;->matchesMobileWildcard(Landroid/net/NetworkIdentity;)Z +HPLandroid/net/NetworkTemplate;->matchesWifiWildcard(Landroid/net/NetworkIdentity;)Z +HPLandroid/net/NetworkUtils;->addressTypeMatches(Ljava/net/InetAddress;Ljava/net/InetAddress;)Z +HPLandroid/net/NetworkUtils;->makeStrings(Ljava/util/Collection;)[Ljava/lang/String; +HPLandroid/net/NetworkUtils;->netmaskToPrefixLength(Ljava/net/Inet4Address;)I +HPLandroid/net/NetworkUtils;->numericToInetAddress(Ljava/lang/String;)Ljava/net/InetAddress; +HPLandroid/net/NetworkUtils;->parseIpAndMask(Ljava/lang/String;)Landroid/util/Pair; +HPLandroid/net/NetworkUtils;->protectFromVpn(Ljava/io/FileDescriptor;)Z +HPLandroid/net/RouteInfo;->(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;)V +HPLandroid/net/RouteInfo;->(Landroid/net/LinkAddress;Ljava/net/InetAddress;Ljava/lang/String;)V +HPLandroid/net/RouteInfo;->hasGateway()Z +HPLandroid/net/RouteInfo;->isDefaultRoute()Z +HPLandroid/net/RouteInfo;->isIPv4Default()Z +HPLandroid/net/RouteInfo;->isIPv6Default()Z +HPLandroid/net/RouteInfo;->matches(Ljava/net/InetAddress;)Z +HPLandroid/net/RouteInfo;->selectBestRoute(Ljava/util/Collection;Ljava/net/InetAddress;)Landroid/net/RouteInfo; +HPLandroid/net/RouteInfo;->toString()Ljava/lang/String; +HPLandroid/net/RouteInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/RssiCurve$1;->()V +HPLandroid/net/RssiCurve$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/RssiCurve; +HPLandroid/net/RssiCurve$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/RssiCurve;->(II[B)V +HPLandroid/net/RssiCurve;->(II[BI)V +HPLandroid/net/RssiCurve;->(Landroid/os/Parcel;)V +HPLandroid/net/RssiCurve;->(Landroid/os/Parcel;Landroid/net/RssiCurve;)V +HPLandroid/net/RssiCurve;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/SSLCertificateSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; +HPLandroid/net/SSLCertificateSocketFactory;->getDelegate()Ljavax/net/ssl/SSLSocketFactory; +HPLandroid/net/SSLCertificateSocketFactory;->isSslCheckRelaxed()Z +HPLandroid/net/SSLCertificateSocketFactory;->makeSocketFactory([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;)Ljavax/net/ssl/SSLSocketFactory; +HPLandroid/net/SSLCertificateSocketFactory;->verifyHostname(Ljava/net/Socket;Ljava/lang/String;)V +HPLandroid/net/ScoredNetwork$1;->()V +HPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ScoredNetwork; +HPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/ScoredNetwork$1;->newArray(I)[Landroid/net/ScoredNetwork; +HPLandroid/net/ScoredNetwork$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/net/ScoredNetwork;->(Landroid/net/NetworkKey;Landroid/net/RssiCurve;Z)V +HPLandroid/net/ScoredNetwork;->(Landroid/net/NetworkKey;Landroid/net/RssiCurve;ZLandroid/os/Bundle;)V +HPLandroid/net/ScoredNetwork;->(Landroid/os/Parcel;)V +HPLandroid/net/ScoredNetwork;->(Landroid/os/Parcel;Landroid/net/ScoredNetwork;)V +HPLandroid/net/ScoredNetwork;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/StaticIpConfiguration$1;->()V +HPLandroid/net/StaticIpConfiguration;->()V +HPLandroid/net/StaticIpConfiguration;->(Landroid/net/StaticIpConfiguration;)V +HPLandroid/net/StaticIpConfiguration;->getRoutes(Ljava/lang/String;)Ljava/util/List; +HPLandroid/net/StaticIpConfiguration;->toString()Ljava/lang/String; +HPLandroid/net/TrafficStats;->clearThreadStatsTag()V +HPLandroid/net/TrafficStats;->clearThreadStatsUid()V +HPLandroid/net/TrafficStats;->getRxPackets(Ljava/lang/String;)J +HPLandroid/net/TrafficStats;->getTxPackets(Ljava/lang/String;)J +HPLandroid/net/TrafficStats;->incrementOperationCount(II)V +HPLandroid/net/TrafficStats;->setThreadStatsUid(I)V +HPLandroid/net/TrafficStats;->tagSocket(Ljava/net/Socket;)V +HPLandroid/net/TrafficStats;->untagSocket(Ljava/net/Socket;)V +HPLandroid/net/Uri$1;->newArray(I)[Landroid/net/Uri; +HPLandroid/net/Uri$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/net/Uri$Builder;->encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; +HPLandroid/net/Uri$Builder;->fragment(Ljava/lang/String;)Landroid/net/Uri$Builder; +HPLandroid/net/Uri$Builder;->opaquePart(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; +HPLandroid/net/Uri$Builder;->query(Ljava/lang/String;)Landroid/net/Uri$Builder; +HPLandroid/net/Uri$Builder;->toString()Ljava/lang/String; +HPLandroid/net/Uri$HierarchicalUri;->getEncodedPath()Ljava/lang/String; +HPLandroid/net/Uri$HierarchicalUri;->getFragment()Ljava/lang/String; +HPLandroid/net/Uri$HierarchicalUri;->getQuery()Ljava/lang/String; +HPLandroid/net/Uri$OpaqueUri;->buildUpon()Landroid/net/Uri$Builder; +HPLandroid/net/Uri$OpaqueUri;->getAuthority()Ljava/lang/String; +HPLandroid/net/Uri$OpaqueUri;->getEncodedSchemeSpecificPart()Ljava/lang/String; +HPLandroid/net/Uri$OpaqueUri;->getSchemeSpecificPart()Ljava/lang/String; +HPLandroid/net/Uri$OpaqueUri;->toString()Ljava/lang/String; +HPLandroid/net/Uri$StringUri;->getEncodedPath()Ljava/lang/String; +HPLandroid/net/Uri$StringUri;->getQuery()Ljava/lang/String; +HPLandroid/net/Uri$StringUri;->isRelative()Z +HPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri; +HPLandroid/net/Uri;->isAbsolute()Z +HPLandroid/net/WifiKey$1;->()V +HPLandroid/net/WifiKey$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/WifiKey; +HPLandroid/net/WifiKey$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/WifiKey;->(Landroid/os/Parcel;)V +HPLandroid/net/WifiKey;->(Landroid/os/Parcel;Landroid/net/WifiKey;)V +HPLandroid/net/WifiKey;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/WifiKey;->equals(Ljava/lang/Object;)Z +HPLandroid/net/WifiKey;->hashCode()I +HPLandroid/net/WifiKey;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/http/AndroidHttpClient$1;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLandroid/net/http/AndroidHttpClient$2;->createHttpContext()Lorg/apache/http/protocol/HttpContext; +HPLandroid/net/http/AndroidHttpClient$2;->createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor; +HPLandroid/net/http/AndroidHttpClient$CurlLogger;->(Landroid/net/http/AndroidHttpClient;)V +HPLandroid/net/http/AndroidHttpClient$CurlLogger;->(Landroid/net/http/AndroidHttpClient;Landroid/net/http/AndroidHttpClient$CurlLogger;)V +HPLandroid/net/http/AndroidHttpClient$CurlLogger;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLandroid/net/http/AndroidHttpClient$LoggingConfiguration;->-wrap0(Landroid/net/http/AndroidHttpClient$LoggingConfiguration;)Z +HPLandroid/net/http/AndroidHttpClient$LoggingConfiguration;->isLoggable()Z +HPLandroid/net/http/AndroidHttpClient;->-get0(Landroid/net/http/AndroidHttpClient;)Landroid/net/http/AndroidHttpClient$LoggingConfiguration; +HPLandroid/net/http/AndroidHttpClient;->-get1()Lorg/apache/http/HttpRequestInterceptor; +HPLandroid/net/http/AndroidHttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLandroid/net/http/AndroidHttpClient;->getCompressedEntity([BLandroid/content/ContentResolver;)Lorg/apache/http/entity/AbstractHttpEntity; +HPLandroid/net/http/AndroidHttpClient;->getMinGzipSize(Landroid/content/ContentResolver;)J +HPLandroid/net/http/AndroidHttpClient;->getParams()Lorg/apache/http/params/HttpParams; +HPLandroid/net/http/AndroidHttpClient;->getUngzippedContent(Lorg/apache/http/HttpEntity;)Ljava/io/InputStream; +HPLandroid/net/http/AndroidHttpClient;->modifyRequestToAcceptGzipResponse(Lorg/apache/http/HttpRequest;)V +HPLandroid/net/http/HttpResponseCache;->getCache()Lcom/android/okhttp/Cache; +HPLandroid/net/metrics/ApfProgramEvent$1;->()V +HPLandroid/net/metrics/ApfProgramEvent;->()V +HPLandroid/net/metrics/ApfProgramEvent;->flagsFor(ZZ)I +HPLandroid/net/metrics/ApfStats$1;->()V +HPLandroid/net/metrics/ApfStats;->()V +HPLandroid/net/metrics/ConnectStats;->(IJLcom/android/internal/util/TokenBucket;I)V +HPLandroid/net/metrics/ConnectStats;->addEvent(IILjava/lang/String;)V +HPLandroid/net/metrics/ConnectStats;->countConnect(ILjava/lang/String;)V +HPLandroid/net/metrics/ConnectStats;->countLatency(II)V +HPLandroid/net/metrics/ConnectStats;->isIPv6(Ljava/lang/String;)Z +HPLandroid/net/metrics/ConnectStats;->isNonBlocking(I)Z +HPLandroid/net/metrics/ConnectStats;->isSuccess(I)Z +HPLandroid/net/metrics/DefaultNetworkEvent$1;->()V +HPLandroid/net/metrics/DefaultNetworkEvent;->(I[IIZZ)V +HPLandroid/net/metrics/DhcpClientEvent$1;->()V +HPLandroid/net/metrics/DhcpClientEvent;->(Ljava/lang/String;I)V +HPLandroid/net/metrics/DnsEvent;->(IJI)V +HPLandroid/net/metrics/DnsEvent;->addResult(BBI)V +HPLandroid/net/metrics/DnsEvent;->resize(I)V +HPLandroid/net/metrics/IpConnectivityLog;->()V +HPLandroid/net/metrics/IpConnectivityLog;->checkLoggerService()Z +HPLandroid/net/metrics/IpConnectivityLog;->log(I[ILandroid/os/Parcelable;)Z +HPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/ConnectivityMetricsEvent;)Z +HPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/os/Parcelable;)Z +HPLandroid/net/metrics/IpConnectivityLog;->log(Ljava/lang/String;Landroid/os/Parcelable;)Z +HPLandroid/net/metrics/IpConnectivityLog;->makeEv(Landroid/os/Parcelable;)Landroid/net/ConnectivityMetricsEvent; +HPLandroid/net/metrics/IpManagerEvent$1;->()V +HPLandroid/net/metrics/IpManagerEvent;->(IJ)V +HPLandroid/net/metrics/NetworkEvent$1;->()V +HPLandroid/net/metrics/NetworkEvent;->(II)V +HPLandroid/net/metrics/NetworkEvent;->(IIJ)V +HPLandroid/net/metrics/RaEvent$1;->()V +HPLandroid/net/metrics/RaEvent$Builder;->()V +HPLandroid/net/metrics/RaEvent$Builder;->build()Landroid/net/metrics/RaEvent; +HPLandroid/net/metrics/RaEvent$Builder;->updateLifetime(JJ)J +HPLandroid/net/metrics/RaEvent$Builder;->updatePrefixPreferredLifetime(J)Landroid/net/metrics/RaEvent$Builder; +HPLandroid/net/metrics/RaEvent$Builder;->updatePrefixValidLifetime(J)Landroid/net/metrics/RaEvent$Builder; +HPLandroid/net/metrics/RaEvent$Builder;->updateRdnssLifetime(J)Landroid/net/metrics/RaEvent$Builder; +HPLandroid/net/metrics/RaEvent$Builder;->updateRouterLifetime(J)Landroid/net/metrics/RaEvent$Builder; +HPLandroid/net/metrics/RaEvent;->(JJJJJJ)V +HPLandroid/net/metrics/ValidationProbeEvent$1;->()V +HPLandroid/net/metrics/ValidationProbeEvent;->()V +HPLandroid/net/metrics/ValidationProbeEvent;->getProbeName(I)Ljava/lang/String; +HPLandroid/net/metrics/ValidationProbeEvent;->makeProbeType(IZ)I +HPLandroid/net/nsd/INsdManager$Stub;->()V +HPLandroid/net/nsd/INsdManager;->getMessenger()Landroid/os/Messenger; +HPLandroid/net/nsd/INsdManager;->setEnabled(Z)V +HPLandroid/net/sip/ISipService$Stub;->()V +HPLandroid/net/sip/ISipService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/sip/ISipService; +HPLandroid/net/sip/ISipService;->close(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/net/sip/ISipService;->createSession(Landroid/net/sip/SipProfile;Landroid/net/sip/ISipSessionListener;Ljava/lang/String;)Landroid/net/sip/ISipSession; +HPLandroid/net/sip/ISipService;->getListOfProfiles(Ljava/lang/String;)[Landroid/net/sip/SipProfile; +HPLandroid/net/sip/ISipService;->getPendingSession(Ljava/lang/String;Ljava/lang/String;)Landroid/net/sip/ISipSession; +HPLandroid/net/sip/ISipService;->isOpened(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/net/sip/ISipService;->isRegistered(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/net/sip/ISipService;->open(Landroid/net/sip/SipProfile;Ljava/lang/String;)V +HPLandroid/net/sip/ISipService;->open3(Landroid/net/sip/SipProfile;Landroid/app/PendingIntent;Landroid/net/sip/ISipSessionListener;Ljava/lang/String;)V +HPLandroid/net/sip/ISipService;->setRegistrationListener(Ljava/lang/String;Landroid/net/sip/ISipSessionListener;Ljava/lang/String;)V +HPLandroid/net/sip/SipManager;->(Landroid/content/Context;)V +HPLandroid/net/sip/SipManager;->createSipService()V +HPLandroid/net/sip/SipManager;->isApiSupported(Landroid/content/Context;)Z +HPLandroid/net/sip/SipManager;->isSipWifiOnly(Landroid/content/Context;)Z +HPLandroid/net/sip/SipManager;->newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager; +HPLandroid/net/wifi/IRttManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/net/wifi/IRttManager$Stub$Proxy;->getMessenger(Landroid/os/IBinder;[I)Landroid/os/Messenger; +HPLandroid/net/wifi/IRttManager$Stub;->()V +HPLandroid/net/wifi/IRttManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IRttManager; +HPLandroid/net/wifi/IRttManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/IRttManager;->getMessenger(Landroid/os/IBinder;[I)Landroid/os/Messenger; +HPLandroid/net/wifi/IRttManager;->getRttCapabilities()Landroid/net/wifi/RttManager$RttCapabilities; +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getDhcpInfo()Landroid/net/DhcpInfo; +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getSupportedFeatures()I +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->isScanAlwaysAvailable()Z +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseMulticastLock()V +HPLandroid/net/wifi/IWifiManager$Stub$Proxy;->startScan(Landroid/net/wifi/ScanSettings;Landroid/os/WorkSource;Ljava/lang/String;)V +HPLandroid/net/wifi/IWifiManager$Stub;->()V +HPLandroid/net/wifi/IWifiManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/IWifiScanner$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/net/wifi/IWifiScanner$Stub$Proxy;->getMessenger()Landroid/os/Messenger; +HPLandroid/net/wifi/IWifiScanner$Stub;->()V +HPLandroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner; +HPLandroid/net/wifi/IWifiScanner$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/IWifiScanner;->getAvailableChannels(I)Landroid/os/Bundle; +HPLandroid/net/wifi/IWifiScanner;->getMessenger()Landroid/os/Messenger; +HPLandroid/net/wifi/ParcelUtil;->writeCertificates(Landroid/os/Parcel;[Ljava/security/cert/X509Certificate;)V +HPLandroid/net/wifi/ParcelUtil;->writePrivateKey(Landroid/os/Parcel;Ljava/security/PrivateKey;)V +HPLandroid/net/wifi/RttManager$RttClient$1;->()V +HPLandroid/net/wifi/RttManager$RttClient$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/RttManager$RttClient; +HPLandroid/net/wifi/RttManager$RttClient$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/wifi/RttManager$RttClient;->(Landroid/os/Parcel;)V +HPLandroid/net/wifi/RttManager$RttClient;->(Ljava/lang/String;)V +HPLandroid/net/wifi/RttManager$RttClient;->getPackageName()Ljava/lang/String; +HPLandroid/net/wifi/RttManager$RttClient;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/RttManager$RttListener;->onAborted()V +HPLandroid/net/wifi/RttManager$RttListener;->onFailure(ILjava/lang/String;)V +HPLandroid/net/wifi/RttManager$RttListener;->onSuccess([Landroid/net/wifi/RttManager$RttResult;)V +HPLandroid/net/wifi/RttManager$ServiceHandler;->(Landroid/net/wifi/RttManager;Landroid/os/Looper;)V +HPLandroid/net/wifi/RttManager$ServiceHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/net/wifi/RttManager;->(Landroid/content/Context;Landroid/net/wifi/IRttManager;Landroid/os/Looper;)V +HPLandroid/net/wifi/ScanResult;->(Landroid/net/wifi/WifiSsid;Ljava/lang/String;JI[BLjava/lang/String;IIJ)V +HPLandroid/net/wifi/ScanResult;->averageRssi(IJI)V +HPLandroid/net/wifi/ScanResult;->is24GHz()Z +HPLandroid/net/wifi/ScanResult;->is24GHz(I)Z +HPLandroid/net/wifi/ScanResult;->is5GHz()Z +HPLandroid/net/wifi/ScanResult;->is5GHz(I)Z +HPLandroid/net/wifi/ScanResult;->is80211mcResponder()Z +HPLandroid/net/wifi/ScanResult;->setFlag(J)V +HPLandroid/net/wifi/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/SupplicantState;->-getandroid-net-wifi-SupplicantStateSwitchesValues()[I +HPLandroid/net/wifi/SupplicantState;->describeContents()I +HPLandroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z +HPLandroid/net/wifi/SupplicantState;->isDriverActive(Landroid/net/wifi/SupplicantState;)Z +HPLandroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z +HPLandroid/net/wifi/SupplicantState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getControllerEnergyUsed()J +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getControllerIdleTimeMillis()J +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getControllerRxTimeMillis()J +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getControllerTxTimeMillis()J +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getStackState()I +HPLandroid/net/wifi/WifiActivityEnergyInfo;->getTimeStamp()J +HPLandroid/net/wifi/WifiActivityEnergyInfo;->isValid()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->copy(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidate()Landroid/net/wifi/ScanResult; +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidateScore()I +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoice()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoiceTimestamp()J +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableReasonCounter(I)I +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableTime()J +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getHasEverConnected()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionBSSID()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionDisableReason()I +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionStatus()I +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkStatusString()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getSeenInLastQualifiedNetworkSelection()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isDisabledByReason(I)Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkEnabled()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkTemporaryDisabled()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNotRecommended()Z +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidate(Landroid/net/wifi/ScanResult;)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidateScore(I)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setSeenInLastQualifiedNetworkSelection(Z)V +HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->writeToParcel(Landroid/os/Parcel;)V +HPLandroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V +HPLandroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I +HPLandroid/net/wifi/WifiConfiguration$Visibility;->()V +HPLandroid/net/wifi/WifiConfiguration;->(Landroid/net/wifi/WifiConfiguration;)V +HPLandroid/net/wifi/WifiConfiguration;->configKey()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration;->configKey(Z)Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration;->describeContents()I +HPLandroid/net/wifi/WifiConfiguration;->getHttpProxy()Landroid/net/ProxyInfo; +HPLandroid/net/wifi/WifiConfiguration;->getIpAssignment()Landroid/net/IpConfiguration$IpAssignment; +HPLandroid/net/wifi/WifiConfiguration;->getIpConfiguration()Landroid/net/IpConfiguration; +HPLandroid/net/wifi/WifiConfiguration;->getNetworkSelectionStatus()Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; +HPLandroid/net/wifi/WifiConfiguration;->isEphemeral()Z +HPLandroid/net/wifi/WifiConfiguration;->isMetered(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiInfo;)Z +HPLandroid/net/wifi/WifiConfiguration;->isPasspoint()Z +HPLandroid/net/wifi/WifiConfiguration;->setIpConfiguration(Landroid/net/IpConfiguration;)V +HPLandroid/net/wifi/WifiConfiguration;->setNetworkSelectionStatus(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V +HPLandroid/net/wifi/WifiConfiguration;->setVisibility(Landroid/net/wifi/WifiConfiguration$Visibility;)V +HPLandroid/net/wifi/WifiConfiguration;->toString()Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration;->userApprovedAsString(I)Ljava/lang/String; +HPLandroid/net/wifi/WifiConfiguration;->writeBitSet(Landroid/os/Parcel;Ljava/util/BitSet;)V +HPLandroid/net/wifi/WifiConfiguration;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiConnectionStatistics$1;->()V +HPLandroid/net/wifi/WifiConnectionStatistics;->()V +HPLandroid/net/wifi/WifiEnterpriseConfig;->(Landroid/net/wifi/WifiEnterpriseConfig;)V +HPLandroid/net/wifi/WifiEnterpriseConfig;->copyFrom(Landroid/net/wifi/WifiEnterpriseConfig;ZLjava/lang/String;)V +HPLandroid/net/wifi/WifiEnterpriseConfig;->getEapMethod()I +HPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->getPassword()Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->toString()Ljava/lang/String; +HPLandroid/net/wifi/WifiEnterpriseConfig;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiInfo;->(Landroid/net/wifi/WifiInfo;)V +HPLandroid/net/wifi/WifiInfo;->describeContents()I +HPLandroid/net/wifi/WifiInfo;->getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState; +HPLandroid/net/wifi/WifiInfo;->getFrequency()I +HPLandroid/net/wifi/WifiInfo;->getHiddenSSID()Z +HPLandroid/net/wifi/WifiInfo;->getLinkSpeed()I +HPLandroid/net/wifi/WifiInfo;->getMacAddress()Ljava/lang/String; +HPLandroid/net/wifi/WifiInfo;->getMeteredHint()Z +HPLandroid/net/wifi/WifiInfo;->getNetworkId()I +HPLandroid/net/wifi/WifiInfo;->getRssi()I +HPLandroid/net/wifi/WifiInfo;->getRxSuccessRatePps()D +HPLandroid/net/wifi/WifiInfo;->getSupplicantState()Landroid/net/wifi/SupplicantState; +HPLandroid/net/wifi/WifiInfo;->getTxSuccessRatePps()D +HPLandroid/net/wifi/WifiInfo;->is24GHz()Z +HPLandroid/net/wifi/WifiInfo;->is5GHz()Z +HPLandroid/net/wifi/WifiInfo;->isEphemeral()Z +HPLandroid/net/wifi/WifiInfo;->removeDoubleQuotes(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/wifi/WifiInfo;->reset()V +HPLandroid/net/wifi/WifiInfo;->setBSSID(Ljava/lang/String;)V +HPLandroid/net/wifi/WifiInfo;->setEphemeral(Z)V +HPLandroid/net/wifi/WifiInfo;->setMacAddress(Ljava/lang/String;)V +HPLandroid/net/wifi/WifiInfo;->setMeteredHint(Z)V +HPLandroid/net/wifi/WifiInfo;->setSSID(Landroid/net/wifi/WifiSsid;)V +HPLandroid/net/wifi/WifiInfo;->setSupplicantState(Landroid/net/wifi/SupplicantState;)V +HPLandroid/net/wifi/WifiInfo;->toString()Ljava/lang/String; +HPLandroid/net/wifi/WifiInfo;->updatePacketRates(JJ)V +HPLandroid/net/wifi/WifiInfo;->updatePacketRates(Landroid/net/wifi/WifiLinkLayerStats;J)V +HPLandroid/net/wifi/WifiInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiLinkLayerStats$1;->()V +HPLandroid/net/wifi/WifiLinkLayerStats;->()V +HPLandroid/net/wifi/WifiManager$MulticastLock;->(Landroid/net/wifi/WifiManager;Ljava/lang/String;)V +HPLandroid/net/wifi/WifiManager$MulticastLock;->(Landroid/net/wifi/WifiManager;Ljava/lang/String;Landroid/net/wifi/WifiManager$MulticastLock;)V +HPLandroid/net/wifi/WifiManager$MulticastLock;->acquire()V +HPLandroid/net/wifi/WifiManager$MulticastLock;->finalize()V +HPLandroid/net/wifi/WifiManager$MulticastLock;->isHeld()Z +HPLandroid/net/wifi/WifiManager$MulticastLock;->release()V +HPLandroid/net/wifi/WifiManager$MulticastLock;->setReferenceCounted(Z)V +HPLandroid/net/wifi/WifiManager$WifiLock;->isHeld()Z +HPLandroid/net/wifi/WifiManager$WifiLock;->setReferenceCounted(Z)V +HPLandroid/net/wifi/WifiManager$WifiLock;->setWorkSource(Landroid/os/WorkSource;)V +HPLandroid/net/wifi/WifiManager;->calculateSignalLevel(II)I +HPLandroid/net/wifi/WifiManager;->createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock; +HPLandroid/net/wifi/WifiManager;->createWifiLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock; +HPLandroid/net/wifi/WifiManager;->finalize()V +HPLandroid/net/wifi/WifiManager;->getDhcpInfo()Landroid/net/DhcpInfo; +HPLandroid/net/wifi/WifiManager;->getSupportedFeatures()I +HPLandroid/net/wifi/WifiManager;->isDeviceToApRttSupported()Z +HPLandroid/net/wifi/WifiManager;->isFeatureSupported(I)Z +HPLandroid/net/wifi/WifiManager;->isScanAlwaysAvailable()Z +HPLandroid/net/wifi/WifiManager;->startScan()Z +HPLandroid/net/wifi/WifiManager;->startScan(Landroid/os/WorkSource;)Z +HPLandroid/net/wifi/WifiNetworkScoreCache;->(Landroid/content/Context;)V +HPLandroid/net/wifi/WifiNetworkScoreCache;->buildNetworkKey(Landroid/net/NetworkKey;)Ljava/lang/String; +HPLandroid/net/wifi/WifiNetworkScoreCache;->buildNetworkKey(Landroid/net/ScoredNetwork;)Ljava/lang/String; +HPLandroid/net/wifi/WifiNetworkScoreCache;->clearScores()V +HPLandroid/net/wifi/WifiNetworkScoreCache;->getScoredNetwork(Landroid/net/NetworkKey;)Landroid/net/ScoredNetwork; +HPLandroid/net/wifi/WifiNetworkScoreCache;->updateScores(Ljava/util/List;)V +HPLandroid/net/wifi/WifiScanner$ChannelSpec;->(I)V +HPLandroid/net/wifi/WifiScanner$ParcelableScanData$1;->()V +HPLandroid/net/wifi/WifiScanner$ParcelableScanData$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiScanner$ParcelableScanData; +HPLandroid/net/wifi/WifiScanner$ParcelableScanData$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner$ParcelableScanData;->([Landroid/net/wifi/WifiScanner$ScanData;)V +HPLandroid/net/wifi/WifiScanner$ParcelableScanData;->getResults()[Landroid/net/wifi/WifiScanner$ScanData; +HPLandroid/net/wifi/WifiScanner$ParcelableScanData;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiScanner$ParcelableScanResults$1;->()V +HPLandroid/net/wifi/WifiScanner$ParcelableScanResults;->([Landroid/net/wifi/ScanResult;)V +HPLandroid/net/wifi/WifiScanner$ParcelableScanResults;->getResults()[Landroid/net/wifi/ScanResult; +HPLandroid/net/wifi/WifiScanner$PnoScanListener;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V +HPLandroid/net/wifi/WifiScanner$ScanData$1;->()V +HPLandroid/net/wifi/WifiScanner$ScanData$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiScanner$ScanData; +HPLandroid/net/wifi/WifiScanner$ScanData$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner$ScanData;->(IIIZ[Landroid/net/wifi/ScanResult;)V +HPLandroid/net/wifi/WifiScanner$ScanData;->(II[Landroid/net/wifi/ScanResult;)V +HPLandroid/net/wifi/WifiScanner$ScanData;->getBucketsScanned()I +HPLandroid/net/wifi/WifiScanner$ScanData;->getFlags()I +HPLandroid/net/wifi/WifiScanner$ScanData;->getId()I +HPLandroid/net/wifi/WifiScanner$ScanData;->getResults()[Landroid/net/wifi/ScanResult; +HPLandroid/net/wifi/WifiScanner$ScanData;->isAllChannelsScanned()Z +HPLandroid/net/wifi/WifiScanner$ScanData;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiScanner$ScanSettings$1;->()V +HPLandroid/net/wifi/WifiScanner$ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiScanner$ScanSettings; +HPLandroid/net/wifi/WifiScanner$ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner$ScanSettings;->()V +HPLandroid/net/wifi/WifiScanner$ScanSettings;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiScanner$ServiceHandler;->(Landroid/net/wifi/WifiScanner;Landroid/os/Looper;)V +HPLandroid/net/wifi/WifiScanner$ServiceHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/net/wifi/WifiScanner;->-wrap0(Landroid/net/wifi/WifiScanner;I)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner;->-wrap1(Landroid/net/wifi/WifiScanner;I)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner;->(Landroid/content/Context;Landroid/net/wifi/IWifiScanner;Landroid/os/Looper;)V +HPLandroid/net/wifi/WifiScanner;->addListener(Landroid/net/wifi/WifiScanner$ActionListener;)I +HPLandroid/net/wifi/WifiScanner;->getListener(I)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner;->getListenerKey(Ljava/lang/Object;)I +HPLandroid/net/wifi/WifiScanner;->getSingleScanResults()Ljava/util/List; +HPLandroid/net/wifi/WifiScanner;->putListener(Ljava/lang/Object;)I +HPLandroid/net/wifi/WifiScanner;->registerScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V +HPLandroid/net/wifi/WifiScanner;->removeListener(I)Ljava/lang/Object; +HPLandroid/net/wifi/WifiScanner;->startScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$ScanListener;Landroid/os/WorkSource;)V +HPLandroid/net/wifi/WifiScanner;->validateChannel()V +HPLandroid/net/wifi/WifiSsid;->createFromByteArray([B)Landroid/net/wifi/WifiSsid; +HPLandroid/net/wifi/WifiSsid;->createFromHex(Ljava/lang/String;)Landroid/net/wifi/WifiSsid; +HPLandroid/net/wifi/WifiSsid;->isHidden()Z +HPLandroid/net/wifi/WifiSsid;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/net/wifi/WifiWakeReasonAndCounts$1;->()V +HPLandroid/net/wifi/WifiWakeReasonAndCounts;->()V +HPLandroid/net/wifi/WifiWakeReasonAndCounts;->toString()Ljava/lang/String; +HPLandroid/net/wifi/WpsInfo$1;->()V +HPLandroid/net/wifi/WpsInfo;->()V +HPLandroid/net/wifi/p2p/IWifiP2pManager$Stub;->()V +HPLandroid/net/wifi/p2p/WifiP2pConfig$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pConfig;->()V +HPLandroid/net/wifi/p2p/WifiP2pConfig;->invalidate()V +HPLandroid/net/wifi/p2p/WifiP2pDevice$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pDevice;->()V +HPLandroid/net/wifi/p2p/WifiP2pDevice;->(Landroid/net/wifi/p2p/WifiP2pDevice;)V +HPLandroid/net/wifi/p2p/WifiP2pDevice;->describeContents()I +HPLandroid/net/wifi/p2p/WifiP2pDeviceList$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pDeviceList;->()V +HPLandroid/net/wifi/p2p/WifiP2pGroup$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pGroup;->(Landroid/net/wifi/p2p/WifiP2pGroup;)V +HPLandroid/net/wifi/p2p/WifiP2pGroup;->describeContents()I +HPLandroid/net/wifi/p2p/WifiP2pGroupList$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pGroupList$2;->(Landroid/net/wifi/p2p/WifiP2pGroupList;I)V +HPLandroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;->onDeleteGroup(I)V +HPLandroid/net/wifi/p2p/WifiP2pGroupList;->(Landroid/net/wifi/p2p/WifiP2pGroupList;Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;)V +HPLandroid/net/wifi/p2p/WifiP2pGroupList;->clear()Z +HPLandroid/net/wifi/p2p/WifiP2pGroupList;->getGroupList()Ljava/util/Collection; +HPLandroid/net/wifi/p2p/WifiP2pInfo$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pInfo;->()V +HPLandroid/net/wifi/p2p/WifiP2pInfo;->(Landroid/net/wifi/p2p/WifiP2pInfo;)V +HPLandroid/net/wifi/p2p/WifiP2pInfo;->describeContents()I +HPLandroid/net/wifi/p2p/WifiP2pManager$PeerListListener;->onPeersAvailable(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V +HPLandroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;->onPersistentGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroupList;)V +HPLandroid/net/wifi/p2p/WifiP2pWfdInfo$1;->()V +HPLandroid/net/wifi/p2p/WifiP2pWfdInfo;->(Landroid/net/wifi/p2p/WifiP2pWfdInfo;)V +HPLandroid/nfc/IAppCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/nfc/IAppCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/IAppCallback; +HPLandroid/nfc/INfcAdapter$Stub$Proxy;->setReaderMode(Landroid/os/IBinder;Landroid/nfc/IAppCallback;ILandroid/os/Bundle;)V +HPLandroid/nfc/INfcAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/nfc/INfcCardEmulation$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/nfc/INfcFCardEmulation$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/nfc/INfcTag$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/nfc/NfcActivityManager$NfcActivityState;->destroy()V +HPLandroid/nfc/NfcActivityManager$NfcApplicationState;->unregister()V +HPLandroid/nfc/NfcActivityManager;->destroyActivityState(Landroid/app/Activity;)V +HPLandroid/nfc/NfcActivityManager;->onActivityDestroyed(Landroid/app/Activity;)V +HPLandroid/nfc/NfcActivityManager;->onActivityPaused(Landroid/app/Activity;)V +HPLandroid/nfc/NfcActivityManager;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V +HPLandroid/nfc/NfcActivityManager;->onActivityStopped(Landroid/app/Activity;)V +HPLandroid/nfc/NfcActivityManager;->setNdefPushContentUri(Landroid/app/Activity;[Landroid/net/Uri;)V +HPLandroid/nfc/NfcActivityManager;->setNdefPushContentUriCallback(Landroid/app/Activity;Landroid/nfc/NfcAdapter$CreateBeamUrisCallback;)V +HPLandroid/nfc/NfcActivityManager;->unregisterApplication(Landroid/app/Application;)V +HPLandroid/nfc/NfcAdapter$CreateBeamUrisCallback;->createBeamUris(Landroid/nfc/NfcEvent;)[Landroid/net/Uri; +HPLandroid/nfc/NfcAdapter;->setBeamPushUris([Landroid/net/Uri;Landroid/app/Activity;)V +HPLandroid/nfc/NfcAdapter;->setBeamPushUrisCallback(Landroid/nfc/NfcAdapter$CreateBeamUrisCallback;Landroid/app/Activity;)V +HPLandroid/nfc/cardemulation/HostApduService$MsgHandler;->(Landroid/nfc/cardemulation/HostApduService;)V +HPLandroid/nfc/cardemulation/HostApduService;->()V +HPLandroid/nfc/cardemulation/HostApduService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/nfc/cardemulation/HostApduService;->onDeactivated(I)V +HPLandroid/nfc/cardemulation/HostApduService;->processCommandApdu([BLandroid/os/Bundle;)[B +HPLandroid/opengl/EGLConfig;->(J)V +HPLandroid/opengl/EGLContext;->(J)V +HPLandroid/opengl/EGLObjectHandle;->getNativeHandle()J +HPLandroid/opengl/EGLSurface;->(J)V +HPLandroid/os/AsyncTask;->publishProgress([Ljava/lang/Object;)V +HPLandroid/os/BaseBundle;->getBooleanArray(Ljava/lang/String;)[Z +HPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence; +HPLandroid/os/BaseBundle;->getDouble(Ljava/lang/String;D)D +HPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F +HPLandroid/os/BaseBundle;->getFloatArray(Ljava/lang/String;)[F +HPLandroid/os/BaseBundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +HPLandroid/os/BaseBundle;->getLongArray(Ljava/lang/String;)[J +HPLandroid/os/BaseBundle;->getPairValue()Ljava/lang/String; +HPLandroid/os/BaseBundle;->kindofEquals(Landroid/os/BaseBundle;)Z +HPLandroid/os/BaseBundle;->maybeIsEmpty()Z +HPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V +HPLandroid/os/BaseBundle;->putBooleanArray(Ljava/lang/String;[Z)V +HPLandroid/os/BaseBundle;->putDouble(Ljava/lang/String;D)V +HPLandroid/os/BaseBundle;->putFloat(Ljava/lang/String;F)V +HPLandroid/os/BaseBundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V +HPLandroid/os/BaseBundle;->putLongArray(Ljava/lang/String;[J)V +HPLandroid/os/BatteryManagerInternal;->()V +HPLandroid/os/BatteryManagerInternal;->getBatteryLevel()I +HPLandroid/os/BatteryManagerInternal;->getBatteryLevelLow()Z +HPLandroid/os/BatteryManagerInternal;->getInvalidCharger()I +HPLandroid/os/BatteryManagerInternal;->getPlugType()I +HPLandroid/os/BatteryManagerInternal;->isPowered(I)Z +HPLandroid/os/BatteryProperties$1;->()V +HPLandroid/os/BatteryProperties$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/BatteryProperties; +HPLandroid/os/BatteryProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/BatteryProperties;->()V +HPLandroid/os/BatteryProperties;->(Landroid/os/Parcel;)V +HPLandroid/os/BatteryProperties;->(Landroid/os/Parcel;Landroid/os/BatteryProperties;)V +HPLandroid/os/BatteryProperties;->set(Landroid/os/BatteryProperties;)V +HPLandroid/os/BatteryStats$1;->(Landroid/os/BatteryStats;)V +HPLandroid/os/BatteryStats$HistoryEventTracker;->getStateForEvent(I)Ljava/util/HashMap; +HPLandroid/os/BatteryStats$HistoryEventTracker;->updateState(ILjava/lang/String;II)Z +HPLandroid/os/BatteryStats$HistoryTag;->equals(Ljava/lang/Object;)Z +HPLandroid/os/BatteryStats$HistoryTag;->readFromParcel(Landroid/os/Parcel;)V +HPLandroid/os/BatteryStats$HistoryTag;->setTo(Landroid/os/BatteryStats$HistoryTag;)V +HPLandroid/os/BatteryStats$HistoryTag;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/BatteryStats$LevelStepTracker;->clearTime()V +HPLandroid/os/BatteryStats$LevelStepTracker;->computeTimeEstimate(JJ[I)J +HPLandroid/os/BatteryStats$Timer;->getCurrentDurationMsLocked(J)J +HPLandroid/os/BatteryStats$Timer;->getMaxDurationMsLocked(J)J +HPLandroid/os/BatteryStats$Timer;->getTotalDurationMsLocked(J)J +HPLandroid/os/BatteryStats$Uid$Pid;->(Landroid/os/BatteryStats$Uid;)V +HPLandroid/os/BatteryStats$Uid$Proc$ExcessivePower;->()V +HPLandroid/os/BatteryStats;->-getcom-android-internal-os-BatterySipper$DrainTypeSwitchesValues()[I +HPLandroid/os/BatteryStats;->computeWakeLock(Landroid/os/BatteryStats$Timer;JI)J +HPLandroid/os/BatteryStats;->controllerActivityHasData(Landroid/os/BatteryStats$ControllerActivityCounter;I)Z +HPLandroid/os/BatteryStats;->dumpCheckinLocked(Landroid/content/Context;Ljava/io/PrintWriter;IIZ)V +HPLandroid/os/BatteryStats;->dumpCheckinLocked(Landroid/content/Context;Ljava/io/PrintWriter;Ljava/util/List;IJ)V +HPLandroid/os/BatteryStats;->dumpControllerActivityLine(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$ControllerActivityCounter;I)V +HPLandroid/os/BatteryStats;->dumpDailyLevelStepSummary(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Ljava/lang/StringBuilder;[I)V +HPLandroid/os/BatteryStats;->dumpDurationSteps(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Z)Z +HPLandroid/os/BatteryStats;->dumpLine(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/os/BatteryStats;->dumpLineHeader(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;)V +HPLandroid/os/BatteryStats;->dumpLocked(Landroid/content/Context;Ljava/io/PrintWriter;IIJ)V +HPLandroid/os/BatteryStats;->dumpLocked(Landroid/content/Context;Ljava/io/PrintWriter;Ljava/lang/String;IIZ)V +HPLandroid/os/BatteryStats;->dumpTimer(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$Timer;JI)V +HPLandroid/os/BatteryStats;->formatBytesLocked(J)Ljava/lang/String; +HPLandroid/os/BatteryStats;->formatRatioLocked(JJ)Ljava/lang/String; +HPLandroid/os/BatteryStats;->formatTimeMs(Ljava/lang/StringBuilder;J)V +HPLandroid/os/BatteryStats;->formatTimeMsNoSpace(Ljava/lang/StringBuilder;J)V +HPLandroid/os/BatteryStats;->formatTimeRaw(Ljava/lang/StringBuilder;J)V +HPLandroid/os/BatteryStats;->printControllerActivity(Ljava/io/PrintWriter;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$ControllerActivityCounter;I)V +HPLandroid/os/BatteryStats;->printControllerActivityIfInteresting(Ljava/io/PrintWriter;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$ControllerActivityCounter;I)V +HPLandroid/os/BatteryStats;->printTimer(Ljava/io/PrintWriter;Ljava/lang/StringBuilder;Landroid/os/BatteryStats$Timer;JILjava/lang/String;Ljava/lang/String;)Z +HPLandroid/os/BatteryStats;->printWakeLock(Ljava/lang/StringBuilder;Landroid/os/BatteryStats$Timer;JLjava/lang/String;ILjava/lang/String;)Ljava/lang/String; +HPLandroid/os/BatteryStats;->printWakeLockCheckin(Ljava/lang/StringBuilder;Landroid/os/BatteryStats$Timer;JLjava/lang/String;ILjava/lang/String;)Ljava/lang/String; +HPLandroid/os/BatteryStats;->printmAh(Ljava/io/PrintWriter;D)V +HPLandroid/os/Binder;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/os/Binder;->dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V +HPLandroid/os/Binder;->isProxy(Landroid/os/IInterface;)Z +HPLandroid/os/Binder;->shellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V +HPLandroid/os/BinderProxy;->dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V +HPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;)V +HPLandroid/os/Build;->getRadioVersion()Ljava/lang/String; +HPLandroid/os/Build;->isBuildConsistent()Z +HPLandroid/os/Bundle;->(Landroid/os/PersistableBundle;)V +HPLandroid/os/Bundle;->describeContents()I +HPLandroid/os/Bundle;->forPair(Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle; +HPLandroid/os/Bundle;->getBinder(Ljava/lang/String;)Landroid/os/IBinder; +HPLandroid/os/Bundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence; +HPLandroid/os/Bundle;->getFloat(Ljava/lang/String;F)F +HPLandroid/os/Bundle;->getFloatArray(Ljava/lang/String;)[F +HPLandroid/os/Bundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +HPLandroid/os/Bundle;->getSize()I +HPLandroid/os/Bundle;->hasFileDescriptors()Z +HPLandroid/os/Bundle;->putFloat(Ljava/lang/String;F)V +HPLandroid/os/Bundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V +HPLandroid/os/Bundle;->putParcelableList(Ljava/lang/String;Ljava/util/List;)V +HPLandroid/os/CancellationSignal;->setOnCancelListener(Landroid/os/CancellationSignal$OnCancelListener;)V +HPLandroid/os/CommonTimeConfig$OnServerDiedListener;->onServerDied()V +HPLandroid/os/DeadObjectException;->()V +HPLandroid/os/Debug$MemoryInfo;->getTotalUss()I +HPLandroid/os/Debug$MemoryInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/Debug;->dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;[Ljava/lang/String;)Z +HPLandroid/os/Debug;->threadCpuTimeNanos()J +HPLandroid/os/DropBoxManager$Entry$1;->()V +HPLandroid/os/DropBoxManager$Entry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/DropBoxManager$Entry; +HPLandroid/os/DropBoxManager$Entry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/DropBoxManager$Entry;->(Ljava/lang/String;JLandroid/os/ParcelFileDescriptor;I)V +HPLandroid/os/DropBoxManager$Entry;->(Ljava/lang/String;JLjava/io/File;I)V +HPLandroid/os/DropBoxManager$Entry;->(Ljava/lang/String;JLjava/lang/String;)V +HPLandroid/os/DropBoxManager$Entry;->(Ljava/lang/String;J[BI)V +HPLandroid/os/DropBoxManager$Entry;->close()V +HPLandroid/os/DropBoxManager$Entry;->getFlags()I +HPLandroid/os/DropBoxManager$Entry;->getInputStream()Ljava/io/InputStream; +HPLandroid/os/DropBoxManager$Entry;->getTag()Ljava/lang/String; +HPLandroid/os/DropBoxManager$Entry;->getTimeMillis()J +HPLandroid/os/DropBoxManager$Entry;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/DropBoxManager;->(Landroid/content/Context;Lcom/android/internal/os/IDropBoxManagerService;)V +HPLandroid/os/DropBoxManager;->addFile(Ljava/lang/String;Ljava/io/File;I)V +HPLandroid/os/DropBoxManager;->addText(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/DropBoxManager;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLandroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z +HPLandroid/os/Environment;->getDataAppDirectory(Ljava/lang/String;)Ljava/io/File; +HPLandroid/os/Environment;->getDataMiscCeDirectory()Ljava/io/File; +HPLandroid/os/Environment;->getDataMiscCeDirectory(I)Ljava/io/File; +HPLandroid/os/Environment;->getDataMiscDirectory()Ljava/io/File; +HPLandroid/os/Environment;->getDataSystemCeDirectory()Ljava/io/File; +HPLandroid/os/Environment;->getDataSystemCeDirectory(I)Ljava/io/File; +HPLandroid/os/Environment;->getDataSystemDeDirectory()Ljava/io/File; +HPLandroid/os/Environment;->getDataSystemDeDirectory(I)Ljava/io/File; +HPLandroid/os/Environment;->getDownloadCacheDirectory()Ljava/io/File; +HPLandroid/os/Environment;->getLegacyExternalStorageDirectory()Ljava/io/File; +HPLandroid/os/FileBridge$FileBridgeOutputStream;->(Landroid/os/ParcelFileDescriptor;)V +HPLandroid/os/FileBridge$FileBridgeOutputStream;->close()V +HPLandroid/os/FileBridge$FileBridgeOutputStream;->fsync()V +HPLandroid/os/FileBridge$FileBridgeOutputStream;->write([BII)V +HPLandroid/os/FileBridge$FileBridgeOutputStream;->writeCommandAndBlock(ILjava/lang/String;)V +HPLandroid/os/FileBridge;->()V +HPLandroid/os/FileBridge;->forceClose()V +HPLandroid/os/FileBridge;->getClientSocket()Ljava/io/FileDescriptor; +HPLandroid/os/FileBridge;->isClosed()Z +HPLandroid/os/FileBridge;->run()V +HPLandroid/os/FileBridge;->setTargetFile(Ljava/io/FileDescriptor;)V +HPLandroid/os/FileUtils$1;->()V +HPLandroid/os/FileUtils;->buildValidExtFilename(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/os/FileUtils;->deleteOlderFiles(Ljava/io/File;IJ)Z +HPLandroid/os/FileUtils;->isValidExtFilename(Ljava/lang/String;)Z +HPLandroid/os/FileUtils;->isValidExtFilenameChar(C)Z +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/io/File;)Ljava/io/File; +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)[Ljava/lang/String; +HPLandroid/os/FileUtils;->roundStorageSize(J)J +HPLandroid/os/FileUtils;->setPermissions(Ljava/io/FileDescriptor;III)I +HPLandroid/os/FileUtils;->stringToFile(Ljava/io/File;Ljava/lang/String;)V +HPLandroid/os/FileUtils;->stringToFile(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/FileUtils;->trimFilename(Ljava/lang/StringBuilder;I)V +HPLandroid/os/Handler$BlockingRunnable;->(Ljava/lang/Runnable;)V +HPLandroid/os/Handler$BlockingRunnable;->postAndWait(Landroid/os/Handler;J)Z +HPLandroid/os/Handler$BlockingRunnable;->run()V +HPLandroid/os/Handler;->hasCallbacks(Ljava/lang/Runnable;)Z +HPLandroid/os/Handler;->runWithScissors(Ljava/lang/Runnable;J)Z +HPLandroid/os/Handler;->sendEmptyMessageAtTime(IJ)Z +HPLandroid/os/HandlerThread;->quitSafely()Z +HPLandroid/os/HwBlob;->wrapArray([I)[Ljava/lang/Integer; +HPLandroid/os/HwParcel;->readInt32Vector()Ljava/util/ArrayList; +HPLandroid/os/HwParcel;->writeInt8Vector(Ljava/util/ArrayList;)V +HPLandroid/os/IBatteryPropertiesListener$Stub;->()V +HPLandroid/os/IBatteryPropertiesListener$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/os/IBatteryPropertiesListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IBatteryPropertiesListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V +HPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->registerListener(Landroid/os/IBatteryPropertiesListener;)V +HPLandroid/os/ICancellationSignal$Stub$Proxy;->cancel()V +HPLandroid/os/ICancellationSignal$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IDeviceIdleController$Stub;->()V +HPLandroid/os/IDeviceIdleController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IHardwarePropertiesManager$Stub;->()V +HPLandroid/os/IHardwarePropertiesManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IIncidentManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IIncidentManager; +HPLandroid/os/IInstalld$Stub$Proxy;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V +HPLandroid/os/IInstalld$Stub$Proxy;->clearAppProfiles(Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->createUserData(Ljava/lang/String;III)V +HPLandroid/os/IInstalld$Stub$Proxy;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V +HPLandroid/os/IInstalld$Stub$Proxy;->getUserSize(Ljava/lang/String;II[I)[J +HPLandroid/os/IInstalld$Stub$Proxy;->idmap(Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/os/IInstalld$Stub$Proxy;->isQuotaSupported(Ljava/lang/String;)Z +HPLandroid/os/IInstalld$Stub$Proxy;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/os/IInstalld$Stub$Proxy;->markBootComplete(Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->rmPackageDir(Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->rmdex(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/IInstalld$Stub$Proxy;->setAppQuota(Ljava/lang/String;IIJ)V +HPLandroid/os/INetworkManagementService$Stub;->()V +HPLandroid/os/INetworkManagementService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IPermissionController$Stub;->()V +HPLandroid/os/IPermissionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IPermissionController;->checkPermission(Ljava/lang/String;II)Z +HPLandroid/os/IPermissionController;->getPackagesForUid(I)[Ljava/lang/String; +HPLandroid/os/IPermissionController;->isRuntimePermission(Ljava/lang/String;)Z +HPLandroid/os/IPowerManager$Stub$Proxy;->isWakeLockLevelSupported(I)Z +HPLandroid/os/IProcessInfoService$Stub;->()V +HPLandroid/os/IProcessInfoService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V +HPLandroid/os/IProcessInfoService;->getProcessStatesFromPids([I[I)V +HPLandroid/os/IRecoverySystem$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IRemoteCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/os/IRemoteCallback$Stub$Proxy;->sendResult(Landroid/os/Bundle;)V +HPLandroid/os/IRemoteCallback$Stub;->()V +HPLandroid/os/IRemoteCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/os/IRemoteCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRemoteCallback; +HPLandroid/os/IRemoteCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IRemoteCallback;->sendResult(Landroid/os/Bundle;)V +HPLandroid/os/ISchedulingPolicyService$Stub;->()V +HPLandroid/os/ISchedulingPolicyService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/ISchedulingPolicyService;->requestPriority(IIIZ)I +HPLandroid/os/IUpdateLock$Stub;->()V +HPLandroid/os/IUpdateLock$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUpdateLock; +HPLandroid/os/IUpdateLock;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V +HPLandroid/os/IUpdateLock;->releaseUpdateLock(Landroid/os/IBinder;)V +HPLandroid/os/IUserManager$Stub$Proxy;->getUserHandle(I)I +HPLandroid/os/IUserManager$Stub$Proxy;->isRestricted()Z +HPLandroid/os/IUserManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/IVibratorService$Stub;->()V +HPLandroid/os/IVibratorService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/LocaleList;->toString()Ljava/lang/String; +HPLandroid/os/Looper;->toString()Ljava/lang/String; +HPLandroid/os/MemoryFile;->(Ljava/lang/String;I)V +HPLandroid/os/MemoryFile;->beginAccess()V +HPLandroid/os/MemoryFile;->checkActive()V +HPLandroid/os/MemoryFile;->close()V +HPLandroid/os/MemoryFile;->deactivate()V +HPLandroid/os/MemoryFile;->endAccess()V +HPLandroid/os/MemoryFile;->getFileDescriptor()Ljava/io/FileDescriptor; +HPLandroid/os/MemoryFile;->readBytes([BIII)I +HPLandroid/os/MemoryFile;->writeBytes([BIII)V +HPLandroid/os/Message;->copyFrom(Landroid/os/Message;)V +HPLandroid/os/Message;->getWhen()J +HPLandroid/os/Message;->setTarget(Landroid/os/Handler;)V +HPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z +HPLandroid/os/MessageQueue;->isPolling()Z +HPLandroid/os/MessageQueue;->isPollingLocked()Z +HPLandroid/os/Messenger;->describeContents()I +HPLandroid/os/Messenger;->equals(Ljava/lang/Object;)Z +HPLandroid/os/Messenger;->hashCode()I +HPLandroid/os/Parcel;->compareData(Landroid/os/Parcel;)I +HPLandroid/os/Parcel;->readCharSequenceArray()[Ljava/lang/CharSequence; +HPLandroid/os/Parcel;->readFileDescriptor()Landroid/os/ParcelFileDescriptor; +HPLandroid/os/Parcel;->readSparseBooleanArrayInternal(Landroid/util/SparseBooleanArray;I)V +HPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V +HPLandroid/os/Parcel;->writeBooleanArray([Z)V +HPLandroid/os/Parcel;->writeDouble(D)V +HPLandroid/os/Parcel;->writeDoubleArray([D)V +HPLandroid/os/Parcel;->writeException(Ljava/lang/Exception;)V +HPLandroid/os/Parcel;->writeFloatArray([F)V +HPLandroid/os/Parcel;->writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V +HPLandroid/os/Parcel;->writeStrongInterface(Landroid/os/IInterface;)V +HPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V +HPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read()I +HPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([B)I +HPLandroid/os/ParcelFileDescriptor;->canDetectErrors()Z +HPLandroid/os/ParcelFileDescriptor;->createPipe()[Landroid/os/ParcelFileDescriptor; +HPLandroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/os/ParcelFileDescriptor;->getFile(Ljava/io/FileDescriptor;)Ljava/io/File; +HPLandroid/os/ParcelFileDescriptor;->getStatSize()J +HPLandroid/os/ParcelFileDescriptor;->parseMode(Ljava/lang/String;)I +HPLandroid/os/ParcelUuid;->hashCode()I +HPLandroid/os/PatternMatcher;->match(Ljava/lang/String;)Z +HPLandroid/os/PatternMatcher;->matchGlobPattern(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/os/PatternMatcher;->matchPattern(Ljava/lang/String;Ljava/lang/String;[II)Z +HPLandroid/os/PatternMatcher;->toString()Ljava/lang/String; +HPLandroid/os/PersistableBundle$MyReadMapCallback;->()V +HPLandroid/os/PersistableBundle$MyReadMapCallback;->readThisUnknownObjectXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object; +HPLandroid/os/PersistableBundle;->clone()Ljava/lang/Object; +HPLandroid/os/PersistableBundle;->getPersistableBundle(Ljava/lang/String;)Landroid/os/PersistableBundle; +HPLandroid/os/PersistableBundle;->putPersistableBundle(Ljava/lang/String;Landroid/os/PersistableBundle;)V +HPLandroid/os/PersistableBundle;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/PersistableBundle; +HPLandroid/os/PersistableBundle;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/os/PersistableBundle;->writeUnknownObject(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/os/PooledStringReader;->(Landroid/os/Parcel;)V +HPLandroid/os/PooledStringReader;->readString()Ljava/lang/String; +HPLandroid/os/PowerManager$WakeLock$1;->run()V +HPLandroid/os/PowerManager$WakeLock;->setHistoryTag(Ljava/lang/String;)V +HPLandroid/os/PowerManager$WakeLock;->setUnimportantForLogging(Z)V +HPLandroid/os/PowerManager;->getDefaultScreenBrightnessForVrSetting()I +HPLandroid/os/PowerManager;->getMaximumScreenBrightnessForVrSetting()I +HPLandroid/os/PowerManager;->getMaximumScreenBrightnessSetting()I +HPLandroid/os/PowerManager;->getMinimumScreenBrightnessForVrSetting()I +HPLandroid/os/PowerManager;->getMinimumScreenBrightnessSetting()I +HPLandroid/os/PowerManager;->isWakeLockLevelSupported(I)Z +HPLandroid/os/PowerManager;->wakeUp(JLjava/lang/String;)V +HPLandroid/os/PowerManagerInternal;->isInteractive(I)Z +HPLandroid/os/Process$ProcessStartResult;->()V +HPLandroid/os/Process;->getThreadGroupLeader(I)I +HPLandroid/os/Process;->isThreadInProcess(II)Z +HPLandroid/os/Process;->killProcessQuiet(I)V +HPLandroid/os/Process;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/Process;->startWebView(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/RecoverySystem;->handleAftermath(Landroid/content/Context;)Ljava/lang/String; +HPLandroid/os/RemoteCallback$1;->()V +HPLandroid/os/RemoteCallback$2;->(Landroid/os/RemoteCallback;)V +HPLandroid/os/RemoteCallback$2;->sendResult(Landroid/os/Bundle;)V +HPLandroid/os/RemoteCallback$OnResultListener;->onResult(Landroid/os/Bundle;)V +HPLandroid/os/RemoteCallback;->(Landroid/os/RemoteCallback$OnResultListener;)V +HPLandroid/os/RemoteCallback;->(Landroid/os/RemoteCallback$OnResultListener;Landroid/os/Handler;)V +HPLandroid/os/RemoteCallback;->sendResult(Landroid/os/Bundle;)V +HPLandroid/os/RemoteCallback;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/RemoteCallbackList$Callback;->binderDied()V +HPLandroid/os/RemoteCallbackList;->broadcast(Ljava/util/function/Consumer;)V +HPLandroid/os/RemoteCallbackList;->getBroadcastCookie(I)Ljava/lang/Object; +HPLandroid/os/RemoteCallbackList;->getRegisteredCallbackCount()I +HPLandroid/os/RemoteCallbackList;->kill()V +HPLandroid/os/RemoteCallbackList;->onCallbackDied(Landroid/os/IInterface;)V +HPLandroid/os/RemoteCallbackList;->onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V +HPLandroid/os/RemoteCallbackList;->unregister(Landroid/os/IInterface;)Z +HPLandroid/os/RemoteException;->()V +HPLandroid/os/ResultReceiver$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ResultReceiver; +HPLandroid/os/ResultReceiver$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/ResultReceiver$MyResultReceiver;->(Landroid/os/ResultReceiver;)V +HPLandroid/os/ResultReceiver$MyResultReceiver;->send(ILandroid/os/Bundle;)V +HPLandroid/os/ResultReceiver;->(Landroid/os/Parcel;)V +HPLandroid/os/ResultReceiver;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/SELinux;->restorecon(Ljava/io/File;)Z +HPLandroid/os/SELinux;->restoreconRecursive(Ljava/io/File;)Z +HPLandroid/os/ServiceSpecificException;->(ILjava/lang/String;)V +HPLandroid/os/ServiceSpecificException;->toString()Ljava/lang/String; +HPLandroid/os/SharedMemory$1;->()V +HPLandroid/os/SharedMemory$Closer;->(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;)V +HPLandroid/os/SharedMemory$Closer;->(Ljava/io/FileDescriptor;Landroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory$Closer;)V +HPLandroid/os/SharedMemory$Closer;->run()V +HPLandroid/os/SharedMemory$MemoryRegistration;->(I)V +HPLandroid/os/SharedMemory$MemoryRegistration;->(ILandroid/os/SharedMemory$MemoryRegistration;)V +HPLandroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemory$MemoryRegistration; +HPLandroid/os/SharedMemory$MemoryRegistration;->release()V +HPLandroid/os/SharedMemory$Unmapper;->(JILandroid/os/SharedMemory$MemoryRegistration;)V +HPLandroid/os/SharedMemory$Unmapper;->(JILandroid/os/SharedMemory$MemoryRegistration;Landroid/os/SharedMemory$Unmapper;)V +HPLandroid/os/SharedMemory$Unmapper;->run()V +HPLandroid/os/SharedMemory;->(Ljava/io/FileDescriptor;)V +HPLandroid/os/SharedMemory;->checkOpen()V +HPLandroid/os/SharedMemory;->close()V +HPLandroid/os/SharedMemory;->create(Ljava/lang/String;I)Landroid/os/SharedMemory; +HPLandroid/os/SharedMemory;->getFileDescriptor()Ljava/io/FileDescriptor; +HPLandroid/os/SharedMemory;->map(III)Ljava/nio/ByteBuffer; +HPLandroid/os/SharedMemory;->mapReadWrite()Ljava/nio/ByteBuffer; +HPLandroid/os/SharedMemory;->unmap(Ljava/nio/ByteBuffer;)V +HPLandroid/os/SharedMemory;->validateProt(I)V +HPLandroid/os/ShellCallback$1;->()V +HPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ShellCallback; +HPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/ShellCallback;->(Landroid/os/Parcel;)V +HPLandroid/os/ShellCallback;->openOutputFile(Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/os/ShellCommand;->()V +HPLandroid/os/ShellCommand;->exec(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)I +HPLandroid/os/ShellCommand;->getErrPrintWriter()Ljava/io/PrintWriter; +HPLandroid/os/ShellCommand;->getNextArg()Ljava/lang/String; +HPLandroid/os/ShellCommand;->getNextArgRequired()Ljava/lang/String; +HPLandroid/os/ShellCommand;->getNextOption()Ljava/lang/String; +HPLandroid/os/ShellCommand;->getOutPrintWriter()Ljava/io/PrintWriter; +HPLandroid/os/ShellCommand;->getRawErrorStream()Ljava/io/OutputStream; +HPLandroid/os/ShellCommand;->getRawInputStream()Ljava/io/InputStream; +HPLandroid/os/ShellCommand;->getRawOutputStream()Ljava/io/OutputStream; +HPLandroid/os/ShellCommand;->getShellCallback()Landroid/os/ShellCallback; +HPLandroid/os/ShellCommand;->init(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;I)V +HPLandroid/os/ShellCommand;->openOutputFileForSystem(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLandroid/os/ShellCommand;->peekNextArg()Ljava/lang/String; +HPLandroid/os/StatFs;->getAvailableBlocks()I +HPLandroid/os/StatFs;->getAvailableBytes()J +HPLandroid/os/StatFs;->getBlockCount()I +HPLandroid/os/StatFs;->getBlockCountLong()J +HPLandroid/os/StatFs;->getTotalBytes()J +HPLandroid/os/StatFs;->restat(Ljava/lang/String;)V +HPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onNetwork()V +HPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onResourceMismatch(Ljava/lang/Object;)V +HPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onUnbufferedIO()V +HPLandroid/os/StrictMode$InstanceTracker;->finalize()V +HPLandroid/os/StrictMode$ViolationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/StrictMode$ViolationInfo; +HPLandroid/os/StrictMode$ViolationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;)V +HPLandroid/os/StrictMode;->-wrap2(ILandroid/os/StrictMode$ViolationInfo;)V +HPLandroid/os/StrictMode;->decrementExpectedActivityCount(Ljava/lang/Class;)V +HPLandroid/os/StrictMode;->noteResourceMismatch(Ljava/lang/Object;)V +HPLandroid/os/StrictMode;->onSqliteObjectLeaked(Ljava/lang/String;Ljava/lang/Throwable;)V +HPLandroid/os/SystemClock;->setCurrentTimeMillis(J)Z +HPLandroid/os/SystemProperties;->getLong(Ljava/lang/String;J)J +HPLandroid/os/SystemService$1;->()V +HPLandroid/os/SystemService$State;->(Ljava/lang/String;ILjava/lang/String;)V +HPLandroid/os/SystemService;->-get1()Ljava/util/HashMap; +HPLandroid/os/SystemService;->getState(Ljava/lang/String;)Landroid/os/SystemService$State; +HPLandroid/os/SystemService;->isRunning(Ljava/lang/String;)Z +HPLandroid/os/SystemService;->isStopped(Ljava/lang/String;)Z +HPLandroid/os/SystemService;->restart(Ljava/lang/String;)V +HPLandroid/os/SystemService;->start(Ljava/lang/String;)V +HPLandroid/os/SystemService;->waitForState(Ljava/lang/String;Landroid/os/SystemService$State;J)V +HPLandroid/os/SystemVibrator;->()V +HPLandroid/os/SystemVibrator;->cancel()V +HPLandroid/os/SystemVibrator;->usageForAttributes(Landroid/media/AudioAttributes;)I +HPLandroid/os/SystemVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V +HPLandroid/os/TokenWatcher$1;->(Landroid/os/TokenWatcher;)V +HPLandroid/os/TokenWatcher$1;->run()V +HPLandroid/os/TokenWatcher$Death;->(Landroid/os/TokenWatcher;Landroid/os/IBinder;Ljava/lang/String;)V +HPLandroid/os/TokenWatcher$Death;->finalize()V +HPLandroid/os/TokenWatcher;->-get0(Landroid/os/TokenWatcher;)I +HPLandroid/os/TokenWatcher;->-get2(Landroid/os/TokenWatcher;)Ljava/util/WeakHashMap; +HPLandroid/os/TokenWatcher;->-set0(Landroid/os/TokenWatcher;I)I +HPLandroid/os/TokenWatcher;->(Landroid/os/Handler;Ljava/lang/String;)V +HPLandroid/os/TokenWatcher;->acquire(Landroid/os/IBinder;Ljava/lang/String;)V +HPLandroid/os/TokenWatcher;->acquired()V +HPLandroid/os/TokenWatcher;->cleanup(Landroid/os/IBinder;Z)V +HPLandroid/os/TokenWatcher;->isAcquired()Z +HPLandroid/os/TokenWatcher;->release(Landroid/os/IBinder;)V +HPLandroid/os/TokenWatcher;->released()V +HPLandroid/os/TokenWatcher;->sendNotificationLocked(Z)V +HPLandroid/os/UEventObserver$UEvent;->(Ljava/lang/String;)V +HPLandroid/os/UEventObserver$UEvent;->get(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/os/UEventObserver$UEventThread;->()V +HPLandroid/os/UEventObserver$UEventThread;->addObserver(Ljava/lang/String;Landroid/os/UEventObserver;)V +HPLandroid/os/UEventObserver$UEventThread;->run()V +HPLandroid/os/UEventObserver$UEventThread;->sendEvent(Ljava/lang/String;)V +HPLandroid/os/UEventObserver;->-wrap0()Ljava/lang/String; +HPLandroid/os/UEventObserver;->-wrap1(Ljava/lang/String;)V +HPLandroid/os/UEventObserver;->-wrap3()V +HPLandroid/os/UEventObserver;->()V +HPLandroid/os/UEventObserver;->getThread()Landroid/os/UEventObserver$UEventThread; +HPLandroid/os/UEventObserver;->startObserving(Ljava/lang/String;)V +HPLandroid/os/UpdateLock;->acquire()V +HPLandroid/os/UpdateLock;->acquireLocked()V +HPLandroid/os/UpdateLock;->checkService()V +HPLandroid/os/UpdateLock;->isHeld()Z +HPLandroid/os/UpdateLock;->release()V +HPLandroid/os/UpdateLock;->releaseLocked()V +HPLandroid/os/UserHandle;->describeContents()I +HPLandroid/os/UserHandle;->formatUid(Ljava/io/PrintWriter;I)V +HPLandroid/os/UserHandle;->formatUid(Ljava/lang/StringBuilder;I)V +HPLandroid/os/UserHandle;->getSharedAppGid(I)I +HPLandroid/os/UserHandle;->getUserGid(I)I +HPLandroid/os/UserHandle;->getUserHandleForUid(I)Landroid/os/UserHandle; +HPLandroid/os/UserHandle;->isApp(I)Z +HPLandroid/os/UserHandle;->isIsolated(I)Z +HPLandroid/os/UserHandle;->isSameUser(II)Z +HPLandroid/os/UserHandle;->isSystem()Z +HPLandroid/os/UserManager;->getCredentialOwnerProfile(I)I +HPLandroid/os/UserManager;->getEnabledProfileIds(I)[I +HPLandroid/os/UserManager;->getUserCount()I +HPLandroid/os/UserManager;->getUserForSerialNumber(J)Landroid/os/UserHandle; +HPLandroid/os/UserManager;->getUserHandle(I)I +HPLandroid/os/UserManager;->isGuestUser(I)Z +HPLandroid/os/UserManager;->isLinkedUser()Z +HPLandroid/os/UserManager;->isPrimaryUser()Z +HPLandroid/os/UserManager;->isSystemUser()Z +HPLandroid/os/VibrationEffect$1;->()V +HPLandroid/os/VibrationEffect$Prebaked$1;->()V +HPLandroid/os/VibrationEffect$Prebaked;->(I)V +HPLandroid/os/VibrationEffect$Prebaked;->getId()I +HPLandroid/os/VibrationEffect$Prebaked;->validate()V +HPLandroid/os/VibrationEffect$Waveform$1;->()V +HPLandroid/os/VibrationEffect$Waveform;->([J[II)V +HPLandroid/os/VibrationEffect$Waveform;->hasNonZeroEntry([J)Z +HPLandroid/os/VibrationEffect$Waveform;->validate()V +HPLandroid/os/VibrationEffect;->()V +HPLandroid/os/VibrationEffect;->createWaveform([JI)Landroid/os/VibrationEffect; +HPLandroid/os/VibrationEffect;->createWaveform([J[II)Landroid/os/VibrationEffect; +HPLandroid/os/VibrationEffect;->get(I)Landroid/os/VibrationEffect; +HPLandroid/os/VibrationEffect;->validate()V +HPLandroid/os/Vibrator;->()V +HPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource; +HPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/os/WorkSource;->(Landroid/os/Parcel;)V +HPLandroid/os/WorkSource;->add(I)Z +HPLandroid/os/WorkSource;->addWork(Landroid/os/WorkSource;ILjava/lang/String;)Landroid/os/WorkSource; +HPLandroid/os/WorkSource;->clearNames()V +HPLandroid/os/WorkSource;->equals(Ljava/lang/Object;)Z +HPLandroid/os/WorkSource;->hashCode()I +HPLandroid/os/WorkSource;->insert(II)V +HPLandroid/os/WorkSource;->setReturningDiffs(Landroid/os/WorkSource;)[Landroid/os/WorkSource; +HPLandroid/os/WorkSource;->toString()Ljava/lang/String; +HPLandroid/os/WorkSource;->updateUidsLocked(Landroid/os/WorkSource;ZZ)Z +HPLandroid/os/ZygoteProcess$ZygoteState;->isClosed()Z +HPLandroid/os/ZygoteProcess$ZygoteState;->matches(Ljava/lang/String;)Z +HPLandroid/os/ZygoteProcess;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/ZygoteProcess;->establishZygoteConnectionForAbi(Ljava/lang/String;)V +HPLandroid/os/ZygoteProcess;->openZygoteSocketIfNeeded(Ljava/lang/String;)Landroid/os/ZygoteProcess$ZygoteState; +HPLandroid/os/ZygoteProcess;->preloadDefault(Ljava/lang/String;)Z +HPLandroid/os/ZygoteProcess;->preloadPackageForAbi(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/os/ZygoteProcess;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/ZygoteProcess;->startViaZygote(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/ZygoteProcess;->zygoteSendArgsAndGetResult(Landroid/os/ZygoteProcess$ZygoteState;Ljava/util/ArrayList;)Landroid/os/Process$ProcessStartResult; +HPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/storage/IStorageEventListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageEventListener; +HPLandroid/os/storage/IStorageEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/storage/IStorageManager$Stub;->()V +HPLandroid/os/storage/IStorageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/os/storage/StorageEventListener;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->handleMessage(Landroid/os/Message;)Z +HPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V +HPLandroid/os/storage/StorageManager;->allocateBytes(Ljava/io/FileDescriptor;JI)V +HPLandroid/os/storage/StorageManager;->allocateBytes(Ljava/util/UUID;JI)V +HPLandroid/os/storage/StorageManager;->findPathForUuid(Ljava/lang/String;)Ljava/io/File; +HPLandroid/os/storage/StorageManager;->findPrivateForEmulated(Landroid/os/storage/VolumeInfo;)Landroid/os/storage/VolumeInfo; +HPLandroid/os/storage/StorageManager;->findVolumeById(Ljava/lang/String;)Landroid/os/storage/VolumeInfo; +HPLandroid/os/storage/StorageManager;->findVolumeByQualifiedUuid(Ljava/lang/String;)Landroid/os/storage/VolumeInfo; +HPLandroid/os/storage/StorageManager;->from(Landroid/content/Context;)Landroid/os/storage/StorageManager; +HPLandroid/os/storage/StorageManager;->getBestVolumeDescription(Landroid/os/storage/VolumeInfo;)Ljava/lang/String; +HPLandroid/os/storage/StorageManager;->getPrimaryStorageSize()J +HPLandroid/os/storage/StorageManager;->getPrimaryVolume()Landroid/os/storage/StorageVolume; +HPLandroid/os/storage/StorageManager;->getPrimaryVolume([Landroid/os/storage/StorageVolume;)Landroid/os/storage/StorageVolume; +HPLandroid/os/storage/StorageManager;->getStorageCacheBytes(Ljava/io/File;I)J +HPLandroid/os/storage/StorageManager;->getStorageFullBytes(Ljava/io/File;)J +HPLandroid/os/storage/StorageManager;->getStorageLowBytes(Ljava/io/File;)J +HPLandroid/os/storage/StorageManager;->getStorageVolume(Ljava/io/File;)Landroid/os/storage/StorageVolume; +HPLandroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume; +HPLandroid/os/storage/StorageManager;->getWritablePrivateVolumes()Ljava/util/List; +HPLandroid/os/storage/StorageManager;->isFileEncryptedEmulatedOnly()Z +HPLandroid/os/storage/StorageManager;->isUserKeyUnlocked(I)Z +HPLandroid/os/storage/StorageManager;->prepareUserStorage(Ljava/lang/String;III)V +HPLandroid/os/storage/StorageManagerInternal;->()V +HPLandroid/os/storage/StorageManagerInternal;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V +HPLandroid/os/storage/StorageManagerInternal;->getExternalStorageMountMode(ILjava/lang/String;)I +HPLandroid/os/storage/StorageManagerInternal;->onExternalStoragePolicyChanged(ILjava/lang/String;)V +HPLandroid/os/storage/StorageVolume;->(Ljava/lang/String;ILjava/io/File;Ljava/lang/String;ZZZJZJLandroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/os/storage/StorageVolume;->allowMassStorage()Z +HPLandroid/os/storage/StorageVolume;->describeContents()I +HPLandroid/os/storage/StorageVolume;->getId()Ljava/lang/String; +HPLandroid/os/storage/StorageVolume;->getOwner()Landroid/os/UserHandle; +HPLandroid/os/storage/StorageVolume;->getPath()Ljava/lang/String; +HPLandroid/os/storage/StorageVolume;->isPrimary()Z +HPLandroid/os/storage/StorageVolume;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/os/storage/VolumeInfo;->(Ljava/lang/String;ILandroid/os/storage/DiskInfo;Ljava/lang/String;)V +HPLandroid/os/storage/VolumeInfo;->buildStorageVolume(Landroid/content/Context;IZ)Landroid/os/storage/StorageVolume; +HPLandroid/os/storage/VolumeInfo;->clone()Landroid/os/storage/VolumeInfo; +HPLandroid/os/storage/VolumeInfo;->getBroadcastForEnvironment(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/os/storage/VolumeInfo;->getDescription()Ljava/lang/String; +HPLandroid/os/storage/VolumeInfo;->getEnvironmentForState(I)Ljava/lang/String; +HPLandroid/os/storage/VolumeInfo;->getId()Ljava/lang/String; +HPLandroid/os/storage/VolumeInfo;->getPath()Ljava/io/File; +HPLandroid/os/storage/VolumeInfo;->getPathForUser(I)Ljava/io/File; +HPLandroid/os/storage/VolumeInfo;->getState()I +HPLandroid/os/storage/VolumeInfo;->isMountedWritable()Z +HPLandroid/os/storage/VolumeInfo;->isPrimary()Z +HPLandroid/os/storage/VolumeInfo;->isVisible()Z +HPLandroid/os/storage/VolumeInfo;->isVisibleForRead(I)Z +HPLandroid/os/storage/VolumeInfo;->isVisibleForWrite(I)Z +HPLandroid/os/storage/VolumeInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/preference/Preference$BaseSavedState$1;->()V +HPLandroid/preference/Preference$BaseSavedState;->(Landroid/os/Parcel;)V +HPLandroid/preference/Preference$BaseSavedState;->(Landroid/os/Parcelable;)V +HPLandroid/preference/SeekBarVolumizer$Callback;->onMuted(ZZ)V +HPLandroid/preference/SeekBarVolumizer$Callback;->onProgressChanged(Landroid/widget/SeekBar;IZ)V +HPLandroid/preference/SeekBarVolumizer$Callback;->onSampleStarting(Landroid/preference/SeekBarVolumizer;)V +HPLandroid/preference/SeekBarVolumizer$H;->(Landroid/preference/SeekBarVolumizer;)V +HPLandroid/preference/SeekBarVolumizer$H;->(Landroid/preference/SeekBarVolumizer;Landroid/preference/SeekBarVolumizer$H;)V +HPLandroid/preference/SeekBarVolumizer$H;->handleMessage(Landroid/os/Message;)V +HPLandroid/preference/SeekBarVolumizer$H;->postUpdateSlider(IIZ)V +HPLandroid/preference/SeekBarVolumizer$Observer;->(Landroid/preference/SeekBarVolumizer;Landroid/os/Handler;)V +HPLandroid/preference/SeekBarVolumizer$Receiver;->(Landroid/preference/SeekBarVolumizer;)V +HPLandroid/preference/SeekBarVolumizer$Receiver;->(Landroid/preference/SeekBarVolumizer;Landroid/preference/SeekBarVolumizer$Receiver;)V +HPLandroid/preference/SeekBarVolumizer$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLandroid/preference/SeekBarVolumizer$Receiver;->setListening(Z)V +HPLandroid/preference/SeekBarVolumizer;->-get0(Landroid/preference/SeekBarVolumizer;)Z +HPLandroid/preference/SeekBarVolumizer;->-get1(Landroid/preference/SeekBarVolumizer;)Landroid/media/AudioManager; +HPLandroid/preference/SeekBarVolumizer;->-get3(Landroid/preference/SeekBarVolumizer;)Landroid/content/Context; +HPLandroid/preference/SeekBarVolumizer;->-get5(Landroid/preference/SeekBarVolumizer;)Z +HPLandroid/preference/SeekBarVolumizer;->-get7(Landroid/preference/SeekBarVolumizer;)Z +HPLandroid/preference/SeekBarVolumizer;->-get8(Landroid/preference/SeekBarVolumizer;)Landroid/widget/SeekBar; +HPLandroid/preference/SeekBarVolumizer;->-set0(Landroid/preference/SeekBarVolumizer;I)I +HPLandroid/preference/SeekBarVolumizer;->-set1(Landroid/preference/SeekBarVolumizer;I)I +HPLandroid/preference/SeekBarVolumizer;->-set3(Landroid/preference/SeekBarVolumizer;I)I +HPLandroid/preference/SeekBarVolumizer;->-wrap2(Landroid/preference/SeekBarVolumizer;)V +HPLandroid/preference/SeekBarVolumizer;->(Landroid/content/Context;ILandroid/net/Uri;Landroid/preference/SeekBarVolumizer$Callback;)V +HPLandroid/preference/SeekBarVolumizer;->handleMessage(Landroid/os/Message;)Z +HPLandroid/preference/SeekBarVolumizer;->isNotificationOrRing(I)Z +HPLandroid/preference/SeekBarVolumizer;->isZenMuted()Z +HPLandroid/preference/SeekBarVolumizer;->onInitSample()V +HPLandroid/preference/SeekBarVolumizer;->onStopSample()V +HPLandroid/preference/SeekBarVolumizer;->postStopSample()V +HPLandroid/preference/SeekBarVolumizer;->setSeekBar(Landroid/widget/SeekBar;)V +HPLandroid/preference/SeekBarVolumizer;->start()V +HPLandroid/preference/SeekBarVolumizer;->stop()V +HPLandroid/preference/SeekBarVolumizer;->updateSeekBar()V +HPLandroid/preference/SeekBarVolumizer;->updateSlider()V +HPLandroid/print/IPrintManager$Stub;->()V +HPLandroid/print/IPrintManager;->addPrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;II)V +HPLandroid/print/IPrintManager;->addPrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V +HPLandroid/print/IPrintManager;->addPrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;I)V +HPLandroid/print/IPrintManager;->cancelPrintJob(Landroid/print/PrintJobId;II)V +HPLandroid/print/IPrintManager;->createPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;I)V +HPLandroid/print/IPrintManager;->destroyPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;I)V +HPLandroid/print/IPrintManager;->getCustomPrinterIcon(Landroid/print/PrinterId;I)Landroid/graphics/drawable/Icon; +HPLandroid/print/IPrintManager;->getPrintJobInfo(Landroid/print/PrintJobId;II)Landroid/print/PrintJobInfo; +HPLandroid/print/IPrintManager;->getPrintJobInfos(II)Ljava/util/List; +HPLandroid/print/IPrintManager;->getPrintServiceRecommendations(I)Ljava/util/List; +HPLandroid/print/IPrintManager;->getPrintServices(II)Ljava/util/List; +HPLandroid/print/IPrintManager;->print(Ljava/lang/String;Landroid/print/IPrintDocumentAdapter;Landroid/print/PrintAttributes;Ljava/lang/String;II)Landroid/os/Bundle; +HPLandroid/print/IPrintManager;->removePrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;I)V +HPLandroid/print/IPrintManager;->removePrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V +HPLandroid/print/IPrintManager;->removePrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;I)V +HPLandroid/print/IPrintManager;->restartPrintJob(Landroid/print/PrintJobId;II)V +HPLandroid/print/IPrintManager;->setPrintServiceEnabled(Landroid/content/ComponentName;ZI)V +HPLandroid/print/IPrintManager;->startPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;I)V +HPLandroid/print/IPrintManager;->startPrinterStateTracking(Landroid/print/PrinterId;I)V +HPLandroid/print/IPrintManager;->stopPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;I)V +HPLandroid/print/IPrintManager;->stopPrinterStateTracking(Landroid/print/PrinterId;I)V +HPLandroid/print/IPrintManager;->validatePrinters(Ljava/util/List;I)V +HPLandroid/print/IPrintSpooler$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/print/IPrintSpooler$Stub$Proxy;->pruneApprovedPrintServices(Ljava/util/List;)V +HPLandroid/print/IPrintSpooler$Stub$Proxy;->removeObsoletePrintJobs()V +HPLandroid/print/IPrintSpooler$Stub$Proxy;->setClient(Landroid/print/IPrintSpoolerClient;)V +HPLandroid/print/IPrintSpooler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintSpooler; +HPLandroid/print/IPrintSpooler;->clearCustomPrinterIconCache(Landroid/print/IPrintSpoolerCallbacks;I)V +HPLandroid/print/IPrintSpooler;->createPrintJob(Landroid/print/PrintJobInfo;)V +HPLandroid/print/IPrintSpooler;->getCustomPrinterIcon(Landroid/print/PrinterId;Landroid/print/IPrintSpoolerCallbacks;I)V +HPLandroid/print/IPrintSpooler;->getPrintJobInfo(Landroid/print/PrintJobId;Landroid/print/IPrintSpoolerCallbacks;II)V +HPLandroid/print/IPrintSpooler;->getPrintJobInfos(Landroid/print/IPrintSpoolerCallbacks;Landroid/content/ComponentName;III)V +HPLandroid/print/IPrintSpooler;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;Landroid/print/IPrintSpoolerCallbacks;I)V +HPLandroid/print/IPrintSpooler;->pruneApprovedPrintServices(Ljava/util/List;)V +HPLandroid/print/IPrintSpooler;->removeObsoletePrintJobs()V +HPLandroid/print/IPrintSpooler;->setClient(Landroid/print/IPrintSpoolerClient;)V +HPLandroid/print/IPrintSpooler;->setPrintJobCancelling(Landroid/print/PrintJobId;Z)V +HPLandroid/print/IPrintSpooler;->setPrintJobState(Landroid/print/PrintJobId;ILjava/lang/String;Landroid/print/IPrintSpoolerCallbacks;I)V +HPLandroid/print/IPrintSpooler;->setPrintJobTag(Landroid/print/PrintJobId;Ljava/lang/String;Landroid/print/IPrintSpoolerCallbacks;I)V +HPLandroid/print/IPrintSpooler;->setProgress(Landroid/print/PrintJobId;F)V +HPLandroid/print/IPrintSpooler;->setStatus(Landroid/print/PrintJobId;Ljava/lang/CharSequence;)V +HPLandroid/print/IPrintSpooler;->setStatusRes(Landroid/print/PrintJobId;ILjava/lang/CharSequence;)V +HPLandroid/print/IPrintSpooler;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V +HPLandroid/print/IPrintSpoolerCallbacks$Stub;->()V +HPLandroid/print/IPrintSpoolerCallbacks;->onCancelPrintJobResult(ZI)V +HPLandroid/print/IPrintSpoolerClient$Stub;->()V +HPLandroid/print/IPrintSpoolerClient$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/print/IPrintSpoolerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/print/IPrintSpoolerClient;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V +HPLandroid/print/IPrintSpoolerClient;->onAllPrintJobsHandled()V +HPLandroid/print/IPrintSpoolerClient;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V +HPLandroid/print/IPrintSpoolerClient;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V +HPLandroid/print/PrintDocumentAdapter;->()V +HPLandroid/print/PrintDocumentAdapter;->onLayout(Landroid/print/PrintAttributes;Landroid/print/PrintAttributes;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$LayoutResultCallback;Landroid/os/Bundle;)V +HPLandroid/print/PrintDocumentAdapter;->onWrite([Landroid/print/PageRange;Landroid/os/ParcelFileDescriptor;Landroid/os/CancellationSignal;Landroid/print/PrintDocumentAdapter$WriteResultCallback;)V +HPLandroid/printservice/IPrintServiceClient$Stub;->()V +HPLandroid/printservice/IPrintServiceClient;->getPrintJobInfo(Landroid/print/PrintJobId;)Landroid/print/PrintJobInfo; +HPLandroid/printservice/IPrintServiceClient;->getPrintJobInfos()Ljava/util/List; +HPLandroid/printservice/IPrintServiceClient;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;)V +HPLandroid/printservice/IPrintServiceClient;->onPrintersAdded(Landroid/content/pm/ParceledListSlice;)V +HPLandroid/printservice/IPrintServiceClient;->onPrintersRemoved(Landroid/content/pm/ParceledListSlice;)V +HPLandroid/printservice/IPrintServiceClient;->setPrintJobState(Landroid/print/PrintJobId;ILjava/lang/String;)Z +HPLandroid/printservice/IPrintServiceClient;->setPrintJobTag(Landroid/print/PrintJobId;Ljava/lang/String;)Z +HPLandroid/printservice/IPrintServiceClient;->setProgress(Landroid/print/PrintJobId;F)V +HPLandroid/printservice/IPrintServiceClient;->setStatus(Landroid/print/PrintJobId;Ljava/lang/CharSequence;)V +HPLandroid/printservice/IPrintServiceClient;->setStatusRes(Landroid/print/PrintJobId;ILjava/lang/CharSequence;)V +HPLandroid/printservice/IPrintServiceClient;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V +HPLandroid/printservice/PrintServiceInfo$1;->()V +HPLandroid/printservice/PrintServiceInfo;->(Landroid/content/pm/ResolveInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/printservice/PrintServiceInfo;->create(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)Landroid/printservice/PrintServiceInfo; +HPLandroid/printservice/PrintServiceInfo;->getComponentName()Landroid/content/ComponentName; +HPLandroid/printservice/PrintServiceInfo;->getResolveInfo()Landroid/content/pm/ResolveInfo; +HPLandroid/printservice/PrintServiceInfo;->hashCode()I +HPLandroid/printservice/PrintServiceInfo;->isEnabled()Z +HPLandroid/printservice/PrintServiceInfo;->setIsEnabled(Z)V +HPLandroid/provider/CallLog$Calls;->addCall(Lcom/android/internal/telephony/CallerInfo;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/telecom/PhoneAccountHandle;JILjava/lang/Long;ZLandroid/os/UserHandle;)Landroid/net/Uri; +HPLandroid/provider/CallLog$Calls;->addCall(Lcom/android/internal/telephony/CallerInfo;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/telecom/PhoneAccountHandle;JILjava/lang/Long;ZLandroid/os/UserHandle;Z)Landroid/net/Uri; +HPLandroid/provider/CallLog$Calls;->addEntryAndRemoveExpiredEntries(Landroid/content/Context;Landroid/os/UserManager;Landroid/os/UserHandle;Landroid/content/ContentValues;)Landroid/net/Uri; +HPLandroid/provider/CallLog$Calls;->getLastOutgoingCall(Landroid/content/Context;)Ljava/lang/String; +HPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/provider/ContactsContract$Directory;->isRemoteDirectoryId(J)Z +HPLandroid/provider/Downloads;->removeAllDownloadsByPackage(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/provider/MediaStore$Images$Thumbnails;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HPLandroid/provider/Settings$Global;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F +HPLandroid/provider/Settings$Global;->getMovedToSecureSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$Global;->isValidZenMode(I)Z +HPLandroid/provider/Settings$Global;->zenModeToString(I)Ljava/lang/String; +HPLandroid/provider/Settings$Secure;->getCloneToManagedProfileSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$Secure;->getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J +HPLandroid/provider/Settings$Secure;->getMovedToGlobalSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$Secure;->isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z +HPLandroid/provider/Settings$Secure;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z +HPLandroid/provider/Settings$Secure;->putLongForUser(Landroid/content/ContentResolver;Ljava/lang/String;JI)Z +HPLandroid/provider/Settings$Secure;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/provider/Settings$Secure;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z +HPLandroid/provider/Settings$Secure;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z +HPLandroid/provider/Settings$System$1;->validate(Ljava/lang/String;)Z +HPLandroid/provider/Settings$System$DiscreteValueValidator;->validate(Ljava/lang/String;)Z +HPLandroid/provider/Settings$System;->adjustConfigurationForUser(Landroid/content/ContentResolver;Landroid/content/res/Configuration;IZ)V +HPLandroid/provider/Settings$System;->clearConfiguration(Landroid/content/res/Configuration;)V +HPLandroid/provider/Settings$System;->getCloneFromParentOnValueSettings(Ljava/util/Map;)V +HPLandroid/provider/Settings$System;->getCloneToManagedProfileSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$System;->getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V +HPLandroid/provider/Settings$System;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F +HPLandroid/provider/Settings$System;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;FI)F +HPLandroid/provider/Settings$System;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)F +HPLandroid/provider/Settings$System;->getMovedToGlobalSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$System;->getMovedToSecureSettings(Ljava/util/Set;)V +HPLandroid/provider/Settings$System;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/provider/Settings$System;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z +HPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z +HPLandroid/provider/Settings;->checkAndNoteChangeNetworkStateOperation(Landroid/content/Context;ILjava/lang/String;Z)Z +HPLandroid/provider/Settings;->checkAndNoteWriteSettingsOperation(Landroid/content/Context;ILjava/lang/String;Z)Z +HPLandroid/provider/Settings;->getPackageNameForUid(Landroid/content/Context;I)Ljava/lang/String; +HPLandroid/provider/Settings;->isCallingPackageAllowedToPerformAppOpsProtectedOperation(Landroid/content/Context;ILjava/lang/String;ZI[Ljava/lang/String;Z)Z +HPLandroid/provider/Settings;->setInSystemServer()V +HPLandroid/provider/Telephony$Mms;->extractAddrSpec(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/provider/Telephony$Mms;->isEmailAddress(Ljava/lang/String;)Z +HPLandroid/provider/Telephony$Mms;->isPhoneNumber(Ljava/lang/String;)Z +HPLandroid/security/Credentials;->deleteAllTypesForAlias(Landroid/security/KeyStore;Ljava/lang/String;I)Z +HPLandroid/security/Credentials;->deleteCertificateTypesForAlias(Landroid/security/KeyStore;Ljava/lang/String;I)Z +HPLandroid/security/Credentials;->deletePrivateKeyTypeForAlias(Landroid/security/KeyStore;Ljava/lang/String;I)Z +HPLandroid/security/Credentials;->deleteSecretKeyTypeForAlias(Landroid/security/KeyStore;Ljava/lang/String;I)Z +HPLandroid/security/IKeyChainService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/security/IKeyChainService$Stub$Proxy;->getUserCaAliases()Landroid/content/pm/StringParceledListSlice; +HPLandroid/security/IKeyChainService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeyChainService; +HPLandroid/security/IKeyChainService;->containsCaAlias(Ljava/lang/String;)Z +HPLandroid/security/IKeyChainService;->deleteCaCertificate(Ljava/lang/String;)Z +HPLandroid/security/IKeyChainService;->getCaCertificateChainAliases(Ljava/lang/String;Z)Ljava/util/List; +HPLandroid/security/IKeyChainService;->getCaCertificates(Ljava/lang/String;)[B +HPLandroid/security/IKeyChainService;->getCertificate(Ljava/lang/String;)[B +HPLandroid/security/IKeyChainService;->getEncodedCaCertificate(Ljava/lang/String;Z)[B +HPLandroid/security/IKeyChainService;->getSystemCaAliases()Landroid/content/pm/StringParceledListSlice; +HPLandroid/security/IKeyChainService;->getUserCaAliases()Landroid/content/pm/StringParceledListSlice; +HPLandroid/security/IKeyChainService;->hasGrant(ILjava/lang/String;)Z +HPLandroid/security/IKeyChainService;->installCaCertificate([B)Ljava/lang/String; +HPLandroid/security/IKeyChainService;->installKeyPair([B[B[BLjava/lang/String;)Z +HPLandroid/security/IKeyChainService;->removeKeyPair(Ljava/lang/String;)Z +HPLandroid/security/IKeyChainService;->requestPrivateKey(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/security/IKeyChainService;->reset()Z +HPLandroid/security/IKeyChainService;->setGrant(ILjava/lang/String;Z)V +HPLandroid/security/IKeystoreService$Stub$Proxy;->del(Ljava/lang/String;I)I +HPLandroid/security/IKeystoreService$Stub$Proxy;->exist(Ljava/lang/String;I)I +HPLandroid/security/IKeystoreService$Stub$Proxy;->getState(I)I +HPLandroid/security/IKeystoreService$Stub$Proxy;->onUserPasswordChanged(ILjava/lang/String;)I +HPLandroid/security/KeyChain$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLandroid/security/KeyChain$KeyChainConnection;->(Landroid/content/Context;Landroid/content/ServiceConnection;Landroid/security/IKeyChainService;)V +HPLandroid/security/KeyChain$KeyChainConnection;->close()V +HPLandroid/security/KeyChain$KeyChainConnection;->getService()Landroid/security/IKeyChainService; +HPLandroid/security/KeyStore$State;->(Ljava/lang/String;I)V +HPLandroid/security/KeyStore;->contains(Ljava/lang/String;)Z +HPLandroid/security/KeyStore;->contains(Ljava/lang/String;I)Z +HPLandroid/security/KeyStore;->delete(Ljava/lang/String;I)Z +HPLandroid/security/KeyStore;->onUserPasswordChanged(ILjava/lang/String;)Z +HPLandroid/security/KeyStore;->state(I)Landroid/security/KeyStore$State; +HPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->()V +HPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider;->getKeyAttestationApplicationId(I)Landroid/security/keymaster/KeyAttestationApplicationId; +HPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->()V +HPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putAsymmetricCipherImpl(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putMacImpl(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putSignatureImpl(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putSymmetricCipherImpl(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->finalize()V +HPLandroid/security/keystore/AndroidKeyStoreProvider;->()V +HPLandroid/security/keystore/AndroidKeyStoreProvider;->install()V +HPLandroid/security/keystore/AndroidKeyStoreProvider;->putKeyFactoryImpl(Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreProvider;->putSecretKeyFactoryImpl(Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreRSACipherSpi$PKCS1Padding;->finalize()V +HPLandroid/security/keystore/AndroidKeyStoreSpi;->()V +HPLandroid/security/keystore/AndroidKeyStoreSpi;->engineContainsAlias(Ljava/lang/String;)Z +HPLandroid/security/keystore/AndroidKeyStoreSpi;->engineDeleteEntry(Ljava/lang/String;)V +HPLandroid/security/keystore/AndroidKeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V +HPLandroid/security/net/config/ApplicationConfig;->isCleartextTrafficPermitted(Ljava/lang/String;)Z +HPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z +HPLandroid/security/net/config/NetworkSecurityConfig;->isCleartextTrafficPermitted()Z +HPLandroid/service/autofill/-$Lambda$svbjmB3NFhHnuZrn67G14PFSJlY;->$m$0(Landroid/os/Message;)V +HPLandroid/service/autofill/-$Lambda$svbjmB3NFhHnuZrn67G14PFSJlY;->(Ljava/lang/Object;)V +HPLandroid/service/autofill/-$Lambda$svbjmB3NFhHnuZrn67G14PFSJlY;->executeMessage(Landroid/os/Message;)V +HPLandroid/service/autofill/AutofillService$1;->(Landroid/service/autofill/AutofillService;)V +HPLandroid/service/autofill/AutofillService$1;->onConnectedStateChanged(Z)V +HPLandroid/service/autofill/AutofillService$1;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V +HPLandroid/service/autofill/AutofillService;->-get0(Landroid/service/autofill/AutofillService;)Lcom/android/internal/os/HandlerCaller; +HPLandroid/service/autofill/AutofillService;->()V +HPLandroid/service/autofill/AutofillService;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +HPLandroid/service/autofill/AutofillService;->lambda$-android_service_autofill_AutofillService_22062(Landroid/os/Message;)V +HPLandroid/service/autofill/AutofillService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/service/autofill/AutofillService;->onCreate()V +HPLandroid/service/autofill/AutofillService;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/os/CancellationSignal;Landroid/service/autofill/FillCallback;)V +HPLandroid/service/autofill/AutofillService;->onSaveRequest(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/SaveCallback;)V +HPLandroid/service/autofill/AutofillServiceInfo;->(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V +HPLandroid/service/autofill/AutofillServiceInfo;->(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)V +HPLandroid/service/autofill/AutofillServiceInfo;->getMetaDataArray(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)Landroid/content/res/TypedArray; +HPLandroid/service/autofill/AutofillServiceInfo;->getServiceInfo()Landroid/content/pm/ServiceInfo; +HPLandroid/service/autofill/AutofillServiceInfo;->getServiceInfoOrThrow(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; +HPLandroid/service/autofill/FillCallback;->(Landroid/service/autofill/IFillCallback;I)V +HPLandroid/service/autofill/FillCallback;->assertNotCalled()V +HPLandroid/service/autofill/FillCallback;->onSuccess(Landroid/service/autofill/FillResponse;)V +HPLandroid/service/autofill/FillContext$1;->()V +HPLandroid/service/autofill/FillContext$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/autofill/FillContext; +HPLandroid/service/autofill/FillContext$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/service/autofill/FillContext;->(ILandroid/app/assist/AssistStructure;)V +HPLandroid/service/autofill/FillContext;->(Landroid/os/Parcel;)V +HPLandroid/service/autofill/FillContext;->(Landroid/os/Parcel;Landroid/service/autofill/FillContext;)V +HPLandroid/service/autofill/FillContext;->findViewNodesByAutofillIds([Landroid/view/autofill/AutofillId;)[Landroid/app/assist/AssistStructure$ViewNode; +HPLandroid/service/autofill/FillContext;->getStructure()Landroid/app/assist/AssistStructure; +HPLandroid/service/autofill/FillContext;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/autofill/FillRequest$1;->()V +HPLandroid/service/autofill/FillRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/autofill/FillRequest; +HPLandroid/service/autofill/FillRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/service/autofill/FillRequest;->(ILjava/util/ArrayList;Landroid/os/Bundle;I)V +HPLandroid/service/autofill/FillRequest;->(Landroid/os/Parcel;)V +HPLandroid/service/autofill/FillRequest;->(Landroid/os/Parcel;Landroid/service/autofill/FillRequest;)V +HPLandroid/service/autofill/FillRequest;->getFillContexts()Ljava/util/List; +HPLandroid/service/autofill/FillRequest;->getFlags()I +HPLandroid/service/autofill/FillRequest;->getId()I +HPLandroid/service/autofill/FillRequest;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/autofill/IAutoFillService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/autofill/IAutoFillService$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/service/autofill/IAutoFillService$Stub$Proxy;->onConnectedStateChanged(Z)V +HPLandroid/service/autofill/IAutoFillService$Stub$Proxy;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V +HPLandroid/service/autofill/IAutoFillService$Stub;->()V +HPLandroid/service/autofill/IAutoFillService$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/autofill/IAutoFillService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IAutoFillService; +HPLandroid/service/autofill/IAutoFillService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/autofill/IAutoFillService;->onConnectedStateChanged(Z)V +HPLandroid/service/autofill/IAutoFillService;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V +HPLandroid/service/autofill/IAutoFillService;->onSaveRequest(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/ISaveCallback;)V +HPLandroid/service/autofill/IFillCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/autofill/IFillCallback$Stub$Proxy;->onCancellable(Landroid/os/ICancellationSignal;)V +HPLandroid/service/autofill/IFillCallback$Stub$Proxy;->onSuccess(Landroid/service/autofill/FillResponse;)V +HPLandroid/service/autofill/IFillCallback$Stub;->()V +HPLandroid/service/autofill/IFillCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/autofill/IFillCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IFillCallback; +HPLandroid/service/autofill/IFillCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/autofill/IFillCallback;->onCancellable(Landroid/os/ICancellationSignal;)V +HPLandroid/service/autofill/IFillCallback;->onFailure(Ljava/lang/CharSequence;)V +HPLandroid/service/autofill/IFillCallback;->onSuccess(Landroid/service/autofill/FillResponse;)V +HPLandroid/service/dreams/DreamManagerInternal;->()V +HPLandroid/service/dreams/DreamManagerInternal;->isDreaming()Z +HPLandroid/service/dreams/DreamManagerInternal;->startDream(Z)V +HPLandroid/service/dreams/DreamManagerInternal;->stopDream(Z)V +HPLandroid/service/dreams/IDreamManager$Stub$Proxy;->awaken()V +HPLandroid/service/dreams/IDreamManager$Stub$Proxy;->isDreaming()Z +HPLandroid/service/dreams/IDreamManager$Stub;->()V +HPLandroid/service/dreams/IDreamManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->clearSecureUserId(I)V +HPLandroid/service/gatekeeper/IGateKeeperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/gatekeeper/IGateKeeperService; +HPLandroid/service/gatekeeper/IGateKeeperService;->clearSecureUserId(I)V +HPLandroid/service/gatekeeper/IGateKeeperService;->enroll(I[B[B[B)Landroid/service/gatekeeper/GateKeeperResponse; +HPLandroid/service/gatekeeper/IGateKeeperService;->getSecureUserId(I)J +HPLandroid/service/gatekeeper/IGateKeeperService;->reportDeviceSetupComplete()V +HPLandroid/service/gatekeeper/IGateKeeperService;->verify(I[B[B)Landroid/service/gatekeeper/GateKeeperResponse; +HPLandroid/service/gatekeeper/IGateKeeperService;->verifyChallenge(IJ[B[B)Landroid/service/gatekeeper/GateKeeperResponse; +HPLandroid/service/notification/Condition;->equals(Ljava/lang/Object;)Z +HPLandroid/service/notification/Condition;->hashCode()I +HPLandroid/service/notification/Condition;->stateToString(I)Ljava/lang/String; +HPLandroid/service/notification/Condition;->toString()Ljava/lang/String; +HPLandroid/service/notification/Condition;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/notification/ConditionProviderService$Provider;->onSubscribe(Landroid/net/Uri;)V +HPLandroid/service/notification/ConditionProviderService;->getNotificationInterface()Landroid/app/INotificationManager; +HPLandroid/service/notification/ConditionProviderService;->notifyCondition(Landroid/service/notification/Condition;)V +HPLandroid/service/notification/ConditionProviderService;->notifyConditions([Landroid/service/notification/Condition;)V +HPLandroid/service/notification/IConditionProvider$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/notification/IConditionProvider$Stub$Proxy;->onConnected()V +HPLandroid/service/notification/IConditionProvider$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/notification/IConditionProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IConditionProvider; +HPLandroid/service/notification/INotificationListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/notification/INotificationListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V +HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationPosted(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;)V +HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;I)V +HPLandroid/service/notification/INotificationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/INotificationListener; +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->get()Landroid/service/notification/StatusBarNotification; +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->()V +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IStatusBarNotificationHolder; +HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/notification/IStatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification; +HPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationPosted(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;)V +HPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;I)V +HPLandroid/service/notification/NotificationListenerService$Ranking;->getChannel()Landroid/app/NotificationChannel; +HPLandroid/service/notification/NotificationListenerService$Ranking;->getImportance()I +HPLandroid/service/notification/NotificationListenerService$Ranking;->getOverrideGroupKey()Ljava/lang/String; +HPLandroid/service/notification/NotificationListenerService$Ranking;->getRank()I +HPLandroid/service/notification/NotificationListenerService$Ranking;->getSnoozeCriteria()Ljava/util/List; +HPLandroid/service/notification/NotificationListenerService$Ranking;->getSuppressedVisualEffects()I +HPLandroid/service/notification/NotificationListenerService$Ranking;->getVisibilityOverride()I +HPLandroid/service/notification/NotificationListenerService$Ranking;->isAmbient()Z +HPLandroid/service/notification/NotificationListenerService;->-get4(Landroid/service/notification/NotificationListenerService;)Landroid/service/notification/NotificationListenerService$RankingMap; +HPLandroid/service/notification/NotificationListenerService;->-wrap0(Landroid/service/notification/NotificationListenerService;Landroid/app/Notification;)V +HPLandroid/service/notification/NotificationListenerService;->-wrap1(Landroid/service/notification/NotificationListenerService;Landroid/app/Notification;)V +HPLandroid/service/notification/NotificationListenerService;->getActiveNotifications([Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification; +HPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V +HPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V +HPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V +HPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V +HPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V +HPLandroid/service/notification/NotificationListenerService;->setNotificationsShown([Ljava/lang/String;)V +HPLandroid/service/notification/NotificationRankingUpdate;->([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;)V +HPLandroid/service/notification/NotificationRankingUpdate;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/notification/StatusBarNotification;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IILandroid/app/Notification;Landroid/os/UserHandle;Ljava/lang/String;J)V +HPLandroid/service/notification/StatusBarNotification;->clone()Landroid/service/notification/StatusBarNotification; +HPLandroid/service/notification/StatusBarNotification;->cloneLight()Landroid/service/notification/StatusBarNotification; +HPLandroid/service/notification/StatusBarNotification;->getGroup()Ljava/lang/String; +HPLandroid/service/notification/StatusBarNotification;->getGroupKey()Ljava/lang/String; +HPLandroid/service/notification/StatusBarNotification;->getId()I +HPLandroid/service/notification/StatusBarNotification;->getInitialPid()I +HPLandroid/service/notification/StatusBarNotification;->getOverrideGroupKey()Ljava/lang/String; +HPLandroid/service/notification/StatusBarNotification;->getPackageContext(Landroid/content/Context;)Landroid/content/Context; +HPLandroid/service/notification/StatusBarNotification;->getPackageName()Ljava/lang/String; +HPLandroid/service/notification/StatusBarNotification;->getPostTime()J +HPLandroid/service/notification/StatusBarNotification;->getTag()Ljava/lang/String; +HPLandroid/service/notification/StatusBarNotification;->getUid()I +HPLandroid/service/notification/StatusBarNotification;->getUser()Landroid/os/UserHandle; +HPLandroid/service/notification/StatusBarNotification;->getUserId()I +HPLandroid/service/notification/StatusBarNotification;->isAppGroup()Z +HPLandroid/service/notification/StatusBarNotification;->isClearable()Z +HPLandroid/service/notification/StatusBarNotification;->isGroup()Z +HPLandroid/service/notification/StatusBarNotification;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/notification/ZenModeConfig$Diff;->()V +HPLandroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff; +HPLandroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/String;)Landroid/service/notification/ZenModeConfig$Diff; +HPLandroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff; +HPLandroid/service/notification/ZenModeConfig$Diff;->toString()Ljava/lang/String; +HPLandroid/service/notification/ZenModeConfig$EventInfo;->()V +HPLandroid/service/notification/ZenModeConfig$ScheduleInfo;->()V +HPLandroid/service/notification/ZenModeConfig$ZenRule;->-wrap0(Landroid/service/notification/ZenModeConfig$Diff;Ljava/lang/String;Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/service/notification/ZenModeConfig$ZenRule;)V +HPLandroid/service/notification/ZenModeConfig$ZenRule;->()V +HPLandroid/service/notification/ZenModeConfig$ZenRule;->appendDiff(Landroid/service/notification/ZenModeConfig$Diff;Ljava/lang/String;Landroid/service/notification/ZenModeConfig$ZenRule;)V +HPLandroid/service/notification/ZenModeConfig$ZenRule;->appendDiff(Landroid/service/notification/ZenModeConfig$Diff;Ljava/lang/String;Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/service/notification/ZenModeConfig$ZenRule;)V +HPLandroid/service/notification/ZenModeConfig$ZenRule;->equals(Ljava/lang/Object;)Z +HPLandroid/service/notification/ZenModeConfig$ZenRule;->hashCode()I +HPLandroid/service/notification/ZenModeConfig$ZenRule;->toString()Ljava/lang/String; +HPLandroid/service/notification/ZenModeConfig$ZenRule;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/notification/ZenModeConfig;->()V +HPLandroid/service/notification/ZenModeConfig;->addKeys(Landroid/util/ArraySet;Landroid/util/ArrayMap;)V +HPLandroid/service/notification/ZenModeConfig;->copy()Landroid/service/notification/ZenModeConfig; +HPLandroid/service/notification/ZenModeConfig;->diff(Landroid/service/notification/ZenModeConfig;)Landroid/service/notification/ZenModeConfig$Diff; +HPLandroid/service/notification/ZenModeConfig;->diff(Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)Landroid/service/notification/ZenModeConfig$Diff; +HPLandroid/service/notification/ZenModeConfig;->equals(Ljava/lang/Object;)Z +HPLandroid/service/notification/ZenModeConfig;->hashCode()I +HPLandroid/service/notification/ZenModeConfig;->isValid()Z +HPLandroid/service/notification/ZenModeConfig;->isValidAutomaticRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z +HPLandroid/service/notification/ZenModeConfig;->isValidCountdownConditionId(Landroid/net/Uri;)Z +HPLandroid/service/notification/ZenModeConfig;->isValidEventConditionId(Landroid/net/Uri;)Z +HPLandroid/service/notification/ZenModeConfig;->isValidHour(I)Z +HPLandroid/service/notification/ZenModeConfig;->isValidManualRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z +HPLandroid/service/notification/ZenModeConfig;->isValidMinute(I)Z +HPLandroid/service/notification/ZenModeConfig;->isValidScheduleConditionId(Landroid/net/Uri;)Z +HPLandroid/service/notification/ZenModeConfig;->isValidSource(I)Z +HPLandroid/service/notification/ZenModeConfig;->readConditionXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/Condition; +HPLandroid/service/notification/ZenModeConfig;->readRuleXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/ZenModeConfig$ZenRule; +HPLandroid/service/notification/ZenModeConfig;->readXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/ZenModeConfig; +HPLandroid/service/notification/ZenModeConfig;->safeBoolean(Ljava/lang/String;Z)Z +HPLandroid/service/notification/ZenModeConfig;->safeBoolean(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z +HPLandroid/service/notification/ZenModeConfig;->safeComponentName(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName; +HPLandroid/service/notification/ZenModeConfig;->safeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +HPLandroid/service/notification/ZenModeConfig;->safeLong(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +HPLandroid/service/notification/ZenModeConfig;->safeUri(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/net/Uri; +HPLandroid/service/notification/ZenModeConfig;->sameCondition(Landroid/service/notification/ZenModeConfig$ZenRule;)Z +HPLandroid/service/notification/ZenModeConfig;->sourceToPrioritySenders(II)I +HPLandroid/service/notification/ZenModeConfig;->sourceToString(I)Ljava/lang/String; +HPLandroid/service/notification/ZenModeConfig;->toDayList([I)Ljava/lang/String; +HPLandroid/service/notification/ZenModeConfig;->toEventConditionId(Landroid/service/notification/ZenModeConfig$EventInfo;)Landroid/net/Uri; +HPLandroid/service/notification/ZenModeConfig;->toNotificationPolicy()Landroid/app/NotificationManager$Policy; +HPLandroid/service/notification/ZenModeConfig;->toScheduleConditionId(Landroid/service/notification/ZenModeConfig$ScheduleInfo;)Landroid/net/Uri; +HPLandroid/service/notification/ZenModeConfig;->toString()Ljava/lang/String; +HPLandroid/service/notification/ZenModeConfig;->tryParseDayList(Ljava/lang/String;Ljava/lang/String;)[I +HPLandroid/service/notification/ZenModeConfig;->tryParseEventConditionId(Landroid/net/Uri;)Landroid/service/notification/ZenModeConfig$EventInfo; +HPLandroid/service/notification/ZenModeConfig;->tryParseHourAndMinute(Ljava/lang/String;)[I +HPLandroid/service/notification/ZenModeConfig;->tryParseInt(Ljava/lang/String;I)I +HPLandroid/service/notification/ZenModeConfig;->tryParseLong(Ljava/lang/String;J)J +HPLandroid/service/notification/ZenModeConfig;->tryParseScheduleConditionId(Landroid/net/Uri;)Landroid/service/notification/ZenModeConfig$ScheduleInfo; +HPLandroid/service/notification/ZenModeConfig;->tryParseZenMode(Ljava/lang/String;I)I +HPLandroid/service/notification/ZenModeConfig;->writeConditionXml(Landroid/service/notification/Condition;Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/service/notification/ZenModeConfig;->writeRuleXml(Landroid/service/notification/ZenModeConfig$ZenRule;Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/service/notification/ZenModeConfig;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/service/notification/ZenModeConfig;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLandroid/service/oemlock/IOemLockService$Stub;->()V +HPLandroid/service/oemlock/IOemLockService;->canUserAllowOemUnlock()Z +HPLandroid/service/oemlock/IOemLockService;->isDeviceOemUnlocked()Z +HPLandroid/service/oemlock/IOemLockService;->isOemUnlockAllowed()Z +HPLandroid/service/oemlock/IOemLockService;->isOemUnlockAllowedByCarrier()Z +HPLandroid/service/oemlock/IOemLockService;->isOemUnlockAllowedByUser()Z +HPLandroid/service/oemlock/IOemLockService;->setOemUnlockAllowedByCarrier(Z[B)V +HPLandroid/service/oemlock/IOemLockService;->setOemUnlockAllowedByUser(Z)V +HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->()V +HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService; +HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/persistentdata/IPersistentDataBlockService;->getDataBlockSize()I +HPLandroid/service/persistentdata/IPersistentDataBlockService;->getFlashLockState()I +HPLandroid/service/persistentdata/IPersistentDataBlockService;->getMaximumDataBlockSize()J +HPLandroid/service/persistentdata/IPersistentDataBlockService;->getOemUnlockEnabled()Z +HPLandroid/service/persistentdata/IPersistentDataBlockService;->hasFrpCredentialHandle()Z +HPLandroid/service/persistentdata/IPersistentDataBlockService;->read()[B +HPLandroid/service/persistentdata/IPersistentDataBlockService;->setOemUnlockEnabled(Z)V +HPLandroid/service/persistentdata/IPersistentDataBlockService;->wipe()V +HPLandroid/service/persistentdata/IPersistentDataBlockService;->write([B)I +HPLandroid/service/persistentdata/PersistentDataBlockManager;->(Landroid/service/persistentdata/IPersistentDataBlockService;)V +HPLandroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Landroid/service/textservice/SpellCheckerService$Session;)V +HPLandroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->getLocale()Ljava/lang/String; +HPLandroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onCancel()V +HPLandroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onClose()V +HPLandroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)V +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;->(Landroid/view/textservice/TextInfo;Ljava/util/ArrayList;)V +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceWordItem;->(Landroid/view/textservice/TextInfo;II)V +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->-wrap0(Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;Landroid/view/textservice/TextInfo;)Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams; +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->(Ljava/util/Locale;)V +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->getSplitWords(Landroid/view/textservice/TextInfo;)Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams; +HPLandroid/service/textservice/SpellCheckerService$SentenceLevelAdapter;->reconstructSuggestions(Landroid/service/textservice/SpellCheckerService$SentenceLevelAdapter$SentenceTextInfoParams;[Landroid/view/textservice/SuggestionsInfo;)Landroid/view/textservice/SentenceSuggestionsInfo; +HPLandroid/service/textservice/SpellCheckerService$Session;->()V +HPLandroid/service/textservice/SpellCheckerService$Session;->getLocale()Ljava/lang/String; +HPLandroid/service/textservice/SpellCheckerService$Session;->onCancel()V +HPLandroid/service/textservice/SpellCheckerService$Session;->onClose()V +HPLandroid/service/textservice/SpellCheckerService$Session;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)[Landroid/view/textservice/SentenceSuggestionsInfo; +HPLandroid/service/textservice/SpellCheckerService$Session;->onGetSuggestions(Landroid/view/textservice/TextInfo;I)Landroid/view/textservice/SuggestionsInfo; +HPLandroid/service/textservice/SpellCheckerService$Session;->onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)[Landroid/view/textservice/SuggestionsInfo; +HPLandroid/service/textservice/SpellCheckerService$Session;->setInternalISpellCheckerSession(Landroid/service/textservice/SpellCheckerService$InternalISpellCheckerSession;)V +HPLandroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;->(Landroid/service/textservice/SpellCheckerService;)V +HPLandroid/service/textservice/SpellCheckerService$SpellCheckerServiceBinder;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V +HPLandroid/service/textservice/SpellCheckerService;->()V +HPLandroid/service/textservice/SpellCheckerService;->createSession()Landroid/service/textservice/SpellCheckerService$Session; +HPLandroid/service/textservice/SpellCheckerService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->ready()V +HPLandroid/service/voice/IVoiceInteractionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionService; +HPLandroid/service/voice/VoiceInteractionManagerInternal;->()V +HPLandroid/service/voice/VoiceInteractionManagerInternal;->startLocalVoiceInteraction(Landroid/os/IBinder;Landroid/os/Bundle;)V +HPLandroid/service/voice/VoiceInteractionManagerInternal;->stopLocalVoiceInteraction(Landroid/os/IBinder;)V +HPLandroid/service/voice/VoiceInteractionManagerInternal;->supportsLocalVoiceInteraction()Z +HPLandroid/service/voice/VoiceInteractionServiceInfo;->(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V +HPLandroid/service/voice/VoiceInteractionServiceInfo;->(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)V +HPLandroid/service/voice/VoiceInteractionServiceInfo;->getParseError()Ljava/lang/String; +HPLandroid/service/voice/VoiceInteractionServiceInfo;->getServiceInfoOrThrow(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; +HPLandroid/service/voice/VoiceInteractionServiceInfo;->getSessionService()Ljava/lang/String; +HPLandroid/service/voice/VoiceInteractionServiceInfo;->getSupportsAssist()Z +HPLandroid/service/voice/VoiceInteractionServiceInfo;->getSupportsLaunchFromKeyguard()Z +HPLandroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/service/vr/IPersistentVrStateCallbacks$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/vr/IPersistentVrStateCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IPersistentVrStateCallbacks; +HPLandroid/service/vr/IVrManager$Stub$Proxy;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V +HPLandroid/service/vr/IVrManager$Stub;->()V +HPLandroid/service/vr/IVrManager$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/vr/IVrManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/vr/IVrStateCallbacks$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/vr/IVrStateCallbacks$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/service/vr/IVrStateCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrStateCallbacks; +HPLandroid/service/wallpaper/-$Lambda$htiXs5zQinBXs3seMVLgh3fgmis;->$m$0()Ljava/lang/Object; +HPLandroid/service/wallpaper/-$Lambda$htiXs5zQinBXs3seMVLgh3fgmis;->get()Ljava/lang/Object; +HPLandroid/service/wallpaper/IWallpaperConnection$Stub;->()V +HPLandroid/service/wallpaper/IWallpaperConnection$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/service/wallpaper/IWallpaperConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->requestWallpaperColors()V +HPLandroid/service/wallpaper/IWallpaperEngine$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperEngine; +HPLandroid/service/wallpaper/IWallpaperService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/service/wallpaper/IWallpaperService$Stub$Proxy;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V +HPLandroid/service/wallpaper/IWallpaperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperService; +HPLandroid/service/wallpaper/WallpaperService$Engine$2;->dispatchAppVisibility(Z)V +HPLandroid/service/wallpaper/WallpaperService$Engine$2;->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;ZZI)V +HPLandroid/service/wallpaper/WallpaperService$Engine$3;->onDisplayChanged(I)V +HPLandroid/service/wallpaper/WallpaperService$Engine$WallpaperInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V +HPLandroid/service/wallpaper/WallpaperService$Engine;->-android_service_wallpaper_WallpaperService$Engine-mthref-1()Ljava/lang/Long; +HPLandroid/service/wallpaper/WallpaperService$Engine;->-wrap0(Landroid/service/wallpaper/WallpaperService$Engine;Landroid/view/MotionEvent;)V +HPLandroid/service/wallpaper/WallpaperService$Engine;->dispatchPointer(Landroid/view/MotionEvent;)V +HPLandroid/service/wallpaper/WallpaperService$Engine;->doVisibilityChanged(Z)V +HPLandroid/service/wallpaper/WallpaperService$Engine;->notifyColorsChanged()V +HPLandroid/service/wallpaper/WallpaperService$Engine;->reportVisibility()V +HPLandroid/speech/tts/AudioPlaybackHandler;->quit()V +HPLandroid/speech/tts/AudioPlaybackHandler;->removeAllMessages()V +HPLandroid/speech/tts/AudioPlaybackHandler;->stop(Landroid/speech/tts/PlaybackQueueItem;)V +HPLandroid/speech/tts/TextToSpeechService$1;->isLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/speech/tts/TextToSpeechService$CallbackMap;->kill()V +HPLandroid/speech/tts/TextToSpeechService$CallbackMap;->onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V +HPLandroid/speech/tts/TextToSpeechService$CallbackMap;->onCallbackDied(Landroid/speech/tts/ITextToSpeechCallback;Ljava/lang/Object;)V +HPLandroid/speech/tts/TextToSpeechService$SynthHandler;->quit()V +HPLandroid/speech/tts/TextToSpeechService$SynthHandler;->setCurrentSpeechItem(Landroid/speech/tts/TextToSpeechService$SpeechItem;)Landroid/speech/tts/TextToSpeechService$SpeechItem; +HPLandroid/speech/tts/TextToSpeechService;->onDestroy()V +HPLandroid/system/ErrnoException;->getMessage()Ljava/lang/String; +HPLandroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException; +HPLandroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException; +HPLandroid/system/NetlinkSocketAddress;->(II)V +HPLandroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)Ljava/io/FileDescriptor; +HPLandroid/system/Os;->access(Ljava/lang/String;I)Z +HPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V +HPLandroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HPLandroid/system/Os;->fchmod(Ljava/io/FileDescriptor;I)V +HPLandroid/system/Os;->fchown(Ljava/io/FileDescriptor;II)V +HPLandroid/system/Os;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; +HPLandroid/system/Os;->fsync(Ljava/io/FileDescriptor;)V +HPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; +HPLandroid/system/Os;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B +HPLandroid/system/Os;->mlock(JJ)V +HPLandroid/system/Os;->mmap(JJIILjava/io/FileDescriptor;J)J +HPLandroid/system/Os;->munlock(JJ)V +HPLandroid/system/Os;->munmap(JJ)V +HPLandroid/system/Os;->pipe()[Ljava/io/FileDescriptor; +HPLandroid/system/Os;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V +HPLandroid/system/Os;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLandroid/system/Os;->read(Ljava/io/FileDescriptor;[BII)I +HPLandroid/system/Os;->readlink(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/system/Os;->rename(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/system/Os;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HPLandroid/system/Os;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V +HPLandroid/system/Os;->setsockoptInt(Ljava/io/FileDescriptor;III)V +HPLandroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V +HPLandroid/system/Os;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V +HPLandroid/system/Os;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLandroid/system/OsConstants;->S_ISREG(I)Z +HPLandroid/system/OsConstants;->errnoName(I)Ljava/lang/String; +HPLandroid/system/PacketSocketAddress;->(I[B)V +HPLandroid/system/PacketSocketAddress;->(SI)V +HPLandroid/system/PacketSocketAddress;->(SISB[B)V +HPLandroid/system/StructGroupReq;->(ILjava/net/InetAddress;)V +HPLandroid/system/StructTimeval;->(JJ)V +HPLandroid/system/StructTimeval;->fromMillis(J)Landroid/system/StructTimeval; +HPLandroid/system/UnixSocketAddress;->([B)V +HPLandroid/system/UnixSocketAddress;->createFileSystem(Ljava/lang/String;)Landroid/system/UnixSocketAddress; +HPLandroid/telecom/-$Lambda$afyb_ODGzn3xMew6fjs8ANSIdVo;->$m$0()Ljava/lang/String; +HPLandroid/telecom/-$Lambda$afyb_ODGzn3xMew6fjs8ANSIdVo;->()V +HPLandroid/telecom/-$Lambda$afyb_ODGzn3xMew6fjs8ANSIdVo;->getSessionId()Ljava/lang/String; +HPLandroid/telecom/AudioState$1;->()V +HPLandroid/telecom/AudioState;->(Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/Call$1;->(Landroid/telecom/Call;Landroid/telecom/Call$Callback;Landroid/telecom/Call;I)V +HPLandroid/telecom/Call$1;->run()V +HPLandroid/telecom/Call$4;->(Landroid/telecom/Call;Landroid/telecom/Call$Callback;Landroid/telecom/Call;Landroid/telecom/Call$Details;)V +HPLandroid/telecom/Call$4;->run()V +HPLandroid/telecom/Call$8;->(Landroid/telecom/Call;Landroid/telecom/Call$Callback;Landroid/telecom/Call;Landroid/telecom/CallbackRecord;)V +HPLandroid/telecom/Call$8;->run()V +HPLandroid/telecom/Call$Callback;->()V +HPLandroid/telecom/Call$Callback;->onCallDestroyed(Landroid/telecom/Call;)V +HPLandroid/telecom/Call$Callback;->onStateChanged(Landroid/telecom/Call;I)V +HPLandroid/telecom/Call$Details;->(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 +HPLandroid/telecom/Call$Details;->can(I)Z +HPLandroid/telecom/Call$Details;->can(II)Z +HPLandroid/telecom/Call$Details;->capabilitiesToString(I)Ljava/lang/String; +HPLandroid/telecom/Call$Details;->createFromParcelableCall(Landroid/telecom/ParcelableCall;)Landroid/telecom/Call$Details; +HPLandroid/telecom/Call$Details;->equals(Ljava/lang/Object;)Z +HPLandroid/telecom/Call$Details;->getAccountHandle()Landroid/telecom/PhoneAccountHandle; +HPLandroid/telecom/Call$Details;->getCallCapabilities()I +HPLandroid/telecom/Call$Details;->getCallProperties()I +HPLandroid/telecom/Call$Details;->getCallerDisplayName()Ljava/lang/String; +HPLandroid/telecom/Call$Details;->getCallerDisplayNamePresentation()I +HPLandroid/telecom/Call$Details;->getConnectTimeMillis()J +HPLandroid/telecom/Call$Details;->getDisconnectCause()Landroid/telecom/DisconnectCause; +HPLandroid/telecom/Call$Details;->getExtras()Landroid/os/Bundle; +HPLandroid/telecom/Call$Details;->getGatewayInfo()Landroid/telecom/GatewayInfo; +HPLandroid/telecom/Call$Details;->getHandle()Landroid/net/Uri; +HPLandroid/telecom/Call$Details;->getHandlePresentation()I +HPLandroid/telecom/Call$Details;->getIntentExtras()Landroid/os/Bundle; +HPLandroid/telecom/Call$Details;->getStatusHints()Landroid/telecom/StatusHints; +HPLandroid/telecom/Call$Details;->getVideoState()I +HPLandroid/telecom/Call$Details;->hasProperty(I)Z +HPLandroid/telecom/Call$Details;->hasProperty(II)Z +HPLandroid/telecom/Call$Details;->propertiesToString(I)Ljava/lang/String; +HPLandroid/telecom/Call$Details;->toString()Ljava/lang/String; +HPLandroid/telecom/Call;->-get0(Landroid/telecom/Call;)Ljava/util/List; +HPLandroid/telecom/Call;->-get1(Landroid/telecom/Call;)Landroid/telecom/Phone; +HPLandroid/telecom/Call;->(Landroid/telecom/Phone;Ljava/lang/String;Landroid/telecom/InCallAdapter;ILjava/lang/String;I)V +HPLandroid/telecom/Call;->fireCallDestroyed()V +HPLandroid/telecom/Call;->fireDetailsChanged(Landroid/telecom/Call$Details;)V +HPLandroid/telecom/Call;->fireStateChanged(I)V +HPLandroid/telecom/Call;->getChildren()Ljava/util/List; +HPLandroid/telecom/Call;->getConferenceableCalls()Ljava/util/List; +HPLandroid/telecom/Call;->getDetails()Landroid/telecom/Call$Details; +HPLandroid/telecom/Call;->getParent()Landroid/telecom/Call; +HPLandroid/telecom/Call;->getState()I +HPLandroid/telecom/Call;->getVideoCall()Landroid/telecom/InCallService$VideoCall; +HPLandroid/telecom/Call;->internalGetCallId()Ljava/lang/String; +HPLandroid/telecom/Call;->internalUpdate(Landroid/telecom/ParcelableCall;Ljava/util/Map;)V +HPLandroid/telecom/Call;->registerCallback(Landroid/telecom/Call$Callback;)V +HPLandroid/telecom/Call;->registerCallback(Landroid/telecom/Call$Callback;Landroid/os/Handler;)V +HPLandroid/telecom/Call;->stateToString(I)Ljava/lang/String; +HPLandroid/telecom/Call;->toString()Ljava/lang/String; +HPLandroid/telecom/Call;->unregisterCallback(Landroid/telecom/Call$Callback;)V +HPLandroid/telecom/CallAudioState$1;->()V +HPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/CallAudioState; +HPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/CallAudioState;->(ZII)V +HPLandroid/telecom/CallAudioState;->audioRouteToString(I)Ljava/lang/String; +HPLandroid/telecom/CallAudioState;->equals(Ljava/lang/Object;)Z +HPLandroid/telecom/CallAudioState;->getRoute()I +HPLandroid/telecom/CallAudioState;->getSupportedRouteMask()I +HPLandroid/telecom/CallAudioState;->isMuted()Z +HPLandroid/telecom/CallAudioState;->listAppend(Ljava/lang/StringBuffer;Ljava/lang/String;)V +HPLandroid/telecom/CallAudioState;->toString()Ljava/lang/String; +HPLandroid/telecom/CallAudioState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/CallbackRecord;->(Ljava/lang/Object;Landroid/os/Handler;)V +HPLandroid/telecom/CallbackRecord;->getCallback()Ljava/lang/Object; +HPLandroid/telecom/CallbackRecord;->getHandler()Landroid/os/Handler; +HPLandroid/telecom/Conference$Listener;->()V +HPLandroid/telecom/Conferenceable;->()V +HPLandroid/telecom/Connection$1;->(Landroid/telecom/Connection;)V +HPLandroid/telecom/Connection$2;->(Landroid/telecom/Connection;)V +HPLandroid/telecom/Connection$FailureSignalingConnection;->(Landroid/telecom/DisconnectCause;)V +HPLandroid/telecom/Connection$FailureSignalingConnection;->checkImmutable()V +HPLandroid/telecom/Connection$Listener;->()V +HPLandroid/telecom/Connection;->()V +HPLandroid/telecom/Connection;->can(II)Z +HPLandroid/telecom/Connection;->capabilitiesToString(I)Ljava/lang/String; +HPLandroid/telecom/Connection;->capabilitiesToStringInternal(IZ)Ljava/lang/String; +HPLandroid/telecom/Connection;->createFailedConnection(Landroid/telecom/DisconnectCause;)Landroid/telecom/Connection; +HPLandroid/telecom/Connection;->getAddress()Landroid/net/Uri; +HPLandroid/telecom/Connection;->getAddressPresentation()I +HPLandroid/telecom/Connection;->getAudioModeIsVoip()Z +HPLandroid/telecom/Connection;->getCallerDisplayName()Ljava/lang/String; +HPLandroid/telecom/Connection;->getCallerDisplayNamePresentation()I +HPLandroid/telecom/Connection;->getConferenceables()Ljava/util/List; +HPLandroid/telecom/Connection;->getConnectElapsedTimeMillis()J +HPLandroid/telecom/Connection;->getConnectTimeMillis()J +HPLandroid/telecom/Connection;->getConnectionCapabilities()I +HPLandroid/telecom/Connection;->getConnectionProperties()I +HPLandroid/telecom/Connection;->getDisconnectCause()Landroid/telecom/DisconnectCause; +HPLandroid/telecom/Connection;->getExtras()Landroid/os/Bundle; +HPLandroid/telecom/Connection;->getState()I +HPLandroid/telecom/Connection;->getStatusHints()Landroid/telecom/StatusHints; +HPLandroid/telecom/Connection;->getSupportedAudioRoutes()I +HPLandroid/telecom/Connection;->getVideoProvider()Landroid/telecom/Connection$VideoProvider; +HPLandroid/telecom/Connection;->getVideoState()I +HPLandroid/telecom/Connection;->isRingbackRequested()Z +HPLandroid/telecom/Connection;->onStateChanged(I)V +HPLandroid/telecom/Connection;->propertiesToString(I)Ljava/lang/String; +HPLandroid/telecom/Connection;->propertiesToStringInternal(IZ)Ljava/lang/String; +HPLandroid/telecom/Connection;->setDisconnected(Landroid/telecom/DisconnectCause;)V +HPLandroid/telecom/Connection;->setState(I)V +HPLandroid/telecom/Connection;->setTelecomCallId(Ljava/lang/String;)V +HPLandroid/telecom/Connection;->stateToString(I)Ljava/lang/String; +HPLandroid/telecom/Connection;->toLogSafePhoneNumber(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telecom/ConnectionRequest$1;->()V +HPLandroid/telecom/ConnectionRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/ConnectionRequest; +HPLandroid/telecom/ConnectionRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/ConnectionRequest$Builder;->()V +HPLandroid/telecom/ConnectionRequest$Builder;->build()Landroid/telecom/ConnectionRequest; +HPLandroid/telecom/ConnectionRequest$Builder;->setAccountHandle(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setAddress(Landroid/net/Uri;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setExtras(Landroid/os/Bundle;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setRttPipeFromInCall(Landroid/os/ParcelFileDescriptor;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setRttPipeToInCall(Landroid/os/ParcelFileDescriptor;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setShouldShowIncomingCallUi(Z)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setTelecomCallId(Ljava/lang/String;)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest$Builder;->setVideoState(I)Landroid/telecom/ConnectionRequest$Builder; +HPLandroid/telecom/ConnectionRequest;->(Landroid/os/Parcel;)V +HPLandroid/telecom/ConnectionRequest;->(Landroid/os/Parcel;Landroid/telecom/ConnectionRequest;)V +HPLandroid/telecom/ConnectionRequest;->(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/os/Bundle;ILjava/lang/String;ZLandroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;)V +HPLandroid/telecom/ConnectionRequest;->(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/os/Bundle;ILjava/lang/String;ZLandroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/telecom/ConnectionRequest;)V +HPLandroid/telecom/ConnectionRequest;->getAccountHandle()Landroid/telecom/PhoneAccountHandle; +HPLandroid/telecom/ConnectionRequest;->getAddress()Landroid/net/Uri; +HPLandroid/telecom/ConnectionRequest;->toString()Ljava/lang/String; +HPLandroid/telecom/ConnectionRequest;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/ConnectionService$1;->(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService$1;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLandroid/telecom/ConnectionService$1;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZLandroid/telecom/Logging/Session$Info;)V +HPLandroid/telecom/ConnectionService$1;->removeConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLandroid/telecom/ConnectionService$2$1;->(Landroid/telecom/ConnectionService$2;Ljava/lang/String;Ljava/lang/Object;Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZ)V +HPLandroid/telecom/ConnectionService$2$1;->loggedRun()V +HPLandroid/telecom/ConnectionService$2;->(Landroid/telecom/ConnectionService;Landroid/os/Looper;)V +HPLandroid/telecom/ConnectionService$2;->handleMessage(Landroid/os/Message;)V +HPLandroid/telecom/ConnectionService$3;->(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService$4;->(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService$5$1;->(Landroid/telecom/ConnectionService$5;Ljava/lang/String;Ljava/lang/Object;Ljava/util/List;Ljava/util/List;)V +HPLandroid/telecom/ConnectionService$5$1;->loggedRun()V +HPLandroid/telecom/ConnectionService$5;->(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService$5;->onResult(Ljava/util/List;Ljava/util/List;)V +HPLandroid/telecom/ConnectionService;->-get0(Landroid/telecom/ConnectionService;)Landroid/telecom/ConnectionServiceAdapter; +HPLandroid/telecom/ConnectionService;->-get1(Landroid/telecom/ConnectionService;)Z +HPLandroid/telecom/ConnectionService;->-get2(Landroid/telecom/ConnectionService;)Landroid/os/Handler; +HPLandroid/telecom/ConnectionService;->-get5(Landroid/telecom/ConnectionService;)Ljava/util/List; +HPLandroid/telecom/ConnectionService;->-wrap14(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService;->-wrap15(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/ConnectionService;->-wrap7(Landroid/telecom/ConnectionService;Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZ)V +HPLandroid/telecom/ConnectionService;->()V +HPLandroid/telecom/ConnectionService;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZ)V +HPLandroid/telecom/ConnectionService;->createIdList(Ljava/util/List;)Ljava/util/List; +HPLandroid/telecom/ConnectionService;->endAllConnections()V +HPLandroid/telecom/ConnectionService;->getAllConnections()Ljava/util/Collection; +HPLandroid/telecom/ConnectionService;->onAccountsInitialized()V +HPLandroid/telecom/ConnectionService;->onAdapterAttached()V +HPLandroid/telecom/ConnectionService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/telecom/ConnectionService;->onUnbind(Landroid/content/Intent;)Z +HPLandroid/telecom/ConnectionServiceAdapter;->()V +HPLandroid/telecom/ConnectionServiceAdapter;->addAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;)V +HPLandroid/telecom/ConnectionServiceAdapter;->handleCreateConnectionComplete(Ljava/lang/String;Landroid/telecom/ConnectionRequest;Landroid/telecom/ParcelableConnection;)V +HPLandroid/telecom/ConnectionServiceAdapter;->queryRemoteConnectionServices(Lcom/android/internal/telecom/RemoteServiceCallback;)V +HPLandroid/telecom/ConnectionServiceAdapter;->removeAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;)V +HPLandroid/telecom/DefaultDialerManager;->filterByIntent(Landroid/content/Context;Ljava/util/List;Landroid/content/Intent;)Ljava/util/List; +HPLandroid/telecom/DefaultDialerManager;->getDefaultDialerApplication(Landroid/content/Context;I)Ljava/lang/String; +HPLandroid/telecom/DefaultDialerManager;->getInstalledDialerApplications(Landroid/content/Context;I)Ljava/util/List; +HPLandroid/telecom/DefaultDialerManager;->getTelecomManager(Landroid/content/Context;)Landroid/telecom/TelecomManager; +HPLandroid/telecom/DisconnectCause$1;->()V +HPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/DisconnectCause; +HPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/DisconnectCause;->(I)V +HPLandroid/telecom/DisconnectCause;->(ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/String;I)V +HPLandroid/telecom/DisconnectCause;->equals(Ljava/lang/Object;)Z +HPLandroid/telecom/DisconnectCause;->getCode()I +HPLandroid/telecom/DisconnectCause;->getDescription()Ljava/lang/CharSequence; +HPLandroid/telecom/DisconnectCause;->getLabel()Ljava/lang/CharSequence; +HPLandroid/telecom/DisconnectCause;->getReason()Ljava/lang/String; +HPLandroid/telecom/DisconnectCause;->toString()Ljava/lang/String; +HPLandroid/telecom/DisconnectCause;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/InCallAdapter;->(Lcom/android/internal/telecom/IInCallAdapter;)V +HPLandroid/telecom/InCallService$1;->(Landroid/telecom/InCallService;Landroid/os/Looper;)V +HPLandroid/telecom/InCallService$1;->handleMessage(Landroid/os/Message;)V +HPLandroid/telecom/InCallService$2;->(Landroid/telecom/InCallService;)V +HPLandroid/telecom/InCallService$2;->onAudioStateChanged(Landroid/telecom/Phone;Landroid/telecom/AudioState;)V +HPLandroid/telecom/InCallService$2;->onCallAdded(Landroid/telecom/Phone;Landroid/telecom/Call;)V +HPLandroid/telecom/InCallService$2;->onCallAudioStateChanged(Landroid/telecom/Phone;Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/InCallService$2;->onCallRemoved(Landroid/telecom/Phone;Landroid/telecom/Call;)V +HPLandroid/telecom/InCallService$2;->onCanAddCallChanged(Landroid/telecom/Phone;Z)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->(Landroid/telecom/InCallService;)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->(Landroid/telecom/InCallService;Landroid/telecom/InCallService$InCallServiceBinder;)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->addCall(Landroid/telecom/ParcelableCall;)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->onCanAddCallChanged(Z)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->setInCallAdapter(Lcom/android/internal/telecom/IInCallAdapter;)V +HPLandroid/telecom/InCallService$InCallServiceBinder;->updateCall(Landroid/telecom/ParcelableCall;)V +HPLandroid/telecom/InCallService;->-get0(Landroid/telecom/InCallService;)Landroid/os/Handler; +HPLandroid/telecom/InCallService;->-get1(Landroid/telecom/InCallService;)Landroid/telecom/Phone; +HPLandroid/telecom/InCallService;->-get2(Landroid/telecom/InCallService;)Landroid/telecom/Phone$Listener; +HPLandroid/telecom/InCallService;->-set0(Landroid/telecom/InCallService;Landroid/telecom/Phone;)Landroid/telecom/Phone; +HPLandroid/telecom/InCallService;->()V +HPLandroid/telecom/InCallService;->onAudioStateChanged(Landroid/telecom/AudioState;)V +HPLandroid/telecom/InCallService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLandroid/telecom/InCallService;->onPhoneCreated(Landroid/telecom/Phone;)V +HPLandroid/telecom/InCallService;->onPhoneDestroyed(Landroid/telecom/Phone;)V +HPLandroid/telecom/InCallService;->onUnbind(Landroid/content/Intent;)Z +HPLandroid/telecom/Log;->-android_telecom_Log-mthref-0()Ljava/lang/String; +HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;)V +HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V +HPLandroid/telecom/Log;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V +HPLandroid/telecom/Log;->cancelSubsession(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Log;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V +HPLandroid/telecom/Log;->createSubsession()Landroid/telecom/Logging/Session; +HPLandroid/telecom/Log;->d(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/telecom/Log;->endSession()V +HPLandroid/telecom/Log;->getEventManager()Landroid/telecom/Logging/EventManager; +HPLandroid/telecom/Log;->getExternalSession()Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Log;->getSessionManager()Landroid/telecom/Logging/SessionManager; +HPLandroid/telecom/Log;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/telecom/Log;->piiHandle(Ljava/lang/Object;)Ljava/lang/String; +HPLandroid/telecom/Log;->registerEventListener(Landroid/telecom/Logging/EventManager$EventListener;)V +HPLandroid/telecom/Log;->registerSessionListener(Landroid/telecom/Logging/SessionManager$ISessionListener;)V +HPLandroid/telecom/Log;->setSessionContext(Landroid/content/Context;)V +HPLandroid/telecom/Log;->setTag(Ljava/lang/String;)V +HPLandroid/telecom/Log;->startSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V +HPLandroid/telecom/Log;->startSession(Ljava/lang/String;)V +HPLandroid/telecom/Log;->v(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$1;->$m$0()J +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$1;->(Ljava/lang/Object;)V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$1;->get()J +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$2;->$m$0()V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$2;->(Ljava/lang/Object;)V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24$2;->run()V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24;->$m$0()I +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24;->()V +HPLandroid/telecom/Logging/-$Lambda$OwO3BlCgqcOx28O1BaOAPVPor24;->get()I +HPLandroid/telecom/Logging/EventManager$Event;->(Ljava/lang/String;Ljava/lang/String;JLjava/lang/Object;)V +HPLandroid/telecom/Logging/EventManager$EventListener;->eventRecordAdded(Landroid/telecom/Logging/EventManager$EventRecord;)V +HPLandroid/telecom/Logging/EventManager$EventRecord;->(Landroid/telecom/Logging/EventManager;Landroid/telecom/Logging/EventManager$Loggable;)V +HPLandroid/telecom/Logging/EventManager$EventRecord;->addEvent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HPLandroid/telecom/Logging/EventManager$EventRecord;->getRecordEntry()Landroid/telecom/Logging/EventManager$Loggable; +HPLandroid/telecom/Logging/EventManager$Loggable;->getDescription()Ljava/lang/String; +HPLandroid/telecom/Logging/EventManager$Loggable;->getId()Ljava/lang/String; +HPLandroid/telecom/Logging/EventManager$TimedEventPair;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/telecom/Logging/EventManager$TimedEventPair;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V +HPLandroid/telecom/Logging/EventManager;->(Landroid/telecom/Logging/SessionManager$ISessionIdQueryHandler;)V +HPLandroid/telecom/Logging/EventManager;->addEventRecord(Landroid/telecom/Logging/EventManager$EventRecord;)V +HPLandroid/telecom/Logging/EventManager;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V +HPLandroid/telecom/Logging/EventManager;->event(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V +HPLandroid/telecom/Logging/EventManager;->registerEventListener(Landroid/telecom/Logging/EventManager$EventListener;)V +HPLandroid/telecom/Logging/Runnable$1;->(Landroid/telecom/Logging/Runnable;)V +HPLandroid/telecom/Logging/Runnable$1;->run()V +HPLandroid/telecom/Logging/Runnable;->-get0(Landroid/telecom/Logging/Runnable;)Ljava/lang/Object; +HPLandroid/telecom/Logging/Runnable;->-get1(Landroid/telecom/Logging/Runnable;)Landroid/telecom/Logging/Session; +HPLandroid/telecom/Logging/Runnable;->-get2(Landroid/telecom/Logging/Runnable;)Ljava/lang/String; +HPLandroid/telecom/Logging/Runnable;->-set0(Landroid/telecom/Logging/Runnable;Landroid/telecom/Logging/Session;)Landroid/telecom/Logging/Session; +HPLandroid/telecom/Logging/Runnable;->(Ljava/lang/String;Ljava/lang/Object;)V +HPLandroid/telecom/Logging/Runnable;->cancel()V +HPLandroid/telecom/Logging/Runnable;->prepare()Ljava/lang/Runnable; +HPLandroid/telecom/Logging/Session$Info$1;->()V +HPLandroid/telecom/Logging/Session$Info$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Logging/Session$Info$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/Logging/Session$Info;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/telecom/Logging/Session$Info;->(Ljava/lang/String;Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLandroid/telecom/Logging/Session$Info;->getInfo(Landroid/telecom/Logging/Session;)Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Logging/Session$Info;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/Logging/Session;->-wrap0(Landroid/telecom/Logging/Session;)Z +HPLandroid/telecom/Logging/Session;->-wrap1(Landroid/telecom/Logging/Session;)Ljava/lang/String; +HPLandroid/telecom/Logging/Session;->(Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;)V +HPLandroid/telecom/Logging/Session;->addChild(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Logging/Session;->equals(Ljava/lang/Object;)Z +HPLandroid/telecom/Logging/Session;->getChildSessions()Ljava/util/ArrayList; +HPLandroid/telecom/Logging/Session;->getExecutionStartTimeMilliseconds()J +HPLandroid/telecom/Logging/Session;->getFullMethodPath(Ljava/lang/StringBuilder;Z)V +HPLandroid/telecom/Logging/Session;->getFullMethodPath(Z)Ljava/lang/String; +HPLandroid/telecom/Logging/Session;->getFullSessionId()Ljava/lang/String; +HPLandroid/telecom/Logging/Session;->getInfo()Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Logging/Session;->getLocalExecutionTime()J +HPLandroid/telecom/Logging/Session;->getNextChildId()Ljava/lang/String; +HPLandroid/telecom/Logging/Session;->getParentSession()Landroid/telecom/Logging/Session; +HPLandroid/telecom/Logging/Session;->getShortMethodName()Ljava/lang/String; +HPLandroid/telecom/Logging/Session;->isExternal()Z +HPLandroid/telecom/Logging/Session;->isSessionCompleted()Z +HPLandroid/telecom/Logging/Session;->isSessionExternal()Z +HPLandroid/telecom/Logging/Session;->isStartedFromActiveSession()Z +HPLandroid/telecom/Logging/Session;->markSessionCompleted(J)V +HPLandroid/telecom/Logging/Session;->removeChild(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Logging/Session;->setExecutionStartTimeMs(J)V +HPLandroid/telecom/Logging/Session;->setIsExternal(Z)V +HPLandroid/telecom/Logging/Session;->setParentSession(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Logging/Session;->setSessionId(Ljava/lang/String;)V +HPLandroid/telecom/Logging/Session;->setShortMethodName(Ljava/lang/String;)V +HPLandroid/telecom/Logging/Session;->toString()Ljava/lang/String; +HPLandroid/telecom/Logging/SessionManager$ICurrentThreadId;->get()I +HPLandroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;->get()J +HPLandroid/telecom/Logging/SessionManager$ISessionIdQueryHandler;->getSessionId()Ljava/lang/String; +HPLandroid/telecom/Logging/SessionManager$ISessionListener;->sessionComplete(Ljava/lang/String;J)V +HPLandroid/telecom/Logging/SessionManager;->-android_telecom_Logging_SessionManager-mthref-0()I +HPLandroid/telecom/Logging/SessionManager;->()V +HPLandroid/telecom/Logging/SessionManager;->cancelSubsession(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Logging/SessionManager;->cleanupStaleSessions(J)V +HPLandroid/telecom/Logging/SessionManager;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V +HPLandroid/telecom/Logging/SessionManager;->createSubsession()Landroid/telecom/Logging/Session; +HPLandroid/telecom/Logging/SessionManager;->createSubsession(Z)Landroid/telecom/Logging/Session; +HPLandroid/telecom/Logging/SessionManager;->endParentSessions(Landroid/telecom/Logging/Session;)V +HPLandroid/telecom/Logging/SessionManager;->endSession()V +HPLandroid/telecom/Logging/SessionManager;->getBase64Encoding(I)Ljava/lang/String; +HPLandroid/telecom/Logging/SessionManager;->getCallingThreadId()I +HPLandroid/telecom/Logging/SessionManager;->getCleanupTimeout(Landroid/content/Context;)J +HPLandroid/telecom/Logging/SessionManager;->getExternalSession()Landroid/telecom/Logging/Session$Info; +HPLandroid/telecom/Logging/SessionManager;->getNextSessionID()Ljava/lang/String; +HPLandroid/telecom/Logging/SessionManager;->getSessionCleanupTimeoutMs()J +HPLandroid/telecom/Logging/SessionManager;->getSessionId()Ljava/lang/String; +HPLandroid/telecom/Logging/SessionManager;->lambda$-android_telecom_Logging_SessionManager_1888()V +HPLandroid/telecom/Logging/SessionManager;->lambda$-android_telecom_Logging_SessionManager_2450()J +HPLandroid/telecom/Logging/SessionManager;->notifySessionCompleteListeners(Ljava/lang/String;J)V +HPLandroid/telecom/Logging/SessionManager;->registerSessionListener(Landroid/telecom/Logging/SessionManager$ISessionListener;)V +HPLandroid/telecom/Logging/SessionManager;->resetStaleSessionTimer()V +HPLandroid/telecom/Logging/SessionManager;->setContext(Landroid/content/Context;)V +HPLandroid/telecom/Logging/SessionManager;->startExternalSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V +HPLandroid/telecom/Logging/SessionManager;->startSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/telecom/Logging/SessionManager;->startSession(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/telecom/ParcelableCall$1;->()V +HPLandroid/telecom/ParcelableCall$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/ParcelableCall; +HPLandroid/telecom/ParcelableCall$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/ParcelableCall;->(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 +HPLandroid/telecom/ParcelableCall;->getAccountHandle()Landroid/telecom/PhoneAccountHandle; +HPLandroid/telecom/ParcelableCall;->getCallerDisplayName()Ljava/lang/String; +HPLandroid/telecom/ParcelableCall;->getCallerDisplayNamePresentation()I +HPLandroid/telecom/ParcelableCall;->getCannedSmsResponses()Ljava/util/List; +HPLandroid/telecom/ParcelableCall;->getCapabilities()I +HPLandroid/telecom/ParcelableCall;->getChildCallIds()Ljava/util/List; +HPLandroid/telecom/ParcelableCall;->getConferenceableCallIds()Ljava/util/List; +HPLandroid/telecom/ParcelableCall;->getConnectTimeMillis()J +HPLandroid/telecom/ParcelableCall;->getCreationTimeMillis()J +HPLandroid/telecom/ParcelableCall;->getDisconnectCause()Landroid/telecom/DisconnectCause; +HPLandroid/telecom/ParcelableCall;->getExtras()Landroid/os/Bundle; +HPLandroid/telecom/ParcelableCall;->getGatewayInfo()Landroid/telecom/GatewayInfo; +HPLandroid/telecom/ParcelableCall;->getHandle()Landroid/net/Uri; +HPLandroid/telecom/ParcelableCall;->getHandlePresentation()I +HPLandroid/telecom/ParcelableCall;->getId()Ljava/lang/String; +HPLandroid/telecom/ParcelableCall;->getIntentExtras()Landroid/os/Bundle; +HPLandroid/telecom/ParcelableCall;->getParcelableRttCall()Landroid/telecom/ParcelableRttCall; +HPLandroid/telecom/ParcelableCall;->getParentCallId()Ljava/lang/String; +HPLandroid/telecom/ParcelableCall;->getProperties()I +HPLandroid/telecom/ParcelableCall;->getState()I +HPLandroid/telecom/ParcelableCall;->getStatusHints()Landroid/telecom/StatusHints; +HPLandroid/telecom/ParcelableCall;->getVideoCallImpl(Ljava/lang/String;I)Landroid/telecom/VideoCallImpl; +HPLandroid/telecom/ParcelableCall;->getVideoState()I +HPLandroid/telecom/ParcelableCall;->isVideoCallProviderChanged()Z +HPLandroid/telecom/ParcelableCall;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/ParcelableConnection$1;->()V +HPLandroid/telecom/ParcelableConnection$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/ParcelableConnection; +HPLandroid/telecom/ParcelableConnection$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telecom/ParcelableConnection;->(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 +HPLandroid/telecom/ParcelableConnection;->(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 +HPLandroid/telecom/ParcelableConnection;->getDisconnectCause()Landroid/telecom/DisconnectCause; +HPLandroid/telecom/ParcelableConnection;->getState()I +HPLandroid/telecom/ParcelableConnection;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telecom/Phone$Listener;->()V +HPLandroid/telecom/Phone;->(Landroid/telecom/InCallAdapter;Ljava/lang/String;I)V +HPLandroid/telecom/Phone;->addListener(Landroid/telecom/Phone$Listener;)V +HPLandroid/telecom/Phone;->checkCallTree(Landroid/telecom/ParcelableCall;)V +HPLandroid/telecom/Phone;->destroy()V +HPLandroid/telecom/Phone;->fireCallAdded(Landroid/telecom/Call;)V +HPLandroid/telecom/Phone;->fireCallAudioStateChanged(Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/Phone;->fireCallRemoved(Landroid/telecom/Call;)V +HPLandroid/telecom/Phone;->fireCanAddCallChanged(Z)V +HPLandroid/telecom/Phone;->internalAddCall(Landroid/telecom/ParcelableCall;)V +HPLandroid/telecom/Phone;->internalCallAudioStateChanged(Landroid/telecom/CallAudioState;)V +HPLandroid/telecom/Phone;->internalRemoveCall(Landroid/telecom/Call;)V +HPLandroid/telecom/Phone;->internalSetCanAddCall(Z)V +HPLandroid/telecom/Phone;->internalUpdateCall(Landroid/telecom/ParcelableCall;)V +HPLandroid/telecom/Phone;->removeListener(Landroid/telecom/Phone$Listener;)V +HPLandroid/telecom/PhoneAccount$Builder;->setIsEnabled(Z)Landroid/telecom/PhoneAccount$Builder; +HPLandroid/telecom/PhoneAccount$Builder;->setSupportedAudioRoutes(I)Landroid/telecom/PhoneAccount$Builder; +HPLandroid/telecom/PhoneAccount;->getAddress()Landroid/net/Uri; +HPLandroid/telecom/PhoneAccount;->getCapabilities()I +HPLandroid/telecom/PhoneAccount;->getHighlightColor()I +HPLandroid/telecom/PhoneAccount;->getIcon()Landroid/graphics/drawable/Icon; +HPLandroid/telecom/PhoneAccount;->getLabel()Ljava/lang/CharSequence; +HPLandroid/telecom/PhoneAccount;->getShortDescription()Ljava/lang/CharSequence; +HPLandroid/telecom/PhoneAccount;->getSubscriptionAddress()Landroid/net/Uri; +HPLandroid/telecom/PhoneAccount;->getSupportedAudioRoutes()I +HPLandroid/telecom/PhoneAccount;->getSupportedUriSchemes()Ljava/util/List; +HPLandroid/telecom/PhoneAccount;->isEnabled()Z +HPLandroid/telecom/PhoneAccount;->isSelfManaged()Z +HPLandroid/telecom/PhoneAccount;->setIsEnabled(Z)V +HPLandroid/telecom/PhoneAccount;->supportsUriScheme(Ljava/lang/String;)Z +HPLandroid/telecom/PhoneAccountHandle;->describeContents()I +HPLandroid/telecom/PhoneAccountHandle;->hashCode()I +HPLandroid/telecom/RemoteConnectionManager;->(Landroid/telecom/ConnectionService;)V +HPLandroid/telecom/TelecomAnalytics$SessionTiming$1;->()V +HPLandroid/telecom/TelecomAnalytics$SessionTiming;->(IJ)V +HPLandroid/telecom/TelecomManager;->getDefaultPhoneApp()Landroid/content/ComponentName; +HPLandroid/telecom/TelecomManager;->getLine1Number(Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String; +HPLandroid/telecom/TelecomManager;->getPhoneAccountsSupportingScheme(Ljava/lang/String;)Ljava/util/List; +HPLandroid/telecom/TelecomManager;->getSystemDialerPackage()Ljava/lang/String; +HPLandroid/telecom/TelecomManager;->isRinging()Z +HPLandroid/telecom/TelecomManager;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Z +HPLandroid/telecom/TelecomManager;->placeCall(Landroid/net/Uri;Landroid/os/Bundle;)V +HPLandroid/telecom/TimedEvent;->()V +HPLandroid/telecom/TimedEvent;->getKey()Ljava/lang/Object; +HPLandroid/telecom/TimedEvent;->getTime()J +HPLandroid/telecom/VideoProfile$1;->()V +HPLandroid/telecom/VideoProfile;->hasState(II)Z +HPLandroid/telecom/VideoProfile;->isPaused(I)Z +HPLandroid/telecom/VideoProfile;->isReceptionEnabled(I)Z +HPLandroid/telecom/VideoProfile;->isTransmissionEnabled(I)Z +HPLandroid/telecom/VideoProfile;->isVideo(I)Z +HPLandroid/telecom/VideoProfile;->videoStateToString(I)Ljava/lang/String; +HPLandroid/telephony/CellIdentityLte$1;->()V +HPLandroid/telephony/CellIdentityLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentityLte; +HPLandroid/telephony/CellIdentityLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/CellIdentityLte;->(Landroid/os/Parcel;)V +HPLandroid/telephony/CellIdentityLte;->(Landroid/os/Parcel;Landroid/telephony/CellIdentityLte;)V +HPLandroid/telephony/CellIdentityLte;->getCi()I +HPLandroid/telephony/CellIdentityLte;->getMcc()I +HPLandroid/telephony/CellIdentityLte;->getMnc()I +HPLandroid/telephony/CellIdentityLte;->getPci()I +HPLandroid/telephony/CellIdentityLte;->getTac()I +HPLandroid/telephony/CellIdentityLte;->toString()Ljava/lang/String; +HPLandroid/telephony/CellIdentityLte;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telephony/CellInfo$1;->()V +HPLandroid/telephony/CellInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellInfo; +HPLandroid/telephony/CellInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/CellInfo;->(Landroid/os/Parcel;)V +HPLandroid/telephony/CellInfo;->getTimeStamp()J +HPLandroid/telephony/CellInfo;->isRegistered()Z +HPLandroid/telephony/CellInfo;->timeStampTypeToString(I)Ljava/lang/String; +HPLandroid/telephony/CellInfo;->toString()Ljava/lang/String; +HPLandroid/telephony/CellInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telephony/CellInfo;->writeToParcel(Landroid/os/Parcel;II)V +HPLandroid/telephony/CellInfoLte$1;->()V +HPLandroid/telephony/CellInfoLte;->(Landroid/os/Parcel;)V +HPLandroid/telephony/CellInfoLte;->createFromParcelBody(Landroid/os/Parcel;)Landroid/telephony/CellInfoLte; +HPLandroid/telephony/CellInfoLte;->getCellIdentity()Landroid/telephony/CellIdentityLte; +HPLandroid/telephony/CellInfoLte;->getCellSignalStrength()Landroid/telephony/CellSignalStrengthLte; +HPLandroid/telephony/CellInfoLte;->toString()Ljava/lang/String; +HPLandroid/telephony/CellInfoLte;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telephony/CellLocation;->getEmpty()Landroid/telephony/CellLocation; +HPLandroid/telephony/CellSignalStrength;->()V +HPLandroid/telephony/CellSignalStrength;->copy()Landroid/telephony/CellSignalStrength; +HPLandroid/telephony/CellSignalStrength;->equals(Ljava/lang/Object;)Z +HPLandroid/telephony/CellSignalStrength;->getAsuLevel()I +HPLandroid/telephony/CellSignalStrength;->getDbm()I +HPLandroid/telephony/CellSignalStrength;->getLevel()I +HPLandroid/telephony/CellSignalStrength;->hashCode()I +HPLandroid/telephony/CellSignalStrength;->setDefaultValues()V +HPLandroid/telephony/CellSignalStrengthLte$1;->()V +HPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthLte; +HPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;)V +HPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthLte;)V +HPLandroid/telephony/CellSignalStrengthLte;->getDbm()I +HPLandroid/telephony/CellSignalStrengthLte;->getTimingAdvance()I +HPLandroid/telephony/CellSignalStrengthLte;->toString()Ljava/lang/String; +HPLandroid/telephony/CellSignalStrengthLte;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telephony/DisconnectCause;->toString(I)Ljava/lang/String; +HPLandroid/telephony/ModemActivityInfo$1;->()V +HPLandroid/telephony/ModemActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ModemActivityInfo; +HPLandroid/telephony/ModemActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/ModemActivityInfo;->(JII[III)V +HPLandroid/telephony/ModemActivityInfo;->getEnergyUsed()I +HPLandroid/telephony/ModemActivityInfo;->getIdleTimeMillis()I +HPLandroid/telephony/ModemActivityInfo;->getRxTimeMillis()I +HPLandroid/telephony/ModemActivityInfo;->getSleepTimeMillis()I +HPLandroid/telephony/ModemActivityInfo;->getTxTimeMillis()[I +HPLandroid/telephony/ModemActivityInfo;->isEmpty()Z +HPLandroid/telephony/ModemActivityInfo;->isValid()Z +HPLandroid/telephony/ModemActivityInfo;->toString()Ljava/lang/String; +HPLandroid/telephony/ModemActivityInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->afterTextChanged(Landroid/text/Editable;)V +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->getFormattedNumber(CZ)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->hasSeparator(Ljava/lang/CharSequence;II)Z +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/telephony/PhoneNumberFormattingTextWatcher;->reformat(Ljava/lang/CharSequence;I)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->addTtsSpan(Landroid/text/Spannable;II)V +HPLandroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;Z)Z +HPLandroid/telephony/PhoneNumberUtils;->compareLoosely(Ljava/lang/String;Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->convertToEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->createTtsSpan(Ljava/lang/String;)Landroid/text/style/TtsSpan; +HPLandroid/telephony/PhoneNumberUtils;->createTtsSpannable(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortionAlt(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->formatNumberInternal(Ljava/lang/String;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->formatNumberToE164(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->getDefaultVoiceSubId()I +HPLandroid/telephony/PhoneNumberUtils;->getNumberFromIntent(Landroid/content/Intent;Landroid/content/Context;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->indexOfLastNetworkChar(Ljava/lang/String;)I +HPLandroid/telephony/PhoneNumberUtils;->is12Key(C)Z +HPLandroid/telephony/PhoneNumberUtils;->isDialable(C)Z +HPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumber(ILjava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumber(Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumberInternal(ILjava/lang/String;Ljava/lang/String;Z)Z +HPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumberInternal(ILjava/lang/String;Z)Z +HPLandroid/telephony/PhoneNumberUtils;->isISODigit(C)Z +HPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumberInternal(ILjava/lang/String;Landroid/content/Context;Z)Z +HPLandroid/telephony/PhoneNumberUtils;->isNonSeparator(C)Z +HPLandroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z +HPLandroid/telephony/PhoneNumberUtils;->minPositive(II)I +HPLandroid/telephony/PhoneNumberUtils;->normalizeNumber(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->replaceUnicodeDigits(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->splitAtNonNumerics(Ljava/lang/CharSequence;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->stripSeparators(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/telephony/PhoneNumberUtils;->ttsSpanAsPhoneNumber(Landroid/text/Spannable;II)V +HPLandroid/telephony/PreciseCallState$1;->()V +HPLandroid/telephony/PreciseCallState;->()V +HPLandroid/telephony/PreciseDataConnectionState$1;->()V +HPLandroid/telephony/PreciseDataConnectionState;->()V +HPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ServiceState; +HPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/ServiceState;->(Landroid/os/Parcel;)V +HPLandroid/telephony/ServiceState;->fillInNotifierBundle(Landroid/os/Bundle;)V +HPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SignalStrength; +HPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/telephony/SignalStrength;->(Landroid/os/Parcel;)V +HPLandroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V +HPLandroid/telephony/SignalStrength;->getCdmaDbm()I +HPLandroid/telephony/SignalStrength;->getCdmaEcio()I +HPLandroid/telephony/SignalStrength;->getCdmaLevel()I +HPLandroid/telephony/SignalStrength;->getEvdoDbm()I +HPLandroid/telephony/SignalStrength;->getEvdoLevel()I +HPLandroid/telephony/SignalStrength;->getEvdoSnr()I +HPLandroid/telephony/SignalStrength;->getLevel()I +HPLandroid/telephony/TelephonyManager;->createForPhoneAccountHandle(Landroid/telecom/PhoneAccountHandle;)Landroid/telephony/TelephonyManager; +HPLandroid/telephony/TelephonyManager;->getAllCellInfo()Ljava/util/List; +HPLandroid/telephony/TelephonyManager;->getCellLocation()Landroid/telephony/CellLocation; +HPLandroid/telephony/TelephonyManager;->getDataEnabled()Z +HPLandroid/telephony/TelephonyManager;->getDataEnabled(I)Z +HPLandroid/telephony/TelephonyManager;->getEmergencyCallbackMode()Z +HPLandroid/telephony/TelephonyManager;->getEmergencyCallbackMode(I)Z +HPLandroid/telephony/TelephonyManager;->getGroupIdLevel1()Ljava/lang/String; +HPLandroid/telephony/TelephonyManager;->getNetworkType()I +HPLandroid/telephony/TelephonyManager;->getPackagesWithCarrierPrivileges()Ljava/util/List; +HPLandroid/telephony/TelephonyManager;->getPhoneTypeFromProperty(I)I +HPLandroid/telephony/TelephonyManager;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I +HPLandroid/telephony/TelephonyManager;->getSubIdForPhoneAccountHandle(Landroid/telecom/PhoneAccountHandle;)I +HPLandroid/telephony/TelephonyManager;->getTetherApnRequired()I +HPLandroid/telephony/TelephonyManager;->getVoiceMailNumber(I)Ljava/lang/String; +HPLandroid/telephony/TelephonyManager;->getVoiceNetworkType()I +HPLandroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I +HPLandroid/telephony/TelephonyManager;->getVtDataUsage(I)Landroid/net/NetworkStats; +HPLandroid/telephony/TelephonyManager;->isDataEnabled()Z +HPLandroid/telephony/TelephonyManager;->isNetworkRoaming()Z +HPLandroid/telephony/TelephonyManager;->isNetworkRoaming(I)Z +HPLandroid/telephony/VoLteServiceState$1;->()V +HPLandroid/telephony/VoLteServiceState;->()V +HPLandroid/telephony/VoLteServiceState;->initialize()V +HPLandroid/telephony/gsm/GsmCellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V +HPLandroid/telephony/ims/ImsService$1;->getConfigInterface(II)Lcom/android/ims/internal/IImsConfig; +HPLandroid/test/InstrumentationTestCase;->getInstrumentation()Landroid/app/Instrumentation; +HPLandroid/text/AndroidBidi;->bidi(I[C[BIZ)I +HPLandroid/text/AndroidBidi;->directions(I[BI[CII)Landroid/text/Layout$Directions; +HPLandroid/text/Annotation;->(Landroid/os/Parcel;)V +HPLandroid/text/Annotation;->(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/text/Annotation;->getSpanTypeIdInternal()I +HPLandroid/text/Annotation;->getValue()Ljava/lang/String; +HPLandroid/text/Annotation;->writeToParcelInternal(Landroid/os/Parcel;I)V +HPLandroid/text/BidiFormatter;->getInstance()Landroid/text/BidiFormatter; +HPLandroid/text/BidiFormatter;->isRtlLocale(Ljava/util/Locale;)Z +HPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String; +HPLandroid/text/BoringLayout;->getEllipsisCount(I)I +HPLandroid/text/CharSequenceCharacterIterator;->(Ljava/lang/CharSequence;II)V +HPLandroid/text/CharSequenceCharacterIterator;->current()C +HPLandroid/text/CharSequenceCharacterIterator;->first()C +HPLandroid/text/CharSequenceCharacterIterator;->getBeginIndex()I +HPLandroid/text/CharSequenceCharacterIterator;->getEndIndex()I +HPLandroid/text/CharSequenceCharacterIterator;->getIndex()I +HPLandroid/text/CharSequenceCharacterIterator;->next()C +HPLandroid/text/CharSequenceCharacterIterator;->previous()C +HPLandroid/text/CharSequenceCharacterIterator;->setIndex(I)C +HPLandroid/text/DynamicLayout$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V +HPLandroid/text/DynamicLayout$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/text/DynamicLayout$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/text/DynamicLayout$ChangeWatcher;->reflow(Ljava/lang/CharSequence;III)V +HPLandroid/text/DynamicLayout;->-wrap0(Landroid/text/DynamicLayout;Ljava/lang/CharSequence;III)V +HPLandroid/text/Html$HtmlParser;->-get0()Lorg/ccil/cowan/tagsoup/HTMLSchema; +HPLandroid/text/Html$TagHandler;->handleTag(ZLjava/lang/String;Landroid/text/Editable;Lorg/xml/sax/XMLReader;)V +HPLandroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned; +HPLandroid/text/Html;->fromHtml(Ljava/lang/String;I)Landroid/text/Spanned; +HPLandroid/text/Html;->fromHtml(Ljava/lang/String;ILandroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned; +HPLandroid/text/Html;->fromHtml(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned; +HPLandroid/text/HtmlToSpannedConverter$Bold;->()V +HPLandroid/text/HtmlToSpannedConverter$Bold;->(Landroid/text/HtmlToSpannedConverter$Bold;)V +HPLandroid/text/HtmlToSpannedConverter$Href;->(Ljava/lang/String;)V +HPLandroid/text/HtmlToSpannedConverter;->(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;Lorg/ccil/cowan/tagsoup/Parser;I)V +HPLandroid/text/HtmlToSpannedConverter;->characters([CII)V +HPLandroid/text/HtmlToSpannedConverter;->convert()Landroid/text/Spanned; +HPLandroid/text/HtmlToSpannedConverter;->end(Landroid/text/Editable;Ljava/lang/Class;Ljava/lang/Object;)V +HPLandroid/text/HtmlToSpannedConverter;->endA(Landroid/text/Editable;)V +HPLandroid/text/HtmlToSpannedConverter;->endDocument()V +HPLandroid/text/HtmlToSpannedConverter;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/text/HtmlToSpannedConverter;->endPrefixMapping(Ljava/lang/String;)V +HPLandroid/text/HtmlToSpannedConverter;->getLast(Landroid/text/Spanned;Ljava/lang/Class;)Ljava/lang/Object; +HPLandroid/text/HtmlToSpannedConverter;->handleBr(Landroid/text/Editable;)V +HPLandroid/text/HtmlToSpannedConverter;->handleEndTag(Ljava/lang/String;)V +HPLandroid/text/HtmlToSpannedConverter;->handleStartTag(Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HPLandroid/text/HtmlToSpannedConverter;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HPLandroid/text/HtmlToSpannedConverter;->setSpanFromMark(Landroid/text/Spannable;Ljava/lang/Object;[Ljava/lang/Object;)V +HPLandroid/text/HtmlToSpannedConverter;->start(Landroid/text/Editable;Ljava/lang/Object;)V +HPLandroid/text/HtmlToSpannedConverter;->startA(Landroid/text/Editable;Lorg/xml/sax/Attributes;)V +HPLandroid/text/HtmlToSpannedConverter;->startDocument()V +HPLandroid/text/HtmlToSpannedConverter;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V +HPLandroid/text/HtmlToSpannedConverter;->startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/text/InputFilter$LengthFilter;->(I)V +HPLandroid/text/InputFilter$LengthFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence; +HPLandroid/text/Layout$Ellipsizer;->charAt(I)C +HPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V +HPLandroid/text/Layout;->-wrap0(Landroid/text/Layout;III[CILandroid/text/TextUtils$TruncateAt;)V +HPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;)V +HPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V +HPLandroid/text/Layout;->getEllipsisChar(Landroid/text/TextUtils$TruncateAt;)C +HPLandroid/text/Layout;->getHorizontal(IZ)F +HPLandroid/text/Layout;->getOffsetForHorizontal(IF)I +HPLandroid/text/Layout;->getOffsetForHorizontal(IFZ)I +HPLandroid/text/Layout;->getPrimaryHorizontal(I)F +HPLandroid/text/Selection$PositionIterator;->following(I)I +HPLandroid/text/Selection$PositionIterator;->preceding(I)I +HPLandroid/text/Selection;->removeSelection(Landroid/text/Spannable;)V +HPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;II)V +HPLandroid/text/SpannableString;->equals(Ljava/lang/Object;)Z +HPLandroid/text/SpannableString;->nextSpanTransition(IILjava/lang/Class;)I +HPLandroid/text/SpannableString;->removeSpan(Ljava/lang/Object;)V +HPLandroid/text/SpannableString;->subSequence(II)Ljava/lang/CharSequence; +HPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/Editable; +HPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; +HPLandroid/text/SpannableStringBuilder;->append(C)Ljava/lang/Appendable; +HPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;Ljava/lang/Object;I)Landroid/text/SpannableStringBuilder; +HPLandroid/text/SpannableStringBuilder;->clear()V +HPLandroid/text/SpannableStringBuilder;->clearSpans()V +HPLandroid/text/SpannableStringBuilder;->delete(II)Landroid/text/Editable; +HPLandroid/text/SpannableStringBuilder;->delete(II)Landroid/text/SpannableStringBuilder; +HPLandroid/text/SpannableStringBuilder;->equals(Ljava/lang/Object;)Z +HPLandroid/text/SpannableStringBuilder;->getTextWatcherDepth()I +HPLandroid/text/SpannableStringBuilder;->insert(ILjava/lang/CharSequence;)Landroid/text/Editable; +HPLandroid/text/SpannableStringBuilder;->insert(ILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; +HPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/Editable; +HPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/Editable; +HPLandroid/text/SpannableStringBuilder;->resizeFor(I)V +HPLandroid/text/SpannableStringInternal;->equals(Ljava/lang/Object;)Z +HPLandroid/text/SpannableStringInternal;->hashCode()I +HPLandroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;)V +HPLandroid/text/SpannableStringInternal;->sendSpanRemoved(Ljava/lang/Object;II)V +HPLandroid/text/SpannedString;->(Ljava/lang/CharSequence;II)V +HPLandroid/text/SpannedString;->equals(Ljava/lang/Object;)Z +HPLandroid/text/SpannedString;->hashCode()I +HPLandroid/text/SpannedString;->subSequence(II)Ljava/lang/CharSequence; +HPLandroid/text/StaticLayout$Builder;->-wrap0(Landroid/text/StaticLayout$Builder;)V +HPLandroid/text/StaticLayout$Builder;->setIndents([I[I)Landroid/text/StaticLayout$Builder; +HPLandroid/text/StaticLayout;->-wrap6(J[I)V +HPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V +HPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V +HPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZLandroid/text/TextUtils$TruncateAt;II)V +HPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V +HPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII)Z +HPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z +HPLandroid/text/TextLine$DecorationInfo;->copyInfo()Landroid/text/TextLine$DecorationInfo; +HPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V +HPLandroid/text/TextPaint;->(Landroid/graphics/Paint;)V +HPLandroid/text/TextPaint;->getUnderlineThickness()F +HPLandroid/text/TextUtils$SimpleStringSplitter;->hasNext()Z +HPLandroid/text/TextUtils;->-wrap0(Landroid/os/Parcel;Landroid/text/Spannable;Ljava/lang/Object;)V +HPLandroid/text/TextUtils;->concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence; +HPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I +HPLandroid/text/TextUtils;->getTrimmedLength(Ljava/lang/CharSequence;)I +HPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z +HPLandroid/text/TextUtils;->nullIfEmpty(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/text/TextUtils;->readSpan(Landroid/os/Parcel;Landroid/text/Spannable;Ljava/lang/Object;)V +HPLandroid/text/TextUtils;->safeIntern(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/text/TextUtils;->substring(Ljava/lang/CharSequence;II)Ljava/lang/String; +HPLandroid/text/TextUtils;->toUpperMapToDest(Landroid/icu/text/Edits$Iterator;I)I +HPLandroid/text/TextUtils;->writeWhere(Landroid/os/Parcel;Landroid/text/Spanned;Ljava/lang/Object;)V +HPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String; +HPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJI)Ljava/util/Formatter; +HPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter; +HPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence; +HPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence; +HPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(Landroid/content/Context;J)Ljava/lang/CharSequence; +HPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(Landroid/content/Context;JZ)Ljava/lang/CharSequence; +HPLandroid/text/format/Time$TimeCalculator;->toMillis(Z)J +HPLandroid/text/format/Time;->toMillis(Z)J +HPLandroid/text/format/TimeFormatter;->outputYear(IZZI)V +HPLandroid/text/method/ArrowKeyMovementMethod;->handleMovementKey(Landroid/widget/TextView;Landroid/text/Spannable;IILandroid/view/KeyEvent;)Z +HPLandroid/text/method/ArrowKeyMovementMethod;->isSelecting(Landroid/text/Spannable;)Z +HPLandroid/text/method/ArrowKeyMovementMethod;->onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z +HPLandroid/text/method/BaseKeyListener;->backspace(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/BaseKeyListener;->backspaceOrForwardDelete(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;Z)Z +HPLandroid/text/method/BaseKeyListener;->deleteSelection(Landroid/view/View;Landroid/text/Editable;)Z +HPLandroid/text/method/BaseKeyListener;->getOffsetForBackspaceKey(Ljava/lang/CharSequence;I)I +HPLandroid/text/method/BaseKeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/BaseMovementMethod;->getMovementMetaState(Landroid/text/Spannable;Landroid/view/KeyEvent;)I +HPLandroid/text/method/BaseMovementMethod;->handleMovementKey(Landroid/widget/TextView;Landroid/text/Spannable;IILandroid/view/KeyEvent;)Z +HPLandroid/text/method/BaseMovementMethod;->onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/BaseMovementMethod;->onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/DialerKeyListener;->getAcceptedChars()[C +HPLandroid/text/method/DialerKeyListener;->lookup(Landroid/view/KeyEvent;Landroid/text/Spannable;)I +HPLandroid/text/method/LinkMovementMethod;->initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V +HPLandroid/text/method/MetaKeyKeyListener;->adjust(Landroid/text/Spannable;Ljava/lang/Object;)V +HPLandroid/text/method/MetaKeyKeyListener;->adjustMetaAfterKeypress(Landroid/text/Spannable;)V +HPLandroid/text/method/MetaKeyKeyListener;->getMetaState(JI)I +HPLandroid/text/method/MetaKeyKeyListener;->getMetaState(Ljava/lang/CharSequence;ILandroid/view/KeyEvent;)I +HPLandroid/text/method/MetaKeyKeyListener;->getMetaState(Ljava/lang/CharSequence;Landroid/view/KeyEvent;)I +HPLandroid/text/method/MetaKeyKeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/MetaKeyKeyListener;->onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/NumberKeyListener;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence; +HPLandroid/text/method/NumberKeyListener;->ok([CC)Z +HPLandroid/text/method/NumberKeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/QwertyKeyListener;->(Landroid/text/method/TextKeyListener$Capitalize;ZZ)V +HPLandroid/text/method/QwertyKeyListener;->getInstanceForFullKeyboard()Landroid/text/method/QwertyKeyListener; +HPLandroid/text/method/QwertyKeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/TextKeyListener$SettingsObserver;->(Landroid/text/method/TextKeyListener;)V +HPLandroid/text/method/TextKeyListener$SettingsObserver;->onChange(Z)V +HPLandroid/text/method/TextKeyListener;->-get0(Landroid/text/method/TextKeyListener;)Ljava/lang/ref/WeakReference; +HPLandroid/text/method/TextKeyListener;->-wrap0(Landroid/text/method/TextKeyListener;Landroid/content/ContentResolver;)V +HPLandroid/text/method/TextKeyListener;->getKeyListener(Landroid/view/KeyEvent;)Landroid/text/method/KeyListener; +HPLandroid/text/method/TextKeyListener;->getPrefs(Landroid/content/Context;)I +HPLandroid/text/method/TextKeyListener;->initPrefs(Landroid/content/Context;)V +HPLandroid/text/method/TextKeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/TextKeyListener;->onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HPLandroid/text/method/TextKeyListener;->updatePrefs(Landroid/content/ContentResolver;)V +HPLandroid/text/method/Touch$DragState;->(FFII)V +HPLandroid/text/method/Touch;->onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z +HPLandroid/text/method/TransformationMethod;->getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence; +HPLandroid/text/method/TransformationMethod;->onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V +HPLandroid/text/method/WordIterator;->(Ljava/util/Locale;)V +HPLandroid/text/method/WordIterator;->checkOffsetIsValid(I)V +HPLandroid/text/method/WordIterator;->following(I)I +HPLandroid/text/method/WordIterator;->getBeginning(I)I +HPLandroid/text/method/WordIterator;->getBeginning(IZ)I +HPLandroid/text/method/WordIterator;->isAfterLetterOrDigit(I)Z +HPLandroid/text/method/WordIterator;->isOnLetterOrDigit(I)Z +HPLandroid/text/method/WordIterator;->setCharSequence(Ljava/lang/CharSequence;II)V +HPLandroid/text/style/AccessibilityClickableSpan$1;->()V +HPLandroid/text/style/AccessibilityClickableSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/AccessibilityClickableSpan;->copyConnectionDataFrom(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/text/style/AccessibilityURLSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/CharacterStyle$Passthrough;->(Landroid/text/style/CharacterStyle;)V +HPLandroid/text/style/CharacterStyle$Passthrough;->updateDrawState(Landroid/text/TextPaint;)V +HPLandroid/text/style/CharacterStyle;->getUnderlying()Landroid/text/style/CharacterStyle; +HPLandroid/text/style/CharacterStyle;->wrap(Landroid/text/style/CharacterStyle;)Landroid/text/style/CharacterStyle; +HPLandroid/text/style/ClickableSpan;->()V +HPLandroid/text/style/ClickableSpan;->onClick(Landroid/view/View;)V +HPLandroid/text/style/ClickableSpan;->updateDrawState(Landroid/text/TextPaint;)V +HPLandroid/text/style/DynamicDrawableSpan;->draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V +HPLandroid/text/style/ForegroundColorSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/ForegroundColorSpan;->getSpanTypeIdInternal()I +HPLandroid/text/style/ForegroundColorSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V +HPLandroid/text/style/LocaleSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/MetricAffectingSpan$Passthrough;->(Landroid/text/style/MetricAffectingSpan;)V +HPLandroid/text/style/MetricAffectingSpan$Passthrough;->updateDrawState(Landroid/text/TextPaint;)V +HPLandroid/text/style/MetricAffectingSpan$Passthrough;->updateMeasureState(Landroid/text/TextPaint;)V +HPLandroid/text/style/MetricAffectingSpan;->getUnderlying()Landroid/text/style/CharacterStyle; +HPLandroid/text/style/MetricAffectingSpan;->getUnderlying()Landroid/text/style/MetricAffectingSpan; +HPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;I)V +HPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;II)V +HPLandroid/text/style/TextAppearanceSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/TextAppearanceSpan;->updateDrawState(Landroid/text/TextPaint;)V +HPLandroid/text/style/TextAppearanceSpan;->updateMeasureState(Landroid/text/TextPaint;)V +HPLandroid/text/style/TtsSpan$TelephoneBuilder;->()V +HPLandroid/text/style/TtsSpan$TelephoneBuilder;->setNumberParts(Ljava/lang/String;)Landroid/text/style/TtsSpan$TelephoneBuilder; +HPLandroid/text/style/TtsSpan;->getSpanTypeIdInternal()I +HPLandroid/text/style/TtsSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V +HPLandroid/text/style/URLSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/URLSpan;->(Ljava/lang/String;)V +HPLandroid/text/style/UnderlineSpan;->()V +HPLandroid/text/style/UnderlineSpan;->(Landroid/os/Parcel;)V +HPLandroid/text/style/UnderlineSpan;->getSpanTypeIdInternal()I +HPLandroid/text/style/UnderlineSpan;->updateDrawState(Landroid/text/TextPaint;)V +HPLandroid/text/style/UnderlineSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V +HPLandroid/text/util/Linkify$1;->()V +HPLandroid/text/util/Linkify$2;->()V +HPLandroid/text/util/Linkify$3;->()V +HPLandroid/text/util/Linkify$4;->()V +HPLandroid/text/util/Linkify$TransformFilter;->transformUrl(Ljava/util/regex/Matcher;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/text/util/Linkify;->addLinks(Landroid/text/Spannable;I)Z +HPLandroid/text/util/Linkify;->addLinks(Landroid/text/Spannable;ILandroid/content/Context;)Z +HPLandroid/text/util/Linkify;->gatherLinks(Ljava/util/ArrayList;Landroid/text/Spannable;Ljava/util/regex/Pattern;[Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V +HPLandroid/text/util/Linkify;->gatherTelLinks(Ljava/util/ArrayList;Landroid/text/Spannable;Landroid/content/Context;)V +HPLandroid/text/util/Linkify;->pruneOverlaps(Ljava/util/ArrayList;)V +HPLandroid/text/util/Rfc822Token;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/text/util/Rfc822Token;->quoteNameIfNecessary(Ljava/lang/String;)Ljava/lang/String; +HPLandroid/text/util/Rfc822Token;->toString()Ljava/lang/String; +HPLandroid/text/util/Rfc822Tokenizer;->()V +HPLandroid/text/util/Rfc822Tokenizer;->crunch(Ljava/lang/StringBuilder;)V +HPLandroid/text/util/Rfc822Tokenizer;->findTokenEnd(Ljava/lang/CharSequence;I)I +HPLandroid/text/util/Rfc822Tokenizer;->findTokenStart(Ljava/lang/CharSequence;I)I +HPLandroid/text/util/Rfc822Tokenizer;->tokenize(Ljava/lang/CharSequence;Ljava/util/Collection;)V +HPLandroid/transition/ArcMotion;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/transition/ArcMotion;->getPath(FFFF)Landroid/graphics/Path; +HPLandroid/transition/ArcMotion;->setMaximumAngle(F)V +HPLandroid/transition/ArcMotion;->setMinimumHorizontalAngle(F)V +HPLandroid/transition/ArcMotion;->setMinimumVerticalAngle(F)V +HPLandroid/transition/ArcMotion;->toTangent(F)F +HPLandroid/transition/ChangeBounds$4;->set(Landroid/view/View;Landroid/graphics/PointF;)V +HPLandroid/transition/ChangeBounds$4;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/transition/ChangeBounds$9;->(Landroid/transition/ChangeBounds;Landroid/view/ViewGroup;)V +HPLandroid/transition/ChangeBounds$9;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/ChangeBounds;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeBounds;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeBounds;->captureValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeBounds;->createAnimator(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator; +HPLandroid/transition/ChangeBounds;->getTransitionProperties()[Ljava/lang/String; +HPLandroid/transition/ChangeBounds;->parentMatches(Landroid/view/View;Landroid/view/View;)Z +HPLandroid/transition/ChangeClipBounds;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeClipBounds;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeClipBounds;->captureValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeClipBounds;->getTransitionProperties()[Ljava/lang/String; +HPLandroid/transition/ChangeImageTransform;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeImageTransform;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeImageTransform;->captureValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeImageTransform;->getTransitionProperties()[Ljava/lang/String; +HPLandroid/transition/ChangeTransform$1;->set(Landroid/transition/ChangeTransform$PathAnimatorMatrix;[F)V +HPLandroid/transition/ChangeTransform$1;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/transition/ChangeTransform$2;->set(Landroid/transition/ChangeTransform$PathAnimatorMatrix;Landroid/graphics/PointF;)V +HPLandroid/transition/ChangeTransform$2;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/transition/ChangeTransform$3;->(Landroid/transition/ChangeTransform;ZLandroid/graphics/Matrix;Landroid/view/View;Landroid/transition/ChangeTransform$Transforms;Landroid/transition/ChangeTransform$PathAnimatorMatrix;)V +HPLandroid/transition/ChangeTransform$3;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/transition/ChangeTransform$3;->setCurrentMatrix(Landroid/graphics/Matrix;)V +HPLandroid/transition/ChangeTransform$GhostListener;->(Landroid/view/View;Landroid/view/View;Landroid/view/GhostView;)V +HPLandroid/transition/ChangeTransform$GhostListener;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/ChangeTransform$PathAnimatorMatrix;->(Landroid/view/View;[F)V +HPLandroid/transition/ChangeTransform$PathAnimatorMatrix;->setAnimationMatrix()V +HPLandroid/transition/ChangeTransform$PathAnimatorMatrix;->setTranslation(Landroid/graphics/PointF;)V +HPLandroid/transition/ChangeTransform$PathAnimatorMatrix;->setValues([F)V +HPLandroid/transition/ChangeTransform$Transforms;->(Landroid/view/View;)V +HPLandroid/transition/ChangeTransform$Transforms;->equals(Ljava/lang/Object;)Z +HPLandroid/transition/ChangeTransform$Transforms;->restore(Landroid/view/View;)V +HPLandroid/transition/ChangeTransform;->-get0(Landroid/transition/ChangeTransform;)Z +HPLandroid/transition/ChangeTransform;->-wrap1(Landroid/view/View;FFFFFFFF)V +HPLandroid/transition/ChangeTransform;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeTransform;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeTransform;->captureValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeTransform;->createAnimator(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator; +HPLandroid/transition/ChangeTransform;->createGhostView(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeTransform;->createTransformAnimator(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;Z)Landroid/animation/ObjectAnimator; +HPLandroid/transition/ChangeTransform;->getTransitionProperties()[Ljava/lang/String; +HPLandroid/transition/ChangeTransform;->parentsMatch(Landroid/view/ViewGroup;Landroid/view/ViewGroup;)Z +HPLandroid/transition/ChangeTransform;->setIdentityTransforms(Landroid/view/View;)V +HPLandroid/transition/ChangeTransform;->setMatricesForParent(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)V +HPLandroid/transition/ChangeTransform;->setTransforms(Landroid/view/View;FFFFFFFF)V +HPLandroid/transition/Fade$1;->(Landroid/transition/Fade;Landroid/view/View;)V +HPLandroid/transition/Fade$1;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/Fade$FadeAnimatorListener;->(Landroid/view/View;)V +HPLandroid/transition/Fade$FadeAnimatorListener;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/transition/Fade$FadeAnimatorListener;->onAnimationStart(Landroid/animation/Animator;)V +HPLandroid/transition/Fade;->()V +HPLandroid/transition/Fade;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/Fade;->createAnimation(Landroid/view/View;FF)Landroid/animation/Animator; +HPLandroid/transition/Fade;->getStartAlpha(Landroid/transition/TransitionValues;F)F +HPLandroid/transition/Fade;->onDisappear(Landroid/view/ViewGroup;Landroid/view/View;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator; +HPLandroid/transition/PathMotion;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/transition/Scene;->getCurrentScene(Landroid/view/View;)Landroid/transition/Scene; +HPLandroid/transition/Transition$2;->(Landroid/transition/Transition;Landroid/util/ArrayMap;)V +HPLandroid/transition/Transition$2;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/transition/Transition$2;->onAnimationStart(Landroid/animation/Animator;)V +HPLandroid/transition/Transition$3;->(Landroid/transition/Transition;)V +HPLandroid/transition/Transition$3;->onAnimationEnd(Landroid/animation/Animator;)V +HPLandroid/transition/Transition$AnimationInfo;->(Landroid/view/View;Ljava/lang/String;Landroid/transition/Transition;Landroid/view/WindowId;Landroid/transition/TransitionValues;)V +HPLandroid/transition/Transition$EpicenterCallback;->()V +HPLandroid/transition/Transition$EpicenterCallback;->onGetEpicenter(Landroid/transition/Transition;)Landroid/graphics/Rect; +HPLandroid/transition/Transition;->-get0(Landroid/transition/Transition;)Ljava/util/ArrayList; +HPLandroid/transition/Transition;->addTarget(I)Landroid/transition/Transition; +HPLandroid/transition/Transition;->addUnmatched(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V +HPLandroid/transition/Transition;->addViewValues(Landroid/transition/TransitionValuesMaps;Landroid/view/View;Landroid/transition/TransitionValues;)V +HPLandroid/transition/Transition;->animate(Landroid/animation/Animator;)V +HPLandroid/transition/Transition;->captureHierarchy(Landroid/view/View;Z)V +HPLandroid/transition/Transition;->capturePropagationValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/Transition;->captureValues(Landroid/view/ViewGroup;Z)V +HPLandroid/transition/Transition;->clearValues(Z)V +HPLandroid/transition/Transition;->clone()Landroid/transition/Transition; +HPLandroid/transition/Transition;->createAnimators(Landroid/view/ViewGroup;Landroid/transition/TransitionValuesMaps;Landroid/transition/TransitionValuesMaps;Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HPLandroid/transition/Transition;->end()V +HPLandroid/transition/Transition;->getDuration()J +HPLandroid/transition/Transition;->getInterpolator()Landroid/animation/TimeInterpolator; +HPLandroid/transition/Transition;->getMatchedTransitionValues(Landroid/view/View;Z)Landroid/transition/TransitionValues; +HPLandroid/transition/Transition;->getName()Ljava/lang/String; +HPLandroid/transition/Transition;->getPathMotion()Landroid/transition/PathMotion; +HPLandroid/transition/Transition;->getRunningAnimators()Landroid/util/ArrayMap; +HPLandroid/transition/Transition;->getStartDelay()J +HPLandroid/transition/Transition;->getTargetIds()Ljava/util/List; +HPLandroid/transition/Transition;->getTargetNames()Ljava/util/List; +HPLandroid/transition/Transition;->getTargetTypes()Ljava/util/List; +HPLandroid/transition/Transition;->getTargets()Ljava/util/List; +HPLandroid/transition/Transition;->getTransitionValues(Landroid/view/View;Z)Landroid/transition/TransitionValues; +HPLandroid/transition/Transition;->isTransitionRequired(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Z +HPLandroid/transition/Transition;->isValidTarget(Landroid/view/View;)Z +HPLandroid/transition/Transition;->isValueChanged(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;Ljava/lang/String;)Z +HPLandroid/transition/Transition;->matchIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseArray;Landroid/util/SparseArray;)V +HPLandroid/transition/Transition;->matchInstances(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V +HPLandroid/transition/Transition;->matchItemIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;)V +HPLandroid/transition/Transition;->matchNames(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V +HPLandroid/transition/Transition;->matchStartAndEnd(Landroid/transition/TransitionValuesMaps;Landroid/transition/TransitionValuesMaps;)V +HPLandroid/transition/Transition;->playTransition(Landroid/view/ViewGroup;)V +HPLandroid/transition/Transition;->removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; +HPLandroid/transition/Transition;->removeTarget(Landroid/view/View;)Landroid/transition/Transition; +HPLandroid/transition/Transition;->runAnimator(Landroid/animation/Animator;Landroid/util/ArrayMap;)V +HPLandroid/transition/Transition;->runAnimators()V +HPLandroid/transition/Transition;->setEpicenterCallback(Landroid/transition/Transition$EpicenterCallback;)V +HPLandroid/transition/Transition;->setPathMotion(Landroid/transition/PathMotion;)V +HPLandroid/transition/Transition;->start()V +HPLandroid/transition/TransitionInflater;->createCustom(Landroid/util/AttributeSet;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; +HPLandroid/transition/TransitionInflater;->getTargetIds(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)V +HPLandroid/transition/TransitionListenerAdapter;->()V +HPLandroid/transition/TransitionListenerAdapter;->onTransitionStart(Landroid/transition/Transition;)V +HPLandroid/transition/TransitionManager$MultiListener$1;->(Landroid/transition/TransitionManager$MultiListener;Landroid/util/ArrayMap;)V +HPLandroid/transition/TransitionManager$MultiListener$1;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/TransitionManager$MultiListener;->(Landroid/transition/Transition;Landroid/view/ViewGroup;)V +HPLandroid/transition/TransitionManager$MultiListener;->onPreDraw()Z +HPLandroid/transition/TransitionManager$MultiListener;->removeListeners()V +HPLandroid/transition/TransitionManager;->-get0()Ljava/util/ArrayList; +HPLandroid/transition/TransitionManager;->-wrap0()Landroid/util/ArrayMap; +HPLandroid/transition/TransitionManager;->sceneChangeRunTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V +HPLandroid/transition/TransitionManager;->sceneChangeSetup(Landroid/view/ViewGroup;Landroid/transition/Transition;)V +HPLandroid/transition/TransitionSet$TransitionSetListener;->(Landroid/transition/TransitionSet;)V +HPLandroid/transition/TransitionSet$TransitionSetListener;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/TransitionSet$TransitionSetListener;->onTransitionStart(Landroid/transition/Transition;)V +HPLandroid/transition/TransitionSet;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->addTarget(I)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->addTarget(I)Landroid/transition/TransitionSet; +HPLandroid/transition/TransitionSet;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/TransitionSet;->capturePropagationValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/TransitionSet;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/TransitionSet;->clone()Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->clone()Landroid/transition/TransitionSet; +HPLandroid/transition/TransitionSet;->createAnimators(Landroid/view/ViewGroup;Landroid/transition/TransitionValuesMaps;Landroid/transition/TransitionValuesMaps;Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HPLandroid/transition/TransitionSet;->getTransitionAt(I)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->removeListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet; +HPLandroid/transition/TransitionSet;->runAnimators()V +HPLandroid/transition/TransitionSet;->setDuration(J)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->setEpicenterCallback(Landroid/transition/Transition$EpicenterCallback;)V +HPLandroid/transition/TransitionSet;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition; +HPLandroid/transition/TransitionSet;->setPathMotion(Landroid/transition/PathMotion;)V +HPLandroid/transition/TransitionSet;->setupStartEndListeners()V +HPLandroid/transition/TransitionUtils;->copyViewImage(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/View;)Landroid/view/View; +HPLandroid/transition/TransitionUtils;->createViewBitmap(Landroid/view/View;Landroid/graphics/Matrix;Landroid/graphics/RectF;)Landroid/graphics/Bitmap; +HPLandroid/transition/TransitionValues;->()V +HPLandroid/transition/Visibility$1;->(Landroid/transition/Visibility;Landroid/view/ViewGroup;Landroid/view/View;)V +HPLandroid/transition/Visibility$1;->onTransitionEnd(Landroid/transition/Transition;)V +HPLandroid/transition/Visibility$VisibilityInfo;->()V +HPLandroid/transition/Visibility$VisibilityInfo;->(Landroid/transition/Visibility$VisibilityInfo;)V +HPLandroid/transition/Visibility;->captureEndValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/Visibility;->captureStartValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/Visibility;->captureValues(Landroid/transition/TransitionValues;)V +HPLandroid/transition/Visibility;->createAnimator(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/animation/Animator; +HPLandroid/transition/Visibility;->getVisibilityChangeInfo(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Landroid/transition/Visibility$VisibilityInfo; +HPLandroid/transition/Visibility;->isTransitionRequired(Landroid/transition/TransitionValues;Landroid/transition/TransitionValues;)Z +HPLandroid/transition/Visibility;->onDisappear(Landroid/view/ViewGroup;Landroid/transition/TransitionValues;ILandroid/transition/TransitionValues;I)Landroid/animation/Animator; +HPLandroid/util/AndroidException;->()V +HPLandroid/util/AndroidException;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HPLandroid/util/ArrayMap$1;->colGetMap()Ljava/util/Map; +HPLandroid/util/ArrayMap$1;->colIndexOfKey(Ljava/lang/Object;)I +HPLandroid/util/ArrayMap$1;->colIndexOfValue(Ljava/lang/Object;)I +HPLandroid/util/ArrayMap$1;->colSetValue(ILjava/lang/Object;)Ljava/lang/Object; +HPLandroid/util/ArrayMap;->containsValue(Ljava/lang/Object;)Z +HPLandroid/util/ArrayMap;->equals(Ljava/lang/Object;)Z +HPLandroid/util/ArrayMap;->hashCode()I +HPLandroid/util/ArrayMap;->indexOfValue(Ljava/lang/Object;)I +HPLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object; +HPLandroid/util/ArraySet;->hashCode()I +HPLandroid/util/ArraySet;->removeAll(Landroid/util/ArraySet;)Z +HPLandroid/util/ArraySet;->toArray()[Ljava/lang/Object; +HPLandroid/util/ArraySet;->toString()Ljava/lang/String; +HPLandroid/util/AtomicFile;->exists()Z +HPLandroid/util/AtomicFile;->failWrite(Ljava/io/FileOutputStream;)V +HPLandroid/util/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V +HPLandroid/util/AtomicFile;->getLastModifiedTime()J +HPLandroid/util/AtomicFile;->readFully()[B +HPLandroid/util/AtomicFile;->startWrite()Ljava/io/FileOutputStream; +HPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String; +HPLandroid/util/EventLog$Event;->([B)V +HPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object; +HPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object; +HPLandroid/util/EventLog$Event;->getProcessId()I +HPLandroid/util/EventLog$Event;->getTag()I +HPLandroid/util/EventLog$Event;->getTimeNanos()J +HPLandroid/util/EventLog$Event;->getUid()I +HPLandroid/util/EventLog;->getTagCode(Ljava/lang/String;)I +HPLandroid/util/EventLog;->readTagsFile()V +HPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Float;)V +HPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;I)Landroid/graphics/drawable/Drawable; +HPLandroid/util/IconDrawableFactory;->getShadowedIcon(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; +HPLandroid/util/IntArray;->addAll(Landroid/util/IntArray;)V +HPLandroid/util/IntArray;->indexOf(I)I +HPLandroid/util/IntArray;->remove(I)V +HPLandroid/util/IntArray;->toArray()[I +HPLandroid/util/JsonReader;->endArray()V +HPLandroid/util/JsonReader;->setLenient(Z)V +HPLandroid/util/KeyValueListParser;->getBoolean(Ljava/lang/String;Z)Z +HPLandroid/util/KeyValueListParser;->getFloat(Ljava/lang/String;F)F +HPLandroid/util/KeyValueListParser;->getInt(Ljava/lang/String;I)I +HPLandroid/util/KeyValueListParser;->getLong(Ljava/lang/String;J)J +HPLandroid/util/KeyValueListParser;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/util/KeyValueListParser;->setString(Ljava/lang/String;)V +HPLandroid/util/LauncherIcons$ShadowDrawable$MyConstantState;->(Landroid/graphics/Bitmap;Landroid/graphics/drawable/Drawable$ConstantState;)V +HPLandroid/util/LauncherIcons$ShadowDrawable;->(Landroid/graphics/Bitmap;Landroid/graphics/drawable/Drawable;)V +HPLandroid/util/LauncherIcons;->getShadowBitmap(Landroid/graphics/drawable/AdaptiveIconDrawable;)Landroid/graphics/Bitmap; +HPLandroid/util/LauncherIcons;->wrapIconDrawableWithShadow(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; +HPLandroid/util/LocalLog$ReadOnlyLocalLog;->(Landroid/util/LocalLog;)V +HPLandroid/util/LocalLog$ReadOnlyLocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/util/LocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/util/LocalLog;->readOnlyLocalLog()Landroid/util/LocalLog$ReadOnlyLocalLog; +HPLandroid/util/LocalLog;->reverseDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/util/Log$1;->onTerribleFailure(Ljava/lang/String;Landroid/util/Log$TerribleFailure;Z)V +HPLandroid/util/Log$TerribleFailure;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HPLandroid/util/Log;->wtf(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;ZZ)I +HPLandroid/util/LongArray;->addAll(Landroid/util/LongArray;)V +HPLandroid/util/LongArray;->clone()Landroid/util/LongArray; +HPLandroid/util/LongArray;->indexOf(J)I +HPLandroid/util/LongSparseArray;->append(JLjava/lang/Object;)V +HPLandroid/util/LongSparseArray;->keyAt(I)J +HPLandroid/util/LongSparseArray;->remove(J)V +HPLandroid/util/LongSparseArray;->removeAt(I)V +HPLandroid/util/LruCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/util/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/util/LruCache;->snapshot()Ljava/util/Map; +HPLandroid/util/MapCollections$KeySet;->contains(Ljava/lang/Object;)Z +HPLandroid/util/MapCollections$KeySet;->containsAll(Ljava/util/Collection;)Z +HPLandroid/util/MapCollections$KeySet;->equals(Ljava/lang/Object;)Z +HPLandroid/util/MapCollections$KeySet;->isEmpty()Z +HPLandroid/util/MapCollections$KeySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLandroid/util/MapCollections$MapIterator;->setValue(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/util/MapCollections$ValuesCollection;->contains(Ljava/lang/Object;)Z +HPLandroid/util/MapCollections$ValuesCollection;->size()I +HPLandroid/util/MapCollections$ValuesCollection;->toArray()[Ljava/lang/Object; +HPLandroid/util/MapCollections;->containsAllHelper(Ljava/util/Map;Ljava/util/Collection;)Z +HPLandroid/util/MapCollections;->equalsSetHelper(Ljava/util/Set;Ljava/lang/Object;)Z +HPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object; +HPLandroid/util/MathUtils;->constrain(JJJ)J +HPLandroid/util/MemoryIntArray;->(I)V +HPLandroid/util/MemoryIntArray;->enforceWritable()V +HPLandroid/util/MemoryIntArray;->isWritable()Z +HPLandroid/util/MemoryIntArray;->set(II)V +HPLandroid/util/MemoryIntArray;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/util/MergedConfiguration;->(Landroid/content/res/Configuration;)V +HPLandroid/util/MergedConfiguration;->(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V +HPLandroid/util/MergedConfiguration;->(Landroid/util/MergedConfiguration;)V +HPLandroid/util/MergedConfiguration;->getMergedConfiguration()Landroid/content/res/Configuration; +HPLandroid/util/MergedConfiguration;->setGlobalConfiguration(Landroid/content/res/Configuration;)V +HPLandroid/util/MergedConfiguration;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/util/NtpTrustedTime;->currentTimeMillis()J +HPLandroid/util/NtpTrustedTime;->getCacheAge()J +HPLandroid/util/NtpTrustedTime;->getCacheCertainty()J +HPLandroid/util/PrintWriterPrinter;->(Ljava/io/PrintWriter;)V +HPLandroid/util/PrintWriterPrinter;->println(Ljava/lang/String;)V +HPLandroid/util/Slog;->println(ILjava/lang/String;Ljava/lang/String;)I +HPLandroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I +HPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object; +HPLandroid/util/SparseArray;->toString()Ljava/lang/String; +HPLandroid/util/SparseBooleanArray;->clone()Landroid/util/SparseBooleanArray; +HPLandroid/util/SparseBooleanArray;->delete(I)V +HPLandroid/util/SparseBooleanArray;->equals(Ljava/lang/Object;)Z +HPLandroid/util/SparseBooleanArray;->removeAt(I)V +HPLandroid/util/SparseBooleanArray;->setValueAt(IZ)V +HPLandroid/util/SparseIntArray;->delete(I)V +HPLandroid/util/SparseIntArray;->setValueAt(II)V +HPLandroid/util/SparseIntArray;->toString()Ljava/lang/String; +HPLandroid/util/SparseLongArray;->indexOfKey(I)I +HPLandroid/util/SparseLongArray;->keyAt(I)I +HPLandroid/util/SparseLongArray;->removeAt(I)V +HPLandroid/util/SparseLongArray;->valueAt(I)J +HPLandroid/util/Spline$MonotoneCubicSpline;->([F[F)V +HPLandroid/util/Spline$MonotoneCubicSpline;->interpolate(F)F +HPLandroid/util/Spline;->()V +HPLandroid/util/Spline;->createMonotoneCubicSpline([F[F)Landroid/util/Spline; +HPLandroid/util/Spline;->createSpline([F[F)Landroid/util/Spline; +HPLandroid/util/Spline;->interpolate(F)F +HPLandroid/util/Spline;->isMonotonic([F)Z +HPLandroid/util/Spline;->isStrictlyIncreasing([F)Z +HPLandroid/util/StateSet;->isWildCard([I)Z +HPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V +HPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V +HPLandroid/util/TimedRemoteCaller;->(J)V +HPLandroid/util/TimedRemoteCaller;->getResultTimed(I)Ljava/lang/Object; +HPLandroid/util/TimedRemoteCaller;->onBeforeRemoteCall()I +HPLandroid/util/TimedRemoteCaller;->onRemoteMethodResult(Ljava/lang/Object;I)V +HPLandroid/util/Xml;->newSerializer()Lorg/xmlpull/v1/XmlSerializer; +HPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->hasSignature(Ljava/lang/String;)Z +HPLandroid/view/AbsSavedState;->(Landroid/os/Parcel;)V +HPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchPredecessorsOfRealNode(Landroid/view/View;Ljava/util/List;)V +HPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchSiblingsOfRealNode(Landroid/view/View;Ljava/util/List;)V +HPLandroid/view/AccessibilityInteractionController;->findViewByAccessibilityId(I)Landroid/view/View; +HPLandroid/view/AppTransitionAnimationSpec$1;->()V +HPLandroid/view/AppTransitionAnimationSpec;->(ILandroid/graphics/GraphicBuffer;Landroid/graphics/Rect;)V +HPLandroid/view/Choreographer$CallbackQueue;->hasDueCallbacksLocked(J)Z +HPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/view/Choreographer;->doScheduleCallback(I)V +HPLandroid/view/Choreographer;->doScheduleVsync()V +HPLandroid/view/Choreographer;->removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V +HPLandroid/view/Choreographer;->subtractFrameDelay(J)J +HPLandroid/view/ContextThemeWrapper;->getOverrideConfiguration()Landroid/content/res/Configuration; +HPLandroid/view/Display$HdrCapabilities;->getSupportedHdrTypes()[I +HPLandroid/view/Display$HdrCapabilities;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/Display$Mode;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/Display;->getLayerStack()I +HPLandroid/view/Display;->getMaximumSizeDimension()I +HPLandroid/view/Display;->getMode()Landroid/view/Display$Mode; +HPLandroid/view/Display;->hasAccess(I)Z +HPLandroid/view/DisplayEventReceiver;->dispose(Z)V +HPLandroid/view/DisplayEventReceiver;->finalize()V +HPLandroid/view/DisplayInfo;->(Landroid/view/DisplayInfo;)V +HPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;)V +HPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V +HPLandroid/view/DisplayInfo;->isHdr()Z +HPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/DisplayListCanvas;->drawCircle(Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;)V +HPLandroid/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 +HPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;ILjava/util/ArrayList;)Landroid/view/View; +HPLandroid/view/FocusFinder;->findNextFocusInAbsoluteDirection(Ljava/util/ArrayList;Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;I)Landroid/view/View; +HPLandroid/view/FocusFinder;->findNextUserSpecifiedFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View; +HPLandroid/view/FocusFinder;->isBetterCandidate(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLandroid/view/FocusFinder;->isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z +HPLandroid/view/FocusFinder;->setFocusTopLeft(Landroid/view/ViewGroup;Landroid/graphics/Rect;)V +HPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDoubleTap(Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDoubleTapEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDown(Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onLongPress(Landroid/view/MotionEvent;)V +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onShowPress(Landroid/view/MotionEvent;)V +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapConfirmed(Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapUp(Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector;->-get0(Landroid/view/GestureDetector;)Landroid/view/MotionEvent; +HPLandroid/view/GestureDetector;->-get1(Landroid/view/GestureDetector;)Landroid/view/GestureDetector$OnDoubleTapListener; +HPLandroid/view/GestureDetector;->-get2(Landroid/view/GestureDetector;)Landroid/view/GestureDetector$OnGestureListener; +HPLandroid/view/GestureDetector;->-get3(Landroid/view/GestureDetector;)Z +HPLandroid/view/GestureDetector;->-set0(Landroid/view/GestureDetector;Z)Z +HPLandroid/view/GestureDetector;->-wrap0(Landroid/view/GestureDetector;)V +HPLandroid/view/GestureDetector;->cancelTaps()V +HPLandroid/view/GestureDetector;->dispatchLongPress()V +HPLandroid/view/GestureDetector;->isConsideredDoubleTap(Landroid/view/MotionEvent;Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z +HPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/GhostView;->(Landroid/view/View;)V +HPLandroid/view/GhostView;->addGhost(Landroid/view/View;Landroid/view/ViewGroup;Landroid/graphics/Matrix;)Landroid/view/GhostView; +HPLandroid/view/GhostView;->copySize(Landroid/view/View;Landroid/view/View;)V +HPLandroid/view/GhostView;->insertIntoOverlay(Landroid/view/ViewGroup;Landroid/view/ViewGroup;Landroid/view/GhostView;Ljava/util/ArrayList;I)V +HPLandroid/view/GhostView;->isGhostWrapper(Landroid/view/View;)Z +HPLandroid/view/GhostView;->moveGhostViewsToTop(Landroid/view/ViewGroup;Ljava/util/ArrayList;)I +HPLandroid/view/GhostView;->onDetachedFromWindow()V +HPLandroid/view/GhostView;->onDraw(Landroid/graphics/Canvas;)V +HPLandroid/view/GhostView;->removeGhost(Landroid/view/View;)V +HPLandroid/view/GhostView;->setMatrix(Landroid/graphics/Matrix;)V +HPLandroid/view/Gravity;->applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLandroid/view/HardwareLayer;->destroy()V +HPLandroid/view/HardwareLayer;->detachSurfaceTexture()V +HPLandroid/view/HardwareLayer;->isValid()Z +HPLandroid/view/HardwareLayer;->setTransform(Landroid/graphics/Matrix;)V +HPLandroid/view/IApplicationToken$Stub;->()V +HPLandroid/view/IApplicationToken$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IDockedStackListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IDockedStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IDockedStackListener$Stub$Proxy;->onAdjustedForImeChanged(ZJ)V +HPLandroid/view/IDockedStackListener$Stub$Proxy;->onDividerVisibilityChanged(Z)V +HPLandroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackExistsChanged(Z)V +HPLandroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackMinimizedChanged(ZJZ)V +HPLandroid/view/IDockedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IDockedStackListener; +HPLandroid/view/IDockedStackListener;->onAdjustedForImeChanged(ZJ)V +HPLandroid/view/IDockedStackListener;->onDividerVisibilityChanged(Z)V +HPLandroid/view/IDockedStackListener;->onDockSideChanged(I)V +HPLandroid/view/IDockedStackListener;->onDockedStackExistsChanged(Z)V +HPLandroid/view/IDockedStackListener;->onDockedStackMinimizedChanged(ZJZ)V +HPLandroid/view/IGraphicsStats$Stub;->()V +HPLandroid/view/IGraphicsStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IGraphicsStatsCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IGraphicsStatsCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IGraphicsStatsCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStatsCallback; +HPLandroid/view/IPinnedStackController$Stub$Proxy;->setMinEdgeSize(I)V +HPLandroid/view/IPinnedStackController$Stub;->()V +HPLandroid/view/IPinnedStackController$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IPinnedStackController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->onActionsChanged(Landroid/content/pm/ParceledListSlice;)V +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->onImeVisibilityChanged(ZI)V +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->onListenerRegistered(Landroid/view/IPinnedStackController;)V +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->onMinimizedStateChanged(Z)V +HPLandroid/view/IPinnedStackListener$Stub$Proxy;->onMovementBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZI)V +HPLandroid/view/IPinnedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackListener; +HPLandroid/view/IRotationWatcher$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IRotationWatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IRotationWatcher$Stub$Proxy;->onRotationChanged(I)V +HPLandroid/view/IRotationWatcher$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IRotationWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRotationWatcher; +HPLandroid/view/IRotationWatcher$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IWallpaperVisibilityListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IWallpaperVisibilityListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IWallpaperVisibilityListener$Stub$Proxy;->onWallpaperVisibilityChanged(ZI)V +HPLandroid/view/IWallpaperVisibilityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWallpaperVisibilityListener; +HPLandroid/view/IWallpaperVisibilityListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IWindow$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IWindow$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IWindow$Stub$Proxy;->closeSystemDialogs(Ljava/lang/String;)V +HPLandroid/view/IWindow$Stub$Proxy;->dispatchAppVisibility(Z)V +HPLandroid/view/IWindow$Stub$Proxy;->dispatchSystemUiVisibilityChanged(IIII)V +HPLandroid/view/IWindow$Stub$Proxy;->dispatchWallpaperOffsets(FFFFZ)V +HPLandroid/view/IWindow$Stub$Proxy;->dispatchWindowShown()V +HPLandroid/view/IWindow$Stub$Proxy;->moved(II)V +HPLandroid/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;ZZI)V +HPLandroid/view/IWindow$Stub$Proxy;->windowFocusChanged(ZZ)V +HPLandroid/view/IWindow$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindow; +HPLandroid/view/IWindowId$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IWindowId$Stub;->()V +HPLandroid/view/IWindowId$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IWindowId$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowId; +HPLandroid/view/IWindowId;->isFocused()Z +HPLandroid/view/IWindowId;->registerFocusObserver(Landroid/view/IWindowFocusObserver;)V +HPLandroid/view/IWindowId;->unregisterFocusObserver(Landroid/view/IWindowFocusObserver;)V +HPLandroid/view/IWindowManager$Stub$Proxy;->watchRotation(Landroid/view/IRotationWatcher;I)I +HPLandroid/view/IWindowManager$Stub;->()V +HPLandroid/view/IWindowManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IWindowSession$Stub$Proxy;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; +HPLandroid/view/IWindowSession$Stub$Proxy;->performHapticFeedback(Landroid/view/IWindow;IZ)Z +HPLandroid/view/IWindowSession$Stub$Proxy;->remove(Landroid/view/IWindow;)V +HPLandroid/view/IWindowSession$Stub;->()V +HPLandroid/view/IWindowSession$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/IWindowSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/IWindowSessionCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/IWindowSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSessionCallback; +HPLandroid/view/InputChannel;->dup()Landroid/view/InputChannel; +HPLandroid/view/InputChannel;->finalize()V +HPLandroid/view/InputChannel;->openInputChannelPair(Ljava/lang/String;)[Landroid/view/InputChannel; +HPLandroid/view/InputChannel;->transferTo(Landroid/view/InputChannel;)V +HPLandroid/view/InputChannel;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/InputDevice$MotionRange;->-get0(Landroid/view/InputDevice$MotionRange;)I +HPLandroid/view/InputDevice$MotionRange;->-get1(Landroid/view/InputDevice$MotionRange;)F +HPLandroid/view/InputDevice$MotionRange;->-get2(Landroid/view/InputDevice$MotionRange;)F +HPLandroid/view/InputDevice$MotionRange;->-get3(Landroid/view/InputDevice$MotionRange;)F +HPLandroid/view/InputDevice$MotionRange;->-get4(Landroid/view/InputDevice$MotionRange;)F +HPLandroid/view/InputDevice$MotionRange;->-get5(Landroid/view/InputDevice$MotionRange;)F +HPLandroid/view/InputDevice$MotionRange;->-get6(Landroid/view/InputDevice$MotionRange;)I +HPLandroid/view/InputDevice;->(IIILjava/lang/String;IILjava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZZ)V +HPLandroid/view/InputDevice;->getGeneration()I +HPLandroid/view/InputDevice;->getId()I +HPLandroid/view/InputDevice;->getIdentifier()Landroid/hardware/input/InputDeviceIdentifier; +HPLandroid/view/InputDevice;->getKeyboardType()I +HPLandroid/view/InputDevice;->isExternal()Z +HPLandroid/view/InputDevice;->isFullKeyboard()Z +HPLandroid/view/InputDevice;->isVirtual()Z +HPLandroid/view/InputDevice;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/InputEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputEvent; +HPLandroid/view/InputEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/InputEventReceiver;->dispose()V +HPLandroid/view/InputEventReceiver;->dispose(Z)V +HPLandroid/view/InputEventReceiver;->finalize()V +HPLandroid/view/InputEventReceiver;->onBatchedInputEventPending()V +HPLandroid/view/InputEventSender;->(Landroid/view/InputChannel;Landroid/os/Looper;)V +HPLandroid/view/InputEventSender;->dispatchInputEventFinished(IZ)V +HPLandroid/view/InputEventSender;->dispose()V +HPLandroid/view/InputEventSender;->dispose(Z)V +HPLandroid/view/InputEventSender;->finalize()V +HPLandroid/view/InputEventSender;->sendInputEvent(ILandroid/view/InputEvent;)Z +HPLandroid/view/KeyCharacterMap$FallbackAction;->()V +HPLandroid/view/KeyCharacterMap$FallbackAction;->obtain()Landroid/view/KeyCharacterMap$FallbackAction; +HPLandroid/view/KeyCharacterMap$FallbackAction;->recycle()V +HPLandroid/view/KeyCharacterMap;->(J)V +HPLandroid/view/KeyCharacterMap;->finalize()V +HPLandroid/view/KeyCharacterMap;->getEvents([C)[Landroid/view/KeyEvent; +HPLandroid/view/KeyCharacterMap;->getFallbackAction(II)Landroid/view/KeyCharacterMap$FallbackAction; +HPLandroid/view/KeyCharacterMap;->getModifierBehavior()I +HPLandroid/view/KeyCharacterMap;->getNumber(I)C +HPLandroid/view/KeyCharacterMap;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyEvent; +HPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/KeyEvent$DispatcherState;->handleUpEvent(Landroid/view/KeyEvent;)V +HPLandroid/view/KeyEvent$DispatcherState;->startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V +HPLandroid/view/KeyEvent;->-get0(Landroid/view/KeyEvent;)I +HPLandroid/view/KeyEvent;->-set0(Landroid/view/KeyEvent;I)I +HPLandroid/view/KeyEvent;->()V +HPLandroid/view/KeyEvent;->(II)V +HPLandroid/view/KeyEvent;->(JJIIIIIII)V +HPLandroid/view/KeyEvent;->(JJIIIIIIII)V +HPLandroid/view/KeyEvent;->(Landroid/os/Parcel;)V +HPLandroid/view/KeyEvent;->actionToString(I)Ljava/lang/String; +HPLandroid/view/KeyEvent;->createFromParcelBody(Landroid/os/Parcel;)Landroid/view/KeyEvent; +HPLandroid/view/KeyEvent;->dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z +HPLandroid/view/KeyEvent;->getAction()I +HPLandroid/view/KeyEvent;->getDeviceId()I +HPLandroid/view/KeyEvent;->getDownTime()J +HPLandroid/view/KeyEvent;->getEventTime()J +HPLandroid/view/KeyEvent;->getEventTimeNano()J +HPLandroid/view/KeyEvent;->getFlags()I +HPLandroid/view/KeyEvent;->getKeyCharacterMap()Landroid/view/KeyCharacterMap; +HPLandroid/view/KeyEvent;->getKeyCode()I +HPLandroid/view/KeyEvent;->getMetaState()I +HPLandroid/view/KeyEvent;->getNumber()C +HPLandroid/view/KeyEvent;->getRepeatCount()I +HPLandroid/view/KeyEvent;->getSource()I +HPLandroid/view/KeyEvent;->getUnicodeChar()I +HPLandroid/view/KeyEvent;->getUnicodeChar(I)I +HPLandroid/view/KeyEvent;->hasModifiers(I)Z +HPLandroid/view/KeyEvent;->hasNoModifiers()Z +HPLandroid/view/KeyEvent;->isAltKey(I)Z +HPLandroid/view/KeyEvent;->isAltPressed()Z +HPLandroid/view/KeyEvent;->isCanceled()Z +HPLandroid/view/KeyEvent;->isConfirmKey(I)Z +HPLandroid/view/KeyEvent;->isCtrlPressed()Z +HPLandroid/view/KeyEvent;->isLongPress()Z +HPLandroid/view/KeyEvent;->isMetaKey(I)Z +HPLandroid/view/KeyEvent;->isMetaPressed()Z +HPLandroid/view/KeyEvent;->isModifierKey(I)Z +HPLandroid/view/KeyEvent;->isShiftPressed()Z +HPLandroid/view/KeyEvent;->isSystem()Z +HPLandroid/view/KeyEvent;->isSystemKey(I)Z +HPLandroid/view/KeyEvent;->isTracking()Z +HPLandroid/view/KeyEvent;->isWakeKey()Z +HPLandroid/view/KeyEvent;->isWakeKey(I)Z +HPLandroid/view/KeyEvent;->keyCodeToString(I)Ljava/lang/String; +HPLandroid/view/KeyEvent;->metaStateFilterDirectionalModifiers(IIIII)I +HPLandroid/view/KeyEvent;->metaStateHasModifiers(II)Z +HPLandroid/view/KeyEvent;->metaStateHasNoModifiers(I)Z +HPLandroid/view/KeyEvent;->metaStateToString(I)Ljava/lang/String; +HPLandroid/view/KeyEvent;->obtain()Landroid/view/KeyEvent; +HPLandroid/view/KeyEvent;->obtain(JJIIIIIIIILjava/lang/String;)Landroid/view/KeyEvent; +HPLandroid/view/KeyEvent;->recycle()V +HPLandroid/view/KeyEvent;->recycleIfNeededAfterDispatch()V +HPLandroid/view/KeyEvent;->startTracking()V +HPLandroid/view/KeyEvent;->toString()Ljava/lang/String; +HPLandroid/view/KeyEvent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/MagnificationSpec$1;->()V +HPLandroid/view/MagnificationSpec;->()V +HPLandroid/view/MagnificationSpec;->obtain()Landroid/view/MagnificationSpec; +HPLandroid/view/MotionEvent$PointerCoords;->()V +HPLandroid/view/MotionEvent$PointerCoords;->clear()V +HPLandroid/view/MotionEvent$PointerCoords;->createArray(I)[Landroid/view/MotionEvent$PointerCoords; +HPLandroid/view/MotionEvent$PointerProperties;->()V +HPLandroid/view/MotionEvent$PointerProperties;->clear()V +HPLandroid/view/MotionEvent$PointerProperties;->createArray(I)[Landroid/view/MotionEvent$PointerProperties; +HPLandroid/view/MotionEvent$PointerProperties;->equals(Landroid/view/MotionEvent$PointerProperties;)Z +HPLandroid/view/MotionEvent$PointerProperties;->equals(Ljava/lang/Object;)Z +HPLandroid/view/MotionEvent;->createFromParcelBody(Landroid/os/Parcel;)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->ensureSharedTempPointerCapacity(I)V +HPLandroid/view/MotionEvent;->finalize()V +HPLandroid/view/MotionEvent;->findPointerIndex(I)I +HPLandroid/view/MotionEvent;->getActionButton()I +HPLandroid/view/MotionEvent;->getButtonState()I +HPLandroid/view/MotionEvent;->getEdgeFlags()I +HPLandroid/view/MotionEvent;->getEventTime()J +HPLandroid/view/MotionEvent;->getHistoricalEventTime(I)J +HPLandroid/view/MotionEvent;->getHistoricalPressure(II)F +HPLandroid/view/MotionEvent;->getHistoricalX(II)F +HPLandroid/view/MotionEvent;->getHistoricalY(II)F +HPLandroid/view/MotionEvent;->getPressure(I)F +HPLandroid/view/MotionEvent;->getToolType(I)I +HPLandroid/view/MotionEvent;->isButtonPressed(I)Z +HPLandroid/view/MotionEvent;->isHoverExitPending()Z +HPLandroid/view/MotionEvent;->isWithinBoundsNoHistory(FFFF)Z +HPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFII)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->obtain(JJIFFI)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->obtain(JJII[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;IIFFIIII)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->obtain(Landroid/view/MotionEvent;)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->obtainNoHistory(Landroid/view/MotionEvent;)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->setLocation(FF)V +HPLandroid/view/MotionEvent;->setSource(I)V +HPLandroid/view/MotionEvent;->split(I)Landroid/view/MotionEvent; +HPLandroid/view/MotionEvent;->transform(Landroid/graphics/Matrix;)V +HPLandroid/view/MotionEvent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/NotificationHeaderView$1;->(Landroid/view/NotificationHeaderView;)V +HPLandroid/view/NotificationHeaderView$HeaderTouchListener;->(Landroid/view/NotificationHeaderView;)V +HPLandroid/view/NotificationHeaderView$HeaderTouchListener;->addRectAroundView(Landroid/view/View;)Landroid/graphics/Rect; +HPLandroid/view/NotificationHeaderView$HeaderTouchListener;->addWidthRect()V +HPLandroid/view/NotificationHeaderView$HeaderTouchListener;->bindTouchRects()V +HPLandroid/view/NotificationHeaderView$HeaderTouchListener;->getRectAroundView(Landroid/view/View;)Landroid/graphics/Rect; +HPLandroid/view/NotificationHeaderView;->-get2(Landroid/view/NotificationHeaderView;)Landroid/widget/ImageView; +HPLandroid/view/NotificationHeaderView;->-get5(Landroid/view/NotificationHeaderView;)Lcom/android/internal/widget/CachingIconView; +HPLandroid/view/NotificationHeaderView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/view/NotificationHeaderView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/view/NotificationHeaderView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/view/NotificationHeaderView;->drawableStateChanged()V +HPLandroid/view/NotificationHeaderView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HPLandroid/view/NotificationHeaderView;->getIcon()Lcom/android/internal/widget/CachingIconView; +HPLandroid/view/NotificationHeaderView;->getOriginalIconColor()I +HPLandroid/view/NotificationHeaderView;->hasOverlappingRendering()Z +HPLandroid/view/NotificationHeaderView;->onFinishInflate()V +HPLandroid/view/NotificationHeaderView;->onLayout(ZIIII)V +HPLandroid/view/NotificationHeaderView;->onMeasure(II)V +HPLandroid/view/NotificationHeaderView;->setAcceptAllTouches(Z)V +HPLandroid/view/NotificationHeaderView;->setExpandOnlyOnButton(Z)V +HPLandroid/view/NotificationHeaderView;->setExpanded(Z)V +HPLandroid/view/NotificationHeaderView;->setOnClickListener(Landroid/view/View$OnClickListener;)V +HPLandroid/view/NotificationHeaderView;->setOriginalIconColor(I)V +HPLandroid/view/NotificationHeaderView;->setOriginalNotificationColor(I)V +HPLandroid/view/NotificationHeaderView;->setShowExpandButtonAtEnd(Z)V +HPLandroid/view/NotificationHeaderView;->updateExpandButton()V +HPLandroid/view/NotificationHeaderView;->updateTouchListener()V +HPLandroid/view/OrientationEventListener;->-set0(Landroid/view/OrientationEventListener;I)I +HPLandroid/view/OrientationEventListener;->disable()V +HPLandroid/view/PointerIcon;->setUseLargeIcons(Z)V +HPLandroid/view/RecordingCanvas;->drawArc(FFFFFFZLandroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawColor(I)V +HPLandroid/view/RecordingCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawPaint(Landroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawText([CIIFFLandroid/graphics/Paint;)V +HPLandroid/view/RecordingCanvas;->drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V +HPLandroid/view/RemotableViewMethod;->asyncImpl()Ljava/lang/String; +HPLandroid/view/RenderNode;->addAnimator(Landroid/view/RenderNodeAnimator;)V +HPLandroid/view/RenderNode;->getInverseMatrix(Landroid/graphics/Matrix;)V +HPLandroid/view/RenderNode;->offsetLeftAndRight(I)Z +HPLandroid/view/RenderNode;->setBottom(I)Z +HPLandroid/view/RenderNode;->setClipBounds(Landroid/graphics/Rect;)Z +HPLandroid/view/RenderNode;->setLeft(I)Z +HPLandroid/view/RenderNode;->setRevealClip(ZFFF)Z +HPLandroid/view/RenderNode;->setRight(I)Z +HPLandroid/view/RenderNodeAnimator;->(IF)V +HPLandroid/view/RenderNodeAnimator;->(IIFF)V +HPLandroid/view/RenderNodeAnimator;->(Landroid/graphics/CanvasProperty;F)V +HPLandroid/view/RenderNodeAnimator;->(Landroid/graphics/CanvasProperty;IF)V +HPLandroid/view/RenderNodeAnimator;->applyInterpolator()V +HPLandroid/view/RenderNodeAnimator;->callOnFinished(Landroid/view/RenderNodeAnimator;)V +HPLandroid/view/RenderNodeAnimator;->cancel()V +HPLandroid/view/RenderNodeAnimator;->checkMutable()V +HPLandroid/view/RenderNodeAnimator;->cloneListeners()Ljava/util/ArrayList; +HPLandroid/view/RenderNodeAnimator;->doStart()V +HPLandroid/view/RenderNodeAnimator;->end()V +HPLandroid/view/RenderNodeAnimator;->getNativeAnimator()J +HPLandroid/view/RenderNodeAnimator;->getTotalDuration()J +HPLandroid/view/RenderNodeAnimator;->init(J)V +HPLandroid/view/RenderNodeAnimator;->isRunning()Z +HPLandroid/view/RenderNodeAnimator;->moveToRunningState()V +HPLandroid/view/RenderNodeAnimator;->notifyStartListeners()V +HPLandroid/view/RenderNodeAnimator;->onFinished()V +HPLandroid/view/RenderNodeAnimator;->releaseNativePtr()V +HPLandroid/view/RenderNodeAnimator;->setDuration(J)Landroid/animation/Animator; +HPLandroid/view/RenderNodeAnimator;->setDuration(J)Landroid/view/RenderNodeAnimator; +HPLandroid/view/RenderNodeAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V +HPLandroid/view/RenderNodeAnimator;->setStartDelay(J)V +HPLandroid/view/RenderNodeAnimator;->setStartValue(F)V +HPLandroid/view/RenderNodeAnimator;->setTarget(Landroid/graphics/Canvas;)V +HPLandroid/view/RenderNodeAnimator;->setTarget(Landroid/view/RenderNode;)V +HPLandroid/view/RenderNodeAnimator;->setTarget(Landroid/view/View;)V +HPLandroid/view/RenderNodeAnimator;->start()V +HPLandroid/view/ScaleGestureDetector;->getCurrentSpan()F +HPLandroid/view/ScaleGestureDetector;->getCurrentSpanX()F +HPLandroid/view/ScaleGestureDetector;->getFocusX()F +HPLandroid/view/ScaleGestureDetector;->getFocusY()F +HPLandroid/view/ScaleGestureDetector;->inAnchoredScaleMode()Z +HPLandroid/view/ScaleGestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/Surface;->(Landroid/graphics/SurfaceTexture;)V +HPLandroid/view/Surface;->attachAndQueueBuffer(Landroid/graphics/GraphicBuffer;)V +HPLandroid/view/Surface;->destroy()V +HPLandroid/view/Surface;->finalize()V +HPLandroid/view/Surface;->lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas; +HPLandroid/view/Surface;->unlockCanvasAndPost(Landroid/graphics/Canvas;)V +HPLandroid/view/Surface;->unlockSwCanvasAndPost(Landroid/graphics/Canvas;)V +HPLandroid/view/SurfaceControl;->(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIII)V +HPLandroid/view/SurfaceControl;->closeTransactionSync()V +HPLandroid/view/SurfaceControl;->detachChildren()V +HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;)V +HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;Landroid/graphics/Rect;IIIIZZ)V +HPLandroid/view/SurfaceControl;->screenshotToBuffer(Landroid/graphics/Rect;IIIIZI)Landroid/graphics/GraphicBuffer; +HPLandroid/view/SurfaceControl;->setAlpha(F)V +HPLandroid/view/SurfaceControl;->setAnimationTransaction()V +HPLandroid/view/SurfaceControl;->setDisplayLayerStack(Landroid/os/IBinder;I)V +HPLandroid/view/SurfaceControl;->setDisplayProjection(Landroid/os/IBinder;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLandroid/view/SurfaceControl;->setFinalCrop(Landroid/graphics/Rect;)V +HPLandroid/view/SurfaceControl;->setLayerStack(I)V +HPLandroid/view/SurfaceControl;->setOpaque(Z)V +HPLandroid/view/SurfaceControl;->setTransparentRegionHint(Landroid/graphics/Region;)V +HPLandroid/view/SurfaceControl;->setWindowCrop(Landroid/graphics/Rect;)V +HPLandroid/view/SurfaceSession;->()V +HPLandroid/view/SurfaceSession;->finalize()V +HPLandroid/view/SurfaceSession;->kill()V +HPLandroid/view/SurfaceView$3;->setSizeFromLayout()V +HPLandroid/view/SurfaceView;->setSecure(Z)V +HPLandroid/view/SurfaceView;->windowStopped(Z)V +HPLandroid/view/TextureView;->destroyHardwareLayer()V +HPLandroid/view/TextureView;->destroyHardwareResources()V +HPLandroid/view/TextureView;->onDetachedFromWindowInternal()V +HPLandroid/view/TextureView;->releaseSurfaceTexture()V +HPLandroid/view/ThreadedRenderer;->createHardwareBitmap(Landroid/view/RenderNode;II)Landroid/graphics/Bitmap; +HPLandroid/view/ThreadedRenderer;->detachSurfaceTexture(J)V +HPLandroid/view/ThreadedRenderer;->finalize()V +HPLandroid/view/ThreadedRenderer;->invalidateRoot()V +HPLandroid/view/ThreadedRenderer;->onLayerDestroyed(Landroid/view/HardwareLayer;)V +HPLandroid/view/ThreadedRenderer;->registerAnimatingRenderNode(Landroid/view/RenderNode;)V +HPLandroid/view/ThreadedRenderer;->setRequested(Z)V +HPLandroid/view/ThreadedRenderer;->updateSurface(Landroid/view/Surface;)V +HPLandroid/view/TouchDelegate;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/VelocityTracker;->addMovement(Landroid/view/MotionEvent;)V +HPLandroid/view/VelocityTracker;->clear()V +HPLandroid/view/VelocityTracker;->computeCurrentVelocity(I)V +HPLandroid/view/VelocityTracker;->computeCurrentVelocity(IF)V +HPLandroid/view/VelocityTracker;->finalize()V +HPLandroid/view/VelocityTracker;->getXVelocity()F +HPLandroid/view/VelocityTracker;->getXVelocity(I)F +HPLandroid/view/VelocityTracker;->getYVelocity()F +HPLandroid/view/VelocityTracker;->getYVelocity(I)F +HPLandroid/view/VelocityTracker;->recycle()V +HPLandroid/view/View$11;->get(Landroid/view/View;)Ljava/lang/Float; +HPLandroid/view/View$11;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/View$11;->setValue(Landroid/view/View;F)V +HPLandroid/view/View$11;->setValue(Ljava/lang/Object;F)V +HPLandroid/view/View$12;->get(Landroid/view/View;)Ljava/lang/Float; +HPLandroid/view/View$12;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/View$12;->setValue(Landroid/view/View;F)V +HPLandroid/view/View$12;->setValue(Ljava/lang/Object;F)V +HPLandroid/view/View$5;->get(Landroid/view/View;)Ljava/lang/Float; +HPLandroid/view/View$5;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/View$5;->setValue(Landroid/view/View;F)V +HPLandroid/view/View$5;->setValue(Ljava/lang/Object;F)V +HPLandroid/view/View$6;->get(Landroid/view/View;)Ljava/lang/Float; +HPLandroid/view/View$6;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/view/View$6;->setValue(Landroid/view/View;F)V +HPLandroid/view/View$6;->setValue(Ljava/lang/Object;F)V +HPLandroid/view/View$8;->setValue(Landroid/view/View;F)V +HPLandroid/view/View$8;->setValue(Ljava/lang/Object;F)V +HPLandroid/view/View$CheckForLongPress;->(Landroid/view/View;)V +HPLandroid/view/View$CheckForLongPress;->(Landroid/view/View;Landroid/view/View$CheckForLongPress;)V +HPLandroid/view/View$CheckForLongPress;->rememberPressedState()V +HPLandroid/view/View$CheckForLongPress;->rememberWindowAttachCount()V +HPLandroid/view/View$CheckForLongPress;->setAnchor(FF)V +HPLandroid/view/View$CheckForTap;->run()V +HPLandroid/view/View$ForegroundInfo;->-get0(Landroid/view/View$ForegroundInfo;)Z +HPLandroid/view/View$ForegroundInfo;->-get4(Landroid/view/View$ForegroundInfo;)Landroid/graphics/Rect; +HPLandroid/view/View$ForegroundInfo;->-get5(Landroid/view/View$ForegroundInfo;)Landroid/graphics/Rect; +HPLandroid/view/View$MatchIdPredicate;->()V +HPLandroid/view/View$MatchIdPredicate;->(Landroid/view/View$MatchIdPredicate;)V +HPLandroid/view/View$MatchIdPredicate;->test(Landroid/view/View;)Z +HPLandroid/view/View$MatchIdPredicate;->test(Ljava/lang/Object;)Z +HPLandroid/view/View$TransformationInfo;->-get0(Landroid/view/View$TransformationInfo;)Landroid/graphics/Matrix; +HPLandroid/view/View$TransformationInfo;->-set0(Landroid/view/View$TransformationInfo;Landroid/graphics/Matrix;)Landroid/graphics/Matrix; +HPLandroid/view/View$UnsetPressedState;->run()V +HPLandroid/view/View$VisibilityChangeForAutofillHandler;->(Landroid/view/autofill/AutofillManager;Landroid/view/View;)V +HPLandroid/view/View$VisibilityChangeForAutofillHandler;->(Landroid/view/autofill/AutofillManager;Landroid/view/View;Landroid/view/View$VisibilityChangeForAutofillHandler;)V +HPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V +HPLandroid/view/View;->-wrap0(Landroid/view/View;IFF)V +HPLandroid/view/View;->-wrap1(Landroid/view/View;ZFF)V +HPLandroid/view/View;->awakenScrollBars(I)Z +HPLandroid/view/View;->checkForLongClick(IFF)V +HPLandroid/view/View;->computeHorizontalScrollExtent()I +HPLandroid/view/View;->computeHorizontalScrollOffset()I +HPLandroid/view/View;->computeHorizontalScrollRange()I +HPLandroid/view/View;->computeVerticalScrollExtent()I +HPLandroid/view/View;->computeVerticalScrollOffset()I +HPLandroid/view/View;->computeVerticalScrollRange()I +HPLandroid/view/View;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/view/View;->dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->dispatchGenericMotionEventInternal(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->dispatchHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/view/View;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z +HPLandroid/view/View;->dispatchSystemUiVisibilityChanged(I)V +HPLandroid/view/View;->dispatchTooltipHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->findUserSetNextFocus(Landroid/view/View;I)Landroid/view/View; +HPLandroid/view/View;->findViewByAccessibilityId(I)Landroid/view/View; +HPLandroid/view/View;->findViewByAccessibilityIdTraversal(I)Landroid/view/View; +HPLandroid/view/View;->findViewInsideOutShouldExist(Landroid/view/View;I)Landroid/view/View; +HPLandroid/view/View;->focusSearch(I)Landroid/view/View; +HPLandroid/view/View;->getApplicationWindowToken()Landroid/os/IBinder; +HPLandroid/view/View;->getClipBounds()Landroid/graphics/Rect; +HPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V +HPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z +HPLandroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix; +HPLandroid/view/View;->getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState; +HPLandroid/view/View;->getLocalVisibleRect(Landroid/graphics/Rect;)Z +HPLandroid/view/View;->getOutlineProvider()Landroid/view/ViewOutlineProvider; +HPLandroid/view/View;->getRootWindowInsets()Landroid/view/WindowInsets; +HPLandroid/view/View;->getScrollIndicatorBounds(Landroid/graphics/Rect;)V +HPLandroid/view/View;->getSolidColor()I +HPLandroid/view/View;->getTransitionName()Ljava/lang/String; +HPLandroid/view/View;->getVerticalFadingEdgeLength()I +HPLandroid/view/View;->getWindowId()Landroid/view/WindowId; +HPLandroid/view/View;->hasExplicitFocusable()Z +HPLandroid/view/View;->hasHoveredChild()Z +HPLandroid/view/View;->hasNestedScrollingParent()Z +HPLandroid/view/View;->initializeScrollIndicatorsInternal()V +HPLandroid/view/View;->isHapticFeedbackEnabled()Z +HPLandroid/view/View;->isHoverable()Z +HPLandroid/view/View;->isHovered()Z +HPLandroid/view/View;->isNestedScrollingEnabled()Z +HPLandroid/view/View;->isVerticalFadingEdgeEnabled()Z +HPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V +HPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V +HPLandroid/view/View;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/view/View;->onGenericMotionEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->onHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/View;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/view/View;->onKeyPreIme(ILandroid/view/KeyEvent;)Z +HPLandroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/view/View;->overScrollBy(IIIIIIIIZ)Z +HPLandroid/view/View;->performHapticFeedback(I)Z +HPLandroid/view/View;->performHapticFeedback(II)Z +HPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V +HPLandroid/view/View;->scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V +HPLandroid/view/View;->scrollBy(II)V +HPLandroid/view/View;->sendAccessibilityHoverEvent(I)V +HPLandroid/view/View;->setAccessibilityTraversalBefore(I)V +HPLandroid/view/View;->setAnimationMatrix(Landroid/graphics/Matrix;)V +HPLandroid/view/View;->setBottom(I)V +HPLandroid/view/View;->setDrawingCacheEnabled(Z)V +HPLandroid/view/View;->setFadingEdgeLength(I)V +HPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V +HPLandroid/view/View;->setLeft(I)V +HPLandroid/view/View;->setLeftTopRightBottom(IIII)V +HPLandroid/view/View;->setRevealClip(ZFFF)V +HPLandroid/view/View;->setRight(I)V +HPLandroid/view/View;->setScrollIndicators(II)V +HPLandroid/view/View;->setScrollX(I)V +HPLandroid/view/View;->setScrollY(I)V +HPLandroid/view/View;->setTop(I)V +HPLandroid/view/View;->setTransitionVisibility(I)V +HPLandroid/view/View;->startNestedScroll(I)Z +HPLandroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V +HPLandroid/view/View;->transformMatrixToLocal(Landroid/graphics/Matrix;)V +HPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V +HPLandroid/view/View;->updateLocalSystemUiVisibility(II)Z +HPLandroid/view/ViewAnimationUtils;->createCircularReveal(Landroid/view/View;IIFF)Landroid/animation/Animator; +HPLandroid/view/ViewConfiguration;->getHoverTapSlop()I +HPLandroid/view/ViewConfiguration;->getHoverTapTimeout()I +HPLandroid/view/ViewConfiguration;->getKeyRepeatDelay()I +HPLandroid/view/ViewConfiguration;->getKeyRepeatTimeout()I +HPLandroid/view/ViewGroup$2;->endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V +HPLandroid/view/ViewGroup$2;->startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V +HPLandroid/view/ViewGroup$HoverTarget;->()V +HPLandroid/view/ViewGroup$HoverTarget;->obtain(Landroid/view/View;)Landroid/view/ViewGroup$HoverTarget; +HPLandroid/view/ViewGroup$HoverTarget;->recycle()V +HPLandroid/view/ViewGroup;->-get2(Landroid/view/ViewGroup;)Z +HPLandroid/view/ViewGroup;->-get3(Landroid/view/ViewGroup;)Ljava/util/ArrayList; +HPLandroid/view/ViewGroup;->addDisappearingView(Landroid/view/View;)V +HPLandroid/view/ViewGroup;->addTransientView(Landroid/view/View;I)V +HPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V +HPLandroid/view/ViewGroup;->dispatchHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewGroup;->dispatchSystemUiVisibilityChanged(I)V +HPLandroid/view/ViewGroup;->dispatchTooltipHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/ViewGroup;->dispatchTooltipHoverEvent(Landroid/view/MotionEvent;Landroid/view/View;)Z +HPLandroid/view/ViewGroup;->dispatchTransformedGenericPointerEvent(Landroid/view/MotionEvent;Landroid/view/View;)Z +HPLandroid/view/ViewGroup;->findViewByAccessibilityIdTraversal(I)Landroid/view/View; +HPLandroid/view/ViewGroup;->focusSearch(Landroid/view/View;I)Landroid/view/View; +HPLandroid/view/ViewGroup;->getChildDrawingOrder(II)I +HPLandroid/view/ViewGroup;->getScrollIndicatorBounds(Landroid/graphics/Rect;)V +HPLandroid/view/ViewGroup;->getTransientViewCount()I +HPLandroid/view/ViewGroup;->hasHoveredChild()Z +HPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent; +HPLandroid/view/ViewGroup;->isTransitionGroup()Z +HPLandroid/view/ViewGroup;->offsetRectIntoDescendantCoords(Landroid/view/View;Landroid/graphics/Rect;)V +HPLandroid/view/ViewGroup;->onInterceptHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/ViewGroup;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z +HPLandroid/view/ViewGroup;->recomputeViewAttributes(Landroid/view/View;)V +HPLandroid/view/ViewGroup;->removeDetachedView(Landroid/view/View;Z)V +HPLandroid/view/ViewGroup;->removeTransientView(Landroid/view/View;)V +HPLandroid/view/ViewGroup;->requestDisallowInterceptTouchEvent(Z)V +HPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V +HPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V +HPLandroid/view/ViewGroup;->suppressLayout(Z)V +HPLandroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z +HPLandroid/view/ViewGroup;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/view/ViewGroupOverlay;->remove(Landroid/view/View;)V +HPLandroid/view/ViewOverlay$OverlayViewGroup;->clear()V +HPLandroid/view/ViewOverlay$OverlayViewGroup;->invalidate(IIII)V +HPLandroid/view/ViewOverlay$OverlayViewGroup;->invalidateParentIfNeeded()V +HPLandroid/view/ViewOverlay$OverlayViewGroup;->remove(Landroid/view/View;)V +HPLandroid/view/ViewOverlay;->clear()V +HPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z +HPLandroid/view/ViewPropertyAnimator;->setUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)Landroid/view/ViewPropertyAnimator; +HPLandroid/view/ViewPropertyAnimator;->x(F)Landroid/view/ViewPropertyAnimator; +HPLandroid/view/ViewPropertyAnimator;->y(F)Landroid/view/ViewPropertyAnimator; +HPLandroid/view/ViewRootImpl$1;->onDisplayChanged(I)V +HPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureNoConnection()V +HPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->onAccessibilityStateChanged(Z)V +HPLandroid/view/ViewRootImpl$AsyncInputStage;->defer(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HPLandroid/view/ViewRootImpl$AsyncInputStage;->dequeue(Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HPLandroid/view/ViewRootImpl$AsyncInputStage;->enqueue(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HPLandroid/view/ViewRootImpl$CalledFromWrongThreadException;->(Ljava/lang/String;)V +HPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$ImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V +HPLandroid/view/ViewRootImpl$ImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$NativePreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$SyntheticInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$SystemUiVisibilityInfo;->()V +HPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->performFocusNavigation(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HPLandroid/view/ViewRootImpl$W;->dispatchSystemUiVisibilityChanged(IIII)V +HPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V +HPLandroid/view/ViewRootImpl$W;->moved(II)V +HPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V +HPLandroid/view/ViewRootImpl;->-wrap1(Landroid/view/ViewRootImpl;Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewRootImpl;->-wrap10(Landroid/view/ViewRootImpl;Landroid/graphics/Rect;)V +HPLandroid/view/ViewRootImpl;->-wrap12(Landroid/view/ViewRootImpl;Landroid/util/MergedConfiguration;ZI)V +HPLandroid/view/ViewRootImpl;->-wrap7(Landroid/view/View;)V +HPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V +HPLandroid/view/ViewRootImpl;->die(Z)Z +HPLandroid/view/ViewRootImpl;->dispatchDetachedFromWindow()V +HPLandroid/view/ViewRootImpl;->dispatchKeyFromIme(Landroid/view/KeyEvent;)V +HPLandroid/view/ViewRootImpl;->dispatchMoved(II)V +HPLandroid/view/ViewRootImpl;->dispatchSystemUiVisibilityChanged(IIII)V +HPLandroid/view/ViewRootImpl;->dispatchWindowShown()V +HPLandroid/view/ViewRootImpl;->doDie()V +HPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;)Z +HPLandroid/view/ViewRootImpl;->findAncestorToTakeFocusInTouchMode(Landroid/view/View;)Landroid/view/ViewGroup; +HPLandroid/view/ViewRootImpl;->focusSearch(Landroid/view/View;I)Landroid/view/View; +HPLandroid/view/ViewRootImpl;->forceLayout(Landroid/view/View;)V +HPLandroid/view/ViewRootImpl;->getParent()Landroid/view/ViewParent; +HPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged(Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;)V +HPLandroid/view/ViewRootImpl;->handleDispatchWindowShown()V +HPLandroid/view/ViewRootImpl;->isNavigationKey(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewRootImpl;->isTypingKey(Landroid/view/KeyEvent;)Z +HPLandroid/view/ViewRootImpl;->leaveTouchMode()Z +HPLandroid/view/ViewRootImpl;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z +HPLandroid/view/ViewRootImpl;->performHapticFeedback(IZ)Z +HPLandroid/view/ViewRootImpl;->registerAnimatingRenderNode(Landroid/view/RenderNode;)V +HPLandroid/view/ViewRootImpl;->removeSendWindowContentChangedCallback()V +HPLandroid/view/ViewRootImpl;->removeWindowCallbacks(Landroid/view/WindowCallbacks;)V +HPLandroid/view/ViewRootImpl;->requestDisallowInterceptTouchEvent(Z)V +HPLandroid/view/ViewRootImpl;->requestTransitionStart(Landroid/animation/LayoutTransition;)V +HPLandroid/view/ViewRootImpl;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V +HPLandroid/view/ViewRootImpl;->transformMatrixToLocal(Landroid/graphics/Matrix;)V +HPLandroid/view/ViewRootImpl;->unscheduleConsumeBatchedInput()V +HPLandroid/view/ViewRootImpl;->unscheduleTraversals()V +HPLandroid/view/ViewStub$ViewReplaceRunnable;->(Landroid/view/ViewStub;Landroid/view/View;)V +HPLandroid/view/ViewStub$ViewReplaceRunnable;->run()V +HPLandroid/view/ViewStub;->-wrap0(Landroid/view/ViewStub;Landroid/view/View;Landroid/view/ViewGroup;)V +HPLandroid/view/ViewStub;->setVisibilityAsync(I)Ljava/lang/Runnable; +HPLandroid/view/ViewTreeObserver;->dispatchOnWindowShown()V +HPLandroid/view/ViewTreeObserver;->removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V +HPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HPLandroid/view/Window;->destroy()V +HPLandroid/view/Window;->isOutOfBounds(Landroid/content/Context;Landroid/view/MotionEvent;)Z +HPLandroid/view/Window;->setType(I)V +HPLandroid/view/Window;->shouldCloseOnTouch(Landroid/content/Context;Landroid/view/MotionEvent;)Z +HPLandroid/view/WindowCallbackWrapper;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/view/WindowId$1;->()V +HPLandroid/view/WindowId;->(Landroid/view/IWindowId;)V +HPLandroid/view/WindowInfo$1;->()V +HPLandroid/view/WindowInfo;->()V +HPLandroid/view/WindowInfo;->clear()V +HPLandroid/view/WindowInfo;->obtain()Landroid/view/WindowInfo; +HPLandroid/view/WindowInfo;->obtain(Landroid/view/WindowInfo;)Landroid/view/WindowInfo; +HPLandroid/view/WindowInfo;->recycle()V +HPLandroid/view/WindowInsets;->consumeSystemWindowInsets(ZZZZ)Landroid/view/WindowInsets; +HPLandroid/view/WindowManager$LayoutParams;->isFullscreen()Z +HPLandroid/view/WindowManager$LayoutParams;->isSystemAlertWindowType(I)Z +HPLandroid/view/WindowManagerGlobal;->closeAll(Landroid/os/IBinder;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/view/WindowManagerGlobal;->closeAllExceptView(Landroid/os/IBinder;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/view/WindowManagerGlobal;->doRemoveView(Landroid/view/ViewRootImpl;)V +HPLandroid/view/WindowManagerGlobal;->doTrimForeground()V +HPLandroid/view/WindowManagerGlobal;->removeView(Landroid/view/View;Z)V +HPLandroid/view/WindowManagerGlobal;->removeViewLocked(IZ)V +HPLandroid/view/WindowManagerImpl;->removeView(Landroid/view/View;)V +HPLandroid/view/WindowManagerImpl;->removeViewImmediate(Landroid/view/View;)V +HPLandroid/view/WindowManagerInternal$AppTransitionListener;->()V +HPLandroid/view/WindowManagerInternal$AppTransitionListener;->onAppTransitionCancelledLocked(I)V +HPLandroid/view/WindowManagerInternal$AppTransitionListener;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLandroid/view/WindowManagerInternal$AppTransitionListener;->onAppTransitionPendingLocked()V +HPLandroid/view/WindowManagerInternal$AppTransitionListener;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I +HPLandroid/view/WindowManagerInternal$MagnificationCallbacks;->onMagnificationRegionChanged(Landroid/graphics/Region;)V +HPLandroid/view/WindowManagerInternal$MagnificationCallbacks;->onRectangleOnScreenRequested(IIII)V +HPLandroid/view/WindowManagerInternal$MagnificationCallbacks;->onRotationChanged(I)V +HPLandroid/view/WindowManagerInternal$MagnificationCallbacks;->onUserContextChanged()V +HPLandroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener;->onHardKeyboardStatusChange(Z)V +HPLandroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;->onWindowsForAccessibilityChanged(Ljava/util/List;)V +HPLandroid/view/WindowManagerInternal;->()V +HPLandroid/view/WindowManagerInternal;->addWindowToken(Landroid/os/IBinder;II)V +HPLandroid/view/WindowManagerInternal;->clearLastInputMethodWindowForTransition()V +HPLandroid/view/WindowManagerInternal;->computeWindowsForAccessibility()V +HPLandroid/view/WindowManagerInternal;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec; +HPLandroid/view/WindowManagerInternal;->getFocusedWindowToken()Landroid/os/IBinder; +HPLandroid/view/WindowManagerInternal;->getInputMethodWindowVisibleHeight()I +HPLandroid/view/WindowManagerInternal;->getMagnificationRegion(Landroid/graphics/Region;)V +HPLandroid/view/WindowManagerInternal;->getWindowFrame(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HPLandroid/view/WindowManagerInternal;->isDockedDividerResizing()Z +HPLandroid/view/WindowManagerInternal;->isHardKeyboardAvailable()Z +HPLandroid/view/WindowManagerInternal;->isKeyguardGoingAway()Z +HPLandroid/view/WindowManagerInternal;->isKeyguardLocked()Z +HPLandroid/view/WindowManagerInternal;->isKeyguardShowingAndNotOccluded()Z +HPLandroid/view/WindowManagerInternal;->isStackVisible(I)Z +HPLandroid/view/WindowManagerInternal;->registerAppTransitionListener(Landroid/view/WindowManagerInternal$AppTransitionListener;)V +HPLandroid/view/WindowManagerInternal;->removeWindowToken(Landroid/os/IBinder;ZI)V +HPLandroid/view/WindowManagerInternal;->requestTraversalFromDisplayManager()V +HPLandroid/view/WindowManagerInternal;->saveLastInputMethodWindowForTransition()V +HPLandroid/view/WindowManagerInternal;->setForceShowMagnifiableBounds(Z)V +HPLandroid/view/WindowManagerInternal;->setInputFilter(Landroid/view/IInputFilter;)V +HPLandroid/view/WindowManagerInternal;->setMagnificationCallbacks(Landroid/view/WindowManagerInternal$MagnificationCallbacks;)V +HPLandroid/view/WindowManagerInternal;->setMagnificationSpec(Landroid/view/MagnificationSpec;)V +HPLandroid/view/WindowManagerInternal;->setOnHardKeyboardStatusChangeListener(Landroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener;)V +HPLandroid/view/WindowManagerInternal;->setVr2dDisplayId(I)V +HPLandroid/view/WindowManagerInternal;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V +HPLandroid/view/WindowManagerInternal;->showGlobalActions()V +HPLandroid/view/WindowManagerInternal;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZLandroid/os/IBinder;)V +HPLandroid/view/WindowManagerInternal;->waitForAllWindowsDrawn(Ljava/lang/Runnable;J)V +HPLandroid/view/WindowManagerPolicy$PointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;I)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->createInputConsumer(Landroid/os/Looper;Ljava/lang/String;Landroid/view/InputEventReceiver$Factory;)Landroid/view/WindowManagerPolicy$InputConsumer; +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getCameraLensCoverState()I +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getDockedDividerInsetsLw()I +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState; +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getLidState()I +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getStackBounds(ILandroid/graphics/Rect;)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->getWindowManagerLock()Ljava/lang/Object; +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->lockDeviceNow()V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->notifyKeyguardTrustedChanged()V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->notifyShowingDreamChanged()V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->reboot(Z)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->rebootSafeMode(Z)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->reevaluateStatusBarVisibility()V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->registerPointerEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->screenTurningOff(Landroid/view/WindowManagerPolicy$ScreenOffListener;)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->shutdown(Z)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->switchInputMethod(Z)V +HPLandroid/view/WindowManagerPolicy$WindowManagerFuncs;->unregisterPointerEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V +HPLandroid/view/WindowManagerPolicy$WindowState;->canAcquireSleepToken()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->canAffectSystemUiFlags()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->computeFrameLw(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLandroid/view/WindowManagerPolicy$WindowState;->getAppToken()Landroid/view/IApplicationToken; +HPLandroid/view/WindowManagerPolicy$WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams; +HPLandroid/view/WindowManagerPolicy$WindowState;->getBaseType()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getContentFrameLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getDisplayFrameLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getDisplayId()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getFrameLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getGivenContentInsetsLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getGivenInsetsPendingLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->getGivenVisibleInsetsLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLandroid/view/WindowManagerPolicy$WindowState;->getOverscanFrameLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->getOwningPackage()Ljava/lang/String; +HPLandroid/view/WindowManagerPolicy$WindowState;->getOwningUid()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getRotationAnimationHint()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getShownPositionLw()Landroid/graphics/Point; +HPLandroid/view/WindowManagerPolicy$WindowState;->getStackId()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getSurfaceLayer()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getSystemUiVisibility()I +HPLandroid/view/WindowManagerPolicy$WindowState;->getVisibleFrameLw()Landroid/graphics/Rect; +HPLandroid/view/WindowManagerPolicy$WindowState;->hasAppShownWindows()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->hasDrawnLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->hideLw(Z)Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isAlive()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isAnimatingLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isDefaultDisplay()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isDimming()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isDisplayedLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isDrawnLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isGoneForLayoutLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isInMultiWindowMode()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isInputMethodWindow()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isVisibleLw()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->isVoiceInteraction()Z +HPLandroid/view/WindowManagerPolicy$WindowState;->showLw(Z)Z +HPLandroid/view/WindowManagerPolicy;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface; +HPLandroid/view/WindowManagerPolicy;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V +HPLandroid/view/WindowManagerPolicy;->adjustSystemUiVisibilityLw(I)I +HPLandroid/view/WindowManagerPolicy;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V +HPLandroid/view/WindowManagerPolicy;->allowAppAnimationsLw()Z +HPLandroid/view/WindowManagerPolicy;->applyPostLayoutPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLandroid/view/WindowManagerPolicy;->beginLayoutLw(ZIIII)V +HPLandroid/view/WindowManagerPolicy;->beginPostLayoutPolicyLw(II)V +HPLandroid/view/WindowManagerPolicy;->canBeHiddenByKeyguardLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLandroid/view/WindowManagerPolicy;->canDismissBootAnimation()Z +HPLandroid/view/WindowManagerPolicy;->canMagnifyWindow(I)Z +HPLandroid/view/WindowManagerPolicy;->checkAddPermission(Landroid/view/WindowManager$LayoutParams;[I)I +HPLandroid/view/WindowManagerPolicy;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z +HPLandroid/view/WindowManagerPolicy;->createHiddenByKeyguardExit(ZZ)Landroid/view/animation/Animation; +HPLandroid/view/WindowManagerPolicy;->createKeyguardWallpaperExit(Z)Landroid/view/animation/Animation; +HPLandroid/view/WindowManagerPolicy;->dismissKeyguardLw(Lcom/android/internal/policy/IKeyguardDismissCallback;)V +HPLandroid/view/WindowManagerPolicy;->dispatchUnhandledKey(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; +HPLandroid/view/WindowManagerPolicy;->dump(Ljava/lang/String;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLandroid/view/WindowManagerPolicy;->enableKeyguard(Z)V +HPLandroid/view/WindowManagerPolicy;->enableScreenAfterBoot()V +HPLandroid/view/WindowManagerPolicy;->exitKeyguardSecurely(Landroid/view/WindowManagerPolicy$OnKeyguardExitResult;)V +HPLandroid/view/WindowManagerPolicy;->finishLayoutLw()V +HPLandroid/view/WindowManagerPolicy;->finishPostLayoutPolicyLw()I +HPLandroid/view/WindowManagerPolicy;->finishedGoingToSleep(I)V +HPLandroid/view/WindowManagerPolicy;->finishedWakingUp()V +HPLandroid/view/WindowManagerPolicy;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLandroid/view/WindowManagerPolicy;->getConfigDisplayHeight(IIIII)I +HPLandroid/view/WindowManagerPolicy;->getConfigDisplayWidth(IIIII)I +HPLandroid/view/WindowManagerPolicy;->getContentRectLw(Landroid/graphics/Rect;)V +HPLandroid/view/WindowManagerPolicy;->getInputMethodWindowVisibleHeightLw()I +HPLandroid/view/WindowManagerPolicy;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLandroid/view/WindowManagerPolicy;->getMaxWallpaperLayer()I +HPLandroid/view/WindowManagerPolicy;->getNavBarPosition()I +HPLandroid/view/WindowManagerPolicy;->getNonDecorDisplayHeight(IIIII)I +HPLandroid/view/WindowManagerPolicy;->getNonDecorDisplayWidth(IIIII)I +HPLandroid/view/WindowManagerPolicy;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V +HPLandroid/view/WindowManagerPolicy;->getStableInsetsLw(IIILandroid/graphics/Rect;)V +HPLandroid/view/WindowManagerPolicy;->getSubWindowLayerFromTypeLw(I)I +HPLandroid/view/WindowManagerPolicy;->getSystemDecorLayerLw()I +HPLandroid/view/WindowManagerPolicy;->getUserRotationMode()I +HPLandroid/view/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I +HPLandroid/view/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I +HPLandroid/view/WindowManagerPolicy;->getWindowLayerLw(Landroid/view/WindowManagerPolicy$WindowState;)I +HPLandroid/view/WindowManagerPolicy;->hasNavigationBar()Z +HPLandroid/view/WindowManagerPolicy;->hideBootMessages()V +HPLandroid/view/WindowManagerPolicy;->inKeyguardRestrictedKeyInputMode()Z +HPLandroid/view/WindowManagerPolicy;->init(Landroid/content/Context;Landroid/view/IWindowManager;Landroid/view/WindowManagerPolicy$WindowManagerFuncs;)V +HPLandroid/view/WindowManagerPolicy;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J +HPLandroid/view/WindowManagerPolicy;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLandroid/view/WindowManagerPolicy;->interceptMotionBeforeQueueingNonInteractive(JI)I +HPLandroid/view/WindowManagerPolicy;->isDefaultOrientationForced()Z +HPLandroid/view/WindowManagerPolicy;->isDockSideAllowed(I)Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardDrawnLw()Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardLocked()Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardOccluded()Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardSecure(I)Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardShowingAndNotOccluded()Z +HPLandroid/view/WindowManagerPolicy;->isKeyguardTrustedLw()Z +HPLandroid/view/WindowManagerPolicy;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLandroid/view/WindowManagerPolicy;->isScreenOn()Z +HPLandroid/view/WindowManagerPolicy;->isShowingDreamLw()Z +HPLandroid/view/WindowManagerPolicy;->isTopLevelWindow(I)Z +HPLandroid/view/WindowManagerPolicy;->keepScreenOnStartedLw()V +HPLandroid/view/WindowManagerPolicy;->keepScreenOnStoppedLw()V +HPLandroid/view/WindowManagerPolicy;->layoutWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLandroid/view/WindowManagerPolicy;->lockNow(Landroid/os/Bundle;)V +HPLandroid/view/WindowManagerPolicy;->notifyCameraLensCoverSwitchChanged(JZ)V +HPLandroid/view/WindowManagerPolicy;->notifyLidSwitchChanged(JZ)V +HPLandroid/view/WindowManagerPolicy;->okToAnimate()Z +HPLandroid/view/WindowManagerPolicy;->onConfigurationChanged()V +HPLandroid/view/WindowManagerPolicy;->onKeyguardOccludedChangedLw(Z)V +HPLandroid/view/WindowManagerPolicy;->onSystemUiStarted()V +HPLandroid/view/WindowManagerPolicy;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z +HPLandroid/view/WindowManagerPolicy;->prepareAddWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I +HPLandroid/view/WindowManagerPolicy;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +HPLandroid/view/WindowManagerPolicy;->removeWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V +HPLandroid/view/WindowManagerPolicy;->rotationForOrientationLw(II)I +HPLandroid/view/WindowManagerPolicy;->rotationHasCompatibleMetricsLw(II)Z +HPLandroid/view/WindowManagerPolicy;->screenTurnedOff()V +HPLandroid/view/WindowManagerPolicy;->screenTurnedOn()V +HPLandroid/view/WindowManagerPolicy;->screenTurningOff(Landroid/view/WindowManagerPolicy$ScreenOffListener;)V +HPLandroid/view/WindowManagerPolicy;->screenTurningOn(Landroid/view/WindowManagerPolicy$ScreenOnListener;)V +HPLandroid/view/WindowManagerPolicy;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I +HPLandroid/view/WindowManagerPolicy;->selectRotationAnimationLw([I)V +HPLandroid/view/WindowManagerPolicy;->setCurrentOrientationLw(I)V +HPLandroid/view/WindowManagerPolicy;->setCurrentUserLw(I)V +HPLandroid/view/WindowManagerPolicy;->setDisplayOverscan(Landroid/view/Display;IIII)V +HPLandroid/view/WindowManagerPolicy;->setInitialDisplaySize(Landroid/view/Display;III)V +HPLandroid/view/WindowManagerPolicy;->setLastInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLandroid/view/WindowManagerPolicy;->setPipVisibilityLw(Z)V +HPLandroid/view/WindowManagerPolicy;->setRecentsVisibilityLw(Z)V +HPLandroid/view/WindowManagerPolicy;->setRotationLw(I)V +HPLandroid/view/WindowManagerPolicy;->setSafeMode(Z)V +HPLandroid/view/WindowManagerPolicy;->setSwitchingUser(Z)V +HPLandroid/view/WindowManagerPolicy;->setUserRotationMode(II)V +HPLandroid/view/WindowManagerPolicy;->shouldRotateSeamlessly(II)Z +HPLandroid/view/WindowManagerPolicy;->showBootMessage(Ljava/lang/CharSequence;Z)V +HPLandroid/view/WindowManagerPolicy;->showGlobalActions()V +HPLandroid/view/WindowManagerPolicy;->showRecentApps(Z)V +HPLandroid/view/WindowManagerPolicy;->startKeyguardExitAnimation(JJ)V +HPLandroid/view/WindowManagerPolicy;->startedGoingToSleep(I)V +HPLandroid/view/WindowManagerPolicy;->startedWakingUp()V +HPLandroid/view/WindowManagerPolicy;->systemBooted()V +HPLandroid/view/WindowManagerPolicy;->systemReady()V +HPLandroid/view/WindowManagerPolicy;->userActivity()V +HPLandroid/view/WindowManagerPolicy;->validateRotationAnimationLw(IIZ)Z +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1;->$m$0()V +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1;->(BZLjava/lang/Object;)V +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1;->run()V +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g;->$m$0()V +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g;->(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g;->run()V +HPLandroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;->()V +HPLandroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;->refreshNode(Landroid/view/accessibility/AccessibilityNodeInfo;Z)Z +HPLandroid/view/accessibility/AccessibilityCache;->(Landroid/view/accessibility/AccessibilityCache$AccessibilityNodeRefresher;)V +HPLandroid/view/accessibility/AccessibilityCache;->add(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/view/accessibility/AccessibilityCache;->addWindow(Landroid/view/accessibility/AccessibilityWindowInfo;)V +HPLandroid/view/accessibility/AccessibilityCache;->clear()V +HPLandroid/view/accessibility/AccessibilityCache;->clearNodesForWindowLocked(I)V +HPLandroid/view/accessibility/AccessibilityCache;->clearSubTreeLocked(IJ)V +HPLandroid/view/accessibility/AccessibilityCache;->clearSubTreeRecursiveLocked(Landroid/util/LongSparseArray;J)V +HPLandroid/view/accessibility/AccessibilityCache;->clearWindowCache()V +HPLandroid/view/accessibility/AccessibilityCache;->getNode(IJ)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityCache;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityCache;->getWindows()Ljava/util/List; +HPLandroid/view/accessibility/AccessibilityCache;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/view/accessibility/AccessibilityCache;->refreshCachedNodeLocked(IJ)V +HPLandroid/view/accessibility/AccessibilityCache;->setWindows(Ljava/util/List;)V +HPLandroid/view/accessibility/AccessibilityEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/accessibility/AccessibilityEvent; +HPLandroid/view/accessibility/AccessibilityEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/accessibility/AccessibilityEvent;->appendRecord(Landroid/view/accessibility/AccessibilityRecord;)V +HPLandroid/view/accessibility/AccessibilityEvent;->getAction()I +HPLandroid/view/accessibility/AccessibilityEvent;->getContentChangeTypes()I +HPLandroid/view/accessibility/AccessibilityEvent;->getEventTime()J +HPLandroid/view/accessibility/AccessibilityEvent;->getPackageName()Ljava/lang/CharSequence; +HPLandroid/view/accessibility/AccessibilityEvent;->init(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/view/accessibility/AccessibilityEvent;->initFromParcel(Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityEvent;->obtain(Landroid/view/accessibility/AccessibilityEvent;)Landroid/view/accessibility/AccessibilityEvent; +HPLandroid/view/accessibility/AccessibilityEvent;->readAccessibilityRecordFromParcel(Landroid/view/accessibility/AccessibilityRecord;Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityEvent;->setSealed(Z)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->()V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->addConnection(ILandroid/accessibilityservice/IAccessibilityServiceConnection;)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->checkFindAccessibilityNodeInfoResultIntegrity(Ljava/util/List;)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->clearCache()V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->clearResultLocked()V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->finalizeAndCacheAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;I)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->finalizeAndCacheAccessibilityNodeInfos(Ljava/util/List;I)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->findAccessibilityNodeInfoByAccessibilityId(IIJZILandroid/os/Bundle;)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->findFocus(IIJI)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getConnection(I)Landroid/accessibilityservice/IAccessibilityServiceConnection; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getFindAccessibilityNodeInfoResultAndClear(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getFindAccessibilityNodeInfosResultAndClear(I)Ljava/util/List; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getInstance()Landroid/view/accessibility/AccessibilityInteractionClient; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getInstanceForThread(J)Landroid/view/accessibility/AccessibilityInteractionClient; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getPerformAccessibilityActionResultAndClear(I)Z +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getRootInActiveWindow(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getSameProcessMessageAndClear()Landroid/os/Message; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getWindow(II)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->getWindows(I)Ljava/util/List; +HPLandroid/view/accessibility/AccessibilityInteractionClient;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->performAccessibilityAction(IIJILandroid/os/Bundle;)Z +HPLandroid/view/accessibility/AccessibilityInteractionClient;->setFindAccessibilityNodeInfoResult(Landroid/view/accessibility/AccessibilityNodeInfo;I)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->setPerformAccessibilityActionResult(ZI)V +HPLandroid/view/accessibility/AccessibilityInteractionClient;->waitForResultTimedLocked(I)Z +HPLandroid/view/accessibility/AccessibilityManager$1;->lambda$-android_view_accessibility_AccessibilityManager$1_8835(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;)V +HPLandroid/view/accessibility/AccessibilityManager$1;->notifyServicesStateChanged()V +HPLandroid/view/accessibility/AccessibilityManager;->-get1(Landroid/view/accessibility/AccessibilityManager;)Landroid/util/ArrayMap; +HPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityServicesStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;Landroid/os/Handler;)V +HPLandroid/view/accessibility/AccessibilityManager;->lambda$-android_view_accessibility_AccessibilityManager_38231(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Z)V +HPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityButtonVisibilityChanged(Z)V +HPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V +HPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z +HPLandroid/view/accessibility/AccessibilityManager;->removeHighTextContrastStateChangeListener(Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;)V +HPLandroid/view/accessibility/AccessibilityNodeInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getId()I +HPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->toString()Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->obtain(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->obtain(IIIIZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->obtain(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->(IFFF)V +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->clear()V +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->getCurrent()F +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->getMax()F +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->getMin()F +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->getType()I +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->obtain(IFFF)Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->obtain(Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;)Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;->recycle()V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->-wrap0(I)Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->-wrap1(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->canPerformRequestOverConnection(J)Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->enforceSealed()V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->equals(Ljava/lang/Object;)Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getActionSymbolicName(I)Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getBooleanProperty(I)Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getChild(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getChildCount()I +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getChildId(I)J +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getChildNodeIds()Landroid/util/LongArray; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getClassName()Ljava/lang/CharSequence; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getCollectionItemInfo()Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getConnectionId()I +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getContentDescription()Ljava/lang/CharSequence; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getNodeForAccessibilityId(J)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getPackageName()Ljava/lang/CharSequence; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getParent()Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getParentNodeId()J +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getText()Ljava/lang/CharSequence; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getViewIdResourceName()Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getWindow()Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->getWindowId()I +HPLandroid/view/accessibility/AccessibilityNodeInfo;->hashCode()I +HPLandroid/view/accessibility/AccessibilityNodeInfo;->initFromParcel(Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isAccessibilityFocused()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isCheckable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isChecked()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isClickable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isContextClickable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isEnabled()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isFocusable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isFocused()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isImportantForAccessibility()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isLongClickable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isPassword()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isScrollable()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isSelected()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->isVisibleToUser()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->obtain(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityNodeInfo;->performAction(ILandroid/os/Bundle;)Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->refresh()Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->refresh(Landroid/os/Bundle;Z)Z +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setCheckable(Z)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setChecked(Z)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setConnectionId(I)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setEditable(Z)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setInputType(I)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setRangeInfo(Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setScrollable(Z)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setSealed(Z)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setTraversalAfter(Landroid/view/View;)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->setTraversalAfter(Landroid/view/View;I)V +HPLandroid/view/accessibility/AccessibilityNodeInfo;->toString()Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityRecord;->getBooleanProperty(I)Z +HPLandroid/view/accessibility/AccessibilityRecord;->getFromIndex()I +HPLandroid/view/accessibility/AccessibilityRecord;->getItemCount()I +HPLandroid/view/accessibility/AccessibilityRecord;->getMaxScrollY()I +HPLandroid/view/accessibility/AccessibilityRecord;->getScrollX()I +HPLandroid/view/accessibility/AccessibilityRecord;->getScrollY()I +HPLandroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J +HPLandroid/view/accessibility/AccessibilityRecord;->getToIndex()I +HPLandroid/view/accessibility/AccessibilityRecord;->getWindowId()I +HPLandroid/view/accessibility/AccessibilityRecord;->init(Landroid/view/accessibility/AccessibilityRecord;)V +HPLandroid/view/accessibility/AccessibilityRecord;->isImportantForAccessibility()Z +HPLandroid/view/accessibility/AccessibilityRecord;->obtain()Landroid/view/accessibility/AccessibilityRecord; +HPLandroid/view/accessibility/AccessibilityRecord;->obtain(Landroid/view/accessibility/AccessibilityRecord;)Landroid/view/accessibility/AccessibilityRecord; +HPLandroid/view/accessibility/AccessibilityRecord;->recycle()V +HPLandroid/view/accessibility/AccessibilityRecord;->setConnectionId(I)V +HPLandroid/view/accessibility/AccessibilityRecord;->setFromIndex(I)V +HPLandroid/view/accessibility/AccessibilityRecord;->setSealed(Z)V +HPLandroid/view/accessibility/AccessibilityRecord;->setToIndex(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo$1;->()V +HPLandroid/view/accessibility/AccessibilityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityWindowInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->-wrap0(Landroid/view/accessibility/AccessibilityWindowInfo;Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->()V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->clear()V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getBooleanProperty(I)Z +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getBoundsInScreen(Landroid/graphics/Rect;)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getId()I +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getLayer()I +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getRoot()Landroid/view/accessibility/AccessibilityNodeInfo; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->getType()I +HPLandroid/view/accessibility/AccessibilityWindowInfo;->inPictureInPicture()Z +HPLandroid/view/accessibility/AccessibilityWindowInfo;->initFromParcel(Landroid/os/Parcel;)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->isActive()Z +HPLandroid/view/accessibility/AccessibilityWindowInfo;->isFocused()Z +HPLandroid/view/accessibility/AccessibilityWindowInfo;->isInPictureInPictureMode()Z +HPLandroid/view/accessibility/AccessibilityWindowInfo;->obtain()Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->obtain(Landroid/view/accessibility/AccessibilityWindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->recycle()V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setAccessibilityFocused(Z)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setActive(Z)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setAnchorId(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setBooleanProperty(IZ)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setBoundsInScreen(Landroid/graphics/Rect;)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setConnectionId(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setFocused(Z)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setId(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setLayer(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setPictureInPicture(Z)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setTitle(Ljava/lang/CharSequence;)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->setType(I)V +HPLandroid/view/accessibility/AccessibilityWindowInfo;->toString()Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->typeToString(I)Ljava/lang/String; +HPLandroid/view/accessibility/AccessibilityWindowInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/accessibility/CaptioningManager;->removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->findFocus(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->performAccessibilityAction(JILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJ)V +HPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityInteractionConnection; +HPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->()V +HPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V +HPLandroid/view/accessibility/IAccessibilityManager$Stub;->()V +HPLandroid/view/accessibility/IAccessibilityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->notifyServicesStateChanged()V +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setRelevantEventTypes(I)V +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setState(I)V +HPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManagerClient; +HPLandroid/view/animation/AccelerateInterpolator;->getInterpolation(F)F +HPLandroid/view/animation/Animation;->computeDurationHint()J +HPLandroid/view/animation/Animation;->fireAnimationRepeat()V +HPLandroid/view/animation/Animation;->getBackgroundColor()I +HPLandroid/view/animation/Animation;->getDetachWallpaper()Z +HPLandroid/view/animation/Animation;->getInterpolator()Landroid/view/animation/Interpolator; +HPLandroid/view/animation/Animation;->getRepeatCount()I +HPLandroid/view/animation/Animation;->getZAdjustment()I +HPLandroid/view/animation/Animation;->restrictDuration(J)V +HPLandroid/view/animation/Animation;->scaleCurrentDuration(F)V +HPLandroid/view/animation/Animation;->start()V +HPLandroid/view/animation/AnimationSet;->(Z)V +HPLandroid/view/animation/AnimationSet;->computeDurationHint()J +HPLandroid/view/animation/AnimationSet;->restrictDuration(J)V +HPLandroid/view/animation/AnimationSet;->scaleCurrentDuration(F)V +HPLandroid/view/animation/ClipRectAnimation;->(IIIIIIII)V +HPLandroid/view/animation/ClipRectAnimation;->willChangeTransformationMatrix()Z +HPLandroid/view/animation/OvershootInterpolator;->getInterpolation(F)F +HPLandroid/view/animation/RotateAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/view/animation/RotateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLandroid/view/animation/RotateAnimation;->initialize(IIII)V +HPLandroid/view/animation/RotateAnimation;->initializePivotPoint()V +HPLandroid/view/animation/ScaleAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/view/animation/ScaleAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLandroid/view/animation/ScaleAnimation;->initialize(IIII)V +HPLandroid/view/animation/ScaleAnimation;->initializePivotPoint()V +HPLandroid/view/animation/ScaleAnimation;->resolveScale(FIIII)F +HPLandroid/view/animation/Transformation;->getClipRect()Landroid/graphics/Rect; +HPLandroid/view/animation/Transformation;->hasClipRect()Z +HPLandroid/view/animation/Transformation;->setClipRect(IIII)V +HPLandroid/view/animation/Transformation;->setClipRect(Landroid/graphics/Rect;)V +HPLandroid/view/animation/TranslateAnimation;->(FFFF)V +HPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId; +HPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/autofill/AutofillId;->(Landroid/os/Parcel;)V +HPLandroid/view/autofill/AutofillId;->(Landroid/os/Parcel;Landroid/view/autofill/AutofillId;)V +HPLandroid/view/autofill/AutofillId;->equals(Ljava/lang/Object;)Z +HPLandroid/view/autofill/AutofillId;->hashCode()I +HPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String; +HPLandroid/view/autofill/AutofillManager$AutofillCallback;->()V +HPLandroid/view/autofill/AutofillManager;->cancel()V +HPLandroid/view/autofill/AutofillManager;->cancelSessionLocked()V +HPLandroid/view/autofill/AutofillManager;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +HPLandroid/view/autofill/AutofillManager;->onSaveInstanceState(Landroid/os/Bundle;)V +HPLandroid/view/autofill/AutofillManager;->registerCallback(Landroid/view/autofill/AutofillManager$AutofillCallback;)V +HPLandroid/view/autofill/AutofillManager;->updateSessionLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V +HPLandroid/view/autofill/AutofillManagerInternal;->()V +HPLandroid/view/autofill/AutofillManagerInternal;->onBackKeyPressed()V +HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillValue; +HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/autofill/AutofillValue;->(Landroid/os/Parcel;)V +HPLandroid/view/autofill/AutofillValue;->(Landroid/os/Parcel;Landroid/view/autofill/AutofillValue;)V +HPLandroid/view/autofill/AutofillValue;->equals(Ljava/lang/Object;)Z +HPLandroid/view/autofill/AutofillValue;->getTextValue()Ljava/lang/CharSequence; +HPLandroid/view/autofill/AutofillValue;->isText()Z +HPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +HPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->setHasCallback(IIZ)V +HPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HPLandroid/view/autofill/IAutoFillManager$Stub;->()V +HPLandroid/view/autofill/IAutoFillManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManagerClient; +HPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/View;Z)V +HPLandroid/view/inputmethod/BaseInputConnection;->closeConnection()V +HPLandroid/view/inputmethod/BaseInputConnection;->deleteSurroundingText(II)Z +HPLandroid/view/inputmethod/BaseInputConnection;->ensureDefaultComposingSpans()V +HPLandroid/view/inputmethod/BaseInputConnection;->getComposingSpanEnd(Landroid/text/Spannable;)I +HPLandroid/view/inputmethod/BaseInputConnection;->getComposingSpanStart(Landroid/text/Spannable;)I +HPLandroid/view/inputmethod/BaseInputConnection;->getCursorCapsMode(I)I +HPLandroid/view/inputmethod/BaseInputConnection;->getHandler()Landroid/os/Handler; +HPLandroid/view/inputmethod/BaseInputConnection;->getSelectedText(I)Ljava/lang/CharSequence; +HPLandroid/view/inputmethod/BaseInputConnection;->getTextAfterCursor(II)Ljava/lang/CharSequence; +HPLandroid/view/inputmethod/BaseInputConnection;->getTextBeforeCursor(II)Ljava/lang/CharSequence; +HPLandroid/view/inputmethod/BaseInputConnection;->replaceText(Ljava/lang/CharSequence;IZ)V +HPLandroid/view/inputmethod/BaseInputConnection;->reportFullscreenMode(Z)Z +HPLandroid/view/inputmethod/BaseInputConnection;->sendKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/view/inputmethod/BaseInputConnection;->setComposingRegion(II)Z +HPLandroid/view/inputmethod/BaseInputConnection;->setComposingSpans(Landroid/text/Spannable;)V +HPLandroid/view/inputmethod/BaseInputConnection;->setComposingSpans(Landroid/text/Spannable;II)V +HPLandroid/view/inputmethod/BaseInputConnection;->setComposingText(Ljava/lang/CharSequence;I)Z +HPLandroid/view/inputmethod/CompletionInfo$1;->()V +HPLandroid/view/inputmethod/ExtractedText$1;->()V +HPLandroid/view/inputmethod/ExtractedText;->()V +HPLandroid/view/inputmethod/InputBinding;->(Landroid/view/inputmethod/InputConnection;Landroid/os/IBinder;II)V +HPLandroid/view/inputmethod/InputBinding;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/inputmethod/InputConnectionInspector;->getMissingMethodFlags(Landroid/view/inputmethod/InputConnection;)I +HPLandroid/view/inputmethod/InputConnectionWrapper;->(Landroid/view/inputmethod/InputConnection;Z)V +HPLandroid/view/inputmethod/InputConnectionWrapper;->closeConnection()V +HPLandroid/view/inputmethod/InputConnectionWrapper;->getHandler()Landroid/os/Handler; +HPLandroid/view/inputmethod/InputConnectionWrapper;->getMissingMethodFlags()I +HPLandroid/view/inputmethod/InputConnectionWrapper;->reportFullscreenMode(Z)Z +HPLandroid/view/inputmethod/InputMethodInfo$1;->()V +HPLandroid/view/inputmethod/InputMethodInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputMethodInfo; +HPLandroid/view/inputmethod/InputMethodInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/inputmethod/InputMethodInfo;->(Landroid/content/Context;Landroid/content/pm/ResolveInfo;Ljava/util/List;)V +HPLandroid/view/inputmethod/InputMethodInfo;->(Landroid/os/Parcel;)V +HPLandroid/view/inputmethod/InputMethodInfo;->computeId(Landroid/content/pm/ResolveInfo;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodInfo;->equals(Ljava/lang/Object;)Z +HPLandroid/view/inputmethod/InputMethodInfo;->getComponent()Landroid/content/ComponentName; +HPLandroid/view/inputmethod/InputMethodInfo;->getId()Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodInfo;->getIsDefaultResourceId()I +HPLandroid/view/inputmethod/InputMethodInfo;->getPackageName()Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodInfo;->getServiceInfo()Landroid/content/pm/ServiceInfo; +HPLandroid/view/inputmethod/InputMethodInfo;->getSubtypeAt(I)Landroid/view/inputmethod/InputMethodSubtype; +HPLandroid/view/inputmethod/InputMethodInfo;->getSubtypeCount()I +HPLandroid/view/inputmethod/InputMethodInfo;->hashCode()I +HPLandroid/view/inputmethod/InputMethodInfo;->isAuxiliaryIme()Z +HPLandroid/view/inputmethod/InputMethodInfo;->isDefault(Landroid/content/Context;)Z +HPLandroid/view/inputmethod/InputMethodInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; +HPLandroid/view/inputmethod/InputMethodInfo;->supportsSwitchingToNextInputMethod()Z +HPLandroid/view/inputmethod/InputMethodInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->deactivate()V +HPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->isActive()Z +HPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->onUserAction()V +HPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->(Landroid/view/inputmethod/InputMethodManager;Landroid/view/InputChannel;Landroid/os/Looper;)V +HPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEventFinished(IZ)V +HPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->(Landroid/view/inputmethod/InputMethodManager;)V +HPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->(Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager$PendingEvent;)V +HPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->recycle()V +HPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->run()V +HPLandroid/view/inputmethod/InputMethodManager;->-wrap1(Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager$PendingEvent;)V +HPLandroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V +HPLandroid/view/inputmethod/InputMethodManager;->dispatchInputEvent(Landroid/view/InputEvent;Ljava/lang/Object;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;Landroid/os/Handler;)I +HPLandroid/view/inputmethod/InputMethodManager;->dispatchKeyEventFromInputMethod(Landroid/view/View;Landroid/view/KeyEvent;)V +HPLandroid/view/inputmethod/InputMethodManager;->finishInputLocked()V +HPLandroid/view/inputmethod/InputMethodManager;->finishedInputEvent(IZZ)V +HPLandroid/view/inputmethod/InputMethodManager;->flushPendingEventsLocked()V +HPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodList()Ljava/util/List; +HPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List; +HPLandroid/view/inputmethod/InputMethodManager;->getInputMethodList()Ljava/util/List; +HPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromInputMethod(Landroid/os/IBinder;I)V +HPLandroid/view/inputmethod/InputMethodManager;->hideStatusIcon(Landroid/os/IBinder;)V +HPLandroid/view/inputmethod/InputMethodManager;->invokeFinishedInputEventCallback(Landroid/view/inputmethod/InputMethodManager$PendingEvent;Z)V +HPLandroid/view/inputmethod/InputMethodManager;->isCursorAnchorInfoEnabled()Z +HPLandroid/view/inputmethod/InputMethodManager;->notifyUserAction()V +HPLandroid/view/inputmethod/InputMethodManager;->obtainPendingEventLocked(Landroid/view/InputEvent;Ljava/lang/Object;Ljava/lang/String;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;Landroid/os/Handler;)Landroid/view/inputmethod/InputMethodManager$PendingEvent; +HPLandroid/view/inputmethod/InputMethodManager;->recyclePendingEventLocked(Landroid/view/inputmethod/InputMethodManager$PendingEvent;)V +HPLandroid/view/inputmethod/InputMethodManager;->sendInputEventOnMainLooperLocked(Landroid/view/inputmethod/InputMethodManager$PendingEvent;)I +HPLandroid/view/inputmethod/InputMethodManager;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V +HPLandroid/view/inputmethod/InputMethodManager;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V +HPLandroid/view/inputmethod/InputMethodManager;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z +HPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;I)Z +HPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z +HPLandroid/view/inputmethod/InputMethodManager;->updateSelection(Landroid/view/View;IIII)V +HPLandroid/view/inputmethod/InputMethodManager;->windowDismissed(Landroid/os/IBinder;)V +HPLandroid/view/inputmethod/InputMethodManagerInternal;->hideCurrentInputMethod()V +HPLandroid/view/inputmethod/InputMethodManagerInternal;->setInteractive(Z)V +HPLandroid/view/inputmethod/InputMethodManagerInternal;->switchInputMethod(Z)V +HPLandroid/view/inputmethod/InputMethodSubtype$1;->newArray(I)[Landroid/view/inputmethod/InputMethodSubtype; +HPLandroid/view/inputmethod/InputMethodSubtype$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get0(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Z +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get1(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Z +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get2(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Z +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get3(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get4(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)I +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get5(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)I +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get6(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get7(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get8(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->-get9(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)I +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->()V +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->build()Landroid/view/inputmethod/InputMethodSubtype; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setIsAsciiCapable(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setIsAuxiliary(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setLanguageTag(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setOverridesImplicitlyEnabledSubtype(Z)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeExtraValue(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeIconResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeLocale(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeMode(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;->setSubtypeNameResId(I)Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; +HPLandroid/view/inputmethod/InputMethodSubtype;->(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)V +HPLandroid/view/inputmethod/InputMethodSubtype;->(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLandroid/view/inputmethod/InputMethodSubtype;->equals(Ljava/lang/Object;)Z +HPLandroid/view/inputmethod/InputMethodSubtype;->getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; +HPLandroid/view/inputmethod/InputMethodSubtype;->getExtraValue()Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype;->getIconResId()I +HPLandroid/view/inputmethod/InputMethodSubtype;->getLanguageTag()Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype;->getLocaleDisplayName(Ljava/util/Locale;Ljava/util/Locale;Landroid/icu/text/DisplayContext;)Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype;->getLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale; +HPLandroid/view/inputmethod/InputMethodSubtype;->getLocaleObject()Ljava/util/Locale; +HPLandroid/view/inputmethod/InputMethodSubtype;->getMode()Ljava/lang/String; +HPLandroid/view/inputmethod/InputMethodSubtype;->getNameResId()I +HPLandroid/view/inputmethod/InputMethodSubtype;->getSubtypeId()I +HPLandroid/view/inputmethod/InputMethodSubtype;->hasSubtypeId()Z +HPLandroid/view/inputmethod/InputMethodSubtype;->hashCode()I +HPLandroid/view/inputmethod/InputMethodSubtype;->hashCodeInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZZ)I +HPLandroid/view/inputmethod/InputMethodSubtype;->isAsciiCapable()Z +HPLandroid/view/inputmethod/InputMethodSubtype;->isAuxiliary()Z +HPLandroid/view/inputmethod/InputMethodSubtype;->overridesImplicitlyEnabledSubtype()Z +HPLandroid/view/inputmethod/InputMethodSubtype;->sort(Landroid/content/Context;ILandroid/view/inputmethod/InputMethodInfo;Ljava/util/List;)Ljava/util/List; +HPLandroid/view/inputmethod/InputMethodSubtype;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->(Landroid/os/Parcel;)V +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->(Ljava/util/List;)V +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->compress([B)[B +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->decompress([BI)[B +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->get(I)Landroid/view/inputmethod/InputMethodSubtype; +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->getCount()I +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->marshall([Landroid/view/inputmethod/InputMethodSubtype;)[B +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->unmarshall([B)[Landroid/view/inputmethod/InputMethodSubtype; +HPLandroid/view/inputmethod/InputMethodSubtypeArray;->writeToParcel(Landroid/os/Parcel;)V +HPLandroid/view/textservice/SentenceSuggestionsInfo$1;->()V +HPLandroid/view/textservice/SentenceSuggestionsInfo;->([Landroid/view/textservice/SuggestionsInfo;[I[I)V +HPLandroid/view/textservice/SentenceSuggestionsInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/textservice/SpellCheckerInfo$1;->()V +HPLandroid/view/textservice/SpellCheckerInfo;->(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V +HPLandroid/view/textservice/SpellCheckerInfo;->getComponent()Landroid/content/ComponentName; +HPLandroid/view/textservice/SpellCheckerInfo;->getId()Ljava/lang/String; +HPLandroid/view/textservice/SpellCheckerInfo;->getPackageName()Ljava/lang/String; +HPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype; +HPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeCount()I +HPLandroid/view/textservice/SpellCheckerInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;->onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V +HPLandroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;->onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V +HPLandroid/view/textservice/SpellCheckerSubtype$1;->()V +HPLandroid/view/textservice/SpellCheckerSubtype$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textservice/SpellCheckerSubtype; +HPLandroid/view/textservice/SpellCheckerSubtype$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/textservice/SpellCheckerSubtype;->(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HPLandroid/view/textservice/SpellCheckerSubtype;->(Landroid/os/Parcel;)V +HPLandroid/view/textservice/SpellCheckerSubtype;->getLocale()Ljava/lang/String; +HPLandroid/view/textservice/SpellCheckerSubtype;->getLocaleObject()Ljava/util/Locale; +HPLandroid/view/textservice/SpellCheckerSubtype;->hashCodeInternal(Ljava/lang/String;Ljava/lang/String;)I +HPLandroid/view/textservice/SpellCheckerSubtype;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/textservice/SuggestionsInfo$1;->()V +HPLandroid/view/textservice/SuggestionsInfo;->(I[Ljava/lang/String;)V +HPLandroid/view/textservice/SuggestionsInfo;->(I[Ljava/lang/String;II)V +HPLandroid/view/textservice/SuggestionsInfo;->getSequence()I +HPLandroid/view/textservice/SuggestionsInfo;->setCookieAndSequence(II)V +HPLandroid/view/textservice/SuggestionsInfo;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/view/textservice/TextInfo$1;->()V +HPLandroid/view/textservice/TextInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textservice/TextInfo; +HPLandroid/view/textservice/TextInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/view/textservice/TextInfo$1;->newArray(I)[Landroid/view/textservice/TextInfo; +HPLandroid/view/textservice/TextInfo$1;->newArray(I)[Ljava/lang/Object; +HPLandroid/view/textservice/TextInfo;->(Landroid/os/Parcel;)V +HPLandroid/view/textservice/TextInfo;->(Ljava/lang/CharSequence;IIII)V +HPLandroid/view/textservice/TextInfo;->getCookie()I +HPLandroid/view/textservice/TextInfo;->getSequence()I +HPLandroid/view/textservice/TextInfo;->getText()Ljava/lang/String; +HPLandroid/view/textservice/TextServicesManager;->()V +HPLandroid/view/textservice/TextServicesManager;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo; +HPLandroid/view/textservice/TextServicesManager;->getCurrentSpellCheckerSubtype(Z)Landroid/view/textservice/SpellCheckerSubtype; +HPLandroid/view/textservice/TextServicesManager;->getInstance()Landroid/view/textservice/TextServicesManager; +HPLandroid/view/textservice/TextServicesManager;->isSpellCheckerEnabled()Z +HPLandroid/webkit/GeolocationPermissions;->()V +HPLandroid/webkit/IWebViewUpdateService$Stub;->()V +HPLandroid/webkit/IWebViewUpdateService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/webkit/ServiceWorkerController;->()V +HPLandroid/webkit/ServiceWorkerController;->getServiceWorkerWebSettings()Landroid/webkit/ServiceWorkerWebSettings; +HPLandroid/webkit/ServiceWorkerController;->setServiceWorkerClient(Landroid/webkit/ServiceWorkerClient;)V +HPLandroid/webkit/UserPackage;->(Landroid/content/pm/UserInfo;Landroid/content/pm/PackageInfo;)V +HPLandroid/webkit/UserPackage;->getAllUsers(Landroid/content/Context;)Ljava/util/List; +HPLandroid/webkit/UserPackage;->getPackageInfo()Landroid/content/pm/PackageInfo; +HPLandroid/webkit/UserPackage;->getPackageInfosAllUsers(Landroid/content/Context;Ljava/lang/String;I)Ljava/util/List; +HPLandroid/webkit/UserPackage;->hasCorrectTargetSdkVersion(Landroid/content/pm/PackageInfo;)Z +HPLandroid/webkit/UserPackage;->isEnabledPackage()Z +HPLandroid/webkit/UserPackage;->isInstalledPackage()Z +HPLandroid/webkit/WebSettings$LayoutAlgorithm;->(Ljava/lang/String;I)V +HPLandroid/webkit/WebSettings$PluginState;->(Ljava/lang/String;I)V +HPLandroid/webkit/WebSettings;->()V +HPLandroid/webkit/WebSettings;->enableSmoothTransition()Z +HPLandroid/webkit/WebSettings;->getAcceptThirdPartyCookies()Z +HPLandroid/webkit/WebSettings;->getAllowContentAccess()Z +HPLandroid/webkit/WebSettings;->getAllowFileAccess()Z +HPLandroid/webkit/WebSettings;->getAllowFileAccessFromFileURLs()Z +HPLandroid/webkit/WebSettings;->getAllowUniversalAccessFromFileURLs()Z +HPLandroid/webkit/WebSettings;->getBlockNetworkImage()Z +HPLandroid/webkit/WebSettings;->getBlockNetworkLoads()Z +HPLandroid/webkit/WebSettings;->getBuiltInZoomControls()Z +HPLandroid/webkit/WebSettings;->getCacheMode()I +HPLandroid/webkit/WebSettings;->getCursiveFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getDatabaseEnabled()Z +HPLandroid/webkit/WebSettings;->getDatabasePath()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getDefaultFixedFontSize()I +HPLandroid/webkit/WebSettings;->getDefaultFontSize()I +HPLandroid/webkit/WebSettings;->getDefaultTextEncodingName()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getDefaultZoom()Landroid/webkit/WebSettings$ZoomDensity; +HPLandroid/webkit/WebSettings;->getDisabledActionModeMenuItems()I +HPLandroid/webkit/WebSettings;->getDisplayZoomControls()Z +HPLandroid/webkit/WebSettings;->getDomStorageEnabled()Z +HPLandroid/webkit/WebSettings;->getFantasyFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getFixedFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getJavaScriptCanOpenWindowsAutomatically()Z +HPLandroid/webkit/WebSettings;->getJavaScriptEnabled()Z +HPLandroid/webkit/WebSettings;->getLayoutAlgorithm()Landroid/webkit/WebSettings$LayoutAlgorithm; +HPLandroid/webkit/WebSettings;->getLightTouchEnabled()Z +HPLandroid/webkit/WebSettings;->getLoadWithOverviewMode()Z +HPLandroid/webkit/WebSettings;->getLoadsImagesAutomatically()Z +HPLandroid/webkit/WebSettings;->getMediaPlaybackRequiresUserGesture()Z +HPLandroid/webkit/WebSettings;->getMinimumFontSize()I +HPLandroid/webkit/WebSettings;->getMinimumLogicalFontSize()I +HPLandroid/webkit/WebSettings;->getMixedContentMode()I +HPLandroid/webkit/WebSettings;->getNavDump()Z +HPLandroid/webkit/WebSettings;->getOffscreenPreRaster()Z +HPLandroid/webkit/WebSettings;->getPluginState()Landroid/webkit/WebSettings$PluginState; +HPLandroid/webkit/WebSettings;->getPluginsEnabled()Z +HPLandroid/webkit/WebSettings;->getSafeBrowsingEnabled()Z +HPLandroid/webkit/WebSettings;->getSansSerifFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getSaveFormData()Z +HPLandroid/webkit/WebSettings;->getSavePassword()Z +HPLandroid/webkit/WebSettings;->getSerifFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getStandardFontFamily()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getTextZoom()I +HPLandroid/webkit/WebSettings;->getUseWebViewBackgroundForOverscrollBackground()Z +HPLandroid/webkit/WebSettings;->getUseWideViewPort()Z +HPLandroid/webkit/WebSettings;->getUserAgent()I +HPLandroid/webkit/WebSettings;->getUserAgentString()Ljava/lang/String; +HPLandroid/webkit/WebSettings;->getVideoOverlayForEmbeddedEncryptedVideoEnabled()Z +HPLandroid/webkit/WebSettings;->setAcceptThirdPartyCookies(Z)V +HPLandroid/webkit/WebSettings;->setAllowContentAccess(Z)V +HPLandroid/webkit/WebSettings;->setAllowFileAccess(Z)V +HPLandroid/webkit/WebSettings;->setAllowFileAccessFromFileURLs(Z)V +HPLandroid/webkit/WebSettings;->setAllowUniversalAccessFromFileURLs(Z)V +HPLandroid/webkit/WebSettings;->setAppCacheEnabled(Z)V +HPLandroid/webkit/WebSettings;->setAppCacheMaxSize(J)V +HPLandroid/webkit/WebSettings;->setAppCachePath(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setBlockNetworkImage(Z)V +HPLandroid/webkit/WebSettings;->setBlockNetworkLoads(Z)V +HPLandroid/webkit/WebSettings;->setBuiltInZoomControls(Z)V +HPLandroid/webkit/WebSettings;->setCacheMode(I)V +HPLandroid/webkit/WebSettings;->setCursiveFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setDatabaseEnabled(Z)V +HPLandroid/webkit/WebSettings;->setDatabasePath(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setDefaultFixedFontSize(I)V +HPLandroid/webkit/WebSettings;->setDefaultFontSize(I)V +HPLandroid/webkit/WebSettings;->setDefaultTextEncodingName(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setDefaultZoom(Landroid/webkit/WebSettings$ZoomDensity;)V +HPLandroid/webkit/WebSettings;->setDisabledActionModeMenuItems(I)V +HPLandroid/webkit/WebSettings;->setDisplayZoomControls(Z)V +HPLandroid/webkit/WebSettings;->setDomStorageEnabled(Z)V +HPLandroid/webkit/WebSettings;->setEnableSmoothTransition(Z)V +HPLandroid/webkit/WebSettings;->setFantasyFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setFixedFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setGeolocationDatabasePath(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setGeolocationEnabled(Z)V +HPLandroid/webkit/WebSettings;->setJavaScriptCanOpenWindowsAutomatically(Z)V +HPLandroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V +HPLandroid/webkit/WebSettings;->setLayoutAlgorithm(Landroid/webkit/WebSettings$LayoutAlgorithm;)V +HPLandroid/webkit/WebSettings;->setLightTouchEnabled(Z)V +HPLandroid/webkit/WebSettings;->setLoadWithOverviewMode(Z)V +HPLandroid/webkit/WebSettings;->setLoadsImagesAutomatically(Z)V +HPLandroid/webkit/WebSettings;->setMediaPlaybackRequiresUserGesture(Z)V +HPLandroid/webkit/WebSettings;->setMinimumFontSize(I)V +HPLandroid/webkit/WebSettings;->setMinimumLogicalFontSize(I)V +HPLandroid/webkit/WebSettings;->setMixedContentMode(I)V +HPLandroid/webkit/WebSettings;->setNavDump(Z)V +HPLandroid/webkit/WebSettings;->setNeedInitialFocus(Z)V +HPLandroid/webkit/WebSettings;->setOffscreenPreRaster(Z)V +HPLandroid/webkit/WebSettings;->setPluginState(Landroid/webkit/WebSettings$PluginState;)V +HPLandroid/webkit/WebSettings;->setPluginsEnabled(Z)V +HPLandroid/webkit/WebSettings;->setRenderPriority(Landroid/webkit/WebSettings$RenderPriority;)V +HPLandroid/webkit/WebSettings;->setSafeBrowsingEnabled(Z)V +HPLandroid/webkit/WebSettings;->setSansSerifFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setSaveFormData(Z)V +HPLandroid/webkit/WebSettings;->setSavePassword(Z)V +HPLandroid/webkit/WebSettings;->setSerifFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setStandardFontFamily(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setSupportMultipleWindows(Z)V +HPLandroid/webkit/WebSettings;->setSupportZoom(Z)V +HPLandroid/webkit/WebSettings;->setTextZoom(I)V +HPLandroid/webkit/WebSettings;->setUseWebViewBackgroundForOverscrollBackground(Z)V +HPLandroid/webkit/WebSettings;->setUseWideViewPort(Z)V +HPLandroid/webkit/WebSettings;->setUserAgent(I)V +HPLandroid/webkit/WebSettings;->setUserAgentString(Ljava/lang/String;)V +HPLandroid/webkit/WebSettings;->setVideoOverlayForEmbeddedEncryptedVideoEnabled(Z)V +HPLandroid/webkit/WebSettings;->supportMultipleWindows()Z +HPLandroid/webkit/WebSettings;->supportZoom()Z +HPLandroid/webkit/WebStorage;->()V +HPLandroid/webkit/WebView$HitTestResult;->()V +HPLandroid/webkit/WebView$PrivateAccess;->(Landroid/webkit/WebView;)V +HPLandroid/webkit/WebView$PrivateAccess;->super_getScrollBarStyle()I +HPLandroid/webkit/WebView$PrivateAccess;->super_setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/webkit/WebView;->-wrap14(Landroid/webkit/WebView;)I +HPLandroid/webkit/WebView;->-wrap18(Landroid/webkit/WebView;Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/webkit/WebView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/webkit/WebView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/webkit/WebView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/webkit/WebView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILjava/util/Map;Z)V +HPLandroid/webkit/WebView;->checkThread()V +HPLandroid/webkit/WebView;->ensureProviderCreated()V +HPLandroid/webkit/WebView;->getFactory()Landroid/webkit/WebViewFactoryProvider; +HPLandroid/webkit/WebView;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/webkit/WebView;->setOverScrollMode(I)V +HPLandroid/webkit/WebViewClient;->()V +HPLandroid/webkit/WebViewDelegate$1;->(Landroid/webkit/WebViewDelegate;Landroid/webkit/WebViewDelegate$OnTraceEnabledChangeListener;)V +HPLandroid/webkit/WebViewDelegate$OnTraceEnabledChangeListener;->onTraceEnabledChange(Z)V +HPLandroid/webkit/WebViewDelegate;->addWebViewAssetPath(Landroid/content/Context;)V +HPLandroid/webkit/WebViewDelegate;->getPackageId(Landroid/content/res/Resources;Ljava/lang/String;)I +HPLandroid/webkit/WebViewDelegate;->isTraceTagEnabled()Z +HPLandroid/webkit/WebViewDelegate;->setOnTraceEnabledChangeListener(Landroid/webkit/WebViewDelegate$OnTraceEnabledChangeListener;)V +HPLandroid/webkit/WebViewFactory;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)I +HPLandroid/webkit/WebViewFactory;->prepareWebViewInSystemServer([Ljava/lang/String;)I +HPLandroid/webkit/WebViewLibraryLoader$1;->(Ljava/lang/String;)V +HPLandroid/webkit/WebViewLibraryLoader;->createRelroFile(Z[Ljava/lang/String;)V +HPLandroid/webkit/WebViewLibraryLoader;->getLoadFromApkPath(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/webkit/WebViewLibraryLoader;->getWebViewNativeLibraryPaths(Landroid/content/pm/PackageInfo;)[Ljava/lang/String; +HPLandroid/webkit/WebViewLibraryLoader;->setWebViewZygoteVmSize(J)V +HPLandroid/webkit/WebViewLibraryLoader;->updateWebViewZygoteVmSize(Landroid/content/pm/PackageInfo;)[Ljava/lang/String; +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeHorizontalScrollOffset()I +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeHorizontalScrollRange()I +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeScroll()V +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeVerticalScrollExtent()I +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeVerticalScrollOffset()I +HPLandroid/webkit/WebViewProvider$ScrollDelegate;->computeVerticalScrollRange()I +HPLandroid/webkit/WebViewProvider$ViewDelegate;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->findFocus(Landroid/view/View;)Landroid/view/View; +HPLandroid/webkit/WebViewProvider$ViewDelegate;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider; +HPLandroid/webkit/WebViewProvider$ViewDelegate;->getHandler(Landroid/os/Handler;)Landroid/os/Handler; +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onActivityResult(IILandroid/content/Intent;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onAttachedToWindow()V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onDetachedFromWindow()V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onDragEvent(Landroid/view/DragEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onDraw(Landroid/graphics/Canvas;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onFinishTemporaryDetach()V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onFocusChanged(ZILandroid/graphics/Rect;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onGenericMotionEvent(Landroid/view/MotionEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onHoverEvent(Landroid/view/MotionEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onKeyMultiple(IILandroid/view/KeyEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onMeasure(II)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onOverScrolled(IIZZ)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onProvideVirtualStructure(Landroid/view/ViewStructure;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onScrollChanged(IIII)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onSizeChanged(IIII)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onStartTemporaryDetach()V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onTrackballEvent(Landroid/view/MotionEvent;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onVisibilityChanged(Landroid/view/View;I)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onWindowFocusChanged(Z)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->onWindowVisibilityChanged(I)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->performAccessibilityAction(ILandroid/os/Bundle;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->performLongClick()Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->preDispatchDraw(Landroid/graphics/Canvas;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->requestFocus(ILandroid/graphics/Rect;)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setBackgroundColor(I)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setFrame(IIII)Z +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setLayerType(ILandroid/graphics/Paint;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setOverScrollMode(I)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->setScrollBarStyle(I)V +HPLandroid/webkit/WebViewProvider$ViewDelegate;->shouldDelayChildPressedState()Z +HPLandroid/webkit/WebViewProvider;->addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->canGoBack()Z +HPLandroid/webkit/WebViewProvider;->canGoBackOrForward(I)Z +HPLandroid/webkit/WebViewProvider;->canGoForward()Z +HPLandroid/webkit/WebViewProvider;->canZoomIn()Z +HPLandroid/webkit/WebViewProvider;->canZoomOut()Z +HPLandroid/webkit/WebViewProvider;->capturePicture()Landroid/graphics/Picture; +HPLandroid/webkit/WebViewProvider;->clearCache(Z)V +HPLandroid/webkit/WebViewProvider;->clearFormData()V +HPLandroid/webkit/WebViewProvider;->clearHistory()V +HPLandroid/webkit/WebViewProvider;->clearMatches()V +HPLandroid/webkit/WebViewProvider;->clearSslPreferences()V +HPLandroid/webkit/WebViewProvider;->clearView()V +HPLandroid/webkit/WebViewProvider;->copyBackForwardList()Landroid/webkit/WebBackForwardList; +HPLandroid/webkit/WebViewProvider;->createPrintDocumentAdapter(Ljava/lang/String;)Landroid/print/PrintDocumentAdapter; +HPLandroid/webkit/WebViewProvider;->createWebMessageChannel()[Landroid/webkit/WebMessagePort; +HPLandroid/webkit/WebViewProvider;->destroy()V +HPLandroid/webkit/WebViewProvider;->documentHasImages(Landroid/os/Message;)V +HPLandroid/webkit/WebViewProvider;->dumpViewHierarchyWithProperties(Ljava/io/BufferedWriter;I)V +HPLandroid/webkit/WebViewProvider;->evaluateJavaScript(Ljava/lang/String;Landroid/webkit/ValueCallback;)V +HPLandroid/webkit/WebViewProvider;->findAll(Ljava/lang/String;)I +HPLandroid/webkit/WebViewProvider;->findAllAsync(Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->findHierarchyView(Ljava/lang/String;I)Landroid/view/View; +HPLandroid/webkit/WebViewProvider;->findNext(Z)V +HPLandroid/webkit/WebViewProvider;->flingScroll(II)V +HPLandroid/webkit/WebViewProvider;->freeMemory()V +HPLandroid/webkit/WebViewProvider;->getCertificate()Landroid/net/http/SslCertificate; +HPLandroid/webkit/WebViewProvider;->getContentHeight()I +HPLandroid/webkit/WebViewProvider;->getContentWidth()I +HPLandroid/webkit/WebViewProvider;->getFavicon()Landroid/graphics/Bitmap; +HPLandroid/webkit/WebViewProvider;->getHitTestResult()Landroid/webkit/WebView$HitTestResult; +HPLandroid/webkit/WebViewProvider;->getHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HPLandroid/webkit/WebViewProvider;->getOriginalUrl()Ljava/lang/String; +HPLandroid/webkit/WebViewProvider;->getProgress()I +HPLandroid/webkit/WebViewProvider;->getRendererPriorityWaivedWhenNotVisible()Z +HPLandroid/webkit/WebViewProvider;->getRendererRequestedPriority()I +HPLandroid/webkit/WebViewProvider;->getScale()F +HPLandroid/webkit/WebViewProvider;->getScrollDelegate()Landroid/webkit/WebViewProvider$ScrollDelegate; +HPLandroid/webkit/WebViewProvider;->getSettings()Landroid/webkit/WebSettings; +HPLandroid/webkit/WebViewProvider;->getTitle()Ljava/lang/String; +HPLandroid/webkit/WebViewProvider;->getTouchIconUrl()Ljava/lang/String; +HPLandroid/webkit/WebViewProvider;->getUrl()Ljava/lang/String; +HPLandroid/webkit/WebViewProvider;->getViewDelegate()Landroid/webkit/WebViewProvider$ViewDelegate; +HPLandroid/webkit/WebViewProvider;->getVisibleTitleHeight()I +HPLandroid/webkit/WebViewProvider;->getWebChromeClient()Landroid/webkit/WebChromeClient; +HPLandroid/webkit/WebViewProvider;->getWebViewClient()Landroid/webkit/WebViewClient; +HPLandroid/webkit/WebViewProvider;->getZoomControls()Landroid/view/View; +HPLandroid/webkit/WebViewProvider;->goBack()V +HPLandroid/webkit/WebViewProvider;->goBackOrForward(I)V +HPLandroid/webkit/WebViewProvider;->goForward()V +HPLandroid/webkit/WebViewProvider;->init(Ljava/util/Map;Z)V +HPLandroid/webkit/WebViewProvider;->insertVisualStateCallback(JLandroid/webkit/WebView$VisualStateCallback;)V +HPLandroid/webkit/WebViewProvider;->invokeZoomPicker()V +HPLandroid/webkit/WebViewProvider;->isPaused()Z +HPLandroid/webkit/WebViewProvider;->isPrivateBrowsingEnabled()Z +HPLandroid/webkit/WebViewProvider;->loadData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->loadDataWithBaseURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->loadUrl(Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->loadUrl(Ljava/lang/String;Ljava/util/Map;)V +HPLandroid/webkit/WebViewProvider;->notifyFindDialogDismissed()V +HPLandroid/webkit/WebViewProvider;->onPause()V +HPLandroid/webkit/WebViewProvider;->onResume()V +HPLandroid/webkit/WebViewProvider;->overlayHorizontalScrollbar()Z +HPLandroid/webkit/WebViewProvider;->overlayVerticalScrollbar()Z +HPLandroid/webkit/WebViewProvider;->pageDown(Z)Z +HPLandroid/webkit/WebViewProvider;->pageUp(Z)Z +HPLandroid/webkit/WebViewProvider;->pauseTimers()V +HPLandroid/webkit/WebViewProvider;->postMessageToMainFrame(Landroid/webkit/WebMessage;Landroid/net/Uri;)V +HPLandroid/webkit/WebViewProvider;->postUrl(Ljava/lang/String;[B)V +HPLandroid/webkit/WebViewProvider;->reload()V +HPLandroid/webkit/WebViewProvider;->removeJavascriptInterface(Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->requestFocusNodeHref(Landroid/os/Message;)V +HPLandroid/webkit/WebViewProvider;->requestImageRef(Landroid/os/Message;)V +HPLandroid/webkit/WebViewProvider;->restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z +HPLandroid/webkit/WebViewProvider;->restoreState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList; +HPLandroid/webkit/WebViewProvider;->resumeTimers()V +HPLandroid/webkit/WebViewProvider;->savePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->savePicture(Landroid/os/Bundle;Ljava/io/File;)Z +HPLandroid/webkit/WebViewProvider;->saveState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList; +HPLandroid/webkit/WebViewProvider;->saveWebArchive(Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->saveWebArchive(Ljava/lang/String;ZLandroid/webkit/ValueCallback;)V +HPLandroid/webkit/WebViewProvider;->setCertificate(Landroid/net/http/SslCertificate;)V +HPLandroid/webkit/WebViewProvider;->setDownloadListener(Landroid/webkit/DownloadListener;)V +HPLandroid/webkit/WebViewProvider;->setFindListener(Landroid/webkit/WebView$FindListener;)V +HPLandroid/webkit/WebViewProvider;->setHorizontalScrollbarOverlay(Z)V +HPLandroid/webkit/WebViewProvider;->setHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLandroid/webkit/WebViewProvider;->setInitialScale(I)V +HPLandroid/webkit/WebViewProvider;->setMapTrackballToArrowKeys(Z)V +HPLandroid/webkit/WebViewProvider;->setNetworkAvailable(Z)V +HPLandroid/webkit/WebViewProvider;->setPictureListener(Landroid/webkit/WebView$PictureListener;)V +HPLandroid/webkit/WebViewProvider;->setRendererPriorityPolicy(IZ)V +HPLandroid/webkit/WebViewProvider;->setVerticalScrollbarOverlay(Z)V +HPLandroid/webkit/WebViewProvider;->setWebChromeClient(Landroid/webkit/WebChromeClient;)V +HPLandroid/webkit/WebViewProvider;->setWebViewClient(Landroid/webkit/WebViewClient;)V +HPLandroid/webkit/WebViewProvider;->showFindDialog(Ljava/lang/String;Z)Z +HPLandroid/webkit/WebViewProvider;->stopLoading()V +HPLandroid/webkit/WebViewProvider;->zoomBy(F)Z +HPLandroid/webkit/WebViewProvider;->zoomIn()Z +HPLandroid/webkit/WebViewProvider;->zoomOut()Z +HPLandroid/webkit/WebViewProviderInfo$1;->()V +HPLandroid/webkit/WebViewProviderInfo;->(Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)V +HPLandroid/webkit/WebViewProviderResponse;->(Landroid/content/pm/PackageInfo;I)V +HPLandroid/webkit/WebViewProviderResponse;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/webkit/WebViewZygote;->connectToZygoteIfNeededLocked()V +HPLandroid/webkit/WebViewZygote;->getPackageName()Ljava/lang/String; +HPLandroid/webkit/WebViewZygote;->getProcess()Landroid/os/ZygoteProcess; +HPLandroid/webkit/WebViewZygote;->getServiceNameLocked()Ljava/lang/String; +HPLandroid/webkit/WebViewZygote;->isMultiprocessEnabled()Z +HPLandroid/webkit/WebViewZygote;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;Ljava/lang/String;)V +HPLandroid/webkit/WebViewZygote;->setMultiprocessEnabled(Z)V +HPLandroid/webkit/WebViewZygote;->waitForServiceStartAndConnect()V +HPLandroid/widget/-$Lambda$4jHC8VaIirQBkUjvvJtjqGMnk38;->$m$0()V +HPLandroid/widget/-$Lambda$4jHC8VaIirQBkUjvvJtjqGMnk38;->(BLjava/lang/Object;)V +HPLandroid/widget/-$Lambda$4jHC8VaIirQBkUjvvJtjqGMnk38;->run()V +HPLandroid/widget/AbsListView$ListItemAccessibilityDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/AbsListView$RecycleBin;->clearScrap(Ljava/util/ArrayList;)V +HPLandroid/widget/AbsListView$RecycleBin;->removeDetachedView(Landroid/view/View;Z)V +HPLandroid/widget/AbsListView$SavedState;->(Landroid/os/Parcelable;)V +HPLandroid/widget/AbsListView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/AbsListView$SelectionBoundsAdjuster;->adjustListItemSelectionBounds(Landroid/graphics/Rect;)V +HPLandroid/widget/AbsListView;->-wrap6(Landroid/widget/AbsListView;Landroid/view/View;Z)V +HPLandroid/widget/AbsListView;->canScrollDown()Z +HPLandroid/widget/AbsListView;->canScrollUp()Z +HPLandroid/widget/AbsListView;->checkInputConnectionProxy(Landroid/view/View;)Z +HPLandroid/widget/AbsListView;->clearScrollingCache()V +HPLandroid/widget/AbsListView;->findViewByAccessibilityIdTraversal(I)Landroid/view/View; +HPLandroid/widget/AbsListView;->getChoiceMode()I +HPLandroid/widget/AbsListView;->getFocusedRect(Landroid/graphics/Rect;)V +HPLandroid/widget/AbsListView;->getSelectedView()Landroid/view/View; +HPLandroid/widget/AbsListView;->getSelectionModeForAccessibility()I +HPLandroid/widget/AbsListView;->initOrResetVelocityTracker()V +HPLandroid/widget/AbsListView;->initVelocityTrackerIfNotExists()V +HPLandroid/widget/AbsListView;->isItemChecked(I)Z +HPLandroid/widget/AbsListView;->isItemClickable(Landroid/view/View;)Z +HPLandroid/widget/AbsListView;->onCancelPendingInputEvents()V +HPLandroid/widget/AbsListView;->onDetachedFromWindow()V +HPLandroid/widget/AbsListView;->onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;ILandroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/AbsListView;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/AbsListView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/AbsListView;->onSaveInstanceState()Landroid/os/Parcelable; +HPLandroid/widget/AbsListView;->reconcileSelectedPosition()I +HPLandroid/widget/AbsListView;->recycleVelocityTracker()V +HPLandroid/widget/AbsListView;->reportScrollStateChange(I)V +HPLandroid/widget/AbsListView;->setItemChecked(IZ)V +HPLandroid/widget/AbsListView;->startScrollIfNeeded(IILandroid/view/MotionEvent;)Z +HPLandroid/widget/AbsSeekBar;->canUserSetProgress()Z +HPLandroid/widget/AbsSeekBar;->drawThumb(Landroid/graphics/Canvas;)V +HPLandroid/widget/AbsSeekBar;->drawTickMarks(Landroid/graphics/Canvas;)V +HPLandroid/widget/AbsSeekBar;->drawTrack(Landroid/graphics/Canvas;)V +HPLandroid/widget/AbsSeekBar;->onDraw(Landroid/graphics/Canvas;)V +HPLandroid/widget/AbsSeekBar;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/AbsSeekBar;->onSizeChanged(IIII)V +HPLandroid/widget/AbsSeekBar;->updateThumbAndTrackPos(II)V +HPLandroid/widget/AbsoluteLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/widget/ActionMenuPresenter$2;->onViewAttachedToWindow(Landroid/view/View;)V +HPLandroid/widget/ActionMenuPresenter$2;->onViewDetachedFromWindow(Landroid/view/View;)V +HPLandroid/widget/ActionMenuPresenter$SavedState$1;->()V +HPLandroid/widget/ActionMenuPresenter$SavedState;->()V +HPLandroid/widget/ActionMenuPresenter;->-get1(Landroid/widget/ActionMenuPresenter;)Landroid/view/ViewTreeObserver$OnPreDrawListener; +HPLandroid/widget/ActionMenuPresenter;->-get3(Landroid/widget/ActionMenuPresenter;)Lcom/android/internal/view/menu/MenuView; +HPLandroid/widget/ActionMenuPresenter;->-get6(Landroid/widget/ActionMenuPresenter;)Landroid/util/SparseArray; +HPLandroid/widget/ActionMenuPresenter;->-get8(Landroid/widget/ActionMenuPresenter;)Landroid/util/SparseArray; +HPLandroid/widget/ActionMenuPresenter;->dismissPopupMenus()Z +HPLandroid/widget/ActionMenuPresenter;->filterLeftoverView(Landroid/view/ViewGroup;I)Z +HPLandroid/widget/ActionMenuPresenter;->hideOverflowMenu()Z +HPLandroid/widget/ActionMenuPresenter;->hideSubMenus()Z +HPLandroid/widget/ActionMenuPresenter;->isOverflowMenuShowing()Z +HPLandroid/widget/ActionMenuPresenter;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V +HPLandroid/widget/ActionMenuPresenter;->onSaveInstanceState()Landroid/os/Parcelable; +HPLandroid/widget/ActionMenuView$ActionMenuPresenterCallback;->(Landroid/widget/ActionMenuView;)V +HPLandroid/widget/ActionMenuView$ActionMenuPresenterCallback;->(Landroid/widget/ActionMenuView;Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;)V +HPLandroid/widget/ActionMenuView;->dismissPopupMenus()V +HPLandroid/widget/ActionMenuView;->isOverflowMenuShowing()Z +HPLandroid/widget/ActionMenuView;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/widget/ActionMenuView;->onDetachedFromWindow()V +HPLandroid/widget/Adapter;->getAutofillOptions()[Ljava/lang/CharSequence; +HPLandroid/widget/AdapterView$OnItemLongClickListener;->onItemLongClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)Z +HPLandroid/widget/AdapterView;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z +HPLandroid/widget/AdapterView;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V +HPLandroid/widget/AdapterView;->getPositionForView(Landroid/view/View;)I +HPLandroid/widget/AdapterView;->getSelectedItemId()J +HPLandroid/widget/AdapterView;->getSelectedItemPosition()I +HPLandroid/widget/AdapterView;->isScrollableForAccessibility()Z +HPLandroid/widget/AdapterView;->onDetachedFromWindow()V +HPLandroid/widget/AdapterView;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/widget/AdapterView;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/AdapterView;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V +HPLandroid/widget/AdapterView;->onRequestSendAccessibilityEventInternal(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HPLandroid/widget/ArrayAdapter;->(Landroid/content/Context;I)V +HPLandroid/widget/ArrayAdapter;->(Landroid/content/Context;IILjava/util/List;)V +HPLandroid/widget/ArrayAdapter;->(Landroid/content/Context;IILjava/util/List;Z)V +HPLandroid/widget/ArrayAdapter;->clear()V +HPLandroid/widget/ArrayAdapter;->notifyDataSetChanged()V +HPLandroid/widget/AutoCompleteTextView$PopupDataSetObserver$1;->(Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;)V +HPLandroid/widget/AutoCompleteTextView$PopupDataSetObserver;->(Landroid/widget/AutoCompleteTextView;)V +HPLandroid/widget/AutoCompleteTextView$PopupDataSetObserver;->(Landroid/widget/AutoCompleteTextView;Landroid/widget/AutoCompleteTextView$PopupDataSetObserver;)V +HPLandroid/widget/AutoCompleteTextView;->getAdapter()Landroid/widget/ListAdapter; +HPLandroid/widget/AutoCompleteTextView;->onAttachedToWindow()V +HPLandroid/widget/AutoCompleteTextView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HPLandroid/widget/AutoCompleteTextView;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/AutoCompleteTextView;->onKeyPreIme(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/AutoCompleteTextView;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/AutoCompleteTextView;->onWindowFocusChanged(Z)V +HPLandroid/widget/AutoCompleteTextView;->setAdapter(Landroid/widget/ListAdapter;)V +HPLandroid/widget/AutoCompleteTextView;->setDropDownAnchor(I)V +HPLandroid/widget/AutoCompleteTextView;->setFrame(IIII)Z +HPLandroid/widget/AutoCompleteTextView;->setThreshold(I)V +HPLandroid/widget/BaseAdapter;->getAutofillOptions()[Ljava/lang/CharSequence; +HPLandroid/widget/BaseAdapter;->isEmpty()Z +HPLandroid/widget/BaseAdapter;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HPLandroid/widget/Chronometer$1;->(Landroid/widget/Chronometer;)V +HPLandroid/widget/Chronometer;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/Chronometer;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/widget/Chronometer;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/widget/Chronometer;->init()V +HPLandroid/widget/Chronometer;->onDetachedFromWindow()V +HPLandroid/widget/Chronometer;->onVisibilityChanged(Landroid/view/View;I)V +HPLandroid/widget/Chronometer;->onWindowVisibilityChanged(I)V +HPLandroid/widget/Chronometer;->setCountDown(Z)V +HPLandroid/widget/Chronometer;->setFormat(Ljava/lang/String;)V +HPLandroid/widget/Chronometer;->stop()V +HPLandroid/widget/Chronometer;->updateRunning()V +HPLandroid/widget/Chronometer;->updateText(J)V +HPLandroid/widget/CompoundButton$SavedState$1;->()V +HPLandroid/widget/CompoundButton$SavedState;->(Landroid/os/Parcelable;)V +HPLandroid/widget/CompoundButton$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/CompoundButton;->getButtonDrawable()Landroid/graphics/drawable/Drawable; +HPLandroid/widget/CompoundButton;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/CompoundButton;->onSaveInstanceState()Landroid/os/Parcelable; +HPLandroid/widget/CursorAdapter;->(Landroid/content/Context;Landroid/database/Cursor;I)V +HPLandroid/widget/CursorAdapter;->getCount()I +HPLandroid/widget/CursorAdapter;->getCursor()Landroid/database/Cursor; +HPLandroid/widget/CursorAdapter;->getItem(I)Ljava/lang/Object; +HPLandroid/widget/CursorAdapter;->getItemId(I)J +HPLandroid/widget/CursorAdapter;->hasStableIds()Z +HPLandroid/widget/CursorAdapter;->init(Landroid/content/Context;Landroid/database/Cursor;I)V +HPLandroid/widget/CursorAdapter;->swapCursor(Landroid/database/Cursor;)Landroid/database/Cursor; +HPLandroid/widget/CursorFilter$CursorFilterClient;->changeCursor(Landroid/database/Cursor;)V +HPLandroid/widget/CursorFilter$CursorFilterClient;->convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence; +HPLandroid/widget/CursorFilter$CursorFilterClient;->getCursor()Landroid/database/Cursor; +HPLandroid/widget/CursorFilter$CursorFilterClient;->runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor; +HPLandroid/widget/DateTimeView$ReceiverInfo$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLandroid/widget/DateTimeView$ReceiverInfo;->addView(Landroid/widget/DateTimeView;)V +HPLandroid/widget/DateTimeView$ReceiverInfo;->getApplicationContextIfAvailable(Landroid/content/Context;)Landroid/content/Context; +HPLandroid/widget/DateTimeView$ReceiverInfo;->getSoonestUpdateTime()J +HPLandroid/widget/DateTimeView$ReceiverInfo;->lambda$-android_widget_DateTimeView$ReceiverInfo_16933(Landroid/widget/DateTimeView;)V +HPLandroid/widget/DateTimeView$ReceiverInfo;->register(Landroid/content/Context;)V +HPLandroid/widget/DateTimeView$ReceiverInfo;->removeView(Landroid/widget/DateTimeView;)V +HPLandroid/widget/DateTimeView$ReceiverInfo;->updateAll()V +HPLandroid/widget/DateTimeView;->-get0(Landroid/widget/DateTimeView;)J +HPLandroid/widget/DateTimeView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/DateTimeView;->clearFormatAndUpdate()V +HPLandroid/widget/DateTimeView;->onAttachedToWindow()V +HPLandroid/widget/DateTimeView;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/widget/DateTimeView;->onDetachedFromWindow()V +HPLandroid/widget/DateTimeView;->setShowRelativeTime(Z)V +HPLandroid/widget/DateTimeView;->setTime(J)V +HPLandroid/widget/DateTimeView;->setVisibility(I)V +HPLandroid/widget/DateTimeView;->update()V +HPLandroid/widget/DateTimeView;->updateNowText()V +HPLandroid/widget/DateTimeView;->updateRelativeTime()V +HPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z +HPLandroid/widget/EdgeEffect;->onAbsorb(I)V +HPLandroid/widget/EdgeEffect;->onPull(F)V +HPLandroid/widget/EdgeEffect;->onPull(FF)V +HPLandroid/widget/EdgeEffect;->onRelease()V +HPLandroid/widget/EdgeEffect;->setSize(II)V +HPLandroid/widget/EdgeEffect;->update()V +HPLandroid/widget/EditText;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/EditText;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/EditText;->setSelection(II)V +HPLandroid/widget/Editor$Blink;->cancel()V +HPLandroid/widget/Editor$EditOperation$1;->()V +HPLandroid/widget/Editor$EditOperation;->-get0(Landroid/widget/Editor$EditOperation;)Ljava/lang/String; +HPLandroid/widget/Editor$EditOperation;->-get1(Landroid/widget/Editor$EditOperation;)Ljava/lang/String; +HPLandroid/widget/Editor$EditOperation;->-wrap0(Landroid/widget/Editor$EditOperation;Landroid/widget/Editor$EditOperation;)Z +HPLandroid/widget/Editor$EditOperation;->(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V +HPLandroid/widget/Editor$EditOperation;->commit()V +HPLandroid/widget/Editor$EditOperation;->forceMergeWith(Landroid/widget/Editor$EditOperation;)V +HPLandroid/widget/Editor$EditOperation;->getNewTextEnd()I +HPLandroid/widget/Editor$EditOperation;->getOldTextEnd()I +HPLandroid/widget/Editor$EditOperation;->mergeDeleteWith(Landroid/widget/Editor$EditOperation;)Z +HPLandroid/widget/Editor$EditOperation;->mergeInsertWith(Landroid/widget/Editor$EditOperation;)Z +HPLandroid/widget/Editor$EditOperation;->mergeReplaceWith(Landroid/widget/Editor$EditOperation;)Z +HPLandroid/widget/Editor$EditOperation;->mergeWith(Landroid/widget/Editor$EditOperation;)Z +HPLandroid/widget/Editor$EditOperation;->modifyText(Landroid/text/Editable;IILjava/lang/CharSequence;II)V +HPLandroid/widget/Editor$EditOperation;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/Editor$InputMethodState;->()V +HPLandroid/widget/Editor$InsertionPointCursorController;->invalidateHandle()V +HPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V +HPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->createProcessTextIntent()Landroid/content/Intent; +HPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->initializeAccessibilityActions()V +HPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->loadSupportedActivities()V +HPLandroid/widget/Editor$SelectionModifierCursorController;->getMinTouchOffset()I +HPLandroid/widget/Editor$SelectionModifierCursorController;->onTouchEvent(Landroid/view/MotionEvent;)V +HPLandroid/widget/Editor$UndoInputFilter;->beginBatchEdit()V +HPLandroid/widget/Editor$UndoInputFilter;->canUndoEdit(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Z +HPLandroid/widget/Editor$UndoInputFilter;->endBatchEdit()V +HPLandroid/widget/Editor$UndoInputFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence; +HPLandroid/widget/Editor$UndoInputFilter;->getLastEdit()Landroid/widget/Editor$EditOperation; +HPLandroid/widget/Editor$UndoInputFilter;->handleEdit(Ljava/lang/CharSequence;IILandroid/text/Spanned;IIZ)V +HPLandroid/widget/Editor$UndoInputFilter;->isComposition(Ljava/lang/CharSequence;)Z +HPLandroid/widget/Editor$UndoInputFilter;->isInTextWatcher()Z +HPLandroid/widget/Editor$UndoInputFilter;->recordEdit(Landroid/widget/Editor$EditOperation;I)V +HPLandroid/widget/Editor;->-get14(Landroid/widget/Editor;)Landroid/content/UndoManager; +HPLandroid/widget/Editor;->-get15(Landroid/widget/Editor;)Landroid/content/UndoOwner; +HPLandroid/widget/Editor;->-wrap5(Landroid/widget/Editor;)Z +HPLandroid/widget/Editor;->-wrap9(Ljava/lang/CharSequence;II)Z +HPLandroid/widget/Editor;->beginBatchEdit()V +HPLandroid/widget/Editor;->createInputMethodStateIfNeeded()V +HPLandroid/widget/Editor;->discardTextDisplayLists()V +HPLandroid/widget/Editor;->downgradeEasyCorrectionSpans()V +HPLandroid/widget/Editor;->endBatchEdit()V +HPLandroid/widget/Editor;->finishBatchEdit(Landroid/widget/Editor$InputMethodState;)V +HPLandroid/widget/Editor;->hasSelectionController()Z +HPLandroid/widget/Editor;->isValidRange(Ljava/lang/CharSequence;II)Z +HPLandroid/widget/Editor;->onDetachedFromWindow()V +HPLandroid/widget/Editor;->onLocaleChanged()V +HPLandroid/widget/Editor;->onTouchEvent(Landroid/view/MotionEvent;)V +HPLandroid/widget/Editor;->reportExtractedText()Z +HPLandroid/widget/Editor;->shouldFilterOutTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/Editor;->suspendBlink()V +HPLandroid/widget/Editor;->updateFloatingToolbarVisibility(Landroid/view/MotionEvent;)V +HPLandroid/widget/Editor;->updateTapState(Landroid/view/MotionEvent;)V +HPLandroid/widget/FastScroller;->getPosFromItemCount(III)F +HPLandroid/widget/FastScroller;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/FastScroller;->onSizeChanged(IIII)V +HPLandroid/widget/FastScroller;->setThumbPos(F)V +HPLandroid/widget/Filter;->performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults; +HPLandroid/widget/Filter;->publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V +HPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V +HPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z +HPLandroid/widget/GridLayout$3;->getAlignmentValue(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$3;->getGravityOffset(Landroid/view/View;I)I +HPLandroid/widget/GridLayout$5;->getAlignmentValue(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$5;->getGravityOffset(Landroid/view/View;I)I +HPLandroid/widget/GridLayout$6$1;->(Landroid/widget/GridLayout$6;)V +HPLandroid/widget/GridLayout$6$1;->getOffset(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Alignment;IZ)I +HPLandroid/widget/GridLayout$6$1;->include(II)V +HPLandroid/widget/GridLayout$6$1;->reset()V +HPLandroid/widget/GridLayout$6$1;->size(Z)I +HPLandroid/widget/GridLayout$6;->getAlignmentValue(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$6;->getBounds()Landroid/widget/GridLayout$Bounds; +HPLandroid/widget/GridLayout$6;->getGravityOffset(Landroid/view/View;I)I +HPLandroid/widget/GridLayout$7;->getAlignmentValue(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$7;->getGravityOffset(Landroid/view/View;I)I +HPLandroid/widget/GridLayout$7;->getSizeInCell(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$Alignment;->getBounds()Landroid/widget/GridLayout$Bounds; +HPLandroid/widget/GridLayout$Alignment;->getSizeInCell(Landroid/view/View;II)I +HPLandroid/widget/GridLayout$Arc;->(Landroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$MutableInt;)V +HPLandroid/widget/GridLayout$Assoc;->(Ljava/lang/Class;Ljava/lang/Class;)V +HPLandroid/widget/GridLayout$Assoc;->of(Ljava/lang/Class;Ljava/lang/Class;)Landroid/widget/GridLayout$Assoc; +HPLandroid/widget/GridLayout$Assoc;->pack()Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Assoc;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HPLandroid/widget/GridLayout$Axis$1;->(Landroid/widget/GridLayout$Axis;[Landroid/widget/GridLayout$Arc;)V +HPLandroid/widget/GridLayout$Axis$1;->sort()[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Axis$1;->walk(I)V +HPLandroid/widget/GridLayout$Axis;->addComponentSizes(Ljava/util/List;Landroid/widget/GridLayout$PackedMap;)V +HPLandroid/widget/GridLayout$Axis;->calculateMaxIndex()I +HPLandroid/widget/GridLayout$Axis;->calculateTotalWeight()F +HPLandroid/widget/GridLayout$Axis;->computeArcs()V +HPLandroid/widget/GridLayout$Axis;->computeGroupBounds()V +HPLandroid/widget/GridLayout$Axis;->computeHasWeights()Z +HPLandroid/widget/GridLayout$Axis;->computeLinks(Landroid/widget/GridLayout$PackedMap;Z)V +HPLandroid/widget/GridLayout$Axis;->computeLocations([I)V +HPLandroid/widget/GridLayout$Axis;->createArcs()[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Axis;->createGroupBounds()Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Axis;->createLinks(Z)Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Axis;->getArcs()[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Axis;->getBackwardLinks()Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Axis;->getCount()I +HPLandroid/widget/GridLayout$Axis;->getDeltas()[I +HPLandroid/widget/GridLayout$Axis;->getForwardLinks()Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Axis;->getGroupBounds()Landroid/widget/GridLayout$PackedMap; +HPLandroid/widget/GridLayout$Axis;->getLocations()[I +HPLandroid/widget/GridLayout$Axis;->getMaxIndex()I +HPLandroid/widget/GridLayout$Axis;->getMeasure(I)I +HPLandroid/widget/GridLayout$Axis;->getMeasure(II)I +HPLandroid/widget/GridLayout$Axis;->groupArcsByFirstVertex([Landroid/widget/GridLayout$Arc;)[[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Axis;->hasWeights()Z +HPLandroid/widget/GridLayout$Axis;->include(Ljava/util/List;Landroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$MutableInt;)V +HPLandroid/widget/GridLayout$Axis;->include(Ljava/util/List;Landroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$MutableInt;Z)V +HPLandroid/widget/GridLayout$Axis;->init([I)V +HPLandroid/widget/GridLayout$Axis;->layout(I)V +HPLandroid/widget/GridLayout$Axis;->relax([ILandroid/widget/GridLayout$Arc;)Z +HPLandroid/widget/GridLayout$Axis;->setParentConstraints(II)V +HPLandroid/widget/GridLayout$Axis;->shareOutDelta(IF)V +HPLandroid/widget/GridLayout$Axis;->size([I)I +HPLandroid/widget/GridLayout$Axis;->solve([I)Z +HPLandroid/widget/GridLayout$Axis;->solve([Landroid/widget/GridLayout$Arc;[I)Z +HPLandroid/widget/GridLayout$Axis;->solve([Landroid/widget/GridLayout$Arc;[IZ)Z +HPLandroid/widget/GridLayout$Axis;->solveAndDistributeSpace([I)V +HPLandroid/widget/GridLayout$Axis;->topologicalSort(Ljava/util/List;)[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Axis;->topologicalSort([Landroid/widget/GridLayout$Arc;)[Landroid/widget/GridLayout$Arc; +HPLandroid/widget/GridLayout$Bounds;->()V +HPLandroid/widget/GridLayout$Bounds;->(Landroid/widget/GridLayout$Bounds;)V +HPLandroid/widget/GridLayout$Bounds;->getOffset(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Alignment;IZ)I +HPLandroid/widget/GridLayout$Bounds;->include(II)V +HPLandroid/widget/GridLayout$Bounds;->include(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Spec;Landroid/widget/GridLayout$Axis;I)V +HPLandroid/widget/GridLayout$Bounds;->reset()V +HPLandroid/widget/GridLayout$Bounds;->size(Z)I +HPLandroid/widget/GridLayout$Interval;->equals(Ljava/lang/Object;)Z +HPLandroid/widget/GridLayout$Interval;->hashCode()I +HPLandroid/widget/GridLayout$Interval;->inverse()Landroid/widget/GridLayout$Interval; +HPLandroid/widget/GridLayout$LayoutParams;->hashCode()I +HPLandroid/widget/GridLayout$LayoutParams;->setColumnSpecSpan(Landroid/widget/GridLayout$Interval;)V +HPLandroid/widget/GridLayout$LayoutParams;->setRowSpecSpan(Landroid/widget/GridLayout$Interval;)V +HPLandroid/widget/GridLayout$MutableInt;->()V +HPLandroid/widget/GridLayout$MutableInt;->reset()V +HPLandroid/widget/GridLayout$PackedMap;->([Ljava/lang/Object;[Ljava/lang/Object;)V +HPLandroid/widget/GridLayout$PackedMap;->([Ljava/lang/Object;[Ljava/lang/Object;Landroid/widget/GridLayout$PackedMap;)V +HPLandroid/widget/GridLayout$PackedMap;->compact([Ljava/lang/Object;[I)[Ljava/lang/Object; +HPLandroid/widget/GridLayout$PackedMap;->createIndex([Ljava/lang/Object;)[I +HPLandroid/widget/GridLayout$PackedMap;->getValue(I)Ljava/lang/Object; +HPLandroid/widget/GridLayout$Spec;->-wrap0(Landroid/widget/GridLayout$Spec;Z)Landroid/widget/GridLayout$Alignment; +HPLandroid/widget/GridLayout$Spec;->copyWriteSpan(Landroid/widget/GridLayout$Interval;)Landroid/widget/GridLayout$Spec; +HPLandroid/widget/GridLayout$Spec;->equals(Ljava/lang/Object;)Z +HPLandroid/widget/GridLayout$Spec;->getAbsoluteAlignment(Z)Landroid/widget/GridLayout$Alignment; +HPLandroid/widget/GridLayout$Spec;->getFlexibility()I +HPLandroid/widget/GridLayout$Spec;->hashCode()I +HPLandroid/widget/GridLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/GridLayout;->adjust(II)I +HPLandroid/widget/GridLayout;->append([Ljava/lang/Object;[Ljava/lang/Object;)[Ljava/lang/Object; +HPLandroid/widget/GridLayout;->canStretch(I)Z +HPLandroid/widget/GridLayout;->clip(Landroid/widget/GridLayout$Interval;ZI)I +HPLandroid/widget/GridLayout;->computeLayoutParamsHashCode()I +HPLandroid/widget/GridLayout;->consistencyCheck()V +HPLandroid/widget/GridLayout;->fits([IIII)Z +HPLandroid/widget/GridLayout;->getDefaultMargin(Landroid/view/View;Landroid/widget/GridLayout$LayoutParams;ZZ)I +HPLandroid/widget/GridLayout;->getLayoutParams(Landroid/view/View;)Landroid/widget/GridLayout$LayoutParams; +HPLandroid/widget/GridLayout;->getMargin(Landroid/view/View;ZZ)I +HPLandroid/widget/GridLayout;->getMargin1(Landroid/view/View;ZZ)I +HPLandroid/widget/GridLayout;->getMeasurement(Landroid/view/View;Z)I +HPLandroid/widget/GridLayout;->getMeasurementIncludingMargin(Landroid/view/View;Z)I +HPLandroid/widget/GridLayout;->getTotalMargin(Landroid/view/View;Z)I +HPLandroid/widget/GridLayout;->max2([II)I +HPLandroid/widget/GridLayout;->measureChildWithMargins2(Landroid/view/View;IIII)V +HPLandroid/widget/GridLayout;->measureChildrenWithMargins(IIZ)V +HPLandroid/widget/GridLayout;->onChildVisibilityChanged(Landroid/view/View;II)V +HPLandroid/widget/GridLayout;->onLayout(ZIIII)V +HPLandroid/widget/GridLayout;->onMeasure(II)V +HPLandroid/widget/GridLayout;->onSetLayoutParams(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HPLandroid/widget/GridLayout;->procrusteanFill([IIII)V +HPLandroid/widget/GridLayout;->setCellGroup(Landroid/widget/GridLayout$LayoutParams;IIII)V +HPLandroid/widget/GridLayout;->validateLayoutParams()V +HPLandroid/widget/GridView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/GridView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/GridView;->setGravity(I)V +HPLandroid/widget/HeaderViewListAdapter;->isEmpty()Z +HPLandroid/widget/HeaderViewListAdapter;->removeHeader(Landroid/view/View;)Z +HPLandroid/widget/HeaderViewListAdapter;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HPLandroid/widget/HorizontalScrollView$SavedState;->(Landroid/os/Parcelable;)V +HPLandroid/widget/HorizontalScrollView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/HorizontalScrollView;->computeHorizontalScrollRange()I +HPLandroid/widget/HorizontalScrollView;->getScrollRange()I +HPLandroid/widget/HorizontalScrollView;->inChild(II)Z +HPLandroid/widget/HorizontalScrollView;->initOrResetVelocityTracker()V +HPLandroid/widget/HorizontalScrollView;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/HorizontalScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/HorizontalScrollView;->onOverScrolled(IIZZ)V +HPLandroid/widget/HorizontalScrollView;->onSaveInstanceState()Landroid/os/Parcelable; +HPLandroid/widget/HorizontalScrollView;->shouldDelayChildPressedState()Z +HPLandroid/widget/HorizontalScrollView;->smoothScrollBy(II)V +HPLandroid/widget/HorizontalScrollView;->smoothScrollTo(II)V +HPLandroid/widget/ImageView$ImageDrawableCallback;->(Landroid/widget/ImageView;Landroid/graphics/drawable/Drawable;Landroid/net/Uri;I)V +HPLandroid/widget/ImageView$ImageDrawableCallback;->run()V +HPLandroid/widget/ImageView$ScaleType;->values()[Landroid/widget/ImageView$ScaleType; +HPLandroid/widget/ImageView;->-set0(Landroid/widget/ImageView;I)I +HPLandroid/widget/ImageView;->-set1(Landroid/widget/ImageView;Landroid/net/Uri;)Landroid/net/Uri; +HPLandroid/widget/ImageView;->clearColorFilter()V +HPLandroid/widget/ImageView;->getImageAlpha()I +HPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix; +HPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType; +HPLandroid/widget/ImageView;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/widget/ImageView;->setBaselineAlignBottom(Z)V +HPLandroid/widget/ImageView;->setCropToPadding(Z)V +HPLandroid/widget/ImageView;->setImageIconAsync(Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable; +HPLandroid/widget/LinearLayout;->drawDividersHorizontal(Landroid/graphics/Canvas;)V +HPLandroid/widget/LinearLayout;->drawDividersVertical(Landroid/graphics/Canvas;)V +HPLandroid/widget/LinearLayout;->drawVerticalDivider(Landroid/graphics/Canvas;I)V +HPLandroid/widget/LinearLayout;->getDividerDrawable()Landroid/graphics/drawable/Drawable; +HPLandroid/widget/LinearLayout;->getGravity()I +HPLandroid/widget/LinearLayout;->getShowDividers()I +HPLandroid/widget/LinearLayout;->isShowingDividers()Z +HPLandroid/widget/LinearLayout;->setShowDividers(I)V +HPLandroid/widget/LinearLayout;->shouldDelayChildPressedState()Z +HPLandroid/widget/ListPopupWindow$PopupDataSetObserver;->(Landroid/widget/ListPopupWindow;)V +HPLandroid/widget/ListPopupWindow$PopupDataSetObserver;->(Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow$PopupDataSetObserver;)V +HPLandroid/widget/ListPopupWindow;->(Landroid/content/Context;)V +HPLandroid/widget/ListPopupWindow;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/ListPopupWindow;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/ListPopupWindow;->setAdapter(Landroid/widget/ListAdapter;)V +HPLandroid/widget/ListPopupWindow;->setAnchorView(Landroid/view/View;)V +HPLandroid/widget/ListPopupWindow;->setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V +HPLandroid/widget/ListView;->findMotionRow(I)I +HPLandroid/widget/ListView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/ListView;->onDetachedFromWindow()V +HPLandroid/widget/ListView;->onInitializeAccessibilityNodeInfoForItem(Landroid/view/View;ILandroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/ListView;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/ListView;->removeFixedViewInfo(Landroid/view/View;Ljava/util/ArrayList;)V +HPLandroid/widget/ListView;->removeHeaderView(Landroid/view/View;)Z +HPLandroid/widget/ListView;->setDividerHeight(I)V +HPLandroid/widget/ListView;->setHeaderDividersEnabled(Z)V +HPLandroid/widget/MultiAutoCompleteTextView$Tokenizer;->findTokenEnd(Ljava/lang/CharSequence;I)I +HPLandroid/widget/MultiAutoCompleteTextView$Tokenizer;->findTokenStart(Ljava/lang/CharSequence;I)I +HPLandroid/widget/MultiAutoCompleteTextView$Tokenizer;->terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HPLandroid/widget/MultiAutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/MultiAutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/widget/MultiAutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/widget/MultiAutoCompleteTextView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/MultiAutoCompleteTextView;->setTokenizer(Landroid/widget/MultiAutoCompleteTextView$Tokenizer;)V +HPLandroid/widget/OverScroller$SplineOverScroller;->-get0(Landroid/widget/OverScroller$SplineOverScroller;)F +HPLandroid/widget/OverScroller$SplineOverScroller;->-get1(Landroid/widget/OverScroller$SplineOverScroller;)I +HPLandroid/widget/OverScroller$SplineOverScroller;->-get2(Landroid/widget/OverScroller$SplineOverScroller;)I +HPLandroid/widget/OverScroller$SplineOverScroller;->-get3(Landroid/widget/OverScroller$SplineOverScroller;)I +HPLandroid/widget/OverScroller$SplineOverScroller;->-get6(Landroid/widget/OverScroller$SplineOverScroller;)J +HPLandroid/widget/OverScroller$SplineOverScroller;->-set0(Landroid/widget/OverScroller$SplineOverScroller;Z)Z +HPLandroid/widget/OverScroller$SplineOverScroller;->continueWhenFinished()Z +HPLandroid/widget/OverScroller$SplineOverScroller;->fling(IIIII)V +HPLandroid/widget/OverScroller$SplineOverScroller;->getSplineDeceleration(I)D +HPLandroid/widget/OverScroller$SplineOverScroller;->getSplineFlingDistance(I)D +HPLandroid/widget/OverScroller$SplineOverScroller;->getSplineFlingDuration(I)I +HPLandroid/widget/OverScroller$SplineOverScroller;->springback(III)Z +HPLandroid/widget/OverScroller$SplineOverScroller;->startScroll(III)V +HPLandroid/widget/OverScroller$SplineOverScroller;->update()Z +HPLandroid/widget/OverScroller$SplineOverScroller;->updateScroll(F)V +HPLandroid/widget/OverScroller;->fling(IIIIIIII)V +HPLandroid/widget/OverScroller;->fling(IIIIIIIIII)V +HPLandroid/widget/OverScroller;->forceFinished(Z)V +HPLandroid/widget/OverScroller;->getCurrVelocity()F +HPLandroid/widget/OverScroller;->getCurrX()I +HPLandroid/widget/OverScroller;->getCurrY()I +HPLandroid/widget/OverScroller;->getDuration()I +HPLandroid/widget/OverScroller;->getFinalX()I +HPLandroid/widget/OverScroller;->getFinalY()I +HPLandroid/widget/OverScroller;->springBack(IIIIII)Z +HPLandroid/widget/OverScroller;->startScroll(IIII)V +HPLandroid/widget/OverScroller;->startScroll(IIIII)V +HPLandroid/widget/PopupMenu;->(Landroid/content/Context;Landroid/view/View;)V +HPLandroid/widget/PopupWindow$PopupBackgroundView;->(Landroid/widget/PopupWindow;Landroid/content/Context;)V +HPLandroid/widget/PopupWindow$PopupBackgroundView;->onCreateDrawableState(I)[I +HPLandroid/widget/PopupWindow$PopupDecorView$1;->(Landroid/widget/PopupWindow$PopupDecorView;)V +HPLandroid/widget/PopupWindow$PopupDecorView;->(Landroid/widget/PopupWindow;Landroid/content/Context;)V +HPLandroid/widget/PopupWindow;->-get1(Landroid/widget/PopupWindow;)Z +HPLandroid/widget/PopupWindow;->(Landroid/content/Context;)V +HPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/widget/PopupWindow;->computeAnimationResource()I +HPLandroid/widget/PopupWindow;->computeFlags(I)I +HPLandroid/widget/PopupWindow;->computeGravity()I +HPLandroid/widget/PopupWindow;->createBackgroundView(Landroid/view/View;)Landroid/widget/PopupWindow$PopupBackgroundView; +HPLandroid/widget/PopupWindow;->createDecorView(Landroid/view/View;)Landroid/widget/PopupWindow$PopupDecorView; +HPLandroid/widget/PopupWindow;->createPopupLayoutParams(Landroid/os/IBinder;)Landroid/view/WindowManager$LayoutParams; +HPLandroid/widget/PopupWindow;->detachFromAnchor()V +HPLandroid/widget/PopupWindow;->invokePopup(Landroid/view/WindowManager$LayoutParams;)V +HPLandroid/widget/PopupWindow;->isSplitTouchEnabled()Z +HPLandroid/widget/PopupWindow;->preparePopup(Landroid/view/WindowManager$LayoutParams;)V +HPLandroid/widget/PopupWindow;->setAnimationStyle(I)V +HPLandroid/widget/PopupWindow;->setFocusable(Z)V +HPLandroid/widget/PopupWindow;->setHeight(I)V +HPLandroid/widget/PopupWindow;->setLayoutDirectionFromAnchor()V +HPLandroid/widget/PopupWindow;->setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V +HPLandroid/widget/PopupWindow;->setOutsideTouchable(Z)V +HPLandroid/widget/PopupWindow;->setTouchable(Z)V +HPLandroid/widget/PopupWindow;->setWidth(I)V +HPLandroid/widget/PopupWindow;->showAtLocation(Landroid/os/IBinder;III)V +HPLandroid/widget/PopupWindow;->showAtLocation(Landroid/view/View;III)V +HPLandroid/widget/ProgressBar$AccessibilityEventSender;->(Landroid/widget/ProgressBar;)V +HPLandroid/widget/ProgressBar$AccessibilityEventSender;->(Landroid/widget/ProgressBar;Landroid/widget/ProgressBar$AccessibilityEventSender;)V +HPLandroid/widget/ProgressBar$AccessibilityEventSender;->run()V +HPLandroid/widget/ProgressBar$RefreshData;->()V +HPLandroid/widget/ProgressBar$RefreshData;->obtain(IIZZ)Landroid/widget/ProgressBar$RefreshData; +HPLandroid/widget/ProgressBar$RefreshData;->recycle()V +HPLandroid/widget/ProgressBar$RefreshProgressRunnable;->(Landroid/widget/ProgressBar;)V +HPLandroid/widget/ProgressBar$RefreshProgressRunnable;->(Landroid/widget/ProgressBar;Landroid/widget/ProgressBar$RefreshProgressRunnable;)V +HPLandroid/widget/ProgressBar$RefreshProgressRunnable;->run()V +HPLandroid/widget/ProgressBar$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/ProgressBar$SavedState; +HPLandroid/widget/ProgressBar$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/widget/ProgressBar$SavedState;->(Landroid/os/Parcel;)V +HPLandroid/widget/ProgressBar$SavedState;->(Landroid/os/Parcel;Landroid/widget/ProgressBar$SavedState;)V +HPLandroid/widget/ProgressBar;->-get0(Landroid/widget/ProgressBar;)Ljava/util/ArrayList; +HPLandroid/widget/ProgressBar;->-set0(Landroid/widget/ProgressBar;Z)Z +HPLandroid/widget/ProgressBar;->-wrap0(Landroid/widget/ProgressBar;IIZZZ)V +HPLandroid/widget/ProgressBar;->(Landroid/content/Context;)V +HPLandroid/widget/ProgressBar;->applyProgressBackgroundTint()V +HPLandroid/widget/ProgressBar;->drawableHotspotChanged(FF)V +HPLandroid/widget/ProgressBar;->onDetachedFromWindow()V +HPLandroid/widget/ProgressBar;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/widget/ProgressBar;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HPLandroid/widget/ProgressBar;->scheduleAccessibilityEventSender()V +HPLandroid/widget/ProgressBar;->setIndeterminateTintList(Landroid/content/res/ColorStateList;)V +HPLandroid/widget/ProgressBar;->setProgressBackgroundTintList(Landroid/content/res/ColorStateList;)V +HPLandroid/widget/QuickContactBadge$QueryHandler;->(Landroid/widget/QuickContactBadge;Landroid/content/ContentResolver;)V +HPLandroid/widget/QuickContactBadge;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/QuickContactBadge;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLandroid/widget/QuickContactBadge;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLandroid/widget/QuickContactBadge;->assignContactUri(Landroid/net/Uri;)V +HPLandroid/widget/QuickContactBadge;->drawableStateChanged()V +HPLandroid/widget/QuickContactBadge;->isAssigned()Z +HPLandroid/widget/QuickContactBadge;->onAttachedToWindow()V +HPLandroid/widget/QuickContactBadge;->onContactUriChanged()V +HPLandroid/widget/QuickContactBadge;->setOverlay(Landroid/graphics/drawable/Drawable;)V +HPLandroid/widget/QuickContactBadge;->setPrioritizedMimeType(Ljava/lang/String;)V +HPLandroid/widget/RadioGroup;->getAutofillType()I +HPLandroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;->(Landroid/widget/RelativeLayout;)V +HPLandroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;->(Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;)V +HPLandroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;->compare(Landroid/view/View;Landroid/view/View;)I +HPLandroid/widget/RelativeLayout$TopToBottomLeftToRightComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLandroid/widget/RelativeLayout;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z +HPLandroid/widget/RelativeLayout;->shouldDelayChildPressedState()Z +HPLandroid/widget/RemoteViews$1;->initialValue()Ljava/lang/Object; +HPLandroid/widget/RemoteViews$1;->initialValue()[Ljava/lang/Object; +HPLandroid/widget/RemoteViews$2;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$3;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/RemoteViews; +HPLandroid/widget/RemoteViews$3;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLandroid/widget/RemoteViews$Action;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HPLandroid/widget/RemoteViews$Action;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V +HPLandroid/widget/RemoteViews$AsyncApplyTask;->-get1(Landroid/widget/RemoteViews$AsyncApplyTask;)Landroid/view/View; +HPLandroid/widget/RemoteViews$AsyncApplyTask;->(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;Landroid/content/Context;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;Landroid/view/View;)V +HPLandroid/widget/RemoteViews$AsyncApplyTask;->(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;Landroid/content/Context;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;Landroid/view/View;Landroid/widget/RemoteViews$AsyncApplyTask;)V +HPLandroid/widget/RemoteViews$AsyncApplyTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/widget/RemoteViews$AsyncApplyTask;->doInBackground([Ljava/lang/Void;)Landroid/widget/RemoteViews$ViewTree; +HPLandroid/widget/RemoteViews$AsyncApplyTask;->onCancel()V +HPLandroid/widget/RemoteViews$AsyncApplyTask;->onPostExecute(Landroid/widget/RemoteViews$ViewTree;)V +HPLandroid/widget/RemoteViews$AsyncApplyTask;->onPostExecute(Ljava/lang/Object;)V +HPLandroid/widget/RemoteViews$BitmapCache;->(Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$BitmapCache;->assimilate(Landroid/widget/RemoteViews$BitmapCache;)V +HPLandroid/widget/RemoteViews$BitmapCache;->clone()Landroid/widget/RemoteViews$BitmapCache; +HPLandroid/widget/RemoteViews$LayoutParamAction;->(Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$LayoutParamAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$LayoutParamAction;->resolveDimenPixelOffset(Landroid/view/View;I)I +HPLandroid/widget/RemoteViews$MemoryUsageCounter;->getMemoryUsage()I +HPLandroid/widget/RemoteViews$MemoryUsageCounter;->increment(I)V +HPLandroid/widget/RemoteViews$MutablePair;->equals(Ljava/lang/Object;)Z +HPLandroid/widget/RemoteViews$MutablePair;->hashCode()I +HPLandroid/widget/RemoteViews$OnViewAppliedListener;->onError(Ljava/lang/Exception;)V +HPLandroid/widget/RemoteViews$OnViewAppliedListener;->onViewApplied(Landroid/view/View;)V +HPLandroid/widget/RemoteViews$ReflectionAction;->(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$ReflectionAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$ReflectionAction;->getParameterType()Ljava/lang/Class; +HPLandroid/widget/RemoteViews$ReflectionAction;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->(Landroid/content/Context;Landroid/content/Context;)V +HPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->getPackageName()Ljava/lang/String; +HPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->getResources()Landroid/content/res/Resources; +HPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HPLandroid/widget/RemoteViews$RunnableAction;->(Ljava/lang/Runnable;)V +HPLandroid/widget/RemoteViews$RunnableAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$SetDrawableParameters;->(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$SetDrawableParameters;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$SetOnClickPendingIntent$1;->(Landroid/widget/RemoteViews$SetOnClickPendingIntent;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$SetOnClickPendingIntent;->(Landroid/widget/RemoteViews;ILandroid/app/PendingIntent;)V +HPLandroid/widget/RemoteViews$SetOnClickPendingIntent;->(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$SetOnClickPendingIntent;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$SetOnClickPendingIntent;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/RemoteViews$TextViewSizeAction;->(Landroid/widget/RemoteViews;IIF)V +HPLandroid/widget/RemoteViews$TextViewSizeAction;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd$1;->(Landroid/widget/RemoteViews$ViewGroupActionAdd;Landroid/widget/RemoteViews$AsyncApplyTask;Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd$1;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->-get0(Landroid/widget/RemoteViews$ViewGroupActionAdd;)I +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->(Landroid/widget/RemoteViews;ILandroid/widget/RemoteViews;)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->(Landroid/widget/RemoteViews;ILandroid/widget/RemoteViews;I)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->(Landroid/widget/RemoteViews;Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;I)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->updateMemoryUsageEstimate(Landroid/widget/RemoteViews$MemoryUsageCounter;)V +HPLandroid/widget/RemoteViews$ViewGroupActionAdd;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove$1;->(Landroid/widget/RemoteViews$ViewGroupActionRemove;Landroid/view/ViewGroup;)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove$1;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->-get0(Landroid/widget/RemoteViews$ViewGroupActionRemove;)I +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->(Landroid/widget/RemoteViews;I)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->(Landroid/widget/RemoteViews;II)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action; +HPLandroid/widget/RemoteViews$ViewGroupActionRemove;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/RemoteViews$ViewPaddingAction;->(Landroid/widget/RemoteViews;IIIII)V +HPLandroid/widget/RemoteViews$ViewPaddingAction;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/RemoteViews$ViewTree;->-get0(Landroid/widget/RemoteViews$ViewTree;)Landroid/view/View; +HPLandroid/widget/RemoteViews$ViewTree;->-set0(Landroid/widget/RemoteViews$ViewTree;Ljava/util/ArrayList;)Ljava/util/ArrayList; +HPLandroid/widget/RemoteViews$ViewTree;->(Landroid/view/View;)V +HPLandroid/widget/RemoteViews$ViewTree;->(Landroid/view/View;Landroid/widget/RemoteViews$ViewTree;)V +HPLandroid/widget/RemoteViews$ViewTree;->addChild(Landroid/widget/RemoteViews$ViewTree;I)V +HPLandroid/widget/RemoteViews$ViewTree;->addViewChild(Landroid/view/View;)V +HPLandroid/widget/RemoteViews$ViewTree;->createTree()V +HPLandroid/widget/RemoteViews$ViewTree;->findViewById(I)Landroid/view/View; +HPLandroid/widget/RemoteViews$ViewTree;->findViewTreeById(I)Landroid/widget/RemoteViews$ViewTree; +HPLandroid/widget/RemoteViews$ViewTree;->replaceView(Landroid/view/View;)V +HPLandroid/widget/RemoteViews;->-get0()Landroid/widget/RemoteViews$Action; +HPLandroid/widget/RemoteViews;->-get2(Landroid/widget/RemoteViews;)Ljava/util/ArrayList; +HPLandroid/widget/RemoteViews;->-get3(Landroid/widget/RemoteViews;)Landroid/content/pm/ApplicationInfo; +HPLandroid/widget/RemoteViews;->-get5(Landroid/widget/RemoteViews;)Z +HPLandroid/widget/RemoteViews;->-wrap1(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View; +HPLandroid/widget/RemoteViews;->-wrap2(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask; +HPLandroid/widget/RemoteViews;->-wrap3(Ljava/lang/Object;)[Ljava/lang/Object; +HPLandroid/widget/RemoteViews;->-wrap4(Landroid/widget/RemoteViews;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HPLandroid/widget/RemoteViews;->-wrap5(Landroid/widget/RemoteViews;Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HPLandroid/widget/RemoteViews;->-wrap6(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)V +HPLandroid/widget/RemoteViews;->-wrap7(Landroid/content/Context;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews;->(Landroid/os/Parcel;)V +HPLandroid/widget/RemoteViews;->(Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;I)V +HPLandroid/widget/RemoteViews;->(Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILandroid/widget/RemoteViews;)V +HPLandroid/widget/RemoteViews;->(Ljava/lang/String;I)V +HPLandroid/widget/RemoteViews;->addView(ILandroid/widget/RemoteViews;)V +HPLandroid/widget/RemoteViews;->applyAsync(Landroid/content/Context;Landroid/view/ViewGroup;Ljava/util/concurrent/Executor;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/os/CancellationSignal; +HPLandroid/widget/RemoteViews;->clone()Landroid/widget/RemoteViews; +HPLandroid/widget/RemoteViews;->configureRemoteViewsAsChild(Landroid/widget/RemoteViews;)V +HPLandroid/widget/RemoteViews;->estimateMemoryUsage()I +HPLandroid/widget/RemoteViews;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HPLandroid/widget/RemoteViews;->getAsyncApplyTask(Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask; +HPLandroid/widget/RemoteViews;->getAsyncMethod(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HPLandroid/widget/RemoteViews;->getContextForResources(Landroid/content/Context;)Landroid/content/Context; +HPLandroid/widget/RemoteViews;->getLayoutId()I +HPLandroid/widget/RemoteViews;->getMethod(Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HPLandroid/widget/RemoteViews;->getPackage()Ljava/lang/String; +HPLandroid/widget/RemoteViews;->getRemoteViewsToApply(Landroid/content/Context;)Landroid/widget/RemoteViews; +HPLandroid/widget/RemoteViews;->inflateView(Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View; +HPLandroid/widget/RemoteViews;->isReapplyDisallowed()Z +HPLandroid/widget/RemoteViews;->loadTransitionOverride(Landroid/content/Context;Landroid/widget/RemoteViews$OnClickHandler;)V +HPLandroid/widget/RemoteViews;->onLoadClass(Ljava/lang/Class;)Z +HPLandroid/widget/RemoteViews;->reapplyAsync(Landroid/content/Context;Landroid/view/View;Ljava/util/concurrent/Executor;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/os/CancellationSignal; +HPLandroid/widget/RemoteViews;->removeAllViews(I)V +HPLandroid/widget/RemoteViews;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V +HPLandroid/widget/RemoteViews;->setContentDescription(ILjava/lang/CharSequence;)V +HPLandroid/widget/RemoteViews;->setNotRoot()V +HPLandroid/widget/RemoteViews;->setOnClickPendingIntent(ILandroid/app/PendingIntent;)V +HPLandroid/widget/RemoteViews;->setProgressBackgroundTintList(ILandroid/content/res/ColorStateList;)V +HPLandroid/widget/RemoteViews;->setProgressBar(IIIZ)V +HPLandroid/widget/RemoteViews;->setProgressIndeterminateTintList(ILandroid/content/res/ColorStateList;)V +HPLandroid/widget/RemoteViews;->setProgressTintList(ILandroid/content/res/ColorStateList;)V +HPLandroid/widget/RemoteViews;->setTextViewTextSize(IIF)V +HPLandroid/widget/RemoteViews;->setViewLayoutMarginBottomDimen(II)V +HPLandroid/widget/RemoteViews;->setViewPadding(IIIII)V +HPLandroid/widget/RemoteViews;->startTaskOnExecutor(Landroid/widget/RemoteViews$AsyncApplyTask;Ljava/util/concurrent/Executor;)Landroid/os/CancellationSignal; +HPLandroid/widget/RemoteViews;->wrapArg(Ljava/lang/Object;)[Ljava/lang/Object; +HPLandroid/widget/ResourceCursorAdapter;->(Landroid/content/Context;ILandroid/database/Cursor;I)V +HPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V +HPLandroid/widget/ScrollView;->addView(Landroid/view/View;)V +HPLandroid/widget/ScrollView;->addView(Landroid/view/View;I)V +HPLandroid/widget/ScrollView;->canScroll()Z +HPLandroid/widget/ScrollView;->computeScroll()V +HPLandroid/widget/ScrollView;->computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I +HPLandroid/widget/ScrollView;->computeVerticalScrollOffset()I +HPLandroid/widget/ScrollView;->computeVerticalScrollRange()I +HPLandroid/widget/ScrollView;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/widget/ScrollView;->doScrollY(I)V +HPLandroid/widget/ScrollView;->draw(Landroid/graphics/Canvas;)V +HPLandroid/widget/ScrollView;->executeKeyEvent(Landroid/view/KeyEvent;)Z +HPLandroid/widget/ScrollView;->getScrollRange()I +HPLandroid/widget/ScrollView;->inChild(II)Z +HPLandroid/widget/ScrollView;->initOrResetVelocityTracker()V +HPLandroid/widget/ScrollView;->isOffScreen(Landroid/view/View;)Z +HPLandroid/widget/ScrollView;->isViewDescendantOf(Landroid/view/View;Landroid/view/View;)Z +HPLandroid/widget/ScrollView;->isWithinDeltaOfScreen(Landroid/view/View;II)Z +HPLandroid/widget/ScrollView;->onDetachedFromWindow()V +HPLandroid/widget/ScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/ScrollView;->onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z +HPLandroid/widget/ScrollView;->recycleVelocityTracker()V +HPLandroid/widget/ScrollView;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V +HPLandroid/widget/ScrollView;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HPLandroid/widget/ScrollView;->scrollToChild(Landroid/view/View;)V +HPLandroid/widget/ScrollView;->scrollToChildRect(Landroid/graphics/Rect;Z)Z +HPLandroid/widget/ScrollView;->shouldDelayChildPressedState()Z +HPLandroid/widget/ScrollView;->smoothScrollBy(II)V +HPLandroid/widget/ScrollView;->smoothScrollTo(II)V +HPLandroid/widget/Scroller$ViscousFluidInterpolator;->getInterpolation(F)F +HPLandroid/widget/Scroller;->fling(IIIIIIII)V +HPLandroid/widget/Scroller;->forceFinished(Z)V +HPLandroid/widget/Scroller;->getFinalX()I +HPLandroid/widget/Scroller;->getFinalY()I +HPLandroid/widget/Scroller;->getSplineDeceleration(F)D +HPLandroid/widget/Scroller;->getSplineFlingDistance(F)D +HPLandroid/widget/Scroller;->getSplineFlingDuration(F)I +HPLandroid/widget/SearchView$OnQueryTextListener;->onQueryTextChange(Ljava/lang/String;)Z +HPLandroid/widget/SearchView$OnQueryTextListener;->onQueryTextSubmit(Ljava/lang/String;)Z +HPLandroid/widget/SeekBar;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/SeekBar;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/SimpleCursorAdapter;->(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[II)V +HPLandroid/widget/SimpleCursorAdapter;->findColumns(Landroid/database/Cursor;[Ljava/lang/String;)V +HPLandroid/widget/SimpleCursorAdapter;->swapCursor(Landroid/database/Cursor;)Landroid/database/Cursor; +HPLandroid/widget/Space;->(Landroid/content/Context;)V +HPLandroid/widget/SpellChecker;->(Landroid/widget/TextView;)V +HPLandroid/widget/SpellChecker;->closeSession()V +HPLandroid/widget/SpellChecker;->isSessionActive()Z +HPLandroid/widget/SpellChecker;->resetSession()V +HPLandroid/widget/SpellChecker;->setLocale(Ljava/util/Locale;)V +HPLandroid/widget/SpellChecker;->spellCheck(II)V +HPLandroid/widget/Switch$1;->get(Landroid/widget/Switch;)Ljava/lang/Float; +HPLandroid/widget/Switch$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLandroid/widget/Switch$1;->setValue(Landroid/widget/Switch;F)V +HPLandroid/widget/Switch$1;->setValue(Ljava/lang/Object;F)V +HPLandroid/widget/Switch;->-get0(Landroid/widget/Switch;)F +HPLandroid/widget/Switch;->-wrap0(Landroid/widget/Switch;F)V +HPLandroid/widget/Switch;->animateThumbToCheckedState(Z)V +HPLandroid/widget/Switch;->draw(Landroid/graphics/Canvas;)V +HPLandroid/widget/Switch;->getAccessibilityClassName()Ljava/lang/CharSequence; +HPLandroid/widget/Switch;->getCompoundPaddingLeft()I +HPLandroid/widget/Switch;->getCompoundPaddingRight()I +HPLandroid/widget/Switch;->getTargetCheckedState()Z +HPLandroid/widget/Switch;->getThumbOffset()I +HPLandroid/widget/Switch;->getThumbScrollRange()I +HPLandroid/widget/Switch;->jumpDrawablesToCurrentState()V +HPLandroid/widget/Switch;->onDraw(Landroid/graphics/Canvas;)V +HPLandroid/widget/Switch;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HPLandroid/widget/Switch;->onLayout(ZIIII)V +HPLandroid/widget/Switch;->onMeasure(II)V +HPLandroid/widget/Switch;->setTextOff(Ljava/lang/CharSequence;)V +HPLandroid/widget/Switch;->setTextOn(Ljava/lang/CharSequence;)V +HPLandroid/widget/TextClock$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLandroid/widget/TextClock$FormatChangeObserver;->onChange(ZLandroid/net/Uri;)V +HPLandroid/widget/TextClock;->-get1(Landroid/widget/TextClock;)Ljava/lang/String; +HPLandroid/widget/TextClock;->-wrap0(Landroid/widget/TextClock;)V +HPLandroid/widget/TextClock;->-wrap2(Landroid/widget/TextClock;)V +HPLandroid/widget/TextView$2;->(Landroid/widget/TextView;)V +HPLandroid/widget/TextView$2;->run()V +HPLandroid/widget/TextView$3;->(Landroid/widget/TextView;)V +HPLandroid/widget/TextView$3;->run()V +HPLandroid/widget/TextView$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V +HPLandroid/widget/TextView$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/widget/TextView$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/widget/TextView$Marquee$1;->(Landroid/widget/TextView$Marquee;)V +HPLandroid/widget/TextView$Marquee$1;->doFrame(J)V +HPLandroid/widget/TextView$Marquee$2;->(Landroid/widget/TextView$Marquee;)V +HPLandroid/widget/TextView$Marquee$2;->doFrame(J)V +HPLandroid/widget/TextView$Marquee$3;->(Landroid/widget/TextView$Marquee;)V +HPLandroid/widget/TextView$Marquee$3;->doFrame(J)V +HPLandroid/widget/TextView$Marquee;->-get0(Landroid/widget/TextView$Marquee;)Landroid/view/Choreographer; +HPLandroid/widget/TextView$Marquee;->-get1(Landroid/widget/TextView$Marquee;)I +HPLandroid/widget/TextView$Marquee;->-get2(Landroid/widget/TextView$Marquee;)B +HPLandroid/widget/TextView$Marquee;->-set0(Landroid/widget/TextView$Marquee;J)J +HPLandroid/widget/TextView$Marquee;->-set1(Landroid/widget/TextView$Marquee;I)I +HPLandroid/widget/TextView$Marquee;->-set2(Landroid/widget/TextView$Marquee;B)B +HPLandroid/widget/TextView$Marquee;->(Landroid/widget/TextView;)V +HPLandroid/widget/TextView$Marquee;->getGhostOffset()F +HPLandroid/widget/TextView$Marquee;->getMaxFadeScroll()F +HPLandroid/widget/TextView$Marquee;->getScroll()F +HPLandroid/widget/TextView$Marquee;->isRunning()Z +HPLandroid/widget/TextView$Marquee;->isStopped()Z +HPLandroid/widget/TextView$Marquee;->resetScroll()V +HPLandroid/widget/TextView$Marquee;->shouldDrawGhost()Z +HPLandroid/widget/TextView$Marquee;->shouldDrawLeftFade()Z +HPLandroid/widget/TextView$Marquee;->start(I)V +HPLandroid/widget/TextView$Marquee;->stop()V +HPLandroid/widget/TextView$Marquee;->tick()V +HPLandroid/widget/TextView;->-get0(Landroid/widget/TextView;)Landroid/content/Context; +HPLandroid/widget/TextView;->-get2(Landroid/widget/TextView;)Landroid/text/Layout; +HPLandroid/widget/TextView;->-wrap0(Landroid/widget/TextView;Ljava/lang/CharSequence;III)V +HPLandroid/widget/TextView;->-wrap1(Landroid/widget/TextView;)V +HPLandroid/widget/TextView;->beginBatchEdit()V +HPLandroid/widget/TextView;->canCopy()Z +HPLandroid/widget/TextView;->canCut()Z +HPLandroid/widget/TextView;->canMarquee()Z +HPLandroid/widget/TextView;->canPaste()Z +HPLandroid/widget/TextView;->canProcessText()Z +HPLandroid/widget/TextView;->canShare()Z +HPLandroid/widget/TextView;->clearComposingText()V +HPLandroid/widget/TextView;->computeHorizontalScrollRange()I +HPLandroid/widget/TextView;->computeVerticalScrollExtent()I +HPLandroid/widget/TextView;->computeVerticalScrollRange()I +HPLandroid/widget/TextView;->convertToLocalHorizontalCoordinate(F)F +HPLandroid/widget/TextView;->didTouchFocusSelect()Z +HPLandroid/widget/TextView;->doKeyDown(ILandroid/view/KeyEvent;Landroid/view/KeyEvent;)I +HPLandroid/widget/TextView;->drawableHotspotChanged(FF)V +HPLandroid/widget/TextView;->endBatchEdit()V +HPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I +HPLandroid/widget/TextView;->getBottomVerticalOffset(Z)I +HPLandroid/widget/TextView;->getBreakStrategy()I +HPLandroid/widget/TextView;->getCompoundDrawablePadding()I +HPLandroid/widget/TextView;->getCompoundDrawables()[Landroid/graphics/drawable/Drawable; +HPLandroid/widget/TextView;->getFadeHeight(Z)I +HPLandroid/widget/TextView;->getFadeTop(Z)I +HPLandroid/widget/TextView;->getFocusedRect(Landroid/graphics/Rect;)V +HPLandroid/widget/TextView;->getHorizontalFadingEdgeStrength(FF)F +HPLandroid/widget/TextView;->getHyphenationFrequency()I +HPLandroid/widget/TextView;->getIncludeFontPadding()Z +HPLandroid/widget/TextView;->getJustificationMode()I +HPLandroid/widget/TextView;->getLeftFadingEdgeStrength()F +HPLandroid/widget/TextView;->getLineAtCoordinate(F)I +HPLandroid/widget/TextView;->getLineSpacingExtra()F +HPLandroid/widget/TextView;->getLineSpacingMultiplier()F +HPLandroid/widget/TextView;->getMaxHeight()I +HPLandroid/widget/TextView;->getMaxWidth()I +HPLandroid/widget/TextView;->getOffsetAtCoordinate(IF)I +HPLandroid/widget/TextView;->getOffsetForPosition(FF)I +HPLandroid/widget/TextView;->getRightFadingEdgeStrength()F +HPLandroid/widget/TextView;->getSpellCheckerLocale()Ljava/util/Locale; +HPLandroid/widget/TextView;->getTextServicesLocale(Z)Ljava/util/Locale; +HPLandroid/widget/TextView;->getTotalPaddingBottom()I +HPLandroid/widget/TextView;->getTotalPaddingLeft()I +HPLandroid/widget/TextView;->getTotalPaddingRight()I +HPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface; +HPLandroid/widget/TextView;->handleBackInTextActionModeIfNeeded(Landroid/view/KeyEvent;)Z +HPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V +HPLandroid/widget/TextView;->invalidateCursor()V +HPLandroid/widget/TextView;->isDeviceProvisioned()Z +HPLandroid/widget/TextView;->isDirectionalNavigationKey(I)Z +HPLandroid/widget/TextView;->isPaddingOffsetRequired()Z +HPLandroid/widget/TextView;->onBeginBatchEdit()V +HPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HPLandroid/widget/TextView;->onEndBatchEdit()V +HPLandroid/widget/TextView;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/TextView;->onKeyPreIme(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/TextView;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLandroid/widget/TextView;->onLocaleChanged()V +HPLandroid/widget/TextView;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HPLandroid/widget/TextView;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLandroid/widget/TextView;->resetErrorChangedFlag()V +HPLandroid/widget/TextView;->setMaxEms(I)V +HPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z +HPLandroid/widget/TextView;->suggestedSizeFitsInSpace(ILandroid/graphics/RectF;)Z +HPLandroid/widget/TextView;->updateAfterEdit()V +HPLandroid/widget/TextView;->updateTextServicesLocaleAsync()V +HPLandroid/widget/TextView;->updateTextServicesLocaleLocked()V +HPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->getId()I +HPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V +HPLandroid/widget/Toolbar$SavedState$1;->()V +HPLandroid/widget/Toolbar$SavedState;->(Landroid/os/Parcelable;)V +HPLandroid/widget/Toolbar$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HPLandroid/widget/Toolbar;->dismissPopupMenus()V +HPLandroid/widget/Toolbar;->hasExpandedActionView()Z +HPLandroid/widget/Toolbar;->isOverflowMenuShowing()Z +HPLandroid/widget/Toolbar;->onDetachedFromWindow()V +HPLandroid/widget/Toolbar;->onSaveInstanceState()Landroid/os/Parcelable; +HPLandroid/widget/Toolbar;->setTitle(I)V +HPLandroid/widget/ViewAnimator;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/ViewAnimator;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HPLandroid/widget/ViewAnimator;->getBaseline()I +HPLandroid/widget/ViewAnimator;->getCurrentView()Landroid/view/View; +HPLandroid/widget/ViewAnimator;->getDisplayedChild()I +HPLandroid/widget/ViewAnimator;->initViewAnimator(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/ViewAnimator;->setAnimateFirstView(Z)V +HPLandroid/widget/ViewAnimator;->setDisplayedChild(I)V +HPLandroid/widget/ViewAnimator;->showOnly(I)V +HPLandroid/widget/ViewAnimator;->showOnly(IZ)V +HPLandroid/widget/ViewFlipper$1;->(Landroid/widget/ViewFlipper;)V +HPLandroid/widget/ViewFlipper$2;->(Landroid/widget/ViewFlipper;)V +HPLandroid/widget/ViewFlipper;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLandroid/widget/ViewFlipper;->onAttachedToWindow()V +HPLandroid/widget/ViewFlipper;->onDetachedFromWindow()V +HPLandroid/widget/ViewFlipper;->onWindowVisibilityChanged(I)V +HPLandroid/widget/ViewFlipper;->updateRunning()V +HPLandroid/widget/ViewFlipper;->updateRunning(Z)V +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->([BII)V +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->isAtEnd()Z +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->newInstance([BII)Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano; +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readInt32()I +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readRawByte()B +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readRawVarint32()I +HPLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readTag()I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->(Ljava/nio/ByteBuffer;)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->([BII)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->checkNoSpaceLeft()V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeInt32Size(II)I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeInt32SizeNoTag(I)I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeRawVarint32Size(I)I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeTagSize(I)I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->newInstance([BII)Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano; +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->spaceLeft()I +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt32(II)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt32NoTag(I)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(B)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(I)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint32(I)V +HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V +HPLcom/android/framework/protobuf/nano/MessageNano;->()V +HPLcom/android/framework/protobuf/nano/MessageNano;->computeSerializedSize()I +HPLcom/android/framework/protobuf/nano/MessageNano;->getSerializedSize()I +HPLcom/android/framework/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/framework/protobuf/nano/MessageNano;[B)Lcom/android/framework/protobuf/nano/MessageNano; +HPLcom/android/framework/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/framework/protobuf/nano/MessageNano;[BII)Lcom/android/framework/protobuf/nano/MessageNano; +HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;)[B +HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;[BII)V +HPLcom/android/framework/protobuf/nano/MessageNano;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/android/framework/protobuf/nano/WireFormatNano;->makeTag(II)I +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->appendNationalNumber(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->attemptToChooseFormattingPattern()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->attemptToExtractIdd()Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->attemptToFormatAccruedDigits()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->clear()V +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->createFormattingTemplate(Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;)Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->getAvailableFormats(Ljava/lang/String;)V +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->getFormattingTemplate(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->getRememberedPosition()I +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->inputAccruedNationalNumber()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->inputDigit(C)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->inputDigitAndRememberPosition(C)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->inputDigitHelper(C)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->inputDigitWithOptionToRememberPosition(CZ)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->isDigitOrLeadingPlusSign(C)Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->isFormatEligible(Ljava/lang/String;)Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->isNanpaNumberWithNationalPrefix()Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->maybeCreateNewTemplate()Z +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->narrowDownPossibleFormats(Ljava/lang/String;)V +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->normalizeAndAccrueDigitsAndPlusSign(CZ)C +HPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->removeNationalPrefixFromNationalNumber()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/NumberParseException$ErrorType;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/NumberParseException;->(Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType;Ljava/lang/String;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberMatcher$State;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberMatcher;->(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;J)V +HPLcom/android/i18n/phonenumbers/PhoneNumberMatcher;->find(I)Lcom/android/i18n/phonenumbers/PhoneNumberMatch; +HPLcom/android/i18n/phonenumbers/PhoneNumberMatcher;->hasNext()Z +HPLcom/android/i18n/phonenumbers/PhoneNumberMatcher;->limit(II)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$1;->(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;J)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$1;->iterator()Ljava/util/Iterator; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$1;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$2;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$3;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$4;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;->(Ljava/lang/String;ILcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->-getcom-android-i18n-phonenumbers-PhoneNumberUtil$PhoneNumberFormatSwitchesValues()[I +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->-getcom-android-i18n-phonenumbers-Phonenumber$PhoneNumber$CountryCodeSourceSwitchesValues()[I +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->buildNationalNumberForParsing(Ljava/lang/String;Ljava/lang/StringBuilder;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->checkRegionForParsing(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractPossibleNumber(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->findNumbers(Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency;J)Ljava/lang/Iterable; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatInOriginalFormat(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatNsn(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatNsn(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatNsnUsingPattern(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getMetadataForRegionOrCallingCode(ILjava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNationalSignificantNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNddPrefixForRegion(Ljava/lang/String;Z)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberType(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberTypeHelper(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumberFromRegionList(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/util/List;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->hasFormattingPatternForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->hasUnexpectedItalianLeadingZero(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->hasValidCountryCallingCode(I)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isNumberMatchingDesc(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumberForRegion(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/String;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isViablePhoneNumber(Ljava/lang/String;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeAppendFormattedExtension(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeExtractCountryCode(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Ljava/lang/StringBuilder;ZLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)I +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripExtension(Ljava/lang/StringBuilder;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripInternationalPrefixAndNormalize(Ljava/lang/StringBuilder;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripNationalPrefixAndCarrierCode(Ljava/lang/StringBuilder;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Ljava/lang/StringBuilder;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalize(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalize(Ljava/lang/StringBuilder;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDiallableCharsOnly(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigits(Ljava/lang/String;Z)Ljava/lang/StringBuilder; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigitsOnly(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/String;Ljava/util/Map;Z)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/String;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/String;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/String;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/String;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseHelper(Ljava/lang/String;Ljava/lang/String;ZZLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parsePrefixAsIdd(Ljava/util/regex/Pattern;Ljava/lang/StringBuilder;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->prefixNumberWithCountryCallingCode(ILcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->rawInputContainsNationalPrefix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setItalianLeadingZerosForPhoneNumber(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V +HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult; +HPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getFormat()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getNationalPrefixFormattingRule()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getPattern()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->isNationalPrefixOptionalWhenFormatting()Z +HPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->leadingDigitsPatternSize()I +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getGeneralDesc()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getInternationalPrefix()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getLeadingDigits()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getNationalPrefix()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getNationalPrefixForParsing()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->hasLeadingDigits()Z +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->hasNationalPrefix()Z +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->hasNationalPrefixForParsing()Z +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->intlNumberFormats()Ljava/util/List; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->numberFormats()Ljava/util/List; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setLeadingDigits(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->getPossibleLengthList()Ljava/util/List; +HPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->getPossibleLengthLocalOnlyList()Ljava/util/List; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;->(Ljava/lang/String;I)V +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;->values()[Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->()V +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCode()I +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCodeSource()Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getNationalNumber()J +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getRawInput()Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasCountryCodeSource()Z +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasExtension()Z +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasRawInput()Z +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->isItalianLeadingZero()Z +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setCountryCode(I)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setCountryCodeSource(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setNationalNumber(J)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setRawInput(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; +HPLcom/android/i18n/phonenumbers/RegexCache$LRUCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z +HPLcom/android/i18n/phonenumbers/RegexCache$LRUCache;->-get0(Lcom/android/i18n/phonenumbers/RegexCache$LRUCache;)I +HPLcom/android/i18n/phonenumbers/RegexCache$LRUCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/i18n/phonenumbers/RegexCache$LRUCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/i18n/phonenumbers/RegexCache;->getPatternForRegex(Ljava/lang/String;)Ljava/util/regex/Pattern; +HPLcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder;->(Ljava/lang/String;)V +HPLcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder;->getDescriptionForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/util/Locale;)Ljava/lang/String; +HPLcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder;->getInstance()Lcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder; +HPLcom/android/i18n/phonenumbers/prefixmapper/MappingFileProvider;->()V +HPLcom/android/i18n/phonenumbers/prefixmapper/MappingFileProvider;->readExternal(Ljava/io/ObjectInput;)V +HPLcom/android/i18n/phonenumbers/prefixmapper/PrefixFileReader;->(Ljava/lang/String;)V +HPLcom/android/i18n/phonenumbers/prefixmapper/PrefixFileReader;->close(Ljava/io/InputStream;)V +HPLcom/android/i18n/phonenumbers/prefixmapper/PrefixFileReader;->loadMappingFileProvider()V +HPLcom/android/ims/ImsManager;->getIntCarrierConfig(Landroid/content/Context;Ljava/lang/String;)I +HPLcom/android/ims/ImsManager;->getWfcMode(Landroid/content/Context;)I +HPLcom/android/ims/ImsManager;->isWfcEnabledByPlatform(Landroid/content/Context;)Z +HPLcom/android/ims/ImsManager;->onProvisionedValueChanged(Landroid/content/Context;ILjava/lang/String;)V +HPLcom/android/ims/internal/IImsConfig$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/ims/internal/IImsConfig$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/ims/internal/IImsServiceController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/ims/internal/IImsServiceFeatureListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/ims/internal/IImsServiceFeatureListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceFeatureListener; +HPLcom/android/ims/internal/uce/common/CapInfo$1;->()V +HPLcom/android/ims/internal/uce/common/StatusCode$1;->()V +HPLcom/android/ims/internal/uce/common/StatusCode$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/common/StatusCode$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/ims/internal/uce/common/StatusCode;->()V +HPLcom/android/ims/internal/uce/common/StatusCode;->(Landroid/os/Parcel;)V +HPLcom/android/ims/internal/uce/common/StatusCode;->(Landroid/os/Parcel;Lcom/android/ims/internal/uce/common/StatusCode;)V +HPLcom/android/ims/internal/uce/common/StatusCode;->getStatusCode()I +HPLcom/android/ims/internal/uce/common/StatusCode;->readFromParcel(Landroid/os/Parcel;)V +HPLcom/android/ims/internal/uce/common/StatusCode;->setStatusCode(I)V +HPLcom/android/ims/internal/uce/common/StatusCode;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/ims/internal/uce/common/UceLong$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/ims/internal/uce/common/UceLong; +HPLcom/android/ims/internal/uce/common/UceLong$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/ims/internal/uce/common/UceLong;->(Landroid/os/Parcel;)V +HPLcom/android/ims/internal/uce/common/UceLong;->(Landroid/os/Parcel;Lcom/android/ims/internal/uce/common/UceLong;)V +HPLcom/android/ims/internal/uce/common/UceLong;->readFromParcel(Landroid/os/Parcel;)V +HPLcom/android/ims/internal/uce/common/UceLong;->setUceLong(J)V +HPLcom/android/ims/internal/uce/common/UceLong;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/ims/internal/uce/common/UceLong;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;->serviceUnAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V +HPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/presence/IPresenceListener; +HPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/ims/internal/uce/presence/IPresenceService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/ims/internal/uce/presence/IPresenceService$Stub;->()V +HPLcom/android/ims/internal/uce/presence/IPresenceService$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/ims/internal/uce/presence/IPresenceService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/presence/IPresenceService; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->addListener(ILcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->getContactCap(ILjava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->getContactListCap(I[Ljava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->getVersion(I)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->publishMyCap(ILcom/android/ims/internal/uce/presence/PresCapInfo;I)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->reenableService(II)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->removeListener(ILcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/IPresenceService;->setNewFeatureTag(ILjava/lang/String;Lcom/android/ims/internal/uce/presence/PresServiceInfo;I)Lcom/android/ims/internal/uce/common/StatusCode; +HPLcom/android/ims/internal/uce/presence/PresCmdId$1;->()V +HPLcom/android/ims/internal/uce/presence/PresCmdStatus$1;->()V +HPLcom/android/ims/internal/uce/presence/PresPublishTriggerType$1;->()V +HPLcom/android/ims/internal/uce/presence/PresResInfo$1;->()V +HPLcom/android/ims/internal/uce/presence/PresResInstanceInfo$1;->()V +HPLcom/android/ims/internal/uce/presence/PresRlmiInfo$1;->()V +HPLcom/android/ims/internal/uce/presence/PresSipResponse$1;->()V +HPLcom/android/ims/internal/uce/presence/PresSubscriptionState$1;->()V +HPLcom/android/ims/internal/uce/presence/PresTupleInfo$1;->()V +HPLcom/android/ims/internal/uce/uceservice/IUceListener$Stub;->()V +HPLcom/android/ims/internal/uce/uceservice/IUceListener;->setStatus(I)V +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->createPresenceService(Lcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)I +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->getPresenceService()Lcom/android/ims/internal/uce/presence/IPresenceService; +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub$Proxy;->getServiceStatus()Z +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub;->()V +HPLcom/android/ims/internal/uce/uceservice/IUceService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/ims/internal/uce/uceservice/IUceService;->createOptionsService(Lcom/android/ims/internal/uce/options/IOptionsListener;Lcom/android/ims/internal/uce/common/UceLong;)I +HPLcom/android/ims/internal/uce/uceservice/IUceService;->createPresenceService(Lcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)I +HPLcom/android/ims/internal/uce/uceservice/IUceService;->destroyOptionsService(I)V +HPLcom/android/ims/internal/uce/uceservice/IUceService;->destroyPresenceService(I)V +HPLcom/android/ims/internal/uce/uceservice/IUceService;->getOptionsService()Lcom/android/ims/internal/uce/options/IOptionsService; +HPLcom/android/ims/internal/uce/uceservice/IUceService;->getPresenceService()Lcom/android/ims/internal/uce/presence/IPresenceService; +HPLcom/android/ims/internal/uce/uceservice/IUceService;->getServiceStatus()Z +HPLcom/android/ims/internal/uce/uceservice/IUceService;->isServiceStarted()Z +HPLcom/android/ims/internal/uce/uceservice/IUceService;->startService(Lcom/android/ims/internal/uce/uceservice/IUceListener;)Z +HPLcom/android/ims/internal/uce/uceservice/IUceService;->stopService()Z +HPLcom/android/internal/alsa/AlsaCardsParser$AlsaCardRecord;->-wrap0(Lcom/android/internal/alsa/AlsaCardsParser$AlsaCardRecord;Ljava/lang/String;I)Z +HPLcom/android/internal/alsa/AlsaCardsParser$AlsaCardRecord;->(Lcom/android/internal/alsa/AlsaCardsParser;)V +HPLcom/android/internal/alsa/AlsaCardsParser$AlsaCardRecord;->parse(Ljava/lang/String;I)Z +HPLcom/android/internal/alsa/AlsaCardsParser;->-get0()Lcom/android/internal/alsa/LineTokenizer; +HPLcom/android/internal/alsa/AlsaCardsParser;->()V +HPLcom/android/internal/alsa/AlsaCardsParser;->scan()V +HPLcom/android/internal/alsa/AlsaDevicesParser;->()V +HPLcom/android/internal/alsa/LineTokenizer;->(Ljava/lang/String;)V +HPLcom/android/internal/alsa/LineTokenizer;->nextDelimiter(Ljava/lang/String;I)I +HPLcom/android/internal/alsa/LineTokenizer;->nextToken(Ljava/lang/String;I)I +HPLcom/android/internal/app/AlertController$1;->onClick(Landroid/view/View;)V +HPLcom/android/internal/app/AlertController$ButtonHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/app/AlertController;->-get0(Lcom/android/internal/app/AlertController;)Landroid/widget/Button; +HPLcom/android/internal/app/AlertController;->-get2(Lcom/android/internal/app/AlertController;)Landroid/widget/Button; +HPLcom/android/internal/app/AlertController;->-get4(Lcom/android/internal/app/AlertController;)Landroid/widget/Button; +HPLcom/android/internal/app/AlertController;->-get5(Lcom/android/internal/app/AlertController;)Landroid/os/Message; +HPLcom/android/internal/app/AlertController;->-get6(Lcom/android/internal/app/AlertController;)Landroid/content/DialogInterface; +HPLcom/android/internal/app/AlertController;->-get7(Lcom/android/internal/app/AlertController;)Landroid/os/Handler; +HPLcom/android/internal/app/AlertController;->installContent()V +HPLcom/android/internal/app/AlertController;->resolvePanel(Landroid/view/View;Landroid/view/View;)Landroid/view/ViewGroup; +HPLcom/android/internal/app/AlertController;->selectContentView()I +HPLcom/android/internal/app/AlertController;->setBackground(Landroid/content/res/TypedArray;Landroid/view/View;Landroid/view/View;Landroid/view/View;Landroid/view/View;ZZZ)V +HPLcom/android/internal/app/AlertController;->setupButtons(Landroid/view/ViewGroup;)V +HPLcom/android/internal/app/AlertController;->setupContent(Landroid/view/ViewGroup;)V +HPLcom/android/internal/app/AlertController;->setupCustomContent(Landroid/view/ViewGroup;)V +HPLcom/android/internal/app/AlertController;->setupTitle(Landroid/view/ViewGroup;)V +HPLcom/android/internal/app/AlertController;->setupView()V +HPLcom/android/internal/app/AlertController;->shouldCenterSingleButton(Landroid/content/Context;)Z +HPLcom/android/internal/app/AssistUtils;->getActiveServiceComponentName()Landroid/content/ComponentName; +HPLcom/android/internal/app/AssistUtils;->onLockscreenShown()V +HPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->opChanged(IILjava/lang/String;)V +HPLcom/android/internal/app/IAppOpsCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsCallback; +HPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V +HPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->setUidMode(III)V +HPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V +HPLcom/android/internal/app/IAppOpsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanResults(Landroid/os/WorkSource;I)V +HPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStarted(Landroid/os/WorkSource;Z)V +HPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStopped(Landroid/os/WorkSource;Z)V +HPLcom/android/internal/app/IBatteryStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/IMediaContainerService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/app/IMediaContainerService$Stub$Proxy;->getMinimalPackageInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite; +HPLcom/android/internal/app/IMediaContainerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IMediaContainerService; +HPLcom/android/internal/app/IMediaContainerService;->calculateInstalledSize(Ljava/lang/String;ZLjava/lang/String;)J +HPLcom/android/internal/app/IMediaContainerService;->clearDirectory(Ljava/lang/String;)V +HPLcom/android/internal/app/IMediaContainerService;->copyPackage(Ljava/lang/String;Lcom/android/internal/os/IParcelFileDescriptorFactory;)I +HPLcom/android/internal/app/IMediaContainerService;->copyPackageToContainer(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/app/IMediaContainerService;->getMinimalPackageInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite; +HPLcom/android/internal/app/IMediaContainerService;->getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo; +HPLcom/android/internal/app/ISoundTriggerService$Stub;->()V +HPLcom/android/internal/app/ISoundTriggerService;->deleteSoundModel(Landroid/os/ParcelUuid;)V +HPLcom/android/internal/app/ISoundTriggerService;->getSoundModel(Landroid/os/ParcelUuid;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; +HPLcom/android/internal/app/ISoundTriggerService;->isRecognitionActive(Landroid/os/ParcelUuid;)Z +HPLcom/android/internal/app/ISoundTriggerService;->loadGenericSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)I +HPLcom/android/internal/app/ISoundTriggerService;->loadKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I +HPLcom/android/internal/app/ISoundTriggerService;->startRecognition(Landroid/os/ParcelUuid;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I +HPLcom/android/internal/app/ISoundTriggerService;->startRecognitionForIntent(Landroid/os/ParcelUuid;Landroid/app/PendingIntent;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I +HPLcom/android/internal/app/ISoundTriggerService;->stopRecognition(Landroid/os/ParcelUuid;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I +HPLcom/android/internal/app/ISoundTriggerService;->stopRecognitionForIntent(Landroid/os/ParcelUuid;)I +HPLcom/android/internal/app/ISoundTriggerService;->unloadSoundModel(Landroid/os/ParcelUuid;)I +HPLcom/android/internal/app/ISoundTriggerService;->updateSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V +HPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->getActiveServiceComponentName()Landroid/content/ComponentName; +HPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->onLockscreenShown()V +HPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->()V +HPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionSessionListener; +HPLcom/android/internal/app/LocalePickerWithRegion$LocaleSelectedListener;->onLocaleSelected(Lcom/android/internal/app/LocaleStore$LocaleInfo;)V +HPLcom/android/internal/app/NightDisplayController;->getAutoMode()I +HPLcom/android/internal/app/NightDisplayController;->getColorTemperature()I +HPLcom/android/internal/app/NightDisplayController;->getDefaultColorTemperature()I +HPLcom/android/internal/app/NightDisplayController;->getMaximumColorTemperature()I +HPLcom/android/internal/app/NightDisplayController;->getMinimumColorTemperature()I +HPLcom/android/internal/app/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object; +HPLcom/android/internal/app/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object; +HPLcom/android/internal/app/ProcessMap;->remove(Ljava/lang/String;I)Ljava/lang/Object; +HPLcom/android/internal/app/ProcessMap;->size()I +HPLcom/android/internal/app/WindowDecorActionBar;->collapseActionView()Z +HPLcom/android/internal/app/procstats/DurationsTable;->(Lcom/android/internal/app/procstats/SparseMappingTable;)V +HPLcom/android/internal/app/procstats/DurationsTable;->addDuration(IJ)V +HPLcom/android/internal/app/procstats/DurationsTable;->addDurations(Lcom/android/internal/app/procstats/DurationsTable;)V +HPLcom/android/internal/app/procstats/IProcessStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/app/procstats/ProcessState$1;->()V +HPLcom/android/internal/app/procstats/ProcessState;->(Lcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;IILjava/lang/String;J)V +HPLcom/android/internal/app/procstats/ProcessState;->(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;IILjava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessState;->addPss(JJZLandroid/util/ArrayMap;)V +HPLcom/android/internal/app/procstats/ProcessState;->clone(J)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ProcessState;->commitStateTime(J)V +HPLcom/android/internal/app/procstats/ProcessState;->decActiveServices(Ljava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessState;->decStartedServices(IJLjava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessState;->ensureNotDead()V +HPLcom/android/internal/app/procstats/ProcessState;->getCommonProcess()Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ProcessState;->getName()Ljava/lang/String; +HPLcom/android/internal/app/procstats/ProcessState;->getPackage()Ljava/lang/String; +HPLcom/android/internal/app/procstats/ProcessState;->getVersion()I +HPLcom/android/internal/app/procstats/ProcessState;->incActiveServices(Ljava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessState;->incStartedServices(IJLjava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessState;->isMultiPackage()Z +HPLcom/android/internal/app/procstats/ProcessState;->makeActive()V +HPLcom/android/internal/app/procstats/ProcessState;->makeInactive()V +HPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Landroid/util/ArrayMap;I)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ProcessState;->reportExcessiveCpu(Landroid/util/ArrayMap;)V +HPLcom/android/internal/app/procstats/ProcessState;->setMultiPackage(Z)V +HPLcom/android/internal/app/procstats/ProcessState;->setState(IIJLandroid/util/ArrayMap;)V +HPLcom/android/internal/app/procstats/ProcessState;->setState(IJ)V +HPLcom/android/internal/app/procstats/ProcessState;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/app/procstats/ProcessStats$PackageState;->(Ljava/lang/String;I)V +HPLcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;->(I)V +HPLcom/android/internal/app/procstats/ProcessStats;->addSysMemUsage(JJJJJ)V +HPLcom/android/internal/app/procstats/ProcessStats;->getPackageStateLocked(Ljava/lang/String;II)Lcom/android/internal/app/procstats/ProcessStats$PackageState; +HPLcom/android/internal/app/procstats/ProcessStats;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ProcessStats;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState; +HPLcom/android/internal/app/procstats/ProcessStats;->writeCommonString(Landroid/os/Parcel;Ljava/lang/String;)V +HPLcom/android/internal/app/procstats/ProcessStats;->writeCompactedLongArray(Landroid/os/Parcel;[JI)V +HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;JI)V +HPLcom/android/internal/app/procstats/PssTable;->(Lcom/android/internal/app/procstats/SparseMappingTable;)V +HPLcom/android/internal/app/procstats/PssTable;->mergeStats(IIJJJJJJ)V +HPLcom/android/internal/app/procstats/ServiceState;->(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessState;)V +HPLcom/android/internal/app/procstats/ServiceState;->applyNewOwner(Ljava/lang/Object;)V +HPLcom/android/internal/app/procstats/ServiceState;->clearCurrentOwner(Ljava/lang/Object;Z)V +HPLcom/android/internal/app/procstats/ServiceState;->commitStateTime(J)V +HPLcom/android/internal/app/procstats/ServiceState;->getProcess()Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/internal/app/procstats/ServiceState;->getProcessName()Ljava/lang/String; +HPLcom/android/internal/app/procstats/ServiceState;->isInUse()Z +HPLcom/android/internal/app/procstats/ServiceState;->isRestarting()Z +HPLcom/android/internal/app/procstats/ServiceState;->setBound(ZIJ)V +HPLcom/android/internal/app/procstats/ServiceState;->setExecuting(ZIJ)V +HPLcom/android/internal/app/procstats/ServiceState;->setMemFactor(IJ)V +HPLcom/android/internal/app/procstats/ServiceState;->setProcess(Lcom/android/internal/app/procstats/ProcessState;)V +HPLcom/android/internal/app/procstats/ServiceState;->setRestarting(ZIJ)V +HPLcom/android/internal/app/procstats/ServiceState;->setStarted(ZIJ)V +HPLcom/android/internal/app/procstats/ServiceState;->updateRunning(IJ)V +HPLcom/android/internal/app/procstats/ServiceState;->updateStartedState(IJ)V +HPLcom/android/internal/app/procstats/ServiceState;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->assertConsistency()V +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->binarySearch(B)I +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->copyFrom(Lcom/android/internal/app/procstats/SparseMappingTable$Table;I)V +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getArrayForKey(I)[J +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getKeyAt(I)I +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getKeyCount()I +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getOrAddKey(BI)I +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getValue(I)J +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getValue(II)J +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->setValue(IIJ)V +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->setValue(IJ)V +HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/app/procstats/SparseMappingTable;->-get0(Lcom/android/internal/app/procstats/SparseMappingTable;)Ljava/util/ArrayList; +HPLcom/android/internal/app/procstats/SparseMappingTable;->-get1(Lcom/android/internal/app/procstats/SparseMappingTable;)I +HPLcom/android/internal/app/procstats/SparseMappingTable;->-set0(Lcom/android/internal/app/procstats/SparseMappingTable;I)I +HPLcom/android/internal/app/procstats/SparseMappingTable;->getArrayFromKey(I)I +HPLcom/android/internal/app/procstats/SparseMappingTable;->getIdFromKey(I)B +HPLcom/android/internal/app/procstats/SparseMappingTable;->getIndexFromKey(I)I +HPLcom/android/internal/app/procstats/SparseMappingTable;->writeCompactedLongArray(Landroid/os/Parcel;[JI)V +HPLcom/android/internal/app/procstats/SparseMappingTable;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(I[JI)V +HPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeSysMemUsage([JI[JI)V +HPLcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/appwidget/IAppWidgetHost$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetHost; +HPLcom/android/internal/appwidget/IAppWidgetService$Stub;->()V +HPLcom/android/internal/appwidget/IAppWidgetService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->getCurrentRestoreSet()J +HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->name()Ljava/lang/String; +HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->transportDirName()Ljava/lang/String; +HPLcom/android/internal/backup/IBackupTransport$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/backup/IBackupTransport; +HPLcom/android/internal/backup/LocalTransport;->(Landroid/content/Context;)V +HPLcom/android/internal/backup/LocalTransport;->makeDataDirs()V +HPLcom/android/internal/backup/LocalTransport;->name()Ljava/lang/String; +HPLcom/android/internal/backup/LocalTransport;->transportDirName()Ljava/lang/String; +HPLcom/android/internal/backup/LocalTransportService;->()V +HPLcom/android/internal/backup/LocalTransportService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HPLcom/android/internal/backup/LocalTransportService;->onCreate()V +HPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->toString()Ljava/lang/String; +HPLcom/android/internal/colorextraction/ColorExtractor;->onColorsChanged(Landroid/app/WallpaperColors;I)V +HPLcom/android/internal/colorextraction/ColorExtractor;->triggerColorsChanged(I)V +HPLcom/android/internal/colorextraction/drawable/GradientDrawable$1;->onAnimationEnd(Landroid/animation/Animator;Z)V +HPLcom/android/internal/colorextraction/drawable/GradientDrawable;->-get0(Lcom/android/internal/colorextraction/drawable/GradientDrawable;)Landroid/animation/ValueAnimator; +HPLcom/android/internal/colorextraction/drawable/GradientDrawable;->-set0(Lcom/android/internal/colorextraction/drawable/GradientDrawable;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator; +HPLcom/android/internal/colorextraction/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V +HPLcom/android/internal/colorextraction/drawable/GradientDrawable;->getAlpha()I +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->([JZZZ)V +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->close()V +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Landroid/content/pm/PackageParser$Package;)Lcom/android/internal/content/NativeLibraryHelper$Handle; +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Landroid/content/pm/PackageParser$PackageLite;)Lcom/android/internal/content/NativeLibraryHelper$Handle; +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/io/File;)Lcom/android/internal/content/NativeLibraryHelper$Handle; +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/util/List;ZZZ)Lcom/android/internal/content/NativeLibraryHelper$Handle; +HPLcom/android/internal/content/NativeLibraryHelper$Handle;->finalize()V +HPLcom/android/internal/content/NativeLibraryHelper;->-wrap0(Ljava/lang/String;)J +HPLcom/android/internal/content/NativeLibraryHelper;->-wrap1(J)V +HPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinaries(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;Ljava/lang/String;)I +HPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesForSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;[Ljava/lang/String;Z)I +HPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;Ljava/lang/String;)I +HPLcom/android/internal/content/NativeLibraryHelper;->createNativeLibrarySubdir(Ljava/io/File;)V +HPLcom/android/internal/content/NativeLibraryHelper;->findSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;[Ljava/lang/String;)I +HPLcom/android/internal/content/NativeLibraryHelper;->hasRenderscriptBitcode(Lcom/android/internal/content/NativeLibraryHelper$Handle;)Z +HPLcom/android/internal/content/NativeLibraryHelper;->removeNativeBinariesFromDirLI(Ljava/io/File;Z)V +HPLcom/android/internal/content/PackageHelper$1;->()V +HPLcom/android/internal/content/PackageHelper$1;->getAllow3rdPartyOnInternalConfig(Landroid/content/Context;)Z +HPLcom/android/internal/content/PackageHelper$1;->getDataDirectory()Ljava/io/File; +HPLcom/android/internal/content/PackageHelper$1;->getExistingAppInfo(Landroid/content/Context;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo; +HPLcom/android/internal/content/PackageHelper$1;->getForceAllowOnExternalSetting(Landroid/content/Context;)Z +HPLcom/android/internal/content/PackageHelper$1;->getStorageManager(Landroid/content/Context;)Landroid/os/storage/StorageManager; +HPLcom/android/internal/content/PackageHelper$TestableInterface;->()V +HPLcom/android/internal/content/PackageHelper$TestableInterface;->fitsOnInternalStorage(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Z +HPLcom/android/internal/content/PackageHelper$TestableInterface;->getAllow3rdPartyOnInternalConfig(Landroid/content/Context;)Z +HPLcom/android/internal/content/PackageHelper$TestableInterface;->getDataDirectory()Ljava/io/File; +HPLcom/android/internal/content/PackageHelper$TestableInterface;->getExistingAppInfo(Landroid/content/Context;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo; +HPLcom/android/internal/content/PackageHelper$TestableInterface;->getForceAllowOnExternalSetting(Landroid/content/Context;)Z +HPLcom/android/internal/content/PackageHelper$TestableInterface;->getStorageManager(Landroid/content/Context;)Landroid/os/storage/StorageManager; +HPLcom/android/internal/content/PackageHelper;->getDefaultTestableInterface()Lcom/android/internal/content/PackageHelper$TestableInterface; +HPLcom/android/internal/content/PackageHelper;->getSecureContainerList()[Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->getStorageManager()Landroid/os/storage/IStorageManager; +HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/internal/content/PackageHelper$TestableInterface;)Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Ljava/lang/String;IJLcom/android/internal/content/PackageHelper$TestableInterface;)Ljava/lang/String; +HPLcom/android/internal/content/PackageHelper;->translateAllocateFlags(I)I +HPLcom/android/internal/content/PackageMonitor;->didSomePackagesChange()Z +HPLcom/android/internal/content/PackageMonitor;->getChangingUserId()I +HPLcom/android/internal/content/PackageMonitor;->getPackageName(Landroid/content/Intent;)Ljava/lang/String; +HPLcom/android/internal/content/PackageMonitor;->isComponentModified(Ljava/lang/String;)Z +HPLcom/android/internal/content/PackageMonitor;->isPackageAppearing(Ljava/lang/String;)I +HPLcom/android/internal/content/PackageMonitor;->isPackageDisappearing(Ljava/lang/String;)I +HPLcom/android/internal/content/PackageMonitor;->isPackageModified(Ljava/lang/String;)Z +HPLcom/android/internal/content/PackageMonitor;->onBeginPackageChanges()V +HPLcom/android/internal/content/PackageMonitor;->onFinishPackageChanges()V +HPLcom/android/internal/content/PackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +HPLcom/android/internal/content/PackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z +HPLcom/android/internal/content/PackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onPackageModified(Ljava/lang/String;)V +HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V +HPLcom/android/internal/content/PackageMonitor;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/content/PackageMonitor;->onSomePackagesChanged()V +HPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/Looper;Z)V +HPLcom/android/internal/content/ReferrerIntent;->(Landroid/content/Intent;Ljava/lang/String;)V +HPLcom/android/internal/content/ReferrerIntent;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->alwaysOnAvailable()Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->alwaysOnDisplayAvailable()Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->alwaysOnDisplayDebuggingEnabled()Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->alwaysOnEnabled(I)Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->ambientDisplayAvailable()Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->ambientDisplayComponent()Ljava/lang/String; +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->boolSetting(Ljava/lang/String;II)Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->boolSettingDefaultOn(Ljava/lang/String;I)Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->enabled(I)Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->pulseOnNotificationAvailable()Z +HPLcom/android/internal/hardware/AmbientDisplayConfiguration;->pulseOnNotificationEnabled(I)Z +HPLcom/android/internal/inputmethod/InputMethodSubtypeHandle;->(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeHandle;->equals(Ljava/lang/Object;)Z +HPLcom/android/internal/inputmethod/InputMethodSubtypeHandle;->getInputMethodId()Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodSubtypeHandle;->getSubtypeId()I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->createFrom(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;Ljava/util/List;)Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->filterImeSubtypeList(Ljava/util/List;Z)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->getNextInputMethod(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;Z)Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->onUserActionLocked(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->-get0(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->(Ljava/util/List;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->(Ljava/util/List;Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->getNextInputMethodLocked(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;Z)Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->getUsageRank(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->onUserAction(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/inputmethod/InputMethodInfo;ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->equals(Ljava/lang/Object;)Z +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList$1;->(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList$1;->compare(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodInfo;)I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;->-get0(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;)Landroid/content/pm/PackageManager; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;->(Landroid/content/Context;Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;->getSortedInputMethodAndSubtypeList(ZZ)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->-get0(Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->(Ljava/util/List;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->-wrap0(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->(Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;Landroid/content/Context;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->calculateSubtypeId(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->createInstanceLocked(Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;Landroid/content/Context;)Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->getNextInputMethodLocked(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;Z)Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem; +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->onUserActionLocked(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController;->resetCircularListLocked(Landroid/content/Context;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$1;->()V +HPLcom/android/internal/inputmethod/InputMethodUtils$1;->get(Landroid/view/inputmethod/InputMethodSubtype;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/InputMethodUtils$1;->get(Ljava/lang/Object;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->()V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->(Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->build()Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillAuxiliaryImes(Ljava/util/ArrayList;Landroid/content/Context;)Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillImes(Ljava/util/ArrayList;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder;->isEmpty()Z +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->(Landroid/content/res/Resources;Landroid/content/ContentResolver;Ljava/util/HashMap;Ljava/util/ArrayList;IZ)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->addSubtypeToHistory(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->buildInputMethodsAndSubtypeList(Ljava/lang/String;Landroid/text/TextUtils$SimpleStringSplitter;Landroid/text/TextUtils$SimpleStringSplitter;)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->createEnabledInputMethodListLocked(Ljava/util/List;)Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getBoolean(Ljava/lang/String;Z)Z +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getCurrentUserId()I +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodListLocked()Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodSubtypeListLocked(Landroid/content/Context;Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodSubtypeListLocked(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodsAndSubtypeListLocked()Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodsStr()Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getExplicitlyOrImplicitlyEnabledInputMethodsAndSubtypeListLocked(Landroid/content/Context;)Ljava/util/HashMap; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getInt(Ljava/lang/String;I)I +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethod()Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethodSubtypeHashCode()I +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethodSubtypeId(Ljava/lang/String;)I +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->getSubtypeHistoryStr()Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->isCurrentProfile(I)Z +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->isShowImeWithHardKeyboardEnabled()Z +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->isSubtypeSelected()Z +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->loadInputMethodAndSubtypeHistoryLocked()Ljava/util/List; +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->putInt(Ljava/lang/String;I)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->putSelectedInputMethod(Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->putSelectedSubtype(I)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->putString(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->putSubtypeHistoryStr(Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->saveCurrentInputMethodAndSubtypeToHistory(Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->saveSubtypeHistory(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->setCurrentProfileIds([I)V +HPLcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings;->switchCurrentUser(IZ)V +HPLcom/android/internal/inputmethod/InputMethodUtils;->-get0()Ljava/lang/String; +HPLcom/android/internal/inputmethod/InputMethodUtils;->-wrap0(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->canAddToLastInputMethod(Landroid/view/inputmethod/InputMethodSubtype;)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->checkIfPackageBelongsToUid(Landroid/app/AppOpsManager;ILjava/lang/String;)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->constructLocaleFromString(Ljava/lang/String;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/InputMethodUtils;->containsSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Ljava/util/Locale;ZLjava/lang/String;)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/ArrayList;)Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getFallbackLocaleForDefaultIme(Ljava/util/ArrayList;Landroid/content/Context;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getImplicitlyApplicableSubtypesLocked(Landroid/content/res/Resources;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getImplicitlyApplicableSubtypesLockedImpl(Landroid/content/res/Resources;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getMinimumKeyboardSetWithSystemLocale(Ljava/util/ArrayList;Landroid/content/Context;Ljava/util/Locale;Ljava/util/Locale;)Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getSubtypeIdFromHashCode(Landroid/view/inputmethod/InputMethodInfo;I)I +HPLcom/android/internal/inputmethod/InputMethodUtils;->getSubtypes(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList; +HPLcom/android/internal/inputmethod/InputMethodUtils;->getSystemLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/InputMethodUtils;->isSystemAuxilialyImeThatHasAutomaticSubtype(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->isSystemIme(Landroid/view/inputmethod/InputMethodInfo;)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->isSystemImeThatHasSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->isValidSubtypeId(Landroid/view/inputmethod/InputMethodInfo;I)Z +HPLcom/android/internal/inputmethod/InputMethodUtils;->setDisabledUntilUsed(Landroid/content/pm/IPackageManager;Ljava/lang/String;ILjava/lang/String;)V +HPLcom/android/internal/inputmethod/InputMethodUtils;->setNonSelectedSystemImesDisabledUntilUsed(Landroid/content/pm/IPackageManager;Ljava/util/List;ILjava/lang/String;)V +HPLcom/android/internal/inputmethod/LocaleUtils$LocaleExtractor;->get(Ljava/lang/Object;)Ljava/util/Locale; +HPLcom/android/internal/inputmethod/LocaleUtils$ScoreEntry;->([BI)V +HPLcom/android/internal/inputmethod/LocaleUtils$ScoreEntry;->compare([B[B)I +HPLcom/android/internal/inputmethod/LocaleUtils$ScoreEntry;->set([BI)V +HPLcom/android/internal/inputmethod/LocaleUtils$ScoreEntry;->updateIfBetter([BI)V +HPLcom/android/internal/inputmethod/LocaleUtils;->calculateMatchingSubScore(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)B +HPLcom/android/internal/inputmethod/LocaleUtils;->filterByLanguage(Ljava/util/List;Lcom/android/internal/inputmethod/LocaleUtils$LocaleExtractor;Landroid/os/LocaleList;Ljava/util/ArrayList;)V +HPLcom/android/internal/location/GpsNetInitiatedHandler$1;->(Lcom/android/internal/location/GpsNetInitiatedHandler;)V +HPLcom/android/internal/location/GpsNetInitiatedHandler$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/location/GpsNetInitiatedHandler$2;->(Lcom/android/internal/location/GpsNetInitiatedHandler;)V +HPLcom/android/internal/location/GpsNetInitiatedHandler;->(Landroid/content/Context;Landroid/location/INetInitiatedListener;Z)V +HPLcom/android/internal/location/GpsNetInitiatedHandler;->getInEmergency()Z +HPLcom/android/internal/location/GpsNetInitiatedHandler;->getLocationEnabled()Z +HPLcom/android/internal/location/GpsNetInitiatedHandler;->setInEmergency(Z)V +HPLcom/android/internal/location/GpsNetInitiatedHandler;->setSuplEsEnabled(Z)V +HPLcom/android/internal/location/GpsNetInitiatedHandler;->updateLocationMode()V +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->enable()V +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->getProperties()Lcom/android/internal/location/ProviderProperties; +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->getStatus(Landroid/os/Bundle;)I +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->getStatusUpdateTime()J +HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +HPLcom/android/internal/location/ILocationProvider$Stub;->()V +HPLcom/android/internal/location/ILocationProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProvider; +HPLcom/android/internal/location/ILocationProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/location/ILocationProvider;->disable()V +HPLcom/android/internal/location/ILocationProvider;->enable()V +HPLcom/android/internal/location/ILocationProvider;->getProperties()Lcom/android/internal/location/ProviderProperties; +HPLcom/android/internal/location/ILocationProvider;->getStatus(Landroid/os/Bundle;)I +HPLcom/android/internal/location/ILocationProvider;->getStatusUpdateTime()J +HPLcom/android/internal/location/ILocationProvider;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z +HPLcom/android/internal/location/ILocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +HPLcom/android/internal/location/ProviderProperties$1;->()V +HPLcom/android/internal/location/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderProperties; +HPLcom/android/internal/location/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/internal/location/ProviderProperties;->(ZZZZZZZII)V +HPLcom/android/internal/location/ProviderProperties;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/location/ProviderRequest$1;->()V +HPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderRequest; +HPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/internal/location/ProviderRequest;->()V +HPLcom/android/internal/location/ProviderRequest;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->(Lcom/android/internal/location/gnssmetrics/GnssMetrics;)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->(Lcom/android/internal/location/gnssmetrics/GnssMetrics;Lcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->addItem(D)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->reset()V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->()V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logCn0([FI)V +HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->reset()V +HPLcom/android/internal/logging/EventLogTags;->writeSysuiCount(Ljava/lang/String;I)V +HPLcom/android/internal/logging/EventLogTags;->writeSysuiHistogram(Ljava/lang/String;I)V +HPLcom/android/internal/logging/EventLogTags;->writeSysuiViewVisibility(II)V +HPLcom/android/internal/logging/MetricsLogger;->count(Landroid/content/Context;Ljava/lang/String;I)V +HPLcom/android/internal/logging/MetricsLogger;->count(Ljava/lang/String;I)V +HPLcom/android/internal/logging/MetricsLogger;->hidden(I)V +HPLcom/android/internal/logging/MetricsLogger;->hidden(Landroid/content/Context;I)V +HPLcom/android/internal/logging/MetricsLogger;->histogram(Landroid/content/Context;Ljava/lang/String;I)V +HPLcom/android/internal/logging/MetricsLogger;->histogram(Ljava/lang/String;I)V +HPLcom/android/internal/logging/MetricsLogger;->visibility(IZ)V +HPLcom/android/internal/logging/MetricsLogger;->visible(I)V +HPLcom/android/internal/logging/MetricsLogger;->visible(Landroid/content/Context;I)V +HPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetail(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats; +HPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetailInternal(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats; +HPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsSummaryDev()Landroid/net/NetworkStats; +HPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsSummaryXt()Landroid/net/NetworkStats; +HPLcom/android/internal/notification/SystemNotificationChannels;->createAll(Landroid/content/Context;)V +HPLcom/android/internal/notification/SystemNotificationChannels;->newAccountChannel(Landroid/content/Context;)Landroid/app/NotificationChannel; +HPLcom/android/internal/os/AtomicFile;->exists()Z +HPLcom/android/internal/os/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V +HPLcom/android/internal/os/AtomicFile;->readFully()[B +HPLcom/android/internal/os/AtomicFile;->startWrite()Ljava/io/FileOutputStream; +HPLcom/android/internal/os/BatterySipper$DrainType;->(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatterySipper$DrainType;->values()[Lcom/android/internal/os/BatterySipper$DrainType; +HPLcom/android/internal/os/BatterySipper;->(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V +HPLcom/android/internal/os/BatterySipper;->add(Lcom/android/internal/os/BatterySipper;)V +HPLcom/android/internal/os/BatterySipper;->compareTo(Lcom/android/internal/os/BatterySipper;)I +HPLcom/android/internal/os/BatterySipper;->compareTo(Ljava/lang/Object;)I +HPLcom/android/internal/os/BatterySipper;->computeMobilemspp()V +HPLcom/android/internal/os/BatterySipper;->getUid()I +HPLcom/android/internal/os/BatterySipper;->sumPower()D +HPLcom/android/internal/os/BatteryStatsHelper$1;->(Lcom/android/internal/os/BatteryStatsHelper;)V +HPLcom/android/internal/os/BatteryStatsHelper;->addBluetoothUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addEntry(Lcom/android/internal/os/BatterySipper$DrainType;JD)Lcom/android/internal/os/BatterySipper; +HPLcom/android/internal/os/BatteryStatsHelper;->addIdleUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addMemoryUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addPhoneUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addRadioUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addScreenUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addUserUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->addWiFiUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->aggregateSippers(Lcom/android/internal/os/BatterySipper;Ljava/util/List;Ljava/lang/String;)V +HPLcom/android/internal/os/BatteryStatsHelper;->checkHasBluetoothPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->checkHasWifiPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->convertMsToUs(J)J +HPLcom/android/internal/os/BatteryStatsHelper;->convertUsToMs(J)J +HPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/BatteryStats;)V +HPLcom/android/internal/os/BatteryStatsHelper;->getComputedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getForegroundActivityTotalTimeUs(Landroid/os/BatteryStats$Uid;J)J +HPLcom/android/internal/os/BatteryStatsHelper;->getMaxDrainedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getMinDrainedPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getMobilemsppList()Ljava/util/List; +HPLcom/android/internal/os/BatteryStatsHelper;->getPowerProfile()Lcom/android/internal/os/PowerProfile; +HPLcom/android/internal/os/BatteryStatsHelper;->getProcessForegroundTimeMs(Landroid/os/BatteryStats$Uid;I)J +HPLcom/android/internal/os/BatteryStatsHelper;->getTotalPower()D +HPLcom/android/internal/os/BatteryStatsHelper;->getUsageList()Ljava/util/List; +HPLcom/android/internal/os/BatteryStatsHelper;->isTypeService(Lcom/android/internal/os/BatterySipper;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->isTypeSystem(Lcom/android/internal/os/BatterySipper;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->makemAh(D)Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsHelper;->processAppUsage(Landroid/util/SparseArray;)V +HPLcom/android/internal/os/BatteryStatsHelper;->processMiscUsage()V +HPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(II)V +HPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;)V +HPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;JJ)V +HPLcom/android/internal/os/BatteryStatsHelper;->removeHiddenBatterySippers(Ljava/util/List;)D +HPLcom/android/internal/os/BatteryStatsHelper;->shouldHideSipper(Lcom/android/internal/os/BatterySipper;)Z +HPLcom/android/internal/os/BatteryStatsHelper;->smearScreenBatterySipper(Ljava/util/List;Lcom/android/internal/os/BatterySipper;)V +HPLcom/android/internal/os/BatteryStatsImpl$3;->(Lcom/android/internal/os/BatteryStatsImpl;ILandroid/util/SparseLongArray;)V +HPLcom/android/internal/os/BatteryStatsImpl$3;->onUidCpuTime(IJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$4;->(Lcom/android/internal/os/BatteryStatsImpl;)V +HPLcom/android/internal/os/BatteryStatsImpl$4;->onCpuFreqs([J)V +HPLcom/android/internal/os/BatteryStatsImpl$4;->onUidCpuFreqTime(I[J)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->abortLastDuration(Lcom/android/internal/os/BatteryStatsImpl;)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->addDuration(Lcom/android/internal/os/BatteryStatsImpl;J)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeCurrentCountLocked()I +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeOverage(J)J +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeRunTimeLocked(J)J +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->recomputeLastDuration(JZ)V +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->reset(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->reset(Z)V +HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->addAtomic(I)V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->getCountLocked(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStarted(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->reset(Z)V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->stepAtomic()V +HPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Lcom/android/internal/os/BatteryStatsImpl$DurationTimer; +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->reset(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->onTimeStarted(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->reset(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->getCountLocked(I)J +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->onTimeStarted(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([J)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->fillArray([JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getCountsLocked(I)[J +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getSize()I +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStarted(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->reset(Z)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeToParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeToParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V +HPLcom/android/internal/os/BatteryStatsImpl$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->cleanup()V +HPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->isRunningLocked()Z +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;)J +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->reset(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->setMark(J)V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->remove(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V +HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->reset(JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z +HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeToParcel(Landroid/os/Parcel;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->getCountLocked(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->onTimeStarted(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->reset(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->writeTimerToParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$Timer;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Timer;->writeToParcel(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$1;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$1;->instantiateObject()Ljava/lang/Object; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getLaunches(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStarts(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->writeToParcelLocked(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->noteWakeupAlarmLocked(Ljava/lang/String;)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->writeToParcelLocked(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addExcessiveCpu(JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addForegroundTimeLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->countExcessivePowers()I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->detach()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getExcessivePower(I)Landroid/os/BatteryStats$Uid$Proc$ExcessivePower; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getForegroundTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getNumAnrs(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getNumCrashes(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getStarts(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getSystemTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getUserTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->incStartsLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->isActive()Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->onTimeStopped(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeToParcelLocked(Landroid/os/Parcel;)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getHandle()I +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->reset()Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->writeToParcelLocked(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->reset()Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->writeToParcelLocked(Landroid/os/Parcel;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->createCameraTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->createVibratorOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$BatchTimer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Landroid/os/BatteryStats$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Landroid/os/BatteryStats$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuFreqTimes(I)[J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFullWifiLockTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobCompletionStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioActiveCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioActiveTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioApWakeupCount(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityBytes(II)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityPackets(II)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateBluetoothControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateWifiControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getScreenOffCpuFreqTimes(I)[J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSensorStats()Landroid/util/SparseArray; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSyncStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSystemCpuTimeUs(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getTimeAtCpuSpeed(III)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUid()I +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserActivityCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserCpuTimeUs(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockStats()Landroid/util/ArrayMap; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiRadioApWakeupCount(I)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiRunningTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanActualTime(J)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanBackgroundCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanBackgroundTime(J)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->hasUserActivity()Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->initNetworkActivityLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->isInBackground()Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityPausedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityResumedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanResultsLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStartedLocked(JZ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStoppedLocked(JZ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOffLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockAcquiredLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockReleasedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteNetworkActivityLocked(IJJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartGps(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSensor(IJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSyncLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopGps(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSensor(IJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSyncLocked(Ljava/lang/String;J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteUserActivityLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOffLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOnLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastDisabledLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastEnabledLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiRadioApWakeupLocked()V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStartedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStoppedLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->reportExcessiveCpuLocked(Ljava/lang/String;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->reset(JJ)Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeToParcelLocked(Landroid/os/Parcel;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->-wrap0(Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;I)Z +HPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->exists(I)Z +HPLcom/android/internal/os/BatteryStatsImpl;->-get0()I +HPLcom/android/internal/os/BatteryStatsImpl;->-get1(Lcom/android/internal/os/BatteryStatsImpl;)Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback; +HPLcom/android/internal/os/BatteryStatsImpl;->-get5(Lcom/android/internal/os/BatteryStatsImpl;)Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider; +HPLcom/android/internal/os/BatteryStatsImpl;->-set0(Lcom/android/internal/os/BatteryStatsImpl;[J)[J +HPLcom/android/internal/os/BatteryStatsImpl;->-wrap0(Lcom/android/internal/os/BatteryStatsImpl$DualTimer;Z)Z +HPLcom/android/internal/os/BatteryStatsImpl;->-wrap1(Lcom/android/internal/os/BatteryStatsImpl$Timer;Z)Z +HPLcom/android/internal/os/BatteryStatsImpl;->-wrap2(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)V +HPLcom/android/internal/os/BatteryStatsImpl;->-wrap3(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->addIsolatedUidLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->addPackageChange(Landroid/os/BatteryStats$PackageChange;)V +HPLcom/android/internal/os/BatteryStatsImpl;->aggregateLastWakeupUptimeLocked(J)V +HPLcom/android/internal/os/BatteryStatsImpl;->buildBatteryLevelInt(Landroid/os/BatteryStats$HistoryItem;)I +HPLcom/android/internal/os/BatteryStatsImpl;->buildStateInt(Landroid/os/BatteryStats$HistoryItem;)I +HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryRealtime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryScreenOffRealtime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryScreenOffUptime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryTimeRemaining(J)J +HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryUptime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->computeHistoryStepDetails(Landroid/os/BatteryStats$HistoryStepDetails;Landroid/os/BatteryStats$HistoryStepDetails;)V +HPLcom/android/internal/os/BatteryStatsImpl;->detachLongCounterIfNotNull(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)V +HPLcom/android/internal/os/BatteryStatsImpl;->dumpLocked(Landroid/content/Context;Ljava/io/PrintWriter;IIJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->excludeFromStringArray([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->finishAddingCpuLocked(IIIIIIII)V +HPLcom/android/internal/os/BatteryStatsImpl;->getBatteryRealtime(J)J +HPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptime(J)J +HPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptimeLocked()J +HPLcom/android/internal/os/BatteryStatsImpl;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getBluetoothScanTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getCpuFreqs()[J +HPLcom/android/internal/os/BatteryStatsImpl;->getCurrentDailyStartTime()J +HPLcom/android/internal/os/BatteryStatsImpl;->getDailyChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getDailyDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getDailyItemLocked(I)Landroid/os/BatteryStats$DailyItem; +HPLcom/android/internal/os/BatteryStatsImpl;->getDailyPackageChanges()Ljava/util/ArrayList; +HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdlingCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdlingTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getDischargeCoulombCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HPLcom/android/internal/os/BatteryStatsImpl;->getDischargeScreenOffCoulombCounter()Landroid/os/BatteryStats$LongCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getEndPlatformVersion()Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->getEstimatedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryBaseTime()J +HPLcom/android/internal/os/BatteryStatsImpl;->getInteractiveTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getKernelMemoryStats()Landroid/util/LongSparseArray; +HPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getLongestDeviceIdleModeTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getMaxLearnedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getMinLearnedBatteryCapacity()I +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveAdjustedTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownTime(I)J +HPLcom/android/internal/os/BatteryStatsImpl;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityBytes(II)J +HPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityPackets(II)J +HPLcom/android/internal/os/BatteryStatsImpl;->getNextMaxDailyDeadline()J +HPLcom/android/internal/os/BatteryStatsImpl;->getNextMinDailyDeadline()J +HPLcom/android/internal/os/BatteryStatsImpl;->getNumConnectivityChange(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getPackageStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; +HPLcom/android/internal/os/BatteryStatsImpl;->getParcelVersion()I +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneOnTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalScanningTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getPowerSaveModeEnabledTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; +HPLcom/android/internal/os/BatteryStatsImpl;->getScreenBrightnessTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getScreenOnCount(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->getScreenOnTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; +HPLcom/android/internal/os/BatteryStatsImpl;->getStartCount()I +HPLcom/android/internal/os/BatteryStatsImpl;->getStartPlatformVersion()Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray; +HPLcom/android/internal/os/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/internal/os/BatteryStatsImpl$Uid; +HPLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonStats()Ljava/util/Map; +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiOnTime(JI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiStateCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiStateTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateCount(II)I +HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateTime(IJI)J +HPLcom/android/internal/os/BatteryStatsImpl;->hasBluetoothActivityReporting()Z +HPLcom/android/internal/os/BatteryStatsImpl;->hasWifiActivityReporting()Z +HPLcom/android/internal/os/BatteryStatsImpl;->includeInStringArray([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/internal/os/BatteryStatsImpl;->initActiveHistoryEventsLocked(JJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->isCharging()Z +HPLcom/android/internal/os/BatteryStatsImpl;->isOnBattery()Z +HPLcom/android/internal/os/BatteryStatsImpl;->mapUid(I)I +HPLcom/android/internal/os/BatteryStatsImpl;->noteActivityPausedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteActivityResumedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteAlarmFinishLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteAlarmStartLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOffLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOnLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanResultsFromSourceLocked(Landroid/os/WorkSource;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedFromSourceLocked(Landroid/os/WorkSource;Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedLocked(IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedFromSourceLocked(Landroid/os/WorkSource;Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedLocked(IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOffLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOnLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteConnectivityChangedLocked(ILjava/lang/String;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteCurrentTimeChangedLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteInteractiveLocked(Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteNetworkInterfaceTypeLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->notePackageInstalledLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->notePhoneSignalStrengthLocked(Landroid/telephony/SignalStrength;)V +HPLcom/android/internal/os/BatteryStatsImpl;->notePhoneStateLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteProcessDiedLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteProcessFinishLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteProcessStartLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteResetBluetoothScanLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->noteScreenBrightnessLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteScreenStateLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStartGpsLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStartSensorLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStartWakeLocked(IILjava/lang/String;Ljava/lang/String;IZJJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStopGpsLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStopSensorLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteStopWakeLocked(IILjava/lang/String;Ljava/lang/String;IJJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteSyncFinishLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteSyncStartLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteUidProcessStateLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteUserActivityLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOffLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOnLocked(IJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiMulticastDisabledLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiMulticastEnabledLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiOffLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiOnLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRadioApWakeupLocked(JJI)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRadioPowerState(IJI)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRssiChangedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRunningLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStartedFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStartedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStoppedFromSourceLocked(Landroid/os/WorkSource;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStoppedLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiStateLocked(ILjava/lang/String;)V +HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiSupplicantStateChangedLocked(IZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->prepareForDumpLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->readNetworkStatsLocked([Ljava/lang/String;)Landroid/net/NetworkStats; +HPLcom/android/internal/os/BatteryStatsImpl;->recordCurrentTimeChangeLocked(JJJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->removeIsolatedUidLocked(I)V +HPLcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->requestImmediateCpuUpdate()V +HPLcom/android/internal/os/BatteryStatsImpl;->resetAllStatsCmdLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->resetAllStatsLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->resetLongCounterIfNotNull(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->resetTimerIfNotNull(Lcom/android/internal/os/BatteryStatsImpl$DualTimer;Z)Z +HPLcom/android/internal/os/BatteryStatsImpl;->resetTimerIfNotNull(Lcom/android/internal/os/BatteryStatsImpl$Timer;Z)Z +HPLcom/android/internal/os/BatteryStatsImpl;->scheduleRemoveIsolatedUidLocked(II)V +HPLcom/android/internal/os/BatteryStatsImpl;->scheduleSyncExternalStatsLocked(Ljava/lang/String;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIII)V +HPLcom/android/internal/os/BatteryStatsImpl;->setChargingLocked(Z)Z +HPLcom/android/internal/os/BatteryStatsImpl;->setNoAutoReset(Z)V +HPLcom/android/internal/os/BatteryStatsImpl;->setOnBatteryLocked(JJZIII)V +HPLcom/android/internal/os/BatteryStatsImpl;->startAddingCpuLocked()Z +HPLcom/android/internal/os/BatteryStatsImpl;->updateAllPhoneStateLocked(III)V +HPLcom/android/internal/os/BatteryStatsImpl;->updateBluetoothStateLocked(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V +HPLcom/android/internal/os/BatteryStatsImpl;->updateDischargeScreenLevelsLocked(ZZ)V +HPLcom/android/internal/os/BatteryStatsImpl;->updateMobileRadioState(Landroid/telephony/ModemActivityInfo;)V +HPLcom/android/internal/os/BatteryStatsImpl;->updateTimeBasesLocked(ZZJJ)V +HPLcom/android/internal/os/BatteryStatsImpl;->updateWifiState(Landroid/net/wifi/WifiActivityEnergyInfo;)V +HPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryTag(Landroid/os/BatteryStats$HistoryTag;)I +HPLcom/android/internal/os/BatteryStatsImpl;->writeSyncLocked()V +HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcelLocked(Landroid/os/Parcel;ZI)V +HPLcom/android/internal/os/BinderInternal;->forceBinderGc()V +HPLcom/android/internal/os/BinderInternal;->forceGc(Ljava/lang/String;)V +HPLcom/android/internal/os/BinderInternal;->getLastGcTime()J +HPLcom/android/internal/os/BluetoothPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/BluetoothPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/BluetoothPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V +HPLcom/android/internal/os/BluetoothPowerCalculator;->reset()V +HPLcom/android/internal/os/CameraPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/CameraPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/ClassLoaderFactory;->isDelegateLastClassLoaderName(Ljava/lang/String;)Z +HPLcom/android/internal/os/ClassLoaderFactory;->isValidClassLoaderName(Ljava/lang/String;)Z +HPLcom/android/internal/os/CpuPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/CpuPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/FlashlightPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/FlashlightPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/HandlerCaller;->obtainMessageBO(IZLjava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageI(II)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageIIIIII(IIIIIII)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageIIO(IIILjava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageIIOOOO(IIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageIOO(IILjava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->obtainMessageOOO(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/os/HandlerCaller;->removeMessages(I)V +HPLcom/android/internal/os/HandlerCaller;->sendMessageDelayed(Landroid/os/Message;J)V +HPLcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLcom/android/internal/os/IDropBoxManagerService$Stub;->()V +HPLcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService; +HPLcom/android/internal/os/IDropBoxManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/os/IDropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/internal/os/IDropBoxManagerService;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLcom/android/internal/os/IDropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z +HPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->send(ILandroid/os/Bundle;)V +HPLcom/android/internal/os/IResultReceiver$Stub;->()V +HPLcom/android/internal/os/IResultReceiver$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/os/IResultReceiver$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IResultReceiver; +HPLcom/android/internal/os/IResultReceiver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/os/IResultReceiver;->send(ILandroid/os/Bundle;)V +HPLcom/android/internal/os/IShellCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/os/IShellCallback$Stub$Proxy;->openOutputFile(Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLcom/android/internal/os/IShellCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IShellCallback; +HPLcom/android/internal/os/IShellCallback;->openOutputFile(Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HPLcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;->onCpuFreqs([J)V +HPLcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;->onUidCpuFreqTime(I[J)V +HPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->removeUid(I)V +HPLcom/android/internal/os/KernelUidCpuTimeReader$Callback;->onUidCpuTime(IJJ)V +HPLcom/android/internal/os/KernelUidCpuTimeReader;->removeUid(I)V +HPLcom/android/internal/os/KernelUidCpuTimeReader;->removeUidsFromKernelModule(II)V +HPLcom/android/internal/os/LoggingPrintStream;->println(Ljava/lang/String;)V +HPLcom/android/internal/os/MemoryPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/MemoryPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V +HPLcom/android/internal/os/MobileRadioPowerCalculator;->(Lcom/android/internal/os/PowerProfile;Landroid/os/BatteryStats;)V +HPLcom/android/internal/os/MobileRadioPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/MobileRadioPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V +HPLcom/android/internal/os/MobileRadioPowerCalculator;->getMobilePowerPerPacket(JI)D +HPLcom/android/internal/os/MobileRadioPowerCalculator;->reset()V +HPLcom/android/internal/os/MobileRadioPowerCalculator;->reset(Landroid/os/BatteryStats;)V +HPLcom/android/internal/os/PowerCalculator;->()V +HPLcom/android/internal/os/PowerCalculator;->reset()V +HPLcom/android/internal/os/PowerProfile$CpuClusterKey;->-get1(Lcom/android/internal/os/PowerProfile$CpuClusterKey;)Ljava/lang/String; +HPLcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;I)D +HPLcom/android/internal/os/PowerProfile;->getAveragePowerForCpu(II)D +HPLcom/android/internal/os/PowerProfile;->getNumElements(Ljava/lang/String;)I +HPLcom/android/internal/os/ProcessCpuTracker$FilterStats;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/internal/os/ProcessCpuTracker;->countStats()I +HPLcom/android/internal/os/ProcessCpuTracker;->getCpuTimeForPid(I)J +HPLcom/android/internal/os/ProcessCpuTracker;->getLastIdleTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getLastIoWaitTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getLastIrqTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getLastSoftIrqTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getLastSystemTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getLastUserTime()I +HPLcom/android/internal/os/ProcessCpuTracker;->getStats(I)Lcom/android/internal/os/ProcessCpuTracker$Stats; +HPLcom/android/internal/os/ProcessCpuTracker;->getStats(Lcom/android/internal/os/ProcessCpuTracker$FilterStats;)Ljava/util/List; +HPLcom/android/internal/os/ProcessCpuTracker;->hasGoodLastStats()Z +HPLcom/android/internal/os/RuntimeInit;->wtf(Ljava/lang/String;Ljava/lang/Throwable;Z)V +HPLcom/android/internal/os/SensorPowerCalculator;->(Lcom/android/internal/os/PowerProfile;Landroid/hardware/SensorManager;)V +HPLcom/android/internal/os/SensorPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/TransferPipe;->()V +HPLcom/android/internal/os/TransferPipe;->(Ljava/lang/String;)V +HPLcom/android/internal/os/TransferPipe;->closeFd(I)V +HPLcom/android/internal/os/TransferPipe;->getReadFd()Landroid/os/ParcelFileDescriptor; +HPLcom/android/internal/os/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor; +HPLcom/android/internal/os/TransferPipe;->go(Ljava/io/FileDescriptor;)V +HPLcom/android/internal/os/TransferPipe;->go(Ljava/io/FileDescriptor;J)V +HPLcom/android/internal/os/TransferPipe;->kill()V +HPLcom/android/internal/os/TransferPipe;->run()V +HPLcom/android/internal/os/WakelockPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/WakelockPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/WakelockPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V +HPLcom/android/internal/os/WakelockPowerCalculator;->reset()V +HPLcom/android/internal/os/WifiPowerCalculator;->(Lcom/android/internal/os/PowerProfile;)V +HPLcom/android/internal/os/WifiPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V +HPLcom/android/internal/os/WifiPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V +HPLcom/android/internal/os/WifiPowerCalculator;->reset()V +HPLcom/android/internal/policy/DecorView$2;->(Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView$ColorViewState;)V +HPLcom/android/internal/policy/DecorView$2;->run()V +HPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(IIIZ)Z +HPLcom/android/internal/policy/DecorView;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/DecorView;->getColorViewLeftInset(II)I +HPLcom/android/internal/policy/DecorView;->getNavigationBarRect(IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/internal/policy/DecorView;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/internal/policy/DecorView;->onDetachedFromWindow()V +HPLcom/android/internal/policy/DecorView;->onTouchEvent(Landroid/view/MotionEvent;)Z +HPLcom/android/internal/policy/DecorView;->releaseThreadedRenderer()V +HPLcom/android/internal/policy/DecorView;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;->onDrawn()V +HPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->()V +HPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->addStateMonitorCallback(Lcom/android/internal/policy/IKeyguardStateCallback;)V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onBootCompleted()V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurnedOn()V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onStartedWakingUp()V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onSystemReady()V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->setKeyguardEnabled(Z)V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->setOccluded(ZZ)V +HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->startKeyguardExitAnimation(JJ)V +HPLcom/android/internal/policy/IKeyguardService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardService; +HPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->()V +HPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/policy/IShortcutService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/policy/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IShortcutService; +HPLcom/android/internal/policy/PhoneFallbackEventHandler;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PhoneFallbackEventHandler;->getAudioManager()Landroid/media/AudioManager; +HPLcom/android/internal/policy/PhoneFallbackEventHandler;->onKeyDown(ILandroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PhoneFallbackEventHandler;->onKeyUp(ILandroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PhoneFallbackEventHandler;->preDispatchKeyEvent(Landroid/view/KeyEvent;)V +HPLcom/android/internal/policy/PhoneWindow$ActionMenuPresenterCallback;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState$1;->()V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;->()V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;->(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;)V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->onSaveInstanceState()Landroid/os/Parcelable; +HPLcom/android/internal/policy/PhoneWindow;->checkCloseActionMenu(Landroid/view/Menu;)V +HPLcom/android/internal/policy/PhoneWindow;->closePanel(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;Z)V +HPLcom/android/internal/policy/PhoneWindow;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/internal/policy/PhoneWindow;->onKeyDown(IILandroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PhoneWindow;->onKeyUp(IILandroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PhoneWindow;->reportActivityRelaunched()V +HPLcom/android/internal/policy/PhoneWindow;->restorePanelState(Landroid/util/SparseArray;)V +HPLcom/android/internal/policy/PhoneWindow;->sendCloseSystemWindows(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/internal/policy/PhoneWindow;->setIsStartingWindow(Z)V +HPLcom/android/internal/policy/PhoneWindow;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z +HPLcom/android/internal/policy/PipSnapAlgorithm;->applySnapFraction(Landroid/graphics/Rect;Landroid/graphics/Rect;F)V +HPLcom/android/internal/policy/PipSnapAlgorithm;->getMovementBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;I)V +HPLcom/android/internal/policy/PipSnapAlgorithm;->getSizeForAspectRatio(FFII)Landroid/util/Size; +HPLcom/android/internal/policy/PipSnapAlgorithm;->getSnapFraction(Landroid/graphics/Rect;Landroid/graphics/Rect;)F +HPLcom/android/internal/policy/PipSnapAlgorithm;->snapRectToClosestEdge(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionCancelled()V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionFinished()V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionPending()V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionStarting(JJ)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->disable(II)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->handleSystemKey(I)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setTopAppHidesStatusBar(Z)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setWindowState(II)V +HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->topAppWindowChanged(Z)V +HPLcom/android/internal/statusbar/IStatusBar$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/statusbar/IStatusBar; +HPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->clearNotificationEffects()V +HPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V +HPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V +HPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->onPanelHidden()V +HPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->onPanelRevealed(ZI)V +HPLcom/android/internal/statusbar/IStatusBarService$Stub;->()V +HPLcom/android/internal/statusbar/IStatusBarService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/statusbar/NotificationVisibility$1;->()V +HPLcom/android/internal/statusbar/NotificationVisibility$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/internal/statusbar/NotificationVisibility$1;->newArray(I)[Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility$1;->newArray(I)[Ljava/lang/Object; +HPLcom/android/internal/statusbar/NotificationVisibility;->-wrap0(Landroid/os/Parcel;)Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility;->()V +HPLcom/android/internal/statusbar/NotificationVisibility;->equals(Ljava/lang/Object;)Z +HPLcom/android/internal/statusbar/NotificationVisibility;->hashCode()I +HPLcom/android/internal/statusbar/NotificationVisibility;->obtain()Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility;->obtain(Landroid/os/Parcel;)Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility;->obtain(Ljava/lang/String;IZ)Lcom/android/internal/statusbar/NotificationVisibility; +HPLcom/android/internal/statusbar/NotificationVisibility;->readFromParcel(Landroid/os/Parcel;)V +HPLcom/android/internal/statusbar/NotificationVisibility;->recycle()V +HPLcom/android/internal/statusbar/NotificationVisibility;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->removeConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService$Stub;->()V +HPLcom/android/internal/telecom/IConnectionService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IConnectionService; +HPLcom/android/internal/telecom/IConnectionService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telecom/IConnectionService;->abort(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->answer(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->answerVideo(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->conference(Ljava/lang/String;Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->createConnectionComplete(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->createConnectionFailed(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->disconnect(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->hold(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->mergeConference(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->onCallAudioStateChanged(Ljava/lang/String;Landroid/telecom/CallAudioState;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->onExtrasChanged(Ljava/lang/String;Landroid/os/Bundle;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->onPostDialContinue(Ljava/lang/String;ZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->playDtmfTone(Ljava/lang/String;CLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->pullExternalCall(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->reject(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->rejectWithMessage(Ljava/lang/String;Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->removeConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->respondToRttUpgradeRequest(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->sendCallEvent(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->silence(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->splitFromConference(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->startRtt(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->stopDtmfTone(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->stopRtt(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->swapConference(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionService;->unhold(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->handleCreateConnectionComplete(Ljava/lang/String;Landroid/telecom/ConnectionRequest;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub$Proxy;->queryRemoteConnectionServices(Lcom/android/internal/telecom/RemoteServiceCallback;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->()V +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IConnectionServiceAdapter; +HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->addConferenceCall(Ljava/lang/String;Landroid/telecom/ParcelableConference;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->addExistingConnection(Ljava/lang/String;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->handleCreateConnectionComplete(Ljava/lang/String;Landroid/telecom/ConnectionRequest;Landroid/telecom/ParcelableConnection;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onConnectionEvent(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onPostDialChar(Ljava/lang/String;CLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onPostDialWait(Ljava/lang/String;Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onRemoteRttRequest(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onRttInitiationFailure(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onRttInitiationSuccess(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->onRttSessionRemotelyTerminated(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->putExtras(Ljava/lang/String;Landroid/os/Bundle;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->queryRemoteConnectionServices(Lcom/android/internal/telecom/RemoteServiceCallback;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->removeCall(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->removeExtras(Ljava/lang/String;Ljava/util/List;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setActive(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setAddress(Ljava/lang/String;Landroid/net/Uri;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setAudioRoute(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setCallerDisplayName(Ljava/lang/String;Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setConferenceMergeFailed(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setConferenceableConnections(Ljava/lang/String;Ljava/util/List;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setConnectionCapabilities(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setConnectionProperties(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setDialing(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setDisconnected(Ljava/lang/String;Landroid/telecom/DisconnectCause;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setIsConferenced(Ljava/lang/String;Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setIsVoipAudioMode(Ljava/lang/String;ZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setOnHold(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setPulling(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setRingbackRequested(Ljava/lang/String;ZLandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setRinging(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setStatusHints(Ljava/lang/String;Landroid/telecom/StatusHints;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setVideoProvider(Ljava/lang/String;Lcom/android/internal/telecom/IVideoProvider;Landroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IConnectionServiceAdapter;->setVideoState(Ljava/lang/String;ILandroid/telecom/Logging/Session$Info;)V +HPLcom/android/internal/telecom/IInCallAdapter$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telecom/IInCallAdapter$Stub;->()V +HPLcom/android/internal/telecom/IInCallAdapter$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telecom/IInCallAdapter$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallAdapter; +HPLcom/android/internal/telecom/IInCallAdapter;->answerCall(Ljava/lang/String;I)V +HPLcom/android/internal/telecom/IInCallAdapter;->conference(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->disconnectCall(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->holdCall(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->mergeConference(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->mute(Z)V +HPLcom/android/internal/telecom/IInCallAdapter;->phoneAccountSelected(Ljava/lang/String;Landroid/telecom/PhoneAccountHandle;Z)V +HPLcom/android/internal/telecom/IInCallAdapter;->playDtmfTone(Ljava/lang/String;C)V +HPLcom/android/internal/telecom/IInCallAdapter;->postDialContinue(Ljava/lang/String;Z)V +HPLcom/android/internal/telecom/IInCallAdapter;->pullExternalCall(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->putExtras(Ljava/lang/String;Landroid/os/Bundle;)V +HPLcom/android/internal/telecom/IInCallAdapter;->rejectCall(Ljava/lang/String;ZLjava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->removeExtras(Ljava/lang/String;Ljava/util/List;)V +HPLcom/android/internal/telecom/IInCallAdapter;->respondToRttRequest(Ljava/lang/String;IZ)V +HPLcom/android/internal/telecom/IInCallAdapter;->sendCallEvent(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V +HPLcom/android/internal/telecom/IInCallAdapter;->sendRttRequest(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->setAudioRoute(I)V +HPLcom/android/internal/telecom/IInCallAdapter;->setRttMode(Ljava/lang/String;I)V +HPLcom/android/internal/telecom/IInCallAdapter;->splitFromConference(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->stopDtmfTone(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->stopRtt(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->swapConference(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallAdapter;->turnOffProximitySensor(Z)V +HPLcom/android/internal/telecom/IInCallAdapter;->turnOnProximitySensor()V +HPLcom/android/internal/telecom/IInCallAdapter;->unholdCall(Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->addCall(Landroid/telecom/ParcelableCall;)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->onCanAddCallChanged(Z)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->setInCallAdapter(Lcom/android/internal/telecom/IInCallAdapter;)V +HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->updateCall(Landroid/telecom/ParcelableCall;)V +HPLcom/android/internal/telecom/IInCallService$Stub;->()V +HPLcom/android/internal/telecom/IInCallService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallService; +HPLcom/android/internal/telecom/IInCallService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telecom/IInCallService;->addCall(Landroid/telecom/ParcelableCall;)V +HPLcom/android/internal/telecom/IInCallService;->bringToForeground(Z)V +HPLcom/android/internal/telecom/IInCallService;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V +HPLcom/android/internal/telecom/IInCallService;->onCanAddCallChanged(Z)V +HPLcom/android/internal/telecom/IInCallService;->onConnectionEvent(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V +HPLcom/android/internal/telecom/IInCallService;->onRttInitiationFailure(Ljava/lang/String;I)V +HPLcom/android/internal/telecom/IInCallService;->onRttUpgradeRequest(Ljava/lang/String;I)V +HPLcom/android/internal/telecom/IInCallService;->setInCallAdapter(Lcom/android/internal/telecom/IInCallAdapter;)V +HPLcom/android/internal/telecom/IInCallService;->setPostDial(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallService;->setPostDialWait(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/telecom/IInCallService;->silenceRinger()V +HPLcom/android/internal/telecom/IInCallService;->updateCall(Landroid/telecom/ParcelableCall;)V +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getLine1Number(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getPhoneAccountsSupportingScheme(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getSystemDialerPackage()Ljava/lang/String; +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isRinging(Ljava/lang/String;)Z +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->placeCall(Landroid/net/Uri;Landroid/os/Bundle;Ljava/lang/String;)V +HPLcom/android/internal/telecom/ITelecomService$Stub;->()V +HPLcom/android/internal/telecom/ITelecomService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telecom/IVideoProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IVideoProvider; +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->onResult(Ljava/util/List;Ljava/util/List;)V +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub;->()V +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/RemoteServiceCallback; +HPLcom/android/internal/telecom/RemoteServiceCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telecom/RemoteServiceCallback;->onError()V +HPLcom/android/internal/telecom/RemoteServiceCallback;->onResult(Ljava/util/List;Ljava/util/List;)V +HPLcom/android/internal/telephony/BaseCommands;->getRilVersion()I +HPLcom/android/internal/telephony/CallerInfo;->()V +HPLcom/android/internal/telephony/CallerInfo;->doSecondaryLookupIfNecessary(Landroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfo;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfo;->getCallerInfo(Landroid/content/Context;Landroid/net/Uri;Landroid/database/Cursor;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfo;->getCurrentCountryIso(Landroid/content/Context;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->getCurrentCountryIso(Landroid/content/Context;Ljava/util/Locale;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->getGeoDescription(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->normalize(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfo;->toString()Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$1;->(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Lcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;I)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$1;->run()V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;->(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Landroid/os/Looper;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;->handleGeoDescription(Landroid/os/Message;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->-get0(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->-get1(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;)Landroid/content/Context; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->-set0(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Lcom/android/internal/telephony/CallerInfo;)Lcom/android/internal/telephony/CallerInfo; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->-set1(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Landroid/content/Context;)Landroid/content/Context; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->-set2(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;Landroid/net/Uri;)Landroid/net/Uri; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->(Lcom/android/internal/telephony/CallerInfoAsyncQuery;Landroid/content/Context;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->(Lcom/android/internal/telephony/CallerInfoAsyncQuery;Landroid/content/Context;Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->createHandler(Landroid/os/Looper;)Landroid/os/Handler; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;->()V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;->(Lcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->-wrap0(Landroid/net/Uri;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->-wrap1(Lcom/android/internal/telephony/CallerInfoAsyncQuery;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->()V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->allocate(Landroid/content/Context;Landroid/net/Uri;)V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->getCurrentProfileContentResolver(Landroid/content/Context;)Landroid/content/ContentResolver; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->release()V +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->sanitizeUriToString(Landroid/net/Uri;)Ljava/lang/String; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->startQuery(ILandroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;Ljava/lang/Object;)Lcom/android/internal/telephony/CallerInfoAsyncQuery; +HPLcom/android/internal/telephony/CallerInfoAsyncQuery;->startQuery(ILandroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;Ljava/lang/Object;I)Lcom/android/internal/telephony/CallerInfoAsyncQuery; +HPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/content/ContentResolver;I)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->getPackage()Ljava/lang/String; +HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageModified(Ljava/lang/String;)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/CarrierServiceBindHelper;->-get0(Lcom/android/internal/telephony/CarrierServiceBindHelper;)[Lcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding; +HPLcom/android/internal/telephony/DeviceStateMonitor$1;->onDisplayChanged(I)V +HPLcom/android/internal/telephony/DeviceStateMonitor;->-wrap1(Lcom/android/internal/telephony/DeviceStateMonitor;)Z +HPLcom/android/internal/telephony/DeviceStateMonitor;->isLowDataExpected()Z +HPLcom/android/internal/telephony/DeviceStateMonitor;->shouldTurnOffDormancyUpdate()Z +HPLcom/android/internal/telephony/DeviceStateMonitor;->shouldTurnOffFullNetworkUpdate()Z +HPLcom/android/internal/telephony/DeviceStateMonitor;->shouldTurnOffSignalStrength()Z +HPLcom/android/internal/telephony/GsmCdmaPhone;->getDataEnabled()Z +HPLcom/android/internal/telephony/GsmCdmaPhone;->getDeviceId()Ljava/lang/String; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getFullIccSerialNumber()Ljava/lang/String; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getGroupIdLevel1()Ljava/lang/String; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getIccSmsInterfaceManager()Lcom/android/internal/telephony/IccSmsInterfaceManager; +HPLcom/android/internal/telephony/GsmCdmaPhone;->getVoiceMailNumber()Ljava/lang/String; +HPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/IMms$Stub;->()V +HPLcom/android/internal/telephony/IMms;->addMultimediaMessageDraft(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; +HPLcom/android/internal/telephony/IMms;->addTextMessageDraft(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; +HPLcom/android/internal/telephony/IMms;->archiveStoredConversation(Ljava/lang/String;JZ)Z +HPLcom/android/internal/telephony/IMms;->deleteStoredConversation(Ljava/lang/String;J)Z +HPLcom/android/internal/telephony/IMms;->deleteStoredMessage(Ljava/lang/String;Landroid/net/Uri;)Z +HPLcom/android/internal/telephony/IMms;->downloadMessage(ILjava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V +HPLcom/android/internal/telephony/IMms;->getAutoPersisting()Z +HPLcom/android/internal/telephony/IMms;->getCarrierConfigValues(I)Landroid/os/Bundle; +HPLcom/android/internal/telephony/IMms;->importMultimediaMessage(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;JZZ)Landroid/net/Uri; +HPLcom/android/internal/telephony/IMms;->importTextMessage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;JZZ)Landroid/net/Uri; +HPLcom/android/internal/telephony/IMms;->sendMessage(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;)V +HPLcom/android/internal/telephony/IMms;->sendStoredMessage(ILjava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V +HPLcom/android/internal/telephony/IMms;->setAutoPersisting(Ljava/lang/String;Z)V +HPLcom/android/internal/telephony/IMms;->updateStoredMessageStatus(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Z +HPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->onSubscriptionsChanged()V +HPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IOnSubscriptionsChangedListener; +HPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/telephony/IPhoneStateListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneStateListener; +HPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getGroupIdLevel1(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/ISms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubIdList()[I +HPLcom/android/internal/telephony/ISub$Stub$Proxy;->getPhoneId(I)I +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getAllCellInfo(Ljava/lang/String;)Ljava/util/List; +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getCellLocation(Ljava/lang/String;)Landroid/os/Bundle; +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDataEnabled(I)Z +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getEmergencyCallbackMode(I)Z +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getMergedSubscriberIds(Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkType()I +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getTetherApnRequired()I +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVoiceNetworkTypeForSubscriber(ILjava/lang/String;)I +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVtDataUsage(IZ)Landroid/net/NetworkStats; +HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->requestModemActivityInfo(Landroid/os/ResultReceiver;)V +HPLcom/android/internal/telephony/ITelephony$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->()V +HPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager$1;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->addRange(IIZ)V +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->finishUpdate()Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->startUpdate()V +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->addRange(IIZ)V +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->finishUpdate()Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->startUpdate()V +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->-wrap0(Lcom/android/internal/telephony/IccSmsInterfaceManager;[Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->-wrap1(Lcom/android/internal/telephony/IccSmsInterfaceManager;[Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableCdmaBroadcastRange(II)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableCellBroadcastRange(III)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableGsmBroadcastRange(II)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableCdmaBroadcastRange(II)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableCellBroadcastRange(III)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableGsmBroadcastRange(II)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->setCdmaBroadcastConfig([Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;)Z +HPLcom/android/internal/telephony/IccSmsInterfaceManager;->setCellBroadcastConfig([Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;)Z +HPLcom/android/internal/telephony/InboundSmsHandler;->cancelNewMessageNotification(Landroid/content/Context;)V +HPLcom/android/internal/telephony/InboundSmsHandler;->isCurrentFormat3gpp2()Z +HPLcom/android/internal/telephony/IntRangeManager;->disableRange(IILjava/lang/String;)Z +HPLcom/android/internal/telephony/IntRangeManager;->enableRange(IILjava/lang/String;)Z +HPLcom/android/internal/telephony/IntRangeManager;->populateAllRanges()V +HPLcom/android/internal/telephony/IntRangeManager;->tryAddRanges(IIZ)Z +HPLcom/android/internal/telephony/IntentBroadcaster$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/IntentBroadcaster;->-get0(Lcom/android/internal/telephony/IntentBroadcaster;)Ljava/util/Map; +HPLcom/android/internal/telephony/IntentBroadcaster;->-wrap0(Lcom/android/internal/telephony/IntentBroadcaster;Ljava/lang/String;)V +HPLcom/android/internal/telephony/Phone$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/Phone;->getAllCellInfo(Landroid/os/WorkSource;)Ljava/util/List; +HPLcom/android/internal/telephony/Phone;->getModemActivityInfo(Landroid/os/Message;)V +HPLcom/android/internal/telephony/Phone;->hasMatchedTetherApnSetting()Z +HPLcom/android/internal/telephony/Phone;->privatizeCellInfoList(Ljava/util/List;)Ljava/util/List; +HPLcom/android/internal/telephony/PhoneConstantConversions;->convertDataState(I)Lcom/android/internal/telephony/PhoneConstants$DataState; +HPLcom/android/internal/telephony/PhoneFactory;->getDefaultSubscription()I +HPLcom/android/internal/telephony/PhoneSubInfoController;->checkReadPhoneState(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/internal/telephony/PhoneSubInfoController;->getDefaultSubscription()I +HPLcom/android/internal/telephony/PhoneSubInfoController;->getDeviceId(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getDeviceIdForPhone(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getGroupIdLevel1(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/PhoneSubInfoController;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/internal/telephony/RIL;->-wrap3(Lcom/android/internal/telephony/RIL;I)Lcom/android/internal/telephony/RILRequest; +HPLcom/android/internal/telephony/RIL;->convertHalCellInfoList(Ljava/util/ArrayList;)Ljava/util/ArrayList; +HPLcom/android/internal/telephony/RIL;->getCellInfoList(Landroid/os/Message;Landroid/os/WorkSource;)V +HPLcom/android/internal/telephony/RIL;->getModemActivityInfo(Landroid/os/Message;)V +HPLcom/android/internal/telephony/RIL;->setCdmaBroadcastConfig([Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;Landroid/os/Message;)V +HPLcom/android/internal/telephony/RIL;->setGsmBroadcastConfig([Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;Landroid/os/Message;)V +HPLcom/android/internal/telephony/RIL;->unsljLogRet(ILjava/lang/Object;)V +HPLcom/android/internal/telephony/RadioIndication;->nitzTimeReceived(ILjava/lang/String;J)V +HPLcom/android/internal/telephony/RadioResponse;->getCellInfoListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HPLcom/android/internal/telephony/RadioResponse;->getModemActivityInfoResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/ActivityStatsInfo;)V +HPLcom/android/internal/telephony/RadioResponse;->responseActivityData(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/ActivityStatsInfo;)V +HPLcom/android/internal/telephony/RadioResponse;->responseCellInfoList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HPLcom/android/internal/telephony/RadioResponse;->setCdmaBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HPLcom/android/internal/telephony/RadioResponse;->setGsmBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HPLcom/android/internal/telephony/ServiceStateTracker$CellInfoResult;->(Lcom/android/internal/telephony/ServiceStateTracker;)V +HPLcom/android/internal/telephony/ServiceStateTracker$CellInfoResult;->(Lcom/android/internal/telephony/ServiceStateTracker;Lcom/android/internal/telephony/ServiceStateTracker$CellInfoResult;)V +HPLcom/android/internal/telephony/ServiceStateTracker;->getAllCellInfo(Landroid/os/WorkSource;)Ljava/util/List; +HPLcom/android/internal/telephony/ServiceStateTracker;->getAutoTime()Z +HPLcom/android/internal/telephony/ServiceStateTracker;->getAutoTimeZone()Z +HPLcom/android/internal/telephony/ServiceStateTracker;->isCallerOnDifferentThread()Z +HPLcom/android/internal/telephony/ServiceStateTracker;->saveNitzTime(J)V +HPLcom/android/internal/telephony/ServiceStateTracker;->setAndBroadcastNetworkSetTime(J)V +HPLcom/android/internal/telephony/ServiceStateTracker;->setTimeFromNITZString(Ljava/lang/String;J)V +HPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-get3(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;)Ljava/lang/String; +HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageChanged()V +HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V +HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageModified(Ljava/lang/String;)V +HPLcom/android/internal/telephony/SmsApplication;->-wrap0(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V +HPLcom/android/internal/telephony/SmsApplication;->assignWriteSmsPermissionToSystemApp(Landroid/content/Context;Landroid/content/pm/PackageManager;Landroid/app/AppOpsManager;Ljava/lang/String;)V +HPLcom/android/internal/telephony/SmsApplication;->assignWriteSmsPermissionToSystemUid(Landroid/app/AppOpsManager;I)V +HPLcom/android/internal/telephony/SmsApplication;->configurePreferredActivity(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V +HPLcom/android/internal/telephony/SmsApplication;->getDefaultMmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; +HPLcom/android/internal/telephony/SmsApplication;->getDefaultSendToApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; +HPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplicationPackageName(Landroid/content/Context;)Ljava/lang/String; +HPLcom/android/internal/telephony/SmsApplication;->isDefaultSmsApplication(Landroid/content/Context;Ljava/lang/String;)Z +HPLcom/android/internal/telephony/SmsApplication;->replacePreferredActivity(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;ILjava/lang/String;)V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;->(Lcom/android/internal/telephony/SmsBroadcastUndelivered;Landroid/content/Context;)V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;->(Lcom/android/internal/telephony/SmsBroadcastUndelivered;Landroid/content/Context;Lcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;)V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;->run()V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered;->-wrap0(Lcom/android/internal/telephony/SmsBroadcastUndelivered;)V +HPLcom/android/internal/telephony/SmsBroadcastUndelivered;->scanRawTable()V +HPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCount(Ljava/lang/String;)I +HPLcom/android/internal/telephony/UiccSmsController;->disableCellBroadcastRangeForSubscriber(IIII)Z +HPLcom/android/internal/telephony/UiccSmsController;->enableCellBroadcastRangeForSubscriber(IIII)Z +HPLcom/android/internal/telephony/UiccSmsController;->getIccSmsInterfaceManager(I)Lcom/android/internal/telephony/IccSmsInterfaceManager; +HPLcom/android/internal/telephony/UiccSmsController;->getPhone(I)Lcom/android/internal/telephony/Phone; +HPLcom/android/internal/telephony/UiccSmsController;->getPreferredSmsSubscription()I +HPLcom/android/internal/telephony/UiccSmsController;->isSmsSimPickActivityNeeded(I)Z +HPLcom/android/internal/telephony/WapPushOverSms$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/WapPushOverSms$BindServiceThread;->(Lcom/android/internal/telephony/WapPushOverSms;Landroid/content/Context;)V +HPLcom/android/internal/telephony/WapPushOverSms$BindServiceThread;->(Lcom/android/internal/telephony/WapPushOverSms;Landroid/content/Context;Lcom/android/internal/telephony/WapPushOverSms$BindServiceThread;)V +HPLcom/android/internal/telephony/WapPushOverSms$BindServiceThread;->run()V +HPLcom/android/internal/telephony/WapPushOverSms;->-get0(Lcom/android/internal/telephony/WapPushOverSms;)Landroid/content/Context; +HPLcom/android/internal/telephony/WapPushOverSms;->-wrap0(Lcom/android/internal/telephony/WapPushOverSms;Landroid/content/Context;)V +HPLcom/android/internal/telephony/WapPushOverSms;->bindWapPushManagerService(Landroid/content/Context;)V +HPLcom/android/internal/telephony/cat/AppInterface;->onCmdResponse(Lcom/android/internal/telephony/cat/CatResponseMessage;)V +HPLcom/android/internal/telephony/cat/CatLog;->d(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/internal/telephony/cat/CatService;->getInstance(I)Lcom/android/internal/telephony/cat/AppInterface; +HPLcom/android/internal/telephony/cat/CatService;->getInstance(Lcom/android/internal/telephony/CommandsInterface;Landroid/content/Context;Lcom/android/internal/telephony/uicc/UiccCard;I)Lcom/android/internal/telephony/cat/CatService; +HPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->(IIIZ)V +HPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getFromServiceCategory()I +HPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getLanguage()I +HPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getToServiceCategory()I +HPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->isSelected()Z +HPLcom/android/internal/telephony/dataconnection/DcTracker;->fetchDunApn()Lcom/android/internal/telephony/dataconnection/ApnSetting; +HPLcom/android/internal/telephony/dataconnection/DcTracker;->hasMatchedTetherApnSetting()Z +HPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->-wrap3(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;Landroid/os/Message;)V +HPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onReleaseNetworkFor(Landroid/os/Message;)V +HPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->(IIIIZ)V +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->getFromCodeScheme()I +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->getFromServiceId()I +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->getToCodeScheme()I +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->getToServiceId()I +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->isSelected()Z +HPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->toString()Ljava/lang/String; +HPLcom/android/internal/telephony/ims/-$Lambda$QWnMjc1b65aK4eEOKtjIsxJ2Sp4;->$m$2(Ljava/lang/Object;)Z +HPLcom/android/internal/telephony/ims/-$Lambda$QWnMjc1b65aK4eEOKtjIsxJ2Sp4;->test(Ljava/lang/Object;)Z +HPLcom/android/internal/telephony/ims/ImsResolver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/internal/telephony/ims/ImsResolver;->-get0(Lcom/android/internal/telephony/ims/ImsResolver;)Landroid/os/Handler; +HPLcom/android/internal/telephony/ims/ImsResolver;->getInfoByPackageName(Ljava/util/Set;Ljava/lang/String;)Ljava/util/Optional; +HPLcom/android/internal/telephony/ims/ImsResolver;->lambda$-com_android_internal_telephony_ims_ImsResolver_19379(Ljava/lang/String;Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Z +HPLcom/android/internal/telephony/ims/ImsResolver;->maybeRemovedImsService(Ljava/lang/String;)Z +HPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->setNITZ(J)Lcom/android/internal/telephony/metrics/CallSessionEventBuilder; +HPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setNITZ(J)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; +HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeNITZEvent(IJ)V +HPLcom/android/internal/telephony/uicc/UiccCard;->getCarrierPrivilegeStatus(Landroid/content/pm/PackageManager;Ljava/lang/String;)I +HPLcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V +HPLcom/android/internal/textservice/ISpellCheckerService$Stub;->()V +HPLcom/android/internal/textservice/ISpellCheckerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerService; +HPLcom/android/internal/textservice/ISpellCheckerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/textservice/ISpellCheckerService;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub$Proxy;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->()V +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerServiceCallback; +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/textservice/ISpellCheckerServiceCallback;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub;->()V +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerSession; +HPLcom/android/internal/textservice/ISpellCheckerSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/textservice/ISpellCheckerSession;->onCancel()V +HPLcom/android/internal/textservice/ISpellCheckerSession;->onClose()V +HPLcom/android/internal/textservice/ISpellCheckerSession;->onGetSentenceSuggestionsMultiple([Landroid/view/textservice/TextInfo;I)V +HPLcom/android/internal/textservice/ISpellCheckerSession;->onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)V +HPLcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V +HPLcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerSessionListener; +HPLcom/android/internal/textservice/ISpellCheckerSessionListener;->onGetSentenceSuggestions([Landroid/view/textservice/SentenceSuggestionsInfo;)V +HPLcom/android/internal/textservice/ISpellCheckerSessionListener;->onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V +HPLcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype; +HPLcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->isSpellCheckerEnabled()Z +HPLcom/android/internal/textservice/ITextServicesManager$Stub;->()V +HPLcom/android/internal/textservice/ITextServicesManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ITextServicesManager; +HPLcom/android/internal/textservice/ITextServicesManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/textservice/ITextServicesManager;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V +HPLcom/android/internal/textservice/ITextServicesManager;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo; +HPLcom/android/internal/textservice/ITextServicesManager;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype; +HPLcom/android/internal/textservice/ITextServicesManager;->getEnabledSpellCheckers()[Landroid/view/textservice/SpellCheckerInfo; +HPLcom/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 +HPLcom/android/internal/textservice/ITextServicesManager;->isSpellCheckerEnabled()Z +HPLcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V +HPLcom/android/internal/textservice/ITextServicesSessionListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ITextServicesSessionListener; +HPLcom/android/internal/textservice/ITextServicesSessionListener;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V +HPLcom/android/internal/transition/EpicenterTranslateClipReveal;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/util/ArrayUtils;->add(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; +HPLcom/android/internal/util/ArrayUtils;->contains(Ljava/util/Collection;Ljava/lang/Object;)Z +HPLcom/android/internal/util/ArrayUtils;->contains([II)Z +HPLcom/android/internal/util/ArrayUtils;->isEmpty([B)Z +HPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B +HPLcom/android/internal/util/ArrayUtils;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; +HPLcom/android/internal/util/ArrayUtils;->total([J)J +HPLcom/android/internal/util/ArrayUtils;->trimToSize([Ljava/lang/Object;I)[Ljava/lang/Object; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->-get0(Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;)Ljava/lang/Object; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->-get1(Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->-set0(Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->(Lcom/android/internal/util/AsyncChannel$SyncMessenger;Landroid/os/Looper;)V +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->(Lcom/android/internal/util/AsyncChannel$SyncMessenger;Landroid/os/Looper;Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;)V +HPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/util/AsyncChannel$SyncMessenger;->-wrap0(Landroid/os/Messenger;Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger;->()V +HPLcom/android/internal/util/AsyncChannel$SyncMessenger;->obtain()Lcom/android/internal/util/AsyncChannel$SyncMessenger; +HPLcom/android/internal/util/AsyncChannel$SyncMessenger;->recycle()V +HPLcom/android/internal/util/AsyncChannel$SyncMessenger;->sendMessageSynchronously(Landroid/os/Messenger;Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel;->connect(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;)V +HPLcom/android/internal/util/AsyncChannel;->connectSync(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)I +HPLcom/android/internal/util/AsyncChannel;->replyToMessage(Landroid/os/Message;II)V +HPLcom/android/internal/util/AsyncChannel;->replyToMessage(Landroid/os/Message;Landroid/os/Message;)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(I)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(II)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(III)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(IIILjava/lang/Object;)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(ILjava/lang/Object;)V +HPLcom/android/internal/util/AsyncChannel;->sendMessage(Landroid/os/Message;)V +HPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(I)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(II)Landroid/os/Message; +HPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/internal/util/BitUtils;->bytesToBEInt([B)I +HPLcom/android/internal/util/BitUtils;->getUint16(Ljava/nio/ByteBuffer;I)I +HPLcom/android/internal/util/BitUtils;->getUint32(Ljava/nio/ByteBuffer;I)J +HPLcom/android/internal/util/BitUtils;->getUint8(Ljava/nio/ByteBuffer;I)I +HPLcom/android/internal/util/BitUtils;->maskedEquals(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z +HPLcom/android/internal/util/BitUtils;->packBits([I)J +HPLcom/android/internal/util/BitUtils;->uint16(S)I +HPLcom/android/internal/util/BitUtils;->uint32(I)J +HPLcom/android/internal/util/BitUtils;->uint8(B)I +HPLcom/android/internal/util/CollectionUtils;->map(Ljava/util/Set;Ljava/util/function/Function;)Ljava/util/Set; +HPLcom/android/internal/util/ConcurrentUtils;->waitForFutureNoInterrupt(Ljava/util/concurrent/Future;Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/internal/util/DumpUtils$Dump;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/internal/util/DumpUtils;->checkDumpAndUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z +HPLcom/android/internal/util/DumpUtils;->checkDumpPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z +HPLcom/android/internal/util/DumpUtils;->checkUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z +HPLcom/android/internal/util/FastPrintWriter;->(Ljava/io/Writer;)V +HPLcom/android/internal/util/FastPrintWriter;->appendLocked(C)V +HPLcom/android/internal/util/FastPrintWriter;->appendLocked([CII)V +HPLcom/android/internal/util/FastPrintWriter;->print(C)V +HPLcom/android/internal/util/FastPrintWriter;->print(I)V +HPLcom/android/internal/util/FastPrintWriter;->print(J)V +HPLcom/android/internal/util/FastPrintWriter;->println(I)V +HPLcom/android/internal/util/FastPrintWriter;->setError()V +HPLcom/android/internal/util/FastPrintWriter;->write(I)V +HPLcom/android/internal/util/FastPrintWriter;->write(Ljava/lang/String;II)V +HPLcom/android/internal/util/FastPrintWriter;->write([CII)V +HPLcom/android/internal/util/FastXmlSerializer;->setOutput(Ljava/io/Writer;)V +HPLcom/android/internal/util/FileRotator$FileInfo;->(Ljava/lang/String;)V +HPLcom/android/internal/util/FileRotator$FileInfo;->isActive()Z +HPLcom/android/internal/util/FileRotator$FileInfo;->parse(Ljava/lang/String;)Z +HPLcom/android/internal/util/FileRotator$Rewriter;->reset()V +HPLcom/android/internal/util/FileRotator$Rewriter;->shouldWrite()Z +HPLcom/android/internal/util/FileRotator$Writer;->write(Ljava/io/OutputStream;)V +HPLcom/android/internal/util/FileRotator;->(Ljava/io/File;Ljava/lang/String;JJ)V +HPLcom/android/internal/util/FileRotator;->getActiveName(J)Ljava/lang/String; +HPLcom/android/internal/util/FileRotator;->maybeRotate(J)V +HPLcom/android/internal/util/FileRotator;->readFile(Ljava/io/File;Lcom/android/internal/util/FileRotator$Reader;)V +HPLcom/android/internal/util/FileRotator;->readMatching(Lcom/android/internal/util/FileRotator$Reader;JJ)V +HPLcom/android/internal/util/FileRotator;->rewriteActive(Lcom/android/internal/util/FileRotator$Rewriter;J)V +HPLcom/android/internal/util/FileRotator;->rewriteSingle(Lcom/android/internal/util/FileRotator$Rewriter;Ljava/lang/String;)V +HPLcom/android/internal/util/FileRotator;->writeFile(Ljava/io/File;Lcom/android/internal/util/FileRotator$Writer;)V +HPLcom/android/internal/util/HexDump;->toHexString([B)Ljava/lang/String; +HPLcom/android/internal/util/HexDump;->toHexString([BIIZ)Ljava/lang/String; +HPLcom/android/internal/util/HexDump;->toHexString([BZ)Ljava/lang/String; +HPLcom/android/internal/util/IndentingPrintWriter;->(Ljava/io/Writer;Ljava/lang/String;)V +HPLcom/android/internal/util/IndentingPrintWriter;->printHexPair(Ljava/lang/String;I)V +HPLcom/android/internal/util/IndentingPrintWriter;->printPair(Ljava/lang/String;[Ljava/lang/Object;)V +HPLcom/android/internal/util/IntPair;->of(II)J +HPLcom/android/internal/util/LocalLog;->(Ljava/lang/String;)V +HPLcom/android/internal/util/MemInfoReader;->getCachedSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getFreeSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getKernelUsedSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getSwapFreeSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getSwapTotalSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getTotalSizeKb()J +HPLcom/android/internal/util/MemInfoReader;->getZramTotalSizeKb()J +HPLcom/android/internal/util/MessageUtils;->findMessageNames([Ljava/lang/Class;)Landroid/util/SparseArray; +HPLcom/android/internal/util/MessageUtils;->findMessageNames([Ljava/lang/Class;[Ljava/lang/String;)Landroid/util/SparseArray; +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->HSLToColor([F)I +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->LABToColor(DDD)I +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->LABToXYZ(DDD[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->RGBToHSL(III[F)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->RGBToLAB(III[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->RGBToXYZ(III[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->XYZToColor(DDD)I +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->XYZToLAB(DDD[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->calculateContrast(II)D +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->calculateLuminance(I)D +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->colorToHSL(I[F)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->colorToLAB(I[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->colorToXYZ(I[D)V +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->constrain(FFF)F +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->constrain(III)I +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->getTempDouble3Array()[D +HPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->pivotXyzComponent(D)D +HPLcom/android/internal/util/NotificationColorUtil;->calculateContrast(II)D +HPLcom/android/internal/util/NotificationColorUtil;->ensureLargeTextContrast(IIZ)I +HPLcom/android/internal/util/NotificationColorUtil;->ensureTextContrast(IIZ)I +HPLcom/android/internal/util/NotificationColorUtil;->ensureTextContrastOnBlack(I)I +HPLcom/android/internal/util/NotificationColorUtil;->findAlphaToMeetContrast(IID)I +HPLcom/android/internal/util/NotificationColorUtil;->findContrastColor(IIZD)I +HPLcom/android/internal/util/NotificationColorUtil;->findContrastColorAgainstDark(IIZD)I +HPLcom/android/internal/util/NotificationColorUtil;->getShiftedColor(II)I +HPLcom/android/internal/util/NotificationColorUtil;->resolveAmbientColor(Landroid/content/Context;I)I +HPLcom/android/internal/util/NotificationColorUtil;->resolveColor(Landroid/content/Context;I)I +HPLcom/android/internal/util/NotificationColorUtil;->resolveContrastColor(Landroid/content/Context;II)I +HPLcom/android/internal/util/NotificationColorUtil;->resolveContrastColor(Landroid/content/Context;IIZ)I +HPLcom/android/internal/util/NotificationColorUtil;->satisfiesTextContrast(II)Z +HPLcom/android/internal/util/NotificationMessagingUtil;->isImportantMessaging(Landroid/service/notification/StatusBarNotification;I)Z +HPLcom/android/internal/util/ObjectUtils;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I +HPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(I)I +HPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection; +HPLcom/android/internal/util/Preconditions;->checkFlagsArgument(II)I +HPLcom/android/internal/util/ProcFileReader;->(Ljava/io/InputStream;)V +HPLcom/android/internal/util/ProcFileReader;->(Ljava/io/InputStream;I)V +HPLcom/android/internal/util/ProcFileReader;->close()V +HPLcom/android/internal/util/ProcFileReader;->consumeBuf(I)V +HPLcom/android/internal/util/ProcFileReader;->fillBuf()I +HPLcom/android/internal/util/ProcFileReader;->finishLine()V +HPLcom/android/internal/util/ProcFileReader;->hasMoreData()Z +HPLcom/android/internal/util/ProcFileReader;->nextInt()I +HPLcom/android/internal/util/ProcFileReader;->nextLong()J +HPLcom/android/internal/util/ProcFileReader;->nextString()Ljava/lang/String; +HPLcom/android/internal/util/ProcFileReader;->nextTokenIndex()I +HPLcom/android/internal/util/ProcFileReader;->parseAndConsumeLong(I)J +HPLcom/android/internal/util/ProcFileReader;->parseAndConsumeString(I)Ljava/lang/String; +HPLcom/android/internal/util/ProgressReporter;->addListener(Landroid/os/IProgressListener;)V +HPLcom/android/internal/util/ProgressReporter;->finish()V +HPLcom/android/internal/util/ProgressReporter;->notifyFinished(ILandroid/os/Bundle;)V +HPLcom/android/internal/util/ProgressReporter;->notifyProgress(IILandroid/os/Bundle;)V +HPLcom/android/internal/util/ProgressReporter;->notifyStarted(ILandroid/os/Bundle;)V +HPLcom/android/internal/util/ProgressReporter;->setProgress(I)V +HPLcom/android/internal/util/ProgressReporter;->setProgress(IILjava/lang/CharSequence;)V +HPLcom/android/internal/util/ProgressReporter;->setProgress(ILjava/lang/CharSequence;)V +HPLcom/android/internal/util/ProgressReporter;->start()V +HPLcom/android/internal/util/RingBufferIndices;->(I)V +HPLcom/android/internal/util/RingBufferIndices;->add()I +HPLcom/android/internal/util/ScreenShapeHelper;->getWindowOutsetBottomPx(Landroid/content/res/Resources;)I +HPLcom/android/internal/util/SizedInputStream;->(Ljava/io/InputStream;J)V +HPLcom/android/internal/util/SizedInputStream;->close()V +HPLcom/android/internal/util/SizedInputStream;->read([BII)I +HPLcom/android/internal/util/State;->getName()Ljava/lang/String; +HPLcom/android/internal/util/State;->processMessage(Landroid/os/Message;)Z +HPLcom/android/internal/util/StateMachine$LogRec;->toString()Ljava/lang/String; +HPLcom/android/internal/util/StateMachine$LogRecords;->count()I +HPLcom/android/internal/util/StateMachine$LogRecords;->get(I)Lcom/android/internal/util/StateMachine$LogRec; +HPLcom/android/internal/util/StateMachine$LogRecords;->setLogOnlyTransitions(Z)V +HPLcom/android/internal/util/StateMachine$LogRecords;->size()I +HPLcom/android/internal/util/StateMachine$SmHandler;->-get0(Lcom/android/internal/util/StateMachine$SmHandler;)Z +HPLcom/android/internal/util/StateMachine$SmHandler;->-wrap6(Lcom/android/internal/util/StateMachine$SmHandler;Landroid/os/Message;)V +HPLcom/android/internal/util/StateMachine$SmHandler;->deferMessage(Landroid/os/Message;)V +HPLcom/android/internal/util/StateMachine;->(Ljava/lang/String;Landroid/os/Looper;)V +HPLcom/android/internal/util/StateMachine;->deferMessage(Landroid/os/Message;)V +HPLcom/android/internal/util/StateMachine;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/internal/util/StateMachine;->getLogRec(I)Lcom/android/internal/util/StateMachine$LogRec; +HPLcom/android/internal/util/StateMachine;->getLogRecCount()I +HPLcom/android/internal/util/StateMachine;->getLogRecSize()I +HPLcom/android/internal/util/StateMachine;->getWhatToString(I)Ljava/lang/String; +HPLcom/android/internal/util/StateMachine;->logd(Ljava/lang/String;)V +HPLcom/android/internal/util/StateMachine;->obtainMessage(II)Landroid/os/Message; +HPLcom/android/internal/util/StateMachine;->obtainMessage(III)Landroid/os/Message; +HPLcom/android/internal/util/StateMachine;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/util/StateMachine;->sendMessage(II)V +HPLcom/android/internal/util/StateMachine;->sendMessage(III)V +HPLcom/android/internal/util/StateMachine;->sendMessage(IIILjava/lang/Object;)V +HPLcom/android/internal/util/StateMachine;->sendMessageDelayed(ILjava/lang/Object;J)V +HPLcom/android/internal/util/StateMachine;->sendMessageDelayed(Landroid/os/Message;J)V +HPLcom/android/internal/util/StateMachine;->setLogOnlyTransitions(Z)V +HPLcom/android/internal/util/StateMachine;->unhandledMessage(Landroid/os/Message;)V +HPLcom/android/internal/util/TokenBucket;->(II)V +HPLcom/android/internal/util/TokenBucket;->(III)V +HPLcom/android/internal/util/TokenBucket;->fill()V +HPLcom/android/internal/util/TokenBucket;->get()Z +HPLcom/android/internal/util/TokenBucket;->get(I)I +HPLcom/android/internal/util/TokenBucket;->scaledTime()J +HPLcom/android/internal/util/WakeupMessage;->(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;I)V +HPLcom/android/internal/util/WakeupMessage;->(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;IIILjava/lang/Object;)V +HPLcom/android/internal/util/WakeupMessage;->cancel()V +HPLcom/android/internal/util/WakeupMessage;->onAlarm()V +HPLcom/android/internal/util/WakeupMessage;->schedule(J)V +HPLcom/android/internal/util/XmlUtils$ReadMapCallback;->readThisUnknownObjectXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/internal/util/XmlUtils;->readBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z +HPLcom/android/internal/util/XmlUtils;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J +HPLcom/android/internal/util/XmlUtils;->readThisArrayMapXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Landroid/util/ArrayMap; +HPLcom/android/internal/util/XmlUtils;->readThisByteArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[B +HPLcom/android/internal/util/XmlUtils;->readThisLongArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[J +HPLcom/android/internal/util/XmlUtils;->readThisStringArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/internal/util/XmlUtils;->writeBooleanAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V +HPLcom/android/internal/util/XmlUtils;->writeByteArrayXml([BLjava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/internal/util/XmlUtils;->writeLongArrayXml([JLjava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/internal/util/XmlUtils;->writeLongAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V +HPLcom/android/internal/util/XmlUtils;->writeStringArrayXml([Ljava/lang/String;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/internal/util/XmlUtils;->writeUriAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/net/Uri;)V +HPLcom/android/internal/view/BaseIWindow;->closeSystemDialogs(Ljava/lang/String;)V +HPLcom/android/internal/view/BaseIWindow;->dispatchAppVisibility(Z)V +HPLcom/android/internal/view/IInputConnectionWrapper;->beginBatchEdit()V +HPLcom/android/internal/view/IInputConnectionWrapper;->closeConnection()V +HPLcom/android/internal/view/IInputConnectionWrapper;->deleteSurroundingText(II)V +HPLcom/android/internal/view/IInputConnectionWrapper;->endBatchEdit()V +HPLcom/android/internal/view/IInputConnectionWrapper;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputConnectionWrapper;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputConnectionWrapper;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageII(III)Landroid/os/Message; +HPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIISC(IIIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message; +HPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIO(IILjava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageISC(IIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message; +HPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageO(ILjava/lang/Object;)Landroid/os/Message; +HPLcom/android/internal/view/IInputConnectionWrapper;->sendKeyEvent(Landroid/view/KeyEvent;)V +HPLcom/android/internal/view/IInputConnectionWrapper;->setComposingRegion(II)V +HPLcom/android/internal/view/IInputConnectionWrapper;->setComposingText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->beginBatchEdit()V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->clearMetaKeyStates(I)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->commitText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->deleteSurroundingText(II)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->endBatchEdit()V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->finishComposingText()V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->performEditorAction(I)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->sendKeyEvent(Landroid/view/KeyEvent;)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingRegion(II)V +HPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setSelectedText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextAfterCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback$Stub;->()V +HPLcom/android/internal/view/IInputContextCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputContextCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContextCallback; +HPLcom/android/internal/view/IInputContextCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/view/IInputContextCallback;->setCommitContentResult(ZI)V +HPLcom/android/internal/view/IInputContextCallback;->setCursorCapsMode(II)V +HPLcom/android/internal/view/IInputContextCallback;->setExtractedText(Landroid/view/inputmethod/ExtractedText;I)V +HPLcom/android/internal/view/IInputContextCallback;->setRequestUpdateCursorAnchorInfoResult(ZI)V +HPLcom/android/internal/view/IInputContextCallback;->setSelectedText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback;->setTextAfterCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputContextCallback;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->attachToken(Landroid/os/IBinder;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->bindInput(Landroid/view/inputmethod/InputBinding;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->hideSoftInput(ILandroid/os/ResultReceiver;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->setSessionEnabled(Lcom/android/internal/view/IInputMethodSession;Z)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->showSoftInput(ILandroid/os/ResultReceiver;)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;Z)V +HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->unbindInput()V +HPLcom/android/internal/view/IInputMethod$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethod; +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->(Landroid/os/IBinder;)V +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->onBindMethod(Lcom/android/internal/view/InputBindResult;)V +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->onUnbindMethod(II)V +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->reportFullscreenMode(Z)V +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setActive(ZZ)V +HPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setUserActionNotificationSequenceNumber(I)V +HPLcom/android/internal/view/IInputMethodClient$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodClient; +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList()Ljava/util/List; +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List; +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getInputMethodList()Ljava/util/List; +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->hideMySoftInput(Landroid/os/IBinder;I)V +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->notifyUserAction(I)V +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/internal/view/IInputMethodManager$Stub;->()V +HPLcom/android/internal/view/IInputMethodManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->finishSession()V +HPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->updateSelection(IIIIII)V +HPLcom/android/internal/view/IInputMethodSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/view/IInputSessionCallback$Stub;->()V +HPLcom/android/internal/view/IInputSessionCallback$Stub;->asBinder()Landroid/os/IBinder; +HPLcom/android/internal/view/IInputSessionCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/view/InputBindResult;->(Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;Ljava/lang/String;II)V +HPLcom/android/internal/view/InputBindResult;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->-wrap0()Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback; +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->-wrap1(Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback;)V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->()V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->dispose()V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->getInstance()Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback; +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setSelectedText(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setTextAfterCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V +HPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->waitForResultLocked()V +HPLcom/android/internal/view/InputConnectionWrapper;->beginBatchEdit()Z +HPLcom/android/internal/view/InputConnectionWrapper;->clearMetaKeyStates(I)Z +HPLcom/android/internal/view/InputConnectionWrapper;->commitText(Ljava/lang/CharSequence;I)Z +HPLcom/android/internal/view/InputConnectionWrapper;->deleteSurroundingText(II)Z +HPLcom/android/internal/view/InputConnectionWrapper;->endBatchEdit()Z +HPLcom/android/internal/view/InputConnectionWrapper;->finishComposingText()Z +HPLcom/android/internal/view/InputConnectionWrapper;->getSelectedText(I)Ljava/lang/CharSequence; +HPLcom/android/internal/view/InputConnectionWrapper;->getTextAfterCursor(II)Ljava/lang/CharSequence; +HPLcom/android/internal/view/InputConnectionWrapper;->getTextBeforeCursor(II)Ljava/lang/CharSequence; +HPLcom/android/internal/view/InputConnectionWrapper;->isMethodMissing(I)Z +HPLcom/android/internal/view/InputConnectionWrapper;->performEditorAction(I)Z +HPLcom/android/internal/view/InputConnectionWrapper;->sendKeyEvent(Landroid/view/KeyEvent;)Z +HPLcom/android/internal/view/InputConnectionWrapper;->setComposingRegion(II)Z +HPLcom/android/internal/view/InputConnectionWrapper;->setComposingText(Ljava/lang/CharSequence;I)Z +HPLcom/android/internal/view/WindowManagerPolicyThread;->set(Ljava/lang/Thread;Landroid/os/Looper;)V +HPLcom/android/internal/view/animation/FallbackLUTInterpolator;->createLUT(Landroid/animation/TimeInterpolator;J)[F +HPLcom/android/internal/view/animation/FallbackLUTInterpolator;->createNativeInterpolator(Landroid/animation/TimeInterpolator;J)J +HPLcom/android/internal/view/menu/ActionMenuItemView;->getItemData()Lcom/android/internal/view/menu/MenuItemImpl; +HPLcom/android/internal/view/menu/BaseMenuPresenter;->getId()I +HPLcom/android/internal/view/menu/BaseMenuPresenter;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V +HPLcom/android/internal/view/menu/MenuBuilder;->add(IIII)Landroid/view/MenuItem; +HPLcom/android/internal/view/menu/MenuBuilder;->close()V +HPLcom/android/internal/view/menu/MenuBuilder;->close(Z)V +HPLcom/android/internal/view/menu/MenuBuilder;->dispatchSaveInstanceState(Landroid/os/Bundle;)V +HPLcom/android/internal/view/menu/MenuBuilder;->savePresenterStates(Landroid/os/Bundle;)V +HPLcom/android/internal/view/menu/MenuItemImpl;->applyIconTintIfNecessary(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; +HPLcom/android/internal/view/menu/MenuItemImpl;->setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem; +HPLcom/android/internal/view/menu/MenuItemImpl;->showsTextAsAction()Z +HPLcom/android/internal/widget/-$Lambda$LaTFiUorkqfcqmu-zMQbCLeO77c;->()V +HPLcom/android/internal/widget/ActionBarContextView;->onDetachedFromWindow()V +HPLcom/android/internal/widget/ActionBarOverlayLayout;->dismissPopups()V +HPLcom/android/internal/widget/ActionBarOverlayLayout;->haltActionBarHideOffsetAnimations()V +HPLcom/android/internal/widget/ActionBarOverlayLayout;->isOverflowMenuShowing()Z +HPLcom/android/internal/widget/ActionBarOverlayLayout;->onDetachedFromWindow()V +HPLcom/android/internal/widget/ActionBarOverlayLayout;->saveToolbarHierarchyState(Landroid/util/SparseArray;)V +HPLcom/android/internal/widget/ActionBarOverlayLayout;->shouldDelayChildPressedState()Z +HPLcom/android/internal/widget/AlertDialogLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/AlertDialogLayout;->forceUniformWidth(II)V +HPLcom/android/internal/widget/AlertDialogLayout;->onLayout(ZIIII)V +HPLcom/android/internal/widget/AlertDialogLayout;->onMeasure(II)V +HPLcom/android/internal/widget/AlertDialogLayout;->resolveMinimumHeight(Landroid/view/View;)I +HPLcom/android/internal/widget/AlertDialogLayout;->setChildFrame(Landroid/view/View;IIII)V +HPLcom/android/internal/widget/AlertDialogLayout;->tryOnMeasure(II)Z +HPLcom/android/internal/widget/ButtonBarLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/ButtonBarLayout;->getMinimumHeight()I +HPLcom/android/internal/widget/ButtonBarLayout;->getNextVisibleChildIndex(I)I +HPLcom/android/internal/widget/ButtonBarLayout;->isStacked()Z +HPLcom/android/internal/widget/ButtonBarLayout;->onMeasure(II)V +HPLcom/android/internal/widget/CachingIconView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/CachingIconView;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/internal/widget/CachingIconView;->resetCache()V +HPLcom/android/internal/widget/CachingIconView;->setForceHidden(Z)V +HPLcom/android/internal/widget/CachingIconView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HPLcom/android/internal/widget/CachingIconView;->setImageIconAsync(Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable; +HPLcom/android/internal/widget/CachingIconView;->setVisibility(I)V +HPLcom/android/internal/widget/CachingIconView;->updateVisibility()V +HPLcom/android/internal/widget/DialogTitle;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/EditableInputConnection;->(Landroid/widget/TextView;)V +HPLcom/android/internal/widget/EditableInputConnection;->beginBatchEdit()Z +HPLcom/android/internal/widget/EditableInputConnection;->closeConnection()V +HPLcom/android/internal/widget/EditableInputConnection;->endBatchEdit()Z +HPLcom/android/internal/widget/EditableInputConnection;->getEditable()Landroid/text/Editable; +HPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setBoolean(Ljava/lang/String;ZI)V +HPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->userPresent(I)V +HPLcom/android/internal/widget/ILockSettings$Stub;->()V +HPLcom/android/internal/widget/ILockSettings$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/internal/widget/ImageFloatingTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/ImageFloatingTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLcom/android/internal/widget/ImageFloatingTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLcom/android/internal/widget/ImageFloatingTextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout; +HPLcom/android/internal/widget/ImageFloatingTextView;->onMeasure(II)V +HPLcom/android/internal/widget/ImageFloatingTextView;->onRtlPropertiesChanged(I)V +HPLcom/android/internal/widget/ImageFloatingTextView;->requestLayout()V +HPLcom/android/internal/widget/LockPatternUtils$1;->(Lcom/android/internal/widget/LockPatternUtils;Landroid/os/IBinder;ILjava/lang/String;)V +HPLcom/android/internal/widget/LockPatternUtils$1;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/internal/widget/LockPatternUtils$1;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void; +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$1;->onStrongAuthRequiredChanged(II)V +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->-get0(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;)Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H; +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->handleStrongAuthRequiredChanged(II)V +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->isTrustAllowedForUser(I)Z +HPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V +HPLcom/android/internal/widget/LockPatternUtils;->clearLock(Ljava/lang/String;I)V +HPLcom/android/internal/widget/LockPatternUtils;->frpCredentialEnabled()Z +HPLcom/android/internal/widget/LockPatternUtils;->getActivePasswordQuality(I)I +HPLcom/android/internal/widget/LockPatternUtils;->getTrustManager()Landroid/app/trust/TrustManager; +HPLcom/android/internal/widget/LockPatternUtils;->isDeviceEncryptionEnabled()Z +HPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isManagedProfile(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->isTrustUsuallyManaged(I)Z +HPLcom/android/internal/widget/LockPatternUtils;->onAfterChangingPassword(I)V +HPLcom/android/internal/widget/LockPatternUtils;->setCredentialRequiredToDecrypt(Z)V +HPLcom/android/internal/widget/LockPatternUtils;->setLong(Ljava/lang/String;JI)V +HPLcom/android/internal/widget/LockPatternUtils;->updateEncryptionPassword(ILjava/lang/String;)V +HPLcom/android/internal/widget/LockPatternUtils;->userPresent(I)V +HPLcom/android/internal/widget/NotificationActionListLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/NotificationActionListLayout;->clearMeasureOrder()V +HPLcom/android/internal/widget/NotificationActionListLayout;->onFinishInflate()V +HPLcom/android/internal/widget/NotificationActionListLayout;->onLayout(ZIIII)V +HPLcom/android/internal/widget/NotificationActionListLayout;->onMeasure(II)V +HPLcom/android/internal/widget/NotificationActionListLayout;->onViewAdded(Landroid/view/View;)V +HPLcom/android/internal/widget/NotificationActionListLayout;->setEmphasizedMode(Z)V +HPLcom/android/internal/widget/NotificationExpandButton;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/NotificationExpandButton;->setLabeledBy(Landroid/view/View;)V +HPLcom/android/internal/widget/PreferenceImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HPLcom/android/internal/widget/PreferenceImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HPLcom/android/internal/widget/PreferenceImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HPLcom/android/internal/widget/PreferenceImageView;->onMeasure(II)V +HPLcom/android/internal/widget/ToolbarWidgetWrapper;->dismissPopupMenus()V +HPLcom/android/internal/widget/ToolbarWidgetWrapper;->hasExpandedActionView()Z +HPLcom/android/internal/widget/ToolbarWidgetWrapper;->isOverflowMenuShowing()Z +HPLcom/android/internal/widget/ToolbarWidgetWrapper;->saveHierarchyState(Landroid/util/SparseArray;)V +HPLcom/android/okhttp/AndroidInternal;->setResponseCache(Lcom/android/okhttp/OkUrlFactory;Ljava/net/ResponseCache;)V +HPLcom/android/okhttp/AndroidShimResponseCache;->getCache()Lcom/android/okhttp/Cache; +HPLcom/android/okhttp/Cache$1;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; +HPLcom/android/okhttp/Cache$1;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest; +HPLcom/android/okhttp/Cache$1;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V +HPLcom/android/okhttp/Cache$CacheRequestImpl$1;->(Lcom/android/okhttp/Cache$CacheRequestImpl;Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/internal/DiskLruCache$Editor;)V +HPLcom/android/okhttp/Cache$CacheRequestImpl$1;->close()V +HPLcom/android/okhttp/Cache$CacheRequestImpl;->-get0(Lcom/android/okhttp/Cache$CacheRequestImpl;)Z +HPLcom/android/okhttp/Cache$CacheRequestImpl;->-set0(Lcom/android/okhttp/Cache$CacheRequestImpl;Z)Z +HPLcom/android/okhttp/Cache$CacheRequestImpl;->(Lcom/android/okhttp/Cache;Lcom/android/okhttp/internal/DiskLruCache$Editor;)V +HPLcom/android/okhttp/Cache$CacheRequestImpl;->body()Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/Cache$Entry;->(Lcom/android/okhttp/Response;)V +HPLcom/android/okhttp/Cache$Entry;->isHttps()Z +HPLcom/android/okhttp/Cache$Entry;->writeCertList(Lcom/android/okhttp/okio/BufferedSink;Ljava/util/List;)V +HPLcom/android/okhttp/Cache$Entry;->writeTo(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V +HPLcom/android/okhttp/Cache;->-get2(Lcom/android/okhttp/Cache;)I +HPLcom/android/okhttp/Cache;->-set1(Lcom/android/okhttp/Cache;I)I +HPLcom/android/okhttp/Cache;->-wrap0(Lcom/android/okhttp/Cache;Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest; +HPLcom/android/okhttp/Cache;->-wrap4(Lcom/android/okhttp/Cache;Lcom/android/okhttp/internal/http/CacheStrategy;)V +HPLcom/android/okhttp/Cache;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; +HPLcom/android/okhttp/Cache;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest; +HPLcom/android/okhttp/Cache;->remove(Lcom/android/okhttp/Request;)V +HPLcom/android/okhttp/Cache;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V +HPLcom/android/okhttp/Cache;->urlToKey(Lcom/android/okhttp/Request;)Ljava/lang/String; +HPLcom/android/okhttp/CacheControl;->noStore()Z +HPLcom/android/okhttp/ConfigAwareConnectionPool$1;->onNetworkConfigurationChanged()V +HPLcom/android/okhttp/ConfigAwareConnectionPool;->-set0(Lcom/android/okhttp/ConfigAwareConnectionPool;Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/ConnectionPool; +HPLcom/android/okhttp/Handshake;->cipherSuite()Ljava/lang/String; +HPLcom/android/okhttp/Handshake;->localCertificates()Ljava/util/List; +HPLcom/android/okhttp/Handshake;->peerCertificates()Ljava/util/List; +HPLcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->checkURLPermitted(Ljava/net/URL;)V +HPLcom/android/okhttp/HttpHandler;->newOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory; +HPLcom/android/okhttp/HttpUrl;->resolve(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; +HPLcom/android/okhttp/HttpUrl;->toString()Ljava/lang/String; +HPLcom/android/okhttp/HttpUrl;->url()Ljava/net/URL; +HPLcom/android/okhttp/OkHttpClient;->clone()Lcom/android/okhttp/OkHttpClient; +HPLcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HPLcom/android/okhttp/OkHttpClient;->getFollowRedirects()Z +HPLcom/android/okhttp/OkHttpClient;->setCache(Lcom/android/okhttp/Cache;)Lcom/android/okhttp/OkHttpClient; +HPLcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient; +HPLcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient; +HPLcom/android/okhttp/Request$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; +HPLcom/android/okhttp/Request;->url()Ljava/net/URL; +HPLcom/android/okhttp/Request;->urlString()Ljava/lang/String; +HPLcom/android/okhttp/Response$Builder;->checkPriorResponse(Lcom/android/okhttp/Response;)V +HPLcom/android/okhttp/Response;->cacheControl()Lcom/android/okhttp/CacheControl; +HPLcom/android/okhttp/Response;->handshake()Lcom/android/okhttp/Handshake; +HPLcom/android/okhttp/Response;->message()Ljava/lang/String; +HPLcom/android/okhttp/ResponseBody;->close()V +HPLcom/android/okhttp/internal/DiskLruCache$3;->(Lcom/android/okhttp/internal/DiskLruCache;Lcom/android/okhttp/okio/Sink;)V +HPLcom/android/okhttp/internal/DiskLruCache$Editor$1;->(Lcom/android/okhttp/internal/DiskLruCache$Editor;Lcom/android/okhttp/okio/Sink;)V +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->-get0(Lcom/android/okhttp/internal/DiskLruCache$Editor;)Lcom/android/okhttp/internal/DiskLruCache$Entry; +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->-get1(Lcom/android/okhttp/internal/DiskLruCache$Editor;)[Z +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->(Lcom/android/okhttp/internal/DiskLruCache;Lcom/android/okhttp/internal/DiskLruCache$Entry;)V +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->(Lcom/android/okhttp/internal/DiskLruCache;Lcom/android/okhttp/internal/DiskLruCache$Entry;Lcom/android/okhttp/internal/DiskLruCache$Editor;)V +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->commit()V +HPLcom/android/okhttp/internal/DiskLruCache$Editor;->newSink(I)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get0(Lcom/android/okhttp/internal/DiskLruCache$Entry;)[Ljava/io/File; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get1(Lcom/android/okhttp/internal/DiskLruCache$Entry;)Lcom/android/okhttp/internal/DiskLruCache$Editor; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get2(Lcom/android/okhttp/internal/DiskLruCache$Entry;)[Ljava/io/File; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get3(Lcom/android/okhttp/internal/DiskLruCache$Entry;)Ljava/lang/String; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get4(Lcom/android/okhttp/internal/DiskLruCache$Entry;)[J +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-get5(Lcom/android/okhttp/internal/DiskLruCache$Entry;)Z +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-set0(Lcom/android/okhttp/internal/DiskLruCache$Entry;Lcom/android/okhttp/internal/DiskLruCache$Editor;)Lcom/android/okhttp/internal/DiskLruCache$Editor; +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-set1(Lcom/android/okhttp/internal/DiskLruCache$Entry;Z)Z +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->-set2(Lcom/android/okhttp/internal/DiskLruCache$Entry;J)J +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->(Lcom/android/okhttp/internal/DiskLruCache;Ljava/lang/String;)V +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->(Lcom/android/okhttp/internal/DiskLruCache;Ljava/lang/String;Lcom/android/okhttp/internal/DiskLruCache$Entry;)V +HPLcom/android/okhttp/internal/DiskLruCache$Entry;->writeLengths(Lcom/android/okhttp/okio/BufferedSink;)V +HPLcom/android/okhttp/internal/DiskLruCache;->-get2(Lcom/android/okhttp/internal/DiskLruCache;)Ljava/io/File; +HPLcom/android/okhttp/internal/DiskLruCache;->-get3(Lcom/android/okhttp/internal/DiskLruCache;)Lcom/android/okhttp/internal/io/FileSystem; +HPLcom/android/okhttp/internal/DiskLruCache;->-get6(Lcom/android/okhttp/internal/DiskLruCache;)I +HPLcom/android/okhttp/internal/DiskLruCache;->-wrap2(Lcom/android/okhttp/internal/DiskLruCache;Lcom/android/okhttp/internal/DiskLruCache$Editor;Z)V +HPLcom/android/okhttp/internal/DiskLruCache;->checkNotClosed()V +HPLcom/android/okhttp/internal/DiskLruCache;->completeEdit(Lcom/android/okhttp/internal/DiskLruCache$Editor;Z)V +HPLcom/android/okhttp/internal/DiskLruCache;->edit(Ljava/lang/String;)Lcom/android/okhttp/internal/DiskLruCache$Editor; +HPLcom/android/okhttp/internal/DiskLruCache;->edit(Ljava/lang/String;J)Lcom/android/okhttp/internal/DiskLruCache$Editor; +HPLcom/android/okhttp/internal/DiskLruCache;->get(Ljava/lang/String;)Lcom/android/okhttp/internal/DiskLruCache$Snapshot; +HPLcom/android/okhttp/internal/DiskLruCache;->initialize()V +HPLcom/android/okhttp/internal/DiskLruCache;->isClosed()Z +HPLcom/android/okhttp/internal/DiskLruCache;->journalRebuildRequired()Z +HPLcom/android/okhttp/internal/DiskLruCache;->newJournalWriter()Lcom/android/okhttp/okio/BufferedSink; +HPLcom/android/okhttp/internal/DiskLruCache;->rebuildJournal()V +HPLcom/android/okhttp/internal/DiskLruCache;->remove(Ljava/lang/String;)Z +HPLcom/android/okhttp/internal/DiskLruCache;->validateKey(Ljava/lang/String;)V +HPLcom/android/okhttp/internal/FaultHidingSink;->(Lcom/android/okhttp/okio/Sink;)V +HPLcom/android/okhttp/internal/FaultHidingSink;->close()V +HPLcom/android/okhttp/internal/FaultHidingSink;->flush()V +HPLcom/android/okhttp/internal/FaultHidingSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/io/Closeable;)V +HPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/net/Socket;)V +HPLcom/android/okhttp/internal/Util;->discard(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z +HPLcom/android/okhttp/internal/Util;->md5Hex(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/okhttp/internal/Util;->skipAll(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z +HPLcom/android/okhttp/internal/http/CacheRequest;->abort()V +HPLcom/android/okhttp/internal/http/CacheRequest;->body()Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/internal/http/CacheStrategy;->isCacheable(Lcom/android/okhttp/Response;Lcom/android/okhttp/Request;)Z +HPLcom/android/okhttp/internal/http/HeaderParser;->parseSeconds(Ljava/lang/String;I)I +HPLcom/android/okhttp/internal/http/HeaderParser;->skipUntil(Ljava/lang/String;ILjava/lang/String;)I +HPLcom/android/okhttp/internal/http/HeaderParser;->skipWhitespace(Ljava/lang/String;I)I +HPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->timeout()Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->unexpectedEndOfInput()V +HPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->close()V +HPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->(Lcom/android/okhttp/internal/http/Http1xStream;J)V +HPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->(Lcom/android/okhttp/internal/http/Http1xStream;JLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;)V +HPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->close()V +HPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;->close()V +HPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSink(J)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/internal/http/HttpEngine$2;->(Lcom/android/okhttp/internal/http/HttpEngine;Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/okio/BufferedSink;)V +HPLcom/android/okhttp/internal/http/HttpEngine$2;->close()V +HPLcom/android/okhttp/internal/http/HttpEngine$2;->read(Lcom/android/okhttp/okio/Buffer;J)J +HPLcom/android/okhttp/internal/http/HttpEngine$2;->timeout()Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation; +HPLcom/android/okhttp/internal/http/HttpEngine;->getRequest()Lcom/android/okhttp/Request; +HPLcom/android/okhttp/internal/http/HttpEngine;->sameConnection(Lcom/android/okhttp/HttpUrl;)Z +HPLcom/android/okhttp/internal/http/HttpMethod;->invalidatesCache(Ljava/lang/String;)Z +HPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I +HPLcom/android/okhttp/internal/http/OkHeaders;->hasVaryAll(Lcom/android/okhttp/Headers;)Z +HPLcom/android/okhttp/internal/http/OkHeaders;->hasVaryAll(Lcom/android/okhttp/Response;)Z +HPLcom/android/okhttp/internal/http/OkHeaders;->toMultimap(Lcom/android/okhttp/Headers;Ljava/lang/String;)Ljava/util/Map; +HPLcom/android/okhttp/internal/http/OkHeaders;->varyFields(Lcom/android/okhttp/Headers;)Ljava/util/Set; +HPLcom/android/okhttp/internal/http/OkHeaders;->varyHeaders(Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Headers; +HPLcom/android/okhttp/internal/http/OkHeaders;->varyHeaders(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Headers; +HPLcom/android/okhttp/internal/http/StatusLine;->get(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/StatusLine; +HPLcom/android/okhttp/internal/http/StatusLine;->toString()Ljava/lang/String; +HPLcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->connect()V +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentEncoding()Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentLength()I +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getErrorStream()Ljava/io/InputStream; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderFields()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperties()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseMessage()Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getURL()Ljava/net/URL; +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDefaultUseCaches(Z)V +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setFixedLengthStreamingMode(I)V +HPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setRequestMethod(Ljava/lang/String;)V +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getErrorStream()Ljava/io/InputStream; +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderFields()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperties()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseMessage()Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setFixedLengthStreamingMode(I)V +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setFixedLengthStreamingMode(J)V +HPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->connect()V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentEncoding()Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentLength()I +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getErrorStream()Ljava/io/InputStream; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderFields()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperties()Ljava/util/Map; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseMessage()Ljava/lang/String; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getURL()Ljava/net/URL; +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDefaultUseCaches(Z)V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setFixedLengthStreamingMode(I)V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V +HPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V +HPLcom/android/okhttp/internal/io/FileSystem$1;->appendingSink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/internal/io/FileSystem$1;->delete(Ljava/io/File;)V +HPLcom/android/okhttp/internal/io/FileSystem$1;->exists(Ljava/io/File;)Z +HPLcom/android/okhttp/internal/io/FileSystem$1;->rename(Ljava/io/File;Ljava/io/File;)V +HPLcom/android/okhttp/internal/io/FileSystem$1;->sink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/internal/io/FileSystem$1;->size(Ljava/io/File;)J +HPLcom/android/okhttp/okio/Base64;->encode([B)Ljava/lang/String; +HPLcom/android/okhttp/okio/Base64;->encode([B[B)Ljava/lang/String; +HPLcom/android/okhttp/okio/Buffer;->clear()V +HPLcom/android/okhttp/okio/Buffer;->readByte()B +HPLcom/android/okhttp/okio/Buffer;->readInt()I +HPLcom/android/okhttp/okio/Buffer;->readIntLe()I +HPLcom/android/okhttp/okio/Buffer;->readShort()S +HPLcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/Buffer; +HPLcom/android/okhttp/okio/ByteString;->([B)V +HPLcom/android/okhttp/okio/ByteString;->base64()Ljava/lang/String; +HPLcom/android/okhttp/okio/ByteString;->hex()Ljava/lang/String; +HPLcom/android/okhttp/okio/ByteString;->of([B)Lcom/android/okhttp/okio/ByteString; +HPLcom/android/okhttp/okio/ForwardingSink;->(Lcom/android/okhttp/okio/Sink;)V +HPLcom/android/okhttp/okio/ForwardingSink;->close()V +HPLcom/android/okhttp/okio/ForwardingSink;->flush()V +HPLcom/android/okhttp/okio/ForwardingSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/okio/ForwardingTimeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/okio/ForwardingTimeout;->hasDeadline()Z +HPLcom/android/okhttp/okio/GzipSource;->(Lcom/android/okhttp/okio/Source;)V +HPLcom/android/okhttp/okio/GzipSource;->checkEqual(Ljava/lang/String;II)V +HPLcom/android/okhttp/okio/GzipSource;->close()V +HPLcom/android/okhttp/okio/GzipSource;->consumeHeader()V +HPLcom/android/okhttp/okio/GzipSource;->consumeTrailer()V +HPLcom/android/okhttp/okio/GzipSource;->read(Lcom/android/okhttp/okio/Buffer;J)J +HPLcom/android/okhttp/okio/GzipSource;->updateCrc(Lcom/android/okhttp/okio/Buffer;JJ)V +HPLcom/android/okhttp/okio/InflaterSource;->(Lcom/android/okhttp/okio/BufferedSource;Ljava/util/zip/Inflater;)V +HPLcom/android/okhttp/okio/InflaterSource;->close()V +HPLcom/android/okhttp/okio/InflaterSource;->read(Lcom/android/okhttp/okio/Buffer;J)J +HPLcom/android/okhttp/okio/InflaterSource;->refill()Z +HPLcom/android/okhttp/okio/InflaterSource;->releaseInflatedBytes()V +HPLcom/android/okhttp/okio/Okio$1;->close()V +HPLcom/android/okhttp/okio/Okio$3;->newTimeoutException(Ljava/io/IOException;)Ljava/io/IOException; +HPLcom/android/okhttp/okio/Okio$3;->timedOut()V +HPLcom/android/okhttp/okio/Okio;->appendingSink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/okio/Okio;->sink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/okio/Okio;->sink(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Sink; +HPLcom/android/okhttp/okio/RealBufferedSink$1;->close()V +HPLcom/android/okhttp/okio/RealBufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink; +HPLcom/android/okhttp/okio/RealBufferedSink;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink; +HPLcom/android/okhttp/okio/RealBufferedSink;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink; +HPLcom/android/okhttp/okio/RealBufferedSource$1;->close()V +HPLcom/android/okhttp/okio/RealBufferedSource$1;->read()I +HPLcom/android/okhttp/okio/RealBufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer; +HPLcom/android/okhttp/okio/RealBufferedSource;->close()V +HPLcom/android/okhttp/okio/RealBufferedSource;->readIntLe()I +HPLcom/android/okhttp/okio/RealBufferedSource;->readShort()S +HPLcom/android/okhttp/okio/RealBufferedSource;->skip(J)V +HPLcom/android/okhttp/okio/Timeout$1;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J +HPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; +HPLcom/android/okhttp/okio/Util;->reverseBytesInt(I)I +HPLcom/android/org/bouncycastle/asn1/ASN1Integer;->(Ljava/math/BigInteger;)V +HPLcom/android/org/bouncycastle/asn1/DERBitString;->(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HPLcom/android/org/bouncycastle/asn1/DERSequence;->(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V +HPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V +HPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->(Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HPLcom/android/org/bouncycastle/crypto/DSA;->generateSignature([B)[Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/crypto/DSA;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V +HPLcom/android/org/bouncycastle/crypto/DSA;->verifySignature([BLjava/math/BigInteger;Ljava/math/BigInteger;)Z +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactory;->getSHA256()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getMD5()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getSHA1()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getSHA224()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getSHA256()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getSHA384()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryInterface;->getSHA512()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;->()V +HPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;->getSHA256()Lcom/android/org/bouncycastle/crypto/Digest; +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA256;->()V +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->(Ljava/lang/String;I)V +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->reset()V +HPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V +HPLcom/android/org/bouncycastle/crypto/params/DSAKeyParameters;->getParameters()Lcom/android/org/bouncycastle/crypto/params/DSAParameters; +HPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getG()Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/crypto/params/DSAPublicKeyParameters;->getY()Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/crypto/signers/DSAKCalculator;->init(Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V +HPLcom/android/org/bouncycastle/crypto/signers/DSAKCalculator;->init(Ljava/math/BigInteger;Ljava/security/SecureRandom;)V +HPLcom/android/org/bouncycastle/crypto/signers/DSAKCalculator;->isDeterministic()Z +HPLcom/android/org/bouncycastle/crypto/signers/DSAKCalculator;->nextK()Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/crypto/signers/DSASigner;->()V +HPLcom/android/org/bouncycastle/crypto/signers/DSASigner;->calculateE(Ljava/math/BigInteger;[B)Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/crypto/signers/DSASigner;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V +HPLcom/android/org/bouncycastle/crypto/signers/DSASigner;->initSecureRandom(ZLjava/security/SecureRandom;)Ljava/security/SecureRandom; +HPLcom/android/org/bouncycastle/crypto/signers/DSASigner;->verifySignature([BLjava/math/BigInteger;Ljava/math/BigInteger;)Z +HPLcom/android/org/bouncycastle/crypto/signers/RandomDSAKCalculator;->()V +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->engineGetKeyParameters()Lcom/android/org/bouncycastle/crypto/params/DSAPublicKeyParameters; +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getEncoded()[B +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa256;->()V +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner;->(Lcom/android/org/bouncycastle/crypto/Digest;Lcom/android/org/bouncycastle/crypto/DSA;)V +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner;->derDecode([B)[Ljava/math/BigInteger; +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner;->engineInitVerify(Ljava/security/PublicKey;)V +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner;->engineUpdate([BII)V +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner;->engineVerify([B)Z +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->generatePublicKeyParameter(Ljava/security/PublicKey;)Lcom/android/org/bouncycastle/crypto/params/AsymmetricKeyParameter; +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil;->getEncodedSubjectPublicKeyInfo(Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)[B +HPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil;->getEncodedSubjectPublicKeyInfo(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)[B +HPLcom/android/org/conscrypt/AbstractConscryptSocket;->getFileDescriptor$()Ljava/io/FileDescriptor; +HPLcom/android/org/conscrypt/AbstractConscryptSocket;->isInputShutdown()Z +HPLcom/android/org/conscrypt/AbstractConscryptSocket;->isOutputShutdown()Z +HPLcom/android/org/conscrypt/AbstractConscryptSocket;->setNpnProtocols([B)V +HPLcom/android/org/conscrypt/AbstractSessionContext;->finalize()V +HPLcom/android/org/conscrypt/ActiveSession;->getLocalPrincipal()Ljava/security/Principal; +HPLcom/android/org/conscrypt/ClientSessionContext;->onBeforeRemoveSession(Lcom/android/org/conscrypt/SslSessionWrapper;)V +HPLcom/android/org/conscrypt/ClientSessionContext;->setPersistentCache(Lcom/android/org/conscrypt/SSLClientSessionCache;)V +HPLcom/android/org/conscrypt/Conscrypt;->newPreferredSSLContextSpi()Ljavax/net/ssl/SSLContextSpi; +HPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->finalize()V +HPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setChannelIdPrivateKey(Ljava/security/PrivateKey;)V +HPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setHandshakeTimeout(I)V +HPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setSoWriteTimeout(I)V +HPLcom/android/org/conscrypt/DelegatingExtendedSSLSession;->getLocalPrincipal()Ljava/security/Principal; +HPLcom/android/org/conscrypt/FileClientSessionCache$Impl;->fileName(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/org/conscrypt/FileClientSessionCache$Impl;->getSessionData(Ljava/lang/String;I)[B +HPLcom/android/org/conscrypt/FileClientSessionCache$Impl;->putSessionData(Ljavax/net/ssl/SSLSession;[B)V +HPLcom/android/org/conscrypt/NativeRef$SSL_SESSION;->doFree(J)V +HPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->doFinalInternal([BII)I +HPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->getOutputSizeForFinal(I)I +HPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->reset()V +HPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->updateInternal([BII[BII)I +HPLcom/android/org/conscrypt/OpenSSLCipher;->engineDoFinal([BII)[B +HPLcom/android/org/conscrypt/OpenSSLCipherRSA;->engineGetBlockSize()I +HPLcom/android/org/conscrypt/OpenSSLCipherRSA;->isInitialized()Z +HPLcom/android/org/conscrypt/OpenSSLCipherRSA;->keySizeBytes()I +HPLcom/android/org/conscrypt/OpenSSLCipherRSA;->paddedBlockSizeBytes()I +HPLcom/android/org/conscrypt/OpenSSLContextImpl;->engineGetClientSessionContext()Lcom/android/org/conscrypt/ClientSessionContext; +HPLcom/android/org/conscrypt/OpenSSLContextImpl;->getPreferred()Lcom/android/org/conscrypt/OpenSSLContextImpl; +HPLcom/android/org/conscrypt/OpenSSLKey;->getPrivateKey()Ljava/security/PrivateKey; +HPLcom/android/org/conscrypt/OpenSSLKey;->getPrivateKey(Ljava/security/spec/PKCS8EncodedKeySpec;I)Ljava/security/PrivateKey; +HPLcom/android/org/conscrypt/OpenSSLRSAKeyFactory;->engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey; +HPLcom/android/org/conscrypt/OpenSSLRSAPrivateKey;->(Lcom/android/org/conscrypt/OpenSSLKey;)V +HPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getFileDescriptor$()Ljava/io/FileDescriptor; +HPLcom/android/org/conscrypt/OpenSSLSocketImpl;->isInputShutdown()Z +HPLcom/android/org/conscrypt/OpenSSLSocketImpl;->isOutputShutdown()Z +HPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setNpnProtocols([B)V +HPLcom/android/org/conscrypt/OpenSSLX509Certificate;->fromX509Der([B)Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSignature()[B +HPLcom/android/org/conscrypt/OpenSSLX509Certificate;->verifyInternal(Ljava/security/PublicKey;Ljava/lang/String;)V +HPLcom/android/org/conscrypt/Platform;->closeGuardWarnIfOpen(Ljava/lang/Object;)V +HPLcom/android/org/conscrypt/Platform;->setSocketWriteTimeout(Ljava/net/Socket;J)V +HPLcom/android/org/conscrypt/SSLParametersImpl;->isSniEnabledByDefault()Z +HPLcom/android/org/conscrypt/SSLUtils$SessionType;->(Ljava/lang/String;II)V +HPLcom/android/org/conscrypt/SSLUtils$SessionType;->isSupportedType(I)Z +HPLcom/android/org/conscrypt/SslSessionWrapper$Impl$1;->(Lcom/android/org/conscrypt/SslSessionWrapper$Impl;)V +HPLcom/android/org/conscrypt/SslSessionWrapper$Impl$1;->getPeerHost()Ljava/lang/String; +HPLcom/android/org/conscrypt/SslSessionWrapper$Impl$1;->getPeerPort()I +HPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->toBytes()[B +HPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->toSSLSession()Ljavax/net/ssl/SSLSession; +HPLcom/android/org/conscrypt/SslSessionWrapper;->checkRemaining(Ljava/nio/ByteBuffer;I)V +HPLcom/android/org/conscrypt/SslSessionWrapper;->newInstance(Lcom/android/org/conscrypt/AbstractSessionContext;[BLjava/lang/String;I)Lcom/android/org/conscrypt/SslSessionWrapper; +HPLcom/android/org/conscrypt/TrustManagerFactoryImpl;->()V +HPLcom/android/org/conscrypt/TrustManagerFactoryImpl;->engineGetTrustManagers()[Ljavax/net/ssl/TrustManager; +HPLcom/android/org/conscrypt/TrustManagerFactoryImpl;->engineInit(Ljava/security/KeyStore;)V +HPLcom/android/org/conscrypt/TrustManagerImpl;->(Ljava/security/KeyStore;)V +HPLcom/android/org/conscrypt/TrustManagerImpl;->(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;)V +HPLcom/android/org/conscrypt/TrustManagerImpl;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V +HPLcom/android/org/conscrypt/TrustedCertificateStore$2;->(Lcom/android/org/conscrypt/TrustedCertificateStore;Ljava/security/cert/X509Certificate;)V +HPLcom/android/org/conscrypt/TrustedCertificateStore$4;->(Lcom/android/org/conscrypt/TrustedCertificateStore;Ljava/security/cert/X509Certificate;)V +HPLcom/android/org/conscrypt/TrustedCertificateStore$5;->(Lcom/android/org/conscrypt/TrustedCertificateStore;Ljava/security/cert/X509Certificate;)V +HPLcom/android/org/conscrypt/TrustedCertificateStore$5;->match(Ljava/security/cert/X509Certificate;)Z +HPLcom/android/org/conscrypt/TrustedCertificateStore;->-wrap0(Lcom/android/org/conscrypt/TrustedCertificateStore;Ljava/security/cert/X509Certificate;)Z +HPLcom/android/org/conscrypt/TrustedCertificateStore;->findAllIssuers(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HPLcom/android/org/conscrypt/TrustedCertificateStore;->getTrustAnchor(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HPLcom/android/server/AppWidgetBackupBridge;->register(Lcom/android/server/WidgetBackupProvider;)V +HPLcom/android/server/BootReceiver$1;->(Lcom/android/server/BootReceiver;Landroid/content/Context;)V +HPLcom/android/server/BootReceiver$1;->run()V +HPLcom/android/server/BootReceiver$2;->(Lcom/android/server/BootReceiver;Ljava/lang/String;ILandroid/os/DropBoxManager;Ljava/lang/String;)V +HPLcom/android/server/BootReceiver;->-wrap2(Lcom/android/server/BootReceiver;Landroid/content/Context;)V +HPLcom/android/server/BootReceiver;->-wrap3(Lcom/android/server/BootReceiver;Landroid/content/Context;)V +HPLcom/android/server/BootReceiver;->()V +HPLcom/android/server/BootReceiver;->addFsckErrorsToDropBoxAndLogFsStat(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;ILjava/lang/String;)V +HPLcom/android/server/BootReceiver;->getBootHeadersToLogAndUpdate()Ljava/lang/String; +HPLcom/android/server/BootReceiver;->getCurrentBootHeaders()Ljava/lang/String; +HPLcom/android/server/BootReceiver;->getPreviousBootHeaders()Ljava/lang/String; +HPLcom/android/server/BootReceiver;->logBootEvents(Landroid/content/Context;)V +HPLcom/android/server/BootReceiver;->logFsMountTime()V +HPLcom/android/server/BootReceiver;->logFsShutdownTime()V +HPLcom/android/server/BootReceiver;->logSystemServerShutdownTimeMetrics()V +HPLcom/android/server/BootReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/BootReceiver;->readTimestamps()Ljava/util/HashMap; +HPLcom/android/server/BootReceiver;->removeOldUpdatePackages(Landroid/content/Context;)V +HPLcom/android/server/BootReceiver;->writeTimestamps(Ljava/util/HashMap;)V +HPLcom/android/server/NetworkManagementSocketTagger;->setKernelCounterSet(II)V +HPLcom/android/server/NetworkManagementSocketTagger;->setThreadSocketStatsUid(I)I +HPLcom/android/server/SystemConfig;->getAllowImplicitBroadcasts()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getAllowInDataUsageSave()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getAllowInPowerSave()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getAllowInPowerSaveExceptIdle()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getAllowUnthrottledLocation()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getBackupTransportWhitelist()Landroid/util/ArraySet; +HPLcom/android/server/SystemConfig;->getDefaultVrComponents()Landroid/util/ArraySet; +HPLcom/android/server/WidgetBackupProvider;->getWidgetParticipants(I)Ljava/util/List; +HPLcom/android/server/WidgetBackupProvider;->getWidgetState(Ljava/lang/String;I)[B +HPLcom/android/server/WidgetBackupProvider;->restoreFinished(I)V +HPLcom/android/server/WidgetBackupProvider;->restoreStarting(I)V +HPLcom/android/server/WidgetBackupProvider;->restoreWidgetState(Ljava/lang/String;[BI)V +HPLcom/android/server/backup/AccountSyncSettingsBackupHelper;->(Landroid/content/Context;)V +HPLcom/android/server/backup/AccountSyncSettingsBackupHelper;->accountAdded(Landroid/content/Context;)V +HPLcom/android/server/backup/AccountSyncSettingsBackupHelper;->accountAddedInternal()V +HPLcom/android/server/net/BaseNetworkObserver;->()V +HPLcom/android/server/net/BaseNetworkObserver;->addressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V +HPLcom/android/server/net/BaseNetworkObserver;->interfaceAdded(Ljava/lang/String;)V +HPLcom/android/server/net/BaseNetworkObserver;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V +HPLcom/android/server/net/BaseNetworkObserver;->interfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V +HPLcom/android/server/net/BaseNetworkObserver;->interfaceLinkStateChanged(Ljava/lang/String;Z)V +HPLcom/android/server/net/BaseNetworkObserver;->interfaceRemoved(Ljava/lang/String;)V +HPLcom/android/server/net/BaseNetworkObserver;->limitReached(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/net/BaseNetworkObserver;->routeUpdated(Landroid/net/RouteInfo;)V +HPLcom/android/server/net/DnsServerEntry;->(Ljava/net/InetAddress;J)V +HPLcom/android/server/net/DnsServerEntry;->compareTo(Lcom/android/server/net/DnsServerEntry;)I +HPLcom/android/server/net/DnsServerEntry;->compareTo(Ljava/lang/Object;)I +HPLcom/android/server/net/DnsServerRepository;->()V +HPLcom/android/server/net/DnsServerRepository;->addServers(J[Ljava/lang/String;)Z +HPLcom/android/server/net/DnsServerRepository;->setDnsServersOn(Landroid/net/LinkProperties;)V +HPLcom/android/server/net/DnsServerRepository;->updateCurrentServers()Z +HPLcom/android/server/net/DnsServerRepository;->updateExistingEntry(Ljava/net/InetAddress;J)Z +HPLcom/android/server/net/NetlinkTracker$Callback;->update()V +HPLcom/android/server/net/NetlinkTracker;->(Ljava/lang/String;Lcom/android/server/net/NetlinkTracker$Callback;)V +HPLcom/android/server/net/NetlinkTracker;->addressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V +HPLcom/android/server/net/NetlinkTracker;->addressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V +HPLcom/android/server/net/NetlinkTracker;->clearLinkProperties()V +HPLcom/android/server/net/NetlinkTracker;->getLinkProperties()Landroid/net/LinkProperties; +HPLcom/android/server/net/NetlinkTracker;->interfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V +HPLcom/android/server/net/NetlinkTracker;->interfaceRemoved(Ljava/lang/String;)V +HPLcom/android/server/net/NetlinkTracker;->maybeLog(Ljava/lang/String;Ljava/lang/Object;)V +HPLcom/android/server/net/NetlinkTracker;->maybeLog(Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkAddress;)V +HPLcom/android/server/net/NetlinkTracker;->routeRemoved(Landroid/net/RouteInfo;)V +HPLcom/android/server/net/NetlinkTracker;->routeUpdated(Landroid/net/RouteInfo;)V +HPLcom/android/server/sip/SipService$ConnectivityReceiver;->(Lcom/android/server/sip/SipService;)V +HPLcom/android/server/sip/SipService$ConnectivityReceiver;->(Lcom/android/server/sip/SipService;Lcom/android/server/sip/SipService$ConnectivityReceiver;)V +HPLcom/android/server/sip/SipService$MyExecutor;->(Lcom/android/server/sip/SipService;)V +HPLcom/android/server/sip/SipService;->-wrap0()Landroid/os/Looper; +HPLcom/android/server/sip/SipService;->(Landroid/content/Context;)V +HPLcom/android/server/sip/SipService;->createLooper()Landroid/os/Looper; +HPLcom/android/server/sip/SipService;->log(Ljava/lang/String;)V +HPLcom/android/server/sip/SipService;->slog(Ljava/lang/String;)V +HPLcom/android/server/sip/SipService;->start(Landroid/content/Context;)V +HPLcom/android/server/sip/SipWakeLock;->(Landroid/os/PowerManager;)V +HPLcom/android/server/sip/SipWakeupTimer$MyEventComparator;->()V +HPLcom/android/server/sip/SipWakeupTimer$MyEventComparator;->(Lcom/android/server/sip/SipWakeupTimer$MyEventComparator;)V +HPLcom/android/server/sip/SipWakeupTimer;->(Landroid/content/Context;Ljava/util/concurrent/Executor;)V +HPLcom/android/server/sip/SipWakeupTimer;->getAction()Ljava/lang/String; +HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount; +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket; +HPLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint; +HPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount; +HPLcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket; +HPLcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount; +HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;->()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo; +HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent; +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry; +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry; +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->()V +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog; +HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount; +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->()V +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->clear()Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->computeSerializedSize()I +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/framework/protobuf/nano/MessageNano; +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->parseFrom([B)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; +HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V +HPLcom/google/android/collect/Sets;->newHashSet()Ljava/util/HashSet; +HPLdalvik/system/SocketTagger;->tag(Ljava/net/Socket;)V +HPLdalvik/system/SocketTagger;->untag(Ljava/net/Socket;)V +HPLjava/io/Bits;->getBoolean([BI)Z +HPLjava/io/Bits;->putBoolean([BIZ)V +HPLjava/io/Bits;->putDouble([BID)V +HPLjava/io/BufferedInputStream;->reset()V +HPLjava/io/BufferedInputStream;->skip(J)J +HPLjava/io/BufferedReader;->mark(I)V +HPLjava/io/BufferedReader;->read()I +HPLjava/io/BufferedReader;->read([CII)I +HPLjava/io/BufferedReader;->read1([CII)I +HPLjava/io/BufferedReader;->reset()V +HPLjava/io/BufferedReader;->skip(J)J +HPLjava/io/BufferedWriter;->close()V +HPLjava/io/BufferedWriter;->write(I)V +HPLjava/io/ByteArrayOutputStream;->toString()Ljava/lang/String; +HPLjava/io/CharArrayWriter;->flush()V +HPLjava/io/CharArrayWriter;->reset()V +HPLjava/io/CharArrayWriter;->toCharArray()[C +HPLjava/io/DataInputStream;->read([B)I +HPLjava/io/DataInputStream;->readByte()B +HPLjava/io/DataInputStream;->skipBytes(I)I +HPLjava/io/DataOutputStream;->write(I)V +HPLjava/io/DataOutputStream;->writeBoolean(Z)V +HPLjava/io/DataOutputStream;->writeByte(I)V +HPLjava/io/DataOutputStream;->writeDouble(D)V +HPLjava/io/File;->list(Ljava/io/FilenameFilter;)[Ljava/lang/String; +HPLjava/io/File;->setReadable(Z)Z +HPLjava/io/File;->setWritable(Z)Z +HPLjava/io/File;->toPath()Ljava/nio/file/Path; +HPLjava/io/FileOutputStream;->getChannel()Ljava/nio/channels/FileChannel; +HPLjava/io/FileWriter;->(Ljava/io/File;)V +HPLjava/io/FilterInputStream;->mark(I)V +HPLjava/io/FilterInputStream;->markSupported()Z +HPLjava/io/FilterInputStream;->reset()V +HPLjava/io/FilterInputStream;->skip(J)J +HPLjava/io/FilterOutputStream;->write(I)V +HPLjava/io/FilterOutputStream;->write([BII)V +HPLjava/io/FilterReader;->(Ljava/io/Reader;)V +HPLjava/io/FilterReader;->read()I +HPLjava/io/InputStream;->available()I +HPLjava/io/InputStream;->close()V +HPLjava/io/InputStream;->markSupported()Z +HPLjava/io/InputStreamReader;->ready()Z +HPLjava/io/ObjectInputStream$BlockDataInputStream;->readFloat()F +HPLjava/io/ObjectInputStream$BlockDataInputStream;->readFloats([FII)V +HPLjava/io/ObjectInputStream;->-wrap2([BI[FII)V +HPLjava/io/ObjectInputStream;->readClass(Z)Ljava/lang/Class; +HPLjava/io/ObjectInputStream;->readFloat()F +HPLjava/io/ObjectInputStream;->readFully([B)V +HPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBoolean(Z)V +HPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloat(F)V +HPLjava/io/ObjectOutputStream$HandleTable;->growSpine()V +HPLjava/io/ObjectOutputStream$ReplaceTable;->assign(Ljava/lang/Object;Ljava/lang/Object;)V +HPLjava/io/ObjectOutputStream;->enableReplaceObject(Z)Z +HPLjava/io/ObjectOutputStream;->write([B)V +HPLjava/io/ObjectOutputStream;->writeBoolean(Z)V +HPLjava/io/ObjectOutputStream;->writeClass(Ljava/lang/Class;Z)V +HPLjava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V +HPLjava/io/ObjectOutputStream;->writeFloat(F)V +HPLjava/io/ObjectStreamClass$3;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I +HPLjava/io/ObjectStreamClass$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLjava/io/ObjectStreamClass$5;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I +HPLjava/io/ObjectStreamClass$5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLjava/io/ObjectStreamClass;->getPackageName(Ljava/lang/Class;)Ljava/lang/String; +HPLjava/io/ObjectStreamClass;->invokeWriteReplace(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z +HPLjava/io/OutputStream;->close()V +HPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;Ljava/lang/String;)V +HPLjava/io/OutputStreamWriter;->write(Ljava/lang/String;II)V +HPLjava/io/PrintStream;->(Ljava/io/OutputStream;ZLjava/lang/String;)V +HPLjava/io/PrintStream;->(ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V +HPLjava/io/PrintStream;->print(J)V +HPLjava/io/PrintStream;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset; +HPLjava/io/PrintWriter;->(Ljava/io/OutputStream;)V +HPLjava/io/PrintWriter;->(Ljava/io/OutputStream;Z)V +HPLjava/io/PrintWriter;->print(I)V +HPLjava/io/PrintWriter;->print(J)V +HPLjava/io/PrintWriter;->print(Ljava/lang/Object;)V +HPLjava/io/PrintWriter;->print(Z)V +HPLjava/io/PrintWriter;->println(I)V +HPLjava/io/PrintWriter;->println(J)V +HPLjava/io/PrintWriter;->println(Z)V +HPLjava/io/PushbackReader;->(Ljava/io/Reader;I)V +HPLjava/io/PushbackReader;->ensureOpen()V +HPLjava/io/PushbackReader;->read()I +HPLjava/io/PushbackReader;->unread(I)V +HPLjava/io/RandomAccessFile;->getFilePointer()J +HPLjava/io/RandomAccessFile;->setLength(J)V +HPLjava/io/RandomAccessFile;->write([B)V +HPLjava/io/RandomAccessFile;->write([BII)V +HPLjava/io/RandomAccessFile;->writeBytes([BII)V +HPLjava/io/RandomAccessFile;->writeUTF(Ljava/lang/String;)V +HPLjava/io/Reader;->read([C)I +HPLjava/io/SequenceInputStream;->available()I +HPLjava/io/SequenceInputStream;->close()V +HPLjava/io/SequenceInputStream;->read([BII)I +HPLjava/io/StringReader;->read()I +HPLjava/io/Writer;->append(C)Ljava/io/Writer; +HPLjava/io/Writer;->append(Ljava/lang/CharSequence;)Ljava/io/Writer; +HPLjava/io/Writer;->write(Ljava/lang/String;II)V +HPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I +HPLjava/lang/AbstractStringBuilder;->subSequence(II)Ljava/lang/CharSequence; +HPLjava/lang/AbstractStringBuilder;->trimToSize()V +HPLjava/lang/Byte;->compare(BB)I +HPLjava/lang/Byte;->compareTo(Ljava/lang/Byte;)I +HPLjava/lang/Byte;->compareTo(Ljava/lang/Object;)I +HPLjava/lang/Byte;->parseByte(Ljava/lang/String;)B +HPLjava/lang/Byte;->parseByte(Ljava/lang/String;I)B +HPLjava/lang/Character$Subset;->equals(Ljava/lang/Object;)Z +HPLjava/lang/Character$Subset;->hashCode()I +HPLjava/lang/Character;->codePointBefore(Ljava/lang/CharSequence;I)I +HPLjava/lang/Character;->isISOControl(C)Z +HPLjava/lang/Character;->isISOControl(I)Z +HPLjava/lang/Character;->isSupplementaryCodePoint(I)Z +HPLjava/lang/Character;->isSurrogatePair(CC)Z +HPLjava/lang/Class;->getConstructors()[Ljava/lang/reflect/Constructor; +HPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object; +HPLjava/lang/Class;->getTypeName()Ljava/lang/String; +HPLjava/lang/ClassCastException;->(Ljava/lang/String;)V +HPLjava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z +HPLjava/lang/Double;->equals(Ljava/lang/Object;)Z +HPLjava/lang/Double;->hashCode()I +HPLjava/lang/Double;->hashCode(D)I +HPLjava/lang/Double;->longValue()J +HPLjava/lang/Error;->()V +HPLjava/lang/InstantiationException;->(Ljava/lang/String;)V +HPLjava/lang/Integer;->byteValue()B +HPLjava/lang/Integer;->shortValue()S +HPLjava/lang/Long;->compare(JJ)I +HPLjava/lang/Long;->floatValue()F +HPLjava/lang/Long;->toBinaryString(J)Ljava/lang/String; +HPLjava/lang/Long;->toOctalString(J)Ljava/lang/String; +HPLjava/lang/Math;->abs(I)I +HPLjava/lang/Math;->abs(J)J +HPLjava/lang/Math;->copySign(FF)F +HPLjava/lang/Math;->powerOfTwoD(I)D +HPLjava/lang/Math;->scalb(FI)F +HPLjava/lang/Math;->signum(F)F +HPLjava/lang/Package;->getImplementationVersion()Ljava/lang/String; +HPLjava/lang/Package;->hashCode()I +HPLjava/lang/Process;->()V +HPLjava/lang/ProcessBuilder$NullInputStream;->()V +HPLjava/lang/ProcessBuilder$NullOutputStream;->()V +HPLjava/lang/ProcessBuilder;->([Ljava/lang/String;)V +HPLjava/lang/ProcessBuilder;->directory(Ljava/io/File;)Ljava/lang/ProcessBuilder; +HPLjava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder; +HPLjava/lang/ProcessBuilder;->start()Ljava/lang/Process; +HPLjava/lang/ProcessEnvironment$ExternalData;->(Ljava/lang/String;[B)V +HPLjava/lang/ProcessEnvironment$ExternalData;->getBytes()[B +HPLjava/lang/ProcessEnvironment$ExternalData;->hashCode()I +HPLjava/lang/ProcessEnvironment$StringEnvironment;->(Ljava/util/Map;)V +HPLjava/lang/ProcessEnvironment$Value;->(Ljava/lang/String;[B)V +HPLjava/lang/ProcessEnvironment$Value;->valueOf([B)Ljava/lang/ProcessEnvironment$Value; +HPLjava/lang/ProcessEnvironment$Variable;->(Ljava/lang/String;[B)V +HPLjava/lang/ProcessEnvironment$Variable;->valueOf([B)Ljava/lang/ProcessEnvironment$Variable; +HPLjava/lang/ProcessEnvironment;->-wrap2([B)I +HPLjava/lang/ProcessEnvironment;->arrayHash([B)I +HPLjava/lang/ProcessEnvironment;->toEnvironmentBlock(Ljava/util/Map;[I)[B +HPLjava/lang/ProcessImpl;->start([Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process; +HPLjava/lang/ProcessImpl;->toCString(Ljava/lang/String;)[B +HPLjava/lang/ReflectiveOperationException;->(Ljava/lang/Throwable;)V +HPLjava/lang/Runnable;->run()V +HPLjava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process; +HPLjava/lang/Runtime;->exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process; +HPLjava/lang/Runtime;->exec([Ljava/lang/String;)Ljava/lang/Process; +HPLjava/lang/Runtime;->exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process; +HPLjava/lang/Short;->(S)V +HPLjava/lang/Short;->equals(Ljava/lang/Object;)Z +HPLjava/lang/Short;->hashCode()I +HPLjava/lang/Short;->hashCode(S)I +HPLjava/lang/Short;->parseShort(Ljava/lang/String;)S +HPLjava/lang/Short;->parseShort(Ljava/lang/String;I)S +HPLjava/lang/Short;->shortValue()S +HPLjava/lang/Short;->valueOf(S)Ljava/lang/Short; +HPLjava/lang/String;->join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String; +HPLjava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer; +HPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; +HPLjava/lang/StringBuffer;->append(Z)Ljava/lang/StringBuffer; +HPLjava/lang/StringBuffer;->substring(I)Ljava/lang/String; +HPLjava/lang/StringBuffer;->substring(II)Ljava/lang/String; +HPLjava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable; +HPLjava/lang/StringBuilder;->indexOf(Ljava/lang/String;)I +HPLjava/lang/StringBuilder;->subSequence(II)Ljava/lang/CharSequence; +HPLjava/lang/StringBuilder;->trimToSize()V +HPLjava/lang/System;->arraycopy([DI[DII)V +HPLjava/lang/System;->arraycopy([SI[SII)V +HPLjava/lang/System;->logE(Ljava/lang/String;Ljava/lang/Throwable;)V +HPLjava/lang/Thread;->toString()Ljava/lang/String; +HPLjava/lang/ThreadGroup;->getName()Ljava/lang/String; +HPLjava/lang/ThreadGroup;->getParent()Ljava/lang/ThreadGroup; +HPLjava/lang/ThreadLocal$ThreadLocalMap;->prevIndex(II)I +HPLjava/lang/ThreadLocal$ThreadLocalMap;->replaceStaleEntry(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V +HPLjava/lang/Throwable;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable; +HPLjava/lang/Throwable;->writeObject(Ljava/io/ObjectOutputStream;)V +HPLjava/lang/UNIXProcess$1;->()V +HPLjava/lang/UNIXProcess$1;->run()Ljava/lang/Object; +HPLjava/lang/UNIXProcess$1;->run()Ljava/util/concurrent/Executor; +HPLjava/lang/UNIXProcess$2;->(Ljava/lang/UNIXProcess;[I)V +HPLjava/lang/UNIXProcess$2;->run()Ljava/lang/Object; +HPLjava/lang/UNIXProcess$2;->run()Ljava/lang/Void; +HPLjava/lang/UNIXProcess$3;->(Ljava/lang/UNIXProcess;)V +HPLjava/lang/UNIXProcess$3;->run()V +HPLjava/lang/UNIXProcess$ProcessPipeInputStream;->(I)V +HPLjava/lang/UNIXProcess$ProcessPipeInputStream;->drainInputStream(Ljava/io/InputStream;)[B +HPLjava/lang/UNIXProcess$ProcessPipeInputStream;->processExited()V +HPLjava/lang/UNIXProcess$ProcessPipeOutputStream;->(I)V +HPLjava/lang/UNIXProcess$ProcessPipeOutputStream;->processExited()V +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory$1;->()V +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory$1;->run()Ljava/lang/Object; +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory$1;->run()Ljava/lang/ThreadGroup; +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->()V +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->(Ljava/lang/UNIXProcess$ProcessReaperThreadFactory;)V +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->getRootThreadGroup()Ljava/lang/ThreadGroup; +HPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HPLjava/lang/UNIXProcess;->-get0(Ljava/lang/UNIXProcess;)I +HPLjava/lang/UNIXProcess;->-wrap0(Ljava/lang/UNIXProcess;I)I +HPLjava/lang/UNIXProcess;->([B[BI[BI[B[IZ)V +HPLjava/lang/UNIXProcess;->getErrorStream()Ljava/io/InputStream; +HPLjava/lang/UNIXProcess;->getInputStream()Ljava/io/InputStream; +HPLjava/lang/UNIXProcess;->initStreams([I)V +HPLjava/lang/UNIXProcess;->newFileDescriptor(I)Ljava/io/FileDescriptor; +HPLjava/lang/UNIXProcess;->processExited(I)V +HPLjava/lang/UNIXProcess;->waitFor()I +HPLjava/lang/reflect/Executable;->isDefaultMethodInternal()Z +HPLjava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V +HPLjava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V +HPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String; +HPLjava/lang/reflect/InvocationTargetException;->(Ljava/lang/Throwable;)V +HPLjava/lang/reflect/Method;->hashCode()I +HPLjava/lang/reflect/Method;->isDefault()Z +HPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V +HPLjava/lang/reflect/Method;->toString()Ljava/lang/String; +HPLjava/lang/reflect/Modifier;->isAbstract(I)Z +HPLjava/lang/reflect/Modifier;->methodModifiers()I +HPLjava/lang/reflect/Modifier;->toString(I)Ljava/lang/String; +HPLjava/math/BigInt;->modInverse(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HPLjava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HPLjava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HPLjava/math/BigInteger;->modInverse(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HPLjava/net/AbstractPlainDatagramSocketImpl;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/AbstractPlainDatagramSocketImpl;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/AbstractPlainSocketImpl;->finalize()V +HPLjava/net/AbstractPlainSocketImpl;->getTimeout()I +HPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z +HPLjava/net/AddressCache;->putUnknownHost(Ljava/lang/String;ILjava/lang/String;)V +HPLjava/net/CookieHandler;->()V +HPLjava/net/CookieHandler;->get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map; +HPLjava/net/CookieHandler;->put(Ljava/net/URI;Ljava/util/Map;)V +HPLjava/net/CookieManager;->()V +HPLjava/net/CookieManager;->(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V +HPLjava/net/CookieManager;->getCookieStore()Ljava/net/CookieStore; +HPLjava/net/CookiePolicy$1;->()V +HPLjava/net/CookiePolicy$2;->()V +HPLjava/net/CookiePolicy$3;->()V +HPLjava/net/CookieStore;->add(Ljava/net/URI;Ljava/net/HttpCookie;)V +HPLjava/net/CookieStore;->get(Ljava/net/URI;)Ljava/util/List; +HPLjava/net/CookieStore;->getCookies()Ljava/util/List; +HPLjava/net/CookieStore;->getURIs()Ljava/util/List; +HPLjava/net/CookieStore;->remove(Ljava/net/URI;Ljava/net/HttpCookie;)Z +HPLjava/net/CookieStore;->removeAll()Z +HPLjava/net/DatagramPacket;->([BIILjava/net/SocketAddress;)V +HPLjava/net/DatagramPacket;->([BILjava/net/SocketAddress;)V +HPLjava/net/DatagramPacket;->setSocketAddress(Ljava/net/SocketAddress;)V +HPLjava/net/InMemoryCookieStore;->()V +HPLjava/net/InMemoryCookieStore;->(I)V +HPLjava/net/InMemoryCookieStore;->getCookies()Ljava/util/List; +HPLjava/net/Inet4Address;->isLinkLocalAddress()Z +HPLjava/net/Inet4Address;->isLoopbackAddress()Z +HPLjava/net/Inet6Address$Inet6AddressHolder;->isLoopbackAddress()Z +HPLjava/net/Inet6Address;->isLoopbackAddress()Z +HPLjava/net/InetAddress;->getAllByNameOnNet(Ljava/lang/String;I)[Ljava/net/InetAddress; +HPLjava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress; +HPLjava/net/InetSocketAddress$InetSocketAddressHolder;->toString()Ljava/lang/String; +HPLjava/net/InetSocketAddress;->toString()Ljava/lang/String; +HPLjava/net/InterfaceAddress;->getAddress()Ljava/net/InetAddress; +HPLjava/net/MulticastSocket;->(I)V +HPLjava/net/MulticastSocket;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/MulticastSocket;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/MulticastSocket;->setTimeToLive(I)V +HPLjava/net/NetworkInterface;->getByName(Ljava/lang/String;)Ljava/net/NetworkInterface; +HPLjava/net/NetworkInterface;->getHardwareAddress()[B +HPLjava/net/NetworkInterface;->getInterfaceAddresses()Ljava/util/List; +HPLjava/net/NetworkInterface;->getMTU()I +HPLjava/net/NetworkInterface;->isUp()Z +HPLjava/net/NetworkInterface;->isVirtual()Z +HPLjava/net/NetworkInterface;->supportsMulticast()Z +HPLjava/net/PlainDatagramSocketImpl;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/PlainDatagramSocketImpl;->leave(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HPLjava/net/PlainDatagramSocketImpl;->makeGroupReq(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)Landroid/system/StructGroupReq; +HPLjava/net/PlainDatagramSocketImpl;->setTimeToLive(I)V +HPLjava/net/PlainSocketImpl;->socketGetOption(I)Ljava/lang/Object; +HPLjava/net/Proxy$Type;->values()[Ljava/net/Proxy$Type; +HPLjava/net/Socket;->(Ljava/net/InetAddress;I)V +HPLjava/net/Socket;->([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V +HPLjava/net/Socket;->connect(Ljava/net/SocketAddress;)V +HPLjava/net/Socket;->getInetAddress()Ljava/net/InetAddress; +HPLjava/net/Socket;->getReuseAddress()Z +HPLjava/net/Socket;->nonNullAddress(Ljava/net/InetAddress;)[Ljava/net/InetAddress; +HPLjava/net/Socket;->setTcpNoDelay(Z)V +HPLjava/net/SocketException;->(Ljava/lang/String;)V +HPLjava/net/SocketImpl;->getInetAddress()Ljava/net/InetAddress; +HPLjava/net/SocketInputStream;->finalize()V +HPLjava/net/SocketInputStream;->read([BII)I +HPLjava/net/SocketInputStream;->read([BIII)I +HPLjava/net/SocketInputStream;->socketRead(Ljava/io/FileDescriptor;[BIII)I +HPLjava/net/SocketOutputStream;->finalize()V +HPLjava/net/SocketOutputStream;->socketWrite([BII)V +HPLjava/net/SocketOutputStream;->write([BII)V +HPLjava/net/SocksSocketImpl;->getInetAddress()Ljava/net/InetAddress; +HPLjava/net/URI$Parser;->fail(Ljava/lang/String;I)V +HPLjava/net/URI$Parser;->scanEscape(IIC)I +HPLjava/net/URI;->-get17()J +HPLjava/net/URI;->-get4()J +HPLjava/net/URI;->-set4(Ljava/net/URI;I)I +HPLjava/net/URI;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLjava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String; +HPLjava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z +HPLjava/net/URI;->equalIgnoringCase(Ljava/lang/String;Ljava/lang/String;)Z +HPLjava/net/URI;->equals(Ljava/lang/Object;)Z +HPLjava/net/URI;->getPort()I +HPLjava/net/URI;->getRawFragment()Ljava/lang/String; +HPLjava/net/URI;->getRawPath()Ljava/lang/String; +HPLjava/net/URI;->getRawQuery()Ljava/lang/String; +HPLjava/net/URI;->toASCIIString()Ljava/lang/String; +HPLjava/net/URI;->toURL()Ljava/net/URL; +HPLjava/net/URISyntaxException;->(Ljava/lang/String;Ljava/lang/String;I)V +HPLjava/net/URLConnection;->getContentEncoding()Ljava/lang/String; +HPLjava/net/URLConnection;->getContentLength()I +HPLjava/net/URLConnection;->getContentLengthLong()J +HPLjava/net/URLConnection;->getHeaderFieldLong(Ljava/lang/String;J)J +HPLjava/net/URLConnection;->setDefaultUseCaches(Z)V +HPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLjava/net/URLDecoder;->isValidHexChar(C)Z +HPLjava/net/UnknownHostException;->(Ljava/lang/String;)V +HPLjava/nio/Bits;->getDouble(Ljava/nio/ByteBuffer;IZ)D +HPLjava/nio/Bits;->getDoubleL(Ljava/nio/ByteBuffer;I)D +HPLjava/nio/Bits;->getFloatB(Ljava/nio/ByteBuffer;I)F +HPLjava/nio/Bits;->putDouble(Ljava/nio/ByteBuffer;IDZ)V +HPLjava/nio/Bits;->putDoubleB(Ljava/nio/ByteBuffer;ID)V +HPLjava/nio/Bits;->putFloat(Ljava/nio/ByteBuffer;IFZ)V +HPLjava/nio/Bits;->putFloatB(Ljava/nio/ByteBuffer;IF)V +HPLjava/nio/Bits;->putShort(Ljava/nio/ByteBuffer;ISZ)V +HPLjava/nio/Bits;->putShortB(Ljava/nio/ByteBuffer;IS)V +HPLjava/nio/Bits;->putShortL(Ljava/nio/ByteBuffer;IS)V +HPLjava/nio/Bits;->short0(S)B +HPLjava/nio/Bits;->short1(S)B +HPLjava/nio/ByteBuffer;->equals(BB)Z +HPLjava/nio/ByteBuffer;->equals(Ljava/lang/Object;)Z +HPLjava/nio/ByteBuffer;->hashCode()I +HPLjava/nio/ByteBufferAsIntBuffer;->get()I +HPLjava/nio/ByteBufferAsIntBuffer;->get(I)I +HPLjava/nio/ByteBufferAsIntBuffer;->put(I)Ljava/nio/IntBuffer; +HPLjava/nio/ByteBufferAsIntBuffer;->put(II)Ljava/nio/IntBuffer; +HPLjava/nio/ByteBufferAsIntBuffer;->put([III)Ljava/nio/IntBuffer; +HPLjava/nio/ByteBufferAsLongBuffer;->put([JII)Ljava/nio/LongBuffer; +HPLjava/nio/DirectByteBuffer$MemoryRef;->free()V +HPLjava/nio/DirectByteBuffer;->(JI)V +HPLjava/nio/DirectByteBuffer;->address()J +HPLjava/nio/DirectByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer; +HPLjava/nio/DirectByteBuffer;->cleaner()Lsun/misc/Cleaner; +HPLjava/nio/DirectByteBuffer;->getLong()J +HPLjava/nio/DirectByteBuffer;->getLong(I)J +HPLjava/nio/DirectByteBuffer;->getLong(J)J +HPLjava/nio/DirectByteBuffer;->isAccessible()Z +HPLjava/nio/DirectByteBuffer;->isReadOnly()Z +HPLjava/nio/DirectByteBuffer;->put([BII)Ljava/nio/ByteBuffer; +HPLjava/nio/DirectByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer; +HPLjava/nio/DirectByteBuffer;->putLong(JJ)Ljava/nio/ByteBuffer; +HPLjava/nio/DirectByteBuffer;->setAccessible(Z)V +HPLjava/nio/HeapByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer; +HPLjava/nio/HeapByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer; +HPLjava/nio/HeapByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer; +HPLjava/nio/HeapByteBuffer;->get(I)B +HPLjava/nio/HeapByteBuffer;->getDouble()D +HPLjava/nio/HeapByteBuffer;->getIntUnchecked(I)I +HPLjava/nio/HeapByteBuffer;->getShort()S +HPLjava/nio/HeapByteBuffer;->getUnchecked(I[JII)V +HPLjava/nio/HeapByteBuffer;->getUnchecked(I[SII)V +HPLjava/nio/HeapByteBuffer;->putDouble(D)Ljava/nio/ByteBuffer; +HPLjava/nio/HeapByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer; +HPLjava/nio/HeapByteBuffer;->putIntUnchecked(II)V +HPLjava/nio/HeapByteBuffer;->putShort(IS)Ljava/nio/ByteBuffer; +HPLjava/nio/HeapByteBuffer;->putShort(S)Ljava/nio/ByteBuffer; +HPLjava/nio/HeapByteBuffer;->putUnchecked(I[III)V +HPLjava/nio/HeapByteBuffer;->putUnchecked(I[JII)V +HPLjava/nio/HeapByteBuffer;->putUnchecked(I[SII)V +HPLjava/nio/IntBuffer;->put([I)Ljava/nio/IntBuffer; +HPLjava/nio/LongBuffer;->put([J)Ljava/nio/LongBuffer; +HPLjava/nio/MappedByteBuffer;->(IIII)V +HPLjava/nio/NioUtils;->freeDirectBuffer(Ljava/nio/ByteBuffer;)V +HPLjava/nio/NioUtils;->unsafeArray(Ljava/nio/ByteBuffer;)[B +HPLjava/nio/NioUtils;->unsafeArrayOffset(Ljava/nio/ByteBuffer;)I +HPLjava/nio/channels/Channels$ReadableByteChannelImpl;->(Ljava/io/InputStream;)V +HPLjava/nio/channels/Channels$ReadableByteChannelImpl;->implCloseChannel()V +HPLjava/nio/channels/Channels$ReadableByteChannelImpl;->read(Ljava/nio/ByteBuffer;)I +HPLjava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V +HPLjava/nio/channels/Channels;->newChannel(Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel; +HPLjava/nio/channels/Channels;->newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream; +HPLjava/nio/channels/Channels;->newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Ljava/io/Reader; +HPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel; +HPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/SeekableByteChannel; +HPLjava/nio/file/Files;->read(Ljava/io/InputStream;I)[B +HPLjava/nio/file/Files;->readAllBytes(Ljava/nio/file/Path;)[B +HPLjava/nio/file/attribute/BasicFileAttributes;->creationTime()Ljava/nio/file/attribute/FileTime; +HPLjava/nio/file/attribute/BasicFileAttributes;->fileKey()Ljava/lang/Object; +HPLjava/nio/file/attribute/BasicFileAttributes;->isDirectory()Z +HPLjava/nio/file/attribute/BasicFileAttributes;->isOther()Z +HPLjava/nio/file/attribute/BasicFileAttributes;->isRegularFile()Z +HPLjava/nio/file/attribute/BasicFileAttributes;->isSymbolicLink()Z +HPLjava/nio/file/attribute/BasicFileAttributes;->lastAccessTime()Ljava/nio/file/attribute/FileTime; +HPLjava/nio/file/attribute/BasicFileAttributes;->lastModifiedTime()Ljava/nio/file/attribute/FileTime; +HPLjava/nio/file/attribute/BasicFileAttributes;->size()J +HPLjava/security/DigestInputStream;->(Ljava/io/InputStream;Ljava/security/MessageDigest;)V +HPLjava/security/DigestInputStream;->getMessageDigest()Ljava/security/MessageDigest; +HPLjava/security/DigestInputStream;->read([BII)I +HPLjava/security/DigestInputStream;->setMessageDigest(Ljava/security/MessageDigest;)V +HPLjava/security/KeyFactory;->generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey; +HPLjava/security/KeyPair;->(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V +HPLjava/security/KeyPair;->getPrivate()Ljava/security/PrivateKey; +HPLjava/security/KeyPair;->getPublic()Ljava/security/PublicKey; +HPLjava/security/KeyPairGenerator;->(Ljava/lang/String;)V +HPLjava/security/KeyPairGenerator;->getInstance(Ljava/lang/String;)Ljava/security/KeyPairGenerator; +HPLjava/security/KeyPairGenerator;->getInstance(Lsun/security/jca/GetInstance$Instance;Ljava/lang/String;)Ljava/security/KeyPairGenerator; +HPLjava/security/KeyPairGenerator;->initialize(Ljava/security/spec/AlgorithmParameterSpec;)V +HPLjava/security/KeyPairGeneratorSpi;->()V +HPLjava/security/KeyStore;->containsAlias(Ljava/lang/String;)Z +HPLjava/security/KeyStore;->deleteEntry(Ljava/lang/String;)V +HPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest; +HPLjava/security/Principal;->equals(Ljava/lang/Object;)Z +HPLjava/security/Principal;->getName()Ljava/lang/String; +HPLjava/security/Principal;->hashCode()I +HPLjava/security/Principal;->toString()Ljava/lang/String; +HPLjava/security/Security;->addProvider(Ljava/security/Provider;)I +HPLjava/security/Signature$Delegate;->engineInitSign(Ljava/security/PrivateKey;)V +HPLjava/security/Signature$Delegate;->engineSign()[B +HPLjava/security/Signature;->initSign(Ljava/security/PrivateKey;)V +HPLjava/security/Signature;->sign()[B +HPLjava/security/Signature;->update([B)V +HPLjava/security/cert/Certificate;->equals(Ljava/lang/Object;)Z +HPLjava/security/interfaces/ECPrivateKey;->getS()Ljava/math/BigInteger; +HPLjava/security/spec/ECGenParameterSpec;->(Ljava/lang/String;)V +HPLjava/security/spec/ECGenParameterSpec;->getName()Ljava/lang/String; +HPLjava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger; +HPLjava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger; +HPLjava/security/spec/PKCS8EncodedKeySpec;->([B)V +HPLjava/security/spec/PKCS8EncodedKeySpec;->getEncoded()[B +HPLjava/text/Bidi;->requiresBidi([CII)Z +HPLjava/text/DateFormat;->getTimeInstance()Ljava/text/DateFormat; +HPLjava/text/DecimalFormat;->(Ljava/lang/String;)V +HPLjava/text/DecimalFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HPLjava/text/DecimalFormat;->getNegativePrefix()Ljava/lang/String; +HPLjava/text/DecimalFormat;->getNegativeSuffix()Ljava/lang/String; +HPLjava/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String; +HPLjava/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String; +HPLjava/text/DecimalFormatSymbols;->getInfinity()Ljava/lang/String; +HPLjava/text/DecimalFormatSymbols;->getNaN()Ljava/lang/String; +HPLjava/text/IcuIteratorWrapper;->last()I +HPLjava/text/IcuIteratorWrapper;->next()I +HPLjava/text/IcuIteratorWrapper;->setText(Ljava/lang/String;)V +HPLjava/text/NumberFormat;->getNumberInstance()Ljava/text/NumberFormat; +HPLjava/text/NumberFormat;->getNumberInstance(Ljava/util/Locale;)Ljava/text/NumberFormat; +HPLjava/text/NumberFormat;->parse(Ljava/lang/String;)Ljava/lang/Number; +HPLjava/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HPLjava/text/StringCharacterIterator;->current()C +HPLjava/text/StringCharacterIterator;->first()C +HPLjava/text/StringCharacterIterator;->getEndIndex()I +HPLjava/text/StringCharacterIterator;->getIndex()I +HPLjava/text/StringCharacterIterator;->next()C +HPLjava/text/StringCharacterIterator;->setIndex(I)C +HPLjava/util/AbstractCollection;->remove(Ljava/lang/Object;)Z +HPLjava/util/AbstractList$ListItr;->hasPrevious()Z +HPLjava/util/AbstractList$ListItr;->nextIndex()I +HPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object; +HPLjava/util/AbstractList$ListItr;->previousIndex()I +HPLjava/util/AbstractList;->clear()V +HPLjava/util/AbstractList;->indexOf(Ljava/lang/Object;)I +HPLjava/util/AbstractList;->removeRange(II)V +HPLjava/util/AbstractList;->subList(II)Ljava/util/List; +HPLjava/util/AbstractMap$2$1;->(Ljava/util/AbstractMap$2;)V +HPLjava/util/AbstractMap$2$1;->hasNext()Z +HPLjava/util/AbstractMap$2$1;->next()Ljava/lang/Object; +HPLjava/util/AbstractMap$2;->(Ljava/util/AbstractMap;)V +HPLjava/util/AbstractMap$2;->iterator()Ljava/util/Iterator; +HPLjava/util/AbstractMap;->putAll(Ljava/util/Map;)V +HPLjava/util/AbstractMap;->values()Ljava/util/Collection; +HPLjava/util/ArrayDeque$DescendingIterator;->(Ljava/util/ArrayDeque;)V +HPLjava/util/ArrayDeque$DescendingIterator;->(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$DescendingIterator;)V +HPLjava/util/ArrayDeque$DescendingIterator;->hasNext()Z +HPLjava/util/ArrayDeque$DescendingIterator;->next()Ljava/lang/Object; +HPLjava/util/ArrayDeque;->contains(Ljava/lang/Object;)Z +HPLjava/util/ArrayDeque;->descendingIterator()Ljava/util/Iterator; +HPLjava/util/ArrayList$ArrayListSpliterator;->(Ljava/util/ArrayList;III)V +HPLjava/util/ArrayList$ArrayListSpliterator;->characteristics()I +HPLjava/util/ArrayList$ArrayListSpliterator;->estimateSize()J +HPLjava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HPLjava/util/ArrayList$ArrayListSpliterator;->getFence()I +HPLjava/util/ArrayList$SubList$1;->previousIndex()I +HPLjava/util/ArrayList$SubList;->removeRange(II)V +HPLjava/util/ArrayList$SubList;->set(ILjava/lang/Object;)Ljava/lang/Object; +HPLjava/util/ArrayList;->addAll(ILjava/util/Collection;)Z +HPLjava/util/ArrayList;->lastIndexOf(Ljava/lang/Object;)I +HPLjava/util/ArrayList;->readObject(Ljava/io/ObjectInputStream;)V +HPLjava/util/ArrayList;->removeRange(II)V +HPLjava/util/ArrayList;->spliterator()Ljava/util/Spliterator; +HPLjava/util/ArrayList;->writeObject(Ljava/io/ObjectOutputStream;)V +HPLjava/util/Arrays$ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/Arrays;->binarySearch([CC)I +HPLjava/util/Arrays;->binarySearch([JIIJ)I +HPLjava/util/Arrays;->binarySearch([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I +HPLjava/util/Arrays;->binarySearch0([CIIC)I +HPLjava/util/Arrays;->copyOf([DI)[D +HPLjava/util/Arrays;->copyOf([SI)[S +HPLjava/util/Arrays;->copyOf([ZI)[Z +HPLjava/util/Arrays;->equals([J[J)Z +HPLjava/util/Arrays;->equals([S[S)Z +HPLjava/util/Arrays;->fill([JIIJ)V +HPLjava/util/Arrays;->fill([SS)V +HPLjava/util/Arrays;->fill([ZIIZ)V +HPLjava/util/Arrays;->hashCode([J)I +HPLjava/util/Arrays;->sort([C)V +HPLjava/util/Arrays;->sort([F)V +HPLjava/util/Arrays;->sort([S)V +HPLjava/util/Arrays;->spliterator([III)Ljava/util/Spliterator$OfInt; +HPLjava/util/Arrays;->stream([I)Ljava/util/stream/IntStream; +HPLjava/util/Arrays;->stream([III)Ljava/util/stream/IntStream; +HPLjava/util/Arrays;->toString([B)Ljava/lang/String; +HPLjava/util/BitSet;->([J)V +HPLjava/util/BitSet;->andNot(Ljava/util/BitSet;)V +HPLjava/util/BitSet;->clear()V +HPLjava/util/BitSet;->clone()Ljava/lang/Object; +HPLjava/util/BitSet;->isEmpty()Z +HPLjava/util/BitSet;->length()I +HPLjava/util/BitSet;->nextClearBit(I)I +HPLjava/util/BitSet;->size()I +HPLjava/util/BitSet;->toByteArray()[B +HPLjava/util/BitSet;->trimToSize()V +HPLjava/util/BitSet;->valueOf(Ljava/nio/ByteBuffer;)Ljava/util/BitSet; +HPLjava/util/BitSet;->valueOf([B)Ljava/util/BitSet; +HPLjava/util/Calendar;->clear(I)V +HPLjava/util/Collection;->spliterator()Ljava/util/Spliterator; +HPLjava/util/Collections$CopiesList;->get(I)Ljava/lang/Object; +HPLjava/util/Collections$CopiesList;->size()I +HPLjava/util/Collections$EmptyList;->contains(Ljava/lang/Object;)Z +HPLjava/util/Collections$EmptyList;->hashCode()I +HPLjava/util/Collections$EmptyList;->listIterator()Ljava/util/ListIterator; +HPLjava/util/Collections$EmptyList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/Collections$EmptyMap;->containsKey(Ljava/lang/Object;)Z +HPLjava/util/Collections$EmptyMap;->equals(Ljava/lang/Object;)Z +HPLjava/util/Collections$EmptyMap;->keySet()Ljava/util/Set; +HPLjava/util/Collections$ReverseComparator2;->(Ljava/util/Comparator;)V +HPLjava/util/Collections$SetFromMap;->stream()Ljava/util/stream/Stream; +HPLjava/util/Collections$SetFromMap;->toArray()[Ljava/lang/Object; +HPLjava/util/Collections$SynchronizedCollection;->contains(Ljava/lang/Object;)Z +HPLjava/util/Collections$SynchronizedCollection;->toArray()[Ljava/lang/Object; +HPLjava/util/Collections$SynchronizedSet;->equals(Ljava/lang/Object;)Z +HPLjava/util/Collections$UnmodifiableList;->indexOf(Ljava/lang/Object;)I +HPLjava/util/Collections$UnmodifiableMap;->toString()Ljava/lang/String; +HPLjava/util/Collections$UnmodifiableSortedMap;->(Ljava/util/SortedMap;)V +HPLjava/util/Collections$UnmodifiableSortedSet;->(Ljava/util/SortedSet;)V +HPLjava/util/Collections;->emptyListIterator()Ljava/util/ListIterator; +HPLjava/util/Collections;->max(Ljava/util/Collection;)Ljava/lang/Object; +HPLjava/util/Collections;->min(Ljava/util/Collection;)Ljava/lang/Object; +HPLjava/util/Collections;->reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator; +HPLjava/util/Collections;->shuffle(Ljava/util/List;)V +HPLjava/util/Collections;->shuffle(Ljava/util/List;Ljava/util/Random;)V +HPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection; +HPLjava/util/Collections;->unmodifiableSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap; +HPLjava/util/Collections;->unmodifiableSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet; +HPLjava/util/Date;->(IIIIII)V +HPLjava/util/Date;->after(Ljava/util/Date;)Z +HPLjava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder; +HPLjava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar; +HPLjava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar; +HPLjava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date; +HPLjava/util/Date;->toString()Ljava/lang/String; +HPLjava/util/DualPivotQuicksort;->doSort([CII[CII)V +HPLjava/util/DualPivotQuicksort;->doSort([FII[FII)V +HPLjava/util/DualPivotQuicksort;->doSort([SII[SII)V +HPLjava/util/DualPivotQuicksort;->sort([CIIZ)V +HPLjava/util/DualPivotQuicksort;->sort([CII[CII)V +HPLjava/util/DualPivotQuicksort;->sort([FIIZ)V +HPLjava/util/DualPivotQuicksort;->sort([FII[FII)V +HPLjava/util/DualPivotQuicksort;->sort([SIIZ)V +HPLjava/util/DualPivotQuicksort;->sort([SII[SII)V +HPLjava/util/EnumSet$SerializationProxy;->(Ljava/util/EnumSet;)V +HPLjava/util/EnumSet;->-get0()[Ljava/lang/Enum; +HPLjava/util/EnumSet;->writeReplace()Ljava/lang/Object; +HPLjava/util/Formatter$FormatSpecifier;->checkCharacter()V +HPLjava/util/Formatter$FormatSpecifier;->print(SLjava/util/Locale;)V +HPLjava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V +HPLjava/util/Formatter;->close()V +HPLjava/util/Formatter;->out()Ljava/lang/Appendable; +HPLjava/util/GregorianCalendar;->(Ljava/util/TimeZone;)V +HPLjava/util/HashMap$TreeNode;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HPLjava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V +HPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->removeTreeNode(Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V +HPLjava/util/HashMap$TreeNode;->root()Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V +HPLjava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V +HPLjava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node; +HPLjava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V +HPLjava/util/HashMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/HashMap;->loadFactor()F +HPLjava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; +HPLjava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; +HPLjava/util/HashSet;->(IF)V +HPLjava/util/HashSet;->readObject(Ljava/io/ObjectInputStream;)V +HPLjava/util/HashSet;->writeObject(Ljava/io/ObjectOutputStream;)V +HPLjava/util/Hashtable$KeySet;->(Ljava/util/Hashtable;)V +HPLjava/util/Hashtable$KeySet;->(Ljava/util/Hashtable;Ljava/util/Hashtable$KeySet;)V +HPLjava/util/Hashtable$KeySet;->iterator()Ljava/util/Iterator; +HPLjava/util/Hashtable$KeySet;->size()I +HPLjava/util/Hashtable$ValueCollection;->(Ljava/util/Hashtable;)V +HPLjava/util/Hashtable$ValueCollection;->(Ljava/util/Hashtable;Ljava/util/Hashtable$ValueCollection;)V +HPLjava/util/Hashtable$ValueCollection;->iterator()Ljava/util/Iterator; +HPLjava/util/Hashtable$ValueCollection;->size()I +HPLjava/util/Hashtable;->-get0(Ljava/util/Hashtable;)I +HPLjava/util/Hashtable;->keySet()Ljava/util/Set; +HPLjava/util/Hashtable;->size()I +HPLjava/util/Hashtable;->values()Ljava/util/Collection; +HPLjava/util/IdentityHashMap$KeySet;->size()I +HPLjava/util/IdentityHashMap$Values;->(Ljava/util/IdentityHashMap;)V +HPLjava/util/IdentityHashMap$Values;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$Values;)V +HPLjava/util/IdentityHashMap$Values;->size()I +HPLjava/util/IdentityHashMap$Values;->toArray()[Ljava/lang/Object; +HPLjava/util/IdentityHashMap$Values;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/IdentityHashMap;->clear()V +HPLjava/util/IdentityHashMap;->values()Ljava/util/Collection; +HPLjava/util/JumboEnumSet;->contains(Ljava/lang/Object;)Z +HPLjava/util/JumboEnumSet;->remove(Ljava/lang/Object;)Z +HPLjava/util/LinkedHashMap$LinkedHashIterator;->remove()V +HPLjava/util/LinkedHashMap$LinkedKeySet;->contains(Ljava/lang/Object;)Z +HPLjava/util/LinkedHashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V +HPLjava/util/LinkedHashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; +HPLjava/util/LinkedHashMap;->reinitialize()V +HPLjava/util/LinkedHashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; +HPLjava/util/LinkedHashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; +HPLjava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V +HPLjava/util/LinkedHashSet;->(IF)V +HPLjava/util/LinkedList$DescendingIterator;->(Ljava/util/LinkedList;)V +HPLjava/util/LinkedList$DescendingIterator;->(Ljava/util/LinkedList;Ljava/util/LinkedList$DescendingIterator;)V +HPLjava/util/LinkedList$DescendingIterator;->hasNext()Z +HPLjava/util/LinkedList$DescendingIterator;->next()Ljava/lang/Object; +HPLjava/util/LinkedList$DescendingIterator;->remove()V +HPLjava/util/LinkedList$ListItr;->add(Ljava/lang/Object;)V +HPLjava/util/LinkedList$ListItr;->hasPrevious()Z +HPLjava/util/LinkedList$ListItr;->previous()Ljava/lang/Object; +HPLjava/util/LinkedList$ListItr;->remove()V +HPLjava/util/LinkedList;->descendingIterator()Ljava/util/Iterator; +HPLjava/util/LinkedList;->getFirst()Ljava/lang/Object; +HPLjava/util/LinkedList;->getLast()Ljava/lang/Object; +HPLjava/util/LinkedList;->offerFirst(Ljava/lang/Object;)Z +HPLjava/util/LinkedList;->pollLast()Ljava/lang/Object; +HPLjava/util/LinkedList;->push(Ljava/lang/Object;)V +HPLjava/util/LinkedList;->removeLast()Ljava/lang/Object; +HPLjava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object; +HPLjava/util/Locale;->getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String; +HPLjava/util/Locale;->getDisplayLanguage()Ljava/lang/String; +HPLjava/util/Locale;->getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String; +HPLjava/util/Locale;->getDisplayName()Ljava/lang/String; +HPLjava/util/Locale;->getDisplayName(Ljava/util/Locale;)Ljava/lang/String; +HPLjava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z +HPLjava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String; +HPLjava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String; +HPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; +HPLjava/util/NoSuchElementException;->()V +HPLjava/util/Objects;->toString(Ljava/lang/Object;)Ljava/lang/String; +HPLjava/util/Optional;->orElse(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/PriorityQueue;->clear()V +HPLjava/util/PriorityQueue;->heapify()V +HPLjava/util/PriorityQueue;->initFromCollection(Ljava/util/Collection;)V +HPLjava/util/RandomAccessSubList;->(Ljava/util/AbstractList;II)V +HPLjava/util/Scanner$1;->(Ljava/util/Scanner;I)V +HPLjava/util/Scanner$1;->create(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/Scanner$1;->create(Ljava/lang/String;)Ljava/util/regex/Pattern; +HPLjava/util/Scanner;->(Ljava/io/File;)V +HPLjava/util/Scanner;->(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V +HPLjava/util/Scanner;->(Ljava/lang/String;)V +HPLjava/util/Scanner;->(Ljava/nio/channels/ReadableByteChannel;)V +HPLjava/util/Scanner;->buildIntegerPatternString()Ljava/lang/String; +HPLjava/util/Scanner;->clearCaches()V +HPLjava/util/Scanner;->close()V +HPLjava/util/Scanner;->ensureOpen()V +HPLjava/util/Scanner;->findPatternInBuffer(Ljava/util/regex/Pattern;I)Ljava/lang/String; +HPLjava/util/Scanner;->findWithinHorizon(Ljava/util/regex/Pattern;I)Ljava/lang/String; +HPLjava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String; +HPLjava/util/Scanner;->hasNext()Z +HPLjava/util/Scanner;->hasTokenInBuffer()Z +HPLjava/util/Scanner;->integerPattern()Ljava/util/regex/Pattern; +HPLjava/util/Scanner;->linePattern()Ljava/util/regex/Pattern; +HPLjava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;)Ljava/lang/Readable; +HPLjava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;)Ljava/lang/Readable; +HPLjava/util/Scanner;->match()Ljava/util/regex/MatchResult; +HPLjava/util/Scanner;->next()Ljava/lang/String; +HPLjava/util/Scanner;->next(Ljava/util/regex/Pattern;)Ljava/lang/String; +HPLjava/util/Scanner;->nextLine()Ljava/lang/String; +HPLjava/util/Scanner;->nextLong()J +HPLjava/util/Scanner;->nextLong(I)J +HPLjava/util/Scanner;->readInput()V +HPLjava/util/Scanner;->revertState(Z)Z +HPLjava/util/Scanner;->saveState()V +HPLjava/util/Scanner;->setRadix(I)V +HPLjava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner; +HPLjava/util/Scanner;->useLocale(Ljava/util/Locale;)Ljava/util/Scanner; +HPLjava/util/Spliterator$OfInt;->forEachRemaining(Ljava/util/function/Consumer;)V +HPLjava/util/Spliterators$IntArraySpliterator;->([IIII)V +HPLjava/util/Spliterators$IntArraySpliterator;->characteristics()I +HPLjava/util/Spliterators$IntArraySpliterator;->estimateSize()J +HPLjava/util/Spliterators$IntArraySpliterator;->forEachRemaining(Ljava/util/function/IntConsumer;)V +HPLjava/util/Spliterators;->checkFromToBounds(III)V +HPLjava/util/Spliterators;->spliterator([IIII)Ljava/util/Spliterator$OfInt; +HPLjava/util/StringTokenizer;->(Ljava/lang/String;)V +HPLjava/util/StringTokenizer;->countTokens()I +HPLjava/util/StringTokenizer;->nextToken(Ljava/lang/String;)Ljava/lang/String; +HPLjava/util/SubList$1;->(Ljava/util/SubList;I)V +HPLjava/util/SubList$1;->hasNext()Z +HPLjava/util/SubList$1;->next()Ljava/lang/Object; +HPLjava/util/SubList$1;->nextIndex()I +HPLjava/util/SubList;->-get0(Ljava/util/SubList;)Ljava/util/AbstractList; +HPLjava/util/SubList;->-get1(Ljava/util/SubList;)I +HPLjava/util/SubList;->-get2(Ljava/util/SubList;)I +HPLjava/util/SubList;->(Ljava/util/AbstractList;II)V +HPLjava/util/SubList;->checkForComodification()V +HPLjava/util/SubList;->iterator()Ljava/util/Iterator; +HPLjava/util/SubList;->listIterator(I)Ljava/util/ListIterator; +HPLjava/util/SubList;->rangeCheckForAdd(I)V +HPLjava/util/SubList;->size()I +HPLjava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V +HPLjava/util/TimeZone;->createGmtOffsetString(ZZI)Ljava/lang/String; +HPLjava/util/TimeZone;->getDisplayName(ZILjava/util/Locale;)Ljava/lang/String; +HPLjava/util/Timer;->cancel()V +HPLjava/util/Timer;->schedule(Ljava/util/TimerTask;J)V +HPLjava/util/TreeMap$AscendingSubMap;->comparator()Ljava/util/Comparator; +HPLjava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator; +HPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->isEmpty()Z +HPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->size()I +HPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->remove()V +HPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V +HPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V +HPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->next()Ljava/lang/Object; +HPLjava/util/TreeMap$NavigableSubMap;->isEmpty()Z +HPLjava/util/TreeMap$NavigableSubMap;->navigableKeySet()Ljava/util/NavigableSet; +HPLjava/util/TreeMap$NavigableSubMap;->size()I +HPLjava/util/TreeMap;->(Ljava/util/Map;)V +HPLjava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V +HPLjava/util/TreeMap;->firstEntry()Ljava/util/Map$Entry; +HPLjava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry; +HPLjava/util/TreeMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; +HPLjava/util/TreeMap;->lastKey()Ljava/lang/Object; +HPLjava/util/TreeMap;->pollLastEntry()Ljava/util/Map$Entry; +HPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V +HPLjava/util/TreeMap;->tailMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; +HPLjava/util/TreeSet;->(Ljava/util/SortedSet;)V +HPLjava/util/TreeSet;->comparator()Ljava/util/Comparator; +HPLjava/util/TreeSet;->last()Ljava/lang/Object; +HPLjava/util/TreeSet;->subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedSet; +HPLjava/util/TreeSet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet; +HPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;)Ljava/util/SortedSet; +HPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet; +HPLjava/util/Vector;->insertElementAt(Ljava/lang/Object;I)V +HPLjava/util/Vector;->setElementAt(Ljava/lang/Object;I)V +HPLjava/util/WeakHashMap$ValueIterator;->(Ljava/util/WeakHashMap;)V +HPLjava/util/WeakHashMap$ValueIterator;->(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$ValueIterator;)V +HPLjava/util/WeakHashMap$ValueIterator;->next()Ljava/lang/Object; +HPLjava/util/WeakHashMap$Values;->(Ljava/util/WeakHashMap;)V +HPLjava/util/WeakHashMap$Values;->(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$Values;)V +HPLjava/util/WeakHashMap$Values;->iterator()Ljava/util/Iterator; +HPLjava/util/WeakHashMap;->values()Ljava/util/Collection; +HPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future; +HPLjava/util/concurrent/ArrayBlockingQueue;->itemAt(I)Ljava/lang/Object; +HPLjava/util/concurrent/ArrayBlockingQueue;->peek()Ljava/lang/Object; +HPLjava/util/concurrent/ArrayBlockingQueue;->poll()Ljava/lang/Object; +HPLjava/util/concurrent/CancellationException;->(Ljava/lang/String;)V +HPLjava/util/concurrent/CompletableFuture$Completion;->()V +HPLjava/util/concurrent/CompletableFuture$Completion;->isLive()Z +HPLjava/util/concurrent/CompletableFuture$Completion;->tryFire(I)Ljava/util/concurrent/CompletableFuture; +HPLjava/util/concurrent/CompletableFuture$Signaller;->(ZJJ)V +HPLjava/util/concurrent/CompletableFuture$Signaller;->block()Z +HPLjava/util/concurrent/CompletableFuture$Signaller;->isReleasable()Z +HPLjava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture; +HPLjava/util/concurrent/CompletableFuture;->casStack(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)Z +HPLjava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V +HPLjava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object; +HPLjava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z +HPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V +HPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->toArray()[Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentHashMap$CounterCell;->(J)V +HPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->spliterator()Ljava/util/Spliterator; +HPLjava/util/concurrent/ConcurrentHashMap$KeySpliterator;->([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V +HPLjava/util/concurrent/ConcurrentHashMap$KeySpliterator;->characteristics()I +HPLjava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HPLjava/util/concurrent/ConcurrentHashMap$ReservationNode;->()V +HPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V +HPLjava/util/concurrent/ConcurrentHashMap;->mappingCount()J +HPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z +HPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->casPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z +HPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->add(Ljava/lang/Object;)Z +HPLjava/util/concurrent/ConcurrentLinkedDeque;->casTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z +HPLjava/util/concurrent/ConcurrentLinkedDeque;->isEmpty()Z +HPLjava/util/concurrent/ConcurrentLinkedDeque;->nextTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->offerLast(Ljava/lang/Object;)Z +HPLjava/util/concurrent/ConcurrentLinkedDeque;->peekFirst()Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->pollFirst()Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->prevTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->removeFirst()Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->screenNullResult(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedPredecessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedSuccessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->succ(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; +HPLjava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V +HPLjava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V +HPLjava/util/concurrent/ConcurrentSkipListMap;->()V +HPLjava/util/concurrent/ConcurrentSkipListMap;->clear()V +HPLjava/util/concurrent/ConcurrentSkipListMap;->containsKey(Ljava/lang/Object;)Z +HPLjava/util/concurrent/ConcurrentSkipListMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/concurrent/ConcurrentSkipListSet;->()V +HPLjava/util/concurrent/ConcurrentSkipListSet;->add(Ljava/lang/Object;)Z +HPLjava/util/concurrent/ConcurrentSkipListSet;->contains(Ljava/lang/Object;)Z +HPLjava/util/concurrent/CopyOnWriteArrayList;->addAllAbsent(Ljava/util/Collection;)I +HPLjava/util/concurrent/CopyOnWriteArrayList;->removeAll(Ljava/util/Collection;)Z +HPLjava/util/concurrent/CopyOnWriteArrayList;->toArray()[Ljava/lang/Object; +HPLjava/util/concurrent/CopyOnWriteArraySet;->addAll(Ljava/util/Collection;)Z +HPLjava/util/concurrent/CopyOnWriteArraySet;->toArray()[Ljava/lang/Object; +HPLjava/util/concurrent/ForkJoinPool$ManagedBlocker;->block()Z +HPLjava/util/concurrent/ForkJoinPool$ManagedBlocker;->isReleasable()Z +HPLjava/util/concurrent/ForkJoinPool;->managedBlock(Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V +HPLjava/util/concurrent/ForkJoinTask;->()V +HPLjava/util/concurrent/Future;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->add(Ljava/lang/Object;)Z +HPLjava/util/concurrent/LinkedBlockingDeque;->addLast(Ljava/lang/Object;)V +HPLjava/util/concurrent/LinkedBlockingDeque;->clear()V +HPLjava/util/concurrent/LinkedBlockingDeque;->peek()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->peekFirst()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->poll()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->pop()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->remove()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->removeFirst()Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HPLjava/util/concurrent/LinkedBlockingQueue$Itr;->(Ljava/util/concurrent/LinkedBlockingQueue;)V +HPLjava/util/concurrent/LinkedBlockingQueue$Itr;->hasNext()Z +HPLjava/util/concurrent/LinkedBlockingQueue;->iterator()Ljava/util/Iterator; +HPLjava/util/concurrent/LinkedBlockingQueue;->remainingCapacity()I +HPLjava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V +HPLjava/util/concurrent/Phaser;->(I)V +HPLjava/util/concurrent/Phaser;->(Ljava/util/concurrent/Phaser;I)V +HPLjava/util/concurrent/Phaser;->arriveAndDeregister()I +HPLjava/util/concurrent/Phaser;->doArrive(I)I +HPLjava/util/concurrent/Phaser;->doRegister(I)I +HPLjava/util/concurrent/Phaser;->onAdvance(II)Z +HPLjava/util/concurrent/Phaser;->register()I +HPLjava/util/concurrent/Phaser;->releaseWaiters(I)V +HPLjava/util/concurrent/PriorityBlockingQueue;->contains(Ljava/lang/Object;)Z +HPLjava/util/concurrent/PriorityBlockingQueue;->indexOf(Ljava/lang/Object;)I +HPLjava/util/concurrent/PriorityBlockingQueue;->peek()Ljava/lang/Object; +HPLjava/util/concurrent/PriorityBlockingQueue;->poll()Ljava/lang/Object; +HPLjava/util/concurrent/PriorityBlockingQueue;->tryGrow([Ljava/lang/Object;I)V +HPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->grow()V +HPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I +HPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->remove(Ljava/lang/Object;)Z +HPLjava/util/concurrent/ScheduledThreadPoolExecutor;->scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z +HPLjava/util/concurrent/SynchronousQueue;->offer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z +HPLjava/util/concurrent/ThreadLocalRandom;->getProbe()I +HPLjava/util/concurrent/ThreadPoolExecutor;->awaitTermination(JLjava/util/concurrent/TimeUnit;)Z +HPLjava/util/concurrent/ThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z +HPLjava/util/concurrent/TimeUnit$1;->toSeconds(J)J +HPLjava/util/concurrent/TimeUnit$2;->toMillis(J)J +HPLjava/util/concurrent/TimeUnit$3;->toHours(J)J +HPLjava/util/concurrent/TimeUnit$4;->convert(JLjava/util/concurrent/TimeUnit;)J +HPLjava/util/concurrent/TimeUnit$5;->convert(JLjava/util/concurrent/TimeUnit;)J +HPLjava/util/concurrent/TimeUnit$5;->toMicros(J)J +HPLjava/util/concurrent/TimeUnit$6;->toNanos(J)J +HPLjava/util/concurrent/TimeUnit$7;->toMinutes(J)J +HPLjava/util/concurrent/TimeUnit$7;->toNanos(J)J +HPLjava/util/concurrent/TimeoutException;->(Ljava/lang/String;)V +HPLjava/util/concurrent/atomic/AtomicLong;->decrementAndGet()J +HPLjava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V +HPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HPLjava/util/concurrent/locks/ReentrantLock$Sync;->getHoldCount()I +HPLjava/util/concurrent/locks/ReentrantLock;->getHoldCount()I +HPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z +HPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I +HPLjava/util/function/LongConsumer;->accept(J)V +HPLjava/util/jar/JarVerifier$VerifierStream;->read()I +HPLjava/util/jar/JarVerifier;->update(ILsun/security/util/ManifestEntryVerifier;)V +HPLjava/util/logging/Filter;->isLoggable(Ljava/util/logging/LogRecord;)Z +HPLjava/util/logging/Logger;->getAnonymousLogger()Ljava/util/logging/Logger; +HPLjava/util/logging/Logger;->getAnonymousLogger(Ljava/lang/String;)Ljava/util/logging/Logger; +HPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V +HPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HPLjava/util/regex/Matcher$OffsetBasedMatchResult;->(Ljava/lang/String;[I)V +HPLjava/util/regex/Matcher$OffsetBasedMatchResult;->end(I)I +HPLjava/util/regex/Matcher$OffsetBasedMatchResult;->group(I)Ljava/lang/String; +HPLjava/util/regex/Matcher$OffsetBasedMatchResult;->start(I)I +HPLjava/util/regex/Matcher;->find(I)Z +HPLjava/util/regex/Matcher;->group()Ljava/lang/String; +HPLjava/util/regex/Matcher;->hitEnd()Z +HPLjava/util/regex/Matcher;->region(II)Ljava/util/regex/Matcher; +HPLjava/util/regex/Matcher;->regionEnd()I +HPLjava/util/regex/Matcher;->regionStart()I +HPLjava/util/regex/Matcher;->requireEnd()Z +HPLjava/util/regex/Matcher;->toMatchResult()Ljava/util/regex/MatchResult; +HPLjava/util/regex/Matcher;->useAnchoringBounds(Z)Ljava/util/regex/Matcher; +HPLjava/util/regex/Matcher;->useTransparentBounds(Z)Ljava/util/regex/Matcher; +HPLjava/util/stream/-$Lambda$Lw2Alu2LEcypd4PXrfG0QIAAKKo;->$m$3(I)Ljava/lang/Object; +HPLjava/util/stream/-$Lambda$Lw2Alu2LEcypd4PXrfG0QIAAKKo;->(B)V +HPLjava/util/stream/-$Lambda$Lw2Alu2LEcypd4PXrfG0QIAAKKo;->apply(I)Ljava/lang/Object; +HPLjava/util/stream/-$Lambda$PVrT5KMXWM352lNCiKPCMdt2xL8;->$m$18()Ljava/lang/Object; +HPLjava/util/stream/-$Lambda$QgGTJrv63_zzBbeGjswm_UMqEbo$3;->$m$0(Ljava/lang/Object;)I +HPLjava/util/stream/-$Lambda$QgGTJrv63_zzBbeGjswm_UMqEbo$3;->()V +HPLjava/util/stream/-$Lambda$QgGTJrv63_zzBbeGjswm_UMqEbo$3;->applyAsInt(Ljava/lang/Object;)I +HPLjava/util/stream/-$Lambda$RYrQKhHyGc-mMxiERR98xxRAWkA;->(B)V +HPLjava/util/stream/-$Lambda$Y1nWb7oHyESmWtTUR-RlHqf5IfU;->$m$5(Ljava/lang/Object;Ljava/lang/Object;)V +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$3;->$m$2(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$3;->(BLjava/lang/Object;)V +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$3;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$5;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)V +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$5;->(BLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0$5;->accept(Ljava/lang/Object;Ljava/lang/Object;)V +HPLjava/util/stream/-$Lambda$s-muF8cTY6kf2DcLR-Ys2NMV7bA;->(BLjava/lang/Object;)V +HPLjava/util/stream/-$Lambda$zzPjrAVaRLtDBFYnKhJM_a3VmMk;->(B)V +HPLjava/util/stream/AbstractPipeline;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; +HPLjava/util/stream/AbstractPipeline;->evaluateToArrayNode(Ljava/util/function/IntFunction;)Ljava/util/stream/Node; +HPLjava/util/stream/AbstractPipeline;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J +HPLjava/util/stream/AbstractSpinedBuffer;->()V +HPLjava/util/stream/AbstractSpinedBuffer;->chunkSize(I)I +HPLjava/util/stream/AbstractSpinedBuffer;->count()J +HPLjava/util/stream/Collectors;->-java_util_stream_Collectors-mthref-3()Ljava/util/Set; +HPLjava/util/stream/Collectors;->-java_util_stream_Collectors-mthref-4(Ljava/util/Set;Ljava/lang/Object;)V +HPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)Ljava/util/stream/Collector; +HPLjava/util/stream/Collectors;->lambda$-java_util_stream_Collectors_40369(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/Map;Ljava/lang/Object;)V +HPLjava/util/stream/Collectors;->lambda$-java_util_stream_Collectors_40537(Ljava/util/function/Supplier;Ljava/lang/Object;)Ljava/lang/Object; +HPLjava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator; +HPLjava/util/stream/Collectors;->toSet()Ljava/util/stream/Collector; +HPLjava/util/stream/DistinctOps$1$2;->(Ljava/util/stream/DistinctOps$1;Ljava/util/stream/Sink;)V +HPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/DistinctOps$1$2;->begin(J)V +HPLjava/util/stream/DistinctOps$1$2;->end()V +HPLjava/util/stream/DistinctOps$1;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V +HPLjava/util/stream/DistinctOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HPLjava/util/stream/DistinctOps;->makeRef(Ljava/util/stream/AbstractPipeline;)Ljava/util/stream/ReferencePipeline; +HPLjava/util/stream/ForEachOps$ForEachOp$OfRef;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/IntPipeline$4$1;->(Ljava/util/stream/IntPipeline$4;Ljava/util/stream/Sink;Ljava/util/function/IntFunction;)V +HPLjava/util/stream/IntPipeline$4$1;->accept(I)V +HPLjava/util/stream/IntPipeline$4;->(Ljava/util/stream/IntPipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/IntFunction;)V +HPLjava/util/stream/IntPipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HPLjava/util/stream/IntPipeline$Head;->(Ljava/util/Spliterator;IZ)V +HPLjava/util/stream/IntPipeline$StatelessOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V +HPLjava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z +HPLjava/util/stream/IntPipeline;->-java_util_stream_IntPipeline-mthref-1(I)Ljava/lang/Integer; +HPLjava/util/stream/IntPipeline;->(Ljava/util/Spliterator;IZ)V +HPLjava/util/stream/IntPipeline;->(Ljava/util/stream/AbstractPipeline;I)V +HPLjava/util/stream/IntPipeline;->boxed()Ljava/util/stream/Stream; +HPLjava/util/stream/IntPipeline;->distinct()Ljava/util/stream/IntStream; +HPLjava/util/stream/IntPipeline;->lambda$-java_util_stream_IntPipeline_14709(Ljava/lang/Integer;)I +HPLjava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; +HPLjava/util/stream/IntPipeline;->mapToObj(Ljava/util/function/IntFunction;)Ljava/util/stream/Stream; +HPLjava/util/stream/IntPipeline;->toArray()[I +HPLjava/util/stream/IntStream;->of([I)Ljava/util/stream/IntStream; +HPLjava/util/stream/LongPipeline$StatelessOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V +HPLjava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z +HPLjava/util/stream/LongPipeline;->(Ljava/util/stream/AbstractPipeline;I)V +HPLjava/util/stream/LongPipeline;->reduce(JLjava/util/function/LongBinaryOperator;)J +HPLjava/util/stream/LongPipeline;->sum()J +HPLjava/util/stream/Node$Builder$OfInt;->build()Ljava/util/stream/Node$OfInt; +HPLjava/util/stream/Node;->getChildCount()I +HPLjava/util/stream/Nodes$EmptyNode$OfDouble;->()V +HPLjava/util/stream/Nodes$EmptyNode$OfInt;->()V +HPLjava/util/stream/Nodes$EmptyNode$OfLong;->()V +HPLjava/util/stream/Nodes$EmptyNode$OfRef;->()V +HPLjava/util/stream/Nodes$EmptyNode$OfRef;->(Ljava/util/stream/Nodes$EmptyNode$OfRef;)V +HPLjava/util/stream/Nodes$EmptyNode;->()V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->()V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->accept(I)V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->asPrimitiveArray()Ljava/lang/Object; +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->asPrimitiveArray()[I +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->begin(J)V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->build()Ljava/util/stream/Node$OfInt; +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->build()Ljava/util/stream/Node; +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->copyInto(Ljava/lang/Object;I)V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->copyInto([II)V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->end()V +HPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->newArray(I)Ljava/lang/Object; +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->()V +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->begin(J)V +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->build()Ljava/util/stream/Node; +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->copyInto([Ljava/lang/Object;I)V +HPLjava/util/stream/Nodes$SpinedNodeBuilder;->end()V +HPLjava/util/stream/Nodes;->builder()Ljava/util/stream/Node$Builder; +HPLjava/util/stream/Nodes;->builder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; +HPLjava/util/stream/Nodes;->flatten(Ljava/util/stream/Node;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; +HPLjava/util/stream/Nodes;->flattenInt(Ljava/util/stream/Node$OfInt;)Ljava/util/stream/Node$OfInt; +HPLjava/util/stream/Nodes;->intBuilder()Ljava/util/stream/Node$Builder$OfInt; +HPLjava/util/stream/Nodes;->intBuilder(J)Ljava/util/stream/Node$Builder$OfInt; +HPLjava/util/stream/ReduceOps$8;->(Ljava/util/stream/StreamShape;JLjava/util/function/LongBinaryOperator;)V +HPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$8ReducingSink; +HPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink; +HPLjava/util/stream/ReduceOps$8ReducingSink;->(JLjava/util/function/LongBinaryOperator;)V +HPLjava/util/stream/ReduceOps$8ReducingSink;->begin(J)V +HPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Long; +HPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Object; +HPLjava/util/stream/ReduceOps;->makeLong(JLjava/util/function/LongBinaryOperator;)Ljava/util/stream/TerminalOp; +HPLjava/util/stream/ReferencePipeline$2$1;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/ReferencePipeline$4$1;->(Ljava/util/stream/ReferencePipeline$4;Ljava/util/stream/Sink;Ljava/util/function/ToIntFunction;)V +HPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/ReferencePipeline$4;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToIntFunction;)V +HPLjava/util/stream/ReferencePipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HPLjava/util/stream/ReferencePipeline$5$1;->(Ljava/util/stream/ReferencePipeline$5;Ljava/util/stream/Sink;Ljava/util/function/ToLongFunction;)V +HPLjava/util/stream/ReferencePipeline$5;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToLongFunction;)V +HPLjava/util/stream/ReferencePipeline$5;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HPLjava/util/stream/ReferencePipeline;->count()J +HPLjava/util/stream/ReferencePipeline;->distinct()Ljava/util/stream/Stream; +HPLjava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; +HPLjava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream; +HPLjava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream; +HPLjava/util/stream/ReferencePipeline;->toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; +HPLjava/util/stream/Sink$ChainedInt;->(Ljava/util/stream/Sink;)V +HPLjava/util/stream/Sink$ChainedInt;->begin(J)V +HPLjava/util/stream/Sink$ChainedInt;->end()V +HPLjava/util/stream/Sink$OfInt;->accept(I)V +HPLjava/util/stream/Sink$OfLong;->accept(J)V +HPLjava/util/stream/SpinedBuffer$OfInt;->()V +HPLjava/util/stream/SpinedBuffer$OfInt;->accept(I)V +HPLjava/util/stream/SpinedBuffer$OfInt;->arrayLength(Ljava/lang/Object;)I +HPLjava/util/stream/SpinedBuffer$OfInt;->arrayLength([I)I +HPLjava/util/stream/SpinedBuffer$OfInt;->newArray(I)[I +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->()V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->arrayForEach(Ljava/lang/Object;IILjava/lang/Object;)V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->arrayLength(Ljava/lang/Object;)I +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object; +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->capacity()J +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->clear()V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->copyInto(Ljava/lang/Object;I)V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->count()J +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->ensureCapacity(J)V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/util/function/Consumer;)V +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->iterator()Ljava/util/Iterator; +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->newArrayArray(I)[Ljava/lang/Object; +HPLjava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V +HPLjava/util/stream/SpinedBuffer;->()V +HPLjava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V +HPLjava/util/stream/SpinedBuffer;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; +HPLjava/util/stream/SpinedBuffer;->capacity()J +HPLjava/util/stream/SpinedBuffer;->clear()V +HPLjava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V +HPLjava/util/stream/SpinedBuffer;->count()J +HPLjava/util/stream/SpinedBuffer;->ensureCapacity(J)V +HPLjava/util/stream/SpinedBuffer;->increaseCapacity()V +HPLjava/util/stream/SpinedBuffer;->inflateSpine()V +HPLjava/util/stream/StreamSupport;->intStream(Ljava/util/Spliterator$OfInt;Z)Ljava/util/stream/IntStream; +HPLjava/util/stream/TerminalOp;->getOpFlags()I +HPLjava/util/zip/Adler32;->update(I)V +HPLjava/util/zip/Adler32;->update([B)V +HPLjava/util/zip/Deflater;->()V +HPLjava/util/zip/Deflater;->deflate([B)I +HPLjava/util/zip/Deflater;->setInput([B)V +HPLjava/util/zip/Deflater;->setLevel(I)V +HPLjava/util/zip/DeflaterOutputStream;->flush()V +HPLjava/util/zip/Inflater;->getTotalOut()I +HPLjava/util/zip/InflaterInputStream;->available()I +HPLjava/util/zip/ZipFile$ZipFileInputStream;->read()I +HPLjava/util/zip/ZipFile;->(Ljava/io/File;)V +HPLjavax/crypto/Cipher;->doFinal()[B +HPLjavax/crypto/Cipher;->doFinal([BII)[B +HPLjavax/crypto/Cipher;->doFinal([BII[BI)I +HPLjavax/crypto/Cipher;->getAlgorithm()Ljava/lang/String; +HPLjavax/crypto/Cipher;->getBlockSize()I +HPLjavax/crypto/Cipher;->getIV()[B +HPLjavax/crypto/Cipher;->update([B)[B +HPLjavax/crypto/Cipher;->update([BII[BI)I +HPLjavax/crypto/Mac;->reset()V +HPLjavax/crypto/Mac;->update(B)V +HPLjavax/security/auth/x500/X500Principal;->(Ljava/lang/String;)V +HPLjavax/security/auth/x500/X500Principal;->(Ljava/lang/String;Ljava/util/Map;)V +HPLlibcore/icu/DateIntervalFormat;->formatDateRange(JJILjava/lang/String;)Ljava/lang/String; +HPLlibcore/icu/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String; +HPLlibcore/icu/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat; +HPLlibcore/icu/DateIntervalFormat;->isMidnight(Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar; +HPLlibcore/icu/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->fallInSameYear(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone; +HPLlibcore/icu/DateUtilsBridge;->isThisYear(Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->onTheHour(Landroid/icu/util/Calendar;)Z +HPLlibcore/icu/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String; +HPLlibcore/icu/ICU;->getDisplayCountry(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String; +HPLlibcore/icu/ICU;->getDisplayLanguage(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String; +HPLlibcore/icu/RelativeDateTimeFormatter$FormatterCache;->()V +HPLlibcore/icu/RelativeDateTimeFormatter;->getFormatter(Landroid/icu/util/ULocale;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;)Landroid/icu/text/RelativeDateTimeFormatter; +HPLlibcore/icu/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; +HPLlibcore/icu/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Ljava/util/Locale;Ljava/util/TimeZone;JJJI)Ljava/lang/String; +HPLlibcore/icu/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Ljava/util/Locale;Ljava/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; +HPLlibcore/io/BlockGuardOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor; +HPLlibcore/io/BlockGuardOs;->access(Ljava/lang/String;I)Z +HPLlibcore/io/BlockGuardOs;->fchmod(Ljava/io/FileDescriptor;I)V +HPLlibcore/io/BlockGuardOs;->fchown(Ljava/io/FileDescriptor;II)V +HPLlibcore/io/BlockGuardOs;->fsync(Ljava/io/FileDescriptor;)V +HPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V +HPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B +HPLlibcore/io/BlockGuardOs;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V +HPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String; +HPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V +HPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V +HPLlibcore/io/ForwardingOs;->gai_strerror(I)Ljava/lang/String; +HPLlibcore/io/ForwardingOs;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; +HPLlibcore/io/ForwardingOs;->mlock(JJ)V +HPLlibcore/io/ForwardingOs;->munlock(JJ)V +HPLlibcore/io/ForwardingOs;->pipe2(I)[Ljava/io/FileDescriptor; +HPLlibcore/io/ForwardingOs;->setsockoptByte(Ljava/io/FileDescriptor;III)V +HPLlibcore/io/ForwardingOs;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V +HPLlibcore/io/ForwardingOs;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V +HPLlibcore/io/ForwardingOs;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V +HPLlibcore/io/ForwardingOs;->strerror(I)Ljava/lang/String; +HPLlibcore/io/IoBridge;->booleanFromInt(I)Z +HPLlibcore/io/IoBridge;->getSocketOption(Ljava/io/FileDescriptor;I)Ljava/lang/Object; +HPLlibcore/io/IoBridge;->getSocketOptionErrno(Ljava/io/FileDescriptor;I)Ljava/lang/Object; +HPLlibcore/io/Linux;->maybeUpdateBufferPosition(Ljava/nio/ByteBuffer;II)V +HPLlibcore/io/Linux;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I +HPLlibcore/io/Linux;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLlibcore/io/Memory;->peekLong(JZ)J +HPLlibcore/io/Memory;->pokeInt([BIILjava/nio/ByteOrder;)V +HPLlibcore/io/Memory;->pokeLong(JJZ)V +HPLlibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy;->isCertificateTransparencyVerificationRequired(Ljava/lang/String;)Z +HPLlibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy;->isCleartextTrafficPermitted()Z +HPLlibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z +HPLlibcore/net/NetworkSecurityPolicy;->isCertificateTransparencyVerificationRequired(Ljava/lang/String;)Z +HPLlibcore/net/NetworkSecurityPolicy;->isCleartextTrafficPermitted()Z +HPLlibcore/net/NetworkSecurityPolicy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z +HPLlibcore/reflect/GenericArrayTypeImpl;->equals(Ljava/lang/Object;)Z +HPLlibcore/reflect/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/reflect/Type; +HPLlibcore/reflect/ParameterizedTypeImpl;->hashCode()I +HPLlibcore/util/HexEncoding;->decode([CZ)[B +HPLlibcore/util/HexEncoding;->encode([BII)[C +HPLlibcore/util/HexEncoding;->toDigit([CI)I +HPLlibcore/util/ZoneInfo$OffsetInterval;->(IIII)V +HPLlibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z +HPLlibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval; +HPLlibcore/util/ZoneInfo$OffsetInterval;->getIsDst()I +HPLlibcore/util/ZoneInfo$OffsetInterval;->getTotalOffsetSeconds()I +HPLlibcore/util/ZoneInfo$WallTime;->copyFieldsToCalendar()V +HPLlibcore/util/ZoneInfo$WallTime;->doWallTimeSearch(Llibcore/util/ZoneInfo;IIZ)Ljava/lang/Integer; +HPLlibcore/util/ZoneInfo$WallTime;->mktime(Llibcore/util/ZoneInfo;)I +HPLlibcore/util/ZoneInfo;->-get4(Llibcore/util/ZoneInfo;)[B +HPLlibcore/util/ZoneInfo;->-wrap1(II)I +HPLlibcore/util/ZoneInfo;->checkedSubtract(II)I +HPLlibcore/util/ZoneInfo;->equals(Ljava/lang/Object;)Z +HPLlibcore/util/ZoneInfo;->hashCode()I +HPLlibcore/util/ZoneInfo;->setRawOffset(I)V +HPLorg/apache/commons/logging/impl/Jdk14Logger;->info(Ljava/lang/Object;)V +HPLorg/apache/commons/logging/impl/Jdk14Logger;->isDebugEnabled()Z +HPLorg/apache/commons/logging/impl/Jdk14Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V +HPLorg/apache/harmony/xml/ExpatAttributes;->getType(I)Ljava/lang/String; +HPLorg/apache/harmony/xml/ExpatAttributes;->getURI(I)Ljava/lang/String; +HPLorg/apache/harmony/xml/ExpatAttributes;->getValue(Ljava/lang/String;)Ljava/lang/String; +HPLorg/apache/harmony/xml/ExpatParser;->endCdata()V +HPLorg/apache/harmony/xml/ExpatParser;->endDtd()V +HPLorg/apache/harmony/xml/ExpatParser;->startCdata()V +HPLorg/apache/harmony/xml/ExpatParser;->startDtd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/FormattedHeader;->getBuffer()Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/FormattedHeader;->getValuePos()I +HPLorg/apache/http/HeaderElement;->getName()Ljava/lang/String; +HPLorg/apache/http/HeaderElement;->getParameter(I)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/HeaderElement;->getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/HeaderElement;->getParameterCount()I +HPLorg/apache/http/HeaderElement;->getParameters()[Lorg/apache/http/NameValuePair; +HPLorg/apache/http/HeaderElement;->getValue()Ljava/lang/String; +HPLorg/apache/http/HeaderElementIterator;->hasNext()Z +HPLorg/apache/http/HeaderElementIterator;->nextElement()Lorg/apache/http/HeaderElement; +HPLorg/apache/http/HeaderIterator;->hasNext()Z +HPLorg/apache/http/HeaderIterator;->nextHeader()Lorg/apache/http/Header; +HPLorg/apache/http/HttpConnection;->close()V +HPLorg/apache/http/HttpConnection;->getSocketTimeout()I +HPLorg/apache/http/HttpConnection;->isOpen()Z +HPLorg/apache/http/HttpConnection;->setSocketTimeout(I)V +HPLorg/apache/http/HttpConnection;->shutdown()V +HPLorg/apache/http/HttpConnectionMetrics;->getMetric(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/HttpConnectionMetrics;->getReceivedBytesCount()J +HPLorg/apache/http/HttpConnectionMetrics;->getRequestCount()J +HPLorg/apache/http/HttpConnectionMetrics;->getResponseCount()J +HPLorg/apache/http/HttpConnectionMetrics;->getSentBytesCount()J +HPLorg/apache/http/HttpConnectionMetrics;->reset()V +HPLorg/apache/http/HttpEntityEnclosingRequest;->expectContinue()Z +HPLorg/apache/http/HttpEntityEnclosingRequest;->getEntity()Lorg/apache/http/HttpEntity; +HPLorg/apache/http/HttpEntityEnclosingRequest;->setEntity(Lorg/apache/http/HttpEntity;)V +HPLorg/apache/http/HttpHost;->(Ljava/lang/String;ILjava/lang/String;)V +HPLorg/apache/http/HttpHost;->equals(Ljava/lang/Object;)Z +HPLorg/apache/http/HttpHost;->getHostName()Ljava/lang/String; +HPLorg/apache/http/HttpHost;->getPort()I +HPLorg/apache/http/HttpHost;->getSchemeName()Ljava/lang/String; +HPLorg/apache/http/HttpHost;->hashCode()I +HPLorg/apache/http/HttpHost;->toHostString()Ljava/lang/String; +HPLorg/apache/http/HttpHost;->toURI()Ljava/lang/String; +HPLorg/apache/http/HttpRequest;->getRequestLine()Lorg/apache/http/RequestLine; +HPLorg/apache/http/HttpVersion;->(II)V +HPLorg/apache/http/HttpVersion;->forVersion(II)Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/NameValuePair;->getName()Ljava/lang/String; +HPLorg/apache/http/NameValuePair;->getValue()Ljava/lang/String; +HPLorg/apache/http/ProtocolVersion;->compareToVersion(Lorg/apache/http/ProtocolVersion;)I +HPLorg/apache/http/ProtocolVersion;->getMajor()I +HPLorg/apache/http/ProtocolVersion;->getMinor()I +HPLorg/apache/http/ProtocolVersion;->getProtocol()Ljava/lang/String; +HPLorg/apache/http/ProtocolVersion;->isComparable(Lorg/apache/http/ProtocolVersion;)Z +HPLorg/apache/http/ProtocolVersion;->lessEquals(Lorg/apache/http/ProtocolVersion;)Z +HPLorg/apache/http/RequestLine;->getMethod()Ljava/lang/String; +HPLorg/apache/http/RequestLine;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/RequestLine;->getUri()Ljava/lang/String; +HPLorg/apache/http/auth/AuthSchemeRegistry;->()V +HPLorg/apache/http/auth/AuthSchemeRegistry;->register(Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;)V +HPLorg/apache/http/auth/AuthState;->()V +HPLorg/apache/http/auth/AuthState;->getAuthScheme()Lorg/apache/http/auth/AuthScheme; +HPLorg/apache/http/auth/AuthState;->setAuthScope(Lorg/apache/http/auth/AuthScope;)V +HPLorg/apache/http/client/AuthenticationHandler;->selectScheme(Ljava/util/Map;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme; +HPLorg/apache/http/client/CredentialsProvider;->clear()V +HPLorg/apache/http/client/CredentialsProvider;->getCredentials(Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials; +HPLorg/apache/http/client/CredentialsProvider;->setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V +HPLorg/apache/http/client/HttpRequestRetryHandler;->retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)Z +HPLorg/apache/http/client/RedirectHandler;->getLocationURI(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/net/URI; +HPLorg/apache/http/client/RedirectHandler;->isRedirectRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z +HPLorg/apache/http/client/RequestDirector;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/client/UserTokenHandler;->getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object; +HPLorg/apache/http/client/entity/UrlEncodedFormEntity;->(Ljava/util/List;)V +HPLorg/apache/http/client/methods/AbortableHttpRequest;->abort()V +HPLorg/apache/http/client/methods/AbortableHttpRequest;->setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V +HPLorg/apache/http/client/methods/AbortableHttpRequest;->setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V +HPLorg/apache/http/client/methods/HttpEntityEnclosingRequestBase;->()V +HPLorg/apache/http/client/methods/HttpEntityEnclosingRequestBase;->getEntity()Lorg/apache/http/HttpEntity; +HPLorg/apache/http/client/methods/HttpEntityEnclosingRequestBase;->setEntity(Lorg/apache/http/HttpEntity;)V +HPLorg/apache/http/client/methods/HttpGet;->(Ljava/lang/String;)V +HPLorg/apache/http/client/methods/HttpGet;->(Ljava/net/URI;)V +HPLorg/apache/http/client/methods/HttpGet;->getMethod()Ljava/lang/String; +HPLorg/apache/http/client/methods/HttpPost;->(Ljava/lang/String;)V +HPLorg/apache/http/client/methods/HttpPost;->(Ljava/net/URI;)V +HPLorg/apache/http/client/methods/HttpPost;->getMethod()Ljava/lang/String; +HPLorg/apache/http/client/methods/HttpPut;->(Ljava/lang/String;)V +HPLorg/apache/http/client/methods/HttpPut;->getMethod()Ljava/lang/String; +HPLorg/apache/http/client/methods/HttpRequestBase;->()V +HPLorg/apache/http/client/methods/HttpRequestBase;->getMethod()Ljava/lang/String; +HPLorg/apache/http/client/methods/HttpRequestBase;->getURI()Ljava/net/URI; +HPLorg/apache/http/client/methods/HttpRequestBase;->setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V +HPLorg/apache/http/client/methods/HttpRequestBase;->setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V +HPLorg/apache/http/client/methods/HttpRequestBase;->setURI(Ljava/net/URI;)V +HPLorg/apache/http/client/methods/HttpUriRequest;->abort()V +HPLorg/apache/http/client/methods/HttpUriRequest;->getMethod()Ljava/lang/String; +HPLorg/apache/http/client/methods/HttpUriRequest;->getURI()Ljava/net/URI; +HPLorg/apache/http/client/methods/HttpUriRequest;->isAborted()Z +HPLorg/apache/http/client/params/HttpClientParams;->getCookiePolicy(Lorg/apache/http/params/HttpParams;)Ljava/lang/String; +HPLorg/apache/http/client/params/HttpClientParams;->isAuthenticating(Lorg/apache/http/params/HttpParams;)Z +HPLorg/apache/http/client/params/HttpClientParams;->isRedirecting(Lorg/apache/http/params/HttpParams;)Z +HPLorg/apache/http/client/protocol/RequestAddCookies;->()V +HPLorg/apache/http/client/protocol/RequestAddCookies;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/client/protocol/RequestDefaultHeaders;->()V +HPLorg/apache/http/client/protocol/RequestDefaultHeaders;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/client/protocol/RequestProxyAuthentication;->()V +HPLorg/apache/http/client/protocol/RequestProxyAuthentication;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/client/protocol/RequestTargetAuthentication;->()V +HPLorg/apache/http/client/protocol/RequestTargetAuthentication;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/client/protocol/ResponseProcessCookies;->()V +HPLorg/apache/http/client/protocol/ResponseProcessCookies;->process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/client/protocol/ResponseProcessCookies;->processCookies(Lorg/apache/http/HeaderIterator;Lorg/apache/http/cookie/CookieSpec;Lorg/apache/http/cookie/CookieOrigin;Lorg/apache/http/client/CookieStore;)V +HPLorg/apache/http/client/utils/URIUtils;->createURI(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI; +HPLorg/apache/http/client/utils/URIUtils;->rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;)Ljava/net/URI; +HPLorg/apache/http/client/utils/URIUtils;->rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;Z)Ljava/net/URI; +HPLorg/apache/http/client/utils/URLEncodedUtils;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLorg/apache/http/client/utils/URLEncodedUtils;->format(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String; +HPLorg/apache/http/conn/BasicManagedEntity;->(Lorg/apache/http/HttpEntity;Lorg/apache/http/conn/ManagedClientConnection;Z)V +HPLorg/apache/http/conn/BasicManagedEntity;->consumeContent()V +HPLorg/apache/http/conn/BasicManagedEntity;->eofDetected(Ljava/io/InputStream;)Z +HPLorg/apache/http/conn/BasicManagedEntity;->getContent()Ljava/io/InputStream; +HPLorg/apache/http/conn/BasicManagedEntity;->releaseManagedConnection()V +HPLorg/apache/http/conn/BasicManagedEntity;->streamClosed(Ljava/io/InputStream;)Z +HPLorg/apache/http/conn/ClientConnectionRequest;->abortRequest()V +HPLorg/apache/http/conn/ClientConnectionRequest;->getConnection(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/conn/ManagedClientConnection; +HPLorg/apache/http/conn/ConnectionKeepAliveStrategy;->getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J +HPLorg/apache/http/conn/EofSensorInputStream;->(Ljava/io/InputStream;Lorg/apache/http/conn/EofSensorWatcher;)V +HPLorg/apache/http/conn/EofSensorInputStream;->available()I +HPLorg/apache/http/conn/EofSensorInputStream;->checkClose()V +HPLorg/apache/http/conn/EofSensorInputStream;->checkEOF(I)V +HPLorg/apache/http/conn/EofSensorInputStream;->close()V +HPLorg/apache/http/conn/EofSensorInputStream;->isReadAllowed()Z +HPLorg/apache/http/conn/EofSensorInputStream;->read()I +HPLorg/apache/http/conn/EofSensorInputStream;->read([B)I +HPLorg/apache/http/conn/EofSensorInputStream;->read([BII)I +HPLorg/apache/http/conn/EofSensorWatcher;->eofDetected(Ljava/io/InputStream;)Z +HPLorg/apache/http/conn/EofSensorWatcher;->streamAbort(Ljava/io/InputStream;)Z +HPLorg/apache/http/conn/EofSensorWatcher;->streamClosed(Ljava/io/InputStream;)Z +HPLorg/apache/http/conn/ManagedClientConnection;->getRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/conn/ManagedClientConnection;->getSSLSession()Ljavax/net/ssl/SSLSession; +HPLorg/apache/http/conn/ManagedClientConnection;->getState()Ljava/lang/Object; +HPLorg/apache/http/conn/ManagedClientConnection;->isMarkedReusable()Z +HPLorg/apache/http/conn/ManagedClientConnection;->isSecure()Z +HPLorg/apache/http/conn/ManagedClientConnection;->layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/ManagedClientConnection;->markReusable()V +HPLorg/apache/http/conn/ManagedClientConnection;->open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/ManagedClientConnection;->setIdleDuration(JLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/conn/ManagedClientConnection;->setState(Ljava/lang/Object;)V +HPLorg/apache/http/conn/ManagedClientConnection;->tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/ManagedClientConnection;->tunnelTarget(ZLorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/ManagedClientConnection;->unmarkReusable()V +HPLorg/apache/http/conn/OperatedClientConnection;->getSocket()Ljava/net/Socket; +HPLorg/apache/http/conn/OperatedClientConnection;->getTargetHost()Lorg/apache/http/HttpHost; +HPLorg/apache/http/conn/OperatedClientConnection;->isSecure()Z +HPLorg/apache/http/conn/OperatedClientConnection;->openCompleted(ZLorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/OperatedClientConnection;->opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V +HPLorg/apache/http/conn/OperatedClientConnection;->update(Ljava/net/Socket;Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/conn/params/ConnManagerParams$1;->getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I +HPLorg/apache/http/conn/params/ConnManagerParams;->getTimeout(Lorg/apache/http/params/HttpParams;)J +HPLorg/apache/http/conn/params/ConnManagerParams;->setTimeout(Lorg/apache/http/params/HttpParams;J)V +HPLorg/apache/http/conn/params/ConnPerRouteBean;->getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I +HPLorg/apache/http/conn/params/ConnRouteParams;->getForcedRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/conn/params/ConnRouteParams;->getLocalAddress(Lorg/apache/http/params/HttpParams;)Ljava/net/InetAddress; +HPLorg/apache/http/conn/routing/BasicRouteDirector;->()V +HPLorg/apache/http/conn/routing/BasicRouteDirector;->directStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I +HPLorg/apache/http/conn/routing/BasicRouteDirector;->nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I +HPLorg/apache/http/conn/routing/HttpRoute;->(Ljava/net/InetAddress;Lorg/apache/http/HttpHost;[Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V +HPLorg/apache/http/conn/routing/HttpRoute;->(Lorg/apache/http/HttpHost;)V +HPLorg/apache/http/conn/routing/HttpRoute;->(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Z)V +HPLorg/apache/http/conn/routing/HttpRoute;->(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;[Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V +HPLorg/apache/http/conn/routing/HttpRoute;->equals(Ljava/lang/Object;)Z +HPLorg/apache/http/conn/routing/HttpRoute;->getHopCount()I +HPLorg/apache/http/conn/routing/HttpRoute;->getLocalAddress()Ljava/net/InetAddress; +HPLorg/apache/http/conn/routing/HttpRoute;->getProxyHost()Lorg/apache/http/HttpHost; +HPLorg/apache/http/conn/routing/HttpRoute;->getTargetHost()Lorg/apache/http/HttpHost; +HPLorg/apache/http/conn/routing/HttpRoute;->hashCode()I +HPLorg/apache/http/conn/routing/HttpRoute;->isSecure()Z +HPLorg/apache/http/conn/routing/HttpRoute;->toChain([Lorg/apache/http/HttpHost;)[Lorg/apache/http/HttpHost; +HPLorg/apache/http/conn/routing/HttpRouteDirector;->nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I +HPLorg/apache/http/conn/routing/HttpRoutePlanner;->determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/conn/routing/RouteInfo$LayerType;->(Ljava/lang/String;I)V +HPLorg/apache/http/conn/routing/RouteInfo$TunnelType;->(Ljava/lang/String;I)V +HPLorg/apache/http/conn/routing/RouteTracker;->(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;)V +HPLorg/apache/http/conn/routing/RouteTracker;->(Lorg/apache/http/conn/routing/HttpRoute;)V +HPLorg/apache/http/conn/routing/RouteTracker;->connectTarget(Z)V +HPLorg/apache/http/conn/routing/RouteTracker;->toRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/conn/scheme/PlainSocketFactory;->connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket; +HPLorg/apache/http/conn/scheme/PlainSocketFactory;->createSocket()Ljava/net/Socket; +HPLorg/apache/http/conn/scheme/Scheme;->isLayered()Z +HPLorg/apache/http/conn/scheme/Scheme;->resolvePort(I)I +HPLorg/apache/http/conn/scheme/SchemeRegistry;->get(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme; +HPLorg/apache/http/conn/scheme/SchemeRegistry;->getScheme(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme; +HPLorg/apache/http/conn/ssl/AbstractVerifier;->acceptableCountryWildcard(Ljava/lang/String;)Z +HPLorg/apache/http/conn/ssl/AbstractVerifier;->getCNs(Ljava/security/cert/X509Certificate;)[Ljava/lang/String; +HPLorg/apache/http/conn/ssl/AbstractVerifier;->getDNSSubjectAlts(Ljava/security/cert/X509Certificate;)[Ljava/lang/String; +HPLorg/apache/http/conn/ssl/AbstractVerifier;->isIPv4Address(Ljava/lang/String;)Z +HPLorg/apache/http/conn/ssl/AbstractVerifier;->verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V +HPLorg/apache/http/conn/ssl/AbstractVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V +HPLorg/apache/http/conn/ssl/AbstractVerifier;->verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Z)V +HPLorg/apache/http/conn/ssl/AndroidDistinguishedNameParser;->(Ljavax/security/auth/x500/X500Principal;)V +HPLorg/apache/http/conn/ssl/AndroidDistinguishedNameParser;->escapedAV()Ljava/lang/String; +HPLorg/apache/http/conn/ssl/AndroidDistinguishedNameParser;->getAllMostSpecificFirst(Ljava/lang/String;)Ljava/util/List; +HPLorg/apache/http/conn/ssl/AndroidDistinguishedNameParser;->nextAT()Ljava/lang/String; +HPLorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier;->verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V +HPLorg/apache/http/conn/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; +HPLorg/apache/http/conn/ssl/SSLSocketFactory;->isSecure(Ljava/net/Socket;)Z +HPLorg/apache/http/cookie/ClientCookie;->containsAttribute(Ljava/lang/String;)Z +HPLorg/apache/http/cookie/ClientCookie;->getAttribute(Ljava/lang/String;)Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getComment()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getCommentURL()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getDomain()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getExpiryDate()Ljava/util/Date; +HPLorg/apache/http/cookie/Cookie;->getName()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getPath()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getPorts()[I +HPLorg/apache/http/cookie/Cookie;->getValue()Ljava/lang/String; +HPLorg/apache/http/cookie/Cookie;->getVersion()I +HPLorg/apache/http/cookie/Cookie;->isExpired(Ljava/util/Date;)Z +HPLorg/apache/http/cookie/Cookie;->isPersistent()Z +HPLorg/apache/http/cookie/Cookie;->isSecure()Z +HPLorg/apache/http/cookie/CookieOrigin;->(Ljava/lang/String;ILjava/lang/String;Z)V +HPLorg/apache/http/cookie/CookieOrigin;->getHost()Ljava/lang/String; +HPLorg/apache/http/cookie/CookieOrigin;->getPath()Ljava/lang/String; +HPLorg/apache/http/cookie/CookieOrigin;->isSecure()Z +HPLorg/apache/http/cookie/CookiePathComparator;->()V +HPLorg/apache/http/cookie/CookieSpecRegistry;->()V +HPLorg/apache/http/cookie/CookieSpecRegistry;->getCookieSpec(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec; +HPLorg/apache/http/cookie/CookieSpecRegistry;->register(Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;)V +HPLorg/apache/http/cookie/SetCookie;->setComment(Ljava/lang/String;)V +HPLorg/apache/http/cookie/SetCookie;->setDomain(Ljava/lang/String;)V +HPLorg/apache/http/cookie/SetCookie;->setExpiryDate(Ljava/util/Date;)V +HPLorg/apache/http/cookie/SetCookie;->setPath(Ljava/lang/String;)V +HPLorg/apache/http/cookie/SetCookie;->setSecure(Z)V +HPLorg/apache/http/cookie/SetCookie;->setValue(Ljava/lang/String;)V +HPLorg/apache/http/cookie/SetCookie;->setVersion(I)V +HPLorg/apache/http/entity/AbstractHttpEntity;->getContentEncoding()Lorg/apache/http/Header; +HPLorg/apache/http/entity/AbstractHttpEntity;->getContentType()Lorg/apache/http/Header; +HPLorg/apache/http/entity/AbstractHttpEntity;->isChunked()Z +HPLorg/apache/http/entity/AbstractHttpEntity;->setChunked(Z)V +HPLorg/apache/http/entity/BasicHttpEntity;->isStreaming()Z +HPLorg/apache/http/entity/ByteArrayEntity;->([B)V +HPLorg/apache/http/entity/ByteArrayEntity;->getContentLength()J +HPLorg/apache/http/entity/ByteArrayEntity;->isStreaming()Z +HPLorg/apache/http/entity/ByteArrayEntity;->writeTo(Ljava/io/OutputStream;)V +HPLorg/apache/http/entity/HttpEntityWrapper;->(Lorg/apache/http/HttpEntity;)V +HPLorg/apache/http/entity/HttpEntityWrapper;->getContentEncoding()Lorg/apache/http/Header; +HPLorg/apache/http/entity/HttpEntityWrapper;->getContentLength()J +HPLorg/apache/http/entity/InputStreamEntity;->(Ljava/io/InputStream;J)V +HPLorg/apache/http/entity/InputStreamEntity;->consumeContent()V +HPLorg/apache/http/entity/InputStreamEntity;->getContent()Ljava/io/InputStream; +HPLorg/apache/http/entity/InputStreamEntity;->getContentLength()J +HPLorg/apache/http/entity/StringEntity;->(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/entity/StringEntity;->getContentLength()J +HPLorg/apache/http/entity/StringEntity;->isStreaming()Z +HPLorg/apache/http/entity/StringEntity;->writeTo(Ljava/io/OutputStream;)V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->()V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->assertOpen()V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer; +HPLorg/apache/http/impl/AbstractHttpClientConnection;->createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer; +HPLorg/apache/http/impl/AbstractHttpClientConnection;->createHttpResponseFactory()Lorg/apache/http/HttpResponseFactory; +HPLorg/apache/http/impl/AbstractHttpClientConnection;->createRequestWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter; +HPLorg/apache/http/impl/AbstractHttpClientConnection;->doFlush()V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->flush()V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->receiveResponseEntity(Lorg/apache/http/HttpResponse;)V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->receiveResponseHeader()Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/AbstractHttpClientConnection;->sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V +HPLorg/apache/http/impl/AbstractHttpClientConnection;->sendRequestHeader(Lorg/apache/http/HttpRequest;)V +HPLorg/apache/http/impl/DefaultConnectionReuseStrategy;->keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z +HPLorg/apache/http/impl/DefaultHttpResponseFactory;->determineLocale(Lorg/apache/http/protocol/HttpContext;)Ljava/util/Locale; +HPLorg/apache/http/impl/DefaultHttpResponseFactory;->newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/HttpConnectionMetricsImpl;->(Lorg/apache/http/io/HttpTransportMetrics;Lorg/apache/http/io/HttpTransportMetrics;)V +HPLorg/apache/http/impl/HttpConnectionMetricsImpl;->incrementRequestCount()V +HPLorg/apache/http/impl/HttpConnectionMetricsImpl;->incrementResponseCount()V +HPLorg/apache/http/impl/SocketHttpClientConnection;->()V +HPLorg/apache/http/impl/SocketHttpClientConnection;->assertNotOpen()V +HPLorg/apache/http/impl/SocketHttpClientConnection;->assertOpen()V +HPLorg/apache/http/impl/SocketHttpClientConnection;->bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/SocketHttpClientConnection;->createSessionInputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer; +HPLorg/apache/http/impl/SocketHttpClientConnection;->createSessionOutputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer; +HPLorg/apache/http/impl/SocketHttpClientConnection;->getRemotePort()I +HPLorg/apache/http/impl/SocketHttpClientConnection;->isOpen()Z +HPLorg/apache/http/impl/SocketHttpClientConnection;->setSocketTimeout(I)V +HPLorg/apache/http/impl/auth/BasicSchemeFactory;->()V +HPLorg/apache/http/impl/auth/DigestSchemeFactory;->()V +HPLorg/apache/http/impl/client/AbstractAuthenticationHandler;->()V +HPLorg/apache/http/impl/client/AbstractHttpClient;->createClientRequestDirector(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/client/RequestDirector; +HPLorg/apache/http/impl/client/AbstractHttpClient;->determineParams(Lorg/apache/http/HttpRequest;)Lorg/apache/http/params/HttpParams; +HPLorg/apache/http/impl/client/AbstractHttpClient;->determineTarget(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpHost; +HPLorg/apache/http/impl/client/AbstractHttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/client/AbstractHttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/client/AbstractHttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getAuthSchemes()Lorg/apache/http/auth/AuthSchemeRegistry; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getCookieSpecs()Lorg/apache/http/cookie/CookieSpecRegistry; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getCredentialsProvider()Lorg/apache/http/client/CredentialsProvider; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getParams()Lorg/apache/http/params/HttpParams; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getRedirectHandler()Lorg/apache/http/client/RedirectHandler; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HPLorg/apache/http/impl/client/AbstractHttpClient;->getUserTokenHandler()Lorg/apache/http/client/UserTokenHandler; +HPLorg/apache/http/impl/client/BasicCookieStore;->addCookie(Lorg/apache/http/cookie/Cookie;)V +HPLorg/apache/http/impl/client/BasicCookieStore;->clear()V +HPLorg/apache/http/impl/client/BasicCookieStore;->getCookies()Ljava/util/List; +HPLorg/apache/http/impl/client/BasicCredentialsProvider;->()V +HPLorg/apache/http/impl/client/ClientParamsStack;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/client/ClientParamsStack;->getParameter(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/impl/client/DefaultConnectionKeepAliveStrategy;->()V +HPLorg/apache/http/impl/client/DefaultConnectionKeepAliveStrategy;->getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J +HPLorg/apache/http/impl/client/DefaultHttpClient;->createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createRedirectHandler()Lorg/apache/http/client/RedirectHandler; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HPLorg/apache/http/impl/client/DefaultHttpClient;->createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler; +HPLorg/apache/http/impl/client/DefaultHttpRequestRetryHandler;->()V +HPLorg/apache/http/impl/client/DefaultHttpRequestRetryHandler;->(IZ)V +HPLorg/apache/http/impl/client/DefaultProxyAuthenticationHandler;->()V +HPLorg/apache/http/impl/client/DefaultProxyAuthenticationHandler;->isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z +HPLorg/apache/http/impl/client/DefaultRedirectHandler;->()V +HPLorg/apache/http/impl/client/DefaultRequestDirector;->(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/client/DefaultRequestDirector;->determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/client/DefaultRequestDirector;->establishRoute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/impl/client/DefaultRequestDirector;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/client/DefaultRequestDirector;->handleResponse(Lorg/apache/http/impl/client/RoutedRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/impl/client/RoutedRequest; +HPLorg/apache/http/impl/client/DefaultRequestDirector;->rewriteRequestURI(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V +HPLorg/apache/http/impl/client/DefaultRequestDirector;->wrapRequest(Lorg/apache/http/HttpRequest;)Lorg/apache/http/impl/client/RequestWrapper; +HPLorg/apache/http/impl/client/DefaultTargetAuthenticationHandler;->()V +HPLorg/apache/http/impl/client/DefaultTargetAuthenticationHandler;->isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z +HPLorg/apache/http/impl/client/DefaultUserTokenHandler;->()V +HPLorg/apache/http/impl/client/DefaultUserTokenHandler;->getAuthPrincipal(Lorg/apache/http/auth/AuthState;)Ljava/security/Principal; +HPLorg/apache/http/impl/client/DefaultUserTokenHandler;->getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object; +HPLorg/apache/http/impl/client/EntityEnclosingRequestWrapper;->(Lorg/apache/http/HttpEntityEnclosingRequest;)V +HPLorg/apache/http/impl/client/EntityEnclosingRequestWrapper;->expectContinue()Z +HPLorg/apache/http/impl/client/EntityEnclosingRequestWrapper;->getEntity()Lorg/apache/http/HttpEntity; +HPLorg/apache/http/impl/client/RequestWrapper;->(Lorg/apache/http/HttpRequest;)V +HPLorg/apache/http/impl/client/RequestWrapper;->getExecCount()I +HPLorg/apache/http/impl/client/RequestWrapper;->getMethod()Ljava/lang/String; +HPLorg/apache/http/impl/client/RequestWrapper;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/impl/client/RequestWrapper;->getRequestLine()Lorg/apache/http/RequestLine; +HPLorg/apache/http/impl/client/RequestWrapper;->getURI()Ljava/net/URI; +HPLorg/apache/http/impl/client/RequestWrapper;->incrementExecCount()V +HPLorg/apache/http/impl/client/RequestWrapper;->resetHeaders()V +HPLorg/apache/http/impl/client/RequestWrapper;->setURI(Ljava/net/URI;)V +HPLorg/apache/http/impl/client/RoutedRequest;->(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V +HPLorg/apache/http/impl/client/RoutedRequest;->getRequest()Lorg/apache/http/impl/client/RequestWrapper; +HPLorg/apache/http/impl/client/RoutedRequest;->getRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/conn/OperatedClientConnection;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->assertNotAborted()V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->assertValid(Lorg/apache/http/conn/OperatedClientConnection;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->detach()V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->flush()V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->getManager()Lorg/apache/http/conn/ClientConnectionManager; +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->getRemotePort()I +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->getSSLSession()Ljavax/net/ssl/SSLSession; +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->getWrappedConnection()Lorg/apache/http/conn/OperatedClientConnection; +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->isMarkedReusable()Z +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->isOpen()Z +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->isSecure()Z +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->markReusable()V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->receiveResponseEntity(Lorg/apache/http/HttpResponse;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->receiveResponseHeader()Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->releaseConnection()V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->sendRequestHeader(Lorg/apache/http/HttpRequest;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->setIdleDuration(JLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->setSocketTimeout(I)V +HPLorg/apache/http/impl/conn/AbstractClientConnAdapter;->unmarkReusable()V +HPLorg/apache/http/impl/conn/AbstractPoolEntry;->(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;)V +HPLorg/apache/http/impl/conn/AbstractPoolEntry;->getState()Ljava/lang/Object; +HPLorg/apache/http/impl/conn/AbstractPoolEntry;->open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/AbstractPoolEntry;->setState(Ljava/lang/Object;)V +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->assertAttached()V +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->detach()V +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->getRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/AbstractPooledConnAdapter;->setState(Ljava/lang/Object;)V +HPLorg/apache/http/impl/conn/DefaultClientConnection;->()V +HPLorg/apache/http/impl/conn/DefaultClientConnection;->createResponseParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser; +HPLorg/apache/http/impl/conn/DefaultClientConnection;->createSessionInputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer; +HPLorg/apache/http/impl/conn/DefaultClientConnection;->createSessionOutputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer; +HPLorg/apache/http/impl/conn/DefaultClientConnection;->getSocket()Ljava/net/Socket; +HPLorg/apache/http/impl/conn/DefaultClientConnection;->isSecure()Z +HPLorg/apache/http/impl/conn/DefaultClientConnection;->openCompleted(ZLorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/DefaultClientConnection;->opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V +HPLorg/apache/http/impl/conn/DefaultClientConnection;->receiveResponseHeader()Lorg/apache/http/HttpResponse; +HPLorg/apache/http/impl/conn/DefaultClientConnection;->sendRequestHeader(Lorg/apache/http/HttpRequest;)V +HPLorg/apache/http/impl/conn/DefaultClientConnectionOperator;->createConnection()Lorg/apache/http/conn/OperatedClientConnection; +HPLorg/apache/http/impl/conn/DefaultClientConnectionOperator;->openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/DefaultClientConnectionOperator;->prepareSocket(Ljava/net/Socket;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/DefaultResponseParser;->(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/conn/DefaultResponseParser;->parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage; +HPLorg/apache/http/impl/conn/IdleConnectionHandler$TimeValues;->-get1(Lorg/apache/http/impl/conn/IdleConnectionHandler$TimeValues;)J +HPLorg/apache/http/impl/conn/IdleConnectionHandler$TimeValues;->(JJLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/impl/conn/IdleConnectionHandler;->add(Lorg/apache/http/HttpConnection;JLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/impl/conn/IdleConnectionHandler;->remove(Lorg/apache/http/HttpConnection;)Z +HPLorg/apache/http/impl/conn/ProxySelectorRoutePlanner;->-getjava-net-Proxy$TypeSwitchesValues()[I +HPLorg/apache/http/impl/conn/ProxySelectorRoutePlanner;->(Lorg/apache/http/conn/scheme/SchemeRegistry;Ljava/net/ProxySelector;)V +HPLorg/apache/http/impl/conn/ProxySelectorRoutePlanner;->chooseProxy(Ljava/util/List;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Proxy; +HPLorg/apache/http/impl/conn/ProxySelectorRoutePlanner;->determineProxy(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpHost; +HPLorg/apache/http/impl/conn/ProxySelectorRoutePlanner;->determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/ref/ReferenceQueue;)V +HPLorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getConnection()Lorg/apache/http/conn/OperatedClientConnection; +HPLorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getPlannedRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/conn/tsccm/BasicPoolEntry;->getWeakRef()Lorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef; +HPLorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef;->(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;Ljava/lang/ref/ReferenceQueue;)V +HPLorg/apache/http/impl/conn/tsccm/BasicPooledConnAdapter;->(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V +HPLorg/apache/http/impl/conn/tsccm/BasicPooledConnAdapter;->detach()V +HPLorg/apache/http/impl/conn/tsccm/BasicPooledConnAdapter;->getManager()Lorg/apache/http/conn/ClientConnectionManager; +HPLorg/apache/http/impl/conn/tsccm/BasicPooledConnAdapter;->getPoolEntry()Lorg/apache/http/impl/conn/AbstractPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute$1;->(Lorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;Lorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)V +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute$1;->getPoolEntry(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->createEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Lorg/apache/http/conn/ClientConnectionOperator;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->getEntryBlocking(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Lorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->getFreeEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->getRoutePool(Lorg/apache/http/conn/routing/HttpRoute;Z)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->newRouteSpecificPool(Lorg/apache/http/conn/routing/HttpRoute;)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool; +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->notifyWaitingThread(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V +HPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest; +HPLorg/apache/http/impl/conn/tsccm/PoolEntryRequest;->abortRequest()V +HPLorg/apache/http/impl/conn/tsccm/PoolEntryRequest;->getPoolEntry(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->(Lorg/apache/http/conn/routing/HttpRoute;I)V +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->allocEntry(Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry; +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->createdEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->getCapacity()I +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->getRoute()Lorg/apache/http/conn/routing/HttpRoute; +HPLorg/apache/http/impl/conn/tsccm/RouteSpecificPool;->hasThread()Z +HPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager$1;->(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;Lorg/apache/http/conn/routing/HttpRoute;)V +HPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager$1;->getConnection(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/conn/ManagedClientConnection; +HPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->-get0(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;)Lorg/apache/commons/logging/Log; +HPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V +HPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest; +HPLorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;->()V +HPLorg/apache/http/impl/cookie/AbstractCookieAttributeHandler;->()V +HPLorg/apache/http/impl/cookie/AbstractCookieAttributeHandler;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/AbstractCookieAttributeHandler;->validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V +HPLorg/apache/http/impl/cookie/AbstractCookieSpec;->()V +HPLorg/apache/http/impl/cookie/AbstractCookieSpec;->findAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler; +HPLorg/apache/http/impl/cookie/AbstractCookieSpec;->getAttribHandlers()Ljava/util/Collection; +HPLorg/apache/http/impl/cookie/AbstractCookieSpec;->registerAttribHandler(Ljava/lang/String;Lorg/apache/http/cookie/CookieAttributeHandler;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->getDomain()Ljava/lang/String; +HPLorg/apache/http/impl/cookie/BasicClientCookie;->getName()Ljava/lang/String; +HPLorg/apache/http/impl/cookie/BasicClientCookie;->getPath()Ljava/lang/String; +HPLorg/apache/http/impl/cookie/BasicClientCookie;->getValue()Ljava/lang/String; +HPLorg/apache/http/impl/cookie/BasicClientCookie;->getVersion()I +HPLorg/apache/http/impl/cookie/BasicClientCookie;->isExpired(Ljava/util/Date;)Z +HPLorg/apache/http/impl/cookie/BasicClientCookie;->isSecure()Z +HPLorg/apache/http/impl/cookie/BasicClientCookie;->setAttribute(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->setDomain(Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->setExpiryDate(Ljava/util/Date;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->setPath(Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicClientCookie;->setSecure(Z)V +HPLorg/apache/http/impl/cookie/BasicCommentHandler;->()V +HPLorg/apache/http/impl/cookie/BasicDomainHandler;->()V +HPLorg/apache/http/impl/cookie/BasicDomainHandler;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/BasicDomainHandler;->validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V +HPLorg/apache/http/impl/cookie/BasicExpiresHandler;->([Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicExpiresHandler;->parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicMaxAgeHandler;->()V +HPLorg/apache/http/impl/cookie/BasicPathHandler;->()V +HPLorg/apache/http/impl/cookie/BasicPathHandler;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/BasicPathHandler;->parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BasicPathHandler;->validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V +HPLorg/apache/http/impl/cookie/BasicSecureHandler;->()V +HPLorg/apache/http/impl/cookie/BasicSecureHandler;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/BasicSecureHandler;->parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BestMatchSpec;->([Ljava/lang/String;Z)V +HPLorg/apache/http/impl/cookie/BestMatchSpec;->formatCookies(Ljava/util/List;)Ljava/util/List; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->getCompat()Lorg/apache/http/impl/cookie/BrowserCompatSpec; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->getNetscape()Lorg/apache/http/impl/cookie/NetscapeDraftSpec; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->getStrict()Lorg/apache/http/impl/cookie/RFC2965Spec; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->getVersion()I +HPLorg/apache/http/impl/cookie/BestMatchSpec;->getVersionHeader()Lorg/apache/http/Header; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/BestMatchSpec;->parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List; +HPLorg/apache/http/impl/cookie/BestMatchSpec;->validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V +HPLorg/apache/http/impl/cookie/BestMatchSpecFactory;->()V +HPLorg/apache/http/impl/cookie/BestMatchSpecFactory;->newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec; +HPLorg/apache/http/impl/cookie/BrowserCompatSpec;->([Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/BrowserCompatSpec;->formatCookies(Ljava/util/List;)Ljava/util/List; +HPLorg/apache/http/impl/cookie/BrowserCompatSpecFactory;->()V +HPLorg/apache/http/impl/cookie/CookieSpecBase;->()V +HPLorg/apache/http/impl/cookie/CookieSpecBase;->getDefaultDomain(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String; +HPLorg/apache/http/impl/cookie/CookieSpecBase;->getDefaultPath(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String; +HPLorg/apache/http/impl/cookie/CookieSpecBase;->match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z +HPLorg/apache/http/impl/cookie/CookieSpecBase;->parse([Lorg/apache/http/HeaderElement;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List; +HPLorg/apache/http/impl/cookie/CookieSpecBase;->validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V +HPLorg/apache/http/impl/cookie/DateUtils;->parseDate(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/Date; +HPLorg/apache/http/impl/cookie/NetscapeDomainHandler;->()V +HPLorg/apache/http/impl/cookie/NetscapeDraftHeaderParser;->()V +HPLorg/apache/http/impl/cookie/NetscapeDraftHeaderParser;->parseHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement; +HPLorg/apache/http/impl/cookie/NetscapeDraftSpec;->([Ljava/lang/String;)V +HPLorg/apache/http/impl/cookie/NetscapeDraftSpec;->parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List; +HPLorg/apache/http/impl/cookie/NetscapeDraftSpecFactory;->()V +HPLorg/apache/http/impl/cookie/RFC2109DomainHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2109Spec;->([Ljava/lang/String;Z)V +HPLorg/apache/http/impl/cookie/RFC2109SpecFactory;->()V +HPLorg/apache/http/impl/cookie/RFC2109VersionHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2965DiscardAttributeHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2965DomainAttributeHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2965PortAttributeHandler;->()V +HPLorg/apache/http/impl/cookie/RFC2965Spec;->([Ljava/lang/String;Z)V +HPLorg/apache/http/impl/cookie/RFC2965Spec;->getVersion()I +HPLorg/apache/http/impl/cookie/RFC2965Spec;->getVersionHeader()Lorg/apache/http/Header; +HPLorg/apache/http/impl/cookie/RFC2965SpecFactory;->()V +HPLorg/apache/http/impl/cookie/RFC2965VersionAttributeHandler;->()V +HPLorg/apache/http/impl/entity/EntityDeserializer;->(Lorg/apache/http/entity/ContentLengthStrategy;)V +HPLorg/apache/http/impl/entity/EntityDeserializer;->deserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/HttpEntity; +HPLorg/apache/http/impl/entity/EntityDeserializer;->doDeserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/entity/BasicHttpEntity; +HPLorg/apache/http/impl/entity/EntitySerializer;->(Lorg/apache/http/entity/ContentLengthStrategy;)V +HPLorg/apache/http/impl/entity/EntitySerializer;->doSerialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;)Ljava/io/OutputStream; +HPLorg/apache/http/impl/entity/EntitySerializer;->serialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;Lorg/apache/http/HttpEntity;)V +HPLorg/apache/http/impl/entity/LaxContentLengthStrategy;->()V +HPLorg/apache/http/impl/entity/LaxContentLengthStrategy;->determineLength(Lorg/apache/http/HttpMessage;)J +HPLorg/apache/http/impl/entity/StrictContentLengthStrategy;->()V +HPLorg/apache/http/impl/entity/StrictContentLengthStrategy;->determineLength(Lorg/apache/http/HttpMessage;)J +HPLorg/apache/http/impl/io/AbstractMessageParser;->(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/AbstractMessageParser;->parse()Lorg/apache/http/HttpMessage; +HPLorg/apache/http/impl/io/AbstractMessageParser;->parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage; +HPLorg/apache/http/impl/io/AbstractMessageParser;->parseHeaders(Lorg/apache/http/io/SessionInputBuffer;IILorg/apache/http/message/LineParser;)[Lorg/apache/http/Header; +HPLorg/apache/http/impl/io/AbstractMessageWriter;->(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/AbstractMessageWriter;->write(Lorg/apache/http/HttpMessage;)V +HPLorg/apache/http/impl/io/AbstractMessageWriter;->writeHeadLine(Lorg/apache/http/HttpMessage;)V +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->()V +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->fillBuffer()I +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->getMetrics()Lorg/apache/http/io/HttpTransportMetrics; +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->hasBufferedData()Z +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->init(Ljava/io/InputStream;ILorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->lineFromReadBuffer(Lorg/apache/http/util/CharArrayBuffer;I)I +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->locateLF()I +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->read()I +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->read([BII)I +HPLorg/apache/http/impl/io/AbstractSessionInputBuffer;->readLine(Lorg/apache/http/util/CharArrayBuffer;)I +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->()V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->flush()V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->flushBuffer()V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->getMetrics()Lorg/apache/http/io/HttpTransportMetrics; +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->init(Ljava/io/OutputStream;ILorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->write([B)V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->write([BII)V +HPLorg/apache/http/impl/io/AbstractSessionOutputBuffer;->writeLine(Lorg/apache/http/util/CharArrayBuffer;)V +HPLorg/apache/http/impl/io/ChunkedInputStream;->(Lorg/apache/http/io/SessionInputBuffer;)V +HPLorg/apache/http/impl/io/ChunkedInputStream;->close()V +HPLorg/apache/http/impl/io/ChunkedInputStream;->exhaustInputStream(Ljava/io/InputStream;)V +HPLorg/apache/http/impl/io/ChunkedInputStream;->getChunkSize()I +HPLorg/apache/http/impl/io/ChunkedInputStream;->nextChunk()V +HPLorg/apache/http/impl/io/ChunkedInputStream;->parseTrailerHeaders()V +HPLorg/apache/http/impl/io/ChunkedInputStream;->read()I +HPLorg/apache/http/impl/io/ChunkedInputStream;->read([B)I +HPLorg/apache/http/impl/io/ChunkedInputStream;->read([BII)I +HPLorg/apache/http/impl/io/ContentLengthInputStream;->(Lorg/apache/http/io/SessionInputBuffer;J)V +HPLorg/apache/http/impl/io/ContentLengthInputStream;->close()V +HPLorg/apache/http/impl/io/ContentLengthInputStream;->read([B)I +HPLorg/apache/http/impl/io/ContentLengthInputStream;->read([BII)I +HPLorg/apache/http/impl/io/ContentLengthOutputStream;->(Lorg/apache/http/io/SessionOutputBuffer;J)V +HPLorg/apache/http/impl/io/ContentLengthOutputStream;->close()V +HPLorg/apache/http/impl/io/ContentLengthOutputStream;->flush()V +HPLorg/apache/http/impl/io/ContentLengthOutputStream;->write([B)V +HPLorg/apache/http/impl/io/ContentLengthOutputStream;->write([BII)V +HPLorg/apache/http/impl/io/HttpRequestWriter;->(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/HttpRequestWriter;->writeHeadLine(Lorg/apache/http/HttpMessage;)V +HPLorg/apache/http/impl/io/HttpTransportMetricsImpl;->()V +HPLorg/apache/http/impl/io/HttpTransportMetricsImpl;->incrementBytesTransferred(J)V +HPLorg/apache/http/impl/io/SocketInputBuffer;->(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/impl/io/SocketOutputBuffer;->(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/io/HttpMessageParser;->parse()Lorg/apache/http/HttpMessage; +HPLorg/apache/http/io/HttpMessageWriter;->write(Lorg/apache/http/HttpMessage;)V +HPLorg/apache/http/io/HttpTransportMetrics;->getBytesTransferred()J +HPLorg/apache/http/io/HttpTransportMetrics;->reset()V +HPLorg/apache/http/io/SessionInputBuffer;->getMetrics()Lorg/apache/http/io/HttpTransportMetrics; +HPLorg/apache/http/io/SessionInputBuffer;->isDataAvailable(I)Z +HPLorg/apache/http/io/SessionInputBuffer;->read()I +HPLorg/apache/http/io/SessionInputBuffer;->read([B)I +HPLorg/apache/http/io/SessionInputBuffer;->read([BII)I +HPLorg/apache/http/io/SessionInputBuffer;->readLine()Ljava/lang/String; +HPLorg/apache/http/io/SessionInputBuffer;->readLine(Lorg/apache/http/util/CharArrayBuffer;)I +HPLorg/apache/http/io/SessionOutputBuffer;->flush()V +HPLorg/apache/http/io/SessionOutputBuffer;->getMetrics()Lorg/apache/http/io/HttpTransportMetrics; +HPLorg/apache/http/io/SessionOutputBuffer;->write(I)V +HPLorg/apache/http/io/SessionOutputBuffer;->write([B)V +HPLorg/apache/http/io/SessionOutputBuffer;->write([BII)V +HPLorg/apache/http/io/SessionOutputBuffer;->writeLine(Ljava/lang/String;)V +HPLorg/apache/http/io/SessionOutputBuffer;->writeLine(Lorg/apache/http/util/CharArrayBuffer;)V +HPLorg/apache/http/message/AbstractHttpMessage;->addHeader(Lorg/apache/http/Header;)V +HPLorg/apache/http/message/AbstractHttpMessage;->containsHeader(Ljava/lang/String;)Z +HPLorg/apache/http/message/AbstractHttpMessage;->getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HPLorg/apache/http/message/AbstractHttpMessage;->getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header; +HPLorg/apache/http/message/AbstractHttpMessage;->getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HPLorg/apache/http/message/AbstractHttpMessage;->getParams()Lorg/apache/http/params/HttpParams; +HPLorg/apache/http/message/AbstractHttpMessage;->headerIterator()Lorg/apache/http/HeaderIterator; +HPLorg/apache/http/message/AbstractHttpMessage;->headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator; +HPLorg/apache/http/message/AbstractHttpMessage;->setHeader(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/message/AbstractHttpMessage;->setHeaders([Lorg/apache/http/Header;)V +HPLorg/apache/http/message/AbstractHttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V +HPLorg/apache/http/message/BasicHeader;->getElements()[Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BasicHeaderElement;->(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)V +HPLorg/apache/http/message/BasicHeaderElement;->getName()Ljava/lang/String; +HPLorg/apache/http/message/BasicHeaderElement;->getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHeaderElement;->getParameters()[Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHeaderElement;->getValue()Ljava/lang/String; +HPLorg/apache/http/message/BasicHeaderElementIterator;->(Lorg/apache/http/HeaderIterator;)V +HPLorg/apache/http/message/BasicHeaderElementIterator;->(Lorg/apache/http/HeaderIterator;Lorg/apache/http/message/HeaderValueParser;)V +HPLorg/apache/http/message/BasicHeaderElementIterator;->hasNext()Z +HPLorg/apache/http/message/BasicHeaderElementIterator;->parseNextElement()V +HPLorg/apache/http/message/BasicHeaderValueParser;->()V +HPLorg/apache/http/message/BasicHeaderValueParser;->createHeaderElement(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BasicHeaderValueParser;->createNameValuePair(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHeaderValueParser;->isOneOf(C[C)Z +HPLorg/apache/http/message/BasicHeaderValueParser;->parseElements(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BasicHeaderValueParser;->parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BasicHeaderValueParser;->parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BasicHeaderValueParser;->parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHeaderValueParser;->parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;[C)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHeaderValueParser;->parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/BasicHttpResponse;->setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V +HPLorg/apache/http/message/BasicLineFormatter;->()V +HPLorg/apache/http/message/BasicLineFormatter;->appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/BasicLineFormatter;->doFormatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)V +HPLorg/apache/http/message/BasicLineFormatter;->doFormatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)V +HPLorg/apache/http/message/BasicLineFormatter;->estimateProtocolVersionLen(Lorg/apache/http/ProtocolVersion;)I +HPLorg/apache/http/message/BasicLineFormatter;->formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/BasicLineFormatter;->formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/BasicLineFormatter;->initBuffer(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/BasicLineParser;->()V +HPLorg/apache/http/message/BasicLineParser;->(Lorg/apache/http/ProtocolVersion;)V +HPLorg/apache/http/message/BasicLineParser;->createProtocolVersion(II)Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/message/BasicLineParser;->createStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)Lorg/apache/http/StatusLine; +HPLorg/apache/http/message/BasicLineParser;->hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z +HPLorg/apache/http/message/BasicLineParser;->parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header; +HPLorg/apache/http/message/BasicLineParser;->parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/message/BasicLineParser;->parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine; +HPLorg/apache/http/message/BasicLineParser;->skipWhitespace(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)V +HPLorg/apache/http/message/BasicListHeaderIterator;->(Ljava/util/List;Ljava/lang/String;)V +HPLorg/apache/http/message/BasicListHeaderIterator;->filterHeader(I)Z +HPLorg/apache/http/message/BasicListHeaderIterator;->findNext(I)I +HPLorg/apache/http/message/BasicListHeaderIterator;->hasNext()Z +HPLorg/apache/http/message/BasicListHeaderIterator;->next()Ljava/lang/Object; +HPLorg/apache/http/message/BasicListHeaderIterator;->nextHeader()Lorg/apache/http/Header; +HPLorg/apache/http/message/BasicNameValuePair;->(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/apache/http/message/BasicNameValuePair;->getName()Ljava/lang/String; +HPLorg/apache/http/message/BasicNameValuePair;->getValue()Ljava/lang/String; +HPLorg/apache/http/message/BasicRequestLine;->(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V +HPLorg/apache/http/message/BasicRequestLine;->getMethod()Ljava/lang/String; +HPLorg/apache/http/message/BasicRequestLine;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/message/BasicRequestLine;->getUri()Ljava/lang/String; +HPLorg/apache/http/message/BasicStatusLine;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/message/BufferedHeader;->(Lorg/apache/http/util/CharArrayBuffer;)V +HPLorg/apache/http/message/BufferedHeader;->getBuffer()Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/BufferedHeader;->getElements()[Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/BufferedHeader;->getName()Ljava/lang/String; +HPLorg/apache/http/message/BufferedHeader;->getValue()Ljava/lang/String; +HPLorg/apache/http/message/BufferedHeader;->getValuePos()I +HPLorg/apache/http/message/HeaderGroup;->clear()V +HPLorg/apache/http/message/HeaderGroup;->containsHeader(Ljava/lang/String;)Z +HPLorg/apache/http/message/HeaderGroup;->getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HPLorg/apache/http/message/HeaderGroup;->getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header; +HPLorg/apache/http/message/HeaderGroup;->getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HPLorg/apache/http/message/HeaderGroup;->iterator()Lorg/apache/http/HeaderIterator; +HPLorg/apache/http/message/HeaderGroup;->iterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator; +HPLorg/apache/http/message/HeaderGroup;->setHeaders([Lorg/apache/http/Header;)V +HPLorg/apache/http/message/HeaderGroup;->updateHeader(Lorg/apache/http/Header;)V +HPLorg/apache/http/message/HeaderValueParser;->parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/HeaderValueParser;->parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement; +HPLorg/apache/http/message/HeaderValueParser;->parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/HeaderValueParser;->parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair; +HPLorg/apache/http/message/LineFormatter;->appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/LineFormatter;->formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/LineFormatter;->formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/LineFormatter;->formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer; +HPLorg/apache/http/message/LineParser;->hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z +HPLorg/apache/http/message/LineParser;->parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header; +HPLorg/apache/http/message/LineParser;->parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/message/LineParser;->parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine; +HPLorg/apache/http/message/LineParser;->parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine; +HPLorg/apache/http/message/ParserCursor;->(II)V +HPLorg/apache/http/message/ParserCursor;->atEnd()Z +HPLorg/apache/http/message/ParserCursor;->getPos()I +HPLorg/apache/http/message/ParserCursor;->getUpperBound()I +HPLorg/apache/http/message/ParserCursor;->updatePos(I)V +HPLorg/apache/http/params/AbstractHttpParams;->getBooleanParameter(Ljava/lang/String;Z)Z +HPLorg/apache/http/params/AbstractHttpParams;->getLongParameter(Ljava/lang/String;J)J +HPLorg/apache/http/params/AbstractHttpParams;->isParameterTrue(Ljava/lang/String;)Z +HPLorg/apache/http/params/AbstractHttpParams;->setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams; +HPLorg/apache/http/params/HttpConnectionParams;->getConnectionTimeout(Lorg/apache/http/params/HttpParams;)I +HPLorg/apache/http/params/HttpConnectionParams;->getLinger(Lorg/apache/http/params/HttpParams;)I +HPLorg/apache/http/params/HttpConnectionParams;->getSoTimeout(Lorg/apache/http/params/HttpParams;)I +HPLorg/apache/http/params/HttpConnectionParams;->getSocketBufferSize(Lorg/apache/http/params/HttpParams;)I +HPLorg/apache/http/params/HttpConnectionParams;->getTcpNoDelay(Lorg/apache/http/params/HttpParams;)Z +HPLorg/apache/http/params/HttpConnectionParams;->isStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;)Z +HPLorg/apache/http/params/HttpProtocolParams;->getHttpElementCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String; +HPLorg/apache/http/params/HttpProtocolParams;->getUserAgent(Lorg/apache/http/params/HttpParams;)Ljava/lang/String; +HPLorg/apache/http/params/HttpProtocolParams;->getVersion(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/ProtocolVersion; +HPLorg/apache/http/params/HttpProtocolParams;->useExpectContinue(Lorg/apache/http/params/HttpParams;)Z +HPLorg/apache/http/protocol/BasicHttpContext;->()V +HPLorg/apache/http/protocol/BasicHttpContext;->(Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/BasicHttpContext;->getAttribute(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/protocol/BasicHttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V +HPLorg/apache/http/protocol/BasicHttpProcessor;->copy()Lorg/apache/http/protocol/BasicHttpProcessor; +HPLorg/apache/http/protocol/BasicHttpProcessor;->copyInterceptors(Lorg/apache/http/protocol/BasicHttpProcessor;)V +HPLorg/apache/http/protocol/BasicHttpProcessor;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/BasicHttpProcessor;->process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/DefaultedHttpContext;->(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/DefaultedHttpContext;->getAttribute(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/protocol/DefaultedHttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V +HPLorg/apache/http/protocol/HTTP;->isWhitespace(C)Z +HPLorg/apache/http/protocol/HttpContext;->getAttribute(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/protocol/HttpContext;->removeAttribute(Ljava/lang/String;)Ljava/lang/Object; +HPLorg/apache/http/protocol/HttpContext;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V +HPLorg/apache/http/protocol/HttpRequestExecutor;->()V +HPLorg/apache/http/protocol/HttpRequestExecutor;->canResponseHaveBody(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;)Z +HPLorg/apache/http/protocol/HttpRequestExecutor;->doReceiveResponse(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/protocol/HttpRequestExecutor;->doSendRequest(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/protocol/HttpRequestExecutor;->execute(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HPLorg/apache/http/protocol/HttpRequestExecutor;->postProcess(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/HttpRequestExecutor;->preProcess(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/RequestConnControl;->()V +HPLorg/apache/http/protocol/RequestConnControl;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/RequestContent;->()V +HPLorg/apache/http/protocol/RequestContent;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/RequestExpectContinue;->()V +HPLorg/apache/http/protocol/RequestExpectContinue;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/RequestTargetHost;->()V +HPLorg/apache/http/protocol/RequestTargetHost;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/protocol/RequestUserAgent;->()V +HPLorg/apache/http/protocol/RequestUserAgent;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HPLorg/apache/http/util/ByteArrayBuffer;->(I)V +HPLorg/apache/http/util/ByteArrayBuffer;->append(Lorg/apache/http/util/CharArrayBuffer;II)V +HPLorg/apache/http/util/ByteArrayBuffer;->append([BII)V +HPLorg/apache/http/util/ByteArrayBuffer;->append([CII)V +HPLorg/apache/http/util/ByteArrayBuffer;->buffer()[B +HPLorg/apache/http/util/ByteArrayBuffer;->capacity()I +HPLorg/apache/http/util/ByteArrayBuffer;->clear()V +HPLorg/apache/http/util/ByteArrayBuffer;->isEmpty()Z +HPLorg/apache/http/util/ByteArrayBuffer;->isFull()Z +HPLorg/apache/http/util/ByteArrayBuffer;->length()I +HPLorg/apache/http/util/CharArrayBuffer;->(I)V +HPLorg/apache/http/util/CharArrayBuffer;->append(C)V +HPLorg/apache/http/util/CharArrayBuffer;->append(Ljava/lang/String;)V +HPLorg/apache/http/util/CharArrayBuffer;->append([BII)V +HPLorg/apache/http/util/CharArrayBuffer;->append([CII)V +HPLorg/apache/http/util/CharArrayBuffer;->buffer()[C +HPLorg/apache/http/util/CharArrayBuffer;->charAt(I)C +HPLorg/apache/http/util/CharArrayBuffer;->clear()V +HPLorg/apache/http/util/CharArrayBuffer;->ensureCapacity(I)V +HPLorg/apache/http/util/CharArrayBuffer;->expand(I)V +HPLorg/apache/http/util/CharArrayBuffer;->indexOf(I)I +HPLorg/apache/http/util/CharArrayBuffer;->indexOf(III)I +HPLorg/apache/http/util/CharArrayBuffer;->length()I +HPLorg/apache/http/util/CharArrayBuffer;->substring(II)Ljava/lang/String; +HPLorg/apache/http/util/CharArrayBuffer;->substringTrimmed(II)Ljava/lang/String; +HPLorg/apache/http/util/CharArrayBuffer;->toString()Ljava/lang/String; +HPLorg/apache/http/util/EntityUtils;->getContentCharSet(Lorg/apache/http/HttpEntity;)Ljava/lang/String; +HPLorg/apache/http/util/EntityUtils;->toString(Lorg/apache/http/HttpEntity;Ljava/lang/String;)Ljava/lang/String; +HPLorg/apache/http/util/LangUtils;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z +HPLorg/apache/http/util/LangUtils;->hashCode(II)I +HPLorg/apache/http/util/LangUtils;->hashCode(ILjava/lang/Object;)I +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->()V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->(Lorg/xml/sax/Attributes;)V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->clear()V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getIndex(Ljava/lang/String;)I +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getLength()I +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getLocalName(I)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getQName(I)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getType(I)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getURI(I)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(I)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->removeAttribute(I)V +HPLorg/ccil/cowan/tagsoup/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V +HPLorg/ccil/cowan/tagsoup/AutoDetector;->autoDetectingReader(Ljava/io/InputStream;)Ljava/io/Reader; +HPLorg/ccil/cowan/tagsoup/Element;->(Lorg/ccil/cowan/tagsoup/ElementType;Z)V +HPLorg/ccil/cowan/tagsoup/Element;->atts()Lorg/ccil/cowan/tagsoup/AttributesImpl; +HPLorg/ccil/cowan/tagsoup/Element;->canContain(Lorg/ccil/cowan/tagsoup/Element;)Z +HPLorg/ccil/cowan/tagsoup/Element;->clean()V +HPLorg/ccil/cowan/tagsoup/Element;->flags()I +HPLorg/ccil/cowan/tagsoup/Element;->isPreclosed()Z +HPLorg/ccil/cowan/tagsoup/Element;->localName()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Element;->model()I +HPLorg/ccil/cowan/tagsoup/Element;->name()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Element;->namespace()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Element;->next()Lorg/ccil/cowan/tagsoup/Element; +HPLorg/ccil/cowan/tagsoup/Element;->parent()Lorg/ccil/cowan/tagsoup/ElementType; +HPLorg/ccil/cowan/tagsoup/Element;->setAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/Element;->setNext(Lorg/ccil/cowan/tagsoup/Element;)V +HPLorg/ccil/cowan/tagsoup/ElementType;->(Ljava/lang/String;IIILorg/ccil/cowan/tagsoup/Schema;)V +HPLorg/ccil/cowan/tagsoup/ElementType;->atts()Lorg/ccil/cowan/tagsoup/AttributesImpl; +HPLorg/ccil/cowan/tagsoup/ElementType;->canContain(Lorg/ccil/cowan/tagsoup/ElementType;)Z +HPLorg/ccil/cowan/tagsoup/ElementType;->flags()I +HPLorg/ccil/cowan/tagsoup/ElementType;->localName()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->localName(Ljava/lang/String;)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->model()I +HPLorg/ccil/cowan/tagsoup/ElementType;->name()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->namespace()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->namespace(Ljava/lang/String;Z)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->normalize(Ljava/lang/String;)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/ElementType;->parent()Lorg/ccil/cowan/tagsoup/ElementType; +HPLorg/ccil/cowan/tagsoup/ElementType;->setAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/ElementType;->setAttribute(Lorg/ccil/cowan/tagsoup/AttributesImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/ElementType;->setParent(Lorg/ccil/cowan/tagsoup/ElementType;)V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->()V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->mark()V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->resetDocumentLocator(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->save(ILorg/ccil/cowan/tagsoup/ScanHandler;)V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V +HPLorg/ccil/cowan/tagsoup/HTMLScanner;->unread(Ljava/io/PushbackReader;I)V +HPLorg/ccil/cowan/tagsoup/HTMLSchema;->()V +HPLorg/ccil/cowan/tagsoup/Parser$1;->(Lorg/ccil/cowan/tagsoup/Parser;)V +HPLorg/ccil/cowan/tagsoup/Parser;->()V +HPLorg/ccil/cowan/tagsoup/Parser;->aname([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->aval([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->eof([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->etag([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->etag_basic([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->etag_cdata([CII)Z +HPLorg/ccil/cowan/tagsoup/Parser;->expandEntities(Ljava/lang/String;)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Parser;->foreign(Ljava/lang/String;Ljava/lang/String;)Z +HPLorg/ccil/cowan/tagsoup/Parser;->getReader(Lorg/xml/sax/InputSource;)Ljava/io/Reader; +HPLorg/ccil/cowan/tagsoup/Parser;->gi([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->makeName([CII)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V +HPLorg/ccil/cowan/tagsoup/Parser;->pcdata([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->pop()V +HPLorg/ccil/cowan/tagsoup/Parser;->prefixOf(Ljava/lang/String;)Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V +HPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V +HPLorg/ccil/cowan/tagsoup/Parser;->restart(Lorg/ccil/cowan/tagsoup/Element;)V +HPLorg/ccil/cowan/tagsoup/Parser;->setContentHandler(Lorg/xml/sax/ContentHandler;)V +HPLorg/ccil/cowan/tagsoup/Parser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V +HPLorg/ccil/cowan/tagsoup/Parser;->setup()V +HPLorg/ccil/cowan/tagsoup/Parser;->stagc([CII)V +HPLorg/ccil/cowan/tagsoup/Parser;->truthValue(Z)Ljava/lang/Boolean; +HPLorg/ccil/cowan/tagsoup/ScanHandler;->adup([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->aname([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->aval([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->cdsect([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->cmnt([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->decl([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->entity([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->eof([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->etag([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->getEntity()I +HPLorg/ccil/cowan/tagsoup/ScanHandler;->gi([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->pcdata([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->pi([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->pitarget([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->stagc([CII)V +HPLorg/ccil/cowan/tagsoup/ScanHandler;->stage([CII)V +HPLorg/ccil/cowan/tagsoup/Scanner;->resetDocumentLocator(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/Scanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V +HPLorg/ccil/cowan/tagsoup/Scanner;->startCDATA()V +HPLorg/ccil/cowan/tagsoup/Schema;->()V +HPLorg/ccil/cowan/tagsoup/Schema;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/Schema;->elementType(Ljava/lang/String;III)V +HPLorg/ccil/cowan/tagsoup/Schema;->entity(Ljava/lang/String;I)V +HPLorg/ccil/cowan/tagsoup/Schema;->getElementType(Ljava/lang/String;)Lorg/ccil/cowan/tagsoup/ElementType; +HPLorg/ccil/cowan/tagsoup/Schema;->getPrefix()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Schema;->getURI()Ljava/lang/String; +HPLorg/ccil/cowan/tagsoup/Schema;->parent(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/Schema;->setPrefix(Ljava/lang/String;)V +HPLorg/ccil/cowan/tagsoup/Schema;->setURI(Ljava/lang/String;)V +HPLorg/json/JSON;->toDouble(Ljava/lang/Object;)Ljava/lang/Double; +HPLorg/json/JSONArray;->(Ljava/util/Collection;)V +HPLorg/json/JSONArray;->getInt(I)I +HPLorg/json/JSONArray;->getJSONArray(I)Lorg/json/JSONArray; +HPLorg/json/JSONArray;->getLong(I)J +HPLorg/json/JSONArray;->opt(I)Ljava/lang/Object; +HPLorg/json/JSONArray;->optInt(I)I +HPLorg/json/JSONArray;->optInt(II)I +HPLorg/json/JSONArray;->optJSONArray(I)Lorg/json/JSONArray; +HPLorg/json/JSONArray;->optJSONObject(I)Lorg/json/JSONObject; +HPLorg/json/JSONArray;->put(J)Lorg/json/JSONArray; +HPLorg/json/JSONObject;->(Ljava/util/Map;)V +HPLorg/json/JSONObject;->getBoolean(Ljava/lang/String;)Z +HPLorg/json/JSONObject;->getDouble(Ljava/lang/String;)D +HPLorg/json/JSONObject;->isNull(Ljava/lang/String;)Z +HPLorg/json/JSONObject;->optDouble(Ljava/lang/String;)D +HPLorg/json/JSONObject;->optDouble(Ljava/lang/String;D)D +HPLorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; +HPLorg/json/JSONObject;->optLong(Ljava/lang/String;)J +HPLorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject; +HPLorg/json/JSONObject;->wrap(Ljava/lang/Object;)Ljava/lang/Object; +HPLorg/kxml2/io/KXmlParser;->getAttributeCount()I +HPLorg/kxml2/io/KXmlParser;->getAttributeName(I)Ljava/lang/String; +HPLorg/kxml2/io/KXmlParser;->getAttributeValue(I)Ljava/lang/String; +HPLorg/kxml2/io/KXmlSerializer;->()V +HPLorg/kxml2/io/KXmlSerializer;->append(C)V +HPLorg/kxml2/io/KXmlSerializer;->append(Ljava/lang/String;)V +HPLorg/kxml2/io/KXmlSerializer;->append(Ljava/lang/String;II)V +HPLorg/kxml2/io/KXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HPLorg/kxml2/io/KXmlSerializer;->check(Z)V +HPLorg/kxml2/io/KXmlSerializer;->endDocument()V +HPLorg/kxml2/io/KXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HPLorg/kxml2/io/KXmlSerializer;->flush()V +HPLorg/kxml2/io/KXmlSerializer;->flushBuffer()V +HPLorg/kxml2/io/KXmlSerializer;->getDepth()I +HPLorg/kxml2/io/KXmlSerializer;->getNamespace()Ljava/lang/String; +HPLorg/kxml2/io/KXmlSerializer;->getPrefix(Ljava/lang/String;ZZ)Ljava/lang/String; +HPLorg/kxml2/io/KXmlSerializer;->setFeature(Ljava/lang/String;Z)V +HPLorg/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V +HPLorg/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/Writer;)V +HPLorg/kxml2/io/KXmlSerializer;->setPrefix(Ljava/lang/String;Ljava/lang/String;)V +HPLorg/kxml2/io/KXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V +HPLorg/kxml2/io/KXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HPLorg/kxml2/io/KXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HPLorg/kxml2/io/KXmlSerializer;->writeEscaped(Ljava/lang/String;I)V +HPLorg/xml/sax/EntityResolver;->resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource; +HPLorg/xml/sax/InputSource;->(Ljava/io/Reader;)V +HPLorg/xml/sax/InputSource;->setCharacterStream(Ljava/io/Reader;)V +HPLorg/xml/sax/ext/DefaultHandler2;->endDTD()V +HPLorg/xml/sax/ext/DefaultHandler2;->startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HPLorg/xml/sax/ext/LexicalHandler;->comment([CII)V +HPLorg/xml/sax/helpers/AttributesImpl;->(Lorg/xml/sax/Attributes;)V +HPLorg/xml/sax/helpers/AttributesImpl;->clear()V +HPLorg/xml/sax/helpers/AttributesImpl;->getValue(Ljava/lang/String;)Ljava/lang/String; +HPLorg/xml/sax/helpers/AttributesImpl;->setAttributes(Lorg/xml/sax/Attributes;)V +HPLorg/xml/sax/helpers/DefaultHandler;->endDocument()V +HPLorg/xml/sax/helpers/DefaultHandler;->startDocument()V +HPLorg/xmlpull/v1/XmlPullParserFactory;->()V +HPLorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer; +HPLorg/xmlpull/v1/XmlPullParserFactory;->newInstance()Lorg/xmlpull/v1/XmlPullParserFactory; +HPLorg/xmlpull/v1/XmlPullParserFactory;->newInstance(Ljava/lang/String;Ljava/lang/Class;)Lorg/xmlpull/v1/XmlPullParserFactory; +HPLorg/xmlpull/v1/XmlPullParserFactory;->newSerializer()Lorg/xmlpull/v1/XmlSerializer; +HPLsun/misc/FDBigInteger;->addAndCmp(Lsun/misc/FDBigInteger;Lsun/misc/FDBigInteger;)I +HPLsun/misc/FDBigInteger;->checkZeroTail([II)I +HPLsun/misc/FDBigInteger;->getNormalizationBias()I +HPLsun/misc/FDBigInteger;->mult([IIII[I)V +HPLsun/misc/FDBigInteger;->multAndCarryBy10([II[I)I +HPLsun/misc/FDBigInteger;->multBy10()Lsun/misc/FDBigInteger; +HPLsun/misc/FDBigInteger;->multDiffMe(JLsun/misc/FDBigInteger;)J +HPLsun/misc/FDBigInteger;->quoRemIteration(Lsun/misc/FDBigInteger;)I +HPLsun/misc/FDBigInteger;->size()I +HPLsun/misc/FDBigInteger;->valueOfPow2(I)Lsun/misc/FDBigInteger; +HPLsun/misc/FDBigInteger;->valueOfPow52(II)Lsun/misc/FDBigInteger; +HPLsun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer;->toJavaFormatString()Ljava/lang/String; +HPLsun/misc/LRUCache;->(I)V +HPLsun/misc/LRUCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HPLsun/misc/LRUCache;->forName(Ljava/lang/Object;)Ljava/lang/Object; +HPLsun/misc/LRUCache;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z +HPLsun/misc/LRUCache;->moveToFront([Ljava/lang/Object;I)V +HPLsun/nio/ch/ChannelInputStream;->(Ljava/nio/channels/ReadableByteChannel;)V +HPLsun/nio/ch/ChannelInputStream;->close()V +HPLsun/nio/ch/ChannelInputStream;->read()I +HPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/ByteBuffer;)I +HPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;)I +HPLsun/nio/ch/ChannelInputStream;->read([BII)I +HPLsun/nio/ch/FileChannelImpl$Unmapper;->run()V +HPLsun/nio/ch/FileChannelImpl;->-wrap0(JJ)I +HPLsun/nio/ch/FileChannelImpl;->read(Ljava/nio/ByteBuffer;)I +HPLsun/nio/ch/FileChannelImpl;->write(Ljava/nio/ByteBuffer;)I +HPLsun/nio/ch/FileDispatcherImpl;->close(Ljava/io/FileDescriptor;)V +HPLsun/nio/ch/FileDispatcherImpl;->read(Ljava/io/FileDescriptor;JI)I +HPLsun/nio/ch/FileDispatcherImpl;->write(Ljava/io/FileDescriptor;JI)I +HPLsun/nio/ch/IOStatus;->normalize(I)I +HPLsun/nio/ch/IOUtil;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I +HPLsun/nio/ch/IOUtil;->readIntoNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I +HPLsun/nio/ch/IOUtil;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I +HPLsun/nio/ch/IOUtil;->writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I +HPLsun/nio/ch/Util$1;->()V +HPLsun/nio/ch/Util$1;->initialValue()Ljava/lang/Object; +HPLsun/nio/ch/Util$1;->initialValue()Lsun/nio/ch/Util$BufferCache; +HPLsun/nio/ch/Util$BufferCache;->()V +HPLsun/nio/ch/Util$BufferCache;->get(I)Ljava/nio/ByteBuffer; +HPLsun/nio/ch/Util$BufferCache;->isEmpty()Z +HPLsun/nio/ch/Util$BufferCache;->next(I)I +HPLsun/nio/ch/Util$BufferCache;->offerFirst(Ljava/nio/ByteBuffer;)Z +HPLsun/nio/ch/Util$BufferCache;->removeFirst()Ljava/nio/ByteBuffer; +HPLsun/nio/ch/Util;->-get0()I +HPLsun/nio/ch/Util;->free(Ljava/nio/ByteBuffer;)V +HPLsun/nio/ch/Util;->getTemporaryDirectBuffer(I)Ljava/nio/ByteBuffer; +HPLsun/nio/ch/Util;->offerFirstTemporaryDirectBuffer(Ljava/nio/ByteBuffer;)V +HPLsun/nio/cs/StreamDecoder;->(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)V +HPLsun/nio/cs/StreamDecoder;->forDecoder(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Lsun/nio/cs/StreamDecoder; +HPLsun/nio/cs/StreamDecoder;->implReady()Z +HPLsun/nio/cs/StreamDecoder;->ready()Z +HPLsun/nio/cs/StreamEncoder;->write(Ljava/lang/String;II)V +HPLsun/nio/fs/UnixFileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel; +HPLsun/reflect/misc/ReflectUtil;->checkPackageAccess(Ljava/lang/Class;)V +HPLsun/reflect/misc/ReflectUtil;->checkPackageAccess(Ljava/lang/String;)V +HPLsun/reflect/misc/ReflectUtil;->isNonPublicProxyClass(Ljava/lang/Class;)Z +HPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance; +HPLsun/security/jca/GetInstance;->getService(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HPLsun/security/jca/JCAUtil;->getSecureRandom()Ljava/security/SecureRandom; +HPLsun/security/util/DerValue;->(Ljava/lang/String;)V +HPLsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream; +HPLsun/security/util/ManifestEntryVerifier;->update(B)V +HPLsun/security/x509/AVA;->(Ljava/io/Reader;ILjava/util/Map;)V +HPLsun/security/x509/AVA;->(Ljava/io/Reader;Ljava/util/Map;)V +HPLsun/security/x509/AVA;->isTerminator(II)Z +HPLsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue; +HPLsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I +HPLsun/security/x509/AVAKeyword;->getOID(Ljava/lang/String;ILjava/util/Map;)Lsun/security/util/ObjectIdentifier; +HPLsun/security/x509/CertAttrSet;->delete(Ljava/lang/String;)V +HPLsun/security/x509/CertAttrSet;->encode(Ljava/io/OutputStream;)V +HPLsun/security/x509/CertAttrSet;->get(Ljava/lang/String;)Ljava/lang/Object; +HPLsun/security/x509/CertAttrSet;->getElements()Ljava/util/Enumeration; +HPLsun/security/x509/CertAttrSet;->getName()Ljava/lang/String; +HPLsun/security/x509/CertAttrSet;->set(Ljava/lang/String;Ljava/lang/Object;)V +HPLsun/security/x509/CertAttrSet;->toString()Ljava/lang/String; +HPLsun/security/x509/RDN;->(Ljava/lang/String;Ljava/util/Map;)V +HPLsun/security/x509/X500Name;->(Ljava/lang/String;Ljava/util/Map;)V +HPLsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V +HPLsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I +HPLsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z +HPLsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V +HPLsun/util/calendar/BaseCalendar$Date;->setNormalizedDate(III)Lsun/util/calendar/BaseCalendar$Date; +HPLsun/util/calendar/CalendarDate;->isDaylightTime()Z +HPLsun/util/calendar/CalendarDate;->isStandardTime()Z +HPLsun/util/calendar/CalendarUtils;->sprintf0d(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder; +HPLsun/util/locale/Extension;->(CLjava/lang/String;)V +HPLsun/util/locale/Extension;->getID()Ljava/lang/String; +HPLsun/util/locale/Extension;->setValue(Ljava/lang/String;)V +HPLsun/util/locale/Extension;->toString()Ljava/lang/String; +HPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->(C)V +HPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->(Ljava/lang/String;)V +HPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->(Ljava/lang/String;Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;)V +HPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->hashCode()I +HPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C +HPLsun/util/locale/LanguageTag;->isExtensionSingleton(Ljava/lang/String;)Z +HPLsun/util/locale/LanguageTag;->isExtensionSubtag(Ljava/lang/String;)Z +HPLsun/util/locale/LanguageTag;->isPrivateusePrefixChar(C)Z +HPLsun/util/locale/LanguageTag;->isVariant(Ljava/lang/String;)Z +HPLsun/util/locale/LocaleExtensions;->(Ljava/lang/String;Ljava/lang/Character;Lsun/util/locale/Extension;)V +HPLsun/util/locale/LocaleExtensions;->(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V +HPLsun/util/locale/LocaleExtensions;->equals(Ljava/lang/Object;)Z +HPLsun/util/locale/LocaleExtensions;->getID()Ljava/lang/String; +HPLsun/util/locale/LocaleExtensions;->hashCode()I +HPLsun/util/locale/LocaleExtensions;->isEmpty()Z +HPLsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String; +HPLsun/util/locale/LocaleUtils;->isAlphaNumeric(C)Z +HPLsun/util/locale/LocaleUtils;->isAlphaNumericString(Ljava/lang/String;)Z +HPLsun/util/locale/StringTokenIterator;->currentStart()I +HPLsun/util/locale/UnicodeLocaleExtension;->(Ljava/lang/String;Ljava/lang/String;)V +HPLsun/util/locale/UnicodeLocaleExtension;->isSingletonChar(C)Z +HSLandroid/os/PowerManagerInternal$LowPowerModeListener;->getServiceType()I +HSLandroid/os/PowerManagerInternal$LowPowerModeListener;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V +HSLandroid/service/vr/IPersistentVrStateCallbacks;->onPersistentVrStateChanged(Z)V +HSLandroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScale(Landroid/view/ScaleGestureDetector;)Z +HSLandroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z +HSLandroid/view/ScaleGestureDetector$OnScaleGestureListener;->onScaleEnd(Landroid/view/ScaleGestureDetector;)V +HSLandroid/view/ViewStub$OnInflateListener;->onInflate(Landroid/view/ViewStub;Landroid/view/View;)V +HSPLandroid/accessibilityservice/AccessibilityServiceInfo$1;->()V +HSPLandroid/accounts/Account$1;->()V +HSPLandroid/accounts/Account$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/Account; +HSPLandroid/accounts/Account$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/accounts/Account$1;->newArray(I)[Landroid/accounts/Account; +HSPLandroid/accounts/Account$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/accounts/Account;->(Landroid/os/Parcel;)V +HSPLandroid/accounts/Account;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/Account;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/Account;->equals(Ljava/lang/Object;)Z +HSPLandroid/accounts/Account;->hashCode()I +HSPLandroid/accounts/Account;->toString()Ljava/lang/String; +HSPLandroid/accounts/Account;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/accounts/AccountManager$11;->(Landroid/accounts/AccountManager;Landroid/accounts/AccountManager;Landroid/app/Activity;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V +HSPLandroid/accounts/AccountManager$11;->doWork()V +HSPLandroid/accounts/AccountManager$19;->(Landroid/accounts/AccountManager;Landroid/accounts/OnAccountsUpdateListener;[Landroid/accounts/Account;)V +HSPLandroid/accounts/AccountManager$19;->run()V +HSPLandroid/accounts/AccountManager$1;->(Landroid/accounts/AccountManager;)V +HSPLandroid/accounts/AccountManager$3;->(Landroid/accounts/AccountManager;Landroid/accounts/AccountManager;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;Landroid/accounts/Account;[Ljava/lang/String;)V +HSPLandroid/accounts/AccountManager$3;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Boolean; +HSPLandroid/accounts/AccountManager$3;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$3;->doWork()V +HSPLandroid/accounts/AccountManager$4;->(Landroid/accounts/AccountManager;Landroid/accounts/AccountManager;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/accounts/AccountManager$4;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$4;->bundleToResult(Landroid/os/Bundle;)[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager$4;->doWork()V +HSPLandroid/accounts/AccountManager$AmsTask$1;->(Landroid/accounts/AccountManager;)V +HSPLandroid/accounts/AccountManager$AmsTask$Response;->(Landroid/accounts/AccountManager$AmsTask;)V +HSPLandroid/accounts/AccountManager$AmsTask$Response;->(Landroid/accounts/AccountManager$AmsTask;Landroid/accounts/AccountManager$AmsTask$Response;)V +HSPLandroid/accounts/AccountManager$AmsTask$Response;->onResult(Landroid/os/Bundle;)V +HSPLandroid/accounts/AccountManager$AmsTask;->(Landroid/accounts/AccountManager;Landroid/app/Activity;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V +HSPLandroid/accounts/AccountManager$AmsTask;->doWork()V +HSPLandroid/accounts/AccountManager$AmsTask;->done()V +HSPLandroid/accounts/AccountManager$AmsTask;->getResult()Landroid/os/Bundle; +HSPLandroid/accounts/AccountManager$AmsTask;->getResult()Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$AmsTask;->internalGetResult(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Landroid/os/Bundle; +HSPLandroid/accounts/AccountManager$AmsTask;->set(Landroid/os/Bundle;)V +HSPLandroid/accounts/AccountManager$AmsTask;->start()Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager$BaseFutureTask$1;->(Landroid/accounts/AccountManager;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask$Response;->(Landroid/accounts/AccountManager$BaseFutureTask;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask$Response;->onResult(Landroid/os/Bundle;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask;->-wrap1(Landroid/accounts/AccountManager$BaseFutureTask;Ljava/lang/Object;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask;->(Landroid/accounts/AccountManager;Landroid/os/Handler;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$BaseFutureTask;->doWork()V +HSPLandroid/accounts/AccountManager$BaseFutureTask;->postRunnableToHandler(Ljava/lang/Runnable;)V +HSPLandroid/accounts/AccountManager$BaseFutureTask;->startTask()V +HSPLandroid/accounts/AccountManager$Future2Task$1;->(Landroid/accounts/AccountManager$Future2Task;)V +HSPLandroid/accounts/AccountManager$Future2Task$1;->run()V +HSPLandroid/accounts/AccountManager$Future2Task;->(Landroid/accounts/AccountManager;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V +HSPLandroid/accounts/AccountManager$Future2Task;->done()V +HSPLandroid/accounts/AccountManager$Future2Task;->getResult()Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$Future2Task;->internalGetResult(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManager$Future2Task;->start()Landroid/accounts/AccountManager$Future2Task; +HSPLandroid/accounts/AccountManager;->-get0(Landroid/accounts/AccountManager;)Ljava/util/HashMap; +HSPLandroid/accounts/AccountManager;->-get1(Landroid/accounts/AccountManager;)Ljava/util/HashMap; +HSPLandroid/accounts/AccountManager;->-get2(Landroid/accounts/AccountManager;)Landroid/content/Context; +HSPLandroid/accounts/AccountManager;->-get3(Landroid/accounts/AccountManager;)Landroid/os/Handler; +HSPLandroid/accounts/AccountManager;->-get4(Landroid/accounts/AccountManager;)Landroid/accounts/IAccountManager; +HSPLandroid/accounts/AccountManager;->-wrap1(Landroid/accounts/AccountManager;)V +HSPLandroid/accounts/AccountManager;->(Landroid/content/Context;Landroid/accounts/IAccountManager;)V +HSPLandroid/accounts/AccountManager;->addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z)V +HSPLandroid/accounts/AccountManager;->addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z[Ljava/lang/String;)V +HSPLandroid/accounts/AccountManager;->ensureNotOnMainThread()V +HSPLandroid/accounts/AccountManager;->get(Landroid/content/Context;)Landroid/accounts/AccountManager; +HSPLandroid/accounts/AccountManager;->getAccounts()[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager;->getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager;->getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->getAccountsByTypeAsUser(Ljava/lang/String;Landroid/os/UserHandle;)[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->getAuthenticatorTypes()[Landroid/accounts/AuthenticatorDescription; +HSPLandroid/accounts/AccountManager;->hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture; +HSPLandroid/accounts/AccountManager;->postToHandler(Landroid/os/Handler;Landroid/accounts/OnAccountsUpdateListener;[Landroid/accounts/Account;)V +HSPLandroid/accounts/AccountManagerCallback;->run(Landroid/accounts/AccountManagerFuture;)V +HSPLandroid/accounts/AccountManagerFuture;->cancel(Z)Z +HSPLandroid/accounts/AccountManagerFuture;->getResult()Ljava/lang/Object; +HSPLandroid/accounts/AccountManagerFuture;->getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLandroid/accounts/AccountManagerFuture;->isCancelled()Z +HSPLandroid/accounts/AccountManagerFuture;->isDone()Z +HSPLandroid/accounts/AuthenticatorDescription$1;->()V +HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/AuthenticatorDescription; +HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/accounts/AuthenticatorDescription$1;->newArray(I)[Landroid/accounts/AuthenticatorDescription; +HSPLandroid/accounts/AuthenticatorDescription$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/accounts/AuthenticatorDescription;->(Landroid/os/Parcel;)V +HSPLandroid/accounts/AuthenticatorDescription;->(Landroid/os/Parcel;Landroid/accounts/AuthenticatorDescription;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription; +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->onAccountAccessed(Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub$Proxy;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManager; +HSPLandroid/accounts/IAccountManager;->accountAuthenticated(Landroid/accounts/Account;)Z +HSPLandroid/accounts/IAccountManager;->addAccount(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManager;->addAccountAsUser(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;I)V +HSPLandroid/accounts/IAccountManager;->addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z +HSPLandroid/accounts/IAccountManager;->addAccountExplicitlyWithVisibility(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/Map;)Z +HSPLandroid/accounts/IAccountManager;->addSharedAccountsFromParentUser(IILjava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->clearPassword(Landroid/accounts/Account;)V +HSPLandroid/accounts/IAccountManager;->confirmCredentialsAsUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Landroid/os/Bundle;ZI)V +HSPLandroid/accounts/IAccountManager;->copyAccountToUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;II)V +HSPLandroid/accounts/IAccountManager;->createRequestAccountAccessIntentSenderAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/IntentSender; +HSPLandroid/accounts/IAccountManager;->editProperties(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Z)V +HSPLandroid/accounts/IAccountManager;->finishSessionAsUser(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;ZLandroid/os/Bundle;I)V +HSPLandroid/accounts/IAccountManager;->getAccountByTypeAndFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->getAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;)I +HSPLandroid/accounts/IAccountManager;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager;->getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map; +HSPLandroid/accounts/IAccountManager;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager;->getAccountsForPackage(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManager;->getAuthTokenLabel(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription; +HSPLandroid/accounts/IAccountManager;->getPackagesAndVisibilityForAccount(Landroid/accounts/Account;)Ljava/util/Map; +HSPLandroid/accounts/IAccountManager;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager;->getPreviousName(Landroid/accounts/Account;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager;->getSharedAccountsAsUser(I)[Landroid/accounts/Account; +HSPLandroid/accounts/IAccountManager;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/accounts/IAccountManager;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->isCredentialsUpdateSuggested(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->onAccountAccessed(Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/accounts/IAccountManager;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->removeAccount(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Z)V +HSPLandroid/accounts/IAccountManager;->removeAccountAsUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;ZI)V +HSPLandroid/accounts/IAccountManager;->removeAccountExplicitly(Landroid/accounts/Account;)Z +HSPLandroid/accounts/IAccountManager;->removeSharedAccountAsUser(Landroid/accounts/Account;I)Z +HSPLandroid/accounts/IAccountManager;->renameAccount(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->renameSharedAccountAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HSPLandroid/accounts/IAccountManager;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;I)Z +HSPLandroid/accounts/IAccountManager;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->setPassword(Landroid/accounts/Account;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->someUserHasAccount(Landroid/accounts/Account;)Z +HSPLandroid/accounts/IAccountManager;->startAddAccountSession(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManager;->startUpdateCredentialsSession(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManager;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/accounts/IAccountManager;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V +HSPLandroid/accounts/IAccountManager;->updateCredentials(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V +HSPLandroid/accounts/IAccountManagerResponse$Stub;->()V +HSPLandroid/accounts/IAccountManagerResponse$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/accounts/IAccountManagerResponse;->onError(ILjava/lang/String;)V +HSPLandroid/accounts/IAccountManagerResponse;->onResult(Landroid/os/Bundle;)V +HSPLandroid/accounts/OnAccountsUpdateListener;->onAccountsUpdated([Landroid/accounts/Account;)V +HSPLandroid/animation/AnimationHandler$1;->(Landroid/animation/AnimationHandler;)V +HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V +HSPLandroid/animation/AnimationHandler$AnimationFrameCallback;->commitAnimationFrame(J)V +HSPLandroid/animation/AnimationHandler$AnimationFrameCallback;->doAnimationFrame(J)Z +HSPLandroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->getFrameDelay()J +HSPLandroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->getFrameTime()J +HSPLandroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->postCommitCallback(Ljava/lang/Runnable;)V +HSPLandroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V +HSPLandroid/animation/AnimationHandler$AnimationFrameCallbackProvider;->setFrameDelay(J)V +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->(Landroid/animation/AnimationHandler;)V +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->(Landroid/animation/AnimationHandler;Landroid/animation/AnimationHandler$MyFrameCallbackProvider;)V +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V +HSPLandroid/animation/AnimationHandler;->-get0(Landroid/animation/AnimationHandler;)Ljava/util/ArrayList; +HSPLandroid/animation/AnimationHandler;->-wrap0(Landroid/animation/AnimationHandler;)Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; +HSPLandroid/animation/AnimationHandler;->-wrap2(Landroid/animation/AnimationHandler;J)V +HSPLandroid/animation/AnimationHandler;->()V +HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V +HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V +HSPLandroid/animation/AnimationHandler;->cleanUpList()V +HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V +HSPLandroid/animation/AnimationHandler;->getAnimationCount()I +HSPLandroid/animation/AnimationHandler;->getCallbackSize()I +HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler; +HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; +HSPLandroid/animation/AnimationHandler;->isCallbackDue(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)Z +HSPLandroid/animation/AnimationHandler;->removeCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;)V +HSPLandroid/animation/AnimationHandler;->setProvider(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;)V +HSPLandroid/animation/Animator$AnimatorConstantState;->(Landroid/animation/Animator;)V +HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator; +HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object; +HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V +HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V +HSPLandroid/animation/Animator$AnimatorPauseListener;->onAnimationPause(Landroid/animation/Animator;)V +HSPLandroid/animation/Animator$AnimatorPauseListener;->onAnimationResume(Landroid/animation/Animator;)V +HSPLandroid/animation/Animator;->-set0(Landroid/animation/Animator;Landroid/animation/Animator$AnimatorConstantState;)Landroid/animation/Animator$AnimatorConstantState; +HSPLandroid/animation/Animator;->()V +HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V +HSPLandroid/animation/Animator;->appendChangingConfigurations(I)V +HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator; +HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState; +HSPLandroid/animation/Animator;->getChangingConfigurations()I +HSPLandroid/animation/Animator;->isPaused()Z +HSPLandroid/animation/Animator;->pause()V +HSPLandroid/animation/Animator;->removeAllListeners()V +HSPLandroid/animation/Animator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V +HSPLandroid/animation/Animator;->setAllowRunningAsynchronously(Z)V +HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->()V +HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->(Landroid/animation/AnimatorInflater$PathDataEvaluator;)V +HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->evaluate(FLandroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Landroid/util/PathParser$PathData; +HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/animation/AnimatorInflater;->createAnimatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;F)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorInflater;->createAnimatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/animation/AnimatorSet;IF)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorInflater;->createStateListAnimatorFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/animation/StateListAnimator; +HSPLandroid/animation/AnimatorInflater;->getChangingConfigs(Landroid/content/res/Resources;I)I +HSPLandroid/animation/AnimatorInflater;->getPVH(Landroid/content/res/TypedArray;IIILjava/lang/String;)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/AnimatorInflater;->inferValueTypeFromValues(Landroid/content/res/TypedArray;II)I +HSPLandroid/animation/AnimatorInflater;->isColorType(I)Z +HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;IF)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;Landroid/animation/ValueAnimator;F)Landroid/animation/ValueAnimator; +HSPLandroid/animation/AnimatorInflater;->loadObjectAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;F)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/AnimatorInflater;->loadPvh(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/AnimatorInflater;->loadStateListAnimator(Landroid/content/Context;I)Landroid/animation/StateListAnimator; +HSPLandroid/animation/AnimatorInflater;->loadValues(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)[Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/AnimatorInflater;->parseAnimatorFromTypeArray(Landroid/animation/ValueAnimator;Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;F)V +HSPLandroid/animation/AnimatorInflater;->setupObjectAnimator(Landroid/animation/ValueAnimator;Landroid/content/res/TypedArray;IF)V +HSPLandroid/animation/AnimatorListenerAdapter;->()V +HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationCancel(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationStart(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet$1;->(Landroid/animation/AnimatorSet;)V +HSPLandroid/animation/AnimatorSet$1;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet$2;->(Landroid/animation/AnimatorSet;Landroid/animation/AnimatorSet;)V +HSPLandroid/animation/AnimatorSet$2;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet$3;->(Landroid/animation/AnimatorSet;)V +HSPLandroid/animation/AnimatorSet$3;->compare(Landroid/animation/AnimatorSet$AnimationEvent;Landroid/animation/AnimatorSet$AnimationEvent;)I +HSPLandroid/animation/AnimatorSet$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/animation/AnimatorSet$AnimationEvent;->(Landroid/animation/AnimatorSet$Node;I)V +HSPLandroid/animation/AnimatorSet$AnimationEvent;->getTime()J +HSPLandroid/animation/AnimatorSet$Builder;->(Landroid/animation/AnimatorSet;Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet$Builder;->after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; +HSPLandroid/animation/AnimatorSet$Builder;->before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; +HSPLandroid/animation/AnimatorSet$Builder;->with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; +HSPLandroid/animation/AnimatorSet$Node;->(Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet$Node;->addChild(Landroid/animation/AnimatorSet$Node;)V +HSPLandroid/animation/AnimatorSet$Node;->addParent(Landroid/animation/AnimatorSet$Node;)V +HSPLandroid/animation/AnimatorSet$Node;->addParents(Ljava/util/ArrayList;)V +HSPLandroid/animation/AnimatorSet$Node;->addSibling(Landroid/animation/AnimatorSet$Node;)V +HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node; +HSPLandroid/animation/AnimatorSet$SeekState;->(Landroid/animation/AnimatorSet;)V +HSPLandroid/animation/AnimatorSet$SeekState;->(Landroid/animation/AnimatorSet;Landroid/animation/AnimatorSet$SeekState;)V +HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J +HSPLandroid/animation/AnimatorSet$SeekState;->isActive()Z +HSPLandroid/animation/AnimatorSet$SeekState;->reset()V +HSPLandroid/animation/AnimatorSet;->-get0(Landroid/animation/AnimatorSet;)Landroid/util/ArrayMap; +HSPLandroid/animation/AnimatorSet;->-get1(Landroid/animation/AnimatorSet;)Z +HSPLandroid/animation/AnimatorSet;->-set0(Landroid/animation/AnimatorSet;Z)Z +HSPLandroid/animation/AnimatorSet;->-wrap0(Landroid/animation/AnimatorSet;Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Node; +HSPLandroid/animation/AnimatorSet;->()V +HSPLandroid/animation/AnimatorSet;->addAnimationCallback(J)V +HSPLandroid/animation/AnimatorSet;->addDummyListener()V +HSPLandroid/animation/AnimatorSet;->cancel()V +HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator; +HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet; +HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V +HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z +HSPLandroid/animation/AnimatorSet;->end()V +HSPLandroid/animation/AnimatorSet;->endAnimation()V +HSPLandroid/animation/AnimatorSet;->findLatestEventIdForTime(J)I +HSPLandroid/animation/AnimatorSet;->findSiblings(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V +HSPLandroid/animation/AnimatorSet;->getChangingConfigurations()I +HSPLandroid/animation/AnimatorSet;->getChildAnimations()Ljava/util/ArrayList; +HSPLandroid/animation/AnimatorSet;->getNodeForAnimation(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Node; +HSPLandroid/animation/AnimatorSet;->getPlayTimeForNode(JLandroid/animation/AnimatorSet$Node;)J +HSPLandroid/animation/AnimatorSet;->getPlayTimeForNode(JLandroid/animation/AnimatorSet$Node;Z)J +HSPLandroid/animation/AnimatorSet;->getStartDelay()J +HSPLandroid/animation/AnimatorSet;->getTotalDuration()J +HSPLandroid/animation/AnimatorSet;->handleAnimationEvents(IIJ)V +HSPLandroid/animation/AnimatorSet;->initAnimation()V +HSPLandroid/animation/AnimatorSet;->isEmptySet(Landroid/animation/AnimatorSet;)Z +HSPLandroid/animation/AnimatorSet;->isInitialized()Z +HSPLandroid/animation/AnimatorSet;->isRunning()Z +HSPLandroid/animation/AnimatorSet;->isStarted()Z +HSPLandroid/animation/AnimatorSet;->play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder; +HSPLandroid/animation/AnimatorSet;->playSequentially([Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet;->playTogether(Ljava/util/Collection;)V +HSPLandroid/animation/AnimatorSet;->playTogether([Landroid/animation/Animator;)V +HSPLandroid/animation/AnimatorSet;->pulseAnimationFrame(J)Z +HSPLandroid/animation/AnimatorSet;->pulseFrame(Landroid/animation/AnimatorSet$Node;J)V +HSPLandroid/animation/AnimatorSet;->removeAnimationCallback()V +HSPLandroid/animation/AnimatorSet;->removeDummyListener()V +HSPLandroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/Animator; +HSPLandroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet; +HSPLandroid/animation/AnimatorSet;->setInterpolator(Landroid/animation/TimeInterpolator;)V +HSPLandroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V +HSPLandroid/animation/AnimatorSet;->shouldPlayTogether()Z +HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V +HSPLandroid/animation/AnimatorSet;->start()V +HSPLandroid/animation/AnimatorSet;->start(ZZ)V +HSPLandroid/animation/AnimatorSet;->startAnimation()V +HSPLandroid/animation/AnimatorSet;->startWithoutPulsing(Z)V +HSPLandroid/animation/AnimatorSet;->updateAnimatorsDuration()V +HSPLandroid/animation/AnimatorSet;->updatePlayTime(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V +HSPLandroid/animation/ArgbEvaluator;->()V +HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/animation/ArgbEvaluator;->getInstance()Landroid/animation/ArgbEvaluator; +HSPLandroid/animation/FloatEvaluator;->()V +HSPLandroid/animation/FloatKeyframeSet;->([Landroid/animation/Keyframe$FloatKeyframe;)V +HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet; +HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes; +HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F +HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/IntEvaluator;->()V +HSPLandroid/animation/IntKeyframeSet;->([Landroid/animation/Keyframe$IntKeyframe;)V +HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet; +HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/Keyframes; +HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I +HSPLandroid/animation/IntKeyframeSet;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/Keyframe$FloatKeyframe;->(F)V +HSPLandroid/animation/Keyframe$FloatKeyframe;->(FF)V +HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe; +HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe$FloatKeyframe;->getFloatValue()F +HSPLandroid/animation/Keyframe$FloatKeyframe;->setValue(Ljava/lang/Object;)V +HSPLandroid/animation/Keyframe$IntKeyframe;->(F)V +HSPLandroid/animation/Keyframe$IntKeyframe;->(FI)V +HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe; +HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe$IntKeyframe;->getIntValue()I +HSPLandroid/animation/Keyframe$ObjectKeyframe;->(FLjava/lang/Object;)V +HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe$ObjectKeyframe; +HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe$ObjectKeyframe;->getValue()Ljava/lang/Object; +HSPLandroid/animation/Keyframe;->()V +HSPLandroid/animation/Keyframe;->clone()Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->getFraction()F +HSPLandroid/animation/Keyframe;->getInterpolator()Landroid/animation/TimeInterpolator; +HSPLandroid/animation/Keyframe;->getValue()Ljava/lang/Object; +HSPLandroid/animation/Keyframe;->hasValue()Z +HSPLandroid/animation/Keyframe;->ofFloat(F)Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->ofFloat(FF)Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->ofInt(F)Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->ofInt(FI)Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->ofObject(FLjava/lang/Object;)Landroid/animation/Keyframe; +HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V +HSPLandroid/animation/Keyframe;->setValue(Ljava/lang/Object;)V +HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V +HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z +HSPLandroid/animation/KeyframeSet;->([Landroid/animation/Keyframe;)V +HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet; +HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes; +HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List; +HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet; +HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet; +HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet; +HSPLandroid/animation/KeyframeSet;->ofPath(Landroid/graphics/Path;F)Landroid/animation/PathKeyframes; +HSPLandroid/animation/KeyframeSet;->setEvaluator(Landroid/animation/TypeEvaluator;)V +HSPLandroid/animation/Keyframes$FloatKeyframes;->getFloatValue(F)F +HSPLandroid/animation/Keyframes$IntKeyframes;->getIntValue(F)I +HSPLandroid/animation/Keyframes;->getKeyframes()Ljava/util/List; +HSPLandroid/animation/Keyframes;->getType()Ljava/lang/Class; +HSPLandroid/animation/Keyframes;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/Keyframes;->setEvaluator(Landroid/animation/TypeEvaluator;)V +HSPLandroid/animation/LayoutTransition$CleanupCallback;->(Ljava/util/Map;Landroid/view/ViewGroup;)V +HSPLandroid/animation/LayoutTransition$CleanupCallback;->cleanup()V +HSPLandroid/animation/LayoutTransition$CleanupCallback;->onPreDraw()Z +HSPLandroid/animation/LayoutTransition$TransitionListener;->endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V +HSPLandroid/animation/LayoutTransition$TransitionListener;->startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V +HSPLandroid/animation/LayoutTransition;->()V +HSPLandroid/animation/LayoutTransition;->addChild(Landroid/view/ViewGroup;Landroid/view/View;)V +HSPLandroid/animation/LayoutTransition;->addChild(Landroid/view/ViewGroup;Landroid/view/View;Z)V +HSPLandroid/animation/LayoutTransition;->addTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V +HSPLandroid/animation/LayoutTransition;->cancel()V +HSPLandroid/animation/LayoutTransition;->cancel(I)V +HSPLandroid/animation/LayoutTransition;->disableTransitionType(I)V +HSPLandroid/animation/LayoutTransition;->enableTransitionType(I)V +HSPLandroid/animation/LayoutTransition;->getAnimator(I)Landroid/animation/Animator; +HSPLandroid/animation/LayoutTransition;->hideChild(Landroid/view/ViewGroup;Landroid/view/View;I)V +HSPLandroid/animation/LayoutTransition;->isChangingLayout()Z +HSPLandroid/animation/LayoutTransition;->isRunning()Z +HSPLandroid/animation/LayoutTransition;->layoutChange(Landroid/view/ViewGroup;)V +HSPLandroid/animation/LayoutTransition;->removeChild(Landroid/view/ViewGroup;Landroid/view/View;)V +HSPLandroid/animation/LayoutTransition;->removeChild(Landroid/view/ViewGroup;Landroid/view/View;Z)V +HSPLandroid/animation/LayoutTransition;->removeTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V +HSPLandroid/animation/LayoutTransition;->runChangeTransition(Landroid/view/ViewGroup;Landroid/view/View;I)V +HSPLandroid/animation/LayoutTransition;->setAnimateParentHierarchy(Z)V +HSPLandroid/animation/LayoutTransition;->setAnimator(ILandroid/animation/Animator;)V +HSPLandroid/animation/LayoutTransition;->setDuration(J)V +HSPLandroid/animation/LayoutTransition;->setInterpolator(ILandroid/animation/TimeInterpolator;)V +HSPLandroid/animation/LayoutTransition;->setStartDelay(IJ)V +HSPLandroid/animation/LayoutTransition;->showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V +HSPLandroid/animation/ObjectAnimator;->()V +HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Landroid/util/Property;)V +HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Ljava/lang/String;)V +HSPLandroid/animation/ObjectAnimator;->animateValue(F)V +HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator; +HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ValueAnimator; +HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object; +HSPLandroid/animation/ObjectAnimator;->hasSameTargetAndProperties(Landroid/animation/Animator;)Z +HSPLandroid/animation/ObjectAnimator;->initAnimation()V +HSPLandroid/animation/ObjectAnimator;->isInitialized()Z +HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->setAutoCancel(Z)V +HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/Animator; +HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/ValueAnimator; +HSPLandroid/animation/ObjectAnimator;->setFloatValues([F)V +HSPLandroid/animation/ObjectAnimator;->setIntValues([I)V +HSPLandroid/animation/ObjectAnimator;->setProperty(Landroid/util/Property;)V +HSPLandroid/animation/ObjectAnimator;->setPropertyName(Ljava/lang/String;)V +HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V +HSPLandroid/animation/ObjectAnimator;->shouldAutoCancel(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z +HSPLandroid/animation/ObjectAnimator;->start()V +HSPLandroid/animation/PathKeyframes$1;->(Landroid/animation/PathKeyframes;)V +HSPLandroid/animation/PathKeyframes$1;->getFloatValue(F)F +HSPLandroid/animation/PathKeyframes$2;->(Landroid/animation/PathKeyframes;)V +HSPLandroid/animation/PathKeyframes$2;->getFloatValue(F)F +HSPLandroid/animation/PathKeyframes$FloatKeyframesBase;->()V +HSPLandroid/animation/PathKeyframes$FloatKeyframesBase;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/PathKeyframes$SimpleKeyframes;->()V +HSPLandroid/animation/PathKeyframes$SimpleKeyframes;->(Landroid/animation/PathKeyframes$SimpleKeyframes;)V +HSPLandroid/animation/PathKeyframes$SimpleKeyframes;->clone()Landroid/animation/Keyframes; +HSPLandroid/animation/PathKeyframes;->(Landroid/graphics/Path;F)V +HSPLandroid/animation/PathKeyframes;->createXFloatKeyframes()Landroid/animation/Keyframes$FloatKeyframes; +HSPLandroid/animation/PathKeyframes;->createYFloatKeyframes()Landroid/animation/Keyframes$FloatKeyframes; +HSPLandroid/animation/PathKeyframes;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/PathKeyframes;->interpolate(FFF)F +HSPLandroid/animation/PathKeyframes;->interpolateInRange(FII)Landroid/graphics/PointF; +HSPLandroid/animation/PathKeyframes;->pointForIndex(I)Landroid/graphics/PointF; +HSPLandroid/animation/PropertyValuesHolder$1;->(Landroid/animation/PropertyValuesHolder;)V +HSPLandroid/animation/PropertyValuesHolder$1;->getValueAtFraction(F)Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Landroid/util/Property;[F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Ljava/lang/String;Landroid/animation/Keyframes$FloatKeyframes;)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Ljava/lang/String;[F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setFloatValues([F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setProperty(Landroid/util/Property;)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->(Landroid/util/Property;[I)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->(Ljava/lang/String;[I)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->calculateValue(F)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValues([I)V +HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setProperty(Landroid/util/Property;)V +HSPLandroid/animation/PropertyValuesHolder$PropertyValues$DataSource;->getValueAtFraction(F)Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder$PropertyValues;->()V +HSPLandroid/animation/PropertyValuesHolder;->-wrap0(Ljava/lang/Class;Ljava/lang/String;)J +HSPLandroid/animation/PropertyValuesHolder;->-wrap4(Ljava/lang/Object;JF)V +HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;)V +HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;Landroid/animation/PropertyValuesHolder;)V +HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;)V +HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;Landroid/animation/PropertyValuesHolder;)V +HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V +HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->convertBack(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/PropertyValuesHolder;->getMethodName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/animation/PropertyValuesHolder;->getPropertyFunction(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLandroid/animation/PropertyValuesHolder;->getPropertyName()Ljava/lang/String; +HSPLandroid/animation/PropertyValuesHolder;->getPropertyValues(Landroid/animation/PropertyValuesHolder$PropertyValues;)V +HSPLandroid/animation/PropertyValuesHolder;->getValueType()Ljava/lang/Class; +HSPLandroid/animation/PropertyValuesHolder;->init()V +HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->ofInt(Landroid/util/Property;[I)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->ofKeyframes(Ljava/lang/String;Landroid/animation/Keyframes;)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->ofObject(Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/PropertyValuesHolder;->setEvaluator(Landroid/animation/TypeEvaluator;)V +HSPLandroid/animation/PropertyValuesHolder;->setFloatValues([F)V +HSPLandroid/animation/PropertyValuesHolder;->setIntValues([I)V +HSPLandroid/animation/PropertyValuesHolder;->setObjectValues([Ljava/lang/Object;)V +HSPLandroid/animation/PropertyValuesHolder;->setProperty(Landroid/util/Property;)V +HSPLandroid/animation/PropertyValuesHolder;->setPropertyName(Ljava/lang/String;)V +HSPLandroid/animation/PropertyValuesHolder;->setupGetter(Ljava/lang/Class;)V +HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V +HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLandroid/animation/RectEvaluator;->()V +HSPLandroid/animation/RectEvaluator;->(Landroid/graphics/Rect;)V +HSPLandroid/animation/StateListAnimator$1;->(Landroid/animation/StateListAnimator;)V +HSPLandroid/animation/StateListAnimator$1;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->(Landroid/animation/StateListAnimator;)V +HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Landroid/animation/StateListAnimator; +HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Ljava/lang/Object; +HSPLandroid/animation/StateListAnimator$Tuple;->([ILandroid/animation/Animator;)V +HSPLandroid/animation/StateListAnimator$Tuple;->([ILandroid/animation/Animator;Landroid/animation/StateListAnimator$Tuple;)V +HSPLandroid/animation/StateListAnimator;->-get0(Landroid/animation/StateListAnimator;)Landroid/animation/Animator; +HSPLandroid/animation/StateListAnimator;->-set0(Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator$StateListAnimatorConstantState;)Landroid/animation/StateListAnimator$StateListAnimatorConstantState; +HSPLandroid/animation/StateListAnimator;->-set1(Landroid/animation/StateListAnimator;Landroid/animation/Animator;)Landroid/animation/Animator; +HSPLandroid/animation/StateListAnimator;->()V +HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V +HSPLandroid/animation/StateListAnimator;->appendChangingConfigurations(I)V +HSPLandroid/animation/StateListAnimator;->cancel()V +HSPLandroid/animation/StateListAnimator;->clearTarget()V +HSPLandroid/animation/StateListAnimator;->clone()Landroid/animation/StateListAnimator; +HSPLandroid/animation/StateListAnimator;->createConstantState()Landroid/content/res/ConstantState; +HSPLandroid/animation/StateListAnimator;->getChangingConfigurations()I +HSPLandroid/animation/StateListAnimator;->getTarget()Landroid/view/View; +HSPLandroid/animation/StateListAnimator;->initAnimatorListener()V +HSPLandroid/animation/StateListAnimator;->jumpToCurrentState()V +HSPLandroid/animation/StateListAnimator;->setChangingConfigurations(I)V +HSPLandroid/animation/StateListAnimator;->setState([I)V +HSPLandroid/animation/StateListAnimator;->setTarget(Landroid/view/View;)V +HSPLandroid/animation/StateListAnimator;->start(Landroid/animation/StateListAnimator$Tuple;)V +HSPLandroid/animation/TimeAnimator$TimeListener;->onTimeUpdate(Landroid/animation/TimeAnimator;JJ)V +HSPLandroid/animation/TimeAnimator;->()V +HSPLandroid/animation/TimeAnimator;->animateValue(F)V +HSPLandroid/animation/TimeAnimator;->initAnimation()V +HSPLandroid/animation/TimeAnimator;->setTimeListener(Landroid/animation/TimeAnimator$TimeListener;)V +HSPLandroid/animation/TimeInterpolator;->getInterpolation(F)F +HSPLandroid/animation/ValueAnimator$AnimatorUpdateListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HSPLandroid/animation/ValueAnimator;->()V +HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V +HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V +HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z +HSPLandroid/animation/ValueAnimator;->animateValue(F)V +HSPLandroid/animation/ValueAnimator;->cancel()V +HSPLandroid/animation/ValueAnimator;->clampFraction(F)F +HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator; +HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator; +HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z +HSPLandroid/animation/ValueAnimator;->end()V +HSPLandroid/animation/ValueAnimator;->endAnimation()V +HSPLandroid/animation/ValueAnimator;->getAnimatedFraction()F +HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/ValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler; +HSPLandroid/animation/ValueAnimator;->getCurrentAnimationsCount()I +HSPLandroid/animation/ValueAnimator;->getCurrentIteration(F)I +HSPLandroid/animation/ValueAnimator;->getCurrentIterationFraction(FZ)F +HSPLandroid/animation/ValueAnimator;->getDuration()J +HSPLandroid/animation/ValueAnimator;->getDurationScale()F +HSPLandroid/animation/ValueAnimator;->getInterpolator()Landroid/animation/TimeInterpolator; +HSPLandroid/animation/ValueAnimator;->getRepeatCount()I +HSPLandroid/animation/ValueAnimator;->getRepeatMode()I +HSPLandroid/animation/ValueAnimator;->getScaledDuration()J +HSPLandroid/animation/ValueAnimator;->getStartDelay()J +HSPLandroid/animation/ValueAnimator;->getTotalDuration()J +HSPLandroid/animation/ValueAnimator;->getValues()[Landroid/animation/PropertyValuesHolder; +HSPLandroid/animation/ValueAnimator;->initAnimation()V +HSPLandroid/animation/ValueAnimator;->isInitialized()Z +HSPLandroid/animation/ValueAnimator;->isPulsingInternal()Z +HSPLandroid/animation/ValueAnimator;->isRunning()Z +HSPLandroid/animation/ValueAnimator;->isStarted()Z +HSPLandroid/animation/ValueAnimator;->notifyStartListeners()V +HSPLandroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimator; +HSPLandroid/animation/ValueAnimator;->ofInt([I)Landroid/animation/ValueAnimator; +HSPLandroid/animation/ValueAnimator;->pause()V +HSPLandroid/animation/ValueAnimator;->pulseAnimationFrame(J)Z +HSPLandroid/animation/ValueAnimator;->removeAnimationCallback()V +HSPLandroid/animation/ValueAnimator;->reverse()V +HSPLandroid/animation/ValueAnimator;->setAllowRunningAsynchronously(Z)V +HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V +HSPLandroid/animation/ValueAnimator;->setCurrentPlayTime(J)V +HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/Animator; +HSPLandroid/animation/ValueAnimator;->setDuration(J)Landroid/animation/ValueAnimator; +HSPLandroid/animation/ValueAnimator;->setDurationScale(F)V +HSPLandroid/animation/ValueAnimator;->setEvaluator(Landroid/animation/TypeEvaluator;)V +HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V +HSPLandroid/animation/ValueAnimator;->setIntValues([I)V +HSPLandroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V +HSPLandroid/animation/ValueAnimator;->setObjectValues([Ljava/lang/Object;)V +HSPLandroid/animation/ValueAnimator;->setRepeatCount(I)V +HSPLandroid/animation/ValueAnimator;->setRepeatMode(I)V +HSPLandroid/animation/ValueAnimator;->setStartDelay(J)V +HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValuesHolder;)V +HSPLandroid/animation/ValueAnimator;->shouldPlayBackward(IZ)Z +HSPLandroid/animation/ValueAnimator;->skipToEndValue(Z)V +HSPLandroid/animation/ValueAnimator;->start()V +HSPLandroid/animation/ValueAnimator;->start(Z)V +HSPLandroid/animation/ValueAnimator;->startAnimation()V +HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU$1;->$m$0(Landroid/content/res/Configuration;)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU$1;->(Ljava/lang/Object;)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU$1;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU;->$m$0(Landroid/content/res/Configuration;I)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU;->(Ljava/lang/Object;)V +HSPLandroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU;->onConfigurationChanged(Landroid/content/res/Configuration;I)V +HSPLandroid/app/-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ;->$m$7()V +HSPLandroid/app/-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ;->(BLjava/lang/Object;)V +HSPLandroid/app/-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ;->run()V +HSPLandroid/app/-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI;->(Ljava/lang/Object;)V +HSPLandroid/app/-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo;->$m$0(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V +HSPLandroid/app/-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/app/-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo;->onMarshaled(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V +HSPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4;->$m$0(Ljava/lang/Object;)Z +HSPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4;->(Ljava/lang/Object;)V +HSPLandroid/app/-$Lambda$zUW-hE_1K7BzT3PNwqZSM6y8x_4;->test(Ljava/lang/Object;)Z +HSPLandroid/app/ActionBar$LayoutParams;->(II)V +HSPLandroid/app/ActionBar$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/app/ActionBar;->()V +HSPLandroid/app/ActionBar;->addOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V +HSPLandroid/app/ActionBar;->addTab(Landroid/app/ActionBar$Tab;)V +HSPLandroid/app/ActionBar;->addTab(Landroid/app/ActionBar$Tab;I)V +HSPLandroid/app/ActionBar;->addTab(Landroid/app/ActionBar$Tab;IZ)V +HSPLandroid/app/ActionBar;->addTab(Landroid/app/ActionBar$Tab;Z)V +HSPLandroid/app/ActionBar;->getCustomView()Landroid/view/View; +HSPLandroid/app/ActionBar;->getDisplayOptions()I +HSPLandroid/app/ActionBar;->getHeight()I +HSPLandroid/app/ActionBar;->getNavigationItemCount()I +HSPLandroid/app/ActionBar;->getNavigationMode()I +HSPLandroid/app/ActionBar;->getSelectedNavigationIndex()I +HSPLandroid/app/ActionBar;->getSelectedTab()Landroid/app/ActionBar$Tab; +HSPLandroid/app/ActionBar;->getSubtitle()Ljava/lang/CharSequence; +HSPLandroid/app/ActionBar;->getTabAt(I)Landroid/app/ActionBar$Tab; +HSPLandroid/app/ActionBar;->getTabCount()I +HSPLandroid/app/ActionBar;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/app/ActionBar;->hide()V +HSPLandroid/app/ActionBar;->invalidateOptionsMenu()Z +HSPLandroid/app/ActionBar;->isShowing()Z +HSPLandroid/app/ActionBar;->newTab()Landroid/app/ActionBar$Tab; +HSPLandroid/app/ActionBar;->removeAllTabs()V +HSPLandroid/app/ActionBar;->removeOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V +HSPLandroid/app/ActionBar;->removeTab(Landroid/app/ActionBar$Tab;)V +HSPLandroid/app/ActionBar;->removeTabAt(I)V +HSPLandroid/app/ActionBar;->selectTab(Landroid/app/ActionBar$Tab;)V +HSPLandroid/app/ActionBar;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/app/ActionBar;->setCustomView(I)V +HSPLandroid/app/ActionBar;->setCustomView(Landroid/view/View;)V +HSPLandroid/app/ActionBar;->setCustomView(Landroid/view/View;Landroid/app/ActionBar$LayoutParams;)V +HSPLandroid/app/ActionBar;->setDisplayHomeAsUpEnabled(Z)V +HSPLandroid/app/ActionBar;->setDisplayOptions(I)V +HSPLandroid/app/ActionBar;->setDisplayOptions(II)V +HSPLandroid/app/ActionBar;->setDisplayShowCustomEnabled(Z)V +HSPLandroid/app/ActionBar;->setDisplayShowHomeEnabled(Z)V +HSPLandroid/app/ActionBar;->setDisplayShowTitleEnabled(Z)V +HSPLandroid/app/ActionBar;->setDisplayUseLogoEnabled(Z)V +HSPLandroid/app/ActionBar;->setIcon(I)V +HSPLandroid/app/ActionBar;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/app/ActionBar;->setListNavigationCallbacks(Landroid/widget/SpinnerAdapter;Landroid/app/ActionBar$OnNavigationListener;)V +HSPLandroid/app/ActionBar;->setLogo(I)V +HSPLandroid/app/ActionBar;->setLogo(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/app/ActionBar;->setNavigationMode(I)V +HSPLandroid/app/ActionBar;->setSelectedNavigationItem(I)V +HSPLandroid/app/ActionBar;->setSubtitle(I)V +HSPLandroid/app/ActionBar;->setSubtitle(Ljava/lang/CharSequence;)V +HSPLandroid/app/ActionBar;->setTitle(I)V +HSPLandroid/app/ActionBar;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/app/ActionBar;->show()V +HSPLandroid/app/Activity$HostCallbacks;->(Landroid/app/Activity;)V +HSPLandroid/app/Activity$HostCallbacks;->onAttachFragment(Landroid/app/Fragment;)V +HSPLandroid/app/Activity$HostCallbacks;->onFindViewById(I)Landroid/view/View; +HSPLandroid/app/Activity$HostCallbacks;->onGetLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/app/Activity$HostCallbacks;->onGetWindowAnimations()I +HSPLandroid/app/Activity$HostCallbacks;->onHasView()Z +HSPLandroid/app/Activity$HostCallbacks;->onHasWindowAnimations()Z +HSPLandroid/app/Activity$HostCallbacks;->onInvalidateOptionsMenu()V +HSPLandroid/app/Activity$HostCallbacks;->onUseFragmentManagerInflaterFactory()Z +HSPLandroid/app/Activity;->()V +HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V +HSPLandroid/app/Activity;->autofillCallbackResetableStateAvailable()V +HSPLandroid/app/Activity;->dispatchActivityResult(Ljava/lang/String;IILandroid/content/Intent;)V +HSPLandroid/app/Activity;->dispatchEnterAnimationComplete()V +HSPLandroid/app/Activity;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/app/Activity;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/app/Activity;->findViewById(I)Landroid/view/View; +HSPLandroid/app/Activity;->getActionBar()Landroid/app/ActionBar; +HSPLandroid/app/Activity;->getActivityOptions()Landroid/app/ActivityOptions; +HSPLandroid/app/Activity;->getActivityToken()Landroid/os/IBinder; +HSPLandroid/app/Activity;->getApplication()Landroid/app/Application; +HSPLandroid/app/Activity;->getCallingActivity()Landroid/content/ComponentName; +HSPLandroid/app/Activity;->getComponentName()Landroid/content/ComponentName; +HSPLandroid/app/Activity;->getFragmentManager()Landroid/app/FragmentManager; +HSPLandroid/app/Activity;->getIntent()Landroid/content/Intent; +HSPLandroid/app/Activity;->getLastNonConfigurationInstance()Ljava/lang/Object; +HSPLandroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/app/Activity;->getLoaderManager()Landroid/app/LoaderManager; +HSPLandroid/app/Activity;->getMenuInflater()Landroid/view/MenuInflater; +HSPLandroid/app/Activity;->getNextAutofillId()I +HSPLandroid/app/Activity;->getReferrer()Landroid/net/Uri; +HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/app/Activity;->getTaskId()I +HSPLandroid/app/Activity;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/app/Activity;->getTitleColor()I +HSPLandroid/app/Activity;->getVolumeControlStream()I +HSPLandroid/app/Activity;->getWindow()Landroid/view/Window; +HSPLandroid/app/Activity;->getWindowManager()Landroid/view/WindowManager; +HSPLandroid/app/Activity;->getWindowStackId()I +HSPLandroid/app/Activity;->hasWindowFocus()Z +HSPLandroid/app/Activity;->initWindowDecorActionBar()V +HSPLandroid/app/Activity;->invalidateOptionsMenu()V +HSPLandroid/app/Activity;->isChangingConfigurations()Z +HSPLandroid/app/Activity;->isChild()Z +HSPLandroid/app/Activity;->isDestroyed()Z +HSPLandroid/app/Activity;->isFinishing()Z +HSPLandroid/app/Activity;->isInMultiWindowMode()Z +HSPLandroid/app/Activity;->isResumed()Z +HSPLandroid/app/Activity;->isTaskRoot()Z +HSPLandroid/app/Activity;->isTopOfTask()Z +HSPLandroid/app/Activity;->makeVisible()V +HSPLandroid/app/Activity;->onActivityResult(IILandroid/content/Intent;)V +HSPLandroid/app/Activity;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V +HSPLandroid/app/Activity;->onAttachFragment(Landroid/app/Fragment;)V +HSPLandroid/app/Activity;->onAttachedToWindow()V +HSPLandroid/app/Activity;->onContentChanged()V +HSPLandroid/app/Activity;->onCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->onCreateDescription()Ljava/lang/CharSequence; +HSPLandroid/app/Activity;->onCreateOptionsMenu(Landroid/view/Menu;)Z +HSPLandroid/app/Activity;->onCreatePanelMenu(ILandroid/view/Menu;)Z +HSPLandroid/app/Activity;->onCreatePanelView(I)Landroid/view/View; +HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/app/Activity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/app/Activity;->onEnterAnimationComplete()V +HSPLandroid/app/Activity;->onPause()V +HSPLandroid/app/Activity;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->onPostResume()V +HSPLandroid/app/Activity;->onPrepareOptionsMenu(Landroid/view/Menu;)Z +HSPLandroid/app/Activity;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z +HSPLandroid/app/Activity;->onProvideReferrer()Landroid/net/Uri; +HSPLandroid/app/Activity;->onRestoreInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->onResume()V +HSPLandroid/app/Activity;->onSaveInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->onStart()V +HSPLandroid/app/Activity;->onStateNotSaved()V +HSPLandroid/app/Activity;->onStop()V +HSPLandroid/app/Activity;->onTitleChanged(Ljava/lang/CharSequence;I)V +HSPLandroid/app/Activity;->onTrimMemory(I)V +HSPLandroid/app/Activity;->onUserInteraction()V +HSPLandroid/app/Activity;->onUserLeaveHint()V +HSPLandroid/app/Activity;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/app/Activity;->onWindowFocusChanged(Z)V +HSPLandroid/app/Activity;->performCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->performCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V +HSPLandroid/app/Activity;->performNewIntent(Landroid/content/Intent;)V +HSPLandroid/app/Activity;->performPause()V +HSPLandroid/app/Activity;->performRestart()V +HSPLandroid/app/Activity;->performRestoreInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->performResume()V +HSPLandroid/app/Activity;->performSaveInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->performStart()V +HSPLandroid/app/Activity;->performStop(Z)V +HSPLandroid/app/Activity;->performUserLeaving()V +HSPLandroid/app/Activity;->registerForContextMenu(Landroid/view/View;)V +HSPLandroid/app/Activity;->reportFullyDrawn()V +HSPLandroid/app/Activity;->requestWindowFeature(I)Z +HSPLandroid/app/Activity;->restoreHasCurrentPermissionRequest(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->restoreManagedDialogs(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V +HSPLandroid/app/Activity;->saveManagedDialogs(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->setActionBar(Landroid/widget/Toolbar;)V +HSPLandroid/app/Activity;->setContentView(I)V +HSPLandroid/app/Activity;->setContentView(Landroid/view/View;)V +HSPLandroid/app/Activity;->setDefaultKeyMode(I)V +HSPLandroid/app/Activity;->setDisablePreviewScreenshots(Z)V +HSPLandroid/app/Activity;->setIntent(Landroid/content/Intent;)V +HSPLandroid/app/Activity;->setRequestedOrientation(I)V +HSPLandroid/app/Activity;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/Activity;->setTheme(I)V +HSPLandroid/app/Activity;->setTitle(I)V +HSPLandroid/app/Activity;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/app/Activity;->setVolumeControlStream(I)V +HSPLandroid/app/Activity;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z +HSPLandroid/app/Activity;->startActivityForResult(Landroid/content/Intent;I)V +HSPLandroid/app/Activity;->startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V +HSPLandroid/app/Activity;->storeHasCurrentPermissionRequest(Landroid/os/Bundle;)V +HSPLandroid/app/Activity;->transferSpringboardActivityOptions(Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/app/ActivityManager$1;->()V +HSPLandroid/app/ActivityManager$1;->create()Landroid/app/IActivityManager; +HSPLandroid/app/ActivityManager$1;->create()Ljava/lang/Object; +HSPLandroid/app/ActivityManager$AppTask;->(Landroid/app/IAppTask;)V +HSPLandroid/app/ActivityManager$AppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; +HSPLandroid/app/ActivityManager$MemoryInfo$1;->()V +HSPLandroid/app/ActivityManager$MemoryInfo;->()V +HSPLandroid/app/ActivityManager$MemoryInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->()V +HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RecentTaskInfo; +HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$RecentTaskInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RecentTaskInfo;->(Landroid/os/Parcel;Landroid/app/ActivityManager$RecentTaskInfo;)V +HSPLandroid/app/ActivityManager$RecentTaskInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->()V +HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningAppProcessInfo; +HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->()V +HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->(Landroid/os/Parcel;Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RunningTaskInfo$1;->()V +HSPLandroid/app/ActivityManager$RunningTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningTaskInfo; +HSPLandroid/app/ActivityManager$RunningTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$RunningTaskInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$RunningTaskInfo;->(Landroid/os/Parcel;Landroid/app/ActivityManager$RunningTaskInfo;)V +HSPLandroid/app/ActivityManager$RunningTaskInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$StackId;->hasWindowDecor(I)Z +HSPLandroid/app/ActivityManager$StackId;->hasWindowShadow(I)Z +HSPLandroid/app/ActivityManager$TaskDescription$1;->()V +HSPLandroid/app/ActivityManager$TaskDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$TaskDescription; +HSPLandroid/app/ActivityManager$TaskDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ActivityManager$TaskDescription;->()V +HSPLandroid/app/ActivityManager$TaskDescription;->(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$TaskDescription;->(Landroid/os/Parcel;Landroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/ActivityManager$TaskDescription;->(Ljava/lang/String;Landroid/graphics/Bitmap;I)V +HSPLandroid/app/ActivityManager$TaskDescription;->(Ljava/lang/String;Landroid/graphics/Bitmap;Ljava/lang/String;IIII)V +HSPLandroid/app/ActivityManager$TaskDescription;->copyFromPreserveHiddenFields(Landroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/ActivityManager$TaskDescription;->getIcon()Landroid/graphics/Bitmap; +HSPLandroid/app/ActivityManager$TaskDescription;->getIconFilename()Ljava/lang/String; +HSPLandroid/app/ActivityManager$TaskDescription;->getPrimaryColor()I +HSPLandroid/app/ActivityManager$TaskDescription;->loadTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; +HSPLandroid/app/ActivityManager$TaskDescription;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/app/ActivityManager$TaskDescription;->setBackgroundColor(I)V +HSPLandroid/app/ActivityManager$TaskDescription;->setIcon(Landroid/graphics/Bitmap;)V +HSPLandroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V +HSPLandroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V +HSPLandroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V +HSPLandroid/app/ActivityManager$TaskDescription;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/ActivityManager;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/ActivityManager;->broadcastStickyIntent(Landroid/content/Intent;I)V +HSPLandroid/app/ActivityManager;->broadcastStickyIntent(Landroid/content/Intent;II)V +HSPLandroid/app/ActivityManager;->getAppTasks()Ljava/util/List; +HSPLandroid/app/ActivityManager;->getCurrentUser()I +HSPLandroid/app/ActivityManager;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +HSPLandroid/app/ActivityManager;->getLargeMemoryClass()I +HSPLandroid/app/ActivityManager;->getLauncherLargeIconSize()I +HSPLandroid/app/ActivityManager;->getLauncherLargeIconSizeInner(Landroid/content/Context;)I +HSPLandroid/app/ActivityManager;->getMaxRecentTasksStatic()I +HSPLandroid/app/ActivityManager;->getMemoryClass()I +HSPLandroid/app/ActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V +HSPLandroid/app/ActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HSPLandroid/app/ActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; +HSPLandroid/app/ActivityManager;->getRecentTasksForUser(III)Ljava/util/List; +HSPLandroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List; +HSPLandroid/app/ActivityManager;->getRunningTasks(I)Ljava/util/List; +HSPLandroid/app/ActivityManager;->getService()Landroid/app/IActivityManager; +HSPLandroid/app/ActivityManager;->isHighEndGfx()Z +HSPLandroid/app/ActivityManager;->isLowRamDevice()Z +HSPLandroid/app/ActivityManager;->isLowRamDeviceStatic()Z +HSPLandroid/app/ActivityManager;->isRunningInTestHarness()Z +HSPLandroid/app/ActivityManager;->isStartResultFatalError(I)Z +HSPLandroid/app/ActivityManager;->isUserAMonkey()Z +HSPLandroid/app/ActivityManager;->staticGetLargeMemoryClass()I +HSPLandroid/app/ActivityManager;->staticGetMemoryClass()I +HSPLandroid/app/ActivityManagerInternal;->()V +HSPLandroid/app/ActivityManagerInternal;->acquireSleepToken(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken; +HSPLandroid/app/ActivityManagerInternal;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/app/ActivityManagerInternal;->clearSavedANRState()V +HSPLandroid/app/ActivityManagerInternal;->getHomeActivityForUser(I)Landroid/content/ComponentName; +HSPLandroid/app/ActivityManagerInternal;->getTopVisibleActivities()Ljava/util/List; +HSPLandroid/app/ActivityManagerInternal;->getUidProcessState(I)I +HSPLandroid/app/ActivityManagerInternal;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;I)V +HSPLandroid/app/ActivityManagerInternal;->isSystemReady()Z +HSPLandroid/app/ActivityManagerInternal;->killForegroundAppsForUser(I)V +HSPLandroid/app/ActivityManagerInternal;->notifyAppTransitionCancelled()V +HSPLandroid/app/ActivityManagerInternal;->notifyAppTransitionFinished()V +HSPLandroid/app/ActivityManagerInternal;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;J)V +HSPLandroid/app/ActivityManagerInternal;->notifyDockedStackMinimizedChanged(Z)V +HSPLandroid/app/ActivityManagerInternal;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V +HSPLandroid/app/ActivityManagerInternal;->notifyKeyguardTrustedChanged()V +HSPLandroid/app/ActivityManagerInternal;->notifyNetworkPolicyRulesUpdated(IJ)V +HSPLandroid/app/ActivityManagerInternal;->onLocalVoiceInteractionStarted(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V +HSPLandroid/app/ActivityManagerInternal;->onUserRemoved(I)V +HSPLandroid/app/ActivityManagerInternal;->onWakefulnessChanged(I)V +HSPLandroid/app/ActivityManagerInternal;->saveANRState(Ljava/lang/String;)V +HSPLandroid/app/ActivityManagerInternal;->setDeviceIdleWhitelist([I)V +HSPLandroid/app/ActivityManagerInternal;->setFocusedActivity(Landroid/os/IBinder;)V +HSPLandroid/app/ActivityManagerInternal;->setHasOverlayUi(IZ)V +HSPLandroid/app/ActivityManagerInternal;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V +HSPLandroid/app/ActivityManagerInternal;->setVr2dDisplayId(I)V +HSPLandroid/app/ActivityManagerInternal;->startActivitiesAsPackage(Ljava/lang/String;I[Landroid/content/Intent;Landroid/os/Bundle;)I +HSPLandroid/app/ActivityManagerInternal;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I +HSPLandroid/app/ActivityManagerInternal;->updateDeviceIdleTempWhitelist([IIZ)V +HSPLandroid/app/ActivityManagerInternal;->updatePersistentConfigurationForUser(Landroid/content/res/Configuration;I)V +HSPLandroid/app/ActivityOptions$OnAnimationFinishedListener;->onAnimationFinished()V +HSPLandroid/app/ActivityOptions$OnAnimationStartedListener;->onAnimationStarted()V +HSPLandroid/app/ActivityOptions;->fromBundle(Landroid/os/Bundle;)Landroid/app/ActivityOptions; +HSPLandroid/app/ActivityThread$1;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$1;->run()V +HSPLandroid/app/ActivityThread$2;->(Landroid/app/ActivityThread;Landroid/app/IActivityManager;)V +HSPLandroid/app/ActivityThread$2;->run()V +HSPLandroid/app/ActivityThread$ActivityClientRecord;->-get0(Landroid/app/ActivityThread$ActivityClientRecord;)Landroid/content/res/Configuration; +HSPLandroid/app/ActivityThread$ActivityClientRecord;->()V +HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z +HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPreHoneycomb()Z +HSPLandroid/app/ActivityThread$ActivityClientRecord;->lambda$-android_app_ActivityThread$ActivityClientRecord_15507(Landroid/content/res/Configuration;I)V +HSPLandroid/app/ActivityThread$ActivityConfigChangeData;->(Landroid/os/IBinder;Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread$AppBindData;->()V +HSPLandroid/app/ActivityThread$ApplicationThread;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ApplicationThread;)V +HSPLandroid/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;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V +HSPLandroid/app/ActivityThread$ApplicationThread;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Landroid/os/ParcelFileDescriptor;Landroid/os/Debug$MemoryInfo;ZZZZZ[Ljava/lang/String;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZZ)V +HSPLandroid/app/ActivityThread$ApplicationThread;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleLaunchActivity(Landroid/content/Intent;Landroid/os/IBinder;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;ZZLandroid/app/ProfilerInfo;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->schedulePauseActivity(Landroid/os/IBinder;ZZIZ)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleSendResult(Landroid/os/IBinder;Ljava/util/List;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleSleeping(Landroid/os/IBinder;Z)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleStopActivity(Landroid/os/IBinder;ZI)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleStopService(Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleTrimMemory(I)V +HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->setCoreSettings(Landroid/os/Bundle;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V +HSPLandroid/app/ActivityThread$ApplicationThread;->updatePendingConfiguration(Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread$ApplicationThread;->updateProcessState(IZ)V +HSPLandroid/app/ActivityThread$BindServiceData;->()V +HSPLandroid/app/ActivityThread$ContextCleanupInfo;->()V +HSPLandroid/app/ActivityThread$CreateServiceData;->()V +HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$DropBoxReporter;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$EventLoggingReporter;->()V +HSPLandroid/app/ActivityThread$EventLoggingReporter;->(Landroid/app/ActivityThread$EventLoggingReporter;)V +HSPLandroid/app/ActivityThread$GcIdler;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$H;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$H;->(Landroid/app/ActivityThread;Landroid/app/ActivityThread$H;)V +HSPLandroid/app/ActivityThread$H;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/ActivityThread$Idler;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/ActivityThread$Idler;->(Landroid/app/ActivityThread;Landroid/app/ActivityThread$Idler;)V +HSPLandroid/app/ActivityThread$Idler;->queueIdle()Z +HSPLandroid/app/ActivityThread$Profiler;->()V +HSPLandroid/app/ActivityThread$ProviderClientRecord;->(Landroid/app/ActivityThread;[Ljava/lang/String;Landroid/content/IContentProvider;Landroid/content/ContentProvider;Landroid/app/ContentProviderHolder;)V +HSPLandroid/app/ActivityThread$ProviderKey;->(Ljava/lang/String;I)V +HSPLandroid/app/ActivityThread$ProviderKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I +HSPLandroid/app/ActivityThread$ProviderRefCount;->(Landroid/app/ContentProviderHolder;Landroid/app/ActivityThread$ProviderClientRecord;II)V +HSPLandroid/app/ActivityThread$ReceiverData;->(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZLandroid/os/IBinder;I)V +HSPLandroid/app/ActivityThread$RequestAssistContextExtras;->()V +HSPLandroid/app/ActivityThread$ResultData;->()V +HSPLandroid/app/ActivityThread$ServiceArgsData;->()V +HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$StopInfo;->()V +HSPLandroid/app/ActivityThread$StopInfo;->(Landroid/app/ActivityThread$StopInfo;)V +HSPLandroid/app/ActivityThread$StopInfo;->run()V +HSPLandroid/app/ActivityThread;->-get1(Landroid/app/ActivityThread;)Landroid/app/ResourcesManager; +HSPLandroid/app/ActivityThread;->-wrap0(Landroid/app/ActivityThread;)I +HSPLandroid/app/ActivityThread;->-wrap1(Landroid/app/ActivityThread;Landroid/app/ActivityThread$AppBindData;)V +HSPLandroid/app/ActivityThread;->-wrap10(Landroid/app/ActivityThread;Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread;->-wrap11(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;Ljava/lang/String;)V +HSPLandroid/app/ActivityThread;->-wrap15(Landroid/app/ActivityThread;Landroid/os/IBinder;ZZIZI)V +HSPLandroid/app/ActivityThread;->-wrap17(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ReceiverData;)V +HSPLandroid/app/ActivityThread;->-wrap19(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ResultData;)V +HSPLandroid/app/ActivityThread;->-wrap2(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V +HSPLandroid/app/ActivityThread;->-wrap20(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ServiceArgsData;)V +HSPLandroid/app/ActivityThread;->-wrap21(Landroid/app/ActivityThread;Landroid/os/Bundle;)V +HSPLandroid/app/ActivityThread;->-wrap22(Landroid/app/ActivityThread;Landroid/os/IBinder;Z)V +HSPLandroid/app/ActivityThread;->-wrap24(Landroid/app/ActivityThread;Landroid/os/IBinder;ZII)V +HSPLandroid/app/ActivityThread;->-wrap26(Landroid/app/ActivityThread;Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread;->-wrap27(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V +HSPLandroid/app/ActivityThread;->-wrap30(Landroid/app/ActivityThread;Ljava/io/FileDescriptor;)V +HSPLandroid/app/ActivityThread;->-wrap31(Landroid/app/ActivityThread;ILjava/lang/Object;)V +HSPLandroid/app/ActivityThread;->-wrap32(Landroid/app/ActivityThread;ILjava/lang/Object;I)V +HSPLandroid/app/ActivityThread;->-wrap35(Landroid/app/ActivityThread;ILjava/lang/Object;III)V +HSPLandroid/app/ActivityThread;->-wrap4(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateServiceData;)V +HSPLandroid/app/ActivityThread;->()V +HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; +HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; +HSPLandroid/app/ActivityThread;->applyCompatConfiguration(I)Landroid/content/res/Configuration; +HSPLandroid/app/ActivityThread;->applyConfigCompatMainThread(ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Configuration; +HSPLandroid/app/ActivityThread;->attach(Z)V +HSPLandroid/app/ActivityThread;->callCallActivityOnSaveInstanceState(Landroid/app/ActivityThread$ActivityClientRecord;)V +HSPLandroid/app/ActivityThread;->checkAndBlockForNetworkAccess()V +HSPLandroid/app/ActivityThread;->checkAndUpdateLifecycleSeq(ILandroid/app/ActivityThread$ActivityClientRecord;Ljava/lang/String;)Z +HSPLandroid/app/ActivityThread;->cleanUpPendingRemoveWindows(Landroid/app/ActivityThread$ActivityClientRecord;Z)V +HSPLandroid/app/ActivityThread;->collectComponentCallbacks(ZLandroid/content/res/Configuration;)Ljava/util/ArrayList; +HSPLandroid/app/ActivityThread;->completeRemoveProvider(Landroid/app/ActivityThread$ProviderRefCount;)V +HSPLandroid/app/ActivityThread;->createBaseContextForActivity(Landroid/app/ActivityThread$ActivityClientRecord;)Landroid/app/ContextImpl; +HSPLandroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread; +HSPLandroid/app/ActivityThread;->currentApplication()Landroid/app/Application; +HSPLandroid/app/ActivityThread;->currentOpPackageName()Ljava/lang/String; +HSPLandroid/app/ActivityThread;->currentPackageName()Ljava/lang/String; +HSPLandroid/app/ActivityThread;->deliverNewIntents(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V +HSPLandroid/app/ActivityThread;->deliverResults(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V +HSPLandroid/app/ActivityThread;->dumpMemInfoTable(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZILjava/lang/String;JJJJJJ)V +HSPLandroid/app/ActivityThread;->ensureJitEnabled()V +HSPLandroid/app/ActivityThread;->freeTextLayoutCachesIfNeeded(I)V +HSPLandroid/app/ActivityThread;->getApplication()Landroid/app/Application; +HSPLandroid/app/ActivityThread;->getApplicationThread()Landroid/app/ActivityThread$ApplicationThread; +HSPLandroid/app/ActivityThread;->getHandler()Landroid/os/Handler; +HSPLandroid/app/ActivityThread;->getInstrumentation()Landroid/app/Instrumentation; +HSPLandroid/app/ActivityThread;->getInstrumentationLibrary(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/InstrumentationInfo;)Ljava/lang/String; +HSPLandroid/app/ActivityThread;->getIntCoreSetting(Ljava/lang/String;I)I +HSPLandroid/app/ActivityThread;->getIntentBeingBroadcast()Landroid/content/Intent; +HSPLandroid/app/ActivityThread;->getLifecycleSeq()I +HSPLandroid/app/ActivityThread;->getLooper()Landroid/os/Looper; +HSPLandroid/app/ActivityThread;->getPackageInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)Landroid/app/LoadedApk; +HSPLandroid/app/ActivityThread;->getPackageInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;ZZZ)Landroid/app/LoadedApk; +HSPLandroid/app/ActivityThread;->getPackageInfo(Ljava/lang/String;Landroid/content/res/CompatibilityInfo;II)Landroid/app/LoadedApk; +HSPLandroid/app/ActivityThread;->getPackageInfoNoCheck(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)Landroid/app/LoadedApk; +HSPLandroid/app/ActivityThread;->getPackageManager()Landroid/content/pm/IPackageManager; +HSPLandroid/app/ActivityThread;->getSystemContext()Landroid/app/ContextImpl; +HSPLandroid/app/ActivityThread;->getSystemUiContext()Landroid/app/ContextImpl; +HSPLandroid/app/ActivityThread;->getTopLevelResources(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/LoadedApk;)Landroid/content/res/Resources; +HSPLandroid/app/ActivityThread;->handleActivityConfigurationChanged(Landroid/app/ActivityThread$ActivityConfigChangeData;I)V +HSPLandroid/app/ActivityThread;->handleBindApplication(Landroid/app/ActivityThread$AppBindData;)V +HSPLandroid/app/ActivityThread;->handleBindService(Landroid/app/ActivityThread$BindServiceData;)V +HSPLandroid/app/ActivityThread;->handleConfigurationChanged(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/app/ActivityThread;->handleCreateService(Landroid/app/ActivityThread$CreateServiceData;)V +HSPLandroid/app/ActivityThread;->handleEnterAnimationComplete(Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread;->handleLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;Ljava/lang/String;)V +HSPLandroid/app/ActivityThread;->handlePauseActivity(Landroid/os/IBinder;ZZIZI)V +HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V +HSPLandroid/app/ActivityThread;->handleRequestAssistContextExtras(Landroid/app/ActivityThread$RequestAssistContextExtras;)V +HSPLandroid/app/ActivityThread;->handleResumeActivity(Landroid/os/IBinder;ZZZILjava/lang/String;)V +HSPLandroid/app/ActivityThread;->handleSendResult(Landroid/app/ActivityThread$ResultData;)V +HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V +HSPLandroid/app/ActivityThread;->handleSetCoreSettings(Landroid/os/Bundle;)V +HSPLandroid/app/ActivityThread;->handleSleeping(Landroid/os/IBinder;Z)V +HSPLandroid/app/ActivityThread;->handleStopActivity(Landroid/os/IBinder;ZII)V +HSPLandroid/app/ActivityThread;->handleStopService(Landroid/os/IBinder;)V +HSPLandroid/app/ActivityThread;->handleTrimMemory(I)V +HSPLandroid/app/ActivityThread;->handleUnbindService(Landroid/app/ActivityThread$BindServiceData;)V +HSPLandroid/app/ActivityThread;->incProviderRefLocked(Landroid/app/ActivityThread$ProviderRefCount;Z)V +HSPLandroid/app/ActivityThread;->installContentProviders(Landroid/content/Context;Ljava/util/List;)V +HSPLandroid/app/ActivityThread;->installProvider(Landroid/content/Context;Landroid/app/ContentProviderHolder;Landroid/content/pm/ProviderInfo;ZZZ)Landroid/app/ContentProviderHolder; +HSPLandroid/app/ActivityThread;->installProviderAuthoritiesLocked(Landroid/content/IContentProvider;Landroid/content/ContentProvider;Landroid/app/ContentProviderHolder;)Landroid/app/ActivityThread$ProviderClientRecord; +HSPLandroid/app/ActivityThread;->isSystem()Z +HSPLandroid/app/ActivityThread;->lambda$-android_app_ActivityThread_278860(Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V +HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V +HSPLandroid/app/ActivityThread;->performActivityConfigurationChanged(Landroid/app/Activity;Landroid/content/res/Configuration;Landroid/content/res/Configuration;IZ)Landroid/content/res/Configuration; +HSPLandroid/app/ActivityThread;->performConfigurationChangedForActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/res/Configuration;)V +HSPLandroid/app/ActivityThread;->performConfigurationChangedForActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/res/Configuration;IZ)Landroid/content/res/Configuration; +HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity; +HSPLandroid/app/ActivityThread;->performPauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZZLjava/lang/String;)Landroid/os/Bundle; +HSPLandroid/app/ActivityThread;->performPauseActivity(Landroid/os/IBinder;ZZLjava/lang/String;)Landroid/os/Bundle; +HSPLandroid/app/ActivityThread;->performPauseActivityIfNeeded(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/lang/String;)V +HSPLandroid/app/ActivityThread;->performResumeActivity(Landroid/os/IBinder;ZLjava/lang/String;)Landroid/app/ActivityThread$ActivityClientRecord; +HSPLandroid/app/ActivityThread;->performStopActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/ActivityThread$StopInfo;ZZLjava/lang/String;)V +HSPLandroid/app/ActivityThread;->performUserLeavingActivity(Landroid/app/ActivityThread$ActivityClientRecord;)V +HSPLandroid/app/ActivityThread;->printRow(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z +HSPLandroid/app/ActivityThread;->reportSizeConfigurations(Landroid/app/ActivityThread$ActivityClientRecord;)V +HSPLandroid/app/ActivityThread;->scheduleContextCleanup(Landroid/app/ContextImpl;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;)V +HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;I)V +HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;III)V +HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;IIZ)V +HSPLandroid/app/ActivityThread;->setupGraphicsSupport(Landroid/content/Context;)V +HSPLandroid/app/ActivityThread;->systemMain()Landroid/app/ActivityThread; +HSPLandroid/app/ActivityThread;->unscheduleGcIdler()V +HSPLandroid/app/ActivityThread;->updateDefaultDensity()V +HSPLandroid/app/ActivityThread;->updateLocaleListFromAppContext(Landroid/content/Context;Landroid/os/LocaleList;)V +HSPLandroid/app/ActivityThread;->updateVisibility(Landroid/app/ActivityThread$ActivityClientRecord;Z)V +HSPLandroid/app/ActivityTransitionState;->()V +HSPLandroid/app/ActivityTransitionState;->enterReady(Landroid/app/Activity;)V +HSPLandroid/app/ActivityTransitionState;->onResume(Landroid/app/Activity;Z)V +HSPLandroid/app/ActivityTransitionState;->onStop()V +HSPLandroid/app/ActivityTransitionState;->readState(Landroid/os/Bundle;)V +HSPLandroid/app/ActivityTransitionState;->restoreExitedViews()V +HSPLandroid/app/ActivityTransitionState;->restoreReenteringViews()V +HSPLandroid/app/ActivityTransitionState;->saveState(Landroid/os/Bundle;)V +HSPLandroid/app/ActivityTransitionState;->setEnterActivityOptions(Landroid/app/Activity;Landroid/app/ActivityOptions;)V +HSPLandroid/app/AlarmManager$OnAlarmListener;->onAlarm()V +HSPLandroid/app/AlarmManager;->(Landroid/app/IAlarmManager;Landroid/content/Context;)V +HSPLandroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V +HSPLandroid/app/AlarmManager;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HSPLandroid/app/AlarmManager;->legacyExactLength()J +HSPLandroid/app/AlarmManager;->set(IJJJLandroid/app/PendingIntent;Landroid/os/WorkSource;)V +HSPLandroid/app/AlarmManager;->set(IJLandroid/app/PendingIntent;)V +HSPLandroid/app/AlarmManager;->setExactAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V +HSPLandroid/app/AlarmManager;->setImpl(IJJJILandroid/app/PendingIntent;Landroid/app/AlarmManager$OnAlarmListener;Ljava/lang/String;Landroid/os/Handler;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V +HSPLandroid/app/AlarmManager;->setInexactRepeating(IJJLandroid/app/PendingIntent;)V +HSPLandroid/app/AlertDialog$Builder;->(Landroid/content/Context;)V +HSPLandroid/app/AlertDialog$Builder;->(Landroid/content/Context;I)V +HSPLandroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog; +HSPLandroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; +HSPLandroid/app/AlertDialog$Builder;->setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; +HSPLandroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; +HSPLandroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder; +HSPLandroid/app/AlertDialog$Builder;->setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder; +HSPLandroid/app/AlertDialog;->-get0(Landroid/app/AlertDialog;)Lcom/android/internal/app/AlertController; +HSPLandroid/app/AlertDialog;->(Landroid/content/Context;IZ)V +HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I +HSPLandroid/app/AppGlobals;->getInitialApplication()Landroid/app/Application; +HSPLandroid/app/AppGlobals;->getIntCoreSetting(Ljava/lang/String;I)I +HSPLandroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager; +HSPLandroid/app/AppOpsManager$1;->(Landroid/app/AppOpsManager;Landroid/app/AppOpsManager$OnOpChangedListener;)V +HSPLandroid/app/AppOpsManager$OnOpChangedListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/AppOpsManager$OpEntry$1;->()V +HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$OpEntry; +HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/AppOpsManager$OpEntry;->(Landroid/os/Parcel;)V +HSPLandroid/app/AppOpsManager$OpEntry;->getOp()I +HSPLandroid/app/AppOpsManager$OpEntry;->isRunning()Z +HSPLandroid/app/AppOpsManager$PackageOps$1;->()V +HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$PackageOps; +HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/AppOpsManager$PackageOps;->(Landroid/os/Parcel;)V +HSPLandroid/app/AppOpsManager$PackageOps;->getOps()Ljava/util/List; +HSPLandroid/app/AppOpsManager;->(Landroid/content/Context;Lcom/android/internal/app/IAppOpsService;)V +HSPLandroid/app/AppOpsManager;->checkOp(IILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->checkOpNoThrow(IILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->checkPackage(ILjava/lang/String;)V +HSPLandroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List; +HSPLandroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder; +HSPLandroid/app/AppOpsManager;->noteOp(IILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->noteProxyOp(ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->noteProxyOp(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->opToDefaultMode(I)I +HSPLandroid/app/AppOpsManager;->opToSwitch(I)I +HSPLandroid/app/AppOpsManager;->permissionToOp(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I +HSPLandroid/app/AppOpsManager;->startOpNoThrow(IILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->startOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/AppOpsManager;->startWatchingMode(ILjava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V +HSPLandroid/app/AppOpsManager;->startWatchingMode(Ljava/lang/String;Ljava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V +HSPLandroid/app/AppOpsManager;->strOpToOp(Ljava/lang/String;)I +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityDestroyed(Landroid/app/Activity;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPaused(Landroid/app/Activity;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityStopped(Landroid/app/Activity;)V +HSPLandroid/app/Application;->()V +HSPLandroid/app/Application;->attach(Landroid/content/Context;)V +HSPLandroid/app/Application;->collectActivityLifecycleCallbacks()[Ljava/lang/Object; +HSPLandroid/app/Application;->collectComponentCallbacks()[Ljava/lang/Object; +HSPLandroid/app/Application;->dispatchActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Application;->dispatchActivityPaused(Landroid/app/Activity;)V +HSPLandroid/app/Application;->dispatchActivityResumed(Landroid/app/Activity;)V +HSPLandroid/app/Application;->dispatchActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Application;->dispatchActivityStarted(Landroid/app/Activity;)V +HSPLandroid/app/Application;->dispatchActivityStopped(Landroid/app/Activity;)V +HSPLandroid/app/Application;->onCreate()V +HSPLandroid/app/Application;->onTrimMemory(I)V +HSPLandroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V +HSPLandroid/app/Application;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V +HSPLandroid/app/Application;->unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V +HSPLandroid/app/ApplicationErrorReport$CrashInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/ApplicationErrorReport$CrashInfo;->(Ljava/lang/Throwable;)V +HSPLandroid/app/ApplicationErrorReport$CrashInfo;->appendStackTrace(Ljava/lang/String;)V +HSPLandroid/app/ApplicationErrorReport$CrashInfo;->sanitizeString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/ApplicationErrorReport$CrashInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/ApplicationLoaders;->()V +HSPLandroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLandroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLandroid/app/ApplicationLoaders;->getDefault()Landroid/app/ApplicationLoaders; +HSPLandroid/app/ApplicationPackageManager$MoveCallbackDelegate;->(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Looper;)V +HSPLandroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->(Landroid/app/ApplicationPackageManager;Landroid/content/pm/PackageManager$OnPermissionsChangedListener;Landroid/os/Looper;)V +HSPLandroid/app/ApplicationPackageManager$ResourceName;->(Ljava/lang/String;I)V +HSPLandroid/app/ApplicationPackageManager$ResourceName;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/ApplicationPackageManager$ResourceName;->hashCode()I +HSPLandroid/app/ApplicationPackageManager;->(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V +HSPLandroid/app/ApplicationPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V +HSPLandroid/app/ApplicationPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/ApplicationPackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/ApplicationPackageManager;->configurationChanged()V +HSPLandroid/app/ApplicationPackageManager;->getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/app/ApplicationPackageManager;->getApplicationEnabledSetting(Ljava/lang/String;)I +HSPLandroid/app/ApplicationPackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/ApplicationPackageManager;->getApplicationInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/ApplicationPackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; +HSPLandroid/app/ApplicationPackageManager;->getCachedIcon(Landroid/app/ApplicationPackageManager$ResourceName;)Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->getCachedString(Landroid/app/ApplicationPackageManager$ResourceName;)Ljava/lang/CharSequence; +HSPLandroid/app/ApplicationPackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;)I +HSPLandroid/app/ApplicationPackageManager;->getDefaultActivityIcon()Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->getInstalledPackages(I)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; +HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/app/ApplicationPackageManager;->getNameForUid(I)Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HSPLandroid/app/ApplicationPackageManager;->getPackageInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; +HSPLandroid/app/ApplicationPackageManager;->getPackageInstaller()Landroid/content/pm/PackageInstaller; +HSPLandroid/app/ApplicationPackageManager;->getPackageUid(Ljava/lang/String;I)I +HSPLandroid/app/ApplicationPackageManager;->getPackageUidAsUser(Ljava/lang/String;II)I +HSPLandroid/app/ApplicationPackageManager;->getPackagesForUid(I)[Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; +HSPLandroid/app/ApplicationPackageManager;->getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo; +HSPLandroid/app/ApplicationPackageManager;->getSystemSharedLibraryNames()[Ljava/lang/String; +HSPLandroid/app/ApplicationPackageManager;->getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; +HSPLandroid/app/ApplicationPackageManager;->getUserBadgedIcon(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->getUserBadgedLabel(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence; +HSPLandroid/app/ApplicationPackageManager;->getUserManager()Landroid/os/UserManager; +HSPLandroid/app/ApplicationPackageManager;->getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser; +HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;)Z +HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;I)Z +HSPLandroid/app/ApplicationPackageManager;->isManagedProfile(I)Z +HSPLandroid/app/ApplicationPackageManager;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/ApplicationPackageManager;->isSafeMode()Z +HSPLandroid/app/ApplicationPackageManager;->loadItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->loadUnbadgedItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/app/ApplicationPackageManager;->maybeAdjustApplicationInfo(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/ApplicationPackageManager;->putCachedIcon(Landroid/app/ApplicationPackageManager$ResourceName;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/app/ApplicationPackageManager;->putCachedString(Landroid/app/ApplicationPackageManager$ResourceName;Ljava/lang/CharSequence;)V +HSPLandroid/app/ApplicationPackageManager;->queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryBroadcastReceiversAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProvidersAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->queryIntentServicesAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/app/ApplicationPackageManager;->registerMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Handler;)V +HSPLandroid/app/ApplicationPackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/app/ApplicationPackageManager;->resolveActivityAsUser(Landroid/content/Intent;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/app/ApplicationPackageManager;->resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo; +HSPLandroid/app/ApplicationPackageManager;->resolveContentProviderAsUser(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; +HSPLandroid/app/ApplicationPackageManager;->resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/app/ApplicationPackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V +HSPLandroid/app/ApplicationPackageManager;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z +HSPLandroid/app/BackStackRecord$Op;->(ILandroid/app/Fragment;)V +HSPLandroid/app/BackStackRecord;->(Landroid/app/FragmentManagerImpl;)V +HSPLandroid/app/BackStackRecord;->add(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->addOp(Landroid/app/BackStackRecord$Op;)V +HSPLandroid/app/BackStackRecord;->attach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->bumpBackStackNesting(I)V +HSPLandroid/app/BackStackRecord;->commit()I +HSPLandroid/app/BackStackRecord;->commitAllowingStateLoss()I +HSPLandroid/app/BackStackRecord;->commitInternal(Z)I +HSPLandroid/app/BackStackRecord;->doAddOp(ILandroid/app/Fragment;Ljava/lang/String;I)V +HSPLandroid/app/BackStackRecord;->executeOps()V +HSPLandroid/app/BackStackRecord;->expandOps(Ljava/util/ArrayList;Landroid/app/Fragment;)Landroid/app/Fragment; +HSPLandroid/app/BackStackRecord;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroid/app/BackStackRecord;->interactsWith(I)Z +HSPLandroid/app/BackStackRecord;->isEmpty()Z +HSPLandroid/app/BackStackRecord;->isFragmentPostponed(Landroid/app/BackStackRecord$Op;)Z +HSPLandroid/app/BackStackRecord;->isPostponed()Z +HSPLandroid/app/BackStackRecord;->replace(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->runOnCommitRunnables()V +HSPLandroid/app/BackStackRecord;->setBreadCrumbTitle(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackRecord;->setTransition(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/BackStackState$1;->()V +HSPLandroid/app/ContentProviderHolder$1;->()V +HSPLandroid/app/ContentProviderHolder$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ContentProviderHolder; +HSPLandroid/app/ContentProviderHolder$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ContentProviderHolder;->(Landroid/content/pm/ProviderInfo;)V +HSPLandroid/app/ContentProviderHolder;->(Landroid/os/Parcel;)V +HSPLandroid/app/ContentProviderHolder;->(Landroid/os/Parcel;Landroid/app/ContentProviderHolder;)V +HSPLandroid/app/ContentProviderHolder;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/ContextImpl$1;->(Ljava/lang/String;)V +HSPLandroid/app/ContextImpl$1;->accept(Ljava/io/File;Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/os/UserHandle;)V +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I +HSPLandroid/app/ContextImpl;->(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;)V +HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z +HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z +HSPLandroid/app/ContextImpl;->bindServiceCommon(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z +HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z +HSPLandroid/app/ContextImpl;->checkCallingOrSelfPermission(Ljava/lang/String;)I +HSPLandroid/app/ContextImpl;->checkMode(I)V +HSPLandroid/app/ContextImpl;->checkPermission(Ljava/lang/String;II)I +HSPLandroid/app/ContextImpl;->checkPermission(Ljava/lang/String;IILandroid/os/IBinder;)I +HSPLandroid/app/ContextImpl;->checkSelfPermission(Ljava/lang/String;)I +HSPLandroid/app/ContextImpl;->createActivityContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;ILandroid/content/res/Configuration;)Landroid/app/ContextImpl; +HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;)Landroid/app/ContextImpl; +HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createCredentialProtectedStorageContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createDeviceProtectedStorageContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context; +HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources; +HSPLandroid/app/ContextImpl;->createSystemContext(Landroid/app/ActivityThread;)Landroid/app/ContextImpl; +HSPLandroid/app/ContextImpl;->createSystemUiContext(Landroid/app/ContextImpl;)Landroid/app/ContextImpl; +HSPLandroid/app/ContextImpl;->databaseList()[Ljava/lang/String; +HSPLandroid/app/ContextImpl;->deleteDatabase(Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->deleteFile(Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->enforce(Ljava/lang/String;IZILjava/lang/String;)V +HSPLandroid/app/ContextImpl;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->ensurePrivateCacheDirExists(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;IILjava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->fileList()[Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getActivityToken()Landroid/os/IBinder; +HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/ContextImpl;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/app/ContextImpl;->getBasePackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getCacheDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getClassLoader()Ljava/lang/ClassLoader; +HSPLandroid/app/ContextImpl;->getCodeCacheDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getContentResolver()Landroid/content/ContentResolver; +HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDatabasesDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDir(Ljava/lang/String;I)Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDisplay()Landroid/view/Display; +HSPLandroid/app/ContextImpl;->getDisplayAdjustments(I)Landroid/view/DisplayAdjustments; +HSPLandroid/app/ContextImpl;->getExternalCacheDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getExternalCacheDirs()[Ljava/io/File; +HSPLandroid/app/ContextImpl;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->getFilesDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getImpl(Landroid/content/Context;)Landroid/app/ContextImpl; +HSPLandroid/app/ContextImpl;->getMainLooper()Landroid/os/Looper; +HSPLandroid/app/ContextImpl;->getNoBackupFilesDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->getPackageCodePath()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getPackageManager()Landroid/content/pm/PackageManager; +HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getPreferencesDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getReceiverRestrictedContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->getResources()Landroid/content/res/Resources; +HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; +HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; +HSPLandroid/app/ContextImpl;->getSharedPreferencesCacheLocked()Landroid/util/ArrayMap; +HSPLandroid/app/ContextImpl;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/app/ContextImpl;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/app/ContextImpl;->getThemeResId()I +HSPLandroid/app/ContextImpl;->getUserId()I +HSPLandroid/app/ContextImpl;->initializeTheme()V +HSPLandroid/app/ContextImpl;->isCredentialProtectedStorage()Z +HSPLandroid/app/ContextImpl;->isDeviceProtectedStorage()Z +HSPLandroid/app/ContextImpl;->isRestricted()Z +HSPLandroid/app/ContextImpl;->makeFilename(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/ContextImpl;->moveDatabaseFrom(Landroid/content/Context;Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->moveFiles(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)I +HSPLandroid/app/ContextImpl;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z +HSPLandroid/app/ContextImpl;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream; +HSPLandroid/app/ContextImpl;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream; +HSPLandroid/app/ContextImpl;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/app/ContextImpl;->performFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; +HSPLandroid/app/ContextImpl;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; +HSPLandroid/app/ContextImpl;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; +HSPLandroid/app/ContextImpl;->registerReceiverInternal(Landroid/content/BroadcastReceiver;ILandroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;Landroid/content/Context;I)Landroid/content/Intent; +HSPLandroid/app/ContextImpl;->scheduleFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;)V +HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;I)V +HSPLandroid/app/ContextImpl;->sendStickyBroadcast(Landroid/content/Intent;)V +HSPLandroid/app/ContextImpl;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HSPLandroid/app/ContextImpl;->setFilePermissionsFromMode(Ljava/lang/String;II)V +HSPLandroid/app/ContextImpl;->setOuterContext(Landroid/content/Context;)V +HSPLandroid/app/ContextImpl;->setResources(Landroid/content/res/Resources;)V +HSPLandroid/app/ContextImpl;->setTheme(I)V +HSPLandroid/app/ContextImpl;->startActivity(Landroid/content/Intent;)V +HSPLandroid/app/ContextImpl;->startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V +HSPLandroid/app/ContextImpl;->startService(Landroid/content/Intent;)Landroid/content/ComponentName; +HSPLandroid/app/ContextImpl;->startServiceCommon(Landroid/content/Intent;ZLandroid/os/UserHandle;)Landroid/content/ComponentName; +HSPLandroid/app/ContextImpl;->stopService(Landroid/content/Intent;)Z +HSPLandroid/app/ContextImpl;->stopServiceCommon(Landroid/content/Intent;Landroid/os/UserHandle;)Z +HSPLandroid/app/ContextImpl;->unbindService(Landroid/content/ServiceConnection;)V +HSPLandroid/app/ContextImpl;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V +HSPLandroid/app/ContextImpl;->validateServiceIntent(Landroid/content/Intent;)V +HSPLandroid/app/ContextImpl;->warnIfCallingFromSystemProcess()V +HSPLandroid/app/DexLoadReporter;->()V +HSPLandroid/app/DexLoadReporter;->getInstance()Landroid/app/DexLoadReporter; +HSPLandroid/app/DexLoadReporter;->isSecondaryDexFile(Ljava/lang/String;[Ljava/lang/String;)Z +HSPLandroid/app/DexLoadReporter;->notifyPackageManager(Ljava/util/List;Ljava/util/List;)V +HSPLandroid/app/DexLoadReporter;->registerAppDataDir(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/DexLoadReporter;->registerSecondaryDexForProfiling(Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/app/DexLoadReporter;->registerSecondaryDexForProfiling([Ljava/lang/String;)V +HSPLandroid/app/DexLoadReporter;->report(Ljava/util/List;Ljava/util/List;)V +HSPLandroid/app/Dialog$ListenersHandler;->(Landroid/app/Dialog;)V +HSPLandroid/app/Dialog;->(Landroid/content/Context;)V +HSPLandroid/app/Dialog;->(Landroid/content/Context;I)V +HSPLandroid/app/Dialog;->(Landroid/content/Context;IZ)V +HSPLandroid/app/Dialog;->findViewById(I)Landroid/view/View; +HSPLandroid/app/Dialog;->getContext()Landroid/content/Context; +HSPLandroid/app/Dialog;->getLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/app/Dialog;->getWindow()Landroid/view/Window; +HSPLandroid/app/Dialog;->onContentChanged()V +HSPLandroid/app/Dialog;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/app/Dialog;->setCancelable(Z)V +HSPLandroid/app/Dialog;->setCanceledOnTouchOutside(Z)V +HSPLandroid/app/Dialog;->setContentView(I)V +HSPLandroid/app/Dialog;->setContentView(Landroid/view/View;)V +HSPLandroid/app/Dialog;->setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)V +HSPLandroid/app/Dialog;->setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V +HSPLandroid/app/Dialog;->setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V +HSPLandroid/app/Dialog;->updateWindowForCancelable()V +HSPLandroid/app/DialogFragment;->()V +HSPLandroid/app/DownloadManager;->(Landroid/content/Context;)V +HSPLandroid/app/Fragment$1;->(Landroid/app/Fragment;)V +HSPLandroid/app/Fragment$1;->onFindViewById(I)Landroid/view/View; +HSPLandroid/app/Fragment$1;->onHasView()Z +HSPLandroid/app/Fragment$AnimationInfo;->-get0(Landroid/app/Fragment$AnimationInfo;)Ljava/lang/Boolean; +HSPLandroid/app/Fragment$AnimationInfo;->-get1(Landroid/app/Fragment$AnimationInfo;)Ljava/lang/Boolean; +HSPLandroid/app/Fragment$AnimationInfo;->-get2(Landroid/app/Fragment$AnimationInfo;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-get3(Landroid/app/Fragment$AnimationInfo;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-get4(Landroid/app/Fragment$AnimationInfo;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-get6(Landroid/app/Fragment$AnimationInfo;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-get7(Landroid/app/Fragment$AnimationInfo;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-set0(Landroid/app/Fragment$AnimationInfo;Ljava/lang/Boolean;)Ljava/lang/Boolean; +HSPLandroid/app/Fragment$AnimationInfo;->-set1(Landroid/app/Fragment$AnimationInfo;Ljava/lang/Boolean;)Ljava/lang/Boolean; +HSPLandroid/app/Fragment$AnimationInfo;->-set3(Landroid/app/Fragment$AnimationInfo;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-set4(Landroid/app/Fragment$AnimationInfo;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-set5(Landroid/app/Fragment$AnimationInfo;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-set6(Landroid/app/Fragment$AnimationInfo;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->-set7(Landroid/app/Fragment$AnimationInfo;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/Fragment$AnimationInfo;->()V +HSPLandroid/app/Fragment;->-get0()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->()V +HSPLandroid/app/Fragment;->ensureAnimationInfo()Landroid/app/Fragment$AnimationInfo; +HSPLandroid/app/Fragment;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/Fragment;->getActivity()Landroid/app/Activity; +HSPLandroid/app/Fragment;->getAnimatingAway()Landroid/animation/Animator; +HSPLandroid/app/Fragment;->getArguments()Landroid/os/Bundle; +HSPLandroid/app/Fragment;->getChildFragmentManager()Landroid/app/FragmentManager; +HSPLandroid/app/Fragment;->getContext()Landroid/content/Context; +HSPLandroid/app/Fragment;->getEnterTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getExitTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getFragmentManager()Landroid/app/FragmentManager; +HSPLandroid/app/Fragment;->getLoaderManager()Landroid/app/LoaderManager; +HSPLandroid/app/Fragment;->getNextAnim()I +HSPLandroid/app/Fragment;->getNextTransition()I +HSPLandroid/app/Fragment;->getNextTransitionStyle()I +HSPLandroid/app/Fragment;->getParentFragment()Landroid/app/Fragment; +HSPLandroid/app/Fragment;->getReenterTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getResources()Landroid/content/res/Resources; +HSPLandroid/app/Fragment;->getReturnTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getSharedElementEnterTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getSharedElementReturnTransition()Landroid/transition/Transition; +HSPLandroid/app/Fragment;->getString(I)Ljava/lang/String; +HSPLandroid/app/Fragment;->getUserVisibleHint()Z +HSPLandroid/app/Fragment;->getView()Landroid/view/View; +HSPLandroid/app/Fragment;->hashCode()I +HSPLandroid/app/Fragment;->instantiate(Landroid/content/Context;Ljava/lang/String;)Landroid/app/Fragment; +HSPLandroid/app/Fragment;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment; +HSPLandroid/app/Fragment;->instantiateChildFragmentManager()V +HSPLandroid/app/Fragment;->isAdded()Z +HSPLandroid/app/Fragment;->isHidden()Z +HSPLandroid/app/Fragment;->isPostponed()Z +HSPLandroid/app/Fragment;->isResumed()Z +HSPLandroid/app/Fragment;->isVisible()Z +HSPLandroid/app/Fragment;->loadTransition(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/transition/Transition;Landroid/transition/Transition;I)Landroid/transition/Transition; +HSPLandroid/app/Fragment;->noteStateNotSaved()V +HSPLandroid/app/Fragment;->onActivityCreated(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onAttach(Landroid/app/Activity;)V +HSPLandroid/app/Fragment;->onAttach(Landroid/content/Context;)V +HSPLandroid/app/Fragment;->onAttachFragment(Landroid/app/Fragment;)V +HSPLandroid/app/Fragment;->onCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onCreateAnimator(IZI)Landroid/animation/Animator; +HSPLandroid/app/Fragment;->onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V +HSPLandroid/app/Fragment;->onCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View; +HSPLandroid/app/Fragment;->onGetLayoutInflater(Landroid/os/Bundle;)Landroid/view/LayoutInflater; +HSPLandroid/app/Fragment;->onInflate(Landroid/app/Activity;Landroid/util/AttributeSet;Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onInflate(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onInflate(Landroid/util/AttributeSet;Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onPause()V +HSPLandroid/app/Fragment;->onPrepareOptionsMenu(Landroid/view/Menu;)V +HSPLandroid/app/Fragment;->onResume()V +HSPLandroid/app/Fragment;->onSaveInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onStart()V +HSPLandroid/app/Fragment;->onStop()V +HSPLandroid/app/Fragment;->onTrimMemory(I)V +HSPLandroid/app/Fragment;->onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->onViewStateRestored(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->performActivityCreated(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->performCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->performCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z +HSPLandroid/app/Fragment;->performCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View; +HSPLandroid/app/Fragment;->performGetLayoutInflater(Landroid/os/Bundle;)Landroid/view/LayoutInflater; +HSPLandroid/app/Fragment;->performPause()V +HSPLandroid/app/Fragment;->performPrepareOptionsMenu(Landroid/view/Menu;)Z +HSPLandroid/app/Fragment;->performResume()V +HSPLandroid/app/Fragment;->performSaveInstanceState(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->performStart()V +HSPLandroid/app/Fragment;->performStop()V +HSPLandroid/app/Fragment;->performTrimMemory(I)V +HSPLandroid/app/Fragment;->restoreChildFragmentState(Landroid/os/Bundle;Z)V +HSPLandroid/app/Fragment;->restoreViewState(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->setAllowEnterTransitionOverlap(Z)V +HSPLandroid/app/Fragment;->setAllowReturnTransitionOverlap(Z)V +HSPLandroid/app/Fragment;->setArguments(Landroid/os/Bundle;)V +HSPLandroid/app/Fragment;->setEnterTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setExitTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setHasOptionsMenu(Z)V +HSPLandroid/app/Fragment;->setIndex(ILandroid/app/Fragment;)V +HSPLandroid/app/Fragment;->setMenuVisibility(Z)V +HSPLandroid/app/Fragment;->setNextAnim(I)V +HSPLandroid/app/Fragment;->setNextTransition(II)V +HSPLandroid/app/Fragment;->setReenterTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setRetainInstance(Z)V +HSPLandroid/app/Fragment;->setReturnTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setSharedElementEnterTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setSharedElementReturnTransition(Landroid/transition/Transition;)V +HSPLandroid/app/Fragment;->setUserVisibleHint(Z)V +HSPLandroid/app/Fragment;->shouldChangeTransition(Landroid/transition/Transition;Landroid/transition/Transition;)Z +HSPLandroid/app/Fragment;->toString()Ljava/lang/String; +HSPLandroid/app/FragmentContainer;->()V +HSPLandroid/app/FragmentContainer;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment; +HSPLandroid/app/FragmentController;->(Landroid/app/FragmentHostCallback;)V +HSPLandroid/app/FragmentController;->attachHost(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentController;->createController(Landroid/app/FragmentHostCallback;)Landroid/app/FragmentController; +HSPLandroid/app/FragmentController;->dispatchActivityCreated()V +HSPLandroid/app/FragmentController;->dispatchCreate()V +HSPLandroid/app/FragmentController;->dispatchCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z +HSPLandroid/app/FragmentController;->dispatchPause()V +HSPLandroid/app/FragmentController;->dispatchPrepareOptionsMenu(Landroid/view/Menu;)Z +HSPLandroid/app/FragmentController;->dispatchResume()V +HSPLandroid/app/FragmentController;->dispatchStart()V +HSPLandroid/app/FragmentController;->dispatchStop()V +HSPLandroid/app/FragmentController;->dispatchTrimMemory(I)V +HSPLandroid/app/FragmentController;->doLoaderStart()V +HSPLandroid/app/FragmentController;->doLoaderStop(Z)V +HSPLandroid/app/FragmentController;->execPendingActions()Z +HSPLandroid/app/FragmentController;->getFragmentManager()Landroid/app/FragmentManager; +HSPLandroid/app/FragmentController;->getLoaderManager()Landroid/app/LoaderManager; +HSPLandroid/app/FragmentController;->noteStateNotSaved()V +HSPLandroid/app/FragmentController;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/app/FragmentController;->reportLoaderStart()V +HSPLandroid/app/FragmentController;->restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V +HSPLandroid/app/FragmentController;->saveAllState()Landroid/os/Parcelable; +HSPLandroid/app/FragmentHostCallback;->(Landroid/app/Activity;)V +HSPLandroid/app/FragmentHostCallback;->(Landroid/app/Activity;Landroid/content/Context;Landroid/os/Handler;I)V +HSPLandroid/app/FragmentHostCallback;->(Landroid/content/Context;Landroid/os/Handler;I)V +HSPLandroid/app/FragmentHostCallback;->chooseHandler(Landroid/content/Context;Landroid/os/Handler;)Landroid/os/Handler; +HSPLandroid/app/FragmentHostCallback;->doLoaderStart()V +HSPLandroid/app/FragmentHostCallback;->doLoaderStop(Z)V +HSPLandroid/app/FragmentHostCallback;->getActivity()Landroid/app/Activity; +HSPLandroid/app/FragmentHostCallback;->getContext()Landroid/content/Context; +HSPLandroid/app/FragmentHostCallback;->getFragmentManagerImpl()Landroid/app/FragmentManagerImpl; +HSPLandroid/app/FragmentHostCallback;->getHandler()Landroid/os/Handler; +HSPLandroid/app/FragmentHostCallback;->getLoaderManager(Ljava/lang/String;ZZ)Landroid/app/LoaderManagerImpl; +HSPLandroid/app/FragmentHostCallback;->getLoaderManagerImpl()Landroid/app/LoaderManagerImpl; +HSPLandroid/app/FragmentHostCallback;->getRetainLoaders()Z +HSPLandroid/app/FragmentHostCallback;->onGetHost()Ljava/lang/Object; +HSPLandroid/app/FragmentHostCallback;->reportLoaderStart()V +HSPLandroid/app/FragmentManager$BackStackEntry;->getBreadCrumbShortTitle()Ljava/lang/CharSequence; +HSPLandroid/app/FragmentManager$BackStackEntry;->getBreadCrumbShortTitleRes()I +HSPLandroid/app/FragmentManager$BackStackEntry;->getBreadCrumbTitle()Ljava/lang/CharSequence; +HSPLandroid/app/FragmentManager$BackStackEntry;->getBreadCrumbTitleRes()I +HSPLandroid/app/FragmentManager$BackStackEntry;->getId()I +HSPLandroid/app/FragmentManager$BackStackEntry;->getName()Ljava/lang/String; +HSPLandroid/app/FragmentManager$FragmentLifecycleCallbacks;->()V +HSPLandroid/app/FragmentManager$OnBackStackChangedListener;->onBackStackChanged()V +HSPLandroid/app/FragmentManager;->()V +HSPLandroid/app/FragmentManager;->addOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V +HSPLandroid/app/FragmentManager;->beginTransaction()Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentManager;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HSPLandroid/app/FragmentManager;->executePendingTransactions()Z +HSPLandroid/app/FragmentManager;->findFragmentById(I)Landroid/app/Fragment; +HSPLandroid/app/FragmentManager;->findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment; +HSPLandroid/app/FragmentManager;->getBackStackEntryAt(I)Landroid/app/FragmentManager$BackStackEntry; +HSPLandroid/app/FragmentManager;->getBackStackEntryCount()I +HSPLandroid/app/FragmentManager;->getFragment(Landroid/os/Bundle;Ljava/lang/String;)Landroid/app/Fragment; +HSPLandroid/app/FragmentManager;->getFragments()Ljava/util/List; +HSPLandroid/app/FragmentManager;->getPrimaryNavigationFragment()Landroid/app/Fragment; +HSPLandroid/app/FragmentManager;->isDestroyed()Z +HSPLandroid/app/FragmentManager;->isStateSaved()Z +HSPLandroid/app/FragmentManager;->popBackStack()V +HSPLandroid/app/FragmentManager;->popBackStack(II)V +HSPLandroid/app/FragmentManager;->popBackStack(Ljava/lang/String;I)V +HSPLandroid/app/FragmentManager;->popBackStackImmediate()Z +HSPLandroid/app/FragmentManager;->popBackStackImmediate(II)Z +HSPLandroid/app/FragmentManager;->popBackStackImmediate(Ljava/lang/String;I)Z +HSPLandroid/app/FragmentManager;->putFragment(Landroid/os/Bundle;Ljava/lang/String;Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManager;->registerFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;Z)V +HSPLandroid/app/FragmentManager;->removeOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V +HSPLandroid/app/FragmentManager;->saveFragmentInstanceState(Landroid/app/Fragment;)Landroid/app/Fragment$SavedState; +HSPLandroid/app/FragmentManager;->unregisterFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;)V +HSPLandroid/app/FragmentManagerImpl$1;->(Landroid/app/FragmentManagerImpl;)V +HSPLandroid/app/FragmentManagerImpl$1;->run()V +HSPLandroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;->(Landroid/view/View;)V +HSPLandroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;->onAnimationStart(Landroid/animation/Animator;)V +HSPLandroid/app/FragmentManagerImpl$OpGenerator;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroid/app/FragmentManagerImpl;->()V +HSPLandroid/app/FragmentManagerImpl;->addAddedFragments(Landroid/util/ArraySet;)V +HSPLandroid/app/FragmentManagerImpl;->addFragment(Landroid/app/Fragment;Z)V +HSPLandroid/app/FragmentManagerImpl;->addOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V +HSPLandroid/app/FragmentManagerImpl;->attachController(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->attachFragment(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->beginTransaction()Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentManagerImpl;->burpActive()V +HSPLandroid/app/FragmentManagerImpl;->checkStateLoss()V +HSPLandroid/app/FragmentManagerImpl;->cleanupExec()V +HSPLandroid/app/FragmentManagerImpl;->dispatchActivityCreated()V +HSPLandroid/app/FragmentManagerImpl;->dispatchCreate()V +HSPLandroid/app/FragmentManagerImpl;->dispatchCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z +HSPLandroid/app/FragmentManagerImpl;->dispatchMoveToState(I)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentActivityCreated(Landroid/app/Fragment;Landroid/os/Bundle;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentAttached(Landroid/app/Fragment;Landroid/content/Context;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentCreated(Landroid/app/Fragment;Landroid/os/Bundle;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentPaused(Landroid/app/Fragment;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentPreAttached(Landroid/app/Fragment;Landroid/content/Context;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentPreCreated(Landroid/app/Fragment;Landroid/os/Bundle;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentResumed(Landroid/app/Fragment;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentSaveInstanceState(Landroid/app/Fragment;Landroid/os/Bundle;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentStarted(Landroid/app/Fragment;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentStopped(Landroid/app/Fragment;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentViewCreated(Landroid/app/Fragment;Landroid/view/View;Landroid/os/Bundle;Z)V +HSPLandroid/app/FragmentManagerImpl;->dispatchPause()V +HSPLandroid/app/FragmentManagerImpl;->dispatchPrepareOptionsMenu(Landroid/view/Menu;)Z +HSPLandroid/app/FragmentManagerImpl;->dispatchResume()V +HSPLandroid/app/FragmentManagerImpl;->dispatchStart()V +HSPLandroid/app/FragmentManagerImpl;->dispatchStop()V +HSPLandroid/app/FragmentManagerImpl;->dispatchTrimMemory(I)V +HSPLandroid/app/FragmentManagerImpl;->doPendingDeferredStart()V +HSPLandroid/app/FragmentManagerImpl;->endAnimatingAwayFragments()V +HSPLandroid/app/FragmentManagerImpl;->enqueueAction(Landroid/app/FragmentManagerImpl$OpGenerator;Z)V +HSPLandroid/app/FragmentManagerImpl;->ensureExecReady(Z)V +HSPLandroid/app/FragmentManagerImpl;->ensureInflatedFragmentView(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->execPendingActions()Z +HSPLandroid/app/FragmentManagerImpl;->executeOps(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V +HSPLandroid/app/FragmentManagerImpl;->executeOpsTogether(Ljava/util/ArrayList;Ljava/util/ArrayList;II)V +HSPLandroid/app/FragmentManagerImpl;->executePendingTransactions()Z +HSPLandroid/app/FragmentManagerImpl;->executePostponedTransaction(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/app/FragmentManagerImpl;->findFragmentById(I)Landroid/app/Fragment; +HSPLandroid/app/FragmentManagerImpl;->findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment; +HSPLandroid/app/FragmentManagerImpl;->findFragmentUnder(Landroid/app/Fragment;)Landroid/app/Fragment; +HSPLandroid/app/FragmentManagerImpl;->forcePostponedTransactions()V +HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroid/app/FragmentManagerImpl;->getFragment(Landroid/os/Bundle;Ljava/lang/String;)Landroid/app/Fragment; +HSPLandroid/app/FragmentManagerImpl;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2; +HSPLandroid/app/FragmentManagerImpl;->getPrimaryNavigationFragment()Landroid/app/Fragment; +HSPLandroid/app/FragmentManagerImpl;->getTargetSdk()I +HSPLandroid/app/FragmentManagerImpl;->invalidateOptionsMenu()V +HSPLandroid/app/FragmentManagerImpl;->isDestroyed()Z +HSPLandroid/app/FragmentManagerImpl;->isStateAtLeast(I)Z +HSPLandroid/app/FragmentManagerImpl;->loadAnimator(Landroid/app/Fragment;IZI)Landroid/animation/Animator; +HSPLandroid/app/FragmentManagerImpl;->makeActive(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V +HSPLandroid/app/FragmentManagerImpl;->modifiesAlpha(Landroid/animation/Animator;)Z +HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V +HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V +HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V +HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/app/FragmentManagerImpl;->performPendingDeferredStart(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->postponePostponableTransactions(Ljava/util/ArrayList;Ljava/util/ArrayList;IILandroid/util/ArraySet;)I +HSPLandroid/app/FragmentManagerImpl;->registerFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;Z)V +HSPLandroid/app/FragmentManagerImpl;->removeRedundantOperationsAndExecute(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/app/FragmentManagerImpl;->restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V +HSPLandroid/app/FragmentManagerImpl;->saveAllState()Landroid/os/Parcelable; +HSPLandroid/app/FragmentManagerImpl;->saveFragmentBasicState(Landroid/app/Fragment;)Landroid/os/Bundle; +HSPLandroid/app/FragmentManagerImpl;->saveFragmentViewState(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentManagerImpl;->saveNonConfig()V +HSPLandroid/app/FragmentManagerImpl;->scheduleCommit()V +HSPLandroid/app/FragmentManagerImpl;->setHWLayerAnimListenerIfAlpha(Landroid/view/View;Landroid/animation/Animator;)V +HSPLandroid/app/FragmentManagerImpl;->shouldRunOnHWLayer(Landroid/view/View;Landroid/animation/Animator;)Z +HSPLandroid/app/FragmentManagerImpl;->startPendingDeferredFragments()V +HSPLandroid/app/FragmentManagerImpl;->transitToStyleIndex(IZ)I +HSPLandroid/app/FragmentManagerState$1;->()V +HSPLandroid/app/FragmentManagerState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/FragmentManagerState; +HSPLandroid/app/FragmentManagerState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/FragmentManagerState;->()V +HSPLandroid/app/FragmentManagerState;->(Landroid/os/Parcel;)V +HSPLandroid/app/FragmentManagerState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/FragmentState$1;->()V +HSPLandroid/app/FragmentState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/FragmentState; +HSPLandroid/app/FragmentState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/FragmentState$1;->newArray(I)[Landroid/app/FragmentState; +HSPLandroid/app/FragmentState$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/app/FragmentState;->(Landroid/app/Fragment;)V +HSPLandroid/app/FragmentState;->(Landroid/os/Parcel;)V +HSPLandroid/app/FragmentState;->instantiate(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;Landroid/app/FragmentManagerNonConfig;)Landroid/app/Fragment; +HSPLandroid/app/FragmentState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/FragmentTransaction;->()V +HSPLandroid/app/FragmentTransaction;->add(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->add(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->addSharedElement(Landroid/view/View;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->addToBackStack(Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->attach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->commit()I +HSPLandroid/app/FragmentTransaction;->commitAllowingStateLoss()I +HSPLandroid/app/FragmentTransaction;->commitNow()V +HSPLandroid/app/FragmentTransaction;->commitNowAllowingStateLoss()V +HSPLandroid/app/FragmentTransaction;->detach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->disallowAddToBackStack()Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->hide(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->isAddToBackStackAllowed()Z +HSPLandroid/app/FragmentTransaction;->isEmpty()Z +HSPLandroid/app/FragmentTransaction;->remove(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->replace(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->runOnCommit(Ljava/lang/Runnable;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setBreadCrumbShortTitle(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setBreadCrumbShortTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setBreadCrumbTitle(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setBreadCrumbTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setCustomAnimations(II)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setCustomAnimations(IIII)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setPrimaryNavigationFragment(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setReorderingAllowed(Z)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setTransition(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->setTransitionStyle(I)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransaction;->show(Landroid/app/Fragment;)Landroid/app/FragmentTransaction; +HSPLandroid/app/FragmentTransition$FragmentContainerTransition;->()V +HSPLandroid/app/FragmentTransition;->addToFirstInLastOut(Landroid/app/BackStackRecord;Landroid/app/BackStackRecord$Op;Landroid/util/SparseArray;ZZ)V +HSPLandroid/app/FragmentTransition;->calculateFragments(Landroid/app/BackStackRecord;Landroid/util/SparseArray;Z)V +HSPLandroid/app/FragmentTransition;->calculateNameOverrides(ILjava/util/ArrayList;Ljava/util/ArrayList;II)Landroid/util/ArrayMap; +HSPLandroid/app/FragmentTransition;->cloneTransition(Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/app/FragmentTransition;->configureSharedElementsReordered(Landroid/view/ViewGroup;Landroid/view/View;Landroid/util/ArrayMap;Landroid/app/FragmentTransition$FragmentContainerTransition;Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/transition/Transition;Landroid/transition/Transition;)Landroid/transition/TransitionSet; +HSPLandroid/app/FragmentTransition;->configureTransitionsReordered(Landroid/app/FragmentManagerImpl;ILandroid/app/FragmentTransition$FragmentContainerTransition;Landroid/view/View;Landroid/util/ArrayMap;)V +HSPLandroid/app/FragmentTransition;->ensureContainer(Landroid/app/FragmentTransition$FragmentContainerTransition;Landroid/util/SparseArray;I)Landroid/app/FragmentTransition$FragmentContainerTransition; +HSPLandroid/app/FragmentTransition;->getEnterTransition(Landroid/app/Fragment;Z)Landroid/transition/Transition; +HSPLandroid/app/FragmentTransition;->getExitTransition(Landroid/app/Fragment;Z)Landroid/transition/Transition; +HSPLandroid/app/FragmentTransition;->startTransitions(Landroid/app/FragmentManagerImpl;Ljava/util/ArrayList;Ljava/util/ArrayList;IIZ)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->activityPaused(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->activityResumed(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->activitySlept(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->addPackageDependency(Ljava/lang/String;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->getActivityDisplayId(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getActivityStackId(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getAppTasks(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUser()Landroid/content/pm/UserInfo; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getFocusedStackId()I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getLastResumedActivityUserId()I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getRunningAppProcesses()Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getTaskForActivity(Landroid/os/IBinder;Z)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->getTasks(II)Ljava/util/List; +HSPLandroid/app/IActivityManager$Stub$Proxy;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->isInMultiWindowMode(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->isTopOfTask(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserAMonkey()Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerProcessObserver(Landroid/app/IProcessObserver;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent; +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;III)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setLockScreenShown(Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setRequestedOrientation(Landroid/os/IBinder;I)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HSPLandroid/app/IActivityManager$Stub$Proxy;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindService(Landroid/app/IServiceConnection;)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->unregisterReceiver(Landroid/content/IIntentReceiver;)V +HSPLandroid/app/IActivityManager$Stub;->()V +HSPLandroid/app/IActivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityManager; +HSPLandroid/app/IActivityManager;->activityDestroyed(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V +HSPLandroid/app/IActivityManager;->activityPaused(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->activityRelaunched(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->activityResumed(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->activitySlept(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HSPLandroid/app/IActivityManager;->addAppTask(Landroid/os/IBinder;Landroid/content/Intent;Landroid/app/ActivityManager$TaskDescription;Landroid/graphics/Bitmap;)I +HSPLandroid/app/IActivityManager;->addInstrumentationResults(Landroid/app/IApplicationThread;Landroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->addPackageDependency(Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->appNotRespondingViaProvider(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->attachApplication(Landroid/app/IApplicationThread;)V +HSPLandroid/app/IActivityManager;->backgroundWhitelistUid(I)V +HSPLandroid/app/IActivityManager;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->bindBackupAgent(Ljava/lang/String;II)Z +HSPLandroid/app/IActivityManager;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +HSPLandroid/app/IActivityManager;->bootAnimationComplete()V +HSPLandroid/app/IActivityManager;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HSPLandroid/app/IActivityManager;->cancelIntentSender(Landroid/content/IIntentSender;)V +HSPLandroid/app/IActivityManager;->cancelTaskThumbnailTransition(I)V +HSPLandroid/app/IActivityManager;->cancelTaskWindowTransition(I)V +HSPLandroid/app/IActivityManager;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I +HSPLandroid/app/IActivityManager;->checkPermission(Ljava/lang/String;II)I +HSPLandroid/app/IActivityManager;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)Z +HSPLandroid/app/IActivityManager;->clearGrantedUriPermissions(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->clearPendingBackup()V +HSPLandroid/app/IActivityManager;->closeSystemDialogs(Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->convertFromTranslucent(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->convertToTranslucent(Landroid/os/IBinder;Landroid/os/Bundle;)Z +HSPLandroid/app/IActivityManager;->crashApplication(IILjava/lang/String;ILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->createStackOnDisplay(I)I +HSPLandroid/app/IActivityManager;->dismissKeyguard(Landroid/os/IBinder;Lcom/android/internal/policy/IKeyguardDismissCallback;)V +HSPLandroid/app/IActivityManager;->dumpHeap(Ljava/lang/String;IZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z +HSPLandroid/app/IActivityManager;->dumpHeapFinished(Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->enterPictureInPictureMode(Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)Z +HSPLandroid/app/IActivityManager;->enterSafeMode()V +HSPLandroid/app/IActivityManager;->exitFreeformMode(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z +HSPLandroid/app/IActivityManager;->finishActivityAffinity(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->finishHeavyWeightApp()V +HSPLandroid/app/IActivityManager;->finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V +HSPLandroid/app/IActivityManager;->finishSubActivity(Landroid/os/IBinder;Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V +HSPLandroid/app/IActivityManager;->forceStopPackage(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->getActivityClassForToken(Landroid/os/IBinder;)Landroid/content/ComponentName; +HSPLandroid/app/IActivityManager;->getActivityDisplayId(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle; +HSPLandroid/app/IActivityManager;->getActivityStackId(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->getAllStackInfos()Ljava/util/List; +HSPLandroid/app/IActivityManager;->getAppTaskThumbnailSize()Landroid/graphics/Point; +HSPLandroid/app/IActivityManager;->getAppTasks(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/app/IActivityManager;->getAssistContextExtras(I)Landroid/os/Bundle; +HSPLandroid/app/IActivityManager;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName; +HSPLandroid/app/IActivityManager;->getCallingPackage(Landroid/os/IBinder;)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/app/IActivityManager;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; +HSPLandroid/app/IActivityManager;->getContentProviderExternal(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/app/ContentProviderHolder; +HSPLandroid/app/IActivityManager;->getCurrentUser()Landroid/content/pm/UserInfo; +HSPLandroid/app/IActivityManager;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +HSPLandroid/app/IActivityManager;->getFocusedStackId()I +HSPLandroid/app/IActivityManager;->getFrontActivityScreenCompatMode()I +HSPLandroid/app/IActivityManager;->getGrantedUriPermissions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/IActivityManager;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent; +HSPLandroid/app/IActivityManager;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; +HSPLandroid/app/IActivityManager;->getLastResumedActivityUserId()I +HSPLandroid/app/IActivityManager;->getLaunchedFromPackage(Landroid/os/IBinder;)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getLaunchedFromUid(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->getLockTaskModeState()I +HSPLandroid/app/IActivityManager;->getMaxNumPictureInPictureActions(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V +HSPLandroid/app/IActivityManager;->getMemoryTrimLevel()I +HSPLandroid/app/IActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HSPLandroid/app/IActivityManager;->getPackageAskScreenCompat(Ljava/lang/String;)Z +HSPLandroid/app/IActivityManager;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getPackageForToken(Landroid/os/IBinder;)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/IActivityManager;->getPackageScreenCompatMode(Ljava/lang/String;)I +HSPLandroid/app/IActivityManager;->getPersistedUriPermissions(Ljava/lang/String;Z)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/IActivityManager;->getProcessLimit()I +HSPLandroid/app/IActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; +HSPLandroid/app/IActivityManager;->getProcessPss([I)[J +HSPLandroid/app/IActivityManager;->getProcessesInErrorState()Ljava/util/List; +HSPLandroid/app/IActivityManager;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/IActivityManager;->getRequestedOrientation(Landroid/os/IBinder;)I +HSPLandroid/app/IActivityManager;->getRunningAppProcesses()Ljava/util/List; +HSPLandroid/app/IActivityManager;->getRunningExternalApplications()Ljava/util/List; +HSPLandroid/app/IActivityManager;->getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent; +HSPLandroid/app/IActivityManager;->getRunningUserIds()[I +HSPLandroid/app/IActivityManager;->getServices(II)Ljava/util/List; +HSPLandroid/app/IActivityManager;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo; +HSPLandroid/app/IActivityManager;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/IActivityManager;->getTaskBounds(I)Landroid/graphics/Rect; +HSPLandroid/app/IActivityManager;->getTaskDescription(I)Landroid/app/ActivityManager$TaskDescription; +HSPLandroid/app/IActivityManager;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; +HSPLandroid/app/IActivityManager;->getTaskForActivity(Landroid/os/IBinder;Z)I +HSPLandroid/app/IActivityManager;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; +HSPLandroid/app/IActivityManager;->getTaskThumbnail(I)Landroid/app/ActivityManager$TaskThumbnail; +HSPLandroid/app/IActivityManager;->getTasks(II)Ljava/util/List; +HSPLandroid/app/IActivityManager;->getUidForIntentSender(Landroid/content/IIntentSender;)I +HSPLandroid/app/IActivityManager;->getUidProcessState(ILjava/lang/String;)I +HSPLandroid/app/IActivityManager;->getUriPermissionOwnerForActivity(Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLandroid/app/IActivityManager;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V +HSPLandroid/app/IActivityManager;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V +HSPLandroid/app/IActivityManager;->handleApplicationCrash(Landroid/os/IBinder;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V +HSPLandroid/app/IActivityManager;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/app/IActivityManager;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;)Z +HSPLandroid/app/IActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/IActivityManager;->hang(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->inputDispatchingTimedOut(IZLjava/lang/String;)J +HSPLandroid/app/IActivityManager;->isAppForeground(I)Z +HSPLandroid/app/IActivityManager;->isAppStartModeDisabled(ILjava/lang/String;)Z +HSPLandroid/app/IActivityManager;->isAssistDataAllowedOnCurrentActivity()Z +HSPLandroid/app/IActivityManager;->isImmersive(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->isInLockTaskMode()Z +HSPLandroid/app/IActivityManager;->isInMultiWindowMode(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->isInPictureInPictureMode(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z +HSPLandroid/app/IActivityManager;->isIntentSenderTargetedToPackage(Landroid/content/IIntentSender;)Z +HSPLandroid/app/IActivityManager;->isRootVoiceInteraction(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->isTopActivityImmersive()Z +HSPLandroid/app/IActivityManager;->isTopOfTask(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->isUserAMonkey()Z +HSPLandroid/app/IActivityManager;->isUserRunning(II)Z +HSPLandroid/app/IActivityManager;->isVrModePackageEnabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/IActivityManager;->keyguardGoingAway(I)V +HSPLandroid/app/IActivityManager;->killAllBackgroundProcesses()V +HSPLandroid/app/IActivityManager;->killApplication(Ljava/lang/String;IILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->killApplicationProcess(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->killBackgroundProcesses(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->killPackageDependents(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->killPids([ILjava/lang/String;Z)Z +HSPLandroid/app/IActivityManager;->killProcessesBelowForeground(Ljava/lang/String;)Z +HSPLandroid/app/IActivityManager;->killUid(IILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->launchAssistIntent(Landroid/content/Intent;ILjava/lang/String;ILandroid/os/Bundle;)Z +HSPLandroid/app/IActivityManager;->makePackageIdle(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z +HSPLandroid/app/IActivityManager;->moveStackToDisplay(II)V +HSPLandroid/app/IActivityManager;->moveTaskBackwards(I)V +HSPLandroid/app/IActivityManager;->moveTaskToDockedStack(IIZZLandroid/graphics/Rect;)Z +HSPLandroid/app/IActivityManager;->moveTaskToFront(IILandroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->moveTaskToStack(IIZ)V +HSPLandroid/app/IActivityManager;->moveTasksToFullscreenStack(IZ)V +HSPLandroid/app/IActivityManager;->moveTopActivityToPinnedStack(ILandroid/graphics/Rect;)Z +HSPLandroid/app/IActivityManager;->navigateUpTo(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/Intent;)Z +HSPLandroid/app/IActivityManager;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/app/IActivityManager;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->notifyActivityDrawn(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->notifyCleartextNetwork(I[B)V +HSPLandroid/app/IActivityManager;->notifyEnterAnimationComplete(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->notifyLaunchTaskBehindComplete(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->notifyLockedProfile(I)V +HSPLandroid/app/IActivityManager;->notifyPinnedStackAnimationEnded()V +HSPLandroid/app/IActivityManager;->notifyPinnedStackAnimationStarted()V +HSPLandroid/app/IActivityManager;->openContentUri(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/IActivityManager;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V +HSPLandroid/app/IActivityManager;->peekService(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/app/IActivityManager;->performIdleMaintenance()V +HSPLandroid/app/IActivityManager;->positionTaskInStack(III)V +HSPLandroid/app/IActivityManager;->profileControl(Ljava/lang/String;IZLandroid/app/ProfilerInfo;I)Z +HSPLandroid/app/IActivityManager;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V +HSPLandroid/app/IActivityManager;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->refContentProvider(Landroid/os/IBinder;II)Z +HSPLandroid/app/IActivityManager;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V +HSPLandroid/app/IActivityManager;->registerProcessObserver(Landroid/app/IProcessObserver;)V +HSPLandroid/app/IActivityManager;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent; +HSPLandroid/app/IActivityManager;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +HSPLandroid/app/IActivityManager;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V +HSPLandroid/app/IActivityManager;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->releaseActivityInstance(Landroid/os/IBinder;)Z +HSPLandroid/app/IActivityManager;->releasePersistableUriPermission(Landroid/net/Uri;II)V +HSPLandroid/app/IActivityManager;->releaseSomeActivities(Landroid/app/IApplicationThread;)V +HSPLandroid/app/IActivityManager;->removeContentProvider(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->removeStack(I)V +HSPLandroid/app/IActivityManager;->removeTask(I)Z +HSPLandroid/app/IActivityManager;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V +HSPLandroid/app/IActivityManager;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V +HSPLandroid/app/IActivityManager;->requestActivityRelaunch(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->requestAssistContextExtras(ILcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZ)Z +HSPLandroid/app/IActivityManager;->requestAutofillData(Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;I)Z +HSPLandroid/app/IActivityManager;->requestBugReport(I)V +HSPLandroid/app/IActivityManager;->requestTelephonyBugReport(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->resizeDockedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/app/IActivityManager;->resizePinnedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/app/IActivityManager;->resizeStack(ILandroid/graphics/Rect;ZZZI)V +HSPLandroid/app/IActivityManager;->resizeTask(ILandroid/graphics/Rect;I)V +HSPLandroid/app/IActivityManager;->restart()V +HSPLandroid/app/IActivityManager;->restartUserInBackground(I)I +HSPLandroid/app/IActivityManager;->resumeAppSwitches()V +HSPLandroid/app/IActivityManager;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V +HSPLandroid/app/IActivityManager;->revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;II)V +HSPLandroid/app/IActivityManager;->scheduleApplicationInfoChanged(Ljava/util/List;I)V +HSPLandroid/app/IActivityManager;->sendIdleJobTrigger()V +HSPLandroid/app/IActivityManager;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HSPLandroid/app/IActivityManager;->serviceDoneExecuting(Landroid/os/IBinder;III)V +HSPLandroid/app/IActivityManager;->setActivityController(Landroid/app/IActivityController;Z)V +HSPLandroid/app/IActivityManager;->setAlwaysFinish(Z)V +HSPLandroid/app/IActivityManager;->setDebugApp(Ljava/lang/String;ZZ)V +HSPLandroid/app/IActivityManager;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->setDumpHeapDebugLimit(Ljava/lang/String;IJLjava/lang/String;)V +HSPLandroid/app/IActivityManager;->setFocusedStack(I)V +HSPLandroid/app/IActivityManager;->setFocusedTask(I)V +HSPLandroid/app/IActivityManager;->setFrontActivityScreenCompatMode(I)V +HSPLandroid/app/IActivityManager;->setHasTopUi(Z)V +HSPLandroid/app/IActivityManager;->setImmersive(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->setLockScreenShown(Z)V +HSPLandroid/app/IActivityManager;->setPackageAskScreenCompat(Ljava/lang/String;Z)V +HSPLandroid/app/IActivityManager;->setPackageScreenCompatMode(Ljava/lang/String;I)V +HSPLandroid/app/IActivityManager;->setPersistentVrThread(I)V +HSPLandroid/app/IActivityManager;->setPictureInPictureParams(Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)V +HSPLandroid/app/IActivityManager;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V +HSPLandroid/app/IActivityManager;->setProcessLimit(I)V +HSPLandroid/app/IActivityManager;->setProcessMemoryTrimLevel(Ljava/lang/String;II)Z +HSPLandroid/app/IActivityManager;->setRenderThread(I)V +HSPLandroid/app/IActivityManager;->setRequestedOrientation(Landroid/os/IBinder;I)V +HSPLandroid/app/IActivityManager;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V +HSPLandroid/app/IActivityManager;->setShowWhenLocked(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/IActivityManager;->setTaskResizeable(II)V +HSPLandroid/app/IActivityManager;->setTurnScreenOn(Landroid/os/IBinder;Z)V +HSPLandroid/app/IActivityManager;->setUserIsMonkey(Z)V +HSPLandroid/app/IActivityManager;->setVoiceKeepAwake(Landroid/service/voice/IVoiceInteractionSession;Z)V +HSPLandroid/app/IActivityManager;->setVrMode(Landroid/os/IBinder;ZLandroid/content/ComponentName;)I +HSPLandroid/app/IActivityManager;->setVrThread(I)V +HSPLandroid/app/IActivityManager;->shouldUpRecreateTask(Landroid/os/IBinder;Ljava/lang/String;)Z +HSPLandroid/app/IActivityManager;->showAssistFromActivity(Landroid/os/IBinder;Landroid/os/Bundle;)Z +HSPLandroid/app/IActivityManager;->showBootMessage(Ljava/lang/CharSequence;Z)V +HSPLandroid/app/IActivityManager;->showLockTaskEscapeMessage(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->showWaitingForDebugger(Landroid/app/IApplicationThread;Z)V +HSPLandroid/app/IActivityManager;->shutdown(I)Z +HSPLandroid/app/IActivityManager;->signalPersistentProcesses(I)V +HSPLandroid/app/IActivityManager;->startActivities(Landroid/app/IApplicationThread;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I +HSPLandroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I +HSPLandroid/app/IActivityManager;->startActivityAndWait(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)Landroid/app/WaitResult; +HSPLandroid/app/IActivityManager;->startActivityAsCaller(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;ZI)I +HSPLandroid/app/IActivityManager;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I +HSPLandroid/app/IActivityManager;->startActivityFromRecents(ILandroid/os/Bundle;)I +HSPLandroid/app/IActivityManager;->startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I +HSPLandroid/app/IActivityManager;->startActivityWithConfig(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/content/res/Configuration;Landroid/os/Bundle;I)I +HSPLandroid/app/IActivityManager;->startAssistantActivity(Ljava/lang/String;IILandroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;I)I +HSPLandroid/app/IActivityManager;->startBinderTracking()Z +HSPLandroid/app/IActivityManager;->startConfirmDeviceCredentialIntent(Landroid/content/Intent;Landroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->startInPlaceAnimationOnFrontMostApplication(Landroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z +HSPLandroid/app/IActivityManager;->startLocalVoiceInteraction(Landroid/os/IBinder;Landroid/os/Bundle;)V +HSPLandroid/app/IActivityManager;->startLockTaskModeById(I)V +HSPLandroid/app/IActivityManager;->startLockTaskModeByToken(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->startNextMatchingActivity(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/Bundle;)Z +HSPLandroid/app/IActivityManager;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HSPLandroid/app/IActivityManager;->startSystemLockTaskMode(I)V +HSPLandroid/app/IActivityManager;->startUserInBackground(I)Z +HSPLandroid/app/IActivityManager;->startVoiceActivity(Ljava/lang/String;IILandroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I +HSPLandroid/app/IActivityManager;->stopAppSwitches()V +HSPLandroid/app/IActivityManager;->stopBinderTrackingAndDump(Landroid/os/ParcelFileDescriptor;)Z +HSPLandroid/app/IActivityManager;->stopLocalVoiceInteraction(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->stopLockTaskMode()V +HSPLandroid/app/IActivityManager;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HSPLandroid/app/IActivityManager;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HSPLandroid/app/IActivityManager;->stopSystemLockTaskMode()V +HSPLandroid/app/IActivityManager;->stopUser(IZLandroid/app/IStopUserCallback;)I +HSPLandroid/app/IActivityManager;->supportsLocalVoiceInteraction()Z +HSPLandroid/app/IActivityManager;->suppressResizeConfigChanges(Z)V +HSPLandroid/app/IActivityManager;->swapDockedAndFullscreenStack()V +HSPLandroid/app/IActivityManager;->switchUser(I)Z +HSPLandroid/app/IActivityManager;->takePersistableUriPermission(Landroid/net/Uri;II)V +HSPLandroid/app/IActivityManager;->unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/app/IActivityManager;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V +HSPLandroid/app/IActivityManager;->unbindService(Landroid/app/IServiceConnection;)Z +HSPLandroid/app/IActivityManager;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V +HSPLandroid/app/IActivityManager;->unhandledBack()V +HSPLandroid/app/IActivityManager;->unlockUser(I[B[BLandroid/os/IProgressListener;)Z +HSPLandroid/app/IActivityManager;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V +HSPLandroid/app/IActivityManager;->unregisterProcessObserver(Landroid/app/IProcessObserver;)V +HSPLandroid/app/IActivityManager;->unregisterReceiver(Landroid/content/IIntentReceiver;)V +HSPLandroid/app/IActivityManager;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V +HSPLandroid/app/IActivityManager;->unregisterUidObserver(Landroid/app/IUidObserver;)V +HSPLandroid/app/IActivityManager;->unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V +HSPLandroid/app/IActivityManager;->unstableProviderDied(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager;->updateConfiguration(Landroid/content/res/Configuration;)Z +HSPLandroid/app/IActivityManager;->updateDeviceOwner(Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->updateDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)Z +HSPLandroid/app/IActivityManager;->updateLockTaskPackages(I[Ljava/lang/String;)V +HSPLandroid/app/IActivityManager;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V +HSPLandroid/app/IActivityManager;->waitForNetworkStateUpdate(J)V +HSPLandroid/app/IActivityManager;->willActivityBeVisible(Landroid/os/IBinder;)Z +HSPLandroid/app/IAlarmManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IAlarmManager$Stub$Proxy;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HSPLandroid/app/IAlarmManager$Stub$Proxy;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HSPLandroid/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 +HSPLandroid/app/IAlarmManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmManager; +HSPLandroid/app/IAlarmManager;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HSPLandroid/app/IAlarmManager;->getNextWakeFromIdleTime()J +HSPLandroid/app/IAlarmManager;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HSPLandroid/app/IAlarmManager;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V +HSPLandroid/app/IAlarmManager;->setTime(J)Z +HSPLandroid/app/IAlarmManager;->setTimeZone(Ljava/lang/String;)V +HSPLandroid/app/IAppTask$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IAppTask$Stub$Proxy;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; +HSPLandroid/app/IAppTask$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAppTask; +HSPLandroid/app/IAppTask;->finishAndRemoveTask()V +HSPLandroid/app/IAppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; +HSPLandroid/app/IAppTask;->moveToFront()V +HSPLandroid/app/IAppTask;->setExcludeFromRecents(Z)V +HSPLandroid/app/IAppTask;->startActivity(Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)I +HSPLandroid/app/IApplicationThread$Stub;->()V +HSPLandroid/app/IApplicationThread$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IApplicationThread$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/IApplicationThread;->attachAgent(Ljava/lang/String;)V +HSPLandroid/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;)V +HSPLandroid/app/IApplicationThread;->clearDnsCache()V +HSPLandroid/app/IApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpActivity(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpDbInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpHeap(ZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/IApplicationThread;->dumpMemInfo(Landroid/os/ParcelFileDescriptor;Landroid/os/Debug$MemoryInfo;ZZZZZ[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpProvider(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->handleTrustStorageUpdate()V +HSPLandroid/app/IApplicationThread;->notifyCleartextNetwork([B)V +HSPLandroid/app/IApplicationThread;->processInBackground()V +HSPLandroid/app/IApplicationThread;->profilerControl(ZLandroid/app/ProfilerInfo;I)V +HSPLandroid/app/IApplicationThread;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V +HSPLandroid/app/IApplicationThread;->scheduleActivityConfigurationChanged(Landroid/os/IBinder;Landroid/content/res/Configuration;)V +HSPLandroid/app/IApplicationThread;->scheduleActivityMovedToDisplay(Landroid/os/IBinder;ILandroid/content/res/Configuration;)V +HSPLandroid/app/IApplicationThread;->scheduleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/app/IApplicationThread;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V +HSPLandroid/app/IApplicationThread;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V +HSPLandroid/app/IApplicationThread;->scheduleCrash(Ljava/lang/String;)V +HSPLandroid/app/IApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V +HSPLandroid/app/IApplicationThread;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V +HSPLandroid/app/IApplicationThread;->scheduleDestroyActivity(Landroid/os/IBinder;ZI)V +HSPLandroid/app/IApplicationThread;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/app/IApplicationThread;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V +HSPLandroid/app/IApplicationThread;->scheduleExit()V +HSPLandroid/app/IApplicationThread;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V +HSPLandroid/app/IApplicationThread;->scheduleLaunchActivity(Landroid/content/Intent;Landroid/os/IBinder;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;ZZLandroid/app/ProfilerInfo;)V +HSPLandroid/app/IApplicationThread;->scheduleLocalVoiceInteractionStarted(Landroid/os/IBinder;Lcom/android/internal/app/IVoiceInteractor;)V +HSPLandroid/app/IApplicationThread;->scheduleLowMemory()V +HSPLandroid/app/IApplicationThread;->scheduleMultiWindowModeChanged(Landroid/os/IBinder;ZLandroid/content/res/Configuration;)V +HSPLandroid/app/IApplicationThread;->scheduleNewIntent(Ljava/util/List;Landroid/os/IBinder;Z)V +HSPLandroid/app/IApplicationThread;->scheduleOnNewActivityOptions(Landroid/os/IBinder;Landroid/os/Bundle;)V +HSPLandroid/app/IApplicationThread;->schedulePauseActivity(Landroid/os/IBinder;ZZIZ)V +HSPLandroid/app/IApplicationThread;->schedulePictureInPictureModeChanged(Landroid/os/IBinder;ZLandroid/content/res/Configuration;)V +HSPLandroid/app/IApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V +HSPLandroid/app/IApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V +HSPLandroid/app/IApplicationThread;->scheduleRelaunchActivity(Landroid/os/IBinder;Ljava/util/List;Ljava/util/List;IZLandroid/content/res/Configuration;Landroid/content/res/Configuration;Z)V +HSPLandroid/app/IApplicationThread;->scheduleResumeActivity(Landroid/os/IBinder;IZLandroid/os/Bundle;)V +HSPLandroid/app/IApplicationThread;->scheduleSendResult(Landroid/os/IBinder;Ljava/util/List;)V +HSPLandroid/app/IApplicationThread;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/IApplicationThread;->scheduleSleeping(Landroid/os/IBinder;Z)V +HSPLandroid/app/IApplicationThread;->scheduleStopActivity(Landroid/os/IBinder;ZI)V +HSPLandroid/app/IApplicationThread;->scheduleStopService(Landroid/os/IBinder;)V +HSPLandroid/app/IApplicationThread;->scheduleSuicide()V +HSPLandroid/app/IApplicationThread;->scheduleTranslucentConversionComplete(Landroid/os/IBinder;Z)V +HSPLandroid/app/IApplicationThread;->scheduleTrimMemory(I)V +HSPLandroid/app/IApplicationThread;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V +HSPLandroid/app/IApplicationThread;->scheduleWindowVisibility(Landroid/os/IBinder;Z)V +HSPLandroid/app/IApplicationThread;->setCoreSettings(Landroid/os/Bundle;)V +HSPLandroid/app/IApplicationThread;->setHttpProxy(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V +HSPLandroid/app/IApplicationThread;->setNetworkBlockSeq(J)V +HSPLandroid/app/IApplicationThread;->setProcessState(I)V +HSPLandroid/app/IApplicationThread;->setSchedulingGroup(I)V +HSPLandroid/app/IApplicationThread;->startBinderTracking()V +HSPLandroid/app/IApplicationThread;->stopBinderTrackingAndDump(Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/IApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V +HSPLandroid/app/IApplicationThread;->updatePackageCompatibilityInfo(Ljava/lang/String;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/app/IApplicationThread;->updateTimePrefs(I)V +HSPLandroid/app/IApplicationThread;->updateTimeZone()V +HSPLandroid/app/IInstantAppResolver$Stub;->()V +HSPLandroid/app/IInstantAppResolver;->getInstantAppIntentFilterList([ILjava/lang/String;Ljava/lang/String;Landroid/os/IRemoteCallback;)V +HSPLandroid/app/IInstantAppResolver;->getInstantAppResolveInfoList([ILjava/lang/String;ILandroid/os/IRemoteCallback;)V +HSPLandroid/app/IInstrumentationWatcher$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IInstrumentationWatcher$Stub$Proxy;->instrumentationStatus(Landroid/content/ComponentName;ILandroid/os/Bundle;)V +HSPLandroid/app/IInstrumentationWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstrumentationWatcher; +HSPLandroid/app/IInstrumentationWatcher;->instrumentationFinished(Landroid/content/ComponentName;ILandroid/os/Bundle;)V +HSPLandroid/app/IInstrumentationWatcher;->instrumentationStatus(Landroid/content/ComponentName;ILandroid/os/Bundle;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getEffectsSuppressor()Landroid/content/ComponentName; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenMode()I +HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +HSPLandroid/app/INotificationManager$Stub$Proxy;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->requestBindListener(Landroid/content/ComponentName;)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V +HSPLandroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/INotificationManager; +HSPLandroid/app/INotificationManager;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String; +HSPLandroid/app/INotificationManager;->applyAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V +HSPLandroid/app/INotificationManager;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V +HSPLandroid/app/INotificationManager;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V +HSPLandroid/app/INotificationManager;->applyRestore([BI)V +HSPLandroid/app/INotificationManager;->areNotificationsEnabled(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z +HSPLandroid/app/INotificationManager;->canShowBadge(Ljava/lang/String;I)Z +HSPLandroid/app/INotificationManager;->cancelAllNotifications(Ljava/lang/String;I)V +HSPLandroid/app/INotificationManager;->cancelNotificationFromListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/app/INotificationManager;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V +HSPLandroid/app/INotificationManager;->cancelNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V +HSPLandroid/app/INotificationManager;->clearData(Ljava/lang/String;IZ)V +HSPLandroid/app/INotificationManager;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager;->createNotificationChannelsForPackage(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V +HSPLandroid/app/INotificationManager;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->deleteNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +HSPLandroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +HSPLandroid/app/INotificationManager;->getActiveNotifications(Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification; +HSPLandroid/app/INotificationManager;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule; +HSPLandroid/app/INotificationManager;->getBackupPayload(I)[B +HSPLandroid/app/INotificationManager;->getDeletedChannelCount(Ljava/lang/String;I)I +HSPLandroid/app/INotificationManager;->getEffectsSuppressor()Landroid/content/ComponentName; +HSPLandroid/app/INotificationManager;->getEnabledNotificationListenerPackages()Ljava/util/List; +HSPLandroid/app/INotificationManager;->getEnabledNotificationListeners(I)Ljava/util/List; +HSPLandroid/app/INotificationManager;->getHintsFromListener(Landroid/service/notification/INotificationListener;)I +HSPLandroid/app/INotificationManager;->getHistoricalNotifications(Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification; +HSPLandroid/app/INotificationManager;->getInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;)I +HSPLandroid/app/INotificationManager;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/INotificationManager;->getNotificationChannelForPackage(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel; +HSPLandroid/app/INotificationManager;->getNotificationChannelGroupForPackage(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup; +HSPLandroid/app/INotificationManager;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationChannelGroupsForPackage(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationChannelGroupsFromPrivilegedListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationChannelsForPackage(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationChannelsFromPrivilegedListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy; +HSPLandroid/app/INotificationManager;->getNumNotificationChannelsForPackage(Ljava/lang/String;IZ)I +HSPLandroid/app/INotificationManager;->getPackageImportance(Ljava/lang/String;)I +HSPLandroid/app/INotificationManager;->getRuleInstanceCount(Landroid/content/ComponentName;)I +HSPLandroid/app/INotificationManager;->getSnoozedNotificationsFromListener(Landroid/service/notification/INotificationListener;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/INotificationManager;->getZenMode()I +HSPLandroid/app/INotificationManager;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +HSPLandroid/app/INotificationManager;->getZenRules()Ljava/util/List; +HSPLandroid/app/INotificationManager;->isNotificationAssistantAccessGranted(Landroid/content/ComponentName;)Z +HSPLandroid/app/INotificationManager;->isNotificationListenerAccessGranted(Landroid/content/ComponentName;)Z +HSPLandroid/app/INotificationManager;->isNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;I)Z +HSPLandroid/app/INotificationManager;->isNotificationPolicyAccessGranted(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->isNotificationPolicyAccessGrantedForPackage(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->isSystemConditionProviderEnabled(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->matchesCallFilter(Landroid/os/Bundle;)Z +HSPLandroid/app/INotificationManager;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V +HSPLandroid/app/INotificationManager;->onlyHasDefaultChannel(Ljava/lang/String;I)Z +HSPLandroid/app/INotificationManager;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V +HSPLandroid/app/INotificationManager;->removeAutomaticZenRule(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->removeAutomaticZenRules(Ljava/lang/String;)Z +HSPLandroid/app/INotificationManager;->requestBindListener(Landroid/content/ComponentName;)V +HSPLandroid/app/INotificationManager;->requestBindProvider(Landroid/content/ComponentName;)V +HSPLandroid/app/INotificationManager;->requestHintsFromListener(Landroid/service/notification/INotificationListener;I)V +HSPLandroid/app/INotificationManager;->requestInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;I)V +HSPLandroid/app/INotificationManager;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V +HSPLandroid/app/INotificationManager;->requestUnbindProvider(Landroid/service/notification/IConditionProvider;)V +HSPLandroid/app/INotificationManager;->setInterruptionFilter(Ljava/lang/String;I)V +HSPLandroid/app/INotificationManager;->setNotificationAssistantAccessGranted(Landroid/content/ComponentName;Z)V +HSPLandroid/app/INotificationManager;->setNotificationAssistantAccessGrantedForUser(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/INotificationManager;->setNotificationListenerAccessGranted(Landroid/content/ComponentName;Z)V +HSPLandroid/app/INotificationManager;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/INotificationManager;->setNotificationPolicy(Ljava/lang/String;Landroid/app/NotificationManager$Policy;)V +HSPLandroid/app/INotificationManager;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V +HSPLandroid/app/INotificationManager;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V +HSPLandroid/app/INotificationManager;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->setOnNotificationPostedTrimFromListener(Landroid/service/notification/INotificationListener;I)V +HSPLandroid/app/INotificationManager;->setShowBadge(Ljava/lang/String;IZ)V +HSPLandroid/app/INotificationManager;->setZenMode(ILandroid/net/Uri;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->snoozeNotificationUntilContextFromListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->snoozeNotificationUntilFromListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;J)V +HSPLandroid/app/INotificationManager;->unregisterListener(Landroid/service/notification/INotificationListener;I)V +HSPLandroid/app/INotificationManager;->unsnoozeNotificationFromAssistant(Landroid/service/notification/INotificationListener;Ljava/lang/String;)V +HSPLandroid/app/INotificationManager;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;)Z +HSPLandroid/app/INotificationManager;->updateNotificationChannelForPackage(Ljava/lang/String;ILandroid/app/NotificationChannel;)V +HSPLandroid/app/INotificationManager;->updateNotificationChannelFromPrivilegedListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;)V +HSPLandroid/app/IProcessObserver$Stub;->()V +HSPLandroid/app/IProcessObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IProcessObserver;->onForegroundActivitiesChanged(IIZ)V +HSPLandroid/app/IProcessObserver;->onProcessDied(II)V +HSPLandroid/app/ISearchManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/ISearchManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ISearchManager; +HSPLandroid/app/ISearchManager;->getGlobalSearchActivities()Ljava/util/List; +HSPLandroid/app/ISearchManager;->getGlobalSearchActivity()Landroid/content/ComponentName; +HSPLandroid/app/ISearchManager;->getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo; +HSPLandroid/app/ISearchManager;->getSearchablesInGlobalSearch()Ljava/util/List; +HSPLandroid/app/ISearchManager;->getWebSearchActivity()Landroid/content/ComponentName; +HSPLandroid/app/ISearchManager;->launchAssist(Landroid/os/Bundle;)V +HSPLandroid/app/ISearchManager;->launchLegacyAssist(Ljava/lang/String;ILandroid/os/Bundle;)Z +HSPLandroid/app/IServiceConnection$Stub;->()V +HSPLandroid/app/IServiceConnection$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IServiceConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/IServiceConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V +HSPLandroid/app/ITaskStackListener$Stub;->()V +HSPLandroid/app/ITaskStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/ITaskStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/ITaskStackListener;->onActivityDismissingDockedStack()V +HSPLandroid/app/ITaskStackListener;->onActivityForcedResizable(Ljava/lang/String;II)V +HSPLandroid/app/ITaskStackListener;->onActivityLaunchOnSecondaryDisplayFailed()V +HSPLandroid/app/ITaskStackListener;->onActivityPinned(Ljava/lang/String;I)V +HSPLandroid/app/ITaskStackListener;->onActivityRequestedOrientationChanged(II)V +HSPLandroid/app/ITaskStackListener;->onActivityUnpinned()V +HSPLandroid/app/ITaskStackListener;->onPinnedActivityRestartAttempt(Z)V +HSPLandroid/app/ITaskStackListener;->onPinnedStackAnimationEnded()V +HSPLandroid/app/ITaskStackListener;->onPinnedStackAnimationStarted()V +HSPLandroid/app/ITaskStackListener;->onTaskCreated(ILandroid/content/ComponentName;)V +HSPLandroid/app/ITaskStackListener;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/ITaskStackListener;->onTaskMovedToFront(I)V +HSPLandroid/app/ITaskStackListener;->onTaskProfileLocked(II)V +HSPLandroid/app/ITaskStackListener;->onTaskRemovalStarted(I)V +HSPLandroid/app/ITaskStackListener;->onTaskRemoved(I)V +HSPLandroid/app/ITaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V +HSPLandroid/app/ITaskStackListener;->onTaskStackChanged()V +HSPLandroid/app/ITransientNotification$Stub;->()V +HSPLandroid/app/ITransientNotification;->hide()V +HSPLandroid/app/ITransientNotification;->show(Landroid/os/IBinder;)V +HSPLandroid/app/IUiAutomationConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IUiAutomationConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiAutomationConnection; +HSPLandroid/app/IUiAutomationConnection;->clearWindowAnimationFrameStats()V +HSPLandroid/app/IUiAutomationConnection;->clearWindowContentFrameStats(I)Z +HSPLandroid/app/IUiAutomationConnection;->connect(Landroid/accessibilityservice/IAccessibilityServiceClient;I)V +HSPLandroid/app/IUiAutomationConnection;->disconnect()V +HSPLandroid/app/IUiAutomationConnection;->executeShellCommand(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/IUiAutomationConnection;->getWindowAnimationFrameStats()Landroid/view/WindowAnimationFrameStats; +HSPLandroid/app/IUiAutomationConnection;->getWindowContentFrameStats(I)Landroid/view/WindowContentFrameStats; +HSPLandroid/app/IUiAutomationConnection;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/app/IUiAutomationConnection;->injectInputEvent(Landroid/view/InputEvent;Z)Z +HSPLandroid/app/IUiAutomationConnection;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/app/IUiAutomationConnection;->setRotation(I)Z +HSPLandroid/app/IUiAutomationConnection;->shutdown()V +HSPLandroid/app/IUiAutomationConnection;->takeScreenshot(II)Landroid/graphics/Bitmap; +HSPLandroid/app/IUiModeManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IUiModeManager$Stub$Proxy;->getCurrentModeType()I +HSPLandroid/app/IUiModeManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiModeManager; +HSPLandroid/app/IUiModeManager;->disableCarMode(I)V +HSPLandroid/app/IUiModeManager;->enableCarMode(I)V +HSPLandroid/app/IUiModeManager;->getCurrentModeType()I +HSPLandroid/app/IUiModeManager;->getNightMode()I +HSPLandroid/app/IUiModeManager;->isNightModeLocked()Z +HSPLandroid/app/IUiModeManager;->isUiModeLocked()Z +HSPLandroid/app/IUiModeManager;->setNightMode(I)V +HSPLandroid/app/IUserSwitchObserver$Stub;->()V +HSPLandroid/app/IUserSwitchObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IUserSwitchObserver;->onForegroundProfileSwitch(I)V +HSPLandroid/app/IUserSwitchObserver;->onLockedBootComplete(I)V +HSPLandroid/app/IUserSwitchObserver;->onUserSwitchComplete(I)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getHeightHint()I +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperColors(II)Landroid/app/WallpaperColors; +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWidthHint()I +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->isWallpaperSupported(Ljava/lang/String;)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z +HSPLandroid/app/IWallpaperManager$Stub$Proxy;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager; +HSPLandroid/app/IWallpaperManager;->clearWallpaper(Ljava/lang/String;II)V +HSPLandroid/app/IWallpaperManager;->getHeightHint()I +HSPLandroid/app/IWallpaperManager;->getName()Ljava/lang/String; +HSPLandroid/app/IWallpaperManager;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/IWallpaperManager;->getWallpaperColors(II)Landroid/app/WallpaperColors; +HSPLandroid/app/IWallpaperManager;->getWallpaperIdForUser(II)I +HSPLandroid/app/IWallpaperManager;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; +HSPLandroid/app/IWallpaperManager;->getWidthHint()I +HSPLandroid/app/IWallpaperManager;->hasNamedWallpaper(Ljava/lang/String;)Z +HSPLandroid/app/IWallpaperManager;->isSetWallpaperAllowed(Ljava/lang/String;)Z +HSPLandroid/app/IWallpaperManager;->isWallpaperBackupEligible(II)Z +HSPLandroid/app/IWallpaperManager;->isWallpaperSupported(Ljava/lang/String;)Z +HSPLandroid/app/IWallpaperManager;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +HSPLandroid/app/IWallpaperManager;->setDimensionHints(IILjava/lang/String;)V +HSPLandroid/app/IWallpaperManager;->setDisplayPadding(Landroid/graphics/Rect;Ljava/lang/String;)V +HSPLandroid/app/IWallpaperManager;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z +HSPLandroid/app/IWallpaperManager;->setWallpaper(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;ZLandroid/os/Bundle;ILandroid/app/IWallpaperManagerCallback;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/IWallpaperManager;->setWallpaperComponent(Landroid/content/ComponentName;)V +HSPLandroid/app/IWallpaperManager;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;I)V +HSPLandroid/app/IWallpaperManager;->settingsRestored()V +HSPLandroid/app/IWallpaperManager;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +HSPLandroid/app/IWallpaperManagerCallback$Stub;->()V +HSPLandroid/app/IWallpaperManagerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/IWallpaperManagerCallback;->onWallpaperChanged()V +HSPLandroid/app/IWallpaperManagerCallback;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V +HSPLandroid/app/InstantAppResolverService$1;->(Landroid/app/InstantAppResolverService;)V +HSPLandroid/app/InstantAppResolverService$ServiceHandler;->(Landroid/app/InstantAppResolverService;Landroid/os/Looper;)V +HSPLandroid/app/InstantAppResolverService;->()V +HSPLandroid/app/InstantAppResolverService;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/app/InstantAppResolverService;->getLooper()Landroid/os/Looper; +HSPLandroid/app/InstantAppResolverService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/app/Instrumentation$EmptyRunnable;->()V +HSPLandroid/app/Instrumentation$EmptyRunnable;->(Landroid/app/Instrumentation$EmptyRunnable;)V +HSPLandroid/app/Instrumentation$EmptyRunnable;->run()V +HSPLandroid/app/Instrumentation$Idler;->(Ljava/lang/Runnable;)V +HSPLandroid/app/Instrumentation$Idler;->queueIdle()Z +HSPLandroid/app/Instrumentation$Idler;->waitForIdle()V +HSPLandroid/app/Instrumentation$InstrumentationThread;->(Landroid/app/Instrumentation;Ljava/lang/String;)V +HSPLandroid/app/Instrumentation$InstrumentationThread;->run()V +HSPLandroid/app/Instrumentation$SyncRunnable;->(Ljava/lang/Runnable;)V +HSPLandroid/app/Instrumentation$SyncRunnable;->run()V +HSPLandroid/app/Instrumentation$SyncRunnable;->waitForComplete()V +HSPLandroid/app/Instrumentation;->-get0(Landroid/app/Instrumentation;)Z +HSPLandroid/app/Instrumentation;->()V +HSPLandroid/app/Instrumentation;->callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->callActivityOnNewIntent(Landroid/app/Activity;Landroid/content/Intent;)V +HSPLandroid/app/Instrumentation;->callActivityOnNewIntent(Landroid/app/Activity;Lcom/android/internal/content/ReferrerIntent;)V +HSPLandroid/app/Instrumentation;->callActivityOnPause(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->callActivityOnResume(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->callActivityOnStart(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callActivityOnStop(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callActivityOnUserLeaving(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->callApplicationOnCreate(Landroid/app/Application;)V +HSPLandroid/app/Instrumentation;->checkStartActivityResult(ILjava/lang/Object;)V +HSPLandroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; +HSPLandroid/app/Instrumentation;->getComponentName()Landroid/content/ComponentName; +HSPLandroid/app/Instrumentation;->getContext()Landroid/content/Context; +HSPLandroid/app/Instrumentation;->getTargetContext()Landroid/content/Context; +HSPLandroid/app/Instrumentation;->init(Landroid/app/ActivityThread;Landroid/content/Context;Landroid/content/Context;Landroid/content/ComponentName;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;)V +HSPLandroid/app/Instrumentation;->newActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; +HSPLandroid/app/Instrumentation;->newApplication(Ljava/lang/Class;Landroid/content/Context;)Landroid/app/Application; +HSPLandroid/app/Instrumentation;->newApplication(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application; +HSPLandroid/app/Instrumentation;->onCreate(Landroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->onStart()V +HSPLandroid/app/Instrumentation;->postPerformCreate(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->prePerformCreate(Landroid/app/Activity;)V +HSPLandroid/app/Instrumentation;->runOnMainSync(Ljava/lang/Runnable;)V +HSPLandroid/app/Instrumentation;->sendStatus(ILandroid/os/Bundle;)V +HSPLandroid/app/Instrumentation;->start()V +HSPLandroid/app/Instrumentation;->validateNotAppThread()V +HSPLandroid/app/Instrumentation;->waitForIdleSync()V +HSPLandroid/app/IntentReceiverLeaked;->(Ljava/lang/String;)V +HSPLandroid/app/IntentService$ServiceHandler;->(Landroid/app/IntentService;Landroid/os/Looper;)V +HSPLandroid/app/IntentService$ServiceHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/IntentService;->(Ljava/lang/String;)V +HSPLandroid/app/IntentService;->onCreate()V +HSPLandroid/app/IntentService;->onDestroy()V +HSPLandroid/app/IntentService;->onHandleIntent(Landroid/content/Intent;)V +HSPLandroid/app/IntentService;->onStart(Landroid/content/Intent;I)V +HSPLandroid/app/IntentService;->onStartCommand(Landroid/content/Intent;II)I +HSPLandroid/app/JobSchedulerImpl;->(Landroid/app/job/IJobScheduler;)V +HSPLandroid/app/JobSchedulerImpl;->cancel(I)V +HSPLandroid/app/JobSchedulerImpl;->getAllPendingJobs()Ljava/util/List; +HSPLandroid/app/JobSchedulerImpl;->getPendingJob(I)Landroid/app/job/JobInfo; +HSPLandroid/app/JobSchedulerImpl;->schedule(Landroid/app/job/JobInfo;)I +HSPLandroid/app/KeyguardManager$KeyguardLock;->(Landroid/app/KeyguardManager;Ljava/lang/String;)V +HSPLandroid/app/KeyguardManager$KeyguardLock;->disableKeyguard()V +HSPLandroid/app/KeyguardManager;->-get0(Landroid/app/KeyguardManager;)Landroid/view/IWindowManager; +HSPLandroid/app/KeyguardManager;->(Landroid/content/Context;)V +HSPLandroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z +HSPLandroid/app/KeyguardManager;->isDeviceLocked()Z +HSPLandroid/app/KeyguardManager;->isDeviceLocked(I)Z +HSPLandroid/app/KeyguardManager;->isDeviceSecure()Z +HSPLandroid/app/KeyguardManager;->isDeviceSecure(I)Z +HSPLandroid/app/KeyguardManager;->isKeyguardLocked()Z +HSPLandroid/app/KeyguardManager;->isKeyguardSecure()Z +HSPLandroid/app/KeyguardManager;->newKeyguardLock(Ljava/lang/String;)Landroid/app/KeyguardManager$KeyguardLock; +HSPLandroid/app/ListFragment$1;->(Landroid/app/ListFragment;)V +HSPLandroid/app/ListFragment$1;->run()V +HSPLandroid/app/ListFragment$2;->(Landroid/app/ListFragment;)V +HSPLandroid/app/ListFragment;->()V +HSPLandroid/app/ListFragment;->ensureList()V +HSPLandroid/app/ListFragment;->onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V +HSPLandroid/app/ListFragment;->setListAdapter(Landroid/widget/ListAdapter;)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->(Landroid/app/LoadedApk$ReceiverDispatcher;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable; +HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_51583()V +HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->(Landroid/app/LoadedApk$ReceiverDispatcher;Z)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher;->(Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher;->getIIntentReceiver()Landroid/content/IIntentReceiver; +HSPLandroid/app/LoadedApk$ReceiverDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HSPLandroid/app/LoadedApk$ReceiverDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;->()V +HSPLandroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;->(Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;->(Landroid/app/LoadedApk$ServiceDispatcher;Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$InnerConnection;->(Landroid/app/LoadedApk$ServiceDispatcher;)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$InnerConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$RunConnection;->(Landroid/app/LoadedApk$ServiceDispatcher;Landroid/content/ComponentName;Landroid/os/IBinder;IZ)V +HSPLandroid/app/LoadedApk$ServiceDispatcher$RunConnection;->run()V +HSPLandroid/app/LoadedApk$ServiceDispatcher;->(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;I)V +HSPLandroid/app/LoadedApk$ServiceDispatcher;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V +HSPLandroid/app/LoadedApk$ServiceDispatcher;->doConnected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V +HSPLandroid/app/LoadedApk$ServiceDispatcher;->doForget()V +HSPLandroid/app/LoadedApk$ServiceDispatcher;->getFlags()I +HSPLandroid/app/LoadedApk$ServiceDispatcher;->getIServiceConnection()Landroid/app/IServiceConnection; +HSPLandroid/app/LoadedApk$ServiceDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/LoadedApk$WarningContextClassLoader;->()V +HSPLandroid/app/LoadedApk$WarningContextClassLoader;->(Landroid/app/LoadedApk$WarningContextClassLoader;)V +HSPLandroid/app/LoadedApk;->(Landroid/app/ActivityThread;)V +HSPLandroid/app/LoadedApk;->(Landroid/app/ActivityThread;Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;ZZZ)V +HSPLandroid/app/LoadedApk;->adjustNativeLibraryPaths(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/LoadedApk;->appendApkLibPathIfNeeded(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V +HSPLandroid/app/LoadedApk;->createOrUpdateClassLoaderLocked(Ljava/util/List;)V +HSPLandroid/app/LoadedApk;->forgetReceiverDispatcher(Landroid/content/Context;Landroid/content/BroadcastReceiver;)Landroid/content/IIntentReceiver; +HSPLandroid/app/LoadedApk;->forgetServiceDispatcher(Landroid/content/Context;Landroid/content/ServiceConnection;)Landroid/app/IServiceConnection; +HSPLandroid/app/LoadedApk;->getAppDir()Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getApplication()Landroid/app/Application; +HSPLandroid/app/LoadedApk;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/app/LoadedApk;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/app/LoadedApk;->getClassLoader()Ljava/lang/ClassLoader; +HSPLandroid/app/LoadedApk;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; +HSPLandroid/app/LoadedApk;->getCredentialProtectedDataDirFile()Ljava/io/File; +HSPLandroid/app/LoadedApk;->getDataDirFile()Ljava/io/File; +HSPLandroid/app/LoadedApk;->getDeviceProtectedDataDirFile()Ljava/io/File; +HSPLandroid/app/LoadedApk;->getLibDir()Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getLibrariesFor(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getOverlayDirs()[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getPackageName()Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getPrimaryProfileFile(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/app/LoadedApk;->getReceiverDispatcher(Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)Landroid/content/IIntentReceiver; +HSPLandroid/app/LoadedApk;->getResDir()Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getResources()Landroid/content/res/Resources; +HSPLandroid/app/LoadedApk;->getServiceDispatcher(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;I)Landroid/app/IServiceConnection; +HSPLandroid/app/LoadedApk;->getSplitAppDirs()[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getSplitClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLandroid/app/LoadedApk;->getSplitPaths(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->getSplitResDirs()[Ljava/lang/String; +HSPLandroid/app/LoadedApk;->initializeJavaContextClassLoader()V +HSPLandroid/app/LoadedApk;->isSecurityViolation()Z +HSPLandroid/app/LoadedApk;->makeApplication(ZLandroid/app/Instrumentation;)Landroid/app/Application; +HSPLandroid/app/LoadedApk;->makePaths(Landroid/app/ActivityThread;ZLandroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;)V +HSPLandroid/app/LoadedApk;->removeContextRegistrations(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/LoadedApk;->rewriteRValues(Ljava/lang/ClassLoader;Ljava/lang/String;I)V +HSPLandroid/app/LoadedApk;->setApplicationInfo(Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/app/LoadedApk;->setupJitProfileSupport()V +HSPLandroid/app/LoaderManager$LoaderCallbacks;->onCreateLoader(ILandroid/os/Bundle;)Landroid/content/Loader; +HSPLandroid/app/LoaderManager$LoaderCallbacks;->onLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V +HSPLandroid/app/LoaderManager$LoaderCallbacks;->onLoaderReset(Landroid/content/Loader;)V +HSPLandroid/app/LoaderManager;->()V +HSPLandroid/app/LoaderManager;->destroyLoader(I)V +HSPLandroid/app/LoaderManager;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HSPLandroid/app/LoaderManager;->getLoader(I)Landroid/content/Loader; +HSPLandroid/app/LoaderManager;->initLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader; +HSPLandroid/app/LoaderManager;->restartLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader; +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->(Landroid/app/LoaderManagerImpl;ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->callOnLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->destroy()V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->onLoadCanceled(Landroid/content/Loader;)V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->onLoadComplete(Landroid/content/Loader;Ljava/lang/Object;)V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->reportStart()V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->start()V +HSPLandroid/app/LoaderManagerImpl$LoaderInfo;->stop()V +HSPLandroid/app/LoaderManagerImpl;->-get0(Landroid/app/LoaderManagerImpl;)Landroid/app/FragmentHostCallback; +HSPLandroid/app/LoaderManagerImpl;->(Ljava/lang/String;Landroid/app/FragmentHostCallback;Z)V +HSPLandroid/app/LoaderManagerImpl;->createAndInstallLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/app/LoaderManagerImpl$LoaderInfo; +HSPLandroid/app/LoaderManagerImpl;->createLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/app/LoaderManagerImpl$LoaderInfo; +HSPLandroid/app/LoaderManagerImpl;->destroyLoader(I)V +HSPLandroid/app/LoaderManagerImpl;->doReportStart()V +HSPLandroid/app/LoaderManagerImpl;->doStart()V +HSPLandroid/app/LoaderManagerImpl;->doStop()V +HSPLandroid/app/LoaderManagerImpl;->finishRetain()V +HSPLandroid/app/LoaderManagerImpl;->getLoader(I)Landroid/content/Loader; +HSPLandroid/app/LoaderManagerImpl;->hasRunningLoaders()Z +HSPLandroid/app/LoaderManagerImpl;->initLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader; +HSPLandroid/app/LoaderManagerImpl;->installLoader(Landroid/app/LoaderManagerImpl$LoaderInfo;)V +HSPLandroid/app/LoaderManagerImpl;->restartLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader; +HSPLandroid/app/Notification$1;->()V +HSPLandroid/app/Notification$Action$1;->()V +HSPLandroid/app/Notification$Builder;->-get2(Landroid/app/Notification$Builder;)Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->-wrap15(Landroid/app/Notification$Builder;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Landroid/app/Notification;)V +HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/app/Notification$Builder;->applyStandardTemplate(I)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->applyStandardTemplate(ILandroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->bindExpandButton(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->bindHeaderAppName(Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->bindHeaderChronometerAndTime(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->bindHeaderText(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->bindLargeIcon(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->bindNotificationHeader(Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->bindProfileBadge(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->bindSmallIcon(Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->createBigContentView()Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createContentView()Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createContentView(Z)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createHeadsUpContentView()Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->createHeadsUpContentView(Z)Landroid/widget/RemoteViews; +HSPLandroid/app/Notification$Builder;->ensureColors()V +HSPLandroid/app/Notification$Builder;->getAllExtras()Landroid/os/Bundle; +HSPLandroid/app/Notification$Builder;->getBackgroundColor()I +HSPLandroid/app/Notification$Builder;->getBaseLayoutResource()I +HSPLandroid/app/Notification$Builder;->getColorUtil()Lcom/android/internal/util/NotificationColorUtil; +HSPLandroid/app/Notification$Builder;->getPrimaryHighlightColor()I +HSPLandroid/app/Notification$Builder;->getProfileBadge()Landroid/graphics/Bitmap; +HSPLandroid/app/Notification$Builder;->getProfileBadgeDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/app/Notification$Builder;->handleProgressBar(ZLandroid/widget/RemoteViews;Landroid/os/Bundle;)Z +HSPLandroid/app/Notification$Builder;->hasForegroundColor()Z +HSPLandroid/app/Notification$Builder;->isColorized()Z +HSPLandroid/app/Notification$Builder;->isLegacy()Z +HSPLandroid/app/Notification$Builder;->loadHeaderAppName()Ljava/lang/String; +HSPLandroid/app/Notification$Builder;->makeHeaderExpanded(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->processLegacyText(Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->processSmallIconColor(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->processTextSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification$Builder;->resetContentMargins(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resetNotificationHeader(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resetStandardTemplate(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->resolveContrastColor()I +HSPLandroid/app/Notification$Builder;->sanitizeColor()V +HSPLandroid/app/Notification$Builder;->setAutoCancel(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setBadgeIconType(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setCategory(Ljava/lang/String;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setChannelId(Ljava/lang/String;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setColor(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentMinHeight(Landroid/widget/RemoteViews;Z)V +HSPLandroid/app/Notification$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setCustomContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setDefaults(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setFlag(IZ)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setFullScreenIntent(Landroid/app/PendingIntent;Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setGroup(Ljava/lang/String;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setGroupAlertBehavior(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setGroupSummary(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setLargeIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setLights(III)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setLocalOnly(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setNumber(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setOngoing(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setOnlyAlertOnce(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setPriority(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setProgress(IIZ)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setPublicVersion(Landroid/app/Notification;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setRemoteInputHistory([Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setShortcutId(Ljava/lang/String;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setShowWhen(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSmallIcon(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSmallIcon(II)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSortKey(Ljava/lang/String;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSound(Landroid/net/Uri;I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSubText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setTextViewColorPrimary(Landroid/widget/RemoteViews;I)V +HSPLandroid/app/Notification$Builder;->setTextViewColorSecondary(Landroid/widget/RemoteViews;I)V +HSPLandroid/app/Notification$Builder;->setTicker(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setTicker(Ljava/lang/CharSequence;Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setTimeoutAfter(J)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setUsesChronometer(Z)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setVibrate([J)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setVisibility(I)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setWhen(J)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->showsTimeOrChronometer()Z +HSPLandroid/app/Notification$Builder;->updateBackgroundColor(Landroid/widget/RemoteViews;)V +HSPLandroid/app/Notification$Builder;->useExistingRemoteView()Z +HSPLandroid/app/Notification$BuilderRemoteViews;->(Landroid/content/pm/ApplicationInfo;I)V +HSPLandroid/app/Notification$StandardTemplateParams;->()V +HSPLandroid/app/Notification$StandardTemplateParams;->(Landroid/app/Notification$StandardTemplateParams;)V +HSPLandroid/app/Notification$StandardTemplateParams;->fillTextsFrom(Landroid/app/Notification$Builder;)Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification$StandardTemplateParams;->reset()Landroid/app/Notification$StandardTemplateParams; +HSPLandroid/app/Notification;->-get1(Landroid/app/Notification;)Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->-get2(Landroid/app/Notification;)Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->-set0(Landroid/app/Notification;J)J +HSPLandroid/app/Notification;->-set1(Landroid/app/Notification;I)I +HSPLandroid/app/Notification;->-set10(Landroid/app/Notification;J)J +HSPLandroid/app/Notification;->-set2(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/Notification;->-set3(Landroid/app/Notification;I)I +HSPLandroid/app/Notification;->-set4(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/Notification;->-set5(Landroid/app/Notification;Landroid/graphics/drawable/Icon;)Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->-set7(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/Notification;->-set9(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/Notification;->-wrap1(Landroid/app/Notification;)Z +HSPLandroid/app/Notification;->()V +HSPLandroid/app/Notification;->(Landroid/os/Parcel;)V +HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/Context;Landroid/app/Notification;)V +HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/pm/ApplicationInfo;Landroid/app/Notification;)V +HSPLandroid/app/Notification;->getGroup()Ljava/lang/String; +HSPLandroid/app/Notification;->getLargeIcon()Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->getNotificationStyle()Ljava/lang/Class; +HSPLandroid/app/Notification;->getSmallIcon()Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification;->getSortKey()Ljava/lang/String; +HSPLandroid/app/Notification;->hasLargeIcon()Z +HSPLandroid/app/Notification;->isColorized()Z +HSPLandroid/app/Notification;->isColorizedMedia()Z +HSPLandroid/app/Notification;->lambda$-android_app_Notification_84701(Landroid/os/Parcel;Landroid/app/PendingIntent;Landroid/os/Parcel;I)V +HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V +HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V +HSPLandroid/app/Notification;->reduceImageSizesForRemoteView(Landroid/widget/RemoteViews;Landroid/content/Context;Z)V +HSPLandroid/app/Notification;->removeTextSizeSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification;->safeCharSequence(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V +HSPLandroid/app/Notification;->showsTime()Z +HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V +HSPLandroid/app/NotificationChannel$1;->()V +HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannel; +HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/NotificationChannel;->(Landroid/os/Parcel;)V +HSPLandroid/app/NotificationChannel;->(Ljava/lang/String;Ljava/lang/CharSequence;I)V +HSPLandroid/app/NotificationChannel;->enableLights(Z)V +HSPLandroid/app/NotificationChannel;->enableVibration(Z)V +HSPLandroid/app/NotificationChannel;->getId()Ljava/lang/String; +HSPLandroid/app/NotificationChannel;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/NotificationChannel;->setGroup(Ljava/lang/String;)V +HSPLandroid/app/NotificationChannel;->setShowBadge(Z)V +HSPLandroid/app/NotificationChannel;->setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)V +HSPLandroid/app/NotificationChannel;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/NotificationChannelGroup$1;->()V +HSPLandroid/app/NotificationChannelGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannelGroup; +HSPLandroid/app/NotificationChannelGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/NotificationChannelGroup;->(Landroid/os/Parcel;)V +HSPLandroid/app/NotificationChannelGroup;->(Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/app/NotificationChannelGroup;->getId()Ljava/lang/String; +HSPLandroid/app/NotificationChannelGroup;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/NotificationChannelGroup;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/NotificationManager;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/NotificationManager;->areNotificationsEnabled()Z +HSPLandroid/app/NotificationManager;->cancel(I)V +HSPLandroid/app/NotificationManager;->cancel(Ljava/lang/String;I)V +HSPLandroid/app/NotificationManager;->cancelAll()V +HSPLandroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V +HSPLandroid/app/NotificationManager;->createNotificationChannel(Landroid/app/NotificationChannel;)V +HSPLandroid/app/NotificationManager;->createNotificationChannelGroup(Landroid/app/NotificationChannelGroup;)V +HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util/List;)V +HSPLandroid/app/NotificationManager;->createNotificationChannels(Ljava/util/List;)V +HSPLandroid/app/NotificationManager;->deleteNotificationChannel(Ljava/lang/String;)V +HSPLandroid/app/NotificationManager;->from(Landroid/content/Context;)Landroid/app/NotificationManager; +HSPLandroid/app/NotificationManager;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification; +HSPLandroid/app/NotificationManager;->getCurrentInterruptionFilter()I +HSPLandroid/app/NotificationManager;->getEffectsSuppressor()Landroid/content/ComponentName; +HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/NotificationManager;->getNotificationChannelGroups()Ljava/util/List; +HSPLandroid/app/NotificationManager;->getNotificationChannels()Ljava/util/List; +HSPLandroid/app/NotificationManager;->getService()Landroid/app/INotificationManager; +HSPLandroid/app/NotificationManager;->getZenMode()I +HSPLandroid/app/NotificationManager;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I +HSPLandroid/app/OnActivityPausedListener;->onPaused(Landroid/app/Activity;)V +HSPLandroid/app/PendingIntent$1;->()V +HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/PendingIntent$OnMarshaledListener;->onMarshaled(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V +HSPLandroid/app/PendingIntent;->(Landroid/content/IIntentSender;)V +HSPLandroid/app/PendingIntent;->(Landroid/os/IBinder;Ljava/lang/Object;)V +HSPLandroid/app/PendingIntent;->buildServicePendingIntent(Landroid/content/Context;ILandroid/content/Intent;II)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->hashCode()I +HSPLandroid/app/PendingIntent;->send()V +HSPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/app/PendingIntent;->setOnMarshaledListener(Landroid/app/PendingIntent$OnMarshaledListener;)V +HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/QueuedWork$QueuedWorkHandler;->(Landroid/os/Looper;)V +HSPLandroid/app/QueuedWork$QueuedWorkHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/QueuedWork;->-wrap0()V +HSPLandroid/app/QueuedWork;->addFinisher(Ljava/lang/Runnable;)V +HSPLandroid/app/QueuedWork;->getHandler()Landroid/os/Handler; +HSPLandroid/app/QueuedWork;->hasPendingWork()Z +HSPLandroid/app/QueuedWork;->processPendingWork()V +HSPLandroid/app/QueuedWork;->queue(Ljava/lang/Runnable;Z)V +HSPLandroid/app/QueuedWork;->removeFinisher(Ljava/lang/Runnable;)V +HSPLandroid/app/QueuedWork;->waitToFinish()V +HSPLandroid/app/ReceiverRestrictedContext;->(Landroid/content/Context;)V +HSPLandroid/app/ReceiverRestrictedContext;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; +HSPLandroid/app/ReceiverRestrictedContext;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; +HSPLandroid/app/RemoteAction$1;->()V +HSPLandroid/app/RemoteAction;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V +HSPLandroid/app/RemoteAction;->setEnabled(Z)V +HSPLandroid/app/ResourcesManager$1;->()V +HSPLandroid/app/ResourcesManager$1;->test(Ljava/lang/Object;)Z +HSPLandroid/app/ResourcesManager$1;->test(Ljava/lang/ref/WeakReference;)Z +HSPLandroid/app/ResourcesManager$ActivityResources;->()V +HSPLandroid/app/ResourcesManager$ActivityResources;->(Landroid/app/ResourcesManager$ActivityResources;)V +HSPLandroid/app/ResourcesManager;->()V +HSPLandroid/app/ResourcesManager;->applyCompatConfigurationLocked(ILandroid/content/res/Configuration;)Z +HSPLandroid/app/ResourcesManager;->applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Z +HSPLandroid/app/ResourcesManager;->createAssetManager(Landroid/content/res/ResourcesKey;)Landroid/content/res/AssetManager; +HSPLandroid/app/ResourcesManager;->createBaseActivityResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;)Landroid/content/res/Resources; +HSPLandroid/app/ResourcesManager;->createResourcesImpl(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; +HSPLandroid/app/ResourcesManager;->findResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl; +HSPLandroid/app/ResourcesManager;->generateConfig(Landroid/content/res/ResourcesKey;Landroid/util/DisplayMetrics;)Landroid/content/res/Configuration; +HSPLandroid/app/ResourcesManager;->getAdjustedDisplay(ILandroid/content/res/Resources;)Landroid/view/Display; +HSPLandroid/app/ResourcesManager;->getAdjustedDisplay(ILandroid/view/DisplayAdjustments;)Landroid/view/Display; +HSPLandroid/app/ResourcesManager;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/app/ResourcesManager;->getDisplayMetrics()Landroid/util/DisplayMetrics; +HSPLandroid/app/ResourcesManager;->getDisplayMetrics(ILandroid/view/DisplayAdjustments;)Landroid/util/DisplayMetrics; +HSPLandroid/app/ResourcesManager;->getInstance()Landroid/app/ResourcesManager; +HSPLandroid/app/ResourcesManager;->getOrCreateActivityResourcesStructLocked(Landroid/os/IBinder;)Landroid/app/ResourcesManager$ActivityResources; +HSPLandroid/app/ResourcesManager;->getOrCreateResources(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Ljava/lang/ClassLoader;)Landroid/content/res/Resources; +HSPLandroid/app/ResourcesManager;->getOrCreateResourcesForActivityLocked(Landroid/os/IBinder;Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources; +HSPLandroid/app/ResourcesManager;->getOrCreateResourcesLocked(Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources; +HSPLandroid/app/ResourcesManager;->getResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;)Landroid/content/res/Resources; +HSPLandroid/app/ResourcesManager;->isSameResourcesOverrideConfig(Landroid/os/IBinder;Landroid/content/res/Configuration;)Z +HSPLandroid/app/ResourcesManager;->updateResourcesForActivity(Landroid/os/IBinder;Landroid/content/res/Configuration;IZ)V +HSPLandroid/app/ResultInfo$1;->()V +HSPLandroid/app/ResultInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ResultInfo; +HSPLandroid/app/ResultInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ResultInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/SearchManager;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/SearchManager;->getAssistIntent(Z)Landroid/content/Intent; +HSPLandroid/app/Service;->()V +HSPLandroid/app/Service;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Ljava/lang/String;Landroid/os/IBinder;Landroid/app/Application;Ljava/lang/Object;)V +HSPLandroid/app/Service;->detachAndCleanUp()V +HSPLandroid/app/Service;->getApplication()Landroid/app/Application; +HSPLandroid/app/Service;->getClassName()Ljava/lang/String; +HSPLandroid/app/Service;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/app/Service;->onCreate()V +HSPLandroid/app/Service;->onDestroy()V +HSPLandroid/app/Service;->onStart(Landroid/content/Intent;I)V +HSPLandroid/app/Service;->onStartCommand(Landroid/content/Intent;II)I +HSPLandroid/app/Service;->onUnbind(Landroid/content/Intent;)Z +HSPLandroid/app/Service;->startForeground(ILandroid/app/Notification;)V +HSPLandroid/app/Service;->stopForeground(I)V +HSPLandroid/app/Service;->stopForeground(Z)V +HSPLandroid/app/Service;->stopSelf()V +HSPLandroid/app/Service;->stopSelf(I)V +HSPLandroid/app/ServiceConnectionLeaked;->(Ljava/lang/String;)V +HSPLandroid/app/ServiceStartArgs$1;->()V +HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ServiceStartArgs; +HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/ServiceStartArgs;->(Landroid/os/Parcel;)V +HSPLandroid/app/SharedElementCallback$1;->()V +HSPLandroid/app/SharedElementCallback;->()V +HSPLandroid/app/SharedPreferencesImpl$1;->(Landroid/app/SharedPreferencesImpl;Ljava/lang/String;)V +HSPLandroid/app/SharedPreferencesImpl$1;->run()V +HSPLandroid/app/SharedPreferencesImpl$2;->(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;ZLjava/lang/Runnable;)V +HSPLandroid/app/SharedPreferencesImpl$2;->run()V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;J)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;->run()V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$2;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Ljava/lang/Runnable;)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$2;->run()V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$3;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl$3;->run()V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->-wrap0(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->(Landroid/app/SharedPreferencesImpl;)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->apply()V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->clear()Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commit()Z +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->(JLjava/util/List;Ljava/util/Set;Ljava/util/Map;)V +HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->(JLjava/util/List;Ljava/util/Set;Ljava/util/Map;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V +HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->setDiskWriteResult(ZZ)V +HSPLandroid/app/SharedPreferencesImpl;->-get0(Landroid/app/SharedPreferencesImpl;)J +HSPLandroid/app/SharedPreferencesImpl;->-get1(Landroid/app/SharedPreferencesImpl;)I +HSPLandroid/app/SharedPreferencesImpl;->-get2(Landroid/app/SharedPreferencesImpl;)Ljava/util/WeakHashMap; +HSPLandroid/app/SharedPreferencesImpl;->-get3(Landroid/app/SharedPreferencesImpl;)Ljava/lang/Object; +HSPLandroid/app/SharedPreferencesImpl;->-get4(Landroid/app/SharedPreferencesImpl;)Ljava/util/Map; +HSPLandroid/app/SharedPreferencesImpl;->-get5(Landroid/app/SharedPreferencesImpl;)Ljava/lang/Object; +HSPLandroid/app/SharedPreferencesImpl;->-set0(Landroid/app/SharedPreferencesImpl;J)J +HSPLandroid/app/SharedPreferencesImpl;->-set1(Landroid/app/SharedPreferencesImpl;I)I +HSPLandroid/app/SharedPreferencesImpl;->-set2(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)Ljava/util/Map; +HSPLandroid/app/SharedPreferencesImpl;->-wrap0(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V +HSPLandroid/app/SharedPreferencesImpl;->-wrap1(Landroid/app/SharedPreferencesImpl;)V +HSPLandroid/app/SharedPreferencesImpl;->-wrap2(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V +HSPLandroid/app/SharedPreferencesImpl;->(Ljava/io/File;I)V +HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V +HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z +HSPLandroid/app/SharedPreferencesImpl;->createFileOutputStream(Ljava/io/File;)Ljava/io/FileOutputStream; +HSPLandroid/app/SharedPreferencesImpl;->edit()Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl;->enqueueDiskWrite(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V +HSPLandroid/app/SharedPreferencesImpl;->getAll()Ljava/util/Map; +HSPLandroid/app/SharedPreferencesImpl;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/app/SharedPreferencesImpl;->getFloat(Ljava/lang/String;F)F +HSPLandroid/app/SharedPreferencesImpl;->getInt(Ljava/lang/String;I)I +HSPLandroid/app/SharedPreferencesImpl;->getLong(Ljava/lang/String;J)J +HSPLandroid/app/SharedPreferencesImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/SharedPreferencesImpl;->getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set; +HSPLandroid/app/SharedPreferencesImpl;->hasFileChangedUnexpectedly()Z +HSPLandroid/app/SharedPreferencesImpl;->loadFromDisk()V +HSPLandroid/app/SharedPreferencesImpl;->makeBackupFile(Ljava/io/File;)Ljava/io/File; +HSPLandroid/app/SharedPreferencesImpl;->registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroid/app/SharedPreferencesImpl;->startLoadFromDisk()V +HSPLandroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V +HSPLandroid/app/SharedPreferencesImpl;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V +HSPLandroid/app/StatusBarManager;->(Landroid/content/Context;)V +HSPLandroid/app/StatusBarManager;->disable(I)V +HSPLandroid/app/StatusBarManager;->getService()Lcom/android/internal/statusbar/IStatusBarService; +HSPLandroid/app/SynchronousUserSwitchObserver;->()V +HSPLandroid/app/SynchronousUserSwitchObserver;->onUserSwitching(I)V +HSPLandroid/app/SystemServiceRegistry$10;->()V +HSPLandroid/app/SystemServiceRegistry$11;->()V +HSPLandroid/app/SystemServiceRegistry$11;->createService(Landroid/app/ContextImpl;)Landroid/content/ClipboardManager; +HSPLandroid/app/SystemServiceRegistry$11;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$12;->()V +HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/content/Context;)Landroid/net/ConnectivityManager; +HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$13;->()V +HSPLandroid/app/SystemServiceRegistry$14;->()V +HSPLandroid/app/SystemServiceRegistry$15;->()V +HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager; +HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$16;->()V +HSPLandroid/app/SystemServiceRegistry$16;->createService(Landroid/app/ContextImpl;)Landroid/app/DownloadManager; +HSPLandroid/app/SystemServiceRegistry$16;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$17;->()V +HSPLandroid/app/SystemServiceRegistry$17;->createService()Landroid/os/BatteryManager; +HSPLandroid/app/SystemServiceRegistry$17;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$18;->()V +HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Landroid/nfc/NfcManager; +HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$19;->()V +HSPLandroid/app/SystemServiceRegistry$1;->()V +HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/AccessibilityManager; +HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$20;->()V +HSPLandroid/app/SystemServiceRegistry$20;->createService()Landroid/hardware/input/InputManager; +HSPLandroid/app/SystemServiceRegistry$20;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$21;->()V +HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager; +HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$22;->()V +HSPLandroid/app/SystemServiceRegistry$22;->createService()Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/app/SystemServiceRegistry$22;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$23;->()V +HSPLandroid/app/SystemServiceRegistry$24;->()V +HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager; +HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$25;->()V +HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater; +HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$26;->()V +HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager; +HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$27;->()V +HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Landroid/net/NetworkPolicyManager; +HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$28;->()V +HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager; +HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$29;->()V +HSPLandroid/app/SystemServiceRegistry$2;->()V +HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/CaptioningManager; +HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$30;->()V +HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager; +HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$31;->()V +HSPLandroid/app/SystemServiceRegistry$32;->()V +HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/app/SearchManager; +HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$33;->()V +HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager; +HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$34;->()V +HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/app/StatusBarManager; +HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$35;->()V +HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager; +HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$36;->()V +HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/StorageStatsManager; +HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$37;->()V +HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyManager; +HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$38;->()V +HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Landroid/telephony/SubscriptionManager; +HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$39;->()V +HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Landroid/telephony/CarrierConfigManager; +HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$3;->()V +HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager; +HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$40;->()V +HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager; +HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$41;->()V +HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Landroid/telephony/euicc/EuiccManager; +HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$42;->()V +HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager; +HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$43;->()V +HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Landroid/hardware/usb/UsbManager; +HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$44;->()V +HSPLandroid/app/SystemServiceRegistry$45;->()V +HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/os/Vibrator; +HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$46;->()V +HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Landroid/app/WallpaperManager; +HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$47;->()V +HSPLandroid/app/SystemServiceRegistry$48;->()V +HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Landroid/net/wifi/WifiManager; +HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$49;->()V +HSPLandroid/app/SystemServiceRegistry$49;->createService()Landroid/net/wifi/p2p/WifiP2pManager; +HSPLandroid/app/SystemServiceRegistry$49;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$4;->()V +HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager; +HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$50;->()V +HSPLandroid/app/SystemServiceRegistry$51;->()V +HSPLandroid/app/SystemServiceRegistry$52;->()V +HSPLandroid/app/SystemServiceRegistry$53;->()V +HSPLandroid/app/SystemServiceRegistry$54;->()V +HSPLandroid/app/SystemServiceRegistry$54;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager; +HSPLandroid/app/SystemServiceRegistry$54;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$55;->()V +HSPLandroid/app/SystemServiceRegistry$55;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager; +HSPLandroid/app/SystemServiceRegistry$55;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$56;->()V +HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager; +HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$57;->()V +HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Landroid/hardware/camera2/CameraManager; +HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$58;->()V +HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/LauncherApps; +HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$59;->()V +HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Landroid/content/RestrictionsManager; +HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$5;->()V +HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager; +HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$60;->()V +HSPLandroid/app/SystemServiceRegistry$61;->()V +HSPLandroid/app/SystemServiceRegistry$62;->()V +HSPLandroid/app/SystemServiceRegistry$63;->()V +HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Landroid/media/session/MediaSessionManager; +HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$64;->()V +HSPLandroid/app/SystemServiceRegistry$64;->createService()Landroid/app/trust/TrustManager; +HSPLandroid/app/SystemServiceRegistry$64;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$65;->()V +HSPLandroid/app/SystemServiceRegistry$65;->createService(Landroid/app/ContextImpl;)Landroid/hardware/fingerprint/FingerprintManager; +HSPLandroid/app/SystemServiceRegistry$65;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$66;->()V +HSPLandroid/app/SystemServiceRegistry$67;->()V +HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Landroid/net/NetworkScoreManager; +HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$68;->()V +HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/UsageStatsManager; +HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$69;->()V +HSPLandroid/app/SystemServiceRegistry$6;->()V +HSPLandroid/app/SystemServiceRegistry$6;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager; +HSPLandroid/app/SystemServiceRegistry$6;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$70;->()V +HSPLandroid/app/SystemServiceRegistry$70;->createService()Landroid/app/job/JobScheduler; +HSPLandroid/app/SystemServiceRegistry$70;->createService()Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$71;->()V +HSPLandroid/app/SystemServiceRegistry$72;->()V +HSPLandroid/app/SystemServiceRegistry$73;->()V +HSPLandroid/app/SystemServiceRegistry$73;->createService(Landroid/app/ContextImpl;)Landroid/media/projection/MediaProjectionManager; +HSPLandroid/app/SystemServiceRegistry$73;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$74;->()V +HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager; +HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$75;->()V +HSPLandroid/app/SystemServiceRegistry$76;->()V +HSPLandroid/app/SystemServiceRegistry$77;->()V +HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Landroid/os/HardwarePropertiesManager; +HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$78;->()V +HSPLandroid/app/SystemServiceRegistry$79;->()V +HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager; +HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$7;->()V +HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/media/MediaRouter; +HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$80;->()V +HSPLandroid/app/SystemServiceRegistry$81;->()V +HSPLandroid/app/SystemServiceRegistry$82;->()V +HSPLandroid/app/SystemServiceRegistry$83;->()V +HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager; +HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$84;->()V +HSPLandroid/app/SystemServiceRegistry$85;->()V +HSPLandroid/app/SystemServiceRegistry$8;->()V +HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/bluetooth/BluetoothManager; +HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$9;->()V +HSPLandroid/app/SystemServiceRegistry$CachedServiceFetcher;->()V +HSPLandroid/app/SystemServiceRegistry$CachedServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher;->()V +HSPLandroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher;->createService(Landroid/content/Context;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry$StaticServiceFetcher;->()V +HSPLandroid/app/SystemServiceRegistry$StaticServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry;->-get0()I +HSPLandroid/app/SystemServiceRegistry;->-set0(I)I +HSPLandroid/app/SystemServiceRegistry;->createServiceCache()[Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V +HSPLandroid/app/TaskStackListener;->()V +HSPLandroid/app/TaskStackListener;->onTaskCreated(ILandroid/content/ComponentName;)V +HSPLandroid/app/TaskStackListener;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V +HSPLandroid/app/UiModeManager;->()V +HSPLandroid/app/UiModeManager;->getCurrentModeType()I +HSPLandroid/app/UserSwitchObserver;->()V +HSPLandroid/app/WallpaperColors$1;->()V +HSPLandroid/app/WallpaperColors$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperColors; +HSPLandroid/app/WallpaperColors$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/WallpaperColors;->(Landroid/graphics/Color;Landroid/graphics/Color;Landroid/graphics/Color;I)V +HSPLandroid/app/WallpaperColors;->(Landroid/os/Parcel;)V +HSPLandroid/app/WallpaperColors;->getColorHints()I +HSPLandroid/app/WallpaperColors;->getMainColors()Ljava/util/List; +HSPLandroid/app/WallpaperColors;->getPrimaryColor()Landroid/graphics/Color; +HSPLandroid/app/WallpaperColors;->getSecondaryColor()Landroid/graphics/Color; +HSPLandroid/app/WallpaperColors;->getTertiaryColor()Landroid/graphics/Color; +HSPLandroid/app/WallpaperColors;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/WallpaperInfo$1;->()V +HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperInfo; +HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/WallpaperInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/WallpaperInfo;->getComponent()Landroid/content/ComponentName; +HSPLandroid/app/WallpaperManager$Globals;->-get0(Landroid/app/WallpaperManager$Globals;)Landroid/app/IWallpaperManager; +HSPLandroid/app/WallpaperManager$Globals;->(Landroid/os/Looper;)V +HSPLandroid/app/WallpaperManager$Globals;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;I)V +HSPLandroid/app/WallpaperManager$Globals;->forgetLoadedWallpaper()V +HSPLandroid/app/WallpaperManager$Globals;->getWallpaperColors(II)Landroid/app/WallpaperColors; +HSPLandroid/app/WallpaperManager$Globals;->lambda$-android_app_WallpaperManager$Globals_12368(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/util/Pair;)Z +HSPLandroid/app/WallpaperManager$Globals;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;I)V +HSPLandroid/app/WallpaperManager$OnColorsChangedListener;->onColorsChanged(Landroid/app/WallpaperColors;I)V +HSPLandroid/app/WallpaperManager;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;)V +HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;I)V +HSPLandroid/app/WallpaperManager;->getDesiredMinimumHeight()I +HSPLandroid/app/WallpaperManager;->getDesiredMinimumWidth()I +HSPLandroid/app/WallpaperManager;->getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager; +HSPLandroid/app/WallpaperManager;->getWallpaperColors(I)Landroid/app/WallpaperColors; +HSPLandroid/app/WallpaperManager;->getWallpaperColors(II)Landroid/app/WallpaperColors; +HSPLandroid/app/WallpaperManager;->getWallpaperFile(II)Landroid/os/ParcelFileDescriptor; +HSPLandroid/app/WallpaperManager;->getWallpaperInfo()Landroid/app/WallpaperInfo; +HSPLandroid/app/WallpaperManager;->initGlobals(Landroid/os/Looper;)V +HSPLandroid/app/WallpaperManager;->isWallpaperSupported()Z +HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;)V +HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;I)V +HSPLandroid/app/WallpaperManager;->setWallpaperOffsetSteps(FF)V +HSPLandroid/app/WallpaperManager;->setWallpaperOffsets(Landroid/os/IBinder;FF)V +HSPLandroid/app/admin/DevicePolicyManager;->(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;)V +HSPLandroid/app/admin/DevicePolicyManager;->(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;Z)V +HSPLandroid/app/admin/DevicePolicyManager;->getActiveAdmins()Ljava/util/List; +HSPLandroid/app/admin/DevicePolicyManager;->getActiveAdminsAsUser(I)Ljava/util/List; +HSPLandroid/app/admin/DevicePolicyManager;->getCameraDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentInner(Z)Landroid/content/ComponentName; +HSPLandroid/app/admin/DevicePolicyManager;->getGuestUserDisabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/DevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;I)I +HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwner()Landroid/content/ComponentName; +HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus()I +HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus(I)I +HSPLandroid/app/admin/DevicePolicyManager;->isDeviceManaged()Z +HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerApp(Ljava/lang/String;)Z +HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerAppOnAnyUserInner(Ljava/lang/String;Z)Z +HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerAppOnCallingUser(Ljava/lang/String;)Z +HSPLandroid/app/admin/DevicePolicyManager;->isLockTaskPermitted(Ljava/lang/String;)Z +HSPLandroid/app/admin/DevicePolicyManager;->isProfileOwnerApp(Ljava/lang/String;)Z +HSPLandroid/app/admin/DevicePolicyManager;->myUserId()I +HSPLandroid/app/admin/DevicePolicyManager;->throwIfParentInstance(Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getActiveAdmins(I)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getCameraDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getProfileOwner(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getStorageEncryptionStatus(Ljava/lang/String;I)I +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->hasDeviceOwner()Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isLockTaskPermitted(Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDevicePolicyManager; +HSPLandroid/app/admin/IDevicePolicyManager;->addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->addPersistentPreferredActivity(Landroid/content/ComponentName;Landroid/content/IntentFilter;Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->approveCaCert(Ljava/lang/String;IZ)Z +HSPLandroid/app/admin/IDevicePolicyManager;->bindDeviceAdminServiceAsUser(Landroid/content/ComponentName;Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Landroid/app/IServiceConnection;II)Z +HSPLandroid/app/admin/IDevicePolicyManager;->checkProvisioningPreCondition(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/admin/IDevicePolicyManager;->choosePrivateKeyAlias(ILandroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V +HSPLandroid/app/admin/IDevicePolicyManager;->clearCrossProfileIntentFilters(Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->clearDeviceOwner(Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->clearPackagePersistentPreferredActivities(Landroid/content/ComponentName;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->clearProfileOwner(Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->clearResetPasswordToken(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->createAdminSupportIntent(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/app/admin/IDevicePolicyManager;->createAndManageUser(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/PersistableBundle;I)Landroid/os/UserHandle; +HSPLandroid/app/admin/IDevicePolicyManager;->enableSystemApp(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->enableSystemAppWithIntent(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)I +HSPLandroid/app/admin/IDevicePolicyManager;->enforceCanManageCaCerts(Landroid/content/ComponentName;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->forceRemoveActiveAdmin(Landroid/content/ComponentName;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->forceUpdateUserSetupComplete()V +HSPLandroid/app/admin/IDevicePolicyManager;->getAccountTypesWithManagementDisabled()[Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getAccountTypesWithManagementDisabledAsUser(I)[Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getActiveAdmins(I)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getAffiliationIds(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getAlwaysOnVpnPackage(Landroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/app/admin/IDevicePolicyManager;->getApplicationRestrictionsManagingPackage(Landroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getAutoTimeRequired()Z +HSPLandroid/app/admin/IDevicePolicyManager;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getBluetoothContactSharingDisabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getBluetoothContactSharingDisabledForUser(I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCameraDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCertInstallerPackage(Landroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getCrossProfileCallerIdDisabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCrossProfileCallerIdDisabledForUser(I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCrossProfileContactsSearchDisabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCrossProfileContactsSearchDisabledForUser(I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getCrossProfileWidgetProviders(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getCurrentFailedPasswordAttempts(IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getDelegatePackages(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager;->getDeviceOwnerLockScreenInfo()Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getDeviceOwnerName()Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getDeviceOwnerUserId()I +HSPLandroid/app/admin/IDevicePolicyManager;->getDoNotAskCredentialsOnBoot()Z +HSPLandroid/app/admin/IDevicePolicyManager;->getForceEphemeralUsers(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getGlobalProxyAdmin(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager;->getKeepUninstalledPackages(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getLastBugReportRequestTime()J +HSPLandroid/app/admin/IDevicePolicyManager;->getLastNetworkLogRetrievalTime()J +HSPLandroid/app/admin/IDevicePolicyManager;->getLastSecurityLogRetrievalTime()J +HSPLandroid/app/admin/IDevicePolicyManager;->getLockTaskPackages(Landroid/content/ComponentName;)[Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getLongSupportMessage(Landroid/content/ComponentName;)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getLongSupportMessageForUser(Landroid/content/ComponentName;I)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getMaximumTimeToLock(Landroid/content/ComponentName;IZ)J +HSPLandroid/app/admin/IDevicePolicyManager;->getMaximumTimeToLockForUserAndProfiles(I)J +HSPLandroid/app/admin/IDevicePolicyManager;->getOrganizationColor(Landroid/content/ComponentName;)I +HSPLandroid/app/admin/IDevicePolicyManager;->getOrganizationColorForUser(I)I +HSPLandroid/app/admin/IDevicePolicyManager;->getOrganizationName(Landroid/content/ComponentName;)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getOrganizationNameForUser(I)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getOwnerInstalledCaCerts(Landroid/os/UserHandle;)Landroid/content/pm/StringParceledListSlice; +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordExpiration(Landroid/content/ComponentName;IZ)J +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordExpirationTimeout(Landroid/content/ComponentName;IZ)J +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordHistoryLength(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumLength(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumLetters(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumLowerCase(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumNonLetter(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumNumeric(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumSymbols(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordMinimumUpperCase(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPasswordQuality(Landroid/content/ComponentName;IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPendingSystemUpdate(Landroid/content/ComponentName;)Landroid/app/admin/SystemUpdateInfo; +HSPLandroid/app/admin/IDevicePolicyManager;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPermissionPolicy(Landroid/content/ComponentName;)I +HSPLandroid/app/admin/IDevicePolicyManager;->getPermittedAccessibilityServices(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getPermittedAccessibilityServicesForUser(I)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getPermittedCrossProfileNotificationListeners(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getPermittedInputMethods(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getPermittedInputMethodsForCurrentUser()Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getProfileOwner(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager;->getProfileOwnerName(I)Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->getProfileWithMinimumFailedPasswordsForWipe(IZ)I +HSPLandroid/app/admin/IDevicePolicyManager;->getRemoveWarning(Landroid/content/ComponentName;Landroid/os/RemoteCallback;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;IZ)J +HSPLandroid/app/admin/IDevicePolicyManager;->getRestrictionsProvider(I)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager;->getScreenCaptureDisabled(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getShortSupportMessage(Landroid/content/ComponentName;)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getShortSupportMessageForUser(Landroid/content/ComponentName;I)Ljava/lang/CharSequence; +HSPLandroid/app/admin/IDevicePolicyManager;->getStorageEncryption(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->getStorageEncryptionStatus(Ljava/lang/String;I)I +HSPLandroid/app/admin/IDevicePolicyManager;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; +HSPLandroid/app/admin/IDevicePolicyManager;->getTrustAgentConfiguration(Landroid/content/ComponentName;Landroid/content/ComponentName;IZ)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->getUserProvisioningState()I +HSPLandroid/app/admin/IDevicePolicyManager;->getUserRestrictions(Landroid/content/ComponentName;)Landroid/os/Bundle; +HSPLandroid/app/admin/IDevicePolicyManager;->getWifiMacAddress(Landroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->hasDeviceOwner()Z +HSPLandroid/app/admin/IDevicePolicyManager;->hasGrantedPolicy(Landroid/content/ComponentName;II)Z +HSPLandroid/app/admin/IDevicePolicyManager;->hasUserSetupCompleted()Z +HSPLandroid/app/admin/IDevicePolicyManager;->installCaCert(Landroid/content/ComponentName;Ljava/lang/String;[B)Z +HSPLandroid/app/admin/IDevicePolicyManager;->installKeyPair(Landroid/content/ComponentName;Ljava/lang/String;[B[B[BLjava/lang/String;Z)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isAccessibilityServicePermittedByAdmin(Landroid/content/ComponentName;Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isActivePasswordSufficient(IZ)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isAdminActive(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isAffiliatedUser()Z +HSPLandroid/app/admin/IDevicePolicyManager;->isApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isBackupServiceEnabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isCaCertApproved(Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isCallerApplicationRestrictionsManagingPackage(Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isCurrentInputMethodSetByOwner()Z +HSPLandroid/app/admin/IDevicePolicyManager;->isDeviceProvisioned()Z +HSPLandroid/app/admin/IDevicePolicyManager;->isDeviceProvisioningConfigApplied()Z +HSPLandroid/app/admin/IDevicePolicyManager;->isInputMethodPermittedByAdmin(Landroid/content/ComponentName;Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isLockTaskPermitted(Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isManagedProfile(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isMasterVolumeMuted(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isProfileActivePasswordSufficientForParent(I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isProvisioningAllowed(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isRemovingAdmin(Landroid/content/ComponentName;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isResetPasswordTokenActive(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isSecurityLoggingEnabled(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isSeparateProfileChallengeAllowed(I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isSystemOnlyUser(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->isUninstallInQueue(Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->lockNow(IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->notifyLockTaskModeChanged(ZLjava/lang/String;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->notifyPendingSystemUpdate(Landroid/app/admin/SystemUpdateInfo;)V +HSPLandroid/app/admin/IDevicePolicyManager;->packageHasActiveAdmins(Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->reboot(Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->removeActiveAdmin(Landroid/content/ComponentName;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->removeCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->removeKeyPair(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->removeUser(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->reportFailedFingerprintAttempt(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportFailedPasswordAttempt(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportKeyguardDismissed(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportKeyguardSecured(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportPasswordChanged(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportSuccessfulFingerprintAttempt(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->reportSuccessfulPasswordAttempt(I)V +HSPLandroid/app/admin/IDevicePolicyManager;->requestBugreport(Landroid/content/ComponentName;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->resetPassword(Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->resetPasswordWithToken(Landroid/content/ComponentName;Ljava/lang/String;[BI)Z +HSPLandroid/app/admin/IDevicePolicyManager;->retrieveNetworkLogs(Landroid/content/ComponentName;J)Ljava/util/List; +HSPLandroid/app/admin/IDevicePolicyManager;->retrievePreRebootSecurityLogs(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/admin/IDevicePolicyManager;->retrieveSecurityLogs(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/admin/IDevicePolicyManager;->setAccountManagementDisabled(Landroid/content/ComponentName;Ljava/lang/String;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setActiveAdmin(Landroid/content/ComponentName;ZI)V +HSPLandroid/app/admin/IDevicePolicyManager;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->setAffiliationIds(Landroid/content/ComponentName;Ljava/util/List;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setAlwaysOnVpnPackage(Landroid/content/ComponentName;Ljava/lang/String;Z)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setApplicationRestrictionsManagingPackage(Landroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setAutoTimeRequired(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setBackupServiceEnabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setBluetoothContactSharingDisabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setCameraDisabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setCertInstallerPackage(Landroid/content/ComponentName;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setCrossProfileCallerIdDisabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setCrossProfileContactsSearchDisabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setDeviceOwner(Landroid/content/ComponentName;Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setDeviceOwnerLockScreenInfo(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setDeviceProvisioningConfigApplied()V +HSPLandroid/app/admin/IDevicePolicyManager;->setForceEphemeralUsers(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setGlobalProxy(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName; +HSPLandroid/app/admin/IDevicePolicyManager;->setGlobalSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setKeepUninstalledPackages(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setKeyguardDisabled(Landroid/content/ComponentName;Z)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setLockTaskPackages(Landroid/content/ComponentName;[Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setLongSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setMasterVolumeMuted(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setMaximumTimeToLock(Landroid/content/ComponentName;JZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setNetworkLoggingEnabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setOrganizationColor(Landroid/content/ComponentName;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->setOrganizationColorForUser(II)V +HSPLandroid/app/admin/IDevicePolicyManager;->setOrganizationName(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPackagesSuspended(Landroid/content/ComponentName;Ljava/lang/String;[Ljava/lang/String;Z)[Ljava/lang/String; +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordExpirationTimeout(Landroid/content/ComponentName;JZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordHistoryLength(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumLength(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumLetters(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumLowerCase(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumNonLetter(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumNumeric(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumSymbols(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordMinimumUpperCase(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPasswordQuality(Landroid/content/ComponentName;IZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setPermissionPolicy(Landroid/content/ComponentName;Ljava/lang/String;I)V +HSPLandroid/app/admin/IDevicePolicyManager;->setPermittedAccessibilityServices(Landroid/content/ComponentName;Ljava/util/List;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setPermittedCrossProfileNotificationListeners(Landroid/content/ComponentName;Ljava/util/List;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setPermittedInputMethods(Landroid/content/ComponentName;Ljava/util/List;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setProfileEnabled(Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setProfileName(Landroid/content/ComponentName;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setProfileOwner(Landroid/content/ComponentName;Ljava/lang/String;I)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setRecommendedGlobalProxy(Landroid/content/ComponentName;Landroid/net/ProxyInfo;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setRequiredStrongAuthTimeout(Landroid/content/ComponentName;JZ)V +HSPLandroid/app/admin/IDevicePolicyManager;->setResetPasswordToken(Landroid/content/ComponentName;[B)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setRestrictionsProvider(Landroid/content/ComponentName;Landroid/content/ComponentName;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setScreenCaptureDisabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setSecureSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setSecurityLoggingEnabled(Landroid/content/ComponentName;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setShortSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setStatusBarDisabled(Landroid/content/ComponentName;Z)Z +HSPLandroid/app/admin/IDevicePolicyManager;->setStorageEncryption(Landroid/content/ComponentName;Z)I +HSPLandroid/app/admin/IDevicePolicyManager;->setSystemUpdatePolicy(Landroid/content/ComponentName;Landroid/app/admin/SystemUpdatePolicy;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setTrustAgentConfiguration(Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/os/PersistableBundle;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->setUserIcon(Landroid/content/ComponentName;Landroid/graphics/Bitmap;)V +HSPLandroid/app/admin/IDevicePolicyManager;->setUserProvisioningState(II)V +HSPLandroid/app/admin/IDevicePolicyManager;->setUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;Z)V +HSPLandroid/app/admin/IDevicePolicyManager;->startManagedQuickContact(Ljava/lang/String;JZJLandroid/content/Intent;)V +HSPLandroid/app/admin/IDevicePolicyManager;->switchUser(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/app/admin/IDevicePolicyManager;->uninstallCaCerts(Landroid/content/ComponentName;Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->uninstallPackageWithActiveAdmins(Ljava/lang/String;)V +HSPLandroid/app/admin/IDevicePolicyManager;->wipeData(I)V +HSPLandroid/app/assist/AssistStructure$1;->()V +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->pushViewStackEntry(Landroid/app/assist/AssistStructure$ViewNode;I)V +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeNextEntryToParcel(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;Landroid/os/PooledStringWriter;)Z +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcel(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcelInner(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)Z +HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeView(Landroid/app/assist/AssistStructure$ViewNode;Landroid/os/Parcel;Landroid/os/PooledStringWriter;I)V +HSPLandroid/app/assist/AssistStructure$SendChannel;->(Landroid/app/assist/AssistStructure;)V +HSPLandroid/app/assist/AssistStructure$SendChannel;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/assist/AssistStructure$ViewNode;->()V +HSPLandroid/app/assist/AssistStructure$ViewNode;->getChildCount()I +HSPLandroid/app/assist/AssistStructure$ViewNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;Z[F)I +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->(Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistStructure$ViewNode;Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->getChildCount()I +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->getNodeText()Landroid/app/assist/AssistStructure$ViewNodeText; +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->newChild(I)Landroid/view/ViewStructure; +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setAutofillHints([Ljava/lang/String;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setAutofillId(Landroid/view/autofill/AutofillId;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setAutofillType(I)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setAutofillValue(Landroid/view/autofill/AutofillValue;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setChildCount(I)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setClassName(Ljava/lang/String;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setClickable(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setDataIsSensitive(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setDimens(IIIIII)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setEnabled(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setFocusable(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setFocused(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setHint(Ljava/lang/CharSequence;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setInputType(I)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setLongClickable(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setOpaque(Z)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setText(Ljava/lang/CharSequence;)V +HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setVisibility(I)V +HSPLandroid/app/assist/AssistStructure$ViewNodeText;->()V +HSPLandroid/app/assist/AssistStructure$ViewNodeText;->isSimple()Z +HSPLandroid/app/assist/AssistStructure$ViewNodeText;->writeToParcel(Landroid/os/Parcel;ZZ)V +HSPLandroid/app/assist/AssistStructure$ViewStackEntry;->()V +HSPLandroid/app/assist/AssistStructure$WindowNode;->(Landroid/app/assist/AssistStructure;Landroid/view/ViewRootImpl;ZI)V +HSPLandroid/app/assist/AssistStructure$WindowNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;[F)V +HSPLandroid/app/assist/AssistStructure;->-get0(Landroid/app/assist/AssistStructure;)J +HSPLandroid/app/assist/AssistStructure;->-get1(Landroid/app/assist/AssistStructure;)J +HSPLandroid/app/assist/AssistStructure;->-get2(Landroid/app/assist/AssistStructure;)I +HSPLandroid/app/assist/AssistStructure;->(Landroid/app/Activity;ZI)V +HSPLandroid/app/assist/AssistStructure;->setAcquisitionEndTime(J)V +HSPLandroid/app/assist/AssistStructure;->setAcquisitionStartTime(J)V +HSPLandroid/app/assist/AssistStructure;->waitForReady()Z +HSPLandroid/app/assist/AssistStructure;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/backup/BackupAgent;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/backup/BackupAgent;->onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/backup/BackupManager;->(Landroid/content/Context;)V +HSPLandroid/app/backup/BackupManager;->checkServiceBinder()V +HSPLandroid/app/backup/BackupManager;->dataChanged()V +HSPLandroid/app/backup/BackupManager;->getCurrentTransport()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->(Landroid/app/backup/BackupTransport;)V +HSPLandroid/app/backup/BackupTransport$TransportImpl;->name()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport$TransportImpl;->transportDirName()Ljava/lang/String; +HSPLandroid/app/backup/BackupTransport;->()V +HSPLandroid/app/backup/BackupTransport;->getBinder()Landroid/os/IBinder; +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->dataChanged(Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->getCurrentTransport()Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager; +HSPLandroid/app/backup/IBackupManager;->acknowledgeFullBackupOrRestore(IZLjava/lang/String;Ljava/lang/String;Landroid/app/backup/IFullBackupRestoreObserver;)V +HSPLandroid/app/backup/IBackupManager;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager;->adbRestore(Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/app/backup/IBackupManager;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V +HSPLandroid/app/backup/IBackupManager;->agentDisconnected(Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager;->backupNow()V +HSPLandroid/app/backup/IBackupManager;->beginRestoreSession(Ljava/lang/String;Ljava/lang/String;)Landroid/app/backup/IRestoreSession; +HSPLandroid/app/backup/IBackupManager;->cancelBackups()V +HSPLandroid/app/backup/IBackupManager;->clearBackupData(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager;->dataChanged(Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager;->fullTransportBackup([Ljava/lang/String;)V +HSPLandroid/app/backup/IBackupManager;->getAvailableRestoreToken(Ljava/lang/String;)J +HSPLandroid/app/backup/IBackupManager;->getConfigurationIntent(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/app/backup/IBackupManager;->getCurrentTransport()Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->getDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/app/backup/IBackupManager;->getDataManagementLabel(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->getDestinationString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->getTransportWhitelist()[Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->hasBackupPassword()Z +HSPLandroid/app/backup/IBackupManager;->initializeTransports([Ljava/lang/String;Landroid/app/backup/IBackupObserver;)V +HSPLandroid/app/backup/IBackupManager;->isAppEligibleForBackup(Ljava/lang/String;)Z +HSPLandroid/app/backup/IBackupManager;->isBackupEnabled()Z +HSPLandroid/app/backup/IBackupManager;->isBackupServiceActive(I)Z +HSPLandroid/app/backup/IBackupManager;->listAllTransportComponents()[Landroid/content/ComponentName; +HSPLandroid/app/backup/IBackupManager;->listAllTransports()[Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->opComplete(IJ)V +HSPLandroid/app/backup/IBackupManager;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I +HSPLandroid/app/backup/IBackupManager;->restoreAtInstall(Ljava/lang/String;I)V +HSPLandroid/app/backup/IBackupManager;->selectBackupTransport(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/app/backup/IBackupManager;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V +HSPLandroid/app/backup/IBackupManager;->setAutoRestore(Z)V +HSPLandroid/app/backup/IBackupManager;->setBackupEnabled(Z)V +HSPLandroid/app/backup/IBackupManager;->setBackupPassword(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/backup/IBackupManager;->setBackupProvisioned(Z)V +HSPLandroid/app/backup/IBackupManager;->setBackupServiceActive(IZ)V +HSPLandroid/app/job/IJobCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStartMessage(IZ)V +HSPLandroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V +HSPLandroid/app/job/IJobCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobCallback; +HSPLandroid/app/job/IJobCallback;->acknowledgeStartMessage(IZ)V +HSPLandroid/app/job/IJobCallback;->acknowledgeStopMessage(IZ)V +HSPLandroid/app/job/IJobCallback;->completeWork(II)Z +HSPLandroid/app/job/IJobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem; +HSPLandroid/app/job/IJobCallback;->jobFinished(IZ)V +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(I)V +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobs()Ljava/util/List; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(I)Landroid/app/job/JobInfo; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Landroid/app/job/JobInfo;)I +HSPLandroid/app/job/IJobScheduler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobScheduler; +HSPLandroid/app/job/IJobScheduler;->cancel(I)V +HSPLandroid/app/job/IJobScheduler;->cancelAll()V +HSPLandroid/app/job/IJobScheduler;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HSPLandroid/app/job/IJobScheduler;->getAllPendingJobs()Ljava/util/List; +HSPLandroid/app/job/IJobScheduler;->getPendingJob(I)Landroid/app/job/JobInfo; +HSPLandroid/app/job/IJobScheduler;->schedule(Landroid/app/job/JobInfo;)I +HSPLandroid/app/job/IJobScheduler;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/job/IJobService$Stub;->()V +HSPLandroid/app/job/IJobService$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/job/IJobService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/job/IJobService;->startJob(Landroid/app/job/JobParameters;)V +HSPLandroid/app/job/IJobService;->stopJob(Landroid/app/job/JobParameters;)V +HSPLandroid/app/job/JobInfo$1;->()V +HSPLandroid/app/job/JobInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobInfo; +HSPLandroid/app/job/JobInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/job/JobInfo$Builder;->-get0(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get1(Landroid/app/job/JobInfo$Builder;)Landroid/content/ClipData; +HSPLandroid/app/job/JobInfo$Builder;->-get10(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get11(Landroid/app/job/JobInfo$Builder;)Z +HSPLandroid/app/job/JobInfo$Builder;->-get12(Landroid/app/job/JobInfo$Builder;)Z +HSPLandroid/app/job/JobInfo$Builder;->-get13(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get14(Landroid/app/job/JobInfo$Builder;)Landroid/content/ComponentName; +HSPLandroid/app/job/JobInfo$Builder;->-get15(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get16(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get17(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get18(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get19(Landroid/app/job/JobInfo$Builder;)Landroid/os/Bundle; +HSPLandroid/app/job/JobInfo$Builder;->-get2(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get20(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get21(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get22(Landroid/app/job/JobInfo$Builder;)Ljava/util/ArrayList; +HSPLandroid/app/job/JobInfo$Builder;->-get3(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get4(Landroid/app/job/JobInfo$Builder;)Landroid/os/PersistableBundle; +HSPLandroid/app/job/JobInfo$Builder;->-get5(Landroid/app/job/JobInfo$Builder;)I +HSPLandroid/app/job/JobInfo$Builder;->-get6(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->-get7(Landroid/app/job/JobInfo$Builder;)Z +HSPLandroid/app/job/JobInfo$Builder;->-get8(Landroid/app/job/JobInfo$Builder;)Z +HSPLandroid/app/job/JobInfo$Builder;->-get9(Landroid/app/job/JobInfo$Builder;)J +HSPLandroid/app/job/JobInfo$Builder;->(ILandroid/content/ComponentName;)V +HSPLandroid/app/job/JobInfo$Builder;->addTriggerContentUri(Landroid/app/job/JobInfo$TriggerContentUri;)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->build()Landroid/app/job/JobInfo; +HSPLandroid/app/job/JobInfo$Builder;->setExtras(Landroid/os/PersistableBundle;)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setMinimumLatency(J)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setOverrideDeadline(J)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setPeriodic(J)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setPeriodic(JJ)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setPersisted(Z)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setRequiredNetworkType(I)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setTransientExtras(Landroid/os/Bundle;)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentMaxDelay(J)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentUpdateDelay(J)Landroid/app/job/JobInfo$Builder; +HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->()V +HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobInfo$TriggerContentUri; +HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Landroid/app/job/JobInfo$TriggerContentUri; +HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/app/job/JobInfo$TriggerContentUri;->(Landroid/net/Uri;I)V +HSPLandroid/app/job/JobInfo$TriggerContentUri;->(Landroid/os/Parcel;)V +HSPLandroid/app/job/JobInfo$TriggerContentUri;->(Landroid/os/Parcel;Landroid/app/job/JobInfo$TriggerContentUri;)V +HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/job/JobInfo;->-get1(Landroid/app/job/JobInfo;)J +HSPLandroid/app/job/JobInfo;->-get2(Landroid/app/job/JobInfo;)J +HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;)V +HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo;)V +HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;)V +HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;Landroid/app/job/JobInfo;)V +HSPLandroid/app/job/JobInfo;->getFlexMillis()J +HSPLandroid/app/job/JobInfo;->getId()I +HSPLandroid/app/job/JobInfo;->getIntervalMillis()J +HSPLandroid/app/job/JobInfo;->getMinFlexMillis()J +HSPLandroid/app/job/JobInfo;->getMinPeriodMillis()J +HSPLandroid/app/job/JobInfo;->getService()Landroid/content/ComponentName; +HSPLandroid/app/job/JobInfo;->isPeriodic()Z +HSPLandroid/app/job/JobInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/job/JobParameters$1;->()V +HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobParameters; +HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/job/JobParameters;->(Landroid/os/Parcel;)V +HSPLandroid/app/job/JobParameters;->(Landroid/os/Parcel;Landroid/app/job/JobParameters;)V +HSPLandroid/app/job/JobParameters;->getCallback()Landroid/app/job/IJobCallback; +HSPLandroid/app/job/JobParameters;->getExtras()Landroid/os/PersistableBundle; +HSPLandroid/app/job/JobParameters;->getJobId()I +HSPLandroid/app/job/JobParameters;->getTransientExtras()Landroid/os/Bundle; +HSPLandroid/app/job/JobScheduler;->()V +HSPLandroid/app/job/JobScheduler;->cancel(I)V +HSPLandroid/app/job/JobScheduler;->cancelAll()V +HSPLandroid/app/job/JobScheduler;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HSPLandroid/app/job/JobScheduler;->getAllPendingJobs()Ljava/util/List; +HSPLandroid/app/job/JobScheduler;->getPendingJob(I)Landroid/app/job/JobInfo; +HSPLandroid/app/job/JobScheduler;->schedule(Landroid/app/job/JobInfo;)I +HSPLandroid/app/job/JobScheduler;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/app/job/JobService$1;->(Landroid/app/job/JobService;Landroid/app/Service;)V +HSPLandroid/app/job/JobService$1;->onStartJob(Landroid/app/job/JobParameters;)Z +HSPLandroid/app/job/JobService;->()V +HSPLandroid/app/job/JobService;->jobFinished(Landroid/app/job/JobParameters;Z)V +HSPLandroid/app/job/JobService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/app/job/JobService;->onStartJob(Landroid/app/job/JobParameters;)Z +HSPLandroid/app/job/JobService;->onStopJob(Landroid/app/job/JobParameters;)Z +HSPLandroid/app/job/JobServiceEngine$JobHandler;->(Landroid/app/job/JobServiceEngine;Landroid/os/Looper;)V +HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStartMessage(Landroid/app/job/JobParameters;Z)V +HSPLandroid/app/job/JobServiceEngine$JobHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/job/JobServiceEngine$JobInterface;->(Landroid/app/job/JobServiceEngine;)V +HSPLandroid/app/job/JobServiceEngine$JobInterface;->startJob(Landroid/app/job/JobParameters;)V +HSPLandroid/app/job/JobServiceEngine;->(Landroid/app/Service;)V +HSPLandroid/app/job/JobServiceEngine;->getBinder()Landroid/os/IBinder; +HSPLandroid/app/job/JobServiceEngine;->jobFinished(Landroid/app/job/JobParameters;Z)V +HSPLandroid/app/job/JobServiceEngine;->onStartJob(Landroid/app/job/JobParameters;)Z +HSPLandroid/app/job/JobServiceEngine;->onStopJob(Landroid/app/job/JobParameters;)Z +HSPLandroid/app/trust/IStrongAuthTracker$Stub;->()V +HSPLandroid/app/trust/IStrongAuthTracker$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/trust/IStrongAuthTracker;->onStrongAuthRequiredChanged(II)V +HSPLandroid/app/trust/ITrustListener$Stub;->()V +HSPLandroid/app/trust/ITrustListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/app/trust/ITrustListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/app/trust/ITrustListener;->onTrustChanged(ZII)V +HSPLandroid/app/trust/ITrustListener;->onTrustManagedChanged(ZI)V +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceLocked(I)Z +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceSecure(I)Z +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->registerTrustListener(Landroid/app/trust/ITrustListener;)V +HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->reportKeyguardShowingChanged()V +HSPLandroid/app/trust/ITrustManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/ITrustManager; +HSPLandroid/app/trust/ITrustManager;->clearAllFingerprints()V +HSPLandroid/app/trust/ITrustManager;->isDeviceLocked(I)Z +HSPLandroid/app/trust/ITrustManager;->isDeviceSecure(I)Z +HSPLandroid/app/trust/ITrustManager;->isTrustUsuallyManaged(I)Z +HSPLandroid/app/trust/ITrustManager;->registerTrustListener(Landroid/app/trust/ITrustListener;)V +HSPLandroid/app/trust/ITrustManager;->reportEnabledTrustAgentsChanged(I)V +HSPLandroid/app/trust/ITrustManager;->reportKeyguardShowingChanged()V +HSPLandroid/app/trust/ITrustManager;->reportUnlockAttempt(ZI)V +HSPLandroid/app/trust/ITrustManager;->reportUnlockLockout(II)V +HSPLandroid/app/trust/ITrustManager;->setDeviceLockedForUser(IZ)V +HSPLandroid/app/trust/ITrustManager;->unlockedByFingerprintForUser(I)V +HSPLandroid/app/trust/ITrustManager;->unregisterTrustListener(Landroid/app/trust/ITrustListener;)V +HSPLandroid/app/trust/TrustManager$1;->(Landroid/app/trust/TrustManager;Landroid/os/Looper;)V +HSPLandroid/app/trust/TrustManager$1;->handleMessage(Landroid/os/Message;)V +HSPLandroid/app/trust/TrustManager$2;->(Landroid/app/trust/TrustManager;Landroid/app/trust/TrustManager$TrustListener;)V +HSPLandroid/app/trust/TrustManager$2;->onTrustChanged(ZII)V +HSPLandroid/app/trust/TrustManager$2;->onTrustManagedChanged(ZI)V +HSPLandroid/app/trust/TrustManager$TrustListener;->onTrustChanged(ZII)V +HSPLandroid/app/trust/TrustManager$TrustListener;->onTrustManagedChanged(ZI)V +HSPLandroid/app/trust/TrustManager;->-get0(Landroid/app/trust/TrustManager;)Landroid/os/Handler; +HSPLandroid/app/trust/TrustManager;->(Landroid/os/IBinder;)V +HSPLandroid/app/trust/TrustManager;->registerTrustListener(Landroid/app/trust/TrustManager$TrustListener;)V +HSPLandroid/app/trust/TrustManager;->reportKeyguardShowingChanged()V +HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IStorageStatsManager; +HSPLandroid/app/usage/IStorageStatsManager;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J +HSPLandroid/app/usage/IStorageStatsManager;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/app/usage/IStorageStatsManager;->queryExternalStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/ExternalStorageStats; +HSPLandroid/app/usage/IStorageStatsManager;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; +HSPLandroid/app/usage/IStorageStatsManager;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; +HSPLandroid/app/usage/IStorageStatsManager;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; +HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/app/usage/IUsageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IUsageStatsManager; +HSPLandroid/app/usage/IUsageStatsManager;->isAppInactive(Ljava/lang/String;I)Z +HSPLandroid/app/usage/IUsageStatsManager;->onCarrierPrivilegedAppsChanged()V +HSPLandroid/app/usage/IUsageStatsManager;->queryConfigurationStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/usage/IUsageStatsManager;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents; +HSPLandroid/app/usage/IUsageStatsManager;->queryUsageStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/app/usage/IUsageStatsManager;->reportChooserSelection(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/app/usage/IUsageStatsManager;->setAppInactive(Ljava/lang/String;ZI)V +HSPLandroid/app/usage/IUsageStatsManager;->whitelistAppTemporarily(Ljava/lang/String;JI)V +HSPLandroid/app/usage/StorageStats$1;->()V +HSPLandroid/app/usage/StorageStatsManager;->(Landroid/content/Context;Landroid/app/usage/IStorageStatsManager;)V +HSPLandroid/app/usage/StorageStatsManager;->getFreeBytes(Ljava/lang/String;)J +HSPLandroid/app/usage/StorageStatsManager;->getFreeBytes(Ljava/util/UUID;)J +HSPLandroid/app/usage/StorageStatsManager;->getTotalBytes(Ljava/lang/String;)J +HSPLandroid/app/usage/StorageStatsManager;->getTotalBytes(Ljava/util/UUID;)J +HSPLandroid/app/usage/UsageEvents$1;->()V +HSPLandroid/app/usage/UsageEvents;->()V +HSPLandroid/app/usage/UsageStatsManager;->(Landroid/content/Context;Landroid/app/usage/IUsageStatsManager;)V +HSPLandroid/appwidget/AppWidgetHost$Callbacks;->(Landroid/os/Handler;)V +HSPLandroid/appwidget/AppWidgetHost$UpdateHandler;->(Landroid/appwidget/AppWidgetHost;Landroid/os/Looper;)V +HSPLandroid/appwidget/AppWidgetHost;->(Landroid/content/Context;I)V +HSPLandroid/appwidget/AppWidgetHost;->(Landroid/content/Context;ILandroid/widget/RemoteViews$OnClickHandler;Landroid/os/Looper;)V +HSPLandroid/appwidget/AppWidgetHost;->bindService(Landroid/content/Context;)V +HSPLandroid/appwidget/AppWidgetHost;->startListening()V +HSPLandroid/appwidget/AppWidgetHost;->stopListening()V +HSPLandroid/appwidget/AppWidgetHostView$1;->()V +HSPLandroid/appwidget/AppWidgetHostView;->getDefaultPaddingForWidget(Landroid/content/Context;Landroid/content/ComponentName;Landroid/graphics/Rect;)Landroid/graphics/Rect; +HSPLandroid/appwidget/AppWidgetManager;->(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V +HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I +HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(ILandroid/os/UserHandle;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/appwidget/AppWidgetManager;->getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager; +HSPLandroid/appwidget/AppWidgetProvider;->()V +HSPLandroid/appwidget/AppWidgetProvider;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLandroid/appwidget/AppWidgetProviderInfo$1;->()V +HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/appwidget/AppWidgetProviderInfo; +HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/appwidget/AppWidgetProviderInfo;->(Landroid/os/Parcel;)V +HSPLandroid/appwidget/AppWidgetProviderInfo;->getProfile()Landroid/os/UserHandle; +HSPLandroid/appwidget/AppWidgetProviderInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/String; +HSPLandroid/appwidget/AppWidgetProviderInfo;->updateDimensions(Landroid/util/DisplayMetrics;)V +HSPLandroid/appwidget/AppWidgetProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/bluetooth/BluetoothA2dp$1;->(Landroid/bluetooth/BluetoothA2dp;)V +HSPLandroid/bluetooth/BluetoothA2dp$2;->(Landroid/bluetooth/BluetoothA2dp;)V +HSPLandroid/bluetooth/BluetoothA2dp;->(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothA2dp;->doBind()Z +HSPLandroid/bluetooth/BluetoothAdapter$1;->(Landroid/bluetooth/BluetoothAdapter;)V +HSPLandroid/bluetooth/BluetoothAdapter$1;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V +HSPLandroid/bluetooth/BluetoothAdapter;->-get1(Landroid/bluetooth/BluetoothAdapter;)Ljava/util/ArrayList; +HSPLandroid/bluetooth/BluetoothAdapter;->-get3(Landroid/bluetooth/BluetoothAdapter;)Ljava/util/concurrent/locks/ReentrantReadWriteLock; +HSPLandroid/bluetooth/BluetoothAdapter;->-set0(Landroid/bluetooth/BluetoothAdapter;Landroid/bluetooth/IBluetooth;)Landroid/bluetooth/IBluetooth; +HSPLandroid/bluetooth/BluetoothAdapter;->(Landroid/bluetooth/IBluetoothManager;)V +HSPLandroid/bluetooth/BluetoothAdapter;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothManager()Landroid/bluetooth/IBluetoothManager; +HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothService(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth; +HSPLandroid/bluetooth/BluetoothAdapter;->getBondedDevices()Ljava/util/Set; +HSPLandroid/bluetooth/BluetoothAdapter;->getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter; +HSPLandroid/bluetooth/BluetoothAdapter;->getProfileConnectionState(I)I +HSPLandroid/bluetooth/BluetoothAdapter;->getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z +HSPLandroid/bluetooth/BluetoothAdapter;->getState()I +HSPLandroid/bluetooth/BluetoothAdapter;->getUuids()[Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/BluetoothAdapter;->isEnabled()Z +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureL2capOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(IZZ)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(IZZ)Landroid/bluetooth/BluetoothServerSocket; +HSPLandroid/bluetooth/BluetoothAdapter;->toDeviceSet([Landroid/bluetooth/BluetoothDevice;)Ljava/util/Set; +HSPLandroid/bluetooth/BluetoothCodecConfig$1;->()V +HSPLandroid/bluetooth/BluetoothCodecConfig;->(IIIIIJJJJ)V +HSPLandroid/bluetooth/BluetoothCodecConfig;->getBitsPerSample()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getChannelMode()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecPriority()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific1()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific2()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific3()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific4()J +HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecType()I +HSPLandroid/bluetooth/BluetoothCodecConfig;->getSampleRate()I +HSPLandroid/bluetooth/BluetoothDevice$1;->()V +HSPLandroid/bluetooth/BluetoothDevice$2;->()V +HSPLandroid/bluetooth/BluetoothDevice$2;->newArray(I)[Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/BluetoothDevice$2;->newArray(I)[Ljava/lang/Object; +HSPLandroid/bluetooth/BluetoothHeadset$1;->(Landroid/bluetooth/BluetoothHeadset;)V +HSPLandroid/bluetooth/BluetoothHeadset$1;->onBluetoothStateChange(Z)V +HSPLandroid/bluetooth/BluetoothHeadset$2;->(Landroid/bluetooth/BluetoothHeadset;)V +HSPLandroid/bluetooth/BluetoothHeadset$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/bluetooth/BluetoothHeadset$3;->(Landroid/bluetooth/BluetoothHeadset;Landroid/os/Looper;)V +HSPLandroid/bluetooth/BluetoothHeadset$3;->handleMessage(Landroid/os/Message;)V +HSPLandroid/bluetooth/BluetoothHeadset;->-get0(Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/IBluetoothProfileServiceConnection; +HSPLandroid/bluetooth/BluetoothHeadset;->-get1(Landroid/bluetooth/BluetoothHeadset;)Landroid/os/Handler; +HSPLandroid/bluetooth/BluetoothHeadset;->-get2(Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/IBluetoothHeadset; +HSPLandroid/bluetooth/BluetoothHeadset;->-get3(Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/BluetoothProfile$ServiceListener; +HSPLandroid/bluetooth/BluetoothHeadset;->-set0(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/IBluetoothHeadset;)Landroid/bluetooth/IBluetoothHeadset; +HSPLandroid/bluetooth/BluetoothHeadset;->(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothHeadset;->doBind()Z +HSPLandroid/bluetooth/BluetoothHeadset;->isInbandRingingSupported(Landroid/content/Context;)Z +HSPLandroid/bluetooth/BluetoothInputDevice$1;->(Landroid/bluetooth/BluetoothInputDevice;)V +HSPLandroid/bluetooth/BluetoothInputDevice$2;->(Landroid/bluetooth/BluetoothInputDevice;)V +HSPLandroid/bluetooth/BluetoothInputDevice;->(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothInputDevice;->doBind()Z +HSPLandroid/bluetooth/BluetoothInputStream;->(Landroid/bluetooth/BluetoothSocket;)V +HSPLandroid/bluetooth/BluetoothManager;->(Landroid/content/Context;)V +HSPLandroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter; +HSPLandroid/bluetooth/BluetoothMap$1;->(Landroid/bluetooth/BluetoothMap;)V +HSPLandroid/bluetooth/BluetoothMap$2;->(Landroid/bluetooth/BluetoothMap;)V +HSPLandroid/bluetooth/BluetoothMap;->(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothMap;->doBind()Z +HSPLandroid/bluetooth/BluetoothOutputStream;->(Landroid/bluetooth/BluetoothSocket;)V +HSPLandroid/bluetooth/BluetoothPan$1;->(Landroid/bluetooth/BluetoothPan;)V +HSPLandroid/bluetooth/BluetoothPan$2;->(Landroid/bluetooth/BluetoothPan;)V +HSPLandroid/bluetooth/BluetoothPan;->(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothPan;->doBind()Z +HSPLandroid/bluetooth/BluetoothPbap$1;->(Landroid/bluetooth/BluetoothPbap;)V +HSPLandroid/bluetooth/BluetoothPbap$2;->(Landroid/bluetooth/BluetoothPbap;)V +HSPLandroid/bluetooth/BluetoothPbap$ServiceListener;->onServiceConnected(Landroid/bluetooth/BluetoothPbap;)V +HSPLandroid/bluetooth/BluetoothPbap$ServiceListener;->onServiceDisconnected()V +HSPLandroid/bluetooth/BluetoothPbap;->(Landroid/content/Context;Landroid/bluetooth/BluetoothPbap$ServiceListener;)V +HSPLandroid/bluetooth/BluetoothPbap;->doBind()Z +HSPLandroid/bluetooth/BluetoothProfile$ServiceListener;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V +HSPLandroid/bluetooth/BluetoothProfile$ServiceListener;->onServiceDisconnected(I)V +HSPLandroid/bluetooth/BluetoothProfile;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/BluetoothProfile;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/BluetoothProfile;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/BluetoothServerSocket;->(IZZI)V +HSPLandroid/bluetooth/BluetoothServerSocket;->(IZZIZZ)V +HSPLandroid/bluetooth/BluetoothServerSocket;->accept()Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothServerSocket;->accept(I)Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothServerSocket;->getChannel()I +HSPLandroid/bluetooth/BluetoothServerSocket;->setChannel(I)V +HSPLandroid/bluetooth/BluetoothSocket$SocketState;->(Ljava/lang/String;I)V +HSPLandroid/bluetooth/BluetoothSocket;->(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;)V +HSPLandroid/bluetooth/BluetoothSocket;->(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;ZZ)V +HSPLandroid/bluetooth/BluetoothSocket;->accept(I)Landroid/bluetooth/BluetoothSocket; +HSPLandroid/bluetooth/BluetoothSocket;->bindListen()I +HSPLandroid/bluetooth/BluetoothSocket;->getPort()I +HSPLandroid/bluetooth/BluetoothSocket;->getSecurityFlags()I +HSPLandroid/bluetooth/BluetoothSocket;->readAll(Ljava/io/InputStream;[B)I +HSPLandroid/bluetooth/BluetoothSocket;->readInt(Ljava/io/InputStream;)I +HSPLandroid/bluetooth/BluetoothSocket;->setExcludeSdp(Z)V +HSPLandroid/bluetooth/BluetoothSocket;->waitSocketSignal(Ljava/io/InputStream;)Ljava/lang/String; +HSPLandroid/bluetooth/BluetoothUuid;->isUuidPresent([Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;)Z +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getBondedDevices()[Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getProfileConnectionState(I)I +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getState()I +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getUuids()[Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->isEnabled()Z +HSPLandroid/bluetooth/IBluetooth$Stub;->()V +HSPLandroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth; +HSPLandroid/bluetooth/IBluetooth$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetooth;->cancelBondProcess(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetooth;->cancelDiscovery()Z +HSPLandroid/bluetooth/IBluetooth;->connectSocket(Landroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor; +HSPLandroid/bluetooth/IBluetooth;->createBond(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetooth;->createBondOutOfBand(Landroid/bluetooth/BluetoothDevice;ILandroid/bluetooth/OobData;)Z +HSPLandroid/bluetooth/IBluetooth;->createSocketChannel(ILjava/lang/String;Landroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor; +HSPLandroid/bluetooth/IBluetooth;->disable()Z +HSPLandroid/bluetooth/IBluetooth;->enable()Z +HSPLandroid/bluetooth/IBluetooth;->enableNoAutoConnect()Z +HSPLandroid/bluetooth/IBluetooth;->factoryReset()Z +HSPLandroid/bluetooth/IBluetooth;->fetchRemoteUuids(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetooth;->getAdapterConnectionState()I +HSPLandroid/bluetooth/IBluetooth;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetooth;->getBatteryLevel(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getBondState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getBondedDevices()[Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetooth;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getDiscoverableTimeout()I +HSPLandroid/bluetooth/IBluetooth;->getDiscoveryEndMillis()J +HSPLandroid/bluetooth/IBluetooth;->getLeMaximumAdvertisingDataLength()I +HSPLandroid/bluetooth/IBluetooth;->getMessageAccessPermission(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getName()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetooth;->getPhonebookAccessPermission(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getProfileConnectionState(I)I +HSPLandroid/bluetooth/IBluetooth;->getRemoteAlias(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String; +HSPLandroid/bluetooth/IBluetooth;->getRemoteClass(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getRemoteName(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String; +HSPLandroid/bluetooth/IBluetooth;->getRemoteType(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getRemoteUuids(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/IBluetooth;->getScanMode()I +HSPLandroid/bluetooth/IBluetooth;->getSimAccessPermission(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetooth;->getState()I +HSPLandroid/bluetooth/IBluetooth;->getSupportedProfiles()J +HSPLandroid/bluetooth/IBluetooth;->getUuids()[Landroid/os/ParcelUuid; +HSPLandroid/bluetooth/IBluetooth;->isActivityAndEnergyReportingSupported()Z +HSPLandroid/bluetooth/IBluetooth;->isBondingInitiatedLocally(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetooth;->isDiscovering()Z +HSPLandroid/bluetooth/IBluetooth;->isEnabled()Z +HSPLandroid/bluetooth/IBluetooth;->isLe2MPhySupported()Z +HSPLandroid/bluetooth/IBluetooth;->isLeCodedPhySupported()Z +HSPLandroid/bluetooth/IBluetooth;->isLeExtendedAdvertisingSupported()Z +HSPLandroid/bluetooth/IBluetooth;->isLePeriodicAdvertisingSupported()Z +HSPLandroid/bluetooth/IBluetooth;->isMultiAdvertisementSupported()Z +HSPLandroid/bluetooth/IBluetooth;->isOffloadedFilteringSupported()Z +HSPLandroid/bluetooth/IBluetooth;->isOffloadedScanBatchingSupported()Z +HSPLandroid/bluetooth/IBluetooth;->onBrEdrDown()V +HSPLandroid/bluetooth/IBluetooth;->onLeServiceUp()V +HSPLandroid/bluetooth/IBluetooth;->registerCallback(Landroid/bluetooth/IBluetoothCallback;)V +HSPLandroid/bluetooth/IBluetooth;->removeBond(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetooth;->reportActivityInfo()Landroid/bluetooth/BluetoothActivityEnergyInfo; +HSPLandroid/bluetooth/IBluetooth;->requestActivityInfo(Landroid/os/ResultReceiver;)V +HSPLandroid/bluetooth/IBluetooth;->sdpSearch(Landroid/bluetooth/BluetoothDevice;Landroid/os/ParcelUuid;)Z +HSPLandroid/bluetooth/IBluetooth;->sendConnectionStateChange(Landroid/bluetooth/BluetoothDevice;III)V +HSPLandroid/bluetooth/IBluetooth;->setDiscoverableTimeout(I)Z +HSPLandroid/bluetooth/IBluetooth;->setMessageAccessPermission(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetooth;->setName(Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetooth;->setPairingConfirmation(Landroid/bluetooth/BluetoothDevice;Z)Z +HSPLandroid/bluetooth/IBluetooth;->setPasskey(Landroid/bluetooth/BluetoothDevice;ZI[B)Z +HSPLandroid/bluetooth/IBluetooth;->setPhonebookAccessPermission(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetooth;->setPin(Landroid/bluetooth/BluetoothDevice;ZI[B)Z +HSPLandroid/bluetooth/IBluetooth;->setRemoteAlias(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetooth;->setScanMode(II)Z +HSPLandroid/bluetooth/IBluetooth;->setSimAccessPermission(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetooth;->startDiscovery()Z +HSPLandroid/bluetooth/IBluetooth;->unregisterCallback(Landroid/bluetooth/IBluetoothCallback;)V +HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->()V +HSPLandroid/bluetooth/IBluetoothA2dp;->adjustAvrcpAbsoluteVolume(I)V +HSPLandroid/bluetooth/IBluetoothA2dp;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothA2dp;->disableOptionalCodecs()V +HSPLandroid/bluetooth/IBluetoothA2dp;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothA2dp;->enableOptionalCodecs()V +HSPLandroid/bluetooth/IBluetoothA2dp;->getCodecStatus()Landroid/bluetooth/BluetoothCodecStatus; +HSPLandroid/bluetooth/IBluetoothA2dp;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothA2dp;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothA2dp;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothA2dp;->getOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothA2dp;->getPriority(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothA2dp;->isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothA2dp;->isAvrcpAbsoluteVolumeSupported()Z +HSPLandroid/bluetooth/IBluetoothA2dp;->setAvrcpAbsoluteVolume(I)V +HSPLandroid/bluetooth/IBluetoothA2dp;->setCodecConfigPreference(Landroid/bluetooth/BluetoothCodecConfig;)V +HSPLandroid/bluetooth/IBluetoothA2dp;->setOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;I)V +HSPLandroid/bluetooth/IBluetoothA2dp;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothA2dp;->supportsOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->onBluetoothStateChange(II)V +HSPLandroid/bluetooth/IBluetoothCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothCallback; +HSPLandroid/bluetooth/IBluetoothCallback;->onBluetoothStateChange(II)V +HSPLandroid/bluetooth/IBluetoothGatt$Stub;->()V +HSPLandroid/bluetooth/IBluetoothGatt;->addService(ILandroid/bluetooth/BluetoothGattService;)V +HSPLandroid/bluetooth/IBluetoothGatt;->beginReliableWrite(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->clearServices(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->clientConnect(ILjava/lang/String;ZIZI)V +HSPLandroid/bluetooth/IBluetoothGatt;->clientDisconnect(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->clientReadPhy(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->clientSetPreferredPhy(ILjava/lang/String;III)V +HSPLandroid/bluetooth/IBluetoothGatt;->configureMTU(ILjava/lang/String;I)V +HSPLandroid/bluetooth/IBluetoothGatt;->connectionParameterUpdate(ILjava/lang/String;I)V +HSPLandroid/bluetooth/IBluetoothGatt;->disconnectAll()V +HSPLandroid/bluetooth/IBluetoothGatt;->discoverServiceByUuid(ILjava/lang/String;Landroid/os/ParcelUuid;)V +HSPLandroid/bluetooth/IBluetoothGatt;->discoverServices(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->enableAdvertisingSet(IZII)V +HSPLandroid/bluetooth/IBluetoothGatt;->endReliableWrite(ILjava/lang/String;Z)V +HSPLandroid/bluetooth/IBluetoothGatt;->flushPendingBatchResults(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothGatt;->getOwnAddress(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->numHwTrackFiltersAvailable()I +HSPLandroid/bluetooth/IBluetoothGatt;->readCharacteristic(ILjava/lang/String;II)V +HSPLandroid/bluetooth/IBluetoothGatt;->readDescriptor(ILjava/lang/String;II)V +HSPLandroid/bluetooth/IBluetoothGatt;->readRemoteRssi(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->readUsingCharacteristicUuid(ILjava/lang/String;Landroid/os/ParcelUuid;III)V +HSPLandroid/bluetooth/IBluetoothGatt;->refreshDevice(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->registerClient(Landroid/os/ParcelUuid;Landroid/bluetooth/IBluetoothGattCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->registerForNotification(ILjava/lang/String;IZ)V +HSPLandroid/bluetooth/IBluetoothGatt;->registerScanner(Landroid/bluetooth/le/IScannerCallback;Landroid/os/WorkSource;)V +HSPLandroid/bluetooth/IBluetoothGatt;->registerServer(Landroid/os/ParcelUuid;Landroid/bluetooth/IBluetoothGattServerCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->registerSync(Landroid/bluetooth/le/ScanResult;IILandroid/bluetooth/le/IPeriodicAdvertisingCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->removeService(II)V +HSPLandroid/bluetooth/IBluetoothGatt;->sendNotification(ILjava/lang/String;IZ[B)V +HSPLandroid/bluetooth/IBluetoothGatt;->sendResponse(ILjava/lang/String;III[B)V +HSPLandroid/bluetooth/IBluetoothGatt;->serverConnect(ILjava/lang/String;ZI)V +HSPLandroid/bluetooth/IBluetoothGatt;->serverDisconnect(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->serverReadPhy(ILjava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->serverSetPreferredPhy(ILjava/lang/String;III)V +HSPLandroid/bluetooth/IBluetoothGatt;->setAdvertisingData(ILandroid/bluetooth/le/AdvertiseData;)V +HSPLandroid/bluetooth/IBluetoothGatt;->setAdvertisingParameters(ILandroid/bluetooth/le/AdvertisingSetParameters;)V +HSPLandroid/bluetooth/IBluetoothGatt;->setPeriodicAdvertisingData(ILandroid/bluetooth/le/AdvertiseData;)V +HSPLandroid/bluetooth/IBluetoothGatt;->setPeriodicAdvertisingEnable(IZ)V +HSPLandroid/bluetooth/IBluetoothGatt;->setPeriodicAdvertisingParameters(ILandroid/bluetooth/le/PeriodicAdvertisingParameters;)V +HSPLandroid/bluetooth/IBluetoothGatt;->setScanResponseData(ILandroid/bluetooth/le/AdvertiseData;)V +HSPLandroid/bluetooth/IBluetoothGatt;->startAdvertisingSet(Landroid/bluetooth/le/AdvertisingSetParameters;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/AdvertiseData;Landroid/bluetooth/le/PeriodicAdvertisingParameters;Landroid/bluetooth/le/AdvertiseData;IILandroid/bluetooth/le/IAdvertisingSetCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->startScan(ILandroid/bluetooth/le/ScanSettings;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->startScanForIntent(Landroid/app/PendingIntent;Landroid/bluetooth/le/ScanSettings;Ljava/util/List;Ljava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->stopAdvertisingSet(Landroid/bluetooth/le/IAdvertisingSetCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->stopScan(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->stopScanForIntent(Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/bluetooth/IBluetoothGatt;->unregAll()V +HSPLandroid/bluetooth/IBluetoothGatt;->unregisterClient(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->unregisterScanner(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->unregisterServer(I)V +HSPLandroid/bluetooth/IBluetoothGatt;->unregisterSync(Landroid/bluetooth/le/IPeriodicAdvertisingCallback;)V +HSPLandroid/bluetooth/IBluetoothGatt;->writeCharacteristic(ILjava/lang/String;III[B)V +HSPLandroid/bluetooth/IBluetoothGatt;->writeDescriptor(ILjava/lang/String;II[B)V +HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->()V +HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadset; +HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->acceptIncomingConnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->bindResponse(IZ)V +HSPLandroid/bluetooth/IBluetoothHeadset;->clccResponse(IIIIZLjava/lang/String;I)V +HSPLandroid/bluetooth/IBluetoothHeadset;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->connectAudio()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->disableWBS()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->disconnectAudio()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->enableWBS()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->getAudioRouteAllowed()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->getAudioState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothHeadset;->getBatteryUsageHint(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothHeadset;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothHeadset;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothHeadset;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothHeadset;->getPriority(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothHeadset;->isAudioConnected(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->isAudioOn()Z +HSPLandroid/bluetooth/IBluetoothHeadset;->phoneStateChanged(IIILjava/lang/String;I)V +HSPLandroid/bluetooth/IBluetoothHeadset;->rejectIncomingConnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->sendVendorSpecificResultCode(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->setAudioRouteAllowed(Z)V +HSPLandroid/bluetooth/IBluetoothHeadset;->setForceScoAudio(Z)V +HSPLandroid/bluetooth/IBluetoothHeadset;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->startScoUsingVirtualVoiceCall(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->stopScoUsingVirtualVoiceCall(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadset;->stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadsetPhone; +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->answerCall()Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->cdmaSetSecondCallState(Z)V +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->cdmaSwapSecondCallState()V +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->getNetworkOperator()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->getSubscriberNumber()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->hangupCall()Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->listCurrentCalls()Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->processChld(I)Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->queryPhoneState()Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->sendDtmf(I)Z +HSPLandroid/bluetooth/IBluetoothHeadsetPhone;->updateBtHandsfreeAfterRadioTechnologyChange()V +HSPLandroid/bluetooth/IBluetoothHealth$Stub;->()V +HSPLandroid/bluetooth/IBluetoothHealth;->connectChannelToSink(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z +HSPLandroid/bluetooth/IBluetoothHealth;->connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z +HSPLandroid/bluetooth/IBluetoothHealth;->disconnectChannel(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z +HSPLandroid/bluetooth/IBluetoothHealth;->getConnectedHealthDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothHealth;->getHealthDeviceConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothHealth;->getHealthDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothHealth;->getMainChannelFd(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/bluetooth/IBluetoothHealth;->registerAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/IBluetoothHealthCallback;)Z +HSPLandroid/bluetooth/IBluetoothHealth;->unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice$Stub;->()V +HSPLandroid/bluetooth/IBluetoothInputDevice;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothInputDevice;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothInputDevice;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothInputDevice;->getIdleTime(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->getPriority(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothInputDevice;->getProtocolMode(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->getReport(Landroid/bluetooth/BluetoothDevice;BBI)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->sendData(Landroid/bluetooth/BluetoothDevice;Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->setIdleTime(Landroid/bluetooth/BluetoothDevice;B)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->setProtocolMode(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->setReport(Landroid/bluetooth/BluetoothDevice;BLjava/lang/String;)Z +HSPLandroid/bluetooth/IBluetoothInputDevice;->virtualUnplug(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth; +HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +HSPLandroid/bluetooth/IBluetoothManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManager; +HSPLandroid/bluetooth/IBluetoothManager;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z +HSPLandroid/bluetooth/IBluetoothManager;->disable(Ljava/lang/String;Z)Z +HSPLandroid/bluetooth/IBluetoothManager;->enable(Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetoothManager;->enableNoAutoConnect(Ljava/lang/String;)Z +HSPLandroid/bluetooth/IBluetoothManager;->getAddress()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothManager;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt; +HSPLandroid/bluetooth/IBluetoothManager;->getName()Ljava/lang/String; +HSPLandroid/bluetooth/IBluetoothManager;->getState()I +HSPLandroid/bluetooth/IBluetoothManager;->isBleAppPresent()Z +HSPLandroid/bluetooth/IBluetoothManager;->isBleScanAlwaysAvailable()Z +HSPLandroid/bluetooth/IBluetoothManager;->isEnabled()Z +HSPLandroid/bluetooth/IBluetoothManager;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth; +HSPLandroid/bluetooth/IBluetoothManager;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +HSPLandroid/bluetooth/IBluetoothManager;->unbindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)V +HSPLandroid/bluetooth/IBluetoothManager;->unregisterAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)V +HSPLandroid/bluetooth/IBluetoothManager;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +HSPLandroid/bluetooth/IBluetoothManager;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I +HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->()V +HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothManagerCallback;->onBluetoothServiceDown()V +HSPLandroid/bluetooth/IBluetoothManagerCallback;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V +HSPLandroid/bluetooth/IBluetoothManagerCallback;->onBrEdrDown()V +HSPLandroid/bluetooth/IBluetoothMap$Stub;->()V +HSPLandroid/bluetooth/IBluetoothMap;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothMap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothMap;->getClient()Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetoothMap;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothMap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothMap;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothMap;->getPriority(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothMap;->getState()I +HSPLandroid/bluetooth/IBluetoothMap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothMap;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothPan$Stub;->()V +HSPLandroid/bluetooth/IBluetoothPan;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothPan;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothPan;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothPan;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothPan;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothPan;->isTetheringOn()Z +HSPLandroid/bluetooth/IBluetoothPan;->setBluetoothTethering(Z)V +HSPLandroid/bluetooth/IBluetoothPbap$Stub;->()V +HSPLandroid/bluetooth/IBluetoothPbap;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothPbap;->disconnect()V +HSPLandroid/bluetooth/IBluetoothPbap;->getClient()Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetoothPbap;->getState()I +HSPLandroid/bluetooth/IBluetoothPbap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->()V +HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothProfileServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/bluetooth/IBluetoothProfileServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +HSPLandroid/bluetooth/IBluetoothSap$Stub;->()V +HSPLandroid/bluetooth/IBluetoothSap;->connect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothSap;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothSap;->getClient()Landroid/bluetooth/BluetoothDevice; +HSPLandroid/bluetooth/IBluetoothSap;->getConnectedDevices()Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothSap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothSap;->getDevicesMatchingConnectionStates([I)Ljava/util/List; +HSPLandroid/bluetooth/IBluetoothSap;->getPriority(Landroid/bluetooth/BluetoothDevice;)I +HSPLandroid/bluetooth/IBluetoothSap;->getState()I +HSPLandroid/bluetooth/IBluetoothSap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z +HSPLandroid/bluetooth/IBluetoothSap;->setPriority(Landroid/bluetooth/BluetoothDevice;I)Z +HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->()V +HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/bluetooth/IBluetoothStateChangeCallback;->onBluetoothStateChange(Z)V +HSPLandroid/bluetooth/UidTraffic$1;->()V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->(Landroid/content/AbstractThreadedSyncAdapter;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;Landroid/content/AbstractThreadedSyncAdapter$SyncThread;)V +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->isCanceled()Z +HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->run()V +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get0()Z +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get2(Landroid/content/AbstractThreadedSyncAdapter;)Z +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get3(Landroid/content/AbstractThreadedSyncAdapter;)Landroid/content/Context; +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get4(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/concurrent/atomic/AtomicInteger; +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get5(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/lang/Object; +HSPLandroid/content/AbstractThreadedSyncAdapter;->-get6(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/HashMap; +HSPLandroid/content/AbstractThreadedSyncAdapter;->-wrap0(Landroid/content/AbstractThreadedSyncAdapter;Landroid/accounts/Account;)Landroid/accounts/Account; +HSPLandroid/content/AbstractThreadedSyncAdapter;->(Landroid/content/Context;Z)V +HSPLandroid/content/AbstractThreadedSyncAdapter;->(Landroid/content/Context;ZZ)V +HSPLandroid/content/AbstractThreadedSyncAdapter;->getSyncAdapterBinder()Landroid/os/IBinder; +HSPLandroid/content/AbstractThreadedSyncAdapter;->onPerformSync(Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V +HSPLandroid/content/AbstractThreadedSyncAdapter;->toSyncKey(Landroid/accounts/Account;)Landroid/accounts/Account; +HSPLandroid/content/ActivityNotFoundException;->(Ljava/lang/String;)V +HSPLandroid/content/AsyncQueryHandler$WorkerArgs;->()V +HSPLandroid/content/AsyncQueryHandler$WorkerHandler;->(Landroid/content/AsyncQueryHandler;Landroid/os/Looper;)V +HSPLandroid/content/AsyncQueryHandler$WorkerHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/content/AsyncQueryHandler;->(Landroid/content/ContentResolver;)V +HSPLandroid/content/AsyncQueryHandler;->cancelOperation(I)V +HSPLandroid/content/AsyncQueryHandler;->createHandler(Landroid/os/Looper;)Landroid/os/Handler; +HSPLandroid/content/AsyncQueryHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/content/AsyncQueryHandler;->onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V +HSPLandroid/content/AsyncQueryHandler;->startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/AsyncTaskLoader$LoadTask;->(Landroid/content/AsyncTaskLoader;)V +HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader$LoadTask;->onCancelled(Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader$LoadTask;->onPostExecute(Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader;->(Landroid/content/Context;)V +HSPLandroid/content/AsyncTaskLoader;->(Landroid/content/Context;Ljava/util/concurrent/Executor;)V +HSPLandroid/content/AsyncTaskLoader;->cancelLoadInBackground()V +HSPLandroid/content/AsyncTaskLoader;->dispatchOnCancelled(Landroid/content/AsyncTaskLoader$LoadTask;Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader;->dispatchOnLoadComplete(Landroid/content/AsyncTaskLoader$LoadTask;Ljava/lang/Object;)V +HSPLandroid/content/AsyncTaskLoader;->executePendingTask()V +HSPLandroid/content/AsyncTaskLoader;->isLoadInBackgroundCanceled()Z +HSPLandroid/content/AsyncTaskLoader;->loadInBackground()Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader;->onCancelLoad()Z +HSPLandroid/content/AsyncTaskLoader;->onForceLoad()V +HSPLandroid/content/AsyncTaskLoader;->onLoadInBackground()Ljava/lang/Object; +HSPLandroid/content/AsyncTaskLoader;->setUpdateThrottle(J)V +HSPLandroid/content/BroadcastReceiver$PendingResult$1;->(Landroid/content/BroadcastReceiver$PendingResult;Landroid/app/IActivityManager;)V +HSPLandroid/content/BroadcastReceiver$PendingResult$1;->run()V +HSPLandroid/content/BroadcastReceiver$PendingResult;->(ILjava/lang/String;Landroid/os/Bundle;IZZLandroid/os/IBinder;II)V +HSPLandroid/content/BroadcastReceiver$PendingResult;->finish()V +HSPLandroid/content/BroadcastReceiver$PendingResult;->sendFinished(Landroid/app/IActivityManager;)V +HSPLandroid/content/BroadcastReceiver$PendingResult;->setExtrasClassLoader(Ljava/lang/ClassLoader;)V +HSPLandroid/content/BroadcastReceiver;->()V +HSPLandroid/content/BroadcastReceiver;->getDebugUnregister()Z +HSPLandroid/content/BroadcastReceiver;->getPendingResult()Landroid/content/BroadcastReceiver$PendingResult; +HSPLandroid/content/BroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLandroid/content/BroadcastReceiver;->setPendingResult(Landroid/content/BroadcastReceiver$PendingResult;)V +HSPLandroid/content/ClipboardManager$1;->(Landroid/content/ClipboardManager;)V +HSPLandroid/content/ClipboardManager$2;->(Landroid/content/ClipboardManager;)V +HSPLandroid/content/ClipboardManager$OnPrimaryClipChangedListener;->onPrimaryClipChanged()V +HSPLandroid/content/ClipboardManager;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLandroid/content/ClipboardManager;->addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V +HSPLandroid/content/ComponentName$1;->()V +HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName; +HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V +HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/content/ComponentName;->(Landroid/os/Parcel;)V +HSPLandroid/content/ComponentName;->(Ljava/lang/String;Landroid/os/Parcel;)V +HSPLandroid/content/ComponentName;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ComponentName;->appendShortClassName(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ComponentName;->createRelative(Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName; +HSPLandroid/content/ComponentName;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/ComponentName;->flattenToShortString()Ljava/lang/String; +HSPLandroid/content/ComponentName;->flattenToString()Ljava/lang/String; +HSPLandroid/content/ComponentName;->getClassName()Ljava/lang/String; +HSPLandroid/content/ComponentName;->getPackageName()Ljava/lang/String; +HSPLandroid/content/ComponentName;->getShortClassName()Ljava/lang/String; +HSPLandroid/content/ComponentName;->hashCode()I +HSPLandroid/content/ComponentName;->readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName; +HSPLandroid/content/ComponentName;->toShortString()Ljava/lang/String; +HSPLandroid/content/ComponentName;->toString()Ljava/lang/String; +HSPLandroid/content/ComponentName;->unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName; +HSPLandroid/content/ComponentName;->writeToParcel(Landroid/content/ComponentName;Landroid/os/Parcel;)V +HSPLandroid/content/ComponentName;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/ContentProvider$PipeDataWriter;->writeDataToPipe(Landroid/os/ParcelFileDescriptor;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/Object;)V +HSPLandroid/content/ContentProvider$Transport;->(Landroid/content/ContentProvider;)V +HSPLandroid/content/ContentProvider$Transport;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; +HSPLandroid/content/ContentProvider$Transport;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProvider$Transport;->createCancellationSignal()Landroid/os/ICancellationSignal; +HSPLandroid/content/ContentProvider$Transport;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentProvider$Transport;->enforceReadPermission(Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)I +HSPLandroid/content/ContentProvider$Transport;->enforceWritePermission(Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)I +HSPLandroid/content/ContentProvider$Transport;->getContentProvider()Landroid/content/ContentProvider; +HSPLandroid/content/ContentProvider$Transport;->getProviderName()Ljava/lang/String; +HSPLandroid/content/ContentProvider$Transport;->getType(Landroid/net/Uri;)Ljava/lang/String; +HSPLandroid/content/ContentProvider$Transport;->insert(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider$Transport;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentProvider$Transport;->update(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentProvider;->-wrap0(Landroid/content/ContentProvider;Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider;->-wrap1(Landroid/content/ContentProvider;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->-wrap2(Landroid/content/ContentProvider;Landroid/net/Uri;)V +HSPLandroid/content/ContentProvider;->()V +HSPLandroid/content/ContentProvider;->applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; +HSPLandroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLandroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;Z)V +HSPLandroid/content/ContentProvider;->checkPermissionAndAppOp(Ljava/lang/String;Ljava/lang/String;Landroid/os/IBinder;)I +HSPLandroid/content/ContentProvider;->checkUser(IILandroid/content/Context;)Z +HSPLandroid/content/ContentProvider;->coerceToLocalContentProvider(Landroid/content/IContentProvider;)Landroid/content/ContentProvider; +HSPLandroid/content/ContentProvider;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I +HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I +HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getCallingPackage()Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getContext()Landroid/content/Context; +HSPLandroid/content/ContentProvider;->getIContentProvider()Landroid/content/IContentProvider; +HSPLandroid/content/ContentProvider;->getPathPermissions()[Landroid/content/pm/PathPermission; +HSPLandroid/content/ContentProvider;->getReadPermission()Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getType(Landroid/net/Uri;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I +HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;)I +HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;I)I +HSPLandroid/content/ContentProvider;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider;->isTemporary()Z +HSPLandroid/content/ContentProvider;->matchesOurAuthorities(Ljava/lang/String;)Z +HSPLandroid/content/ContentProvider;->maybeAddUserId(Landroid/net/Uri;I)Landroid/net/Uri; +HSPLandroid/content/ContentProvider;->maybeGetUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/ContentProvider;->onCreate()Z +HSPLandroid/content/ContentProvider;->onTrimMemory(I)V +HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentProvider;->setAppOps(II)V +HSPLandroid/content/ContentProvider;->setAuthorities(Ljava/lang/String;)V +HSPLandroid/content/ContentProvider;->setCallingPackage(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->setPathPermissions([Landroid/content/pm/PathPermission;)V +HSPLandroid/content/ContentProvider;->setReadPermission(Ljava/lang/String;)V +HSPLandroid/content/ContentProvider;->setWritePermission(Ljava/lang/String;)V +HSPLandroid/content/ContentProvider;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentProvider;->uriHasUserId(Landroid/net/Uri;)Z +HSPLandroid/content/ContentProvider;->validateIncomingUri(Landroid/net/Uri;)V +HSPLandroid/content/ContentProviderClient;->(Landroid/content/ContentResolver;Landroid/content/IContentProvider;Z)V +HSPLandroid/content/ContentProviderClient;->afterRemote()V +HSPLandroid/content/ContentProviderClient;->applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; +HSPLandroid/content/ContentProviderClient;->beforeRemote()V +HSPLandroid/content/ContentProviderClient;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProviderClient;->close()V +HSPLandroid/content/ContentProviderClient;->closeInternal()Z +HSPLandroid/content/ContentProviderClient;->finalize()V +HSPLandroid/content/ContentProviderClient;->getLocalContentProvider()Landroid/content/ContentProvider; +HSPLandroid/content/ContentProviderClient;->release()Z +HSPLandroid/content/ContentProviderNative;->()V +HSPLandroid/content/ContentProviderNative;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/ContentProviderNative;->asInterface(Landroid/os/IBinder;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentProviderNative;->getProviderName()Ljava/lang/String; +HSPLandroid/content/ContentProviderNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/ContentProviderOperation$1;->()V +HSPLandroid/content/ContentProviderOperation$Builder;->-get0(Landroid/content/ContentProviderOperation$Builder;)Ljava/lang/Integer; +HSPLandroid/content/ContentProviderOperation$Builder;->-get1(Landroid/content/ContentProviderOperation$Builder;)Ljava/lang/String; +HSPLandroid/content/ContentProviderOperation$Builder;->-get2(Landroid/content/ContentProviderOperation$Builder;)[Ljava/lang/String; +HSPLandroid/content/ContentProviderOperation$Builder;->-get3(Landroid/content/ContentProviderOperation$Builder;)Ljava/util/Map; +HSPLandroid/content/ContentProviderOperation$Builder;->-get4(Landroid/content/ContentProviderOperation$Builder;)I +HSPLandroid/content/ContentProviderOperation$Builder;->-get5(Landroid/content/ContentProviderOperation$Builder;)Landroid/net/Uri; +HSPLandroid/content/ContentProviderOperation$Builder;->-get6(Landroid/content/ContentProviderOperation$Builder;)Landroid/content/ContentValues; +HSPLandroid/content/ContentProviderOperation$Builder;->-get7(Landroid/content/ContentProviderOperation$Builder;)Landroid/content/ContentValues; +HSPLandroid/content/ContentProviderOperation$Builder;->-get8(Landroid/content/ContentProviderOperation$Builder;)Z +HSPLandroid/content/ContentProviderOperation$Builder;->(ILandroid/net/Uri;)V +HSPLandroid/content/ContentProviderOperation$Builder;->(ILandroid/net/Uri;Landroid/content/ContentProviderOperation$Builder;)V +HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation; +HSPLandroid/content/ContentProviderOperation$Builder;->withValues(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder; +HSPLandroid/content/ContentProviderOperation;->(Landroid/content/ContentProviderOperation$Builder;)V +HSPLandroid/content/ContentProviderOperation;->(Landroid/content/ContentProviderOperation$Builder;Landroid/content/ContentProviderOperation;)V +HSPLandroid/content/ContentProviderOperation;->apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult; +HSPLandroid/content/ContentProviderOperation;->getUri()Landroid/net/Uri; +HSPLandroid/content/ContentProviderOperation;->isReadOperation()Z +HSPLandroid/content/ContentProviderOperation;->isWriteOperation()Z +HSPLandroid/content/ContentProviderOperation;->newDelete(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder; +HSPLandroid/content/ContentProviderOperation;->newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder; +HSPLandroid/content/ContentProviderOperation;->resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String; +HSPLandroid/content/ContentProviderOperation;->resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues; +HSPLandroid/content/ContentProviderProxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/ContentProviderProxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/ContentProviderProxy;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProviderProxy;->createCancellationSignal()Landroid/os/ICancellationSignal; +HSPLandroid/content/ContentProviderProxy;->openTypedAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentProviderProxy;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentProviderResult$1;->()V +HSPLandroid/content/ContentProviderResult;->(I)V +HSPLandroid/content/ContentProviderResult;->(Landroid/net/Uri;)V +HSPLandroid/content/ContentQueryMap;->(Landroid/database/Cursor;Ljava/lang/String;ZLandroid/os/Handler;)V +HSPLandroid/content/ContentQueryMap;->getRows()Ljava/util/Map; +HSPLandroid/content/ContentQueryMap;->readCursorIntoCache(Landroid/database/Cursor;)V +HSPLandroid/content/ContentQueryMap;->requery()V +HSPLandroid/content/ContentQueryMap;->setKeepUpdated(Z)V +HSPLandroid/content/ContentResolver$1;->(Landroid/content/SyncStatusObserver;)V +HSPLandroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V +HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V +HSPLandroid/content/ContentResolver$CursorWrapperInner;->finalize()V +HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->(Landroid/content/ContentResolver;Landroid/os/ParcelFileDescriptor;Landroid/content/IContentProvider;)V +HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->releaseResources()V +HSPLandroid/content/ContentResolver;->(Landroid/content/Context;)V +HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; +HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient; +HSPLandroid/content/ContentResolver;->acquireExistingProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireProvider(Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; +HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object; +HSPLandroid/content/ContentResolver;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; +HSPLandroid/content/ContentResolver;->call(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentResolver;->createSqlQueryBundle(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/content/ContentResolver;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentResolver;->getContentService()Landroid/content/IContentService; +HSPLandroid/content/ContentResolver;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HSPLandroid/content/ContentResolver;->getMasterSyncAutomatically()Z +HSPLandroid/content/ContentResolver;->getPackageName()Ljava/lang/String; +HSPLandroid/content/ContentResolver;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; +HSPLandroid/content/ContentResolver;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/ContentResolver;->getType(Landroid/net/Uri;)Ljava/lang/String; +HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; +HSPLandroid/content/ContentResolver;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/ContentResolver;->isSyncPending(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/ContentResolver;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HSPLandroid/content/ContentResolver;->maybeLogQueryToEventLog(JLandroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->maybeLogUpdateToEventLog(JLandroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V +HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V +HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;ZI)V +HSPLandroid/content/ContentResolver;->openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentResolver;->openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V +HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V +HSPLandroid/content/ContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z +HSPLandroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z +HSPLandroid/content/ContentResolver;->requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->requestSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/Bundle;)V +HSPLandroid/content/ContentResolver;->resolveUserId(Landroid/net/Uri;)I +HSPLandroid/content/ContentResolver;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V +HSPLandroid/content/ContentResolver;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/content/ContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V +HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/ContentResolver;->validateSyncExtrasBundle(Landroid/os/Bundle;)V +HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder; +HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri; +HSPLandroid/content/ContentValues$1;->()V +HSPLandroid/content/ContentValues;->()V +HSPLandroid/content/ContentValues;->(I)V +HSPLandroid/content/ContentValues;->clear()V +HSPLandroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z +HSPLandroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/content/ContentValues;->getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLandroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer; +HSPLandroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long; +HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentValues;->isEmpty()Z +HSPLandroid/content/ContentValues;->keySet()Ljava/util/Set; +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Float;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ContentValues;->put(Ljava/lang/String;[B)V +HSPLandroid/content/ContentValues;->putAll(Landroid/content/ContentValues;)V +HSPLandroid/content/ContentValues;->size()I +HSPLandroid/content/Context;->()V +HSPLandroid/content/Context;->assertRuntimeOverlayThemable()V +HSPLandroid/content/Context;->getColor(I)I +HSPLandroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/Context;->getNextAutofillId()I +HSPLandroid/content/Context;->getString(I)Ljava/lang/String; +HSPLandroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence; +HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V +HSPLandroid/content/ContextWrapper;->(Landroid/content/Context;)V +HSPLandroid/content/ContextWrapper;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/content/ContextWrapper;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z +HSPLandroid/content/ContextWrapper;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z +HSPLandroid/content/ContextWrapper;->canLoadUnsafeResources()Z +HSPLandroid/content/ContextWrapper;->checkCallingOrSelfPermission(Ljava/lang/String;)I +HSPLandroid/content/ContextWrapper;->checkPermission(Ljava/lang/String;II)I +HSPLandroid/content/ContextWrapper;->checkPermission(Ljava/lang/String;IILandroid/os/IBinder;)I +HSPLandroid/content/ContextWrapper;->checkSelfPermission(Ljava/lang/String;)I +HSPLandroid/content/ContextWrapper;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->databaseList()[Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->deleteDatabase(Ljava/lang/String;)Z +HSPLandroid/content/ContextWrapper;->deleteFile(Ljava/lang/String;)Z +HSPLandroid/content/ContextWrapper;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/ContextWrapper;->fileList()[Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getApplicationContext()Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/ContextWrapper;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/content/ContextWrapper;->getBaseContext()Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->getBasePackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getCacheDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getClassLoader()Ljava/lang/ClassLoader; +HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver; +HSPLandroid/content/ContextWrapper;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getDir(Ljava/lang/String;I)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; +HSPLandroid/content/ContextWrapper;->getExternalCacheDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getMainLooper()Landroid/os/Looper; +HSPLandroid/content/ContextWrapper;->getNextAutofillId()I +HSPLandroid/content/ContextWrapper;->getNoBackupFilesDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; +HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; +HSPLandroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/content/ContextWrapper;->getThemeResId()I +HSPLandroid/content/ContextWrapper;->getUserId()I +HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z +HSPLandroid/content/ContextWrapper;->isRestricted()Z +HSPLandroid/content/ContextWrapper;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream; +HSPLandroid/content/ContextWrapper;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream; +HSPLandroid/content/ContextWrapper;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/content/ContextWrapper;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; +HSPLandroid/content/ContextWrapper;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; +HSPLandroid/content/ContextWrapper;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; +HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;)V +HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V +HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/content/ContextWrapper;->sendStickyBroadcast(Landroid/content/Intent;)V +HSPLandroid/content/ContextWrapper;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +HSPLandroid/content/ContextWrapper;->setTheme(I)V +HSPLandroid/content/ContextWrapper;->startActivity(Landroid/content/Intent;)V +HSPLandroid/content/ContextWrapper;->startService(Landroid/content/Intent;)Landroid/content/ComponentName; +HSPLandroid/content/ContextWrapper;->stopService(Landroid/content/Intent;)Z +HSPLandroid/content/ContextWrapper;->unbindService(Landroid/content/ServiceConnection;)V +HSPLandroid/content/ContextWrapper;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V +HSPLandroid/content/CursorLoader;->(Landroid/content/Context;)V +HSPLandroid/content/CursorLoader;->(Landroid/content/Context;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/CursorLoader;->cancelLoadInBackground()V +HSPLandroid/content/CursorLoader;->deliverResult(Landroid/database/Cursor;)V +HSPLandroid/content/CursorLoader;->deliverResult(Ljava/lang/Object;)V +HSPLandroid/content/CursorLoader;->getSortOrder()Ljava/lang/String; +HSPLandroid/content/CursorLoader;->getUri()Landroid/net/Uri; +HSPLandroid/content/CursorLoader;->loadInBackground()Landroid/database/Cursor; +HSPLandroid/content/CursorLoader;->loadInBackground()Ljava/lang/Object; +HSPLandroid/content/CursorLoader;->onCanceled(Landroid/database/Cursor;)V +HSPLandroid/content/CursorLoader;->onCanceled(Ljava/lang/Object;)V +HSPLandroid/content/CursorLoader;->onReset()V +HSPLandroid/content/CursorLoader;->onStartLoading()V +HSPLandroid/content/CursorLoader;->onStopLoading()V +HSPLandroid/content/CursorLoader;->setProjection([Ljava/lang/String;)V +HSPLandroid/content/CursorLoader;->setSortOrder(Ljava/lang/String;)V +HSPLandroid/content/CursorLoader;->setUri(Landroid/net/Uri;)V +HSPLandroid/content/DialogInterface$OnCancelListener;->onCancel(Landroid/content/DialogInterface;)V +HSPLandroid/content/DialogInterface$OnClickListener;->onClick(Landroid/content/DialogInterface;I)V +HSPLandroid/content/DialogInterface$OnDismissListener;->onDismiss(Landroid/content/DialogInterface;)V +HSPLandroid/content/DialogInterface$OnShowListener;->onShow(Landroid/content/DialogInterface;)V +HSPLandroid/content/DialogInterface;->cancel()V +HSPLandroid/content/DialogInterface;->dismiss()V +HSPLandroid/content/IClipboard$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V +HSPLandroid/content/IClipboard$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IClipboard; +HSPLandroid/content/IClipboard;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V +HSPLandroid/content/IClipboard;->getPrimaryClip(Ljava/lang/String;)Landroid/content/ClipData; +HSPLandroid/content/IClipboard;->getPrimaryClipDescription(Ljava/lang/String;)Landroid/content/ClipDescription; +HSPLandroid/content/IClipboard;->hasClipboardText(Ljava/lang/String;)Z +HSPLandroid/content/IClipboard;->hasPrimaryClip(Ljava/lang/String;)Z +HSPLandroid/content/IClipboard;->removePrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;)V +HSPLandroid/content/IClipboard;->setPrimaryClip(Landroid/content/ClipData;Ljava/lang/String;)V +HSPLandroid/content/IContentProvider;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; +HSPLandroid/content/IContentProvider;->bulkInsert(Ljava/lang/String;Landroid/net/Uri;[Landroid/content/ContentValues;)I +HSPLandroid/content/IContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/IContentProvider;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/IContentProvider;->createCancellationSignal()Landroid/os/ICancellationSignal; +HSPLandroid/content/IContentProvider;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/IContentProvider;->getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/IContentProvider;->getType(Landroid/net/Uri;)Ljava/lang/String; +HSPLandroid/content/IContentProvider;->insert(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; +HSPLandroid/content/IContentProvider;->openAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/IContentProvider;->openFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/ICancellationSignal;Landroid/os/IBinder;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/content/IContentProvider;->openTypedAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/IContentProvider;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/IContentProvider;->refresh(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Z +HSPLandroid/content/IContentProvider;->uncanonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri; +HSPLandroid/content/IContentProvider;->update(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/content/IContentService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/IContentService$Stub$Proxy;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V +HSPLandroid/content/IContentService$Stub$Proxy;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z +HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; +HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/IContentService$Stub$Proxy;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z +HSPLandroid/content/IContentService$Stub$Proxy;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z +HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIII)V +HSPLandroid/content/IContentService$Stub$Proxy;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V +HSPLandroid/content/IContentService$Stub$Proxy;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +HSPLandroid/content/IContentService$Stub$Proxy;->syncAsUser(Landroid/content/SyncRequest;I)V +HSPLandroid/content/IContentService$Stub$Proxy;->unregisterContentObserver(Landroid/database/IContentObserver;)V +HSPLandroid/content/IContentService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IContentService; +HSPLandroid/content/IContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +HSPLandroid/content/IContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V +HSPLandroid/content/IContentService;->cancelRequest(Landroid/content/SyncRequest;)V +HSPLandroid/content/IContentService;->cancelSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)V +HSPLandroid/content/IContentService;->cancelSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)V +HSPLandroid/content/IContentService;->getCache(Ljava/lang/String;Landroid/net/Uri;I)Landroid/os/Bundle; +HSPLandroid/content/IContentService;->getCurrentSyncs()Ljava/util/List; +HSPLandroid/content/IContentService;->getCurrentSyncsAsUser(I)Ljava/util/List; +HSPLandroid/content/IContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HSPLandroid/content/IContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I +HSPLandroid/content/IContentService;->getMasterSyncAutomatically()Z +HSPLandroid/content/IContentService;->getMasterSyncAutomaticallyAsUser(I)Z +HSPLandroid/content/IContentService;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/content/IContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HSPLandroid/content/IContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; +HSPLandroid/content/IContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType; +HSPLandroid/content/IContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HSPLandroid/content/IContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HSPLandroid/content/IContentService;->getSyncStatus(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Landroid/content/SyncStatusInfo; +HSPLandroid/content/IContentService;->getSyncStatusAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Landroid/content/SyncStatusInfo; +HSPLandroid/content/IContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z +HSPLandroid/content/IContentService;->isSyncPending(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z +HSPLandroid/content/IContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z +HSPLandroid/content/IContentService;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIII)V +HSPLandroid/content/IContentService;->putCache(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;I)V +HSPLandroid/content/IContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V +HSPLandroid/content/IContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/IContentService;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V +HSPLandroid/content/IContentService;->requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/IContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +HSPLandroid/content/IContentService;->setMasterSyncAutomatically(Z)V +HSPLandroid/content/IContentService;->setMasterSyncAutomaticallyAsUser(ZI)V +HSPLandroid/content/IContentService;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V +HSPLandroid/content/IContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +HSPLandroid/content/IContentService;->sync(Landroid/content/SyncRequest;)V +HSPLandroid/content/IContentService;->syncAsUser(Landroid/content/SyncRequest;I)V +HSPLandroid/content/IContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V +HSPLandroid/content/IIntentReceiver$Stub;->()V +HSPLandroid/content/IIntentReceiver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/IIntentReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IIntentReceiver; +HSPLandroid/content/IIntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HSPLandroid/content/IIntentSender$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/IIntentSender$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/IIntentSender$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IIntentSender; +HSPLandroid/content/IIntentSender;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/content/IOnPrimaryClipChangedListener$Stub;->()V +HSPLandroid/content/IOnPrimaryClipChangedListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/IOnPrimaryClipChangedListener;->dispatchPrimaryClipChanged()V +HSPLandroid/content/IRestrictionsManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/IRestrictionsManager$Stub$Proxy;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/content/IRestrictionsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IRestrictionsManager; +HSPLandroid/content/IRestrictionsManager;->createLocalApprovalIntent()Landroid/content/Intent; +HSPLandroid/content/IRestrictionsManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/content/IRestrictionsManager;->hasRestrictionsProvider()Z +HSPLandroid/content/IRestrictionsManager;->notifyPermissionResponse(Ljava/lang/String;Landroid/os/PersistableBundle;)V +HSPLandroid/content/IRestrictionsManager;->requestPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;)V +HSPLandroid/content/ISyncAdapter$Stub;->()V +HSPLandroid/content/ISyncAdapter$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/ISyncAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/content/ISyncAdapter;->cancelSync(Landroid/content/ISyncContext;)V +HSPLandroid/content/ISyncAdapter;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V +HSPLandroid/content/ISyncContext$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/ISyncContext$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncContext; +HSPLandroid/content/ISyncContext;->onFinished(Landroid/content/SyncResult;)V +HSPLandroid/content/ISyncContext;->sendHeartbeat()V +HSPLandroid/content/ISyncStatusObserver$Stub;->()V +HSPLandroid/content/ISyncStatusObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/ISyncStatusObserver;->onStatusChanged(I)V +HSPLandroid/content/Intent$1;->()V +HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/Intent; +HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/Intent$FilterComparison;->(Landroid/content/Intent;)V +HSPLandroid/content/Intent$FilterComparison;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/Intent$FilterComparison;->hashCode()I +HSPLandroid/content/Intent;->()V +HSPLandroid/content/Intent;->(Landroid/content/Context;Ljava/lang/Class;)V +HSPLandroid/content/Intent;->(Landroid/content/Intent;)V +HSPLandroid/content/Intent;->(Landroid/content/Intent;I)V +HSPLandroid/content/Intent;->(Landroid/os/Parcel;)V +HSPLandroid/content/Intent;->(Ljava/lang/String;)V +HSPLandroid/content/Intent;->(Ljava/lang/String;Landroid/net/Uri;)V +HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->addFlags(I)Landroid/content/Intent; +HSPLandroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z +HSPLandroid/content/Intent;->filterHashCode()I +HSPLandroid/content/Intent;->getAction()Ljava/lang/String; +HSPLandroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z +HSPLandroid/content/Intent;->getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/content/Intent;->getCategories()Ljava/util/Set; +HSPLandroid/content/Intent;->getCharSequenceExtra(Ljava/lang/String;)Ljava/lang/CharSequence; +HSPLandroid/content/Intent;->getClipData()Landroid/content/ClipData; +HSPLandroid/content/Intent;->getComponent()Landroid/content/ComponentName; +HSPLandroid/content/Intent;->getData()Landroid/net/Uri; +HSPLandroid/content/Intent;->getDataString()Ljava/lang/String; +HSPLandroid/content/Intent;->getExtras()Landroid/os/Bundle; +HSPLandroid/content/Intent;->getFlags()I +HSPLandroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I +HSPLandroid/content/Intent;->getLongExtra(Ljava/lang/String;J)J +HSPLandroid/content/Intent;->getPackage()Ljava/lang/String; +HSPLandroid/content/Intent;->getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable; +HSPLandroid/content/Intent;->getScheme()Ljava/lang/String; +HSPLandroid/content/Intent;->getSelector()Landroid/content/Intent; +HSPLandroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable; +HSPLandroid/content/Intent;->getStringArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/Intent;->getType()Ljava/lang/String; +HSPLandroid/content/Intent;->hasCategory(Ljava/lang/String;)Z +HSPLandroid/content/Intent;->hasExtra(Ljava/lang/String;)Z +HSPLandroid/content/Intent;->isExcludingStopped()Z +HSPLandroid/content/Intent;->migrateExtraStreamToClipData()Z +HSPLandroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent; +HSPLandroid/content/Intent;->prepareToEnterProcess()V +HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V +HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent; +HSPLandroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent; +HSPLandroid/content/Intent;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/content/Intent;->removeCategory(Ljava/lang/String;)V +HSPLandroid/content/Intent;->removeExtra(Ljava/lang/String;)V +HSPLandroid/content/Intent;->replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent; +HSPLandroid/content/Intent;->resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName; +HSPLandroid/content/Intent;->resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/Intent;->resolveSystemService(Landroid/content/pm/PackageManager;I)Landroid/content/ComponentName; +HSPLandroid/content/Intent;->resolveType(Landroid/content/ContentResolver;)Ljava/lang/String; +HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; +HSPLandroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setAllowFds(Z)V +HSPLandroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setClassName(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setData(Landroid/net/Uri;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setDefusable(Z)V +HSPLandroid/content/Intent;->setExtrasClassLoader(Ljava/lang/ClassLoader;)V +HSPLandroid/content/Intent;->setFlags(I)Landroid/content/Intent; +HSPLandroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V +HSPLandroid/content/Intent;->toString()Ljava/lang/String; +HSPLandroid/content/Intent;->toUri(I)Ljava/lang/String; +HSPLandroid/content/Intent;->toUriFragment(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/Intent;->toUriInner(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/IntentFilter$1;->()V +HSPLandroid/content/IntentFilter$AuthorityEntry;->(Landroid/os/Parcel;)V +HSPLandroid/content/IntentFilter$AuthorityEntry;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/IntentFilter$AuthorityEntry;->writeToParcel(Landroid/os/Parcel;)V +HSPLandroid/content/IntentFilter;->()V +HSPLandroid/content/IntentFilter;->(Landroid/os/Parcel;)V +HSPLandroid/content/IntentFilter;->(Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->actionsIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->addAction(Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->addCategory(Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->addDataAuthority(Landroid/content/IntentFilter$AuthorityEntry;)V +HSPLandroid/content/IntentFilter;->addDataAuthority(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->addDataScheme(Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->addDataSchemeSpecificPart(Landroid/os/PatternMatcher;)V +HSPLandroid/content/IntentFilter;->addDataSchemeSpecificPart(Ljava/lang/String;I)V +HSPLandroid/content/IntentFilter;->addDataType(Ljava/lang/String;)V +HSPLandroid/content/IntentFilter;->authoritiesIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->categoriesIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->countActions()I +HSPLandroid/content/IntentFilter;->countCategories()I +HSPLandroid/content/IntentFilter;->countDataAuthorities()I +HSPLandroid/content/IntentFilter;->countDataPaths()I +HSPLandroid/content/IntentFilter;->countDataSchemeSpecificParts()I +HSPLandroid/content/IntentFilter;->countDataSchemes()I +HSPLandroid/content/IntentFilter;->countDataTypes()I +HSPLandroid/content/IntentFilter;->debugCheck()Z +HSPLandroid/content/IntentFilter;->getAction(I)Ljava/lang/String; +HSPLandroid/content/IntentFilter;->getAutoVerify()Z +HSPLandroid/content/IntentFilter;->getCategory(I)Ljava/lang/String; +HSPLandroid/content/IntentFilter;->getPriority()I +HSPLandroid/content/IntentFilter;->handleAllWebDataURI()Z +HSPLandroid/content/IntentFilter;->handlesWebUris(Z)Z +HSPLandroid/content/IntentFilter;->hasAction(Ljava/lang/String;)Z +HSPLandroid/content/IntentFilter;->hasCategory(Ljava/lang/String;)Z +HSPLandroid/content/IntentFilter;->match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I +HSPLandroid/content/IntentFilter;->matchAction(Ljava/lang/String;)Z +HSPLandroid/content/IntentFilter;->matchCategories(Ljava/util/Set;)Ljava/lang/String; +HSPLandroid/content/IntentFilter;->matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I +HSPLandroid/content/IntentFilter;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/content/IntentFilter;->schemesIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->setAutoVerify(Z)V +HSPLandroid/content/IntentFilter;->setPriority(I)V +HSPLandroid/content/IntentFilter;->setVisibilityToInstantApp(I)V +HSPLandroid/content/IntentFilter;->typesIterator()Ljava/util/Iterator; +HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/Loader$ForceLoadContentObserver;->(Landroid/content/Loader;)V +HSPLandroid/content/Loader$ForceLoadContentObserver;->onChange(Z)V +HSPLandroid/content/Loader$OnLoadCanceledListener;->onLoadCanceled(Landroid/content/Loader;)V +HSPLandroid/content/Loader$OnLoadCompleteListener;->onLoadComplete(Landroid/content/Loader;Ljava/lang/Object;)V +HSPLandroid/content/Loader;->(Landroid/content/Context;)V +HSPLandroid/content/Loader;->abandon()V +HSPLandroid/content/Loader;->cancelLoad()Z +HSPLandroid/content/Loader;->commitContentChanged()V +HSPLandroid/content/Loader;->deliverCancellation()V +HSPLandroid/content/Loader;->deliverResult(Ljava/lang/Object;)V +HSPLandroid/content/Loader;->forceLoad()V +HSPLandroid/content/Loader;->getContext()Landroid/content/Context; +HSPLandroid/content/Loader;->getId()I +HSPLandroid/content/Loader;->isAbandoned()Z +HSPLandroid/content/Loader;->isReset()Z +HSPLandroid/content/Loader;->isStarted()Z +HSPLandroid/content/Loader;->onAbandon()V +HSPLandroid/content/Loader;->onContentChanged()V +HSPLandroid/content/Loader;->onForceLoad()V +HSPLandroid/content/Loader;->onReset()V +HSPLandroid/content/Loader;->onStartLoading()V +HSPLandroid/content/Loader;->onStopLoading()V +HSPLandroid/content/Loader;->registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V +HSPLandroid/content/Loader;->registerOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V +HSPLandroid/content/Loader;->reset()V +HSPLandroid/content/Loader;->rollbackContentChanged()V +HSPLandroid/content/Loader;->startLoading()V +HSPLandroid/content/Loader;->stopLoading()V +HSPLandroid/content/Loader;->takeContentChanged()Z +HSPLandroid/content/Loader;->unregisterListener(Landroid/content/Loader$OnLoadCompleteListener;)V +HSPLandroid/content/Loader;->unregisterOnLoadCanceledListener(Landroid/content/Loader$OnLoadCanceledListener;)V +HSPLandroid/content/RestrictionEntry$1;->()V +HSPLandroid/content/RestrictionEntry;->(ILjava/lang/String;)V +HSPLandroid/content/RestrictionEntry;->setDescription(Ljava/lang/String;)V +HSPLandroid/content/RestrictionEntry;->setIntValue(I)V +HSPLandroid/content/RestrictionEntry;->setSelectedState(Z)V +HSPLandroid/content/RestrictionEntry;->setSelectedString(Ljava/lang/String;)V +HSPLandroid/content/RestrictionEntry;->setTitle(Ljava/lang/String;)V +HSPLandroid/content/RestrictionsManager;->(Landroid/content/Context;Landroid/content/IRestrictionsManager;)V +HSPLandroid/content/RestrictionsManager;->getApplicationRestrictions()Landroid/os/Bundle; +HSPLandroid/content/RestrictionsManager;->getManifestRestrictions(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/content/RestrictionsManager;->loadManifestRestrictions(Ljava/lang/String;Landroid/content/res/XmlResourceParser;)Ljava/util/List; +HSPLandroid/content/RestrictionsManager;->loadRestriction(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/content/res/XmlResourceParser;)Landroid/content/RestrictionEntry; +HSPLandroid/content/RestrictionsManager;->loadRestrictionElement(Landroid/content/Context;Landroid/content/res/XmlResourceParser;)Landroid/content/RestrictionEntry; +HSPLandroid/content/SearchRecentSuggestionsProvider$DatabaseHelper;->(Landroid/content/Context;I)V +HSPLandroid/content/SearchRecentSuggestionsProvider;->()V +HSPLandroid/content/SearchRecentSuggestionsProvider;->onCreate()Z +HSPLandroid/content/SearchRecentSuggestionsProvider;->setupSuggestions(Ljava/lang/String;I)V +HSPLandroid/content/ServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLandroid/content/ServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +HSPLandroid/content/SharedPreferences$Editor;->apply()V +HSPLandroid/content/SharedPreferences$Editor;->clear()Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->commit()Z +HSPLandroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$Editor;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences$OnSharedPreferenceChangeListener;->onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V +HSPLandroid/content/SharedPreferences;->contains(Ljava/lang/String;)Z +HSPLandroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor; +HSPLandroid/content/SharedPreferences;->getAll()Ljava/util/Map; +HSPLandroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/content/SharedPreferences;->getFloat(Ljava/lang/String;F)F +HSPLandroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I +HSPLandroid/content/SharedPreferences;->getLong(Ljava/lang/String;J)J +HSPLandroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/SharedPreferences;->getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set; +HSPLandroid/content/SharedPreferences;->registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroid/content/SharedPreferences;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V +HSPLandroid/content/SyncAdapterType$1;->()V +HSPLandroid/content/SyncAdapterType$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncAdapterType; +HSPLandroid/content/SyncAdapterType$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/SyncAdapterType$1;->newArray(I)[Landroid/content/SyncAdapterType; +HSPLandroid/content/SyncAdapterType$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/SyncAdapterType;->(Landroid/os/Parcel;)V +HSPLandroid/content/SyncAdapterType;->(Ljava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/SyncContext;->(Landroid/content/ISyncContext;)V +HSPLandroid/content/SyncRequest$1;->()V +HSPLandroid/content/SyncRequest$Builder;->-get0(Landroid/content/SyncRequest$Builder;)Landroid/accounts/Account; +HSPLandroid/content/SyncRequest$Builder;->-get1(Landroid/content/SyncRequest$Builder;)Ljava/lang/String; +HSPLandroid/content/SyncRequest$Builder;->-get2(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle; +HSPLandroid/content/SyncRequest$Builder;->-get3(Landroid/content/SyncRequest$Builder;)Z +HSPLandroid/content/SyncRequest$Builder;->-get4(Landroid/content/SyncRequest$Builder;)Z +HSPLandroid/content/SyncRequest$Builder;->-get5(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle; +HSPLandroid/content/SyncRequest$Builder;->-get6(Landroid/content/SyncRequest$Builder;)J +HSPLandroid/content/SyncRequest$Builder;->-get7(Landroid/content/SyncRequest$Builder;)J +HSPLandroid/content/SyncRequest$Builder;->-get8(Landroid/content/SyncRequest$Builder;)I +HSPLandroid/content/SyncRequest$Builder;->-get9(Landroid/content/SyncRequest$Builder;)I +HSPLandroid/content/SyncRequest$Builder;->()V +HSPLandroid/content/SyncRequest$Builder;->build()Landroid/content/SyncRequest; +HSPLandroid/content/SyncRequest$Builder;->setExtras(Landroid/os/Bundle;)Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest$Builder;->setSyncAdapter(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest$Builder;->setupInterval(JJ)V +HSPLandroid/content/SyncRequest$Builder;->syncOnce()Landroid/content/SyncRequest$Builder; +HSPLandroid/content/SyncRequest;->(Landroid/content/SyncRequest$Builder;)V +HSPLandroid/content/SyncRequest;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/SyncResult$1;->()V +HSPLandroid/content/SyncResult;->()V +HSPLandroid/content/SyncResult;->(Z)V +HSPLandroid/content/SyncStats$1;->()V +HSPLandroid/content/SyncStats;->()V +HSPLandroid/content/SyncStatusObserver;->onStatusChanged(I)V +HSPLandroid/content/UndoManager;->()V +HSPLandroid/content/UndoManager;->forgetRedos([Landroid/content/UndoOwner;I)I +HSPLandroid/content/UndoManager;->forgetUndos([Landroid/content/UndoOwner;I)I +HSPLandroid/content/UndoManager;->getOwner(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/UndoOwner; +HSPLandroid/content/UndoManager;->restoreInstanceState(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/content/UndoManager;->saveInstanceState(Landroid/os/Parcel;)V +HSPLandroid/content/UndoOwner;->(Ljava/lang/String;Landroid/content/UndoManager;)V +HSPLandroid/content/UriMatcher;->()V +HSPLandroid/content/UriMatcher;->(I)V +HSPLandroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I +HSPLandroid/content/om/IOverlayManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/om/IOverlayManager$Stub$Proxy;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HSPLandroid/content/om/IOverlayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/om/IOverlayManager; +HSPLandroid/content/om/IOverlayManager;->getAllOverlays(I)Ljava/util/Map; +HSPLandroid/content/om/IOverlayManager;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HSPLandroid/content/om/IOverlayManager;->getOverlayInfosForTarget(Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/content/om/IOverlayManager;->setEnabled(Ljava/lang/String;ZI)Z +HSPLandroid/content/om/IOverlayManager;->setEnabledExclusive(Ljava/lang/String;ZI)Z +HSPLandroid/content/om/IOverlayManager;->setHighestPriority(Ljava/lang/String;I)Z +HSPLandroid/content/om/IOverlayManager;->setLowestPriority(Ljava/lang/String;I)Z +HSPLandroid/content/om/IOverlayManager;->setPriority(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/content/om/OverlayInfo$1;->()V +HSPLandroid/content/om/OverlayInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/om/OverlayInfo; +HSPLandroid/content/om/OverlayInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/om/OverlayInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/om/OverlayInfo;->ensureValidState()V +HSPLandroid/content/om/OverlayInfo;->isEnabled()Z +HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/ActivityInfo$WindowLayout;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ActivityInfo;->()V +HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;Landroid/content/pm/ActivityInfo;)V +HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I +HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I +HSPLandroid/content/pm/ActivityInfo;->isFixedOrientation()Z +HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationLandscape()Z +HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationLandscape(I)Z +HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationPortrait()Z +HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationPortrait(I)Z +HSPLandroid/content/pm/ActivityInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ApplicationInfo$1;->()V +HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ApplicationInfo;->()V +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ApplicationInfo;->getCodePath()Ljava/lang/String; +HSPLandroid/content/pm/ApplicationInfo;->getResourcePath()Ljava/lang/String; +HSPLandroid/content/pm/ApplicationInfo;->hasRtlSupport()Z +HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V +HSPLandroid/content/pm/ApplicationInfo;->isDirectBootAware()Z +HSPLandroid/content/pm/ApplicationInfo;->isExternalAsec()Z +HSPLandroid/content/pm/ApplicationInfo;->isForwardLocked()Z +HSPLandroid/content/pm/ApplicationInfo;->isInstantApp()Z +HSPLandroid/content/pm/ApplicationInfo;->isPrivilegedApp()Z +HSPLandroid/content/pm/ApplicationInfo;->isStaticSharedLibrary()Z +HSPLandroid/content/pm/ApplicationInfo;->isSystemApp()Z +HSPLandroid/content/pm/ApplicationInfo;->isUpdatedSystemApp()Z +HSPLandroid/content/pm/ApplicationInfo;->requestsIsolatedSplitLoading()Z +HSPLandroid/content/pm/ApplicationInfo;->setBaseCodePath(Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->setBaseResourcePath(Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->setCodePath(Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->setResourcePath(Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->setSplitCodePaths([Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->setSplitResourcePaths([Ljava/lang/String;)V +HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/BaseParceledListSlice;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/content/pm/BaseParceledListSlice;->(Ljava/util/List;)V +HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List; +HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLandroid/content/pm/BaseParceledListSlice;->readParcelableCreator(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator; +HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLandroid/content/pm/BaseParceledListSlice;->writeElement(Ljava/lang/Object;Landroid/os/Parcel;I)V +HSPLandroid/content/pm/BaseParceledListSlice;->writeParcelableCreator(Ljava/lang/Object;Landroid/os/Parcel;)V +HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ComponentInfo;->()V +HSPLandroid/content/pm/ComponentInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ComponentInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ComponentInfo;->getIconResource()I +HSPLandroid/content/pm/ComponentInfo;->getLogoResource()I +HSPLandroid/content/pm/ComponentInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/ComponentInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ConfigurationInfo$1;->()V +HSPLandroid/content/pm/ConfigurationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ConfigurationInfo; +HSPLandroid/content/pm/ConfigurationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ConfigurationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ConfigurationInfo;->(Landroid/os/Parcel;Landroid/content/pm/ConfigurationInfo;)V +HSPLandroid/content/pm/FallbackCategoryProvider;->getFallbackCategory(Ljava/lang/String;)I +HSPLandroid/content/pm/FeatureGroupInfo$1;->()V +HSPLandroid/content/pm/FeatureInfo$1;->()V +HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/FeatureInfo; +HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/FeatureInfo;->()V +HSPLandroid/content/pm/FeatureInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/FeatureInfo;->(Landroid/os/Parcel;Landroid/content/pm/FeatureInfo;)V +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->hasShortcutHostPermission(Ljava/lang/String;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/ILauncherApps$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/ILauncherApps; +HSPLandroid/content/pm/ILauncherApps;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V +HSPLandroid/content/pm/ILauncherApps;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ILauncherApps;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps;->getShortcutConfigActivityIntent(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/IntentSender; +HSPLandroid/content/pm/ILauncherApps;->getShortcutIconFd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/content/pm/ILauncherApps;->getShortcutIconResId(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/content/pm/ILauncherApps;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ILauncherApps;->hasShortcutHostPermission(Ljava/lang/String;)Z +HSPLandroid/content/pm/ILauncherApps;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/ILauncherApps;->pinShortcuts(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/ILauncherApps;->removeOnAppsChangedListener(Landroid/content/pm/IOnAppsChangedListener;)V +HSPLandroid/content/pm/ILauncherApps;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/ILauncherApps;->showAppDetailsAsUser(Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/ILauncherApps;->startActivityAsUser(Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/ILauncherApps;->startShortcut(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;Landroid/os/Bundle;I)Z +HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->()V +HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackageAdded(Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackageRemoved(Landroid/os/UserHandle;Ljava/lang/String;)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackagesAvailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackagesSuspended(Landroid/os/UserHandle;[Ljava/lang/String;)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackagesUnavailable(Landroid/os/UserHandle;[Ljava/lang/String;Z)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onPackagesUnsuspended(Landroid/os/UserHandle;[Ljava/lang/String;)V +HSPLandroid/content/pm/IOnAppsChangedListener;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->()V +HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IOnPermissionsChangeListener;->onPermissionsChanged(I)V +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->getAllSessions(I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V +HSPLandroid/content/pm/IPackageInstaller$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstaller; +HSPLandroid/content/pm/IPackageInstaller;->abandonSession(I)V +HSPLandroid/content/pm/IPackageInstaller;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageInstaller;->getAllSessions(I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageInstaller;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageInstaller;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; +HSPLandroid/content/pm/IPackageInstaller;->openSession(I)Landroid/content/pm/IPackageInstallerSession; +HSPLandroid/content/pm/IPackageInstaller;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V +HSPLandroid/content/pm/IPackageInstaller;->setPermissionsResult(IZ)V +HSPLandroid/content/pm/IPackageInstaller;->uninstall(Landroid/content/pm/VersionedPackage;Ljava/lang/String;ILandroid/content/IntentSender;I)V +HSPLandroid/content/pm/IPackageInstaller;->unregisterCallback(Landroid/content/pm/IPackageInstallerCallback;)V +HSPLandroid/content/pm/IPackageInstaller;->updateSessionAppIcon(ILandroid/graphics/Bitmap;)V +HSPLandroid/content/pm/IPackageInstaller;->updateSessionAppLabel(ILjava/lang/String;)V +HSPLandroid/content/pm/IPackageInstallerCallback$Stub;->()V +HSPLandroid/content/pm/IPackageInstallerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IPackageInstallerCallback;->onSessionActiveChanged(IZ)V +HSPLandroid/content/pm/IPackageInstallerCallback;->onSessionBadgingChanged(I)V +HSPLandroid/content/pm/IPackageInstallerCallback;->onSessionCreated(I)V +HSPLandroid/content/pm/IPackageInstallerCallback;->onSessionFinished(IZ)V +HSPLandroid/content/pm/IPackageInstallerCallback;->onSessionProgressChanged(IF)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;II)I +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->hasSystemFeature(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isOnlyCoreApps()Z +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isSafeMode()Z +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->notifyPackageUse(Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager$Stub;->()V +HSPLandroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; +HSPLandroid/content/pm/IPackageManager;->activitySupportsIntent(Landroid/content/ComponentName;Landroid/content/Intent;Ljava/lang/String;)Z +HSPLandroid/content/pm/IPackageManager;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;Ljava/lang/String;III)V +HSPLandroid/content/pm/IPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +HSPLandroid/content/pm/IPackageManager;->addPermission(Landroid/content/pm/PermissionInfo;)Z +HSPLandroid/content/pm/IPackageManager;->addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z +HSPLandroid/content/pm/IPackageManager;->addPersistentPreferredActivity(Landroid/content/IntentFilter;Landroid/content/ComponentName;I)V +HSPLandroid/content/pm/IPackageManager;->addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V +HSPLandroid/content/pm/IPackageManager;->canForwardTo(Landroid/content/Intent;Ljava/lang/String;II)Z +HSPLandroid/content/pm/IPackageManager;->canRequestPackageInstalls(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->checkPackageStartable(Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->checkUidSignatures(II)I +HSPLandroid/content/pm/IPackageManager;->clearApplicationProfileData(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)V +HSPLandroid/content/pm/IPackageManager;->clearCrossProfileIntentFilters(ILjava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->clearPackagePersistentPreferredActivities(Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->clearPackagePreferredActivities(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->deleteApplicationCacheFiles(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/IPackageManager;->deleteApplicationCacheFilesAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/IPackageManager;->deletePackageAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageDeleteObserver;II)V +HSPLandroid/content/pm/IPackageManager;->deletePackageVersioned(Landroid/content/pm/VersionedPackage;Landroid/content/pm/IPackageDeleteObserver2;II)V +HSPLandroid/content/pm/IPackageManager;->deletePreloadsFileCache()V +HSPLandroid/content/pm/IPackageManager;->dumpProfiles(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->enterSafeMode()V +HSPLandroid/content/pm/IPackageManager;->extendVerificationTimeout(IIJ)V +HSPLandroid/content/pm/IPackageManager;->findPersistentPreferredActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager;->finishPackageInstall(IZ)V +HSPLandroid/content/pm/IPackageManager;->flushPackageRestrictionsAsUser(I)V +HSPLandroid/content/pm/IPackageManager;->forceDexOpt(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->freeStorage(Ljava/lang/String;JILandroid/content/IntentSender;)V +HSPLandroid/content/pm/IPackageManager;->freeStorageAndNotify(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/IPackageManager;->getAllIntentFilters(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getAllPackages()Ljava/util/List; +HSPLandroid/content/pm/IPackageManager;->getAllPermissionGroups(I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getApplicationEnabledSetting(Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->getApplicationHiddenSettingAsUser(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/IPackageManager;->getBlockUninstallForUser(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->getChangedPackages(II)Landroid/content/pm/ChangedPackages; +HSPLandroid/content/pm/IPackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I +HSPLandroid/content/pm/IPackageManager;->getDefaultAppsBackup(I)[B +HSPLandroid/content/pm/IPackageManager;->getDefaultBrowserPackageName(I)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getFlagsForUid(I)I +HSPLandroid/content/pm/IPackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; +HSPLandroid/content/pm/IPackageManager;->getInstallLocation()I +HSPLandroid/content/pm/IPackageManager;->getInstallReason(Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getInstantAppCookie(Ljava/lang/String;I)[B +HSPLandroid/content/pm/IPackageManager;->getInstantAppIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; +HSPLandroid/content/pm/IPackageManager;->getInstantAppInstallerComponent()Landroid/content/ComponentName; +HSPLandroid/content/pm/IPackageManager;->getInstantAppResolverComponent()Landroid/content/ComponentName; +HSPLandroid/content/pm/IPackageManager;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName; +HSPLandroid/content/pm/IPackageManager;->getInstantApps(I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; +HSPLandroid/content/pm/IPackageManager;->getIntentFilterVerificationBackup(I)[B +HSPLandroid/content/pm/IPackageManager;->getIntentFilterVerifications(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getIntentVerificationStatus(Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->getKeySetByAlias(Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/KeySet; +HSPLandroid/content/pm/IPackageManager;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager;->getMoveStatus(I)I +HSPLandroid/content/pm/IPackageManager;->getNameForUid(I)Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getNamesForUids([I)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getPackageGids(Ljava/lang/String;II)[I +HSPLandroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/IPackageManager;->getPackageInfoVersioned(Landroid/content/pm/VersionedPackage;II)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/IPackageManager;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; +HSPLandroid/content/pm/IPackageManager;->getPackageSizeInfo(Ljava/lang/String;ILandroid/content/pm/IPackageStatsObserver;)V +HSPLandroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;II)I +HSPLandroid/content/pm/IPackageManager;->getPackagesForUid(I)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getPackagesHoldingPermissions([Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getPermissionControllerPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/content/pm/IPackageManager;->getPermissionGrantBackup(I)[B +HSPLandroid/content/pm/IPackageManager;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo; +HSPLandroid/content/pm/IPackageManager;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; +HSPLandroid/content/pm/IPackageManager;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager;->getPreferredActivityBackup(I)[B +HSPLandroid/content/pm/IPackageManager;->getPreviousCodePaths(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/content/pm/IPackageManager;->getPrivateFlagsForUid(I)I +HSPLandroid/content/pm/IPackageManager;->getProviderInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/IPackageManager;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/IPackageManager;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/IPackageManager;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getSharedLibraries(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getSigningKeySet(Ljava/lang/String;)Landroid/content/pm/KeySet; +HSPLandroid/content/pm/IPackageManager;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->getSystemSharedLibraryNames()[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->getUidForSharedUser(Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager;->getVerifierDeviceIdentity()Landroid/content/pm/VerifierDeviceIdentity; +HSPLandroid/content/pm/IPackageManager;->grantDefaultPermissionsToEnabledCarrierApps([Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->hasSystemFeature(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->hasSystemUidErrors()Z +HSPLandroid/content/pm/IPackageManager;->installExistingPackageAsUser(Ljava/lang/String;III)I +HSPLandroid/content/pm/IPackageManager;->installPackageAsUser(Ljava/lang/String;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->isFirstBoot()Z +HSPLandroid/content/pm/IPackageManager;->isInstantApp(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->isOnlyCoreApps()Z +HSPLandroid/content/pm/IPackageManager;->isPackageAvailable(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->isPackageDeviceAdminOnAnyUser(Ljava/lang/String;)Z +HSPLandroid/content/pm/IPackageManager;->isPackageSignedByKeySet(Ljava/lang/String;Landroid/content/pm/KeySet;)Z +HSPLandroid/content/pm/IPackageManager;->isPackageSignedByKeySetExactly(Ljava/lang/String;Landroid/content/pm/KeySet;)Z +HSPLandroid/content/pm/IPackageManager;->isPackageSuspendedForUser(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->isPermissionEnforced(Ljava/lang/String;)Z +HSPLandroid/content/pm/IPackageManager;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->isProtectedBroadcast(Ljava/lang/String;)Z +HSPLandroid/content/pm/IPackageManager;->isSafeMode()Z +HSPLandroid/content/pm/IPackageManager;->isStorageLow()Z +HSPLandroid/content/pm/IPackageManager;->isUidPrivileged(I)Z +HSPLandroid/content/pm/IPackageManager;->isUpgrade()Z +HSPLandroid/content/pm/IPackageManager;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->movePackage(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager;->movePrimaryStorage(Ljava/lang/String;)I +HSPLandroid/content/pm/IPackageManager;->nextPackageToClean(Landroid/content/pm/PackageCleanItem;)Landroid/content/pm/PackageCleanItem; +HSPLandroid/content/pm/IPackageManager;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->notifyPackageUse(Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->performDexOptMode(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;)Z +HSPLandroid/content/pm/IPackageManager;->performDexOptSecondary(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLandroid/content/pm/IPackageManager;->performFstrimIfNeeded()V +HSPLandroid/content/pm/IPackageManager;->queryContentProviders(Ljava/lang/String;IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryInstrumentation(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->queryPermissionsByGroup(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IPackageManager;->querySyncProviders(Ljava/util/List;Ljava/util/List;)V +HSPLandroid/content/pm/IPackageManager;->reconcileSecondaryDexFiles(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->registerDexModule(Ljava/lang/String;Ljava/lang/String;ZLandroid/content/pm/IDexModuleRegisterCallback;)V +HSPLandroid/content/pm/IPackageManager;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +HSPLandroid/content/pm/IPackageManager;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +HSPLandroid/content/pm/IPackageManager;->removePermission(Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V +HSPLandroid/content/pm/IPackageManager;->resetApplicationPreferences(I)V +HSPLandroid/content/pm/IPackageManager;->resetRuntimePermissions()V +HSPLandroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/IPackageManager;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/IPackageManager;->restoreDefaultApps([BI)V +HSPLandroid/content/pm/IPackageManager;->restoreIntentFilterVerification([BI)V +HSPLandroid/content/pm/IPackageManager;->restorePermissionGrants([BI)V +HSPLandroid/content/pm/IPackageManager;->restorePreferredActivities([BI)V +HSPLandroid/content/pm/IPackageManager;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/pm/IPackageManager;->runBackgroundDexoptJob()Z +HSPLandroid/content/pm/IPackageManager;->setApplicationCategoryHint(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->setApplicationHiddenSettingAsUser(Ljava/lang/String;ZI)Z +HSPLandroid/content/pm/IPackageManager;->setBlockUninstallForUser(Ljava/lang/String;ZI)Z +HSPLandroid/content/pm/IPackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V +HSPLandroid/content/pm/IPackageManager;->setDefaultBrowserPackageName(Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->setHomeActivity(Landroid/content/ComponentName;I)V +HSPLandroid/content/pm/IPackageManager;->setInstallLocation(I)Z +HSPLandroid/content/pm/IPackageManager;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/pm/IPackageManager;->setInstantAppCookie(Ljava/lang/String;[BI)Z +HSPLandroid/content/pm/IPackageManager;->setLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;ILandroid/content/IntentFilter;ILandroid/content/ComponentName;)V +HSPLandroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V +HSPLandroid/content/pm/IPackageManager;->setPackagesSuspendedAsUser([Ljava/lang/String;ZI)[Ljava/lang/String; +HSPLandroid/content/pm/IPackageManager;->setPermissionEnforced(Ljava/lang/String;Z)V +HSPLandroid/content/pm/IPackageManager;->setRequiredForSystemUser(Ljava/lang/String;Z)Z +HSPLandroid/content/pm/IPackageManager;->setUpdateAvailable(Ljava/lang/String;Z)V +HSPLandroid/content/pm/IPackageManager;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/content/pm/IPackageManager;->systemReady()V +HSPLandroid/content/pm/IPackageManager;->unregisterMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +HSPLandroid/content/pm/IPackageManager;->updateExternalMediaStatus(ZZ)V +HSPLandroid/content/pm/IPackageManager;->updateIntentVerificationStatus(Ljava/lang/String;II)Z +HSPLandroid/content/pm/IPackageManager;->updatePackagesIfNeeded()V +HSPLandroid/content/pm/IPackageManager;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;III)V +HSPLandroid/content/pm/IPackageManager;->updatePermissionFlagsForAllApps(III)V +HSPLandroid/content/pm/IPackageManager;->verifyIntentFilter(IILjava/util/List;)V +HSPLandroid/content/pm/IPackageManager;->verifyPendingInstall(II)V +HSPLandroid/content/pm/IPackageMoveObserver$Stub;->()V +HSPLandroid/content/pm/IPackageMoveObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/content/pm/IPackageMoveObserver;->onCreated(ILandroid/os/Bundle;)V +HSPLandroid/content/pm/IPackageMoveObserver;->onStatusChanged(IIJ)V +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->enableShortcuts(Ljava/lang/String;Ljava/util/List;I)V +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->isRequestPinItemSupported(II)Z +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +HSPLandroid/content/pm/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IShortcutService; +HSPLandroid/content/pm/IShortcutService;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +HSPLandroid/content/pm/IShortcutService;->applyRestore([BI)V +HSPLandroid/content/pm/IShortcutService;->createShortcutResultIntent(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;I)Landroid/content/Intent; +HSPLandroid/content/pm/IShortcutService;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V +HSPLandroid/content/pm/IShortcutService;->enableShortcuts(Ljava/lang/String;Ljava/util/List;I)V +HSPLandroid/content/pm/IShortcutService;->getBackupPayload(I)[B +HSPLandroid/content/pm/IShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService;->getIconMaxDimensions(Ljava/lang/String;I)I +HSPLandroid/content/pm/IShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I +HSPLandroid/content/pm/IShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/IShortcutService;->getRateLimitResetTime(Ljava/lang/String;I)J +HSPLandroid/content/pm/IShortcutService;->getRemainingCallCount(Ljava/lang/String;I)I +HSPLandroid/content/pm/IShortcutService;->isRequestPinItemSupported(II)Z +HSPLandroid/content/pm/IShortcutService;->onApplicationActive(Ljava/lang/String;I)V +HSPLandroid/content/pm/IShortcutService;->removeAllDynamicShortcuts(Ljava/lang/String;I)V +HSPLandroid/content/pm/IShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V +HSPLandroid/content/pm/IShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/pm/IShortcutService;->requestPinShortcut(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;I)Z +HSPLandroid/content/pm/IShortcutService;->resetThrottling()V +HSPLandroid/content/pm/IShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +HSPLandroid/content/pm/IShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +HSPLandroid/content/pm/InstrumentationInfo$1;->()V +HSPLandroid/content/pm/InstrumentationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/InstrumentationInfo; +HSPLandroid/content/pm/InstrumentationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/InstrumentationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/InstrumentationInfo;->(Landroid/os/Parcel;Landroid/content/pm/InstrumentationInfo;)V +HSPLandroid/content/pm/InstrumentationInfo;->copyTo(Landroid/content/pm/ApplicationInfo;)V +HSPLandroid/content/pm/IntentFilterVerificationInfo$1;->()V +HSPLandroid/content/pm/IntentFilterVerificationInfo;->(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/content/pm/IntentFilterVerificationInfo;->getIntFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +HSPLandroid/content/pm/IntentFilterVerificationInfo;->getPackageName()Ljava/lang/String; +HSPLandroid/content/pm/IntentFilterVerificationInfo;->getStringFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/pm/IntentFilterVerificationInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/content/pm/IntentFilterVerificationInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HSPLandroid/content/pm/LauncherActivityInfo;->(Landroid/content/Context;)V +HSPLandroid/content/pm/LauncherActivityInfo;->(Landroid/content/Context;Landroid/content/pm/ActivityInfo;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherActivityInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/LauncherActivityInfo;->getComponentName()Landroid/content/ComponentName; +HSPLandroid/content/pm/LauncherActivityInfo;->getLabel()Ljava/lang/CharSequence; +HSPLandroid/content/pm/LauncherActivityInfo;->getUser()Landroid/os/UserHandle; +HSPLandroid/content/pm/LauncherApps$1;->(Landroid/content/pm/LauncherApps;)V +HSPLandroid/content/pm/LauncherApps$Callback;->()V +HSPLandroid/content/pm/LauncherApps$Callback;->onPackageAdded(Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherApps$Callback;->onPackageChanged(Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherApps$Callback;->onPackageRemoved(Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherApps$Callback;->onPackagesAvailable([Ljava/lang/String;Landroid/os/UserHandle;Z)V +HSPLandroid/content/pm/LauncherApps$Callback;->onPackagesUnavailable([Ljava/lang/String;Landroid/os/UserHandle;Z)V +HSPLandroid/content/pm/LauncherApps$CallbackMessageHandler;->-get0(Landroid/content/pm/LauncherApps$CallbackMessageHandler;)Landroid/content/pm/LauncherApps$Callback; +HSPLandroid/content/pm/LauncherApps$CallbackMessageHandler;->(Landroid/os/Looper;Landroid/content/pm/LauncherApps$Callback;)V +HSPLandroid/content/pm/LauncherApps$ShortcutQuery;->()V +HSPLandroid/content/pm/LauncherApps$ShortcutQuery;->setQueryFlags(I)Landroid/content/pm/LauncherApps$ShortcutQuery; +HSPLandroid/content/pm/LauncherApps;->(Landroid/content/Context;)V +HSPLandroid/content/pm/LauncherApps;->(Landroid/content/Context;Landroid/content/pm/ILauncherApps;)V +HSPLandroid/content/pm/LauncherApps;->addCallbackLocked(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V +HSPLandroid/content/pm/LauncherApps;->convertToActivityList(Landroid/content/pm/ParceledListSlice;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->findCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)I +HSPLandroid/content/pm/LauncherApps;->getActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->getShortcutConfigActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->getShortcuts(Landroid/content/pm/LauncherApps$ShortcutQuery;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/content/pm/LauncherApps;->hasShortcutHostPermission()Z +HSPLandroid/content/pm/LauncherApps;->isActivityEnabled(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/LauncherApps;->isPackageEnabled(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/LauncherApps;->logErrorForInvalidProfileAccess(Landroid/os/UserHandle;)V +HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;)V +HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V +HSPLandroid/content/pm/LauncherApps;->removeCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)V +HSPLandroid/content/pm/LauncherApps;->resolveActivity(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/LauncherActivityInfo; +HSPLandroid/content/pm/PackageInfo$1;->()V +HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageInfo;->()V +HSPLandroid/content/pm/PackageInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageInfo;->(Landroid/os/Parcel;Landroid/content/pm/PackageInfo;)V +HSPLandroid/content/pm/PackageInfo;->propagateApplicationInfo(Landroid/content/pm/ApplicationInfo;[Landroid/content/pm/ComponentInfo;)V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->()V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->onActiveChanged(IZ)V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->onBadgingChanged(I)V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->onCreated(I)V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->onFinished(IZ)V +HSPLandroid/content/pm/PackageInstaller$SessionCallback;->onProgressChanged(IF)V +HSPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Looper;)V +HSPLandroid/content/pm/PackageInstaller;->(Landroid/content/pm/IPackageInstaller;Ljava/lang/String;I)V +HSPLandroid/content/pm/PackageInstaller;->getAllSessions()Ljava/util/List; +HSPLandroid/content/pm/PackageInstaller;->getMySessions()Ljava/util/List; +HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V +HSPLandroid/content/pm/PackageItemInfo;->()V +HSPLandroid/content/pm/PackageItemInfo;->(Landroid/content/pm/PackageItemInfo;)V +HSPLandroid/content/pm/PackageItemInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageItemInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageItemInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/PackageItemInfo;->loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PackageManager$MoveCallback;->()V +HSPLandroid/content/pm/PackageManager$MoveCallback;->onStatusChanged(IIJ)V +HSPLandroid/content/pm/PackageManager$NameNotFoundException;->(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager$OnPermissionsChangedListener;->onPermissionsChanged(I)V +HSPLandroid/content/pm/PackageManager;->()V +HSPLandroid/content/pm/PackageManager;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;III)V +HSPLandroid/content/pm/PackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V +HSPLandroid/content/pm/PackageManager;->addPackageToPreferred(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->addPermission(Landroid/content/pm/PermissionInfo;)Z +HSPLandroid/content/pm/PackageManager;->addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z +HSPLandroid/content/pm/PackageManager;->addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V +HSPLandroid/content/pm/PackageManager;->canRequestPackageInstalls()Z +HSPLandroid/content/pm/PackageManager;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->checkSignatures(II)I +HSPLandroid/content/pm/PackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/PackageManager;->clearCrossProfileIntentFilters(I)V +HSPLandroid/content/pm/PackageManager;->clearInstantAppCookie()V +HSPLandroid/content/pm/PackageManager;->clearPackagePreferredActivities(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->deleteApplicationCacheFiles(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/PackageManager;->deleteApplicationCacheFilesAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/PackageManager;->deletePackage(Ljava/lang/String;Landroid/content/pm/IPackageDeleteObserver;I)V +HSPLandroid/content/pm/PackageManager;->deletePackageAsUser(Ljava/lang/String;Landroid/content/pm/IPackageDeleteObserver;II)V +HSPLandroid/content/pm/PackageManager;->extendVerificationTimeout(IIJ)V +HSPLandroid/content/pm/PackageManager;->flushPackageRestrictionsAsUser(I)V +HSPLandroid/content/pm/PackageManager;->freeStorage(Ljava/lang/String;JLandroid/content/IntentSender;)V +HSPLandroid/content/pm/PackageManager;->freeStorageAndNotify(Ljava/lang/String;JLandroid/content/pm/IPackageDataObserver;)V +HSPLandroid/content/pm/PackageManager;->getActivityBanner(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getActivityBanner(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getActivityIcon(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getActivityIcon(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/PackageManager;->getActivityLogo(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getActivityLogo(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getAllIntentFilters(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getAllPermissionGroups(I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getApplicationBanner(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getApplicationBanner(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getApplicationEnabledSetting(Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->getApplicationHiddenSettingAsUser(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/content/pm/PackageManager;->getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getApplicationIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/PackageManager;->getApplicationInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/PackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/PackageManager;->getApplicationLogo(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getApplicationLogo(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getChangedPackages(I)Landroid/content/pm/ChangedPackages; +HSPLandroid/content/pm/PackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;)I +HSPLandroid/content/pm/PackageManager;->getDefaultActivityIcon()Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getDefaultBrowserPackageNameAsUser(I)Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; +HSPLandroid/content/pm/PackageManager;->getInstallReason(Ljava/lang/String;Landroid/os/UserHandle;)I +HSPLandroid/content/pm/PackageManager;->getInstalledApplications(I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getInstalledApplicationsAsUser(II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getInstalledPackages(I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getInstantAppAndroidId(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getInstantAppCookie()[B +HSPLandroid/content/pm/PackageManager;->getInstantAppCookieMaxBytes()I +HSPLandroid/content/pm/PackageManager;->getInstantAppCookieMaxSize()I +HSPLandroid/content/pm/PackageManager;->getInstantAppIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getInstantAppInstallerComponent()Landroid/content/ComponentName; +HSPLandroid/content/pm/PackageManager;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName; +HSPLandroid/content/pm/PackageManager;->getInstantApps()Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; +HSPLandroid/content/pm/PackageManager;->getIntentFilterVerifications(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getIntentVerificationStatusAsUser(Ljava/lang/String;I)I +HSPLandroid/content/pm/PackageManager;->getKeySetByAlias(Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/KeySet; +HSPLandroid/content/pm/PackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/pm/PackageManager;->getLeanbackLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent; +HSPLandroid/content/pm/PackageManager;->getMoveStatus(I)I +HSPLandroid/content/pm/PackageManager;->getNameForUid(I)Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getNamesForUids([I)[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getPackageCandidateVolumes(Landroid/content/pm/ApplicationInfo;)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getPackageCurrentVolume(Landroid/content/pm/ApplicationInfo;)Landroid/os/storage/VolumeInfo; +HSPLandroid/content/pm/PackageManager;->getPackageGids(Ljava/lang/String;)[I +HSPLandroid/content/pm/PackageManager;->getPackageGids(Ljava/lang/String;I)[I +HSPLandroid/content/pm/PackageManager;->getPackageInfo(Landroid/content/pm/VersionedPackage;I)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/PackageManager;->getPackageInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; +HSPLandroid/content/pm/PackageManager;->getPackageInstaller()Landroid/content/pm/PackageInstaller; +HSPLandroid/content/pm/PackageManager;->getPackageSizeInfoAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageStatsObserver;)V +HSPLandroid/content/pm/PackageManager;->getPackageUid(Ljava/lang/String;I)I +HSPLandroid/content/pm/PackageManager;->getPackageUidAsUser(Ljava/lang/String;I)I +HSPLandroid/content/pm/PackageManager;->getPackageUidAsUser(Ljava/lang/String;II)I +HSPLandroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getPackagesHoldingPermissions([Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getPermissionControllerPackageName()Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I +HSPLandroid/content/pm/PackageManager;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo; +HSPLandroid/content/pm/PackageManager;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; +HSPLandroid/content/pm/PackageManager;->getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->getPreferredPackages(I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getPrimaryStorageCandidateVolumes()Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getPrimaryStorageCurrentVolume()Landroid/os/storage/VolumeInfo; +HSPLandroid/content/pm/PackageManager;->getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/PackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/PackageManager;->getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources; +HSPLandroid/content/pm/PackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources; +HSPLandroid/content/pm/PackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; +HSPLandroid/content/pm/PackageManager;->getResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources; +HSPLandroid/content/pm/PackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/PackageManager;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getSharedLibraries(I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getSharedLibrariesAsUser(II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getSigningKeySet(Ljava/lang/String;)Landroid/content/pm/KeySet; +HSPLandroid/content/pm/PackageManager;->getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo; +HSPLandroid/content/pm/PackageManager;->getSystemSharedLibraryNames()[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/PackageManager;->getUidForSharedUser(Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->getUserBadgeForDensity(Landroid/os/UserHandle;I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getUserBadgeForDensityNoBackground(Landroid/os/UserHandle;I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getUserBadgedDrawableForDensity(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;Landroid/graphics/Rect;I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getUserBadgedIcon(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->getUserBadgedLabel(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/PackageManager;->getVerifierDeviceIdentity()Landroid/content/pm/VerifierDeviceIdentity; +HSPLandroid/content/pm/PackageManager;->getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/pm/PackageManager;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/PackageManager;->hasSystemFeature(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageManager;->hasSystemFeature(Ljava/lang/String;I)Z +HSPLandroid/content/pm/PackageManager;->installExistingPackage(Ljava/lang/String;)I +HSPLandroid/content/pm/PackageManager;->installExistingPackage(Ljava/lang/String;I)I +HSPLandroid/content/pm/PackageManager;->installExistingPackageAsUser(Ljava/lang/String;I)I +HSPLandroid/content/pm/PackageManager;->installPackage(Landroid/net/Uri;Landroid/app/PackageInstallObserver;ILjava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->installPackage(Landroid/net/Uri;Landroid/content/pm/IPackageInstallObserver;ILjava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->isInstantApp()Z +HSPLandroid/content/pm/PackageManager;->isInstantApp(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageManager;->isPackageAvailable(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageManager;->isPackageSuspendedForUser(Ljava/lang/String;I)Z +HSPLandroid/content/pm/PackageManager;->isPermissionReviewModeEnabled()Z +HSPLandroid/content/pm/PackageManager;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageManager;->isSafeMode()Z +HSPLandroid/content/pm/PackageManager;->isSignedBy(Ljava/lang/String;Landroid/content/pm/KeySet;)Z +HSPLandroid/content/pm/PackageManager;->isSignedByExactly(Ljava/lang/String;Landroid/content/pm/KeySet;)Z +HSPLandroid/content/pm/PackageManager;->isUpgrade()Z +HSPLandroid/content/pm/PackageManager;->loadItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->loadUnbadgedItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/pm/PackageManager;->movePackage(Ljava/lang/String;Landroid/os/storage/VolumeInfo;)I +HSPLandroid/content/pm/PackageManager;->movePrimaryStorage(Landroid/os/storage/VolumeInfo;)I +HSPLandroid/content/pm/PackageManager;->queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryBroadcastReceiversAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryContentProviders(Ljava/lang/String;II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryInstrumentation(Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentContentProvidersAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryIntentServicesAsUser(Landroid/content/Intent;II)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/content/pm/PackageManager;->registerDexModule(Ljava/lang/String;Landroid/content/pm/PackageManager$DexModuleRegisterCallback;)V +HSPLandroid/content/pm/PackageManager;->registerMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Handler;)V +HSPLandroid/content/pm/PackageManager;->removeOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V +HSPLandroid/content/pm/PackageManager;->removePackageFromPreferred(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->removePermission(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V +HSPLandroid/content/pm/PackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/PackageManager;->resolveActivityAsUser(Landroid/content/Intent;II)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/PackageManager;->resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/PackageManager;->resolveContentProviderAsUser(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/PackageManager;->resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/PackageManager;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/content/pm/PackageManager;->setApplicationCategoryHint(Ljava/lang/String;I)V +HSPLandroid/content/pm/PackageManager;->setApplicationEnabledSetting(Ljava/lang/String;II)V +HSPLandroid/content/pm/PackageManager;->setApplicationHiddenSettingAsUser(Ljava/lang/String;ZLandroid/os/UserHandle;)Z +HSPLandroid/content/pm/PackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V +HSPLandroid/content/pm/PackageManager;->setDefaultBrowserPackageNameAsUser(Ljava/lang/String;I)Z +HSPLandroid/content/pm/PackageManager;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/pm/PackageManager;->setInstantAppCookie([B)Z +HSPLandroid/content/pm/PackageManager;->setPackagesSuspendedAsUser([Ljava/lang/String;ZI)[Ljava/lang/String; +HSPLandroid/content/pm/PackageManager;->setUpdateAvailable(Ljava/lang/String;Z)V +HSPLandroid/content/pm/PackageManager;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageManager;->unregisterMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;)V +HSPLandroid/content/pm/PackageManager;->updateInstantAppCookie([B)V +HSPLandroid/content/pm/PackageManager;->updateIntentVerificationStatusAsUser(Ljava/lang/String;II)Z +HSPLandroid/content/pm/PackageManager;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IILandroid/os/UserHandle;)V +HSPLandroid/content/pm/PackageManager;->verifyIntentFilter(IILjava/util/List;)V +HSPLandroid/content/pm/PackageManager;->verifyPendingInstall(II)V +HSPLandroid/content/pm/PackageParser$Activity$1;->()V +HSPLandroid/content/pm/PackageParser$Activity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Activity; +HSPLandroid/content/pm/PackageParser$Activity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Activity;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Activity;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$Activity;)V +HSPLandroid/content/pm/PackageParser$ActivityIntentInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Callback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/PackageParser$Callback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/content/pm/PackageParser$Callback;->hasFeature(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageParser$Component;->(Landroid/content/pm/PackageParser$Package;)V +HSPLandroid/content/pm/PackageParser$Component;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Component;->createIntentsList(Landroid/os/Parcel;)Ljava/util/ArrayList; +HSPLandroid/content/pm/PackageParser$Component;->getComponentName()Landroid/content/ComponentName; +HSPLandroid/content/pm/PackageParser$Instrumentation$1;->()V +HSPLandroid/content/pm/PackageParser$Instrumentation$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Instrumentation; +HSPLandroid/content/pm/PackageParser$Instrumentation$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Instrumentation;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Instrumentation;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$Instrumentation;)V +HSPLandroid/content/pm/PackageParser$IntentInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$NewPermissionInfo;->(Ljava/lang/String;II)V +HSPLandroid/content/pm/PackageParser$Package$1;->()V +HSPLandroid/content/pm/PackageParser$Package;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Package;->fixupOwner(Ljava/util/List;)V +HSPLandroid/content/pm/PackageParser$Package;->getChildPackageNames()Ljava/util/List; +HSPLandroid/content/pm/PackageParser$Package;->internStringArrayList(Ljava/util/List;)V +HSPLandroid/content/pm/PackageParser$Package;->isPrivilegedApp()Z +HSPLandroid/content/pm/PackageParser$Package;->isSystemApp()Z +HSPLandroid/content/pm/PackageParser$Package;->isUpdatedSystemApp()Z +HSPLandroid/content/pm/PackageParser$Package;->readKeySetMapping(Landroid/os/Parcel;)Landroid/util/ArrayMap; +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseCodePath(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseResourcePath(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoCodePath(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoResourcePath(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitCodePaths([Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitResourcePaths([Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Package;->setApplicationVolumeUuid(Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser$PackageParserException;->(ILjava/lang/String;)V +HSPLandroid/content/pm/PackageParser$Permission$1;->()V +HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Permission; +HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Permission;->(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PermissionInfo;)V +HSPLandroid/content/pm/PackageParser$Permission;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Permission;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$Permission;)V +HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->()V +HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$PermissionGroup; +HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$PermissionGroup;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$PermissionGroup;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$PermissionGroup;)V +HSPLandroid/content/pm/PackageParser$Provider$1;->()V +HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Provider; +HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Provider;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Provider;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$Provider;)V +HSPLandroid/content/pm/PackageParser$ProviderIntentInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Service$1;->()V +HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Service; +HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PackageParser$Service;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$Service;->(Landroid/os/Parcel;Landroid/content/pm/PackageParser$Service;)V +HSPLandroid/content/pm/PackageParser$ServiceIntentInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParser$SplitNameComparator;->()V +HSPLandroid/content/pm/PackageParser$SplitNameComparator;->(Landroid/content/pm/PackageParser$SplitNameComparator;)V +HSPLandroid/content/pm/PackageParser$SplitPermissionInfo;->(Ljava/lang/String;[Ljava/lang/String;I)V +HSPLandroid/content/pm/PackageParser;->()V +HSPLandroid/content/pm/PackageParser;->checkUseInstalledOrHidden(ILandroid/content/pm/PackageUserState;Landroid/content/pm/ApplicationInfo;)Z +HSPLandroid/content/pm/PackageParser;->closeQuietly(Landroid/util/jar/StrictJarFile;)V +HSPLandroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;I)V +HSPLandroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V +HSPLandroid/content/pm/PackageParser;->collectCertificatesInternal(Landroid/content/pm/PackageParser$Package;I)V +HSPLandroid/content/pm/PackageParser;->convertToSignatures([[Ljava/security/cert/Certificate;)[Landroid/content/pm/Signature; +HSPLandroid/content/pm/PackageParser;->copyNeeded(ILandroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageUserState;Landroid/os/Bundle;I)Z +HSPLandroid/content/pm/PackageParser;->fromCacheEntry([B)Landroid/content/pm/PackageParser$Package; +HSPLandroid/content/pm/PackageParser;->fromCacheEntryStatic([B)Landroid/content/pm/PackageParser$Package; +HSPLandroid/content/pm/PackageParser;->generateActivityInfo(Landroid/content/pm/PackageParser$Activity;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ActivityInfo; +HSPLandroid/content/pm/PackageParser;->getCacheKey(Ljava/io/File;I)Ljava/lang/String; +HSPLandroid/content/pm/PackageParser;->getCachedResult(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; +HSPLandroid/content/pm/PackageParser;->isApkFile(Ljava/io/File;)Z +HSPLandroid/content/pm/PackageParser;->isApkPath(Ljava/lang/String;)Z +HSPLandroid/content/pm/PackageParser;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z +HSPLandroid/content/pm/PackageParser;->parseClusterPackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; +HSPLandroid/content/pm/PackageParser;->parseClusterPackageLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$PackageLite; +HSPLandroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;IZ)Landroid/content/pm/PackageParser$Package; +HSPLandroid/content/pm/PackageParser;->parsePublicKey(Ljava/lang/String;)Ljava/security/PublicKey; +HSPLandroid/content/pm/PackageParser;->setCacheDir(Ljava/io/File;)V +HSPLandroid/content/pm/PackageParser;->setCallback(Landroid/content/pm/PackageParser$Callback;)V +HSPLandroid/content/pm/PackageParser;->setDisplayMetrics(Landroid/util/DisplayMetrics;)V +HSPLandroid/content/pm/PackageParser;->setOnlyCoreApps(Z)V +HSPLandroid/content/pm/PackageParser;->setSeparateProcesses([Ljava/lang/String;)V +HSPLandroid/content/pm/PackageParser;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;ILandroid/content/pm/PackageUserState;)V +HSPLandroid/content/pm/PackageParserCacheHelper$ReadHelper;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageParserCacheHelper$ReadHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String; +HSPLandroid/content/pm/PackageParserCacheHelper$ReadHelper;->startAndInstall()V +HSPLandroid/content/pm/PackageUserState;->()V +HSPLandroid/content/pm/PackageUserState;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/pm/PackageUserState;->isAvailable(I)Z +HSPLandroid/content/pm/PackageUserState;->isEnabled(Landroid/content/pm/ComponentInfo;I)Z +HSPLandroid/content/pm/PackageUserState;->isMatch(Landroid/content/pm/ComponentInfo;I)Z +HSPLandroid/content/pm/ParceledListSlice$1;->()V +HSPLandroid/content/pm/ParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ParceledListSlice; +HSPLandroid/content/pm/ParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ParceledListSlice;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/content/pm/ParceledListSlice;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/content/pm/ParceledListSlice;->(Ljava/util/List;)V +HSPLandroid/content/pm/ParceledListSlice;->getList()Ljava/util/List; +HSPLandroid/content/pm/ParceledListSlice;->readParcelableCreator(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator; +HSPLandroid/content/pm/ParceledListSlice;->writeElement(Landroid/os/Parcelable;Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ParceledListSlice;->writeElement(Ljava/lang/Object;Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ParceledListSlice;->writeParcelableCreator(Landroid/os/Parcelable;Landroid/os/Parcel;)V +HSPLandroid/content/pm/ParceledListSlice;->writeParcelableCreator(Ljava/lang/Object;Landroid/os/Parcel;)V +HSPLandroid/content/pm/ParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PathPermission$1;->()V +HSPLandroid/content/pm/PathPermission$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PathPermission; +HSPLandroid/content/pm/PathPermission$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PathPermission$1;->newArray(I)[Landroid/content/pm/PathPermission; +HSPLandroid/content/pm/PathPermission$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/PathPermission;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PathPermission;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PermissionGroupInfo$1;->()V +HSPLandroid/content/pm/PermissionGroupInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PermissionGroupInfo; +HSPLandroid/content/pm/PermissionGroupInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PermissionGroupInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PermissionGroupInfo;->(Landroid/os/Parcel;Landroid/content/pm/PermissionGroupInfo;)V +HSPLandroid/content/pm/PermissionInfo$1;->()V +HSPLandroid/content/pm/PermissionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PermissionInfo; +HSPLandroid/content/pm/PermissionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/PermissionInfo;->()V +HSPLandroid/content/pm/PermissionInfo;->(Landroid/content/pm/PermissionInfo;)V +HSPLandroid/content/pm/PermissionInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PermissionInfo;->(Landroid/os/Parcel;Landroid/content/pm/PermissionInfo;)V +HSPLandroid/content/pm/PermissionInfo;->fixProtectionLevel(I)I +HSPLandroid/content/pm/ProviderInfo$1;->()V +HSPLandroid/content/pm/ProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/ProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ProviderInfo$1;->newArray(I)[Landroid/content/pm/ProviderInfo; +HSPLandroid/content/pm/ProviderInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/ProviderInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ProviderInfo;->(Landroid/os/Parcel;Landroid/content/pm/ProviderInfo;)V +HSPLandroid/content/pm/ProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ResolveInfo$1;->()V +HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ResolveInfo; +HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ResolveInfo;->()V +HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;Landroid/content/pm/ResolveInfo;)V +HSPLandroid/content/pm/ResolveInfo;->getComponentInfo()Landroid/content/pm/ComponentInfo; +HSPLandroid/content/pm/SELinuxUtil;->assignSeinfoUser(Landroid/content/pm/PackageUserState;)Ljava/lang/String; +HSPLandroid/content/pm/ServiceInfo$1;->()V +HSPLandroid/content/pm/ServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/ServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Landroid/content/pm/ServiceInfo; +HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/ServiceInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ServiceInfo;->(Landroid/os/Parcel;Landroid/content/pm/ServiceInfo;)V +HSPLandroid/content/pm/SharedLibraryInfo$1;->()V +HSPLandroid/content/pm/SharedLibraryInfo;->(Ljava/lang/String;IILandroid/content/pm/VersionedPackage;Ljava/util/List;)V +HSPLandroid/content/pm/ShortcutInfo$1;->()V +HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ShortcutInfo; +HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get0(Landroid/content/pm/ShortcutInfo$Builder;)Landroid/content/ComponentName; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get1(Landroid/content/pm/ShortcutInfo$Builder;)Ljava/util/Set; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get10(Landroid/content/pm/ShortcutInfo$Builder;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get11(Landroid/content/pm/ShortcutInfo$Builder;)I +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get12(Landroid/content/pm/ShortcutInfo$Builder;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get13(Landroid/content/pm/ShortcutInfo$Builder;)I +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get2(Landroid/content/pm/ShortcutInfo$Builder;)Landroid/content/Context; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get3(Landroid/content/pm/ShortcutInfo$Builder;)Ljava/lang/CharSequence; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get4(Landroid/content/pm/ShortcutInfo$Builder;)I +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get5(Landroid/content/pm/ShortcutInfo$Builder;)Landroid/os/PersistableBundle; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get6(Landroid/content/pm/ShortcutInfo$Builder;)Landroid/graphics/drawable/Icon; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get7(Landroid/content/pm/ShortcutInfo$Builder;)Ljava/lang/String; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get8(Landroid/content/pm/ShortcutInfo$Builder;)[Landroid/content/Intent; +HSPLandroid/content/pm/ShortcutInfo$Builder;->-get9(Landroid/content/pm/ShortcutInfo$Builder;)I +HSPLandroid/content/pm/ShortcutInfo$Builder;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/content/pm/ShortcutInfo$Builder;->build()Landroid/content/pm/ShortcutInfo; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setActivity(Landroid/content/ComponentName;)Landroid/content/pm/ShortcutInfo$Builder; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setIcon(Landroid/graphics/drawable/Icon;)Landroid/content/pm/ShortcutInfo$Builder; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntent(Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntents([Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder; +HSPLandroid/content/pm/ShortcutInfo$Builder;->setShortLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder; +HSPLandroid/content/pm/ShortcutInfo;->-wrap0([Landroid/content/Intent;)[Landroid/content/Intent; +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/content/pm/ShortcutInfo$Builder;)V +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/content/pm/ShortcutInfo$Builder;Landroid/content/pm/ShortcutInfo;)V +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;Landroid/content/pm/ShortcutInfo;)V +HSPLandroid/content/pm/ShortcutInfo;->cloneCategories(Ljava/util/Set;)Landroid/util/ArraySet; +HSPLandroid/content/pm/ShortcutInfo;->cloneIntents([Landroid/content/Intent;)[Landroid/content/Intent; +HSPLandroid/content/pm/ShortcutInfo;->fixUpIntentExtras()V +HSPLandroid/content/pm/ShortcutInfo;->getActivity()Landroid/content/ComponentName; +HSPLandroid/content/pm/ShortcutInfo;->getId()Ljava/lang/String; +HSPLandroid/content/pm/ShortcutInfo;->getUserHandle()Landroid/os/UserHandle; +HSPLandroid/content/pm/ShortcutInfo;->hasFlags(I)Z +HSPLandroid/content/pm/ShortcutInfo;->hasKeyFieldsOnly()Z +HSPLandroid/content/pm/ShortcutInfo;->isDeclaredInManifest()Z +HSPLandroid/content/pm/ShortcutInfo;->isDynamic()Z +HSPLandroid/content/pm/ShortcutInfo;->isEnabled()Z +HSPLandroid/content/pm/ShortcutInfo;->updateTimestamp()V +HSPLandroid/content/pm/ShortcutInfo;->validateIcon(Landroid/graphics/drawable/Icon;)Landroid/graphics/drawable/Icon; +HSPLandroid/content/pm/ShortcutInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ShortcutManager;->(Landroid/content/Context;Landroid/content/pm/IShortcutService;)V +HSPLandroid/content/pm/ShortcutManager;->disableShortcuts(Ljava/util/List;)V +HSPLandroid/content/pm/ShortcutManager;->disableShortcuts(Ljava/util/List;Ljava/lang/CharSequence;)V +HSPLandroid/content/pm/ShortcutManager;->enableShortcuts(Ljava/util/List;)V +HSPLandroid/content/pm/ShortcutManager;->getDynamicShortcuts()Ljava/util/List; +HSPLandroid/content/pm/ShortcutManager;->getManifestShortcuts()Ljava/util/List; +HSPLandroid/content/pm/ShortcutManager;->getMaxShortcutCountPerActivity()I +HSPLandroid/content/pm/ShortcutManager;->getPinnedShortcuts()Ljava/util/List; +HSPLandroid/content/pm/ShortcutManager;->injectMyUserId()I +HSPLandroid/content/pm/ShortcutManager;->isRequestPinShortcutSupported()Z +HSPLandroid/content/pm/ShortcutManager;->setDynamicShortcuts(Ljava/util/List;)Z +HSPLandroid/content/pm/ShortcutManager;->updateShortcuts(Ljava/util/List;)Z +HSPLandroid/content/pm/Signature$1;->()V +HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Signature; +HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/Signature$1;->newArray(I)[Landroid/content/pm/Signature; +HSPLandroid/content/pm/Signature$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/content/pm/Signature;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/Signature;->(Landroid/os/Parcel;Landroid/content/pm/Signature;)V +HSPLandroid/content/pm/Signature;->(Ljava/lang/String;)V +HSPLandroid/content/pm/Signature;->([B)V +HSPLandroid/content/pm/Signature;->([Ljava/security/cert/Certificate;)V +HSPLandroid/content/pm/Signature;->areExactMatch([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z +HSPLandroid/content/pm/Signature;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/pm/Signature;->hashCode()I +HSPLandroid/content/pm/Signature;->parseHexDigit(I)I +HSPLandroid/content/pm/Signature;->toByteArray()[B +HSPLandroid/content/pm/Signature;->toChars()[C +HSPLandroid/content/pm/Signature;->toChars([C[I)[C +HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String; +HSPLandroid/content/pm/UserInfo$1;->()V +HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/UserInfo; +HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/pm/UserInfo;->(ILjava/lang/String;Ljava/lang/String;I)V +HSPLandroid/content/pm/UserInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/UserInfo;->(Landroid/os/Parcel;Landroid/content/pm/UserInfo;)V +HSPLandroid/content/pm/UserInfo;->getUserHandle()Landroid/os/UserHandle; +HSPLandroid/content/pm/UserInfo;->isAdmin()Z +HSPLandroid/content/pm/UserInfo;->isEnabled()Z +HSPLandroid/content/pm/UserInfo;->isEphemeral()Z +HSPLandroid/content/pm/UserInfo;->isGuest()Z +HSPLandroid/content/pm/UserInfo;->isManagedProfile()Z +HSPLandroid/content/pm/UserInfo;->isRestricted()Z +HSPLandroid/content/pm/UserInfo;->supportsSwitchTo()Z +HSPLandroid/content/pm/UserInfo;->supportsSwitchToByUser()Z +HSPLandroid/content/pm/VersionedPackage$1;->()V +HSPLandroid/content/pm/VersionedPackage;->(Ljava/lang/String;I)V +HSPLandroid/content/res/AssetFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/AssetFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/res/AssetFileDescriptor;->(Landroid/os/Parcel;)V +HSPLandroid/content/res/AssetFileDescriptor;->(Landroid/os/ParcelFileDescriptor;JJ)V +HSPLandroid/content/res/AssetFileDescriptor;->(Landroid/os/ParcelFileDescriptor;JJLandroid/os/Bundle;)V +HSPLandroid/content/res/AssetFileDescriptor;->close()V +HSPLandroid/content/res/AssetFileDescriptor;->getDeclaredLength()J +HSPLandroid/content/res/AssetFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/content/res/AssetFileDescriptor;->getLength()J +HSPLandroid/content/res/AssetFileDescriptor;->getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor; +HSPLandroid/content/res/AssetFileDescriptor;->getStartOffset()J +HSPLandroid/content/res/AssetManager$AssetInputStream;->(Landroid/content/res/AssetManager;J)V +HSPLandroid/content/res/AssetManager$AssetInputStream;->(Landroid/content/res/AssetManager;JLandroid/content/res/AssetManager$AssetInputStream;)V +HSPLandroid/content/res/AssetManager$AssetInputStream;->available()I +HSPLandroid/content/res/AssetManager$AssetInputStream;->close()V +HSPLandroid/content/res/AssetManager$AssetInputStream;->finalize()V +HSPLandroid/content/res/AssetManager$AssetInputStream;->getNativeAsset()J +HSPLandroid/content/res/AssetManager$AssetInputStream;->mark(I)V +HSPLandroid/content/res/AssetManager$AssetInputStream;->markSupported()Z +HSPLandroid/content/res/AssetManager$AssetInputStream;->read()I +HSPLandroid/content/res/AssetManager$AssetInputStream;->read([B)I +HSPLandroid/content/res/AssetManager$AssetInputStream;->read([BII)I +HSPLandroid/content/res/AssetManager$AssetInputStream;->reset()V +HSPLandroid/content/res/AssetManager;->-wrap0(Landroid/content/res/AssetManager;J)I +HSPLandroid/content/res/AssetManager;->-wrap1(Landroid/content/res/AssetManager;J[BII)I +HSPLandroid/content/res/AssetManager;->-wrap2(Landroid/content/res/AssetManager;J)J +HSPLandroid/content/res/AssetManager;->-wrap3(Landroid/content/res/AssetManager;J)J +HSPLandroid/content/res/AssetManager;->-wrap4(Landroid/content/res/AssetManager;JJI)J +HSPLandroid/content/res/AssetManager;->-wrap5(Landroid/content/res/AssetManager;J)V +HSPLandroid/content/res/AssetManager;->-wrap6(Landroid/content/res/AssetManager;J)V +HSPLandroid/content/res/AssetManager;->()V +HSPLandroid/content/res/AssetManager;->addAssetPath(Ljava/lang/String;)I +HSPLandroid/content/res/AssetManager;->addAssetPathAsSharedLibrary(Ljava/lang/String;)I +HSPLandroid/content/res/AssetManager;->addAssetPathInternal(Ljava/lang/String;Z)I +HSPLandroid/content/res/AssetManager;->addOverlayPath(Ljava/lang/String;)I +HSPLandroid/content/res/AssetManager;->createTheme()J +HSPLandroid/content/res/AssetManager;->decRefsLocked(J)V +HSPLandroid/content/res/AssetManager;->ensureStringBlocks()[Landroid/content/res/StringBlock; +HSPLandroid/content/res/AssetManager;->ensureSystemAssets()V +HSPLandroid/content/res/AssetManager;->finalize()V +HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceBagText(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceStringArray(I)[Ljava/lang/String; +HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceTextArray(I)[Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V +HSPLandroid/content/res/AssetManager;->makeStringBlocks([Landroid/content/res/StringBlock;)V +HSPLandroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream; +HSPLandroid/content/res/AssetManager;->open(Ljava/lang/String;I)Ljava/io/InputStream; +HSPLandroid/content/res/AssetManager;->openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/AssetManager;->openNonAsset(ILjava/lang/String;I)Ljava/io/InputStream; +HSPLandroid/content/res/AssetManager;->openNonAssetFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/AssetManager;->openNonAssetFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/AssetManager;->openXmlBlockAsset(ILjava/lang/String;)Landroid/content/res/XmlBlock; +HSPLandroid/content/res/AssetManager;->releaseTheme(J)V +HSPLandroid/content/res/AssetManager;->xmlBlockGone(I)V +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->(Landroid/content/res/ColorStateList;)V +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Ljava/lang/Object; +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ColorStateList;->()V +HSPLandroid/content/res/ColorStateList;->(Landroid/content/res/ColorStateList;)V +HSPLandroid/content/res/ColorStateList;->([[I[I)V +HSPLandroid/content/res/ColorStateList;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/ColorStateList;->canApplyTheme()Z +HSPLandroid/content/res/ColorStateList;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList;->getChangingConfigurations()I +HSPLandroid/content/res/ColorStateList;->getColorForState([II)I +HSPLandroid/content/res/ColorStateList;->getConstantState()Landroid/content/res/ConstantState; +HSPLandroid/content/res/ColorStateList;->getDefaultColor()I +HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/ColorStateList;->isStateful()Z +HSPLandroid/content/res/ColorStateList;->modulateColorAlpha(IF)I +HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList;->onColorsChanged()V +HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList;->withAlpha(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/CompatibilityInfo; +HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/res/CompatibilityInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/res/CompatibilityInfo;->(Landroid/os/Parcel;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/CompatibilityInfo;->applyToConfiguration(ILandroid/content/res/Configuration;)V +HSPLandroid/content/res/CompatibilityInfo;->applyToDisplayMetrics(Landroid/util/DisplayMetrics;)V +HSPLandroid/content/res/CompatibilityInfo;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/CompatibilityInfo;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator; +HSPLandroid/content/res/CompatibilityInfo;->hashCode()I +HSPLandroid/content/res/CompatibilityInfo;->isScalingRequired()Z +HSPLandroid/content/res/CompatibilityInfo;->needsCompatResources()Z +HSPLandroid/content/res/CompatibilityInfo;->supportsScreen()Z +HSPLandroid/content/res/ComplexColor;->()V +HSPLandroid/content/res/ComplexColor;->getChangingConfigurations()I +HSPLandroid/content/res/ComplexColor;->setBaseChangingConfigurations(I)V +HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/Configuration; +HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/content/res/Configuration;->()V +HSPLandroid/content/res/Configuration;->(Landroid/content/res/Configuration;)V +HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;)V +HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;Landroid/content/res/Configuration;)V +HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I +HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;)I +HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I +HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I +HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z +HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/Configuration;->fixUpLocaleList()V +HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; +HSPLandroid/content/res/Configuration;->getLayoutDirection()I +HSPLandroid/content/res/Configuration;->getLocales()Landroid/os/LocaleList; +HSPLandroid/content/res/Configuration;->getScreenLayoutNoDirection(I)I +HSPLandroid/content/res/Configuration;->hashCode()I +HSPLandroid/content/res/Configuration;->isLayoutSizeAtLeast(I)Z +HSPLandroid/content/res/Configuration;->isOtherSeqNewer(Landroid/content/res/Configuration;)Z +HSPLandroid/content/res/Configuration;->isScreenRound()Z +HSPLandroid/content/res/Configuration;->isScreenWideColorGamut()Z +HSPLandroid/content/res/Configuration;->needNewResources(II)Z +HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/content/res/Configuration;->setAppBounds(IIII)V +HSPLandroid/content/res/Configuration;->setAppBounds(Landroid/graphics/Rect;)V +HSPLandroid/content/res/Configuration;->setLayoutDirection(Ljava/util/Locale;)V +HSPLandroid/content/res/Configuration;->setLocales(Landroid/os/LocaleList;)V +HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V +HSPLandroid/content/res/Configuration;->setToDefaults()V +HSPLandroid/content/res/Configuration;->unset()V +HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I +HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/res/ConfigurationBoundResourceCache;->()V +HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ConfigurationBoundResourceCache;->onConfigurationChange(I)V +HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;)V +HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;Z)V +HSPLandroid/content/res/ConstantState;->()V +HSPLandroid/content/res/ConstantState;->getChangingConfigurations()I +HSPLandroid/content/res/ConstantState;->newInstance()Ljava/lang/Object; +HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;)Ljava/lang/Object; +HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/DrawableCache;->()V +HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/ResourceId;->isValid(I)Z +HSPLandroid/content/res/Resources$NotFoundException;->(Ljava/lang/String;)V +HSPLandroid/content/res/Resources$Theme;->(Landroid/content/res/Resources;)V +HSPLandroid/content/res/Resources$Theme;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V +HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey; +HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V +HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/Resources$ThemeKey;->()V +HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V +HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey; +HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/Resources$ThemeKey;->hashCode()I +HSPLandroid/content/res/Resources$ThemeKey;->setTo(Landroid/content/res/Resources$ThemeKey;)V +HSPLandroid/content/res/Resources;->(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V +HSPLandroid/content/res/Resources;->(Ljava/lang/ClassLoader;)V +HSPLandroid/content/res/Resources;->getAnimation(I)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; +HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/content/res/Resources;->getBoolean(I)Z +HSPLandroid/content/res/Resources;->getClassLoader()Ljava/lang/ClassLoader; +HSPLandroid/content/res/Resources;->getColor(I)I +HSPLandroid/content/res/Resources;->getColor(ILandroid/content/res/Resources$Theme;)I +HSPLandroid/content/res/Resources;->getColorStateList(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/Resources;->getColorStateList(ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/Resources;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; +HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/content/res/Resources;->getDimension(I)F +HSPLandroid/content/res/Resources;->getDimensionPixelOffset(I)I +HSPLandroid/content/res/Resources;->getDimensionPixelSize(I)I +HSPLandroid/content/res/Resources;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; +HSPLandroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawableInflater()Landroid/graphics/drawable/DrawableInflater; +HSPLandroid/content/res/Resources;->getFloat(I)F +HSPLandroid/content/res/Resources;->getFont(I)Landroid/graphics/Typeface; +HSPLandroid/content/res/Resources;->getFont(Landroid/util/TypedValue;I)Landroid/graphics/Typeface; +HSPLandroid/content/res/Resources;->getFraction(III)F +HSPLandroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/res/Resources;->getImpl()Landroid/content/res/ResourcesImpl; +HSPLandroid/content/res/Resources;->getIntArray(I)[I +HSPLandroid/content/res/Resources;->getInteger(I)I +HSPLandroid/content/res/Resources;->getLayout(I)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getResourceName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getResourceTypeName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getSizeConfigurations()[Landroid/content/res/Configuration; +HSPLandroid/content/res/Resources;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; +HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String; +HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; +HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence; +HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue; +HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; +HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; +HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/Resources;->releaseTempTypedValue(Landroid/util/TypedValue;)V +HSPLandroid/content/res/Resources;->resourceHasPackage(I)Z +HSPLandroid/content/res/Resources;->selectDefaultTheme(II)I +HSPLandroid/content/res/Resources;->selectSystemTheme(IIIIII)I +HSPLandroid/content/res/Resources;->setImpl(Landroid/content/res/ResourcesImpl;)V +HSPLandroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V +HSPLandroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/Resources;->updateSystemConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->(Landroid/content/res/ResourcesImpl;)V +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->finalize()V +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getKey()Landroid/content/res/Resources$ThemeKey; +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V +HSPLandroid/content/res/ResourcesImpl;->(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;Landroid/view/DisplayAdjustments;)V +HSPLandroid/content/res/ResourcesImpl;->adjustLanguageTag(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->attrForQuantityCode(Ljava/lang/String;)I +HSPLandroid/content/res/ResourcesImpl;->cacheDrawable(Landroid/util/TypedValue;ZLandroid/content/res/DrawableCache;Landroid/content/res/Resources$Theme;ZJLandroid/graphics/drawable/Drawable;)V +HSPLandroid/content/res/ResourcesImpl;->calcConfigChanges(Landroid/content/res/Configuration;)I +HSPLandroid/content/res/ResourcesImpl;->flushLayoutCache()V +HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; +HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; +HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/content/res/ResourcesImpl;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/content/res/ResourcesImpl;->getDisplayMetrics()Landroid/util/DisplayMetrics; +HSPLandroid/content/res/ResourcesImpl;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/res/ResourcesImpl;->getPluralRule()Landroid/icu/text/PluralRules; +HSPLandroid/content/res/ResourcesImpl;->getQuantityText(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/ResourcesImpl;->getResourceEntryName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getResourceName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getResourceTypeName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getSizeConfigurations()[Landroid/content/res/Configuration; +HSPLandroid/content/res/ResourcesImpl;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; +HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/ResourcesImpl;->getValueForDensity(IILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface; +HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/ResourcesImpl;->newThemeImpl()Landroid/content/res/ResourcesImpl$ThemeImpl; +HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; +HSPLandroid/content/res/ResourcesImpl;->openRawResourceFd(ILandroid/util/TypedValue;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/ResourcesKey;->(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/ResourcesKey;->hasOverrideConfiguration()Z +HSPLandroid/content/res/ResourcesKey;->hashCode()I +HSPLandroid/content/res/StringBlock;->(JZ)V +HSPLandroid/content/res/StringBlock;->finalize()V +HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/ThemedResourceCache;->()V +HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray; +HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray; +HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V +HSPLandroid/content/res/ThemedResourceCache;->prune(I)Z +HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z +HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;)V +HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;Z)V +HSPLandroid/content/res/TypedArray;->(Landroid/content/res/Resources;)V +HSPLandroid/content/res/TypedArray;->extractThemeAttrs()[I +HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I +HSPLandroid/content/res/TypedArray;->getBoolean(IZ)Z +HSPLandroid/content/res/TypedArray;->getChangingConfigurations()I +HSPLandroid/content/res/TypedArray;->getColor(II)I +HSPLandroid/content/res/TypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/TypedArray;->getComplexColor(I)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/TypedArray;->getDimension(IF)F +HSPLandroid/content/res/TypedArray;->getDimensionPixelOffset(II)I +HSPLandroid/content/res/TypedArray;->getDimensionPixelSize(II)I +HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/TypedArray;->getFloat(IF)F +HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface; +HSPLandroid/content/res/TypedArray;->getFraction(IIIF)F +HSPLandroid/content/res/TypedArray;->getIndex(I)I +HSPLandroid/content/res/TypedArray;->getIndexCount()I +HSPLandroid/content/res/TypedArray;->getInt(II)I +HSPLandroid/content/res/TypedArray;->getInteger(II)I +HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I +HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I +HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String; +HSPLandroid/content/res/TypedArray;->getResourceId(II)I +HSPLandroid/content/res/TypedArray;->getResources()Landroid/content/res/Resources; +HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String; +HSPLandroid/content/res/TypedArray;->getText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/TypedArray;->getTextArray(I)[Ljava/lang/CharSequence; +HSPLandroid/content/res/TypedArray;->getThemeAttributeId(II)I +HSPLandroid/content/res/TypedArray;->getType(I)I +HSPLandroid/content/res/TypedArray;->getValue(ILandroid/util/TypedValue;)Z +HSPLandroid/content/res/TypedArray;->getValueAt(ILandroid/util/TypedValue;)Z +HSPLandroid/content/res/TypedArray;->hasValue(I)Z +HSPLandroid/content/res/TypedArray;->hasValueOrEmpty(I)Z +HSPLandroid/content/res/TypedArray;->length()I +HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/TypedArray;->obtain(Landroid/content/res/Resources;I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue; +HSPLandroid/content/res/TypedArray;->recycle()V +HSPLandroid/content/res/TypedArray;->resize(I)V +HSPLandroid/content/res/XmlBlock$Parser;->(Landroid/content/res/XmlBlock;JLandroid/content/res/XmlBlock;)V +HSPLandroid/content/res/XmlBlock$Parser;->close()V +HSPLandroid/content/res/XmlBlock$Parser;->finalize()V +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeBooleanValue(IZ)Z +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeCount()I +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeName(I)Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeNameResource(I)I +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(II)I +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(I)Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getDepth()I +HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I +HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I +HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getText()Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->isEmptyElementTag()Z +HSPLandroid/content/res/XmlBlock$Parser;->next()I +HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/res/XmlBlock;->-get0(Landroid/content/res/XmlBlock;)I +HSPLandroid/content/res/XmlBlock;->-set0(Landroid/content/res/XmlBlock;I)I +HSPLandroid/content/res/XmlBlock;->-wrap0(J)I +HSPLandroid/content/res/XmlBlock;->-wrap1(JI)I +HSPLandroid/content/res/XmlBlock;->-wrap10(J)I +HSPLandroid/content/res/XmlBlock;->-wrap13(J)I +HSPLandroid/content/res/XmlBlock;->-wrap14(Landroid/content/res/XmlBlock;)V +HSPLandroid/content/res/XmlBlock;->-wrap15(J)V +HSPLandroid/content/res/XmlBlock;->-wrap2(JI)I +HSPLandroid/content/res/XmlBlock;->-wrap3(JLjava/lang/String;Ljava/lang/String;)I +HSPLandroid/content/res/XmlBlock;->-wrap4(JI)I +HSPLandroid/content/res/XmlBlock;->-wrap6(JI)I +HSPLandroid/content/res/XmlBlock;->-wrap7(JI)I +HSPLandroid/content/res/XmlBlock;->(Landroid/content/res/AssetManager;J)V +HSPLandroid/content/res/XmlBlock;->close()V +HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V +HSPLandroid/content/res/XmlBlock;->finalize()V +HSPLandroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/XmlResourceParser;->close()V +HSPLandroid/database/AbstractCursor$SelfContentObserver;->(Landroid/database/AbstractCursor;)V +HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V +HSPLandroid/database/AbstractCursor;->()V +HSPLandroid/database/AbstractCursor;->checkPosition()V +HSPLandroid/database/AbstractCursor;->close()V +HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V +HSPLandroid/database/AbstractCursor;->finalize()V +HSPLandroid/database/AbstractCursor;->getColumnCount()I +HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/AbstractCursor;->getColumnIndexOrThrow(Ljava/lang/String;)I +HSPLandroid/database/AbstractCursor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/AbstractCursor;->getCount()I +HSPLandroid/database/AbstractCursor;->getDouble(I)D +HSPLandroid/database/AbstractCursor;->getFloat(I)F +HSPLandroid/database/AbstractCursor;->getInt(I)I +HSPLandroid/database/AbstractCursor;->getLong(I)J +HSPLandroid/database/AbstractCursor;->getPosition()I +HSPLandroid/database/AbstractCursor;->getShort(I)S +HSPLandroid/database/AbstractCursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/AbstractCursor;->getWantsAllOnMoveCalls()Z +HSPLandroid/database/AbstractCursor;->getWindow()Landroid/database/CursorWindow; +HSPLandroid/database/AbstractCursor;->isAfterLast()Z +HSPLandroid/database/AbstractCursor;->isClosed()Z +HSPLandroid/database/AbstractCursor;->isLast()Z +HSPLandroid/database/AbstractCursor;->isNull(I)Z +HSPLandroid/database/AbstractCursor;->moveToFirst()Z +HSPLandroid/database/AbstractCursor;->moveToNext()Z +HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z +HSPLandroid/database/AbstractCursor;->onChange(Z)V +HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V +HSPLandroid/database/AbstractCursor;->onMove(II)Z +HSPLandroid/database/AbstractCursor;->registerContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/AbstractCursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/AbstractCursor;->requery()Z +HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V +HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;I)V +HSPLandroid/database/AbstractCursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/AbstractCursor;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/AbstractWindowedCursor;->()V +HSPLandroid/database/AbstractWindowedCursor;->checkPosition()V +HSPLandroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V +HSPLandroid/database/AbstractWindowedCursor;->closeWindow()V +HSPLandroid/database/AbstractWindowedCursor;->copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V +HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B +HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D +HSPLandroid/database/AbstractWindowedCursor;->getFloat(I)F +HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I +HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J +HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow; +HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z +HSPLandroid/database/AbstractWindowedCursor;->onDeactivateOrClose()V +HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V +HSPLandroid/database/BulkCursorDescriptor$1;->()V +HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor; +HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/database/BulkCursorDescriptor;->()V +HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/database/BulkCursorNative;->()V +HSPLandroid/database/BulkCursorNative;->asBinder()Landroid/os/IBinder; +HSPLandroid/database/BulkCursorNative;->asInterface(Landroid/os/IBinder;)Landroid/database/IBulkCursor; +HSPLandroid/database/BulkCursorNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/database/BulkCursorProxy;->(Landroid/os/IBinder;)V +HSPLandroid/database/BulkCursorProxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/database/BulkCursorProxy;->close()V +HSPLandroid/database/BulkCursorProxy;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/BulkCursorToCursorAdaptor;->()V +HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V +HSPLandroid/database/BulkCursorToCursorAdaptor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/BulkCursorToCursorAdaptor;->getCount()I +HSPLandroid/database/BulkCursorToCursorAdaptor;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/BulkCursorToCursorAdaptor;->getObserver()Landroid/database/IContentObserver; +HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V +HSPLandroid/database/BulkCursorToCursorAdaptor;->onMove(II)Z +HSPLandroid/database/BulkCursorToCursorAdaptor;->throwIfCursorIsClosed()V +HSPLandroid/database/CharArrayBuffer;->(I)V +HSPLandroid/database/ContentObservable;->()V +HSPLandroid/database/ContentObservable;->dispatchChange(ZLandroid/net/Uri;)V +HSPLandroid/database/ContentObservable;->registerObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/ContentObserver$NotificationRunnable;->(Landroid/database/ContentObserver;ZLandroid/net/Uri;I)V +HSPLandroid/database/ContentObserver$NotificationRunnable;->run()V +HSPLandroid/database/ContentObserver$Transport;->(Landroid/database/ContentObserver;)V +HSPLandroid/database/ContentObserver$Transport;->onChange(ZLandroid/net/Uri;I)V +HSPLandroid/database/ContentObserver$Transport;->releaseContentObserver()V +HSPLandroid/database/ContentObserver;->-wrap0(Landroid/database/ContentObserver;ZLandroid/net/Uri;I)V +HSPLandroid/database/ContentObserver;->(Landroid/os/Handler;)V +HSPLandroid/database/ContentObserver;->dispatchChange(ZLandroid/net/Uri;)V +HSPLandroid/database/ContentObserver;->dispatchChange(ZLandroid/net/Uri;I)V +HSPLandroid/database/ContentObserver;->getContentObserver()Landroid/database/IContentObserver; +HSPLandroid/database/ContentObserver;->onChange(Z)V +HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;)V +HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;I)V +HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver; +HSPLandroid/database/CrossProcessCursor;->fillWindow(ILandroid/database/CursorWindow;)V +HSPLandroid/database/CrossProcessCursor;->getWindow()Landroid/database/CursorWindow; +HSPLandroid/database/CrossProcessCursor;->onMove(II)Z +HSPLandroid/database/CrossProcessCursorWrapper;->(Landroid/database/Cursor;)V +HSPLandroid/database/Cursor;->close()V +HSPLandroid/database/Cursor;->copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V +HSPLandroid/database/Cursor;->deactivate()V +HSPLandroid/database/Cursor;->getBlob(I)[B +HSPLandroid/database/Cursor;->getColumnCount()I +HSPLandroid/database/Cursor;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/Cursor;->getColumnIndexOrThrow(Ljava/lang/String;)I +HSPLandroid/database/Cursor;->getColumnName(I)Ljava/lang/String; +HSPLandroid/database/Cursor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/Cursor;->getCount()I +HSPLandroid/database/Cursor;->getDouble(I)D +HSPLandroid/database/Cursor;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/Cursor;->getFloat(I)F +HSPLandroid/database/Cursor;->getInt(I)I +HSPLandroid/database/Cursor;->getLong(I)J +HSPLandroid/database/Cursor;->getNotificationUri()Landroid/net/Uri; +HSPLandroid/database/Cursor;->getPosition()I +HSPLandroid/database/Cursor;->getShort(I)S +HSPLandroid/database/Cursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/Cursor;->getType(I)I +HSPLandroid/database/Cursor;->getWantsAllOnMoveCalls()Z +HSPLandroid/database/Cursor;->isAfterLast()Z +HSPLandroid/database/Cursor;->isBeforeFirst()Z +HSPLandroid/database/Cursor;->isClosed()Z +HSPLandroid/database/Cursor;->isFirst()Z +HSPLandroid/database/Cursor;->isLast()Z +HSPLandroid/database/Cursor;->isNull(I)Z +HSPLandroid/database/Cursor;->move(I)Z +HSPLandroid/database/Cursor;->moveToFirst()Z +HSPLandroid/database/Cursor;->moveToLast()Z +HSPLandroid/database/Cursor;->moveToNext()Z +HSPLandroid/database/Cursor;->moveToPosition(I)Z +HSPLandroid/database/Cursor;->moveToPrevious()Z +HSPLandroid/database/Cursor;->registerContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/Cursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/Cursor;->requery()Z +HSPLandroid/database/Cursor;->respond(Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/database/Cursor;->setExtras(Landroid/os/Bundle;)V +HSPLandroid/database/Cursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V +HSPLandroid/database/Cursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/Cursor;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->(Landroid/database/IContentObserver;Landroid/os/IBinder$DeathRecipient;)V +HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;)Z +HSPLandroid/database/CursorToBulkCursorAdaptor;->(Landroid/database/Cursor;Landroid/database/IContentObserver;Ljava/lang/String;)V +HSPLandroid/database/CursorToBulkCursorAdaptor;->close()V +HSPLandroid/database/CursorToBulkCursorAdaptor;->closeFilledWindowLocked()V +HSPLandroid/database/CursorToBulkCursorAdaptor;->createAndRegisterObserverProxyLocked(Landroid/database/IContentObserver;)V +HSPLandroid/database/CursorToBulkCursorAdaptor;->disposeLocked()V +HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor; +HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/CursorToBulkCursorAdaptor;->throwIfCursorIsClosed()V +HSPLandroid/database/CursorToBulkCursorAdaptor;->unregisterObserverProxyLocked()V +HSPLandroid/database/CursorWindow$1;->()V +HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow; +HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/database/CursorWindow$1;->newArray(I)[Landroid/database/CursorWindow; +HSPLandroid/database/CursorWindow$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;)V +HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;Landroid/database/CursorWindow;)V +HSPLandroid/database/CursorWindow;->(Ljava/lang/String;)V +HSPLandroid/database/CursorWindow;->allocRow()Z +HSPLandroid/database/CursorWindow;->clear()V +HSPLandroid/database/CursorWindow;->copyStringToBuffer(IILandroid/database/CharArrayBuffer;)V +HSPLandroid/database/CursorWindow;->dispose()V +HSPLandroid/database/CursorWindow;->finalize()V +HSPLandroid/database/CursorWindow;->getBlob(II)[B +HSPLandroid/database/CursorWindow;->getDouble(II)D +HSPLandroid/database/CursorWindow;->getFloat(II)F +HSPLandroid/database/CursorWindow;->getInt(II)I +HSPLandroid/database/CursorWindow;->getLong(II)J +HSPLandroid/database/CursorWindow;->getNumRows()I +HSPLandroid/database/CursorWindow;->getStartPosition()I +HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String; +HSPLandroid/database/CursorWindow;->getType(II)I +HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow; +HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V +HSPLandroid/database/CursorWindow;->putBlob([BII)Z +HSPLandroid/database/CursorWindow;->putLong(JII)Z +HSPLandroid/database/CursorWindow;->putNull(II)Z +HSPLandroid/database/CursorWindow;->putString(Ljava/lang/String;II)Z +HSPLandroid/database/CursorWindow;->recordClosingOfWindow(J)V +HSPLandroid/database/CursorWindow;->recordNewWindow(IJ)V +HSPLandroid/database/CursorWindow;->setNumColumns(I)Z +HSPLandroid/database/CursorWindow;->setStartPosition(I)V +HSPLandroid/database/CursorWindow;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/database/CursorWrapper;->(Landroid/database/Cursor;)V +HSPLandroid/database/CursorWrapper;->close()V +HSPLandroid/database/CursorWrapper;->copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V +HSPLandroid/database/CursorWrapper;->getBlob(I)[B +HSPLandroid/database/CursorWrapper;->getColumnCount()I +HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/CursorWrapper;->getColumnIndexOrThrow(Ljava/lang/String;)I +HSPLandroid/database/CursorWrapper;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/CursorWrapper;->getCount()I +HSPLandroid/database/CursorWrapper;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/CursorWrapper;->getInt(I)I +HSPLandroid/database/CursorWrapper;->getLong(I)J +HSPLandroid/database/CursorWrapper;->getPosition()I +HSPLandroid/database/CursorWrapper;->getString(I)Ljava/lang/String; +HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor; +HSPLandroid/database/CursorWrapper;->isAfterLast()Z +HSPLandroid/database/CursorWrapper;->isClosed()Z +HSPLandroid/database/CursorWrapper;->isNull(I)Z +HSPLandroid/database/CursorWrapper;->moveToFirst()Z +HSPLandroid/database/CursorWrapper;->moveToNext()Z +HSPLandroid/database/CursorWrapper;->moveToPosition(I)Z +HSPLandroid/database/CursorWrapper;->registerContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/CursorWrapper;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/CursorWrapper;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V +HSPLandroid/database/CursorWrapper;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/database/CursorWrapper;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/database/DataSetObservable;->()V +HSPLandroid/database/DataSetObservable;->notifyChanged()V +HSPLandroid/database/DataSetObservable;->notifyInvalidated()V +HSPLandroid/database/DataSetObserver;->()V +HSPLandroid/database/DatabaseErrorHandler;->onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroid/database/DatabaseUtils$InsertHelper;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V +HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V +HSPLandroid/database/DatabaseUtils;->cursorPickFillWindowStartPosition(II)I +HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I +HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I +HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->readExceptionFromParcel(Landroid/os/Parcel;)V +HSPLandroid/database/DatabaseUtils;->readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V +HSPLandroid/database/DefaultDatabaseErrorHandler;->()V +HSPLandroid/database/IBulkCursor;->close()V +HSPLandroid/database/IBulkCursor;->deactivate()V +HSPLandroid/database/IBulkCursor;->getExtras()Landroid/os/Bundle; +HSPLandroid/database/IBulkCursor;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/IBulkCursor;->onMove(I)V +HSPLandroid/database/IBulkCursor;->requery(Landroid/database/IContentObserver;)I +HSPLandroid/database/IBulkCursor;->respond(Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/database/IContentObserver$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/database/IContentObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/database/IContentObserver$Stub;->()V +HSPLandroid/database/IContentObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/database/IContentObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/database/IContentObserver; +HSPLandroid/database/IContentObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/database/IContentObserver;->onChange(ZLandroid/net/Uri;I)V +HSPLandroid/database/MatrixCursor$RowBuilder;->(Landroid/database/MatrixCursor;I)V +HSPLandroid/database/MatrixCursor$RowBuilder;->add(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder; +HSPLandroid/database/MatrixCursor;->-get0(Landroid/database/MatrixCursor;)I +HSPLandroid/database/MatrixCursor;->-get2(Landroid/database/MatrixCursor;)[Ljava/lang/Object; +HSPLandroid/database/MatrixCursor;->([Ljava/lang/String;)V +HSPLandroid/database/MatrixCursor;->([Ljava/lang/String;I)V +HSPLandroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V +HSPLandroid/database/MatrixCursor;->ensureCapacity(I)V +HSPLandroid/database/MatrixCursor;->get(I)Ljava/lang/Object; +HSPLandroid/database/MatrixCursor;->getBlob(I)[B +HSPLandroid/database/MatrixCursor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/MatrixCursor;->getCount()I +HSPLandroid/database/MatrixCursor;->getInt(I)I +HSPLandroid/database/MatrixCursor;->getLong(I)J +HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/MatrixCursor;->getType(I)I +HSPLandroid/database/MatrixCursor;->newRow()Landroid/database/MatrixCursor$RowBuilder; +HSPLandroid/database/MergeCursor$1;->(Landroid/database/MergeCursor;)V +HSPLandroid/database/MergeCursor$1;->onInvalidated()V +HSPLandroid/database/MergeCursor;->([Landroid/database/Cursor;)V +HSPLandroid/database/MergeCursor;->close()V +HSPLandroid/database/MergeCursor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/MergeCursor;->getCount()I +HSPLandroid/database/Observable;->()V +HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V +HSPLandroid/database/Observable;->unregisterAll()V +HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V +HSPLandroid/database/SQLException;->(Ljava/lang/String;)V +HSPLandroid/database/sqlite/-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE;->$m$0()Ljava/lang/Object; +HSPLandroid/database/sqlite/-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE;->(Ljava/lang/Object;)V +HSPLandroid/database/sqlite/-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE;->get()Ljava/lang/Object; +HSPLandroid/database/sqlite/DatabaseObjectNotClosedException;->()V +HSPLandroid/database/sqlite/SQLiteClosable;->()V +HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V +HSPLandroid/database/sqlite/SQLiteClosable;->close()V +HSPLandroid/database/sqlite/SQLiteClosable;->onAllReferencesReleased()V +HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V +HSPLandroid/database/sqlite/SQLiteConnection$Operation;->()V +HSPLandroid/database/sqlite/SQLiteConnection$Operation;->(Landroid/database/sqlite/SQLiteConnection$Operation;)V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->()V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->(Landroid/database/sqlite/SQLiteConnection$OperationLog;)V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperation(I)V +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLogLocked(I)Z +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->getOperationLocked(I)Landroid/database/sqlite/SQLiteConnection$Operation; +HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I +HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatement;->()V +HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatement;->(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->(Landroid/database/sqlite/SQLiteConnection;I)V +HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/String;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->-get0()[B +HSPLandroid/database/sqlite/SQLiteConnection;->-wrap1(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)V +HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement; +HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteConnection;->close()V +HSPLandroid/database/sqlite/SQLiteConnection;->collectDbStats(Ljava/util/ArrayList;)V +HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V +HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteConnection;->finalize()V +HSPLandroid/database/sqlite/SQLiteConnection;->finalizePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->getConnectionId()I +HSPLandroid/database/sqlite/SQLiteConnection;->getMainDbStatsUnsafe(IJJ)Landroid/database/sqlite/SQLiteDebug$DbStats; +HSPLandroid/database/sqlite/SQLiteConnection;->isCacheable(I)Z +HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z +HSPLandroid/database/sqlite/SQLiteConnection;->isPrimaryConnection()Z +HSPLandroid/database/sqlite/SQLiteConnection;->obtainPreparedStatement(Ljava/lang/String;JIIZ)Landroid/database/sqlite/SQLiteConnection$PreparedStatement; +HSPLandroid/database/sqlite/SQLiteConnection;->open()V +HSPLandroid/database/sqlite/SQLiteConnection;->open(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnection;->prepare(Ljava/lang/String;Landroid/database/sqlite/SQLiteStatementInfo;)V +HSPLandroid/database/sqlite/SQLiteConnection;->reconfigure(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V +HSPLandroid/database/sqlite/SQLiteConnection;->recyclePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->releasePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnection;->setAutoCheckpointInterval()V +HSPLandroid/database/sqlite/SQLiteConnection;->setForeignKeyModeFromConfiguration()V +HSPLandroid/database/sqlite/SQLiteConnection;->setJournalMode(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteConnection;->setJournalSizeLimit()V +HSPLandroid/database/sqlite/SQLiteConnection;->setLocaleFromConfiguration()V +HSPLandroid/database/sqlite/SQLiteConnection;->setOnlyAllowReadOnlyOperations(Z)V +HSPLandroid/database/sqlite/SQLiteConnection;->setPageSize()V +HSPLandroid/database/sqlite/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteConnection;->setWalModeFromConfiguration()V +HSPLandroid/database/sqlite/SQLiteConnection;->throwIfStatementForbidden(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;->(Ljava/lang/String;I)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->()V +HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;->(Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/os/Looper;J)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionAcquired(Landroid/database/sqlite/SQLiteConnection;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionClosed(Landroid/database/sqlite/SQLiteConnection;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionReleased(Landroid/database/sqlite/SQLiteConnection;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->close()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableConnectionsAndLogExceptionsLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableNonPrimaryConnectionsAndLogExceptionsLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeConnectionAndLogExceptionsLocked(Landroid/database/sqlite/SQLiteConnection;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeExcessConnectionsAndLogExceptionsLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->collectDbStats(Ljava/util/ArrayList;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->disableIdleConnectionHandler()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->dispose(Z)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->finalize()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPriority(I)I +HSPLandroid/database/sqlite/SQLiteConnectionPool;->markAcquiredConnectionsLocked(Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->obtainConnectionWaiterLocked(Ljava/lang/Thread;JIZLjava/lang/String;I)Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->open()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->open(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)Landroid/database/sqlite/SQLiteConnectionPool; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->openConnectionLocked(Landroid/database/sqlite/SQLiteDatabaseConfiguration;Z)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->reconfigure(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->recycleConnectionLocked(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;)Z +HSPLandroid/database/sqlite/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->releaseConnection(Landroid/database/sqlite/SQLiteConnection;)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->setupIdleConnectionHandler(Landroid/os/Looper;J)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->throwIfClosedLocked()V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V +HSPLandroid/database/sqlite/SQLiteCursor;->(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V +HSPLandroid/database/sqlite/SQLiteCursor;->close()V +HSPLandroid/database/sqlite/SQLiteCursor;->fillWindow(I)V +HSPLandroid/database/sqlite/SQLiteCursor;->finalize()V +HSPLandroid/database/sqlite/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/sqlite/SQLiteCursor;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I +HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z +HSPLandroid/database/sqlite/SQLiteCursor;->requery()Z +HSPLandroid/database/sqlite/SQLiteCursor;->setWindow(Landroid/database/CursorWindow;)V +HSPLandroid/database/sqlite/SQLiteCursorDriver;->cursorClosed()V +HSPLandroid/database/sqlite/SQLiteCursorDriver;->cursorDeactivated()V +HSPLandroid/database/sqlite/SQLiteCursorDriver;->cursorRequeried(Landroid/database/Cursor;)V +HSPLandroid/database/sqlite/SQLiteCursorDriver;->query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteCursorDriver;->setBindArguments([Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteDatabase$1;->(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase$CursorFactory;->newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->()V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->build()Landroid/database/sqlite/SQLiteDatabase$OpenParams; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->isWriteAheadLoggingEnabled()Z +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setCursorFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setErrorHandler(Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setWriteAheadLoggingEnabled(Z)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get0(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase$CursorFactory; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get1(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/DatabaseErrorHandler; +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get2(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)J +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get3(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get4(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->-get5(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJ)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLandroid/database/sqlite/SQLiteDatabase$OpenParams;)V +HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->toBuilder()Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +HSPLandroid/database/sqlite/SQLiteDatabase;->-android_database_sqlite_SQLiteDatabase-mthref-0()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteDatabase;->(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJ)V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction()V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListenerNonExclusive(Landroid/database/sqlite/SQLiteTransactionListener;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement; +HSPLandroid/database/sqlite/SQLiteDatabase;->createInMemory(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->createSession()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase;->disableWriteAheadLogging()V +HSPLandroid/database/sqlite/SQLiteDatabase;->dispose(Z)V +HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V +HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->executeSql(Ljava/lang/String;[Ljava/lang/Object;)I +HSPLandroid/database/sqlite/SQLiteDatabase;->finalize()V +HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabases()Ljava/util/ArrayList; +HSPLandroid/database/sqlite/SQLiteDatabase;->getDbStats()Ljava/util/ArrayList; +HSPLandroid/database/sqlite/SQLiteDatabase;->getPath()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase;->getSyncedTables()Ljava/util/Map; +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I +HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J +HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J +HSPLandroid/database/sqlite/SQLiteDatabase;->isDbLockedByCurrentThread()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnlyLocked()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->markTableSyncable(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->onAllReferencesReleased()V +HSPLandroid/database/sqlite/SQLiteDatabase;->open()V +HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->openInner()V +HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteDatabase;->replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J +HSPLandroid/database/sqlite/SQLiteDatabase;->setMaxSqlCacheSize(I)V +HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V +HSPLandroid/database/sqlite/SQLiteDatabase;->setVersion(I)V +HSPLandroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V +HSPLandroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/database/sqlite/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I +HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->(Ljava/lang/String;I)V +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isInMemoryDb()Z +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->updateParametersFrom(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V +HSPLandroid/database/sqlite/SQLiteDebug$DbStats;->(Ljava/lang/String;JJIIII)V +HSPLandroid/database/sqlite/SQLiteDebug$PagerStats;->()V +HSPLandroid/database/sqlite/SQLiteDebug;->getDatabaseInfo()Landroid/database/sqlite/SQLiteDebug$PagerStats; +HSPLandroid/database/sqlite/SQLiteDebug;->shouldLogSlowQuery(J)Z +HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->cursorClosed()V +HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->cursorRequeried(Landroid/database/Cursor;)V +HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteException;->(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultJournalMode()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultPageSize()I +HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultSyncMode()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteGlobal;->getIdleConnectionTimeout()I +HSPLandroid/database/sqlite/SQLiteGlobal;->getJournalSizeLimit()I +HSPLandroid/database/sqlite/SQLiteGlobal;->getWALAutoCheckpoint()I +HSPLandroid/database/sqlite/SQLiteGlobal;->getWALConnectionPoolSize()I +HSPLandroid/database/sqlite/SQLiteGlobal;->getWALSyncMode()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;IILandroid/database/DatabaseErrorHandler;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->close()V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->getDatabaseLocked(Z)Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteOpenHelper;->getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteOpenHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteOpenHelper;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->setFilePermissionsForDb(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V +HSPLandroid/database/sqlite/SQLiteProgram;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteProgram;->bind(ILjava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteProgram;->bindLong(IJ)V +HSPLandroid/database/sqlite/SQLiteProgram;->bindString(ILjava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteProgram;->clearBindings()V +HSPLandroid/database/sqlite/SQLiteProgram;->getBindArgs()[Ljava/lang/Object; +HSPLandroid/database/sqlite/SQLiteProgram;->getColumnNames()[Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteProgram;->getConnectionFlags()I +HSPLandroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteProgram;->getSession()Landroid/database/sqlite/SQLiteSession; +HSPLandroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteProgram;->onAllReferencesReleased()V +HSPLandroid/database/sqlite/SQLiteQuery;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->()V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeProjection([Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->getTables()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setProjectionMap(Ljava/util/Map;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setStrict(Z)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteSession$Transaction;->()V +HSPLandroid/database/sqlite/SQLiteSession$Transaction;->(Landroid/database/sqlite/SQLiteSession$Transaction;)V +HSPLandroid/database/sqlite/SQLiteSession;->(Landroid/database/sqlite/SQLiteConnectionPool;)V +HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->beginTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V +HSPLandroid/database/sqlite/SQLiteSession;->execute(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z +HSPLandroid/database/sqlite/SQLiteSession;->hasConnection()Z +HSPLandroid/database/sqlite/SQLiteSession;->hasTransaction()Z +HSPLandroid/database/sqlite/SQLiteSession;->obtainTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;)Landroid/database/sqlite/SQLiteSession$Transaction; +HSPLandroid/database/sqlite/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Landroid/database/sqlite/SQLiteStatementInfo;)V +HSPLandroid/database/sqlite/SQLiteSession;->recycleTransaction(Landroid/database/sqlite/SQLiteSession$Transaction;)V +HSPLandroid/database/sqlite/SQLiteSession;->releaseConnection()V +HSPLandroid/database/sqlite/SQLiteSession;->setTransactionSuccessful()V +HSPLandroid/database/sqlite/SQLiteSession;->throwIfNoTransaction()V +HSPLandroid/database/sqlite/SQLiteSession;->throwIfTransactionMarkedSuccessful()V +HSPLandroid/database/sqlite/SQLiteStatement;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/database/sqlite/SQLiteStatement;->execute()V +HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J +HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I +HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J +HSPLandroid/database/sqlite/SQLiteStatementInfo;->()V +HSPLandroid/database/sqlite/SQLiteTransactionListener;->onBegin()V +HSPLandroid/database/sqlite/SQLiteTransactionListener;->onCommit()V +HSPLandroid/database/sqlite/SQLiteTransactionListener;->onRollback()V +HSPLandroid/ddm/DdmHandleAppName;->()V +HSPLandroid/ddm/DdmHandleAppName;->getAppName()Ljava/lang/String; +HSPLandroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;I)V +HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V +HSPLandroid/ddm/DdmHandleExit;->connected()V +HSPLandroid/ddm/DdmHandleExit;->disconnected()V +HSPLandroid/ddm/DdmHandleHeap;->connected()V +HSPLandroid/ddm/DdmHandleHeap;->disconnected()V +HSPLandroid/ddm/DdmHandleHeap;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleHeap;->handleHPIF(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleHeap;->handleREAQ(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleHello;->connected()V +HSPLandroid/ddm/DdmHandleHello;->disconnected()V +HSPLandroid/ddm/DdmHandleHello;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleHello;->handleFEAT(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleHello;->handleHELO(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleNativeHeap;->connected()V +HSPLandroid/ddm/DdmHandleNativeHeap;->disconnected()V +HSPLandroid/ddm/DdmHandleProfiling;->connected()V +HSPLandroid/ddm/DdmHandleProfiling;->disconnected()V +HSPLandroid/ddm/DdmHandleProfiling;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleProfiling;->handleMPRQ(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLandroid/ddm/DdmHandleThread;->connected()V +HSPLandroid/ddm/DdmHandleThread;->disconnected()V +HSPLandroid/ddm/DdmHandleViewDebug;->connected()V +HSPLandroid/ddm/DdmHandleViewDebug;->disconnected()V +HSPLandroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1;->$m$2(D)D +HSPLandroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1;->$m$4(D)D +HSPLandroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1;->(BLjava/lang/Object;)V +HSPLandroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1;->applyAsDouble(D)D +HSPLandroid/graphics/BaseCanvas;->()V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawColor(I)V +HSPLandroid/graphics/BaseCanvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/BaseCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawOval(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawText([CIIFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Shader;)V +HSPLandroid/graphics/BaseCanvas;->throwIfHwBitmapInSwMode(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/Bitmap$CompressFormat;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config; +HSPLandroid/graphics/Bitmap$Config;->values()[Landroid/graphics/Bitmap$Config; +HSPLandroid/graphics/Bitmap;->-getandroid-graphics-Bitmap$ConfigSwitchesValues()[I +HSPLandroid/graphics/Bitmap;->-wrap0(Landroid/os/Parcel;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->(JIIIZZ[BLandroid/graphics/NinePatch$InsetStruct;)V +HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V +HSPLandroid/graphics/Bitmap;->checkPixelsAccess(IIIIII[I)V +HSPLandroid/graphics/Bitmap;->checkRecycled(Ljava/lang/String;)V +HSPLandroid/graphics/Bitmap;->checkWidthHeight(II)V +HSPLandroid/graphics/Bitmap;->checkXYSign(II)V +HSPLandroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z +HSPLandroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->copyPixelsToBuffer(Ljava/nio/Buffer;)V +HSPLandroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;ZLandroid/graphics/ColorSpace;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->eraseColor(I)V +HSPLandroid/graphics/Bitmap;->extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap; +HSPLandroid/graphics/Bitmap;->getAllocationByteCount()I +HSPLandroid/graphics/Bitmap;->getByteCount()I +HSPLandroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config; +HSPLandroid/graphics/Bitmap;->getDefaultDensity()I +HSPLandroid/graphics/Bitmap;->getGenerationId()I +HSPLandroid/graphics/Bitmap;->getHeight()I +HSPLandroid/graphics/Bitmap;->getNativeInstance()J +HSPLandroid/graphics/Bitmap;->getNinePatchChunk()[B +HSPLandroid/graphics/Bitmap;->getNinePatchInsets()Landroid/graphics/NinePatch$InsetStruct; +HSPLandroid/graphics/Bitmap;->getOpticalInsets(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Bitmap;->getPixels([IIIIIII)V +HSPLandroid/graphics/Bitmap;->getRowBytes()I +HSPLandroid/graphics/Bitmap;->getScaledHeight(I)I +HSPLandroid/graphics/Bitmap;->getScaledWidth(I)I +HSPLandroid/graphics/Bitmap;->getWidth()I +HSPLandroid/graphics/Bitmap;->hasAlpha()Z +HSPLandroid/graphics/Bitmap;->hasMipMap()Z +HSPLandroid/graphics/Bitmap;->isMutable()Z +HSPLandroid/graphics/Bitmap;->isPremultiplied()Z +HSPLandroid/graphics/Bitmap;->isRecycled()Z +HSPLandroid/graphics/Bitmap;->noteHardwareBitmapSlowCall()V +HSPLandroid/graphics/Bitmap;->prepareToDraw()V +HSPLandroid/graphics/Bitmap;->recycle()V +HSPLandroid/graphics/Bitmap;->reinit(IIZ)V +HSPLandroid/graphics/Bitmap;->scaleFromDensity(III)I +HSPLandroid/graphics/Bitmap;->setDensity(I)V +HSPLandroid/graphics/Bitmap;->setHasAlpha(Z)V +HSPLandroid/graphics/Bitmap;->setHasMipMap(Z)V +HSPLandroid/graphics/Bitmap;->setPixels([IIIIIII)V +HSPLandroid/graphics/Bitmap;->setPremultiplied(Z)V +HSPLandroid/graphics/Bitmap;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/BitmapFactory$Options;->()V +HSPLandroid/graphics/BitmapFactory$Options;->validate(Landroid/graphics/BitmapFactory$Options;)V +HSPLandroid/graphics/BitmapFactory;->decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->decodeStreamInternal(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; +HSPLandroid/graphics/BitmapFactory;->setDensityFromOptions(Landroid/graphics/Bitmap;Landroid/graphics/BitmapFactory$Options;)V +HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;II)V +HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V +HSPLandroid/graphics/BitmapShader;->createNativeInstance(J)J +HSPLandroid/graphics/BlurMaskFilter$Blur;->(Ljava/lang/String;II)V +HSPLandroid/graphics/BlurMaskFilter;->(FLandroid/graphics/BlurMaskFilter$Blur;)V +HSPLandroid/graphics/Canvas$EdgeType;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Canvas;->-wrap0()J +HSPLandroid/graphics/Canvas;->()V +HSPLandroid/graphics/Canvas;->(J)V +HSPLandroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/Canvas;->clipRect(FFFF)Z +HSPLandroid/graphics/Canvas;->clipRect(IIII)Z +HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Canvas;->concat(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawCircle(FFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawColor(I)V +HSPLandroid/graphics/Canvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/Canvas;->drawLine(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawOval(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawRect(FFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawText([CIIFFLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/graphics/Canvas;->getClipBounds(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Canvas;->getDensity()I +HSPLandroid/graphics/Canvas;->getHeight()I +HSPLandroid/graphics/Canvas;->getMatrix()Landroid/graphics/Matrix; +HSPLandroid/graphics/Canvas;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Canvas;->getNativeCanvasWrapper()J +HSPLandroid/graphics/Canvas;->getSaveCount()I +HSPLandroid/graphics/Canvas;->getWidth()I +HSPLandroid/graphics/Canvas;->isHardwareAccelerated()Z +HSPLandroid/graphics/Canvas;->isRecordingFor(Ljava/lang/Object;)Z +HSPLandroid/graphics/Canvas;->quickReject(FFFFLandroid/graphics/Canvas$EdgeType;)Z +HSPLandroid/graphics/Canvas;->restore()V +HSPLandroid/graphics/Canvas;->restoreToCount(I)V +HSPLandroid/graphics/Canvas;->rotate(F)V +HSPLandroid/graphics/Canvas;->rotate(FFF)V +HSPLandroid/graphics/Canvas;->save()I +HSPLandroid/graphics/Canvas;->save(I)I +HSPLandroid/graphics/Canvas;->scale(FF)V +HSPLandroid/graphics/Canvas;->scale(FFFF)V +HSPLandroid/graphics/Canvas;->setBitmap(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/Canvas;->setDrawFilter(Landroid/graphics/DrawFilter;)V +HSPLandroid/graphics/Canvas;->setHighContrastText(Z)V +HSPLandroid/graphics/Canvas;->translate(FF)V +HSPLandroid/graphics/Color;->(FFFFLandroid/graphics/ColorSpace;)V +HSPLandroid/graphics/Color;->HSVToColor(I[F)I +HSPLandroid/graphics/Color;->HSVToColor([F)I +HSPLandroid/graphics/Color;->RGBToHSV(III[F)V +HSPLandroid/graphics/Color;->alpha(I)I +HSPLandroid/graphics/Color;->argb(IIII)I +HSPLandroid/graphics/Color;->blue(I)I +HSPLandroid/graphics/Color;->colorToHSV(I[F)V +HSPLandroid/graphics/Color;->green(I)I +HSPLandroid/graphics/Color;->luminance(I)F +HSPLandroid/graphics/Color;->parseColor(Ljava/lang/String;)I +HSPLandroid/graphics/Color;->red(I)I +HSPLandroid/graphics/Color;->rgb(III)I +HSPLandroid/graphics/Color;->toArgb()I +HSPLandroid/graphics/Color;->valueOf(I)Landroid/graphics/Color; +HSPLandroid/graphics/ColorFilter;->-wrap0()J +HSPLandroid/graphics/ColorFilter;->()V +HSPLandroid/graphics/ColorFilter;->discardNativeInstance()V +HSPLandroid/graphics/ColorFilter;->getNativeInstance()J +HSPLandroid/graphics/ColorMatrix;->()V +HSPLandroid/graphics/ColorMatrix;->reset()V +HSPLandroid/graphics/ColorMatrix;->set([F)V +HSPLandroid/graphics/ColorMatrixColorFilter;->([F)V +HSPLandroid/graphics/ColorMatrixColorFilter;->setColorMatrixArray([F)V +HSPLandroid/graphics/ColorSpace$Adaptation;->(Ljava/lang/String;I[F)V +HSPLandroid/graphics/ColorSpace$Rgb$TransferParameters;->(DDDDDDD)V +HSPLandroid/graphics/ColorSpace$Rgb;->-android_graphics_ColorSpace$Rgb-mthref-0(D)D +HSPLandroid/graphics/ColorSpace$Rgb;->-get3(Landroid/graphics/ColorSpace$Rgb;)Landroid/graphics/ColorSpace$Rgb$TransferParameters; +HSPLandroid/graphics/ColorSpace$Rgb;->-get4(Landroid/graphics/ColorSpace$Rgb;)[F +HSPLandroid/graphics/ColorSpace$Rgb;->-get5(Landroid/graphics/ColorSpace$Rgb;)[F +HSPLandroid/graphics/ColorSpace$Rgb;->(Landroid/graphics/ColorSpace$Rgb;[F[F)V +HSPLandroid/graphics/ColorSpace$Rgb;->(Landroid/graphics/ColorSpace$Rgb;[F[FLandroid/graphics/ColorSpace$Rgb;)V +HSPLandroid/graphics/ColorSpace$Rgb;->(Ljava/lang/String;[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;)V +HSPLandroid/graphics/ColorSpace$Rgb;->(Ljava/lang/String;[F[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;I)V +HSPLandroid/graphics/ColorSpace$Rgb;->(Ljava/lang/String;[F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FFI)V +HSPLandroid/graphics/ColorSpace$Rgb;->area([F)F +HSPLandroid/graphics/ColorSpace$Rgb;->clamp(D)D +HSPLandroid/graphics/ColorSpace$Rgb;->computePrimaries([F)[F +HSPLandroid/graphics/ColorSpace$Rgb;->computeWhitePoint([F)[F +HSPLandroid/graphics/ColorSpace$Rgb;->computeXYZMatrix([F[F)[F +HSPLandroid/graphics/ColorSpace$Rgb;->getEotf()Ljava/util/function/DoubleUnaryOperator; +HSPLandroid/graphics/ColorSpace$Rgb;->getWhitePoint()[F +HSPLandroid/graphics/ColorSpace$Rgb;->isSrgb()Z +HSPLandroid/graphics/ColorSpace$Rgb;->isSrgb([F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FFI)Z +HSPLandroid/graphics/ColorSpace$Rgb;->isWideGamut([FFF)Z +HSPLandroid/graphics/ColorSpace$Rgb;->lambda$-android_graphics_ColorSpace$Rgb_107152(Landroid/graphics/ColorSpace$Rgb$TransferParameters;D)D +HSPLandroid/graphics/ColorSpace$Rgb;->xyPrimaries([F)[F +HSPLandroid/graphics/ColorSpace$Rgb;->xyWhitePoint([F)[F +HSPLandroid/graphics/ColorSpace;->-get1()[F +HSPLandroid/graphics/ColorSpace;->-get2()[F +HSPLandroid/graphics/ColorSpace;->-wrap0([F[F)Z +HSPLandroid/graphics/ColorSpace;->-wrap4(DDDDDD)D +HSPLandroid/graphics/ColorSpace;->-wrap6([F)[F +HSPLandroid/graphics/ColorSpace;->-wrap8([F[F)[F +HSPLandroid/graphics/ColorSpace;->(Ljava/lang/String;Landroid/graphics/ColorSpace$Model;I)V +HSPLandroid/graphics/ColorSpace;->(Ljava/lang/String;Landroid/graphics/ColorSpace$Model;ILandroid/graphics/ColorSpace;)V +HSPLandroid/graphics/ColorSpace;->adapt(Landroid/graphics/ColorSpace;[F)Landroid/graphics/ColorSpace; +HSPLandroid/graphics/ColorSpace;->adapt(Landroid/graphics/ColorSpace;[FLandroid/graphics/ColorSpace$Adaptation;)Landroid/graphics/ColorSpace; +HSPLandroid/graphics/ColorSpace;->chromaticAdaptation([F[F[F)[F +HSPLandroid/graphics/ColorSpace;->compare(Landroid/graphics/ColorSpace$Rgb$TransferParameters;Landroid/graphics/ColorSpace$Rgb$TransferParameters;)Z +HSPLandroid/graphics/ColorSpace;->compare([F[F)Z +HSPLandroid/graphics/ColorSpace;->get(Landroid/graphics/ColorSpace$Named;)Landroid/graphics/ColorSpace; +HSPLandroid/graphics/ColorSpace;->getModel()Landroid/graphics/ColorSpace$Model; +HSPLandroid/graphics/ColorSpace;->getName()Ljava/lang/String; +HSPLandroid/graphics/ColorSpace;->inverse3x3([F)[F +HSPLandroid/graphics/ColorSpace;->match([FLandroid/graphics/ColorSpace$Rgb$TransferParameters;)Landroid/graphics/ColorSpace; +HSPLandroid/graphics/ColorSpace;->mul3x3([F[F)[F +HSPLandroid/graphics/ColorSpace;->mul3x3Diag([F[F)[F +HSPLandroid/graphics/ColorSpace;->mul3x3Float3([F[F)[F +HSPLandroid/graphics/ColorSpace;->response(DDDDDD)D +HSPLandroid/graphics/ColorSpace;->xyYToXyz([F)[F +HSPLandroid/graphics/ComposeShader;->(Landroid/graphics/Shader;Landroid/graphics/Shader;I)V +HSPLandroid/graphics/ComposeShader;->(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/ComposeShader;->createNativeInstance(J)J +HSPLandroid/graphics/ComposeShader;->verifyNativeInstance()V +HSPLandroid/graphics/DrawFilter;->()V +HSPLandroid/graphics/FontFamily;->()V +HSPLandroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z +HSPLandroid/graphics/FontFamily;->freeze()Z +HSPLandroid/graphics/ImageFormat;->getBitsPerPixel(I)I +HSPLandroid/graphics/ImageFormat;->isPublicFormat(I)Z +HSPLandroid/graphics/Insets;->(IIII)V +HSPLandroid/graphics/Insets;->of(IIII)Landroid/graphics/Insets; +HSPLandroid/graphics/Insets;->of(Landroid/graphics/Rect;)Landroid/graphics/Insets; +HSPLandroid/graphics/Interpolator$Result;->(Ljava/lang/String;I)V +HSPLandroid/graphics/Interpolator;->(II)V +HSPLandroid/graphics/Interpolator;->setKeyFrame(II[F)V +HSPLandroid/graphics/Interpolator;->setKeyFrame(II[F[F)V +HSPLandroid/graphics/Interpolator;->timeToValues(I[F)Landroid/graphics/Interpolator$Result; +HSPLandroid/graphics/Interpolator;->timeToValues([F)Landroid/graphics/Interpolator$Result; +HSPLandroid/graphics/LinearGradient;->(FFFFIILandroid/graphics/Shader$TileMode;)V +HSPLandroid/graphics/LinearGradient;->(FFFF[I[FLandroid/graphics/Shader$TileMode;)V +HSPLandroid/graphics/LinearGradient;->createNativeInstance(J)J +HSPLandroid/graphics/MaskFilter;->()V +HSPLandroid/graphics/Matrix$ScaleToFit;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Matrix;->()V +HSPLandroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Matrix;->checkPointArrays([FI[FII)V +HSPLandroid/graphics/Matrix;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Matrix;->invert(Landroid/graphics/Matrix;)Z +HSPLandroid/graphics/Matrix;->isIdentity()Z +HSPLandroid/graphics/Matrix;->mapPoints([F)V +HSPLandroid/graphics/Matrix;->mapPoints([FI[FII)V +HSPLandroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;)Z +HSPLandroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z +HSPLandroid/graphics/Matrix;->ni()J +HSPLandroid/graphics/Matrix;->postRotate(FFF)Z +HSPLandroid/graphics/Matrix;->postScale(FF)Z +HSPLandroid/graphics/Matrix;->postTranslate(FF)Z +HSPLandroid/graphics/Matrix;->preConcat(Landroid/graphics/Matrix;)Z +HSPLandroid/graphics/Matrix;->preRotate(FFF)Z +HSPLandroid/graphics/Matrix;->preScale(FF)Z +HSPLandroid/graphics/Matrix;->preTranslate(FF)Z +HSPLandroid/graphics/Matrix;->rectStaysRect()Z +HSPLandroid/graphics/Matrix;->reset()V +HSPLandroid/graphics/Matrix;->set(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Matrix;->setRectToRect(Landroid/graphics/RectF;Landroid/graphics/RectF;Landroid/graphics/Matrix$ScaleToFit;)Z +HSPLandroid/graphics/Matrix;->setScale(FF)V +HSPLandroid/graphics/Matrix;->setScale(FFFF)V +HSPLandroid/graphics/Matrix;->setTranslate(FF)V +HSPLandroid/graphics/NinePatch$InsetStruct;->(IIIIIIIIFIF)V +HSPLandroid/graphics/NinePatch$InsetStruct;->scaleInsets(IIIIF)Landroid/graphics/Rect; +HSPLandroid/graphics/NinePatch;->(Landroid/graphics/Bitmap;[B)V +HSPLandroid/graphics/NinePatch;->(Landroid/graphics/Bitmap;[BLjava/lang/String;)V +HSPLandroid/graphics/NinePatch;->draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/NinePatch;->finalize()V +HSPLandroid/graphics/NinePatch;->getBitmap()Landroid/graphics/Bitmap; +HSPLandroid/graphics/NinePatch;->getDensity()I +HSPLandroid/graphics/NinePatch;->getHeight()I +HSPLandroid/graphics/NinePatch;->getWidth()I +HSPLandroid/graphics/NinePatch;->hasAlpha()Z +HSPLandroid/graphics/Outline;->()V +HSPLandroid/graphics/Outline;->isEmpty()Z +HSPLandroid/graphics/Outline;->setAlpha(F)V +HSPLandroid/graphics/Outline;->setConvexPath(Landroid/graphics/Path;)V +HSPLandroid/graphics/Outline;->setEmpty()V +HSPLandroid/graphics/Outline;->setOval(IIII)V +HSPLandroid/graphics/Outline;->setOval(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Outline;->setRect(IIII)V +HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V +HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V +HSPLandroid/graphics/Paint$Align;->values()[Landroid/graphics/Paint$Align; +HSPLandroid/graphics/Paint$FontMetrics;->()V +HSPLandroid/graphics/Paint$FontMetricsInt;->()V +HSPLandroid/graphics/Paint;->()V +HSPLandroid/graphics/Paint;->(I)V +HSPLandroid/graphics/Paint;->(Landroid/graphics/Paint;)V +HSPLandroid/graphics/Paint;->ascent()F +HSPLandroid/graphics/Paint;->descent()F +HSPLandroid/graphics/Paint;->getAlpha()I +HSPLandroid/graphics/Paint;->getColor()I +HSPLandroid/graphics/Paint;->getColorFilter()Landroid/graphics/ColorFilter; +HSPLandroid/graphics/Paint;->getFlags()I +HSPLandroid/graphics/Paint;->getFontFeatureSettings()Ljava/lang/String; +HSPLandroid/graphics/Paint;->getFontMetrics()Landroid/graphics/Paint$FontMetrics; +HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F +HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt; +HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I +HSPLandroid/graphics/Paint;->getHinting()I +HSPLandroid/graphics/Paint;->getHyphenEdit()I +HSPLandroid/graphics/Paint;->getLetterSpacing()F +HSPLandroid/graphics/Paint;->getNativeInstance()J +HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F +HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F +HSPLandroid/graphics/Paint;->getShader()Landroid/graphics/Shader; +HSPLandroid/graphics/Paint;->getStrokeCap()Landroid/graphics/Paint$Cap; +HSPLandroid/graphics/Paint;->getStrokeJoin()Landroid/graphics/Paint$Join; +HSPLandroid/graphics/Paint;->getStrokeMiter()F +HSPLandroid/graphics/Paint;->getStrokeWidth()F +HSPLandroid/graphics/Paint;->getStyle()Landroid/graphics/Paint$Style; +HSPLandroid/graphics/Paint;->getTextAlign()Landroid/graphics/Paint$Align; +HSPLandroid/graphics/Paint;->getTextBounds(Ljava/lang/CharSequence;IILandroid/graphics/Rect;)V +HSPLandroid/graphics/Paint;->getTextBounds(Ljava/lang/String;IILandroid/graphics/Rect;)V +HSPLandroid/graphics/Paint;->getTextBounds([CIILandroid/graphics/Rect;)V +HSPLandroid/graphics/Paint;->getTextLocale()Ljava/util/Locale; +HSPLandroid/graphics/Paint;->getTextLocales()Landroid/os/LocaleList; +HSPLandroid/graphics/Paint;->getTextPath(Ljava/lang/String;IIFFLandroid/graphics/Path;)V +HSPLandroid/graphics/Paint;->getTextRunAdvances([CIIIIZ[FI)F +HSPLandroid/graphics/Paint;->getTextScaleX()F +HSPLandroid/graphics/Paint;->getTextSize()F +HSPLandroid/graphics/Paint;->getTextSkewX()F +HSPLandroid/graphics/Paint;->getTextWidths(Ljava/lang/String;II[F)I +HSPLandroid/graphics/Paint;->getTextWidths(Ljava/lang/String;[F)I +HSPLandroid/graphics/Paint;->getTypeface()Landroid/graphics/Typeface; +HSPLandroid/graphics/Paint;->getWordSpacing()F +HSPLandroid/graphics/Paint;->getXfermode()Landroid/graphics/Xfermode; +HSPLandroid/graphics/Paint;->hasEqualAttributes(Landroid/graphics/Paint;)Z +HSPLandroid/graphics/Paint;->hasGlyph(Ljava/lang/String;)Z +HSPLandroid/graphics/Paint;->isAntiAlias()Z +HSPLandroid/graphics/Paint;->isDither()Z +HSPLandroid/graphics/Paint;->isElegantTextHeight()Z +HSPLandroid/graphics/Paint;->isFilterBitmap()Z +HSPLandroid/graphics/Paint;->isStrikeThruText()Z +HSPLandroid/graphics/Paint;->isUnderlineText()Z +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F +HSPLandroid/graphics/Paint;->set(Landroid/graphics/Paint;)V +HSPLandroid/graphics/Paint;->setAlpha(I)V +HSPLandroid/graphics/Paint;->setAntiAlias(Z)V +HSPLandroid/graphics/Paint;->setClassVariablesFrom(Landroid/graphics/Paint;)V +HSPLandroid/graphics/Paint;->setColor(I)V +HSPLandroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter; +HSPLandroid/graphics/Paint;->setCompatibilityScaling(F)V +HSPLandroid/graphics/Paint;->setDither(Z)V +HSPLandroid/graphics/Paint;->setFakeBoldText(Z)V +HSPLandroid/graphics/Paint;->setFilterBitmap(Z)V +HSPLandroid/graphics/Paint;->setFlags(I)V +HSPLandroid/graphics/Paint;->setFontFeatureSettings(Ljava/lang/String;)V +HSPLandroid/graphics/Paint;->setHyphenEdit(I)V +HSPLandroid/graphics/Paint;->setLetterSpacing(F)V +HSPLandroid/graphics/Paint;->setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter; +HSPLandroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect; +HSPLandroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader; +HSPLandroid/graphics/Paint;->setShadowLayer(FFFI)V +HSPLandroid/graphics/Paint;->setStrikeThruText(Z)V +HSPLandroid/graphics/Paint;->setStrokeCap(Landroid/graphics/Paint$Cap;)V +HSPLandroid/graphics/Paint;->setStrokeJoin(Landroid/graphics/Paint$Join;)V +HSPLandroid/graphics/Paint;->setStrokeMiter(F)V +HSPLandroid/graphics/Paint;->setStrokeWidth(F)V +HSPLandroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V +HSPLandroid/graphics/Paint;->setTextAlign(Landroid/graphics/Paint$Align;)V +HSPLandroid/graphics/Paint;->setTextLocales(Landroid/os/LocaleList;)V +HSPLandroid/graphics/Paint;->setTextScaleX(F)V +HSPLandroid/graphics/Paint;->setTextSize(F)V +HSPLandroid/graphics/Paint;->setTextSkewX(F)V +HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Paint;->setUnderlineText(Z)V +HSPLandroid/graphics/Paint;->setWordSpacing(F)V +HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode; +HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V +HSPLandroid/graphics/PaintFlagsDrawFilter;->(II)V +HSPLandroid/graphics/Path$Direction;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Path;->()V +HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->approximate(F)[F +HSPLandroid/graphics/Path;->close()V +HSPLandroid/graphics/Path;->computeBounds(Landroid/graphics/RectF;Z)V +HSPLandroid/graphics/Path;->cubicTo(FFFFFF)V +HSPLandroid/graphics/Path;->finalize()V +HSPLandroid/graphics/Path;->getFillType()Landroid/graphics/Path$FillType; +HSPLandroid/graphics/Path;->isConvex()Z +HSPLandroid/graphics/Path;->isEmpty()Z +HSPLandroid/graphics/Path;->lineTo(FF)V +HSPLandroid/graphics/Path;->moveTo(FF)V +HSPLandroid/graphics/Path;->mutateNI()J +HSPLandroid/graphics/Path;->rLineTo(FF)V +HSPLandroid/graphics/Path;->readOnlyNI()J +HSPLandroid/graphics/Path;->reset()V +HSPLandroid/graphics/Path;->rewind()V +HSPLandroid/graphics/Path;->set(Landroid/graphics/Path;)V +HSPLandroid/graphics/Path;->setFillType(Landroid/graphics/Path$FillType;)V +HSPLandroid/graphics/Path;->transform(Landroid/graphics/Matrix;Landroid/graphics/Path;)V +HSPLandroid/graphics/Picture$RecordingCanvas;->(Landroid/graphics/Picture;J)V +HSPLandroid/graphics/Picture;->()V +HSPLandroid/graphics/Picture;->(J)V +HSPLandroid/graphics/Picture;->beginRecording(II)Landroid/graphics/Canvas; +HSPLandroid/graphics/Picture;->endRecording()V +HSPLandroid/graphics/PixelFormat;->()V +HSPLandroid/graphics/PixelFormat;->formatHasAlpha(I)Z +HSPLandroid/graphics/PixelFormat;->getPixelFormatInfo(ILandroid/graphics/PixelFormat;)V +HSPLandroid/graphics/Point;->()V +HSPLandroid/graphics/Point;->(II)V +HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/graphics/Point;->set(II)V +HSPLandroid/graphics/PointF;->()V +HSPLandroid/graphics/PointF;->(FF)V +HSPLandroid/graphics/PointF;->length(FF)F +HSPLandroid/graphics/PointF;->set(FF)V +HSPLandroid/graphics/PointF;->set(Landroid/graphics/PointF;)V +HSPLandroid/graphics/PorterDuff;->intToMode(I)Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/PorterDuff;->modeToInt(Landroid/graphics/PorterDuff$Mode;)I +HSPLandroid/graphics/PorterDuffColorFilter;->(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/PorterDuffColorFilter;->createNativeInstance()J +HSPLandroid/graphics/PorterDuffColorFilter;->getColor()I +HSPLandroid/graphics/PorterDuffColorFilter;->getMode()Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/PorterDuffColorFilter;->setColor(I)V +HSPLandroid/graphics/PorterDuffColorFilter;->setMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/PorterDuffXfermode;->(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/RadialGradient;->(FFFIILandroid/graphics/Shader$TileMode;)V +HSPLandroid/graphics/RadialGradient;->(FFF[I[FLandroid/graphics/Shader$TileMode;)V +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect; +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/Rect;->()V +HSPLandroid/graphics/Rect;->(IIII)V +HSPLandroid/graphics/Rect;->(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->centerX()I +HSPLandroid/graphics/Rect;->centerY()I +HSPLandroid/graphics/Rect;->contains(II)Z +HSPLandroid/graphics/Rect;->contains(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Rect;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Rect;->exactCenterX()F +HSPLandroid/graphics/Rect;->exactCenterY()F +HSPLandroid/graphics/Rect;->hashCode()I +HSPLandroid/graphics/Rect;->height()I +HSPLandroid/graphics/Rect;->inset(II)V +HSPLandroid/graphics/Rect;->inset(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->intersect(IIII)Z +HSPLandroid/graphics/Rect;->intersect(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Rect;->isEmpty()Z +HSPLandroid/graphics/Rect;->offset(II)V +HSPLandroid/graphics/Rect;->offsetTo(II)V +HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/graphics/Rect;->scale(F)V +HSPLandroid/graphics/Rect;->set(IIII)V +HSPLandroid/graphics/Rect;->set(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->setEmpty()V +HSPLandroid/graphics/Rect;->toString()Ljava/lang/String; +HSPLandroid/graphics/Rect;->union(IIII)V +HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->width()I +HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/RectF;->()V +HSPLandroid/graphics/RectF;->(FFFF)V +HSPLandroid/graphics/RectF;->(Landroid/graphics/Rect;)V +HSPLandroid/graphics/RectF;->centerX()F +HSPLandroid/graphics/RectF;->centerY()F +HSPLandroid/graphics/RectF;->height()F +HSPLandroid/graphics/RectF;->inset(FF)V +HSPLandroid/graphics/RectF;->intersect(FFFF)Z +HSPLandroid/graphics/RectF;->isEmpty()Z +HSPLandroid/graphics/RectF;->offset(FF)V +HSPLandroid/graphics/RectF;->round(Landroid/graphics/Rect;)V +HSPLandroid/graphics/RectF;->set(FFFF)V +HSPLandroid/graphics/RectF;->set(Landroid/graphics/Rect;)V +HSPLandroid/graphics/RectF;->set(Landroid/graphics/RectF;)V +HSPLandroid/graphics/RectF;->setEmpty()V +HSPLandroid/graphics/RectF;->toString()Ljava/lang/String; +HSPLandroid/graphics/RectF;->union(FFFF)V +HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V +HSPLandroid/graphics/RectF;->width()F +HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Region; +HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/Region$Op;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Region;->-wrap0(Landroid/os/Parcel;)J +HSPLandroid/graphics/Region;->()V +HSPLandroid/graphics/Region;->(J)V +HSPLandroid/graphics/Region;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Region;->finalize()V +HSPLandroid/graphics/Region;->op(IIIILandroid/graphics/Region$Op;)Z +HSPLandroid/graphics/Region;->quickReject(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/Region;->recycle()V +HSPLandroid/graphics/Region;->set(IIII)Z +HSPLandroid/graphics/Region;->set(Landroid/graphics/Region;)Z +HSPLandroid/graphics/Region;->setEmpty()V +HSPLandroid/graphics/Region;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/Shader$TileMode;->(Ljava/lang/String;II)V +HSPLandroid/graphics/Shader;->-wrap0()J +HSPLandroid/graphics/Shader;->()V +HSPLandroid/graphics/Shader;->discardNativeInstance()V +HSPLandroid/graphics/Shader;->getNativeInstance()J +HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Shader;->verifyNativeInstance()V +HSPLandroid/graphics/SurfaceTexture$1;->(Landroid/graphics/SurfaceTexture;Landroid/os/Looper;Landroid/os/Handler$Callback;ZLandroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V +HSPLandroid/graphics/SurfaceTexture$1;->handleMessage(Landroid/os/Message;)V +HSPLandroid/graphics/SurfaceTexture$OnFrameAvailableListener;->onFrameAvailable(Landroid/graphics/SurfaceTexture;)V +HSPLandroid/graphics/SurfaceTexture;->(Z)V +HSPLandroid/graphics/SurfaceTexture;->postEventFromNative(Ljava/lang/ref/WeakReference;)V +HSPLandroid/graphics/SurfaceTexture;->setDefaultBufferSize(II)V +HSPLandroid/graphics/SurfaceTexture;->setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;Landroid/os/Handler;)V +HSPLandroid/graphics/TemporaryBuffer;->obtain(I)[C +HSPLandroid/graphics/TemporaryBuffer;->recycle([C)V +HSPLandroid/graphics/Typeface$Builder;->(Landroid/content/res/AssetManager;Ljava/lang/String;)V +HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;II)Ljava/lang/String; +HSPLandroid/graphics/Typeface;->-get2()Landroid/util/LruCache; +HSPLandroid/graphics/Typeface;->-wrap0([Landroid/graphics/FontFamily;II)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->(J)V +HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;II)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->getStyle()I +HSPLandroid/graphics/Xfermode;->()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->(I)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->setDensity(I)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canConstantState()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->getOpacity()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->invalidateCache()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->isStateful()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->setDensity(I)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->addLayer(ILandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->createConstantState(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getForeground()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIconMask()Landroid/graphics/Path; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getMaxIntrinsicHeight()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getMaxIntrinsicWidth()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateSelf()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->resumeChildInvalidation()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->suspendChildInvalidation()V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateMaskBoundsInternal(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Animatable2$AnimationCallback;->()V +HSPLandroid/graphics/drawable/Animatable2;->clearAnimationCallbacks()V +HSPLandroid/graphics/drawable/Animatable2;->registerAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)V +HSPLandroid/graphics/drawable/Animatable2;->unregisterAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/graphics/drawable/AnimatedStateListDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;I)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addTransition(IILandroid/graphics/drawable/Drawable;Z)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->generateTransitionKey(II)J +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->getKeyframeIdAt(I)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->indexOfKeyframe([I)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->indexOfTransition(II)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->isTransitionReversed(II)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mutate()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->transitionHasReversibleFlag(II)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->(Landroid/graphics/drawable/AnimatedVectorDrawable;ZZ)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->start()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->stop()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$Transition;->()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$Transition;->(Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$Transition;->start()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable$Transition;->stop()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedStateListDrawable;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->cloneConstantState()Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState; +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->init()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->parseItem(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->parseTransition(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)I +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->selectTransition(I)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$1;->(Landroid/graphics/drawable/AnimatedVectorDrawable;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$1;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$2;->(Landroid/graphics/drawable/AnimatedVectorDrawable;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->(IFLjava/lang/String;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/animation/Animator; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/graphics/drawable/Drawable$Callback;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->addPendingAnimator(IFLjava/lang/String;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->addTargetAnimator(Ljava/lang/String;Landroid/animation/Animator;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->inflatePendingAnimators(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->prepareLocalAnimator(I)Landroid/animation/Animator; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->prepareLocalAnimators(Landroid/animation/AnimatorSet;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->canReverse()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->end()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->init(Landroid/animation/AnimatorSet;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->isInfinite()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->isRunning()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->isStarted()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->pause()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->reset()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->resume()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->reverse()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->setListener(Landroid/animation/Animator$AnimatorListener;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;->start()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->(Landroid/graphics/drawable/AnimatedVectorDrawable;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->addPendingAction(I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->callOnFinished(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createFloatDataPoints(Landroid/animation/PropertyValuesHolder$PropertyValues$DataSource;J)[F +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createNativeChildAnimator(JJLandroid/animation/ObjectAnimator;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimator(Landroid/animation/ObjectAnimator;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForFullPath(Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VFullPath;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForGroup([Landroid/animation/PropertyValuesHolder;Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VGroup;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForPath(Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VPath;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->end()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->endAnimation()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getAnimatorNativePtr()J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getFrameCount(J)I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->handlePendingAction(I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->init(Landroid/animation/AnimatorSet;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->invalidateOwningView()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isInfinite()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isStarted()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->onAnimationEnd(I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->parseAnimatorSet(Landroid/animation/AnimatorSet;J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->pause()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->recordLastSeenTarget(Landroid/view/DisplayListCanvas;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->setListener(Landroid/animation/Animator$AnimatorListener;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->start()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->startAnimation()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useLastSeenTarget()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useTarget(Landroid/view/RenderNode;)Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-get0(Landroid/graphics/drawable/AnimatedVectorDrawable;)Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap0()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap1()J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap11(J[FI)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap13(JJ)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap14(JLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap15(Landroid/animation/Animator;Ljava/lang/String;Landroid/graphics/drawable/VectorDrawable;Z)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap2(JIFF)J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap3(JIII)J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap4(JJJ)J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap5(JIFF)J +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap7(JJJJJII)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->-wrap8(J)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedVectorDrawable;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->containsSameValueType(Landroid/animation/PropertyValuesHolder;Landroid/util/Property;)Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->ensureAnimatorSet()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->registerAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->shouldIgnoreInvalidAnimation()Z +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->start()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->stop()V +HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->updateAnimatorProperty(Landroid/animation/Animator;Ljava/lang/String;Landroid/graphics/drawable/VectorDrawable;Z)V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->-get1(Landroid/graphics/drawable/AnimationDrawable$AnimationState;)Z +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->-set0(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Z)Z +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->-wrap0(Landroid/graphics/drawable/AnimationDrawable$AnimationState;)V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/graphics/drawable/AnimationDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->addFrame(Landroid/graphics/drawable/Drawable;I)V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->growArray(II)V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->mutate()V +HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimationDrawable;->()V +HSPLandroid/graphics/drawable/AnimationDrawable;->(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimationDrawable;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/AnimationDrawable;->cloneConstantState()Landroid/graphics/drawable/AnimationDrawable$AnimationState; +HSPLandroid/graphics/drawable/AnimationDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; +HSPLandroid/graphics/drawable/AnimationDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/AnimationDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->setFrame(IZZ)V +HSPLandroid/graphics/drawable/AnimationDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/AnimationDrawable;->unscheduleSelf(Ljava/lang/Runnable;)V +HSPLandroid/graphics/drawable/AnimationDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->(Landroid/graphics/drawable/BitmapDrawable$BitmapState;)V +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/BitmapDrawable;->()V +HSPLandroid/graphics/drawable/BitmapDrawable;->(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->(Landroid/graphics/drawable/BitmapDrawable$BitmapState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->(Landroid/graphics/drawable/BitmapDrawable$BitmapState;Landroid/content/res/Resources;Landroid/graphics/drawable/BitmapDrawable;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/BitmapDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V +HSPLandroid/graphics/drawable/BitmapDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->getAlpha()I +HSPLandroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap; +HSPLandroid/graphics/drawable/BitmapDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/BitmapDrawable;->getColorFilter()Landroid/graphics/ColorFilter; +HSPLandroid/graphics/drawable/BitmapDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/BitmapDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/BitmapDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/BitmapDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/BitmapDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->isAutoMirrored()Z +HSPLandroid/graphics/drawable/BitmapDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/BitmapDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/BitmapDrawable;->needMirroring()Z +HSPLandroid/graphics/drawable/BitmapDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/BitmapDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setBitmap(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setGravity(I)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setMipMap(Z)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->setXfermode(Landroid/graphics/Xfermode;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->updateDstRectAndInsetsIfDirty()V +HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V +HSPLandroid/graphics/drawable/BitmapDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/ClipDrawable$ClipState;->-set0(Landroid/graphics/drawable/ClipDrawable$ClipState;[I)[I +HSPLandroid/graphics/drawable/ClipDrawable$ClipState;->(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ClipDrawable;->()V +HSPLandroid/graphics/drawable/ClipDrawable;->(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ClipDrawable;->(Landroid/graphics/drawable/Drawable;II)V +HSPLandroid/graphics/drawable/ClipDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/ClipDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/ClipDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/ClipDrawable;->onLevelChange(I)Z +HSPLandroid/graphics/drawable/ClipDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/ClipDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->()V +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->(Landroid/graphics/drawable/ColorDrawable$ColorState;)V +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/ColorDrawable;->()V +HSPLandroid/graphics/drawable/ColorDrawable;->(I)V +HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable;)V +HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I +HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I +HSPLandroid/graphics/drawable/ColorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/ColorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/ColorDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/ColorDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/ColorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/ColorDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/ColorDrawable;->setColor(I)V +HSPLandroid/graphics/drawable/ColorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/ColorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ColorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/Drawable$ConstantState;->()V +HSPLandroid/graphics/drawable/Drawable$ConstantState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/Drawable$ConstantState;->newDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->()V +HSPLandroid/graphics/drawable/Drawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/Drawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/Drawable;->clearColorFilter()V +HSPLandroid/graphics/drawable/Drawable;->clearMutated()V +HSPLandroid/graphics/drawable/Drawable;->copyBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->createFromXmlForDensity(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->createFromXmlInnerForDensity(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->drawableFromBitmap(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/Drawable;->getCallback()Landroid/graphics/drawable/Drawable$Callback; +HSPLandroid/graphics/drawable/Drawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/Drawable;->getColorFilter()Landroid/graphics/ColorFilter; +HSPLandroid/graphics/drawable/Drawable;->getCurrent()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/Drawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/Drawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/Drawable;->getLayoutDirection()I +HSPLandroid/graphics/drawable/Drawable;->getLevel()I +HSPLandroid/graphics/drawable/Drawable;->getMinimumHeight()I +HSPLandroid/graphics/drawable/Drawable;->getMinimumWidth()I +HSPLandroid/graphics/drawable/Drawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/Drawable;->getState()[I +HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V +HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V +HSPLandroid/graphics/drawable/Drawable;->isProjected()Z +HSPLandroid/graphics/drawable/Drawable;->isStateful()Z +HSPLandroid/graphics/drawable/Drawable;->isVisible()Z +HSPLandroid/graphics/drawable/Drawable;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Drawable;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; +HSPLandroid/graphics/drawable/Drawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z +HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/Drawable;->parseTintMode(ILandroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I +HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I +HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F +HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I +HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V +HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V +HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V +HSPLandroid/graphics/drawable/Drawable;->setChangingConfigurations(I)V +HSPLandroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/Drawable;->setDither(Z)V +HSPLandroid/graphics/drawable/Drawable;->setHotspot(FF)V +HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z +HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z +HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V +HSPLandroid/graphics/drawable/Drawable;->setState([I)Z +HSPLandroid/graphics/drawable/Drawable;->setTint(I)V +HSPLandroid/graphics/drawable/Drawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/Drawable;->setXfermode(Landroid/graphics/Xfermode;)V +HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V +HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; +HSPLandroid/graphics/drawable/DrawableContainer$1;->(Landroid/graphics/drawable/DrawableContainer;)V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->()V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->(Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;)V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback; +HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->-wrap0(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canConstantState()Z +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->clearMutated()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->computeConstantSize()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->createAllFutures()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getCapacity()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChild(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChildCount()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChildren()[Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getConstantHeight()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getConstantPadding()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getConstantWidth()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getOpacity()I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->growArray(II)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->invalidateCache()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->isConstantSize()Z +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->isStateful()Z +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mutate()V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->prepareDrawable(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setConstantSize(Z)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setEnterFadeDuration(I)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setExitFadeDuration(I)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setVariablePadding(Z)V +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->updateDensity(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableContainer;->()V +HSPLandroid/graphics/drawable/DrawableContainer;->animate(Z)V +HSPLandroid/graphics/drawable/DrawableContainer;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/DrawableContainer;->canApplyTheme()Z +HSPLandroid/graphics/drawable/DrawableContainer;->clearMutated()V +HSPLandroid/graphics/drawable/DrawableContainer;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; +HSPLandroid/graphics/drawable/DrawableContainer;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/DrawableContainer;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/DrawableContainer;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/DrawableContainer;->getCurrent()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableContainer;->getCurrentIndex()I +HSPLandroid/graphics/drawable/DrawableContainer;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/DrawableContainer;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/DrawableContainer;->getMinimumHeight()I +HSPLandroid/graphics/drawable/DrawableContainer;->getMinimumWidth()I +HSPLandroid/graphics/drawable/DrawableContainer;->getOpacity()I +HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets; +HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer;->isAutoMirrored()Z +HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z +HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z +HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/DrawableContainer;->onStateChange([I)Z +HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z +HSPLandroid/graphics/drawable/DrawableContainer;->setAlpha(I)V +HSPLandroid/graphics/drawable/DrawableContainer;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/DrawableContainer;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLandroid/graphics/drawable/DrawableContainer;->setDither(Z)V +HSPLandroid/graphics/drawable/DrawableContainer;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/DrawableContainer;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/DrawableContainer;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/DrawableContainer;->updateDensity(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableInflater;->(Landroid/content/res/Resources;Ljava/lang/ClassLoader;)V +HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromClass(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromTag(Ljava/lang/String;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromXmlForDensity(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->-get0(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;)[I +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->-set0(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;[I)[I +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->canConstantState()Z +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->onDensityChanged(II)V +HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->setDensity(I)V +HSPLandroid/graphics/drawable/DrawableWrapper;->(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->canApplyTheme()Z +HSPLandroid/graphics/drawable/DrawableWrapper;->clearMutated()V +HSPLandroid/graphics/drawable/DrawableWrapper;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/DrawableWrapper;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/DrawableWrapper;->getDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/DrawableWrapper;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/DrawableWrapper;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->inflateChildDrawable(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->isStateful()Z +HSPLandroid/graphics/drawable/DrawableWrapper;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/DrawableWrapper;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z +HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z +HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->-wrap0(Landroid/graphics/drawable/GradientDrawable$GradientState;)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->applyDensityScaling(II)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setCornerRadii([F)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setCornerRadius(F)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setDensity(I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setGradientColors([I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setShape(I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setSolidColors(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setStroke(ILandroid/content/res/ColorStateList;FF)V +HSPLandroid/graphics/drawable/GradientDrawable$Orientation;->values()[Landroid/graphics/drawable/GradientDrawable$Orientation; +HSPLandroid/graphics/drawable/GradientDrawable;->-getandroid-graphics-drawable-GradientDrawable$OrientationSwitchesValues()[I +HSPLandroid/graphics/drawable/GradientDrawable;->()V +HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;Landroid/graphics/drawable/GradientDrawable;)V +HSPLandroid/graphics/drawable/GradientDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/GradientDrawable;->buildPathIfDirty()V +HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z +HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/GradientDrawable;->getFloatOrFraction(Landroid/content/res/TypedArray;IF)F +HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/GradientDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/GradientDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/GradientDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/GradientDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/GradientDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/GradientDrawable;->isOpaque(I)Z +HSPLandroid/graphics/drawable/GradientDrawable;->isOpaqueForState()Z +HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/GradientDrawable;->modulateAlpha(I)I +HSPLandroid/graphics/drawable/GradientDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/GradientDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/GradientDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/GradientDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/GradientDrawable;->setColor(I)V +HSPLandroid/graphics/drawable/GradientDrawable;->setColor(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/GradientDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/GradientDrawable;->setColors([I)V +HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadii([F)V +HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadius(F)V +HSPLandroid/graphics/drawable/GradientDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/GradientDrawable;->setOrientation(Landroid/graphics/drawable/GradientDrawable$Orientation;)V +HSPLandroid/graphics/drawable/GradientDrawable;->setShape(I)V +HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(II)V +HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(IIFF)V +HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(ILandroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(ILandroid/content/res/ColorStateList;FF)V +HSPLandroid/graphics/drawable/GradientDrawable;->setStrokeInternal(IIFF)V +HSPLandroid/graphics/drawable/GradientDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/GradientDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateDrawableCorners(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableGradient(Landroid/content/res/Resources;Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawablePadding(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/Icon$1;->()V +HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/drawable/Icon;->(I)V +HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;)V +HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;Landroid/graphics/drawable/Icon;)V +HSPLandroid/graphics/drawable/Icon;->createWithBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon;->createWithResource(Landroid/content/Context;I)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon;->createWithResource(Ljava/lang/String;I)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon;->getBitmap()Landroid/graphics/Bitmap; +HSPLandroid/graphics/drawable/Icon;->getResId()I +HSPLandroid/graphics/drawable/Icon;->getResPackage()Ljava/lang/String; +HSPLandroid/graphics/drawable/Icon;->getResources()Landroid/content/res/Resources; +HSPLandroid/graphics/drawable/Icon;->getType()I +HSPLandroid/graphics/drawable/Icon;->hasTint()Z +HSPLandroid/graphics/drawable/Icon;->loadDrawable(Landroid/content/Context;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Icon;->loadDrawableAsUser(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Icon;->loadDrawableInner(Landroid/content/Context;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/Icon;->setBitmap(Landroid/graphics/Bitmap;)V +HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon;->setTintList(Landroid/content/res/ColorStateList;)Landroid/graphics/drawable/Icon; +HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-get0(Landroid/graphics/drawable/InsetDrawable$InsetState;)[I +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-set0(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)[I +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->onDensityChanged(II)V +HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->()V +HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->(FI)V +HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->clone()Landroid/graphics/drawable/InsetDrawable$InsetValue; +HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->getDimension(I)I +HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->scaleFromDensity(II)V +HSPLandroid/graphics/drawable/InsetDrawable;->()V +HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/Drawable;I)V +HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/Drawable;IIII)V +HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable;)V +HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue; +HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/InsetDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/InsetDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/InsetDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/InsetDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/InsetDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/InsetDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(I)V +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-get0(Landroid/graphics/drawable/LayerDrawable$LayerState;)Z +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-get1(Landroid/graphics/drawable/LayerDrawable$LayerState;)I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-get2(Landroid/graphics/drawable/LayerDrawable$LayerState;)[I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-set0(Landroid/graphics/drawable/LayerDrawable$LayerState;Z)Z +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-set1(Landroid/graphics/drawable/LayerDrawable$LayerState;I)I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->-set2(Landroid/graphics/drawable/LayerDrawable$LayerState;[I)[I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->applyDensityScaling(II)V +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canConstantState()Z +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->invalidateCache()V +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->isStateful()Z +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V +HSPLandroid/graphics/drawable/LayerDrawable;->()V +HSPLandroid/graphics/drawable/LayerDrawable;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V +HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable; +HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;)I +HSPLandroid/graphics/drawable/LayerDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/LayerDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/LayerDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/LayerDrawable;->computeNestedPadding(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/LayerDrawable;->computeStackedPadding(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/LayerDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; +HSPLandroid/graphics/drawable/LayerDrawable;->createLayer(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/LayerDrawable$ChildDrawable; +HSPLandroid/graphics/drawable/LayerDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/LayerDrawable;->ensurePadding()V +HSPLandroid/graphics/drawable/LayerDrawable;->findDrawableByLayerId(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/LayerDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/LayerDrawable;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/LayerDrawable;->getNumberOfLayers()I +HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/LayerDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/LayerDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/LayerDrawable;->isAutoMirrored()Z +HSPLandroid/graphics/drawable/LayerDrawable;->isProjected()Z +HSPLandroid/graphics/drawable/LayerDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z +HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V +HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I +HSPLandroid/graphics/drawable/LayerDrawable;->resumeChildInvalidation()V +HSPLandroid/graphics/drawable/LayerDrawable;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/LayerDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/LayerDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/LayerDrawable;->setDrawable(ILandroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/LayerDrawable;->setPaddingMode(I)V +HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V +HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->()V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;)V +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/NinePatchDrawable;->()V +HSPLandroid/graphics/drawable/NinePatchDrawable;->(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;Landroid/content/res/Resources;Landroid/graphics/drawable/NinePatchDrawable;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/NinePatchDrawable;->computeBitmapSize()V +HSPLandroid/graphics/drawable/NinePatchDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/NinePatchDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/NinePatchDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/NinePatchDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/NinePatchDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/NinePatchDrawable;->getOpticalInsets()Landroid/graphics/Insets; +HSPLandroid/graphics/drawable/NinePatchDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->getPaint()Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/NinePatchDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->isAutoMirrored()Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/NinePatchDrawable;->needsMirroring()Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/NinePatchDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->setDither(Z)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/NinePatchDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/PaintDrawable;->(I)V +HSPLandroid/graphics/drawable/RippleBackground$1;->(Ljava/lang/String;)V +HSPLandroid/graphics/drawable/RippleBackground$1;->get(Landroid/graphics/drawable/RippleBackground;)Ljava/lang/Float; +HSPLandroid/graphics/drawable/RippleBackground$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/graphics/drawable/RippleBackground$1;->setValue(Landroid/graphics/drawable/RippleBackground;F)V +HSPLandroid/graphics/drawable/RippleBackground$1;->setValue(Ljava/lang/Object;F)V +HSPLandroid/graphics/drawable/RippleBackground$BackgroundProperty;->(Ljava/lang/String;)V +HSPLandroid/graphics/drawable/RippleBackground;->-get0(Landroid/graphics/drawable/RippleBackground;)F +HSPLandroid/graphics/drawable/RippleBackground;->-set0(Landroid/graphics/drawable/RippleBackground;F)F +HSPLandroid/graphics/drawable/RippleBackground;->(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;ZZ)V +HSPLandroid/graphics/drawable/RippleBackground;->createSoftwareEnter(Z)Landroid/animation/Animator; +HSPLandroid/graphics/drawable/RippleBackground;->createSoftwareExit()Landroid/animation/Animator; +HSPLandroid/graphics/drawable/RippleBackground;->isVisible()Z +HSPLandroid/graphics/drawable/RippleComponent;->(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;Z)V +HSPLandroid/graphics/drawable/RippleComponent;->cancel()V +HSPLandroid/graphics/drawable/RippleComponent;->cancelSoftwareAnimations()V +HSPLandroid/graphics/drawable/RippleComponent;->createHardwareExit(Landroid/graphics/Paint;)Landroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet; +HSPLandroid/graphics/drawable/RippleComponent;->createSoftwareEnter(Z)Landroid/animation/Animator; +HSPLandroid/graphics/drawable/RippleComponent;->createSoftwareExit()Landroid/animation/Animator; +HSPLandroid/graphics/drawable/RippleComponent;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Z +HSPLandroid/graphics/drawable/RippleComponent;->drawHardware(Landroid/view/DisplayListCanvas;)Z +HSPLandroid/graphics/drawable/RippleComponent;->drawSoftware(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Z +HSPLandroid/graphics/drawable/RippleComponent;->end()V +HSPLandroid/graphics/drawable/RippleComponent;->endHardwareAnimations()V +HSPLandroid/graphics/drawable/RippleComponent;->endSoftwareAnimations()V +HSPLandroid/graphics/drawable/RippleComponent;->enter(Z)V +HSPLandroid/graphics/drawable/RippleComponent;->exit()V +HSPLandroid/graphics/drawable/RippleComponent;->getTargetRadius(Landroid/graphics/Rect;)F +HSPLandroid/graphics/drawable/RippleComponent;->invalidateSelf()V +HSPLandroid/graphics/drawable/RippleComponent;->isHardwareAnimating()Z +HSPLandroid/graphics/drawable/RippleComponent;->jumpValuesToExit()V +HSPLandroid/graphics/drawable/RippleComponent;->onTargetRadiusChanged(F)V +HSPLandroid/graphics/drawable/RippleComponent;->setup(FI)V +HSPLandroid/graphics/drawable/RippleComponent;->startPendingAnimation(Landroid/view/DisplayListCanvas;Landroid/graphics/Paint;)V +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/RippleDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->applyDensityScaling(II)V +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V +HSPLandroid/graphics/drawable/RippleDrawable;->()V +HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable;)V +HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V +HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V +HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; +HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/RippleDrawable$RippleState; +HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I +HSPLandroid/graphics/drawable/RippleDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/RippleDrawable;->getRipplePaint()Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V +HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V +HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z +HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z +HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V +HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/RippleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/RippleDrawable;->onHotspotBoundsChanged()V +HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/RippleDrawable;->pruneRipples()V +HSPLandroid/graphics/drawable/RippleDrawable;->setBackgroundActive(ZZ)V +HSPLandroid/graphics/drawable/RippleDrawable;->setColor(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/RippleDrawable;->setForceSoftware(Z)V +HSPLandroid/graphics/drawable/RippleDrawable;->setHotspot(FF)V +HSPLandroid/graphics/drawable/RippleDrawable;->setHotspotBounds(IIII)V +HSPLandroid/graphics/drawable/RippleDrawable;->setPaddingMode(I)V +HSPLandroid/graphics/drawable/RippleDrawable;->setRippleActive(Z)V +HSPLandroid/graphics/drawable/RippleDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/RippleDrawable;->tryBackgroundEnter(Z)V +HSPLandroid/graphics/drawable/RippleDrawable;->tryBackgroundExit()V +HSPLandroid/graphics/drawable/RippleDrawable;->tryRippleEnter()V +HSPLandroid/graphics/drawable/RippleDrawable;->updateLocalState()V +HSPLandroid/graphics/drawable/RippleDrawable;->updateMaskShaderIfNeeded()V +HSPLandroid/graphics/drawable/RippleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/RippleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/RippleForeground$1;->(Landroid/graphics/drawable/RippleForeground;)V +HSPLandroid/graphics/drawable/RippleForeground$2;->(Ljava/lang/String;)V +HSPLandroid/graphics/drawable/RippleForeground$3;->(Ljava/lang/String;)V +HSPLandroid/graphics/drawable/RippleForeground$4;->(Ljava/lang/String;)V +HSPLandroid/graphics/drawable/RippleForeground$LogDecelerateInterpolator;->(FFF)V +HSPLandroid/graphics/drawable/RippleForeground$LogDecelerateInterpolator;->computeLog(F)F +HSPLandroid/graphics/drawable/RippleForeground;->(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;FFZZ)V +HSPLandroid/graphics/drawable/RippleForeground;->clampStartingPosition()V +HSPLandroid/graphics/drawable/RippleForeground;->createSoftwareEnter(Z)Landroid/animation/Animator; +HSPLandroid/graphics/drawable/RippleForeground;->drawSoftware(Landroid/graphics/Canvas;Landroid/graphics/Paint;)Z +HSPLandroid/graphics/drawable/RippleForeground;->getCurrentRadius()F +HSPLandroid/graphics/drawable/RippleForeground;->onTargetRadiusChanged(F)V +HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->-set0(Landroid/graphics/drawable/RotateDrawable$RotateState;[I)[I +HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/RotateDrawable;->()V +HSPLandroid/graphics/drawable/RotateDrawable;->(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RotateDrawable;->(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;Landroid/graphics/drawable/RotateDrawable;)V +HSPLandroid/graphics/drawable/RotateDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RotateDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/RotateDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/RotateDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->-get0(Landroid/graphics/drawable/ScaleDrawable$ScaleState;)[I +HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/ScaleDrawable;->(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ScaleDrawable;->(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;Landroid/graphics/drawable/ScaleDrawable;)V +HSPLandroid/graphics/drawable/ScaleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/ScaleDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +HSPLandroid/graphics/drawable/ScaleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/ScaleDrawable;->updateLocalState()V +HSPLandroid/graphics/drawable/ShapeDrawable$ShapeState;->()V +HSPLandroid/graphics/drawable/ShapeDrawable$ShapeState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/ShapeDrawable;->()V +HSPLandroid/graphics/drawable/ShapeDrawable;->(Landroid/graphics/drawable/ShapeDrawable$ShapeState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->(Landroid/graphics/drawable/shapes/Shape;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->getAlpha()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/ShapeDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLandroid/graphics/drawable/ShapeDrawable;->getPaint()Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/ShapeDrawable;->modulateAlpha(II)I +HSPLandroid/graphics/drawable/ShapeDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V +HSPLandroid/graphics/drawable/ShapeDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/ShapeDrawable;->updateLocalState()V +HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/graphics/drawable/StateListDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;)I +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->indexOfStateSet([I)I +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->mutate()V +HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/StateListDrawable;->()V +HSPLandroid/graphics/drawable/StateListDrawable;->(Landroid/graphics/drawable/StateListDrawable$StateListState;)V +HSPLandroid/graphics/drawable/StateListDrawable;->(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/StateListDrawable;->(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/content/res/Resources;Landroid/graphics/drawable/StateListDrawable;)V +HSPLandroid/graphics/drawable/StateListDrawable;->addState([ILandroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/StateListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/StateListDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/StateListDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; +HSPLandroid/graphics/drawable/StateListDrawable;->cloneConstantState()Landroid/graphics/drawable/StateListDrawable$StateListState; +HSPLandroid/graphics/drawable/StateListDrawable;->extractStateSet(Landroid/util/AttributeSet;)[I +HSPLandroid/graphics/drawable/StateListDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/StateListDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/StateListDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/StateListDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/StateListDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/StateListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLandroid/graphics/drawable/StateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/graphics/drawable/TransitionDrawable;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/TransitionDrawable;->()V +HSPLandroid/graphics/drawable/TransitionDrawable;->(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/TransitionDrawable;->(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/content/res/Resources;Landroid/graphics/drawable/TransitionDrawable;)V +HSPLandroid/graphics/drawable/TransitionDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; +HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->()V +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->(Landroid/graphics/drawable/VectorDrawable$VClipPath;)V +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->getNativePtr()J +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->getNativeSize()I +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->()V +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->(Landroid/graphics/drawable/VectorDrawable$VFullPath;)V +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->canComplexColorApplyTheme(Landroid/content/res/ComplexColor;)Z +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getFillColor()I +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativePtr()J +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativeSize()I +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getProperty(Ljava/lang/String;)Landroid/util/Property; +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/lang/String;)I +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-get7(Landroid/graphics/drawable/VectorDrawable$VGroup;)I +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-get8(Landroid/graphics/drawable/VectorDrawable$VGroup;)J +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->()V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String; +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property; +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getPropertyIndex(Ljava/lang/String;)I +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/VectorDrawable$VObject;->()V +HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z +HSPLandroid/graphics/drawable/VectorDrawable$VObject;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V +HSPLandroid/graphics/drawable/VectorDrawable$VPath;->()V +HSPLandroid/graphics/drawable/VectorDrawable$VPath;->(Landroid/graphics/drawable/VectorDrawable$VPath;)V +HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String; +HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->-wrap0(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getNativeRenderer()J +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap0(J[BI)Z +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap1(J[FI)Z +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap17(J)I +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap19()J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap2(JF)Z +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap20(J)J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap21()J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap22(J)J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap23()J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap24(J)J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap25(JJ)J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap26(J)J +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap27(JJ)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap30(JLjava/lang/String;)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap32(JLjava/lang/String;I)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap35(JFF)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap47(JJ)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap48(JFIFIFFFFFIII)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap49(JJ)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap50(JFFFFFFF)V +HSPLandroid/graphics/drawable/VectorDrawable;->-wrap6(J)F +HSPLandroid/graphics/drawable/VectorDrawable;->()V +HSPLandroid/graphics/drawable/VectorDrawable;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/VectorDrawable;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/VectorDrawable;)V +HSPLandroid/graphics/drawable/VectorDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z +HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V +HSPLandroid/graphics/drawable/VectorDrawable;->computeVectorSize()V +HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I +HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter; +HSPLandroid/graphics/drawable/VectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; +HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicHeight()I +HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/VectorDrawable;->getNativeTree()J +HSPLandroid/graphics/drawable/VectorDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/VectorDrawable;->getPixelSize()F +HSPLandroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z +HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z +HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V +HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V +HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V +HSPLandroid/graphics/drawable/VectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/VectorDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/shapes/OvalShape;->()V +HSPLandroid/graphics/drawable/shapes/OvalShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V +HSPLandroid/graphics/drawable/shapes/OvalShape;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/shapes/RectShape;->()V +HSPLandroid/graphics/drawable/shapes/RectShape;->onResize(FF)V +HSPLandroid/graphics/drawable/shapes/RectShape;->rect()Landroid/graphics/RectF; +HSPLandroid/graphics/drawable/shapes/RoundRectShape;->([FLandroid/graphics/RectF;[F)V +HSPLandroid/graphics/drawable/shapes/RoundRectShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V +HSPLandroid/graphics/drawable/shapes/RoundRectShape;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/shapes/RoundRectShape;->onResize(FF)V +HSPLandroid/graphics/drawable/shapes/Shape;->()V +HSPLandroid/graphics/drawable/shapes/Shape;->resize(FF)V +HSPLandroid/hardware/Camera$CameraInfo;->()V +HSPLandroid/hardware/Camera$ErrorCallback;->onError(ILandroid/hardware/Camera;)V +HSPLandroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V +HSPLandroid/hardware/CameraStatus$1;->()V +HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/CameraStatus; +HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Landroid/hardware/CameraStatus; +HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/hardware/CameraStatus;->()V +HSPLandroid/hardware/CameraStatus;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/GeomagneticField$LegendreTable;->(IF)V +HSPLandroid/hardware/GeomagneticField;->(FFFJ)V +HSPLandroid/hardware/GeomagneticField;->computeGeocentricCoordinates(FFF)V +HSPLandroid/hardware/GeomagneticField;->computeSchmidtQuasiNormFactors(I)[[F +HSPLandroid/hardware/GeomagneticField;->getDeclination()F +HSPLandroid/hardware/GeomagneticField;->getFieldStrength()F +HSPLandroid/hardware/ICameraService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/ICameraService$Stub$Proxy;->addListener(Landroid/hardware/ICameraServiceListener;)[Landroid/hardware/CameraStatus; +HSPLandroid/hardware/ICameraService$Stub$Proxy;->connectDevice(Landroid/hardware/camera2/ICameraDeviceCallbacks;Ljava/lang/String;Ljava/lang/String;I)Landroid/hardware/camera2/ICameraDeviceUser; +HSPLandroid/hardware/ICameraService$Stub$Proxy;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/ICameraService$Stub$Proxy;->supportsCameraApi(Ljava/lang/String;I)Z +HSPLandroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService; +HSPLandroid/hardware/ICameraService;->addListener(Landroid/hardware/ICameraServiceListener;)[Landroid/hardware/CameraStatus; +HSPLandroid/hardware/ICameraService;->connect(Landroid/hardware/ICameraClient;ILjava/lang/String;II)Landroid/hardware/ICamera; +HSPLandroid/hardware/ICameraService;->connectDevice(Landroid/hardware/camera2/ICameraDeviceCallbacks;Ljava/lang/String;Ljava/lang/String;I)Landroid/hardware/camera2/ICameraDeviceUser; +HSPLandroid/hardware/ICameraService;->connectLegacy(Landroid/hardware/ICameraClient;IILjava/lang/String;I)Landroid/hardware/ICamera; +HSPLandroid/hardware/ICameraService;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/ICameraService;->getCameraInfo(I)Landroid/hardware/CameraInfo; +HSPLandroid/hardware/ICameraService;->getCameraVendorTagCache()Landroid/hardware/camera2/params/VendorTagDescriptorCache; +HSPLandroid/hardware/ICameraService;->getCameraVendorTagDescriptor()Landroid/hardware/camera2/params/VendorTagDescriptor; +HSPLandroid/hardware/ICameraService;->getLegacyParameters(I)Ljava/lang/String; +HSPLandroid/hardware/ICameraService;->getNumberOfCameras(I)I +HSPLandroid/hardware/ICameraService;->notifySystemEvent(I[I)V +HSPLandroid/hardware/ICameraService;->removeListener(Landroid/hardware/ICameraServiceListener;)V +HSPLandroid/hardware/ICameraService;->setTorchMode(Ljava/lang/String;ZLandroid/os/IBinder;)V +HSPLandroid/hardware/ICameraService;->supportsCameraApi(Ljava/lang/String;I)Z +HSPLandroid/hardware/ICameraServiceListener$Stub;->()V +HSPLandroid/hardware/ICameraServiceListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/ICameraServiceListener;->onStatusChanged(ILjava/lang/String;)V +HSPLandroid/hardware/ICameraServiceListener;->onTorchStatusChanged(ILjava/lang/String;)V +HSPLandroid/hardware/IConsumerIrService;->getCarrierFrequencies()[I +HSPLandroid/hardware/IConsumerIrService;->hasIrEmitter()Z +HSPLandroid/hardware/IConsumerIrService;->transmit(Ljava/lang/String;I[I)V +HSPLandroid/hardware/ISerialManager;->getSerialPorts()[Ljava/lang/String; +HSPLandroid/hardware/ISerialManager;->openSerialPort(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/hardware/Sensor;->()V +HSPLandroid/hardware/Sensor;->getHandle()I +HSPLandroid/hardware/Sensor;->getMaxLengthValuesArray(Landroid/hardware/Sensor;I)I +HSPLandroid/hardware/Sensor;->getName()Ljava/lang/String; +HSPLandroid/hardware/Sensor;->getPower()F +HSPLandroid/hardware/Sensor;->getReportingMode()I +HSPLandroid/hardware/Sensor;->getStringType()Ljava/lang/String; +HSPLandroid/hardware/Sensor;->getType()I +HSPLandroid/hardware/Sensor;->getVendor()Ljava/lang/String; +HSPLandroid/hardware/Sensor;->getVersion()I +HSPLandroid/hardware/Sensor;->isWakeUpSensor()Z +HSPLandroid/hardware/Sensor;->setType(I)Z +HSPLandroid/hardware/Sensor;->setUuid(JJ)V +HSPLandroid/hardware/SensorEvent;->(I)V +HSPLandroid/hardware/SensorEventListener;->onAccuracyChanged(Landroid/hardware/Sensor;I)V +HSPLandroid/hardware/SensorEventListener;->onSensorChanged(Landroid/hardware/SensorEvent;)V +HSPLandroid/hardware/SensorManager;->()V +HSPLandroid/hardware/SensorManager;->cancelTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;Z)Z +HSPLandroid/hardware/SensorManager;->configureDirectChannelImpl(Landroid/hardware/SensorDirectChannel;Landroid/hardware/Sensor;I)I +HSPLandroid/hardware/SensorManager;->createDirectChannelImpl(Landroid/os/MemoryFile;Landroid/hardware/HardwareBuffer;)Landroid/hardware/SensorDirectChannel; +HSPLandroid/hardware/SensorManager;->destroyDirectChannelImpl(Landroid/hardware/SensorDirectChannel;)V +HSPLandroid/hardware/SensorManager;->flushImpl(Landroid/hardware/SensorEventListener;)Z +HSPLandroid/hardware/SensorManager;->getAltitude(FF)F +HSPLandroid/hardware/SensorManager;->getDefaultSensor(I)Landroid/hardware/Sensor; +HSPLandroid/hardware/SensorManager;->getDelay(I)I +HSPLandroid/hardware/SensorManager;->getFullDynamicSensorList()Ljava/util/List; +HSPLandroid/hardware/SensorManager;->getFullSensorList()Ljava/util/List; +HSPLandroid/hardware/SensorManager;->getOrientation([F[F)[F +HSPLandroid/hardware/SensorManager;->getQuaternionFromVector([F[F)V +HSPLandroid/hardware/SensorManager;->getRotationMatrix([F[F[F[F)Z +HSPLandroid/hardware/SensorManager;->getRotationMatrixFromVector([F[F)V +HSPLandroid/hardware/SensorManager;->getSensorList(I)Ljava/util/List; +HSPLandroid/hardware/SensorManager;->initDataInjectionImpl(Z)Z +HSPLandroid/hardware/SensorManager;->injectSensorDataImpl(Landroid/hardware/Sensor;[FIJ)Z +HSPLandroid/hardware/SensorManager;->registerDynamicSensorCallbackImpl(Landroid/hardware/SensorManager$DynamicSensorCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z +HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;II)Z +HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;IILandroid/os/Handler;)Z +HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z +HSPLandroid/hardware/SensorManager;->registerListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;II)Z +HSPLandroid/hardware/SensorManager;->remapCoordinateSystem([FII[F)Z +HSPLandroid/hardware/SensorManager;->remapCoordinateSystemImpl([FII[F)Z +HSPLandroid/hardware/SensorManager;->requestTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z +HSPLandroid/hardware/SensorManager;->setOperationParameterImpl(Landroid/hardware/SensorAdditionalInfo;)Z +HSPLandroid/hardware/SensorManager;->unregisterDynamicSensorCallbackImpl(Landroid/hardware/SensorManager$DynamicSensorCallback;)V +HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;)V +HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->disableSensor(Landroid/hardware/Sensor;)I +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchFlushCompleteEvent(I)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchSensorEvent(I[FIJ)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispose()V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispose(Z)V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->enableSensor(Landroid/hardware/Sensor;II)I +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->finalize()V +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->hasSensors()Z +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->removeAllSensors()Z +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->removeSensor(Landroid/hardware/Sensor;Z)Z +HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->(Landroid/hardware/SensorEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V +HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V +HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V +HSPLandroid/hardware/SystemSensorManager;->-get0(Landroid/hardware/SystemSensorManager;)Landroid/content/Context; +HSPLandroid/hardware/SystemSensorManager;->-get1(Landroid/hardware/SystemSensorManager;)Ljava/util/HashMap; +HSPLandroid/hardware/SystemSensorManager;->-get2(Landroid/hardware/SystemSensorManager;)J +HSPLandroid/hardware/SystemSensorManager;->-get3(Landroid/hardware/SystemSensorManager;)I +HSPLandroid/hardware/SystemSensorManager;->(Landroid/content/Context;Landroid/os/Looper;)V +HSPLandroid/hardware/SystemSensorManager;->getFullSensorList()Ljava/util/List; +HSPLandroid/hardware/SystemSensorManager;->registerListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;II)Z +HSPLandroid/hardware/SystemSensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V +HSPLandroid/hardware/camera2/CameraCaptureSession$CaptureCallback;->()V +HSPLandroid/hardware/camera2/CameraCaptureSession$StateCallback;->()V +HSPLandroid/hardware/camera2/CameraCaptureSession$StateCallback;->onCaptureQueueEmpty(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/CameraCaptureSession;->()V +HSPLandroid/hardware/camera2/CameraCaptureSession;->abortCaptures()V +HSPLandroid/hardware/camera2/CameraCaptureSession;->capture(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/CameraCaptureSession;->captureBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/CameraCaptureSession;->close()V +HSPLandroid/hardware/camera2/CameraCaptureSession;->finalizeOutputConfigurations(Ljava/util/List;)V +HSPLandroid/hardware/camera2/CameraCaptureSession;->getDevice()Landroid/hardware/camera2/CameraDevice; +HSPLandroid/hardware/camera2/CameraCaptureSession;->getInputSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/CameraCaptureSession;->isReprocessable()Z +HSPLandroid/hardware/camera2/CameraCaptureSession;->prepare(ILandroid/view/Surface;)V +HSPLandroid/hardware/camera2/CameraCaptureSession;->prepare(Landroid/view/Surface;)V +HSPLandroid/hardware/camera2/CameraCaptureSession;->setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/CameraCaptureSession;->setRepeatingRequest(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/CameraCaptureSession;->stopRepeating()V +HSPLandroid/hardware/camera2/CameraCaptureSession;->tearDown(Landroid/view/Surface;)V +HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; +HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->hashCode()I +HSPLandroid/hardware/camera2/CameraCharacteristics;->(Landroid/hardware/camera2/impl/CameraMetadataNative;)V +HSPLandroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/CameraDevice$StateCallback;->()V +HSPLandroid/hardware/camera2/CameraDevice;->()V +HSPLandroid/hardware/camera2/CameraDevice;->close()V +HSPLandroid/hardware/camera2/CameraDevice;->createCaptureRequest(I)Landroid/hardware/camera2/CaptureRequest$Builder; +HSPLandroid/hardware/camera2/CameraDevice;->createCaptureSession(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->createCaptureSessionByOutputConfigurations(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->createConstrainedHighSpeedCaptureSession(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->createCustomCaptureSession(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;ILandroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->createReprocessCaptureRequest(Landroid/hardware/camera2/TotalCaptureResult;)Landroid/hardware/camera2/CaptureRequest$Builder; +HSPLandroid/hardware/camera2/CameraDevice;->createReprocessableCaptureSession(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->createReprocessableCaptureSessionByConfigurations(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraDevice;->getId()Ljava/lang/String; +HSPLandroid/hardware/camera2/CameraManager$AvailabilityCallback;->()V +HSPLandroid/hardware/camera2/CameraManager$AvailabilityCallback;->onCameraUnavailable(Ljava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->run()V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$2;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$2;->run()V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$3;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$TorchCallback;Ljava/lang/String;I)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$3;->run()V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->()V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->connectCameraServiceLocked()V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->get()Landroid/hardware/camera2/CameraManager$CameraManagerGlobal; +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraIdList()[Ljava/lang/String; +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraService()Landroid/hardware/ICameraService; +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->isAvailable(I)Z +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChanged(ILjava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChangedLocked(ILjava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChanged(ILjava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChangedLocked(ILjava/lang/String;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleTorchUpdate(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;Ljava/lang/String;I)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleUpdate(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Landroid/os/Handler;Ljava/lang/String;I)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->registerAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->registerTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->unregisterAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->updateCallbackLocked(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->updateTorchCallbackLocked(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->validStatus(I)Z +HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->validTorchStatus(I)Z +HSPLandroid/hardware/camera2/CameraManager$TorchCallback;->()V +HSPLandroid/hardware/camera2/CameraManager;->(Landroid/content/Context;)V +HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics; +HSPLandroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String; +HSPLandroid/hardware/camera2/CameraManager;->openCamera(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager;->openCameraDeviceUserAsync(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;I)Landroid/hardware/camera2/CameraDevice; +HSPLandroid/hardware/camera2/CameraManager;->openCameraForUid(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;I)V +HSPLandroid/hardware/camera2/CameraManager;->registerAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager;->registerTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/CameraManager;->supportsCamera2ApiLocked(Ljava/lang/String;)Z +HSPLandroid/hardware/camera2/CameraManager;->supportsCameraApiLocked(Ljava/lang/String;I)Z +HSPLandroid/hardware/camera2/CameraManager;->unregisterAvailabilityCallback(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;)V +HSPLandroid/hardware/camera2/CameraMetadata;->()V +HSPLandroid/hardware/camera2/CameraMetadata;->setNativeInstance(Landroid/hardware/camera2/impl/CameraMetadataNative;)V +HSPLandroid/hardware/camera2/CaptureRequest$Builder;->(Landroid/hardware/camera2/impl/CameraMetadataNative;ZI)V +HSPLandroid/hardware/camera2/CaptureRequest$Builder;->addTarget(Landroid/view/Surface;)V +HSPLandroid/hardware/camera2/CaptureRequest$Builder;->build()Landroid/hardware/camera2/CaptureRequest; +HSPLandroid/hardware/camera2/CaptureRequest$Builder;->set(Landroid/hardware/camera2/CaptureRequest$Key;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/CaptureRequest$Builder;->setTag(Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/CaptureRequest$Key;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/CaptureRequest$Key;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/CaptureRequest$Key;->getName()Ljava/lang/String; +HSPLandroid/hardware/camera2/CaptureRequest$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; +HSPLandroid/hardware/camera2/CaptureRequest$Key;->hashCode()I +HSPLandroid/hardware/camera2/CaptureRequest;->-get0(Landroid/hardware/camera2/CaptureRequest;)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/CaptureRequest;->-get1(Landroid/hardware/camera2/CaptureRequest;)Ljava/util/HashSet; +HSPLandroid/hardware/camera2/CaptureRequest;->-set1(Landroid/hardware/camera2/CaptureRequest;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/CaptureRequest;->(Landroid/hardware/camera2/CaptureRequest;)V +HSPLandroid/hardware/camera2/CaptureRequest;->(Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureRequest;)V +HSPLandroid/hardware/camera2/CaptureRequest;->(Landroid/hardware/camera2/impl/CameraMetadataNative;ZI)V +HSPLandroid/hardware/camera2/CaptureRequest;->(Landroid/hardware/camera2/impl/CameraMetadataNative;ZILandroid/hardware/camera2/CaptureRequest;)V +HSPLandroid/hardware/camera2/CaptureRequest;->get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/CaptureRequest;->getTag()Ljava/lang/Object; +HSPLandroid/hardware/camera2/CaptureRequest;->getTargets()Ljava/util/Collection; +HSPLandroid/hardware/camera2/CaptureRequest;->isPartOfCRequestList()Z +HSPLandroid/hardware/camera2/CaptureRequest;->isReprocess()Z +HSPLandroid/hardware/camera2/CaptureRequest;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/hardware/camera2/CaptureResult$Key;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/CaptureResult$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; +HSPLandroid/hardware/camera2/CaptureResult$Key;->hashCode()I +HSPLandroid/hardware/camera2/CaptureResult;->(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/impl/CaptureResultExtras;)V +HSPLandroid/hardware/camera2/CaptureResult;->get(Landroid/hardware/camera2/CaptureResult$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/CaptureResult;->getFrameNumber()J +HSPLandroid/hardware/camera2/CaptureResult;->getRequest()Landroid/hardware/camera2/CaptureRequest; +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->()V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onCaptureStarted(Landroid/hardware/camera2/impl/CaptureResultExtras;J)V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onDeviceError(ILandroid/hardware/camera2/impl/CaptureResultExtras;)V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onDeviceIdle()V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onPrepared(I)V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onRepeatingRequestError(J)V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onRequestQueueEmpty()V +HSPLandroid/hardware/camera2/ICameraDeviceCallbacks;->onResultReceived(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;)V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->beginConfigure()V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->cancelRequest(I)J +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->createDefaultRequest(I)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->createInputStream(III)I +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->createStream(Landroid/hardware/camera2/params/OutputConfiguration;)I +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->deleteStream(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->endConfigure(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->finalizeOutputConfigurations(ILandroid/hardware/camera2/params/OutputConfiguration;)V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->getInputSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->submitRequestList([Landroid/hardware/camera2/CaptureRequest;Z)Landroid/hardware/camera2/utils/SubmitInfo; +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub$Proxy;->waitUntilIdle()V +HSPLandroid/hardware/camera2/ICameraDeviceUser$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/camera2/ICameraDeviceUser; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->beginConfigure()V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->cancelRequest(I)J +HSPLandroid/hardware/camera2/ICameraDeviceUser;->createDefaultRequest(I)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->createInputStream(III)I +HSPLandroid/hardware/camera2/ICameraDeviceUser;->createStream(Landroid/hardware/camera2/params/OutputConfiguration;)I +HSPLandroid/hardware/camera2/ICameraDeviceUser;->deleteStream(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->disconnect()V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->endConfigure(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->finalizeOutputConfigurations(ILandroid/hardware/camera2/params/OutputConfiguration;)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->flush()J +HSPLandroid/hardware/camera2/ICameraDeviceUser;->getCameraInfo()Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->getInputSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->prepare(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->prepare2(II)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->submitRequest(Landroid/hardware/camera2/CaptureRequest;Z)Landroid/hardware/camera2/utils/SubmitInfo; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->submitRequestList([Landroid/hardware/camera2/CaptureRequest;Z)Landroid/hardware/camera2/utils/SubmitInfo; +HSPLandroid/hardware/camera2/ICameraDeviceUser;->tearDown(I)V +HSPLandroid/hardware/camera2/ICameraDeviceUser;->waitUntilIdle()V +HSPLandroid/hardware/camera2/TotalCaptureResult;->(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/impl/CaptureResultExtras;Ljava/util/List;I)V +HSPLandroid/hardware/camera2/dispatch/ArgumentReplacingDispatcher;->(Landroid/hardware/camera2/dispatch/Dispatchable;ILjava/lang/Object;)V +HSPLandroid/hardware/camera2/dispatch/ArgumentReplacingDispatcher;->arrayCopy([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/ArgumentReplacingDispatcher;->dispatch(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/BroadcastDispatcher;->([Landroid/hardware/camera2/dispatch/Dispatchable;)V +HSPLandroid/hardware/camera2/dispatch/BroadcastDispatcher;->dispatch(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/DuckTypingDispatcher;->(Landroid/hardware/camera2/dispatch/Dispatchable;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/dispatch/DuckTypingDispatcher;->dispatch(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/HandlerDispatcher$1;->(Landroid/hardware/camera2/dispatch/HandlerDispatcher;Ljava/lang/reflect/Method;[Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/dispatch/HandlerDispatcher$1;->run()V +HSPLandroid/hardware/camera2/dispatch/HandlerDispatcher;->-get0(Landroid/hardware/camera2/dispatch/HandlerDispatcher;)Landroid/hardware/camera2/dispatch/Dispatchable; +HSPLandroid/hardware/camera2/dispatch/HandlerDispatcher;->(Landroid/hardware/camera2/dispatch/Dispatchable;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/dispatch/HandlerDispatcher;->dispatch(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/InvokeDispatcher;->(Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/dispatch/InvokeDispatcher;->dispatch(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/dispatch/MethodNameInvoker;->(Landroid/hardware/camera2/dispatch/Dispatchable;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/dispatch/MethodNameInvoker;->invoke(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->(Landroid/hardware/camera2/dispatch/Dispatchable;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureCompleted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureProgressed(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraDevice;IJ)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$DeviceCaptureCallbackProxy;->onCaptureStarted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;JJ)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->(Landroid/hardware/camera2/dispatch/Dispatchable;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->onActive(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->onCaptureQueueEmpty(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->onClosed(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->onConfigured(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/impl/CallbackProxies$SessionStateCallbackProxy;->onReady(Landroid/hardware/camera2/CameraCaptureSession;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionCore;->getDeviceStateCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionCore;->isAborting()Z +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionCore;->replaceSessionClose()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureCompleted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureProgressed(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureSequenceCompleted(Landroid/hardware/camera2/CameraDevice;IJ)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$1;->onCaptureStarted(Landroid/hardware/camera2/CameraDevice;Landroid/hardware/camera2/CaptureRequest;JJ)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$2;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;Landroid/hardware/camera2/CameraCaptureSession;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$2;->onActive(Landroid/hardware/camera2/CameraDevice;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$2;->onBusy(Landroid/hardware/camera2/CameraDevice;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$2;->onIdle(Landroid/hardware/camera2/CameraDevice;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$2;->onRequestQueueEmpty()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$AbortDrainListener;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$IdleDrainListener;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;->(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;Landroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl$SequenceDrainListener;->onDrained()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->-get1(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)Z +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->-get4(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)Landroid/hardware/camera2/utils/TaskSingleDrainer; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->-get5(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)Z +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->-get6(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;)Landroid/hardware/camera2/CameraCaptureSession$StateCallback; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->-wrap0(Landroid/hardware/camera2/impl/CameraCaptureSessionImpl;I)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->(ILandroid/view/Surface;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;Landroid/hardware/camera2/impl/CameraDeviceImpl;Landroid/os/Handler;Z)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->addPendingSequence(I)I +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->captureBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->checkNotClosed()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->close()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->createCaptureCallbackProxy(Landroid/os/Handler;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;)Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->createUserStateCallbackProxy(Landroid/os/Handler;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;)Landroid/hardware/camera2/CameraCaptureSession$StateCallback; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->finalizeOutputConfigurations(Ljava/util/List;)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->finishPendingSequence(I)V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->getDevice()Landroid/hardware/camera2/CameraDevice; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->getDeviceStateCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->getInputSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->replaceSessionClose()V +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/impl/CameraCaptureSessionImpl;->stopRepeating()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$10;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;ILandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;Landroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$10;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$1;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$1;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$2;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$2;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$3;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$3;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$4;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$4;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$5;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$6;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$6;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$7;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$2;->(Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;Landroid/hardware/camera2/impl/CaptureResultExtras;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;JJ)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$2;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$3;->(Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/CaptureResult;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$3;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$4;->(Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;Landroid/hardware/camera2/impl/CameraMetadataNative;JILandroid/util/Range;Landroid/hardware/camera2/impl/CaptureResultExtras;Ljava/util/List;Landroid/hardware/camera2/CaptureRequest;Landroid/hardware/camera2/TotalCaptureResult;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks$4;->run()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onCaptureStarted(Landroid/hardware/camera2/impl/CaptureResultExtras;J)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onDeviceIdle()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onRequestQueueEmpty()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks;->onResultReceived(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CaptureResultExtras;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->(Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Ljava/util/List;Landroid/os/Handler;ZI)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getCallback()Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getHandler()Landroid/os/Handler; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getRequest(I)Landroid/hardware/camera2/CaptureRequest; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->getSessionId()I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallbackHolder;->hasBatchedOutputs()Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->getCompletedFrameNumber()J +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->getCompletedReprocessFrameNumber()J +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->popPartialResults(J)Ljava/util/List; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->update()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateCompletedFrameNumber(J)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateTracker(JLandroid/hardware/camera2/CaptureResult;ZZ)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker;->updateTracker(JZZ)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->(IJ)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->(Ljava/util/List;Landroid/hardware/camera2/utils/SubmitInfo;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->getLastFrameNumber()J +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->getLastRegularFrameNumber()J +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->getLastReprocessFrameNumber()J +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$RequestLastFrameNumbersHolder;->getRequestId()I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK;->()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get10(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/hardware/camera2/impl/ICameraDeviceUserWrapper; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get12(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/hardware/camera2/impl/CameraDeviceImpl$StateCallbackKK; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get13(Landroid/hardware/camera2/impl/CameraDeviceImpl;)I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get2(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Ljava/lang/Runnable; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get3(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/util/SparseArray; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get6(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/hardware/camera2/CameraDevice$StateCallback; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get7(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/os/Handler; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get8(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/hardware/camera2/impl/CameraDeviceImpl$FrameNumberTracker; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-get9(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-set0(Landroid/hardware/camera2/impl/CameraDeviceImpl;Z)Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-wrap0(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Landroid/hardware/camera2/CameraCharacteristics; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-wrap1(Landroid/hardware/camera2/impl/CameraDeviceImpl;)Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->-wrap2(Landroid/hardware/camera2/impl/CameraDeviceImpl;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->(Ljava/lang/String;Landroid/hardware/camera2/CameraDevice$StateCallback;Landroid/os/Handler;Landroid/hardware/camera2/CameraCharacteristics;I)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->captureBurst(Ljava/util/List;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkAndFireSequenceComplete()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkEarlyTriggerSequenceComplete(IJ)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkHandler(Landroid/os/Handler;)Landroid/os/Handler; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkHandler(Landroid/os/Handler;Ljava/lang/Object;)Landroid/os/Handler; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkIfCameraClosedOrInError()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->checkInputConfiguration(Landroid/hardware/camera2/params/InputConfiguration;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->configureStreamsChecked(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;I)Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->createCaptureRequest(I)Landroid/hardware/camera2/CaptureRequest$Builder; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->createCaptureSessionInternal(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;I)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->createReprocessableCaptureSessionByConfigurations(Landroid/hardware/camera2/params/InputConfiguration;Ljava/util/List;Landroid/hardware/camera2/CameraCaptureSession$StateCallback;Landroid/os/Handler;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->finalizeOutputConfigs(Ljava/util/List;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->getCallbacks()Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraDeviceCallbacks; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->getCharacteristics()Landroid/hardware/camera2/CameraCharacteristics; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->getId()Ljava/lang/String; +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->isClosed()Z +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->overrideEnableZsl(Landroid/hardware/camera2/impl/CameraMetadataNative;Z)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->setRemoteDevice(Landroid/hardware/camera2/ICameraDeviceUser;)V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->setRepeatingBurst(Ljava/util/List;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Landroid/os/Handler;)I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->stopRepeating()V +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->submitCaptureRequest(Ljava/util/List;Landroid/hardware/camera2/impl/CameraDeviceImpl$CaptureCallback;Landroid/os/Handler;Z)I +HSPLandroid/hardware/camera2/impl/CameraDeviceImpl;->waitUntilIdle()V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$3;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$4;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$5;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$8;->getValue(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->getName()Ljava/lang/String; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->getTypeReference()Landroid/hardware/camera2/utils/TypeReference; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->hashCode()I +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->-wrap0(Landroid/hardware/camera2/impl/CameraMetadataNative;)[Landroid/graphics/Rect; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->-wrap1(Landroid/hardware/camera2/impl/CameraMetadataNative;)[Landroid/hardware/camera2/params/Face; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->-wrap13(Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Integer; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->-wrap3(Landroid/hardware/camera2/impl/CameraMetadataNative;)Landroid/hardware/camera2/params/StreamConfigurationMap; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->()V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->(Landroid/hardware/camera2/impl/CameraMetadataNative;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->areValuesAllNull([Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->close()V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->finalize()V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CaptureRequest$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CaptureResult$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/CaptureResult$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getFaceRectangles()[Landroid/graphics/Rect; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getFaces()[Landroid/hardware/camera2/params/Face; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getMarshalerForKey(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getMaxRegions(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Integer; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getStreamConfigurationMap()Landroid/hardware/camera2/params/StreamConfigurationMap; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->isEmpty()Z +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->move(Landroid/hardware/camera2/impl/CameraMetadataNative;)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->readValues(I)[B +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->set(Landroid/hardware/camera2/CameraCharacteristics$Key;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->set(Landroid/hardware/camera2/CaptureRequest$Key;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->set(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setupGlobalVendorTagDescriptor()V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->swap(Landroid/hardware/camera2/impl/CameraMetadataNative;)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->writeValues(I[B)V +HSPLandroid/hardware/camera2/impl/CaptureResultExtras$1;->()V +HSPLandroid/hardware/camera2/impl/CaptureResultExtras$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/camera2/impl/CaptureResultExtras; +HSPLandroid/hardware/camera2/impl/CaptureResultExtras$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->(Landroid/os/Parcel;)V +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->(Landroid/os/Parcel;Landroid/hardware/camera2/impl/CaptureResultExtras;)V +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->getFrameNumber()J +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->getPartialResultCount()I +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->getRequestId()I +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->getSubsequenceId()I +HSPLandroid/hardware/camera2/impl/CaptureResultExtras;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->(Landroid/hardware/camera2/ICameraDeviceUser;)V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->beginConfigure()V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->cancelRequest(I)J +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->createDefaultRequest(I)Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->createInputStream(III)I +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->createStream(Landroid/hardware/camera2/params/OutputConfiguration;)I +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->deleteStream(I)V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->endConfigure(I)V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->finalizeOutputConfigurations(ILandroid/hardware/camera2/params/OutputConfiguration;)V +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->getInputSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->submitRequestList([Landroid/hardware/camera2/CaptureRequest;Z)Landroid/hardware/camera2/utils/SubmitInfo; +HSPLandroid/hardware/camera2/impl/ICameraDeviceUserWrapper;->waitUntilIdle()V +HSPLandroid/hardware/camera2/legacy/LegacyCameraDevice;->detectSurfaceDataspace(Landroid/view/Surface;)I +HSPLandroid/hardware/camera2/legacy/LegacyCameraDevice;->detectSurfaceType(Landroid/view/Surface;)I +HSPLandroid/hardware/camera2/legacy/LegacyCameraDevice;->getSurfaceSize(Landroid/view/Surface;)Landroid/util/Size; +HSPLandroid/hardware/camera2/legacy/LegacyExceptionUtils;->throwOnError(I)I +HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->checkNativeType(I)I +HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->checkNativeTypeEquals(II)I +HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->getPrimitiveTypeSize(I)I +HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->wrapClassIfPrimitive(Ljava/lang/Class;)Ljava/lang/Class; +HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->(Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->hashCode()I +HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->getMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/Marshaler;->(Landroid/hardware/camera2/marshal/MarshalQueryable;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/Marshaler;->calculateMarshalSize(Ljava/lang/Object;)I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->calculateMarshalSize(Ljava/lang/Object;)I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->marshalArrayElement(Landroid/hardware/camera2/marshal/Marshaler;Ljava/nio/ByteBuffer;Ljava/lang/Object;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern$MarshalerBlackLevelPattern;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern$MarshalerBlackLevelPattern;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/BlackLevelPattern; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern$MarshalerBlackLevelPattern;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->marshal(Ljava/lang/Boolean;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Boolean; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform$MarshalerColorSpaceTransform;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform$MarshalerColorSpaceTransform;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/ColorSpaceTransform; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform$MarshalerColorSpaceTransform;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableEnum;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration$MarshalerHighSpeedVideoConfiguration;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration$MarshalerHighSpeedVideoConfiguration;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration$MarshalerHighSpeedVideoConfiguration;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/HighSpeedVideoConfiguration; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration$MarshalerHighSpeedVideoConfiguration;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->marshal(Landroid/hardware/camera2/params/MeteringRectangle;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/MeteringRectangle; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->marshal(Ljava/lang/Integer;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Integer; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/util/Pair; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePair;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->calculateMarshalSize(Ljava/lang/Object;)I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->marshalPrimitive(BLjava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->marshalPrimitive(ILjava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshalObject(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange$MarshalerRange;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableRange;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange$MarshalerRange;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/util/Range; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange$MarshalerRange;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableRect;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->marshal(Landroid/graphics/Rect;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/graphics/Rect; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect$MarshalerRect;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRect;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap$MarshalerReprocessFormatsMap;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap$MarshalerReprocessFormatsMap;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/ReprocessFormatsMap; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap$MarshalerReprocessFormatsMap;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector$MarshalerRggbChannelVector;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector$MarshalerRggbChannelVector;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/RggbChannelVector; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector$MarshalerRggbChannelVector;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableSize;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->marshal(Landroid/util/Size;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->marshal(Ljava/lang/Object;Ljava/nio/ByteBuffer;)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/util/Size; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize$MarshalerSize;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSize;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableSizeF;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration$MarshalerStreamConfiguration;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration$MarshalerStreamConfiguration;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration$MarshalerStreamConfiguration;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/StreamConfiguration; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration$MarshalerStreamConfiguration;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration$MarshalerStreamConfigurationDuration;->(Landroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration;Landroid/hardware/camera2/utils/TypeReference;I)V +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration$MarshalerStreamConfigurationDuration;->getNativeSize()I +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration$MarshalerStreamConfigurationDuration;->unmarshal(Ljava/nio/ByteBuffer;)Landroid/hardware/camera2/params/StreamConfigurationDuration; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration$MarshalerStreamConfigurationDuration;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableString;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z +HSPLandroid/hardware/camera2/params/BlackLevelPattern;->([I)V +HSPLandroid/hardware/camera2/params/BlackLevelPattern;->getOffsetForIndex(II)I +HSPLandroid/hardware/camera2/params/ColorSpaceTransform;->([I)V +HSPLandroid/hardware/camera2/params/ColorSpaceTransform;->copyElements([Landroid/util/Rational;I)V +HSPLandroid/hardware/camera2/params/HighSpeedVideoConfiguration;->(IIIII)V +HSPLandroid/hardware/camera2/params/HighSpeedVideoConfiguration;->getFpsRange()Landroid/util/Range; +HSPLandroid/hardware/camera2/params/HighSpeedVideoConfiguration;->getSize()Landroid/util/Size; +HSPLandroid/hardware/camera2/params/InputConfiguration;->(III)V +HSPLandroid/hardware/camera2/params/InputConfiguration;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/params/InputConfiguration;->getFormat()I +HSPLandroid/hardware/camera2/params/InputConfiguration;->getHeight()I +HSPLandroid/hardware/camera2/params/InputConfiguration;->getWidth()I +HSPLandroid/hardware/camera2/params/MeteringRectangle;->(IIIII)V +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getHeight()I +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getMeteringWeight()I +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getRect()Landroid/graphics/Rect; +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getWidth()I +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getX()I +HSPLandroid/hardware/camera2/params/MeteringRectangle;->getY()I +HSPLandroid/hardware/camera2/params/OutputConfiguration$1;->()V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->(ILandroid/view/Surface;)V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->(ILandroid/view/Surface;I)V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->(Landroid/hardware/camera2/params/OutputConfiguration;)V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->(Landroid/util/Size;Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->addSurface(Landroid/view/Surface;)V +HSPLandroid/hardware/camera2/params/OutputConfiguration;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/params/OutputConfiguration;->getSurface()Landroid/view/Surface; +HSPLandroid/hardware/camera2/params/OutputConfiguration;->getSurfaces()Ljava/util/List; +HSPLandroid/hardware/camera2/params/OutputConfiguration;->hashCode()I +HSPLandroid/hardware/camera2/params/OutputConfiguration;->isDeferredConfiguration()Z +HSPLandroid/hardware/camera2/params/OutputConfiguration;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/hardware/camera2/params/ReprocessFormatsMap;->([I)V +HSPLandroid/hardware/camera2/params/RggbChannelVector;->(FFFF)V +HSPLandroid/hardware/camera2/params/StreamConfiguration;->(IIIZ)V +HSPLandroid/hardware/camera2/params/StreamConfiguration;->getFormat()I +HSPLandroid/hardware/camera2/params/StreamConfiguration;->getSize()Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfiguration;->isOutput()Z +HSPLandroid/hardware/camera2/params/StreamConfigurationDuration;->(IIIJ)V +HSPLandroid/hardware/camera2/params/StreamConfigurationDuration;->getDuration()J +HSPLandroid/hardware/camera2/params/StreamConfigurationDuration;->getFormat()I +HSPLandroid/hardware/camera2/params/StreamConfigurationDuration;->getHeight()I +HSPLandroid/hardware/camera2/params/StreamConfigurationDuration;->getWidth()I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->([Landroid/hardware/camera2/params/StreamConfiguration;[Landroid/hardware/camera2/params/StreamConfigurationDuration;[Landroid/hardware/camera2/params/StreamConfigurationDuration;[Landroid/hardware/camera2/params/StreamConfiguration;[Landroid/hardware/camera2/params/StreamConfigurationDuration;[Landroid/hardware/camera2/params/StreamConfigurationDuration;[Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;Landroid/hardware/camera2/params/ReprocessFormatsMap;Z)V +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->checkArgumentFormat(I)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->checkArgumentFormatInternal(I)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->checkArgumentFormatSupported(IZ)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getDurations(II)[Landroid/hardware/camera2/params/StreamConfigurationDuration; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getFormatsMap(Z)Landroid/util/SparseIntArray; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getHighSpeedVideoFpsRangesFor(Landroid/util/Size;)[Landroid/util/Range; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getHighSpeedVideoSizes()[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getInputFormats()[I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getInputSizes(I)[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getInternalFormatDuration(IILandroid/util/Size;I)J +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getInternalFormatSizes(IIZZ)[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getOutputMinFrameDuration(ILandroid/util/Size;)J +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getOutputSizes(I)[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getOutputSizes(Ljava/lang/Class;)[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getPublicFormatCount(Z)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getPublicFormatSizes(IZZ)[Landroid/util/Size; +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->getPublicFormats(Z)[I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->imageFormatToDataspace(I)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->imageFormatToInternal(I)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->imageFormatToPublic(I)I +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->isOutputSupportedFor(Ljava/lang/Class;)Z +HSPLandroid/hardware/camera2/params/StreamConfigurationMap;->isSupportedInternalConfiguration(IILandroid/util/Size;)Z +HSPLandroid/hardware/camera2/params/TonemapCurve;->([F[F[F)V +HSPLandroid/hardware/camera2/params/TonemapCurve;->checkArgumentArrayLengthDivisibleBy([FILjava/lang/String;)V +HSPLandroid/hardware/camera2/params/TonemapCurve;->checkArgumentArrayLengthNoLessThan([FILjava/lang/String;)V +HSPLandroid/hardware/camera2/utils/HashCodeHelpers;->hashCode([I)I +HSPLandroid/hardware/camera2/utils/HashCodeHelpers;->hashCodeGeneric([Ljava/lang/Object;)I +HSPLandroid/hardware/camera2/utils/SubmitInfo$1;->()V +HSPLandroid/hardware/camera2/utils/SubmitInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/camera2/utils/SubmitInfo; +HSPLandroid/hardware/camera2/utils/SubmitInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/utils/SubmitInfo;->(Landroid/os/Parcel;)V +HSPLandroid/hardware/camera2/utils/SubmitInfo;->(Landroid/os/Parcel;Landroid/hardware/camera2/utils/SubmitInfo;)V +HSPLandroid/hardware/camera2/utils/SubmitInfo;->getLastFrameNumber()J +HSPLandroid/hardware/camera2/utils/SubmitInfo;->getRequestId()I +HSPLandroid/hardware/camera2/utils/SubmitInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/camera2/utils/SurfaceUtils;->getSurfaceDataspace(Landroid/view/Surface;)I +HSPLandroid/hardware/camera2/utils/SurfaceUtils;->getSurfaceFormat(Landroid/view/Surface;)I +HSPLandroid/hardware/camera2/utils/SurfaceUtils;->getSurfaceSize(Landroid/view/Surface;)Landroid/util/Size; +HSPLandroid/hardware/camera2/utils/TaskDrainer$1;->(Landroid/hardware/camera2/utils/TaskDrainer;)V +HSPLandroid/hardware/camera2/utils/TaskDrainer$1;->run()V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->-get0(Landroid/hardware/camera2/utils/TaskDrainer;)Landroid/hardware/camera2/utils/TaskDrainer$DrainListener; +HSPLandroid/hardware/camera2/utils/TaskDrainer;->(Landroid/os/Handler;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;Ljava/lang/String;)V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->beginDrain()V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->checkIfDrainFinished()V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->postDrained()V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->taskFinished(Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/utils/TaskDrainer;->taskStarted(Ljava/lang/Object;)V +HSPLandroid/hardware/camera2/utils/TaskSingleDrainer;->(Landroid/os/Handler;Landroid/hardware/camera2/utils/TaskDrainer$DrainListener;Ljava/lang/String;)V +HSPLandroid/hardware/camera2/utils/TaskSingleDrainer;->taskFinished()V +HSPLandroid/hardware/camera2/utils/TaskSingleDrainer;->taskStarted()V +HSPLandroid/hardware/camera2/utils/TypeReference$SpecializedBaseTypeReference;->(Ljava/lang/reflect/Type;)V +HSPLandroid/hardware/camera2/utils/TypeReference$SpecializedTypeReference;->(Ljava/lang/Class;)V +HSPLandroid/hardware/camera2/utils/TypeReference;->(Ljava/lang/reflect/Type;)V +HSPLandroid/hardware/camera2/utils/TypeReference;->(Ljava/lang/reflect/Type;Landroid/hardware/camera2/utils/TypeReference;)V +HSPLandroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z +HSPLandroid/hardware/camera2/utils/TypeReference;->createSpecializedTypeReference(Ljava/lang/Class;)Landroid/hardware/camera2/utils/TypeReference; +HSPLandroid/hardware/camera2/utils/TypeReference;->createSpecializedTypeReference(Ljava/lang/reflect/Type;)Landroid/hardware/camera2/utils/TypeReference; +HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z +HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType()Landroid/hardware/camera2/utils/TypeReference; +HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType()Ljava/lang/Class; +HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType(Ljava/lang/reflect/Type;)Ljava/lang/Class; +HSPLandroid/hardware/camera2/utils/TypeReference;->getType()Ljava/lang/reflect/Type; +HSPLandroid/hardware/camera2/utils/TypeReference;->hashCode()I +HSPLandroid/hardware/display/DisplayManager$DisplayListener;->onDisplayAdded(I)V +HSPLandroid/hardware/display/DisplayManager$DisplayListener;->onDisplayChanged(I)V +HSPLandroid/hardware/display/DisplayManager$DisplayListener;->onDisplayRemoved(I)V +HSPLandroid/hardware/display/DisplayManager;->(Landroid/content/Context;)V +HSPLandroid/hardware/display/DisplayManager;->addAllDisplaysLocked(Ljava/util/ArrayList;[I)V +HSPLandroid/hardware/display/DisplayManager;->addPresentationDisplaysLocked(Ljava/util/ArrayList;[II)V +HSPLandroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getDisplays()[Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getDisplays(Ljava/lang/String;)[Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getOrCreateDisplayLocked(IZ)Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; +HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;)V +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;)V +HSPLandroid/hardware/display/DisplayManagerGlobal;->(Landroid/hardware/display/IDisplayManager;)V +HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I +HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/content/res/Resources;)Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/view/DisplayAdjustments;)Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayIds()[I +HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfo(I)Landroid/view/DisplayInfo; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal; +HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; +HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V +HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->acquireSuspendBlocker()V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onDisplayStateChange(I)V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onProximityNegative()V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onProximityPositive()V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->onStateChanged()V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->releaseSuspendBlocker()V +HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->()V +HSPLandroid/hardware/display/DisplayManagerInternal;->()V +HSPLandroid/hardware/display/DisplayManagerInternal;->getDisplayInfo(I)Landroid/view/DisplayInfo; +HSPLandroid/hardware/display/DisplayManagerInternal;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V +HSPLandroid/hardware/display/DisplayManagerInternal;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V +HSPLandroid/hardware/display/DisplayManagerInternal;->isProximitySensorAvailable()Z +HSPLandroid/hardware/display/DisplayManagerInternal;->isUidPresentOnDisplay(II)Z +HSPLandroid/hardware/display/DisplayManagerInternal;->performTraversalInTransactionFromWindowManager()V +HSPLandroid/hardware/display/DisplayManagerInternal;->registerDisplayTransactionListener(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V +HSPLandroid/hardware/display/DisplayManagerInternal;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z +HSPLandroid/hardware/display/DisplayManagerInternal;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V +HSPLandroid/hardware/display/DisplayManagerInternal;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V +HSPLandroid/hardware/display/DisplayManagerInternal;->setDisplayOffsets(III)V +HSPLandroid/hardware/display/DisplayManagerInternal;->setDisplayProperties(IZFIZ)V +HSPLandroid/hardware/display/DisplayManagerInternal;->unregisterDisplayTransactionListener(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V +HSPLandroid/hardware/display/DisplayViewport;->()V +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayIds()[I +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo; +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V +HSPLandroid/hardware/display/IDisplayManager$Stub;->()V +HSPLandroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager; +HSPLandroid/hardware/display/IDisplayManager;->connectWifiDisplay(Ljava/lang/String;)V +HSPLandroid/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 +HSPLandroid/hardware/display/IDisplayManager;->disconnectWifiDisplay()V +HSPLandroid/hardware/display/IDisplayManager;->forgetWifiDisplay(Ljava/lang/String;)V +HSPLandroid/hardware/display/IDisplayManager;->getDisplayIds()[I +HSPLandroid/hardware/display/IDisplayManager;->getDisplayInfo(I)Landroid/view/DisplayInfo; +HSPLandroid/hardware/display/IDisplayManager;->getStableDisplaySize()Landroid/graphics/Point; +HSPLandroid/hardware/display/IDisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; +HSPLandroid/hardware/display/IDisplayManager;->pauseWifiDisplay()V +HSPLandroid/hardware/display/IDisplayManager;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V +HSPLandroid/hardware/display/IDisplayManager;->releaseVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;)V +HSPLandroid/hardware/display/IDisplayManager;->renameWifiDisplay(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/display/IDisplayManager;->requestColorMode(II)V +HSPLandroid/hardware/display/IDisplayManager;->resizeVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;III)V +HSPLandroid/hardware/display/IDisplayManager;->resumeWifiDisplay()V +HSPLandroid/hardware/display/IDisplayManager;->setVirtualDisplaySurface(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/view/Surface;)V +HSPLandroid/hardware/display/IDisplayManager;->startWifiDisplayScan()V +HSPLandroid/hardware/display/IDisplayManager;->stopWifiDisplayScan()V +HSPLandroid/hardware/display/IDisplayManagerCallback$Stub;->()V +HSPLandroid/hardware/display/IDisplayManagerCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/display/IDisplayManagerCallback;->onDisplayEvent(II)V +HSPLandroid/hardware/display/WifiDisplay$1;->()V +HSPLandroid/hardware/display/WifiDisplay$1;->newArray(I)[Landroid/hardware/display/WifiDisplay; +HSPLandroid/hardware/display/WifiDisplay$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;->()V +HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/WifiDisplaySessionInfo; +HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/display/WifiDisplaySessionInfo;->(ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/display/WifiDisplayStatus$1;->()V +HSPLandroid/hardware/display/WifiDisplayStatus$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/WifiDisplayStatus; +HSPLandroid/hardware/display/WifiDisplayStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/display/WifiDisplayStatus;->(IIILandroid/hardware/display/WifiDisplay;[Landroid/hardware/display/WifiDisplay;Landroid/hardware/display/WifiDisplaySessionInfo;)V +HSPLandroid/hardware/display/WifiDisplayStatus;->getActiveDisplay()Landroid/hardware/display/WifiDisplay; +HSPLandroid/hardware/display/WifiDisplayStatus;->getFeatureState()I +HSPLandroid/hardware/fingerprint/Fingerprint$1;->()V +HSPLandroid/hardware/fingerprint/FingerprintManager$1;->(Landroid/hardware/fingerprint/FingerprintManager;)V +HSPLandroid/hardware/fingerprint/FingerprintManager$2;->(Landroid/hardware/fingerprint/FingerprintManager;Landroid/os/PowerManager;Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/FingerprintManager$AuthenticationCallback;->()V +HSPLandroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;->()V +HSPLandroid/hardware/fingerprint/FingerprintManager$MyHandler;->(Landroid/hardware/fingerprint/FingerprintManager;Landroid/content/Context;)V +HSPLandroid/hardware/fingerprint/FingerprintManager$MyHandler;->(Landroid/hardware/fingerprint/FingerprintManager;Landroid/content/Context;Landroid/hardware/fingerprint/FingerprintManager$MyHandler;)V +HSPLandroid/hardware/fingerprint/FingerprintManager;->(Landroid/content/Context;Landroid/hardware/fingerprint/IFingerprintService;)V +HSPLandroid/hardware/fingerprint/FingerprintManager;->addLockoutResetCallback(Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/FingerprintManager;->getEnrolledFingerprints(I)Ljava/util/List; +HSPLandroid/hardware/fingerprint/FingerprintManager;->isHardwareDetected()Z +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->addLockoutResetCallback(Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List; +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->isHardwareDetected(JLjava/lang/String;)Z +HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintService; +HSPLandroid/hardware/fingerprint/IFingerprintService;->addClientActiveCallback(Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->addLockoutResetCallback(Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->authenticate(Landroid/os/IBinder;JILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->cancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->cancelEnrollment(Landroid/os/IBinder;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->enroll(Landroid/os/IBinder;[BILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->enumerate(Landroid/os/IBinder;ILandroid/hardware/fingerprint/IFingerprintServiceReceiver;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->getAuthenticatorId(Ljava/lang/String;)J +HSPLandroid/hardware/fingerprint/IFingerprintService;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List; +HSPLandroid/hardware/fingerprint/IFingerprintService;->hasEnrolledFingerprints(ILjava/lang/String;)Z +HSPLandroid/hardware/fingerprint/IFingerprintService;->isClientActive()Z +HSPLandroid/hardware/fingerprint/IFingerprintService;->isHardwareDetected(JLjava/lang/String;)Z +HSPLandroid/hardware/fingerprint/IFingerprintService;->postEnroll(Landroid/os/IBinder;)I +HSPLandroid/hardware/fingerprint/IFingerprintService;->preEnroll(Landroid/os/IBinder;)J +HSPLandroid/hardware/fingerprint/IFingerprintService;->remove(Landroid/os/IBinder;IIILandroid/hardware/fingerprint/IFingerprintServiceReceiver;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->removeClientActiveCallback(Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->rename(IILjava/lang/String;)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->resetTimeout([B)V +HSPLandroid/hardware/fingerprint/IFingerprintService;->setActiveUser(I)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->()V +HSPLandroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;->onLockoutReset(JLandroid/os/IRemoteCallback;)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->()V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAcquired(JII)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAuthenticationFailed(J)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onAuthenticationSucceeded(JLandroid/hardware/fingerprint/Fingerprint;I)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onEnrollResult(JIII)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onEnumerated(JIII)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onError(JII)V +HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver;->onRemoved(JIII)V +HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->()V +HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/hardware/input/IInputDevicesChangedListener;->onInputDevicesChanged([I)V +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->getInputDevice(I)Landroid/view/InputDevice; +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->getInputDeviceIds()[I +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->hasKeys(II[I[Z)Z +HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V +HSPLandroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager; +HSPLandroid/hardware/input/IInputManager;->addKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V +HSPLandroid/hardware/input/IInputManager;->cancelVibrate(ILandroid/os/IBinder;)V +HSPLandroid/hardware/input/IInputManager;->createInputForwarder(I)Landroid/app/IInputForwarder; +HSPLandroid/hardware/input/IInputManager;->disableInputDevice(I)V +HSPLandroid/hardware/input/IInputManager;->enableInputDevice(I)V +HSPLandroid/hardware/input/IInputManager;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; +HSPLandroid/hardware/input/IInputManager;->getEnabledKeyboardLayoutsForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String; +HSPLandroid/hardware/input/IInputManager;->getInputDevice(I)Landroid/view/InputDevice; +HSPLandroid/hardware/input/IInputManager;->getInputDeviceIds()[I +HSPLandroid/hardware/input/IInputManager;->getKeyboardLayout(Ljava/lang/String;)Landroid/hardware/input/KeyboardLayout; +HSPLandroid/hardware/input/IInputManager;->getKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Landroid/hardware/input/KeyboardLayout; +HSPLandroid/hardware/input/IInputManager;->getKeyboardLayouts()[Landroid/hardware/input/KeyboardLayout; +HSPLandroid/hardware/input/IInputManager;->getKeyboardLayoutsForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)[Landroid/hardware/input/KeyboardLayout; +HSPLandroid/hardware/input/IInputManager;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration; +HSPLandroid/hardware/input/IInputManager;->hasKeys(II[I[Z)Z +HSPLandroid/hardware/input/IInputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z +HSPLandroid/hardware/input/IInputManager;->isInTabletMode()I +HSPLandroid/hardware/input/IInputManager;->isInputDeviceEnabled(I)Z +HSPLandroid/hardware/input/IInputManager;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V +HSPLandroid/hardware/input/IInputManager;->registerTabletModeChangedListener(Landroid/hardware/input/ITabletModeChangedListener;)V +HSPLandroid/hardware/input/IInputManager;->removeKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V +HSPLandroid/hardware/input/IInputManager;->requestPointerCapture(Landroid/os/IBinder;Z)V +HSPLandroid/hardware/input/IInputManager;->setCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;)V +HSPLandroid/hardware/input/IInputManager;->setCustomPointerIcon(Landroid/view/PointerIcon;)V +HSPLandroid/hardware/input/IInputManager;->setKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;Ljava/lang/String;)V +HSPLandroid/hardware/input/IInputManager;->setPointerIconType(I)V +HSPLandroid/hardware/input/IInputManager;->setTouchCalibrationForInputDevice(Ljava/lang/String;ILandroid/hardware/input/TouchCalibration;)V +HSPLandroid/hardware/input/IInputManager;->tryPointerSpeed(I)V +HSPLandroid/hardware/input/IInputManager;->vibrate(I[JILandroid/os/IBinder;)V +HSPLandroid/hardware/input/InputDeviceIdentifier$1;->()V +HSPLandroid/hardware/input/InputDeviceIdentifier;->(Ljava/lang/String;II)V +HSPLandroid/hardware/input/InputManager$InputDeviceListener;->onInputDeviceAdded(I)V +HSPLandroid/hardware/input/InputManager$InputDeviceListener;->onInputDeviceChanged(I)V +HSPLandroid/hardware/input/InputManager$InputDeviceListener;->onInputDeviceRemoved(I)V +HSPLandroid/hardware/input/InputManager$InputDeviceListenerDelegate;->(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V +HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;->(Landroid/hardware/input/InputManager;)V +HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;->(Landroid/hardware/input/InputManager;Landroid/hardware/input/InputManager$InputDevicesChangedListener;)V +HSPLandroid/hardware/input/InputManager$OnTabletModeChangedListener;->onTabletModeChanged(JZ)V +HSPLandroid/hardware/input/InputManager;->(Landroid/hardware/input/IInputManager;)V +HSPLandroid/hardware/input/InputManager;->deviceHasKeys(I[I)[Z +HSPLandroid/hardware/input/InputManager;->findInputDeviceListenerLocked(Landroid/hardware/input/InputManager$InputDeviceListener;)I +HSPLandroid/hardware/input/InputManager;->getInputDevice(I)Landroid/view/InputDevice; +HSPLandroid/hardware/input/InputManager;->getInputDeviceIds()[I +HSPLandroid/hardware/input/InputManager;->getInstance()Landroid/hardware/input/InputManager; +HSPLandroid/hardware/input/InputManager;->populateInputDevicesLocked()V +HSPLandroid/hardware/input/InputManager;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V +HSPLandroid/hardware/input/TouchCalibration$1;->()V +HSPLandroid/hardware/input/TouchCalibration;->()V +HSPLandroid/hardware/input/TouchCalibration;->(FFFFFF)V +HSPLandroid/hardware/location/IActivityRecognitionHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardware; +HSPLandroid/hardware/location/IActivityRecognitionHardware;->disableActivityEvent(Ljava/lang/String;I)Z +HSPLandroid/hardware/location/IActivityRecognitionHardware;->enableActivityEvent(Ljava/lang/String;IJ)Z +HSPLandroid/hardware/location/IActivityRecognitionHardware;->flush()Z +HSPLandroid/hardware/location/IActivityRecognitionHardware;->getSupportedActivities()[Ljava/lang/String; +HSPLandroid/hardware/location/IActivityRecognitionHardware;->isActivitySupported(Ljava/lang/String;)Z +HSPLandroid/hardware/location/IActivityRecognitionHardware;->registerSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z +HSPLandroid/hardware/location/IActivityRecognitionHardware;->unregisterSink(Landroid/hardware/location/IActivityRecognitionHardwareSink;)Z +HSPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->()V +HSPLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/hardware/location/IActivityRecognitionHardwareClient;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V +HSPLandroid/hardware/location/IContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HSPLandroid/hardware/location/IContextHubService;->getContextHubHandles()[I +HSPLandroid/hardware/location/IContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; +HSPLandroid/hardware/location/IContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; +HSPLandroid/hardware/location/IContextHubService;->loadNanoApp(ILandroid/hardware/location/NanoApp;)I +HSPLandroid/hardware/location/IContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I +HSPLandroid/hardware/location/IContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I +HSPLandroid/hardware/location/IContextHubService;->unloadNanoApp(I)I +HSPLandroid/hardware/radio/ITuner;->cancel()V +HSPLandroid/hardware/radio/ITuner;->cancelAnnouncement()V +HSPLandroid/hardware/radio/ITuner;->close()V +HSPLandroid/hardware/radio/ITuner;->getConfiguration()Landroid/hardware/radio/RadioManager$BandConfig; +HSPLandroid/hardware/radio/ITuner;->getImage(I)Landroid/graphics/Bitmap; +HSPLandroid/hardware/radio/ITuner;->getProgramInformation()Landroid/hardware/radio/RadioManager$ProgramInfo; +HSPLandroid/hardware/radio/ITuner;->getProgramList(Ljava/util/Map;)Ljava/util/List; +HSPLandroid/hardware/radio/ITuner;->isAnalogForced()Z +HSPLandroid/hardware/radio/ITuner;->isAntennaConnected()Z +HSPLandroid/hardware/radio/ITuner;->isClosed()Z +HSPLandroid/hardware/radio/ITuner;->isMuted()Z +HSPLandroid/hardware/radio/ITuner;->scan(ZZ)V +HSPLandroid/hardware/radio/ITuner;->setAnalogForced(Z)V +HSPLandroid/hardware/radio/ITuner;->setConfiguration(Landroid/hardware/radio/RadioManager$BandConfig;)V +HSPLandroid/hardware/radio/ITuner;->setMuted(Z)V +HSPLandroid/hardware/radio/ITuner;->startBackgroundScan()Z +HSPLandroid/hardware/radio/ITuner;->step(ZZ)V +HSPLandroid/hardware/radio/ITuner;->tune(Landroid/hardware/radio/ProgramSelector;)V +HSPLandroid/hardware/radio/ITunerCallback;->onAntennaState(Z)V +HSPLandroid/hardware/radio/ITunerCallback;->onBackgroundScanAvailabilityChange(Z)V +HSPLandroid/hardware/radio/ITunerCallback;->onBackgroundScanComplete()V +HSPLandroid/hardware/radio/ITunerCallback;->onConfigurationChanged(Landroid/hardware/radio/RadioManager$BandConfig;)V +HSPLandroid/hardware/radio/ITunerCallback;->onCurrentProgramInfoChanged(Landroid/hardware/radio/RadioManager$ProgramInfo;)V +HSPLandroid/hardware/radio/ITunerCallback;->onEmergencyAnnouncement(Z)V +HSPLandroid/hardware/radio/ITunerCallback;->onError(I)V +HSPLandroid/hardware/radio/ITunerCallback;->onProgramListChanged()V +HSPLandroid/hardware/radio/ITunerCallback;->onTrafficAnnouncement(Z)V +HSPLandroid/hardware/radio/ProgramSelector$1;->()V +HSPLandroid/hardware/radio/ProgramSelector$Identifier$1;->()V +HSPLandroid/hardware/radio/RadioManager$AmBandConfig$1;->()V +HSPLandroid/hardware/radio/RadioManager$AmBandDescriptor$1;->()V +HSPLandroid/hardware/radio/RadioManager$BandConfig$1;->()V +HSPLandroid/hardware/radio/RadioManager$BandDescriptor$1;->()V +HSPLandroid/hardware/radio/RadioManager$FmBandConfig$1;->()V +HSPLandroid/hardware/radio/RadioManager$FmBandDescriptor$1;->()V +HSPLandroid/hardware/radio/RadioManager$ModuleProperties$1;->()V +HSPLandroid/hardware/radio/RadioManager$ProgramInfo$1;->()V +HSPLandroid/hardware/radio/RadioMetadata$1;->()V +HSPLandroid/hardware/radio/V1_0/Call;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/CardStatus;->()V +HSPLandroid/hardware/radio/V1_0/CardStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/CardStatus;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/CellIdentity;->()V +HSPLandroid/hardware/radio/V1_0/CellIdentity;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/CellIdentity;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/CellInfoType;->toString(I)Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->()V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/HardwareConfig;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->(Landroid/os/IHwBinder;)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getBasebandVersion(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getCdmaSubscriptionSource(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getCurrentCalls(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getDataRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getDeviceIdentity(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getHardwareConfig(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getIccCardStatus(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getImsRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getNetworkSelectionMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getOperator(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getRadioCapability(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getSignalStrength(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getVoiceRadioTechnology(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->getVoiceRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->responseAcknowledgement()V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->sendDeviceState(IIZ)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setCdmaSubscriptionSource(II)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setCellInfoListRate(II)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setIndicationFilter(II)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setRadioPower(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->setResponseFunctions(Landroid/hardware/radio/V1_0/IRadioResponse;Landroid/hardware/radio/V1_0/IRadioIndication;)V +HSPLandroid/hardware/radio/V1_0/IRadio$Proxy;->startLceService(IIZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->acceptCall(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->acknowledgeIncomingGsmSmsWithPdu(IZLjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->acknowledgeLastIncomingCdmaSms(ILandroid/hardware/radio/V1_0/CdmaSmsAck;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->acknowledgeLastIncomingGsmSms(IZI)V +HSPLandroid/hardware/radio/V1_0/IRadio;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_0/IRadio;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/V1_0/IRadio; +HSPLandroid/hardware/radio/V1_0/IRadio;->cancelPendingUssd(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->changeIccPin2ForApp(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->changeIccPinForApp(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->conference(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->deactivateDataCall(IIZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->deleteSmsOnRuim(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->deleteSmsOnSim(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->dial(ILandroid/hardware/radio/V1_0/Dial;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->exitEmergencyCallbackMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->explicitCallTransfer(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getAllowedCarriers(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getAvailableBandModes(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getAvailableNetworks(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getBasebandVersion(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCDMASubscription(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCallForwardStatus(ILandroid/hardware/radio/V1_0/CallForwardInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCallWaiting(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCdmaBroadcastConfig(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCdmaRoamingPreference(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCdmaSubscriptionSource(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCellInfoList(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getClip(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getClir(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getCurrentCalls(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getDataCallList(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getDataRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/V1_0/IRadio;->getDeviceIdentity(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getFacilityLockForApp(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getGsmBroadcastConfig(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getHardwareConfig(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadio;->getIccCardStatus(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getImsRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getImsiForApp(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getLastCallFailCause(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getModemActivityInfo(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getMute(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getNeighboringCids(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getNetworkSelectionMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getOperator(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getPreferredNetworkType(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getPreferredVoicePrivacy(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getRadioCapability(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getService(Ljava/lang/String;)Landroid/hardware/radio/V1_0/IRadio; +HSPLandroid/hardware/radio/V1_0/IRadio;->getSignalStrength(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getSmscAddress(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getTTYMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getVoiceRadioTechnology(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->getVoiceRegistrationState(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->handleStkCallSetupRequestFromSim(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->hangup(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->hangupForegroundResumeBackground(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->hangupWaitingOrBackground(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->iccCloseLogicalChannel(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->iccIOForApp(ILandroid/hardware/radio/V1_0/IccIo;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->iccOpenLogicalChannel(ILjava/lang/String;I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->iccTransmitApduBasicChannel(ILandroid/hardware/radio/V1_0/SimApdu;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->iccTransmitApduLogicalChannel(ILandroid/hardware/radio/V1_0/SimApdu;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadio;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/IRadio;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_0/IRadio;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/V1_0/IRadio;->nvReadItem(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->nvResetConfig(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->nvWriteCdmaPrl(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->nvWriteItem(ILandroid/hardware/radio/V1_0/NvWriteItem;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->ping()V +HSPLandroid/hardware/radio/V1_0/IRadio;->pullLceData(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->rejectCall(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->reportSmsMemoryStatus(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->reportStkServiceIsRunning(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->requestIccSimAuthentication(IILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->requestIsimAuthentication(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->requestShutdown(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->responseAcknowledgement()V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendBurstDtmf(ILjava/lang/String;II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendCDMAFeatureCode(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendCdmaSms(ILandroid/hardware/radio/V1_0/CdmaSmsMessage;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendDeviceState(IIZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendDtmf(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendEnvelope(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendEnvelopeWithStatus(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendImsSms(ILandroid/hardware/radio/V1_0/ImsSmsMessage;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendSMSExpectMore(ILandroid/hardware/radio/V1_0/GsmSmsMessage;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendSms(ILandroid/hardware/radio/V1_0/GsmSmsMessage;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendTerminalResponseToSim(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->sendUssd(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->separateConnection(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setAllowedCarriers(IZLandroid/hardware/radio/V1_0/CarrierRestrictions;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setBandMode(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setBarringPassword(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCallForward(ILandroid/hardware/radio/V1_0/CallForwardInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCallWaiting(IZI)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCdmaBroadcastActivation(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCdmaBroadcastConfig(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCdmaRoamingPreference(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCdmaSubscriptionSource(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setCellInfoListRate(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setClir(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setDataAllowed(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setDataProfile(ILjava/util/ArrayList;Z)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setFacilityLockForApp(ILjava/lang/String;ZLjava/lang/String;ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setGsmBroadcastActivation(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setGsmBroadcastConfig(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setHALInstrumentation()V +HSPLandroid/hardware/radio/V1_0/IRadio;->setIndicationFilter(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setInitialAttachApn(ILandroid/hardware/radio/V1_0/DataProfileInfo;ZZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setLocationUpdates(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setMute(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setNetworkSelectionModeAutomatic(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setNetworkSelectionModeManual(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setPreferredNetworkType(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setPreferredVoicePrivacy(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setRadioCapability(ILandroid/hardware/radio/V1_0/RadioCapability;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setRadioPower(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setResponseFunctions(Landroid/hardware/radio/V1_0/IRadioResponse;Landroid/hardware/radio/V1_0/IRadioIndication;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setSimCardPower(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setSmscAddress(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setSuppServiceNotifications(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setTTYMode(II)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setUiccSubscription(ILandroid/hardware/radio/V1_0/SelectUiccSub;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->setupDataCall(IILandroid/hardware/radio/V1_0/DataProfileInfo;ZZZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->startDtmf(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->startLceService(IIZ)V +HSPLandroid/hardware/radio/V1_0/IRadio;->stopDtmf(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->stopLceService(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->supplyIccPin2ForApp(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->supplyIccPinForApp(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->supplyIccPuk2ForApp(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->supplyIccPukForApp(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->supplyNetworkDepersonalization(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->switchWaitingOrHoldingAndActive(I)V +HSPLandroid/hardware/radio/V1_0/IRadio;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/V1_0/IRadio;->writeSmsToRuim(ILandroid/hardware/radio/V1_0/CdmaSmsWriteArgs;)V +HSPLandroid/hardware/radio/V1_0/IRadio;->writeSmsToSim(ILandroid/hardware/radio/V1_0/SmsWriteArgs;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->callRing(IZLandroid/hardware/radio/V1_0/CdmaSignalInfoRecord;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->callStateChanged(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaCallWaiting(ILandroid/hardware/radio/V1_0/CdmaCallWaiting;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaInfoRec(ILandroid/hardware/radio/V1_0/CdmaInformationRecords;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaNewSms(ILandroid/hardware/radio/V1_0/CdmaSmsMessage;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaOtaProvisionStatus(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaPrlChanged(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaRuimSmsStorageFull(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cdmaSubscriptionSourceChanged(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->cellInfoList(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->currentSignalStrength(ILandroid/hardware/radio/V1_0/SignalStrength;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->dataCallListChanged(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->enterEmergencyCallbackMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->exitEmergencyCallbackMode(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->hardwareConfigChanged(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->imsNetworkStateChanged(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->indicateRingbackTone(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->lceData(ILandroid/hardware/radio/V1_0/LceDataInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->modemReset(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->networkStateChanged(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->newBroadcastSms(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->newSms(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->newSmsOnSim(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->newSmsStatusReport(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->nitzTimeReceived(ILjava/lang/String;J)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->onSupplementaryServiceIndication(ILandroid/hardware/radio/V1_0/StkCcUnsolSsResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->onUssd(IILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->pcoData(ILandroid/hardware/radio/V1_0/PcoDataInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->ping()V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->radioCapabilityIndication(ILandroid/hardware/radio/V1_0/RadioCapability;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->radioStateChanged(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->resendIncallMute(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->restrictedStateChanged(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->rilConnected(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->setHALInstrumentation()V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->simRefresh(ILandroid/hardware/radio/V1_0/SimRefreshResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->simSmsStorageFull(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->simStatusChanged(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->srvccStateNotify(II)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->stkCallControlAlphaNotify(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->stkCallSetup(IJ)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->stkEventNotify(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->stkProactiveCommand(ILjava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->stkSessionEnd(I)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->subscriptionStatusChanged(IZ)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->suppSvcNotify(ILandroid/hardware/radio/V1_0/SuppSvcNotification;)V +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/V1_0/IRadioIndication;->voiceRadioTechChanged(II)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->acceptCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->acknowledgeIncomingGsmSmsWithPduResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->acknowledgeLastIncomingCdmaSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->acknowledgeLastIncomingGsmSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->acknowledgeRequest(I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->cancelPendingUssdResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->changeIccPin2ForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->changeIccPinForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->conferenceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->deactivateDataCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->deleteSmsOnRuimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->deleteSmsOnSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->dialResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->exitEmergencyCallbackModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->explicitCallTransferResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getAllowedCarriersResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ZLandroid/hardware/radio/V1_0/CarrierRestrictions;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getAvailableBandModesResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getAvailableNetworksResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getBasebandVersionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCDMASubscriptionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCallForwardStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCallWaitingResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ZI)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCdmaBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCdmaRoamingPreferenceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCellInfoListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getClipResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getClirResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;II)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getCurrentCallsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getDataCallListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getDataRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/DataRegStateResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getDeviceIdentityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getFacilityLockForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getGsmBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getHardwareConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getIMSIForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getIccCardStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getImsRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ZI)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getLastCallFailCauseResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LastCallFailCauseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getModemActivityInfoResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/ActivityStatsInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getMuteResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Z)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getNeighboringCidsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getNetworkSelectionModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Z)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getOperatorResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getPreferredNetworkTypeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getPreferredVoicePrivacyResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Z)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getRadioCapabilityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/RadioCapability;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getSignalStrengthResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getSmscAddressResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getTTYModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getVoiceRadioTechnologyResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->getVoiceRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/VoiceRegStateResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->handleStkCallSetupRequestFromSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->hangupConnectionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->hangupForegroundResumeBackgroundResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->hangupWaitingOrBackgroundResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->iccCloseLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->iccIOForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->iccOpenLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->iccTransmitApduBasicChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->iccTransmitApduLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->nvReadItemResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->nvResetConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->nvWriteCdmaPrlResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->nvWriteItemResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->ping()V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->pullLceDataResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceDataInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->rejectCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->reportSmsMemoryStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->reportStkServiceIsRunningResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->requestIccSimAuthenticationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->requestIsimAuthenticationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->requestShutdownResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendBurstDtmfResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendCDMAFeatureCodeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendCdmaSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendDeviceStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendDtmfResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendEnvelopeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendEnvelopeWithStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendImsSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendSMSExpectMoreResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendTerminalResponseToSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->sendUssdResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->separateConnectionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setAllowedCarriersResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setBandModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setBarringPasswordResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCallForwardResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCallWaitingResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCdmaBroadcastActivationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCdmaBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCdmaRoamingPreferenceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setCellInfoListRateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setClirResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setDataAllowedResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setDataProfileResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setFacilityLockForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setGsmBroadcastActivationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setGsmBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setHALInstrumentation()V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setIndicationFilterResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setInitialAttachApnResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setLocationUpdatesResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setMuteResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setNetworkSelectionModeAutomaticResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setNetworkSelectionModeManualResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setPreferredNetworkTypeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setPreferredVoicePrivacyResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setRadioCapabilityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/RadioCapability;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setRadioPowerResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setSimCardPowerResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setSmscAddressResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setSuppServiceNotificationsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setTTYModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setUiccSubscriptionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->setupDataCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SetupDataCallResult;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->startDtmfResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->startLceServiceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->stopDtmfResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->stopLceServiceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->supplyIccPin2ForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->supplyIccPinForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->supplyIccPuk2ForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->supplyIccPukForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->supplyNetworkDepersonalizationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->switchWaitingOrHoldingAndActiveResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->writeSmsToRuimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/IRadioResponse;->writeSmsToSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLandroid/hardware/radio/V1_0/LceStatusInfo;->()V +HSPLandroid/hardware/radio/V1_0/LceStatusInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/LceStatusInfo;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/LteSignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/LteSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/RadioCapability;->()V +HSPLandroid/hardware/radio/V1_0/RadioCapability;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/RadioCapability;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/RadioResponseInfo;->()V +HSPLandroid/hardware/radio/V1_0/RadioResponseInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/RadioResponseInfo;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/RegState;->toString(I)Ljava/lang/String; +HSPLandroid/hardware/radio/V1_0/SignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/SignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/SignalStrength;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;->()V +HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->()V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V +HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->toString()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_1/IRadioIndication$Stub;->()V +HSPLandroid/hardware/radio/V1_1/IRadioIndication$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_1/IRadioIndication$Stub;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->carrierInfoForImsiEncryption(I)V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->keepaliveStatus(ILandroid/hardware/radio/V1_1/KeepaliveStatus;)V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->networkScanResult(ILandroid/hardware/radio/V1_1/NetworkScanResult;)V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->ping()V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->setHALInstrumentation()V +HSPLandroid/hardware/radio/V1_1/IRadioIndication;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/V1_1/IRadioResponse$Stub;->()V +HSPLandroid/hardware/radio/V1_1/IRadioResponse$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_1/IRadioResponse$Stub;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioResponse$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->ping()V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->setCarrierInfoForImsiEncryptionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->setHALInstrumentation()V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->setSimCardPowerResponse_1_1(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->startKeepaliveResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_1/KeepaliveStatus;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->startNetworkScanResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->stopKeepaliveResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->stopNetworkScanResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLandroid/hardware/radio/V1_1/IRadioResponse;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook$Proxy;->(Landroid/os/IHwBinder;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook$Proxy;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook$Proxy;->setResponseFunctions(Landroid/hardware/radio/deprecated/V1_0/IOemHookResponse;Landroid/hardware/radio/deprecated/V1_0/IOemHookIndication;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/deprecated/V1_0/IOemHook; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->getService(Ljava/lang/String;)Landroid/hardware/radio/deprecated/V1_0/IOemHook; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->ping()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->sendRequestRaw(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->sendRequestStrings(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->setHALInstrumentation()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->setResponseFunctions(Landroid/hardware/radio/deprecated/V1_0/IOemHookResponse;Landroid/hardware/radio/deprecated/V1_0/IOemHookIndication;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->oemHookRaw(ILjava/util/ArrayList;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->ping()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->setHALInstrumentation()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse$Stub;->()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->notifySyspropsChanged()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->ping()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->sendRequestRawResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->sendRequestStringsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->setHALInstrumentation()V +HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->()V +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback;->onError(I)V +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback;->onGenericSoundTriggerDetected(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback;->onRecognitionPaused()V +HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback;->onRecognitionResumed()V +HSPLandroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->(Landroid/content/pm/PackageManager;)V +HSPLandroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->getKeyphraseFromTypedArray(Landroid/content/res/TypedArray;Ljava/lang/String;Ljava/util/List;)Landroid/hardware/soundtrigger/KeyphraseMetadata; +HSPLandroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->getKeyphraseMetadata(Ljava/lang/String;Ljava/util/Locale;)Landroid/hardware/soundtrigger/KeyphraseMetadata; +HSPLandroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;->getKeyphraseMetadataFromApplicationInfo(Landroid/content/pm/PackageManager;Landroid/content/pm/ApplicationInfo;Ljava/util/List;)Landroid/hardware/soundtrigger/KeyphraseMetadata; +HSPLandroid/hardware/soundtrigger/KeyphraseMetadata;->(ILjava/lang/String;Landroid/util/ArraySet;I)V +HSPLandroid/hardware/soundtrigger/KeyphraseMetadata;->supportsLocale(Ljava/util/Locale;)Z +HSPLandroid/hardware/soundtrigger/KeyphraseMetadata;->supportsPhrase(Ljava/lang/String;)Z +HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->-wrap0(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V +HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HSPLandroid/hardware/usb/IUsbManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/hardware/usb/IUsbManager$Stub$Proxy;->getDeviceList(Landroid/os/Bundle;)V +HSPLandroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager; +HSPLandroid/hardware/usb/IUsbManager;->allowUsbDebugging(ZLjava/lang/String;)V +HSPLandroid/hardware/usb/IUsbManager;->clearDefaults(Ljava/lang/String;I)V +HSPLandroid/hardware/usb/IUsbManager;->clearUsbDebuggingKeys()V +HSPLandroid/hardware/usb/IUsbManager;->denyUsbDebugging()V +HSPLandroid/hardware/usb/IUsbManager;->getCurrentAccessory()Landroid/hardware/usb/UsbAccessory; +HSPLandroid/hardware/usb/IUsbManager;->getDeviceList(Landroid/os/Bundle;)V +HSPLandroid/hardware/usb/IUsbManager;->getPortStatus(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus; +HSPLandroid/hardware/usb/IUsbManager;->getPorts()[Landroid/hardware/usb/UsbPort; +HSPLandroid/hardware/usb/IUsbManager;->grantAccessoryPermission(Landroid/hardware/usb/UsbAccessory;I)V +HSPLandroid/hardware/usb/IUsbManager;->grantDevicePermission(Landroid/hardware/usb/UsbDevice;I)V +HSPLandroid/hardware/usb/IUsbManager;->hasAccessoryPermission(Landroid/hardware/usb/UsbAccessory;)Z +HSPLandroid/hardware/usb/IUsbManager;->hasDefaults(Ljava/lang/String;I)Z +HSPLandroid/hardware/usb/IUsbManager;->hasDevicePermission(Landroid/hardware/usb/UsbDevice;)Z +HSPLandroid/hardware/usb/IUsbManager;->isFunctionEnabled(Ljava/lang/String;)Z +HSPLandroid/hardware/usb/IUsbManager;->openAccessory(Landroid/hardware/usb/UsbAccessory;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/hardware/usb/IUsbManager;->openDevice(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/hardware/usb/IUsbManager;->requestAccessoryPermission(Landroid/hardware/usb/UsbAccessory;Ljava/lang/String;Landroid/app/PendingIntent;)V +HSPLandroid/hardware/usb/IUsbManager;->requestDevicePermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Landroid/app/PendingIntent;)V +HSPLandroid/hardware/usb/IUsbManager;->setAccessoryPackage(Landroid/hardware/usb/UsbAccessory;Ljava/lang/String;I)V +HSPLandroid/hardware/usb/IUsbManager;->setCurrentFunction(Ljava/lang/String;Z)V +HSPLandroid/hardware/usb/IUsbManager;->setDevicePackage(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;I)V +HSPLandroid/hardware/usb/IUsbManager;->setPortRoles(Ljava/lang/String;II)V +HSPLandroid/hardware/usb/IUsbManager;->setUsbDeviceConnectionHandler(Landroid/content/ComponentName;)V +HSPLandroid/hardware/usb/UsbManager;->(Landroid/content/Context;Landroid/hardware/usb/IUsbManager;)V +HSPLandroid/hardware/usb/UsbManager;->getDeviceList()Ljava/util/HashMap; +HSPLandroid/hidl/base/V1_0/IBase;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hidl/base/V1_0/IBase;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hidl/base/V1_0/IBase;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hidl/base/V1_0/IBase;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hidl/base/V1_0/IBase;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hidl/base/V1_0/IBase;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hidl/base/V1_0/IBase;->notifySyspropsChanged()V +HSPLandroid/hidl/base/V1_0/IBase;->ping()V +HSPLandroid/hidl/base/V1_0/IBase;->setHALInstrumentation()V +HSPLandroid/hidl/base/V1_0/IBase;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->(Landroid/os/IHwBinder;)V +HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->registerForNotifications(Ljava/lang/String;Ljava/lang/String;Landroid/hidl/manager/V1_0/IServiceNotification;)Z +HSPLandroid/hidl/manager/V1_0/IServiceManager;->add(Ljava/lang/String;Landroid/hidl/base/V1_0/IBase;)Z +HSPLandroid/hidl/manager/V1_0/IServiceManager;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/manager/V1_0/IServiceManager; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->debugDump()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->get(Ljava/lang/String;Ljava/lang/String;)Landroid/hidl/base/V1_0/IBase; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->getService()Landroid/hidl/manager/V1_0/IServiceManager; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->getTransport(Ljava/lang/String;Ljava/lang/String;)B +HSPLandroid/hidl/manager/V1_0/IServiceManager;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hidl/manager/V1_0/IServiceManager;->list()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->listByInterface(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceManager;->notifySyspropsChanged()V +HSPLandroid/hidl/manager/V1_0/IServiceManager;->ping()V +HSPLandroid/hidl/manager/V1_0/IServiceManager;->registerForNotifications(Ljava/lang/String;Ljava/lang/String;Landroid/hidl/manager/V1_0/IServiceNotification;)Z +HSPLandroid/hidl/manager/V1_0/IServiceManager;->registerPassthroughClient(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/hidl/manager/V1_0/IServiceManager;->setHALInstrumentation()V +HSPLandroid/hidl/manager/V1_0/IServiceManager;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->()V +HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->getHashChain()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->interfaceChain()Ljava/util/ArrayList; +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->interfaceDescriptor()Ljava/lang/String; +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->notifySyspropsChanged()V +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->ping()V +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->setHALInstrumentation()V +HSPLandroid/hidl/manager/V1_0/IServiceNotification;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/icu/impl/BMPSet;->([II)V +HSPLandroid/icu/impl/BMPSet;->contains(I)Z +HSPLandroid/icu/impl/BMPSet;->containsSlow(III)Z +HSPLandroid/icu/impl/BMPSet;->findCodePoint(III)I +HSPLandroid/icu/impl/BMPSet;->initBits()V +HSPLandroid/icu/impl/BMPSet;->set32x64Bits([III)V +HSPLandroid/icu/impl/CacheBase;->()V +HSPLandroid/icu/impl/CacheBase;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z +HSPLandroid/icu/impl/CacheValue$SoftValue;->(Ljava/lang/Object;)V +HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object; +HSPLandroid/icu/impl/CacheValue;->()V +HSPLandroid/icu/impl/CacheValue;->futureInstancesWillBeStrong()Z +HSPLandroid/icu/impl/CacheValue;->get()Ljava/lang/Object; +HSPLandroid/icu/impl/CacheValue;->getInstance(Ljava/lang/Object;)Landroid/icu/impl/CacheValue; +HSPLandroid/icu/impl/CacheValue;->isNull()Z +HSPLandroid/icu/impl/CacheValue;->resetIfCleared(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->-get0()Landroid/icu/impl/CalendarUtil$CalendarPreferences; +HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->()V +HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->getCalendarTypeForRegion(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/impl/CalendarUtil;->getCalendarType(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/impl/CaseMapImpl$StringContextIterator;->(Ljava/lang/CharSequence;)V +HSPLandroid/icu/impl/CaseMapImpl$StringContextIterator;->getCPLength()I +HSPLandroid/icu/impl/CaseMapImpl$StringContextIterator;->nextCaseMapCP()I +HSPLandroid/icu/impl/CaseMapImpl;->appendCodePoint(Ljava/lang/Appendable;I)I +HSPLandroid/icu/impl/CaseMapImpl;->appendResult(ILjava/lang/Appendable;IILandroid/icu/text/Edits;)V +HSPLandroid/icu/impl/CaseMapImpl;->toUpper(IILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; +HSPLandroid/icu/impl/CharTrie;->(Ljava/nio/ByteBuffer;Landroid/icu/impl/Trie$DataManipulate;)V +HSPLandroid/icu/impl/CharTrie;->unserialize(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/ClassLoaderUtil;->getClassLoader(Ljava/lang/Class;)Ljava/lang/ClassLoader; +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfo;->()V +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfo;->getFormatInfo(Ljava/lang/String;)Landroid/icu/impl/CurrencyData$CurrencyFormatInfo; +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfo;->getSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfo;->getUnitPatterns()Ljava/util/Map; +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; +HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider;->hasData()Z +HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->()V +HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->getAfterSymbols()[Ljava/lang/String; +HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->getBeforeSymbols()[Ljava/lang/String; +HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->setSymbolIfNull(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType;Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;Ljava/lang/String;)V +HSPLandroid/icu/impl/DateNumberFormat;->(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/impl/DateNumberFormat;->getDigits()[C +HSPLandroid/icu/impl/DateNumberFormat;->initialize(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I +HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I +HSPLandroid/icu/impl/Grego;->fieldsToDay(III)J +HSPLandroid/icu/impl/Grego;->floorDivide(JJ)J +HSPLandroid/icu/impl/Grego;->floorDivide(JJ[J)J +HSPLandroid/icu/impl/Grego;->isLeapYear(I)Z +HSPLandroid/icu/impl/Grego;->monthLength(II)I +HSPLandroid/icu/impl/Grego;->previousMonthLength(II)I +HSPLandroid/icu/impl/Grego;->timeToFields(J[I)[I +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->binarySearch(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getData(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBuffer;I)I +HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I +HSPLandroid/icu/impl/ICUBinary$DataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUBinary$DataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->addBaseNamesInFileFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I +HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I +HSPLandroid/icu/impl/ICUBinary;->getChars(Ljava/nio/ByteBuffer;II)[C +HSPLandroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Z)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->getDataFromFile(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->getInts(Ljava/nio/ByteBuffer;II)[I +HSPLandroid/icu/impl/ICUBinary;->getLongs(Ljava/nio/ByteBuffer;II)[J +HSPLandroid/icu/impl/ICUBinary;->getRequiredData(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUBinary;->getShorts(Ljava/nio/ByteBuffer;II)[S +HSPLandroid/icu/impl/ICUBinary;->getString(Ljava/nio/ByteBuffer;II)Ljava/lang/String; +HSPLandroid/icu/impl/ICUBinary;->getVersionByteArrayFromCompactInt(I)[B +HSPLandroid/icu/impl/ICUBinary;->getVersionInfoFromCompactInt(I)Landroid/icu/util/VersionInfo; +HSPLandroid/icu/impl/ICUBinary;->readHeader(Ljava/nio/ByteBuffer;ILandroid/icu/impl/ICUBinary$Authenticate;)I +HSPLandroid/icu/impl/ICUBinary;->readHeaderAndDataVersion(Ljava/nio/ByteBuffer;ILandroid/icu/impl/ICUBinary$Authenticate;)Landroid/icu/util/VersionInfo; +HSPLandroid/icu/impl/ICUBinary;->skipBytes(Ljava/nio/ByteBuffer;I)V +HSPLandroid/icu/impl/ICUBinary;->sliceWithOrder(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/ICUCache;->clear()V +HSPLandroid/icu/impl/ICUCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/icu/impl/ICUConfig;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink;->(Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;)V +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink;->(Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink;)V +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink;->getSpacingInfo(Z)Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->(Landroid/icu/impl/ICUResourceBundle;Z)V +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getFormatInfo(Ljava/lang/String;)Landroid/icu/impl/CurrencyData$CurrencyFormatInfo; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getName(Ljava/lang/String;Z)Ljava/lang/String; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSymbol(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; +HSPLandroid/icu/impl/ICUCurrencyMetaInfo$Collector;->collect(Ljava/lang/String;Ljava/lang/String;JJIZ)V +HSPLandroid/icu/impl/ICUCurrencyMetaInfo$Collector;->collects()I +HSPLandroid/icu/impl/ICUCurrencyMetaInfo$Collector;->getList()Ljava/util/List; +HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; +HSPLandroid/icu/impl/ICUData;->checkStreamForBinaryData(Ljava/io/InputStream;Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUData;->getStream(Ljava/lang/ClassLoader;Ljava/lang/String;Z)Ljava/io/InputStream; +HSPLandroid/icu/impl/ICUDebug;->enabled(Ljava/lang/String;)Z +HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->()V +HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->getSupportedIDs()Ljava/util/Set; +HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->loader()Ljava/lang/ClassLoader; +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->createWithCanonical(Landroid/icu/util/ULocale;Ljava/lang/String;I)Landroid/icu/impl/ICULocaleService$LocaleKey; +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentDescriptor()Ljava/lang/String; +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentID()Ljava/lang/String; +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentLocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->kind()I +HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->prefix()Ljava/lang/String; +HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;->(Z)V +HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;->create(Landroid/icu/impl/ICUService$Key;Landroid/icu/impl/ICUService;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;->handlesKey(Landroid/icu/impl/ICUService$Key;)Z +HSPLandroid/icu/impl/ICULocaleService;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/ICULocaleService;->createKey(Landroid/icu/util/ULocale;I)Landroid/icu/impl/ICUService$Key; +HSPLandroid/icu/impl/ICULocaleService;->get(Landroid/icu/util/ULocale;I[Landroid/icu/util/ULocale;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICULocaleService;->get(Landroid/icu/util/ULocale;[Landroid/icu/util/ULocale;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICULocaleService;->validateFallbackLocale()Ljava/lang/String; +HSPLandroid/icu/impl/ICUNotifier;->()V +HSPLandroid/icu/impl/ICUNotifier;->acceptsListener(Ljava/util/EventListener;)Z +HSPLandroid/icu/impl/ICUNotifier;->notifyChanged()V +HSPLandroid/icu/impl/ICUNotifier;->notifyListener(Ljava/util/EventListener;)V +HSPLandroid/icu/impl/ICURWLock;->()V +HSPLandroid/icu/impl/ICURWLock;->acquireRead()V +HSPLandroid/icu/impl/ICURWLock;->acquireWrite()V +HSPLandroid/icu/impl/ICURWLock;->releaseRead()V +HSPLandroid/icu/impl/ICURWLock;->releaseWrite()V +HSPLandroid/icu/impl/ICUResourceBundle$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundle$1;->createInstance(Ljava/lang/String;Landroid/icu/impl/ICUResourceBundle$Loader;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle$2;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundle$2;->createInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry; +HSPLandroid/icu/impl/ICUResourceBundle$3$1;->(Landroid/icu/impl/ICUResourceBundle$3;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUResourceBundle$3;->(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUResourceBundle$3;->run()Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundle$3;->run()Ljava/lang/Void; +HSPLandroid/icu/impl/ICUResourceBundle$4;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUResourceBundle$4;->load()Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle$AvailEntry;->(Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLandroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set; +HSPLandroid/icu/impl/ICUResourceBundle$Loader;->()V +HSPLandroid/icu/impl/ICUResourceBundle$Loader;->(Landroid/icu/impl/ICUResourceBundle$Loader;)V +HSPLandroid/icu/impl/ICUResourceBundle$Loader;->load()Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle$WholeBundle;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V +HSPLandroid/icu/impl/ICUResourceBundle;->-get0()Z +HSPLandroid/icu/impl/ICUResourceBundle;->-wrap0(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->-wrap2(Landroid/icu/impl/ICUResourceBundle;)Z +HSPLandroid/icu/impl/ICUResourceBundle;->-wrap4(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; +HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V +HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V +HSPLandroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I +HSPLandroid/icu/impl/ICUResourceBundle;->createBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->createFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; +HSPLandroid/icu/impl/ICUResourceBundle;->equals(Ljava/lang/Object;)Z +HSPLandroid/icu/impl/ICUResourceBundle;->findResourceWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->findResourceWithFallback([Ljava/lang/String;ILandroid/icu/impl/ICUResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->findWithFallback(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->get(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getAliasedResource(Landroid/icu/impl/ICUResourceBundle;[Ljava/lang/String;ILjava/lang/String;ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;Landroid/icu/impl/UResource$Sink;)V +HSPLandroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Ljava/lang/String;Landroid/icu/impl/UResource$Sink;)V +HSPLandroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry; +HSPLandroid/icu/impl/ICUResourceBundle;->getBaseName()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; +HSPLandroid/icu/impl/ICUResourceBundle;->getKey()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->getLocale()Ljava/util/Locale; +HSPLandroid/icu/impl/ICUResourceBundle;->getLocaleID()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->getNoFallback()Z +HSPLandroid/icu/impl/ICUResourceBundle;->getParent()Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getParent()Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getResDepth()I +HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys(Ljava/lang/String;I[Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundle;->getStringWithFallback(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundle;->getULocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/impl/ICUResourceBundle;->getWithFallback(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->setParent(Ljava/util/ResourceBundle;)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getStringArray()[Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGetStringArray()[Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->getBinary([B)[B +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getContainerResource(I)I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getSize()I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getString(I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->getInt()I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getString()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getType()I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->findString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->getType()I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleImpl;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V +HSPLandroid/icu/impl/ICUResourceBundleImpl;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl;->createBundleObject(Ljava/lang/String;ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl;->getResource()I +HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->(Landroid/icu/impl/ICUResourceBundleReader;I)V +HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->(Landroid/icu/impl/ICUResourceBundleReader;I)V +HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->()V +HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->()V +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I +HSPLandroid/icu/impl/ICUResourceBundleReader$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->hashCode()I +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->()V +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getAliasString()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getArray()Landroid/icu/impl/UResource$Array; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getString()Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray()[Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArrayOrStringAsArray()[Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getTable()Landroid/icu/impl/UResource$Table; +HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getType()I +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->(II)V +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->-wrap0(I)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->(I)V +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->(Landroid/icu/impl/ICUResourceBundleReader;I)V +HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->(Landroid/icu/impl/ICUResourceBundleReader;I)V +HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->()V +HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getKeyAndValue(ILandroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)Z +HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-get0()Landroid/icu/impl/ICUResourceBundleReader; +HSPLandroid/icu/impl/ICUResourceBundleReader;->-get1()[I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-get2(Landroid/icu/impl/ICUResourceBundleReader;)Ljava/nio/CharBuffer; +HSPLandroid/icu/impl/ICUResourceBundleReader;->-get3(Landroid/icu/impl/ICUResourceBundleReader;)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-get4(Landroid/icu/impl/ICUResourceBundleReader;)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap1(Landroid/icu/impl/ICUResourceBundleReader;I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap11(Landroid/icu/impl/ICUResourceBundleReader;ILandroid/icu/impl/UResource$Key;)V +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap2(Landroid/icu/impl/ICUResourceBundleReader;I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap3(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap6(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;C)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap7(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap8(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->-wrap9(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLandroid/icu/impl/ICUResourceBundleReader;->(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V +HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_INT(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_OFFSET(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_TYPE(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->URES_IS_ARRAY(I)Z +HSPLandroid/icu/impl/ICUResourceBundleReader;->URES_IS_TABLE(I)Z +HSPLandroid/icu/impl/ICUResourceBundleReader;->compareKeys(Ljava/lang/CharSequence;C)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B +HSPLandroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z +HSPLandroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getRootResource()I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->makeStringFromBytes(II)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey16(ILandroid/icu/impl/UResource$Key;)V +HSPLandroid/icu/impl/ICUService$CacheEntry;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLandroid/icu/impl/ICUService$Factory;->create(Landroid/icu/impl/ICUService$Key;Landroid/icu/impl/ICUService;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUService$Factory;->getDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUService$Factory;->updateVisibleIDs(Ljava/util/Map;)V +HSPLandroid/icu/impl/ICUService$Key;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUService;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/ICUService;->clearCaches()V +HSPLandroid/icu/impl/ICUService;->clearServiceCache()V +HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;Landroid/icu/impl/ICUService$Factory;)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUService;->isDefault()Z +HSPLandroid/icu/impl/ICUService;->markDefault()V +HSPLandroid/icu/impl/ICUService;->registerFactory(Landroid/icu/impl/ICUService$Factory;)Landroid/icu/impl/ICUService$Factory; +HSPLandroid/icu/impl/IDNA2003;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->getSeparatorIndex([CII)I +HSPLandroid/icu/impl/IDNA2003;->isLDHChar(I)Z +HSPLandroid/icu/impl/IDNA2003;->isLabelSeparator(I)Z +HSPLandroid/icu/impl/LocaleIDParser;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/LocaleIDParser;->(Ljava/lang/String;Z)V +HSPLandroid/icu/impl/LocaleIDParser;->addSeparator()V +HSPLandroid/icu/impl/LocaleIDParser;->append(C)V +HSPLandroid/icu/impl/LocaleIDParser;->atTerminator()Z +HSPLandroid/icu/impl/LocaleIDParser;->getBaseName()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getCountry()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywordMap()Ljava/util/Map; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator; +HSPLandroid/icu/impl/LocaleIDParser;->getLanguage()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getName()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getScript()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getString(I)Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->getVariant()Ljava/lang/String; +HSPLandroid/icu/impl/LocaleIDParser;->haveExperimentalLanguagePrefix()Z +HSPLandroid/icu/impl/LocaleIDParser;->isTerminator(C)Z +HSPLandroid/icu/impl/LocaleIDParser;->isTerminatorOrIDSeparator(C)Z +HSPLandroid/icu/impl/LocaleIDParser;->next()C +HSPLandroid/icu/impl/LocaleIDParser;->parseBaseName()V +HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I +HSPLandroid/icu/impl/LocaleIDParser;->parseKeywords()I +HSPLandroid/icu/impl/LocaleIDParser;->parseLanguage()I +HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I +HSPLandroid/icu/impl/LocaleIDParser;->parseVariant()I +HSPLandroid/icu/impl/LocaleIDParser;->reset()V +HSPLandroid/icu/impl/LocaleIDParser;->set(ILjava/lang/String;)V +HSPLandroid/icu/impl/LocaleIDParser;->setToKeywordStart()Z +HSPLandroid/icu/impl/LocaleIDParser;->skipCountry()V +HSPLandroid/icu/impl/LocaleIDParser;->skipLanguage()V +HSPLandroid/icu/impl/LocaleIDParser;->skipScript()V +HSPLandroid/icu/impl/LocaleIDParser;->skipUntilTerminatorOrIDSeparator()V +HSPLandroid/icu/impl/LocaleIDs;->findIndex([Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/icu/impl/LocaleIDs;->threeToTwoLetterLanguage(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/Norm2AllModes$1;->()V +HSPLandroid/icu/impl/Norm2AllModes$ComposeNormalizer2;->(Landroid/icu/impl/Normalizer2Impl;Z)V +HSPLandroid/icu/impl/Norm2AllModes$ComposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->(Landroid/icu/impl/Normalizer2Impl;)V +HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/Norm2AllModes$FCDNormalizer2;->(Landroid/icu/impl/Normalizer2Impl;)V +HSPLandroid/icu/impl/Norm2AllModes$NFCSingleton;->-get0()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; +HSPLandroid/icu/impl/Norm2AllModes$NFKCSingleton;->-get0()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; +HSPLandroid/icu/impl/Norm2AllModes$NoopNormalizer2;->()V +HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-get0(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes; +HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-get1(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Ljava/lang/RuntimeException; +HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->(Ljava/lang/String;Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)V +HSPLandroid/icu/impl/Norm2AllModes$Normalizer2WithImpl;->(Landroid/icu/impl/Normalizer2Impl;)V +HSPLandroid/icu/impl/Norm2AllModes;->(Landroid/icu/impl/Normalizer2Impl;)V +HSPLandroid/icu/impl/Norm2AllModes;->(Landroid/icu/impl/Normalizer2Impl;Landroid/icu/impl/Norm2AllModes;)V +HSPLandroid/icu/impl/Norm2AllModes;->getInstanceFromSingleton(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes; +HSPLandroid/icu/impl/Norm2AllModes;->getNFCInstance()Landroid/icu/impl/Norm2AllModes; +HSPLandroid/icu/impl/Norm2AllModes;->getNFKCInstance()Landroid/icu/impl/Norm2AllModes; +HSPLandroid/icu/impl/Normalizer2Impl$1;->()V +HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;->()V +HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;->(Landroid/icu/impl/Normalizer2Impl$IsAcceptable;)V +HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/Normalizer2Impl;->()V +HSPLandroid/icu/impl/Normalizer2Impl;->addLcccChars(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I +HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I +HSPLandroid/icu/impl/Normalizer2Impl;->enumLcccRange(IIILandroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/impl/Normalizer2Impl;->getFCD16(I)I +HSPLandroid/icu/impl/Normalizer2Impl;->getFCD16FromNormData(I)I +HSPLandroid/icu/impl/Normalizer2Impl;->getNorm16(I)I +HSPLandroid/icu/impl/Normalizer2Impl;->isAlgorithmicNoNo(I)Z +HSPLandroid/icu/impl/Normalizer2Impl;->isDecompNoAlgorithmic(I)Z +HSPLandroid/icu/impl/Normalizer2Impl;->load(Ljava/lang/String;)Landroid/icu/impl/Normalizer2Impl; +HSPLandroid/icu/impl/Normalizer2Impl;->load(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Normalizer2Impl; +HSPLandroid/icu/impl/Normalizer2Impl;->singleLeadMightHaveNonZeroFCD16(I)Z +HSPLandroid/icu/impl/OlsonTimeZone;->(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V +HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; +HSPLandroid/icu/impl/OlsonTimeZone;->construct(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)V +HSPLandroid/icu/impl/OlsonTimeZone;->freeze()Landroid/icu/util/TimeZone; +HSPLandroid/icu/impl/OlsonTimeZone;->getInt(B)I +HSPLandroid/icu/impl/OlsonTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; +HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/impl/OlsonTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; +HSPLandroid/icu/impl/OlsonTimeZone;->initTransitionRules()V +HSPLandroid/icu/impl/OlsonTimeZone;->initialDstOffset()I +HSPLandroid/icu/impl/OlsonTimeZone;->initialRawOffset()I +HSPLandroid/icu/impl/OlsonTimeZone;->loadRule(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/PatternProps;->isWhiteSpace(I)Z +HSPLandroid/icu/impl/PatternProps;->skipWhiteSpace(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/impl/PatternTokenizer;->()V +HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I +HSPLandroid/icu/impl/PatternTokenizer;->quoteLiteral(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/PatternTokenizer;->setExtraQuotingCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer; +HSPLandroid/icu/impl/PatternTokenizer;->setPattern(Ljava/lang/String;)Landroid/icu/impl/PatternTokenizer; +HSPLandroid/icu/impl/PatternTokenizer;->setSyntaxCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer; +HSPLandroid/icu/impl/PatternTokenizer;->setUsingQuote(Z)Landroid/icu/impl/PatternTokenizer; +HSPLandroid/icu/impl/PluralRulesLoader;->()V +HSPLandroid/icu/impl/PluralRulesLoader;->checkBuildRulesIdMaps()V +HSPLandroid/icu/impl/PluralRulesLoader;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/impl/PluralRulesLoader;->getLocaleIdToRulesIdMap(Landroid/icu/text/PluralRules$PluralType;)Ljava/util/Map; +HSPLandroid/icu/impl/PluralRulesLoader;->getPluralBundle()Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/PluralRulesLoader;->getRulesForRulesId(Ljava/lang/String;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/impl/PluralRulesLoader;->getRulesIdForLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Ljava/lang/String; +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->(Ljava/lang/String;)V +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getLength()I +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->next()I +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V +HSPLandroid/icu/impl/RuleCharacterIterator;->(Ljava/lang/String;Landroid/icu/text/SymbolTable;Ljava/text/ParsePosition;)V +HSPLandroid/icu/impl/RuleCharacterIterator;->_advance(I)V +HSPLandroid/icu/impl/RuleCharacterIterator;->_current()I +HSPLandroid/icu/impl/RuleCharacterIterator;->atEnd()Z +HSPLandroid/icu/impl/RuleCharacterIterator;->getPos(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/RuleCharacterIterator;->inVariable()Z +HSPLandroid/icu/impl/RuleCharacterIterator;->isEscaped()Z +HSPLandroid/icu/impl/RuleCharacterIterator;->jumpahead(I)V +HSPLandroid/icu/impl/RuleCharacterIterator;->lookahead()Ljava/lang/String; +HSPLandroid/icu/impl/RuleCharacterIterator;->next(I)I +HSPLandroid/icu/impl/RuleCharacterIterator;->setPos(Ljava/lang/Object;)V +HSPLandroid/icu/impl/RuleCharacterIterator;->skipIgnored(I)V +HSPLandroid/icu/impl/SimpleCache;->()V +HSPLandroid/icu/impl/SimpleCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/SimpleCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/icu/impl/SimpleFormatterImpl;->compileToStringMinMaxArguments(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;II)Ljava/lang/String; +HSPLandroid/icu/impl/SimpleFormatterImpl;->format(Ljava/lang/String;[Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Ljava/lang/String;Z[I)Ljava/lang/StringBuilder; +HSPLandroid/icu/impl/SimpleFormatterImpl;->formatAndAppend(Ljava/lang/String;Ljava/lang/StringBuilder;[I[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder; +HSPLandroid/icu/impl/SimpleFormatterImpl;->getArgumentLimit(Ljava/lang/String;)I +HSPLandroid/icu/impl/SoftCache;->()V +HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/StandardPlural;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/icu/impl/StandardPlural;->fromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/impl/StandardPlural;->indexFromString(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/StandardPlural;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/impl/StandardPlural;->orOtherFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/impl/StandardPlural;->values()[Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/impl/StringPrepDataReader;->(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/StringPrepDataReader;->getUnicodeVersion()[B +HSPLandroid/icu/impl/StringPrepDataReader;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/StringPrepDataReader;->read(I)[C +HSPLandroid/icu/impl/StringPrepDataReader;->readIndexes(I)[I +HSPLandroid/icu/impl/Trie$DataManipulate;->getFoldingOffset(I)I +HSPLandroid/icu/impl/Trie$DefaultGetFoldingOffset;->()V +HSPLandroid/icu/impl/Trie$DefaultGetFoldingOffset;->(Landroid/icu/impl/Trie$DefaultGetFoldingOffset;)V +HSPLandroid/icu/impl/Trie2$1;->()V +HSPLandroid/icu/impl/Trie2$1;->map(I)I +HSPLandroid/icu/impl/Trie2$Range;->()V +HSPLandroid/icu/impl/Trie2$Trie2Iterator;->(Landroid/icu/impl/Trie2;Landroid/icu/impl/Trie2$ValueMapper;)V +HSPLandroid/icu/impl/Trie2$Trie2Iterator;->hasNext()Z +HSPLandroid/icu/impl/Trie2$Trie2Iterator;->next()Landroid/icu/impl/Trie2$Range; +HSPLandroid/icu/impl/Trie2$Trie2Iterator;->next()Ljava/lang/Object; +HSPLandroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I +HSPLandroid/icu/impl/Trie2$UTrie2Header;->()V +HSPLandroid/icu/impl/Trie2$ValueMapper;->map(I)I +HSPLandroid/icu/impl/Trie2$ValueWidth;->(Ljava/lang/String;I)V +HSPLandroid/icu/impl/Trie2$ValueWidth;->values()[Landroid/icu/impl/Trie2$ValueWidth; +HSPLandroid/icu/impl/Trie2;->-getandroid-icu-impl-Trie2$ValueWidthSwitchesValues()[I +HSPLandroid/icu/impl/Trie2;->()V +HSPLandroid/icu/impl/Trie2;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2; +HSPLandroid/icu/impl/Trie2;->get(I)I +HSPLandroid/icu/impl/Trie2;->getFromU16SingleLead(C)I +HSPLandroid/icu/impl/Trie2;->iterator()Ljava/util/Iterator; +HSPLandroid/icu/impl/Trie2;->iterator(Landroid/icu/impl/Trie2$ValueMapper;)Ljava/util/Iterator; +HSPLandroid/icu/impl/Trie2_16;->()V +HSPLandroid/icu/impl/Trie2_16;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2_16; +HSPLandroid/icu/impl/Trie2_16;->get(I)I +HSPLandroid/icu/impl/Trie2_16;->getFromU16SingleLead(C)I +HSPLandroid/icu/impl/Trie2_16;->getSerializedLength()I +HSPLandroid/icu/impl/Trie2_16;->rangeEnd(III)I +HSPLandroid/icu/impl/Trie2_32;->()V +HSPLandroid/icu/impl/Trie2_32;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2_32; +HSPLandroid/icu/impl/Trie2_32;->get(I)I +HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I +HSPLandroid/icu/impl/Trie2_32;->getSerializedLength()I +HSPLandroid/icu/impl/Trie;->(Ljava/nio/ByteBuffer;Landroid/icu/impl/Trie$DataManipulate;)V +HSPLandroid/icu/impl/Trie;->checkHeader(I)Z +HSPLandroid/icu/impl/Trie;->getInitialValue()I +HSPLandroid/icu/impl/Trie;->getSurrogateOffset(CC)I +HSPLandroid/icu/impl/Trie;->getValue(I)I +HSPLandroid/icu/impl/Trie;->isCharTrie()Z +HSPLandroid/icu/impl/UBiDiProps$IsAcceptable;->()V +HSPLandroid/icu/impl/UBiDiProps$IsAcceptable;->(Landroid/icu/impl/UBiDiProps$IsAcceptable;)V +HSPLandroid/icu/impl/UBiDiProps$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/UBiDiProps;->()V +HSPLandroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/UCaseProps$ContextIterator;->next()I +HSPLandroid/icu/impl/UCaseProps$ContextIterator;->reset(I)V +HSPLandroid/icu/impl/UCaseProps$IsAcceptable;->()V +HSPLandroid/icu/impl/UCaseProps$IsAcceptable;->(Landroid/icu/impl/UCaseProps$IsAcceptable;)V +HSPLandroid/icu/impl/UCaseProps$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/UCaseProps;->()V +HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I +HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/util/Locale;)I +HSPLandroid/icu/impl/UCaseProps;->getDelta(I)I +HSPLandroid/icu/impl/UCaseProps;->getExceptionsOffset(I)I +HSPLandroid/icu/impl/UCaseProps;->getSlotValue(III)I +HSPLandroid/icu/impl/UCaseProps;->getTypeFromProps(I)I +HSPLandroid/icu/impl/UCaseProps;->hasSlot(II)Z +HSPLandroid/icu/impl/UCaseProps;->propsHasException(I)Z +HSPLandroid/icu/impl/UCaseProps;->readData(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/UCaseProps;->slotOffset(II)B +HSPLandroid/icu/impl/UCaseProps;->toFullUpper(ILandroid/icu/impl/UCaseProps$ContextIterator;Ljava/lang/Appendable;I)I +HSPLandroid/icu/impl/UCaseProps;->toUpperOrTitle(ILandroid/icu/impl/UCaseProps$ContextIterator;Ljava/lang/Appendable;IZ)I +HSPLandroid/icu/impl/UCharacterProperty$10;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$11;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$12;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$13;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;)V +HSPLandroid/icu/impl/UCharacterProperty$14;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$15;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$16;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;)V +HSPLandroid/icu/impl/UCharacterProperty$17;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;)V +HSPLandroid/icu/impl/UCharacterProperty$18;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$19;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;III)V +HSPLandroid/icu/impl/UCharacterProperty$19;->getValue(I)I +HSPLandroid/icu/impl/UCharacterProperty$1;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$20;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$21;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$22;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$23;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;)V +HSPLandroid/icu/impl/UCharacterProperty$2;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$3;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$4;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$5;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$6;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$7;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$8;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$9;->(Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$BiDiIntProperty;->(Landroid/icu/impl/UCharacterProperty;)V +HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;->(Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;->(Landroid/icu/impl/UCharacterProperty;II)V +HSPLandroid/icu/impl/UCharacterProperty$CaseBinaryProperty;->(Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$CombiningClassIntProperty;->(Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->(Landroid/icu/impl/UCharacterProperty;I)V +HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->(Landroid/icu/impl/UCharacterProperty;III)V +HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->getSource()I +HSPLandroid/icu/impl/UCharacterProperty$IsAcceptable;->()V +HSPLandroid/icu/impl/UCharacterProperty$IsAcceptable;->(Landroid/icu/impl/UCharacterProperty$IsAcceptable;)V +HSPLandroid/icu/impl/UCharacterProperty$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/UCharacterProperty$NormInertBinaryProperty;->(Landroid/icu/impl/UCharacterProperty;II)V +HSPLandroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty;->(Landroid/icu/impl/UCharacterProperty;III)V +HSPLandroid/icu/impl/UCharacterProperty;->()V +HSPLandroid/icu/impl/UCharacterProperty;->addPropertyStarts(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getAdditional(II)I +HSPLandroid/icu/impl/UCharacterProperty;->getEuropeanDigit(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getIntPropertyValue(II)I +HSPLandroid/icu/impl/UCharacterProperty;->getMask(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getNumericTypeValue(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getSource(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I +HSPLandroid/icu/impl/UCharacterProperty;->upropsvec_addPropertyStarts(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;->()V +HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;->(Landroid/icu/impl/UPropertyAliases$IsAcceptable;)V +HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/UPropertyAliases;->()V +HSPLandroid/icu/impl/UPropertyAliases;->asciiToLowercase(I)I +HSPLandroid/icu/impl/UPropertyAliases;->containsName(Landroid/icu/util/BytesTrie;Ljava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UPropertyAliases;->findProperty(I)I +HSPLandroid/icu/impl/UPropertyAliases;->getPropertyEnum(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/UPropertyAliases;->getPropertyOrValueEnum(ILjava/lang/CharSequence;)I +HSPLandroid/icu/impl/UPropertyAliases;->getPropertyValueEnum(ILjava/lang/CharSequence;)I +HSPLandroid/icu/impl/UPropertyAliases;->load(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/impl/URLHandler$URLVisitor;->visit(Ljava/lang/String;)V +HSPLandroid/icu/impl/UResource$Array;->getSize()I +HSPLandroid/icu/impl/UResource$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z +HSPLandroid/icu/impl/UResource$Key;->()V +HSPLandroid/icu/impl/UResource$Key;->charAt(I)C +HSPLandroid/icu/impl/UResource$Key;->contentEquals(Ljava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UResource$Key;->endsWith(Ljava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UResource$Key;->internalSubString(II)Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Key;->length()I +HSPLandroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z +HSPLandroid/icu/impl/UResource$Key;->setBytes([BI)Landroid/icu/impl/UResource$Key; +HSPLandroid/icu/impl/UResource$Key;->setString(Ljava/lang/String;)Landroid/icu/impl/UResource$Key; +HSPLandroid/icu/impl/UResource$Key;->setToEmpty()Landroid/icu/impl/UResource$Key; +HSPLandroid/icu/impl/UResource$Key;->startsWith(Ljava/lang/CharSequence;)Z +HSPLandroid/icu/impl/UResource$Key;->toString()Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Sink;->()V +HSPLandroid/icu/impl/UResource$Table;->getKeyAndValue(ILandroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)Z +HSPLandroid/icu/impl/UResource$Table;->getSize()I +HSPLandroid/icu/impl/UResource$Value;->()V +HSPLandroid/icu/impl/UResource$Value;->getAliasString()Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Value;->getArray()Landroid/icu/impl/UResource$Array; +HSPLandroid/icu/impl/UResource$Value;->getBinary()Ljava/nio/ByteBuffer; +HSPLandroid/icu/impl/UResource$Value;->getInt()I +HSPLandroid/icu/impl/UResource$Value;->getIntVector()[I +HSPLandroid/icu/impl/UResource$Value;->getString()Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Value;->getStringArray()[Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Value;->getStringArrayOrStringAsArray()[Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Value;->getStringOrFirstOfArray()Ljava/lang/String; +HSPLandroid/icu/impl/UResource$Value;->getTable()Landroid/icu/impl/UResource$Table; +HSPLandroid/icu/impl/UResource$Value;->getType()I +HSPLandroid/icu/impl/UResource$Value;->getUInt()I +HSPLandroid/icu/impl/UResource$Value;->isNoInheritanceMarker()Z +HSPLandroid/icu/impl/UResource$Value;->toString()Ljava/lang/String; +HSPLandroid/icu/impl/USerializedSet;->()V +HSPLandroid/icu/impl/USerializedSet;->countRanges()I +HSPLandroid/icu/impl/USerializedSet;->getRange(I[I)Z +HSPLandroid/icu/impl/USerializedSet;->getSet([CI)Z +HSPLandroid/icu/impl/Utility;->sameObjects(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroid/icu/impl/ZoneMeta$CustomTimeZoneCache;->()V +HSPLandroid/icu/impl/ZoneMeta$CustomTimeZoneCache;->(Landroid/icu/impl/ZoneMeta$CustomTimeZoneCache;)V +HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->()V +HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->(Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache;)V +HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/impl/ZoneMeta;->-getandroid-icu-util-TimeZone$SystemTimeZoneTypeSwitchesValues()[I +HSPLandroid/icu/impl/ZoneMeta;->findCLDRCanonicalID(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ZoneMeta;->getAvailableIDs(Landroid/icu/util/TimeZone$SystemTimeZoneType;Ljava/lang/String;Ljava/lang/Integer;)Ljava/util/Set; +HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/impl/ZoneMeta;->getSystemZIDs()Ljava/util/Set; +HSPLandroid/icu/impl/ZoneMeta;->getZoneIDs()[Ljava/lang/String; +HSPLandroid/icu/impl/ZoneMeta;->getZoneIndex(Ljava/lang/String;)I +HSPLandroid/icu/impl/ZoneMeta;->openOlsonResource(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/coll/Collation;->ceFromLongPrimaryCE32(I)J +HSPLandroid/icu/impl/coll/Collation;->indexFromCE32(I)I +HSPLandroid/icu/impl/coll/Collation;->isSpecialCE32(I)Z +HSPLandroid/icu/impl/coll/Collation;->tagFromCE32(I)I +HSPLandroid/icu/impl/coll/CollationCompare;->compareUpToQuaternary(Landroid/icu/impl/coll/CollationIterator;Landroid/icu/impl/coll/CollationIterator;Landroid/icu/impl/coll/CollationSettings;)I +HSPLandroid/icu/impl/coll/CollationData;->(Landroid/icu/impl/Normalizer2Impl;)V +HSPLandroid/icu/impl/coll/CollationData;->getCE32(I)I +HSPLandroid/icu/impl/coll/CollationData;->getCE32FromContexts(I)I +HSPLandroid/icu/impl/coll/CollationData;->getLastPrimaryForGroup(I)J +HSPLandroid/icu/impl/coll/CollationData;->getScriptIndex(I)I +HSPLandroid/icu/impl/coll/CollationData;->isUnsafeBackward(IZ)Z +HSPLandroid/icu/impl/coll/CollationDataReader$IsAcceptable;->()V +HSPLandroid/icu/impl/coll/CollationDataReader$IsAcceptable;->(Landroid/icu/impl/coll/CollationDataReader$IsAcceptable;)V +HSPLandroid/icu/impl/coll/CollationDataReader$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/impl/coll/CollationDataReader;->read(Landroid/icu/impl/coll/CollationTailoring;Ljava/nio/ByteBuffer;Landroid/icu/impl/coll/CollationTailoring;)V +HSPLandroid/icu/impl/coll/CollationFastLatin;->compareUTF16([C[CILjava/lang/CharSequence;Ljava/lang/CharSequence;I)I +HSPLandroid/icu/impl/coll/CollationFastLatin;->getOptions(Landroid/icu/impl/coll/CollationData;Landroid/icu/impl/coll/CollationSettings;[C)I +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->()V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->append(J)V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->get(I)J +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->getCEs()[J +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->incLength()V +HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->set(IJ)J +HSPLandroid/icu/impl/coll/CollationIterator;->(Landroid/icu/impl/coll/CollationData;)V +HSPLandroid/icu/impl/coll/CollationIterator;->appendCEsFromCE32(Landroid/icu/impl/coll/CollationData;IIZ)V +HSPLandroid/icu/impl/coll/CollationIterator;->fetchCEs()I +HSPLandroid/icu/impl/coll/CollationIterator;->getCEs()[J +HSPLandroid/icu/impl/coll/CollationIterator;->makeCodePointAndCE32Pair(II)J +HSPLandroid/icu/impl/coll/CollationIterator;->nextCE()J +HSPLandroid/icu/impl/coll/CollationIterator;->nextCE32FromContraction(Landroid/icu/impl/coll/CollationData;ILjava/lang/CharSequence;III)I +HSPLandroid/icu/impl/coll/CollationIterator;->nextCEFromCE32(Landroid/icu/impl/coll/CollationData;II)J +HSPLandroid/icu/impl/coll/CollationIterator;->reset()V +HSPLandroid/icu/impl/coll/CollationIterator;->reset(Z)V +HSPLandroid/icu/impl/coll/CollationLoader;->findWithFallback(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/coll/CollationLoader;->loadTailoring(Landroid/icu/util/ULocale;Landroid/icu/util/Output;)Landroid/icu/impl/coll/CollationTailoring; +HSPLandroid/icu/impl/coll/CollationRoot;->getRoot()Landroid/icu/impl/coll/CollationTailoring; +HSPLandroid/icu/impl/coll/CollationSettings;->()V +HSPLandroid/icu/impl/coll/CollationSettings;->clone()Landroid/icu/impl/coll/CollationSettings; +HSPLandroid/icu/impl/coll/CollationSettings;->clone()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/coll/CollationSettings;->dontCheckFCD()Z +HSPLandroid/icu/impl/coll/CollationSettings;->getAlternateHandling()Z +HSPLandroid/icu/impl/coll/CollationSettings;->getMaxVariable()I +HSPLandroid/icu/impl/coll/CollationSettings;->getStrength()I +HSPLandroid/icu/impl/coll/CollationSettings;->getStrength(I)I +HSPLandroid/icu/impl/coll/CollationSettings;->hasReordering()Z +HSPLandroid/icu/impl/coll/CollationSettings;->isNumeric()Z +HSPLandroid/icu/impl/coll/CollationSettings;->setStrength(I)V +HSPLandroid/icu/impl/coll/CollationTailoring;->(Landroid/icu/impl/coll/SharedObject$Reference;)V +HSPLandroid/icu/impl/coll/CollationTailoring;->ensureOwnedData()V +HSPLandroid/icu/impl/coll/ContractionsAndExpansions;->(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/impl/coll/ContractionsAndExpansions$CESink;Z)V +HSPLandroid/icu/impl/coll/ContractionsAndExpansions;->addStrings(IILandroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/impl/coll/ContractionsAndExpansions;->forCodePoint(Landroid/icu/impl/coll/CollationData;I)V +HSPLandroid/icu/impl/coll/ContractionsAndExpansions;->handleCE32(III)V +HSPLandroid/icu/impl/coll/ContractionsAndExpansions;->handleContractions(III)V +HSPLandroid/icu/impl/coll/FCDUTF16CollationIterator;->(Landroid/icu/impl/coll/CollationData;)V +HSPLandroid/icu/impl/coll/SharedObject$Reference;->(Landroid/icu/impl/coll/SharedObject;)V +HSPLandroid/icu/impl/coll/SharedObject$Reference;->clear()V +HSPLandroid/icu/impl/coll/SharedObject$Reference;->clone()Landroid/icu/impl/coll/SharedObject$Reference; +HSPLandroid/icu/impl/coll/SharedObject$Reference;->copyOnWrite()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/coll/SharedObject$Reference;->finalize()V +HSPLandroid/icu/impl/coll/SharedObject$Reference;->readOnly()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/coll/SharedObject;->()V +HSPLandroid/icu/impl/coll/SharedObject;->addRef()V +HSPLandroid/icu/impl/coll/SharedObject;->clone()Landroid/icu/impl/coll/SharedObject; +HSPLandroid/icu/impl/coll/SharedObject;->getRefCount()I +HSPLandroid/icu/impl/coll/SharedObject;->removeRef()V +HSPLandroid/icu/impl/coll/UTF16CollationIterator;->(Landroid/icu/impl/coll/CollationData;)V +HSPLandroid/icu/impl/coll/UTF16CollationIterator;->handleNextCE32()J +HSPLandroid/icu/impl/coll/UTF16CollationIterator;->nextCodePoint()I +HSPLandroid/icu/impl/coll/UTF16CollationIterator;->setText(ZLjava/lang/CharSequence;I)V +HSPLandroid/icu/impl/locale/AsciiUtil;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/icu/impl/locale/AsciiUtil;->isAlpha(C)Z +HSPLandroid/icu/impl/locale/AsciiUtil;->toLower(C)C +HSPLandroid/icu/impl/locale/AsciiUtil;->toLowerString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/AsciiUtil;->toTitleString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/AsciiUtil;->toUpper(C)C +HSPLandroid/icu/impl/locale/AsciiUtil;->toUpperString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; +HSPLandroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/locale/BaseLocale$Key;->-get0(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale$Key;->-get1(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale$Key;->-get2(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale$Key;->-get3(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale$Key;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/impl/locale/BaseLocale$Key;->equals(Ljava/lang/Object;)Z +HSPLandroid/icu/impl/locale/BaseLocale$Key;->hashCode()I +HSPLandroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; +HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/BaseLocale;)V +HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/impl/locale/BaseLocale;->getLanguage()Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale;->getRegion()Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale;->getScript()Ljava/lang/String; +HSPLandroid/icu/impl/locale/BaseLocale;->getVariant()Ljava/lang/String; +HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V +HSPLandroid/icu/impl/locale/LocaleObjectCache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/lang/UCharacter;->digit(I)I +HSPLandroid/icu/lang/UCharacter;->digit(II)I +HSPLandroid/icu/lang/UCharacter;->getIntPropertyValue(II)I +HSPLandroid/icu/lang/UCharacter;->getPropertyEnum(Ljava/lang/CharSequence;)I +HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnum(ILjava/lang/CharSequence;)I +HSPLandroid/icu/lang/UCharacter;->getType(I)I +HSPLandroid/icu/lang/UCharacter;->getUnicodeVersion()Landroid/icu/util/VersionInfo; +HSPLandroid/icu/lang/UCharacter;->isLowerCase(I)Z +HSPLandroid/icu/lang/UScript$ScriptUsage;->(Ljava/lang/String;I)V +HSPLandroid/icu/lang/UScript$ScriptUsage;->values()[Landroid/icu/lang/UScript$ScriptUsage; +HSPLandroid/icu/lang/UScript;->getScript(I)I +HSPLandroid/icu/math/BigDecimal;->(I)V +HSPLandroid/icu/math/BigDecimal;->(J)V +HSPLandroid/icu/math/BigDecimal;->diginit()[B +HSPLandroid/icu/math/BigDecimal;->doubleValue()D +HSPLandroid/icu/math/BigDecimal;->layout()[C +HSPLandroid/icu/math/BigDecimal;->scale()I +HSPLandroid/icu/math/BigDecimal;->toBigDecimal()Ljava/math/BigDecimal; +HSPLandroid/icu/math/BigDecimal;->toBigInteger()Ljava/math/BigInteger; +HSPLandroid/icu/math/BigDecimal;->toString()Ljava/lang/String; +HSPLandroid/icu/math/BigDecimal;->unscaledValue()Ljava/math/BigInteger; +HSPLandroid/icu/math/MathContext;->(II)V +HSPLandroid/icu/math/MathContext;->(IIZI)V +HSPLandroid/icu/math/MathContext;->isValidRound(I)Z +HSPLandroid/icu/text/AlphabeticIndex$1;->(Landroid/icu/text/AlphabeticIndex;)V +HSPLandroid/icu/text/AlphabeticIndex$Bucket$LabelType;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->-set1(Landroid/icu/text/AlphabeticIndex$Bucket;I)I +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V +HSPLandroid/icu/text/AlphabeticIndex$Bucket;->(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;Landroid/icu/text/AlphabeticIndex$Bucket;)V +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/icu/text/AlphabeticIndex$BucketList;->(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/icu/text/AlphabeticIndex$BucketList;)V +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V +HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;Landroid/icu/text/AlphabeticIndex$ImmutableIndex;)V +HSPLandroid/icu/text/AlphabeticIndex;->(Landroid/icu/util/ULocale;Landroid/icu/text/RuleBasedCollator;)V +HSPLandroid/icu/text/AlphabeticIndex;->(Ljava/util/Locale;)V +HSPLandroid/icu/text/AlphabeticIndex;->addChineseIndexCharacters()Z +HSPLandroid/icu/text/AlphabeticIndex;->addIndexExemplars(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/AlphabeticIndex;->addLabels([Ljava/util/Locale;)Landroid/icu/text/AlphabeticIndex; +HSPLandroid/icu/text/AlphabeticIndex;->buildImmutableIndex()Landroid/icu/text/AlphabeticIndex$ImmutableIndex; +HSPLandroid/icu/text/AlphabeticIndex;->createBucketList()Landroid/icu/text/AlphabeticIndex$BucketList; +HSPLandroid/icu/text/AlphabeticIndex;->fixLabel(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/AlphabeticIndex;->getFirstCharactersInScripts()Ljava/util/List; +HSPLandroid/icu/text/AlphabeticIndex;->getOverflowLabel()Ljava/lang/String; +HSPLandroid/icu/text/AlphabeticIndex;->getUnderflowLabel()Ljava/lang/String; +HSPLandroid/icu/text/AlphabeticIndex;->hasMultiplePrimaryWeights(Landroid/icu/text/RuleBasedCollator;JLjava/lang/String;)Z +HSPLandroid/icu/text/AlphabeticIndex;->initLabels()Ljava/util/List; +HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->()V +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableLocales()[Ljava/util/Locale; +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale; +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object; +HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;->unregister(Ljava/lang/Object;)Z +HSPLandroid/icu/text/BreakIterator;->()V +HSPLandroid/icu/text/BreakIterator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/BreakIterator;->current()I +HSPLandroid/icu/text/BreakIterator;->first()I +HSPLandroid/icu/text/BreakIterator;->following(I)I +HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; +HSPLandroid/icu/text/BreakIterator;->getText()Ljava/text/CharacterIterator; +HSPLandroid/icu/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->last()I +HSPLandroid/icu/text/BreakIterator;->next()I +HSPLandroid/icu/text/BreakIterator;->next(I)I +HSPLandroid/icu/text/BreakIterator;->previous()I +HSPLandroid/icu/text/BreakIterator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/BreakIterator;->setText(Ljava/text/CharacterIterator;)V +HSPLandroid/icu/text/BreakIteratorFactory$BFService$1RBBreakIteratorFactory;->(Landroid/icu/text/BreakIteratorFactory$BFService;)V +HSPLandroid/icu/text/BreakIteratorFactory$BFService;->()V +HSPLandroid/icu/text/BreakIteratorFactory;->()V +HSPLandroid/icu/text/BreakIteratorFactory;->createBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIteratorFactory;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/CaseMap$Upper;->-get0()Landroid/icu/text/CaseMap$Upper; +HSPLandroid/icu/text/CaseMap$Upper;->(I)V +HSPLandroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; +HSPLandroid/icu/text/CaseMap;->-wrap0(Ljava/util/Locale;)I +HSPLandroid/icu/text/CaseMap;->(I)V +HSPLandroid/icu/text/CaseMap;->(ILandroid/icu/text/CaseMap;)V +HSPLandroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I +HSPLandroid/icu/text/CaseMap;->omitUnchangedText()Landroid/icu/text/CaseMap; +HSPLandroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper; +HSPLandroid/icu/text/Collator$ServiceShim;->()V +HSPLandroid/icu/text/Collator$ServiceShim;->getAvailableLocales()[Ljava/util/Locale; +HSPLandroid/icu/text/Collator$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale; +HSPLandroid/icu/text/Collator$ServiceShim;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/text/Collator$ServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/Collator$ServiceShim;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object; +HSPLandroid/icu/text/Collator$ServiceShim;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object; +HSPLandroid/icu/text/Collator$ServiceShim;->unregister(Ljava/lang/Object;)Z +HSPLandroid/icu/text/Collator;->()V +HSPLandroid/icu/text/Collator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/Collator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/icu/text/Collator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/icu/text/Collator;->getCollationKey(Ljava/lang/String;)Landroid/icu/text/CollationKey; +HSPLandroid/icu/text/Collator;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/Collator;->getInstance(Ljava/util/Locale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/Collator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey; +HSPLandroid/icu/text/Collator;->getShim()Landroid/icu/text/Collator$ServiceShim; +HSPLandroid/icu/text/Collator;->getUCAVersion()Landroid/icu/util/VersionInfo; +HSPLandroid/icu/text/Collator;->getVariableTop()I +HSPLandroid/icu/text/Collator;->getVersion()Landroid/icu/util/VersionInfo; +HSPLandroid/icu/text/Collator;->setVariableTop(I)V +HSPLandroid/icu/text/Collator;->setVariableTop(Ljava/lang/String;)I +HSPLandroid/icu/text/CollatorServiceShim$CService$1CollatorFactory;->(Landroid/icu/text/CollatorServiceShim$CService;)V +HSPLandroid/icu/text/CollatorServiceShim$CService$1CollatorFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object; +HSPLandroid/icu/text/CollatorServiceShim$CService;->()V +HSPLandroid/icu/text/CollatorServiceShim$CService;->validateFallbackLocale()Ljava/lang/String; +HSPLandroid/icu/text/CollatorServiceShim;->-wrap0(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/CollatorServiceShim;->()V +HSPLandroid/icu/text/CollatorServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/CollatorServiceShim;->makeInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; +HSPLandroid/icu/text/CurrencyDisplayNames;->()V +HSPLandroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames; +HSPLandroid/icu/text/CurrencyDisplayNames;->getName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/CurrencyDisplayNames;->getPluralName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/CurrencyDisplayNames;->getSymbol(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/CurrencyDisplayNames;->getULocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/text/CurrencyDisplayNames;->nameMap()Ljava/util/Map; +HSPLandroid/icu/text/CurrencyDisplayNames;->symbolMap()Ljava/util/Map; +HSPLandroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->(II)V +HSPLandroid/icu/text/CurrencyMetaInfo;->getInstance()Landroid/icu/text/CurrencyMetaInfo; +HSPLandroid/icu/text/DateFormat$BooleanAttribute;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DateFormat$BooleanAttribute;->values()[Landroid/icu/text/DateFormat$BooleanAttribute; +HSPLandroid/icu/text/DateFormat$Field;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DateFormat;->()V +HSPLandroid/icu/text/DateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; +HSPLandroid/icu/text/DateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext; +HSPLandroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->getTimeInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/text/DateFormat;->parse(Ljava/lang/String;Landroid/icu/util/Calendar;Ljava/text/ParsePosition;)V +HSPLandroid/icu/text/DateFormat;->setCalendar(Landroid/icu/util/Calendar;)V +HSPLandroid/icu/text/DateFormat;->setContext(Landroid/icu/text/DisplayContext;)V +HSPLandroid/icu/text/DateFormatSymbols$1;->()V +HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormatSymbols; +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->()V +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->preEnumerate(Ljava/lang/String;)V +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->processAliasFromValue(Ljava/lang/String;Landroid/icu/impl/UResource$Value;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; +HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;)V +HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V +HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V +HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Ljava/lang/String;)V +HSPLandroid/icu/text/DateFormatSymbols;->loadDayPeriodStrings(Ljava/util/Map;)[Ljava/lang/String; +HSPLandroid/icu/text/DateFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateFormatSymbols;->setTimeSeparatorString(Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;->(Landroid/icu/text/DateTimePatternGenerator;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;->(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;->(Landroid/icu/text/DateTimePatternGenerator;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;->(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V +HSPLandroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$DTPGflags;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags; +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->-get0(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$SkeletonFields; +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->-get1(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)[I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->()V +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Ljava/lang/Object;)I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->equals(Ljava/lang/Object;)Z +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; +HSPLandroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->(Ljava/util/HashMap;)V +HSPLandroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->(Ljava/util/HashMap;Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;)V +HSPLandroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->()V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V +HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->-get0(Landroid/icu/text/DateTimePatternGenerator$FormatParser;)Ljava/util/List; +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->()V +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List; +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->quoteLiteral(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$FormatParser; +HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;Z)Landroid/icu/text/DateTimePatternGenerator$FormatParser; +HSPLandroid/icu/text/DateTimePatternGenerator$PatternInfo;->()V +HSPLandroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V +HSPLandroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->(Ljava/lang/String;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->()V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clear()V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->compareTo(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)I +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldChar(I)C +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldLength(I)I +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->isFieldEmpty(I)Z +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ICI)V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ILjava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString()Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->-wrap0(Landroid/icu/text/DateTimePatternGenerator$VariableField;)I +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->(Ljava/lang/String;Z)V +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalIndex()I +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->getType()I +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->isNumeric()Z +HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->toString()Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->-get1()[[I +HSPLandroid/icu/text/DateTimePatternGenerator;->-wrap0(Landroid/icu/text/DateTimePatternGenerator;Ljava/lang/String;)Z +HSPLandroid/icu/text/DateTimePatternGenerator;->-wrap2(Landroid/icu/impl/UResource$Key;)I +HSPLandroid/icu/text/DateTimePatternGenerator;->-wrap3(Ljava/lang/String;Z)I +HSPLandroid/icu/text/DateTimePatternGenerator;->-wrap5(Landroid/icu/text/DateTimePatternGenerator;Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->()V +HSPLandroid/icu/text/DateTimePatternGenerator;->addCLDRData(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->addCanonicalItems()V +HSPLandroid/icu/text/DateTimePatternGenerator;->addICUPatterns(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->addPattern(Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->addPatternWithSkeleton(Ljava/lang/String;Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->adjustFieldTypes(Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->checkFrozen()V +HSPLandroid/icu/text/DateTimePatternGenerator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/DateTimePatternGenerator;->cloneAsThawed()Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->consumeShortTimePattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->fillInMissing()V +HSPLandroid/icu/text/DateTimePatternGenerator;->freeze()Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormats(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Landroid/icu/impl/UResource$Key;)I +HSPLandroid/icu/text/DateTimePatternGenerator;->getAppendItemFormat(I)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getAppendItemName(I)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getBestRaw(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher; +HSPLandroid/icu/text/DateTimePatternGenerator;->getCLDRFieldNumber(Landroid/icu/impl/UResource$Key;)I +HSPLandroid/icu/text/DateTimePatternGenerator;->getCalendarTypeToUse(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getCanonicalIndex(Ljava/lang/String;Z)I +HSPLandroid/icu/text/DateTimePatternGenerator;->getFilteredPattern(Landroid/icu/text/DateTimePatternGenerator$FormatParser;Ljava/util/BitSet;)Ljava/lang/String; +HSPLandroid/icu/text/DateTimePatternGenerator;->getFrozenInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator; +HSPLandroid/icu/text/DateTimePatternGenerator;->hackTimes(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->initData(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->isAvailableFormatSet(Ljava/lang/String;)Z +HSPLandroid/icu/text/DateTimePatternGenerator;->isFrozen()Z +HSPLandroid/icu/text/DateTimePatternGenerator;->setAppendItemFormat(ILjava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setAppendItemName(ILjava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setAvailableFormat(Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setDateTimeFormat(Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimal(Ljava/lang/String;)V +HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DecimalFormat$Unit;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V +HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V +HSPLandroid/icu/text/DecimalFormat;->_setMaximumFractionDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->addPadding(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;II)V +HSPLandroid/icu/text/DecimalFormat;->appendAffix(Ljava/lang/StringBuffer;ZZLjava/text/FieldPosition;Z)I +HSPLandroid/icu/text/DecimalFormat;->appendAffixPattern(Ljava/lang/StringBuffer;ZZZ)V +HSPLandroid/icu/text/DecimalFormat;->applyPatternWithoutExpandAffix(Ljava/lang/String;Z)V +HSPLandroid/icu/text/DecimalFormat;->areSignificantDigitsUsed()Z +HSPLandroid/icu/text/DecimalFormat;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/DecimalFormat;->compareAffix(Ljava/lang/String;IZZLjava/lang/String;ZI[Landroid/icu/util/Currency;)I +HSPLandroid/icu/text/DecimalFormat;->compareSimpleAffix(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/icu/text/DecimalFormat;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V +HSPLandroid/icu/text/DecimalFormat;->createFromPatternAndSymbols(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V +HSPLandroid/icu/text/DecimalFormat;->equalWithSignCompatibility(II)Z +HSPLandroid/icu/text/DecimalFormat;->expandAffix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuffer;)V +HSPLandroid/icu/text/DecimalFormat;->expandAffixAdjustWidth(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormat;->expandAffixes(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; +HSPLandroid/icu/text/DecimalFormat;->getEquivalentDecimals(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/DecimalFormat;->getMaximumSignificantDigits()I +HSPLandroid/icu/text/DecimalFormat;->getMinimumSignificantDigits()I +HSPLandroid/icu/text/DecimalFormat;->getParseMaxDigits()I +HSPLandroid/icu/text/DecimalFormat;->isBidiMark(I)Z +HSPLandroid/icu/text/DecimalFormat;->isDecimalPatternMatchRequired()Z +HSPLandroid/icu/text/DecimalFormat;->isGroupingPosition(I)Z +HSPLandroid/icu/text/DecimalFormat;->isNegative(D)Z +HSPLandroid/icu/text/DecimalFormat;->isParseBigDecimal()Z +HSPLandroid/icu/text/DecimalFormat;->isScientificNotation()Z +HSPLandroid/icu/text/DecimalFormat;->matchesDigit(Ljava/lang/String;I[I)I +HSPLandroid/icu/text/DecimalFormat;->multiply(D)D +HSPLandroid/icu/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number; +HSPLandroid/icu/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;)Ljava/lang/Object; +HSPLandroid/icu/text/DecimalFormat;->precision(Z)I +HSPLandroid/icu/text/DecimalFormat;->resetActualRounding()V +HSPLandroid/icu/text/DecimalFormat;->round(D)D +HSPLandroid/icu/text/DecimalFormat;->round(DDDIZ)D +HSPLandroid/icu/text/DecimalFormat;->setCurrency(Landroid/icu/util/Currency;)V +HSPLandroid/icu/text/DecimalFormat;->setCurrencyForSymbols()V +HSPLandroid/icu/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V +HSPLandroid/icu/text/DecimalFormat;->setInternalRoundingIncrement(Landroid/icu/math/BigDecimal;)V +HSPLandroid/icu/text/DecimalFormat;->setMaximumFractionDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMinimumFractionDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setRoundingDouble(D)V +HSPLandroid/icu/text/DecimalFormat;->setRoundingIncrement(D)V +HSPLandroid/icu/text/DecimalFormat;->setRoundingIncrement(Landroid/icu/math/BigDecimal;)V +HSPLandroid/icu/text/DecimalFormat;->setRoundingMode(I)V +HSPLandroid/icu/text/DecimalFormat;->setSignificantDigitsUsed(Z)V +HSPLandroid/icu/text/DecimalFormat;->subformat(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->subformat(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->subformatFixed(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZ)V +HSPLandroid/icu/text/DecimalFormat;->subparse(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/DigitList;[Z[Landroid/icu/util/Currency;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z +HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormat;->toPattern(Z)Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData; +HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;->(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->([Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/DecimalFormatSymbols;->-get0()[Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->-wrap0(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData; +HSPLandroid/icu/text/DecimalFormatSymbols;->(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->(Ljava/util/Locale;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/DecimalFormatSymbols;->getCurrency()Landroid/icu/util/Currency; +HSPLandroid/icu/text/DecimalFormatSymbols;->getCurrencyPattern()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getCurrencySymbol()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getDecimalSeparator()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getDecimalSeparatorString()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getDigit()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getDigitStrings()[Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getDigitStringsLocal()[Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getExponentSeparator()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getGroupingSeparator()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getGroupingSeparatorString()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getInfinity()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getInternationalCurrencySymbol()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getLocale()Ljava/util/Locale; +HSPLandroid/icu/text/DecimalFormatSymbols;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; +HSPLandroid/icu/text/DecimalFormatSymbols;->getMinusSign()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getMinusSignString()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getMonetaryDecimalSeparator()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getNaN()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getPatternSeparator()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getPerMill()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getPercent()C +HSPLandroid/icu/text/DecimalFormatSymbols;->getPercentString()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormatSymbols;->getULocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/text/DecimalFormatSymbols;->getZeroDigit()C +HSPLandroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData; +HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrency(Landroid/icu/util/Currency;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparator(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparatorString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDigit(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDigitStrings([Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentMultiplicationSign(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setGroupingSeparator(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setGroupingSeparatorString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setInfinity(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setMinusSign(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setMinusSignString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryDecimalSeparator(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryDecimalSeparatorString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryGroupingSeparatorString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setNaN(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setPatternSeparator(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setPerMillString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setPercent(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setPercentString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSignString(Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V +HSPLandroid/icu/text/DigitList;->()V +HSPLandroid/icu/text/DigitList;->append(I)V +HSPLandroid/icu/text/DigitList;->ensureCapacity(II)V +HSPLandroid/icu/text/DigitList;->getDigitValue(I)B +HSPLandroid/icu/text/DigitList;->isIntegral()Z +HSPLandroid/icu/text/DigitList;->isZero()Z +HSPLandroid/icu/text/DigitList;->round(I)V +HSPLandroid/icu/text/DigitList;->set(DIZ)V +HSPLandroid/icu/text/DigitList;->set(JI)V +HSPLandroid/icu/text/DigitList;->set(Ljava/lang/String;I)V +HSPLandroid/icu/text/DigitList;->shouldRoundUp(I)Z +HSPLandroid/icu/text/DigitList;->wasRounded()Z +HSPLandroid/icu/text/DisplayContext$Type;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/DisplayContext;->(Ljava/lang/String;ILandroid/icu/text/DisplayContext$Type;I)V +HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type; +HSPLandroid/icu/text/Edits;->()V +HSPLandroid/icu/text/Edits;->addReplace(II)V +HSPLandroid/icu/text/Edits;->addUnchanged(I)V +HSPLandroid/icu/text/Edits;->append(I)V +HSPLandroid/icu/text/Edits;->hasChanges()Z +HSPLandroid/icu/text/Edits;->lastUnit()I +HSPLandroid/icu/text/Edits;->reset()V +HSPLandroid/icu/text/Edits;->setLastUnit(I)V +HSPLandroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/LanguageBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIZILandroid/icu/text/DictionaryBreakEngine$DequeI;)I +HSPLandroid/icu/text/LanguageBreakEngine;->handles(II)Z +HSPLandroid/icu/text/ListFormatter$Style;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/icu/text/MeasureFormat$FormatWidth;->(Ljava/lang/String;ILandroid/icu/text/ListFormatter$Style;I)V +HSPLandroid/icu/text/MeasureFormat$FormatWidth;->getCurrencyStyle()I +HSPLandroid/icu/text/MeasureFormat$FormatWidth;->values()[Landroid/icu/text/MeasureFormat$FormatWidth; +HSPLandroid/icu/text/MeasureFormat$ImmutableNumberFormat;->-get0(Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/MeasureFormat$ImmutableNumberFormat;->(Landroid/icu/text/NumberFormat;)V +HSPLandroid/icu/text/MeasureFormat$MeasureFormatData;->()V +HSPLandroid/icu/text/MeasureFormat$MeasureFormatData;->(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V +HSPLandroid/icu/text/MeasureFormat$MeasureFormatData;->hasPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Z +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumeAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumeCompoundPattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumePattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumeSubtypeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->consumeUnitTypesTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->setDnamIfAbsent(Landroid/icu/impl/UResource$Value;)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->setFormatterIfAbsent(ILandroid/icu/impl/UResource$Value;I)V +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->widthFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/MeasureFormat$FormatWidth; +HSPLandroid/icu/text/MeasureFormat$UnitDataSink;->widthFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/MeasureFormat$FormatWidth; +HSPLandroid/icu/text/MeasureFormat;->(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$MeasureFormatData;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/PluralRules;Landroid/icu/text/MeasureFormat$NumericFormatters;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)V +HSPLandroid/icu/text/MeasureFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder; +HSPLandroid/icu/text/MeasureFormat;->getFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; +HSPLandroid/icu/text/MeasureFormat;->getFormatterOrNull(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; +HSPLandroid/icu/text/MeasureFormat;->getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat; +HSPLandroid/icu/text/MeasureFormat;->getInstance(Ljava/util/Locale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat; +HSPLandroid/icu/text/MeasureFormat;->getPluralFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; +HSPLandroid/icu/text/MeasureFormat;->getRegularWidth(Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat$FormatWidth; +HSPLandroid/icu/text/MeasureFormat;->loadLocaleData(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$MeasureFormatData; +HSPLandroid/icu/text/Normalizer$FCDMode;->()V +HSPLandroid/icu/text/Normalizer$FCDMode;->(Landroid/icu/text/Normalizer$FCDMode;)V +HSPLandroid/icu/text/Normalizer$Mode;->()V +HSPLandroid/icu/text/Normalizer$ModeImpl;->-get0(Landroid/icu/text/Normalizer$ModeImpl;)Landroid/icu/text/Normalizer2; +HSPLandroid/icu/text/Normalizer$ModeImpl;->(Landroid/icu/text/Normalizer2;)V +HSPLandroid/icu/text/Normalizer$ModeImpl;->(Landroid/icu/text/Normalizer2;Landroid/icu/text/Normalizer$ModeImpl;)V +HSPLandroid/icu/text/Normalizer$NFCMode;->()V +HSPLandroid/icu/text/Normalizer$NFCMode;->(Landroid/icu/text/Normalizer$NFCMode;)V +HSPLandroid/icu/text/Normalizer$NFCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; +HSPLandroid/icu/text/Normalizer$NFCModeImpl;->-get0()Landroid/icu/text/Normalizer$ModeImpl; +HSPLandroid/icu/text/Normalizer$NFDMode;->()V +HSPLandroid/icu/text/Normalizer$NFDMode;->(Landroid/icu/text/Normalizer$NFDMode;)V +HSPLandroid/icu/text/Normalizer$NFKCMode;->()V +HSPLandroid/icu/text/Normalizer$NFKCMode;->(Landroid/icu/text/Normalizer$NFKCMode;)V +HSPLandroid/icu/text/Normalizer$NFKDMode;->()V +HSPLandroid/icu/text/Normalizer$NFKDMode;->(Landroid/icu/text/Normalizer$NFKDMode;)V +HSPLandroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; +HSPLandroid/icu/text/Normalizer$NFKDModeImpl;->-get0()Landroid/icu/text/Normalizer$ModeImpl; +HSPLandroid/icu/text/Normalizer$NONEMode;->()V +HSPLandroid/icu/text/Normalizer$NONEMode;->(Landroid/icu/text/Normalizer$NONEMode;)V +HSPLandroid/icu/text/Normalizer$QuickCheckResult;->(I)V +HSPLandroid/icu/text/Normalizer$QuickCheckResult;->(ILandroid/icu/text/Normalizer$QuickCheckResult;)V +HSPLandroid/icu/text/Normalizer2;->()V +HSPLandroid/icu/text/Normalizer2;->getNFCInstance()Landroid/icu/text/Normalizer2; +HSPLandroid/icu/text/Normalizer2;->getNFKDInstance()Landroid/icu/text/Normalizer2; +HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String; +HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String; +HSPLandroid/icu/text/NumberFormat$Field;->(Ljava/lang/String;)V +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->()V +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableLocales()[Ljava/util/Locale; +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableULocales()[Landroid/icu/util/ULocale; +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object; +HSPLandroid/icu/text/NumberFormat$NumberFormatShim;->unregister(Ljava/lang/Object;)Z +HSPLandroid/icu/text/NumberFormat;->()V +HSPLandroid/icu/text/NumberFormat;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->format(Landroid/icu/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/NumberFormat;->getCurrency()Landroid/icu/util/Currency; +HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->getInstance(Ljava/util/Locale;)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberFormat;->getMaximumFractionDigits()I +HSPLandroid/icu/text/NumberFormat;->getMaximumIntegerDigits()I +HSPLandroid/icu/text/NumberFormat;->getMinimumFractionDigits()I +HSPLandroid/icu/text/NumberFormat;->getMinimumIntegerDigits()I +HSPLandroid/icu/text/NumberFormat;->getPattern(Landroid/icu/util/ULocale;I)Ljava/lang/String; +HSPLandroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim; +HSPLandroid/icu/text/NumberFormat;->isGroupingUsed()Z +HSPLandroid/icu/text/NumberFormat;->isParseIntegerOnly()Z +HSPLandroid/icu/text/NumberFormat;->isParseStrict()Z +HSPLandroid/icu/text/NumberFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number; +HSPLandroid/icu/text/NumberFormat;->setCurrency(Landroid/icu/util/Currency;)V +HSPLandroid/icu/text/NumberFormat;->setGroupingUsed(Z)V +HSPLandroid/icu/text/NumberFormat;->setMaximumFractionDigits(I)V +HSPLandroid/icu/text/NumberFormat;->setMaximumIntegerDigits(I)V +HSPLandroid/icu/text/NumberFormat;->setMinimumFractionDigits(I)V +HSPLandroid/icu/text/NumberFormat;->setMinimumIntegerDigits(I)V +HSPLandroid/icu/text/NumberFormat;->setParseIntegerOnly(Z)V +HSPLandroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;->(Landroid/icu/text/NumberFormatServiceShim$NFService;)V +HSPLandroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object; +HSPLandroid/icu/text/NumberFormatServiceShim$NFService;->()V +HSPLandroid/icu/text/NumberFormatServiceShim;->()V +HSPLandroid/icu/text/NumberFormatServiceShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/String;Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/NumberingSystem$LocaleLookupData;->(Landroid/icu/util/ULocale;Ljava/lang/String;)V +HSPLandroid/icu/text/NumberingSystem;->getDescription()Ljava/lang/String; +HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/NumberingSystem;->getInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/NumberingSystem;->getName()Ljava/lang/String; +HSPLandroid/icu/text/NumberingSystem;->getRadix()I +HSPLandroid/icu/text/NumberingSystem;->isAlgorithmic()Z +HSPLandroid/icu/text/NumberingSystem;->isValidDigitString(Ljava/lang/String;)Z +HSPLandroid/icu/text/NumberingSystem;->lookupInstanceByLocale(Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/PluralRanges$Matrix;->()V +HSPLandroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V +HSPLandroid/icu/text/PluralRanges;->()V +HSPLandroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V +HSPLandroid/icu/text/PluralRanges;->freeze()Landroid/icu/text/PluralRanges; +HSPLandroid/icu/text/PluralRules$1;->()V +HSPLandroid/icu/text/PluralRules$1;->isFulfilled(Landroid/icu/text/PluralRules$FixedDecimal;)Z +HSPLandroid/icu/text/PluralRules$AndConstraint;->(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V +HSPLandroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$FixedDecimal;)Z +HSPLandroid/icu/text/PluralRules$BinaryConstraint;->(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V +HSPLandroid/icu/text/PluralRules$Constraint;->isFulfilled(Landroid/icu/text/PluralRules$FixedDecimal;)Z +HSPLandroid/icu/text/PluralRules$Constraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z +HSPLandroid/icu/text/PluralRules$Factory;->()V +HSPLandroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/text/PluralRules$Factory;->getAvailableULocales()[Landroid/icu/util/ULocale; +HSPLandroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader; +HSPLandroid/icu/text/PluralRules$Factory;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale; +HSPLandroid/icu/text/PluralRules$Factory;->hasOverride(Landroid/icu/util/ULocale;)Z +HSPLandroid/icu/text/PluralRules$FixedDecimal;->-getandroid-icu-text-PluralRules$OperandSwitchesValues()[I +HSPLandroid/icu/text/PluralRules$FixedDecimal;->(D)V +HSPLandroid/icu/text/PluralRules$FixedDecimal;->(DI)V +HSPLandroid/icu/text/PluralRules$FixedDecimal;->(DIJ)V +HSPLandroid/icu/text/PluralRules$FixedDecimal;->(Ljava/lang/String;)V +HSPLandroid/icu/text/PluralRules$FixedDecimal;->decimals(D)I +HSPLandroid/icu/text/PluralRules$FixedDecimal;->get(Landroid/icu/text/PluralRules$Operand;)D +HSPLandroid/icu/text/PluralRules$FixedDecimal;->getFractionalDigits(DI)I +HSPLandroid/icu/text/PluralRules$FixedDecimal;->getOperand(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand; +HSPLandroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCount()I +HSPLandroid/icu/text/PluralRules$FixedDecimal;->getVisibleFractionCount(Ljava/lang/String;)I +HSPLandroid/icu/text/PluralRules$FixedDecimalRange;->(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V +HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;->(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V +HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;->checkDecimal(Landroid/icu/text/PluralRules$SampleType;Landroid/icu/text/PluralRules$FixedDecimal;)V +HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples; +HSPLandroid/icu/text/PluralRules$Operand;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand; +HSPLandroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand; +HSPLandroid/icu/text/PluralRules$PluralType;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/PluralRules$RangeConstraint;->(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V +HSPLandroid/icu/text/PluralRules$RangeConstraint;->isFulfilled(Landroid/icu/text/PluralRules$FixedDecimal;)Z +HSPLandroid/icu/text/PluralRules$Rule;->-get1(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$FixedDecimalSamples; +HSPLandroid/icu/text/PluralRules$Rule;->(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V +HSPLandroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$FixedDecimal;)Z +HSPLandroid/icu/text/PluralRules$Rule;->getKeyword()Ljava/lang/String; +HSPLandroid/icu/text/PluralRules$RuleList;->-get0(Landroid/icu/text/PluralRules$RuleList;)Z +HSPLandroid/icu/text/PluralRules$RuleList;->-set0(Landroid/icu/text/PluralRules$RuleList;Z)Z +HSPLandroid/icu/text/PluralRules$RuleList;->()V +HSPLandroid/icu/text/PluralRules$RuleList;->(Landroid/icu/text/PluralRules$RuleList;)V +HSPLandroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList; +HSPLandroid/icu/text/PluralRules$RuleList;->finish()Landroid/icu/text/PluralRules$RuleList; +HSPLandroid/icu/text/PluralRules$RuleList;->getKeywords()Ljava/util/Set; +HSPLandroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$FixedDecimal;)Ljava/lang/String; +HSPLandroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$FixedDecimal;)Landroid/icu/text/PluralRules$Rule; +HSPLandroid/icu/text/PluralRules$SampleType;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/PluralRules$SimpleTokenizer;->split(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/icu/text/PluralRules;->(Landroid/icu/text/PluralRules$RuleList;)V +HSPLandroid/icu/text/PluralRules;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/text/PluralRules;->forLocale(Ljava/util/Locale;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/text/PluralRules;->isValidKeyword(Ljava/lang/String;)Z +HSPLandroid/icu/text/PluralRules;->nextToken([Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/text/PluralRules;->parseConstraint(Ljava/lang/String;)Landroid/icu/text/PluralRules$Constraint; +HSPLandroid/icu/text/PluralRules;->parseDescription(Ljava/lang/String;)Landroid/icu/text/PluralRules; +HSPLandroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/text/PluralRules$Rule; +HSPLandroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList; +HSPLandroid/icu/text/PluralRules;->select(D)Ljava/lang/String; +HSPLandroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$FixedDecimal;)Ljava/lang/String; +HSPLandroid/icu/text/QuantityFormatter;->format(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder; +HSPLandroid/icu/text/QuantityFormatter;->selectPlural(Ljava/lang/Number;Landroid/icu/text/NumberFormat;Landroid/icu/text/PluralRules;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Landroid/icu/impl/StandardPlural; +HSPLandroid/icu/text/RBBIDataWrapper$IsAcceptable;->()V +HSPLandroid/icu/text/RBBIDataWrapper$IsAcceptable;->(Landroid/icu/text/RBBIDataWrapper$IsAcceptable;)V +HSPLandroid/icu/text/RBBIDataWrapper$IsAcceptable;->isDataVersionAcceptable([B)Z +HSPLandroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->()V +HSPLandroid/icu/text/RBBIDataWrapper$TrieFoldingFunc;->()V +HSPLandroid/icu/text/RBBIDataWrapper;->()V +HSPLandroid/icu/text/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/text/RBBIDataWrapper; +HSPLandroid/icu/text/Replaceable;->char32At(I)I +HSPLandroid/icu/text/Replaceable;->charAt(I)C +HSPLandroid/icu/text/Replaceable;->copy(III)V +HSPLandroid/icu/text/Replaceable;->getChars(II[CI)V +HSPLandroid/icu/text/Replaceable;->hasMetaData()Z +HSPLandroid/icu/text/Replaceable;->length()I +HSPLandroid/icu/text/Replaceable;->replace(IILjava/lang/String;)V +HSPLandroid/icu/text/Replaceable;->replace(II[CII)V +HSPLandroid/icu/text/ReplaceableString;->(Ljava/lang/String;)V +HSPLandroid/icu/text/ReplaceableString;->charAt(I)C +HSPLandroid/icu/text/ReplaceableString;->getChars(II[CI)V +HSPLandroid/icu/text/ReplaceableString;->length()I +HSPLandroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->()V +HSPLandroid/icu/text/RuleBasedBreakIterator;->()V +HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator; +HSPLandroid/icu/text/RuleBasedBreakIterator;->setBreakType(I)V +HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;->(Landroid/icu/impl/coll/CollationData;)V +HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;->(Landroid/icu/impl/coll/CollationData;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V +HSPLandroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->()V +HSPLandroid/icu/text/RuleBasedCollator$NFDIterator;->()V +HSPLandroid/icu/text/RuleBasedCollator$NFDIterator;->nextRawCodePoint()I +HSPLandroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->()V +HSPLandroid/icu/text/RuleBasedCollator;->(Landroid/icu/impl/coll/CollationTailoring;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/RuleBasedCollator;->checkNotFrozen()V +HSPLandroid/icu/text/RuleBasedCollator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/RuleBasedCollator;->cloneAsThawed()Landroid/icu/text/RuleBasedCollator; +HSPLandroid/icu/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/RuleBasedCollator;->freeze()Landroid/icu/text/Collator; +HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer; +HSPLandroid/icu/text/RuleBasedCollator;->getOwnedSettings()Landroid/icu/impl/coll/CollationSettings; +HSPLandroid/icu/text/RuleBasedCollator;->getStrength()I +HSPLandroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J +HSPLandroid/icu/text/RuleBasedCollator;->isAlternateHandlingShifted()Z +HSPLandroid/icu/text/RuleBasedCollator;->isFrozen()Z +HSPLandroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V +HSPLandroid/icu/text/RuleBasedCollator;->setFastLatinOptions(Landroid/icu/impl/coll/CollationSettings;)V +HSPLandroid/icu/text/RuleBasedCollator;->setStrength(I)V +HSPLandroid/icu/text/SimpleDateFormat$PatternItem;->(CI)V +HSPLandroid/icu/text/SimpleDateFormat;->-wrap0(CI)Z +HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V +HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I +HSPLandroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat; +HSPLandroid/icu/text/SimpleDateFormat;->getNumberFormat(C)Landroid/icu/text/NumberFormat; +HSPLandroid/icu/text/SimpleDateFormat;->getPatternItems()[Ljava/lang/Object; +HSPLandroid/icu/text/SimpleDateFormat;->initLocalZeroPaddingNumberFormat()V +HSPLandroid/icu/text/SimpleDateFormat;->initialize()V +HSPLandroid/icu/text/SimpleDateFormat;->isNumeric(CI)Z +HSPLandroid/icu/text/SimpleDateFormat;->isSyntaxChar(C)Z +HSPLandroid/icu/text/SimpleDateFormat;->parsePattern()V +HSPLandroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V +HSPLandroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V +HSPLandroid/icu/text/SimpleDateFormat;->setContext(Landroid/icu/text/DisplayContext;)V +HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V +HSPLandroid/icu/text/SimpleDateFormat;->toPattern()Ljava/lang/String; +HSPLandroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V +HSPLandroid/icu/text/StringPrep;->(Ljava/nio/ByteBuffer;)V +HSPLandroid/icu/text/StringPrep;->getInstance(I)Landroid/icu/text/StringPrep; +HSPLandroid/icu/text/StringPrep;->getVersionInfo(I)Landroid/icu/util/VersionInfo; +HSPLandroid/icu/text/StringPrep;->getVersionInfo([B)Landroid/icu/util/VersionInfo; +HSPLandroid/icu/text/TimeZoneNames$NameType;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/TimeZoneNames$NameType;->values()[Landroid/icu/text/TimeZoneNames$NameType; +HSPLandroid/icu/text/UCharacterIterator;->()V +HSPLandroid/icu/text/UCharacterIterator;->current()I +HSPLandroid/icu/text/UCharacterIterator;->getIndex()I +HSPLandroid/icu/text/UCharacterIterator;->getInstance(Ljava/lang/String;)Landroid/icu/text/UCharacterIterator; +HSPLandroid/icu/text/UCharacterIterator;->getLength()I +HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String; +HSPLandroid/icu/text/UCharacterIterator;->getText([C)I +HSPLandroid/icu/text/UCharacterIterator;->getText([CI)I +HSPLandroid/icu/text/UCharacterIterator;->next()I +HSPLandroid/icu/text/UCharacterIterator;->previous()I +HSPLandroid/icu/text/UCharacterIterator;->setIndex(I)V +HSPLandroid/icu/text/UCharacterIterator;->setToStart()V +HSPLandroid/icu/text/UFieldPosition;->(Ljava/text/Format$Field;I)V +HSPLandroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I +HSPLandroid/icu/text/UFieldPosition;->getFractionDigits()J +HSPLandroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V +HSPLandroid/icu/text/UFormat;->()V +HSPLandroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/UForwardCharacterIterator;->next()I +HSPLandroid/icu/text/UForwardCharacterIterator;->nextCodePoint()I +HSPLandroid/icu/text/UTF16$StringComparator;->(ZZI)V +HSPLandroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V +HSPLandroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I +HSPLandroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/UTF16;->charAt(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/text/UTF16;->charAt(Ljava/lang/String;I)I +HSPLandroid/icu/text/UTF16;->getCharCount(I)I +HSPLandroid/icu/text/UTF16;->getLeadSurrogate(I)C +HSPLandroid/icu/text/UTF16;->getTrailSurrogate(I)C +HSPLandroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z +HSPLandroid/icu/text/UnhandledBreakEngine;->()V +HSPLandroid/icu/text/UnicodeFilter;->()V +HSPLandroid/icu/text/UnicodeFilter;->contains(I)Z +HSPLandroid/icu/text/UnicodeMatcher;->addMatchSetTo(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/text/UnicodeMatcher;->matches(Landroid/icu/text/Replaceable;[IIZ)I +HSPLandroid/icu/text/UnicodeMatcher;->matchesIndexValue(I)Z +HSPLandroid/icu/text/UnicodeMatcher;->toPattern(Z)Ljava/lang/String; +HSPLandroid/icu/text/UnicodeSet$Filter;->contains(I)Z +HSPLandroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->(I)V +HSPLandroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z +HSPLandroid/icu/text/UnicodeSet$IntPropertyFilter;->(II)V +HSPLandroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->hasNext()Z +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/Object; +HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/String; +HSPLandroid/icu/text/UnicodeSet;->-get1(Landroid/icu/text/UnicodeSet;)I +HSPLandroid/icu/text/UnicodeSet;->-get2(Landroid/icu/text/UnicodeSet;)[I +HSPLandroid/icu/text/UnicodeSet;->()V +HSPLandroid/icu/text/UnicodeSet;->(II)V +HSPLandroid/icu/text/UnicodeSet;->(Ljava/lang/String;)V +HSPLandroid/icu/text/UnicodeSet;->(Ljava/lang/String;I)V +HSPLandroid/icu/text/UnicodeSet;->([I)V +HSPLandroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;IZ)Ljava/lang/Appendable; +HSPLandroid/icu/text/UnicodeSet;->add(I)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->add(II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->add(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->addAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->add_unchecked(I)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->add_unchecked(II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->append(Ljava/lang/Appendable;Ljava/lang/CharSequence;)V +HSPLandroid/icu/text/UnicodeSet;->appendCodePoint(Ljava/lang/Appendable;I)V +HSPLandroid/icu/text/UnicodeSet;->appendNewPattern(Ljava/lang/Appendable;ZZ)Ljava/lang/Appendable; +HSPLandroid/icu/text/UnicodeSet;->applyFilter(Landroid/icu/text/UnicodeSet$Filter;I)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->applyIntPropertyValue(II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->applyPattern(Landroid/icu/impl/RuleCharacterIterator;Landroid/icu/text/SymbolTable;Ljava/lang/Appendable;I)V +HSPLandroid/icu/text/UnicodeSet;->applyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;I)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->applyPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/Appendable;Landroid/icu/text/SymbolTable;)V +HSPLandroid/icu/text/UnicodeSet;->applyPropertyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->checkFrozen()V +HSPLandroid/icu/text/UnicodeSet;->clear()Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/UnicodeSet;->complement(II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->contains(I)Z +HSPLandroid/icu/text/UnicodeSet;->contains(Ljava/lang/CharSequence;)Z +HSPLandroid/icu/text/UnicodeSet;->containsAll(Ljava/lang/String;)Z +HSPLandroid/icu/text/UnicodeSet;->containsNone(II)Z +HSPLandroid/icu/text/UnicodeSet;->ensureBufferCapacity(I)V +HSPLandroid/icu/text/UnicodeSet;->findCodePoint(I)I +HSPLandroid/icu/text/UnicodeSet;->freeze()Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->getInclusions(I)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->getRangeCount()I +HSPLandroid/icu/text/UnicodeSet;->getRangeEnd(I)I +HSPLandroid/icu/text/UnicodeSet;->getRangeStart(I)I +HSPLandroid/icu/text/UnicodeSet;->getSingleCP(Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/UnicodeSet;->isEmpty()Z +HSPLandroid/icu/text/UnicodeSet;->isFrozen()Z +HSPLandroid/icu/text/UnicodeSet;->iterator()Ljava/util/Iterator; +HSPLandroid/icu/text/UnicodeSet;->range(II)[I +HSPLandroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;I)Z +HSPLandroid/icu/text/UnicodeSet;->retain([III)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->retainAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSet;->xor([III)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/text/UnicodeSetSpanner;->(Landroid/icu/text/UnicodeSet;)V +HSPLandroid/icu/util/AnnualTimeZoneRule;->(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V +HSPLandroid/icu/util/AnnualTimeZoneRule;->getEndYear()I +HSPLandroid/icu/util/AnnualTimeZoneRule;->getFirstStart(II)Ljava/util/Date; +HSPLandroid/icu/util/AnnualTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date; +HSPLandroid/icu/util/AnnualTimeZoneRule;->getRule()Landroid/icu/util/DateTimeRule; +HSPLandroid/icu/util/AnnualTimeZoneRule;->getStartInYear(III)Ljava/util/Date; +HSPLandroid/icu/util/BasicTimeZone;->(Ljava/lang/String;)V +HSPLandroid/icu/util/BytesTrie$Result;->(Ljava/lang/String;I)V +HSPLandroid/icu/util/BytesTrie$Result;->hasNext()Z +HSPLandroid/icu/util/BytesTrie$Result;->hasValue()Z +HSPLandroid/icu/util/BytesTrie;->([BI)V +HSPLandroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/BytesTrie;->getValue()I +HSPLandroid/icu/util/BytesTrie;->jumpByDelta([BI)I +HSPLandroid/icu/util/BytesTrie;->next(I)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/BytesTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/BytesTrie;->readValue([BII)I +HSPLandroid/icu/util/BytesTrie;->skipDelta([BI)I +HSPLandroid/icu/util/BytesTrie;->skipValue(II)I +HSPLandroid/icu/util/BytesTrie;->skipValue([BI)I +HSPLandroid/icu/util/Calendar$CalType;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/icu/util/Calendar$CalType;->values()[Landroid/icu/util/Calendar$CalType; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->-set0(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/util/Calendar;)Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->-set1(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/text/DateFormatSymbols;)Landroid/icu/text/DateFormatSymbols; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->-set2(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->-set3(Landroid/icu/util/Calendar$FormatConfiguration;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->-set4(Landroid/icu/util/Calendar$FormatConfiguration;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->()V +HSPLandroid/icu/util/Calendar$FormatConfiguration;->(Landroid/icu/util/Calendar$FormatConfiguration;)V +HSPLandroid/icu/util/Calendar$FormatConfiguration;->getCalendar()Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->getLocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->getOverrideString()Ljava/lang/String; +HSPLandroid/icu/util/Calendar$FormatConfiguration;->getPatternString()Ljava/lang/String; +HSPLandroid/icu/util/Calendar$PatternData;->-get0(Landroid/icu/util/Calendar$PatternData;)[Ljava/lang/String; +HSPLandroid/icu/util/Calendar$PatternData;->-get1(Landroid/icu/util/Calendar$PatternData;)[Ljava/lang/String; +HSPLandroid/icu/util/Calendar$PatternData;->-wrap0(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData; +HSPLandroid/icu/util/Calendar$PatternData;->-wrap2(Landroid/icu/util/Calendar$PatternData;I)Ljava/lang/String; +HSPLandroid/icu/util/Calendar$PatternData;->([Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/icu/util/Calendar$PatternData;->getDateTimePattern(I)Ljava/lang/String; +HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData; +HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; +HSPLandroid/icu/util/Calendar$WeekData;->(IIIIII)V +HSPLandroid/icu/util/Calendar$WeekDataCache;->()V +HSPLandroid/icu/util/Calendar$WeekDataCache;->(Landroid/icu/util/Calendar$WeekDataCache;)V +HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; +HSPLandroid/icu/util/Calendar;->-get1()Landroid/icu/impl/ICUCache; +HSPLandroid/icu/util/Calendar;->-getandroid-icu-util-Calendar$CalTypeSwitchesValues()[I +HSPLandroid/icu/util/Calendar;->-wrap0(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; +HSPLandroid/icu/util/Calendar;->-wrap1(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; +HSPLandroid/icu/util/Calendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->complete()V +HSPLandroid/icu/util/Calendar;->computeFields()V +HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V +HSPLandroid/icu/util/Calendar;->computeGregorianFields(I)V +HSPLandroid/icu/util/Calendar;->computeWeekFields()V +HSPLandroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar;->floorDivide(II[I)I +HSPLandroid/icu/util/Calendar;->floorDivide(JI[I)I +HSPLandroid/icu/util/Calendar;->floorDivide(JJ)J +HSPLandroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat; +HSPLandroid/icu/util/Calendar;->get(I)I +HSPLandroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$CalType; +HSPLandroid/icu/util/Calendar;->getDateTimeFormat(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/util/Calendar;->getDateTimePattern(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;I)Ljava/lang/String; +HSPLandroid/icu/util/Calendar;->getFieldCount()I +HSPLandroid/icu/util/Calendar;->getFirstDayOfWeek()I +HSPLandroid/icu/util/Calendar;->getGregorianDayOfMonth()I +HSPLandroid/icu/util/Calendar;->getGregorianDayOfYear()I +HSPLandroid/icu/util/Calendar;->getGregorianMonth()I +HSPLandroid/icu/util/Calendar;->getGregorianYear()I +HSPLandroid/icu/util/Calendar;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar;->getInstanceInternal(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar;->getKeywordValuesForLocale(Ljava/lang/String;Landroid/icu/util/ULocale;Z)[Ljava/lang/String; +HSPLandroid/icu/util/Calendar;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/Calendar;->getMinimalDaysInFirstWeek()I +HSPLandroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; +HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/util/Calendar;->getTimeInMillis()J +HSPLandroid/icu/util/Calendar;->getTimeZone()Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; +HSPLandroid/icu/util/Calendar;->handleComputeMonthStart(IIZ)I +HSPLandroid/icu/util/Calendar;->handleCreateFields()[I +HSPLandroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; +HSPLandroid/icu/util/Calendar;->handleGetExtendedYear()I +HSPLandroid/icu/util/Calendar;->handleGetLimit(II)I +HSPLandroid/icu/util/Calendar;->initInternal()V +HSPLandroid/icu/util/Calendar;->internalSet(II)V +HSPLandroid/icu/util/Calendar;->julianDayToDayOfWeek(I)I +HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->setFirstDayOfWeek(I)V +HSPLandroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->setMinimalDaysInFirstWeek(I)V +HSPLandroid/icu/util/Calendar;->setTime(Ljava/util/Date;)V +HSPLandroid/icu/util/Calendar;->setTimeInMillis(J)V +HSPLandroid/icu/util/Calendar;->setTimeZone(Landroid/icu/util/TimeZone;)V +HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar; +HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V +HSPLandroid/icu/util/Calendar;->weekNumber(II)I +HSPLandroid/icu/util/Calendar;->weekNumber(III)I +HSPLandroid/icu/util/CharsTrie$Entry;->()V +HSPLandroid/icu/util/CharsTrie$Entry;->(Landroid/icu/util/CharsTrie$Entry;)V +HSPLandroid/icu/util/CharsTrie$Iterator;->(Ljava/lang/CharSequence;III)V +HSPLandroid/icu/util/CharsTrie$Iterator;->(Ljava/lang/CharSequence;IIILandroid/icu/util/CharsTrie$Iterator;)V +HSPLandroid/icu/util/CharsTrie$Iterator;->branchNext(II)I +HSPLandroid/icu/util/CharsTrie$Iterator;->hasNext()Z +HSPLandroid/icu/util/CharsTrie$Iterator;->next()Landroid/icu/util/CharsTrie$Entry; +HSPLandroid/icu/util/CharsTrie;->-wrap0(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/util/CharsTrie;->-wrap2(Ljava/lang/CharSequence;II)I +HSPLandroid/icu/util/CharsTrie;->-wrap3(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/util/CharsTrie;->-wrap5(II)I +HSPLandroid/icu/util/CharsTrie;->(Ljava/lang/CharSequence;I)V +HSPLandroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/CharsTrie;->firstForCodePoint(I)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/CharsTrie;->getValue()I +HSPLandroid/icu/util/CharsTrie;->iterator()Landroid/icu/util/CharsTrie$Iterator; +HSPLandroid/icu/util/CharsTrie;->jumpByDelta(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/util/CharsTrie;->next(I)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/CharsTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result; +HSPLandroid/icu/util/CharsTrie;->readValue(Ljava/lang/CharSequence;II)I +HSPLandroid/icu/util/CharsTrie;->skipDelta(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/util/CharsTrie;->skipValue(II)I +HSPLandroid/icu/util/CharsTrie;->skipValue(Ljava/lang/CharSequence;I)I +HSPLandroid/icu/util/Currency$CurrencyUsage;->(Ljava/lang/String;I)V +HSPLandroid/icu/util/Currency;->(Ljava/lang/String;)V +HSPLandroid/icu/util/Currency;->createCurrency(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getCurrencyCode()Ljava/lang/String; +HSPLandroid/icu/util/Currency;->getDefaultFractionDigits(Landroid/icu/util/Currency$CurrencyUsage;)I +HSPLandroid/icu/util/Currency;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getInstance(Ljava/lang/String;)Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getInstance(Ljava/util/Locale;)Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getName(Landroid/icu/util/ULocale;I[Z)Ljava/lang/String; +HSPLandroid/icu/util/Currency;->getRoundingIncrement(Landroid/icu/util/Currency$CurrencyUsage;)D +HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String; +HSPLandroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z +HSPLandroid/icu/util/DateTimeRule;->(IIIZII)V +HSPLandroid/icu/util/DateTimeRule;->getDateRuleType()I +HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfMonth()I +HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I +HSPLandroid/icu/util/DateTimeRule;->getRuleMillisInDay()I +HSPLandroid/icu/util/DateTimeRule;->getRuleMonth()I +HSPLandroid/icu/util/DateTimeRule;->getTimeRuleType()I +HSPLandroid/icu/util/GregorianCalendar;->()V +HSPLandroid/icu/util/GregorianCalendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/GregorianCalendar;->getType()Ljava/lang/String; +HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V +HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I +HSPLandroid/icu/util/GregorianCalendar;->isLeapYear(I)Z +HSPLandroid/icu/util/InitialTimeZoneRule;->(Ljava/lang/String;II)V +HSPLandroid/icu/util/LocaleData;->()V +HSPLandroid/icu/util/LocaleData;->getExemplarSet(II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;II)Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/util/LocaleData;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/LocaleData; +HSPLandroid/icu/util/Measure;->(Ljava/lang/Number;Landroid/icu/util/MeasureUnit;)V +HSPLandroid/icu/util/Measure;->getNumber()Ljava/lang/Number; +HSPLandroid/icu/util/Measure;->getUnit()Landroid/icu/util/MeasureUnit; +HSPLandroid/icu/util/MeasureUnit$1;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit; +HSPLandroid/icu/util/MeasureUnit$2;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit; +HSPLandroid/icu/util/MeasureUnit;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit; +HSPLandroid/icu/util/MeasureUnit;->hashCode()I +HSPLandroid/icu/util/MeasureUnit;->internalGetInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit; +HSPLandroid/icu/util/Output;->(Ljava/lang/Object;)V +HSPLandroid/icu/util/STZInfo;->()V +HSPLandroid/icu/util/SimpleTimeZone;->(ILjava/lang/String;IIIIIIIIIII)V +HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object; +HSPLandroid/icu/util/SimpleTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V +HSPLandroid/icu/util/SimpleTimeZone;->decodeEndRule()V +HSPLandroid/icu/util/SimpleTimeZone;->decodeRules()V +HSPLandroid/icu/util/SimpleTimeZone;->decodeStartRule()V +HSPLandroid/icu/util/SimpleTimeZone;->getDSTSavings()I +HSPLandroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; +HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->getRawOffset()I +HSPLandroid/icu/util/SimpleTimeZone;->getSTZInfo()Landroid/icu/util/STZInfo; +HSPLandroid/icu/util/SimpleTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; +HSPLandroid/icu/util/SimpleTimeZone;->initTransitionRules()V +HSPLandroid/icu/util/SimpleTimeZone;->isFrozen()Z +HSPLandroid/icu/util/SimpleTimeZone;->setID(Ljava/lang/String;)V +HSPLandroid/icu/util/SimpleTimeZone;->setStartYear(I)V +HSPLandroid/icu/util/SimpleTimeZone;->useDaylightTime()Z +HSPLandroid/icu/util/TimeArrayTimeZoneRule;->(Ljava/lang/String;II[JI)V +HSPLandroid/icu/util/TimeZone$ConstantZone;->(ILjava/lang/String;)V +HSPLandroid/icu/util/TimeZone$ConstantZone;->(ILjava/lang/String;Landroid/icu/util/TimeZone$ConstantZone;)V +HSPLandroid/icu/util/TimeZone$ConstantZone;->freeze()Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/TimeZone$SystemTimeZoneType;->(Ljava/lang/String;I)V +HSPLandroid/icu/util/TimeZone$SystemTimeZoneType;->values()[Landroid/icu/util/TimeZone$SystemTimeZoneType; +HSPLandroid/icu/util/TimeZone;->(Ljava/lang/String;)V +HSPLandroid/icu/util/TimeZone;->clearCachedDefault()V +HSPLandroid/icu/util/TimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/TimeZone;->getCanonicalID(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/TimeZone;->getCanonicalID(Ljava/lang/String;[Z)Ljava/lang/String; +HSPLandroid/icu/util/TimeZone;->getDefault()Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone; +HSPLandroid/icu/util/TimeZone;->getFrozenTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/TimeZone;->getID()Ljava/lang/String; +HSPLandroid/icu/util/TimeZone;->getOffset(IIIIII)I +HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/util/TimeZone;->getRawOffset()I +HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone; +HSPLandroid/icu/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z +HSPLandroid/icu/util/TimeZone;->setID(Ljava/lang/String;)V +HSPLandroid/icu/util/TimeZone;->setRawOffset(I)V +HSPLandroid/icu/util/TimeZone;->useDaylightTime()Z +HSPLandroid/icu/util/TimeZoneRule;->(Ljava/lang/String;II)V +HSPLandroid/icu/util/TimeZoneRule;->getDSTSavings()I +HSPLandroid/icu/util/TimeZoneRule;->getName()Ljava/lang/String; +HSPLandroid/icu/util/TimeZoneRule;->getRawOffset()I +HSPLandroid/icu/util/TimeZoneTransition;->(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V +HSPLandroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule; +HSPLandroid/icu/util/TimeZoneTransition;->getTime()J +HSPLandroid/icu/util/TimeZoneTransition;->getTo()Landroid/icu/util/TimeZoneRule; +HSPLandroid/icu/util/ULocale$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/util/ULocale$1;->createInstance(Ljava/lang/String;Ljava/lang/Void;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale$2;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/util/ULocale$2;->createInstance(Ljava/util/Locale;Ljava/lang/Void;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->-getandroid-icu-util-ULocale$CategorySwitchesValues()[I +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->getDefault(Landroid/icu/util/ULocale$Category;)Ljava/util/Locale; +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories()Z +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toLocale(Landroid/icu/util/ULocale;)Ljava/util/Locale; +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toLocale7(Landroid/icu/util/ULocale;)Ljava/util/Locale; +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toULocale7(Ljava/util/Locale;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;)V +HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;)V +HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/ULocale;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V +HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/util/ULocale;->canonicalize(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->createCanonical(Ljava/lang/String;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->equals(Ljava/lang/Object;)Z +HSPLandroid/icu/util/ULocale;->forLocale(Ljava/util/Locale;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getBaseName()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getBaseName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getDefault(Landroid/icu/util/ULocale$Category;)Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getKeywords()Ljava/util/Iterator; +HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator; +HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getName()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getName(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I +HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->hashCode()I +HSPLandroid/icu/util/ULocale;->initCANONICALIZE_MAP()V +HSPLandroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z +HSPLandroid/icu/util/ULocale;->isRightToLeft()Z +HSPLandroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I +HSPLandroid/icu/util/ULocale;->toLocale()Ljava/util/Locale; +HSPLandroid/icu/util/ULocale;->toString()Ljava/lang/String; +HSPLandroid/icu/util/UResourceBundle;->-getandroid-icu-util-UResourceBundle$RootTypeSwitchesValues()[I +HSPLandroid/icu/util/UResourceBundle;->()V +HSPLandroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBaseName()Ljava/lang/String; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator; +HSPLandroid/icu/util/UResourceBundle;->getLocaleID()Ljava/lang/String; +HSPLandroid/icu/util/UResourceBundle;->getParent()Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType; +HSPLandroid/icu/util/UResourceBundle;->getULocale()Landroid/icu/util/ULocale; +HSPLandroid/icu/util/UResourceBundle;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; +HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; +HSPLandroid/icu/util/UResourceBundleIterator;->(Landroid/icu/util/UResourceBundle;)V +HSPLandroid/icu/util/UResourceBundleIterator;->hasNext()Z +HSPLandroid/icu/util/UResourceBundleIterator;->next()Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/VersionInfo;->compareTo(Landroid/icu/util/VersionInfo;)I +HSPLandroid/icu/util/VersionInfo;->getInstance(IIII)Landroid/icu/util/VersionInfo; +HSPLandroid/icu/util/VersionInfo;->getInt(IIII)I +HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;->(Landroid/inputmethodservice/AbstractInputMethodService;)V +HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;->createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V +HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;->setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V +HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->(Landroid/inputmethodservice/AbstractInputMethodService;)V +HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->setEnabled(Z)V +HSPLandroid/inputmethodservice/AbstractInputMethodService;->()V +HSPLandroid/inputmethodservice/AbstractInputMethodService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/inputmethodservice/AbstractInputMethodService;->onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl; +HSPLandroid/inputmethodservice/AbstractInputMethodService;->onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl; +HSPLandroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;->(Landroid/inputmethodservice/IInputMethodSessionWrapper;Landroid/view/InputChannel;Landroid/os/Looper;)V +HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->(Landroid/content/Context;Landroid/view/inputmethod/InputMethodSession;Landroid/view/InputChannel;)V +HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->getInternalInputMethodSession()Landroid/view/inputmethod/InputMethodSession; +HSPLandroid/inputmethodservice/IInputMethodWrapper$InputMethodSessionCallbackWrapper;->(Landroid/content/Context;Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper$InputMethodSessionCallbackWrapper;->sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->(Landroid/inputmethodservice/AbstractInputMethodService;Landroid/view/inputmethod/InputMethod;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->attachToken(Landroid/os/IBinder;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->bindInput(Landroid/view/inputmethod/InputBinding;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->executeMessage(Landroid/os/Message;)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->setSessionEnabled(Lcom/android/internal/view/IInputMethodSession;Z)V +HSPLandroid/inputmethodservice/IInputMethodWrapper;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;Z)V +HSPLandroid/inputmethodservice/InputMethodService$1;->(Landroid/inputmethodservice/InputMethodService;)V +HSPLandroid/inputmethodservice/InputMethodService$2;->(Landroid/inputmethodservice/InputMethodService;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->(Landroid/inputmethodservice/InputMethodService;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->attachToken(Landroid/os/IBinder;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->bindInput(Landroid/view/inputmethod/InputBinding;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->dispatchStartInputWithToken(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;ZLandroid/os/IBinder;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V +HSPLandroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;->(Landroid/inputmethodservice/InputMethodService;)V +HSPLandroid/inputmethodservice/InputMethodService$Insets;->()V +HSPLandroid/inputmethodservice/InputMethodService$SettingsObserver;->-wrap0(Landroid/inputmethodservice/InputMethodService$SettingsObserver;)Z +HSPLandroid/inputmethodservice/InputMethodService$SettingsObserver;->(Landroid/inputmethodservice/InputMethodService;)V +HSPLandroid/inputmethodservice/InputMethodService$SettingsObserver;->createAndRegister(Landroid/inputmethodservice/InputMethodService;)Landroid/inputmethodservice/InputMethodService$SettingsObserver; +HSPLandroid/inputmethodservice/InputMethodService$SettingsObserver;->shouldShowImeWithHardKeyboard()Z +HSPLandroid/inputmethodservice/InputMethodService;->-set0(Landroid/inputmethodservice/InputMethodService;Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLandroid/inputmethodservice/InputMethodService;->()V +HSPLandroid/inputmethodservice/InputMethodService;->doFinishInput()V +HSPLandroid/inputmethodservice/InputMethodService;->doStartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;Z)V +HSPLandroid/inputmethodservice/InputMethodService;->getCandidatesHiddenVisibility()I +HSPLandroid/inputmethodservice/InputMethodService;->initViews()V +HSPLandroid/inputmethodservice/InputMethodService;->initialize()V +HSPLandroid/inputmethodservice/InputMethodService;->isExtractViewShown()Z +HSPLandroid/inputmethodservice/InputMethodService;->onBindInput()V +HSPLandroid/inputmethodservice/InputMethodService;->onCreate()V +HSPLandroid/inputmethodservice/InputMethodService;->onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl; +HSPLandroid/inputmethodservice/InputMethodService;->onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl; +HSPLandroid/inputmethodservice/InputMethodService;->onEvaluateInputViewShown()Z +HSPLandroid/inputmethodservice/InputMethodService;->onInitializeInterface()V +HSPLandroid/inputmethodservice/InputMethodService;->onStartInput(Landroid/view/inputmethod/EditorInfo;Z)V +HSPLandroid/inputmethodservice/SoftInputWindow;->(Landroid/content/Context;Ljava/lang/String;ILandroid/inputmethodservice/SoftInputWindow$Callback;Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;IIZ)V +HSPLandroid/inputmethodservice/SoftInputWindow;->initDockWindow()V +HSPLandroid/inputmethodservice/SoftInputWindow;->setToken(Landroid/os/IBinder;)V +HSPLandroid/inputmethodservice/SoftInputWindow;->updateWidthHeight(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/location/BatchedLocationCallbackTransport$CallbackTransport;->(Landroid/location/BatchedLocationCallbackTransport;)V +HSPLandroid/location/BatchedLocationCallbackTransport$CallbackTransport;->(Landroid/location/BatchedLocationCallbackTransport;Landroid/location/BatchedLocationCallbackTransport$CallbackTransport;)V +HSPLandroid/location/BatchedLocationCallbackTransport;->(Landroid/content/Context;Landroid/location/ILocationManager;)V +HSPLandroid/location/Geocoder;->(Landroid/content/Context;)V +HSPLandroid/location/Geocoder;->(Landroid/content/Context;Ljava/util/Locale;)V +HSPLandroid/location/Geocoder;->isPresent()Z +HSPLandroid/location/GeocoderParams$1;->()V +HSPLandroid/location/GeocoderParams;->(Landroid/content/Context;Ljava/util/Locale;)V +HSPLandroid/location/GnssMeasurementCallbackTransport$ListenerTransport;->(Landroid/location/GnssMeasurementCallbackTransport;)V +HSPLandroid/location/GnssMeasurementCallbackTransport$ListenerTransport;->(Landroid/location/GnssMeasurementCallbackTransport;Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;)V +HSPLandroid/location/GnssMeasurementCallbackTransport;->(Landroid/content/Context;Landroid/location/ILocationManager;)V +HSPLandroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;->(Landroid/location/GnssNavigationMessageCallbackTransport;)V +HSPLandroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;->(Landroid/location/GnssNavigationMessageCallbackTransport;Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;)V +HSPLandroid/location/GnssNavigationMessageCallbackTransport;->(Landroid/content/Context;Landroid/location/ILocationManager;)V +HSPLandroid/location/GnssStatus$Callback;->()V +HSPLandroid/location/GnssStatus;->(I[I[F[F[F[F)V +HSPLandroid/location/GpsSatellite;->(I)V +HSPLandroid/location/GpsSatellite;->getSnr()F +HSPLandroid/location/GpsStatus$1;->(Landroid/location/GpsStatus;)V +HSPLandroid/location/GpsStatus$1;->iterator()Ljava/util/Iterator; +HSPLandroid/location/GpsStatus$SatelliteIterator;->(Landroid/location/GpsStatus;)V +HSPLandroid/location/GpsStatus$SatelliteIterator;->hasNext()Z +HSPLandroid/location/GpsStatus$SatelliteIterator;->next()Landroid/location/GpsSatellite; +HSPLandroid/location/GpsStatus$SatelliteIterator;->next()Ljava/lang/Object; +HSPLandroid/location/GpsStatus;->-get0(Landroid/location/GpsStatus;)Landroid/util/SparseArray; +HSPLandroid/location/GpsStatus;->()V +HSPLandroid/location/GpsStatus;->clearSatellites()V +HSPLandroid/location/GpsStatus;->getSatellites()Ljava/lang/Iterable; +HSPLandroid/location/GpsStatus;->setStatus(I[I[F[F[F)V +HSPLandroid/location/GpsStatus;->setStatus(Landroid/location/GnssStatus;I)V +HSPLandroid/location/IBatchedLocationCallback$Stub;->()V +HSPLandroid/location/IBatchedLocationCallback;->onLocationBatch(Ljava/util/List;)V +HSPLandroid/location/IGnssMeasurementsListener$Stub;->()V +HSPLandroid/location/IGnssMeasurementsListener;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V +HSPLandroid/location/IGnssMeasurementsListener;->onStatusChanged(I)V +HSPLandroid/location/IGnssNavigationMessageListener$Stub;->()V +HSPLandroid/location/IGnssNavigationMessageListener;->onGnssNavigationMessageReceived(Landroid/location/GnssNavigationMessage;)V +HSPLandroid/location/IGnssNavigationMessageListener;->onStatusChanged(I)V +HSPLandroid/location/IGnssStatusListener$Stub;->()V +HSPLandroid/location/IGnssStatusListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/location/IGnssStatusListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/location/IGnssStatusListener;->onFirstFix(I)V +HSPLandroid/location/IGnssStatusListener;->onGnssStarted()V +HSPLandroid/location/IGnssStatusListener;->onGnssStopped()V +HSPLandroid/location/IGnssStatusListener;->onNmeaReceived(JLjava/lang/String;)V +HSPLandroid/location/IGnssStatusListener;->onSvStatusChanged(I[I[F[F[F[F)V +HSPLandroid/location/ILocationListener$Stub;->()V +HSPLandroid/location/ILocationListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/location/ILocationListener;->onLocationChanged(Landroid/location/Location;)V +HSPLandroid/location/ILocationListener;->onProviderDisabled(Ljava/lang/String;)V +HSPLandroid/location/ILocationListener;->onProviderEnabled(Ljava/lang/String;)V +HSPLandroid/location/ILocationListener;->onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V +HSPLandroid/location/ILocationManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/location/ILocationManager$Stub$Proxy;->geocoderIsPresent()Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->getAllProviders()Ljava/util/List; +HSPLandroid/location/ILocationManager$Stub$Proxy;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/ILocationManager$Stub$Proxy;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List; +HSPLandroid/location/ILocationManager$Stub$Proxy;->isProviderEnabled(Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager$Stub$Proxy;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager; +HSPLandroid/location/ILocationManager;->addGnssBatchingCallback(Landroid/location/IBatchedLocationCallback;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager;->addGnssNavigationMessageListener(Landroid/location/IGnssNavigationMessageListener;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager;->addTestProvider(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->clearTestProviderEnabled(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->clearTestProviderLocation(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->clearTestProviderStatus(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->flushGnssBatch(Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->geocoderIsPresent()Z +HSPLandroid/location/ILocationManager;->getAllProviders()Ljava/util/List; +HSPLandroid/location/ILocationManager;->getBackgroundThrottlingWhitelist()[Ljava/lang/String; +HSPLandroid/location/ILocationManager;->getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String; +HSPLandroid/location/ILocationManager;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +HSPLandroid/location/ILocationManager;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +HSPLandroid/location/ILocationManager;->getGnssBatchSize(Ljava/lang/String;)I +HSPLandroid/location/ILocationManager;->getGnssYearOfHardware()I +HSPLandroid/location/ILocationManager;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/ILocationManager;->getNetworkProviderPackage()Ljava/lang/String; +HSPLandroid/location/ILocationManager;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties; +HSPLandroid/location/ILocationManager;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List; +HSPLandroid/location/ILocationManager;->isProviderEnabled(Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager;->locationCallbackFinished(Landroid/location/ILocationListener;)V +HSPLandroid/location/ILocationManager;->providerMeetsCriteria(Ljava/lang/String;Landroid/location/Criteria;)Z +HSPLandroid/location/ILocationManager;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z +HSPLandroid/location/ILocationManager;->removeGeofence(Landroid/location/Geofence;Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->removeGnssBatchingCallback()V +HSPLandroid/location/ILocationManager;->removeGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;)V +HSPLandroid/location/ILocationManager;->removeGnssNavigationMessageListener(Landroid/location/IGnssNavigationMessageListener;)V +HSPLandroid/location/ILocationManager;->removeTestProvider(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->reportLocation(Landroid/location/Location;Z)V +HSPLandroid/location/ILocationManager;->reportLocationBatch(Ljava/util/List;)V +HSPLandroid/location/ILocationManager;->requestGeofence(Landroid/location/LocationRequest;Landroid/location/Geofence;Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->sendExtraCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Z +HSPLandroid/location/ILocationManager;->sendNiResponse(II)Z +HSPLandroid/location/ILocationManager;->setTestProviderEnabled(Ljava/lang/String;ZLjava/lang/String;)V +HSPLandroid/location/ILocationManager;->setTestProviderLocation(Ljava/lang/String;Landroid/location/Location;Ljava/lang/String;)V +HSPLandroid/location/ILocationManager;->setTestProviderStatus(Ljava/lang/String;ILandroid/os/Bundle;JLjava/lang/String;)V +HSPLandroid/location/ILocationManager;->startGnssBatch(JZLjava/lang/String;)Z +HSPLandroid/location/ILocationManager;->stopGnssBatch()Z +HSPLandroid/location/ILocationManager;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +HSPLandroid/location/LocalListenerHelper;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/location/Location$1;->()V +HSPLandroid/location/Location$1;->initialValue()Landroid/location/Location$BearingDistanceCache; +HSPLandroid/location/Location$1;->initialValue()Ljava/lang/Object; +HSPLandroid/location/Location$2;->()V +HSPLandroid/location/Location$2;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Location; +HSPLandroid/location/Location$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/location/Location$BearingDistanceCache;->-get0(Landroid/location/Location$BearingDistanceCache;)F +HSPLandroid/location/Location$BearingDistanceCache;->-get3(Landroid/location/Location$BearingDistanceCache;)D +HSPLandroid/location/Location$BearingDistanceCache;->-set0(Landroid/location/Location$BearingDistanceCache;F)F +HSPLandroid/location/Location$BearingDistanceCache;->-set1(Landroid/location/Location$BearingDistanceCache;F)F +HSPLandroid/location/Location$BearingDistanceCache;->-set2(Landroid/location/Location$BearingDistanceCache;F)F +HSPLandroid/location/Location$BearingDistanceCache;->-set3(Landroid/location/Location$BearingDistanceCache;D)D +HSPLandroid/location/Location$BearingDistanceCache;->-set4(Landroid/location/Location$BearingDistanceCache;D)D +HSPLandroid/location/Location$BearingDistanceCache;->-set5(Landroid/location/Location$BearingDistanceCache;D)D +HSPLandroid/location/Location$BearingDistanceCache;->-set6(Landroid/location/Location$BearingDistanceCache;D)D +HSPLandroid/location/Location$BearingDistanceCache;->()V +HSPLandroid/location/Location$BearingDistanceCache;->(Landroid/location/Location$BearingDistanceCache;)V +HSPLandroid/location/Location;->-set0(Landroid/location/Location;D)D +HSPLandroid/location/Location;->-set1(Landroid/location/Location;F)F +HSPLandroid/location/Location;->-set10(Landroid/location/Location;F)F +HSPLandroid/location/Location;->-set11(Landroid/location/Location;J)J +HSPLandroid/location/Location;->-set12(Landroid/location/Location;F)F +HSPLandroid/location/Location;->-set2(Landroid/location/Location;F)F +HSPLandroid/location/Location;->-set3(Landroid/location/Location;J)J +HSPLandroid/location/Location;->-set4(Landroid/location/Location;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/location/Location;->-set5(Landroid/location/Location;B)B +HSPLandroid/location/Location;->-set6(Landroid/location/Location;F)F +HSPLandroid/location/Location;->-set7(Landroid/location/Location;D)D +HSPLandroid/location/Location;->-set8(Landroid/location/Location;D)D +HSPLandroid/location/Location;->-set9(Landroid/location/Location;F)F +HSPLandroid/location/Location;->(Ljava/lang/String;)V +HSPLandroid/location/Location;->computeDistanceAndBearing(DDDDLandroid/location/Location$BearingDistanceCache;)V +HSPLandroid/location/Location;->distanceBetween(DDDD[F)V +HSPLandroid/location/Location;->distanceTo(Landroid/location/Location;)F +HSPLandroid/location/Location;->getAccuracy()F +HSPLandroid/location/Location;->getAltitude()D +HSPLandroid/location/Location;->getElapsedRealtimeNanos()J +HSPLandroid/location/Location;->getExtras()Landroid/os/Bundle; +HSPLandroid/location/Location;->getLatitude()D +HSPLandroid/location/Location;->getLongitude()D +HSPLandroid/location/Location;->getProvider()Ljava/lang/String; +HSPLandroid/location/Location;->getTime()J +HSPLandroid/location/Location;->hasAccuracy()Z +HSPLandroid/location/Location;->hasAltitude()Z +HSPLandroid/location/Location;->hasBearing()Z +HSPLandroid/location/Location;->hasSpeed()Z +HSPLandroid/location/Location;->setAccuracy(F)V +HSPLandroid/location/Location;->setAltitude(D)V +HSPLandroid/location/Location;->setExtras(Landroid/os/Bundle;)V +HSPLandroid/location/Location;->setLatitude(D)V +HSPLandroid/location/Location;->setLongitude(D)V +HSPLandroid/location/Location;->setTime(J)V +HSPLandroid/location/LocationListener;->onLocationChanged(Landroid/location/Location;)V +HSPLandroid/location/LocationListener;->onProviderDisabled(Ljava/lang/String;)V +HSPLandroid/location/LocationListener;->onProviderEnabled(Ljava/lang/String;)V +HSPLandroid/location/LocationListener;->onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$1;->(Landroid/location/LocationManager$GnssStatusListenerTransport;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$1;->onSatelliteStatusChanged(Landroid/location/GnssStatus;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$1;->onStarted()V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;->(Landroid/location/LocationManager$GnssStatusListenerTransport;Landroid/os/Handler;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->-get0(Landroid/location/LocationManager$GnssStatusListenerTransport;)Landroid/location/GnssStatus$Callback; +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->-get2(Landroid/location/LocationManager$GnssStatusListenerTransport;)Landroid/location/GpsStatus$Listener; +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->(Landroid/location/LocationManager;Landroid/location/GpsStatus$Listener;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->(Landroid/location/LocationManager;Landroid/location/GpsStatus$Listener;Landroid/os/Handler;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->onGnssStarted()V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->onNmeaReceived(JLjava/lang/String;)V +HSPLandroid/location/LocationManager$GnssStatusListenerTransport;->onSvStatusChanged(I[I[F[F[F[F)V +HSPLandroid/location/LocationManager$ListenerTransport$1;->(Landroid/location/LocationManager$ListenerTransport;)V +HSPLandroid/location/LocationManager$ListenerTransport;->(Landroid/location/LocationManager;Landroid/location/LocationListener;Landroid/os/Looper;)V +HSPLandroid/location/LocationManager;->-get0(Landroid/location/LocationManager;)Landroid/location/GnssStatus; +HSPLandroid/location/LocationManager;->-set0(Landroid/location/LocationManager;Landroid/location/GnssStatus;)Landroid/location/GnssStatus; +HSPLandroid/location/LocationManager;->(Landroid/content/Context;Landroid/location/ILocationManager;)V +HSPLandroid/location/LocationManager;->addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z +HSPLandroid/location/LocationManager;->checkListener(Landroid/location/LocationListener;)V +HSPLandroid/location/LocationManager;->checkProvider(Ljava/lang/String;)V +HSPLandroid/location/LocationManager;->getAllProviders()Ljava/util/List; +HSPLandroid/location/LocationManager;->getGpsStatus(Landroid/location/GpsStatus;)Landroid/location/GpsStatus; +HSPLandroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location; +HSPLandroid/location/LocationManager;->getProviders(Z)Ljava/util/List; +HSPLandroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z +HSPLandroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/LocationListener;Landroid/os/Looper;Landroid/app/PendingIntent;)V +HSPLandroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V +HSPLandroid/location/LocationManager;->wrapListener(Landroid/location/LocationListener;Landroid/os/Looper;)Landroid/location/LocationManager$ListenerTransport; +HSPLandroid/location/LocationRequest$1;->()V +HSPLandroid/location/LocationRequest;->()V +HSPLandroid/location/LocationRequest;->checkDisplacement(F)V +HSPLandroid/location/LocationRequest;->checkInterval(J)V +HSPLandroid/location/LocationRequest;->checkProvider(Ljava/lang/String;)V +HSPLandroid/location/LocationRequest;->checkQuality(I)V +HSPLandroid/location/LocationRequest;->createFromDeprecatedProvider(Ljava/lang/String;JFZ)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setFastestInterval(J)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setInterval(J)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setNumUpdates(I)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setProvider(Ljava/lang/String;)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setQuality(I)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->setSmallestDisplacement(F)Landroid/location/LocationRequest; +HSPLandroid/location/LocationRequest;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioAttributes; +HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/AudioAttributes$Builder;->()V +HSPLandroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes; +HSPLandroid/media/AudioAttributes$Builder;->setContentType(I)Landroid/media/AudioAttributes$Builder; +HSPLandroid/media/AudioAttributes$Builder;->setFlags(I)Landroid/media/AudioAttributes$Builder; +HSPLandroid/media/AudioAttributes$Builder;->setInternalLegacyStreamType(I)Landroid/media/AudioAttributes$Builder; +HSPLandroid/media/AudioAttributes$Builder;->setUsage(I)Landroid/media/AudioAttributes$Builder; +HSPLandroid/media/AudioAttributes;->-set1(Landroid/media/AudioAttributes;I)I +HSPLandroid/media/AudioAttributes;->-set2(Landroid/media/AudioAttributes;I)I +HSPLandroid/media/AudioAttributes;->-set3(Landroid/media/AudioAttributes;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/media/AudioAttributes;->-set4(Landroid/media/AudioAttributes;I)I +HSPLandroid/media/AudioAttributes;->-set5(Landroid/media/AudioAttributes;Ljava/util/HashSet;)Ljava/util/HashSet; +HSPLandroid/media/AudioAttributes;->-set6(Landroid/media/AudioAttributes;I)I +HSPLandroid/media/AudioAttributes;->-wrap0(I)I +HSPLandroid/media/AudioAttributes;->()V +HSPLandroid/media/AudioAttributes;->(Landroid/media/AudioAttributes;)V +HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;)V +HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;Landroid/media/AudioAttributes;)V +HSPLandroid/media/AudioAttributes;->getAllFlags()I +HSPLandroid/media/AudioAttributes;->getFlags()I +HSPLandroid/media/AudioAttributes;->getUsage()I +HSPLandroid/media/AudioAttributes;->getVolumeControlStream()I +HSPLandroid/media/AudioAttributes;->toVolumeStreamType(ZLandroid/media/AudioAttributes;)I +HSPLandroid/media/AudioAttributes;->usageForStreamType(I)I +HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/AudioFormat$Builder;->()V +HSPLandroid/media/AudioFormat$Builder;->setChannelMask(I)Landroid/media/AudioFormat$Builder; +HSPLandroid/media/AudioFormat$Builder;->setEncoding(I)Landroid/media/AudioFormat$Builder; +HSPLandroid/media/AudioFormat$Builder;->setSampleRate(I)Landroid/media/AudioFormat$Builder; +HSPLandroid/media/AudioManager$1;->(Landroid/media/AudioManager;)V +HSPLandroid/media/AudioManager$2;->(Landroid/media/AudioManager;)V +HSPLandroid/media/AudioManager$3;->(Landroid/media/AudioManager;)V +HSPLandroid/media/AudioManager$OnAudioFocusChangeListener;->onAudioFocusChange(I)V +HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate$1;->(Landroid/media/AudioManager$ServiceEventHandlerDelegate;Landroid/os/Looper;)V +HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate;->(Landroid/media/AudioManager;Landroid/os/Handler;)V +HSPLandroid/media/AudioManager;->(Landroid/content/Context;)V +HSPLandroid/media/AudioManager;->getContext()Landroid/content/Context; +HSPLandroid/media/AudioManager;->getDevicesForStream(I)I +HSPLandroid/media/AudioManager;->getLastAudibleStreamVolume(I)I +HSPLandroid/media/AudioManager;->getRingerMode()I +HSPLandroid/media/AudioManager;->getRingerModeInternal()I +HSPLandroid/media/AudioManager;->getRingtonePlayer()Landroid/media/IRingtonePlayer; +HSPLandroid/media/AudioManager;->getService()Landroid/media/IAudioService; +HSPLandroid/media/AudioManager;->getStreamMaxVolume(I)I +HSPLandroid/media/AudioManager;->getStreamMinVolume(I)I +HSPLandroid/media/AudioManager;->getStreamVolume(I)I +HSPLandroid/media/AudioManager;->isBluetoothA2dpOn()Z +HSPLandroid/media/AudioManager;->isBluetoothScoOn()Z +HSPLandroid/media/AudioManager;->isMusicActive()Z +HSPLandroid/media/AudioManager;->isStreamAffectedByMute(I)Z +HSPLandroid/media/AudioManager;->isStreamMute(I)Z +HSPLandroid/media/AudioManager;->isVolumeFixed()Z +HSPLandroid/media/AudioManager;->isWiredHeadsetOn()Z +HSPLandroid/media/AudioManager;->playSoundEffect(I)V +HSPLandroid/media/AudioManager;->querySoundEffectsEnabled(I)Z +HSPLandroid/media/AudioManager;->setContext(Landroid/content/Context;)V +HSPLandroid/media/AudioManager;->setParameter(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/media/AudioManager;->setParameters(Ljava/lang/String;)V +HSPLandroid/media/AudioManager;->setVolumeController(Landroid/media/IVolumeController;)V +HSPLandroid/media/AudioManager;->setVolumePolicy(Landroid/media/VolumePolicy;)V +HSPLandroid/media/AudioPortEventHandler;->()V +HSPLandroid/media/AudioRoutesInfo$1;->()V +HSPLandroid/media/AudioRoutesInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioRoutesInfo; +HSPLandroid/media/AudioRoutesInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/AudioRoutesInfo;->()V +HSPLandroid/media/AudioRoutesInfo;->(Landroid/os/Parcel;)V +HSPLandroid/media/AudioSystem$ErrorCallback;->onError(I)V +HSPLandroid/media/AudioSystem;->getPlatformType(Landroid/content/Context;)I +HSPLandroid/media/AudioSystem;->isSingleVolume(Landroid/content/Context;)Z +HSPLandroid/media/AudioSystem;->setErrorCallback(Landroid/media/AudioSystem$ErrorCallback;)V +HSPLandroid/media/AudioSystem;->streamToString(I)Ljava/lang/String; +HSPLandroid/media/AudioTrack;->getNativeOutputSampleRate(I)I +HSPLandroid/media/BufferingParams$1;->()V +HSPLandroid/media/CamcorderProfile;->(IIIIIIIIIIII)V +HSPLandroid/media/CamcorderProfile;->get(II)Landroid/media/CamcorderProfile; +HSPLandroid/media/CamcorderProfile;->hasProfile(II)Z +HSPLandroid/media/IAudioFocusDispatcher$Stub;->()V +HSPLandroid/media/IAudioFocusDispatcher;->dispatchAudioFocusChange(ILjava/lang/String;)V +HSPLandroid/media/IAudioRoutesObserver$Stub;->()V +HSPLandroid/media/IAudioRoutesObserver$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IAudioRoutesObserver;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->getLastAudibleStreamVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeExternal()I +HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeInternal()I +HSPLandroid/media/IAudioService$Stub$Proxy;->getRingtonePlayer()Landroid/media/IRingtonePlayer; +HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMaxVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMinVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamVolume(I)I +HSPLandroid/media/IAudioService$Stub$Proxy;->isBluetoothScoOn()Z +HSPLandroid/media/IAudioService$Stub$Proxy;->isCameraSoundForced()Z +HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamAffectedByMute(I)Z +HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamMute(I)Z +HSPLandroid/media/IAudioService$Stub$Proxy;->playSoundEffect(I)V +HSPLandroid/media/IAudioService$Stub$Proxy;->playerAttributes(ILandroid/media/AudioAttributes;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumeController(Landroid/media/IVolumeController;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumePolicy(Landroid/media/VolumePolicy;)V +HSPLandroid/media/IAudioService$Stub$Proxy;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo; +HSPLandroid/media/IAudioService$Stub$Proxy;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I +HSPLandroid/media/IAudioService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioService; +HSPLandroid/media/IAudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I +HSPLandroid/media/IAudioService;->adjustStreamVolume(IIILjava/lang/String;)V +HSPLandroid/media/IAudioService;->adjustSuggestedStreamVolume(IIILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/media/IAudioService;->avrcpSupportsAbsoluteVolume(Ljava/lang/String;Z)V +HSPLandroid/media/IAudioService;->disableRingtoneSync(I)V +HSPLandroid/media/IAudioService;->disableSafeMediaVolume(Ljava/lang/String;)V +HSPLandroid/media/IAudioService;->dispatchFocusChange(Landroid/media/AudioFocusInfo;ILandroid/media/audiopolicy/IAudioPolicyCallback;)I +HSPLandroid/media/IAudioService;->forceRemoteSubmixFullVolume(ZLandroid/os/IBinder;)V +HSPLandroid/media/IAudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V +HSPLandroid/media/IAudioService;->getActivePlaybackConfigurations()Ljava/util/List; +HSPLandroid/media/IAudioService;->getActiveRecordingConfigurations()Ljava/util/List; +HSPLandroid/media/IAudioService;->getCurrentAudioFocus()I +HSPLandroid/media/IAudioService;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I +HSPLandroid/media/IAudioService;->getLastAudibleStreamVolume(I)I +HSPLandroid/media/IAudioService;->getMode()I +HSPLandroid/media/IAudioService;->getRingerModeExternal()I +HSPLandroid/media/IAudioService;->getRingerModeInternal()I +HSPLandroid/media/IAudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer; +HSPLandroid/media/IAudioService;->getStreamMaxVolume(I)I +HSPLandroid/media/IAudioService;->getStreamMinVolume(I)I +HSPLandroid/media/IAudioService;->getStreamVolume(I)I +HSPLandroid/media/IAudioService;->getUiSoundsStreamType()I +HSPLandroid/media/IAudioService;->getVibrateSetting(I)I +HSPLandroid/media/IAudioService;->handleBluetoothA2dpDeviceConfigChange(Landroid/bluetooth/BluetoothDevice;)V +HSPLandroid/media/IAudioService;->isBluetoothA2dpOn()Z +HSPLandroid/media/IAudioService;->isBluetoothScoOn()Z +HSPLandroid/media/IAudioService;->isCameraSoundForced()Z +HSPLandroid/media/IAudioService;->isHdmiSystemAudioSupported()Z +HSPLandroid/media/IAudioService;->isMasterMute()Z +HSPLandroid/media/IAudioService;->isSpeakerphoneOn()Z +HSPLandroid/media/IAudioService;->isStreamAffectedByMute(I)Z +HSPLandroid/media/IAudioService;->isStreamAffectedByRingerMode(I)Z +HSPLandroid/media/IAudioService;->isStreamMute(I)Z +HSPLandroid/media/IAudioService;->isValidRingerMode(I)Z +HSPLandroid/media/IAudioService;->loadSoundEffects()Z +HSPLandroid/media/IAudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V +HSPLandroid/media/IAudioService;->playSoundEffect(I)V +HSPLandroid/media/IAudioService;->playSoundEffectVolume(IF)V +HSPLandroid/media/IAudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V +HSPLandroid/media/IAudioService;->playerEvent(II)V +HSPLandroid/media/IAudioService;->playerHasOpPlayAudio(IZ)V +HSPLandroid/media/IAudioService;->registerAudioPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZ)Ljava/lang/String; +HSPLandroid/media/IAudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V +HSPLandroid/media/IAudioService;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V +HSPLandroid/media/IAudioService;->releasePlayer(I)V +HSPLandroid/media/IAudioService;->reloadAudioSettings()V +HSPLandroid/media/IAudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I +HSPLandroid/media/IAudioService;->setBluetoothA2dpDeviceConnectionState(Landroid/bluetooth/BluetoothDevice;II)I +HSPLandroid/media/IAudioService;->setBluetoothA2dpOn(Z)V +HSPLandroid/media/IAudioService;->setBluetoothScoOn(Z)V +HSPLandroid/media/IAudioService;->setFocusPropertiesForPolicy(ILandroid/media/audiopolicy/IAudioPolicyCallback;)I +HSPLandroid/media/IAudioService;->setHdmiSystemAudioSupported(Z)I +HSPLandroid/media/IAudioService;->setMasterMute(ZILjava/lang/String;I)V +HSPLandroid/media/IAudioService;->setMicrophoneMute(ZLjava/lang/String;I)V +HSPLandroid/media/IAudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/media/IAudioService;->setRingerModeExternal(ILjava/lang/String;)V +HSPLandroid/media/IAudioService;->setRingerModeInternal(ILjava/lang/String;)V +HSPLandroid/media/IAudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V +HSPLandroid/media/IAudioService;->setSpeakerphoneOn(Z)V +HSPLandroid/media/IAudioService;->setStreamVolume(IIILjava/lang/String;)V +HSPLandroid/media/IAudioService;->setVibrateSetting(II)V +HSPLandroid/media/IAudioService;->setVolumeController(Landroid/media/IVolumeController;)V +HSPLandroid/media/IAudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V +HSPLandroid/media/IAudioService;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/media/IAudioService;->shouldVibrate(I)Z +HSPLandroid/media/IAudioService;->startBluetoothSco(Landroid/os/IBinder;I)V +HSPLandroid/media/IAudioService;->startBluetoothScoVirtualCall(Landroid/os/IBinder;)V +HSPLandroid/media/IAudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo; +HSPLandroid/media/IAudioService;->stopBluetoothSco(Landroid/os/IBinder;)V +HSPLandroid/media/IAudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I +HSPLandroid/media/IAudioService;->unloadSoundEffects()V +HSPLandroid/media/IAudioService;->unregisterAudioFocusClient(Ljava/lang/String;)V +HSPLandroid/media/IAudioService;->unregisterAudioPolicyAsync(Landroid/media/audiopolicy/IAudioPolicyCallback;)V +HSPLandroid/media/IAudioService;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V +HSPLandroid/media/IAudioService;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V +HSPLandroid/media/IMediaHTTPConnection;->connect(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/media/IMediaHTTPConnection;->disconnect()V +HSPLandroid/media/IMediaHTTPConnection;->getMIMEType()Ljava/lang/String; +HSPLandroid/media/IMediaHTTPConnection;->getSize()J +HSPLandroid/media/IMediaHTTPConnection;->getUri()Ljava/lang/String; +HSPLandroid/media/IMediaHTTPConnection;->readAt(JI)I +HSPLandroid/media/IMediaRouterClient$Stub;->()V +HSPLandroid/media/IMediaRouterClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IMediaRouterClient;->onRestoreRoute()V +HSPLandroid/media/IMediaRouterClient;->onStateChanged()V +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V +HSPLandroid/media/IMediaRouterService$Stub$Proxy;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V +HSPLandroid/media/IMediaRouterService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterService; +HSPLandroid/media/IMediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; +HSPLandroid/media/IMediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z +HSPLandroid/media/IMediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V +HSPLandroid/media/IMediaRouterService;->requestSetVolume(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V +HSPLandroid/media/IMediaRouterService;->requestUpdateVolume(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V +HSPLandroid/media/IMediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V +HSPLandroid/media/IMediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V +HSPLandroid/media/IMediaRouterService;->unregisterClient(Landroid/media/IMediaRouterClient;)V +HSPLandroid/media/IPlaybackConfigDispatcher$Stub;->()V +HSPLandroid/media/IPlaybackConfigDispatcher;->dispatchPlaybackConfigChange(Ljava/util/List;)V +HSPLandroid/media/IPlayer$Stub;->()V +HSPLandroid/media/IPlayer$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IPlayer;->applyVolumeShaper(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)V +HSPLandroid/media/IPlayer;->pause()V +HSPLandroid/media/IPlayer;->setPan(F)V +HSPLandroid/media/IPlayer;->setStartDelayMs(I)V +HSPLandroid/media/IPlayer;->setVolume(F)V +HSPLandroid/media/IPlayer;->start()V +HSPLandroid/media/IPlayer;->stop()V +HSPLandroid/media/IRecordingConfigDispatcher$Stub;->()V +HSPLandroid/media/IRecordingConfigDispatcher;->dispatchRecordingConfigChange(Ljava/util/List;)V +HSPLandroid/media/IRemoteVolumeController$Stub;->()V +HSPLandroid/media/IRemoteVolumeController$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRemoteVolumeController;->remoteVolumeChanged(Landroid/media/session/ISessionController;I)V +HSPLandroid/media/IRemoteVolumeController;->updateRemoteController(Landroid/media/session/ISessionController;)V +HSPLandroid/media/IRemoteVolumeObserver$Stub;->()V +HSPLandroid/media/IRemoteVolumeObserver;->dispatchRemoteVolumeUpdate(II)V +HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/media/IRingtonePlayer$Stub;->()V +HSPLandroid/media/IRingtonePlayer$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IRingtonePlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRingtonePlayer; +HSPLandroid/media/IRingtonePlayer;->getTitle(Landroid/net/Uri;)Ljava/lang/String; +HSPLandroid/media/IRingtonePlayer;->isPlaying(Landroid/os/IBinder;)Z +HSPLandroid/media/IRingtonePlayer;->openRingtone(Landroid/net/Uri;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/media/IRingtonePlayer;->play(Landroid/os/IBinder;Landroid/net/Uri;Landroid/media/AudioAttributes;FZ)V +HSPLandroid/media/IRingtonePlayer;->playAsync(Landroid/net/Uri;Landroid/os/UserHandle;ZLandroid/media/AudioAttributes;)V +HSPLandroid/media/IRingtonePlayer;->setPlaybackProperties(Landroid/os/IBinder;FZ)V +HSPLandroid/media/IRingtonePlayer;->stop(Landroid/os/IBinder;)V +HSPLandroid/media/IRingtonePlayer;->stopAsync()V +HSPLandroid/media/IVolumeController$Stub;->()V +HSPLandroid/media/IVolumeController$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/IVolumeController;->dismiss()V +HSPLandroid/media/IVolumeController;->displaySafeVolumeWarning(I)V +HSPLandroid/media/IVolumeController;->masterMuteChanged(I)V +HSPLandroid/media/IVolumeController;->setA11yMode(I)V +HSPLandroid/media/IVolumeController;->setLayoutDirection(I)V +HSPLandroid/media/IVolumeController;->volumeChanged(II)V +HSPLandroid/media/Image;->()V +HSPLandroid/media/Image;->throwISEIfImageIsInvalid()V +HSPLandroid/media/ImageReader$ListenerHandler;->(Landroid/media/ImageReader;Landroid/os/Looper;)V +HSPLandroid/media/ImageReader$ListenerHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/ImageReader$OnImageAvailableListener;->onImageAvailable(Landroid/media/ImageReader;)V +HSPLandroid/media/ImageReader$SurfaceImage;->-wrap0(Landroid/media/ImageReader$SurfaceImage;)V +HSPLandroid/media/ImageReader$SurfaceImage;->(Landroid/media/ImageReader;I)V +HSPLandroid/media/ImageReader$SurfaceImage;->clearSurfacePlanes()V +HSPLandroid/media/ImageReader$SurfaceImage;->close()V +HSPLandroid/media/ImageReader$SurfaceImage;->finalize()V +HSPLandroid/media/ImageReader$SurfaceImage;->getFormat()I +HSPLandroid/media/ImageReader$SurfaceImage;->getHeight()I +HSPLandroid/media/ImageReader$SurfaceImage;->getReader()Landroid/media/ImageReader; +HSPLandroid/media/ImageReader$SurfaceImage;->getTimestamp()J +HSPLandroid/media/ImageReader$SurfaceImage;->getWidth()I +HSPLandroid/media/ImageReader;->-get0(Landroid/media/ImageReader;)Ljava/lang/Object; +HSPLandroid/media/ImageReader;->-get2(Landroid/media/ImageReader;)Z +HSPLandroid/media/ImageReader;->-get3(Landroid/media/ImageReader;)Landroid/media/ImageReader$OnImageAvailableListener; +HSPLandroid/media/ImageReader;->-get4(Landroid/media/ImageReader;)Ljava/lang/Object; +HSPLandroid/media/ImageReader;->-wrap0(Landroid/media/ImageReader;Landroid/media/Image;)V +HSPLandroid/media/ImageReader;->(IIIIJ)V +HSPLandroid/media/ImageReader;->acquireNextImage()Landroid/media/Image; +HSPLandroid/media/ImageReader;->acquireNextSurfaceImage(Landroid/media/ImageReader$SurfaceImage;)I +HSPLandroid/media/ImageReader;->close()V +HSPLandroid/media/ImageReader;->getHeight()I +HSPLandroid/media/ImageReader;->getImageFormat()I +HSPLandroid/media/ImageReader;->getMaxImages()I +HSPLandroid/media/ImageReader;->getSurface()Landroid/view/Surface; +HSPLandroid/media/ImageReader;->getWidth()I +HSPLandroid/media/ImageReader;->newInstance(IIII)Landroid/media/ImageReader; +HSPLandroid/media/ImageReader;->postEventFromNative(Ljava/lang/Object;)V +HSPLandroid/media/ImageReader;->releaseImage(Landroid/media/Image;)V +HSPLandroid/media/ImageReader;->setOnImageAvailableListener(Landroid/media/ImageReader$OnImageAvailableListener;Landroid/os/Handler;)V +HSPLandroid/media/ImageUtils;->getEstimatedNativeAllocBytes(IIII)I +HSPLandroid/media/ImageUtils;->getNumPlanesForFormat(I)I +HSPLandroid/media/ImageWriter$ListenerHandler;->(Landroid/media/ImageWriter;Landroid/os/Looper;)V +HSPLandroid/media/ImageWriter$OnImageReleasedListener;->onImageReleased(Landroid/media/ImageWriter;)V +HSPLandroid/media/ImageWriter;->(Landroid/view/Surface;II)V +HSPLandroid/media/ImageWriter;->close()V +HSPLandroid/media/ImageWriter;->getFormat()I +HSPLandroid/media/ImageWriter;->getMaxImages()I +HSPLandroid/media/ImageWriter;->newInstance(Landroid/view/Surface;I)Landroid/media/ImageWriter; +HSPLandroid/media/ImageWriter;->setOnImageReleasedListener(Landroid/media/ImageWriter$OnImageReleasedListener;Landroid/os/Handler;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->()V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLevelLimits()V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLimits(ILandroid/util/Range;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$AudioCapabilities; +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->createDiscreteSampleRates()V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->initWithPlatformLimits()V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->limitSampleRates([I)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->limitSampleRates([Landroid/util/Range;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->setDefaultFormat(Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->supports(Ljava/lang/Integer;Ljava/lang/Integer;)Z +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZILandroid/media/MediaFormat;Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZILjava/util/Map;Ljava/util/Map;)V +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->checkFeature(Ljava/lang/String;I)Z +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->dup()Landroid/media/MediaCodecInfo$CodecCapabilities; +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->getMimeType()Ljava/lang/String; +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->getValidFeatures()[Landroid/media/MediaCodecInfo$Feature; +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isEncoder()Z +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureRequired(Ljava/lang/String;)Z +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureSupported(Ljava/lang/String;)Z +HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isRegular()Z +HSPLandroid/media/MediaCodecInfo$CodecProfileLevel;->()V +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->()V +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->applyLevelLimits()V +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$EncoderCapabilities; +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->setDefaultFormat(Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$Feature;->(Ljava/lang/String;IZ)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->()V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyAlignment(II)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyBlockLimits(IILandroid/util/Range;Landroid/util/Range;Landroid/util/Range;)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyLevelLimits()V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyMacroBlockLimits(IIIIIJIIII)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyMacroBlockLimits(IIIJIIII)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$VideoCapabilities; +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->equivalentVP9Level(Landroid/media/MediaFormat;)I +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->getMeasuredFrameRates(Ljava/util/Map;)Ljava/util/Map; +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->initWithPlatformLimits()V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->parseWidthHeightRanges(Ljava/lang/Object;)Landroid/util/Pair; +HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->updateLimits()V +HSPLandroid/media/MediaCodecInfo;->-get0()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-get1()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-get2()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-get3()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-get4()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-get5()Landroid/util/Range; +HSPLandroid/media/MediaCodecInfo;->-wrap0(ILjava/lang/String;)I +HSPLandroid/media/MediaCodecInfo;->(Ljava/lang/String;Z[Landroid/media/MediaCodecInfo$CodecCapabilities;)V +HSPLandroid/media/MediaCodecInfo;->checkPowerOfTwo(ILjava/lang/String;)I +HSPLandroid/media/MediaCodecInfo;->getCapabilitiesForType(Ljava/lang/String;)Landroid/media/MediaCodecInfo$CodecCapabilities; +HSPLandroid/media/MediaCodecInfo;->getName()Ljava/lang/String; +HSPLandroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String; +HSPLandroid/media/MediaCodecInfo;->isEncoder()Z +HSPLandroid/media/MediaCodecInfo;->makeRegular()Landroid/media/MediaCodecInfo; +HSPLandroid/media/MediaCodecList;->(I)V +HSPLandroid/media/MediaCodecList;->getCodecInfos()[Landroid/media/MediaCodecInfo; +HSPLandroid/media/MediaCodecList;->getGlobalSettings()Ljava/util/Map; +HSPLandroid/media/MediaCodecList;->getNewCodecInfoAt(I)Landroid/media/MediaCodecInfo; +HSPLandroid/media/MediaCodecList;->initCodecList()V +HSPLandroid/media/MediaDrm$EventHandler;->(Landroid/media/MediaDrm;Landroid/media/MediaDrm;Landroid/os/Looper;)V +HSPLandroid/media/MediaDrm;->(Ljava/util/UUID;)V +HSPLandroid/media/MediaDrm;->getByteArrayFromUUID(Ljava/util/UUID;)[B +HSPLandroid/media/MediaFormat;->()V +HSPLandroid/media/MediaFormat;->(Ljava/util/Map;)V +HSPLandroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z +HSPLandroid/media/MediaFormat;->createSubtitleFormat(Ljava/lang/String;Ljava/lang/String;)Landroid/media/MediaFormat; +HSPLandroid/media/MediaFormat;->getMap()Ljava/util/Map; +HSPLandroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V +HSPLandroid/media/MediaFormat;->setString(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/media/MediaPlayer$1;->(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer$2;->(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer$4$1;->(Landroid/media/MediaPlayer$4;)V +HSPLandroid/media/MediaPlayer$4$1;->getSubtitleLooper()Landroid/os/Looper; +HSPLandroid/media/MediaPlayer$4$1;->setSubtitleWidget(Landroid/media/SubtitleTrack$RenderingWidget;)V +HSPLandroid/media/MediaPlayer$4;->(Landroid/media/MediaPlayer;Landroid/os/HandlerThread;)V +HSPLandroid/media/MediaPlayer$4;->run()V +HSPLandroid/media/MediaPlayer$EventHandler;->(Landroid/media/MediaPlayer;Landroid/media/MediaPlayer;Landroid/os/Looper;)V +HSPLandroid/media/MediaPlayer$EventHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/MediaPlayer$OnCompletionListener;->onCompletion(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer$OnErrorListener;->onError(Landroid/media/MediaPlayer;II)Z +HSPLandroid/media/MediaPlayer$OnSeekCompleteListener;->onSeekComplete(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer$OnSubtitleDataListener;->onSubtitleData(Landroid/media/MediaPlayer;Landroid/media/SubtitleData;)V +HSPLandroid/media/MediaPlayer$TimeProvider$EventHandler;->(Landroid/media/MediaPlayer$TimeProvider;Landroid/os/Looper;)V +HSPLandroid/media/MediaPlayer$TimeProvider;->(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer$TimeProvider;->getCurrentTimeUs(ZZ)J +HSPLandroid/media/MediaPlayer$TrackInfo$1;->()V +HSPLandroid/media/MediaPlayer$TrackInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaPlayer$TrackInfo; +HSPLandroid/media/MediaPlayer$TrackInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/MediaPlayer$TrackInfo$1;->newArray(I)[Landroid/media/MediaPlayer$TrackInfo; +HSPLandroid/media/MediaPlayer$TrackInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/media/MediaPlayer$TrackInfo;->(Landroid/os/Parcel;)V +HSPLandroid/media/MediaPlayer$TrackInfo;->getTrackType()I +HSPLandroid/media/MediaPlayer;->-get13(Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$OnPreparedListener; +HSPLandroid/media/MediaPlayer;->-get20(Landroid/media/MediaPlayer;)Landroid/media/SubtitleController; +HSPLandroid/media/MediaPlayer;->-get21(Landroid/media/MediaPlayer;)Landroid/media/MediaPlayer$TimeProvider; +HSPLandroid/media/MediaPlayer;->-get5(Landroid/media/MediaPlayer;)J +HSPLandroid/media/MediaPlayer;->-set2(Landroid/media/MediaPlayer;Landroid/media/SubtitleController;)Landroid/media/SubtitleController; +HSPLandroid/media/MediaPlayer;->-wrap2(Landroid/media/MediaPlayer;)V +HSPLandroid/media/MediaPlayer;->()V +HSPLandroid/media/MediaPlayer;->attemptDataSource(Landroid/content/ContentResolver;Landroid/net/Uri;)Z +HSPLandroid/media/MediaPlayer;->getInbandTrackInfo()[Landroid/media/MediaPlayer$TrackInfo; +HSPLandroid/media/MediaPlayer;->invoke(Landroid/os/Parcel;Landroid/os/Parcel;)V +HSPLandroid/media/MediaPlayer;->playerSetVolume(ZFF)V +HSPLandroid/media/MediaPlayer;->populateInbandTracks()V +HSPLandroid/media/MediaPlayer;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLandroid/media/MediaPlayer;->prepare()V +HSPLandroid/media/MediaPlayer;->scanInternalSubtitleTracks()V +HSPLandroid/media/MediaPlayer;->setAudioAttributes(Landroid/media/AudioAttributes;)V +HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/Context;Landroid/net/Uri;)V +HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;Ljava/util/List;)V +HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/res/AssetFileDescriptor;)V +HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/io/FileDescriptor;)V +HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/io/FileDescriptor;JJ)V +HSPLandroid/media/MediaPlayer;->setSubtitleAnchor()V +HSPLandroid/media/MediaPlayer;->setVolume(F)V +HSPLandroid/media/MediaPlayer;->setVolume(FF)V +HSPLandroid/media/MediaRouter$Callback;->()V +HSPLandroid/media/MediaRouter$Callback;->onRouteAdded(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteGrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;I)V +HSPLandroid/media/MediaRouter$Callback;->onRouteRemoved(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteSelected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteUngrouped(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;Landroid/media/MediaRouter$RouteGroup;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteUnselected(Landroid/media/MediaRouter;ILandroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$Callback;->onRouteVolumeChanged(Landroid/media/MediaRouter;Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$CallbackInfo;->(Landroid/media/MediaRouter$Callback;IILandroid/media/MediaRouter;)V +HSPLandroid/media/MediaRouter$RouteCategory;->(IIZ)V +HSPLandroid/media/MediaRouter$RouteCategory;->(Ljava/lang/CharSequence;IZ)V +HSPLandroid/media/MediaRouter$RouteCategory;->getName()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteCategory;->getName(Landroid/content/res/Resources;)Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteCategory;->isGroupable()Z +HSPLandroid/media/MediaRouter$RouteCategory;->toString()Ljava/lang/String; +HSPLandroid/media/MediaRouter$RouteInfo$1;->(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter$RouteInfo;->(Landroid/media/MediaRouter$RouteCategory;)V +HSPLandroid/media/MediaRouter$RouteInfo;->choosePresentationDisplay()Landroid/view/Display; +HSPLandroid/media/MediaRouter$RouteInfo;->getCategory()Landroid/media/MediaRouter$RouteCategory; +HSPLandroid/media/MediaRouter$RouteInfo;->getDescription()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getDeviceType()I +HSPLandroid/media/MediaRouter$RouteInfo;->getName()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getName(Landroid/content/Context;)Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getName(Landroid/content/res/Resources;)Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getPlaybackStream()I +HSPLandroid/media/MediaRouter$RouteInfo;->getPlaybackType()I +HSPLandroid/media/MediaRouter$RouteInfo;->getPresentationDisplay()Landroid/view/Display; +HSPLandroid/media/MediaRouter$RouteInfo;->getStatus()Ljava/lang/CharSequence; +HSPLandroid/media/MediaRouter$RouteInfo;->getSupportedTypes()I +HSPLandroid/media/MediaRouter$RouteInfo;->getTag()Ljava/lang/Object; +HSPLandroid/media/MediaRouter$RouteInfo;->getVolume()I +HSPLandroid/media/MediaRouter$RouteInfo;->getVolumeHandling()I +HSPLandroid/media/MediaRouter$RouteInfo;->getVolumeMax()I +HSPLandroid/media/MediaRouter$RouteInfo;->isConnecting()Z +HSPLandroid/media/MediaRouter$RouteInfo;->isEnabled()Z +HSPLandroid/media/MediaRouter$RouteInfo;->isSelected()Z +HSPLandroid/media/MediaRouter$RouteInfo;->matchesTypes(I)Z +HSPLandroid/media/MediaRouter$RouteInfo;->resolveStatusCode()Z +HSPLandroid/media/MediaRouter$RouteInfo;->toString()Ljava/lang/String; +HSPLandroid/media/MediaRouter$RouteInfo;->updatePresentationDisplay()Z +HSPLandroid/media/MediaRouter$SimpleCallback;->()V +HSPLandroid/media/MediaRouter$Static$1;->(Landroid/media/MediaRouter$Static;)V +HSPLandroid/media/MediaRouter$Static$Client;->(Landroid/media/MediaRouter$Static;)V +HSPLandroid/media/MediaRouter$Static;->(Landroid/content/Context;)V +HSPLandroid/media/MediaRouter$Static;->getAllPresentationDisplays()[Landroid/view/Display; +HSPLandroid/media/MediaRouter$Static;->isPlaybackActive()Z +HSPLandroid/media/MediaRouter$Static;->publishClientDiscoveryRequest()V +HSPLandroid/media/MediaRouter$Static;->publishClientSelectedRoute(Z)V +HSPLandroid/media/MediaRouter$Static;->rebindAsUser(I)V +HSPLandroid/media/MediaRouter$Static;->setSelectedRoute(Landroid/media/MediaRouter$RouteInfo;Z)V +HSPLandroid/media/MediaRouter$Static;->startMonitoringRoutes(Landroid/content/Context;)V +HSPLandroid/media/MediaRouter$Static;->updateAudioRoutes(Landroid/media/AudioRoutesInfo;)V +HSPLandroid/media/MediaRouter$Static;->updateClientState()V +HSPLandroid/media/MediaRouter$Static;->updateDiscoveryRequest()V +HSPLandroid/media/MediaRouter$VolumeCallback;->()V +HSPLandroid/media/MediaRouter$VolumeCallback;->onVolumeSetRequest(Landroid/media/MediaRouter$RouteInfo;I)V +HSPLandroid/media/MediaRouter$VolumeCallback;->onVolumeUpdateRequest(Landroid/media/MediaRouter$RouteInfo;I)V +HSPLandroid/media/MediaRouter$VolumeChangeReceiver;->()V +HSPLandroid/media/MediaRouter$VolumeChangeReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLandroid/media/MediaRouter$WifiDisplayStatusChangedReceiver;->()V +HSPLandroid/media/MediaRouter;->(Landroid/content/Context;)V +HSPLandroid/media/MediaRouter;->addCallback(ILandroid/media/MediaRouter$Callback;I)V +HSPLandroid/media/MediaRouter;->addRouteStatic(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->createRouteCategory(Ljava/lang/CharSequence;Z)Landroid/media/MediaRouter$RouteCategory; +HSPLandroid/media/MediaRouter;->dispatchRouteAdded(Landroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->dispatchRouteSelected(ILandroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->findCallbackInfo(Landroid/media/MediaRouter$Callback;)I +HSPLandroid/media/MediaRouter;->getDefaultRoute()Landroid/media/MediaRouter$RouteInfo; +HSPLandroid/media/MediaRouter;->getRouteAt(I)Landroid/media/MediaRouter$RouteInfo; +HSPLandroid/media/MediaRouter;->getRouteCount()I +HSPLandroid/media/MediaRouter;->getSelectedRoute(I)Landroid/media/MediaRouter$RouteInfo; +HSPLandroid/media/MediaRouter;->removeCallback(Landroid/media/MediaRouter$Callback;)V +HSPLandroid/media/MediaRouter;->selectDefaultRouteStatic()V +HSPLandroid/media/MediaRouter;->selectRoute(ILandroid/media/MediaRouter$RouteInfo;)V +HSPLandroid/media/MediaRouter;->selectRouteStatic(ILandroid/media/MediaRouter$RouteInfo;Z)V +HSPLandroid/media/MediaRouter;->typesToString(I)Ljava/lang/String; +HSPLandroid/media/MediaRouter;->updateWifiDisplayStatus(Landroid/hardware/display/WifiDisplayStatus;)V +HSPLandroid/media/MediaTimeProvider;->cancelNotifications(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V +HSPLandroid/media/MediaTimeProvider;->getCurrentTimeUs(ZZ)J +HSPLandroid/media/MediaTimeProvider;->notifyAt(JLandroid/media/MediaTimeProvider$OnMediaTimeListener;)V +HSPLandroid/media/MediaTimeProvider;->scheduleUpdate(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V +HSPLandroid/media/PlayerBase$IAppOpsCallbackWrapper;->(Landroid/media/PlayerBase;)V +HSPLandroid/media/PlayerBase$IAppOpsCallbackWrapper;->opChanged(IILjava/lang/String;)V +HSPLandroid/media/PlayerBase$IPlayerWrapper;->(Landroid/media/PlayerBase;)V +HSPLandroid/media/PlayerBase$PlayerIdCard$1;->()V +HSPLandroid/media/PlayerBase$PlayerIdCard;->(ILandroid/media/AudioAttributes;Landroid/media/IPlayer;)V +HSPLandroid/media/PlayerBase$PlayerIdCard;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/PlayerBase;->-wrap0(Landroid/media/PlayerBase;)V +HSPLandroid/media/PlayerBase;->(Landroid/media/AudioAttributes;I)V +HSPLandroid/media/PlayerBase;->baseRegisterPlayer()V +HSPLandroid/media/PlayerBase;->baseSetVolume(FF)V +HSPLandroid/media/PlayerBase;->baseUpdateAudioAttributes(Landroid/media/AudioAttributes;)V +HSPLandroid/media/PlayerBase;->deprecateStreamTypeForPlayback(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/media/PlayerBase;->getService()Landroid/media/IAudioService; +HSPLandroid/media/PlayerBase;->isRestricted_sync()Z +HSPLandroid/media/PlayerBase;->playerApplyVolumeShaper(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)I +HSPLandroid/media/PlayerBase;->playerGetVolumeShaperState(I)Landroid/media/VolumeShaper$State; +HSPLandroid/media/PlayerBase;->playerPause()V +HSPLandroid/media/PlayerBase;->playerSetAuxEffectSendLevel(ZF)I +HSPLandroid/media/PlayerBase;->playerSetVolume(ZFF)V +HSPLandroid/media/PlayerBase;->playerStart()V +HSPLandroid/media/PlayerBase;->playerStop()V +HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio()V +HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio_sync()V +HSPLandroid/media/Ringtone$MyOnCompletionListener;->(Landroid/media/Ringtone;)V +HSPLandroid/media/Ringtone;->(Landroid/content/Context;Z)V +HSPLandroid/media/Ringtone;->applyPlaybackProperties_sync()V +HSPLandroid/media/Ringtone;->destroyLocalPlayer()V +HSPLandroid/media/Ringtone;->getTitle(Landroid/content/Context;)Ljava/lang/String; +HSPLandroid/media/Ringtone;->getTitle(Landroid/content/Context;Landroid/net/Uri;ZZ)Ljava/lang/String; +HSPLandroid/media/Ringtone;->setUri(Landroid/net/Uri;)V +HSPLandroid/media/RingtoneManager;->(Landroid/content/Context;)V +HSPLandroid/media/RingtoneManager;->(Landroid/content/Context;Z)V +HSPLandroid/media/RingtoneManager;->constructBooleanTrueWhereClause(Ljava/util/List;)Ljava/lang/String; +HSPLandroid/media/RingtoneManager;->getActualDefaultRingtoneUri(Landroid/content/Context;I)Landroid/net/Uri; +HSPLandroid/media/RingtoneManager;->getCacheForType(II)Landroid/net/Uri; +HSPLandroid/media/RingtoneManager;->getCursor()Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->getDefaultType(Landroid/net/Uri;)I +HSPLandroid/media/RingtoneManager;->getDefaultUri(I)Landroid/net/Uri; +HSPLandroid/media/RingtoneManager;->getInternalRingtones()Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->getMediaRingtones()Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->getMediaRingtones(Landroid/content/Context;)Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone; +HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;I)Landroid/media/Ringtone; +HSPLandroid/media/RingtoneManager;->getRingtoneUri(I)Landroid/net/Uri; +HSPLandroid/media/RingtoneManager;->getSettingForType(I)Ljava/lang/String; +HSPLandroid/media/RingtoneManager;->getUriFromCursor(Landroid/database/Cursor;)Landroid/net/Uri; +HSPLandroid/media/RingtoneManager;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;)Landroid/database/Cursor; +HSPLandroid/media/RingtoneManager;->setFilterColumnsList(I)V +HSPLandroid/media/RingtoneManager;->setType(I)V +HSPLandroid/media/SoundPool$Builder;->()V +HSPLandroid/media/SoundPool$Builder;->build()Landroid/media/SoundPool; +HSPLandroid/media/SoundPool$Builder;->setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/SoundPool$Builder; +HSPLandroid/media/SoundPool$Builder;->setMaxStreams(I)Landroid/media/SoundPool$Builder; +HSPLandroid/media/SoundPool$EventHandler;->(Landroid/media/SoundPool;Landroid/os/Looper;)V +HSPLandroid/media/SoundPool$EventHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/SoundPool$OnLoadCompleteListener;->onLoadComplete(Landroid/media/SoundPool;II)V +HSPLandroid/media/SoundPool;->-get0()Z +HSPLandroid/media/SoundPool;->-get1(Landroid/media/SoundPool;)Ljava/lang/Object; +HSPLandroid/media/SoundPool;->-get2(Landroid/media/SoundPool;)Landroid/media/SoundPool$OnLoadCompleteListener; +HSPLandroid/media/SoundPool;->(III)V +HSPLandroid/media/SoundPool;->(ILandroid/media/AudioAttributes;)V +HSPLandroid/media/SoundPool;->(ILandroid/media/AudioAttributes;Landroid/media/SoundPool;)V +HSPLandroid/media/SoundPool;->load(Landroid/content/Context;II)I +HSPLandroid/media/SoundPool;->load(Ljava/lang/String;I)I +HSPLandroid/media/SoundPool;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLandroid/media/SoundPool;->setOnLoadCompleteListener(Landroid/media/SoundPool$OnLoadCompleteListener;)V +HSPLandroid/media/SubtitleController$1;->(Landroid/media/SubtitleController;)V +HSPLandroid/media/SubtitleController$1;->handleMessage(Landroid/os/Message;)Z +HSPLandroid/media/SubtitleController$2;->(Landroid/media/SubtitleController;)V +HSPLandroid/media/SubtitleController$Anchor;->getSubtitleLooper()Landroid/os/Looper; +HSPLandroid/media/SubtitleController$Anchor;->setSubtitleWidget(Landroid/media/SubtitleTrack$RenderingWidget;)V +HSPLandroid/media/SubtitleController$Listener;->onSubtitleTrackSelected(Landroid/media/SubtitleTrack;)V +HSPLandroid/media/SubtitleController;->-wrap1(Landroid/media/SubtitleController;)V +HSPLandroid/media/SubtitleController;->(Landroid/content/Context;Landroid/media/MediaTimeProvider;Landroid/media/SubtitleController$Listener;)V +HSPLandroid/media/SubtitleController;->checkAnchorLooper()V +HSPLandroid/media/SubtitleController;->doSelectDefaultTrack()V +HSPLandroid/media/SubtitleController;->getDefaultTrack()Landroid/media/SubtitleTrack; +HSPLandroid/media/SubtitleController;->getRenderingWidget()Landroid/media/SubtitleTrack$RenderingWidget; +HSPLandroid/media/SubtitleController;->processOnAnchor(Landroid/os/Message;)V +HSPLandroid/media/SubtitleController;->selectDefaultTrack()V +HSPLandroid/media/SubtitleController;->setAnchor(Landroid/media/SubtitleController$Anchor;)V +HSPLandroid/media/ToneGenerator;->(II)V +HSPLandroid/media/Utils$1;->()V +HSPLandroid/media/Utils$1;->compare(Landroid/util/Range;Landroid/util/Range;)I +HSPLandroid/media/Utils$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/media/Utils$2;->()V +HSPLandroid/media/Utils$2;->compare(Landroid/util/Range;Landroid/util/Range;)I +HSPLandroid/media/Utils$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/media/Utils;->alignRange(Landroid/util/Range;I)Landroid/util/Range; +HSPLandroid/media/Utils;->binarySearchDistinctRanges([Landroid/util/Range;Ljava/lang/Comparable;)I +HSPLandroid/media/Utils;->divUp(II)I +HSPLandroid/media/Utils;->divUp(JJ)J +HSPLandroid/media/Utils;->factorRange(Landroid/util/Range;I)Landroid/util/Range; +HSPLandroid/media/Utils;->factorRange(Landroid/util/Range;J)Landroid/util/Range; +HSPLandroid/media/Utils;->intersectSortedDistinctRanges([Landroid/util/Range;[Landroid/util/Range;)[Landroid/util/Range; +HSPLandroid/media/Utils;->parseIntRange(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range; +HSPLandroid/media/Utils;->parseIntSafely(Ljava/lang/Object;I)I +HSPLandroid/media/Utils;->parseLongRange(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range; +HSPLandroid/media/Utils;->parseRationalRange(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range; +HSPLandroid/media/Utils;->parseSize(Ljava/lang/Object;Landroid/util/Size;)Landroid/util/Size; +HSPLandroid/media/Utils;->parseSizeRange(Ljava/lang/Object;)Landroid/util/Pair; +HSPLandroid/media/Utils;->scaleRange(Landroid/util/Range;II)Landroid/util/Range; +HSPLandroid/media/Utils;->sortDistinctRanges([Landroid/util/Range;)V +HSPLandroid/media/VolumeAutomation;->createVolumeShaper(Landroid/media/VolumeShaper$Configuration;)Landroid/media/VolumeShaper; +HSPLandroid/media/VolumePolicy$1;->()V +HSPLandroid/media/VolumePolicy;->(ZZZI)V +HSPLandroid/media/VolumePolicy;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/projection/IMediaProjectionManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/media/projection/IMediaProjectionManager$Stub$Proxy;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +HSPLandroid/media/projection/IMediaProjectionManager$Stub$Proxy;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +HSPLandroid/media/projection/IMediaProjectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionManager; +HSPLandroid/media/projection/IMediaProjectionManager;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +HSPLandroid/media/projection/IMediaProjectionManager;->createProjection(ILjava/lang/String;IZ)Landroid/media/projection/IMediaProjection; +HSPLandroid/media/projection/IMediaProjectionManager;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +HSPLandroid/media/projection/IMediaProjectionManager;->hasProjectionPermission(ILjava/lang/String;)Z +HSPLandroid/media/projection/IMediaProjectionManager;->isValidMediaProjection(Landroid/media/projection/IMediaProjection;)Z +HSPLandroid/media/projection/IMediaProjectionManager;->removeCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +HSPLandroid/media/projection/IMediaProjectionManager;->stopActiveProjection()V +HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;->()V +HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/projection/IMediaProjectionWatcherCallback;->onStart(Landroid/media/projection/MediaProjectionInfo;)V +HSPLandroid/media/projection/IMediaProjectionWatcherCallback;->onStop(Landroid/media/projection/MediaProjectionInfo;)V +HSPLandroid/media/projection/MediaProjectionManager$Callback;->()V +HSPLandroid/media/projection/MediaProjectionManager$Callback;->onStart(Landroid/media/projection/MediaProjectionInfo;)V +HSPLandroid/media/projection/MediaProjectionManager$Callback;->onStop(Landroid/media/projection/MediaProjectionInfo;)V +HSPLandroid/media/projection/MediaProjectionManager$CallbackDelegate;->(Landroid/media/projection/MediaProjectionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/projection/MediaProjectionManager;->(Landroid/content/Context;)V +HSPLandroid/media/projection/MediaProjectionManager;->addCallback(Landroid/media/projection/MediaProjectionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/projection/MediaProjectionManager;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +HSPLandroid/media/session/IActiveSessionsListener$Stub;->()V +HSPLandroid/media/session/IActiveSessionsListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/IActiveSessionsListener;->onActiveSessionsChanged(Ljava/util/List;)V +HSPLandroid/media/session/ICallback$Stub;->()V +HSPLandroid/media/session/ICallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/media/session/ICallback;->onAddressedPlayerChangedToMediaButtonReceiver(Landroid/content/ComponentName;)V +HSPLandroid/media/session/ICallback;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V +HSPLandroid/media/session/ICallback;->onMediaKeyEventDispatchedToMediaButtonReceiver(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V +HSPLandroid/media/session/ICallback;->onMediaKeyEventDispatchedToMediaSession(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->setCallback(Landroid/media/session/ICallback;)V +HSPLandroid/media/session/ISessionManager$Stub$Proxy;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +HSPLandroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager; +HSPLandroid/media/session/ISessionManager;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V +HSPLandroid/media/session/ISessionManager;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;I)Landroid/media/session/ISession; +HSPLandroid/media/session/ISessionManager;->dispatchAdjustVolume(III)V +HSPLandroid/media/session/ISessionManager;->dispatchMediaKeyEvent(Landroid/view/KeyEvent;Z)V +HSPLandroid/media/session/ISessionManager;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V +HSPLandroid/media/session/ISessionManager;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; +HSPLandroid/media/session/ISessionManager;->isGlobalPriorityActive()Z +HSPLandroid/media/session/ISessionManager;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V +HSPLandroid/media/session/ISessionManager;->setCallback(Landroid/media/session/ICallback;)V +HSPLandroid/media/session/ISessionManager;->setOnMediaKeyListener(Landroid/media/session/IOnMediaKeyListener;)V +HSPLandroid/media/session/ISessionManager;->setOnVolumeKeyLongPressListener(Landroid/media/session/IOnVolumeKeyLongPressListener;)V +HSPLandroid/media/session/ISessionManager;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +HSPLandroid/media/session/MediaController$Callback;->()V +HSPLandroid/media/session/MediaSession$Callback;->()V +HSPLandroid/media/session/MediaSessionManager$Callback;->()V +HSPLandroid/media/session/MediaSessionManager$Callback;->onAddressedPlayerChanged(Landroid/content/ComponentName;)V +HSPLandroid/media/session/MediaSessionManager$Callback;->onAddressedPlayerChanged(Landroid/media/session/MediaSession$Token;)V +HSPLandroid/media/session/MediaSessionManager$Callback;->onMediaKeyEventDispatched(Landroid/view/KeyEvent;Landroid/content/ComponentName;)V +HSPLandroid/media/session/MediaSessionManager$Callback;->onMediaKeyEventDispatched(Landroid/view/KeyEvent;Landroid/media/session/MediaSession$Token;)V +HSPLandroid/media/session/MediaSessionManager$CallbackImpl;->(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;->onActiveSessionsChanged(Ljava/util/List;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->-get3(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/IActiveSessionsListener$Stub; +HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->(Landroid/content/Context;Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->(Landroid/content/Context;)V +HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;ILandroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->getActiveSessions(Landroid/content/ComponentName;)Ljava/util/List; +HSPLandroid/media/session/MediaSessionManager;->getActiveSessionsForUser(Landroid/content/ComponentName;I)Ljava/util/List; +HSPLandroid/media/session/MediaSessionManager;->removeOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;)V +HSPLandroid/media/session/MediaSessionManager;->setCallback(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V +HSPLandroid/media/session/MediaSessionManager;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +HSPLandroid/media/session/PlaybackState$1;->()V +HSPLandroid/media/session/PlaybackState$Builder;->()V +HSPLandroid/media/session/PlaybackState$Builder;->build()Landroid/media/session/PlaybackState; +HSPLandroid/media/session/PlaybackState$Builder;->setState(IJF)Landroid/media/session/PlaybackState$Builder; +HSPLandroid/media/session/PlaybackState$Builder;->setState(IJFJ)Landroid/media/session/PlaybackState$Builder; +HSPLandroid/media/session/PlaybackState;->(IJJFJJLjava/util/List;JLjava/lang/CharSequence;Landroid/os/Bundle;)V +HSPLandroid/media/session/PlaybackState;->(IJJFJJLjava/util/List;JLjava/lang/CharSequence;Landroid/os/Bundle;Landroid/media/session/PlaybackState;)V +HSPLandroid/media/session/PlaybackState;->getState()I +HSPLandroid/media/session/PlaybackState;->toString()Ljava/lang/String; +HSPLandroid/metrics/LogMaker;->(I)V +HSPLandroid/metrics/LogMaker;->addTaggedData(ILjava/lang/Object;)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->getType()I +HSPLandroid/metrics/LogMaker;->isValidValue(Ljava/lang/Object;)Z +HSPLandroid/metrics/LogMaker;->serialize()[Ljava/lang/Object; +HSPLandroid/metrics/LogMaker;->setCategory(I)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->setPackageName(Ljava/lang/String;)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->setSubtype(I)Landroid/metrics/LogMaker; +HSPLandroid/metrics/LogMaker;->setType(I)Landroid/metrics/LogMaker; +HSPLandroid/metrics/MetricsReader$LogReader;->()V +HSPLandroid/metrics/MetricsReader;->()V +HSPLandroid/net/ConnectivityManager$CallbackHandler;->(Landroid/net/ConnectivityManager;Landroid/os/Handler;)V +HSPLandroid/net/ConnectivityManager$CallbackHandler;->(Landroid/net/ConnectivityManager;Landroid/os/Looper;)V +HSPLandroid/net/ConnectivityManager$CallbackHandler;->getObject(Landroid/os/Message;Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroid/net/ConnectivityManager$CallbackHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/net/ConnectivityManager$NetworkCallback;->-get0(Landroid/net/ConnectivityManager$NetworkCallback;)Landroid/net/NetworkRequest; +HSPLandroid/net/ConnectivityManager$NetworkCallback;->-set0(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/net/NetworkRequest;)Landroid/net/NetworkRequest; +HSPLandroid/net/ConnectivityManager$NetworkCallback;->()V +HSPLandroid/net/ConnectivityManager$NetworkCallback;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V +HSPLandroid/net/ConnectivityManager$PacketKeepaliveCallback;->()V +HSPLandroid/net/ConnectivityManager;->-get1()Ljava/util/HashMap; +HSPLandroid/net/ConnectivityManager;->(Landroid/content/Context;Landroid/net/IConnectivityManager;)V +HSPLandroid/net/ConnectivityManager;->checkCallbackNotNull(Landroid/net/ConnectivityManager$NetworkCallback;)V +HSPLandroid/net/ConnectivityManager;->from(Landroid/content/Context;)Landroid/net/ConnectivityManager; +HSPLandroid/net/ConnectivityManager;->getActiveNetwork()Landroid/net/Network; +HSPLandroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; +HSPLandroid/net/ConnectivityManager;->getAllNetworks()[Landroid/net/Network; +HSPLandroid/net/ConnectivityManager;->getDefaultHandler()Landroid/net/ConnectivityManager$CallbackHandler; +HSPLandroid/net/ConnectivityManager;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties; +HSPLandroid/net/ConnectivityManager;->getMobileDataEnabled()Z +HSPLandroid/net/ConnectivityManager;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/ConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo; +HSPLandroid/net/ConnectivityManager;->getNetworkInfo(Landroid/net/Network;)Landroid/net/NetworkInfo; +HSPLandroid/net/ConnectivityManager;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; +HSPLandroid/net/ConnectivityManager;->getNetworkPolicyManager()Landroid/net/INetworkPolicyManager; +HSPLandroid/net/ConnectivityManager;->getRestrictBackgroundStatus()I +HSPLandroid/net/ConnectivityManager;->isActiveNetworkMetered()Z +HSPLandroid/net/ConnectivityManager;->isNetworkSupported(I)Z +HSPLandroid/net/ConnectivityManager;->isNetworkTypeValid(I)Z +HSPLandroid/net/ConnectivityManager;->isTetheringSupported()Z +HSPLandroid/net/ConnectivityManager;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V +HSPLandroid/net/ConnectivityManager;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V +HSPLandroid/net/ConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V +HSPLandroid/net/ConnectivityManager;->sendRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/net/ConnectivityManager$NetworkCallback;IIILandroid/net/ConnectivityManager$CallbackHandler;)Landroid/net/NetworkRequest; +HSPLandroid/net/ConnectivityThread$Singleton;->-get0()Landroid/net/ConnectivityThread; +HSPLandroid/net/ConnectivityThread;->-wrap0()Landroid/net/ConnectivityThread; +HSPLandroid/net/ConnectivityThread;->()V +HSPLandroid/net/ConnectivityThread;->createInstance()Landroid/net/ConnectivityThread; +HSPLandroid/net/ConnectivityThread;->getInstanceLooper()Landroid/os/Looper; +HSPLandroid/net/EventLogTags;->writeNtpSuccess(Ljava/lang/String;JJ)V +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetwork()Landroid/net/Network; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfo()Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworks()[Landroid/net/Network; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getNetworkInfo(I)Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isActiveNetworkMetered()Z +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isNetworkSupported(I)Z +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isTetheringSupported(Ljava/lang/String;)Z +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest; +HSPLandroid/net/IConnectivityManager$Stub$Proxy;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V +HSPLandroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager; +HSPLandroid/net/IConnectivityManager;->addVpnAddress(Ljava/lang/String;I)Z +HSPLandroid/net/IConnectivityManager;->checkMobileProvisioning(I)I +HSPLandroid/net/IConnectivityManager;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/net/IConnectivityManager;->factoryReset()V +HSPLandroid/net/IConnectivityManager;->getActiveLinkProperties()Landroid/net/LinkProperties; +HSPLandroid/net/IConnectivityManager;->getActiveNetwork()Landroid/net/Network; +HSPLandroid/net/IConnectivityManager;->getActiveNetworkForUid(IZ)Landroid/net/Network; +HSPLandroid/net/IConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager;->getActiveNetworkQuotaInfo()Landroid/net/NetworkQuotaInfo; +HSPLandroid/net/IConnectivityManager;->getAllNetworkInfo()[Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager;->getAllNetworkState()[Landroid/net/NetworkState; +HSPLandroid/net/IConnectivityManager;->getAllNetworks()[Landroid/net/Network; +HSPLandroid/net/IConnectivityManager;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo; +HSPLandroid/net/IConnectivityManager;->getAlwaysOnVpnPackage(I)Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getCaptivePortalServerUrl()Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +HSPLandroid/net/IConnectivityManager;->getGlobalProxy()Landroid/net/ProxyInfo; +HSPLandroid/net/IConnectivityManager;->getLastTetherError(Ljava/lang/String;)I +HSPLandroid/net/IConnectivityManager;->getLegacyVpnInfo(I)Lcom/android/internal/net/LegacyVpnInfo; +HSPLandroid/net/IConnectivityManager;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties; +HSPLandroid/net/IConnectivityManager;->getLinkPropertiesForType(I)Landroid/net/LinkProperties; +HSPLandroid/net/IConnectivityManager;->getMobileProvisioningUrl()Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getMultipathPreference(Landroid/net/Network;)I +HSPLandroid/net/IConnectivityManager;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/IConnectivityManager;->getNetworkForType(I)Landroid/net/Network; +HSPLandroid/net/IConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; +HSPLandroid/net/IConnectivityManager;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; +HSPLandroid/net/IConnectivityManager;->getRestoreDefaultNetworkDelay(I)I +HSPLandroid/net/IConnectivityManager;->getTetherableBluetoothRegexs()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetherableIfaces()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetherableUsbRegexs()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetherableWifiRegexs()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetheredDhcpRanges()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetheredIfaces()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getTetheringErroredIfaces()[Ljava/lang/String; +HSPLandroid/net/IConnectivityManager;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig; +HSPLandroid/net/IConnectivityManager;->isActiveNetworkMetered()Z +HSPLandroid/net/IConnectivityManager;->isAlwaysOnVpnPackageSupported(ILjava/lang/String;)Z +HSPLandroid/net/IConnectivityManager;->isNetworkSupported(I)Z +HSPLandroid/net/IConnectivityManager;->isTetheringSupported(Ljava/lang/String;)Z +HSPLandroid/net/IConnectivityManager;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest; +HSPLandroid/net/IConnectivityManager;->pendingListenForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)V +HSPLandroid/net/IConnectivityManager;->pendingRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)Landroid/net/NetworkRequest; +HSPLandroid/net/IConnectivityManager;->prepareVpn(Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/net/IConnectivityManager;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I +HSPLandroid/net/IConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V +HSPLandroid/net/IConnectivityManager;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V +HSPLandroid/net/IConnectivityManager;->releasePendingNetworkRequest(Landroid/app/PendingIntent;)V +HSPLandroid/net/IConnectivityManager;->removeVpnAddress(Ljava/lang/String;I)Z +HSPLandroid/net/IConnectivityManager;->reportInetCondition(II)V +HSPLandroid/net/IConnectivityManager;->reportNetworkConnectivity(Landroid/net/Network;Z)V +HSPLandroid/net/IConnectivityManager;->requestBandwidthUpdate(Landroid/net/Network;)Z +HSPLandroid/net/IConnectivityManager;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest; +HSPLandroid/net/IConnectivityManager;->requestRouteToHostAddress(I[B)Z +HSPLandroid/net/IConnectivityManager;->setAcceptUnvalidated(Landroid/net/Network;ZZ)V +HSPLandroid/net/IConnectivityManager;->setAirplaneMode(Z)V +HSPLandroid/net/IConnectivityManager;->setAlwaysOnVpnPackage(ILjava/lang/String;Z)Z +HSPLandroid/net/IConnectivityManager;->setAvoidUnvalidated(Landroid/net/Network;)V +HSPLandroid/net/IConnectivityManager;->setGlobalProxy(Landroid/net/ProxyInfo;)V +HSPLandroid/net/IConnectivityManager;->setProvisioningNotificationVisible(ZILjava/lang/String;)V +HSPLandroid/net/IConnectivityManager;->setUnderlyingNetworksForVpn([Landroid/net/Network;)Z +HSPLandroid/net/IConnectivityManager;->setUsbTethering(ZLjava/lang/String;)I +HSPLandroid/net/IConnectivityManager;->setVpnPackageAuthorization(Ljava/lang/String;IZ)V +HSPLandroid/net/IConnectivityManager;->startCaptivePortalApp(Landroid/net/Network;)V +HSPLandroid/net/IConnectivityManager;->startLegacyVpn(Lcom/android/internal/net/VpnProfile;)V +HSPLandroid/net/IConnectivityManager;->startNattKeepalive(Landroid/net/Network;ILandroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;ILjava/lang/String;)V +HSPLandroid/net/IConnectivityManager;->startTethering(ILandroid/os/ResultReceiver;ZLjava/lang/String;)V +HSPLandroid/net/IConnectivityManager;->stopKeepalive(Landroid/net/Network;I)V +HSPLandroid/net/IConnectivityManager;->stopTethering(ILjava/lang/String;)V +HSPLandroid/net/IConnectivityManager;->tether(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/net/IConnectivityManager;->unregisterNetworkFactory(Landroid/os/Messenger;)V +HSPLandroid/net/IConnectivityManager;->untether(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/net/IConnectivityManager;->updateLockdownVpn()Z +HSPLandroid/net/INetworkPolicyListener$Stub;->()V +HSPLandroid/net/INetworkPolicyListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/net/INetworkPolicyListener;->onMeteredIfacesChanged([Ljava/lang/String;)V +HSPLandroid/net/INetworkPolicyListener;->onRestrictBackgroundChanged(Z)V +HSPLandroid/net/INetworkPolicyListener;->onUidPoliciesChanged(II)V +HSPLandroid/net/INetworkPolicyListener;->onUidRulesChanged(II)V +HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->getRestrictBackground()Z +HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->getRestrictBackgroundByCaller()I +HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->registerListener(Landroid/net/INetworkPolicyListener;)V +HSPLandroid/net/INetworkPolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyManager; +HSPLandroid/net/INetworkPolicyManager;->addUidPolicy(II)V +HSPLandroid/net/INetworkPolicyManager;->factoryReset(Ljava/lang/String;)V +HSPLandroid/net/INetworkPolicyManager;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy; +HSPLandroid/net/INetworkPolicyManager;->getNetworkQuotaInfo(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo; +HSPLandroid/net/INetworkPolicyManager;->getRestrictBackground()Z +HSPLandroid/net/INetworkPolicyManager;->getRestrictBackgroundByCaller()I +HSPLandroid/net/INetworkPolicyManager;->getSubscriptionPlans(ILjava/lang/String;)[Landroid/telephony/SubscriptionPlan; +HSPLandroid/net/INetworkPolicyManager;->getUidPolicy(I)I +HSPLandroid/net/INetworkPolicyManager;->getUidsWithPolicy(I)[I +HSPLandroid/net/INetworkPolicyManager;->isUidForeground(I)Z +HSPLandroid/net/INetworkPolicyManager;->isUidNetworkingBlocked(IZ)Z +HSPLandroid/net/INetworkPolicyManager;->onTetheringChanged(Ljava/lang/String;Z)V +HSPLandroid/net/INetworkPolicyManager;->registerListener(Landroid/net/INetworkPolicyListener;)V +HSPLandroid/net/INetworkPolicyManager;->removeUidPolicy(II)V +HSPLandroid/net/INetworkPolicyManager;->setDeviceIdleMode(Z)V +HSPLandroid/net/INetworkPolicyManager;->setNetworkPolicies([Landroid/net/NetworkPolicy;)V +HSPLandroid/net/INetworkPolicyManager;->setRestrictBackground(Z)V +HSPLandroid/net/INetworkPolicyManager;->setSubscriptionPlans(I[Landroid/telephony/SubscriptionPlan;Ljava/lang/String;)V +HSPLandroid/net/INetworkPolicyManager;->setUidPolicy(II)V +HSPLandroid/net/INetworkPolicyManager;->setWifiMeteredOverride(Ljava/lang/String;I)V +HSPLandroid/net/INetworkPolicyManager;->snoozeLimit(Landroid/net/NetworkTemplate;)V +HSPLandroid/net/INetworkPolicyManager;->unregisterListener(Landroid/net/INetworkPolicyListener;)V +HSPLandroid/net/INetworkRecommendationProvider$Stub;->()V +HSPLandroid/net/INetworkRecommendationProvider;->requestScores([Landroid/net/NetworkKey;)V +HSPLandroid/net/INetworkScoreCache$Stub;->()V +HSPLandroid/net/INetworkScoreCache;->clearScores()V +HSPLandroid/net/INetworkScoreCache;->updateScores(Ljava/util/List;)V +HSPLandroid/net/INetworkScoreService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreService; +HSPLandroid/net/INetworkScoreService;->clearScores()Z +HSPLandroid/net/INetworkScoreService;->disableScoring()V +HSPLandroid/net/INetworkScoreService;->getActiveScorer()Landroid/net/NetworkScorerAppData; +HSPLandroid/net/INetworkScoreService;->getActiveScorerPackage()Ljava/lang/String; +HSPLandroid/net/INetworkScoreService;->getAllValidScorers()Ljava/util/List; +HSPLandroid/net/INetworkScoreService;->isCallerActiveScorer(I)Z +HSPLandroid/net/INetworkScoreService;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V +HSPLandroid/net/INetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z +HSPLandroid/net/INetworkScoreService;->setActiveScorer(Ljava/lang/String;)Z +HSPLandroid/net/INetworkScoreService;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V +HSPLandroid/net/INetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z +HSPLandroid/net/INetworkStatsService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String; +HSPLandroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService; +HSPLandroid/net/INetworkStatsService;->advisePersistThreshold(J)V +HSPLandroid/net/INetworkStatsService;->forceUpdate()V +HSPLandroid/net/INetworkStatsService;->forceUpdateIfaces()V +HSPLandroid/net/INetworkStatsService;->getDataLayerSnapshotForUid(I)Landroid/net/NetworkStats; +HSPLandroid/net/INetworkStatsService;->getMobileIfaces()[Ljava/lang/String; +HSPLandroid/net/INetworkStatsService;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J +HSPLandroid/net/INetworkStatsService;->incrementOperationCount(III)V +HSPLandroid/net/INetworkStatsService;->openSession()Landroid/net/INetworkStatsSession; +HSPLandroid/net/INetworkStatsService;->openSessionForUsageStats(ILjava/lang/String;)Landroid/net/INetworkStatsSession; +HSPLandroid/net/INetworkStatsService;->registerUsageCallback(Ljava/lang/String;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/DataUsageRequest; +HSPLandroid/net/INetworkStatsService;->setUidForeground(IZ)V +HSPLandroid/net/INetworkStatsService;->unregisterUsageRequest(Landroid/net/DataUsageRequest;)V +HSPLandroid/net/IpConfiguration$1;->()V +HSPLandroid/net/IpConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/IpConfiguration; +HSPLandroid/net/IpConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/IpConfiguration$IpAssignment;->(Ljava/lang/String;I)V +HSPLandroid/net/IpConfiguration$IpAssignment;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$IpAssignment; +HSPLandroid/net/IpConfiguration$IpAssignment;->values()[Landroid/net/IpConfiguration$IpAssignment; +HSPLandroid/net/IpConfiguration$ProxySettings;->(Ljava/lang/String;I)V +HSPLandroid/net/IpConfiguration$ProxySettings;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$ProxySettings; +HSPLandroid/net/IpConfiguration$ProxySettings;->values()[Landroid/net/IpConfiguration$ProxySettings; +HSPLandroid/net/IpConfiguration;->()V +HSPLandroid/net/IpConfiguration;->init(Landroid/net/IpConfiguration$IpAssignment;Landroid/net/IpConfiguration$ProxySettings;Landroid/net/StaticIpConfiguration;Landroid/net/ProxyInfo;)V +HSPLandroid/net/IpPrefix$1;->()V +HSPLandroid/net/IpPrefix$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/IpPrefix; +HSPLandroid/net/IpPrefix$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/IpPrefix;->([BI)V +HSPLandroid/net/IpPrefix;->checkAndMaskAddressAndPrefixLength()V +HSPLandroid/net/IpPrefix;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/IpPrefix;->getAddress()Ljava/net/InetAddress; +HSPLandroid/net/IpPrefix;->getPrefixLength()I +HSPLandroid/net/LinkAddress$1;->()V +HSPLandroid/net/LinkAddress$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/LinkAddress; +HSPLandroid/net/LinkAddress$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/LinkAddress;->(Ljava/net/InetAddress;III)V +HSPLandroid/net/LinkAddress;->init(Ljava/net/InetAddress;III)V +HSPLandroid/net/LinkAddress;->isSameAddressAs(Landroid/net/LinkAddress;)Z +HSPLandroid/net/LinkProperties$1;->()V +HSPLandroid/net/LinkProperties$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/LinkProperties; +HSPLandroid/net/LinkProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/LinkProperties;->()V +HSPLandroid/net/LinkProperties;->addDnsServer(Ljava/net/InetAddress;)Z +HSPLandroid/net/LinkProperties;->addLinkAddress(Landroid/net/LinkAddress;)Z +HSPLandroid/net/LinkProperties;->addRoute(Landroid/net/RouteInfo;)Z +HSPLandroid/net/LinkProperties;->findLinkAddressIndex(Landroid/net/LinkAddress;)I +HSPLandroid/net/LinkProperties;->getDnsServers()Ljava/util/List; +HSPLandroid/net/LinkProperties;->routeWithInterface(Landroid/net/RouteInfo;)Landroid/net/RouteInfo; +HSPLandroid/net/LinkProperties;->setDomains(Ljava/lang/String;)V +HSPLandroid/net/LinkProperties;->setInterfaceName(Ljava/lang/String;)V +HSPLandroid/net/LinkProperties;->setMtu(I)V +HSPLandroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V +HSPLandroid/net/LocalServerSocket;->(Ljava/lang/String;)V +HSPLandroid/net/LocalServerSocket;->close()V +HSPLandroid/net/LocalServerSocket;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/net/LocalSocket;->()V +HSPLandroid/net/LocalSocket;->(I)V +HSPLandroid/net/LocalSocket;->(Landroid/net/LocalSocketImpl;I)V +HSPLandroid/net/LocalSocket;->close()V +HSPLandroid/net/LocalSocket;->connect(Landroid/net/LocalSocketAddress;)V +HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Landroid/net/LocalSocketImpl;I)Landroid/net/LocalSocket; +HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Ljava/io/FileDescriptor;)Landroid/net/LocalSocket; +HSPLandroid/net/LocalSocket;->getInputStream()Ljava/io/InputStream; +HSPLandroid/net/LocalSocket;->getOutputStream()Ljava/io/OutputStream; +HSPLandroid/net/LocalSocket;->implCreateIfNeeded()V +HSPLandroid/net/LocalSocket;->toString()Ljava/lang/String; +HSPLandroid/net/LocalSocketAddress$Namespace;->(Ljava/lang/String;II)V +HSPLandroid/net/LocalSocketAddress$Namespace;->getId()I +HSPLandroid/net/LocalSocketAddress;->(Ljava/lang/String;)V +HSPLandroid/net/LocalSocketAddress;->(Ljava/lang/String;Landroid/net/LocalSocketAddress$Namespace;)V +HSPLandroid/net/LocalSocketAddress;->getName()Ljava/lang/String; +HSPLandroid/net/LocalSocketAddress;->getNamespace()Landroid/net/LocalSocketAddress$Namespace; +HSPLandroid/net/LocalSocketImpl$SocketInputStream;->(Landroid/net/LocalSocketImpl;)V +HSPLandroid/net/LocalSocketImpl$SocketInputStream;->read([BII)I +HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->(Landroid/net/LocalSocketImpl;)V +HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->flush()V +HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->write([B)V +HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->write([BII)V +HSPLandroid/net/LocalSocketImpl;->-get0(Landroid/net/LocalSocketImpl;)Ljava/io/FileDescriptor; +HSPLandroid/net/LocalSocketImpl;->-get1(Landroid/net/LocalSocketImpl;)Ljava/lang/Object; +HSPLandroid/net/LocalSocketImpl;->-get2(Landroid/net/LocalSocketImpl;)Ljava/lang/Object; +HSPLandroid/net/LocalSocketImpl;->-wrap1(Landroid/net/LocalSocketImpl;[BIILjava/io/FileDescriptor;)I +HSPLandroid/net/LocalSocketImpl;->-wrap3(Landroid/net/LocalSocketImpl;[BIILjava/io/FileDescriptor;)V +HSPLandroid/net/LocalSocketImpl;->()V +HSPLandroid/net/LocalSocketImpl;->(Ljava/io/FileDescriptor;)V +HSPLandroid/net/LocalSocketImpl;->bind(Landroid/net/LocalSocketAddress;)V +HSPLandroid/net/LocalSocketImpl;->close()V +HSPLandroid/net/LocalSocketImpl;->connect(Landroid/net/LocalSocketAddress;I)V +HSPLandroid/net/LocalSocketImpl;->create(I)V +HSPLandroid/net/LocalSocketImpl;->finalize()V +HSPLandroid/net/LocalSocketImpl;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/net/LocalSocketImpl;->getInputStream()Ljava/io/InputStream; +HSPLandroid/net/LocalSocketImpl;->getOutputStream()Ljava/io/OutputStream; +HSPLandroid/net/LocalSocketImpl;->listen(I)V +HSPLandroid/net/LocalSocketImpl;->toString()Ljava/lang/String; +HSPLandroid/net/MatchAllNetworkSpecifier$1;->()V +HSPLandroid/net/MatchAllNetworkSpecifier;->()V +HSPLandroid/net/Network$1;->()V +HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Network; +HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/Network$1;->newArray(I)[Landroid/net/Network; +HSPLandroid/net/Network$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/net/Network;->(I)V +HSPLandroid/net/Network;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/Network;->getNetworkHandle()J +HSPLandroid/net/Network;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/NetworkCapabilities$1;->()V +HSPLandroid/net/NetworkCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/NetworkCapabilities;->-set0(Landroid/net/NetworkCapabilities;I)I +HSPLandroid/net/NetworkCapabilities;->-set1(Landroid/net/NetworkCapabilities;I)I +HSPLandroid/net/NetworkCapabilities;->-set2(Landroid/net/NetworkCapabilities;J)J +HSPLandroid/net/NetworkCapabilities;->-set3(Landroid/net/NetworkCapabilities;Landroid/net/NetworkSpecifier;)Landroid/net/NetworkSpecifier; +HSPLandroid/net/NetworkCapabilities;->-set4(Landroid/net/NetworkCapabilities;I)I +HSPLandroid/net/NetworkCapabilities;->-set5(Landroid/net/NetworkCapabilities;J)J +HSPLandroid/net/NetworkCapabilities;->()V +HSPLandroid/net/NetworkCapabilities;->(Landroid/net/NetworkCapabilities;)V +HSPLandroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities;->addTransportType(I)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities;->capabilityNameOf(I)Ljava/lang/String; +HSPLandroid/net/NetworkCapabilities;->checkValidTransportType(I)V +HSPLandroid/net/NetworkCapabilities;->clearAll()V +HSPLandroid/net/NetworkCapabilities;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/NetworkCapabilities;->equalsLinkBandwidths(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->equalsNetCapabilities(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->equalsSignalStrength(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->equalsSpecifier(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->equalsTransportTypes(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->getCapabilities()[I +HSPLandroid/net/NetworkCapabilities;->getNetworkSpecifier()Landroid/net/NetworkSpecifier; +HSPLandroid/net/NetworkCapabilities;->getTransportTypes()[I +HSPLandroid/net/NetworkCapabilities;->hasCapability(I)Z +HSPLandroid/net/NetworkCapabilities;->hasSignalStrength()Z +HSPLandroid/net/NetworkCapabilities;->hasTransport(I)Z +HSPLandroid/net/NetworkCapabilities;->hashCode()I +HSPLandroid/net/NetworkCapabilities;->isValidTransport(I)Z +HSPLandroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V +HSPLandroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities;->satisfiedByLinkBandwidths(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedByNetCapabilities(Landroid/net/NetworkCapabilities;Z)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;Z)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedBySignalStrength(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedBySpecifier(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->satisfiedByTransportTypes(Landroid/net/NetworkCapabilities;)Z +HSPLandroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)V +HSPLandroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)V +HSPLandroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities; +HSPLandroid/net/NetworkCapabilities;->toString()Ljava/lang/String; +HSPLandroid/net/NetworkCapabilities;->transportNameOf(I)Ljava/lang/String; +HSPLandroid/net/NetworkCapabilities;->transportNamesOf([I)Ljava/lang/String; +HSPLandroid/net/NetworkCapabilities;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/NetworkConfig;->(Ljava/lang/String;)V +HSPLandroid/net/NetworkFactory$NetworkRequestInfo;->(Landroid/net/NetworkFactory;Landroid/net/NetworkRequest;I)V +HSPLandroid/net/NetworkFactory;->(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +HSPLandroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;I)Z +HSPLandroid/net/NetworkFactory;->evalRequest(Landroid/net/NetworkFactory$NetworkRequestInfo;)V +HSPLandroid/net/NetworkFactory;->evalRequests()V +HSPLandroid/net/NetworkFactory;->handleAddRequest(Landroid/net/NetworkRequest;I)V +HSPLandroid/net/NetworkFactory;->handleMessage(Landroid/os/Message;)V +HSPLandroid/net/NetworkFactory;->handleSetFilter(Landroid/net/NetworkCapabilities;)V +HSPLandroid/net/NetworkFactory;->handleSetScore(I)V +HSPLandroid/net/NetworkFactory;->log(Ljava/lang/String;)V +HSPLandroid/net/NetworkFactory;->register()V +HSPLandroid/net/NetworkFactory;->setCapabilityFilter(Landroid/net/NetworkCapabilities;)V +HSPLandroid/net/NetworkFactory;->setScoreFilter(I)V +HSPLandroid/net/NetworkInfo$1;->()V +HSPLandroid/net/NetworkInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkInfo; +HSPLandroid/net/NetworkInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/NetworkInfo$DetailedState;->(Ljava/lang/String;I)V +HSPLandroid/net/NetworkInfo$DetailedState;->valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$DetailedState; +HSPLandroid/net/NetworkInfo$DetailedState;->values()[Landroid/net/NetworkInfo$DetailedState; +HSPLandroid/net/NetworkInfo$State;->(Ljava/lang/String;I)V +HSPLandroid/net/NetworkInfo$State;->valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$State; +HSPLandroid/net/NetworkInfo$State;->values()[Landroid/net/NetworkInfo$State; +HSPLandroid/net/NetworkInfo;->-set0(Landroid/net/NetworkInfo;Landroid/net/NetworkInfo$DetailedState;)Landroid/net/NetworkInfo$DetailedState; +HSPLandroid/net/NetworkInfo;->-set1(Landroid/net/NetworkInfo;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/NetworkInfo;->-set2(Landroid/net/NetworkInfo;Z)Z +HSPLandroid/net/NetworkInfo;->-set3(Landroid/net/NetworkInfo;Z)Z +HSPLandroid/net/NetworkInfo;->-set4(Landroid/net/NetworkInfo;Z)Z +HSPLandroid/net/NetworkInfo;->-set5(Landroid/net/NetworkInfo;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/NetworkInfo;->-set6(Landroid/net/NetworkInfo;Landroid/net/NetworkInfo$State;)Landroid/net/NetworkInfo$State; +HSPLandroid/net/NetworkInfo;->(IILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/net/NetworkInfo;->getDetailedState()Landroid/net/NetworkInfo$DetailedState; +HSPLandroid/net/NetworkInfo;->getExtraInfo()Ljava/lang/String; +HSPLandroid/net/NetworkInfo;->getState()Landroid/net/NetworkInfo$State; +HSPLandroid/net/NetworkInfo;->getSubtype()I +HSPLandroid/net/NetworkInfo;->getSubtypeName()Ljava/lang/String; +HSPLandroid/net/NetworkInfo;->getType()I +HSPLandroid/net/NetworkInfo;->getTypeName()Ljava/lang/String; +HSPLandroid/net/NetworkInfo;->isConnected()Z +HSPLandroid/net/NetworkInfo;->isConnectedOrConnecting()Z +HSPLandroid/net/NetworkInfo;->isRoaming()Z +HSPLandroid/net/NetworkInfo;->setDetailedState(Landroid/net/NetworkInfo$DetailedState;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/net/NetworkInfo;->toString()Ljava/lang/String; +HSPLandroid/net/NetworkPolicyManager;->(Landroid/content/Context;Landroid/net/INetworkPolicyManager;)V +HSPLandroid/net/NetworkPolicyManager;->from(Landroid/content/Context;)Landroid/net/NetworkPolicyManager; +HSPLandroid/net/NetworkPolicyManager;->getRestrictBackground()Z +HSPLandroid/net/NetworkPolicyManager;->registerListener(Landroid/net/INetworkPolicyListener;)V +HSPLandroid/net/NetworkRecommendationProvider$ServiceWrapper;->(Landroid/net/NetworkRecommendationProvider;Landroid/content/Context;Ljava/util/concurrent/Executor;)V +HSPLandroid/net/NetworkRecommendationProvider;->(Landroid/content/Context;Ljava/util/concurrent/Executor;)V +HSPLandroid/net/NetworkRecommendationProvider;->getBinder()Landroid/os/IBinder; +HSPLandroid/net/NetworkRecommendationProvider;->onRequestScores([Landroid/net/NetworkKey;)V +HSPLandroid/net/NetworkRequest$1;->()V +HSPLandroid/net/NetworkRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkRequest; +HSPLandroid/net/NetworkRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/NetworkRequest$Builder;->()V +HSPLandroid/net/NetworkRequest$Builder;->addCapability(I)Landroid/net/NetworkRequest$Builder; +HSPLandroid/net/NetworkRequest$Builder;->addTransportType(I)Landroid/net/NetworkRequest$Builder; +HSPLandroid/net/NetworkRequest$Builder;->build()Landroid/net/NetworkRequest; +HSPLandroid/net/NetworkRequest$Builder;->clearCapabilities()Landroid/net/NetworkRequest$Builder; +HSPLandroid/net/NetworkRequest$Builder;->removeCapability(I)Landroid/net/NetworkRequest$Builder; +HSPLandroid/net/NetworkRequest$Type;->(Ljava/lang/String;I)V +HSPLandroid/net/NetworkRequest$Type;->valueOf(Ljava/lang/String;)Landroid/net/NetworkRequest$Type; +HSPLandroid/net/NetworkRequest$Type;->values()[Landroid/net/NetworkRequest$Type; +HSPLandroid/net/NetworkRequest;->(Landroid/net/NetworkCapabilities;IILandroid/net/NetworkRequest$Type;)V +HSPLandroid/net/NetworkRequest;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/NetworkRequest;->hashCode()I +HSPLandroid/net/NetworkRequest;->toString()Ljava/lang/String; +HSPLandroid/net/NetworkScoreManager;->(Landroid/content/Context;)V +HSPLandroid/net/NetworkSpecifier;->()V +HSPLandroid/net/NetworkStats;->(JI)V +HSPLandroid/net/NetworkUtils;->inetAddressToInt(Ljava/net/Inet4Address;)I +HSPLandroid/net/NetworkUtils;->maskRawAddress([BI)V +HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Landroid/net/ProxyInfo;)V +HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V +HSPLandroid/net/ProxyInfo$1;->()V +HSPLandroid/net/RouteInfo$1;->()V +HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/RouteInfo; +HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/RouteInfo;->(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;I)V +HSPLandroid/net/RouteInfo;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/RouteInfo;->getDestination()Landroid/net/IpPrefix; +HSPLandroid/net/RouteInfo;->getGateway()Ljava/net/InetAddress; +HSPLandroid/net/RouteInfo;->getInterface()Ljava/lang/String; +HSPLandroid/net/RouteInfo;->getType()I +HSPLandroid/net/RouteInfo;->isHost()Z +HSPLandroid/net/SSLCertificateSocketFactory$1;->()V +HSPLandroid/net/SSLCertificateSocketFactory;->(ILandroid/net/SSLSessionCache;Z)V +HSPLandroid/net/SSLCertificateSocketFactory;->getDefault(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory; +HSPLandroid/net/SSLCertificateSocketFactory;->getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory; +HSPLandroid/net/SSLSessionCache;->(Landroid/content/Context;)V +HSPLandroid/net/SntpClient;->()V +HSPLandroid/net/SntpClient;->checkValidServerReply(BBIJ)V +HSPLandroid/net/SntpClient;->getNtpTime()J +HSPLandroid/net/SntpClient;->getNtpTimeReference()J +HSPLandroid/net/SntpClient;->getRoundTripTime()J +HSPLandroid/net/SntpClient;->read32([BI)J +HSPLandroid/net/SntpClient;->readTimeStamp([BI)J +HSPLandroid/net/SntpClient;->requestTime(Ljava/lang/String;I)Z +HSPLandroid/net/SntpClient;->requestTime(Ljava/net/InetAddress;II)Z +HSPLandroid/net/SntpClient;->writeTimeStamp([BIJ)V +HSPLandroid/net/StringNetworkSpecifier$1;->()V +HSPLandroid/net/StringNetworkSpecifier;->(Ljava/lang/String;)V +HSPLandroid/net/TrafficStats;->getAndSetThreadStatsTag(I)I +HSPLandroid/net/TrafficStats;->getMobileIfaces()[Ljava/lang/String; +HSPLandroid/net/TrafficStats;->getMobileRxBytes()J +HSPLandroid/net/TrafficStats;->getMobileTxBytes()J +HSPLandroid/net/TrafficStats;->getStatsService()Landroid/net/INetworkStatsService; +HSPLandroid/net/TrafficStats;->getTotalRxBytes()J +HSPLandroid/net/TrafficStats;->getTotalTxBytes()J +HSPLandroid/net/TrafficStats;->getUidRxBytes(I)J +HSPLandroid/net/TrafficStats;->getUidTxBytes(I)J +HSPLandroid/net/TrafficStats;->setThreadStatsTag(I)V +HSPLandroid/net/Uri$1;->()V +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri; +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->()V +HSPLandroid/net/Uri$AbstractHierarchicalUri;->(Landroid/net/Uri$AbstractHierarchicalUri;)V +HSPLandroid/net/Uri$AbstractHierarchicalUri;->getHost()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->getLastPathSegment()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->getPort()I +HSPLandroid/net/Uri$AbstractHierarchicalUri;->getUserInfo()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->getUserInfoPart()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseHost()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractHierarchicalUri;->parsePort()I +HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseUserInfo()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractPart;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String; +HSPLandroid/net/Uri$AbstractPart;->writeTo(Landroid/os/Parcel;)V +HSPLandroid/net/Uri$Builder;->()V +HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->authority(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->authority(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->build()Landroid/net/Uri; +HSPLandroid/net/Uri$Builder;->clearQuery()Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->fragment(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->hasSchemeOrAuthority()Z +HSPLandroid/net/Uri$Builder;->path(Landroid/net/Uri$PathPart;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->path(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$HierarchicalUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V +HSPLandroid/net/Uri$HierarchicalUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;Landroid/net/Uri$HierarchicalUri;)V +HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V +HSPLandroid/net/Uri$HierarchicalUri;->buildUpon()Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$HierarchicalUri;->getAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getEncodedAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getEncodedQuery()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getPath()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getPathSegments()Ljava/util/List; +HSPLandroid/net/Uri$HierarchicalUri;->getScheme()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getSchemeSpecificPart()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getSsp()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$HierarchicalUri;->isHierarchical()Z +HSPLandroid/net/Uri$HierarchicalUri;->makeSchemeSpecificPart()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri; +HSPLandroid/net/Uri$HierarchicalUri;->toString()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/Uri$OpaqueUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V +HSPLandroid/net/Uri$OpaqueUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$Part;Landroid/net/Uri$OpaqueUri;)V +HSPLandroid/net/Uri$OpaqueUri;->getScheme()Ljava/lang/String; +HSPLandroid/net/Uri$OpaqueUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri; +HSPLandroid/net/Uri$OpaqueUri;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/Uri$Part$EmptyPart;->(Ljava/lang/String;)V +HSPLandroid/net/Uri$Part$EmptyPart;->isEmpty()Z +HSPLandroid/net/Uri$Part;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/net/Uri$Part;->(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri$Part;)V +HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->getEncoded()Ljava/lang/String; +HSPLandroid/net/Uri$Part;->isEmpty()Z +HSPLandroid/net/Uri$Part;->nonNull(Landroid/net/Uri$Part;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$PathPart;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/net/Uri$PathPart;->appendDecodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String; +HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments; +HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathSegments;->([Ljava/lang/String;I)V +HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object; +HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String; +HSPLandroid/net/Uri$PathSegments;->size()I +HSPLandroid/net/Uri$PathSegmentsBuilder;->()V +HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V +HSPLandroid/net/Uri$PathSegmentsBuilder;->build()Landroid/net/Uri$PathSegments; +HSPLandroid/net/Uri$StringUri;->(Ljava/lang/String;)V +HSPLandroid/net/Uri$StringUri;->(Ljava/lang/String;Landroid/net/Uri$StringUri;)V +HSPLandroid/net/Uri$StringUri;->buildUpon()Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$StringUri;->findFragmentSeparator()I +HSPLandroid/net/Uri$StringUri;->findSchemeSeparator()I +HSPLandroid/net/Uri$StringUri;->getAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getAuthorityPart()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->getEncodedAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getEncodedQuery()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getFragment()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getFragmentPart()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->getPath()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getPathPart()Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$StringUri;->getPathSegments()Ljava/util/List; +HSPLandroid/net/Uri$StringUri;->getQueryPart()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->getScheme()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getSchemeSpecificPart()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->getSsp()Landroid/net/Uri$Part; +HSPLandroid/net/Uri$StringUri;->isHierarchical()Z +HSPLandroid/net/Uri$StringUri;->parseAuthority(Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parsePath()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parsePath(Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseQuery()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseSsp()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri; +HSPLandroid/net/Uri$StringUri;->toString()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/net/Uri;->-get1()Ljava/lang/String; +HSPLandroid/net/Uri;->()V +HSPLandroid/net/Uri;->(Landroid/net/Uri;)V +HSPLandroid/net/Uri;->buildUpon()Landroid/net/Uri$Builder; +HSPLandroid/net/Uri;->checkContentUriWithoutPermission(Ljava/lang/String;I)V +HSPLandroid/net/Uri;->checkFileUriExposed(Ljava/lang/String;)V +HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/net/Uri;->getAuthority()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedAuthority()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedPath()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedQuery()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedSchemeSpecificPart()Ljava/lang/String; +HSPLandroid/net/Uri;->getEncodedUserInfo()Ljava/lang/String; +HSPLandroid/net/Uri;->getFragment()Ljava/lang/String; +HSPLandroid/net/Uri;->getHost()Ljava/lang/String; +HSPLandroid/net/Uri;->getLastPathSegment()Ljava/lang/String; +HSPLandroid/net/Uri;->getPath()Ljava/lang/String; +HSPLandroid/net/Uri;->getPathSegments()Ljava/util/List; +HSPLandroid/net/Uri;->getPort()I +HSPLandroid/net/Uri;->getQuery()Ljava/lang/String; +HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set; +HSPLandroid/net/Uri;->getQueryParameters(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/Uri;->getScheme()Ljava/lang/String; +HSPLandroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String; +HSPLandroid/net/Uri;->getUserInfo()Ljava/lang/String; +HSPLandroid/net/Uri;->hashCode()I +HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z +HSPLandroid/net/Uri;->isHierarchical()Z +HSPLandroid/net/Uri;->isOpaque()Z +HSPLandroid/net/Uri;->isPathPrefixMatch(Landroid/net/Uri;)Z +HSPLandroid/net/Uri;->isRelative()Z +HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String; +HSPLandroid/net/Uri;->toString()Ljava/lang/String; +HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V +HSPLandroid/net/WebAddress;->(Ljava/lang/String;)V +HSPLandroid/net/WebAddress;->toString()Ljava/lang/String; +HSPLandroid/net/http/AndroidHttpClient$1;->()V +HSPLandroid/net/http/AndroidHttpClient$2;->(Landroid/net/http/AndroidHttpClient;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V +HSPLandroid/net/http/AndroidHttpClient$LoggingConfiguration;->(Ljava/lang/String;I)V +HSPLandroid/net/http/AndroidHttpClient$LoggingConfiguration;->(Ljava/lang/String;ILandroid/net/http/AndroidHttpClient$LoggingConfiguration;)V +HSPLandroid/net/http/AndroidHttpClient;->(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V +HSPLandroid/net/http/AndroidHttpClient;->enableCurlLogging(Ljava/lang/String;I)V +HSPLandroid/net/http/AndroidHttpClient;->getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager; +HSPLandroid/net/http/AndroidHttpClient;->newInstance(Ljava/lang/String;Landroid/content/Context;)Landroid/net/http/AndroidHttpClient; +HSPLandroid/net/http/HttpResponseCache;->(Lcom/android/okhttp/AndroidShimResponseCache;)V +HSPLandroid/net/http/HttpResponseCache;->install(Ljava/io/File;J)Landroid/net/http/HttpResponseCache; +HSPLandroid/net/http/X509TrustManagerExtensions;->(Ljavax/net/ssl/X509TrustManager;)V +HSPLandroid/net/http/X509TrustManagerExtensions;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getScanResults(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getVerboseLoggingLevel()I +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApEnabledState()I +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiEnabledState()I +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiServiceMessenger()Landroid/os/Messenger; +HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseWifiLock(Landroid/os/IBinder;)Z +HSPLandroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager; +HSPLandroid/net/wifi/IWifiManager;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z +HSPLandroid/net/wifi/IWifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;)I +HSPLandroid/net/wifi/IWifiManager;->addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;)Z +HSPLandroid/net/wifi/IWifiManager;->deauthenticateNetwork(JZ)V +HSPLandroid/net/wifi/IWifiManager;->disableEphemeralNetwork(Ljava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager;->disableNetwork(I)Z +HSPLandroid/net/wifi/IWifiManager;->disconnect()V +HSPLandroid/net/wifi/IWifiManager;->enableAggressiveHandover(I)V +HSPLandroid/net/wifi/IWifiManager;->enableNetwork(IZ)Z +HSPLandroid/net/wifi/IWifiManager;->enableTdls(Ljava/lang/String;Z)V +HSPLandroid/net/wifi/IWifiManager;->enableTdlsWithMacAddress(Ljava/lang/String;Z)V +HSPLandroid/net/wifi/IWifiManager;->enableVerboseLogging(I)V +HSPLandroid/net/wifi/IWifiManager;->enableWifiConnectivityManager(Z)V +HSPLandroid/net/wifi/IWifiManager;->factoryReset()V +HSPLandroid/net/wifi/IWifiManager;->getAggressiveHandover()I +HSPLandroid/net/wifi/IWifiManager;->getAllowScansWithTraffic()I +HSPLandroid/net/wifi/IWifiManager;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice; +HSPLandroid/net/wifi/IWifiManager;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HSPLandroid/net/wifi/IWifiManager;->getConnectionStatistics()Landroid/net/wifi/WifiConnectionStatistics; +HSPLandroid/net/wifi/IWifiManager;->getCountryCode()Ljava/lang/String; +HSPLandroid/net/wifi/IWifiManager;->getCurrentNetwork()Landroid/net/Network; +HSPLandroid/net/wifi/IWifiManager;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String; +HSPLandroid/net/wifi/IWifiManager;->getDhcpInfo()Landroid/net/DhcpInfo; +HSPLandroid/net/wifi/IWifiManager;->getEnableAutoJoinWhenAssociated()Z +HSPLandroid/net/wifi/IWifiManager;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List; +HSPLandroid/net/wifi/IWifiManager;->getMatchingWifiConfig(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration; +HSPLandroid/net/wifi/IWifiManager;->getPasspointConfigurations()Ljava/util/List; +HSPLandroid/net/wifi/IWifiManager;->getPrivilegedConfiguredNetworks()Landroid/content/pm/ParceledListSlice; +HSPLandroid/net/wifi/IWifiManager;->getScanResults(Ljava/lang/String;)Ljava/util/List; +HSPLandroid/net/wifi/IWifiManager;->getSupportedFeatures()I +HSPLandroid/net/wifi/IWifiManager;->getVerboseLoggingLevel()I +HSPLandroid/net/wifi/IWifiManager;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration; +HSPLandroid/net/wifi/IWifiManager;->getWifiApEnabledState()I +HSPLandroid/net/wifi/IWifiManager;->getWifiEnabledState()I +HSPLandroid/net/wifi/IWifiManager;->getWifiServiceMessenger()Landroid/os/Messenger; +HSPLandroid/net/wifi/IWifiManager;->initializeMulticastFiltering()V +HSPLandroid/net/wifi/IWifiManager;->isDualBandSupported()Z +HSPLandroid/net/wifi/IWifiManager;->isMulticastEnabled()Z +HSPLandroid/net/wifi/IWifiManager;->isScanAlwaysAvailable()Z +HSPLandroid/net/wifi/IWifiManager;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I +HSPLandroid/net/wifi/IWifiManager;->queryPasspointIcon(JLjava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager;->reassociate()V +HSPLandroid/net/wifi/IWifiManager;->reconnect()V +HSPLandroid/net/wifi/IWifiManager;->releaseMulticastLock()V +HSPLandroid/net/wifi/IWifiManager;->releaseWifiLock(Landroid/os/IBinder;)Z +HSPLandroid/net/wifi/IWifiManager;->removeNetwork(I)Z +HSPLandroid/net/wifi/IWifiManager;->removePasspointConfiguration(Ljava/lang/String;)Z +HSPLandroid/net/wifi/IWifiManager;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo; +HSPLandroid/net/wifi/IWifiManager;->requestActivityInfo(Landroid/os/ResultReceiver;)V +HSPLandroid/net/wifi/IWifiManager;->restoreBackupData([B)V +HSPLandroid/net/wifi/IWifiManager;->restoreSupplicantBackupData([B[B)V +HSPLandroid/net/wifi/IWifiManager;->retrieveBackupData()[B +HSPLandroid/net/wifi/IWifiManager;->saveConfiguration()Z +HSPLandroid/net/wifi/IWifiManager;->setAllowScansWithTraffic(I)V +HSPLandroid/net/wifi/IWifiManager;->setCountryCode(Ljava/lang/String;Z)V +HSPLandroid/net/wifi/IWifiManager;->setEnableAutoJoinWhenAssociated(Z)Z +HSPLandroid/net/wifi/IWifiManager;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;)V +HSPLandroid/net/wifi/IWifiManager;->setWifiApEnabled(Landroid/net/wifi/WifiConfiguration;Z)V +HSPLandroid/net/wifi/IWifiManager;->setWifiEnabled(Ljava/lang/String;Z)Z +HSPLandroid/net/wifi/IWifiManager;->startLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;)I +HSPLandroid/net/wifi/IWifiManager;->startScan(Landroid/net/wifi/ScanSettings;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/net/wifi/IWifiManager;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z +HSPLandroid/net/wifi/IWifiManager;->startWatchLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;)V +HSPLandroid/net/wifi/IWifiManager;->stopLocalOnlyHotspot()V +HSPLandroid/net/wifi/IWifiManager;->stopSoftAp()Z +HSPLandroid/net/wifi/IWifiManager;->stopWatchLocalOnlyHotspot()V +HSPLandroid/net/wifi/IWifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V +HSPLandroid/net/wifi/IWifiManager;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V +HSPLandroid/net/wifi/ParcelUtil;->readCertificates(Landroid/os/Parcel;)[Ljava/security/cert/X509Certificate; +HSPLandroid/net/wifi/ParcelUtil;->readPrivateKey(Landroid/os/Parcel;)Ljava/security/PrivateKey; +HSPLandroid/net/wifi/ScanResult$1;->()V +HSPLandroid/net/wifi/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/ScanResult; +HSPLandroid/net/wifi/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/ScanResult$InformationElement;->()V +HSPLandroid/net/wifi/ScanResult;->(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V +HSPLandroid/net/wifi/ScanResult;->(Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V +HSPLandroid/net/wifi/SupplicantState$1;->()V +HSPLandroid/net/wifi/SupplicantState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/SupplicantState; +HSPLandroid/net/wifi/SupplicantState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/SupplicantState;->(Ljava/lang/String;I)V +HSPLandroid/net/wifi/SupplicantState;->valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState; +HSPLandroid/net/wifi/SupplicantState;->values()[Landroid/net/wifi/SupplicantState; +HSPLandroid/net/wifi/WifiActivityEnergyInfo$1;->()V +HSPLandroid/net/wifi/WifiActivityEnergyInfo;->(JIJ[JJJJ)V +HSPLandroid/net/wifi/WifiConfiguration$1;->()V +HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiConfiguration; +HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->()V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoice(Ljava/lang/String;)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoiceTimestamp(J)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableReasonCounter(II)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableTime(J)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setHasEverConnected(Z)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionBSSID(Ljava/lang/String;)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionDisableReason(I)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionStatus(I)V +HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNotRecommended(Z)V +HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->()V +HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->setAssociationStatus(I)V +HSPLandroid/net/wifi/WifiConfiguration;->-get0(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; +HSPLandroid/net/wifi/WifiConfiguration;->-set0(Landroid/net/wifi/WifiConfiguration;Landroid/net/IpConfiguration;)Landroid/net/IpConfiguration; +HSPLandroid/net/wifi/WifiConfiguration;->-set1(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/wifi/WifiConfiguration;->-wrap0(Landroid/os/Parcel;)Ljava/util/BitSet; +HSPLandroid/net/wifi/WifiConfiguration;->()V +HSPLandroid/net/wifi/WifiConfiguration;->hasNoInternetAccess()Z +HSPLandroid/net/wifi/WifiConfiguration;->isNoInternetAccessExpected()Z +HSPLandroid/net/wifi/WifiConfiguration;->readBitSet(Landroid/os/Parcel;)Ljava/util/BitSet; +HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->()V +HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiEnterpriseConfig; +HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/WifiEnterpriseConfig;->-set0(Landroid/net/wifi/WifiEnterpriseConfig;[Ljava/security/cert/X509Certificate;)[Ljava/security/cert/X509Certificate; +HSPLandroid/net/wifi/WifiEnterpriseConfig;->-set1(Landroid/net/wifi/WifiEnterpriseConfig;[Ljava/security/cert/X509Certificate;)[Ljava/security/cert/X509Certificate; +HSPLandroid/net/wifi/WifiEnterpriseConfig;->-set2(Landroid/net/wifi/WifiEnterpriseConfig;Ljava/security/PrivateKey;)Ljava/security/PrivateKey; +HSPLandroid/net/wifi/WifiEnterpriseConfig;->-set3(Landroid/net/wifi/WifiEnterpriseConfig;I)I +HSPLandroid/net/wifi/WifiEnterpriseConfig;->-set4(Landroid/net/wifi/WifiEnterpriseConfig;I)I +HSPLandroid/net/wifi/WifiEnterpriseConfig;->()V +HSPLandroid/net/wifi/WifiInfo$1;->()V +HSPLandroid/net/wifi/WifiInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiInfo; +HSPLandroid/net/wifi/WifiInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/WifiInfo;->-set0(Landroid/net/wifi/WifiInfo;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/wifi/WifiInfo;->-set1(Landroid/net/wifi/WifiInfo;Z)Z +HSPLandroid/net/wifi/WifiInfo;->-set2(Landroid/net/wifi/WifiInfo;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/wifi/WifiInfo;->-set3(Landroid/net/wifi/WifiInfo;Z)Z +HSPLandroid/net/wifi/WifiInfo;->-set4(Landroid/net/wifi/WifiInfo;Landroid/net/wifi/SupplicantState;)Landroid/net/wifi/SupplicantState; +HSPLandroid/net/wifi/WifiInfo;->-set5(Landroid/net/wifi/WifiInfo;Landroid/net/wifi/WifiSsid;)Landroid/net/wifi/WifiSsid; +HSPLandroid/net/wifi/WifiInfo;->()V +HSPLandroid/net/wifi/WifiInfo;->getBSSID()Ljava/lang/String; +HSPLandroid/net/wifi/WifiInfo;->getIpAddress()I +HSPLandroid/net/wifi/WifiInfo;->getSSID()Ljava/lang/String; +HSPLandroid/net/wifi/WifiInfo;->setFrequency(I)V +HSPLandroid/net/wifi/WifiInfo;->setInetAddress(Ljava/net/InetAddress;)V +HSPLandroid/net/wifi/WifiInfo;->setLinkSpeed(I)V +HSPLandroid/net/wifi/WifiInfo;->setNetworkId(I)V +HSPLandroid/net/wifi/WifiInfo;->setRssi(I)V +HSPLandroid/net/wifi/WifiManager$ActionListener;->onFailure(I)V +HSPLandroid/net/wifi/WifiManager$ActionListener;->onSuccess()V +HSPLandroid/net/wifi/WifiManager$WifiLock;->(Landroid/net/wifi/WifiManager;ILjava/lang/String;)V +HSPLandroid/net/wifi/WifiManager$WifiLock;->(Landroid/net/wifi/WifiManager;ILjava/lang/String;Landroid/net/wifi/WifiManager$WifiLock;)V +HSPLandroid/net/wifi/WifiManager$WifiLock;->acquire()V +HSPLandroid/net/wifi/WifiManager$WifiLock;->finalize()V +HSPLandroid/net/wifi/WifiManager$WifiLock;->release()V +HSPLandroid/net/wifi/WifiManager;->-get0(Landroid/net/wifi/WifiManager;)I +HSPLandroid/net/wifi/WifiManager;->-set0(Landroid/net/wifi/WifiManager;I)I +HSPLandroid/net/wifi/WifiManager;->(Landroid/content/Context;Landroid/net/wifi/IWifiManager;Landroid/os/Looper;)V +HSPLandroid/net/wifi/WifiManager;->createWifiLock(ILjava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock; +HSPLandroid/net/wifi/WifiManager;->getConfiguredNetworks()Ljava/util/List; +HSPLandroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo; +HSPLandroid/net/wifi/WifiManager;->getScanResults()Ljava/util/List; +HSPLandroid/net/wifi/WifiManager;->getVerboseLoggingLevel()I +HSPLandroid/net/wifi/WifiManager;->getWifiApState()I +HSPLandroid/net/wifi/WifiManager;->getWifiServiceMessenger()Landroid/os/Messenger; +HSPLandroid/net/wifi/WifiManager;->getWifiState()I +HSPLandroid/net/wifi/WifiManager;->isWifiApEnabled()Z +HSPLandroid/net/wifi/WifiManager;->isWifiEnabled()Z +HSPLandroid/net/wifi/WifiNetworkScoreCache$CacheListener;->(Landroid/os/Handler;)V +HSPLandroid/net/wifi/WifiNetworkScoreCache$CacheListener;->networkCacheUpdated(Ljava/util/List;)V +HSPLandroid/net/wifi/WifiNetworkScoreCache;->(Landroid/content/Context;Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;)V +HSPLandroid/net/wifi/WifiNetworkScoreCache;->(Landroid/content/Context;Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;I)V +HSPLandroid/net/wifi/WifiSsid$1;->()V +HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiSsid; +HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/wifi/WifiSsid;->()V +HSPLandroid/net/wifi/WifiSsid;->(Landroid/net/wifi/WifiSsid;)V +HSPLandroid/net/wifi/WifiSsid;->getHexString()Ljava/lang/String; +HSPLandroid/net/wifi/WifiSsid;->getOctets()[B +HSPLandroid/net/wifi/WifiSsid;->isArrayAllZeroes([B)Z +HSPLandroid/net/wifi/WifiSsid;->toString()Ljava/lang/String; +HSPLandroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager; +HSPLandroid/net/wifi/p2p/IWifiP2pManager;->checkConfigureWifiDisplayPermission()V +HSPLandroid/net/wifi/p2p/IWifiP2pManager;->close(Landroid/os/IBinder;)V +HSPLandroid/net/wifi/p2p/IWifiP2pManager;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger; +HSPLandroid/net/wifi/p2p/IWifiP2pManager;->getP2pStateMachineMessenger()Landroid/os/Messenger; +HSPLandroid/net/wifi/p2p/IWifiP2pManager;->setMiracastMode(I)V +HSPLandroid/net/wifi/p2p/WifiP2pManager;->(Landroid/net/wifi/p2p/IWifiP2pManager;)V +HSPLandroid/nfc/IAppCallback$Stub;->()V +HSPLandroid/nfc/IAppCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/nfc/IAppCallback;->createBeamShareData(B)Landroid/nfc/BeamShareData; +HSPLandroid/nfc/IAppCallback;->onNdefPushComplete(B)V +HSPLandroid/nfc/IAppCallback;->onTagDiscovered(Landroid/nfc/Tag;)V +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcCardEmulationInterface()Landroid/nfc/INfcCardEmulation; +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcFCardEmulationInterface()Landroid/nfc/INfcFCardEmulation; +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcTagInterface()Landroid/nfc/INfcTag; +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->setAppCallback(Landroid/nfc/IAppCallback;)V +HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->verifyNfcPermission()V +HSPLandroid/nfc/INfcAdapter$Stub;->()V +HSPLandroid/nfc/INfcAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcAdapter; +HSPLandroid/nfc/INfcAdapter;->addNfcUnlockHandler(Landroid/nfc/INfcUnlockHandler;[I)V +HSPLandroid/nfc/INfcAdapter;->disable(Z)Z +HSPLandroid/nfc/INfcAdapter;->disableNdefPush()Z +HSPLandroid/nfc/INfcAdapter;->dispatch(Landroid/nfc/Tag;)V +HSPLandroid/nfc/INfcAdapter;->enable()Z +HSPLandroid/nfc/INfcAdapter;->enableNdefPush()Z +HSPLandroid/nfc/INfcAdapter;->getNfcAdapterExtrasInterface(Ljava/lang/String;)Landroid/nfc/INfcAdapterExtras; +HSPLandroid/nfc/INfcAdapter;->getNfcCardEmulationInterface()Landroid/nfc/INfcCardEmulation; +HSPLandroid/nfc/INfcAdapter;->getNfcDtaInterface(Ljava/lang/String;)Landroid/nfc/INfcDta; +HSPLandroid/nfc/INfcAdapter;->getNfcFCardEmulationInterface()Landroid/nfc/INfcFCardEmulation; +HSPLandroid/nfc/INfcAdapter;->getNfcTagInterface()Landroid/nfc/INfcTag; +HSPLandroid/nfc/INfcAdapter;->getState()I +HSPLandroid/nfc/INfcAdapter;->ignore(IILandroid/nfc/ITagRemovedCallback;)Z +HSPLandroid/nfc/INfcAdapter;->invokeBeam()V +HSPLandroid/nfc/INfcAdapter;->invokeBeamInternal(Landroid/nfc/BeamShareData;)V +HSPLandroid/nfc/INfcAdapter;->isNdefPushEnabled()Z +HSPLandroid/nfc/INfcAdapter;->pausePolling(I)V +HSPLandroid/nfc/INfcAdapter;->removeNfcUnlockHandler(Landroid/nfc/INfcUnlockHandler;)V +HSPLandroid/nfc/INfcAdapter;->resumePolling()V +HSPLandroid/nfc/INfcAdapter;->setAppCallback(Landroid/nfc/IAppCallback;)V +HSPLandroid/nfc/INfcAdapter;->setForegroundDispatch(Landroid/app/PendingIntent;[Landroid/content/IntentFilter;Landroid/nfc/TechListParcel;)V +HSPLandroid/nfc/INfcAdapter;->setP2pModes(II)V +HSPLandroid/nfc/INfcAdapter;->setReaderMode(Landroid/os/IBinder;Landroid/nfc/IAppCallback;ILandroid/os/Bundle;)V +HSPLandroid/nfc/INfcAdapter;->verifyNfcPermission()V +HSPLandroid/nfc/INfcCardEmulation$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/nfc/INfcCardEmulation$Stub;->()V +HSPLandroid/nfc/INfcCardEmulation$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcCardEmulation; +HSPLandroid/nfc/INfcCardEmulation;->getAidGroupForService(ILandroid/content/ComponentName;Ljava/lang/String;)Landroid/nfc/cardemulation/AidGroup; +HSPLandroid/nfc/INfcCardEmulation;->getServices(ILjava/lang/String;)Ljava/util/List; +HSPLandroid/nfc/INfcCardEmulation;->isDefaultServiceForAid(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcCardEmulation;->isDefaultServiceForCategory(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcCardEmulation;->registerAidGroupForService(ILandroid/content/ComponentName;Landroid/nfc/cardemulation/AidGroup;)Z +HSPLandroid/nfc/INfcCardEmulation;->removeAidGroupForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcCardEmulation;->setDefaultForNextTap(ILandroid/content/ComponentName;)Z +HSPLandroid/nfc/INfcCardEmulation;->setDefaultServiceForCategory(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcCardEmulation;->setPreferredService(Landroid/content/ComponentName;)Z +HSPLandroid/nfc/INfcCardEmulation;->supportsAidPrefixRegistration()Z +HSPLandroid/nfc/INfcCardEmulation;->unsetPreferredService()Z +HSPLandroid/nfc/INfcFCardEmulation$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/nfc/INfcFCardEmulation$Stub;->()V +HSPLandroid/nfc/INfcFCardEmulation$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcFCardEmulation; +HSPLandroid/nfc/INfcFCardEmulation;->disableNfcFForegroundService()Z +HSPLandroid/nfc/INfcFCardEmulation;->enableNfcFForegroundService(Landroid/content/ComponentName;)Z +HSPLandroid/nfc/INfcFCardEmulation;->getMaxNumOfRegisterableSystemCodes()I +HSPLandroid/nfc/INfcFCardEmulation;->getNfcFServices(I)Ljava/util/List; +HSPLandroid/nfc/INfcFCardEmulation;->getNfcid2ForService(ILandroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/nfc/INfcFCardEmulation;->getSystemCodeForService(ILandroid/content/ComponentName;)Ljava/lang/String; +HSPLandroid/nfc/INfcFCardEmulation;->registerSystemCodeForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcFCardEmulation;->removeSystemCodeForService(ILandroid/content/ComponentName;)Z +HSPLandroid/nfc/INfcFCardEmulation;->setNfcid2ForService(ILandroid/content/ComponentName;Ljava/lang/String;)Z +HSPLandroid/nfc/INfcTag$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/nfc/INfcTag$Stub;->()V +HSPLandroid/nfc/INfcTag$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcTag; +HSPLandroid/nfc/INfcTag;->canMakeReadOnly(I)Z +HSPLandroid/nfc/INfcTag;->connect(II)I +HSPLandroid/nfc/INfcTag;->formatNdef(I[B)I +HSPLandroid/nfc/INfcTag;->getExtendedLengthApdusSupported()Z +HSPLandroid/nfc/INfcTag;->getMaxTransceiveLength(I)I +HSPLandroid/nfc/INfcTag;->getTechList(I)[I +HSPLandroid/nfc/INfcTag;->getTimeout(I)I +HSPLandroid/nfc/INfcTag;->isNdef(I)Z +HSPLandroid/nfc/INfcTag;->isPresent(I)Z +HSPLandroid/nfc/INfcTag;->ndefIsWritable(I)Z +HSPLandroid/nfc/INfcTag;->ndefMakeReadOnly(I)I +HSPLandroid/nfc/INfcTag;->ndefRead(I)Landroid/nfc/NdefMessage; +HSPLandroid/nfc/INfcTag;->ndefWrite(ILandroid/nfc/NdefMessage;)I +HSPLandroid/nfc/INfcTag;->reconnect(I)I +HSPLandroid/nfc/INfcTag;->rediscover(I)Landroid/nfc/Tag; +HSPLandroid/nfc/INfcTag;->resetTimeouts()V +HSPLandroid/nfc/INfcTag;->setTimeout(II)I +HSPLandroid/nfc/INfcTag;->transceive(I[BZ)Landroid/nfc/TransceiveResult; +HSPLandroid/nfc/NfcActivityManager$NfcActivityState;->(Landroid/nfc/NfcActivityManager;Landroid/app/Activity;)V +HSPLandroid/nfc/NfcActivityManager$NfcApplicationState;->(Landroid/nfc/NfcActivityManager;Landroid/app/Application;)V +HSPLandroid/nfc/NfcActivityManager$NfcApplicationState;->register()V +HSPLandroid/nfc/NfcActivityManager;->(Landroid/nfc/NfcAdapter;)V +HSPLandroid/nfc/NfcActivityManager;->findActivityState(Landroid/app/Activity;)Landroid/nfc/NfcActivityManager$NfcActivityState; +HSPLandroid/nfc/NfcActivityManager;->findAppState(Landroid/app/Application;)Landroid/nfc/NfcActivityManager$NfcApplicationState; +HSPLandroid/nfc/NfcActivityManager;->getActivityState(Landroid/app/Activity;)Landroid/nfc/NfcActivityManager$NfcActivityState; +HSPLandroid/nfc/NfcActivityManager;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroid/nfc/NfcActivityManager;->onActivityStarted(Landroid/app/Activity;)V +HSPLandroid/nfc/NfcActivityManager;->registerApplication(Landroid/app/Application;)V +HSPLandroid/nfc/NfcActivityManager;->requestNfcServiceCallback()V +HSPLandroid/nfc/NfcActivityManager;->setNdefPushMessageCallback(Landroid/app/Activity;Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;I)V +HSPLandroid/nfc/NfcActivityManager;->setOnNdefPushCompleteCallback(Landroid/app/Activity;Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;)V +HSPLandroid/nfc/NfcActivityManager;->verifyNfcPermission()V +HSPLandroid/nfc/NfcAdapter$1;->(Landroid/nfc/NfcAdapter;)V +HSPLandroid/nfc/NfcAdapter$CreateNdefMessageCallback;->createNdefMessage(Landroid/nfc/NfcEvent;)Landroid/nfc/NdefMessage; +HSPLandroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;->onNdefPushComplete(Landroid/nfc/NfcEvent;)V +HSPLandroid/nfc/NfcAdapter;->(Landroid/content/Context;)V +HSPLandroid/nfc/NfcAdapter;->getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter; +HSPLandroid/nfc/NfcAdapter;->getNfcAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter; +HSPLandroid/nfc/NfcAdapter;->getSdkVersion()I +HSPLandroid/nfc/NfcAdapter;->getServiceInterface()Landroid/nfc/INfcAdapter; +HSPLandroid/nfc/NfcAdapter;->hasNfcFeature()Z +HSPLandroid/nfc/NfcAdapter;->hasNfcHceFeature()Z +HSPLandroid/nfc/NfcAdapter;->setNdefPushMessageCallback(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;[Landroid/app/Activity;)V +HSPLandroid/nfc/NfcAdapter;->setOnNdefPushCompleteCallback(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;Landroid/app/Activity;[Landroid/app/Activity;)V +HSPLandroid/nfc/NfcManager;->(Landroid/content/Context;)V +HSPLandroid/nfc/NfcManager;->getDefaultAdapter()Landroid/nfc/NfcAdapter; +HSPLandroid/nfc/cardemulation/AidGroup$1;->()V +HSPLandroid/nfc/cardemulation/AidGroup;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/nfc/cardemulation/ApduServiceInfo$1;->()V +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;Z)V +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getAidGroups()Ljava/util/ArrayList; +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getAids()Ljava/util/List; +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getCategoryForAid(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getComponent()Landroid/content/ComponentName; +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getPrefixAids()Ljava/util/List; +HSPLandroid/nfc/cardemulation/ApduServiceInfo;->getSubsetAids()Ljava/util/List; +HSPLandroid/nfc/cardemulation/CardEmulation;->isValidAid(Ljava/lang/String;)Z +HSPLandroid/opengl/EGLDisplay;->(J)V +HSPLandroid/opengl/EGLObjectHandle;->(J)V +HSPLandroid/opengl/GLES20;->glVertexAttribPointer(IIIZILjava/nio/Buffer;)V +HSPLandroid/opengl/GLSurfaceView$BaseConfigChooser;->(Landroid/opengl/GLSurfaceView;[I)V +HSPLandroid/opengl/GLSurfaceView$BaseConfigChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;)Ljavax/microedition/khronos/egl/EGLConfig; +HSPLandroid/opengl/GLSurfaceView$BaseConfigChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLConfig; +HSPLandroid/opengl/GLSurfaceView$BaseConfigChooser;->filterConfigSpec([I)[I +HSPLandroid/opengl/GLSurfaceView$ComponentSizeChooser;->(Landroid/opengl/GLSurfaceView;IIIIII)V +HSPLandroid/opengl/GLSurfaceView$ComponentSizeChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLConfig; +HSPLandroid/opengl/GLSurfaceView$ComponentSizeChooser;->findConfigAttrib(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;II)I +HSPLandroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;->()V +HSPLandroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;->(Landroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;)V +HSPLandroid/opengl/GLSurfaceView$DefaultWindowSurfaceFactory;->createWindowSurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLandroid/opengl/GLSurfaceView$EGLConfigChooser;->chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;)Ljavax/microedition/khronos/egl/EGLConfig; +HSPLandroid/opengl/GLSurfaceView$EGLContextFactory;->createContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLContext; +HSPLandroid/opengl/GLSurfaceView$EGLContextFactory;->destroyContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)V +HSPLandroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory;->createWindowSurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLandroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory;->destroySurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)V +HSPLandroid/opengl/GLSurfaceView$EglHelper;->(Ljava/lang/ref/WeakReference;)V +HSPLandroid/opengl/GLSurfaceView$EglHelper;->createGL()Ljavax/microedition/khronos/opengles/GL; +HSPLandroid/opengl/GLSurfaceView$EglHelper;->createSurface()Z +HSPLandroid/opengl/GLSurfaceView$EglHelper;->destroySurfaceImp()V +HSPLandroid/opengl/GLSurfaceView$EglHelper;->start()V +HSPLandroid/opengl/GLSurfaceView$EglHelper;->swap()I +HSPLandroid/opengl/GLSurfaceView$GLThread;->(Ljava/lang/ref/WeakReference;)V +HSPLandroid/opengl/GLSurfaceView$GLThread;->ableToDraw()Z +HSPLandroid/opengl/GLSurfaceView$GLThread;->guardedRun()V +HSPLandroid/opengl/GLSurfaceView$GLThread;->onWindowResize(II)V +HSPLandroid/opengl/GLSurfaceView$GLThread;->readyToDraw()Z +HSPLandroid/opengl/GLSurfaceView$GLThread;->requestRender()V +HSPLandroid/opengl/GLSurfaceView$GLThread;->run()V +HSPLandroid/opengl/GLSurfaceView$GLThread;->setRenderMode(I)V +HSPLandroid/opengl/GLSurfaceView$GLThread;->surfaceCreated()V +HSPLandroid/opengl/GLSurfaceView$GLThreadManager;->()V +HSPLandroid/opengl/GLSurfaceView$GLThreadManager;->(Landroid/opengl/GLSurfaceView$GLThreadManager;)V +HSPLandroid/opengl/GLSurfaceView$Renderer;->onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V +HSPLandroid/opengl/GLSurfaceView$Renderer;->onSurfaceChanged(Ljavax/microedition/khronos/opengles/GL10;II)V +HSPLandroid/opengl/GLSurfaceView$Renderer;->onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V +HSPLandroid/opengl/GLSurfaceView$SimpleEGLConfigChooser;->(Landroid/opengl/GLSurfaceView;Z)V +HSPLandroid/opengl/GLSurfaceView;->-get0(Landroid/opengl/GLSurfaceView;)I +HSPLandroid/opengl/GLSurfaceView;->-get1(Landroid/opengl/GLSurfaceView;)Landroid/opengl/GLSurfaceView$EGLConfigChooser; +HSPLandroid/opengl/GLSurfaceView;->-get2(Landroid/opengl/GLSurfaceView;)I +HSPLandroid/opengl/GLSurfaceView;->-get3(Landroid/opengl/GLSurfaceView;)Landroid/opengl/GLSurfaceView$EGLContextFactory; +HSPLandroid/opengl/GLSurfaceView;->-get4(Landroid/opengl/GLSurfaceView;)Landroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory; +HSPLandroid/opengl/GLSurfaceView;->-get5(Landroid/opengl/GLSurfaceView;)Landroid/opengl/GLSurfaceView$GLWrapper; +HSPLandroid/opengl/GLSurfaceView;->-get7(Landroid/opengl/GLSurfaceView;)Landroid/opengl/GLSurfaceView$Renderer; +HSPLandroid/opengl/GLSurfaceView;->-get8()Landroid/opengl/GLSurfaceView$GLThreadManager; +HSPLandroid/opengl/GLSurfaceView;->(Landroid/content/Context;)V +HSPLandroid/opengl/GLSurfaceView;->checkRenderThreadState()V +HSPLandroid/opengl/GLSurfaceView;->init()V +HSPLandroid/opengl/GLSurfaceView;->requestRender()V +HSPLandroid/opengl/GLSurfaceView;->setEGLContextClientVersion(I)V +HSPLandroid/opengl/GLSurfaceView;->setEGLContextFactory(Landroid/opengl/GLSurfaceView$EGLContextFactory;)V +HSPLandroid/opengl/GLSurfaceView;->setPreserveEGLContextOnPause(Z)V +HSPLandroid/opengl/GLSurfaceView;->setRenderMode(I)V +HSPLandroid/opengl/GLSurfaceView;->setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V +HSPLandroid/opengl/GLSurfaceView;->surfaceChanged(Landroid/view/SurfaceHolder;III)V +HSPLandroid/opengl/GLSurfaceView;->surfaceCreated(Landroid/view/SurfaceHolder;)V +HSPLandroid/opengl/GLSurfaceView;->surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V +HSPLandroid/opengl/GLUtils;->texImage2D(IILandroid/graphics/Bitmap;I)V +HSPLandroid/opengl/Matrix;->invertM([FI[FI)Z +HSPLandroid/opengl/Matrix;->length(FFF)F +HSPLandroid/opengl/Matrix;->orthoM([FIFFFFFF)V +HSPLandroid/opengl/Matrix;->rotateM([FIFFFF)V +HSPLandroid/opengl/Matrix;->scaleM([FIFFF)V +HSPLandroid/opengl/Matrix;->setIdentityM([FI)V +HSPLandroid/opengl/Matrix;->setRotateM([FIFFFF)V +HSPLandroid/opengl/Matrix;->translateM([FIFFF)V +HSPLandroid/os/-$Lambda$-dncxFEc2F2bgG2fsIoC6FC6WNE;->(B)V +HSPLandroid/os/-$Lambda$BcGBlsGjMZMF6Ej78rWJ608MYSM;->$m$0()V +HSPLandroid/os/-$Lambda$BcGBlsGjMZMF6Ej78rWJ608MYSM;->run()V +HSPLandroid/os/AsyncResult;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLandroid/os/AsyncResult;->forMessage(Landroid/os/Message;Ljava/lang/Object;Ljava/lang/Throwable;)Landroid/os/AsyncResult; +HSPLandroid/os/AsyncTask$1;->()V +HSPLandroid/os/AsyncTask$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLandroid/os/AsyncTask$2;->(Landroid/os/AsyncTask;)V +HSPLandroid/os/AsyncTask$2;->call()Ljava/lang/Object; +HSPLandroid/os/AsyncTask$3;->(Landroid/os/AsyncTask;Ljava/util/concurrent/Callable;)V +HSPLandroid/os/AsyncTask$3;->done()V +HSPLandroid/os/AsyncTask$AsyncTaskResult;->(Landroid/os/AsyncTask;[Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask$InternalHandler;->(Landroid/os/Looper;)V +HSPLandroid/os/AsyncTask$InternalHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/os/AsyncTask$SerialExecutor$1;->(Landroid/os/AsyncTask$SerialExecutor;Ljava/lang/Runnable;)V +HSPLandroid/os/AsyncTask$SerialExecutor$1;->run()V +HSPLandroid/os/AsyncTask$SerialExecutor;->()V +HSPLandroid/os/AsyncTask$SerialExecutor;->(Landroid/os/AsyncTask$SerialExecutor;)V +HSPLandroid/os/AsyncTask$SerialExecutor;->execute(Ljava/lang/Runnable;)V +HSPLandroid/os/AsyncTask$SerialExecutor;->scheduleNext()V +HSPLandroid/os/AsyncTask$Status;->(Ljava/lang/String;I)V +HSPLandroid/os/AsyncTask$WorkerRunnable;->()V +HSPLandroid/os/AsyncTask$WorkerRunnable;->(Landroid/os/AsyncTask$WorkerRunnable;)V +HSPLandroid/os/AsyncTask;->-get1(Landroid/os/AsyncTask;)Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroid/os/AsyncTask;->-wrap0(Landroid/os/AsyncTask;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/AsyncTask;->-wrap1(Landroid/os/AsyncTask;Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask;->-wrap2(Landroid/os/AsyncTask;Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask;->()V +HSPLandroid/os/AsyncTask;->(Landroid/os/Looper;)V +HSPLandroid/os/AsyncTask;->cancel(Z)Z +HSPLandroid/os/AsyncTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/AsyncTask;->execute(Ljava/lang/Runnable;)V +HSPLandroid/os/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask; +HSPLandroid/os/AsyncTask;->executeOnExecutor(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask; +HSPLandroid/os/AsyncTask;->finish(Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask;->get()Ljava/lang/Object; +HSPLandroid/os/AsyncTask;->getHandler()Landroid/os/Handler; +HSPLandroid/os/AsyncTask;->getMainHandler()Landroid/os/Handler; +HSPLandroid/os/AsyncTask;->getStatus()Landroid/os/AsyncTask$Status; +HSPLandroid/os/AsyncTask;->isCancelled()Z +HSPLandroid/os/AsyncTask;->onCancelled()V +HSPLandroid/os/AsyncTask;->onCancelled(Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask;->onPostExecute(Ljava/lang/Object;)V +HSPLandroid/os/AsyncTask;->onPreExecute()V +HSPLandroid/os/AsyncTask;->postResult(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/AsyncTask;->postResultIfNotInvoked(Ljava/lang/Object;)V +HSPLandroid/os/BaseBundle;->()V +HSPLandroid/os/BaseBundle;->(I)V +HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;)V +HSPLandroid/os/BaseBundle;->(Landroid/os/Parcel;I)V +HSPLandroid/os/BaseBundle;->(Ljava/lang/ClassLoader;I)V +HSPLandroid/os/BaseBundle;->(Z)V +HSPLandroid/os/BaseBundle;->clear()V +HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z +HSPLandroid/os/BaseBundle;->copyInternal(Landroid/os/BaseBundle;Z)V +HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/BaseBundle;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;)Z +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B +HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; +HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I +HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I +HSPLandroid/os/BaseBundle;->getIntArray(Ljava/lang/String;)[I +HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;)J +HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;J)J +HSPLandroid/os/BaseBundle;->getMap()Landroid/util/ArrayMap; +HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; +HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/BaseBundle;->getStringArray(Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/os/BaseBundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/os/BaseBundle;->initializeFromParcelLocked(Landroid/os/Parcel;Z)V +HSPLandroid/os/BaseBundle;->isEmpty()Z +HSPLandroid/os/BaseBundle;->isEmptyParcel()Z +HSPLandroid/os/BaseBundle;->isEmptyParcel(Landroid/os/Parcel;)Z +HSPLandroid/os/BaseBundle;->isParcelled()Z +HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set; +HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V +HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V +HSPLandroid/os/BaseBundle;->putByteArray(Ljava/lang/String;[B)V +HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/os/BaseBundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V +HSPLandroid/os/BaseBundle;->putFloatArray(Ljava/lang/String;[F)V +HSPLandroid/os/BaseBundle;->putInt(Ljava/lang/String;I)V +HSPLandroid/os/BaseBundle;->putIntArray(Ljava/lang/String;[I)V +HSPLandroid/os/BaseBundle;->putLong(Ljava/lang/String;J)V +HSPLandroid/os/BaseBundle;->putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V +HSPLandroid/os/BaseBundle;->putString(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/BaseBundle;->putStringArray(Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/os/BaseBundle;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V +HSPLandroid/os/BaseBundle;->readFromParcelInner(Landroid/os/Parcel;)V +HSPLandroid/os/BaseBundle;->readFromParcelInner(Landroid/os/Parcel;I)V +HSPLandroid/os/BaseBundle;->recycleParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BaseBundle;->remove(Ljava/lang/String;)V +HSPLandroid/os/BaseBundle;->setClassLoader(Ljava/lang/ClassLoader;)V +HSPLandroid/os/BaseBundle;->setShouldDefuse(Z)V +HSPLandroid/os/BaseBundle;->size()I +HSPLandroid/os/BaseBundle;->unparcel()V +HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V +HSPLandroid/os/BatteryManager;->(Lcom/android/internal/app/IBatteryStats;Landroid/os/IBatteryPropertiesRegistrar;)V +HSPLandroid/os/BatteryManager;->getLongProperty(I)J +HSPLandroid/os/BatteryManager;->isCharging()Z +HSPLandroid/os/BatteryManager;->queryProperty(I)J +HSPLandroid/os/BatteryProperty$1;->()V +HSPLandroid/os/BatteryProperty;->()V +HSPLandroid/os/BatteryProperty;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BatteryStats$BitDescription;->(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V +HSPLandroid/os/BatteryStats$BitDescription;->(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/BatteryStats$ControllerActivityCounter;->()V +HSPLandroid/os/BatteryStats$ControllerActivityCounter;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats$ControllerActivityCounter;->getPowerCounter()Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats$ControllerActivityCounter;->getRxTimeCounter()Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats$ControllerActivityCounter;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats$Counter;->()V +HSPLandroid/os/BatteryStats$Counter;->getCountLocked(I)I +HSPLandroid/os/BatteryStats$Counter;->logState(Landroid/util/Printer;Ljava/lang/String;)V +HSPLandroid/os/BatteryStats$HistoryEventTracker;->()V +HSPLandroid/os/BatteryStats$HistoryItem;->()V +HSPLandroid/os/BatteryStats$HistoryItem;->clear()V +HSPLandroid/os/BatteryStats$HistoryItem;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BatteryStats$HistoryItem;->setTo(JBLandroid/os/BatteryStats$HistoryItem;)V +HSPLandroid/os/BatteryStats$HistoryItem;->setTo(Landroid/os/BatteryStats$HistoryItem;)V +HSPLandroid/os/BatteryStats$HistoryItem;->setToCommon(Landroid/os/BatteryStats$HistoryItem;)V +HSPLandroid/os/BatteryStats$HistoryItem;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/BatteryStats$HistoryStepDetails;->()V +HSPLandroid/os/BatteryStats$HistoryStepDetails;->clear()V +HSPLandroid/os/BatteryStats$HistoryTag;->()V +HSPLandroid/os/BatteryStats$HistoryTag;->hashCode()I +HSPLandroid/os/BatteryStats$IntToString;->applyAsString(I)Ljava/lang/String; +HSPLandroid/os/BatteryStats$LevelStepTracker;->(I)V +HSPLandroid/os/BatteryStats$LevelStepTracker;->init()V +HSPLandroid/os/BatteryStats$LevelStepTracker;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BatteryStats$LevelStepTracker;->writeToParcel(Landroid/os/Parcel;)V +HSPLandroid/os/BatteryStats$LongCounter;->()V +HSPLandroid/os/BatteryStats$LongCounter;->getCountLocked(I)J +HSPLandroid/os/BatteryStats$LongCounter;->logState(Landroid/util/Printer;Ljava/lang/String;)V +HSPLandroid/os/BatteryStats$LongCounterArray;->()V +HSPLandroid/os/BatteryStats$LongCounterArray;->getCountsLocked(I)[J +HSPLandroid/os/BatteryStats$LongCounterArray;->logState(Landroid/util/Printer;Ljava/lang/String;)V +HSPLandroid/os/BatteryStats$PackageChange;->()V +HSPLandroid/os/BatteryStats$Timer;->()V +HSPLandroid/os/BatteryStats$Timer;->getCountLocked(I)I +HSPLandroid/os/BatteryStats$Timer;->getTimeSinceMarkLocked(J)J +HSPLandroid/os/BatteryStats$Timer;->getTotalTimeLocked(JI)J +HSPLandroid/os/BatteryStats$Uid$Pkg$Serv;->()V +HSPLandroid/os/BatteryStats$Uid$Pkg$Serv;->getLaunches(I)I +HSPLandroid/os/BatteryStats$Uid$Pkg$Serv;->getStartTime(JI)J +HSPLandroid/os/BatteryStats$Uid$Pkg$Serv;->getStarts(I)I +HSPLandroid/os/BatteryStats$Uid$Pkg;->()V +HSPLandroid/os/BatteryStats$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid$Proc;->()V +HSPLandroid/os/BatteryStats$Uid$Proc;->countExcessivePowers()I +HSPLandroid/os/BatteryStats$Uid$Proc;->getExcessivePower(I)Landroid/os/BatteryStats$Uid$Proc$ExcessivePower; +HSPLandroid/os/BatteryStats$Uid$Proc;->getForegroundTime(I)J +HSPLandroid/os/BatteryStats$Uid$Proc;->getNumAnrs(I)I +HSPLandroid/os/BatteryStats$Uid$Proc;->getNumCrashes(I)I +HSPLandroid/os/BatteryStats$Uid$Proc;->getStarts(I)I +HSPLandroid/os/BatteryStats$Uid$Proc;->getSystemTime(I)J +HSPLandroid/os/BatteryStats$Uid$Proc;->getUserTime(I)J +HSPLandroid/os/BatteryStats$Uid$Proc;->isActive()Z +HSPLandroid/os/BatteryStats$Uid$Sensor;->()V +HSPLandroid/os/BatteryStats$Uid$Sensor;->getHandle()I +HSPLandroid/os/BatteryStats$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid$Wakelock;->()V +HSPLandroid/os/BatteryStats$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->()V +HSPLandroid/os/BatteryStats$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothScanResultBgCounter()Landroid/os/BatteryStats$Counter; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothScanResultCounter()Landroid/os/BatteryStats$Counter; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothScanTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getBluetoothUnoptimizedScanTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getCameraTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getCpuFreqTimes(I)[J +HSPLandroid/os/BatteryStats$Uid;->getFlashlightTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getForegroundActivityTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getForegroundServiceTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getFullWifiLockTime(JI)J +HSPLandroid/os/BatteryStats$Uid;->getJobCompletionStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getJobStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getMobileRadioActiveCount(I)I +HSPLandroid/os/BatteryStats$Uid;->getMobileRadioActiveTime(I)J +HSPLandroid/os/BatteryStats$Uid;->getMobileRadioApWakeupCount(I)J +HSPLandroid/os/BatteryStats$Uid;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats$Uid;->getNetworkActivityBytes(II)J +HSPLandroid/os/BatteryStats$Uid;->getNetworkActivityPackets(II)J +HSPLandroid/os/BatteryStats$Uid;->getPackageStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getPidStats()Landroid/util/SparseArray; +HSPLandroid/os/BatteryStats$Uid;->getProcessStateTime(IJI)J +HSPLandroid/os/BatteryStats$Uid;->getProcessStateTimer(I)Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getProcessStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getScreenOffCpuFreqTimes(I)[J +HSPLandroid/os/BatteryStats$Uid;->getSensorStats()Landroid/util/SparseArray; +HSPLandroid/os/BatteryStats$Uid;->getSyncStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getSystemCpuTimeUs(I)J +HSPLandroid/os/BatteryStats$Uid;->getTimeAtCpuSpeed(III)J +HSPLandroid/os/BatteryStats$Uid;->getUid()I +HSPLandroid/os/BatteryStats$Uid;->getUserActivityCount(II)I +HSPLandroid/os/BatteryStats$Uid;->getUserCpuTimeUs(I)J +HSPLandroid/os/BatteryStats$Uid;->getVibratorOnTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer; +HSPLandroid/os/BatteryStats$Uid;->getWakelockStats()Landroid/util/ArrayMap; +HSPLandroid/os/BatteryStats$Uid;->getWifiBatchedScanCount(II)I +HSPLandroid/os/BatteryStats$Uid;->getWifiBatchedScanTime(IJI)J +HSPLandroid/os/BatteryStats$Uid;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats$Uid;->getWifiMulticastTime(JI)J +HSPLandroid/os/BatteryStats$Uid;->getWifiRadioApWakeupCount(I)J +HSPLandroid/os/BatteryStats$Uid;->getWifiRunningTime(JI)J +HSPLandroid/os/BatteryStats$Uid;->getWifiScanActualTime(J)J +HSPLandroid/os/BatteryStats$Uid;->getWifiScanBackgroundCount(I)I +HSPLandroid/os/BatteryStats$Uid;->getWifiScanBackgroundTime(J)J +HSPLandroid/os/BatteryStats$Uid;->getWifiScanCount(I)I +HSPLandroid/os/BatteryStats$Uid;->getWifiScanTime(JI)J +HSPLandroid/os/BatteryStats$Uid;->hasNetworkActivity()Z +HSPLandroid/os/BatteryStats$Uid;->hasUserActivity()Z +HSPLandroid/os/BatteryStats$Uid;->noteActivityPausedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteActivityResumedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteFullWifiLockAcquiredLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteFullWifiLockReleasedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteUserActivityLocked(I)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiBatchedScanStartedLocked(IJ)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiBatchedScanStoppedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiMulticastDisabledLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiMulticastEnabledLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiRunningLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiScanStartedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiScanStoppedLocked(J)V +HSPLandroid/os/BatteryStats$Uid;->noteWifiStoppedLocked(J)V +HSPLandroid/os/BatteryStats;->()V +HSPLandroid/os/BatteryStats;->commitCurrentHistoryBatchLocked()V +HSPLandroid/os/BatteryStats;->computeBatteryRealtime(JI)J +HSPLandroid/os/BatteryStats;->computeBatteryScreenOffRealtime(JI)J +HSPLandroid/os/BatteryStats;->computeBatteryScreenOffUptime(JI)J +HSPLandroid/os/BatteryStats;->computeBatteryTimeRemaining(J)J +HSPLandroid/os/BatteryStats;->computeBatteryUptime(JI)J +HSPLandroid/os/BatteryStats;->computeChargeTimeRemaining(J)J +HSPLandroid/os/BatteryStats;->computeRealtime(JI)J +HSPLandroid/os/BatteryStats;->computeUptime(JI)J +HSPLandroid/os/BatteryStats;->finishIteratingHistoryLocked()V +HSPLandroid/os/BatteryStats;->finishIteratingOldHistoryLocked()V +HSPLandroid/os/BatteryStats;->getBatteryRealtime(J)J +HSPLandroid/os/BatteryStats;->getBatteryUptime(J)J +HSPLandroid/os/BatteryStats;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats;->getBluetoothScanTime(JI)J +HSPLandroid/os/BatteryStats;->getCameraOnTime(JI)J +HSPLandroid/os/BatteryStats;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HSPLandroid/os/BatteryStats;->getCpuFreqs()[J +HSPLandroid/os/BatteryStats;->getCurrentDailyStartTime()J +HSPLandroid/os/BatteryStats;->getDailyChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HSPLandroid/os/BatteryStats;->getDailyDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HSPLandroid/os/BatteryStats;->getDailyItemLocked(I)Landroid/os/BatteryStats$DailyItem; +HSPLandroid/os/BatteryStats;->getDailyPackageChanges()Ljava/util/ArrayList; +HSPLandroid/os/BatteryStats;->getDeviceIdleModeCount(II)I +HSPLandroid/os/BatteryStats;->getDeviceIdleModeTime(IJI)J +HSPLandroid/os/BatteryStats;->getDeviceIdlingCount(II)I +HSPLandroid/os/BatteryStats;->getDeviceIdlingTime(IJI)J +HSPLandroid/os/BatteryStats;->getDischargeAmount(I)I +HSPLandroid/os/BatteryStats;->getDischargeAmountScreenOff()I +HSPLandroid/os/BatteryStats;->getDischargeAmountScreenOffSinceCharge()I +HSPLandroid/os/BatteryStats;->getDischargeAmountScreenOn()I +HSPLandroid/os/BatteryStats;->getDischargeAmountScreenOnSinceCharge()I +HSPLandroid/os/BatteryStats;->getDischargeCoulombCounter()Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats;->getDischargeCurrentLevel()I +HSPLandroid/os/BatteryStats;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker; +HSPLandroid/os/BatteryStats;->getDischargeScreenOffCoulombCounter()Landroid/os/BatteryStats$LongCounter; +HSPLandroid/os/BatteryStats;->getDischargeStartLevel()I +HSPLandroid/os/BatteryStats;->getEndPlatformVersion()Ljava/lang/String; +HSPLandroid/os/BatteryStats;->getEstimatedBatteryCapacity()I +HSPLandroid/os/BatteryStats;->getFlashlightOnCount(I)J +HSPLandroid/os/BatteryStats;->getFlashlightOnTime(JI)J +HSPLandroid/os/BatteryStats;->getGlobalWifiRunningTime(JI)J +HSPLandroid/os/BatteryStats;->getHighDischargeAmountSinceCharge()I +HSPLandroid/os/BatteryStats;->getHistoryBaseTime()J +HSPLandroid/os/BatteryStats;->getHistoryStringPoolBytes()I +HSPLandroid/os/BatteryStats;->getHistoryStringPoolSize()I +HSPLandroid/os/BatteryStats;->getHistoryTagPoolString(I)Ljava/lang/String; +HSPLandroid/os/BatteryStats;->getHistoryTagPoolUid(I)I +HSPLandroid/os/BatteryStats;->getHistoryTotalSize()I +HSPLandroid/os/BatteryStats;->getHistoryUsedSize()I +HSPLandroid/os/BatteryStats;->getInteractiveTime(JI)J +HSPLandroid/os/BatteryStats;->getIsOnBattery()Z +HSPLandroid/os/BatteryStats;->getKernelMemoryStats()Landroid/util/LongSparseArray; +HSPLandroid/os/BatteryStats;->getKernelWakelockStats()Ljava/util/Map; +HSPLandroid/os/BatteryStats;->getLongestDeviceIdleModeTime(I)J +HSPLandroid/os/BatteryStats;->getLowDischargeAmountSinceCharge()I +HSPLandroid/os/BatteryStats;->getMaxLearnedBatteryCapacity()I +HSPLandroid/os/BatteryStats;->getMinLearnedBatteryCapacity()I +HSPLandroid/os/BatteryStats;->getMobileRadioActiveAdjustedTime(I)J +HSPLandroid/os/BatteryStats;->getMobileRadioActiveCount(I)I +HSPLandroid/os/BatteryStats;->getMobileRadioActiveTime(JI)J +HSPLandroid/os/BatteryStats;->getMobileRadioActiveUnknownCount(I)I +HSPLandroid/os/BatteryStats;->getMobileRadioActiveUnknownTime(I)J +HSPLandroid/os/BatteryStats;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats;->getNetworkActivityBytes(II)J +HSPLandroid/os/BatteryStats;->getNetworkActivityPackets(II)J +HSPLandroid/os/BatteryStats;->getNextHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z +HSPLandroid/os/BatteryStats;->getNextMaxDailyDeadline()J +HSPLandroid/os/BatteryStats;->getNextMinDailyDeadline()J +HSPLandroid/os/BatteryStats;->getNextOldHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z +HSPLandroid/os/BatteryStats;->getNumConnectivityChange(I)I +HSPLandroid/os/BatteryStats;->getParcelVersion()I +HSPLandroid/os/BatteryStats;->getPhoneDataConnectionCount(II)I +HSPLandroid/os/BatteryStats;->getPhoneDataConnectionTime(IJI)J +HSPLandroid/os/BatteryStats;->getPhoneOnCount(I)I +HSPLandroid/os/BatteryStats;->getPhoneOnTime(JI)J +HSPLandroid/os/BatteryStats;->getPhoneSignalScanningTime(JI)J +HSPLandroid/os/BatteryStats;->getPhoneSignalStrengthCount(II)I +HSPLandroid/os/BatteryStats;->getPhoneSignalStrengthTime(IJI)J +HSPLandroid/os/BatteryStats;->getPowerSaveModeEnabledCount(I)I +HSPLandroid/os/BatteryStats;->getPowerSaveModeEnabledTime(JI)J +HSPLandroid/os/BatteryStats;->getScreenBrightnessTime(IJI)J +HSPLandroid/os/BatteryStats;->getScreenOnCount(I)I +HSPLandroid/os/BatteryStats;->getScreenOnTime(JI)J +HSPLandroid/os/BatteryStats;->getStartClockTime()J +HSPLandroid/os/BatteryStats;->getStartCount()I +HSPLandroid/os/BatteryStats;->getStartPlatformVersion()Ljava/lang/String; +HSPLandroid/os/BatteryStats;->getUidStats()Landroid/util/SparseArray; +HSPLandroid/os/BatteryStats;->getWakeupReasonStats()Ljava/util/Map; +HSPLandroid/os/BatteryStats;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter; +HSPLandroid/os/BatteryStats;->getWifiOnTime(JI)J +HSPLandroid/os/BatteryStats;->getWifiSignalStrengthCount(II)I +HSPLandroid/os/BatteryStats;->getWifiSignalStrengthTime(IJI)J +HSPLandroid/os/BatteryStats;->getWifiStateCount(II)I +HSPLandroid/os/BatteryStats;->getWifiStateTime(IJI)J +HSPLandroid/os/BatteryStats;->getWifiSupplStateCount(II)I +HSPLandroid/os/BatteryStats;->getWifiSupplStateTime(IJI)J +HSPLandroid/os/BatteryStats;->hasBluetoothActivityReporting()Z +HSPLandroid/os/BatteryStats;->hasModemActivityReporting()Z +HSPLandroid/os/BatteryStats;->hasWifiActivityReporting()Z +HSPLandroid/os/BatteryStats;->startIteratingHistoryLocked()Z +HSPLandroid/os/BatteryStats;->startIteratingOldHistoryLocked()Z +HSPLandroid/os/BatteryStats;->writeToParcelWithoutUids(Landroid/os/Parcel;I)V +HSPLandroid/os/Binder;->()V +HSPLandroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLandroid/os/Binder;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V +HSPLandroid/os/Binder;->checkParcel(Landroid/os/IBinder;ILandroid/os/Parcel;Ljava/lang/String;)V +HSPLandroid/os/Binder;->copyAllowBlocking(Landroid/os/IBinder;Landroid/os/IBinder;)V +HSPLandroid/os/Binder;->execTransact(IJJI)Z +HSPLandroid/os/Binder;->finalize()V +HSPLandroid/os/Binder;->getCallingUserHandle()Landroid/os/UserHandle; +HSPLandroid/os/Binder;->getInterfaceDescriptor()Ljava/lang/String; +HSPLandroid/os/Binder;->isBinderAlive()Z +HSPLandroid/os/Binder;->isTracingEnabled()Z +HSPLandroid/os/Binder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V +HSPLandroid/os/Binder;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/Binder;->pingBinder()Z +HSPLandroid/os/Binder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface; +HSPLandroid/os/Binder;->setWarnOnBlocking(Z)V +HSPLandroid/os/Binder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/Binder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z +HSPLandroid/os/BinderProxy;->()V +HSPLandroid/os/BinderProxy;->finalize()V +HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface; +HSPLandroid/os/BinderProxy;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/Build;->ensureFingerprintProperty()V +HSPLandroid/os/Build;->getSerial()Ljava/lang/String; +HSPLandroid/os/Bundle$1;->()V +HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Bundle; +HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Bundle;->()V +HSPLandroid/os/Bundle;->(I)V +HSPLandroid/os/Bundle;->(Landroid/os/Bundle;)V +HSPLandroid/os/Bundle;->(Landroid/os/Parcel;I)V +HSPLandroid/os/Bundle;->(Z)V +HSPLandroid/os/Bundle;->clear()V +HSPLandroid/os/Bundle;->clone()Ljava/lang/Object; +HSPLandroid/os/Bundle;->deepCopy()Landroid/os/Bundle; +HSPLandroid/os/Bundle;->getBundle(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/os/Bundle;->getByteArray(Ljava/lang/String;)[B +HSPLandroid/os/Bundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; +HSPLandroid/os/Bundle;->getParcelable(Ljava/lang/String;)Landroid/os/Parcelable; +HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable; +HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; +HSPLandroid/os/Bundle;->getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray; +HSPLandroid/os/Bundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/os/Bundle;->maybePrefillHasFds()V +HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V +HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V +HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V +HSPLandroid/os/Bundle;->putFloatArray(Ljava/lang/String;[F)V +HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V +HSPLandroid/os/Bundle;->putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V +HSPLandroid/os/Bundle;->putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V +HSPLandroid/os/Bundle;->putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V +HSPLandroid/os/Bundle;->putSparseParcelableArray(Ljava/lang/String;Landroid/util/SparseArray;)V +HSPLandroid/os/Bundle;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V +HSPLandroid/os/Bundle;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/Bundle;->remove(Ljava/lang/String;)V +HSPLandroid/os/Bundle;->setAllowFds(Z)Z +HSPLandroid/os/Bundle;->setClassLoader(Ljava/lang/ClassLoader;)V +HSPLandroid/os/Bundle;->setDefusable(Landroid/os/Bundle;Z)Landroid/os/Bundle; +HSPLandroid/os/Bundle;->setDefusable(Z)V +HSPLandroid/os/Bundle;->toString()Ljava/lang/String; +HSPLandroid/os/Bundle;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/CancellationSignal$OnCancelListener;->onCancel()V +HSPLandroid/os/CancellationSignal$Transport;->()V +HSPLandroid/os/CancellationSignal$Transport;->(Landroid/os/CancellationSignal$Transport;)V +HSPLandroid/os/CancellationSignal$Transport;->cancel()V +HSPLandroid/os/CancellationSignal;->()V +HSPLandroid/os/CancellationSignal;->cancel()V +HSPLandroid/os/CancellationSignal;->createTransport()Landroid/os/ICancellationSignal; +HSPLandroid/os/CancellationSignal;->fromTransport(Landroid/os/ICancellationSignal;)Landroid/os/CancellationSignal; +HSPLandroid/os/CancellationSignal;->isCanceled()Z +HSPLandroid/os/CancellationSignal;->setRemote(Landroid/os/ICancellationSignal;)V +HSPLandroid/os/CancellationSignal;->throwIfCanceled()V +HSPLandroid/os/CancellationSignal;->waitForCancelFinishedLocked()V +HSPLandroid/os/ConditionVariable;->()V +HSPLandroid/os/ConditionVariable;->(Z)V +HSPLandroid/os/ConditionVariable;->block()V +HSPLandroid/os/ConditionVariable;->block(J)Z +HSPLandroid/os/ConditionVariable;->close()V +HSPLandroid/os/ConditionVariable;->open()V +HSPLandroid/os/CpuUsageInfo$1;->()V +HSPLandroid/os/Debug$MemoryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Debug$MemoryInfo; +HSPLandroid/os/Debug$MemoryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Landroid/os/Debug$MemoryInfo; +HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/Debug$MemoryInfo;->()V +HSPLandroid/os/Debug$MemoryInfo;->(Landroid/os/Parcel;)V +HSPLandroid/os/Debug$MemoryInfo;->(Landroid/os/Parcel;Landroid/os/Debug$MemoryInfo;)V +HSPLandroid/os/Debug$MemoryInfo;->getMemoryStats()Ljava/util/Map; +HSPLandroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String; +HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivate(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivateClean(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivateDirty(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherPss(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherSharedClean(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherSharedDirty(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappablePss(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappedOut(I)I +HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappedOutPss(I)I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryCode()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryGraphics()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryJavaHeap()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryNativeHeap()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryPrivateOther()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryStack()I +HSPLandroid/os/Debug$MemoryInfo;->getSummarySystem()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalPss()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwap()I +HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwapPss()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateClean()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateDirty()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalPss()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalSharedDirty()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappablePss()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappedOut()I +HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappedOutPss()I +HSPLandroid/os/Debug$MemoryInfo;->hasSwappedOutPss()Z +HSPLandroid/os/Debug$MemoryInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/Debug;->countInstancesOfClass(Ljava/lang/Class;)J +HSPLandroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; +HSPLandroid/os/Debug;->getCallers(I)Ljava/lang/String; +HSPLandroid/os/Debug;->getMethodTracingMode()I +HSPLandroid/os/Debug;->getVmFeatureList()[Ljava/lang/String; +HSPLandroid/os/Debug;->isDebuggerConnected()Z +HSPLandroid/os/Debug;->waitingForDebugger()Z +HSPLandroid/os/Environment$UserEnvironment;->(I)V +HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment$UserEnvironment;->getExternalDirs()[Ljava/io/File; +HSPLandroid/os/Environment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->buildPaths([Ljava/io/File;[Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment;->getDataDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getDataDirectory(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDataProfilesDeDirectory(I)Ljava/io/File; +HSPLandroid/os/Environment;->getDataProfilesDePackageDirectory(ILjava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDataSystemDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserCeDirectory(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserCePackageDirectory(Ljava/lang/String;ILjava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserDeDirectory(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserDeDirectory(Ljava/lang/String;I)Ljava/io/File; +HSPLandroid/os/Environment;->getDataUserDePackageDirectory(Ljava/lang/String;ILjava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getDirectory(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/Environment;->getExternalStorageState()Ljava/lang/String; +HSPLandroid/os/Environment;->getExternalStorageState(Ljava/io/File;)Ljava/lang/String; +HSPLandroid/os/Environment;->getOdmDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getOemDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getRootDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->getUserConfigDirectory(I)Ljava/io/File; +HSPLandroid/os/Environment;->getUserSystemDirectory(I)Ljava/io/File; +HSPLandroid/os/Environment;->getVendorDirectory()Ljava/io/File; +HSPLandroid/os/Environment;->initForCurrentUser()V +HSPLandroid/os/Environment;->isExternalStorageEmulated()Z +HSPLandroid/os/Environment;->isExternalStorageEmulated(Ljava/io/File;)Z +HSPLandroid/os/Environment;->isStorageDisabled()Z +HSPLandroid/os/Environment;->setUserRequired(Z)V +HSPLandroid/os/Environment;->throwIfUserRequired()V +HSPLandroid/os/FactoryTest;->getMode()I +HSPLandroid/os/FileObserver$ObserverThread;->()V +HSPLandroid/os/FileObserver$ObserverThread;->onEvent(IILjava/lang/String;)V +HSPLandroid/os/FileObserver$ObserverThread;->run()V +HSPLandroid/os/FileObserver$ObserverThread;->startWatching(Ljava/lang/String;ILandroid/os/FileObserver;)I +HSPLandroid/os/FileObserver$ObserverThread;->stopWatching(I)V +HSPLandroid/os/FileObserver;->(Ljava/lang/String;)V +HSPLandroid/os/FileObserver;->(Ljava/lang/String;I)V +HSPLandroid/os/FileObserver;->finalize()V +HSPLandroid/os/FileObserver;->onEvent(ILjava/lang/String;)V +HSPLandroid/os/FileObserver;->startWatching()V +HSPLandroid/os/FileObserver;->stopWatching()V +HSPLandroid/os/FileUtils;->bytesToFile(Ljava/lang/String;[B)V +HSPLandroid/os/FileUtils;->contains(Ljava/io/File;Ljava/io/File;)Z +HSPLandroid/os/FileUtils;->contains(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/os/FileUtils;->createDir(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/FileUtils;->getUid(Ljava/lang/String;)I +HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;)[Ljava/io/File; +HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;Ljava/io/FilenameFilter;)[Ljava/io/File; +HSPLandroid/os/FileUtils;->listOrEmpty(Ljava/io/File;)[Ljava/lang/String; +HSPLandroid/os/FileUtils;->newFileOrNull(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/os/FileUtils;->readTextFile(Ljava/io/File;ILjava/lang/String;)Ljava/lang/String; +HSPLandroid/os/FileUtils;->setPermissions(Ljava/io/File;III)I +HSPLandroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I +HSPLandroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z +HSPLandroid/os/GraphicsEnvironment;->chooseDriver(Landroid/content/Context;)V +HSPLandroid/os/GraphicsEnvironment;->earlyInitEGL()V +HSPLandroid/os/GraphicsEnvironment;->lambda$-android_os_GraphicsEnvironment_4205()V +HSPLandroid/os/Handler$Callback;->handleMessage(Landroid/os/Message;)Z +HSPLandroid/os/Handler$MessengerImpl;->(Landroid/os/Handler;)V +HSPLandroid/os/Handler$MessengerImpl;->(Landroid/os/Handler;Landroid/os/Handler$MessengerImpl;)V +HSPLandroid/os/Handler$MessengerImpl;->send(Landroid/os/Message;)V +HSPLandroid/os/Handler;->()V +HSPLandroid/os/Handler;->(Landroid/os/Handler$Callback;)V +HSPLandroid/os/Handler;->(Landroid/os/Handler$Callback;Z)V +HSPLandroid/os/Handler;->(Landroid/os/Looper;)V +HSPLandroid/os/Handler;->(Landroid/os/Looper;Landroid/os/Handler$Callback;)V +HSPLandroid/os/Handler;->(Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V +HSPLandroid/os/Handler;->(Z)V +HSPLandroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V +HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z +HSPLandroid/os/Handler;->getIMessenger()Landroid/os/IMessenger; +HSPLandroid/os/Handler;->getLooper()Landroid/os/Looper; +HSPLandroid/os/Handler;->getMain()Landroid/os/Handler; +HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;)Landroid/os/Message; +HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;Ljava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Handler;->handleCallback(Landroid/os/Message;)V +HSPLandroid/os/Handler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/os/Handler;->hasMessages(I)Z +HSPLandroid/os/Handler;->hasMessages(ILjava/lang/Object;)Z +HSPLandroid/os/Handler;->obtainMessage()Landroid/os/Message; +HSPLandroid/os/Handler;->obtainMessage(I)Landroid/os/Message; +HSPLandroid/os/Handler;->obtainMessage(III)Landroid/os/Message; +HSPLandroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Handler;->post(Ljava/lang/Runnable;)Z +HSPLandroid/os/Handler;->postAtFrontOfQueue(Ljava/lang/Runnable;)Z +HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;J)Z +HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z +HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z +HSPLandroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V +HSPLandroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V +HSPLandroid/os/Handler;->removeMessages(I)V +HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V +HSPLandroid/os/Handler;->sendEmptyMessage(I)Z +HSPLandroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z +HSPLandroid/os/Handler;->sendMessage(Landroid/os/Message;)Z +HSPLandroid/os/Handler;->sendMessageAtFrontOfQueue(Landroid/os/Message;)Z +HSPLandroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z +HSPLandroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z +HSPLandroid/os/Handler;->toString()Ljava/lang/String; +HSPLandroid/os/HandlerThread;->(Ljava/lang/String;)V +HSPLandroid/os/HandlerThread;->(Ljava/lang/String;I)V +HSPLandroid/os/HandlerThread;->getLooper()Landroid/os/Looper; +HSPLandroid/os/HandlerThread;->getThreadId()I +HSPLandroid/os/HandlerThread;->onLooperPrepared()V +HSPLandroid/os/HandlerThread;->quit()Z +HSPLandroid/os/HandlerThread;->run()V +HSPLandroid/os/HardwarePropertiesManager;->(Landroid/content/Context;Landroid/os/IHardwarePropertiesManager;)V +HSPLandroid/os/HardwarePropertiesManager;->getDeviceTemperatures(II)[F +HSPLandroid/os/HwBinder;->()V +HSPLandroid/os/HwBinder;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/os/HwBlob;->(I)V +HSPLandroid/os/HwBlob;->wrapArray([B)[Ljava/lang/Byte; +HSPLandroid/os/HwParcel;->()V +HSPLandroid/os/HwParcel;->(Z)V +HSPLandroid/os/HwParcel;->readInt8Vector()Ljava/util/ArrayList; +HSPLandroid/os/HwParcel;->readStringVector()Ljava/util/ArrayList; +HSPLandroid/os/HwParcel;->writeStringVector(Ljava/util/ArrayList;)V +HSPLandroid/os/HwRemoteBinder;->()V +HSPLandroid/os/HwRemoteBinder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IHwInterface; +HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getProperty(ILandroid/os/BatteryProperty;)I +HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar; +HSPLandroid/os/IBatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I +HSPLandroid/os/IBatteryPropertiesRegistrar;->registerListener(Landroid/os/IBatteryPropertiesListener;)V +HSPLandroid/os/IBatteryPropertiesRegistrar;->scheduleUpdate()V +HSPLandroid/os/IBatteryPropertiesRegistrar;->unregisterListener(Landroid/os/IBatteryPropertiesListener;)V +HSPLandroid/os/IBinder$DeathRecipient;->binderDied()V +HSPLandroid/os/ICancellationSignal$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/ICancellationSignal$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/os/ICancellationSignal$Stub;->()V +HSPLandroid/os/ICancellationSignal$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ICancellationSignal; +HSPLandroid/os/ICancellationSignal;->cancel()V +HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->getSerial()Ljava/lang/String; +HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->()V +HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdentifiersPolicyService; +HSPLandroid/os/IDeviceIdentifiersPolicyService;->getSerial()Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IDeviceIdleController$Stub$Proxy;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z +HSPLandroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController; +HSPLandroid/os/IDeviceIdleController;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JILjava/lang/String;)V +HSPLandroid/os/IDeviceIdleController;->addPowerSaveTempWhitelistAppForMms(Ljava/lang/String;ILjava/lang/String;)J +HSPLandroid/os/IDeviceIdleController;->addPowerSaveTempWhitelistAppForSms(Ljava/lang/String;ILjava/lang/String;)J +HSPLandroid/os/IDeviceIdleController;->addPowerSaveWhitelistApp(Ljava/lang/String;)V +HSPLandroid/os/IDeviceIdleController;->exitIdle(Ljava/lang/String;)V +HSPLandroid/os/IDeviceIdleController;->getAppIdTempWhitelist()[I +HSPLandroid/os/IDeviceIdleController;->getAppIdUserWhitelist()[I +HSPLandroid/os/IDeviceIdleController;->getAppIdWhitelist()[I +HSPLandroid/os/IDeviceIdleController;->getAppIdWhitelistExceptIdle()[I +HSPLandroid/os/IDeviceIdleController;->getFullPowerWhitelist()[Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController;->getFullPowerWhitelistExceptIdle()[Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController;->getSystemPowerWhitelist()[Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController;->getSystemPowerWhitelistExceptIdle()[Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController;->getUserPowerWhitelist()[Ljava/lang/String; +HSPLandroid/os/IDeviceIdleController;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z +HSPLandroid/os/IDeviceIdleController;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z +HSPLandroid/os/IDeviceIdleController;->registerMaintenanceActivityListener(Landroid/os/IMaintenanceActivityListener;)Z +HSPLandroid/os/IDeviceIdleController;->removePowerSaveWhitelistApp(Ljava/lang/String;)V +HSPLandroid/os/IDeviceIdleController;->unregisterMaintenanceActivityListener(Landroid/os/IMaintenanceActivityListener;)V +HSPLandroid/os/IHardwarePropertiesManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IHardwarePropertiesManager$Stub$Proxy;->getDeviceTemperatures(Ljava/lang/String;II)[F +HSPLandroid/os/IHardwarePropertiesManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IHardwarePropertiesManager; +HSPLandroid/os/IHardwarePropertiesManager;->getCpuUsages(Ljava/lang/String;)[Landroid/os/CpuUsageInfo; +HSPLandroid/os/IHardwarePropertiesManager;->getDeviceTemperatures(Ljava/lang/String;II)[F +HSPLandroid/os/IHardwarePropertiesManager;->getFanSpeeds(Ljava/lang/String;)[F +HSPLandroid/os/IHwBinder$DeathRecipient;->serviceDied(J)V +HSPLandroid/os/IHwBinder;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HSPLandroid/os/IHwBinder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IHwInterface; +HSPLandroid/os/IHwBinder;->transact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HSPLandroid/os/IHwBinder;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HSPLandroid/os/IHwInterface;->asBinder()Landroid/os/IHwBinder; +HSPLandroid/os/IInstalld$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IInstalld$Stub$Proxy;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J +HSPLandroid/os/IInstalld$Stub$Proxy;->fixupAppData(Ljava/lang/String;I)V +HSPLandroid/os/IInstalld$Stub$Proxy;->invalidateMounts()V +HSPLandroid/os/IInstalld$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IInstalld; +HSPLandroid/os/IInstalld;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V +HSPLandroid/os/IInstalld;->clearAppProfiles(Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->copySystemProfile(Ljava/lang/String;ILjava/lang/String;)Z +HSPLandroid/os/IInstalld;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J +HSPLandroid/os/IInstalld;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->createUserData(Ljava/lang/String;III)V +HSPLandroid/os/IInstalld;->deleteOdex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->destroyAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V +HSPLandroid/os/IInstalld;->destroyAppProfiles(Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->destroyUserData(Ljava/lang/String;II)V +HSPLandroid/os/IInstalld;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLandroid/os/IInstalld;->dumpProfiles(ILjava/lang/String;Ljava/lang/String;)Z +HSPLandroid/os/IInstalld;->fixupAppData(Ljava/lang/String;I)V +HSPLandroid/os/IInstalld;->freeCache(Ljava/lang/String;JJI)V +HSPLandroid/os/IInstalld;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;)[J +HSPLandroid/os/IInstalld;->getExternalSize(Ljava/lang/String;II[I)[J +HSPLandroid/os/IInstalld;->getUserSize(Ljava/lang/String;II[I)[J +HSPLandroid/os/IInstalld;->idmap(Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/os/IInstalld;->invalidateMounts()V +HSPLandroid/os/IInstalld;->isQuotaSupported(Ljava/lang/String;)Z +HSPLandroid/os/IInstalld;->linkFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLandroid/os/IInstalld;->markBootComplete(Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->mergeProfiles(ILjava/lang/String;)Z +HSPLandroid/os/IInstalld;->migrateAppData(Ljava/lang/String;Ljava/lang/String;II)V +HSPLandroid/os/IInstalld;->moveAb(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->moveCompleteApp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V +HSPLandroid/os/IInstalld;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z +HSPLandroid/os/IInstalld;->removeIdmap(Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->restoreconAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V +HSPLandroid/os/IInstalld;->rmPackageDir(Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->rmdex(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IInstalld;->setAppQuota(Ljava/lang/String;IIJ)V +HSPLandroid/os/IMessenger$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IMessenger$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/os/IMessenger$Stub$Proxy;->send(Landroid/os/Message;)V +HSPLandroid/os/IMessenger$Stub;->()V +HSPLandroid/os/IMessenger$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/os/IMessenger$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IMessenger; +HSPLandroid/os/IMessenger$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/IMessenger;->send(Landroid/os/Message;)V +HSPLandroid/os/INetworkManagementService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/INetworkManagementService$Stub$Proxy;->isBandwidthControlEnabled()Z +HSPLandroid/os/INetworkManagementService$Stub$Proxy;->setUidCleartextNetworkPolicy(II)V +HSPLandroid/os/INetworkManagementService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkManagementService; +HSPLandroid/os/INetworkManagementService;->addIdleTimer(Ljava/lang/String;II)V +HSPLandroid/os/INetworkManagementService;->addInterfaceToLocalNetwork(Ljava/lang/String;Ljava/util/List;)V +HSPLandroid/os/INetworkManagementService;->addInterfaceToNetwork(Ljava/lang/String;I)V +HSPLandroid/os/INetworkManagementService;->addLegacyRouteForNetId(ILandroid/net/RouteInfo;I)V +HSPLandroid/os/INetworkManagementService;->addRoute(ILandroid/net/RouteInfo;)V +HSPLandroid/os/INetworkManagementService;->addVpnUidRanges(I[Landroid/net/UidRange;)V +HSPLandroid/os/INetworkManagementService;->allowProtect(I)V +HSPLandroid/os/INetworkManagementService;->attachPppd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->clearDefaultNetId()V +HSPLandroid/os/INetworkManagementService;->clearInterfaceAddresses(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->clearPermission([I)V +HSPLandroid/os/INetworkManagementService;->createPhysicalNetwork(ILjava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->createVirtualNetwork(IZZ)V +HSPLandroid/os/INetworkManagementService;->denyProtect(I)V +HSPLandroid/os/INetworkManagementService;->detachPppd(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->disableIpv6(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->disableNat(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->enableIpv6(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->enableNat(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->getDnsForwarders()[Ljava/lang/String; +HSPLandroid/os/INetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration; +HSPLandroid/os/INetworkManagementService;->getIpForwardingEnabled()Z +HSPLandroid/os/INetworkManagementService;->getNetdService()Landroid/net/INetd; +HSPLandroid/os/INetworkManagementService;->getNetworkStatsDetail()Landroid/net/NetworkStats; +HSPLandroid/os/INetworkManagementService;->getNetworkStatsSummaryDev()Landroid/net/NetworkStats; +HSPLandroid/os/INetworkManagementService;->getNetworkStatsSummaryXt()Landroid/net/NetworkStats; +HSPLandroid/os/INetworkManagementService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats; +HSPLandroid/os/INetworkManagementService;->getNetworkStatsUidDetail(I)Landroid/net/NetworkStats; +HSPLandroid/os/INetworkManagementService;->isBandwidthControlEnabled()Z +HSPLandroid/os/INetworkManagementService;->isClatdStarted(Ljava/lang/String;)Z +HSPLandroid/os/INetworkManagementService;->isFirewallEnabled()Z +HSPLandroid/os/INetworkManagementService;->isNetworkActive()Z +HSPLandroid/os/INetworkManagementService;->isNetworkRestricted(I)Z +HSPLandroid/os/INetworkManagementService;->isTetheringStarted()Z +HSPLandroid/os/INetworkManagementService;->listInterfaces()[Ljava/lang/String; +HSPLandroid/os/INetworkManagementService;->listTetheredInterfaces()[Ljava/lang/String; +HSPLandroid/os/INetworkManagementService;->listTtys()[Ljava/lang/String; +HSPLandroid/os/INetworkManagementService;->registerNetworkActivityListener(Landroid/os/INetworkActivityListener;)V +HSPLandroid/os/INetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V +HSPLandroid/os/INetworkManagementService;->registerTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->removeIdleTimer(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->removeInterfaceAlert(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->removeInterfaceFromLocalNetwork(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->removeInterfaceFromNetwork(Ljava/lang/String;I)V +HSPLandroid/os/INetworkManagementService;->removeInterfaceQuota(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->removeNetwork(I)V +HSPLandroid/os/INetworkManagementService;->removeRoute(ILandroid/net/RouteInfo;)V +HSPLandroid/os/INetworkManagementService;->removeRoutesFromLocalNetwork(Ljava/util/List;)I +HSPLandroid/os/INetworkManagementService;->removeVpnUidRanges(I[Landroid/net/UidRange;)V +HSPLandroid/os/INetworkManagementService;->setAllowOnlyVpnForUids(Z[Landroid/net/UidRange;)V +HSPLandroid/os/INetworkManagementService;->setDataSaverModeEnabled(Z)Z +HSPLandroid/os/INetworkManagementService;->setDefaultNetId(I)V +HSPLandroid/os/INetworkManagementService;->setDnsConfigurationForNetwork(I[Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->setDnsForwarders(Landroid/net/Network;[Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->setFirewallChainEnabled(IZ)V +HSPLandroid/os/INetworkManagementService;->setFirewallEnabled(Z)V +HSPLandroid/os/INetworkManagementService;->setFirewallInterfaceRule(Ljava/lang/String;Z)V +HSPLandroid/os/INetworkManagementService;->setFirewallUidRule(III)V +HSPLandroid/os/INetworkManagementService;->setFirewallUidRules(I[I[I)V +HSPLandroid/os/INetworkManagementService;->setGlobalAlert(J)V +HSPLandroid/os/INetworkManagementService;->setIPv6AddrGenMode(Ljava/lang/String;I)V +HSPLandroid/os/INetworkManagementService;->setInterfaceAlert(Ljava/lang/String;J)V +HSPLandroid/os/INetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V +HSPLandroid/os/INetworkManagementService;->setInterfaceDown(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->setInterfaceIpv6NdOffload(Ljava/lang/String;Z)V +HSPLandroid/os/INetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V +HSPLandroid/os/INetworkManagementService;->setInterfaceQuota(Ljava/lang/String;J)V +HSPLandroid/os/INetworkManagementService;->setInterfaceUp(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->setIpForwardingEnabled(Z)V +HSPLandroid/os/INetworkManagementService;->setMtu(Ljava/lang/String;I)V +HSPLandroid/os/INetworkManagementService;->setNetworkPermission(ILjava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->setPermission(Ljava/lang/String;[I)V +HSPLandroid/os/INetworkManagementService;->setUidCleartextNetworkPolicy(II)V +HSPLandroid/os/INetworkManagementService;->setUidMeteredNetworkBlacklist(IZ)V +HSPLandroid/os/INetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V +HSPLandroid/os/INetworkManagementService;->shutdown()V +HSPLandroid/os/INetworkManagementService;->startClatd(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->startInterfaceForwarding(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->startTethering([Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->stopClatd(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->stopInterfaceForwarding(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->stopTethering()V +HSPLandroid/os/INetworkManagementService;->tetherInterface(Ljava/lang/String;)V +HSPLandroid/os/INetworkManagementService;->tetherLimitReached(Landroid/net/ITetheringStatsProvider;)V +HSPLandroid/os/INetworkManagementService;->unregisterNetworkActivityListener(Landroid/os/INetworkActivityListener;)V +HSPLandroid/os/INetworkManagementService;->unregisterObserver(Landroid/net/INetworkManagementEventObserver;)V +HSPLandroid/os/INetworkManagementService;->unregisterTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;)V +HSPLandroid/os/INetworkManagementService;->untetherInterface(Ljava/lang/String;)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->getLastShutdownReason()I +HSPLandroid/os/IPowerManager$Stub$Proxy;->isDeviceIdleMode()Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->isInteractive()Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->isPowerSaveMode()Z +HSPLandroid/os/IPowerManager$Stub$Proxy;->releaseWakeLock(Landroid/os/IBinder;I)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/os/IPowerManager$Stub$Proxy;->userActivity(JII)V +HSPLandroid/os/IPowerManager$Stub;->()V +HSPLandroid/os/IPowerManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPowerManager; +HSPLandroid/os/IPowerManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/os/IPowerManager;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/os/IPowerManager;->acquireWakeLockWithUid(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;I)V +HSPLandroid/os/IPowerManager;->boostScreenBrightness(J)V +HSPLandroid/os/IPowerManager;->crash(Ljava/lang/String;)V +HSPLandroid/os/IPowerManager;->getLastShutdownReason()I +HSPLandroid/os/IPowerManager;->getPowerSaveState(I)Landroid/os/PowerSaveState; +HSPLandroid/os/IPowerManager;->goToSleep(JII)V +HSPLandroid/os/IPowerManager;->isDeviceIdleMode()Z +HSPLandroid/os/IPowerManager;->isInteractive()Z +HSPLandroid/os/IPowerManager;->isLightDeviceIdleMode()Z +HSPLandroid/os/IPowerManager;->isPowerSaveMode()Z +HSPLandroid/os/IPowerManager;->isScreenBrightnessBoosted()Z +HSPLandroid/os/IPowerManager;->isWakeLockLevelSupported(I)Z +HSPLandroid/os/IPowerManager;->nap(J)V +HSPLandroid/os/IPowerManager;->powerHint(II)V +HSPLandroid/os/IPowerManager;->reboot(ZLjava/lang/String;Z)V +HSPLandroid/os/IPowerManager;->rebootSafeMode(ZZ)V +HSPLandroid/os/IPowerManager;->releaseWakeLock(Landroid/os/IBinder;I)V +HSPLandroid/os/IPowerManager;->setAttentionLight(ZI)V +HSPLandroid/os/IPowerManager;->setPowerSaveMode(Z)Z +HSPLandroid/os/IPowerManager;->setStayOnSetting(I)V +HSPLandroid/os/IPowerManager;->setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(F)V +HSPLandroid/os/IPowerManager;->setTemporaryScreenBrightnessSettingOverride(I)V +HSPLandroid/os/IPowerManager;->shutdown(ZLjava/lang/String;Z)V +HSPLandroid/os/IPowerManager;->updateWakeLockUids(Landroid/os/IBinder;[I)V +HSPLandroid/os/IPowerManager;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V +HSPLandroid/os/IPowerManager;->userActivity(JII)V +HSPLandroid/os/IPowerManager;->wakeUp(JLjava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/IRecoverySystem$Stub;->()V +HSPLandroid/os/IRecoverySystem;->clearBcb()Z +HSPLandroid/os/IRecoverySystem;->rebootRecoveryWithCommand(Ljava/lang/String;)V +HSPLandroid/os/IRecoverySystem;->setupBcb(Ljava/lang/String;)Z +HSPLandroid/os/IRecoverySystem;->uncrypt(Ljava/lang/String;Landroid/os/IRecoverySystemProgressListener;)Z +HSPLandroid/os/IServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;Z)V +HSPLandroid/os/IServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/IServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/IServiceManager;->listServices()[Ljava/lang/String; +HSPLandroid/os/IServiceManager;->setPermissionController(Landroid/os/IPermissionController;)V +HSPLandroid/os/IUserManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IUserManager$Stub$Proxy;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/os/IUserManager$Stub$Proxy;->getProfileIds(IZ)[I +HSPLandroid/os/IUserManager$Stub$Proxy;->getProfileParent(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager$Stub$Proxy;->getProfiles(IZ)Ljava/util/List; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserAccount(I)Ljava/lang/String; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserIcon(I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserInfo(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserRestrictions(I)Landroid/os/Bundle; +HSPLandroid/os/IUserManager$Stub$Proxy;->getUserSerialNumber(I)I +HSPLandroid/os/IUserManager$Stub$Proxy;->getUsers(Z)Ljava/util/List; +HSPLandroid/os/IUserManager$Stub$Proxy;->hasBaseUserRestriction(Ljava/lang/String;I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->hasUserRestriction(Ljava/lang/String;I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isDemoUser(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isManagedProfile(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isQuietModeEnabled(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isUserRunning(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlocked(I)Z +HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlockingOrUnlocked(I)Z +HSPLandroid/os/IUserManager$Stub;->()V +HSPLandroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager; +HSPLandroid/os/IUserManager;->canAddMoreManagedProfiles(IZ)Z +HSPLandroid/os/IUserManager;->canHaveRestrictedProfile(I)Z +HSPLandroid/os/IUserManager;->clearSeedAccountData()V +HSPLandroid/os/IUserManager;->createProfileForUser(Ljava/lang/String;II[Ljava/lang/String;)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->createProfileForUserEvenWhenDisallowed(Ljava/lang/String;II[Ljava/lang/String;)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->createRestrictedProfile(Ljava/lang/String;I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->createUser(Ljava/lang/String;I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->evictCredentialEncryptionKey(I)V +HSPLandroid/os/IUserManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/os/IUserManager;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle; +HSPLandroid/os/IUserManager;->getCredentialOwnerProfile(I)I +HSPLandroid/os/IUserManager;->getDefaultGuestRestrictions()Landroid/os/Bundle; +HSPLandroid/os/IUserManager;->getManagedProfileBadge(I)I +HSPLandroid/os/IUserManager;->getPrimaryUser()Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->getProfileIds(IZ)[I +HSPLandroid/os/IUserManager;->getProfileParent(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->getProfiles(IZ)Ljava/util/List; +HSPLandroid/os/IUserManager;->getSeedAccountName()Ljava/lang/String; +HSPLandroid/os/IUserManager;->getSeedAccountOptions()Landroid/os/PersistableBundle; +HSPLandroid/os/IUserManager;->getSeedAccountType()Ljava/lang/String; +HSPLandroid/os/IUserManager;->getUserAccount(I)Ljava/lang/String; +HSPLandroid/os/IUserManager;->getUserCreationTime(I)J +HSPLandroid/os/IUserManager;->getUserHandle(I)I +HSPLandroid/os/IUserManager;->getUserIcon(I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/IUserManager;->getUserInfo(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/IUserManager;->getUserRestrictionSource(Ljava/lang/String;I)I +HSPLandroid/os/IUserManager;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List; +HSPLandroid/os/IUserManager;->getUserRestrictions(I)Landroid/os/Bundle; +HSPLandroid/os/IUserManager;->getUserSerialNumber(I)I +HSPLandroid/os/IUserManager;->getUsers(Z)Ljava/util/List; +HSPLandroid/os/IUserManager;->hasBaseUserRestriction(Ljava/lang/String;I)Z +HSPLandroid/os/IUserManager;->hasUserRestriction(Ljava/lang/String;I)Z +HSPLandroid/os/IUserManager;->isDemoUser(I)Z +HSPLandroid/os/IUserManager;->isManagedProfile(I)Z +HSPLandroid/os/IUserManager;->isQuietModeEnabled(I)Z +HSPLandroid/os/IUserManager;->isRestricted()Z +HSPLandroid/os/IUserManager;->isSameProfileGroup(II)Z +HSPLandroid/os/IUserManager;->isUserNameSet(I)Z +HSPLandroid/os/IUserManager;->isUserRunning(I)Z +HSPLandroid/os/IUserManager;->isUserUnlocked(I)Z +HSPLandroid/os/IUserManager;->isUserUnlockingOrUnlocked(I)Z +HSPLandroid/os/IUserManager;->markGuestForDeletion(I)Z +HSPLandroid/os/IUserManager;->removeUser(I)Z +HSPLandroid/os/IUserManager;->removeUserEvenWhenDisallowed(I)Z +HSPLandroid/os/IUserManager;->setApplicationRestrictions(Ljava/lang/String;Landroid/os/Bundle;I)V +HSPLandroid/os/IUserManager;->setDefaultGuestRestrictions(Landroid/os/Bundle;)V +HSPLandroid/os/IUserManager;->setQuietModeEnabled(IZ)V +HSPLandroid/os/IUserManager;->setSeedAccountData(ILjava/lang/String;Ljava/lang/String;Landroid/os/PersistableBundle;Z)V +HSPLandroid/os/IUserManager;->setUserAccount(ILjava/lang/String;)V +HSPLandroid/os/IUserManager;->setUserEnabled(I)V +HSPLandroid/os/IUserManager;->setUserIcon(ILandroid/graphics/Bitmap;)V +HSPLandroid/os/IUserManager;->setUserName(ILjava/lang/String;)V +HSPLandroid/os/IUserManager;->setUserRestriction(Ljava/lang/String;ZI)V +HSPLandroid/os/IUserManager;->someUserHasSeedAccount(Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/os/IUserManager;->trySetQuietModeDisabled(ILandroid/content/IntentSender;)Z +HSPLandroid/os/IVibratorService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/IVibratorService$Stub$Proxy;->hasVibrator()Z +HSPLandroid/os/IVibratorService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVibratorService; +HSPLandroid/os/IVibratorService;->cancelVibrate(Landroid/os/IBinder;)V +HSPLandroid/os/IVibratorService;->hasAmplitudeControl()Z +HSPLandroid/os/IVibratorService;->hasVibrator()Z +HSPLandroid/os/IVibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V +HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList; +HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/LocaleList;->([Ljava/util/Locale;)V +HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z +HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale; +HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->getEmptyLocaleList()Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->hashCode()I +HSPLandroid/os/LocaleList;->isEmpty()Z +HSPLandroid/os/LocaleList;->setDefault(Landroid/os/LocaleList;)V +HSPLandroid/os/LocaleList;->setDefault(Landroid/os/LocaleList;I)V +HSPLandroid/os/LocaleList;->size()I +HSPLandroid/os/LocaleList;->toLanguageTags()Ljava/lang/String; +HSPLandroid/os/LocaleList;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/Looper;->(Z)V +HSPLandroid/os/Looper;->getMainLooper()Landroid/os/Looper; +HSPLandroid/os/Looper;->getQueue()Landroid/os/MessageQueue; +HSPLandroid/os/Looper;->getThread()Ljava/lang/Thread; +HSPLandroid/os/Looper;->isCurrentThread()Z +HSPLandroid/os/Looper;->loop()V +HSPLandroid/os/Looper;->myLooper()Landroid/os/Looper; +HSPLandroid/os/Looper;->myQueue()Landroid/os/MessageQueue; +HSPLandroid/os/Looper;->prepare()V +HSPLandroid/os/Looper;->prepare(Z)V +HSPLandroid/os/Looper;->prepareMainLooper()V +HSPLandroid/os/Looper;->quit()V +HSPLandroid/os/Looper;->quitSafely()V +HSPLandroid/os/Looper;->setMessageLogging(Landroid/util/Printer;)V +HSPLandroid/os/Looper;->setSlowDispatchThresholdMs(J)V +HSPLandroid/os/Looper;->setTraceTag(J)V +HSPLandroid/os/MemoryFile;->getSize(Ljava/io/FileDescriptor;)I +HSPLandroid/os/Message$1;->()V +HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Message; +HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Message;->-wrap0(Landroid/os/Message;Landroid/os/Parcel;)V +HSPLandroid/os/Message;->()V +HSPLandroid/os/Message;->getCallback()Ljava/lang/Runnable; +HSPLandroid/os/Message;->getData()Landroid/os/Bundle; +HSPLandroid/os/Message;->getTarget()Landroid/os/Handler; +HSPLandroid/os/Message;->isAsynchronous()Z +HSPLandroid/os/Message;->isInUse()Z +HSPLandroid/os/Message;->markInUse()V +HSPLandroid/os/Message;->obtain()Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;I)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;III)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/os/Message; +HSPLandroid/os/Message;->obtain(Landroid/os/Message;)Landroid/os/Message; +HSPLandroid/os/Message;->peekData()Landroid/os/Bundle; +HSPLandroid/os/Message;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/os/Message;->recycle()V +HSPLandroid/os/Message;->recycleUnchecked()V +HSPLandroid/os/Message;->sendToTarget()V +HSPLandroid/os/Message;->setAsynchronous(Z)V +HSPLandroid/os/Message;->setData(Landroid/os/Bundle;)V +HSPLandroid/os/Message;->toString()Ljava/lang/String; +HSPLandroid/os/Message;->toString(J)Ljava/lang/String; +HSPLandroid/os/Message;->updateCheckRecycle(I)V +HSPLandroid/os/Message;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/MessageQueue;->(Z)V +HSPLandroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V +HSPLandroid/os/MessageQueue;->dispose()V +HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z +HSPLandroid/os/MessageQueue;->finalize()V +HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z +HSPLandroid/os/MessageQueue;->next()Landroid/os/Message; +HSPLandroid/os/MessageQueue;->postSyncBarrier()I +HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I +HSPLandroid/os/MessageQueue;->quit(Z)V +HSPLandroid/os/MessageQueue;->removeAllFutureMessagesLocked()V +HSPLandroid/os/MessageQueue;->removeAllMessagesLocked()V +HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V +HSPLandroid/os/MessageQueue;->removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V +HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V +HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V +HSPLandroid/os/Messenger$1;->()V +HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger; +HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/Messenger;->(Landroid/os/Handler;)V +HSPLandroid/os/Messenger;->(Landroid/os/IBinder;)V +HSPLandroid/os/Messenger;->getBinder()Landroid/os/IBinder; +HSPLandroid/os/Messenger;->readMessengerOrNullFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger; +HSPLandroid/os/Messenger;->send(Landroid/os/Message;)V +HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V +HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/OperationCanceledException;->()V +HSPLandroid/os/OperationCanceledException;->(Ljava/lang/String;)V +HSPLandroid/os/Parcel$2;->(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V +HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class; +HSPLandroid/os/Parcel$ReadWriteHelper;->()V +HSPLandroid/os/Parcel$ReadWriteHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String; +HSPLandroid/os/Parcel$ReadWriteHelper;->writeString(Landroid/os/Parcel;Ljava/lang/String;)V +HSPLandroid/os/Parcel;->-get0(Landroid/os/Parcel;)J +HSPLandroid/os/Parcel;->(J)V +HSPLandroid/os/Parcel;->adoptClassCookies(Landroid/os/Parcel;)V +HSPLandroid/os/Parcel;->appendFrom(Landroid/os/Parcel;II)V +HSPLandroid/os/Parcel;->createBinderArrayList()Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->createByteArray()[B +HSPLandroid/os/Parcel;->createFloatArray()[F +HSPLandroid/os/Parcel;->createIntArray()[I +HSPLandroid/os/Parcel;->createLongArray()[J +HSPLandroid/os/Parcel;->createStringArray()[Ljava/lang/String; +HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object; +HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->dataAvail()I +HSPLandroid/os/Parcel;->dataPosition()I +HSPLandroid/os/Parcel;->dataSize()I +HSPLandroid/os/Parcel;->destroy()V +HSPLandroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V +HSPLandroid/os/Parcel;->finalize()V +HSPLandroid/os/Parcel;->freeBuffer()V +HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroid/os/Parcel;->hasFileDescriptors()Z +HSPLandroid/os/Parcel;->hasReadWriteHelper()Z +HSPLandroid/os/Parcel;->init(J)V +HSPLandroid/os/Parcel;->marshall()[B +HSPLandroid/os/Parcel;->obtain()Landroid/os/Parcel; +HSPLandroid/os/Parcel;->obtain(J)Landroid/os/Parcel; +HSPLandroid/os/Parcel;->pushAllowFds(Z)Z +HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet; +HSPLandroid/os/Parcel;->readBinderList(Ljava/util/List;)V +HSPLandroid/os/Parcel;->readBoolean()Z +HSPLandroid/os/Parcel;->readBooleanArray([Z)V +HSPLandroid/os/Parcel;->readBundle()Landroid/os/Bundle; +HSPLandroid/os/Parcel;->readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle; +HSPLandroid/os/Parcel;->readByte()B +HSPLandroid/os/Parcel;->readByteArray([B)V +HSPLandroid/os/Parcel;->readCharSequence()Ljava/lang/CharSequence; +HSPLandroid/os/Parcel;->readDouble()D +HSPLandroid/os/Parcel;->readException()V +HSPLandroid/os/Parcel;->readException(ILjava/lang/String;)V +HSPLandroid/os/Parcel;->readExceptionCode()I +HSPLandroid/os/Parcel;->readFloat()F +HSPLandroid/os/Parcel;->readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap; +HSPLandroid/os/Parcel;->readInt()I +HSPLandroid/os/Parcel;->readIntArray([I)V +HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readListInternal(Ljava/util/List;ILjava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readLong()J +HSPLandroid/os/Parcel;->readMapInternal(Ljava/util/Map;ILjava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readParcelable(Ljava/lang/ClassLoader;)Landroid/os/Parcelable; +HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable; +HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Landroid/os/Parcelable; +HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator; +HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List; +HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle; +HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle; +HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable; +HSPLandroid/os/Parcel;->readSerializable(Ljava/lang/ClassLoader;)Ljava/io/Serializable; +HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray; +HSPLandroid/os/Parcel;->readSparseArrayInternal(Landroid/util/SparseArray;ILjava/lang/ClassLoader;)V +HSPLandroid/os/Parcel;->readSparseBooleanArray()Landroid/util/SparseBooleanArray; +HSPLandroid/os/Parcel;->readString()Ljava/lang/String; +HSPLandroid/os/Parcel;->readStringArray()[Ljava/lang/String; +HSPLandroid/os/Parcel;->readStringArray([Ljava/lang/String;)V +HSPLandroid/os/Parcel;->readStringList(Ljava/util/List;)V +HSPLandroid/os/Parcel;->readStrongBinder()Landroid/os/IBinder; +HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V +HSPLandroid/os/Parcel;->readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V +HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object; +HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLandroid/os/Parcel;->recycle()V +HSPLandroid/os/Parcel;->restoreAllowFds(Z)V +HSPLandroid/os/Parcel;->setClassCookie(Ljava/lang/Class;Ljava/lang/Object;)V +HSPLandroid/os/Parcel;->setDataCapacity(I)V +HSPLandroid/os/Parcel;->setDataPosition(I)V +HSPLandroid/os/Parcel;->setDataSize(I)V +HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V +HSPLandroid/os/Parcel;->unmarshall([BII)V +HSPLandroid/os/Parcel;->updateNativeSize(J)V +HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V +HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V +HSPLandroid/os/Parcel;->writeBoolean(Z)V +HSPLandroid/os/Parcel;->writeBundle(Landroid/os/Bundle;)V +HSPLandroid/os/Parcel;->writeByte(B)V +HSPLandroid/os/Parcel;->writeByteArray([B)V +HSPLandroid/os/Parcel;->writeByteArray([BII)V +HSPLandroid/os/Parcel;->writeCharSequence(Ljava/lang/CharSequence;)V +HSPLandroid/os/Parcel;->writeCharSequenceArray([Ljava/lang/CharSequence;)V +HSPLandroid/os/Parcel;->writeFileDescriptor(Ljava/io/FileDescriptor;)V +HSPLandroid/os/Parcel;->writeFloat(F)V +HSPLandroid/os/Parcel;->writeInt(I)V +HSPLandroid/os/Parcel;->writeIntArray([I)V +HSPLandroid/os/Parcel;->writeInterfaceToken(Ljava/lang/String;)V +HSPLandroid/os/Parcel;->writeList(Ljava/util/List;)V +HSPLandroid/os/Parcel;->writeLong(J)V +HSPLandroid/os/Parcel;->writeLongArray([J)V +HSPLandroid/os/Parcel;->writeMap(Ljava/util/Map;)V +HSPLandroid/os/Parcel;->writeMapInternal(Ljava/util/Map;)V +HSPLandroid/os/Parcel;->writeNoException()V +HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V +HSPLandroid/os/Parcel;->writeParcelableArray([Landroid/os/Parcelable;I)V +HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V +HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V +HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V +HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V +HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V +HSPLandroid/os/Parcel;->writeString(Ljava/lang/String;)V +HSPLandroid/os/Parcel;->writeStringArray([Ljava/lang/String;)V +HSPLandroid/os/Parcel;->writeStringList(Ljava/util/List;)V +HSPLandroid/os/Parcel;->writeStrongBinder(Landroid/os/IBinder;)V +HSPLandroid/os/Parcel;->writeTypedArray([Landroid/os/Parcelable;I)V +HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;)V +HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V +HSPLandroid/os/ParcelFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/ParcelFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->(Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->close()V +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([BII)I +HSPLandroid/os/ParcelFileDescriptor;->(Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/os/ParcelFileDescriptor;->(Ljava/io/FileDescriptor;)V +HSPLandroid/os/ParcelFileDescriptor;->(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V +HSPLandroid/os/ParcelFileDescriptor;->adoptFd(I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/ParcelFileDescriptor;->close()V +HSPLandroid/os/ParcelFileDescriptor;->closeWithStatus(ILjava/lang/String;)V +HSPLandroid/os/ParcelFileDescriptor;->detachFd()I +HSPLandroid/os/ParcelFileDescriptor;->finalize()V +HSPLandroid/os/ParcelFileDescriptor;->fromFd(I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/ParcelFileDescriptor;->getFd()I +HSPLandroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLandroid/os/ParcelFileDescriptor;->open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/ParcelFileDescriptor;->openInternal(Ljava/io/File;I)Ljava/io/FileDescriptor; +HSPLandroid/os/ParcelFileDescriptor;->releaseResources()V +HSPLandroid/os/ParcelFileDescriptor;->writeCommStatusAndClose(ILjava/lang/String;)V +HSPLandroid/os/ParcelFileDescriptor;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/ParcelUuid$1;->()V +HSPLandroid/os/ParcelUuid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelUuid; +HSPLandroid/os/ParcelUuid$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/ParcelUuid$1;->newArray(I)[Landroid/os/ParcelUuid; +HSPLandroid/os/ParcelUuid$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/ParcelUuid;->(Ljava/util/UUID;)V +HSPLandroid/os/ParcelUuid;->equals(Ljava/lang/Object;)Z +HSPLandroid/os/ParcelUuid;->fromString(Ljava/lang/String;)Landroid/os/ParcelUuid; +HSPLandroid/os/ParcelUuid;->getUuid()Ljava/util/UUID; +HSPLandroid/os/ParcelUuid;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/Parcelable$ClassLoaderCreator;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLandroid/os/Parcelable;->describeContents()I +HSPLandroid/os/Parcelable;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/ParcelableException$1;->()V +HSPLandroid/os/ParcelableParcel$1;->()V +HSPLandroid/os/ParcelableParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelableParcel; +HSPLandroid/os/ParcelableParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/ParcelableParcel;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/os/ParcelableParcel;->(Ljava/lang/ClassLoader;)V +HSPLandroid/os/ParcelableParcel;->getClassLoader()Ljava/lang/ClassLoader; +HSPLandroid/os/ParcelableParcel;->getParcel()Landroid/os/Parcel; +HSPLandroid/os/ParcelableParcel;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/PatternMatcher$1;->()V +HSPLandroid/os/PatternMatcher$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PatternMatcher; +HSPLandroid/os/PatternMatcher$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/PatternMatcher$1;->newArray(I)[Landroid/os/PatternMatcher; +HSPLandroid/os/PatternMatcher$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/PatternMatcher;->(Landroid/os/Parcel;)V +HSPLandroid/os/PatternMatcher;->(Ljava/lang/String;I)V +HSPLandroid/os/PatternMatcher;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/PersistableBundle$1;->()V +HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PersistableBundle; +HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/PersistableBundle;->()V +HSPLandroid/os/PersistableBundle;->(Landroid/os/Bundle;)V +HSPLandroid/os/PersistableBundle;->(Landroid/os/Parcel;I)V +HSPLandroid/os/PersistableBundle;->(Landroid/os/PersistableBundle;)V +HSPLandroid/os/PersistableBundle;->(Landroid/util/ArrayMap;)V +HSPLandroid/os/PersistableBundle;->(Z)V +HSPLandroid/os/PersistableBundle;->deepCopy()Landroid/os/PersistableBundle; +HSPLandroid/os/PersistableBundle;->isValidType(Ljava/lang/Object;)Z +HSPLandroid/os/PersistableBundle;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/PooledStringWriter;->(Landroid/os/Parcel;)V +HSPLandroid/os/PooledStringWriter;->finish()V +HSPLandroid/os/PooledStringWriter;->writeString(Ljava/lang/String;)V +HSPLandroid/os/PowerManager$WakeLock$1;->(Landroid/os/PowerManager$WakeLock;)V +HSPLandroid/os/PowerManager$WakeLock;->(Landroid/os/PowerManager;ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/PowerManager$WakeLock;->acquire()V +HSPLandroid/os/PowerManager$WakeLock;->acquire(J)V +HSPLandroid/os/PowerManager$WakeLock;->acquireLocked()V +HSPLandroid/os/PowerManager$WakeLock;->finalize()V +HSPLandroid/os/PowerManager$WakeLock;->isHeld()Z +HSPLandroid/os/PowerManager$WakeLock;->release()V +HSPLandroid/os/PowerManager$WakeLock;->release(I)V +HSPLandroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V +HSPLandroid/os/PowerManager$WakeLock;->setWorkSource(Landroid/os/WorkSource;)V +HSPLandroid/os/PowerManager;->(Landroid/content/Context;Landroid/os/IPowerManager;Landroid/os/Handler;)V +HSPLandroid/os/PowerManager;->getDefaultScreenBrightnessSetting()I +HSPLandroid/os/PowerManager;->getLastShutdownReason()I +HSPLandroid/os/PowerManager;->isDeviceIdleMode()Z +HSPLandroid/os/PowerManager;->isIgnoringBatteryOptimizations(Ljava/lang/String;)Z +HSPLandroid/os/PowerManager;->isInteractive()Z +HSPLandroid/os/PowerManager;->isPowerSaveMode()Z +HSPLandroid/os/PowerManager;->isScreenOn()Z +HSPLandroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock; +HSPLandroid/os/PowerManager;->userActivity(JII)V +HSPLandroid/os/PowerManager;->userActivity(JZ)V +HSPLandroid/os/PowerManager;->validateWakeLockParameters(ILjava/lang/String;)V +HSPLandroid/os/PowerManagerInternal;->()V +HSPLandroid/os/PowerManagerInternal;->finishUidChanges()V +HSPLandroid/os/PowerManagerInternal;->getLowPowerState(I)Landroid/os/PowerSaveState; +HSPLandroid/os/PowerManagerInternal;->powerHint(II)V +HSPLandroid/os/PowerManagerInternal;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V +HSPLandroid/os/PowerManagerInternal;->setDeviceIdleMode(Z)Z +HSPLandroid/os/PowerManagerInternal;->setDeviceIdleTempWhitelist([I)V +HSPLandroid/os/PowerManagerInternal;->setDeviceIdleWhitelist([I)V +HSPLandroid/os/PowerManagerInternal;->setDozeOverrideFromDreamManager(II)V +HSPLandroid/os/PowerManagerInternal;->setLightDeviceIdleMode(Z)Z +HSPLandroid/os/PowerManagerInternal;->setMaximumScreenOffTimeoutFromDeviceAdmin(I)V +HSPLandroid/os/PowerManagerInternal;->setScreenBrightnessOverrideFromWindowManager(I)V +HSPLandroid/os/PowerManagerInternal;->setUserActivityTimeoutOverrideFromWindowManager(J)V +HSPLandroid/os/PowerManagerInternal;->setUserInactiveOverrideFromWindowManager()V +HSPLandroid/os/PowerManagerInternal;->startUidChanges()V +HSPLandroid/os/PowerManagerInternal;->uidActive(I)V +HSPLandroid/os/PowerManagerInternal;->uidGone(I)V +HSPLandroid/os/PowerManagerInternal;->uidIdle(I)V +HSPLandroid/os/PowerManagerInternal;->updateUidProcState(II)V +HSPLandroid/os/PowerSaveState$1;->()V +HSPLandroid/os/PowerSaveState$Builder;->-get0(Landroid/os/PowerSaveState$Builder;)Z +HSPLandroid/os/PowerSaveState$Builder;->-get1(Landroid/os/PowerSaveState$Builder;)F +HSPLandroid/os/PowerSaveState$Builder;->-get2(Landroid/os/PowerSaveState$Builder;)Z +HSPLandroid/os/PowerSaveState$Builder;->-get3(Landroid/os/PowerSaveState$Builder;)I +HSPLandroid/os/PowerSaveState$Builder;->()V +HSPLandroid/os/PowerSaveState$Builder;->build()Landroid/os/PowerSaveState; +HSPLandroid/os/PowerSaveState$Builder;->setBatterySaverEnabled(Z)Landroid/os/PowerSaveState$Builder; +HSPLandroid/os/PowerSaveState$Builder;->setGlobalBatterySaverEnabled(Z)Landroid/os/PowerSaveState$Builder; +HSPLandroid/os/PowerSaveState;->(Landroid/os/PowerSaveState$Builder;)V +HSPLandroid/os/Process;->getStartElapsedRealtime()J +HSPLandroid/os/Process;->is64Bit()Z +HSPLandroid/os/Process;->isIsolated()Z +HSPLandroid/os/Process;->isIsolated(I)Z +HSPLandroid/os/Process;->myPid()I +HSPLandroid/os/Process;->myTid()I +HSPLandroid/os/Process;->myUid()I +HSPLandroid/os/Process;->myUserHandle()Landroid/os/UserHandle; +HSPLandroid/os/Process;->setStartTimes(JJ)V +HSPLandroid/os/Registrant;->(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLandroid/os/Registrant;->clear()V +HSPLandroid/os/Registrant;->getHandler()Landroid/os/Handler; +HSPLandroid/os/Registrant;->internalNotifyRegistrant(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLandroid/os/Registrant;->notifyRegistrant()V +HSPLandroid/os/Registrant;->notifyRegistrant(Landroid/os/AsyncResult;)V +HSPLandroid/os/RegistrantList;->()V +HSPLandroid/os/RegistrantList;->add(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLandroid/os/RegistrantList;->add(Landroid/os/Registrant;)V +HSPLandroid/os/RegistrantList;->addUnique(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLandroid/os/RegistrantList;->internalNotifyRegistrants(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLandroid/os/RegistrantList;->notifyRegistrants()V +HSPLandroid/os/RegistrantList;->notifyRegistrants(Landroid/os/AsyncResult;)V +HSPLandroid/os/RegistrantList;->notifyResult(Ljava/lang/Object;)V +HSPLandroid/os/RegistrantList;->remove(Landroid/os/Handler;)V +HSPLandroid/os/RegistrantList;->removeCleared()V +HSPLandroid/os/RemoteCallbackList$Callback;->(Landroid/os/RemoteCallbackList;Landroid/os/IInterface;Ljava/lang/Object;)V +HSPLandroid/os/RemoteCallbackList;->()V +HSPLandroid/os/RemoteCallbackList;->beginBroadcast()I +HSPLandroid/os/RemoteCallbackList;->finishBroadcast()V +HSPLandroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface; +HSPLandroid/os/RemoteCallbackList;->logExcessiveCallbacks()V +HSPLandroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;)Z +HSPLandroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;Ljava/lang/Object;)Z +HSPLandroid/os/RemoteException;->(Ljava/lang/String;)V +HSPLandroid/os/ResultReceiver$1;->()V +HSPLandroid/os/ResultReceiver;->(Landroid/os/Handler;)V +HSPLandroid/os/ResultReceiver;->onReceiveResult(ILandroid/os/Bundle;)V +HSPLandroid/os/ResultReceiver;->send(ILandroid/os/Bundle;)V +HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V +HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;Z)V +HSPLandroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager; +HSPLandroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/ServiceManager;->getServiceOrThrow(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V +HSPLandroid/os/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager; +HSPLandroid/os/ServiceManagerProxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;Z)V +HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder; +HSPLandroid/os/StatFs;->(Ljava/lang/String;)V +HSPLandroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs; +HSPLandroid/os/StatFs;->getAvailableBlocksLong()J +HSPLandroid/os/StatFs;->getBlockSize()I +HSPLandroid/os/StatFs;->getBlockSizeLong()J +HSPLandroid/os/StrictMode$1;->initialValue()Ljava/lang/Object; +HSPLandroid/os/StrictMode$1;->initialValue()Ljava/util/ArrayList; +HSPLandroid/os/StrictMode$2;->initialValue()Ljava/lang/Object; +HSPLandroid/os/StrictMode$2;->initialValue()Ljava/util/ArrayList; +HSPLandroid/os/StrictMode$3;->initialValue()Landroid/os/Handler; +HSPLandroid/os/StrictMode$3;->initialValue()Ljava/lang/Object; +HSPLandroid/os/StrictMode$4;->initialValue()Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLandroid/os/StrictMode$4;->initialValue()Ljava/lang/Object; +HSPLandroid/os/StrictMode$7;->initialValue()Landroid/os/StrictMode$ThreadSpanState; +HSPLandroid/os/StrictMode$7;->initialValue()Ljava/lang/Object; +HSPLandroid/os/StrictMode$9;->(Ljava/lang/String;ILandroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/os/StrictMode$9;->run()V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy$1;->(Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/view/IWindowManager;Ljava/util/ArrayList;)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy$1;->run()V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->(I)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->getPolicyMask()I +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->handleViolation(Landroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->handleViolationWithTimingAttempt(Landroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onCustomSlowCall(Ljava/lang/String;)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onReadFromDisk()V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setPolicyMask(I)V +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->startHandlingViolationException(Ldalvik/system/BlockGuard$BlockGuardPolicyException;)V +HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->()V +HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->(Landroid/os/StrictMode$AndroidCloseGuardReporter;)V +HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLandroid/os/StrictMode$InstanceTracker;->(Ljava/lang/Object;)V +HSPLandroid/os/StrictMode$LogStackTrace;->()V +HSPLandroid/os/StrictMode$LogStackTrace;->(Landroid/os/StrictMode$LogStackTrace;)V +HSPLandroid/os/StrictMode$StrictModeDiskReadViolation;->(I)V +HSPLandroid/os/StrictMode$StrictModeDiskWriteViolation;->(I)V +HSPLandroid/os/StrictMode$StrictModeViolation;->(IILjava/lang/String;)V +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->()V +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->(Landroid/os/StrictMode$ThreadPolicy;)V +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->build()Landroid/os/StrictMode$ThreadPolicy; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectAll()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectResourceMismatches()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectUnbufferedIo()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->disable(I)Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->enable(I)Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyDeath()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyLog()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitAll()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder; +HSPLandroid/os/StrictMode$ThreadPolicy;->(I)V +HSPLandroid/os/StrictMode$ThreadPolicy;->(ILandroid/os/StrictMode$ThreadPolicy;)V +HSPLandroid/os/StrictMode$ThreadSpanState;->()V +HSPLandroid/os/StrictMode$ThreadSpanState;->(Landroid/os/StrictMode$ThreadSpanState;)V +HSPLandroid/os/StrictMode$ViolationInfo$1;->()V +HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;Z)V +HSPLandroid/os/StrictMode$ViolationInfo;->(Ljava/lang/String;Ljava/lang/Throwable;I)V +HSPLandroid/os/StrictMode$ViolationInfo;->(Ljava/lang/Throwable;I)V +HSPLandroid/os/StrictMode$ViolationInfo;->hashCode()I +HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/StrictMode$VmPolicy$Builder;->-wrap0(Landroid/os/StrictMode$VmPolicy$Builder;I)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->()V +HSPLandroid/os/StrictMode$VmPolicy$Builder;->(Landroid/os/StrictMode$VmPolicy;)V +HSPLandroid/os/StrictMode$VmPolicy$Builder;->build()Landroid/os/StrictMode$VmPolicy; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectAll()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectContentUriWithoutPermission()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedClosableObjects()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedRegistrationObjects()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedSqlLiteObjects()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectUntaggedSockets()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->disable(I)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->enable(I)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy$Builder;->penaltyDropBox()Landroid/os/StrictMode$VmPolicy$Builder; +HSPLandroid/os/StrictMode$VmPolicy;->(ILjava/util/HashMap;)V +HSPLandroid/os/StrictMode$VmPolicy;->(ILjava/util/HashMap;Landroid/os/StrictMode$VmPolicy;)V +HSPLandroid/os/StrictMode;->-get0()Ljava/util/HashMap; +HSPLandroid/os/StrictMode;->-get1()Z +HSPLandroid/os/StrictMode;->-get2()Ljava/lang/ThreadLocal; +HSPLandroid/os/StrictMode;->-get3()Ljava/util/concurrent/atomic/AtomicInteger; +HSPLandroid/os/StrictMode;->-get6()Ljava/lang/ThreadLocal; +HSPLandroid/os/StrictMode;->-get8()Ljava/lang/ThreadLocal; +HSPLandroid/os/StrictMode;->-get9()Ljava/lang/ThreadLocal; +HSPLandroid/os/StrictMode;->-wrap0()Z +HSPLandroid/os/StrictMode;->-wrap1(Ljava/lang/String;)I +HSPLandroid/os/StrictMode;->-wrap4(I)V +HSPLandroid/os/StrictMode;->allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy; +HSPLandroid/os/StrictMode;->allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy; +HSPLandroid/os/StrictMode;->clearGatheredViolations()V +HSPLandroid/os/StrictMode;->conditionallyEnableDebugLogging()Z +HSPLandroid/os/StrictMode;->dropboxViolationAsync(ILandroid/os/StrictMode$ViolationInfo;)V +HSPLandroid/os/StrictMode;->enableDeathOnFileUriExposure()V +HSPLandroid/os/StrictMode;->enableDeathOnNetwork()V +HSPLandroid/os/StrictMode;->getThreadPolicy()Landroid/os/StrictMode$ThreadPolicy; +HSPLandroid/os/StrictMode;->getThreadPolicyMask()I +HSPLandroid/os/StrictMode;->getVmPolicy()Landroid/os/StrictMode$VmPolicy; +HSPLandroid/os/StrictMode;->hasGatheredViolations()Z +HSPLandroid/os/StrictMode;->incrementExpectedActivityCount(Ljava/lang/Class;)V +HSPLandroid/os/StrictMode;->noteSlowCall(Ljava/lang/String;)V +HSPLandroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V +HSPLandroid/os/StrictMode;->onVmPolicyViolation(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLandroid/os/StrictMode;->onVmPolicyViolation(Ljava/lang/String;Ljava/lang/Throwable;Z)V +HSPLandroid/os/StrictMode;->parseViolationFromMessage(Ljava/lang/String;)I +HSPLandroid/os/StrictMode;->readAndHandleBinderCallViolations(Landroid/os/Parcel;)V +HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V +HSPLandroid/os/StrictMode;->setCloseGuardEnabled(Z)V +HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V +HSPLandroid/os/StrictMode;->setThreadPolicyMask(I)V +HSPLandroid/os/StrictMode;->setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V +HSPLandroid/os/StrictMode;->tooManyViolationsThisLoop()Z +HSPLandroid/os/StrictMode;->trackActivity(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/os/StrictMode;->vmClosableObjectLeaksEnabled()Z +HSPLandroid/os/StrictMode;->vmContentUriWithoutPermissionEnabled()Z +HSPLandroid/os/StrictMode;->vmFileUriExposureEnabled()Z +HSPLandroid/os/StrictMode;->vmRegistrationLeaksEnabled()Z +HSPLandroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z +HSPLandroid/os/StrictMode;->vmUntaggedSocketEnabled()Z +HSPLandroid/os/StrictMode;->writeGatheredViolationsToParcel(Landroid/os/Parcel;)V +HSPLandroid/os/SynchronousResultReceiver$Result;->(ILandroid/os/Bundle;)V +HSPLandroid/os/SynchronousResultReceiver;->(Ljava/lang/String;)V +HSPLandroid/os/SynchronousResultReceiver;->awaitResult(J)Landroid/os/SynchronousResultReceiver$Result; +HSPLandroid/os/SynchronousResultReceiver;->getName()Ljava/lang/String; +HSPLandroid/os/SynchronousResultReceiver;->onReceiveResult(ILandroid/os/Bundle;)V +HSPLandroid/os/SystemClock;->sleep(J)V +HSPLandroid/os/SystemProperties;->addChangeCallback(Ljava/lang/Runnable;)V +HSPLandroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/os/SystemProperties;->getInt(Ljava/lang/String;I)I +HSPLandroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/SystemVibrator;->(Landroid/content/Context;)V +HSPLandroid/os/SystemVibrator;->hasVibrator()Z +HSPLandroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V +HSPLandroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V +HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V +HSPLandroid/os/Trace;->cacheEnabledTags()J +HSPLandroid/os/Trace;->endSection()V +HSPLandroid/os/Trace;->isTagEnabled(J)Z +HSPLandroid/os/Trace;->setAppTracingAllowed(Z)V +HSPLandroid/os/Trace;->setTracingEnabled(ZI)V +HSPLandroid/os/Trace;->traceBegin(JLjava/lang/String;)V +HSPLandroid/os/Trace;->traceCounter(JLjava/lang/String;I)V +HSPLandroid/os/Trace;->traceEnd(J)V +HSPLandroid/os/UpdateLock;->(Ljava/lang/String;)V +HSPLandroid/os/UserHandle$1;->()V +HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle; +HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/UserHandle;->(I)V +HSPLandroid/os/UserHandle;->(Landroid/os/Parcel;)V +HSPLandroid/os/UserHandle;->equals(Ljava/lang/Object;)Z +HSPLandroid/os/UserHandle;->getAppId(I)I +HSPLandroid/os/UserHandle;->getCacheAppGid(I)I +HSPLandroid/os/UserHandle;->getCallingUserId()I +HSPLandroid/os/UserHandle;->getIdentifier()I +HSPLandroid/os/UserHandle;->getUid(II)I +HSPLandroid/os/UserHandle;->getUserId(I)I +HSPLandroid/os/UserHandle;->hashCode()I +HSPLandroid/os/UserHandle;->isOwner()Z +HSPLandroid/os/UserHandle;->isSameApp(II)Z +HSPLandroid/os/UserHandle;->myUserId()I +HSPLandroid/os/UserHandle;->of(I)Landroid/os/UserHandle; +HSPLandroid/os/UserHandle;->readFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle; +HSPLandroid/os/UserHandle;->toString()Ljava/lang/String; +HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/UserManager$EnforcingUser$1;->()V +HSPLandroid/os/UserManager;->(Landroid/content/Context;Landroid/os/IUserManager;)V +HSPLandroid/os/UserManager;->canAddMoreUsers()Z +HSPLandroid/os/UserManager;->canSwitchUsers()Z +HSPLandroid/os/UserManager;->get(Landroid/content/Context;)Landroid/os/UserManager; +HSPLandroid/os/UserManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroid/os/UserManager;->getEnabledProfiles(I)Ljava/util/List; +HSPLandroid/os/UserManager;->getMaxSupportedUsers()I +HSPLandroid/os/UserManager;->getProfileIds(IZ)[I +HSPLandroid/os/UserManager;->getProfileIdsWithDisabled(I)[I +HSPLandroid/os/UserManager;->getProfileParent(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/UserManager;->getProfiles(I)Ljava/util/List; +HSPLandroid/os/UserManager;->getSerialNumberForUser(Landroid/os/UserHandle;)J +HSPLandroid/os/UserManager;->getUserAccount(I)Ljava/lang/String; +HSPLandroid/os/UserManager;->getUserHandle()I +HSPLandroid/os/UserManager;->getUserIcon(I)Landroid/graphics/Bitmap; +HSPLandroid/os/UserManager;->getUserInfo(I)Landroid/content/pm/UserInfo; +HSPLandroid/os/UserManager;->getUserProfiles()Ljava/util/List; +HSPLandroid/os/UserManager;->getUserRestrictionSources(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; +HSPLandroid/os/UserManager;->getUserRestrictions()Landroid/os/Bundle; +HSPLandroid/os/UserManager;->getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle; +HSPLandroid/os/UserManager;->getUserSerialNumber(I)I +HSPLandroid/os/UserManager;->getUsers()Ljava/util/List; +HSPLandroid/os/UserManager;->getUsers(Z)Ljava/util/List; +HSPLandroid/os/UserManager;->hasBaseUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/os/UserManager;->hasUserRestriction(Ljava/lang/String;)Z +HSPLandroid/os/UserManager;->hasUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z +HSPLandroid/os/UserManager;->isAdminUser()Z +HSPLandroid/os/UserManager;->isDemoUser()Z +HSPLandroid/os/UserManager;->isDeviceInDemoMode(Landroid/content/Context;)Z +HSPLandroid/os/UserManager;->isGuestUser()Z +HSPLandroid/os/UserManager;->isManagedProfile()Z +HSPLandroid/os/UserManager;->isManagedProfile(I)Z +HSPLandroid/os/UserManager;->isQuietModeEnabled(Landroid/os/UserHandle;)Z +HSPLandroid/os/UserManager;->isSplitSystemUser()Z +HSPLandroid/os/UserManager;->isUserAdmin(I)Z +HSPLandroid/os/UserManager;->isUserRunning(I)Z +HSPLandroid/os/UserManager;->isUserRunning(Landroid/os/UserHandle;)Z +HSPLandroid/os/UserManager;->isUserSwitcherEnabled()Z +HSPLandroid/os/UserManager;->isUserUnlocked()Z +HSPLandroid/os/UserManager;->isUserUnlocked(I)Z +HSPLandroid/os/UserManager;->isUserUnlocked(Landroid/os/UserHandle;)Z +HSPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(I)Z +HSPLandroid/os/UserManager;->supportsMultipleUsers()Z +HSPLandroid/os/UserManagerInternal;->()V +HSPLandroid/os/UserManagerInternal;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V +HSPLandroid/os/UserManagerInternal;->createUserEvenWhenDisallowed(Ljava/lang/String;I)Landroid/content/pm/UserInfo; +HSPLandroid/os/UserManagerInternal;->getBaseUserRestrictions(I)Landroid/os/Bundle; +HSPLandroid/os/UserManagerInternal;->getUserIds()[I +HSPLandroid/os/UserManagerInternal;->getUserRestriction(ILjava/lang/String;)Z +HSPLandroid/os/UserManagerInternal;->isUserRunning(I)Z +HSPLandroid/os/UserManagerInternal;->isUserUnlocked(I)Z +HSPLandroid/os/UserManagerInternal;->isUserUnlockingOrUnlocked(I)Z +HSPLandroid/os/UserManagerInternal;->onEphemeralUserStop(I)V +HSPLandroid/os/UserManagerInternal;->removeAllUsers()V +HSPLandroid/os/UserManagerInternal;->removeUserEvenWhenDisallowed(I)Z +HSPLandroid/os/UserManagerInternal;->removeUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V +HSPLandroid/os/UserManagerInternal;->removeUserState(I)V +HSPLandroid/os/UserManagerInternal;->setBaseUserRestrictionsByDpmsForMigration(ILandroid/os/Bundle;)V +HSPLandroid/os/UserManagerInternal;->setDeviceManaged(Z)V +HSPLandroid/os/UserManagerInternal;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;ZI)V +HSPLandroid/os/UserManagerInternal;->setForceEphemeralUsers(Z)V +HSPLandroid/os/UserManagerInternal;->setUserIcon(ILandroid/graphics/Bitmap;)V +HSPLandroid/os/UserManagerInternal;->setUserManaged(IZ)V +HSPLandroid/os/UserManagerInternal;->setUserState(II)V +HSPLandroid/os/Vibrator;->(Landroid/content/Context;)V +HSPLandroid/os/Vibrator;->cancel()V +HSPLandroid/os/Vibrator;->hasAmplitudeControl()Z +HSPLandroid/os/Vibrator;->hasVibrator()Z +HSPLandroid/os/Vibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V +HSPLandroid/os/WorkSource$1;->()V +HSPLandroid/os/WorkSource;->()V +HSPLandroid/os/WorkSource;->(I)V +HSPLandroid/os/WorkSource;->(ILjava/lang/String;)V +HSPLandroid/os/WorkSource;->(Landroid/os/WorkSource;)V +HSPLandroid/os/WorkSource;->add(ILjava/lang/String;)Z +HSPLandroid/os/WorkSource;->add(Landroid/os/WorkSource;)Z +HSPLandroid/os/WorkSource;->compare(Landroid/os/WorkSource;II)I +HSPLandroid/os/WorkSource;->diff(Landroid/os/WorkSource;)Z +HSPLandroid/os/WorkSource;->get(I)I +HSPLandroid/os/WorkSource;->getName(I)Ljava/lang/String; +HSPLandroid/os/WorkSource;->insert(IILjava/lang/String;)V +HSPLandroid/os/WorkSource;->remove(Landroid/os/WorkSource;)Z +HSPLandroid/os/WorkSource;->removeUidsAndNames(Landroid/os/WorkSource;)Z +HSPLandroid/os/WorkSource;->set(Landroid/os/WorkSource;)V +HSPLandroid/os/WorkSource;->size()I +HSPLandroid/os/WorkSource;->updateLocked(Landroid/os/WorkSource;ZZ)Z +HSPLandroid/os/WorkSource;->updateUidsAndNamesLocked(Landroid/os/WorkSource;ZZ)Z +HSPLandroid/os/WorkSource;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/os/ZygoteProcess$ZygoteState;->(Landroid/net/LocalSocket;Ljava/io/DataInputStream;Ljava/io/BufferedWriter;Ljava/util/List;)V +HSPLandroid/os/ZygoteProcess$ZygoteState;->close()V +HSPLandroid/os/ZygoteProcess$ZygoteState;->connect(Ljava/lang/String;)Landroid/os/ZygoteProcess$ZygoteState; +HSPLandroid/os/ZygoteProcess;->-wrap0(Ljava/io/BufferedWriter;Ljava/io/DataInputStream;)Ljava/lang/String; +HSPLandroid/os/ZygoteProcess;->getAbiList(Ljava/io/BufferedWriter;Ljava/io/DataInputStream;)Ljava/lang/String; +HSPLandroid/os/ZygoteProcess;->waitForConnectionToZygote(Ljava/lang/String;)V +HSPLandroid/os/storage/DiskInfo$1;->()V +HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Landroid/os/storage/DiskInfo; +HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/storage/IObbActionListener$Stub;->()V +HSPLandroid/os/storage/IObbActionListener;->onObbResult(Ljava/lang/String;II)V +HSPLandroid/os/storage/IStorageEventListener$Stub;->()V +HSPLandroid/os/storage/IStorageEventListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/os/storage/IStorageEventListener;->onDiskDestroyed(Landroid/os/storage/DiskInfo;)V +HSPLandroid/os/storage/IStorageEventListener;->onDiskScanned(Landroid/os/storage/DiskInfo;I)V +HSPLandroid/os/storage/IStorageEventListener;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageEventListener;->onUsbMassStorageConnectionChanged(Z)V +HSPLandroid/os/storage/IStorageEventListener;->onVolumeForgotten(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageEventListener;->onVolumeRecordChanged(Landroid/os/storage/VolumeRecord;)V +HSPLandroid/os/storage/IStorageEventListener;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getDisks()[Landroid/os/storage/DiskInfo; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumes(I)[Landroid/os/storage/VolumeInfo; +HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->registerListener(Landroid/os/storage/IStorageEventListener;)V +HSPLandroid/os/storage/IStorageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageManager; +HSPLandroid/os/storage/IStorageManager;->addUserKeyAuth(II[B[B)V +HSPLandroid/os/storage/IStorageManager;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->benchmark(Ljava/lang/String;)J +HSPLandroid/os/storage/IStorageManager;->changeEncryptionPassword(ILjava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->clearPassword()V +HSPLandroid/os/storage/IStorageManager;->createSecureContainer(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZ)I +HSPLandroid/os/storage/IStorageManager;->createUserKey(IIZ)V +HSPLandroid/os/storage/IStorageManager;->decryptStorage(Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->destroySecureContainer(Ljava/lang/String;Z)I +HSPLandroid/os/storage/IStorageManager;->destroyUserKey(I)V +HSPLandroid/os/storage/IStorageManager;->destroyUserStorage(Ljava/lang/String;II)V +HSPLandroid/os/storage/IStorageManager;->encryptStorage(ILjava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->finalizeSecureContainer(Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->finishMediaUpdate()V +HSPLandroid/os/storage/IStorageManager;->fixPermissionsSecureContainer(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->fixateNewestUserKeyAuth(I)V +HSPLandroid/os/storage/IStorageManager;->forgetAllVolumes()V +HSPLandroid/os/storage/IStorageManager;->forgetVolume(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->format(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->formatVolume(Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->fstrim(I)V +HSPLandroid/os/storage/IStorageManager;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J +HSPLandroid/os/storage/IStorageManager;->getCacheQuotaBytes(Ljava/lang/String;I)J +HSPLandroid/os/storage/IStorageManager;->getCacheSizeBytes(Ljava/lang/String;I)J +HSPLandroid/os/storage/IStorageManager;->getDisks()[Landroid/os/storage/DiskInfo; +HSPLandroid/os/storage/IStorageManager;->getEncryptionState()I +HSPLandroid/os/storage/IStorageManager;->getField(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getMountedObbPath(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getPassword()Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getPasswordType()I +HSPLandroid/os/storage/IStorageManager;->getPrimaryStorageUuid()Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getSecureContainerFilesystemPath(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getSecureContainerList()[Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getSecureContainerPath(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getStorageUsers(Ljava/lang/String;)[I +HSPLandroid/os/storage/IStorageManager;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/IStorageManager;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord; +HSPLandroid/os/storage/IStorageManager;->getVolumeState(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/storage/IStorageManager;->getVolumes(I)[Landroid/os/storage/VolumeInfo; +HSPLandroid/os/storage/IStorageManager;->isConvertibleToFBE()Z +HSPLandroid/os/storage/IStorageManager;->isExternalStorageEmulated()Z +HSPLandroid/os/storage/IStorageManager;->isObbMounted(Ljava/lang/String;)Z +HSPLandroid/os/storage/IStorageManager;->isSecureContainerMounted(Ljava/lang/String;)Z +HSPLandroid/os/storage/IStorageManager;->isUsbMassStorageConnected()Z +HSPLandroid/os/storage/IStorageManager;->isUsbMassStorageEnabled()Z +HSPLandroid/os/storage/IStorageManager;->isUserKeyUnlocked(I)Z +HSPLandroid/os/storage/IStorageManager;->lastMaintenance()J +HSPLandroid/os/storage/IStorageManager;->lockUserKey(I)V +HSPLandroid/os/storage/IStorageManager;->mkdirs(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->mount(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->mountObb(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/storage/IObbActionListener;I)V +HSPLandroid/os/storage/IStorageManager;->mountProxyFileDescriptorBridge()Lcom/android/internal/os/AppFuseMount; +HSPLandroid/os/storage/IStorageManager;->mountSecureContainer(Ljava/lang/String;Ljava/lang/String;IZ)I +HSPLandroid/os/storage/IStorageManager;->mountVolume(Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->openProxyFileDescriptor(III)Landroid/os/ParcelFileDescriptor; +HSPLandroid/os/storage/IStorageManager;->partitionMixed(Ljava/lang/String;I)V +HSPLandroid/os/storage/IStorageManager;->partitionPrivate(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->partitionPublic(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->prepareUserStorage(Ljava/lang/String;III)V +HSPLandroid/os/storage/IStorageManager;->registerListener(Landroid/os/storage/IStorageEventListener;)V +HSPLandroid/os/storage/IStorageManager;->renameSecureContainer(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->resizeSecureContainer(Ljava/lang/String;ILjava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->runMaintenance()V +HSPLandroid/os/storage/IStorageManager;->secdiscard(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->setDebugFlags(II)V +HSPLandroid/os/storage/IStorageManager;->setField(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->setPrimaryStorageUuid(Ljava/lang/String;Landroid/content/pm/IPackageMoveObserver;)V +HSPLandroid/os/storage/IStorageManager;->setUsbMassStorageEnabled(Z)V +HSPLandroid/os/storage/IStorageManager;->setVolumeNickname(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->setVolumeUserFlags(Ljava/lang/String;II)V +HSPLandroid/os/storage/IStorageManager;->shutdown(Landroid/os/storage/IStorageShutdownObserver;)V +HSPLandroid/os/storage/IStorageManager;->unlockUserKey(II[B[B)V +HSPLandroid/os/storage/IStorageManager;->unmount(Ljava/lang/String;)V +HSPLandroid/os/storage/IStorageManager;->unmountObb(Ljava/lang/String;ZLandroid/os/storage/IObbActionListener;I)V +HSPLandroid/os/storage/IStorageManager;->unmountSecureContainer(Ljava/lang/String;Z)I +HSPLandroid/os/storage/IStorageManager;->unmountVolume(Ljava/lang/String;ZZ)V +HSPLandroid/os/storage/IStorageManager;->unregisterListener(Landroid/os/storage/IStorageEventListener;)V +HSPLandroid/os/storage/IStorageManager;->verifyEncryptionPassword(Ljava/lang/String;)I +HSPLandroid/os/storage/IStorageManager;->waitForAsecScan()V +HSPLandroid/os/storage/StorageEventListener;->()V +HSPLandroid/os/storage/StorageManager$ObbActionListener;->(Landroid/os/storage/StorageManager;)V +HSPLandroid/os/storage/StorageManager$ObbActionListener;->(Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager$ObbActionListener;)V +HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->(Landroid/os/storage/StorageEventListener;Landroid/os/Looper;)V +HSPLandroid/os/storage/StorageManager;->(Landroid/content/Context;Landroid/os/Looper;)V +HSPLandroid/os/storage/StorageManager;->convert(Ljava/lang/String;)Ljava/util/UUID; +HSPLandroid/os/storage/StorageManager;->convert(Ljava/util/UUID;)Ljava/lang/String; +HSPLandroid/os/storage/StorageManager;->getAllocatableBytes(Ljava/util/UUID;)J +HSPLandroid/os/storage/StorageManager;->getAllocatableBytes(Ljava/util/UUID;I)J +HSPLandroid/os/storage/StorageManager;->getDisks()Ljava/util/List; +HSPLandroid/os/storage/StorageManager;->getStorageVolume(Ljava/io/File;I)Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/StorageManager;->getStorageVolume([Landroid/os/storage/StorageVolume;Ljava/io/File;)Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/StorageManager;->getUuidForPath(Ljava/io/File;)Ljava/util/UUID; +HSPLandroid/os/storage/StorageManager;->getVolumeList(II)[Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/StorageManager;->getVolumeRecords()Ljava/util/List; +HSPLandroid/os/storage/StorageManager;->getVolumes()Ljava/util/List; +HSPLandroid/os/storage/StorageManager;->inCryptKeeperBounce()Z +HSPLandroid/os/storage/StorageManager;->isEncrypted()Z +HSPLandroid/os/storage/StorageManager;->isFileEncryptedNativeOnly()Z +HSPLandroid/os/storage/StorageManager;->isFileEncryptedNativeOrEmulated()Z +HSPLandroid/os/storage/StorageManager;->registerListener(Landroid/os/storage/StorageEventListener;)V +HSPLandroid/os/storage/StorageVolume$1;->()V +HSPLandroid/os/storage/StorageVolume$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/StorageVolume$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/storage/StorageVolume$1;->newArray(I)[Landroid/os/storage/StorageVolume; +HSPLandroid/os/storage/StorageVolume$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/storage/StorageVolume;->(Landroid/os/Parcel;)V +HSPLandroid/os/storage/StorageVolume;->(Landroid/os/Parcel;Landroid/os/storage/StorageVolume;)V +HSPLandroid/os/storage/StorageVolume;->getPathFile()Ljava/io/File; +HSPLandroid/os/storage/StorageVolume;->getState()Ljava/lang/String; +HSPLandroid/os/storage/StorageVolume;->isEmulated()Z +HSPLandroid/os/storage/VolumeInfo$1;->()V +HSPLandroid/os/storage/VolumeInfo$2;->()V +HSPLandroid/os/storage/VolumeInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/storage/VolumeInfo; +HSPLandroid/os/storage/VolumeInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/os/storage/VolumeInfo$2;->newArray(I)[Landroid/os/storage/VolumeInfo; +HSPLandroid/os/storage/VolumeInfo$2;->newArray(I)[Ljava/lang/Object; +HSPLandroid/os/storage/VolumeInfo;->(Landroid/os/Parcel;)V +HSPLandroid/os/storage/VolumeInfo;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +HSPLandroid/os/storage/VolumeInfo;->getDiskId()Ljava/lang/String; +HSPLandroid/os/storage/VolumeInfo;->getFsUuid()Ljava/lang/String; +HSPLandroid/os/storage/VolumeInfo;->getType()I +HSPLandroid/os/storage/VolumeInfo;->isMountedReadable()Z +HSPLandroid/os/storage/VolumeInfo;->toString()Ljava/lang/String; +HSPLandroid/os/storage/VolumeRecord$1;->()V +HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Landroid/os/storage/VolumeRecord; +HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Ljava/lang/Object; +HSPLandroid/preference/Preference$OnPreferenceChangeListener;->onPreferenceChange(Landroid/preference/Preference;Ljava/lang/Object;)Z +HSPLandroid/preference/PreferenceFragment$OnPreferenceStartFragmentCallback;->onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)Z +HSPLandroid/preference/PreferenceManager$OnPreferenceTreeClickListener;->onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z +HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences; +HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferencesMode()I +HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferencesName(Landroid/content/Context;)Ljava/lang/String; +HSPLandroid/preference/PreferenceManager;->setDefaultValues(Landroid/content/Context;IZ)V +HSPLandroid/preference/PreferenceManager;->setDefaultValues(Landroid/content/Context;Ljava/lang/String;IIZ)V +HSPLandroid/provider/-$Lambda$a7Jyr6j_Mb70hHJ2ssL1AAhKh4c;->()V +HSPLandroid/provider/-$Lambda$asz6VwQ86PPY-v8JLMb7rx-pSqg;->(BLjava/lang/Object;)V +HSPLandroid/provider/BlockedNumberContract;->canCurrentUserBlockNumbers(Landroid/content/Context;)Z +HSPLandroid/provider/CalendarContract$CalendarAlerts;->rescheduleMissedAlarms(Landroid/content/ContentResolver;Landroid/content/Context;Landroid/app/AlarmManager;)V +HSPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabelResource(I)I +HSPLandroid/provider/ContactsContract$CommonDataKinds$Event;->getTypeResource(Ljava/lang/Integer;)I +HSPLandroid/provider/ContactsContract$CommonDataKinds$Im;->getProtocolLabelResource(I)I +HSPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabelResource(I)I +HSPLandroid/provider/ContactsContract$CommonDataKinds$Relation;->getTypeLabelResource(I)I +HSPLandroid/provider/ContactsContract$CommonDataKinds$StructuredPostal;->getTypeLabelResource(I)I +HSPLandroid/provider/ContactsContract$Contacts;->isEnterpriseContactId(J)Z +HSPLandroid/provider/FontsContract$1;->()V +HSPLandroid/provider/FontsContract;->setApplicationContextForResources(Landroid/content/Context;)V +HSPLandroid/provider/MediaStore$Audio$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/MediaStore$Files;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/MediaStore$Images$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/MediaStore$Video$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/SearchIndexableData;->()V +HSPLandroid/provider/SearchIndexableResource;->(IILjava/lang/String;I)V +HSPLandroid/provider/SearchIndexablesProvider;->()V +HSPLandroid/provider/SearchIndexablesProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLandroid/provider/SearchIndexablesProvider;->queryNonIndexableKeys([Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/provider/SearchIndexablesProvider;->queryRawData([Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/provider/SearchIndexablesProvider;->queryXmlResources([Ljava/lang/String;)Landroid/database/Cursor; +HSPLandroid/provider/SearchRecentSuggestions;->(Landroid/content/Context;Ljava/lang/String;I)V +HSPLandroid/provider/Settings$ContentProviderHolder;->(Landroid/net/Uri;)V +HSPLandroid/provider/Settings$ContentProviderHolder;->getProvider(Landroid/content/ContentResolver;)Landroid/content/IContentProvider; +HSPLandroid/provider/Settings$GenerationTracker;->(Landroid/util/MemoryIntArray;IILjava/lang/Runnable;)V +HSPLandroid/provider/Settings$GenerationTracker;->isGenerationChanged()Z +HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I +HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I +HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I +HSPLandroid/provider/Settings$Global;->getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J +HSPLandroid/provider/Settings$Global;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/provider/Settings$Global;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$Global;->getUriFor(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/Settings$Global;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z +HSPLandroid/provider/Settings$Global;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z +HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z +HSPLandroid/provider/Settings$NameValueCache;->(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/provider/Settings$ContentProviderHolder;)V +HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z +HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/Settings$Secure;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F +HSPLandroid/provider/Settings$Secure;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;FI)F +HSPLandroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I +HSPLandroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I +HSPLandroid/provider/Settings$Secure;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I +HSPLandroid/provider/Settings$Secure;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I +HSPLandroid/provider/Settings$Secure;->getLocationModeForUser(Landroid/content/ContentResolver;I)I +HSPLandroid/provider/Settings$Secure;->getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J +HSPLandroid/provider/Settings$Secure;->getLongForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)J +HSPLandroid/provider/Settings$Secure;->getLongForUser(Landroid/content/ContentResolver;Ljava/lang/String;JI)J +HSPLandroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/provider/Settings$Secure;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$Secure;->getUriFor(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/Settings$Secure;->isLocationProviderEnabledForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Z +HSPLandroid/provider/Settings$SettingNotFoundException;->(Ljava/lang/String;)V +HSPLandroid/provider/Settings$System$1;->()V +HSPLandroid/provider/Settings$System$2;->()V +HSPLandroid/provider/Settings$System$3;->()V +HSPLandroid/provider/Settings$System$4;->()V +HSPLandroid/provider/Settings$System$5;->()V +HSPLandroid/provider/Settings$System$6;->()V +HSPLandroid/provider/Settings$System$7;->()V +HSPLandroid/provider/Settings$System$8;->()V +HSPLandroid/provider/Settings$System$9;->()V +HSPLandroid/provider/Settings$System$DiscreteValueValidator;->([Ljava/lang/String;)V +HSPLandroid/provider/Settings$System$InclusiveFloatRangeValidator;->(FF)V +HSPLandroid/provider/Settings$System$InclusiveIntegerRangeValidator;->(II)V +HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I +HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I +HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I +HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I +HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/Settings;->-get0()Ljava/lang/Object; +HSPLandroid/provider/Settings;->isInSystemServer()Z +HSPLandroid/provider/Telephony$ServiceStateTable;->getContentValuesForServiceState(Landroid/telephony/ServiceState;)Landroid/content/ContentValues; +HSPLandroid/provider/Telephony$ServiceStateTable;->getUriForSubscriptionId(I)Landroid/net/Uri; +HSPLandroid/provider/Telephony$ServiceStateTable;->getUriForSubscriptionIdAndField(ILjava/lang/String;)Landroid/net/Uri; +HSPLandroid/provider/Telephony$Sms;->getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String; +HSPLandroid/renderscript/RenderScriptCacheDir;->setupDiskCache(Ljava/io/File;)V +HSPLandroid/security/IKeystoreService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/security/IKeystoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeystoreService; +HSPLandroid/security/IKeystoreService;->abort(Landroid/os/IBinder;)I +HSPLandroid/security/IKeystoreService;->addAuthToken([B)I +HSPLandroid/security/IKeystoreService;->addRngEntropy([B)I +HSPLandroid/security/IKeystoreService;->attestDeviceIds(Landroid/security/keymaster/KeymasterArguments;Landroid/security/keymaster/KeymasterCertificateChain;)I +HSPLandroid/security/IKeystoreService;->attestKey(Ljava/lang/String;Landroid/security/keymaster/KeymasterArguments;Landroid/security/keymaster/KeymasterCertificateChain;)I +HSPLandroid/security/IKeystoreService;->begin(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/security/keymaster/KeymasterArguments;[BI)Landroid/security/keymaster/OperationResult; +HSPLandroid/security/IKeystoreService;->clear_uid(J)I +HSPLandroid/security/IKeystoreService;->del(Ljava/lang/String;I)I +HSPLandroid/security/IKeystoreService;->duplicate(Ljava/lang/String;ILjava/lang/String;I)I +HSPLandroid/security/IKeystoreService;->exist(Ljava/lang/String;I)I +HSPLandroid/security/IKeystoreService;->exportKey(Ljava/lang/String;ILandroid/security/keymaster/KeymasterBlob;Landroid/security/keymaster/KeymasterBlob;I)Landroid/security/keymaster/ExportResult; +HSPLandroid/security/IKeystoreService;->finish(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B)Landroid/security/keymaster/OperationResult; +HSPLandroid/security/IKeystoreService;->generate(Ljava/lang/String;IIIILandroid/security/KeystoreArguments;)I +HSPLandroid/security/IKeystoreService;->generateKey(Ljava/lang/String;Landroid/security/keymaster/KeymasterArguments;[BIILandroid/security/keymaster/KeyCharacteristics;)I +HSPLandroid/security/IKeystoreService;->get(Ljava/lang/String;I)[B +HSPLandroid/security/IKeystoreService;->getKeyCharacteristics(Ljava/lang/String;Landroid/security/keymaster/KeymasterBlob;Landroid/security/keymaster/KeymasterBlob;ILandroid/security/keymaster/KeyCharacteristics;)I +HSPLandroid/security/IKeystoreService;->getState(I)I +HSPLandroid/security/IKeystoreService;->get_pubkey(Ljava/lang/String;)[B +HSPLandroid/security/IKeystoreService;->getmtime(Ljava/lang/String;I)J +HSPLandroid/security/IKeystoreService;->grant(Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/security/IKeystoreService;->importKey(Ljava/lang/String;Landroid/security/keymaster/KeymasterArguments;I[BIILandroid/security/keymaster/KeyCharacteristics;)I +HSPLandroid/security/IKeystoreService;->import_key(Ljava/lang/String;[BII)I +HSPLandroid/security/IKeystoreService;->insert(Ljava/lang/String;[BII)I +HSPLandroid/security/IKeystoreService;->isEmpty(I)I +HSPLandroid/security/IKeystoreService;->isOperationAuthorized(Landroid/os/IBinder;)Z +HSPLandroid/security/IKeystoreService;->is_hardware_backed(Ljava/lang/String;)I +HSPLandroid/security/IKeystoreService;->list(Ljava/lang/String;I)[Ljava/lang/String; +HSPLandroid/security/IKeystoreService;->lock(I)I +HSPLandroid/security/IKeystoreService;->onDeviceOffBody()I +HSPLandroid/security/IKeystoreService;->onUserAdded(II)I +HSPLandroid/security/IKeystoreService;->onUserPasswordChanged(ILjava/lang/String;)I +HSPLandroid/security/IKeystoreService;->onUserRemoved(I)I +HSPLandroid/security/IKeystoreService;->reset()I +HSPLandroid/security/IKeystoreService;->sign(Ljava/lang/String;[B)[B +HSPLandroid/security/IKeystoreService;->ungrant(Ljava/lang/String;I)I +HSPLandroid/security/IKeystoreService;->unlock(ILjava/lang/String;)I +HSPLandroid/security/IKeystoreService;->update(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)Landroid/security/keymaster/OperationResult; +HSPLandroid/security/IKeystoreService;->verify(Ljava/lang/String;[B[B)I +HSPLandroid/security/KeyChain$1;->(Ljava/util/concurrent/BlockingQueue;)V +HSPLandroid/security/KeyChain;->bindAsUser(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection; +HSPLandroid/security/KeyChain;->ensureNotOnMainThread(Landroid/content/Context;)V +HSPLandroid/security/KeyStore;->(Landroid/security/IKeystoreService;)V +HSPLandroid/security/KeyStore;->getApplicationContext()Landroid/content/Context; +HSPLandroid/security/KeyStore;->getInstance()Landroid/security/KeyStore; +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->()V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->addAlgorithmSpecificParametersToBegin(Landroid/security/keymaster/KeymasterArguments;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->engineGetParameters()Ljava/security/AlgorithmParameters; +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->getAdditionalEntropyAmountForBegin()I +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->getAdditionalEntropyAmountForFinish()I +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->init(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->initAlgorithmSpecificParameters()V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->initAlgorithmSpecificParameters(Ljava/security/AlgorithmParameters;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->initAlgorithmSpecificParameters(Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->initKey(ILjava/security/Key;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->loadAlgorithmSpecificParametersFromBeginResult(Landroid/security/keymaster/KeymasterArguments;)V +HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->resetAll()V +HSPLandroid/security/keystore/AndroidKeyStoreKeyFactorySpi;->()V +HSPLandroid/security/keystore/AndroidKeyStoreKeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLandroid/security/keystore/AndroidKeyStoreRSACipherSpi$PKCS1Padding;->()V +HSPLandroid/security/keystore/AndroidKeyStoreRSACipherSpi;->(I)V +HSPLandroid/security/keystore/AndroidKeyStoreRSACipherSpi;->initKey(ILjava/security/Key;)V +HSPLandroid/security/keystore/AndroidKeyStoreRSACipherSpi;->resetAll()V +HSPLandroid/security/keystore/KeyStoreCryptoOperation;->getOperationHandle()J +HSPLandroid/security/net/config/ApplicationConfig;->(Landroid/security/net/config/ConfigSource;)V +HSPLandroid/security/net/config/ApplicationConfig;->ensureInitialized()V +HSPLandroid/security/net/config/ApplicationConfig;->getConfigForHostname(Ljava/lang/String;)Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/ApplicationConfig;->getDefaultInstance()Landroid/security/net/config/ApplicationConfig; +HSPLandroid/security/net/config/ApplicationConfig;->getTrustManager()Ljavax/net/ssl/X509TrustManager; +HSPLandroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V +HSPLandroid/security/net/config/CertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/CertificateSource;->findByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/CertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/CertificateSource;->getCertificates()Ljava/util/Set; +HSPLandroid/security/net/config/CertificateSource;->handleTrustStorageUpdate()V +HSPLandroid/security/net/config/CertificatesEntryRef;->(Landroid/security/net/config/CertificateSource;Z)V +HSPLandroid/security/net/config/CertificatesEntryRef;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/CertificatesEntryRef;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor; +HSPLandroid/security/net/config/CertificatesEntryRef;->overridesPins()Z +HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->(Landroid/security/net/config/ApplicationConfig;)V +HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCertificateTransparencyVerificationRequired(Ljava/lang/String;)Z +HSPLandroid/security/net/config/ConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/ConfigSource;->getPerDomainConfigs()Ljava/util/Set; +HSPLandroid/security/net/config/DirectoryCertificateSource$1;->(Landroid/security/net/config/DirectoryCertificateSource;Ljava/security/cert/X509Certificate;)V +HSPLandroid/security/net/config/DirectoryCertificateSource$3;->(Landroid/security/net/config/DirectoryCertificateSource;Ljava/security/cert/X509Certificate;)V +HSPLandroid/security/net/config/DirectoryCertificateSource$3;->match(Ljava/security/cert/X509Certificate;)Z +HSPLandroid/security/net/config/DirectoryCertificateSource;->(Ljava/io/File;)V +HSPLandroid/security/net/config/DirectoryCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/DirectoryCertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/DirectoryCertificateSource;->findCert(Ljavax/security/auth/x500/X500Principal;Landroid/security/net/config/DirectoryCertificateSource$CertSelector;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/DirectoryCertificateSource;->findCerts(Ljavax/security/auth/x500/X500Principal;Landroid/security/net/config/DirectoryCertificateSource$CertSelector;)Ljava/util/Set; +HSPLandroid/security/net/config/DirectoryCertificateSource;->getHash(Ljavax/security/auth/x500/X500Principal;)Ljava/lang/String; +HSPLandroid/security/net/config/DirectoryCertificateSource;->isCertMarkedAsRemoved(Ljava/lang/String;)Z +HSPLandroid/security/net/config/DirectoryCertificateSource;->readCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/KeyStoreCertificateSource;->(Ljava/security/KeyStore;)V +HSPLandroid/security/net/config/KeyStoreConfigSource;->(Ljava/security/KeyStore;)V +HSPLandroid/security/net/config/KeyStoreConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/KeyStoreConfigSource;->getPerDomainConfigs()Ljava/util/Set; +HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->(ZII)V +HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getPerDomainConfigs()Ljava/util/Set; +HSPLandroid/security/net/config/ManifestConfigSource;->(Landroid/content/Context;)V +HSPLandroid/security/net/config/ManifestConfigSource;->getConfigSource()Landroid/security/net/config/ConfigSource; +HSPLandroid/security/net/config/ManifestConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/ManifestConfigSource;->getPerDomainConfigs()Ljava/util/Set; +HSPLandroid/security/net/config/NetworkSecurityConfig$1;->(Landroid/security/net/config/NetworkSecurityConfig;)V +HSPLandroid/security/net/config/NetworkSecurityConfig$1;->compare(Landroid/security/net/config/CertificatesEntryRef;Landroid/security/net/config/CertificatesEntryRef;)I +HSPLandroid/security/net/config/NetworkSecurityConfig$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->()V +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRef(Landroid/security/net/config/CertificatesEntryRef;)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRefs(Ljava/util/Collection;)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->build()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCertificatesEntryRefs()Ljava/util/List; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCleartextTrafficPermitted()Z +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveHstsEnforced()Z +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectivePinSet()Landroid/security/net/config/PinSet; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getParent()Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setCleartextTrafficPermitted(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setHstsEnforced(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setParent(Landroid/security/net/config/NetworkSecurityConfig$Builder;)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig;->(ZZLandroid/security/net/config/PinSet;Ljava/util/List;)V +HSPLandroid/security/net/config/NetworkSecurityConfig;->(ZZLandroid/security/net/config/PinSet;Ljava/util/List;Landroid/security/net/config/NetworkSecurityConfig;)V +HSPLandroid/security/net/config/NetworkSecurityConfig;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/NetworkSecurityConfig;->findTrustAnchorBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor; +HSPLandroid/security/net/config/NetworkSecurityConfig;->getDefaultBuilder(II)Landroid/security/net/config/NetworkSecurityConfig$Builder; +HSPLandroid/security/net/config/NetworkSecurityConfig;->getPins()Landroid/security/net/config/PinSet; +HSPLandroid/security/net/config/NetworkSecurityConfig;->getTrustManager()Landroid/security/net/config/NetworkSecurityTrustManager; +HSPLandroid/security/net/config/NetworkSecurityConfigProvider;->()V +HSPLandroid/security/net/config/NetworkSecurityConfigProvider;->install(Landroid/content/Context;)V +HSPLandroid/security/net/config/NetworkSecurityTrustManager;->(Landroid/security/net/config/NetworkSecurityConfig;)V +HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkPins(Ljava/util/List;)V +HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V +HSPLandroid/security/net/config/PinSet;->(Ljava/util/Set;J)V +HSPLandroid/security/net/config/RootTrustManager;->(Landroid/security/net/config/ApplicationConfig;)V +HSPLandroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLandroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V +HSPLandroid/security/net/config/RootTrustManagerFactorySpi;->()V +HSPLandroid/security/net/config/RootTrustManagerFactorySpi;->engineGetTrustManagers()[Ljavax/net/ssl/TrustManager; +HSPLandroid/security/net/config/RootTrustManagerFactorySpi;->engineInit(Ljava/security/KeyStore;)V +HSPLandroid/security/net/config/SystemCertificateSource$NoPreloadHolder;->-get0()Landroid/security/net/config/SystemCertificateSource; +HSPLandroid/security/net/config/SystemCertificateSource;->()V +HSPLandroid/security/net/config/SystemCertificateSource;->(Landroid/security/net/config/SystemCertificateSource;)V +HSPLandroid/security/net/config/SystemCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/SystemCertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/SystemCertificateSource;->getInstance()Landroid/security/net/config/SystemCertificateSource; +HSPLandroid/security/net/config/SystemCertificateSource;->isCertMarkedAsRemoved(Ljava/lang/String;)Z +HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;->(Landroid/security/net/config/NetworkSecurityConfig;)V +HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;->findAllIssuers(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;->getTrustAnchor(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/UserCertificateSource$NoPreloadHolder;->-get0()Landroid/security/net/config/UserCertificateSource; +HSPLandroid/security/net/config/UserCertificateSource;->()V +HSPLandroid/security/net/config/UserCertificateSource;->(Landroid/security/net/config/UserCertificateSource;)V +HSPLandroid/security/net/config/UserCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLandroid/security/net/config/UserCertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate; +HSPLandroid/security/net/config/UserCertificateSource;->getInstance()Landroid/security/net/config/UserCertificateSource; +HSPLandroid/security/net/config/XmlConfigSource;->(Landroid/content/Context;IZII)V +HSPLandroid/security/net/config/XmlConfigSource;->addDebugAnchorsIfNeeded(Landroid/security/net/config/NetworkSecurityConfig$Builder;Landroid/security/net/config/NetworkSecurityConfig$Builder;)V +HSPLandroid/security/net/config/XmlConfigSource;->ensureInitialized()V +HSPLandroid/security/net/config/XmlConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig; +HSPLandroid/security/net/config/XmlConfigSource;->getPerDomainConfigs()Ljava/util/Set; +HSPLandroid/security/net/config/XmlConfigSource;->parseCertificatesEntry(Landroid/content/res/XmlResourceParser;Z)Landroid/security/net/config/CertificatesEntryRef; +HSPLandroid/security/net/config/XmlConfigSource;->parseConfigEntry(Landroid/content/res/XmlResourceParser;Ljava/util/Set;Landroid/security/net/config/NetworkSecurityConfig$Builder;I)Ljava/util/List; +HSPLandroid/security/net/config/XmlConfigSource;->parseNetworkSecurityConfig(Landroid/content/res/XmlResourceParser;)V +HSPLandroid/security/net/config/XmlConfigSource;->parseTrustAnchors(Landroid/content/res/XmlResourceParser;Z)Ljava/util/Collection; +HSPLandroid/service/dreams/IDreamManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager; +HSPLandroid/service/dreams/IDreamManager;->awaken()V +HSPLandroid/service/dreams/IDreamManager;->dream()V +HSPLandroid/service/dreams/IDreamManager;->finishSelf(Landroid/os/IBinder;Z)V +HSPLandroid/service/dreams/IDreamManager;->getDefaultDreamComponent()Landroid/content/ComponentName; +HSPLandroid/service/dreams/IDreamManager;->getDreamComponents()[Landroid/content/ComponentName; +HSPLandroid/service/dreams/IDreamManager;->isDreaming()Z +HSPLandroid/service/dreams/IDreamManager;->setDreamComponents([Landroid/content/ComponentName;)V +HSPLandroid/service/dreams/IDreamManager;->startDozing(Landroid/os/IBinder;II)V +HSPLandroid/service/dreams/IDreamManager;->stopDozing(Landroid/os/IBinder;)V +HSPLandroid/service/dreams/IDreamManager;->testDream(Landroid/content/ComponentName;)V +HSPLandroid/service/notification/Condition$1;->()V +HSPLandroid/service/notification/Condition$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/Condition; +HSPLandroid/service/notification/Condition$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/Condition;->(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;III)V +HSPLandroid/service/notification/Condition;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/Condition;->isValidId(Landroid/net/Uri;Ljava/lang/String;)Z +HSPLandroid/service/notification/Condition;->isValidState(I)Z +HSPLandroid/service/notification/Condition;->newId(Landroid/content/Context;)Landroid/net/Uri$Builder; +HSPLandroid/service/notification/ConditionProviderService$H;->(Landroid/service/notification/ConditionProviderService;)V +HSPLandroid/service/notification/ConditionProviderService$H;->(Landroid/service/notification/ConditionProviderService;Landroid/service/notification/ConditionProviderService$H;)V +HSPLandroid/service/notification/ConditionProviderService$H;->handleMessage(Landroid/os/Message;)V +HSPLandroid/service/notification/ConditionProviderService$Provider;->(Landroid/service/notification/ConditionProviderService;)V +HSPLandroid/service/notification/ConditionProviderService$Provider;->(Landroid/service/notification/ConditionProviderService;Landroid/service/notification/ConditionProviderService$Provider;)V +HSPLandroid/service/notification/ConditionProviderService$Provider;->onConnected()V +HSPLandroid/service/notification/ConditionProviderService;->-get1(Landroid/service/notification/ConditionProviderService;)Landroid/service/notification/ConditionProviderService$H; +HSPLandroid/service/notification/ConditionProviderService;->-wrap0(Landroid/service/notification/ConditionProviderService;)Z +HSPLandroid/service/notification/ConditionProviderService;->()V +HSPLandroid/service/notification/ConditionProviderService;->isBound()Z +HSPLandroid/service/notification/ConditionProviderService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/notification/ConditionProviderService;->onConnected()V +HSPLandroid/service/notification/ConditionProviderService;->onSubscribe(Landroid/net/Uri;)V +HSPLandroid/service/notification/ConditionProviderService;->onUnsubscribe(Landroid/net/Uri;)V +HSPLandroid/service/notification/IConditionListener$Stub;->()V +HSPLandroid/service/notification/IConditionListener;->onConditionsReceived([Landroid/service/notification/Condition;)V +HSPLandroid/service/notification/IConditionProvider$Stub;->()V +HSPLandroid/service/notification/IConditionProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/notification/IConditionProvider;->onConnected()V +HSPLandroid/service/notification/IConditionProvider;->onSubscribe(Landroid/net/Uri;)V +HSPLandroid/service/notification/IConditionProvider;->onUnsubscribe(Landroid/net/Uri;)V +HSPLandroid/service/notification/INotificationListener$Stub;->()V +HSPLandroid/service/notification/INotificationListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/notification/INotificationListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/notification/INotificationListener;->onInterruptionFilterChanged(I)V +HSPLandroid/service/notification/INotificationListener;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/INotificationListener;->onListenerHintsChanged(I)V +HSPLandroid/service/notification/INotificationListener;->onNotificationChannelGroupModification(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V +HSPLandroid/service/notification/INotificationListener;->onNotificationChannelModification(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V +HSPLandroid/service/notification/INotificationListener;->onNotificationEnqueued(Landroid/service/notification/IStatusBarNotificationHolder;)V +HSPLandroid/service/notification/INotificationListener;->onNotificationPosted(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/INotificationListener;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/INotificationListener;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;I)V +HSPLandroid/service/notification/INotificationListener;->onNotificationSnoozedUntilContext(Landroid/service/notification/IStatusBarNotificationHolder;Ljava/lang/String;)V +HSPLandroid/service/notification/NotificationListenerService$MyHandler;->(Landroid/service/notification/NotificationListenerService;Landroid/os/Looper;)V +HSPLandroid/service/notification/NotificationListenerService$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->(Landroid/service/notification/NotificationListenerService;)V +HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->-wrap0(Landroid/service/notification/NotificationListenerService$Ranking;Ljava/lang/String;IZIIILjava/lang/CharSequence;Ljava/lang/String;Landroid/app/NotificationChannel;Ljava/util/ArrayList;Ljava/util/ArrayList;Z)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->()V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->canShowBadge()Z +HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Ljava/lang/String;IZIIILjava/lang/CharSequence;Ljava/lang/String;Landroid/app/NotificationChannel;Ljava/util/ArrayList;Ljava/util/ArrayList;Z)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationListenerService$RankingMap;)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildChannelsLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildImportanceExplanationLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildImportanceLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildInterceptedSetLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildOverrideGroupKeys()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildOverridePeopleLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildRanksLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildShowBadgeLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildSnoozeCriteriaLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildSuppressedVisualEffectsLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildVisibilityOverridesLocked()V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getChannel(Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getImportance(Ljava/lang/String;)I +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getImportanceExplanation(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOverrideGroupKey(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOverridePeople(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRank(Ljava/lang/String;)I +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRanking(Ljava/lang/String;Landroid/service/notification/NotificationListenerService$Ranking;)Z +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getShowBadge(Ljava/lang/String;)Z +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSnoozeCriteria(Ljava/lang/String;)Ljava/util/ArrayList; +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSuppressedVisualEffects(Ljava/lang/String;)I +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getVisibilityOverride(Ljava/lang/String;)I +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->isIntercepted(Ljava/lang/String;)Z +HSPLandroid/service/notification/NotificationListenerService;->-get1(Landroid/service/notification/NotificationListenerService;)Z +HSPLandroid/service/notification/NotificationListenerService;->-get2(Landroid/service/notification/NotificationListenerService;)Landroid/os/Handler; +HSPLandroid/service/notification/NotificationListenerService;->-get3(Landroid/service/notification/NotificationListenerService;)Ljava/lang/Object; +HSPLandroid/service/notification/NotificationListenerService;->-set0(Landroid/service/notification/NotificationListenerService;Z)Z +HSPLandroid/service/notification/NotificationListenerService;->()V +HSPLandroid/service/notification/NotificationListenerService;->applyUpdateLocked(Landroid/service/notification/NotificationRankingUpdate;)V +HSPLandroid/service/notification/NotificationListenerService;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/service/notification/NotificationListenerService;->cleanUpNotificationList(Landroid/content/pm/ParceledListSlice;)[Landroid/service/notification/StatusBarNotification; +HSPLandroid/service/notification/NotificationListenerService;->createLegacyIconExtras(Landroid/app/Notification;)V +HSPLandroid/service/notification/NotificationListenerService;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification; +HSPLandroid/service/notification/NotificationListenerService;->getActiveNotifications([Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification; +HSPLandroid/service/notification/NotificationListenerService;->getContext()Landroid/content/Context; +HSPLandroid/service/notification/NotificationListenerService;->getCurrentRanking()Landroid/service/notification/NotificationListenerService$RankingMap; +HSPLandroid/service/notification/NotificationListenerService;->getNotificationInterface()Landroid/app/INotificationManager; +HSPLandroid/service/notification/NotificationListenerService;->isBound()Z +HSPLandroid/service/notification/NotificationListenerService;->maybePopulateRemoteViews(Landroid/app/Notification;)V +HSPLandroid/service/notification/NotificationListenerService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/notification/NotificationListenerService;->onDestroy()V +HSPLandroid/service/notification/NotificationListenerService;->onListenerConnected()V +HSPLandroid/service/notification/NotificationListenerService;->onListenerDisconnected()V +HSPLandroid/service/notification/NotificationListenerService;->registerAsSystemService(Landroid/content/Context;Landroid/content/ComponentName;I)V +HSPLandroid/service/notification/NotificationListenerService;->requestRebind(Landroid/content/ComponentName;)V +HSPLandroid/service/notification/NotificationListenerService;->requestUnbind()V +HSPLandroid/service/notification/NotificationRankingUpdate$1;->()V +HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationRankingUpdate; +HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/NotificationRankingUpdate;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationRankingUpdate;->getChannels()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getImportance()[I +HSPLandroid/service/notification/NotificationRankingUpdate;->getImportanceExplanation()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getInterceptedKeys()[Ljava/lang/String; +HSPLandroid/service/notification/NotificationRankingUpdate;->getOrderedKeys()[Ljava/lang/String; +HSPLandroid/service/notification/NotificationRankingUpdate;->getOverrideGroupKeys()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getOverridePeople()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getShowBadge()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getSnoozeCriteria()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getSuppressedVisualEffects()Landroid/os/Bundle; +HSPLandroid/service/notification/NotificationRankingUpdate;->getVisibilityOverrides()Landroid/os/Bundle; +HSPLandroid/service/notification/StatusBarNotification$1;->()V +HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification; +HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/StatusBarNotification;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/StatusBarNotification;->getKey()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->getNotification()Landroid/app/Notification; +HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String; +HSPLandroid/service/notification/ZenModeConfig$1;->()V +HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig; +HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->()V +HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig$ZenRule; +HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/service/notification/ZenModeConfig$ZenRule;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/ZenModeConfig$ZenRule;->isAutomaticActive()Z +HSPLandroid/service/notification/ZenModeConfig;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/ZenModeConfig;->generateMinuteBuckets()[I +HSPLandroid/service/notification/ZenModeConfig;->getConditionLine(Landroid/content/Context;Landroid/service/notification/ZenModeConfig;IZZ)Ljava/lang/String; +HSPLandroid/service/notification/ZenModeConfig;->getConditionSummary(Landroid/content/Context;Landroid/service/notification/ZenModeConfig;IZ)Ljava/lang/String; +HSPLandroid/service/notification/ZenModeConfig;->getFormattedTime(Landroid/content/Context;JZI)Ljava/lang/CharSequence; +HSPLandroid/service/notification/ZenModeConfig;->isToday(J)Z +HSPLandroid/service/notification/ZenModeConfig;->toCountdownConditionId(JZ)Landroid/net/Uri; +HSPLandroid/service/notification/ZenModeConfig;->toTimeCondition(Landroid/content/Context;II)Landroid/service/notification/Condition; +HSPLandroid/service/notification/ZenModeConfig;->toTimeCondition(Landroid/content/Context;IIZ)Landroid/service/notification/Condition; +HSPLandroid/service/notification/ZenModeConfig;->toTimeCondition(Landroid/content/Context;JIIZ)Landroid/service/notification/Condition; +HSPLandroid/service/notification/ZenModeConfig;->tryParseCountdownConditionId(Landroid/net/Uri;)J +HSPLandroid/service/quicksettings/IQSService$Stub;->()V +HSPLandroid/service/quicksettings/IQSService;->getTile(Landroid/os/IBinder;)Landroid/service/quicksettings/Tile; +HSPLandroid/service/quicksettings/IQSService;->isLocked()Z +HSPLandroid/service/quicksettings/IQSService;->isSecure()Z +HSPLandroid/service/quicksettings/IQSService;->onDialogHidden(Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->onShowDialog(Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->onStartActivity(Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->onStartSuccessful(Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->startUnlockAndRun(Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->updateQsTile(Landroid/service/quicksettings/Tile;Landroid/os/IBinder;)V +HSPLandroid/service/quicksettings/IQSService;->updateStatusIcon(Landroid/os/IBinder;Landroid/graphics/drawable/Icon;Ljava/lang/String;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->()V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->onAvailabilityChanged(I)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->onDetected(Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->onError()V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->onRecognitionPaused()V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$Callback;->onRecognitionResumed()V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$MyHandler;->(Landroid/service/voice/AlwaysOnHotwordDetector;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->(Landroid/service/voice/AlwaysOnHotwordDetector;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void; +HSPLandroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->internalGetInitialAvailability()I +HSPLandroid/service/voice/AlwaysOnHotwordDetector$RefreshAvailabiltyTask;->internalGetIsEnrolled(ILjava/util/Locale;)Z +HSPLandroid/service/voice/AlwaysOnHotwordDetector$SoundTriggerListener;->(Landroid/os/Handler;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get0(Landroid/service/voice/AlwaysOnHotwordDetector;)I +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get1(Landroid/service/voice/AlwaysOnHotwordDetector;)Landroid/service/voice/AlwaysOnHotwordDetector$Callback; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get2(Landroid/service/voice/AlwaysOnHotwordDetector;)Landroid/hardware/soundtrigger/KeyphraseMetadata; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get3(Landroid/service/voice/AlwaysOnHotwordDetector;)Ljava/util/Locale; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get4(Landroid/service/voice/AlwaysOnHotwordDetector;)Ljava/lang/Object; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get5(Landroid/service/voice/AlwaysOnHotwordDetector;)Lcom/android/internal/app/IVoiceInteractionManagerService; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-get6(Landroid/service/voice/AlwaysOnHotwordDetector;)Landroid/service/voice/IVoiceInteractionService; +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-set0(Landroid/service/voice/AlwaysOnHotwordDetector;I)I +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->-wrap0(Landroid/service/voice/AlwaysOnHotwordDetector;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->(Ljava/lang/String;Ljava/util/Locale;Landroid/service/voice/AlwaysOnHotwordDetector$Callback;Landroid/hardware/soundtrigger/KeyphraseEnrollmentInfo;Landroid/service/voice/IVoiceInteractionService;Lcom/android/internal/app/IVoiceInteractionManagerService;)V +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->getSupportedRecognitionModes()I +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->getSupportedRecognitionModesLocked()I +HSPLandroid/service/voice/AlwaysOnHotwordDetector;->notifyStateChangedLocked()V +HSPLandroid/service/voice/IVoiceInteractionService$Stub;->()V +HSPLandroid/service/voice/IVoiceInteractionService$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/voice/IVoiceInteractionService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/voice/IVoiceInteractionService;->launchVoiceAssistFromKeyguard()V +HSPLandroid/service/voice/IVoiceInteractionService;->ready()V +HSPLandroid/service/voice/IVoiceInteractionService;->shutdown()V +HSPLandroid/service/voice/IVoiceInteractionService;->soundModelsChanged()V +HSPLandroid/service/voice/VoiceInteractionService$1;->(Landroid/service/voice/VoiceInteractionService;)V +HSPLandroid/service/voice/VoiceInteractionService$1;->ready()V +HSPLandroid/service/voice/VoiceInteractionService$MyHandler;->(Landroid/service/voice/VoiceInteractionService;)V +HSPLandroid/service/voice/VoiceInteractionService$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/service/voice/VoiceInteractionService;->()V +HSPLandroid/service/voice/VoiceInteractionService;->createAlwaysOnHotwordDetector(Ljava/lang/String;Ljava/util/Locale;Landroid/service/voice/AlwaysOnHotwordDetector$Callback;)Landroid/service/voice/AlwaysOnHotwordDetector; +HSPLandroid/service/voice/VoiceInteractionService;->isActiveService(Landroid/content/Context;Landroid/content/ComponentName;)Z +HSPLandroid/service/voice/VoiceInteractionService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/voice/VoiceInteractionService;->onCreate()V +HSPLandroid/service/voice/VoiceInteractionService;->onReady()V +HSPLandroid/service/voice/VoiceInteractionService;->safelyShutdownHotwordDetector()V +HSPLandroid/service/vr/IPersistentVrStateCallbacks$Stub;->()V +HSPLandroid/service/vr/IVrManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/service/vr/IVrManager$Stub$Proxy;->getVrModeState()Z +HSPLandroid/service/vr/IVrManager$Stub$Proxy;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V +HSPLandroid/service/vr/IVrManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrManager; +HSPLandroid/service/vr/IVrManager;->getPersistentVrModeEnabled()Z +HSPLandroid/service/vr/IVrManager;->getVr2dDisplayId()I +HSPLandroid/service/vr/IVrManager;->getVrModeState()Z +HSPLandroid/service/vr/IVrManager;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V +HSPLandroid/service/vr/IVrManager;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +HSPLandroid/service/vr/IVrManager;->setPersistentVrModeEnabled(Z)V +HSPLandroid/service/vr/IVrManager;->setVr2dDisplayProperties(Landroid/app/Vr2dDisplayProperties;)V +HSPLandroid/service/vr/IVrManager;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V +HSPLandroid/service/vr/IVrManager;->unregisterPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +HSPLandroid/service/vr/IVrStateCallbacks$Stub;->()V +HSPLandroid/service/vr/IVrStateCallbacks$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/vr/IVrStateCallbacks;->onVrStateChanged(Z)V +HSPLandroid/service/wallpaper/-$Lambda$htiXs5zQinBXs3seMVLgh3fgmis$1;->(Ljava/lang/Object;)V +HSPLandroid/service/wallpaper/-$Lambda$htiXs5zQinBXs3seMVLgh3fgmis;->()V +HSPLandroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V +HSPLandroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V +HSPLandroid/service/wallpaper/IWallpaperConnection$Stub$Proxy;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;)V +HSPLandroid/service/wallpaper/IWallpaperConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperConnection; +HSPLandroid/service/wallpaper/IWallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V +HSPLandroid/service/wallpaper/IWallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V +HSPLandroid/service/wallpaper/IWallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;)V +HSPLandroid/service/wallpaper/IWallpaperConnection;->setWallpaper(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/service/wallpaper/IWallpaperEngine$Stub;->()V +HSPLandroid/service/wallpaper/IWallpaperEngine$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/service/wallpaper/IWallpaperEngine$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/wallpaper/IWallpaperEngine;->destroy()V +HSPLandroid/service/wallpaper/IWallpaperEngine;->dispatchPointer(Landroid/view/MotionEvent;)V +HSPLandroid/service/wallpaper/IWallpaperEngine;->dispatchWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;)V +HSPLandroid/service/wallpaper/IWallpaperEngine;->requestWallpaperColors()V +HSPLandroid/service/wallpaper/IWallpaperEngine;->setDesiredSize(II)V +HSPLandroid/service/wallpaper/IWallpaperEngine;->setDisplayPadding(Landroid/graphics/Rect;)V +HSPLandroid/service/wallpaper/IWallpaperEngine;->setVisibility(Z)V +HSPLandroid/service/wallpaper/IWallpaperService$Stub;->()V +HSPLandroid/service/wallpaper/IWallpaperService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/service/wallpaper/IWallpaperService;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine$1;->(Landroid/service/wallpaper/WallpaperService$Engine;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine$2;->(Landroid/service/wallpaper/WallpaperService$Engine;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine$2;->dispatchWallpaperOffsets(FFFFZ)V +HSPLandroid/service/wallpaper/WallpaperService$Engine$3;->(Landroid/service/wallpaper/WallpaperService$Engine;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine$WallpaperInputEventReceiver;->(Landroid/service/wallpaper/WallpaperService$Engine;Landroid/view/InputChannel;Landroid/os/Looper;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->(Landroid/service/wallpaper/WallpaperService;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->(Landroid/service/wallpaper/WallpaperService;Ljava/util/function/Supplier;Landroid/os/Handler;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->attach(Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->doOffsetsChanged(Z)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->getSurfaceHolder()Landroid/view/SurfaceHolder; +HSPLandroid/service/wallpaper/WallpaperService$Engine;->isPreview()Z +HSPLandroid/service/wallpaper/WallpaperService$Engine;->onApplyWindowInsets(Landroid/view/WindowInsets;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->onCreate(Landroid/view/SurfaceHolder;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->onSurfaceChanged(Landroid/view/SurfaceHolder;III)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->onSurfaceCreated(Landroid/view/SurfaceHolder;)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->setOffsetNotificationsEnabled(Z)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->setTouchEventsEnabled(Z)V +HSPLandroid/service/wallpaper/WallpaperService$Engine;->updateSurface(ZZZ)V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->-get0(Landroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;)Lcom/android/internal/os/HandlerCaller; +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->(Landroid/service/wallpaper/WallpaperService;Landroid/service/wallpaper/WallpaperService;Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->executeMessage(Landroid/os/Message;)V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->reportShown()V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperEngineWrapper;->requestWallpaperColors()V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;->(Landroid/service/wallpaper/WallpaperService;Landroid/service/wallpaper/WallpaperService;)V +HSPLandroid/service/wallpaper/WallpaperService$IWallpaperServiceWrapper;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;)V +HSPLandroid/service/wallpaper/WallpaperService;->-get0(Landroid/service/wallpaper/WallpaperService;)Ljava/util/ArrayList; +HSPLandroid/service/wallpaper/WallpaperService;->()V +HSPLandroid/service/wallpaper/WallpaperService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/service/wallpaper/WallpaperService;->onCreate()V +HSPLandroid/service/wallpaper/WallpaperService;->onCreateEngine()Landroid/service/wallpaper/WallpaperService$Engine; +HSPLandroid/speech/SpeechRecognizer;->isRecognitionAvailable(Landroid/content/Context;)Z +HSPLandroid/speech/tts/AudioPlaybackHandler$MessageLoop;->(Landroid/speech/tts/AudioPlaybackHandler;)V +HSPLandroid/speech/tts/AudioPlaybackHandler$MessageLoop;->(Landroid/speech/tts/AudioPlaybackHandler;Landroid/speech/tts/AudioPlaybackHandler$MessageLoop;)V +HSPLandroid/speech/tts/AudioPlaybackHandler$MessageLoop;->run()V +HSPLandroid/speech/tts/AudioPlaybackHandler;->-get0(Landroid/speech/tts/AudioPlaybackHandler;)Ljava/util/concurrent/LinkedBlockingQueue; +HSPLandroid/speech/tts/AudioPlaybackHandler;->()V +HSPLandroid/speech/tts/AudioPlaybackHandler;->start()V +HSPLandroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/speech/tts/ITextToSpeechCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLandroid/speech/tts/ITextToSpeechCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/speech/tts/ITextToSpeechCallback; +HSPLandroid/speech/tts/ITextToSpeechCallback;->onAudioAvailable(Ljava/lang/String;[B)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onBeginSynthesis(Ljava/lang/String;III)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onError(Ljava/lang/String;I)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onRangeStart(Ljava/lang/String;III)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onStart(Ljava/lang/String;)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onStop(Ljava/lang/String;Z)V +HSPLandroid/speech/tts/ITextToSpeechCallback;->onSuccess(Ljava/lang/String;)V +HSPLandroid/speech/tts/ITextToSpeechService$Stub;->()V +HSPLandroid/speech/tts/ITextToSpeechService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/speech/tts/ITextToSpeechService;->getClientDefaultLanguage()[Ljava/lang/String; +HSPLandroid/speech/tts/ITextToSpeechService;->getDefaultVoiceNameFor(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/speech/tts/ITextToSpeechService;->getFeaturesForLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/speech/tts/ITextToSpeechService;->getLanguage()[Ljava/lang/String; +HSPLandroid/speech/tts/ITextToSpeechService;->getVoices()Ljava/util/List; +HSPLandroid/speech/tts/ITextToSpeechService;->isLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->isSpeaking()Z +HSPLandroid/speech/tts/ITextToSpeechService;->loadLanguage(Landroid/os/IBinder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->loadVoice(Landroid/os/IBinder;Ljava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->playAudio(Landroid/os/IBinder;Landroid/net/Uri;ILandroid/os/Bundle;Ljava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->playSilence(Landroid/os/IBinder;JILjava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->setCallback(Landroid/os/IBinder;Landroid/speech/tts/ITextToSpeechCallback;)V +HSPLandroid/speech/tts/ITextToSpeechService;->speak(Landroid/os/IBinder;Ljava/lang/CharSequence;ILandroid/os/Bundle;Ljava/lang/String;)I +HSPLandroid/speech/tts/ITextToSpeechService;->stop(Landroid/os/IBinder;)I +HSPLandroid/speech/tts/ITextToSpeechService;->synthesizeToFileDescriptor(Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;Ljava/lang/String;)I +HSPLandroid/speech/tts/TextToSpeechService$1;->(Landroid/speech/tts/TextToSpeechService;)V +HSPLandroid/speech/tts/TextToSpeechService$1;->checkNonNull([Ljava/lang/Object;)Z +HSPLandroid/speech/tts/TextToSpeechService$1;->getClientDefaultLanguage()[Ljava/lang/String; +HSPLandroid/speech/tts/TextToSpeechService$1;->getDefaultVoiceNameFor(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/speech/tts/TextToSpeechService$1;->setCallback(Landroid/os/IBinder;Landroid/speech/tts/ITextToSpeechCallback;)V +HSPLandroid/speech/tts/TextToSpeechService$CallbackMap;->(Landroid/speech/tts/TextToSpeechService;)V +HSPLandroid/speech/tts/TextToSpeechService$CallbackMap;->(Landroid/speech/tts/TextToSpeechService;Landroid/speech/tts/TextToSpeechService$CallbackMap;)V +HSPLandroid/speech/tts/TextToSpeechService$CallbackMap;->setCallback(Landroid/os/IBinder;Landroid/speech/tts/ITextToSpeechCallback;)V +HSPLandroid/speech/tts/TextToSpeechService$SynthHandler;->(Landroid/speech/tts/TextToSpeechService;Landroid/os/Looper;)V +HSPLandroid/speech/tts/TextToSpeechService$SynthThread;->(Landroid/speech/tts/TextToSpeechService;)V +HSPLandroid/speech/tts/TextToSpeechService$SynthThread;->onLooperPrepared()V +HSPLandroid/speech/tts/TextToSpeechService$SynthThread;->queueIdle()Z +HSPLandroid/speech/tts/TextToSpeechService;->-get1(Landroid/speech/tts/TextToSpeechService;)Landroid/speech/tts/TextToSpeechService$CallbackMap; +HSPLandroid/speech/tts/TextToSpeechService;->-wrap2(Landroid/speech/tts/TextToSpeechService;)[Ljava/lang/String; +HSPLandroid/speech/tts/TextToSpeechService;->()V +HSPLandroid/speech/tts/TextToSpeechService;->getSettingsLocale()[Ljava/lang/String; +HSPLandroid/speech/tts/TextToSpeechService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; +HSPLandroid/speech/tts/TextToSpeechService;->onCreate()V +HSPLandroid/speech/tts/TextToSpeechService;->onGetLanguage()[Ljava/lang/String; +HSPLandroid/speech/tts/TextToSpeechService;->onIsLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/speech/tts/TextToSpeechService;->onLoadLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/speech/tts/TextToSpeechService;->onStop()V +HSPLandroid/speech/tts/TextToSpeechService;->onSynthesizeText(Landroid/speech/tts/SynthesisRequest;Landroid/speech/tts/SynthesisCallback;)V +HSPLandroid/speech/tts/TtsEngines;->(Landroid/content/Context;)V +HSPLandroid/speech/tts/TtsEngines;->getLocalePrefForEngine(Ljava/lang/String;)Ljava/util/Locale; +HSPLandroid/speech/tts/TtsEngines;->getLocalePrefForEngine(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale; +HSPLandroid/speech/tts/TtsEngines;->parseEnginePrefFromList(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/speech/tts/TtsEngines;->toOldLocaleStringFormat(Ljava/util/Locale;)[Ljava/lang/String; +HSPLandroid/system/ErrnoException;->(Ljava/lang/String;I)V +HSPLandroid/system/GaiException;->(Ljava/lang/String;I)V +HSPLandroid/system/Os;->chmod(Ljava/lang/String;I)V +HSPLandroid/system/Os;->chown(Ljava/lang/String;II)V +HSPLandroid/system/Os;->close(Ljava/io/FileDescriptor;)V +HSPLandroid/system/Os;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HSPLandroid/system/Os;->getenv(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/system/Os;->getpid()I +HSPLandroid/system/Os;->getrlimit(I)Landroid/system/StructRlimit; +HSPLandroid/system/Os;->gettid()I +HSPLandroid/system/Os;->getuid()I +HSPLandroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/util/MutableInt;)I +HSPLandroid/system/Os;->listen(Ljava/io/FileDescriptor;I)V +HSPLandroid/system/Os;->mkdir(Ljava/lang/String;I)V +HSPLandroid/system/Os;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; +HSPLandroid/system/Os;->poll([Landroid/system/StructPollfd;I)I +HSPLandroid/system/Os;->prctl(IJJJJ)I +HSPLandroid/system/Os;->setenv(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLandroid/system/Os;->socket(III)Ljava/io/FileDescriptor; +HSPLandroid/system/Os;->stat(Ljava/lang/String;)Landroid/system/StructStat; +HSPLandroid/system/Os;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs; +HSPLandroid/system/Os;->sysconf(I)J +HSPLandroid/system/Os;->umask(I)I +HSPLandroid/system/OsConstants;->S_ISDIR(I)Z +HSPLandroid/system/StructAddrinfo;->()V +HSPLandroid/system/StructIfaddrs;->(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V +HSPLandroid/system/StructLinger;->(II)V +HSPLandroid/system/StructLinger;->isOn()Z +HSPLandroid/system/StructPollfd;->()V +HSPLandroid/system/StructRlimit;->(JJ)V +HSPLandroid/system/StructStat;->(JJIJIIJJLandroid/system/StructTimespec;Landroid/system/StructTimespec;Landroid/system/StructTimespec;JJ)V +HSPLandroid/system/StructStatVfs;->(JJJJJJJJJJJ)V +HSPLandroid/system/StructTimespec;->(JJ)V +HSPLandroid/system/StructTimespec;->equals(Ljava/lang/Object;)Z +HSPLandroid/telecom/Log$1;->()V +HSPLandroid/telecom/Log$1;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/telecom/Log$1;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void; +HSPLandroid/telecom/Log;->-set0(Ljava/security/MessageDigest;)Ljava/security/MessageDigest; +HSPLandroid/telecom/Log;->buildMessage(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/telecom/Log;->d(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/telecom/Log;->encodeHex([B)Ljava/lang/String; +HSPLandroid/telecom/Log;->getPrefixFromObject(Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/telecom/Log;->getSessionId()Ljava/lang/String; +HSPLandroid/telecom/Log;->i(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/telecom/Log;->initMd5Sum()V +HSPLandroid/telecom/Log;->isLoggable(I)Z +HSPLandroid/telecom/Log;->pii(Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/telecom/Log;->secureHash([B)Ljava/lang/String; +HSPLandroid/telecom/Log;->v(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLandroid/telecom/PhoneAccount$1;->()V +HSPLandroid/telecom/PhoneAccount$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/PhoneAccount; +HSPLandroid/telecom/PhoneAccount$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/telecom/PhoneAccount$Builder;->(Landroid/telecom/PhoneAccountHandle;Ljava/lang/CharSequence;)V +HSPLandroid/telecom/PhoneAccount$Builder;->addSupportedUriScheme(Ljava/lang/String;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->build()Landroid/telecom/PhoneAccount; +HSPLandroid/telecom/PhoneAccount$Builder;->setAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setCapabilities(I)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setExtras(Landroid/os/Bundle;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setGroupId(Ljava/lang/String;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setHighlightColor(I)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setIcon(Landroid/graphics/drawable/Icon;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setShortDescription(Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setSubscriptionAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount$Builder;->setSupportedUriSchemes(Ljava/util/List;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount;->(Landroid/os/Parcel;)V +HSPLandroid/telecom/PhoneAccount;->(Landroid/os/Parcel;Landroid/telecom/PhoneAccount;)V +HSPLandroid/telecom/PhoneAccount;->(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/net/Uri;ILandroid/graphics/drawable/Icon;ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/List;Landroid/os/Bundle;IZLjava/lang/String;)V +HSPLandroid/telecom/PhoneAccount;->(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/net/Uri;ILandroid/graphics/drawable/Icon;ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/List;Landroid/os/Bundle;IZLjava/lang/String;Landroid/telecom/PhoneAccount;)V +HSPLandroid/telecom/PhoneAccount;->audioRoutesToString()Ljava/lang/String; +HSPLandroid/telecom/PhoneAccount;->builder(Landroid/telecom/PhoneAccountHandle;Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder; +HSPLandroid/telecom/PhoneAccount;->capabilitiesToString()Ljava/lang/String; +HSPLandroid/telecom/PhoneAccount;->getAccountHandle()Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/PhoneAccount;->getExtras()Landroid/os/Bundle; +HSPLandroid/telecom/PhoneAccount;->hasAudioRoutes(I)Z +HSPLandroid/telecom/PhoneAccount;->hasCapabilities(I)Z +HSPLandroid/telecom/PhoneAccount;->toString()Ljava/lang/String; +HSPLandroid/telecom/PhoneAccount;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/telecom/PhoneAccountHandle$1;->()V +HSPLandroid/telecom/PhoneAccountHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/PhoneAccountHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/telecom/PhoneAccountHandle;->(Landroid/content/ComponentName;Ljava/lang/String;)V +HSPLandroid/telecom/PhoneAccountHandle;->(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/UserHandle;)V +HSPLandroid/telecom/PhoneAccountHandle;->(Landroid/os/Parcel;)V +HSPLandroid/telecom/PhoneAccountHandle;->(Landroid/os/Parcel;Landroid/telecom/PhoneAccountHandle;)V +HSPLandroid/telecom/PhoneAccountHandle;->checkParameters(Landroid/content/ComponentName;Landroid/os/UserHandle;)V +HSPLandroid/telecom/PhoneAccountHandle;->equals(Ljava/lang/Object;)Z +HSPLandroid/telecom/PhoneAccountHandle;->getComponentName()Landroid/content/ComponentName; +HSPLandroid/telecom/PhoneAccountHandle;->getId()Ljava/lang/String; +HSPLandroid/telecom/PhoneAccountHandle;->getUserHandle()Landroid/os/UserHandle; +HSPLandroid/telecom/PhoneAccountHandle;->toString()Ljava/lang/String; +HSPLandroid/telecom/PhoneAccountHandle;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/telecom/TelecomManager;->(Landroid/content/Context;)V +HSPLandroid/telecom/TelecomManager;->(Landroid/content/Context;Lcom/android/internal/telecom/ITelecomService;)V +HSPLandroid/telecom/TelecomManager;->from(Landroid/content/Context;)Landroid/telecom/TelecomManager; +HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts()Ljava/util/List; +HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts(Z)Ljava/util/List; +HSPLandroid/telecom/TelecomManager;->getCurrentTtyMode()I +HSPLandroid/telecom/TelecomManager;->getDefaultDialerPackage()Ljava/lang/String; +HSPLandroid/telecom/TelecomManager;->getDefaultOutgoingPhoneAccount(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/TelecomManager;->getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount; +HSPLandroid/telecom/TelecomManager;->getSimCallManager()Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/TelecomManager;->getTelecomService()Lcom/android/internal/telecom/ITelecomService; +HSPLandroid/telecom/TelecomManager;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle; +HSPLandroid/telecom/TelecomManager;->isInCall()Z +HSPLandroid/telecom/TelecomManager;->isServiceConnected()Z +HSPLandroid/telecom/TelecomManager;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V +HSPLandroid/telephony/CarrierConfigManager;->()V +HSPLandroid/telephony/CarrierConfigManager;->getConfig()Landroid/os/PersistableBundle; +HSPLandroid/telephony/CarrierConfigManager;->getConfigForSubId(I)Landroid/os/PersistableBundle; +HSPLandroid/telephony/CarrierConfigManager;->getDefaultConfig()Landroid/os/PersistableBundle; +HSPLandroid/telephony/CarrierConfigManager;->getICarrierConfigLoader()Lcom/android/internal/telephony/ICarrierConfigLoader; +HSPLandroid/telephony/CarrierConfigManager;->updateConfigForPhoneId(ILjava/lang/String;)V +HSPLandroid/telephony/CellLocation;->()V +HSPLandroid/telephony/CellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V +HSPLandroid/telephony/CellLocation;->isEmpty()Z +HSPLandroid/telephony/CellLocation;->setStateInvalid()V +HSPLandroid/telephony/ClientRequestStats$1;->()V +HSPLandroid/telephony/ClientRequestStats;->()V +HSPLandroid/telephony/ClientRequestStats;->addCompletedWakelockTime(J)V +HSPLandroid/telephony/ClientRequestStats;->incrementCompletedRequestsCount()V +HSPLandroid/telephony/ClientRequestStats;->setCallingPackage(Ljava/lang/String;)V +HSPLandroid/telephony/ClientRequestStats;->updateRequestHistograms(II)V +HSPLandroid/telephony/PhoneNumberFormattingTextWatcher;->(Ljava/lang/String;)V +HSPLandroid/telephony/PhoneStateListener$1;->(Landroid/telephony/PhoneStateListener;Landroid/os/Looper;)V +HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->(Landroid/telephony/PhoneStateListener;)V +HSPLandroid/telephony/PhoneStateListener;->()V +HSPLandroid/telephony/PhoneStateListener;->(Landroid/os/Looper;)V +HSPLandroid/telephony/PhoneStateListener;->(Ljava/lang/Integer;Landroid/os/Looper;)V +HSPLandroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/telephony/Rlog;->isLoggable(Ljava/lang/String;I)Z +HSPLandroid/telephony/Rlog;->v(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/telephony/ServiceState$1;->()V +HSPLandroid/telephony/ServiceState;->()V +HSPLandroid/telephony/ServiceState;->equals(Ljava/lang/Object;)Z +HSPLandroid/telephony/ServiceState;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroid/telephony/ServiceState;->getCdmaDefaultRoamingIndicator()I +HSPLandroid/telephony/ServiceState;->getCdmaEriIconIndex()I +HSPLandroid/telephony/ServiceState;->getCdmaEriIconMode()I +HSPLandroid/telephony/ServiceState;->getCdmaRoamingIndicator()I +HSPLandroid/telephony/ServiceState;->getCssIndicator()I +HSPLandroid/telephony/ServiceState;->getDataOperatorAlphaLong()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getDataOperatorAlphaShort()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getDataOperatorNumeric()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getDataRegState()I +HSPLandroid/telephony/ServiceState;->getDataRoaming()Z +HSPLandroid/telephony/ServiceState;->getDataRoamingFromRegistration()Z +HSPLandroid/telephony/ServiceState;->getDataRoamingType()I +HSPLandroid/telephony/ServiceState;->getIsManualSelection()Z +HSPLandroid/telephony/ServiceState;->getLteEarfcnRsrpBoost()I +HSPLandroid/telephony/ServiceState;->getNetworkId()I +HSPLandroid/telephony/ServiceState;->getOperatorAlpha()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getRilDataRadioTechnology()I +HSPLandroid/telephony/ServiceState;->getRilVoiceRadioTechnology()I +HSPLandroid/telephony/ServiceState;->getRoaming()Z +HSPLandroid/telephony/ServiceState;->getRoamingLogString(I)Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getState()I +HSPLandroid/telephony/ServiceState;->getSystemId()I +HSPLandroid/telephony/ServiceState;->getVoiceOperatorAlphaLong()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getVoiceOperatorAlphaShort()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getVoiceOperatorNumeric()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->getVoiceRegState()I +HSPLandroid/telephony/ServiceState;->getVoiceRoaming()Z +HSPLandroid/telephony/ServiceState;->getVoiceRoamingType()I +HSPLandroid/telephony/ServiceState;->isCdma(I)Z +HSPLandroid/telephony/ServiceState;->isEmergencyOnly()Z +HSPLandroid/telephony/ServiceState;->isGsm(I)Z +HSPLandroid/telephony/ServiceState;->isLte(I)Z +HSPLandroid/telephony/ServiceState;->isUsingCarrierAggregation()Z +HSPLandroid/telephony/ServiceState;->mergeServiceStates(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState; +HSPLandroid/telephony/ServiceState;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/ServiceState; +HSPLandroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->rilServiceStateToString(I)Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->setCdmaDefaultRoamingIndicator(I)V +HSPLandroid/telephony/ServiceState;->setCdmaEriIconIndex(I)V +HSPLandroid/telephony/ServiceState;->setCdmaEriIconMode(I)V +HSPLandroid/telephony/ServiceState;->setCdmaRoamingIndicator(I)V +HSPLandroid/telephony/ServiceState;->setCssIndicator(I)V +HSPLandroid/telephony/ServiceState;->setDataOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/telephony/ServiceState;->setDataRegState(I)V +HSPLandroid/telephony/ServiceState;->setDataRoaming(Z)V +HSPLandroid/telephony/ServiceState;->setDataRoamingFromRegistration(Z)V +HSPLandroid/telephony/ServiceState;->setEmergencyOnly(Z)V +HSPLandroid/telephony/ServiceState;->setFromNotifierBundle(Landroid/os/Bundle;)V +HSPLandroid/telephony/ServiceState;->setIsManualSelection(Z)V +HSPLandroid/telephony/ServiceState;->setIsUsingCarrierAggregation(Z)V +HSPLandroid/telephony/ServiceState;->setLteEarfcnRsrpBoost(I)V +HSPLandroid/telephony/ServiceState;->setNullState(I)V +HSPLandroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/telephony/ServiceState;->setRilDataRadioTechnology(I)V +HSPLandroid/telephony/ServiceState;->setRilVoiceRadioTechnology(I)V +HSPLandroid/telephony/ServiceState;->setStateOff()V +HSPLandroid/telephony/ServiceState;->setStateOutOfService()V +HSPLandroid/telephony/ServiceState;->setSystemAndNetworkId(II)V +HSPLandroid/telephony/ServiceState;->setVoiceOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/telephony/ServiceState;->setVoiceRegState(I)V +HSPLandroid/telephony/ServiceState;->setVoiceRoaming(Z)V +HSPLandroid/telephony/ServiceState;->toString()Ljava/lang/String; +HSPLandroid/telephony/ServiceState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/telephony/SignalStrength$1;->()V +HSPLandroid/telephony/SignalStrength;->()V +HSPLandroid/telephony/SignalStrength;->(IIIIIIIIIIIIIZ)V +HSPLandroid/telephony/SignalStrength;->(Z)V +HSPLandroid/telephony/SignalStrength;->equals(Ljava/lang/Object;)Z +HSPLandroid/telephony/SignalStrength;->initialize(IIIIIIIIIIIIIZ)V +HSPLandroid/telephony/SignalStrength;->setGsm(Z)V +HSPLandroid/telephony/SignalStrength;->setLteRsrpBoost(I)V +HSPLandroid/telephony/SignalStrength;->toString()Ljava/lang/String; +HSPLandroid/telephony/SignalStrength;->validateInput()V +HSPLandroid/telephony/SignalStrength;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/telephony/SmsManager;->(I)V +HSPLandroid/telephony/SmsManager;->getDefaultSmsSubscriptionId()I +HSPLandroid/telephony/SubscriptionInfo$1;->()V +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1;->(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1;->handleMessage(Landroid/os/Message;)V +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$2;->(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$2;->onSubscriptionsChanged()V +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;->-get0(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)Landroid/os/Handler; +HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;->()V +HSPLandroid/telephony/SubscriptionManager;->(Landroid/content/Context;)V +HSPLandroid/telephony/SubscriptionManager;->addOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V +HSPLandroid/telephony/SubscriptionManager;->from(Landroid/content/Context;)Landroid/telephony/SubscriptionManager; +HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionIdList()[I +HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfo(I)Landroid/telephony/SubscriptionInfo; +HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoCount()I +HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoForSimSlotIndex(I)Landroid/telephony/SubscriptionInfo; +HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoList()Ljava/util/List; +HSPLandroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultSmsSubscriptionId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultSubscriptionId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I +HSPLandroid/telephony/SubscriptionManager;->getDefaultVoiceSubscriptionId()I +HSPLandroid/telephony/SubscriptionManager;->getPhoneId(I)I +HSPLandroid/telephony/SubscriptionManager;->getSimStateForSlotIndex(I)I +HSPLandroid/telephony/SubscriptionManager;->getSlotIndex(I)I +HSPLandroid/telephony/SubscriptionManager;->getSubId(I)[I +HSPLandroid/telephony/SubscriptionManager;->isUsableSubIdValue(I)Z +HSPLandroid/telephony/SubscriptionManager;->isValidPhoneId(I)Z +HSPLandroid/telephony/SubscriptionManager;->isValidSlotIndex(I)Z +HSPLandroid/telephony/SubscriptionManager;->isValidSubscriptionId(I)Z +HSPLandroid/telephony/SubscriptionManager;->logd(Ljava/lang/String;)V +HSPLandroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;I)V +HSPLandroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;II)V +HSPLandroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V +HSPLandroid/telephony/TelephonyHistogram$1;->()V +HSPLandroid/telephony/TelephonyHistogram;->(III)V +HSPLandroid/telephony/TelephonyHistogram;->addTimeTaken(I)V +HSPLandroid/telephony/TelephonyHistogram;->addToBucketCounter([I[II)V +HSPLandroid/telephony/TelephonyHistogram;->calculateBucketEndPoints([I)V +HSPLandroid/telephony/TelephonyManager$MultiSimVariants;->(Ljava/lang/String;I)V +HSPLandroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants; +HSPLandroid/telephony/TelephonyManager;->-getandroid-telephony-TelephonyManager$MultiSimVariantsSwitchesValues()[I +HSPLandroid/telephony/TelephonyManager;->()V +HSPLandroid/telephony/TelephonyManager;->(Landroid/content/Context;)V +HSPLandroid/telephony/TelephonyManager;->(Landroid/content/Context;I)V +HSPLandroid/telephony/TelephonyManager;->checkCarrierPrivilegesForPackage(Ljava/lang/String;)I +HSPLandroid/telephony/TelephonyManager;->checkCarrierPrivilegesForPackageAnyPhone(Ljava/lang/String;)I +HSPLandroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager; +HSPLandroid/telephony/TelephonyManager;->getCallState()I +HSPLandroid/telephony/TelephonyManager;->getCarrierPackageNamesForIntentAndPhone(Landroid/content/Intent;I)Ljava/util/List; +HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneType()I +HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneType(I)I +HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneTypeForSlot(I)I +HSPLandroid/telephony/TelephonyManager;->getDataNetworkType(I)I +HSPLandroid/telephony/TelephonyManager;->getDefault()Landroid/telephony/TelephonyManager; +HSPLandroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getDeviceId(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony; +HSPLandroid/telephony/TelephonyManager;->getImsServiceControllerAndListen(IILcom/android/ims/internal/IImsServiceFeatureListener;)Lcom/android/ims/internal/IImsServiceController; +HSPLandroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getLteOnCdmaModeStatic()I +HSPLandroid/telephony/TelephonyManager;->getMergedSubscriberIds()[Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getMultiSimConfiguration()Landroid/telephony/TelephonyManager$MultiSimVariants; +HSPLandroid/telephony/TelephonyManager;->getNetworkCountryIso()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkCountryIso(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkCountryIsoForPhone(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkOperator()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorForPhone(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorName()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorName(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getOpPackageName()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getOtaSpNumberSchemaForPhone(ILjava/lang/String;)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getPhoneCount()I +HSPLandroid/telephony/TelephonyManager;->getPhoneId()I +HSPLandroid/telephony/TelephonyManager;->getPhoneId(I)I +HSPLandroid/telephony/TelephonyManager;->getPhoneType()I +HSPLandroid/telephony/TelephonyManager;->getPhoneType(I)I +HSPLandroid/telephony/TelephonyManager;->getProcCmdLine()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimCount()I +HSPLandroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimCountryIsoForPhone(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperator()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorName()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorName(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorNameForPhone(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumeric()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumeric(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumericForPhone(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSimState()I +HSPLandroid/telephony/TelephonyManager;->getSimState(I)I +HSPLandroid/telephony/TelephonyManager;->getSlotIndex()I +HSPLandroid/telephony/TelephonyManager;->getSmsReceiveCapableForPhone(IZ)Z +HSPLandroid/telephony/TelephonyManager;->getSmsSendCapableForPhone(IZ)Z +HSPLandroid/telephony/TelephonyManager;->getSubId()I +HSPLandroid/telephony/TelephonyManager;->getSubId(I)I +HSPLandroid/telephony/TelephonyManager;->getSubscriberId()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSubscriberId(I)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo; +HSPLandroid/telephony/TelephonyManager;->getTelecomService()Lcom/android/internal/telecom/ITelecomService; +HSPLandroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->getVisualVoicemailPackageName()Ljava/lang/String; +HSPLandroid/telephony/TelephonyManager;->isMultiSimEnabled()Z +HSPLandroid/telephony/TelephonyManager;->isSmsCapable()Z +HSPLandroid/telephony/TelephonyManager;->isVoiceCapable()Z +HSPLandroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V +HSPLandroid/telephony/TelephonyManager;->requestModemActivityInfo(Landroid/os/ResultReceiver;)V +HSPLandroid/telephony/TelephonyManager;->setBasebandVersionForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setNetworkCountryIsoForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setNetworkOperatorNameForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setNetworkOperatorNumericForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setNetworkRoamingForPhone(IZ)V +HSPLandroid/telephony/TelephonyManager;->setPhoneType(II)V +HSPLandroid/telephony/TelephonyManager;->setSimCountryIsoForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setSimOperatorNameForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setSimOperatorNumericForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setSimStateForPhone(ILjava/lang/String;)V +HSPLandroid/telephony/TelephonyManager;->setTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/telephony/euicc/EuiccManager;->(Landroid/content/Context;)V +HSPLandroid/telephony/euicc/EuiccManager;->isEnabled()Z +HSPLandroid/telephony/gsm/GsmCellLocation;->()V +HSPLandroid/telephony/gsm/GsmCellLocation;->equals(Ljava/lang/Object;)Z +HSPLandroid/telephony/gsm/GsmCellLocation;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLandroid/telephony/gsm/GsmCellLocation;->setLacAndCid(II)V +HSPLandroid/telephony/gsm/GsmCellLocation;->setPsc(I)V +HSPLandroid/telephony/gsm/GsmCellLocation;->setStateInvalid()V +HSPLandroid/telephony/ims/ImsService$1;->(Landroid/telephony/ims/ImsService;)V +HSPLandroid/telephony/ims/ImsService$1;->addRegistrationListener(IILcom/android/ims/internal/IImsRegistrationListener;)V +HSPLandroid/telephony/ims/ImsService$1;->createImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLandroid/telephony/ims/ImsService$1;->getEcbmInterface(II)Lcom/android/ims/internal/IImsEcbm; +HSPLandroid/telephony/ims/ImsService$1;->getFeatureStatus(II)I +HSPLandroid/telephony/ims/ImsService$1;->getMultiEndpointInterface(II)Lcom/android/ims/internal/IImsMultiEndpoint; +HSPLandroid/telephony/ims/ImsService$1;->setUiTTYMode(IIILandroid/os/Message;)V +HSPLandroid/telephony/ims/ImsService$1;->startSession(IILandroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I +HSPLandroid/telephony/ims/ImsService;->-get0(Landroid/telephony/ims/ImsService;)Landroid/util/SparseArray; +HSPLandroid/telephony/ims/ImsService;->-wrap0(Landroid/telephony/ims/ImsService;II)Landroid/telephony/ims/feature/MMTelFeature; +HSPLandroid/telephony/ims/ImsService;->-wrap1(Landroid/telephony/ims/ImsService;Ljava/lang/String;)V +HSPLandroid/telephony/ims/ImsService;->-wrap2(Landroid/telephony/ims/ImsService;IILcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLandroid/telephony/ims/ImsService;->()V +HSPLandroid/telephony/ims/ImsService;->enforceReadPhoneStatePermission(Ljava/lang/String;)V +HSPLandroid/telephony/ims/ImsService;->getImsFeatureFromType(Landroid/util/SparseArray;I)Landroid/telephony/ims/feature/ImsFeature; +HSPLandroid/telephony/ims/ImsService;->getImsFeatureMap(I)Landroid/util/SparseArray; +HSPLandroid/telephony/ims/ImsService;->makeImsFeature(II)Landroid/telephony/ims/feature/ImsFeature; +HSPLandroid/telephony/ims/ImsService;->onCreateImsFeatureInternal(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLandroid/telephony/ims/ImsService;->resolveImsFeature(Landroid/util/SparseArray;ILjava/lang/Class;)Landroid/telephony/ims/feature/ImsFeature; +HSPLandroid/telephony/ims/ImsService;->resolveMMTelFeature(II)Landroid/telephony/ims/feature/MMTelFeature; +HSPLandroid/telephony/ims/ImsServiceProxy$1;->(Landroid/telephony/ims/ImsServiceProxy;)V +HSPLandroid/telephony/ims/ImsServiceProxy$INotifyStatusChanged;->notifyStatusChanged()V +HSPLandroid/telephony/ims/ImsServiceProxy;->(II)V +HSPLandroid/telephony/ims/ImsServiceProxy;->addRegistrationListener(Lcom/android/ims/internal/IImsRegistrationListener;)V +HSPLandroid/telephony/ims/ImsServiceProxy;->checkServiceIsReady()V +HSPLandroid/telephony/ims/ImsServiceProxy;->getConfigInterface()Lcom/android/ims/internal/IImsConfig; +HSPLandroid/telephony/ims/ImsServiceProxy;->getEcbmInterface()Lcom/android/ims/internal/IImsEcbm; +HSPLandroid/telephony/ims/ImsServiceProxy;->getFeatureStatus()I +HSPLandroid/telephony/ims/ImsServiceProxy;->getListener()Lcom/android/ims/internal/IImsServiceFeatureListener; +HSPLandroid/telephony/ims/ImsServiceProxy;->getMultiEndpointInterface()Lcom/android/ims/internal/IImsMultiEndpoint; +HSPLandroid/telephony/ims/ImsServiceProxy;->getServiceInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceController; +HSPLandroid/telephony/ims/ImsServiceProxy;->isBinderAlive()Z +HSPLandroid/telephony/ims/ImsServiceProxy;->isBinderReady()Z +HSPLandroid/telephony/ims/ImsServiceProxy;->retrieveFeatureStatus()Ljava/lang/Integer; +HSPLandroid/telephony/ims/ImsServiceProxy;->setBinder(Landroid/os/IBinder;)V +HSPLandroid/telephony/ims/ImsServiceProxy;->setStatusCallback(Landroid/telephony/ims/ImsServiceProxy$INotifyStatusChanged;)V +HSPLandroid/telephony/ims/ImsServiceProxy;->setUiTTYMode(ILandroid/os/Message;)V +HSPLandroid/telephony/ims/ImsServiceProxy;->startSession(Landroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I +HSPLandroid/telephony/ims/ImsServiceProxyCompat;->(ILandroid/os/IBinder;)V +HSPLandroid/telephony/ims/feature/ImsFeature;->()V +HSPLandroid/telephony/ims/feature/ImsFeature;->addImsFeatureStatusCallback(Lcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLandroid/telephony/ims/feature/ImsFeature;->getFeatureState()I +HSPLandroid/telephony/ims/feature/ImsFeature;->notifyFeatureState(I)V +HSPLandroid/telephony/ims/feature/ImsFeature;->sendImsServiceIntent(I)V +HSPLandroid/telephony/ims/feature/ImsFeature;->setContext(Landroid/content/Context;)V +HSPLandroid/telephony/ims/feature/ImsFeature;->setFeatureState(I)V +HSPLandroid/telephony/ims/feature/ImsFeature;->setSlotId(I)V +HSPLandroid/telephony/ims/feature/MMTelFeature;->()V +HSPLandroid/telephony/ims/stub/ImsConfigImplBase;->()V +HSPLandroid/telephony/ims/stub/ImsEcbmImplBase;->()V +HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;->()V +HSPLandroid/telephony/ims/stub/ImsUtImplBase;->()V +HSPLandroid/telephony/ims/stub/ImsUtListenerImplBase;->()V +HSPLandroid/test/InstrumentationTestCase;->()V +HSPLandroid/test/InstrumentationTestCase;->injectInstrumentation(Landroid/app/Instrumentation;)V +HSPLandroid/test/InstrumentationTestCase;->runMethod(Ljava/lang/reflect/Method;IZ)V +HSPLandroid/test/InstrumentationTestCase;->runTest()V +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->(Ljava/lang/CharSequence;Z)V +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->dirTypeBackward()B +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->dirTypeForward()B +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getCachedDirectionality(C)B +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getEntryDir()I +HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getExitDir()I +HSPLandroid/text/BidiFormatter;->(ZILandroid/text/TextDirectionHeuristic;)V +HSPLandroid/text/BidiFormatter;->getDefaultInstanceFromContext(Z)Landroid/text/BidiFormatter; +HSPLandroid/text/BidiFormatter;->getEntryDir(Ljava/lang/CharSequence;)I +HSPLandroid/text/BidiFormatter;->getExitDir(Ljava/lang/CharSequence;)I +HSPLandroid/text/BidiFormatter;->getInstance(Z)Landroid/text/BidiFormatter; +HSPLandroid/text/BidiFormatter;->getStereoReset()Z +HSPLandroid/text/BidiFormatter;->markAfter(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String; +HSPLandroid/text/BidiFormatter;->markBefore(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String; +HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/CharSequence; +HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/String; +HSPLandroid/text/BoringLayout$Metrics;->-wrap0(Landroid/text/BoringLayout$Metrics;)V +HSPLandroid/text/BoringLayout$Metrics;->()V +HSPLandroid/text/BoringLayout$Metrics;->reset()V +HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V +HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V +HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/text/BoringLayout;->ellipsized(II)V +HSPLandroid/text/BoringLayout;->getEllipsizedWidth()I +HSPLandroid/text/BoringLayout;->getHeight()I +HSPLandroid/text/BoringLayout;->getLineContainsTab(I)Z +HSPLandroid/text/BoringLayout;->getLineCount()I +HSPLandroid/text/BoringLayout;->getLineDescent(I)I +HSPLandroid/text/BoringLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/BoringLayout;->getLineMax(I)F +HSPLandroid/text/BoringLayout;->getLineStart(I)I +HSPLandroid/text/BoringLayout;->getLineTop(I)I +HSPLandroid/text/BoringLayout;->getLineWidth(I)F +HSPLandroid/text/BoringLayout;->getParagraphDirection(I)I +HSPLandroid/text/BoringLayout;->hasAnyInterestingChars(Ljava/lang/CharSequence;I)Z +HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZZ)V +HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; +HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; +HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; +HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; +HSPLandroid/text/ClipboardManager;->()V +HSPLandroid/text/ClipboardManager;->getText()Ljava/lang/CharSequence; +HSPLandroid/text/ClipboardManager;->hasText()Z +HSPLandroid/text/ClipboardManager;->setText(Ljava/lang/CharSequence;)V +HSPLandroid/text/DynamicLayout$ChangeWatcher;->(Landroid/text/DynamicLayout;)V +HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V +HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/text/DynamicLayout;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZIIILandroid/text/TextUtils$TruncateAt;I)V +HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V +HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/DynamicLayout;->createBlocks()V +HSPLandroid/text/DynamicLayout;->getBlockEndLines()[I +HSPLandroid/text/DynamicLayout;->getBlockIndices()[I +HSPLandroid/text/DynamicLayout;->getBlocksAlwaysNeedToBeRedrawn()Landroid/util/ArraySet; +HSPLandroid/text/DynamicLayout;->getContentMayProtrudeFromTopOrBottom(I)Z +HSPLandroid/text/DynamicLayout;->getEllipsizedWidth()I +HSPLandroid/text/DynamicLayout;->getHyphen(I)I +HSPLandroid/text/DynamicLayout;->getIndexFirstChangedBlock()I +HSPLandroid/text/DynamicLayout;->getLineContainsTab(I)Z +HSPLandroid/text/DynamicLayout;->getLineCount()I +HSPLandroid/text/DynamicLayout;->getLineDescent(I)I +HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/DynamicLayout;->getLineStart(I)I +HSPLandroid/text/DynamicLayout;->getLineTop(I)I +HSPLandroid/text/DynamicLayout;->getNumberOfBlocks()I +HSPLandroid/text/DynamicLayout;->getParagraphDirection(I)I +HSPLandroid/text/DynamicLayout;->reflow(Ljava/lang/CharSequence;III)V +HSPLandroid/text/DynamicLayout;->setIndexFirstChangedBlock(I)V +HSPLandroid/text/DynamicLayout;->updateAlwaysNeedsToBeRedrawn(I)V +HSPLandroid/text/DynamicLayout;->updateBlocks(III)V +HSPLandroid/text/Editable$Factory;->()V +HSPLandroid/text/Editable$Factory;->getInstance()Landroid/text/Editable$Factory; +HSPLandroid/text/Editable$Factory;->newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable; +HSPLandroid/text/Editable;->append(C)Landroid/text/Editable; +HSPLandroid/text/Editable;->append(Ljava/lang/CharSequence;)Landroid/text/Editable; +HSPLandroid/text/Editable;->append(Ljava/lang/CharSequence;II)Landroid/text/Editable; +HSPLandroid/text/Editable;->clear()V +HSPLandroid/text/Editable;->clearSpans()V +HSPLandroid/text/Editable;->delete(II)Landroid/text/Editable; +HSPLandroid/text/Editable;->getFilters()[Landroid/text/InputFilter; +HSPLandroid/text/Editable;->insert(ILjava/lang/CharSequence;)Landroid/text/Editable; +HSPLandroid/text/Editable;->insert(ILjava/lang/CharSequence;II)Landroid/text/Editable; +HSPLandroid/text/Editable;->replace(IILjava/lang/CharSequence;)Landroid/text/Editable; +HSPLandroid/text/Editable;->replace(IILjava/lang/CharSequence;II)Landroid/text/Editable; +HSPLandroid/text/Editable;->setFilters([Landroid/text/InputFilter;)V +HSPLandroid/text/GetChars;->getChars(II[CI)V +HSPLandroid/text/GraphicsOperations;->drawText(Landroid/graphics/BaseCanvas;IIFFLandroid/graphics/Paint;)V +HSPLandroid/text/GraphicsOperations;->drawTextRun(Landroid/graphics/BaseCanvas;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/text/GraphicsOperations;->getTextRunAdvances(IIIIZ[FILandroid/graphics/Paint;)F +HSPLandroid/text/GraphicsOperations;->getTextRunCursor(IIIIILandroid/graphics/Paint;)I +HSPLandroid/text/GraphicsOperations;->getTextWidths(II[FLandroid/graphics/Paint;)I +HSPLandroid/text/GraphicsOperations;->measureText(IILandroid/graphics/Paint;)F +HSPLandroid/text/Hyphenator;->get(Ljava/util/Locale;)Landroid/text/Hyphenator; +HSPLandroid/text/Hyphenator;->getNativePtr()J +HSPLandroid/text/InputFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence; +HSPLandroid/text/Layout$Alignment;->(Ljava/lang/String;I)V +HSPLandroid/text/Layout$Alignment;->values()[Landroid/text/Layout$Alignment; +HSPLandroid/text/Layout$Ellipsizer;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/Layout$Ellipsizer;->length()I +HSPLandroid/text/Layout$SpannedEllipsizer;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/Layout$SpannedEllipsizer;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/Layout$SpannedEllipsizer;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/Layout;->-getandroid-text-Layout$AlignmentSwitchesValues()[I +HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V +HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FF)V +HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;III)V +HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V +HSPLandroid/text/Layout;->getBottomPadding()I +HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V +HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F +HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;)F +HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F +HSPLandroid/text/Layout;->getEllipsisCount(I)I +HSPLandroid/text/Layout;->getEllipsisStart(I)I +HSPLandroid/text/Layout;->getHeight()I +HSPLandroid/text/Layout;->getHeight(Z)I +HSPLandroid/text/Layout;->getHorizontal(IZIZ)F +HSPLandroid/text/Layout;->getHorizontal(IZZ)F +HSPLandroid/text/Layout;->getHyphen(I)I +HSPLandroid/text/Layout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I +HSPLandroid/text/Layout;->getLineBaseline(I)I +HSPLandroid/text/Layout;->getLineBottom(I)I +HSPLandroid/text/Layout;->getLineContainsTab(I)Z +HSPLandroid/text/Layout;->getLineCount()I +HSPLandroid/text/Layout;->getLineDescent(I)I +HSPLandroid/text/Layout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/Layout;->getLineEnd(I)I +HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F +HSPLandroid/text/Layout;->getLineExtent(IZ)F +HSPLandroid/text/Layout;->getLineForOffset(I)I +HSPLandroid/text/Layout;->getLineForVertical(I)I +HSPLandroid/text/Layout;->getLineLeft(I)F +HSPLandroid/text/Layout;->getLineMax(I)F +HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J +HSPLandroid/text/Layout;->getLineRight(I)F +HSPLandroid/text/Layout;->getLineStart(I)I +HSPLandroid/text/Layout;->getLineStartPos(III)I +HSPLandroid/text/Layout;->getLineTop(I)I +HSPLandroid/text/Layout;->getLineVisibleEnd(I)I +HSPLandroid/text/Layout;->getLineVisibleEnd(III)I +HSPLandroid/text/Layout;->getLineWidth(I)F +HSPLandroid/text/Layout;->getPaint()Landroid/text/TextPaint; +HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment; +HSPLandroid/text/Layout;->getParagraphDirection(I)I +HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I +HSPLandroid/text/Layout;->getParagraphLeft(I)I +HSPLandroid/text/Layout;->getParagraphRight(I)I +HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F +HSPLandroid/text/Layout;->getSpacingAdd()F +HSPLandroid/text/Layout;->getSpacingMultiplier()F +HSPLandroid/text/Layout;->getText()Ljava/lang/CharSequence; +HSPLandroid/text/Layout;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; +HSPLandroid/text/Layout;->getTopPadding()I +HSPLandroid/text/Layout;->getWidth()I +HSPLandroid/text/Layout;->increaseWidthTo(I)V +HSPLandroid/text/Layout;->isJustificationRequired(I)Z +HSPLandroid/text/Layout;->isLevelBoundary(I)Z +HSPLandroid/text/Layout;->measurePara(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)F +HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z +HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V +HSPLandroid/text/Layout;->setJustificationMode(I)V +HSPLandroid/text/Layout;->shouldClampCursor(I)Z +HSPLandroid/text/MeasuredText;->()V +HSPLandroid/text/MeasuredText;->addStyleRun(Landroid/text/TextPaint;ILandroid/graphics/Paint$FontMetricsInt;)F +HSPLandroid/text/MeasuredText;->addStyleRun(Landroid/text/TextPaint;[Landroid/text/style/MetricAffectingSpan;ILandroid/graphics/Paint$FontMetricsInt;)F +HSPLandroid/text/MeasuredText;->breakText(IZF)I +HSPLandroid/text/MeasuredText;->finish()V +HSPLandroid/text/MeasuredText;->obtain()Landroid/text/MeasuredText; +HSPLandroid/text/MeasuredText;->recycle(Landroid/text/MeasuredText;)Landroid/text/MeasuredText; +HSPLandroid/text/MeasuredText;->setPara(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/StaticLayout$Builder;)V +HSPLandroid/text/NoCopySpan$Concrete;->()V +HSPLandroid/text/PackedIntVector;->(I)V +HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V +HSPLandroid/text/PackedIntVector;->deleteAt(II)V +HSPLandroid/text/PackedIntVector;->getValue(II)I +HSPLandroid/text/PackedIntVector;->growBuffer()V +HSPLandroid/text/PackedIntVector;->insertAt(I[I)V +HSPLandroid/text/PackedIntVector;->moveRowGapTo(I)V +HSPLandroid/text/PackedIntVector;->moveValueGapTo(II)V +HSPLandroid/text/PackedIntVector;->setValueInternal(III)V +HSPLandroid/text/PackedIntVector;->size()I +HSPLandroid/text/PackedIntVector;->width()I +HSPLandroid/text/PackedObjectVector;->(I)V +HSPLandroid/text/PackedObjectVector;->deleteAt(II)V +HSPLandroid/text/PackedObjectVector;->getValue(II)Ljava/lang/Object; +HSPLandroid/text/PackedObjectVector;->growBuffer()V +HSPLandroid/text/PackedObjectVector;->insertAt(I[Ljava/lang/Object;)V +HSPLandroid/text/PackedObjectVector;->moveRowGapTo(I)V +HSPLandroid/text/PackedObjectVector;->setValue(IILjava/lang/Object;)V +HSPLandroid/text/PackedObjectVector;->size()I +HSPLandroid/text/Selection$END;->()V +HSPLandroid/text/Selection$END;->(Landroid/text/Selection$END;)V +HSPLandroid/text/Selection$START;->()V +HSPLandroid/text/Selection$START;->(Landroid/text/Selection$START;)V +HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I +HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I +HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;I)V +HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;II)V +HSPLandroid/text/SpanSet;->(Ljava/lang/Class;)V +HSPLandroid/text/SpanSet;->getNextTransition(II)I +HSPLandroid/text/SpanSet;->hasSpansIntersecting(II)Z +HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V +HSPLandroid/text/SpanSet;->recycle()V +HSPLandroid/text/Spannable$Factory;->()V +HSPLandroid/text/Spannable$Factory;->getInstance()Landroid/text/Spannable$Factory; +HSPLandroid/text/Spannable$Factory;->newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable; +HSPLandroid/text/Spannable;->removeSpan(Ljava/lang/Object;)V +HSPLandroid/text/Spannable;->setSpan(Ljava/lang/Object;III)V +HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/SpannableString;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/SpannableString;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/SpannableString;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/SpannableString;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannableString;->setSpan(Ljava/lang/Object;III)V +HSPLandroid/text/SpannableString;->valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringBuilder;->()V +HSPLandroid/text/SpannableStringBuilder;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/SpannableStringBuilder;->(Ljava/lang/CharSequence;II)V +HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->calcMax(I)I +HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V +HSPLandroid/text/SpannableStringBuilder;->charAt(I)C +HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V +HSPLandroid/text/SpannableStringBuilder;->checkSortBuffer([II)[I +HSPLandroid/text/SpannableStringBuilder;->compareSpans(II[I[I)I +HSPLandroid/text/SpannableStringBuilder;->countSpans(IILjava/lang/Class;I)I +HSPLandroid/text/SpannableStringBuilder;->getChars(II[CI)V +HSPLandroid/text/SpannableStringBuilder;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringBuilder;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringBuilder;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;Z)[Ljava/lang/Object; +HSPLandroid/text/SpannableStringBuilder;->getSpansRec(IILjava/lang/Class;I[Ljava/lang/Object;[I[IIZ)I +HSPLandroid/text/SpannableStringBuilder;->hasNonExclusiveExclusiveSpanAt(Ljava/lang/CharSequence;I)Z +HSPLandroid/text/SpannableStringBuilder;->invalidateIndex(I)V +HSPLandroid/text/SpannableStringBuilder;->isInvalidParagraph(II)Z +HSPLandroid/text/SpannableStringBuilder;->leftChild(I)I +HSPLandroid/text/SpannableStringBuilder;->length()I +HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V +HSPLandroid/text/SpannableStringBuilder;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/SpannableStringBuilder;->nextSpanTransitionRec(IILjava/lang/Class;I)I +HSPLandroid/text/SpannableStringBuilder;->obtain(I)[I +HSPLandroid/text/SpannableStringBuilder;->recycle([I)V +HSPLandroid/text/SpannableStringBuilder;->removeSpan(I)V +HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;)V +HSPLandroid/text/SpannableStringBuilder;->removeSpansForChange(IIZI)Z +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->resolveGap(I)I +HSPLandroid/text/SpannableStringBuilder;->restoreInvariants()V +HSPLandroid/text/SpannableStringBuilder;->rightChild(I)I +HSPLandroid/text/SpannableStringBuilder;->sendAfterTextChanged([Landroid/text/TextWatcher;)V +HSPLandroid/text/SpannableStringBuilder;->sendBeforeTextChanged([Landroid/text/TextWatcher;III)V +HSPLandroid/text/SpannableStringBuilder;->sendSpanAdded(Ljava/lang/Object;II)V +HSPLandroid/text/SpannableStringBuilder;->sendSpanChanged(Ljava/lang/Object;IIII)V +HSPLandroid/text/SpannableStringBuilder;->sendSpanRemoved(Ljava/lang/Object;II)V +HSPLandroid/text/SpannableStringBuilder;->sendTextChanged([Landroid/text/TextWatcher;III)V +HSPLandroid/text/SpannableStringBuilder;->sendToSpanWatchers(III)V +HSPLandroid/text/SpannableStringBuilder;->setFilters([Landroid/text/InputFilter;)V +HSPLandroid/text/SpannableStringBuilder;->setSpan(Ljava/lang/Object;III)V +HSPLandroid/text/SpannableStringBuilder;->setSpan(ZLjava/lang/Object;IIIZ)V +HSPLandroid/text/SpannableStringBuilder;->siftDown(I[Ljava/lang/Object;I[I[I)V +HSPLandroid/text/SpannableStringBuilder;->sort([Ljava/lang/Object;[I[I)V +HSPLandroid/text/SpannableStringBuilder;->subSequence(II)Ljava/lang/CharSequence; +HSPLandroid/text/SpannableStringBuilder;->toString()Ljava/lang/String; +HSPLandroid/text/SpannableStringBuilder;->treeRoot()I +HSPLandroid/text/SpannableStringBuilder;->updatedIntervalBound(IIIIZZ)I +HSPLandroid/text/SpannableStringInternal;->(Ljava/lang/CharSequence;II)V +HSPLandroid/text/SpannableStringInternal;->charAt(I)C +HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V +HSPLandroid/text/SpannableStringInternal;->copySpans(Landroid/text/SpannableStringInternal;II)V +HSPLandroid/text/SpannableStringInternal;->copySpans(Landroid/text/Spanned;II)V +HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V +HSPLandroid/text/SpannableStringInternal;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringInternal;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringInternal;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannableStringInternal;->length()I +HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V +HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;III)V +HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V +HSPLandroid/text/SpannableStringInternal;->toString()Ljava/lang/String; +HSPLandroid/text/Spanned;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/Spanned;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/Spanned;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/Spanned;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/Spanned;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/SpannedString;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/SpannedString;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/SpannedString;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/SpannedString;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/SpannedString;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannedString;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/StaticLayout$Builder;->-wrap1(Landroid/text/StaticLayout$Builder;Landroid/os/LocaleList;)V +HSPLandroid/text/StaticLayout$Builder;->()V +HSPLandroid/text/StaticLayout$Builder;->addReplacementRun(IIF)V +HSPLandroid/text/StaticLayout$Builder;->addStyleRun(Landroid/text/TextPaint;IIZ)F +HSPLandroid/text/StaticLayout$Builder;->build()Landroid/text/StaticLayout; +HSPLandroid/text/StaticLayout$Builder;->finish()V +HSPLandroid/text/StaticLayout$Builder;->getHyphenators(Landroid/os/LocaleList;)[J +HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V +HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setEllipsizedWidth(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setHyphenationFrequency(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setIncludePad(Z)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setJustificationMode(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setLocales(Landroid/os/LocaleList;)V +HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setPaint(Landroid/text/TextPaint;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setText(Ljava/lang/CharSequence;II)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$Builder;->setWidth(I)Landroid/text/StaticLayout$Builder; +HSPLandroid/text/StaticLayout$LineBreaks;->()V +HSPLandroid/text/StaticLayout;->-wrap0(JJJIIZ)F +HSPLandroid/text/StaticLayout;->-wrap1()J +HSPLandroid/text/StaticLayout;->-wrap3(JIIF)V +HSPLandroid/text/StaticLayout;->-wrap4(J)V +HSPLandroid/text/StaticLayout;->-wrap7(JLjava/lang/String;[J)V +HSPLandroid/text/StaticLayout;->(Landroid/text/StaticLayout$Builder;)V +HSPLandroid/text/StaticLayout;->(Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout;)V +HSPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;)V +HSPLandroid/text/StaticLayout;->calculateEllipsis(II[FIFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V +HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V +HSPLandroid/text/StaticLayout;->getBottomPadding()I +HSPLandroid/text/StaticLayout;->getEllipsisCount(I)I +HSPLandroid/text/StaticLayout;->getEllipsisStart(I)I +HSPLandroid/text/StaticLayout;->getEllipsizedWidth()I +HSPLandroid/text/StaticLayout;->getHeight(Z)I +HSPLandroid/text/StaticLayout;->getHyphen(I)I +HSPLandroid/text/StaticLayout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I +HSPLandroid/text/StaticLayout;->getLineContainsTab(I)Z +HSPLandroid/text/StaticLayout;->getLineCount()I +HSPLandroid/text/StaticLayout;->getLineDescent(I)I +HSPLandroid/text/StaticLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/StaticLayout;->getLineForVertical(I)I +HSPLandroid/text/StaticLayout;->getLineStart(I)I +HSPLandroid/text/StaticLayout;->getLineTop(I)I +HSPLandroid/text/StaticLayout;->getParagraphDirection(I)I +HSPLandroid/text/StaticLayout;->getTopPadding()I +HSPLandroid/text/StaticLayout;->getTotalInsets(I)F +HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;IZ[BIZIZZ[C[FILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I +HSPLandroid/text/TextDirectionHeuristic;->isRtl(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/TextDirectionHeuristic;->isRtl([CII)Z +HSPLandroid/text/TextDirectionHeuristics$AnyStrong;->(Z)V +HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->()V +HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;)V +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;Z)V +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;ZLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;)V +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->()V +HSPLandroid/text/TextDirectionHeuristics;->-wrap0(I)I +HSPLandroid/text/TextDirectionHeuristics;->isRtlCodePoint(I)I +HSPLandroid/text/TextLine$DecorationInfo;->()V +HSPLandroid/text/TextLine$DecorationInfo;->(Landroid/text/TextLine$DecorationInfo;)V +HSPLandroid/text/TextLine$DecorationInfo;->hasDecoration()Z +HSPLandroid/text/TextLine;->()V +HSPLandroid/text/TextLine;->adjustHyphenEdit(III)I +HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V +HSPLandroid/text/TextLine;->drawRun(Landroid/graphics/Canvas;IIZFIIIZ)F +HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V +HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V +HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V +HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI)F +HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F +HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F +HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F +HSPLandroid/text/TextLine;->isLineEndSpace(C)Z +HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;)F +HSPLandroid/text/TextLine;->measureRun(IIIZLandroid/graphics/Paint$FontMetricsInt;)F +HSPLandroid/text/TextLine;->metrics(Landroid/graphics/Paint$FontMetricsInt;)F +HSPLandroid/text/TextLine;->obtain()Landroid/text/TextLine; +HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine; +HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;)V +HSPLandroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt;IIIII)V +HSPLandroid/text/TextPaint;->()V +HSPLandroid/text/TextPaint;->(I)V +HSPLandroid/text/TextPaint;->hasEqualAttributes(Landroid/text/TextPaint;)Z +HSPLandroid/text/TextPaint;->set(Landroid/text/TextPaint;)V +HSPLandroid/text/TextPaint;->setUnderlineText(IF)V +HSPLandroid/text/TextUtils$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/text/TextUtils$EllipsizeCallback;->ellipsized(II)V +HSPLandroid/text/TextUtils$SimpleStringSplitter;->(C)V +HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/String; +HSPLandroid/text/TextUtils$SimpleStringSplitter;->setString(Ljava/lang/String;)V +HSPLandroid/text/TextUtils$StringSplitter;->setString(Ljava/lang/String;)V +HSPLandroid/text/TextUtils$TruncateAt;->(Ljava/lang/String;I)V +HSPLandroid/text/TextUtils;->copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V +HSPLandroid/text/TextUtils;->couldAffectRtl(C)Z +HSPLandroid/text/TextUtils;->delimitedStringContains(Ljava/lang/String;CLjava/lang/String;)Z +HSPLandroid/text/TextUtils;->doesNotNeedBidi([CII)Z +HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;Landroid/text/TextDirectionHeuristic;Ljava/lang/String;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z +HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V +HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;C)I +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I +HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z +HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String; +HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I +HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CII)I +HSPLandroid/text/TextUtils;->obtain(I)[C +HSPLandroid/text/TextUtils;->packRangeInLong(II)J +HSPLandroid/text/TextUtils;->recycle([C)V +HSPLandroid/text/TextUtils;->removeEmptySpans([Ljava/lang/Object;Landroid/text/Spanned;Ljava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/TextUtils;->setPara(Landroid/text/MeasuredText;Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)F +HSPLandroid/text/TextUtils;->split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLandroid/text/TextUtils;->split(Ljava/lang/String;Ljava/util/regex/Pattern;)[Ljava/lang/String; +HSPLandroid/text/TextUtils;->stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->trimNoCopySpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->unpackRangeEndFromLong(J)I +HSPLandroid/text/TextUtils;->unpackRangeStartFromLong(J)I +HSPLandroid/text/TextUtils;->writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V +HSPLandroid/text/TextWatcher;->afterTextChanged(Landroid/text/Editable;)V +HSPLandroid/text/TextWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/text/TextWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->getMonthString(Llibcore/icu/LocaleData;III)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat; +HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Context;)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Context;I)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->getYearString(II)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->hasDesignator(Ljava/lang/CharSequence;C)Z +HSPLandroid/text/format/DateFormat;->hasSeconds(Ljava/lang/CharSequence;)Z +HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z +HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z +HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String; +HSPLandroid/text/format/DateUtils;->formatElapsedTime(J)Ljava/lang/String; +HSPLandroid/text/format/DateUtils;->formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String; +HSPLandroid/text/format/DateUtils;->initFormatStrings()V +HSPLandroid/text/format/DateUtils;->initFormatStringsLocked()V +HSPLandroid/text/format/Formatter$RoundedBytesResult;->(FLandroid/icu/util/MeasureUnit;IJ)V +HSPLandroid/text/format/Formatter$RoundedBytesResult;->roundBytes(JI)Landroid/text/format/Formatter$RoundedBytesResult; +HSPLandroid/text/format/Formatter;->bidiWrap(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;J)Ljava/lang/String; +HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;JI)Ljava/lang/String; +HSPLandroid/text/format/Formatter;->formatMeasureShort(Ljava/util/Locale;Landroid/icu/text/NumberFormat;FLandroid/icu/util/MeasureUnit;)Ljava/lang/String; +HSPLandroid/text/format/Formatter;->formatRoundedBytesResult(Landroid/content/Context;Landroid/text/format/Formatter$RoundedBytesResult;)Ljava/lang/String; +HSPLandroid/text/format/Formatter;->getNumberFormatter(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat; +HSPLandroid/text/format/Formatter;->localeFromContext(Landroid/content/Context;)Ljava/util/Locale; +HSPLandroid/text/format/Time$TimeCalculator;->(Ljava/lang/String;)V +HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V +HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsToTime(Landroid/text/format/Time;)V +HSPLandroid/text/format/Time$TimeCalculator;->format(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/Time$TimeCalculator;->lookupZoneInfo(Ljava/lang/String;)Llibcore/util/ZoneInfo; +HSPLandroid/text/format/Time$TimeCalculator;->setTimeInMillis(J)V +HSPLandroid/text/format/Time$TimeCalculator;->updateZoneInfoFromTimeZone()V +HSPLandroid/text/format/Time;->()V +HSPLandroid/text/format/Time;->(Ljava/lang/String;)V +HSPLandroid/text/format/Time;->format(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/Time;->getCurrentTimezone()Ljava/lang/String; +HSPLandroid/text/format/Time;->getJulianDay(JJ)I +HSPLandroid/text/format/Time;->initialize(Ljava/lang/String;)V +HSPLandroid/text/format/Time;->set(J)V +HSPLandroid/text/format/Time;->setToNow()V +HSPLandroid/text/format/TimeFormatter;->()V +HSPLandroid/text/format/TimeFormatter;->format(Ljava/lang/String;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)Ljava/lang/String; +HSPLandroid/text/format/TimeFormatter;->formatInternal(Ljava/lang/String;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)V +HSPLandroid/text/format/TimeFormatter;->getFormat(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/text/format/TimeFormatter;->handleToken(Ljava/nio/CharBuffer;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)Z +HSPLandroid/text/method/AllCapsTransformationMethod;->(Landroid/content/Context;)V +HSPLandroid/text/method/AllCapsTransformationMethod;->getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence; +HSPLandroid/text/method/AllCapsTransformationMethod;->setLengthChangesAllowed(Z)V +HSPLandroid/text/method/ArrowKeyMovementMethod;->()V +HSPLandroid/text/method/ArrowKeyMovementMethod;->canSelectArbitrarily()Z +HSPLandroid/text/method/ArrowKeyMovementMethod;->getInstance()Landroid/text/method/MovementMethod; +HSPLandroid/text/method/ArrowKeyMovementMethod;->initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V +HSPLandroid/text/method/ArrowKeyMovementMethod;->onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V +HSPLandroid/text/method/BaseKeyListener;->()V +HSPLandroid/text/method/BaseMovementMethod;->()V +HSPLandroid/text/method/DialerKeyListener;->()V +HSPLandroid/text/method/DialerKeyListener;->getInputType()I +HSPLandroid/text/method/KeyListener;->clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V +HSPLandroid/text/method/KeyListener;->getInputType()I +HSPLandroid/text/method/KeyListener;->onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HSPLandroid/text/method/KeyListener;->onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z +HSPLandroid/text/method/KeyListener;->onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z +HSPLandroid/text/method/LinkMovementMethod;->()V +HSPLandroid/text/method/LinkMovementMethod;->getInstance()Landroid/text/method/MovementMethod; +HSPLandroid/text/method/MetaKeyKeyListener;->()V +HSPLandroid/text/method/MetaKeyKeyListener;->getActive(Ljava/lang/CharSequence;Ljava/lang/Object;II)I +HSPLandroid/text/method/MetaKeyKeyListener;->getMetaState(Ljava/lang/CharSequence;I)I +HSPLandroid/text/method/MetaKeyKeyListener;->isMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z +HSPLandroid/text/method/MetaKeyKeyListener;->resetMetaState(Landroid/text/Spannable;)V +HSPLandroid/text/method/MovementMethod;->onGenericMotionEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z +HSPLandroid/text/method/MovementMethod;->onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z +HSPLandroid/text/method/MovementMethod;->onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z +HSPLandroid/text/method/MovementMethod;->onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z +HSPLandroid/text/method/MovementMethod;->onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z +HSPLandroid/text/method/NumberKeyListener;->()V +HSPLandroid/text/method/NumberKeyListener;->getAcceptedChars()[C +HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->(Ljava/lang/CharSequence;[C[C)V +HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->charAt(I)C +HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->getChars(II[CI)V +HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->length()I +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->(Landroid/text/Spanned;[C[C)V +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanStart(Ljava/lang/Object;)I +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/method/ReplacementTransformationMethod;->()V +HSPLandroid/text/method/ReplacementTransformationMethod;->getOriginal()[C +HSPLandroid/text/method/ReplacementTransformationMethod;->getReplacement()[C +HSPLandroid/text/method/ReplacementTransformationMethod;->getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence; +HSPLandroid/text/method/ReplacementTransformationMethod;->onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V +HSPLandroid/text/method/ScrollingMovementMethod;->()V +HSPLandroid/text/method/SingleLineTransformationMethod;->()V +HSPLandroid/text/method/SingleLineTransformationMethod;->getInstance()Landroid/text/method/SingleLineTransformationMethod; +HSPLandroid/text/method/SingleLineTransformationMethod;->getOriginal()[C +HSPLandroid/text/method/SingleLineTransformationMethod;->getReplacement()[C +HSPLandroid/text/method/TextKeyListener$Capitalize;->(Ljava/lang/String;I)V +HSPLandroid/text/method/TextKeyListener$Capitalize;->values()[Landroid/text/method/TextKeyListener$Capitalize; +HSPLandroid/text/method/TextKeyListener;->(Landroid/text/method/TextKeyListener$Capitalize;Z)V +HSPLandroid/text/method/TextKeyListener;->getInstance()Landroid/text/method/TextKeyListener; +HSPLandroid/text/method/TextKeyListener;->getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener; +HSPLandroid/text/method/TextKeyListener;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/text/method/TextKeyListener;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V +HSPLandroid/text/method/TextKeyListener;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/text/method/TransformationMethod2;->setLengthChangesAllowed(Z)V +HSPLandroid/text/style/BackgroundColorSpan;->(I)V +HSPLandroid/text/style/CharacterStyle;->()V +HSPLandroid/text/style/CharacterStyle;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/DynamicDrawableSpan;->(I)V +HSPLandroid/text/style/DynamicDrawableSpan;->getCachedDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/text/style/DynamicDrawableSpan;->getDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/text/style/DynamicDrawableSpan;->getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I +HSPLandroid/text/style/ForegroundColorSpan;->(I)V +HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/MetricAffectingSpan;->()V +HSPLandroid/text/style/MetricAffectingSpan;->updateMeasureState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/RelativeSizeSpan;->(F)V +HSPLandroid/text/style/RelativeSizeSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/ReplacementSpan;->()V +HSPLandroid/text/style/ReplacementSpan;->draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V +HSPLandroid/text/style/ReplacementSpan;->getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I +HSPLandroid/text/style/StyleSpan;->(I)V +HSPLandroid/text/style/StyleSpan;->apply(Landroid/graphics/Paint;I)V +HSPLandroid/text/style/StyleSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/TtsSpan$Builder;->(Ljava/lang/String;)V +HSPLandroid/text/style/TtsSpan$Builder;->build()Landroid/text/style/TtsSpan; +HSPLandroid/text/style/TtsSpan$Builder;->setStringArgument(Ljava/lang/String;Ljava/lang/String;)Landroid/text/style/TtsSpan$Builder; +HSPLandroid/text/style/TtsSpan$SemioticClassBuilder;->(Ljava/lang/String;)V +HSPLandroid/text/style/TtsSpan$VerbatimBuilder;->()V +HSPLandroid/text/style/TtsSpan$VerbatimBuilder;->(Ljava/lang/String;)V +HSPLandroid/text/style/TtsSpan$VerbatimBuilder;->setVerbatim(Ljava/lang/String;)Landroid/text/style/TtsSpan$VerbatimBuilder; +HSPLandroid/text/style/TtsSpan;->(Ljava/lang/String;Landroid/os/PersistableBundle;)V +HSPLandroid/text/style/TypefaceSpan;->(Ljava/lang/String;)V +HSPLandroid/text/style/TypefaceSpan;->apply(Landroid/graphics/Paint;Ljava/lang/String;)V +HSPLandroid/text/style/TypefaceSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/transition/AutoTransition;->()V +HSPLandroid/transition/AutoTransition;->init()V +HSPLandroid/transition/ChangeBounds$1;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds$2;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds$3;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds$4;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds$5;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds$6;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeBounds;->()V +HSPLandroid/transition/ChangeBounds;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/ChangeBounds;->setResizeClip(Z)V +HSPLandroid/transition/ChangeClipBounds;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/ChangeImageTransform$1;->()V +HSPLandroid/transition/ChangeImageTransform$2;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeImageTransform;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/ChangeTransform$1;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeTransform$2;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/transition/ChangeTransform;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/Fade;->(I)V +HSPLandroid/transition/Fade;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/PathMotion;->()V +HSPLandroid/transition/PathMotion;->getPath(FFFF)Landroid/graphics/Path; +HSPLandroid/transition/Scene;->(Landroid/view/ViewGroup;Landroid/view/View;)V +HSPLandroid/transition/Scene;->enter()V +HSPLandroid/transition/Scene;->getSceneRoot()Landroid/view/ViewGroup; +HSPLandroid/transition/Scene;->setCurrentScene(Landroid/view/View;Landroid/transition/Scene;)V +HSPLandroid/transition/Transition$1;->()V +HSPLandroid/transition/Transition$TransitionListener;->onTransitionCancel(Landroid/transition/Transition;)V +HSPLandroid/transition/Transition$TransitionListener;->onTransitionEnd(Landroid/transition/Transition;)V +HSPLandroid/transition/Transition$TransitionListener;->onTransitionPause(Landroid/transition/Transition;)V +HSPLandroid/transition/Transition$TransitionListener;->onTransitionResume(Landroid/transition/Transition;)V +HSPLandroid/transition/Transition$TransitionListener;->onTransitionStart(Landroid/transition/Transition;)V +HSPLandroid/transition/Transition;->()V +HSPLandroid/transition/Transition;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/Transition;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; +HSPLandroid/transition/Transition;->addTarget(Landroid/view/View;)Landroid/transition/Transition; +HSPLandroid/transition/Transition;->captureEndValues(Landroid/transition/TransitionValues;)V +HSPLandroid/transition/Transition;->captureStartValues(Landroid/transition/TransitionValues;)V +HSPLandroid/transition/Transition;->setDuration(J)Landroid/transition/Transition; +HSPLandroid/transition/Transition;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition; +HSPLandroid/transition/TransitionInflater;->(Landroid/content/Context;)V +HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater; +HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition; +HSPLandroid/transition/TransitionManager;->()V +HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;)V +HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V +HSPLandroid/transition/TransitionManager;->endTransitions(Landroid/view/ViewGroup;)V +HSPLandroid/transition/TransitionManager;->getRunningTransitions()Landroid/util/ArrayMap; +HSPLandroid/transition/TransitionSet;->()V +HSPLandroid/transition/TransitionSet;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/TransitionSet;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->addTarget(Landroid/view/View;)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->addTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->getTransitionCount()I +HSPLandroid/transition/TransitionSet;->setDuration(J)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionSet;->setOrdering(I)Landroid/transition/TransitionSet; +HSPLandroid/transition/TransitionValuesMaps;->()V +HSPLandroid/transition/Visibility;->()V +HSPLandroid/transition/Visibility;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/Visibility;->getMode()I +HSPLandroid/transition/Visibility;->setMode(I)V +HSPLandroid/util/AndroidException;->(Ljava/lang/String;)V +HSPLandroid/util/AndroidRuntimeException;->(Ljava/lang/String;)V +HSPLandroid/util/ArrayMap$1;->(Landroid/util/ArrayMap;)V +HSPLandroid/util/ArrayMap$1;->colGetEntry(II)Ljava/lang/Object; +HSPLandroid/util/ArrayMap$1;->colGetSize()I +HSPLandroid/util/ArrayMap;->()V +HSPLandroid/util/ArrayMap;->(I)V +HSPLandroid/util/ArrayMap;->(IZ)V +HSPLandroid/util/ArrayMap;->(Landroid/util/ArrayMap;)V +HSPLandroid/util/ArrayMap;->allocArrays(I)V +HSPLandroid/util/ArrayMap;->append(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/util/ArrayMap;->binarySearchHashes([III)I +HSPLandroid/util/ArrayMap;->clear()V +HSPLandroid/util/ArrayMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroid/util/ArrayMap;->ensureCapacity(I)V +HSPLandroid/util/ArrayMap;->entrySet()Ljava/util/Set; +HSPLandroid/util/ArrayMap;->erase()V +HSPLandroid/util/ArrayMap;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroid/util/ArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->getCollection()Landroid/util/MapCollections; +HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I +HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I +HSPLandroid/util/ArrayMap;->indexOfNull()I +HSPLandroid/util/ArrayMap;->isEmpty()Z +HSPLandroid/util/ArrayMap;->keyAt(I)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->keySet()Ljava/util/Set; +HSPLandroid/util/ArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->putAll(Landroid/util/ArrayMap;)V +HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V +HSPLandroid/util/ArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->removeAt(I)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->size()I +HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String; +HSPLandroid/util/ArrayMap;->validate()V +HSPLandroid/util/ArrayMap;->valueAt(I)Ljava/lang/Object; +HSPLandroid/util/ArrayMap;->values()Ljava/util/Collection; +HSPLandroid/util/ArraySet$1;->(Landroid/util/ArraySet;)V +HSPLandroid/util/ArraySet$1;->colGetEntry(II)Ljava/lang/Object; +HSPLandroid/util/ArraySet$1;->colGetSize()I +HSPLandroid/util/ArraySet;->()V +HSPLandroid/util/ArraySet;->(I)V +HSPLandroid/util/ArraySet;->(IZ)V +HSPLandroid/util/ArraySet;->(Landroid/util/ArraySet;)V +HSPLandroid/util/ArraySet;->(Ljava/util/Collection;)V +HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z +HSPLandroid/util/ArraySet;->addAll(Landroid/util/ArraySet;)V +HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z +HSPLandroid/util/ArraySet;->allocArrays(I)V +HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V +HSPLandroid/util/ArraySet;->clear()V +HSPLandroid/util/ArraySet;->contains(Ljava/lang/Object;)Z +HSPLandroid/util/ArraySet;->ensureCapacity(I)V +HSPLandroid/util/ArraySet;->equals(Ljava/lang/Object;)Z +HSPLandroid/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V +HSPLandroid/util/ArraySet;->getCollection()Landroid/util/MapCollections; +HSPLandroid/util/ArraySet;->indexOf(Ljava/lang/Object;)I +HSPLandroid/util/ArraySet;->indexOf(Ljava/lang/Object;I)I +HSPLandroid/util/ArraySet;->indexOfNull()I +HSPLandroid/util/ArraySet;->isEmpty()Z +HSPLandroid/util/ArraySet;->iterator()Ljava/util/Iterator; +HSPLandroid/util/ArraySet;->remove(Ljava/lang/Object;)Z +HSPLandroid/util/ArraySet;->removeAt(I)Ljava/lang/Object; +HSPLandroid/util/ArraySet;->retainAll(Ljava/util/Collection;)Z +HSPLandroid/util/ArraySet;->size()I +HSPLandroid/util/ArraySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLandroid/util/ArraySet;->valueAt(I)Ljava/lang/Object; +HSPLandroid/util/AtomicFile;->(Ljava/io/File;)V +HSPLandroid/util/AtomicFile;->getBaseFile()Ljava/io/File; +HSPLandroid/util/AtomicFile;->openRead()Ljava/io/FileInputStream; +HSPLandroid/util/AttributeSet;->getAttributeBooleanValue(IZ)Z +HSPLandroid/util/AttributeSet;->getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z +HSPLandroid/util/AttributeSet;->getAttributeCount()I +HSPLandroid/util/AttributeSet;->getAttributeFloatValue(IF)F +HSPLandroid/util/AttributeSet;->getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F +HSPLandroid/util/AttributeSet;->getAttributeIntValue(II)I +HSPLandroid/util/AttributeSet;->getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/util/AttributeSet;->getAttributeListValue(I[Ljava/lang/String;I)I +HSPLandroid/util/AttributeSet;->getAttributeListValue(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)I +HSPLandroid/util/AttributeSet;->getAttributeName(I)Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getAttributeNameResource(I)I +HSPLandroid/util/AttributeSet;->getAttributeResourceValue(II)I +HSPLandroid/util/AttributeSet;->getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/util/AttributeSet;->getAttributeUnsignedIntValue(II)I +HSPLandroid/util/AttributeSet;->getAttributeUnsignedIntValue(Ljava/lang/String;Ljava/lang/String;I)I +HSPLandroid/util/AttributeSet;->getAttributeValue(I)Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getClassAttribute()Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getIdAttribute()Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getIdAttributeResourceValue(I)I +HSPLandroid/util/AttributeSet;->getPositionDescription()Ljava/lang/String; +HSPLandroid/util/AttributeSet;->getStyleAttribute()I +HSPLandroid/util/Base64$Coder;->()V +HSPLandroid/util/Base64$Coder;->maxOutputSize(I)I +HSPLandroid/util/Base64$Coder;->process([BIIZ)Z +HSPLandroid/util/Base64$Decoder;->(I[B)V +HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z +HSPLandroid/util/Base64$Encoder;->(I[B)V +HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z +HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B +HSPLandroid/util/Base64;->decode([BI)[B +HSPLandroid/util/Base64;->decode([BIII)[B +HSPLandroid/util/Base64;->encode([BI)[B +HSPLandroid/util/Base64;->encode([BIII)[B +HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String; +HSPLandroid/util/ContainerHelpers;->binarySearch([III)I +HSPLandroid/util/ContainerHelpers;->binarySearch([JIJ)I +HSPLandroid/util/DebugUtils;->buildShortClassTag(Ljava/lang/Object;Ljava/lang/StringBuilder;)V +HSPLandroid/util/DebugUtils;->flagsToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/util/DebugUtils;->valueToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/util/DisplayMetrics;->()V +HSPLandroid/util/DisplayMetrics;->setTo(Landroid/util/DisplayMetrics;)V +HSPLandroid/util/DisplayMetrics;->setToDefaults()V +HSPLandroid/util/FastImmutableArraySet$FastIterator;->([Ljava/lang/Object;)V +HSPLandroid/util/FastImmutableArraySet$FastIterator;->hasNext()Z +HSPLandroid/util/FastImmutableArraySet$FastIterator;->next()Ljava/lang/Object; +HSPLandroid/util/FastImmutableArraySet;->([Ljava/lang/Object;)V +HSPLandroid/util/FastImmutableArraySet;->iterator()Ljava/util/Iterator; +HSPLandroid/util/FloatProperty;->(Ljava/lang/String;)V +HSPLandroid/util/IconDrawableFactory;->(Landroid/content/Context;Z)V +HSPLandroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;)Landroid/util/IconDrawableFactory; +HSPLandroid/util/IntArray;->()V +HSPLandroid/util/IntArray;->(I)V +HSPLandroid/util/IntArray;->add(I)V +HSPLandroid/util/IntArray;->add(II)V +HSPLandroid/util/IntArray;->binarySearch(I)I +HSPLandroid/util/IntArray;->checkBounds(I)V +HSPLandroid/util/IntArray;->clear()V +HSPLandroid/util/IntArray;->ensureCapacity(I)V +HSPLandroid/util/IntArray;->get(I)I +HSPLandroid/util/IntArray;->size()I +HSPLandroid/util/IntProperty;->(Ljava/lang/String;)V +HSPLandroid/util/JsonReader;->-getandroid-util-JsonScopeSwitchesValues()[I +HSPLandroid/util/JsonReader;->(Ljava/io/Reader;)V +HSPLandroid/util/JsonReader;->advance()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->beginArray()V +HSPLandroid/util/JsonReader;->beginObject()V +HSPLandroid/util/JsonReader;->close()V +HSPLandroid/util/JsonReader;->decodeLiteral()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->decodeNumber([CII)Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->endObject()V +HSPLandroid/util/JsonReader;->expect(Landroid/util/JsonToken;)V +HSPLandroid/util/JsonReader;->fillBuffer(I)Z +HSPLandroid/util/JsonReader;->hasNext()Z +HSPLandroid/util/JsonReader;->nextInArray(Z)Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->nextInObject(Z)Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->nextInt()I +HSPLandroid/util/JsonReader;->nextLiteral(Z)Ljava/lang/String; +HSPLandroid/util/JsonReader;->nextName()Ljava/lang/String; +HSPLandroid/util/JsonReader;->nextNonWhitespace()I +HSPLandroid/util/JsonReader;->nextString()Ljava/lang/String; +HSPLandroid/util/JsonReader;->nextString(C)Ljava/lang/String; +HSPLandroid/util/JsonReader;->nextValue()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->objectValue()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->peek()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->peekStack()Landroid/util/JsonScope; +HSPLandroid/util/JsonReader;->pop()Landroid/util/JsonScope; +HSPLandroid/util/JsonReader;->push(Landroid/util/JsonScope;)V +HSPLandroid/util/JsonReader;->readEscapeCharacter()C +HSPLandroid/util/JsonReader;->readLiteral()Landroid/util/JsonToken; +HSPLandroid/util/JsonReader;->replaceTop(Landroid/util/JsonScope;)V +HSPLandroid/util/JsonScope;->(Ljava/lang/String;I)V +HSPLandroid/util/JsonScope;->values()[Landroid/util/JsonScope; +HSPLandroid/util/JsonToken;->(Ljava/lang/String;I)V +HSPLandroid/util/KeyValueListParser;->(C)V +HSPLandroid/util/LauncherIcons;->(Landroid/content/Context;)V +HSPLandroid/util/LocalLog;->(I)V +HSPLandroid/util/LocalLog;->append(Ljava/lang/String;)V +HSPLandroid/util/LocalLog;->log(Ljava/lang/String;)V +HSPLandroid/util/Log$ImmediateLogWriter;->(IILjava/lang/String;)V +HSPLandroid/util/Log$ImmediateLogWriter;->flush()V +HSPLandroid/util/Log$ImmediateLogWriter;->getWritten()I +HSPLandroid/util/Log$ImmediateLogWriter;->write([CII)V +HSPLandroid/util/Log$TerribleFailureHandler;->onTerribleFailure(Ljava/lang/String;Landroid/util/Log$TerribleFailure;Z)V +HSPLandroid/util/Log;->-wrap0()I +HSPLandroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String; +HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/LogPrinter;->(ILjava/lang/String;)V +HSPLandroid/util/LongArray;->()V +HSPLandroid/util/LongArray;->(I)V +HSPLandroid/util/LongArray;->add(IJ)V +HSPLandroid/util/LongArray;->add(J)V +HSPLandroid/util/LongArray;->checkBounds(I)V +HSPLandroid/util/LongArray;->clear()V +HSPLandroid/util/LongArray;->ensureCapacity(I)V +HSPLandroid/util/LongArray;->get(I)J +HSPLandroid/util/LongArray;->size()I +HSPLandroid/util/LongSparseArray;->()V +HSPLandroid/util/LongSparseArray;->(I)V +HSPLandroid/util/LongSparseArray;->clear()V +HSPLandroid/util/LongSparseArray;->delete(J)V +HSPLandroid/util/LongSparseArray;->gc()V +HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object; +HSPLandroid/util/LongSparseArray;->get(JLjava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/LongSparseArray;->indexOfKey(J)I +HSPLandroid/util/LongSparseArray;->put(JLjava/lang/Object;)V +HSPLandroid/util/LongSparseArray;->size()I +HSPLandroid/util/LongSparseArray;->valueAt(I)Ljava/lang/Object; +HSPLandroid/util/LongSparseLongArray;->()V +HSPLandroid/util/LongSparseLongArray;->(I)V +HSPLandroid/util/LongSparseLongArray;->append(JJ)V +HSPLandroid/util/LongSparseLongArray;->clear()V +HSPLandroid/util/LongSparseLongArray;->clone()Landroid/util/LongSparseLongArray; +HSPLandroid/util/LongSparseLongArray;->get(JJ)J +HSPLandroid/util/LongSparseLongArray;->indexOfKey(J)I +HSPLandroid/util/LongSparseLongArray;->put(JJ)V +HSPLandroid/util/LongSparseLongArray;->size()I +HSPLandroid/util/LongSparseLongArray;->valueAt(I)J +HSPLandroid/util/LruCache;->(I)V +HSPLandroid/util/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/LruCache;->evictAll()V +HSPLandroid/util/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/LruCache;->hitCount()I +HSPLandroid/util/LruCache;->missCount()I +HSPLandroid/util/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/LruCache;->resize(I)V +HSPLandroid/util/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/util/LruCache;->size()I +HSPLandroid/util/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/util/LruCache;->trimToSize(I)V +HSPLandroid/util/MapCollections$ArrayIterator;->(Landroid/util/MapCollections;I)V +HSPLandroid/util/MapCollections$ArrayIterator;->hasNext()Z +HSPLandroid/util/MapCollections$ArrayIterator;->next()Ljava/lang/Object; +HSPLandroid/util/MapCollections$EntrySet;->(Landroid/util/MapCollections;)V +HSPLandroid/util/MapCollections$EntrySet;->iterator()Ljava/util/Iterator; +HSPLandroid/util/MapCollections$KeySet;->(Landroid/util/MapCollections;)V +HSPLandroid/util/MapCollections$KeySet;->iterator()Ljava/util/Iterator; +HSPLandroid/util/MapCollections$KeySet;->size()I +HSPLandroid/util/MapCollections$KeySet;->toArray()[Ljava/lang/Object; +HSPLandroid/util/MapCollections$MapIterator;->(Landroid/util/MapCollections;)V +HSPLandroid/util/MapCollections$MapIterator;->getKey()Ljava/lang/Object; +HSPLandroid/util/MapCollections$MapIterator;->getValue()Ljava/lang/Object; +HSPLandroid/util/MapCollections$MapIterator;->hasNext()Z +HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/lang/Object; +HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/util/Map$Entry; +HSPLandroid/util/MapCollections$ValuesCollection;->(Landroid/util/MapCollections;)V +HSPLandroid/util/MapCollections$ValuesCollection;->iterator()Ljava/util/Iterator; +HSPLandroid/util/MapCollections;->()V +HSPLandroid/util/MapCollections;->colClear()V +HSPLandroid/util/MapCollections;->colGetEntry(II)Ljava/lang/Object; +HSPLandroid/util/MapCollections;->colGetMap()Ljava/util/Map; +HSPLandroid/util/MapCollections;->colGetSize()I +HSPLandroid/util/MapCollections;->colIndexOfKey(Ljava/lang/Object;)I +HSPLandroid/util/MapCollections;->colIndexOfValue(Ljava/lang/Object;)I +HSPLandroid/util/MapCollections;->colPut(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/util/MapCollections;->colRemoveAt(I)V +HSPLandroid/util/MapCollections;->colSetValue(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/MapCollections;->getEntrySet()Ljava/util/Set; +HSPLandroid/util/MapCollections;->getKeySet()Ljava/util/Set; +HSPLandroid/util/MapCollections;->getValues()Ljava/util/Collection; +HSPLandroid/util/MapCollections;->toArrayHelper(I)[Ljava/lang/Object; +HSPLandroid/util/MathUtils;->addOrThrow(II)I +HSPLandroid/util/MathUtils;->constrain(FFF)F +HSPLandroid/util/MathUtils;->constrain(III)I +HSPLandroid/util/MathUtils;->lerp(FFF)F +HSPLandroid/util/MathUtils;->map(FFFFF)F +HSPLandroid/util/MemoryIntArray$1;->()V +HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Landroid/util/MemoryIntArray; +HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;)V +HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;Landroid/util/MemoryIntArray;)V +HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V +HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V +HSPLandroid/util/MemoryIntArray;->get(I)I +HSPLandroid/util/MemoryIntArray;->isClosed()Z +HSPLandroid/util/MemoryIntArray;->size()I +HSPLandroid/util/MergedConfiguration$1;->()V +HSPLandroid/util/MergedConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/util/MergedConfiguration; +HSPLandroid/util/MergedConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/util/MergedConfiguration;->()V +HSPLandroid/util/MergedConfiguration;->(Landroid/os/Parcel;)V +HSPLandroid/util/MergedConfiguration;->(Landroid/os/Parcel;Landroid/util/MergedConfiguration;)V +HSPLandroid/util/MergedConfiguration;->equals(Ljava/lang/Object;)Z +HSPLandroid/util/MergedConfiguration;->getGlobalConfiguration()Landroid/content/res/Configuration; +HSPLandroid/util/MergedConfiguration;->getOverrideConfiguration()Landroid/content/res/Configuration; +HSPLandroid/util/MergedConfiguration;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/util/MergedConfiguration;->setConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V +HSPLandroid/util/MergedConfiguration;->updateMergedConfig()V +HSPLandroid/util/MutableBoolean;->(Z)V +HSPLandroid/util/MutableInt;->(I)V +HSPLandroid/util/MutableLong;->(J)V +HSPLandroid/util/NtpTrustedTime;->(Ljava/lang/String;J)V +HSPLandroid/util/NtpTrustedTime;->forceRefresh()Z +HSPLandroid/util/NtpTrustedTime;->getCachedNtpTime()J +HSPLandroid/util/NtpTrustedTime;->getCachedNtpTimeReference()J +HSPLandroid/util/NtpTrustedTime;->getInstance(Landroid/content/Context;)Landroid/util/NtpTrustedTime; +HSPLandroid/util/NtpTrustedTime;->hasCache()Z +HSPLandroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair; +HSPLandroid/util/Pair;->equals(Ljava/lang/Object;)Z +HSPLandroid/util/Pair;->hashCode()I +HSPLandroid/util/Pair;->toString()Ljava/lang/String; +HSPLandroid/util/PathParser$PathData;->()V +HSPLandroid/util/PathParser$PathData;->(Landroid/util/PathParser$PathData;)V +HSPLandroid/util/PathParser$PathData;->(Ljava/lang/String;)V +HSPLandroid/util/PathParser$PathData;->finalize()V +HSPLandroid/util/PathParser$PathData;->getNativePtr()J +HSPLandroid/util/PathParser;->-wrap0()J +HSPLandroid/util/PathParser;->-wrap1(Ljava/lang/String;I)J +HSPLandroid/util/PathParser;->-wrap2(J)J +HSPLandroid/util/PathParser;->-wrap3(J)V +HSPLandroid/util/PathParser;->canMorph(Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Z +HSPLandroid/util/PathParser;->createPathFromPathData(Ljava/lang/String;)Landroid/graphics/Path; +HSPLandroid/util/PathParser;->interpolatePathData(Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;F)Z +HSPLandroid/util/Pools$SimplePool;->(I)V +HSPLandroid/util/Pools$SimplePool;->acquire()Ljava/lang/Object; +HSPLandroid/util/Pools$SimplePool;->isInPool(Ljava/lang/Object;)Z +HSPLandroid/util/Pools$SimplePool;->release(Ljava/lang/Object;)Z +HSPLandroid/util/Pools$SynchronizedPool;->(I)V +HSPLandroid/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object; +HSPLandroid/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z +HSPLandroid/util/Printer;->println(Ljava/lang/String;)V +HSPLandroid/util/Property;->(Ljava/lang/Class;Ljava/lang/String;)V +HSPLandroid/util/Property;->getName()Ljava/lang/String; +HSPLandroid/util/Property;->getType()Ljava/lang/Class; +HSPLandroid/util/Range;->(Ljava/lang/Comparable;Ljava/lang/Comparable;)V +HSPLandroid/util/Range;->clamp(Ljava/lang/Comparable;)Ljava/lang/Comparable; +HSPLandroid/util/Range;->contains(Ljava/lang/Comparable;)Z +HSPLandroid/util/Range;->create(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range; +HSPLandroid/util/Range;->equals(Ljava/lang/Object;)Z +HSPLandroid/util/Range;->getLower()Ljava/lang/Comparable; +HSPLandroid/util/Range;->getUpper()Ljava/lang/Comparable; +HSPLandroid/util/Range;->hashCode()I +HSPLandroid/util/Range;->intersect(Landroid/util/Range;)Landroid/util/Range; +HSPLandroid/util/Range;->intersect(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range; +HSPLandroid/util/Range;->toString()Ljava/lang/String; +HSPLandroid/util/Rational;->(II)V +HSPLandroid/util/Rational;->compareTo(Landroid/util/Rational;)I +HSPLandroid/util/Rational;->compareTo(Ljava/lang/Object;)I +HSPLandroid/util/Rational;->equals(Landroid/util/Rational;)Z +HSPLandroid/util/Rational;->floatValue()F +HSPLandroid/util/Rational;->gcd(II)I +HSPLandroid/util/Rational;->getDenominator()I +HSPLandroid/util/Rational;->getNumerator()I +HSPLandroid/util/Rational;->isNaN()Z +HSPLandroid/util/Rational;->isNegInf()Z +HSPLandroid/util/Rational;->isPosInf()Z +HSPLandroid/util/Singleton;->()V +HSPLandroid/util/Singleton;->get()Ljava/lang/Object; +HSPLandroid/util/Size;->(II)V +HSPLandroid/util/Size;->equals(Ljava/lang/Object;)Z +HSPLandroid/util/Size;->getHeight()I +HSPLandroid/util/Size;->getWidth()I +HSPLandroid/util/Size;->hashCode()I +HSPLandroid/util/Size;->parseSize(Ljava/lang/String;)Landroid/util/Size; +HSPLandroid/util/Size;->toString()Ljava/lang/String; +HSPLandroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I +HSPLandroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/SparseArray;->()V +HSPLandroid/util/SparseArray;->(I)V +HSPLandroid/util/SparseArray;->append(ILjava/lang/Object;)V +HSPLandroid/util/SparseArray;->clear()V +HSPLandroid/util/SparseArray;->clone()Landroid/util/SparseArray; +HSPLandroid/util/SparseArray;->delete(I)V +HSPLandroid/util/SparseArray;->gc()V +HSPLandroid/util/SparseArray;->get(I)Ljava/lang/Object; +HSPLandroid/util/SparseArray;->get(ILjava/lang/Object;)Ljava/lang/Object; +HSPLandroid/util/SparseArray;->indexOfKey(I)I +HSPLandroid/util/SparseArray;->keyAt(I)I +HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V +HSPLandroid/util/SparseArray;->remove(I)V +HSPLandroid/util/SparseArray;->removeAt(I)V +HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V +HSPLandroid/util/SparseArray;->size()I +HSPLandroid/util/SparseArray;->valueAt(I)Ljava/lang/Object; +HSPLandroid/util/SparseBooleanArray;->()V +HSPLandroid/util/SparseBooleanArray;->(I)V +HSPLandroid/util/SparseBooleanArray;->append(IZ)V +HSPLandroid/util/SparseBooleanArray;->clear()V +HSPLandroid/util/SparseBooleanArray;->get(I)Z +HSPLandroid/util/SparseBooleanArray;->get(IZ)Z +HSPLandroid/util/SparseBooleanArray;->indexOfKey(I)I +HSPLandroid/util/SparseBooleanArray;->indexOfValue(Z)I +HSPLandroid/util/SparseBooleanArray;->keyAt(I)I +HSPLandroid/util/SparseBooleanArray;->put(IZ)V +HSPLandroid/util/SparseBooleanArray;->size()I +HSPLandroid/util/SparseBooleanArray;->valueAt(I)Z +HSPLandroid/util/SparseIntArray;->()V +HSPLandroid/util/SparseIntArray;->(I)V +HSPLandroid/util/SparseIntArray;->append(II)V +HSPLandroid/util/SparseIntArray;->clear()V +HSPLandroid/util/SparseIntArray;->clone()Landroid/util/SparseIntArray; +HSPLandroid/util/SparseIntArray;->copyKeys()[I +HSPLandroid/util/SparseIntArray;->get(I)I +HSPLandroid/util/SparseIntArray;->get(II)I +HSPLandroid/util/SparseIntArray;->indexOfKey(I)I +HSPLandroid/util/SparseIntArray;->keyAt(I)I +HSPLandroid/util/SparseIntArray;->put(II)V +HSPLandroid/util/SparseIntArray;->removeAt(I)V +HSPLandroid/util/SparseIntArray;->size()I +HSPLandroid/util/SparseIntArray;->valueAt(I)I +HSPLandroid/util/SparseLongArray;->()V +HSPLandroid/util/SparseLongArray;->(I)V +HSPLandroid/util/SparseLongArray;->get(I)J +HSPLandroid/util/SparseLongArray;->get(IJ)J +HSPLandroid/util/SparseLongArray;->put(IJ)V +HSPLandroid/util/SparseLongArray;->size()I +HSPLandroid/util/StateSet;->get(I)[I +HSPLandroid/util/StateSet;->stateSetMatches([I[I)Z +HSPLandroid/util/StateSet;->trimStateSet([II)[I +HSPLandroid/util/TimeUtils;->formatDuration(JLjava/lang/StringBuilder;)V +HSPLandroid/util/TimeUtils;->formatDurationLocked(JI)I +HSPLandroid/util/TimeUtils;->getTimeZoneDatabaseVersion()Ljava/lang/String; +HSPLandroid/util/TimeUtils;->printFieldLocked([CICIZI)I +HSPLandroid/util/TimingLogger;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/util/TimingLogger;->addSplit(Ljava/lang/String;)V +HSPLandroid/util/TimingLogger;->dumpToLog()V +HSPLandroid/util/TimingLogger;->reset()V +HSPLandroid/util/TimingLogger;->reset(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/util/TimingsTraceLog;->(Ljava/lang/String;J)V +HSPLandroid/util/TimingsTraceLog;->logDuration(Ljava/lang/String;J)V +HSPLandroid/util/TimingsTraceLog;->traceBegin(Ljava/lang/String;)V +HSPLandroid/util/TimingsTraceLog;->traceEnd()V +HSPLandroid/util/TrustedTime;->currentTimeMillis()J +HSPLandroid/util/TrustedTime;->forceRefresh()Z +HSPLandroid/util/TrustedTime;->getCacheAge()J +HSPLandroid/util/TrustedTime;->getCacheCertainty()J +HSPLandroid/util/TrustedTime;->hasCache()Z +HSPLandroid/util/TypedValue;->()V +HSPLandroid/util/TypedValue;->applyDimension(IFLandroid/util/DisplayMetrics;)F +HSPLandroid/util/TypedValue;->coerceToString()Ljava/lang/CharSequence; +HSPLandroid/util/TypedValue;->coerceToString(II)Ljava/lang/String; +HSPLandroid/util/TypedValue;->complexToDimension(ILandroid/util/DisplayMetrics;)F +HSPLandroid/util/TypedValue;->complexToDimensionPixelOffset(ILandroid/util/DisplayMetrics;)I +HSPLandroid/util/TypedValue;->complexToDimensionPixelSize(ILandroid/util/DisplayMetrics;)I +HSPLandroid/util/TypedValue;->complexToFloat(I)F +HSPLandroid/util/TypedValue;->complexToFraction(IFF)F +HSPLandroid/util/TypedValue;->getDimension(Landroid/util/DisplayMetrics;)F +HSPLandroid/util/TypedValue;->getFloat()F +HSPLandroid/util/TypedValue;->getFraction(FF)F +HSPLandroid/util/Xml;->asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet; +HSPLandroid/util/Xml;->newPullParser()Lorg/xmlpull/v1/XmlPullParser; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$ByteBufferDataSource;->(Ljava/nio/ByteBuffer;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$ByteBufferDataSource;->feedIntoMessageDigests([Ljava/security/MessageDigest;JI)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$ByteBufferDataSource;->size()J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$MemoryMappedFileDataSource;->(Ljava/io/FileDescriptor;JJ)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$MemoryMappedFileDataSource;->feedIntoMessageDigests([Ljava/security/MessageDigest;JI)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$MemoryMappedFileDataSource;->size()J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->-get0(Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->-get1(Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->-get2(Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->-get3(Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->-get4(Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->(Ljava/nio/ByteBuffer;JJJLjava/nio/ByteBuffer;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;->(Ljava/nio/ByteBuffer;JJJLjava/nio/ByteBuffer;Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$VerbatimX509Certificate;->(Ljava/security/cert/X509Certificate;[B)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$VerbatimX509Certificate;->getEncoded()[B +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$WrappedX509Certificate;->(Ljava/security/cert/X509Certificate;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier$WrappedX509Certificate;->getPublicKey()Ljava/security/PublicKey; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->checkByteOrderLittleEndian(Ljava/nio/ByteBuffer;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->computeContentDigests([I[Landroid/util/apk/ApkSignatureSchemeV2Verifier$DataSource;)[[B +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->findApkSignatureSchemeV2Block(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->findApkSigningBlock(Ljava/io/RandomAccessFile;J)Landroid/util/Pair; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->findSignature(Ljava/io/RandomAccessFile;)Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getByteBuffer(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getCentralDirOffset(Ljava/nio/ByteBuffer;J)J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getChunkCount(J)J +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getContentDigestAlgorithmJcaDigestAlgorithm(I)Ljava/lang/String; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getContentDigestAlgorithmOutputSizeBytes(I)I +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getEocd(Ljava/io/RandomAccessFile;)Landroid/util/Pair; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getLengthPrefixedSlice(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getSignatureAlgorithmContentDigestAlgorithm(I)I +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getSignatureAlgorithmJcaKeyAlgorithm(I)Ljava/lang/String; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->getSignatureAlgorithmJcaSignatureAlgorithm(I)Landroid/util/Pair; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->isSupportedSignatureAlgorithm(I)Z +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->readLengthPrefixedByteArray(Ljava/nio/ByteBuffer;)[B +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->setUnsignedInt32LittleEndian(I[BI)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->sliceFromTo(Ljava/nio/ByteBuffer;II)Ljava/nio/ByteBuffer; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/io/FileDescriptor;Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo;)[[Ljava/security/cert/X509Certificate; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/io/RandomAccessFile;)[[Ljava/security/cert/X509Certificate; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/lang/String;)[[Ljava/security/cert/X509Certificate; +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifyIntegrity(Ljava/util/Map;Ljava/io/FileDescriptor;JJJLjava/nio/ByteBuffer;)V +HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)[Ljava/security/cert/X509Certificate; +HSPLandroid/util/apk/ZipUtils;->assertByteOrderLittleEndian(Ljava/nio/ByteBuffer;)V +HSPLandroid/util/apk/ZipUtils;->findZipEndOfCentralDirectoryRecord(Ljava/io/RandomAccessFile;)Landroid/util/Pair; +HSPLandroid/util/apk/ZipUtils;->findZipEndOfCentralDirectoryRecord(Ljava/io/RandomAccessFile;I)Landroid/util/Pair; +HSPLandroid/util/apk/ZipUtils;->findZipEndOfCentralDirectoryRecord(Ljava/nio/ByteBuffer;)I +HSPLandroid/util/apk/ZipUtils;->getUnsignedInt16(Ljava/nio/ByteBuffer;I)I +HSPLandroid/util/apk/ZipUtils;->getUnsignedInt32(Ljava/nio/ByteBuffer;I)J +HSPLandroid/util/apk/ZipUtils;->getZipEocdCentralDirectoryOffset(Ljava/nio/ByteBuffer;)J +HSPLandroid/util/apk/ZipUtils;->getZipEocdCentralDirectorySizeBytes(Ljava/nio/ByteBuffer;)J +HSPLandroid/util/apk/ZipUtils;->isZip64EndOfCentralDirectoryLocatorPresent(Ljava/io/RandomAccessFile;J)Z +HSPLandroid/util/apk/ZipUtils;->setUnsignedInt32(Ljava/nio/ByteBuffer;IJ)V +HSPLandroid/util/apk/ZipUtils;->setZipEocdCentralDirectoryOffset(Ljava/nio/ByteBuffer;J)V +HSPLandroid/util/jar/StrictJarFile;->(Ljava/lang/String;Ljava/io/FileDescriptor;ZZ)V +HSPLandroid/util/jar/StrictJarFile;->(Ljava/lang/String;ZZ)V +HSPLandroid/util/jar/StrictJarFile;->close()V +HSPLandroid/util/jar/StrictJarFile;->finalize()V +HSPLandroid/util/jar/StrictJarFile;->findEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; +HSPLandroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1;->$m$1(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1;->(BLjava/lang/Object;)V +HSPLandroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk;->(B)V +HSPLandroid/view/-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8;->$m$0()V +HSPLandroid/view/-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8;->$m$1()V +HSPLandroid/view/-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8;->(BLjava/lang/Object;)V +HSPLandroid/view/-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8;->run()V +HSPLandroid/view/AbsSavedState$1;->()V +HSPLandroid/view/AbsSavedState$2;->()V +HSPLandroid/view/AbsSavedState$2;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/view/AbsSavedState; +HSPLandroid/view/AbsSavedState$2;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLandroid/view/AbsSavedState;->()V +HSPLandroid/view/AbsSavedState;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/view/AbsSavedState;->(Landroid/os/Parcelable;)V +HSPLandroid/view/AbsSavedState;->(Landroid/view/AbsSavedState;)V +HSPLandroid/view/AbsSavedState;->getSuperState()Landroid/os/Parcelable; +HSPLandroid/view/AbsSavedState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->(Landroid/view/AccessibilityInteractionController;)V +HSPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->(Landroid/view/AccessibilityInteractionController;Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;)V +HSPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchAccessibilityNodeInfos(Landroid/view/View;IILjava/util/List;Landroid/os/Bundle;)V +HSPLandroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher;->prefetchDescendantsOfRealNode(Landroid/view/View;Ljava/util/List;)V +HSPLandroid/view/AccessibilityInteractionController$PrivateHandler;->(Landroid/view/AccessibilityInteractionController;Landroid/os/Looper;)V +HSPLandroid/view/AccessibilityInteractionController$PrivateHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/view/AccessibilityInteractionController;->-wrap0(Landroid/view/AccessibilityInteractionController;Landroid/view/View;)Z +HSPLandroid/view/AccessibilityInteractionController;->-wrap1(Landroid/view/AccessibilityInteractionController;Landroid/os/Message;)V +HSPLandroid/view/AccessibilityInteractionController;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/AccessibilityInteractionController;->adjustIsVisibleToUserIfNeeded(Landroid/view/accessibility/AccessibilityNodeInfo;Landroid/graphics/Region;)V +HSPLandroid/view/AccessibilityInteractionController;->adjustIsVisibleToUserIfNeeded(Ljava/util/List;Landroid/graphics/Region;)V +HSPLandroid/view/AccessibilityInteractionController;->applyAppScaleAndMagnificationSpecIfNeeded(Ljava/util/List;Landroid/view/MagnificationSpec;)V +HSPLandroid/view/AccessibilityInteractionController;->findAccessibilityNodeInfoByAccessibilityIdClientThread(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V +HSPLandroid/view/AccessibilityInteractionController;->findAccessibilityNodeInfoByAccessibilityIdUiThread(Landroid/os/Message;)V +HSPLandroid/view/AccessibilityInteractionController;->holdOffMessageIfNeeded(Landroid/os/Message;IJ)Z +HSPLandroid/view/AccessibilityInteractionController;->isShown(Landroid/view/View;)Z +HSPLandroid/view/AccessibilityInteractionController;->recycleMagnificationSpecAndRegionIfNeeded(Landroid/view/MagnificationSpec;Landroid/graphics/Region;)V +HSPLandroid/view/AccessibilityInteractionController;->scheduleMessage(Landroid/os/Message;IJZ)V +HSPLandroid/view/AccessibilityInteractionController;->shouldApplyAppScaleAndMagnificationSpec(FLandroid/view/MagnificationSpec;)Z +HSPLandroid/view/AccessibilityInteractionController;->updateInfosForViewportAndReturnFindNodeResult(Ljava/util/List;Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;ILandroid/view/MagnificationSpec;Landroid/graphics/Region;)V +HSPLandroid/view/ActionMode$Callback2;->()V +HSPLandroid/view/ActionMode$Callback;->onActionItemClicked(Landroid/view/ActionMode;Landroid/view/MenuItem;)Z +HSPLandroid/view/ActionMode$Callback;->onCreateActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z +HSPLandroid/view/ActionMode$Callback;->onDestroyActionMode(Landroid/view/ActionMode;)V +HSPLandroid/view/ActionMode$Callback;->onPrepareActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z +HSPLandroid/view/ActionMode;->()V +HSPLandroid/view/ActionMode;->finish()V +HSPLandroid/view/ActionMode;->getCustomView()Landroid/view/View; +HSPLandroid/view/ActionMode;->getMenu()Landroid/view/Menu; +HSPLandroid/view/ActionMode;->getMenuInflater()Landroid/view/MenuInflater; +HSPLandroid/view/ActionMode;->getSubtitle()Ljava/lang/CharSequence; +HSPLandroid/view/ActionMode;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/view/ActionMode;->invalidate()V +HSPLandroid/view/ActionMode;->setCustomView(Landroid/view/View;)V +HSPLandroid/view/ActionMode;->setSubtitle(I)V +HSPLandroid/view/ActionMode;->setSubtitle(Ljava/lang/CharSequence;)V +HSPLandroid/view/ActionMode;->setTitle(I)V +HSPLandroid/view/ActionMode;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/view/ActionProvider$SubUiVisibilityListener;->onSubUiVisibilityChanged(Z)V +HSPLandroid/view/BatchedInputEventReceiver$BatchedInputRunnable;->(Landroid/view/BatchedInputEventReceiver;)V +HSPLandroid/view/BatchedInputEventReceiver$BatchedInputRunnable;->(Landroid/view/BatchedInputEventReceiver;Landroid/view/BatchedInputEventReceiver$BatchedInputRunnable;)V +HSPLandroid/view/BatchedInputEventReceiver;->(Landroid/view/InputChannel;Landroid/os/Looper;Landroid/view/Choreographer;)V +HSPLandroid/view/Choreographer$1;->()V +HSPLandroid/view/Choreographer$1;->initialValue()Landroid/view/Choreographer; +HSPLandroid/view/Choreographer$1;->initialValue()Ljava/lang/Object; +HSPLandroid/view/Choreographer$2;->()V +HSPLandroid/view/Choreographer$2;->initialValue()Landroid/view/Choreographer; +HSPLandroid/view/Choreographer$2;->initialValue()Ljava/lang/Object; +HSPLandroid/view/Choreographer$3;->()V +HSPLandroid/view/Choreographer$CallbackQueue;->(Landroid/view/Choreographer;)V +HSPLandroid/view/Choreographer$CallbackQueue;->(Landroid/view/Choreographer;Landroid/view/Choreographer$CallbackQueue;)V +HSPLandroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landroid/view/Choreographer$CallbackRecord; +HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer$CallbackRecord;->()V +HSPLandroid/view/Choreographer$CallbackRecord;->(Landroid/view/Choreographer$CallbackRecord;)V +HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V +HSPLandroid/view/Choreographer$FrameCallback;->doFrame(J)V +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->(Landroid/view/Choreographer;Landroid/os/Looper;I)V +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JII)V +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V +HSPLandroid/view/Choreographer$FrameHandler;->(Landroid/view/Choreographer;Landroid/os/Looper;)V +HSPLandroid/view/Choreographer;->-get0()Ljava/lang/Object; +HSPLandroid/view/Choreographer;->-get1(Landroid/view/Choreographer;)Landroid/view/Choreographer$FrameHandler; +HSPLandroid/view/Choreographer;->-wrap0(Landroid/view/Choreographer;JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord; +HSPLandroid/view/Choreographer;->-wrap1(Landroid/view/Choreographer;Landroid/view/Choreographer$CallbackRecord;)V +HSPLandroid/view/Choreographer;->(Landroid/os/Looper;I)V +HSPLandroid/view/Choreographer;->(Landroid/os/Looper;ILandroid/view/Choreographer;)V +HSPLandroid/view/Choreographer;->doCallbacks(IJ)V +HSPLandroid/view/Choreographer;->doFrame(JI)V +HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J +HSPLandroid/view/Choreographer;->getFrameTime()J +HSPLandroid/view/Choreographer;->getFrameTimeNanos()J +HSPLandroid/view/Choreographer;->getInstance()Landroid/view/Choreographer; +HSPLandroid/view/Choreographer;->getRefreshRate()F +HSPLandroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer; +HSPLandroid/view/Choreographer;->isRunningOnLooperThreadLocked()Z +HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord; +HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V +HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V +HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V +HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V +HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V +HSPLandroid/view/Choreographer;->removeCallbacks(ILjava/lang/Runnable;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V +HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V +HSPLandroid/view/ContextThemeWrapper;->()V +HSPLandroid/view/ContextThemeWrapper;->(Landroid/content/Context;I)V +HSPLandroid/view/ContextThemeWrapper;->(Landroid/content/Context;Landroid/content/res/Resources$Theme;)V +HSPLandroid/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V +HSPLandroid/view/ContextThemeWrapper;->attachBaseContext(Landroid/content/Context;)V +HSPLandroid/view/ContextThemeWrapper;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources; +HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V +HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V +HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V +HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$HdrCapabilities; +HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;)V +HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;Landroid/view/Display$HdrCapabilities;)V +HSPLandroid/view/Display$HdrCapabilities;->([IFFF)V +HSPLandroid/view/Display$HdrCapabilities;->hashCode()I +HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/Display$Mode$1;->()V +HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$Mode; +HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/Display$Mode;->(IIIF)V +HSPLandroid/view/Display$Mode;->(Landroid/os/Parcel;)V +HSPLandroid/view/Display$Mode;->(Landroid/os/Parcel;Landroid/view/Display$Mode;)V +HSPLandroid/view/Display$Mode;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/Display$Mode;->getModeId()I +HSPLandroid/view/Display$Mode;->getPhysicalHeight()I +HSPLandroid/view/Display$Mode;->getPhysicalWidth()I +HSPLandroid/view/Display$Mode;->getRefreshRate()F +HSPLandroid/view/Display$Mode;->toString()Ljava/lang/String; +HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/content/res/Resources;)V +HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;)V +HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;Landroid/content/res/Resources;)V +HSPLandroid/view/Display;->getAppVsyncOffsetNanos()J +HSPLandroid/view/Display;->getCurrentSizeRange(Landroid/graphics/Point;Landroid/graphics/Point;)V +HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/view/Display;->getDisplayId()I +HSPLandroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z +HSPLandroid/view/Display;->getFlags()I +HSPLandroid/view/Display;->getHeight()I +HSPLandroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V +HSPLandroid/view/Display;->getPresentationDeadlineNanos()J +HSPLandroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V +HSPLandroid/view/Display;->getRealSize(Landroid/graphics/Point;)V +HSPLandroid/view/Display;->getRefreshRate()F +HSPLandroid/view/Display;->getRotation()I +HSPLandroid/view/Display;->getSize(Landroid/graphics/Point;)V +HSPLandroid/view/Display;->getState()I +HSPLandroid/view/Display;->getType()I +HSPLandroid/view/Display;->getWidth()I +HSPLandroid/view/Display;->hasAccess(III)Z +HSPLandroid/view/Display;->isSuspendedState(I)Z +HSPLandroid/view/Display;->isValid()Z +HSPLandroid/view/Display;->isWideColorGamut()Z +HSPLandroid/view/Display;->stateToString(I)Ljava/lang/String; +HSPLandroid/view/Display;->typeToString(I)Ljava/lang/String; +HSPLandroid/view/Display;->updateCachedAppSizeIfNeededLocked()V +HSPLandroid/view/Display;->updateDisplayInfoLocked()V +HSPLandroid/view/DisplayAdjustments;->()V +HSPLandroid/view/DisplayAdjustments;->(Landroid/content/res/Configuration;)V +HSPLandroid/view/DisplayAdjustments;->(Landroid/view/DisplayAdjustments;)V +HSPLandroid/view/DisplayAdjustments;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/DisplayAdjustments;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; +HSPLandroid/view/DisplayAdjustments;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/view/DisplayAdjustments;->hashCode()I +HSPLandroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/CompatibilityInfo;)V +HSPLandroid/view/DisplayEventReceiver;->(Landroid/os/Looper;I)V +HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JII)V +HSPLandroid/view/DisplayEventReceiver;->scheduleVsync()V +HSPLandroid/view/DisplayInfo$1;->()V +HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayInfo; +HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/DisplayInfo;->()V +HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;)V +HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;Landroid/view/DisplayInfo;)V +HSPLandroid/view/DisplayInfo;->copyFrom(Landroid/view/DisplayInfo;)V +HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;)Z +HSPLandroid/view/DisplayInfo;->findMode(I)Landroid/view/Display$Mode; +HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V +HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V +HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V +HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode; +HSPLandroid/view/DisplayInfo;->hasAccess(I)Z +HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z +HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/DisplayListCanvas;->(Landroid/view/RenderNode;II)V +HSPLandroid/view/DisplayListCanvas;->drawHardwareLayer(Landroid/view/HardwareLayer;)V +HSPLandroid/view/DisplayListCanvas;->drawRenderNode(Landroid/view/RenderNode;)V +HSPLandroid/view/DisplayListCanvas;->finishRecording()J +HSPLandroid/view/DisplayListCanvas;->getHeight()I +HSPLandroid/view/DisplayListCanvas;->getWidth()I +HSPLandroid/view/DisplayListCanvas;->insertInorderBarrier()V +HSPLandroid/view/DisplayListCanvas;->insertReorderBarrier()V +HSPLandroid/view/DisplayListCanvas;->isHardwareAccelerated()Z +HSPLandroid/view/DisplayListCanvas;->isRecordingFor(Ljava/lang/Object;)Z +HSPLandroid/view/DisplayListCanvas;->obtain(Landroid/view/RenderNode;II)Landroid/view/DisplayListCanvas; +HSPLandroid/view/DisplayListCanvas;->recycle()V +HSPLandroid/view/DisplayListCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V +HSPLandroid/view/FallbackEventHandler;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/FallbackEventHandler;->preDispatchKeyEvent(Landroid/view/KeyEvent;)V +HSPLandroid/view/FallbackEventHandler;->setView(Landroid/view/View;)V +HSPLandroid/view/FocusFinder$1;->()V +HSPLandroid/view/FocusFinder$1;->initialValue()Landroid/view/FocusFinder; +HSPLandroid/view/FocusFinder$1;->initialValue()Ljava/lang/Object; +HSPLandroid/view/FocusFinder$FocusSorter;->()V +HSPLandroid/view/FocusFinder$FocusSorter;->lambda$-android_view_FocusFinder$FocusSorter_31347(Landroid/view/View;Landroid/view/View;)I +HSPLandroid/view/FocusFinder$FocusSorter;->lambda$-android_view_FocusFinder$FocusSorter_31807(Landroid/view/View;Landroid/view/View;)I +HSPLandroid/view/FocusFinder$FocusSorter;->sort([Landroid/view/View;IILandroid/view/ViewGroup;Z)V +HSPLandroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;->get(Landroid/view/View;Landroid/view/View;)Landroid/view/View; +HSPLandroid/view/FocusFinder$UserSpecifiedFocusComparator;->(Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;)V +HSPLandroid/view/FocusFinder;->()V +HSPLandroid/view/FocusFinder;->(Landroid/view/FocusFinder;)V +HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;I)Landroid/view/View; +HSPLandroid/view/FocusFinder;->getEffectiveRoot(Landroid/view/ViewGroup;Landroid/view/View;)Landroid/view/ViewGroup; +HSPLandroid/view/FocusFinder;->getInstance()Landroid/view/FocusFinder; +HSPLandroid/view/FocusFinder;->sort([Landroid/view/View;IILandroid/view/ViewGroup;Z)V +HSPLandroid/view/FrameInfo;->()V +HSPLandroid/view/FrameInfo;->addFlags(J)V +HSPLandroid/view/FrameInfo;->markAnimationsStart()V +HSPLandroid/view/FrameInfo;->markDrawStart()V +HSPLandroid/view/FrameInfo;->markInputHandlingStart()V +HSPLandroid/view/FrameInfo;->markPerformTraversalsStart()V +HSPLandroid/view/FrameInfo;->setVsync(JJ)V +HSPLandroid/view/FrameInfo;->updateInputEventTime(JJ)V +HSPLandroid/view/GestureDetector$GestureHandler;->(Landroid/view/GestureDetector;)V +HSPLandroid/view/GestureDetector$GestureHandler;->(Landroid/view/GestureDetector;Landroid/os/Handler;)V +HSPLandroid/view/GestureDetector$OnContextClickListener;->onContextClick(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$OnDoubleTapListener;->onDoubleTap(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$OnDoubleTapListener;->onDoubleTapEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$OnDoubleTapListener;->onSingleTapConfirmed(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$OnGestureListener;->onDown(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$OnGestureListener;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HSPLandroid/view/GestureDetector$OnGestureListener;->onLongPress(Landroid/view/MotionEvent;)V +HSPLandroid/view/GestureDetector$OnGestureListener;->onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HSPLandroid/view/GestureDetector$OnGestureListener;->onShowPress(Landroid/view/MotionEvent;)V +HSPLandroid/view/GestureDetector$OnGestureListener;->onSingleTapUp(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->()V +HSPLandroid/view/GestureDetector;->(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V +HSPLandroid/view/GestureDetector;->(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V +HSPLandroid/view/GestureDetector;->(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;Z)V +HSPLandroid/view/GestureDetector;->init(Landroid/content/Context;)V +HSPLandroid/view/GestureDetector;->setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V +HSPLandroid/view/GestureDetector;->setIsLongpressEnabled(Z)V +HSPLandroid/view/GestureDetector;->setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V +HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V +HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;I)V +HSPLandroid/view/Gravity;->getAbsoluteGravity(II)I +HSPLandroid/view/Gravity;->isHorizontal(I)Z +HSPLandroid/view/Gravity;->isVertical(I)Z +HSPLandroid/view/HandlerActionQueue$HandlerAction;->(Ljava/lang/Runnable;J)V +HSPLandroid/view/HandlerActionQueue$HandlerAction;->matches(Ljava/lang/Runnable;)Z +HSPLandroid/view/HandlerActionQueue;->()V +HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V +HSPLandroid/view/HandlerActionQueue;->post(Ljava/lang/Runnable;)V +HSPLandroid/view/HandlerActionQueue;->postDelayed(Ljava/lang/Runnable;J)V +HSPLandroid/view/HandlerActionQueue;->removeCallbacks(Ljava/lang/Runnable;)V +HSPLandroid/view/HardwareLayer;->(Landroid/view/ThreadedRenderer;J)V +HSPLandroid/view/HardwareLayer;->adoptTextureLayer(Landroid/view/ThreadedRenderer;J)Landroid/view/HardwareLayer; +HSPLandroid/view/HardwareLayer;->getDeferredLayerUpdater()J +HSPLandroid/view/HardwareLayer;->getLayerHandle()J +HSPLandroid/view/HardwareLayer;->prepare(IIZ)Z +HSPLandroid/view/HardwareLayer;->setLayerPaint(Landroid/graphics/Paint;)V +HSPLandroid/view/HardwareLayer;->setSurfaceTexture(Landroid/graphics/SurfaceTexture;)V +HSPLandroid/view/HardwareLayer;->updateSurfaceTexture()V +HSPLandroid/view/IDockedStackListener$Stub;->()V +HSPLandroid/view/IDockedStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IDockedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/IGraphicsStats$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/IGraphicsStats$Stub$Proxy;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/view/IGraphicsStats$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStats; +HSPLandroid/view/IGraphicsStats;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor; +HSPLandroid/view/IGraphicsStatsCallback$Stub;->()V +HSPLandroid/view/IGraphicsStatsCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IGraphicsStatsCallback;->onRotateGraphicsStatsBuffer()V +HSPLandroid/view/IPinnedStackController$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/IPinnedStackController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackController; +HSPLandroid/view/IPinnedStackController;->getDisplayRotation()I +HSPLandroid/view/IPinnedStackController;->setIsMinimized(Z)V +HSPLandroid/view/IPinnedStackController;->setMinEdgeSize(I)V +HSPLandroid/view/IPinnedStackListener$Stub;->()V +HSPLandroid/view/IPinnedStackListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IPinnedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/IPinnedStackListener;->onActionsChanged(Landroid/content/pm/ParceledListSlice;)V +HSPLandroid/view/IPinnedStackListener;->onImeVisibilityChanged(ZI)V +HSPLandroid/view/IPinnedStackListener;->onListenerRegistered(Landroid/view/IPinnedStackController;)V +HSPLandroid/view/IPinnedStackListener;->onMinimizedStateChanged(Z)V +HSPLandroid/view/IPinnedStackListener;->onMovementBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZI)V +HSPLandroid/view/IRotationWatcher$Stub;->()V +HSPLandroid/view/IRotationWatcher;->onRotationChanged(I)V +HSPLandroid/view/IWallpaperVisibilityListener$Stub;->()V +HSPLandroid/view/IWallpaperVisibilityListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IWallpaperVisibilityListener;->onWallpaperVisibilityChanged(ZI)V +HSPLandroid/view/IWindow$Stub;->()V +HSPLandroid/view/IWindow$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IWindow$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/IWindow;->closeSystemDialogs(Ljava/lang/String;)V +HSPLandroid/view/IWindow;->dispatchAppVisibility(Z)V +HSPLandroid/view/IWindow;->dispatchDragEvent(Landroid/view/DragEvent;)V +HSPLandroid/view/IWindow;->dispatchGetNewSurface()V +HSPLandroid/view/IWindow;->dispatchPointerCaptureChanged(Z)V +HSPLandroid/view/IWindow;->dispatchSystemUiVisibilityChanged(IIII)V +HSPLandroid/view/IWindow;->dispatchWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)V +HSPLandroid/view/IWindow;->dispatchWallpaperOffsets(FFFFZ)V +HSPLandroid/view/IWindow;->dispatchWindowShown()V +HSPLandroid/view/IWindow;->executeCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/view/IWindow;->moved(II)V +HSPLandroid/view/IWindow;->requestAppKeyboardShortcuts(Lcom/android/internal/os/IResultReceiver;I)V +HSPLandroid/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;ZZI)V +HSPLandroid/view/IWindow;->updatePointerIcon(FF)V +HSPLandroid/view/IWindow;->windowFocusChanged(ZZ)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->destroyInputConsumer(Ljava/lang/String;)Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->getCurrentAnimatorScale()F +HSPLandroid/view/IWindowManager$Stub$Proxy;->getDockedStackSide()I +HSPLandroid/view/IWindowManager$Stub$Proxy;->getInitialDisplaySize(ILandroid/graphics/Point;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->getStableInsets(ILandroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->hasNavigationBar()Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->inKeyguardRestrictedInputMode()Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->isKeyguardLocked()Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->isKeyguardSecure()Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z +HSPLandroid/view/IWindowManager$Stub$Proxy;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager$Stub$Proxy;->statusBarVisibilityChanged(I)V +HSPLandroid/view/IWindowManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowManager; +HSPLandroid/view/IWindowManager;->addWindowToken(Landroid/os/IBinder;II)V +HSPLandroid/view/IWindowManager;->clearForcedDisplayDensityForUser(II)V +HSPLandroid/view/IWindowManager;->clearForcedDisplaySize(I)V +HSPLandroid/view/IWindowManager;->clearWindowContentFrameStats(Landroid/os/IBinder;)Z +HSPLandroid/view/IWindowManager;->closeSystemDialogs(Ljava/lang/String;)V +HSPLandroid/view/IWindowManager;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V +HSPLandroid/view/IWindowManager;->destroyInputConsumer(Ljava/lang/String;)Z +HSPLandroid/view/IWindowManager;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/view/IWindowManager;->disableSurfaceTrace()V +HSPLandroid/view/IWindowManager;->dismissKeyguard(Lcom/android/internal/policy/IKeyguardDismissCallback;)V +HSPLandroid/view/IWindowManager;->enableScreenIfNeeded()V +HSPLandroid/view/IWindowManager;->enableSurfaceTrace(Landroid/os/ParcelFileDescriptor;)V +HSPLandroid/view/IWindowManager;->endProlongedAnimations()V +HSPLandroid/view/IWindowManager;->executeAppTransition()V +HSPLandroid/view/IWindowManager;->exitKeyguardSecurely(Landroid/view/IOnKeyguardExitResult;)V +HSPLandroid/view/IWindowManager;->freezeRotation(I)V +HSPLandroid/view/IWindowManager;->getAnimationScale(I)F +HSPLandroid/view/IWindowManager;->getAnimationScales()[F +HSPLandroid/view/IWindowManager;->getBaseDisplayDensity(I)I +HSPLandroid/view/IWindowManager;->getBaseDisplaySize(ILandroid/graphics/Point;)V +HSPLandroid/view/IWindowManager;->getCurrentAnimatorScale()F +HSPLandroid/view/IWindowManager;->getCurrentImeTouchRegion()Landroid/graphics/Region; +HSPLandroid/view/IWindowManager;->getDefaultDisplayRotation()I +HSPLandroid/view/IWindowManager;->getDockedStackSide()I +HSPLandroid/view/IWindowManager;->getInitialDisplayDensity(I)I +HSPLandroid/view/IWindowManager;->getInitialDisplaySize(ILandroid/graphics/Point;)V +HSPLandroid/view/IWindowManager;->getPendingAppTransition()I +HSPLandroid/view/IWindowManager;->getPreferredOptionsPanelGravity()I +HSPLandroid/view/IWindowManager;->getStableInsets(ILandroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager;->getWindowContentFrameStats(Landroid/os/IBinder;)Landroid/view/WindowContentFrameStats; +HSPLandroid/view/IWindowManager;->hasNavigationBar()Z +HSPLandroid/view/IWindowManager;->inKeyguardRestrictedInputMode()Z +HSPLandroid/view/IWindowManager;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z +HSPLandroid/view/IWindowManager;->isKeyguardLocked()Z +HSPLandroid/view/IWindowManager;->isKeyguardSecure()Z +HSPLandroid/view/IWindowManager;->isRotationFrozen()Z +HSPLandroid/view/IWindowManager;->isSafeModeEnabled()Z +HSPLandroid/view/IWindowManager;->isViewServerRunning()Z +HSPLandroid/view/IWindowManager;->lockNow(Landroid/os/Bundle;)V +HSPLandroid/view/IWindowManager;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; +HSPLandroid/view/IWindowManager;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionAspectScaledThumb(Landroid/graphics/GraphicBuffer;IIIILandroid/os/IRemoteCallback;Z)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionClipReveal(IIII)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionInPlace(Ljava/lang/String;I)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionMultiThumb([Landroid/view/AppTransitionAnimationSpec;Landroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;Z)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionScaleUp(IIII)V +HSPLandroid/view/IWindowManager;->overridePendingAppTransitionThumb(Landroid/graphics/GraphicBuffer;IILandroid/os/IRemoteCallback;Z)V +HSPLandroid/view/IWindowManager;->prepareAppTransition(IZ)V +HSPLandroid/view/IWindowManager;->reenableKeyguard(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowManager;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V +HSPLandroid/view/IWindowManager;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V +HSPLandroid/view/IWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +HSPLandroid/view/IWindowManager;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z +HSPLandroid/view/IWindowManager;->removeRotationWatcher(Landroid/view/IRotationWatcher;)V +HSPLandroid/view/IWindowManager;->removeWindowToken(Landroid/os/IBinder;I)V +HSPLandroid/view/IWindowManager;->requestAppKeyboardShortcuts(Lcom/android/internal/os/IResultReceiver;I)V +HSPLandroid/view/IWindowManager;->requestAssistScreenshot(Lcom/android/internal/app/IAssistScreenshotReceiver;)Z +HSPLandroid/view/IWindowManager;->screenshotWallpaper()Landroid/graphics/Bitmap; +HSPLandroid/view/IWindowManager;->setAnimationScale(IF)V +HSPLandroid/view/IWindowManager;->setAnimationScales([F)V +HSPLandroid/view/IWindowManager;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowManager;->setDockedStackResizing(Z)V +HSPLandroid/view/IWindowManager;->setEventDispatching(Z)V +HSPLandroid/view/IWindowManager;->setFocusedApp(Landroid/os/IBinder;Z)V +HSPLandroid/view/IWindowManager;->setForcedDisplayDensityForUser(III)V +HSPLandroid/view/IWindowManager;->setForcedDisplayScalingMode(II)V +HSPLandroid/view/IWindowManager;->setForcedDisplaySize(III)V +HSPLandroid/view/IWindowManager;->setInTouchMode(Z)V +HSPLandroid/view/IWindowManager;->setNewDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)[I +HSPLandroid/view/IWindowManager;->setOverscan(IIIII)V +HSPLandroid/view/IWindowManager;->setPipVisibility(Z)V +HSPLandroid/view/IWindowManager;->setRecentsVisibility(Z)V +HSPLandroid/view/IWindowManager;->setResizeDimLayer(ZIF)V +HSPLandroid/view/IWindowManager;->setScreenCaptureDisabled(IZ)V +HSPLandroid/view/IWindowManager;->setStrictModeVisualIndicatorPreference(Ljava/lang/String;)V +HSPLandroid/view/IWindowManager;->setSwitchingUser(Z)V +HSPLandroid/view/IWindowManager;->showStrictModeViolation(Z)V +HSPLandroid/view/IWindowManager;->startFreezingScreen(II)V +HSPLandroid/view/IWindowManager;->startViewServer(I)Z +HSPLandroid/view/IWindowManager;->statusBarVisibilityChanged(I)V +HSPLandroid/view/IWindowManager;->stopFreezingScreen()V +HSPLandroid/view/IWindowManager;->stopViewServer()Z +HSPLandroid/view/IWindowManager;->thawRotation()V +HSPLandroid/view/IWindowManager;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V +HSPLandroid/view/IWindowManager;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; +HSPLandroid/view/IWindowManager;->updateRotation(ZZ)V +HSPLandroid/view/IWindowManager;->watchRotation(Landroid/view/IRotationWatcher;I)I +HSPLandroid/view/IWindowSession$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +HSPLandroid/view/IWindowSession$Stub$Proxy;->finishDrawing(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->getInTouchMode()Z +HSPLandroid/view/IWindowSession$Stub$Proxy;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V +HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V +HSPLandroid/view/IWindowSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSession; +HSPLandroid/view/IWindowSession;->add(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +HSPLandroid/view/IWindowSession;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +HSPLandroid/view/IWindowSession;->addToDisplayWithoutInputChannel(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;)I +HSPLandroid/view/IWindowSession;->addWithoutInputChannel(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;ILandroid/graphics/Rect;Landroid/graphics/Rect;)I +HSPLandroid/view/IWindowSession;->cancelDragAndDrop(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowSession;->dragRecipientEntered(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession;->dragRecipientExited(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession;->finishDrawing(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowSession;->getInTouchMode()Z +HSPLandroid/view/IWindowSession;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; +HSPLandroid/view/IWindowSession;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HSPLandroid/view/IWindowSession;->outOfMemory(Landroid/view/IWindow;)Z +HSPLandroid/view/IWindowSession;->performDrag(Landroid/view/IWindow;Landroid/os/IBinder;IFFFFLandroid/content/ClipData;)Z +HSPLandroid/view/IWindowSession;->performHapticFeedback(Landroid/view/IWindow;IZ)Z +HSPLandroid/view/IWindowSession;->pokeDrawLock(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowSession;->prepareDrag(Landroid/view/IWindow;IIILandroid/view/Surface;)Landroid/os/IBinder; +HSPLandroid/view/IWindowSession;->prepareToReplaceWindows(Landroid/os/IBinder;Z)V +HSPLandroid/view/IWindowSession;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HSPLandroid/view/IWindowSession;->remove(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession;->reportDropResult(Landroid/view/IWindow;Z)V +HSPLandroid/view/IWindowSession;->sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle; +HSPLandroid/view/IWindowSession;->setInTouchMode(Z)V +HSPLandroid/view/IWindowSession;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V +HSPLandroid/view/IWindowSession;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V +HSPLandroid/view/IWindowSession;->setWallpaperDisplayOffset(Landroid/os/IBinder;II)V +HSPLandroid/view/IWindowSession;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V +HSPLandroid/view/IWindowSession;->startMovingTask(Landroid/view/IWindow;FF)Z +HSPLandroid/view/IWindowSession;->updatePointerIcon(Landroid/view/IWindow;)V +HSPLandroid/view/IWindowSession;->wallpaperCommandComplete(Landroid/os/IBinder;Landroid/os/Bundle;)V +HSPLandroid/view/IWindowSession;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V +HSPLandroid/view/IWindowSessionCallback$Stub;->()V +HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/IWindowSessionCallback;->onAnimatorScaleChanged(F)V +HSPLandroid/view/InputChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputChannel; +HSPLandroid/view/InputChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/InputChannel;->()V +HSPLandroid/view/InputChannel;->dispose()V +HSPLandroid/view/InputChannel;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputDevice; +HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/InputDevice$MotionRange;->(IIFFFFF)V +HSPLandroid/view/InputDevice$MotionRange;->(IIFFFFFLandroid/view/InputDevice$MotionRange;)V +HSPLandroid/view/InputDevice$MotionRange;->getAxis()I +HSPLandroid/view/InputDevice$MotionRange;->getSource()I +HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;)V +HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;Landroid/view/InputDevice;)V +HSPLandroid/view/InputDevice;->addMotionRange(IIFFFFF)V +HSPLandroid/view/InputDevice;->getDevice(I)Landroid/view/InputDevice; +HSPLandroid/view/InputDevice;->getDeviceIds()[I +HSPLandroid/view/InputDevice;->getKeyCharacterMap()Landroid/view/KeyCharacterMap; +HSPLandroid/view/InputDevice;->getMotionRanges()Ljava/util/List; +HSPLandroid/view/InputDevice;->getSources()I +HSPLandroid/view/InputDevice;->hasKeys([I)[Z +HSPLandroid/view/InputEvent;->()V +HSPLandroid/view/InputEvent;->getSequenceNumber()I +HSPLandroid/view/InputEvent;->isFromSource(I)Z +HSPLandroid/view/InputEvent;->prepareForReuse()V +HSPLandroid/view/InputEvent;->recycle()V +HSPLandroid/view/InputEvent;->recycleIfNeededAfterDispatch()V +HSPLandroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z +HSPLandroid/view/InputEventReceiver;->(Landroid/view/InputChannel;Landroid/os/Looper;)V +HSPLandroid/view/InputEventReceiver;->consumeBatchedInputEvents(J)Z +HSPLandroid/view/InputEventReceiver;->dispatchBatchedInputEventPending()V +HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;I)V +HSPLandroid/view/InputEventReceiver;->finishInputEvent(Landroid/view/InputEvent;Z)V +HSPLandroid/view/InputQueue$Callback;->onInputQueueCreated(Landroid/view/InputQueue;)V +HSPLandroid/view/InputQueue$Callback;->onInputQueueDestroyed(Landroid/view/InputQueue;)V +HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyCharacterMap; +HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/KeyCharacterMap;->(Landroid/os/Parcel;)V +HSPLandroid/view/KeyCharacterMap;->(Landroid/os/Parcel;Landroid/view/KeyCharacterMap;)V +HSPLandroid/view/KeyCharacterMap;->get(II)I +HSPLandroid/view/KeyCharacterMap;->getKeyboardType()I +HSPLandroid/view/KeyCharacterMap;->load(I)Landroid/view/KeyCharacterMap; +HSPLandroid/view/KeyEvent$DispatcherState;->()V +HSPLandroid/view/KeyEvent$DispatcherState;->reset()V +HSPLandroid/view/KeyEvent$DispatcherState;->reset(Ljava/lang/Object;)V +HSPLandroid/view/KeyEvent;->getMaxKeyCode()I +HSPLandroid/view/KeyEvent;->normalizeMetaState(I)I +HSPLandroid/view/LayoutInflater$Factory2;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater$Factory;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater$FactoryMerger;->(Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;)V +HSPLandroid/view/LayoutInflater$FactoryMerger;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater$Filter;->onLoadClass(Ljava/lang/Class;)Z +HSPLandroid/view/LayoutInflater;->(Landroid/content/Context;)V +HSPLandroid/view/LayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V +HSPLandroid/view/LayoutInflater;->cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater; +HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; +HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context; +HSPLandroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory; +HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V +HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V +HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V +HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V +HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V +HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V +HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z +HSPLandroid/view/Menu;->add(I)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->add(IIII)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->add(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->addIntentOptions(IIILandroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I[Landroid/view/MenuItem;)I +HSPLandroid/view/Menu;->addSubMenu(I)Landroid/view/SubMenu; +HSPLandroid/view/Menu;->addSubMenu(IIII)Landroid/view/SubMenu; +HSPLandroid/view/Menu;->addSubMenu(IIILjava/lang/CharSequence;)Landroid/view/SubMenu; +HSPLandroid/view/Menu;->addSubMenu(Ljava/lang/CharSequence;)Landroid/view/SubMenu; +HSPLandroid/view/Menu;->clear()V +HSPLandroid/view/Menu;->close()V +HSPLandroid/view/Menu;->findItem(I)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->getItem(I)Landroid/view/MenuItem; +HSPLandroid/view/Menu;->hasVisibleItems()Z +HSPLandroid/view/Menu;->isShortcutKey(ILandroid/view/KeyEvent;)Z +HSPLandroid/view/Menu;->performIdentifierAction(II)Z +HSPLandroid/view/Menu;->performShortcut(ILandroid/view/KeyEvent;I)Z +HSPLandroid/view/Menu;->removeGroup(I)V +HSPLandroid/view/Menu;->removeItem(I)V +HSPLandroid/view/Menu;->setGroupCheckable(IZZ)V +HSPLandroid/view/Menu;->setGroupEnabled(IZ)V +HSPLandroid/view/Menu;->setGroupVisible(IZ)V +HSPLandroid/view/Menu;->setQwertyMode(Z)V +HSPLandroid/view/Menu;->size()I +HSPLandroid/view/MenuInflater$MenuState;->-get0(Landroid/view/MenuInflater$MenuState;)Landroid/view/ActionProvider; +HSPLandroid/view/MenuInflater$MenuState;->(Landroid/view/MenuInflater;Landroid/view/Menu;)V +HSPLandroid/view/MenuInflater$MenuState;->addItem()Landroid/view/MenuItem; +HSPLandroid/view/MenuInflater$MenuState;->addSubMenuItem()Landroid/view/SubMenu; +HSPLandroid/view/MenuInflater$MenuState;->getShortcut(Ljava/lang/String;)C +HSPLandroid/view/MenuInflater$MenuState;->hasAddedItem()Z +HSPLandroid/view/MenuInflater$MenuState;->readGroup(Landroid/util/AttributeSet;)V +HSPLandroid/view/MenuInflater$MenuState;->readItem(Landroid/util/AttributeSet;)V +HSPLandroid/view/MenuInflater$MenuState;->resetGroup()V +HSPLandroid/view/MenuInflater$MenuState;->setItem(Landroid/view/MenuItem;)V +HSPLandroid/view/MenuInflater;->-get4(Landroid/view/MenuInflater;)Landroid/content/Context; +HSPLandroid/view/MenuInflater;->(Landroid/content/Context;)V +HSPLandroid/view/MenuInflater;->(Landroid/content/Context;Ljava/lang/Object;)V +HSPLandroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V +HSPLandroid/view/MenuInflater;->parseMenu(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/view/Menu;)V +HSPLandroid/view/MenuInflater;->registerMenu(Landroid/view/MenuItem;Landroid/util/AttributeSet;)V +HSPLandroid/view/MenuInflater;->registerMenu(Landroid/view/SubMenu;Landroid/util/AttributeSet;)V +HSPLandroid/view/MenuItem$OnActionExpandListener;->onMenuItemActionCollapse(Landroid/view/MenuItem;)Z +HSPLandroid/view/MenuItem$OnActionExpandListener;->onMenuItemActionExpand(Landroid/view/MenuItem;)Z +HSPLandroid/view/MenuItem$OnMenuItemClickListener;->onMenuItemClick(Landroid/view/MenuItem;)Z +HSPLandroid/view/MenuItem;->collapseActionView()Z +HSPLandroid/view/MenuItem;->expandActionView()Z +HSPLandroid/view/MenuItem;->getActionProvider()Landroid/view/ActionProvider; +HSPLandroid/view/MenuItem;->getActionView()Landroid/view/View; +HSPLandroid/view/MenuItem;->getAlphabeticShortcut()C +HSPLandroid/view/MenuItem;->getGroupId()I +HSPLandroid/view/MenuItem;->getIcon()Landroid/graphics/drawable/Drawable; +HSPLandroid/view/MenuItem;->getIntent()Landroid/content/Intent; +HSPLandroid/view/MenuItem;->getItemId()I +HSPLandroid/view/MenuItem;->getMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo; +HSPLandroid/view/MenuItem;->getNumericShortcut()C +HSPLandroid/view/MenuItem;->getOrder()I +HSPLandroid/view/MenuItem;->getSubMenu()Landroid/view/SubMenu; +HSPLandroid/view/MenuItem;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/view/MenuItem;->getTitleCondensed()Ljava/lang/CharSequence; +HSPLandroid/view/MenuItem;->hasSubMenu()Z +HSPLandroid/view/MenuItem;->isActionViewExpanded()Z +HSPLandroid/view/MenuItem;->isCheckable()Z +HSPLandroid/view/MenuItem;->isChecked()Z +HSPLandroid/view/MenuItem;->isEnabled()Z +HSPLandroid/view/MenuItem;->isVisible()Z +HSPLandroid/view/MenuItem;->setActionProvider(Landroid/view/ActionProvider;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setActionView(I)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setActionView(Landroid/view/View;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setAlphabeticShortcut(C)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setCheckable(Z)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setChecked(Z)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setEnabled(Z)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setIcon(I)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setIntent(Landroid/content/Intent;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setNumericShortcut(C)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setOnActionExpandListener(Landroid/view/MenuItem$OnActionExpandListener;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setShortcut(CC)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setShowAsAction(I)V +HSPLandroid/view/MenuItem;->setShowAsActionFlags(I)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setTitle(I)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setTitle(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLandroid/view/MenuItem;->setVisible(Z)Landroid/view/MenuItem; +HSPLandroid/view/MotionEvent;->()V +HSPLandroid/view/MotionEvent;->getAction()I +HSPLandroid/view/MotionEvent;->getActionIndex()I +HSPLandroid/view/MotionEvent;->getActionMasked()I +HSPLandroid/view/MotionEvent;->getDownTime()J +HSPLandroid/view/MotionEvent;->getEventTimeNano()J +HSPLandroid/view/MotionEvent;->getFlags()I +HSPLandroid/view/MotionEvent;->getHistoricalEventTimeNano(I)J +HSPLandroid/view/MotionEvent;->getHistorySize()I +HSPLandroid/view/MotionEvent;->getPointerCount()I +HSPLandroid/view/MotionEvent;->getPointerId(I)I +HSPLandroid/view/MotionEvent;->getPointerIdBits()I +HSPLandroid/view/MotionEvent;->getRawX()F +HSPLandroid/view/MotionEvent;->getRawY()F +HSPLandroid/view/MotionEvent;->getSource()I +HSPLandroid/view/MotionEvent;->getX()F +HSPLandroid/view/MotionEvent;->getX(I)F +HSPLandroid/view/MotionEvent;->getY()F +HSPLandroid/view/MotionEvent;->getY(I)F +HSPLandroid/view/MotionEvent;->isTargetAccessibilityFocus()Z +HSPLandroid/view/MotionEvent;->isTouchEvent()Z +HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent; +HSPLandroid/view/MotionEvent;->offsetLocation(FF)V +HSPLandroid/view/MotionEvent;->recycle()V +HSPLandroid/view/MotionEvent;->setAction(I)V +HSPLandroid/view/MotionEvent;->setTargetAccessibilityFocus(Z)V +HSPLandroid/view/OrientationEventListener$SensorEventListenerImpl;->(Landroid/view/OrientationEventListener;)V +HSPLandroid/view/OrientationEventListener$SensorEventListenerImpl;->onAccuracyChanged(Landroid/hardware/Sensor;I)V +HSPLandroid/view/OrientationEventListener$SensorEventListenerImpl;->onSensorChanged(Landroid/hardware/SensorEvent;)V +HSPLandroid/view/OrientationEventListener;->-get0(Landroid/view/OrientationEventListener;)Landroid/view/OrientationListener; +HSPLandroid/view/OrientationEventListener;->-get1(Landroid/view/OrientationEventListener;)I +HSPLandroid/view/OrientationEventListener;->(Landroid/content/Context;)V +HSPLandroid/view/OrientationEventListener;->(Landroid/content/Context;I)V +HSPLandroid/view/OrientationEventListener;->enable()V +HSPLandroid/view/OrientationEventListener;->onOrientationChanged(I)V +HSPLandroid/view/PointerIcon;->(I)V +HSPLandroid/view/PointerIcon;->getSystemIcon(Landroid/content/Context;I)Landroid/view/PointerIcon; +HSPLandroid/view/PointerIcon;->getSystemIconTypeIndex(I)I +HSPLandroid/view/RecordingCanvas;->(J)V +HSPLandroid/view/RecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/view/RecordingCanvas;->drawOval(FFFFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V +HSPLandroid/view/RecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/view/RenderNode;->-wrap0()J +HSPLandroid/view/RenderNode;->(J)V +HSPLandroid/view/RenderNode;->(Ljava/lang/String;Landroid/view/View;)V +HSPLandroid/view/RenderNode;->adopt(J)Landroid/view/RenderNode; +HSPLandroid/view/RenderNode;->create(Ljava/lang/String;Landroid/view/View;)Landroid/view/RenderNode; +HSPLandroid/view/RenderNode;->discardDisplayList()V +HSPLandroid/view/RenderNode;->end(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/RenderNode;->getClipToOutline()Z +HSPLandroid/view/RenderNode;->getElevation()F +HSPLandroid/view/RenderNode;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/view/RenderNode;->getNativeDisplayList()J +HSPLandroid/view/RenderNode;->getPivotX()F +HSPLandroid/view/RenderNode;->getPivotY()F +HSPLandroid/view/RenderNode;->getRotation()F +HSPLandroid/view/RenderNode;->getRotationX()F +HSPLandroid/view/RenderNode;->getRotationY()F +HSPLandroid/view/RenderNode;->getScaleX()F +HSPLandroid/view/RenderNode;->getScaleY()F +HSPLandroid/view/RenderNode;->getTranslationX()F +HSPLandroid/view/RenderNode;->getTranslationY()F +HSPLandroid/view/RenderNode;->getTranslationZ()F +HSPLandroid/view/RenderNode;->hasIdentityMatrix()Z +HSPLandroid/view/RenderNode;->isAttached()Z +HSPLandroid/view/RenderNode;->isPivotExplicitlySet()Z +HSPLandroid/view/RenderNode;->isValid()Z +HSPLandroid/view/RenderNode;->offsetTopAndBottom(I)Z +HSPLandroid/view/RenderNode;->registerVectorDrawableAnimator(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)V +HSPLandroid/view/RenderNode;->requestPositionUpdates(Landroid/view/SurfaceView;)V +HSPLandroid/view/RenderNode;->setAlpha(F)Z +HSPLandroid/view/RenderNode;->setAnimationMatrix(Landroid/graphics/Matrix;)Z +HSPLandroid/view/RenderNode;->setClipToBounds(Z)Z +HSPLandroid/view/RenderNode;->setClipToOutline(Z)Z +HSPLandroid/view/RenderNode;->setElevation(F)Z +HSPLandroid/view/RenderNode;->setHasOverlappingRendering(Z)Z +HSPLandroid/view/RenderNode;->setLayerPaint(Landroid/graphics/Paint;)Z +HSPLandroid/view/RenderNode;->setLayerType(I)Z +HSPLandroid/view/RenderNode;->setLeftTopRightBottom(IIII)Z +HSPLandroid/view/RenderNode;->setOutline(Landroid/graphics/Outline;)Z +HSPLandroid/view/RenderNode;->setPivotX(F)Z +HSPLandroid/view/RenderNode;->setPivotY(F)Z +HSPLandroid/view/RenderNode;->setProjectBackwards(Z)Z +HSPLandroid/view/RenderNode;->setProjectionReceiver(Z)Z +HSPLandroid/view/RenderNode;->setRotation(F)Z +HSPLandroid/view/RenderNode;->setScaleX(F)Z +HSPLandroid/view/RenderNode;->setScaleY(F)Z +HSPLandroid/view/RenderNode;->setTranslationX(F)Z +HSPLandroid/view/RenderNode;->setTranslationY(F)Z +HSPLandroid/view/RenderNode;->setTranslationZ(F)Z +HSPLandroid/view/RenderNode;->start(II)Landroid/view/DisplayListCanvas; +HSPLandroid/view/RenderNodeAnimator;->isNativeInterpolator(Landroid/animation/TimeInterpolator;)Z +HSPLandroid/view/RenderNodeAnimatorSetHelper;->createNativeInterpolator(Landroid/animation/TimeInterpolator;J)J +HSPLandroid/view/RenderNodeAnimatorSetHelper;->getTarget(Landroid/view/DisplayListCanvas;)Landroid/view/RenderNode; +HSPLandroid/view/ScaleGestureDetector$1;->(Landroid/view/ScaleGestureDetector;)V +HSPLandroid/view/ScaleGestureDetector$SimpleOnScaleGestureListener;->()V +HSPLandroid/view/ScaleGestureDetector;->(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V +HSPLandroid/view/ScaleGestureDetector;->(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;Landroid/os/Handler;)V +HSPLandroid/view/ScaleGestureDetector;->setQuickScaleEnabled(Z)V +HSPLandroid/view/ScaleGestureDetector;->setStylusScaleEnabled(Z)V +HSPLandroid/view/SubMenu;->clearHeader()V +HSPLandroid/view/SubMenu;->getItem()Landroid/view/MenuItem; +HSPLandroid/view/SubMenu;->setHeaderIcon(I)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setHeaderTitle(I)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setHeaderView(Landroid/view/View;)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setIcon(I)Landroid/view/SubMenu; +HSPLandroid/view/SubMenu;->setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu; +HSPLandroid/view/Surface$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Surface; +HSPLandroid/view/Surface$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;)V +HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;Landroid/view/Surface$CompatibleCanvas;)V +HSPLandroid/view/Surface;->()V +HSPLandroid/view/Surface;->(J)V +HSPLandroid/view/Surface;->allocateBuffers()V +HSPLandroid/view/Surface;->checkNotReleasedLocked()V +HSPLandroid/view/Surface;->copyFrom(Landroid/view/SurfaceControl;)V +HSPLandroid/view/Surface;->forceScopedDisconnect()V +HSPLandroid/view/Surface;->getGenerationId()I +HSPLandroid/view/Surface;->isValid()Z +HSPLandroid/view/Surface;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/Surface;->release()V +HSPLandroid/view/Surface;->setNativeObjectLocked(J)V +HSPLandroid/view/Surface;->toString()Ljava/lang/String; +HSPLandroid/view/Surface;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/SurfaceControl$PhysicalDisplayInfo;->()V +HSPLandroid/view/SurfaceControl;->(Landroid/view/SurfaceSession;Ljava/lang/String;IIII)V +HSPLandroid/view/SurfaceControl;->(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILandroid/view/SurfaceControl;II)V +HSPLandroid/view/SurfaceControl;->checkNotReleased()V +HSPLandroid/view/SurfaceControl;->closeTransaction()V +HSPLandroid/view/SurfaceControl;->deferTransactionUntil(Landroid/view/Surface;J)V +HSPLandroid/view/SurfaceControl;->destroy()V +HSPLandroid/view/SurfaceControl;->finalize()V +HSPLandroid/view/SurfaceControl;->getActiveColorMode(Landroid/os/IBinder;)I +HSPLandroid/view/SurfaceControl;->getActiveConfig(Landroid/os/IBinder;)I +HSPLandroid/view/SurfaceControl;->getBuiltInDisplay(I)Landroid/os/IBinder; +HSPLandroid/view/SurfaceControl;->getDisplayColorModes(Landroid/os/IBinder;)[I +HSPLandroid/view/SurfaceControl;->getDisplayConfigs(Landroid/os/IBinder;)[Landroid/view/SurfaceControl$PhysicalDisplayInfo; +HSPLandroid/view/SurfaceControl;->getHdrCapabilities(Landroid/os/IBinder;)Landroid/view/Display$HdrCapabilities; +HSPLandroid/view/SurfaceControl;->hide()V +HSPLandroid/view/SurfaceControl;->openTransaction()V +HSPLandroid/view/SurfaceControl;->setDisplayPowerMode(Landroid/os/IBinder;I)V +HSPLandroid/view/SurfaceControl;->setLayer(I)V +HSPLandroid/view/SurfaceControl;->setMatrix(FFFF)V +HSPLandroid/view/SurfaceControl;->setPosition(FF)V +HSPLandroid/view/SurfaceControl;->setSize(II)V +HSPLandroid/view/SurfaceControl;->show()V +HSPLandroid/view/SurfaceHolder$Callback2;->surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V +HSPLandroid/view/SurfaceHolder$Callback2;->surfaceRedrawNeededAsync(Landroid/view/SurfaceHolder;Ljava/lang/Runnable;)V +HSPLandroid/view/SurfaceHolder$Callback;->surfaceChanged(Landroid/view/SurfaceHolder;III)V +HSPLandroid/view/SurfaceHolder$Callback;->surfaceCreated(Landroid/view/SurfaceHolder;)V +HSPLandroid/view/SurfaceHolder$Callback;->surfaceDestroyed(Landroid/view/SurfaceHolder;)V +HSPLandroid/view/SurfaceHolder;->addCallback(Landroid/view/SurfaceHolder$Callback;)V +HSPLandroid/view/SurfaceHolder;->getSurface()Landroid/view/Surface; +HSPLandroid/view/SurfaceHolder;->getSurfaceFrame()Landroid/graphics/Rect; +HSPLandroid/view/SurfaceHolder;->isCreating()Z +HSPLandroid/view/SurfaceHolder;->lockCanvas()Landroid/graphics/Canvas; +HSPLandroid/view/SurfaceHolder;->lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas; +HSPLandroid/view/SurfaceHolder;->removeCallback(Landroid/view/SurfaceHolder$Callback;)V +HSPLandroid/view/SurfaceHolder;->setFixedSize(II)V +HSPLandroid/view/SurfaceHolder;->setFormat(I)V +HSPLandroid/view/SurfaceHolder;->setKeepScreenOn(Z)V +HSPLandroid/view/SurfaceHolder;->setSizeFromLayout()V +HSPLandroid/view/SurfaceHolder;->setType(I)V +HSPLandroid/view/SurfaceHolder;->unlockCanvasAndPost(Landroid/graphics/Canvas;)V +HSPLandroid/view/SurfaceSession;->(Landroid/view/Surface;)V +HSPLandroid/view/SurfaceView$1;->(Landroid/view/SurfaceView;)V +HSPLandroid/view/SurfaceView$1;->onScrollChanged()V +HSPLandroid/view/SurfaceView$2;->(Landroid/view/SurfaceView;)V +HSPLandroid/view/SurfaceView$2;->onPreDraw()Z +HSPLandroid/view/SurfaceView$3;->(Landroid/view/SurfaceView;)V +HSPLandroid/view/SurfaceView$3;->addCallback(Landroid/view/SurfaceHolder$Callback;)V +HSPLandroid/view/SurfaceView$3;->getSurface()Landroid/view/Surface; +HSPLandroid/view/SurfaceView$3;->getSurfaceFrame()Landroid/graphics/Rect; +HSPLandroid/view/SurfaceView$3;->removeCallback(Landroid/view/SurfaceHolder$Callback;)V +HSPLandroid/view/SurfaceView$3;->setFixedSize(II)V +HSPLandroid/view/SurfaceView$3;->setFormat(I)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->(Landroid/view/SurfaceView;Landroid/view/SurfaceSession;Ljava/lang/String;IIII)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->deferTransactionUntil(Landroid/view/Surface;J)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->destroy()V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->hide()V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->setLayer(I)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->setMatrix(FFFF)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->setPosition(FF)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->setSize(II)V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->show()V +HSPLandroid/view/SurfaceView$SurfaceControlWithBackground;->updateBackgroundVisibility()V +HSPLandroid/view/SurfaceView;->-android_view_SurfaceView-mthref-0()V +HSPLandroid/view/SurfaceView;->(Landroid/content/Context;)V +HSPLandroid/view/SurfaceView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/SurfaceView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/view/SurfaceView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/SurfaceView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/SurfaceView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/view/SurfaceView;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLandroid/view/SurfaceView;->getHolder()Landroid/view/SurfaceHolder; +HSPLandroid/view/SurfaceView;->getParentSurfaceInsets()Landroid/graphics/Rect; +HSPLandroid/view/SurfaceView;->getSurfaceCallbacks()[Landroid/view/SurfaceHolder$Callback; +HSPLandroid/view/SurfaceView;->isAboveParent()Z +HSPLandroid/view/SurfaceView;->lambda$-android_view_SurfaceView_32105()V +HSPLandroid/view/SurfaceView;->notifyDrawFinished()V +HSPLandroid/view/SurfaceView;->onAttachedToWindow()V +HSPLandroid/view/SurfaceView;->onDetachedFromWindow()V +HSPLandroid/view/SurfaceView;->onDrawFinished()V +HSPLandroid/view/SurfaceView;->onMeasure(II)V +HSPLandroid/view/SurfaceView;->onWindowVisibilityChanged(I)V +HSPLandroid/view/SurfaceView;->performDrawFinished()V +HSPLandroid/view/SurfaceView;->runOnUiThread(Ljava/lang/Runnable;)V +HSPLandroid/view/SurfaceView;->setFrame(IIII)Z +HSPLandroid/view/SurfaceView;->setParentSpaceRectangle(Landroid/graphics/Rect;J)V +HSPLandroid/view/SurfaceView;->setVisibility(I)V +HSPLandroid/view/SurfaceView;->setZOrderMediaOverlay(Z)V +HSPLandroid/view/SurfaceView;->surfacePositionLost_uiRtSync(J)V +HSPLandroid/view/SurfaceView;->updateOpaqueFlag()V +HSPLandroid/view/SurfaceView;->updateRequestedVisibility()V +HSPLandroid/view/SurfaceView;->updateSurface()V +HSPLandroid/view/SurfaceView;->updateSurfacePosition_renderWorker(JIIII)V +HSPLandroid/view/TextureView$1;->(Landroid/view/TextureView;)V +HSPLandroid/view/TextureView$1;->onFrameAvailable(Landroid/graphics/SurfaceTexture;)V +HSPLandroid/view/TextureView$SurfaceTextureListener;->onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V +HSPLandroid/view/TextureView$SurfaceTextureListener;->onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z +HSPLandroid/view/TextureView$SurfaceTextureListener;->onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V +HSPLandroid/view/TextureView$SurfaceTextureListener;->onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V +HSPLandroid/view/TextureView;->-wrap0(Landroid/view/TextureView;)V +HSPLandroid/view/TextureView;->(Landroid/content/Context;)V +HSPLandroid/view/TextureView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/TextureView;->applyTransformMatrix()V +HSPLandroid/view/TextureView;->applyUpdate()V +HSPLandroid/view/TextureView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/view/TextureView;->getHardwareLayer()Landroid/view/HardwareLayer; +HSPLandroid/view/TextureView;->getLayerType()I +HSPLandroid/view/TextureView;->getSurfaceTexture()Landroid/graphics/SurfaceTexture; +HSPLandroid/view/TextureView;->isOpaque()Z +HSPLandroid/view/TextureView;->onAttachedToWindow()V +HSPLandroid/view/TextureView;->onSizeChanged(IIII)V +HSPLandroid/view/TextureView;->onVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/view/TextureView;->setOpaque(Z)V +HSPLandroid/view/TextureView;->setSurfaceTextureListener(Landroid/view/TextureView$SurfaceTextureListener;)V +HSPLandroid/view/TextureView;->updateLayer()V +HSPLandroid/view/TextureView;->updateLayerAndInvalidate()V +HSPLandroid/view/ThreadedRenderer$DrawCallbacks;->onPostDraw(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/ThreadedRenderer$DrawCallbacks;->onPreDraw(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer$1;->(Landroid/view/ThreadedRenderer$ProcessInitializer;)V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer;->()V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer;->init(Landroid/content/Context;J)V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer;->initGraphicsStats()V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer;->initSched(J)V +HSPLandroid/view/ThreadedRenderer$ProcessInitializer;->requestBuffer()V +HSPLandroid/view/ThreadedRenderer;->-wrap0(J)I +HSPLandroid/view/ThreadedRenderer;->-wrap2(I)V +HSPLandroid/view/ThreadedRenderer;->(Landroid/content/Context;ZLjava/lang/String;)V +HSPLandroid/view/ThreadedRenderer;->buildLayer(Landroid/view/RenderNode;)V +HSPLandroid/view/ThreadedRenderer;->create(Landroid/content/Context;ZLjava/lang/String;)Landroid/view/ThreadedRenderer; +HSPLandroid/view/ThreadedRenderer;->createTextureLayer()Landroid/view/HardwareLayer; +HSPLandroid/view/ThreadedRenderer;->destroy()V +HSPLandroid/view/ThreadedRenderer;->destroyHardwareResources(Landroid/view/View;)V +HSPLandroid/view/ThreadedRenderer;->destroyResources(Landroid/view/View;)V +HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->enableForegroundTrimming()V +HSPLandroid/view/ThreadedRenderer;->fence()V +HSPLandroid/view/ThreadedRenderer;->getHeight()I +HSPLandroid/view/ThreadedRenderer;->getWidth()I +HSPLandroid/view/ThreadedRenderer;->initialize(Landroid/view/Surface;)Z +HSPLandroid/view/ThreadedRenderer;->initializeIfNeeded(IILandroid/view/View$AttachInfo;Landroid/view/Surface;Landroid/graphics/Rect;)Z +HSPLandroid/view/ThreadedRenderer;->isAvailable()Z +HSPLandroid/view/ThreadedRenderer;->isEnabled()Z +HSPLandroid/view/ThreadedRenderer;->isRequested()Z +HSPLandroid/view/ThreadedRenderer;->loadSystemProperties()Z +HSPLandroid/view/ThreadedRenderer;->notifyFramePending()V +HSPLandroid/view/ThreadedRenderer;->overrideProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/view/ThreadedRenderer;->pauseSurface(Landroid/view/Surface;)Z +HSPLandroid/view/ThreadedRenderer;->pushLayerUpdate(Landroid/view/HardwareLayer;)V +HSPLandroid/view/ThreadedRenderer;->registerVectorDrawableAnimator(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)V +HSPLandroid/view/ThreadedRenderer;->setEnabled(Z)V +HSPLandroid/view/ThreadedRenderer;->setLightCenter(Landroid/view/View$AttachInfo;)V +HSPLandroid/view/ThreadedRenderer;->setOpaque(Z)V +HSPLandroid/view/ThreadedRenderer;->setStopped(Z)V +HSPLandroid/view/ThreadedRenderer;->setWideGamut(Z)V +HSPLandroid/view/ThreadedRenderer;->setup(IILandroid/view/View$AttachInfo;Landroid/graphics/Rect;)V +HSPLandroid/view/ThreadedRenderer;->setupDiskCache(Ljava/io/File;)V +HSPLandroid/view/ThreadedRenderer;->trimMemory(I)V +HSPLandroid/view/ThreadedRenderer;->updateEnabledState(Landroid/view/Surface;)V +HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V +HSPLandroid/view/TouchDelegate;->(Landroid/graphics/Rect;Landroid/view/View;)V +HSPLandroid/view/VelocityTracker;->(Ljava/lang/String;)V +HSPLandroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker; +HSPLandroid/view/View$1;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$1;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$1;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$2;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$2;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$2;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$2;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$3;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$3;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$3;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$3;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$4;->get(Landroid/view/View;)Ljava/lang/Float; +HSPLandroid/view/View$4;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/view/View$4;->setValue(Landroid/view/View;F)V +HSPLandroid/view/View$4;->setValue(Ljava/lang/Object;F)V +HSPLandroid/view/View$AccessibilityDelegate;->()V +HSPLandroid/view/View$AccessibilityDelegate;->createAccessibilityNodeInfo(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroid/view/View$AccessibilityDelegate;->dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/View$AccessibilityDelegate;->getAccessibilityNodeProvider(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLandroid/view/View$AccessibilityDelegate;->onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View$AccessibilityDelegate;->onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/View$AccessibilityDelegate;->onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View$AccessibilityDelegate;->onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/View$AccessibilityDelegate;->sendAccessibilityEvent(Landroid/view/View;I)V +HSPLandroid/view/View$AccessibilityDelegate;->sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View$AttachInfo$Callbacks;->performHapticFeedback(IZ)Z +HSPLandroid/view/View$AttachInfo$Callbacks;->playSoundEffect(I)V +HSPLandroid/view/View$AttachInfo;->(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/Display;Landroid/view/ViewRootImpl;Landroid/os/Handler;Landroid/view/View$AttachInfo$Callbacks;Landroid/content/Context;)V +HSPLandroid/view/View$BaseSavedState$1;->()V +HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/view/View$BaseSavedState; +HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; +HSPLandroid/view/View$BaseSavedState;->(Landroid/os/Parcel;)V +HSPLandroid/view/View$BaseSavedState;->(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V +HSPLandroid/view/View$BaseSavedState;->(Landroid/os/Parcelable;)V +HSPLandroid/view/View$BaseSavedState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/View$CheckForTap;->(Landroid/view/View;)V +HSPLandroid/view/View$CheckForTap;->(Landroid/view/View;Landroid/view/View$CheckForTap;)V +HSPLandroid/view/View$DeclaredOnClickListener;->(Landroid/view/View;Ljava/lang/String;)V +HSPLandroid/view/View$ForegroundInfo;->-get1(Landroid/view/View$ForegroundInfo;)Landroid/graphics/drawable/Drawable; +HSPLandroid/view/View$ForegroundInfo;->-get2(Landroid/view/View$ForegroundInfo;)I +HSPLandroid/view/View$ForegroundInfo;->-get3(Landroid/view/View$ForegroundInfo;)Z +HSPLandroid/view/View$ForegroundInfo;->-get6(Landroid/view/View$ForegroundInfo;)Landroid/view/View$TintInfo; +HSPLandroid/view/View$ForegroundInfo;->-set0(Landroid/view/View$ForegroundInfo;Z)Z +HSPLandroid/view/View$ForegroundInfo;->-set1(Landroid/view/View$ForegroundInfo;Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable; +HSPLandroid/view/View$ForegroundInfo;->-set2(Landroid/view/View$ForegroundInfo;I)I +HSPLandroid/view/View$ForegroundInfo;->-set3(Landroid/view/View$ForegroundInfo;Z)Z +HSPLandroid/view/View$ForegroundInfo;->()V +HSPLandroid/view/View$ForegroundInfo;->(Landroid/view/View$ForegroundInfo;)V +HSPLandroid/view/View$ListenerInfo;->-get0(Landroid/view/View$ListenerInfo;)Ljava/util/concurrent/CopyOnWriteArrayList; +HSPLandroid/view/View$ListenerInfo;->-get1(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnDragListener; +HSPLandroid/view/View$ListenerInfo;->-get2(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnGenericMotionListener; +HSPLandroid/view/View$ListenerInfo;->-get3(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnHoverListener; +HSPLandroid/view/View$ListenerInfo;->-get4(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnKeyListener; +HSPLandroid/view/View$ListenerInfo;->-get5(Landroid/view/View$ListenerInfo;)Ljava/util/ArrayList; +HSPLandroid/view/View$ListenerInfo;->-get6(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnSystemUiVisibilityChangeListener; +HSPLandroid/view/View$ListenerInfo;->-get7(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnTouchListener; +HSPLandroid/view/View$ListenerInfo;->-set0(Landroid/view/View$ListenerInfo;Ljava/util/concurrent/CopyOnWriteArrayList;)Ljava/util/concurrent/CopyOnWriteArrayList; +HSPLandroid/view/View$ListenerInfo;->-set1(Landroid/view/View$ListenerInfo;Landroid/view/View$OnDragListener;)Landroid/view/View$OnDragListener; +HSPLandroid/view/View$ListenerInfo;->-set2(Landroid/view/View$ListenerInfo;Landroid/view/View$OnGenericMotionListener;)Landroid/view/View$OnGenericMotionListener; +HSPLandroid/view/View$ListenerInfo;->-set3(Landroid/view/View$ListenerInfo;Landroid/view/View$OnHoverListener;)Landroid/view/View$OnHoverListener; +HSPLandroid/view/View$ListenerInfo;->-set4(Landroid/view/View$ListenerInfo;Landroid/view/View$OnKeyListener;)Landroid/view/View$OnKeyListener; +HSPLandroid/view/View$ListenerInfo;->-set5(Landroid/view/View$ListenerInfo;Ljava/util/ArrayList;)Ljava/util/ArrayList; +HSPLandroid/view/View$ListenerInfo;->-set6(Landroid/view/View$ListenerInfo;Landroid/view/View$OnSystemUiVisibilityChangeListener;)Landroid/view/View$OnSystemUiVisibilityChangeListener; +HSPLandroid/view/View$ListenerInfo;->-set7(Landroid/view/View$ListenerInfo;Landroid/view/View$OnTouchListener;)Landroid/view/View$OnTouchListener; +HSPLandroid/view/View$ListenerInfo;->()V +HSPLandroid/view/View$MatchLabelForPredicate;->-set0(Landroid/view/View$MatchLabelForPredicate;I)I +HSPLandroid/view/View$MatchLabelForPredicate;->()V +HSPLandroid/view/View$MatchLabelForPredicate;->(Landroid/view/View$MatchLabelForPredicate;)V +HSPLandroid/view/View$MatchLabelForPredicate;->test(Landroid/view/View;)Z +HSPLandroid/view/View$MatchLabelForPredicate;->test(Ljava/lang/Object;)Z +HSPLandroid/view/View$MeasureSpec;->getMode(I)I +HSPLandroid/view/View$MeasureSpec;->getSize(I)I +HSPLandroid/view/View$MeasureSpec;->makeMeasureSpec(II)I +HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I +HSPLandroid/view/View$OnApplyWindowInsetsListener;->onApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroid/view/View$OnAttachStateChangeListener;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLandroid/view/View$OnAttachStateChangeListener;->onViewDetachedFromWindow(Landroid/view/View;)V +HSPLandroid/view/View$OnClickListener;->onClick(Landroid/view/View;)V +HSPLandroid/view/View$OnCreateContextMenuListener;->onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V +HSPLandroid/view/View$OnDragListener;->onDrag(Landroid/view/View;Landroid/view/DragEvent;)Z +HSPLandroid/view/View$OnFocusChangeListener;->onFocusChange(Landroid/view/View;Z)V +HSPLandroid/view/View$OnGenericMotionListener;->onGenericMotion(Landroid/view/View;Landroid/view/MotionEvent;)Z +HSPLandroid/view/View$OnHoverListener;->onHover(Landroid/view/View;Landroid/view/MotionEvent;)Z +HSPLandroid/view/View$OnKeyListener;->onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z +HSPLandroid/view/View$OnLayoutChangeListener;->onLayoutChange(Landroid/view/View;IIIIIIII)V +HSPLandroid/view/View$OnLongClickListener;->onLongClick(Landroid/view/View;)Z +HSPLandroid/view/View$OnScrollChangeListener;->onScrollChange(Landroid/view/View;IIII)V +HSPLandroid/view/View$OnSystemUiVisibilityChangeListener;->onSystemUiVisibilityChange(I)V +HSPLandroid/view/View$OnTouchListener;->onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z +HSPLandroid/view/View$PerformClick;->(Landroid/view/View;)V +HSPLandroid/view/View$PerformClick;->(Landroid/view/View;Landroid/view/View$PerformClick;)V +HSPLandroid/view/View$PerformClick;->run()V +HSPLandroid/view/View$ScrollabilityCache;->(Landroid/view/ViewConfiguration;Landroid/view/View;)V +HSPLandroid/view/View$ScrollabilityCache;->run()V +HSPLandroid/view/View$SendViewScrolledAccessibilityEvent;->(Landroid/view/View;)V +HSPLandroid/view/View$SendViewScrolledAccessibilityEvent;->(Landroid/view/View;Landroid/view/View$SendViewScrolledAccessibilityEvent;)V +HSPLandroid/view/View$SendViewScrolledAccessibilityEvent;->run()V +HSPLandroid/view/View$TintInfo;->()V +HSPLandroid/view/View$TooltipInfo;->()V +HSPLandroid/view/View$TooltipInfo;->(Landroid/view/View$TooltipInfo;)V +HSPLandroid/view/View$TransformationInfo;->-get1(Landroid/view/View$TransformationInfo;)Landroid/graphics/Matrix; +HSPLandroid/view/View$TransformationInfo;->()V +HSPLandroid/view/View$UnsetPressedState;->(Landroid/view/View;)V +HSPLandroid/view/View$UnsetPressedState;->(Landroid/view/View;Landroid/view/View$UnsetPressedState;)V +HSPLandroid/view/View;->-get0(Landroid/view/View;)I +HSPLandroid/view/View;->-get1()Z +HSPLandroid/view/View;->(Landroid/content/Context;)V +HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V +HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V +HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V +HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->applyBackgroundTint()V +HSPLandroid/view/View;->applyForegroundTint()V +HSPLandroid/view/View;->applyLegacyAnimation(Landroid/view/ViewGroup;JLandroid/view/animation/Animation;Z)Z +HSPLandroid/view/View;->areDrawablesResolved()Z +HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V +HSPLandroid/view/View;->awakenScrollBars()Z +HSPLandroid/view/View;->awakenScrollBars(IZ)Z +HSPLandroid/view/View;->bringToFront()V +HSPLandroid/view/View;->buildDrawingCache(Z)V +HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V +HSPLandroid/view/View;->buildLayer()V +HSPLandroid/view/View;->canHaveDisplayList()Z +HSPLandroid/view/View;->canResolveLayoutDirection()Z +HSPLandroid/view/View;->canResolveTextDirection()Z +HSPLandroid/view/View;->canScrollHorizontally(I)Z +HSPLandroid/view/View;->canScrollVertically(I)Z +HSPLandroid/view/View;->cancelLongPress()V +HSPLandroid/view/View;->cancelPendingInputEvents()V +HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z +HSPLandroid/view/View;->cleanupDraw()V +HSPLandroid/view/View;->clearAccessibilityFocus()V +HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V +HSPLandroid/view/View;->clearAnimation()V +HSPLandroid/view/View;->clearFocus()V +HSPLandroid/view/View;->clearFocusInternal(Landroid/view/View;ZZ)V +HSPLandroid/view/View;->combineMeasuredStates(II)I +HSPLandroid/view/View;->combineVisibility(II)I +HSPLandroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->computeOpaqueFlags()V +HSPLandroid/view/View;->computeScroll()V +HSPLandroid/view/View;->createAccessibilityNodeInfo()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroid/view/View;->createAccessibilityNodeInfoInternal()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroid/view/View;->damageInParent()V +HSPLandroid/view/View;->debugDraw()Z +HSPLandroid/view/View;->destroyDrawingCache()V +HSPLandroid/view/View;->destroyHardwareResources()V +HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchCancelPendingInputEvents()V +HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchDetachedFromWindow()V +HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V +HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V +HSPLandroid/view/View;->dispatchGetDisplayList()V +HSPLandroid/view/View;->dispatchPointerEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/View;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/View;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V +HSPLandroid/view/View;->dispatchProvideStructureForAssistOrAutofill(Landroid/view/ViewStructure;ZI)V +HSPLandroid/view/View;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V +HSPLandroid/view/View;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V +HSPLandroid/view/View;->dispatchSetActivated(Z)V +HSPLandroid/view/View;->dispatchSetPressed(Z)V +HSPLandroid/view/View;->dispatchSetSelected(Z)V +HSPLandroid/view/View;->dispatchStartTemporaryDetach()V +HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z +HSPLandroid/view/View;->dispatchVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/view/View;->dispatchWindowFocusChanged(Z)V +HSPLandroid/view/View;->dispatchWindowSystemUiVisiblityChanged(I)V +HSPLandroid/view/View;->dispatchWindowVisibilityChanged(I)V +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z +HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->drawDefaultFocusHighlight(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->drawableHotspotChanged(FF)V +HSPLandroid/view/View;->drawableStateChanged()V +HSPLandroid/view/View;->ensureTransformationInfo()V +HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View; +HSPLandroid/view/View;->findFocus()Landroid/view/View; +HSPLandroid/view/View;->findKeyboardNavigationCluster()Landroid/view/View; +HSPLandroid/view/View;->findLabelForView(Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/View;->findViewById(I)Landroid/view/View; +HSPLandroid/view/View;->findViewByPredicate(Ljava/util/function/Predicate;)Landroid/view/View; +HSPLandroid/view/View;->findViewByPredicateInsideOut(Landroid/view/View;Ljava/util/function/Predicate;)Landroid/view/View; +HSPLandroid/view/View;->findViewByPredicateTraversal(Ljava/util/function/Predicate;Landroid/view/View;)Landroid/view/View; +HSPLandroid/view/View;->findViewTraversal(I)Landroid/view/View; +HSPLandroid/view/View;->findViewWithTag(Ljava/lang/Object;)Landroid/view/View; +HSPLandroid/view/View;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; +HSPLandroid/view/View;->findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V +HSPLandroid/view/View;->fitSystemWindows(Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->fitSystemWindowsInt(Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->forceHasOverlappingRendering(Z)V +HSPLandroid/view/View;->forceLayout()V +HSPLandroid/view/View;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLandroid/view/View;->generateViewId()I +HSPLandroid/view/View;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; +HSPLandroid/view/View;->getAccessibilityLiveRegion()I +HSPLandroid/view/View;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLandroid/view/View;->getAccessibilitySelectionEnd()I +HSPLandroid/view/View;->getAccessibilitySelectionStart()I +HSPLandroid/view/View;->getAccessibilityViewId()I +HSPLandroid/view/View;->getAccessibilityWindowId()I +HSPLandroid/view/View;->getAlpha()F +HSPLandroid/view/View;->getAnimation()Landroid/view/animation/Animation; +HSPLandroid/view/View;->getAutofillHints()[Ljava/lang/String; +HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId; +HSPLandroid/view/View;->getAutofillManager()Landroid/view/autofill/AutofillManager; +HSPLandroid/view/View;->getAutofillType()I +HSPLandroid/view/View;->getAutofillViewId()I +HSPLandroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable; +HSPLandroid/view/View;->getBaseline()I +HSPLandroid/view/View;->getBottom()I +HSPLandroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;Z)V +HSPLandroid/view/View;->getClipToOutline()Z +HSPLandroid/view/View;->getContentDescription()Ljava/lang/CharSequence; +HSPLandroid/view/View;->getContext()Landroid/content/Context; +HSPLandroid/view/View;->getDefaultFocusHighlightDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/view/View;->getDefaultFocusHighlightEnabled()Z +HSPLandroid/view/View;->getDefaultSize(II)I +HSPLandroid/view/View;->getDisplay()Landroid/view/Display; +HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/view/RenderNode;)Landroid/view/RenderNode; +HSPLandroid/view/View;->getDrawableState()[I +HSPLandroid/view/View;->getDrawingCache(Z)Landroid/graphics/Bitmap; +HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getDrawingTime()J +HSPLandroid/view/View;->getElevation()F +HSPLandroid/view/View;->getFinalAlpha()F +HSPLandroid/view/View;->getFitsSystemWindows()Z +HSPLandroid/view/View;->getFocusable()I +HSPLandroid/view/View;->getFocusableAttribute(Landroid/content/res/TypedArray;)I +HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable; +HSPLandroid/view/View;->getForegroundGravity()I +HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/View;->getHandler()Landroid/os/Handler; +HSPLandroid/view/View;->getHasOverlappingRendering()Z +HSPLandroid/view/View;->getHeight()I +HSPLandroid/view/View;->getHitRect(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getHorizontalFadingEdgeLength()I +HSPLandroid/view/View;->getHorizontalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getHorizontalScrollbarHeight()I +HSPLandroid/view/View;->getId()I +HSPLandroid/view/View;->getImportantForAccessibility()I +HSPLandroid/view/View;->getImportantForAutofill()I +HSPLandroid/view/View;->getIterableTextForAccessibility()Ljava/lang/CharSequence; +HSPLandroid/view/View;->getLayerType()I +HSPLandroid/view/View;->getLayoutDirection()I +HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/view/View;->getLeft()I +HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo; +HSPLandroid/view/View;->getLocationInSurface([I)V +HSPLandroid/view/View;->getLocationInWindow([I)V +HSPLandroid/view/View;->getLocationOnScreen([I)V +HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix; +HSPLandroid/view/View;->getMeasuredHeight()I +HSPLandroid/view/View;->getMeasuredHeightAndState()I +HSPLandroid/view/View;->getMeasuredState()I +HSPLandroid/view/View;->getMeasuredWidth()I +HSPLandroid/view/View;->getMeasuredWidthAndState()I +HSPLandroid/view/View;->getMinimumHeight()I +HSPLandroid/view/View;->getMinimumWidth()I +HSPLandroid/view/View;->getOutsets(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getOverScrollMode()I +HSPLandroid/view/View;->getPaddingBottom()I +HSPLandroid/view/View;->getPaddingEnd()I +HSPLandroid/view/View;->getPaddingLeft()I +HSPLandroid/view/View;->getPaddingRight()I +HSPLandroid/view/View;->getPaddingStart()I +HSPLandroid/view/View;->getPaddingTop()I +HSPLandroid/view/View;->getParent()Landroid/view/ViewParent; +HSPLandroid/view/View;->getParentForAccessibility()Landroid/view/ViewParent; +HSPLandroid/view/View;->getPivotX()F +HSPLandroid/view/View;->getPivotY()F +HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View; +HSPLandroid/view/View;->getRawLayoutDirection()I +HSPLandroid/view/View;->getRawTextAlignment()I +HSPLandroid/view/View;->getRawTextDirection()I +HSPLandroid/view/View;->getResources()Landroid/content/res/Resources; +HSPLandroid/view/View;->getRevealOnFocusHint()Z +HSPLandroid/view/View;->getRight()I +HSPLandroid/view/View;->getRootView()Landroid/view/View; +HSPLandroid/view/View;->getRotation()F +HSPLandroid/view/View;->getRotationX()F +HSPLandroid/view/View;->getRotationY()F +HSPLandroid/view/View;->getRunQueue()Landroid/view/HandlerActionQueue; +HSPLandroid/view/View;->getScaleX()F +HSPLandroid/view/View;->getScaleY()F +HSPLandroid/view/View;->getScrollBarStyle()I +HSPLandroid/view/View;->getScrollX()I +HSPLandroid/view/View;->getScrollY()I +HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getSuggestedMinimumHeight()I +HSPLandroid/view/View;->getSuggestedMinimumWidth()I +HSPLandroid/view/View;->getSystemUiVisibility()I +HSPLandroid/view/View;->getTag()Ljava/lang/Object; +HSPLandroid/view/View;->getTag(I)Ljava/lang/Object; +HSPLandroid/view/View;->getTextAlignment()I +HSPLandroid/view/View;->getTextDirection()I +HSPLandroid/view/View;->getTop()I +HSPLandroid/view/View;->getTransitionAlpha()F +HSPLandroid/view/View;->getTranslationX()F +HSPLandroid/view/View;->getTranslationY()F +HSPLandroid/view/View;->getTranslationZ()F +HSPLandroid/view/View;->getVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getVerticalScrollbarPosition()I +HSPLandroid/view/View;->getVerticalScrollbarWidth()I +HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; +HSPLandroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver; +HSPLandroid/view/View;->getVisibility()I +HSPLandroid/view/View;->getWidth()I +HSPLandroid/view/View;->getWindowSystemUiVisibility()I +HSPLandroid/view/View;->getWindowToken()Landroid/os/IBinder; +HSPLandroid/view/View;->getWindowVisibility()I +HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->getX()F +HSPLandroid/view/View;->getY()F +HSPLandroid/view/View;->getZ()F +HSPLandroid/view/View;->handleFocusGainInternal(ILandroid/graphics/Rect;)V +HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z +HSPLandroid/view/View;->hasDefaultFocus()Z +HSPLandroid/view/View;->hasFocus()Z +HSPLandroid/view/View;->hasFocusable()Z +HSPLandroid/view/View;->hasFocusable(ZZ)Z +HSPLandroid/view/View;->hasIdentityMatrix()Z +HSPLandroid/view/View;->hasListenersForAccessibility()Z +HSPLandroid/view/View;->hasOnClickListeners()Z +HSPLandroid/view/View;->hasOverlappingRendering()Z +HSPLandroid/view/View;->hasRtlSupport()Z +HSPLandroid/view/View;->hasTransientState()Z +HSPLandroid/view/View;->hasWindowFocus()Z +HSPLandroid/view/View;->hideTooltip()V +HSPLandroid/view/View;->includeForAccessibility()Z +HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/view/View;->initScrollCache()V +HSPLandroid/view/View;->initialAwakenScrollBars()Z +HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V +HSPLandroid/view/View;->internalSetPadding(IIII)V +HSPLandroid/view/View;->invalidate()V +HSPLandroid/view/View;->invalidate(IIII)V +HSPLandroid/view/View;->invalidate(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->invalidate(Z)V +HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V +HSPLandroid/view/View;->invalidateOutline()V +HSPLandroid/view/View;->invalidateParentCaches()V +HSPLandroid/view/View;->invalidateParentIfNeeded()V +HSPLandroid/view/View;->invalidateParentIfNeededAndWasQuickRejected()V +HSPLandroid/view/View;->invalidateViewProperty(ZZ)V +HSPLandroid/view/View;->isAccessibilityFocused()Z +HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z +HSPLandroid/view/View;->isActionableForAccessibility()Z +HSPLandroid/view/View;->isActivated()Z +HSPLandroid/view/View;->isAttachedToWindow()Z +HSPLandroid/view/View;->isAutofillable()Z +HSPLandroid/view/View;->isAutofilled()Z +HSPLandroid/view/View;->isClickable()Z +HSPLandroid/view/View;->isContextClickable()Z +HSPLandroid/view/View;->isDefaultFocusHighlightNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/view/View;->isEnabled()Z +HSPLandroid/view/View;->isFocusable()Z +HSPLandroid/view/View;->isFocusableInTouchMode()Z +HSPLandroid/view/View;->isFocused()Z +HSPLandroid/view/View;->isFocusedByDefault()Z +HSPLandroid/view/View;->isForegroundInsidePadding()Z +HSPLandroid/view/View;->isHardwareAccelerated()Z +HSPLandroid/view/View;->isHorizontalFadingEdgeEnabled()Z +HSPLandroid/view/View;->isHorizontalScrollBarEnabled()Z +HSPLandroid/view/View;->isImportantForAccessibility()Z +HSPLandroid/view/View;->isImportantForAutofill()Z +HSPLandroid/view/View;->isInEditMode()Z +HSPLandroid/view/View;->isInScrollingContainer()Z +HSPLandroid/view/View;->isInTouchMode()Z +HSPLandroid/view/View;->isKeyboardNavigationCluster()Z +HSPLandroid/view/View;->isLaidOut()Z +HSPLandroid/view/View;->isLayoutDirectionInherited()Z +HSPLandroid/view/View;->isLayoutDirectionResolved()Z +HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z +HSPLandroid/view/View;->isLayoutRequested()Z +HSPLandroid/view/View;->isLayoutRtl()Z +HSPLandroid/view/View;->isLongClickable()Z +HSPLandroid/view/View;->isOpaque()Z +HSPLandroid/view/View;->isPaddingRelative()Z +HSPLandroid/view/View;->isPaddingResolved()Z +HSPLandroid/view/View;->isPressed()Z +HSPLandroid/view/View;->isProjectionReceiver()Z +HSPLandroid/view/View;->isRootNamespace()Z +HSPLandroid/view/View;->isRtlCompatibilityMode()Z +HSPLandroid/view/View;->isSelected()Z +HSPLandroid/view/View;->isShown()Z +HSPLandroid/view/View;->isSoundEffectsEnabled()Z +HSPLandroid/view/View;->isTemporarilyDetached()Z +HSPLandroid/view/View;->isTextAlignmentInherited()Z +HSPLandroid/view/View;->isTextAlignmentResolved()Z +HSPLandroid/view/View;->isTextDirectionInherited()Z +HSPLandroid/view/View;->isTextDirectionResolved()Z +HSPLandroid/view/View;->isVerticalScrollBarEnabled()Z +HSPLandroid/view/View;->isVerticalScrollBarHidden()Z +HSPLandroid/view/View;->isViewIdGenerated(I)Z +HSPLandroid/view/View;->isVisibleToUser()Z +HSPLandroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->jumpDrawablesToCurrentState()V +HSPLandroid/view/View;->layout(IIII)V +HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V +HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V +HSPLandroid/view/View;->measure(II)V +HSPLandroid/view/View;->mergeDrawableStates([I[I)[I +HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V +HSPLandroid/view/View;->needRtlPropertiesResolution()Z +HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V +HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V +HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V +HSPLandroid/view/View;->numViewsForAccessibility(Landroid/view/View;)I +HSPLandroid/view/View;->offsetLeftAndRight(I)V +HSPLandroid/view/View;->offsetTopAndBottom(I)V +HSPLandroid/view/View;->onAnimationEnd()V +HSPLandroid/view/View;->onAnimationStart()V +HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroid/view/View;->onAttachedToWindow()V +HSPLandroid/view/View;->onCancelPendingInputEvents()V +HSPLandroid/view/View;->onCheckIsTextEditor()Z +HSPLandroid/view/View;->onCreateDrawableState(I)[I +HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroid/view/View;->onDetachedFromWindow()V +HSPLandroid/view/View;->onDetachedFromWindowInternal()V +HSPLandroid/view/View;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V +HSPLandroid/view/View;->onDrawScrollBars(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawScrollIndicators(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V +HSPLandroid/view/View;->onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->onFinishInflate()V +HSPLandroid/view/View;->onFinishTemporaryDetach()V +HSPLandroid/view/View;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroid/view/View;->onFocusLost()V +HSPLandroid/view/View;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/View;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/View;->onLayout(ZIIII)V +HSPLandroid/view/View;->onMeasure(II)V +HSPLandroid/view/View;->onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V +HSPLandroid/view/View;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V +HSPLandroid/view/View;->onProvideStructureForAssistOrAutofill(Landroid/view/ViewStructure;ZI)V +HSPLandroid/view/View;->onResolveDrawables(I)V +HSPLandroid/view/View;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HSPLandroid/view/View;->onRtlPropertiesChanged(I)V +HSPLandroid/view/View;->onSaveInstanceState()Landroid/os/Parcelable; +HSPLandroid/view/View;->onScrollChanged(IIII)V +HSPLandroid/view/View;->onSetAlpha(I)Z +HSPLandroid/view/View;->onSizeChanged(IIII)V +HSPLandroid/view/View;->onStartTemporaryDetach()V +HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->onVisibilityAggregated(Z)V +HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/view/View;->onWindowFocusChanged(Z)V +HSPLandroid/view/View;->onWindowSystemUiVisibilityChanged(I)V +HSPLandroid/view/View;->onWindowVisibilityChanged(I)V +HSPLandroid/view/View;->performButtonActionOnTouchDown(Landroid/view/MotionEvent;)Z +HSPLandroid/view/View;->performClick()Z +HSPLandroid/view/View;->performCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->playSoundEffect(I)V +HSPLandroid/view/View;->pointInView(FF)Z +HSPLandroid/view/View;->pointInView(FFF)Z +HSPLandroid/view/View;->populateAccessibilityNodeInfoDrawingOrderInParent(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/View;->post(Ljava/lang/Runnable;)Z +HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z +HSPLandroid/view/View;->postInvalidate()V +HSPLandroid/view/View;->postInvalidateDelayed(J)V +HSPLandroid/view/View;->postInvalidateOnAnimation()V +HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V +HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback()V +HSPLandroid/view/View;->rebuildOutline()V +HSPLandroid/view/View;->recomputePadding()V +HSPLandroid/view/View;->refreshDrawableState()V +HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V +HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z +HSPLandroid/view/View;->removeLongPressCallback()V +HSPLandroid/view/View;->removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V +HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->removePerformClickCallback()V +HSPLandroid/view/View;->removeSendViewScrolledAccessibilityEventCallback()V +HSPLandroid/view/View;->removeTapCallback()V +HSPLandroid/view/View;->removeUnsetPressCallback()V +HSPLandroid/view/View;->requestApplyInsets()V +HSPLandroid/view/View;->requestFitSystemWindows()V +HSPLandroid/view/View;->requestFocus()Z +HSPLandroid/view/View;->requestFocus(I)Z +HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z +HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z +HSPLandroid/view/View;->requestLayout()V +HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z +HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z +HSPLandroid/view/View;->resetDisplayList()V +HSPLandroid/view/View;->resetPaddingToInitialValues()V +HSPLandroid/view/View;->resetPressedState()V +HSPLandroid/view/View;->resetResolvedDrawables()V +HSPLandroid/view/View;->resetResolvedDrawablesInternal()V +HSPLandroid/view/View;->resetResolvedLayoutDirection()V +HSPLandroid/view/View;->resetResolvedPadding()V +HSPLandroid/view/View;->resetResolvedPaddingInternal()V +HSPLandroid/view/View;->resetResolvedTextAlignment()V +HSPLandroid/view/View;->resetResolvedTextDirection()V +HSPLandroid/view/View;->resetRtlProperties()V +HSPLandroid/view/View;->resetSubtreeAccessibilityStateChanged()V +HSPLandroid/view/View;->resolveDrawables()V +HSPLandroid/view/View;->resolveLayoutDirection()Z +HSPLandroid/view/View;->resolveLayoutParams()V +HSPLandroid/view/View;->resolvePadding()V +HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z +HSPLandroid/view/View;->resolveSize(II)I +HSPLandroid/view/View;->resolveSizeAndState(III)I +HSPLandroid/view/View;->resolveTextAlignment()Z +HSPLandroid/view/View;->resolveTextDirection()Z +HSPLandroid/view/View;->restoreDefaultFocus()Z +HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V +HSPLandroid/view/View;->rootViewRequestFocus()Z +HSPLandroid/view/View;->saveHierarchyState(Landroid/util/SparseArray;)V +HSPLandroid/view/View;->scrollTo(II)V +HSPLandroid/view/View;->sendAccessibilityEvent(I)V +HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V +HSPLandroid/view/View;->sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->sendAccessibilityEventUncheckedInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/View;->setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V +HSPLandroid/view/View;->setAccessibilityLiveRegion(I)V +HSPLandroid/view/View;->setAccessibilityTraversalAfter(I)V +HSPLandroid/view/View;->setActivated(Z)V +HSPLandroid/view/View;->setAlpha(F)V +HSPLandroid/view/View;->setAlphaNoInvalidation(F)Z +HSPLandroid/view/View;->setAnimation(Landroid/view/animation/Animation;)V +HSPLandroid/view/View;->setAssistBlocked(Z)V +HSPLandroid/view/View;->setAutofilled(Z)V +HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->setBackgroundBounds()V +HSPLandroid/view/View;->setBackgroundColor(I)V +HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/view/RenderNode;)V +HSPLandroid/view/View;->setBackgroundResource(I)V +HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/view/View;->setBackgroundTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/view/View;->setClickable(Z)V +HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V +HSPLandroid/view/View;->setClipToOutline(Z)V +HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setDefaultFocusHighlight(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->setDefaultFocusHighlightEnabled(Z)V +HSPLandroid/view/View;->setDisplayListProperties(Landroid/view/RenderNode;)V +HSPLandroid/view/View;->setDrawingCacheBackgroundColor(I)V +HSPLandroid/view/View;->setDuplicateParentStateEnabled(Z)V +HSPLandroid/view/View;->setElevation(F)V +HSPLandroid/view/View;->setEnabled(Z)V +HSPLandroid/view/View;->setFitsSystemWindows(Z)V +HSPLandroid/view/View;->setFlags(II)V +HSPLandroid/view/View;->setFocusable(I)V +HSPLandroid/view/View;->setFocusable(Z)V +HSPLandroid/view/View;->setFocusableInTouchMode(Z)V +HSPLandroid/view/View;->setForeground(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->setForegroundGravity(I)V +HSPLandroid/view/View;->setFrame(IIII)Z +HSPLandroid/view/View;->setHapticFeedbackEnabled(Z)V +HSPLandroid/view/View;->setHasTransientState(Z)V +HSPLandroid/view/View;->setHorizontalFadingEdgeEnabled(Z)V +HSPLandroid/view/View;->setHorizontalScrollBarEnabled(Z)V +HSPLandroid/view/View;->setId(I)V +HSPLandroid/view/View;->setImportantForAccessibility(I)V +HSPLandroid/view/View;->setImportantForAutofill(I)V +HSPLandroid/view/View;->setIsRootNamespace(Z)V +HSPLandroid/view/View;->setKeepScreenOn(Z)V +HSPLandroid/view/View;->setKeyboardNavigationCluster(Z)V +HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V +HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V +HSPLandroid/view/View;->setLayoutDirection(I)V +HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/View;->setLongClickable(Z)V +HSPLandroid/view/View;->setMeasuredDimension(II)V +HSPLandroid/view/View;->setMeasuredDimensionRaw(II)V +HSPLandroid/view/View;->setMinimumHeight(I)V +HSPLandroid/view/View;->setMinimumWidth(I)V +HSPLandroid/view/View;->setNestedScrollingEnabled(Z)V +HSPLandroid/view/View;->setNextFocusDownId(I)V +HSPLandroid/view/View;->setNextFocusForwardId(I)V +HSPLandroid/view/View;->setNextFocusLeftId(I)V +HSPLandroid/view/View;->setNextFocusRightId(I)V +HSPLandroid/view/View;->setNextFocusUpId(I)V +HSPLandroid/view/View;->setOnApplyWindowInsetsListener(Landroid/view/View$OnApplyWindowInsetsListener;)V +HSPLandroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V +HSPLandroid/view/View;->setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V +HSPLandroid/view/View;->setOnDragListener(Landroid/view/View$OnDragListener;)V +HSPLandroid/view/View;->setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V +HSPLandroid/view/View;->setOnGenericMotionListener(Landroid/view/View$OnGenericMotionListener;)V +HSPLandroid/view/View;->setOnHoverListener(Landroid/view/View$OnHoverListener;)V +HSPLandroid/view/View;->setOnKeyListener(Landroid/view/View$OnKeyListener;)V +HSPLandroid/view/View;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V +HSPLandroid/view/View;->setOnSystemUiVisibilityChangeListener(Landroid/view/View$OnSystemUiVisibilityChangeListener;)V +HSPLandroid/view/View;->setOnTouchListener(Landroid/view/View$OnTouchListener;)V +HSPLandroid/view/View;->setOutlineProvider(Landroid/view/ViewOutlineProvider;)V +HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V +HSPLandroid/view/View;->setOverScrollMode(I)V +HSPLandroid/view/View;->setPadding(IIII)V +HSPLandroid/view/View;->setPaddingRelative(IIII)V +HSPLandroid/view/View;->setPivotX(F)V +HSPLandroid/view/View;->setPivotY(F)V +HSPLandroid/view/View;->setPointerIcon(Landroid/view/PointerIcon;)V +HSPLandroid/view/View;->setPressed(Z)V +HSPLandroid/view/View;->setPressed(ZFF)V +HSPLandroid/view/View;->setRotation(F)V +HSPLandroid/view/View;->setRotationX(F)V +HSPLandroid/view/View;->setRotationY(F)V +HSPLandroid/view/View;->setSaveEnabled(Z)V +HSPLandroid/view/View;->setSaveFromParentEnabled(Z)V +HSPLandroid/view/View;->setScaleX(F)V +HSPLandroid/view/View;->setScaleY(F)V +HSPLandroid/view/View;->setScrollBarStyle(I)V +HSPLandroid/view/View;->setScrollContainer(Z)V +HSPLandroid/view/View;->setSelected(Z)V +HSPLandroid/view/View;->setSoundEffectsEnabled(Z)V +HSPLandroid/view/View;->setStateListAnimator(Landroid/animation/StateListAnimator;)V +HSPLandroid/view/View;->setSystemUiVisibility(I)V +HSPLandroid/view/View;->setTag(ILjava/lang/Object;)V +HSPLandroid/view/View;->setTag(Ljava/lang/Object;)V +HSPLandroid/view/View;->setTagInternal(ILjava/lang/Object;)V +HSPLandroid/view/View;->setTextAlignment(I)V +HSPLandroid/view/View;->setTextDirection(I)V +HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setTouchDelegate(Landroid/view/TouchDelegate;)V +HSPLandroid/view/View;->setTransitionAlpha(F)V +HSPLandroid/view/View;->setTransitionName(Ljava/lang/String;)V +HSPLandroid/view/View;->setTranslationX(F)V +HSPLandroid/view/View;->setTranslationY(F)V +HSPLandroid/view/View;->setTranslationZ(F)V +HSPLandroid/view/View;->setVerticalScrollBarEnabled(Z)V +HSPLandroid/view/View;->setVerticalScrollbarPosition(I)V +HSPLandroid/view/View;->setVisibility(I)V +HSPLandroid/view/View;->setWillNotCacheDrawing(Z)V +HSPLandroid/view/View;->setWillNotDraw(Z)V +HSPLandroid/view/View;->setX(F)V +HSPLandroid/view/View;->setY(F)V +HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z +HSPLandroid/view/View;->sizeChange(IIII)V +HSPLandroid/view/View;->skipInvalidate()Z +HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V +HSPLandroid/view/View;->stopNestedScroll()V +HSPLandroid/view/View;->switchDefaultFocusHighlight()V +HSPLandroid/view/View;->toString()Ljava/lang/String; +HSPLandroid/view/View;->transformFromViewToWindowSpace([I)V +HSPLandroid/view/View;->unFocus(Landroid/view/View;)V +HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/view/RenderNode; +HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V +HSPLandroid/view/View;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/view/View;->willNotDraw()Z +HSPLandroid/view/ViewConfiguration;->(Landroid/content/Context;)V +HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration; +HSPLandroid/view/ViewConfiguration;->getDoubleTapMinTime()I +HSPLandroid/view/ViewConfiguration;->getDoubleTapTimeout()I +HSPLandroid/view/ViewConfiguration;->getLongPressTimeout()I +HSPLandroid/view/ViewConfiguration;->getMinimumFlingVelocity()I +HSPLandroid/view/ViewConfiguration;->getPressedStateDuration()I +HSPLandroid/view/ViewConfiguration;->getScaledDoubleTapSlop()I +HSPLandroid/view/ViewConfiguration;->getScaledDoubleTapTouchSlop()I +HSPLandroid/view/ViewConfiguration;->getScaledEdgeSlop()I +HSPLandroid/view/ViewConfiguration;->getScaledFadingEdgeLength()I +HSPLandroid/view/ViewConfiguration;->getScaledHorizontalScrollFactor()F +HSPLandroid/view/ViewConfiguration;->getScaledMaximumDrawingCacheSize()I +HSPLandroid/view/ViewConfiguration;->getScaledMaximumFlingVelocity()I +HSPLandroid/view/ViewConfiguration;->getScaledMinScrollbarTouchTarget()I +HSPLandroid/view/ViewConfiguration;->getScaledMinimumFlingVelocity()I +HSPLandroid/view/ViewConfiguration;->getScaledOverflingDistance()I +HSPLandroid/view/ViewConfiguration;->getScaledOverscrollDistance()I +HSPLandroid/view/ViewConfiguration;->getScaledPagingTouchSlop()I +HSPLandroid/view/ViewConfiguration;->getScaledScrollBarSize()I +HSPLandroid/view/ViewConfiguration;->getScaledTouchSlop()I +HSPLandroid/view/ViewConfiguration;->getScaledVerticalScrollFactor()F +HSPLandroid/view/ViewConfiguration;->getScaledWindowTouchSlop()I +HSPLandroid/view/ViewConfiguration;->getScrollBarFadeDuration()I +HSPLandroid/view/ViewConfiguration;->getScrollDefaultDelay()I +HSPLandroid/view/ViewConfiguration;->getScrollFriction()F +HSPLandroid/view/ViewConfiguration;->getSendRecurringAccessibilityEventsInterval()J +HSPLandroid/view/ViewConfiguration;->getTapTimeout()I +HSPLandroid/view/ViewConfiguration;->isFadingMarqueeEnabled()Z +HSPLandroid/view/ViewDebug$HierarchyHandler;->dumpViewHierarchyWithProperties(Ljava/io/BufferedWriter;I)V +HSPLandroid/view/ViewDebug$HierarchyHandler;->findHierarchyView(Ljava/lang/String;I)Landroid/view/View; +HSPLandroid/view/ViewDebug;->getViewInstanceCount()J +HSPLandroid/view/ViewDebug;->getViewRootImplCount()J +HSPLandroid/view/ViewGroup$1;->()V +HSPLandroid/view/ViewGroup$2;->(Landroid/view/ViewGroup;)V +HSPLandroid/view/ViewGroup$3;->(Landroid/view/ViewGroup;)V +HSPLandroid/view/ViewGroup$3;->run()V +HSPLandroid/view/ViewGroup$4;->(Landroid/view/ViewGroup;)V +HSPLandroid/view/ViewGroup$4;->run()V +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->()V +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->clear()V +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->getChildAt(I)Landroid/view/View; +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->getChildCount()I +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->init(Landroid/view/ViewGroup;Z)V +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->obtain(Landroid/view/ViewGroup;Z)Landroid/view/ViewGroup$ChildListForAccessibility; +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->recycle()V +HSPLandroid/view/ViewGroup$ChildListForAccessibility;->sort(Ljava/util/ArrayList;)V +HSPLandroid/view/ViewGroup$ChildListForAutoFill;->()V +HSPLandroid/view/ViewGroup$ChildListForAutoFill;->obtain()Landroid/view/ViewGroup$ChildListForAutoFill; +HSPLandroid/view/ViewGroup$ChildListForAutoFill;->recycle()V +HSPLandroid/view/ViewGroup$LayoutParams;->()V +HSPLandroid/view/ViewGroup$LayoutParams;->(II)V +HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V +HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(II)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$MarginLayoutParams;)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->doResolveMargins()V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->getLayoutDirection()I +HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginEnd()I +HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginStart()I +HSPLandroid/view/ViewGroup$MarginLayoutParams;->isMarginRelative()Z +HSPLandroid/view/ViewGroup$MarginLayoutParams;->resolveLayoutDirection(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->setLayoutDirection(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginEnd(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginStart(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMargins(IIII)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginsRelative(IIII)V +HSPLandroid/view/ViewGroup$OnHierarchyChangeListener;->onChildViewAdded(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewGroup$OnHierarchyChangeListener;->onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewGroup$TouchTarget;->()V +HSPLandroid/view/ViewGroup$TouchTarget;->obtain(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget; +HSPLandroid/view/ViewGroup$TouchTarget;->recycle()V +HSPLandroid/view/ViewGroup$ViewLocationHolder;->()V +HSPLandroid/view/ViewGroup$ViewLocationHolder;->clear()V +HSPLandroid/view/ViewGroup$ViewLocationHolder;->compareTo(Landroid/view/ViewGroup$ViewLocationHolder;)I +HSPLandroid/view/ViewGroup$ViewLocationHolder;->compareTo(Ljava/lang/Object;)I +HSPLandroid/view/ViewGroup$ViewLocationHolder;->init(Landroid/view/ViewGroup;Landroid/view/View;)V +HSPLandroid/view/ViewGroup$ViewLocationHolder;->obtain(Landroid/view/ViewGroup;Landroid/view/View;)Landroid/view/ViewGroup$ViewLocationHolder; +HSPLandroid/view/ViewGroup$ViewLocationHolder;->recycle()V +HSPLandroid/view/ViewGroup$ViewLocationHolder;->setComparisonStrategy(I)V +HSPLandroid/view/ViewGroup;->-get0(Landroid/view/ViewGroup;)Landroid/view/animation/Animation$AnimationListener; +HSPLandroid/view/ViewGroup;->-get1(Landroid/view/ViewGroup;)Landroid/view/animation/LayoutAnimationController; +HSPLandroid/view/ViewGroup;->-wrap1(Landroid/view/ViewGroup;)V +HSPLandroid/view/ViewGroup;->(Landroid/content/Context;)V +HSPLandroid/view/ViewGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/ViewGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/view/ViewGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/ViewGroup;->addChildrenForAccessibility(Ljava/util/ArrayList;)V +HSPLandroid/view/ViewGroup;->addFocusables(Ljava/util/ArrayList;II)V +HSPLandroid/view/ViewGroup;->addInArray(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->addTouchTarget(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget; +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z +HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V +HSPLandroid/view/ViewGroup;->attachLayoutAnimationParameters(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;II)V +HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->bindLayoutAnimation(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList; +HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList; +HSPLandroid/view/ViewGroup;->canAnimate()Z +HSPLandroid/view/ViewGroup;->canViewReceivePointerEvents(Landroid/view/View;)Z +HSPLandroid/view/ViewGroup;->cancelAndClearTouchTargets(Landroid/view/MotionEvent;)V +HSPLandroid/view/ViewGroup;->cancelHoverTarget(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->cancelTouchTarget(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/view/ViewGroup;->childDrawableStateChanged(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->childHasTransientStateChanged(Landroid/view/View;Z)V +HSPLandroid/view/ViewGroup;->cleanupLayoutState(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->clearCachedLayoutMode()V +HSPLandroid/view/ViewGroup;->clearChildFocus(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->clearDisappearingChildren()V +HSPLandroid/view/ViewGroup;->clearFocus()V +HSPLandroid/view/ViewGroup;->clearFocusedInCluster()V +HSPLandroid/view/ViewGroup;->clearTouchTargets()V +HSPLandroid/view/ViewGroup;->destroyHardwareResources()V +HSPLandroid/view/ViewGroup;->detachAllViewsFromParent()V +HSPLandroid/view/ViewGroup;->detachViewFromParent(I)V +HSPLandroid/view/ViewGroup;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLandroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchCancelPendingInputEvents()V +HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V +HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V +HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V +HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V +HSPLandroid/view/ViewGroup;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V +HSPLandroid/view/ViewGroup;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V +HSPLandroid/view/ViewGroup;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V +HSPLandroid/view/ViewGroup;->dispatchSetActivated(Z)V +HSPLandroid/view/ViewGroup;->dispatchSetPressed(Z)V +HSPLandroid/view/ViewGroup;->dispatchSetSelected(Z)V +HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V +HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V +HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z +HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z +HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V +HSPLandroid/view/ViewGroup;->dispatchWindowSystemUiVisiblityChanged(I)V +HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V +HSPLandroid/view/ViewGroup;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLandroid/view/ViewGroup;->drawableStateChanged()V +HSPLandroid/view/ViewGroup;->endViewTransition(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->exitHoverTargets()V +HSPLandroid/view/ViewGroup;->exitTooltipHoverTargets()V +HSPLandroid/view/ViewGroup;->findFocus()Landroid/view/View; +HSPLandroid/view/ViewGroup;->findViewByPredicateTraversal(Ljava/util/function/Predicate;Landroid/view/View;)Landroid/view/View; +HSPLandroid/view/ViewGroup;->findViewTraversal(I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; +HSPLandroid/view/ViewGroup;->findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V +HSPLandroid/view/ViewGroup;->finishAnimatingView(Landroid/view/View;Landroid/view/animation/Animation;)V +HSPLandroid/view/ViewGroup;->focusableViewAvailable(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLandroid/view/ViewGroup;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/view/ViewGroup;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/view/ViewGroup;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedIndex(IIZ)I +HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->getChildAt(I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->getChildCount()I +HSPLandroid/view/ViewGroup;->getChildMeasureSpec(III)I +HSPLandroid/view/ViewGroup;->getChildTransformation()Landroid/view/animation/Transformation; +HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z +HSPLandroid/view/ViewGroup;->getChildrenForAutofill(I)Landroid/view/ViewGroup$ChildListForAutoFill; +HSPLandroid/view/ViewGroup;->getClipChildren()Z +HSPLandroid/view/ViewGroup;->getClipToPadding()Z +HSPLandroid/view/ViewGroup;->getDescendantFocusability()I +HSPLandroid/view/ViewGroup;->getFocusedChild()Landroid/view/View; +HSPLandroid/view/ViewGroup;->getLayoutAnimationListener()Landroid/view/animation/Animation$AnimationListener; +HSPLandroid/view/ViewGroup;->getLayoutMode()I +HSPLandroid/view/ViewGroup;->getLayoutTransition()Landroid/animation/LayoutTransition; +HSPLandroid/view/ViewGroup;->getOverlay()Landroid/view/ViewGroupOverlay; +HSPLandroid/view/ViewGroup;->getTempPoint()[F +HSPLandroid/view/ViewGroup;->getTouchTarget(Landroid/view/View;)Landroid/view/ViewGroup$TouchTarget; +HSPLandroid/view/ViewGroup;->getTouchscreenBlocksFocus()Z +HSPLandroid/view/ViewGroup;->handleFocusGainInternal(ILandroid/graphics/Rect;)V +HSPLandroid/view/ViewGroup;->hasBooleanFlag(I)Z +HSPLandroid/view/ViewGroup;->hasChildWithZ()Z +HSPLandroid/view/ViewGroup;->hasDefaultFocus()Z +HSPLandroid/view/ViewGroup;->hasFocus()Z +HSPLandroid/view/ViewGroup;->hasFocusable(ZZ)Z +HSPLandroid/view/ViewGroup;->hasFocusableChild(Z)Z +HSPLandroid/view/ViewGroup;->hasTransientState()Z +HSPLandroid/view/ViewGroup;->indexOfChild(Landroid/view/View;)I +HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/ViewGroup;->initViewGroup()V +HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V +HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewGroup;->isChildrenDrawingOrderEnabled()Z +HSPLandroid/view/ViewGroup;->isLayoutModeOptical()Z +HSPLandroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z +HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z +HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V +HSPLandroid/view/ViewGroup;->layout(IIII)V +HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V +HSPLandroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V +HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/view/ViewGroup;->measureChildren(II)V +HSPLandroid/view/ViewGroup;->notifyAnimationListener()V +HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V +HSPLandroid/view/ViewGroup;->offsetChildrenTopAndBottom(I)V +HSPLandroid/view/ViewGroup;->offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewGroup;->offsetRectBetweenParentAndChild(Landroid/view/View;Landroid/graphics/Rect;ZZ)V +HSPLandroid/view/ViewGroup;->onAttachedToWindow()V +HSPLandroid/view/ViewGroup;->onChildVisibilityChanged(Landroid/view/View;II)V +HSPLandroid/view/ViewGroup;->onCreateDrawableState(I)[I +HSPLandroid/view/ViewGroup;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->onDetachedFromWindow()V +HSPLandroid/view/ViewGroup;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/ViewGroup;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/ViewGroup;->onLayout(ZIIII)V +HSPLandroid/view/ViewGroup;->onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z +HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEventInternal(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewGroup;->onSetLayoutParams(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->onViewAdded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->onViewRemoved(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->populateChildrenForAutofill(Ljava/util/ArrayList;I)V +HSPLandroid/view/ViewGroup;->recreateChildDisplayList(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeAllViews()V +HSPLandroid/view/ViewGroup;->removeAllViewsInLayout()V +HSPLandroid/view/ViewGroup;->removeFromArray(I)V +HSPLandroid/view/ViewGroup;->removePointersFromTouchTargets(I)V +HSPLandroid/view/ViewGroup;->removeView(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeViewAt(I)V +HSPLandroid/view/ViewGroup;->removeViewInLayout(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeViewInternal(Landroid/view/View;)Z +HSPLandroid/view/ViewGroup;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HSPLandroid/view/ViewGroup;->requestFocus(ILandroid/graphics/Rect;)Z +HSPLandroid/view/ViewGroup;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z +HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V +HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V +HSPLandroid/view/ViewGroup;->resetResolvedPadding()V +HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V +HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V +HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V +HSPLandroid/view/ViewGroup;->resetTouchState()V +HSPLandroid/view/ViewGroup;->resolveDrawables()V +HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z +HSPLandroid/view/ViewGroup;->resolveLayoutParams()V +HSPLandroid/view/ViewGroup;->resolvePadding()V +HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z +HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z +HSPLandroid/view/ViewGroup;->resolveTextDirection()Z +HSPLandroid/view/ViewGroup;->restoreDefaultFocus()Z +HSPLandroid/view/ViewGroup;->setAlwaysDrawnWithCacheEnabled(Z)V +HSPLandroid/view/ViewGroup;->setBooleanFlag(IZ)V +HSPLandroid/view/ViewGroup;->setChildrenDrawingCacheEnabled(Z)V +HSPLandroid/view/ViewGroup;->setChildrenDrawingOrderEnabled(Z)V +HSPLandroid/view/ViewGroup;->setClipChildren(Z)V +HSPLandroid/view/ViewGroup;->setClipToPadding(Z)V +HSPLandroid/view/ViewGroup;->setDescendantFocusability(I)V +HSPLandroid/view/ViewGroup;->setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V +HSPLandroid/view/ViewGroup;->setLayoutAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V +HSPLandroid/view/ViewGroup;->setLayoutMode(IZ)V +HSPLandroid/view/ViewGroup;->setLayoutTransition(Landroid/animation/LayoutTransition;)V +HSPLandroid/view/ViewGroup;->setMotionEventSplittingEnabled(Z)V +HSPLandroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V +HSPLandroid/view/ViewGroup;->setTouchscreenBlocksFocus(Z)V +HSPLandroid/view/ViewGroup;->setTransitionGroup(Z)V +HSPLandroid/view/ViewGroup;->shouldBlockFocusForTouchscreen()Z +HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z +HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V +HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V +HSPLandroid/view/ViewGroupOverlay;->(Landroid/content/Context;Landroid/view/View;)V +HSPLandroid/view/ViewGroupOverlay;->add(Landroid/view/View;)V +HSPLandroid/view/ViewManager;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewManager;->removeView(Landroid/view/View;)V +HSPLandroid/view/ViewManager;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewOutlineProvider$1;->()V +HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V +HSPLandroid/view/ViewOutlineProvider$2;->()V +HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V +HSPLandroid/view/ViewOutlineProvider$3;->()V +HSPLandroid/view/ViewOutlineProvider;->()V +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->(Landroid/content/Context;Landroid/view/View;)V +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->add(Landroid/view/View;)V +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->invalidate(Z)V +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->isEmpty()Z +HSPLandroid/view/ViewOverlay$OverlayViewGroup;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewOverlay;->(Landroid/content/Context;Landroid/view/View;)V +HSPLandroid/view/ViewOverlay;->getOverlayView()Landroid/view/ViewGroup; +HSPLandroid/view/ViewOverlay;->isEmpty()Z +HSPLandroid/view/ViewParent;->bringChildToFront(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->canResolveLayoutDirection()Z +HSPLandroid/view/ViewParent;->canResolveTextAlignment()Z +HSPLandroid/view/ViewParent;->canResolveTextDirection()Z +HSPLandroid/view/ViewParent;->childDrawableStateChanged(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->childHasTransientStateChanged(Landroid/view/View;Z)V +HSPLandroid/view/ViewParent;->clearChildFocus(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->createContextMenu(Landroid/view/ContextMenu;)V +HSPLandroid/view/ViewParent;->focusSearch(Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/ViewParent;->focusableViewAvailable(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/ViewParent;->getLayoutDirection()I +HSPLandroid/view/ViewParent;->getParent()Landroid/view/ViewParent; +HSPLandroid/view/ViewParent;->getParentForAccessibility()Landroid/view/ViewParent; +HSPLandroid/view/ViewParent;->getTextAlignment()I +HSPLandroid/view/ViewParent;->getTextDirection()I +HSPLandroid/view/ViewParent;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewParent;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent; +HSPLandroid/view/ViewParent;->isLayoutDirectionResolved()Z +HSPLandroid/view/ViewParent;->isLayoutRequested()Z +HSPLandroid/view/ViewParent;->isTextAlignmentResolved()Z +HSPLandroid/view/ViewParent;->isTextDirectionResolved()Z +HSPLandroid/view/ViewParent;->keyboardNavigationClusterSearch(Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/ViewParent;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V +HSPLandroid/view/ViewParent;->onNestedFling(Landroid/view/View;FFZ)Z +HSPLandroid/view/ViewParent;->onNestedPreFling(Landroid/view/View;FF)Z +HSPLandroid/view/ViewParent;->onNestedPrePerformAccessibilityAction(Landroid/view/View;ILandroid/os/Bundle;)Z +HSPLandroid/view/ViewParent;->onNestedPreScroll(Landroid/view/View;II[I)V +HSPLandroid/view/ViewParent;->onNestedScroll(Landroid/view/View;IIII)V +HSPLandroid/view/ViewParent;->onNestedScrollAccepted(Landroid/view/View;Landroid/view/View;I)V +HSPLandroid/view/ViewParent;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z +HSPLandroid/view/ViewParent;->onStopNestedScroll(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->recomputeViewAttributes(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewParent;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HSPLandroid/view/ViewParent;->requestDisallowInterceptTouchEvent(Z)V +HSPLandroid/view/ViewParent;->requestFitSystemWindows()V +HSPLandroid/view/ViewParent;->requestLayout()V +HSPLandroid/view/ViewParent;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewParent;->requestTransparentRegion(Landroid/view/View;)V +HSPLandroid/view/ViewParent;->showContextMenuForChild(Landroid/view/View;)Z +HSPLandroid/view/ViewParent;->showContextMenuForChild(Landroid/view/View;FF)Z +HSPLandroid/view/ViewParent;->startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode; +HSPLandroid/view/ViewParent;->startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; +HSPLandroid/view/ViewPropertyAnimator$1;->(Landroid/view/ViewPropertyAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$1;->run()V +HSPLandroid/view/ViewPropertyAnimator$2;->(Landroid/view/ViewPropertyAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$2;->run()V +HSPLandroid/view/ViewPropertyAnimator$3;->(Landroid/view/ViewPropertyAnimator;I)V +HSPLandroid/view/ViewPropertyAnimator$3;->run()V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->(Landroid/view/ViewPropertyAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->(Landroid/view/ViewPropertyAnimator;Landroid/view/ViewPropertyAnimator$AnimatorEventListener;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;->(IFF)V +HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->(ILjava/util/ArrayList;)V +HSPLandroid/view/ViewPropertyAnimator;->-get0(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap; +HSPLandroid/view/ViewPropertyAnimator;->-get1(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap; +HSPLandroid/view/ViewPropertyAnimator;->-get2(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap; +HSPLandroid/view/ViewPropertyAnimator;->-get3(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap; +HSPLandroid/view/ViewPropertyAnimator;->-get4(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap; +HSPLandroid/view/ViewPropertyAnimator;->-get5(Landroid/view/ViewPropertyAnimator;)Landroid/animation/Animator$AnimatorListener; +HSPLandroid/view/ViewPropertyAnimator;->-get6(Landroid/view/ViewPropertyAnimator;)Landroid/animation/ValueAnimator$AnimatorUpdateListener; +HSPLandroid/view/ViewPropertyAnimator;->-wrap0(Landroid/view/ViewPropertyAnimator;IF)V +HSPLandroid/view/ViewPropertyAnimator;->-wrap1(Landroid/view/ViewPropertyAnimator;)V +HSPLandroid/view/ViewPropertyAnimator;->(Landroid/view/View;)V +HSPLandroid/view/ViewPropertyAnimator;->alpha(F)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->animateProperty(IF)V +HSPLandroid/view/ViewPropertyAnimator;->animatePropertyBy(IFF)V +HSPLandroid/view/ViewPropertyAnimator;->cancel()V +HSPLandroid/view/ViewPropertyAnimator;->getValue(I)F +HSPLandroid/view/ViewPropertyAnimator;->scaleX(F)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->scaleY(F)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->setDuration(J)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->setListener(Landroid/animation/Animator$AnimatorListener;)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->setStartDelay(J)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->setValue(IF)V +HSPLandroid/view/ViewPropertyAnimator;->start()V +HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V +HSPLandroid/view/ViewPropertyAnimator;->translationX(F)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->withLayer()Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewPropertyAnimator;->withStartAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; +HSPLandroid/view/ViewRootImpl$1;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$4;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$4;->run()V +HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnection;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnection;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V +HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureConnection()V +HSPLandroid/view/ViewRootImpl$ActivityConfigCallback;->onConfigurationChanged(Landroid/content/res/Configuration;I)V +HSPLandroid/view/ViewRootImpl$AsyncInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl$AsyncInputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V +HSPLandroid/view/ViewRootImpl$AsyncInputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$ConfigChangedCallback;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;->run()V +HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V +HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HSPLandroid/view/ViewRootImpl$HighContrastTextManager;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$ImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl$InputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V +HSPLandroid/view/ViewRootImpl$InputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V +HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$InputStage;->finish(Landroid/view/ViewRootImpl$QueuedInputEvent;Z)V +HSPLandroid/view/ViewRootImpl$InputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$InputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V +HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->()V +HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->shouldSendToSynthesizer()Z +HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->shouldSkipIme()Z +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;)V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->removeCallbacksAndRun()V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->run()V +HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->runOrPost(Landroid/view/View;I)V +HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$SyntheticKeyboardHandler;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$SyntheticTouchNavigationHandler$1;->(Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;)V +HSPLandroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$SyntheticTrackballHandler;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$TrackballAxis;->()V +HSPLandroid/view/ViewRootImpl$TraversalRunnable;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V +HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V +HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->maybeUpdatePointerIcon(Landroid/view/MotionEvent;)V +HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I +HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V +HSPLandroid/view/ViewRootImpl$ViewRootHandler;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$ViewRootHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/view/ViewRootImpl$ViewRootHandler;->sendMessageAtTime(Landroid/os/Message;J)Z +HSPLandroid/view/ViewRootImpl$W;->(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V +HSPLandroid/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;ZZI)V +HSPLandroid/view/ViewRootImpl$W;->windowFocusChanged(ZZ)V +HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->(Landroid/view/ViewRootImpl;Landroid/view/InputChannel;Landroid/os/Looper;)V +HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending()V +HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V +HSPLandroid/view/ViewRootImpl$WindowStoppedCallback;->windowStopped(Z)V +HSPLandroid/view/ViewRootImpl;->-get1(Landroid/view/ViewRootImpl;)Landroid/util/MergedConfiguration; +HSPLandroid/view/ViewRootImpl;->-set1(Landroid/view/ViewRootImpl;Z)Z +HSPLandroid/view/ViewRootImpl;->-wrap0(Landroid/view/ViewRootImpl;Landroid/view/View;Landroid/view/View;)Landroid/view/View; +HSPLandroid/view/ViewRootImpl;->-wrap11(Landroid/view/ViewRootImpl;Landroid/view/MotionEvent;)V +HSPLandroid/view/ViewRootImpl;->-wrap13(Landroid/view/ViewRootImpl;Z)V +HSPLandroid/view/ViewRootImpl;->-wrap14(Landroid/view/ViewRootImpl;)V +HSPLandroid/view/ViewRootImpl;->-wrap2(Landroid/view/ViewRootImpl;Z)Z +HSPLandroid/view/ViewRootImpl;->-wrap3(Landroid/view/ViewRootImpl;)Z +HSPLandroid/view/ViewRootImpl;->-wrap5(Landroid/view/ViewRootImpl;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZI)V +HSPLandroid/view/ViewRootImpl;->-wrap6(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->(Landroid/content/Context;Landroid/view/Display;)V +HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V +HSPLandroid/view/ViewRootImpl;->addFirstDrawHandler(Ljava/lang/Runnable;)V +HSPLandroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V +HSPLandroid/view/ViewRootImpl;->addWindowStoppedCallback(Landroid/view/ViewRootImpl$WindowStoppedCallback;)V +HSPLandroid/view/ViewRootImpl;->adjustInputEventForCompatibility(Landroid/view/InputEvent;)V +HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z +HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->changeCanvasOpacity(Z)V +HSPLandroid/view/ViewRootImpl;->checkThread()V +HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V +HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z +HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V +HSPLandroid/view/ViewRootImpl;->dipToPx(I)I +HSPLandroid/view/ViewRootImpl;->dispatchAppVisibility(Z)V +HSPLandroid/view/ViewRootImpl;->dispatchApplyInsets(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->dispatchCheckFocus()V +HSPLandroid/view/ViewRootImpl;->dispatchCloseSystemDialogs(Ljava/lang/String;)V +HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V +HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZI)V +HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)V +HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V +HSPLandroid/view/ViewRootImpl;->doTraversal()V +HSPLandroid/view/ViewRootImpl;->draw(Z)V +HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V +HSPLandroid/view/ViewRootImpl;->drawPending()V +HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/ViewRootImpl;->endDragResizing()V +HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V +HSPLandroid/view/ViewRootImpl;->ensureTouchMode(Z)Z +HSPLandroid/view/ViewRootImpl;->ensureTouchModeLocally(Z)Z +HSPLandroid/view/ViewRootImpl;->enterTouchMode()Z +HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->focusableViewAvailable(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->getAccessibilityFocusedHost()Landroid/view/View; +HSPLandroid/view/ViewRootImpl;->getAccessibilityFocusedRect(Landroid/graphics/Rect;)Z +HSPLandroid/view/ViewRootImpl;->getAccessibilityInteractionController()Landroid/view/AccessibilityInteractionController; +HSPLandroid/view/ViewRootImpl;->getAudioManager()Landroid/media/AudioManager; +HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/ViewRootImpl;->getCommonPredecessor(Landroid/view/View;Landroid/view/View;)Landroid/view/View; +HSPLandroid/view/ViewRootImpl;->getDisplayId()I +HSPLandroid/view/ViewRootImpl;->getHostVisibility()I +HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I +HSPLandroid/view/ViewRootImpl;->getRootMeasureSpec(II)I +HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue; +HSPLandroid/view/ViewRootImpl;->getTextDirection()I +HSPLandroid/view/ViewRootImpl;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/view/ViewRootImpl;->getValidLayoutRequesters(Ljava/util/ArrayList;Z)Ljava/util/ArrayList; +HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View; +HSPLandroid/view/ViewRootImpl;->getWindowFlags()I +HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets; +HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V +HSPLandroid/view/ViewRootImpl;->handleWindowContentChangedEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/ViewRootImpl;->invalidate()V +HSPLandroid/view/ViewRootImpl;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewRootImpl;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent; +HSPLandroid/view/ViewRootImpl;->invalidateRectOnScreen(Landroid/graphics/Rect;)V +HSPLandroid/view/ViewRootImpl;->isInLayout()Z +HSPLandroid/view/ViewRootImpl;->isInLocalFocusMode()Z +HSPLandroid/view/ViewRootImpl;->isInTouchMode()Z +HSPLandroid/view/ViewRootImpl;->isLayoutRequested()Z +HSPLandroid/view/ViewRootImpl;->isTextDirectionResolved()Z +HSPLandroid/view/ViewRootImpl;->isViewDescendantOf(Landroid/view/View;Landroid/view/View;)Z +HSPLandroid/view/ViewRootImpl;->loadSystemProperties()V +HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V +HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V +HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;II)Z +HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V +HSPLandroid/view/ViewRootImpl;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V +HSPLandroid/view/ViewRootImpl;->obtainQueuedInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;I)Landroid/view/ViewRootImpl$QueuedInputEvent; +HSPLandroid/view/ViewRootImpl;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->onPostDraw(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/ViewRootImpl;->onWindowTitleChanged()V +HSPLandroid/view/ViewRootImpl;->pendingDrawFinished()V +HSPLandroid/view/ViewRootImpl;->performConfigurationChange(Landroid/util/MergedConfiguration;ZI)V +HSPLandroid/view/ViewRootImpl;->performDraw()V +HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V +HSPLandroid/view/ViewRootImpl;->performMeasure(II)V +HSPLandroid/view/ViewRootImpl;->performTraversals()V +HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V +HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V +HSPLandroid/view/ViewRootImpl;->postSendWindowContentChangedCallback(Landroid/view/View;I)V +HSPLandroid/view/ViewRootImpl;->profileRendering(Z)V +HSPLandroid/view/ViewRootImpl;->recomputeViewAttributes(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->recycleQueuedInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->registerVectorDrawableAnimator(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)V +HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I +HSPLandroid/view/ViewRootImpl;->removeWindowStoppedCallback(Landroid/view/ViewRootImpl$WindowStoppedCallback;)V +HSPLandroid/view/ViewRootImpl;->reportDrawFinished()V +HSPLandroid/view/ViewRootImpl;->reportNextDraw()V +HSPLandroid/view/ViewRootImpl;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HSPLandroid/view/ViewRootImpl;->requestFitSystemWindows()V +HSPLandroid/view/ViewRootImpl;->requestLayout()V +HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z +HSPLandroid/view/ViewRootImpl;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V +HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V +HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z +HSPLandroid/view/ViewRootImpl;->setAccessibilityFocus(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V +HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V +HSPLandroid/view/ViewRootImpl;->setTag()V +HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->setWindowStopped(Z)V +HSPLandroid/view/ViewRootImpl;->shouldUseDisplaySize(Landroid/view/WindowManager$LayoutParams;)Z +HSPLandroid/view/ViewRootImpl;->updateConfiguration(I)V +HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z +HSPLandroid/view/ViewRootImpl;->windowFocusChanged(ZZ)V +HSPLandroid/view/ViewStructure;->()V +HSPLandroid/view/ViewStructure;->addChildCount(I)I +HSPLandroid/view/ViewStructure;->asyncCommit()V +HSPLandroid/view/ViewStructure;->asyncNewChild(I)Landroid/view/ViewStructure; +HSPLandroid/view/ViewStructure;->getAutofillId()Landroid/view/autofill/AutofillId; +HSPLandroid/view/ViewStructure;->getChildCount()I +HSPLandroid/view/ViewStructure;->getExtras()Landroid/os/Bundle; +HSPLandroid/view/ViewStructure;->getHint()Ljava/lang/CharSequence; +HSPLandroid/view/ViewStructure;->getTempRect()Landroid/graphics/Rect; +HSPLandroid/view/ViewStructure;->getText()Ljava/lang/CharSequence; +HSPLandroid/view/ViewStructure;->getTextSelectionEnd()I +HSPLandroid/view/ViewStructure;->getTextSelectionStart()I +HSPLandroid/view/ViewStructure;->hasExtras()Z +HSPLandroid/view/ViewStructure;->newChild(I)Landroid/view/ViewStructure; +HSPLandroid/view/ViewStructure;->newHtmlInfoBuilder(Ljava/lang/String;)Landroid/view/ViewStructure$HtmlInfo$Builder; +HSPLandroid/view/ViewStructure;->setAccessibilityFocused(Z)V +HSPLandroid/view/ViewStructure;->setActivated(Z)V +HSPLandroid/view/ViewStructure;->setAlpha(F)V +HSPLandroid/view/ViewStructure;->setAssistBlocked(Z)V +HSPLandroid/view/ViewStructure;->setAutofillHints([Ljava/lang/String;)V +HSPLandroid/view/ViewStructure;->setAutofillId(Landroid/view/autofill/AutofillId;)V +HSPLandroid/view/ViewStructure;->setAutofillId(Landroid/view/autofill/AutofillId;I)V +HSPLandroid/view/ViewStructure;->setAutofillOptions([Ljava/lang/CharSequence;)V +HSPLandroid/view/ViewStructure;->setAutofillType(I)V +HSPLandroid/view/ViewStructure;->setAutofillValue(Landroid/view/autofill/AutofillValue;)V +HSPLandroid/view/ViewStructure;->setCheckable(Z)V +HSPLandroid/view/ViewStructure;->setChecked(Z)V +HSPLandroid/view/ViewStructure;->setChildCount(I)V +HSPLandroid/view/ViewStructure;->setClassName(Ljava/lang/String;)V +HSPLandroid/view/ViewStructure;->setClickable(Z)V +HSPLandroid/view/ViewStructure;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/ViewStructure;->setContextClickable(Z)V +HSPLandroid/view/ViewStructure;->setDataIsSensitive(Z)V +HSPLandroid/view/ViewStructure;->setDimens(IIIIII)V +HSPLandroid/view/ViewStructure;->setElevation(F)V +HSPLandroid/view/ViewStructure;->setEnabled(Z)V +HSPLandroid/view/ViewStructure;->setFocusable(Z)V +HSPLandroid/view/ViewStructure;->setFocused(Z)V +HSPLandroid/view/ViewStructure;->setHint(Ljava/lang/CharSequence;)V +HSPLandroid/view/ViewStructure;->setHtmlInfo(Landroid/view/ViewStructure$HtmlInfo;)V +HSPLandroid/view/ViewStructure;->setId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/view/ViewStructure;->setInputType(I)V +HSPLandroid/view/ViewStructure;->setLocaleList(Landroid/os/LocaleList;)V +HSPLandroid/view/ViewStructure;->setLongClickable(Z)V +HSPLandroid/view/ViewStructure;->setOpaque(Z)V +HSPLandroid/view/ViewStructure;->setSelected(Z)V +HSPLandroid/view/ViewStructure;->setText(Ljava/lang/CharSequence;)V +HSPLandroid/view/ViewStructure;->setText(Ljava/lang/CharSequence;II)V +HSPLandroid/view/ViewStructure;->setTextLines([I[I)V +HSPLandroid/view/ViewStructure;->setTextStyle(FIII)V +HSPLandroid/view/ViewStructure;->setTransformation(Landroid/graphics/Matrix;)V +HSPLandroid/view/ViewStructure;->setVisibility(I)V +HSPLandroid/view/ViewStructure;->setWebDomain(Ljava/lang/String;)V +HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/ViewStub;->inflate()Landroid/view/View; +HSPLandroid/view/ViewStub;->inflateViewNoAdd(Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/view/ViewStub;->replaceSelfWithView(Landroid/view/View;Landroid/view/ViewGroup;)V +HSPLandroid/view/ViewStub;->setLayoutInflater(Landroid/view/LayoutInflater;)V +HSPLandroid/view/ViewStub;->setLayoutResource(I)V +HSPLandroid/view/ViewStub;->setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V +HSPLandroid/view/ViewStub;->setVisibility(I)V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->-get0(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;)Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->-set0(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;Ljava/util/ArrayList;)Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->-set1(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;I)I +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->()V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->size()I +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->()V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->getArray()Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access; +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->()V +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->isEmpty()Z +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->reset()V +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->set(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V +HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->setTouchableInsets(I)V +HSPLandroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;->onComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V +HSPLandroid/view/ViewTreeObserver$OnDrawListener;->onDraw()V +HSPLandroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;->onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewTreeObserver$OnGlobalLayoutListener;->onGlobalLayout()V +HSPLandroid/view/ViewTreeObserver$OnPreDrawListener;->onPreDraw()Z +HSPLandroid/view/ViewTreeObserver$OnScrollChangedListener;->onScrollChanged()V +HSPLandroid/view/ViewTreeObserver$OnTouchModeChangeListener;->onTouchModeChanged(Z)V +HSPLandroid/view/ViewTreeObserver;->(Landroid/content/Context;)V +HSPLandroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V +HSPLandroid/view/ViewTreeObserver;->checkIsAlive()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V +HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnEnterAnimationComplete()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalFocusChange(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalLayout()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z +HSPLandroid/view/ViewTreeObserver;->dispatchOnScrollChanged()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnTouchModeChanged(Z)V +HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowAttachedChange(Z)V +HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowFocusChange(Z)V +HSPLandroid/view/ViewTreeObserver;->hasComputeInternalInsetsListeners()Z +HSPLandroid/view/ViewTreeObserver;->isAlive()Z +HSPLandroid/view/ViewTreeObserver;->kill()V +HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V +HSPLandroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V +HSPLandroid/view/Window$Callback;->dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window$Callback;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/Window$Callback;->dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/Window$Callback;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroid/view/Window$Callback;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window$Callback;->dispatchTrackballEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window$Callback;->onActionModeFinished(Landroid/view/ActionMode;)V +HSPLandroid/view/Window$Callback;->onActionModeStarted(Landroid/view/ActionMode;)V +HSPLandroid/view/Window$Callback;->onAttachedToWindow()V +HSPLandroid/view/Window$Callback;->onContentChanged()V +HSPLandroid/view/Window$Callback;->onCreatePanelMenu(ILandroid/view/Menu;)Z +HSPLandroid/view/Window$Callback;->onCreatePanelView(I)Landroid/view/View; +HSPLandroid/view/Window$Callback;->onDetachedFromWindow()V +HSPLandroid/view/Window$Callback;->onMenuItemSelected(ILandroid/view/MenuItem;)Z +HSPLandroid/view/Window$Callback;->onMenuOpened(ILandroid/view/Menu;)Z +HSPLandroid/view/Window$Callback;->onPanelClosed(ILandroid/view/Menu;)V +HSPLandroid/view/Window$Callback;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z +HSPLandroid/view/Window$Callback;->onSearchRequested()Z +HSPLandroid/view/Window$Callback;->onSearchRequested(Landroid/view/SearchEvent;)Z +HSPLandroid/view/Window$Callback;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/Window$Callback;->onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode; +HSPLandroid/view/Window$Callback;->onWindowStartingActionMode(Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; +HSPLandroid/view/Window$OnWindowDismissedCallback;->onWindowDismissed(ZZ)V +HSPLandroid/view/Window$OnWindowSwipeDismissedCallback;->onWindowSwipeDismissed()V +HSPLandroid/view/Window$WindowControllerCallback;->enterPictureInPictureModeIfPossible()V +HSPLandroid/view/Window$WindowControllerCallback;->exitFreeformMode()V +HSPLandroid/view/Window$WindowControllerCallback;->getWindowStackId()I +HSPLandroid/view/Window$WindowControllerCallback;->isTaskRoot()Z +HSPLandroid/view/Window;->(Landroid/content/Context;)V +HSPLandroid/view/Window;->addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/Window;->addFlags(I)V +HSPLandroid/view/Window;->adjustLayoutParamsForSubWindow(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/Window;->alwaysReadCloseOnTouchAttr()V +HSPLandroid/view/Window;->clearContentView()V +HSPLandroid/view/Window;->clearFlags(I)V +HSPLandroid/view/Window;->closeAllPanels()V +HSPLandroid/view/Window;->closePanel(I)V +HSPLandroid/view/Window;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/Window;->findViewById(I)Landroid/view/View; +HSPLandroid/view/Window;->getAttributes()Landroid/view/WindowManager$LayoutParams; +HSPLandroid/view/Window;->getCallback()Landroid/view/Window$Callback; +HSPLandroid/view/Window;->getContainer()Landroid/view/Window; +HSPLandroid/view/Window;->getContext()Landroid/content/Context; +HSPLandroid/view/Window;->getCurrentFocus()Landroid/view/View; +HSPLandroid/view/Window;->getDecorView()Landroid/view/View; +HSPLandroid/view/Window;->getDefaultFeatures(Landroid/content/Context;)I +HSPLandroid/view/Window;->getFeatures()I +HSPLandroid/view/Window;->getForcedWindowFlags()I +HSPLandroid/view/Window;->getLayoutInflater()Landroid/view/LayoutInflater; +HSPLandroid/view/Window;->getLocalFeatures()I +HSPLandroid/view/Window;->getNavigationBarColor()I +HSPLandroid/view/Window;->getStatusBarColor()I +HSPLandroid/view/Window;->getVolumeControlStream()I +HSPLandroid/view/Window;->getWindowControllerCallback()Landroid/view/Window$WindowControllerCallback; +HSPLandroid/view/Window;->getWindowManager()Landroid/view/WindowManager; +HSPLandroid/view/Window;->getWindowStyle()Landroid/content/res/TypedArray; +HSPLandroid/view/Window;->hasFeature(I)Z +HSPLandroid/view/Window;->hasSoftInputMode()Z +HSPLandroid/view/Window;->haveDimAmount()Z +HSPLandroid/view/Window;->invalidatePanelMenu(I)V +HSPLandroid/view/Window;->isActive()Z +HSPLandroid/view/Window;->isDestroyed()Z +HSPLandroid/view/Window;->isFloating()Z +HSPLandroid/view/Window;->isShortcutKey(ILandroid/view/KeyEvent;)Z +HSPLandroid/view/Window;->makeActive()V +HSPLandroid/view/Window;->onActive()V +HSPLandroid/view/Window;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HSPLandroid/view/Window;->onMultiWindowModeChanged()V +HSPLandroid/view/Window;->onPictureInPictureModeChanged(Z)V +HSPLandroid/view/Window;->openPanel(ILandroid/view/KeyEvent;)V +HSPLandroid/view/Window;->peekDecorView()Landroid/view/View; +HSPLandroid/view/Window;->performContextMenuIdentifierAction(II)Z +HSPLandroid/view/Window;->performPanelIdentifierAction(III)Z +HSPLandroid/view/Window;->performPanelShortcut(IILandroid/view/KeyEvent;I)Z +HSPLandroid/view/Window;->reportActivityRelaunched()V +HSPLandroid/view/Window;->requestFeature(I)Z +HSPLandroid/view/Window;->restoreHierarchyState(Landroid/os/Bundle;)V +HSPLandroid/view/Window;->saveHierarchyState()Landroid/os/Bundle; +HSPLandroid/view/Window;->setAttributes(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/Window;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/Window;->setBackgroundDrawableResource(I)V +HSPLandroid/view/Window;->setCallback(Landroid/view/Window$Callback;)V +HSPLandroid/view/Window;->setChildDrawable(ILandroid/graphics/drawable/Drawable;)V +HSPLandroid/view/Window;->setChildInt(II)V +HSPLandroid/view/Window;->setCloseOnSwipeEnabled(Z)V +HSPLandroid/view/Window;->setCloseOnTouchOutside(Z)V +HSPLandroid/view/Window;->setCloseOnTouchOutsideIfNotSet(Z)V +HSPLandroid/view/Window;->setColorMode(I)V +HSPLandroid/view/Window;->setContentView(I)V +HSPLandroid/view/Window;->setContentView(Landroid/view/View;)V +HSPLandroid/view/Window;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/Window;->setDecorCaptionShade(I)V +HSPLandroid/view/Window;->setDefaultWindowFormat(I)V +HSPLandroid/view/Window;->setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V +HSPLandroid/view/Window;->setFeatureDrawableAlpha(II)V +HSPLandroid/view/Window;->setFeatureDrawableResource(II)V +HSPLandroid/view/Window;->setFeatureDrawableUri(ILandroid/net/Uri;)V +HSPLandroid/view/Window;->setFeatureInt(II)V +HSPLandroid/view/Window;->setFlags(II)V +HSPLandroid/view/Window;->setGravity(I)V +HSPLandroid/view/Window;->setLayout(II)V +HSPLandroid/view/Window;->setNavigationBarColor(I)V +HSPLandroid/view/Window;->setNeedsMenuKey(I)V +HSPLandroid/view/Window;->setOnWindowDismissedCallback(Landroid/view/Window$OnWindowDismissedCallback;)V +HSPLandroid/view/Window;->setOnWindowSwipeDismissedCallback(Landroid/view/Window$OnWindowSwipeDismissedCallback;)V +HSPLandroid/view/Window;->setResizingCaptionDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/view/Window;->setSoftInputMode(I)V +HSPLandroid/view/Window;->setStatusBarColor(I)V +HSPLandroid/view/Window;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/view/Window;->setTitleColor(I)V +HSPLandroid/view/Window;->setVolumeControlStream(I)V +HSPLandroid/view/Window;->setWindowControllerCallback(Landroid/view/Window$WindowControllerCallback;)V +HSPLandroid/view/Window;->setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;)V +HSPLandroid/view/Window;->setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;Z)V +HSPLandroid/view/Window;->superDispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/Window;->superDispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/Window;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window;->superDispatchTrackballEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/Window;->takeInputQueue(Landroid/view/InputQueue$Callback;)V +HSPLandroid/view/Window;->takeKeyEvents(Z)V +HSPLandroid/view/Window;->takeSurface(Landroid/view/SurfaceHolder$Callback2;)V +HSPLandroid/view/Window;->togglePanel(ILandroid/view/KeyEvent;)V +HSPLandroid/view/WindowCallbackWrapper;->(Landroid/view/Window$Callback;)V +HSPLandroid/view/WindowCallbackWrapper;->onAttachedToWindow()V +HSPLandroid/view/WindowCallbackWrapper;->onCreatePanelMenu(ILandroid/view/Menu;)Z +HSPLandroid/view/WindowCallbackWrapper;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z +HSPLandroid/view/WindowCallbackWrapper;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroid/view/WindowCallbackWrapper;->onWindowFocusChanged(Z)V +HSPLandroid/view/WindowCallbacks;->onContentDrawn(IIII)Z +HSPLandroid/view/WindowCallbacks;->onPostDraw(Landroid/view/DisplayListCanvas;)V +HSPLandroid/view/WindowCallbacks;->onRequestDraw(Z)V +HSPLandroid/view/WindowCallbacks;->onWindowDragResizeEnd()V +HSPLandroid/view/WindowCallbacks;->onWindowDragResizeStart(Landroid/graphics/Rect;ZLandroid/graphics/Rect;Landroid/graphics/Rect;I)V +HSPLandroid/view/WindowCallbacks;->onWindowSizeIsChanging(Landroid/graphics/Rect;ZLandroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/view/WindowInsets;->(Landroid/graphics/Rect;)V +HSPLandroid/view/WindowInsets;->(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V +HSPLandroid/view/WindowInsets;->(Landroid/view/WindowInsets;)V +HSPLandroid/view/WindowInsets;->consumeStableInsets()Landroid/view/WindowInsets; +HSPLandroid/view/WindowInsets;->consumeSystemWindowInsets()Landroid/view/WindowInsets; +HSPLandroid/view/WindowInsets;->getStableInsetBottom()I +HSPLandroid/view/WindowInsets;->getStableInsetLeft()I +HSPLandroid/view/WindowInsets;->getStableInsetRight()I +HSPLandroid/view/WindowInsets;->getStableInsetTop()I +HSPLandroid/view/WindowInsets;->getSystemWindowInsetBottom()I +HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I +HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I +HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I +HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Rect; +HSPLandroid/view/WindowInsets;->isConsumed()Z +HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets; +HSPLandroid/view/WindowInsets;->shouldAlwaysConsumeNavBar()Z +HSPLandroid/view/WindowLeaked;->(Ljava/lang/String;)V +HSPLandroid/view/WindowManager$LayoutParams$1;->()V +HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams; +HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/WindowManager$LayoutParams;->()V +HSPLandroid/view/WindowManager$LayoutParams;->(IIIII)V +HSPLandroid/view/WindowManager$LayoutParams;->(IIIIIII)V +HSPLandroid/view/WindowManager$LayoutParams;->(Landroid/os/Parcel;)V +HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I +HSPLandroid/view/WindowManager$LayoutParams;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/view/WindowManager$LayoutParams;->mayUseInputMethod(I)Z +HSPLandroid/view/WindowManager$LayoutParams;->setColorMode(I)V +HSPLandroid/view/WindowManager$LayoutParams;->setSurfaceInsets(Landroid/view/View;ZZ)V +HSPLandroid/view/WindowManager$LayoutParams;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/WindowManager;->getCurrentImeTouchRegion()Landroid/graphics/Region; +HSPLandroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; +HSPLandroid/view/WindowManager;->removeViewImmediate(Landroid/view/View;)V +HSPLandroid/view/WindowManager;->requestAppKeyboardShortcuts(Landroid/view/WindowManager$KeyboardShortcutsReceiver;I)V +HSPLandroid/view/WindowManagerGlobal$1;->()V +HSPLandroid/view/WindowManagerGlobal$2;->(Landroid/view/WindowManagerGlobal;)V +HSPLandroid/view/WindowManagerGlobal;->()V +HSPLandroid/view/WindowManagerGlobal;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;Landroid/view/Display;Landroid/view/Window;)V +HSPLandroid/view/WindowManagerGlobal;->changeCanvasOpacity(Landroid/os/IBinder;Z)V +HSPLandroid/view/WindowManagerGlobal;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V +HSPLandroid/view/WindowManagerGlobal;->findViewLocked(Landroid/view/View;Z)I +HSPLandroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal; +HSPLandroid/view/WindowManagerGlobal;->getRootViews(Landroid/os/IBinder;)Ljava/util/ArrayList; +HSPLandroid/view/WindowManagerGlobal;->getWindowManagerService()Landroid/view/IWindowManager; +HSPLandroid/view/WindowManagerGlobal;->getWindowSession()Landroid/view/IWindowSession; +HSPLandroid/view/WindowManagerGlobal;->initialize()V +HSPLandroid/view/WindowManagerGlobal;->peekWindowSession()Landroid/view/IWindowSession; +HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V +HSPLandroid/view/WindowManagerGlobal;->shouldDestroyEglContext(I)Z +HSPLandroid/view/WindowManagerGlobal;->trimForeground()V +HSPLandroid/view/WindowManagerGlobal;->trimMemory(I)V +HSPLandroid/view/WindowManagerGlobal;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/WindowManagerImpl;->(Landroid/content/Context;)V +HSPLandroid/view/WindowManagerImpl;->(Landroid/content/Context;Landroid/view/Window;)V +HSPLandroid/view/WindowManagerImpl;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/WindowManagerImpl;->applyDefaultToken(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/WindowManagerImpl;->createLocalWindowManager(Landroid/view/Window;)Landroid/view/WindowManagerImpl; +HSPLandroid/view/WindowManagerImpl;->getDefaultDisplay()Landroid/view/Display; +HSPLandroid/view/WindowManagerImpl;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/accessibility/AccessibilityEvent$1;->()V +HSPLandroid/view/accessibility/AccessibilityEvent;->()V +HSPLandroid/view/accessibility/AccessibilityEvent;->clear()V +HSPLandroid/view/accessibility/AccessibilityEvent;->getEventType()I +HSPLandroid/view/accessibility/AccessibilityEvent;->getRecordCount()I +HSPLandroid/view/accessibility/AccessibilityEvent;->obtain()Landroid/view/accessibility/AccessibilityEvent; +HSPLandroid/view/accessibility/AccessibilityEvent;->obtain(I)Landroid/view/accessibility/AccessibilityEvent; +HSPLandroid/view/accessibility/AccessibilityEvent;->recycle()V +HSPLandroid/view/accessibility/AccessibilityEvent;->setContentChangeTypes(I)V +HSPLandroid/view/accessibility/AccessibilityEvent;->setEventTime(J)V +HSPLandroid/view/accessibility/AccessibilityEvent;->setEventType(I)V +HSPLandroid/view/accessibility/AccessibilityEvent;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityEvent;->writeAccessibilityRecordToParcel(Landroid/view/accessibility/AccessibilityRecord;Landroid/os/Parcel;I)V +HSPLandroid/view/accessibility/AccessibilityEvent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/accessibility/AccessibilityEventSource;->sendAccessibilityEvent(I)V +HSPLandroid/view/accessibility/AccessibilityEventSource;->sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/accessibility/AccessibilityManager$1;->(Landroid/view/accessibility/AccessibilityManager;)V +HSPLandroid/view/accessibility/AccessibilityManager$1;->setRelevantEventTypes(I)V +HSPLandroid/view/accessibility/AccessibilityManager$1;->setState(I)V +HSPLandroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V +HSPLandroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;->onAccessibilityStateChanged(Z)V +HSPLandroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;->onHighTextContrastStateChanged(Z)V +HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;->(Landroid/view/accessibility/AccessibilityManager;)V +HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;->(Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager$MyCallback;)V +HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;->handleMessage(Landroid/os/Message;)Z +HSPLandroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;->onTouchExplorationStateChanged(Z)V +HSPLandroid/view/accessibility/AccessibilityManager;->-get0(Landroid/view/accessibility/AccessibilityManager;)Ljava/lang/Object; +HSPLandroid/view/accessibility/AccessibilityManager;->-wrap0(Landroid/view/accessibility/AccessibilityManager;I)V +HSPLandroid/view/accessibility/AccessibilityManager;->(Landroid/content/Context;Landroid/view/accessibility/IAccessibilityManager;I)V +HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;)I +HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z +HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V +HSPLandroid/view/accessibility/AccessibilityManager;->addHighTextContrastStateChangeListener(Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;Landroid/os/Handler;)V +HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z +HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;Landroid/os/Handler;)V +HSPLandroid/view/accessibility/AccessibilityManager;->getEnabledAccessibilityServiceList(I)Ljava/util/List; +HSPLandroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager; +HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager; +HSPLandroid/view/accessibility/AccessibilityManager;->isAccessibilityVolumeStreamActive()Z +HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z +HSPLandroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z +HSPLandroid/view/accessibility/AccessibilityManager;->isTouchExplorationEnabled()Z +HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityStateChanged()V +HSPLandroid/view/accessibility/AccessibilityManager;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/view/accessibility/AccessibilityManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +HSPLandroid/view/accessibility/AccessibilityManager;->setStateLocked(I)V +HSPLandroid/view/accessibility/AccessibilityManager;->tryConnectToServiceLocked(Landroid/view/accessibility/IAccessibilityManager;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$1;->()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->(ILjava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getLabel()Ljava/lang/CharSequence; +HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->hashCode()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->(IIZI)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->clear()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->getColumnCount()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->getRowCount()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->getSelectionMode()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->isHierarchical()Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->obtain(IIZI)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo; +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;->recycle()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->(IIIIZZ)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->clear()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->getColumnIndex()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->getColumnSpan()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->getRowIndex()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->getRowSpan()I +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->isHeading()Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->isSelected()Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->obtain(IIIIZZ)Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo; +HSPLandroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;->recycle()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addAction(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addActionUnchecked(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addChildInternal(Landroid/view/View;IZ)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addChildUnchecked(Landroid/view/View;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->addStandardActions(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->clear()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->enforceNotSealed()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->getAccessibilityViewId(J)I +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->getActionSingletonBySerializationFlag(I)Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->getBoundsInScreen(Landroid/graphics/Rect;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->getVirtualDescendantId(J)I +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->init(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->isDefaultStandardAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->isSealed()Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->makeNodeId(II)J +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->obtain()Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->obtain(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->recycle()V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->removeAction(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setAccessibilityFocused(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setAvailableExtraData(Ljava/util/List;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setBooleanProperty(IZ)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setBoundsInParent(Landroid/graphics/Rect;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setBoundsInScreen(Landroid/graphics/Rect;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setClickable(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setCollectionInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionInfo;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setCollectionItemInfo(Landroid/view/accessibility/AccessibilityNodeInfo$CollectionItemInfo;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setContextClickable(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setDrawingOrder(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setEnabled(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setFocusable(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setFocused(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setHintText(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setImportantForAccessibility(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setLiveRegion(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setLongClickable(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setMovementGranularities(I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setMultiLine(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setPackageName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setParent(Landroid/view/View;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setParent(Landroid/view/View;I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setPassword(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setSelected(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setShowingHintText(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setSource(Landroid/view/View;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setSource(Landroid/view/View;I)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setText(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setTextSelection(II)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setViewIdResourceName(Ljava/lang/String;)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->setVisibleToUser(Z)V +HSPLandroid/view/accessibility/AccessibilityNodeInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/accessibility/AccessibilityRecord;->()V +HSPLandroid/view/accessibility/AccessibilityRecord;->clear()V +HSPLandroid/view/accessibility/AccessibilityRecord;->enforceNotSealed()V +HSPLandroid/view/accessibility/AccessibilityRecord;->getText()Ljava/util/List; +HSPLandroid/view/accessibility/AccessibilityRecord;->isSealed()Z +HSPLandroid/view/accessibility/AccessibilityRecord;->setBooleanProperty(IZ)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setCurrentItemIndex(I)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setEnabled(Z)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setFullScreen(Z)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setItemCount(I)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setPassword(Z)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setScrollable(Z)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setSource(Landroid/view/View;)V +HSPLandroid/view/accessibility/AccessibilityRecord;->setSource(Landroid/view/View;I)V +HSPLandroid/view/accessibility/CaptioningManager$1;->(Landroid/view/accessibility/CaptioningManager;)V +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->(IIIIILjava/lang/String;)V +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->getTypeface()Landroid/graphics/Typeface; +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasBackgroundColor()Z +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasColor(I)Z +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasEdgeColor()Z +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasEdgeType()Z +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasForegroundColor()Z +HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;->hasWindowColor()Z +HSPLandroid/view/accessibility/CaptioningManager$CaptioningChangeListener;->()V +HSPLandroid/view/accessibility/CaptioningManager$MyContentObserver;->(Landroid/view/accessibility/CaptioningManager;Landroid/os/Handler;)V +HSPLandroid/view/accessibility/CaptioningManager;->(Landroid/content/Context;)V +HSPLandroid/view/accessibility/CaptioningManager;->addCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V +HSPLandroid/view/accessibility/CaptioningManager;->getFontScale()F +HSPLandroid/view/accessibility/CaptioningManager;->getLocale()Ljava/util/Locale; +HSPLandroid/view/accessibility/CaptioningManager;->getRawLocale()Ljava/lang/String; +HSPLandroid/view/accessibility/CaptioningManager;->getRawUserStyle()I +HSPLandroid/view/accessibility/CaptioningManager;->getUserStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle; +HSPLandroid/view/accessibility/CaptioningManager;->isEnabled()Z +HSPLandroid/view/accessibility/CaptioningManager;->registerObserver(Ljava/lang/String;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->()V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfoByAccessibilityId(JLandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;Landroid/os/Bundle;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfosByText(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->findAccessibilityNodeInfosByViewId(JLjava/lang/String;Landroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->findFocus(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->focusSearch(JILandroid/graphics/Region;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJLandroid/view/MagnificationSpec;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnection;->performAccessibilityAction(JILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIJ)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setFindAccessibilityNodeInfoResult(Landroid/view/accessibility/AccessibilityNodeInfo;I)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V +HSPLandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setPerformAccessibilityActionResult(ZI)V +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;I)I +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V +HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +HSPLandroid/view/accessibility/IAccessibilityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManager; +HSPLandroid/view/accessibility/IAccessibilityManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;I)I +HSPLandroid/view/accessibility/IAccessibilityManager;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J +HSPLandroid/view/accessibility/IAccessibilityManager;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +HSPLandroid/view/accessibility/IAccessibilityManager;->getInstalledAccessibilityServiceList(I)Ljava/util/List; +HSPLandroid/view/accessibility/IAccessibilityManager;->getWindowToken(II)Landroid/os/IBinder; +HSPLandroid/view/accessibility/IAccessibilityManager;->interrupt(I)V +HSPLandroid/view/accessibility/IAccessibilityManager;->notifyAccessibilityButtonClicked()V +HSPLandroid/view/accessibility/IAccessibilityManager;->notifyAccessibilityButtonVisibilityChanged(Z)V +HSPLandroid/view/accessibility/IAccessibilityManager;->performAccessibilityShortcut()V +HSPLandroid/view/accessibility/IAccessibilityManager;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;I)V +HSPLandroid/view/accessibility/IAccessibilityManager;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V +HSPLandroid/view/accessibility/IAccessibilityManager;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V +HSPLandroid/view/accessibility/IAccessibilityManager;->sendFingerprintGesture(I)Z +HSPLandroid/view/accessibility/IAccessibilityManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +HSPLandroid/view/accessibility/IAccessibilityManager;->temporaryEnableAccessibilityStateUntilKeyguardRemoved(Landroid/content/ComponentName;Z)V +HSPLandroid/view/accessibility/IAccessibilityManager;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V +HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->()V +HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLandroid/view/accessibility/IAccessibilityManagerClient;->notifyServicesStateChanged()V +HSPLandroid/view/accessibility/IAccessibilityManagerClient;->setRelevantEventTypes(I)V +HSPLandroid/view/accessibility/IAccessibilityManagerClient;->setState(I)V +HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->()V +HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/AccelerateInterpolator;->()V +HSPLandroid/view/animation/AccelerateInterpolator;->(F)V +HSPLandroid/view/animation/AccelerateInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/AlphaAnimation;->(FF)V +HSPLandroid/view/animation/AlphaAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/AlphaAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/AlphaAnimation;->hasAlpha()Z +HSPLandroid/view/animation/AlphaAnimation;->willChangeBounds()Z +HSPLandroid/view/animation/AlphaAnimation;->willChangeTransformationMatrix()Z +HSPLandroid/view/animation/Animation$1;->(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$1;->run()V +HSPLandroid/view/animation/Animation$2;->(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$3;->(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$3;->run()V +HSPLandroid/view/animation/Animation$AnimationListener;->onAnimationEnd(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$AnimationListener;->onAnimationRepeat(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$AnimationListener;->onAnimationStart(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/Animation$Description;->()V +HSPLandroid/view/animation/Animation$Description;->parseValue(Landroid/util/TypedValue;)Landroid/view/animation/Animation$Description; +HSPLandroid/view/animation/Animation;->()V +HSPLandroid/view/animation/Animation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/Animation;->cancel()V +HSPLandroid/view/animation/Animation;->clone()Landroid/view/animation/Animation; +HSPLandroid/view/animation/Animation;->detach()V +HSPLandroid/view/animation/Animation;->ensureInterpolator()V +HSPLandroid/view/animation/Animation;->finalize()V +HSPLandroid/view/animation/Animation;->fireAnimationEnd()V +HSPLandroid/view/animation/Animation;->fireAnimationStart()V +HSPLandroid/view/animation/Animation;->getDuration()J +HSPLandroid/view/animation/Animation;->getFillAfter()Z +HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Animation;->getScaleFactor()F +HSPLandroid/view/animation/Animation;->getStartOffset()J +HSPLandroid/view/animation/Animation;->getStartTime()J +HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z +HSPLandroid/view/animation/Animation;->hasAlpha()Z +HSPLandroid/view/animation/Animation;->hasEnded()Z +HSPLandroid/view/animation/Animation;->hasStarted()Z +HSPLandroid/view/animation/Animation;->initialize(IIII)V +HSPLandroid/view/animation/Animation;->initializeInvalidateRegion(IIII)V +HSPLandroid/view/animation/Animation;->isCanceled()Z +HSPLandroid/view/animation/Animation;->isFillEnabled()Z +HSPLandroid/view/animation/Animation;->isInitialized()Z +HSPLandroid/view/animation/Animation;->reset()V +HSPLandroid/view/animation/Animation;->resolveSize(IFII)F +HSPLandroid/view/animation/Animation;->setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V +HSPLandroid/view/animation/Animation;->setBackgroundColor(I)V +HSPLandroid/view/animation/Animation;->setDetachWallpaper(Z)V +HSPLandroid/view/animation/Animation;->setDuration(J)V +HSPLandroid/view/animation/Animation;->setFillAfter(Z)V +HSPLandroid/view/animation/Animation;->setFillBefore(Z)V +HSPLandroid/view/animation/Animation;->setFillEnabled(Z)V +HSPLandroid/view/animation/Animation;->setInterpolator(Landroid/content/Context;I)V +HSPLandroid/view/animation/Animation;->setInterpolator(Landroid/view/animation/Interpolator;)V +HSPLandroid/view/animation/Animation;->setListenerHandler(Landroid/os/Handler;)V +HSPLandroid/view/animation/Animation;->setRepeatCount(I)V +HSPLandroid/view/animation/Animation;->setRepeatMode(I)V +HSPLandroid/view/animation/Animation;->setStartOffset(J)V +HSPLandroid/view/animation/Animation;->setStartTime(J)V +HSPLandroid/view/animation/Animation;->setZAdjustment(I)V +HSPLandroid/view/animation/Animation;->willChangeBounds()Z +HSPLandroid/view/animation/Animation;->willChangeTransformationMatrix()Z +HSPLandroid/view/animation/AnimationSet;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/AnimationSet;->addAnimation(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/AnimationSet;->clone()Landroid/view/animation/Animation; +HSPLandroid/view/animation/AnimationSet;->clone()Landroid/view/animation/AnimationSet; +HSPLandroid/view/animation/AnimationSet;->getAnimations()Ljava/util/List; +HSPLandroid/view/animation/AnimationSet;->getDuration()J +HSPLandroid/view/animation/AnimationSet;->getStartTime()J +HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/AnimationSet;->hasAlpha()Z +HSPLandroid/view/animation/AnimationSet;->init()V +HSPLandroid/view/animation/AnimationSet;->initialize(IIII)V +HSPLandroid/view/animation/AnimationSet;->initializeInvalidateRegion(IIII)V +HSPLandroid/view/animation/AnimationSet;->reset()V +HSPLandroid/view/animation/AnimationSet;->restoreChildrenStartOffset()V +HSPLandroid/view/animation/AnimationSet;->setDuration(J)V +HSPLandroid/view/animation/AnimationSet;->setFillAfter(Z)V +HSPLandroid/view/animation/AnimationSet;->setFillBefore(Z)V +HSPLandroid/view/animation/AnimationSet;->setFlag(IZ)V +HSPLandroid/view/animation/AnimationSet;->setRepeatMode(I)V +HSPLandroid/view/animation/AnimationSet;->setStartOffset(J)V +HSPLandroid/view/animation/AnimationSet;->setStartTime(J)V +HSPLandroid/view/animation/AnimationSet;->willChangeBounds()Z +HSPLandroid/view/animation/AnimationSet;->willChangeTransformationMatrix()Z +HSPLandroid/view/animation/AnimationUtils$1;->()V +HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Landroid/view/animation/AnimationUtils$AnimationState; +HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Ljava/lang/Object; +HSPLandroid/view/animation/AnimationUtils$AnimationState;->()V +HSPLandroid/view/animation/AnimationUtils$AnimationState;->(Landroid/view/animation/AnimationUtils$AnimationState;)V +HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation; +HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation; +HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->createLayoutAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/LayoutAnimationController; +HSPLandroid/view/animation/AnimationUtils;->createLayoutAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/view/animation/LayoutAnimationController; +HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J +HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; +HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController; +HSPLandroid/view/animation/AnimationUtils;->lockAnimationClock(J)V +HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V +HSPLandroid/view/animation/BaseInterpolator;->()V +HSPLandroid/view/animation/BaseInterpolator;->getChangingConfiguration()I +HSPLandroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V +HSPLandroid/view/animation/CycleInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/DecelerateInterpolator;->()V +HSPLandroid/view/animation/DecelerateInterpolator;->(F)V +HSPLandroid/view/animation/DecelerateInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/DecelerateInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/LayoutAnimationController$AnimationParameters;->()V +HSPLandroid/view/animation/LayoutAnimationController;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/LayoutAnimationController;->(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/LayoutAnimationController;->(Landroid/view/animation/Animation;F)V +HSPLandroid/view/animation/LayoutAnimationController;->getAnimation()Landroid/view/animation/Animation; +HSPLandroid/view/animation/LayoutAnimationController;->getAnimationForView(Landroid/view/View;)Landroid/view/animation/Animation; +HSPLandroid/view/animation/LayoutAnimationController;->getDelayForView(Landroid/view/View;)J +HSPLandroid/view/animation/LayoutAnimationController;->getOrder()I +HSPLandroid/view/animation/LayoutAnimationController;->getTransformedIndex(Landroid/view/animation/LayoutAnimationController$AnimationParameters;)I +HSPLandroid/view/animation/LayoutAnimationController;->isDone()Z +HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/content/Context;I)V +HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/view/animation/Animation;)V +HSPLandroid/view/animation/LayoutAnimationController;->setDelay(F)V +HSPLandroid/view/animation/LayoutAnimationController;->start()V +HSPLandroid/view/animation/LayoutAnimationController;->willOverlap()Z +HSPLandroid/view/animation/LinearInterpolator;->()V +HSPLandroid/view/animation/LinearInterpolator;->createNativeInterpolator()J +HSPLandroid/view/animation/LinearInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/OvershootInterpolator;->()V +HSPLandroid/view/animation/PathInterpolator;->(FFFF)V +HSPLandroid/view/animation/PathInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/PathInterpolator;->(Landroid/graphics/Path;)V +HSPLandroid/view/animation/PathInterpolator;->createNativeInterpolator()J +HSPLandroid/view/animation/PathInterpolator;->getInterpolation(F)F +HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V +HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V +HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V +HSPLandroid/view/animation/Transformation;->()V +HSPLandroid/view/animation/Transformation;->clear()V +HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->getAlpha()F +HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix; +HSPLandroid/view/animation/Transformation;->getTransformationType()I +HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->setAlpha(F)V +HSPLandroid/view/animation/TranslateAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/TranslateAnimation;->initialize(IIII)V +HSPLandroid/view/autofill/AutofillId$1;->()V +HSPLandroid/view/autofill/AutofillId;->(I)V +HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->autofillCallbackAuthenticate(ILandroid/content/IntentSender;Landroid/content/Intent;)V +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->autofillCallbackRequestHideFillUi()Z +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->autofillCallbackRequestShowFillUi(Landroid/view/View;IILandroid/graphics/Rect;Landroid/view/autofill/IAutofillWindowPresenter;)Z +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->autofillCallbackResetableStateAvailable()V +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->findViewByAutofillIdTraversal(I)Landroid/view/View; +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->findViewsByAutofillIdTraversal([I)[Landroid/view/View; +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->getViewVisibility([I)[Z +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->isVisibleForAutofill()Z +HSPLandroid/view/autofill/AutofillManager$AutofillClient;->runOnUiThread(Ljava/lang/Runnable;)V +HSPLandroid/view/autofill/AutofillManager$AutofillManagerClient;->(Landroid/view/autofill/AutofillManager;)V +HSPLandroid/view/autofill/AutofillManager;->(Landroid/content/Context;Landroid/view/autofill/IAutoFillManager;)V +HSPLandroid/view/autofill/AutofillManager;->ensureServiceClientAddedIfNeededLocked()V +HSPLandroid/view/autofill/AutofillManager;->getAutofillId(Landroid/view/View;)Landroid/view/autofill/AutofillId; +HSPLandroid/view/autofill/AutofillManager;->getClientLocked()Landroid/view/autofill/AutofillManager$AutofillClient; +HSPLandroid/view/autofill/AutofillManager;->hasAutofillFeature()Z +HSPLandroid/view/autofill/AutofillManager;->isActiveLocked()Z +HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V +HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;)V +HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;I)V +HSPLandroid/view/autofill/AutofillManager;->notifyViewExited(Landroid/view/View;)V +HSPLandroid/view/autofill/AutofillManager;->notifyViewVisibilityChanged(Landroid/view/View;Z)V +HSPLandroid/view/autofill/AutofillManager;->notifyViewVisibilityChangedInternal(Landroid/view/View;IZZ)V +HSPLandroid/view/autofill/AutofillManager;->startSessionLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;I)V +HSPLandroid/view/autofill/AutofillValue$1;->()V +HSPLandroid/view/autofill/AutofillValue;->(ILjava/lang/Object;)V +HSPLandroid/view/autofill/AutofillValue;->forText(Ljava/lang/CharSequence;)Landroid/view/autofill/AutofillValue; +HSPLandroid/view/autofill/AutofillValue;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;)I +HSPLandroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager; +HSPLandroid/view/autofill/IAutoFillManager;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I +HSPLandroid/view/autofill/IAutoFillManager;->cancelSession(II)V +HSPLandroid/view/autofill/IAutoFillManager;->disableOwnedAutofillServices(I)V +HSPLandroid/view/autofill/IAutoFillManager;->finishSession(II)V +HSPLandroid/view/autofill/IAutoFillManager;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +HSPLandroid/view/autofill/IAutoFillManager;->isServiceEnabled(ILjava/lang/String;)Z +HSPLandroid/view/autofill/IAutoFillManager;->isServiceSupported(I)Z +HSPLandroid/view/autofill/IAutoFillManager;->onPendingSaveUi(ILandroid/os/IBinder;)V +HSPLandroid/view/autofill/IAutoFillManager;->restoreSession(ILandroid/os/IBinder;Landroid/os/IBinder;)Z +HSPLandroid/view/autofill/IAutoFillManager;->setAuthenticationResult(Landroid/os/Bundle;III)V +HSPLandroid/view/autofill/IAutoFillManager;->setHasCallback(IIZ)V +HSPLandroid/view/autofill/IAutoFillManager;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;)I +HSPLandroid/view/autofill/IAutoFillManager;->updateOrRestartSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;II)I +HSPLandroid/view/autofill/IAutoFillManager;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->()V +HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLandroid/view/autofill/IAutoFillManagerClient;->authenticate(IILandroid/content/IntentSender;Landroid/content/Intent;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->autofill(ILjava/util/List;Ljava/util/List;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->notifyNoFillUi(ILandroid/view/autofill/AutofillId;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->requestHideFillUi(ILandroid/view/autofill/AutofillId;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->requestShowFillUi(ILandroid/view/autofill/AutofillId;IILandroid/graphics/Rect;Landroid/view/autofill/IAutofillWindowPresenter;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->setSaveUiState(IZ)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->setState(ZZZ)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->setTrackedViews(I[Landroid/view/autofill/AutofillId;Z[Landroid/view/autofill/AutofillId;)V +HSPLandroid/view/autofill/IAutoFillManagerClient;->startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V +HSPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/inputmethod/InputMethodManager;Z)V +HSPLandroid/view/inputmethod/BaseInputConnection;->beginBatchEdit()Z +HSPLandroid/view/inputmethod/BaseInputConnection;->endBatchEdit()Z +HSPLandroid/view/inputmethod/BaseInputConnection;->finishComposingText()Z +HSPLandroid/view/inputmethod/BaseInputConnection;->getEditable()Landroid/text/Editable; +HSPLandroid/view/inputmethod/BaseInputConnection;->removeComposingSpans(Landroid/text/Spannable;)V +HSPLandroid/view/inputmethod/BaseInputConnection;->sendCurrentText()V +HSPLandroid/view/inputmethod/ComposingText;->()V +HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->()V +HSPLandroid/view/inputmethod/EditorInfo$1;->()V +HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/EditorInfo; +HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/inputmethod/EditorInfo;->()V +HSPLandroid/view/inputmethod/EditorInfo;->makeCompatible(I)V +HSPLandroid/view/inputmethod/EditorInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/inputmethod/ExtractedTextRequest$1;->()V +HSPLandroid/view/inputmethod/ExtractedTextRequest;->()V +HSPLandroid/view/inputmethod/InputBinding$1;->()V +HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputBinding; +HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/inputmethod/InputBinding;->(Landroid/os/Parcel;)V +HSPLandroid/view/inputmethod/InputBinding;->(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V +HSPLandroid/view/inputmethod/InputBinding;->getConnection()Landroid/view/inputmethod/InputConnection; +HSPLandroid/view/inputmethod/InputBinding;->getConnectionToken()Landroid/os/IBinder; +HSPLandroid/view/inputmethod/InputBinding;->getPid()I +HSPLandroid/view/inputmethod/InputBinding;->getUid()I +HSPLandroid/view/inputmethod/InputConnection;->beginBatchEdit()Z +HSPLandroid/view/inputmethod/InputConnection;->clearMetaKeyStates(I)Z +HSPLandroid/view/inputmethod/InputConnection;->closeConnection()V +HSPLandroid/view/inputmethod/InputConnection;->commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z +HSPLandroid/view/inputmethod/InputConnection;->commitContent(Landroid/view/inputmethod/InputContentInfo;ILandroid/os/Bundle;)Z +HSPLandroid/view/inputmethod/InputConnection;->commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z +HSPLandroid/view/inputmethod/InputConnection;->commitText(Ljava/lang/CharSequence;I)Z +HSPLandroid/view/inputmethod/InputConnection;->deleteSurroundingText(II)Z +HSPLandroid/view/inputmethod/InputConnection;->deleteSurroundingTextInCodePoints(II)Z +HSPLandroid/view/inputmethod/InputConnection;->endBatchEdit()Z +HSPLandroid/view/inputmethod/InputConnection;->finishComposingText()Z +HSPLandroid/view/inputmethod/InputConnection;->getCursorCapsMode(I)I +HSPLandroid/view/inputmethod/InputConnection;->getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText; +HSPLandroid/view/inputmethod/InputConnection;->getHandler()Landroid/os/Handler; +HSPLandroid/view/inputmethod/InputConnection;->getSelectedText(I)Ljava/lang/CharSequence; +HSPLandroid/view/inputmethod/InputConnection;->getTextAfterCursor(II)Ljava/lang/CharSequence; +HSPLandroid/view/inputmethod/InputConnection;->getTextBeforeCursor(II)Ljava/lang/CharSequence; +HSPLandroid/view/inputmethod/InputConnection;->performContextMenuAction(I)Z +HSPLandroid/view/inputmethod/InputConnection;->performEditorAction(I)Z +HSPLandroid/view/inputmethod/InputConnection;->performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z +HSPLandroid/view/inputmethod/InputConnection;->reportFullscreenMode(Z)Z +HSPLandroid/view/inputmethod/InputConnection;->requestCursorUpdates(I)Z +HSPLandroid/view/inputmethod/InputConnection;->sendKeyEvent(Landroid/view/KeyEvent;)Z +HSPLandroid/view/inputmethod/InputConnection;->setComposingRegion(II)Z +HSPLandroid/view/inputmethod/InputConnection;->setComposingText(Ljava/lang/CharSequence;I)Z +HSPLandroid/view/inputmethod/InputConnection;->setSelection(II)Z +HSPLandroid/view/inputmethod/InputMethod$SessionCallback;->sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V +HSPLandroid/view/inputmethod/InputMethod;->attachToken(Landroid/os/IBinder;)V +HSPLandroid/view/inputmethod/InputMethod;->bindInput(Landroid/view/inputmethod/InputBinding;)V +HSPLandroid/view/inputmethod/InputMethod;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V +HSPLandroid/view/inputmethod/InputMethod;->createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V +HSPLandroid/view/inputmethod/InputMethod;->dispatchStartInputWithToken(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;ZLandroid/os/IBinder;)V +HSPLandroid/view/inputmethod/InputMethod;->hideSoftInput(ILandroid/os/ResultReceiver;)V +HSPLandroid/view/inputmethod/InputMethod;->restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V +HSPLandroid/view/inputmethod/InputMethod;->revokeSession(Landroid/view/inputmethod/InputMethodSession;)V +HSPLandroid/view/inputmethod/InputMethod;->setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V +HSPLandroid/view/inputmethod/InputMethod;->showSoftInput(ILandroid/os/ResultReceiver;)V +HSPLandroid/view/inputmethod/InputMethod;->startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V +HSPLandroid/view/inputmethod/InputMethod;->unbindInput()V +HSPLandroid/view/inputmethod/InputMethodManager$1;->(Landroid/view/inputmethod/InputMethodManager;)V +HSPLandroid/view/inputmethod/InputMethodManager$1;->onBindMethod(Lcom/android/internal/view/InputBindResult;)V +HSPLandroid/view/inputmethod/InputMethodManager$1;->onUnbindMethod(II)V +HSPLandroid/view/inputmethod/InputMethodManager$1;->reportFullscreenMode(Z)V +HSPLandroid/view/inputmethod/InputMethodManager$1;->setActive(ZZ)V +HSPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputMethodManager;)V +HSPLandroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;->onFinishedInputEvent(Ljava/lang/Object;Z)V +HSPLandroid/view/inputmethod/InputMethodManager$H;->(Landroid/view/inputmethod/InputMethodManager;Landroid/os/Looper;)V +HSPLandroid/view/inputmethod/InputMethodManager$H;->handleMessage(Landroid/os/Message;)V +HSPLandroid/view/inputmethod/InputMethodManager;->-set1(Landroid/view/inputmethod/InputMethodManager;I)I +HSPLandroid/view/inputmethod/InputMethodManager;->-wrap0(Landroid/view/inputmethod/InputMethodManager;Z)Z +HSPLandroid/view/inputmethod/InputMethodManager;->(Landroid/os/Looper;)V +HSPLandroid/view/inputmethod/InputMethodManager;->(Lcom/android/internal/view/IInputMethodManager;Landroid/os/Looper;)V +HSPLandroid/view/inputmethod/InputMethodManager;->checkFocus()V +HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusNoStartInput(Z)Z +HSPLandroid/view/inputmethod/InputMethodManager;->clearBindingLocked()V +HSPLandroid/view/inputmethod/InputMethodManager;->clearConnectionLocked()V +HSPLandroid/view/inputmethod/InputMethodManager;->displayCompletions(Landroid/view/View;[Landroid/view/inputmethod/CompletionInfo;)V +HSPLandroid/view/inputmethod/InputMethodManager;->focusIn(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->focusInLocked(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->focusOut(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->getClient()Lcom/android/internal/view/IInputMethodClient; +HSPLandroid/view/inputmethod/InputMethodManager;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; +HSPLandroid/view/inputmethod/InputMethodManager;->getInputContext()Lcom/android/internal/view/IInputContext; +HSPLandroid/view/inputmethod/InputMethodManager;->getInputMethodWindowVisibleHeight()I +HSPLandroid/view/inputmethod/InputMethodManager;->getInstance()Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;I)Z +HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->isFullscreenMode()Z +HSPLandroid/view/inputmethod/InputMethodManager;->onPostWindowFocus(Landroid/view/View;Landroid/view/View;IZI)V +HSPLandroid/view/inputmethod/InputMethodManager;->onPreWindowFocus(Landroid/view/View;Z)V +HSPLandroid/view/inputmethod/InputMethodManager;->onViewDetachedFromWindow(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->peekInstance()Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->reportFullscreenMode(Landroid/os/IBinder;Z)V +HSPLandroid/view/inputmethod/InputMethodManager;->restartInput(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->scheduleCheckFocusLocked(Landroid/view/View;)V +HSPLandroid/view/inputmethod/InputMethodManager;->setInputChannelLocked(Landroid/view/InputChannel;)V +HSPLandroid/view/inputmethod/InputMethodManager;->startInputInner(ILandroid/os/IBinder;III)Z +HSPLandroid/view/inputmethod/InputMethodSession$EventCallback;->finishedEvent(IZ)V +HSPLandroid/view/inputmethod/InputMethodSession;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V +HSPLandroid/view/inputmethod/InputMethodSession;->dispatchGenericMotionEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V +HSPLandroid/view/inputmethod/InputMethodSession;->dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V +HSPLandroid/view/inputmethod/InputMethodSession;->dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V +HSPLandroid/view/inputmethod/InputMethodSession;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HSPLandroid/view/inputmethod/InputMethodSession;->finishInput()V +HSPLandroid/view/inputmethod/InputMethodSession;->toggleSoftInput(II)V +HSPLandroid/view/inputmethod/InputMethodSession;->updateCursor(Landroid/graphics/Rect;)V +HSPLandroid/view/inputmethod/InputMethodSession;->updateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V +HSPLandroid/view/inputmethod/InputMethodSession;->updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V +HSPLandroid/view/inputmethod/InputMethodSession;->updateSelection(IIIIII)V +HSPLandroid/view/inputmethod/InputMethodSession;->viewClicked(Z)V +HSPLandroid/view/inputmethod/InputMethodSubtype$1;->()V +HSPLandroid/view/inputmethod/InputMethodSubtype$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputMethodSubtype; +HSPLandroid/view/inputmethod/InputMethodSubtype$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/inputmethod/InputMethodSubtype;->(Landroid/os/Parcel;)V +HSPLandroid/view/inputmethod/InputMethodSubtype;->containsExtraValueKey(Ljava/lang/String;)Z +HSPLandroid/view/inputmethod/InputMethodSubtype;->getExtraValueHashMap()Ljava/util/HashMap; +HSPLandroid/view/inputmethod/InputMethodSubtype;->getExtraValueOf(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/view/inputmethod/InputMethodSubtype;->getLocale()Ljava/lang/String; +HSPLandroid/webkit/CookieManager;->()V +HSPLandroid/webkit/CookieManager;->acceptCookie()Z +HSPLandroid/webkit/CookieManager;->acceptThirdPartyCookies(Landroid/webkit/WebView;)Z +HSPLandroid/webkit/CookieManager;->allowFileSchemeCookiesImpl()Z +HSPLandroid/webkit/CookieManager;->flush()V +HSPLandroid/webkit/CookieManager;->getCookie(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/webkit/CookieManager;->getCookie(Ljava/lang/String;Z)Ljava/lang/String; +HSPLandroid/webkit/CookieManager;->getInstance()Landroid/webkit/CookieManager; +HSPLandroid/webkit/CookieManager;->hasCookies()Z +HSPLandroid/webkit/CookieManager;->hasCookies(Z)Z +HSPLandroid/webkit/CookieManager;->removeAllCookie()V +HSPLandroid/webkit/CookieManager;->removeAllCookies(Landroid/webkit/ValueCallback;)V +HSPLandroid/webkit/CookieManager;->removeExpiredCookie()V +HSPLandroid/webkit/CookieManager;->removeSessionCookie()V +HSPLandroid/webkit/CookieManager;->removeSessionCookies(Landroid/webkit/ValueCallback;)V +HSPLandroid/webkit/CookieManager;->setAcceptCookie(Z)V +HSPLandroid/webkit/CookieManager;->setAcceptFileSchemeCookiesImpl(Z)V +HSPLandroid/webkit/CookieManager;->setAcceptThirdPartyCookies(Landroid/webkit/WebView;Z)V +HSPLandroid/webkit/CookieManager;->setCookie(Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/webkit/CookieManager;->setCookie(Ljava/lang/String;Ljava/lang/String;Landroid/webkit/ValueCallback;)V +HSPLandroid/webkit/CookieSyncManager;->()V +HSPLandroid/webkit/CookieSyncManager;->checkInstanceIsAllowed()V +HSPLandroid/webkit/CookieSyncManager;->createInstance(Landroid/content/Context;)Landroid/webkit/CookieSyncManager; +HSPLandroid/webkit/CookieSyncManager;->getInstance()Landroid/webkit/CookieSyncManager; +HSPLandroid/webkit/CookieSyncManager;->setGetInstanceIsAllowed()V +HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->isMultiProcessEnabled()Z +HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; +HSPLandroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService; +HSPLandroid/webkit/IWebViewUpdateService;->changeProviderAndSetting(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/webkit/IWebViewUpdateService;->enableFallbackLogic(Z)V +HSPLandroid/webkit/IWebViewUpdateService;->enableMultiProcess(Z)V +HSPLandroid/webkit/IWebViewUpdateService;->getAllWebViewPackages()[Landroid/webkit/WebViewProviderInfo; +HSPLandroid/webkit/IWebViewUpdateService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo; +HSPLandroid/webkit/IWebViewUpdateService;->getCurrentWebViewPackageName()Ljava/lang/String; +HSPLandroid/webkit/IWebViewUpdateService;->getValidWebViewPackages()[Landroid/webkit/WebViewProviderInfo; +HSPLandroid/webkit/IWebViewUpdateService;->isFallbackPackage(Ljava/lang/String;)Z +HSPLandroid/webkit/IWebViewUpdateService;->isMultiProcessEnabled()Z +HSPLandroid/webkit/IWebViewUpdateService;->notifyRelroCreationCompleted()V +HSPLandroid/webkit/IWebViewUpdateService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; +HSPLandroid/webkit/MimeTypeMap;->()V +HSPLandroid/webkit/MimeTypeMap;->getFileExtensionFromUrl(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/webkit/URLUtil;->isAboutUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isAssetUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isContentUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isFileUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isHttpUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isHttpsUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isJavaScriptUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isResourceUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/URLUtil;->isValidUrl(Ljava/lang/String;)Z +HSPLandroid/webkit/WebSyncManager;->(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/webkit/WebSyncManager;->syncFromRamToFlash()V +HSPLandroid/webkit/WebViewDelegate;->()V +HSPLandroid/webkit/WebViewDelegate;->getApplication()Landroid/app/Application; +HSPLandroid/webkit/WebViewDelegate;->isMultiProcessEnabled()Z +HSPLandroid/webkit/WebViewFactory;->fixupStubApplicationInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)V +HSPLandroid/webkit/WebViewFactory;->getLoadedPackageInfo()Landroid/content/pm/PackageInfo; +HSPLandroid/webkit/WebViewFactory;->getProvider()Landroid/webkit/WebViewFactoryProvider; +HSPLandroid/webkit/WebViewFactory;->getProviderClass()Ljava/lang/Class; +HSPLandroid/webkit/WebViewFactory;->getUpdateService()Landroid/webkit/IWebViewUpdateService; +HSPLandroid/webkit/WebViewFactory;->getWebViewContextAndSetProvider()Landroid/content/Context; +HSPLandroid/webkit/WebViewFactory;->getWebViewLibrary(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String; +HSPLandroid/webkit/WebViewFactory;->getWebViewProviderClass(Ljava/lang/ClassLoader;)Ljava/lang/Class; +HSPLandroid/webkit/WebViewFactory;->loadWebViewNativeLibraryFromPackage(Ljava/lang/String;Ljava/lang/ClassLoader;)I +HSPLandroid/webkit/WebViewFactory;->signaturesEquals([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z +HSPLandroid/webkit/WebViewFactory;->verifyPackageInfo(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;)V +HSPLandroid/webkit/WebViewFactoryProvider;->getCookieManager()Landroid/webkit/CookieManager; +HSPLandroid/webkit/WebViewFactoryProvider;->getGeolocationPermissions()Landroid/webkit/GeolocationPermissions; +HSPLandroid/webkit/WebViewFactoryProvider;->getServiceWorkerController()Landroid/webkit/ServiceWorkerController; +HSPLandroid/webkit/WebViewFactoryProvider;->getStatics()Landroid/webkit/WebViewFactoryProvider$Statics; +HSPLandroid/webkit/WebViewFactoryProvider;->getTokenBindingService()Landroid/webkit/TokenBindingService; +HSPLandroid/webkit/WebViewFactoryProvider;->getWebIconDatabase()Landroid/webkit/WebIconDatabase; +HSPLandroid/webkit/WebViewFactoryProvider;->getWebStorage()Landroid/webkit/WebStorage; +HSPLandroid/webkit/WebViewFactoryProvider;->getWebViewDatabase(Landroid/content/Context;)Landroid/webkit/WebViewDatabase; +HSPLandroid/webkit/WebViewLibraryLoader;->loadNativeLibrary(Ljava/lang/ClassLoader;Landroid/content/pm/PackageInfo;)I +HSPLandroid/webkit/WebViewProviderResponse$1;->()V +HSPLandroid/webkit/WebViewProviderResponse$1;->createFromParcel(Landroid/os/Parcel;)Landroid/webkit/WebViewProviderResponse; +HSPLandroid/webkit/WebViewProviderResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/webkit/WebViewProviderResponse;->(Landroid/os/Parcel;)V +HSPLandroid/webkit/WebViewProviderResponse;->(Landroid/os/Parcel;Landroid/webkit/WebViewProviderResponse;)V +HSPLandroid/widget/-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4$1;->(BLjava/lang/Object;)V +HSPLandroid/widget/-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4;->(BLjava/lang/Object;)V +HSPLandroid/widget/AbsListView$AdapterDataSetObserver;->(Landroid/widget/AbsListView;)V +HSPLandroid/widget/AbsListView$AdapterDataSetObserver;->onChanged()V +HSPLandroid/widget/AbsListView$LayoutParams;->(III)V +HSPLandroid/widget/AbsListView$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/AbsListView$ListItemAccessibilityDelegate;->(Landroid/widget/AbsListView;)V +HSPLandroid/widget/AbsListView$OnScrollListener;->onScroll(Landroid/widget/AbsListView;III)V +HSPLandroid/widget/AbsListView$OnScrollListener;->onScrollStateChanged(Landroid/widget/AbsListView;I)V +HSPLandroid/widget/AbsListView$RecycleBin;->(Landroid/widget/AbsListView;)V +HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V +HSPLandroid/widget/AbsListView$RecycleBin;->clear()V +HSPLandroid/widget/AbsListView$RecycleBin;->clearScrapForRebind(Landroid/view/View;)V +HSPLandroid/widget/AbsListView$RecycleBin;->clearTransientStateViews()V +HSPLandroid/widget/AbsListView$RecycleBin;->fillActiveViews(II)V +HSPLandroid/widget/AbsListView$RecycleBin;->getActiveView(I)Landroid/view/View; +HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View; +HSPLandroid/widget/AbsListView$RecycleBin;->getTransientStateView(I)Landroid/view/View; +HSPLandroid/widget/AbsListView$RecycleBin;->markChildrenDirty()V +HSPLandroid/widget/AbsListView$RecycleBin;->pruneScrapViews()V +HSPLandroid/widget/AbsListView$RecycleBin;->removeSkippedScrap()V +HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View; +HSPLandroid/widget/AbsListView$RecycleBin;->scrapActiveViews()V +HSPLandroid/widget/AbsListView$RecycleBin;->setCacheColorHint(I)V +HSPLandroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V +HSPLandroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z +HSPLandroid/widget/AbsListView$RecyclerListener;->onMovedToScrapHeap(Landroid/view/View;)V +HSPLandroid/widget/AbsListView$SavedState$1;->()V +HSPLandroid/widget/AbsListView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/AbsListView$SavedState; +HSPLandroid/widget/AbsListView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/widget/AbsListView$SavedState;->(Landroid/os/Parcel;)V +HSPLandroid/widget/AbsListView$SavedState;->(Landroid/os/Parcel;Landroid/widget/AbsListView$SavedState;)V +HSPLandroid/widget/AbsListView;->-get5(Landroid/widget/AbsListView;)Landroid/widget/FastScroller; +HSPLandroid/widget/AbsListView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/AbsListView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/AbsListView;->clearChoices()V +HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I +HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I +HSPLandroid/widget/AbsListView;->computeVerticalScrollRange()I +HSPLandroid/widget/AbsListView;->dismissPopup()V +HSPLandroid/widget/AbsListView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsListView;->drawSelector(Landroid/graphics/Canvas;)V +HSPLandroid/widget/AbsListView;->drawableStateChanged()V +HSPLandroid/widget/AbsListView;->fillGap(Z)V +HSPLandroid/widget/AbsListView;->findMotionRow(I)I +HSPLandroid/widget/AbsListView;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/AbsListView$LayoutParams; +HSPLandroid/widget/AbsListView;->getDrawableStateForSelector()[I +HSPLandroid/widget/AbsListView;->getVerticalScrollbarWidth()I +HSPLandroid/widget/AbsListView;->handleBoundsChange()V +HSPLandroid/widget/AbsListView;->handleDataChanged()V +HSPLandroid/widget/AbsListView;->hideSelector()V +HSPLandroid/widget/AbsListView;->initAbsListView()V +HSPLandroid/widget/AbsListView;->internalSetPadding(IIII)V +HSPLandroid/widget/AbsListView;->invokeOnItemScrollListener()V +HSPLandroid/widget/AbsListView;->isFastScrollEnabled()Z +HSPLandroid/widget/AbsListView;->isInFilterMode()Z +HSPLandroid/widget/AbsListView;->isOwnerThread()Z +HSPLandroid/widget/AbsListView;->isTextFilterEnabled()Z +HSPLandroid/widget/AbsListView;->isVerticalScrollBarHidden()Z +HSPLandroid/widget/AbsListView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/AbsListView;->layoutChildren()V +HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View; +HSPLandroid/widget/AbsListView;->onAttachedToWindow()V +HSPLandroid/widget/AbsListView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLandroid/widget/AbsListView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroid/widget/AbsListView;->onLayout(ZIIII)V +HSPLandroid/widget/AbsListView;->onMeasure(II)V +HSPLandroid/widget/AbsListView;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HSPLandroid/widget/AbsListView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/AbsListView;->onSizeChanged(IIII)V +HSPLandroid/widget/AbsListView;->onTouchModeChanged(Z)V +HSPLandroid/widget/AbsListView;->onWindowFocusChanged(Z)V +HSPLandroid/widget/AbsListView;->requestLayout()V +HSPLandroid/widget/AbsListView;->requestLayoutIfNecessary()V +HSPLandroid/widget/AbsListView;->resetList()V +HSPLandroid/widget/AbsListView;->sendAccessibilityEventInternal(I)V +HSPLandroid/widget/AbsListView;->setAdapter(Landroid/widget/ListAdapter;)V +HSPLandroid/widget/AbsListView;->setCacheColorHint(I)V +HSPLandroid/widget/AbsListView;->setChoiceMode(I)V +HSPLandroid/widget/AbsListView;->setFastScrollAlwaysVisible(Z)V +HSPLandroid/widget/AbsListView;->setFastScrollEnabled(Z)V +HSPLandroid/widget/AbsListView;->setFastScrollStyle(I)V +HSPLandroid/widget/AbsListView;->setFastScrollerEnabledUiThread(Z)V +HSPLandroid/widget/AbsListView;->setFilterText(Ljava/lang/String;)V +HSPLandroid/widget/AbsListView;->setFrame(IIII)Z +HSPLandroid/widget/AbsListView;->setItemViewLayoutParams(Landroid/view/View;I)V +HSPLandroid/widget/AbsListView;->setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V +HSPLandroid/widget/AbsListView;->setOverScrollMode(I)V +HSPLandroid/widget/AbsListView;->setScrollBarStyle(I)V +HSPLandroid/widget/AbsListView;->setScrollingCacheEnabled(Z)V +HSPLandroid/widget/AbsListView;->setSelectionFromTop(II)V +HSPLandroid/widget/AbsListView;->setSelectionInt(I)V +HSPLandroid/widget/AbsListView;->setSelector(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/AbsListView;->setSmoothScrollbarEnabled(Z)V +HSPLandroid/widget/AbsListView;->setStackFromBottom(Z)V +HSPLandroid/widget/AbsListView;->setTextFilterEnabled(Z)V +HSPLandroid/widget/AbsListView;->setTranscriptMode(I)V +HSPLandroid/widget/AbsListView;->setVerticalScrollbarPosition(I)V +HSPLandroid/widget/AbsListView;->setVisibleRangeHint(II)V +HSPLandroid/widget/AbsListView;->shouldShowSelector()Z +HSPLandroid/widget/AbsListView;->touchModeDrawsInPressedState()Z +HSPLandroid/widget/AbsListView;->updateScrollIndicators()V +HSPLandroid/widget/AbsListView;->updateSelectorState()V +HSPLandroid/widget/AbsListView;->useDefaultSelector()V +HSPLandroid/widget/AbsListView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/AbsSeekBar;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/AbsSeekBar;->applyThumbTint()V +HSPLandroid/widget/AbsSeekBar;->applyTickMarkTint()V +HSPLandroid/widget/AbsSeekBar;->drawableStateChanged()V +HSPLandroid/widget/AbsSeekBar;->getScale()F +HSPLandroid/widget/AbsSeekBar;->getThumbOffset()I +HSPLandroid/widget/AbsSeekBar;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/AbsSeekBar;->onMeasure(II)V +HSPLandroid/widget/AbsSeekBar;->onResolveDrawables(I)V +HSPLandroid/widget/AbsSeekBar;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/AbsSeekBar;->onVisualProgressChanged(IF)V +HSPLandroid/widget/AbsSeekBar;->setKeyProgressIncrement(I)V +HSPLandroid/widget/AbsSeekBar;->setMax(I)V +HSPLandroid/widget/AbsSeekBar;->setMin(I)V +HSPLandroid/widget/AbsSeekBar;->setThumb(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/AbsSeekBar;->setThumbOffset(I)V +HSPLandroid/widget/AbsSeekBar;->setThumbPos(ILandroid/graphics/drawable/Drawable;FI)V +HSPLandroid/widget/AbsSeekBar;->setThumbTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/AbsSeekBar;->setTickMark(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/AbsSeekBar;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/ActionMenuPresenter$1;->(Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/ActionMenuPresenter$2;->(Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;->(Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;->(Landroid/widget/ActionMenuPresenter;Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;)V +HSPLandroid/widget/ActionMenuPresenter$OverflowMenuButton$1;->(Landroid/widget/ActionMenuPresenter$OverflowMenuButton;Landroid/view/View;)V +HSPLandroid/widget/ActionMenuPresenter$OverflowMenuButton;->(Landroid/widget/ActionMenuPresenter;Landroid/content/Context;)V +HSPLandroid/widget/ActionMenuPresenter$OverflowMenuButton;->setFrame(IIII)Z +HSPLandroid/widget/ActionMenuPresenter$PopupPresenterCallback;->(Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/ActionMenuPresenter$PopupPresenterCallback;->(Landroid/widget/ActionMenuPresenter;Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;)V +HSPLandroid/widget/ActionMenuPresenter;->(Landroid/content/Context;)V +HSPLandroid/widget/ActionMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V +HSPLandroid/widget/ActionMenuPresenter;->flagActionItems()Z +HSPLandroid/widget/ActionMenuPresenter;->getItemView(Lcom/android/internal/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/ActionMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLandroid/widget/ActionMenuPresenter;->setExpandedActionViewsExclusive(Z)V +HSPLandroid/widget/ActionMenuPresenter;->setMenuView(Landroid/widget/ActionMenuView;)V +HSPLandroid/widget/ActionMenuPresenter;->setReserveOverflow(Z)V +HSPLandroid/widget/ActionMenuPresenter;->shouldIncludeItem(ILcom/android/internal/view/menu/MenuItemImpl;)Z +HSPLandroid/widget/ActionMenuPresenter;->updateMenuView(Z)V +HSPLandroid/widget/ActionMenuView$ActionMenuChildView;->needsDividerAfter()Z +HSPLandroid/widget/ActionMenuView$ActionMenuChildView;->needsDividerBefore()Z +HSPLandroid/widget/ActionMenuView$LayoutParams;->(II)V +HSPLandroid/widget/ActionMenuView$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ActionMenuView$MenuBuilderCallback;->(Landroid/widget/ActionMenuView;)V +HSPLandroid/widget/ActionMenuView$MenuBuilderCallback;->(Landroid/widget/ActionMenuView;Landroid/widget/ActionMenuView$MenuBuilderCallback;)V +HSPLandroid/widget/ActionMenuView$OnMenuItemClickListener;->onMenuItemClick(Landroid/view/MenuItem;)Z +HSPLandroid/widget/ActionMenuView;->(Landroid/content/Context;)V +HSPLandroid/widget/ActionMenuView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ActionMenuView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/ActionMenuView;->generateDefaultLayoutParams()Landroid/widget/ActionMenuView$LayoutParams; +HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/ActionMenuView$LayoutParams; +HSPLandroid/widget/ActionMenuView;->generateOverflowButtonLayoutParams()Landroid/widget/ActionMenuView$LayoutParams; +HSPLandroid/widget/ActionMenuView;->getMenu()Landroid/view/Menu; +HSPLandroid/widget/ActionMenuView;->hasDividerBeforeChildAt(I)Z +HSPLandroid/widget/ActionMenuView;->initialize(Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLandroid/widget/ActionMenuView;->onLayout(ZIIII)V +HSPLandroid/widget/ActionMenuView;->onMeasure(II)V +HSPLandroid/widget/ActionMenuView;->peekMenu()Lcom/android/internal/view/menu/MenuBuilder; +HSPLandroid/widget/ActionMenuView;->setExpandedActionViewsExclusive(Z)V +HSPLandroid/widget/ActionMenuView;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V +HSPLandroid/widget/ActionMenuView;->setOnMenuItemClickListener(Landroid/widget/ActionMenuView$OnMenuItemClickListener;)V +HSPLandroid/widget/ActionMenuView;->setOverflowReserved(Z)V +HSPLandroid/widget/ActionMenuView;->setPopupTheme(I)V +HSPLandroid/widget/ActionMenuView;->setPresenter(Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/Adapter;->getCount()I +HSPLandroid/widget/Adapter;->getItem(I)Ljava/lang/Object; +HSPLandroid/widget/Adapter;->getItemId(I)J +HSPLandroid/widget/Adapter;->getItemViewType(I)I +HSPLandroid/widget/Adapter;->getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/Adapter;->getViewTypeCount()I +HSPLandroid/widget/Adapter;->hasStableIds()Z +HSPLandroid/widget/Adapter;->isEmpty()Z +HSPLandroid/widget/Adapter;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/widget/Adapter;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/widget/AdapterView$AdapterDataSetObserver;->(Landroid/widget/AdapterView;)V +HSPLandroid/widget/AdapterView$AdapterDataSetObserver;->onChanged()V +HSPLandroid/widget/AdapterView$OnItemClickListener;->onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V +HSPLandroid/widget/AdapterView$OnItemSelectedListener;->onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V +HSPLandroid/widget/AdapterView$OnItemSelectedListener;->onNothingSelected(Landroid/widget/AdapterView;)V +HSPLandroid/widget/AdapterView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/AdapterView;->canAnimate()Z +HSPLandroid/widget/AdapterView;->checkFocus()V +HSPLandroid/widget/AdapterView;->checkSelectionChanged()V +HSPLandroid/widget/AdapterView;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V +HSPLandroid/widget/AdapterView;->getAdapter()Landroid/widget/Adapter; +HSPLandroid/widget/AdapterView;->getCount()I +HSPLandroid/widget/AdapterView;->getFirstVisiblePosition()I +HSPLandroid/widget/AdapterView;->getItemIdAtPosition(I)J +HSPLandroid/widget/AdapterView;->getLastVisiblePosition()I +HSPLandroid/widget/AdapterView;->getSelectedView()Landroid/view/View; +HSPLandroid/widget/AdapterView;->onLayout(ZIIII)V +HSPLandroid/widget/AdapterView;->rememberSyncState()V +HSPLandroid/widget/AdapterView;->setAdapter(Landroid/widget/Adapter;)V +HSPLandroid/widget/AdapterView;->setEmptyView(Landroid/view/View;)V +HSPLandroid/widget/AdapterView;->setFocusableInTouchMode(Z)V +HSPLandroid/widget/AdapterView;->setNextSelectedPositionInt(I)V +HSPLandroid/widget/AdapterView;->setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V +HSPLandroid/widget/AdapterView;->setOnItemLongClickListener(Landroid/widget/AdapterView$OnItemLongClickListener;)V +HSPLandroid/widget/AdapterView;->setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V +HSPLandroid/widget/AdapterView;->setSelectedPositionInt(I)V +HSPLandroid/widget/AdapterView;->setSelection(I)V +HSPLandroid/widget/AdapterView;->updateEmptyStatus(Z)V +HSPLandroid/widget/AutoCompleteTextView$DropDownItemClickListener;->(Landroid/widget/AutoCompleteTextView;)V +HSPLandroid/widget/AutoCompleteTextView$DropDownItemClickListener;->(Landroid/widget/AutoCompleteTextView;Landroid/widget/AutoCompleteTextView$DropDownItemClickListener;)V +HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->(Landroid/widget/AutoCompleteTextView;)V +HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->(Landroid/widget/AutoCompleteTextView;Landroid/widget/AutoCompleteTextView$MyWatcher;)V +HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->afterTextChanged(Landroid/text/Editable;)V +HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/AutoCompleteTextView$PassThroughClickListener;->-set0(Landroid/widget/AutoCompleteTextView$PassThroughClickListener;Landroid/view/View$OnClickListener;)Landroid/view/View$OnClickListener; +HSPLandroid/widget/AutoCompleteTextView$PassThroughClickListener;->(Landroid/widget/AutoCompleteTextView;)V +HSPLandroid/widget/AutoCompleteTextView$PassThroughClickListener;->(Landroid/widget/AutoCompleteTextView;Landroid/widget/AutoCompleteTextView$PassThroughClickListener;)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V +HSPLandroid/widget/AutoCompleteTextView;->dismissDropDown()V +HSPLandroid/widget/AutoCompleteTextView;->doAfterTextChanged()V +HSPLandroid/widget/AutoCompleteTextView;->doBeforeTextChanged()V +HSPLandroid/widget/AutoCompleteTextView;->enoughToFilter()Z +HSPLandroid/widget/AutoCompleteTextView;->getDropDownAnchor()I +HSPLandroid/widget/AutoCompleteTextView;->getThreshold()I +HSPLandroid/widget/AutoCompleteTextView;->isPopupShowing()Z +HSPLandroid/widget/AutoCompleteTextView;->setCompletionHint(Ljava/lang/CharSequence;)V +HSPLandroid/widget/AutoCompleteTextView;->setDropDownBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/AutoCompleteTextView;->setOnClickListener(Landroid/view/View$OnClickListener;)V +HSPLandroid/widget/AutoCompleteTextView;->setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V +HSPLandroid/widget/AutoCompleteTextView;->setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V +HSPLandroid/widget/BaseAdapter;->()V +HSPLandroid/widget/BaseAdapter;->areAllItemsEnabled()Z +HSPLandroid/widget/BaseAdapter;->getViewTypeCount()I +HSPLandroid/widget/BaseAdapter;->hasStableIds()Z +HSPLandroid/widget/BaseAdapter;->isEnabled(I)Z +HSPLandroid/widget/BaseAdapter;->notifyDataSetChanged()V +HSPLandroid/widget/BaseAdapter;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/widget/Button;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/Button;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/Button;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/Button;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/CheckBox;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/CheckBox;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/CheckBox;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/Checkable;->isChecked()Z +HSPLandroid/widget/Checkable;->setChecked(Z)V +HSPLandroid/widget/Checkable;->toggle()V +HSPLandroid/widget/CheckedTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/CheckedTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/CheckedTextView;->applyCheckMarkTint()V +HSPLandroid/widget/CheckedTextView;->drawableStateChanged()V +HSPLandroid/widget/CheckedTextView;->internalSetPadding(IIII)V +HSPLandroid/widget/CheckedTextView;->isCheckMarkAtStart()Z +HSPLandroid/widget/CheckedTextView;->isChecked()Z +HSPLandroid/widget/CheckedTextView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/CheckedTextView;->onCreateDrawableState(I)[I +HSPLandroid/widget/CheckedTextView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/CheckedTextView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/CheckedTextView;->setBasePadding(Z)V +HSPLandroid/widget/CheckedTextView;->setCheckMarkDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/CheckedTextView;->setCheckMarkDrawableInternal(Landroid/graphics/drawable/Drawable;I)V +HSPLandroid/widget/CheckedTextView;->setChecked(Z)V +HSPLandroid/widget/CheckedTextView;->updatePadding()V +HSPLandroid/widget/CheckedTextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/CompoundButton$OnCheckedChangeListener;->onCheckedChanged(Landroid/widget/CompoundButton;Z)V +HSPLandroid/widget/CompoundButton;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/CompoundButton;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/CompoundButton;->applyButtonTint()V +HSPLandroid/widget/CompoundButton;->drawableStateChanged()V +HSPLandroid/widget/CompoundButton;->getAutofillType()I +HSPLandroid/widget/CompoundButton;->getCompoundPaddingLeft()I +HSPLandroid/widget/CompoundButton;->getCompoundPaddingRight()I +HSPLandroid/widget/CompoundButton;->getHorizontalOffsetForDrawables()I +HSPLandroid/widget/CompoundButton;->isChecked()Z +HSPLandroid/widget/CompoundButton;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/CompoundButton;->onCreateDrawableState(I)[I +HSPLandroid/widget/CompoundButton;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/CompoundButton;->onResolveDrawables(I)V +HSPLandroid/widget/CompoundButton;->setButtonDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/CompoundButton;->setChecked(Z)V +HSPLandroid/widget/CompoundButton;->setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V +HSPLandroid/widget/CompoundButton;->setOnCheckedChangeWidgetListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V +HSPLandroid/widget/CompoundButton;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/DateTimeView$ReceiverInfo$1;->(Landroid/widget/DateTimeView$ReceiverInfo;)V +HSPLandroid/widget/DateTimeView$ReceiverInfo$2;->(Landroid/widget/DateTimeView$ReceiverInfo;Landroid/os/Handler;)V +HSPLandroid/widget/DateTimeView$ReceiverInfo;->()V +HSPLandroid/widget/DateTimeView$ReceiverInfo;->(Landroid/widget/DateTimeView$ReceiverInfo;)V +HSPLandroid/widget/DateTimeView$ReceiverInfo;->setHandler(Landroid/os/Handler;)V +HSPLandroid/widget/DateTimeView;->setReceiverHandler(Landroid/os/Handler;)V +HSPLandroid/widget/EdgeEffect;->(Landroid/content/Context;)V +HSPLandroid/widget/EdgeEffect;->finish()V +HSPLandroid/widget/EdgeEffect;->isFinished()Z +HSPLandroid/widget/EditText;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/EditText;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/EditText;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/EditText;->getDefaultEditable()Z +HSPLandroid/widget/EditText;->getDefaultMovementMethod()Landroid/text/method/MovementMethod; +HSPLandroid/widget/EditText;->getFreezesText()Z +HSPLandroid/widget/EditText;->getText()Landroid/text/Editable; +HSPLandroid/widget/EditText;->getText()Ljava/lang/CharSequence; +HSPLandroid/widget/EditText;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V +HSPLandroid/widget/EditText;->setSelection(I)V +HSPLandroid/widget/EditText;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V +HSPLandroid/widget/EditText;->supportsAutoSizeText()Z +HSPLandroid/widget/Editor$1;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$2;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$Blink;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$Blink;->(Landroid/widget/Editor;Landroid/widget/Editor$Blink;)V +HSPLandroid/widget/Editor$Blink;->run()V +HSPLandroid/widget/Editor$Blink;->uncancel()V +HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->(Landroid/widget/Editor;Landroid/widget/Editor$CursorAnchorInfoNotifier;)V +HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V +HSPLandroid/widget/Editor$CursorController;->hide()V +HSPLandroid/widget/Editor$CursorController;->isActive()Z +HSPLandroid/widget/Editor$CursorController;->isCursorBeingModified()Z +HSPLandroid/widget/Editor$CursorController;->onDetached()V +HSPLandroid/widget/Editor$CursorController;->show()V +HSPLandroid/widget/Editor$InputContentType;->()V +HSPLandroid/widget/Editor$InsertionPointCursorController;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$InsertionPointCursorController;->(Landroid/widget/Editor;Landroid/widget/Editor$InsertionPointCursorController;)V +HSPLandroid/widget/Editor$InsertionPointCursorController;->hide()V +HSPLandroid/widget/Editor$InsertionPointCursorController;->isActive()Z +HSPLandroid/widget/Editor$InsertionPointCursorController;->isCursorBeingModified()Z +HSPLandroid/widget/Editor$InsertionPointCursorController;->onDetached()V +HSPLandroid/widget/Editor$PositionListener;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$PositionListener;->(Landroid/widget/Editor;Landroid/widget/Editor$PositionListener;)V +HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V +HSPLandroid/widget/Editor$PositionListener;->onPreDraw()Z +HSPLandroid/widget/Editor$PositionListener;->onScrollChanged()V +HSPLandroid/widget/Editor$PositionListener;->updatePosition()V +HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->(Landroid/widget/Editor;Landroid/widget/Editor$ProcessTextIntentActionsHandler;)V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->invalidateHandles()V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->isCursorBeingModified()Z +HSPLandroid/widget/Editor$SelectionModifierCursorController;->isDragAcceleratorActive()Z +HSPLandroid/widget/Editor$SelectionModifierCursorController;->isSelectionStartDragged()Z +HSPLandroid/widget/Editor$SelectionModifierCursorController;->onDetached()V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->resetDragAcceleratorState()V +HSPLandroid/widget/Editor$SelectionModifierCursorController;->resetTouchOffsets()V +HSPLandroid/widget/Editor$SpanController;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$SpanController;->(Landroid/widget/Editor;Landroid/widget/Editor$SpanController;)V +HSPLandroid/widget/Editor$SpanController;->hide()V +HSPLandroid/widget/Editor$SpanController;->isNonIntermediateSelectionSpan(Landroid/text/Spannable;Ljava/lang/Object;)Z +HSPLandroid/widget/Editor$SpanController;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/widget/Editor$SpanController;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V +HSPLandroid/widget/Editor$SpanController;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;->(Landroid/widget/Editor$SuggestionHelper;)V +HSPLandroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;->(Landroid/widget/Editor$SuggestionHelper;Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;)V +HSPLandroid/widget/Editor$SuggestionHelper;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$SuggestionHelper;->(Landroid/widget/Editor;Landroid/widget/Editor$SuggestionHelper;)V +HSPLandroid/widget/Editor$TextRenderNode;->(Ljava/lang/String;)V +HSPLandroid/widget/Editor$TextRenderNode;->needsRecord()Z +HSPLandroid/widget/Editor$TextViewPositionListener;->updatePosition(IIZZ)V +HSPLandroid/widget/Editor$UndoInputFilter;->(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor$UndoInputFilter;->restoreInstanceState(Landroid/os/Parcel;)V +HSPLandroid/widget/Editor$UndoInputFilter;->saveInstanceState(Landroid/os/Parcel;)V +HSPLandroid/widget/Editor;->-get13(Landroid/widget/Editor;)Landroid/widget/TextView; +HSPLandroid/widget/Editor;->-wrap12(Landroid/widget/Editor;)Z +HSPLandroid/widget/Editor;->-wrap22(Landroid/widget/Editor;)V +HSPLandroid/widget/Editor;->(Landroid/widget/TextView;)V +HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V +HSPLandroid/widget/Editor;->adjustInputType(ZZZZ)V +HSPLandroid/widget/Editor;->clampHorizontalPosition(Landroid/graphics/drawable/Drawable;F)I +HSPLandroid/widget/Editor;->createInputContentTypeIfNeeded()V +HSPLandroid/widget/Editor;->drawCursor(Landroid/graphics/Canvas;I)V +HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/widget/Editor;->drawHardwareAcceleratedInner(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I[I[IIII)I +HSPLandroid/widget/Editor;->ensureEndedBatchEdit()V +HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z +HSPLandroid/widget/Editor;->forgetUndoRedo()V +HSPLandroid/widget/Editor;->getAvailableDisplayListIndex([III)I +HSPLandroid/widget/Editor;->getInsertionController()Landroid/widget/Editor$InsertionPointCursorController; +HSPLandroid/widget/Editor;->getLastTapPosition()I +HSPLandroid/widget/Editor;->getPositionListener()Landroid/widget/Editor$PositionListener; +HSPLandroid/widget/Editor;->getSelectionController()Landroid/widget/Editor$SelectionModifierCursorController; +HSPLandroid/widget/Editor;->getTextActionMode()Landroid/view/ActionMode; +HSPLandroid/widget/Editor;->hideCursorAndSpanControllers()V +HSPLandroid/widget/Editor;->hideCursorControllers()V +HSPLandroid/widget/Editor;->hideInsertionPointCursorController()V +HSPLandroid/widget/Editor;->hideSpanControllers()V +HSPLandroid/widget/Editor;->invalidateHandlesAndActionMode()V +HSPLandroid/widget/Editor;->invalidateTextDisplayList()V +HSPLandroid/widget/Editor;->invalidateTextDisplayList(Landroid/text/Layout;II)V +HSPLandroid/widget/Editor;->isCursorVisible()Z +HSPLandroid/widget/Editor;->makeBlink()V +HSPLandroid/widget/Editor;->onAttachedToWindow()V +HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/widget/Editor;->onFocusChanged(ZI)V +HSPLandroid/widget/Editor;->onScrollChanged()V +HSPLandroid/widget/Editor;->onWindowFocusChanged(Z)V +HSPLandroid/widget/Editor;->prepareCursorControllers()V +HSPLandroid/widget/Editor;->refreshTextActionMode()V +HSPLandroid/widget/Editor;->restoreInstanceState(Landroid/os/ParcelableParcel;)V +HSPLandroid/widget/Editor;->resumeBlink()V +HSPLandroid/widget/Editor;->saveInstanceState()Landroid/os/ParcelableParcel; +HSPLandroid/widget/Editor;->sendOnTextChanged(II)V +HSPLandroid/widget/Editor;->sendUpdateSelection()V +HSPLandroid/widget/Editor;->setFrame()V +HSPLandroid/widget/Editor;->shouldBlink()Z +HSPLandroid/widget/Editor;->stopTextActionMode()V +HSPLandroid/widget/Editor;->stopTextActionModeWithPreservingSelection()V +HSPLandroid/widget/Editor;->updateCursorPosition(IIIF)V +HSPLandroid/widget/Editor;->updateCursorsPositions()V +HSPLandroid/widget/Editor;->updateSpellCheckSpans(IIZ)V +HSPLandroid/widget/FastScroller$1;->(Landroid/widget/FastScroller;)V +HSPLandroid/widget/FastScroller$2;->(Landroid/widget/FastScroller;)V +HSPLandroid/widget/FastScroller$3;->(Ljava/lang/String;)V +HSPLandroid/widget/FastScroller$4;->(Ljava/lang/String;)V +HSPLandroid/widget/FastScroller$5;->(Ljava/lang/String;)V +HSPLandroid/widget/FastScroller$6;->(Ljava/lang/String;)V +HSPLandroid/widget/FastScroller;->(Landroid/widget/AbsListView;I)V +HSPLandroid/widget/FastScroller;->applyLayout(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/widget/FastScroller;->createPreviewTextView(Landroid/content/Context;)Landroid/widget/TextView; +HSPLandroid/widget/FastScroller;->getSectionsFromIndexer()V +HSPLandroid/widget/FastScroller;->groupAnimatorOfFloat(Landroid/util/Property;F[Landroid/view/View;)Landroid/animation/Animator; +HSPLandroid/widget/FastScroller;->isEnabled()Z +HSPLandroid/widget/FastScroller;->layoutThumb()V +HSPLandroid/widget/FastScroller;->layoutTrack()V +HSPLandroid/widget/FastScroller;->measurePreview(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/widget/FastScroller;->measureViewToSide(Landroid/view/View;Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLandroid/widget/FastScroller;->onItemCountChanged(II)V +HSPLandroid/widget/FastScroller;->onScroll(III)V +HSPLandroid/widget/FastScroller;->onSectionsChanged()V +HSPLandroid/widget/FastScroller;->onStateDependencyChanged(Z)V +HSPLandroid/widget/FastScroller;->postAutoHide()V +HSPLandroid/widget/FastScroller;->refreshDrawablePressedState()V +HSPLandroid/widget/FastScroller;->setEnabled(Z)V +HSPLandroid/widget/FastScroller;->setScrollBarStyle(I)V +HSPLandroid/widget/FastScroller;->setScrollbarPosition(I)V +HSPLandroid/widget/FastScroller;->setState(I)V +HSPLandroid/widget/FastScroller;->setStyle(I)V +HSPLandroid/widget/FastScroller;->stop()V +HSPLandroid/widget/FastScroller;->transitionToHidden()V +HSPLandroid/widget/FastScroller;->updateAppearance()V +HSPLandroid/widget/FastScroller;->updateContainerRect()V +HSPLandroid/widget/FastScroller;->updateLayout()V +HSPLandroid/widget/FastScroller;->updateLongList(II)V +HSPLandroid/widget/FastScroller;->updateOffsetAndRange()V +HSPLandroid/widget/Filter$FilterListener;->onFilterComplete(I)V +HSPLandroid/widget/Filter$FilterResults;->()V +HSPLandroid/widget/Filter$RequestArguments;->()V +HSPLandroid/widget/Filter$RequestArguments;->(Landroid/widget/Filter$RequestArguments;)V +HSPLandroid/widget/Filter$RequestHandler;->(Landroid/widget/Filter;Landroid/os/Looper;)V +HSPLandroid/widget/Filter$RequestHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/widget/Filter$ResultsHandler;->(Landroid/widget/Filter;)V +HSPLandroid/widget/Filter$ResultsHandler;->(Landroid/widget/Filter;Landroid/widget/Filter$ResultsHandler;)V +HSPLandroid/widget/Filter$ResultsHandler;->handleMessage(Landroid/os/Message;)V +HSPLandroid/widget/Filter;->-get0(Landroid/widget/Filter;)Ljava/lang/Object; +HSPLandroid/widget/Filter;->-get1(Landroid/widget/Filter;)Landroid/os/Handler; +HSPLandroid/widget/Filter;->-get2(Landroid/widget/Filter;)Landroid/os/Handler; +HSPLandroid/widget/Filter;->-set0(Landroid/widget/Filter;Landroid/os/Handler;)Landroid/os/Handler; +HSPLandroid/widget/Filter;->()V +HSPLandroid/widget/Filter;->filter(Ljava/lang/CharSequence;)V +HSPLandroid/widget/Filter;->filter(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterListener;)V +HSPLandroid/widget/Filterable;->getFilter()Landroid/widget/Filter; +HSPLandroid/widget/ForwardingListener;->(Landroid/view/View;)V +HSPLandroid/widget/ForwardingListener;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu; +HSPLandroid/widget/ForwardingListener;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(II)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(III)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/view/ViewGroup$MarginLayoutParams;)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/FrameLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams; +HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams; +HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/FrameLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I +HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I +HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I +HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I +HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V +HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V +HSPLandroid/widget/FrameLayout;->onMeasure(II)V +HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V +HSPLandroid/widget/GridLayout$1;->()V +HSPLandroid/widget/GridLayout$2;->()V +HSPLandroid/widget/GridLayout$3;->()V +HSPLandroid/widget/GridLayout$4;->()V +HSPLandroid/widget/GridLayout$5;->()V +HSPLandroid/widget/GridLayout$6;->()V +HSPLandroid/widget/GridLayout$7;->()V +HSPLandroid/widget/GridLayout$8;->(Landroid/widget/GridLayout$Alignment;Landroid/widget/GridLayout$Alignment;)V +HSPLandroid/widget/GridLayout$Alignment;->()V +HSPLandroid/widget/GridLayout$Axis;->(Landroid/widget/GridLayout;Z)V +HSPLandroid/widget/GridLayout$Axis;->(Landroid/widget/GridLayout;ZLandroid/widget/GridLayout$Axis;)V +HSPLandroid/widget/GridLayout$Axis;->invalidateStructure()V +HSPLandroid/widget/GridLayout$Axis;->invalidateValues()V +HSPLandroid/widget/GridLayout$Axis;->setCount(I)V +HSPLandroid/widget/GridLayout$Axis;->setOrderPreserved(Z)V +HSPLandroid/widget/GridLayout$Interval;->(II)V +HSPLandroid/widget/GridLayout$Interval;->size()I +HSPLandroid/widget/GridLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/GridLayout$LayoutParams;->init(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/GridLayout$LayoutParams;->reInitSuper(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/GridLayout$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V +HSPLandroid/widget/GridLayout$MutableInt;->(I)V +HSPLandroid/widget/GridLayout$Spec;->(ZIILandroid/widget/GridLayout$Alignment;F)V +HSPLandroid/widget/GridLayout$Spec;->(ZIILandroid/widget/GridLayout$Alignment;FLandroid/widget/GridLayout$Spec;)V +HSPLandroid/widget/GridLayout$Spec;->(ZLandroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$Alignment;F)V +HSPLandroid/widget/GridLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/GridLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/GridLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/GridLayout;->checkLayoutParams(Landroid/widget/GridLayout$LayoutParams;Z)V +HSPLandroid/widget/GridLayout;->createSwitchingAlignment(Landroid/widget/GridLayout$Alignment;Landroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Alignment; +HSPLandroid/widget/GridLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/GridLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/GridLayout$LayoutParams; +HSPLandroid/widget/GridLayout;->getAlignment(IZ)Landroid/widget/GridLayout$Alignment; +HSPLandroid/widget/GridLayout;->invalidateStructure()V +HSPLandroid/widget/GridLayout;->invalidateValues()V +HSPLandroid/widget/GridLayout;->onViewAdded(Landroid/view/View;)V +HSPLandroid/widget/GridLayout;->requestLayout()V +HSPLandroid/widget/GridLayout;->setAlignmentMode(I)V +HSPLandroid/widget/GridLayout;->setColumnCount(I)V +HSPLandroid/widget/GridLayout;->setColumnOrderPreserved(Z)V +HSPLandroid/widget/GridLayout;->setOrientation(I)V +HSPLandroid/widget/GridLayout;->setRowCount(I)V +HSPLandroid/widget/GridLayout;->setRowOrderPreserved(Z)V +HSPLandroid/widget/GridLayout;->setUseDefaultMargins(Z)V +HSPLandroid/widget/GridLayout;->spec(I)Landroid/widget/GridLayout$Spec; +HSPLandroid/widget/GridLayout;->spec(II)Landroid/widget/GridLayout$Spec; +HSPLandroid/widget/GridLayout;->spec(IILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec; +HSPLandroid/widget/GridLayout;->spec(IILandroid/widget/GridLayout$Alignment;F)Landroid/widget/GridLayout$Spec; +HSPLandroid/widget/GridView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/GridView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/GridView;->determineColumns(I)Z +HSPLandroid/widget/GridView;->getAdapter()Landroid/widget/Adapter; +HSPLandroid/widget/GridView;->getAdapter()Landroid/widget/ListAdapter; +HSPLandroid/widget/GridView;->layoutChildren()V +HSPLandroid/widget/GridView;->lookForSelectablePosition(IZ)I +HSPLandroid/widget/GridView;->onMeasure(II)V +HSPLandroid/widget/GridView;->setAdapter(Landroid/widget/ListAdapter;)V +HSPLandroid/widget/GridView;->setHorizontalSpacing(I)V +HSPLandroid/widget/GridView;->setNumColumns(I)V +HSPLandroid/widget/GridView;->setStretchMode(I)V +HSPLandroid/widget/GridView;->setVerticalSpacing(I)V +HSPLandroid/widget/HeaderViewListAdapter;->(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)V +HSPLandroid/widget/HeaderViewListAdapter;->areAllItemsEnabled()Z +HSPLandroid/widget/HeaderViewListAdapter;->areAllListInfosSelectable(Ljava/util/ArrayList;)Z +HSPLandroid/widget/HeaderViewListAdapter;->getCount()I +HSPLandroid/widget/HeaderViewListAdapter;->getFootersCount()I +HSPLandroid/widget/HeaderViewListAdapter;->getHeadersCount()I +HSPLandroid/widget/HeaderViewListAdapter;->getItemId(I)J +HSPLandroid/widget/HeaderViewListAdapter;->getItemViewType(I)I +HSPLandroid/widget/HeaderViewListAdapter;->getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/HeaderViewListAdapter;->getViewTypeCount()I +HSPLandroid/widget/HeaderViewListAdapter;->getWrappedAdapter()Landroid/widget/ListAdapter; +HSPLandroid/widget/HeaderViewListAdapter;->hasStableIds()Z +HSPLandroid/widget/HeaderViewListAdapter;->isEnabled(I)Z +HSPLandroid/widget/HeaderViewListAdapter;->registerDataSetObserver(Landroid/database/DataSetObserver;)V +HSPLandroid/widget/HorizontalScrollView$SavedState$1;->()V +HSPLandroid/widget/HorizontalScrollView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/HorizontalScrollView$SavedState; +HSPLandroid/widget/HorizontalScrollView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/widget/HorizontalScrollView$SavedState;->(Landroid/os/Parcel;)V +HSPLandroid/widget/HorizontalScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/HorizontalScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/HorizontalScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;)V +HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;I)V +HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/HorizontalScrollView;->clamp(III)I +HSPLandroid/widget/HorizontalScrollView;->computeScroll()V +HSPLandroid/widget/HorizontalScrollView;->computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I +HSPLandroid/widget/HorizontalScrollView;->doScrollX(I)V +HSPLandroid/widget/HorizontalScrollView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/HorizontalScrollView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/HorizontalScrollView;->initScrollView()V +HSPLandroid/widget/HorizontalScrollView;->isViewDescendantOf(Landroid/view/View;Landroid/view/View;)Z +HSPLandroid/widget/HorizontalScrollView;->isWithinDeltaOfScreen(Landroid/view/View;I)Z +HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/widget/HorizontalScrollView;->onLayout(ZIIII)V +HSPLandroid/widget/HorizontalScrollView;->onMeasure(II)V +HSPLandroid/widget/HorizontalScrollView;->onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z +HSPLandroid/widget/HorizontalScrollView;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HSPLandroid/widget/HorizontalScrollView;->onSizeChanged(IIII)V +HSPLandroid/widget/HorizontalScrollView;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/widget/HorizontalScrollView;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z +HSPLandroid/widget/HorizontalScrollView;->requestLayout()V +HSPLandroid/widget/HorizontalScrollView;->scrollTo(II)V +HSPLandroid/widget/HorizontalScrollView;->scrollToChild(Landroid/view/View;)V +HSPLandroid/widget/HorizontalScrollView;->scrollToChildRect(Landroid/graphics/Rect;Z)Z +HSPLandroid/widget/HorizontalScrollView;->setFillViewport(Z)V +HSPLandroid/widget/HorizontalScrollView;->setOverScrollMode(I)V +HSPLandroid/widget/ImageButton;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ImageButton;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/ImageButton;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ImageButton;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/ImageButton;->onSetAlpha(I)Z +HSPLandroid/widget/ImageView$ScaleType;->(Ljava/lang/String;II)V +HSPLandroid/widget/ImageView;->(Landroid/content/Context;)V +HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ImageView;->applyColorMod()V +HSPLandroid/widget/ImageView;->applyImageTint()V +HSPLandroid/widget/ImageView;->configureBounds()V +HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V +HSPLandroid/widget/ImageView;->drawableStateChanged()V +HSPLandroid/widget/ImageView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/ImageView;->getBaseline()I +HSPLandroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z +HSPLandroid/widget/ImageView;->initImageView()V +HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->isDefaultFocusHighlightNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/ImageView;->isFilledByImage()Z +HSPLandroid/widget/ImageView;->isOpaque()Z +HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/ImageView;->onAttachedToWindow()V +HSPLandroid/widget/ImageView;->onCreateDrawableState(I)[I +HSPLandroid/widget/ImageView;->onDetachedFromWindow()V +HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ImageView;->onMeasure(II)V +HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V +HSPLandroid/widget/ImageView;->resizeFromDrawable()V +HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I +HSPLandroid/widget/ImageView;->resolveUri()V +HSPLandroid/widget/ImageView;->scaleTypeToScaleToFit(Landroid/widget/ImageView$ScaleType;)Landroid/graphics/Matrix$ScaleToFit; +HSPLandroid/widget/ImageView;->setAdjustViewBounds(Z)V +HSPLandroid/widget/ImageView;->setAlpha(I)V +HSPLandroid/widget/ImageView;->setColorFilter(I)V +HSPLandroid/widget/ImageView;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V +HSPLandroid/widget/ImageView;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroid/widget/ImageView;->setFrame(IIII)Z +HSPLandroid/widget/ImageView;->setImageAlpha(I)V +HSPLandroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V +HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->setImageLevel(I)V +HSPLandroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/widget/ImageView;->setImageResource(I)V +HSPLandroid/widget/ImageView;->setImageTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/ImageView;->setImageTintMode(Landroid/graphics/PorterDuff$Mode;)V +HSPLandroid/widget/ImageView;->setMaxHeight(I)V +HSPLandroid/widget/ImageView;->setMaxWidth(I)V +HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V +HSPLandroid/widget/ImageView;->setSelected(Z)V +HSPLandroid/widget/ImageView;->setVisibility(I)V +HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/LinearLayout$LayoutParams;->(II)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(IIF)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/view/ViewGroup$MarginLayoutParams;)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/widget/LinearLayout$LayoutParams;)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z +HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V +HSPLandroid/widget/LinearLayout;->forceUniformWidth(II)V +HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/widget/LinearLayout$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams; +HSPLandroid/widget/LinearLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/LinearLayout;->getBaseline()I +HSPLandroid/widget/LinearLayout;->getChildrenSkipCount(Landroid/view/View;I)I +HSPLandroid/widget/LinearLayout;->getLocationOffset(Landroid/view/View;)I +HSPLandroid/widget/LinearLayout;->getNextLocationOffset(Landroid/view/View;)I +HSPLandroid/widget/LinearLayout;->getOrientation()I +HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View; +HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I +HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z +HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V +HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V +HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V +HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V +HSPLandroid/widget/LinearLayout;->measureVertical(II)V +HSPLandroid/widget/LinearLayout;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V +HSPLandroid/widget/LinearLayout;->onMeasure(II)V +HSPLandroid/widget/LinearLayout;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/LinearLayout;->setBaselineAligned(Z)V +HSPLandroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V +HSPLandroid/widget/LinearLayout;->setDividerDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/LinearLayout;->setGravity(I)V +HSPLandroid/widget/LinearLayout;->setOrientation(I)V +HSPLandroid/widget/ListAdapter;->areAllItemsEnabled()Z +HSPLandroid/widget/ListAdapter;->isEnabled(I)Z +HSPLandroid/widget/ListPopupWindow$ListSelectorHider;->(Landroid/widget/ListPopupWindow;)V +HSPLandroid/widget/ListPopupWindow$ListSelectorHider;->(Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow$ListSelectorHider;)V +HSPLandroid/widget/ListPopupWindow$PopupScrollListener;->(Landroid/widget/ListPopupWindow;)V +HSPLandroid/widget/ListPopupWindow$PopupScrollListener;->(Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow$PopupScrollListener;)V +HSPLandroid/widget/ListPopupWindow$PopupTouchInterceptor;->(Landroid/widget/ListPopupWindow;)V +HSPLandroid/widget/ListPopupWindow$PopupTouchInterceptor;->(Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow$PopupTouchInterceptor;)V +HSPLandroid/widget/ListPopupWindow$ResizePopupRunnable;->(Landroid/widget/ListPopupWindow;)V +HSPLandroid/widget/ListPopupWindow$ResizePopupRunnable;->(Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow$ResizePopupRunnable;)V +HSPLandroid/widget/ListPopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ListPopupWindow;->dismiss()V +HSPLandroid/widget/ListPopupWindow;->isDropDownAlwaysVisible()Z +HSPLandroid/widget/ListPopupWindow;->isShowing()Z +HSPLandroid/widget/ListPopupWindow;->removePromptView()V +HSPLandroid/widget/ListPopupWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ListPopupWindow;->setHeight(I)V +HSPLandroid/widget/ListPopupWindow;->setListSelector(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ListPopupWindow;->setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V +HSPLandroid/widget/ListPopupWindow;->setPromptPosition(I)V +HSPLandroid/widget/ListPopupWindow;->setPromptView(Landroid/view/View;)V +HSPLandroid/widget/ListPopupWindow;->setSoftInputMode(I)V +HSPLandroid/widget/ListPopupWindow;->setWidth(I)V +HSPLandroid/widget/ListView$ArrowScrollFocusResult;->()V +HSPLandroid/widget/ListView$ArrowScrollFocusResult;->(Landroid/widget/ListView$ArrowScrollFocusResult;)V +HSPLandroid/widget/ListView$FixedViewInfo;->(Landroid/widget/ListView;)V +HSPLandroid/widget/ListView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ListView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/ListView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ListView;->addHeaderView(Landroid/view/View;)V +HSPLandroid/widget/ListView;->addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V +HSPLandroid/widget/ListView;->adjustViewsUpOrDown()V +HSPLandroid/widget/ListView;->canAnimate()Z +HSPLandroid/widget/ListView;->clearRecycledState(Ljava/util/ArrayList;)V +HSPLandroid/widget/ListView;->correctTooHigh(I)V +HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ListView;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLandroid/widget/ListView;->fillDown(II)Landroid/view/View; +HSPLandroid/widget/ListView;->fillFromTop(I)Landroid/view/View; +HSPLandroid/widget/ListView;->fillSpecific(II)Landroid/view/View; +HSPLandroid/widget/ListView;->fillUp(II)Landroid/view/View; +HSPLandroid/widget/ListView;->findViewByPredicateInHeadersOrFooters(Ljava/util/ArrayList;Ljava/util/function/Predicate;Landroid/view/View;)Landroid/view/View; +HSPLandroid/widget/ListView;->findViewByPredicateTraversal(Ljava/util/function/Predicate;Landroid/view/View;)Landroid/view/View; +HSPLandroid/widget/ListView;->findViewInHeadersOrFooters(Ljava/util/ArrayList;I)Landroid/view/View; +HSPLandroid/widget/ListView;->findViewTraversal(I)Landroid/view/View; +HSPLandroid/widget/ListView;->getAdapter()Landroid/widget/Adapter; +HSPLandroid/widget/ListView;->getAdapter()Landroid/widget/ListAdapter; +HSPLandroid/widget/ListView;->getHeaderViewsCount()I +HSPLandroid/widget/ListView;->isOpaque()Z +HSPLandroid/widget/ListView;->layoutChildren()V +HSPLandroid/widget/ListView;->lookForSelectablePosition(IZ)I +HSPLandroid/widget/ListView;->makeAndAddView(IIZIZ)Landroid/view/View; +HSPLandroid/widget/ListView;->onFinishInflate()V +HSPLandroid/widget/ListView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroid/widget/ListView;->onMeasure(II)V +HSPLandroid/widget/ListView;->onSizeChanged(IIII)V +HSPLandroid/widget/ListView;->removeUnusedFixedViews(Ljava/util/List;)V +HSPLandroid/widget/ListView;->resetList()V +HSPLandroid/widget/ListView;->setAdapter(Landroid/widget/ListAdapter;)V +HSPLandroid/widget/ListView;->setCacheColorHint(I)V +HSPLandroid/widget/ListView;->setDivider(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ListView;->setItemsCanFocus(Z)V +HSPLandroid/widget/ListView;->setSelection(I)V +HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V +HSPLandroid/widget/ListView;->wrapHeaderListAdapterInternal()V +HSPLandroid/widget/ListView;->wrapHeaderListAdapterInternal(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)Landroid/widget/HeaderViewListAdapter; +HSPLandroid/widget/OverScroller$SplineOverScroller;->-get4(Landroid/widget/OverScroller$SplineOverScroller;)Z +HSPLandroid/widget/OverScroller$SplineOverScroller;->(Landroid/content/Context;)V +HSPLandroid/widget/OverScroller$SplineOverScroller;->finish()V +HSPLandroid/widget/OverScroller;->(Landroid/content/Context;)V +HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;)V +HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V +HSPLandroid/widget/OverScroller;->abortAnimation()V +HSPLandroid/widget/OverScroller;->computeScrollOffset()Z +HSPLandroid/widget/OverScroller;->isFinished()Z +HSPLandroid/widget/PopupMenu$1;->(Landroid/widget/PopupMenu;)V +HSPLandroid/widget/PopupMenu$2;->(Landroid/widget/PopupMenu;)V +HSPLandroid/widget/PopupMenu$3;->(Landroid/widget/PopupMenu;Landroid/view/View;)V +HSPLandroid/widget/PopupMenu;->(Landroid/content/Context;Landroid/view/View;I)V +HSPLandroid/widget/PopupMenu;->(Landroid/content/Context;Landroid/view/View;III)V +HSPLandroid/widget/PopupMenu;->getDragToOpenListener()Landroid/view/View$OnTouchListener; +HSPLandroid/widget/PopupMenu;->getMenu()Landroid/view/Menu; +HSPLandroid/widget/PopupMenu;->getMenuInflater()Landroid/view/MenuInflater; +HSPLandroid/widget/PopupMenu;->inflate(I)V +HSPLandroid/widget/PopupMenu;->setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V +HSPLandroid/widget/PopupWindow$1;->(Landroid/widget/PopupWindow;)V +HSPLandroid/widget/PopupWindow$2;->(Landroid/widget/PopupWindow;)V +HSPLandroid/widget/PopupWindow$OnDismissListener;->onDismiss()V +HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/PopupWindow;->dismiss()V +HSPLandroid/widget/PopupWindow;->getTransition(I)Landroid/transition/Transition; +HSPLandroid/widget/PopupWindow;->isShowing()Z +HSPLandroid/widget/PopupWindow;->setAttachedInDecor(Z)V +HSPLandroid/widget/PopupWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/PopupWindow;->setContentView(Landroid/view/View;)V +HSPLandroid/widget/PopupWindow;->setEnterTransition(Landroid/transition/Transition;)V +HSPLandroid/widget/PopupWindow;->setExitTransition(Landroid/transition/Transition;)V +HSPLandroid/widget/PopupWindow;->setInputMethodMode(I)V +HSPLandroid/widget/PopupWindow;->setSoftInputMode(I)V +HSPLandroid/widget/ProgressBar$1;->(Landroid/widget/ProgressBar;Ljava/lang/String;)V +HSPLandroid/widget/ProgressBar$1;->get(Landroid/widget/ProgressBar;)Ljava/lang/Float; +HSPLandroid/widget/ProgressBar$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/widget/ProgressBar$1;->setValue(Landroid/widget/ProgressBar;F)V +HSPLandroid/widget/ProgressBar$1;->setValue(Ljava/lang/Object;F)V +HSPLandroid/widget/ProgressBar$ProgressTintInfo;->()V +HSPLandroid/widget/ProgressBar$ProgressTintInfo;->(Landroid/widget/ProgressBar$ProgressTintInfo;)V +HSPLandroid/widget/ProgressBar$SavedState$1;->()V +HSPLandroid/widget/ProgressBar$SavedState;->(Landroid/os/Parcelable;)V +HSPLandroid/widget/ProgressBar$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/ProgressBar;->-get1(Landroid/widget/ProgressBar;)F +HSPLandroid/widget/ProgressBar;->-set1(Landroid/widget/ProgressBar;F)F +HSPLandroid/widget/ProgressBar;->-wrap1(Landroid/widget/ProgressBar;IF)V +HSPLandroid/widget/ProgressBar;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ProgressBar;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/ProgressBar;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ProgressBar;->applyIndeterminateTint()V +HSPLandroid/widget/ProgressBar;->applyPrimaryProgressTint()V +HSPLandroid/widget/ProgressBar;->applyProgressTints()V +HSPLandroid/widget/ProgressBar;->doRefreshProgress(IIZZZ)V +HSPLandroid/widget/ProgressBar;->drawTrack(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ProgressBar;->drawableStateChanged()V +HSPLandroid/widget/ProgressBar;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/ProgressBar;->getCurrentDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ProgressBar;->getIndeterminateDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ProgressBar;->getMax()I +HSPLandroid/widget/ProgressBar;->getMin()I +HSPLandroid/widget/ProgressBar;->getProgress()I +HSPLandroid/widget/ProgressBar;->getProgressDrawable()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ProgressBar;->getTintTarget(IZ)Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/ProgressBar;->initProgressBar()V +HSPLandroid/widget/ProgressBar;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->isIndeterminate()Z +HSPLandroid/widget/ProgressBar;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/ProgressBar;->needsTileify(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/ProgressBar;->onAttachedToWindow()V +HSPLandroid/widget/ProgressBar;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ProgressBar;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/widget/ProgressBar;->onMeasure(II)V +HSPLandroid/widget/ProgressBar;->onProgressRefresh(FZI)V +HSPLandroid/widget/ProgressBar;->onResolveDrawables(I)V +HSPLandroid/widget/ProgressBar;->onSaveInstanceState()Landroid/os/Parcelable; +HSPLandroid/widget/ProgressBar;->onSizeChanged(IIII)V +HSPLandroid/widget/ProgressBar;->onVisibilityAggregated(Z)V +HSPLandroid/widget/ProgressBar;->onVisualProgressChanged(IF)V +HSPLandroid/widget/ProgressBar;->postInvalidate()V +HSPLandroid/widget/ProgressBar;->refreshProgress(IIZZ)V +HSPLandroid/widget/ProgressBar;->setIndeterminate(Z)V +HSPLandroid/widget/ProgressBar;->setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->setInterpolator(Landroid/content/Context;I)V +HSPLandroid/widget/ProgressBar;->setInterpolator(Landroid/view/animation/Interpolator;)V +HSPLandroid/widget/ProgressBar;->setMax(I)V +HSPLandroid/widget/ProgressBar;->setMin(I)V +HSPLandroid/widget/ProgressBar;->setProgress(I)V +HSPLandroid/widget/ProgressBar;->setProgress(IZ)V +HSPLandroid/widget/ProgressBar;->setProgressDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->setProgressInternal(IZZ)Z +HSPLandroid/widget/ProgressBar;->setProgressTintList(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/ProgressBar;->setSecondaryProgress(I)V +HSPLandroid/widget/ProgressBar;->setVisualProgress(IF)V +HSPLandroid/widget/ProgressBar;->startAnimation()V +HSPLandroid/widget/ProgressBar;->stopAnimation()V +HSPLandroid/widget/ProgressBar;->swapCurrentDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->updateDrawableBounds(II)V +HSPLandroid/widget/ProgressBar;->updateDrawableState()V +HSPLandroid/widget/ProgressBar;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/RadioButton;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RadioButton;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/RadioButton;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/RadioGroup$CheckedStateTracker;->(Landroid/widget/RadioGroup;)V +HSPLandroid/widget/RadioGroup$CheckedStateTracker;->(Landroid/widget/RadioGroup;Landroid/widget/RadioGroup$CheckedStateTracker;)V +HSPLandroid/widget/RadioGroup$PassThroughHierarchyChangeListener;->(Landroid/widget/RadioGroup;)V +HSPLandroid/widget/RadioGroup$PassThroughHierarchyChangeListener;->(Landroid/widget/RadioGroup;Landroid/widget/RadioGroup$PassThroughHierarchyChangeListener;)V +HSPLandroid/widget/RadioGroup$PassThroughHierarchyChangeListener;->onChildViewAdded(Landroid/view/View;Landroid/view/View;)V +HSPLandroid/widget/RadioGroup;->-get1(Landroid/widget/RadioGroup;)Landroid/widget/CompoundButton$OnCheckedChangeListener; +HSPLandroid/widget/RadioGroup;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RadioGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/RadioGroup;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/RadioGroup;->init()V +HSPLandroid/widget/RadioGroup;->onFinishInflate()V +HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;->()V +HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;->acquire(Landroid/view/View;)Landroid/widget/RelativeLayout$DependencyGraph$Node; +HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;->release()V +HSPLandroid/widget/RelativeLayout$DependencyGraph;->-get0(Landroid/widget/RelativeLayout$DependencyGraph;)Landroid/util/SparseArray; +HSPLandroid/widget/RelativeLayout$DependencyGraph;->()V +HSPLandroid/widget/RelativeLayout$DependencyGraph;->(Landroid/widget/RelativeLayout$DependencyGraph;)V +HSPLandroid/widget/RelativeLayout$DependencyGraph;->add(Landroid/view/View;)V +HSPLandroid/widget/RelativeLayout$DependencyGraph;->clear()V +HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque; +HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->-get0(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-get1(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-get2(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-get3(Landroid/widget/RelativeLayout$LayoutParams;)[I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-get4(Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-set0(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-set1(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-set2(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->-set3(Landroid/widget/RelativeLayout$LayoutParams;I)I +HSPLandroid/widget/RelativeLayout$LayoutParams;->(II)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(I)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(II)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules()[I +HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules(I)[I +HSPLandroid/widget/RelativeLayout$LayoutParams;->hasRelativeRules()Z +HSPLandroid/widget/RelativeLayout$LayoutParams;->isRelativeRule(I)Z +HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveLayoutDirection(I)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveRules(I)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z +HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;)V +HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/RelativeLayout;->applyHorizontalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;I[I)V +HSPLandroid/widget/RelativeLayout;->applyVerticalSizeRules(Landroid/widget/RelativeLayout$LayoutParams;II)V +HSPLandroid/widget/RelativeLayout;->centerHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V +HSPLandroid/widget/RelativeLayout;->centerVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V +HSPLandroid/widget/RelativeLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/RelativeLayout;->compareLayoutPosition(Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;)I +HSPLandroid/widget/RelativeLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/RelativeLayout;->getBaseline()I +HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I +HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View; +HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I +HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V +HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V +HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V +HSPLandroid/widget/RelativeLayout;->onMeasure(II)V +HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V +HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z +HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z +HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V +HSPLandroid/widget/RelativeLayout;->requestLayout()V +HSPLandroid/widget/RelativeLayout;->sortChildren()V +HSPLandroid/widget/RemoteViews$1;->()V +HSPLandroid/widget/RemoteViews$2;->()V +HSPLandroid/widget/RemoteViews$3;->()V +HSPLandroid/widget/RemoteViews$Action;->()V +HSPLandroid/widget/RemoteViews$Action;->(Landroid/widget/RemoteViews$Action;)V +HSPLandroid/widget/RemoteViews$Action;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z +HSPLandroid/widget/RemoteViews$Action;->updateMemoryUsageEstimate(Landroid/widget/RemoteViews$MemoryUsageCounter;)V +HSPLandroid/widget/RemoteViews$BitmapCache;->()V +HSPLandroid/widget/RemoteViews$BitmapCache;->addBitmapMemory(Landroid/widget/RemoteViews$MemoryUsageCounter;)V +HSPLandroid/widget/RemoteViews$BitmapCache;->writeBitmapsToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/RemoteViews$LayoutParamAction;->(III)V +HSPLandroid/widget/RemoteViews$LayoutParamAction;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/RemoteViews$MemoryUsageCounter;->(Landroid/widget/RemoteViews;)V +HSPLandroid/widget/RemoteViews$MemoryUsageCounter;->(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews$MemoryUsageCounter;)V +HSPLandroid/widget/RemoteViews$MemoryUsageCounter;->clear()V +HSPLandroid/widget/RemoteViews$MutablePair;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/widget/RemoteViews$OnClickHandler;->()V +HSPLandroid/widget/RemoteViews$ReflectionAction;->(Landroid/widget/RemoteViews;ILjava/lang/String;ILjava/lang/Object;)V +HSPLandroid/widget/RemoteViews$ReflectionAction;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/RemoteViews$RuntimeAction;->()V +HSPLandroid/widget/RemoteViews$RuntimeAction;->(Landroid/widget/RemoteViews$RuntimeAction;)V +HSPLandroid/widget/RemoteViews$SetDrawableParameters;->(Landroid/widget/RemoteViews;IZIILandroid/graphics/PorterDuff$Mode;I)V +HSPLandroid/widget/RemoteViews$SetDrawableParameters;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/RemoteViews;->(Landroid/content/pm/ApplicationInfo;I)V +HSPLandroid/widget/RemoteViews;->addAction(Landroid/widget/RemoteViews$Action;)V +HSPLandroid/widget/RemoteViews;->getSequenceNumber()I +HSPLandroid/widget/RemoteViews;->hasLandscapeAndPortraitLayouts()Z +HSPLandroid/widget/RemoteViews;->recalculateMemoryUsage()V +HSPLandroid/widget/RemoteViews;->setBoolean(ILjava/lang/String;Z)V +HSPLandroid/widget/RemoteViews;->setCharSequence(ILjava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/widget/RemoteViews;->setDrawableParameters(IZIILandroid/graphics/PorterDuff$Mode;I)V +HSPLandroid/widget/RemoteViews;->setIcon(ILjava/lang/String;Landroid/graphics/drawable/Icon;)V +HSPLandroid/widget/RemoteViews;->setImageViewIcon(ILandroid/graphics/drawable/Icon;)V +HSPLandroid/widget/RemoteViews;->setInt(ILjava/lang/String;I)V +HSPLandroid/widget/RemoteViews;->setLong(ILjava/lang/String;J)V +HSPLandroid/widget/RemoteViews;->setTextColor(II)V +HSPLandroid/widget/RemoteViews;->setTextViewText(ILjava/lang/CharSequence;)V +HSPLandroid/widget/RemoteViews;->setViewLayoutMarginEndDimen(II)V +HSPLandroid/widget/RemoteViews;->setViewLayoutWidth(II)V +HSPLandroid/widget/RemoteViews;->setViewVisibility(II)V +HSPLandroid/widget/RemoteViews;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->deferNotifyDataSetChanged()V +HSPLandroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->onRemoteAdapterConnected()Z +HSPLandroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->onRemoteAdapterDisconnected()V +HSPLandroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;->setRemoteViewsAdapter(Landroid/content/Intent;Z)V +HSPLandroid/widget/RtlSpacingHelper;->()V +HSPLandroid/widget/RtlSpacingHelper;->getEnd()I +HSPLandroid/widget/RtlSpacingHelper;->getStart()I +HSPLandroid/widget/RtlSpacingHelper;->setAbsolute(II)V +HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V +HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V +HSPLandroid/widget/ScrollBarDrawable;->()V +HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V +HSPLandroid/widget/ScrollBarDrawable;->drawTrack(Landroid/graphics/Canvas;Landroid/graphics/Rect;Z)V +HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I +HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z +HSPLandroid/widget/ScrollBarDrawable;->mutate()Landroid/widget/ScrollBarDrawable; +HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V +HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z +HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V +HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollBarDrawable;->setParameters(IIIZ)V +HSPLandroid/widget/ScrollBarDrawable;->setVerticalThumbDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollBarDrawable;->setVerticalTrackDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/ScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/ScrollView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/ScrollView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/ScrollView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/widget/ScrollView;->clamp(III)I +HSPLandroid/widget/ScrollView;->initScrollView()V +HSPLandroid/widget/ScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/widget/ScrollView;->onLayout(ZIIII)V +HSPLandroid/widget/ScrollView;->onMeasure(II)V +HSPLandroid/widget/ScrollView;->onSizeChanged(IIII)V +HSPLandroid/widget/ScrollView;->requestLayout()V +HSPLandroid/widget/ScrollView;->scrollTo(II)V +HSPLandroid/widget/ScrollView;->setFillViewport(Z)V +HSPLandroid/widget/ScrollView;->setOverScrollMode(I)V +HSPLandroid/widget/Scroller$ViscousFluidInterpolator;->()V +HSPLandroid/widget/Scroller$ViscousFluidInterpolator;->viscousFluid(F)F +HSPLandroid/widget/Scroller;->(Landroid/content/Context;)V +HSPLandroid/widget/Scroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;)V +HSPLandroid/widget/Scroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V +HSPLandroid/widget/Scroller;->abortAnimation()V +HSPLandroid/widget/Scroller;->computeDeceleration(F)F +HSPLandroid/widget/Scroller;->computeScrollOffset()Z +HSPLandroid/widget/Scroller;->getCurrX()I +HSPLandroid/widget/Scroller;->getCurrY()I +HSPLandroid/widget/Scroller;->isFinished()Z +HSPLandroid/widget/Scroller;->startScroll(IIIII)V +HSPLandroid/widget/SearchView$OnCloseListener;->onClose()Z +HSPLandroid/widget/SectionIndexer;->getPositionForSection(I)I +HSPLandroid/widget/SectionIndexer;->getSectionForPosition(I)I +HSPLandroid/widget/SectionIndexer;->getSections()[Ljava/lang/Object; +HSPLandroid/widget/SeekBar$OnSeekBarChangeListener;->onProgressChanged(Landroid/widget/SeekBar;IZ)V +HSPLandroid/widget/SeekBar$OnSeekBarChangeListener;->onStartTrackingTouch(Landroid/widget/SeekBar;)V +HSPLandroid/widget/SeekBar$OnSeekBarChangeListener;->onStopTrackingTouch(Landroid/widget/SeekBar;)V +HSPLandroid/widget/SeekBar;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/SeekBar;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/SeekBar;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/SeekBar;->onProgressRefresh(FZI)V +HSPLandroid/widget/SeekBar;->setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V +HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/Space;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/Space;->getDefaultSize2(II)I +HSPLandroid/widget/Space;->onMeasure(II)V +HSPLandroid/widget/SpinnerAdapter;->getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLandroid/widget/Switch$1;->(Ljava/lang/String;)V +HSPLandroid/widget/Switch;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/Switch;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/Switch;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/Switch;->cancelPositionAnimator()V +HSPLandroid/widget/Switch;->drawableStateChanged()V +HSPLandroid/widget/Switch;->onCreateDrawableState(I)[I +HSPLandroid/widget/Switch;->setChecked(Z)V +HSPLandroid/widget/Switch;->setSwitchTextAppearance(Landroid/content/Context;I)V +HSPLandroid/widget/Switch;->setSwitchTypeface(Landroid/graphics/Typeface;)V +HSPLandroid/widget/Switch;->setSwitchTypeface(Landroid/graphics/Typeface;I)V +HSPLandroid/widget/Switch;->setSwitchTypefaceByIndex(II)V +HSPLandroid/widget/Switch;->setThumbPosition(F)V +HSPLandroid/widget/Switch;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/TextClock$1;->(Landroid/widget/TextClock;)V +HSPLandroid/widget/TextClock$2;->(Landroid/widget/TextClock;)V +HSPLandroid/widget/TextClock$FormatChangeObserver;->(Landroid/widget/TextClock;Landroid/os/Handler;)V +HSPLandroid/widget/TextClock;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/TextClock;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/TextClock;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/TextClock;->abc(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/widget/TextClock;->chooseFormat()V +HSPLandroid/widget/TextClock;->createTime(Ljava/lang/String;)V +HSPLandroid/widget/TextClock;->init()V +HSPLandroid/widget/TextClock;->is24HourModeEnabled()Z +HSPLandroid/widget/TextClock;->onAttachedToWindow()V +HSPLandroid/widget/TextClock;->onTimeChanged()V +HSPLandroid/widget/TextClock;->onVisibilityAggregated(Z)V +HSPLandroid/widget/TextClock;->registerObserver()V +HSPLandroid/widget/TextClock;->registerReceiver()V +HSPLandroid/widget/TextClock;->setFormat12Hour(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextClock;->setFormat24Hour(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextClock;->setShowCurrentUserTime(Z)V +HSPLandroid/widget/TextClock;->unregisterObserver()V +HSPLandroid/widget/TextView$BufferType;->(Ljava/lang/String;I)V +HSPLandroid/widget/TextView$ChangeWatcher;->(Landroid/widget/TextView;)V +HSPLandroid/widget/TextView$ChangeWatcher;->(Landroid/widget/TextView;Landroid/widget/TextView$ChangeWatcher;)V +HSPLandroid/widget/TextView$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/widget/TextView$ChangeWatcher;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V +HSPLandroid/widget/TextView$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V +HSPLandroid/widget/TextView$Drawables;->(Landroid/content/Context;)V +HSPLandroid/widget/TextView$Drawables;->applyErrorDrawableIfNeeded(I)V +HSPLandroid/widget/TextView$Drawables;->hasMetadata()Z +HSPLandroid/widget/TextView$Drawables;->resolveWithLayoutDirection(I)Z +HSPLandroid/widget/TextView$OnEditorActionListener;->onEditorAction(Landroid/widget/TextView;ILandroid/view/KeyEvent;)Z +HSPLandroid/widget/TextView$SavedState$1;->()V +HSPLandroid/widget/TextView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/TextView$SavedState; +HSPLandroid/widget/TextView$SavedState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/widget/TextView$SavedState;->(Landroid/os/Parcel;)V +HSPLandroid/widget/TextView$SavedState;->(Landroid/os/Parcel;Landroid/widget/TextView$SavedState;)V +HSPLandroid/widget/TextView$SavedState;->(Landroid/os/Parcelable;)V +HSPLandroid/widget/TextView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/widget/TextView;->-getandroid-text-Layout$AlignmentSwitchesValues()[I +HSPLandroid/widget/TextView;->(Landroid/content/Context;)V +HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/TextView;->addTextChangedListener(Landroid/text/TextWatcher;)V +HSPLandroid/widget/TextView;->applyCompoundDrawableTint()V +HSPLandroid/widget/TextView;->applySingleLine(ZZZ)V +HSPLandroid/widget/TextView;->assumeLayout()V +HSPLandroid/widget/TextView;->autoSizeText()V +HSPLandroid/widget/TextView;->bringPointIntoView(I)Z +HSPLandroid/widget/TextView;->bringTextIntoView()Z +HSPLandroid/widget/TextView;->cancelLongPress()V +HSPLandroid/widget/TextView;->checkForRelayout()V +HSPLandroid/widget/TextView;->checkForResize()V +HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I +HSPLandroid/widget/TextView;->compressText(F)Z +HSPLandroid/widget/TextView;->computeScroll()V +HSPLandroid/widget/TextView;->convertFromViewportToContentCoordinates(Landroid/graphics/Rect;)V +HSPLandroid/widget/TextView;->createEditorIfNeeded()V +HSPLandroid/widget/TextView;->desired(Landroid/text/Layout;)I +HSPLandroid/widget/TextView;->drawableStateChanged()V +HSPLandroid/widget/TextView;->findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V +HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V +HSPLandroid/widget/TextView;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getAccessibilitySelectionEnd()I +HSPLandroid/widget/TextView;->getAccessibilitySelectionStart()I +HSPLandroid/widget/TextView;->getAutofillType()I +HSPLandroid/widget/TextView;->getAutofillValue()Landroid/view/autofill/AutofillValue; +HSPLandroid/widget/TextView;->getBaseline()I +HSPLandroid/widget/TextView;->getBaselineOffset()I +HSPLandroid/widget/TextView;->getBoxHeight(Landroid/text/Layout;)I +HSPLandroid/widget/TextView;->getCompoundDrawablesRelative()[Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/TextView;->getCompoundPaddingBottom()I +HSPLandroid/widget/TextView;->getCompoundPaddingLeft()I +HSPLandroid/widget/TextView;->getCompoundPaddingRight()I +HSPLandroid/widget/TextView;->getCompoundPaddingTop()I +HSPLandroid/widget/TextView;->getCurrentTextColor()I +HSPLandroid/widget/TextView;->getDefaultEditable()Z +HSPLandroid/widget/TextView;->getDefaultMovementMethod()Landroid/text/method/MovementMethod; +HSPLandroid/widget/TextView;->getDesiredHeight()I +HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I +HSPLandroid/widget/TextView;->getEditableText()Landroid/text/Editable; +HSPLandroid/widget/TextView;->getEllipsize()Landroid/text/TextUtils$TruncateAt; +HSPLandroid/widget/TextView;->getError()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I +HSPLandroid/widget/TextView;->getExtendedPaddingTop()I +HSPLandroid/widget/TextView;->getFilters()[Landroid/text/InputFilter; +HSPLandroid/widget/TextView;->getFreezesText()Z +HSPLandroid/widget/TextView;->getGravity()I +HSPLandroid/widget/TextView;->getHighlightColor()I +HSPLandroid/widget/TextView;->getHint()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getHorizontalOffsetForDrawables()I +HSPLandroid/widget/TextView;->getHorizontallyScrolling()Z +HSPLandroid/widget/TextView;->getInputType()I +HSPLandroid/widget/TextView;->getInterestingRect(Landroid/graphics/Rect;I)V +HSPLandroid/widget/TextView;->getIterableTextForAccessibility()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getKeyListener()Landroid/text/method/KeyListener; +HSPLandroid/widget/TextView;->getLayout()Landroid/text/Layout; +HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment; +HSPLandroid/widget/TextView;->getLineAtCoordinateUnclamped(F)I +HSPLandroid/widget/TextView;->getLineCount()I +HSPLandroid/widget/TextView;->getLineHeight()I +HSPLandroid/widget/TextView;->getMaxLines()I +HSPLandroid/widget/TextView;->getMovementMethod()Landroid/text/method/MovementMethod; +HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->getSelectionEnd()I +HSPLandroid/widget/TextView;->getSelectionStart()I +HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList; +HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; +HSPLandroid/widget/TextView;->getTextForAccessibility()Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale; +HSPLandroid/widget/TextView;->getTextSize()F +HSPLandroid/widget/TextView;->getTotalPaddingTop()I +HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod; +HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path; +HSPLandroid/widget/TextView;->getVerticalOffset(Z)I +HSPLandroid/widget/TextView;->hasOverlappingRendering()Z +HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z +HSPLandroid/widget/TextView;->hasSelection()Z +HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V +HSPLandroid/widget/TextView;->invalidateCursor(III)V +HSPLandroid/widget/TextView;->invalidateCursorPath()V +HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V +HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z +HSPLandroid/widget/TextView;->isAutofillable()Z +HSPLandroid/widget/TextView;->isInExtractedMode()Z +HSPLandroid/widget/TextView;->isMarqueeFadeEnabled()Z +HSPLandroid/widget/TextView;->isMultilineInputType(I)Z +HSPLandroid/widget/TextView;->isPasswordInputType(I)Z +HSPLandroid/widget/TextView;->isShowingHint()Z +HSPLandroid/widget/TextView;->isSingleLine()Z +HSPLandroid/widget/TextView;->isSuggestionsEnabled()Z +HSPLandroid/widget/TextView;->isTextEditable()Z +HSPLandroid/widget/TextView;->isTextSelectable()Z +HSPLandroid/widget/TextView;->isVisiblePasswordInputType(I)Z +HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/TextView;->length()I +HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V +HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout; +HSPLandroid/widget/TextView;->notifyAutoFillManagerAfterTextChangedIfNeeded()V +HSPLandroid/widget/TextView;->nullLayouts()V +HSPLandroid/widget/TextView;->onAttachedToWindow()V +HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z +HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I +HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V +HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLandroid/widget/TextView;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLandroid/widget/TextView;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroid/widget/TextView;->onLayout(ZIIII)V +HSPLandroid/widget/TextView;->onMeasure(II)V +HSPLandroid/widget/TextView;->onPreDraw()Z +HSPLandroid/widget/TextView;->onProvideAutoStructureForAssistOrAutofill(Landroid/view/ViewStructure;Z)V +HSPLandroid/widget/TextView;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V +HSPLandroid/widget/TextView;->onResolveDrawables(I)V +HSPLandroid/widget/TextView;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/TextView;->onSaveInstanceState()Landroid/os/Parcelable; +HSPLandroid/widget/TextView;->onScrollChanged(IIII)V +HSPLandroid/widget/TextView;->onSelectionChanged(II)V +HSPLandroid/widget/TextView;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/TextView;->onVisibilityChanged(Landroid/view/View;I)V +HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V +HSPLandroid/widget/TextView;->prepareDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->registerForPreDraw()V +HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V +HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V +HSPLandroid/widget/TextView;->removeMisspelledSpans(Landroid/text/Spannable;)V +HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->removeTextChangedListener(Landroid/text/TextWatcher;)V +HSPLandroid/widget/TextView;->resetResolvedDrawables()V +HSPLandroid/widget/TextView;->restartMarqueeIfNeeded()V +HSPLandroid/widget/TextView;->sendAccessibilityEventInternal(I)V +HSPLandroid/widget/TextView;->sendAfterTextChanged(Landroid/text/Editable;)V +HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/TextView;->setAllCaps(Z)V +HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V +HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(IIII)V +HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(IIII)V +HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCursorVisible(Z)V +HSPLandroid/widget/TextView;->setCustomInsertionActionModeCallback(Landroid/view/ActionMode$Callback;)V +HSPLandroid/widget/TextView;->setCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;)V +HSPLandroid/widget/TextView;->setElegantTextHeight(Z)V +HSPLandroid/widget/TextView;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V +HSPLandroid/widget/TextView;->setEnabled(Z)V +HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V +HSPLandroid/widget/TextView;->setFilters([Landroid/text/InputFilter;)V +HSPLandroid/widget/TextView;->setFontFeatureSettings(Ljava/lang/String;)V +HSPLandroid/widget/TextView;->setFrame(IIII)Z +HSPLandroid/widget/TextView;->setGravity(I)V +HSPLandroid/widget/TextView;->setHighlightColor(I)V +HSPLandroid/widget/TextView;->setHint(I)V +HSPLandroid/widget/TextView;->setHint(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextView;->setHintTextColor(I)V +HSPLandroid/widget/TextView;->setHintTextColor(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/TextView;->setHorizontallyScrolling(Z)V +HSPLandroid/widget/TextView;->setImeOptions(I)V +HSPLandroid/widget/TextView;->setIncludeFontPadding(Z)V +HSPLandroid/widget/TextView;->setInputType(I)V +HSPLandroid/widget/TextView;->setInputType(IZ)V +HSPLandroid/widget/TextView;->setInputTypeFromEditor()V +HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V +HSPLandroid/widget/TextView;->setKeyListener(Landroid/text/method/KeyListener;)V +HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V +HSPLandroid/widget/TextView;->setLetterSpacing(F)V +HSPLandroid/widget/TextView;->setLines(I)V +HSPLandroid/widget/TextView;->setLinkTextColor(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/TextView;->setMaxLines(I)V +HSPLandroid/widget/TextView;->setMaxWidth(I)V +HSPLandroid/widget/TextView;->setMinHeight(I)V +HSPLandroid/widget/TextView;->setMinWidth(I)V +HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V +HSPLandroid/widget/TextView;->setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V +HSPLandroid/widget/TextView;->setPadding(IIII)V +HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V +HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V +HSPLandroid/widget/TextView;->setRawInputType(I)V +HSPLandroid/widget/TextView;->setRawTextSize(FZ)V +HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setSelectAllOnFocus(Z)V +HSPLandroid/widget/TextView;->setSelected(Z)V +HSPLandroid/widget/TextView;->setShadowLayer(FFFI)V +HSPLandroid/widget/TextView;->setShowSoftInputOnFocus(Z)V +HSPLandroid/widget/TextView;->setSingleLine()V +HSPLandroid/widget/TextView;->setSingleLine(Z)V +HSPLandroid/widget/TextView;->setText(I)V +HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V +HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V +HSPLandroid/widget/TextView;->setTextAppearance(I)V +HSPLandroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V +HSPLandroid/widget/TextView;->setTextColor(I)V +HSPLandroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V +HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V +HSPLandroid/widget/TextView;->setTextSize(IF)V +HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V +HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V +HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;II)V +HSPLandroid/widget/TextView;->setupAutoSizeText()Z +HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V +HSPLandroid/widget/TextView;->startMarquee()V +HSPLandroid/widget/TextView;->startStopMarquee(Z)V +HSPLandroid/widget/TextView;->stopMarquee()V +HSPLandroid/widget/TextView;->stopTextActionMode()V +HSPLandroid/widget/TextView;->supportsAutoSizeText()Z +HSPLandroid/widget/TextView;->textCanBeSelected()Z +HSPLandroid/widget/TextView;->unregisterForPreDraw()V +HSPLandroid/widget/TextView;->updateTextColors()V +HSPLandroid/widget/TextView;->validateAndSetAutoSizeTextTypeUniformConfiguration(FFF)V +HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLandroid/widget/TextView;->viewportToContentHorizontalOffset()I +HSPLandroid/widget/TextView;->viewportToContentVerticalOffset()I +HSPLandroid/widget/ThemedSpinnerAdapter;->getDropDownViewTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/widget/ThemedSpinnerAdapter;->setDropDownViewTheme(Landroid/content/res/Resources$Theme;)V +HSPLandroid/widget/Toast$TN$1;->(Landroid/widget/Toast$TN;Landroid/os/Looper;Landroid/os/Handler$Callback;)V +HSPLandroid/widget/Toast$TN;->(Ljava/lang/String;Landroid/os/Looper;)V +HSPLandroid/widget/Toast;->(Landroid/content/Context;Landroid/os/Looper;)V +HSPLandroid/widget/Toast;->makeText(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/CharSequence;I)Landroid/widget/Toast; +HSPLandroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; +HSPLandroid/widget/Toolbar$1;->(Landroid/widget/Toolbar;)V +HSPLandroid/widget/Toolbar$2;->(Landroid/widget/Toolbar;)V +HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->(Landroid/widget/Toolbar;)V +HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->(Landroid/widget/Toolbar;Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter;)V +HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->flagActionItems()Z +HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->updateMenuView(Z)V +HSPLandroid/widget/Toolbar$LayoutParams;->(II)V +HSPLandroid/widget/Toolbar$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/Toolbar$OnMenuItemClickListener;->onMenuItemClick(Landroid/view/MenuItem;)Z +HSPLandroid/widget/Toolbar;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/Toolbar;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroid/widget/Toolbar;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/Toolbar;->addCustomViewsWithGravity(Ljava/util/List;I)V +HSPLandroid/widget/Toolbar;->addSystemView(Landroid/view/View;Z)V +HSPLandroid/widget/Toolbar;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroid/widget/Toolbar;->ensureContentInsets()V +HSPLandroid/widget/Toolbar;->ensureLogoView()V +HSPLandroid/widget/Toolbar;->ensureMenu()V +HSPLandroid/widget/Toolbar;->ensureMenuView()V +HSPLandroid/widget/Toolbar;->ensureNavButtonView()V +HSPLandroid/widget/Toolbar;->generateDefaultLayoutParams()Landroid/widget/Toolbar$LayoutParams; +HSPLandroid/widget/Toolbar;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroid/widget/Toolbar;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/Toolbar$LayoutParams; +HSPLandroid/widget/Toolbar;->getChildHorizontalGravity(I)I +HSPLandroid/widget/Toolbar;->getChildTop(Landroid/view/View;I)I +HSPLandroid/widget/Toolbar;->getChildVerticalGravity(I)I +HSPLandroid/widget/Toolbar;->getContentInsetEnd()I +HSPLandroid/widget/Toolbar;->getContentInsetStart()I +HSPLandroid/widget/Toolbar;->getCurrentContentInsetEnd()I +HSPLandroid/widget/Toolbar;->getCurrentContentInsetLeft()I +HSPLandroid/widget/Toolbar;->getCurrentContentInsetRight()I +HSPLandroid/widget/Toolbar;->getCurrentContentInsetStart()I +HSPLandroid/widget/Toolbar;->getHorizontalMargins(Landroid/view/View;)I +HSPLandroid/widget/Toolbar;->getMenu()Landroid/view/Menu; +HSPLandroid/widget/Toolbar;->getNavigationContentDescription()Ljava/lang/CharSequence; +HSPLandroid/widget/Toolbar;->getNavigationIcon()Landroid/graphics/drawable/Drawable; +HSPLandroid/widget/Toolbar;->getNavigationView()Landroid/view/View; +HSPLandroid/widget/Toolbar;->getSubtitle()Ljava/lang/CharSequence; +HSPLandroid/widget/Toolbar;->getTitle()Ljava/lang/CharSequence; +HSPLandroid/widget/Toolbar;->getVerticalMargins(Landroid/view/View;)I +HSPLandroid/widget/Toolbar;->getViewListMeasuredWidth(Ljava/util/List;[I)I +HSPLandroid/widget/Toolbar;->getWrapper()Lcom/android/internal/widget/DecorToolbar; +HSPLandroid/widget/Toolbar;->isChildOrHidden(Landroid/view/View;)Z +HSPLandroid/widget/Toolbar;->layoutChildLeft(Landroid/view/View;I[II)I +HSPLandroid/widget/Toolbar;->layoutChildRight(Landroid/view/View;I[II)I +HSPLandroid/widget/Toolbar;->measureChildCollapseMargins(Landroid/view/View;IIII[I)I +HSPLandroid/widget/Toolbar;->measureChildConstrained(Landroid/view/View;IIIII)V +HSPLandroid/widget/Toolbar;->onAttachedToWindow()V +HSPLandroid/widget/Toolbar;->onLayout(ZIIII)V +HSPLandroid/widget/Toolbar;->onMeasure(II)V +HSPLandroid/widget/Toolbar;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/Toolbar;->setCollapsible(Z)V +HSPLandroid/widget/Toolbar;->setContentInsetsRelative(II)V +HSPLandroid/widget/Toolbar;->setLogo(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/Toolbar;->setMenu(Lcom/android/internal/view/menu/MenuBuilder;Landroid/widget/ActionMenuPresenter;)V +HSPLandroid/widget/Toolbar;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V +HSPLandroid/widget/Toolbar;->setNavigationContentDescription(I)V +HSPLandroid/widget/Toolbar;->setNavigationContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/widget/Toolbar;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/Toolbar;->setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V +HSPLandroid/widget/Toolbar;->setOnMenuItemClickListener(Landroid/widget/Toolbar$OnMenuItemClickListener;)V +HSPLandroid/widget/Toolbar;->setPopupTheme(I)V +HSPLandroid/widget/Toolbar;->setSubtitle(Ljava/lang/CharSequence;)V +HSPLandroid/widget/Toolbar;->setSubtitleTextAppearance(Landroid/content/Context;I)V +HSPLandroid/widget/Toolbar;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroid/widget/Toolbar;->setTitleTextAppearance(Landroid/content/Context;I)V +HSPLandroid/widget/Toolbar;->shouldCollapse()Z +HSPLandroid/widget/Toolbar;->shouldLayout(Landroid/view/View;)Z +HSPLandroid/widget/WrapperListAdapter;->getWrappedAdapter()Landroid/widget/ListAdapter; +HSPLcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet;->getCountryCodeSet()Ljava/util/Set; +HSPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->(Ljava/lang/String;)V +HSPLcom/android/i18n/phonenumbers/AsYouTypeFormatter;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map; +HSPLcom/android/i18n/phonenumbers/MetadataLoader;->loadMetadata(Ljava/lang/String;)Ljava/io/InputStream; +HSPLcom/android/i18n/phonenumbers/MetadataManager$1;->()V +HSPLcom/android/i18n/phonenumbers/MetadataManager$1;->loadMetadata(Ljava/lang/String;)Ljava/io/InputStream; +HSPLcom/android/i18n/phonenumbers/MetadataManager;->getMetadataFromMultiFilePrefix(Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/String;Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/MetadataManager;->getMetadataFromSingleFileName(Ljava/lang/String;Lcom/android/i18n/phonenumbers/MetadataLoader;)Ljava/util/List; +HSPLcom/android/i18n/phonenumbers/MetadataManager;->loadMetadataAndCloseInput(Ljava/io/InputStream;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection; +HSPLcom/android/i18n/phonenumbers/MetadataSource;->getMetadataForNonGeographicalRegion(I)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/MetadataSource;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl;->(Lcom/android/i18n/phonenumbers/MetadataLoader;)V +HSPLcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl;->(Ljava/lang/String;Lcom/android/i18n/phonenumbers/MetadataLoader;)V +HSPLcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->(Lcom/android/i18n/phonenumbers/MetadataSource;Ljava/util/Map;)V +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createExtnPattern(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createInstance(Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createInstance(Lcom/android/i18n/phonenumbers/MetadataSource;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getAsYouTypeFormatter(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/AsYouTypeFormatter; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getCountryCodeForRegion(Ljava/lang/String;)I +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getCountryCodeForValidRegion(Ljava/lang/String;)I +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getInstance()Lcom/android/i18n/phonenumbers/PhoneNumberUtil; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForCountryCode(I)Ljava/lang/String; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidRegionCode(Ljava/lang/String;)Z +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setInstance(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;)V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->()V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->readExternal(Ljava/io/ObjectInput;)V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setDomesticCarrierCodeFormattingRule(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setFormat(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setNationalPrefixFormattingRule(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setNationalPrefixOptionalWhenFormatting(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setPattern(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->()V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getCountryCode()I +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->readExternal(Ljava/io/ObjectInput;)V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setCountryCode(I)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setFixedLine(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setGeneralDesc(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setId(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setInternationalPrefix(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setLeadingZeroPossible(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMainCountryForCode(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMobile(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMobileNumberPortableRegion(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNationalPrefix(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNationalPrefixForParsing(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNoInternationalDialling(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPager(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPersonalNumber(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPremiumRate(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setSameMobileAndFixedLinePattern(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setSharedCost(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setTollFree(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setUan(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setVoicemail(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setVoip(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;->()V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;->getMetadataList()Ljava/util/List; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;->readExternal(Ljava/io/ObjectInput;)V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->()V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->readExternal(Ljava/io/ObjectInput;)V +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->setExampleNumber(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc; +HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->setNationalNumberPattern(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc; +HSPLcom/android/i18n/phonenumbers/RegexCache$LRUCache$1;->(Lcom/android/i18n/phonenumbers/RegexCache$LRUCache;IFZ)V +HSPLcom/android/i18n/phonenumbers/RegexCache$LRUCache;->(I)V +HSPLcom/android/i18n/phonenumbers/RegexCache;->(I)V +HSPLcom/android/i18n/phonenumbers/ShortNumbersRegionCodeSet;->getRegionCodeSet()Ljava/util/Set; +HSPLcom/android/ims/-$Lambda$AvFHcs3Z6Dq6dkOugMW9Kc7Qzng$1;->(Ljava/lang/Object;)V +HSPLcom/android/ims/-$Lambda$AvFHcs3Z6Dq6dkOugMW9Kc7Qzng$2;->(Ljava/lang/Object;)V +HSPLcom/android/ims/-$Lambda$AvFHcs3Z6Dq6dkOugMW9Kc7Qzng$3;->$m$1(Ljava/lang/Object;)V +HSPLcom/android/ims/-$Lambda$AvFHcs3Z6Dq6dkOugMW9Kc7Qzng$3;->(BLjava/lang/Object;)V +HSPLcom/android/ims/-$Lambda$AvFHcs3Z6Dq6dkOugMW9Kc7Qzng$3;->accept(Ljava/lang/Object;)V +HSPLcom/android/ims/ImsCall$Listener;->()V +HSPLcom/android/ims/ImsConfig;->(Lcom/android/ims/internal/IImsConfig;Landroid/content/Context;)V +HSPLcom/android/ims/ImsConfig;->setProvisionedValue(II)I +HSPLcom/android/ims/ImsConfigListener$Stub;->()V +HSPLcom/android/ims/ImsConfigListener;->onGetFeatureResponse(IIII)V +HSPLcom/android/ims/ImsConfigListener;->onGetVideoQuality(II)V +HSPLcom/android/ims/ImsConfigListener;->onSetFeatureResponse(IIII)V +HSPLcom/android/ims/ImsConfigListener;->onSetVideoQuality(I)V +HSPLcom/android/ims/ImsConnectionStateListener;->()V +HSPLcom/android/ims/ImsEcbm$ImsEcbmListenerProxy;->(Lcom/android/ims/ImsEcbm;Lcom/android/ims/ImsEcbmStateListener;)V +HSPLcom/android/ims/ImsEcbm;->(Lcom/android/ims/internal/IImsEcbm;)V +HSPLcom/android/ims/ImsEcbm;->setEcbmStateListener(Lcom/android/ims/ImsEcbmStateListener;)V +HSPLcom/android/ims/ImsEcbmStateListener;->()V +HSPLcom/android/ims/ImsException;->(Ljava/lang/String;I)V +HSPLcom/android/ims/ImsException;->(Ljava/lang/String;Ljava/lang/Throwable;I)V +HSPLcom/android/ims/ImsExternalCallStateListener;->()V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerBase;->(Lcom/android/ims/ImsManager;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerBase;->(Lcom/android/ims/ImsManager;Lcom/android/ims/ImsManager$ImsRegistrationListenerBase;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerBase;->registrationDisconnected(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerBase;->registrationFeatureCapabilityChanged(I[I[I)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerProxy;->(Lcom/android/ims/ImsManager;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerProxy;->(Lcom/android/ims/ImsManager;Lcom/android/ims/ImsManager$ImsRegistrationListenerProxy;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerProxy;->lambda$-com_android_ims_ImsManager$ImsRegistrationListenerProxy_96187(Lcom/android/ims/ImsReasonInfo;Lcom/android/ims/ImsConnectionStateListener;)V +HSPLcom/android/ims/ImsManager$ImsRegistrationListenerProxy;->registrationDisconnected(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/ImsManager$ImsServiceDeathRecipient;->(Lcom/android/ims/ImsManager;)V +HSPLcom/android/ims/ImsManager$ImsServiceDeathRecipient;->(Lcom/android/ims/ImsManager;Lcom/android/ims/ImsManager$ImsServiceDeathRecipient;)V +HSPLcom/android/ims/ImsManager;->-get1(Lcom/android/ims/ImsManager;)Ljava/util/Set; +HSPLcom/android/ims/ImsManager;->-wrap3(Lcom/android/ims/ImsManager;Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/ImsManager;->-wrap4(Ljava/lang/String;)V +HSPLcom/android/ims/ImsManager;->(Landroid/content/Context;I)V +HSPLcom/android/ims/ImsManager;->addNotifyStatusChangedCallbackIfAvailable(Landroid/telephony/ims/ImsServiceProxy$INotifyStatusChanged;)V +HSPLcom/android/ims/ImsManager;->addRegistrationListener(Lcom/android/ims/ImsConnectionStateListener;)V +HSPLcom/android/ims/ImsManager;->addToRecentDisconnectReasons(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/ImsManager;->checkAndThrowExceptionIfServiceUnavailable()V +HSPLcom/android/ims/ImsManager;->connectIfServiceIsAvailable()V +HSPLcom/android/ims/ImsManager;->createImsService()V +HSPLcom/android/ims/ImsManager;->getBooleanCarrierConfig(Landroid/content/Context;Ljava/lang/String;)Z +HSPLcom/android/ims/ImsManager;->getConfigInterface()Lcom/android/ims/ImsConfig; +HSPLcom/android/ims/ImsManager;->getEcbmInterface(I)Lcom/android/ims/ImsEcbm; +HSPLcom/android/ims/ImsManager;->getImsServiceStatus()I +HSPLcom/android/ims/ImsManager;->getInstance(Landroid/content/Context;I)Lcom/android/ims/ImsManager; +HSPLcom/android/ims/ImsManager;->getMultiEndpointInterface(I)Lcom/android/ims/ImsMultiEndpoint; +HSPLcom/android/ims/ImsManager;->getServiceProxy()Landroid/telephony/ims/ImsServiceProxy; +HSPLcom/android/ims/ImsManager;->isDynamicBinding()Z +HSPLcom/android/ims/ImsManager;->isServiceAvailable()Z +HSPLcom/android/ims/ImsManager;->isVtEnabledByPlatform(Landroid/content/Context;)Z +HSPLcom/android/ims/ImsManager;->isVtEnabledByUser(Landroid/content/Context;)Z +HSPLcom/android/ims/ImsManager;->isWfcEnabledByUser(Landroid/content/Context;)Z +HSPLcom/android/ims/ImsManager;->log(Ljava/lang/String;)V +HSPLcom/android/ims/ImsManager;->open(ILandroid/app/PendingIntent;Lcom/android/ims/ImsConnectionStateListener;)I +HSPLcom/android/ims/ImsManager;->setDataEnabled(Z)V +HSPLcom/android/ims/ImsManager;->setImsConfigListener(Lcom/android/ims/ImsConfigListener;)V +HSPLcom/android/ims/ImsManager;->setUiTTYMode(Landroid/content/Context;ILandroid/os/Message;)V +HSPLcom/android/ims/ImsMultiEndpoint$ImsExternalCallStateListenerProxy;->(Lcom/android/ims/ImsMultiEndpoint;Lcom/android/ims/ImsExternalCallStateListener;)V +HSPLcom/android/ims/ImsMultiEndpoint;->(Lcom/android/ims/internal/IImsMultiEndpoint;)V +HSPLcom/android/ims/ImsMultiEndpoint;->setExternalCallStateListener(Lcom/android/ims/ImsExternalCallStateListener;)V +HSPLcom/android/ims/ImsReasonInfo$1;->()V +HSPLcom/android/ims/ImsReasonInfo;->(IILjava/lang/String;)V +HSPLcom/android/ims/ImsReasonInfo;->getCode()I +HSPLcom/android/ims/ImsReasonInfo;->getExtraCode()I +HSPLcom/android/ims/ImsReasonInfo;->getExtraMessage()Ljava/lang/String; +HSPLcom/android/ims/ImsReasonInfo;->toString()Ljava/lang/String; +HSPLcom/android/ims/ImsReasonInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLcom/android/ims/internal/IImsConfig$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/ims/internal/IImsConfig$Stub$Proxy;->setProvisionedValue(II)I +HSPLcom/android/ims/internal/IImsConfig$Stub;->()V +HSPLcom/android/ims/internal/IImsConfig$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsConfig; +HSPLcom/android/ims/internal/IImsConfig;->getFeatureValue(IILcom/android/ims/ImsConfigListener;)V +HSPLcom/android/ims/internal/IImsConfig;->getProvisionedStringValue(I)Ljava/lang/String; +HSPLcom/android/ims/internal/IImsConfig;->getProvisionedValue(I)I +HSPLcom/android/ims/internal/IImsConfig;->getVideoQuality(Lcom/android/ims/ImsConfigListener;)V +HSPLcom/android/ims/internal/IImsConfig;->getVolteProvisioned()Z +HSPLcom/android/ims/internal/IImsConfig;->setFeatureValue(IIILcom/android/ims/ImsConfigListener;)V +HSPLcom/android/ims/internal/IImsConfig;->setProvisionedStringValue(ILjava/lang/String;)I +HSPLcom/android/ims/internal/IImsConfig;->setProvisionedValue(II)I +HSPLcom/android/ims/internal/IImsConfig;->setVideoQuality(ILcom/android/ims/ImsConfigListener;)V +HSPLcom/android/ims/internal/IImsEcbm$Stub;->()V +HSPLcom/android/ims/internal/IImsEcbmListener$Stub;->()V +HSPLcom/android/ims/internal/IImsEcbmListener;->enteredECBM()V +HSPLcom/android/ims/internal/IImsEcbmListener;->exitedECBM()V +HSPLcom/android/ims/internal/IImsExternalCallStateListener$Stub;->()V +HSPLcom/android/ims/internal/IImsExternalCallStateListener;->onImsExternalCallStateUpdate(Ljava/util/List;)V +HSPLcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->()V +HSPLcom/android/ims/internal/IImsFeatureStatusCallback;->notifyImsFeatureStatus(I)V +HSPLcom/android/ims/internal/IImsMultiEndpoint$Stub;->()V +HSPLcom/android/ims/internal/IImsRegistrationListener$Stub;->()V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationAssociatedUriChanged([Landroid/net/Uri;)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationChangeFailed(ILcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationConnected()V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationConnectedWithRadioTech(I)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationDisconnected(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationFeatureCapabilityChanged(I[I[I)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationProgressing()V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationProgressingWithRadioTech(I)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationResumed()V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationServiceCapabilityChanged(II)V +HSPLcom/android/ims/internal/IImsRegistrationListener;->registrationSuspended()V +HSPLcom/android/ims/internal/IImsRegistrationListener;->voiceMessageCountUpdate(I)V +HSPLcom/android/ims/internal/IImsServiceController$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/ims/internal/IImsServiceController$Stub$Proxy;->asBinder()Landroid/os/IBinder; +HSPLcom/android/ims/internal/IImsServiceController$Stub$Proxy;->getConfigInterface(II)Lcom/android/ims/internal/IImsConfig; +HSPLcom/android/ims/internal/IImsServiceController$Stub$Proxy;->getFeatureStatus(II)I +HSPLcom/android/ims/internal/IImsServiceController$Stub;->()V +HSPLcom/android/ims/internal/IImsServiceController$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/ims/internal/IImsServiceController$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/ims/internal/IImsServiceController;->addRegistrationListener(IILcom/android/ims/internal/IImsRegistrationListener;)V +HSPLcom/android/ims/internal/IImsServiceController;->createCallProfile(IIIII)Lcom/android/ims/ImsCallProfile; +HSPLcom/android/ims/internal/IImsServiceController;->createCallSession(IIILcom/android/ims/ImsCallProfile;Lcom/android/ims/internal/IImsCallSessionListener;)Lcom/android/ims/internal/IImsCallSession; +HSPLcom/android/ims/internal/IImsServiceController;->createImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLcom/android/ims/internal/IImsServiceController;->endSession(III)V +HSPLcom/android/ims/internal/IImsServiceController;->getConfigInterface(II)Lcom/android/ims/internal/IImsConfig; +HSPLcom/android/ims/internal/IImsServiceController;->getEcbmInterface(II)Lcom/android/ims/internal/IImsEcbm; +HSPLcom/android/ims/internal/IImsServiceController;->getFeatureStatus(II)I +HSPLcom/android/ims/internal/IImsServiceController;->getMultiEndpointInterface(II)Lcom/android/ims/internal/IImsMultiEndpoint; +HSPLcom/android/ims/internal/IImsServiceController;->getPendingCallSession(IIILjava/lang/String;)Lcom/android/ims/internal/IImsCallSession; +HSPLcom/android/ims/internal/IImsServiceController;->getUtInterface(II)Lcom/android/ims/internal/IImsUt; +HSPLcom/android/ims/internal/IImsServiceController;->isConnected(IIII)Z +HSPLcom/android/ims/internal/IImsServiceController;->isOpened(II)Z +HSPLcom/android/ims/internal/IImsServiceController;->removeImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)V +HSPLcom/android/ims/internal/IImsServiceController;->removeRegistrationListener(IILcom/android/ims/internal/IImsRegistrationListener;)V +HSPLcom/android/ims/internal/IImsServiceController;->setUiTTYMode(IIILandroid/os/Message;)V +HSPLcom/android/ims/internal/IImsServiceController;->startSession(IILandroid/app/PendingIntent;Lcom/android/ims/internal/IImsRegistrationListener;)I +HSPLcom/android/ims/internal/IImsServiceController;->turnOffIms(II)V +HSPLcom/android/ims/internal/IImsServiceController;->turnOnIms(II)V +HSPLcom/android/ims/internal/IImsServiceFeatureListener$Stub;->()V +HSPLcom/android/ims/internal/IImsServiceFeatureListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/ims/internal/IImsServiceFeatureListener;->imsFeatureCreated(II)V +HSPLcom/android/ims/internal/IImsServiceFeatureListener;->imsFeatureRemoved(II)V +HSPLcom/android/ims/internal/IImsServiceFeatureListener;->imsStatusChanged(III)V +HSPLcom/android/ims/internal/IImsUt$Stub;->()V +HSPLcom/android/ims/internal/IImsUtListener$Stub;->()V +HSPLcom/android/ims/internal/uce/common/UceLong$1;->()V +HSPLcom/android/ims/internal/uce/common/UceLong;->()V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener$Stub;->()V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->capInfoReceived(Ljava/lang/String;[Lcom/android/ims/internal/uce/presence/PresTupleInfo;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->cmdStatus(Lcom/android/ims/internal/uce/presence/PresCmdStatus;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->getVersionCb(Ljava/lang/String;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->listCapInfoReceived(Lcom/android/ims/internal/uce/presence/PresRlmiInfo;[Lcom/android/ims/internal/uce/presence/PresResInfo;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->publishTriggering(Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->serviceAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->serviceUnAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->sipResponseReceived(Lcom/android/ims/internal/uce/presence/PresSipResponse;)V +HSPLcom/android/ims/internal/uce/presence/IPresenceListener;->unpublishMessageSent()V +HSPLcom/android/ims/internal/uce/uceservice/IUceService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/uce/uceservice/IUceService; +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager$UceServiceDeathRecipient;->(Lcom/android/ims/internal/uce/uceservice/ImsUceManager;)V +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager$UceServiceDeathRecipient;->(Lcom/android/ims/internal/uce/uceservice/ImsUceManager;Lcom/android/ims/internal/uce/uceservice/ImsUceManager$UceServiceDeathRecipient;)V +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager;->(Landroid/content/Context;I)V +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager;->createUceService(Z)V +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager;->getInstance(Landroid/content/Context;I)Lcom/android/ims/internal/uce/uceservice/ImsUceManager; +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager;->getUceServiceInstance()Lcom/android/ims/internal/uce/uceservice/IUceService; +HSPLcom/android/ims/internal/uce/uceservice/ImsUceManager;->getUceServiceName(I)Ljava/lang/String; +HSPLcom/android/internal/app/AlertController$1;->(Lcom/android/internal/app/AlertController;)V +HSPLcom/android/internal/app/AlertController$AlertParams;->(Landroid/content/Context;)V +HSPLcom/android/internal/app/AlertController$AlertParams;->apply(Lcom/android/internal/app/AlertController;)V +HSPLcom/android/internal/app/AlertController$ButtonHandler;->(Landroid/content/DialogInterface;)V +HSPLcom/android/internal/app/AlertController;->(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)V +HSPLcom/android/internal/app/AlertController;->create(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)Lcom/android/internal/app/AlertController; +HSPLcom/android/internal/app/AlertController;->setButton(ILjava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;Landroid/os/Message;)V +HSPLcom/android/internal/app/AlertController;->setMessage(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/app/AlertController;->setTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/app/AssistUtils;->(Landroid/content/Context;)V +HSPLcom/android/internal/app/AssistUtils;->activeServiceSupportsAssistGesture()Z +HSPLcom/android/internal/app/AssistUtils;->activeServiceSupportsLaunchFromKeyguard()Z +HSPLcom/android/internal/app/AssistUtils;->getAssistComponentForUser(I)Landroid/content/ComponentName; +HSPLcom/android/internal/app/AssistUtils;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +HSPLcom/android/internal/app/IAppOpsCallback$Stub;->()V +HSPLcom/android/internal/app/IAppOpsCallback$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/app/IAppOpsCallback;->opChanged(IILjava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkAudioOperation(IIILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperation(IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkPackage(ILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getPackagesForOps([I)Ljava/util/List; +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteOperation(IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteProxyOperation(ILjava/lang/String;ILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V +HSPLcom/android/internal/app/IAppOpsService$Stub;->()V +HSPLcom/android/internal/app/IAppOpsService$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService; +HSPLcom/android/internal/app/IAppOpsService;->checkAudioOperation(IIILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->checkOperation(IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->checkPackage(ILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService;->getOpsForPackage(ILjava/lang/String;[I)Ljava/util/List; +HSPLcom/android/internal/app/IAppOpsService;->getPackagesForOps([I)Ljava/util/List; +HSPLcom/android/internal/app/IAppOpsService;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLcom/android/internal/app/IAppOpsService;->getUidOps(I[I)Ljava/util/List; +HSPLcom/android/internal/app/IAppOpsService;->isOperationActive(IILjava/lang/String;)Z +HSPLcom/android/internal/app/IAppOpsService;->noteOperation(IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->noteProxyOperation(ILjava/lang/String;ILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->permissionToOpCode(Ljava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->removeUser(I)V +HSPLcom/android/internal/app/IAppOpsService;->resetAllModes(ILjava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService;->setMode(IILjava/lang/String;I)V +HSPLcom/android/internal/app/IAppOpsService;->setUidMode(III)V +HSPLcom/android/internal/app/IAppOpsService;->setUserRestriction(IZLandroid/os/IBinder;I[Ljava/lang/String;)V +HSPLcom/android/internal/app/IAppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V +HSPLcom/android/internal/app/IAppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I +HSPLcom/android/internal/app/IAppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V +HSPLcom/android/internal/app/IAppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getStatistics()[B +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getStatisticsStream()Landroid/os/ParcelFileDescriptor; +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->isCharging()Z +HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteResetBleScan()V +HSPLcom/android/internal/app/IBatteryStats$Stub;->()V +HSPLcom/android/internal/app/IBatteryStats$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats; +HSPLcom/android/internal/app/IBatteryStats;->computeBatteryTimeRemaining()J +HSPLcom/android/internal/app/IBatteryStats;->computeChargeTimeRemaining()J +HSPLcom/android/internal/app/IBatteryStats;->getAwakeTimeBattery()J +HSPLcom/android/internal/app/IBatteryStats;->getAwakeTimePlugged()J +HSPLcom/android/internal/app/IBatteryStats;->getStatistics()[B +HSPLcom/android/internal/app/IBatteryStats;->getStatisticsStream()Landroid/os/ParcelFileDescriptor; +HSPLcom/android/internal/app/IBatteryStats;->isCharging()Z +HSPLcom/android/internal/app/IBatteryStats;->noteBleScanResults(Landroid/os/WorkSource;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteBleScanStarted(Landroid/os/WorkSource;Z)V +HSPLcom/android/internal/app/IBatteryStats;->noteBleScanStopped(Landroid/os/WorkSource;Z)V +HSPLcom/android/internal/app/IBatteryStats;->noteBluetoothControllerActivity(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V +HSPLcom/android/internal/app/IBatteryStats;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HSPLcom/android/internal/app/IBatteryStats;->noteConnectivityChanged(ILjava/lang/String;)V +HSPLcom/android/internal/app/IBatteryStats;->noteDeviceIdleMode(ILjava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteEvent(ILjava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteFlashlightOff(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteFlashlightOn(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteFullWifiLockAcquired(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteFullWifiLockReleased(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteInteractive(Z)V +HSPLcom/android/internal/app/IBatteryStats;->noteJobFinish(Ljava/lang/String;II)V +HSPLcom/android/internal/app/IBatteryStats;->noteJobStart(Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteMobileRadioPowerState(IJI)V +HSPLcom/android/internal/app/IBatteryStats;->noteModemControllerActivity(Landroid/telephony/ModemActivityInfo;)V +HSPLcom/android/internal/app/IBatteryStats;->noteNetworkInterfaceType(Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteNetworkStatsEnabled()V +HSPLcom/android/internal/app/IBatteryStats;->notePhoneDataConnectionState(IZ)V +HSPLcom/android/internal/app/IBatteryStats;->notePhoneOff()V +HSPLcom/android/internal/app/IBatteryStats;->notePhoneOn()V +HSPLcom/android/internal/app/IBatteryStats;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V +HSPLcom/android/internal/app/IBatteryStats;->notePhoneState(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteResetAudio()V +HSPLcom/android/internal/app/IBatteryStats;->noteResetBleScan()V +HSPLcom/android/internal/app/IBatteryStats;->noteResetCamera()V +HSPLcom/android/internal/app/IBatteryStats;->noteResetFlashlight()V +HSPLcom/android/internal/app/IBatteryStats;->noteResetVideo()V +HSPLcom/android/internal/app/IBatteryStats;->noteScreenBrightness(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteScreenState(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartAudio(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartCamera(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartGps(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartSensor(II)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartVideo(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V +HSPLcom/android/internal/app/IBatteryStats;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopAudio(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopCamera(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopGps(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopSensor(II)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopVideo(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteSyncFinish(Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteSyncStart(Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteUserActivity(II)V +HSPLcom/android/internal/app/IBatteryStats;->noteVibratorOff(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteVibratorOn(IJ)V +HSPLcom/android/internal/app/IBatteryStats;->noteWakeUp(Ljava/lang/String;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiBatchedScanStartedFromSource(Landroid/os/WorkSource;I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiBatchedScanStoppedFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiControllerActivity(Landroid/net/wifi/WifiActivityEnergyInfo;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiMulticastDisabled(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiMulticastDisabledFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiMulticastEnabled(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiMulticastEnabledFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiOff()V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiOn()V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiRadioPowerState(IJI)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiRssiChanged(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiRunning(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiRunningChanged(Landroid/os/WorkSource;Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiScanStarted(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiScanStopped(I)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiState(ILjava/lang/String;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiStopped(Landroid/os/WorkSource;)V +HSPLcom/android/internal/app/IBatteryStats;->noteWifiSupplicantStateChanged(IZ)V +HSPLcom/android/internal/app/IBatteryStats;->setBatteryState(IIIIIIII)V +HSPLcom/android/internal/app/IBatteryStats;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler; +HSPLcom/android/internal/app/IBatteryStats;->takeUidSnapshots([I)[Landroid/os/health/HealthStatsParceler; +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsAssist()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsLaunchFromKeyguard()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->getDspModuleProperties(Landroid/service/voice/IVoiceInteractionService;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->isEnrolledForKeyphrase(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionManagerService; +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->activeServiceSupportsAssist()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->activeServiceSupportsLaunchFromKeyguard()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->closeSystemDialogs(Landroid/os/IBinder;)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->deleteKeyphraseSoundModel(ILjava/lang/String;)I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->deliverNewSession(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->finish(Landroid/os/IBinder;)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->getActiveServiceComponentName()Landroid/content/ComponentName; +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->getDisabledShowContext()I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->getDspModuleProperties(Landroid/service/voice/IVoiceInteractionService;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->getKeyphraseSoundModel(ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel; +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->getUserDisabledShowContext()I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->hideCurrentSession()V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->hideSessionFromSession(Landroid/os/IBinder;)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->isEnrolledForKeyphrase(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->isSessionRunning()Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->launchVoiceAssistFromKeyguard()V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->onLockscreenShown()V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->setDisabledShowContext(I)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->setKeepAwake(Landroid/os/IBinder;Z)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->showSession(Landroid/service/voice/IVoiceInteractionService;Landroid/os/Bundle;I)V +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->showSessionForActiveService(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;Landroid/os/IBinder;)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->showSessionFromSession(Landroid/os/IBinder;Landroid/os/Bundle;I)Z +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->startAssistantActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->startRecognition(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->startVoiceActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->stopRecognition(Landroid/service/voice/IVoiceInteractionService;ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I +HSPLcom/android/internal/app/IVoiceInteractionManagerService;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I +HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->()V +HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/app/IVoiceInteractionSessionListener;->onVoiceSessionHidden()V +HSPLcom/android/internal/app/IVoiceInteractionSessionListener;->onVoiceSessionShown()V +HSPLcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->()V +HSPLcom/android/internal/app/IVoiceInteractionSessionShowCallback;->onFailed()V +HSPLcom/android/internal/app/IVoiceInteractionSessionShowCallback;->onShown()V +HSPLcom/android/internal/app/IVoiceInteractor$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractor; +HSPLcom/android/internal/app/NightDisplayController$1;->(Lcom/android/internal/app/NightDisplayController;Landroid/os/Handler;)V +HSPLcom/android/internal/app/NightDisplayController;->(Landroid/content/Context;)V +HSPLcom/android/internal/app/NightDisplayController;->(Landroid/content/Context;I)V +HSPLcom/android/internal/app/NightDisplayController;->isActivated()Z +HSPLcom/android/internal/app/NightDisplayController;->isAvailable(Landroid/content/Context;)Z +HSPLcom/android/internal/app/NightDisplayController;->setListener(Lcom/android/internal/app/NightDisplayController$Callback;)V +HSPLcom/android/internal/app/ProcessMap;->()V +HSPLcom/android/internal/app/ProcessMap;->getMap()Landroid/util/ArrayMap; +HSPLcom/android/internal/app/ToolbarActionBar$1;->(Lcom/android/internal/app/ToolbarActionBar;)V +HSPLcom/android/internal/app/ToolbarActionBar$1;->run()V +HSPLcom/android/internal/app/ToolbarActionBar$2;->(Lcom/android/internal/app/ToolbarActionBar;)V +HSPLcom/android/internal/app/ToolbarActionBar$ActionMenuPresenterCallback;->(Lcom/android/internal/app/ToolbarActionBar;)V +HSPLcom/android/internal/app/ToolbarActionBar$ActionMenuPresenterCallback;->(Lcom/android/internal/app/ToolbarActionBar;Lcom/android/internal/app/ToolbarActionBar$ActionMenuPresenterCallback;)V +HSPLcom/android/internal/app/ToolbarActionBar$MenuBuilderCallback;->(Lcom/android/internal/app/ToolbarActionBar;)V +HSPLcom/android/internal/app/ToolbarActionBar$MenuBuilderCallback;->(Lcom/android/internal/app/ToolbarActionBar;Lcom/android/internal/app/ToolbarActionBar$MenuBuilderCallback;)V +HSPLcom/android/internal/app/ToolbarActionBar$ToolbarCallbackWrapper;->(Lcom/android/internal/app/ToolbarActionBar;Landroid/view/Window$Callback;)V +HSPLcom/android/internal/app/ToolbarActionBar$ToolbarCallbackWrapper;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z +HSPLcom/android/internal/app/ToolbarActionBar;->-get0(Lcom/android/internal/app/ToolbarActionBar;)Lcom/android/internal/widget/DecorToolbar; +HSPLcom/android/internal/app/ToolbarActionBar;->-get1(Lcom/android/internal/app/ToolbarActionBar;)Z +HSPLcom/android/internal/app/ToolbarActionBar;->-set0(Lcom/android/internal/app/ToolbarActionBar;Z)Z +HSPLcom/android/internal/app/ToolbarActionBar;->(Landroid/widget/Toolbar;Ljava/lang/CharSequence;Landroid/view/Window$Callback;)V +HSPLcom/android/internal/app/ToolbarActionBar;->getThemedContext()Landroid/content/Context; +HSPLcom/android/internal/app/ToolbarActionBar;->getWrappedWindowCallback()Landroid/view/Window$Callback; +HSPLcom/android/internal/app/ToolbarActionBar;->invalidateOptionsMenu()Z +HSPLcom/android/internal/app/ToolbarActionBar;->onDestroy()V +HSPLcom/android/internal/app/ToolbarActionBar;->populateOptionsMenu()V +HSPLcom/android/internal/app/ToolbarActionBar;->setDisplayHomeAsUpEnabled(Z)V +HSPLcom/android/internal/app/ToolbarActionBar;->setDisplayOptions(I)V +HSPLcom/android/internal/app/ToolbarActionBar;->setDisplayOptions(II)V +HSPLcom/android/internal/app/ToolbarActionBar;->setHomeButtonEnabled(Z)V +HSPLcom/android/internal/app/ToolbarActionBar;->setShowHideAnimationEnabled(Z)V +HSPLcom/android/internal/app/ToolbarActionBar;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/app/WindowDecorActionBar$1;->(Lcom/android/internal/app/WindowDecorActionBar;)V +HSPLcom/android/internal/app/WindowDecorActionBar$1;->onAnimationEnd(Landroid/animation/Animator;)V +HSPLcom/android/internal/app/WindowDecorActionBar$2;->(Lcom/android/internal/app/WindowDecorActionBar;)V +HSPLcom/android/internal/app/WindowDecorActionBar$3;->(Lcom/android/internal/app/WindowDecorActionBar;)V +HSPLcom/android/internal/app/WindowDecorActionBar;->-get0(Lcom/android/internal/app/WindowDecorActionBar;)Lcom/android/internal/widget/ActionBarContainer; +HSPLcom/android/internal/app/WindowDecorActionBar;->-get1(Lcom/android/internal/app/WindowDecorActionBar;)Z +HSPLcom/android/internal/app/WindowDecorActionBar;->-get10(Lcom/android/internal/app/WindowDecorActionBar;)Lcom/android/internal/widget/ActionBarContainer; +HSPLcom/android/internal/app/WindowDecorActionBar;->-get2(Lcom/android/internal/app/WindowDecorActionBar;)Landroid/view/View; +HSPLcom/android/internal/app/WindowDecorActionBar;->-get9(Lcom/android/internal/app/WindowDecorActionBar;)Lcom/android/internal/widget/ActionBarOverlayLayout; +HSPLcom/android/internal/app/WindowDecorActionBar;->-set0(Lcom/android/internal/app/WindowDecorActionBar;Landroid/animation/Animator;)Landroid/animation/Animator; +HSPLcom/android/internal/app/WindowDecorActionBar;->(Landroid/app/Activity;)V +HSPLcom/android/internal/app/WindowDecorActionBar;->checkShowingFlags(ZZZ)Z +HSPLcom/android/internal/app/WindowDecorActionBar;->completeDeferredDestroyActionMode()V +HSPLcom/android/internal/app/WindowDecorActionBar;->doHide(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->enableContentAnimations(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->getDecorToolbar(Landroid/view/View;)Lcom/android/internal/widget/DecorToolbar; +HSPLcom/android/internal/app/WindowDecorActionBar;->getNavigationMode()I +HSPLcom/android/internal/app/WindowDecorActionBar;->getThemedContext()Landroid/content/Context; +HSPLcom/android/internal/app/WindowDecorActionBar;->hide()V +HSPLcom/android/internal/app/WindowDecorActionBar;->hideForSystem()V +HSPLcom/android/internal/app/WindowDecorActionBar;->init(Landroid/view/View;)V +HSPLcom/android/internal/app/WindowDecorActionBar;->onWindowVisibilityChanged(I)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setDefaultDisplayHomeAsUpEnabled(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setDisplayHomeAsUpEnabled(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setDisplayOptions(II)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setDisplayShowHomeEnabled(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setElevation(F)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setHasEmbeddedTabs(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setHomeButtonEnabled(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setShowHideAnimationEnabled(Z)V +HSPLcom/android/internal/app/WindowDecorActionBar;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/app/WindowDecorActionBar;->showForSystem()V +HSPLcom/android/internal/app/WindowDecorActionBar;->updateVisibility(Z)V +HSPLcom/android/internal/app/procstats/IProcessStats$Stub;->()V +HSPLcom/android/internal/app/procstats/IProcessStats;->getCurrentMemoryState()I +HSPLcom/android/internal/app/procstats/IProcessStats;->getCurrentStats(Ljava/util/List;)[B +HSPLcom/android/internal/app/procstats/IProcessStats;->getStatsOverTime(J)Landroid/os/ParcelFileDescriptor; +HSPLcom/android/internal/app/procstats/ProcessStats$1;->()V +HSPLcom/android/internal/app/procstats/ProcessStats;->(Z)V +HSPLcom/android/internal/app/procstats/ProcessStats;->buildTimePeriodStartClockStr()V +HSPLcom/android/internal/app/procstats/ProcessStats;->evaluateSystemProperties(Z)Z +HSPLcom/android/internal/app/procstats/ProcessStats;->reset()V +HSPLcom/android/internal/app/procstats/ProcessStats;->resetCommon()V +HSPLcom/android/internal/app/procstats/ProcessStats;->splitAndParseNumbers(Ljava/lang/String;)[I +HSPLcom/android/internal/app/procstats/ProcessStats;->updateFragmentation()V +HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->(Lcom/android/internal/app/procstats/SparseMappingTable;)V +HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->resetTable()V +HSPLcom/android/internal/app/procstats/SparseMappingTable;->-get2(Lcom/android/internal/app/procstats/SparseMappingTable;)I +HSPLcom/android/internal/app/procstats/SparseMappingTable;->()V +HSPLcom/android/internal/app/procstats/SparseMappingTable;->reset()V +HSPLcom/android/internal/app/procstats/SysMemUsageTable;->(Lcom/android/internal/app/procstats/SparseMappingTable;)V +HSPLcom/android/internal/appwidget/IAppWidgetHost$Stub;->()V +HSPLcom/android/internal/appwidget/IAppWidgetHost$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/appwidget/IAppWidgetHost;->providerChanged(ILandroid/appwidget/AppWidgetProviderInfo;)V +HSPLcom/android/internal/appwidget/IAppWidgetHost;->providersChanged()V +HSPLcom/android/internal/appwidget/IAppWidgetHost;->updateAppWidget(ILandroid/widget/RemoteViews;)V +HSPLcom/android/internal/appwidget/IAppWidgetHost;->viewDataChanged(II)V +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getAppWidgetIds(Landroid/content/ComponentName;)[I +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->stopListening(Ljava/lang/String;I)V +HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetService; +HSPLcom/android/internal/appwidget/IAppWidgetService;->allocateAppWidgetId(Ljava/lang/String;I)I +HSPLcom/android/internal/appwidget/IAppWidgetService;->bindAppWidgetId(Ljava/lang/String;IILandroid/content/ComponentName;Landroid/os/Bundle;)Z +HSPLcom/android/internal/appwidget/IAppWidgetService;->bindRemoteViewsService(Ljava/lang/String;ILandroid/content/Intent;Landroid/os/IBinder;)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->createAppWidgetConfigIntentSender(Ljava/lang/String;II)Landroid/content/IntentSender; +HSPLcom/android/internal/appwidget/IAppWidgetService;->deleteAllHosts()V +HSPLcom/android/internal/appwidget/IAppWidgetService;->deleteAppWidgetId(Ljava/lang/String;I)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->deleteHost(Ljava/lang/String;I)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->getAppWidgetIds(Landroid/content/ComponentName;)[I +HSPLcom/android/internal/appwidget/IAppWidgetService;->getAppWidgetIdsForHost(Ljava/lang/String;I)[I +HSPLcom/android/internal/appwidget/IAppWidgetService;->getAppWidgetInfo(Ljava/lang/String;I)Landroid/appwidget/AppWidgetProviderInfo; +HSPLcom/android/internal/appwidget/IAppWidgetService;->getAppWidgetOptions(Ljava/lang/String;I)Landroid/os/Bundle; +HSPLcom/android/internal/appwidget/IAppWidgetService;->getAppWidgetViews(Ljava/lang/String;I)Landroid/widget/RemoteViews; +HSPLcom/android/internal/appwidget/IAppWidgetService;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService;->hasBindAppWidgetPermission(Ljava/lang/String;I)Z +HSPLcom/android/internal/appwidget/IAppWidgetService;->isBoundWidgetPackage(Ljava/lang/String;I)Z +HSPLcom/android/internal/appwidget/IAppWidgetService;->isRequestPinAppWidgetSupported()Z +HSPLcom/android/internal/appwidget/IAppWidgetService;->notifyAppWidgetViewDataChanged(Ljava/lang/String;[II)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->partiallyUpdateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->requestPinAppWidget(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;Landroid/content/IntentSender;)Z +HSPLcom/android/internal/appwidget/IAppWidgetService;->setBindAppWidgetPermission(Ljava/lang/String;IZ)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; +HSPLcom/android/internal/appwidget/IAppWidgetService;->stopListening(Ljava/lang/String;I)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->unbindRemoteViewsService(Ljava/lang/String;ILandroid/content/Intent;)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetOptions(Ljava/lang/String;ILandroid/os/Bundle;)V +HSPLcom/android/internal/appwidget/IAppWidgetService;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V +HSPLcom/android/internal/backup/IBackupTransport$Stub;->()V +HSPLcom/android/internal/backup/IBackupTransport$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/backup/IBackupTransport$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/backup/IBackupTransport;->abortFullRestore()I +HSPLcom/android/internal/backup/IBackupTransport;->cancelFullBackup()V +HSPLcom/android/internal/backup/IBackupTransport;->checkFullBackupSize(J)I +HSPLcom/android/internal/backup/IBackupTransport;->clearBackupData(Landroid/content/pm/PackageInfo;)I +HSPLcom/android/internal/backup/IBackupTransport;->configurationIntent()Landroid/content/Intent; +HSPLcom/android/internal/backup/IBackupTransport;->currentDestinationString()Ljava/lang/String; +HSPLcom/android/internal/backup/IBackupTransport;->dataManagementIntent()Landroid/content/Intent; +HSPLcom/android/internal/backup/IBackupTransport;->dataManagementLabel()Ljava/lang/String; +HSPLcom/android/internal/backup/IBackupTransport;->finishBackup()I +HSPLcom/android/internal/backup/IBackupTransport;->finishRestore()V +HSPLcom/android/internal/backup/IBackupTransport;->getAvailableRestoreSets()[Landroid/app/backup/RestoreSet; +HSPLcom/android/internal/backup/IBackupTransport;->getBackupQuota(Ljava/lang/String;Z)J +HSPLcom/android/internal/backup/IBackupTransport;->getCurrentRestoreSet()J +HSPLcom/android/internal/backup/IBackupTransport;->getNextFullRestoreDataChunk(Landroid/os/ParcelFileDescriptor;)I +HSPLcom/android/internal/backup/IBackupTransport;->getRestoreData(Landroid/os/ParcelFileDescriptor;)I +HSPLcom/android/internal/backup/IBackupTransport;->initializeDevice()I +HSPLcom/android/internal/backup/IBackupTransport;->isAppEligibleForBackup(Landroid/content/pm/PackageInfo;Z)Z +HSPLcom/android/internal/backup/IBackupTransport;->name()Ljava/lang/String; +HSPLcom/android/internal/backup/IBackupTransport;->nextRestorePackage()Landroid/app/backup/RestoreDescription; +HSPLcom/android/internal/backup/IBackupTransport;->performBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I +HSPLcom/android/internal/backup/IBackupTransport;->performFullBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I +HSPLcom/android/internal/backup/IBackupTransport;->requestBackupTime()J +HSPLcom/android/internal/backup/IBackupTransport;->requestFullBackupTime()J +HSPLcom/android/internal/backup/IBackupTransport;->sendBackupData(I)I +HSPLcom/android/internal/backup/IBackupTransport;->startRestore(J[Landroid/content/pm/PackageInfo;)I +HSPLcom/android/internal/backup/IBackupTransport;->transportDirName()Ljava/lang/String; +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->()V +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->equals(Ljava/lang/Object;)Z +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->getMainColor()I +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->getSecondaryColor()I +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->set(Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->setMainColor(I)V +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->setSecondaryColor(I)V +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->setSupportsDarkText(Z)V +HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->supportsDarkText()Z +HSPLcom/android/internal/colorextraction/ColorExtractor;->(Landroid/content/Context;Lcom/android/internal/colorextraction/types/ExtractionType;)V +HSPLcom/android/internal/colorextraction/ColorExtractor;->addOnColorsChangedListener(Lcom/android/internal/colorextraction/ColorExtractor$OnColorsChangedListener;)V +HSPLcom/android/internal/colorextraction/ColorExtractor;->extractInto(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/ColorExtractor;->getColors(II)Lcom/android/internal/colorextraction/ColorExtractor$GradientColors; +HSPLcom/android/internal/colorextraction/ColorExtractor;->getWallpaperColors(I)Landroid/app/WallpaperColors; +HSPLcom/android/internal/colorextraction/drawable/-$Lambda$D0plBYSeplKHUImgLxjOl14-7Rw;->$m$0(Landroid/animation/ValueAnimator;)V +HSPLcom/android/internal/colorextraction/drawable/-$Lambda$D0plBYSeplKHUImgLxjOl14-7Rw;->(IIIILjava/lang/Object;)V +HSPLcom/android/internal/colorextraction/drawable/-$Lambda$D0plBYSeplKHUImgLxjOl14-7Rw;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable$1;->(Lcom/android/internal/colorextraction/drawable/GradientDrawable;)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable$Splat;->(FFFF)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->(Landroid/content/Context;)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->buildPaints()V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->lambda$-com_android_internal_colorextraction_drawable_GradientDrawable_3291(IIIILandroid/animation/ValueAnimator;)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->setAlpha(I)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->setColors(IIZ)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->setScreenSize(II)V +HSPLcom/android/internal/colorextraction/drawable/GradientDrawable;->setXfermode(Landroid/graphics/Xfermode;)V +HSPLcom/android/internal/colorextraction/types/ExtractionType;->extractInto(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/types/Tonal$ColorRange;->(Landroid/util/Range;Landroid/util/Range;Landroid/util/Range;)V +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->(Landroid/content/Context;)V +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->getBlacklistedColors()Ljava/util/ArrayList; +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->getTonalPalettes()Ljava/util/ArrayList; +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->parseBlacklist(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->parsePalettes(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->readFloatArray(Ljava/lang/String;)[F +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->readPalette(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/internal/colorextraction/types/Tonal$TonalPalette; +HSPLcom/android/internal/colorextraction/types/Tonal$ConfigParser;->readRange(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/internal/colorextraction/types/Tonal$ColorRange; +HSPLcom/android/internal/colorextraction/types/Tonal$TonalPalette;->([F[F[F)V +HSPLcom/android/internal/colorextraction/types/Tonal;->(Landroid/content/Context;)V +HSPLcom/android/internal/colorextraction/types/Tonal;->applyFallback(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/types/Tonal;->applyFallback(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/types/Tonal;->bestFit(Lcom/android/internal/colorextraction/types/Tonal$TonalPalette;FFF)I +HSPLcom/android/internal/colorextraction/types/Tonal;->extractInto(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)V +HSPLcom/android/internal/colorextraction/types/Tonal;->findTonalPalette(FF)Lcom/android/internal/colorextraction/types/Tonal$TonalPalette; +HSPLcom/android/internal/colorextraction/types/Tonal;->fit([FFIFF)[F +HSPLcom/android/internal/colorextraction/types/Tonal;->fract(F)F +HSPLcom/android/internal/colorextraction/types/Tonal;->getColorInt(I[F[F[F)I +HSPLcom/android/internal/colorextraction/types/Tonal;->runTonalExtraction(Landroid/app/WallpaperColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;Lcom/android/internal/colorextraction/ColorExtractor$GradientColors;)Z +HSPLcom/android/internal/content/PackageMonitor;->()V +HSPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/Looper;Landroid/os/UserHandle;Z)V +HSPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/UserHandle;ZLandroid/os/Handler;)V +HSPLcom/android/internal/content/ReferrerIntent$1;->()V +HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/content/ReferrerIntent; +HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLcom/android/internal/content/ReferrerIntent;->(Landroid/os/Parcel;)V +HSPLcom/android/internal/database/SortCursor$1;->(Lcom/android/internal/database/SortCursor;)V +HSPLcom/android/internal/database/SortCursor$1;->onInvalidated()V +HSPLcom/android/internal/database/SortCursor;->-set0(Lcom/android/internal/database/SortCursor;I)I +HSPLcom/android/internal/database/SortCursor;->([Landroid/database/Cursor;Ljava/lang/String;)V +HSPLcom/android/internal/database/SortCursor;->close()V +HSPLcom/android/internal/database/SortCursor;->getCount()I +HSPLcom/android/internal/database/SortCursor;->getLong(I)J +HSPLcom/android/internal/database/SortCursor;->getString(I)Ljava/lang/String; +HSPLcom/android/internal/database/SortCursor;->onMove(II)Z +HSPLcom/android/internal/graphics/-$Lambda$03T1rR3H6Pfo2RsQKEXM1or54G4$1;->$m$0(III)D +HSPLcom/android/internal/graphics/-$Lambda$03T1rR3H6Pfo2RsQKEXM1or54G4$1;->(I)V +HSPLcom/android/internal/graphics/-$Lambda$03T1rR3H6Pfo2RsQKEXM1or54G4$1;->calculateContrast(III)D +HSPLcom/android/internal/graphics/ColorUtils$ContrastCalculator;->calculateContrast(III)D +HSPLcom/android/internal/graphics/ColorUtils;->HSLToColor([F)I +HSPLcom/android/internal/graphics/ColorUtils;->RGBToHSL(III[F)V +HSPLcom/android/internal/graphics/ColorUtils;->RGBToXYZ(III[D)V +HSPLcom/android/internal/graphics/ColorUtils;->binaryAlphaSearch(IIFLcom/android/internal/graphics/ColorUtils$ContrastCalculator;)I +HSPLcom/android/internal/graphics/ColorUtils;->blendARGB(IIF)I +HSPLcom/android/internal/graphics/ColorUtils;->calculateContrast(II)D +HSPLcom/android/internal/graphics/ColorUtils;->calculateLuminance(I)D +HSPLcom/android/internal/graphics/ColorUtils;->calculateMinimumBackgroundAlpha(IIF)I +HSPLcom/android/internal/graphics/ColorUtils;->colorToHSL(I[F)V +HSPLcom/android/internal/graphics/ColorUtils;->colorToXYZ(I[D)V +HSPLcom/android/internal/graphics/ColorUtils;->constrain(FFF)F +HSPLcom/android/internal/graphics/ColorUtils;->constrain(III)I +HSPLcom/android/internal/graphics/ColorUtils;->getTempDouble3Array()[D +HSPLcom/android/internal/graphics/ColorUtils;->lambda$-com_android_internal_graphics_ColorUtils_5280(IIII)D +HSPLcom/android/internal/graphics/ColorUtils;->setAlphaComponent(II)I +HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->()V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;Landroid/content/res/Resources;)V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->canApplyTheme()Z +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->getCurrentDrawableIndexBasedOnScale()I +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->mutate()V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Landroid/content/res/Resources;)V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Landroid/content/res/Resources;Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;)V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->clearMutated()V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->onStateChange([I)Z +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->start()V +HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->stop()V +HSPLcom/android/internal/hardware/AmbientDisplayConfiguration;->(Landroid/content/Context;)V +HSPLcom/android/internal/logging/AndroidConfig;->()V +HSPLcom/android/internal/logging/AndroidHandler$1;->()V +HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String; +HSPLcom/android/internal/logging/AndroidHandler;->()V +HSPLcom/android/internal/logging/AndroidHandler;->getAndroidLevel(Ljava/util/logging/Level;)I +HSPLcom/android/internal/logging/AndroidHandler;->publish(Ljava/util/logging/LogRecord;)V +HSPLcom/android/internal/logging/EventLogTags;->writeSysuiAction(ILjava/lang/String;)V +HSPLcom/android/internal/logging/EventLogTags;->writeSysuiMultiAction([Ljava/lang/Object;)V +HSPLcom/android/internal/logging/MetricsLogger;->()V +HSPLcom/android/internal/logging/MetricsLogger;->action(II)V +HSPLcom/android/internal/logging/MetricsLogger;->action(ILjava/lang/String;)V +HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/content/Context;II)V +HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/content/Context;ILjava/lang/String;)V +HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/metrics/LogMaker;)V +HSPLcom/android/internal/logging/MetricsLogger;->getLogger()Lcom/android/internal/logging/MetricsLogger; +HSPLcom/android/internal/logging/MetricsLogger;->saveLog([Ljava/lang/Object;)V +HSPLcom/android/internal/logging/MetricsLogger;->write(Landroid/metrics/LogMaker;)V +HSPLcom/android/internal/net/NetworkStatsFactory;->()V +HSPLcom/android/internal/net/NetworkStatsFactory;->(Ljava/io/File;)V +HSPLcom/android/internal/os/AndroidPrintStream;->(ILjava/lang/String;)V +HSPLcom/android/internal/os/AndroidPrintStream;->log(Ljava/lang/String;)V +HSPLcom/android/internal/os/AtomicFile;->(Ljava/io/File;)V +HSPLcom/android/internal/os/AtomicFile;->getBaseFile()Ljava/io/File; +HSPLcom/android/internal/os/AtomicFile;->openRead()Ljava/io/FileInputStream; +HSPLcom/android/internal/os/BackgroundThread;->()V +HSPLcom/android/internal/os/BackgroundThread;->ensureThreadLocked()V +HSPLcom/android/internal/os/BackgroundThread;->get()Lcom/android/internal/os/BackgroundThread; +HSPLcom/android/internal/os/BackgroundThread;->getHandler()Landroid/os/Handler; +HSPLcom/android/internal/os/BatteryStatsHelper;->(Landroid/content/Context;Z)V +HSPLcom/android/internal/os/BatteryStatsHelper;->(Landroid/content/Context;ZZ)V +HSPLcom/android/internal/os/BatteryStatsHelper;->checkWifiOnly(Landroid/content/Context;)Z +HSPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/Bundle;)V +HSPLcom/android/internal/os/BatteryStatsHelper;->getStats()Landroid/os/BatteryStats; +HSPLcom/android/internal/os/BatteryStatsHelper;->getStats(Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl; +HSPLcom/android/internal/os/BatteryStatsHelper;->load()V +HSPLcom/android/internal/os/BatteryStatsHelper;->readFully(Ljava/io/FileInputStream;)[B +HSPLcom/android/internal/os/BatteryStatsHelper;->readFully(Ljava/io/FileInputStream;I)[B +HSPLcom/android/internal/os/BatteryStatsImpl$1;->()V +HSPLcom/android/internal/os/BatteryStatsImpl$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl; +HSPLcom/android/internal/os/BatteryStatsImpl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLcom/android/internal/os/BatteryStatsImpl$6;->(Lcom/android/internal/os/BatteryStatsImpl;)V +HSPLcom/android/internal/os/BatteryStatsImpl$6;->run()V +HSPLcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batteryNeedsCpuUpdate()V +HSPLcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batteryPowerChanged(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl$BatteryCallback;->batterySendBroadcast(Landroid/content/Intent;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Clocks;->elapsedRealtime()J +HSPLcom/android/internal/os/BatteryStatsImpl$Clocks;->uptimeMillis()J +HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;ILandroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->(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 +HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->(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 +HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->(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 +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V +HSPLcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future; +HSPLcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future; +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->reset(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->copyArray([J[J)[J +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readFromParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray; +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray; +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V +HSPLcom/android/internal/os/BatteryStatsImpl$MyHandler;->(Lcom/android/internal/os/BatteryStatsImpl;Landroid/os/Looper;)V +HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->(Lcom/android/internal/os/BatteryStatsImpl;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V +HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->clear()V +HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap; +HSPLcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;->getPlatformLowPowerStats()Ljava/lang/String; +HSPLcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;->getSubsystemLowPowerStats()Ljava/lang/String; +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->endSample()V +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->getUpdateVersion()I +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I)V +HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->update(JI)V +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->(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 +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->setTimeout(J)V +HSPLcom/android/internal/os/BatteryStatsImpl$SystemClocks;->()V +HSPLcom/android/internal/os/BatteryStatsImpl$SystemClocks;->elapsedRealtime()J +HSPLcom/android/internal/os/BatteryStatsImpl$SystemClocks;->uptimeMillis()J +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->()V +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->add(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->computeUptime(JI)J +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getRealtime(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getUptime(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->init(JJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->isRunning()Z +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readSummaryFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V +HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$1;->(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$2;->(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$2;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$2;->instantiateObject()Ljava/lang/Object; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$3;->(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$3;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$3;->instantiateObject()Ljava/lang/Object; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->(Lcom/android/internal/os/BatteryStatsImpl;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->readFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->(Lcom/android/internal/os/BatteryStatsImpl;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->newServiceStatsLocked()Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->readFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->(Lcom/android/internal/os/BatteryStatsImpl;Ljava/lang/String;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->readExcessivePowerFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->readFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/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; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->readDualTimerFromParcel(ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/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; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->-get0(Lcom/android/internal/os/BatteryStatsImpl$Uid;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->-get1(Lcom/android/internal/os/BatteryStatsImpl$Uid;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->-set0(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->-set1(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->(Lcom/android/internal/os/BatteryStatsImpl;I)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createAudioTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanResultBgCounterLocked()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanResultCounterLocked()Lcom/android/internal/os/BatteryStatsImpl$Counter; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createForegroundActivityTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createForegroundServiceTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->initUserActivityLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobCompletionsFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readSyncSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readWakeSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->-wrap1(Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V +HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->()V +HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->getUserIds()[I +HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->refreshUserIds()V +HSPLcom/android/internal/os/BatteryStatsImpl;->-get4(Lcom/android/internal/os/BatteryStatsImpl;)Lcom/android/internal/os/PowerProfile; +HSPLcom/android/internal/os/BatteryStatsImpl;->(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->(Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryBufferLocked(JJBLandroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryBufferLocked(JJLandroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryEventLocked(JJILjava/lang/String;I)V +HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryRecordInnerLocked(JJLandroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryRecordLocked(JJ)V +HSPLcom/android/internal/os/BatteryStatsImpl;->clearHistoryLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->commitPendingDataToDisk()V +HSPLcom/android/internal/os/BatteryStatsImpl;->computeChargeTimeRemaining(J)J +HSPLcom/android/internal/os/BatteryStatsImpl;->computeRealtime(JI)J +HSPLcom/android/internal/os/BatteryStatsImpl;->computeUptime(JI)J +HSPLcom/android/internal/os/BatteryStatsImpl;->ensureStartClockTime(J)Z +HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I +HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I +HSPLcom/android/internal/os/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I +HSPLcom/android/internal/os/BatteryStatsImpl;->getIsOnBattery()Z +HSPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; +HSPLcom/android/internal/os/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I +HSPLcom/android/internal/os/BatteryStatsImpl;->getNextHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z +HSPLcom/android/internal/os/BatteryStatsImpl;->getStartClockTime()J +HSPLcom/android/internal/os/BatteryStatsImpl;->init(Lcom/android/internal/os/BatteryStatsImpl$Clocks;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->initDischarge()V +HSPLcom/android/internal/os/BatteryStatsImpl;->initTimes(JJ)V +HSPLcom/android/internal/os/BatteryStatsImpl;->notePowerSaveModeLocked(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->readBatteryLevelInt(ILandroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyStatsLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcelLocked(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readHistory(Landroid/os/Parcel;Z)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryDelta(Landroid/os/Parcel;Landroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryTag(ILandroid/os/BatteryStats$HistoryTag;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuFreqTimesLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->readLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->readOldHistory(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl;->setCallback(Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->setExternalStatsSyncLocked(Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->setPowerProfileLocked(Lcom/android/internal/os/PowerProfile;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->setRadioScanningTimeoutLocked(J)V +HSPLcom/android/internal/os/BatteryStatsImpl;->startIteratingHistoryLocked()Z +HSPLcom/android/internal/os/BatteryStatsImpl;->startRecordingHistory(JJZ)V +HSPLcom/android/internal/os/BatteryStatsImpl;->updateCpuTimeLocked(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl;->updateDailyDeadlineLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->updateKernelMemoryBandwidthLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->updateKernelWakelocksLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistory(Landroid/os/Parcel;ZZ)V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryDelta(Landroid/os/Parcel;Landroid/os/BatteryStats$HistoryItem;Landroid/os/BatteryStats$HistoryItem;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeLocked(Z)V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeOldHistory(Landroid/os/Parcel;)V +HSPLcom/android/internal/os/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V +HSPLcom/android/internal/os/BinderInternal$GcWatcher;->()V +HSPLcom/android/internal/os/BinderInternal$GcWatcher;->finalize()V +HSPLcom/android/internal/os/BinderInternal;->addGcWatcher(Ljava/lang/Runnable;)V +HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;IZLjava/lang/String;)Ljava/lang/ClassLoader; +HSPLcom/android/internal/os/ClassLoaderFactory;->isPathClassLoaderName(Ljava/lang/String;)Z +HSPLcom/android/internal/os/HandlerCaller$Callback;->executeMessage(Landroid/os/Message;)V +HSPLcom/android/internal/os/HandlerCaller$MyHandler;->(Lcom/android/internal/os/HandlerCaller;Landroid/os/Looper;Z)V +HSPLcom/android/internal/os/HandlerCaller$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/os/HandlerCaller;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/os/HandlerCaller$Callback;Z)V +HSPLcom/android/internal/os/HandlerCaller;->executeOrSendMessage(Landroid/os/Message;)V +HSPLcom/android/internal/os/HandlerCaller;->getHandler()Landroid/os/Handler; +HSPLcom/android/internal/os/HandlerCaller;->obtainMessage(I)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIIOOO(IIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIO(IILjava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->obtainMessageO(ILjava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOO(ILjava/lang/Object;Ljava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/os/HandlerCaller;->sendMessage(Landroid/os/Message;)V +HSPLcom/android/internal/os/KernelCpuSpeedReader;->(II)V +HSPLcom/android/internal/os/KernelCpuSpeedReader;->readDelta()[J +HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->()V +HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->getBandwidthEntries()Landroid/util/LongSparseLongArray; +HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->parseStats(Ljava/io/BufferedReader;)V +HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->updateStats()V +HSPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->()V +HSPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->readCpuFreqs(Ljava/lang/String;Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;)V +HSPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->readDelta(Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;)V +HSPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->readDelta(Ljava/io/BufferedReader;Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;)V +HSPLcom/android/internal/os/KernelUidCpuFreqTimeReader;->readTimesForUid(ILjava/lang/String;Lcom/android/internal/os/KernelUidCpuFreqTimeReader$Callback;)V +HSPLcom/android/internal/os/KernelUidCpuTimeReader;->()V +HSPLcom/android/internal/os/KernelUidCpuTimeReader;->readDelta(Lcom/android/internal/os/KernelUidCpuTimeReader$Callback;)V +HSPLcom/android/internal/os/KernelWakelockReader;->()V +HSPLcom/android/internal/os/KernelWakelockReader;->parseProcWakelocks([BIZLcom/android/internal/os/KernelWakelockStats;)Lcom/android/internal/os/KernelWakelockStats; +HSPLcom/android/internal/os/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/internal/os/KernelWakelockStats;)Lcom/android/internal/os/KernelWakelockStats; +HSPLcom/android/internal/os/KernelWakelockStats$Entry;->(IJI)V +HSPLcom/android/internal/os/KernelWakelockStats;->()V +HSPLcom/android/internal/os/LoggingPrintStream$1;->()V +HSPLcom/android/internal/os/LoggingPrintStream;->()V +HSPLcom/android/internal/os/LoggingPrintStream;->flush(Z)V +HSPLcom/android/internal/os/LoggingPrintStream;->log(Ljava/lang/String;)V +HSPLcom/android/internal/os/LoggingPrintStream;->println(Ljava/lang/Object;)V +HSPLcom/android/internal/os/PowerProfile$CpuClusterKey;->-get0(Lcom/android/internal/os/PowerProfile$CpuClusterKey;)I +HSPLcom/android/internal/os/PowerProfile$CpuClusterKey;->-get2(Lcom/android/internal/os/PowerProfile$CpuClusterKey;)Ljava/lang/String; +HSPLcom/android/internal/os/PowerProfile$CpuClusterKey;->(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/os/PowerProfile$CpuClusterKey;->(Ljava/lang/String;Ljava/lang/String;ILcom/android/internal/os/PowerProfile$CpuClusterKey;)V +HSPLcom/android/internal/os/PowerProfile;->(Landroid/content/Context;)V +HSPLcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D +HSPLcom/android/internal/os/PowerProfile;->getAveragePowerOrDefault(Ljava/lang/String;D)D +HSPLcom/android/internal/os/PowerProfile;->getBatteryCapacity()D +HSPLcom/android/internal/os/PowerProfile;->getNumCoresInCpuCluster(I)I +HSPLcom/android/internal/os/PowerProfile;->getNumCpuClusters()I +HSPLcom/android/internal/os/PowerProfile;->getNumSpeedStepsInCpuCluster(I)I +HSPLcom/android/internal/os/PowerProfile;->initCpuClusters()V +HSPLcom/android/internal/os/PowerProfile;->readPowerValuesFromXml(Landroid/content/Context;)V +HSPLcom/android/internal/os/ProcessCpuTracker$1;->()V +HSPLcom/android/internal/os/ProcessCpuTracker$Stats;->(IIZ)V +HSPLcom/android/internal/os/ProcessCpuTracker;->(Z)V +HSPLcom/android/internal/os/ProcessCpuTracker;->collectStats(Ljava/lang/String;IZ[ILjava/util/ArrayList;)[I +HSPLcom/android/internal/os/ProcessCpuTracker;->getName(Lcom/android/internal/os/ProcessCpuTracker$Stats;Ljava/lang/String;)V +HSPLcom/android/internal/os/ProcessCpuTracker;->init()V +HSPLcom/android/internal/os/ProcessCpuTracker;->onLoadChanged(FFF)V +HSPLcom/android/internal/os/ProcessCpuTracker;->onMeasureProcessName(Ljava/lang/String;)I +HSPLcom/android/internal/os/ProcessCpuTracker;->readFile(Ljava/lang/String;C)Ljava/lang/String; +HSPLcom/android/internal/os/ProcessCpuTracker;->update()V +HSPLcom/android/internal/os/RuntimeInit$1;->()V +HSPLcom/android/internal/os/RuntimeInit$1;->getId()Ljava/lang/String; +HSPLcom/android/internal/os/RuntimeInit$Arguments;->([Ljava/lang/String;)V +HSPLcom/android/internal/os/RuntimeInit$Arguments;->parseArgs([Ljava/lang/String;)V +HSPLcom/android/internal/os/RuntimeInit$KillApplicationHandler;->()V +HSPLcom/android/internal/os/RuntimeInit$KillApplicationHandler;->(Lcom/android/internal/os/RuntimeInit$KillApplicationHandler;)V +HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;->()V +HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;->(Lcom/android/internal/os/RuntimeInit$LoggingHandler;)V +HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;->(Ljava/lang/reflect/Method;[Ljava/lang/String;)V +HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;->run()V +HSPLcom/android/internal/os/RuntimeInit;->applicationInit(I[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/RuntimeInit;->commonInit()V +HSPLcom/android/internal/os/RuntimeInit;->findStaticMain(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/RuntimeInit;->getApplicationObject()Landroid/os/IBinder; +HSPLcom/android/internal/os/RuntimeInit;->getDefaultUserAgent()Ljava/lang/String; +HSPLcom/android/internal/os/RuntimeInit;->redirectLogStreams()V +HSPLcom/android/internal/os/RuntimeInit;->setApplicationObject(Landroid/os/IBinder;)V +HSPLcom/android/internal/os/SomeArgs;->()V +HSPLcom/android/internal/os/SomeArgs;->clear()V +HSPLcom/android/internal/os/SomeArgs;->obtain()Lcom/android/internal/os/SomeArgs; +HSPLcom/android/internal/os/SomeArgs;->recycle()V +HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[ILjava/lang/String;Ljava/lang/String;)I +HSPLcom/android/internal/os/Zygote;->forkSystemServer(II[II[[IJJ)I +HSPLcom/android/internal/os/ZygoteConnection;->closeSocket()V +HSPLcom/android/internal/os/ZygoteConnection;->handleChildProc(Lcom/android/internal/os/ZygoteConnection$Arguments;[Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/ZygoteConnection;->processOneCommand(Lcom/android/internal/os/ZygoteServer;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/ZygoteInit;->createPathClassLoader(Ljava/lang/String;I)Ljava/lang/ClassLoader; +HSPLcom/android/internal/os/ZygoteInit;->encodeSystemServerClassPath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/os/ZygoteInit;->forkSystemServer(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/os/ZygoteServer;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/ZygoteInit;->handleSystemServerProcess(Lcom/android/internal/os/ZygoteConnection$Arguments;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/ZygoteInit;->hasSecondZygote(Ljava/lang/String;)Z +HSPLcom/android/internal/os/ZygoteInit;->main([Ljava/lang/String;)V +HSPLcom/android/internal/os/ZygoteInit;->performSystemServerDexOpt(Ljava/lang/String;)V +HSPLcom/android/internal/os/ZygoteInit;->waitForSecondaryZygote(Ljava/lang/String;)V +HSPLcom/android/internal/os/ZygoteInit;->zygoteInit(I[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable; +HSPLcom/android/internal/os/ZygoteServer;->closeServerSocket()V +HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V +HSPLcom/android/internal/policy/DecorContext;->(Landroid/content/Context;Landroid/content/res/Resources;)V +HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources; +HSPLcom/android/internal/policy/DecorContext;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/android/internal/policy/DecorContext;->setPhoneWindow(Lcom/android/internal/policy/PhoneWindow;)V +HSPLcom/android/internal/policy/DecorView$1;->()V +HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->(IIIIILjava/lang/String;II)V +HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->(IIIIILjava/lang/String;IILcom/android/internal/policy/DecorView$ColorViewAttributes;)V +HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isPresent(IIZ)Z +HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(ZIIZ)Z +HSPLcom/android/internal/policy/DecorView$ColorViewState;->(Lcom/android/internal/policy/DecorView$ColorViewAttributes;)V +HSPLcom/android/internal/policy/DecorView;->(Landroid/content/Context;ILcom/android/internal/policy/PhoneWindow;Landroid/view/WindowManager$LayoutParams;)V +HSPLcom/android/internal/policy/DecorView;->calculateStatusBarColor()I +HSPLcom/android/internal/policy/DecorView;->calculateStatusBarColor(III)I +HSPLcom/android/internal/policy/DecorView;->createDecorCaptionView(Landroid/view/LayoutInflater;)Lcom/android/internal/widget/DecorCaptionView; +HSPLcom/android/internal/policy/DecorView;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLcom/android/internal/policy/DecorView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLcom/android/internal/policy/DecorView;->draw(Landroid/graphics/Canvas;)V +HSPLcom/android/internal/policy/DecorView;->drawResizingShadowIfNeeded(Landroid/view/DisplayListCanvas;)V +HSPLcom/android/internal/policy/DecorView;->drawableChanged()V +HSPLcom/android/internal/policy/DecorView;->enableCaption(Z)V +HSPLcom/android/internal/policy/DecorView;->enforceNonTranslucentBackground(Landroid/graphics/drawable/Drawable;Z)Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/policy/DecorView;->finishChanging()V +HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Lcom/android/internal/policy/DecorView$ColorViewState;Landroid/graphics/Region;)Z +HSPLcom/android/internal/policy/DecorView;->getAccessibilityViewId()I +HSPLcom/android/internal/policy/DecorView;->getColorViewBottomInset(II)I +HSPLcom/android/internal/policy/DecorView;->getColorViewRightInset(II)I +HSPLcom/android/internal/policy/DecorView;->getColorViewTopInset(II)I +HSPLcom/android/internal/policy/DecorView;->getNavBarSize(III)I +HSPLcom/android/internal/policy/DecorView;->getResizingBackgroundDrawable(Landroid/content/Context;IIZ)Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/policy/DecorView;->getStackId()I +HSPLcom/android/internal/policy/DecorView;->getTitleSuffix(Landroid/view/WindowManager$LayoutParams;)Ljava/lang/String; +HSPLcom/android/internal/policy/DecorView;->initResizingPaints()V +HSPLcom/android/internal/policy/DecorView;->initializeElevation()V +HSPLcom/android/internal/policy/DecorView;->isNavBarToLeftEdge(II)Z +HSPLcom/android/internal/policy/DecorView;->isNavBarToRightEdge(II)Z +HSPLcom/android/internal/policy/DecorView;->isResizing()Z +HSPLcom/android/internal/policy/DecorView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->onAttachedToWindow()V +HSPLcom/android/internal/policy/DecorView;->onCloseSystemDialogs(Ljava/lang/String;)V +HSPLcom/android/internal/policy/DecorView;->onContentDrawn(IIII)Z +HSPLcom/android/internal/policy/DecorView;->onDraw(Landroid/graphics/Canvas;)V +HSPLcom/android/internal/policy/DecorView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z +HSPLcom/android/internal/policy/DecorView;->onLayout(ZIIII)V +HSPLcom/android/internal/policy/DecorView;->onMeasure(II)V +HSPLcom/android/internal/policy/DecorView;->onPostDraw(Landroid/view/DisplayListCanvas;)V +HSPLcom/android/internal/policy/DecorView;->onResourcesLoaded(Landroid/view/LayoutInflater;I)V +HSPLcom/android/internal/policy/DecorView;->onRootViewScrollYChanged(I)V +HSPLcom/android/internal/policy/DecorView;->onWindowFocusChanged(Z)V +HSPLcom/android/internal/policy/DecorView;->onWindowSystemUiVisibilityChanged(I)V +HSPLcom/android/internal/policy/DecorView;->sendAccessibilityEvent(I)V +HSPLcom/android/internal/policy/DecorView;->setBackgroundFallback(I)V +HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z +HSPLcom/android/internal/policy/DecorView;->setWindow(Lcom/android/internal/policy/PhoneWindow;)V +HSPLcom/android/internal/policy/DecorView;->setWindowBackground(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/policy/DecorView;->setWindowFrame(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/policy/DecorView;->startChanging()V +HSPLcom/android/internal/policy/DecorView;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLcom/android/internal/policy/DecorView;->updateAvailableWidth()V +HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZ)V +HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V +HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->updateElevation()V +HSPLcom/android/internal/policy/DecorView;->updateLogTag(Landroid/view/WindowManager$LayoutParams;)V +HSPLcom/android/internal/policy/DecorView;->updateNavigationGuard(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->updateNavigationGuardColor()V +HSPLcom/android/internal/policy/DecorView;->updateStatusGuard(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->willYouTakeTheInputQueue()Landroid/view/InputQueue$Callback; +HSPLcom/android/internal/policy/DecorView;->willYouTakeTheSurface()Landroid/view/SurfaceHolder$Callback2; +HSPLcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget;->(III)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget;->(IIIF)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;Z)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->addMiddleTarget(Z)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->addNonDismissingTargets(ZIII)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->addRatio16_9Targets(ZI)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->calculateNonDismissingSnapTarget(I)Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->calculateTargets(Z)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->maybeAddTarget(II)V +HSPLcom/android/internal/policy/DividerSnapAlgorithm;->snap(IZ)Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; +HSPLcom/android/internal/policy/DockedDividerUtils;->calculateMiddlePosition(ZLandroid/graphics/Rect;III)I +HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardDrawnCallback; +HSPLcom/android/internal/policy/IKeyguardDrawnCallback;->onDrawn()V +HSPLcom/android/internal/policy/IKeyguardService$Stub;->()V +HSPLcom/android/internal/policy/IKeyguardService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/policy/IKeyguardService;->addStateMonitorCallback(Lcom/android/internal/policy/IKeyguardStateCallback;)V +HSPLcom/android/internal/policy/IKeyguardService;->dismiss(Lcom/android/internal/policy/IKeyguardDismissCallback;)V +HSPLcom/android/internal/policy/IKeyguardService;->doKeyguardTimeout(Landroid/os/Bundle;)V +HSPLcom/android/internal/policy/IKeyguardService;->onBootCompleted()V +HSPLcom/android/internal/policy/IKeyguardService;->onDreamingStarted()V +HSPLcom/android/internal/policy/IKeyguardService;->onDreamingStopped()V +HSPLcom/android/internal/policy/IKeyguardService;->onFinishedGoingToSleep(IZ)V +HSPLcom/android/internal/policy/IKeyguardService;->onFinishedWakingUp()V +HSPLcom/android/internal/policy/IKeyguardService;->onScreenTurnedOff()V +HSPLcom/android/internal/policy/IKeyguardService;->onScreenTurnedOn()V +HSPLcom/android/internal/policy/IKeyguardService;->onScreenTurningOff()V +HSPLcom/android/internal/policy/IKeyguardService;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V +HSPLcom/android/internal/policy/IKeyguardService;->onShortPowerPressedGoHome()V +HSPLcom/android/internal/policy/IKeyguardService;->onStartedGoingToSleep(I)V +HSPLcom/android/internal/policy/IKeyguardService;->onStartedWakingUp()V +HSPLcom/android/internal/policy/IKeyguardService;->onSystemReady()V +HSPLcom/android/internal/policy/IKeyguardService;->setCurrentUser(I)V +HSPLcom/android/internal/policy/IKeyguardService;->setKeyguardEnabled(Z)V +HSPLcom/android/internal/policy/IKeyguardService;->setOccluded(ZZ)V +HSPLcom/android/internal/policy/IKeyguardService;->setSwitchingUser(Z)V +HSPLcom/android/internal/policy/IKeyguardService;->startKeyguardExitAnimation(JJ)V +HSPLcom/android/internal/policy/IKeyguardService;->verifyUnlock(Lcom/android/internal/policy/IKeyguardExitCallback;)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onHasLockscreenWallpaperChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onInputRestrictedStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onShowingStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onSimSecureStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;->onTrustedChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardStateCallback; +HSPLcom/android/internal/policy/IKeyguardStateCallback;->onHasLockscreenWallpaperChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback;->onInputRestrictedStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback;->onShowingStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback;->onSimSecureStateChanged(Z)V +HSPLcom/android/internal/policy/IKeyguardStateCallback;->onTrustedChanged(Z)V +HSPLcom/android/internal/policy/IShortcutService$Stub;->()V +HSPLcom/android/internal/policy/IShortcutService$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/policy/IShortcutService;->notifyShortcutKeyPressed(J)V +HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->(Landroid/content/Context;)V +HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->setView(Landroid/view/View;)V +HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/content/Context;)V +HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V +HSPLcom/android/internal/policy/PhoneLayoutInflater;->cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater; +HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLcom/android/internal/policy/PhoneWindow$1;->(Lcom/android/internal/policy/PhoneWindow;)V +HSPLcom/android/internal/policy/PhoneWindow$1;->run()V +HSPLcom/android/internal/policy/PhoneWindow$ActionMenuPresenterCallback;->(Lcom/android/internal/policy/PhoneWindow;)V +HSPLcom/android/internal/policy/PhoneWindow$ActionMenuPresenterCallback;->(Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow$ActionMenuPresenterCallback;)V +HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->(I)V +HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->applyFrozenState()V +HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->setMenu(Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLcom/android/internal/policy/PhoneWindow$PhoneWindowMenuCallback;->(Lcom/android/internal/policy/PhoneWindow;)V +HSPLcom/android/internal/policy/PhoneWindow$RotationWatcher$1;->(Lcom/android/internal/policy/PhoneWindow$RotationWatcher;)V +HSPLcom/android/internal/policy/PhoneWindow$RotationWatcher;->()V +HSPLcom/android/internal/policy/PhoneWindow;->-get0(Lcom/android/internal/policy/PhoneWindow;)I +HSPLcom/android/internal/policy/PhoneWindow;->-set0(Lcom/android/internal/policy/PhoneWindow;I)I +HSPLcom/android/internal/policy/PhoneWindow;->-set1(Lcom/android/internal/policy/PhoneWindow;Z)Z +HSPLcom/android/internal/policy/PhoneWindow;->(Landroid/content/Context;)V +HSPLcom/android/internal/policy/PhoneWindow;->(Landroid/content/Context;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V +HSPLcom/android/internal/policy/PhoneWindow;->alwaysReadCloseOnTouchAttr()V +HSPLcom/android/internal/policy/PhoneWindow;->closeAllPanels()V +HSPLcom/android/internal/policy/PhoneWindow;->closeContextMenu()V +HSPLcom/android/internal/policy/PhoneWindow;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLcom/android/internal/policy/PhoneWindow;->doInvalidatePanelMenu(I)V +HSPLcom/android/internal/policy/PhoneWindow;->generateDecor(I)Lcom/android/internal/policy/DecorView; +HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup; +HSPLcom/android/internal/policy/PhoneWindow;->getDecorView()Landroid/view/View; +HSPLcom/android/internal/policy/PhoneWindow;->getLayoutInflater()Landroid/view/LayoutInflater; +HSPLcom/android/internal/policy/PhoneWindow;->getNavigationBarColor()I +HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZ)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; +HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZLcom/android/internal/policy/PhoneWindow$PanelFeatureState;)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; +HSPLcom/android/internal/policy/PhoneWindow;->getTransition(Landroid/transition/Transition;Landroid/transition/Transition;I)Landroid/transition/Transition; +HSPLcom/android/internal/policy/PhoneWindow;->getVolumeControlStream()I +HSPLcom/android/internal/policy/PhoneWindow;->initializePanelMenu(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;)Z +HSPLcom/android/internal/policy/PhoneWindow;->installDecor()V +HSPLcom/android/internal/policy/PhoneWindow;->invalidatePanelMenu(I)V +HSPLcom/android/internal/policy/PhoneWindow;->isFloating()Z +HSPLcom/android/internal/policy/PhoneWindow;->isShowingWallpaper()Z +HSPLcom/android/internal/policy/PhoneWindow;->isTranslucent()Z +HSPLcom/android/internal/policy/PhoneWindow;->onActive()V +HSPLcom/android/internal/policy/PhoneWindow;->onViewRootImplSet(Landroid/view/ViewRootImpl;)V +HSPLcom/android/internal/policy/PhoneWindow;->openPanelsAfterRestore()V +HSPLcom/android/internal/policy/PhoneWindow;->peekDecorView()Landroid/view/View; +HSPLcom/android/internal/policy/PhoneWindow;->preparePanel(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;Landroid/view/KeyEvent;)Z +HSPLcom/android/internal/policy/PhoneWindow;->requestFeature(I)Z +HSPLcom/android/internal/policy/PhoneWindow;->restoreHierarchyState(Landroid/os/Bundle;)V +HSPLcom/android/internal/policy/PhoneWindow;->saveHierarchyState()Landroid/os/Bundle; +HSPLcom/android/internal/policy/PhoneWindow;->savePanelState(Landroid/util/SparseArray;)V +HSPLcom/android/internal/policy/PhoneWindow;->setAttributes(Landroid/view/WindowManager$LayoutParams;)V +HSPLcom/android/internal/policy/PhoneWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/policy/PhoneWindow;->setCloseOnSwipeEnabled(Z)V +HSPLcom/android/internal/policy/PhoneWindow;->setContentView(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setContentView(Landroid/view/View;)V +HSPLcom/android/internal/policy/PhoneWindow;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLcom/android/internal/policy/PhoneWindow;->setDefaultIcon(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setDefaultLogo(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setDefaultWindowFormat(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setNavigationBarColor(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setStatusBarColor(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setTheme(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/policy/PhoneWindow;->setTitle(Ljava/lang/CharSequence;Z)V +HSPLcom/android/internal/policy/PhoneWindow;->setTitleColor(I)V +HSPLcom/android/internal/policy/PhoneWindow;->setVolumeControlStream(I)V +HSPLcom/android/internal/policy/PhoneWindow;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z +HSPLcom/android/internal/policy/PhoneWindow;->transitionTo(Landroid/transition/Scene;)V +HSPLcom/android/internal/policy/PipSnapAlgorithm;->(Landroid/content/Context;)V +HSPLcom/android/internal/policy/PipSnapAlgorithm;->calculateSnapTargets()V +HSPLcom/android/internal/policy/PipSnapAlgorithm;->onConfigurationChanged()V +HSPLcom/android/internal/statusbar/IStatusBar$Stub;->()V +HSPLcom/android/internal/statusbar/IStatusBar$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/statusbar/IStatusBar$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/statusbar/IStatusBar;->addQsTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBar;->animateCollapsePanels()V +HSPLcom/android/internal/statusbar/IStatusBar;->animateExpandNotificationsPanel()V +HSPLcom/android/internal/statusbar/IStatusBar;->animateExpandSettingsPanel(Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBar;->appTransitionCancelled()V +HSPLcom/android/internal/statusbar/IStatusBar;->appTransitionFinished()V +HSPLcom/android/internal/statusbar/IStatusBar;->appTransitionPending()V +HSPLcom/android/internal/statusbar/IStatusBar;->appTransitionStarting(JJ)V +HSPLcom/android/internal/statusbar/IStatusBar;->cancelPreloadRecentApps()V +HSPLcom/android/internal/statusbar/IStatusBar;->clickQsTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBar;->disable(II)V +HSPLcom/android/internal/statusbar/IStatusBar;->dismissKeyboardShortcutsMenu()V +HSPLcom/android/internal/statusbar/IStatusBar;->handleSystemKey(I)V +HSPLcom/android/internal/statusbar/IStatusBar;->hideRecentApps(ZZ)V +HSPLcom/android/internal/statusbar/IStatusBar;->onCameraLaunchGestureDetected(I)V +HSPLcom/android/internal/statusbar/IStatusBar;->preloadRecentApps()V +HSPLcom/android/internal/statusbar/IStatusBar;->remQsTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBar;->removeIcon(Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBar;->setIcon(Ljava/lang/String;Lcom/android/internal/statusbar/StatusBarIcon;)V +HSPLcom/android/internal/statusbar/IStatusBar;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V +HSPLcom/android/internal/statusbar/IStatusBar;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLcom/android/internal/statusbar/IStatusBar;->setTopAppHidesStatusBar(Z)V +HSPLcom/android/internal/statusbar/IStatusBar;->setWindowState(II)V +HSPLcom/android/internal/statusbar/IStatusBar;->showAssistDisclosure()V +HSPLcom/android/internal/statusbar/IStatusBar;->showGlobalActionsMenu()V +HSPLcom/android/internal/statusbar/IStatusBar;->showPictureInPictureMenu()V +HSPLcom/android/internal/statusbar/IStatusBar;->showRecentApps(ZZ)V +HSPLcom/android/internal/statusbar/IStatusBar;->showScreenPinningRequest(I)V +HSPLcom/android/internal/statusbar/IStatusBar;->showShutdownUi(ZLjava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBar;->startAssist(Landroid/os/Bundle;)V +HSPLcom/android/internal/statusbar/IStatusBar;->toggleKeyboardShortcutsMenu(I)V +HSPLcom/android/internal/statusbar/IStatusBar;->togglePanel()V +HSPLcom/android/internal/statusbar/IStatusBar;->toggleRecentApps()V +HSPLcom/android/internal/statusbar/IStatusBar;->toggleSplitScreen()V +HSPLcom/android/internal/statusbar/IStatusBar;->topAppWindowChanged(Z)V +HSPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLcom/android/internal/statusbar/IStatusBarService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/statusbar/IStatusBarService; +HSPLcom/android/internal/statusbar/IStatusBarService;->addTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->clearNotificationEffects()V +HSPLcom/android/internal/statusbar/IStatusBarService;->clickTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->collapsePanels()V +HSPLcom/android/internal/statusbar/IStatusBarService;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->disable2(ILandroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->disable2ForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->expandNotificationsPanel()V +HSPLcom/android/internal/statusbar/IStatusBarService;->expandSettingsPanel(Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->handleSystemKey(I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onClearAllNotifications(I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onGlobalActionsHidden()V +HSPLcom/android/internal/statusbar/IStatusBarService;->onGlobalActionsShown()V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationActionClick(Ljava/lang/String;I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationClear(Ljava/lang/String;Ljava/lang/String;II)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationClick(Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationError(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->onPanelHidden()V +HSPLcom/android/internal/statusbar/IStatusBarService;->onPanelRevealed(ZI)V +HSPLcom/android/internal/statusbar/IStatusBarService;->reboot(Z)V +HSPLcom/android/internal/statusbar/IStatusBarService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->remTile(Landroid/content/ComponentName;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->removeIcon(Ljava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->setIcon(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->setIconVisibility(Ljava/lang/String;Z)V +HSPLcom/android/internal/statusbar/IStatusBarService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V +HSPLcom/android/internal/statusbar/IStatusBarService;->setSystemUiVisibility(IILjava/lang/String;)V +HSPLcom/android/internal/statusbar/IStatusBarService;->shutdown()V +HSPLcom/android/internal/statusbar/IStatusBarService;->togglePanel()V +HSPLcom/android/internal/statusbar/StatusBarIcon$1;->()V +HSPLcom/android/internal/statusbar/StatusBarIcon;->(Landroid/os/UserHandle;Ljava/lang/String;Landroid/graphics/drawable/Icon;IILjava/lang/CharSequence;)V +HSPLcom/android/internal/statusbar/StatusBarIcon;->clone()Lcom/android/internal/statusbar/StatusBarIcon; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallCapablePhoneAccounts(ZLjava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallState()I +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCurrentTtyMode(Ljava/lang/String;)I +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getDefaultDialerPackage()Ljava/lang/String; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getDefaultOutgoingPhoneAccount(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getSimCallManager()Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isInCall(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V +HSPLcom/android/internal/telecom/ITelecomService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/ITelecomService; +HSPLcom/android/internal/telecom/ITelecomService;->acceptRingingCall(Ljava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->acceptRingingCallWithVideoState(Ljava/lang/String;I)V +HSPLcom/android/internal/telecom/ITelecomService;->addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V +HSPLcom/android/internal/telecom/ITelecomService;->addNewUnknownCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V +HSPLcom/android/internal/telecom/ITelecomService;->cancelMissedCallsNotification(Ljava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->clearAccounts(Ljava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->createManageBlockedNumbersIntent()Landroid/content/Intent; +HSPLcom/android/internal/telecom/ITelecomService;->dumpCallAnalytics()Landroid/telecom/TelecomAnalytics; +HSPLcom/android/internal/telecom/ITelecomService;->enablePhoneAccount(Landroid/telecom/PhoneAccountHandle;Z)Z +HSPLcom/android/internal/telecom/ITelecomService;->endCall()Z +HSPLcom/android/internal/telecom/ITelecomService;->getAdnUriForPhoneAccount(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Landroid/net/Uri; +HSPLcom/android/internal/telecom/ITelecomService;->getAllPhoneAccountHandles()Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getAllPhoneAccounts()Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getAllPhoneAccountsCount()I +HSPLcom/android/internal/telecom/ITelecomService;->getCallCapablePhoneAccounts(ZLjava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getCallState()I +HSPLcom/android/internal/telecom/ITelecomService;->getCurrentTtyMode(Ljava/lang/String;)I +HSPLcom/android/internal/telecom/ITelecomService;->getDefaultDialerPackage()Ljava/lang/String; +HSPLcom/android/internal/telecom/ITelecomService;->getDefaultOutgoingPhoneAccount(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService;->getDefaultPhoneApp()Landroid/content/ComponentName; +HSPLcom/android/internal/telecom/ITelecomService;->getLine1Number(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telecom/ITelecomService;->getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount; +HSPLcom/android/internal/telecom/ITelecomService;->getPhoneAccountsForPackage(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getPhoneAccountsSupportingScheme(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getSelfManagedPhoneAccounts(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telecom/ITelecomService;->getSimCallManager()Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService;->getSimCallManagerForUser(I)Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService;->getSystemDialerPackage()Ljava/lang/String; +HSPLcom/android/internal/telecom/ITelecomService;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle; +HSPLcom/android/internal/telecom/ITelecomService;->getVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telecom/ITelecomService;->handlePinMmi(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->handlePinMmiForPhoneAccount(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isInCall(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isInManagedCall(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isIncomingCallPermitted(Landroid/telecom/PhoneAccountHandle;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isOutgoingCallPermitted(Landroid/telecom/PhoneAccountHandle;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isRinging(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isTtySupported(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->placeCall(Landroid/net/Uri;Landroid/os/Bundle;Ljava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V +HSPLcom/android/internal/telecom/ITelecomService;->setDefaultDialer(Ljava/lang/String;)Z +HSPLcom/android/internal/telecom/ITelecomService;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V +HSPLcom/android/internal/telecom/ITelecomService;->showInCallScreen(ZLjava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->silenceRinger(Ljava/lang/String;)V +HSPLcom/android/internal/telecom/ITelecomService;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V +HSPLcom/android/internal/telecom/ITelecomService;->waitOnHandlers()V +HSPLcom/android/internal/telephony/-$Lambda$jU5bqwYuQ4STkTfvA_3aFP2OGVg;->()V +HSPLcom/android/internal/telephony/AppSmsManager;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/BaseCommands;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/BaseCommands;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; +HSPLcom/android/internal/telephony/BaseCommands;->registerForAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForCdmaOtaProvision(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForCdmaSubscriptionChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForCellInfoList(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForDataCallListChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForExitEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForHardwareConfigChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForIccRefresh(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForIccStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForImsNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForModemReset(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForOffOrNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForPcoData(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForRadioCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForRadioStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForResendIncallMute(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForRilConnected(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForSrvccStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForSubscriptionStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->registerForVoiceRadioTechChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnCallRing(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnIccSmsFull(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnNITZTime(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnNewCdmaSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnNewGsmBroadcastSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnNewGsmSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnRestrictedStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnSignalStrengthUpdate(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnSmsStatus(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnSs(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnSuppServiceNotification(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnUSSD(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setOnUnsolOemHookRaw(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/BaseCommands;->setRadioState(Lcom/android/internal/telephony/CommandsInterface$RadioState;)V +HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCallWaitingInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaOtaProvision(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaPrlChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Call$SrvccState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/Call$State;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/Call$State;->isAlive()Z +HSPLcom/android/internal/telephony/Call$State;->isRinging()Z +HSPLcom/android/internal/telephony/Call;->()V +HSPLcom/android/internal/telephony/Call;->getState()Lcom/android/internal/telephony/Call$State; +HSPLcom/android/internal/telephony/Call;->isIdle()Z +HSPLcom/android/internal/telephony/Call;->isRinging()Z +HSPLcom/android/internal/telephony/CallManager$CallManagerHandler;->(Lcom/android/internal/telephony/CallManager;)V +HSPLcom/android/internal/telephony/CallManager$CallManagerHandler;->(Lcom/android/internal/telephony/CallManager;Lcom/android/internal/telephony/CallManager$CallManagerHandler;)V +HSPLcom/android/internal/telephony/CallManager$CallManagerHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/CallManager;->()V +HSPLcom/android/internal/telephony/CallManager;->getInstance()Lcom/android/internal/telephony/CallManager; +HSPLcom/android/internal/telephony/CallManager;->registerForDisconnect(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForMmiComplete(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForPhoneStates(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/CallManager;->registerForPreciseCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForSuppServiceFailed(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CallManager;->registerPhone(Lcom/android/internal/telephony/Phone;)Z +HSPLcom/android/internal/telephony/CallTracker;->()V +HSPLcom/android/internal/telephony/CallTracker;->checkNoOperationsPending()Z +HSPLcom/android/internal/telephony/CallTracker;->handleRadioAvailable()V +HSPLcom/android/internal/telephony/CallTracker;->pollCallsWhenSafe()V +HSPLcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;->onQueryComplete(ILjava/lang/Object;Lcom/android/internal/telephony/CallerInfo;)V +HSPLcom/android/internal/telephony/CarrierActionAgent$1;->(Lcom/android/internal/telephony/CarrierActionAgent;)V +HSPLcom/android/internal/telephony/CarrierActionAgent$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionReportDefaultNetworkStatus(Z)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionReset()V +HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionSetMeteredApnsEnabled(Z)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionSetRadioEnabled(Z)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->getCarrierActionEnabled(I)Ljava/lang/Boolean; +HSPLcom/android/internal/telephony/CarrierActionAgent;->getRegistrantsFromAction(I)Landroid/os/RegistrantList; +HSPLcom/android/internal/telephony/CarrierActionAgent;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->loge(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/CarrierActionAgent;->registerForCarrierAction(ILandroid/os/Handler;ILjava/lang/Object;Z)V +HSPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/telephony/TelephonyManager;Landroid/content/ContentResolver;I)V +HSPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/telephony/TelephonyManager;Landroid/content/ContentResolver;I[Ljava/lang/String;Landroid/util/ArrayMap;)V +HSPLcom/android/internal/telephony/CarrierAppUtils;->getApplicationInfoIfSystemApp(Landroid/content/pm/IPackageManager;ILjava/lang/String;)Landroid/content/pm/ApplicationInfo; +HSPLcom/android/internal/telephony/CarrierAppUtils;->getDefaultCarrierAppCandidatesHelper(Landroid/content/pm/IPackageManager;I[Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/CarrierAppUtils;->getDefaultCarrierAssociatedAppsHelper(Landroid/content/pm/IPackageManager;ILandroid/util/ArrayMap;)Ljava/util/Map; +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$1;->(Lcom/android/internal/telephony/CarrierServiceBindHelper;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$2;->(Lcom/android/internal/telephony/CarrierServiceBindHelper;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$2;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->(Lcom/android/internal/telephony/CarrierServiceBindHelper;I)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->getPhoneId()I +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->rebind()V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->unbind(Z)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->(Lcom/android/internal/telephony/CarrierServiceBindHelper;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->(Lcom/android/internal/telephony/CarrierServiceBindHelper;Lcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->-get1(Lcom/android/internal/telephony/CarrierServiceBindHelper;)Landroid/content/Context; +HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->-wrap0(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->updateForPhoneId(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$1;->(Lcom/android/internal/telephony/CarrierServiceStateTracker;)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->(Lcom/android/internal/telephony/CarrierServiceStateTracker;I)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->getTypeId()I +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->sendMessage()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->(Lcom/android/internal/telephony/CarrierServiceStateTracker;I)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->getTypeId()I +HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->sendMessage()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->-get2(Lcom/android/internal/telephony/CarrierServiceStateTracker;)Lcom/android/internal/telephony/ServiceStateTracker; +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->-wrap0(Lcom/android/internal/telephony/CarrierServiceStateTracker;)Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->-wrap1(Lcom/android/internal/telephony/CarrierServiceStateTracker;)Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->-wrap2(Lcom/android/internal/telephony/CarrierServiceStateTracker;)Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->-wrap3(Lcom/android/internal/telephony/CarrierServiceStateTracker;)Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/ServiceStateTracker;)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->cancelNotification(I)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->evaluateSendingMessage(Lcom/android/internal/telephony/CarrierServiceStateTracker$NotificationType;)Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->getNotificationManager(Landroid/content/Context;)Landroid/app/NotificationManager; +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->handleConfigChanges()V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isGlobalMode()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isPhoneRegisteredForWifiCalling()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isPhoneStillRegistered()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isPhoneVoiceRegistered()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isRadioOffOrAirplaneMode()Z +HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->registerNotificationTypes()V +HSPLcom/android/internal/telephony/CarrierSignalAgent$1;->(Lcom/android/internal/telephony/CarrierSignalAgent;)V +HSPLcom/android/internal/telephony/CarrierSignalAgent;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/CarrierSignalAgent;->loadCarrierConfig()V +HSPLcom/android/internal/telephony/CarrierSignalAgent;->notifyCarrierSignalReceivers(Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/CellBroadcastHandler;->(Landroid/content/Context;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/CellBroadcastHandler;->(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/CellBroadcastHandler;->makeCellBroadcastHandler(Landroid/content/Context;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CellBroadcastHandler; +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->changeConcurrentRequests(IJ)V +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->completeRequest(Lcom/android/internal/telephony/RilWakelockInfo;J)V +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->getPendingRequestCount()I +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->removePendingWakelock(II)Lcom/android/internal/telephony/RilWakelockInfo; +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->startAttributingWakelock(IIIJ)V +HSPLcom/android/internal/telephony/ClientWakelockAccountant;->stopAttributingWakelock(IIJ)V +HSPLcom/android/internal/telephony/ClientWakelockTracker;->()V +HSPLcom/android/internal/telephony/ClientWakelockTracker;->getClientWakelockAccountant(Ljava/lang/String;)Lcom/android/internal/telephony/ClientWakelockAccountant; +HSPLcom/android/internal/telephony/ClientWakelockTracker;->isClientActive(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ClientWakelockTracker;->startTracking(Ljava/lang/String;III)V +HSPLcom/android/internal/telephony/ClientWakelockTracker;->stopTracking(Ljava/lang/String;III)V +HSPLcom/android/internal/telephony/ClientWakelockTracker;->updateConcurrentRequests(IJ)V +HSPLcom/android/internal/telephony/CommandException$Error;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/CommandException;->(Lcom/android/internal/telephony/CommandException$Error;)V +HSPLcom/android/internal/telephony/CommandException;->fromRilErrno(I)Lcom/android/internal/telephony/CommandException; +HSPLcom/android/internal/telephony/CommandsInterface$RadioState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/CommandsInterface$RadioState;->isAvailable()Z +HSPLcom/android/internal/telephony/CommandsInterface$RadioState;->isOn()Z +HSPLcom/android/internal/telephony/CommandsInterface$RadioState;->values()[Lcom/android/internal/telephony/CommandsInterface$RadioState; +HSPLcom/android/internal/telephony/CommandsInterface;->getLteOnCdmaMode()I +HSPLcom/android/internal/telephony/CommandsInterface;->getRadioState()Lcom/android/internal/telephony/CommandsInterface$RadioState; +HSPLcom/android/internal/telephony/CommandsInterface;->getRilVersion()I +HSPLcom/android/internal/telephony/CommandsInterface;->registerFoT53ClirlInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCallWaitingInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCarrierInfoForImsiEncryption(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCdmaOtaProvision(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCdmaPrlChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCdmaSubscriptionChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForCellInfoList(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForDataCallListChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForExitEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForHardwareConfigChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForIccRefresh(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForIccStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForImsNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForLceInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForLineControlInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForModemReset(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForNetworkScanResult(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForNumberInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForOffOrNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForPcoData(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForRadioCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForRadioStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForRedirectedNumberInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForResendIncallMute(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForRilConnected(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForSrvccStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForSubscriptionStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForT53AudioControlInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->registerForVoiceRadioTechChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCallRing(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCatCallSetUp(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCatCcAlphaNotify(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCatEvent(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCatProactiveCmd(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnCatSessionEnd(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnIccRefresh(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnIccSmsFull(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnNewCdmaSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnNewGsmBroadcastSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnNewGsmSms(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnRestrictedStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnSignalStrengthUpdate(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnSmsOnSim(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnSmsStatus(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnSs(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnSuppServiceNotification(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnUSSD(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->setOnUnsolOemHookRaw(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCallRing(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCatCallSetUp(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCatCcAlphaNotify(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCatEvent(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCatProactiveCmd(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnCatSessionEnd(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnIccSmsFull(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnNITZTime(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnNewCdmaSms(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnNewGsmBroadcastSms(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnNewGsmSms(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnRestrictedStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnSignalStrengthUpdate(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnSmsOnSim(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnSmsStatus(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnSs(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnSuppServiceNotification(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnUSSD(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unSetOnUnsolOemHookRaw(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForAvailable(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCallStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCallWaitingInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCarrierInfoForImsiEncryption(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCdmaOtaProvision(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCdmaPrlChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCdmaSubscriptionChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForCellInfoList(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForDataCallListChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForDisplayInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForExitEmergencyCallbackMode(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForHardwareConfigChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForIccRefresh(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForIccStatusChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForImsNetworkStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForInCallVoicePrivacyOff(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForInCallVoicePrivacyOn(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForLceInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForLineControlInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForModemReset(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForNetworkScanResult(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForNetworkStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForNotAvailable(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForNumberInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForOffOrNotAvailable(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForOn(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForPcoData(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForRadioCapabilityChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForRadioStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForRedirectedNumberInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForResendIncallMute(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForRilConnected(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForRingbackTone(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForSignalInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForSrvccStateChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForSubscriptionStatusChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForT53AudioControlInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForT53ClirInfo(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unregisterForVoiceRadioTechChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/CommandsInterface;->unsetOnIccRefresh(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Connection;->cancelPostDial()V +HSPLcom/android/internal/telephony/Connection;->getCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/Connection;->getDisconnectTime()J +HSPLcom/android/internal/telephony/Connection;->getHoldDurationMillis()J +HSPLcom/android/internal/telephony/Connection;->getNumberPresentation()I +HSPLcom/android/internal/telephony/Connection;->getPreciseDisconnectCause()I +HSPLcom/android/internal/telephony/Connection;->getUUSInfo()Lcom/android/internal/telephony/UUSInfo; +HSPLcom/android/internal/telephony/Connection;->getVendorDisconnectCause()Ljava/lang/String; +HSPLcom/android/internal/telephony/Connection;->hangup()V +HSPLcom/android/internal/telephony/Connection;->isMultiparty()Z +HSPLcom/android/internal/telephony/Connection;->proceedAfterWaitChar()V +HSPLcom/android/internal/telephony/Connection;->proceedAfterWildChar(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/Connection;->separate()V +HSPLcom/android/internal/telephony/DctConstants$Activity;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/DctConstants$State;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/DctConstants$State;->values()[Lcom/android/internal/telephony/DctConstants$State; +HSPLcom/android/internal/telephony/DebugService;->()V +HSPLcom/android/internal/telephony/DebugService;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->-getcom-android-internal-telephony-PhoneInternalInterface$DataActivityStateSwitchesValues()[I +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->()V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->convertDataActivityState(Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;)I +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->doNotifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyDataActivationStateChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyDataActivity(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyMessageWaitingChanged(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyOemHookRawEventForSubscriber(I[B)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyOtaspChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyServiceState(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifySignalStrength(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyVoiceActivationStateChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/DeviceStateMonitor$1;->(Lcom/android/internal/telephony/DeviceStateMonitor;)V +HSPLcom/android/internal/telephony/DeviceStateMonitor$2;->(Lcom/android/internal/telephony/DeviceStateMonitor;)V +HSPLcom/android/internal/telephony/DeviceStateMonitor$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->-wrap2(Lcom/android/internal/telephony/DeviceStateMonitor;Ljava/lang/String;Z)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->deviceTypeToString(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/DeviceStateMonitor;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->isDeviceCharging()Z +HSPLcom/android/internal/telephony/DeviceStateMonitor;->isPowerSaveModeOn()Z +HSPLcom/android/internal/telephony/DeviceStateMonitor;->isScreenOn()Z +HSPLcom/android/internal/telephony/DeviceStateMonitor;->log(Ljava/lang/String;Z)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->onRilConnected()V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->sendDeviceState(IZ)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->setUnsolResponseFilter(IZ)V +HSPLcom/android/internal/telephony/DeviceStateMonitor;->updateDeviceState(IZ)V +HSPLcom/android/internal/telephony/ExponentialBackoff;->(JJILandroid/os/Handler;Ljava/lang/Runnable;)V +HSPLcom/android/internal/telephony/GsmCdmaCall;->(Lcom/android/internal/telephony/GsmCdmaCallTracker;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker$1;->(Lcom/android/internal/telephony/GsmCdmaCallTracker;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->(Lcom/android/internal/telephony/GsmCdmaPhone;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->getState()Lcom/android/internal/telephony/PhoneConstants$State; +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handlePollCalls(Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->isPhoneTypeGsm()Z +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForVoiceCallEnded(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForVoiceCallStarted(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->unregisterForCallWaiting(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->updatePhoneState()V +HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->updatePhoneType(Z)V +HSPLcom/android/internal/telephony/GsmCdmaPhone$1;->(Lcom/android/internal/telephony/GsmCdmaPhone;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone$2;->(Lcom/android/internal/telephony/GsmCdmaPhone;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->-getcom-android-internal-telephony-DctConstants$StateSwitchesValues()[I +HSPLcom/android/internal/telephony/GsmCdmaPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;IILcom/android/internal/telephony/TelephonyComponentFactory;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;ZIILcom/android/internal/telephony/TelephonyComponentFactory;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getBackgroundCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getBackgroundCall()Lcom/android/internal/telephony/GsmCdmaCall; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCallTracker()Lcom/android/internal/telephony/CallTracker; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataActivityState()Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataConnectionState(Ljava/lang/String;)Lcom/android/internal/telephony/PhoneConstants$DataState; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getForegroundCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getForegroundCall()Lcom/android/internal/telephony/GsmCdmaCall; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccCard()Lcom/android/internal/telephony/IccCard; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getLine1Number()Ljava/lang/String; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getOperatorNumeric()Ljava/lang/String; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getPhoneType()I +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getRingingCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getServiceState()Landroid/telephony/ServiceState; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getServiceStateTracker()Lcom/android/internal/telephony/ServiceStateTracker; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getSubscriberId()Ljava/lang/String; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication; +HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioAvailable()V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioOffOrNotAvailable()V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioOn()V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->initOnce(Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->initRatSpecific(I)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->isInEmergencyCall()Z +HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeCdma()Z +HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeCdmaLte()Z +HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeGsm()Z +HSPLcom/android/internal/telephony/GsmCdmaPhone;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyServiceStateChanged(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->onUpdateIccAvailability()V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->phoneObjectUpdater(I)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForCdmaOtaStatusChange(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForEcmTimerReset(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->setTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->setUiTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForCallWaiting(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForEriFileLoaded(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForSimRecordsLoaded(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/GsmCdmaPhone;->updateCurrentCarrierInProvider()Z +HSPLcom/android/internal/telephony/GsmCdmaPhone;->updateVoiceMail()V +HSPLcom/android/internal/telephony/HardwareConfig;->(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/HardwareConfig;->assignModem(Ljava/lang/String;IIIIII)V +HSPLcom/android/internal/telephony/HardwareConfig;->assignSim(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/android/internal/telephony/HardwareConfig;->toString()Ljava/lang/String; +HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getConfigForSubId(I)Landroid/os/PersistableBundle; +HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->()V +HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ICarrierConfigLoader; +HSPLcom/android/internal/telephony/ICarrierConfigLoader;->getConfigForSubId(I)Landroid/os/PersistableBundle; +HSPLcom/android/internal/telephony/ICarrierConfigLoader;->getDefaultCarrierServicePackageName()Ljava/lang/String; +HSPLcom/android/internal/telephony/ICarrierConfigLoader;->notifyConfigChangedForSubId(I)V +HSPLcom/android/internal/telephony/ICarrierConfigLoader;->updateConfigForPhoneId(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/IIccPhoneBook$Stub;->()V +HSPLcom/android/internal/telephony/IIccPhoneBook;->getAdnRecordsInEf(I)Ljava/util/List; +HSPLcom/android/internal/telephony/IIccPhoneBook;->getAdnRecordsInEfForSubscriber(II)Ljava/util/List; +HSPLcom/android/internal/telephony/IIccPhoneBook;->getAdnRecordsSize(I)[I +HSPLcom/android/internal/telephony/IIccPhoneBook;->getAdnRecordsSizeForSubscriber(II)[I +HSPLcom/android/internal/telephony/IIccPhoneBook;->updateAdnRecordsInEfByIndex(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/IIccPhoneBook;->updateAdnRecordsInEfByIndexForSubscriber(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/IIccPhoneBook;->updateAdnRecordsInEfBySearch(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/IIccPhoneBook;->updateAdnRecordsInEfBySearchForSubscriber(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->()V +HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener;->onSubscriptionsChanged()V +HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->()V +HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/telephony/IPhoneStateListener;->onCallForwardingIndicatorChanged(Z)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onCarrierNetworkChange(Z)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onCellInfoChanged(Ljava/util/List;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onCellLocationChanged(Landroid/os/Bundle;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onDataActivationStateChanged(I)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onDataActivity(I)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onDataConnectionRealTimeInfoChanged(Landroid/telephony/DataConnectionRealTimeInfo;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onDataConnectionStateChanged(II)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onMessageWaitingIndicatorChanged(Z)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onOemHookRawEvent([B)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onOtaspChanged(I)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onPreciseDataConnectionStateChanged(Landroid/telephony/PreciseDataConnectionState;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onServiceStateChanged(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthChanged(I)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V +HSPLcom/android/internal/telephony/IPhoneStateListener;->onVoiceActivationStateChanged(I)V +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getDeviceIdForPhone(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->()V +HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneSubInfo; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getCarrierInfoForImsiEncryption(IILjava/lang/String;)Landroid/telephony/ImsiEncryptionInfo; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getCompleteVoiceMailNumber()Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getCompleteVoiceMailNumberForSubscriber(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getDeviceId(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getDeviceIdForPhone(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getDeviceSvn(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getDeviceSvnUsingSubId(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getGroupIdLevel1(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIccSerialNumber(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIccSerialNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIccSimChallengeResponse(IIILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getImeiForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimChallengeResponse(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimDomain()Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimImpi()Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimImpu()[Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimIst()Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getIsimPcscf()[Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getLine1AlphaTag(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getLine1AlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getLine1Number(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getMsisdn(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getMsisdnForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getNaiForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getSubscriberId(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getVoiceMailAlphaTag(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getVoiceMailAlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getVoiceMailNumber(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IPhoneSubInfo;->setCarrierInfoForImsiEncryption(ILjava/lang/String;Landroid/telephony/ImsiEncryptionInfo;)V +HSPLcom/android/internal/telephony/ISms$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ISms$Stub$Proxy;->getPreferredSmsSubscription()I +HSPLcom/android/internal/telephony/ISms$Stub;->()V +HSPLcom/android/internal/telephony/ISms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISms; +HSPLcom/android/internal/telephony/ISms;->copyMessageToIccEfForSubscriber(ILjava/lang/String;I[B[B)Z +HSPLcom/android/internal/telephony/ISms;->createAppSpecificSmsToken(ILjava/lang/String;Landroid/app/PendingIntent;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ISms;->disableCellBroadcastForSubscriber(III)Z +HSPLcom/android/internal/telephony/ISms;->disableCellBroadcastRangeForSubscriber(IIII)Z +HSPLcom/android/internal/telephony/ISms;->enableCellBroadcastForSubscriber(III)Z +HSPLcom/android/internal/telephony/ISms;->enableCellBroadcastRangeForSubscriber(IIII)Z +HSPLcom/android/internal/telephony/ISms;->getAllMessagesFromIccEfForSubscriber(ILjava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISms;->getImsSmsFormatForSubscriber(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ISms;->getPreferredSmsSubscription()I +HSPLcom/android/internal/telephony/ISms;->getPremiumSmsPermission(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ISms;->getPremiumSmsPermissionForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ISms;->injectSmsPduForSubscriber(I[BLjava/lang/String;Landroid/app/PendingIntent;)V +HSPLcom/android/internal/telephony/ISms;->isImsSmsSupportedForSubscriber(I)Z +HSPLcom/android/internal/telephony/ISms;->isSMSPromptEnabled()Z +HSPLcom/android/internal/telephony/ISms;->isSmsSimPickActivityNeeded(I)Z +HSPLcom/android/internal/telephony/ISms;->sendDataForSubscriber(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V +HSPLcom/android/internal/telephony/ISms;->sendDataForSubscriberWithSelfPermissions(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V +HSPLcom/android/internal/telephony/ISms;->sendMultipartTextForSubscriber(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Z)V +HSPLcom/android/internal/telephony/ISms;->sendStoredMultipartText(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V +HSPLcom/android/internal/telephony/ISms;->sendStoredText(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V +HSPLcom/android/internal/telephony/ISms;->sendTextForSubscriber(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/ISms;->sendTextForSubscriberWithSelfPermissions(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V +HSPLcom/android/internal/telephony/ISms;->setPremiumSmsPermission(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/ISms;->setPremiumSmsPermissionForSubscriber(ILjava/lang/String;I)V +HSPLcom/android/internal/telephony/ISms;->updateMessageOnIccEfForSubscriber(ILjava/lang/String;II[B)Z +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubInfoCount(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultDataSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSmsSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultVoiceSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSimStateForSlotIndex(I)I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSlotIndex(I)I +HSPLcom/android/internal/telephony/ISub$Stub;->()V +HSPLcom/android/internal/telephony/ISub$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISub; +HSPLcom/android/internal/telephony/ISub$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/telephony/ISub;->addSubInfoRecord(Ljava/lang/String;I)I +HSPLcom/android/internal/telephony/ISub;->clearDefaultsForInactiveSubIds()V +HSPLcom/android/internal/telephony/ISub;->clearSubInfo()I +HSPLcom/android/internal/telephony/ISub;->getAccessibleSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISub;->getActiveSubIdList()[I +HSPLcom/android/internal/telephony/ISub;->getActiveSubInfoCount(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ISub;->getActiveSubInfoCountMax()I +HSPLcom/android/internal/telephony/ISub;->getActiveSubscriptionInfo(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo; +HSPLcom/android/internal/telephony/ISub;->getActiveSubscriptionInfoForIccId(Ljava/lang/String;Ljava/lang/String;)Landroid/telephony/SubscriptionInfo; +HSPLcom/android/internal/telephony/ISub;->getActiveSubscriptionInfoForSimSlotIndex(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo; +HSPLcom/android/internal/telephony/ISub;->getActiveSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISub;->getAllSubInfoCount(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ISub;->getAllSubInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISub;->getAvailableSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ISub;->getDefaultDataSubId()I +HSPLcom/android/internal/telephony/ISub;->getDefaultSmsSubId()I +HSPLcom/android/internal/telephony/ISub;->getDefaultSubId()I +HSPLcom/android/internal/telephony/ISub;->getDefaultVoiceSubId()I +HSPLcom/android/internal/telephony/ISub;->getPhoneId(I)I +HSPLcom/android/internal/telephony/ISub;->getSimStateForSlotIndex(I)I +HSPLcom/android/internal/telephony/ISub;->getSlotIndex(I)I +HSPLcom/android/internal/telephony/ISub;->getSubId(I)[I +HSPLcom/android/internal/telephony/ISub;->getSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ISub;->isActiveSubId(I)Z +HSPLcom/android/internal/telephony/ISub;->requestEmbeddedSubscriptionInfoListRefresh()V +HSPLcom/android/internal/telephony/ISub;->setDataRoaming(II)I +HSPLcom/android/internal/telephony/ISub;->setDefaultDataSubId(I)V +HSPLcom/android/internal/telephony/ISub;->setDefaultSmsSubId(I)V +HSPLcom/android/internal/telephony/ISub;->setDefaultVoiceSubId(I)V +HSPLcom/android/internal/telephony/ISub;->setDisplayName(Ljava/lang/String;I)I +HSPLcom/android/internal/telephony/ISub;->setDisplayNameUsingSrc(Ljava/lang/String;IJ)I +HSPLcom/android/internal/telephony/ISub;->setDisplayNumber(Ljava/lang/String;I)I +HSPLcom/android/internal/telephony/ISub;->setIconTint(II)I +HSPLcom/android/internal/telephony/ISub;->setSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->checkCarrierPrivilegesForPackage(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getActivePhoneTypeForSlot(I)I +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDeviceId(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getImsServiceControllerAndListen(IILcom/android/ims/internal/IImsServiceFeatureListener;)Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1NumberForDisplay(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkCountryIsoForPhone(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVisualVoicemailPackageName(Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony$Stub;->()V +HSPLcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony; +HSPLcom/android/internal/telephony/ITelephony;->answerRingingCall()V +HSPLcom/android/internal/telephony/ITelephony;->answerRingingCallForSubscriber(I)V +HSPLcom/android/internal/telephony/ITelephony;->call(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephony;->canChangeDtmfToneLength()Z +HSPLcom/android/internal/telephony/ITelephony;->carrierActionReportDefaultNetworkStatus(IZ)V +HSPLcom/android/internal/telephony/ITelephony;->carrierActionSetMeteredApnsEnabled(IZ)V +HSPLcom/android/internal/telephony/ITelephony;->carrierActionSetRadioEnabled(IZ)V +HSPLcom/android/internal/telephony/ITelephony;->checkCarrierPrivilegesForPackage(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->checkCarrierPrivilegesForPackageAnyPhone(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->dial(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephony;->disableDataConnectivity()Z +HSPLcom/android/internal/telephony/ITelephony;->disableLocationUpdates()V +HSPLcom/android/internal/telephony/ITelephony;->disableLocationUpdatesForSubscriber(I)V +HSPLcom/android/internal/telephony/ITelephony;->disableVisualVoicemailSmsFilter(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/ITelephony;->enableDataConnectivity()Z +HSPLcom/android/internal/telephony/ITelephony;->enableLocationUpdates()V +HSPLcom/android/internal/telephony/ITelephony;->enableLocationUpdatesForSubscriber(I)V +HSPLcom/android/internal/telephony/ITelephony;->enableVideoCalling(Z)V +HSPLcom/android/internal/telephony/ITelephony;->enableVisualVoicemailSmsFilter(Ljava/lang/String;ILandroid/telephony/VisualVoicemailSmsFilterSettings;)V +HSPLcom/android/internal/telephony/ITelephony;->endCall()Z +HSPLcom/android/internal/telephony/ITelephony;->endCallForSubscriber(I)Z +HSPLcom/android/internal/telephony/ITelephony;->factoryReset(I)V +HSPLcom/android/internal/telephony/ITelephony;->getActivePhoneType()I +HSPLcom/android/internal/telephony/ITelephony;->getActivePhoneTypeForSlot(I)I +HSPLcom/android/internal/telephony/ITelephony;->getActiveVisualVoicemailSmsFilterSettings(I)Landroid/telephony/VisualVoicemailSmsFilterSettings; +HSPLcom/android/internal/telephony/ITelephony;->getAidForAppType(II)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getAllCellInfo(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getAllowedCarriers(I)Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getCalculatedPreferredNetworkType(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getCallState()I +HSPLcom/android/internal/telephony/ITelephony;->getCallStateForSlot(I)I +HSPLcom/android/internal/telephony/ITelephony;->getCarrierPackageNamesForIntentAndPhone(Landroid/content/Intent;I)Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getCarrierPrivilegeStatus(I)I +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriIconIndex(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriIconIndexForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriIconMode(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriIconModeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriText(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getCdmaEriTextForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getCdmaMdn(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getCdmaMin(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getCdmaPrlVersion(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getCellLocation(Ljava/lang/String;)Landroid/os/Bundle; +HSPLcom/android/internal/telephony/ITelephony;->getCellNetworkScanResults(I)Lcom/android/internal/telephony/CellNetworkScanResult; +HSPLcom/android/internal/telephony/ITelephony;->getClientRequestStats(Ljava/lang/String;I)Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getDataActivationState(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getDataActivity()I +HSPLcom/android/internal/telephony/ITelephony;->getDataEnabled(I)Z +HSPLcom/android/internal/telephony/ITelephony;->getDataNetworkType(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getDataNetworkTypeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getDataState()I +HSPLcom/android/internal/telephony/ITelephony;->getDefaultSim()I +HSPLcom/android/internal/telephony/ITelephony;->getDeviceId(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getDeviceSoftwareVersionForSlot(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getEmergencyCallbackMode(I)Z +HSPLcom/android/internal/telephony/ITelephony;->getEsn(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getForbiddenPlmns(II)[Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getImeiForSlot(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getImsServiceControllerAndListen(IILcom/android/ims/internal/IImsServiceFeatureListener;)Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/internal/telephony/ITelephony;->getLine1AlphaTagForDisplay(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getLine1NumberForDisplay(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getLocaleFromDefaultSim()Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getLteOnCdmaMode(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getLteOnCdmaModeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getMeidForSlot(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getMergedSubscriberIds(Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getNeighboringCellInfo(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getNetworkCountryIsoForPhone(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getNetworkType()I +HSPLcom/android/internal/telephony/ITelephony;->getNetworkTypeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getPackagesWithCarrierPrivileges()Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getPcscfAddress(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getPreferredNetworkType(I)I +HSPLcom/android/internal/telephony/ITelephony;->getRadioAccessFamily(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getServiceStateForSubscriber(ILjava/lang/String;)Landroid/telephony/ServiceState; +HSPLcom/android/internal/telephony/ITelephony;->getSignalStrength(I)Landroid/telephony/SignalStrength; +HSPLcom/android/internal/telephony/ITelephony;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I +HSPLcom/android/internal/telephony/ITelephony;->getTelephonyHistograms()Ljava/util/List; +HSPLcom/android/internal/telephony/ITelephony;->getTetherApnRequired()I +HSPLcom/android/internal/telephony/ITelephony;->getVisualVoicemailPackageName(Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->getVisualVoicemailSettings(Ljava/lang/String;I)Landroid/os/Bundle; +HSPLcom/android/internal/telephony/ITelephony;->getVisualVoicemailSmsFilterSettings(Ljava/lang/String;I)Landroid/telephony/VisualVoicemailSmsFilterSettings; +HSPLcom/android/internal/telephony/ITelephony;->getVoiceActivationState(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getVoiceMessageCount()I +HSPLcom/android/internal/telephony/ITelephony;->getVoiceMessageCountForSubscriber(I)I +HSPLcom/android/internal/telephony/ITelephony;->getVoiceNetworkTypeForSubscriber(ILjava/lang/String;)I +HSPLcom/android/internal/telephony/ITelephony;->getVoicemailRingtoneUri(Landroid/telecom/PhoneAccountHandle;)Landroid/net/Uri; +HSPLcom/android/internal/telephony/ITelephony;->getVtDataUsage(IZ)Landroid/net/NetworkStats; +HSPLcom/android/internal/telephony/ITelephony;->handlePinMmi(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->handlePinMmiForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->handleUssdRequest(ILjava/lang/String;Landroid/os/ResultReceiver;)V +HSPLcom/android/internal/telephony/ITelephony;->hasIccCard()Z +HSPLcom/android/internal/telephony/ITelephony;->hasIccCardUsingSlotIndex(I)Z +HSPLcom/android/internal/telephony/ITelephony;->iccCloseLogicalChannel(II)Z +HSPLcom/android/internal/telephony/ITelephony;->iccExchangeSimIO(IIIIIILjava/lang/String;)[B +HSPLcom/android/internal/telephony/ITelephony;->iccOpenLogicalChannel(ILjava/lang/String;Ljava/lang/String;I)Landroid/telephony/IccOpenLogicalChannelResponse; +HSPLcom/android/internal/telephony/ITelephony;->iccTransmitApduBasicChannel(IIIIIILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->iccTransmitApduLogicalChannel(IIIIIIILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->invokeOemRilRequestRaw([B[B)I +HSPLcom/android/internal/telephony/ITelephony;->isConcurrentVoiceAndDataAllowed(I)Z +HSPLcom/android/internal/telephony/ITelephony;->isDataConnectivityPossible(I)Z +HSPLcom/android/internal/telephony/ITelephony;->isHearingAidCompatibilitySupported()Z +HSPLcom/android/internal/telephony/ITelephony;->isIdle(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isIdleForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isImsRegistered()Z +HSPLcom/android/internal/telephony/ITelephony;->isOffhook(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isOffhookForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isRadioOn(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isRadioOnForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isRinging(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isRingingForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isTtyModeSupported()Z +HSPLcom/android/internal/telephony/ITelephony;->isVideoCallingEnabled(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->isVideoTelephonyAvailable()Z +HSPLcom/android/internal/telephony/ITelephony;->isVoicemailVibrationEnabled(Landroid/telecom/PhoneAccountHandle;)Z +HSPLcom/android/internal/telephony/ITelephony;->isVolteAvailable()Z +HSPLcom/android/internal/telephony/ITelephony;->isWifiCallingAvailable()Z +HSPLcom/android/internal/telephony/ITelephony;->isWorldPhone()Z +HSPLcom/android/internal/telephony/ITelephony;->needMobileRadioShutdown()Z +HSPLcom/android/internal/telephony/ITelephony;->needsOtaServiceProvisioning()Z +HSPLcom/android/internal/telephony/ITelephony;->nvReadItem(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->nvResetConfig(I)Z +HSPLcom/android/internal/telephony/ITelephony;->nvWriteCdmaPrl([B)Z +HSPLcom/android/internal/telephony/ITelephony;->nvWriteItem(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->requestModemActivityInfo(Landroid/os/ResultReceiver;)V +HSPLcom/android/internal/telephony/ITelephony;->requestNetworkScan(ILandroid/telephony/NetworkScanRequest;Landroid/os/Messenger;Landroid/os/IBinder;)I +HSPLcom/android/internal/telephony/ITelephony;->sendDialerSpecialCode(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephony;->sendEnvelopeWithStatus(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/ITelephony;->sendVisualVoicemailSmsForSubscriber(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Landroid/app/PendingIntent;)V +HSPLcom/android/internal/telephony/ITelephony;->setAllowedCarriers(ILjava/util/List;)I +HSPLcom/android/internal/telephony/ITelephony;->setCellInfoListRate(I)V +HSPLcom/android/internal/telephony/ITelephony;->setDataActivationState(II)V +HSPLcom/android/internal/telephony/ITelephony;->setDataEnabled(IZ)V +HSPLcom/android/internal/telephony/ITelephony;->setImsRegistrationState(Z)V +HSPLcom/android/internal/telephony/ITelephony;->setLine1NumberForDisplayForSubscriber(ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->setNetworkSelectionModeAutomatic(I)V +HSPLcom/android/internal/telephony/ITelephony;->setNetworkSelectionModeManual(ILcom/android/internal/telephony/OperatorInfo;Z)Z +HSPLcom/android/internal/telephony/ITelephony;->setOperatorBrandOverride(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->setPolicyDataEnabled(ZI)V +HSPLcom/android/internal/telephony/ITelephony;->setPreferredNetworkType(II)Z +HSPLcom/android/internal/telephony/ITelephony;->setRadio(Z)Z +HSPLcom/android/internal/telephony/ITelephony;->setRadioCapability([Landroid/telephony/RadioAccessFamily;)V +HSPLcom/android/internal/telephony/ITelephony;->setRadioForSubscriber(IZ)Z +HSPLcom/android/internal/telephony/ITelephony;->setRadioPower(Z)Z +HSPLcom/android/internal/telephony/ITelephony;->setRoamingOverride(ILjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Z +HSPLcom/android/internal/telephony/ITelephony;->setSimPowerStateForSlot(II)V +HSPLcom/android/internal/telephony/ITelephony;->setVoiceActivationState(II)V +HSPLcom/android/internal/telephony/ITelephony;->setVoiceMailNumber(ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->setVoicemailRingtoneUri(Ljava/lang/String;Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;)V +HSPLcom/android/internal/telephony/ITelephony;->setVoicemailVibrationEnabled(Ljava/lang/String;Landroid/telecom/PhoneAccountHandle;Z)V +HSPLcom/android/internal/telephony/ITelephony;->shutdownMobileRadios()V +HSPLcom/android/internal/telephony/ITelephony;->silenceRinger()V +HSPLcom/android/internal/telephony/ITelephony;->stopNetworkScan(II)V +HSPLcom/android/internal/telephony/ITelephony;->supplyPin(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->supplyPinForSubscriber(ILjava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->supplyPinReportResult(Ljava/lang/String;)[I +HSPLcom/android/internal/telephony/ITelephony;->supplyPinReportResultForSubscriber(ILjava/lang/String;)[I +HSPLcom/android/internal/telephony/ITelephony;->supplyPuk(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->supplyPukForSubscriber(ILjava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ITelephony;->supplyPukReportResult(Ljava/lang/String;Ljava/lang/String;)[I +HSPLcom/android/internal/telephony/ITelephony;->supplyPukReportResultForSubscriber(ILjava/lang/String;Ljava/lang/String;)[I +HSPLcom/android/internal/telephony/ITelephony;->toggleRadioOnOff()V +HSPLcom/android/internal/telephony/ITelephony;->toggleRadioOnOffForSubscriber(I)V +HSPLcom/android/internal/telephony/ITelephony;->updateServiceLocation()V +HSPLcom/android/internal/telephony/ITelephony;->updateServiceLocationForSubscriber(I)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataActivityForSubscriber(II)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyMessageWaitingChangedForPhoneId(IIZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOemHookRawEventForSubscriber(I[B)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOtaspChanged(I)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySimActivationStateChangedForPhoneId(IIII)V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySubscriptionInfoChanged()V +HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephonyRegistry; +HSPLcom/android/internal/telephony/ITelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCallForwardingChanged(Z)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCallState(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCallStateForPhoneId(IIILjava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCarrierNetworkChange(Z)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCellInfo(Ljava/util/List;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCellInfoForSubscriber(ILjava/util/List;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCellLocation(Landroid/os/Bundle;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataActivity(I)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataActivityForSubscriber(II)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataConnection(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataConnectionFailedForSubscriber(ILjava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyDisconnectCause(II)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyOemHookRawEventForSubscriber(I[B)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyOtaspChanged(I)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyPreciseCallState(III)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyPreciseDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifySubscriptionInfoChanged()V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->notifyVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V +HSPLcom/android/internal/telephony/ITelephonyRegistry;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V +HSPLcom/android/internal/telephony/IccCard;->changeIccFdnPassword(Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->changeIccLockPassword(Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->getIccFdnAvailable()Z +HSPLcom/android/internal/telephony/IccCard;->getIccFdnEnabled()Z +HSPLcom/android/internal/telephony/IccCard;->getIccFileHandler()Lcom/android/internal/telephony/uicc/IccFileHandler; +HSPLcom/android/internal/telephony/IccCard;->getIccLockEnabled()Z +HSPLcom/android/internal/telephony/IccCard;->getIccPin2Blocked()Z +HSPLcom/android/internal/telephony/IccCard;->getIccPuk2Blocked()Z +HSPLcom/android/internal/telephony/IccCard;->getIccRecords()Lcom/android/internal/telephony/uicc/IccRecords; +HSPLcom/android/internal/telephony/IccCard;->getServiceProviderName()Ljava/lang/String; +HSPLcom/android/internal/telephony/IccCard;->getState()Lcom/android/internal/telephony/IccCardConstants$State; +HSPLcom/android/internal/telephony/IccCard;->hasIccCard()Z +HSPLcom/android/internal/telephony/IccCard;->isApplicationOnIcc(Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;)Z +HSPLcom/android/internal/telephony/IccCard;->registerForAbsent(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/IccCard;->registerForLocked(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/IccCard;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/IccCard;->setIccFdnEnabled(ZLjava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->setIccLockEnabled(ZLjava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->supplyNetworkDepersonalization(Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->supplyPin(Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->supplyPin2(Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->supplyPuk(Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->supplyPuk2(Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/IccCard;->unregisterForAbsent(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/IccCard;->unregisterForLocked(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/IccCard;->unregisterForNetworkLocked(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/IccCardConstants$State;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/IccCardConstants$State;->values()[Lcom/android/internal/telephony/IccCardConstants$State; +HSPLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;)V +HSPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->updateIccRecords(Lcom/android/internal/telephony/uicc/IccRecords;)V +HSPLcom/android/internal/telephony/IccProvider;->()V +HSPLcom/android/internal/telephony/IccProvider;->getType(Landroid/net/Uri;)Ljava/lang/String; +HSPLcom/android/internal/telephony/IccProvider;->onCreate()Z +HSPLcom/android/internal/telephony/IccSmsInterfaceManager$1;->(Lcom/android/internal/telephony/IccSmsInterfaceManager;)V +HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->(Lcom/android/internal/telephony/IccSmsInterfaceManager;)V +HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->(Lcom/android/internal/telephony/IccSmsInterfaceManager;)V +HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/ImsSMSDispatcher;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/SmsUsageMonitor;)V +HSPLcom/android/internal/telephony/ImsSMSDispatcher;->getFormat()Ljava/lang/String; +HSPLcom/android/internal/telephony/ImsSMSDispatcher;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/ImsSMSDispatcher;->setImsSmsFormat(I)V +HSPLcom/android/internal/telephony/ImsSMSDispatcher;->updateImsInfo(Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$1;->()V +HSPLcom/android/internal/telephony/InboundSmsHandler$DefaultState;->(Lcom/android/internal/telephony/InboundSmsHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$DefaultState;->(Lcom/android/internal/telephony/InboundSmsHandler;Lcom/android/internal/telephony/InboundSmsHandler$DefaultState;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$DeliveringState;->(Lcom/android/internal/telephony/InboundSmsHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$DeliveringState;->(Lcom/android/internal/telephony/InboundSmsHandler;Lcom/android/internal/telephony/InboundSmsHandler$DeliveringState;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->(Lcom/android/internal/telephony/InboundSmsHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->(Lcom/android/internal/telephony/InboundSmsHandler;Lcom/android/internal/telephony/InboundSmsHandler$IdleState;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->enter()V +HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->processMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/InboundSmsHandler$NewMessageNotificationActionReceiver;->()V +HSPLcom/android/internal/telephony/InboundSmsHandler$NewMessageNotificationActionReceiver;->(Lcom/android/internal/telephony/InboundSmsHandler$NewMessageNotificationActionReceiver;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->(Lcom/android/internal/telephony/InboundSmsHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->(Lcom/android/internal/telephony/InboundSmsHandler;Lcom/android/internal/telephony/InboundSmsHandler$StartupState;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->enter()V +HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->processMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->(Lcom/android/internal/telephony/InboundSmsHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->(Lcom/android/internal/telephony/InboundSmsHandler;Lcom/android/internal/telephony/InboundSmsHandler$WaitingState;)V +HSPLcom/android/internal/telephony/InboundSmsHandler;->-get2(Lcom/android/internal/telephony/InboundSmsHandler;)Lcom/android/internal/telephony/InboundSmsHandler$IdleState; +HSPLcom/android/internal/telephony/InboundSmsHandler;->-get4(Lcom/android/internal/telephony/InboundSmsHandler;)Landroid/os/PowerManager$WakeLock; +HSPLcom/android/internal/telephony/InboundSmsHandler;->-wrap9(Lcom/android/internal/telephony/InboundSmsHandler;I)V +HSPLcom/android/internal/telephony/InboundSmsHandler;->(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/CellBroadcastHandler;)V +HSPLcom/android/internal/telephony/InboundSmsHandler;->getWakeLockTimeout()I +HSPLcom/android/internal/telephony/InboundSmsHandler;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/InboundSmsHandler;->registerNewMessageNotificationActionHandler(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/InboundSmsHandler;->setWakeLockTimeout(I)V +HSPLcom/android/internal/telephony/IntRangeManager;->()V +HSPLcom/android/internal/telephony/IntentBroadcaster$1;->(Lcom/android/internal/telephony/IntentBroadcaster;)V +HSPLcom/android/internal/telephony/IntentBroadcaster;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/IntentBroadcaster;->broadcastStickyIntent(Landroid/content/Intent;I)V +HSPLcom/android/internal/telephony/IntentBroadcaster;->getInstance()Lcom/android/internal/telephony/IntentBroadcaster; +HSPLcom/android/internal/telephony/IntentBroadcaster;->getInstance(Landroid/content/Context;)Lcom/android/internal/telephony/IntentBroadcaster; +HSPLcom/android/internal/telephony/IntentBroadcaster;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/NetworkScanRequestTracker$1;->(Lcom/android/internal/telephony/NetworkScanRequestTracker;)V +HSPLcom/android/internal/telephony/NetworkScanRequestTracker$NetworkScanRequestScheduler;->(Lcom/android/internal/telephony/NetworkScanRequestTracker;)V +HSPLcom/android/internal/telephony/NetworkScanRequestTracker$NetworkScanRequestScheduler;->(Lcom/android/internal/telephony/NetworkScanRequestTracker;Lcom/android/internal/telephony/NetworkScanRequestTracker$NetworkScanRequestScheduler;)V +HSPLcom/android/internal/telephony/NetworkScanRequestTracker;->()V +HSPLcom/android/internal/telephony/OemHookIndication;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/OemHookIndication;->oemHookRaw(ILjava/util/ArrayList;)V +HSPLcom/android/internal/telephony/OemHookResponse;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/Phone$1;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/Phone;->(Ljava/lang/String;Lcom/android/internal/telephony/PhoneNotifier;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Z)V +HSPLcom/android/internal/telephony/Phone;->(Ljava/lang/String;Lcom/android/internal/telephony/PhoneNotifier;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;ZILcom/android/internal/telephony/TelephonyComponentFactory;)V +HSPLcom/android/internal/telephony/Phone;->checkCorrectThread(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Phone;->getActionAttached()Ljava/lang/String; +HSPLcom/android/internal/telephony/Phone;->getActionDetached()Ljava/lang/String; +HSPLcom/android/internal/telephony/Phone;->getActiveApnHost(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/Phone;->getCarrierActionAgent()Lcom/android/internal/telephony/CarrierActionAgent; +HSPLcom/android/internal/telephony/Phone;->getCarrierSignalAgent()Lcom/android/internal/telephony/CarrierSignalAgent; +HSPLcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context; +HSPLcom/android/internal/telephony/Phone;->getHandler()Landroid/os/Handler; +HSPLcom/android/internal/telephony/Phone;->getIccRecords()Lcom/android/internal/telephony/uicc/IccRecords; +HSPLcom/android/internal/telephony/Phone;->getImsPhone()Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/Phone;->getLocaleFromCarrierProperties(Landroid/content/Context;)Ljava/util/Locale; +HSPLcom/android/internal/telephony/Phone;->getMessageWaitingIndicator()Z +HSPLcom/android/internal/telephony/Phone;->getPhoneId()I +HSPLcom/android/internal/telephony/Phone;->getPhoneName()Ljava/lang/String; +HSPLcom/android/internal/telephony/Phone;->getSignalStrength()Landroid/telephony/SignalStrength; +HSPLcom/android/internal/telephony/Phone;->getSimulatedRadioControl()Lcom/android/internal/telephony/test/SimulatedRadioControl; +HSPLcom/android/internal/telephony/Phone;->getSubId()I +HSPLcom/android/internal/telephony/Phone;->getUnitTestMode()Z +HSPLcom/android/internal/telephony/Phone;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/Phone;->isDataAllowed()Z +HSPLcom/android/internal/telephony/Phone;->isInEcm()Z +HSPLcom/android/internal/telephony/Phone;->isShuttingDown()Z +HSPLcom/android/internal/telephony/Phone;->isVideoEnabled()Z +HSPLcom/android/internal/telephony/Phone;->isWifiCallingEnabled()Z +HSPLcom/android/internal/telephony/Phone;->notifyDataActivationStateChanged(I)V +HSPLcom/android/internal/telephony/Phone;->notifyDataActivity()V +HSPLcom/android/internal/telephony/Phone;->notifyDataConnection(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/Phone;->notifyDataConnection(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V +HSPLcom/android/internal/telephony/Phone;->notifyForVideoCapabilityChanged(Z)V +HSPLcom/android/internal/telephony/Phone;->notifyMessageWaitingIndicator()V +HSPLcom/android/internal/telephony/Phone;->notifyOtaspChanged(I)V +HSPLcom/android/internal/telephony/Phone;->notifyServiceStateChangedP(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/Phone;->notifySignalStrength()V +HSPLcom/android/internal/telephony/Phone;->notifyVoiceActivationStateChanged(I)V +HSPLcom/android/internal/telephony/Phone;->radioCapabilityUpdated(Lcom/android/internal/telephony/RadioCapability;)V +HSPLcom/android/internal/telephony/Phone;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForCdmaOtaStatusChange(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForDataEnabledChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForDisconnect(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForEcmTimerReset(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForEmergencyCallToggle(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForIncomingRing(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForMmiComplete(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForMmiInitiate(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForNewRingingConnection(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForOnHoldTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForPreciseCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForRadioCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForResendIncallMute(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForServiceStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForSuppServiceFailed(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForUnknownConnection(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->registerForVideoCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->setOnPostDialCharacter(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/Phone;->setPreferredNetworkTypeIfSimLoaded()V +HSPLcom/android/internal/telephony/Phone;->setTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/Phone;->setUnitTestMode(Z)V +HSPLcom/android/internal/telephony/Phone;->setVoiceMessageCount(I)V +HSPLcom/android/internal/telephony/Phone;->startLceAfterRadioIsAvailable()V +HSPLcom/android/internal/telephony/Phone;->startMonitoringImsService()V +HSPLcom/android/internal/telephony/Phone;->unregisterForNewRingingConnection(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Phone;->unregisterForUnknownConnection(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Phone;->unregisterForVideoCapabilityChanged(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/Phone;->updateDataConnectionTracker()V +HSPLcom/android/internal/telephony/Phone;->updateImsPhone()V +HSPLcom/android/internal/telephony/PhoneConstantConversions;->-getcom-android-internal-telephony-PhoneConstants$DataStateSwitchesValues()[I +HSPLcom/android/internal/telephony/PhoneConstantConversions;->convertDataState(Lcom/android/internal/telephony/PhoneConstants$DataState;)I +HSPLcom/android/internal/telephony/PhoneConstants$DataState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/PhoneConstants$DataState;->values()[Lcom/android/internal/telephony/PhoneConstants$DataState; +HSPLcom/android/internal/telephony/PhoneConstants$State;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/PhoneFactory;->getDefaultPhone()Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/PhoneFactory;->getImsResolver()Lcom/android/internal/telephony/ims/ImsResolver; +HSPLcom/android/internal/telephony/PhoneFactory;->getPhone(I)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/PhoneFactory;->getPhones()[Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/PhoneFactory;->makeDefaultPhone(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/PhoneFactory;->makeDefaultPhones(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/PhoneFactory;->makeImsPhone(Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;->values()[Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState; +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyCallForwardingChanged(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyCellInfo(Lcom/android/internal/telephony/Phone;Ljava/util/List;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyCellLocation(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyDataActivationStateChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyDataActivity(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyDataConnectionFailed(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyDisconnectCause(II)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyMessageWaitingChanged(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyOemHookRawEventForSubscriber(I[B)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyOtaspChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyPhoneState(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyPreciseCallState(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyPreciseDataConnectionFailed(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyServiceState(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifySignalStrength(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyVoLteServiceStateChanged(Lcom/android/internal/telephony/Phone;Landroid/telephony/VoLteServiceState;)V +HSPLcom/android/internal/telephony/PhoneNotifier;->notifyVoiceActivationStateChanged(Lcom/android/internal/telephony/Phone;I)V +HSPLcom/android/internal/telephony/PhoneSubInfoController;->(Landroid/content/Context;[Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneSubInfoController;->checkReadPhoneNumber(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/PhoneSubInfoController;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/PhoneSubInfoController;->getPhone(I)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/PhoneSwitcher$1;->(Lcom/android/internal/telephony/PhoneSwitcher;)V +HSPLcom/android/internal/telephony/PhoneSwitcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/PhoneSwitcher$2;->(Lcom/android/internal/telephony/PhoneSwitcher;)V +HSPLcom/android/internal/telephony/PhoneSwitcher$2;->onSubscriptionsChanged()V +HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneState;->()V +HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneState;->(Lcom/android/internal/telephony/PhoneSwitcher$PhoneState;)V +HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneSwitcherNetworkRequestListener;->(Landroid/os/Looper;Landroid/content/Context;Landroid/net/NetworkCapabilities;Lcom/android/internal/telephony/PhoneSwitcher;)V +HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneSwitcherNetworkRequestListener;->needNetworkFor(Landroid/net/NetworkRequest;I)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->(IILandroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;Landroid/os/Looper;Lcom/android/internal/telephony/ITelephonyRegistry;[Lcom/android/internal/telephony/CommandsInterface;[Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->deactivate(I)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->isEmergency()Z +HSPLcom/android/internal/telephony/PhoneSwitcher;->isPhoneActive(I)Z +HSPLcom/android/internal/telephony/PhoneSwitcher;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->onEvaluate(ZLjava/lang/String;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->onRequestNetwork(Landroid/net/NetworkRequest;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->phoneIdForRequest(Landroid/net/NetworkRequest;)I +HSPLcom/android/internal/telephony/PhoneSwitcher;->registerForActivePhoneSwitch(ILandroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/PhoneSwitcher;->validatePhoneId(I)V +HSPLcom/android/internal/telephony/ProxyController$1;->(Lcom/android/internal/telephony/ProxyController;)V +HSPLcom/android/internal/telephony/ProxyController;->(Landroid/content/Context;[Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/uicc/UiccController;[Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneSwitcher;)V +HSPLcom/android/internal/telephony/ProxyController;->clearTransaction()V +HSPLcom/android/internal/telephony/ProxyController;->getInstance()Lcom/android/internal/telephony/ProxyController; +HSPLcom/android/internal/telephony/ProxyController;->getInstance(Landroid/content/Context;[Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/uicc/UiccController;[Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneSwitcher;)Lcom/android/internal/telephony/ProxyController; +HSPLcom/android/internal/telephony/ProxyController;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RIL$RadioProxyDeathRecipient;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/RIL$RilHandler;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/RIL$RilHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->-wrap2(Lcom/android/internal/telephony/RIL;I)Z +HSPLcom/android/internal/telephony/RIL;->(Landroid/content/Context;IILjava/lang/Integer;)V +HSPLcom/android/internal/telephony/RIL;->acquireWakeLock(Lcom/android/internal/telephony/RILRequest;I)V +HSPLcom/android/internal/telephony/RIL;->addRequest(Lcom/android/internal/telephony/RILRequest;)V +HSPLcom/android/internal/telephony/RIL;->addToRilHistogram(Lcom/android/internal/telephony/RILRequest;)V +HSPLcom/android/internal/telephony/RIL;->arrayListToPrimitiveArray(Ljava/util/ArrayList;)[B +HSPLcom/android/internal/telephony/RIL;->clearWakeLock(I)Z +HSPLcom/android/internal/telephony/RIL;->convertHalHwConfigList(Ljava/util/ArrayList;Lcom/android/internal/telephony/RIL;)Ljava/util/ArrayList; +HSPLcom/android/internal/telephony/RIL;->convertHalRadioCapability(Landroid/hardware/radio/V1_0/RadioCapability;Lcom/android/internal/telephony/RIL;)Lcom/android/internal/telephony/RadioCapability; +HSPLcom/android/internal/telephony/RIL;->convertHalSignalStrength(Landroid/hardware/radio/V1_0/SignalStrength;)Landroid/telephony/SignalStrength; +HSPLcom/android/internal/telephony/RIL;->decrementWakeLock(Lcom/android/internal/telephony/RILRequest;)V +HSPLcom/android/internal/telephony/RIL;->findAndRemoveRequestFromList(I)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RIL;->getBasebandVersion(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getCdmaSubscriptionSource(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getCurrentCalls(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getDataRegistrationState(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getDeafultWorkSourceIfInvalid(Landroid/os/WorkSource;)Landroid/os/WorkSource; +HSPLcom/android/internal/telephony/RIL;->getDeviceIdentity(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getHardwareConfig(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getIccCardStatus(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getImsRegistrationState(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getNetworkSelectionMode(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getOemHookProxy(Landroid/os/Message;)Landroid/hardware/radio/deprecated/V1_0/IOemHook; +HSPLcom/android/internal/telephony/RIL;->getOperator(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getRadioCapability(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getRadioProxy(Landroid/os/Message;)Landroid/hardware/radio/V1_0/IRadio; +HSPLcom/android/internal/telephony/RIL;->getSignalStrength(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getVoiceRadioTechnology(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getVoiceRegistrationState(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->getWorkSourceClientId(Landroid/os/WorkSource;)Ljava/lang/String; +HSPLcom/android/internal/telephony/RIL;->notifyRegistrantsRilConnectionChanged(I)V +HSPLcom/android/internal/telephony/RIL;->obtainRequest(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RIL;->processIndication(I)V +HSPLcom/android/internal/telephony/RIL;->processResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RIL;->processResponseDone(Lcom/android/internal/telephony/RILRequest;Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/RIL;->requestToString(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/RIL;->responseToString(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/RIL;->retToString(ILjava/lang/Object;)Ljava/lang/String; +HSPLcom/android/internal/telephony/RIL;->riljLog(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RIL;->riljLogv(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RIL;->sendAck()V +HSPLcom/android/internal/telephony/RIL;->sendDeviceState(IZLandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->setCdmaSubscriptionSource(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->setCellInfoListRate()V +HSPLcom/android/internal/telephony/RIL;->setCellInfoListRate(ILandroid/os/Message;Landroid/os/WorkSource;)V +HSPLcom/android/internal/telephony/RIL;->setOnNITZTime(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/RIL;->setPhoneType(I)V +HSPLcom/android/internal/telephony/RIL;->setRadioPower(ZLandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->setUnsolResponseFilter(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->startLceService(IZLandroid/os/Message;)V +HSPLcom/android/internal/telephony/RIL;->unsljLog(I)V +HSPLcom/android/internal/telephony/RIL;->unsljLogMore(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/RIL;->unsljLogvRet(ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/RILRequest;->()V +HSPLcom/android/internal/telephony/RILRequest;->obtain(ILandroid/os/Message;)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RILRequest;->obtain(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest; +HSPLcom/android/internal/telephony/RILRequest;->onError(ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/RILRequest;->release()V +HSPLcom/android/internal/telephony/RILRequest;->serialString()Ljava/lang/String; +HSPLcom/android/internal/telephony/RadioCapability;->(IIIILjava/lang/String;I)V +HSPLcom/android/internal/telephony/RadioCapability;->getLogicalModemUuid()Ljava/lang/String; +HSPLcom/android/internal/telephony/RadioCapability;->getPhase()I +HSPLcom/android/internal/telephony/RadioCapability;->getRadioAccessFamily()I +HSPLcom/android/internal/telephony/RadioCapability;->getSession()I +HSPLcom/android/internal/telephony/RadioCapability;->getStatus()I +HSPLcom/android/internal/telephony/RadioCapability;->getVersion()I +HSPLcom/android/internal/telephony/RadioCapability;->toString()Ljava/lang/String; +HSPLcom/android/internal/telephony/RadioIndication;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/RadioIndication;->currentSignalStrength(ILandroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioIndication;->getRadioStateFromInt(I)Lcom/android/internal/telephony/CommandsInterface$RadioState; +HSPLcom/android/internal/telephony/RadioIndication;->networkStateChanged(I)V +HSPLcom/android/internal/telephony/RadioIndication;->radioStateChanged(II)V +HSPLcom/android/internal/telephony/RadioIndication;->rilConnected(I)V +HSPLcom/android/internal/telephony/RadioResponse;->(Lcom/android/internal/telephony/RIL;)V +HSPLcom/android/internal/telephony/RadioResponse;->getBasebandVersionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RadioResponse;->getCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLcom/android/internal/telephony/RadioResponse;->getCurrentCallsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->getDataRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/DataRegStateResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->getDeviceIdentityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RadioResponse;->getHardwareConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->getIccCardStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V +HSPLcom/android/internal/telephony/RadioResponse;->getImsRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ZI)V +HSPLcom/android/internal/telephony/RadioResponse;->getNetworkSelectionModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Z)V +HSPLcom/android/internal/telephony/RadioResponse;->getOperatorResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RadioResponse;->getRadioCapabilityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/RadioCapability;)V +HSPLcom/android/internal/telephony/RadioResponse;->getSignalStrengthResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRadioTechnologyResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V +HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/VoiceRegStateResult;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseCurrentCalls(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseHardwareConfig(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseIccCardStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseIntArrayList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseInts(Landroid/hardware/radio/V1_0/RadioResponseInfo;[I)V +HSPLcom/android/internal/telephony/RadioResponse;->responseLceStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseSignalStrength(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseString(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseStringArrayList(Lcom/android/internal/telephony/RIL;Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseStrings(Landroid/hardware/radio/V1_0/RadioResponseInfo;[Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RadioResponse;->responseVoid(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->sendDeviceStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->sendMessageResponse(Landroid/os/Message;Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/RadioResponse;->setCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->setCellInfoListRateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->setIndicationFilterResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->setRadioPowerResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V +HSPLcom/android/internal/telephony/RadioResponse;->startLceServiceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V +HSPLcom/android/internal/telephony/RatRatcheter$1;->(Lcom/android/internal/telephony/RatRatcheter;)V +HSPLcom/android/internal/telephony/RatRatcheter;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/RatRatcheter;->ratchetRat(II)I +HSPLcom/android/internal/telephony/RatRatcheter;->ratchetRat(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/RatRatcheter;->resetRatFamilyMap()V +HSPLcom/android/internal/telephony/RestrictedState;->()V +HSPLcom/android/internal/telephony/RestrictedState;->isPsRestricted()Z +HSPLcom/android/internal/telephony/RestrictedState;->setCsEmergencyRestricted(Z)V +HSPLcom/android/internal/telephony/RestrictedState;->setCsNormalRestricted(Z)V +HSPLcom/android/internal/telephony/RestrictedState;->setPsRestricted(Z)V +HSPLcom/android/internal/telephony/RetryManager;->(Lcom/android/internal/telephony/Phone;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/RetryManager;->getWaitingApns()Ljava/util/ArrayList; +HSPLcom/android/internal/telephony/RilWakelockInfo;->(IIIJ)V +HSPLcom/android/internal/telephony/RilWakelockInfo;->getRilRequestSent()I +HSPLcom/android/internal/telephony/RilWakelockInfo;->getTokenNumber()I +HSPLcom/android/internal/telephony/RilWakelockInfo;->getWakelockTimeAttributedToClient()J +HSPLcom/android/internal/telephony/RilWakelockInfo;->setResponseTime(J)V +HSPLcom/android/internal/telephony/RilWakelockInfo;->updateConcurrentRequests(IJ)V +HSPLcom/android/internal/telephony/RilWakelockInfo;->updateTime(J)V +HSPLcom/android/internal/telephony/RilWakelockInfo;->validateConcurrentRequests(I)I +HSPLcom/android/internal/telephony/SMSDispatcher$SettingsObserver;->(Landroid/os/Handler;Ljava/util/concurrent/atomic/AtomicInteger;Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SMSDispatcher$SettingsObserver;->onChange(Z)V +HSPLcom/android/internal/telephony/SMSDispatcher;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsUsageMonitor;Lcom/android/internal/telephony/ImsSMSDispatcher;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$1;->(Lcom/android/internal/telephony/ServiceStateTracker;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$2;->(Lcom/android/internal/telephony/ServiceStateTracker;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$3;->(Lcom/android/internal/telephony/ServiceStateTracker;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;->(Lcom/android/internal/telephony/ServiceStateTracker;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;->(Lcom/android/internal/telephony/ServiceStateTracker;Lcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;)V +HSPLcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;->onSubscriptionsChanged()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->-get4(Lcom/android/internal/telephony/ServiceStateTracker;)Lcom/android/internal/telephony/GsmCdmaPhone; +HSPLcom/android/internal/telephony/ServiceStateTracker;->-getcom-android-internal-telephony-CommandsInterface$RadioStateSwitchesValues()[I +HSPLcom/android/internal/telephony/ServiceStateTracker;->(Lcom/android/internal/telephony/GsmCdmaPhone;Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->alwaysOnHomeNetwork(Landroid/os/BaseBundle;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->cancelPollState()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->getCombinedRegState()I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getCurrentDataConnectionState()I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getDesiredPowerState()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->getLteEarfcn(Landroid/hardware/radio/V1_0/DataRegStateResult;)I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getPhoneId()I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getPowerStateFromCarrier()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->getRegStateFromHalRegState(I)I +HSPLcom/android/internal/telephony/ServiceStateTracker;->getSignalStrength()Landroid/telephony/SignalStrength; +HSPLcom/android/internal/telephony/ServiceStateTracker;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication; +HSPLcom/android/internal/telephony/ServiceStateTracker;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->handlePollStateResult(ILandroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->handlePollStateResultMessage(ILandroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->isDeviceShuttingDown()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isGprsConsistent(II)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isInNetwork(Landroid/os/BaseBundle;Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isInvalidOperatorNumeric(Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isMinInfoReady()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isNonRoamingInGsmNetwork(Landroid/os/BaseBundle;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isRadioOn()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->isRoamingInGsmNetwork(Landroid/os/BaseBundle;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->logPhoneTypeChange()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->modemTriggeredPollState()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->notifyDataRegStateRilRadioTechnologyChanged()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->notifySignalStrength()Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->onUpdateIccAvailability()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->pollState(Z)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->pollStateDone()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->processCellLocationInfo(Landroid/telephony/CellLocation;Landroid/hardware/radio/V1_0/VoiceRegStateResult;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->queueNextSignalStrengthPoll()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->regCodeIsRoaming(I)Z +HSPLcom/android/internal/telephony/ServiceStateTracker;->regCodeToServiceState(I)I +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataConnectionAttached(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataConnectionDetached(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRegStateOrRatChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRoamingOff(Landroid/os/Handler;ILjava/lang/Object;Z)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRoamingOn(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForNetworkAttached(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForNetworkDetached(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForPsRestrictedDisabled(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForPsRestrictedEnabled(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->resetServiceStateInIwlanMode()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->setPowerStateToDesired()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->setRoamingType(Landroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->setSignalStrengthDefaultValues()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->unregisterForDataRoamingOff(Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateCarrierMccMncConfiguration(Ljava/lang/String;Ljava/lang/String;Landroid/content/Context;)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameFromEri()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updatePhoneType()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateRoamingState()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateServiceStateLteEarfcnBoost(Landroid/telephony/ServiceState;I)V +HSPLcom/android/internal/telephony/ServiceStateTracker;->updateSpnDisplay()V +HSPLcom/android/internal/telephony/ServiceStateTracker;->useDataRegStateForDataOnlyDevices()V +HSPLcom/android/internal/telephony/SettingsObserver;->(Landroid/content/Context;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/SettingsObserver;->observe(Landroid/net/Uri;I)V +HSPLcom/android/internal/telephony/SettingsObserver;->unobserve()V +HSPLcom/android/internal/telephony/SimActivationTracker$1;->(Lcom/android/internal/telephony/SimActivationTracker;)V +HSPLcom/android/internal/telephony/SimActivationTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/SimActivationTracker;->-get0()Z +HSPLcom/android/internal/telephony/SimActivationTracker;->-wrap0(Lcom/android/internal/telephony/SimActivationTracker;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SimActivationTracker;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/SimActivationTracker;->isValidActivationState(I)Z +HSPLcom/android/internal/telephony/SimActivationTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SimActivationTracker;->setDataActivationState(I)V +HSPLcom/android/internal/telephony/SimActivationTracker;->setVoiceActivationState(I)V +HSPLcom/android/internal/telephony/SimActivationTracker;->toString(I)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-get6(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-get7(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;)I +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set0(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set1(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set2(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set3(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set4(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set5(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->-set6(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->isComplete()Z +HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SmsApplication;->getApplication(Landroid/content/Context;ZI)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData; +HSPLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionInternal(Landroid/content/Context;I)Ljava/util/Collection; +HSPLcom/android/internal/telephony/SmsApplication;->getApplicationForPackage(Ljava/util/Collection;Ljava/lang/String;)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData; +HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName; +HSPLcom/android/internal/telephony/SmsApplication;->getIncomingUserId(Landroid/content/Context;)I +HSPLcom/android/internal/telephony/SmsApplication;->initSmsPackageMonitor(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SmsBroadcastUndelivered$1;->(Lcom/android/internal/telephony/SmsBroadcastUndelivered;)V +HSPLcom/android/internal/telephony/SmsBroadcastUndelivered;->(Landroid/content/Context;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;)V +HSPLcom/android/internal/telephony/SmsBroadcastUndelivered;->initialize(Landroid/content/Context;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;)V +HSPLcom/android/internal/telephony/SmsStorageMonitor$1;->(Lcom/android/internal/telephony/SmsStorageMonitor;)V +HSPLcom/android/internal/telephony/SmsStorageMonitor;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/SmsStorageMonitor;->createWakelock()V +HSPLcom/android/internal/telephony/SmsStorageMonitor;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/SmsUsageMonitor$SettingsObserver;->(Landroid/os/Handler;Landroid/content/Context;Ljava/util/concurrent/atomic/AtomicBoolean;)V +HSPLcom/android/internal/telephony/SmsUsageMonitor$SettingsObserver;->onChange(Z)V +HSPLcom/android/internal/telephony/SmsUsageMonitor$SettingsObserverHandler;->(Landroid/content/Context;Ljava/util/concurrent/atomic/AtomicBoolean;)V +HSPLcom/android/internal/telephony/SmsUsageMonitor;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SmsUsageMonitor;->loadPremiumSmsPolicyDb()V +HSPLcom/android/internal/telephony/SubscriptionController$ScLocalLog;->(I)V +HSPLcom/android/internal/telephony/SubscriptionController$ScLocalLog;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionController;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SubscriptionController;->broadcastDefaultDataSubIdChanged(I)V +HSPLcom/android/internal/telephony/SubscriptionController;->broadcastSimInfoContentChanged()V +HSPLcom/android/internal/telephony/SubscriptionController;->canReadPhoneState(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/internal/telephony/SubscriptionController;->enforceModifyPhoneState(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubIdList()[I +HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCountMax()I +HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultDataSubId()I +HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultSmsSubId()I +HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultSubId()I +HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultVoiceSubId()I +HSPLcom/android/internal/telephony/SubscriptionController;->getDummySubIds(I)[I +HSPLcom/android/internal/telephony/SubscriptionController;->getInstance()Lcom/android/internal/telephony/SubscriptionController; +HSPLcom/android/internal/telephony/SubscriptionController;->getPhoneId(I)I +HSPLcom/android/internal/telephony/SubscriptionController;->getSimStateForSlotIndex(I)I +HSPLcom/android/internal/telephony/SubscriptionController;->getSlotIndex(I)I +HSPLcom/android/internal/telephony/SubscriptionController;->getSubId(I)[I +HSPLcom/android/internal/telephony/SubscriptionController;->getSubIdUsingPhoneId(I)I +HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfoUsingSlotIndexWithCheck(IZLjava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/SubscriptionController;->init(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/SubscriptionController;->init(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/SubscriptionController; +HSPLcom/android/internal/telephony/SubscriptionController;->isActiveSubId(I)Z +HSPLcom/android/internal/telephony/SubscriptionController;->isSubInfoReady()Z +HSPLcom/android/internal/telephony/SubscriptionController;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionController;->logdl(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionController;->notifySubscriptionInfoChanged()V +HSPLcom/android/internal/telephony/SubscriptionController;->setDefaultDataSubId(I)V +HSPLcom/android/internal/telephony/SubscriptionController;->setPlmnSpn(IZLjava/lang/String;ZLjava/lang/String;)Z +HSPLcom/android/internal/telephony/SubscriptionController;->updateAllDataConnectionTrackers()V +HSPLcom/android/internal/telephony/SubscriptionController;->updatePhonesAvailability([Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater$1;->(Lcom/android/internal/telephony/SubscriptionInfoUpdater;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater$2;->(Lcom/android/internal/telephony/SubscriptionInfoUpdater;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->-wrap0(Lcom/android/internal/telephony/SubscriptionInfoUpdater;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->(Landroid/os/Looper;Landroid/content/Context;[Lcom/android/internal/telephony/Phone;[Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->handleSimAbsent(I)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->initializeCarrierApps()V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->isAllIccIdQueryDone()Z +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateCarrierServices(ILjava/lang/String;)V +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptions()Z +HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionInfoByIccId()V +HSPLcom/android/internal/telephony/SubscriptionMonitor$1;->(Lcom/android/internal/telephony/SubscriptionMonitor;)V +HSPLcom/android/internal/telephony/SubscriptionMonitor$1;->onSubscriptionsChanged()V +HSPLcom/android/internal/telephony/SubscriptionMonitor$2;->(Lcom/android/internal/telephony/SubscriptionMonitor;)V +HSPLcom/android/internal/telephony/SubscriptionMonitor$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/SubscriptionMonitor;->-get2(Lcom/android/internal/telephony/SubscriptionMonitor;)I +HSPLcom/android/internal/telephony/SubscriptionMonitor;->-get3(Lcom/android/internal/telephony/SubscriptionMonitor;)Ljava/lang/Object; +HSPLcom/android/internal/telephony/SubscriptionMonitor;->-get4(Lcom/android/internal/telephony/SubscriptionMonitor;)[I +HSPLcom/android/internal/telephony/SubscriptionMonitor;->-get5(Lcom/android/internal/telephony/SubscriptionMonitor;)Lcom/android/internal/telephony/SubscriptionController; +HSPLcom/android/internal/telephony/SubscriptionMonitor;->-set0(Lcom/android/internal/telephony/SubscriptionMonitor;I)I +HSPLcom/android/internal/telephony/SubscriptionMonitor;->(Lcom/android/internal/telephony/ITelephonyRegistry;Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;I)V +HSPLcom/android/internal/telephony/SubscriptionMonitor;->invalidPhoneId(I)Z +HSPLcom/android/internal/telephony/SubscriptionMonitor;->registerForDefaultDataSubscriptionChanged(ILandroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/SubscriptionMonitor;->registerForSubscriptionChanged(ILandroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/TelephonyCapabilities;->supportsNetworkSelection(Lcom/android/internal/telephony/Phone;)Z +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->()V +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getCdmaSubscriptionSourceManagerInstance(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Landroid/os/Handler;ILjava/lang/Object;)Lcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getIDeviceIdleController()Landroid/os/IDeviceIdleController; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getInstance()Lcom/android/internal/telephony/TelephonyComponentFactory; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeAppSmsManager(Landroid/content/Context;)Lcom/android/internal/telephony/AppSmsManager; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeCarrierActionAgent(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CarrierActionAgent; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeCarrierSignalAgent(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CarrierSignalAgent; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeDcTracker(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/dataconnection/DcTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeDeviceStateMonitor(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/DeviceStateMonitor; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeEriManager(Lcom/android/internal/telephony/Phone;Landroid/content/Context;I)Lcom/android/internal/telephony/cdma/EriManager; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeGsmCdmaCallTracker(Lcom/android/internal/telephony/GsmCdmaPhone;)Lcom/android/internal/telephony/GsmCdmaCallTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeIccCardProxy(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;I)Lcom/android/internal/telephony/uicc/IccCardProxy; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeIccPhoneBookInterfaceManager(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/IccPhoneBookInterfaceManager; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeIccSmsInterfaceManager(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/IccSmsInterfaceManager; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeImsExternalCallTracker(Lcom/android/internal/telephony/imsphone/ImsPhone;)Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeImsPhoneCallTracker(Lcom/android/internal/telephony/imsphone/ImsPhone;)Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeServiceStateTracker(Lcom/android/internal/telephony/GsmCdmaPhone;Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/ServiceStateTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSimActivationTracker(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/SimActivationTracker; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSmsStorageMonitor(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/SmsStorageMonitor; +HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSmsUsageMonitor(Landroid/content/Context;)Lcom/android/internal/telephony/SmsUsageMonitor; +HSPLcom/android/internal/telephony/TelephonyDevController;->()V +HSPLcom/android/internal/telephony/TelephonyDevController;->create()Lcom/android/internal/telephony/TelephonyDevController; +HSPLcom/android/internal/telephony/TelephonyDevController;->getInstance()Lcom/android/internal/telephony/TelephonyDevController; +HSPLcom/android/internal/telephony/TelephonyDevController;->initFromResource()V +HSPLcom/android/internal/telephony/TelephonyDevController;->logd(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/TelephonyDevController;->registerRIL(Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/TelephonyDevController;->updateOrInsert(Lcom/android/internal/telephony/HardwareConfig;Ljava/util/ArrayList;)V +HSPLcom/android/internal/telephony/TelephonyTester$1;->(Lcom/android/internal/telephony/TelephonyTester;)V +HSPLcom/android/internal/telephony/TelephonyTester;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/TelephonyTester;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/UiccPhoneBookController;->([Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/UiccSmsController;->()V +HSPLcom/android/internal/telephony/WakeLockStateMachine$1;->(Lcom/android/internal/telephony/WakeLockStateMachine;)V +HSPLcom/android/internal/telephony/WakeLockStateMachine$DefaultState;->(Lcom/android/internal/telephony/WakeLockStateMachine;)V +HSPLcom/android/internal/telephony/WakeLockStateMachine$IdleState;->(Lcom/android/internal/telephony/WakeLockStateMachine;)V +HSPLcom/android/internal/telephony/WakeLockStateMachine$IdleState;->enter()V +HSPLcom/android/internal/telephony/WakeLockStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/WakeLockStateMachine$WaitingState;->(Lcom/android/internal/telephony/WakeLockStateMachine;)V +HSPLcom/android/internal/telephony/WakeLockStateMachine;->-get2(Lcom/android/internal/telephony/WakeLockStateMachine;)Landroid/os/PowerManager$WakeLock; +HSPLcom/android/internal/telephony/WakeLockStateMachine;->(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/WakeLockStateMachine;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/WapPushOverSms$1;->(Lcom/android/internal/telephony/WapPushOverSms;)V +HSPLcom/android/internal/telephony/WapPushOverSms;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;->(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;)V +HSPLcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;->makeInboundSmsHandler(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;)Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler; +HSPLcom/android/internal/telephony/cdma/CdmaSMSDispatcher;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsUsageMonitor;Lcom/android/internal/telephony/ImsSMSDispatcher;)V +HSPLcom/android/internal/telephony/cdma/CdmaSMSDispatcher;->getFormat()Ljava/lang/String; +HSPLcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler$1;->(Lcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler;)V +HSPLcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler;->makeScpHandler(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler; +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->getDefault(Landroid/content/Context;)I +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->getInstance(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Landroid/os/Handler;ILjava/lang/Object;)Lcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager; +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->handleGetCdmaSubscriptionSource(Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->registerForCdmaSubscriptionSourceChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/cdma/EriManager$EriFile;->(Lcom/android/internal/telephony/cdma/EriManager;)V +HSPLcom/android/internal/telephony/cdma/EriManager;->(Lcom/android/internal/telephony/Phone;Landroid/content/Context;I)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Landroid/net/NetworkConfig;Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->apnIdForApnName(Ljava/lang/String;)I +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->apnIdForType(I)I +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnSetting()Lcom/android/internal/telephony/dataconnection/ApnSetting; +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnType()Ljava/lang/String; +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getDcAc()Lcom/android/internal/telephony/dataconnection/DcAsyncChannel; +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getReason()Ljava/lang/String; +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getState()Lcom/android/internal/telephony/DctConstants$State; +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isConnectable()Z +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isDisconnected()Z +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isReady()Z +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->requestLog(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setDataConnectionAc(Lcom/android/internal/telephony/dataconnection/DcAsyncChannel;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setReason(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setState(Lcom/android/internal/telephony/DctConstants$State;)V +HSPLcom/android/internal/telephony/dataconnection/ApnContext;->toString()Ljava/lang/String; +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataAllowedReasonType;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;->(Ljava/lang/String;IZ)V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;->isHardReason()Z +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->()V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->add(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)V +HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->containsHardDisallowedReasons()Z +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->()V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isDataEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isInternalDataEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->notifyDataEnabledChanged(ZI)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->registerForDataEnabledChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->setUserDataEnabled(Z)V +HSPLcom/android/internal/telephony/dataconnection/DcController$1;->(Lcom/android/internal/telephony/dataconnection/DcController;Landroid/os/Looper;)V +HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->(Lcom/android/internal/telephony/dataconnection/DcController;)V +HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->(Lcom/android/internal/telephony/dataconnection/DcController;Lcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;)V +HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->enter()V +HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->processMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/dataconnection/DcController;->-get3(Lcom/android/internal/telephony/dataconnection/DcController;)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/dataconnection/DcController;->-set0(Lcom/android/internal/telephony/dataconnection/DcController;Lcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;)Lcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll; +HSPLcom/android/internal/telephony/dataconnection/DcController;->(Ljava/lang/String;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/dataconnection/DcTracker;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/dataconnection/DcController;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcController;->makeDcc(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/dataconnection/DcTracker;Landroid/os/Handler;)Lcom/android/internal/telephony/dataconnection/DcController; +HSPLcom/android/internal/telephony/dataconnection/DcFailBringUp;->()V +HSPLcom/android/internal/telephony/dataconnection/DcFailCause;->(Ljava/lang/String;II)V +HSPLcom/android/internal/telephony/dataconnection/DcFailCause;->getErrorCode()I +HSPLcom/android/internal/telephony/dataconnection/DcFailCause;->values()[Lcom/android/internal/telephony/dataconnection/DcFailCause; +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->(Landroid/net/NetworkRequest;Landroid/content/Context;)V +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->apnIdForNetworkRequest(Landroid/net/NetworkRequest;)I +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->compareTo(Lcom/android/internal/telephony/dataconnection/DcRequest;)I +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->compareTo(Ljava/lang/Object;)I +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->equals(Ljava/lang/Object;)Z +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->initApnPriorities(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/dataconnection/DcRequest;->priorityForApnId(I)I +HSPLcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll$1;->(Lcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;)V +HSPLcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/dataconnection/DcController;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll$1;->(Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;)V +HSPLcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;->(Lcom/android/internal/telephony/Phone;Landroid/os/Handler;)V +HSPLcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->(Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->compare(Lcom/android/internal/telephony/dataconnection/ApnContext;Lcom/android/internal/telephony/dataconnection/ApnContext;)I +HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLcom/android/internal/telephony/dataconnection/DcTracker$2;->(Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$3;->(Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$4;->(Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$4;->onSubscriptionsChanged()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$ApnChangeObserver;->(Lcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker$TxRxSum;->(JJ)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->-get0(Lcom/android/internal/telephony/dataconnection/DcTracker;)Landroid/os/Handler; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->-get3(Lcom/android/internal/telephony/dataconnection/DcTracker;)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->-get6(Lcom/android/internal/telephony/dataconnection/DcTracker;)Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->-set1(Lcom/android/internal/telephony/dataconnection/DcTracker;Z)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->-wrap0(Lcom/android/internal/telephony/dataconnection/DcTracker;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->(Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->addApnContext(Ljava/lang/String;Landroid/net/NetworkConfig;)Lcom/android/internal/telephony/dataconnection/ApnContext; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->addEmergencyApnSetting()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpAllConnections(ZLjava/lang/String;)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpConnection(ZLcom/android/internal/telephony/dataconnection/ApnContext;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getActiveApnString(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getDataEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getDataRoamingEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getDefaultDataRoamingEnabled()Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getOverallState()Lcom/android/internal/telephony/DctConstants$State; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getState(Ljava/lang/String;)Lcom/android/internal/telephony/DctConstants$State; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getUiccRecords(I)Lcom/android/internal/telephony/uicc/IccRecords; +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->initApnContexts()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->initEmergencyApnSetting()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/ApnContext;Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isEmergency()Z +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->notifyDataConnection(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->notifyOffApnsOfAvailability(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataConnectionDetached()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataRoamingOff()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onRadioAvailable()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onRadioOffOrNotAvailable()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onUpdateIcc()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerForAllEvents()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerForDataEnabledChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerServiceStateTrackerEvents()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerSettingsObserver()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setDataProfilesAsNeeded()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setInitialAttachApn()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApns(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApns(Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->stopDataStallAlarm()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->stopNetStatPoll()V +HSPLcom/android/internal/telephony/dataconnection/DcTracker;->update()V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory$InternalHandler;->(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;Landroid/os/Looper;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory$InternalHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->-wrap0(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->-wrap1(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->-wrap2(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;Landroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->-wrap4(Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->(Lcom/android/internal/telephony/PhoneSwitcher;Lcom/android/internal/telephony/SubscriptionController;Lcom/android/internal/telephony/SubscriptionMonitor;Landroid/os/Looper;Landroid/content/Context;ILcom/android/internal/telephony/dataconnection/DcTracker;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->makeNetworkFilter(I)Landroid/net/NetworkCapabilities; +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->makeNetworkFilter(Lcom/android/internal/telephony/SubscriptionController;I)Landroid/net/NetworkCapabilities; +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onActivePhoneSwitch()V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onDefaultChange()V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onNeedNetworkFor(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onSubIdChange()V +HSPLcom/android/internal/telephony/euicc/IEuiccController$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/euicc/IEuiccController; +HSPLcom/android/internal/telephony/gsm/GsmCellBroadcastHandler;->(Landroid/content/Context;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/gsm/GsmCellBroadcastHandler;->makeGsmCellBroadcastHandler(Landroid/content/Context;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/gsm/GsmCellBroadcastHandler; +HSPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->makeInboundSmsHandler(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler; +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsUsageMonitor;Lcom/android/internal/telephony/ImsSMSDispatcher;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;)V +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getFormat()Ljava/lang/String; +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication; +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->onUpdateIccAvailability()V +HSPLcom/android/internal/telephony/gsm/UsimDataDownloadHandler;->(Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$1;->$m$0(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$1;->(Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$1;->handleMessage(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$2;->$m$0(Landroid/content/Context;Landroid/content/ComponentName;)Lcom/android/internal/telephony/ims/ImsServiceController; +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$2;->(Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$2;->get(Landroid/content/Context;Landroid/content/ComponentName;)Lcom/android/internal/telephony/ims/ImsServiceController; +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$3;->$m$1(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$3;->(BI)V +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg$3;->apply(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg;->$m$0()Ljava/lang/Object; +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg;->()V +HSPLcom/android/internal/telephony/ims/-$Lambda$6hDwuvYxqWrzW_Ex5wc53XnUOpg;->get()Ljava/lang/Object; +HSPLcom/android/internal/telephony/ims/-$Lambda$Dp0MKpTfGctn5WSf-VZIVicYMbM;->(B)V +HSPLcom/android/internal/telephony/ims/-$Lambda$QWnMjc1b65aK4eEOKtjIsxJ2Sp4;->(BLjava/lang/Object;)V +HSPLcom/android/internal/telephony/ims/ImsResolver$1;->(Lcom/android/internal/telephony/ims/ImsResolver;)V +HSPLcom/android/internal/telephony/ims/ImsResolver$2;->(Lcom/android/internal/telephony/ims/ImsResolver;)V +HSPLcom/android/internal/telephony/ims/ImsResolver$3;->(Lcom/android/internal/telephony/ims/ImsResolver;)V +HSPLcom/android/internal/telephony/ims/ImsResolver$3;->getSlotIndex(I)I +HSPLcom/android/internal/telephony/ims/ImsResolver$3;->getSubId(I)I +HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceControllerFactory;->get(Landroid/content/Context;Landroid/content/ComponentName;)Lcom/android/internal/telephony/ims/ImsServiceController; +HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->()V +HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->hashCode()I +HSPLcom/android/internal/telephony/ims/ImsResolver$SubscriptionManagerProxy;->getSlotIndex(I)I +HSPLcom/android/internal/telephony/ims/ImsResolver$SubscriptionManagerProxy;->getSubId(I)I +HSPLcom/android/internal/telephony/ims/ImsResolver;->-com_android_internal_telephony_ims_ImsResolver-mthref-0()Landroid/util/SparseArray; +HSPLcom/android/internal/telephony/ims/ImsResolver;->(Landroid/content/Context;Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->bindNewImsService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->calculateFeaturesToCreate(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Ljava/util/HashSet; +HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceControllerAndListen(IILcom/android/ims/internal/IImsServiceFeatureListener;)Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceInfo(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceInfoFromCache(Ljava/lang/String;)Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo; +HSPLcom/android/internal/telephony/ims/ImsResolver;->getInfoByComponentName(Ljava/util/Set;Landroid/content/ComponentName;)Ljava/util/Optional; +HSPLcom/android/internal/telephony/ims/ImsResolver;->getSlotForActiveCarrierService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)I +HSPLcom/android/internal/telephony/ims/ImsResolver;->imsServiceFeatureCreated(IILcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->isActiveCarrierService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Z +HSPLcom/android/internal/telephony/ims/ImsResolver;->isDeviceService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Z +HSPLcom/android/internal/telephony/ims/ImsResolver;->lambda$-com_android_internal_telephony_ims_ImsResolver_24395(ILjava/lang/Integer;)Landroid/util/Pair; +HSPLcom/android/internal/telephony/ims/ImsResolver;->lambda$-com_android_internal_telephony_ims_ImsResolver_7707(Landroid/content/Context;Landroid/content/ComponentName;)Lcom/android/internal/telephony/ims/ImsServiceController; +HSPLcom/android/internal/telephony/ims/ImsResolver;->lambda$-com_android_internal_telephony_ims_ImsResolver_8323(Landroid/os/Message;)Z +HSPLcom/android/internal/telephony/ims/ImsResolver;->maybeAddedImsService(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->maybeRebindService(I)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->populateCacheAndStartBind()V +HSPLcom/android/internal/telephony/ims/ImsResolver;->putImsController(IILcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsResolver;->updateBoundCarrierServices(I)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$1;->(Lcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsDeathRecipient;->(Lcom/android/internal/telephony/ims/ImsServiceController;Landroid/content/ComponentName;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback$1;->(Lcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback$1;->notifyImsFeatureStatus(I)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;->-get0(Lcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;)I +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;->-get1(Lcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;)I +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;->(Lcom/android/internal/telephony/ims/ImsServiceController;II)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback;->getCallback()Lcom/android/ims/internal/IImsFeatureStatusCallback; +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsServiceConnection;->(Lcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;->imsServiceFeatureCreated(IILcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;->imsServiceFeatureRemoved(IILcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController$RebindRetry;->getRetryTimeout()J +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-get1(Lcom/android/internal/telephony/ims/ImsServiceController;)Lcom/android/internal/telephony/ims/ImsServiceController$ImsDeathRecipient; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-get2(Lcom/android/internal/telephony/ims/ImsServiceController;)Ljava/util/HashSet; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-get5(Lcom/android/internal/telephony/ims/ImsServiceController;)Ljava/lang/Object; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-set0(Lcom/android/internal/telephony/ims/ImsServiceController;Lcom/android/ims/internal/IImsServiceController;)Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-set1(Lcom/android/internal/telephony/ims/ImsServiceController;Lcom/android/internal/telephony/ims/ImsServiceController$ImsDeathRecipient;)Lcom/android/internal/telephony/ims/ImsServiceController$ImsDeathRecipient; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-set2(Lcom/android/internal/telephony/ims/ImsServiceController;Landroid/os/IBinder;)Landroid/os/IBinder; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-set3(Lcom/android/internal/telephony/ims/ImsServiceController;Z)Z +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-set4(Lcom/android/internal/telephony/ims/ImsServiceController;Z)Z +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-wrap0(Lcom/android/internal/telephony/ims/ImsServiceController;Landroid/util/Pair;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-wrap2(Lcom/android/internal/telephony/ims/ImsServiceController;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->-wrap4(Lcom/android/internal/telephony/ims/ImsServiceController;III)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->addImsServiceFeature(Landroid/util/Pair;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->addImsServiceFeatureListener(Lcom/android/ims/internal/IImsServiceFeatureListener;)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->bind(Ljava/util/HashSet;)Z +HSPLcom/android/internal/telephony/ims/ImsServiceController;->getComponentName()Landroid/content/ComponentName; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->getImsServiceController()Lcom/android/ims/internal/IImsServiceController; +HSPLcom/android/internal/telephony/ims/ImsServiceController;->grantPermissionsToService()V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureCreatedCallback(II)V +HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureStatusChanged(III)V +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$1;->$m$0()V +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$1;->(Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$1;->notifyStatusChanged()V +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$2;->$m$0()I +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$2;->(Ljava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w$2;->get()I +HSPLcom/android/internal/telephony/imsphone/-$Lambda$tILLuSJl16qfDJK1ikBVGFm2D5w;->()V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$1;->(Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$1;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$2;->(Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ExternalCallStateListener;->(Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ExternalConnectionListener;->(Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ImsCallNotify;->notifyPreciseCallStateChanged()V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ImsCallNotify;->notifyUnknownConnection(Lcom/android/internal/telephony/Connection;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->-wrap0(Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->(Lcom/android/internal/telephony/imsphone/ImsPhone;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->getExternalCallStateListener()Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ExternalCallStateListener; +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->handleVideoCapabilitiesChanged(Landroid/os/AsyncResult;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->refreshCallPullState()V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->registerForNotifications()V +HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->setCallPuller(Lcom/android/internal/telephony/imsphone/ImsPullCall;)V +HSPLcom/android/internal/telephony/imsphone/ImsExternalConnection$Listener;->onPullExternalCall(Lcom/android/internal/telephony/imsphone/ImsExternalConnection;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone$1;->(Lcom/android/internal/telephony/imsphone/ImsPhone;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone$2;->(Lcom/android/internal/telephony/imsphone/ImsPhone;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone$3;->(Lcom/android/internal/telephony/imsphone/ImsPhone;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;Z)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getBackgroundCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getBackgroundCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getDefaultPhone()Lcom/android/internal/telephony/Phone; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getExternalCallTracker()Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getForegroundCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getForegroundCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getImsEcbmStateListener()Lcom/android/ims/ImsEcbmStateListener; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getPhoneId()I +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getPhoneType()I +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getRingingCall()Lcom/android/internal/telephony/Call; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getRingingCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getServiceState()Landroid/telephony/ServiceState; +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getSubId()I +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isInEcm()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isVideoEnabled()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isWifiCallingEnabled()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->processDisconnectReason(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForOnHoldTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForSilentRedial(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->sendErrorResponse(Landroid/os/Message;Ljava/lang/Throwable;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setImsRegistered(Z)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setServiceState(I)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setUiTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhone;->updateDataServiceState()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;->(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Z)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;->getPhoneType()I +HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;->registerForOnHoldTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCall;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$1;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$2;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$3;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$4;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$4;->onImsDisconnected(Lcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$5;->(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$IRetryTimeout;->get()I +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$PhoneStateListener;->onPhoneStateChanged(Lcom/android/internal/telephony/PhoneConstants$State;Lcom/android/internal/telephony/PhoneConstants$State;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$SharedPreferenceProxy;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->-get9(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)Lcom/android/internal/telephony/metrics/TelephonyMetrics; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->-wrap12(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->(Lcom/android/internal/telephony/imsphone/ImsPhone;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->cacheCarrierConfiguration(I)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->createIncomingCallPendingIntent()Landroid/app/PendingIntent; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getEcbmInterface()Lcom/android/ims/ImsEcbm; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getImsManagerIsNullException()Lcom/android/ims/ImsException; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getImsService()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getMultiEndpointInterface()Lcom/android/ims/ImsMultiEndpoint; +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getPackageUid(Landroid/content/Context;Ljava/lang/String;)I +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isVideoCallEnabled()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isVowifiEnabled()Z +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->lambda$-com_android_internal_telephony_imsphone_ImsPhoneCallTracker_31974()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->lambda$-com_android_internal_telephony_imsphone_ImsPhoneCallTracker_33046()I +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->loge(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->onDataEnabledChanged(ZI)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->registerPhoneStateListener(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$PhoneStateListener;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->resetImsCapabilities()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->retryGetImsService()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->setTtyMode(I)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->setUiTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->startListeningForCalls()V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCommandInterface;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneCommandInterface;->setTTYMode(ILandroid/os/Message;)V +HSPLcom/android/internal/telephony/imsphone/ImsPhoneFactory;->makePhone(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/imsphone/ImsPhone; +HSPLcom/android/internal/telephony/imsphone/ImsPullCall;->pullExternalCall(Ljava/lang/String;II)V +HSPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->(I)V +HSPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->setImsConnectionState(Lcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;)Lcom/android/internal/telephony/metrics/CallSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->setServiceState(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;)Lcom/android/internal/telephony/metrics/CallSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->(I)V +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setImsConnectionState(Lcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setServiceState(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->(I)V +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->(JI)V +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setImsConnectionState(Lcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setServiceState(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->()V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->addTelephonyEvent(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressCallSession(JILcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressSmsSession(JILcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->getInstance()Lcom/android/internal/telephony/metrics/TelephonyMetrics; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->reset()V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->toServiceStateProto(Landroid/telephony/ServiceState;)Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState; +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnImsConnectionState(IILcom/android/ims/ImsReasonInfo;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnRilSolicitedResponse(IIIILjava/lang/Object;)V +HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeServiceStateChanged(ILandroid/telephony/ServiceState;)V +HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState; +HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo; +HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$RilDataCall; +HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator; +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;->()V +HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState; +HSPLcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;->()V +HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->()V +HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->-getcom-android-internal-telephony-IccCardConstants$StateSwitchesValues()[I +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;I)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->broadcastIccStateChangedIntent(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->getIccStateIntentString(Lcom/android/internal/telephony/IccCardConstants$State;)Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->getIccStateReason(Lcom/android/internal/telephony/IccCardConstants$State;)Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->getState()Lcom/android/internal/telephony/IccCardConstants$State; +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->registerUiccCardEvents()V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->resetProperties()V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->setExternalState(Lcom/android/internal/telephony/IccCardConstants$State;)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->setExternalState(Lcom/android/internal/telephony/IccCardConstants$State;Z)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->setVoiceRadioTech(I)V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->unregisterUiccCardEvents()V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->updateExternalState()V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->updateIccAvailability()V +HSPLcom/android/internal/telephony/uicc/IccCardProxy;->updateQuietMode()V +HSPLcom/android/internal/telephony/uicc/IccCardStatus$CardState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/uicc/IccCardStatus$PinState;->(Ljava/lang/String;I)V +HSPLcom/android/internal/telephony/uicc/IccCardStatus;->()V +HSPLcom/android/internal/telephony/uicc/IccCardStatus;->setCardState(I)V +HSPLcom/android/internal/telephony/uicc/IccCardStatus;->setUniversalPinState(I)V +HSPLcom/android/internal/telephony/uicc/IccCardStatus;->toString()Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/IccUtils;->bytesToHexString([B)Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/UiccCard$1;->(Lcom/android/internal/telephony/uicc/UiccCard;)V +HSPLcom/android/internal/telephony/uicc/UiccCard;->(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;I)V +HSPLcom/android/internal/telephony/uicc/UiccCard;->checkIndexLocked(ILcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;)I +HSPLcom/android/internal/telephony/uicc/UiccCard;->createAndUpdateCatServiceLocked()V +HSPLcom/android/internal/telephony/uicc/UiccCard;->getApplication(I)Lcom/android/internal/telephony/uicc/UiccCardApplication; +HSPLcom/android/internal/telephony/uicc/UiccCard;->getCardState()Lcom/android/internal/telephony/uicc/IccCardStatus$CardState; +HSPLcom/android/internal/telephony/uicc/UiccCard;->getCarrierPackageNamesForIntent(Landroid/content/pm/PackageManager;Landroid/content/Intent;)Ljava/util/List; +HSPLcom/android/internal/telephony/uicc/UiccCard;->getCarrierPrivilegeRules()Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules; +HSPLcom/android/internal/telephony/uicc/UiccCard;->getIccId()Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/UiccCard;->getOperatorBrandOverride()Ljava/lang/String; +HSPLcom/android/internal/telephony/uicc/UiccCard;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/UiccCard;->registerForAbsent(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/uicc/UiccCard;->sanitizeApplicationIndexesLocked()V +HSPLcom/android/internal/telephony/uicc/UiccCard;->update(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->getCiIndex(Landroid/os/Message;)Ljava/lang/Integer; +HSPLcom/android/internal/telephony/uicc/UiccController;->getIccRecords(II)Lcom/android/internal/telephony/uicc/IccRecords; +HSPLcom/android/internal/telephony/uicc/UiccController;->getInstance()Lcom/android/internal/telephony/uicc/UiccController; +HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCard(I)Lcom/android/internal/telephony/uicc/UiccCard; +HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCardApplication(II)Lcom/android/internal/telephony/uicc/UiccCardApplication; +HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCards()[Lcom/android/internal/telephony/uicc/UiccCard; +HSPLcom/android/internal/telephony/uicc/UiccController;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->isValidCardIndex(I)Z +HSPLcom/android/internal/telephony/uicc/UiccController;->log(Ljava/lang/String;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->make(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/uicc/UiccController; +HSPLcom/android/internal/telephony/uicc/UiccController;->onGetIccCardStatusDone(Landroid/os/AsyncResult;Ljava/lang/Integer;)V +HSPLcom/android/internal/telephony/uicc/UiccController;->registerForIccChanged(Landroid/os/Handler;ILjava/lang/Object;)V +HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;->(Landroid/content/Context;Lcom/android/internal/telephony/uicc/UiccController;)V +HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;->notifyStateChanged()V +HSPLcom/android/internal/telephony/util/NotificationChannelController$1;->(Lcom/android/internal/telephony/util/NotificationChannelController;)V +HSPLcom/android/internal/telephony/util/NotificationChannelController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/android/internal/telephony/util/NotificationChannelController;->(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/util/NotificationChannelController;->createAll(Landroid/content/Context;)V +HSPLcom/android/internal/telephony/util/NotificationChannelController;->getChannel(Ljava/lang/String;Landroid/content/Context;)Landroid/app/NotificationChannel; +HSPLcom/android/internal/util/ArrayUtils;->appendInt([II)[I +HSPLcom/android/internal/util/ArrayUtils;->appendInt([IIZ)[I +HSPLcom/android/internal/util/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/android/internal/util/ArrayUtils;->containsAll([Ljava/lang/Object;[Ljava/lang/Object;)Z +HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I +HSPLcom/android/internal/util/ArrayUtils;->isEmpty(Ljava/util/Collection;)Z +HSPLcom/android/internal/util/ArrayUtils;->isEmpty([I)Z +HSPLcom/android/internal/util/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedBooleanArray(I)[Z +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedCharArray(I)[C +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->referenceEquals(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLcom/android/internal/util/ArrayUtils;->unstableRemoveIf(Ljava/util/ArrayList;Ljava/util/function/Predicate;)I +HSPLcom/android/internal/util/AsyncChannel$DeathMonitor;->(Lcom/android/internal/util/AsyncChannel;)V +HSPLcom/android/internal/util/AsyncChannel;->()V +HSPLcom/android/internal/util/AsyncChannel;->connect(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)V +HSPLcom/android/internal/util/AsyncChannel;->connected(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)V +HSPLcom/android/internal/util/AsyncChannel;->linkToDeathMonitor()Z +HSPLcom/android/internal/util/AsyncChannel;->replyHalfConnected(I)V +HSPLcom/android/internal/util/BitUtils;->bitAt(I)J +HSPLcom/android/internal/util/BitUtils;->isBitSet(JI)Z +HSPLcom/android/internal/util/BitUtils;->unpackBits(J)[I +HSPLcom/android/internal/util/ConcurrentUtils$1$1;->(Lcom/android/internal/util/ConcurrentUtils$1;Ljava/lang/String;ILjava/lang/Runnable;)V +HSPLcom/android/internal/util/ConcurrentUtils$1$1;->run()V +HSPLcom/android/internal/util/ConcurrentUtils$1;->(Ljava/lang/String;I)V +HSPLcom/android/internal/util/ConcurrentUtils$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLcom/android/internal/util/ConcurrentUtils;->newFixedThreadPool(ILjava/lang/String;I)Ljava/util/concurrent/ExecutorService; +HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->(I)V +HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V +HSPLcom/android/internal/util/FastMath;->round(F)I +HSPLcom/android/internal/util/FastPrintWriter$DummyWriter;->()V +HSPLcom/android/internal/util/FastPrintWriter$DummyWriter;->(Lcom/android/internal/util/FastPrintWriter$DummyWriter;)V +HSPLcom/android/internal/util/FastPrintWriter;->(Ljava/io/OutputStream;)V +HSPLcom/android/internal/util/FastPrintWriter;->(Ljava/io/OutputStream;ZI)V +HSPLcom/android/internal/util/FastPrintWriter;->(Ljava/io/Writer;ZI)V +HSPLcom/android/internal/util/FastPrintWriter;->appendLocked(Ljava/lang/String;II)V +HSPLcom/android/internal/util/FastPrintWriter;->flush()V +HSPLcom/android/internal/util/FastPrintWriter;->flushBytesLocked()V +HSPLcom/android/internal/util/FastPrintWriter;->flushLocked()V +HSPLcom/android/internal/util/FastPrintWriter;->initDefaultEncoder()V +HSPLcom/android/internal/util/FastPrintWriter;->print(Ljava/lang/String;)V +HSPLcom/android/internal/util/FastPrintWriter;->println()V +HSPLcom/android/internal/util/FastPrintWriter;->write(Ljava/lang/String;)V +HSPLcom/android/internal/util/FastXmlSerializer;->()V +HSPLcom/android/internal/util/FastXmlSerializer;->(I)V +HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V +HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V +HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V +HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V +HSPLcom/android/internal/util/FastXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/FastXmlSerializer;->endDocument()V +HSPLcom/android/internal/util/FastXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/FastXmlSerializer;->escapeAndAppendString(Ljava/lang/String;)V +HSPLcom/android/internal/util/FastXmlSerializer;->flush()V +HSPLcom/android/internal/util/FastXmlSerializer;->flushBytes()V +HSPLcom/android/internal/util/FastXmlSerializer;->setFeature(Ljava/lang/String;Z)V +HSPLcom/android/internal/util/FastXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V +HSPLcom/android/internal/util/FastXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLcom/android/internal/util/FastXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/GrowingArrayUtils;->append([III)[I +HSPLcom/android/internal/util/GrowingArrayUtils;->append([JIJ)[J +HSPLcom/android/internal/util/GrowingArrayUtils;->append([Ljava/lang/Object;ILjava/lang/Object;)[Ljava/lang/Object; +HSPLcom/android/internal/util/GrowingArrayUtils;->append([ZIZ)[Z +HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object; +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z +HSPLcom/android/internal/util/IState;->getName()Ljava/lang/String; +HSPLcom/android/internal/util/ImageUtils;->()V +HSPLcom/android/internal/util/ImageUtils;->ensureBufferSize(I)V +HSPLcom/android/internal/util/ImageUtils;->isGrayscale(I)Z +HSPLcom/android/internal/util/ImageUtils;->isGrayscale(Landroid/graphics/Bitmap;)Z +HSPLcom/android/internal/util/IndentingPrintWriter;->(Ljava/io/Writer;Ljava/lang/String;I)V +HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()V +HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()V +HSPLcom/android/internal/util/IndentingPrintWriter;->maybeWriteIndent()V +HSPLcom/android/internal/util/IndentingPrintWriter;->printPair(Ljava/lang/String;Ljava/lang/Object;)V +HSPLcom/android/internal/util/IndentingPrintWriter;->println()V +HSPLcom/android/internal/util/IndentingPrintWriter;->write(I)V +HSPLcom/android/internal/util/IndentingPrintWriter;->write(Ljava/lang/String;II)V +HSPLcom/android/internal/util/IndentingPrintWriter;->write([CII)V +HSPLcom/android/internal/util/IntPair;->first(J)I +HSPLcom/android/internal/util/IntPair;->second(J)I +HSPLcom/android/internal/util/JournaledFile;->(Ljava/io/File;Ljava/io/File;)V +HSPLcom/android/internal/util/JournaledFile;->chooseForRead()Ljava/io/File; +HSPLcom/android/internal/util/JournaledFile;->chooseForWrite()Ljava/io/File; +HSPLcom/android/internal/util/JournaledFile;->commit()V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;I)V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;II)V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->appendToBuffer(Ljava/lang/String;II)V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->ensureCapacity(I)V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->flush()V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->write(Ljava/lang/String;II)V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->writeBuffer(I)V +HSPLcom/android/internal/util/MemInfoReader;->()V +HSPLcom/android/internal/util/MemInfoReader;->getTotalSize()J +HSPLcom/android/internal/util/MemInfoReader;->readMemInfo()V +HSPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->compositeAlpha(II)I +HSPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->compositeColors(II)I +HSPLcom/android/internal/util/NotificationColorUtil$ColorUtilsFromCompat;->compositeComponent(IIIII)I +HSPLcom/android/internal/util/NotificationColorUtil;->(Landroid/content/Context;)V +HSPLcom/android/internal/util/NotificationColorUtil;->compositeColors(II)I +HSPLcom/android/internal/util/NotificationColorUtil;->getInstance(Landroid/content/Context;)Lcom/android/internal/util/NotificationColorUtil; +HSPLcom/android/internal/util/NotificationColorUtil;->invertCharSequenceColors(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLcom/android/internal/util/NotificationColorUtil;->isGrayscaleIcon(Landroid/content/Context;I)Z +HSPLcom/android/internal/util/NotificationColorUtil;->isGrayscaleIcon(Landroid/content/Context;Landroid/graphics/drawable/Icon;)Z +HSPLcom/android/internal/util/NotificationColorUtil;->isGrayscaleIcon(Landroid/graphics/Bitmap;)Z +HSPLcom/android/internal/util/NotificationColorUtil;->isGrayscaleIcon(Landroid/graphics/drawable/Drawable;)Z +HSPLcom/android/internal/util/NotificationColorUtil;->resolveActionBarColor(Landroid/content/Context;I)I +HSPLcom/android/internal/util/NotificationColorUtil;->resolvePrimaryColor(Landroid/content/Context;I)I +HSPLcom/android/internal/util/NotificationColorUtil;->resolveSecondaryColor(Landroid/content/Context;I)I +HSPLcom/android/internal/util/NotificationColorUtil;->shouldUseDark(I)Z +HSPLcom/android/internal/util/NotificationMessagingUtil$1;->(Lcom/android/internal/util/NotificationMessagingUtil;Landroid/os/Handler;)V +HSPLcom/android/internal/util/NotificationMessagingUtil;->(Landroid/content/Context;)V +HSPLcom/android/internal/util/Preconditions;->checkArgument(Z)V +HSPLcom/android/internal/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V +HSPLcom/android/internal/util/Preconditions;->checkArgumentFinite(FLjava/lang/String;)F +HSPLcom/android/internal/util/Preconditions;->checkArgumentInRange(IIILjava/lang/String;)I +HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I +HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(JLjava/lang/String;)J +HSPLcom/android/internal/util/Preconditions;->checkArgumentPositive(ILjava/lang/String;)I +HSPLcom/android/internal/util/Preconditions;->checkArrayElementsInRange([FFFLjava/lang/String;)[F +HSPLcom/android/internal/util/Preconditions;->checkArrayElementsNotNull([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object; +HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/internal/util/Preconditions;->checkState(Z)V +HSPLcom/android/internal/util/Preconditions;->checkState(ZLjava/lang/String;)V +HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/CharSequence; +HSPLcom/android/internal/util/ProgressReporter;->(I)V +HSPLcom/android/internal/util/State;->()V +HSPLcom/android/internal/util/State;->enter()V +HSPLcom/android/internal/util/State;->exit()V +HSPLcom/android/internal/util/StateMachine$LogRec;->(Lcom/android/internal/util/StateMachine;Landroid/os/Message;Ljava/lang/String;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/StateMachine$LogRec;->update(Lcom/android/internal/util/StateMachine;Landroid/os/Message;Ljava/lang/String;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/StateMachine$LogRecords;->()V +HSPLcom/android/internal/util/StateMachine$LogRecords;->(Lcom/android/internal/util/StateMachine$LogRecords;)V +HSPLcom/android/internal/util/StateMachine$LogRecords;->add(Lcom/android/internal/util/StateMachine;Landroid/os/Message;Ljava/lang/String;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/StateMachine$LogRecords;->logOnlyTransitions()Z +HSPLcom/android/internal/util/StateMachine$LogRecords;->setSize(I)V +HSPLcom/android/internal/util/StateMachine$SmHandler$HaltingState;->(Lcom/android/internal/util/StateMachine$SmHandler;)V +HSPLcom/android/internal/util/StateMachine$SmHandler$HaltingState;->(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/StateMachine$SmHandler$HaltingState;)V +HSPLcom/android/internal/util/StateMachine$SmHandler$QuittingState;->(Lcom/android/internal/util/StateMachine$SmHandler;)V +HSPLcom/android/internal/util/StateMachine$SmHandler$QuittingState;->(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/StateMachine$SmHandler$QuittingState;)V +HSPLcom/android/internal/util/StateMachine$SmHandler$StateInfo;->(Lcom/android/internal/util/StateMachine$SmHandler;)V +HSPLcom/android/internal/util/StateMachine$SmHandler$StateInfo;->(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->-get4(Lcom/android/internal/util/StateMachine$SmHandler;)Lcom/android/internal/util/StateMachine$LogRecords; +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap0(Lcom/android/internal/util/StateMachine$SmHandler;)Landroid/os/Message; +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap11(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/State;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap12(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap3(Lcom/android/internal/util/StateMachine$SmHandler;)Lcom/android/internal/util/IState; +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap4(Lcom/android/internal/util/StateMachine$SmHandler;Lcom/android/internal/util/State;Lcom/android/internal/util/State;)Lcom/android/internal/util/StateMachine$SmHandler$StateInfo; +HSPLcom/android/internal/util/StateMachine$SmHandler;->-wrap5(Lcom/android/internal/util/StateMachine$SmHandler;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->(Landroid/os/Looper;Lcom/android/internal/util/StateMachine;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->(Landroid/os/Looper;Lcom/android/internal/util/StateMachine;Lcom/android/internal/util/StateMachine$SmHandler;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->addState(Lcom/android/internal/util/State;Lcom/android/internal/util/State;)Lcom/android/internal/util/StateMachine$SmHandler$StateInfo; +HSPLcom/android/internal/util/StateMachine$SmHandler;->completeConstruction()V +HSPLcom/android/internal/util/StateMachine$SmHandler;->getCurrentMessage()Landroid/os/Message; +HSPLcom/android/internal/util/StateMachine$SmHandler;->getCurrentState()Lcom/android/internal/util/IState; +HSPLcom/android/internal/util/StateMachine$SmHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->invokeEnterMethods(I)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->invokeExitMethods(Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->isQuit(Landroid/os/Message;)Z +HSPLcom/android/internal/util/StateMachine$SmHandler;->moveDeferredMessageAtFrontOfQueue()V +HSPLcom/android/internal/util/StateMachine$SmHandler;->moveTempStateStackToStateStack()I +HSPLcom/android/internal/util/StateMachine$SmHandler;->performTransitions(Lcom/android/internal/util/State;Landroid/os/Message;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->processMsg(Landroid/os/Message;)Lcom/android/internal/util/State; +HSPLcom/android/internal/util/StateMachine$SmHandler;->setInitialState(Lcom/android/internal/util/State;)V +HSPLcom/android/internal/util/StateMachine$SmHandler;->setupInitialStateStack()V +HSPLcom/android/internal/util/StateMachine$SmHandler;->setupTempStateStackWithStatesToEnter(Lcom/android/internal/util/State;)Lcom/android/internal/util/StateMachine$SmHandler$StateInfo; +HSPLcom/android/internal/util/StateMachine$SmHandler;->transitionTo(Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/StateMachine;->(Ljava/lang/String;)V +HSPLcom/android/internal/util/StateMachine;->(Ljava/lang/String;Landroid/os/Handler;)V +HSPLcom/android/internal/util/StateMachine;->addState(Lcom/android/internal/util/State;)V +HSPLcom/android/internal/util/StateMachine;->addState(Lcom/android/internal/util/State;Lcom/android/internal/util/State;)V +HSPLcom/android/internal/util/StateMachine;->getCurrentMessage()Landroid/os/Message; +HSPLcom/android/internal/util/StateMachine;->getCurrentState()Lcom/android/internal/util/IState; +HSPLcom/android/internal/util/StateMachine;->getHandler()Landroid/os/Handler; +HSPLcom/android/internal/util/StateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +HSPLcom/android/internal/util/StateMachine;->getName()Ljava/lang/String; +HSPLcom/android/internal/util/StateMachine;->initStateMachine(Ljava/lang/String;Landroid/os/Looper;)V +HSPLcom/android/internal/util/StateMachine;->log(Ljava/lang/String;)V +HSPLcom/android/internal/util/StateMachine;->obtainMessage(I)Landroid/os/Message; +HSPLcom/android/internal/util/StateMachine;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; +HSPLcom/android/internal/util/StateMachine;->onPostHandleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/util/StateMachine;->onPreHandleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/util/StateMachine;->recordLogRec(Landroid/os/Message;)Z +HSPLcom/android/internal/util/StateMachine;->removeMessages(I)V +HSPLcom/android/internal/util/StateMachine;->sendMessage(I)V +HSPLcom/android/internal/util/StateMachine;->sendMessage(ILjava/lang/Object;)V +HSPLcom/android/internal/util/StateMachine;->sendMessage(Landroid/os/Message;)V +HSPLcom/android/internal/util/StateMachine;->sendMessageDelayed(IJ)V +HSPLcom/android/internal/util/StateMachine;->setInitialState(Lcom/android/internal/util/State;)V +HSPLcom/android/internal/util/StateMachine;->setLogRecSize(I)V +HSPLcom/android/internal/util/StateMachine;->start()V +HSPLcom/android/internal/util/StateMachine;->transitionTo(Lcom/android/internal/util/IState;)V +HSPLcom/android/internal/util/VirtualRefBasePtr;->(J)V +HSPLcom/android/internal/util/VirtualRefBasePtr;->finalize()V +HSPLcom/android/internal/util/VirtualRefBasePtr;->get()J +HSPLcom/android/internal/util/VirtualRefBasePtr;->release()V +HSPLcom/android/internal/util/XmlUtils$WriteMapCallback;->writeUnknownObject(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HSPLcom/android/internal/util/XmlUtils;->beginDocument(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V +HSPLcom/android/internal/util/XmlUtils;->nextElement(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/internal/util/XmlUtils;->nextElementWithin(Lorg/xmlpull/v1/XmlPullParser;I)Z +HSPLcom/android/internal/util/XmlUtils;->readBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z +HSPLcom/android/internal/util/XmlUtils;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I +HSPLcom/android/internal/util/XmlUtils;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +HSPLcom/android/internal/util/XmlUtils;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +HSPLcom/android/internal/util/XmlUtils;->readMapXml(Ljava/io/InputStream;)Ljava/util/HashMap; +HSPLcom/android/internal/util/XmlUtils;->readStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/util/XmlUtils;->readThisMapXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Ljava/util/HashMap; +HSPLcom/android/internal/util/XmlUtils;->readThisPrimitiveValueXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/android/internal/util/XmlUtils;->readThisSetXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/util/HashSet; +HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object; +HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/internal/util/XmlUtils;->writeIntAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;I)V +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V +HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HSPLcom/android/internal/util/XmlUtils;->writeStringAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V +HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V +HSPLcom/android/internal/view/ActionBarPolicy;->(Landroid/content/Context;)V +HSPLcom/android/internal/view/ActionBarPolicy;->enableHomeButtonByDefault()Z +HSPLcom/android/internal/view/ActionBarPolicy;->get(Landroid/content/Context;)Lcom/android/internal/view/ActionBarPolicy; +HSPLcom/android/internal/view/ActionBarPolicy;->getEmbeddedMenuWidthLimit()I +HSPLcom/android/internal/view/ActionBarPolicy;->getMaxActionButtons()I +HSPLcom/android/internal/view/ActionBarPolicy;->hasEmbeddedTabs()Z +HSPLcom/android/internal/view/ActionBarPolicy;->showsOverflowMenuButton()Z +HSPLcom/android/internal/view/BaseIWindow;->()V +HSPLcom/android/internal/view/BaseIWindow;->setSession(Landroid/view/IWindowSession;)V +HSPLcom/android/internal/view/BaseSurfaceHolder;->()V +HSPLcom/android/internal/view/BaseSurfaceHolder;->addCallback(Landroid/view/SurfaceHolder$Callback;)V +HSPLcom/android/internal/view/BaseSurfaceHolder;->getCallbacks()[Landroid/view/SurfaceHolder$Callback; +HSPLcom/android/internal/view/BaseSurfaceHolder;->getRequestedFormat()I +HSPLcom/android/internal/view/BaseSurfaceHolder;->getRequestedHeight()I +HSPLcom/android/internal/view/BaseSurfaceHolder;->getRequestedType()I +HSPLcom/android/internal/view/BaseSurfaceHolder;->getRequestedWidth()I +HSPLcom/android/internal/view/BaseSurfaceHolder;->getSurface()Landroid/view/Surface; +HSPLcom/android/internal/view/BaseSurfaceHolder;->onAllowLockCanvas()Z +HSPLcom/android/internal/view/BaseSurfaceHolder;->onRelayoutContainer()V +HSPLcom/android/internal/view/BaseSurfaceHolder;->onUpdateSurface()V +HSPLcom/android/internal/view/BaseSurfaceHolder;->setSizeFromLayout()V +HSPLcom/android/internal/view/BaseSurfaceHolder;->setSurfaceFrameSize(II)V +HSPLcom/android/internal/view/BaseSurfaceHolder;->ungetCallbacks()V +HSPLcom/android/internal/view/IInputConnectionWrapper$MyHandler;->(Lcom/android/internal/view/IInputConnectionWrapper;Landroid/os/Looper;)V +HSPLcom/android/internal/view/IInputConnectionWrapper$MyHandler;->handleMessage(Landroid/os/Message;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->dispatchMessage(Landroid/os/Message;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->executeMessage(Landroid/os/Message;)V +HSPLcom/android/internal/view/IInputConnectionWrapper;->finishComposingText()V +HSPLcom/android/internal/view/IInputConnectionWrapper;->getInputConnection()Landroid/view/inputmethod/InputConnection; +HSPLcom/android/internal/view/IInputConnectionWrapper;->isActive()Z +HSPLcom/android/internal/view/IInputConnectionWrapper;->isFinished()Z +HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessage(I)Landroid/os/Message; +HSPLcom/android/internal/view/IInputConnectionWrapper;->onUserAction()V +HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputContext$Stub;->()V +HSPLcom/android/internal/view/IInputContext$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/view/IInputContext$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContext; +HSPLcom/android/internal/view/IInputContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/view/IInputContext;->beginBatchEdit()V +HSPLcom/android/internal/view/IInputContext;->clearMetaKeyStates(I)V +HSPLcom/android/internal/view/IInputContext;->commitCompletion(Landroid/view/inputmethod/CompletionInfo;)V +HSPLcom/android/internal/view/IInputContext;->commitContent(Landroid/view/inputmethod/InputContentInfo;ILandroid/os/Bundle;ILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)V +HSPLcom/android/internal/view/IInputContext;->commitText(Ljava/lang/CharSequence;I)V +HSPLcom/android/internal/view/IInputContext;->deleteSurroundingText(II)V +HSPLcom/android/internal/view/IInputContext;->deleteSurroundingTextInCodePoints(II)V +HSPLcom/android/internal/view/IInputContext;->endBatchEdit()V +HSPLcom/android/internal/view/IInputContext;->finishComposingText()V +HSPLcom/android/internal/view/IInputContext;->getCursorCapsMode(IILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;IILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->performContextMenuAction(I)V +HSPLcom/android/internal/view/IInputContext;->performEditorAction(I)V +HSPLcom/android/internal/view/IInputContext;->performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/android/internal/view/IInputContext;->requestUpdateCursorAnchorInfo(IILcom/android/internal/view/IInputContextCallback;)V +HSPLcom/android/internal/view/IInputContext;->sendKeyEvent(Landroid/view/KeyEvent;)V +HSPLcom/android/internal/view/IInputContext;->setComposingRegion(II)V +HSPLcom/android/internal/view/IInputContext;->setComposingText(Ljava/lang/CharSequence;I)V +HSPLcom/android/internal/view/IInputContext;->setSelection(II)V +HSPLcom/android/internal/view/IInputMethod$Stub;->()V +HSPLcom/android/internal/view/IInputMethod$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/view/IInputMethod;->attachToken(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputMethod;->bindInput(Landroid/view/inputmethod/InputBinding;)V +HSPLcom/android/internal/view/IInputMethod;->changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V +HSPLcom/android/internal/view/IInputMethod;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V +HSPLcom/android/internal/view/IInputMethod;->hideSoftInput(ILandroid/os/ResultReceiver;)V +HSPLcom/android/internal/view/IInputMethod;->revokeSession(Lcom/android/internal/view/IInputMethodSession;)V +HSPLcom/android/internal/view/IInputMethod;->setSessionEnabled(Lcom/android/internal/view/IInputMethodSession;Z)V +HSPLcom/android/internal/view/IInputMethod;->showSoftInput(ILandroid/os/ResultReceiver;)V +HSPLcom/android/internal/view/IInputMethod;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;Z)V +HSPLcom/android/internal/view/IInputMethod;->unbindInput()V +HSPLcom/android/internal/view/IInputMethodClient$Stub;->()V +HSPLcom/android/internal/view/IInputMethodClient$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/view/IInputMethodClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/view/IInputMethodClient;->onBindMethod(Lcom/android/internal/view/InputBindResult;)V +HSPLcom/android/internal/view/IInputMethodClient;->onUnbindMethod(II)V +HSPLcom/android/internal/view/IInputMethodClient;->reportFullscreenMode(Z)V +HSPLcom/android/internal/view/IInputMethodClient;->setActive(ZZ)V +HSPLcom/android/internal/view/IInputMethodClient;->setUserActionNotificationSequenceNumber(I)V +HSPLcom/android/internal/view/IInputMethodClient;->setUsingInputMethod(Z)V +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getInputMethodWindowVisibleHeight()I +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->reportFullscreenMode(Landroid/os/IBinder;Z)V +HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; +HSPLcom/android/internal/view/IInputMethodManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodManager; +HSPLcom/android/internal/view/IInputMethodManager;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V +HSPLcom/android/internal/view/IInputMethodManager;->clearLastInputMethodWindowForTransition(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputMethodManager;->createInputContentUriToken(Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken; +HSPLcom/android/internal/view/IInputMethodManager;->finishInput(Lcom/android/internal/view/IInputMethodClient;)V +HSPLcom/android/internal/view/IInputMethodManager;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; +HSPLcom/android/internal/view/IInputMethodManager;->getEnabledInputMethodList()Ljava/util/List; +HSPLcom/android/internal/view/IInputMethodManager;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List; +HSPLcom/android/internal/view/IInputMethodManager;->getInputMethodList()Ljava/util/List; +HSPLcom/android/internal/view/IInputMethodManager;->getInputMethodWindowVisibleHeight()I +HSPLcom/android/internal/view/IInputMethodManager;->getLastInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; +HSPLcom/android/internal/view/IInputMethodManager;->getShortcutInputMethodsAndSubtypes()Ljava/util/List; +HSPLcom/android/internal/view/IInputMethodManager;->hideMySoftInput(Landroid/os/IBinder;I)V +HSPLcom/android/internal/view/IInputMethodManager;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HSPLcom/android/internal/view/IInputMethodManager;->notifySuggestionPicked(Landroid/text/style/SuggestionSpan;Ljava/lang/String;I)Z +HSPLcom/android/internal/view/IInputMethodManager;->notifyUserAction(I)V +HSPLcom/android/internal/view/IInputMethodManager;->registerSuggestionSpansForNotification([Landroid/text/style/SuggestionSpan;)V +HSPLcom/android/internal/view/IInputMethodManager;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V +HSPLcom/android/internal/view/IInputMethodManager;->reportFullscreenMode(Landroid/os/IBinder;Z)V +HSPLcom/android/internal/view/IInputMethodManager;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V +HSPLcom/android/internal/view/IInputMethodManager;->setCurrentInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)Z +HSPLcom/android/internal/view/IInputMethodManager;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V +HSPLcom/android/internal/view/IInputMethodManager;->setInputMethod(Landroid/os/IBinder;Ljava/lang/String;)V +HSPLcom/android/internal/view/IInputMethodManager;->setInputMethodAndSubtype(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V +HSPLcom/android/internal/view/IInputMethodManager;->setInputMethodEnabled(Ljava/lang/String;Z)Z +HSPLcom/android/internal/view/IInputMethodManager;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z +HSPLcom/android/internal/view/IInputMethodManager;->showInputMethodAndSubtypeEnablerFromClient(Lcom/android/internal/view/IInputMethodClient;Ljava/lang/String;)V +HSPLcom/android/internal/view/IInputMethodManager;->showInputMethodPickerFromClient(Lcom/android/internal/view/IInputMethodClient;I)V +HSPLcom/android/internal/view/IInputMethodManager;->showMySoftInput(Landroid/os/IBinder;I)V +HSPLcom/android/internal/view/IInputMethodManager;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HSPLcom/android/internal/view/IInputMethodManager;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; +HSPLcom/android/internal/view/IInputMethodManager;->switchToLastInputMethod(Landroid/os/IBinder;)Z +HSPLcom/android/internal/view/IInputMethodManager;->switchToNextInputMethod(Landroid/os/IBinder;Z)Z +HSPLcom/android/internal/view/IInputMethodManager;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V +HSPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputMethodSession$Stub;->()V +HSPLcom/android/internal/view/IInputMethodSession$Stub;->asBinder()Landroid/os/IBinder; +HSPLcom/android/internal/view/IInputMethodSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodSession; +HSPLcom/android/internal/view/IInputMethodSession;->appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V +HSPLcom/android/internal/view/IInputMethodSession;->displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V +HSPLcom/android/internal/view/IInputMethodSession;->finishInput()V +HSPLcom/android/internal/view/IInputMethodSession;->finishSession()V +HSPLcom/android/internal/view/IInputMethodSession;->toggleSoftInput(II)V +HSPLcom/android/internal/view/IInputMethodSession;->updateCursor(Landroid/graphics/Rect;)V +HSPLcom/android/internal/view/IInputMethodSession;->updateCursorAnchorInfo(Landroid/view/inputmethod/CursorAnchorInfo;)V +HSPLcom/android/internal/view/IInputMethodSession;->updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V +HSPLcom/android/internal/view/IInputMethodSession;->updateSelection(IIIIII)V +HSPLcom/android/internal/view/IInputMethodSession;->viewClicked(Z)V +HSPLcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V +HSPLcom/android/internal/view/IInputSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputSessionCallback; +HSPLcom/android/internal/view/IInputSessionCallback;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V +HSPLcom/android/internal/view/InputBindResult$1;->()V +HSPLcom/android/internal/view/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/view/InputBindResult; +HSPLcom/android/internal/view/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLcom/android/internal/view/InputBindResult;->(Landroid/os/Parcel;)V +HSPLcom/android/internal/view/InputConnectionWrapper;->(Ljava/lang/ref/WeakReference;Lcom/android/internal/view/IInputContext;I)V +HSPLcom/android/internal/view/RootViewSurfaceTaker;->onRootViewScrollYChanged(I)V +HSPLcom/android/internal/view/RootViewSurfaceTaker;->setSurfaceFormat(I)V +HSPLcom/android/internal/view/RootViewSurfaceTaker;->setSurfaceKeepScreenOn(Z)V +HSPLcom/android/internal/view/RootViewSurfaceTaker;->setSurfaceType(I)V +HSPLcom/android/internal/view/RootViewSurfaceTaker;->willYouTakeTheInputQueue()Landroid/view/InputQueue$Callback; +HSPLcom/android/internal/view/RootViewSurfaceTaker;->willYouTakeTheSurface()Landroid/view/SurfaceHolder$Callback2; +HSPLcom/android/internal/view/RotationPolicy$RotationPolicyListener$1;->(Lcom/android/internal/view/RotationPolicy$RotationPolicyListener;Landroid/os/Handler;)V +HSPLcom/android/internal/view/RotationPolicy$RotationPolicyListener;->()V +HSPLcom/android/internal/view/RotationPolicy$RotationPolicyListener;->onChange()V +HSPLcom/android/internal/view/RotationPolicy;->areAllRotationsAllowed(Landroid/content/Context;)Z +HSPLcom/android/internal/view/RotationPolicy;->getRotationLockOrientation(Landroid/content/Context;)I +HSPLcom/android/internal/view/RotationPolicy;->isRotationLockToggleVisible(Landroid/content/Context;)Z +HSPLcom/android/internal/view/RotationPolicy;->isRotationLocked(Landroid/content/Context;)Z +HSPLcom/android/internal/view/RotationPolicy;->isRotationSupported(Landroid/content/Context;)Z +HSPLcom/android/internal/view/RotationPolicy;->registerRotationPolicyListener(Landroid/content/Context;Lcom/android/internal/view/RotationPolicy$RotationPolicyListener;I)V +HSPLcom/android/internal/view/SurfaceCallbackHelper$1;->(Lcom/android/internal/view/SurfaceCallbackHelper;)V +HSPLcom/android/internal/view/SurfaceCallbackHelper$1;->run()V +HSPLcom/android/internal/view/SurfaceCallbackHelper;->(Ljava/lang/Runnable;)V +HSPLcom/android/internal/view/SurfaceCallbackHelper;->dispatchSurfaceRedrawNeededAsync(Landroid/view/SurfaceHolder;[Landroid/view/SurfaceHolder$Callback;)V +HSPLcom/android/internal/view/SurfaceFlingerVsyncChoreographer;->(Landroid/os/Handler;Landroid/view/Display;Landroid/view/Choreographer;)V +HSPLcom/android/internal/view/SurfaceFlingerVsyncChoreographer;->calculateAppSurfaceFlingerVsyncOffsetMs(Landroid/view/Display;)J +HSPLcom/android/internal/view/animation/NativeInterpolatorFactory;->createNativeInterpolator()J +HSPLcom/android/internal/view/menu/ActionMenuItem;->(Landroid/content/Context;IIIILjava/lang/CharSequence;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;->()V +HSPLcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;->getPopup()Lcom/android/internal/view/menu/ShowableListMenu; +HSPLcom/android/internal/view/menu/ActionMenuItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->hasText()Z +HSPLcom/android/internal/view/menu/ActionMenuItemView;->initialize(Lcom/android/internal/view/menu/MenuItemImpl;I)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->onMeasure(II)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->prefersCondensedTitle()Z +HSPLcom/android/internal/view/menu/ActionMenuItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->setItemInvoker(Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->setPopupCallback(Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->setTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/view/menu/ActionMenuItemView;->shouldAllowTextWithIcon()Z +HSPLcom/android/internal/view/menu/ActionMenuItemView;->updateTextButtonVisibility()V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->(Landroid/content/Context;II)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->addItemView(Landroid/view/View;I)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->createItemView(Landroid/view/ViewGroup;)Lcom/android/internal/view/menu/MenuView$ItemView; +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->getItemView(Lcom/android/internal/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View; +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->setCallback(Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->setId(I)V +HSPLcom/android/internal/view/menu/BaseMenuPresenter;->updateMenuView(Z)V +HSPLcom/android/internal/view/menu/MenuBuilder$ItemInvoker;->invokeItem(Lcom/android/internal/view/menu/MenuItemImpl;)Z +HSPLcom/android/internal/view/menu/MenuBuilder;->(Landroid/content/Context;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuBuilder;->add(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuBuilder;->addInternal(IIILjava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuBuilder;->addMenuPresenter(Lcom/android/internal/view/menu/MenuPresenter;Landroid/content/Context;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->clear()V +HSPLcom/android/internal/view/menu/MenuBuilder;->createNewMenuItem(IIIILjava/lang/CharSequence;I)Lcom/android/internal/view/menu/MenuItemImpl; +HSPLcom/android/internal/view/menu/MenuBuilder;->dispatchPresenterUpdate(Z)V +HSPLcom/android/internal/view/menu/MenuBuilder;->findInsertIndex(Ljava/util/ArrayList;I)I +HSPLcom/android/internal/view/menu/MenuBuilder;->findItem(I)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuBuilder;->flagActionItems()V +HSPLcom/android/internal/view/menu/MenuBuilder;->getActionItems()Ljava/util/ArrayList; +HSPLcom/android/internal/view/menu/MenuBuilder;->getContext()Landroid/content/Context; +HSPLcom/android/internal/view/menu/MenuBuilder;->getNonActionItems()Ljava/util/ArrayList; +HSPLcom/android/internal/view/menu/MenuBuilder;->getOrdering(I)I +HSPLcom/android/internal/view/menu/MenuBuilder;->getVisibleItems()Ljava/util/ArrayList; +HSPLcom/android/internal/view/menu/MenuBuilder;->hasVisibleItems()Z +HSPLcom/android/internal/view/menu/MenuBuilder;->onItemActionRequestChanged(Lcom/android/internal/view/menu/MenuItemImpl;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->onItemVisibleChanged(Lcom/android/internal/view/menu/MenuItemImpl;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->onItemsChanged(Z)V +HSPLcom/android/internal/view/menu/MenuBuilder;->saveActionViewStates(Landroid/os/Bundle;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->setCallback(Lcom/android/internal/view/menu/MenuBuilder$Callback;)V +HSPLcom/android/internal/view/menu/MenuBuilder;->setQwertyMode(Z)V +HSPLcom/android/internal/view/menu/MenuBuilder;->setShortcutsVisibleInner(Z)V +HSPLcom/android/internal/view/menu/MenuBuilder;->size()I +HSPLcom/android/internal/view/menu/MenuBuilder;->startDispatchingItemsChanged()V +HSPLcom/android/internal/view/menu/MenuBuilder;->stopDispatchingItemsChanged()V +HSPLcom/android/internal/view/menu/MenuHelper;->dismiss()V +HSPLcom/android/internal/view/menu/MenuHelper;->setPresenterCallback(Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/view/menu/MenuItemImpl;->(Lcom/android/internal/view/menu/MenuBuilder;IIIILjava/lang/CharSequence;I)V +HSPLcom/android/internal/view/menu/MenuItemImpl;->getActionProvider()Landroid/view/ActionProvider; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getActionView()Landroid/view/View; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getContentDescription()Ljava/lang/CharSequence; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getGroupId()I +HSPLcom/android/internal/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getItemId()I +HSPLcom/android/internal/view/menu/MenuItemImpl;->getOrdering()I +HSPLcom/android/internal/view/menu/MenuItemImpl;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getTitleCondensed()Ljava/lang/CharSequence; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getTitleForItemView(Lcom/android/internal/view/menu/MenuView$ItemView;)Ljava/lang/CharSequence; +HSPLcom/android/internal/view/menu/MenuItemImpl;->getTooltipText()Ljava/lang/CharSequence; +HSPLcom/android/internal/view/menu/MenuItemImpl;->hasSubMenu()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->isActionButton()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->isActionViewExpanded()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->isEnabled()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->isVisible()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->requestsActionButton()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->requiresActionButton()Z +HSPLcom/android/internal/view/menu/MenuItemImpl;->setAlphabeticShortcut(CI)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setCheckable(Z)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setChecked(Z)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setCheckedInt(Z)V +HSPLcom/android/internal/view/menu/MenuItemImpl;->setContentDescription(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setEnabled(Z)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setIcon(I)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setIntent(Landroid/content/Intent;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setIsActionButton(Z)V +HSPLcom/android/internal/view/menu/MenuItemImpl;->setNumericShortcut(CI)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setShowAsAction(I)V +HSPLcom/android/internal/view/menu/MenuItemImpl;->setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setTooltipText(Ljava/lang/CharSequence;)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setVisible(Z)Landroid/view/MenuItem; +HSPLcom/android/internal/view/menu/MenuItemImpl;->setVisibleInt(Z)Z +HSPLcom/android/internal/view/menu/MenuPopupHelper$1;->(Lcom/android/internal/view/menu/MenuPopupHelper;)V +HSPLcom/android/internal/view/menu/MenuPopupHelper;->(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;Landroid/view/View;ZII)V +HSPLcom/android/internal/view/menu/MenuPopupHelper;->setGravity(I)V +HSPLcom/android/internal/view/menu/MenuPopupHelper;->setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V +HSPLcom/android/internal/view/menu/MenuPresenter$Callback;->onCloseMenu(Lcom/android/internal/view/menu/MenuBuilder;Z)V +HSPLcom/android/internal/view/menu/MenuPresenter$Callback;->onOpenSubMenu(Lcom/android/internal/view/menu/MenuBuilder;)Z +HSPLcom/android/internal/view/menu/MenuPresenter;->onRestoreInstanceState(Landroid/os/Parcelable;)V +HSPLcom/android/internal/view/menu/MenuPresenter;->onSaveInstanceState()Landroid/os/Parcelable; +HSPLcom/android/internal/view/menu/MenuView$ItemView;->getItemData()Lcom/android/internal/view/menu/MenuItemImpl; +HSPLcom/android/internal/view/menu/MenuView$ItemView;->initialize(Lcom/android/internal/view/menu/MenuItemImpl;I)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->prefersCondensedTitle()Z +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setCheckable(Z)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setChecked(Z)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setEnabled(Z)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setShortcut(ZC)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->setTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/view/menu/MenuView$ItemView;->showsIcon()Z +HSPLcom/android/internal/view/menu/MenuView;->getWindowAnimations()I +HSPLcom/android/internal/view/menu/MenuView;->initialize(Lcom/android/internal/view/menu/MenuBuilder;)V +HSPLcom/android/internal/view/menu/ShowableListMenu;->dismiss()V +HSPLcom/android/internal/view/menu/ShowableListMenu;->getListView()Landroid/widget/ListView; +HSPLcom/android/internal/view/menu/ShowableListMenu;->isShowing()Z +HSPLcom/android/internal/view/menu/ShowableListMenu;->show()V +HSPLcom/android/internal/widget/AbsActionBarView$VisibilityAnimListener;->(Lcom/android/internal/widget/AbsActionBarView;)V +HSPLcom/android/internal/widget/AbsActionBarView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->(Lcom/android/internal/widget/ActionBarContainer;)V +HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->(Lcom/android/internal/widget/ActionBarContainer;Lcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;)V +HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->getOpacity()I +HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLcom/android/internal/widget/ActionBarContainer;->-get0(Lcom/android/internal/widget/ActionBarContainer;)Landroid/view/View; +HSPLcom/android/internal/widget/ActionBarContainer;->-get1(Lcom/android/internal/widget/ActionBarContainer;)Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/widget/ActionBarContainer;->-get2(Lcom/android/internal/widget/ActionBarContainer;)Z +HSPLcom/android/internal/widget/ActionBarContainer;->-get3(Lcom/android/internal/widget/ActionBarContainer;)Z +HSPLcom/android/internal/widget/ActionBarContainer;->-get5(Lcom/android/internal/widget/ActionBarContainer;)Landroid/graphics/drawable/Drawable; +HSPLcom/android/internal/widget/ActionBarContainer;->-wrap0(Landroid/view/View;)Z +HSPLcom/android/internal/widget/ActionBarContainer;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/android/internal/widget/ActionBarContainer;->drawableStateChanged()V +HSPLcom/android/internal/widget/ActionBarContainer;->isCollapsed(Landroid/view/View;)Z +HSPLcom/android/internal/widget/ActionBarContainer;->jumpDrawablesToCurrentState()V +HSPLcom/android/internal/widget/ActionBarContainer;->onFinishInflate()V +HSPLcom/android/internal/widget/ActionBarContainer;->onLayout(ZIIII)V +HSPLcom/android/internal/widget/ActionBarContainer;->onMeasure(II)V +HSPLcom/android/internal/widget/ActionBarContainer;->onResolveDrawables(I)V +HSPLcom/android/internal/widget/ActionBarContainer;->setPrimaryBackground(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ActionBarContainer;->setTabContainer(Lcom/android/internal/widget/ScrollingTabContainerView;)V +HSPLcom/android/internal/widget/ActionBarContainer;->setTransitioning(Z)V +HSPLcom/android/internal/widget/ActionBarContainer;->setVisibility(I)V +HSPLcom/android/internal/widget/ActionBarContainer;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z +HSPLcom/android/internal/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/android/internal/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLcom/android/internal/widget/ActionBarContextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$1;->(Lcom/android/internal/widget/ActionBarOverlayLayout;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$2;->(Lcom/android/internal/widget/ActionBarOverlayLayout;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$3;->(Lcom/android/internal/widget/ActionBarOverlayLayout;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$4;->(Lcom/android/internal/widget/ActionBarOverlayLayout;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$5;->(Ljava/lang/String;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->enableContentAnimations(Z)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->hideForSystem()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->onContentScrollStarted()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->onContentScrollStopped()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->onWindowVisibilityChanged(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;->showForSystem()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->applyInsets(Landroid/view/View;Landroid/graphics/Rect;ZZZZ)Z +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Lcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams; +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->getDecorToolbar(Landroid/view/View;)Lcom/android/internal/widget/DecorToolbar; +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->hasIcon()Z +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->hasLogo()Z +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->init(Landroid/content/Context;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->initFeature(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onLayout(ZIIII)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onMeasure(II)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onWindowSystemUiVisibilityChanged(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onWindowVisibilityChanged(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->pullChildren()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setActionBarVisibilityCallback(Lcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setHasNonEmbeddedTabs(Z)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setIcon(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setLogo(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setMenu(Landroid/view/Menu;Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setMenuPrepared()V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setOverlayMode(Z)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setUiOptions(I)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setWindowCallback(Landroid/view/Window$Callback;)V +HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/BackgroundFallback;->()V +HSPLcom/android/internal/widget/BackgroundFallback;->draw(Landroid/view/ViewGroup;Landroid/view/ViewGroup;Landroid/graphics/Canvas;Landroid/view/View;)V +HSPLcom/android/internal/widget/BackgroundFallback;->hasFallback()Z +HSPLcom/android/internal/widget/BackgroundFallback;->setDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorContentParent;->canShowOverflowMenu()Z +HSPLcom/android/internal/widget/DecorContentParent;->dismissPopups()V +HSPLcom/android/internal/widget/DecorContentParent;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/DecorContentParent;->hasIcon()Z +HSPLcom/android/internal/widget/DecorContentParent;->hasLogo()Z +HSPLcom/android/internal/widget/DecorContentParent;->hideOverflowMenu()Z +HSPLcom/android/internal/widget/DecorContentParent;->initFeature(I)V +HSPLcom/android/internal/widget/DecorContentParent;->isOverflowMenuShowPending()Z +HSPLcom/android/internal/widget/DecorContentParent;->isOverflowMenuShowing()Z +HSPLcom/android/internal/widget/DecorContentParent;->restoreToolbarHierarchyState(Landroid/util/SparseArray;)V +HSPLcom/android/internal/widget/DecorContentParent;->saveToolbarHierarchyState(Landroid/util/SparseArray;)V +HSPLcom/android/internal/widget/DecorContentParent;->setIcon(I)V +HSPLcom/android/internal/widget/DecorContentParent;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorContentParent;->setLogo(I)V +HSPLcom/android/internal/widget/DecorContentParent;->setMenu(Landroid/view/Menu;Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/widget/DecorContentParent;->setMenuPrepared()V +HSPLcom/android/internal/widget/DecorContentParent;->setUiOptions(I)V +HSPLcom/android/internal/widget/DecorContentParent;->setWindowCallback(Landroid/view/Window$Callback;)V +HSPLcom/android/internal/widget/DecorContentParent;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/DecorContentParent;->showOverflowMenu()Z +HSPLcom/android/internal/widget/DecorToolbar;->animateToVisibility(I)V +HSPLcom/android/internal/widget/DecorToolbar;->canShowOverflowMenu()Z +HSPLcom/android/internal/widget/DecorToolbar;->canSplit()Z +HSPLcom/android/internal/widget/DecorToolbar;->collapseActionView()V +HSPLcom/android/internal/widget/DecorToolbar;->dismissPopupMenus()V +HSPLcom/android/internal/widget/DecorToolbar;->getContext()Landroid/content/Context; +HSPLcom/android/internal/widget/DecorToolbar;->getCustomView()Landroid/view/View; +HSPLcom/android/internal/widget/DecorToolbar;->getDisplayOptions()I +HSPLcom/android/internal/widget/DecorToolbar;->getDropdownItemCount()I +HSPLcom/android/internal/widget/DecorToolbar;->getDropdownSelectedPosition()I +HSPLcom/android/internal/widget/DecorToolbar;->getHeight()I +HSPLcom/android/internal/widget/DecorToolbar;->getMenu()Landroid/view/Menu; +HSPLcom/android/internal/widget/DecorToolbar;->getNavigationMode()I +HSPLcom/android/internal/widget/DecorToolbar;->getSubtitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/DecorToolbar;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/DecorToolbar;->getViewGroup()Landroid/view/ViewGroup; +HSPLcom/android/internal/widget/DecorToolbar;->getVisibility()I +HSPLcom/android/internal/widget/DecorToolbar;->hasEmbeddedTabs()Z +HSPLcom/android/internal/widget/DecorToolbar;->hasExpandedActionView()Z +HSPLcom/android/internal/widget/DecorToolbar;->hasIcon()Z +HSPLcom/android/internal/widget/DecorToolbar;->hasLogo()Z +HSPLcom/android/internal/widget/DecorToolbar;->hideOverflowMenu()Z +HSPLcom/android/internal/widget/DecorToolbar;->initIndeterminateProgress()V +HSPLcom/android/internal/widget/DecorToolbar;->initProgress()V +HSPLcom/android/internal/widget/DecorToolbar;->isOverflowMenuShowPending()Z +HSPLcom/android/internal/widget/DecorToolbar;->isOverflowMenuShowing()Z +HSPLcom/android/internal/widget/DecorToolbar;->isSplit()Z +HSPLcom/android/internal/widget/DecorToolbar;->isTitleTruncated()Z +HSPLcom/android/internal/widget/DecorToolbar;->restoreHierarchyState(Landroid/util/SparseArray;)V +HSPLcom/android/internal/widget/DecorToolbar;->saveHierarchyState(Landroid/util/SparseArray;)V +HSPLcom/android/internal/widget/DecorToolbar;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorToolbar;->setCollapsible(Z)V +HSPLcom/android/internal/widget/DecorToolbar;->setCustomView(Landroid/view/View;)V +HSPLcom/android/internal/widget/DecorToolbar;->setDefaultNavigationContentDescription(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setDefaultNavigationIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorToolbar;->setDisplayOptions(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setDropdownParams(Landroid/widget/SpinnerAdapter;Landroid/widget/AdapterView$OnItemSelectedListener;)V +HSPLcom/android/internal/widget/DecorToolbar;->setDropdownSelectedPosition(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setEmbeddedTabView(Lcom/android/internal/widget/ScrollingTabContainerView;)V +HSPLcom/android/internal/widget/DecorToolbar;->setHomeButtonEnabled(Z)V +HSPLcom/android/internal/widget/DecorToolbar;->setIcon(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorToolbar;->setLogo(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setLogo(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorToolbar;->setMenu(Landroid/view/Menu;Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/widget/DecorToolbar;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V +HSPLcom/android/internal/widget/DecorToolbar;->setMenuPrepared()V +HSPLcom/android/internal/widget/DecorToolbar;->setNavigationContentDescription(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setNavigationContentDescription(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/DecorToolbar;->setNavigationIcon(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/DecorToolbar;->setNavigationMode(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setSplitToolbar(Z)V +HSPLcom/android/internal/widget/DecorToolbar;->setSplitView(Landroid/view/ViewGroup;)V +HSPLcom/android/internal/widget/DecorToolbar;->setSplitWhenNarrow(Z)V +HSPLcom/android/internal/widget/DecorToolbar;->setSubtitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/DecorToolbar;->setTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/DecorToolbar;->setVisibility(I)V +HSPLcom/android/internal/widget/DecorToolbar;->setWindowCallback(Landroid/view/Window$Callback;)V +HSPLcom/android/internal/widget/DecorToolbar;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/DecorToolbar;->setupAnimatorToVisibility(IJ)Landroid/animation/Animator; +HSPLcom/android/internal/widget/DecorToolbar;->showOverflowMenu()Z +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->(Landroid/os/IBinder;)V +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->checkVoldPassword(I)Z +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getBoolean(Ljava/lang/String;ZI)Z +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getLong(Ljava/lang/String;JI)J +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +HSPLcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings; +HSPLcom/android/internal/widget/ILockSettings;->addEscrowToken([BI)J +HSPLcom/android/internal/widget/ILockSettings;->checkCredential(Ljava/lang/String;IILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse; +HSPLcom/android/internal/widget/ILockSettings;->checkVoldPassword(I)Z +HSPLcom/android/internal/widget/ILockSettings;->getBoolean(Ljava/lang/String;ZI)Z +HSPLcom/android/internal/widget/ILockSettings;->getLong(Ljava/lang/String;JI)J +HSPLcom/android/internal/widget/ILockSettings;->getSeparateProfileChallengeEnabled(I)Z +HSPLcom/android/internal/widget/ILockSettings;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/widget/ILockSettings;->getStrongAuthForUser(I)I +HSPLcom/android/internal/widget/ILockSettings;->havePassword(I)Z +HSPLcom/android/internal/widget/ILockSettings;->havePattern(I)Z +HSPLcom/android/internal/widget/ILockSettings;->isEscrowTokenActive(JI)Z +HSPLcom/android/internal/widget/ILockSettings;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +HSPLcom/android/internal/widget/ILockSettings;->removeEscrowToken(JI)Z +HSPLcom/android/internal/widget/ILockSettings;->requireStrongAuth(II)V +HSPLcom/android/internal/widget/ILockSettings;->resetKeyStore(I)V +HSPLcom/android/internal/widget/ILockSettings;->setBoolean(Ljava/lang/String;ZI)V +HSPLcom/android/internal/widget/ILockSettings;->setLockCredential(Ljava/lang/String;ILjava/lang/String;II)V +HSPLcom/android/internal/widget/ILockSettings;->setLockCredentialWithToken(Ljava/lang/String;IJ[BII)Z +HSPLcom/android/internal/widget/ILockSettings;->setLong(Ljava/lang/String;JI)V +HSPLcom/android/internal/widget/ILockSettings;->setSeparateProfileChallengeEnabled(IZLjava/lang/String;)V +HSPLcom/android/internal/widget/ILockSettings;->setString(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/internal/widget/ILockSettings;->systemReady()V +HSPLcom/android/internal/widget/ILockSettings;->unlockUserWithToken(J[BI)V +HSPLcom/android/internal/widget/ILockSettings;->unregisterStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +HSPLcom/android/internal/widget/ILockSettings;->userPresent(I)V +HSPLcom/android/internal/widget/ILockSettings;->verifyCredential(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse; +HSPLcom/android/internal/widget/ILockSettings;->verifyTiedProfileChallenge(Ljava/lang/String;IJI)Lcom/android/internal/widget/VerifyCredentialResponse; +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$1;->(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;)V +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H;->(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;Landroid/os/Looper;)V +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->(Landroid/content/Context;)V +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->(Landroid/content/Context;Landroid/os/Looper;)V +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->getDefaultFlags(Landroid/content/Context;)I +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->getStrongAuthForUser(I)I +HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->isFingerprintAllowedForUser(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->(Landroid/content/Context;)V +HSPLcom/android/internal/widget/LockPatternUtils;->checkVoldPassword(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->getBoolean(Ljava/lang/String;ZI)Z +HSPLcom/android/internal/widget/LockPatternUtils;->getDeviceOwnerInfo()Ljava/lang/String; +HSPLcom/android/internal/widget/LockPatternUtils;->getKeyguardStoredPasswordQuality(I)I +HSPLcom/android/internal/widget/LockPatternUtils;->getLockSettings()Lcom/android/internal/widget/ILockSettings; +HSPLcom/android/internal/widget/LockPatternUtils;->getLong(Ljava/lang/String;JI)J +HSPLcom/android/internal/widget/LockPatternUtils;->getString(Ljava/lang/String;I)Ljava/lang/String; +HSPLcom/android/internal/widget/LockPatternUtils;->getUserManager()Landroid/os/UserManager; +HSPLcom/android/internal/widget/LockPatternUtils;->isDeviceOwnerInfoEnabled()Z +HSPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(II)Z +HSPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(II)Z +HSPLcom/android/internal/widget/LockPatternUtils;->isLockScreenDisabled(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z +HSPLcom/android/internal/widget/LockPatternUtils;->registerStrongAuthTracker(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;)V +HSPLcom/android/internal/widget/ScrollBarUtils;->getThumbLength(IIII)I +HSPLcom/android/internal/widget/ScrollBarUtils;->getThumbOffset(IIIII)I +HSPLcom/android/internal/widget/ToolbarWidgetWrapper$1;->(Lcom/android/internal/widget/ToolbarWidgetWrapper;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->-get1(Lcom/android/internal/widget/ToolbarWidgetWrapper;)Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->-get2(Lcom/android/internal/widget/ToolbarWidgetWrapper;)Landroid/widget/Toolbar; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->(Landroid/widget/Toolbar;Z)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->(Landroid/widget/Toolbar;ZI)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->detectDisplayOptions()I +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getContext()Landroid/content/Context; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getDisplayOptions()I +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getMenu()Landroid/view/Menu; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getNavigationMode()I +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getTitle()Ljava/lang/CharSequence; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getViewGroup()Landroid/view/ViewGroup; +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->hasIcon()Z +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->hasLogo()Z +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->isSplit()Z +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setCollapsible(Z)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDefaultNavigationContentDescription(I)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDisplayOptions(I)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setEmbeddedTabView(Lcom/android/internal/widget/ScrollingTabContainerView;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setHomeButtonEnabled(Z)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(I)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setLogo(I)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setLogo(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenu(Landroid/view/Menu;Lcom/android/internal/view/menu/MenuPresenter$Callback;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuPrepared()V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setNavigationContentDescription(I)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setNavigationContentDescription(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setTitleInt(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setWindowCallback(Landroid/view/Window$Callback;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setWindowTitle(Ljava/lang/CharSequence;)V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->updateHomeAccessibility()V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->updateNavigationIcon()V +HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->updateToolbarLogo()V +HSPLcom/android/okhttp/Address;->(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V +HSPLcom/android/okhttp/Address;->equals(Ljava/lang/Object;)Z +HSPLcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner; +HSPLcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List; +HSPLcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns; +HSPLcom/android/okhttp/Address;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; +HSPLcom/android/okhttp/Address;->getProtocols()Ljava/util/List; +HSPLcom/android/okhttp/Address;->getProxy()Ljava/net/Proxy; +HSPLcom/android/okhttp/Address;->getProxySelector()Ljava/net/ProxySelector; +HSPLcom/android/okhttp/Address;->getSocketFactory()Ljavax/net/SocketFactory; +HSPLcom/android/okhttp/Address;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLcom/android/okhttp/Address;->getUriHost()Ljava/lang/String; +HSPLcom/android/okhttp/Address;->getUriPort()I +HSPLcom/android/okhttp/Address;->hashCode()I +HSPLcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/AndroidShimResponseCache;->(Lcom/android/okhttp/Cache;)V +HSPLcom/android/okhttp/AndroidShimResponseCache;->create(Ljava/io/File;J)Lcom/android/okhttp/AndroidShimResponseCache; +HSPLcom/android/okhttp/Authenticator;->authenticate(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/Authenticator;->authenticateProxy(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/Cache$1;->(Lcom/android/okhttp/Cache;)V +HSPLcom/android/okhttp/Cache;->(Ljava/io/File;J)V +HSPLcom/android/okhttp/Cache;->(Ljava/io/File;JLcom/android/okhttp/internal/io/FileSystem;)V +HSPLcom/android/okhttp/CacheControl$Builder;->()V +HSPLcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl; +HSPLcom/android/okhttp/CacheControl$Builder;->maxStale(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder; +HSPLcom/android/okhttp/CacheControl$Builder;->noCache()Lcom/android/okhttp/CacheControl$Builder; +HSPLcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder; +HSPLcom/android/okhttp/CacheControl;->(Lcom/android/okhttp/CacheControl$Builder;)V +HSPLcom/android/okhttp/CacheControl;->(Lcom/android/okhttp/CacheControl$Builder;Lcom/android/okhttp/CacheControl;)V +HSPLcom/android/okhttp/CacheControl;->(ZZIIZZZIIZZLjava/lang/String;)V +HSPLcom/android/okhttp/CacheControl;->onlyIfCached()Z +HSPLcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl; +HSPLcom/android/okhttp/CertificatePinner$Builder;->-get0(Lcom/android/okhttp/CertificatePinner$Builder;)Ljava/util/Map; +HSPLcom/android/okhttp/CertificatePinner$Builder;->()V +HSPLcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner; +HSPLcom/android/okhttp/CertificatePinner;->(Lcom/android/okhttp/CertificatePinner$Builder;)V +HSPLcom/android/okhttp/CertificatePinner;->(Lcom/android/okhttp/CertificatePinner$Builder;Lcom/android/okhttp/CertificatePinner;)V +HSPLcom/android/okhttp/CipherSuite;->(Ljava/lang/String;ILjava/lang/String;IIII)V +HSPLcom/android/okhttp/ConfigAwareConnectionPool$1;->(Lcom/android/okhttp/ConfigAwareConnectionPool;)V +HSPLcom/android/okhttp/ConfigAwareConnectionPool;->()V +HSPLcom/android/okhttp/ConfigAwareConnectionPool;->get()Lcom/android/okhttp/ConnectionPool; +HSPLcom/android/okhttp/ConfigAwareConnectionPool;->getInstance()Lcom/android/okhttp/ConfigAwareConnectionPool; +HSPLcom/android/okhttp/Connection;->getHandshake()Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/Connection;->getProtocol()Lcom/android/okhttp/Protocol; +HSPLcom/android/okhttp/Connection;->getRoute()Lcom/android/okhttp/Route; +HSPLcom/android/okhttp/Connection;->getSocket()Ljava/net/Socket; +HSPLcom/android/okhttp/ConnectionPool$1;->(Lcom/android/okhttp/ConnectionPool;)V +HSPLcom/android/okhttp/ConnectionPool$1;->run()V +HSPLcom/android/okhttp/ConnectionPool;->(IJ)V +HSPLcom/android/okhttp/ConnectionPool;->(IJLjava/util/concurrent/TimeUnit;)V +HSPLcom/android/okhttp/ConnectionPool;->cleanup(J)J +HSPLcom/android/okhttp/ConnectionPool;->connectionBecameIdle(Lcom/android/okhttp/internal/io/RealConnection;)Z +HSPLcom/android/okhttp/ConnectionPool;->get(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/ConnectionPool;->pruneAndGetAllocationCount(Lcom/android/okhttp/internal/io/RealConnection;J)I +HSPLcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V +HSPLcom/android/okhttp/ConnectionSpec$Builder;->-get0(Lcom/android/okhttp/ConnectionSpec$Builder;)[Ljava/lang/String; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->-get1(Lcom/android/okhttp/ConnectionSpec$Builder;)Z +HSPLcom/android/okhttp/ConnectionSpec$Builder;->-get2(Lcom/android/okhttp/ConnectionSpec$Builder;)Z +HSPLcom/android/okhttp/ConnectionSpec$Builder;->-get3(Lcom/android/okhttp/ConnectionSpec$Builder;)[Ljava/lang/String; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->(Lcom/android/okhttp/ConnectionSpec;)V +HSPLcom/android/okhttp/ConnectionSpec$Builder;->(Z)V +HSPLcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Lcom/android/okhttp/CipherSuite;)Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Lcom/android/okhttp/TlsVersion;)Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder; +HSPLcom/android/okhttp/ConnectionSpec;->-get0(Lcom/android/okhttp/ConnectionSpec;)[Ljava/lang/String; +HSPLcom/android/okhttp/ConnectionSpec;->-get1(Lcom/android/okhttp/ConnectionSpec;)Z +HSPLcom/android/okhttp/ConnectionSpec;->-get2(Lcom/android/okhttp/ConnectionSpec;)Z +HSPLcom/android/okhttp/ConnectionSpec;->-get3(Lcom/android/okhttp/ConnectionSpec;)[Ljava/lang/String; +HSPLcom/android/okhttp/ConnectionSpec;->(Lcom/android/okhttp/ConnectionSpec$Builder;)V +HSPLcom/android/okhttp/ConnectionSpec;->(Lcom/android/okhttp/ConnectionSpec$Builder;Lcom/android/okhttp/ConnectionSpec;)V +HSPLcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V +HSPLcom/android/okhttp/ConnectionSpec;->equals(Ljava/lang/Object;)Z +HSPLcom/android/okhttp/ConnectionSpec;->hashCode()I +HSPLcom/android/okhttp/ConnectionSpec;->isCompatible(Ljavax/net/ssl/SSLSocket;)Z +HSPLcom/android/okhttp/ConnectionSpec;->supportedSpec(Ljavax/net/ssl/SSLSocket;Z)Lcom/android/okhttp/ConnectionSpec; +HSPLcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions()Z +HSPLcom/android/okhttp/Dispatcher;->()V +HSPLcom/android/okhttp/Dns$1;->()V +HSPLcom/android/okhttp/Dns$1;->lookup(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/okhttp/Dns;->lookup(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/okhttp/Handshake;->(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V +HSPLcom/android/okhttp/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/Headers$Builder;->-get0(Lcom/android/okhttp/Headers$Builder;)Ljava/util/List; +HSPLcom/android/okhttp/Headers$Builder;->()V +HSPLcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Headers$Builder;->checkNameAndValue(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers;->(Lcom/android/okhttp/Headers$Builder;)V +HSPLcom/android/okhttp/Headers;->(Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers;)V +HSPLcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;->name(I)Ljava/lang/String; +HSPLcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Headers;->size()I +HSPLcom/android/okhttp/Headers;->value(I)Ljava/lang/String; +HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->()V +HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->(Lcom/android/okhttp/HttpHandler$CleartextURLFilter;)V +HSPLcom/android/okhttp/HttpHandler;->()V +HSPLcom/android/okhttp/HttpHandler;->createHttpOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory; +HSPLcom/android/okhttp/HttpHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection; +HSPLcom/android/okhttp/HttpUrl$Builder$ParseResult;->(Ljava/lang/String;I)V +HSPLcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult; +HSPLcom/android/okhttp/HttpUrl$Builder;->()V +HSPLcom/android/okhttp/HttpUrl$Builder;->build()Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/HttpUrl$Builder;->canonicalizeHost(Ljava/lang/String;II)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl$Builder;->containsInvalidHostnameAsciiCodes(Ljava/lang/String;)Z +HSPLcom/android/okhttp/HttpUrl$Builder;->domainToAscii(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl$Builder;->effectivePort()I +HSPLcom/android/okhttp/HttpUrl$Builder;->encodedQuery(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl$Builder;->host(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl$Builder;->isDot(Ljava/lang/String;)Z +HSPLcom/android/okhttp/HttpUrl$Builder;->isDotDot(Ljava/lang/String;)Z +HSPLcom/android/okhttp/HttpUrl$Builder;->parse(Lcom/android/okhttp/HttpUrl;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult; +HSPLcom/android/okhttp/HttpUrl$Builder;->port(I)Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl$Builder;->portColonOffset(Ljava/lang/String;II)I +HSPLcom/android/okhttp/HttpUrl$Builder;->push(Ljava/lang/String;IIZZ)V +HSPLcom/android/okhttp/HttpUrl$Builder;->reencodeForUri()Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl$Builder;->resolvePath(Ljava/lang/String;II)V +HSPLcom/android/okhttp/HttpUrl$Builder;->scheme(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl$Builder;->schemeDelimiterOffset(Ljava/lang/String;II)I +HSPLcom/android/okhttp/HttpUrl$Builder;->skipLeadingAsciiWhitespace(Ljava/lang/String;II)I +HSPLcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I +HSPLcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I +HSPLcom/android/okhttp/HttpUrl$Builder;->toString()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->-getcom-android-okhttp-HttpUrl$Builder$ParseResultSwitchesValues()[I +HSPLcom/android/okhttp/HttpUrl;->-wrap0(Ljava/lang/String;IILjava/lang/String;)I +HSPLcom/android/okhttp/HttpUrl;->(Lcom/android/okhttp/HttpUrl$Builder;)V +HSPLcom/android/okhttp/HttpUrl;->(Lcom/android/okhttp/HttpUrl$Builder;Lcom/android/okhttp/HttpUrl;)V +HSPLcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;Ljava/lang/String;ZZZZ)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I +HSPLcom/android/okhttp/HttpUrl;->defaultPort(Ljava/lang/String;)I +HSPLcom/android/okhttp/HttpUrl;->delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I +HSPLcom/android/okhttp/HttpUrl;->encodedFragment()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->encodedPath()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List; +HSPLcom/android/okhttp/HttpUrl;->encodedQuery()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->equals(Ljava/lang/Object;)Z +HSPLcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/HttpUrl;->hashCode()I +HSPLcom/android/okhttp/HttpUrl;->host()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->isHttps()Z +HSPLcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V +HSPLcom/android/okhttp/HttpUrl;->newBuilder()Lcom/android/okhttp/HttpUrl$Builder; +HSPLcom/android/okhttp/HttpUrl;->pathSegmentsToString(Ljava/lang/StringBuilder;Ljava/util/List;)V +HSPLcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V +HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;Z)Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List; +HSPLcom/android/okhttp/HttpUrl;->port()I +HSPLcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/okhttp/HttpUrl;->scheme()Ljava/lang/String; +HSPLcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI; +HSPLcom/android/okhttp/HttpsHandler;->()V +HSPLcom/android/okhttp/HttpsHandler;->createHttpsOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory; +HSPLcom/android/okhttp/HttpsHandler;->getDefaultPort()I +HSPLcom/android/okhttp/HttpsHandler;->newOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory; +HSPLcom/android/okhttp/OkCacheContainer;->getCache()Lcom/android/okhttp/Cache; +HSPLcom/android/okhttp/OkHttpClient$1;->()V +HSPLcom/android/okhttp/OkHttpClient$1;->addLenient(Lcom/android/okhttp/Headers$Builder;Ljava/lang/String;)V +HSPLcom/android/okhttp/OkHttpClient$1;->apply(Lcom/android/okhttp/ConnectionSpec;Ljavax/net/ssl/SSLSocket;Z)V +HSPLcom/android/okhttp/OkHttpClient$1;->connectionBecameIdle(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/internal/io/RealConnection;)Z +HSPLcom/android/okhttp/OkHttpClient$1;->get(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/OkHttpClient$1;->getHttpUrlChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/OkHttpClient$1;->internalCache(Lcom/android/okhttp/OkHttpClient;)Lcom/android/okhttp/internal/InternalCache; +HSPLcom/android/okhttp/OkHttpClient$1;->put(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/internal/io/RealConnection;)V +HSPLcom/android/okhttp/OkHttpClient$1;->routeDatabase(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/internal/RouteDatabase; +HSPLcom/android/okhttp/OkHttpClient;->()V +HSPLcom/android/okhttp/OkHttpClient;->(Lcom/android/okhttp/OkHttpClient;)V +HSPLcom/android/okhttp/OkHttpClient;->copyWithDefaults()Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->getAuthenticator()Lcom/android/okhttp/Authenticator; +HSPLcom/android/okhttp/OkHttpClient;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner; +HSPLcom/android/okhttp/OkHttpClient;->getConnectTimeout()I +HSPLcom/android/okhttp/OkHttpClient;->getConnectionPool()Lcom/android/okhttp/ConnectionPool; +HSPLcom/android/okhttp/OkHttpClient;->getConnectionSpecs()Ljava/util/List; +HSPLcom/android/okhttp/OkHttpClient;->getCookieHandler()Ljava/net/CookieHandler; +HSPLcom/android/okhttp/OkHttpClient;->getDns()Lcom/android/okhttp/Dns; +HSPLcom/android/okhttp/OkHttpClient;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; +HSPLcom/android/okhttp/OkHttpClient;->getProtocols()Ljava/util/List; +HSPLcom/android/okhttp/OkHttpClient;->getProxy()Ljava/net/Proxy; +HSPLcom/android/okhttp/OkHttpClient;->getProxySelector()Ljava/net/ProxySelector; +HSPLcom/android/okhttp/OkHttpClient;->getReadTimeout()I +HSPLcom/android/okhttp/OkHttpClient;->getRetryOnConnectionFailure()Z +HSPLcom/android/okhttp/OkHttpClient;->getSocketFactory()Ljavax/net/SocketFactory; +HSPLcom/android/okhttp/OkHttpClient;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLcom/android/okhttp/OkHttpClient;->getWriteTimeout()I +HSPLcom/android/okhttp/OkHttpClient;->internalCache()Lcom/android/okhttp/internal/InternalCache; +HSPLcom/android/okhttp/OkHttpClient;->setCertificatePinner(Lcom/android/okhttp/CertificatePinner;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setConnectTimeout(JLjava/util/concurrent/TimeUnit;)V +HSPLcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V +HSPLcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setProtocols(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V +HSPLcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V +HSPLcom/android/okhttp/OkUrlFactory;->(Lcom/android/okhttp/OkHttpClient;)V +HSPLcom/android/okhttp/OkUrlFactory;->client()Lcom/android/okhttp/OkHttpClient; +HSPLcom/android/okhttp/OkUrlFactory;->open(Ljava/net/URL;)Ljava/net/HttpURLConnection; +HSPLcom/android/okhttp/OkUrlFactory;->open(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/HttpURLConnection; +HSPLcom/android/okhttp/OkUrlFactory;->setUrlFilter(Lcom/android/okhttp/internal/URLFilter;)V +HSPLcom/android/okhttp/Protocol;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol; +HSPLcom/android/okhttp/Protocol;->toString()Ljava/lang/String; +HSPLcom/android/okhttp/Request$Builder;->-get0(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/RequestBody; +HSPLcom/android/okhttp/Request$Builder;->-get1(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Request$Builder;->-get2(Lcom/android/okhttp/Request$Builder;)Ljava/lang/String; +HSPLcom/android/okhttp/Request$Builder;->-get3(Lcom/android/okhttp/Request$Builder;)Ljava/lang/Object; +HSPLcom/android/okhttp/Request$Builder;->-get4(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/Request$Builder;->()V +HSPLcom/android/okhttp/Request$Builder;->(Lcom/android/okhttp/Request;)V +HSPLcom/android/okhttp/Request$Builder;->(Lcom/android/okhttp/Request;Lcom/android/okhttp/Request$Builder;)V +HSPLcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; +HSPLcom/android/okhttp/Request$Builder;->build()Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/Request$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; +HSPLcom/android/okhttp/Request$Builder;->method(Ljava/lang/String;Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; +HSPLcom/android/okhttp/Request$Builder;->url(Lcom/android/okhttp/HttpUrl;)Lcom/android/okhttp/Request$Builder; +HSPLcom/android/okhttp/Request;->-get0(Lcom/android/okhttp/Request;)Lcom/android/okhttp/RequestBody; +HSPLcom/android/okhttp/Request;->-get1(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Request;->-get2(Lcom/android/okhttp/Request;)Ljava/lang/String; +HSPLcom/android/okhttp/Request;->-get3(Lcom/android/okhttp/Request;)Ljava/lang/Object; +HSPLcom/android/okhttp/Request;->-get4(Lcom/android/okhttp/Request;)Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/Request;->(Lcom/android/okhttp/Request$Builder;)V +HSPLcom/android/okhttp/Request;->(Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request;)V +HSPLcom/android/okhttp/Request;->cacheControl()Lcom/android/okhttp/CacheControl; +HSPLcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Request;->headers()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Request;->httpUrl()Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/Request;->isHttps()Z +HSPLcom/android/okhttp/Request;->method()Ljava/lang/String; +HSPLcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder; +HSPLcom/android/okhttp/RequestBody$2;->(Lcom/android/okhttp/MediaType;I[BI)V +HSPLcom/android/okhttp/RequestBody;->()V +HSPLcom/android/okhttp/RequestBody;->contentType()Lcom/android/okhttp/MediaType; +HSPLcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody; +HSPLcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[BII)Lcom/android/okhttp/RequestBody; +HSPLcom/android/okhttp/RequestBody;->writeTo(Lcom/android/okhttp/okio/BufferedSink;)V +HSPLcom/android/okhttp/Response$Builder;->-get0(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/ResponseBody; +HSPLcom/android/okhttp/Response$Builder;->-get1(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response$Builder;->-get2(Lcom/android/okhttp/Response$Builder;)I +HSPLcom/android/okhttp/Response$Builder;->-get3(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/Response$Builder;->-get4(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Headers$Builder; +HSPLcom/android/okhttp/Response$Builder;->-get5(Lcom/android/okhttp/Response$Builder;)Ljava/lang/String; +HSPLcom/android/okhttp/Response$Builder;->-get6(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response$Builder;->-get7(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response$Builder;->-get8(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Protocol; +HSPLcom/android/okhttp/Response$Builder;->-get9(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/Response$Builder;->()V +HSPLcom/android/okhttp/Response$Builder;->(Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/Response$Builder;->(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response$Builder;)V +HSPLcom/android/okhttp/Response$Builder;->body(Lcom/android/okhttp/ResponseBody;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->build()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response$Builder;->cacheResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->checkSupportResponse(Ljava/lang/String;Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/Response$Builder;->code(I)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->handshake(Lcom/android/okhttp/Handshake;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->message(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->networkResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->priorResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->protocol(Lcom/android/okhttp/Protocol;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response;->-get0(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody; +HSPLcom/android/okhttp/Response;->-get1(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response;->-get2(Lcom/android/okhttp/Response;)I +HSPLcom/android/okhttp/Response;->-get3(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/Response;->-get4(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Response;->-get5(Lcom/android/okhttp/Response;)Ljava/lang/String; +HSPLcom/android/okhttp/Response;->-get6(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response;->-get7(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response;->-get8(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Protocol; +HSPLcom/android/okhttp/Response;->-get9(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/Response;->(Lcom/android/okhttp/Response$Builder;)V +HSPLcom/android/okhttp/Response;->(Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody; +HSPLcom/android/okhttp/Response;->cacheResponse()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response;->code()I +HSPLcom/android/okhttp/Response;->header(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Response;->header(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/Response;->headers()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/Response;->networkResponse()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/Response;->newBuilder()Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol; +HSPLcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/ResponseBody;->()V +HSPLcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream; +HSPLcom/android/okhttp/Route;->(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V +HSPLcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address; +HSPLcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy; +HSPLcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress; +HSPLcom/android/okhttp/Route;->hashCode()I +HSPLcom/android/okhttp/Route;->requiresTunnel()Z +HSPLcom/android/okhttp/TlsVersion;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->(Ljava/util/List;)V +HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->configureSecureSocket(Ljavax/net/ssl/SSLSocket;)Lcom/android/okhttp/ConnectionSpec; +HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->isFallbackPossible(Ljavax/net/ssl/SSLSocket;)Z +HSPLcom/android/okhttp/internal/DiskLruCache$1;->(Lcom/android/okhttp/internal/DiskLruCache;)V +HSPLcom/android/okhttp/internal/DiskLruCache$2;->()V +HSPLcom/android/okhttp/internal/DiskLruCache;->(Lcom/android/okhttp/internal/io/FileSystem;Ljava/io/File;IIJLjava/util/concurrent/Executor;)V +HSPLcom/android/okhttp/internal/DiskLruCache;->create(Lcom/android/okhttp/internal/io/FileSystem;Ljava/io/File;IIJ)Lcom/android/okhttp/internal/DiskLruCache; +HSPLcom/android/okhttp/internal/Internal;->()V +HSPLcom/android/okhttp/internal/Internal;->addLenient(Lcom/android/okhttp/Headers$Builder;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/Internal;->addLenient(Lcom/android/okhttp/Headers$Builder;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/Internal;->apply(Lcom/android/okhttp/ConnectionSpec;Ljavax/net/ssl/SSLSocket;Z)V +HSPLcom/android/okhttp/internal/Internal;->callEngineGetStreamAllocation(Lcom/android/okhttp/Call;)Lcom/android/okhttp/internal/http/StreamAllocation; +HSPLcom/android/okhttp/internal/Internal;->callEnqueue(Lcom/android/okhttp/Call;Lcom/android/okhttp/Callback;Z)V +HSPLcom/android/okhttp/internal/Internal;->connectionBecameIdle(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/internal/io/RealConnection;)Z +HSPLcom/android/okhttp/internal/Internal;->get(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/internal/Internal;->getHttpUrlChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; +HSPLcom/android/okhttp/internal/Internal;->internalCache(Lcom/android/okhttp/OkHttpClient;)Lcom/android/okhttp/internal/InternalCache; +HSPLcom/android/okhttp/internal/Internal;->put(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/internal/io/RealConnection;)V +HSPLcom/android/okhttp/internal/Internal;->routeDatabase(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/internal/RouteDatabase; +HSPLcom/android/okhttp/internal/Internal;->setCache(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/InternalCache;)V +HSPLcom/android/okhttp/internal/InternalCache;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/InternalCache;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest; +HSPLcom/android/okhttp/internal/InternalCache;->remove(Lcom/android/okhttp/Request;)V +HSPLcom/android/okhttp/internal/InternalCache;->trackConditionalCacheHit()V +HSPLcom/android/okhttp/internal/InternalCache;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V +HSPLcom/android/okhttp/internal/InternalCache;->update(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/internal/OptionalMethod;->(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)V +HSPLcom/android/okhttp/internal/OptionalMethod;->getMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLcom/android/okhttp/internal/OptionalMethod;->getPublicMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLcom/android/okhttp/internal/OptionalMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptional(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptionalWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->invokeWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLcom/android/okhttp/internal/OptionalMethod;->isSupported(Ljava/lang/Object;)Z +HSPLcom/android/okhttp/internal/Platform;->()V +HSPLcom/android/okhttp/internal/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V +HSPLcom/android/okhttp/internal/Platform;->concatLengthPrefixed(Ljava/util/List;)[B +HSPLcom/android/okhttp/internal/Platform;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V +HSPLcom/android/okhttp/internal/Platform;->connectSocket(Ljava/net/Socket;Ljava/net/InetSocketAddress;I)V +HSPLcom/android/okhttp/internal/Platform;->get()Lcom/android/okhttp/internal/Platform; +HSPLcom/android/okhttp/internal/Platform;->getPrefix()Ljava/lang/String; +HSPLcom/android/okhttp/internal/Platform;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/RouteDatabase;->()V +HSPLcom/android/okhttp/internal/RouteDatabase;->connected(Lcom/android/okhttp/Route;)V +HSPLcom/android/okhttp/internal/RouteDatabase;->shouldPostpone(Lcom/android/okhttp/Route;)Z +HSPLcom/android/okhttp/internal/URLFilter;->checkURLPermitted(Ljava/net/URL;)V +HSPLcom/android/okhttp/internal/Util$1;->(Ljava/lang/String;Z)V +HSPLcom/android/okhttp/internal/Util$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLcom/android/okhttp/internal/Util;->checkOffsetAndCount(JJJ)V +HSPLcom/android/okhttp/internal/Util;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/android/okhttp/internal/Util;->hostHeader(Lcom/android/okhttp/HttpUrl;Z)Ljava/lang/String; +HSPLcom/android/okhttp/internal/Util;->immutableList(Ljava/util/List;)Ljava/util/List; +HSPLcom/android/okhttp/internal/Util;->immutableList([Ljava/lang/Object;)Ljava/util/List; +HSPLcom/android/okhttp/internal/Util;->immutableMap(Ljava/util/Map;)Ljava/util/Map; +HSPLcom/android/okhttp/internal/Util;->threadFactory(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory; +HSPLcom/android/okhttp/internal/Util;->toHumanReadableAscii(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/http/AuthenticatorAdapter;->()V +HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy; +HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy; +HSPLcom/android/okhttp/internal/http/CacheStrategy;->(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V +HSPLcom/android/okhttp/internal/http/CacheStrategy;->(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;Lcom/android/okhttp/internal/http/CacheStrategy;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->(Lcom/android/okhttp/internal/http/Http1xStream;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$AbstractSource;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->endOfInput()V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->(Lcom/android/okhttp/internal/http/Http1xStream;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->close()V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->flush()V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/HttpEngine;)V +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->readChunkSize()V +HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;->(Lcom/android/okhttp/internal/http/Http1xStream;J)V +HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/internal/http/Http1xStream;->-get0(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/internal/http/Http1xStream;->-get1(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSource; +HSPLcom/android/okhttp/internal/http/Http1xStream;->-get2(Lcom/android/okhttp/internal/http/Http1xStream;)I +HSPLcom/android/okhttp/internal/http/Http1xStream;->-get3(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/internal/http/StreamAllocation; +HSPLcom/android/okhttp/internal/http/Http1xStream;->-set0(Lcom/android/okhttp/internal/http/Http1xStream;I)I +HSPLcom/android/okhttp/internal/http/Http1xStream;->-wrap0(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/okio/ForwardingTimeout;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->(Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/BufferedSink;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/Http1xStream;->detachTimeout(Lcom/android/okhttp/okio/ForwardingTimeout;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->finishRequest()V +HSPLcom/android/okhttp/internal/http/Http1xStream;->getTransferStream(Lcom/android/okhttp/Response;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSink()Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSource(Lcom/android/okhttp/internal/http/HttpEngine;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSource(J)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/internal/http/Http1xStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody; +HSPLcom/android/okhttp/internal/http/Http1xStream;->readHeaders()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/internal/http/Http1xStream;->readResponse()Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/internal/http/Http1xStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/internal/http/Http1xStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequest(Lcom/android/okhttp/Headers;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V +HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V +HSPLcom/android/okhttp/internal/http/HttpEngine$1;->()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->(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 +HSPLcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/HttpEngine;->cancel()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream; +HSPLcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address; +HSPLcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/internal/http/HttpEngine;->getConnection()Lcom/android/okhttp/Connection; +HSPLcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z +HSPLcom/android/okhttp/internal/http/HttpEngine;->hasResponse()Z +HSPLcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->networkRequest(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Request; +HSPLcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z +HSPLcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/HttpEngine;->readResponse()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V +HSPLcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->sendRequest()V +HSPLcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; +HSPLcom/android/okhttp/internal/http/HttpEngine;->writingRequestHeaders()V +HSPLcom/android/okhttp/internal/http/HttpMethod;->permitsRequestBody(Ljava/lang/String;)Z +HSPLcom/android/okhttp/internal/http/HttpMethod;->requiresRequestBody(Ljava/lang/String;)Z +HSPLcom/android/okhttp/internal/http/HttpStream;->cancel()V +HSPLcom/android/okhttp/internal/http/HttpStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/http/HttpStream;->finishRequest()V +HSPLcom/android/okhttp/internal/http/HttpStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody; +HSPLcom/android/okhttp/internal/http/HttpStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder; +HSPLcom/android/okhttp/internal/http/HttpStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V +HSPLcom/android/okhttp/internal/http/HttpStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V +HSPLcom/android/okhttp/internal/http/HttpStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V +HSPLcom/android/okhttp/internal/http/OkHeaders$1;->()V +HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Headers;)J +HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Request;)J +HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Response;)J +HSPLcom/android/okhttp/internal/http/OkHeaders;->stringToLong(Ljava/lang/String;)J +HSPLcom/android/okhttp/internal/http/RealResponseBody;->(Lcom/android/okhttp/Headers;Lcom/android/okhttp/okio/BufferedSource;)V +HSPLcom/android/okhttp/internal/http/RealResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource; +HSPLcom/android/okhttp/internal/http/RequestLine;->get(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/http/RequestLine;->includeAuthorityInRequestLine(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Z +HSPLcom/android/okhttp/internal/http/RequestLine;->requestPath(Lcom/android/okhttp/HttpUrl;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/http/RetryableSink;->()V +HSPLcom/android/okhttp/internal/http/RetryableSink;->(I)V +HSPLcom/android/okhttp/internal/http/RetryableSink;->close()V +HSPLcom/android/okhttp/internal/http/RetryableSink;->contentLength()J +HSPLcom/android/okhttp/internal/http/RetryableSink;->flush()V +HSPLcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V +HSPLcom/android/okhttp/internal/http/RouteSelector;->(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V +HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z +HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z +HSPLcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route; +HSPLcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress; +HSPLcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy; +HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V +HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V +HSPLcom/android/okhttp/internal/http/StatusLine;->(Lcom/android/okhttp/Protocol;ILjava/lang/String;)V +HSPLcom/android/okhttp/internal/http/StatusLine;->parse(Ljava/lang/String;)Lcom/android/okhttp/internal/http/StatusLine; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->cancel()V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->release()V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V +HSPLcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase; +HSPLcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->(Ljava/net/HttpURLConnection;)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->disconnect()V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentType()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderField(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getInputStream()Ljava/io/InputStream; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getOutputStream()Ljava/io/OutputStream; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseCode()I +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->handshake()Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setChunkedStreamingMode(I)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setConnectTimeout(I)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoInput(Z)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoOutput(Z)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setInstanceFollowRedirects(Z)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setReadTimeout(I)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setUseCaches(Z)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/URLFilter;)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->connect()V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->defaultUserAgent()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->disconnect()V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->execute(Z)Z +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaders()Lcom/android/okhttp/Headers; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getInputStream()Ljava/io/InputStream; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponse()Lcom/android/okhttp/internal/http/HttpEngine; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseCode()I +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->initHttpEngine()V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->newHttpEngine(Ljava/lang/String;Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/HttpEngine; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->responseSourceHeader(Lcom/android/okhttp/Response;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setConnectTimeout(I)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setInstanceFollowRedirects(Z)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setReadTimeout(I)V +HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->(Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/URLFilter;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->disconnect()V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentType()Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getInputStream()Ljava/io/InputStream; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream; +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseCode()I +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setChunkedStreamingMode(I)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setConnectTimeout(I)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoInput(Z)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoOutput(Z)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setInstanceFollowRedirects(Z)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setReadTimeout(I)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setUseCaches(Z)V +HSPLcom/android/okhttp/internal/io/FileSystem$1;->()V +HSPLcom/android/okhttp/internal/io/FileSystem;->appendingSink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/io/FileSystem;->delete(Ljava/io/File;)V +HSPLcom/android/okhttp/internal/io/FileSystem;->deleteContents(Ljava/io/File;)V +HSPLcom/android/okhttp/internal/io/FileSystem;->exists(Ljava/io/File;)Z +HSPLcom/android/okhttp/internal/io/FileSystem;->rename(Ljava/io/File;Ljava/io/File;)V +HSPLcom/android/okhttp/internal/io/FileSystem;->sink(Ljava/io/File;)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/internal/io/FileSystem;->size(Ljava/io/File;)J +HSPLcom/android/okhttp/internal/io/FileSystem;->source(Ljava/io/File;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/internal/io/RealConnection;->(Lcom/android/okhttp/Route;)V +HSPLcom/android/okhttp/internal/io/RealConnection;->allocationLimit()I +HSPLcom/android/okhttp/internal/io/RealConnection;->connect(IIILjava/util/List;Z)V +HSPLcom/android/okhttp/internal/io/RealConnection;->connectSocket(IIILcom/android/okhttp/internal/ConnectionSpecSelector;)V +HSPLcom/android/okhttp/internal/io/RealConnection;->connectTls(IILcom/android/okhttp/internal/ConnectionSpecSelector;)V +HSPLcom/android/okhttp/internal/io/RealConnection;->getHandshake()Lcom/android/okhttp/Handshake; +HSPLcom/android/okhttp/internal/io/RealConnection;->getRoute()Lcom/android/okhttp/Route; +HSPLcom/android/okhttp/internal/io/RealConnection;->getSocket()Ljava/net/Socket; +HSPLcom/android/okhttp/internal/io/RealConnection;->isHealthy(Z)Z +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->()V +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->getSubjectAltNames(Ljava/security/cert/X509Certificate;I)Ljava/util/List; +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyAsIpAddress(Ljava/lang/String;)Z +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z +HSPLcom/android/okhttp/okio/AsyncTimeout$1;->(Lcom/android/okhttp/okio/AsyncTimeout;Lcom/android/okhttp/okio/Sink;)V +HSPLcom/android/okhttp/okio/AsyncTimeout$1;->flush()V +HSPLcom/android/okhttp/okio/AsyncTimeout$1;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/AsyncTimeout$1;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/AsyncTimeout$2;->(Lcom/android/okhttp/okio/AsyncTimeout;Lcom/android/okhttp/okio/Source;)V +HSPLcom/android/okhttp/okio/AsyncTimeout$2;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/okio/AsyncTimeout$2;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/AsyncTimeout$Watchdog;->()V +HSPLcom/android/okhttp/okio/AsyncTimeout$Watchdog;->run()V +HSPLcom/android/okhttp/okio/AsyncTimeout;->-wrap0()Lcom/android/okhttp/okio/AsyncTimeout; +HSPLcom/android/okhttp/okio/AsyncTimeout;->()V +HSPLcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout; +HSPLcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z +HSPLcom/android/okhttp/okio/AsyncTimeout;->enter()V +HSPLcom/android/okhttp/okio/AsyncTimeout;->exit()Z +HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException; +HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V +HSPLcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J +HSPLcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V +HSPLcom/android/okhttp/okio/AsyncTimeout;->sink(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/okio/Buffer;->()V +HSPLcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J +HSPLcom/android/okhttp/okio/Buffer;->copyTo(Lcom/android/okhttp/okio/Buffer;JJ)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->exhausted()Z +HSPLcom/android/okhttp/okio/Buffer;->getByte(J)B +HSPLcom/android/okhttp/okio/Buffer;->indexOf(BJ)J +HSPLcom/android/okhttp/okio/Buffer;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/okio/Buffer;->read([BII)I +HSPLcom/android/okhttp/okio/Buffer;->readByteArray()[B +HSPLcom/android/okhttp/okio/Buffer;->readByteArray(J)[B +HSPLcom/android/okhttp/okio/Buffer;->readFully([B)V +HSPLcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J +HSPLcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String; +HSPLcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String; +HSPLcom/android/okhttp/okio/Buffer;->readUtf8(J)Ljava/lang/String; +HSPLcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String; +HSPLcom/android/okhttp/okio/Buffer;->size()J +HSPLcom/android/okhttp/okio/Buffer;->skip(J)V +HSPLcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment; +HSPLcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->(Lcom/android/okhttp/okio/Timeout;)V +HSPLcom/android/okhttp/okio/ForwardingTimeout;->delegate()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/ForwardingTimeout;->setDelegate(Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/ForwardingTimeout; +HSPLcom/android/okhttp/okio/Okio$1;->(Lcom/android/okhttp/okio/Timeout;Ljava/io/OutputStream;)V +HSPLcom/android/okhttp/okio/Okio$1;->flush()V +HSPLcom/android/okhttp/okio/Okio$1;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/Okio$2;->(Lcom/android/okhttp/okio/Timeout;Ljava/io/InputStream;)V +HSPLcom/android/okhttp/okio/Okio$2;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/okio/Okio$3;->(Ljava/net/Socket;)V +HSPLcom/android/okhttp/okio/Okio;->buffer(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/Okio;->buffer(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/BufferedSource; +HSPLcom/android/okhttp/okio/Okio;->sink(Ljava/io/OutputStream;Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/okio/Okio;->sink(Ljava/net/Socket;)Lcom/android/okhttp/okio/Sink; +HSPLcom/android/okhttp/okio/Okio;->source(Ljava/io/InputStream;Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/okio/Okio;->source(Ljava/net/Socket;)Lcom/android/okhttp/okio/Source; +HSPLcom/android/okhttp/okio/Okio;->timeout(Ljava/net/Socket;)Lcom/android/okhttp/okio/AsyncTimeout; +HSPLcom/android/okhttp/okio/RealBufferedSink$1;->(Lcom/android/okhttp/okio/RealBufferedSink;)V +HSPLcom/android/okhttp/okio/RealBufferedSink$1;->flush()V +HSPLcom/android/okhttp/okio/RealBufferedSink$1;->write([BII)V +HSPLcom/android/okhttp/okio/RealBufferedSink;->-get0(Lcom/android/okhttp/okio/RealBufferedSink;)Z +HSPLcom/android/okhttp/okio/RealBufferedSink;->(Lcom/android/okhttp/okio/Sink;)V +HSPLcom/android/okhttp/okio/RealBufferedSink;->(Lcom/android/okhttp/okio/Sink;Lcom/android/okhttp/okio/Buffer;)V +HSPLcom/android/okhttp/okio/RealBufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer; +HSPLcom/android/okhttp/okio/RealBufferedSink;->close()V +HSPLcom/android/okhttp/okio/RealBufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSink;->flush()V +HSPLcom/android/okhttp/okio/RealBufferedSink;->outputStream()Ljava/io/OutputStream; +HSPLcom/android/okhttp/okio/RealBufferedSink;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/RealBufferedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/RealBufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink; +HSPLcom/android/okhttp/okio/RealBufferedSource$1;->(Lcom/android/okhttp/okio/RealBufferedSource;)V +HSPLcom/android/okhttp/okio/RealBufferedSource$1;->available()I +HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read([BII)I +HSPLcom/android/okhttp/okio/RealBufferedSource;->-get0(Lcom/android/okhttp/okio/RealBufferedSource;)Z +HSPLcom/android/okhttp/okio/RealBufferedSource;->(Lcom/android/okhttp/okio/Source;)V +HSPLcom/android/okhttp/okio/RealBufferedSource;->(Lcom/android/okhttp/okio/Source;Lcom/android/okhttp/okio/Buffer;)V +HSPLcom/android/okhttp/okio/RealBufferedSource;->exhausted()Z +HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(B)J +HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(BJ)J +HSPLcom/android/okhttp/okio/RealBufferedSource;->inputStream()Ljava/io/InputStream; +HSPLcom/android/okhttp/okio/RealBufferedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/okio/RealBufferedSource;->readHexadecimalUnsignedLong()J +HSPLcom/android/okhttp/okio/RealBufferedSource;->readUtf8LineStrict()Ljava/lang/String; +HSPLcom/android/okhttp/okio/RealBufferedSource;->request(J)Z +HSPLcom/android/okhttp/okio/RealBufferedSource;->require(J)V +HSPLcom/android/okhttp/okio/RealBufferedSource;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Segment;->()V +HSPLcom/android/okhttp/okio/Segment;->(Lcom/android/okhttp/okio/Segment;)V +HSPLcom/android/okhttp/okio/Segment;->([BII)V +HSPLcom/android/okhttp/okio/Segment;->compact()V +HSPLcom/android/okhttp/okio/Segment;->pop()Lcom/android/okhttp/okio/Segment; +HSPLcom/android/okhttp/okio/Segment;->push(Lcom/android/okhttp/okio/Segment;)Lcom/android/okhttp/okio/Segment; +HSPLcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment; +HSPLcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V +HSPLcom/android/okhttp/okio/SegmentPool;->recycle(Lcom/android/okhttp/okio/Segment;)V +HSPLcom/android/okhttp/okio/SegmentPool;->take()Lcom/android/okhttp/okio/Segment; +HSPLcom/android/okhttp/okio/Sink;->close()V +HSPLcom/android/okhttp/okio/Sink;->flush()V +HSPLcom/android/okhttp/okio/Sink;->timeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Sink;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/Source;->close()V +HSPLcom/android/okhttp/okio/Source;->read(Lcom/android/okhttp/okio/Buffer;J)J +HSPLcom/android/okhttp/okio/Timeout$1;->()V +HSPLcom/android/okhttp/okio/Timeout;->()V +HSPLcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Timeout;->hasDeadline()Z +HSPLcom/android/okhttp/okio/Timeout;->throwIfReached()V +HSPLcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout; +HSPLcom/android/okhttp/okio/Timeout;->timeoutNanos()J +HSPLcom/android/okhttp/okio/Util;->checkOffsetAndCount(JJJ)V +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->([BI)V +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->derForm([BI)[B +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->fromInputStream(ILjava/io/InputStream;)Lcom/android/org/bouncycastle/asn1/ASN1BitString; +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->getOctets()[B +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->getPadBits()I +HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1Encodable;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->add(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->get(I)Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->size()I +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->(Ljava/io/InputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->(Ljava/io/InputStream;I)V +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->(Ljava/io/InputStream;IZ)V +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->([B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->buildDEREncodableVector(Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;)Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector; +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->buildEncodableVector()Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector; +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->buildObject(III)Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->createPrimitiveDERObject(ILcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;[[B)Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->getBuffer(Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;[[B)[B +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readLength()I +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readLength(Ljava/io/InputStream;I)I +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readTagNumber(Ljava/io/InputStream;I)I +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->([BZ)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getInstance(Lcom/android/org/bouncycastle/asn1/ASN1TaggedObject;Z)Lcom/android/org/bouncycastle/asn1/ASN1Integer; +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Integer; +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getPositiveValue()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/asn1/ASN1Null;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Null;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1Null;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->getEncoded(Ljava/lang/String;)[B +HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->([B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->hashCode()I +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->([B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->doOutput(Ljava/io/ByteArrayOutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->fromOctetString([B)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getBody()[B +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->hashCode()I +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->intern()Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidBranchID(Ljava/lang/String;I)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidIdentifier(Ljava/lang/String;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->toString()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->writeField(Ljava/io/ByteArrayOutputStream;J)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->(Ljava/io/OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->write(I)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->write([B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeEncoded(I[B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeLength(I)V +HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeTag(II)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->fromByteArray([B)Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->isConstructed()Z +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Sequence; +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getObjectAt(I)Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration; +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->size()I +HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;Z)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Set; +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->getObjects()Ljava/util/Enumeration; +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->sort()V +HSPLcom/android/org/bouncycastle/asn1/ASN1Set;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->(Ljava/io/InputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->(Ljava/io/InputStream;I)V +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->readObject()Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->readTaggedObject(ZI)Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->readVector()Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector; +HSPLcom/android/org/bouncycastle/asn1/ASN1StreamParser;->set00Check(Z)V +HSPLcom/android/org/bouncycastle/asn1/ASN1String;->getString()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObject;->(ZILcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObject;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObject;->getObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObject;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObjectParser;->getObjectParser(IZ)Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/ASN1TaggedObjectParser;->getTagNo()I +HSPLcom/android/org/bouncycastle/asn1/ASN1UTCTime;->([B)V +HSPLcom/android/org/bouncycastle/asn1/ASN1UTCTime;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/ASN1UTCTime;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DERBitString;->([BI)V +HSPLcom/android/org/bouncycastle/asn1/DERBitString;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERBitString;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DERBitString;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/DERBitString; +HSPLcom/android/org/bouncycastle/asn1/DERFactory;->createSequence(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)Lcom/android/org/bouncycastle/asn1/ASN1Sequence; +HSPLcom/android/org/bouncycastle/asn1/DERFactory;->createSet(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)Lcom/android/org/bouncycastle/asn1/ASN1Set; +HSPLcom/android/org/bouncycastle/asn1/DERNull;->()V +HSPLcom/android/org/bouncycastle/asn1/DERNull;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERNull;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;->(Ljava/io/OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;->getDERSubStream()Lcom/android/org/bouncycastle/asn1/ASN1OutputStream; +HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;->writeObject(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HSPLcom/android/org/bouncycastle/asn1/DERPrintableString;->([B)V +HSPLcom/android/org/bouncycastle/asn1/DERPrintableString;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERPrintableString;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DERSequence;->()V +HSPLcom/android/org/bouncycastle/asn1/DERSequence;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERSequence;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DERSequence;->getBodyLength()I +HSPLcom/android/org/bouncycastle/asn1/DERSet;->()V +HSPLcom/android/org/bouncycastle/asn1/DERSet;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERSet;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DERSet;->getBodyLength()I +HSPLcom/android/org/bouncycastle/asn1/DERTaggedObject;->(ZILcom/android/org/bouncycastle/asn1/ASN1Encodable;)V +HSPLcom/android/org/bouncycastle/asn1/DERTaggedObject;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V +HSPLcom/android/org/bouncycastle/asn1/DERTaggedObject;->encodedLength()I +HSPLcom/android/org/bouncycastle/asn1/DLSequence;->(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V +HSPLcom/android/org/bouncycastle/asn1/DLSet;->(Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;)V +HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->(Ljava/io/InputStream;I)V +HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->getRemaining()I +HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read()I +HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read([BII)I +HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->toByteArray()[B +HSPLcom/android/org/bouncycastle/asn1/InMemoryRepresentable;->getLoadedObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/LimitedInputStream;->(Ljava/io/InputStream;I)V +HSPLcom/android/org/bouncycastle/asn1/LimitedInputStream;->setParentEofDetect(Z)V +HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->hasMoreTokens()Z +HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->nextToken()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->calculateBodyLength(I)I +HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->calculateTagLength(I)I +HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->findLimit(Ljava/io/InputStream;)I +HSPLcom/android/org/bouncycastle/asn1/x500/RDN;->(Lcom/android/org/bouncycastle/asn1/ASN1Set;)V +HSPLcom/android/org/bouncycastle/asn1/x500/RDN;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x500/RDN; +HSPLcom/android/org/bouncycastle/asn1/x500/X500Name;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x500/X500Name;->(Lcom/android/org/bouncycastle/asn1/x500/X500NameStyle;Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x500/X500Name;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x500/X500Name; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->areEqual(Lcom/android/org/bouncycastle/asn1/x500/X500Name;Lcom/android/org/bouncycastle/asn1/x500/X500Name;)Z +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->attrNameToOID(Ljava/lang/String;)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->calculateHashCode(Lcom/android/org/bouncycastle/asn1/x500/X500Name;)I +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->fromString(Ljava/lang/String;)[Lcom/android/org/bouncycastle/asn1/x500/RDN; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->oidToAttrNames(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)[Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->oidToDisplayName(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->stringToValue(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/x500/X500NameStyle;->toString(Lcom/android/org/bouncycastle/asn1/x500/X500Name;)Ljava/lang/String; +HSPLcom/android/org/bouncycastle/asn1/x500/style/AbstractX500NameStyle;->()V +HSPLcom/android/org/bouncycastle/asn1/x500/style/AbstractX500NameStyle;->copyHashTable(Ljava/util/Hashtable;)Ljava/util/Hashtable; +HSPLcom/android/org/bouncycastle/asn1/x500/style/BCStyle;->()V +HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier; +HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getParameters()Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +HSPLcom/android/org/bouncycastle/asn1/x509/Certificate;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x509/Certificate;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/Certificate; +HSPLcom/android/org/bouncycastle/asn1/x509/Certificate;->getTBSCertificate()Lcom/android/org/bouncycastle/asn1/x509/TBSCertificate; +HSPLcom/android/org/bouncycastle/asn1/x509/Certificate;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getG()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/DSAParameter; +HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getP()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getQ()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->getAlgorithm()Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier; +HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo; +HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->parsePublicKey()Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +HSPLcom/android/org/bouncycastle/asn1/x509/TBSCertificate;->(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V +HSPLcom/android/org/bouncycastle/asn1/x509/TBSCertificate;->getExtensions()Lcom/android/org/bouncycastle/asn1/x509/Extensions; +HSPLcom/android/org/bouncycastle/asn1/x509/TBSCertificate;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/TBSCertificate; +HSPLcom/android/org/bouncycastle/asn1/x509/Time;->(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)V +HSPLcom/android/org/bouncycastle/asn1/x509/Time;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/x509/Time; +HSPLcom/android/org/bouncycastle/crypto/CryptoException;->(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/crypto/CryptoException;->getCause()Ljava/lang/Throwable; +HSPLcom/android/org/bouncycastle/crypto/Digest;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/Digest;->getAlgorithmName()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/crypto/Digest;->getDigestSize()I +HSPLcom/android/org/bouncycastle/crypto/Digest;->reset()V +HSPLcom/android/org/bouncycastle/crypto/Digest;->update(B)V +HSPLcom/android/org/bouncycastle/crypto/Digest;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/ExtendedDigest;->getByteLength()I +HSPLcom/android/org/bouncycastle/crypto/InvalidCipherTextException;->(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/crypto/Mac;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/Mac;->getAlgorithmName()Ljava/lang/String; +HSPLcom/android/org/bouncycastle/crypto/Mac;->getMacSize()I +HSPLcom/android/org/bouncycastle/crypto/Mac;->init(Lcom/android/org/bouncycastle/crypto/CipherParameters;)V +HSPLcom/android/org/bouncycastle/crypto/Mac;->reset()V +HSPLcom/android/org/bouncycastle/crypto/Mac;->update(B)V +HSPLcom/android/org/bouncycastle/crypto/Mac;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->()V +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->PKCS12PasswordToBytes([C)[B +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->generateDerivedMacParameters(I)Lcom/android/org/bouncycastle/crypto/CipherParameters; +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->generateDerivedParameters(I)Lcom/android/org/bouncycastle/crypto/CipherParameters; +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->generateDerivedParameters(II)Lcom/android/org/bouncycastle/crypto/CipherParameters; +HSPLcom/android/org/bouncycastle/crypto/PBEParametersGenerator;->init([B[BI)V +HSPLcom/android/org/bouncycastle/crypto/digests/EncodableDigest;->getEncodedState()[B +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->()V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->(Lcom/android/org/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->copyIn(Lcom/android/org/bouncycastle/crypto/digests/GeneralDigest;)V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->finish()V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->getByteLength()I +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->processBlock()V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->processLength(J)V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->processWord([BI)V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->reset()V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->update(B)V +HSPLcom/android/org/bouncycastle/crypto/digests/GeneralDigest;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->()V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->(Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;)V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->copy()Lcom/android/org/bouncycastle/util/Memoable; +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->copyIn(Lcom/android/org/bouncycastle/crypto/digests/SHA1Digest;)V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->f(III)I +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->g(III)I +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->getDigestSize()I +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->h(III)I +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->processBlock()V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->processLength(J)V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->processWord([BI)V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->reset()V +HSPLcom/android/org/bouncycastle/crypto/digests/SHA1Digest;->reset(Lcom/android/org/bouncycastle/util/Memoable;)V +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding$1;->(Lcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;)V +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding$1;->run()Ljava/lang/Object; +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding$2;->(Lcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;)V +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding$2;->run()Ljava/lang/Object; +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->(Lcom/android/org/bouncycastle/crypto/AsymmetricBlockCipher;)V +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->decodeBlock([BII)[B +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->getInputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->getOutputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->processBlock([BII)[B +HSPLcom/android/org/bouncycastle/crypto/encodings/PKCS1Encoding;->useStrict()Z +HSPLcom/android/org/bouncycastle/crypto/engines/RSABlindedEngine;->()V +HSPLcom/android/org/bouncycastle/crypto/engines/RSABlindedEngine;->getInputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/engines/RSABlindedEngine;->getOutputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/engines/RSABlindedEngine;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V +HSPLcom/android/org/bouncycastle/crypto/engines/RSABlindedEngine;->processBlock([BII)[B +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->()V +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->convertInput([BII)Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->convertOutput(Ljava/math/BigInteger;)[B +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->getInputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->getOutputBlockSize()I +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->init(ZLcom/android/org/bouncycastle/crypto/CipherParameters;)V +HSPLcom/android/org/bouncycastle/crypto/engines/RSACoreEngine;->processBlock(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator;->(Lcom/android/org/bouncycastle/crypto/Digest;)V +HSPLcom/android/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator;->adjust([BI[B)V +HSPLcom/android/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator;->generateDerivedKey(II)[B +HSPLcom/android/org/bouncycastle/crypto/generators/PKCS12ParametersGenerator;->generateDerivedMacParameters(I)Lcom/android/org/bouncycastle/crypto/CipherParameters; +HSPLcom/android/org/bouncycastle/crypto/io/MacInputStream;->(Ljava/io/InputStream;Lcom/android/org/bouncycastle/crypto/Mac;)V +HSPLcom/android/org/bouncycastle/crypto/io/MacInputStream;->read()I +HSPLcom/android/org/bouncycastle/crypto/io/MacInputStream;->read([BII)I +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->(Lcom/android/org/bouncycastle/crypto/Digest;)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->(Lcom/android/org/bouncycastle/crypto/Digest;I)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getByteLength(Lcom/android/org/bouncycastle/crypto/Digest;)I +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getMacSize()I +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->init(Lcom/android/org/bouncycastle/crypto/CipherParameters;)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->update(B)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->xorPad([BIB)V +HSPLcom/android/org/bouncycastle/crypto/params/AsymmetricKeyParameter;->(Z)V +HSPLcom/android/org/bouncycastle/crypto/params/AsymmetricKeyParameter;->isPrivate()Z +HSPLcom/android/org/bouncycastle/crypto/params/DSAKeyParameters;->(ZLcom/android/org/bouncycastle/crypto/params/DSAParameters;)V +HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V +HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getP()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getQ()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/params/DSAPublicKeyParameters;->(Ljava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DSAParameters;)V +HSPLcom/android/org/bouncycastle/crypto/params/DSAPublicKeyParameters;->validate(Ljava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DSAParameters;)Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;->([BII)V +HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;->getKey()[B +HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithRandom;->(Lcom/android/org/bouncycastle/crypto/CipherParameters;Ljava/security/SecureRandom;)V +HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithRandom;->getParameters()Lcom/android/org/bouncycastle/crypto/CipherParameters; +HSPLcom/android/org/bouncycastle/crypto/params/ParametersWithRandom;->getRandom()Ljava/security/SecureRandom; +HSPLcom/android/org/bouncycastle/crypto/params/RSAKeyParameters;->(ZLjava/math/BigInteger;Ljava/math/BigInteger;)V +HSPLcom/android/org/bouncycastle/crypto/params/RSAKeyParameters;->getExponent()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/params/RSAKeyParameters;->getModulus()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/crypto/params/RSAKeyParameters;->validate(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getParams()Ljava/security/interfaces/DSAParams; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getY()Ljava/math/BigInteger; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->hashCode()I +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->isNotNull(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)Z +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->isDsaOid(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)Z +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil;->toDSAParameters(Ljava/security/interfaces/DSAParams;)Lcom/android/org/bouncycastle/crypto/params/DSAParameters; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->(Ljava/lang/String;Lcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$NoPadding;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->(Lcom/android/org/bouncycastle/crypto/AsymmetricBlockCipher;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->engineDoFinal([BII)[B +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->engineSetMode(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->engineSetPadding(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi;->getOutput()[B +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/RSAUtil;->generatePublicKeyParameter(Ljava/security/interfaces/RSAPublicKey;)Lcom/android/org/bouncycastle/crypto/params/RSAKeyParameters; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/RSAUtil;->isRsaOid(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)Z +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/PKCS12BagAttributeCarrierImpl;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/PKCS12BagAttributeCarrierImpl;->(Ljava/util/Hashtable;Ljava/util/Vector;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory;->engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory;->getCertificate(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory;->readDERCertificate(Lcom/android/org/bouncycastle/asn1/ASN1InputStream;)Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil;->(Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject;->(Lcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;Lcom/android/org/bouncycastle/asn1/x509/Certificate;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject;->getEncoded()[B +HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject;->getExtensionBytes(Ljava/lang/String;)[B +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->addAlgorithm(Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->addAttributes(Ljava/lang/String;Ljava/util/Map;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->addKeyInfoConverter(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->hasAlgorithm(Ljava/lang/String;Ljava/lang/String;)Z +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;->setParameter(Ljava/lang/String;Ljava/lang/Object;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration;->getAcceptableNamedCurves()Ljava/util/Set; +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration;->getAdditionalECParameters()Ljava/util/Map; +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration;->getDHDefaultParameters(I)Ljavax/crypto/spec/DHParameterSpec; +HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration;->getEcImplicitlyCa()Lcom/android/org/bouncycastle/jce/spec/ECParameterSpec; +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;->()V +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;->(Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;Ljava/lang/String;Ljava/util/Date;ILjava/lang/Object;[Ljava/security/cert/Certificate;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;->getCertificateChain()[Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;->getType()I +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->(I)V +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->decodeCertificate(Ljava/io/DataInputStream;)Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineAliases()Ljava/util/Enumeration; +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineLoad(Ljava/io/InputStream;[C)V +HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->loadStore(Ljava/io/InputStream;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/util/BadBlockException;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLcom/android/org/bouncycastle/jcajce/provider/util/BadBlockException;->getCause()Ljava/lang/Throwable; +HSPLcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper;->()V +HSPLcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper;->getBouncyCastleProvider()Ljava/security/Provider; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createAlgorithmParameterGenerator(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createAlgorithmParameters(Ljava/lang/String;)Ljava/security/AlgorithmParameters; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createCertificateFactory(Ljava/lang/String;)Ljava/security/cert/CertificateFactory; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createCipher(Ljava/lang/String;)Ljavax/crypto/Cipher; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createDigest(Ljava/lang/String;)Ljava/security/MessageDigest; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createKeyAgreement(Ljava/lang/String;)Ljavax/crypto/KeyAgreement; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createKeyFactory(Ljava/lang/String;)Ljava/security/KeyFactory; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createKeyGenerator(Ljava/lang/String;)Ljavax/crypto/KeyGenerator; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createKeyPairGenerator(Ljava/lang/String;)Ljava/security/KeyPairGenerator; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createMac(Ljava/lang/String;)Ljavax/crypto/Mac; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createSecretKeyFactory(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createSecureRandom(Ljava/lang/String;)Ljava/security/SecureRandom; +HSPLcom/android/org/bouncycastle/jcajce/util/JcaJceHelper;->createSignature(Ljava/lang/String;)Ljava/security/Signature; +HSPLcom/android/org/bouncycastle/jcajce/util/ProviderJcaJceHelper;->(Ljava/security/Provider;)V +HSPLcom/android/org/bouncycastle/jcajce/util/ProviderJcaJceHelper;->createCertificateFactory(Ljava/lang/String;)Ljava/security/cert/CertificateFactory; +HSPLcom/android/org/bouncycastle/jce/interfaces/BCKeyStore;->setRandom(Ljava/security/SecureRandom;)V +HSPLcom/android/org/bouncycastle/util/Arrays;->areEqual([B[B)Z +HSPLcom/android/org/bouncycastle/util/Arrays;->clone([B)[B +HSPLcom/android/org/bouncycastle/util/Arrays;->constantTimeAreEqual([B[B)Z +HSPLcom/android/org/bouncycastle/util/Arrays;->fill([BB)V +HSPLcom/android/org/bouncycastle/util/Arrays;->hashCode([B)I +HSPLcom/android/org/bouncycastle/util/Encodable;->getEncoded()[B +HSPLcom/android/org/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer; +HSPLcom/android/org/bouncycastle/util/Memoable;->copy()Lcom/android/org/bouncycastle/util/Memoable; +HSPLcom/android/org/bouncycastle/util/Memoable;->reset(Lcom/android/org/bouncycastle/util/Memoable;)V +HSPLcom/android/org/bouncycastle/util/Pack;->intToBigEndian(I[BI)V +HSPLcom/android/org/bouncycastle/util/Strings;->toUpperCase(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/bouncycastle/util/io/Streams;->readFully(Ljava/io/InputStream;[B)I +HSPLcom/android/org/bouncycastle/util/io/Streams;->readFully(Ljava/io/InputStream;[BII)I +HSPLcom/android/org/conscrypt/AbstractConscryptSocket$1;->(Lcom/android/org/conscrypt/AbstractConscryptSocket;)V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->(Ljava/net/Socket;Ljava/lang/String;IZ)V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->checkOpen()V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->close()V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->getActiveSession()Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->getHostname()Ljava/lang/String; +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->getHostnameOrIP()Ljava/lang/String; +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->getPort()I +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->getSoTimeout()I +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->isClosed()Z +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->isConnected()Z +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->isDelegating()Z +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->notifyHandshakeCompletedListeners()V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->setHostname(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/AbstractConscryptSocket;->setSoTimeout(I)V +HSPLcom/android/org/conscrypt/AbstractSessionContext$1;->(Lcom/android/org/conscrypt/AbstractSessionContext;)V +HSPLcom/android/org/conscrypt/AbstractSessionContext$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z +HSPLcom/android/org/conscrypt/AbstractSessionContext;->-get0(Lcom/android/org/conscrypt/AbstractSessionContext;)I +HSPLcom/android/org/conscrypt/AbstractSessionContext;->(I)V +HSPLcom/android/org/conscrypt/AbstractSessionContext;->cacheSession(Lcom/android/org/conscrypt/SslSessionWrapper;)V +HSPLcom/android/org/conscrypt/AbstractSessionContext;->getSessionTimeout()I +HSPLcom/android/org/conscrypt/ActiveSession;->(Lcom/android/org/conscrypt/SslWrapper;Lcom/android/org/conscrypt/AbstractSessionContext;)V +HSPLcom/android/org/conscrypt/ActiveSession;->checkPeerCertificatesPresent()V +HSPLcom/android/org/conscrypt/ActiveSession;->configurePeer(Ljava/lang/String;I[Lcom/android/org/conscrypt/OpenSSLX509Certificate;)V +HSPLcom/android/org/conscrypt/ActiveSession;->getCipherSuite()Ljava/lang/String; +HSPLcom/android/org/conscrypt/ActiveSession;->getLocalCertificates()[Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/ActiveSession;->getPeerCertificates()[Ljava/security/cert/X509Certificate; +HSPLcom/android/org/conscrypt/ActiveSession;->getPeerHost()Ljava/lang/String; +HSPLcom/android/org/conscrypt/ActiveSession;->getPeerPort()I +HSPLcom/android/org/conscrypt/ActiveSession;->getPeerSignedCertificateTimestamp()[B +HSPLcom/android/org/conscrypt/ActiveSession;->getSessionContext()Ljavax/net/ssl/SSLSessionContext; +HSPLcom/android/org/conscrypt/ActiveSession;->getStatusResponses()Ljava/util/List; +HSPLcom/android/org/conscrypt/ActiveSession;->isValid()Z +HSPLcom/android/org/conscrypt/ActiveSession;->onPeerCertificatesReceived(Ljava/lang/String;I[Lcom/android/org/conscrypt/OpenSSLX509Certificate;)V +HSPLcom/android/org/conscrypt/ActiveSession;->onSessionEstablished(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/AddressUtils;->isValidSniHostname(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/ArrayUtils;->checkOffsetAndCount(III)V +HSPLcom/android/org/conscrypt/ByteArray;->([B)V +HSPLcom/android/org/conscrypt/ByteArray;->hashCode()I +HSPLcom/android/org/conscrypt/CertBlacklist;->(Ljava/util/Set;Ljava/util/Set;)V +HSPLcom/android/org/conscrypt/CertBlacklist;->closeQuietly(Ljava/io/Closeable;)V +HSPLcom/android/org/conscrypt/CertBlacklist;->getDefault()Lcom/android/org/conscrypt/CertBlacklist; +HSPLcom/android/org/conscrypt/CertBlacklist;->isHex(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/CertBlacklist;->isPubkeyHash(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/CertBlacklist;->isPublicKeyBlackListed(Ljava/security/PublicKey;)Z +HSPLcom/android/org/conscrypt/CertBlacklist;->readBlacklist(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/CertBlacklist;->readFileAsBytes(Ljava/lang/String;)Ljava/io/ByteArrayOutputStream; +HSPLcom/android/org/conscrypt/CertBlacklist;->readFileAsString(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/CertBlacklist;->readPublicKeyBlackList(Ljava/lang/String;)Ljava/util/Set; +HSPLcom/android/org/conscrypt/CertBlacklist;->readSerialBlackList(Ljava/lang/String;)Ljava/util/Set; +HSPLcom/android/org/conscrypt/CertBlacklist;->toHex([B)[B +HSPLcom/android/org/conscrypt/CertificatePriorityComparator;->()V +HSPLcom/android/org/conscrypt/ChainStrengthAnalyzer;->check(Ljava/util/List;)V +HSPLcom/android/org/conscrypt/ChainStrengthAnalyzer;->checkCert(Ljava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/ChainStrengthAnalyzer;->checkKeyLength(Ljava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/ChainStrengthAnalyzer;->checkSignatureAlgorithm(Ljava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/ClientSessionContext$HostAndPort;->(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/ClientSessionContext$HostAndPort;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/conscrypt/ClientSessionContext$HostAndPort;->hashCode()I +HSPLcom/android/org/conscrypt/ClientSessionContext;->()V +HSPLcom/android/org/conscrypt/ClientSessionContext;->getCachedSession(Ljava/lang/String;ILcom/android/org/conscrypt/SSLParametersImpl;)Lcom/android/org/conscrypt/SslSessionWrapper; +HSPLcom/android/org/conscrypt/ClientSessionContext;->getSession(Ljava/lang/String;I)Lcom/android/org/conscrypt/SslSessionWrapper; +HSPLcom/android/org/conscrypt/ClientSessionContext;->onBeforeAddSession(Lcom/android/org/conscrypt/SslSessionWrapper;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLInputStream;->(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLInputStream;->awaitPendingOps()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLInputStream;->read([BII)I +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLOutputStream;->(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLOutputStream;->awaitPendingOps()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLOutputStream;->write([BII)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->-get0(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)Lcom/android/org/conscrypt/SslWrapper; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->-get1(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)I +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->-get2(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->-get3(Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)I +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->(Ljava/net/Socket;Ljava/lang/String;IZLcom/android/org/conscrypt/SSLParametersImpl;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->clientSessionContext()Lcom/android/org/conscrypt/ClientSessionContext; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->close()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->closeUnderlyingSocket()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->free()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getAlpnSelectedProtocol()[B +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getEnabledCipherSuites()[Ljava/lang/String; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getEnabledProtocols()[Ljava/lang/String; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getHandshakeSession()Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getInputStream()Ljava/io/InputStream; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getNeedClientAuth()Z +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getOutputStream()Ljava/io/OutputStream; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getSSLParameters()Ljavax/net/ssl/SSLParameters; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getSession()Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getSoWriteTimeout()I +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getUseClientMode()Z +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->getWantClientAuth()Z +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->newSsl(Lcom/android/org/conscrypt/SSLParametersImpl;Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket;)Lcom/android/org/conscrypt/SslWrapper; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->onNewSessionEstablished(J)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->onSSLStateChange(II)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->sessionContext()Lcom/android/org/conscrypt/AbstractSessionContext; +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setAlpnProtocols([B)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setEnabledCipherSuites([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setEnabledProtocols([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setHostname(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->setUseSessionTickets(Z)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->shutdownAndFreeSslNative()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->startHandshake()V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->verifyCertificateChain([JLjava/lang/String;)V +HSPLcom/android/org/conscrypt/ConscryptFileDescriptorSocket;->waitForHandshake()V +HSPLcom/android/org/conscrypt/DefaultSSLContextImpl;->()V +HSPLcom/android/org/conscrypt/DefaultSSLContextImpl;->getKeyManagers()[Ljavax/net/ssl/KeyManager; +HSPLcom/android/org/conscrypt/DefaultSSLContextImpl;->getTrustManagers()[Ljavax/net/ssl/TrustManager; +HSPLcom/android/org/conscrypt/DelegatingExtendedSSLSession;->(Lcom/android/org/conscrypt/ActiveSession;)V +HSPLcom/android/org/conscrypt/DelegatingExtendedSSLSession;->getCipherSuite()Ljava/lang/String; +HSPLcom/android/org/conscrypt/DelegatingExtendedSSLSession;->getLocalCertificates()[Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/DelegatingExtendedSSLSession;->getPeerCertificates()[Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/FileClientSessionCache$Impl;->(Ljava/io/File;)V +HSPLcom/android/org/conscrypt/FileClientSessionCache$Impl;->newAccessOrder()Ljava/util/Map; +HSPLcom/android/org/conscrypt/FileClientSessionCache;->usingDirectory(Ljava/io/File;)Lcom/android/org/conscrypt/SSLClientSessionCache; +HSPLcom/android/org/conscrypt/Hex;->intToHexString(II)Ljava/lang/String; +HSPLcom/android/org/conscrypt/InternalUtil;->logKeyToPublicKey([B)Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/KeyGeneratorImpl$HmacSHA1;->()V +HSPLcom/android/org/conscrypt/KeyGeneratorImpl;->(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/KeyGeneratorImpl;->(Ljava/lang/String;ILcom/android/org/conscrypt/KeyGeneratorImpl;)V +HSPLcom/android/org/conscrypt/KeyGeneratorImpl;->doKeyGeneration(I)[B +HSPLcom/android/org/conscrypt/KeyGeneratorImpl;->engineGenerateKey()Ljavax/crypto/SecretKey; +HSPLcom/android/org/conscrypt/KeyManagerFactoryImpl;->()V +HSPLcom/android/org/conscrypt/KeyManagerFactoryImpl;->engineGetKeyManagers()[Ljavax/net/ssl/KeyManager; +HSPLcom/android/org/conscrypt/KeyManagerFactoryImpl;->engineInit(Ljava/security/KeyStore;[C)V +HSPLcom/android/org/conscrypt/KeyManagerImpl;->(Ljava/security/KeyStore;[C)V +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->clientCertificateRequested([B[[B)V +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->clientPSKKeyRequested(Ljava/lang/String;[B[B)I +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->onNewSessionEstablished(J)V +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->onSSLStateChange(II)V +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->serverPSKKeyRequested(Ljava/lang/String;Ljava/lang/String;[B)I +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->serverSessionRequested([B)J +HSPLcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;->verifyCertificateChain([JLjava/lang/String;)V +HSPLcom/android/org/conscrypt/NativeCrypto;->X509_NAME_hash(Ljavax/security/auth/x500/X500Principal;Ljava/lang/String;)I +HSPLcom/android/org/conscrypt/NativeCrypto;->X509_NAME_hash_old(Ljavax/security/auth/x500/X500Principal;)I +HSPLcom/android/org/conscrypt/NativeCrypto;->checkEnabledCipherSuites([Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/org/conscrypt/NativeCrypto;->checkEnabledProtocols([Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/org/conscrypt/NativeCrypto;->cipherSuiteFromJava(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/NativeCrypto;->cipherSuiteToJava(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/NativeCrypto;->setEnabledCipherSuites(J[Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/NativeCrypto;->setEnabledProtocols(J[Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/NativeCryptoJni;->init()V +HSPLcom/android/org/conscrypt/NativeRef$EC_GROUP;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$EC_GROUP;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$EC_POINT;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$EC_POINT;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_PKEY;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$EVP_PKEY;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$HMAC_CTX;->(J)V +HSPLcom/android/org/conscrypt/NativeRef$HMAC_CTX;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef$SSL_SESSION;->(J)V +HSPLcom/android/org/conscrypt/NativeRef;->(J)V +HSPLcom/android/org/conscrypt/NativeRef;->doFree(J)V +HSPLcom/android/org/conscrypt/NativeRef;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/conscrypt/NativeRef;->finalize()V +HSPLcom/android/org/conscrypt/OpenSSLBIOInputStream;->(Ljava/io/InputStream;Z)V +HSPLcom/android/org/conscrypt/OpenSSLBIOInputStream;->getBioContext()J +HSPLcom/android/org/conscrypt/OpenSSLBIOInputStream;->gets([B)I +HSPLcom/android/org/conscrypt/OpenSSLBIOInputStream;->release()V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES$CBC$PKCS5Padding;->()V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES$CBC;->(Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES;->(Lcom/android/org/conscrypt/OpenSSLCipher$Mode;Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES;->checkSupportedKeySize(I)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES_BASE;->(Lcom/android/org/conscrypt/OpenSSLCipher$Mode;Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES_BASE;->getCipherBlockSize()I +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES_BASE;->getCipherName(ILcom/android/org/conscrypt/OpenSSLCipher$Mode;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->(Lcom/android/org/conscrypt/OpenSSLCipher$Mode;Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->engineInitInternal([BLjava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER;->getCipherName(ILcom/android/org/conscrypt/OpenSSLCipher$Mode;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLCipher$Mode;->(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/OpenSSLCipher$Padding;->(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->(Lcom/android/org/conscrypt/OpenSSLCipher$Mode;Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->checkAndSetEncodedKey(ILjava/security/Key;)[B +HSPLcom/android/org/conscrypt/OpenSSLCipher;->checkSupportedKeySize(I)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->checkSupportedMode(Lcom/android/org/conscrypt/OpenSSLCipher$Mode;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->checkSupportedPadding(Lcom/android/org/conscrypt/OpenSSLCipher$Padding;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->doFinalInternal([BII)I +HSPLcom/android/org/conscrypt/OpenSSLCipher;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->engineInitInternal([BLjava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLcom/android/org/conscrypt/OpenSSLCipher;->getBaseCipherName()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLCipher;->getCipherBlockSize()I +HSPLcom/android/org/conscrypt/OpenSSLCipher;->getOutputSizeForFinal(I)I +HSPLcom/android/org/conscrypt/OpenSSLCipher;->getOutputSizeForUpdate(I)I +HSPLcom/android/org/conscrypt/OpenSSLCipher;->getPadding()Lcom/android/org/conscrypt/OpenSSLCipher$Padding; +HSPLcom/android/org/conscrypt/OpenSSLCipher;->isEncrypting()Z +HSPLcom/android/org/conscrypt/OpenSSLCipher;->supportsVariableSizeKey()Z +HSPLcom/android/org/conscrypt/OpenSSLCipher;->updateInternal([BII[BII)I +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA$DirectRSA;->(I)V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA$DirectRSA;->doCryptoOperation([B[B)I +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA$PKCS1;->()V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->(I)V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->doCryptoInit(Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->doCryptoOperation([B[B)I +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->engineDoFinal([BII)[B +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->engineInitInternal(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLcom/android/org/conscrypt/OpenSSLCipherRSA;->engineUpdate([BII)[B +HSPLcom/android/org/conscrypt/OpenSSLContextImpl$TLSv12;->()V +HSPLcom/android/org/conscrypt/OpenSSLContextImpl;->()V +HSPLcom/android/org/conscrypt/OpenSSLContextImpl;->([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLContextImpl;->engineGetSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLcom/android/org/conscrypt/OpenSSLContextImpl;->engineInit([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V +HSPLcom/android/org/conscrypt/OpenSSLECGroupContext;->(Lcom/android/org/conscrypt/NativeRef$EC_GROUP;)V +HSPLcom/android/org/conscrypt/OpenSSLECGroupContext;->getECParameterSpec()Ljava/security/spec/ECParameterSpec; +HSPLcom/android/org/conscrypt/OpenSSLECGroupContext;->getNativeRef()Lcom/android/org/conscrypt/NativeRef$EC_GROUP; +HSPLcom/android/org/conscrypt/OpenSSLECKeyFactory;->()V +HSPLcom/android/org/conscrypt/OpenSSLECKeyFactory;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/OpenSSLECPointContext;->(Lcom/android/org/conscrypt/OpenSSLECGroupContext;Lcom/android/org/conscrypt/NativeRef$EC_POINT;)V +HSPLcom/android/org/conscrypt/OpenSSLECPointContext;->getECPoint()Ljava/security/spec/ECPoint; +HSPLcom/android/org/conscrypt/OpenSSLECPublicKey;->(Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/OpenSSLECPublicKey;->getAlgorithm()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLECPublicKey;->getEncoded()[B +HSPLcom/android/org/conscrypt/OpenSSLECPublicKey;->getParams()Ljava/security/spec/ECParameterSpec; +HSPLcom/android/org/conscrypt/OpenSSLKey;->(J)V +HSPLcom/android/org/conscrypt/OpenSSLKey;->(JZ)V +HSPLcom/android/org/conscrypt/OpenSSLKey;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/conscrypt/OpenSSLKey;->fromPublicKey(Ljava/security/PublicKey;)Lcom/android/org/conscrypt/OpenSSLKey; +HSPLcom/android/org/conscrypt/OpenSSLKey;->getNativeRef()Lcom/android/org/conscrypt/NativeRef$EVP_PKEY; +HSPLcom/android/org/conscrypt/OpenSSLKey;->getPublicKey()Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/OpenSSLKey;->getPublicKey(Ljava/security/spec/X509EncodedKeySpec;I)Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/OpenSSLKeyHolder;->getOpenSSLKey()Lcom/android/org/conscrypt/OpenSSLKey; +HSPLcom/android/org/conscrypt/OpenSSLMac$HmacSHA1;->()V +HSPLcom/android/org/conscrypt/OpenSSLMac;->(JI)V +HSPLcom/android/org/conscrypt/OpenSSLMac;->(JILcom/android/org/conscrypt/OpenSSLMac;)V +HSPLcom/android/org/conscrypt/OpenSSLMac;->engineDoFinal()[B +HSPLcom/android/org/conscrypt/OpenSSLMac;->engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLcom/android/org/conscrypt/OpenSSLMac;->engineReset()V +HSPLcom/android/org/conscrypt/OpenSSLMac;->engineUpdate([BII)V +HSPLcom/android/org/conscrypt/OpenSSLMac;->resetContext()V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK$MD5;->()V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA1;->()V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA256;->()V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->(JI)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->(JILcom/android/org/conscrypt/NativeRef$EVP_MD_CTX;Z)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->(JILcom/android/org/conscrypt/OpenSSLMessageDigestJDK;)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->clone()Ljava/lang/Object; +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineDigest()[B +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineGetDigestLength()I +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineReset()V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineUpdate(B)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->engineUpdate([BII)V +HSPLcom/android/org/conscrypt/OpenSSLMessageDigestJDK;->ensureDigestInitializedInContext()V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->()V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putECDHKeyAgreementImplClass(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putImplClassWithKeyConstraints(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putMacImplClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putRAWRSASignatureImplClass(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putRSACipherImplClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putSignatureImplClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLProvider;->putSymmetricCipherImplClass(Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLRSAKeyFactory;->()V +HSPLcom/android/org/conscrypt/OpenSSLRSAKeyFactory;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->(Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->ensureReadParams()V +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getAlgorithm()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getEncoded()[B +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getFormat()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getModulus()Ljava/math/BigInteger; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getOpenSSLKey()Lcom/android/org/conscrypt/OpenSSLKey; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->getPublicExponent()Ljava/math/BigInteger; +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->hashCode()I +HSPLcom/android/org/conscrypt/OpenSSLRSAPublicKey;->toString()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLRandom;->()V +HSPLcom/android/org/conscrypt/OpenSSLRandom;->engineNextBytes([B)V +HSPLcom/android/org/conscrypt/OpenSSLRandom;->engineSetSeed([B)V +HSPLcom/android/org/conscrypt/OpenSSLSignature$EngineType;->(Ljava/lang/String;I)V +HSPLcom/android/org/conscrypt/OpenSSLSignature$EngineType;->values()[Lcom/android/org/conscrypt/OpenSSLSignature$EngineType; +HSPLcom/android/org/conscrypt/OpenSSLSignature$RSAPKCS1Padding;->(J)V +HSPLcom/android/org/conscrypt/OpenSSLSignature$RSAPKCS1Padding;->configureEVP_PKEY_CTX(J)V +HSPLcom/android/org/conscrypt/OpenSSLSignature$SHA1RSA;->()V +HSPLcom/android/org/conscrypt/OpenSSLSignature$SHA256RSA;->()V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->-getcom-android-org-conscrypt-OpenSSLSignature$EngineTypeSwitchesValues()[I +HSPLcom/android/org/conscrypt/OpenSSLSignature;->(JLcom/android/org/conscrypt/OpenSSLSignature$EngineType;)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->(JLcom/android/org/conscrypt/OpenSSLSignature$EngineType;Lcom/android/org/conscrypt/OpenSSLSignature;)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->checkEngineType(Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->engineInitVerify(Ljava/security/PublicKey;)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->engineUpdate([BII)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->engineVerify([B)Z +HSPLcom/android/org/conscrypt/OpenSSLSignature;->initInternal(Lcom/android/org/conscrypt/OpenSSLKey;Z)V +HSPLcom/android/org/conscrypt/OpenSSLSignature;->resetContext()V +HSPLcom/android/org/conscrypt/OpenSSLSocketFactoryImpl;->(Lcom/android/org/conscrypt/SSLParametersImpl;)V +HSPLcom/android/org/conscrypt/OpenSSLSocketFactoryImpl;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; +HSPLcom/android/org/conscrypt/OpenSSLSocketFactoryImpl;->hasFileDescriptor(Ljava/net/Socket;)Z +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->(Ljava/net/Socket;Ljava/lang/String;IZ)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->close()V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getAlpnSelectedProtocol()[B +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getChannelId()[B +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getHandshakeSession()Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getHostname()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->getHostnameOrIP()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->isClosed()Z +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->isConnected()Z +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([B)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setChannelIdEnabled(Z)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setChannelIdPrivateKey(Ljava/security/PrivateKey;)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setHostname(Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLSocketImpl;->setUseSessionTickets(Z)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertPath$Encoding;->-get0(Lcom/android/org/conscrypt/OpenSSLX509CertPath$Encoding;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLX509CertPath$Encoding;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertPath;->(Ljava/util/List;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertPath;->getCertificates()Ljava/util/List; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->(J)V +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->alternativeNameArrayToList([[Ljava/lang/Object;)Ljava/util/Collection; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->checkValidity()V +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->checkValidity(Ljava/util/Date;)V +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->createCertChain([J)[Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->equals(Ljava/lang/Object;)Z +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->finalize()V +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->fromPkcs7DerInputStream(Ljava/io/InputStream;)Ljava/util/List; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->fromX509DerInputStream(Ljava/io/InputStream;)Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->fromX509PemInputStream(Ljava/io/InputStream;)Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getBasicConstraints()I +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getCriticalExtensionOIDs()Ljava/util/Set; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getEncoded()[B +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getExtendedKeyUsage()Ljava/util/List; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getExtensionValue(Ljava/lang/String;)[B +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getIssuerDN()Ljava/security/Principal; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getKeyUsage()[Z +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getNotAfter()Ljava/util/Date; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getNotBefore()Ljava/util/Date; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getPublicKey()Ljava/security/PublicKey; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSerialNumber()Ljava/math/BigInteger; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSigAlgName()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSigAlgOID()Ljava/lang/String; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSubjectDN()Ljava/security/Principal; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getTBSCertificate()[B +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->getVersion()I +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->hasUnsupportedCriticalExtension()Z +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->hashCode()I +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->verify(Ljava/security/PublicKey;)V +HSPLcom/android/org/conscrypt/OpenSSLX509Certificate;->verifyOpenSSL(Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->(Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->fromPkcs7DerInputStream(Ljava/io/InputStream;)Ljava/util/List; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->fromX509DerInputStream(Ljava/io/InputStream;)Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->fromX509DerInputStream(Ljava/io/InputStream;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->fromX509PemInputStream(Ljava/io/InputStream;)Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1;->fromX509PemInputStream(Ljava/io/InputStream;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$2;->(Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->()V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->(Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;)V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser;->generateItem(Ljava/io/InputStream;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->-get0()[B +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->()V +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->engineGenerateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath; +HSPLcom/android/org/conscrypt/OpenSSLX509CertificateFactory;->engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/PeerInfoProvider$1;->()V +HSPLcom/android/org/conscrypt/PeerInfoProvider;->()V +HSPLcom/android/org/conscrypt/Platform;->blockGuardOnNetwork()V +HSPLcom/android/org/conscrypt/Platform;->checkServerTrusted(Ljavax/net/ssl/X509TrustManager;[Ljava/security/cert/X509Certificate;Ljava/lang/String;Lcom/android/org/conscrypt/AbstractConscryptSocket;)V +HSPLcom/android/org/conscrypt/Platform;->closeGuardClose(Ljava/lang/Object;)V +HSPLcom/android/org/conscrypt/Platform;->closeGuardGet()Ldalvik/system/CloseGuard; +HSPLcom/android/org/conscrypt/Platform;->closeGuardOpen(Ljava/lang/Object;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/Platform;->getFileDescriptor(Ljava/net/Socket;)Ljava/io/FileDescriptor; +HSPLcom/android/org/conscrypt/Platform;->getSSLParameters(Ljavax/net/ssl/SSLParameters;Lcom/android/org/conscrypt/SSLParametersImpl;Lcom/android/org/conscrypt/AbstractConscryptSocket;)V +HSPLcom/android/org/conscrypt/Platform;->isCTVerificationRequired(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/Platform;->isLiteralIpAddress(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/Platform;->oidToAlgorithmName(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/Platform;->ping()V +HSPLcom/android/org/conscrypt/Platform;->setCurveName(Ljava/security/spec/ECParameterSpec;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/Platform;->setup()V +HSPLcom/android/org/conscrypt/Platform;->wrapSSLSession(Lcom/android/org/conscrypt/ActiveSession;)Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/Platform;->wrapSocketFactoryIfNeeded(Lcom/android/org/conscrypt/OpenSSLSocketFactoryImpl;)Ljavax/net/ssl/SSLSocketFactory; +HSPLcom/android/org/conscrypt/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/SSLClientSessionCache;->getSessionData(Ljava/lang/String;I)[B +HSPLcom/android/org/conscrypt/SSLClientSessionCache;->putSessionData(Ljavax/net/ssl/SSLSession;[B)V +HSPLcom/android/org/conscrypt/SSLParametersImpl$AliasChooser;->chooseClientAlias(Ljavax/net/ssl/X509KeyManager;[Ljavax/security/auth/x500/X500Principal;[Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl$AliasChooser;->chooseServerAlias(Ljavax/net/ssl/X509KeyManager;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks;->chooseClientPSKIdentity(Lcom/android/org/conscrypt/PSKKeyManager;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks;->chooseServerPSKIdentityHint(Lcom/android/org/conscrypt/PSKKeyManager;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks;->getPSKKey(Lcom/android/org/conscrypt/PSKKeyManager;Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKey; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;Lcom/android/org/conscrypt/ClientSessionContext;Lcom/android/org/conscrypt/ServerSessionContext;[Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/SSLParametersImpl;->clone()Ljava/lang/Object; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->concat([[Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->createDefaultX509KeyManager()Ljavax/net/ssl/X509KeyManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->createDefaultX509TrustManager()Ljavax/net/ssl/X509TrustManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->filterFromProtocols([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->findFirstX509KeyManager([Ljavax/net/ssl/KeyManager;)Ljavax/net/ssl/X509KeyManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->findFirstX509TrustManager([Ljavax/net/ssl/TrustManager;)Ljavax/net/ssl/X509TrustManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getClientSessionContext()Lcom/android/org/conscrypt/ClientSessionContext; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getDefaultCipherSuites(ZZ)[Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getDefaultX509KeyManager()Ljavax/net/ssl/X509KeyManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getDefaultX509TrustManager()Ljavax/net/ssl/X509TrustManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getEnableSessionCreation()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getEnabledCipherSuites()[Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getEnabledProtocols()[Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getEndpointIdentificationAlgorithm()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getNeedClientAuth()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getPSKKeyManager()Lcom/android/org/conscrypt/PSKKeyManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getSessionContext()Lcom/android/org/conscrypt/AbstractSessionContext; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getUseCipherSuitesOrder()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getUseClientMode()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getUseSni()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getWantClientAuth()Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->getX509TrustManager()Ljavax/net/ssl/X509TrustManager; +HSPLcom/android/org/conscrypt/SSLParametersImpl;->isCTVerificationEnabled(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/SSLParametersImpl;->setAlpnProtocols([B)V +HSPLcom/android/org/conscrypt/SSLParametersImpl;->setEnabledCipherSuites([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/SSLParametersImpl;->setEnabledProtocols([Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/SSLParametersImpl;->setUseSessionTickets(Z)V +HSPLcom/android/org/conscrypt/SSLParametersImpl;->setUseSni(Z)V +HSPLcom/android/org/conscrypt/ServerSessionContext;->()V +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->(Lcom/android/org/conscrypt/AbstractSessionContext;Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;Ljava/lang/String;I[Ljava/security/cert/X509Certificate;[B[B)V +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->(Lcom/android/org/conscrypt/AbstractSessionContext;Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;Ljava/lang/String;I[Ljava/security/cert/X509Certificate;[B[BLcom/android/org/conscrypt/SslSessionWrapper$Impl;)V +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getCipherSuite()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getCreationTime()J +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getId()[B +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getPeerHost()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getPeerPort()I +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->getProtocol()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->isValid()Z +HSPLcom/android/org/conscrypt/SslSessionWrapper$Impl;->offerToResume(Lcom/android/org/conscrypt/SslWrapper;)V +HSPLcom/android/org/conscrypt/SslSessionWrapper;->()V +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getCipherSuite()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getId()[B +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getOcspResponse(Lcom/android/org/conscrypt/ActiveSession;)[B +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getPeerHost()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getPeerOcspStapledResponse()[B +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getPeerPort()I +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getPeerSignedCertificateTimestamp()[B +HSPLcom/android/org/conscrypt/SslSessionWrapper;->getProtocol()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslSessionWrapper;->isValid()Z +HSPLcom/android/org/conscrypt/SslSessionWrapper;->newInstance(Lcom/android/org/conscrypt/NativeRef$SSL_SESSION;Lcom/android/org/conscrypt/ActiveSession;)Lcom/android/org/conscrypt/SslSessionWrapper; +HSPLcom/android/org/conscrypt/SslSessionWrapper;->offerToResume(Lcom/android/org/conscrypt/SslWrapper;)V +HSPLcom/android/org/conscrypt/SslSessionWrapper;->toBytes()[B +HSPLcom/android/org/conscrypt/SslSessionWrapper;->toSSLSession()Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/SslWrapper;->(JLcom/android/org/conscrypt/SSLParametersImpl;Lcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;Lcom/android/org/conscrypt/SSLParametersImpl$AliasChooser;Lcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks;)V +HSPLcom/android/org/conscrypt/SslWrapper;->close()V +HSPLcom/android/org/conscrypt/SslWrapper;->doHandshake(Ljava/io/FileDescriptor;I)V +HSPLcom/android/org/conscrypt/SslWrapper;->enablePSKKeyManagerIfRequested()V +HSPLcom/android/org/conscrypt/SslWrapper;->getAlpnSelectedProtocol()[B +HSPLcom/android/org/conscrypt/SslWrapper;->getCipherSuite()Ljava/lang/String; +HSPLcom/android/org/conscrypt/SslWrapper;->getLocalCertificates()[Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/SslWrapper;->getPeerCertificateOcspData()[B +HSPLcom/android/org/conscrypt/SslWrapper;->getPeerCertificates()[Lcom/android/org/conscrypt/OpenSSLX509Certificate; +HSPLcom/android/org/conscrypt/SslWrapper;->getPeerTlsSctData()[B +HSPLcom/android/org/conscrypt/SslWrapper;->getTime()J +HSPLcom/android/org/conscrypt/SslWrapper;->getTimeout()J +HSPLcom/android/org/conscrypt/SslWrapper;->initialize(Ljava/lang/String;Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/SslWrapper;->interrupt()V +HSPLcom/android/org/conscrypt/SslWrapper;->isClient()Z +HSPLcom/android/org/conscrypt/SslWrapper;->isClosed()Z +HSPLcom/android/org/conscrypt/SslWrapper;->newInstance(Lcom/android/org/conscrypt/SSLParametersImpl;Lcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks;Lcom/android/org/conscrypt/SSLParametersImpl$AliasChooser;Lcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks;)Lcom/android/org/conscrypt/SslWrapper; +HSPLcom/android/org/conscrypt/SslWrapper;->offerToResumeSession(J)V +HSPLcom/android/org/conscrypt/SslWrapper;->read(Ljava/io/FileDescriptor;[BIII)I +HSPLcom/android/org/conscrypt/SslWrapper;->setCertificateValidation(J)V +HSPLcom/android/org/conscrypt/SslWrapper;->setTlsChannelId(Lcom/android/org/conscrypt/OpenSSLKey;)V +HSPLcom/android/org/conscrypt/SslWrapper;->shutdown(Ljava/io/FileDescriptor;)V +HSPLcom/android/org/conscrypt/SslWrapper;->write(Ljava/io/FileDescriptor;[BIII)V +HSPLcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->(ZLjava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->(ZLjava/security/cert/X509Certificate;Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker;->init(Z)V +HSPLcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;->()V +HSPLcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;->(Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;Lcom/android/org/conscrypt/TrustedCertificateStore;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;Lcom/android/org/conscrypt/TrustedCertificateStore;Lcom/android/org/conscrypt/CertBlacklist;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->(Ljava/security/KeyStore;Lcom/android/org/conscrypt/CertPinManager;Lcom/android/org/conscrypt/TrustedCertificateStore;Lcom/android/org/conscrypt/CertBlacklist;Lcom/android/org/conscrypt/ct/CTLogStore;Lcom/android/org/conscrypt/ct/CTVerifier;Lcom/android/org/conscrypt/ct/CTPolicy;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->acceptedIssuers(Ljava/security/KeyStore;)[Ljava/security/cert/X509Certificate; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->checkBlacklist(Ljava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->checkTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLSession;Ljavax/net/ssl/SSLParameters;Z)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->checkTrusted([Ljava/security/cert/X509Certificate;[B[BLjava/lang/String;Ljava/lang/String;Z)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->checkTrustedRecursive([Ljava/security/cert/X509Certificate;[B[BLjava/lang/String;ZLjava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/Set;)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->findAllTrustAnchorsByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->findTrustAnchorBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/TrustAnchor; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->getHandshakeSessionOrThrow(Ljavax/net/ssl/SSLSocket;)Ljavax/net/ssl/SSLSession; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->getOcspDataFromSession(Ljavax/net/ssl/SSLSession;)[B +HSPLcom/android/org/conscrypt/TrustManagerImpl;->getTlsSctDataFromSession(Ljavax/net/ssl/SSLSession;)[B +HSPLcom/android/org/conscrypt/TrustManagerImpl;->getTrustedChainForServer([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->setOcspResponses(Ljava/security/cert/PKIXParameters;Ljava/security/cert/X509Certificate;[B)V +HSPLcom/android/org/conscrypt/TrustManagerImpl;->sortPotentialAnchors(Ljava/util/Set;)Ljava/util/Collection; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->trustAnchors([Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLcom/android/org/conscrypt/TrustManagerImpl;->verifyChain(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Z[B[B)Ljava/util/List; +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->()V +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->(Ljava/util/Set;)V +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set; +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/TrustAnchor; +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->index(Ljava/security/cert/TrustAnchor;)V +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->index(Ljava/security/cert/X509Certificate;)Ljava/security/cert/TrustAnchor; +HSPLcom/android/org/conscrypt/TrustedCertificateIndex;->index(Ljava/util/Set;)V +HSPLcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi;->()V +HSPLcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi;->engineLoad(Ljava/io/InputStream;[C)V +HSPLcom/android/org/conscrypt/TrustedCertificateStore$1;->(Lcom/android/org/conscrypt/TrustedCertificateStore;Ljava/security/cert/X509Certificate;)V +HSPLcom/android/org/conscrypt/TrustedCertificateStore$CertSelector;->match(Ljava/security/cert/X509Certificate;)Z +HSPLcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->-get0()Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->-get1()Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->-get2()Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->-set0(Ljava/io/File;)Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;->-set1(Ljava/io/File;)Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->()V +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->(Ljava/io/File;Ljava/io/File;Ljava/io/File;)V +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->file(Ljava/io/File;Ljava/lang/String;I)Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->fileForAlias(Ljava/lang/String;)Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->findCert(Ljava/io/File;Ljavax/security/auth/x500/X500Principal;Lcom/android/org/conscrypt/TrustedCertificateStore$CertSelector;Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->getCertificate(Ljava/lang/String;Z)Ljava/security/cert/Certificate; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->getCertificateFile(Ljava/io/File;Ljava/security/cert/X509Certificate;)Ljava/io/File; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->hash(Ljavax/security/auth/x500/X500Principal;)Ljava/lang/String; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->isDeletedSystemCertificate(Ljava/security/cert/X509Certificate;)Z +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->isSystem(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->isTombstone(Ljava/io/File;)Z +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->isUser(Ljava/lang/String;)Z +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->readCertificate(Ljava/io/File;)Ljava/security/cert/X509Certificate; +HSPLcom/android/org/conscrypt/TrustedCertificateStore;->setDefaultUserDirectory(Ljava/io/File;)V +HSPLcom/android/org/conscrypt/ct/CTLogInfo;->(Ljava/security/PublicKey;Ljava/lang/String;Ljava/lang/String;)V +HSPLcom/android/org/conscrypt/ct/CTLogStore;->getKnownLog([B)Lcom/android/org/conscrypt/ct/CTLogInfo; +HSPLcom/android/org/conscrypt/ct/CTLogStoreImpl;->()V +HSPLcom/android/org/conscrypt/ct/CTLogStoreImpl;->(Ljava/io/File;Ljava/io/File;[Lcom/android/org/conscrypt/ct/CTLogInfo;)V +HSPLcom/android/org/conscrypt/ct/CTLogStoreImpl;->createDefaultFallbackLogs()[Lcom/android/org/conscrypt/ct/CTLogInfo; +HSPLcom/android/org/conscrypt/ct/CTLogStoreImpl;->getDefaultFallbackLogs()[Lcom/android/org/conscrypt/ct/CTLogInfo; +HSPLcom/android/org/conscrypt/ct/CTPolicy;->doesResultConformToPolicy(Lcom/android/org/conscrypt/ct/CTVerificationResult;Ljava/lang/String;[Ljava/security/cert/X509Certificate;)Z +HSPLcom/android/org/conscrypt/ct/CTPolicyImpl;->(Lcom/android/org/conscrypt/ct/CTLogStore;I)V +HSPLcom/android/org/conscrypt/ct/CTVerifier;->(Lcom/android/org/conscrypt/ct/CTLogStore;)V +HSPLcom/android/server/LocalServices;->addService(Ljava/lang/Class;Ljava/lang/Object;)V +HSPLcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object; +HSPLcom/android/server/NetworkManagementSocketTagger$1;->()V +HSPLcom/android/server/NetworkManagementSocketTagger$1;->initialValue()Lcom/android/server/NetworkManagementSocketTagger$SocketTags; +HSPLcom/android/server/NetworkManagementSocketTagger$1;->initialValue()Ljava/lang/Object; +HSPLcom/android/server/NetworkManagementSocketTagger$SocketTags;->()V +HSPLcom/android/server/NetworkManagementSocketTagger;->()V +HSPLcom/android/server/NetworkManagementSocketTagger;->install()V +HSPLcom/android/server/NetworkManagementSocketTagger;->setThreadSocketStatsTag(I)I +HSPLcom/android/server/NetworkManagementSocketTagger;->tag(Ljava/io/FileDescriptor;)V +HSPLcom/android/server/NetworkManagementSocketTagger;->tagSocketFd(Ljava/io/FileDescriptor;II)V +HSPLcom/android/server/NetworkManagementSocketTagger;->unTagSocketFd(Ljava/io/FileDescriptor;)V +HSPLcom/android/server/NetworkManagementSocketTagger;->untag(Ljava/io/FileDescriptor;)V +HSPLcom/android/server/SystemConfig$PermissionEntry;->(Ljava/lang/String;Z)V +HSPLcom/android/server/SystemConfig;->()V +HSPLcom/android/server/SystemConfig;->addFeature(Ljava/lang/String;I)V +HSPLcom/android/server/SystemConfig;->getAvailableFeatures()Landroid/util/ArrayMap; +HSPLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierAssociatedApps()Landroid/util/ArrayMap; +HSPLcom/android/server/SystemConfig;->getGlobalGids()[I +HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig; +HSPLcom/android/server/SystemConfig;->getPermissions()Landroid/util/ArrayMap; +HSPLcom/android/server/SystemConfig;->getPrivAppDenyPermissions(Ljava/lang/String;)Landroid/util/ArraySet; +HSPLcom/android/server/SystemConfig;->getPrivAppPermissions(Ljava/lang/String;)Landroid/util/ArraySet; +HSPLcom/android/server/SystemConfig;->getSharedLibraries()Landroid/util/ArrayMap; +HSPLcom/android/server/SystemConfig;->getSystemPermissions()Landroid/util/SparseArray; +HSPLcom/android/server/SystemConfig;->readPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V +HSPLcom/android/server/SystemConfig;->readPermissions(Ljava/io/File;I)V +HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Ljava/io/File;I)V +HSPLcom/android/server/SystemConfig;->readPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/google/android/collect/Lists;->newArrayList()Ljava/util/ArrayList; +HSPLcom/google/android/collect/Maps;->newHashMap()Ljava/util/HashMap; +HSPLcom/google/android/collect/Sets;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet; +HSPLcom/google/android/collect/Sets;->newHashSet([Ljava/lang/Object;)Ljava/util/HashSet; +HSPLcom/google/android/gles_jni/EGLConfigImpl;->(J)V +HSPLcom/google/android/gles_jni/EGLContextImpl;->(J)V +HSPLcom/google/android/gles_jni/EGLContextImpl;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gles_jni/EGLContextImpl;->getGL()Ljavax/microedition/khronos/opengles/GL; +HSPLcom/google/android/gles_jni/EGLDisplayImpl;->(J)V +HSPLcom/google/android/gles_jni/EGLDisplayImpl;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gles_jni/EGLImpl;->()V +HSPLcom/google/android/gles_jni/EGLImpl;->eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext; +HSPLcom/google/android/gles_jni/EGLImpl;->eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLcom/google/android/gles_jni/EGLImpl;->eglCreateWindowSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLcom/google/android/gles_jni/EGLImpl;->eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext; +HSPLcom/google/android/gles_jni/EGLImpl;->eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay; +HSPLcom/google/android/gles_jni/EGLSurfaceImpl;->(J)V +HSPLcom/google/android/gles_jni/GLImpl;->()V +HSPLcom/google/android/gles_jni/GLImpl;->glGetString(I)Ljava/lang/String; +HSPLcom/google/vr/platform/DeviceInfo;->getVrBoot()Z +HSPLdalvik/system/BaseDexClassLoader;->(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLdalvik/system/BaseDexClassLoader;->findLibrary(Ljava/lang/String;)Ljava/lang/String; +HSPLdalvik/system/BaseDexClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL; +HSPLdalvik/system/BaseDexClassLoader;->getLdLibraryPath()Ljava/lang/String; +HSPLdalvik/system/BaseDexClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package; +HSPLdalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V +HSPLdalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V +HSPLdalvik/system/BaseDexClassLoader;->toString()Ljava/lang/String; +HSPLdalvik/system/BlockGuard$1;->getPolicyMask()I +HSPLdalvik/system/BlockGuard$1;->onNetwork()V +HSPLdalvik/system/BlockGuard$1;->onReadFromDisk()V +HSPLdalvik/system/BlockGuard$1;->onUnbufferedIO()V +HSPLdalvik/system/BlockGuard$1;->onWriteToDisk()V +HSPLdalvik/system/BlockGuard$2;->initialValue()Ldalvik/system/BlockGuard$Policy; +HSPLdalvik/system/BlockGuard$2;->initialValue()Ljava/lang/Object; +HSPLdalvik/system/BlockGuard$BlockGuardPolicyException;->(IILjava/lang/String;)V +HSPLdalvik/system/BlockGuard$BlockGuardPolicyException;->getMessage()Ljava/lang/String; +HSPLdalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicy()I +HSPLdalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; +HSPLdalvik/system/BlockGuard;->setThreadPolicy(Ldalvik/system/BlockGuard$Policy;)V +HSPLdalvik/system/CloseGuard$DefaultTracker;->close(Ljava/lang/Throwable;)V +HSPLdalvik/system/CloseGuard$DefaultTracker;->open(Ljava/lang/Throwable;)V +HSPLdalvik/system/CloseGuard$Reporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLdalvik/system/CloseGuard$Tracker;->close(Ljava/lang/Throwable;)V +HSPLdalvik/system/CloseGuard$Tracker;->open(Ljava/lang/Throwable;)V +HSPLdalvik/system/CloseGuard;->()V +HSPLdalvik/system/CloseGuard;->close()V +HSPLdalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; +HSPLdalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter; +HSPLdalvik/system/CloseGuard;->open(Ljava/lang/String;)V +HSPLdalvik/system/CloseGuard;->setEnabled(Z)V +HSPLdalvik/system/CloseGuard;->setReporter(Ldalvik/system/CloseGuard$Reporter;)V +HSPLdalvik/system/CloseGuard;->warnIfOpen()V +HSPLdalvik/system/DalvikLogHandler;->publish(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V +HSPLdalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String; +HSPLdalvik/system/DexClassLoader;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLdalvik/system/DexFile;->(Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V +HSPLdalvik/system/DexFile;->(Ljava/lang/String;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V +HSPLdalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class; +HSPLdalvik/system/DexFile;->loadClassBinaryName(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class; +HSPLdalvik/system/DexFile;->openDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ljava/lang/Object; +HSPLdalvik/system/DexPathList$Element;->-wrap0(Ldalvik/system/DexPathList$Element;)Ljava/lang/String; +HSPLdalvik/system/DexPathList$Element;->(Ldalvik/system/DexFile;Ljava/io/File;)V +HSPLdalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class; +HSPLdalvik/system/DexPathList$Element;->findResource(Ljava/lang/String;)Ljava/net/URL; +HSPLdalvik/system/DexPathList$Element;->getDexPath()Ljava/lang/String; +HSPLdalvik/system/DexPathList$Element;->maybeInit()V +HSPLdalvik/system/DexPathList$Element;->toString()Ljava/lang/String; +HSPLdalvik/system/DexPathList$NativeLibraryElement;->(Ljava/io/File;)V +HSPLdalvik/system/DexPathList$NativeLibraryElement;->(Ljava/io/File;Ljava/lang/String;)V +HSPLdalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String; +HSPLdalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V +HSPLdalvik/system/DexPathList;->(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V +HSPLdalvik/system/DexPathList;->findClass(Ljava/lang/String;Ljava/util/List;)Ljava/lang/Class; +HSPLdalvik/system/DexPathList;->findLibrary(Ljava/lang/String;)Ljava/lang/String; +HSPLdalvik/system/DexPathList;->findResource(Ljava/lang/String;)Ljava/net/URL; +HSPLdalvik/system/DexPathList;->getDexPaths()Ljava/util/List; +HSPLdalvik/system/DexPathList;->getNativeLibraryDirectories()Ljava/util/List; +HSPLdalvik/system/DexPathList;->loadDexFile(Ljava/io/File;Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ldalvik/system/DexFile; +HSPLdalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;)[Ldalvik/system/DexPathList$Element; +HSPLdalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement; +HSPLdalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List; +HSPLdalvik/system/DexPathList;->splitPaths(Ljava/lang/String;Z)Ljava/util/List; +HSPLdalvik/system/DexPathList;->toString()Ljava/lang/String; +HSPLdalvik/system/PathClassLoader;->(Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLdalvik/system/PathClassLoader;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V +HSPLdalvik/system/SocketTagger$1;->()V +HSPLdalvik/system/SocketTagger;->()V +HSPLdalvik/system/SocketTagger;->get()Ldalvik/system/SocketTagger; +HSPLdalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V +HSPLdalvik/system/VMRuntime;->getInstructionSet(Ljava/lang/String;)Ljava/lang/String; +HSPLdalvik/system/VMRuntime;->getRuntime()Ldalvik/system/VMRuntime; +HSPLdalvik/system/VMRuntime;->getTargetSdkVersion()I +HSPLdalvik/system/VMRuntime;->is64BitAbi(Ljava/lang/String;)Z +HSPLdalvik/system/VMRuntime;->is64BitInstructionSet(Ljava/lang/String;)Z +HSPLdalvik/system/VMRuntime;->setTargetHeapUtilization(F)F +HSPLdalvik/system/VMRuntime;->setTargetSdkVersion(I)V +HSPLdalvik/system/VMStack;->getStackClass1()Ljava/lang/Class; +HSPLdalvik/system/ZygoteHooks;->postForkChild(IZLjava/lang/String;)V +HSPLdalvik/system/ZygoteHooks;->postForkCommon()V +HSPLjava/io/Bits;->getFloat([BI)F +HSPLjava/io/Bits;->getInt([BI)I +HSPLjava/io/Bits;->getLong([BI)J +HSPLjava/io/Bits;->getShort([BI)S +HSPLjava/io/Bits;->putFloat([BIF)V +HSPLjava/io/Bits;->putInt([BII)V +HSPLjava/io/Bits;->putLong([BIJ)V +HSPLjava/io/Bits;->putShort([BIS)V +HSPLjava/io/BufferedInputStream;->(Ljava/io/InputStream;)V +HSPLjava/io/BufferedInputStream;->(Ljava/io/InputStream;I)V +HSPLjava/io/BufferedInputStream;->available()I +HSPLjava/io/BufferedInputStream;->close()V +HSPLjava/io/BufferedInputStream;->fill()V +HSPLjava/io/BufferedInputStream;->getBufIfOpen()[B +HSPLjava/io/BufferedInputStream;->getInIfOpen()Ljava/io/InputStream; +HSPLjava/io/BufferedInputStream;->mark(I)V +HSPLjava/io/BufferedInputStream;->markSupported()Z +HSPLjava/io/BufferedInputStream;->read()I +HSPLjava/io/BufferedInputStream;->read([BII)I +HSPLjava/io/BufferedInputStream;->read1([BII)I +HSPLjava/io/BufferedOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/BufferedOutputStream;->(Ljava/io/OutputStream;I)V +HSPLjava/io/BufferedOutputStream;->flush()V +HSPLjava/io/BufferedOutputStream;->flushBuffer()V +HSPLjava/io/BufferedOutputStream;->write(I)V +HSPLjava/io/BufferedOutputStream;->write([BII)V +HSPLjava/io/BufferedReader;->(Ljava/io/Reader;)V +HSPLjava/io/BufferedReader;->(Ljava/io/Reader;I)V +HSPLjava/io/BufferedReader;->close()V +HSPLjava/io/BufferedReader;->ensureOpen()V +HSPLjava/io/BufferedReader;->fill()V +HSPLjava/io/BufferedReader;->readLine()Ljava/lang/String; +HSPLjava/io/BufferedReader;->readLine(Z)Ljava/lang/String; +HSPLjava/io/BufferedWriter;->(Ljava/io/Writer;)V +HSPLjava/io/BufferedWriter;->(Ljava/io/Writer;I)V +HSPLjava/io/BufferedWriter;->ensureOpen()V +HSPLjava/io/BufferedWriter;->flush()V +HSPLjava/io/BufferedWriter;->flushBuffer()V +HSPLjava/io/BufferedWriter;->min(II)I +HSPLjava/io/BufferedWriter;->newLine()V +HSPLjava/io/BufferedWriter;->write(Ljava/lang/String;II)V +HSPLjava/io/ByteArrayInputStream;->([B)V +HSPLjava/io/ByteArrayInputStream;->([BII)V +HSPLjava/io/ByteArrayInputStream;->available()I +HSPLjava/io/ByteArrayInputStream;->close()V +HSPLjava/io/ByteArrayInputStream;->mark(I)V +HSPLjava/io/ByteArrayInputStream;->markSupported()Z +HSPLjava/io/ByteArrayInputStream;->read()I +HSPLjava/io/ByteArrayInputStream;->read([BII)I +HSPLjava/io/ByteArrayInputStream;->reset()V +HSPLjava/io/ByteArrayInputStream;->skip(J)J +HSPLjava/io/ByteArrayOutputStream;->()V +HSPLjava/io/ByteArrayOutputStream;->(I)V +HSPLjava/io/ByteArrayOutputStream;->close()V +HSPLjava/io/ByteArrayOutputStream;->ensureCapacity(I)V +HSPLjava/io/ByteArrayOutputStream;->grow(I)V +HSPLjava/io/ByteArrayOutputStream;->reset()V +HSPLjava/io/ByteArrayOutputStream;->size()I +HSPLjava/io/ByteArrayOutputStream;->toByteArray()[B +HSPLjava/io/ByteArrayOutputStream;->toString(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/ByteArrayOutputStream;->write(I)V +HSPLjava/io/ByteArrayOutputStream;->write([BII)V +HSPLjava/io/ByteArrayOutputStream;->writeTo(Ljava/io/OutputStream;)V +HSPLjava/io/CharArrayWriter;->()V +HSPLjava/io/CharArrayWriter;->(I)V +HSPLjava/io/CharArrayWriter;->toString()Ljava/lang/String; +HSPLjava/io/CharArrayWriter;->write(I)V +HSPLjava/io/CharArrayWriter;->write([CII)V +HSPLjava/io/DataInputStream;->(Ljava/io/InputStream;)V +HSPLjava/io/DataInputStream;->read([BII)I +HSPLjava/io/DataInputStream;->readBoolean()Z +HSPLjava/io/DataInputStream;->readDouble()D +HSPLjava/io/DataInputStream;->readFully([B)V +HSPLjava/io/DataInputStream;->readFully([BII)V +HSPLjava/io/DataInputStream;->readInt()I +HSPLjava/io/DataInputStream;->readLong()J +HSPLjava/io/DataInputStream;->readUTF()Ljava/lang/String; +HSPLjava/io/DataInputStream;->readUTF(Ljava/io/DataInput;)Ljava/lang/String; +HSPLjava/io/DataInputStream;->readUnsignedByte()I +HSPLjava/io/DataInputStream;->readUnsignedShort()I +HSPLjava/io/DataOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/DataOutputStream;->flush()V +HSPLjava/io/DataOutputStream;->incCount(I)V +HSPLjava/io/DataOutputStream;->size()I +HSPLjava/io/DataOutputStream;->write([BII)V +HSPLjava/io/DataOutputStream;->writeFloat(F)V +HSPLjava/io/DataOutputStream;->writeInt(I)V +HSPLjava/io/DataOutputStream;->writeLong(J)V +HSPLjava/io/DataOutputStream;->writeShort(I)V +HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V +HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I +HSPLjava/io/EOFException;->()V +HSPLjava/io/ExpiringCache;->clear()V +HSPLjava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File; +HSPLjava/io/File;->(Ljava/io/File;Ljava/lang/String;)V +HSPLjava/io/File;->(Ljava/lang/String;)V +HSPLjava/io/File;->(Ljava/lang/String;I)V +HSPLjava/io/File;->(Ljava/lang/String;Ljava/io/File;)V +HSPLjava/io/File;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/io/File;->(Ljava/net/URI;)V +HSPLjava/io/File;->canRead()Z +HSPLjava/io/File;->canWrite()Z +HSPLjava/io/File;->compareTo(Ljava/io/File;)I +HSPLjava/io/File;->createNewFile()Z +HSPLjava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File; +HSPLjava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File; +HSPLjava/io/File;->delete()Z +HSPLjava/io/File;->equals(Ljava/lang/Object;)Z +HSPLjava/io/File;->exists()Z +HSPLjava/io/File;->getAbsoluteFile()Ljava/io/File; +HSPLjava/io/File;->getAbsolutePath()Ljava/lang/String; +HSPLjava/io/File;->getCanonicalFile()Ljava/io/File; +HSPLjava/io/File;->getCanonicalPath()Ljava/lang/String; +HSPLjava/io/File;->getFreeSpace()J +HSPLjava/io/File;->getName()Ljava/lang/String; +HSPLjava/io/File;->getParent()Ljava/lang/String; +HSPLjava/io/File;->getParentFile()Ljava/io/File; +HSPLjava/io/File;->getPath()Ljava/lang/String; +HSPLjava/io/File;->getPrefixLength()I +HSPLjava/io/File;->getTotalSpace()J +HSPLjava/io/File;->getUsableSpace()J +HSPLjava/io/File;->hashCode()I +HSPLjava/io/File;->isAbsolute()Z +HSPLjava/io/File;->isDirectory()Z +HSPLjava/io/File;->isFile()Z +HSPLjava/io/File;->isInvalid()Z +HSPLjava/io/File;->lastModified()J +HSPLjava/io/File;->length()J +HSPLjava/io/File;->list()[Ljava/lang/String; +HSPLjava/io/File;->listFiles()[Ljava/io/File; +HSPLjava/io/File;->listFiles(Ljava/io/FileFilter;)[Ljava/io/File; +HSPLjava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; +HSPLjava/io/File;->mkdir()Z +HSPLjava/io/File;->mkdirs()Z +HSPLjava/io/File;->renameTo(Ljava/io/File;)Z +HSPLjava/io/File;->setExecutable(ZZ)Z +HSPLjava/io/File;->setLastModified(J)Z +HSPLjava/io/File;->setReadable(ZZ)Z +HSPLjava/io/File;->setWritable(ZZ)Z +HSPLjava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String; +HSPLjava/io/File;->toString()Ljava/lang/String; +HSPLjava/io/File;->toURI()Ljava/net/URI; +HSPLjava/io/FileDescriptor$1;->set(Ljava/io/FileDescriptor;I)V +HSPLjava/io/FileDescriptor;->-set0(Ljava/io/FileDescriptor;I)I +HSPLjava/io/FileDescriptor;->()V +HSPLjava/io/FileDescriptor;->getInt$()I +HSPLjava/io/FileDescriptor;->isSocket$()Z +HSPLjava/io/FileDescriptor;->setInt$(I)V +HSPLjava/io/FileDescriptor;->valid()Z +HSPLjava/io/FileFilter;->accept(Ljava/io/File;)Z +HSPLjava/io/FileInputStream;->(Ljava/io/File;)V +HSPLjava/io/FileInputStream;->(Ljava/io/FileDescriptor;)V +HSPLjava/io/FileInputStream;->(Ljava/io/FileDescriptor;Z)V +HSPLjava/io/FileInputStream;->(Ljava/lang/String;)V +HSPLjava/io/FileInputStream;->available()I +HSPLjava/io/FileInputStream;->close()V +HSPLjava/io/FileInputStream;->finalize()V +HSPLjava/io/FileInputStream;->getChannel()Ljava/nio/channels/FileChannel; +HSPLjava/io/FileInputStream;->open(Ljava/lang/String;)V +HSPLjava/io/FileInputStream;->read()I +HSPLjava/io/FileInputStream;->read([B)I +HSPLjava/io/FileInputStream;->read([BII)I +HSPLjava/io/FileInputStream;->skip(J)J +HSPLjava/io/FileNotFoundException;->(Ljava/lang/String;)V +HSPLjava/io/FileNotFoundException;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/io/FileOutputStream;->(Ljava/io/File;)V +HSPLjava/io/FileOutputStream;->(Ljava/io/File;Z)V +HSPLjava/io/FileOutputStream;->(Ljava/io/FileDescriptor;)V +HSPLjava/io/FileOutputStream;->(Ljava/io/FileDescriptor;Z)V +HSPLjava/io/FileOutputStream;->(Ljava/lang/String;)V +HSPLjava/io/FileOutputStream;->(Ljava/lang/String;Z)V +HSPLjava/io/FileOutputStream;->close()V +HSPLjava/io/FileOutputStream;->finalize()V +HSPLjava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; +HSPLjava/io/FileOutputStream;->open(Ljava/lang/String;Z)V +HSPLjava/io/FileOutputStream;->write(I)V +HSPLjava/io/FileOutputStream;->write([B)V +HSPLjava/io/FileOutputStream;->write([BII)V +HSPLjava/io/FileReader;->(Ljava/io/File;)V +HSPLjava/io/FileReader;->(Ljava/lang/String;)V +HSPLjava/io/FileSystem;->canonicalize(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/FileSystem;->checkAccess(Ljava/io/File;I)Z +HSPLjava/io/FileSystem;->compare(Ljava/io/File;Ljava/io/File;)I +HSPLjava/io/FileSystem;->createDirectory(Ljava/io/File;)Z +HSPLjava/io/FileSystem;->createFileExclusively(Ljava/lang/String;)Z +HSPLjava/io/FileSystem;->delete(Ljava/io/File;)Z +HSPLjava/io/FileSystem;->fromURIPath(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/FileSystem;->getBooleanAttributes(Ljava/io/File;)I +HSPLjava/io/FileSystem;->getDefaultParent()Ljava/lang/String; +HSPLjava/io/FileSystem;->getLastModifiedTime(Ljava/io/File;)J +HSPLjava/io/FileSystem;->getLength(Ljava/io/File;)J +HSPLjava/io/FileSystem;->getPathSeparator()C +HSPLjava/io/FileSystem;->getSeparator()C +HSPLjava/io/FileSystem;->getSpace(Ljava/io/File;I)J +HSPLjava/io/FileSystem;->hashCode(Ljava/io/File;)I +HSPLjava/io/FileSystem;->isAbsolute(Ljava/io/File;)Z +HSPLjava/io/FileSystem;->list(Ljava/io/File;)[Ljava/lang/String; +HSPLjava/io/FileSystem;->listRoots()[Ljava/io/File; +HSPLjava/io/FileSystem;->normalize(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/FileSystem;->prefixLength(Ljava/lang/String;)I +HSPLjava/io/FileSystem;->rename(Ljava/io/File;Ljava/io/File;)Z +HSPLjava/io/FileSystem;->resolve(Ljava/io/File;)Ljava/lang/String; +HSPLjava/io/FileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/FileSystem;->setLastModifiedTime(Ljava/io/File;J)Z +HSPLjava/io/FileSystem;->setPermission(Ljava/io/File;IZZ)Z +HSPLjava/io/FileSystem;->setReadOnly(Ljava/io/File;)Z +HSPLjava/io/FileWriter;->(Ljava/io/File;Z)V +HSPLjava/io/FileWriter;->(Ljava/lang/String;)V +HSPLjava/io/FilenameFilter;->accept(Ljava/io/File;Ljava/lang/String;)Z +HSPLjava/io/FilterInputStream;->(Ljava/io/InputStream;)V +HSPLjava/io/FilterInputStream;->available()I +HSPLjava/io/FilterInputStream;->close()V +HSPLjava/io/FilterInputStream;->read()I +HSPLjava/io/FilterInputStream;->read([B)I +HSPLjava/io/FilterInputStream;->read([BII)I +HSPLjava/io/FilterOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/FilterOutputStream;->close()V +HSPLjava/io/FilterOutputStream;->write([B)V +HSPLjava/io/IOException;->()V +HSPLjava/io/IOException;->(Ljava/lang/String;)V +HSPLjava/io/IOException;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/io/InputStream;->()V +HSPLjava/io/InputStream;->read([B)I +HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;)V +HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;Ljava/lang/String;)V +HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V +HSPLjava/io/InputStreamReader;->close()V +HSPLjava/io/InputStreamReader;->read([CII)I +HSPLjava/io/InterruptedIOException;->(Ljava/lang/String;)V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->(Ljava/io/ObjectInputStream;Ljava/io/InputStream;)V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->close()V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->getBlockDataMode()Z +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->peek()I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->peekByte()B +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->read()I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->read([BII)I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->read([BIIZ)I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readBlockHeader(Z)I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readBoolean()Z +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readByte()B +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readFully([BIIZ)V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readInt()I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readLong()J +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readShort()S +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readUTF()Ljava/lang/String; +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readUTFBody(J)Ljava/lang/String; +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readUTFChar(Ljava/lang/StringBuilder;J)I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readUTFSpan(Ljava/lang/StringBuilder;J)J +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->readUnsignedShort()I +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->refill()V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V +HSPLjava/io/ObjectInputStream$HandleTable$HandleList;->()V +HSPLjava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V +HSPLjava/io/ObjectInputStream$HandleTable;->(I)V +HSPLjava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I +HSPLjava/io/ObjectInputStream$HandleTable;->clear()V +HSPLjava/io/ObjectInputStream$HandleTable;->finish(I)V +HSPLjava/io/ObjectInputStream$HandleTable;->grow()V +HSPLjava/io/ObjectInputStream$HandleTable;->lookupException(I)Ljava/lang/ClassNotFoundException; +HSPLjava/io/ObjectInputStream$HandleTable;->lookupObject(I)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream$HandleTable;->markDependency(II)V +HSPLjava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V +HSPLjava/io/ObjectInputStream$HandleTable;->size()I +HSPLjava/io/ObjectInputStream$PeekInputStream;->(Ljava/io/InputStream;)V +HSPLjava/io/ObjectInputStream$PeekInputStream;->close()V +HSPLjava/io/ObjectInputStream$PeekInputStream;->peek()I +HSPLjava/io/ObjectInputStream$PeekInputStream;->read()I +HSPLjava/io/ObjectInputStream$PeekInputStream;->read([BII)I +HSPLjava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V +HSPLjava/io/ObjectInputStream$ValidationList;->()V +HSPLjava/io/ObjectInputStream$ValidationList;->clear()V +HSPLjava/io/ObjectInputStream$ValidationList;->doCallbacks()V +HSPLjava/io/ObjectInputStream;->-get1(Ljava/io/ObjectInputStream;)Z +HSPLjava/io/ObjectInputStream;->(Ljava/io/InputStream;)V +HSPLjava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->clear()V +HSPLjava/io/ObjectInputStream;->close()V +HSPLjava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectInputStream;->defaultReadObject()V +HSPLjava/io/ObjectInputStream;->isCustomSubclass()Z +HSPLjava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader; +HSPLjava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readBoolean()Z +HSPLjava/io/ObjectInputStream;->readByte()B +HSPLjava/io/ObjectInputStream;->readClassDesc(Z)Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectInputStream;->readClassDescriptor()Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readInt()I +HSPLjava/io/ObjectInputStream;->readLong()J +HSPLjava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectInputStream;->readNull()Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readObject()Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readObject0(Z)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readOrdinaryObject(Z)Ljava/lang/Object; +HSPLjava/io/ObjectInputStream;->readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectInputStream;->readShort()S +HSPLjava/io/ObjectInputStream;->readStreamHeader()V +HSPLjava/io/ObjectInputStream;->readString(Z)Ljava/lang/String; +HSPLjava/io/ObjectInputStream;->readTypeString()Ljava/lang/String; +HSPLjava/io/ObjectInputStream;->readUTF()Ljava/lang/String; +HSPLjava/io/ObjectInputStream;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class; +HSPLjava/io/ObjectInputStream;->skipCustomData()V +HSPLjava/io/ObjectInputStream;->verifySubclass()V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->close()V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->drain()V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->flush()V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->getUTFLength(Ljava/lang/String;)J +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->write(I)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeByte(I)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBytes(Ljava/lang/String;)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloats([FII)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeInt(I)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeLong(J)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeShort(I)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;)V +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V +HSPLjava/io/ObjectOutputStream$HandleTable;->(IF)V +HSPLjava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I +HSPLjava/io/ObjectOutputStream$HandleTable;->clear()V +HSPLjava/io/ObjectOutputStream$HandleTable;->growEntries()V +HSPLjava/io/ObjectOutputStream$HandleTable;->hash(Ljava/lang/Object;)I +HSPLjava/io/ObjectOutputStream$HandleTable;->insert(Ljava/lang/Object;I)V +HSPLjava/io/ObjectOutputStream$HandleTable;->lookup(Ljava/lang/Object;)I +HSPLjava/io/ObjectOutputStream$ReplaceTable;->(IF)V +HSPLjava/io/ObjectOutputStream$ReplaceTable;->lookup(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/io/ObjectOutputStream;->-wrap1([FI[BII)V +HSPLjava/io/ObjectOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/ObjectOutputStream;->annotateClass(Ljava/lang/Class;)V +HSPLjava/io/ObjectOutputStream;->close()V +HSPLjava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectOutputStream;->defaultWriteObject()V +HSPLjava/io/ObjectOutputStream;->flush()V +HSPLjava/io/ObjectOutputStream;->isCustomSubclass()Z +HSPLjava/io/ObjectOutputStream;->verifySubclass()V +HSPLjava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V +HSPLjava/io/ObjectOutputStream;->writeByte(I)V +HSPLjava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V +HSPLjava/io/ObjectOutputStream;->writeClassDescriptor(Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectOutputStream;->writeHandle(I)V +HSPLjava/io/ObjectOutputStream;->writeInt(I)V +HSPLjava/io/ObjectOutputStream;->writeLong(J)V +HSPLjava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V +HSPLjava/io/ObjectOutputStream;->writeNull()V +HSPLjava/io/ObjectOutputStream;->writeObject(Ljava/lang/Object;)V +HSPLjava/io/ObjectOutputStream;->writeObject0(Ljava/lang/Object;Z)V +HSPLjava/io/ObjectOutputStream;->writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V +HSPLjava/io/ObjectOutputStream;->writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectOutputStream;->writeShort(I)V +HSPLjava/io/ObjectOutputStream;->writeStreamHeader()V +HSPLjava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V +HSPLjava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V +HSPLjava/io/ObjectOutputStream;->writeUTF(Ljava/lang/String;)V +HSPLjava/io/ObjectStreamClass$1;->(Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectStreamClass$1;->run()Ljava/lang/Long; +HSPLjava/io/ObjectStreamClass$1;->run()Ljava/lang/Object; +HSPLjava/io/ObjectStreamClass$2;->(Ljava/io/ObjectStreamClass;Ljava/lang/Class;)V +HSPLjava/io/ObjectStreamClass$2;->run()Ljava/lang/Object; +HSPLjava/io/ObjectStreamClass$2;->run()Ljava/lang/Void; +HSPLjava/io/ObjectStreamClass$3;->()V +HSPLjava/io/ObjectStreamClass$4;->()V +HSPLjava/io/ObjectStreamClass$4;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I +HSPLjava/io/ObjectStreamClass$4;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/io/ObjectStreamClass$5;->()V +HSPLjava/io/ObjectStreamClass$Caches;->-get0()Ljava/lang/ref/ReferenceQueue; +HSPLjava/io/ObjectStreamClass$Caches;->-get1()Ljava/lang/ref/ReferenceQueue; +HSPLjava/io/ObjectStreamClass$ClassDataSlot;->(Ljava/io/ObjectStreamClass;Z)V +HSPLjava/io/ObjectStreamClass$EntryFuture;->()V +HSPLjava/io/ObjectStreamClass$EntryFuture;->(Ljava/io/ObjectStreamClass$EntryFuture;)V +HSPLjava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z +HSPLjava/io/ObjectStreamClass$ExceptionInfo;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->([Ljava/io/ObjectStreamField;)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V +HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->equals(Ljava/lang/Object;)Z +HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->hashCode()I +HSPLjava/io/ObjectStreamClass$MemberSignature;->(Ljava/lang/reflect/Constructor;)V +HSPLjava/io/ObjectStreamClass$MemberSignature;->(Ljava/lang/reflect/Field;)V +HSPLjava/io/ObjectStreamClass$MemberSignature;->(Ljava/lang/reflect/Method;)V +HSPLjava/io/ObjectStreamClass$WeakClassKey;->(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/io/ObjectStreamClass$WeakClassKey;->equals(Ljava/lang/Object;)Z +HSPLjava/io/ObjectStreamClass$WeakClassKey;->hashCode()I +HSPLjava/io/ObjectStreamClass;->-get0(Ljava/io/ObjectStreamClass;)Ljava/lang/Class; +HSPLjava/io/ObjectStreamClass;->-get1(Ljava/io/ObjectStreamClass;)Z +HSPLjava/io/ObjectStreamClass;->-get2(Ljava/io/ObjectStreamClass;)Z +HSPLjava/io/ObjectStreamClass;->-get3(Ljava/io/ObjectStreamClass;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-set0(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor; +HSPLjava/io/ObjectStreamClass;->-set10(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-set2(Ljava/io/ObjectStreamClass;[Ljava/io/ObjectStreamField;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->-set3(Ljava/io/ObjectStreamClass;Z)Z +HSPLjava/io/ObjectStreamClass;->-set4(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-set5(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-set6(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-set8(Ljava/io/ObjectStreamClass;Ljava/lang/Long;)Ljava/lang/Long; +HSPLjava/io/ObjectStreamClass;->-set9(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-wrap0(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->-wrap1(Ljava/lang/Class;)Ljava/lang/Long; +HSPLjava/io/ObjectStreamClass;->-wrap2(Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/io/ObjectStreamClass;->-wrap3([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/io/ObjectStreamClass;->-wrap5(Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjava/io/ObjectStreamClass;->-wrap6(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-wrap7(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->-wrap8(Ljava/lang/Class;)J +HSPLjava/io/ObjectStreamClass;->-wrap9(Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectStreamClass;->()V +HSPLjava/io/ObjectStreamClass;->(Ljava/lang/Class;)V +HSPLjava/io/ObjectStreamClass;->checkDefaultSerialize()V +HSPLjava/io/ObjectStreamClass;->checkDeserialize()V +HSPLjava/io/ObjectStreamClass;->checkSerialize()V +HSPLjava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z +HSPLjava/io/ObjectStreamClass;->computeDefaultSUID(Ljava/lang/Class;)J +HSPLjava/io/ObjectStreamClass;->computeFieldOffsets()V +HSPLjava/io/ObjectStreamClass;->forClass()Ljava/lang/Class; +HSPLjava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot; +HSPLjava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot; +HSPLjava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long; +HSPLjava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->getDefaultSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->getInheritableMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->getMethodSignature([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/io/ObjectStreamClass;->getName()Ljava/lang/String; +HSPLjava/io/ObjectStreamClass;->getNumObjFields()I +HSPLjava/io/ObjectStreamClass;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/io/ObjectStreamClass;->getPrimDataSize()I +HSPLjava/io/ObjectStreamClass;->getPrimFieldValues(Ljava/lang/Object;[B)V +HSPLjava/io/ObjectStreamClass;->getPrivateMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/io/ObjectStreamClass;->getReflector([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)Ljava/io/ObjectStreamClass$FieldReflector; +HSPLjava/io/ObjectStreamClass;->getResolveException()Ljava/lang/ClassNotFoundException; +HSPLjava/io/ObjectStreamClass;->getSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->getSerialVersionUID()J +HSPLjava/io/ObjectStreamClass;->getSerializableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjava/io/ObjectStreamClass;->getSuperDesc()Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectStreamClass;->getVariantFor(Ljava/lang/Class;)Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectStreamClass;->hasReadObjectMethod()Z +HSPLjava/io/ObjectStreamClass;->hasReadResolveMethod()Z +HSPLjava/io/ObjectStreamClass;->hasWriteObjectData()Z +HSPLjava/io/ObjectStreamClass;->hasWriteObjectMethod()Z +HSPLjava/io/ObjectStreamClass;->hasWriteReplaceMethod()Z +HSPLjava/io/ObjectStreamClass;->initNonProxy(Ljava/io/ObjectStreamClass;Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/ObjectStreamClass;->invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V +HSPLjava/io/ObjectStreamClass;->invokeReadResolve(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/io/ObjectStreamClass;->invokeWriteObject(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V +HSPLjava/io/ObjectStreamClass;->isExternalizable()Z +HSPLjava/io/ObjectStreamClass;->isInstantiable()Z +HSPLjava/io/ObjectStreamClass;->isProxy()Z +HSPLjava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass; +HSPLjava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass;->newInstance()Ljava/lang/Object; +HSPLjava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V +HSPLjava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V +HSPLjava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V +HSPLjava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V +HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/Class;)V +HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/Class;Z)V +HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLjava/io/ObjectStreamField;->(Ljava/lang/reflect/Field;ZZ)V +HSPLjava/io/ObjectStreamField;->compareTo(Ljava/lang/Object;)I +HSPLjava/io/ObjectStreamField;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/io/ObjectStreamField;->getField()Ljava/lang/reflect/Field; +HSPLjava/io/ObjectStreamField;->getName()Ljava/lang/String; +HSPLjava/io/ObjectStreamField;->getOffset()I +HSPLjava/io/ObjectStreamField;->getSignature()Ljava/lang/String; +HSPLjava/io/ObjectStreamField;->getTypeCode()C +HSPLjava/io/ObjectStreamField;->getTypeString()Ljava/lang/String; +HSPLjava/io/ObjectStreamField;->isPrimitive()Z +HSPLjava/io/ObjectStreamField;->isUnshared()Z +HSPLjava/io/ObjectStreamField;->setOffset(I)V +HSPLjava/io/OutputStream;->()V +HSPLjava/io/OutputStream;->flush()V +HSPLjava/io/OutputStream;->write([B)V +HSPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;)V +HSPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V +HSPLjava/io/OutputStreamWriter;->close()V +HSPLjava/io/OutputStreamWriter;->flush()V +HSPLjava/io/OutputStreamWriter;->flushBuffer()V +HSPLjava/io/OutputStreamWriter;->write([CII)V +HSPLjava/io/PrintStream;->(Ljava/io/OutputStream;)V +HSPLjava/io/PrintStream;->(Ljava/io/OutputStream;Z)V +HSPLjava/io/PrintStream;->(ZLjava/io/OutputStream;)V +HSPLjava/io/PrintStream;->append(Ljava/lang/CharSequence;)Ljava/io/PrintStream; +HSPLjava/io/PrintStream;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable; +HSPLjava/io/PrintStream;->close()V +HSPLjava/io/PrintStream;->ensureOpen()V +HSPLjava/io/PrintStream;->flush()V +HSPLjava/io/PrintStream;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream; +HSPLjava/io/PrintStream;->getTextOut()Ljava/io/BufferedWriter; +HSPLjava/io/PrintStream;->print(Ljava/lang/String;)V +HSPLjava/io/PrintStream;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream; +HSPLjava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLjava/io/PrintStream;->write(Ljava/lang/String;)V +HSPLjava/io/PrintStream;->write([BII)V +HSPLjava/io/PrintWriter;->(Ljava/io/Writer;)V +HSPLjava/io/PrintWriter;->(Ljava/io/Writer;Z)V +HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable; +HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;II)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->close()V +HSPLjava/io/PrintWriter;->ensureOpen()V +HSPLjava/io/PrintWriter;->flush()V +HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->newLine()V +HSPLjava/io/PrintWriter;->print(C)V +HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V +HSPLjava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->println()V +HSPLjava/io/PrintWriter;->println(Ljava/lang/Object;)V +HSPLjava/io/PrintWriter;->println(Ljava/lang/String;)V +HSPLjava/io/PrintWriter;->write(I)V +HSPLjava/io/PrintWriter;->write(Ljava/lang/String;)V +HSPLjava/io/PrintWriter;->write(Ljava/lang/String;II)V +HSPLjava/io/PrintWriter;->write([CII)V +HSPLjava/io/PushbackInputStream;->(Ljava/io/InputStream;I)V +HSPLjava/io/PushbackInputStream;->ensureOpen()V +HSPLjava/io/PushbackInputStream;->read()I +HSPLjava/io/PushbackInputStream;->read([BII)I +HSPLjava/io/PushbackInputStream;->unread([BII)V +HSPLjava/io/RandomAccessFile;->(Ljava/io/File;Ljava/lang/String;)V +HSPLjava/io/RandomAccessFile;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/io/RandomAccessFile;->close()V +HSPLjava/io/RandomAccessFile;->finalize()V +HSPLjava/io/RandomAccessFile;->getChannel()Ljava/nio/channels/FileChannel; +HSPLjava/io/RandomAccessFile;->getFD()Ljava/io/FileDescriptor; +HSPLjava/io/RandomAccessFile;->length()J +HSPLjava/io/RandomAccessFile;->read()I +HSPLjava/io/RandomAccessFile;->read([B)I +HSPLjava/io/RandomAccessFile;->read([BII)I +HSPLjava/io/RandomAccessFile;->readBytes([BII)I +HSPLjava/io/RandomAccessFile;->readFully([B)V +HSPLjava/io/RandomAccessFile;->readFully([BII)V +HSPLjava/io/RandomAccessFile;->readInt()I +HSPLjava/io/RandomAccessFile;->seek(J)V +HSPLjava/io/Reader;->()V +HSPLjava/io/Reader;->(Ljava/lang/Object;)V +HSPLjava/io/Reader;->read(Ljava/nio/CharBuffer;)I +HSPLjava/io/SequenceInputStream;->(Ljava/io/InputStream;Ljava/io/InputStream;)V +HSPLjava/io/SequenceInputStream;->nextStream()V +HSPLjava/io/SequenceInputStream;->read()I +HSPLjava/io/SerialCallbackContext;->(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V +HSPLjava/io/SerialCallbackContext;->checkAndSetUsed()V +HSPLjava/io/SerialCallbackContext;->getDesc()Ljava/io/ObjectStreamClass; +HSPLjava/io/SerialCallbackContext;->getObj()Ljava/lang/Object; +HSPLjava/io/SerialCallbackContext;->setUsed()V +HSPLjava/io/StringReader;->(Ljava/lang/String;)V +HSPLjava/io/StringReader;->close()V +HSPLjava/io/StringReader;->ensureOpen()V +HSPLjava/io/StringReader;->read([CII)I +HSPLjava/io/StringWriter;->()V +HSPLjava/io/StringWriter;->append(Ljava/lang/CharSequence;)Ljava/io/StringWriter; +HSPLjava/io/StringWriter;->flush()V +HSPLjava/io/StringWriter;->toString()Ljava/lang/String; +HSPLjava/io/StringWriter;->write(I)V +HSPLjava/io/StringWriter;->write(Ljava/lang/String;)V +HSPLjava/io/StringWriter;->write(Ljava/lang/String;II)V +HSPLjava/io/StringWriter;->write([CII)V +HSPLjava/io/SyncFailedException;->(Ljava/lang/String;)V +HSPLjava/io/UnixFileSystem;->canonicalize(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->checkAccess(Ljava/io/File;I)Z +HSPLjava/io/UnixFileSystem;->compare(Ljava/io/File;Ljava/io/File;)I +HSPLjava/io/UnixFileSystem;->createDirectory(Ljava/io/File;)Z +HSPLjava/io/UnixFileSystem;->createFileExclusively(Ljava/lang/String;)Z +HSPLjava/io/UnixFileSystem;->delete(Ljava/io/File;)Z +HSPLjava/io/UnixFileSystem;->fromURIPath(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->getBooleanAttributes(Ljava/io/File;)I +HSPLjava/io/UnixFileSystem;->getDefaultParent()Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->getLastModifiedTime(Ljava/io/File;)J +HSPLjava/io/UnixFileSystem;->getLength(Ljava/io/File;)J +HSPLjava/io/UnixFileSystem;->getSpace(Ljava/io/File;I)J +HSPLjava/io/UnixFileSystem;->hashCode(Ljava/io/File;)I +HSPLjava/io/UnixFileSystem;->isAbsolute(Ljava/io/File;)Z +HSPLjava/io/UnixFileSystem;->list(Ljava/io/File;)[Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->normalize(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->prefixLength(Ljava/lang/String;)I +HSPLjava/io/UnixFileSystem;->rename(Ljava/io/File;Ljava/io/File;)Z +HSPLjava/io/UnixFileSystem;->resolve(Ljava/io/File;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->setLastModifiedTime(Ljava/io/File;J)Z +HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z +HSPLjava/io/Writer;->()V +HSPLjava/io/Writer;->(Ljava/lang/Object;)V +HSPLjava/io/Writer;->write(Ljava/lang/String;)V +HSPLjava/lang/AbstractStringBuilder;->(I)V +HSPLjava/lang/AbstractStringBuilder;->append(C)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(Z)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append([C)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->charAt(I)C +HSPLjava/lang/AbstractStringBuilder;->codePointAt(I)I +HSPLjava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->ensureCapacity(I)V +HSPLjava/lang/AbstractStringBuilder;->ensureCapacityInternal(I)V +HSPLjava/lang/AbstractStringBuilder;->getChars(II[CI)V +HSPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I +HSPLjava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;I)I +HSPLjava/lang/AbstractStringBuilder;->length()I +HSPLjava/lang/AbstractStringBuilder;->newCapacity(I)I +HSPLjava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->setCharAt(IC)V +HSPLjava/lang/AbstractStringBuilder;->setLength(I)V +HSPLjava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String; +HSPLjava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String; +HSPLjava/lang/AssertionError;->(Ljava/lang/Object;)V +HSPLjava/lang/AssertionError;->(Ljava/lang/String;)V +HSPLjava/lang/Boolean;->(Z)V +HSPLjava/lang/Boolean;->booleanValue()Z +HSPLjava/lang/Boolean;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Boolean;->getBoolean(Ljava/lang/String;)Z +HSPLjava/lang/Boolean;->hashCode()I +HSPLjava/lang/Boolean;->hashCode(Z)I +HSPLjava/lang/Boolean;->parseBoolean(Ljava/lang/String;)Z +HSPLjava/lang/Boolean;->toString()Ljava/lang/String; +HSPLjava/lang/Boolean;->toString(Z)Ljava/lang/String; +HSPLjava/lang/Boolean;->valueOf(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLjava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean; +HSPLjava/lang/BootClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/lang/BootClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL; +HSPLjava/lang/BootClassLoader;->findResources(Ljava/lang/String;)Ljava/util/Enumeration; +HSPLjava/lang/BootClassLoader;->getInstance()Ljava/lang/BootClassLoader; +HSPLjava/lang/BootClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package; +HSPLjava/lang/BootClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL; +HSPLjava/lang/BootClassLoader;->getResources(Ljava/lang/String;)Ljava/util/Enumeration; +HSPLjava/lang/BootClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class; +HSPLjava/lang/Byte;->(B)V +HSPLjava/lang/Byte;->byteValue()B +HSPLjava/lang/Byte;->hashCode()I +HSPLjava/lang/Byte;->hashCode(B)I +HSPLjava/lang/Byte;->toUnsignedInt(B)I +HSPLjava/lang/Byte;->valueOf(B)Ljava/lang/Byte; +HSPLjava/lang/CaseMapper;->toLowerCase(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/CaseMapper;->toUpperCase(Ljava/util/Locale;Ljava/lang/String;I)Ljava/lang/String; +HSPLjava/lang/CaseMapper;->upperIndex(I)I +HSPLjava/lang/Character;->(C)V +HSPLjava/lang/Character;->charCount(I)I +HSPLjava/lang/Character;->charValue()C +HSPLjava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I +HSPLjava/lang/Character;->codePointAtImpl([CII)I +HSPLjava/lang/Character;->codePointCount(Ljava/lang/CharSequence;II)I +HSPLjava/lang/Character;->digit(CI)I +HSPLjava/lang/Character;->digit(II)I +HSPLjava/lang/Character;->forDigit(II)C +HSPLjava/lang/Character;->getDirectionality(C)B +HSPLjava/lang/Character;->getDirectionality(I)B +HSPLjava/lang/Character;->getNumericValue(C)I +HSPLjava/lang/Character;->getNumericValue(I)I +HSPLjava/lang/Character;->getType(I)I +HSPLjava/lang/Character;->hashCode()I +HSPLjava/lang/Character;->hashCode(C)I +HSPLjava/lang/Character;->isBmpCodePoint(I)Z +HSPLjava/lang/Character;->isDigit(C)Z +HSPLjava/lang/Character;->isDigit(I)Z +HSPLjava/lang/Character;->isHighSurrogate(C)Z +HSPLjava/lang/Character;->isLetter(C)Z +HSPLjava/lang/Character;->isLetter(I)Z +HSPLjava/lang/Character;->isLetterOrDigit(C)Z +HSPLjava/lang/Character;->isLetterOrDigit(I)Z +HSPLjava/lang/Character;->isLowSurrogate(C)Z +HSPLjava/lang/Character;->isUpperCase(C)Z +HSPLjava/lang/Character;->isUpperCase(I)Z +HSPLjava/lang/Character;->isWhitespace(C)Z +HSPLjava/lang/Character;->isWhitespace(I)Z +HSPLjava/lang/Character;->offsetByCodePoints(Ljava/lang/CharSequence;II)I +HSPLjava/lang/Character;->toCodePoint(CC)I +HSPLjava/lang/Character;->toLowerCase(C)C +HSPLjava/lang/Character;->toLowerCase(I)I +HSPLjava/lang/Character;->toString()Ljava/lang/String; +HSPLjava/lang/Character;->toString(C)Ljava/lang/String; +HSPLjava/lang/Character;->toUpperCase(C)C +HSPLjava/lang/Character;->toUpperCase(I)I +HSPLjava/lang/Character;->valueOf(C)Ljava/lang/Character; +HSPLjava/lang/Class;->asSubclass(Ljava/lang/Class;)Ljava/lang/Class; +HSPLjava/lang/Class;->cast(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/Class;->classNameImpliesTopLevel()Z +HSPLjava/lang/Class;->desiredAssertionStatus()Z +HSPLjava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/lang/Class;->forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class; +HSPLjava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; +HSPLjava/lang/Class;->getCanonicalName()Ljava/lang/String; +HSPLjava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader; +HSPLjava/lang/Class;->getComponentType()Ljava/lang/Class; +HSPLjava/lang/Class;->getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjava/lang/Class;->getConstructor0([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor; +HSPLjava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjava/lang/Class;->getDeclaredConstructors()[Ljava/lang/reflect/Constructor; +HSPLjava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getEnclosingConstructor()Ljava/lang/reflect/Constructor; +HSPLjava/lang/Class;->getEnclosingMethod()Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object; +HSPLjava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLjava/lang/Class;->getFields()[Ljava/lang/reflect/Field; +HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; +HSPLjava/lang/Class;->getInterfaces()[Ljava/lang/Class; +HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;Z)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getMethods()[Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getModifiers()I +HSPLjava/lang/Class;->getName()Ljava/lang/String; +HSPLjava/lang/Class;->getPackage()Ljava/lang/Package; +HSPLjava/lang/Class;->getPackageName$()Ljava/lang/String; +HSPLjava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V +HSPLjava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V +HSPLjava/lang/Class;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream; +HSPLjava/lang/Class;->getSignatureAttribute()Ljava/lang/String; +HSPLjava/lang/Class;->getSimpleName()Ljava/lang/String; +HSPLjava/lang/Class;->getSuperclass()Ljava/lang/Class; +HSPLjava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; +HSPLjava/lang/Class;->isAnnotation()Z +HSPLjava/lang/Class;->isAnnotationPresent(Ljava/lang/Class;)Z +HSPLjava/lang/Class;->isArray()Z +HSPLjava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z +HSPLjava/lang/Class;->isEnum()Z +HSPLjava/lang/Class;->isInstance(Ljava/lang/Object;)Z +HSPLjava/lang/Class;->isInterface()Z +HSPLjava/lang/Class;->isLocalClass()Z +HSPLjava/lang/Class;->isLocalOrAnonymousClass()Z +HSPLjava/lang/Class;->isMemberClass()Z +HSPLjava/lang/Class;->isPrimitive()Z +HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/Class;->toString()Ljava/lang/String; +HSPLjava/lang/ClassLoader;->()V +HSPLjava/lang/ClassLoader;->(Ljava/lang/ClassLoader;)V +HSPLjava/lang/ClassLoader;->(Ljava/lang/Void;Ljava/lang/ClassLoader;)V +HSPLjava/lang/ClassLoader;->checkCreateClassLoader()Ljava/lang/Void; +HSPLjava/lang/ClassLoader;->definePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package; +HSPLjava/lang/ClassLoader;->findLoadedClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/lang/ClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package; +HSPLjava/lang/ClassLoader;->getParent()Ljava/lang/ClassLoader; +HSPLjava/lang/ClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL; +HSPLjava/lang/ClassLoader;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream; +HSPLjava/lang/ClassLoader;->getSystemClassLoader()Ljava/lang/ClassLoader; +HSPLjava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/lang/ClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class; +HSPLjava/lang/ClassNotFoundException;->(Ljava/lang/String;)V +HSPLjava/lang/ClassNotFoundException;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/lang/ClassNotFoundException;->getCause()Ljava/lang/Throwable; +HSPLjava/lang/Daemons$Daemon;->isRunning()Z +HSPLjava/lang/Daemons$Daemon;->run()V +HSPLjava/lang/Daemons$Daemon;->startInternal()V +HSPLjava/lang/Daemons$Daemon;->startPostZygoteFork()V +HSPLjava/lang/Daemons$FinalizerDaemon;->-get0()Ljava/lang/Daemons$FinalizerDaemon; +HSPLjava/lang/Daemons$FinalizerDaemon;->-get2(Ljava/lang/Daemons$FinalizerDaemon;)Ljava/util/concurrent/atomic/AtomicInteger; +HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V +HSPLjava/lang/Daemons$FinalizerDaemon;->runInternal()V +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->-get0()Ljava/lang/Daemons$FinalizerWatchdogDaemon; +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->-wrap0(Ljava/lang/Daemons$FinalizerWatchdogDaemon;)V +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->-wrap1(Ljava/lang/Daemons$FinalizerWatchdogDaemon;)V +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->goToSleep()V +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->runInternal()V +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepFor(J)Z +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object; +HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V +HSPLjava/lang/Daemons$HeapTaskDaemon;->-get0()Ljava/lang/Daemons$HeapTaskDaemon; +HSPLjava/lang/Daemons$HeapTaskDaemon;->runInternal()V +HSPLjava/lang/Daemons$ReferenceQueueDaemon;->-get0()Ljava/lang/Daemons$ReferenceQueueDaemon; +HSPLjava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V +HSPLjava/lang/Daemons;->startPostZygoteFork()V +HSPLjava/lang/Double;->(D)V +HSPLjava/lang/Double;->compare(DD)I +HSPLjava/lang/Double;->compareTo(Ljava/lang/Double;)I +HSPLjava/lang/Double;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Double;->doubleToLongBits(D)J +HSPLjava/lang/Double;->doubleValue()D +HSPLjava/lang/Double;->floatValue()F +HSPLjava/lang/Double;->isInfinite(D)Z +HSPLjava/lang/Double;->isNaN(D)Z +HSPLjava/lang/Double;->parseDouble(Ljava/lang/String;)D +HSPLjava/lang/Double;->toString()Ljava/lang/String; +HSPLjava/lang/Double;->toString(D)Ljava/lang/String; +HSPLjava/lang/Double;->valueOf(D)Ljava/lang/Double; +HSPLjava/lang/Double;->valueOf(Ljava/lang/String;)Ljava/lang/Double; +HSPLjava/lang/Enum$1;->create(Ljava/lang/Class;)[Ljava/lang/Object; +HSPLjava/lang/Enum$1;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/Enum;->(Ljava/lang/String;I)V +HSPLjava/lang/Enum;->compareTo(Ljava/lang/Enum;)I +HSPLjava/lang/Enum;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Enum;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Enum;->getDeclaringClass()Ljava/lang/Class; +HSPLjava/lang/Enum;->getSharedConstants(Ljava/lang/Class;)[Ljava/lang/Enum; +HSPLjava/lang/Enum;->hashCode()I +HSPLjava/lang/Enum;->name()Ljava/lang/String; +HSPLjava/lang/Enum;->ordinal()I +HSPLjava/lang/Enum;->toString()Ljava/lang/String; +HSPLjava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum; +HSPLjava/lang/Error;->(Ljava/lang/String;)V +HSPLjava/lang/Exception;->()V +HSPLjava/lang/Exception;->(Ljava/lang/String;)V +HSPLjava/lang/Exception;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/lang/Exception;->(Ljava/lang/Throwable;)V +HSPLjava/lang/Float;->(F)V +HSPLjava/lang/Float;->(Ljava/lang/String;)V +HSPLjava/lang/Float;->compare(FF)I +HSPLjava/lang/Float;->compareTo(Ljava/lang/Float;)I +HSPLjava/lang/Float;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Float;->doubleValue()D +HSPLjava/lang/Float;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Float;->floatToIntBits(F)I +HSPLjava/lang/Float;->floatValue()F +HSPLjava/lang/Float;->hashCode()I +HSPLjava/lang/Float;->hashCode(F)I +HSPLjava/lang/Float;->isInfinite(F)Z +HSPLjava/lang/Float;->isNaN(F)Z +HSPLjava/lang/Float;->parseFloat(Ljava/lang/String;)F +HSPLjava/lang/Float;->toString()Ljava/lang/String; +HSPLjava/lang/Float;->toString(F)Ljava/lang/String; +HSPLjava/lang/Float;->valueOf(F)Ljava/lang/Float; +HSPLjava/lang/Float;->valueOf(Ljava/lang/String;)Ljava/lang/Float; +HSPLjava/lang/IllegalAccessException;->(Ljava/lang/String;)V +HSPLjava/lang/IllegalArgumentException;->(Ljava/lang/String;)V +HSPLjava/lang/IllegalStateException;->()V +HSPLjava/lang/IllegalStateException;->(Ljava/lang/String;)V +HSPLjava/lang/IncompatibleClassChangeError;->(Ljava/lang/String;)V +HSPLjava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V +HSPLjava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap; +HSPLjava/lang/Integer;->(I)V +HSPLjava/lang/Integer;->compareTo(Ljava/lang/Integer;)I +HSPLjava/lang/Integer;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Integer;->decode(Ljava/lang/String;)Ljava/lang/Integer; +HSPLjava/lang/Integer;->doubleValue()D +HSPLjava/lang/Integer;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Integer;->formatUnsignedInt(II[CII)I +HSPLjava/lang/Integer;->getChars(II[C)V +HSPLjava/lang/Integer;->getInteger(Ljava/lang/String;I)Ljava/lang/Integer; +HSPLjava/lang/Integer;->getInteger(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer; +HSPLjava/lang/Integer;->hashCode()I +HSPLjava/lang/Integer;->hashCode(I)I +HSPLjava/lang/Integer;->intValue()I +HSPLjava/lang/Integer;->longValue()J +HSPLjava/lang/Integer;->parseInt(Ljava/lang/String;)I +HSPLjava/lang/Integer;->parseInt(Ljava/lang/String;I)I +HSPLjava/lang/Integer;->stringSize(I)I +HSPLjava/lang/Integer;->toBinaryString(I)Ljava/lang/String; +HSPLjava/lang/Integer;->toHexString(I)Ljava/lang/String; +HSPLjava/lang/Integer;->toString()Ljava/lang/String; +HSPLjava/lang/Integer;->toString(I)Ljava/lang/String; +HSPLjava/lang/Integer;->toString(II)Ljava/lang/String; +HSPLjava/lang/Integer;->toUnsignedString0(II)Ljava/lang/String; +HSPLjava/lang/Integer;->valueOf(I)Ljava/lang/Integer; +HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer; +HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;I)Ljava/lang/Integer; +HSPLjava/lang/InterruptedException;->()V +HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V +HSPLjava/lang/Iterable;->iterator()Ljava/util/Iterator; +HSPLjava/lang/LinkageError;->(Ljava/lang/String;)V +HSPLjava/lang/Long;->(J)V +HSPLjava/lang/Long;->compareTo(Ljava/lang/Long;)I +HSPLjava/lang/Long;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Long;->compareUnsigned(JJ)I +HSPLjava/lang/Long;->decode(Ljava/lang/String;)Ljava/lang/Long; +HSPLjava/lang/Long;->doubleValue()D +HSPLjava/lang/Long;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Long;->formatUnsignedLong(JI[CII)I +HSPLjava/lang/Long;->getChars(JI[C)V +HSPLjava/lang/Long;->hashCode()I +HSPLjava/lang/Long;->hashCode(J)I +HSPLjava/lang/Long;->intValue()I +HSPLjava/lang/Long;->longValue()J +HSPLjava/lang/Long;->numberOfTrailingZeros(J)I +HSPLjava/lang/Long;->parseLong(Ljava/lang/String;)J +HSPLjava/lang/Long;->parseLong(Ljava/lang/String;I)J +HSPLjava/lang/Long;->stringSize(J)I +HSPLjava/lang/Long;->toHexString(J)Ljava/lang/String; +HSPLjava/lang/Long;->toString()Ljava/lang/String; +HSPLjava/lang/Long;->toString(J)Ljava/lang/String; +HSPLjava/lang/Long;->toString(JI)Ljava/lang/String; +HSPLjava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String; +HSPLjava/lang/Long;->valueOf(J)Ljava/lang/Long; +HSPLjava/lang/Long;->valueOf(Ljava/lang/String;)Ljava/lang/Long; +HSPLjava/lang/Long;->valueOf(Ljava/lang/String;I)Ljava/lang/Long; +HSPLjava/lang/Math;->abs(D)D +HSPLjava/lang/Math;->abs(F)F +HSPLjava/lang/Math;->addExact(JJ)J +HSPLjava/lang/Math;->floorDiv(JJ)J +HSPLjava/lang/Math;->floorMod(JJ)J +HSPLjava/lang/Math;->getExponent(D)I +HSPLjava/lang/Math;->getExponent(F)I +HSPLjava/lang/Math;->max(DD)D +HSPLjava/lang/Math;->max(FF)F +HSPLjava/lang/Math;->max(II)I +HSPLjava/lang/Math;->max(JJ)J +HSPLjava/lang/Math;->min(DD)D +HSPLjava/lang/Math;->min(FF)F +HSPLjava/lang/Math;->min(II)I +HSPLjava/lang/Math;->min(JJ)J +HSPLjava/lang/Math;->powerOfTwoF(I)F +HSPLjava/lang/Math;->random()D +HSPLjava/lang/Math;->randomLongInternal()J +HSPLjava/lang/Math;->round(D)J +HSPLjava/lang/Math;->round(F)I +HSPLjava/lang/Math;->setRandomSeedInternal(J)V +HSPLjava/lang/Math;->toDegrees(D)D +HSPLjava/lang/Math;->toRadians(D)D +HSPLjava/lang/Math;->ulp(F)F +HSPLjava/lang/NoClassDefFoundError;->(Ljava/lang/String;)V +HSPLjava/lang/NoSuchFieldException;->(Ljava/lang/String;)V +HSPLjava/lang/NoSuchMethodError;->(Ljava/lang/String;)V +HSPLjava/lang/NoSuchMethodException;->(Ljava/lang/String;)V +HSPLjava/lang/NullPointerException;->(Ljava/lang/String;)V +HSPLjava/lang/Number;->()V +HSPLjava/lang/NumberFormatException;->(Ljava/lang/String;)V +HSPLjava/lang/NumberFormatException;->forInputString(Ljava/lang/String;)Ljava/lang/NumberFormatException; +HSPLjava/lang/Object;->()V +HSPLjava/lang/Object;->clone()Ljava/lang/Object; +HSPLjava/lang/Object;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Object;->finalize()V +HSPLjava/lang/Object;->getClass()Ljava/lang/Class; +HSPLjava/lang/Object;->hashCode()I +HSPLjava/lang/Object;->identityHashCode(Ljava/lang/Object;)I +HSPLjava/lang/Object;->toString()Ljava/lang/String; +HSPLjava/lang/Object;->wait(J)V +HSPLjava/lang/Package;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V +HSPLjava/lang/Package;->getName()Ljava/lang/String; +HSPLjava/lang/ReflectiveOperationException;->(Ljava/lang/String;)V +HSPLjava/lang/ReflectiveOperationException;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/lang/Runtime;->addShutdownHook(Ljava/lang/Thread;)V +HSPLjava/lang/Runtime;->availableProcessors()I +HSPLjava/lang/Runtime;->doLoad(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String; +HSPLjava/lang/Runtime;->getLibPaths()[Ljava/lang/String; +HSPLjava/lang/Runtime;->getRuntime()Ljava/lang/Runtime; +HSPLjava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V +HSPLjava/lang/Runtime;->loadLibrary0(Ljava/lang/ClassLoader;Ljava/lang/String;)V +HSPLjava/lang/RuntimeException;->()V +HSPLjava/lang/RuntimeException;->(Ljava/lang/String;)V +HSPLjava/lang/RuntimeException;->(Ljava/lang/Throwable;)V +HSPLjava/lang/RuntimePermission;->(Ljava/lang/String;)V +HSPLjava/lang/SecurityException;->(Ljava/lang/String;)V +HSPLjava/lang/StackTraceElement;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/StackTraceElement;->getClassName()Ljava/lang/String; +HSPLjava/lang/StackTraceElement;->getFileName()Ljava/lang/String; +HSPLjava/lang/StackTraceElement;->getLineNumber()I +HSPLjava/lang/StackTraceElement;->getMethodName()Ljava/lang/String; +HSPLjava/lang/StackTraceElement;->isNativeMethod()Z +HSPLjava/lang/StackTraceElement;->toString()Ljava/lang/String; +HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLjava/lang/String;->codePointAt(I)I +HSPLjava/lang/String;->codePointCount(II)I +HSPLjava/lang/String;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I +HSPLjava/lang/String;->contains(Ljava/lang/CharSequence;)Z +HSPLjava/lang/String;->contentEquals(Ljava/lang/CharSequence;)Z +HSPLjava/lang/String;->endsWith(Ljava/lang/String;)Z +HSPLjava/lang/String;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z +HSPLjava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/lang/String;->getBytes()[B +HSPLjava/lang/String;->getBytes(Ljava/lang/String;)[B +HSPLjava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B +HSPLjava/lang/String;->getChars(II[CI)V +HSPLjava/lang/String;->getChars([CI)V +HSPLjava/lang/String;->hashCode()I +HSPLjava/lang/String;->indexOf(Ljava/lang/String;)I +HSPLjava/lang/String;->indexOf(Ljava/lang/String;I)I +HSPLjava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I +HSPLjava/lang/String;->indexOf([CII[CIII)I +HSPLjava/lang/String;->isEmpty()Z +HSPLjava/lang/String;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String; +HSPLjava/lang/String;->lastIndexOf(I)I +HSPLjava/lang/String;->lastIndexOf(II)I +HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;)I +HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;I)I +HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I +HSPLjava/lang/String;->lastIndexOf([CII[CIII)I +HSPLjava/lang/String;->length()I +HSPLjava/lang/String;->matches(Ljava/lang/String;)Z +HSPLjava/lang/String;->offsetByCodePoints(II)I +HSPLjava/lang/String;->regionMatches(ILjava/lang/String;II)Z +HSPLjava/lang/String;->regionMatches(ZILjava/lang/String;II)Z +HSPLjava/lang/String;->replace(CC)Ljava/lang/String; +HSPLjava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLjava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/String;->replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String; +HSPLjava/lang/String;->split(Ljava/lang/String;I)[Ljava/lang/String; +HSPLjava/lang/String;->startsWith(Ljava/lang/String;)Z +HSPLjava/lang/String;->startsWith(Ljava/lang/String;I)Z +HSPLjava/lang/String;->subSequence(II)Ljava/lang/CharSequence; +HSPLjava/lang/String;->substring(I)Ljava/lang/String; +HSPLjava/lang/String;->substring(II)Ljava/lang/String; +HSPLjava/lang/String;->toLowerCase()Ljava/lang/String; +HSPLjava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String; +HSPLjava/lang/String;->toString()Ljava/lang/String; +HSPLjava/lang/String;->toUpperCase()Ljava/lang/String; +HSPLjava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String; +HSPLjava/lang/String;->trim()Ljava/lang/String; +HSPLjava/lang/String;->valueOf(C)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(D)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(F)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(I)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(J)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/lang/String;->valueOf(Z)Ljava/lang/String; +HSPLjava/lang/String;->valueOf([C)Ljava/lang/String; +HSPLjava/lang/String;->valueOf([CII)Ljava/lang/String; +HSPLjava/lang/StringBuffer;->()V +HSPLjava/lang/StringBuffer;->(I)V +HSPLjava/lang/StringBuffer;->(Ljava/lang/String;)V +HSPLjava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(J)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->append([CII)Ljava/lang/StringBuffer; +HSPLjava/lang/StringBuffer;->charAt(I)C +HSPLjava/lang/StringBuffer;->codePointAt(I)I +HSPLjava/lang/StringBuffer;->getChars(II[CI)V +HSPLjava/lang/StringBuffer;->length()I +HSPLjava/lang/StringBuffer;->setLength(I)V +HSPLjava/lang/StringBuffer;->toString()Ljava/lang/String; +HSPLjava/lang/StringBuilder;->()V +HSPLjava/lang/StringBuilder;->(I)V +HSPLjava/lang/StringBuilder;->(Ljava/lang/CharSequence;)V +HSPLjava/lang/StringBuilder;->(Ljava/lang/String;)V +HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/Appendable; +HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(D)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append([C)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->append([CII)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->appendCodePoint(I)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->charAt(I)C +HSPLjava/lang/StringBuilder;->delete(II)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->deleteCharAt(I)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->ensureCapacity(I)V +HSPLjava/lang/StringBuilder;->getChars(II[CI)V +HSPLjava/lang/StringBuilder;->indexOf(Ljava/lang/String;I)I +HSPLjava/lang/StringBuilder;->insert(IC)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->lastIndexOf(Ljava/lang/String;I)I +HSPLjava/lang/StringBuilder;->length()I +HSPLjava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder; +HSPLjava/lang/StringBuilder;->setCharAt(IC)V +HSPLjava/lang/StringBuilder;->setLength(I)V +HSPLjava/lang/StringBuilder;->substring(I)Ljava/lang/String; +HSPLjava/lang/StringBuilder;->substring(II)Ljava/lang/String; +HSPLjava/lang/StringBuilder;->toString()Ljava/lang/String; +HSPLjava/lang/StringFactory;->newEmptyString()Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([B)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BII)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BIILjava/lang/String;)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BIILjava/nio/charset/Charset;)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BLjava/lang/String;)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BLjava/nio/charset/Charset;)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromChars([C)Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromChars([CII)Ljava/lang/String; +HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/System;->arraycopy([BI[BII)V +HSPLjava/lang/System;->arraycopy([CI[CII)V +HSPLjava/lang/System;->arraycopy([FI[FII)V +HSPLjava/lang/System;->arraycopy([II[III)V +HSPLjava/lang/System;->arraycopy([JI[JII)V +HSPLjava/lang/System;->arraycopy([ZI[ZII)V +HSPLjava/lang/System;->checkKey(Ljava/lang/String;)V +HSPLjava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/System;->gc()V +HSPLjava/lang/System;->getProperties()Ljava/util/Properties; +HSPLjava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/System;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/System;->getSecurityManager()Ljava/lang/SecurityManager; +HSPLjava/lang/System;->getenv(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/System;->identityHashCode(Ljava/lang/Object;)I +HSPLjava/lang/System;->lineSeparator()Ljava/lang/String; +HSPLjava/lang/System;->load(Ljava/lang/String;)V +HSPLjava/lang/System;->loadLibrary(Ljava/lang/String;)V +HSPLjava/lang/System;->logW(Ljava/lang/String;)V +HSPLjava/lang/System;->setErr(Ljava/io/PrintStream;)V +HSPLjava/lang/System;->setOut(Ljava/io/PrintStream;)V +HSPLjava/lang/System;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/Thread$State;->values()[Ljava/lang/Thread$State; +HSPLjava/lang/Thread;->()V +HSPLjava/lang/Thread;->(Ljava/lang/Runnable;)V +HSPLjava/lang/Thread;->(Ljava/lang/Runnable;Ljava/lang/String;)V +HSPLjava/lang/Thread;->(Ljava/lang/String;)V +HSPLjava/lang/Thread;->(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V +HSPLjava/lang/Thread;->(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V +HSPLjava/lang/Thread;->(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V +HSPLjava/lang/Thread;->(Ljava/lang/ThreadGroup;Ljava/lang/String;IZ)V +HSPLjava/lang/Thread;->activeCount()I +HSPLjava/lang/Thread;->blockedOn(Lsun/nio/ch/Interruptible;)V +HSPLjava/lang/Thread;->checkAccess()V +HSPLjava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader; +HSPLjava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler; +HSPLjava/lang/Thread;->getId()J +HSPLjava/lang/Thread;->getName()Ljava/lang/String; +HSPLjava/lang/Thread;->getPriority()I +HSPLjava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement; +HSPLjava/lang/Thread;->getState()Ljava/lang/Thread$State; +HSPLjava/lang/Thread;->getThreadGroup()Ljava/lang/ThreadGroup; +HSPLjava/lang/Thread;->getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler; +HSPLjava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z +HSPLjava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V +HSPLjava/lang/Thread;->init2(Ljava/lang/Thread;)V +HSPLjava/lang/Thread;->interrupt()V +HSPLjava/lang/Thread;->isAlive()Z +HSPLjava/lang/Thread;->isDaemon()Z +HSPLjava/lang/Thread;->join()V +HSPLjava/lang/Thread;->join(J)V +HSPLjava/lang/Thread;->nextThreadID()J +HSPLjava/lang/Thread;->nextThreadNum()I +HSPLjava/lang/Thread;->parkFor$(J)V +HSPLjava/lang/Thread;->run()V +HSPLjava/lang/Thread;->setContextClassLoader(Ljava/lang/ClassLoader;)V +HSPLjava/lang/Thread;->setDaemon(Z)V +HSPLjava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V +HSPLjava/lang/Thread;->setName(Ljava/lang/String;)V +HSPLjava/lang/Thread;->setPriority(I)V +HSPLjava/lang/Thread;->setUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V +HSPLjava/lang/Thread;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V +HSPLjava/lang/Thread;->sleep(J)V +HSPLjava/lang/Thread;->sleep(JI)V +HSPLjava/lang/Thread;->start()V +HSPLjava/lang/Thread;->unpark$()V +HSPLjava/lang/ThreadGroup;->(Ljava/lang/String;)V +HSPLjava/lang/ThreadGroup;->(Ljava/lang/ThreadGroup;Ljava/lang/String;)V +HSPLjava/lang/ThreadGroup;->(Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V +HSPLjava/lang/ThreadGroup;->activeCount()I +HSPLjava/lang/ThreadGroup;->add(Ljava/lang/Thread;)V +HSPLjava/lang/ThreadGroup;->add(Ljava/lang/ThreadGroup;)V +HSPLjava/lang/ThreadGroup;->addUnstarted()V +HSPLjava/lang/ThreadGroup;->checkAccess()V +HSPLjava/lang/ThreadGroup;->checkParentAccess(Ljava/lang/ThreadGroup;)Ljava/lang/Void; +HSPLjava/lang/ThreadGroup;->getMaxPriority()I +HSPLjava/lang/ThreadGroup;->remove(Ljava/lang/Thread;)V +HSPLjava/lang/ThreadGroup;->threadTerminated(Ljava/lang/Thread;)V +HSPLjava/lang/ThreadLocal$SuppliedThreadLocal;->(Ljava/util/function/Supplier;)V +HSPLjava/lang/ThreadLocal$SuppliedThreadLocal;->initialValue()Ljava/lang/Object; +HSPLjava/lang/ThreadLocal$ThreadLocalMap$Entry;->(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->-wrap0(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->-wrap1(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->-wrap2(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->rehash()V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->resize()V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->setThreshold(I)V +HSPLjava/lang/ThreadLocal;->-get0(Ljava/lang/ThreadLocal;)I +HSPLjava/lang/ThreadLocal;->()V +HSPLjava/lang/ThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal;->get()Ljava/lang/Object; +HSPLjava/lang/ThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap; +HSPLjava/lang/ThreadLocal;->initialValue()Ljava/lang/Object; +HSPLjava/lang/ThreadLocal;->nextHashCode()I +HSPLjava/lang/ThreadLocal;->remove()V +HSPLjava/lang/ThreadLocal;->set(Ljava/lang/Object;)V +HSPLjava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object; +HSPLjava/lang/ThreadLocal;->withInitial(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal; +HSPLjava/lang/Throwable$PrintStreamOrWriter;->()V +HSPLjava/lang/Throwable$PrintStreamOrWriter;->(Ljava/lang/Throwable$PrintStreamOrWriter;)V +HSPLjava/lang/Throwable$WrappedPrintStream;->(Ljava/io/PrintStream;)V +HSPLjava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object; +HSPLjava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V +HSPLjava/lang/Throwable$WrappedPrintWriter;->(Ljava/io/PrintWriter;)V +HSPLjava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object; +HSPLjava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V +HSPLjava/lang/Throwable;->()V +HSPLjava/lang/Throwable;->(Ljava/lang/String;)V +HSPLjava/lang/Throwable;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/lang/Throwable;->(Ljava/lang/Throwable;)V +HSPLjava/lang/Throwable;->fillInStackTrace()Ljava/lang/Throwable; +HSPLjava/lang/Throwable;->getCause()Ljava/lang/Throwable; +HSPLjava/lang/Throwable;->getLocalizedMessage()Ljava/lang/String; +HSPLjava/lang/Throwable;->getMessage()Ljava/lang/String; +HSPLjava/lang/Throwable;->getOurStackTrace()[Ljava/lang/StackTraceElement; +HSPLjava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; +HSPLjava/lang/Throwable;->getSuppressed()[Ljava/lang/Throwable; +HSPLjava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLjava/lang/Throwable;->printStackTrace()V +HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintStream;)V +HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintWriter;)V +HSPLjava/lang/Throwable;->printStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;)V +HSPLjava/lang/Throwable;->readObject(Ljava/io/ObjectInputStream;)V +HSPLjava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V +HSPLjava/lang/Throwable;->toString()Ljava/lang/String; +HSPLjava/lang/UnsupportedOperationException;->(Ljava/lang/String;)V +HSPLjava/lang/VMClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL; +HSPLjava/lang/VMClassLoader;->getResources(Ljava/lang/String;)Ljava/util/List; +HSPLjava/lang/ref/FinalizerReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/ref/FinalizerReference;->add(Ljava/lang/Object;)V +HSPLjava/lang/ref/FinalizerReference;->clear()V +HSPLjava/lang/ref/FinalizerReference;->get()Ljava/lang/Object; +HSPLjava/lang/ref/FinalizerReference;->remove(Ljava/lang/ref/FinalizerReference;)V +HSPLjava/lang/ref/PhantomReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/ref/Reference;->(Ljava/lang/Object;)V +HSPLjava/lang/ref/Reference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/ref/Reference;->clear()V +HSPLjava/lang/ref/Reference;->get()Ljava/lang/Object; +HSPLjava/lang/ref/Reference;->isEnqueued()Z +HSPLjava/lang/ref/ReferenceQueue;->()V +HSPLjava/lang/ref/ReferenceQueue;->add(Ljava/lang/ref/Reference;)V +HSPLjava/lang/ref/ReferenceQueue;->enqueueLocked(Ljava/lang/ref/Reference;)Z +HSPLjava/lang/ref/ReferenceQueue;->enqueuePending(Ljava/lang/ref/Reference;)V +HSPLjava/lang/ref/ReferenceQueue;->poll()Ljava/lang/ref/Reference; +HSPLjava/lang/ref/ReferenceQueue;->reallyPollLocked()Ljava/lang/ref/Reference; +HSPLjava/lang/ref/ReferenceQueue;->remove()Ljava/lang/ref/Reference; +HSPLjava/lang/ref/ReferenceQueue;->remove(J)Ljava/lang/ref/Reference; +HSPLjava/lang/ref/SoftReference;->(Ljava/lang/Object;)V +HSPLjava/lang/ref/SoftReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/ref/SoftReference;->get()Ljava/lang/Object; +HSPLjava/lang/ref/WeakReference;->(Ljava/lang/Object;)V +HSPLjava/lang/ref/WeakReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/reflect/AccessibleObject;->()V +HSPLjava/lang/reflect/AccessibleObject;->isAccessible()Z +HSPLjava/lang/reflect/AccessibleObject;->setAccessible(Z)V +HSPLjava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V +HSPLjava/lang/reflect/Array;->get(Ljava/lang/Object;I)Ljava/lang/Object; +HSPLjava/lang/reflect/Array;->getLength(Ljava/lang/Object;)I +HSPLjava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object; +HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object; +HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object; +HSPLjava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V +HSPLjava/lang/reflect/Array;->setFloat(Ljava/lang/Object;IF)V +HSPLjava/lang/reflect/Array;->setInt(Ljava/lang/Object;II)V +HSPLjava/lang/reflect/Constructor;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLjava/lang/reflect/Constructor;->getDeclaringClass()Ljava/lang/Class; +HSPLjava/lang/reflect/Constructor;->getModifiers()I +HSPLjava/lang/reflect/Constructor;->getName()Ljava/lang/String; +HSPLjava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class; +HSPLjava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/reflect/Constructor;->serializationCopy(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjava/lang/reflect/Executable;->()V +HSPLjava/lang/reflect/Executable;->equalNameAndParametersInternal(Ljava/lang/reflect/Method;)Z +HSPLjava/lang/reflect/Executable;->equalParamTypes([Ljava/lang/Class;[Ljava/lang/Class;)Z +HSPLjava/lang/reflect/Executable;->fixMethodFlags(I)I +HSPLjava/lang/reflect/Executable;->getAccessFlags()I +HSPLjava/lang/reflect/Executable;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; +HSPLjava/lang/reflect/Executable;->getDeclaredAnnotations()[Ljava/lang/annotation/Annotation; +HSPLjava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class; +HSPLjava/lang/reflect/Executable;->getModifiersInternal()I +HSPLjava/lang/reflect/Executable;->isAnnotationPresent(Ljava/lang/Class;)Z +HSPLjava/lang/reflect/Executable;->isSynthetic()Z +HSPLjava/lang/reflect/Field;->getModifiers()I +HSPLjava/lang/reflect/Field;->getName()Ljava/lang/String; +HSPLjava/lang/reflect/Field;->getOffset()I +HSPLjava/lang/reflect/Field;->getType()Ljava/lang/Class; +HSPLjava/lang/reflect/Field;->isAnnotationPresent(Ljava/lang/Class;)Z +HSPLjava/lang/reflect/Field;->isSynthetic()Z +HSPLjava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type; +HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I +HSPLjava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z +HSPLjava/lang/reflect/Method;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; +HSPLjava/lang/reflect/Method;->getDeclaredAnnotations()[Ljava/lang/annotation/Annotation; +HSPLjava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->getModifiers()I +HSPLjava/lang/reflect/Method;->getName()Ljava/lang/String; +HSPLjava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->isSynthetic()Z +HSPLjava/lang/reflect/Modifier;->isFinal(I)Z +HSPLjava/lang/reflect/Modifier;->isProtected(I)Z +HSPLjava/lang/reflect/Modifier;->isPublic(I)Z +HSPLjava/lang/reflect/Modifier;->isStatic(I)Z +HSPLjava/lang/reflect/Modifier;->isSynthetic(I)Z +HSPLjava/lang/reflect/Modifier;->isVolatile(I)Z +HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I +HSPLjava/lang/reflect/Proxy$Key1;->(Ljava/lang/Class;)V +HSPLjava/lang/reflect/Proxy$Key1;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/Proxy$Key1;->hashCode()I +HSPLjava/lang/reflect/Proxy$Key2;->(Ljava/lang/Class;Ljava/lang/Class;)V +HSPLjava/lang/reflect/Proxy$Key2;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/Proxy$Key2;->hashCode()I +HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object; +HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class; +HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/reflect/Proxy;->-get0()Ljava/util/Comparator; +HSPLjava/lang/reflect/Proxy;->-wrap0(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class; +HSPLjava/lang/reflect/Proxy;->-wrap1(Ljava/util/List;)Ljava/util/List; +HSPLjava/lang/reflect/Proxy;->-wrap2([Ljava/lang/Class;)Ljava/util/List; +HSPLjava/lang/reflect/Proxy;->-wrap3(Ljava/util/List;)V +HSPLjava/lang/reflect/Proxy;->deduplicateAndGetExceptions(Ljava/util/List;)Ljava/util/List; +HSPLjava/lang/reflect/Proxy;->getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler; +HSPLjava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List; +HSPLjava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V +HSPLjava/lang/reflect/Proxy;->getProxyClass0(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class; +HSPLjava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class; +HSPLjava/lang/reflect/Proxy;->invoke(Ljava/lang/reflect/Proxy;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/lang/reflect/Proxy;->isProxyClass(Ljava/lang/Class;)Z +HSPLjava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object; +HSPLjava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V +HSPLjava/lang/reflect/WeakCache$CacheKey;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLjava/lang/reflect/WeakCache$CacheKey;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/WeakCache$CacheKey;->hashCode()I +HSPLjava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object; +HSPLjava/lang/reflect/WeakCache$CacheValue;->(Ljava/lang/Object;)V +HSPLjava/lang/reflect/WeakCache$CacheValue;->hashCode()I +HSPLjava/lang/reflect/WeakCache$Factory;->(Ljava/lang/reflect/WeakCache;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentMap;)V +HSPLjava/lang/reflect/WeakCache$Factory;->get()Ljava/lang/Object; +HSPLjava/lang/reflect/WeakCache$LookupValue;->(Ljava/lang/Object;)V +HSPLjava/lang/reflect/WeakCache$LookupValue;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/WeakCache$LookupValue;->hashCode()I +HSPLjava/lang/reflect/WeakCache;->-get0(Ljava/lang/reflect/WeakCache;)Ljava/util/concurrent/ConcurrentMap; +HSPLjava/lang/reflect/WeakCache;->-get1(Ljava/lang/reflect/WeakCache;)Ljava/util/function/BiFunction; +HSPLjava/lang/reflect/WeakCache;->containsValue(Ljava/lang/Object;)Z +HSPLjava/lang/reflect/WeakCache;->expungeStaleEntries()V +HSPLjava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/math/BigDecimal;->(I)V +HSPLjava/math/BigDecimal;->(II)V +HSPLjava/math/BigDecimal;->(Ljava/math/BigInteger;I)V +HSPLjava/math/BigDecimal;->bitLength(I)I +HSPLjava/math/BigDecimal;->bitLength(J)I +HSPLjava/math/BigDecimal;->setUnscaledValue(Ljava/math/BigInteger;)V +HSPLjava/math/BigInt;->()V +HSPLjava/math/BigInt;->addition(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->bitLength()I +HSPLjava/math/BigInt;->checkString(Ljava/lang/String;I)Ljava/lang/String; +HSPLjava/math/BigInt;->cmp(Ljava/math/BigInt;Ljava/math/BigInt;)I +HSPLjava/math/BigInt;->decString()Ljava/lang/String; +HSPLjava/math/BigInt;->division(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)V +HSPLjava/math/BigInt;->gcd(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->getNativeBIGNUM()J +HSPLjava/math/BigInt;->littleEndianIntsMagnitude()[I +HSPLjava/math/BigInt;->longInt()J +HSPLjava/math/BigInt;->makeValid()V +HSPLjava/math/BigInt;->modExp(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->newBigInt()Ljava/math/BigInt; +HSPLjava/math/BigInt;->product(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->putBigEndian([BZ)V +HSPLjava/math/BigInt;->putBigEndianTwosComplement([B)V +HSPLjava/math/BigInt;->putDecString(Ljava/lang/String;)V +HSPLjava/math/BigInt;->putHexString(Ljava/lang/String;)V +HSPLjava/math/BigInt;->putULongInt(JZ)V +HSPLjava/math/BigInt;->shift(Ljava/math/BigInt;I)Ljava/math/BigInt; +HSPLjava/math/BigInt;->sign()I +HSPLjava/math/BigInt;->subtraction(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; +HSPLjava/math/BigInt;->twosCompFitsIntoBytes(I)Z +HSPLjava/math/BigInteger;->(IJ)V +HSPLjava/math/BigInteger;->(I[B)V +HSPLjava/math/BigInteger;->(Ljava/lang/String;)V +HSPLjava/math/BigInteger;->(Ljava/lang/String;I)V +HSPLjava/math/BigInteger;->(Ljava/math/BigInt;)V +HSPLjava/math/BigInteger;->([B)V +HSPLjava/math/BigInteger;->abs()Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->bitLength()I +HSPLjava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I +HSPLjava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->doubleValue()D +HSPLjava/math/BigInteger;->equals(Ljava/lang/Object;)Z +HSPLjava/math/BigInteger;->gcd(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->getBigInt()Ljava/math/BigInt; +HSPLjava/math/BigInteger;->getFirstNonzeroDigit()I +HSPLjava/math/BigInteger;->hashCode()I +HSPLjava/math/BigInteger;->intValue()I +HSPLjava/math/BigInteger;->longValue()J +HSPLjava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->prepareJavaRepresentation()V +HSPLjava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V +HSPLjava/math/BigInteger;->setJavaRepresentation(II[I)V +HSPLjava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->shiftRight(I)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->signum()I +HSPLjava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->toByteArray()[B +HSPLjava/math/BigInteger;->toString()Ljava/lang/String; +HSPLjava/math/BigInteger;->toString(I)Ljava/lang/String; +HSPLjava/math/BigInteger;->twosComplement()[B +HSPLjava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger; +HSPLjava/math/BitLevel;->nonZeroDroppedBits(I[I)Z +HSPLjava/math/Conversion;->bigInteger2Double(Ljava/math/BigInteger;)D +HSPLjava/math/Conversion;->bigInteger2String(Ljava/math/BigInteger;I)Ljava/lang/String; +HSPLjava/math/MathContext;->(ILjava/math/RoundingMode;)V +HSPLjava/math/MathContext;->checkValid()V +HSPLjava/math/NativeBN;->size()J +HSPLjava/math/RoundingMode;->(Ljava/lang/String;II)V +HSPLjava/math/RoundingMode;->values()[Ljava/math/RoundingMode; +HSPLjava/net/AbstractPlainDatagramSocketImpl;->()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->bind(ILjava/net/InetAddress;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->bind0(ILjava/net/InetAddress;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->close()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->connect0(Ljava/net/InetAddress;I)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->create()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->datagramSocketClose()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->datagramSocketCreate()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->disconnect0(I)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->finalize()V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->getTTL()B +HSPLjava/net/AbstractPlainDatagramSocketImpl;->getTimeToLive()I +HSPLjava/net/AbstractPlainDatagramSocketImpl;->isClosed()Z +HSPLjava/net/AbstractPlainDatagramSocketImpl;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->leave(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->peek(Ljava/net/InetAddress;)I +HSPLjava/net/AbstractPlainDatagramSocketImpl;->peekData(Ljava/net/DatagramPacket;)I +HSPLjava/net/AbstractPlainDatagramSocketImpl;->receive(Ljava/net/DatagramPacket;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->setOption(ILjava/lang/Object;)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->setTTL(B)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->setTimeToLive(I)V +HSPLjava/net/AbstractPlainDatagramSocketImpl;->socketGetOption(I)Ljava/lang/Object; +HSPLjava/net/AbstractPlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V +HSPLjava/net/AbstractPlainSocketImpl;->()V +HSPLjava/net/AbstractPlainSocketImpl;->accept(Ljava/net/SocketImpl;)V +HSPLjava/net/AbstractPlainSocketImpl;->acquireFD()Ljava/io/FileDescriptor; +HSPLjava/net/AbstractPlainSocketImpl;->bind(Ljava/net/InetAddress;I)V +HSPLjava/net/AbstractPlainSocketImpl;->close()V +HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V +HSPLjava/net/AbstractPlainSocketImpl;->connectToAddress(Ljava/net/InetAddress;II)V +HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V +HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V +HSPLjava/net/AbstractPlainSocketImpl;->getInputStream()Ljava/io/InputStream; +HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object; +HSPLjava/net/AbstractPlainSocketImpl;->getOutputStream()Ljava/io/OutputStream; +HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z +HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V +HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V +HSPLjava/net/AbstractPlainSocketImpl;->setOption(ILjava/lang/Object;)V +HSPLjava/net/AbstractPlainSocketImpl;->socketAccept(Ljava/net/SocketImpl;)V +HSPLjava/net/AbstractPlainSocketImpl;->socketAvailable()I +HSPLjava/net/AbstractPlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V +HSPLjava/net/AbstractPlainSocketImpl;->socketClose()V +HSPLjava/net/AbstractPlainSocketImpl;->socketClose0(Z)V +HSPLjava/net/AbstractPlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V +HSPLjava/net/AbstractPlainSocketImpl;->socketCreate(Z)V +HSPLjava/net/AbstractPlainSocketImpl;->socketGetOption(I)Ljava/lang/Object; +HSPLjava/net/AbstractPlainSocketImpl;->socketListen(I)V +HSPLjava/net/AbstractPlainSocketImpl;->socketPreClose()V +HSPLjava/net/AbstractPlainSocketImpl;->socketSendUrgentData(I)V +HSPLjava/net/AbstractPlainSocketImpl;->socketSetOption(ILjava/lang/Object;)V +HSPLjava/net/AbstractPlainSocketImpl;->socketShutdown(I)V +HSPLjava/net/AddressCache$AddressCacheEntry;->(Ljava/lang/Object;)V +HSPLjava/net/AddressCache$AddressCacheKey;->(Ljava/lang/String;I)V +HSPLjava/net/AddressCache$AddressCacheKey;->equals(Ljava/lang/Object;)Z +HSPLjava/net/AddressCache$AddressCacheKey;->hashCode()I +HSPLjava/net/AddressCache;->clear()V +HSPLjava/net/AddressCache;->get(Ljava/lang/String;I)Ljava/lang/Object; +HSPLjava/net/AddressCache;->put(Ljava/lang/String;I[Ljava/net/InetAddress;)V +HSPLjava/net/CookieHandler;->getDefault()Ljava/net/CookieHandler; +HSPLjava/net/DatagramPacket;->([BI)V +HSPLjava/net/DatagramPacket;->([BII)V +HSPLjava/net/DatagramPacket;->([BIILjava/net/InetAddress;I)V +HSPLjava/net/DatagramPacket;->([BILjava/net/InetAddress;I)V +HSPLjava/net/DatagramPacket;->getAddress()Ljava/net/InetAddress; +HSPLjava/net/DatagramPacket;->getData()[B +HSPLjava/net/DatagramPacket;->getLength()I +HSPLjava/net/DatagramPacket;->getOffset()I +HSPLjava/net/DatagramPacket;->getPort()I +HSPLjava/net/DatagramPacket;->setAddress(Ljava/net/InetAddress;)V +HSPLjava/net/DatagramPacket;->setData([BII)V +HSPLjava/net/DatagramPacket;->setPort(I)V +HSPLjava/net/DatagramPacket;->setReceivedLength(I)V +HSPLjava/net/DatagramSocket$1;->(Ljava/net/DatagramSocket;)V +HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Object; +HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Void; +HSPLjava/net/DatagramSocket;->()V +HSPLjava/net/DatagramSocket;->(Ljava/net/SocketAddress;)V +HSPLjava/net/DatagramSocket;->bind(Ljava/net/SocketAddress;)V +HSPLjava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V +HSPLjava/net/DatagramSocket;->checkOldImpl()V +HSPLjava/net/DatagramSocket;->close()V +HSPLjava/net/DatagramSocket;->createImpl()V +HSPLjava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl; +HSPLjava/net/DatagramSocket;->isBound()Z +HSPLjava/net/DatagramSocket;->isClosed()Z +HSPLjava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V +HSPLjava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V +HSPLjava/net/DatagramSocket;->setBroadcast(Z)V +HSPLjava/net/DatagramSocket;->setReceiveBufferSize(I)V +HSPLjava/net/DatagramSocket;->setReuseAddress(Z)V +HSPLjava/net/DatagramSocket;->setSoTimeout(I)V +HSPLjava/net/DatagramSocketImpl;->()V +HSPLjava/net/DatagramSocketImpl;->bind(ILjava/net/InetAddress;)V +HSPLjava/net/DatagramSocketImpl;->close()V +HSPLjava/net/DatagramSocketImpl;->create()V +HSPLjava/net/DatagramSocketImpl;->join(Ljava/net/InetAddress;)V +HSPLjava/net/DatagramSocketImpl;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/DatagramSocketImpl;->leave(Ljava/net/InetAddress;)V +HSPLjava/net/DatagramSocketImpl;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V +HSPLjava/net/DatagramSocketImpl;->receive(Ljava/net/DatagramPacket;)V +HSPLjava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V +HSPLjava/net/DefaultDatagramSocketImplFactory;->createDatagramSocketImpl(Z)Ljava/net/DatagramSocketImpl; +HSPLjava/net/DefaultInterface;->getDefault()Ljava/net/NetworkInterface; +HSPLjava/net/HttpURLConnection;->(Ljava/net/URL;)V +HSPLjava/net/HttpURLConnection;->getFollowRedirects()Z +HSPLjava/net/HttpURLConnection;->setChunkedStreamingMode(I)V +HSPLjava/net/IDN;->toASCII(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/IDN;->toASCII(Ljava/lang/String;I)Ljava/lang/String; +HSPLjava/net/Inet4Address;->(Ljava/lang/String;[B)V +HSPLjava/net/Inet4Address;->equals(Ljava/lang/Object;)Z +HSPLjava/net/Inet4Address;->getAddress()[B +HSPLjava/net/Inet4Address;->getHostAddress()Ljava/lang/String; +HSPLjava/net/Inet4Address;->hashCode()I +HSPLjava/net/Inet4Address;->isAnyLocalAddress()Z +HSPLjava/net/Inet4Address;->isMulticastAddress()Z +HSPLjava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String; +HSPLjava/net/Inet6Address$Inet6AddressHolder;->(Ljava/net/Inet6Address;)V +HSPLjava/net/Inet6Address$Inet6AddressHolder;->(Ljava/net/Inet6Address;Ljava/net/Inet6Address$Inet6AddressHolder;)V +HSPLjava/net/Inet6Address$Inet6AddressHolder;->equals(Ljava/lang/Object;)Z +HSPLjava/net/Inet6Address$Inet6AddressHolder;->hashCode()I +HSPLjava/net/Inet6Address$Inet6AddressHolder;->init([BI)V +HSPLjava/net/Inet6Address$Inet6AddressHolder;->isAnyLocalAddress()Z +HSPLjava/net/Inet6Address$Inet6AddressHolder;->isLinkLocalAddress()Z +HSPLjava/net/Inet6Address$Inet6AddressHolder;->isMulticastAddress()Z +HSPLjava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V +HSPLjava/net/Inet6Address;->(Ljava/lang/String;[BI)V +HSPLjava/net/Inet6Address;->equals(Ljava/lang/Object;)Z +HSPLjava/net/Inet6Address;->getAddress()[B +HSPLjava/net/Inet6Address;->getHostAddress()Ljava/lang/String; +HSPLjava/net/Inet6Address;->getScopeId()I +HSPLjava/net/Inet6Address;->hashCode()I +HSPLjava/net/Inet6Address;->isAnyLocalAddress()Z +HSPLjava/net/Inet6Address;->isLinkLocalAddress()Z +HSPLjava/net/Inet6Address;->isMulticastAddress()Z +HSPLjava/net/Inet6AddressImpl;->clearAddressCache()V +HSPLjava/net/Inet6AddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLjava/net/InetAddress$InetAddressHolder;->()V +HSPLjava/net/InetAddress$InetAddressHolder;->getAddress()I +HSPLjava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String; +HSPLjava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V +HSPLjava/net/InetAddress;->()V +HSPLjava/net/InetAddress;->clearDnsCache()V +HSPLjava/net/InetAddress;->disallowDeprecatedFormats(Ljava/lang/String;Ljava/net/InetAddress;)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->holder()Ljava/net/InetAddress$InetAddressHolder; +HSPLjava/net/InetAddress;->isNumeric(Ljava/lang/String;)Z +HSPLjava/net/InetAddress;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress; +HSPLjava/net/InetAddress;->toString()Ljava/lang/String; +HSPLjava/net/InetAddressImpl;->anyLocalAddress()Ljava/net/InetAddress; +HSPLjava/net/InetAddressImpl;->clearAddressCache()V +HSPLjava/net/InetAddressImpl;->getHostByAddr([B)Ljava/lang/String; +HSPLjava/net/InetAddressImpl;->isReachable(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z +HSPLjava/net/InetAddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLjava/net/InetAddressImpl;->loopbackAddresses()[Ljava/net/InetAddress; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->-wrap0(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Z +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->-wrap1(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)I +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->-wrap4(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/net/InetAddress; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->(Ljava/lang/String;Ljava/net/InetAddress;I)V +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->(Ljava/lang/String;Ljava/net/InetAddress;ILjava/net/InetSocketAddress$InetSocketAddressHolder;)V +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress; +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->hashCode()I +HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z +HSPLjava/net/InetSocketAddress;->()V +HSPLjava/net/InetSocketAddress;->(I)V +HSPLjava/net/InetSocketAddress;->(Ljava/lang/String;I)V +HSPLjava/net/InetSocketAddress;->(Ljava/net/InetAddress;I)V +HSPLjava/net/InetSocketAddress;->checkHost(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/InetSocketAddress;->checkPort(I)I +HSPLjava/net/InetSocketAddress;->getAddress()Ljava/net/InetAddress; +HSPLjava/net/InetSocketAddress;->getPort()I +HSPLjava/net/InetSocketAddress;->hashCode()I +HSPLjava/net/InetSocketAddress;->isUnresolved()Z +HSPLjava/net/InterfaceAddress;->(Ljava/net/InetAddress;Ljava/net/Inet4Address;Ljava/net/InetAddress;)V +HSPLjava/net/InterfaceAddress;->countPrefixLength(Ljava/net/InetAddress;)S +HSPLjava/net/JarURLConnection;->(Ljava/net/URL;)V +HSPLjava/net/JarURLConnection;->getEntryName()Ljava/lang/String; +HSPLjava/net/JarURLConnection;->getJarFile()Ljava/util/jar/JarFile; +HSPLjava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V +HSPLjava/net/MulticastSocket;->()V +HSPLjava/net/MulticastSocket;->(Ljava/net/SocketAddress;)V +HSPLjava/net/MulticastSocket;->setNetworkInterface(Ljava/net/NetworkInterface;)V +HSPLjava/net/NetworkInterface$1checkedAddresses;->(Ljava/net/NetworkInterface;)V +HSPLjava/net/NetworkInterface$1checkedAddresses;->hasMoreElements()Z +HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/lang/Object; +HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/net/InetAddress; +HSPLjava/net/NetworkInterface;->-get0(Ljava/net/NetworkInterface;)[Ljava/net/InetAddress; +HSPLjava/net/NetworkInterface;->(Ljava/lang/String;I[Ljava/net/InetAddress;)V +HSPLjava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface; +HSPLjava/net/NetworkInterface;->getFlags()I +HSPLjava/net/NetworkInterface;->getIndex()I +HSPLjava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration; +HSPLjava/net/NetworkInterface;->getName()Ljava/lang/String; +HSPLjava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration; +HSPLjava/net/NetworkInterface;->isLoopback()Z +HSPLjava/net/NetworkInterface;->isPointToPoint()Z +HSPLjava/net/Parts;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/Parts;->getPath()Ljava/lang/String; +HSPLjava/net/Parts;->getQuery()Ljava/lang/String; +HSPLjava/net/Parts;->getRef()Ljava/lang/String; +HSPLjava/net/PlainDatagramSocketImpl;->()V +HSPLjava/net/PlainDatagramSocketImpl;->bind0(ILjava/net/InetAddress;)V +HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketClose()V +HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketCreate()V +HSPLjava/net/PlainDatagramSocketImpl;->doRecv(Ljava/net/DatagramPacket;I)V +HSPLjava/net/PlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V +HSPLjava/net/PlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V +HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V +HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption0(ILjava/lang/Object;)V +HSPLjava/net/PlainSocketImpl;->()V +HSPLjava/net/PlainSocketImpl;->(Ljava/io/FileDescriptor;)V +HSPLjava/net/PlainSocketImpl;->getMarkerFD()Ljava/io/FileDescriptor; +HSPLjava/net/PlainSocketImpl;->socketAccept(Ljava/net/SocketImpl;)V +HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V +HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V +HSPLjava/net/PlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V +HSPLjava/net/PlainSocketImpl;->socketCreate(Z)V +HSPLjava/net/PlainSocketImpl;->socketListen(I)V +HSPLjava/net/PlainSocketImpl;->socketSetOption(ILjava/lang/Object;)V +HSPLjava/net/PlainSocketImpl;->socketSetOption0(ILjava/lang/Object;)V +HSPLjava/net/Proxy$Type;->(Ljava/lang/String;I)V +HSPLjava/net/Proxy;->()V +HSPLjava/net/Proxy;->address()Ljava/net/SocketAddress; +HSPLjava/net/Proxy;->equals(Ljava/lang/Object;)Z +HSPLjava/net/Proxy;->hashCode()I +HSPLjava/net/Proxy;->type()Ljava/net/Proxy$Type; +HSPLjava/net/ProxySelector;->()V +HSPLjava/net/ProxySelector;->connectFailed(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V +HSPLjava/net/ProxySelector;->getDefault()Ljava/net/ProxySelector; +HSPLjava/net/ProxySelector;->select(Ljava/net/URI;)Ljava/util/List; +HSPLjava/net/ProxySelector;->setDefault(Ljava/net/ProxySelector;)V +HSPLjava/net/ResponseCache;->()V +HSPLjava/net/ResponseCache;->getDefault()Ljava/net/ResponseCache; +HSPLjava/net/ResponseCache;->setDefault(Ljava/net/ResponseCache;)V +HSPLjava/net/ServerSocket;->()V +HSPLjava/net/ServerSocket;->accept()Ljava/net/Socket; +HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;)V +HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;I)V +HSPLjava/net/ServerSocket;->createImpl()V +HSPLjava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl; +HSPLjava/net/ServerSocket;->implAccept(Ljava/net/Socket;)V +HSPLjava/net/ServerSocket;->isBound()Z +HSPLjava/net/ServerSocket;->isClosed()Z +HSPLjava/net/ServerSocket;->setBound()V +HSPLjava/net/ServerSocket;->setCreated()V +HSPLjava/net/ServerSocket;->setImpl()V +HSPLjava/net/Socket$2;->(Ljava/net/Socket;)V +HSPLjava/net/Socket$2;->run()Ljava/io/InputStream; +HSPLjava/net/Socket$2;->run()Ljava/lang/Object; +HSPLjava/net/Socket$3;->(Ljava/net/Socket;)V +HSPLjava/net/Socket$3;->run()Ljava/io/OutputStream; +HSPLjava/net/Socket$3;->run()Ljava/lang/Object; +HSPLjava/net/Socket;->()V +HSPLjava/net/Socket;->(Ljava/net/SocketImpl;)V +HSPLjava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V +HSPLjava/net/Socket;->close()V +HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;I)V +HSPLjava/net/Socket;->createImpl(Z)V +HSPLjava/net/Socket;->getFileDescriptor$()Ljava/io/FileDescriptor; +HSPLjava/net/Socket;->getImpl()Ljava/net/SocketImpl; +HSPLjava/net/Socket;->getInputStream()Ljava/io/InputStream; +HSPLjava/net/Socket;->getOutputStream()Ljava/io/OutputStream; +HSPLjava/net/Socket;->getPort()I +HSPLjava/net/Socket;->getSoTimeout()I +HSPLjava/net/Socket;->isBound()Z +HSPLjava/net/Socket;->isClosed()Z +HSPLjava/net/Socket;->isConnected()Z +HSPLjava/net/Socket;->isInputShutdown()Z +HSPLjava/net/Socket;->isOutputShutdown()Z +HSPLjava/net/Socket;->setBound()V +HSPLjava/net/Socket;->setConnected()V +HSPLjava/net/Socket;->setCreated()V +HSPLjava/net/Socket;->setImpl()V +HSPLjava/net/Socket;->setSoTimeout(I)V +HSPLjava/net/SocketAddress;->()V +HSPLjava/net/SocketImpl;->()V +HSPLjava/net/SocketImpl;->accept(Ljava/net/SocketImpl;)V +HSPLjava/net/SocketImpl;->available()I +HSPLjava/net/SocketImpl;->bind(Ljava/net/InetAddress;I)V +HSPLjava/net/SocketImpl;->connect(Ljava/lang/String;I)V +HSPLjava/net/SocketImpl;->connect(Ljava/net/InetAddress;I)V +HSPLjava/net/SocketImpl;->create(Z)V +HSPLjava/net/SocketImpl;->getFileDescriptor()Ljava/io/FileDescriptor; +HSPLjava/net/SocketImpl;->getInputStream()Ljava/io/InputStream; +HSPLjava/net/SocketImpl;->getOutputStream()Ljava/io/OutputStream; +HSPLjava/net/SocketImpl;->getPort()I +HSPLjava/net/SocketImpl;->getSocket()Ljava/net/Socket; +HSPLjava/net/SocketImpl;->listen(I)V +HSPLjava/net/SocketImpl;->sendUrgentData(I)V +HSPLjava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V +HSPLjava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V +HSPLjava/net/SocketInputStream;->(Ljava/net/AbstractPlainSocketImpl;)V +HSPLjava/net/SocketOptions;->getOption(I)Ljava/lang/Object; +HSPLjava/net/SocketOptions;->setOption(ILjava/lang/Object;)V +HSPLjava/net/SocketOutputStream;->(Ljava/net/AbstractPlainSocketImpl;)V +HSPLjava/net/SocketTimeoutException;->(Ljava/lang/String;)V +HSPLjava/net/SocksSocketImpl;->()V +HSPLjava/net/SocksSocketImpl;->close()V +HSPLjava/net/SocksSocketImpl;->connect(Ljava/net/SocketAddress;I)V +HSPLjava/net/SocksSocketImpl;->getPort()I +HSPLjava/net/SocksSocketImpl;->remainingMillis(J)I +HSPLjava/net/URI$Parser;->(Ljava/net/URI;Ljava/lang/String;)V +HSPLjava/net/URI$Parser;->at(IIC)Z +HSPLjava/net/URI$Parser;->charAt(I)C +HSPLjava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V +HSPLjava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V +HSPLjava/net/URI$Parser;->parse(Z)V +HSPLjava/net/URI$Parser;->parseAuthority(II)I +HSPLjava/net/URI$Parser;->parseHierarchical(II)I +HSPLjava/net/URI$Parser;->parseHostname(II)I +HSPLjava/net/URI$Parser;->parseIPv4Address(II)I +HSPLjava/net/URI$Parser;->parseServer(II)I +HSPLjava/net/URI$Parser;->scan(IIC)I +HSPLjava/net/URI$Parser;->scan(IIJJ)I +HSPLjava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I +HSPLjava/net/URI$Parser;->scanIPv4Address(IIZ)I +HSPLjava/net/URI$Parser;->substring(II)Ljava/lang/String; +HSPLjava/net/URI;->-get0()J +HSPLjava/net/URI;->-get1()J +HSPLjava/net/URI;->-get10()J +HSPLjava/net/URI;->-get11()J +HSPLjava/net/URI;->-get13()J +HSPLjava/net/URI;->-get14()J +HSPLjava/net/URI;->-get15()J +HSPLjava/net/URI;->-get16()J +HSPLjava/net/URI;->-get18()J +HSPLjava/net/URI;->-get19()J +HSPLjava/net/URI;->-get2()J +HSPLjava/net/URI;->-get20()J +HSPLjava/net/URI;->-get22()J +HSPLjava/net/URI;->-get23()J +HSPLjava/net/URI;->-get24()J +HSPLjava/net/URI;->-get3()J +HSPLjava/net/URI;->-get5()J +HSPLjava/net/URI;->-get6()J +HSPLjava/net/URI;->-get7()J +HSPLjava/net/URI;->-get9()J +HSPLjava/net/URI;->-set0(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set1(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set2(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set3(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set5(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set6(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set7(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-set8(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->-wrap0(CJJ)Z +HSPLjava/net/URI;->(Ljava/lang/String;)V +HSPLjava/net/URI;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URI;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLjava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V +HSPLjava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI; +HSPLjava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URI;->defineSchemeSpecificPart()V +HSPLjava/net/URI;->defineString()V +HSPLjava/net/URI;->getAuthority()Ljava/lang/String; +HSPLjava/net/URI;->getFragment()Ljava/lang/String; +HSPLjava/net/URI;->getHost()Ljava/lang/String; +HSPLjava/net/URI;->getPath()Ljava/lang/String; +HSPLjava/net/URI;->getQuery()Ljava/lang/String; +HSPLjava/net/URI;->getRawSchemeSpecificPart()Ljava/lang/String; +HSPLjava/net/URI;->getScheme()Ljava/lang/String; +HSPLjava/net/URI;->getSchemeSpecificPart()Ljava/lang/String; +HSPLjava/net/URI;->hash(ILjava/lang/String;)I +HSPLjava/net/URI;->hashCode()I +HSPLjava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I +HSPLjava/net/URI;->isAbsolute()Z +HSPLjava/net/URI;->isOpaque()Z +HSPLjava/net/URI;->match(CJJ)Z +HSPLjava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String; +HSPLjava/net/URI;->toLower(C)I +HSPLjava/net/URI;->toString()Ljava/lang/String; +HSPLjava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URL;->(Ljava/lang/String;)V +HSPLjava/net/URL;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V +HSPLjava/net/URL;->(Ljava/net/URL;Ljava/lang/String;)V +HSPLjava/net/URL;->(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V +HSPLjava/net/URL;->getAuthority()Ljava/lang/String; +HSPLjava/net/URL;->getDefaultPort()I +HSPLjava/net/URL;->getFile()Ljava/lang/String; +HSPLjava/net/URL;->getHost()Ljava/lang/String; +HSPLjava/net/URL;->getPath()Ljava/lang/String; +HSPLjava/net/URL;->getPort()I +HSPLjava/net/URL;->getProtocol()Ljava/lang/String; +HSPLjava/net/URL;->getQuery()Ljava/lang/String; +HSPLjava/net/URL;->getRef()Ljava/lang/String; +HSPLjava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; +HSPLjava/net/URL;->getUserInfo()Ljava/lang/String; +HSPLjava/net/URL;->isValidProtocol(Ljava/lang/String;)Z +HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection; +HSPLjava/net/URL;->openStream()Ljava/io/InputStream; +HSPLjava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URL;->toExternalForm()Ljava/lang/String; +HSPLjava/net/URL;->toString()Ljava/lang/String; +HSPLjava/net/URLConnection;->(Ljava/net/URL;)V +HSPLjava/net/URLConnection;->connect()V +HSPLjava/net/URLConnection;->getContentType()Ljava/lang/String; +HSPLjava/net/URLConnection;->getURL()Ljava/net/URL; +HSPLjava/net/URLConnection;->getUseCaches()Z +HSPLjava/net/URLConnection;->setDoInput(Z)V +HSPLjava/net/URLConnection;->setDoOutput(Z)V +HSPLjava/net/URLConnection;->setUseCaches(Z)V +HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/net/URLStreamHandler;->()V +HSPLjava/net/URLStreamHandler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V +HSPLjava/net/URLStreamHandler;->setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/net/URLStreamHandler;->toExternalForm(Ljava/net/URL;)Ljava/lang/String; +HSPLjava/net/URLStreamHandlerFactory;->createURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; +HSPLjava/nio/Bits;->byteOrder()Ljava/nio/ByteOrder; +HSPLjava/nio/Bits;->char0(C)B +HSPLjava/nio/Bits;->char1(C)B +HSPLjava/nio/Bits;->getFloat(Ljava/nio/ByteBuffer;IZ)F +HSPLjava/nio/Bits;->getFloatL(Ljava/nio/ByteBuffer;I)F +HSPLjava/nio/Bits;->getInt(Ljava/nio/ByteBuffer;IZ)I +HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I +HSPLjava/nio/Bits;->getIntL(Ljava/nio/ByteBuffer;I)I +HSPLjava/nio/Bits;->getLong(Ljava/nio/ByteBuffer;IZ)J +HSPLjava/nio/Bits;->getLongB(Ljava/nio/ByteBuffer;I)J +HSPLjava/nio/Bits;->getLongL(Ljava/nio/ByteBuffer;I)J +HSPLjava/nio/Bits;->getShort(Ljava/nio/ByteBuffer;IZ)S +HSPLjava/nio/Bits;->getShortB(Ljava/nio/ByteBuffer;I)S +HSPLjava/nio/Bits;->getShortL(Ljava/nio/ByteBuffer;I)S +HSPLjava/nio/Bits;->int0(I)B +HSPLjava/nio/Bits;->int1(I)B +HSPLjava/nio/Bits;->int2(I)B +HSPLjava/nio/Bits;->int3(I)B +HSPLjava/nio/Bits;->long0(J)B +HSPLjava/nio/Bits;->long1(J)B +HSPLjava/nio/Bits;->long2(J)B +HSPLjava/nio/Bits;->long3(J)B +HSPLjava/nio/Bits;->long4(J)B +HSPLjava/nio/Bits;->long5(J)B +HSPLjava/nio/Bits;->long6(J)B +HSPLjava/nio/Bits;->long7(J)B +HSPLjava/nio/Bits;->makeInt(BBBB)I +HSPLjava/nio/Bits;->makeLong(BBBBBBBB)J +HSPLjava/nio/Bits;->makeShort(BB)S +HSPLjava/nio/Bits;->pageCount(J)I +HSPLjava/nio/Bits;->pageSize()I +HSPLjava/nio/Bits;->putChar(Ljava/nio/ByteBuffer;ICZ)V +HSPLjava/nio/Bits;->putCharB(Ljava/nio/ByteBuffer;IC)V +HSPLjava/nio/Bits;->putCharL(Ljava/nio/ByteBuffer;IC)V +HSPLjava/nio/Bits;->putInt(Ljava/nio/ByteBuffer;IIZ)V +HSPLjava/nio/Bits;->putIntB(Ljava/nio/ByteBuffer;II)V +HSPLjava/nio/Bits;->putIntL(Ljava/nio/ByteBuffer;II)V +HSPLjava/nio/Bits;->putLong(Ljava/nio/ByteBuffer;IJZ)V +HSPLjava/nio/Bits;->putLongB(Ljava/nio/ByteBuffer;IJ)V +HSPLjava/nio/Bits;->putLongL(Ljava/nio/ByteBuffer;IJ)V +HSPLjava/nio/Bits;->unsafe()Lsun/misc/Unsafe; +HSPLjava/nio/Buffer;->(IIIII)V +HSPLjava/nio/Buffer;->capacity()I +HSPLjava/nio/Buffer;->checkBounds(III)V +HSPLjava/nio/Buffer;->checkIndex(I)I +HSPLjava/nio/Buffer;->checkIndex(II)I +HSPLjava/nio/Buffer;->clear()Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->discardMark()V +HSPLjava/nio/Buffer;->flip()Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->hasRemaining()Z +HSPLjava/nio/Buffer;->limit()I +HSPLjava/nio/Buffer;->limit(I)Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->mark()Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->markValue()I +HSPLjava/nio/Buffer;->nextGetIndex()I +HSPLjava/nio/Buffer;->nextGetIndex(I)I +HSPLjava/nio/Buffer;->nextPutIndex()I +HSPLjava/nio/Buffer;->nextPutIndex(I)I +HSPLjava/nio/Buffer;->position()I +HSPLjava/nio/Buffer;->position(I)Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->remaining()I +HSPLjava/nio/Buffer;->reset()Ljava/nio/Buffer; +HSPLjava/nio/Buffer;->rewind()Ljava/nio/Buffer; +HSPLjava/nio/ByteBuffer;->(IIII)V +HSPLjava/nio/ByteBuffer;->(IIII[BI)V +HSPLjava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->array()Ljava/lang/Object; +HSPLjava/nio/ByteBuffer;->array()[B +HSPLjava/nio/ByteBuffer;->arrayOffset()I +HSPLjava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->hasArray()Z +HSPLjava/nio/ByteBuffer;->isAccessible()Z +HSPLjava/nio/ByteBuffer;->order()Ljava/nio/ByteOrder; +HSPLjava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBufferAsCharBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V +HSPLjava/nio/ByteBufferAsCharBuffer;->duplicate()Ljava/nio/CharBuffer; +HSPLjava/nio/ByteBufferAsCharBuffer;->get()C +HSPLjava/nio/ByteBufferAsCharBuffer;->get(I)C +HSPLjava/nio/ByteBufferAsCharBuffer;->get([CII)Ljava/nio/CharBuffer; +HSPLjava/nio/ByteBufferAsCharBuffer;->isDirect()Z +HSPLjava/nio/ByteBufferAsCharBuffer;->ix(I)I +HSPLjava/nio/ByteBufferAsCharBuffer;->subSequence(II)Ljava/lang/CharSequence; +HSPLjava/nio/ByteBufferAsCharBuffer;->subSequence(II)Ljava/nio/CharBuffer; +HSPLjava/nio/ByteBufferAsCharBuffer;->toString(II)Ljava/lang/String; +HSPLjava/nio/ByteBufferAsFloatBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V +HSPLjava/nio/ByteBufferAsFloatBuffer;->ix(I)I +HSPLjava/nio/ByteBufferAsFloatBuffer;->put([FII)Ljava/nio/FloatBuffer; +HSPLjava/nio/ByteBufferAsIntBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V +HSPLjava/nio/ByteBufferAsIntBuffer;->get([III)Ljava/nio/IntBuffer; +HSPLjava/nio/ByteBufferAsIntBuffer;->ix(I)I +HSPLjava/nio/ByteBufferAsLongBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V +HSPLjava/nio/ByteBufferAsLongBuffer;->get([JII)Ljava/nio/LongBuffer; +HSPLjava/nio/ByteBufferAsLongBuffer;->ix(I)I +HSPLjava/nio/ByteBufferAsShortBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V +HSPLjava/nio/ByteBufferAsShortBuffer;->get([SII)Ljava/nio/ShortBuffer; +HSPLjava/nio/ByteBufferAsShortBuffer;->ix(I)I +HSPLjava/nio/ByteBufferAsShortBuffer;->put(IS)Ljava/nio/ShortBuffer; +HSPLjava/nio/ByteBufferAsShortBuffer;->put(S)Ljava/nio/ShortBuffer; +HSPLjava/nio/ByteBufferAsShortBuffer;->put([SII)Ljava/nio/ShortBuffer; +HSPLjava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder; +HSPLjava/nio/CharBuffer;->(IIII)V +HSPLjava/nio/CharBuffer;->(IIII[CI)V +HSPLjava/nio/CharBuffer;->allocate(I)Ljava/nio/CharBuffer; +HSPLjava/nio/CharBuffer;->array()[C +HSPLjava/nio/CharBuffer;->arrayOffset()I +HSPLjava/nio/CharBuffer;->charAt(I)C +HSPLjava/nio/CharBuffer;->get([C)Ljava/nio/CharBuffer; +HSPLjava/nio/CharBuffer;->hasArray()Z +HSPLjava/nio/CharBuffer;->length()I +HSPLjava/nio/CharBuffer;->toString()Ljava/lang/String; +HSPLjava/nio/CharBuffer;->wrap(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer; +HSPLjava/nio/CharBuffer;->wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer; +HSPLjava/nio/CharBuffer;->wrap([C)Ljava/nio/CharBuffer; +HSPLjava/nio/CharBuffer;->wrap([CII)Ljava/nio/CharBuffer; +HSPLjava/nio/DirectByteBuffer$MemoryRef;->(I)V +HSPLjava/nio/DirectByteBuffer$MemoryRef;->(JLjava/lang/Object;)V +HSPLjava/nio/DirectByteBuffer;->(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V +HSPLjava/nio/DirectByteBuffer;->(ILjava/nio/DirectByteBuffer$MemoryRef;)V +HSPLjava/nio/DirectByteBuffer;->(Ljava/nio/DirectByteBuffer$MemoryRef;IIIIIZ)V +HSPLjava/nio/DirectByteBuffer;->asCharBuffer()Ljava/nio/CharBuffer; +HSPLjava/nio/DirectByteBuffer;->asFloatBuffer()Ljava/nio/FloatBuffer; +HSPLjava/nio/DirectByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer; +HSPLjava/nio/DirectByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer; +HSPLjava/nio/DirectByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer; +HSPLjava/nio/DirectByteBuffer;->duplicate()Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->get()B +HSPLjava/nio/DirectByteBuffer;->get(I)B +HSPLjava/nio/DirectByteBuffer;->get(J)B +HSPLjava/nio/DirectByteBuffer;->get([BII)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->getChar()C +HSPLjava/nio/DirectByteBuffer;->getChar(I)C +HSPLjava/nio/DirectByteBuffer;->getCharUnchecked(I)C +HSPLjava/nio/DirectByteBuffer;->getInt()I +HSPLjava/nio/DirectByteBuffer;->getInt(I)I +HSPLjava/nio/DirectByteBuffer;->getInt(J)I +HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[CII)V +HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[III)V +HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[JII)V +HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[SII)V +HSPLjava/nio/DirectByteBuffer;->isDirect()Z +HSPLjava/nio/DirectByteBuffer;->ix(I)J +HSPLjava/nio/DirectByteBuffer;->put(B)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->put(JB)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putFloat(JF)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putInt(I)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putInt(II)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putShort(JS)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putShort(S)Ljava/nio/ByteBuffer; +HSPLjava/nio/DirectByteBuffer;->putShortUnchecked(IS)V +HSPLjava/nio/DirectByteBuffer;->putUnchecked(I[FII)V +HSPLjava/nio/DirectByteBuffer;->putUnchecked(I[SII)V +HSPLjava/nio/DirectByteBuffer;->slice()Ljava/nio/ByteBuffer; +HSPLjava/nio/FloatBuffer;->(IIII)V +HSPLjava/nio/FloatBuffer;->(IIII[FI)V +HSPLjava/nio/FloatBuffer;->put([F)Ljava/nio/FloatBuffer; +HSPLjava/nio/HeapByteBuffer;->(II)V +HSPLjava/nio/HeapByteBuffer;->(IIZ)V +HSPLjava/nio/HeapByteBuffer;->([BII)V +HSPLjava/nio/HeapByteBuffer;->([BIIIIIZ)V +HSPLjava/nio/HeapByteBuffer;->([BIIZ)V +HSPLjava/nio/HeapByteBuffer;->_get(I)B +HSPLjava/nio/HeapByteBuffer;->_put(IB)V +HSPLjava/nio/HeapByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer; +HSPLjava/nio/HeapByteBuffer;->compact()Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->duplicate()Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->get()B +HSPLjava/nio/HeapByteBuffer;->get([BII)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->getFloat()F +HSPLjava/nio/HeapByteBuffer;->getFloat(I)F +HSPLjava/nio/HeapByteBuffer;->getInt()I +HSPLjava/nio/HeapByteBuffer;->getInt(I)I +HSPLjava/nio/HeapByteBuffer;->getLong()J +HSPLjava/nio/HeapByteBuffer;->getLong(I)J +HSPLjava/nio/HeapByteBuffer;->getShort(I)S +HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[III)V +HSPLjava/nio/HeapByteBuffer;->isDirect()Z +HSPLjava/nio/HeapByteBuffer;->isReadOnly()Z +HSPLjava/nio/HeapByteBuffer;->ix(I)I +HSPLjava/nio/HeapByteBuffer;->put(B)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->put([BII)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putChar(C)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putInt(I)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putInt(II)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putLong(J)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->slice()Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapCharBuffer;->(II)V +HSPLjava/nio/HeapCharBuffer;->(IIZ)V +HSPLjava/nio/HeapCharBuffer;->([CII)V +HSPLjava/nio/HeapCharBuffer;->([CIIIIIZ)V +HSPLjava/nio/HeapCharBuffer;->([CIIZ)V +HSPLjava/nio/HeapCharBuffer;->get(I)C +HSPLjava/nio/HeapCharBuffer;->ix(I)I +HSPLjava/nio/HeapCharBuffer;->put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer; +HSPLjava/nio/HeapCharBuffer;->put([CII)Ljava/nio/CharBuffer; +HSPLjava/nio/HeapCharBuffer;->slice()Ljava/nio/CharBuffer; +HSPLjava/nio/HeapCharBuffer;->toString(II)Ljava/lang/String; +HSPLjava/nio/IntBuffer;->(IIII)V +HSPLjava/nio/IntBuffer;->(IIII[II)V +HSPLjava/nio/IntBuffer;->get([I)Ljava/nio/IntBuffer; +HSPLjava/nio/LongBuffer;->(IIII)V +HSPLjava/nio/LongBuffer;->(IIII[JI)V +HSPLjava/nio/LongBuffer;->get([J)Ljava/nio/LongBuffer; +HSPLjava/nio/MappedByteBuffer;->(IIIILjava/io/FileDescriptor;)V +HSPLjava/nio/MappedByteBuffer;->(IIII[BI)V +HSPLjava/nio/MappedByteBuffer;->checkMapped()V +HSPLjava/nio/MappedByteBuffer;->load()Ljava/nio/MappedByteBuffer; +HSPLjava/nio/MappedByteBuffer;->mappingAddress(J)J +HSPLjava/nio/MappedByteBuffer;->mappingLength(J)J +HSPLjava/nio/MappedByteBuffer;->mappingOffset()J +HSPLjava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object; +HSPLjava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I +HSPLjava/nio/NIOAccess;->getBasePointer(Ljava/nio/Buffer;)J +HSPLjava/nio/ShortBuffer;->(IIII)V +HSPLjava/nio/ShortBuffer;->(IIII[SI)V +HSPLjava/nio/ShortBuffer;->get([S)Ljava/nio/ShortBuffer; +HSPLjava/nio/ShortBuffer;->put([S)Ljava/nio/ShortBuffer; +HSPLjava/nio/StringCharBuffer;->(Ljava/lang/CharSequence;II)V +HSPLjava/nio/StringCharBuffer;->get(I)C +HSPLjava/nio/channels/Channel;->close()V +HSPLjava/nio/channels/Channel;->isOpen()Z +HSPLjava/nio/channels/DatagramChannel;->bind(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel; +HSPLjava/nio/channels/DatagramChannel;->connect(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel; +HSPLjava/nio/channels/DatagramChannel;->disconnect()Ljava/nio/channels/DatagramChannel; +HSPLjava/nio/channels/DatagramChannel;->getLocalAddress()Ljava/net/SocketAddress; +HSPLjava/nio/channels/DatagramChannel;->getRemoteAddress()Ljava/net/SocketAddress; +HSPLjava/nio/channels/DatagramChannel;->isConnected()Z +HSPLjava/nio/channels/DatagramChannel;->read(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/DatagramChannel;->read([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/DatagramChannel;->receive(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress; +HSPLjava/nio/channels/DatagramChannel;->send(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I +HSPLjava/nio/channels/DatagramChannel;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/DatagramChannel; +HSPLjava/nio/channels/DatagramChannel;->socket()Ljava/net/DatagramSocket; +HSPLjava/nio/channels/DatagramChannel;->write(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/DatagramChannel;->write([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/FileChannel;->()V +HSPLjava/nio/channels/FileChannel;->force(Z)V +HSPLjava/nio/channels/FileChannel;->lock(JJZ)Ljava/nio/channels/FileLock; +HSPLjava/nio/channels/FileChannel;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer; +HSPLjava/nio/channels/FileChannel;->open(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel; +HSPLjava/nio/channels/FileChannel;->open(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel; +HSPLjava/nio/channels/FileChannel;->position()J +HSPLjava/nio/channels/FileChannel;->position(J)Ljava/nio/channels/FileChannel; +HSPLjava/nio/channels/FileChannel;->read(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/FileChannel;->read(Ljava/nio/ByteBuffer;J)I +HSPLjava/nio/channels/FileChannel;->read([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/FileChannel;->size()J +HSPLjava/nio/channels/FileChannel;->transferFrom(Ljava/nio/channels/ReadableByteChannel;JJ)J +HSPLjava/nio/channels/FileChannel;->transferTo(JJLjava/nio/channels/WritableByteChannel;)J +HSPLjava/nio/channels/FileChannel;->truncate(J)Ljava/nio/channels/FileChannel; +HSPLjava/nio/channels/FileChannel;->tryLock()Ljava/nio/channels/FileLock; +HSPLjava/nio/channels/FileChannel;->tryLock(JJZ)Ljava/nio/channels/FileLock; +HSPLjava/nio/channels/FileChannel;->write(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/FileChannel;->write(Ljava/nio/ByteBuffer;J)I +HSPLjava/nio/channels/FileChannel;->write([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/FileLock;->(Ljava/nio/channels/FileChannel;JJZ)V +HSPLjava/nio/channels/FileLock;->acquiredBy()Ljava/nio/channels/Channel; +HSPLjava/nio/channels/FileLock;->isValid()Z +HSPLjava/nio/channels/FileLock;->position()J +HSPLjava/nio/channels/FileLock;->release()V +HSPLjava/nio/channels/FileLock;->size()J +HSPLjava/nio/channels/InterruptibleChannel;->close()V +HSPLjava/nio/channels/MulticastChannel;->close()V +HSPLjava/nio/channels/MulticastChannel;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)Ljava/nio/channels/MembershipKey; +HSPLjava/nio/channels/MulticastChannel;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;Ljava/net/InetAddress;)Ljava/nio/channels/MembershipKey; +HSPLjava/nio/channels/NetworkChannel;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object; +HSPLjava/nio/channels/NetworkChannel;->supportedOptions()Ljava/util/Set; +HSPLjava/nio/channels/SeekableByteChannel;->position()J +HSPLjava/nio/channels/SeekableByteChannel;->position(J)Ljava/nio/channels/SeekableByteChannel; +HSPLjava/nio/channels/SeekableByteChannel;->read(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/SeekableByteChannel;->size()J +HSPLjava/nio/channels/SeekableByteChannel;->truncate(J)Ljava/nio/channels/SeekableByteChannel; +HSPLjava/nio/channels/SeekableByteChannel;->write(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/SelectableChannel;->blockingLock()Ljava/lang/Object; +HSPLjava/nio/channels/SelectableChannel;->configureBlocking(Z)Ljava/nio/channels/SelectableChannel; +HSPLjava/nio/channels/SelectableChannel;->isBlocking()Z +HSPLjava/nio/channels/SelectableChannel;->isRegistered()Z +HSPLjava/nio/channels/SelectableChannel;->keyFor(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey; +HSPLjava/nio/channels/SelectableChannel;->provider()Ljava/nio/channels/spi/SelectorProvider; +HSPLjava/nio/channels/SelectableChannel;->register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey; +HSPLjava/nio/channels/ServerSocketChannel;->accept()Ljava/nio/channels/SocketChannel; +HSPLjava/nio/channels/ServerSocketChannel;->bind(Ljava/net/SocketAddress;I)Ljava/nio/channels/ServerSocketChannel; +HSPLjava/nio/channels/ServerSocketChannel;->getLocalAddress()Ljava/net/SocketAddress; +HSPLjava/nio/channels/ServerSocketChannel;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/ServerSocketChannel; +HSPLjava/nio/channels/ServerSocketChannel;->socket()Ljava/net/ServerSocket; +HSPLjava/nio/channels/SocketChannel;->bind(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel; +HSPLjava/nio/channels/SocketChannel;->connect(Ljava/net/SocketAddress;)Z +HSPLjava/nio/channels/SocketChannel;->finishConnect()Z +HSPLjava/nio/channels/SocketChannel;->getLocalAddress()Ljava/net/SocketAddress; +HSPLjava/nio/channels/SocketChannel;->getRemoteAddress()Ljava/net/SocketAddress; +HSPLjava/nio/channels/SocketChannel;->isConnected()Z +HSPLjava/nio/channels/SocketChannel;->isConnectionPending()Z +HSPLjava/nio/channels/SocketChannel;->read(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/SocketChannel;->read([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/SocketChannel;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)Ljava/nio/channels/SocketChannel; +HSPLjava/nio/channels/SocketChannel;->shutdownInput()Ljava/nio/channels/SocketChannel; +HSPLjava/nio/channels/SocketChannel;->shutdownOutput()Ljava/nio/channels/SocketChannel; +HSPLjava/nio/channels/SocketChannel;->socket()Ljava/net/Socket; +HSPLjava/nio/channels/SocketChannel;->write(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/channels/SocketChannel;->write([Ljava/nio/ByteBuffer;II)J +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel$1;->(Ljava/nio/channels/spi/AbstractInterruptibleChannel;)V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->()V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->begin()V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->close()V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->end(Z)V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z +HSPLjava/nio/charset/Charset;->(Ljava/lang/String;[Ljava/lang/String;)V +HSPLjava/nio/charset/Charset;->aliases()Ljava/util/Set; +HSPLjava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z +HSPLjava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V +HSPLjava/nio/charset/Charset;->checkName(Ljava/lang/String;)V +HSPLjava/nio/charset/Charset;->defaultCharset()Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->encode(Ljava/lang/String;)Ljava/nio/ByteBuffer; +HSPLjava/nio/charset/Charset;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer; +HSPLjava/nio/charset/Charset;->equals(Ljava/lang/Object;)Z +HSPLjava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->isSupported(Ljava/lang/String;)Z +HSPLjava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->name()Ljava/lang/String; +HSPLjava/nio/charset/CharsetDecoder;->(Ljava/nio/charset/Charset;FF)V +HSPLjava/nio/charset/CharsetDecoder;->(Ljava/nio/charset/Charset;FFLjava/lang/String;)V +HSPLjava/nio/charset/CharsetDecoder;->averageCharsPerByte()F +HSPLjava/nio/charset/CharsetDecoder;->charset()Ljava/nio/charset/Charset; +HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer; +HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoder;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction; +HSPLjava/nio/charset/CharsetDecoder;->maxCharsPerByte()F +HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetDecoder;->replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetDecoder;->replacement()Ljava/lang/String; +HSPLjava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetDecoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction; +HSPLjava/nio/charset/CharsetDecoderICU;->(Ljava/nio/charset/Charset;FJ)V +HSPLjava/nio/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLjava/nio/charset/CharsetDecoderICU;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V +HSPLjava/nio/charset/CharsetDecoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V +HSPLjava/nio/charset/CharsetDecoderICU;->implReplaceWith(Ljava/lang/String;)V +HSPLjava/nio/charset/CharsetDecoderICU;->implReset()V +HSPLjava/nio/charset/CharsetDecoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Ljava/nio/charset/CharsetDecoderICU; +HSPLjava/nio/charset/CharsetDecoderICU;->setPosition(Ljava/nio/ByteBuffer;)V +HSPLjava/nio/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLjava/nio/charset/CharsetDecoderICU;->updateCallback()V +HSPLjava/nio/charset/CharsetEncoder;->(Ljava/nio/charset/Charset;FF[BZ)V +HSPLjava/nio/charset/CharsetEncoder;->averageBytesPerChar()F +HSPLjava/nio/charset/CharsetEncoder;->charset()Ljava/nio/charset/Charset; +HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer; +HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoder;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction; +HSPLjava/nio/charset/CharsetEncoder;->maxBytesPerChar()F +HSPLjava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder; +HSPLjava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder; +HSPLjava/nio/charset/CharsetEncoder;->replacement()[B +HSPLjava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder; +HSPLjava/nio/charset/CharsetEncoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction; +HSPLjava/nio/charset/CharsetEncoderICU;->(Ljava/nio/charset/Charset;FF[BJ)V +HSPLjava/nio/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I +HSPLjava/nio/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLjava/nio/charset/CharsetEncoderICU;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V +HSPLjava/nio/charset/CharsetEncoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V +HSPLjava/nio/charset/CharsetEncoderICU;->implReset()V +HSPLjava/nio/charset/CharsetEncoderICU;->makeReplacement(Ljava/lang/String;J)[B +HSPLjava/nio/charset/CharsetEncoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Ljava/nio/charset/CharsetEncoderICU; +HSPLjava/nio/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V +HSPLjava/nio/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLjava/nio/charset/CharsetEncoderICU;->updateCallback()V +HSPLjava/nio/charset/CharsetICU;->(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HSPLjava/nio/charset/CharsetICU;->newDecoder()Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder; +HSPLjava/nio/charset/CoderResult;->isError()Z +HSPLjava/nio/charset/CoderResult;->isOverflow()Z +HSPLjava/nio/charset/CoderResult;->isUnderflow()Z +HSPLjava/nio/file/AccessMode;->(Ljava/lang/String;I)V +HSPLjava/nio/file/AccessMode;->values()[Ljava/nio/file/AccessMode; +HSPLjava/nio/file/FileAlreadyExistsException;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/nio/file/FileSystem;->()V +HSPLjava/nio/file/FileSystem;->close()V +HSPLjava/nio/file/FileSystem;->getFileStores()Ljava/lang/Iterable; +HSPLjava/nio/file/FileSystem;->getPath(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; +HSPLjava/nio/file/FileSystem;->getPathMatcher(Ljava/lang/String;)Ljava/nio/file/PathMatcher; +HSPLjava/nio/file/FileSystem;->getRootDirectories()Ljava/lang/Iterable; +HSPLjava/nio/file/FileSystem;->getSeparator()Ljava/lang/String; +HSPLjava/nio/file/FileSystem;->getUserPrincipalLookupService()Ljava/nio/file/attribute/UserPrincipalLookupService; +HSPLjava/nio/file/FileSystem;->isOpen()Z +HSPLjava/nio/file/FileSystem;->isReadOnly()Z +HSPLjava/nio/file/FileSystem;->newWatchService()Ljava/nio/file/WatchService; +HSPLjava/nio/file/FileSystem;->provider()Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/FileSystem;->supportedFileAttributeViews()Ljava/util/Set; +HSPLjava/nio/file/FileSystemException;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder$1;->()V +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder$1;->run()Ljava/lang/Object; +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder$1;->run()Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->-wrap0()Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem; +HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/FileSystems;->getDefault()Ljava/nio/file/FileSystem; +HSPLjava/nio/file/Files;->isAccessible(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)Z +HSPLjava/nio/file/Files;->isRegularFile(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z +HSPLjava/nio/file/Files;->isWritable(Ljava/nio/file/Path;)Z +HSPLjava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider; +HSPLjava/nio/file/Files;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes; +HSPLjava/nio/file/LinkOption;->(Ljava/lang/String;I)V +HSPLjava/nio/file/Path;->compareTo(Ljava/nio/file/Path;)I +HSPLjava/nio/file/Path;->endsWith(Ljava/lang/String;)Z +HSPLjava/nio/file/Path;->endsWith(Ljava/nio/file/Path;)Z +HSPLjava/nio/file/Path;->equals(Ljava/lang/Object;)Z +HSPLjava/nio/file/Path;->getFileName()Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->getFileSystem()Ljava/nio/file/FileSystem; +HSPLjava/nio/file/Path;->getName(I)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->getNameCount()I +HSPLjava/nio/file/Path;->getParent()Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->getRoot()Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->hashCode()I +HSPLjava/nio/file/Path;->isAbsolute()Z +HSPLjava/nio/file/Path;->iterator()Ljava/util/Iterator; +HSPLjava/nio/file/Path;->normalize()Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;)Ljava/nio/file/WatchKey; +HSPLjava/nio/file/Path;->register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey; +HSPLjava/nio/file/Path;->relativize(Ljava/nio/file/Path;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->resolve(Ljava/lang/String;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->resolve(Ljava/nio/file/Path;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->resolveSibling(Ljava/lang/String;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->resolveSibling(Ljava/nio/file/Path;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->startsWith(Ljava/lang/String;)Z +HSPLjava/nio/file/Path;->startsWith(Ljava/nio/file/Path;)Z +HSPLjava/nio/file/Path;->subpath(II)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->toAbsolutePath()Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->toFile()Ljava/io/File; +HSPLjava/nio/file/Path;->toRealPath([Ljava/nio/file/LinkOption;)Ljava/nio/file/Path; +HSPLjava/nio/file/Path;->toString()Ljava/lang/String; +HSPLjava/nio/file/Path;->toUri()Ljava/net/URI; +HSPLjava/nio/file/Paths;->get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; +HSPLjava/nio/file/StandardOpenOption;->(Ljava/lang/String;I)V +HSPLjava/nio/file/StandardOpenOption;->values()[Ljava/nio/file/StandardOpenOption; +HSPLjava/nio/file/Watchable;->register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;)Ljava/nio/file/WatchKey; +HSPLjava/nio/file/Watchable;->register(Ljava/nio/file/WatchService;[Ljava/nio/file/WatchEvent$Kind;[Ljava/nio/file/WatchEvent$Modifier;)Ljava/nio/file/WatchKey; +HSPLjava/nio/file/attribute/AttributeView;->name()Ljava/lang/String; +HSPLjava/nio/file/attribute/BasicFileAttributeView;->name()Ljava/lang/String; +HSPLjava/nio/file/attribute/BasicFileAttributeView;->readAttributes()Ljava/nio/file/attribute/BasicFileAttributes; +HSPLjava/nio/file/attribute/BasicFileAttributeView;->setTimes(Ljava/nio/file/attribute/FileTime;Ljava/nio/file/attribute/FileTime;Ljava/nio/file/attribute/FileTime;)V +HSPLjava/nio/file/attribute/PosixFileAttributes;->group()Ljava/nio/file/attribute/GroupPrincipal; +HSPLjava/nio/file/attribute/PosixFileAttributes;->owner()Ljava/nio/file/attribute/UserPrincipal; +HSPLjava/nio/file/attribute/PosixFileAttributes;->permissions()Ljava/util/Set; +HSPLjava/nio/file/spi/FileSystemProvider;->()V +HSPLjava/nio/file/spi/FileSystemProvider;->(Ljava/lang/Void;)V +HSPLjava/nio/file/spi/FileSystemProvider;->checkAccess(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)V +HSPLjava/nio/file/spi/FileSystemProvider;->checkPermission()Ljava/lang/Void; +HSPLjava/nio/file/spi/FileSystemProvider;->copy(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)V +HSPLjava/nio/file/spi/FileSystemProvider;->createDirectory(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)V +HSPLjava/nio/file/spi/FileSystemProvider;->delete(Ljava/nio/file/Path;)V +HSPLjava/nio/file/spi/FileSystemProvider;->getFileStore(Ljava/nio/file/Path;)Ljava/nio/file/FileStore; +HSPLjava/nio/file/spi/FileSystemProvider;->getFileSystem(Ljava/net/URI;)Ljava/nio/file/FileSystem; +HSPLjava/nio/file/spi/FileSystemProvider;->getPath(Ljava/net/URI;)Ljava/nio/file/Path; +HSPLjava/nio/file/spi/FileSystemProvider;->getScheme()Ljava/lang/String; +HSPLjava/nio/file/spi/FileSystemProvider;->isHidden(Ljava/nio/file/Path;)Z +HSPLjava/nio/file/spi/FileSystemProvider;->isSameFile(Ljava/nio/file/Path;Ljava/nio/file/Path;)Z +HSPLjava/nio/file/spi/FileSystemProvider;->move(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)V +HSPLjava/nio/file/spi/FileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel; +HSPLjava/nio/file/spi/FileSystemProvider;->newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream; +HSPLjava/nio/file/spi/FileSystemProvider;->newFileSystem(Ljava/net/URI;Ljava/util/Map;)Ljava/nio/file/FileSystem; +HSPLjava/nio/file/spi/FileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map; +HSPLjava/nio/file/spi/FileSystemProvider;->setAttribute(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/Object;[Ljava/nio/file/LinkOption;)V +HSPLjava/security/AccessControlContext;->([Ljava/security/ProtectionDomain;)V +HSPLjava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object; +HSPLjava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object; +HSPLjava/security/AccessController;->getContext()Ljava/security/AccessControlContext; +HSPLjava/security/AlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z +HSPLjava/security/AlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z +HSPLjava/security/AlgorithmConstraints;->permits(Ljava/util/Set;Ljava/security/Key;)Z +HSPLjava/security/AlgorithmParameters;->getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameters; +HSPLjava/security/BasicPermission;->(Ljava/lang/String;)V +HSPLjava/security/BasicPermission;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/security/CodeSigner;->(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V +HSPLjava/security/CodeSigner;->getSignerCertPath()Ljava/security/cert/CertPath; +HSPLjava/security/CryptoPrimitive;->(Ljava/lang/String;I)V +HSPLjava/security/CryptoPrimitive;->values()[Ljava/security/CryptoPrimitive; +HSPLjava/security/GeneralSecurityException;->(Ljava/lang/String;)V +HSPLjava/security/InvalidKeyException;->(Ljava/lang/String;)V +HSPLjava/security/Key;->getAlgorithm()Ljava/lang/String; +HSPLjava/security/Key;->getEncoded()[B +HSPLjava/security/Key;->getFormat()Ljava/lang/String; +HSPLjava/security/KeyException;->(Ljava/lang/String;)V +HSPLjava/security/KeyFactory;->(Ljava/lang/String;)V +HSPLjava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; +HSPLjava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory; +HSPLjava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi; +HSPLjava/security/KeyFactorySpi;->()V +HSPLjava/security/KeyStore$1;->()V +HSPLjava/security/KeyStore$1;->run()Ljava/lang/Object; +HSPLjava/security/KeyStore$1;->run()Ljava/lang/String; +HSPLjava/security/KeyStore;->(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjava/security/KeyStore;->aliases()Ljava/util/Enumeration; +HSPLjava/security/KeyStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; +HSPLjava/security/KeyStore;->getDefaultType()Ljava/lang/String; +HSPLjava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore; +HSPLjava/security/KeyStore;->getType()Ljava/lang/String; +HSPLjava/security/KeyStore;->load(Ljava/io/InputStream;[C)V +HSPLjava/security/KeyStore;->load(Ljava/security/KeyStore$LoadStoreParameter;)V +HSPLjava/security/KeyStoreSpi;->()V +HSPLjava/security/KeyStoreSpi;->engineAliases()Ljava/util/Enumeration; +HSPLjava/security/KeyStoreSpi;->engineContainsAlias(Ljava/lang/String;)Z +HSPLjava/security/KeyStoreSpi;->engineDeleteEntry(Ljava/lang/String;)V +HSPLjava/security/KeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate; +HSPLjava/security/KeyStoreSpi;->engineGetCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String; +HSPLjava/security/KeyStoreSpi;->engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate; +HSPLjava/security/KeyStoreSpi;->engineGetCreationDate(Ljava/lang/String;)Ljava/util/Date; +HSPLjava/security/KeyStoreSpi;->engineGetKey(Ljava/lang/String;[C)Ljava/security/Key; +HSPLjava/security/KeyStoreSpi;->engineIsCertificateEntry(Ljava/lang/String;)Z +HSPLjava/security/KeyStoreSpi;->engineIsKeyEntry(Ljava/lang/String;)Z +HSPLjava/security/KeyStoreSpi;->engineLoad(Ljava/io/InputStream;[C)V +HSPLjava/security/KeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V +HSPLjava/security/KeyStoreSpi;->engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V +HSPLjava/security/KeyStoreSpi;->engineSetKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V +HSPLjava/security/KeyStoreSpi;->engineSetKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V +HSPLjava/security/KeyStoreSpi;->engineSize()I +HSPLjava/security/KeyStoreSpi;->engineStore(Ljava/io/OutputStream;[C)V +HSPLjava/security/MessageDigest$Delegate;->(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V +HSPLjava/security/MessageDigest$Delegate;->clone()Ljava/lang/Object; +HSPLjava/security/MessageDigest$Delegate;->engineDigest()[B +HSPLjava/security/MessageDigest$Delegate;->engineDigest([BII)I +HSPLjava/security/MessageDigest$Delegate;->engineGetDigestLength()I +HSPLjava/security/MessageDigest$Delegate;->engineReset()V +HSPLjava/security/MessageDigest$Delegate;->engineUpdate(B)V +HSPLjava/security/MessageDigest$Delegate;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLjava/security/MessageDigest$Delegate;->engineUpdate([BII)V +HSPLjava/security/MessageDigest;->-get0(Ljava/security/MessageDigest;)Ljava/lang/String; +HSPLjava/security/MessageDigest;->-get1(Ljava/security/MessageDigest;)Ljava/security/Provider; +HSPLjava/security/MessageDigest;->-get2(Ljava/security/MessageDigest;)I +HSPLjava/security/MessageDigest;->-set0(Ljava/security/MessageDigest;Ljava/security/Provider;)Ljava/security/Provider; +HSPLjava/security/MessageDigest;->-set1(Ljava/security/MessageDigest;I)I +HSPLjava/security/MessageDigest;->(Ljava/lang/String;)V +HSPLjava/security/MessageDigest;->digest()[B +HSPLjava/security/MessageDigest;->digest([B)[B +HSPLjava/security/MessageDigest;->digest([BII)I +HSPLjava/security/MessageDigest;->getDigestLength()I +HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; +HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest; +HSPLjava/security/MessageDigest;->isEqual([B[B)Z +HSPLjava/security/MessageDigest;->reset()V +HSPLjava/security/MessageDigest;->update(B)V +HSPLjava/security/MessageDigest;->update(Ljava/nio/ByteBuffer;)V +HSPLjava/security/MessageDigest;->update([B)V +HSPLjava/security/MessageDigest;->update([BII)V +HSPLjava/security/MessageDigestSpi;->()V +HSPLjava/security/MessageDigestSpi;->engineDigest([BII)I +HSPLjava/security/MessageDigestSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLjava/security/NoSuchAlgorithmException;->(Ljava/lang/String;)V +HSPLjava/security/Permission;->(Ljava/lang/String;)V +HSPLjava/security/PrivilegedExceptionAction;->run()Ljava/lang/Object; +HSPLjava/security/Provider$Service;->-set0(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Provider$Service;->-set1(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Provider$Service;->-set2(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Provider$Service;->-wrap0(Ljava/security/Provider$Service;)Z +HSPLjava/security/Provider$Service;->-wrap2(Ljava/security/Provider$Service;Ljava/lang/String;)V +HSPLjava/security/Provider$Service;->(Ljava/security/Provider;)V +HSPLjava/security/Provider$Service;->(Ljava/security/Provider;Ljava/security/Provider$Service;)V +HSPLjava/security/Provider$Service;->addAlias(Ljava/lang/String;)V +HSPLjava/security/Provider$Service;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/security/Provider$Service;->getAlgorithm()Ljava/lang/String; +HSPLjava/security/Provider$Service;->getAttribute(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Provider$Service;->getClassName()Ljava/lang/String; +HSPLjava/security/Provider$Service;->getImplClass()Ljava/lang/Class; +HSPLjava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/security/Provider$Service;->getProvider()Ljava/security/Provider; +HSPLjava/security/Provider$Service;->getType()Ljava/lang/String; +HSPLjava/security/Provider$Service;->hasKeyAttributes()Z +HSPLjava/security/Provider$Service;->isValid()Z +HSPLjava/security/Provider$Service;->newInstance(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z +HSPLjava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z +HSPLjava/security/Provider$Service;->supportsParameter(Ljava/lang/Object;)Z +HSPLjava/security/Provider$ServiceKey;->(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLjava/security/Provider$ServiceKey;->(Ljava/lang/String;Ljava/lang/String;ZLjava/security/Provider$ServiceKey;)V +HSPLjava/security/Provider$ServiceKey;->equals(Ljava/lang/Object;)Z +HSPLjava/security/Provider$ServiceKey;->hashCode()I +HSPLjava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z +HSPLjava/security/Provider$UString;->(Ljava/lang/String;)V +HSPLjava/security/Provider$UString;->equals(Ljava/lang/Object;)Z +HSPLjava/security/Provider$UString;->hashCode()I +HSPLjava/security/Provider;->-get0()Ljava/util/Map; +HSPLjava/security/Provider;->(Ljava/lang/String;DLjava/lang/String;)V +HSPLjava/security/Provider;->check(Ljava/lang/String;)V +HSPLjava/security/Provider;->checkInitialized()V +HSPLjava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z +HSPLjava/security/Provider;->ensureLegacyParsed()V +HSPLjava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Provider;->getName()Ljava/lang/String; +HSPLjava/security/Provider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLjava/security/Provider;->getServices()Ljava/util/Set; +HSPLjava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String; +HSPLjava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/security/Provider;->parseLegacyPut(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/security/Provider;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/security/Provider;->putId()V +HSPLjava/security/Provider;->removeInvalidServices(Ljava/util/Map;)V +HSPLjava/security/SecureRandom;->()V +HSPLjava/security/SecureRandom;->(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjava/security/SecureRandom;->getDefaultPRNG(Z[B)V +HSPLjava/security/SecureRandom;->getInstance(Ljava/lang/String;)Ljava/security/SecureRandom; +HSPLjava/security/SecureRandom;->getPrngAlgorithm()Ljava/lang/String; +HSPLjava/security/SecureRandom;->getProvider()Ljava/security/Provider; +HSPLjava/security/SecureRandom;->getSecureRandomSpi()Ljava/security/SecureRandomSpi; +HSPLjava/security/SecureRandom;->next(I)I +HSPLjava/security/SecureRandom;->nextBytes([B)V +HSPLjava/security/SecureRandom;->setSeed(J)V +HSPLjava/security/SecureRandom;->setSeed([B)V +HSPLjava/security/SecureRandomSpi;->()V +HSPLjava/security/SecureRandomSpi;->engineGenerateSeed(I)[B +HSPLjava/security/SecureRandomSpi;->engineNextBytes([B)V +HSPLjava/security/SecureRandomSpi;->engineSetSeed([B)V +HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object; +HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object; +HSPLjava/security/Security;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/security/Security;->getProvider(Ljava/lang/String;)Ljava/security/Provider; +HSPLjava/security/Security;->getProviders()[Ljava/security/Provider; +HSPLjava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLjava/security/Security;->getVersion()I +HSPLjava/security/Security;->increaseVersion()V +HSPLjava/security/Security;->insertProviderAt(Ljava/security/Provider;I)I +HSPLjava/security/Security;->invalidateSMCache(Ljava/lang/String;)V +HSPLjava/security/Security;->setProperty(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/security/Signature$Delegate;->(Ljava/lang/String;)V +HSPLjava/security/Signature$Delegate;->chooseFirstProvider()V +HSPLjava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLjava/security/Signature$Delegate;->engineInitVerify(Ljava/security/PublicKey;)V +HSPLjava/security/Signature$Delegate;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLjava/security/Signature$Delegate;->engineUpdate([BII)V +HSPLjava/security/Signature$Delegate;->engineVerify([B)Z +HSPLjava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLjava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi; +HSPLjava/security/Signature;->-get0(Ljava/security/Signature;)Ljava/lang/String; +HSPLjava/security/Signature;->-wrap0(Ljava/security/Provider$Service;)Z +HSPLjava/security/Signature;->(Ljava/lang/String;)V +HSPLjava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature; +HSPLjava/security/Signature;->initVerify(Ljava/security/PublicKey;)V +HSPLjava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z +HSPLjava/security/Signature;->update(Ljava/nio/ByteBuffer;)V +HSPLjava/security/Signature;->update([BII)V +HSPLjava/security/Signature;->verify([B)Z +HSPLjava/security/SignatureSpi;->()V +HSPLjava/security/SignatureSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V +HSPLjava/security/cert/CertPath;->(Ljava/lang/String;)V +HSPLjava/security/cert/CertPath;->getCertificates()Ljava/util/List; +HSPLjava/security/cert/CertPath;->getEncoded()[B +HSPLjava/security/cert/CertPath;->getEncoded(Ljava/lang/String;)[B +HSPLjava/security/cert/CertPath;->getEncodings()Ljava/util/Iterator; +HSPLjava/security/cert/CertPath;->getType()Ljava/lang/String; +HSPLjava/security/cert/CertPathChecker;->check(Ljava/security/cert/Certificate;)V +HSPLjava/security/cert/CertPathHelperImpl;->()V +HSPLjava/security/cert/CertPathHelperImpl;->initialize()V +HSPLjava/security/cert/CertPathParameters;->clone()Ljava/lang/Object; +HSPLjava/security/cert/CertPathValidator;->(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjava/security/cert/CertPathValidator;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator; +HSPLjava/security/cert/CertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult; +HSPLjava/security/cert/CertPathValidatorResult;->clone()Ljava/lang/Object; +HSPLjava/security/cert/CertPathValidatorSpi;->()V +HSPLjava/security/cert/CertPathValidatorSpi;->engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult; +HSPLjava/security/cert/Certificate;->(Ljava/lang/String;)V +HSPLjava/security/cert/Certificate;->getEncoded()[B +HSPLjava/security/cert/Certificate;->getPublicKey()Ljava/security/PublicKey; +HSPLjava/security/cert/Certificate;->hashCode()I +HSPLjava/security/cert/Certificate;->toString()Ljava/lang/String; +HSPLjava/security/cert/Certificate;->verify(Ljava/security/PublicKey;)V +HSPLjava/security/cert/Certificate;->verify(Ljava/security/PublicKey;Ljava/lang/String;)V +HSPLjava/security/cert/CertificateFactory;->(Ljava/security/cert/CertificateFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath; +HSPLjava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate; +HSPLjava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory; +HSPLjava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertificateFactory; +HSPLjava/security/cert/CertificateFactorySpi;->()V +HSPLjava/security/cert/CertificateFactorySpi;->engineGenerateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL; +HSPLjava/security/cert/CertificateFactorySpi;->engineGenerateCRLs(Ljava/io/InputStream;)Ljava/util/Collection; +HSPLjava/security/cert/CertificateFactorySpi;->engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate; +HSPLjava/security/cert/CertificateFactorySpi;->engineGenerateCertificates(Ljava/io/InputStream;)Ljava/util/Collection; +HSPLjava/security/cert/Extension;->getId()Ljava/lang/String; +HSPLjava/security/cert/Extension;->getValue()[B +HSPLjava/security/cert/Extension;->isCritical()Z +HSPLjava/security/cert/PKIXCertPathChecker;->()V +HSPLjava/security/cert/PKIXCertPathChecker;->clone()Ljava/lang/Object; +HSPLjava/security/cert/PKIXCertPathValidatorResult;->(Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V +HSPLjava/security/cert/PKIXParameters;->(Ljava/util/Set;)V +HSPLjava/security/cert/PKIXParameters;->addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V +HSPLjava/security/cert/PKIXParameters;->getCertPathCheckers()Ljava/util/List; +HSPLjava/security/cert/PKIXParameters;->getDate()Ljava/util/Date; +HSPLjava/security/cert/PKIXParameters;->getInitialPolicies()Ljava/util/Set; +HSPLjava/security/cert/PKIXParameters;->getPolicyQualifiersRejected()Z +HSPLjava/security/cert/PKIXParameters;->getSigProvider()Ljava/lang/String; +HSPLjava/security/cert/PKIXParameters;->getTargetCertConstraints()Ljava/security/cert/CertSelector; +HSPLjava/security/cert/PKIXParameters;->getTrustAnchors()Ljava/util/Set; +HSPLjava/security/cert/PKIXParameters;->isAnyPolicyInhibited()Z +HSPLjava/security/cert/PKIXParameters;->isExplicitPolicyRequired()Z +HSPLjava/security/cert/PKIXParameters;->isPolicyMappingInhibited()Z +HSPLjava/security/cert/PKIXParameters;->isRevocationEnabled()Z +HSPLjava/security/cert/PKIXParameters;->setRevocationEnabled(Z)V +HSPLjava/security/cert/PKIXParameters;->setTrustAnchors(Ljava/util/Set;)V +HSPLjava/security/cert/PolicyNode;->getChildren()Ljava/util/Iterator; +HSPLjava/security/cert/PolicyNode;->getDepth()I +HSPLjava/security/cert/PolicyNode;->getExpectedPolicies()Ljava/util/Set; +HSPLjava/security/cert/PolicyNode;->getParent()Ljava/security/cert/PolicyNode; +HSPLjava/security/cert/PolicyNode;->getPolicyQualifiers()Ljava/util/Set; +HSPLjava/security/cert/PolicyNode;->getValidPolicy()Ljava/lang/String; +HSPLjava/security/cert/PolicyNode;->isCritical()Z +HSPLjava/security/cert/PolicyQualifierInfo;->([B)V +HSPLjava/security/cert/TrustAnchor;->(Ljava/security/cert/X509Certificate;[B)V +HSPLjava/security/cert/TrustAnchor;->getNameConstraints()[B +HSPLjava/security/cert/TrustAnchor;->getTrustedCert()Ljava/security/cert/X509Certificate; +HSPLjava/security/cert/TrustAnchor;->setNameConstraints([B)V +HSPLjava/security/cert/X509CertSelector;->()V +HSPLjava/security/cert/X509CertSelector;->match(Ljava/security/cert/Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchExtendedKeyUsage(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchKeyUsage(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchNameConstraints(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchPathToNames(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchPolicy(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchPrivateKeyValid(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->setSubject(Ljavax/security/auth/x500/X500Principal;)V +HSPLjava/security/cert/X509Certificate;->()V +HSPLjava/security/cert/X509Certificate;->checkValidity()V +HSPLjava/security/cert/X509Certificate;->checkValidity(Ljava/util/Date;)V +HSPLjava/security/cert/X509Certificate;->getBasicConstraints()I +HSPLjava/security/cert/X509Certificate;->getIssuerDN()Ljava/security/Principal; +HSPLjava/security/cert/X509Certificate;->getIssuerUniqueID()[Z +HSPLjava/security/cert/X509Certificate;->getKeyUsage()[Z +HSPLjava/security/cert/X509Certificate;->getNotAfter()Ljava/util/Date; +HSPLjava/security/cert/X509Certificate;->getNotBefore()Ljava/util/Date; +HSPLjava/security/cert/X509Certificate;->getSerialNumber()Ljava/math/BigInteger; +HSPLjava/security/cert/X509Certificate;->getSigAlgName()Ljava/lang/String; +HSPLjava/security/cert/X509Certificate;->getSigAlgOID()Ljava/lang/String; +HSPLjava/security/cert/X509Certificate;->getSigAlgParams()[B +HSPLjava/security/cert/X509Certificate;->getSignature()[B +HSPLjava/security/cert/X509Certificate;->getSubjectDN()Ljava/security/Principal; +HSPLjava/security/cert/X509Certificate;->getSubjectUniqueID()[Z +HSPLjava/security/cert/X509Certificate;->getTBSCertificate()[B +HSPLjava/security/cert/X509Certificate;->getVersion()I +HSPLjava/security/cert/X509Extension;->getCriticalExtensionOIDs()Ljava/util/Set; +HSPLjava/security/cert/X509Extension;->getExtensionValue(Ljava/lang/String;)[B +HSPLjava/security/cert/X509Extension;->getNonCriticalExtensionOIDs()Ljava/util/Set; +HSPLjava/security/cert/X509Extension;->hasUnsupportedCriticalExtension()Z +HSPLjava/security/interfaces/DSAKey;->getParams()Ljava/security/interfaces/DSAParams; +HSPLjava/security/interfaces/DSAParams;->getG()Ljava/math/BigInteger; +HSPLjava/security/interfaces/DSAParams;->getP()Ljava/math/BigInteger; +HSPLjava/security/interfaces/DSAParams;->getQ()Ljava/math/BigInteger; +HSPLjava/security/interfaces/DSAPublicKey;->getY()Ljava/math/BigInteger; +HSPLjava/security/interfaces/ECKey;->getParams()Ljava/security/spec/ECParameterSpec; +HSPLjava/security/interfaces/ECPublicKey;->getW()Ljava/security/spec/ECPoint; +HSPLjava/security/interfaces/RSAKey;->getModulus()Ljava/math/BigInteger; +HSPLjava/security/interfaces/RSAPrivateKey;->getPrivateExponent()Ljava/math/BigInteger; +HSPLjava/security/interfaces/RSAPublicKey;->getPublicExponent()Ljava/math/BigInteger; +HSPLjava/security/spec/DSAParameterSpec;->(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V +HSPLjava/security/spec/DSAParameterSpec;->getG()Ljava/math/BigInteger; +HSPLjava/security/spec/DSAParameterSpec;->getP()Ljava/math/BigInteger; +HSPLjava/security/spec/DSAParameterSpec;->getQ()Ljava/math/BigInteger; +HSPLjava/security/spec/ECField;->getFieldSize()I +HSPLjava/security/spec/ECFieldFp;->(Ljava/math/BigInteger;)V +HSPLjava/security/spec/ECFieldFp;->getFieldSize()I +HSPLjava/security/spec/ECFieldFp;->getP()Ljava/math/BigInteger; +HSPLjava/security/spec/ECParameterSpec;->(Ljava/security/spec/EllipticCurve;Ljava/security/spec/ECPoint;Ljava/math/BigInteger;I)V +HSPLjava/security/spec/ECParameterSpec;->getCurve()Ljava/security/spec/EllipticCurve; +HSPLjava/security/spec/ECParameterSpec;->getOrder()Ljava/math/BigInteger; +HSPLjava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V +HSPLjava/security/spec/ECPoint;->()V +HSPLjava/security/spec/ECPoint;->(Ljava/math/BigInteger;Ljava/math/BigInteger;)V +HSPLjava/security/spec/EllipticCurve;->(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;)V +HSPLjava/security/spec/EllipticCurve;->(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V +HSPLjava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V +HSPLjava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField; +HSPLjava/security/spec/EncodedKeySpec;->([B)V +HSPLjava/security/spec/EncodedKeySpec;->getEncoded()[B +HSPLjava/security/spec/EncodedKeySpec;->getFormat()Ljava/lang/String; +HSPLjava/security/spec/InvalidKeySpecException;->(Ljava/lang/String;)V +HSPLjava/security/spec/X509EncodedKeySpec;->([B)V +HSPLjava/security/spec/X509EncodedKeySpec;->getEncoded()[B +HSPLjava/sql/Timestamp;->(J)V +HSPLjava/sql/Timestamp;->toString()Ljava/lang/String; +HSPLjava/text/AttributedCharacterIterator$Attribute;->(Ljava/lang/String;)V +HSPLjava/text/AttributedCharacterIterator$Attribute;->equals(Ljava/lang/Object;)Z +HSPLjava/text/BreakIterator;->()V +HSPLjava/text/BreakIterator;->current()I +HSPLjava/text/BreakIterator;->first()I +HSPLjava/text/BreakIterator;->following(I)I +HSPLjava/text/BreakIterator;->getText()Ljava/text/CharacterIterator; +HSPLjava/text/BreakIterator;->getWordInstance()Ljava/text/BreakIterator; +HSPLjava/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Ljava/text/BreakIterator; +HSPLjava/text/BreakIterator;->last()I +HSPLjava/text/BreakIterator;->next()I +HSPLjava/text/BreakIterator;->next(I)I +HSPLjava/text/BreakIterator;->previous()I +HSPLjava/text/BreakIterator;->setText(Ljava/text/CharacterIterator;)V +HSPLjava/text/CalendarBuilder;->()V +HSPLjava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar; +HSPLjava/text/CalendarBuilder;->isSet(I)Z +HSPLjava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder; +HSPLjava/text/CharacterIterator;->clone()Ljava/lang/Object; +HSPLjava/text/CharacterIterator;->current()C +HSPLjava/text/CharacterIterator;->first()C +HSPLjava/text/CharacterIterator;->getBeginIndex()I +HSPLjava/text/CharacterIterator;->getEndIndex()I +HSPLjava/text/CharacterIterator;->getIndex()I +HSPLjava/text/CharacterIterator;->last()C +HSPLjava/text/CharacterIterator;->next()C +HSPLjava/text/CharacterIterator;->previous()C +HSPLjava/text/CharacterIterator;->setIndex(I)C +HSPLjava/text/Collator;->(Landroid/icu/text/Collator;)V +HSPLjava/text/Collator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLjava/text/Collator;->getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey; +HSPLjava/text/Collator;->getInstance()Ljava/text/Collator; +HSPLjava/text/Collator;->getInstance(Ljava/util/Locale;)Ljava/text/Collator; +HSPLjava/text/Collator;->hashCode()I +HSPLjava/text/Collator;->setStrength(I)V +HSPLjava/text/DateFormat$Field;->(Ljava/lang/String;I)V +HSPLjava/text/DateFormat;->()V +HSPLjava/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String; +HSPLjava/text/DateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat; +HSPLjava/text/DateFormat;->getDateTimeInstance()Ljava/text/DateFormat; +HSPLjava/text/DateFormat;->getDateTimeInstance(II)Ljava/text/DateFormat; +HSPLjava/text/DateFormat;->getTimeInstance(I)Ljava/text/DateFormat; +HSPLjava/text/DateFormat;->getTimeInstance(ILjava/util/Locale;)Ljava/text/DateFormat; +HSPLjava/text/DateFormat;->getTimeZone()Ljava/util/TimeZone; +HSPLjava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date; +HSPLjava/text/DateFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date; +HSPLjava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V +HSPLjava/text/DateFormat;->setTimeZone(Ljava/util/TimeZone;)V +HSPLjava/text/DateFormatSymbols;->()V +HSPLjava/text/DateFormatSymbols;->(Ljava/util/Locale;)V +HSPLjava/text/DateFormatSymbols;->copyMembers(Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;)V +HSPLjava/text/DateFormatSymbols;->getAmPmStrings()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getCachedInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols; +HSPLjava/text/DateFormatSymbols;->getInstanceRef(Ljava/util/Locale;)Ljava/text/DateFormatSymbols; +HSPLjava/text/DateFormatSymbols;->getLocalPatternChars()Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getMonths()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getShortMonths()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getShortStandAloneMonths()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getShortWeekdays()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->getWeekdays()[Ljava/lang/String; +HSPLjava/text/DateFormatSymbols;->initializeData(Ljava/util/Locale;)V +HSPLjava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V +HSPLjava/text/DecimalFormat;->(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V +HSPLjava/text/DecimalFormat;->clone()Ljava/lang/Object; +HSPLjava/text/DecimalFormat;->equals(Ljava/lang/Object;)Z +HSPLjava/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition; +HSPLjava/text/DecimalFormat;->getMaximumFractionDigits()I +HSPLjava/text/DecimalFormat;->getMaximumIntegerDigits()I +HSPLjava/text/DecimalFormat;->getMinimumFractionDigits()I +HSPLjava/text/DecimalFormat;->getMinimumIntegerDigits()I +HSPLjava/text/DecimalFormat;->init(Ljava/lang/String;)V +HSPLjava/text/DecimalFormat;->isParseBigDecimal()Z +HSPLjava/text/DecimalFormat;->isParseIntegerOnly()Z +HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number; +HSPLjava/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V +HSPLjava/text/DecimalFormat;->setGroupingUsed(Z)V +HSPLjava/text/DecimalFormat;->setMaximumFractionDigits(I)V +HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLjava/text/DecimalFormat;->setMinimumFractionDigits(I)V +HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V +HSPLjava/text/DecimalFormat;->setParseIntegerOnly(Z)V +HSPLjava/text/DecimalFormat;->toPattern()Ljava/lang/String; +HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V +HSPLjava/text/DecimalFormatSymbols;->(Ljava/util/Locale;)V +HSPLjava/text/DecimalFormatSymbols;->clone()Ljava/lang/Object; +HSPLjava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->getDecimalSeparator()C +HSPLjava/text/DecimalFormatSymbols;->getGroupingSeparator()C +HSPLjava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->getInstance()Ljava/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->getZeroDigit()C +HSPLjava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V +HSPLjava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C +HSPLjava/text/DecimalFormatSymbols;->setCurrency(Ljava/util/Currency;)V +HSPLjava/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setDecimalSeparator(C)V +HSPLjava/text/DecimalFormatSymbols;->setDigit(C)V +HSPLjava/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setGroupingSeparator(C)V +HSPLjava/text/DecimalFormatSymbols;->setInfinity(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setMinusSign(C)V +HSPLjava/text/DecimalFormatSymbols;->setMonetaryDecimalSeparator(C)V +HSPLjava/text/DecimalFormatSymbols;->setNaN(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setPatternSeparator(C)V +HSPLjava/text/DecimalFormatSymbols;->setPerMill(C)V +HSPLjava/text/DecimalFormatSymbols;->setPercent(C)V +HSPLjava/text/DecimalFormatSymbols;->setZeroDigit(C)V +HSPLjava/text/DontCareFieldPosition$1;->(Ljava/text/DontCareFieldPosition;)V +HSPLjava/text/DontCareFieldPosition$1;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V +HSPLjava/text/DontCareFieldPosition;->()V +HSPLjava/text/DontCareFieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate; +HSPLjava/text/FieldPosition$Delegate;->(Ljava/text/FieldPosition;)V +HSPLjava/text/FieldPosition$Delegate;->(Ljava/text/FieldPosition;Ljava/text/FieldPosition$Delegate;)V +HSPLjava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V +HSPLjava/text/FieldPosition;->-wrap1(Ljava/text/FieldPosition;Ljava/text/Format$Field;I)Z +HSPLjava/text/FieldPosition;->(I)V +HSPLjava/text/FieldPosition;->(Ljava/text/Format$Field;I)V +HSPLjava/text/FieldPosition;->getBeginIndex()I +HSPLjava/text/FieldPosition;->getEndIndex()I +HSPLjava/text/FieldPosition;->getField()I +HSPLjava/text/FieldPosition;->getFieldAttribute()Ljava/text/Format$Field; +HSPLjava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate; +HSPLjava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z +HSPLjava/text/FieldPosition;->setBeginIndex(I)V +HSPLjava/text/FieldPosition;->setEndIndex(I)V +HSPLjava/text/Format$Field;->(Ljava/lang/String;)V +HSPLjava/text/Format$FieldDelegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V +HSPLjava/text/Format$FieldDelegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V +HSPLjava/text/Format;->()V +HSPLjava/text/Format;->clone()Ljava/lang/Object; +HSPLjava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/text/Format;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/Format;->parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object; +HSPLjava/text/IcuIteratorWrapper;->(Landroid/icu/text/BreakIterator;)V +HSPLjava/text/MessageFormat$Field;->(Ljava/lang/String;)V +HSPLjava/text/MessageFormat;->(Ljava/lang/String;)V +HSPLjava/text/MessageFormat;->applyPattern(Ljava/lang/String;)V +HSPLjava/text/MessageFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/MessageFormat;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V +HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLjava/text/Normalizer$Form;->-get0(Ljava/text/Normalizer$Form;)Landroid/icu/text/Normalizer$Mode; +HSPLjava/text/Normalizer$Form;->(Ljava/lang/String;ILandroid/icu/text/Normalizer$Mode;)V +HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String; +HSPLjava/text/NumberFormat;->()V +HSPLjava/text/NumberFormat;->clone()Ljava/lang/Object; +HSPLjava/text/NumberFormat;->format(D)Ljava/lang/String; +HSPLjava/text/NumberFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/NumberFormat;->format(J)Ljava/lang/String; +HSPLjava/text/NumberFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat; +HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;I)Ljava/text/NumberFormat; +HSPLjava/text/NumberFormat;->getIntegerInstance()Ljava/text/NumberFormat; +HSPLjava/text/NumberFormat;->getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat; +HSPLjava/text/NumberFormat;->getPercentInstance()Ljava/text/NumberFormat; +HSPLjava/text/NumberFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number; +HSPLjava/text/NumberFormat;->setMaximumFractionDigits(I)V +HSPLjava/text/NumberFormat;->setMaximumIntegerDigits(I)V +HSPLjava/text/NumberFormat;->setMinimumFractionDigits(I)V +HSPLjava/text/NumberFormat;->setMinimumIntegerDigits(I)V +HSPLjava/text/NumberFormat;->setParseIntegerOnly(Z)V +HSPLjava/text/ParseException;->(Ljava/lang/String;I)V +HSPLjava/text/ParsePosition;->(I)V +HSPLjava/text/ParsePosition;->getIndex()I +HSPLjava/text/ParsePosition;->setIndex(I)V +HSPLjava/text/RuleBasedCollator;->(Landroid/icu/text/RuleBasedCollator;)V +HSPLjava/text/SimpleDateFormat;->()V +HSPLjava/text/SimpleDateFormat;->(IILjava/util/Locale;)V +HSPLjava/text/SimpleDateFormat;->(Ljava/lang/String;)V +HSPLjava/text/SimpleDateFormat;->(Ljava/lang/String;Ljava/util/Locale;)V +HSPLjava/text/SimpleDateFormat;->checkNegativeNumberExpression()V +HSPLjava/text/SimpleDateFormat;->compile(Ljava/lang/String;)[C +HSPLjava/text/SimpleDateFormat;->encode(IILjava/lang/StringBuilder;)V +HSPLjava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/Format$FieldDelegate;)Ljava/lang/StringBuffer; +HSPLjava/text/SimpleDateFormat;->formatMonth(IIILjava/lang/StringBuffer;ZZ)Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->getCalendarName()Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V +HSPLjava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V +HSPLjava/text/SimpleDateFormat;->initializeDefaultCentury()V +HSPLjava/text/SimpleDateFormat;->isGregorianCalendar()Z +HSPLjava/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/text/CalendarBuilder;)I +HSPLjava/text/SimpleDateFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date; +HSPLjava/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V +HSPLjava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date; +HSPLjava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I +HSPLjava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I +HSPLjava/text/SimpleDateFormat;->set2DigitYearStart(Ljava/util/Date;)V +HSPLjava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V +HSPLjava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I +HSPLjava/text/SimpleDateFormat;->toLocalizedPattern()Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->toPattern()Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/text/SimpleDateFormat;->useDateFormatSymbols()Z +HSPLjava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V +HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;)V +HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;I)V +HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;III)V +HSPLjava/text/StringCharacterIterator;->clone()Ljava/lang/Object; +HSPLjava/time/Clock$SystemClock;->(Ljava/time/ZoneId;)V +HSPLjava/time/Clock$SystemClock;->getZone()Ljava/time/ZoneId; +HSPLjava/time/Clock$SystemClock;->instant()Ljava/time/Instant; +HSPLjava/time/Clock$SystemClock;->millis()J +HSPLjava/time/Clock;->()V +HSPLjava/time/Clock;->getZone()Ljava/time/ZoneId; +HSPLjava/time/Clock;->instant()Ljava/time/Instant; +HSPLjava/time/Clock;->systemDefaultZone()Ljava/time/Clock; +HSPLjava/time/Clock;->withZone(Ljava/time/ZoneId;)Ljava/time/Clock; +HSPLjava/time/DayOfWeek;->(Ljava/lang/String;I)V +HSPLjava/time/DayOfWeek;->getValue()I +HSPLjava/time/DayOfWeek;->of(I)Ljava/time/DayOfWeek; +HSPLjava/time/DayOfWeek;->plus(J)Ljava/time/DayOfWeek; +HSPLjava/time/DayOfWeek;->values()[Ljava/time/DayOfWeek; +HSPLjava/time/Duration;->(JI)V +HSPLjava/time/Duration;->create(JI)Ljava/time/Duration; +HSPLjava/time/Duration;->ofNanos(J)Ljava/time/Duration; +HSPLjava/time/Duration;->ofSeconds(J)Ljava/time/Duration; +HSPLjava/time/Duration;->ofSeconds(JJ)Ljava/time/Duration; +HSPLjava/time/Instant;->(JI)V +HSPLjava/time/Instant;->create(JI)Ljava/time/Instant; +HSPLjava/time/Instant;->getEpochSecond()J +HSPLjava/time/Instant;->getNano()I +HSPLjava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant; +HSPLjava/time/Instant;->ofEpochSecond(JJ)Ljava/time/Instant; +HSPLjava/time/LocalDate;->-getjava-time-temporal-ChronoFieldSwitchesValues()[I +HSPLjava/time/LocalDate;->-getjava-time-temporal-ChronoUnitSwitchesValues()[I +HSPLjava/time/LocalDate;->(III)V +HSPLjava/time/LocalDate;->create(III)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->get(Ljava/time/temporal/TemporalField;)I +HSPLjava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I +HSPLjava/time/LocalDate;->getDayOfWeek()Ljava/time/DayOfWeek; +HSPLjava/time/LocalDate;->getYear()I +HSPLjava/time/LocalDate;->isLeapYear()Z +HSPLjava/time/LocalDate;->of(III)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->of(ILjava/time/Month;I)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->ofEpochDay(J)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/temporal/Temporal; +HSPLjava/time/LocalDate;->plusDays(J)Ljava/time/LocalDate; +HSPLjava/time/LocalDate;->toEpochDay()J +HSPLjava/time/LocalDate;->toString()Ljava/lang/String; +HSPLjava/time/LocalDate;->with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/LocalDate; +HSPLjava/time/LocalDateTime;->(Ljava/time/LocalDate;Ljava/time/LocalTime;)V +HSPLjava/time/LocalDateTime;->now()Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->now(Ljava/time/Clock;)Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->ofEpochSecond(JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->plusSeconds(J)Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->plusWithOverflow(Ljava/time/LocalDate;JJJJI)Ljava/time/LocalDateTime; +HSPLjava/time/LocalDateTime;->toLocalDate()Ljava/time/LocalDate; +HSPLjava/time/LocalDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/LocalDateTime;->toLocalTime()Ljava/time/LocalTime; +HSPLjava/time/LocalDateTime;->toString()Ljava/lang/String; +HSPLjava/time/LocalDateTime;->with(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime; +HSPLjava/time/LocalTime;->(IIII)V +HSPLjava/time/LocalTime;->create(IIII)Ljava/time/LocalTime; +HSPLjava/time/LocalTime;->ofNanoOfDay(J)Ljava/time/LocalTime; +HSPLjava/time/LocalTime;->ofSecondOfDay(J)Ljava/time/LocalTime; +HSPLjava/time/LocalTime;->toNanoOfDay()J +HSPLjava/time/LocalTime;->toSecondOfDay()I +HSPLjava/time/LocalTime;->toString()Ljava/lang/String; +HSPLjava/time/Month;->(Ljava/lang/String;I)V +HSPLjava/time/Month;->getValue()I +HSPLjava/time/Month;->plus(J)Ljava/time/Month; +HSPLjava/time/Month;->values()[Ljava/time/Month; +HSPLjava/time/ZoneId;->()V +HSPLjava/time/ZoneId;->of(Ljava/lang/String;)Ljava/time/ZoneId; +HSPLjava/time/ZoneId;->of(Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId; +HSPLjava/time/ZoneId;->of(Ljava/lang/String;Z)Ljava/time/ZoneId; +HSPLjava/time/ZoneId;->systemDefault()Ljava/time/ZoneId; +HSPLjava/time/ZoneOffset;->(I)V +HSPLjava/time/ZoneOffset;->buildId(I)Ljava/lang/String; +HSPLjava/time/ZoneOffset;->getId()Ljava/lang/String; +HSPLjava/time/ZoneOffset;->getTotalSeconds()I +HSPLjava/time/ZoneOffset;->ofTotalSeconds(I)Ljava/time/ZoneOffset; +HSPLjava/time/ZoneRegion;->(Ljava/lang/String;Ljava/time/zone/ZoneRules;)V +HSPLjava/time/ZoneRegion;->checkName(Ljava/lang/String;)V +HSPLjava/time/ZoneRegion;->getRules()Ljava/time/zone/ZoneRules; +HSPLjava/time/ZoneRegion;->ofId(Ljava/lang/String;Z)Ljava/time/ZoneRegion; +HSPLjava/time/chrono/-$Lambda$2u9I1kadVYC2Q_h8lznNWkqzo1s;->(B)V +HSPLjava/time/chrono/AbstractChronology;->()V +HSPLjava/time/chrono/ChronoLocalDate;->equals(Ljava/lang/Object;)Z +HSPLjava/time/chrono/ChronoLocalDate;->getChronology()Ljava/time/chrono/Chronology; +HSPLjava/time/chrono/ChronoLocalDate;->hashCode()I +HSPLjava/time/chrono/ChronoLocalDate;->lengthOfMonth()I +HSPLjava/time/chrono/ChronoLocalDate;->toString()Ljava/lang/String; +HSPLjava/time/chrono/ChronoLocalDate;->until(Ljava/time/chrono/ChronoLocalDate;)Ljava/time/chrono/ChronoPeriod; +HSPLjava/time/chrono/ChronoLocalDate;->until(Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalUnit;)J +HSPLjava/time/chrono/ChronoLocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime; +HSPLjava/time/chrono/ChronoLocalDateTime;->equals(Ljava/lang/Object;)Z +HSPLjava/time/chrono/ChronoLocalDateTime;->hashCode()I +HSPLjava/time/chrono/ChronoLocalDateTime;->isSupported(Ljava/time/temporal/TemporalField;)Z +HSPLjava/time/chrono/ChronoLocalDateTime;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/chrono/ChronoLocalDateTime; +HSPLjava/time/chrono/ChronoLocalDateTime;->toEpochSecond(Ljava/time/ZoneOffset;)J +HSPLjava/time/chrono/ChronoLocalDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/ChronoLocalDateTime;->toLocalTime()Ljava/time/LocalTime; +HSPLjava/time/chrono/ChronoLocalDateTime;->toString()Ljava/lang/String; +HSPLjava/time/chrono/ChronoLocalDateTime;->with(Ljava/time/temporal/TemporalField;J)Ljava/time/chrono/ChronoLocalDateTime; +HSPLjava/time/chrono/Chronology;->compareTo(Ljava/time/chrono/Chronology;)I +HSPLjava/time/chrono/Chronology;->date(III)Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/Chronology;->date(Ljava/time/temporal/TemporalAccessor;)Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/Chronology;->dateEpochDay(J)Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/Chronology;->dateYearDay(II)Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/Chronology;->equals(Ljava/lang/Object;)Z +HSPLjava/time/chrono/Chronology;->eraOf(I)Ljava/time/chrono/Era; +HSPLjava/time/chrono/Chronology;->eras()Ljava/util/List; +HSPLjava/time/chrono/Chronology;->getCalendarType()Ljava/lang/String; +HSPLjava/time/chrono/Chronology;->getId()Ljava/lang/String; +HSPLjava/time/chrono/Chronology;->hashCode()I +HSPLjava/time/chrono/Chronology;->isLeapYear(J)Z +HSPLjava/time/chrono/Chronology;->prolepticYear(Ljava/time/chrono/Era;I)I +HSPLjava/time/chrono/Chronology;->range(Ljava/time/temporal/ChronoField;)Ljava/time/temporal/ValueRange; +HSPLjava/time/chrono/Chronology;->resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; +HSPLjava/time/chrono/Chronology;->toString()Ljava/lang/String; +HSPLjava/time/chrono/IsoChronology;->()V +HSPLjava/time/chrono/IsoChronology;->isLeapYear(J)Z +HSPLjava/time/temporal/-$Lambda$OLNcPvjff81GnHHsYVRY4mMpF30$2;->$m$1(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/-$Lambda$OLNcPvjff81GnHHsYVRY4mMpF30$2;->(BI)V +HSPLjava/time/temporal/-$Lambda$OLNcPvjff81GnHHsYVRY4mMpF30$2;->adjustInto(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/ChronoField;->(Ljava/lang/String;ILjava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V +HSPLjava/time/temporal/ChronoField;->(Ljava/lang/String;ILjava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;Ljava/lang/String;)V +HSPLjava/time/temporal/ChronoField;->checkValidIntValue(J)I +HSPLjava/time/temporal/ChronoField;->checkValidValue(J)J +HSPLjava/time/temporal/ChronoField;->range()Ljava/time/temporal/ValueRange; +HSPLjava/time/temporal/ChronoField;->values()[Ljava/time/temporal/ChronoField; +HSPLjava/time/temporal/ChronoUnit;->(Ljava/lang/String;ILjava/lang/String;Ljava/time/Duration;)V +HSPLjava/time/temporal/ChronoUnit;->values()[Ljava/time/temporal/ChronoUnit; +HSPLjava/time/temporal/TemporalAdjusters;->lambda$-java_time_temporal_TemporalAdjusters_18421(ILjava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/TemporalAdjusters;->nextOrSame(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster; +HSPLjava/time/temporal/TemporalAmount;->addTo(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/TemporalAmount;->get(Ljava/time/temporal/TemporalUnit;)J +HSPLjava/time/temporal/TemporalAmount;->getUnits()Ljava/util/List; +HSPLjava/time/temporal/TemporalAmount;->subtractFrom(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/TemporalField;->adjustInto(Ljava/time/temporal/Temporal;J)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/TemporalField;->getBaseUnit()Ljava/time/temporal/TemporalUnit; +HSPLjava/time/temporal/TemporalField;->getFrom(Ljava/time/temporal/TemporalAccessor;)J +HSPLjava/time/temporal/TemporalField;->getRangeUnit()Ljava/time/temporal/TemporalUnit; +HSPLjava/time/temporal/TemporalField;->isDateBased()Z +HSPLjava/time/temporal/TemporalField;->isSupportedBy(Ljava/time/temporal/TemporalAccessor;)Z +HSPLjava/time/temporal/TemporalField;->isTimeBased()Z +HSPLjava/time/temporal/TemporalField;->range()Ljava/time/temporal/ValueRange; +HSPLjava/time/temporal/TemporalField;->rangeRefinedBy(Ljava/time/temporal/TemporalAccessor;)Ljava/time/temporal/ValueRange; +HSPLjava/time/temporal/TemporalField;->toString()Ljava/lang/String; +HSPLjava/time/temporal/TemporalUnit;->addTo(Ljava/time/temporal/Temporal;J)Ljava/time/temporal/Temporal; +HSPLjava/time/temporal/TemporalUnit;->between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)J +HSPLjava/time/temporal/TemporalUnit;->getDuration()Ljava/time/Duration; +HSPLjava/time/temporal/TemporalUnit;->isDateBased()Z +HSPLjava/time/temporal/TemporalUnit;->isDurationEstimated()Z +HSPLjava/time/temporal/TemporalUnit;->isTimeBased()Z +HSPLjava/time/temporal/TemporalUnit;->toString()Ljava/lang/String; +HSPLjava/time/temporal/ValueRange;->(JJJJ)V +HSPLjava/time/temporal/ValueRange;->checkValidIntValue(JLjava/time/temporal/TemporalField;)I +HSPLjava/time/temporal/ValueRange;->checkValidValue(JLjava/time/temporal/TemporalField;)J +HSPLjava/time/temporal/ValueRange;->getMaximum()J +HSPLjava/time/temporal/ValueRange;->getMinimum()J +HSPLjava/time/temporal/ValueRange;->isIntValue()Z +HSPLjava/time/temporal/ValueRange;->isValidIntValue(J)Z +HSPLjava/time/temporal/ValueRange;->isValidValue(J)Z +HSPLjava/time/temporal/ValueRange;->of(JJ)Ljava/time/temporal/ValueRange; +HSPLjava/time/temporal/ValueRange;->of(JJJ)Ljava/time/temporal/ValueRange; +HSPLjava/time/temporal/ValueRange;->of(JJJJ)Ljava/time/temporal/ValueRange; +HSPLjava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;->(I)V +HSPLjava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;->create(Ljava/lang/String;)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/IcuZoneRulesProvider;->()V +HSPLjava/time/zone/IcuZoneRulesProvider;->generateZoneRules(Ljava/lang/String;)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/IcuZoneRulesProvider;->millisToOffset(I)Ljava/time/ZoneOffset; +HSPLjava/time/zone/IcuZoneRulesProvider;->provideRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/IcuZoneRulesProvider;->provideZoneIds()Ljava/util/Set; +HSPLjava/time/zone/IcuZoneRulesProvider;->toZoneOffsetTransitionRule(Landroid/icu/util/AnnualTimeZoneRule;I)Ljava/time/zone/ZoneOffsetTransitionRule; +HSPLjava/time/zone/IcuZoneRulesProvider;->verify(ZLjava/lang/String;Ljava/lang/String;)V +HSPLjava/time/zone/ZoneOffsetTransition;->(JLjava/time/ZoneOffset;Ljava/time/ZoneOffset;)V +HSPLjava/time/zone/ZoneOffsetTransition;->(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V +HSPLjava/time/zone/ZoneOffsetTransition;->getDateTimeAfter()Ljava/time/LocalDateTime; +HSPLjava/time/zone/ZoneOffsetTransition;->getDateTimeBefore()Ljava/time/LocalDateTime; +HSPLjava/time/zone/ZoneOffsetTransition;->getDurationSeconds()I +HSPLjava/time/zone/ZoneOffsetTransition;->getOffsetAfter()Ljava/time/ZoneOffset; +HSPLjava/time/zone/ZoneOffsetTransition;->getOffsetBefore()Ljava/time/ZoneOffset; +HSPLjava/time/zone/ZoneOffsetTransition;->isGap()Z +HSPLjava/time/zone/ZoneOffsetTransition;->toEpochSecond()J +HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->-getjava-time-zone-ZoneOffsetTransitionRule$TimeDefinitionSwitchesValues()[I +HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->(Ljava/lang/String;I)V +HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->createDateTime(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/LocalDateTime; +HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->values()[Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition; +HSPLjava/time/zone/ZoneOffsetTransitionRule;->(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V +HSPLjava/time/zone/ZoneOffsetTransitionRule;->createTransition(I)Ljava/time/zone/ZoneOffsetTransition; +HSPLjava/time/zone/ZoneOffsetTransitionRule;->of(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransitionRule; +HSPLjava/time/zone/ZoneRules;->(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V +HSPLjava/time/zone/ZoneRules;->findTransitionArray(I)[Ljava/time/zone/ZoneOffsetTransition; +HSPLjava/time/zone/ZoneRules;->findYear(JLjava/time/ZoneOffset;)I +HSPLjava/time/zone/ZoneRules;->getOffset(Ljava/time/Instant;)Ljava/time/ZoneOffset; +HSPLjava/time/zone/ZoneRules;->of(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/ZoneRulesProvider;->()V +HSPLjava/time/zone/ZoneRulesProvider;->getProvider(Ljava/lang/String;)Ljava/time/zone/ZoneRulesProvider; +HSPLjava/time/zone/ZoneRulesProvider;->getRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/ZoneRulesProvider;->provideRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules; +HSPLjava/time/zone/ZoneRulesProvider;->provideVersions(Ljava/lang/String;)Ljava/util/NavigableMap; +HSPLjava/time/zone/ZoneRulesProvider;->provideZoneIds()Ljava/util/Set; +HSPLjava/time/zone/ZoneRulesProvider;->registerProvider(Ljava/time/zone/ZoneRulesProvider;)V +HSPLjava/time/zone/ZoneRulesProvider;->registerProvider0(Ljava/time/zone/ZoneRulesProvider;)V +HSPLjava/util/-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk;->$m$2(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk;->(BLjava/lang/Object;)V +HSPLjava/util/-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/AbstractCollection;->()V +HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractCollection;->clear()V +HSPLjava/util/AbstractCollection;->contains(Ljava/lang/Object;)Z +HSPLjava/util/AbstractCollection;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractCollection;->isEmpty()Z +HSPLjava/util/AbstractCollection;->removeAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractCollection;->toArray()[Ljava/lang/Object; +HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String; +HSPLjava/util/AbstractList$Itr;->(Ljava/util/AbstractList;)V +HSPLjava/util/AbstractList$Itr;->(Ljava/util/AbstractList;Ljava/util/AbstractList$Itr;)V +HSPLjava/util/AbstractList$Itr;->checkForComodification()V +HSPLjava/util/AbstractList$Itr;->hasNext()Z +HSPLjava/util/AbstractList$Itr;->next()Ljava/lang/Object; +HSPLjava/util/AbstractList$ListItr;->(Ljava/util/AbstractList;I)V +HSPLjava/util/AbstractList;->()V +HSPLjava/util/AbstractList;->add(Ljava/lang/Object;)Z +HSPLjava/util/AbstractList;->equals(Ljava/lang/Object;)Z +HSPLjava/util/AbstractList;->hashCode()I +HSPLjava/util/AbstractList;->iterator()Ljava/util/Iterator; +HSPLjava/util/AbstractList;->listIterator()Ljava/util/ListIterator; +HSPLjava/util/AbstractList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/AbstractList;->rangeCheckForAdd(I)V +HSPLjava/util/AbstractMap$SimpleEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/AbstractMap$SimpleEntry;->getValue()Ljava/lang/Object; +HSPLjava/util/AbstractMap$SimpleImmutableEntry;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/AbstractMap$SimpleImmutableEntry;->(Ljava/util/Map$Entry;)V +HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getKey()Ljava/lang/Object; +HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getValue()Ljava/lang/Object; +HSPLjava/util/AbstractMap;->()V +HSPLjava/util/AbstractMap;->clear()V +HSPLjava/util/AbstractMap;->clone()Ljava/lang/Object; +HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z +HSPLjava/util/AbstractMap;->hashCode()I +HSPLjava/util/AbstractMap;->isEmpty()Z +HSPLjava/util/AbstractMap;->toString()Ljava/lang/String; +HSPLjava/util/AbstractQueue;->()V +HSPLjava/util/AbstractQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractQueue;->clear()V +HSPLjava/util/AbstractQueue;->remove()Ljava/lang/Object; +HSPLjava/util/AbstractSequentialList;->()V +HSPLjava/util/AbstractSequentialList;->iterator()Ljava/util/Iterator; +HSPLjava/util/AbstractSequentialList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/AbstractSet;->()V +HSPLjava/util/AbstractSet;->equals(Ljava/lang/Object;)Z +HSPLjava/util/AbstractSet;->hashCode()I +HSPLjava/util/AbstractSet;->removeAll(Ljava/util/Collection;)Z +HSPLjava/util/ArrayDeque$DeqIterator;->(Ljava/util/ArrayDeque;)V +HSPLjava/util/ArrayDeque$DeqIterator;->(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$DeqIterator;)V +HSPLjava/util/ArrayDeque$DeqIterator;->hasNext()Z +HSPLjava/util/ArrayDeque$DeqIterator;->next()Ljava/lang/Object; +HSPLjava/util/ArrayDeque$DeqIterator;->remove()V +HSPLjava/util/ArrayDeque;->()V +HSPLjava/util/ArrayDeque;->(I)V +HSPLjava/util/ArrayDeque;->(Ljava/util/Collection;)V +HSPLjava/util/ArrayDeque;->add(Ljava/lang/Object;)Z +HSPLjava/util/ArrayDeque;->addFirst(Ljava/lang/Object;)V +HSPLjava/util/ArrayDeque;->addLast(Ljava/lang/Object;)V +HSPLjava/util/ArrayDeque;->allocateElements(I)V +HSPLjava/util/ArrayDeque;->checkInvariants()V +HSPLjava/util/ArrayDeque;->clear()V +HSPLjava/util/ArrayDeque;->delete(I)Z +HSPLjava/util/ArrayDeque;->doubleCapacity()V +HSPLjava/util/ArrayDeque;->getFirst()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->isEmpty()Z +HSPLjava/util/ArrayDeque;->iterator()Ljava/util/Iterator; +HSPLjava/util/ArrayDeque;->offer(Ljava/lang/Object;)Z +HSPLjava/util/ArrayDeque;->offerLast(Ljava/lang/Object;)Z +HSPLjava/util/ArrayDeque;->peek()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->peekFirst()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->peekLast()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->poll()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->pollFirst()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->pollLast()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->pop()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->push(Ljava/lang/Object;)V +HSPLjava/util/ArrayDeque;->remove()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->remove(Ljava/lang/Object;)Z +HSPLjava/util/ArrayDeque;->removeFirst()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->removeFirstOccurrence(Ljava/lang/Object;)Z +HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->size()I +HSPLjava/util/ArrayDeque;->toArray()[Ljava/lang/Object; +HSPLjava/util/ArrayList$Itr;->(Ljava/util/ArrayList;)V +HSPLjava/util/ArrayList$Itr;->(Ljava/util/ArrayList;Ljava/util/ArrayList$Itr;)V +HSPLjava/util/ArrayList$Itr;->hasNext()Z +HSPLjava/util/ArrayList$Itr;->next()Ljava/lang/Object; +HSPLjava/util/ArrayList$Itr;->remove()V +HSPLjava/util/ArrayList$ListItr;->(Ljava/util/ArrayList;I)V +HSPLjava/util/ArrayList$SubList$1;->(Ljava/util/ArrayList$SubList;II)V +HSPLjava/util/ArrayList$SubList$1;->hasNext()Z +HSPLjava/util/ArrayList$SubList$1;->next()Ljava/lang/Object; +HSPLjava/util/ArrayList$SubList;->(Ljava/util/ArrayList;Ljava/util/AbstractList;III)V +HSPLjava/util/ArrayList$SubList;->get(I)Ljava/lang/Object; +HSPLjava/util/ArrayList$SubList;->iterator()Ljava/util/Iterator; +HSPLjava/util/ArrayList$SubList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/ArrayList$SubList;->size()I +HSPLjava/util/ArrayList;->-get0(Ljava/util/ArrayList;)I +HSPLjava/util/ArrayList;->()V +HSPLjava/util/ArrayList;->(I)V +HSPLjava/util/ArrayList;->(Ljava/util/Collection;)V +HSPLjava/util/ArrayList;->add(ILjava/lang/Object;)V +HSPLjava/util/ArrayList;->add(Ljava/lang/Object;)Z +HSPLjava/util/ArrayList;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z +HSPLjava/util/ArrayList;->clear()V +HSPLjava/util/ArrayList;->clone()Ljava/lang/Object; +HSPLjava/util/ArrayList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/ArrayList;->ensureCapacity(I)V +HSPLjava/util/ArrayList;->ensureCapacityInternal(I)V +HSPLjava/util/ArrayList;->ensureExplicitCapacity(I)V +HSPLjava/util/ArrayList;->fastRemove(I)V +HSPLjava/util/ArrayList;->forEach(Ljava/util/function/Consumer;)V +HSPLjava/util/ArrayList;->get(I)Ljava/lang/Object; +HSPLjava/util/ArrayList;->grow(I)V +HSPLjava/util/ArrayList;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/ArrayList;->isEmpty()Z +HSPLjava/util/ArrayList;->iterator()Ljava/util/Iterator; +HSPLjava/util/ArrayList;->listIterator()Ljava/util/ListIterator; +HSPLjava/util/ArrayList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/ArrayList;->remove(I)Ljava/lang/Object; +HSPLjava/util/ArrayList;->remove(Ljava/lang/Object;)Z +HSPLjava/util/ArrayList;->removeAll(Ljava/util/Collection;)Z +HSPLjava/util/ArrayList;->removeIf(Ljava/util/function/Predicate;)Z +HSPLjava/util/ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/ArrayList;->size()I +HSPLjava/util/ArrayList;->sort(Ljava/util/Comparator;)V +HSPLjava/util/ArrayList;->subList(II)Ljava/util/List; +HSPLjava/util/ArrayList;->subListRangeCheck(III)V +HSPLjava/util/ArrayList;->toArray()[Ljava/lang/Object; +HSPLjava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/ArrayList;->trimToSize()V +HSPLjava/util/Arrays$ArrayList;->([Ljava/lang/Object;)V +HSPLjava/util/Arrays$ArrayList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Arrays$ArrayList;->get(I)Ljava/lang/Object; +HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/Arrays$ArrayList;->size()I +HSPLjava/util/Arrays$ArrayList;->toArray()[Ljava/lang/Object; +HSPLjava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List; +HSPLjava/util/Arrays;->binarySearch([II)I +HSPLjava/util/Arrays;->binarySearch([IIII)I +HSPLjava/util/Arrays;->binarySearch([JJ)I +HSPLjava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I +HSPLjava/util/Arrays;->binarySearch0([IIII)I +HSPLjava/util/Arrays;->binarySearch0([JIIJ)I +HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I +HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I +HSPLjava/util/Arrays;->checkOffsetAndCount(III)V +HSPLjava/util/Arrays;->copyOf([BI)[B +HSPLjava/util/Arrays;->copyOf([CI)[C +HSPLjava/util/Arrays;->copyOf([FI)[F +HSPLjava/util/Arrays;->copyOf([II)[I +HSPLjava/util/Arrays;->copyOf([JI)[J +HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object; +HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object; +HSPLjava/util/Arrays;->copyOfRange([BII)[B +HSPLjava/util/Arrays;->copyOfRange([CII)[C +HSPLjava/util/Arrays;->copyOfRange([III)[I +HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object; +HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object; +HSPLjava/util/Arrays;->deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z +HSPLjava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/Arrays;->deepHashCode([Ljava/lang/Object;)I +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V +HSPLjava/util/Arrays;->equals([B[B)Z +HSPLjava/util/Arrays;->equals([F[F)Z +HSPLjava/util/Arrays;->equals([I[I)Z +HSPLjava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z +HSPLjava/util/Arrays;->fill([BB)V +HSPLjava/util/Arrays;->fill([BIIB)V +HSPLjava/util/Arrays;->fill([CC)V +HSPLjava/util/Arrays;->fill([CIIC)V +HSPLjava/util/Arrays;->fill([DD)V +HSPLjava/util/Arrays;->fill([FF)V +HSPLjava/util/Arrays;->fill([II)V +HSPLjava/util/Arrays;->fill([IIII)V +HSPLjava/util/Arrays;->fill([JJ)V +HSPLjava/util/Arrays;->fill([Ljava/lang/Object;IILjava/lang/Object;)V +HSPLjava/util/Arrays;->fill([Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/Arrays;->fill([ZZ)V +HSPLjava/util/Arrays;->hashCode([B)I +HSPLjava/util/Arrays;->hashCode([F)I +HSPLjava/util/Arrays;->hashCode([I)I +HSPLjava/util/Arrays;->hashCode([Ljava/lang/Object;)I +HSPLjava/util/Arrays;->rangeCheck(III)V +HSPLjava/util/Arrays;->sort([I)V +HSPLjava/util/Arrays;->sort([J)V +HSPLjava/util/Arrays;->sort([Ljava/lang/Object;)V +HSPLjava/util/Arrays;->sort([Ljava/lang/Object;II)V +HSPLjava/util/Arrays;->sort([Ljava/lang/Object;IILjava/util/Comparator;)V +HSPLjava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V +HSPLjava/util/Arrays;->toString([I)Ljava/lang/String; +HSPLjava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/util/Base64$Decoder;->(ZZ)V +HSPLjava/util/Base64$Decoder;->decode(Ljava/lang/String;)[B +HSPLjava/util/Base64$Decoder;->decode([B)[B +HSPLjava/util/Base64$Decoder;->decode0([BII[B)I +HSPLjava/util/Base64$Decoder;->outLength([BII)I +HSPLjava/util/Base64$Encoder;->-get0()[C +HSPLjava/util/Base64$Encoder;->-get1()[C +HSPLjava/util/Base64$Encoder;->(Z[BIZ)V +HSPLjava/util/Base64;->getMimeDecoder()Ljava/util/Base64$Decoder; +HSPLjava/util/BitSet;->()V +HSPLjava/util/BitSet;->(I)V +HSPLjava/util/BitSet;->cardinality()I +HSPLjava/util/BitSet;->checkInvariants()V +HSPLjava/util/BitSet;->checkRange(II)V +HSPLjava/util/BitSet;->clear(I)V +HSPLjava/util/BitSet;->ensureCapacity(I)V +HSPLjava/util/BitSet;->equals(Ljava/lang/Object;)Z +HSPLjava/util/BitSet;->expandTo(I)V +HSPLjava/util/BitSet;->get(I)Z +HSPLjava/util/BitSet;->initWords(I)V +HSPLjava/util/BitSet;->intersects(Ljava/util/BitSet;)Z +HSPLjava/util/BitSet;->nextSetBit(I)I +HSPLjava/util/BitSet;->or(Ljava/util/BitSet;)V +HSPLjava/util/BitSet;->recalculateWordsInUse()V +HSPLjava/util/BitSet;->set(I)V +HSPLjava/util/BitSet;->set(II)V +HSPLjava/util/BitSet;->set(IZ)V +HSPLjava/util/BitSet;->toString()Ljava/lang/String; +HSPLjava/util/BitSet;->wordIndex(I)I +HSPLjava/util/BitSet;->xor(Ljava/util/BitSet;)V +HSPLjava/util/Calendar;->()V +HSPLjava/util/Calendar;->(Ljava/util/TimeZone;Ljava/util/Locale;)V +HSPLjava/util/Calendar;->add(II)V +HSPLjava/util/Calendar;->after(Ljava/lang/Object;)Z +HSPLjava/util/Calendar;->aggregateStamp(II)I +HSPLjava/util/Calendar;->before(Ljava/lang/Object;)Z +HSPLjava/util/Calendar;->clear()V +HSPLjava/util/Calendar;->clone()Ljava/lang/Object; +HSPLjava/util/Calendar;->compareTo(J)I +HSPLjava/util/Calendar;->compareTo(Ljava/util/Calendar;)I +HSPLjava/util/Calendar;->complete()V +HSPLjava/util/Calendar;->computeFields()V +HSPLjava/util/Calendar;->computeTime()V +HSPLjava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar; +HSPLjava/util/Calendar;->get(I)I +HSPLjava/util/Calendar;->getFirstDayOfWeek()I +HSPLjava/util/Calendar;->getGreatestMinimum(I)I +HSPLjava/util/Calendar;->getInstance()Ljava/util/Calendar; +HSPLjava/util/Calendar;->getInstance(Ljava/util/TimeZone;)Ljava/util/Calendar; +HSPLjava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar; +HSPLjava/util/Calendar;->getLeastMaximum(I)I +HSPLjava/util/Calendar;->getMaximum(I)I +HSPLjava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J +HSPLjava/util/Calendar;->getMinimalDaysInFirstWeek()I +HSPLjava/util/Calendar;->getMinimum(I)I +HSPLjava/util/Calendar;->getSetStateFields()I +HSPLjava/util/Calendar;->getTime()Ljava/util/Date; +HSPLjava/util/Calendar;->getTimeInMillis()J +HSPLjava/util/Calendar;->getTimeZone()Ljava/util/TimeZone; +HSPLjava/util/Calendar;->getZone()Ljava/util/TimeZone; +HSPLjava/util/Calendar;->internalGet(I)I +HSPLjava/util/Calendar;->internalSet(II)V +HSPLjava/util/Calendar;->isFieldSet(II)Z +HSPLjava/util/Calendar;->isLenient()Z +HSPLjava/util/Calendar;->isPartiallyNormalized()Z +HSPLjava/util/Calendar;->isSet(I)Z +HSPLjava/util/Calendar;->roll(IZ)V +HSPLjava/util/Calendar;->selectFields()I +HSPLjava/util/Calendar;->set(II)V +HSPLjava/util/Calendar;->set(III)V +HSPLjava/util/Calendar;->set(IIIIII)V +HSPLjava/util/Calendar;->setFieldsComputed(I)V +HSPLjava/util/Calendar;->setFieldsNormalized(I)V +HSPLjava/util/Calendar;->setLenient(Z)V +HSPLjava/util/Calendar;->setTime(Ljava/util/Date;)V +HSPLjava/util/Calendar;->setTimeInMillis(J)V +HSPLjava/util/Calendar;->setTimeZone(Ljava/util/TimeZone;)V +HSPLjava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V +HSPLjava/util/Calendar;->setZoneShared(Z)V +HSPLjava/util/Calendar;->updateTime()V +HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream; +HSPLjava/util/Collections$1;->(Ljava/lang/Object;)V +HSPLjava/util/Collections$1;->hasNext()Z +HSPLjava/util/Collections$1;->next()Ljava/lang/Object; +HSPLjava/util/Collections$3;->(Ljava/util/Collection;)V +HSPLjava/util/Collections$3;->hasMoreElements()Z +HSPLjava/util/Collections$3;->nextElement()Ljava/lang/Object; +HSPLjava/util/Collections$CopiesList;->(ILjava/lang/Object;)V +HSPLjava/util/Collections$CopiesList;->toArray()[Ljava/lang/Object; +HSPLjava/util/Collections$EmptyEnumeration;->hasMoreElements()Z +HSPLjava/util/Collections$EmptyIterator;->hasNext()Z +HSPLjava/util/Collections$EmptyList;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/Collections$EmptyList;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Collections$EmptyList;->isEmpty()Z +HSPLjava/util/Collections$EmptyList;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$EmptyList;->readResolve()Ljava/lang/Object; +HSPLjava/util/Collections$EmptyList;->size()I +HSPLjava/util/Collections$EmptyList;->toArray()[Ljava/lang/Object; +HSPLjava/util/Collections$EmptyMap;->entrySet()Ljava/util/Set; +HSPLjava/util/Collections$EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$EmptyMap;->isEmpty()Z +HSPLjava/util/Collections$EmptyMap;->size()I +HSPLjava/util/Collections$EmptyMap;->values()Ljava/util/Collection; +HSPLjava/util/Collections$EmptySet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Collections$EmptySet;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/Collections$EmptySet;->isEmpty()Z +HSPLjava/util/Collections$EmptySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$EmptySet;->size()I +HSPLjava/util/Collections$EmptySet;->toArray()[Ljava/lang/Object; +HSPLjava/util/Collections$EmptySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I +HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/Collections$SetFromMap;->(Ljava/util/Map;)V +HSPLjava/util/Collections$SetFromMap;->add(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SetFromMap;->clear()V +HSPLjava/util/Collections$SetFromMap;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SetFromMap;->isEmpty()Z +HSPLjava/util/Collections$SetFromMap;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$SetFromMap;->remove(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SetFromMap;->size()I +HSPLjava/util/Collections$SetFromMap;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/Collections$SingletonList;->(Ljava/lang/Object;)V +HSPLjava/util/Collections$SingletonList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SingletonList;->get(I)Ljava/lang/Object; +HSPLjava/util/Collections$SingletonList;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$SingletonList;->size()I +HSPLjava/util/Collections$SingletonMap;->(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/Collections$SingletonMap;->entrySet()Ljava/util/Set; +HSPLjava/util/Collections$SingletonMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SingletonMap;->isEmpty()Z +HSPLjava/util/Collections$SingletonMap;->keySet()Ljava/util/Set; +HSPLjava/util/Collections$SingletonMap;->size()I +HSPLjava/util/Collections$SingletonSet;->(Ljava/lang/Object;)V +HSPLjava/util/Collections$SingletonSet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SingletonSet;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$SingletonSet;->size()I +HSPLjava/util/Collections$SynchronizedCollection;->(Ljava/util/Collection;)V +HSPLjava/util/Collections$SynchronizedCollection;->(Ljava/util/Collection;Ljava/lang/Object;)V +HSPLjava/util/Collections$SynchronizedCollection;->add(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SynchronizedCollection;->clear()V +HSPLjava/util/Collections$SynchronizedCollection;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$SynchronizedCollection;->remove(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SynchronizedCollection;->size()I +HSPLjava/util/Collections$SynchronizedCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedList;->(Ljava/util/List;)V +HSPLjava/util/Collections$SynchronizedList;->add(ILjava/lang/Object;)V +HSPLjava/util/Collections$SynchronizedMap;->(Ljava/util/Map;)V +HSPLjava/util/Collections$SynchronizedMap;->clear()V +HSPLjava/util/Collections$SynchronizedMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->isEmpty()Z +HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set; +HSPLjava/util/Collections$SynchronizedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->size()I +HSPLjava/util/Collections$SynchronizedMap;->values()Ljava/util/Collection; +HSPLjava/util/Collections$SynchronizedRandomAccessList;->(Ljava/util/List;)V +HSPLjava/util/Collections$SynchronizedSet;->(Ljava/util/Set;)V +HSPLjava/util/Collections$SynchronizedSet;->(Ljava/util/Set;Ljava/lang/Object;)V +HSPLjava/util/Collections$UnmodifiableCollection$1;->(Ljava/util/Collections$UnmodifiableCollection;)V +HSPLjava/util/Collections$UnmodifiableCollection$1;->hasNext()Z +HSPLjava/util/Collections$UnmodifiableCollection$1;->next()Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableCollection;->(Ljava/util/Collection;)V +HSPLjava/util/Collections$UnmodifiableCollection;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/Collections$UnmodifiableCollection;->isEmpty()Z +HSPLjava/util/Collections$UnmodifiableCollection;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$UnmodifiableCollection;->size()I +HSPLjava/util/Collections$UnmodifiableCollection;->toArray()[Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableCollection;->toString()Ljava/lang/String; +HSPLjava/util/Collections$UnmodifiableList$1;->(Ljava/util/Collections$UnmodifiableList;I)V +HSPLjava/util/Collections$UnmodifiableList$1;->hasNext()Z +HSPLjava/util/Collections$UnmodifiableList$1;->next()Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableList;->(Ljava/util/List;)V +HSPLjava/util/Collections$UnmodifiableList;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Collections$UnmodifiableList;->get(I)Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableList;->hashCode()I +HSPLjava/util/Collections$UnmodifiableList;->listIterator()Ljava/util/ListIterator; +HSPLjava/util/Collections$UnmodifiableList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->(Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;)V +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->hasNext()Z +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->next()Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->next()Ljava/util/Map$Entry; +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->(Ljava/util/Map$Entry;)V +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->getKey()Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->getValue()Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->(Ljava/util/Set;)V +HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$UnmodifiableMap;->(Ljava/util/Map;)V +HSPLjava/util/Collections$UnmodifiableMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/Collections$UnmodifiableMap;->entrySet()Ljava/util/Set; +HSPLjava/util/Collections$UnmodifiableMap;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Collections$UnmodifiableMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$UnmodifiableMap;->hashCode()I +HSPLjava/util/Collections$UnmodifiableMap;->isEmpty()Z +HSPLjava/util/Collections$UnmodifiableMap;->keySet()Ljava/util/Set; +HSPLjava/util/Collections$UnmodifiableMap;->size()I +HSPLjava/util/Collections$UnmodifiableMap;->values()Ljava/util/Collection; +HSPLjava/util/Collections$UnmodifiableRandomAccessList;->(Ljava/util/List;)V +HSPLjava/util/Collections$UnmodifiableRandomAccessList;->subList(II)Ljava/util/List; +HSPLjava/util/Collections$UnmodifiableSet;->(Ljava/util/Set;)V +HSPLjava/util/Collections$UnmodifiableSet;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z +HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;)I +HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I +HSPLjava/util/Collections;->emptyEnumeration()Ljava/util/Enumeration; +HSPLjava/util/Collections;->emptyIterator()Ljava/util/Iterator; +HSPLjava/util/Collections;->emptyList()Ljava/util/List; +HSPLjava/util/Collections;->emptyMap()Ljava/util/Map; +HSPLjava/util/Collections;->emptySet()Ljava/util/Set; +HSPLjava/util/Collections;->enumeration(Ljava/util/Collection;)Ljava/util/Enumeration; +HSPLjava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I +HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I +HSPLjava/util/Collections;->max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object; +HSPLjava/util/Collections;->nCopies(ILjava/lang/Object;)Ljava/util/List; +HSPLjava/util/Collections;->newSetFromMap(Ljava/util/Map;)Ljava/util/Set; +HSPLjava/util/Collections;->reverse(Ljava/util/List;)V +HSPLjava/util/Collections;->reverseOrder()Ljava/util/Comparator; +HSPLjava/util/Collections;->singleton(Ljava/lang/Object;)Ljava/util/Set; +HSPLjava/util/Collections;->singletonIterator(Ljava/lang/Object;)Ljava/util/Iterator; +HSPLjava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List; +HSPLjava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; +HSPLjava/util/Collections;->sort(Ljava/util/List;)V +HSPLjava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V +HSPLjava/util/Collections;->swap(Ljava/util/List;II)V +HSPLjava/util/Collections;->synchronizedList(Ljava/util/List;)Ljava/util/List; +HSPLjava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map; +HSPLjava/util/Collections;->synchronizedSet(Ljava/util/Set;)Ljava/util/Set; +HSPLjava/util/Collections;->synchronizedSet(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; +HSPLjava/util/Collections;->unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection; +HSPLjava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List; +HSPLjava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map; +HSPLjava/util/Collections;->unmodifiableSet(Ljava/util/Set;)Ljava/util/Set; +HSPLjava/util/ComparableTimSort;->([Ljava/lang/Object;[Ljava/lang/Object;II)V +HSPLjava/util/ComparableTimSort;->binarySort([Ljava/lang/Object;III)V +HSPLjava/util/ComparableTimSort;->countRunAndMakeAscending([Ljava/lang/Object;II)I +HSPLjava/util/ComparableTimSort;->ensureCapacity(I)[Ljava/lang/Object; +HSPLjava/util/ComparableTimSort;->gallopLeft(Ljava/lang/Comparable;[Ljava/lang/Object;III)I +HSPLjava/util/ComparableTimSort;->gallopRight(Ljava/lang/Comparable;[Ljava/lang/Object;III)I +HSPLjava/util/ComparableTimSort;->mergeAt(I)V +HSPLjava/util/ComparableTimSort;->mergeCollapse()V +HSPLjava/util/ComparableTimSort;->mergeForceCollapse()V +HSPLjava/util/ComparableTimSort;->mergeHi(IIII)V +HSPLjava/util/ComparableTimSort;->mergeLo(IIII)V +HSPLjava/util/ComparableTimSort;->minRunLength(I)I +HSPLjava/util/ComparableTimSort;->pushRun(II)V +HSPLjava/util/ComparableTimSort;->reverseRange([Ljava/lang/Object;II)V +HSPLjava/util/ComparableTimSort;->sort([Ljava/lang/Object;II[Ljava/lang/Object;II)V +HSPLjava/util/Comparator;->comparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator; +HSPLjava/util/Comparator;->lambda$-java_util_Comparator_21565(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/Currency;->(Landroid/icu/util/Currency;)V +HSPLjava/util/Currency;->getCurrencyCode()Ljava/lang/String; +HSPLjava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency; +HSPLjava/util/Currency;->getInstance(Ljava/util/Locale;)Ljava/util/Currency; +HSPLjava/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String; +HSPLjava/util/Date;->()V +HSPLjava/util/Date;->(J)V +HSPLjava/util/Date;->before(Ljava/util/Date;)Z +HSPLjava/util/Date;->compareTo(Ljava/util/Date;)I +HSPLjava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar; +HSPLjava/util/Date;->getDate()I +HSPLjava/util/Date;->getHours()I +HSPLjava/util/Date;->getMillisOf(Ljava/util/Date;)J +HSPLjava/util/Date;->getMinutes()I +HSPLjava/util/Date;->getMonth()I +HSPLjava/util/Date;->getSeconds()I +HSPLjava/util/Date;->getTime()J +HSPLjava/util/Date;->getTimeImpl()J +HSPLjava/util/Date;->getYear()I +HSPLjava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date; +HSPLjava/util/Date;->setTime(J)V +HSPLjava/util/Dictionary;->()V +HSPLjava/util/DualPivotQuicksort;->sort([IIIZ)V +HSPLjava/util/DualPivotQuicksort;->sort([III[III)V +HSPLjava/util/DualPivotQuicksort;->sort([JIIZ)V +HSPLjava/util/DualPivotQuicksort;->sort([JII[JII)V +HSPLjava/util/EnumMap$1;->()V +HSPLjava/util/EnumMap$EntryIterator$Entry;->(Ljava/util/EnumMap$EntryIterator;I)V +HSPLjava/util/EnumMap$EntryIterator$Entry;->(Ljava/util/EnumMap$EntryIterator;ILjava/util/EnumMap$EntryIterator$Entry;)V +HSPLjava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V +HSPLjava/util/EnumMap$EntryIterator$Entry;->getKey()Ljava/lang/Enum; +HSPLjava/util/EnumMap$EntryIterator$Entry;->getKey()Ljava/lang/Object; +HSPLjava/util/EnumMap$EntryIterator$Entry;->getValue()Ljava/lang/Object; +HSPLjava/util/EnumMap$EntryIterator;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$EntryIterator;->(Ljava/util/EnumMap;Ljava/util/EnumMap$EntryIterator;)V +HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/EnumMap$EntrySet;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$EntrySet;->(Ljava/util/EnumMap;Ljava/util/EnumMap$EntrySet;)V +HSPLjava/util/EnumMap$EntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/EnumMap$EnumMapIterator;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$EnumMapIterator;->(Ljava/util/EnumMap;Ljava/util/EnumMap$EnumMapIterator;)V +HSPLjava/util/EnumMap$EnumMapIterator;->hasNext()Z +HSPLjava/util/EnumMap$KeyIterator;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$KeyIterator;->(Ljava/util/EnumMap;Ljava/util/EnumMap$KeyIterator;)V +HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Enum; +HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/EnumMap$KeySet;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$KeySet;->(Ljava/util/EnumMap;Ljava/util/EnumMap$KeySet;)V +HSPLjava/util/EnumMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/EnumMap$KeySet;->size()I +HSPLjava/util/EnumMap$ValueIterator;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$ValueIterator;->(Ljava/util/EnumMap;Ljava/util/EnumMap$ValueIterator;)V +HSPLjava/util/EnumMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/EnumMap$Values;->(Ljava/util/EnumMap;)V +HSPLjava/util/EnumMap$Values;->(Ljava/util/EnumMap;Ljava/util/EnumMap$Values;)V +HSPLjava/util/EnumMap$Values;->iterator()Ljava/util/Iterator; +HSPLjava/util/EnumMap;->-get0(Ljava/util/EnumMap;)[Ljava/lang/Enum; +HSPLjava/util/EnumMap;->-get1(Ljava/util/EnumMap;)I +HSPLjava/util/EnumMap;->-get2(Ljava/util/EnumMap;)[Ljava/lang/Object; +HSPLjava/util/EnumMap;->-wrap4(Ljava/util/EnumMap;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->(Ljava/lang/Class;)V +HSPLjava/util/EnumMap;->(Ljava/util/Map;)V +HSPLjava/util/EnumMap;->clear()V +HSPLjava/util/EnumMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/EnumMap;->entrySet()Ljava/util/Set; +HSPLjava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; +HSPLjava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z +HSPLjava/util/EnumMap;->keySet()Ljava/util/Set; +HSPLjava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->size()I +HSPLjava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V +HSPLjava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->values()Ljava/util/Collection; +HSPLjava/util/EnumSet;->(Ljava/lang/Class;[Ljava/lang/Enum;)V +HSPLjava/util/EnumSet;->addAll()V +HSPLjava/util/EnumSet;->addRange(Ljava/lang/Enum;Ljava/lang/Enum;)V +HSPLjava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->clone()Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->complement()V +HSPLjava/util/EnumSet;->copyOf(Ljava/util/Collection;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; +HSPLjava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->range(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; +HSPLjava/util/EnumSet;->typeCheck(Ljava/lang/Enum;)V +HSPLjava/util/Formatter$Conversion;->isCharacter(C)Z +HSPLjava/util/Formatter$Conversion;->isFloat(C)Z +HSPLjava/util/Formatter$Conversion;->isGeneral(C)Z +HSPLjava/util/Formatter$Conversion;->isInteger(C)Z +HSPLjava/util/Formatter$Conversion;->isText(C)Z +HSPLjava/util/Formatter$Conversion;->isValid(C)Z +HSPLjava/util/Formatter$DateTime;->isValid(C)Z +HSPLjava/util/Formatter$FixedString;->(Ljava/util/Formatter;Ljava/lang/String;)V +HSPLjava/util/Formatter$FixedString;->index()I +HSPLjava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$Flags;->-wrap0(Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags; +HSPLjava/util/Formatter$Flags;->(I)V +HSPLjava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags; +HSPLjava/util/Formatter$Flags;->contains(Ljava/util/Formatter$Flags;)Z +HSPLjava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags; +HSPLjava/util/Formatter$Flags;->parse(Ljava/lang/String;)Ljava/util/Formatter$Flags; +HSPLjava/util/Formatter$Flags;->valueOf()I +HSPLjava/util/Formatter$FormatSpecifier;->(Ljava/util/Formatter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/Formatter$FormatSpecifier;->addZeros([CI)[C +HSPLjava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I +HSPLjava/util/Formatter$FormatSpecifier;->checkBadFlags([Ljava/util/Formatter$Flags;)V +HSPLjava/util/Formatter$FormatSpecifier;->checkDateTime()V +HSPLjava/util/Formatter$FormatSpecifier;->checkFloat()V +HSPLjava/util/Formatter$FormatSpecifier;->checkGeneral()V +HSPLjava/util/Formatter$FormatSpecifier;->checkInteger()V +HSPLjava/util/Formatter$FormatSpecifier;->checkNumeric()V +HSPLjava/util/Formatter$FormatSpecifier;->checkText()V +HSPLjava/util/Formatter$FormatSpecifier;->conversion(Ljava/lang/String;)C +HSPLjava/util/Formatter$FormatSpecifier;->flags(Ljava/lang/String;)Ljava/util/Formatter$Flags; +HSPLjava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C +HSPLjava/util/Formatter$FormatSpecifier;->index()I +HSPLjava/util/Formatter$FormatSpecifier;->index(Ljava/lang/String;)I +HSPLjava/util/Formatter$FormatSpecifier;->justify(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;JLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I +HSPLjava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable; +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V +HSPLjava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I +HSPLjava/util/Formatter$FormatSpecifierParser;->(Ljava/util/Formatter;Ljava/lang/String;I)V +HSPLjava/util/Formatter$FormatSpecifierParser;->advance()C +HSPLjava/util/Formatter$FormatSpecifierParser;->back(I)V +HSPLjava/util/Formatter$FormatSpecifierParser;->getEndIdx()I +HSPLjava/util/Formatter$FormatSpecifierParser;->getFormatSpecifier()Ljava/util/Formatter$FormatSpecifier; +HSPLjava/util/Formatter$FormatSpecifierParser;->isEnd()Z +HSPLjava/util/Formatter$FormatSpecifierParser;->nextInt()Ljava/lang/String; +HSPLjava/util/Formatter$FormatSpecifierParser;->nextIsInt()Z +HSPLjava/util/Formatter$FormatSpecifierParser;->peek()C +HSPLjava/util/Formatter;->-get0(Ljava/util/Formatter;)Ljava/lang/Appendable; +HSPLjava/util/Formatter;->-get3(Ljava/util/Formatter;)C +HSPLjava/util/Formatter;->()V +HSPLjava/util/Formatter;->(Ljava/lang/Appendable;)V +HSPLjava/util/Formatter;->(Ljava/lang/Appendable;Ljava/util/Locale;)V +HSPLjava/util/Formatter;->(Ljava/util/Locale;)V +HSPLjava/util/Formatter;->(Ljava/util/Locale;Ljava/lang/Appendable;)V +HSPLjava/util/Formatter;->ensureOpen()V +HSPLjava/util/Formatter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter; +HSPLjava/util/Formatter;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter; +HSPLjava/util/Formatter;->getZero(Ljava/util/Locale;)C +HSPLjava/util/Formatter;->locale()Ljava/util/Locale; +HSPLjava/util/Formatter;->nonNullAppendable(Ljava/lang/Appendable;)Ljava/lang/Appendable; +HSPLjava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString; +HSPLjava/util/Formatter;->toString()Ljava/lang/String; +HSPLjava/util/GregorianCalendar;->()V +HSPLjava/util/GregorianCalendar;->(III)V +HSPLjava/util/GregorianCalendar;->(IIIIII)V +HSPLjava/util/GregorianCalendar;->(IIIIIII)V +HSPLjava/util/GregorianCalendar;->(Ljava/util/TimeZone;Ljava/util/Locale;)V +HSPLjava/util/GregorianCalendar;->add(II)V +HSPLjava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I +HSPLjava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J +HSPLjava/util/GregorianCalendar;->clone()Ljava/lang/Object; +HSPLjava/util/GregorianCalendar;->computeFields()V +HSPLjava/util/GregorianCalendar;->computeFields(II)I +HSPLjava/util/GregorianCalendar;->computeTime()V +HSPLjava/util/GregorianCalendar;->getCurrentFixedDate()J +HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J +HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone; +HSPLjava/util/GregorianCalendar;->getWeekNumber(JJ)I +HSPLjava/util/GregorianCalendar;->internalGetEra()I +HSPLjava/util/GregorianCalendar;->isLeapYear(I)Z +HSPLjava/util/GregorianCalendar;->monthLength(I)I +HSPLjava/util/GregorianCalendar;->monthLength(II)I +HSPLjava/util/GregorianCalendar;->pinDayOfMonth()V +HSPLjava/util/GregorianCalendar;->setTimeZone(Ljava/util/TimeZone;)V +HSPLjava/util/HashMap$EntryIterator;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$EntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/HashMap$EntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/HashMap$EntrySet;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$EntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/HashMap$EntrySet;->size()I +HSPLjava/util/HashMap$HashIterator;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$HashIterator;->hasNext()Z +HSPLjava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node; +HSPLjava/util/HashMap$HashIterator;->remove()V +HSPLjava/util/HashMap$HashMapSpliterator;->(Ljava/util/HashMap;IIII)V +HSPLjava/util/HashMap$HashMapSpliterator;->estimateSize()J +HSPLjava/util/HashMap$HashMapSpliterator;->getFence()I +HSPLjava/util/HashMap$KeyIterator;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/HashMap$KeySet;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$KeySet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/HashMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/HashMap$KeySet;->size()I +HSPLjava/util/HashMap$KeySpliterator;->(Ljava/util/HashMap;IIII)V +HSPLjava/util/HashMap$KeySpliterator;->characteristics()I +HSPLjava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/util/HashMap$Node;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HSPLjava/util/HashMap$Node;->getKey()Ljava/lang/Object; +HSPLjava/util/HashMap$Node;->getValue()Ljava/lang/Object; +HSPLjava/util/HashMap$Node;->hashCode()I +HSPLjava/util/HashMap$Node;->setValue(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap$ValueIterator;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/HashMap$Values;->(Ljava/util/HashMap;)V +HSPLjava/util/HashMap$Values;->iterator()Ljava/util/Iterator; +HSPLjava/util/HashMap$Values;->size()I +HSPLjava/util/HashMap;->()V +HSPLjava/util/HashMap;->(I)V +HSPLjava/util/HashMap;->(IF)V +HSPLjava/util/HashMap;->(Ljava/util/Map;)V +HSPLjava/util/HashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V +HSPLjava/util/HashMap;->afterNodeInsertion(Z)V +HSPLjava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V +HSPLjava/util/HashMap;->capacity()I +HSPLjava/util/HashMap;->clear()V +HSPLjava/util/HashMap;->clone()Ljava/lang/Object; +HSPLjava/util/HashMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/HashMap;->containsValue(Ljava/lang/Object;)Z +HSPLjava/util/HashMap;->entrySet()Ljava/util/Set; +HSPLjava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap;->getNode(ILjava/lang/Object;)Ljava/util/HashMap$Node; +HSPLjava/util/HashMap;->hash(Ljava/lang/Object;)I +HSPLjava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V +HSPLjava/util/HashMap;->isEmpty()Z +HSPLjava/util/HashMap;->keySet()Ljava/util/Set; +HSPLjava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; +HSPLjava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap;->putAll(Ljava/util/Map;)V +HSPLjava/util/HashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V +HSPLjava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; +HSPLjava/util/HashMap;->readObject(Ljava/io/ObjectInputStream;)V +HSPLjava/util/HashMap;->reinitialize()V +HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node; +HSPLjava/util/HashMap;->resize()[Ljava/util/HashMap$Node; +HSPLjava/util/HashMap;->size()I +HSPLjava/util/HashMap;->tableSizeFor(I)I +HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V +HSPLjava/util/HashMap;->values()Ljava/util/Collection; +HSPLjava/util/HashMap;->writeObject(Ljava/io/ObjectOutputStream;)V +HSPLjava/util/HashSet;->()V +HSPLjava/util/HashSet;->(I)V +HSPLjava/util/HashSet;->(IFZ)V +HSPLjava/util/HashSet;->(Ljava/util/Collection;)V +HSPLjava/util/HashSet;->add(Ljava/lang/Object;)Z +HSPLjava/util/HashSet;->clear()V +HSPLjava/util/HashSet;->clone()Ljava/lang/Object; +HSPLjava/util/HashSet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/HashSet;->isEmpty()Z +HSPLjava/util/HashSet;->iterator()Ljava/util/Iterator; +HSPLjava/util/HashSet;->remove(Ljava/lang/Object;)Z +HSPLjava/util/HashSet;->size()I +HSPLjava/util/HashSet;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/Hashtable$EntrySet;->(Ljava/util/Hashtable;)V +HSPLjava/util/Hashtable$EntrySet;->(Ljava/util/Hashtable;Ljava/util/Hashtable$EntrySet;)V +HSPLjava/util/Hashtable$EntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/Hashtable$Enumerator;->(Ljava/util/Hashtable;IZ)V +HSPLjava/util/Hashtable$Enumerator;->hasMoreElements()Z +HSPLjava/util/Hashtable$Enumerator;->hasNext()Z +HSPLjava/util/Hashtable$Enumerator;->next()Ljava/lang/Object; +HSPLjava/util/Hashtable$Enumerator;->nextElement()Ljava/lang/Object; +HSPLjava/util/Hashtable$HashtableEntry;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V +HSPLjava/util/Hashtable$HashtableEntry;->clone()Ljava/lang/Object; +HSPLjava/util/Hashtable$HashtableEntry;->getKey()Ljava/lang/Object; +HSPLjava/util/Hashtable;->-get1(Ljava/util/Hashtable;)I +HSPLjava/util/Hashtable;->-get2(Ljava/util/Hashtable;)[Ljava/util/Hashtable$HashtableEntry; +HSPLjava/util/Hashtable;->-wrap0(Ljava/util/Hashtable;I)Ljava/util/Iterator; +HSPLjava/util/Hashtable;->()V +HSPLjava/util/Hashtable;->(I)V +HSPLjava/util/Hashtable;->(IF)V +HSPLjava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V +HSPLjava/util/Hashtable;->clear()V +HSPLjava/util/Hashtable;->clone()Ljava/lang/Object; +HSPLjava/util/Hashtable;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/Hashtable;->entrySet()Ljava/util/Set; +HSPLjava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration; +HSPLjava/util/Hashtable;->getIterator(I)Ljava/util/Iterator; +HSPLjava/util/Hashtable;->isEmpty()Z +HSPLjava/util/Hashtable;->keys()Ljava/util/Enumeration; +HSPLjava/util/Hashtable;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Hashtable;->rehash()V +HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/IdentityHashMap$EntrySet;->(Ljava/util/IdentityHashMap;)V +HSPLjava/util/IdentityHashMap$EntrySet;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$EntrySet;)V +HSPLjava/util/IdentityHashMap$EntrySet;->size()I +HSPLjava/util/IdentityHashMap$EntrySet;->toArray()[Ljava/lang/Object; +HSPLjava/util/IdentityHashMap$EntrySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->(Ljava/util/IdentityHashMap;)V +HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$IdentityHashMapIterator;)V +HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->hasNext()Z +HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I +HSPLjava/util/IdentityHashMap$KeyIterator;->(Ljava/util/IdentityHashMap;)V +HSPLjava/util/IdentityHashMap$KeyIterator;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$KeyIterator;)V +HSPLjava/util/IdentityHashMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/IdentityHashMap$KeySet;->(Ljava/util/IdentityHashMap;)V +HSPLjava/util/IdentityHashMap$KeySet;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$KeySet;)V +HSPLjava/util/IdentityHashMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/IdentityHashMap$KeySet;->removeAll(Ljava/util/Collection;)Z +HSPLjava/util/IdentityHashMap;->()V +HSPLjava/util/IdentityHashMap;->(I)V +HSPLjava/util/IdentityHashMap;->capacity(I)I +HSPLjava/util/IdentityHashMap;->closeDeletion(I)V +HSPLjava/util/IdentityHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/IdentityHashMap;->entrySet()Ljava/util/Set; +HSPLjava/util/IdentityHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/IdentityHashMap;->hash(Ljava/lang/Object;I)I +HSPLjava/util/IdentityHashMap;->init(I)V +HSPLjava/util/IdentityHashMap;->isEmpty()Z +HSPLjava/util/IdentityHashMap;->keySet()Ljava/util/Set; +HSPLjava/util/IdentityHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/IdentityHashMap;->nextKeyIndex(II)I +HSPLjava/util/IdentityHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/IdentityHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/IdentityHashMap;->size()I +HSPLjava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/util/Iterator;->hasNext()Z +HSPLjava/util/Iterator;->next()Ljava/lang/Object; +HSPLjava/util/JumboEnumSet$EnumSetIterator;->(Ljava/util/JumboEnumSet;)V +HSPLjava/util/JumboEnumSet$EnumSetIterator;->hasNext()Z +HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Enum; +HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Object; +HSPLjava/util/JumboEnumSet;->-get0(Ljava/util/JumboEnumSet;)[J +HSPLjava/util/JumboEnumSet;->(Ljava/lang/Class;[Ljava/lang/Enum;)V +HSPLjava/util/JumboEnumSet;->add(Ljava/lang/Enum;)Z +HSPLjava/util/JumboEnumSet;->add(Ljava/lang/Object;)Z +HSPLjava/util/JumboEnumSet;->addAll()V +HSPLjava/util/JumboEnumSet;->iterator()Ljava/util/Iterator; +HSPLjava/util/JumboEnumSet;->size()I +HSPLjava/util/LinkedHashMap$LinkedEntryIterator;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedEntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/LinkedHashMap$LinkedEntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/LinkedHashMap$LinkedEntrySet;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedEntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/LinkedHashMap$LinkedEntrySet;->size()I +HSPLjava/util/LinkedHashMap$LinkedEntrySet;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/LinkedHashMap$LinkedHashIterator;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedHashIterator;->hasNext()Z +HSPLjava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry; +HSPLjava/util/LinkedHashMap$LinkedHashMapEntry;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V +HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/LinkedHashMap$LinkedKeySet;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedKeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/LinkedHashMap$LinkedKeySet;->size()I +HSPLjava/util/LinkedHashMap$LinkedValueIterator;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/LinkedHashMap$LinkedValues;->(Ljava/util/LinkedHashMap;)V +HSPLjava/util/LinkedHashMap$LinkedValues;->iterator()Ljava/util/Iterator; +HSPLjava/util/LinkedHashMap$LinkedValues;->size()I +HSPLjava/util/LinkedHashMap;->()V +HSPLjava/util/LinkedHashMap;->(I)V +HSPLjava/util/LinkedHashMap;->(IF)V +HSPLjava/util/LinkedHashMap;->(IFZ)V +HSPLjava/util/LinkedHashMap;->(Ljava/util/Map;)V +HSPLjava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V +HSPLjava/util/LinkedHashMap;->afterNodeInsertion(Z)V +HSPLjava/util/LinkedHashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V +HSPLjava/util/LinkedHashMap;->clear()V +HSPLjava/util/LinkedHashMap;->eldest()Ljava/util/Map$Entry; +HSPLjava/util/LinkedHashMap;->entrySet()Ljava/util/Set; +HSPLjava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/LinkedHashMap;->keySet()Ljava/util/Set; +HSPLjava/util/LinkedHashMap;->linkNodeLast(Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V +HSPLjava/util/LinkedHashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; +HSPLjava/util/LinkedHashMap;->removeEldestEntry(Ljava/util/Map$Entry;)Z +HSPLjava/util/LinkedHashMap;->values()Ljava/util/Collection; +HSPLjava/util/LinkedHashSet;->()V +HSPLjava/util/LinkedHashSet;->(I)V +HSPLjava/util/LinkedHashSet;->(Ljava/util/Collection;)V +HSPLjava/util/LinkedList$ListItr;->(Ljava/util/LinkedList;I)V +HSPLjava/util/LinkedList$ListItr;->checkForComodification()V +HSPLjava/util/LinkedList$ListItr;->hasNext()Z +HSPLjava/util/LinkedList$ListItr;->next()Ljava/lang/Object; +HSPLjava/util/LinkedList$ListItr;->set(Ljava/lang/Object;)V +HSPLjava/util/LinkedList$Node;->(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V +HSPLjava/util/LinkedList;->()V +HSPLjava/util/LinkedList;->(Ljava/util/Collection;)V +HSPLjava/util/LinkedList;->add(ILjava/lang/Object;)V +HSPLjava/util/LinkedList;->add(Ljava/lang/Object;)Z +HSPLjava/util/LinkedList;->addAll(ILjava/util/Collection;)Z +HSPLjava/util/LinkedList;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/LinkedList;->addFirst(Ljava/lang/Object;)V +HSPLjava/util/LinkedList;->addLast(Ljava/lang/Object;)V +HSPLjava/util/LinkedList;->checkElementIndex(I)V +HSPLjava/util/LinkedList;->checkPositionIndex(I)V +HSPLjava/util/LinkedList;->clear()V +HSPLjava/util/LinkedList;->clone()Ljava/lang/Object; +HSPLjava/util/LinkedList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/LinkedList;->get(I)Ljava/lang/Object; +HSPLjava/util/LinkedList;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/LinkedList;->isElementIndex(I)Z +HSPLjava/util/LinkedList;->isPositionIndex(I)Z +HSPLjava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V +HSPLjava/util/LinkedList;->linkFirst(Ljava/lang/Object;)V +HSPLjava/util/LinkedList;->linkLast(Ljava/lang/Object;)V +HSPLjava/util/LinkedList;->listIterator(I)Ljava/util/ListIterator; +HSPLjava/util/LinkedList;->node(I)Ljava/util/LinkedList$Node; +HSPLjava/util/LinkedList;->offer(Ljava/lang/Object;)Z +HSPLjava/util/LinkedList;->offerLast(Ljava/lang/Object;)Z +HSPLjava/util/LinkedList;->peek()Ljava/lang/Object; +HSPLjava/util/LinkedList;->peekFirst()Ljava/lang/Object; +HSPLjava/util/LinkedList;->peekLast()Ljava/lang/Object; +HSPLjava/util/LinkedList;->poll()Ljava/lang/Object; +HSPLjava/util/LinkedList;->pollFirst()Ljava/lang/Object; +HSPLjava/util/LinkedList;->pop()Ljava/lang/Object; +HSPLjava/util/LinkedList;->remove()Ljava/lang/Object; +HSPLjava/util/LinkedList;->remove(I)Ljava/lang/Object; +HSPLjava/util/LinkedList;->remove(Ljava/lang/Object;)Z +HSPLjava/util/LinkedList;->removeFirst()Ljava/lang/Object; +HSPLjava/util/LinkedList;->size()I +HSPLjava/util/LinkedList;->superClone()Ljava/util/LinkedList; +HSPLjava/util/LinkedList;->toArray()[Ljava/lang/Object; +HSPLjava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object; +HSPLjava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object; +HSPLjava/util/List;->get(I)Ljava/lang/Object; +HSPLjava/util/List;->sort(Ljava/util/Comparator;)V +HSPLjava/util/ListIterator;->hasPrevious()Z +HSPLjava/util/ListIterator;->nextIndex()I +HSPLjava/util/ListIterator;->previous()Ljava/lang/Object; +HSPLjava/util/ListIterator;->previousIndex()I +HSPLjava/util/Locale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale; +HSPLjava/util/Locale$LocaleKey;->-get0(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale; +HSPLjava/util/Locale$LocaleKey;->-get1(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions; +HSPLjava/util/Locale$LocaleKey;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V +HSPLjava/util/Locale$LocaleKey;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$LocaleKey;)V +HSPLjava/util/Locale$LocaleKey;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Locale$LocaleKey;->hashCode()I +HSPLjava/util/Locale;->-getjava-util-Locale$CategorySwitchesValues()[I +HSPLjava/util/Locale;->(Ljava/lang/String;)V +HSPLjava/util/Locale;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/Locale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/Locale;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V +HSPLjava/util/Locale;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale;)V +HSPLjava/util/Locale;->adjustLanguageCode(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Locale;->clone()Ljava/lang/Object; +HSPLjava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Locale;->equals(Ljava/lang/Object;)Z +HSPLjava/util/Locale;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale; +HSPLjava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions; +HSPLjava/util/Locale;->getCountry()Ljava/lang/String; +HSPLjava/util/Locale;->getDefault()Ljava/util/Locale; +HSPLjava/util/Locale;->getDefault(Ljava/util/Locale$Category;)Ljava/util/Locale; +HSPLjava/util/Locale;->getExtensionKeys()Ljava/util/Set; +HSPLjava/util/Locale;->getISO3Country()Ljava/lang/String; +HSPLjava/util/Locale;->getISO3Language()Ljava/lang/String; +HSPLjava/util/Locale;->getISOCountries()[Ljava/lang/String; +HSPLjava/util/Locale;->getISOLanguages()[Ljava/lang/String; +HSPLjava/util/Locale;->getInstance(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale; +HSPLjava/util/Locale;->getLanguage()Ljava/lang/String; +HSPLjava/util/Locale;->getScript()Ljava/lang/String; +HSPLjava/util/Locale;->getVariant()Ljava/lang/String; +HSPLjava/util/Locale;->hasExtensions()Z +HSPLjava/util/Locale;->hashCode()I +HSPLjava/util/Locale;->setDefault(Ljava/util/Locale$Category;Ljava/util/Locale;)V +HSPLjava/util/Locale;->setDefault(Ljava/util/Locale;)V +HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String; +HSPLjava/util/Locale;->toString()Ljava/lang/String; +HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Map;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Map;->size()I +HSPLjava/util/MissingResourceException;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/NavigableMap;->descendingMap()Ljava/util/NavigableMap; +HSPLjava/util/NavigableMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; +HSPLjava/util/NavigableMap;->subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableMap; +HSPLjava/util/NavigableMap;->tailMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; +HSPLjava/util/Objects;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/Objects;->hash([Ljava/lang/Object;)I +HSPLjava/util/Objects;->hashCode(Ljava/lang/Object;)I +HSPLjava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Objects;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; +HSPLjava/util/Objects;->toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Observable;->()V +HSPLjava/util/Observable;->addObserver(Ljava/util/Observer;)V +HSPLjava/util/Observable;->clearChanged()V +HSPLjava/util/Observable;->deleteObserver(Ljava/util/Observer;)V +HSPLjava/util/Observable;->hasChanged()Z +HSPLjava/util/Observable;->notifyObservers()V +HSPLjava/util/Observable;->notifyObservers(Ljava/lang/Object;)V +HSPLjava/util/Observable;->setChanged()V +HSPLjava/util/Optional;->()V +HSPLjava/util/Optional;->empty()Ljava/util/Optional; +HSPLjava/util/Optional;->isPresent()Z +HSPLjava/util/PriorityQueue$Itr;->(Ljava/util/PriorityQueue;)V +HSPLjava/util/PriorityQueue$Itr;->(Ljava/util/PriorityQueue;Ljava/util/PriorityQueue$Itr;)V +HSPLjava/util/PriorityQueue$Itr;->hasNext()Z +HSPLjava/util/PriorityQueue$Itr;->next()Ljava/lang/Object; +HSPLjava/util/PriorityQueue$Itr;->remove()V +HSPLjava/util/PriorityQueue;->()V +HSPLjava/util/PriorityQueue;->(ILjava/util/Comparator;)V +HSPLjava/util/PriorityQueue;->(Ljava/util/Collection;)V +HSPLjava/util/PriorityQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/PriorityQueue;->contains(Ljava/lang/Object;)Z +HSPLjava/util/PriorityQueue;->grow(I)V +HSPLjava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V +HSPLjava/util/PriorityQueue;->iterator()Ljava/util/Iterator; +HSPLjava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/PriorityQueue;->peek()Ljava/lang/Object; +HSPLjava/util/PriorityQueue;->poll()Ljava/lang/Object; +HSPLjava/util/PriorityQueue;->remove(Ljava/lang/Object;)Z +HSPLjava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object; +HSPLjava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V +HSPLjava/util/PriorityQueue;->size()I +HSPLjava/util/Properties$LineReader;->(Ljava/util/Properties;Ljava/io/InputStream;)V +HSPLjava/util/Properties$LineReader;->readLine()I +HSPLjava/util/Properties;->()V +HSPLjava/util/Properties;->(Ljava/util/Properties;)V +HSPLjava/util/Properties;->enumerate(Ljava/util/Hashtable;)V +HSPLjava/util/Properties;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Properties;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Properties;->load(Ljava/io/InputStream;)V +HSPLjava/util/Properties;->load0(Ljava/util/Properties$LineReader;)V +HSPLjava/util/Properties;->loadConvert([CII[C)Ljava/lang/String; +HSPLjava/util/Properties;->propertyNames()Ljava/util/Enumeration; +HSPLjava/util/Properties;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object; +HSPLjava/util/Random;->()V +HSPLjava/util/Random;->(J)V +HSPLjava/util/Random;->initialScramble(J)J +HSPLjava/util/Random;->next(I)I +HSPLjava/util/Random;->nextBytes([B)V +HSPLjava/util/Random;->nextDouble()D +HSPLjava/util/Random;->nextFloat()F +HSPLjava/util/Random;->nextGaussian()D +HSPLjava/util/Random;->nextInt()I +HSPLjava/util/Random;->nextInt(I)I +HSPLjava/util/Random;->nextLong()J +HSPLjava/util/Random;->seedUniquifier()J +HSPLjava/util/Random;->setSeed(J)V +HSPLjava/util/RegularEnumSet$EnumSetIterator;->(Ljava/util/RegularEnumSet;)V +HSPLjava/util/RegularEnumSet$EnumSetIterator;->hasNext()Z +HSPLjava/util/RegularEnumSet$EnumSetIterator;->next()Ljava/lang/Enum; +HSPLjava/util/RegularEnumSet$EnumSetIterator;->next()Ljava/lang/Object; +HSPLjava/util/RegularEnumSet;->-get0(Ljava/util/RegularEnumSet;)J +HSPLjava/util/RegularEnumSet;->(Ljava/lang/Class;[Ljava/lang/Enum;)V +HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Enum;)Z +HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Object;)Z +HSPLjava/util/RegularEnumSet;->addAll()V +HSPLjava/util/RegularEnumSet;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/RegularEnumSet;->addRange(Ljava/lang/Enum;Ljava/lang/Enum;)V +HSPLjava/util/RegularEnumSet;->clear()V +HSPLjava/util/RegularEnumSet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/RegularEnumSet;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/RegularEnumSet;->equals(Ljava/lang/Object;)Z +HSPLjava/util/RegularEnumSet;->isEmpty()Z +HSPLjava/util/RegularEnumSet;->iterator()Ljava/util/Iterator; +HSPLjava/util/RegularEnumSet;->remove(Ljava/lang/Object;)Z +HSPLjava/util/RegularEnumSet;->size()I +HSPLjava/util/ResourceBundle;->()V +HSPLjava/util/ResourceBundle;->getObject(Ljava/lang/String;)Ljava/lang/Object; +HSPLjava/util/ResourceBundle;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/ResourceBundle;->getStringArray(Ljava/lang/String;)[Ljava/lang/String; +HSPLjava/util/Set;->spliterator()Ljava/util/Spliterator; +HSPLjava/util/SimpleTimeZone;->(ILjava/lang/String;)V +HSPLjava/util/SimpleTimeZone;->clone()Ljava/lang/Object; +HSPLjava/util/SimpleTimeZone;->getOffset(J)I +HSPLjava/util/SimpleTimeZone;->getOffsets(J[I)I +HSPLjava/util/SimpleTimeZone;->getRawOffset()I +HSPLjava/util/SimpleTimeZone;->hasSameRules(Ljava/util/TimeZone;)Z +HSPLjava/util/SortedMap;->comparator()Ljava/util/Comparator; +HSPLjava/util/SortedMap;->firstKey()Ljava/lang/Object; +HSPLjava/util/SortedMap;->headMap(Ljava/lang/Object;)Ljava/util/SortedMap; +HSPLjava/util/SortedMap;->lastKey()Ljava/lang/Object; +HSPLjava/util/SortedMap;->subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap; +HSPLjava/util/SortedMap;->tailMap(Ljava/lang/Object;)Ljava/util/SortedMap; +HSPLjava/util/Spliterator;->getExactSizeIfKnown()J +HSPLjava/util/Spliterator;->tryAdvance(Ljava/util/function/Consumer;)Z +HSPLjava/util/Spliterator;->trySplit()Ljava/util/Spliterator; +HSPLjava/util/Spliterators$IteratorSpliterator;->(Ljava/util/Collection;I)V +HSPLjava/util/Spliterators$IteratorSpliterator;->characteristics()I +HSPLjava/util/Spliterators$IteratorSpliterator;->estimateSize()J +HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/util/Spliterators$IteratorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z +HSPLjava/util/Spliterators;->spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator; +HSPLjava/util/Stack;->()V +HSPLjava/util/Stack;->empty()Z +HSPLjava/util/Stack;->peek()Ljava/lang/Object; +HSPLjava/util/Stack;->pop()Ljava/lang/Object; +HSPLjava/util/Stack;->push(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/StringJoiner;->(Ljava/lang/CharSequence;)V +HSPLjava/util/StringJoiner;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V +HSPLjava/util/StringJoiner;->add(Ljava/lang/CharSequence;)Ljava/util/StringJoiner; +HSPLjava/util/StringJoiner;->prepareBuilder()Ljava/lang/StringBuilder; +HSPLjava/util/StringJoiner;->toString()Ljava/lang/String; +HSPLjava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLjava/util/StringTokenizer;->hasMoreTokens()Z +HSPLjava/util/StringTokenizer;->nextToken()Ljava/lang/String; +HSPLjava/util/StringTokenizer;->scanToken(I)I +HSPLjava/util/StringTokenizer;->setMaxDelimCodePoint()V +HSPLjava/util/StringTokenizer;->skipDelimiters(I)I +HSPLjava/util/TaskQueue;->()V +HSPLjava/util/TaskQueue;->add(Ljava/util/TimerTask;)V +HSPLjava/util/TaskQueue;->clear()V +HSPLjava/util/TaskQueue;->fixDown(I)V +HSPLjava/util/TaskQueue;->fixUp(I)V +HSPLjava/util/TaskQueue;->getMin()Ljava/util/TimerTask; +HSPLjava/util/TaskQueue;->isEmpty()Z +HSPLjava/util/TaskQueue;->removeMin()V +HSPLjava/util/TaskQueue;->rescheduleMin(J)V +HSPLjava/util/TimSort;->([Ljava/lang/Object;Ljava/util/Comparator;[Ljava/lang/Object;II)V +HSPLjava/util/TimSort;->binarySort([Ljava/lang/Object;IIILjava/util/Comparator;)V +HSPLjava/util/TimSort;->countRunAndMakeAscending([Ljava/lang/Object;IILjava/util/Comparator;)I +HSPLjava/util/TimSort;->ensureCapacity(I)[Ljava/lang/Object; +HSPLjava/util/TimSort;->gallopLeft(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I +HSPLjava/util/TimSort;->gallopRight(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I +HSPLjava/util/TimSort;->mergeAt(I)V +HSPLjava/util/TimSort;->mergeCollapse()V +HSPLjava/util/TimSort;->mergeForceCollapse()V +HSPLjava/util/TimSort;->mergeHi(IIII)V +HSPLjava/util/TimSort;->mergeLo(IIII)V +HSPLjava/util/TimSort;->minRunLength(I)I +HSPLjava/util/TimSort;->pushRun(II)V +HSPLjava/util/TimSort;->reverseRange([Ljava/lang/Object;II)V +HSPLjava/util/TimSort;->sort([Ljava/lang/Object;IILjava/util/Comparator;[Ljava/lang/Object;II)V +HSPLjava/util/TimeZone;->()V +HSPLjava/util/TimeZone;->clone()Ljava/lang/Object; +HSPLjava/util/TimeZone;->getAvailableIDs()[Ljava/lang/String; +HSPLjava/util/TimeZone;->getDefault()Ljava/util/TimeZone; +HSPLjava/util/TimeZone;->getDefaultRef()Ljava/util/TimeZone; +HSPLjava/util/TimeZone;->getID()Ljava/lang/String; +HSPLjava/util/TimeZone;->getOffset(IIIIII)I +HSPLjava/util/TimeZone;->getRawOffset()I +HSPLjava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone; +HSPLjava/util/TimeZone;->inDaylightTime(Ljava/util/Date;)Z +HSPLjava/util/TimeZone;->setDefault(Ljava/util/TimeZone;)V +HSPLjava/util/TimeZone;->setID(Ljava/lang/String;)V +HSPLjava/util/TimeZone;->setRawOffset(I)V +HSPLjava/util/TimeZone;->toZoneId()Ljava/time/ZoneId; +HSPLjava/util/TimeZone;->useDaylightTime()Z +HSPLjava/util/Timer$1;->(Ljava/util/Timer;)V +HSPLjava/util/Timer$1;->finalize()V +HSPLjava/util/Timer;->-get0(Ljava/util/Timer;)Ljava/util/TaskQueue; +HSPLjava/util/Timer;->-get1(Ljava/util/Timer;)Ljava/util/TimerThread; +HSPLjava/util/Timer;->()V +HSPLjava/util/Timer;->(Ljava/lang/String;)V +HSPLjava/util/Timer;->sched(Ljava/util/TimerTask;JJ)V +HSPLjava/util/Timer;->scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V +HSPLjava/util/Timer;->serialNumber()I +HSPLjava/util/TimerTask;->()V +HSPLjava/util/TimerTask;->cancel()Z +HSPLjava/util/TimerTask;->run()V +HSPLjava/util/TimerThread;->(Ljava/util/TaskQueue;)V +HSPLjava/util/TimerThread;->mainLoop()V +HSPLjava/util/TimerThread;->run()V +HSPLjava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;->(Ljava/util/TreeMap$AscendingSubMap;)V +HSPLjava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$AscendingSubMap;->(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V +HSPLjava/util/TreeMap$AscendingSubMap;->entrySet()Ljava/util/Set; +HSPLjava/util/TreeMap$EntryIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/TreeMap$EntrySet;->(Ljava/util/TreeMap;)V +HSPLjava/util/TreeMap$EntrySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$KeyIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/TreeMap$KeySet;->(Ljava/util/NavigableMap;)V +HSPLjava/util/TreeMap$KeySet;->comparator()Ljava/util/Comparator; +HSPLjava/util/TreeMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$KeySet;->size()I +HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->(Ljava/util/TreeMap$NavigableSubMap;)V +HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->hasNext()Z +HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V +HSPLjava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->descendingKeyIterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$NavigableSubMap;->keyIterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$NavigableSubMap;->keySpliterator()Ljava/util/Spliterator; +HSPLjava/util/TreeMap$NavigableSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z +HSPLjava/util/TreeMap$PrivateEntryIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$PrivateEntryIterator;->hasNext()Z +HSPLjava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap$PrivateEntryIterator;->remove()V +HSPLjava/util/TreeMap$TreeMapEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$TreeMapEntry;->getKey()Ljava/lang/Object; +HSPLjava/util/TreeMap$TreeMapEntry;->getValue()Ljava/lang/Object; +HSPLjava/util/TreeMap$TreeMapEntry;->setValue(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap$ValueIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/TreeMap$Values;->(Ljava/util/TreeMap;)V +HSPLjava/util/TreeMap$Values;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$Values;->size()I +HSPLjava/util/TreeMap;->-get0()Ljava/lang/Object; +HSPLjava/util/TreeMap;->-get2(Ljava/util/TreeMap;)I +HSPLjava/util/TreeMap;->-wrap0(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->()V +HSPLjava/util/TreeMap;->(Ljava/util/Comparator;)V +HSPLjava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V +HSPLjava/util/TreeMap;->ceilingKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->clear()V +HSPLjava/util/TreeMap;->clone()Ljava/lang/Object; +HSPLjava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z +HSPLjava/util/TreeMap;->comparator()Ljava/util/Comparator; +HSPLjava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/TreeMap;->computeRedLevel(I)I +HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->entrySet()Ljava/util/Set; +HSPLjava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->firstKey()Ljava/lang/Object; +HSPLjava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->floorKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->higherKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->keyIterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->keySet()Ljava/util/Set; +HSPLjava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->lowerEntry(Ljava/lang/Object;)Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->navigableKeySet()Ljava/util/NavigableSet; +HSPLjava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->pollFirstEntry()Ljava/util/Map$Entry; +HSPLjava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V +HSPLjava/util/TreeMap;->setColor(Ljava/util/TreeMap$TreeMapEntry;Z)V +HSPLjava/util/TreeMap;->size()I +HSPLjava/util/TreeMap;->subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap; +HSPLjava/util/TreeMap;->subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableMap; +HSPLjava/util/TreeMap;->successor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; +HSPLjava/util/TreeMap;->values()Ljava/util/Collection; +HSPLjava/util/TreeSet;->()V +HSPLjava/util/TreeSet;->(Ljava/util/Collection;)V +HSPLjava/util/TreeSet;->(Ljava/util/Comparator;)V +HSPLjava/util/TreeSet;->(Ljava/util/NavigableMap;)V +HSPLjava/util/TreeSet;->add(Ljava/lang/Object;)Z +HSPLjava/util/TreeSet;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/TreeSet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeSet;->clear()V +HSPLjava/util/TreeSet;->contains(Ljava/lang/Object;)Z +HSPLjava/util/TreeSet;->first()Ljava/lang/Object; +HSPLjava/util/TreeSet;->floor(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeSet;->higher(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeSet;->isEmpty()Z +HSPLjava/util/TreeSet;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeSet;->pollFirst()Ljava/lang/Object; +HSPLjava/util/TreeSet;->remove(Ljava/lang/Object;)Z +HSPLjava/util/TreeSet;->size()I +HSPLjava/util/UUID;->(JJ)V +HSPLjava/util/UUID;->([B)V +HSPLjava/util/UUID;->digits(JI)Ljava/lang/String; +HSPLjava/util/UUID;->equals(Ljava/lang/Object;)Z +HSPLjava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID; +HSPLjava/util/UUID;->getLeastSignificantBits()J +HSPLjava/util/UUID;->getMostSignificantBits()J +HSPLjava/util/UUID;->hashCode()I +HSPLjava/util/UUID;->randomUUID()Ljava/util/UUID; +HSPLjava/util/UUID;->toString()Ljava/lang/String; +HSPLjava/util/Vector$1;->(Ljava/util/Vector;)V +HSPLjava/util/Vector$1;->hasMoreElements()Z +HSPLjava/util/Vector$1;->nextElement()Ljava/lang/Object; +HSPLjava/util/Vector$Itr;->(Ljava/util/Vector;)V +HSPLjava/util/Vector$Itr;->(Ljava/util/Vector;Ljava/util/Vector$Itr;)V +HSPLjava/util/Vector$Itr;->checkForComodification()V +HSPLjava/util/Vector$Itr;->hasNext()Z +HSPLjava/util/Vector$Itr;->next()Ljava/lang/Object; +HSPLjava/util/Vector;->()V +HSPLjava/util/Vector;->(I)V +HSPLjava/util/Vector;->(II)V +HSPLjava/util/Vector;->add(Ljava/lang/Object;)Z +HSPLjava/util/Vector;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/Vector;->addElement(Ljava/lang/Object;)V +HSPLjava/util/Vector;->clear()V +HSPLjava/util/Vector;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Vector;->copyInto([Ljava/lang/Object;)V +HSPLjava/util/Vector;->elementAt(I)Ljava/lang/Object; +HSPLjava/util/Vector;->elementData(I)Ljava/lang/Object; +HSPLjava/util/Vector;->elements()Ljava/util/Enumeration; +HSPLjava/util/Vector;->ensureCapacityHelper(I)V +HSPLjava/util/Vector;->get(I)Ljava/lang/Object; +HSPLjava/util/Vector;->grow(I)V +HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;I)I +HSPLjava/util/Vector;->isEmpty()Z +HSPLjava/util/Vector;->iterator()Ljava/util/Iterator; +HSPLjava/util/Vector;->removeAllElements()V +HSPLjava/util/Vector;->removeElement(Ljava/lang/Object;)Z +HSPLjava/util/Vector;->removeElementAt(I)V +HSPLjava/util/Vector;->size()I +HSPLjava/util/Vector;->toArray()[Ljava/lang/Object; +HSPLjava/util/Vector;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/WeakHashMap$Entry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V +HSPLjava/util/WeakHashMap$Entry;->getKey()Ljava/lang/Object; +HSPLjava/util/WeakHashMap$HashIterator;->(Ljava/util/WeakHashMap;)V +HSPLjava/util/WeakHashMap$HashIterator;->hasNext()Z +HSPLjava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry; +HSPLjava/util/WeakHashMap$KeyIterator;->(Ljava/util/WeakHashMap;)V +HSPLjava/util/WeakHashMap$KeyIterator;->(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$KeyIterator;)V +HSPLjava/util/WeakHashMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/WeakHashMap$KeySet;->(Ljava/util/WeakHashMap;)V +HSPLjava/util/WeakHashMap$KeySet;->(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$KeySet;)V +HSPLjava/util/WeakHashMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/WeakHashMap$KeySet;->size()I +HSPLjava/util/WeakHashMap;->()V +HSPLjava/util/WeakHashMap;->(I)V +HSPLjava/util/WeakHashMap;->(IF)V +HSPLjava/util/WeakHashMap;->clear()V +HSPLjava/util/WeakHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/WeakHashMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/WeakHashMap;->expungeStaleEntries()V +HSPLjava/util/WeakHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry; +HSPLjava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry; +HSPLjava/util/WeakHashMap;->hash(Ljava/lang/Object;)I +HSPLjava/util/WeakHashMap;->indexFor(II)I +HSPLjava/util/WeakHashMap;->isEmpty()Z +HSPLjava/util/WeakHashMap;->keySet()Ljava/util/Set; +HSPLjava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry; +HSPLjava/util/WeakHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/WeakHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/WeakHashMap;->resize(I)V +HSPLjava/util/WeakHashMap;->size()I +HSPLjava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V +HSPLjava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/AbstractExecutorService;->()V +HSPLjava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;I)V +HSPLjava/util/concurrent/AbstractExecutorService;->invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List; +HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture; +HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture; +HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/ArrayBlockingQueue;->(I)V +HSPLjava/util/concurrent/ArrayBlockingQueue;->(IZ)V +HSPLjava/util/concurrent/ArrayBlockingQueue;->dequeue()Ljava/lang/Object; +HSPLjava/util/concurrent/ArrayBlockingQueue;->drainTo(Ljava/util/Collection;)I +HSPLjava/util/concurrent/ArrayBlockingQueue;->drainTo(Ljava/util/Collection;I)I +HSPLjava/util/concurrent/ArrayBlockingQueue;->enqueue(Ljava/lang/Object;)V +HSPLjava/util/concurrent/ArrayBlockingQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ArrayBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/ArrayBlockingQueue;->put(Ljava/lang/Object;)V +HSPLjava/util/concurrent/ArrayBlockingQueue;->size()I +HSPLjava/util/concurrent/ArrayBlockingQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->addFirst(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->addLast(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->contains(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->element()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/BlockingDeque;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->offer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/BlockingDeque;->offerFirst(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->offerFirst(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/BlockingDeque;->offerLast(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->offerLast(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/BlockingDeque;->peek()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->poll()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->pollLast(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->push(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->put(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->putFirst(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->putLast(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingDeque;->remove()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->removeFirstOccurrence(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->removeLastOccurrence(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingDeque;->size()I +HSPLjava/util/concurrent/BlockingDeque;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->takeFirst()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingDeque;->takeLast()Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingQueue;->contains(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingQueue;->drainTo(Ljava/util/Collection;)I +HSPLjava/util/concurrent/BlockingQueue;->drainTo(Ljava/util/Collection;I)I +HSPLjava/util/concurrent/BlockingQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingQueue;->offer(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/BlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/BlockingQueue;->put(Ljava/lang/Object;)V +HSPLjava/util/concurrent/BlockingQueue;->remainingCapacity()I +HSPLjava/util/concurrent/BlockingQueue;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/BlockingQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/Callable;->call()Ljava/lang/Object; +HSPLjava/util/concurrent/CancellationException;->()V +HSPLjava/util/concurrent/CompletableFuture$AltResult;->(Ljava/lang/Throwable;)V +HSPLjava/util/concurrent/CompletableFuture;->()V +HSPLjava/util/concurrent/CompletableFuture;->complete(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CompletableFuture;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/CompletableFuture;->postComplete()V +HSPLjava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/CompletionStage;->acceptEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->acceptEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->applyToEither(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->applyToEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->exceptionally(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->handle(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->handleAsync(Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->handleAsync(Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterBoth(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterEither(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->runAfterEitherAsync(Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAccept(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAcceptAsync(Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAcceptAsync(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAcceptBoth(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenAcceptBothAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenApply(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenApplyAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenApplyAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenCombine(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenCombineAsync(Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenCompose(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenComposeAsync(Ljava/util/function/Function;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenComposeAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenRun(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenRunAsync(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->thenRunAsync(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->toCompletableFuture()Ljava/util/concurrent/CompletableFuture; +HSPLjava/util/concurrent/CompletionStage;->whenComplete(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->whenCompleteAsync(Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/CompletionStage;->whenCompleteAsync(Ljava/util/function/BiConsumer;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletionStage; +HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z +HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->(Ljava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->size()I +HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;->(Ljava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/ConcurrentHashMap$ForwardingNode;->([Ljava/util/concurrent/ConcurrentHashMap$Node;)V +HSPLjava/util/concurrent/ConcurrentHashMap$KeyIterator;->([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V +HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;->getKey()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;->getValue()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap$Node;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V +HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;->([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V +HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->lockRoot()V +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->putTreeVal(ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateLeft(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateRight(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->unlockRoot()V +HSPLjava/util/concurrent/ConcurrentHashMap$TreeNode;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V +HSPLjava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;->([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap$ValuesView;->(Ljava/util/concurrent/ConcurrentHashMap;)V +HSPLjava/util/concurrent/ConcurrentHashMap$ValuesView;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/ConcurrentHashMap;->()V +HSPLjava/util/concurrent/ConcurrentHashMap;->(I)V +HSPLjava/util/concurrent/ConcurrentHashMap;->(IFI)V +HSPLjava/util/concurrent/ConcurrentHashMap;->addCount(JI)V +HSPLjava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->clear()V +HSPLjava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->containsValue(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set; +HSPLjava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node; +HSPLjava/util/concurrent/ConcurrentHashMap;->isEmpty()Z +HSPLjava/util/concurrent/ConcurrentHashMap;->keySet()Ljava/util/Set; +HSPLjava/util/concurrent/ConcurrentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->putAll(Ljava/util/Map;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I +HSPLjava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->size()I +HSPLjava/util/concurrent/ConcurrentHashMap;->spread(I)I +HSPLjava/util/concurrent/ConcurrentHashMap;->sumCount()J +HSPLjava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node; +HSPLjava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I +HSPLjava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V +HSPLjava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V +HSPLjava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection; +HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->()V +HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->(Ljava/lang/Object;)V +HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->casNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z +HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V +HSPLjava/util/concurrent/ConcurrentLinkedDeque;->()V +HSPLjava/util/concurrent/ConcurrentLinkedDeque;->addLast(Ljava/lang/Object;)V +HSPLjava/util/concurrent/ConcurrentLinkedDeque;->first()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; +HSPLjava/util/concurrent/ConcurrentLinkedDeque;->linkLast(Ljava/lang/Object;)V +HSPLjava/util/concurrent/ConcurrentLinkedDeque;->size()I +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->(Ljava/util/concurrent/ConcurrentLinkedQueue;)V +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->hasNext()Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->remove()V +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;->()V +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;->(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->()V +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->newNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->size()I +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V +HSPLjava/util/concurrent/ConcurrentNavigableMap;->descendingKeySet()Ljava/util/NavigableSet; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->headMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->headMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->keySet()Ljava/util/NavigableSet; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->navigableKeySet()Ljava/util/NavigableSet; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->tailMap(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentNavigableMap;->tailMap(Ljava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap; +HSPLjava/util/concurrent/ConcurrentSkipListMap$HeadIndex;->(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z +HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z +HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->(Ljava/util/concurrent/ConcurrentSkipListMap;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->hasNext()Z +HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->casNext(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z +HSPLjava/util/concurrent/ConcurrentSkipListMap$ValueIterator;->(Ljava/util/concurrent/ConcurrentSkipListMap;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentSkipListMap$Values;->(Ljava/util/concurrent/ConcurrentNavigableMap;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap$Values;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->(Ljava/util/Comparator;)V +HSPLjava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z +HSPLjava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->findFirst()Ljava/util/concurrent/ConcurrentSkipListMap$Node; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->initialize()V +HSPLjava/util/concurrent/ConcurrentSkipListMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentSkipListMap;->values()Ljava/util/Collection; +HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->([Ljava/lang/Object;I)V +HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->hasNext()Z +HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->()V +HSPLjava/util/concurrent/CopyOnWriteArrayList;->(Ljava/util/Collection;)V +HSPLjava/util/concurrent/CopyOnWriteArrayList;->([Ljava/lang/Object;)V +HSPLjava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->addIfAbsent(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->addIfAbsent(Ljava/lang/Object;[Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->clear()V +HSPLjava/util/concurrent/CopyOnWriteArrayList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->equals(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->get(I)Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->get([Ljava/lang/Object;I)Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->getArray()[Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;II)I +HSPLjava/util/concurrent/CopyOnWriteArrayList;->isEmpty()Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(I)Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;[Ljava/lang/Object;I)Z +HSPLjava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V +HSPLjava/util/concurrent/CopyOnWriteArrayList;->size()I +HSPLjava/util/concurrent/CopyOnWriteArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/concurrent/CopyOnWriteArraySet;->()V +HSPLjava/util/concurrent/CopyOnWriteArraySet;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CopyOnWriteArraySet;->isEmpty()Z +HSPLjava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/concurrent/CopyOnWriteArraySet;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/CountDownLatch$Sync;->(I)V +HSPLjava/util/concurrent/CountDownLatch$Sync;->getCount()I +HSPLjava/util/concurrent/CountDownLatch$Sync;->tryAcquireShared(I)I +HSPLjava/util/concurrent/CountDownLatch$Sync;->tryReleaseShared(I)Z +HSPLjava/util/concurrent/CountDownLatch;->(I)V +HSPLjava/util/concurrent/CountDownLatch;->await()V +HSPLjava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/CountDownLatch;->countDown()V +HSPLjava/util/concurrent/CountDownLatch;->getCount()J +HSPLjava/util/concurrent/DelayQueue;->()V +HSPLjava/util/concurrent/DelayQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/DelayQueue;->add(Ljava/util/concurrent/Delayed;)Z +HSPLjava/util/concurrent/DelayQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/DelayQueue;->offer(Ljava/util/concurrent/Delayed;)Z +HSPLjava/util/concurrent/DelayQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/DelayQueue;->take()Ljava/util/concurrent/Delayed; +HSPLjava/util/concurrent/Delayed;->getDelay(Ljava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/ExecutionException;->(Ljava/lang/Throwable;)V +HSPLjava/util/concurrent/ExecutorService;->awaitTermination(JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/ExecutorService;->isTerminated()Z +HSPLjava/util/concurrent/ExecutorService;->shutdownNow()Ljava/util/List; +HSPLjava/util/concurrent/Executors$DefaultThreadFactory;->()V +HSPLjava/util/concurrent/Executors$DefaultThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->(Ljava/util/concurrent/ExecutorService;)V +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->execute(Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->isShutdown()Z +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->isTerminated()Z +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdown()V +HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->(Ljava/util/concurrent/ScheduledExecutorService;)V +HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->(Ljava/util/concurrent/ExecutorService;)V +HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->finalize()V +HSPLjava/util/concurrent/Executors$RunnableAdapter;->(Ljava/lang/Runnable;Ljava/lang/Object;)V +HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object; +HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable; +HSPLjava/util/concurrent/Executors;->defaultThreadFactory()Ljava/util/concurrent/ThreadFactory; +HSPLjava/util/concurrent/Executors;->newCachedThreadPool()Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newCachedThreadPool(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newFixedThreadPool(I)Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newScheduledThreadPool(I)Ljava/util/concurrent/ScheduledExecutorService; +HSPLjava/util/concurrent/Executors;->newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLjava/util/concurrent/Executors;->newSingleThreadExecutor()Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService; +HSPLjava/util/concurrent/Executors;->newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService; +HSPLjava/util/concurrent/Executors;->newSingleThreadScheduledExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService; +HSPLjava/util/concurrent/ForkJoinPool$1;->()V +HSPLjava/util/concurrent/ForkJoinPool$1;->run()Ljava/lang/Object; +HSPLjava/util/concurrent/ForkJoinPool$1;->run()Ljava/util/concurrent/ForkJoinPool; +HSPLjava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;->()V +HSPLjava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;->(Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;)V +HSPLjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;->newThread(Ljava/util/concurrent/ForkJoinPool;)Ljava/util/concurrent/ForkJoinWorkerThread; +HSPLjava/util/concurrent/ForkJoinPool;->(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;ILjava/lang/String;)V +HSPLjava/util/concurrent/ForkJoinPool;->commonPool()Ljava/util/concurrent/ForkJoinPool; +HSPLjava/util/concurrent/ForkJoinPool;->getCommonPoolParallelism()I +HSPLjava/util/concurrent/ForkJoinPool;->makeCommonPool()Ljava/util/concurrent/ForkJoinPool; +HSPLjava/util/concurrent/Future;->cancel(Z)Z +HSPLjava/util/concurrent/Future;->get()Ljava/lang/Object; +HSPLjava/util/concurrent/Future;->isCancelled()Z +HSPLjava/util/concurrent/Future;->isDone()Z +HSPLjava/util/concurrent/FutureTask$WaitNode;->()V +HSPLjava/util/concurrent/FutureTask;->(Ljava/lang/Runnable;Ljava/lang/Object;)V +HSPLjava/util/concurrent/FutureTask;->(Ljava/util/concurrent/Callable;)V +HSPLjava/util/concurrent/FutureTask;->awaitDone(ZJ)I +HSPLjava/util/concurrent/FutureTask;->cancel(Z)Z +HSPLjava/util/concurrent/FutureTask;->done()V +HSPLjava/util/concurrent/FutureTask;->finishCompletion()V +HSPLjava/util/concurrent/FutureTask;->get()Ljava/lang/Object; +HSPLjava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V +HSPLjava/util/concurrent/FutureTask;->isCancelled()Z +HSPLjava/util/concurrent/FutureTask;->isDone()Z +HSPLjava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V +HSPLjava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object; +HSPLjava/util/concurrent/FutureTask;->run()V +HSPLjava/util/concurrent/FutureTask;->runAndReset()Z +HSPLjava/util/concurrent/FutureTask;->set(Ljava/lang/Object;)V +HSPLjava/util/concurrent/FutureTask;->setException(Ljava/lang/Throwable;)V +HSPLjava/util/concurrent/LinkedBlockingDeque$Node;->(Ljava/lang/Object;)V +HSPLjava/util/concurrent/LinkedBlockingDeque;->()V +HSPLjava/util/concurrent/LinkedBlockingDeque;->(I)V +HSPLjava/util/concurrent/LinkedBlockingDeque;->linkLast(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z +HSPLjava/util/concurrent/LinkedBlockingDeque;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/LinkedBlockingDeque;->offerLast(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/LinkedBlockingDeque;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingDeque;->size()I +HSPLjava/util/concurrent/LinkedBlockingDeque;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingDeque;->takeFirst()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue$Node;->(Ljava/lang/Object;)V +HSPLjava/util/concurrent/LinkedBlockingQueue;->()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->(I)V +HSPLjava/util/concurrent/LinkedBlockingQueue;->clear()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->dequeue()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;)I +HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;I)I +HSPLjava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V +HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyLock()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/LinkedBlockingQueue;->peek()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue;->put(Ljava/lang/Object;)V +HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->size()I +HSPLjava/util/concurrent/LinkedBlockingQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/LinkedBlockingQueue;->toArray()[Ljava/lang/Object; +HSPLjava/util/concurrent/PriorityBlockingQueue;->()V +HSPLjava/util/concurrent/PriorityBlockingQueue;->(ILjava/util/Comparator;)V +HSPLjava/util/concurrent/PriorityBlockingQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/PriorityBlockingQueue;->dequeue()Ljava/lang/Object; +HSPLjava/util/concurrent/PriorityBlockingQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/PriorityBlockingQueue;->put(Ljava/lang/Object;)V +HSPLjava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V +HSPLjava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/util/concurrent/PriorityBlockingQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/RejectedExecutionHandler;->rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V +HSPLjava/util/concurrent/RunnableFuture;->run()V +HSPLjava/util/concurrent/RunnableScheduledFuture;->isPeriodic()Z +HSPLjava/util/concurrent/ScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledExecutorService;->schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledExecutorService;->scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->()V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->finishPoll(Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->isEmpty()Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->peekExpired()Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size()I +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->take()Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->toArray()[Ljava/lang/Object; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJ)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJJ)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/Callable;JJ)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->cancel(Z)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/lang/Object;)I +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->getDelay(Ljava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->isPeriodic()Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->run()V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->(I)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->(ILjava/util/concurrent/ThreadFactory;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->canRunInCurrentRunState(Z)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->decorateTask(Ljava/lang/Runnable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->decorateTask(Ljava/util/concurrent/Callable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->delayedExecute(Ljava/util/concurrent/RunnableScheduledFuture;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->getContinueExistingPeriodicTasksAfterShutdownPolicy()Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->getExecuteExistingDelayedTasksAfterShutdownPolicy()Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->onShutdown()V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->reExecutePeriodic(Ljava/util/concurrent/RunnableScheduledFuture;)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->setRemoveOnCancelPolicy(Z)V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdown()V +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdownNow()Ljava/util/List; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/Semaphore$FairSync;->(I)V +HSPLjava/util/concurrent/Semaphore$NonfairSync;->(I)V +HSPLjava/util/concurrent/Semaphore$NonfairSync;->tryAcquireShared(I)I +HSPLjava/util/concurrent/Semaphore$Sync;->(I)V +HSPLjava/util/concurrent/Semaphore$Sync;->getPermits()I +HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I +HSPLjava/util/concurrent/Semaphore$Sync;->tryReleaseShared(I)Z +HSPLjava/util/concurrent/Semaphore;->(I)V +HSPLjava/util/concurrent/Semaphore;->(IZ)V +HSPLjava/util/concurrent/Semaphore;->acquire()V +HSPLjava/util/concurrent/Semaphore;->acquireUninterruptibly()V +HSPLjava/util/concurrent/Semaphore;->availablePermits()I +HSPLjava/util/concurrent/Semaphore;->release()V +HSPLjava/util/concurrent/Semaphore;->tryAcquire()Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->(Ljava/lang/Object;)V +HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V +HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->()V +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->shouldSpin(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object; +HSPLjava/util/concurrent/SynchronousQueue$Transferer;->()V +HSPLjava/util/concurrent/SynchronousQueue$Transferer;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object; +HSPLjava/util/concurrent/SynchronousQueue;->()V +HSPLjava/util/concurrent/SynchronousQueue;->(Z)V +HSPLjava/util/concurrent/SynchronousQueue;->drainTo(Ljava/util/Collection;)I +HSPLjava/util/concurrent/SynchronousQueue;->isEmpty()Z +HSPLjava/util/concurrent/SynchronousQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/SynchronousQueue;->poll()Ljava/lang/Object; +HSPLjava/util/concurrent/SynchronousQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/SynchronousQueue;->take()Ljava/lang/Object; +HSPLjava/util/concurrent/ThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +HSPLjava/util/concurrent/ThreadLocalRandom$1;->()V +HSPLjava/util/concurrent/ThreadLocalRandom$1;->run()Ljava/lang/Boolean; +HSPLjava/util/concurrent/ThreadLocalRandom$1;->run()Ljava/lang/Object; +HSPLjava/util/concurrent/ThreadLocalRandom;->()V +HSPLjava/util/concurrent/ThreadLocalRandom;->current()Ljava/util/concurrent/ThreadLocalRandom; +HSPLjava/util/concurrent/ThreadLocalRandom;->localInit()V +HSPLjava/util/concurrent/ThreadLocalRandom;->mix32(J)I +HSPLjava/util/concurrent/ThreadLocalRandom;->mix64(J)J +HSPLjava/util/concurrent/ThreadLocalRandom;->nextInt()I +HSPLjava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I +HSPLjava/util/concurrent/ThreadLocalRandom;->nextSeed()J +HSPLjava/util/concurrent/ThreadLocalRandom;->setSeed(J)V +HSPLjava/util/concurrent/ThreadPoolExecutor$AbortPolicy;->()V +HSPLjava/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy;->()V +HSPLjava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;->()V +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->(Ljava/util/concurrent/ThreadPoolExecutor;Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->lock()V +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->run()V +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryAcquire(I)Z +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryLock()Z +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryRelease(I)Z +HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut(Z)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->compareAndIncrementWorkerCount(I)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I +HSPLjava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List; +HSPLjava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->finalize()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->getMaximumPoolSize()I +HSPLjava/util/concurrent/ThreadPoolExecutor;->getQueue()Ljava/util/concurrent/BlockingQueue; +HSPLjava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable; +HSPLjava/util/concurrent/ThreadPoolExecutor;->getThreadFactory()Ljava/util/concurrent/ThreadFactory; +HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->isShutdown()Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->isTerminated()Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->onShutdown()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartAllCoreThreads()I +HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartCoreThread()Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I +HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->setMaximumPoolSize(I)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdown()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdownNow()Ljava/util/List; +HSPLjava/util/concurrent/ThreadPoolExecutor;->terminated()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V +HSPLjava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I +HSPLjava/util/concurrent/TimeUnit$1;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$1;->convert(JLjava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/TimeUnit$1;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit$1;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$1;->toNanos(J)J +HSPLjava/util/concurrent/TimeUnit$2;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/TimeUnit$2;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit$3;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$3;->convert(JLjava/util/concurrent/TimeUnit;)J +HSPLjava/util/concurrent/TimeUnit$3;->toDays(J)J +HSPLjava/util/concurrent/TimeUnit$3;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit$3;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$3;->toMinutes(J)J +HSPLjava/util/concurrent/TimeUnit$3;->toNanos(J)J +HSPLjava/util/concurrent/TimeUnit$3;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$4;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$4;->toMicros(J)J +HSPLjava/util/concurrent/TimeUnit$4;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$4;->toNanos(J)J +HSPLjava/util/concurrent/TimeUnit$4;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$5;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$5;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$5;->toNanos(J)J +HSPLjava/util/concurrent/TimeUnit$5;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$6;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$6;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$6;->toMinutes(J)J +HSPLjava/util/concurrent/TimeUnit$6;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit$7;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit$7;->toHours(J)J +HSPLjava/util/concurrent/TimeUnit$7;->toMillis(J)J +HSPLjava/util/concurrent/TimeUnit$7;->toSeconds(J)J +HSPLjava/util/concurrent/TimeUnit;->(Ljava/lang/String;I)V +HSPLjava/util/concurrent/TimeUnit;->(Ljava/lang/String;ILjava/util/concurrent/TimeUnit;)V +HSPLjava/util/concurrent/TimeUnit;->x(JJJ)J +HSPLjava/util/concurrent/TimeoutException;->()V +HSPLjava/util/concurrent/atomic/AtomicBoolean;->()V +HSPLjava/util/concurrent/atomic/AtomicBoolean;->(Z)V +HSPLjava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z +HSPLjava/util/concurrent/atomic/AtomicBoolean;->get()Z +HSPLjava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z +HSPLjava/util/concurrent/atomic/AtomicBoolean;->set(Z)V +HSPLjava/util/concurrent/atomic/AtomicBoolean;->toString()Ljava/lang/String; +HSPLjava/util/concurrent/atomic/AtomicInteger;->()V +HSPLjava/util/concurrent/atomic/AtomicInteger;->(I)V +HSPLjava/util/concurrent/atomic/AtomicInteger;->addAndGet(I)I +HSPLjava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z +HSPLjava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I +HSPLjava/util/concurrent/atomic/AtomicInteger;->get()I +HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndAdd(I)I +HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndDecrement()I +HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I +HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndSet(I)I +HSPLjava/util/concurrent/atomic/AtomicInteger;->incrementAndGet()I +HSPLjava/util/concurrent/atomic/AtomicInteger;->lazySet(I)V +HSPLjava/util/concurrent/atomic/AtomicInteger;->set(I)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1;->(Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;Ljava/lang/Class;Ljava/lang/String;)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1;->run()Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1;->run()Ljava/lang/reflect/Field; +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->decrementAndGet(Ljava/lang/Object;)I +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->getAndAdd(Ljava/lang/Object;I)I +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->()V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->compareAndSet(Ljava/lang/Object;II)Z +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->get(Ljava/lang/Object;)I +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->lazySet(Ljava/lang/Object;I)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->set(Ljava/lang/Object;I)V +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->weakCompareAndSet(Ljava/lang/Object;II)Z +HSPLjava/util/concurrent/atomic/AtomicLong;->()V +HSPLjava/util/concurrent/atomic/AtomicLong;->(J)V +HSPLjava/util/concurrent/atomic/AtomicLong;->addAndGet(J)J +HSPLjava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z +HSPLjava/util/concurrent/atomic/AtomicLong;->get()J +HSPLjava/util/concurrent/atomic/AtomicLong;->getAndAdd(J)J +HSPLjava/util/concurrent/atomic/AtomicLong;->getAndIncrement()J +HSPLjava/util/concurrent/atomic/AtomicLong;->incrementAndGet()J +HSPLjava/util/concurrent/atomic/AtomicLong;->set(J)V +HSPLjava/util/concurrent/atomic/AtomicReference;->()V +HSPLjava/util/concurrent/atomic/AtomicReference;->(Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReference;->getAndSet(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->(I)V +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->length()I +HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->set(ILjava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->()V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->lazySet(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->set(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->weakCompareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->()V +HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->getExclusiveOwnerThread()Ljava/lang/Thread; +HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->setExclusiveOwnerThread(Ljava/lang/Thread;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->await()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->awaitNanos(J)J +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->hasWaiters()Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signal()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetWaitStatus(II)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->isShared()Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->predecessor()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireInterruptibly(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireShared(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireSharedInterruptibly(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->apparentlyFirstQueuedIsExclusive()Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetState(II)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireInterruptibly(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireShared(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedInterruptibly(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedNanos(IJ)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doReleaseShared()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->getState()I +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->hasQueuedPredecessors()Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->initializeSyncQueue()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->owns(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->parkAndCheckInterrupt()Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->releaseShared(I)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->selfInterrupt()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setState(I)V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V +HSPLjava/util/concurrent/locks/Condition;->await()V +HSPLjava/util/concurrent/locks/Condition;->await(JLjava/util/concurrent/TimeUnit;)Z +HSPLjava/util/concurrent/locks/Condition;->awaitNanos(J)J +HSPLjava/util/concurrent/locks/Condition;->awaitUninterruptibly()V +HSPLjava/util/concurrent/locks/Condition;->awaitUntil(Ljava/util/Date;)Z +HSPLjava/util/concurrent/locks/Condition;->signal()V +HSPLjava/util/concurrent/locks/Condition;->signalAll()V +HSPLjava/util/concurrent/locks/LockSupport;->park(Ljava/lang/Object;)V +HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(Ljava/lang/Object;J)V +HSPLjava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V +HSPLjava/util/concurrent/locks/LockSupport;->unpark(Ljava/lang/Thread;)V +HSPLjava/util/concurrent/locks/ReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; +HSPLjava/util/concurrent/locks/ReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; +HSPLjava/util/concurrent/locks/ReentrantLock$FairSync;->()V +HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->()V +HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V +HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->tryAcquire(I)Z +HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->()V +HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->isHeldExclusively()Z +HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; +HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z +HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->tryRelease(I)Z +HSPLjava/util/concurrent/locks/ReentrantLock;->()V +HSPLjava/util/concurrent/locks/ReentrantLock;->(Z)V +HSPLjava/util/concurrent/locks/ReentrantLock;->hasWaiters(Ljava/util/concurrent/locks/Condition;)Z +HSPLjava/util/concurrent/locks/ReentrantLock;->isHeldByCurrentThread()Z +HSPLjava/util/concurrent/locks/ReentrantLock;->lock()V +HSPLjava/util/concurrent/locks/ReentrantLock;->lockInterruptibly()V +HSPLjava/util/concurrent/locks/ReentrantLock;->newCondition()Ljava/util/concurrent/locks/Condition; +HSPLjava/util/concurrent/locks/ReentrantLock;->tryLock()Z +HSPLjava/util/concurrent/locks/ReentrantLock;->unlock()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->lock()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->unlock()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/lang/Object; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isHeldExclusively()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readerShouldBlock()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquire(I)Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryRelease(I)Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->writerShouldBlock()Z +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->lock()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->unlock()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->()V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->(Z)V +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock; +HSPLjava/util/function/-$Lambda$VGDeaUHZQIZywZW2ttlyhwk3Cmk$1;->$m$0(D)D +HSPLjava/util/function/-$Lambda$VGDeaUHZQIZywZW2ttlyhwk3Cmk$1;->(BLjava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/function/-$Lambda$VGDeaUHZQIZywZW2ttlyhwk3Cmk$1;->applyAsDouble(D)D +HSPLjava/util/function/Consumer;->accept(Ljava/lang/Object;)V +HSPLjava/util/function/DoubleUnaryOperator;->andThen(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator; +HSPLjava/util/function/DoubleUnaryOperator;->lambda$-java_util_function_DoubleUnaryOperator_3397(Ljava/util/function/DoubleUnaryOperator;D)D +HSPLjava/util/function/Supplier;->get()Ljava/lang/Object; +HSPLjava/util/jar/Attributes$Name;->(Ljava/lang/String;)V +HSPLjava/util/jar/Attributes$Name;->equals(Ljava/lang/Object;)Z +HSPLjava/util/jar/Attributes$Name;->hashCode()I +HSPLjava/util/jar/Attributes$Name;->isAlpha(C)Z +HSPLjava/util/jar/Attributes$Name;->isDigit(C)Z +HSPLjava/util/jar/Attributes$Name;->isValid(C)Z +HSPLjava/util/jar/Attributes$Name;->isValid(Ljava/lang/String;)Z +HSPLjava/util/jar/Attributes$Name;->toString()Ljava/lang/String; +HSPLjava/util/jar/Attributes;->()V +HSPLjava/util/jar/Attributes;->(I)V +HSPLjava/util/jar/Attributes;->entrySet()Ljava/util/Set; +HSPLjava/util/jar/Attributes;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/jar/Attributes;->getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String; +HSPLjava/util/jar/Attributes;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/jar/Attributes;->putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V +HSPLjava/util/jar/Attributes;->size()I +HSPLjava/util/jar/JarEntry;->(Ljava/util/zip/ZipEntry;)V +HSPLjava/util/jar/JarFile$JarEntryIterator;->(Ljava/util/jar/JarFile;)V +HSPLjava/util/jar/JarFile$JarEntryIterator;->(Ljava/util/jar/JarFile;Ljava/util/jar/JarFile$JarEntryIterator;)V +HSPLjava/util/jar/JarFile$JarEntryIterator;->hasMoreElements()Z +HSPLjava/util/jar/JarFile$JarEntryIterator;->hasNext()Z +HSPLjava/util/jar/JarFile$JarEntryIterator;->next()Ljava/util/jar/JarEntry; +HSPLjava/util/jar/JarFile$JarEntryIterator;->nextElement()Ljava/lang/Object; +HSPLjava/util/jar/JarFile$JarEntryIterator;->nextElement()Ljava/util/jar/JarEntry; +HSPLjava/util/jar/JarFile$JarFileEntry;->(Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V +HSPLjava/util/jar/JarFile$JarFileEntry;->getCertificates()[Ljava/security/cert/Certificate; +HSPLjava/util/jar/JarFile;->-wrap0(Ljava/util/jar/JarFile;)V +HSPLjava/util/jar/JarFile;->-wrap1(Ljava/util/jar/JarFile;)Ljava/util/Enumeration; +HSPLjava/util/jar/JarFile;->(Ljava/io/File;Z)V +HSPLjava/util/jar/JarFile;->(Ljava/io/File;ZI)V +HSPLjava/util/jar/JarFile;->(Ljava/lang/String;)V +HSPLjava/util/jar/JarFile;->entries()Ljava/util/Enumeration; +HSPLjava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B +HSPLjava/util/jar/JarFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; +HSPLjava/util/jar/JarFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream; +HSPLjava/util/jar/JarFile;->getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry; +HSPLjava/util/jar/JarFile;->getManEntry()Ljava/util/jar/JarEntry; +HSPLjava/util/jar/JarFile;->getManifest()Ljava/util/jar/Manifest; +HSPLjava/util/jar/JarFile;->getManifestFromReference()Ljava/util/jar/Manifest; +HSPLjava/util/jar/JarFile;->initializeVerifier()V +HSPLjava/util/jar/JarFile;->maybeInstantiateVerifier()V +HSPLjava/util/jar/JarVerifier$1;->(Ljava/util/jar/JarVerifier;)V +HSPLjava/util/jar/JarVerifier$VerifierStream;->(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V +HSPLjava/util/jar/JarVerifier$VerifierStream;->available()I +HSPLjava/util/jar/JarVerifier$VerifierStream;->close()V +HSPLjava/util/jar/JarVerifier$VerifierStream;->read([BII)I +HSPLjava/util/jar/JarVerifier;->([B)V +HSPLjava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V +HSPLjava/util/jar/JarVerifier;->doneWithMeta()V +HSPLjava/util/jar/JarVerifier;->mapSignersToCertArray([Ljava/security/CodeSigner;)[Ljava/security/cert/Certificate; +HSPLjava/util/jar/JarVerifier;->nothingToVerify()Z +HSPLjava/util/jar/JarVerifier;->processEntry(Lsun/security/util/ManifestEntryVerifier;)V +HSPLjava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V +HSPLjava/util/jar/Manifest$FastInputStream;->(Ljava/io/InputStream;)V +HSPLjava/util/jar/Manifest$FastInputStream;->(Ljava/io/InputStream;I)V +HSPLjava/util/jar/Manifest$FastInputStream;->fill()V +HSPLjava/util/jar/Manifest$FastInputStream;->peek()B +HSPLjava/util/jar/Manifest$FastInputStream;->readLine([B)I +HSPLjava/util/jar/Manifest$FastInputStream;->readLine([BII)I +HSPLjava/util/jar/Manifest;->()V +HSPLjava/util/jar/Manifest;->(Ljava/io/InputStream;)V +HSPLjava/util/jar/Manifest;->getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes; +HSPLjava/util/jar/Manifest;->getEntries()Ljava/util/Map; +HSPLjava/util/jar/Manifest;->getMainAttributes()Ljava/util/jar/Attributes; +HSPLjava/util/jar/Manifest;->parseName([BI)Ljava/lang/String; +HSPLjava/util/jar/Manifest;->read(Ljava/io/InputStream;)V +HSPLjava/util/jar/Manifest;->toLower(I)I +HSPLjava/util/logging/ErrorManager;->()V +HSPLjava/util/logging/FileHandler$InitializationErrorManager;->()V +HSPLjava/util/logging/FileHandler$InitializationErrorManager;->(Ljava/util/logging/FileHandler$InitializationErrorManager;)V +HSPLjava/util/logging/FileHandler$MeteredStream;->(Ljava/util/logging/FileHandler;Ljava/io/OutputStream;I)V +HSPLjava/util/logging/FileHandler;->(Ljava/lang/String;IIZ)V +HSPLjava/util/logging/FileHandler;->configure()V +HSPLjava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File; +HSPLjava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z +HSPLjava/util/logging/FileHandler;->open(Ljava/io/File;Z)V +HSPLjava/util/logging/FileHandler;->openFiles()V +HSPLjava/util/logging/Formatter;->()V +HSPLjava/util/logging/Formatter;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String; +HSPLjava/util/logging/Handler;->()V +HSPLjava/util/logging/Handler;->checkPermission()V +HSPLjava/util/logging/Handler;->close()V +HSPLjava/util/logging/Handler;->flush()V +HSPLjava/util/logging/Handler;->getEncoding()Ljava/lang/String; +HSPLjava/util/logging/Handler;->getFormatter()Ljava/util/logging/Formatter; +HSPLjava/util/logging/Handler;->publish(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/Handler;->setEncoding(Ljava/lang/String;)V +HSPLjava/util/logging/Handler;->setErrorManager(Ljava/util/logging/ErrorManager;)V +HSPLjava/util/logging/Handler;->setFilter(Ljava/util/logging/Filter;)V +HSPLjava/util/logging/Handler;->setFormatter(Ljava/util/logging/Formatter;)V +HSPLjava/util/logging/Handler;->setLevel(Ljava/util/logging/Level;)V +HSPLjava/util/logging/Level$KnownLevel;->(Ljava/util/logging/Level;)V +HSPLjava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V +HSPLjava/util/logging/Level$KnownLevel;->findByName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel; +HSPLjava/util/logging/Level;->-get0(Ljava/util/logging/Level;)Ljava/lang/String; +HSPLjava/util/logging/Level;->-get2(Ljava/util/logging/Level;)I +HSPLjava/util/logging/Level;->(Ljava/lang/String;ILjava/lang/String;)V +HSPLjava/util/logging/Level;->(Ljava/lang/String;ILjava/lang/String;Z)V +HSPLjava/util/logging/Level;->equals(Ljava/lang/Object;)Z +HSPLjava/util/logging/Level;->findLevel(Ljava/lang/String;)Ljava/util/logging/Level; +HSPLjava/util/logging/Level;->hashCode()I +HSPLjava/util/logging/Level;->intValue()I +HSPLjava/util/logging/LogManager$1;->()V +HSPLjava/util/logging/LogManager$1;->run()Ljava/lang/Object; +HSPLjava/util/logging/LogManager$1;->run()Ljava/util/logging/LogManager; +HSPLjava/util/logging/LogManager$2;->(Ljava/util/logging/LogManager;Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager$2;->run()Ljava/lang/Object; +HSPLjava/util/logging/LogManager$3;->(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager$3;->run()Ljava/lang/Object; +HSPLjava/util/logging/LogManager$3;->run()Ljava/lang/Void; +HSPLjava/util/logging/LogManager$5;->(Ljava/util/logging/LogManager;Ljava/lang/String;Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager$5;->run()Ljava/lang/Object; +HSPLjava/util/logging/LogManager$Cleaner;->(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager$Cleaner;->(Ljava/util/logging/LogManager;Ljava/util/logging/LogManager$Cleaner;)V +HSPLjava/util/logging/LogManager$LogNode;->(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V +HSPLjava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager$LoggerContext$1;->(Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/Logger;Ljava/util/logging/LogManager;Ljava/lang/String;)V +HSPLjava/util/logging/LogManager$LoggerContext$1;->run()Ljava/lang/Object; +HSPLjava/util/logging/LogManager$LoggerContext$1;->run()Ljava/lang/Void; +HSPLjava/util/logging/LogManager$LoggerContext;->(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager$LoggerContext;->(Ljava/util/logging/LogManager;Ljava/util/logging/LogManager$LoggerContext;)V +HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Ljava/util/logging/LogManager;)Z +HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z +HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;ZLjava/util/logging/LogManager;)Z +HSPLjava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager$LoggerContext;->ensureInitialized()V +HSPLjava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration; +HSPLjava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode; +HSPLjava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager; +HSPLjava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V +HSPLjava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V +HSPLjava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z +HSPLjava/util/logging/LogManager$LoggerWeakRef;->(Ljava/util/logging/LogManager;Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager$LoggerWeakRef;->dispose()V +HSPLjava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V +HSPLjava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V +HSPLjava/util/logging/LogManager$RootLogger;->(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager$RootLogger;->(Ljava/util/logging/LogManager;Ljava/util/logging/LogManager$RootLogger;)V +HSPLjava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler; +HSPLjava/util/logging/LogManager$RootLogger;->addHandler(Ljava/util/logging/Handler;)V +HSPLjava/util/logging/LogManager$SystemLoggerContext;->(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager;->-get3(Ljava/util/logging/LogManager;)Ljava/lang/ref/ReferenceQueue; +HSPLjava/util/logging/LogManager;->-get4()Ljava/util/logging/LogManager; +HSPLjava/util/logging/LogManager;->-get5(Ljava/util/logging/LogManager;)Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager;->-set2(Ljava/util/logging/LogManager;Ljava/util/logging/Logger;)Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager;->-wrap1(Ljava/util/logging/LogManager;Ljava/lang/String;)[Ljava/lang/String; +HSPLjava/util/logging/LogManager;->-wrap2(Ljava/util/logging/Logger;Ljava/util/logging/Level;)V +HSPLjava/util/logging/LogManager;->-wrap3(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager;->-wrap4(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager;->-wrap5(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/LogManager;->()V +HSPLjava/util/logging/LogManager;->(Ljava/lang/Void;)V +HSPLjava/util/logging/LogManager;->addLogger(Ljava/util/logging/Logger;)Z +HSPLjava/util/logging/LogManager;->checkPermission()V +HSPLjava/util/logging/LogManager;->checkSubclassPermissions()Ljava/lang/Void; +HSPLjava/util/logging/LogManager;->contexts()Ljava/util/List; +HSPLjava/util/logging/LogManager;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager;->doSetLevel(Ljava/util/logging/Logger;Ljava/util/logging/Level;)V +HSPLjava/util/logging/LogManager;->doSetParent(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager;->drainLoggerRefQueueBounded()V +HSPLjava/util/logging/LogManager;->ensureLogManagerInitialized()V +HSPLjava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z +HSPLjava/util/logging/LogManager;->getFilterProperty(Ljava/lang/String;Ljava/util/logging/Filter;)Ljava/util/logging/Filter; +HSPLjava/util/logging/LogManager;->getFormatterProperty(Ljava/lang/String;Ljava/util/logging/Formatter;)Ljava/util/logging/Formatter; +HSPLjava/util/logging/LogManager;->getIntProperty(Ljava/lang/String;I)I +HSPLjava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level; +HSPLjava/util/logging/LogManager;->getLogManager()Ljava/util/logging/LogManager; +HSPLjava/util/logging/LogManager;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger; +HSPLjava/util/logging/LogManager;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/logging/LogManager;->getStringProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext; +HSPLjava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext; +HSPLjava/util/logging/LogManager;->initializeGlobalHandlers()V +HSPLjava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String; +HSPLjava/util/logging/LogManager;->readConfiguration()V +HSPLjava/util/logging/LogManager;->readConfiguration(Ljava/io/InputStream;)V +HSPLjava/util/logging/LogManager;->readPrimordialConfiguration()V +HSPLjava/util/logging/LogManager;->reset()V +HSPLjava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/LogManager;->setLevelsOnExistingLoggers()V +HSPLjava/util/logging/LogRecord;->(Ljava/util/logging/Level;Ljava/lang/String;)V +HSPLjava/util/logging/LogRecord;->defaultThreadID()I +HSPLjava/util/logging/LogRecord;->getLevel()Ljava/util/logging/Level; +HSPLjava/util/logging/LogRecord;->getLoggerName()Ljava/lang/String; +HSPLjava/util/logging/LogRecord;->getMessage()Ljava/lang/String; +HSPLjava/util/logging/LogRecord;->getThrown()Ljava/lang/Throwable; +HSPLjava/util/logging/LogRecord;->setLoggerName(Ljava/lang/String;)V +HSPLjava/util/logging/LogRecord;->setSourceClassName(Ljava/lang/String;)V +HSPLjava/util/logging/LogRecord;->setSourceMethodName(Ljava/lang/String;)V +HSPLjava/util/logging/Logger$LoggerBundle;->(Ljava/lang/String;Ljava/util/ResourceBundle;)V +HSPLjava/util/logging/Logger$LoggerBundle;->(Ljava/lang/String;Ljava/util/ResourceBundle;Ljava/util/logging/Logger$LoggerBundle;)V +HSPLjava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z +HSPLjava/util/logging/Logger;->(Ljava/lang/String;)V +HSPLjava/util/logging/Logger;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/logging/LogManager;Z)V +HSPLjava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handler; +HSPLjava/util/logging/Logger;->addHandler(Ljava/util/logging/Handler;)V +HSPLjava/util/logging/Logger;->checkPermission()V +HSPLjava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger; +HSPLjava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle; +HSPLjava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle; +HSPLjava/util/logging/Logger;->getHandlers()[Ljava/util/logging/Handler; +HSPLjava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger; +HSPLjava/util/logging/Logger;->getName()Ljava/lang/String; +HSPLjava/util/logging/Logger;->getParent()Ljava/util/logging/Logger; +HSPLjava/util/logging/Logger;->getResourceBundle()Ljava/util/ResourceBundle; +HSPLjava/util/logging/Logger;->getResourceBundleName()Ljava/lang/String; +HSPLjava/util/logging/Logger;->getUseParentHandlers()Z +HSPLjava/util/logging/Logger;->isLevelInitialized()Z +HSPLjava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z +HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V +HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/logging/Logger;->removeChildLogger(Ljava/util/logging/LogManager$LoggerWeakRef;)V +HSPLjava/util/logging/Logger;->setLevel(Ljava/util/logging/Level;)V +HSPLjava/util/logging/Logger;->setLogManager(Ljava/util/logging/LogManager;)V +HSPLjava/util/logging/Logger;->setParent(Ljava/util/logging/Logger;)V +HSPLjava/util/logging/Logger;->setUseParentHandlers(Z)V +HSPLjava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V +HSPLjava/util/logging/Logger;->updateEffectiveLevel()V +HSPLjava/util/logging/LoggingPermission;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/logging/LoggingProxyImpl;->()V +HSPLjava/util/logging/LoggingProxyImpl;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/logging/SimpleFormatter;->()V +HSPLjava/util/logging/StreamHandler;->()V +HSPLjava/util/logging/StreamHandler;->configure()V +HSPLjava/util/logging/StreamHandler;->flushAndClose()V +HSPLjava/util/logging/StreamHandler;->setEncoding(Ljava/lang/String;)V +HSPLjava/util/logging/StreamHandler;->setOutputStream(Ljava/io/OutputStream;)V +HSPLjava/util/logging/XMLFormatter;->()V +HSPLjava/util/prefs/AbstractPreferences;->childSpi(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences; +HSPLjava/util/prefs/AbstractPreferences;->childrenNamesSpi()[Ljava/lang/String; +HSPLjava/util/prefs/AbstractPreferences;->flushSpi()V +HSPLjava/util/prefs/AbstractPreferences;->getSpi(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/prefs/AbstractPreferences;->keysSpi()[Ljava/lang/String; +HSPLjava/util/prefs/AbstractPreferences;->putSpi(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/prefs/AbstractPreferences;->removeNodeSpi()V +HSPLjava/util/prefs/AbstractPreferences;->removeSpi(Ljava/lang/String;)V +HSPLjava/util/prefs/AbstractPreferences;->syncSpi()V +HSPLjava/util/prefs/Preferences;->absolutePath()Ljava/lang/String; +HSPLjava/util/prefs/Preferences;->addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V +HSPLjava/util/prefs/Preferences;->addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V +HSPLjava/util/prefs/Preferences;->childrenNames()[Ljava/lang/String; +HSPLjava/util/prefs/Preferences;->clear()V +HSPLjava/util/prefs/Preferences;->exportNode(Ljava/io/OutputStream;)V +HSPLjava/util/prefs/Preferences;->exportSubtree(Ljava/io/OutputStream;)V +HSPLjava/util/prefs/Preferences;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/prefs/Preferences;->getBoolean(Ljava/lang/String;Z)Z +HSPLjava/util/prefs/Preferences;->getByteArray(Ljava/lang/String;[B)[B +HSPLjava/util/prefs/Preferences;->getDouble(Ljava/lang/String;D)D +HSPLjava/util/prefs/Preferences;->getFloat(Ljava/lang/String;F)F +HSPLjava/util/prefs/Preferences;->getInt(Ljava/lang/String;I)I +HSPLjava/util/prefs/Preferences;->getLong(Ljava/lang/String;J)J +HSPLjava/util/prefs/Preferences;->keys()[Ljava/lang/String; +HSPLjava/util/prefs/Preferences;->name()Ljava/lang/String; +HSPLjava/util/prefs/Preferences;->node(Ljava/lang/String;)Ljava/util/prefs/Preferences; +HSPLjava/util/prefs/Preferences;->nodeExists(Ljava/lang/String;)Z +HSPLjava/util/prefs/Preferences;->parent()Ljava/util/prefs/Preferences; +HSPLjava/util/prefs/Preferences;->put(Ljava/lang/String;Ljava/lang/String;)V +HSPLjava/util/prefs/Preferences;->putBoolean(Ljava/lang/String;Z)V +HSPLjava/util/prefs/Preferences;->putByteArray(Ljava/lang/String;[B)V +HSPLjava/util/prefs/Preferences;->putDouble(Ljava/lang/String;D)V +HSPLjava/util/prefs/Preferences;->putFloat(Ljava/lang/String;F)V +HSPLjava/util/prefs/Preferences;->putInt(Ljava/lang/String;I)V +HSPLjava/util/prefs/Preferences;->putLong(Ljava/lang/String;J)V +HSPLjava/util/prefs/Preferences;->remove(Ljava/lang/String;)V +HSPLjava/util/prefs/Preferences;->removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V +HSPLjava/util/prefs/Preferences;->removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V +HSPLjava/util/prefs/Preferences;->toString()Ljava/lang/String; +HSPLjava/util/regex/Matcher;->(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V +HSPLjava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V +HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Matcher;->appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; +HSPLjava/util/regex/Matcher;->end()I +HSPLjava/util/regex/Matcher;->end(I)I +HSPLjava/util/regex/Matcher;->ensureMatch()V +HSPLjava/util/regex/Matcher;->find()Z +HSPLjava/util/regex/Matcher;->group(I)Ljava/lang/String; +HSPLjava/util/regex/Matcher;->groupCount()I +HSPLjava/util/regex/Matcher;->lookingAt()Z +HSPLjava/util/regex/Matcher;->matches()Z +HSPLjava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/regex/Matcher;->reset()Ljava/util/regex/Matcher; +HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Matcher;->resetForInput()V +HSPLjava/util/regex/Matcher;->start()I +HSPLjava/util/regex/Matcher;->start(I)I +HSPLjava/util/regex/Matcher;->usePattern(Ljava/util/regex/Pattern;)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Pattern;->(Ljava/lang/String;I)V +HSPLjava/util/regex/Pattern;->compile()V +HSPLjava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern; +HSPLjava/util/regex/Pattern;->compile(Ljava/lang/String;I)Ljava/util/regex/Pattern; +HSPLjava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String; +HSPLjava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Pattern;->matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z +HSPLjava/util/regex/Pattern;->quote(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;)[Ljava/lang/String; +HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String; +HSPLjava/util/stream/-$Lambda$PVrT5KMXWM352lNCiKPCMdt2xL8;->$m$15()Ljava/lang/Object; +HSPLjava/util/stream/-$Lambda$PVrT5KMXWM352lNCiKPCMdt2xL8;->$m$26()Ljava/lang/Object; +HSPLjava/util/stream/-$Lambda$PVrT5KMXWM352lNCiKPCMdt2xL8;->(B)V +HSPLjava/util/stream/-$Lambda$PVrT5KMXWM352lNCiKPCMdt2xL8;->get()Ljava/lang/Object; +HSPLjava/util/stream/-$Lambda$RbwyEXxBvlOKovrx1LFomyWq0zc;->(B)V +HSPLjava/util/stream/-$Lambda$Y1nWb7oHyESmWtTUR-RlHqf5IfU;->$m$4(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/stream/-$Lambda$Y1nWb7oHyESmWtTUR-RlHqf5IfU;->(B)V +HSPLjava/util/stream/-$Lambda$Y1nWb7oHyESmWtTUR-RlHqf5IfU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLjava/util/stream/-$Lambda$ioGbka_-VkWTFjRjTt8T4zzsxgk;->(B)V +HSPLjava/util/stream/-$Lambda$qTstLJg88fs2C3g6LH-R51vCVP0;->(B)V +HSPLjava/util/stream/AbstractPipeline;->(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/AbstractPipeline;->(Ljava/util/stream/AbstractPipeline;I)V +HSPLjava/util/stream/AbstractPipeline;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V +HSPLjava/util/stream/AbstractPipeline;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V +HSPLjava/util/stream/AbstractPipeline;->evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object; +HSPLjava/util/stream/AbstractPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; +HSPLjava/util/stream/AbstractPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V +HSPLjava/util/stream/AbstractPipeline;->getOutputShape()Ljava/util/stream/StreamShape; +HSPLjava/util/stream/AbstractPipeline;->getStreamAndOpFlags()I +HSPLjava/util/stream/AbstractPipeline;->isParallel()Z +HSPLjava/util/stream/AbstractPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator; +HSPLjava/util/stream/AbstractPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; +HSPLjava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator; +HSPLjava/util/stream/AbstractPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; +HSPLjava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink; +HSPLjava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/BaseStream;->iterator()Ljava/util/Iterator; +HSPLjava/util/stream/BaseStream;->unordered()Ljava/util/stream/BaseStream; +HSPLjava/util/stream/Collector$Characteristics;->(Ljava/lang/String;I)V +HSPLjava/util/stream/Collector$Characteristics;->values()[Ljava/util/stream/Collector$Characteristics; +HSPLjava/util/stream/Collector;->accumulator()Ljava/util/function/BiConsumer; +HSPLjava/util/stream/Collector;->characteristics()Ljava/util/Set; +HSPLjava/util/stream/Collector;->combiner()Ljava/util/function/BinaryOperator; +HSPLjava/util/stream/Collector;->finisher()Ljava/util/function/Function; +HSPLjava/util/stream/Collector;->supplier()Ljava/util/function/Supplier; +HSPLjava/util/stream/Collectors$CollectorImpl;->(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V +HSPLjava/util/stream/Collectors$CollectorImpl;->(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V +HSPLjava/util/stream/Collectors$CollectorImpl;->accumulator()Ljava/util/function/BiConsumer; +HSPLjava/util/stream/Collectors$CollectorImpl;->characteristics()Ljava/util/Set; +HSPLjava/util/stream/Collectors$CollectorImpl;->combiner()Ljava/util/function/BinaryOperator; +HSPLjava/util/stream/Collectors$CollectorImpl;->supplier()Ljava/util/function/Supplier; +HSPLjava/util/stream/Collectors;->-java_util_stream_Collectors-mthref-1()Ljava/util/List; +HSPLjava/util/stream/Collectors;->-java_util_stream_Collectors-mthref-2(Ljava/util/List;Ljava/lang/Object;)V +HSPLjava/util/stream/Collectors;->-wrap0()Ljava/util/function/Function; +HSPLjava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function; +HSPLjava/util/stream/Collectors;->toList()Ljava/util/stream/Collector; +HSPLjava/util/stream/FindOps$FindOp;->(ZLjava/util/stream/StreamShape;Ljava/lang/Object;Ljava/util/function/Predicate;Ljava/util/function/Supplier;)V +HSPLjava/util/stream/FindOps$FindOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; +HSPLjava/util/stream/FindOps$FindOp;->getOpFlags()I +HSPLjava/util/stream/FindOps$FindSink$OfRef;->()V +HSPLjava/util/stream/FindOps$FindSink$OfRef;->get()Ljava/lang/Object; +HSPLjava/util/stream/FindOps$FindSink$OfRef;->get()Ljava/util/Optional; +HSPLjava/util/stream/FindOps$FindSink;->()V +HSPLjava/util/stream/FindOps$FindSink;->cancellationRequested()Z +HSPLjava/util/stream/FindOps;->-java_util_stream_FindOps-mthref-1()Ljava/util/stream/TerminalSink; +HSPLjava/util/stream/FindOps;->makeRef(Z)Ljava/util/stream/TerminalOp; +HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;->(Ljava/util/function/Consumer;Z)V +HSPLjava/util/stream/ForEachOps$ForEachOp;->(Z)V +HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; +HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void; +HSPLjava/util/stream/ForEachOps$ForEachOp;->get()Ljava/lang/Void; +HSPLjava/util/stream/ForEachOps$ForEachOp;->getOpFlags()I +HSPLjava/util/stream/ForEachOps;->makeRef(Ljava/util/function/Consumer;Z)Ljava/util/stream/TerminalOp; +HSPLjava/util/stream/PipelineHelper;->()V +HSPLjava/util/stream/PipelineHelper;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V +HSPLjava/util/stream/PipelineHelper;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V +HSPLjava/util/stream/PipelineHelper;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; +HSPLjava/util/stream/PipelineHelper;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J +HSPLjava/util/stream/PipelineHelper;->getSourceShape()Ljava/util/stream/StreamShape; +HSPLjava/util/stream/PipelineHelper;->getStreamAndOpFlags()I +HSPLjava/util/stream/PipelineHelper;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink; +HSPLjava/util/stream/PipelineHelper;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/PipelineHelper;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator; +HSPLjava/util/stream/ReduceOps$3;->(Ljava/util/stream/StreamShape;Ljava/util/stream/Collector;Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;)V +HSPLjava/util/stream/ReduceOps$3;->getOpFlags()I +HSPLjava/util/stream/ReduceOps$3;->makeSink()Ljava/util/stream/ReduceOps$3ReducingSink; +HSPLjava/util/stream/ReduceOps$3;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink; +HSPLjava/util/stream/ReduceOps$3ReducingSink;->(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;)V +HSPLjava/util/stream/ReduceOps$3ReducingSink;->accept(Ljava/lang/Object;)V +HSPLjava/util/stream/ReduceOps$3ReducingSink;->begin(J)V +HSPLjava/util/stream/ReduceOps$AccumulatingSink;->combine(Ljava/util/stream/ReduceOps$AccumulatingSink;)V +HSPLjava/util/stream/ReduceOps$Box;->()V +HSPLjava/util/stream/ReduceOps$Box;->get()Ljava/lang/Object; +HSPLjava/util/stream/ReduceOps$ReduceOp;->(Ljava/util/stream/StreamShape;)V +HSPLjava/util/stream/ReduceOps$ReduceOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; +HSPLjava/util/stream/ReduceOps$ReduceOp;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink; +HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/util/stream/Collector;)Ljava/util/stream/TerminalOp; +HSPLjava/util/stream/ReferencePipeline$2$1;->(Ljava/util/stream/ReferencePipeline$2;Ljava/util/stream/Sink;Ljava/util/function/Predicate;)V +HSPLjava/util/stream/ReferencePipeline$2$1;->begin(J)V +HSPLjava/util/stream/ReferencePipeline$2;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Predicate;)V +HSPLjava/util/stream/ReferencePipeline$2;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/ReferencePipeline$3$1;->(Ljava/util/stream/ReferencePipeline$3;Ljava/util/stream/Sink;Ljava/util/function/Function;)V +HSPLjava/util/stream/ReferencePipeline$3$1;->accept(Ljava/lang/Object;)V +HSPLjava/util/stream/ReferencePipeline$3;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V +HSPLjava/util/stream/ReferencePipeline$3;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/ReferencePipeline$Head;->(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/ReferencePipeline$StatefulOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V +HSPLjava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z +HSPLjava/util/stream/ReferencePipeline$StatelessOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V +HSPLjava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z +HSPLjava/util/stream/ReferencePipeline;->(Ljava/util/Spliterator;IZ)V +HSPLjava/util/stream/ReferencePipeline;->(Ljava/util/stream/AbstractPipeline;I)V +HSPLjava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object; +HSPLjava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; +HSPLjava/util/stream/ReferencePipeline;->findFirst()Ljava/util/Optional; +HSPLjava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V +HSPLjava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V +HSPLjava/util/stream/ReferencePipeline;->limit(J)Ljava/util/stream/Stream; +HSPLjava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream; +HSPLjava/util/stream/Sink$ChainedReference;->(Ljava/util/stream/Sink;)V +HSPLjava/util/stream/Sink$ChainedReference;->begin(J)V +HSPLjava/util/stream/Sink$ChainedReference;->cancellationRequested()Z +HSPLjava/util/stream/Sink$ChainedReference;->end()V +HSPLjava/util/stream/Sink;->begin(J)V +HSPLjava/util/stream/Sink;->cancellationRequested()Z +HSPLjava/util/stream/Sink;->end()V +HSPLjava/util/stream/SliceOps$1$1;->(Ljava/util/stream/SliceOps$1;Ljava/util/stream/Sink;JJ)V +HSPLjava/util/stream/SliceOps$1$1;->accept(Ljava/lang/Object;)V +HSPLjava/util/stream/SliceOps$1$1;->begin(J)V +HSPLjava/util/stream/SliceOps$1$1;->cancellationRequested()Z +HSPLjava/util/stream/SliceOps$1;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;IJJ)V +HSPLjava/util/stream/SliceOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/SliceOps;->-wrap2(JJJ)J +HSPLjava/util/stream/SliceOps;->calcSize(JJJ)J +HSPLjava/util/stream/SliceOps;->flags(J)I +HSPLjava/util/stream/SliceOps;->makeRef(Ljava/util/stream/AbstractPipeline;JJ)Ljava/util/stream/Stream; +HSPLjava/util/stream/Stream;->generate(Ljava/util/function/Supplier;)Ljava/util/stream/Stream; +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->(Ljava/util/Map;)V +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map; +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder; +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; +HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; +HSPLjava/util/stream/StreamOpFlag$Type;->(Ljava/lang/String;I)V +HSPLjava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type; +HSPLjava/util/stream/StreamOpFlag;->(Ljava/lang/String;IILjava/util/stream/StreamOpFlag$MaskBuilder;)V +HSPLjava/util/stream/StreamOpFlag;->combineOpFlags(II)I +HSPLjava/util/stream/StreamOpFlag;->createFlagMask()I +HSPLjava/util/stream/StreamOpFlag;->createMask(Ljava/util/stream/StreamOpFlag$Type;)I +HSPLjava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I +HSPLjava/util/stream/StreamOpFlag;->getMask(I)I +HSPLjava/util/stream/StreamOpFlag;->isKnown(I)Z +HSPLjava/util/stream/StreamOpFlag;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; +HSPLjava/util/stream/StreamOpFlag;->values()[Ljava/util/stream/StreamOpFlag; +HSPLjava/util/stream/StreamShape;->(Ljava/lang/String;I)V +HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator$OfRef;->(JLjava/util/function/Supplier;)V +HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator$OfRef;->tryAdvance(Ljava/util/function/Consumer;)Z +HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator;->(J)V +HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator;->characteristics()I +HSPLjava/util/stream/StreamSupport;->stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream; +HSPLjava/util/stream/TerminalOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; +HSPLjava/util/zip/Adler32;->()V +HSPLjava/util/zip/Adler32;->getValue()J +HSPLjava/util/zip/Adler32;->update([BII)V +HSPLjava/util/zip/CRC32;->()V +HSPLjava/util/zip/CRC32;->getValue()J +HSPLjava/util/zip/CRC32;->reset()V +HSPLjava/util/zip/CRC32;->update(I)V +HSPLjava/util/zip/CRC32;->update([B)V +HSPLjava/util/zip/CRC32;->update([BII)V +HSPLjava/util/zip/CheckedInputStream;->(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V +HSPLjava/util/zip/CheckedInputStream;->read()I +HSPLjava/util/zip/CheckedInputStream;->read([BII)I +HSPLjava/util/zip/Deflater;->(IZ)V +HSPLjava/util/zip/Deflater;->deflate([BII)I +HSPLjava/util/zip/Deflater;->deflate([BIII)I +HSPLjava/util/zip/Deflater;->end()V +HSPLjava/util/zip/Deflater;->ensureOpen()V +HSPLjava/util/zip/Deflater;->finalize()V +HSPLjava/util/zip/Deflater;->finish()V +HSPLjava/util/zip/Deflater;->finished()Z +HSPLjava/util/zip/Deflater;->getBytesRead()J +HSPLjava/util/zip/Deflater;->getTotalIn()I +HSPLjava/util/zip/Deflater;->needsInput()Z +HSPLjava/util/zip/Deflater;->setInput([BII)V +HSPLjava/util/zip/DeflaterOutputStream;->(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V +HSPLjava/util/zip/DeflaterOutputStream;->close()V +HSPLjava/util/zip/DeflaterOutputStream;->deflate()V +HSPLjava/util/zip/DeflaterOutputStream;->write([BII)V +HSPLjava/util/zip/GZIPInputStream$1;->(Ljava/util/zip/GZIPInputStream;Ljava/io/InputStream;)V +HSPLjava/util/zip/GZIPInputStream;->(Ljava/io/InputStream;)V +HSPLjava/util/zip/GZIPInputStream;->(Ljava/io/InputStream;I)V +HSPLjava/util/zip/GZIPInputStream;->close()V +HSPLjava/util/zip/GZIPInputStream;->ensureOpen()V +HSPLjava/util/zip/GZIPInputStream;->read([BII)I +HSPLjava/util/zip/GZIPInputStream;->readHeader(Ljava/io/InputStream;)I +HSPLjava/util/zip/GZIPInputStream;->readTrailer()Z +HSPLjava/util/zip/GZIPInputStream;->readUByte(Ljava/io/InputStream;)I +HSPLjava/util/zip/GZIPInputStream;->readUInt(Ljava/io/InputStream;)J +HSPLjava/util/zip/GZIPInputStream;->readUShort(Ljava/io/InputStream;)I +HSPLjava/util/zip/GZIPInputStream;->skipBytes(Ljava/io/InputStream;I)V +HSPLjava/util/zip/GZIPOutputStream;->(Ljava/io/OutputStream;)V +HSPLjava/util/zip/GZIPOutputStream;->(Ljava/io/OutputStream;IZ)V +HSPLjava/util/zip/GZIPOutputStream;->finish()V +HSPLjava/util/zip/GZIPOutputStream;->write([BII)V +HSPLjava/util/zip/GZIPOutputStream;->writeHeader()V +HSPLjava/util/zip/GZIPOutputStream;->writeInt(I[BI)V +HSPLjava/util/zip/GZIPOutputStream;->writeShort(I[BI)V +HSPLjava/util/zip/GZIPOutputStream;->writeTrailer([BI)V +HSPLjava/util/zip/Inflater;->()V +HSPLjava/util/zip/Inflater;->(Z)V +HSPLjava/util/zip/Inflater;->end()V +HSPLjava/util/zip/Inflater;->ended()Z +HSPLjava/util/zip/Inflater;->ensureOpen()V +HSPLjava/util/zip/Inflater;->finalize()V +HSPLjava/util/zip/Inflater;->finished()Z +HSPLjava/util/zip/Inflater;->getBytesWritten()J +HSPLjava/util/zip/Inflater;->getRemaining()I +HSPLjava/util/zip/Inflater;->inflate([B)I +HSPLjava/util/zip/Inflater;->inflate([BII)I +HSPLjava/util/zip/Inflater;->needsDictionary()Z +HSPLjava/util/zip/Inflater;->needsInput()Z +HSPLjava/util/zip/Inflater;->setInput([BII)V +HSPLjava/util/zip/InflaterInputStream;->(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V +HSPLjava/util/zip/InflaterInputStream;->close()V +HSPLjava/util/zip/InflaterInputStream;->ensureOpen()V +HSPLjava/util/zip/InflaterInputStream;->fill()V +HSPLjava/util/zip/InflaterInputStream;->read()I +HSPLjava/util/zip/InflaterInputStream;->read([BII)I +HSPLjava/util/zip/ZStreamRef;->(J)V +HSPLjava/util/zip/ZStreamRef;->address()J +HSPLjava/util/zip/ZStreamRef;->clear()V +HSPLjava/util/zip/ZipCoder;->(Ljava/nio/charset/Charset;)V +HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder; +HSPLjava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder; +HSPLjava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder; +HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B +HSPLjava/util/zip/ZipCoder;->isUTF8()Z +HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String; +HSPLjava/util/zip/ZipEntry;->()V +HSPLjava/util/zip/ZipEntry;->(Ljava/lang/String;Ljava/lang/String;JJJII[BJ)V +HSPLjava/util/zip/ZipEntry;->(Ljava/util/zip/ZipEntry;)V +HSPLjava/util/zip/ZipEntry;->getCrc()J +HSPLjava/util/zip/ZipEntry;->getMethod()I +HSPLjava/util/zip/ZipEntry;->getName()Ljava/lang/String; +HSPLjava/util/zip/ZipEntry;->getSize()J +HSPLjava/util/zip/ZipEntry;->isDirectory()Z +HSPLjava/util/zip/ZipEntry;->setExtra0([BZ)V +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->(Ljava/util/zip/ZipFile;)V +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object; +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->(Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->available()I +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->close()V +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->fill()V +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->finalize()V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->(Ljava/util/zip/ZipFile;J)V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->available()I +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->close()V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->finalize()V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read([BII)I +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->size()J +HSPLjava/util/zip/ZipFile;->-get1(Ljava/util/zip/ZipFile;)J +HSPLjava/util/zip/ZipFile;->-get3(Ljava/util/zip/ZipFile;)Ljava/util/Map; +HSPLjava/util/zip/ZipFile;->-get4(Ljava/util/zip/ZipFile;)I +HSPLjava/util/zip/ZipFile;->-wrap0(JJJ[BII)I +HSPLjava/util/zip/ZipFile;->-wrap2(Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->-wrap3(J)J +HSPLjava/util/zip/ZipFile;->-wrap4(J)J +HSPLjava/util/zip/ZipFile;->-wrap5(JI)J +HSPLjava/util/zip/ZipFile;->-wrap6(Ljava/util/zip/ZipFile;)V +HSPLjava/util/zip/ZipFile;->-wrap7(Ljava/util/zip/ZipFile;)V +HSPLjava/util/zip/ZipFile;->-wrap8(JJ)V +HSPLjava/util/zip/ZipFile;->-wrap9(Ljava/util/zip/ZipFile;Ljava/util/zip/Inflater;)V +HSPLjava/util/zip/ZipFile;->(Ljava/io/File;I)V +HSPLjava/util/zip/ZipFile;->(Ljava/io/File;ILjava/nio/charset/Charset;)V +HSPLjava/util/zip/ZipFile;->(Ljava/lang/String;)V +HSPLjava/util/zip/ZipFile;->close()V +HSPLjava/util/zip/ZipFile;->ensureOpen()V +HSPLjava/util/zip/ZipFile;->ensureOpenOrZipException()V +HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration; +HSPLjava/util/zip/ZipFile;->finalize()V +HSPLjava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater; +HSPLjava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream; +HSPLjava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V +HSPLjava/util/zip/ZipFile;->size()I +HSPLjava/util/zip/ZipUtils;->get16([BI)I +HSPLjavax/crypto/BadPaddingException;->(Ljava/lang/String;)V +HSPLjavax/crypto/Cipher$CipherSpiAndProvider;->(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V +HSPLjavax/crypto/Cipher$InitParams;->(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V +HSPLjavax/crypto/Cipher$InitType;->(Ljava/lang/String;I)V +HSPLjavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType; +HSPLjavax/crypto/Cipher$NeedToSet;->(Ljava/lang/String;I)V +HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->(Ljavax/crypto/Cipher;Ljava/security/Provider;Ljavax/crypto/CipherSpi;)V +HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V +HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider; +HSPLjavax/crypto/Cipher$Transform;->-get0(Ljavax/crypto/Cipher$Transform;)Ljava/lang/String; +HSPLjavax/crypto/Cipher$Transform;->-get1(Ljavax/crypto/Cipher$Transform;)Ljavax/crypto/Cipher$NeedToSet; +HSPLjavax/crypto/Cipher$Transform;->(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V +HSPLjavax/crypto/Cipher;->-get0(Ljavax/crypto/Cipher;)[Ljava/lang/String; +HSPLjavax/crypto/Cipher;->-getjavax-crypto-Cipher$InitTypeSwitchesValues()[I +HSPLjavax/crypto/Cipher;->-set0(Ljavax/crypto/Cipher;Ljava/security/Provider;)Ljava/security/Provider; +HSPLjavax/crypto/Cipher;->-set1(Ljavax/crypto/Cipher;Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi; +HSPLjavax/crypto/Cipher;->(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V +HSPLjavax/crypto/Cipher;->checkCipherState()V +HSPLjavax/crypto/Cipher;->checkOpmode(I)V +HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; +HSPLjavax/crypto/Cipher;->doFinal([B)[B +HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher; +HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; +HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;)V +HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z +HSPLjavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String; +HSPLjavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider; +HSPLjavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider; +HSPLjavax/crypto/Cipher;->updateProviderIfNeeded()V +HSPLjavax/crypto/CipherSpi;->()V +HSPLjavax/crypto/CipherSpi;->engineDoFinal([BII)[B +HSPLjavax/crypto/CipherSpi;->engineDoFinal([BII[BI)I +HSPLjavax/crypto/CipherSpi;->engineGetBlockSize()I +HSPLjavax/crypto/CipherSpi;->engineGetIV()[B +HSPLjavax/crypto/CipherSpi;->engineGetOutputSize(I)I +HSPLjavax/crypto/CipherSpi;->engineGetParameters()Ljava/security/AlgorithmParameters; +HSPLjavax/crypto/CipherSpi;->engineInit(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/CipherSpi;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/CipherSpi;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/CipherSpi;->engineSetMode(Ljava/lang/String;)V +HSPLjavax/crypto/CipherSpi;->engineSetPadding(Ljava/lang/String;)V +HSPLjavax/crypto/CipherSpi;->engineUpdate([BII)[B +HSPLjavax/crypto/CipherSpi;->engineUpdate([BII[BI)I +HSPLjavax/crypto/JceSecurity;->canUseProvider(Ljava/security/Provider;)Z +HSPLjavax/crypto/KeyGenerator;->(Ljava/lang/String;)V +HSPLjavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey; +HSPLjavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator; +HSPLjavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi; +HSPLjavax/crypto/KeyGeneratorSpi;->()V +HSPLjavax/crypto/KeyGeneratorSpi;->engineGenerateKey()Ljavax/crypto/SecretKey; +HSPLjavax/crypto/KeyGeneratorSpi;->engineInit(ILjava/security/SecureRandom;)V +HSPLjavax/crypto/KeyGeneratorSpi;->engineInit(Ljava/security/SecureRandom;)V +HSPLjavax/crypto/KeyGeneratorSpi;->engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/Mac;->(Ljava/lang/String;)V +HSPLjavax/crypto/Mac;->chooseFirstProvider()V +HSPLjavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLjavax/crypto/Mac;->doFinal()[B +HSPLjavax/crypto/Mac;->doFinal([B)[B +HSPLjavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac; +HSPLjavax/crypto/Mac;->init(Ljava/security/Key;)V +HSPLjavax/crypto/Mac;->update([B)V +HSPLjavax/crypto/MacSpi;->()V +HSPLjavax/crypto/MacSpi;->engineDoFinal()[B +HSPLjavax/crypto/MacSpi;->engineGetMacLength()I +HSPLjavax/crypto/MacSpi;->engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V +HSPLjavax/crypto/MacSpi;->engineReset()V +HSPLjavax/crypto/MacSpi;->engineUpdate(B)V +HSPLjavax/crypto/MacSpi;->engineUpdate([BII)V +HSPLjavax/crypto/spec/IvParameterSpec;->([B)V +HSPLjavax/crypto/spec/IvParameterSpec;->([BII)V +HSPLjavax/crypto/spec/IvParameterSpec;->getIV()[B +HSPLjavax/crypto/spec/SecretKeySpec;->([BLjava/lang/String;)V +HSPLjavax/crypto/spec/SecretKeySpec;->getAlgorithm()Ljava/lang/String; +HSPLjavax/crypto/spec/SecretKeySpec;->getEncoded()[B +HSPLjavax/crypto/spec/SecretKeySpec;->getFormat()Ljava/lang/String; +HSPLjavax/microedition/khronos/egl/EGL10;->eglChooseConfig(Ljavax/microedition/khronos/egl/EGLDisplay;[I[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglCopyBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljava/lang/Object;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext; +HSPLjavax/microedition/khronos/egl/EGL10;->eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLjavax/microedition/khronos/egl/EGL10;->eglCreatePixmapSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLjavax/microedition/khronos/egl/EGL10;->eglCreateWindowSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLjavax/microedition/khronos/egl/EGL10;->eglDestroyContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglDestroySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetConfigAttrib(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetConfigs(Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext; +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetCurrentDisplay()Ljavax/microedition/khronos/egl/EGLDisplay; +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetCurrentSurface(I)Ljavax/microedition/khronos/egl/EGLSurface; +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay; +HSPLjavax/microedition/khronos/egl/EGL10;->eglGetError()I +HSPLjavax/microedition/khronos/egl/EGL10;->eglInitialize(Ljavax/microedition/khronos/egl/EGLDisplay;[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglQueryContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;I[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglQueryString(Ljavax/microedition/khronos/egl/EGLDisplay;I)Ljava/lang/String; +HSPLjavax/microedition/khronos/egl/EGL10;->eglQuerySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;I[I)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglReleaseThread()Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglSwapBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglTerminate(Ljavax/microedition/khronos/egl/EGLDisplay;)Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglWaitGL()Z +HSPLjavax/microedition/khronos/egl/EGL10;->eglWaitNative(ILjava/lang/Object;)Z +HSPLjavax/microedition/khronos/egl/EGLConfig;->()V +HSPLjavax/microedition/khronos/egl/EGLContext;->()V +HSPLjavax/microedition/khronos/egl/EGLContext;->getEGL()Ljavax/microedition/khronos/egl/EGL; +HSPLjavax/microedition/khronos/egl/EGLContext;->getGL()Ljavax/microedition/khronos/opengles/GL; +HSPLjavax/microedition/khronos/egl/EGLDisplay;->()V +HSPLjavax/microedition/khronos/egl/EGLSurface;->()V +HSPLjavax/microedition/khronos/opengles/GL10;->glActiveTexture(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glAlphaFunc(IF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glAlphaFuncx(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glBindTexture(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glBlendFunc(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClear(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClearColor(FFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClearColorx(IIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClearDepthf(F)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClearDepthx(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClearStencil(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glClientActiveTexture(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glColor4f(FFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glColor4x(IIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glColorMask(ZZZZ)V +HSPLjavax/microedition/khronos/opengles/GL10;->glColorPointer(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glCopyTexImage2D(IIIIIIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glCopyTexSubImage2D(IIIIIIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glCullFace(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDeleteTextures(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDeleteTextures(I[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDepthFunc(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDepthMask(Z)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDepthRangef(FF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDepthRangex(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDisable(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDisableClientState(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDrawArrays(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glDrawElements(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glEnable(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glEnableClientState(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFinish()V +HSPLjavax/microedition/khronos/opengles/GL10;->glFlush()V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogf(IF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogfv(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogfv(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogx(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogxv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFogxv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFrontFace(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFrustumf(FFFFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glFrustumx(IIIIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glGenTextures(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glGenTextures(I[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glGetError()I +HSPLjavax/microedition/khronos/opengles/GL10;->glGetIntegerv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glGetIntegerv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glGetString(I)Ljava/lang/String; +HSPLjavax/microedition/khronos/opengles/GL10;->glHint(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelf(IF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelfv(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelfv(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelx(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelxv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightModelxv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightx(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLightxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLineWidth(F)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLineWidthx(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLoadIdentity()V +HSPLjavax/microedition/khronos/opengles/GL10;->glLoadMatrixf(Ljava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLoadMatrixf([FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLoadMatrixx(Ljava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLoadMatrixx([II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glLogicOp(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialx(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMaterialxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMatrixMode(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultMatrixf(Ljava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultMatrixf([FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultMatrixx(Ljava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultMatrixx([II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultiTexCoord4f(IFFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glMultiTexCoord4x(IIIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glNormal3f(FFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glNormal3x(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glNormalPointer(IILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glOrthof(FFFFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glOrthox(IIIIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPixelStorei(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPointSize(F)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPointSizex(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPolygonOffset(FF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPolygonOffsetx(II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glPopMatrix()V +HSPLjavax/microedition/khronos/opengles/GL10;->glPushMatrix()V +HSPLjavax/microedition/khronos/opengles/GL10;->glReadPixels(IIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glRotatef(FFFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glRotatex(IIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glSampleCoverage(FZ)V +HSPLjavax/microedition/khronos/opengles/GL10;->glSampleCoveragex(IZ)V +HSPLjavax/microedition/khronos/opengles/GL10;->glScalef(FFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glScalex(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glScissor(IIII)V +HSPLjavax/microedition/khronos/opengles/GL10;->glShadeModel(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glStencilFunc(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glStencilMask(I)V +HSPLjavax/microedition/khronos/opengles/GL10;->glStencilOp(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexCoordPointer(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvx(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexEnvxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexImage2D(IIIIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexParameterf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexParameterx(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTranslatef(FFF)V +HSPLjavax/microedition/khronos/opengles/GL10;->glTranslatex(III)V +HSPLjavax/microedition/khronos/opengles/GL10;->glVertexPointer(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL10;->glViewport(IIII)V +HSPLjavax/microedition/khronos/opengles/GL10Ext;->glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I +HSPLjavax/microedition/khronos/opengles/GL10Ext;->glQueryMatrixxOES([II[II)I +HSPLjavax/microedition/khronos/opengles/GL11;->glBindBuffer(II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glBufferData(IILjava/nio/Buffer;I)V +HSPLjavax/microedition/khronos/opengles/GL11;->glBufferSubData(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glClipPlanef(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glClipPlanef(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glClipPlanex(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glClipPlanex(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glColor4ub(BBBB)V +HSPLjavax/microedition/khronos/opengles/GL11;->glColorPointer(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11;->glDeleteBuffers(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glDeleteBuffers(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glDrawElements(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGenBuffers(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGenBuffers(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetBooleanv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetBooleanv(I[ZI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetBufferParameteriv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetBufferParameteriv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetClipPlanef(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetClipPlanef(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetClipPlanex(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetClipPlanex(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetFixedv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetFixedv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetFloatv(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetFloatv(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetLightfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetLightfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetLightxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetLightxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetMaterialfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetMaterialfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetMaterialxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetMaterialxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetPointerv(I[Ljava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexEnviv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexEnviv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexEnvxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexEnvxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameterfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameterfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameteriv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameteriv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameterxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glGetTexParameterxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glIsBuffer(I)Z +HSPLjavax/microedition/khronos/opengles/GL11;->glIsEnabled(I)Z +HSPLjavax/microedition/khronos/opengles/GL11;->glIsTexture(I)Z +HSPLjavax/microedition/khronos/opengles/GL11;->glNormalPointer(III)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterf(IF)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterfv(ILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterfv(I[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterx(II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterxv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointParameterxv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glPointSizePointerOES(IILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexCoordPointer(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexEnvi(III)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexEnviv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexEnviv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameterfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameterfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameteri(III)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameteriv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameteriv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameterxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11;->glTexParameterxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11;->glVertexPointer(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glCurrentPaletteMatrixOES(I)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexfOES(FFFFF)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexfvOES(Ljava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexfvOES([FI)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexiOES(IIIII)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexivOES(Ljava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexivOES([II)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexsOES(SSSSS)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexsvOES(Ljava/nio/ShortBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexsvOES([SI)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexxOES(IIIII)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexxvOES(Ljava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glDrawTexxvOES([II)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glEnable(I)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glEnableClientState(I)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glLoadPaletteFromModelViewMatrixOES()V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glMatrixIndexPointerOES(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glTexParameterfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glWeightPointerOES(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11Ext;->glWeightPointerOES(IIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBindFramebufferOES(II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBindRenderbufferOES(II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBindTexture(II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBlendEquation(I)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBlendEquationSeparate(II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glBlendFuncSeparate(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glCheckFramebufferStatusOES(I)I +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glCopyTexImage2D(IIIIIIII)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glDeleteFramebuffersOES(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glDeleteRenderbuffersOES(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glEnable(I)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glFramebufferRenderbufferOES(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glFramebufferTexture2DOES(IIIII)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGenFramebuffersOES(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGenFramebuffersOES(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGenRenderbuffersOES(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGenerateMipmapOES(I)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetFramebufferAttachmentParameterivOES(III[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetIntegerv(ILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetIntegerv(I[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetRenderbufferParameterivOES(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGenfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGenfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGeniv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGeniv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGenxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glGetTexGenxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glIsFramebufferOES(I)Z +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glIsRenderbufferOES(I)Z +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glRenderbufferStorageOES(IIII)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glStencilOp(III)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvx(III)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexEnvxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenf(IIF)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenfv(IILjava/nio/FloatBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenfv(II[FI)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGeni(III)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGeniv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGeniv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenx(III)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenxv(IILjava/nio/IntBuffer;)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexGenxv(II[II)V +HSPLjavax/microedition/khronos/opengles/GL11ExtensionPack;->glTexParameterf(IIF)V +HSPLjavax/net/DefaultSocketFactory;->()V +HSPLjavax/net/DefaultSocketFactory;->createSocket()Ljava/net/Socket; +HSPLjavax/net/ServerSocketFactory;->()V +HSPLjavax/net/ServerSocketFactory;->createServerSocket(I)Ljava/net/ServerSocket; +HSPLjavax/net/ServerSocketFactory;->createServerSocket(II)Ljava/net/ServerSocket; +HSPLjavax/net/ServerSocketFactory;->createServerSocket(IILjava/net/InetAddress;)Ljava/net/ServerSocket; +HSPLjavax/net/SocketFactory;->()V +HSPLjavax/net/SocketFactory;->createSocket(Ljava/lang/String;I)Ljava/net/Socket; +HSPLjavax/net/SocketFactory;->createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket; +HSPLjavax/net/SocketFactory;->createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket; +HSPLjavax/net/SocketFactory;->createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket; +HSPLjavax/net/SocketFactory;->getDefault()Ljavax/net/SocketFactory; +HSPLjavax/net/ssl/ExtendedSSLSession;->()V +HSPLjavax/net/ssl/ExtendedSSLSession;->getLocalSupportedSignatureAlgorithms()[Ljava/lang/String; +HSPLjavax/net/ssl/ExtendedSSLSession;->getPeerSupportedSignatureAlgorithms()[Ljava/lang/String; +HSPLjavax/net/ssl/HostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z +HSPLjavax/net/ssl/HttpsURLConnection;->(Ljava/net/URL;)V +HSPLjavax/net/ssl/HttpsURLConnection;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; +HSPLjavax/net/ssl/HttpsURLConnection;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLjavax/net/ssl/HttpsURLConnection;->setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V +HSPLjavax/net/ssl/HttpsURLConnection;->setDefaultSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V +HSPLjavax/net/ssl/KeyManagerFactory$1;->()V +HSPLjavax/net/ssl/KeyManagerFactory$1;->run()Ljava/lang/Object; +HSPLjavax/net/ssl/KeyManagerFactory$1;->run()Ljava/lang/String; +HSPLjavax/net/ssl/KeyManagerFactory;->(Ljavax/net/ssl/KeyManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjavax/net/ssl/KeyManagerFactory;->getDefaultAlgorithm()Ljava/lang/String; +HSPLjavax/net/ssl/KeyManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory; +HSPLjavax/net/ssl/KeyManagerFactory;->getKeyManagers()[Ljavax/net/ssl/KeyManager; +HSPLjavax/net/ssl/KeyManagerFactory;->init(Ljava/security/KeyStore;[C)V +HSPLjavax/net/ssl/KeyManagerFactorySpi;->()V +HSPLjavax/net/ssl/KeyManagerFactorySpi;->engineGetKeyManagers()[Ljavax/net/ssl/KeyManager; +HSPLjavax/net/ssl/KeyManagerFactorySpi;->engineInit(Ljava/security/KeyStore;[C)V +HSPLjavax/net/ssl/KeyManagerFactorySpi;->engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V +HSPLjavax/net/ssl/SNIHostName;->(Ljava/lang/String;)V +HSPLjavax/net/ssl/SNIHostName;->checkHostName()V +HSPLjavax/net/ssl/SNIServerName;->(I[B)V +HSPLjavax/net/ssl/SNIServerName;->getType()I +HSPLjavax/net/ssl/SSLContext;->(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLContext;->getDefault()Ljavax/net/ssl/SSLContext; +HSPLjavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext; +HSPLjavax/net/ssl/SSLContext;->getServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory; +HSPLjavax/net/ssl/SSLContext;->getSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLjavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V +HSPLjavax/net/ssl/SSLContext;->setDefault(Ljavax/net/ssl/SSLContext;)V +HSPLjavax/net/ssl/SSLContextSpi;->()V +HSPLjavax/net/ssl/SSLContextSpi;->engineCreateSSLEngine()Ljavax/net/ssl/SSLEngine; +HSPLjavax/net/ssl/SSLContextSpi;->engineCreateSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine; +HSPLjavax/net/ssl/SSLContextSpi;->engineGetClientSessionContext()Ljavax/net/ssl/SSLSessionContext; +HSPLjavax/net/ssl/SSLContextSpi;->engineGetServerSessionContext()Ljavax/net/ssl/SSLSessionContext; +HSPLjavax/net/ssl/SSLContextSpi;->engineGetServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory; +HSPLjavax/net/ssl/SSLContextSpi;->engineGetSocketFactory()Ljavax/net/ssl/SSLSocketFactory; +HSPLjavax/net/ssl/SSLContextSpi;->engineInit([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V +HSPLjavax/net/ssl/SSLParameters;->()V +HSPLjavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String; +HSPLjavax/net/ssl/SSLParameters;->getEndpointIdentificationAlgorithm()Ljava/lang/String; +HSPLjavax/net/ssl/SSLParameters;->setCipherSuites([Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLParameters;->setEndpointIdentificationAlgorithm(Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLParameters;->setProtocols([Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLParameters;->setServerNames(Ljava/util/List;)V +HSPLjavax/net/ssl/SSLParameters;->setUseCipherSuitesOrder(Z)V +HSPLjavax/net/ssl/SSLServerSocketFactory;->()V +HSPLjavax/net/ssl/SSLServerSocketFactory;->getDefaultCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLServerSocketFactory;->getSupportedCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSession;->getApplicationBufferSize()I +HSPLjavax/net/ssl/SSLSession;->getCipherSuite()Ljava/lang/String; +HSPLjavax/net/ssl/SSLSession;->getCreationTime()J +HSPLjavax/net/ssl/SSLSession;->getId()[B +HSPLjavax/net/ssl/SSLSession;->getLastAccessedTime()J +HSPLjavax/net/ssl/SSLSession;->getLocalCertificates()[Ljava/security/cert/Certificate; +HSPLjavax/net/ssl/SSLSession;->getLocalPrincipal()Ljava/security/Principal; +HSPLjavax/net/ssl/SSLSession;->getPacketBufferSize()I +HSPLjavax/net/ssl/SSLSession;->getPeerCertificateChain()[Ljavax/security/cert/X509Certificate; +HSPLjavax/net/ssl/SSLSession;->getPeerCertificates()[Ljava/security/cert/Certificate; +HSPLjavax/net/ssl/SSLSession;->getPeerHost()Ljava/lang/String; +HSPLjavax/net/ssl/SSLSession;->getPeerPort()I +HSPLjavax/net/ssl/SSLSession;->getPeerPrincipal()Ljava/security/Principal; +HSPLjavax/net/ssl/SSLSession;->getProtocol()Ljava/lang/String; +HSPLjavax/net/ssl/SSLSession;->getSessionContext()Ljavax/net/ssl/SSLSessionContext; +HSPLjavax/net/ssl/SSLSession;->getValue(Ljava/lang/String;)Ljava/lang/Object; +HSPLjavax/net/ssl/SSLSession;->getValueNames()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSession;->invalidate()V +HSPLjavax/net/ssl/SSLSession;->isValid()Z +HSPLjavax/net/ssl/SSLSession;->putValue(Ljava/lang/String;Ljava/lang/Object;)V +HSPLjavax/net/ssl/SSLSession;->removeValue(Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLSessionContext;->getIds()Ljava/util/Enumeration; +HSPLjavax/net/ssl/SSLSessionContext;->getSession([B)Ljavax/net/ssl/SSLSession; +HSPLjavax/net/ssl/SSLSessionContext;->getSessionCacheSize()I +HSPLjavax/net/ssl/SSLSessionContext;->getSessionTimeout()I +HSPLjavax/net/ssl/SSLSessionContext;->setSessionCacheSize(I)V +HSPLjavax/net/ssl/SSLSessionContext;->setSessionTimeout(I)V +HSPLjavax/net/ssl/SSLSocket;->()V +HSPLjavax/net/ssl/SSLSocket;->addHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V +HSPLjavax/net/ssl/SSLSocket;->getEnableSessionCreation()Z +HSPLjavax/net/ssl/SSLSocket;->getEnabledCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocket;->getEnabledProtocols()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocket;->getNeedClientAuth()Z +HSPLjavax/net/ssl/SSLSocket;->getSSLParameters()Ljavax/net/ssl/SSLParameters; +HSPLjavax/net/ssl/SSLSocket;->getSession()Ljavax/net/ssl/SSLSession; +HSPLjavax/net/ssl/SSLSocket;->getSupportedCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocket;->getSupportedProtocols()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocket;->getUseClientMode()Z +HSPLjavax/net/ssl/SSLSocket;->getWantClientAuth()Z +HSPLjavax/net/ssl/SSLSocket;->removeHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V +HSPLjavax/net/ssl/SSLSocket;->setEnableSessionCreation(Z)V +HSPLjavax/net/ssl/SSLSocket;->setEnabledCipherSuites([Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLSocket;->setEnabledProtocols([Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLSocket;->setNeedClientAuth(Z)V +HSPLjavax/net/ssl/SSLSocket;->setUseClientMode(Z)V +HSPLjavax/net/ssl/SSLSocket;->setWantClientAuth(Z)V +HSPLjavax/net/ssl/SSLSocket;->startHandshake()V +HSPLjavax/net/ssl/SSLSocketFactory$1;->(Ljava/lang/String;)V +HSPLjavax/net/ssl/SSLSocketFactory$1;->run()Ljava/lang/Object; +HSPLjavax/net/ssl/SSLSocketFactory$1;->run()Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocketFactory;->()V +HSPLjavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket; +HSPLjavax/net/ssl/SSLSocketFactory;->getDefault()Ljavax/net/SocketFactory; +HSPLjavax/net/ssl/SSLSocketFactory;->getDefaultCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocketFactory;->getSupportedCipherSuites()[Ljava/lang/String; +HSPLjavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V +HSPLjavax/net/ssl/TrustManagerFactory$1;->()V +HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/Object; +HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/String; +HSPLjavax/net/ssl/TrustManagerFactory;->(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V +HSPLjavax/net/ssl/TrustManagerFactory;->getDefaultAlgorithm()Ljava/lang/String; +HSPLjavax/net/ssl/TrustManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory; +HSPLjavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager; +HSPLjavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V +HSPLjavax/net/ssl/TrustManagerFactorySpi;->()V +HSPLjavax/net/ssl/TrustManagerFactorySpi;->engineGetTrustManagers()[Ljavax/net/ssl/TrustManager; +HSPLjavax/net/ssl/TrustManagerFactorySpi;->engineInit(Ljava/security/KeyStore;)V +HSPLjavax/net/ssl/TrustManagerFactorySpi;->engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V +HSPLjavax/net/ssl/X509ExtendedKeyManager;->()V +HSPLjavax/net/ssl/X509ExtendedTrustManager;->()V +HSPLjavax/net/ssl/X509ExtendedTrustManager;->checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V +HSPLjavax/net/ssl/X509ExtendedTrustManager;->checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V +HSPLjavax/net/ssl/X509ExtendedTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V +HSPLjavax/net/ssl/X509ExtendedTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V +HSPLjavax/net/ssl/X509KeyManager;->chooseClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String; +HSPLjavax/net/ssl/X509KeyManager;->chooseServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String; +HSPLjavax/net/ssl/X509KeyManager;->getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/X509Certificate; +HSPLjavax/net/ssl/X509KeyManager;->getClientAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String; +HSPLjavax/net/ssl/X509KeyManager;->getPrivateKey(Ljava/lang/String;)Ljava/security/PrivateKey; +HSPLjavax/net/ssl/X509KeyManager;->getServerAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String; +HSPLjavax/net/ssl/X509TrustManager;->checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V +HSPLjavax/net/ssl/X509TrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V +HSPLjavax/net/ssl/X509TrustManager;->getAcceptedIssuers()[Ljava/security/cert/X509Certificate; +HSPLjavax/security/auth/x500/X500Principal;->(Lsun/security/x509/X500Name;)V +HSPLjavax/security/auth/x500/X500Principal;->([B)V +HSPLjavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z +HSPLjavax/security/auth/x500/X500Principal;->getEncoded()[B +HSPLjavax/security/auth/x500/X500Principal;->getName()Ljava/lang/String; +HSPLjavax/security/auth/x500/X500Principal;->getName(Ljava/lang/String;)Ljava/lang/String; +HSPLjavax/security/auth/x500/X500Principal;->hashCode()I +HSPLjavax/xml/parsers/SAXParser;->()V +HSPLjavax/xml/parsers/SAXParser;->getParser()Lorg/xml/sax/Parser; +HSPLjavax/xml/parsers/SAXParser;->getProperty(Ljava/lang/String;)Ljava/lang/Object; +HSPLjavax/xml/parsers/SAXParser;->getXMLReader()Lorg/xml/sax/XMLReader; +HSPLjavax/xml/parsers/SAXParser;->isNamespaceAware()Z +HSPLjavax/xml/parsers/SAXParser;->isValidating()Z +HSPLjavax/xml/parsers/SAXParser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLjavax/xml/parsers/SAXParserFactory;->()V +HSPLjavax/xml/parsers/SAXParserFactory;->getFeature(Ljava/lang/String;)Z +HSPLjavax/xml/parsers/SAXParserFactory;->newInstance()Ljavax/xml/parsers/SAXParserFactory; +HSPLjavax/xml/parsers/SAXParserFactory;->newSAXParser()Ljavax/xml/parsers/SAXParser; +HSPLjavax/xml/parsers/SAXParserFactory;->setFeature(Ljava/lang/String;Z)V +HSPLjunit/framework/Assert;->()V +HSPLjunit/framework/Assert;->assertNotNull(Ljava/lang/Object;)V +HSPLjunit/framework/Assert;->assertNotNull(Ljava/lang/String;Ljava/lang/Object;)V +HSPLjunit/framework/Assert;->assertTrue(Ljava/lang/String;Z)V +HSPLjunit/framework/Protectable;->protect()V +HSPLjunit/framework/TestCase;->()V +HSPLjunit/framework/TestCase;->countTestCases()I +HSPLjunit/framework/TestCase;->getName()Ljava/lang/String; +HSPLjunit/framework/TestCase;->run(Ljunit/framework/TestResult;)V +HSPLjunit/framework/TestCase;->runBare()V +HSPLjunit/framework/TestCase;->setName(Ljava/lang/String;)V +HSPLjunit/framework/TestCase;->setUp()V +HSPLjunit/framework/TestListener;->addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V +HSPLjunit/framework/TestListener;->addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V +HSPLjunit/framework/TestListener;->endTest(Ljunit/framework/Test;)V +HSPLjunit/framework/TestListener;->startTest(Ljunit/framework/Test;)V +HSPLjunit/framework/TestResult$1;->(Ljunit/framework/TestResult;Ljunit/framework/TestCase;)V +HSPLjunit/framework/TestResult$1;->protect()V +HSPLjunit/framework/TestResult;->()V +HSPLjunit/framework/TestResult;->addListener(Ljunit/framework/TestListener;)V +HSPLjunit/framework/TestResult;->cloneListeners()Ljava/util/List; +HSPLjunit/framework/TestResult;->run(Ljunit/framework/TestCase;)V +HSPLjunit/framework/TestResult;->shouldStop()Z +HSPLjunit/framework/TestResult;->startTest(Ljunit/framework/Test;)V +HSPLjunit/framework/TestSuite;->()V +HSPLjunit/framework/TestSuite;->(Ljava/lang/Class;)V +HSPLjunit/framework/TestSuite;->(Ljava/lang/String;)V +HSPLjunit/framework/TestSuite;->addTest(Ljunit/framework/Test;)V +HSPLjunit/framework/TestSuite;->addTestMethod(Ljava/lang/reflect/Method;Ljava/util/List;Ljava/lang/Class;)V +HSPLjunit/framework/TestSuite;->addTestsFromTestCase(Ljava/lang/Class;)V +HSPLjunit/framework/TestSuite;->createTest(Ljava/lang/Class;Ljava/lang/String;)Ljunit/framework/Test; +HSPLjunit/framework/TestSuite;->getName()Ljava/lang/String; +HSPLjunit/framework/TestSuite;->getTestConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor; +HSPLjunit/framework/TestSuite;->isPublicTestMethod(Ljava/lang/reflect/Method;)Z +HSPLjunit/framework/TestSuite;->isTestMethod(Ljava/lang/reflect/Method;)Z +HSPLjunit/framework/TestSuite;->run(Ljunit/framework/TestResult;)V +HSPLjunit/framework/TestSuite;->runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V +HSPLjunit/framework/TestSuite;->setName(Ljava/lang/String;)V +HSPLjunit/framework/TestSuite;->testAt(I)Ljunit/framework/Test; +HSPLjunit/framework/TestSuite;->testCount()I +HSPLlibcore/icu/ICU;->U_FAILURE(I)Z +HSPLlibcore/icu/ICU;->getBestDateTimePattern(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; +HSPLlibcore/icu/ICU;->getISOCountries()[Ljava/lang/String; +HSPLlibcore/icu/ICU;->getISOLanguages()[Ljava/lang/String; +HSPLlibcore/icu/LocaleData;->()V +HSPLlibcore/icu/LocaleData;->get(Ljava/util/Locale;)Llibcore/icu/LocaleData; +HSPLlibcore/icu/LocaleData;->getDateFormat(I)Ljava/lang/String; +HSPLlibcore/icu/LocaleData;->getTimeFormat(I)Ljava/lang/String; +HSPLlibcore/icu/LocaleData;->initLocaleData(Ljava/util/Locale;)Llibcore/icu/LocaleData; +HSPLlibcore/icu/LocaleData;->mapInvalidAndNullLocales(Ljava/util/Locale;)Ljava/util/Locale; +HSPLlibcore/icu/NativeConverter;->registerConverter(Ljava/lang/Object;J)V +HSPLlibcore/icu/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V +HSPLlibcore/icu/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V +HSPLlibcore/icu/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I +HSPLlibcore/internal/StringPool;->()V +HSPLlibcore/internal/StringPool;->contentEquals(Ljava/lang/String;[CII)Z +HSPLlibcore/internal/StringPool;->get([CII)Ljava/lang/String; +HSPLlibcore/io/BlockGuardOs;->chmod(Ljava/lang/String;I)V +HSPLlibcore/io/BlockGuardOs;->chown(Ljava/lang/String;II)V +HSPLlibcore/io/BlockGuardOs;->close(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; +HSPLlibcore/io/BlockGuardOs;->isInetDomain(I)Z +HSPLlibcore/io/BlockGuardOs;->isInetSocket(Ljava/io/FileDescriptor;)Z +HSPLlibcore/io/BlockGuardOs;->isLingerSocket(Ljava/io/FileDescriptor;)Z +HSPLlibcore/io/BlockGuardOs;->lseek(Ljava/io/FileDescriptor;JI)J +HSPLlibcore/io/BlockGuardOs;->mkdir(Ljava/lang/String;I)V +HSPLlibcore/io/BlockGuardOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; +HSPLlibcore/io/BlockGuardOs;->poll([Landroid/system/StructPollfd;I)I +HSPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/BlockGuardOs;->realpath(Ljava/lang/String;)Ljava/lang/String; +HSPLlibcore/io/BlockGuardOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I +HSPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I +HSPLlibcore/io/BlockGuardOs;->socket(III)Ljava/io/FileDescriptor; +HSPLlibcore/io/BlockGuardOs;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V +HSPLlibcore/io/BlockGuardOs;->stat(Ljava/lang/String;)Landroid/system/StructStat; +HSPLlibcore/io/BlockGuardOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs; +HSPLlibcore/io/BlockGuardOs;->tagSocket(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HSPLlibcore/io/BlockGuardOs;->untagSocket(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/BufferIterator;->()V +HSPLlibcore/io/BufferIterator;->pos()I +HSPLlibcore/io/BufferIterator;->readByte()B +HSPLlibcore/io/BufferIterator;->readByteArray([BII)V +HSPLlibcore/io/BufferIterator;->readInt()I +HSPLlibcore/io/BufferIterator;->readIntArray([III)V +HSPLlibcore/io/BufferIterator;->readShort()S +HSPLlibcore/io/BufferIterator;->seek(I)V +HSPLlibcore/io/BufferIterator;->skip(I)V +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;->(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;Ljava/io/InputStream;)V +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;->close()V +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->-get0(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;)Ljava/util/jar/JarFile; +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->(Llibcore/io/ClassPathURLStreamHandler;Ljava/net/URL;)V +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->connect()V +HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->getInputStream()Ljava/io/InputStream; +HSPLlibcore/io/ClassPathURLStreamHandler;->-get0(Llibcore/io/ClassPathURLStreamHandler;)Ljava/util/jar/JarFile; +HSPLlibcore/io/ClassPathURLStreamHandler;->(Ljava/lang/String;)V +HSPLlibcore/io/ClassPathURLStreamHandler;->findEntryWithDirectoryFallback(Ljava/util/jar/JarFile;Ljava/lang/String;)Ljava/util/zip/ZipEntry; +HSPLlibcore/io/ClassPathURLStreamHandler;->getEntryUrlOrNull(Ljava/lang/String;)Ljava/net/URL; +HSPLlibcore/io/ClassPathURLStreamHandler;->isEntryStored(Ljava/lang/String;)Z +HSPLlibcore/io/ClassPathURLStreamHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection; +HSPLlibcore/io/DropBox$DefaultReporter;->()V +HSPLlibcore/io/DropBox$DefaultReporter;->(Llibcore/io/DropBox$DefaultReporter;)V +HSPLlibcore/io/DropBox;->setReporter(Llibcore/io/DropBox$Reporter;)V +HSPLlibcore/io/EventLogger$DefaultReporter;->()V +HSPLlibcore/io/EventLogger$DefaultReporter;->(Llibcore/io/EventLogger$DefaultReporter;)V +HSPLlibcore/io/EventLogger;->setReporter(Llibcore/io/EventLogger$Reporter;)V +HSPLlibcore/io/ForwardingOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress; +HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLlibcore/io/ForwardingOs;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HSPLlibcore/io/ForwardingOs;->dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor; +HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I +HSPLlibcore/io/ForwardingOs;->fcntlVoid(Ljava/io/FileDescriptor;I)I +HSPLlibcore/io/ForwardingOs;->getenv(Ljava/lang/String;)Ljava/lang/String; +HSPLlibcore/io/ForwardingOs;->getifaddrs()[Landroid/system/StructIfaddrs; +HSPLlibcore/io/ForwardingOs;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String; +HSPLlibcore/io/ForwardingOs;->getpid()I +HSPLlibcore/io/ForwardingOs;->getrlimit(I)Landroid/system/StructRlimit; +HSPLlibcore/io/ForwardingOs;->getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; +HSPLlibcore/io/ForwardingOs;->getsockoptInt(Ljava/io/FileDescriptor;II)I +HSPLlibcore/io/ForwardingOs;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger; +HSPLlibcore/io/ForwardingOs;->gettid()I +HSPLlibcore/io/ForwardingOs;->getuid()I +HSPLlibcore/io/ForwardingOs;->if_nametoindex(Ljava/lang/String;)I +HSPLlibcore/io/ForwardingOs;->inet_pton(ILjava/lang/String;)Ljava/net/InetAddress; +HSPLlibcore/io/ForwardingOs;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/util/MutableInt;)I +HSPLlibcore/io/ForwardingOs;->listen(Ljava/io/FileDescriptor;I)V +HSPLlibcore/io/ForwardingOs;->mmap(JJIILjava/io/FileDescriptor;J)J +HSPLlibcore/io/ForwardingOs;->munmap(JJ)V +HSPLlibcore/io/ForwardingOs;->prctl(IJJJJ)I +HSPLlibcore/io/ForwardingOs;->setenv(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLlibcore/io/ForwardingOs;->setsockoptInt(Ljava/io/FileDescriptor;III)V +HSPLlibcore/io/ForwardingOs;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V +HSPLlibcore/io/ForwardingOs;->shutdown(Ljava/io/FileDescriptor;I)V +HSPLlibcore/io/ForwardingOs;->sysconf(I)J +HSPLlibcore/io/ForwardingOs;->umask(I)I +HSPLlibcore/io/IoBridge;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLlibcore/io/IoBridge;->booleanToInt(Z)I +HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/IoBridge;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V +HSPLlibcore/io/IoBridge;->connectErrno(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V +HSPLlibcore/io/IoBridge;->getLocalInetSocketAddress(Ljava/io/FileDescriptor;)Ljava/net/InetSocketAddress; +HSPLlibcore/io/IoBridge;->isConnected(Ljava/io/FileDescriptor;Ljava/net/InetAddress;III)Z +HSPLlibcore/io/IoBridge;->open(Ljava/lang/String;I)Ljava/io/FileDescriptor; +HSPLlibcore/io/IoBridge;->poll(Ljava/io/FileDescriptor;II)V +HSPLlibcore/io/IoBridge;->postRecvfrom(ZLjava/net/DatagramPacket;Ljava/net/InetSocketAddress;I)I +HSPLlibcore/io/IoBridge;->read(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/IoBridge;->recvfrom(ZLjava/io/FileDescriptor;[BIIILjava/net/DatagramPacket;Z)I +HSPLlibcore/io/IoBridge;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I +HSPLlibcore/io/IoBridge;->setSocketOption(Ljava/io/FileDescriptor;ILjava/lang/Object;)V +HSPLlibcore/io/IoBridge;->setSocketOptionErrno(Ljava/io/FileDescriptor;ILjava/lang/Object;)V +HSPLlibcore/io/IoBridge;->socket(III)Ljava/io/FileDescriptor; +HSPLlibcore/io/IoBridge;->write(Ljava/io/FileDescriptor;[BII)V +HSPLlibcore/io/IoTracker;->()V +HSPLlibcore/io/IoTracker;->reset()V +HSPLlibcore/io/IoTracker;->trackIo(I)V +HSPLlibcore/io/IoTracker;->trackIo(ILlibcore/io/IoTracker$Mode;)V +HSPLlibcore/io/IoUtils$FileReader;->(Ljava/lang/String;)V +HSPLlibcore/io/IoUtils$FileReader;->readFully()Llibcore/io/IoUtils$FileReader; +HSPLlibcore/io/IoUtils$FileReader;->toByteArray()[B +HSPLlibcore/io/IoUtils;->canOpenReadOnly(Ljava/lang/String;)Z +HSPLlibcore/io/IoUtils;->close(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/lang/AutoCloseable;)V +HSPLlibcore/io/IoUtils;->readFileAsByteArray(Ljava/lang/String;)[B +HSPLlibcore/io/IoUtils;->setBlocking(Ljava/io/FileDescriptor;Z)V +HSPLlibcore/io/Linux;->read(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/Linux;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I +HSPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I +HSPLlibcore/io/Linux;->umask(I)I +HSPLlibcore/io/Linux;->write(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/Memory;->peekInt(JZ)I +HSPLlibcore/io/Memory;->peekInt([BILjava/nio/ByteOrder;)I +HSPLlibcore/io/Memory;->peekShort(JZ)S +HSPLlibcore/io/Memory;->peekShort([BILjava/nio/ByteOrder;)S +HSPLlibcore/io/Memory;->pokeInt(JIZ)V +HSPLlibcore/io/Memory;->pokeShort(JSZ)V +HSPLlibcore/io/MemoryMappedFile;->(JJ)V +HSPLlibcore/io/MemoryMappedFile;->bigEndianIterator()Llibcore/io/BufferIterator; +HSPLlibcore/io/MemoryMappedFile;->checkNotClosed()V +HSPLlibcore/io/MemoryMappedFile;->mmapRO(Ljava/lang/String;)Llibcore/io/MemoryMappedFile; +HSPLlibcore/io/MemoryMappedFile;->size()I +HSPLlibcore/io/NioBufferIterator;->(Llibcore/io/MemoryMappedFile;JIZ)V +HSPLlibcore/io/NioBufferIterator;->checkDstBounds(III)V +HSPLlibcore/io/NioBufferIterator;->checkReadBounds(III)V +HSPLlibcore/io/NioBufferIterator;->readByte()B +HSPLlibcore/io/NioBufferIterator;->readByteArray([BII)V +HSPLlibcore/io/NioBufferIterator;->readInt()I +HSPLlibcore/io/NioBufferIterator;->readIntArray([III)V +HSPLlibcore/io/NioBufferIterator;->seek(I)V +HSPLlibcore/io/NioBufferIterator;->skip(I)V +HSPLlibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy;->()V +HSPLlibcore/net/NetworkSecurityPolicy;->()V +HSPLlibcore/net/NetworkSecurityPolicy;->getInstance()Llibcore/net/NetworkSecurityPolicy; +HSPLlibcore/net/NetworkSecurityPolicy;->setInstance(Llibcore/net/NetworkSecurityPolicy;)V +HSPLlibcore/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V +HSPLlibcore/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String; +HSPLlibcore/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V +HSPLlibcore/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C +HSPLlibcore/net/UriCodec;->hexCharToValue(C)I +HSPLlibcore/net/event/NetworkEventDispatcher;->()V +HSPLlibcore/net/event/NetworkEventDispatcher;->addListener(Llibcore/net/event/NetworkEventListener;)V +HSPLlibcore/net/event/NetworkEventDispatcher;->getInstance()Llibcore/net/event/NetworkEventDispatcher; +HSPLlibcore/net/event/NetworkEventDispatcher;->onNetworkConfigurationChanged()V +HSPLlibcore/net/event/NetworkEventListener;->()V +HSPLlibcore/reflect/AnnotationFactory;->(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)V +HSPLlibcore/reflect/AnnotationFactory;->createAnnotation(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)Ljava/lang/annotation/Annotation; +HSPLlibcore/reflect/AnnotationFactory;->getElementsDescription(Ljava/lang/Class;)[Llibcore/reflect/AnnotationMember; +HSPLlibcore/reflect/AnnotationFactory;->invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +HSPLlibcore/reflect/AnnotationMember;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLlibcore/reflect/AnnotationMember;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;)V +HSPLlibcore/reflect/AnnotationMember;->copyValue()Ljava/lang/Object; +HSPLlibcore/reflect/AnnotationMember;->setDefinition(Llibcore/reflect/AnnotationMember;)Llibcore/reflect/AnnotationMember; +HSPLlibcore/reflect/AnnotationMember;->validateValue()Ljava/lang/Object; +HSPLlibcore/reflect/GenericSignatureParser;->(Ljava/lang/ClassLoader;)V +HSPLlibcore/reflect/GenericSignatureParser;->expect(C)V +HSPLlibcore/reflect/GenericSignatureParser;->isStopSymbol(C)Z +HSPLlibcore/reflect/GenericSignatureParser;->parseClassSignature()V +HSPLlibcore/reflect/GenericSignatureParser;->parseClassTypeSignature()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/GenericSignatureParser;->parseFieldTypeSignature()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/GenericSignatureParser;->parseForClass(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V +HSPLlibcore/reflect/GenericSignatureParser;->parseFormalTypeParameter()Llibcore/reflect/TypeVariableImpl; +HSPLlibcore/reflect/GenericSignatureParser;->parseOptFormalTypeParameters()V +HSPLlibcore/reflect/GenericSignatureParser;->parseOptTypeArguments()Llibcore/reflect/ListOfTypes; +HSPLlibcore/reflect/GenericSignatureParser;->parseTypeArgument()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/GenericSignatureParser;->parseTypeVariableSignature()Llibcore/reflect/TypeVariableImpl; +HSPLlibcore/reflect/GenericSignatureParser;->scanIdentifier()V +HSPLlibcore/reflect/GenericSignatureParser;->scanSymbol()V +HSPLlibcore/reflect/GenericSignatureParser;->setInput(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V +HSPLlibcore/reflect/ListOfTypes;->(I)V +HSPLlibcore/reflect/ListOfTypes;->add(Ljava/lang/reflect/Type;)V +HSPLlibcore/reflect/ListOfTypes;->getResolvedTypes()[Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ListOfTypes;->resolveTypes(Ljava/util/List;)[Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ListOfVariables;->()V +HSPLlibcore/reflect/ListOfVariables;->add(Ljava/lang/reflect/TypeVariable;)V +HSPLlibcore/reflect/ListOfVariables;->getArray()[Ljava/lang/reflect/TypeVariable; +HSPLlibcore/reflect/ParameterizedTypeImpl;->(Llibcore/reflect/ParameterizedTypeImpl;Ljava/lang/String;Llibcore/reflect/ListOfTypes;Ljava/lang/ClassLoader;)V +HSPLlibcore/reflect/ParameterizedTypeImpl;->equals(Ljava/lang/Object;)Z +HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getOwnerType()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getResolvedType()Ljava/lang/reflect/Type; +HSPLlibcore/reflect/TypeVariableImpl;->(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V +HSPLlibcore/reflect/TypeVariableImpl;->(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;Llibcore/reflect/ListOfTypes;)V +HSPLlibcore/reflect/TypeVariableImpl;->getName()Ljava/lang/String; +HSPLlibcore/reflect/Types;->getType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; +HSPLlibcore/util/BasicLruCache;->(I)V +HSPLlibcore/util/BasicLruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLlibcore/util/BasicLruCache;->entryEvicted(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLlibcore/util/BasicLruCache;->evictAll()V +HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLlibcore/util/BasicLruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLlibcore/util/BasicLruCache;->trimToSize(I)V +HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/Comparator;)V +HSPLlibcore/util/NativeAllocationRegistry$CleanerRunner;->(Lsun/misc/Cleaner;)V +HSPLlibcore/util/NativeAllocationRegistry$CleanerRunner;->run()V +HSPLlibcore/util/NativeAllocationRegistry$CleanerThunk;->(Llibcore/util/NativeAllocationRegistry;J)V +HSPLlibcore/util/NativeAllocationRegistry$CleanerThunk;->run()V +HSPLlibcore/util/NativeAllocationRegistry;->-get0(Llibcore/util/NativeAllocationRegistry;)J +HSPLlibcore/util/NativeAllocationRegistry;->-get1(Llibcore/util/NativeAllocationRegistry;)J +HSPLlibcore/util/NativeAllocationRegistry;->-wrap0(J)V +HSPLlibcore/util/NativeAllocationRegistry;->(Ljava/lang/ClassLoader;JJ)V +HSPLlibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V +HSPLlibcore/util/NativeAllocationRegistry;->registerNativeAllocation(Ljava/lang/Object;J)Ljava/lang/Runnable; +HSPLlibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V +HSPLlibcore/util/Objects;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLlibcore/util/TimeZoneDataFiles;->getDataTimeZoneFile(Ljava/lang/String;)Ljava/lang/String; +HSPLlibcore/util/TimeZoneDataFiles;->getSystemTimeZoneFile(Ljava/lang/String;)Ljava/lang/String; +HSPLlibcore/util/TimeZoneDataFiles;->getTimeZoneFilePaths(Ljava/lang/String;)[Ljava/lang/String; +HSPLlibcore/util/ZoneInfo$WallTime;->()V +HSPLlibcore/util/ZoneInfo$WallTime;->copyFieldsFromCalendar()V +HSPLlibcore/util/ZoneInfo$WallTime;->getGmtOffset()I +HSPLlibcore/util/ZoneInfo$WallTime;->getHour()I +HSPLlibcore/util/ZoneInfo$WallTime;->getIsDst()I +HSPLlibcore/util/ZoneInfo$WallTime;->getMinute()I +HSPLlibcore/util/ZoneInfo$WallTime;->getMonth()I +HSPLlibcore/util/ZoneInfo$WallTime;->getMonthDay()I +HSPLlibcore/util/ZoneInfo$WallTime;->getSecond()I +HSPLlibcore/util/ZoneInfo$WallTime;->getWeekDay()I +HSPLlibcore/util/ZoneInfo$WallTime;->getYear()I +HSPLlibcore/util/ZoneInfo$WallTime;->getYearDay()I +HSPLlibcore/util/ZoneInfo$WallTime;->localtime(ILlibcore/util/ZoneInfo;)V +HSPLlibcore/util/ZoneInfo$WallTime;->setGmtOffset(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setHour(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setIsDst(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setMinute(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setMonth(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setMonthDay(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setSecond(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setWeekDay(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setYear(I)V +HSPLlibcore/util/ZoneInfo$WallTime;->setYearDay(I)V +HSPLlibcore/util/ZoneInfo;->-get0(Llibcore/util/ZoneInfo;)[B +HSPLlibcore/util/ZoneInfo;->-get1(Llibcore/util/ZoneInfo;)[I +HSPLlibcore/util/ZoneInfo;->-get2(Llibcore/util/ZoneInfo;)I +HSPLlibcore/util/ZoneInfo;->-get3(Llibcore/util/ZoneInfo;)[J +HSPLlibcore/util/ZoneInfo;->-wrap0(JI)I +HSPLlibcore/util/ZoneInfo;->(Ljava/lang/String;[J[B[I[BJ)V +HSPLlibcore/util/ZoneInfo;->checkedAdd(JI)I +HSPLlibcore/util/ZoneInfo;->clone()Ljava/lang/Object; +HSPLlibcore/util/ZoneInfo;->findOffsetIndexForTimeInMilliseconds(J)I +HSPLlibcore/util/ZoneInfo;->findOffsetIndexForTimeInSeconds(J)I +HSPLlibcore/util/ZoneInfo;->findTransitionIndex(J)I +HSPLlibcore/util/ZoneInfo;->getOffset(J)I +HSPLlibcore/util/ZoneInfo;->getOffsetsByUtcTime(J[I)I +HSPLlibcore/util/ZoneInfo;->getRawOffset()I +HSPLlibcore/util/ZoneInfo;->hasSameRules(Ljava/util/TimeZone;)Z +HSPLlibcore/util/ZoneInfo;->inDaylightTime(Ljava/util/Date;)Z +HSPLlibcore/util/ZoneInfo;->readTimeZone(Ljava/lang/String;Llibcore/io/BufferIterator;J)Llibcore/util/ZoneInfo; +HSPLlibcore/util/ZoneInfo;->roundDownMillisToSeconds(J)J +HSPLlibcore/util/ZoneInfo;->roundUpMillisToSeconds(J)J +HSPLlibcore/util/ZoneInfoDB$TzData$1;->(Llibcore/util/ZoneInfoDB$TzData;I)V +HSPLlibcore/util/ZoneInfoDB$TzData$1;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLlibcore/util/ZoneInfoDB$TzData$1;->create(Ljava/lang/String;)Llibcore/util/ZoneInfo; +HSPLlibcore/util/ZoneInfoDB$TzData;->()V +HSPLlibcore/util/ZoneInfoDB$TzData;->checkNotClosed()V +HSPLlibcore/util/ZoneInfoDB$TzData;->close()V +HSPLlibcore/util/ZoneInfoDB$TzData;->finalize()V +HSPLlibcore/util/ZoneInfoDB$TzData;->getAvailableIDs()[Ljava/lang/String; +HSPLlibcore/util/ZoneInfoDB$TzData;->getBufferIterator(Ljava/lang/String;)Llibcore/io/BufferIterator; +HSPLlibcore/util/ZoneInfoDB$TzData;->getVersion()Ljava/lang/String; +HSPLlibcore/util/ZoneInfoDB$TzData;->loadData(Ljava/lang/String;)Z +HSPLlibcore/util/ZoneInfoDB$TzData;->loadTzDataWithFallback([Ljava/lang/String;)Llibcore/util/ZoneInfoDB$TzData; +HSPLlibcore/util/ZoneInfoDB$TzData;->makeTimeZone(Ljava/lang/String;)Llibcore/util/ZoneInfo; +HSPLlibcore/util/ZoneInfoDB$TzData;->makeTimeZoneUncached(Ljava/lang/String;)Llibcore/util/ZoneInfo; +HSPLlibcore/util/ZoneInfoDB$TzData;->readHeader()V +HSPLlibcore/util/ZoneInfoDB$TzData;->readIndex(Llibcore/io/BufferIterator;II)V +HSPLlibcore/util/ZoneInfoDB$TzData;->readZoneTab(Llibcore/io/BufferIterator;II)V +HSPLlibcore/util/ZoneInfoDB$TzData;->validateOffset(II)V +HSPLlibcore/util/ZoneInfoDB;->getInstance()Llibcore/util/ZoneInfoDB$TzData; +HSPLorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->debug(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/Log;->error(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->error(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/Log;->fatal(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->fatal(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/Log;->info(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->info(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/Log;->isDebugEnabled()Z +HSPLorg/apache/commons/logging/Log;->isErrorEnabled()Z +HSPLorg/apache/commons/logging/Log;->isFatalEnabled()Z +HSPLorg/apache/commons/logging/Log;->isInfoEnabled()Z +HSPLorg/apache/commons/logging/Log;->isTraceEnabled()Z +HSPLorg/apache/commons/logging/Log;->isWarnEnabled()Z +HSPLorg/apache/commons/logging/Log;->trace(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->trace(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/Log;->warn(Ljava/lang/Object;)V +HSPLorg/apache/commons/logging/Log;->warn(Ljava/lang/Object;Ljava/lang/Throwable;)V +HSPLorg/apache/commons/logging/LogFactory;->createFactoryStore()Ljava/util/Hashtable; +HSPLorg/apache/commons/logging/LogFactory;->getClassLoader(Ljava/lang/Class;)Ljava/lang/ClassLoader; +HSPLorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/Class;)Lorg/apache/commons/logging/Log; +HSPLorg/apache/commons/logging/LogFactory;->getLog(Ljava/lang/String;)Lorg/apache/commons/logging/Log; +HSPLorg/apache/commons/logging/LogFactory;->initDiagnostics()V +HSPLorg/apache/commons/logging/LogFactory;->isDiagnosticsEnabled()Z +HSPLorg/apache/commons/logging/LogFactory;->logClassLoaderEnvironment(Ljava/lang/Class;)V +HSPLorg/apache/commons/logging/impl/Jdk14Logger;->(Ljava/lang/String;)V +HSPLorg/apache/commons/logging/impl/Jdk14Logger;->getLogger()Ljava/util/logging/Logger; +HSPLorg/apache/commons/logging/impl/WeakHashtable;->()V +HSPLorg/apache/harmony/dalvik/ddmc/Chunk;->(ILjava/nio/ByteBuffer;)V +HSPLorg/apache/harmony/dalvik/ddmc/Chunk;->(I[BII)V +HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->()V +HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->putString(Ljava/nio/ByteBuffer;Ljava/lang/String;)V +HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->type(Ljava/lang/String;)I +HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->wrapChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Ljava/nio/ByteBuffer; +HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->broadcast(I)V +HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->dispatch(I[BII)Lorg/apache/harmony/dalvik/ddmc/Chunk; +HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->sendChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)V +HSPLorg/apache/harmony/luni/internal/util/TimezoneGetter;->()V +HSPLorg/apache/harmony/luni/internal/util/TimezoneGetter;->getId()Ljava/lang/String; +HSPLorg/apache/harmony/luni/internal/util/TimezoneGetter;->getInstance()Lorg/apache/harmony/luni/internal/util/TimezoneGetter; +HSPLorg/apache/harmony/luni/internal/util/TimezoneGetter;->setInstance(Lorg/apache/harmony/luni/internal/util/TimezoneGetter;)V +HSPLorg/apache/harmony/xml/ExpatAttributes;->()V +HSPLorg/apache/harmony/xml/ExpatAttributes;->getLength()I +HSPLorg/apache/harmony/xml/ExpatAttributes;->getLocalName(I)Ljava/lang/String; +HSPLorg/apache/harmony/xml/ExpatAttributes;->getParserPointer()J +HSPLorg/apache/harmony/xml/ExpatAttributes;->getPointer()J +HSPLorg/apache/harmony/xml/ExpatAttributes;->getQName(I)Ljava/lang/String; +HSPLorg/apache/harmony/xml/ExpatAttributes;->getValue(I)Ljava/lang/String; +HSPLorg/apache/harmony/xml/ExpatParser$CurrentAttributes;->(Lorg/apache/harmony/xml/ExpatParser;)V +HSPLorg/apache/harmony/xml/ExpatParser$CurrentAttributes;->(Lorg/apache/harmony/xml/ExpatParser;Lorg/apache/harmony/xml/ExpatParser$CurrentAttributes;)V +HSPLorg/apache/harmony/xml/ExpatParser$CurrentAttributes;->getLength()I +HSPLorg/apache/harmony/xml/ExpatParser$CurrentAttributes;->getParserPointer()J +HSPLorg/apache/harmony/xml/ExpatParser$CurrentAttributes;->getPointer()J +HSPLorg/apache/harmony/xml/ExpatParser$ExpatLocator;->(Lorg/apache/harmony/xml/ExpatParser;)V +HSPLorg/apache/harmony/xml/ExpatParser$ExpatLocator;->(Lorg/apache/harmony/xml/ExpatParser;Lorg/apache/harmony/xml/ExpatParser$ExpatLocator;)V +HSPLorg/apache/harmony/xml/ExpatParser;->-get0(Lorg/apache/harmony/xml/ExpatParser;)I +HSPLorg/apache/harmony/xml/ExpatParser;->-get1(Lorg/apache/harmony/xml/ExpatParser;)J +HSPLorg/apache/harmony/xml/ExpatParser;->-get2(Lorg/apache/harmony/xml/ExpatParser;)Z +HSPLorg/apache/harmony/xml/ExpatParser;->-get3(Lorg/apache/harmony/xml/ExpatParser;)J +HSPLorg/apache/harmony/xml/ExpatParser;->(Ljava/lang/String;Lorg/apache/harmony/xml/ExpatReader;ZLjava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/harmony/xml/ExpatParser;->comment([CI)V +HSPLorg/apache/harmony/xml/ExpatParser;->endDocument()V +HSPLorg/apache/harmony/xml/ExpatParser;->endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/harmony/xml/ExpatParser;->endNamespace(Ljava/lang/String;)V +HSPLorg/apache/harmony/xml/ExpatParser;->finalize()V +HSPLorg/apache/harmony/xml/ExpatParser;->finish()V +HSPLorg/apache/harmony/xml/ExpatParser;->parseDocument(Ljava/io/InputStream;)V +HSPLorg/apache/harmony/xml/ExpatParser;->parseFragment(Ljava/io/InputStream;)V +HSPLorg/apache/harmony/xml/ExpatParser;->startDocument()V +HSPLorg/apache/harmony/xml/ExpatParser;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JI)V +HSPLorg/apache/harmony/xml/ExpatParser;->startNamespace(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/harmony/xml/ExpatParser;->text([CI)V +HSPLorg/apache/harmony/xml/ExpatReader;->()V +HSPLorg/apache/harmony/xml/ExpatReader;->parse(Ljava/io/InputStream;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/harmony/xml/ExpatReader;->parse(Lorg/xml/sax/InputSource;)V +HSPLorg/apache/harmony/xml/ExpatReader;->setContentHandler(Lorg/xml/sax/ContentHandler;)V +HSPLorg/apache/harmony/xml/ExpatReader;->setFeature(Ljava/lang/String;Z)V +HSPLorg/apache/harmony/xml/ExpatReader;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->()V +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->getFeature(Ljava/lang/String;)Z +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->isValidating()Z +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->newSAXParser()Ljavax/xml/parsers/SAXParser; +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->setFeature(Ljava/lang/String;Z)V +HSPLorg/apache/harmony/xml/parsers/SAXParserFactoryImpl;->setNamespaceAware(Z)V +HSPLorg/apache/harmony/xml/parsers/SAXParserImpl;->(Ljava/util/Map;)V +HSPLorg/apache/harmony/xml/parsers/SAXParserImpl;->getXMLReader()Lorg/xml/sax/XMLReader; +HSPLorg/apache/harmony/xml/parsers/SAXParserImpl;->resetInternal()V +HSPLorg/apache/http/ConnectionReuseStrategy;->keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z +HSPLorg/apache/http/Header;->getElements()[Lorg/apache/http/HeaderElement; +HSPLorg/apache/http/Header;->getName()Ljava/lang/String; +HSPLorg/apache/http/Header;->getValue()Ljava/lang/String; +HSPLorg/apache/http/HttpEntity;->consumeContent()V +HSPLorg/apache/http/HttpEntity;->getContent()Ljava/io/InputStream; +HSPLorg/apache/http/HttpEntity;->getContentEncoding()Lorg/apache/http/Header; +HSPLorg/apache/http/HttpEntity;->getContentLength()J +HSPLorg/apache/http/HttpEntity;->getContentType()Lorg/apache/http/Header; +HSPLorg/apache/http/HttpEntity;->isChunked()Z +HSPLorg/apache/http/HttpEntity;->isRepeatable()Z +HSPLorg/apache/http/HttpEntity;->isStreaming()Z +HSPLorg/apache/http/HttpEntity;->writeTo(Ljava/io/OutputStream;)V +HSPLorg/apache/http/HttpMessage;->addHeader(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/http/HttpMessage;->addHeader(Lorg/apache/http/Header;)V +HSPLorg/apache/http/HttpMessage;->containsHeader(Ljava/lang/String;)Z +HSPLorg/apache/http/HttpMessage;->getAllHeaders()[Lorg/apache/http/Header; +HSPLorg/apache/http/HttpMessage;->getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HSPLorg/apache/http/HttpMessage;->getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header; +HSPLorg/apache/http/HttpMessage;->getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header; +HSPLorg/apache/http/HttpMessage;->getParams()Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/HttpMessage;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HSPLorg/apache/http/HttpMessage;->headerIterator()Lorg/apache/http/HeaderIterator; +HSPLorg/apache/http/HttpMessage;->headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator; +HSPLorg/apache/http/HttpMessage;->removeHeader(Lorg/apache/http/Header;)V +HSPLorg/apache/http/HttpMessage;->removeHeaders(Ljava/lang/String;)V +HSPLorg/apache/http/HttpMessage;->setHeader(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/http/HttpMessage;->setHeader(Lorg/apache/http/Header;)V +HSPLorg/apache/http/HttpMessage;->setHeaders([Lorg/apache/http/Header;)V +HSPLorg/apache/http/HttpMessage;->setParams(Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/HttpRequestInterceptor;->process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V +HSPLorg/apache/http/HttpResponse;->getEntity()Lorg/apache/http/HttpEntity; +HSPLorg/apache/http/HttpResponse;->getLocale()Ljava/util/Locale; +HSPLorg/apache/http/HttpResponse;->getStatusLine()Lorg/apache/http/StatusLine; +HSPLorg/apache/http/HttpResponse;->setEntity(Lorg/apache/http/HttpEntity;)V +HSPLorg/apache/http/HttpResponse;->setLocale(Ljava/util/Locale;)V +HSPLorg/apache/http/HttpResponse;->setReasonPhrase(Ljava/lang/String;)V +HSPLorg/apache/http/HttpResponse;->setStatusCode(I)V +HSPLorg/apache/http/HttpResponse;->setStatusLine(Lorg/apache/http/ProtocolVersion;I)V +HSPLorg/apache/http/HttpResponse;->setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V +HSPLorg/apache/http/HttpResponse;->setStatusLine(Lorg/apache/http/StatusLine;)V +HSPLorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/HttpResponseFactory;->newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/HttpResponseInterceptor;->process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V +HSPLorg/apache/http/ProtocolVersion;->(Ljava/lang/String;II)V +HSPLorg/apache/http/ReasonPhraseCatalog;->getReason(ILjava/util/Locale;)Ljava/lang/String; +HSPLorg/apache/http/StatusLine;->getProtocolVersion()Lorg/apache/http/ProtocolVersion; +HSPLorg/apache/http/StatusLine;->getReasonPhrase()Ljava/lang/String; +HSPLorg/apache/http/StatusLine;->getStatusCode()I +HSPLorg/apache/http/client/CookieStore;->addCookie(Lorg/apache/http/cookie/Cookie;)V +HSPLorg/apache/http/client/CookieStore;->clear()V +HSPLorg/apache/http/client/CookieStore;->clearExpired(Ljava/util/Date;)Z +HSPLorg/apache/http/client/CookieStore;->getCookies()Ljava/util/List; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)Ljava/lang/Object; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object; +HSPLorg/apache/http/client/HttpClient;->execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse; +HSPLorg/apache/http/client/HttpClient;->getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager; +HSPLorg/apache/http/client/HttpClient;->getParams()Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/client/params/HttpClientParams;->setRedirecting(Lorg/apache/http/params/HttpParams;Z)V +HSPLorg/apache/http/conn/ClientConnectionManager;->closeExpiredConnections()V +HSPLorg/apache/http/conn/ClientConnectionManager;->closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V +HSPLorg/apache/http/conn/ClientConnectionManager;->getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry; +HSPLorg/apache/http/conn/ClientConnectionManager;->releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V +HSPLorg/apache/http/conn/ClientConnectionManager;->requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest; +HSPLorg/apache/http/conn/ClientConnectionManager;->shutdown()V +HSPLorg/apache/http/conn/ClientConnectionOperator;->createConnection()Lorg/apache/http/conn/OperatedClientConnection; +HSPLorg/apache/http/conn/ClientConnectionOperator;->openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/conn/ClientConnectionOperator;->updateSecureConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/conn/params/ConnManagerParamBean;->(Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/conn/params/ConnManagerParamBean;->setConnectionsPerRoute(Lorg/apache/http/conn/params/ConnPerRouteBean;)V +HSPLorg/apache/http/conn/params/ConnManagerParamBean;->setMaxTotalConnections(I)V +HSPLorg/apache/http/conn/params/ConnManagerParams$1;->()V +HSPLorg/apache/http/conn/params/ConnManagerParams;->getMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/params/ConnPerRoute; +HSPLorg/apache/http/conn/params/ConnManagerParams;->getMaxTotalConnections(Lorg/apache/http/params/HttpParams;)I +HSPLorg/apache/http/conn/params/ConnPerRoute;->getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I +HSPLorg/apache/http/conn/params/ConnPerRouteBean;->(I)V +HSPLorg/apache/http/conn/params/ConnPerRouteBean;->setDefaultMaxPerRoute(I)V +HSPLorg/apache/http/conn/routing/RouteInfo;->getHopCount()I +HSPLorg/apache/http/conn/routing/RouteInfo;->getHopTarget(I)Lorg/apache/http/HttpHost; +HSPLorg/apache/http/conn/routing/RouteInfo;->getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType; +HSPLorg/apache/http/conn/routing/RouteInfo;->getLocalAddress()Ljava/net/InetAddress; +HSPLorg/apache/http/conn/routing/RouteInfo;->getProxyHost()Lorg/apache/http/HttpHost; +HSPLorg/apache/http/conn/routing/RouteInfo;->getTargetHost()Lorg/apache/http/HttpHost; +HSPLorg/apache/http/conn/routing/RouteInfo;->getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType; +HSPLorg/apache/http/conn/routing/RouteInfo;->isLayered()Z +HSPLorg/apache/http/conn/routing/RouteInfo;->isSecure()Z +HSPLorg/apache/http/conn/routing/RouteInfo;->isTunnelled()Z +HSPLorg/apache/http/conn/scheme/PlainSocketFactory;->()V +HSPLorg/apache/http/conn/scheme/PlainSocketFactory;->(Lorg/apache/http/conn/scheme/HostNameResolver;)V +HSPLorg/apache/http/conn/scheme/PlainSocketFactory;->getSocketFactory()Lorg/apache/http/conn/scheme/PlainSocketFactory; +HSPLorg/apache/http/conn/scheme/Scheme;->(Ljava/lang/String;Lorg/apache/http/conn/scheme/SocketFactory;I)V +HSPLorg/apache/http/conn/scheme/Scheme;->getDefaultPort()I +HSPLorg/apache/http/conn/scheme/Scheme;->getName()Ljava/lang/String; +HSPLorg/apache/http/conn/scheme/Scheme;->getSocketFactory()Lorg/apache/http/conn/scheme/SocketFactory; +HSPLorg/apache/http/conn/scheme/SchemeRegistry;->()V +HSPLorg/apache/http/conn/scheme/SchemeRegistry;->getSchemeNames()Ljava/util/List; +HSPLorg/apache/http/conn/scheme/SchemeRegistry;->register(Lorg/apache/http/conn/scheme/Scheme;)Lorg/apache/http/conn/scheme/Scheme; +HSPLorg/apache/http/conn/scheme/SchemeRegistry;->unregister(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme; +HSPLorg/apache/http/conn/ssl/AbstractVerifier;->()V +HSPLorg/apache/http/conn/ssl/AllowAllHostnameVerifier;->()V +HSPLorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier;->()V +HSPLorg/apache/http/conn/ssl/SSLSocketFactory;->(Ljavax/net/ssl/SSLSocketFactory;)V +HSPLorg/apache/http/conn/ssl/StrictHostnameVerifier;->()V +HSPLorg/apache/http/conn/ssl/X509HostnameVerifier;->verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V +HSPLorg/apache/http/conn/ssl/X509HostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z +HSPLorg/apache/http/conn/ssl/X509HostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V +HSPLorg/apache/http/cookie/CookieIdentityComparator;->()V +HSPLorg/apache/http/entity/AbstractHttpEntity;->()V +HSPLorg/apache/http/entity/AbstractHttpEntity;->setContentEncoding(Ljava/lang/String;)V +HSPLorg/apache/http/entity/AbstractHttpEntity;->setContentEncoding(Lorg/apache/http/Header;)V +HSPLorg/apache/http/entity/AbstractHttpEntity;->setContentType(Ljava/lang/String;)V +HSPLorg/apache/http/entity/AbstractHttpEntity;->setContentType(Lorg/apache/http/Header;)V +HSPLorg/apache/http/entity/BasicHttpEntity;->()V +HSPLorg/apache/http/entity/BasicHttpEntity;->consumeContent()V +HSPLorg/apache/http/entity/BasicHttpEntity;->getContent()Ljava/io/InputStream; +HSPLorg/apache/http/entity/BasicHttpEntity;->getContentLength()J +HSPLorg/apache/http/entity/BasicHttpEntity;->setContent(Ljava/io/InputStream;)V +HSPLorg/apache/http/entity/BasicHttpEntity;->setContentLength(J)V +HSPLorg/apache/http/impl/DefaultConnectionReuseStrategy;->()V +HSPLorg/apache/http/impl/DefaultHttpResponseFactory;->()V +HSPLorg/apache/http/impl/DefaultHttpResponseFactory;->(Lorg/apache/http/ReasonPhraseCatalog;)V +HSPLorg/apache/http/impl/EnglishReasonPhraseCatalog;->()V +HSPLorg/apache/http/impl/EnglishReasonPhraseCatalog;->setReason(ILjava/lang/String;)V +HSPLorg/apache/http/impl/client/AbstractHttpClient;->(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createCookieStore()Lorg/apache/http/client/CookieStore; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createHttpParams()Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createRedirectHandler()Lorg/apache/http/client/RedirectHandler; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler; +HSPLorg/apache/http/impl/client/AbstractHttpClient;->getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager; +HSPLorg/apache/http/impl/client/BasicCookieStore;->()V +HSPLorg/apache/http/impl/client/DefaultHttpClient;->(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/impl/conn/DefaultClientConnectionOperator;->(Lorg/apache/http/conn/scheme/SchemeRegistry;)V +HSPLorg/apache/http/impl/conn/IdleConnectionHandler;->()V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->()V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->deleteClosedConnections()V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->enableConnectionGC()V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V +HSPLorg/apache/http/impl/conn/tsccm/AbstractConnPool;->requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest; +HSPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->createFreeConnQueue()Ljava/util/Queue; +HSPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->createRouteToPoolMap()Ljava/util/Map; +HSPLorg/apache/http/impl/conn/tsccm/ConnPoolByRoute;->createWaitingThreadQueue()Ljava/util/Queue; +HSPLorg/apache/http/impl/conn/tsccm/RefQueueHandler;->handleReference(Ljava/lang/ref/Reference;)V +HSPLorg/apache/http/impl/conn/tsccm/RefQueueWorker;->(Ljava/lang/ref/ReferenceQueue;Lorg/apache/http/impl/conn/tsccm/RefQueueHandler;)V +HSPLorg/apache/http/impl/conn/tsccm/RefQueueWorker;->run()V +HSPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V +HSPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator; +HSPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->createConnectionPool(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/impl/conn/tsccm/AbstractConnPool; +HSPLorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;->getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry; +HSPLorg/apache/http/impl/cookie/DateUtils$DateFormatHolder$1;->()V +HSPLorg/apache/http/impl/cookie/DateUtils$DateFormatHolder$1;->initialValue()Ljava/lang/Object; +HSPLorg/apache/http/impl/cookie/DateUtils$DateFormatHolder$1;->initialValue()Ljava/lang/ref/SoftReference; +HSPLorg/apache/http/impl/cookie/DateUtils$DateFormatHolder;->formatFor(Ljava/lang/String;)Ljava/text/SimpleDateFormat; +HSPLorg/apache/http/impl/cookie/DateUtils;->parseDate(Ljava/lang/String;)Ljava/util/Date; +HSPLorg/apache/http/impl/cookie/DateUtils;->parseDate(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date; +HSPLorg/apache/http/message/AbstractHttpMessage;->()V +HSPLorg/apache/http/message/AbstractHttpMessage;->(Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/message/AbstractHttpMessage;->addHeader(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/http/message/AbstractHttpMessage;->getAllHeaders()[Lorg/apache/http/Header; +HSPLorg/apache/http/message/BasicHeader;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/apache/http/message/BasicHeader;->getName()Ljava/lang/String; +HSPLorg/apache/http/message/BasicHeader;->getValue()Ljava/lang/String; +HSPLorg/apache/http/message/BasicHttpResponse;->(Lorg/apache/http/StatusLine;)V +HSPLorg/apache/http/message/BasicHttpResponse;->(Lorg/apache/http/StatusLine;Lorg/apache/http/ReasonPhraseCatalog;Ljava/util/Locale;)V +HSPLorg/apache/http/message/BasicHttpResponse;->getEntity()Lorg/apache/http/HttpEntity; +HSPLorg/apache/http/message/BasicHttpResponse;->getStatusLine()Lorg/apache/http/StatusLine; +HSPLorg/apache/http/message/BasicHttpResponse;->setEntity(Lorg/apache/http/HttpEntity;)V +HSPLorg/apache/http/message/BasicStatusLine;->(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V +HSPLorg/apache/http/message/BasicStatusLine;->getStatusCode()I +HSPLorg/apache/http/message/HeaderGroup;->()V +HSPLorg/apache/http/message/HeaderGroup;->addHeader(Lorg/apache/http/Header;)V +HSPLorg/apache/http/message/HeaderGroup;->getAllHeaders()[Lorg/apache/http/Header; +HSPLorg/apache/http/params/AbstractHttpParams;->()V +HSPLorg/apache/http/params/AbstractHttpParams;->getIntParameter(Ljava/lang/String;I)I +HSPLorg/apache/http/params/AbstractHttpParams;->setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/AbstractHttpParams;->setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/BasicHttpParams;->()V +HSPLorg/apache/http/params/BasicHttpParams;->getParameter(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/apache/http/params/BasicHttpParams;->setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpAbstractParamBean;->(Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/params/HttpConnectionParams;->setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V +HSPLorg/apache/http/params/HttpConnectionParams;->setSoTimeout(Lorg/apache/http/params/HttpParams;I)V +HSPLorg/apache/http/params/HttpConnectionParams;->setSocketBufferSize(Lorg/apache/http/params/HttpParams;I)V +HSPLorg/apache/http/params/HttpConnectionParams;->setStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;Z)V +HSPLorg/apache/http/params/HttpParams;->copy()Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpParams;->getBooleanParameter(Ljava/lang/String;Z)Z +HSPLorg/apache/http/params/HttpParams;->getDoubleParameter(Ljava/lang/String;D)D +HSPLorg/apache/http/params/HttpParams;->getIntParameter(Ljava/lang/String;I)I +HSPLorg/apache/http/params/HttpParams;->getLongParameter(Ljava/lang/String;J)J +HSPLorg/apache/http/params/HttpParams;->getParameter(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/apache/http/params/HttpParams;->isParameterFalse(Ljava/lang/String;)Z +HSPLorg/apache/http/params/HttpParams;->isParameterTrue(Ljava/lang/String;)Z +HSPLorg/apache/http/params/HttpParams;->removeParameter(Ljava/lang/String;)Z +HSPLorg/apache/http/params/HttpParams;->setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpParams;->setDoubleParameter(Ljava/lang/String;D)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpParams;->setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpParams;->setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpParams;->setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams; +HSPLorg/apache/http/params/HttpProtocolParams;->setUserAgent(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V +HSPLorg/apache/http/protocol/BasicHttpProcessor;->()V +HSPLorg/apache/http/protocol/BasicHttpProcessor;->addInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V +HSPLorg/apache/http/protocol/BasicHttpProcessor;->addInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V +HSPLorg/apache/http/protocol/BasicHttpProcessor;->addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V +HSPLorg/apache/http/protocol/BasicHttpProcessor;->addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V +HSPLorg/apache/http/protocol/HttpRequestHandler;->handle(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V +HSPLorg/apache/http/protocol/HttpRequestHandlerRegistry;->()V +HSPLorg/apache/http/protocol/HttpRequestHandlerRegistry;->register(Ljava/lang/String;Lorg/apache/http/protocol/HttpRequestHandler;)V +HSPLorg/apache/http/protocol/HttpRequestHandlerResolver;->lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler; +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->clearRequestInterceptors()V +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor; +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->getRequestInterceptorCount()I +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->removeRequestInterceptorByClass(Ljava/lang/Class;)V +HSPLorg/apache/http/protocol/HttpRequestInterceptorList;->setInterceptors(Ljava/util/List;)V +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->clearResponseInterceptors()V +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor; +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->getResponseInterceptorCount()I +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->removeResponseInterceptorByClass(Ljava/lang/Class;)V +HSPLorg/apache/http/protocol/HttpResponseInterceptorList;->setInterceptors(Ljava/util/List;)V +HSPLorg/apache/http/protocol/HttpService;->(Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/HttpResponseFactory;)V +HSPLorg/apache/http/protocol/HttpService;->setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V +HSPLorg/apache/http/protocol/HttpService;->setHandlerResolver(Lorg/apache/http/protocol/HttpRequestHandlerResolver;)V +HSPLorg/apache/http/protocol/HttpService;->setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V +HSPLorg/apache/http/protocol/HttpService;->setParams(Lorg/apache/http/params/HttpParams;)V +HSPLorg/apache/http/protocol/HttpService;->setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V +HSPLorg/apache/http/protocol/ResponseConnControl;->()V +HSPLorg/apache/http/protocol/ResponseContent;->()V +HSPLorg/apache/http/protocol/UriPatternMatcher;->()V +HSPLorg/apache/http/protocol/UriPatternMatcher;->register(Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/json/JSON;->checkDouble(D)D +HSPLorg/json/JSON;->toBoolean(Ljava/lang/Object;)Ljava/lang/Boolean; +HSPLorg/json/JSON;->toInteger(Ljava/lang/Object;)Ljava/lang/Integer; +HSPLorg/json/JSON;->toLong(Ljava/lang/Object;)Ljava/lang/Long; +HSPLorg/json/JSON;->toString(Ljava/lang/Object;)Ljava/lang/String; +HSPLorg/json/JSON;->typeMismatch(Ljava/lang/Object;Ljava/lang/String;)Lorg/json/JSONException; +HSPLorg/json/JSONArray;->()V +HSPLorg/json/JSONArray;->(Ljava/lang/String;)V +HSPLorg/json/JSONArray;->(Lorg/json/JSONTokener;)V +HSPLorg/json/JSONArray;->get(I)Ljava/lang/Object; +HSPLorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject; +HSPLorg/json/JSONArray;->getString(I)Ljava/lang/String; +HSPLorg/json/JSONArray;->length()I +HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray; +HSPLorg/json/JSONArray;->toString()Ljava/lang/String; +HSPLorg/json/JSONArray;->writeTo(Lorg/json/JSONStringer;)V +HSPLorg/json/JSONException;->(Ljava/lang/String;)V +HSPLorg/json/JSONObject$1;->()V +HSPLorg/json/JSONObject;->()V +HSPLorg/json/JSONObject;->(Ljava/lang/String;)V +HSPLorg/json/JSONObject;->(Lorg/json/JSONTokener;)V +HSPLorg/json/JSONObject;->checkName(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/json/JSONObject;->getInt(Ljava/lang/String;)I +HSPLorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; +HSPLorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->getLong(Ljava/lang/String;)J +HSPLorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->has(Ljava/lang/String;)Z +HSPLorg/json/JSONObject;->keys()Ljava/util/Iterator; +HSPLorg/json/JSONObject;->length()I +HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String; +HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z +HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;)I +HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I +HSPLorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;J)J +HSPLorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; +HSPLorg/json/JSONObject;->toString()Ljava/lang/String; +HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V +HSPLorg/json/JSONStringer$Scope;->(Ljava/lang/String;I)V +HSPLorg/json/JSONStringer;->()V +HSPLorg/json/JSONStringer;->array()Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->beforeKey()V +HSPLorg/json/JSONStringer;->beforeValue()V +HSPLorg/json/JSONStringer;->close(Lorg/json/JSONStringer$Scope;Lorg/json/JSONStringer$Scope;Ljava/lang/String;)Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->endArray()Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->endObject()Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->key(Ljava/lang/String;)Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->newline()V +HSPLorg/json/JSONStringer;->object()Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->open(Lorg/json/JSONStringer$Scope;Ljava/lang/String;)Lorg/json/JSONStringer; +HSPLorg/json/JSONStringer;->peek()Lorg/json/JSONStringer$Scope; +HSPLorg/json/JSONStringer;->replaceTop(Lorg/json/JSONStringer$Scope;)V +HSPLorg/json/JSONStringer;->string(Ljava/lang/String;)V +HSPLorg/json/JSONStringer;->toString()Ljava/lang/String; +HSPLorg/json/JSONStringer;->value(Ljava/lang/Object;)Lorg/json/JSONStringer; +HSPLorg/json/JSONTokener;->(Ljava/lang/String;)V +HSPLorg/json/JSONTokener;->nextCleanInternal()I +HSPLorg/json/JSONTokener;->nextString(C)Ljava/lang/String; +HSPLorg/json/JSONTokener;->nextToInternal(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONTokener;->nextValue()Ljava/lang/Object; +HSPLorg/json/JSONTokener;->readArray()Lorg/json/JSONArray; +HSPLorg/json/JSONTokener;->readEscapeCharacter()C +HSPLorg/json/JSONTokener;->readLiteral()Ljava/lang/Object; +HSPLorg/json/JSONTokener;->readObject()Lorg/json/JSONObject; +HSPLorg/json/JSONTokener;->skipToEndOfLine()V +HSPLorg/kxml2/io/KXmlParser;->()V +HSPLorg/kxml2/io/KXmlParser;->adjustNsp()Z +HSPLorg/kxml2/io/KXmlParser;->ensureCapacity([Ljava/lang/String;I)[Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->fillBuffer(I)Z +HSPLorg/kxml2/io/KXmlParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->getDepth()I +HSPLorg/kxml2/io/KXmlParser;->getEventType()I +HSPLorg/kxml2/io/KXmlParser;->getName()Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->getNamespace(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->getNamespaceCount(I)I +HSPLorg/kxml2/io/KXmlParser;->getText()Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->next()I +HSPLorg/kxml2/io/KXmlParser;->next(Z)I +HSPLorg/kxml2/io/KXmlParser;->nextTag()I +HSPLorg/kxml2/io/KXmlParser;->nextText()Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->parseStartTag(ZZ)V +HSPLorg/kxml2/io/KXmlParser;->peekCharacter()I +HSPLorg/kxml2/io/KXmlParser;->peekType(Z)I +HSPLorg/kxml2/io/KXmlParser;->read(C)V +HSPLorg/kxml2/io/KXmlParser;->read([C)V +HSPLorg/kxml2/io/KXmlParser;->readComment(Z)Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->readEndTag()V +HSPLorg/kxml2/io/KXmlParser;->readEntity(Ljava/lang/StringBuilder;ZZLorg/kxml2/io/KXmlParser$ValueContext;)V +HSPLorg/kxml2/io/KXmlParser;->readName()Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->readUntil([CZ)Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->readValue(CZZLorg/kxml2/io/KXmlParser$ValueContext;)Ljava/lang/String; +HSPLorg/kxml2/io/KXmlParser;->readXmlDeclaration()V +HSPLorg/kxml2/io/KXmlParser;->require(ILjava/lang/String;Ljava/lang/String;)V +HSPLorg/kxml2/io/KXmlParser;->setFeature(Ljava/lang/String;Z)V +HSPLorg/kxml2/io/KXmlParser;->setInput(Ljava/io/InputStream;Ljava/lang/String;)V +HSPLorg/kxml2/io/KXmlParser;->setInput(Ljava/io/Reader;)V +HSPLorg/kxml2/io/KXmlParser;->skip()V +HSPLorg/xml/sax/Attributes;->getIndex(Ljava/lang/String;)I +HSPLorg/xml/sax/Attributes;->getIndex(Ljava/lang/String;Ljava/lang/String;)I +HSPLorg/xml/sax/Attributes;->getLength()I +HSPLorg/xml/sax/Attributes;->getLocalName(I)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getQName(I)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getType(I)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getType(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getURI(I)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getValue(I)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getValue(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/xml/sax/Attributes;->getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/xml/sax/ContentHandler;->endPrefixMapping(Ljava/lang/String;)V +HSPLorg/xml/sax/ContentHandler;->ignorableWhitespace([CII)V +HSPLorg/xml/sax/ContentHandler;->processingInstruction(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ContentHandler;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLorg/xml/sax/ContentHandler;->skippedEntity(Ljava/lang/String;)V +HSPLorg/xml/sax/ContentHandler;->startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/DTDHandler;->notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/DTDHandler;->unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ErrorHandler;->error(Lorg/xml/sax/SAXParseException;)V +HSPLorg/xml/sax/ErrorHandler;->fatalError(Lorg/xml/sax/SAXParseException;)V +HSPLorg/xml/sax/ErrorHandler;->warning(Lorg/xml/sax/SAXParseException;)V +HSPLorg/xml/sax/InputSource;->(Ljava/io/InputStream;)V +HSPLorg/xml/sax/InputSource;->getByteStream()Ljava/io/InputStream; +HSPLorg/xml/sax/InputSource;->getCharacterStream()Ljava/io/Reader; +HSPLorg/xml/sax/InputSource;->getEncoding()Ljava/lang/String; +HSPLorg/xml/sax/InputSource;->getPublicId()Ljava/lang/String; +HSPLorg/xml/sax/InputSource;->getSystemId()Ljava/lang/String; +HSPLorg/xml/sax/InputSource;->setByteStream(Ljava/io/InputStream;)V +HSPLorg/xml/sax/Locator;->getColumnNumber()I +HSPLorg/xml/sax/Locator;->getLineNumber()I +HSPLorg/xml/sax/Locator;->getPublicId()Ljava/lang/String; +HSPLorg/xml/sax/Locator;->getSystemId()Ljava/lang/String; +HSPLorg/xml/sax/XMLReader;->getContentHandler()Lorg/xml/sax/ContentHandler; +HSPLorg/xml/sax/XMLReader;->getDTDHandler()Lorg/xml/sax/DTDHandler; +HSPLorg/xml/sax/XMLReader;->getEntityResolver()Lorg/xml/sax/EntityResolver; +HSPLorg/xml/sax/XMLReader;->getErrorHandler()Lorg/xml/sax/ErrorHandler; +HSPLorg/xml/sax/XMLReader;->getFeature(Ljava/lang/String;)Z +HSPLorg/xml/sax/XMLReader;->getProperty(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/xml/sax/XMLReader;->parse(Ljava/lang/String;)V +HSPLorg/xml/sax/XMLReader;->parse(Lorg/xml/sax/InputSource;)V +HSPLorg/xml/sax/XMLReader;->setContentHandler(Lorg/xml/sax/ContentHandler;)V +HSPLorg/xml/sax/XMLReader;->setDTDHandler(Lorg/xml/sax/DTDHandler;)V +HSPLorg/xml/sax/XMLReader;->setEntityResolver(Lorg/xml/sax/EntityResolver;)V +HSPLorg/xml/sax/XMLReader;->setErrorHandler(Lorg/xml/sax/ErrorHandler;)V +HSPLorg/xml/sax/XMLReader;->setFeature(Ljava/lang/String;Z)V +HSPLorg/xml/sax/XMLReader;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/xml/sax/ext/DeclHandler;->attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ext/DeclHandler;->elementDecl(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ext/DeclHandler;->externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ext/DeclHandler;->internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ext/DefaultHandler2;->()V +HSPLorg/xml/sax/ext/EntityResolver2;->getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource; +HSPLorg/xml/sax/ext/EntityResolver2;->resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource; +HSPLorg/xml/sax/ext/LexicalHandler;->endCDATA()V +HSPLorg/xml/sax/ext/LexicalHandler;->endDTD()V +HSPLorg/xml/sax/ext/LexicalHandler;->endEntity(Ljava/lang/String;)V +HSPLorg/xml/sax/ext/LexicalHandler;->startCDATA()V +HSPLorg/xml/sax/ext/LexicalHandler;->startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xml/sax/ext/LexicalHandler;->startEntity(Ljava/lang/String;)V +HSPLorg/xml/sax/helpers/DefaultHandler;->()V +HSPLorg/xml/sax/helpers/DefaultHandler;->endPrefixMapping(Ljava/lang/String;)V +HSPLorg/xml/sax/helpers/DefaultHandler;->setDocumentLocator(Lorg/xml/sax/Locator;)V +HSPLorg/xml/sax/helpers/DefaultHandler;->startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLorg/xmlpull/v1/XmlSerializer;->cdsect(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->comment(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->docdecl(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->endDocument()V +HSPLorg/xmlpull/v1/XmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLorg/xmlpull/v1/XmlSerializer;->entityRef(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->flush()V +HSPLorg/xmlpull/v1/XmlSerializer;->getDepth()I +HSPLorg/xmlpull/v1/XmlSerializer;->getFeature(Ljava/lang/String;)Z +HSPLorg/xmlpull/v1/XmlSerializer;->getName()Ljava/lang/String; +HSPLorg/xmlpull/v1/XmlSerializer;->getNamespace()Ljava/lang/String; +HSPLorg/xmlpull/v1/XmlSerializer;->getPrefix(Ljava/lang/String;Z)Ljava/lang/String; +HSPLorg/xmlpull/v1/XmlSerializer;->getProperty(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/xmlpull/v1/XmlSerializer;->ignorableWhitespace(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->processingInstruction(Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->setFeature(Ljava/lang/String;Z)V +HSPLorg/xmlpull/v1/XmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->setOutput(Ljava/io/Writer;)V +HSPLorg/xmlpull/v1/XmlSerializer;->setPrefix(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/xmlpull/v1/XmlSerializer;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/xmlpull/v1/XmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V +HSPLorg/xmlpull/v1/XmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLorg/xmlpull/v1/XmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLorg/xmlpull/v1/XmlSerializer;->text([CII)Lorg/xmlpull/v1/XmlSerializer; +HSPLsun/misc/ASCIICaseInsensitiveComparator;->()V +HSPLsun/misc/ASCIICaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLsun/misc/ASCIICaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLsun/misc/ASCIICaseInsensitiveComparator;->isUpper(I)Z +HSPLsun/misc/ASCIICaseInsensitiveComparator;->lowerCaseHashCode(Ljava/lang/String;)I +HSPLsun/misc/ASCIICaseInsensitiveComparator;->toLower(I)I +HSPLsun/misc/Cleaner;->(Ljava/lang/Object;Ljava/lang/Runnable;)V +HSPLsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner; +HSPLsun/misc/Cleaner;->clean()V +HSPLsun/misc/Cleaner;->create(Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner; +HSPLsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z +HSPLsun/misc/FDBigInteger;->(J[CII)V +HSPLsun/misc/FDBigInteger;->([II)V +HSPLsun/misc/FDBigInteger;->big5pow(I)Lsun/misc/FDBigInteger; +HSPLsun/misc/FDBigInteger;->cmp(Lsun/misc/FDBigInteger;)I +HSPLsun/misc/FDBigInteger;->cmpPow52(II)I +HSPLsun/misc/FDBigInteger;->leftInplaceSub(Lsun/misc/FDBigInteger;)Lsun/misc/FDBigInteger; +HSPLsun/misc/FDBigInteger;->leftShift(I)Lsun/misc/FDBigInteger; +HSPLsun/misc/FDBigInteger;->leftShift([II[IIII)V +HSPLsun/misc/FDBigInteger;->makeImmutable()V +HSPLsun/misc/FDBigInteger;->mult([III[I)V +HSPLsun/misc/FDBigInteger;->multAddMe(II)V +HSPLsun/misc/FDBigInteger;->multByPow52(II)Lsun/misc/FDBigInteger; +HSPLsun/misc/FDBigInteger;->rightInplaceSub(Lsun/misc/FDBigInteger;)Lsun/misc/FDBigInteger; +HSPLsun/misc/FDBigInteger;->trimLeadingZeros()V +HSPLsun/misc/FDBigInteger;->valueOfMulPow52(JII)Lsun/misc/FDBigInteger; +HSPLsun/misc/FloatingDecimal$1;->initialValue()Ljava/lang/Object; +HSPLsun/misc/FloatingDecimal$1;->initialValue()Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer; +HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;->(ZI[CI)V +HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;->doubleValue()D +HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;->floatValue()F +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->-wrap0(Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;IJIZ)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->-wrap1(Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;Z)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->()V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->appendTo(Ljava/lang/Appendable;)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->developLongDigits(IJI)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->dtoa(IJIZ)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->estimateDecExp(JI)I +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->getChars([C)I +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->getDecimalExponent()I +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->getDigits([C)I +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->isExceptional()Z +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->isNegative()Z +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->roundup()V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->setSign(Z)V +HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->toJavaFormatString()Ljava/lang/String; +HSPLsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer;->doubleValue()D +HSPLsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer;->floatValue()F +HSPLsun/misc/FloatingDecimal;->appendTo(DLjava/lang/Appendable;)V +HSPLsun/misc/FloatingDecimal;->appendTo(FLjava/lang/Appendable;)V +HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIBuffer()Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer; +HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(D)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; +HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(DZ)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; +HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(F)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; +HSPLsun/misc/FloatingDecimal;->parseDouble(Ljava/lang/String;)D +HSPLsun/misc/FloatingDecimal;->parseFloat(Ljava/lang/String;)F +HSPLsun/misc/FloatingDecimal;->readJavaFormatString(Ljava/lang/String;)Lsun/misc/FloatingDecimal$ASCIIToBinaryConverter; +HSPLsun/misc/FloatingDecimal;->toJavaFormatString(D)Ljava/lang/String; +HSPLsun/misc/FloatingDecimal;->toJavaFormatString(F)Ljava/lang/String; +HSPLsun/misc/FormattedFloatingDecimal$1;->()V +HSPLsun/misc/FormattedFloatingDecimal$1;->initialValue()Ljava/lang/Object; +HSPLsun/misc/FormattedFloatingDecimal$Form;->(Ljava/lang/String;I)V +HSPLsun/misc/FormattedFloatingDecimal$Form;->values()[Lsun/misc/FormattedFloatingDecimal$Form; +HSPLsun/misc/FormattedFloatingDecimal;->-getsun-misc-FormattedFloatingDecimal$FormSwitchesValues()[I +HSPLsun/misc/FormattedFloatingDecimal;->(ILsun/misc/FormattedFloatingDecimal$Form;Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;)V +HSPLsun/misc/FormattedFloatingDecimal;->applyPrecision(I[CII)I +HSPLsun/misc/FormattedFloatingDecimal;->create(ZI)[C +HSPLsun/misc/FormattedFloatingDecimal;->fillDecimal(I[CIIZ)V +HSPLsun/misc/FormattedFloatingDecimal;->getBuffer()[C +HSPLsun/misc/FormattedFloatingDecimal;->getMantissa()[C +HSPLsun/misc/FormattedFloatingDecimal;->valueOf(DILsun/misc/FormattedFloatingDecimal$Form;)Lsun/misc/FormattedFloatingDecimal; +HSPLsun/misc/IOUtils;->readFully(Ljava/io/InputStream;IZ)[B +HSPLsun/misc/JavaIOFileDescriptorAccess;->get(Ljava/io/FileDescriptor;)I +HSPLsun/misc/JavaIOFileDescriptorAccess;->getHandle(Ljava/io/FileDescriptor;)J +HSPLsun/misc/JavaIOFileDescriptorAccess;->set(Ljava/io/FileDescriptor;I)V +HSPLsun/misc/JavaIOFileDescriptorAccess;->setHandle(Ljava/io/FileDescriptor;J)V +HSPLsun/misc/SharedSecrets;->getJavaIOFileDescriptorAccess()Lsun/misc/JavaIOFileDescriptorAccess; +HSPLsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLsun/misc/Unsafe;->arrayIndexScale(Ljava/lang/Class;)I +HSPLsun/misc/Unsafe;->getAndAddInt(Ljava/lang/Object;JI)I +HSPLsun/misc/Unsafe;->getAndAddLong(Ljava/lang/Object;JJ)J +HSPLsun/misc/Unsafe;->getAndSetInt(Ljava/lang/Object;JI)I +HSPLsun/misc/Unsafe;->getAndSetObject(Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object; +HSPLsun/misc/Unsafe;->getUnsafe()Lsun/misc/Unsafe; +HSPLsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J +HSPLsun/misc/Unsafe;->park(ZJ)V +HSPLsun/misc/Unsafe;->unpark(Ljava/lang/Object;)V +HSPLsun/net/NetHooks;->beforeTcpBind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLsun/net/NetHooks;->beforeTcpConnect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V +HSPLsun/net/NetProperties$1;->()V +HSPLsun/net/NetProperties$1;->run()Ljava/lang/Object; +HSPLsun/net/NetProperties$1;->run()Ljava/lang/Void; +HSPLsun/net/NetProperties;->-wrap0()V +HSPLsun/net/NetProperties;->get(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/net/NetProperties;->loadDefaultProperties()V +HSPLsun/net/ResourceManager;->afterUdpClose()V +HSPLsun/net/ResourceManager;->beforeUdpCreate()V +HSPLsun/net/spi/DefaultProxySelector$1;->(Lsun/net/spi/DefaultProxySelector;Ljava/lang/String;Lsun/net/spi/DefaultProxySelector$NonProxyInfo;Ljava/lang/String;)V +HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/lang/Object; +HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/net/Proxy; +HSPLsun/net/spi/DefaultProxySelector$NonProxyInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/regex/Pattern;Ljava/lang/String;)V +HSPLsun/net/spi/DefaultProxySelector;->()V +HSPLsun/net/spi/DefaultProxySelector;->select(Ljava/net/URI;)Ljava/util/List; +HSPLsun/net/spi/nameservice/NameService;->getHostByAddr([B)Ljava/lang/String; +HSPLsun/net/spi/nameservice/NameService;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLsun/net/util/IPAddressUtil;->convertFromIPv4MappedAddress([B)[B +HSPLsun/net/util/IPAddressUtil;->isIPv4MappedAddress([B)Z +HSPLsun/net/www/ParseUtil;->decode(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/net/www/ParseUtil;->encodePath(Ljava/lang/String;Z)Ljava/lang/String; +HSPLsun/net/www/protocol/file/Handler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V +HSPLsun/net/www/protocol/jar/Handler;->()V +HSPLsun/nio/ch/FileChannelImpl$Unmapper;->(JJILjava/io/FileDescriptor;)V +HSPLsun/nio/ch/FileChannelImpl$Unmapper;->(JJILjava/io/FileDescriptor;Lsun/nio/ch/FileChannelImpl$Unmapper;)V +HSPLsun/nio/ch/FileChannelImpl;->(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)V +HSPLsun/nio/ch/FileChannelImpl;->ensureOpen()V +HSPLsun/nio/ch/FileChannelImpl;->fileLockTable()Lsun/nio/ch/FileLockTable; +HSPLsun/nio/ch/FileChannelImpl;->finalize()V +HSPLsun/nio/ch/FileChannelImpl;->implCloseChannel()V +HSPLsun/nio/ch/FileChannelImpl;->isSharedFileLockTable()Z +HSPLsun/nio/ch/FileChannelImpl;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer; +HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel; +HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel; +HSPLsun/nio/ch/FileChannelImpl;->position()J +HSPLsun/nio/ch/FileChannelImpl;->release(Lsun/nio/ch/FileLockImpl;)V +HSPLsun/nio/ch/FileChannelImpl;->size()J +HSPLsun/nio/ch/FileChannelImpl;->tryLock(JJZ)Ljava/nio/channels/FileLock; +HSPLsun/nio/ch/FileDispatcher;->()V +HSPLsun/nio/ch/FileDispatcher;->canTransferToDirectly(Ljava/nio/channels/SelectableChannel;)Z +HSPLsun/nio/ch/FileDispatcher;->duplicateForMapping(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HSPLsun/nio/ch/FileDispatcher;->force(Ljava/io/FileDescriptor;Z)I +HSPLsun/nio/ch/FileDispatcher;->lock(Ljava/io/FileDescriptor;ZJJZ)I +HSPLsun/nio/ch/FileDispatcher;->release(Ljava/io/FileDescriptor;JJ)V +HSPLsun/nio/ch/FileDispatcher;->size(Ljava/io/FileDescriptor;)J +HSPLsun/nio/ch/FileDispatcher;->transferToDirectlyNeedsPositionLock()Z +HSPLsun/nio/ch/FileDispatcher;->truncate(Ljava/io/FileDescriptor;J)I +HSPLsun/nio/ch/FileDispatcherImpl;->(Z)V +HSPLsun/nio/ch/FileDispatcherImpl;->duplicateForMapping(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; +HSPLsun/nio/ch/FileDispatcherImpl;->lock(Ljava/io/FileDescriptor;ZJJZ)I +HSPLsun/nio/ch/FileDispatcherImpl;->release(Ljava/io/FileDescriptor;JJ)V +HSPLsun/nio/ch/FileDispatcherImpl;->size(Ljava/io/FileDescriptor;)J +HSPLsun/nio/ch/FileKey;->()V +HSPLsun/nio/ch/FileKey;->create(Ljava/io/FileDescriptor;)Lsun/nio/ch/FileKey; +HSPLsun/nio/ch/FileKey;->hashCode()I +HSPLsun/nio/ch/FileLockImpl;->(Ljava/nio/channels/FileChannel;JJZ)V +HSPLsun/nio/ch/FileLockImpl;->release()V +HSPLsun/nio/ch/FileLockTable;->()V +HSPLsun/nio/ch/FileLockTable;->add(Ljava/nio/channels/FileLock;)V +HSPLsun/nio/ch/FileLockTable;->newSharedFileLockTable(Ljava/nio/channels/Channel;Ljava/io/FileDescriptor;)Lsun/nio/ch/FileLockTable; +HSPLsun/nio/ch/FileLockTable;->remove(Ljava/nio/channels/FileLock;)V +HSPLsun/nio/ch/FileLockTable;->removeAll()Ljava/util/List; +HSPLsun/nio/ch/FileLockTable;->replace(Ljava/nio/channels/FileLock;Ljava/nio/channels/FileLock;)V +HSPLsun/nio/ch/IOStatus;->checkAll(J)Z +HSPLsun/nio/ch/IOStatus;->normalize(J)J +HSPLsun/nio/ch/NativeDispatcher;->()V +HSPLsun/nio/ch/NativeThreadSet;->(I)V +HSPLsun/nio/ch/NativeThreadSet;->add()I +HSPLsun/nio/ch/NativeThreadSet;->remove(I)V +HSPLsun/nio/ch/NativeThreadSet;->signalAndWait()V +HSPLsun/nio/ch/SharedFileLockTable$FileLockReference;->(Ljava/nio/channels/FileLock;Ljava/lang/ref/ReferenceQueue;Lsun/nio/ch/FileKey;)V +HSPLsun/nio/ch/SharedFileLockTable;->(Ljava/nio/channels/Channel;Ljava/io/FileDescriptor;)V +HSPLsun/nio/ch/SharedFileLockTable;->add(Ljava/nio/channels/FileLock;)V +HSPLsun/nio/ch/SharedFileLockTable;->remove(Ljava/nio/channels/FileLock;)V +HSPLsun/nio/ch/SharedFileLockTable;->removeAll()Ljava/util/List; +HSPLsun/nio/ch/SharedFileLockTable;->removeKeyIfEmpty(Lsun/nio/ch/FileKey;Ljava/util/List;)V +HSPLsun/nio/ch/SharedFileLockTable;->removeStaleEntries()V +HSPLsun/nio/cs/StreamDecoder;->(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V +HSPLsun/nio/cs/StreamDecoder;->(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V +HSPLsun/nio/cs/StreamDecoder;->close()V +HSPLsun/nio/cs/StreamDecoder;->ensureOpen()V +HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder; +HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder; +HSPLsun/nio/cs/StreamDecoder;->implClose()V +HSPLsun/nio/cs/StreamDecoder;->implRead([CII)I +HSPLsun/nio/cs/StreamDecoder;->inReady()Z +HSPLsun/nio/cs/StreamDecoder;->read([CII)I +HSPLsun/nio/cs/StreamDecoder;->readBytes()I +HSPLsun/nio/cs/StreamEncoder;->(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V +HSPLsun/nio/cs/StreamEncoder;->(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V +HSPLsun/nio/cs/StreamEncoder;->close()V +HSPLsun/nio/cs/StreamEncoder;->ensureOpen()V +HSPLsun/nio/cs/StreamEncoder;->flush()V +HSPLsun/nio/cs/StreamEncoder;->flushBuffer()V +HSPLsun/nio/cs/StreamEncoder;->flushLeftoverChar(Ljava/nio/CharBuffer;Z)V +HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder; +HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamEncoder; +HSPLsun/nio/cs/StreamEncoder;->implClose()V +HSPLsun/nio/cs/StreamEncoder;->implFlush()V +HSPLsun/nio/cs/StreamEncoder;->implFlushBuffer()V +HSPLsun/nio/cs/StreamEncoder;->implWrite([CII)V +HSPLsun/nio/cs/StreamEncoder;->isOpen()Z +HSPLsun/nio/cs/StreamEncoder;->write([CII)V +HSPLsun/nio/cs/StreamEncoder;->writeBytes()V +HSPLsun/nio/cs/ThreadLocalCoders$1;->(I)V +HSPLsun/nio/cs/ThreadLocalCoders$2;->(I)V +HSPLsun/nio/cs/ThreadLocalCoders$2;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/nio/cs/ThreadLocalCoders$Cache;->(I)V +HSPLsun/nio/cs/ThreadLocalCoders$Cache;->forName(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/nio/cs/ThreadLocalCoders$Cache;->moveToFront([Ljava/lang/Object;I)V +HSPLsun/nio/cs/ThreadLocalCoders;->encoderFor(Ljava/lang/Object;)Ljava/nio/charset/CharsetEncoder; +HSPLsun/nio/fs/AbstractBasicFileAttributeView;->()V +HSPLsun/nio/fs/AbstractFileSystemProvider;->()V +HSPLsun/nio/fs/AbstractFileSystemProvider;->implDelete(Ljava/nio/file/Path;Z)Z +HSPLsun/nio/fs/AbstractPath;->()V +HSPLsun/nio/fs/DefaultFileSystemProvider;->create()Ljava/nio/file/spi/FileSystemProvider; +HSPLsun/nio/fs/DefaultFileSystemProvider;->createProvider(Ljava/lang/String;)Ljava/nio/file/spi/FileSystemProvider; +HSPLsun/nio/fs/DynamicFileAttributeView;->readAttributes([Ljava/lang/String;)Ljava/util/Map; +HSPLsun/nio/fs/DynamicFileAttributeView;->setAttribute(Ljava/lang/String;Ljava/lang/Object;)V +HSPLsun/nio/fs/LinuxFileSystem;->(Lsun/nio/fs/UnixFileSystemProvider;Ljava/lang/String;)V +HSPLsun/nio/fs/LinuxFileSystemProvider;->()V +HSPLsun/nio/fs/LinuxFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView; +HSPLsun/nio/fs/LinuxFileSystemProvider;->newFileSystem(Ljava/lang/String;)Lsun/nio/fs/LinuxFileSystem; +HSPLsun/nio/fs/LinuxFileSystemProvider;->newFileSystem(Ljava/lang/String;)Lsun/nio/fs/UnixFileSystem; +HSPLsun/nio/fs/LinuxFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/NativeBuffer$Deallocator;->(J)V +HSPLsun/nio/fs/NativeBuffer;->(I)V +HSPLsun/nio/fs/NativeBuffer;->address()J +HSPLsun/nio/fs/NativeBuffer;->owner()Ljava/lang/Object; +HSPLsun/nio/fs/NativeBuffer;->release()V +HSPLsun/nio/fs/NativeBuffer;->setOwner(Ljava/lang/Object;)V +HSPLsun/nio/fs/NativeBuffer;->size()I +HSPLsun/nio/fs/NativeBuffers;->allocNativeBuffer(I)Lsun/nio/fs/NativeBuffer; +HSPLsun/nio/fs/NativeBuffers;->copyCStringToNativeBuffer([BLsun/nio/fs/NativeBuffer;)V +HSPLsun/nio/fs/NativeBuffers;->getNativeBufferFromCache(I)Lsun/nio/fs/NativeBuffer; +HSPLsun/nio/fs/NativeBuffers;->releaseNativeBuffer(Lsun/nio/fs/NativeBuffer;)V +HSPLsun/nio/fs/UnixChannelFactory$Flags;->-getjava-nio-file-StandardOpenOptionSwitchesValues()[I +HSPLsun/nio/fs/UnixChannelFactory$Flags;->()V +HSPLsun/nio/fs/UnixChannelFactory$Flags;->toFlags(Ljava/util/Set;)Lsun/nio/fs/UnixChannelFactory$Flags; +HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(ILsun/nio/fs/UnixPath;Ljava/lang/String;Ljava/util/Set;I)Ljava/nio/channels/FileChannel; +HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(Lsun/nio/fs/UnixPath;Ljava/util/Set;I)Ljava/nio/channels/FileChannel; +HSPLsun/nio/fs/UnixChannelFactory;->open(ILsun/nio/fs/UnixPath;Ljava/lang/String;Lsun/nio/fs/UnixChannelFactory$Flags;I)Ljava/io/FileDescriptor; +HSPLsun/nio/fs/UnixConstants;->get_S_IAMB()I +HSPLsun/nio/fs/UnixException;->(I)V +HSPLsun/nio/fs/UnixException;->errno()I +HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;)V +HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;)V +HSPLsun/nio/fs/UnixException;->translateToIOException(Ljava/lang/String;Ljava/lang/String;)Ljava/io/IOException; +HSPLsun/nio/fs/UnixFileAttributeViews$Basic;->(Lsun/nio/fs/UnixPath;Z)V +HSPLsun/nio/fs/UnixFileAttributeViews$Basic;->readAttributes()Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/UnixFileAttributeViews;->createBasicView(Lsun/nio/fs/UnixPath;Z)Lsun/nio/fs/UnixFileAttributeViews$Basic; +HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->(Lsun/nio/fs/UnixFileAttributes;)V +HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->isRegularFile()Z +HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->wrap(Lsun/nio/fs/UnixFileAttributes;)Lsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes; +HSPLsun/nio/fs/UnixFileAttributes;->()V +HSPLsun/nio/fs/UnixFileAttributes;->asBasicFileAttributes()Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/UnixFileAttributes;->get(Lsun/nio/fs/UnixPath;Z)Lsun/nio/fs/UnixFileAttributes; +HSPLsun/nio/fs/UnixFileAttributes;->isRegularFile()Z +HSPLsun/nio/fs/UnixFileModeAttribute;->toUnixMode(I[Ljava/nio/file/attribute/FileAttribute;)I +HSPLsun/nio/fs/UnixFileSystem;->(Lsun/nio/fs/UnixFileSystemProvider;Ljava/lang/String;)V +HSPLsun/nio/fs/UnixFileSystem;->getFileStore(Lsun/nio/fs/UnixMountEntry;)Ljava/nio/file/FileStore; +HSPLsun/nio/fs/UnixFileSystem;->getMountEntries()Ljava/lang/Iterable; +HSPLsun/nio/fs/UnixFileSystem;->getPath(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; +HSPLsun/nio/fs/UnixFileSystem;->needToResolveAgainstDefaultDirectory()Z +HSPLsun/nio/fs/UnixFileSystem;->normalizeJavaPath(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/nio/fs/UnixFileSystem;->normalizeNativePath([C)[C +HSPLsun/nio/fs/UnixFileSystem;->provider()Ljava/nio/file/spi/FileSystemProvider; +HSPLsun/nio/fs/UnixFileSystemProvider;->-getjava-nio-file-AccessModeSwitchesValues()[I +HSPLsun/nio/fs/UnixFileSystemProvider;->()V +HSPLsun/nio/fs/UnixFileSystemProvider;->checkAccess(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)V +HSPLsun/nio/fs/UnixFileSystemProvider;->checkPath(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath; +HSPLsun/nio/fs/UnixFileSystemProvider;->checkUri(Ljava/net/URI;)V +HSPLsun/nio/fs/UnixFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView; +HSPLsun/nio/fs/UnixFileSystemProvider;->getFileStore(Lsun/nio/fs/UnixPath;)Ljava/nio/file/FileStore; +HSPLsun/nio/fs/UnixFileSystemProvider;->getFileSystem(Ljava/net/URI;)Ljava/nio/file/FileSystem; +HSPLsun/nio/fs/UnixFileSystemProvider;->getScheme()Ljava/lang/String; +HSPLsun/nio/fs/UnixFileSystemProvider;->newFileChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel; +HSPLsun/nio/fs/UnixFileSystemProvider;->newFileSystem(Ljava/lang/String;)Lsun/nio/fs/UnixFileSystem; +HSPLsun/nio/fs/UnixFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/UnixNativeDispatcher;->access(Lsun/nio/fs/UnixPath;I)V +HSPLsun/nio/fs/UnixNativeDispatcher;->copyToNativeBuffer(Lsun/nio/fs/UnixPath;)Lsun/nio/fs/NativeBuffer; +HSPLsun/nio/fs/UnixNativeDispatcher;->lstat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V +HSPLsun/nio/fs/UnixNativeDispatcher;->open(Lsun/nio/fs/UnixPath;II)I +HSPLsun/nio/fs/UnixPath;->(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)V +HSPLsun/nio/fs/UnixPath;->(Lsun/nio/fs/UnixFileSystem;[B)V +HSPLsun/nio/fs/UnixPath;->asByteArray()[B +HSPLsun/nio/fs/UnixPath;->checkNotNul(Ljava/lang/String;C)V +HSPLsun/nio/fs/UnixPath;->checkRead()V +HSPLsun/nio/fs/UnixPath;->checkWrite()V +HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B +HSPLsun/nio/fs/UnixPath;->getByteArrayForSysCalls()[B +HSPLsun/nio/fs/UnixPath;->getFileSystem()Ljava/nio/file/FileSystem; +HSPLsun/nio/fs/UnixPath;->getFileSystem()Lsun/nio/fs/UnixFileSystem; +HSPLsun/nio/fs/UnixPath;->getParent()Ljava/nio/file/Path; +HSPLsun/nio/fs/UnixPath;->getParent()Lsun/nio/fs/UnixPath; +HSPLsun/nio/fs/UnixPath;->getPathForExceptionMessage()Ljava/lang/String; +HSPLsun/nio/fs/UnixPath;->initOffsets()V +HSPLsun/nio/fs/UnixPath;->isEmpty()Z +HSPLsun/nio/fs/UnixPath;->normalize(Ljava/lang/String;II)Ljava/lang/String; +HSPLsun/nio/fs/UnixPath;->normalizeAndCheck(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/nio/fs/UnixPath;->toString()Ljava/lang/String; +HSPLsun/nio/fs/UnixPath;->toUnixPath(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath; +HSPLsun/nio/fs/Util;->followLinks([Ljava/nio/file/LinkOption;)Z +HSPLsun/nio/fs/Util;->jnuEncoding()Ljava/nio/charset/Charset; +HSPLsun/nio/fs/Util;->newSet([Ljava/lang/Object;)Ljava/util/Set; +HSPLsun/nio/fs/Util;->toBytes(Ljava/lang/String;)[B +HSPLsun/nio/fs/Util;->toString([B)Ljava/lang/String; +HSPLsun/security/action/GetBooleanAction;->(Ljava/lang/String;)V +HSPLsun/security/action/GetBooleanAction;->run()Ljava/lang/Boolean; +HSPLsun/security/action/GetBooleanAction;->run()Ljava/lang/Object; +HSPLsun/security/action/GetPropertyAction;->(Ljava/lang/String;)V +HSPLsun/security/action/GetPropertyAction;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/security/action/GetPropertyAction;->run()Ljava/lang/Object; +HSPLsun/security/action/GetPropertyAction;->run()Ljava/lang/String; +HSPLsun/security/jca/GetInstance$Instance;->(Ljava/security/Provider;Ljava/lang/Object;)V +HSPLsun/security/jca/GetInstance$Instance;->(Ljava/security/Provider;Ljava/lang/Object;Lsun/security/jca/GetInstance$Instance;)V +HSPLsun/security/jca/GetInstance$Instance;->toArray()[Ljava/lang/Object; +HSPLsun/security/jca/GetInstance;->checkSuperClass(Ljava/security/Provider$Service;Ljava/lang/Class;Ljava/lang/Class;)V +HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance; +HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance; +HSPLsun/security/jca/GetInstance;->getInstance(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance; +HSPLsun/security/jca/GetInstance;->getService(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Provider$Service; +HSPLsun/security/jca/GetInstance;->getServices(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLsun/security/jca/ProviderConfig;->(Ljava/lang/String;)V +HSPLsun/security/jca/ProviderConfig;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/security/jca/ProviderConfig;->(Ljava/security/Provider;)V +HSPLsun/security/jca/ProviderConfig;->equals(Ljava/lang/Object;)Z +HSPLsun/security/jca/ProviderConfig;->expand(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/security/jca/ProviderConfig;->getProvider()Ljava/security/Provider; +HSPLsun/security/jca/ProviderList$2;->(Lsun/security/jca/ProviderList;)V +HSPLsun/security/jca/ProviderList$2;->get(I)Ljava/lang/Object; +HSPLsun/security/jca/ProviderList$2;->get(I)Ljava/security/Provider; +HSPLsun/security/jca/ProviderList$2;->size()I +HSPLsun/security/jca/ProviderList$ServiceList$1;->(Lsun/security/jca/ProviderList$ServiceList;)V +HSPLsun/security/jca/ProviderList$ServiceList$1;->hasNext()Z +HSPLsun/security/jca/ProviderList$ServiceList$1;->next()Ljava/lang/Object; +HSPLsun/security/jca/ProviderList$ServiceList$1;->next()Ljava/security/Provider$Service; +HSPLsun/security/jca/ProviderList$ServiceList;->-wrap0(Lsun/security/jca/ProviderList$ServiceList;I)Ljava/security/Provider$Service; +HSPLsun/security/jca/ProviderList$ServiceList;->(Lsun/security/jca/ProviderList;Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/security/jca/ProviderList$ServiceList;->addService(Ljava/security/Provider$Service;)V +HSPLsun/security/jca/ProviderList$ServiceList;->iterator()Ljava/util/Iterator; +HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service; +HSPLsun/security/jca/ProviderList;->-get0(Lsun/security/jca/ProviderList;)[Lsun/security/jca/ProviderConfig; +HSPLsun/security/jca/ProviderList;->([Lsun/security/jca/ProviderConfig;Z)V +HSPLsun/security/jca/ProviderList;->getIndex(Ljava/lang/String;)I +HSPLsun/security/jca/ProviderList;->getJarList([Ljava/lang/String;)Lsun/security/jca/ProviderList; +HSPLsun/security/jca/ProviderList;->getProvider(I)Ljava/security/Provider; +HSPLsun/security/jca/ProviderList;->getProvider(Ljava/lang/String;)Ljava/security/Provider; +HSPLsun/security/jca/ProviderList;->getProviderConfig(Ljava/lang/String;)Lsun/security/jca/ProviderConfig; +HSPLsun/security/jca/ProviderList;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLsun/security/jca/ProviderList;->getServices(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +HSPLsun/security/jca/ProviderList;->insertAt(Lsun/security/jca/ProviderList;Ljava/security/Provider;I)Lsun/security/jca/ProviderList; +HSPLsun/security/jca/ProviderList;->loadAll()I +HSPLsun/security/jca/ProviderList;->providers()Ljava/util/List; +HSPLsun/security/jca/ProviderList;->removeInvalid()Lsun/security/jca/ProviderList; +HSPLsun/security/jca/ProviderList;->toArray()[Ljava/security/Provider; +HSPLsun/security/jca/Providers;->beginThreadProviderList(Lsun/security/jca/ProviderList;)Lsun/security/jca/ProviderList; +HSPLsun/security/jca/Providers;->endThreadProviderList(Lsun/security/jca/ProviderList;)V +HSPLsun/security/jca/Providers;->getFullProviderList()Lsun/security/jca/ProviderList; +HSPLsun/security/jca/Providers;->getProviderList()Lsun/security/jca/ProviderList; +HSPLsun/security/jca/Providers;->getSunProvider()Ljava/security/Provider; +HSPLsun/security/jca/Providers;->getSystemProviderList()Lsun/security/jca/ProviderList; +HSPLsun/security/jca/Providers;->getThreadProviderList()Lsun/security/jca/ProviderList; +HSPLsun/security/jca/Providers;->setProviderList(Lsun/security/jca/ProviderList;)V +HSPLsun/security/jca/Providers;->setSystemProviderList(Lsun/security/jca/ProviderList;)V +HSPLsun/security/jca/Providers;->startJarVerification()Ljava/lang/Object; +HSPLsun/security/jca/Providers;->stopJarVerification(Ljava/lang/Object;)V +HSPLsun/security/jca/ServiceId;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/security/pkcs/ContentInfo;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/pkcs/ContentInfo;->(Lsun/security/util/DerInputStream;Z)V +HSPLsun/security/pkcs/ContentInfo;->getContent()Lsun/security/util/DerValue; +HSPLsun/security/pkcs/ContentInfo;->getData()[B +HSPLsun/security/pkcs/PKCS7$VerbatimX509Certificate;->(Ljava/security/cert/X509Certificate;[B)V +HSPLsun/security/pkcs/PKCS7$VerbatimX509Certificate;->getEncoded()[B +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getIssuerDN()Ljava/security/Principal; +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getKeyUsage()[Z +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getPublicKey()Ljava/security/PublicKey; +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getSerialNumber()Ljava/math/BigInteger; +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getSubjectDN()Ljava/security/Principal; +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getTBSCertificate()[B +HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->hasUnsupportedCriticalExtension()Z +HSPLsun/security/pkcs/PKCS7;->([B)V +HSPLsun/security/pkcs/PKCS7;->getCertificate(Ljava/math/BigInteger;Lsun/security/x509/X500Name;)Ljava/security/cert/X509Certificate; +HSPLsun/security/pkcs/PKCS7;->getCertificates()[Ljava/security/cert/X509Certificate; +HSPLsun/security/pkcs/PKCS7;->getContentInfo()Lsun/security/pkcs/ContentInfo; +HSPLsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;)V +HSPLsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;Z)V +HSPLsun/security/pkcs/PKCS7;->parseSignedData(Lsun/security/util/DerValue;)V +HSPLsun/security/pkcs/PKCS7;->populateCertIssuerNames()V +HSPLsun/security/pkcs/PKCS7;->verify(Lsun/security/pkcs/SignerInfo;[B)Lsun/security/pkcs/SignerInfo; +HSPLsun/security/pkcs/PKCS7;->verify([B)[Lsun/security/pkcs/SignerInfo; +HSPLsun/security/pkcs/SignerInfo;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/pkcs/SignerInfo;->(Lsun/security/util/DerInputStream;Z)V +HSPLsun/security/pkcs/SignerInfo;->getCertificate(Lsun/security/pkcs/PKCS7;)Ljava/security/cert/X509Certificate; +HSPLsun/security/pkcs/SignerInfo;->getCertificateChain(Lsun/security/pkcs/PKCS7;)Ljava/util/ArrayList; +HSPLsun/security/pkcs/SignerInfo;->getDigestAlgorithmId()Lsun/security/x509/AlgorithmId; +HSPLsun/security/pkcs/SignerInfo;->getDigestEncryptionAlgorithmId()Lsun/security/x509/AlgorithmId; +HSPLsun/security/pkcs/SignerInfo;->getTimestamp()Ljava/security/Timestamp; +HSPLsun/security/pkcs/SignerInfo;->getTsToken()Lsun/security/pkcs/PKCS7; +HSPLsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;Ljava/io/InputStream;)Lsun/security/pkcs/SignerInfo; +HSPLsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo; +HSPLsun/security/provider/X509Factory;->addToCache(Lsun/security/util/Cache;[BLjava/lang/Object;)V +HSPLsun/security/provider/X509Factory;->getFromCache(Lsun/security/util/Cache;[B)Ljava/lang/Object; +HSPLsun/security/provider/X509Factory;->intern(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl; +HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->()V +HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->match(Ljava/security/cert/Certificate;)Z +HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z +HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->setSkiAndSerialNumber(Lsun/security/x509/AuthorityKeyIdentifierExtension;)V +HSPLsun/security/provider/certpath/AlgorithmChecker;->(Ljava/security/cert/TrustAnchor;)V +HSPLsun/security/provider/certpath/AlgorithmChecker;->(Ljava/security/cert/TrustAnchor;Ljava/security/AlgorithmConstraints;)V +HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/AlgorithmChecker;->checkFingerprint(Ljava/security/cert/X509Certificate;)Z +HSPLsun/security/provider/certpath/AlgorithmChecker;->init(Z)V +HSPLsun/security/provider/certpath/BasicChecker;->(Ljava/security/cert/TrustAnchor;Ljava/util/Date;Ljava/lang/String;Z)V +HSPLsun/security/provider/certpath/BasicChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/BasicChecker;->getPublicKey()Ljava/security/PublicKey; +HSPLsun/security/provider/certpath/BasicChecker;->init(Z)V +HSPLsun/security/provider/certpath/BasicChecker;->updateState(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/BasicChecker;->verifySignature(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/BasicChecker;->verifyTimestamp(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/CertPathHelper;->()V +HSPLsun/security/provider/certpath/CertPathHelper;->implSetDateAndTime(Ljava/security/cert/X509CRLSelector;Ljava/util/Date;J)V +HSPLsun/security/provider/certpath/CertPathHelper;->implSetPathToNames(Ljava/security/cert/X509CertSelector;Ljava/util/Set;)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->(I)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->checkBasicConstraints(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->init(Z)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->mergeNameConstraints(Ljava/security/cert/X509Certificate;Lsun/security/x509/NameConstraintsExtension;)Lsun/security/x509/NameConstraintsExtension; +HSPLsun/security/provider/certpath/ConstraintsChecker;->verifyNameConstraints(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/KeyChecker;->(ILjava/security/cert/CertSelector;)V +HSPLsun/security/provider/certpath/KeyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/KeyChecker;->init(Z)V +HSPLsun/security/provider/certpath/KeyChecker;->verifyCAKeyUsage(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->(Ljava/security/cert/CertPath;Ljava/security/cert/PKIXParameters;)V +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->(Ljava/security/cert/PKIXParameters;)V +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->anyPolicyInhibited()Z +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPath()Ljava/security/cert/CertPath; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPathCheckers()Ljava/util/List; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certificates()Ljava/util/List; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->date()Ljava/util/Date; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->explicitPolicyRequired()Z +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->initialPolicies()Ljava/util/Set; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyMappingInhibited()Z +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyQualifiersRejected()Z +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->revocationEnabled()Z +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->sigProvider()Ljava/lang/String; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->targetCertConstraints()Ljava/security/cert/CertSelector; +HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->trustAnchors()Ljava/util/Set; +HSPLsun/security/provider/certpath/PKIX;->checkParams(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Lsun/security/provider/certpath/PKIX$ValidatorParams; +HSPLsun/security/provider/certpath/PKIX;->isDSAPublicKeyWithoutParams(Ljava/security/PublicKey;)Z +HSPLsun/security/provider/certpath/PKIXCertPathValidator;->()V +HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult; +HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult; +HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult; +HSPLsun/security/provider/certpath/PKIXMasterCertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/util/List;Ljava/util/List;)V +HSPLsun/security/provider/certpath/PolicyChecker;->(Ljava/util/Set;IZZZZLsun/security/provider/certpath/PolicyNodeImpl;)V +HSPLsun/security/provider/certpath/PolicyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/PolicyChecker;->checkPolicy(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/PolicyChecker;->getPolicyTree()Ljava/security/cert/PolicyNode; +HSPLsun/security/provider/certpath/PolicyChecker;->init(Z)V +HSPLsun/security/provider/certpath/PolicyChecker;->mergeExplicitPolicy(ILsun/security/x509/X509CertImpl;Z)I +HSPLsun/security/provider/certpath/PolicyChecker;->mergeInhibitAnyPolicy(ILsun/security/x509/X509CertImpl;)I +HSPLsun/security/provider/certpath/PolicyChecker;->mergePolicyMapping(ILsun/security/x509/X509CertImpl;)I +HSPLsun/security/provider/certpath/PolicyChecker;->processParents(IZZLsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;Z)Z +HSPLsun/security/provider/certpath/PolicyChecker;->processPolicies(ILjava/util/Set;IIIZLsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/x509/X509CertImpl;Z)Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyChecker;->processPolicyMappings(Lsun/security/x509/X509CertImpl;IILsun/security/provider/certpath/PolicyNodeImpl;ZLjava/util/Set;)Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->(Lsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;ZLjava/util/Set;Z)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->(Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->addChild(Lsun/security/provider/certpath/PolicyNodeImpl;)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree()Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree(Lsun/security/provider/certpath/PolicyNodeImpl;)Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getChildren()Ljava/util/Iterator; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getDepth()I +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpected(ILjava/lang/String;Z)Ljava/util/Set; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpectedHelper(ILjava/lang/String;Z)Ljava/util/Set; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getValidPolicy()Ljava/lang/String; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->prune(I)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->setImmutable()V +HSPLsun/security/util/AbstractAlgorithmConstraints$1;->(Ljava/lang/String;)V +HSPLsun/security/util/AbstractAlgorithmConstraints$1;->run()Ljava/lang/Object; +HSPLsun/security/util/AbstractAlgorithmConstraints$1;->run()Ljava/lang/String; +HSPLsun/security/util/AbstractAlgorithmConstraints;->(Lsun/security/util/AlgorithmDecomposer;)V +HSPLsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z +HSPLsun/security/util/AbstractAlgorithmConstraints;->getAlgorithms(Ljava/lang/String;)[Ljava/lang/String; +HSPLsun/security/util/AlgorithmDecomposer;->()V +HSPLsun/security/util/AlgorithmDecomposer;->decompose(Ljava/lang/String;)Ljava/util/Set; +HSPLsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set; +HSPLsun/security/util/AlgorithmDecomposer;->decomposeOneHash(Ljava/lang/String;)Ljava/util/Set; +HSPLsun/security/util/AlgorithmDecomposer;->hasLoop(Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/security/util/AlgorithmDecomposer;->hashName(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/security/util/BitArray;->(I[B)V +HSPLsun/security/util/BitArray;->get(I)Z +HSPLsun/security/util/BitArray;->length()I +HSPLsun/security/util/BitArray;->position(I)I +HSPLsun/security/util/BitArray;->subscript(I)I +HSPLsun/security/util/BitArray;->toBooleanArray()[Z +HSPLsun/security/util/BitArray;->toByteArray()[B +HSPLsun/security/util/ByteArrayLexOrder;->()V +HSPLsun/security/util/ByteArrayTagOrder;->()V +HSPLsun/security/util/Cache$EqualByteArray;->([B)V +HSPLsun/security/util/Cache$EqualByteArray;->equals(Ljava/lang/Object;)Z +HSPLsun/security/util/Cache$EqualByteArray;->hashCode()I +HSPLsun/security/util/Cache;->()V +HSPLsun/security/util/Cache;->accept(Lsun/security/util/Cache$CacheVisitor;)V +HSPLsun/security/util/Cache;->clear()V +HSPLsun/security/util/Cache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/security/util/Cache;->newSoftMemoryCache(I)Lsun/security/util/Cache; +HSPLsun/security/util/Cache;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLsun/security/util/Cache;->remove(Ljava/lang/Object;)V +HSPLsun/security/util/Cache;->setCapacity(I)V +HSPLsun/security/util/Cache;->setTimeout(I)V +HSPLsun/security/util/Cache;->size()I +HSPLsun/security/util/CertConstraintParameters;->(Ljava/security/cert/X509Certificate;Z)V +HSPLsun/security/util/CertConstraintParameters;->getCertificate()Ljava/security/cert/X509Certificate; +HSPLsun/security/util/Debug;->getInstance(Ljava/lang/String;)Lsun/security/util/Debug; +HSPLsun/security/util/Debug;->getInstance(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug; +HSPLsun/security/util/Debug;->isOn(Ljava/lang/String;)Z +HSPLsun/security/util/DerIndefLenConverter;->isIndefinite(I)Z +HSPLsun/security/util/DerIndefLenConverter;->isLongForm(I)Z +HSPLsun/security/util/DerInputBuffer;->([B)V +HSPLsun/security/util/DerInputBuffer;->([BII)V +HSPLsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger; +HSPLsun/security/util/DerInputBuffer;->getBitString()[B +HSPLsun/security/util/DerInputBuffer;->getBitString(I)[B +HSPLsun/security/util/DerInputBuffer;->getInteger(I)I +HSPLsun/security/util/DerInputBuffer;->getPos()I +HSPLsun/security/util/DerInputBuffer;->getSlice(II)[B +HSPLsun/security/util/DerInputBuffer;->getTime(IZ)Ljava/util/Date; +HSPLsun/security/util/DerInputBuffer;->getUTCTime(I)Ljava/util/Date; +HSPLsun/security/util/DerInputBuffer;->getUnalignedBitString()Lsun/security/util/BitArray; +HSPLsun/security/util/DerInputBuffer;->peek()I +HSPLsun/security/util/DerInputBuffer;->toByteArray()[B +HSPLsun/security/util/DerInputBuffer;->truncate(I)V +HSPLsun/security/util/DerInputStream;->(Lsun/security/util/DerInputBuffer;)V +HSPLsun/security/util/DerInputStream;->([B)V +HSPLsun/security/util/DerInputStream;->available()I +HSPLsun/security/util/DerInputStream;->getBigInteger()Ljava/math/BigInteger; +HSPLsun/security/util/DerInputStream;->getByte()I +HSPLsun/security/util/DerInputStream;->getBytes([B)V +HSPLsun/security/util/DerInputStream;->getDerValue()Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getLength()I +HSPLsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I +HSPLsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I +HSPLsun/security/util/DerInputStream;->getOID()Lsun/security/util/ObjectIdentifier; +HSPLsun/security/util/DerInputStream;->getOctetString()[B +HSPLsun/security/util/DerInputStream;->getSequence(I)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getSequence(IZ)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getSet(I)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getSet(IZ)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getSet(IZZ)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getUTCTime()Ljava/util/Date; +HSPLsun/security/util/DerInputStream;->getUnalignedBitString()Lsun/security/util/BitArray; +HSPLsun/security/util/DerInputStream;->init([BIIZ)V +HSPLsun/security/util/DerInputStream;->mark(I)V +HSPLsun/security/util/DerInputStream;->peekByte()I +HSPLsun/security/util/DerInputStream;->readVector(I)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->readVector(IZ)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->reset()V +HSPLsun/security/util/DerInputStream;->subStream(IZ)Lsun/security/util/DerInputStream; +HSPLsun/security/util/DerInputStream;->toByteArray()[B +HSPLsun/security/util/DerOutputStream;->()V +HSPLsun/security/util/DerOutputStream;->putDerValue(Lsun/security/util/DerValue;)V +HSPLsun/security/util/DerOutputStream;->putLength(I)V +HSPLsun/security/util/DerOutputStream;->putNull()V +HSPLsun/security/util/DerOutputStream;->putOID(Lsun/security/util/ObjectIdentifier;)V +HSPLsun/security/util/DerOutputStream;->putOctetString([B)V +HSPLsun/security/util/DerOutputStream;->putOrderedSet(B[Lsun/security/util/DerEncoder;Ljava/util/Comparator;)V +HSPLsun/security/util/DerOutputStream;->putOrderedSetOf(B[Lsun/security/util/DerEncoder;)V +HSPLsun/security/util/DerOutputStream;->putUnalignedBitString(Lsun/security/util/BitArray;)V +HSPLsun/security/util/DerOutputStream;->write(BLsun/security/util/DerOutputStream;)V +HSPLsun/security/util/DerOutputStream;->write(B[B)V +HSPLsun/security/util/DerValue;->(B[B)V +HSPLsun/security/util/DerValue;->(Ljava/io/InputStream;)V +HSPLsun/security/util/DerValue;->(Lsun/security/util/DerInputBuffer;Z)V +HSPLsun/security/util/DerValue;->([B)V +HSPLsun/security/util/DerValue;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/util/DerValue;->getBigInteger()Ljava/math/BigInteger; +HSPLsun/security/util/DerValue;->getBitString()[B +HSPLsun/security/util/DerValue;->getBoolean()Z +HSPLsun/security/util/DerValue;->getData()Lsun/security/util/DerInputStream; +HSPLsun/security/util/DerValue;->getDataBytes()[B +HSPLsun/security/util/DerValue;->getIA5String()Ljava/lang/String; +HSPLsun/security/util/DerValue;->getInteger()I +HSPLsun/security/util/DerValue;->getOID()Lsun/security/util/ObjectIdentifier; +HSPLsun/security/util/DerValue;->getOctetString()[B +HSPLsun/security/util/DerValue;->getOriginalEncodedForm()[B +HSPLsun/security/util/DerValue;->getTag()B +HSPLsun/security/util/DerValue;->getUnalignedBitString()Lsun/security/util/BitArray; +HSPLsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream; +HSPLsun/security/util/DerValue;->isConstructed()Z +HSPLsun/security/util/DerValue;->isContextSpecific()Z +HSPLsun/security/util/DerValue;->isContextSpecific(B)Z +HSPLsun/security/util/DerValue;->isPrintableStringChar(C)Z +HSPLsun/security/util/DerValue;->length()I +HSPLsun/security/util/DerValue;->resetTag(B)V +HSPLsun/security/util/DerValue;->toByteArray()[B +HSPLsun/security/util/DerValue;->toDerInputStream()Lsun/security/util/DerInputStream; +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->(Ljava/lang/String;I)V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint;->()V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint;->(Lsun/security/util/DisabledAlgorithmConstraints$Constraint;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->([Ljava/lang/String;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set; +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->-getsun-security-util-DisabledAlgorithmConstraints$Constraint$OperatorSwitchesValues()[I +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->-get0()Lsun/security/util/Debug; +HSPLsun/security/util/DisabledAlgorithmConstraints;->(Ljava/lang/String;)V +HSPLsun/security/util/DisabledAlgorithmConstraints;->(Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)V +HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints;->checkProperty(Ljava/lang/String;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/security/Key;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/KeyUtil;->getKeySize(Ljava/security/Key;)I +HSPLsun/security/util/ManifestDigester$Entry;->(III[B)V +HSPLsun/security/util/ManifestDigester$Position;->()V +HSPLsun/security/util/ManifestDigester;->([B)V +HSPLsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z +HSPLsun/security/util/ManifestDigester;->isNameAttr([BI)Z +HSPLsun/security/util/ManifestDigester;->manifestDigest(Ljava/security/MessageDigest;)[B +HSPLsun/security/util/ManifestEntryVerifier$SunProviderHolder;->-get0()Ljava/security/Provider; +HSPLsun/security/util/ManifestEntryVerifier;->(Ljava/util/jar/Manifest;)V +HSPLsun/security/util/ManifestEntryVerifier;->getEntry()Ljava/util/jar/JarEntry; +HSPLsun/security/util/ManifestEntryVerifier;->setEntry(Ljava/lang/String;Ljava/util/jar/JarEntry;)V +HSPLsun/security/util/ManifestEntryVerifier;->update([BII)V +HSPLsun/security/util/ManifestEntryVerifier;->verify(Ljava/util/Hashtable;Ljava/util/Hashtable;)[Ljava/security/CodeSigner; +HSPLsun/security/util/MemoryCache$CacheEntry;->getKey()Ljava/lang/Object; +HSPLsun/security/util/MemoryCache$CacheEntry;->getValue()Ljava/lang/Object; +HSPLsun/security/util/MemoryCache$CacheEntry;->invalidate()V +HSPLsun/security/util/MemoryCache$CacheEntry;->isValid(J)Z +HSPLsun/security/util/MemoryCache$SoftCacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)V +HSPLsun/security/util/MemoryCache$SoftCacheEntry;->getValue()Ljava/lang/Object; +HSPLsun/security/util/MemoryCache$SoftCacheEntry;->isValid(J)Z +HSPLsun/security/util/MemoryCache;->(ZI)V +HSPLsun/security/util/MemoryCache;->(ZII)V +HSPLsun/security/util/MemoryCache;->emptyQueue()V +HSPLsun/security/util/MemoryCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/security/util/MemoryCache;->newEntry(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)Lsun/security/util/MemoryCache$CacheEntry; +HSPLsun/security/util/MemoryCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLsun/security/util/ObjectIdentifier;->(Ljava/lang/String;)V +HSPLsun/security/util/ObjectIdentifier;->(Lsun/security/util/DerInputBuffer;)V +HSPLsun/security/util/ObjectIdentifier;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/util/ObjectIdentifier;->([I)V +HSPLsun/security/util/ObjectIdentifier;->check([B)V +HSPLsun/security/util/ObjectIdentifier;->checkCount(I)V +HSPLsun/security/util/ObjectIdentifier;->checkFirstComponent(I)V +HSPLsun/security/util/ObjectIdentifier;->checkOtherComponent(II)V +HSPLsun/security/util/ObjectIdentifier;->checkSecondComponent(II)V +HSPLsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/util/ObjectIdentifier;->equals(Ljava/lang/Object;)Z +HSPLsun/security/util/ObjectIdentifier;->hashCode()I +HSPLsun/security/util/ObjectIdentifier;->init([II)V +HSPLsun/security/util/ObjectIdentifier;->newInternal([I)Lsun/security/util/ObjectIdentifier; +HSPLsun/security/util/ObjectIdentifier;->pack([BIIII)[B +HSPLsun/security/util/ObjectIdentifier;->pack7Oid(I[BI)I +HSPLsun/security/util/ObjectIdentifier;->pack7Oid([BII[BI)I +HSPLsun/security/util/ObjectIdentifier;->toString()Ljava/lang/String; +HSPLsun/security/util/SignatureFileVerifier;->(Ljava/util/ArrayList;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V +HSPLsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest; +HSPLsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner; +HSPLsun/security/util/SignatureFileVerifier;->isBlockOrSF(Ljava/lang/String;)Z +HSPLsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z +HSPLsun/security/util/SignatureFileVerifier;->needSignatureFileBytes()Z +HSPLsun/security/util/SignatureFileVerifier;->process(Ljava/util/Hashtable;Ljava/util/List;)V +HSPLsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V +HSPLsun/security/util/SignatureFileVerifier;->setSignatureFile([B)V +HSPLsun/security/util/SignatureFileVerifier;->updateSigners([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V +HSPLsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z +HSPLsun/security/x509/AVA;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/AVA;->derEncode(Ljava/io/OutputStream;)V +HSPLsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z +HSPLsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String; +HSPLsun/security/x509/AVA;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/AVAKeyword;->(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;ZZ)V +HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/AVAKeyword;->isCompliant(I)Z +HSPLsun/security/x509/AccessDescription;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/AlgorithmId;->(Lsun/security/util/ObjectIdentifier;)V +HSPLsun/security/x509/AlgorithmId;->(Lsun/security/util/ObjectIdentifier;Lsun/security/util/DerValue;)V +HSPLsun/security/x509/AlgorithmId;->algOID(Ljava/lang/String;)Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/AlgorithmId;->decodeParams()V +HSPLsun/security/x509/AlgorithmId;->derEncode(Ljava/io/OutputStream;)V +HSPLsun/security/x509/AlgorithmId;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/x509/AlgorithmId;->equals(Lsun/security/x509/AlgorithmId;)Z +HSPLsun/security/x509/AlgorithmId;->get(Ljava/lang/String;)Lsun/security/x509/AlgorithmId; +HSPLsun/security/x509/AlgorithmId;->getEncAlgFromSigAlg(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/security/x509/AlgorithmId;->getName()Ljava/lang/String; +HSPLsun/security/x509/AlgorithmId;->getParameters()Ljava/security/AlgorithmParameters; +HSPLsun/security/x509/AlgorithmId;->makeSigAlg(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLsun/security/x509/AlgorithmId;->oid([I)Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/AlgorithmId;->parse(Lsun/security/util/DerValue;)Lsun/security/x509/AlgorithmId; +HSPLsun/security/x509/AuthorityInfoAccessExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/AuthorityInfoAccessExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/AuthorityKeyIdentifierExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/AuthorityKeyIdentifierExtension;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/security/x509/AuthorityKeyIdentifierExtension;->getEncodedKeyIdentifier()[B +HSPLsun/security/x509/AuthorityKeyIdentifierExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/BasicConstraintsExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/BasicConstraintsExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/CRLDistributionPointsExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/CRLDistributionPointsExtension;->(Lsun/security/util/ObjectIdentifier;Ljava/lang/Boolean;Ljava/lang/Object;Ljava/lang/String;)V +HSPLsun/security/x509/CRLDistributionPointsExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/CertificateAlgorithmId;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/CertificateAlgorithmId;->get(Ljava/lang/String;)Lsun/security/x509/AlgorithmId; +HSPLsun/security/x509/CertificateExtensions;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/CertificateExtensions;->getAllExtensions()Ljava/util/Collection; +HSPLsun/security/x509/CertificateExtensions;->getExtension(Ljava/lang/String;)Lsun/security/x509/Extension; +HSPLsun/security/x509/CertificateExtensions;->init(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/CertificateExtensions;->parseExtension(Lsun/security/x509/Extension;)V +HSPLsun/security/x509/CertificatePoliciesExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/CertificatePoliciesExtension;->get(Ljava/lang/String;)Ljava/util/List; +HSPLsun/security/x509/CertificatePoliciesExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/CertificatePolicyId;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/CertificatePolicyId;->getIdentifier()Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/CertificateSerialNumber;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/CertificateValidity;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/CertificateValidity;->construct(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/CertificateVersion;->()V +HSPLsun/security/x509/CertificateVersion;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/CertificateVersion;->compare(I)I +HSPLsun/security/x509/CertificateVersion;->construct(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/CertificateX509Key;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/DNSName;->(Ljava/lang/String;)V +HSPLsun/security/x509/DNSName;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/DistributionPoint;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/ExtendedKeyUsageExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/ExtendedKeyUsageExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/Extension;->()V +HSPLsun/security/x509/Extension;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/Extension;->getExtensionId()Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/Extension;->getExtensionValue()[B +HSPLsun/security/x509/Extension;->isCritical()Z +HSPLsun/security/x509/GeneralName;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/GeneralName;->(Lsun/security/util/DerValue;Z)V +HSPLsun/security/x509/GeneralNameInterface;->constrains(Lsun/security/x509/GeneralNameInterface;)I +HSPLsun/security/x509/GeneralNameInterface;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/x509/GeneralNameInterface;->getType()I +HSPLsun/security/x509/GeneralNameInterface;->subtreeDepth()I +HSPLsun/security/x509/GeneralNames;->()V +HSPLsun/security/x509/GeneralNames;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/GeneralNames;->add(Lsun/security/x509/GeneralName;)Lsun/security/x509/GeneralNames; +HSPLsun/security/x509/KeyIdentifier;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/KeyIdentifier;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/x509/KeyUsageExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/KeyUsageExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/OIDMap$OIDInfo;->(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;Ljava/lang/Class;)V +HSPLsun/security/x509/OIDMap$OIDInfo;->getClazz()Ljava/lang/Class; +HSPLsun/security/x509/OIDMap;->addInternal(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;Ljava/lang/Class;)V +HSPLsun/security/x509/OIDMap;->getClass(Lsun/security/util/ObjectIdentifier;)Ljava/lang/Class; +HSPLsun/security/x509/PolicyInformation;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/PolicyInformation;->getPolicyIdentifier()Lsun/security/x509/CertificatePolicyId; +HSPLsun/security/x509/PolicyInformation;->getPolicyQualifiers()Ljava/util/Set; +HSPLsun/security/x509/RDN;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V +HSPLsun/security/x509/RDN;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/RDN;->toRFC2253String(Z)Ljava/lang/String; +HSPLsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/SerialNumber;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/SerialNumber;->construct(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/SubjectAlternativeNameExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/SubjectAlternativeNameExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/SubjectKeyIdentifierExtension;->(Ljava/lang/Boolean;Ljava/lang/Object;)V +HSPLsun/security/x509/SubjectKeyIdentifierExtension;->getName()Ljava/lang/String; +HSPLsun/security/x509/URIName;->(Ljava/lang/String;)V +HSPLsun/security/x509/URIName;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/X500Name$1;->()V +HSPLsun/security/x509/X500Name$1;->run()Ljava/lang/Object; +HSPLsun/security/x509/X500Name$1;->run()[Ljava/lang/Object; +HSPLsun/security/x509/X500Name;->(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/X500Name;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/X500Name;->([B)V +HSPLsun/security/x509/X500Name;->asX500Name(Ljavax/security/auth/x500/X500Principal;)Lsun/security/x509/X500Name; +HSPLsun/security/x509/X500Name;->asX500Principal()Ljavax/security/auth/x500/X500Principal; +HSPLsun/security/x509/X500Name;->equals(Ljava/lang/Object;)Z +HSPLsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getEncoded()[B +HSPLsun/security/x509/X500Name;->getEncodedInternal()[B +HSPLsun/security/x509/X500Name;->getRFC2253CanonicalName()Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getRFC2253Name()Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getRFC2253Name(Ljava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/X500Name;->hashCode()I +HSPLsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/X500Name;->isEmpty()Z +HSPLsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/X509AttributeName;->(Ljava/lang/String;)V +HSPLsun/security/x509/X509AttributeName;->getPrefix()Ljava/lang/String; +HSPLsun/security/x509/X509AttributeName;->getSuffix()Ljava/lang/String; +HSPLsun/security/x509/X509CertImpl;->([B)V +HSPLsun/security/x509/X509CertImpl;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/security/x509/X509CertImpl;->getAuthorityKeyIdentifierExtension()Lsun/security/x509/AuthorityKeyIdentifierExtension; +HSPLsun/security/x509/X509CertImpl;->getCertificatePoliciesExtension()Lsun/security/x509/CertificatePoliciesExtension; +HSPLsun/security/x509/X509CertImpl;->getEncodedInternal()[B +HSPLsun/security/x509/X509CertImpl;->getEncodedInternal(Ljava/security/cert/Certificate;)[B +HSPLsun/security/x509/X509CertImpl;->getExtension(Lsun/security/util/ObjectIdentifier;)Lsun/security/x509/Extension; +HSPLsun/security/x509/X509CertImpl;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; +HSPLsun/security/x509/X509CertImpl;->getNameConstraintsExtension()Lsun/security/x509/NameConstraintsExtension; +HSPLsun/security/x509/X509CertImpl;->getPolicyConstraintsExtension()Lsun/security/x509/PolicyConstraintsExtension; +HSPLsun/security/x509/X509CertImpl;->getPolicyMappingsExtension()Lsun/security/x509/PolicyMappingsExtension; +HSPLsun/security/x509/X509CertImpl;->getSigAlgName()Ljava/lang/String; +HSPLsun/security/x509/X509CertImpl;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal; +HSPLsun/security/x509/X509CertImpl;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z +HSPLsun/security/x509/X509CertImpl;->parse(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/X509CertImpl;->parse(Lsun/security/util/DerValue;[B)V +HSPLsun/security/x509/X509CertImpl;->toImpl(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl; +HSPLsun/security/x509/X509CertInfo;->(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/X509CertInfo;->([B)V +HSPLsun/security/x509/X509CertInfo;->attributeMap(Ljava/lang/String;)I +HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/security/x509/X509CertInfo;->getX500Name(Ljava/lang/String;Z)Ljava/lang/Object; +HSPLsun/security/x509/X509CertInfo;->parse(Lsun/security/util/DerValue;)V +HSPLsun/security/x509/X509CertInfo;->verifyCert(Lsun/security/x509/X500Name;Lsun/security/x509/CertificateExtensions;)V +HSPLsun/security/x509/X509Key;->buildX509Key(Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)Ljava/security/PublicKey; +HSPLsun/security/x509/X509Key;->encode(Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V +HSPLsun/security/x509/X509Key;->parse(Lsun/security/util/DerValue;)Ljava/security/PublicKey; +HSPLsun/util/calendar/AbstractCalendar;->()V +HSPLsun/util/calendar/AbstractCalendar;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/AbstractCalendar;->getDayOfWeekDateOnOrBefore(JI)J +HSPLsun/util/calendar/AbstractCalendar;->getFixedDate(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/AbstractCalendar;->getTime(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDay(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDayValue(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/AbstractCalendar;->isLeapYear(Lsun/util/calendar/CalendarDate;)Z +HSPLsun/util/calendar/AbstractCalendar;->setTimeOfDay(Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/BaseCalendar$Date;->(Ljava/util/TimeZone;)V +HSPLsun/util/calendar/BaseCalendar$Date;->getCachedJan1()J +HSPLsun/util/calendar/BaseCalendar$Date;->getCachedYear()I +HSPLsun/util/calendar/BaseCalendar$Date;->getNormalizedYear()I +HSPLsun/util/calendar/BaseCalendar$Date;->hit(I)Z +HSPLsun/util/calendar/BaseCalendar$Date;->hit(J)Z +HSPLsun/util/calendar/BaseCalendar$Date;->setCache(IJI)V +HSPLsun/util/calendar/BaseCalendar$Date;->setNormalizedYear(I)V +HSPLsun/util/calendar/BaseCalendar;->()V +HSPLsun/util/calendar/BaseCalendar;->getCalendarDateFromFixedDate(Lsun/util/calendar/CalendarDate;J)V +HSPLsun/util/calendar/BaseCalendar;->getDayOfWeekFromFixedDate(J)I +HSPLsun/util/calendar/BaseCalendar;->getDayOfYear(III)J +HSPLsun/util/calendar/BaseCalendar;->getFixedDate(IIILsun/util/calendar/BaseCalendar$Date;)J +HSPLsun/util/calendar/BaseCalendar;->getFixedDate(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/BaseCalendar;->getGregorianYearFromFixedDate(J)I +HSPLsun/util/calendar/BaseCalendar;->isLeapYear(I)Z +HSPLsun/util/calendar/BaseCalendar;->isLeapYear(Lsun/util/calendar/CalendarDate;)Z +HSPLsun/util/calendar/BaseCalendar;->normalizeMonth(Lsun/util/calendar/CalendarDate;)V +HSPLsun/util/calendar/CalendarDate;->(Ljava/util/TimeZone;)V +HSPLsun/util/calendar/CalendarDate;->clone()Ljava/lang/Object; +HSPLsun/util/calendar/CalendarDate;->getDayOfMonth()I +HSPLsun/util/calendar/CalendarDate;->getDayOfWeek()I +HSPLsun/util/calendar/CalendarDate;->getHours()I +HSPLsun/util/calendar/CalendarDate;->getMillis()I +HSPLsun/util/calendar/CalendarDate;->getMinutes()I +HSPLsun/util/calendar/CalendarDate;->getMonth()I +HSPLsun/util/calendar/CalendarDate;->getSeconds()I +HSPLsun/util/calendar/CalendarDate;->getTimeOfDay()J +HSPLsun/util/calendar/CalendarDate;->getYear()I +HSPLsun/util/calendar/CalendarDate;->getZone()Ljava/util/TimeZone; +HSPLsun/util/calendar/CalendarDate;->isLeapYear()Z +HSPLsun/util/calendar/CalendarDate;->isNormalized()Z +HSPLsun/util/calendar/CalendarDate;->setDate(III)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setDayOfMonth(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setDayOfWeek(I)V +HSPLsun/util/calendar/CalendarDate;->setDaylightSaving(I)V +HSPLsun/util/calendar/CalendarDate;->setHours(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setLeapYear(Z)V +HSPLsun/util/calendar/CalendarDate;->setMillis(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setMinutes(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setMonth(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setNormalized(Z)V +HSPLsun/util/calendar/CalendarDate;->setSeconds(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setTimeOfDay(IIII)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setTimeOfDay(J)V +HSPLsun/util/calendar/CalendarDate;->setYear(I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setZone(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarDate;->setZoneOffset(I)V +HSPLsun/util/calendar/CalendarSystem;->()V +HSPLsun/util/calendar/CalendarSystem;->getEra(Ljava/lang/String;)Lsun/util/calendar/Era; +HSPLsun/util/calendar/CalendarSystem;->getEras()[Lsun/util/calendar/Era; +HSPLsun/util/calendar/CalendarSystem;->getGregorianCalendar()Lsun/util/calendar/Gregorian; +HSPLsun/util/calendar/CalendarSystem;->getMonthLength(Lsun/util/calendar/CalendarDate;)I +HSPLsun/util/calendar/CalendarSystem;->getNthDayOfWeek(IILsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarSystem;->getTime(Lsun/util/calendar/CalendarDate;)J +HSPLsun/util/calendar/CalendarSystem;->getWeekLength()I +HSPLsun/util/calendar/CalendarSystem;->getYearLength(Lsun/util/calendar/CalendarDate;)I +HSPLsun/util/calendar/CalendarSystem;->getYearLengthInMonths(Lsun/util/calendar/CalendarDate;)I +HSPLsun/util/calendar/CalendarSystem;->setEra(Lsun/util/calendar/CalendarDate;Ljava/lang/String;)V +HSPLsun/util/calendar/CalendarSystem;->setTimeOfDay(Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/CalendarUtils;->isGregorianLeapYear(I)Z +HSPLsun/util/calendar/Gregorian$Date;->(Ljava/util/TimeZone;)V +HSPLsun/util/calendar/Gregorian$Date;->getNormalizedYear()I +HSPLsun/util/calendar/Gregorian$Date;->setNormalizedYear(I)V +HSPLsun/util/calendar/Gregorian;->()V +HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date; +HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/Gregorian$Date; +HSPLsun/util/calendar/Gregorian;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate; +HSPLsun/util/calendar/Gregorian;->newCalendarDate(Ljava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date; +HSPLsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale; +HSPLsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key; +HSPLsun/util/locale/BaseLocale$Key;->-get0(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference; +HSPLsun/util/locale/BaseLocale$Key;->-get1(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference; +HSPLsun/util/locale/BaseLocale$Key;->-get2(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference; +HSPLsun/util/locale/BaseLocale$Key;->-get3(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference; +HSPLsun/util/locale/BaseLocale$Key;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/util/locale/BaseLocale$Key;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLsun/util/locale/BaseLocale$Key;->equals(Ljava/lang/Object;)Z +HSPLsun/util/locale/BaseLocale$Key;->hashCode()I +HSPLsun/util/locale/BaseLocale$Key;->normalize(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key; +HSPLsun/util/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/util/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale;)V +HSPLsun/util/locale/BaseLocale;->equals(Ljava/lang/Object;)Z +HSPLsun/util/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale; +HSPLsun/util/locale/BaseLocale;->getLanguage()Ljava/lang/String; +HSPLsun/util/locale/BaseLocale;->getRegion()Ljava/lang/String; +HSPLsun/util/locale/BaseLocale;->getScript()Ljava/lang/String; +HSPLsun/util/locale/BaseLocale;->getVariant()Ljava/lang/String; +HSPLsun/util/locale/BaseLocale;->hashCode()I +HSPLsun/util/locale/InternalLocaleBuilder;->()V +HSPLsun/util/locale/InternalLocaleBuilder;->clear()Lsun/util/locale/InternalLocaleBuilder; +HSPLsun/util/locale/InternalLocaleBuilder;->clearExtensions()Lsun/util/locale/InternalLocaleBuilder; +HSPLsun/util/locale/InternalLocaleBuilder;->getBaseLocale()Lsun/util/locale/BaseLocale; +HSPLsun/util/locale/InternalLocaleBuilder;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions; +HSPLsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder; +HSPLsun/util/locale/InternalLocaleBuilder;->setLanguageTag(Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder; +HSPLsun/util/locale/LanguageTag;->()V +HSPLsun/util/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->canonicalizeRegion(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->getExtensions()Ljava/util/List; +HSPLsun/util/locale/LanguageTag;->getExtlangs()Ljava/util/List; +HSPLsun/util/locale/LanguageTag;->getLanguage()Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->getPrivateuse()Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->getRegion()Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->getScript()Ljava/lang/String; +HSPLsun/util/locale/LanguageTag;->getVariants()Ljava/util/List; +HSPLsun/util/locale/LanguageTag;->isExtlang(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->isScript(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->parse(Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag; +HSPLsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseLocale(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Lsun/util/locale/LanguageTag; +HSPLsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LocaleObjectCache$CacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V +HSPLsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V +HSPLsun/util/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/util/locale/LocaleObjectCache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/util/locale/LocaleUtils;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z +HSPLsun/util/locale/LocaleUtils;->isAlpha(C)Z +HSPLsun/util/locale/LocaleUtils;->isAlphaString(Ljava/lang/String;)Z +HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/List;)Z +HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Map;)Z +HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Set;)Z +HSPLsun/util/locale/LocaleUtils;->isLower(C)Z +HSPLsun/util/locale/LocaleUtils;->isNumeric(C)Z +HSPLsun/util/locale/LocaleUtils;->isNumericString(Ljava/lang/String;)Z +HSPLsun/util/locale/LocaleUtils;->isUpper(C)Z +HSPLsun/util/locale/LocaleUtils;->toLower(C)C +HSPLsun/util/locale/LocaleUtils;->toLowerString(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/locale/LocaleUtils;->toTitleString(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/locale/LocaleUtils;->toUpper(C)C +HSPLsun/util/locale/LocaleUtils;->toUpperString(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/locale/ParseStatus;->()V +HSPLsun/util/locale/ParseStatus;->isError()Z +HSPLsun/util/locale/ParseStatus;->reset()V +HSPLsun/util/locale/StringTokenIterator;->(Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/util/locale/StringTokenIterator;->current()Ljava/lang/String; +HSPLsun/util/locale/StringTokenIterator;->currentEnd()I +HSPLsun/util/locale/StringTokenIterator;->hasNext()Z +HSPLsun/util/locale/StringTokenIterator;->isDone()Z +HSPLsun/util/locale/StringTokenIterator;->next()Ljava/lang/String; +HSPLsun/util/locale/StringTokenIterator;->nextDelimiter(I)I +HSPLsun/util/locale/StringTokenIterator;->setStart(I)Lsun/util/locale/StringTokenIterator; +HSPLsun/util/logging/LoggingProxy;->getLevel(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/util/logging/LoggingProxy;->getLevelName(Ljava/lang/Object;)Ljava/lang/String; +HSPLsun/util/logging/LoggingProxy;->getLevelValue(Ljava/lang/Object;)I +HSPLsun/util/logging/LoggingProxy;->getLogger(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/util/logging/LoggingProxy;->getLoggerLevel(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/logging/LoggingProxy;->getLoggerNames()Ljava/util/List; +HSPLsun/util/logging/LoggingProxy;->getParentLoggerName(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/logging/LoggingProxy;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLsun/util/logging/LoggingProxy;->isLoggable(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLsun/util/logging/LoggingProxy;->log(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)V +HSPLsun/util/logging/LoggingProxy;->log(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLsun/util/logging/LoggingProxy;->log(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLsun/util/logging/LoggingProxy;->parseLevel(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/util/logging/LoggingProxy;->setLevel(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLsun/util/logging/LoggingProxy;->setLoggerLevel(Ljava/lang/String;Ljava/lang/String;)V +HSPLsun/util/logging/LoggingSupport$1;->()V +HSPLsun/util/logging/LoggingSupport$1;->run()Ljava/lang/Object; +HSPLsun/util/logging/LoggingSupport$1;->run()Lsun/util/logging/LoggingProxy; +HSPLsun/util/logging/LoggingSupport$2;->()V +HSPLsun/util/logging/LoggingSupport$2;->run()Ljava/lang/Object; +HSPLsun/util/logging/LoggingSupport$2;->run()Ljava/lang/String; +HSPLsun/util/logging/LoggingSupport;->getSimpleFormat()Ljava/lang/String; +HSPLsun/util/logging/LoggingSupport;->getSimpleFormat(Z)Ljava/lang/String; +HSPLsun/util/logging/LoggingSupport;->isAvailable()Z +HSPLsun/util/logging/PlatformLogger$1;->()V +HSPLsun/util/logging/PlatformLogger$1;->run()Ljava/lang/Boolean; +HSPLsun/util/logging/PlatformLogger$1;->run()Ljava/lang/Object; +HSPLsun/util/logging/PlatformLogger$Level;->(Ljava/lang/String;I)V +HSPLsun/util/logging/PlatformLogger;->redirectPlatformLoggers()V +Landroid/R$styleable; +Landroid/accessibilityservice/AccessibilityServiceInfo$1; +Landroid/accounts/Account$1; +Landroid/accounts/Account; +Landroid/accounts/AccountManager$11; +Landroid/accounts/AccountManager$1; +Landroid/accounts/AccountManager$AmsTask$1; +Landroid/accounts/AccountManager$AmsTask$Response; +Landroid/accounts/AccountManager$AmsTask; +Landroid/accounts/AccountManager$BaseFutureTask$1; +Landroid/accounts/AccountManager$BaseFutureTask$Response; +Landroid/accounts/AccountManager$BaseFutureTask; +Landroid/accounts/AccountManager$Future2Task; +Landroid/accounts/AccountManager; +Landroid/accounts/AccountManagerFuture; +Landroid/accounts/AccountsException; +Landroid/accounts/AuthenticatorException; +Landroid/accounts/IAccountManager$Stub$Proxy; +Landroid/accounts/IAccountManager$Stub; +Landroid/accounts/IAccountManager; +Landroid/accounts/IAccountManagerResponse$Stub; +Landroid/accounts/IAccountManagerResponse; +Landroid/accounts/OnAccountsUpdateListener; +Landroid/accounts/OperationCanceledException; +Landroid/animation/AnimationHandler$1; +Landroid/animation/AnimationHandler$AnimationFrameCallback; +Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; +Landroid/animation/AnimationHandler$MyFrameCallbackProvider; +Landroid/animation/AnimationHandler; +Landroid/animation/Animator$AnimatorConstantState; +Landroid/animation/Animator$AnimatorListener; +Landroid/animation/Animator$AnimatorPauseListener; +Landroid/animation/Animator; +Landroid/animation/AnimatorInflater$PathDataEvaluator; +Landroid/animation/AnimatorInflater; +Landroid/animation/AnimatorListenerAdapter; +Landroid/animation/AnimatorSet$1; +Landroid/animation/AnimatorSet$2; +Landroid/animation/AnimatorSet$3; +Landroid/animation/AnimatorSet$AnimationEvent; +Landroid/animation/AnimatorSet$Builder; +Landroid/animation/AnimatorSet$Node; +Landroid/animation/AnimatorSet$SeekState; +Landroid/animation/AnimatorSet; +Landroid/animation/FloatEvaluator; +Landroid/animation/FloatKeyframeSet; +Landroid/animation/IntEvaluator; +Landroid/animation/IntKeyframeSet; +Landroid/animation/Keyframe$FloatKeyframe; +Landroid/animation/Keyframe$IntKeyframe; +Landroid/animation/Keyframe$ObjectKeyframe; +Landroid/animation/Keyframe; +Landroid/animation/KeyframeSet; +Landroid/animation/Keyframes$FloatKeyframes; +Landroid/animation/Keyframes$IntKeyframes; +Landroid/animation/Keyframes; +Landroid/animation/LayoutTransition$TransitionListener; +Landroid/animation/ObjectAnimator; +Landroid/animation/PathKeyframes$1; +Landroid/animation/PathKeyframes$2; +Landroid/animation/PathKeyframes$FloatKeyframesBase; +Landroid/animation/PathKeyframes$IntKeyframesBase; +Landroid/animation/PathKeyframes$SimpleKeyframes; +Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; +Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder; +Landroid/animation/PropertyValuesHolder$PropertyValues; +Landroid/animation/PropertyValuesHolder; +Landroid/animation/RectEvaluator; +Landroid/animation/StateListAnimator$1; +Landroid/animation/StateListAnimator$StateListAnimatorConstantState; +Landroid/animation/StateListAnimator$Tuple; +Landroid/animation/StateListAnimator; +Landroid/animation/TimeAnimator$TimeListener; +Landroid/animation/TimeAnimator; +Landroid/animation/TimeInterpolator; +Landroid/animation/TypeEvaluator; +Landroid/animation/ValueAnimator$AnimatorUpdateListener; +Landroid/animation/ValueAnimator; +Landroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU$1; +Landroid/app/-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU; +Landroid/app/-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ; +Landroid/app/-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI; +Landroid/app/-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo; +Landroid/app/ActionBar$LayoutParams; +Landroid/app/ActionBar; +Landroid/app/Activity$HostCallbacks; +Landroid/app/Activity; +Landroid/app/ActivityManager$1; +Landroid/app/ActivityManager$AppTask; +Landroid/app/ActivityManager$MemoryInfo$1; +Landroid/app/ActivityManager$RecentTaskInfo$1; +Landroid/app/ActivityManager$RunningAppProcessInfo$1; +Landroid/app/ActivityManager$RunningAppProcessInfo; +Landroid/app/ActivityManager$RunningTaskInfo$1; +Landroid/app/ActivityManager$StackId; +Landroid/app/ActivityManager$TaskDescription$1; +Landroid/app/ActivityManager$TaskDescription; +Landroid/app/ActivityManager; +Landroid/app/ActivityOptions; +Landroid/app/ActivityThread$1; +Landroid/app/ActivityThread$2; +Landroid/app/ActivityThread$ActivityClientRecord; +Landroid/app/ActivityThread$ActivityConfigChangeData; +Landroid/app/ActivityThread$AppBindData; +Landroid/app/ActivityThread$ApplicationThread; +Landroid/app/ActivityThread$BindServiceData; +Landroid/app/ActivityThread$ContextCleanupInfo; +Landroid/app/ActivityThread$CreateServiceData; +Landroid/app/ActivityThread$DropBoxReporter; +Landroid/app/ActivityThread$EventLoggingReporter; +Landroid/app/ActivityThread$GcIdler; +Landroid/app/ActivityThread$H; +Landroid/app/ActivityThread$Idler; +Landroid/app/ActivityThread$NewIntentData; +Landroid/app/ActivityThread$Profiler; +Landroid/app/ActivityThread$ProviderClientRecord; +Landroid/app/ActivityThread$ProviderKey; +Landroid/app/ActivityThread$ProviderRefCount; +Landroid/app/ActivityThread$ReceiverData; +Landroid/app/ActivityThread$RequestAssistContextExtras; +Landroid/app/ActivityThread$ServiceArgsData; +Landroid/app/ActivityThread$StopInfo; +Landroid/app/ActivityThread; +Landroid/app/ActivityTransitionState; +Landroid/app/AlarmManager$ListenerWrapper; +Landroid/app/AlarmManager; +Landroid/app/AlertDialog$Builder; +Landroid/app/AlertDialog; +Landroid/app/AppGlobals; +Landroid/app/AppOpsManager$OnOpChangedListener; +Landroid/app/AppOpsManager; +Landroid/app/Application$ActivityLifecycleCallbacks; +Landroid/app/Application; +Landroid/app/ApplicationErrorReport$CrashInfo; +Landroid/app/ApplicationLoaders; +Landroid/app/ApplicationPackageManager$ResourceName; +Landroid/app/ApplicationPackageManager; +Landroid/app/BackStackRecord$Op; +Landroid/app/BackStackRecord; +Landroid/app/ContentProviderHolder$1; +Landroid/app/ContentProviderHolder; +Landroid/app/ContextImpl$1; +Landroid/app/ContextImpl$ApplicationContentResolver; +Landroid/app/ContextImpl; +Landroid/app/DexLoadReporter; +Landroid/app/Dialog$ListenersHandler; +Landroid/app/Dialog; +Landroid/app/DialogFragment; +Landroid/app/DownloadManager; +Landroid/app/Fragment$1; +Landroid/app/Fragment$AnimationInfo; +Landroid/app/Fragment; +Landroid/app/FragmentContainer; +Landroid/app/FragmentController; +Landroid/app/FragmentHostCallback; +Landroid/app/FragmentManager$BackStackEntry; +Landroid/app/FragmentManager; +Landroid/app/FragmentManagerImpl$1; +Landroid/app/FragmentManagerImpl$OpGenerator; +Landroid/app/FragmentManagerImpl; +Landroid/app/FragmentManagerState$1; +Landroid/app/FragmentState$1; +Landroid/app/FragmentTransaction; +Landroid/app/FragmentTransition$FragmentContainerTransition; +Landroid/app/IActivityManager$Stub$Proxy; +Landroid/app/IActivityManager$Stub; +Landroid/app/IActivityManager; +Landroid/app/IAlarmListener$Stub; +Landroid/app/IAlarmListener; +Landroid/app/IAlarmManager$Stub$Proxy; +Landroid/app/IAlarmManager$Stub; +Landroid/app/IAlarmManager; +Landroid/app/IAppTask$Stub$Proxy; +Landroid/app/IAppTask$Stub; +Landroid/app/IAppTask; +Landroid/app/IApplicationThread$Stub; +Landroid/app/IApplicationThread; +Landroid/app/IInstrumentationWatcher$Stub; +Landroid/app/IInstrumentationWatcher; +Landroid/app/INotificationManager$Stub$Proxy; +Landroid/app/INotificationManager$Stub; +Landroid/app/INotificationManager; +Landroid/app/IServiceConnection$Stub; +Landroid/app/IServiceConnection; +Landroid/app/IUiAutomationConnection$Stub; +Landroid/app/IUiAutomationConnection; +Landroid/app/IUiModeManager$Stub$Proxy; +Landroid/app/IUiModeManager$Stub; +Landroid/app/IUiModeManager; +Landroid/app/IUserSwitchObserver$Stub; +Landroid/app/IUserSwitchObserver; +Landroid/app/IWallpaperManager$Stub$Proxy; +Landroid/app/IWallpaperManager$Stub; +Landroid/app/IWallpaperManager; +Landroid/app/IWallpaperManagerCallback$Stub; +Landroid/app/IWallpaperManagerCallback; +Landroid/app/Instrumentation; +Landroid/app/IntentReceiverLeaked; +Landroid/app/IntentService$ServiceHandler; +Landroid/app/IntentService; +Landroid/app/JobSchedulerImpl; +Landroid/app/KeyguardManager; +Landroid/app/LoadedApk$ReceiverDispatcher$Args; +Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver; +Landroid/app/LoadedApk$ReceiverDispatcher; +Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo; +Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor; +Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection; +Landroid/app/LoadedApk$ServiceDispatcher$RunConnection; +Landroid/app/LoadedApk$ServiceDispatcher; +Landroid/app/LoadedApk$WarningContextClassLoader; +Landroid/app/LoadedApk; +Landroid/app/LoaderManager$LoaderCallbacks; +Landroid/app/LoaderManager; +Landroid/app/LoaderManagerImpl$LoaderInfo; +Landroid/app/LoaderManagerImpl; +Landroid/app/NativeActivity; +Landroid/app/Notification$1; +Landroid/app/Notification$Action$1; +Landroid/app/Notification$BuilderRemoteViews; +Landroid/app/Notification$StandardTemplateParams; +Landroid/app/Notification; +Landroid/app/NotificationChannel$1; +Landroid/app/NotificationChannel; +Landroid/app/NotificationChannelGroup$1; +Landroid/app/NotificationManager; +Landroid/app/OnActivityPausedListener; +Landroid/app/PendingIntent$1; +Landroid/app/PendingIntent$CanceledException; +Landroid/app/PendingIntent$OnMarshaledListener; +Landroid/app/PendingIntent; +Landroid/app/QueuedWork$QueuedWorkHandler; +Landroid/app/QueuedWork; +Landroid/app/ReceiverRestrictedContext; +Landroid/app/RemoteInput$1; +Landroid/app/ResourcesManager$1; +Landroid/app/ResourcesManager$ActivityResources; +Landroid/app/ResourcesManager; +Landroid/app/ResultInfo$1; +Landroid/app/ResultInfo; +Landroid/app/SearchManager; +Landroid/app/Service; +Landroid/app/ServiceConnectionLeaked; +Landroid/app/ServiceStartArgs$1; +Landroid/app/ServiceStartArgs; +Landroid/app/SharedElementCallback$1; +Landroid/app/SharedElementCallback; +Landroid/app/SharedPreferencesImpl$1; +Landroid/app/SharedPreferencesImpl$2; +Landroid/app/SharedPreferencesImpl$EditorImpl$1; +Landroid/app/SharedPreferencesImpl$EditorImpl$2; +Landroid/app/SharedPreferencesImpl$EditorImpl$3; +Landroid/app/SharedPreferencesImpl$EditorImpl; +Landroid/app/SharedPreferencesImpl$MemoryCommitResult; +Landroid/app/SharedPreferencesImpl; +Landroid/app/StatusBarManager; +Landroid/app/SystemServiceRegistry$10; +Landroid/app/SystemServiceRegistry$11; +Landroid/app/SystemServiceRegistry$12; +Landroid/app/SystemServiceRegistry$13; +Landroid/app/SystemServiceRegistry$14; +Landroid/app/SystemServiceRegistry$15; +Landroid/app/SystemServiceRegistry$16; +Landroid/app/SystemServiceRegistry$17; +Landroid/app/SystemServiceRegistry$18; +Landroid/app/SystemServiceRegistry$19; +Landroid/app/SystemServiceRegistry$1; +Landroid/app/SystemServiceRegistry$20; +Landroid/app/SystemServiceRegistry$21; +Landroid/app/SystemServiceRegistry$22; +Landroid/app/SystemServiceRegistry$23; +Landroid/app/SystemServiceRegistry$24; +Landroid/app/SystemServiceRegistry$25; +Landroid/app/SystemServiceRegistry$26; +Landroid/app/SystemServiceRegistry$27; +Landroid/app/SystemServiceRegistry$28; +Landroid/app/SystemServiceRegistry$29; +Landroid/app/SystemServiceRegistry$2; +Landroid/app/SystemServiceRegistry$30; +Landroid/app/SystemServiceRegistry$31; +Landroid/app/SystemServiceRegistry$32; +Landroid/app/SystemServiceRegistry$33; +Landroid/app/SystemServiceRegistry$34; +Landroid/app/SystemServiceRegistry$35; +Landroid/app/SystemServiceRegistry$36; +Landroid/app/SystemServiceRegistry$37; +Landroid/app/SystemServiceRegistry$38; +Landroid/app/SystemServiceRegistry$39; +Landroid/app/SystemServiceRegistry$3; +Landroid/app/SystemServiceRegistry$40; +Landroid/app/SystemServiceRegistry$41; +Landroid/app/SystemServiceRegistry$42; +Landroid/app/SystemServiceRegistry$43; +Landroid/app/SystemServiceRegistry$44; +Landroid/app/SystemServiceRegistry$45; +Landroid/app/SystemServiceRegistry$46; +Landroid/app/SystemServiceRegistry$47; +Landroid/app/SystemServiceRegistry$48; +Landroid/app/SystemServiceRegistry$49; +Landroid/app/SystemServiceRegistry$4; +Landroid/app/SystemServiceRegistry$50; +Landroid/app/SystemServiceRegistry$51; +Landroid/app/SystemServiceRegistry$52; +Landroid/app/SystemServiceRegistry$53; +Landroid/app/SystemServiceRegistry$54; +Landroid/app/SystemServiceRegistry$55; +Landroid/app/SystemServiceRegistry$56; +Landroid/app/SystemServiceRegistry$57; +Landroid/app/SystemServiceRegistry$58; +Landroid/app/SystemServiceRegistry$59; +Landroid/app/SystemServiceRegistry$5; +Landroid/app/SystemServiceRegistry$60; +Landroid/app/SystemServiceRegistry$61; +Landroid/app/SystemServiceRegistry$62; +Landroid/app/SystemServiceRegistry$63; +Landroid/app/SystemServiceRegistry$64; +Landroid/app/SystemServiceRegistry$65; +Landroid/app/SystemServiceRegistry$66; +Landroid/app/SystemServiceRegistry$67; +Landroid/app/SystemServiceRegistry$68; +Landroid/app/SystemServiceRegistry$69; +Landroid/app/SystemServiceRegistry$6; +Landroid/app/SystemServiceRegistry$70; +Landroid/app/SystemServiceRegistry$71; +Landroid/app/SystemServiceRegistry$72; +Landroid/app/SystemServiceRegistry$73; +Landroid/app/SystemServiceRegistry$74; +Landroid/app/SystemServiceRegistry$75; +Landroid/app/SystemServiceRegistry$76; +Landroid/app/SystemServiceRegistry$77; +Landroid/app/SystemServiceRegistry$78; +Landroid/app/SystemServiceRegistry$79; +Landroid/app/SystemServiceRegistry$7; +Landroid/app/SystemServiceRegistry$80; +Landroid/app/SystemServiceRegistry$81; +Landroid/app/SystemServiceRegistry$82; +Landroid/app/SystemServiceRegistry$83; +Landroid/app/SystemServiceRegistry$84; +Landroid/app/SystemServiceRegistry$85; +Landroid/app/SystemServiceRegistry$8; +Landroid/app/SystemServiceRegistry$9; +Landroid/app/SystemServiceRegistry$CachedServiceFetcher; +Landroid/app/SystemServiceRegistry$ServiceFetcher; +Landroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher; +Landroid/app/SystemServiceRegistry$StaticServiceFetcher; +Landroid/app/SystemServiceRegistry; +Landroid/app/UiModeManager; +Landroid/app/UserSwitchObserver; +Landroid/app/VrManager; +Landroid/app/WallpaperColors$1; +Landroid/app/WallpaperInfo$1; +Landroid/app/WallpaperManager$Globals; +Landroid/app/WallpaperManager; +Landroid/app/admin/DevicePolicyManager; +Landroid/app/admin/IDevicePolicyManager$Stub$Proxy; +Landroid/app/admin/IDevicePolicyManager$Stub; +Landroid/app/admin/IDevicePolicyManager; +Landroid/app/admin/SecurityLog$SecurityEvent$1; +Landroid/app/admin/SecurityLog$SecurityEvent; +Landroid/app/admin/SecurityLog; +Landroid/app/assist/AssistStructure$1; +Landroid/app/assist/AssistStructure$ParcelTransferWriter; +Landroid/app/assist/AssistStructure$SendChannel; +Landroid/app/assist/AssistStructure$ViewNode; +Landroid/app/assist/AssistStructure$ViewNodeBuilder; +Landroid/app/assist/AssistStructure$ViewNodeText; +Landroid/app/assist/AssistStructure$ViewStackEntry; +Landroid/app/assist/AssistStructure$WindowNode; +Landroid/app/backup/BackupAgent; +Landroid/app/backup/BackupAgentHelper; +Landroid/app/backup/BackupDataInput$EntityHeader; +Landroid/app/backup/BackupDataInput; +Landroid/app/backup/BackupDataOutput; +Landroid/app/backup/BackupHelperDispatcher$Header; +Landroid/app/backup/BackupHelperDispatcher; +Landroid/app/backup/BackupManager; +Landroid/app/backup/FileBackupHelperBase; +Landroid/app/backup/FullBackup; +Landroid/app/backup/FullBackupDataOutput; +Landroid/app/backup/IBackupManager$Stub$Proxy; +Landroid/app/backup/IBackupManager$Stub; +Landroid/app/backup/IBackupManager; +Landroid/app/job/IJobCallback$Stub$Proxy; +Landroid/app/job/IJobCallback$Stub; +Landroid/app/job/IJobCallback; +Landroid/app/job/IJobScheduler$Stub$Proxy; +Landroid/app/job/IJobScheduler$Stub; +Landroid/app/job/IJobScheduler; +Landroid/app/job/IJobService$Stub; +Landroid/app/job/IJobService; +Landroid/app/job/JobInfo$1; +Landroid/app/job/JobInfo$Builder; +Landroid/app/job/JobInfo$TriggerContentUri$1; +Landroid/app/job/JobInfo; +Landroid/app/job/JobParameters$1; +Landroid/app/job/JobParameters; +Landroid/app/job/JobScheduler; +Landroid/app/job/JobService$1; +Landroid/app/job/JobService; +Landroid/app/job/JobServiceEngine$JobHandler; +Landroid/app/job/JobServiceEngine$JobInterface; +Landroid/app/job/JobServiceEngine; +Landroid/app/timezone/RulesManager; +Landroid/app/trust/ITrustManager$Stub$Proxy; +Landroid/app/trust/ITrustManager$Stub; +Landroid/app/trust/ITrustManager; +Landroid/app/trust/TrustManager; +Landroid/app/usage/IStorageStatsManager$Stub; +Landroid/app/usage/IStorageStatsManager; +Landroid/app/usage/NetworkStatsManager; +Landroid/app/usage/StorageStatsManager; +Landroid/app/usage/UsageStatsManager; +Landroid/appwidget/AppWidgetManager; +Landroid/appwidget/AppWidgetProvider; +Landroid/bluetooth/BluetoothA2dp$1; +Landroid/bluetooth/BluetoothA2dp$2; +Landroid/bluetooth/BluetoothA2dp; +Landroid/bluetooth/BluetoothAdapter$1; +Landroid/bluetooth/BluetoothDevice$1; +Landroid/bluetooth/BluetoothDevice$2; +Landroid/bluetooth/BluetoothHeadset$1; +Landroid/bluetooth/BluetoothHeadset$2; +Landroid/bluetooth/BluetoothHeadset$3; +Landroid/bluetooth/BluetoothHeadset; +Landroid/bluetooth/BluetoothManager; +Landroid/bluetooth/BluetoothProfile$ServiceListener; +Landroid/bluetooth/BluetoothProfile; +Landroid/bluetooth/IBluetooth$Stub$Proxy; +Landroid/bluetooth/IBluetooth$Stub; +Landroid/bluetooth/IBluetooth; +Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy; +Landroid/bluetooth/IBluetoothA2dp$Stub; +Landroid/bluetooth/IBluetoothA2dp; +Landroid/bluetooth/IBluetoothGatt$Stub; +Landroid/bluetooth/IBluetoothGatt; +Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy; +Landroid/bluetooth/IBluetoothHeadset$Stub; +Landroid/bluetooth/IBluetoothHeadset; +Landroid/bluetooth/IBluetoothManager$Stub$Proxy; +Landroid/bluetooth/IBluetoothManager$Stub; +Landroid/bluetooth/IBluetoothManager; +Landroid/bluetooth/IBluetoothManagerCallback$Stub; +Landroid/bluetooth/IBluetoothManagerCallback; +Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub; +Landroid/bluetooth/IBluetoothProfileServiceConnection; +Landroid/bluetooth/IBluetoothStateChangeCallback$Stub; +Landroid/bluetooth/IBluetoothStateChangeCallback; +Landroid/companion/CompanionDeviceManager; +Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl; +Landroid/content/ActivityNotFoundException; +Landroid/content/AsyncQueryHandler$WorkerArgs; +Landroid/content/AsyncQueryHandler$WorkerHandler; +Landroid/content/AsyncTaskLoader$LoadTask; +Landroid/content/AsyncTaskLoader; +Landroid/content/BroadcastReceiver$PendingResult$1; +Landroid/content/BroadcastReceiver$PendingResult; +Landroid/content/BroadcastReceiver; +Landroid/content/ClipboardManager$1; +Landroid/content/ClipboardManager$2; +Landroid/content/ClipboardManager; +Landroid/content/ComponentCallbacks2; +Landroid/content/ComponentCallbacks; +Landroid/content/ComponentName$1; +Landroid/content/ComponentName; +Landroid/content/ContentProvider$PipeDataWriter; +Landroid/content/ContentProvider$Transport; +Landroid/content/ContentProvider; +Landroid/content/ContentProviderClient; +Landroid/content/ContentProviderNative; +Landroid/content/ContentProviderProxy; +Landroid/content/ContentResolver$1; +Landroid/content/ContentResolver$CursorWrapperInner; +Landroid/content/ContentResolver$ParcelFileDescriptorInner; +Landroid/content/ContentResolver; +Landroid/content/ContentUris; +Landroid/content/ContentValues$1; +Landroid/content/ContentValues; +Landroid/content/Context; +Landroid/content/ContextWrapper; +Landroid/content/CursorLoader; +Landroid/content/DialogInterface$OnCancelListener; +Landroid/content/DialogInterface$OnClickListener; +Landroid/content/DialogInterface$OnDismissListener; +Landroid/content/DialogInterface; +Landroid/content/IClipboard$Stub$Proxy; +Landroid/content/IClipboard$Stub; +Landroid/content/IClipboard; +Landroid/content/IContentProvider; +Landroid/content/IContentService$Stub$Proxy; +Landroid/content/IContentService$Stub; +Landroid/content/IContentService; +Landroid/content/IIntentReceiver$Stub; +Landroid/content/IIntentReceiver; +Landroid/content/IIntentSender$Stub$Proxy; +Landroid/content/IIntentSender$Stub; +Landroid/content/IIntentSender; +Landroid/content/IOnPrimaryClipChangedListener$Stub; +Landroid/content/IOnPrimaryClipChangedListener; +Landroid/content/IRestrictionsManager$Stub; +Landroid/content/IRestrictionsManager; +Landroid/content/ISyncAdapter$Stub; +Landroid/content/ISyncAdapter; +Landroid/content/ISyncContext$Stub; +Landroid/content/ISyncContext; +Landroid/content/ISyncStatusObserver$Stub; +Landroid/content/ISyncStatusObserver; +Landroid/content/Intent$1; +Landroid/content/Intent; +Landroid/content/IntentFilter$1; +Landroid/content/IntentFilter$MalformedMimeTypeException; +Landroid/content/IntentFilter; +Landroid/content/IntentSender$SendIntentException; +Landroid/content/IntentSender; +Landroid/content/Loader$ForceLoadContentObserver; +Landroid/content/Loader$OnLoadCanceledListener; +Landroid/content/Loader$OnLoadCompleteListener; +Landroid/content/Loader; +Landroid/content/OperationApplicationException; +Landroid/content/RestrictionsManager; +Landroid/content/ServiceConnection; +Landroid/content/SharedPreferences$Editor; +Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener; +Landroid/content/SharedPreferences; +Landroid/content/SyncRequest$1; +Landroid/content/SyncResult$1; +Landroid/content/SyncStats$1; +Landroid/content/SyncStatusObserver; +Landroid/content/UndoManager; +Landroid/content/UndoOwner; +Landroid/content/UriMatcher; +Landroid/content/pm/ActivityInfo$1; +Landroid/content/pm/ActivityInfo$WindowLayout; +Landroid/content/pm/ActivityInfo; +Landroid/content/pm/ApplicationInfo$1; +Landroid/content/pm/ApplicationInfo; +Landroid/content/pm/BaseParceledListSlice; +Landroid/content/pm/ComponentInfo; +Landroid/content/pm/ConfigurationInfo$1; +Landroid/content/pm/ConfigurationInfo; +Landroid/content/pm/FeatureGroupInfo$1; +Landroid/content/pm/FeatureGroupInfo; +Landroid/content/pm/FeatureInfo$1; +Landroid/content/pm/FeatureInfo; +Landroid/content/pm/IPackageInstaller$Stub$Proxy; +Landroid/content/pm/IPackageInstaller$Stub; +Landroid/content/pm/IPackageInstaller; +Landroid/content/pm/IPackageManager$Stub$Proxy; +Landroid/content/pm/IPackageManager$Stub; +Landroid/content/pm/IPackageManager; +Landroid/content/pm/IShortcutService$Stub$Proxy; +Landroid/content/pm/IShortcutService$Stub; +Landroid/content/pm/IShortcutService; +Landroid/content/pm/InstrumentationInfo$1; +Landroid/content/pm/InstrumentationInfo; +Landroid/content/pm/LauncherApps; +Landroid/content/pm/PackageInfo$1; +Landroid/content/pm/PackageInfo; +Landroid/content/pm/PackageItemInfo; +Landroid/content/pm/PackageManager$NameNotFoundException; +Landroid/content/pm/PackageManager; +Landroid/content/pm/PackageParser$PackageParserException; +Landroid/content/pm/ParceledListSlice$1; +Landroid/content/pm/ParceledListSlice; +Landroid/content/pm/PathPermission$1; +Landroid/content/pm/PathPermission; +Landroid/content/pm/PermissionInfo$1; +Landroid/content/pm/PermissionInfo; +Landroid/content/pm/ProviderInfo$1; +Landroid/content/pm/ProviderInfo; +Landroid/content/pm/ResolveInfo$1; +Landroid/content/pm/ResolveInfo; +Landroid/content/pm/ServiceInfo$1; +Landroid/content/pm/ServiceInfo; +Landroid/content/pm/ShortcutInfo$1; +Landroid/content/pm/ShortcutManager; +Landroid/content/pm/Signature$1; +Landroid/content/pm/Signature; +Landroid/content/pm/UserInfo$1; +Landroid/content/res/AssetFileDescriptor$1; +Landroid/content/res/AssetFileDescriptor; +Landroid/content/res/AssetManager$AssetInputStream; +Landroid/content/res/AssetManager; +Landroid/content/res/ColorStateList$1; +Landroid/content/res/ColorStateList$ColorStateListFactory; +Landroid/content/res/ColorStateList; +Landroid/content/res/CompatResources; +Landroid/content/res/CompatibilityInfo$1; +Landroid/content/res/CompatibilityInfo$2; +Landroid/content/res/CompatibilityInfo; +Landroid/content/res/ComplexColor; +Landroid/content/res/Configuration$1; +Landroid/content/res/Configuration; +Landroid/content/res/ConfigurationBoundResourceCache; +Landroid/content/res/ConstantState; +Landroid/content/res/DrawableCache; +Landroid/content/res/GradientColor; +Landroid/content/res/ObbInfo$1; +Landroid/content/res/ObbInfo; +Landroid/content/res/ObbScanner; +Landroid/content/res/ResourceId; +Landroid/content/res/Resources$NotFoundException; +Landroid/content/res/Resources$Theme; +Landroid/content/res/Resources$ThemeKey; +Landroid/content/res/Resources; +Landroid/content/res/ResourcesImpl$ThemeImpl; +Landroid/content/res/ResourcesImpl; +Landroid/content/res/ResourcesKey; +Landroid/content/res/StringBlock; +Landroid/content/res/ThemedResourceCache; +Landroid/content/res/TypedArray; +Landroid/content/res/XmlBlock$Parser; +Landroid/content/res/XmlBlock; +Landroid/content/res/XmlResourceParser; +Landroid/database/AbstractCursor$SelfContentObserver; +Landroid/database/AbstractCursor; +Landroid/database/AbstractWindowedCursor; +Landroid/database/BulkCursorDescriptor$1; +Landroid/database/BulkCursorDescriptor; +Landroid/database/BulkCursorNative; +Landroid/database/BulkCursorProxy; +Landroid/database/BulkCursorToCursorAdaptor; +Landroid/database/CharArrayBuffer; +Landroid/database/ContentObservable; +Landroid/database/ContentObserver$NotificationRunnable; +Landroid/database/ContentObserver$Transport; +Landroid/database/ContentObserver; +Landroid/database/CrossProcessCursor; +Landroid/database/CrossProcessCursorWrapper; +Landroid/database/Cursor; +Landroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy; +Landroid/database/CursorToBulkCursorAdaptor; +Landroid/database/CursorWindow$1; +Landroid/database/CursorWindow; +Landroid/database/CursorWrapper; +Landroid/database/DataSetObservable; +Landroid/database/DataSetObserver; +Landroid/database/DatabaseErrorHandler; +Landroid/database/DatabaseUtils; +Landroid/database/DefaultDatabaseErrorHandler; +Landroid/database/IBulkCursor; +Landroid/database/IContentObserver$Stub$Proxy; +Landroid/database/IContentObserver$Stub; +Landroid/database/IContentObserver; +Landroid/database/MatrixCursor; +Landroid/database/MergeCursor$1; +Landroid/database/MergeCursor; +Landroid/database/Observable; +Landroid/database/SQLException; +Landroid/database/sqlite/-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE; +Landroid/database/sqlite/DatabaseObjectNotClosedException; +Landroid/database/sqlite/SQLiteClosable; +Landroid/database/sqlite/SQLiteConnection$Operation; +Landroid/database/sqlite/SQLiteConnection$OperationLog; +Landroid/database/sqlite/SQLiteConnection$PreparedStatement; +Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; +Landroid/database/sqlite/SQLiteConnection; +Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus; +Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter; +Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler; +Landroid/database/sqlite/SQLiteConnectionPool; +Landroid/database/sqlite/SQLiteCursor; +Landroid/database/sqlite/SQLiteCursorDriver; +Landroid/database/sqlite/SQLiteCustomFunction; +Landroid/database/sqlite/SQLiteDatabase$CursorFactory; +Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; +Landroid/database/sqlite/SQLiteDatabase$OpenParams; +Landroid/database/sqlite/SQLiteDatabase; +Landroid/database/sqlite/SQLiteDatabaseConfiguration; +Landroid/database/sqlite/SQLiteDatabaseCorruptException; +Landroid/database/sqlite/SQLiteDatabaseLockedException; +Landroid/database/sqlite/SQLiteDebug$PagerStats; +Landroid/database/sqlite/SQLiteDebug; +Landroid/database/sqlite/SQLiteDirectCursorDriver; +Landroid/database/sqlite/SQLiteDoneException; +Landroid/database/sqlite/SQLiteException; +Landroid/database/sqlite/SQLiteFullException; +Landroid/database/sqlite/SQLiteGlobal; +Landroid/database/sqlite/SQLiteOpenHelper; +Landroid/database/sqlite/SQLiteProgram; +Landroid/database/sqlite/SQLiteQuery; +Landroid/database/sqlite/SQLiteQueryBuilder; +Landroid/database/sqlite/SQLiteSession$Transaction; +Landroid/database/sqlite/SQLiteSession; +Landroid/database/sqlite/SQLiteStatement; +Landroid/database/sqlite/SQLiteStatementInfo; +Landroid/database/sqlite/SQLiteTransactionListener; +Landroid/ddm/DdmHandleAppName; +Landroid/ddm/DdmHandleExit; +Landroid/ddm/DdmHandleHeap; +Landroid/ddm/DdmHandleHello; +Landroid/ddm/DdmHandleNativeHeap; +Landroid/ddm/DdmHandleProfiling; +Landroid/ddm/DdmHandleThread; +Landroid/ddm/DdmHandleViewDebug; +Landroid/ddm/DdmRegister; +Landroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1; +Landroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$2; +Landroid/graphics/-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8; +Landroid/graphics/BaseCanvas; +Landroid/graphics/Bitmap$1; +Landroid/graphics/Bitmap$Config; +Landroid/graphics/Bitmap; +Landroid/graphics/BitmapFactory$Options; +Landroid/graphics/BitmapFactory; +Landroid/graphics/BitmapRegionDecoder; +Landroid/graphics/BitmapShader; +Landroid/graphics/BlurMaskFilter; +Landroid/graphics/Camera; +Landroid/graphics/Canvas$EdgeType; +Landroid/graphics/Canvas$NoImagePreloadHolder; +Landroid/graphics/Canvas; +Landroid/graphics/CanvasProperty; +Landroid/graphics/Color; +Landroid/graphics/ColorFilter$NoImagePreloadHolder; +Landroid/graphics/ColorFilter; +Landroid/graphics/ColorMatrix; +Landroid/graphics/ColorMatrixColorFilter; +Landroid/graphics/ColorSpace$Lab; +Landroid/graphics/ColorSpace$Model; +Landroid/graphics/ColorSpace$Named; +Landroid/graphics/ColorSpace$Rgb$TransferParameters; +Landroid/graphics/ColorSpace$Rgb; +Landroid/graphics/ColorSpace$Xyz; +Landroid/graphics/ColorSpace; +Landroid/graphics/ComposePathEffect; +Landroid/graphics/ComposeShader; +Landroid/graphics/CornerPathEffect; +Landroid/graphics/DashPathEffect; +Landroid/graphics/DiscretePathEffect; +Landroid/graphics/DrawFilter; +Landroid/graphics/EmbossMaskFilter; +Landroid/graphics/FontFamily; +Landroid/graphics/FontListParser; +Landroid/graphics/GraphicBuffer$1; +Landroid/graphics/GraphicBuffer; +Landroid/graphics/Insets; +Landroid/graphics/Interpolator; +Landroid/graphics/LightingColorFilter; +Landroid/graphics/LinearGradient; +Landroid/graphics/MaskFilter; +Landroid/graphics/Matrix$1; +Landroid/graphics/Matrix$NoImagePreloadHolder; +Landroid/graphics/Matrix$ScaleToFit; +Landroid/graphics/Matrix; +Landroid/graphics/Movie; +Landroid/graphics/NinePatch$InsetStruct; +Landroid/graphics/NinePatch; +Landroid/graphics/Outline; +Landroid/graphics/Paint$Align; +Landroid/graphics/Paint$Cap; +Landroid/graphics/Paint$FontMetrics; +Landroid/graphics/Paint$FontMetricsInt; +Landroid/graphics/Paint$Join; +Landroid/graphics/Paint$NoImagePreloadHolder; +Landroid/graphics/Paint$Style; +Landroid/graphics/Paint; +Landroid/graphics/PaintFlagsDrawFilter; +Landroid/graphics/Path$FillType; +Landroid/graphics/Path; +Landroid/graphics/PathDashPathEffect; +Landroid/graphics/PathEffect; +Landroid/graphics/PathMeasure; +Landroid/graphics/Picture; +Landroid/graphics/PixelFormat; +Landroid/graphics/Point$1; +Landroid/graphics/Point; +Landroid/graphics/PointF$1; +Landroid/graphics/PointF; +Landroid/graphics/PorterDuff$Mode; +Landroid/graphics/PorterDuff; +Landroid/graphics/PorterDuffColorFilter; +Landroid/graphics/PorterDuffXfermode; +Landroid/graphics/RadialGradient; +Landroid/graphics/Rect$1; +Landroid/graphics/Rect; +Landroid/graphics/RectF$1; +Landroid/graphics/RectF; +Landroid/graphics/Region$1; +Landroid/graphics/Region$Op; +Landroid/graphics/Region; +Landroid/graphics/RegionIterator; +Landroid/graphics/Shader$TileMode; +Landroid/graphics/Shader; +Landroid/graphics/SumPathEffect; +Landroid/graphics/SurfaceTexture$1; +Landroid/graphics/SurfaceTexture$OnFrameAvailableListener; +Landroid/graphics/SurfaceTexture; +Landroid/graphics/SweepGradient; +Landroid/graphics/TableMaskFilter; +Landroid/graphics/TemporaryBuffer; +Landroid/graphics/Typeface; +Landroid/graphics/Xfermode; +Landroid/graphics/YuvImage; +Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable; +Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState; +Landroid/graphics/drawable/Animatable2; +Landroid/graphics/drawable/Animatable; +Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState; +Landroid/graphics/drawable/AnimatedStateListDrawable$Transition; +Landroid/graphics/drawable/AnimatedStateListDrawable; +Landroid/graphics/drawable/AnimatedVectorDrawable$1; +Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator; +Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState; +Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator; +Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT; +Landroid/graphics/drawable/AnimatedVectorDrawable; +Landroid/graphics/drawable/AnimationDrawable$AnimationState; +Landroid/graphics/drawable/AnimationDrawable; +Landroid/graphics/drawable/BitmapDrawable$BitmapState; +Landroid/graphics/drawable/BitmapDrawable; +Landroid/graphics/drawable/ClipDrawable$ClipState; +Landroid/graphics/drawable/ClipDrawable; +Landroid/graphics/drawable/ColorDrawable$ColorState; +Landroid/graphics/drawable/ColorDrawable; +Landroid/graphics/drawable/Drawable$Callback; +Landroid/graphics/drawable/Drawable$ConstantState; +Landroid/graphics/drawable/Drawable; +Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; +Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; +Landroid/graphics/drawable/DrawableContainer; +Landroid/graphics/drawable/DrawableInflater; +Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; +Landroid/graphics/drawable/DrawableWrapper; +Landroid/graphics/drawable/GradientDrawable$GradientState; +Landroid/graphics/drawable/GradientDrawable$Orientation; +Landroid/graphics/drawable/GradientDrawable; +Landroid/graphics/drawable/Icon$1; +Landroid/graphics/drawable/Icon; +Landroid/graphics/drawable/InsetDrawable$InsetState; +Landroid/graphics/drawable/InsetDrawable$InsetValue; +Landroid/graphics/drawable/InsetDrawable; +Landroid/graphics/drawable/LayerDrawable$ChildDrawable; +Landroid/graphics/drawable/LayerDrawable$LayerState; +Landroid/graphics/drawable/LayerDrawable; +Landroid/graphics/drawable/NinePatchDrawable$NinePatchState; +Landroid/graphics/drawable/NinePatchDrawable; +Landroid/graphics/drawable/RippleBackground$1; +Landroid/graphics/drawable/RippleBackground$BackgroundProperty; +Landroid/graphics/drawable/RippleBackground; +Landroid/graphics/drawable/RippleComponent$RenderNodeAnimatorSet; +Landroid/graphics/drawable/RippleComponent; +Landroid/graphics/drawable/RippleDrawable$RippleState; +Landroid/graphics/drawable/RippleDrawable; +Landroid/graphics/drawable/RippleForeground$1; +Landroid/graphics/drawable/RippleForeground$2; +Landroid/graphics/drawable/RippleForeground$3; +Landroid/graphics/drawable/RippleForeground$4; +Landroid/graphics/drawable/RippleForeground$LogDecelerateInterpolator; +Landroid/graphics/drawable/RotateDrawable$RotateState; +Landroid/graphics/drawable/RotateDrawable; +Landroid/graphics/drawable/ScaleDrawable$ScaleState; +Landroid/graphics/drawable/ScaleDrawable; +Landroid/graphics/drawable/ShapeDrawable$ShapeState; +Landroid/graphics/drawable/ShapeDrawable; +Landroid/graphics/drawable/StateListDrawable$StateListState; +Landroid/graphics/drawable/StateListDrawable; +Landroid/graphics/drawable/TransitionDrawable$TransitionState; +Landroid/graphics/drawable/TransitionDrawable; +Landroid/graphics/drawable/VectorDrawable$VClipPath; +Landroid/graphics/drawable/VectorDrawable$VFullPath$10; +Landroid/graphics/drawable/VectorDrawable$VFullPath$1; +Landroid/graphics/drawable/VectorDrawable$VFullPath$2; +Landroid/graphics/drawable/VectorDrawable$VFullPath$3; +Landroid/graphics/drawable/VectorDrawable$VFullPath$4; +Landroid/graphics/drawable/VectorDrawable$VFullPath$5; +Landroid/graphics/drawable/VectorDrawable$VFullPath$6; +Landroid/graphics/drawable/VectorDrawable$VFullPath$7; +Landroid/graphics/drawable/VectorDrawable$VFullPath$8; +Landroid/graphics/drawable/VectorDrawable$VFullPath$9; +Landroid/graphics/drawable/VectorDrawable$VFullPath; +Landroid/graphics/drawable/VectorDrawable$VGroup$1; +Landroid/graphics/drawable/VectorDrawable$VGroup$2; +Landroid/graphics/drawable/VectorDrawable$VGroup$3; +Landroid/graphics/drawable/VectorDrawable$VGroup$4; +Landroid/graphics/drawable/VectorDrawable$VGroup$5; +Landroid/graphics/drawable/VectorDrawable$VGroup$6; +Landroid/graphics/drawable/VectorDrawable$VGroup$7; +Landroid/graphics/drawable/VectorDrawable$VGroup$8; +Landroid/graphics/drawable/VectorDrawable$VGroup$9; +Landroid/graphics/drawable/VectorDrawable$VGroup; +Landroid/graphics/drawable/VectorDrawable$VObject; +Landroid/graphics/drawable/VectorDrawable$VPath$1; +Landroid/graphics/drawable/VectorDrawable$VPath; +Landroid/graphics/drawable/VectorDrawable$VectorDrawableState$1; +Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; +Landroid/graphics/drawable/VectorDrawable; +Landroid/graphics/drawable/shapes/OvalShape; +Landroid/graphics/drawable/shapes/RectShape; +Landroid/graphics/drawable/shapes/RoundRectShape; +Landroid/graphics/drawable/shapes/Shape; +Landroid/graphics/fonts/FontVariationAxis; +Landroid/graphics/pdf/PdfDocument; +Landroid/graphics/pdf/PdfEditor; +Landroid/graphics/pdf/PdfRenderer; +Landroid/hardware/Camera$CameraInfo; +Landroid/hardware/Camera$Face; +Landroid/hardware/Camera; +Landroid/hardware/CameraStatus$1; +Landroid/hardware/ConsumerIrManager; +Landroid/hardware/HardwareBuffer$1; +Landroid/hardware/HardwareBuffer; +Landroid/hardware/ICameraService$Stub$Proxy; +Landroid/hardware/ICameraService$Stub; +Landroid/hardware/ICameraService; +Landroid/hardware/ICameraServiceListener$Stub; +Landroid/hardware/ICameraServiceListener; +Landroid/hardware/SensorEvent; +Landroid/hardware/SensorEventListener; +Landroid/hardware/SensorManager; +Landroid/hardware/SerialManager; +Landroid/hardware/SerialPort; +Landroid/hardware/SystemSensorManager$BaseEventQueue; +Landroid/hardware/SystemSensorManager$SensorEventQueue; +Landroid/hardware/SystemSensorManager; +Landroid/hardware/TriggerEventListener; +Landroid/hardware/camera2/CameraAccessException; +Landroid/hardware/camera2/CameraCharacteristics$1; +Landroid/hardware/camera2/CameraCharacteristics$2; +Landroid/hardware/camera2/CameraCharacteristics$3; +Landroid/hardware/camera2/CameraCharacteristics$4; +Landroid/hardware/camera2/CameraCharacteristics$5; +Landroid/hardware/camera2/CameraCharacteristics$Key; +Landroid/hardware/camera2/CameraCharacteristics; +Landroid/hardware/camera2/CameraManager; +Landroid/hardware/camera2/CameraMetadata; +Landroid/hardware/camera2/CaptureRequest$1; +Landroid/hardware/camera2/CaptureRequest$2; +Landroid/hardware/camera2/CaptureRequest$Key; +Landroid/hardware/camera2/CaptureRequest; +Landroid/hardware/camera2/CaptureResult$1; +Landroid/hardware/camera2/CaptureResult$2; +Landroid/hardware/camera2/CaptureResult$3; +Landroid/hardware/camera2/CaptureResult$Key; +Landroid/hardware/camera2/CaptureResult; +Landroid/hardware/camera2/DngCreator; +Landroid/hardware/camera2/impl/CameraMetadataNative$10; +Landroid/hardware/camera2/impl/CameraMetadataNative$11; +Landroid/hardware/camera2/impl/CameraMetadataNative$12; +Landroid/hardware/camera2/impl/CameraMetadataNative$13; +Landroid/hardware/camera2/impl/CameraMetadataNative$14; +Landroid/hardware/camera2/impl/CameraMetadataNative$15; +Landroid/hardware/camera2/impl/CameraMetadataNative$16; +Landroid/hardware/camera2/impl/CameraMetadataNative$17; +Landroid/hardware/camera2/impl/CameraMetadataNative$18; +Landroid/hardware/camera2/impl/CameraMetadataNative$19; +Landroid/hardware/camera2/impl/CameraMetadataNative$1; +Landroid/hardware/camera2/impl/CameraMetadataNative$2; +Landroid/hardware/camera2/impl/CameraMetadataNative$3; +Landroid/hardware/camera2/impl/CameraMetadataNative$4; +Landroid/hardware/camera2/impl/CameraMetadataNative$5; +Landroid/hardware/camera2/impl/CameraMetadataNative$6; +Landroid/hardware/camera2/impl/CameraMetadataNative$7; +Landroid/hardware/camera2/impl/CameraMetadataNative$8; +Landroid/hardware/camera2/impl/CameraMetadataNative$9; +Landroid/hardware/camera2/impl/CameraMetadataNative$Key; +Landroid/hardware/camera2/impl/CameraMetadataNative; +Landroid/hardware/camera2/impl/GetCommand; +Landroid/hardware/camera2/impl/SetCommand; +Landroid/hardware/camera2/legacy/LegacyCameraDevice; +Landroid/hardware/camera2/legacy/PerfMeasurement; +Landroid/hardware/camera2/marshal/MarshalQueryable; +Landroid/hardware/camera2/marshal/MarshalRegistry; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableEnum; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableHighSpeedVideoConfiguration; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger; +Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableParcelable; +Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableRange; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableRect; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableReprocessFormatsMap; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableRggbChannelVector; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableSize; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableSizeF; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfiguration; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration; +Landroid/hardware/camera2/marshal/impl/MarshalQueryableString; +Landroid/hardware/camera2/params/BlackLevelPattern; +Landroid/hardware/camera2/params/ColorSpaceTransform; +Landroid/hardware/camera2/params/Face; +Landroid/hardware/camera2/params/HighSpeedVideoConfiguration; +Landroid/hardware/camera2/params/LensShadingMap; +Landroid/hardware/camera2/params/MeteringRectangle; +Landroid/hardware/camera2/params/ReprocessFormatsMap; +Landroid/hardware/camera2/params/RggbChannelVector; +Landroid/hardware/camera2/params/StreamConfiguration; +Landroid/hardware/camera2/params/StreamConfigurationDuration; +Landroid/hardware/camera2/params/StreamConfigurationMap; +Landroid/hardware/camera2/params/TonemapCurve; +Landroid/hardware/camera2/utils/TypeReference$SpecializedTypeReference; +Landroid/hardware/camera2/utils/TypeReference; +Landroid/hardware/display/DisplayManager$DisplayListener; +Landroid/hardware/display/DisplayManager; +Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate; +Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback; +Landroid/hardware/display/DisplayManagerGlobal; +Landroid/hardware/display/IDisplayManager$Stub$Proxy; +Landroid/hardware/display/IDisplayManager$Stub; +Landroid/hardware/display/IDisplayManager; +Landroid/hardware/display/IDisplayManagerCallback$Stub; +Landroid/hardware/display/IDisplayManagerCallback; +Landroid/hardware/display/WifiDisplay$1; +Landroid/hardware/display/WifiDisplaySessionInfo$1; +Landroid/hardware/display/WifiDisplayStatus$1; +Landroid/hardware/fingerprint/FingerprintManager$1; +Landroid/hardware/fingerprint/FingerprintManager$MyHandler; +Landroid/hardware/fingerprint/FingerprintManager; +Landroid/hardware/fingerprint/IFingerprintService$Stub; +Landroid/hardware/fingerprint/IFingerprintService; +Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub; +Landroid/hardware/fingerprint/IFingerprintServiceReceiver; +Landroid/hardware/hdmi/HdmiControlManager; +Landroid/hardware/input/IInputDevicesChangedListener$Stub; +Landroid/hardware/input/IInputDevicesChangedListener; +Landroid/hardware/input/IInputManager$Stub$Proxy; +Landroid/hardware/input/IInputManager$Stub; +Landroid/hardware/input/IInputManager; +Landroid/hardware/input/InputDeviceIdentifier$1; +Landroid/hardware/input/InputDeviceIdentifier; +Landroid/hardware/input/InputManager$InputDeviceListener; +Landroid/hardware/input/InputManager$InputDeviceListenerDelegate; +Landroid/hardware/input/InputManager$InputDevicesChangedListener; +Landroid/hardware/input/InputManager; +Landroid/hardware/location/ActivityRecognitionHardware; +Landroid/hardware/location/ContextHubManager; +Landroid/hardware/location/IActivityRecognitionHardware$Stub; +Landroid/hardware/location/IActivityRecognitionHardware; +Landroid/hardware/radio/RadioManager; +Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1; +Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; +Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent$1; +Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent; +Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; +Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase$1; +Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent$1; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel$1; +Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel; +Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1; +Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1; +Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; +Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent$1; +Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent; +Landroid/hardware/soundtrigger/SoundTrigger$SoundModel; +Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent$1; +Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent; +Landroid/hardware/soundtrigger/SoundTrigger; +Landroid/hardware/soundtrigger/SoundTriggerModule; +Landroid/hardware/usb/UsbDevice; +Landroid/hardware/usb/UsbDeviceConnection; +Landroid/hardware/usb/UsbManager; +Landroid/hardware/usb/UsbRequest; +Landroid/hidl/base/V1_0/IBase; +Landroid/icu/impl/BMPSet; +Landroid/icu/impl/CacheBase; +Landroid/icu/impl/CacheValue$NullValue; +Landroid/icu/impl/CacheValue$SoftValue; +Landroid/icu/impl/CacheValue$Strength; +Landroid/icu/impl/CacheValue; +Landroid/icu/impl/CalendarUtil; +Landroid/icu/impl/CaseMapImpl$StringContextIterator; +Landroid/icu/impl/CaseMapImpl; +Landroid/icu/impl/CharTrie; +Landroid/icu/impl/ClassLoaderUtil; +Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; +Landroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider; +Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern; +Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType; +Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; +Landroid/icu/impl/CurrencyData; +Landroid/icu/impl/ICUBinary$Authenticate; +Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable; +Landroid/icu/impl/ICUBinary$DatPackageReader; +Landroid/icu/impl/ICUBinary$DataFile; +Landroid/icu/impl/ICUBinary$PackageDataFile; +Landroid/icu/impl/ICUBinary; +Landroid/icu/impl/ICUCache; +Landroid/icu/impl/ICUConfig; +Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink; +Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; +Landroid/icu/impl/ICUCurrencyDisplayInfoProvider; +Landroid/icu/impl/ICUCurrencyMetaInfo$Collector; +Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; +Landroid/icu/impl/ICUCurrencyMetaInfo$UniqueList; +Landroid/icu/impl/ICUCurrencyMetaInfo; +Landroid/icu/impl/ICUData; +Landroid/icu/impl/ICUDebug; +Landroid/icu/impl/ICULocaleService$ICUResourceBundleFactory; +Landroid/icu/impl/ICULocaleService$LocaleKey; +Landroid/icu/impl/ICULocaleService$LocaleKeyFactory; +Landroid/icu/impl/ICULocaleService; +Landroid/icu/impl/ICUNotifier; +Landroid/icu/impl/ICURWLock; +Landroid/icu/impl/ICUResourceBundle$1; +Landroid/icu/impl/ICUResourceBundle$2; +Landroid/icu/impl/ICUResourceBundle$3$1; +Landroid/icu/impl/ICUResourceBundle$3; +Landroid/icu/impl/ICUResourceBundle$4; +Landroid/icu/impl/ICUResourceBundle$AvailEntry; +Landroid/icu/impl/ICUResourceBundle$Loader; +Landroid/icu/impl/ICUResourceBundle$OpenType; +Landroid/icu/impl/ICUResourceBundle$WholeBundle; +Landroid/icu/impl/ICUResourceBundle; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceBinary; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceContainer; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceInt; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceString; +Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; +Landroid/icu/impl/ICUResourceBundleImpl; +Landroid/icu/impl/ICUResourceBundleReader$Array16; +Landroid/icu/impl/ICUResourceBundleReader$Array32; +Landroid/icu/impl/ICUResourceBundleReader$Array; +Landroid/icu/impl/ICUResourceBundleReader$Container; +Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable; +Landroid/icu/impl/ICUResourceBundleReader$ReaderCache; +Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey; +Landroid/icu/impl/ICUResourceBundleReader$ReaderValue; +Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; +Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; +Landroid/icu/impl/ICUResourceBundleReader$Table1632; +Landroid/icu/impl/ICUResourceBundleReader$Table16; +Landroid/icu/impl/ICUResourceBundleReader$Table; +Landroid/icu/impl/ICUResourceBundleReader; +Landroid/icu/impl/ICUService$CacheEntry; +Landroid/icu/impl/ICUService$Factory; +Landroid/icu/impl/ICUService$Key; +Landroid/icu/impl/ICUService; +Landroid/icu/impl/LocaleIDParser; +Landroid/icu/impl/LocaleIDs; +Landroid/icu/impl/Norm2AllModes$1; +Landroid/icu/impl/Norm2AllModes$ComposeNormalizer2; +Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2; +Landroid/icu/impl/Norm2AllModes$FCDNormalizer2; +Landroid/icu/impl/Norm2AllModes$NFKCSingleton; +Landroid/icu/impl/Norm2AllModes$NoopNormalizer2; +Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; +Landroid/icu/impl/Norm2AllModes$Normalizer2WithImpl; +Landroid/icu/impl/Norm2AllModes; +Landroid/icu/impl/Normalizer2Impl$1; +Landroid/icu/impl/Normalizer2Impl$IsAcceptable; +Landroid/icu/impl/Normalizer2Impl; +Landroid/icu/impl/Pair; +Landroid/icu/impl/PatternProps; +Landroid/icu/impl/ReplaceableUCharacterIterator; +Landroid/icu/impl/RuleCharacterIterator; +Landroid/icu/impl/SimpleCache; +Landroid/icu/impl/SoftCache; +Landroid/icu/impl/TextTrieMap$Node; +Landroid/icu/impl/TextTrieMap; +Landroid/icu/impl/TimeZoneNamesFactoryImpl; +Landroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache; +Landroid/icu/impl/TimeZoneNamesImpl$MZMapEntry; +Landroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache; +Landroid/icu/impl/Trie$DataManipulate; +Landroid/icu/impl/Trie$DefaultGetFoldingOffset; +Landroid/icu/impl/Trie2$1; +Landroid/icu/impl/Trie2$Range; +Landroid/icu/impl/Trie2$Trie2Iterator; +Landroid/icu/impl/Trie2$UTrie2Header; +Landroid/icu/impl/Trie2$ValueMapper; +Landroid/icu/impl/Trie2$ValueWidth; +Landroid/icu/impl/Trie2; +Landroid/icu/impl/Trie2_16; +Landroid/icu/impl/Trie2_32; +Landroid/icu/impl/Trie; +Landroid/icu/impl/UBiDiProps$IsAcceptable; +Landroid/icu/impl/UCaseProps$ContextIterator; +Landroid/icu/impl/UCaseProps$IsAcceptable; +Landroid/icu/impl/UCaseProps; +Landroid/icu/impl/UCharacterProperty$10; +Landroid/icu/impl/UCharacterProperty$11; +Landroid/icu/impl/UCharacterProperty$12; +Landroid/icu/impl/UCharacterProperty$13; +Landroid/icu/impl/UCharacterProperty$14; +Landroid/icu/impl/UCharacterProperty$15; +Landroid/icu/impl/UCharacterProperty$16; +Landroid/icu/impl/UCharacterProperty$17; +Landroid/icu/impl/UCharacterProperty$18; +Landroid/icu/impl/UCharacterProperty$19; +Landroid/icu/impl/UCharacterProperty$1; +Landroid/icu/impl/UCharacterProperty$20; +Landroid/icu/impl/UCharacterProperty$21; +Landroid/icu/impl/UCharacterProperty$22; +Landroid/icu/impl/UCharacterProperty$23; +Landroid/icu/impl/UCharacterProperty$2; +Landroid/icu/impl/UCharacterProperty$3; +Landroid/icu/impl/UCharacterProperty$4; +Landroid/icu/impl/UCharacterProperty$5; +Landroid/icu/impl/UCharacterProperty$6; +Landroid/icu/impl/UCharacterProperty$7; +Landroid/icu/impl/UCharacterProperty$8; +Landroid/icu/impl/UCharacterProperty$9; +Landroid/icu/impl/UCharacterProperty$BiDiIntProperty; +Landroid/icu/impl/UCharacterProperty$BinaryProperty; +Landroid/icu/impl/UCharacterProperty$CaseBinaryProperty; +Landroid/icu/impl/UCharacterProperty$CombiningClassIntProperty; +Landroid/icu/impl/UCharacterProperty$IntProperty; +Landroid/icu/impl/UCharacterProperty$IsAcceptable; +Landroid/icu/impl/UCharacterProperty$NormInertBinaryProperty; +Landroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty; +Landroid/icu/impl/UCharacterProperty; +Landroid/icu/impl/UPropertyAliases$IsAcceptable; +Landroid/icu/impl/URLHandler$URLVisitor; +Landroid/icu/impl/UResource$Array; +Landroid/icu/impl/UResource$Key; +Landroid/icu/impl/UResource$Sink; +Landroid/icu/impl/UResource$Table; +Landroid/icu/impl/UResource$Value; +Landroid/icu/impl/USerializedSet; +Landroid/icu/impl/Utility; +Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache; +Landroid/icu/impl/coll/CollationDataReader$IsAcceptable; +Landroid/icu/impl/coll/SharedObject$Reference; +Landroid/icu/impl/coll/SharedObject; +Landroid/icu/impl/locale/AsciiUtil; +Landroid/icu/impl/locale/BaseLocale$Cache; +Landroid/icu/impl/locale/BaseLocale$Key; +Landroid/icu/impl/locale/BaseLocale; +Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry; +Landroid/icu/impl/locale/LocaleObjectCache; +Landroid/icu/impl/locale/LocaleSyntaxException; +Landroid/icu/lang/UCharacter; +Landroid/icu/lang/UCharacterEnums$ECharacterCategory; +Landroid/icu/lang/UCharacterEnums$ECharacterDirection; +Landroid/icu/math/MathContext; +Landroid/icu/text/BreakIterator$BreakIteratorCache; +Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; +Landroid/icu/text/BreakIteratorFactory$BFService$1RBBreakIteratorFactory; +Landroid/icu/text/BreakIteratorFactory$BFService; +Landroid/icu/text/CaseMap$Upper; +Landroid/icu/text/CaseMap; +Landroid/icu/text/Collator$ServiceShim; +Landroid/icu/text/CollatorServiceShim$CService$1CollatorFactory; +Landroid/icu/text/CollatorServiceShim$CService; +Landroid/icu/text/CurrencyDisplayNames; +Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; +Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; +Landroid/icu/text/CurrencyMetaInfo; +Landroid/icu/text/DateFormatSymbols$1; +Landroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink; +Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink; +Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; +Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink; +Landroid/icu/text/DateTimePatternGenerator$DistanceInfo; +Landroid/icu/text/DateTimePatternGenerator$PatternInfo; +Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher; +Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag; +Landroid/icu/text/DateTimePatternGenerator$VariableField; +Landroid/icu/text/DecimalFormat$Unit; +Landroid/icu/text/DecimalFormat; +Landroid/icu/text/DecimalFormatSymbols$1; +Landroid/icu/text/DecimalFormatSymbols$CacheData; +Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink; +Landroid/icu/text/DecimalFormatSymbols; +Landroid/icu/text/DigitList; +Landroid/icu/text/DisplayContext$Type; +Landroid/icu/text/DisplayContext; +Landroid/icu/text/Edits; +Landroid/icu/text/IDNA; +Landroid/icu/text/LanguageBreakEngine; +Landroid/icu/text/Normalizer$FCDMode; +Landroid/icu/text/Normalizer$Mode; +Landroid/icu/text/Normalizer$ModeImpl; +Landroid/icu/text/Normalizer$NFCMode; +Landroid/icu/text/Normalizer$NFDMode; +Landroid/icu/text/Normalizer$NFKCMode; +Landroid/icu/text/Normalizer$NFKDMode; +Landroid/icu/text/Normalizer$NFKDModeImpl; +Landroid/icu/text/Normalizer$NONEMode; +Landroid/icu/text/Normalizer$QuickCheckResult; +Landroid/icu/text/Normalizer2; +Landroid/icu/text/Normalizer; +Landroid/icu/text/NumberFormat$Field; +Landroid/icu/text/NumberFormat$NumberFormatShim; +Landroid/icu/text/NumberFormat; +Landroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory; +Landroid/icu/text/NumberFormatServiceShim$NFService; +Landroid/icu/text/NumberingSystem$1; +Landroid/icu/text/NumberingSystem$2; +Landroid/icu/text/NumberingSystem$LocaleLookupData; +Landroid/icu/text/NumberingSystem; +Landroid/icu/text/PluralRanges$Matrix; +Landroid/icu/text/PluralRanges; +Landroid/icu/text/PluralRules$1; +Landroid/icu/text/PluralRules$AndConstraint; +Landroid/icu/text/PluralRules$BinaryConstraint; +Landroid/icu/text/PluralRules$Constraint; +Landroid/icu/text/PluralRules$Factory; +Landroid/icu/text/PluralRules$FixedDecimal; +Landroid/icu/text/PluralRules$FixedDecimalRange; +Landroid/icu/text/PluralRules$FixedDecimalSamples; +Landroid/icu/text/PluralRules$RangeConstraint; +Landroid/icu/text/PluralRules$Rule; +Landroid/icu/text/PluralRules$RuleList; +Landroid/icu/text/RBBIDataWrapper$IsAcceptable; +Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader; +Landroid/icu/text/RBBIDataWrapper$TrieFoldingFunc; +Landroid/icu/text/Replaceable; +Landroid/icu/text/ReplaceableString; +Landroid/icu/text/SimpleDateFormat$PatternItem; +Landroid/icu/text/TimeZoneNames$Cache; +Landroid/icu/text/TimeZoneNames$Factory; +Landroid/icu/text/TimeZoneNames$NameType; +Landroid/icu/text/UCharacterIterator; +Landroid/icu/text/UFieldPosition; +Landroid/icu/text/UFormat; +Landroid/icu/text/UForwardCharacterIterator; +Landroid/icu/text/UTF16; +Landroid/icu/text/UnhandledBreakEngine; +Landroid/icu/text/UnicodeFilter; +Landroid/icu/text/UnicodeMatcher; +Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter; +Landroid/icu/text/UnicodeSet$IntPropertyFilter; +Landroid/icu/text/UnicodeSet; +Landroid/icu/util/BasicTimeZone; +Landroid/icu/util/Calendar$FormatConfiguration; +Landroid/icu/util/Calendar$PatternData; +Landroid/icu/util/Calendar$WeekData; +Landroid/icu/util/Calendar$WeekDataCache; +Landroid/icu/util/Currency$1; +Landroid/icu/util/Currency$CurrencyUsage; +Landroid/icu/util/Currency$EquivalenceRelation; +Landroid/icu/util/Currency; +Landroid/icu/util/Freezable; +Landroid/icu/util/MeasureUnit$1; +Landroid/icu/util/MeasureUnit$2; +Landroid/icu/util/MeasureUnit$3; +Landroid/icu/util/MeasureUnit$Factory; +Landroid/icu/util/MeasureUnit; +Landroid/icu/util/Output; +Landroid/icu/util/TimeUnit; +Landroid/icu/util/TimeZone$ConstantZone; +Landroid/icu/util/TimeZone; +Landroid/icu/util/ULocale$1; +Landroid/icu/util/ULocale$2; +Landroid/icu/util/ULocale$Category; +Landroid/icu/util/ULocale$JDKLocaleHelper; +Landroid/icu/util/ULocale$Type; +Landroid/icu/util/ULocale; +Landroid/icu/util/UResourceBundle$RootType; +Landroid/icu/util/UResourceBundle; +Landroid/icu/util/UResourceBundleIterator; +Landroid/icu/util/UResourceTypeMismatchException; +Landroid/icu/util/VersionInfo; +Landroid/location/BatchedLocationCallbackTransport$CallbackTransport; +Landroid/location/BatchedLocationCallbackTransport; +Landroid/location/Country$1; +Landroid/location/CountryDetector; +Landroid/location/GeocoderParams$1; +Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport; +Landroid/location/GnssMeasurementCallbackTransport; +Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport; +Landroid/location/GnssNavigationMessageCallbackTransport; +Landroid/location/IBatchedLocationCallback$Stub; +Landroid/location/IBatchedLocationCallback; +Landroid/location/ICountryDetector$Stub; +Landroid/location/ICountryDetector; +Landroid/location/IGnssMeasurementsListener$Stub; +Landroid/location/IGnssMeasurementsListener; +Landroid/location/IGnssNavigationMessageListener$Stub; +Landroid/location/IGnssNavigationMessageListener; +Landroid/location/IGnssStatusListener$Stub; +Landroid/location/IGnssStatusListener; +Landroid/location/ILocationListener$Stub; +Landroid/location/ILocationListener; +Landroid/location/ILocationManager$Stub$Proxy; +Landroid/location/ILocationManager$Stub; +Landroid/location/ILocationManager; +Landroid/location/LocalListenerHelper; +Landroid/location/Location$1; +Landroid/location/Location$2; +Landroid/location/Location$BearingDistanceCache; +Landroid/location/Location; +Landroid/location/LocationManager$ListenerTransport; +Landroid/location/LocationManager; +Landroid/location/LocationRequest$1; +Landroid/media/AudioAttributes$1; +Landroid/media/AudioAttributes$Builder; +Landroid/media/AudioAttributes; +Landroid/media/AudioDevicePort; +Landroid/media/AudioDevicePortConfig; +Landroid/media/AudioFocusRequest$Builder; +Landroid/media/AudioFormat$1; +Landroid/media/AudioFormat$Builder; +Landroid/media/AudioFormat; +Landroid/media/AudioGain; +Landroid/media/AudioGainConfig; +Landroid/media/AudioHandle; +Landroid/media/AudioManager$1; +Landroid/media/AudioManager$2; +Landroid/media/AudioManager$3; +Landroid/media/AudioManager$FocusRequestInfo; +Landroid/media/AudioManager$OnAudioFocusChangeListener; +Landroid/media/AudioManager$ServiceEventHandlerDelegate$1; +Landroid/media/AudioManager$ServiceEventHandlerDelegate; +Landroid/media/AudioManager; +Landroid/media/AudioMixPort; +Landroid/media/AudioMixPortConfig; +Landroid/media/AudioPatch; +Landroid/media/AudioPort; +Landroid/media/AudioPortConfig; +Landroid/media/AudioPortEventHandler; +Landroid/media/AudioRecord; +Landroid/media/AudioRoutesInfo$1; +Landroid/media/AudioRouting; +Landroid/media/AudioSystem; +Landroid/media/AudioTimestamp; +Landroid/media/AudioTrack; +Landroid/media/BufferingParams$1; +Landroid/media/IAudioFocusDispatcher$Stub; +Landroid/media/IAudioFocusDispatcher; +Landroid/media/IAudioRoutesObserver$Stub; +Landroid/media/IAudioRoutesObserver; +Landroid/media/IAudioService$Stub$Proxy; +Landroid/media/IAudioService$Stub; +Landroid/media/IAudioService; +Landroid/media/IMediaHTTPConnection$Stub; +Landroid/media/IMediaHTTPConnection; +Landroid/media/IMediaRouterClient$Stub; +Landroid/media/IMediaRouterClient; +Landroid/media/IMediaRouterService$Stub$Proxy; +Landroid/media/IMediaRouterService$Stub; +Landroid/media/IMediaRouterService; +Landroid/media/IPlaybackConfigDispatcher$Stub; +Landroid/media/IPlaybackConfigDispatcher; +Landroid/media/IPlayer$Stub; +Landroid/media/IPlayer; +Landroid/media/IRecordingConfigDispatcher$Stub; +Landroid/media/IRecordingConfigDispatcher; +Landroid/media/IRemoteVolumeObserver$Stub; +Landroid/media/IRemoteVolumeObserver; +Landroid/media/IRingtonePlayer$Stub$Proxy; +Landroid/media/IRingtonePlayer$Stub; +Landroid/media/IRingtonePlayer; +Landroid/media/Image; +Landroid/media/JetPlayer; +Landroid/media/MediaCodec$BufferInfo; +Landroid/media/MediaCodec$BufferMap; +Landroid/media/MediaCodec$CryptoInfo$Pattern; +Landroid/media/MediaCodec$CryptoInfo; +Landroid/media/MediaCodec$EventHandler; +Landroid/media/MediaCodecInfo$AudioCapabilities; +Landroid/media/MediaCodecInfo$CodecProfileLevel; +Landroid/media/MediaCodecInfo$Feature; +Landroid/media/MediaCodecInfo$VideoCapabilities; +Landroid/media/MediaFormat; +Landroid/media/MediaMetadata$1; +Landroid/media/MediaMetadata$Builder; +Landroid/media/MediaPlayer$1; +Landroid/media/MediaPlayer$2; +Landroid/media/MediaPlayer$EventHandler; +Landroid/media/MediaPlayer$OnCompletionListener; +Landroid/media/MediaPlayer$OnSeekCompleteListener; +Landroid/media/MediaPlayer$OnSubtitleDataListener; +Landroid/media/MediaPlayer$TimeProvider$EventHandler; +Landroid/media/MediaPlayer$TimeProvider; +Landroid/media/MediaRouter$Callback; +Landroid/media/MediaRouter$CallbackInfo; +Landroid/media/MediaRouter$RouteCategory; +Landroid/media/MediaRouter$RouteInfo$1; +Landroid/media/MediaRouter$RouteInfo; +Landroid/media/MediaRouter$Static$1$1; +Landroid/media/MediaRouter$Static$1; +Landroid/media/MediaRouter$Static$Client; +Landroid/media/MediaRouter$Static; +Landroid/media/MediaRouter$VolumeCallback; +Landroid/media/MediaRouter$VolumeChangeReceiver; +Landroid/media/MediaRouter$WifiDisplayStatusChangedReceiver; +Landroid/media/MediaRouter; +Landroid/media/MediaTimeProvider; +Landroid/media/PlaybackParams$1; +Landroid/media/PlaybackParams; +Landroid/media/PlayerBase$IAppOpsCallbackWrapper; +Landroid/media/PlayerBase$IPlayerWrapper; +Landroid/media/PlayerBase$PlayerIdCard$1; +Landroid/media/PlayerBase; +Landroid/media/RemoteDisplay; +Landroid/media/Ringtone$MyOnCompletionListener; +Landroid/media/SubtitleController$Listener; +Landroid/media/ToneGenerator; +Landroid/media/Utils$1; +Landroid/media/Utils$2; +Landroid/media/Utils; +Landroid/media/VolumeAutomation; +Landroid/media/VolumeShaper$Configuration$1; +Landroid/media/VolumeShaper$Configuration$Builder; +Landroid/media/VolumeShaper$Configuration; +Landroid/media/VolumeShaper$Operation$1; +Landroid/media/VolumeShaper$Operation$Builder; +Landroid/media/VolumeShaper$Operation; +Landroid/media/VolumeShaper$State$1; +Landroid/media/VolumeShaper$State; +Landroid/media/audiopolicy/AudioMix; +Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion; +Landroid/media/audiopolicy/AudioMixingRule; +Landroid/media/midi/MidiManager; +Landroid/media/projection/MediaProjectionManager; +Landroid/media/session/IActiveSessionsListener$Stub; +Landroid/media/session/IActiveSessionsListener; +Landroid/media/session/ISession$Stub; +Landroid/media/session/ISession; +Landroid/media/session/ISessionCallback$Stub; +Landroid/media/session/ISessionCallback; +Landroid/media/session/ISessionController$Stub$Proxy; +Landroid/media/session/ISessionController$Stub; +Landroid/media/session/ISessionController; +Landroid/media/session/ISessionControllerCallback$Stub; +Landroid/media/session/ISessionControllerCallback; +Landroid/media/session/ISessionManager$Stub$Proxy; +Landroid/media/session/ISessionManager$Stub; +Landroid/media/session/ISessionManager; +Landroid/media/session/MediaController$CallbackStub; +Landroid/media/session/MediaController$TransportControls; +Landroid/media/session/MediaController; +Landroid/media/session/MediaSession$Callback; +Landroid/media/session/MediaSession$CallbackMessageHandler; +Landroid/media/session/MediaSession$CallbackStub; +Landroid/media/session/MediaSession$Token$1; +Landroid/media/session/MediaSession; +Landroid/media/session/MediaSessionManager; +Landroid/media/session/PlaybackState$1; +Landroid/media/session/PlaybackState$Builder; +Landroid/media/session/PlaybackState$CustomAction$1; +Landroid/media/soundtrigger/SoundTriggerManager; +Landroid/media/tv/TvInputManager; +Landroid/metrics/LogMaker; +Landroid/mtp/MtpDeviceInfo; +Landroid/mtp/MtpEvent; +Landroid/mtp/MtpObjectInfo; +Landroid/mtp/MtpPropertyList; +Landroid/mtp/MtpStorage; +Landroid/mtp/MtpStorageInfo; +Landroid/net/ConnectivityManager$CallbackHandler; +Landroid/net/ConnectivityManager$NetworkCallback; +Landroid/net/ConnectivityManager; +Landroid/net/ConnectivityThread$Singleton; +Landroid/net/ConnectivityThread; +Landroid/net/Credentials; +Landroid/net/EthernetManager; +Landroid/net/IConnectivityManager$Stub$Proxy; +Landroid/net/IConnectivityManager$Stub; +Landroid/net/IConnectivityManager; +Landroid/net/INetworkPolicyManager$Stub$Proxy; +Landroid/net/INetworkPolicyManager$Stub; +Landroid/net/INetworkPolicyManager; +Landroid/net/INetworkScoreService$Stub; +Landroid/net/INetworkScoreService; +Landroid/net/INetworkStatsService$Stub$Proxy; +Landroid/net/INetworkStatsService$Stub; +Landroid/net/INetworkStatsService; +Landroid/net/IpPrefix$1; +Landroid/net/IpPrefix; +Landroid/net/IpSecManager; +Landroid/net/LinkAddress$1; +Landroid/net/LinkAddress; +Landroid/net/LinkProperties$1; +Landroid/net/LinkProperties; +Landroid/net/LocalServerSocket; +Landroid/net/LocalSocket; +Landroid/net/LocalSocketAddress; +Landroid/net/LocalSocketImpl$SocketInputStream; +Landroid/net/LocalSocketImpl$SocketOutputStream; +Landroid/net/LocalSocketImpl; +Landroid/net/Network$1; +Landroid/net/Network; +Landroid/net/NetworkCapabilities$1; +Landroid/net/NetworkCapabilities; +Landroid/net/NetworkFactory; +Landroid/net/NetworkInfo$1; +Landroid/net/NetworkInfo$DetailedState; +Landroid/net/NetworkInfo$State; +Landroid/net/NetworkInfo; +Landroid/net/NetworkPolicyManager; +Landroid/net/NetworkRequest$1; +Landroid/net/NetworkRequest$Builder; +Landroid/net/NetworkRequest$Type; +Landroid/net/NetworkRequest; +Landroid/net/NetworkScoreManager; +Landroid/net/NetworkSpecifier; +Landroid/net/NetworkStats$1; +Landroid/net/NetworkStats; +Landroid/net/NetworkUtils; +Landroid/net/Proxy; +Landroid/net/ProxyInfo$1; +Landroid/net/RouteInfo$1; +Landroid/net/RouteInfo; +Landroid/net/SSLCertificateSocketFactory$1; +Landroid/net/SSLSessionCache; +Landroid/net/TrafficStats; +Landroid/net/Uri$1; +Landroid/net/Uri$AbstractHierarchicalUri; +Landroid/net/Uri$AbstractPart; +Landroid/net/Uri$Builder; +Landroid/net/Uri$HierarchicalUri; +Landroid/net/Uri$OpaqueUri; +Landroid/net/Uri$Part$EmptyPart; +Landroid/net/Uri$Part; +Landroid/net/Uri$PathPart; +Landroid/net/Uri$PathSegments; +Landroid/net/Uri$PathSegmentsBuilder; +Landroid/net/Uri$StringUri; +Landroid/net/Uri; +Landroid/net/http/AndroidHttpClient$1; +Landroid/net/http/X509TrustManagerExtensions; +Landroid/net/lowpan/LowpanManager; +Landroid/net/nsd/NsdManager; +Landroid/net/wifi/IWifiManager$Stub$Proxy; +Landroid/net/wifi/IWifiManager$Stub; +Landroid/net/wifi/IWifiManager; +Landroid/net/wifi/RttManager; +Landroid/net/wifi/ScanResult$1; +Landroid/net/wifi/ScanResult$InformationElement; +Landroid/net/wifi/SupplicantState$1; +Landroid/net/wifi/SupplicantState; +Landroid/net/wifi/WifiInfo$1; +Landroid/net/wifi/WifiInfo; +Landroid/net/wifi/WifiManager$WifiLock; +Landroid/net/wifi/WifiManager; +Landroid/net/wifi/WifiScanner; +Landroid/net/wifi/WifiSsid$1; +Landroid/net/wifi/WifiSsid; +Landroid/net/wifi/aware/WifiAwareManager; +Landroid/net/wifi/p2p/WifiP2pManager; +Landroid/nfc/IAppCallback$Stub; +Landroid/nfc/IAppCallback; +Landroid/nfc/INfcAdapter$Stub$Proxy; +Landroid/nfc/INfcAdapter$Stub; +Landroid/nfc/INfcAdapter; +Landroid/nfc/INfcCardEmulation$Stub$Proxy; +Landroid/nfc/INfcCardEmulation$Stub; +Landroid/nfc/INfcCardEmulation; +Landroid/nfc/INfcFCardEmulation$Stub$Proxy; +Landroid/nfc/INfcFCardEmulation$Stub; +Landroid/nfc/INfcFCardEmulation; +Landroid/nfc/INfcTag$Stub$Proxy; +Landroid/nfc/INfcTag$Stub; +Landroid/nfc/INfcTag; +Landroid/nfc/NfcActivityManager$NfcActivityState; +Landroid/nfc/NfcActivityManager$NfcApplicationState; +Landroid/nfc/NfcAdapter$1; +Landroid/nfc/NfcAdapter$CreateNdefMessageCallback; +Landroid/nfc/NfcManager; +Landroid/opengl/EGL14; +Landroid/opengl/EGLConfig; +Landroid/opengl/EGLContext; +Landroid/opengl/EGLDisplay; +Landroid/opengl/EGLExt; +Landroid/opengl/EGLObjectHandle; +Landroid/opengl/EGLSurface; +Landroid/opengl/ETC1; +Landroid/opengl/GLES10; +Landroid/opengl/GLES10Ext; +Landroid/opengl/GLES11; +Landroid/opengl/GLES11Ext; +Landroid/opengl/GLES20; +Landroid/opengl/GLES30; +Landroid/opengl/GLES31; +Landroid/opengl/GLES31Ext; +Landroid/opengl/GLES32; +Landroid/opengl/GLUtils; +Landroid/opengl/Matrix; +Landroid/opengl/Visibility; +Landroid/os/-$Lambda$BcGBlsGjMZMF6Ej78rWJ608MYSM; +Landroid/os/AsyncResult; +Landroid/os/AsyncTask$1; +Landroid/os/AsyncTask$2; +Landroid/os/AsyncTask$3; +Landroid/os/AsyncTask$AsyncTaskResult; +Landroid/os/AsyncTask$InternalHandler; +Landroid/os/AsyncTask$SerialExecutor$1; +Landroid/os/AsyncTask$SerialExecutor; +Landroid/os/AsyncTask$Status; +Landroid/os/AsyncTask$WorkerRunnable; +Landroid/os/AsyncTask; +Landroid/os/BadParcelableException; +Landroid/os/BaseBundle$NoImagePreloadHolder; +Landroid/os/BaseBundle; +Landroid/os/BatteryManager; +Landroid/os/BatteryStats$BitDescription; +Landroid/os/BatteryStats$ControllerActivityCounter; +Landroid/os/BatteryStats$Counter; +Landroid/os/BatteryStats$HistoryEventTracker; +Landroid/os/BatteryStats$HistoryItem; +Landroid/os/BatteryStats$HistoryStepDetails; +Landroid/os/BatteryStats$HistoryTag; +Landroid/os/BatteryStats$IntToString; +Landroid/os/BatteryStats$LevelStepTracker; +Landroid/os/BatteryStats$LongCounter; +Landroid/os/BatteryStats$LongCounterArray; +Landroid/os/BatteryStats$Timer; +Landroid/os/BatteryStats$Uid$Pkg$Serv; +Landroid/os/BatteryStats$Uid$Pkg; +Landroid/os/BatteryStats$Uid$Proc; +Landroid/os/BatteryStats$Uid$Sensor; +Landroid/os/BatteryStats$Uid$Wakelock; +Landroid/os/Binder; +Landroid/os/BinderProxy; +Landroid/os/Build$VERSION; +Landroid/os/Build; +Landroid/os/Bundle$1; +Landroid/os/Bundle; +Landroid/os/CancellationSignal$OnCancelListener; +Landroid/os/CancellationSignal$Transport; +Landroid/os/CancellationSignal; +Landroid/os/ConditionVariable; +Landroid/os/DeadObjectException; +Landroid/os/DeadSystemException; +Landroid/os/Debug$MemoryInfo$1; +Landroid/os/Debug$MemoryInfo; +Landroid/os/Debug; +Landroid/os/DropBoxManager; +Landroid/os/Environment$UserEnvironment; +Landroid/os/Environment; +Landroid/os/FactoryTest; +Landroid/os/FileObserver$ObserverThread; +Landroid/os/FileUtils; +Landroid/os/GraphicsEnvironment; +Landroid/os/Handler$Callback; +Landroid/os/Handler$MessengerImpl; +Landroid/os/Handler; +Landroid/os/HandlerThread; +Landroid/os/HardwarePropertiesManager; +Landroid/os/HwBinder; +Landroid/os/HwBlob; +Landroid/os/HwParcel; +Landroid/os/HwRemoteBinder; +Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy; +Landroid/os/IBatteryPropertiesRegistrar$Stub; +Landroid/os/IBatteryPropertiesRegistrar; +Landroid/os/IBinder$DeathRecipient; +Landroid/os/IBinder; +Landroid/os/ICancellationSignal$Stub$Proxy; +Landroid/os/ICancellationSignal$Stub; +Landroid/os/ICancellationSignal; +Landroid/os/IDeviceIdleController$Stub; +Landroid/os/IDeviceIdleController; +Landroid/os/IHardwarePropertiesManager$Stub; +Landroid/os/IHardwarePropertiesManager; +Landroid/os/IHwBinder$DeathRecipient; +Landroid/os/IHwBinder; +Landroid/os/IHwInterface; +Landroid/os/IInterface; +Landroid/os/IMessenger$Stub$Proxy; +Landroid/os/IMessenger$Stub; +Landroid/os/IMessenger; +Landroid/os/INetworkManagementService$Stub$Proxy; +Landroid/os/INetworkManagementService$Stub; +Landroid/os/INetworkManagementService; +Landroid/os/IPowerManager$Stub$Proxy; +Landroid/os/IPowerManager$Stub; +Landroid/os/IPowerManager; +Landroid/os/IServiceManager; +Landroid/os/IUserManager$Stub$Proxy; +Landroid/os/IUserManager$Stub; +Landroid/os/IUserManager; +Landroid/os/IVibratorService$Stub$Proxy; +Landroid/os/IVibratorService$Stub; +Landroid/os/IVibratorService; +Landroid/os/IncidentManager; +Landroid/os/LocaleList$1; +Landroid/os/LocaleList; +Landroid/os/Looper; +Landroid/os/MemoryFile; +Landroid/os/Message$1; +Landroid/os/Message; +Landroid/os/MessageQueue$IdleHandler; +Landroid/os/MessageQueue; +Landroid/os/Messenger$1; +Landroid/os/Messenger; +Landroid/os/OperationCanceledException; +Landroid/os/Parcel$1; +Landroid/os/Parcel$2; +Landroid/os/Parcel$ReadWriteHelper; +Landroid/os/Parcel; +Landroid/os/ParcelFileDescriptor$1; +Landroid/os/ParcelFileDescriptor$AutoCloseInputStream; +Landroid/os/ParcelFileDescriptor; +Landroid/os/ParcelUuid$1; +Landroid/os/Parcelable$ClassLoaderCreator; +Landroid/os/Parcelable$Creator; +Landroid/os/Parcelable; +Landroid/os/ParcelableException; +Landroid/os/ParcelableParcel$1; +Landroid/os/PatternMatcher$1; +Landroid/os/PatternMatcher; +Landroid/os/PersistableBundle$1; +Landroid/os/PersistableBundle; +Landroid/os/PooledStringWriter; +Landroid/os/PowerManager$WakeLock$1; +Landroid/os/PowerManager$WakeLock; +Landroid/os/PowerManager; +Landroid/os/Process; +Landroid/os/RecoverySystem; +Landroid/os/Registrant; +Landroid/os/RemoteCallbackList$Callback; +Landroid/os/RemoteCallbackList; +Landroid/os/RemoteException; +Landroid/os/ResultReceiver$1; +Landroid/os/ResultReceiver; +Landroid/os/SELinux; +Landroid/os/Seccomp; +Landroid/os/ServiceManager$ServiceNotFoundException; +Landroid/os/ServiceManager; +Landroid/os/ServiceManagerNative; +Landroid/os/ServiceManagerProxy; +Landroid/os/ServiceSpecificException; +Landroid/os/SharedMemory; +Landroid/os/ShellCallback; +Landroid/os/StatFs; +Landroid/os/StrictMode$1; +Landroid/os/StrictMode$2; +Landroid/os/StrictMode$3; +Landroid/os/StrictMode$4; +Landroid/os/StrictMode$5; +Landroid/os/StrictMode$6; +Landroid/os/StrictMode$7; +Landroid/os/StrictMode$8; +Landroid/os/StrictMode$9; +Landroid/os/StrictMode$AndroidBlockGuardPolicy$1; +Landroid/os/StrictMode$AndroidBlockGuardPolicy; +Landroid/os/StrictMode$AndroidCloseGuardReporter; +Landroid/os/StrictMode$InstanceCountViolation; +Landroid/os/StrictMode$InstanceTracker; +Landroid/os/StrictMode$LogStackTrace; +Landroid/os/StrictMode$Span; +Landroid/os/StrictMode$StrictModeDiskReadViolation; +Landroid/os/StrictMode$StrictModeDiskWriteViolation; +Landroid/os/StrictMode$StrictModeViolation; +Landroid/os/StrictMode$ThreadPolicy$Builder; +Landroid/os/StrictMode$ThreadPolicy; +Landroid/os/StrictMode$ThreadSpanState; +Landroid/os/StrictMode$ViolationInfo$1; +Landroid/os/StrictMode$ViolationInfo; +Landroid/os/StrictMode$VmPolicy$Builder; +Landroid/os/StrictMode$VmPolicy; +Landroid/os/StrictMode; +Landroid/os/SystemClock; +Landroid/os/SystemProperties; +Landroid/os/SystemVibrator; +Landroid/os/Trace; +Landroid/os/UEventObserver; +Landroid/os/UserHandle$1; +Landroid/os/UserHandle; +Landroid/os/UserManager; +Landroid/os/Vibrator; +Landroid/os/VintfObject; +Landroid/os/VintfRuntimeInfo; +Landroid/os/WorkSource$1; +Landroid/os/ZygoteProcess; +Landroid/os/ZygoteStartFailedEx; +Landroid/os/health/SystemHealthManager; +Landroid/os/storage/IObbActionListener$Stub; +Landroid/os/storage/IObbActionListener; +Landroid/os/storage/IStorageManager$Stub$Proxy; +Landroid/os/storage/IStorageManager$Stub; +Landroid/os/storage/IStorageManager; +Landroid/os/storage/StorageManager$ObbActionListener; +Landroid/os/storage/StorageManager; +Landroid/os/storage/StorageVolume$1; +Landroid/os/storage/StorageVolume; +Landroid/os/storage/VolumeInfo$1; +Landroid/os/storage/VolumeInfo$2; +Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener; +Landroid/preference/PreferenceManager; +Landroid/print/PrintManager; +Landroid/provider/-$Lambda$a7Jyr6j_Mb70hHJ2ssL1AAhKh4c; +Landroid/provider/-$Lambda$asz6VwQ86PPY-v8JLMb7rx-pSqg; +Landroid/provider/BaseColumns; +Landroid/provider/ContactsContract$CommonDataKinds$BaseTypes; +Landroid/provider/ContactsContract$CommonDataKinds$CommonColumns; +Landroid/provider/ContactsContract$ContactCounts; +Landroid/provider/ContactsContract$ContactNameColumns; +Landroid/provider/ContactsContract$ContactOptionsColumns; +Landroid/provider/ContactsContract$ContactStatusColumns; +Landroid/provider/ContactsContract$ContactsColumns; +Landroid/provider/ContactsContract$DataColumns; +Landroid/provider/ContactsContract$DataColumnsWithJoins; +Landroid/provider/ContactsContract$DataUsageStatColumns; +Landroid/provider/ContactsContract$RawContactsColumns; +Landroid/provider/ContactsContract$StatusColumns; +Landroid/provider/FontsContract$1; +Landroid/provider/FontsContract; +Landroid/provider/MediaStore$MediaColumns; +Landroid/provider/Settings$ContentProviderHolder; +Landroid/provider/Settings$GenerationTracker; +Landroid/provider/Settings$Global; +Landroid/provider/Settings$NameValueCache; +Landroid/provider/Settings$NameValueTable; +Landroid/provider/Settings$Secure; +Landroid/provider/Settings$SettingNotFoundException; +Landroid/provider/Settings$System$1; +Landroid/provider/Settings$System$2; +Landroid/provider/Settings$System$3; +Landroid/provider/Settings$System$4; +Landroid/provider/Settings$System$5; +Landroid/provider/Settings$System$6; +Landroid/provider/Settings$System$7; +Landroid/provider/Settings$System$8; +Landroid/provider/Settings$System$9; +Landroid/provider/Settings$System$DiscreteValueValidator; +Landroid/provider/Settings$System$InclusiveFloatRangeValidator; +Landroid/provider/Settings$System$InclusiveIntegerRangeValidator; +Landroid/provider/Settings$System$Validator; +Landroid/provider/Settings$System; +Landroid/provider/Settings; +Landroid/renderscript/RenderScriptCacheDir; +Landroid/security/IKeystoreService$Stub$Proxy; +Landroid/security/IKeystoreService$Stub; +Landroid/security/IKeystoreService; +Landroid/security/KeyStore; +Landroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider; +Landroid/security/keystore/AndroidKeyStoreProvider; +Landroid/security/net/config/ApplicationConfig; +Landroid/security/net/config/CertificateSource; +Landroid/security/net/config/CertificatesEntryRef; +Landroid/security/net/config/ConfigNetworkSecurityPolicy; +Landroid/security/net/config/ConfigSource; +Landroid/security/net/config/DirectoryCertificateSource$1; +Landroid/security/net/config/DirectoryCertificateSource$3; +Landroid/security/net/config/DirectoryCertificateSource$CertSelector; +Landroid/security/net/config/DirectoryCertificateSource; +Landroid/security/net/config/KeyStoreCertificateSource; +Landroid/security/net/config/KeyStoreConfigSource; +Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource; +Landroid/security/net/config/ManifestConfigSource; +Landroid/security/net/config/NetworkSecurityConfig$1; +Landroid/security/net/config/NetworkSecurityConfig$Builder; +Landroid/security/net/config/NetworkSecurityConfig; +Landroid/security/net/config/NetworkSecurityConfigProvider; +Landroid/security/net/config/NetworkSecurityTrustManager; +Landroid/security/net/config/PinSet; +Landroid/security/net/config/RootTrustManager; +Landroid/security/net/config/RootTrustManagerFactorySpi; +Landroid/security/net/config/SystemCertificateSource$NoPreloadHolder; +Landroid/security/net/config/SystemCertificateSource; +Landroid/security/net/config/TrustedCertificateStoreAdapter; +Landroid/security/net/config/UserCertificateSource; +Landroid/security/net/config/XmlConfigSource$ParserException; +Landroid/security/net/config/XmlConfigSource; +Landroid/service/notification/Condition$1; +Landroid/service/notification/INotificationListener$Stub; +Landroid/service/notification/INotificationListener; +Landroid/service/notification/IStatusBarNotificationHolder$Stub; +Landroid/service/notification/IStatusBarNotificationHolder; +Landroid/service/notification/NotificationListenerService$MyHandler; +Landroid/service/notification/NotificationListenerService$NotificationListenerWrapper; +Landroid/service/notification/NotificationListenerService$RankingMap$1; +Landroid/service/notification/NotificationListenerService; +Landroid/service/notification/NotificationRankingUpdate$1; +Landroid/service/notification/StatusBarNotification$1; +Landroid/service/notification/ZenModeConfig$ZenRule$1; +Landroid/service/oemlock/OemLockManager; +Landroid/service/persistentdata/PersistentDataBlockManager; +Landroid/service/vr/IVrManager$Stub; +Landroid/service/vr/IVrManager; +Landroid/service/vr/IVrStateCallbacks$Stub; +Landroid/service/vr/IVrStateCallbacks; +Landroid/system/ErrnoException; +Landroid/system/GaiException; +Landroid/system/NetlinkSocketAddress; +Landroid/system/Os; +Landroid/system/OsConstants; +Landroid/system/PacketSocketAddress; +Landroid/system/StructAddrinfo; +Landroid/system/StructFlock; +Landroid/system/StructGroupReq; +Landroid/system/StructGroupSourceReq; +Landroid/system/StructIfaddrs; +Landroid/system/StructLinger; +Landroid/system/StructPasswd; +Landroid/system/StructPollfd; +Landroid/system/StructStat; +Landroid/system/StructStatVfs; +Landroid/system/StructTimespec; +Landroid/system/StructTimeval; +Landroid/system/StructUcred; +Landroid/system/StructUtsname; +Landroid/system/UnixSocketAddress; +Landroid/telecom/DisconnectCause$1; +Landroid/telecom/Log$1; +Landroid/telecom/PhoneAccount$1; +Landroid/telecom/PhoneAccountHandle$1; +Landroid/telecom/TelecomManager; +Landroid/telephony/CarrierConfigManager; +Landroid/telephony/CellIdentityLte$1; +Landroid/telephony/CellInfo$1; +Landroid/telephony/CellInfoLte$1; +Landroid/telephony/CellSignalStrengthLte$1; +Landroid/telephony/PhoneStateListener$1; +Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub; +Landroid/telephony/PhoneStateListener; +Landroid/telephony/Rlog; +Landroid/telephony/ServiceState$1; +Landroid/telephony/SignalStrength$1; +Landroid/telephony/SubscriptionInfo$1; +Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1; +Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$2; +Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener; +Landroid/telephony/SubscriptionManager; +Landroid/telephony/TelephonyManager; +Landroid/telephony/euicc/EuiccManager; +Landroid/text/AndroidBidi; +Landroid/text/AndroidCharacter; +Landroid/text/Annotation; +Landroid/text/BoringLayout$Metrics; +Landroid/text/BoringLayout; +Landroid/text/ClipboardManager; +Landroid/text/DynamicLayout$ChangeWatcher; +Landroid/text/DynamicLayout; +Landroid/text/Editable$Factory; +Landroid/text/Editable; +Landroid/text/FontConfig$Alias; +Landroid/text/FontConfig$Family; +Landroid/text/FontConfig$Font; +Landroid/text/FontConfig; +Landroid/text/GetChars; +Landroid/text/GraphicsOperations; +Landroid/text/Html; +Landroid/text/HtmlToSpannedConverter$Href; +Landroid/text/Hyphenator$HyphenationData; +Landroid/text/Hyphenator; +Landroid/text/InputFilter; +Landroid/text/InputType; +Landroid/text/Layout$Alignment; +Landroid/text/Layout$Directions; +Landroid/text/Layout$Ellipsizer; +Landroid/text/Layout$SpannedEllipsizer; +Landroid/text/Layout; +Landroid/text/MeasuredText; +Landroid/text/NoCopySpan$Concrete; +Landroid/text/NoCopySpan; +Landroid/text/PackedIntVector; +Landroid/text/PackedObjectVector; +Landroid/text/ParcelableSpan; +Landroid/text/Selection$END; +Landroid/text/Selection$START; +Landroid/text/Selection; +Landroid/text/SpanSet; +Landroid/text/SpanWatcher; +Landroid/text/Spannable$Factory; +Landroid/text/Spannable; +Landroid/text/SpannableString; +Landroid/text/SpannableStringBuilder; +Landroid/text/SpannableStringInternal; +Landroid/text/Spanned; +Landroid/text/SpannedString; +Landroid/text/StaticLayout$Builder; +Landroid/text/StaticLayout$LineBreaks; +Landroid/text/StaticLayout; +Landroid/text/TextDirectionHeuristic; +Landroid/text/TextDirectionHeuristics$AnyStrong; +Landroid/text/TextDirectionHeuristics$FirstStrong; +Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm; +Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl; +Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal; +Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale; +Landroid/text/TextDirectionHeuristics; +Landroid/text/TextLine$DecorationInfo; +Landroid/text/TextLine; +Landroid/text/TextPaint; +Landroid/text/TextUtils$1; +Landroid/text/TextUtils$EllipsizeCallback; +Landroid/text/TextUtils$SimpleStringSplitter; +Landroid/text/TextUtils$StringSplitter; +Landroid/text/TextUtils$TruncateAt; +Landroid/text/TextUtils; +Landroid/text/TextWatcher; +Landroid/text/format/Time$TimeCalculator; +Landroid/text/method/AllCapsTransformationMethod; +Landroid/text/method/ArrowKeyMovementMethod; +Landroid/text/method/BaseKeyListener; +Landroid/text/method/BaseMovementMethod; +Landroid/text/method/KeyListener; +Landroid/text/method/MetaKeyKeyListener; +Landroid/text/method/MovementMethod; +Landroid/text/method/PasswordTransformationMethod; +Landroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence; +Landroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence; +Landroid/text/method/ReplacementTransformationMethod; +Landroid/text/method/SingleLineTransformationMethod; +Landroid/text/method/TextKeyListener$Capitalize; +Landroid/text/method/TextKeyListener; +Landroid/text/method/TransformationMethod2; +Landroid/text/method/TransformationMethod; +Landroid/text/style/AlignmentSpan; +Landroid/text/style/CharacterStyle; +Landroid/text/style/EasyEditSpan; +Landroid/text/style/ForegroundColorSpan; +Landroid/text/style/LeadingMarginSpan; +Landroid/text/style/LineBackgroundSpan; +Landroid/text/style/LineHeightSpan; +Landroid/text/style/MetricAffectingSpan; +Landroid/text/style/ParagraphStyle; +Landroid/text/style/ReplacementSpan; +Landroid/text/style/SpellCheckSpan; +Landroid/text/style/StyleSpan; +Landroid/text/style/SuggestionSpan; +Landroid/text/style/TabStopSpan; +Landroid/text/style/TextAppearanceSpan; +Landroid/text/style/URLSpan; +Landroid/text/style/UnderlineSpan; +Landroid/text/style/UpdateAppearance; +Landroid/text/style/UpdateLayout; +Landroid/text/style/WrapTogetherSpan; +Landroid/transition/AutoTransition; +Landroid/transition/ChangeBounds$1; +Landroid/transition/ChangeBounds$2; +Landroid/transition/ChangeBounds$3; +Landroid/transition/ChangeBounds$4; +Landroid/transition/ChangeBounds$5; +Landroid/transition/ChangeBounds$6; +Landroid/transition/ChangeBounds; +Landroid/transition/ChangeClipBounds; +Landroid/transition/ChangeImageTransform$1; +Landroid/transition/ChangeImageTransform$2; +Landroid/transition/ChangeImageTransform; +Landroid/transition/ChangeTransform$1; +Landroid/transition/ChangeTransform$2; +Landroid/transition/ChangeTransform; +Landroid/transition/Fade; +Landroid/transition/PathMotion; +Landroid/transition/Scene; +Landroid/transition/Transition$1; +Landroid/transition/Transition; +Landroid/transition/TransitionInflater; +Landroid/transition/TransitionManager; +Landroid/transition/TransitionSet; +Landroid/transition/TransitionValuesMaps; +Landroid/transition/Visibility; +Landroid/util/AndroidException; +Landroid/util/AndroidRuntimeException; +Landroid/util/ArrayMap$1; +Landroid/util/ArrayMap; +Landroid/util/ArraySet$1; +Landroid/util/ArraySet; +Landroid/util/AtomicFile; +Landroid/util/AttributeSet; +Landroid/util/Base64$Coder; +Landroid/util/Base64$Decoder; +Landroid/util/Base64$Encoder; +Landroid/util/Base64; +Landroid/util/ContainerHelpers; +Landroid/util/DebugUtils; +Landroid/util/DisplayMetrics; +Landroid/util/EventLog$Event; +Landroid/util/EventLog; +Landroid/util/FloatProperty; +Landroid/util/IntArray; +Landroid/util/IntProperty; +Landroid/util/Log$1; +Landroid/util/Log$ImmediateLogWriter; +Landroid/util/Log$TerribleFailureHandler; +Landroid/util/Log; +Landroid/util/LogPrinter; +Landroid/util/LongArray; +Landroid/util/LongSparseArray; +Landroid/util/LongSparseLongArray; +Landroid/util/LruCache; +Landroid/util/MapCollections$ArrayIterator; +Landroid/util/MapCollections$EntrySet; +Landroid/util/MapCollections$KeySet; +Landroid/util/MapCollections$MapIterator; +Landroid/util/MapCollections$ValuesCollection; +Landroid/util/MapCollections; +Landroid/util/MathUtils; +Landroid/util/MemoryIntArray$1; +Landroid/util/MemoryIntArray; +Landroid/util/MergedConfiguration$1; +Landroid/util/MergedConfiguration; +Landroid/util/MutableInt; +Landroid/util/MutableLong; +Landroid/util/Pair; +Landroid/util/PathParser$PathData; +Landroid/util/PathParser; +Landroid/util/Pools$Pool; +Landroid/util/Pools$SimplePool; +Landroid/util/Pools$SynchronizedPool; +Landroid/util/Printer; +Landroid/util/Property; +Landroid/util/Range; +Landroid/util/Rational; +Landroid/util/Singleton; +Landroid/util/Size; +Landroid/util/SizeF; +Landroid/util/Slog; +Landroid/util/SparseArray; +Landroid/util/SparseBooleanArray; +Landroid/util/SparseIntArray; +Landroid/util/SparseLongArray; +Landroid/util/StateSet; +Landroid/util/SuperNotCalledException; +Landroid/util/TimingLogger; +Landroid/util/TimingsTraceLog; +Landroid/util/TypedValue; +Landroid/util/Xml; +Landroid/util/jar/StrictJarFile; +Landroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1; +Landroid/view/-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk; +Landroid/view/-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8; +Landroid/view/AbsSavedState$1; +Landroid/view/AbsSavedState$2; +Landroid/view/AbsSavedState; +Landroid/view/AccessibilityInteractionController$AccessibilityNodePrefetcher; +Landroid/view/AccessibilityInteractionController$PrivateHandler; +Landroid/view/AccessibilityInteractionController; +Landroid/view/ActionMode$Callback; +Landroid/view/ActionMode; +Landroid/view/ActionProvider$SubUiVisibilityListener; +Landroid/view/ActionProvider; +Landroid/view/Choreographer$1; +Landroid/view/Choreographer$2; +Landroid/view/Choreographer$3; +Landroid/view/Choreographer$CallbackQueue; +Landroid/view/Choreographer$CallbackRecord; +Landroid/view/Choreographer$FrameCallback; +Landroid/view/Choreographer$FrameDisplayEventReceiver; +Landroid/view/Choreographer$FrameHandler; +Landroid/view/Choreographer; +Landroid/view/ContextMenu$ContextMenuInfo; +Landroid/view/ContextMenu; +Landroid/view/ContextThemeWrapper; +Landroid/view/Display$HdrCapabilities$1; +Landroid/view/Display$HdrCapabilities; +Landroid/view/Display$Mode$1; +Landroid/view/Display$Mode; +Landroid/view/Display; +Landroid/view/DisplayAdjustments; +Landroid/view/DisplayEventReceiver; +Landroid/view/DisplayInfo$1; +Landroid/view/DisplayInfo; +Landroid/view/DisplayListCanvas; +Landroid/view/FallbackEventHandler; +Landroid/view/FocusFinder$1; +Landroid/view/FocusFinder$FocusSorter; +Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter; +Landroid/view/FocusFinder$UserSpecifiedFocusComparator; +Landroid/view/FocusFinder; +Landroid/view/FrameInfo; +Landroid/view/FrameMetrics; +Landroid/view/FrameMetricsObserver; +Landroid/view/FrameStats; +Landroid/view/GestureDetector$GestureHandler; +Landroid/view/GestureDetector$OnContextClickListener; +Landroid/view/GestureDetector$OnDoubleTapListener; +Landroid/view/GestureDetector$OnGestureListener; +Landroid/view/GestureDetector$SimpleOnGestureListener; +Landroid/view/GestureDetector; +Landroid/view/Gravity; +Landroid/view/HandlerActionQueue$HandlerAction; +Landroid/view/HandlerActionQueue; +Landroid/view/HardwareLayer; +Landroid/view/IGraphicsStats$Stub$Proxy; +Landroid/view/IGraphicsStats$Stub; +Landroid/view/IGraphicsStats; +Landroid/view/IGraphicsStatsCallback$Stub; +Landroid/view/IGraphicsStatsCallback; +Landroid/view/IRotationWatcher$Stub; +Landroid/view/IRotationWatcher; +Landroid/view/IWindow$Stub; +Landroid/view/IWindow; +Landroid/view/IWindowManager$Stub$Proxy; +Landroid/view/IWindowManager$Stub; +Landroid/view/IWindowManager; +Landroid/view/IWindowSession$Stub$Proxy; +Landroid/view/IWindowSession$Stub; +Landroid/view/IWindowSession; +Landroid/view/IWindowSessionCallback$Stub; +Landroid/view/IWindowSessionCallback; +Landroid/view/InflateException; +Landroid/view/InputChannel$1; +Landroid/view/InputChannel; +Landroid/view/InputDevice$1; +Landroid/view/InputDevice$MotionRange; +Landroid/view/InputDevice; +Landroid/view/InputEvent$1; +Landroid/view/InputEvent; +Landroid/view/InputEventConsistencyVerifier; +Landroid/view/InputEventReceiver; +Landroid/view/InputEventSender; +Landroid/view/InputQueue$Callback; +Landroid/view/InputQueue$FinishedInputEventCallback; +Landroid/view/InputQueue; +Landroid/view/KeyCharacterMap$1; +Landroid/view/KeyCharacterMap$FallbackAction; +Landroid/view/KeyCharacterMap; +Landroid/view/KeyEvent$1; +Landroid/view/KeyEvent$Callback; +Landroid/view/KeyEvent$DispatcherState; +Landroid/view/KeyEvent; +Landroid/view/LayoutInflater$Factory2; +Landroid/view/LayoutInflater$Factory; +Landroid/view/LayoutInflater$FactoryMerger; +Landroid/view/LayoutInflater$Filter; +Landroid/view/LayoutInflater; +Landroid/view/Menu; +Landroid/view/MenuInflater$MenuState; +Landroid/view/MenuInflater; +Landroid/view/MenuItem$OnActionExpandListener; +Landroid/view/MenuItem$OnMenuItemClickListener; +Landroid/view/MenuItem; +Landroid/view/MotionEvent$1; +Landroid/view/MotionEvent$PointerCoords; +Landroid/view/MotionEvent$PointerProperties; +Landroid/view/MotionEvent; +Landroid/view/OrientationEventListener$SensorEventListenerImpl; +Landroid/view/OrientationEventListener; +Landroid/view/PointerIcon$1; +Landroid/view/PointerIcon; +Landroid/view/RecordingCanvas; +Landroid/view/RenderNode$NoImagePreloadHolder; +Landroid/view/RenderNode; +Landroid/view/RenderNodeAnimator$1; +Landroid/view/RenderNodeAnimator; +Landroid/view/RenderNodeAnimatorSetHelper; +Landroid/view/ScaleGestureDetector$1; +Landroid/view/ScaleGestureDetector$OnScaleGestureListener; +Landroid/view/ScaleGestureDetector$SimpleOnScaleGestureListener; +Landroid/view/ScaleGestureDetector; +Landroid/view/SearchEvent; +Landroid/view/SubMenu; +Landroid/view/Surface$1; +Landroid/view/Surface$CompatibleCanvas; +Landroid/view/Surface$OutOfResourcesException; +Landroid/view/Surface; +Landroid/view/SurfaceControl$PhysicalDisplayInfo; +Landroid/view/SurfaceControl; +Landroid/view/SurfaceHolder$Callback2; +Landroid/view/SurfaceHolder$Callback; +Landroid/view/SurfaceHolder; +Landroid/view/SurfaceSession; +Landroid/view/SurfaceView$1; +Landroid/view/SurfaceView$2; +Landroid/view/SurfaceView$3; +Landroid/view/SurfaceView$SurfaceControlWithBackground; +Landroid/view/SurfaceView; +Landroid/view/TextureView$1; +Landroid/view/TextureView$SurfaceTextureListener; +Landroid/view/TextureView; +Landroid/view/ThreadedRenderer$DrawCallbacks; +Landroid/view/ThreadedRenderer$ProcessInitializer$1; +Landroid/view/ThreadedRenderer$ProcessInitializer; +Landroid/view/ThreadedRenderer; +Landroid/view/TouchDelegate; +Landroid/view/VelocityTracker$Estimator; +Landroid/view/VelocityTracker; +Landroid/view/View$10; +Landroid/view/View$11; +Landroid/view/View$12; +Landroid/view/View$1; +Landroid/view/View$2; +Landroid/view/View$3; +Landroid/view/View$4; +Landroid/view/View$5; +Landroid/view/View$6; +Landroid/view/View$7; +Landroid/view/View$8; +Landroid/view/View$9; +Landroid/view/View$AccessibilityDelegate; +Landroid/view/View$AttachInfo$Callbacks; +Landroid/view/View$AttachInfo; +Landroid/view/View$BaseSavedState$1; +Landroid/view/View$BaseSavedState; +Landroid/view/View$CheckForTap; +Landroid/view/View$ForegroundInfo; +Landroid/view/View$ListenerInfo; +Landroid/view/View$MatchLabelForPredicate; +Landroid/view/View$MeasureSpec; +Landroid/view/View$OnApplyWindowInsetsListener; +Landroid/view/View$OnAttachStateChangeListener; +Landroid/view/View$OnClickListener; +Landroid/view/View$OnCreateContextMenuListener; +Landroid/view/View$OnDragListener; +Landroid/view/View$OnFocusChangeListener; +Landroid/view/View$OnHoverListener; +Landroid/view/View$OnKeyListener; +Landroid/view/View$OnLayoutChangeListener; +Landroid/view/View$OnLongClickListener; +Landroid/view/View$OnSystemUiVisibilityChangeListener; +Landroid/view/View$OnTouchListener; +Landroid/view/View$PerformClick; +Landroid/view/View$ScrollabilityCache; +Landroid/view/View$SendViewScrolledAccessibilityEvent; +Landroid/view/View$TooltipInfo; +Landroid/view/View$TransformationInfo; +Landroid/view/View$UnsetPressedState; +Landroid/view/View$VisibilityChangeForAutofillHandler; +Landroid/view/View; +Landroid/view/ViewConfiguration; +Landroid/view/ViewDebug$HierarchyHandler; +Landroid/view/ViewGroup$1; +Landroid/view/ViewGroup$2; +Landroid/view/ViewGroup$LayoutParams; +Landroid/view/ViewGroup$MarginLayoutParams; +Landroid/view/ViewGroup$OnHierarchyChangeListener; +Landroid/view/ViewGroup$TouchTarget; +Landroid/view/ViewGroup; +Landroid/view/ViewGroupOverlay; +Landroid/view/ViewManager; +Landroid/view/ViewOutlineProvider$1; +Landroid/view/ViewOutlineProvider$2; +Landroid/view/ViewOutlineProvider$3; +Landroid/view/ViewOutlineProvider; +Landroid/view/ViewOverlay$OverlayViewGroup; +Landroid/view/ViewOverlay; +Landroid/view/ViewParent; +Landroid/view/ViewPropertyAnimator$1; +Landroid/view/ViewPropertyAnimator$AnimatorEventListener; +Landroid/view/ViewPropertyAnimator$NameValuesHolder; +Landroid/view/ViewPropertyAnimator$PropertyBundle; +Landroid/view/ViewPropertyAnimator; +Landroid/view/ViewRootImpl$1; +Landroid/view/ViewRootImpl$4; +Landroid/view/ViewRootImpl$AccessibilityInteractionConnection; +Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager; +Landroid/view/ViewRootImpl$ActivityConfigCallback; +Landroid/view/ViewRootImpl$AsyncInputStage; +Landroid/view/ViewRootImpl$ConfigChangedCallback; +Landroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable; +Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable; +Landroid/view/ViewRootImpl$EarlyPostImeInputStage; +Landroid/view/ViewRootImpl$HighContrastTextManager; +Landroid/view/ViewRootImpl$ImeInputStage; +Landroid/view/ViewRootImpl$InputStage; +Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; +Landroid/view/ViewRootImpl$NativePostImeInputStage; +Landroid/view/ViewRootImpl$NativePreImeInputStage; +Landroid/view/ViewRootImpl$QueuedInputEvent; +Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent; +Landroid/view/ViewRootImpl$SyntheticInputStage; +Landroid/view/ViewRootImpl$SyntheticJoystickHandler; +Landroid/view/ViewRootImpl$SyntheticKeyboardHandler; +Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler$1; +Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler; +Landroid/view/ViewRootImpl$SyntheticTrackballHandler; +Landroid/view/ViewRootImpl$SystemUiVisibilityInfo; +Landroid/view/ViewRootImpl$TrackballAxis; +Landroid/view/ViewRootImpl$TraversalRunnable; +Landroid/view/ViewRootImpl$ViewPostImeInputStage; +Landroid/view/ViewRootImpl$ViewPreImeInputStage; +Landroid/view/ViewRootImpl$ViewRootHandler; +Landroid/view/ViewRootImpl$W; +Landroid/view/ViewRootImpl$WindowInputEventReceiver; +Landroid/view/ViewRootImpl$WindowStoppedCallback; +Landroid/view/ViewRootImpl; +Landroid/view/ViewStructure; +Landroid/view/ViewStub; +Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access; +Landroid/view/ViewTreeObserver$CopyOnWriteArray; +Landroid/view/ViewTreeObserver$InternalInsetsInfo; +Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener; +Landroid/view/ViewTreeObserver$OnGlobalLayoutListener; +Landroid/view/ViewTreeObserver$OnPreDrawListener; +Landroid/view/ViewTreeObserver$OnScrollChangedListener; +Landroid/view/ViewTreeObserver$OnTouchModeChangeListener; +Landroid/view/ViewTreeObserver; +Landroid/view/Window$Callback; +Landroid/view/Window$OnWindowDismissedCallback; +Landroid/view/Window$OnWindowSwipeDismissedCallback; +Landroid/view/Window$WindowControllerCallback; +Landroid/view/Window; +Landroid/view/WindowAnimationFrameStats$1; +Landroid/view/WindowAnimationFrameStats; +Landroid/view/WindowCallbacks; +Landroid/view/WindowContentFrameStats$1; +Landroid/view/WindowContentFrameStats; +Landroid/view/WindowInsets; +Landroid/view/WindowLeaked; +Landroid/view/WindowManager$BadTokenException; +Landroid/view/WindowManager$LayoutParams$1; +Landroid/view/WindowManager$LayoutParams; +Landroid/view/WindowManager; +Landroid/view/WindowManagerGlobal$1; +Landroid/view/WindowManagerGlobal$2; +Landroid/view/WindowManagerGlobal; +Landroid/view/WindowManagerImpl; +Landroid/view/accessibility/-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1; +Landroid/view/accessibility/AccessibilityEvent$1; +Landroid/view/accessibility/AccessibilityEvent; +Landroid/view/accessibility/AccessibilityEventSource; +Landroid/view/accessibility/AccessibilityManager$1; +Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; +Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener; +Landroid/view/accessibility/AccessibilityManager$MyCallback; +Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener; +Landroid/view/accessibility/AccessibilityManager; +Landroid/view/accessibility/AccessibilityNodeInfo$1; +Landroid/view/accessibility/AccessibilityNodeInfo; +Landroid/view/accessibility/AccessibilityNodeProvider; +Landroid/view/accessibility/AccessibilityRecord; +Landroid/view/accessibility/CaptioningManager$1; +Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener; +Landroid/view/accessibility/CaptioningManager$MyContentObserver; +Landroid/view/accessibility/CaptioningManager; +Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub; +Landroid/view/accessibility/IAccessibilityInteractionConnection; +Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy; +Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub; +Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; +Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy; +Landroid/view/accessibility/IAccessibilityManager$Stub; +Landroid/view/accessibility/IAccessibilityManager; +Landroid/view/accessibility/IAccessibilityManagerClient$Stub; +Landroid/view/accessibility/IAccessibilityManagerClient; +Landroid/view/animation/AccelerateDecelerateInterpolator; +Landroid/view/animation/AccelerateInterpolator; +Landroid/view/animation/AlphaAnimation; +Landroid/view/animation/Animation$1; +Landroid/view/animation/Animation$2; +Landroid/view/animation/Animation$3; +Landroid/view/animation/Animation$AnimationListener; +Landroid/view/animation/Animation$Description; +Landroid/view/animation/Animation; +Landroid/view/animation/AnimationSet; +Landroid/view/animation/AnimationUtils$1; +Landroid/view/animation/AnimationUtils$AnimationState; +Landroid/view/animation/AnimationUtils; +Landroid/view/animation/BaseInterpolator; +Landroid/view/animation/DecelerateInterpolator; +Landroid/view/animation/Interpolator; +Landroid/view/animation/LayoutAnimationController; +Landroid/view/animation/LinearInterpolator; +Landroid/view/animation/OvershootInterpolator; +Landroid/view/animation/PathInterpolator; +Landroid/view/animation/Transformation; +Landroid/view/animation/TranslateAnimation; +Landroid/view/autofill/AutofillId$1; +Landroid/view/autofill/AutofillManager$AutofillClient; +Landroid/view/autofill/AutofillManager$AutofillManagerClient; +Landroid/view/autofill/AutofillManager; +Landroid/view/autofill/AutofillValue$1; +Landroid/view/autofill/IAutoFillManager$Stub$Proxy; +Landroid/view/autofill/IAutoFillManager$Stub; +Landroid/view/autofill/IAutoFillManager; +Landroid/view/autofill/IAutoFillManagerClient$Stub; +Landroid/view/autofill/IAutoFillManagerClient; +Landroid/view/autofill/IAutofillWindowPresenter; +Landroid/view/inputmethod/BaseInputConnection; +Landroid/view/inputmethod/ComposingText; +Landroid/view/inputmethod/CursorAnchorInfo$Builder; +Landroid/view/inputmethod/EditorInfo$1; +Landroid/view/inputmethod/EditorInfo; +Landroid/view/inputmethod/ExtractedText$1; +Landroid/view/inputmethod/InputConnection; +Landroid/view/inputmethod/InputMethodInfo$1; +Landroid/view/inputmethod/InputMethodManager$1; +Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper; +Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback; +Landroid/view/inputmethod/InputMethodManager$H; +Landroid/view/inputmethod/InputMethodManager$ImeInputEventSender; +Landroid/view/inputmethod/InputMethodManager$PendingEvent; +Landroid/view/inputmethod/InputMethodManager; +Landroid/view/inputmethod/InputMethodSubtype$1; +Landroid/view/inputmethod/InputMethodSubtypeArray; +Landroid/view/textclassifier/TextClassificationManager; +Landroid/view/textservice/TextServicesManager; +Landroid/webkit/IWebViewUpdateService$Stub$Proxy; +Landroid/webkit/IWebViewUpdateService$Stub; +Landroid/webkit/IWebViewUpdateService; +Landroid/webkit/WebSyncManager; +Landroid/webkit/WebViewFactory$MissingWebViewPackageException; +Landroid/webkit/WebViewFactory; +Landroid/webkit/WebViewLibraryLoader; +Landroid/webkit/WebViewProviderResponse$1; +Landroid/widget/-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4$1; +Landroid/widget/-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4; +Landroid/widget/AbsListView$AdapterDataSetObserver; +Landroid/widget/AbsListView$LayoutParams; +Landroid/widget/AbsListView$OnScrollListener; +Landroid/widget/AbsListView$RecycleBin; +Landroid/widget/AbsListView$SavedState$1; +Landroid/widget/AbsListView; +Landroid/widget/AbsSeekBar; +Landroid/widget/AbsoluteLayout; +Landroid/widget/ActionMenuPresenter$1; +Landroid/widget/ActionMenuPresenter$2; +Landroid/widget/ActionMenuPresenter$OverflowMenuButton$1; +Landroid/widget/ActionMenuPresenter$OverflowMenuButton; +Landroid/widget/ActionMenuPresenter$PopupPresenterCallback; +Landroid/widget/ActionMenuPresenter; +Landroid/widget/ActionMenuView$ActionMenuChildView; +Landroid/widget/ActionMenuView$LayoutParams; +Landroid/widget/ActionMenuView$MenuBuilderCallback; +Landroid/widget/ActionMenuView$OnMenuItemClickListener; +Landroid/widget/ActionMenuView; +Landroid/widget/Adapter; +Landroid/widget/AdapterView$AdapterDataSetObserver; +Landroid/widget/AdapterView$OnItemClickListener; +Landroid/widget/AdapterView$OnItemSelectedListener; +Landroid/widget/AdapterView; +Landroid/widget/ArrayAdapter; +Landroid/widget/AutoCompleteTextView$DropDownItemClickListener; +Landroid/widget/AutoCompleteTextView$MyWatcher; +Landroid/widget/AutoCompleteTextView$PassThroughClickListener; +Landroid/widget/AutoCompleteTextView; +Landroid/widget/BaseAdapter; +Landroid/widget/Button; +Landroid/widget/CheckBox; +Landroid/widget/Checkable; +Landroid/widget/CompoundButton$OnCheckedChangeListener; +Landroid/widget/EdgeEffect; +Landroid/widget/EditText; +Landroid/widget/Editor$1; +Landroid/widget/Editor$2; +Landroid/widget/Editor$Blink; +Landroid/widget/Editor$CursorAnchorInfoNotifier; +Landroid/widget/Editor$CursorController; +Landroid/widget/Editor$InputContentType; +Landroid/widget/Editor$InputMethodState; +Landroid/widget/Editor$InsertionPointCursorController; +Landroid/widget/Editor$PositionListener; +Landroid/widget/Editor$ProcessTextIntentActionsHandler; +Landroid/widget/Editor$SelectionModifierCursorController; +Landroid/widget/Editor$SpanController; +Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator; +Landroid/widget/Editor$SuggestionHelper; +Landroid/widget/Editor$TextRenderNode; +Landroid/widget/Editor$TextViewPositionListener; +Landroid/widget/Editor$UndoInputFilter; +Landroid/widget/Editor; +Landroid/widget/FastScroller$1; +Landroid/widget/FastScroller$2; +Landroid/widget/FastScroller$3; +Landroid/widget/FastScroller$4; +Landroid/widget/FastScroller$5; +Landroid/widget/FastScroller$6; +Landroid/widget/Filter$FilterListener; +Landroid/widget/Filterable; +Landroid/widget/ForwardingListener; +Landroid/widget/FrameLayout$LayoutParams; +Landroid/widget/FrameLayout; +Landroid/widget/GridLayout$1; +Landroid/widget/GridLayout$2; +Landroid/widget/GridLayout$3; +Landroid/widget/GridLayout$4; +Landroid/widget/GridLayout$5; +Landroid/widget/GridLayout$6$1; +Landroid/widget/GridLayout$6; +Landroid/widget/GridLayout$7; +Landroid/widget/GridLayout$8; +Landroid/widget/GridLayout$Alignment; +Landroid/widget/GridLayout$Arc; +Landroid/widget/GridLayout$Assoc; +Landroid/widget/GridLayout$Bounds; +Landroid/widget/GridLayout$Interval; +Landroid/widget/GridLayout$MutableInt; +Landroid/widget/GridLayout$PackedMap; +Landroid/widget/HorizontalScrollView$SavedState$1; +Landroid/widget/HorizontalScrollView; +Landroid/widget/ImageButton; +Landroid/widget/ImageView$ScaleType; +Landroid/widget/ImageView; +Landroid/widget/LinearLayout$LayoutParams; +Landroid/widget/LinearLayout; +Landroid/widget/ListAdapter; +Landroid/widget/ListPopupWindow$ListSelectorHider; +Landroid/widget/ListPopupWindow$PopupScrollListener; +Landroid/widget/ListPopupWindow$PopupTouchInterceptor; +Landroid/widget/ListPopupWindow$ResizePopupRunnable; +Landroid/widget/ListPopupWindow; +Landroid/widget/ListView$ArrowScrollFocusResult; +Landroid/widget/ListView$FixedViewInfo; +Landroid/widget/ListView; +Landroid/widget/OverScroller$SplineOverScroller; +Landroid/widget/OverScroller; +Landroid/widget/PopupWindow$1; +Landroid/widget/PopupWindow$2; +Landroid/widget/PopupWindow$OnDismissListener; +Landroid/widget/ProgressBar$1; +Landroid/widget/ProgressBar$AccessibilityEventSender; +Landroid/widget/ProgressBar$SavedState$1; +Landroid/widget/ProgressBar; +Landroid/widget/RelativeLayout$DependencyGraph$Node; +Landroid/widget/RelativeLayout$DependencyGraph; +Landroid/widget/RelativeLayout$LayoutParams; +Landroid/widget/RelativeLayout$TopToBottomLeftToRightComparator; +Landroid/widget/RelativeLayout; +Landroid/widget/RemoteViews$1; +Landroid/widget/RemoteViews$2; +Landroid/widget/RemoteViews$3; +Landroid/widget/RemoteViews$Action; +Landroid/widget/RemoteViews$BitmapCache; +Landroid/widget/RemoteViews$LayoutParamAction; +Landroid/widget/RemoteViews$MemoryUsageCounter; +Landroid/widget/RemoteViews$MutablePair; +Landroid/widget/RemoteViews$OnClickHandler; +Landroid/widget/RemoteViews$ReflectionAction; +Landroid/widget/RemoteViews$RemoteView; +Landroid/widget/RemoteViews$RuntimeAction; +Landroid/widget/RemoteViews$SetDrawableParameters; +Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback; +Landroid/widget/RtlSpacingHelper; +Landroid/widget/ScrollBarDrawable; +Landroid/widget/ScrollView; +Landroid/widget/Scroller$ViscousFluidInterpolator; +Landroid/widget/Scroller; +Landroid/widget/SectionIndexer; +Landroid/widget/SeekBar$OnSeekBarChangeListener; +Landroid/widget/SeekBar; +Landroid/widget/Space; +Landroid/widget/SpinnerAdapter; +Landroid/widget/Switch$1; +Landroid/widget/TextView$BufferType; +Landroid/widget/TextView$ChangeWatcher; +Landroid/widget/TextView$CharWrapper; +Landroid/widget/TextView$Drawables; +Landroid/widget/TextView$OnEditorActionListener; +Landroid/widget/TextView$SavedState$1; +Landroid/widget/TextView; +Landroid/widget/ThemedSpinnerAdapter; +Landroid/widget/Toolbar$1; +Landroid/widget/Toolbar$2; +Landroid/widget/Toolbar$ExpandedActionViewMenuPresenter; +Landroid/widget/Toolbar$LayoutParams; +Landroid/widget/Toolbar$OnMenuItemClickListener; +Landroid/widget/Toolbar$SavedState$1; +Landroid/widget/Toolbar; +Landroid/widget/ViewAnimator; +Landroid/widget/WrapperListAdapter; +Lcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet; +Lcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap; +Lcom/android/i18n/phonenumbers/MetadataLoader; +Lcom/android/i18n/phonenumbers/MetadataManager$1; +Lcom/android/i18n/phonenumbers/MetadataSource; +Lcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl; +Lcom/android/i18n/phonenumbers/RegexCache$LRUCache$1; +Lcom/android/i18n/phonenumbers/RegexCache$LRUCache; +Lcom/android/i18n/phonenumbers/RegexCache; +Lcom/android/i18n/phonenumbers/ShortNumbersRegionCodeSet; +Lcom/android/ims/ImsException; +Lcom/android/internal/R$styleable; +Lcom/android/internal/app/AlertController$AlertParams; +Lcom/android/internal/app/IAppOpsCallback$Stub; +Lcom/android/internal/app/IAppOpsCallback; +Lcom/android/internal/app/IAppOpsService$Stub$Proxy; +Lcom/android/internal/app/IAppOpsService$Stub; +Lcom/android/internal/app/IAppOpsService; +Lcom/android/internal/app/IBatteryStats$Stub$Proxy; +Lcom/android/internal/app/IBatteryStats$Stub; +Lcom/android/internal/app/IBatteryStats; +Lcom/android/internal/app/IVoiceInteractionManagerService$Stub; +Lcom/android/internal/app/IVoiceInteractionManagerService; +Lcom/android/internal/app/IVoiceInteractor$Stub; +Lcom/android/internal/app/IVoiceInteractor; +Lcom/android/internal/app/NightDisplayController$1; +Lcom/android/internal/app/NightDisplayController; +Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy; +Lcom/android/internal/appwidget/IAppWidgetService$Stub; +Lcom/android/internal/appwidget/IAppWidgetService; +Lcom/android/internal/content/NativeLibraryHelper; +Lcom/android/internal/content/ReferrerIntent$1; +Lcom/android/internal/content/ReferrerIntent; +Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState; +Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable; +Lcom/android/internal/logging/AndroidConfig; +Lcom/android/internal/logging/AndroidHandler$1; +Lcom/android/internal/logging/AndroidHandler; +Lcom/android/internal/logging/EventLogTags; +Lcom/android/internal/logging/MetricsLogger; +Lcom/android/internal/net/NetworkStatsFactory; +Lcom/android/internal/os/AndroidPrintStream; +Lcom/android/internal/os/BatteryStatsImpl$1; +Lcom/android/internal/os/BatteryStatsImpl$Clocks; +Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; +Lcom/android/internal/os/BatteryStatsImpl$Counter; +Lcom/android/internal/os/BatteryStatsImpl$DualTimer; +Lcom/android/internal/os/BatteryStatsImpl$DurationTimer; +Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; +Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray; +Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap; +Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; +Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; +Lcom/android/internal/os/BatteryStatsImpl$SystemClocks; +Lcom/android/internal/os/BatteryStatsImpl$TimeBase; +Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs; +Lcom/android/internal/os/BatteryStatsImpl$Timer; +Lcom/android/internal/os/BatteryStatsImpl$Uid$1; +Lcom/android/internal/os/BatteryStatsImpl$Uid$2; +Lcom/android/internal/os/BatteryStatsImpl$Uid$3; +Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; +Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; +Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; +Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor; +Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock; +Lcom/android/internal/os/BatteryStatsImpl$Uid; +Lcom/android/internal/os/BinderInternal$GcWatcher; +Lcom/android/internal/os/BinderInternal; +Lcom/android/internal/os/ClassLoaderFactory; +Lcom/android/internal/os/FuseAppLoop$1; +Lcom/android/internal/os/FuseAppLoop; +Lcom/android/internal/os/FuseUnavailableMountException; +Lcom/android/internal/os/HandlerCaller$Callback; +Lcom/android/internal/os/HandlerCaller$MyHandler; +Lcom/android/internal/os/HandlerCaller; +Lcom/android/internal/os/IResultReceiver$Stub$Proxy; +Lcom/android/internal/os/IResultReceiver$Stub; +Lcom/android/internal/os/IResultReceiver; +Lcom/android/internal/os/KernelMemoryBandwidthStats; +Lcom/android/internal/os/KernelUidCpuFreqTimeReader; +Lcom/android/internal/os/KernelUidCpuTimeReader; +Lcom/android/internal/os/KernelWakelockStats; +Lcom/android/internal/os/LoggingPrintStream$1; +Lcom/android/internal/os/LoggingPrintStream; +Lcom/android/internal/os/PowerProfile$CpuClusterKey; +Lcom/android/internal/os/RoSystemProperties; +Lcom/android/internal/os/RuntimeInit$1; +Lcom/android/internal/os/RuntimeInit$Arguments; +Lcom/android/internal/os/RuntimeInit$KillApplicationHandler; +Lcom/android/internal/os/RuntimeInit$LoggingHandler; +Lcom/android/internal/os/RuntimeInit$MethodAndArgsCaller; +Lcom/android/internal/os/RuntimeInit; +Lcom/android/internal/os/SomeArgs; +Lcom/android/internal/os/Zygote; +Lcom/android/internal/os/ZygoteConnection$Arguments; +Lcom/android/internal/os/ZygoteConnection; +Lcom/android/internal/os/ZygoteInit; +Lcom/android/internal/os/ZygoteServer; +Lcom/android/internal/policy/DecorContext; +Lcom/android/internal/policy/DecorView$1; +Lcom/android/internal/policy/DecorView$ColorViewAttributes; +Lcom/android/internal/policy/DecorView$ColorViewState; +Lcom/android/internal/policy/DecorView; +Lcom/android/internal/policy/PhoneFallbackEventHandler; +Lcom/android/internal/policy/PhoneLayoutInflater; +Lcom/android/internal/policy/PhoneWindow$1; +Lcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState$1; +Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; +Lcom/android/internal/policy/PhoneWindow$PhoneWindowMenuCallback; +Lcom/android/internal/policy/PhoneWindow$RotationWatcher$1; +Lcom/android/internal/policy/PhoneWindow$RotationWatcher; +Lcom/android/internal/policy/PhoneWindow; +Lcom/android/internal/telecom/ITelecomService$Stub$Proxy; +Lcom/android/internal/telecom/ITelecomService$Stub; +Lcom/android/internal/telecom/ITelecomService; +Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy; +Lcom/android/internal/telephony/ICarrierConfigLoader$Stub; +Lcom/android/internal/telephony/ICarrierConfigLoader; +Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub; +Lcom/android/internal/telephony/IOnSubscriptionsChangedListener; +Lcom/android/internal/telephony/IPhoneStateListener$Stub; +Lcom/android/internal/telephony/IPhoneStateListener; +Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy; +Lcom/android/internal/telephony/IPhoneSubInfo$Stub; +Lcom/android/internal/telephony/IPhoneSubInfo; +Lcom/android/internal/telephony/ISms$Stub; +Lcom/android/internal/telephony/ISms; +Lcom/android/internal/telephony/ISub$Stub$Proxy; +Lcom/android/internal/telephony/ISub$Stub; +Lcom/android/internal/telephony/ISub; +Lcom/android/internal/telephony/ITelephony$Stub$Proxy; +Lcom/android/internal/telephony/ITelephony$Stub; +Lcom/android/internal/telephony/ITelephony; +Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy; +Lcom/android/internal/telephony/ITelephonyRegistry$Stub; +Lcom/android/internal/telephony/ITelephonyRegistry; +Lcom/android/internal/telephony/PhoneConstants$State; +Lcom/android/internal/util/ArrayUtils; +Lcom/android/internal/util/BitUtils; +Lcom/android/internal/util/ExponentiallyBucketedHistogram; +Lcom/android/internal/util/FastMath; +Lcom/android/internal/util/FastPrintWriter$DummyWriter; +Lcom/android/internal/util/FastPrintWriter; +Lcom/android/internal/util/FastXmlSerializer; +Lcom/android/internal/util/GrowingArrayUtils; +Lcom/android/internal/util/IntPair; +Lcom/android/internal/util/LineBreakBufferedWriter; +Lcom/android/internal/util/Preconditions; +Lcom/android/internal/util/State; +Lcom/android/internal/util/StateMachine$LogRec; +Lcom/android/internal/util/StateMachine$LogRecords; +Lcom/android/internal/util/StateMachine$SmHandler$HaltingState; +Lcom/android/internal/util/StateMachine$SmHandler$QuittingState; +Lcom/android/internal/util/StateMachine$SmHandler$StateInfo; +Lcom/android/internal/util/StateMachine; +Lcom/android/internal/util/VirtualRefBasePtr; +Lcom/android/internal/util/XmlUtils$WriteMapCallback; +Lcom/android/internal/util/XmlUtils; +Lcom/android/internal/view/ActionBarPolicy; +Lcom/android/internal/view/IInputConnectionWrapper$MyHandler; +Lcom/android/internal/view/IInputConnectionWrapper; +Lcom/android/internal/view/IInputContext$Stub; +Lcom/android/internal/view/IInputContext; +Lcom/android/internal/view/IInputContextCallback$Stub; +Lcom/android/internal/view/IInputContextCallback; +Lcom/android/internal/view/IInputMethodClient$Stub; +Lcom/android/internal/view/IInputMethodClient; +Lcom/android/internal/view/IInputMethodManager$Stub$Proxy; +Lcom/android/internal/view/IInputMethodManager$Stub; +Lcom/android/internal/view/IInputMethodManager; +Lcom/android/internal/view/IInputMethodSession$Stub$Proxy; +Lcom/android/internal/view/IInputMethodSession$Stub; +Lcom/android/internal/view/IInputMethodSession; +Lcom/android/internal/view/InputBindResult$1; +Lcom/android/internal/view/InputBindResult; +Lcom/android/internal/view/RootViewSurfaceTaker; +Lcom/android/internal/view/SurfaceCallbackHelper$1; +Lcom/android/internal/view/SurfaceCallbackHelper; +Lcom/android/internal/view/animation/FallbackLUTInterpolator; +Lcom/android/internal/view/animation/HasNativeInterpolator; +Lcom/android/internal/view/animation/NativeInterpolatorFactory; +Lcom/android/internal/view/animation/NativeInterpolatorFactoryHelper; +Lcom/android/internal/view/menu/ActionMenuItem; +Lcom/android/internal/view/menu/BaseMenuPresenter; +Lcom/android/internal/view/menu/MenuBuilder$Callback; +Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker; +Lcom/android/internal/view/menu/MenuPresenter$Callback; +Lcom/android/internal/view/menu/MenuPresenter; +Lcom/android/internal/view/menu/MenuView; +Lcom/android/internal/view/menu/ShowableListMenu; +Lcom/android/internal/widget/AbsActionBarView$VisibilityAnimListener; +Lcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable; +Lcom/android/internal/widget/ActionBarContainer; +Lcom/android/internal/widget/ActionBarContextView; +Lcom/android/internal/widget/ActionBarOverlayLayout$1; +Lcom/android/internal/widget/ActionBarOverlayLayout$2; +Lcom/android/internal/widget/ActionBarOverlayLayout$3; +Lcom/android/internal/widget/ActionBarOverlayLayout$4; +Lcom/android/internal/widget/ActionBarOverlayLayout$5; +Lcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback; +Lcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams; +Lcom/android/internal/widget/BackgroundFallback; +Lcom/android/internal/widget/DecorContentParent; +Lcom/android/internal/widget/DecorToolbar; +Lcom/android/internal/widget/EditableInputConnection; +Lcom/android/internal/widget/LockPatternUtils; +Lcom/android/internal/widget/ScrollBarUtils; +Lcom/android/internal/widget/ToolbarWidgetWrapper$1; +Lcom/android/internal/widget/ToolbarWidgetWrapper; +Lcom/android/okhttp/Address; +Lcom/android/okhttp/Authenticator; +Lcom/android/okhttp/CacheControl$Builder; +Lcom/android/okhttp/CertificatePinner$Builder; +Lcom/android/okhttp/CipherSuite; +Lcom/android/okhttp/ConfigAwareConnectionPool$1; +Lcom/android/okhttp/ConfigAwareConnectionPool; +Lcom/android/okhttp/Connection; +Lcom/android/okhttp/ConnectionPool$1; +Lcom/android/okhttp/ConnectionSpec$Builder; +Lcom/android/okhttp/ConnectionSpec; +Lcom/android/okhttp/Dispatcher; +Lcom/android/okhttp/Dns$1; +Lcom/android/okhttp/Handshake; +Lcom/android/okhttp/Headers$Builder; +Lcom/android/okhttp/Headers; +Lcom/android/okhttp/HttpHandler$CleartextURLFilter; +Lcom/android/okhttp/HttpHandler; +Lcom/android/okhttp/HttpUrl$Builder; +Lcom/android/okhttp/HttpsHandler; +Lcom/android/okhttp/OkHttpClient$1; +Lcom/android/okhttp/OkUrlFactory; +Lcom/android/okhttp/Protocol; +Lcom/android/okhttp/Request$Builder; +Lcom/android/okhttp/Request; +Lcom/android/okhttp/RequestBody$2; +Lcom/android/okhttp/RequestBody; +Lcom/android/okhttp/Response$Builder; +Lcom/android/okhttp/Response; +Lcom/android/okhttp/ResponseBody; +Lcom/android/okhttp/Route; +Lcom/android/okhttp/TlsVersion; +Lcom/android/okhttp/internal/ConnectionSpecSelector; +Lcom/android/okhttp/internal/OptionalMethod; +Lcom/android/okhttp/internal/RouteDatabase; +Lcom/android/okhttp/internal/URLFilter; +Lcom/android/okhttp/internal/Util$1; +Lcom/android/okhttp/internal/http/CacheStrategy$Factory; +Lcom/android/okhttp/internal/http/CacheStrategy; +Lcom/android/okhttp/internal/http/Http1xStream$AbstractSource; +Lcom/android/okhttp/internal/http/Http1xStream$ChunkedSource; +Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource; +Lcom/android/okhttp/internal/http/Http1xStream; +Lcom/android/okhttp/internal/http/HttpEngine$1; +Lcom/android/okhttp/internal/http/HttpMethod; +Lcom/android/okhttp/internal/http/HttpStream; +Lcom/android/okhttp/internal/http/OkHeaders$1; +Lcom/android/okhttp/internal/http/RealResponseBody; +Lcom/android/okhttp/internal/http/RequestException; +Lcom/android/okhttp/internal/http/RequestLine; +Lcom/android/okhttp/internal/http/RetryableSink; +Lcom/android/okhttp/internal/http/RouteSelector; +Lcom/android/okhttp/internal/http/StatusLine; +Lcom/android/okhttp/internal/http/StreamAllocation; +Lcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection; +Lcom/android/okhttp/internal/huc/HttpsURLConnectionImpl; +Lcom/android/okhttp/internal/tls/OkHostnameVerifier; +Lcom/android/okhttp/okio/AsyncTimeout$1; +Lcom/android/okhttp/okio/AsyncTimeout$2; +Lcom/android/okhttp/okio/AsyncTimeout$Watchdog; +Lcom/android/okhttp/okio/BufferedSink; +Lcom/android/okhttp/okio/BufferedSource; +Lcom/android/okhttp/okio/ForwardingTimeout; +Lcom/android/okhttp/okio/GzipSource; +Lcom/android/okhttp/okio/InflaterSource; +Lcom/android/okhttp/okio/Okio$1; +Lcom/android/okhttp/okio/Okio$2; +Lcom/android/okhttp/okio/Okio$3; +Lcom/android/okhttp/okio/RealBufferedSink$1; +Lcom/android/okhttp/okio/RealBufferedSink; +Lcom/android/okhttp/okio/RealBufferedSource$1; +Lcom/android/okhttp/okio/RealBufferedSource; +Lcom/android/okhttp/okio/Segment; +Lcom/android/okhttp/okio/Sink; +Lcom/android/okhttp/okio/Source; +Lcom/android/okhttp/okio/Timeout$1; +Lcom/android/org/bouncycastle/asn1/ASN1Encodable; +Lcom/android/org/bouncycastle/asn1/ASN1Object; +Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle; +Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; +Lcom/android/org/bouncycastle/asn1/ASN1Primitive; +Lcom/android/org/bouncycastle/asn1/OIDTokenizer; +Lcom/android/org/bouncycastle/asn1/bc/BCObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/iana/IANAObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/misc/MiscObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/nist/NISTObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/oiw/OIWObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/x509/X509ObjectIdentifiers; +Lcom/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers; +Lcom/android/org/bouncycastle/crypto/CipherParameters; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/DH; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/EC; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi; +Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi; +Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider; +Lcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration; +Lcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission; +Lcom/android/org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider; +Lcom/android/org/bouncycastle/jcajce/provider/digest/MD5$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/MD5; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA1$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA1; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA224$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA224; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA256$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA256; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA384$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA384; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA512$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA512; +Lcom/android/org/bouncycastle/jcajce/provider/keystore/BC$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std; +Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DES$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DES; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings; +Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish; +Lcom/android/org/bouncycastle/jcajce/provider/util/AlgorithmProvider; +Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider; +Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; +Lcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper; +Lcom/android/org/bouncycastle/jcajce/util/JcaJceHelper; +Lcom/android/org/bouncycastle/jcajce/util/ProviderJcaJceHelper; +Lcom/android/org/bouncycastle/jce/interfaces/BCKeyStore; +Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider$1; +Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider; +Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration; +Lcom/android/org/bouncycastle/util/Arrays; +Lcom/android/org/bouncycastle/util/Encodable; +Lcom/android/org/bouncycastle/util/Strings$1; +Lcom/android/org/bouncycastle/util/Strings; +Lcom/android/org/conscrypt/AbstractConscryptSocket$1; +Lcom/android/org/conscrypt/AbstractConscryptSocket; +Lcom/android/org/conscrypt/AbstractSessionContext$1; +Lcom/android/org/conscrypt/AbstractSessionContext; +Lcom/android/org/conscrypt/ActiveSession; +Lcom/android/org/conscrypt/ArrayUtils; +Lcom/android/org/conscrypt/ByteArray; +Lcom/android/org/conscrypt/CertBlacklist; +Lcom/android/org/conscrypt/CertificatePriorityComparator; +Lcom/android/org/conscrypt/ChainStrengthAnalyzer; +Lcom/android/org/conscrypt/ClientSessionContext$HostAndPort; +Lcom/android/org/conscrypt/ClientSessionContext; +Lcom/android/org/conscrypt/Conscrypt; +Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLInputStream; +Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket$SSLOutputStream; +Lcom/android/org/conscrypt/ConscryptFileDescriptorSocket; +Lcom/android/org/conscrypt/CryptoUpcalls; +Lcom/android/org/conscrypt/EvpMdRef$SHA1; +Lcom/android/org/conscrypt/FileClientSessionCache$Impl; +Lcom/android/org/conscrypt/Hex; +Lcom/android/org/conscrypt/InternalUtil; +Lcom/android/org/conscrypt/JSSEProvider; +Lcom/android/org/conscrypt/KeyManagerFactoryImpl; +Lcom/android/org/conscrypt/KeyManagerImpl; +Lcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks; +Lcom/android/org/conscrypt/NativeCrypto; +Lcom/android/org/conscrypt/NativeCryptoJni; +Lcom/android/org/conscrypt/NativeRef$EC_GROUP; +Lcom/android/org/conscrypt/NativeRef$EC_POINT; +Lcom/android/org/conscrypt/NativeRef$EVP_CIPHER_CTX; +Lcom/android/org/conscrypt/NativeRef$EVP_MD_CTX; +Lcom/android/org/conscrypt/NativeRef$EVP_PKEY; +Lcom/android/org/conscrypt/NativeRef$SSL_SESSION; +Lcom/android/org/conscrypt/NativeRef; +Lcom/android/org/conscrypt/OpenSSLBIOInputStream; +Lcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES$CBC$PKCS5Padding; +Lcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES$CBC; +Lcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES; +Lcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER$AES_BASE; +Lcom/android/org/conscrypt/OpenSSLCipher$EVP_CIPHER; +Lcom/android/org/conscrypt/OpenSSLCipher; +Lcom/android/org/conscrypt/OpenSSLContextImpl$TLSv12; +Lcom/android/org/conscrypt/OpenSSLECGroupContext; +Lcom/android/org/conscrypt/OpenSSLECKeyFactory; +Lcom/android/org/conscrypt/OpenSSLECPointContext; +Lcom/android/org/conscrypt/OpenSSLECPublicKey; +Lcom/android/org/conscrypt/OpenSSLKey; +Lcom/android/org/conscrypt/OpenSSLKeyHolder; +Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$MD5; +Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA1; +Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA256; +Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK; +Lcom/android/org/conscrypt/OpenSSLProvider; +Lcom/android/org/conscrypt/OpenSSLRSAKeyFactory; +Lcom/android/org/conscrypt/OpenSSLRSAPublicKey; +Lcom/android/org/conscrypt/OpenSSLRandom; +Lcom/android/org/conscrypt/OpenSSLSignature$RSAPKCS1Padding; +Lcom/android/org/conscrypt/OpenSSLSignature; +Lcom/android/org/conscrypt/OpenSSLSocketImpl; +Lcom/android/org/conscrypt/OpenSSLX509CertPath$Encoding; +Lcom/android/org/conscrypt/OpenSSLX509CertPath; +Lcom/android/org/conscrypt/OpenSSLX509Certificate; +Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1; +Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$2; +Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser; +Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException; +Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory; +Lcom/android/org/conscrypt/PeerInfoProvider$1; +Lcom/android/org/conscrypt/Platform$NoPreloadHolder; +Lcom/android/org/conscrypt/Platform; +Lcom/android/org/conscrypt/Preconditions; +Lcom/android/org/conscrypt/SSLClientSessionCache; +Lcom/android/org/conscrypt/SSLParametersImpl$AliasChooser; +Lcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks; +Lcom/android/org/conscrypt/ServerSessionContext; +Lcom/android/org/conscrypt/SslSessionWrapper$Impl$1; +Lcom/android/org/conscrypt/SslSessionWrapper$Impl; +Lcom/android/org/conscrypt/SslSessionWrapper; +Lcom/android/org/conscrypt/SslWrapper; +Lcom/android/org/conscrypt/TrustManagerFactoryImpl; +Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker; +Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator; +Lcom/android/org/conscrypt/TrustManagerImpl; +Lcom/android/org/conscrypt/TrustedCertificateIndex; +Lcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi; +Lcom/android/org/conscrypt/TrustedCertificateStore$1; +Lcom/android/org/conscrypt/TrustedCertificateStore$CertSelector; +Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder; +Lcom/android/org/conscrypt/TrustedCertificateStore; +Lcom/android/org/conscrypt/ct/CTLogInfo; +Lcom/android/org/conscrypt/ct/CTLogStore; +Lcom/android/org/conscrypt/ct/CTLogStoreImpl$InvalidLogFileException; +Lcom/android/org/conscrypt/ct/CTLogStoreImpl; +Lcom/android/org/conscrypt/ct/CTPolicy; +Lcom/android/org/conscrypt/ct/CTPolicyImpl; +Lcom/android/org/conscrypt/ct/CTVerifier; +Lcom/android/org/conscrypt/ct/SerializationException; +Lcom/android/server/NetworkManagementSocketTagger$1; +Lcom/android/server/NetworkManagementSocketTagger$SocketTags; +Lcom/android/server/NetworkManagementSocketTagger; +Lcom/google/android/collect/Lists; +Lcom/google/android/collect/Maps; +Lcom/google/android/collect/Sets; +Lcom/google/android/gles_jni/EGLConfigImpl; +Lcom/google/android/gles_jni/EGLContextImpl; +Lcom/google/android/gles_jni/EGLDisplayImpl; +Lcom/google/android/gles_jni/EGLImpl; +Lcom/google/android/gles_jni/EGLSurfaceImpl; +Lcom/google/android/gles_jni/GLImpl; +Ldalvik/annotation/optimization/CriticalNative; +Ldalvik/annotation/optimization/FastNative; +Ldalvik/system/-$Lambda$xxvwQBVHC44UYbpcpA8j0sUqLOo; +Ldalvik/system/BaseDexClassLoader$Reporter; +Ldalvik/system/BaseDexClassLoader; +Ldalvik/system/BlockGuard$1; +Ldalvik/system/BlockGuard$2; +Ldalvik/system/BlockGuard$BlockGuardPolicyException; +Ldalvik/system/BlockGuard$Policy; +Ldalvik/system/BlockGuard; +Ldalvik/system/ClassExt; +Ldalvik/system/CloseGuard$DefaultReporter; +Ldalvik/system/CloseGuard$DefaultTracker; +Ldalvik/system/CloseGuard$Reporter; +Ldalvik/system/CloseGuard$Tracker; +Ldalvik/system/CloseGuard; +Ldalvik/system/DalvikLogHandler; +Ldalvik/system/DalvikLogging; +Ldalvik/system/DelegateLastClassLoader; +Ldalvik/system/DexClassLoader; +Ldalvik/system/DexFile$DFEnum; +Ldalvik/system/DexFile; +Ldalvik/system/DexPathList$Element; +Ldalvik/system/DexPathList$NativeLibraryElement; +Ldalvik/system/DexPathList; +Ldalvik/system/EmulatedStackFrame$Range; +Ldalvik/system/EmulatedStackFrame; +Ldalvik/system/PathClassLoader; +Ldalvik/system/SocketTagger$1; +Ldalvik/system/SocketTagger; +Ldalvik/system/VMDebug; +Ldalvik/system/VMRuntime; +Ldalvik/system/VMStack; +Ldalvik/system/ZygoteHooks; +Ljava/io/Bits; +Ljava/io/BufferedInputStream; +Ljava/io/BufferedOutputStream; +Ljava/io/BufferedReader; +Ljava/io/ByteArrayInputStream; +Ljava/io/ByteArrayOutputStream; +Ljava/io/CharArrayWriter; +Ljava/io/Closeable; +Ljava/io/Console; +Ljava/io/DataInput; +Ljava/io/DataInputStream; +Ljava/io/DataOutput; +Ljava/io/DataOutputStream; +Ljava/io/DefaultFileSystem; +Ljava/io/EOFException; +Ljava/io/ExpiringCache$1; +Ljava/io/ExpiringCache; +Ljava/io/Externalizable; +Ljava/io/File$PathStatus; +Ljava/io/File$TempDirectory; +Ljava/io/File; +Ljava/io/FileDescriptor$1; +Ljava/io/FileDescriptor; +Ljava/io/FileFilter; +Ljava/io/FileInputStream$UseManualSkipException; +Ljava/io/FileInputStream; +Ljava/io/FileNotFoundException; +Ljava/io/FileOutputStream; +Ljava/io/FileReader; +Ljava/io/FileSystem; +Ljava/io/FileWriter; +Ljava/io/FilenameFilter; +Ljava/io/FilterInputStream; +Ljava/io/FilterOutputStream; +Ljava/io/FilterReader; +Ljava/io/Flushable; +Ljava/io/IOException; +Ljava/io/InputStream; +Ljava/io/InputStreamReader; +Ljava/io/InterruptedIOException; +Ljava/io/InvalidClassException; +Ljava/io/InvalidObjectException; +Ljava/io/ObjectInput; +Ljava/io/ObjectInputStream$BlockDataInputStream; +Ljava/io/ObjectInputStream$HandleTable$HandleList; +Ljava/io/ObjectInputStream$HandleTable; +Ljava/io/ObjectInputStream$PeekInputStream; +Ljava/io/ObjectInputStream$ValidationList; +Ljava/io/ObjectInputStream; +Ljava/io/ObjectOutput; +Ljava/io/ObjectOutputStream$BlockDataOutputStream; +Ljava/io/ObjectOutputStream$HandleTable; +Ljava/io/ObjectOutputStream$PutField; +Ljava/io/ObjectOutputStream$ReplaceTable; +Ljava/io/ObjectOutputStream; +Ljava/io/ObjectStreamClass$1; +Ljava/io/ObjectStreamClass$2; +Ljava/io/ObjectStreamClass$3; +Ljava/io/ObjectStreamClass$4; +Ljava/io/ObjectStreamClass$5; +Ljava/io/ObjectStreamClass$ClassDataSlot; +Ljava/io/ObjectStreamClass$ExceptionInfo; +Ljava/io/ObjectStreamClass$FieldReflectorKey; +Ljava/io/ObjectStreamClass$MemberSignature; +Ljava/io/ObjectStreamClass$WeakClassKey; +Ljava/io/ObjectStreamClass; +Ljava/io/ObjectStreamConstants; +Ljava/io/ObjectStreamException; +Ljava/io/ObjectStreamField; +Ljava/io/OutputStream; +Ljava/io/OutputStreamWriter; +Ljava/io/PrintStream; +Ljava/io/PrintWriter; +Ljava/io/PushbackInputStream; +Ljava/io/PushbackReader; +Ljava/io/RandomAccessFile; +Ljava/io/Reader; +Ljava/io/SequenceInputStream; +Ljava/io/SerialCallbackContext; +Ljava/io/Serializable; +Ljava/io/SerializablePermission; +Ljava/io/StreamCorruptedException; +Ljava/io/StringReader; +Ljava/io/StringWriter; +Ljava/io/UnixFileSystem; +Ljava/io/UnsupportedEncodingException; +Ljava/io/Writer; +Ljava/lang/-$Lambda$S9HjrJh0nDg7IyU6wZdPArnZWRQ; +Ljava/lang/AbstractMethodError; +Ljava/lang/AbstractStringBuilder; +Ljava/lang/AndroidHardcodedSystemProperties; +Ljava/lang/Appendable; +Ljava/lang/ArithmeticException; +Ljava/lang/ArrayIndexOutOfBoundsException; +Ljava/lang/ArrayStoreException; +Ljava/lang/AssertionError; +Ljava/lang/AutoCloseable; +Ljava/lang/Boolean; +Ljava/lang/BootClassLoader; +Ljava/lang/Byte$ByteCache; +Ljava/lang/Byte; +Ljava/lang/CaseMapper$1; +Ljava/lang/CaseMapper; +Ljava/lang/CharSequence$1CharIterator; +Ljava/lang/CharSequence$1CodePointIterator; +Ljava/lang/CharSequence; +Ljava/lang/Character$CharacterCache; +Ljava/lang/Character$Subset; +Ljava/lang/Character$UnicodeBlock; +Ljava/lang/Character; +Ljava/lang/Class$Caches; +Ljava/lang/Class; +Ljava/lang/ClassCastException; +Ljava/lang/ClassLoader$SystemClassLoader; +Ljava/lang/ClassLoader; +Ljava/lang/ClassNotFoundException; +Ljava/lang/CloneNotSupportedException; +Ljava/lang/Cloneable; +Ljava/lang/Comparable; +Ljava/lang/Daemons$Daemon; +Ljava/lang/Daemons$FinalizerDaemon; +Ljava/lang/Daemons$FinalizerWatchdogDaemon; +Ljava/lang/Daemons$HeapTaskDaemon; +Ljava/lang/Daemons$ReferenceQueueDaemon; +Ljava/lang/Daemons; +Ljava/lang/DexCache; +Ljava/lang/Double; +Ljava/lang/Enum$1; +Ljava/lang/Enum; +Ljava/lang/EnumConstantNotPresentException; +Ljava/lang/Error; +Ljava/lang/Exception; +Ljava/lang/Float; +Ljava/lang/IllegalAccessError; +Ljava/lang/IllegalAccessException; +Ljava/lang/IllegalArgumentException; +Ljava/lang/IllegalStateException; +Ljava/lang/IllegalThreadStateException; +Ljava/lang/IncompatibleClassChangeError; +Ljava/lang/IndexOutOfBoundsException; +Ljava/lang/InheritableThreadLocal; +Ljava/lang/InstantiationException; +Ljava/lang/Integer$IntegerCache; +Ljava/lang/Integer; +Ljava/lang/InternalError; +Ljava/lang/InterruptedException; +Ljava/lang/Iterable; +Ljava/lang/LinkageError; +Ljava/lang/Long$LongCache; +Ljava/lang/Long; +Ljava/lang/Math$RandomNumberGeneratorHolder; +Ljava/lang/Math; +Ljava/lang/NoClassDefFoundError; +Ljava/lang/NoSuchFieldError; +Ljava/lang/NoSuchFieldException; +Ljava/lang/NoSuchMethodError; +Ljava/lang/NoSuchMethodException; +Ljava/lang/NullPointerException; +Ljava/lang/Number; +Ljava/lang/NumberFormatException; +Ljava/lang/Object; +Ljava/lang/OutOfMemoryError; +Ljava/lang/Package; +Ljava/lang/Process; +Ljava/lang/ProcessBuilder; +Ljava/lang/ProcessEnvironment; +Ljava/lang/Readable; +Ljava/lang/ReflectiveOperationException; +Ljava/lang/Runnable; +Ljava/lang/Runtime; +Ljava/lang/RuntimeException; +Ljava/lang/RuntimePermission; +Ljava/lang/SecurityException; +Ljava/lang/Short$ShortCache; +Ljava/lang/Short; +Ljava/lang/StackOverflowError; +Ljava/lang/StackTraceElement; +Ljava/lang/StrictMath; +Ljava/lang/String$CaseInsensitiveComparator; +Ljava/lang/String; +Ljava/lang/StringBuffer; +Ljava/lang/StringBuilder; +Ljava/lang/StringFactory; +Ljava/lang/StringIndexOutOfBoundsException; +Ljava/lang/System$PropertiesWithNonOverrideableDefaults; +Ljava/lang/System; +Ljava/lang/Thread$1; +Ljava/lang/Thread$Caches; +Ljava/lang/Thread$State; +Ljava/lang/Thread$UncaughtExceptionHandler; +Ljava/lang/Thread$WeakClassKey; +Ljava/lang/Thread; +Ljava/lang/ThreadDeath; +Ljava/lang/ThreadGroup; +Ljava/lang/ThreadLocal$SuppliedThreadLocal; +Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; +Ljava/lang/ThreadLocal$ThreadLocalMap; +Ljava/lang/ThreadLocal; +Ljava/lang/Throwable$PrintStreamOrWriter; +Ljava/lang/Throwable$SentinelHolder; +Ljava/lang/Throwable$WrappedPrintStream; +Ljava/lang/Throwable$WrappedPrintWriter; +Ljava/lang/Throwable; +Ljava/lang/TypeNotPresentException; +Ljava/lang/UNIXProcess; +Ljava/lang/UnsatisfiedLinkError; +Ljava/lang/UnsupportedOperationException; +Ljava/lang/VMClassLoader; +Ljava/lang/VirtualMachineError; +Ljava/lang/Void; +Ljava/lang/annotation/Annotation; +Ljava/lang/annotation/AnnotationTypeMismatchException; +Ljava/lang/annotation/IncompleteAnnotationException; +Ljava/lang/annotation/Inherited; +Ljava/lang/annotation/Retention; +Ljava/lang/invoke/CallSite; +Ljava/lang/invoke/ConstantCallSite; +Ljava/lang/invoke/MethodHandle; +Ljava/lang/invoke/MethodHandleImpl$HandleInfo; +Ljava/lang/invoke/MethodHandleImpl; +Ljava/lang/invoke/MethodHandleInfo; +Ljava/lang/invoke/MethodHandleStatics; +Ljava/lang/invoke/MethodHandles$Lookup; +Ljava/lang/invoke/MethodHandles; +Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry; +Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; +Ljava/lang/invoke/MethodType; +Ljava/lang/invoke/MethodTypeForm; +Ljava/lang/invoke/Transformers$AlwaysThrow; +Ljava/lang/invoke/Transformers$BindTo; +Ljava/lang/invoke/Transformers$CatchException; +Ljava/lang/invoke/Transformers$CollectArguments; +Ljava/lang/invoke/Transformers$Collector; +Ljava/lang/invoke/Transformers$Constant; +Ljava/lang/invoke/Transformers$Construct; +Ljava/lang/invoke/Transformers$DropArguments; +Ljava/lang/invoke/Transformers$ExplicitCastArguments; +Ljava/lang/invoke/Transformers$FilterArguments; +Ljava/lang/invoke/Transformers$FilterReturnValue; +Ljava/lang/invoke/Transformers$FoldArguments; +Ljava/lang/invoke/Transformers$GuardWithTest; +Ljava/lang/invoke/Transformers$InsertArguments; +Ljava/lang/invoke/Transformers$Invoker; +Ljava/lang/invoke/Transformers$PermuteArguments; +Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter; +Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter; +Ljava/lang/invoke/Transformers$ReferenceIdentity; +Ljava/lang/invoke/Transformers$Spreader; +Ljava/lang/invoke/Transformers$Transformer; +Ljava/lang/invoke/Transformers$VarargsCollector; +Ljava/lang/invoke/WrongMethodTypeException; +Ljava/lang/ref/FinalizerReference$Sentinel; +Ljava/lang/ref/FinalizerReference; +Ljava/lang/ref/PhantomReference; +Ljava/lang/ref/Reference; +Ljava/lang/ref/ReferenceQueue; +Ljava/lang/ref/SoftReference; +Ljava/lang/ref/WeakReference; +Ljava/lang/reflect/AccessibleObject; +Ljava/lang/reflect/AnnotatedElement; +Ljava/lang/reflect/Array; +Ljava/lang/reflect/Constructor; +Ljava/lang/reflect/Executable$GenericInfo; +Ljava/lang/reflect/Executable; +Ljava/lang/reflect/Field; +Ljava/lang/reflect/GenericArrayType; +Ljava/lang/reflect/GenericDeclaration; +Ljava/lang/reflect/InvocationHandler; +Ljava/lang/reflect/InvocationTargetException; +Ljava/lang/reflect/MalformedParametersException; +Ljava/lang/reflect/Member; +Ljava/lang/reflect/Method$1; +Ljava/lang/reflect/Method; +Ljava/lang/reflect/Modifier; +Ljava/lang/reflect/Parameter; +Ljava/lang/reflect/ParameterizedType; +Ljava/lang/reflect/Proxy$1; +Ljava/lang/reflect/Proxy$Key1; +Ljava/lang/reflect/Proxy$Key2; +Ljava/lang/reflect/Proxy$KeyFactory; +Ljava/lang/reflect/Proxy$KeyX; +Ljava/lang/reflect/Proxy$ProxyClassFactory; +Ljava/lang/reflect/Proxy; +Ljava/lang/reflect/Type; +Ljava/lang/reflect/TypeVariable; +Ljava/lang/reflect/UndeclaredThrowableException; +Ljava/lang/reflect/WeakCache$CacheKey; +Ljava/lang/reflect/WeakCache$CacheValue; +Ljava/lang/reflect/WeakCache$Factory; +Ljava/lang/reflect/WeakCache$LookupValue; +Ljava/lang/reflect/WeakCache$Value; +Ljava/lang/reflect/WeakCache; +Ljava/lang/reflect/WildcardType; +Ljava/math/BigInt; +Ljava/math/BigInteger; +Ljava/math/NativeBN; +Ljava/math/RoundingMode; +Ljava/net/AbstractPlainSocketImpl; +Ljava/net/AddressCache$AddressCacheEntry; +Ljava/net/AddressCache$AddressCacheKey; +Ljava/net/AddressCache; +Ljava/net/ConnectException; +Ljava/net/DatagramPacket; +Ljava/net/DatagramSocket$1; +Ljava/net/DatagramSocketImpl; +Ljava/net/DefaultInterface; +Ljava/net/HttpURLConnection; +Ljava/net/IDN; +Ljava/net/Inet4Address; +Ljava/net/Inet6Address$Inet6AddressHolder; +Ljava/net/Inet6Address; +Ljava/net/Inet6AddressImpl; +Ljava/net/InetAddress$1; +Ljava/net/InetAddress$InetAddressHolder; +Ljava/net/InetAddress; +Ljava/net/InetAddressImpl; +Ljava/net/InetSocketAddress$InetSocketAddressHolder; +Ljava/net/InetSocketAddress; +Ljava/net/InterfaceAddress; +Ljava/net/JarURLConnection; +Ljava/net/MalformedURLException; +Ljava/net/MulticastSocket; +Ljava/net/NetworkInterface; +Ljava/net/Parts; +Ljava/net/PlainDatagramSocketImpl; +Ljava/net/PlainSocketImpl; +Ljava/net/ProxySelector; +Ljava/net/Socket$2; +Ljava/net/Socket$3; +Ljava/net/Socket; +Ljava/net/SocketAddress; +Ljava/net/SocketException; +Ljava/net/SocketImpl; +Ljava/net/SocketInputStream; +Ljava/net/SocketOptions; +Ljava/net/SocketOutputStream; +Ljava/net/SocketTimeoutException; +Ljava/net/SocksConsts; +Ljava/net/URI$Parser; +Ljava/net/URI; +Ljava/net/URISyntaxException; +Ljava/net/URL; +Ljava/net/URLConnection; +Ljava/net/URLStreamHandler; +Ljava/net/URLStreamHandlerFactory; +Ljava/net/UnknownHostException; +Ljava/nio/Bits; +Ljava/nio/Buffer; +Ljava/nio/BufferOverflowException; +Ljava/nio/BufferUnderflowException; +Ljava/nio/ByteBuffer; +Ljava/nio/ByteBufferAsCharBuffer; +Ljava/nio/ByteBufferAsDoubleBuffer; +Ljava/nio/ByteBufferAsFloatBuffer; +Ljava/nio/ByteBufferAsIntBuffer; +Ljava/nio/ByteBufferAsLongBuffer; +Ljava/nio/ByteBufferAsShortBuffer; +Ljava/nio/ByteOrder; +Ljava/nio/CharBuffer; +Ljava/nio/DirectByteBuffer$MemoryRef; +Ljava/nio/DirectByteBuffer; +Ljava/nio/DoubleBuffer; +Ljava/nio/FloatBuffer; +Ljava/nio/HeapByteBuffer; +Ljava/nio/HeapCharBuffer; +Ljava/nio/IntBuffer; +Ljava/nio/InvalidMarkException; +Ljava/nio/LongBuffer; +Ljava/nio/MappedByteBuffer; +Ljava/nio/NIOAccess; +Ljava/nio/NioUtils; +Ljava/nio/ReadOnlyBufferException; +Ljava/nio/ShortBuffer; +Ljava/nio/StringCharBuffer; +Ljava/nio/channels/AsynchronousCloseException; +Ljava/nio/channels/ByteChannel; +Ljava/nio/channels/Channel; +Ljava/nio/channels/Channels; +Ljava/nio/channels/ClosedByInterruptException; +Ljava/nio/channels/ClosedChannelException; +Ljava/nio/channels/DatagramChannel; +Ljava/nio/channels/FileChannel$MapMode; +Ljava/nio/channels/FileChannel; +Ljava/nio/channels/FileLock; +Ljava/nio/channels/GatheringByteChannel; +Ljava/nio/channels/InterruptibleChannel; +Ljava/nio/channels/MulticastChannel; +Ljava/nio/channels/NetworkChannel; +Ljava/nio/channels/OverlappingFileLockException; +Ljava/nio/channels/ReadableByteChannel; +Ljava/nio/channels/ScatteringByteChannel; +Ljava/nio/channels/SeekableByteChannel; +Ljava/nio/channels/SelectableChannel; +Ljava/nio/channels/ServerSocketChannel; +Ljava/nio/channels/SocketChannel; +Ljava/nio/channels/WritableByteChannel; +Ljava/nio/channels/spi/AbstractInterruptibleChannel$1; +Ljava/nio/channels/spi/AbstractInterruptibleChannel; +Ljava/nio/channels/spi/AbstractSelectableChannel; +Ljava/nio/charset/CharacterCodingException; +Ljava/nio/charset/Charset; +Ljava/nio/charset/CharsetDecoder; +Ljava/nio/charset/CharsetDecoderICU; +Ljava/nio/charset/CharsetEncoder; +Ljava/nio/charset/CharsetEncoderICU; +Ljava/nio/charset/CharsetICU; +Ljava/nio/charset/CoderResult$1; +Ljava/nio/charset/CoderResult$2; +Ljava/nio/charset/CoderResult$Cache; +Ljava/nio/charset/CoderResult; +Ljava/nio/charset/CodingErrorAction; +Ljava/nio/charset/IllegalCharsetNameException; +Ljava/nio/charset/StandardCharsets; +Ljava/nio/charset/UnsupportedCharsetException; +Ljava/nio/file/FileSystem; +Ljava/nio/file/FileSystems$DefaultFileSystemHolder$1; +Ljava/nio/file/FileSystems; +Ljava/nio/file/Path; +Ljava/nio/file/Watchable; +Ljava/nio/file/attribute/BasicFileAttributes; +Ljava/nio/file/attribute/FileAttribute; +Ljava/nio/file/attribute/PosixFileAttributes; +Ljava/security/AccessControlContext; +Ljava/security/AccessControlException; +Ljava/security/AccessController; +Ljava/security/AlgorithmConstraints; +Ljava/security/AlgorithmParameters; +Ljava/security/AlgorithmParametersSpi; +Ljava/security/BasicPermission; +Ljava/security/CryptoPrimitive; +Ljava/security/GeneralSecurityException; +Ljava/security/Guard; +Ljava/security/InvalidAlgorithmParameterException; +Ljava/security/InvalidKeyException; +Ljava/security/Key; +Ljava/security/KeyException; +Ljava/security/KeyFactory; +Ljava/security/KeyFactorySpi; +Ljava/security/KeyManagementException; +Ljava/security/KeyPair; +Ljava/security/KeyStore$1; +Ljava/security/KeyStore; +Ljava/security/KeyStoreException; +Ljava/security/KeyStoreSpi; +Ljava/security/MessageDigest$Delegate; +Ljava/security/MessageDigest; +Ljava/security/MessageDigestSpi; +Ljava/security/NoSuchAlgorithmException; +Ljava/security/NoSuchProviderException; +Ljava/security/Permission; +Ljava/security/PermissionCollection; +Ljava/security/Permissions; +Ljava/security/Principal; +Ljava/security/PrivateKey; +Ljava/security/PrivilegedAction; +Ljava/security/PrivilegedActionException; +Ljava/security/PrivilegedExceptionAction; +Ljava/security/ProtectionDomain; +Ljava/security/Provider$EngineDescription; +Ljava/security/Provider$Service; +Ljava/security/Provider$ServiceKey; +Ljava/security/Provider$UString; +Ljava/security/Provider; +Ljava/security/PublicKey; +Ljava/security/SecureRandom; +Ljava/security/SecureRandomSpi; +Ljava/security/Security; +Ljava/security/SignatureException; +Ljava/security/SignatureSpi; +Ljava/security/UnrecoverableEntryException; +Ljava/security/UnrecoverableKeyException; +Ljava/security/cert/CRL; +Ljava/security/cert/CRLException; +Ljava/security/cert/CertPath; +Ljava/security/cert/CertPathChecker; +Ljava/security/cert/CertPathHelperImpl; +Ljava/security/cert/CertPathParameters; +Ljava/security/cert/CertPathValidator; +Ljava/security/cert/CertPathValidatorException; +Ljava/security/cert/CertPathValidatorResult; +Ljava/security/cert/CertPathValidatorSpi; +Ljava/security/cert/CertSelector; +Ljava/security/cert/Certificate; +Ljava/security/cert/CertificateEncodingException; +Ljava/security/cert/CertificateException; +Ljava/security/cert/CertificateExpiredException; +Ljava/security/cert/CertificateFactory; +Ljava/security/cert/CertificateFactorySpi; +Ljava/security/cert/CertificateNotYetValidException; +Ljava/security/cert/CertificateParsingException; +Ljava/security/cert/Extension; +Ljava/security/cert/PKIXCertPathChecker; +Ljava/security/cert/PKIXCertPathValidatorResult; +Ljava/security/cert/PKIXParameters; +Ljava/security/cert/PKIXRevocationChecker; +Ljava/security/cert/PolicyNode; +Ljava/security/cert/PolicyQualifierInfo; +Ljava/security/cert/TrustAnchor; +Ljava/security/cert/X509CertSelector; +Ljava/security/cert/X509Certificate; +Ljava/security/cert/X509Extension; +Ljava/security/interfaces/DSAKey; +Ljava/security/interfaces/DSAPublicKey; +Ljava/security/interfaces/ECKey; +Ljava/security/interfaces/ECPublicKey; +Ljava/security/interfaces/RSAKey; +Ljava/security/interfaces/RSAPrivateKey; +Ljava/security/interfaces/RSAPublicKey; +Ljava/security/spec/AlgorithmParameterSpec; +Ljava/security/spec/ECField; +Ljava/security/spec/ECFieldFp; +Ljava/security/spec/ECParameterSpec; +Ljava/security/spec/ECPoint; +Ljava/security/spec/ECPublicKeySpec; +Ljava/security/spec/EllipticCurve; +Ljava/security/spec/EncodedKeySpec; +Ljava/security/spec/InvalidKeySpecException; +Ljava/security/spec/InvalidParameterSpecException; +Ljava/security/spec/KeySpec; +Ljava/security/spec/PKCS8EncodedKeySpec; +Ljava/security/spec/RSAPublicKeySpec; +Ljava/security/spec/X509EncodedKeySpec; +Ljava/text/AttributedCharacterIterator$Attribute; +Ljava/text/CalendarBuilder; +Ljava/text/CharacterIterator; +Ljava/text/Collator; +Ljava/text/DateFormat$Field; +Ljava/text/DateFormat; +Ljava/text/DateFormatSymbols; +Ljava/text/DecimalFormat; +Ljava/text/DecimalFormatSymbols; +Ljava/text/DontCareFieldPosition$1; +Ljava/text/DontCareFieldPosition; +Ljava/text/FieldPosition$Delegate; +Ljava/text/FieldPosition; +Ljava/text/Format$Field; +Ljava/text/Format$FieldDelegate; +Ljava/text/Format; +Ljava/text/Normalizer$Form; +Ljava/text/Normalizer; +Ljava/text/NumberFormat; +Ljava/text/ParseException; +Ljava/text/ParsePosition; +Ljava/text/RuleBasedCollator; +Ljava/text/SimpleDateFormat; +Ljava/text/StringCharacterIterator; +Ljava/time/DateTimeException; +Ljava/util/-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo; +Ljava/util/-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk; +Ljava/util/-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw; +Ljava/util/AbstractCollection; +Ljava/util/AbstractList$Itr; +Ljava/util/AbstractList$ListItr; +Ljava/util/AbstractList; +Ljava/util/AbstractMap$1; +Ljava/util/AbstractMap$2; +Ljava/util/AbstractMap$SimpleImmutableEntry; +Ljava/util/AbstractMap; +Ljava/util/AbstractQueue; +Ljava/util/AbstractSequentialList; +Ljava/util/AbstractSet; +Ljava/util/ArrayDeque$DeqIterator; +Ljava/util/ArrayDeque; +Ljava/util/ArrayList$ArrayListSpliterator; +Ljava/util/ArrayList$Itr; +Ljava/util/ArrayList$ListItr; +Ljava/util/ArrayList$SubList$1; +Ljava/util/ArrayList$SubList; +Ljava/util/ArrayList; +Ljava/util/ArrayPrefixHelpers$CumulateTask; +Ljava/util/ArrayPrefixHelpers$DoubleCumulateTask; +Ljava/util/ArrayPrefixHelpers$IntCumulateTask; +Ljava/util/ArrayPrefixHelpers$LongCumulateTask; +Ljava/util/Arrays$ArrayList; +Ljava/util/Arrays$NaturalOrder; +Ljava/util/Arrays; +Ljava/util/ArraysParallelSortHelpers$FJByte$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJChar$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJDouble$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJFloat$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJInt$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJLong$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJObject$Sorter; +Ljava/util/ArraysParallelSortHelpers$FJShort$Sorter; +Ljava/util/BitSet; +Ljava/util/Calendar; +Ljava/util/Collection; +Ljava/util/Collections$1; +Ljava/util/Collections$2; +Ljava/util/Collections$3; +Ljava/util/Collections$AsLIFOQueue; +Ljava/util/Collections$CheckedCollection; +Ljava/util/Collections$CheckedList; +Ljava/util/Collections$CheckedMap; +Ljava/util/Collections$CheckedNavigableMap; +Ljava/util/Collections$CheckedNavigableSet; +Ljava/util/Collections$CheckedQueue; +Ljava/util/Collections$CheckedRandomAccessList; +Ljava/util/Collections$CheckedSet; +Ljava/util/Collections$CheckedSortedMap; +Ljava/util/Collections$CheckedSortedSet; +Ljava/util/Collections$CopiesList; +Ljava/util/Collections$EmptyEnumeration; +Ljava/util/Collections$EmptyIterator; +Ljava/util/Collections$EmptyList; +Ljava/util/Collections$EmptyListIterator; +Ljava/util/Collections$EmptyMap; +Ljava/util/Collections$EmptySet; +Ljava/util/Collections$ReverseComparator2; +Ljava/util/Collections$ReverseComparator; +Ljava/util/Collections$SetFromMap; +Ljava/util/Collections$SingletonList; +Ljava/util/Collections$SingletonMap; +Ljava/util/Collections$SingletonSet; +Ljava/util/Collections$SynchronizedCollection; +Ljava/util/Collections$SynchronizedList; +Ljava/util/Collections$SynchronizedMap; +Ljava/util/Collections$SynchronizedNavigableMap; +Ljava/util/Collections$SynchronizedNavigableSet; +Ljava/util/Collections$SynchronizedRandomAccessList; +Ljava/util/Collections$SynchronizedSet; +Ljava/util/Collections$SynchronizedSortedMap; +Ljava/util/Collections$SynchronizedSortedSet; +Ljava/util/Collections$UnmodifiableCollection$1; +Ljava/util/Collections$UnmodifiableCollection; +Ljava/util/Collections$UnmodifiableList$1; +Ljava/util/Collections$UnmodifiableList; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry; +Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; +Ljava/util/Collections$UnmodifiableMap; +Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap; +Ljava/util/Collections$UnmodifiableNavigableMap; +Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet; +Ljava/util/Collections$UnmodifiableNavigableSet; +Ljava/util/Collections$UnmodifiableRandomAccessList; +Ljava/util/Collections$UnmodifiableSet; +Ljava/util/Collections$UnmodifiableSortedMap; +Ljava/util/Collections$UnmodifiableSortedSet; +Ljava/util/Collections; +Ljava/util/ComparableTimSort; +Ljava/util/Comparator; +Ljava/util/Comparators$NaturalOrderComparator; +Ljava/util/Comparators$NullComparator; +Ljava/util/ConcurrentModificationException; +Ljava/util/Currency; +Ljava/util/Date; +Ljava/util/Deque; +Ljava/util/Dictionary; +Ljava/util/DualPivotQuicksort; +Ljava/util/EnumMap$1; +Ljava/util/EnumMap$EnumMapIterator; +Ljava/util/EnumMap$KeyIterator; +Ljava/util/EnumMap$KeySet; +Ljava/util/EnumMap; +Ljava/util/EnumSet; +Ljava/util/Enumeration; +Ljava/util/EventListener; +Ljava/util/Formattable; +Ljava/util/Formatter$Conversion; +Ljava/util/Formatter$FixedString; +Ljava/util/Formatter$Flags; +Ljava/util/Formatter$FormatSpecifier; +Ljava/util/Formatter$FormatSpecifierParser; +Ljava/util/Formatter$FormatString; +Ljava/util/Formatter; +Ljava/util/GregorianCalendar; +Ljava/util/HashMap$EntryIterator; +Ljava/util/HashMap$EntrySet; +Ljava/util/HashMap$HashIterator; +Ljava/util/HashMap$KeyIterator; +Ljava/util/HashMap$KeySet; +Ljava/util/HashMap$Node; +Ljava/util/HashMap$TreeNode; +Ljava/util/HashMap$ValueIterator; +Ljava/util/HashMap$Values; +Ljava/util/HashMap; +Ljava/util/HashSet; +Ljava/util/Hashtable$Enumerator; +Ljava/util/Hashtable$HashtableEntry; +Ljava/util/Hashtable; +Ljava/util/IdentityHashMap$KeySet; +Ljava/util/IdentityHashMap; +Ljava/util/IllegalFormatException; +Ljava/util/IllformedLocaleException; +Ljava/util/Iterator; +Ljava/util/LinkedHashMap$LinkedEntryIterator; +Ljava/util/LinkedHashMap$LinkedEntrySet; +Ljava/util/LinkedHashMap$LinkedHashIterator; +Ljava/util/LinkedHashMap$LinkedHashMapEntry; +Ljava/util/LinkedHashMap$LinkedKeyIterator; +Ljava/util/LinkedHashMap$LinkedKeySet; +Ljava/util/LinkedHashMap$LinkedValueIterator; +Ljava/util/LinkedHashMap$LinkedValues; +Ljava/util/LinkedHashMap; +Ljava/util/LinkedHashSet; +Ljava/util/LinkedList$ListItr; +Ljava/util/LinkedList$Node; +Ljava/util/LinkedList; +Ljava/util/List; +Ljava/util/ListIterator; +Ljava/util/Locale$Builder; +Ljava/util/Locale$Cache; +Ljava/util/Locale$Category; +Ljava/util/Locale$FilteringMode; +Ljava/util/Locale$LanguageRange; +Ljava/util/Locale$LocaleKey; +Ljava/util/Locale$NoImagePreloadHolder; +Ljava/util/Locale; +Ljava/util/Map$Entry; +Ljava/util/Map; +Ljava/util/MissingResourceException; +Ljava/util/NavigableMap; +Ljava/util/NavigableSet; +Ljava/util/NoSuchElementException; +Ljava/util/Objects; +Ljava/util/Observable; +Ljava/util/Observer; +Ljava/util/PrimitiveIterator$OfInt; +Ljava/util/PrimitiveIterator; +Ljava/util/PriorityQueue$Itr; +Ljava/util/PriorityQueue; +Ljava/util/Properties$LineReader; +Ljava/util/Properties; +Ljava/util/Queue; +Ljava/util/Random; +Ljava/util/RandomAccess; +Ljava/util/RandomAccessSubList; +Ljava/util/RegularEnumSet$EnumSetIterator; +Ljava/util/RegularEnumSet; +Ljava/util/ResourceBundle$1; +Ljava/util/ResourceBundle; +Ljava/util/Set; +Ljava/util/SimpleTimeZone; +Ljava/util/SortedMap; +Ljava/util/SortedSet; +Ljava/util/Spliterator$OfDouble; +Ljava/util/Spliterator$OfInt; +Ljava/util/Spliterator$OfLong; +Ljava/util/Spliterator$OfPrimitive; +Ljava/util/Spliterator; +Ljava/util/Spliterators$EmptySpliterator$OfDouble; +Ljava/util/Spliterators$EmptySpliterator$OfInt; +Ljava/util/Spliterators$EmptySpliterator$OfLong; +Ljava/util/Spliterators$EmptySpliterator$OfRef; +Ljava/util/Spliterators$EmptySpliterator; +Ljava/util/Spliterators$IteratorSpliterator; +Ljava/util/Spliterators; +Ljava/util/Stack; +Ljava/util/StringJoiner; +Ljava/util/StringTokenizer; +Ljava/util/SubList; +Ljava/util/TimSort; +Ljava/util/TimeZone; +Ljava/util/Timer$1; +Ljava/util/TimerTask; +Ljava/util/TimerThread; +Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView; +Ljava/util/TreeMap$AscendingSubMap; +Ljava/util/TreeMap$EntryIterator; +Ljava/util/TreeMap$EntrySet; +Ljava/util/TreeMap$KeyIterator; +Ljava/util/TreeMap$KeySet; +Ljava/util/TreeMap$NavigableSubMap$EntrySetView; +Ljava/util/TreeMap$NavigableSubMap$SubMapEntryIterator; +Ljava/util/TreeMap$NavigableSubMap$SubMapIterator; +Ljava/util/TreeMap$NavigableSubMap; +Ljava/util/TreeMap$PrivateEntryIterator; +Ljava/util/TreeMap$TreeMapEntry; +Ljava/util/TreeMap$ValueIterator; +Ljava/util/TreeMap$Values; +Ljava/util/TreeMap; +Ljava/util/TreeSet; +Ljava/util/UUID$Holder; +Ljava/util/UUID; +Ljava/util/Vector$1; +Ljava/util/Vector$Itr; +Ljava/util/Vector; +Ljava/util/WeakHashMap$Entry; +Ljava/util/WeakHashMap$EntrySet; +Ljava/util/WeakHashMap$HashIterator; +Ljava/util/WeakHashMap$KeyIterator; +Ljava/util/WeakHashMap$KeySet; +Ljava/util/WeakHashMap$ValueIterator; +Ljava/util/WeakHashMap$Values; +Ljava/util/WeakHashMap; +Ljava/util/concurrent/-$Lambda$xR9BLpu6SifNikvFgr4lEiECBsk; +Ljava/util/concurrent/AbstractExecutorService; +Ljava/util/concurrent/ArrayBlockingQueue; +Ljava/util/concurrent/BlockingDeque; +Ljava/util/concurrent/BlockingQueue; +Ljava/util/concurrent/Callable; +Ljava/util/concurrent/CancellationException; +Ljava/util/concurrent/ConcurrentHashMap$BaseIterator; +Ljava/util/concurrent/ConcurrentHashMap$BulkTask; +Ljava/util/concurrent/ConcurrentHashMap$CollectionView; +Ljava/util/concurrent/ConcurrentHashMap$CounterCell; +Ljava/util/concurrent/ConcurrentHashMap$EntryIterator; +Ljava/util/concurrent/ConcurrentHashMap$EntrySetView; +Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask; +Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask; +Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode; +Ljava/util/concurrent/ConcurrentHashMap$KeyIterator; +Ljava/util/concurrent/ConcurrentHashMap$KeySetView; +Ljava/util/concurrent/ConcurrentHashMap$MapEntry; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask; +Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask; +Ljava/util/concurrent/ConcurrentHashMap$Node; +Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask; +Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask; +Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask; +Ljava/util/concurrent/ConcurrentHashMap$ReservationNode; +Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask; +Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask; +Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask; +Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask; +Ljava/util/concurrent/ConcurrentHashMap$Segment; +Ljava/util/concurrent/ConcurrentHashMap$Traverser; +Ljava/util/concurrent/ConcurrentHashMap$TreeBin; +Ljava/util/concurrent/ConcurrentHashMap$TreeNode; +Ljava/util/concurrent/ConcurrentHashMap$ValueIterator; +Ljava/util/concurrent/ConcurrentHashMap$ValuesView; +Ljava/util/concurrent/ConcurrentHashMap; +Ljava/util/concurrent/ConcurrentLinkedQueue$Node; +Ljava/util/concurrent/ConcurrentLinkedQueue; +Ljava/util/concurrent/ConcurrentMap; +Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator; +Ljava/util/concurrent/CopyOnWriteArrayList; +Ljava/util/concurrent/CopyOnWriteArraySet; +Ljava/util/concurrent/CountDownLatch$Sync; +Ljava/util/concurrent/CountDownLatch; +Ljava/util/concurrent/CountedCompleter; +Ljava/util/concurrent/Delayed; +Ljava/util/concurrent/ExecutionException; +Ljava/util/concurrent/Executor; +Ljava/util/concurrent/ExecutorService; +Ljava/util/concurrent/Executors$DefaultThreadFactory; +Ljava/util/concurrent/Executors$DelegatedExecutorService; +Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService; +Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService; +Ljava/util/concurrent/Executors$RunnableAdapter; +Ljava/util/concurrent/Executors; +Ljava/util/concurrent/ForkJoinPool; +Ljava/util/concurrent/ForkJoinTask$ExceptionNode; +Ljava/util/concurrent/ForkJoinTask; +Ljava/util/concurrent/Future; +Ljava/util/concurrent/FutureTask$WaitNode; +Ljava/util/concurrent/FutureTask; +Ljava/util/concurrent/LinkedBlockingDeque$Node; +Ljava/util/concurrent/LinkedBlockingDeque; +Ljava/util/concurrent/LinkedBlockingQueue$Node; +Ljava/util/concurrent/LinkedBlockingQueue; +Ljava/util/concurrent/RejectedExecutionException; +Ljava/util/concurrent/RejectedExecutionHandler; +Ljava/util/concurrent/RunnableFuture; +Ljava/util/concurrent/RunnableScheduledFuture; +Ljava/util/concurrent/ScheduledExecutorService; +Ljava/util/concurrent/ScheduledFuture; +Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue; +Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; +Ljava/util/concurrent/ScheduledThreadPoolExecutor; +Ljava/util/concurrent/Semaphore$NonfairSync; +Ljava/util/concurrent/Semaphore$Sync; +Ljava/util/concurrent/Semaphore; +Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; +Ljava/util/concurrent/SynchronousQueue$TransferStack; +Ljava/util/concurrent/SynchronousQueue$Transferer; +Ljava/util/concurrent/SynchronousQueue; +Ljava/util/concurrent/ThreadFactory; +Ljava/util/concurrent/ThreadLocalRandom$1; +Ljava/util/concurrent/ThreadLocalRandom; +Ljava/util/concurrent/ThreadPoolExecutor$AbortPolicy; +Ljava/util/concurrent/ThreadPoolExecutor$Worker; +Ljava/util/concurrent/ThreadPoolExecutor; +Ljava/util/concurrent/TimeUnit$1; +Ljava/util/concurrent/TimeUnit$2; +Ljava/util/concurrent/TimeUnit$3; +Ljava/util/concurrent/TimeUnit$4; +Ljava/util/concurrent/TimeUnit$5; +Ljava/util/concurrent/TimeUnit$6; +Ljava/util/concurrent/TimeUnit$7; +Ljava/util/concurrent/TimeUnit; +Ljava/util/concurrent/TimeoutException; +Ljava/util/concurrent/atomic/AtomicBoolean; +Ljava/util/concurrent/atomic/AtomicInteger; +Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1; +Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; +Ljava/util/concurrent/atomic/AtomicLong; +Ljava/util/concurrent/atomic/AtomicReference; +Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl; +Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; +Ljava/util/concurrent/locks/AbstractOwnableSynchronizer; +Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; +Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; +Ljava/util/concurrent/locks/AbstractQueuedSynchronizer; +Ljava/util/concurrent/locks/Condition; +Ljava/util/concurrent/locks/Lock; +Ljava/util/concurrent/locks/LockSupport; +Ljava/util/concurrent/locks/ReadWriteLock; +Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; +Ljava/util/concurrent/locks/ReentrantLock$Sync; +Ljava/util/concurrent/locks/ReentrantLock; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; +Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock; +Ljava/util/concurrent/locks/ReentrantReadWriteLock; +Ljava/util/function/-$Lambda$1MZdIZ-DL_fjy9l0o8IMJk57T2g; +Ljava/util/function/-$Lambda$VGDeaUHZQIZywZW2ttlyhwk3Cmk$1; +Ljava/util/function/-$Lambda$VGDeaUHZQIZywZW2ttlyhwk3Cmk; +Ljava/util/function/BiConsumer; +Ljava/util/function/BiFunction; +Ljava/util/function/BinaryOperator; +Ljava/util/function/Consumer; +Ljava/util/function/DoubleBinaryOperator; +Ljava/util/function/DoubleUnaryOperator; +Ljava/util/function/Function; +Ljava/util/function/IntBinaryOperator; +Ljava/util/function/IntConsumer; +Ljava/util/function/IntFunction; +Ljava/util/function/IntToDoubleFunction; +Ljava/util/function/IntToLongFunction; +Ljava/util/function/IntUnaryOperator; +Ljava/util/function/LongBinaryOperator; +Ljava/util/function/LongUnaryOperator; +Ljava/util/function/Predicate; +Ljava/util/function/Supplier; +Ljava/util/function/ToDoubleBiFunction; +Ljava/util/function/ToDoubleFunction; +Ljava/util/function/ToIntBiFunction; +Ljava/util/function/ToIntFunction; +Ljava/util/function/ToLongBiFunction; +Ljava/util/function/ToLongFunction; +Ljava/util/function/UnaryOperator; +Ljava/util/jar/JarEntry; +Ljava/util/jar/JarFile$JarEntryIterator; +Ljava/util/jar/JarFile$JarFileEntry; +Ljava/util/jar/JarFile; +Ljava/util/logging/ErrorManager; +Ljava/util/logging/Formatter; +Ljava/util/logging/Handler; +Ljava/util/logging/Level$KnownLevel; +Ljava/util/logging/Level; +Ljava/util/logging/LogManager$1; +Ljava/util/logging/LogManager$2; +Ljava/util/logging/LogManager$3; +Ljava/util/logging/LogManager$5; +Ljava/util/logging/LogManager$Cleaner; +Ljava/util/logging/LogManager$LogNode; +Ljava/util/logging/LogManager$LoggerContext$1; +Ljava/util/logging/LogManager$LoggerContext; +Ljava/util/logging/LogManager$LoggerWeakRef; +Ljava/util/logging/LogManager$RootLogger; +Ljava/util/logging/LogManager$SystemLoggerContext; +Ljava/util/logging/LogManager; +Ljava/util/logging/Logger$LoggerBundle; +Ljava/util/logging/Logger; +Ljava/util/logging/LoggingPermission; +Ljava/util/logging/LoggingProxyImpl; +Ljava/util/prefs/AbstractPreferences; +Ljava/util/prefs/FileSystemPreferences; +Ljava/util/prefs/Preferences; +Ljava/util/regex/MatchResult; +Ljava/util/regex/Matcher; +Ljava/util/regex/Pattern; +Ljava/util/regex/PatternSyntaxException; +Ljava/util/stream/BaseStream; +Ljava/util/stream/DoubleStream; +Ljava/util/stream/IntStream; +Ljava/util/stream/LongStream; +Ljava/util/stream/PipelineHelper; +Ljava/util/stream/ReferencePipeline$2$1; +Ljava/util/stream/ReferencePipeline$2; +Ljava/util/stream/ReferencePipeline$Head; +Ljava/util/stream/ReferencePipeline; +Ljava/util/stream/Sink$ChainedReference; +Ljava/util/stream/Sink; +Ljava/util/stream/Stream; +Ljava/util/stream/StreamOpFlag$MaskBuilder; +Ljava/util/stream/StreamSupport; +Ljava/util/stream/TerminalOp; +Ljava/util/zip/Adler32; +Ljava/util/zip/CRC32; +Ljava/util/zip/CheckedInputStream; +Ljava/util/zip/Checksum; +Ljava/util/zip/DataFormatException; +Ljava/util/zip/Deflater; +Ljava/util/zip/DeflaterOutputStream; +Ljava/util/zip/GZIPInputStream$1; +Ljava/util/zip/GZIPInputStream; +Ljava/util/zip/GZIPOutputStream; +Ljava/util/zip/Inflater; +Ljava/util/zip/InflaterInputStream; +Ljava/util/zip/ZStreamRef; +Ljava/util/zip/ZipCoder; +Ljava/util/zip/ZipConstants; +Ljava/util/zip/ZipEntry; +Ljava/util/zip/ZipFile$ZipEntryIterator; +Ljava/util/zip/ZipFile$ZipFileInflaterInputStream; +Ljava/util/zip/ZipFile$ZipFileInputStream; +Ljava/util/zip/ZipFile; +Ljava/util/zip/ZipUtils; +Ljavax/crypto/BadPaddingException; +Ljavax/crypto/Cipher$CipherSpiAndProvider; +Ljavax/crypto/Cipher$InitParams; +Ljavax/crypto/Cipher$SpiAndProviderUpdater; +Ljavax/crypto/Cipher$Transform; +Ljavax/crypto/Cipher; +Ljavax/crypto/CipherSpi; +Ljavax/crypto/IllegalBlockSizeException; +Ljavax/crypto/MacSpi; +Ljavax/crypto/NoSuchPaddingException; +Ljavax/crypto/NullCipher; +Ljavax/crypto/SecretKey; +Ljavax/crypto/ShortBufferException; +Ljavax/crypto/spec/GCMParameterSpec; +Ljavax/crypto/spec/IvParameterSpec; +Ljavax/crypto/spec/SecretKeySpec; +Ljavax/microedition/khronos/egl/EGL10; +Ljavax/microedition/khronos/egl/EGL; +Ljavax/microedition/khronos/egl/EGLConfig; +Ljavax/microedition/khronos/egl/EGLDisplay; +Ljavax/microedition/khronos/egl/EGLSurface; +Ljavax/microedition/khronos/opengles/GL10; +Ljavax/microedition/khronos/opengles/GL10Ext; +Ljavax/microedition/khronos/opengles/GL11; +Ljavax/microedition/khronos/opengles/GL11Ext; +Ljavax/microedition/khronos/opengles/GL11ExtensionPack; +Ljavax/microedition/khronos/opengles/GL; +Ljavax/net/DefaultSocketFactory; +Ljavax/net/SocketFactory; +Ljavax/net/ssl/ExtendedSSLSession; +Ljavax/net/ssl/HandshakeCompletedListener; +Ljavax/net/ssl/HostnameVerifier; +Ljavax/net/ssl/HttpsURLConnection; +Ljavax/net/ssl/KeyManager; +Ljavax/net/ssl/KeyManagerFactory$1; +Ljavax/net/ssl/KeyManagerFactory; +Ljavax/net/ssl/KeyManagerFactorySpi; +Ljavax/net/ssl/SNIHostName; +Ljavax/net/ssl/SSLContext; +Ljavax/net/ssl/SSLContextSpi; +Ljavax/net/ssl/SSLEngine; +Ljavax/net/ssl/SSLException; +Ljavax/net/ssl/SSLParameters; +Ljavax/net/ssl/SSLPeerUnverifiedException; +Ljavax/net/ssl/SSLProtocolException; +Ljavax/net/ssl/SSLSession; +Ljavax/net/ssl/SSLSessionContext; +Ljavax/net/ssl/SSLSocket; +Ljavax/net/ssl/SSLSocketFactory$1; +Ljavax/net/ssl/SSLSocketFactory; +Ljavax/net/ssl/TrustManager; +Ljavax/net/ssl/TrustManagerFactory$1; +Ljavax/net/ssl/TrustManagerFactory; +Ljavax/net/ssl/TrustManagerFactorySpi; +Ljavax/net/ssl/X509ExtendedKeyManager; +Ljavax/net/ssl/X509ExtendedTrustManager; +Ljavax/net/ssl/X509KeyManager; +Ljavax/net/ssl/X509TrustManager; +Ljavax/security/auth/Destroyable; +Ljavax/security/auth/callback/UnsupportedCallbackException; +Ljavax/security/auth/x500/X500Principal; +Ljavax/security/cert/CertificateException; +Ljavax/xml/parsers/ParserConfigurationException; +Ljavax/xml/parsers/SAXParser; +Ljavax/xml/parsers/SAXParserFactory; +Llibcore/icu/DateUtilsBridge; +Llibcore/icu/ICU; +Llibcore/icu/LocaleData; +Llibcore/icu/NativeConverter; +Llibcore/icu/TimeZoneNames; +Llibcore/internal/StringPool; +Llibcore/io/AsynchronousCloseMonitor; +Llibcore/io/BlockGuardOs; +Llibcore/io/BufferIterator; +Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1; +Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection; +Llibcore/io/ClassPathURLStreamHandler; +Llibcore/io/DropBox$DefaultReporter; +Llibcore/io/DropBox$Reporter; +Llibcore/io/DropBox; +Llibcore/io/EventLogger$DefaultReporter; +Llibcore/io/EventLogger$Reporter; +Llibcore/io/EventLogger; +Llibcore/io/ForwardingOs; +Llibcore/io/IoBridge; +Llibcore/io/IoTracker$Mode; +Llibcore/io/IoTracker; +Llibcore/io/IoUtils; +Llibcore/io/Libcore; +Llibcore/io/Linux; +Llibcore/io/Memory; +Llibcore/io/MemoryMappedFile; +Llibcore/io/NioBufferIterator; +Llibcore/io/Os; +Llibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy; +Llibcore/net/NetworkSecurityPolicy; +Llibcore/net/UriCodec; +Llibcore/net/event/NetworkEventDispatcher; +Llibcore/net/event/NetworkEventListener; +Llibcore/reflect/AnnotatedElements; +Llibcore/reflect/AnnotationFactory; +Llibcore/reflect/AnnotationMember$DefaultValues; +Llibcore/reflect/AnnotationMember; +Llibcore/reflect/GenericArrayTypeImpl; +Llibcore/reflect/GenericSignatureParser; +Llibcore/reflect/ListOfTypes; +Llibcore/reflect/ListOfVariables; +Llibcore/reflect/ParameterizedTypeImpl; +Llibcore/reflect/Types; +Llibcore/util/BasicLruCache; +Llibcore/util/CharsetUtils; +Llibcore/util/CollectionUtils; +Llibcore/util/EmptyArray; +Llibcore/util/NativeAllocationRegistry$CleanerRunner; +Llibcore/util/NativeAllocationRegistry$CleanerThunk; +Llibcore/util/NativeAllocationRegistry; +Llibcore/util/Objects; +Llibcore/util/TimeZoneDataFiles; +Llibcore/util/ZoneInfo$CheckedArithmeticException; +Llibcore/util/ZoneInfo$WallTime; +Llibcore/util/ZoneInfo; +Llibcore/util/ZoneInfoDB$TzData$1; +Llibcore/util/ZoneInfoDB$TzData; +Llibcore/util/ZoneInfoDB; +Lorg/apache/commons/logging/Log; +Lorg/apache/commons/logging/impl/WeakHashtable; +Lorg/apache/harmony/dalvik/NativeTestTarget; +Lorg/apache/harmony/dalvik/ddmc/Chunk; +Lorg/apache/harmony/dalvik/ddmc/ChunkHandler; +Lorg/apache/harmony/dalvik/ddmc/DdmServer; +Lorg/apache/harmony/dalvik/ddmc/DdmVmInternal; +Lorg/apache/harmony/luni/internal/util/TimezoneGetter; +Lorg/apache/harmony/xml/ExpatAttributes; +Lorg/apache/harmony/xml/ExpatParser$CurrentAttributes; +Lorg/apache/harmony/xml/ExpatParser$ExpatLocator; +Lorg/apache/harmony/xml/ExpatParser; +Lorg/apache/harmony/xml/ExpatReader; +Lorg/apache/harmony/xml/parsers/SAXParserFactoryImpl; +Lorg/apache/harmony/xml/parsers/SAXParserImpl; +Lorg/apache/http/ConnectionReuseStrategy; +Lorg/apache/http/HeaderElement; +Lorg/apache/http/HttpEntity; +Lorg/apache/http/HttpException; +Lorg/apache/http/HttpHost; +Lorg/apache/http/HttpMessage; +Lorg/apache/http/HttpRequest; +Lorg/apache/http/HttpRequestInterceptor; +Lorg/apache/http/HttpResponse; +Lorg/apache/http/HttpResponseFactory; +Lorg/apache/http/NameValuePair; +Lorg/apache/http/ProtocolException; +Lorg/apache/http/ProtocolVersion; +Lorg/apache/http/ReasonPhraseCatalog; +Lorg/apache/http/StatusLine; +Lorg/apache/http/client/HttpClient; +Lorg/apache/http/client/ResponseHandler; +Lorg/apache/http/client/methods/AbortableHttpRequest; +Lorg/apache/http/client/methods/HttpRequestBase; +Lorg/apache/http/client/methods/HttpUriRequest; +Lorg/apache/http/client/params/HttpClientParams; +Lorg/apache/http/conn/ClientConnectionManager; +Lorg/apache/http/conn/ClientConnectionOperator; +Lorg/apache/http/conn/ConnectTimeoutException; +Lorg/apache/http/conn/params/ConnManagerPNames; +Lorg/apache/http/conn/params/ConnManagerParams$1; +Lorg/apache/http/conn/params/ConnPerRoute; +Lorg/apache/http/conn/scheme/LayeredSocketFactory; +Lorg/apache/http/conn/scheme/Scheme; +Lorg/apache/http/conn/scheme/SchemeRegistry; +Lorg/apache/http/conn/scheme/SocketFactory; +Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; +Lorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier; +Lorg/apache/http/conn/ssl/StrictHostnameVerifier; +Lorg/apache/http/conn/ssl/X509HostnameVerifier; +Lorg/apache/http/entity/AbstractHttpEntity; +Lorg/apache/http/entity/BasicHttpEntity; +Lorg/apache/http/impl/DefaultConnectionReuseStrategy; +Lorg/apache/http/impl/DefaultHttpResponseFactory; +Lorg/apache/http/impl/client/AbstractHttpClient; +Lorg/apache/http/impl/client/DefaultHttpClient; +Lorg/apache/http/impl/conn/IdleConnectionHandler; +Lorg/apache/http/impl/conn/tsccm/AbstractConnPool; +Lorg/apache/http/impl/conn/tsccm/ConnPoolByRoute; +Lorg/apache/http/impl/conn/tsccm/RefQueueHandler; +Lorg/apache/http/impl/conn/tsccm/RefQueueWorker; +Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager; +Lorg/apache/http/impl/cookie/DateParseException; +Lorg/apache/http/impl/cookie/DateUtils$DateFormatHolder$1; +Lorg/apache/http/message/AbstractHttpMessage; +Lorg/apache/http/message/BasicHeader; +Lorg/apache/http/message/BasicHeaderElement; +Lorg/apache/http/message/BasicHttpResponse; +Lorg/apache/http/message/BasicNameValuePair; +Lorg/apache/http/message/BasicStatusLine; +Lorg/apache/http/message/HeaderGroup; +Lorg/apache/http/message/HeaderValueParser; +Lorg/apache/http/message/ParserCursor; +Lorg/apache/http/params/AbstractHttpParams; +Lorg/apache/http/params/BasicHttpParams; +Lorg/apache/http/params/CoreConnectionPNames; +Lorg/apache/http/params/CoreProtocolPNames; +Lorg/apache/http/params/HttpConnectionParams; +Lorg/apache/http/params/HttpParams; +Lorg/apache/http/params/HttpProtocolParams; +Lorg/apache/http/protocol/BasicHttpProcessor; +Lorg/apache/http/protocol/HTTP; +Lorg/apache/http/protocol/HttpContext; +Lorg/apache/http/protocol/HttpRequestInterceptorList; +Lorg/apache/http/protocol/HttpResponseInterceptorList; +Lorg/apache/http/util/CharArrayBuffer; +Lorg/ccil/cowan/tagsoup/AttributesImpl; +Lorg/ccil/cowan/tagsoup/AutoDetector; +Lorg/ccil/cowan/tagsoup/Element; +Lorg/ccil/cowan/tagsoup/ElementType; +Lorg/ccil/cowan/tagsoup/HTMLSchema; +Lorg/ccil/cowan/tagsoup/Parser$1; +Lorg/ccil/cowan/tagsoup/ScanHandler; +Lorg/ccil/cowan/tagsoup/Scanner; +Lorg/ccil/cowan/tagsoup/Schema; +Lorg/json/JSON; +Lorg/json/JSONArray; +Lorg/json/JSONException; +Lorg/json/JSONObject$1; +Lorg/json/JSONObject; +Lorg/json/JSONStringer; +Lorg/json/JSONTokener; +Lorg/kxml2/io/KXmlParser$ValueContext; +Lorg/kxml2/io/KXmlParser; +Lorg/xml/sax/Attributes; +Lorg/xml/sax/DTDHandler; +Lorg/xml/sax/EntityResolver; +Lorg/xml/sax/ErrorHandler; +Lorg/xml/sax/InputSource; +Lorg/xml/sax/Locator; +Lorg/xml/sax/SAXException; +Lorg/xml/sax/XMLReader; +Lorg/xml/sax/ext/LexicalHandler; +Lorg/xml/sax/helpers/DefaultHandler; +Lorg/xmlpull/v1/XmlPullParser; +Lorg/xmlpull/v1/XmlPullParserException; +Lorg/xmlpull/v1/XmlSerializer; +Lsun/invoke/util/BytecodeDescriptor; +Lsun/invoke/util/VerifyAccess; +Lsun/invoke/util/Wrapper$Format; +Lsun/invoke/util/Wrapper; +Lsun/misc/Cleaner; +Lsun/misc/CompoundEnumeration; +Lsun/misc/FDBigInteger; +Lsun/misc/FloatingDecimal$1; +Lsun/misc/FloatingDecimal$ASCIIToBinaryBuffer; +Lsun/misc/FloatingDecimal$ASCIIToBinaryConverter; +Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer; +Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; +Lsun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer; +Lsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer; +Lsun/misc/FloatingDecimal; +Lsun/misc/FormattedFloatingDecimal$1; +Lsun/misc/IOUtils; +Lsun/misc/JavaIOFileDescriptorAccess; +Lsun/misc/SharedSecrets; +Lsun/misc/Unsafe; +Lsun/misc/VM; +Lsun/misc/Version; +Lsun/net/ConnectionResetException; +Lsun/net/NetHooks; +Lsun/net/NetProperties$1; +Lsun/net/spi/DefaultProxySelector$1; +Lsun/net/spi/DefaultProxySelector; +Lsun/net/spi/nameservice/NameService; +Lsun/net/util/IPAddressUtil; +Lsun/net/www/ParseUtil; +Lsun/net/www/protocol/file/Handler; +Lsun/net/www/protocol/jar/Handler; +Lsun/nio/ch/DatagramChannelImpl; +Lsun/nio/ch/DatagramDispatcher; +Lsun/nio/ch/DirectBuffer; +Lsun/nio/ch/FileChannelImpl$Unmapper; +Lsun/nio/ch/FileChannelImpl; +Lsun/nio/ch/FileDispatcher; +Lsun/nio/ch/FileDispatcherImpl; +Lsun/nio/ch/FileKey; +Lsun/nio/ch/FileLockTable; +Lsun/nio/ch/IOStatus; +Lsun/nio/ch/IOUtil; +Lsun/nio/ch/Interruptible; +Lsun/nio/ch/NativeDispatcher; +Lsun/nio/ch/NativeThread; +Lsun/nio/ch/NativeThreadSet; +Lsun/nio/ch/Net; +Lsun/nio/ch/SelChImpl; +Lsun/nio/ch/ServerSocketChannelImpl; +Lsun/nio/ch/SharedFileLockTable$FileLockReference; +Lsun/nio/ch/SocketChannelImpl; +Lsun/nio/ch/Util$1; +Lsun/nio/cs/ArrayEncoder; +Lsun/nio/cs/StreamDecoder; +Lsun/nio/cs/StreamEncoder; +Lsun/nio/fs/AbstractFileSystemProvider; +Lsun/nio/fs/AbstractPath; +Lsun/nio/fs/DefaultFileSystemProvider; +Lsun/nio/fs/LinuxFileSystem; +Lsun/nio/fs/LinuxFileSystemProvider; +Lsun/nio/fs/NativeBuffer$Deallocator; +Lsun/nio/fs/UnixChannelFactory$Flags; +Lsun/nio/fs/UnixFileSystem; +Lsun/nio/fs/UnixFileSystemProvider; +Lsun/security/action/GetBooleanAction; +Lsun/security/action/GetPropertyAction; +Lsun/security/jca/GetInstance$Instance; +Lsun/security/jca/GetInstance; +Lsun/security/jca/ProviderConfig$2; +Lsun/security/jca/ProviderConfig; +Lsun/security/jca/ProviderList$1; +Lsun/security/jca/ProviderList$2; +Lsun/security/jca/ProviderList$3; +Lsun/security/jca/ProviderList$ServiceList$1; +Lsun/security/jca/ProviderList$ServiceList; +Lsun/security/jca/ProviderList; +Lsun/security/jca/Providers; +Lsun/security/jca/ServiceId; +Lsun/security/provider/CertPathProvider; +Lsun/security/provider/X509Factory; +Lsun/security/provider/certpath/AdaptableX509CertSelector; +Lsun/security/provider/certpath/AlgorithmChecker; +Lsun/security/provider/certpath/BasicChecker; +Lsun/security/provider/certpath/CertPathHelper; +Lsun/security/provider/certpath/ConstraintsChecker; +Lsun/security/provider/certpath/KeyChecker; +Lsun/security/provider/certpath/PKIX$ValidatorParams; +Lsun/security/provider/certpath/PKIX; +Lsun/security/provider/certpath/PKIXCertPathValidator; +Lsun/security/provider/certpath/PKIXMasterCertPathValidator; +Lsun/security/provider/certpath/PolicyChecker; +Lsun/security/provider/certpath/PolicyNodeImpl; +Lsun/security/util/AbstractAlgorithmConstraints$1; +Lsun/security/util/AbstractAlgorithmConstraints; +Lsun/security/util/AlgorithmDecomposer; +Lsun/security/util/BitArray; +Lsun/security/util/ByteArrayLexOrder; +Lsun/security/util/ByteArrayTagOrder; +Lsun/security/util/Cache$EqualByteArray; +Lsun/security/util/Cache; +Lsun/security/util/CertConstraintParameters; +Lsun/security/util/Debug; +Lsun/security/util/DerEncoder; +Lsun/security/util/DerIndefLenConverter; +Lsun/security/util/DerInputBuffer; +Lsun/security/util/DerInputStream; +Lsun/security/util/DerOutputStream; +Lsun/security/util/DerValue; +Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; +Lsun/security/util/DisabledAlgorithmConstraints$Constraint; +Lsun/security/util/DisabledAlgorithmConstraints$Constraints; +Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint; +Lsun/security/util/DisabledAlgorithmConstraints; +Lsun/security/util/KeyUtil; +Lsun/security/util/Length; +Lsun/security/util/MemoryCache$CacheEntry; +Lsun/security/util/MemoryCache$SoftCacheEntry; +Lsun/security/util/MemoryCache; +Lsun/security/util/ObjectIdentifier; +Lsun/security/x509/AVA; +Lsun/security/x509/AVAKeyword; +Lsun/security/x509/AccessDescription; +Lsun/security/x509/AlgorithmId; +Lsun/security/x509/AuthorityInfoAccessExtension; +Lsun/security/x509/AuthorityKeyIdentifierExtension; +Lsun/security/x509/BasicConstraintsExtension; +Lsun/security/x509/CRLDistributionPointsExtension; +Lsun/security/x509/CRLNumberExtension; +Lsun/security/x509/CertAttrSet; +Lsun/security/x509/CertificateAlgorithmId; +Lsun/security/x509/CertificateExtensions; +Lsun/security/x509/CertificateIssuerExtension; +Lsun/security/x509/CertificatePoliciesExtension; +Lsun/security/x509/CertificatePolicyId; +Lsun/security/x509/CertificateSerialNumber; +Lsun/security/x509/CertificateValidity; +Lsun/security/x509/CertificateVersion; +Lsun/security/x509/CertificateX509Key; +Lsun/security/x509/DNSName; +Lsun/security/x509/DeltaCRLIndicatorExtension; +Lsun/security/x509/DistributionPoint; +Lsun/security/x509/ExtendedKeyUsageExtension; +Lsun/security/x509/Extension; +Lsun/security/x509/FreshestCRLExtension; +Lsun/security/x509/GeneralName; +Lsun/security/x509/GeneralNameInterface; +Lsun/security/x509/GeneralNames; +Lsun/security/x509/IssuerAlternativeNameExtension; +Lsun/security/x509/IssuingDistributionPointExtension; +Lsun/security/x509/KeyIdentifier; +Lsun/security/x509/KeyUsageExtension; +Lsun/security/x509/NameConstraintsExtension; +Lsun/security/x509/OCSPNoCheckExtension; +Lsun/security/x509/OIDMap$OIDInfo; +Lsun/security/x509/OIDMap; +Lsun/security/x509/PolicyConstraintsExtension; +Lsun/security/x509/PolicyInformation; +Lsun/security/x509/PolicyMappingsExtension; +Lsun/security/x509/PrivateKeyUsageExtension; +Lsun/security/x509/RDN; +Lsun/security/x509/SerialNumber; +Lsun/security/x509/SubjectAlternativeNameExtension; +Lsun/security/x509/SubjectInfoAccessExtension; +Lsun/security/x509/SubjectKeyIdentifierExtension; +Lsun/security/x509/URIName; +Lsun/security/x509/X500Name$1; +Lsun/security/x509/X500Name; +Lsun/security/x509/X509AttributeName; +Lsun/security/x509/X509CertImpl; +Lsun/security/x509/X509CertInfo; +Lsun/security/x509/X509Key; +Lsun/util/calendar/AbstractCalendar; +Lsun/util/calendar/BaseCalendar$Date; +Lsun/util/calendar/BaseCalendar; +Lsun/util/calendar/CalendarDate; +Lsun/util/calendar/CalendarSystem; +Lsun/util/calendar/CalendarUtils; +Lsun/util/calendar/Gregorian$Date; +Lsun/util/calendar/Gregorian; +Lsun/util/calendar/JulianCalendar; +Lsun/util/calendar/LocalGregorianCalendar; +Lsun/util/locale/BaseLocale$Cache; +Lsun/util/locale/BaseLocale$Key; +Lsun/util/locale/BaseLocale; +Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar; +Lsun/util/locale/InternalLocaleBuilder; +Lsun/util/locale/LanguageTag; +Lsun/util/locale/LocaleObjectCache$CacheEntry; +Lsun/util/locale/LocaleObjectCache; +Lsun/util/locale/LocaleSyntaxException; +Lsun/util/locale/LocaleUtils; +Lsun/util/locale/ParseStatus; +Lsun/util/locale/StringTokenIterator; +Lsun/util/logging/LoggingProxy; +Lsun/util/logging/LoggingSupport$1; +Lsun/util/logging/LoggingSupport; +Lsun/util/logging/PlatformLogger$1; +Lsun/util/logging/PlatformLogger$Level; +Lsun/util/logging/PlatformLogger; diff --git a/config/compiled-classes-phone b/config/compiled-classes-phone index 384540a910bd5816beda2dbcf819dee1e41b7ab4..408cbb28243c47bf380b07e91a61cc2e54622d62 100644 --- a/config/compiled-classes-phone +++ b/config/compiled-classes-phone @@ -150,6 +150,7 @@ android.app.-$Lambda$CsyQO--8YdRe5wlajUCi-L98enA$1 android.app.-$Lambda$CsyQO--8YdRe5wlajUCi-L98enA$2 android.app.-$Lambda$CsyQO--8YdRe5wlajUCi-L98enA$3 android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk +android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI$1 android.app.-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo @@ -256,6 +257,7 @@ android.app.BroadcastOptions android.app.ContentProviderHolder android.app.ContentProviderHolder$1 android.app.ContextImpl +android.app.ContextImpl$1 android.app.ContextImpl$ApplicationContentResolver android.app.DatePickerDialog$OnDateSetListener android.app.DexLoadReporter @@ -370,6 +372,8 @@ android.app.IntentService android.app.IntentService$ServiceHandler android.app.JobSchedulerImpl android.app.KeyguardManager +android.app.KeyguardManager$1 +android.app.KeyguardManager$KeyguardDismissCallback android.app.ListActivity android.app.ListFragment android.app.ListFragment$1 @@ -542,6 +546,9 @@ android.app.SystemServiceRegistry$8 android.app.SystemServiceRegistry$80 android.app.SystemServiceRegistry$81 android.app.SystemServiceRegistry$82 +android.app.SystemServiceRegistry$83 +android.app.SystemServiceRegistry$84 +android.app.SystemServiceRegistry$85 android.app.SystemServiceRegistry$9 android.app.SystemServiceRegistry$CachedServiceFetcher android.app.SystemServiceRegistry$ServiceFetcher @@ -554,7 +561,10 @@ android.app.UserSwitchObserver android.app.Vr2dDisplayProperties android.app.VrManager android.app.WaitResult +android.app.WallpaperColors +android.app.WallpaperColors$1 android.app.WallpaperInfo +android.app.WallpaperInfo$1 android.app.WallpaperManager android.app.WallpaperManager$Globals android.app.admin.DeviceAdminInfo @@ -634,6 +644,8 @@ android.app.job.JobServiceEngine android.app.job.JobServiceEngine$JobHandler android.app.job.JobServiceEngine$JobInterface android.app.job.JobWorkItem +android.app.job.JobWorkItem$1 +android.app.timezone.RulesManager android.app.trust.IStrongAuthTracker android.app.trust.IStrongAuthTracker$Stub android.app.trust.IStrongAuthTracker$Stub$Proxy @@ -1136,6 +1148,7 @@ android.content.res.GradientColor android.content.res.ObbInfo android.content.res.ObbInfo$1 android.content.res.ObbScanner +android.content.res.ResourceId android.content.res.Resources android.content.res.Resources$NotFoundException android.content.res.Resources$Theme @@ -1189,6 +1202,7 @@ android.database.MergeCursor$1 android.database.Observable android.database.SQLException android.database.StaleDataException +android.database.sqlite.-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE android.database.sqlite.DatabaseObjectNotClosedException android.database.sqlite.SQLiteAbortException android.database.sqlite.SQLiteCantOpenDatabaseException @@ -1201,6 +1215,7 @@ android.database.sqlite.SQLiteConnection$PreparedStatementCache android.database.sqlite.SQLiteConnectionPool android.database.sqlite.SQLiteConnectionPool$AcquiredConnectionStatus android.database.sqlite.SQLiteConnectionPool$ConnectionWaiter +android.database.sqlite.SQLiteConnectionPool$IdleConnectionHandler android.database.sqlite.SQLiteConstraintException android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteCursorDriver @@ -1210,6 +1225,8 @@ android.database.sqlite.SQLiteDatabase$1 android.database.sqlite.SQLiteDatabase$2 android.database.sqlite.SQLiteDatabase$CursorFactory android.database.sqlite.SQLiteDatabase$CustomFunction +android.database.sqlite.SQLiteDatabase$OpenParams +android.database.sqlite.SQLiteDatabase$OpenParams$Builder android.database.sqlite.SQLiteDatabaseConfiguration android.database.sqlite.SQLiteDatabaseCorruptException android.database.sqlite.SQLiteDatabaseLockedException @@ -1270,6 +1287,7 @@ android.graphics.Canvas$NoImagePreloadHolder android.graphics.CanvasProperty android.graphics.Color android.graphics.ColorFilter +android.graphics.ColorFilter$NoImagePreloadHolder android.graphics.ColorMatrix android.graphics.ColorMatrixColorFilter android.graphics.ColorSpace @@ -1295,6 +1313,7 @@ android.graphics.ImageFormat android.graphics.Insets android.graphics.Interpolator android.graphics.Interpolator$Result +android.graphics.LeakyTypefaceStorage android.graphics.LightingColorFilter android.graphics.LinearGradient android.graphics.MaskFilter @@ -1344,6 +1363,7 @@ android.graphics.Region$1 android.graphics.Region$Op android.graphics.RegionIterator android.graphics.Shader +android.graphics.Shader$NoImagePreloadHolder android.graphics.Shader$TileMode android.graphics.SumPathEffect android.graphics.SurfaceTexture @@ -1857,6 +1877,7 @@ android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel$1 android.hardware.soundtrigger.SoundTrigger$GenericRecognitionEvent android.hardware.soundtrigger.SoundTrigger$GenericRecognitionEvent$1 android.hardware.soundtrigger.SoundTrigger$GenericSoundModel +android.hardware.soundtrigger.SoundTrigger$GenericSoundModel$1 android.hardware.soundtrigger.SoundTrigger$Keyphrase android.hardware.soundtrigger.SoundTrigger$Keyphrase$1 android.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionEvent @@ -1881,6 +1902,7 @@ android.hardware.usb.IUsbManager$Stub android.hardware.usb.IUsbManager$Stub$Proxy android.hardware.usb.UsbAccessory android.hardware.usb.UsbDevice +android.hardware.usb.UsbDevice$1 android.hardware.usb.UsbDeviceConnection android.hardware.usb.UsbManager android.hardware.usb.UsbPort @@ -2018,6 +2040,16 @@ android.icu.impl.SimpleFormatterImpl android.icu.impl.SoftCache android.icu.impl.StandardPlural android.icu.impl.StringPrepDataReader +android.icu.impl.TextTrieMap +android.icu.impl.TextTrieMap$Node +android.icu.impl.TimeZoneNamesFactoryImpl +android.icu.impl.TimeZoneNamesImpl +android.icu.impl.TimeZoneNamesImpl$MZ2TZsCache +android.icu.impl.TimeZoneNamesImpl$MZMapEntry +android.icu.impl.TimeZoneNamesImpl$TZ2MZsCache +android.icu.impl.TimeZoneNamesImpl$ZNames +android.icu.impl.TimeZoneNamesImpl$ZNames$NameTypeIndex +android.icu.impl.TimeZoneNamesImpl$ZNamesLoader android.icu.impl.Trie android.icu.impl.Trie$DataManipulate android.icu.impl.Trie$DefaultGetFoldingOffset @@ -2262,6 +2294,9 @@ android.icu.text.SimpleDateFormat android.icu.text.SimpleDateFormat$PatternItem android.icu.text.StringPrep android.icu.text.StringPrepParseException +android.icu.text.TimeZoneNames +android.icu.text.TimeZoneNames$Cache +android.icu.text.TimeZoneNames$Factory android.icu.text.TimeZoneNames$NameType android.icu.text.UCharacterIterator android.icu.text.UFieldPosition @@ -2277,6 +2312,7 @@ android.icu.text.UnicodeSet$Filter android.icu.text.UnicodeSet$GeneralCategoryMaskFilter android.icu.text.UnicodeSet$IntPropertyFilter android.icu.text.UnicodeSet$UnicodeSetIterator2 +android.icu.text.UnicodeSetSpanner android.icu.util.BasicTimeZone android.icu.util.ByteArrayWrapper android.icu.util.BytesTrie @@ -2603,6 +2639,7 @@ android.media.MediaRouter$RouteInfo$1 android.media.MediaRouter$SimpleCallback android.media.MediaRouter$Static android.media.MediaRouter$Static$1 +android.media.MediaRouter$Static$1$1 android.media.MediaRouter$Static$Client android.media.MediaRouter$Static$Client$1 android.media.MediaRouter$VolumeCallback @@ -2632,6 +2669,7 @@ android.media.Rating android.media.Rating$1 android.media.RemoteDisplay android.media.ResampleInputStream +android.media.Ringtone$MyOnCompletionListener android.media.SoundPool android.media.SoundPool$Builder android.media.SoundPool$EventHandler @@ -2835,6 +2873,7 @@ android.net.IpPrefix android.net.IpPrefix$1 android.net.IpSecConfig android.net.IpSecManager +android.net.IpSecManager$SpiUnavailableException android.net.LinkAddress android.net.LinkAddress$1 android.net.LinkProperties @@ -2941,6 +2980,7 @@ android.net.http.AndroidHttpClient$LoggingConfiguration android.net.http.HttpResponseCache android.net.http.SslCertificate android.net.http.X509TrustManagerExtensions +android.net.lowpan.LowpanManager android.net.metrics.ApfProgramEvent android.net.metrics.ApfProgramEvent$1 android.net.metrics.ApfStats @@ -3113,6 +3153,7 @@ android.opengl.Visibility android.os.-$Lambda$-dncxFEc2F2bgG2fsIoC6FC6WNE android.os.-$Lambda$-dncxFEc2F2bgG2fsIoC6FC6WNE$1 android.os.-$Lambda$6x30vPJhBKUfNY8tswxuZo3DCe0 +android.os.-$Lambda$BcGBlsGjMZMF6Ej78rWJ608MYSM android.os.AsyncResult android.os.AsyncTask android.os.AsyncTask$1 @@ -3150,6 +3191,7 @@ android.os.BatteryStats$Uid android.os.BatteryStats$Uid$Pid android.os.BatteryStats$Uid$Pkg android.os.BatteryStats$Uid$Pkg$Serv +android.os.BatteryStats$Uid$Proc android.os.BatteryStats$Uid$Sensor android.os.BatteryStats$Uid$Wakelock android.os.Binder @@ -3269,6 +3311,7 @@ android.os.OperationCanceledException android.os.Parcel android.os.Parcel$1 android.os.Parcel$2 +android.os.Parcel$ReadWriteHelper android.os.ParcelFileDescriptor android.os.ParcelFileDescriptor$1 android.os.ParcelFileDescriptor$2 @@ -3283,6 +3326,7 @@ android.os.Parcelable android.os.Parcelable$ClassLoaderCreator android.os.Parcelable$Creator android.os.ParcelableException +android.os.ParcelableException$1 android.os.ParcelableParcel android.os.ParcelableParcel$1 android.os.PatternMatcher @@ -3324,7 +3368,10 @@ android.os.ServiceManager$ServiceNotFoundException android.os.ServiceManagerNative android.os.ServiceManagerProxy android.os.ServiceSpecificException +android.os.SharedMemory +android.os.SharedMemory$1 android.os.ShellCallback +android.os.ShellCallback$1 android.os.StatFs android.os.StrictMode android.os.StrictMode$1 @@ -3460,6 +3507,7 @@ android.printservice.PrintServiceInfo$1 android.printservice.recommendation.IRecommendationsChangeListener android.provider.-$Lambda$87WmhkvObehVg0OMBzwa_MTVV8g android.provider.-$Lambda$a7Jyr6j_Mb70hHJ2ssL1AAhKh4c +android.provider.-$Lambda$asz6VwQ86PPY-v8JLMb7rx-pSqg android.provider.BaseColumns android.provider.BlockedNumberContract android.provider.BlockedNumberContract$BlockedNumbers @@ -3831,6 +3879,7 @@ android.system.StructPasswd android.system.StructPollfd android.system.StructStat android.system.StructStatVfs +android.system.StructTimespec android.system.StructTimeval android.system.StructUcred android.system.StructUtsname @@ -3899,6 +3948,8 @@ android.telecom.TelecomManager android.telecom.VideoProfile android.telecom.VideoProfile$1 android.telephony.CarrierConfigManager +android.telephony.CellIdentityLte +android.telephony.CellIdentityLte$1 android.telephony.CellIdentityWcdma android.telephony.CellIdentityWcdma$1 android.telephony.CellInfo @@ -3906,10 +3957,13 @@ android.telephony.CellInfo$1 android.telephony.CellInfoCdma android.telephony.CellInfoGsm android.telephony.CellInfoLte +android.telephony.CellInfoLte$1 android.telephony.CellInfoWcdma android.telephony.CellInfoWcdma$1 android.telephony.CellLocation android.telephony.CellSignalStrength +android.telephony.CellSignalStrengthLte +android.telephony.CellSignalStrengthLte$1 android.telephony.CellSignalStrengthWcdma android.telephony.CellSignalStrengthWcdma$1 android.telephony.ClientRequestStats @@ -3947,6 +4001,7 @@ android.telephony.TelephonyManager$MultiSimVariants android.telephony.VisualVoicemailSmsFilterSettings android.telephony.VoLteServiceState android.telephony.VoLteServiceState$1 +android.telephony.euicc.EuiccManager android.telephony.gsm.GsmCellLocation android.telephony.ims.stub.ImsConfigImplBase android.telephony.ims.stub.ImsEcbmImplBase @@ -4018,6 +4073,7 @@ android.text.TextDirectionHeuristics$TextDirectionHeuristicImpl android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal android.text.TextDirectionHeuristics$TextDirectionHeuristicLocale android.text.TextLine +android.text.TextLine$DecorationInfo android.text.TextPaint android.text.TextUtils android.text.TextUtils$1 @@ -4083,6 +4139,7 @@ android.text.style.SpellCheckSpan android.text.style.StrikethroughSpan android.text.style.StyleSpan android.text.style.SuggestionSpan +android.text.style.SuggestionSpan$1 android.text.style.TabStopSpan android.text.style.TextAppearanceSpan android.text.style.TtsSpan @@ -4179,7 +4236,6 @@ android.util.Base64 android.util.Base64$Coder android.util.Base64$Decoder android.util.Base64$Encoder -android.util.BootTimingsTraceLog android.util.ByteStringUtils android.util.ContainerHelpers android.util.DebugUtils @@ -4205,6 +4261,7 @@ android.util.LocalLog$ReadOnlyLocalLog android.util.Log android.util.Log$1 android.util.Log$ImmediateLogWriter +android.util.Log$PreloadHolder android.util.Log$TerribleFailure android.util.Log$TerribleFailureHandler android.util.LogPrinter @@ -4255,6 +4312,7 @@ android.util.TimeFormatException android.util.TimeUtils android.util.TimedRemoteCaller android.util.TimingLogger +android.util.TimingsTraceLog android.util.TrustedTime android.util.TypedValue android.util.Xml @@ -4278,11 +4336,15 @@ android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1 android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$2 android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$3 android.view.-$Lambda$P6MTGFSudLpwrqb6oVD8FdorW1c +android.view.-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8 android.view.-$Lambda$iU_USrtPm1XIm5H9QYQvXfBGDE4 android.view.-$Lambda$iU_USrtPm1XIm5H9QYQvXfBGDE4$1 android.view.AbsSavedState android.view.AbsSavedState$1 android.view.AbsSavedState$2 +android.view.AccessibilityInteractionController +android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher +android.view.AccessibilityInteractionController$PrivateHandler android.view.ActionMode android.view.ActionMode$Callback android.view.ActionMode$Callback2 @@ -4293,6 +4355,7 @@ android.view.AppTransitionAnimationSpec$1 android.view.Choreographer android.view.Choreographer$1 android.view.Choreographer$2 +android.view.Choreographer$3 android.view.Choreographer$CallbackQueue android.view.Choreographer$CallbackRecord android.view.Choreographer$FrameCallback @@ -4451,6 +4514,7 @@ android.view.SurfaceView$1 android.view.SurfaceView$2 android.view.SurfaceView$3 android.view.SurfaceView$4 +android.view.SurfaceView$SurfaceControlWithBackground android.view.TextureView android.view.TextureView$1 android.view.TextureView$SurfaceTextureListener @@ -4485,6 +4549,7 @@ android.view.View$DeclaredOnClickListener android.view.View$ForegroundInfo android.view.View$ListenerInfo android.view.View$MatchIdPredicate +android.view.View$MatchLabelForPredicate android.view.View$MeasureSpec android.view.View$OnApplyWindowInsetsListener android.view.View$OnAttachStateChangeListener @@ -4502,6 +4567,7 @@ android.view.View$OnSystemUiVisibilityChangeListener android.view.View$OnTouchListener android.view.View$PerformClick android.view.View$ScrollabilityCache +android.view.View$SendViewScrolledAccessibilityEvent android.view.View$TintInfo android.view.View$TooltipInfo android.view.View$TransformationInfo @@ -4542,6 +4608,7 @@ android.view.ViewRootImpl android.view.ViewRootImpl$1 android.view.ViewRootImpl$2 android.view.ViewRootImpl$4 +android.view.ViewRootImpl$AccessibilityInteractionConnection android.view.ViewRootImpl$AccessibilityInteractionConnectionManager android.view.ViewRootImpl$ActivityConfigCallback android.view.ViewRootImpl$AsyncInputStage @@ -4556,6 +4623,7 @@ android.view.ViewRootImpl$InvalidateOnAnimationRunnable android.view.ViewRootImpl$NativePostImeInputStage android.view.ViewRootImpl$NativePreImeInputStage android.view.ViewRootImpl$QueuedInputEvent +android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent android.view.ViewRootImpl$SyntheticInputStage android.view.ViewRootImpl$SyntheticJoystickHandler android.view.ViewRootImpl$SyntheticKeyboardHandler @@ -4626,6 +4694,7 @@ android.view.WindowManagerPolicy$ScreenOnListener android.view.WindowManagerPolicy$StartingSurface android.view.WindowManagerPolicy$WindowManagerFuncs android.view.WindowManagerPolicy$WindowState +android.view.accessibility.-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1 android.view.accessibility.AccessibilityEvent android.view.accessibility.AccessibilityEvent$1 android.view.accessibility.AccessibilityEventSource @@ -4637,6 +4706,7 @@ android.view.accessibility.AccessibilityManager$HighTextContrastChangeListener android.view.accessibility.AccessibilityManager$MyCallback android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener android.view.accessibility.AccessibilityNodeInfo +android.view.accessibility.AccessibilityNodeInfo$1 android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction android.view.accessibility.AccessibilityNodeProvider android.view.accessibility.AccessibilityRecord @@ -4649,6 +4719,8 @@ android.view.accessibility.IAccessibilityInteractionConnection android.view.accessibility.IAccessibilityInteractionConnection$Stub android.view.accessibility.IAccessibilityInteractionConnection$Stub$Proxy android.view.accessibility.IAccessibilityInteractionConnectionCallback +android.view.accessibility.IAccessibilityInteractionConnectionCallback$Stub +android.view.accessibility.IAccessibilityInteractionConnectionCallback$Stub$Proxy android.view.accessibility.IAccessibilityManager android.view.accessibility.IAccessibilityManager$Stub android.view.accessibility.IAccessibilityManager$Stub$Proxy @@ -4740,6 +4812,7 @@ android.view.textclassifier.TextClassificationManager android.view.textclassifier.TextClassifier android.view.textclassifier.TextClassifier$1 android.view.textclassifier.TextClassifierImpl +android.view.textclassifier.logging.SmartSelectionEventTracker android.view.textservice.SpellCheckerInfo android.view.textservice.SpellCheckerInfo$1 android.view.textservice.SpellCheckerSession @@ -4802,6 +4875,7 @@ android.webkit.WebViewFactory$MissingWebViewPackageException android.webkit.WebViewFactory$RelroFileCreator android.webkit.WebViewFactoryProvider android.webkit.WebViewFactoryProvider$Statics +android.webkit.WebViewLibraryLoader android.webkit.WebViewProvider android.webkit.WebViewProvider$ScrollDelegate android.webkit.WebViewProvider$ViewDelegate @@ -4991,6 +5065,7 @@ android.widget.PopupWindow$PopupDecorView android.widget.PopupWindow$PopupDecorView$1 android.widget.ProgressBar android.widget.ProgressBar$1 +android.widget.ProgressBar$AccessibilityEventSender android.widget.ProgressBar$ProgressTintInfo android.widget.ProgressBar$RefreshData android.widget.ProgressBar$RefreshProgressRunnable @@ -5009,6 +5084,7 @@ android.widget.RelativeLayout android.widget.RelativeLayout$DependencyGraph android.widget.RelativeLayout$DependencyGraph$Node android.widget.RelativeLayout$LayoutParams +android.widget.RelativeLayout$TopToBottomLeftToRightComparator android.widget.RemoteViews android.widget.RemoteViews$1 android.widget.RemoteViews$2 @@ -5050,7 +5126,9 @@ android.widget.SectionIndexer android.widget.SeekBar android.widget.SeekBar$OnSeekBarChangeListener android.widget.SelectionActionModeHelper +android.widget.SelectionActionModeHelper$SelectionMetricsLogger android.widget.SelectionActionModeHelper$SelectionTracker +android.widget.SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable android.widget.SelectionActionModeHelper$TextClassificationHelper android.widget.SimpleCursorAdapter android.widget.Space @@ -5112,6 +5190,7 @@ android.widget.Toolbar$2 android.widget.Toolbar$ExpandedActionViewMenuPresenter android.widget.Toolbar$LayoutParams android.widget.Toolbar$OnMenuItemClickListener +android.widget.Toolbar$SavedState$1 android.widget.VideoView android.widget.ViewAnimator android.widget.ViewFlipper @@ -5238,8 +5317,8 @@ com.android.internal.app.IVoiceInteractionSessionShowCallback$Stub com.android.internal.app.IVoiceInteractor com.android.internal.app.IVoiceInteractor$Stub com.android.internal.app.NightDisplayController +com.android.internal.app.NightDisplayController$1 com.android.internal.app.NightDisplayController$Callback -com.android.internal.app.NightDisplayController$LocalTime com.android.internal.app.ProcessMap com.android.internal.app.ResolverActivity com.android.internal.app.ToolbarActionBar @@ -5360,10 +5439,12 @@ com.android.internal.os.BatteryStatsImpl$Uid$2 com.android.internal.os.BatteryStatsImpl$Uid$3 com.android.internal.os.BatteryStatsImpl$Uid$Pkg com.android.internal.os.BatteryStatsImpl$Uid$Pkg$Serv +com.android.internal.os.BatteryStatsImpl$Uid$Proc com.android.internal.os.BatteryStatsImpl$Uid$Sensor com.android.internal.os.BatteryStatsImpl$Uid$Wakelock com.android.internal.os.BinderInternal com.android.internal.os.BinderInternal$GcWatcher +com.android.internal.os.ClassLoaderFactory com.android.internal.os.FuseAppLoop com.android.internal.os.FuseAppLoop$1 com.android.internal.os.FuseUnavailableMountException @@ -5398,6 +5479,7 @@ com.android.internal.os.RuntimeInit$1 com.android.internal.os.RuntimeInit$Arguments com.android.internal.os.RuntimeInit$KillApplicationHandler com.android.internal.os.RuntimeInit$LoggingHandler +com.android.internal.os.RuntimeInit$MethodAndArgsCaller com.android.internal.os.SamplingProfilerIntegration com.android.internal.os.SomeArgs com.android.internal.os.Zygote @@ -5417,6 +5499,7 @@ com.android.internal.policy.DividerSnapAlgorithm com.android.internal.policy.DividerSnapAlgorithm$SnapTarget com.android.internal.policy.DockedDividerUtils com.android.internal.policy.IKeyguardDismissCallback +com.android.internal.policy.IKeyguardDismissCallback$Stub com.android.internal.policy.IKeyguardDrawnCallback com.android.internal.policy.IKeyguardDrawnCallback$Stub com.android.internal.policy.IKeyguardDrawnCallback$Stub$Proxy @@ -5436,6 +5519,7 @@ com.android.internal.policy.PhoneWindow com.android.internal.policy.PhoneWindow$1 com.android.internal.policy.PhoneWindow$ActionMenuPresenterCallback com.android.internal.policy.PhoneWindow$PanelFeatureState +com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState$1 com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback com.android.internal.policy.PhoneWindow$RotationWatcher com.android.internal.policy.PhoneWindow$RotationWatcher$1 @@ -6151,9 +6235,12 @@ com.android.org.bouncycastle.crypto.generators.PKCS12ParametersGenerator com.android.org.bouncycastle.crypto.io.MacInputStream com.android.org.bouncycastle.crypto.macs.HMac com.android.org.bouncycastle.crypto.params.KeyParameter +com.android.org.bouncycastle.jcajce.provider.asymmetric.DH com.android.org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings +com.android.org.bouncycastle.jcajce.provider.asymmetric.EC com.android.org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings +com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi @@ -6236,9 +6323,12 @@ com.android.org.bouncycastle.util.Pack com.android.org.bouncycastle.util.Strings com.android.org.bouncycastle.util.Strings$1 com.android.org.bouncycastle.util.io.Streams +com.android.org.conscrypt.AbstractConscryptSocket +com.android.org.conscrypt.AbstractConscryptSocket$1 com.android.org.conscrypt.AbstractOpenSSLSession com.android.org.conscrypt.AbstractSessionContext com.android.org.conscrypt.AbstractSessionContext$1 +com.android.org.conscrypt.ActiveSession com.android.org.conscrypt.AddressUtils com.android.org.conscrypt.ArrayUtils com.android.org.conscrypt.ByteArray @@ -6247,7 +6337,13 @@ com.android.org.conscrypt.CertificatePriorityComparator com.android.org.conscrypt.ChainStrengthAnalyzer com.android.org.conscrypt.ClientSessionContext com.android.org.conscrypt.ClientSessionContext$HostAndPort +com.android.org.conscrypt.Conscrypt +com.android.org.conscrypt.ConscryptFileDescriptorSocket +com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream +com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream com.android.org.conscrypt.CryptoUpcalls +com.android.org.conscrypt.DefaultSSLContextImpl +com.android.org.conscrypt.DelegatingExtendedSSLSession com.android.org.conscrypt.EvpMdRef$MD5 com.android.org.conscrypt.EvpMdRef$SHA1 com.android.org.conscrypt.EvpMdRef$SHA256 @@ -6255,6 +6351,7 @@ com.android.org.conscrypt.FileClientSessionCache com.android.org.conscrypt.FileClientSessionCache$CacheFile com.android.org.conscrypt.FileClientSessionCache$Impl com.android.org.conscrypt.Hex +com.android.org.conscrypt.InternalUtil com.android.org.conscrypt.JSSEProvider com.android.org.conscrypt.KeyManagerFactoryImpl com.android.org.conscrypt.KeyManagerImpl @@ -6268,6 +6365,7 @@ com.android.org.conscrypt.NativeRef$EVP_CIPHER_CTX com.android.org.conscrypt.NativeRef$EVP_MD_CTX com.android.org.conscrypt.NativeRef$EVP_PKEY com.android.org.conscrypt.NativeRef$HMAC_CTX +com.android.org.conscrypt.NativeRef$SSL_SESSION com.android.org.conscrypt.OpenSSLBIOInputStream com.android.org.conscrypt.OpenSSLCipher com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER @@ -6316,13 +6414,21 @@ com.android.org.conscrypt.OpenSSLX509CertificateFactory$1 com.android.org.conscrypt.OpenSSLX509CertificateFactory$2 com.android.org.conscrypt.OpenSSLX509CertificateFactory$Parser com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException +com.android.org.conscrypt.PeerInfoProvider +com.android.org.conscrypt.PeerInfoProvider$1 com.android.org.conscrypt.Platform +com.android.org.conscrypt.Preconditions com.android.org.conscrypt.SSLClientSessionCache com.android.org.conscrypt.SSLParametersImpl com.android.org.conscrypt.SSLParametersImpl$AliasChooser com.android.org.conscrypt.SSLParametersImpl$PSKCallbacks com.android.org.conscrypt.SSLUtils +com.android.org.conscrypt.SSLUtils$SessionType com.android.org.conscrypt.ServerSessionContext +com.android.org.conscrypt.SslSessionWrapper +com.android.org.conscrypt.SslSessionWrapper$Impl +com.android.org.conscrypt.SslSessionWrapper$Impl$1 +com.android.org.conscrypt.SslWrapper com.android.org.conscrypt.TrustManagerFactoryImpl com.android.org.conscrypt.TrustManagerImpl com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker @@ -6409,6 +6515,7 @@ dalvik.system.CloseGuard$Reporter dalvik.system.CloseGuard$Tracker dalvik.system.DalvikLogHandler dalvik.system.DalvikLogging +dalvik.system.DelegateLastClassLoader dalvik.system.DexClassLoader dalvik.system.DexFile dalvik.system.DexFile$DFEnum @@ -6602,6 +6709,10 @@ java.lang.Package java.lang.Process java.lang.ProcessBuilder java.lang.ProcessEnvironment +java.lang.ProcessEnvironment$ExternalData +java.lang.ProcessEnvironment$StringEnvironment +java.lang.ProcessEnvironment$Value +java.lang.ProcessEnvironment$Variable java.lang.Readable java.lang.ReflectiveOperationException java.lang.Runnable @@ -6642,6 +6753,9 @@ java.lang.Throwable$WrappedPrintStream java.lang.Throwable$WrappedPrintWriter java.lang.TypeNotPresentException java.lang.UNIXProcess +java.lang.UNIXProcess$1 +java.lang.UNIXProcess$ProcessReaperThreadFactory +java.lang.UNIXProcess$ProcessReaperThreadFactory$1 java.lang.UnsatisfiedLinkError java.lang.UnsupportedOperationException java.lang.VMClassLoader @@ -6667,9 +6781,25 @@ java.lang.invoke.MethodType java.lang.invoke.MethodType$ConcurrentWeakInternSet java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry java.lang.invoke.MethodTypeForm +java.lang.invoke.Transformers$AlwaysThrow java.lang.invoke.Transformers$BindTo +java.lang.invoke.Transformers$CatchException +java.lang.invoke.Transformers$CollectArguments java.lang.invoke.Transformers$Collector +java.lang.invoke.Transformers$Constant java.lang.invoke.Transformers$Construct +java.lang.invoke.Transformers$DropArguments +java.lang.invoke.Transformers$ExplicitCastArguments +java.lang.invoke.Transformers$FilterArguments +java.lang.invoke.Transformers$FilterReturnValue +java.lang.invoke.Transformers$FoldArguments +java.lang.invoke.Transformers$GuardWithTest +java.lang.invoke.Transformers$InsertArguments +java.lang.invoke.Transformers$Invoker +java.lang.invoke.Transformers$PermuteArguments +java.lang.invoke.Transformers$ReferenceArrayElementGetter +java.lang.invoke.Transformers$ReferenceArrayElementSetter +java.lang.invoke.Transformers$ReferenceIdentity java.lang.invoke.Transformers$Spreader java.lang.invoke.Transformers$Transformer java.lang.invoke.Transformers$VarargsCollector @@ -7056,12 +7186,14 @@ java.text.RuleBasedCollator java.text.SimpleDateFormat java.text.StringCharacterIterator java.time.DateTimeException +java.time.format.DateTimeParseException java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$1 java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$2 java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$3 java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$4 java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$5 +java.util.-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw$1 java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw$2 @@ -7600,8 +7732,12 @@ java.util.logging.SimpleFormatter java.util.logging.StreamHandler java.util.logging.XMLFormatter java.util.prefs.AbstractPreferences +java.util.prefs.BackingStoreException java.util.prefs.FileSystemPreferences +java.util.prefs.FileSystemPreferences$1 +java.util.prefs.FileSystemPreferencesFactory java.util.prefs.Preferences +java.util.prefs.PreferencesFactory java.util.regex.MatchResult java.util.regex.Matcher java.util.regex.Matcher$OffsetBasedMatchResult @@ -7749,6 +7885,7 @@ javax.crypto.NoSuchPaddingException javax.crypto.NullCipher javax.crypto.SecretKey javax.crypto.ShortBufferException +javax.crypto.spec.GCMParameterSpec javax.crypto.spec.IvParameterSpec javax.crypto.spec.OAEPParameterSpec javax.crypto.spec.PBEParameterSpec @@ -8355,6 +8492,7 @@ sun.security.action.GetPropertyAction sun.security.jca.GetInstance sun.security.jca.GetInstance$Instance sun.security.jca.JCAUtil +sun.security.jca.JCAUtil$CachedSecureRandomHolder sun.security.jca.ProviderConfig sun.security.jca.ProviderConfig$2 sun.security.jca.ProviderList @@ -8490,8 +8628,10 @@ sun.util.calendar.BaseCalendar$Date sun.util.calendar.CalendarDate sun.util.calendar.CalendarSystem sun.util.calendar.CalendarUtils +sun.util.calendar.Era sun.util.calendar.Gregorian sun.util.calendar.Gregorian$Date +sun.util.calendar.ImmutableGregorianDate sun.util.calendar.JulianCalendar sun.util.calendar.LocalGregorianCalendar sun.util.locale.BaseLocale diff --git a/config/copyright-header b/config/copyright-header new file mode 100644 index 0000000000000000000000000000000000000000..93071cd7e2ef8dde9d31b9801a0e575b8cc0e1b6 --- /dev/null +++ b/config/copyright-header @@ -0,0 +1,15 @@ +# +# 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. +# diff --git a/config/generate-preloaded-classes.sh b/config/generate-preloaded-classes.sh new file mode 100755 index 0000000000000000000000000000000000000000..e36e148c747610dd58ea3557de0676cf1cd88bbf --- /dev/null +++ b/config/generate-preloaded-classes.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# +# 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. +if [ "$#" -lt 2 ]; then + echo "Usage $0 [extra classes files]" + exit 1 +fi + +# Write file headers first +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cat "$DIR/copyright-header" +echo "# Preloaded-classes filter file for phones. +# +# Classes in this file will be allocated into the boot image, and forcibly initialized in +# the zygote during initialization. This is a trade-off, using virtual address space to share +# common heap between apps. +# +# This file has been derived for mainline phone (and tablet) usage. +#" + +input=$1 +blacklist=$2 +shift 2 +extra_classes_files=("$@") + +# Disable locale to enable lexicographical sorting +LC_ALL=C sort "$input" "${extra_classes_files[@]}" | uniq | grep -f "$blacklist" -v -F -x diff --git a/config/preloaded-classes b/config/preloaded-classes index 8233b03614bcbe8554aba83e70401f6e150feefb..e8454fd00c3e5c911a7ae5aef95126b4e1f2af1c 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -13,8 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# -# # Preloaded-classes filter file for phones. # # Classes in this file will be allocated into the boot image, and forcibly initialized in @@ -23,296 +21,20 @@ # # This file has been derived for mainline phone (and tablet) usage. # -[B -[C -[D -[F -[I -[J -[Landroid.accounts.Account; -[Landroid.animation.Animator; -[Landroid.animation.Keyframe$FloatKeyframe; -[Landroid.animation.Keyframe$IntKeyframe; -[Landroid.animation.PropertyValuesHolder; -[Landroid.app.LoaderManagerImpl; -[Landroid.app.Notification$Action; -[Landroid.app.NotificationChannel; -[Landroid.app.RemoteInput; -[Landroid.app.job.JobInfo$TriggerContentUri; -[Landroid.bluetooth.BluetoothDevice; -[Landroid.content.ContentProviderResult; -[Landroid.content.ContentValues; -[Landroid.content.Intent; -[Landroid.content.UndoOwner; -[Landroid.content.pm.ActivityInfo; -[Landroid.content.pm.ConfigurationInfo; -[Landroid.content.pm.FeatureGroupInfo; -[Landroid.content.pm.FeatureInfo; -[Landroid.content.pm.InstrumentationInfo; -[Landroid.content.pm.PathPermission; -[Landroid.content.pm.PermissionInfo; -[Landroid.content.pm.ProviderInfo; -[Landroid.content.pm.ServiceInfo; -[Landroid.content.pm.Signature; -[Landroid.content.res.Configuration; -[Landroid.content.res.StringBlock; -[Landroid.content.res.XmlBlock; -[Landroid.database.CursorWindow; -[Landroid.database.sqlite.SQLiteConnection$Operation; -[Landroid.database.sqlite.SQLiteConnectionPool$AcquiredConnectionStatus; -[Landroid.graphics.Bitmap$CompressFormat; -[Landroid.graphics.Bitmap$Config; -[Landroid.graphics.Bitmap; -[Landroid.graphics.Canvas$EdgeType; -[Landroid.graphics.ColorSpace$Model; -[Landroid.graphics.ColorSpace$Named; -[Landroid.graphics.ColorSpace; -[Landroid.graphics.FontFamily; -[Landroid.graphics.Interpolator$Result; -[Landroid.graphics.Matrix$ScaleToFit; -[Landroid.graphics.Paint$Align; -[Landroid.graphics.Paint$Cap; -[Landroid.graphics.Paint$Join; -[Landroid.graphics.Paint$Style; -[Landroid.graphics.Path$Direction; -[Landroid.graphics.Path$FillType; -[Landroid.graphics.Point; -[Landroid.graphics.PorterDuff$Mode; -[Landroid.graphics.Rect; -[Landroid.graphics.Region$Op; -[Landroid.graphics.Shader$TileMode; -[Landroid.graphics.Typeface; -[Landroid.graphics.drawable.Drawable; -[Landroid.graphics.drawable.GradientDrawable$Orientation; -[Landroid.graphics.drawable.LayerDrawable$ChildDrawable; -[Landroid.graphics.drawable.RippleForeground; -[Landroid.graphics.fonts.FontVariationAxis; -[Landroid.hardware.camera2.marshal.MarshalQueryable; -[Landroid.hardware.camera2.params.Face; -[Landroid.hardware.camera2.params.HighSpeedVideoConfiguration; -[Landroid.hardware.camera2.params.MeteringRectangle; -[Landroid.hardware.camera2.params.StreamConfiguration; -[Landroid.hardware.camera2.params.StreamConfigurationDuration; -[Landroid.hardware.soundtrigger.SoundTrigger$ConfidenceLevel; -[Landroid.hardware.soundtrigger.SoundTrigger$Keyphrase; -[Landroid.hardware.soundtrigger.SoundTrigger$KeyphraseRecognitionExtra; -[Landroid.icu.impl.CacheValue$Strength; -[Landroid.icu.impl.CacheValue; -[Landroid.icu.impl.CurrencyData$CurrencySpacingInfo$SpacingPattern; -[Landroid.icu.impl.CurrencyData$CurrencySpacingInfo$SpacingType; -[Landroid.icu.impl.ICUResourceBundle$OpenType; -[Landroid.icu.impl.StandardPlural; -[Landroid.icu.impl.Trie2$ValueWidth; -[Landroid.icu.impl.UCharacterProperty$BinaryProperty; -[Landroid.icu.impl.UCharacterProperty$IntProperty; -[Landroid.icu.text.DisplayContext$Type; -[Landroid.icu.text.DisplayContext; -[Landroid.icu.text.PluralRules$Operand; -[Landroid.icu.text.PluralRules$PluralType; -[Landroid.icu.text.PluralRules$SampleType; -[Landroid.icu.text.TimeZoneNames$NameType; -[Landroid.icu.text.UnicodeSet; -[Landroid.icu.util.Currency$CurrencyUsage; -[Landroid.icu.util.ULocale$Category; -[Landroid.icu.util.ULocale; -[Landroid.icu.util.UResourceBundle$RootType; -[Landroid.media.AudioGain; -[Landroid.net.IpConfiguration$IpAssignment; -[Landroid.net.IpConfiguration$ProxySettings; -[Landroid.net.LocalSocketAddress$Namespace; -[Landroid.net.NetworkInfo$DetailedState; -[Landroid.net.NetworkInfo$State; -[Landroid.net.NetworkKey; -[Landroid.net.NetworkRequest$Type; -[Landroid.net.ScoredNetwork; -[Landroid.net.Uri; -[Landroid.net.wifi.ScanResult$InformationElement; -[Landroid.net.wifi.SupplicantState; -[Landroid.os.AsyncTask$Status; -[Landroid.os.MessageQueue$IdleHandler; -[Landroid.os.Parcel; -[Landroid.os.Parcelable; -[Landroid.os.PatternMatcher; -[Landroid.os.PersistableBundle; -[Landroid.os.storage.StorageVolume; -[Landroid.service.notification.StatusBarNotification; -[Landroid.system.StructPollfd; -[Landroid.telephony.TelephonyManager$MultiSimVariants; -[Landroid.text.DynamicLayout$ChangeWatcher; -[Landroid.text.FontConfig$Alias; -[Landroid.text.FontConfig$Family; -[Landroid.text.FontConfig$Font; -[Landroid.text.Hyphenator$HyphenationData; -[Landroid.text.InputFilter; -[Landroid.text.Layout$Alignment; -[Landroid.text.Layout$Directions; -[Landroid.text.MeasuredText; -[Landroid.text.SpanWatcher; -[Landroid.text.TextLine; -[Landroid.text.TextUtils$TruncateAt; -[Landroid.text.TextWatcher; -[Landroid.text.method.TextKeyListener$Capitalize; -[Landroid.text.method.TextKeyListener; -[Landroid.text.style.AlignmentSpan; -[Landroid.text.style.CharacterStyle; -[Landroid.text.style.LeadingMarginSpan; -[Landroid.text.style.LineBackgroundSpan; -[Landroid.text.style.LineHeightSpan; -[Landroid.text.style.MetricAffectingSpan; -[Landroid.text.style.ParagraphStyle; -[Landroid.text.style.ReplacementSpan; -[Landroid.text.style.SpellCheckSpan; -[Landroid.text.style.SuggestionSpan; -[Landroid.text.style.TabStopSpan; -[Landroid.text.style.WrapTogetherSpan; -[Landroid.util.LongSparseArray; -[Landroid.util.Pair; -[Landroid.util.Range; -[Landroid.util.Rational; -[Landroid.util.Size; -[Landroid.view.Choreographer$CallbackQueue; -[Landroid.view.Display$Mode; -[Landroid.view.Display; -[Landroid.view.HandlerActionQueue$HandlerAction; -[Landroid.view.MenuItem; -[Landroid.view.View; -[Landroid.widget.Editor$TextViewPositionListener; -[Landroid.widget.ImageView$ScaleType; -[Landroid.widget.TextView$BufferType; -[Landroid.widget.TextView$ChangeWatcher; -[Lcom.android.internal.policy.PhoneWindow$PanelFeatureState; -[Lcom.android.internal.telephony.IccCardConstants$State; -[Lcom.android.internal.telephony.PhoneConstants$State; -[Lcom.android.internal.util.StateMachine$SmHandler$StateInfo; -[Lcom.android.okhttp.CipherSuite; -[Lcom.android.okhttp.ConnectionSpec; -[Lcom.android.okhttp.HttpUrl$Builder$ParseResult; -[Lcom.android.okhttp.Protocol; -[Lcom.android.okhttp.TlsVersion; -[Lcom.android.org.bouncycastle.asn1.ASN1ObjectIdentifier; -[Lcom.android.org.conscrypt.OpenSSLSignature$EngineType; -[Lcom.android.org.conscrypt.OpenSSLX509CertPath$Encoding; -[Lcom.android.org.conscrypt.OpenSSLX509Certificate; -[Lcom.android.org.conscrypt.ct.CTLogInfo; -[Ldalvik.system.DexPathList$Element; -[Ldalvik.system.DexPathList$NativeLibraryElement; -[Ljava.io.File$PathStatus; -[Ljava.io.File; -[Ljava.io.FileDescriptor; -[Ljava.io.IOException; -[Ljava.io.ObjectInputStream$HandleTable$HandleList; -[Ljava.io.ObjectStreamField; -[Ljava.lang.Byte; -[Ljava.lang.CharSequence; -[Ljava.lang.Character$UnicodeBlock; -[Ljava.lang.Character; -[Ljava.lang.Class; -[Ljava.lang.Comparable; -[Ljava.lang.Enum; -[Ljava.lang.Integer; -[Ljava.lang.Long; -[Ljava.lang.Object; -[Ljava.lang.Package; -[Ljava.lang.Runnable; -[Ljava.lang.Short; -[Ljava.lang.StackTraceElement; -[Ljava.lang.String; -[Ljava.lang.Thread$State; -[Ljava.lang.Thread; -[Ljava.lang.ThreadGroup; -[Ljava.lang.ThreadLocal$ThreadLocalMap$Entry; -[Ljava.lang.Throwable; -[Ljava.lang.Void; -[Ljava.lang.annotation.Annotation; -[Ljava.lang.invoke.MethodType; -[Ljava.lang.ref.WeakReference; -[Ljava.lang.reflect.AccessibleObject; -[Ljava.lang.reflect.Constructor; -[Ljava.lang.reflect.Field; -[Ljava.lang.reflect.Method; -[Ljava.lang.reflect.Parameter; -[Ljava.lang.reflect.Type; -[Ljava.lang.reflect.TypeVariable; -[Ljava.math.BigInteger; -[Ljava.math.RoundingMode; -[Ljava.net.InetAddress; -[Ljava.net.Proxy$Type; -[Ljava.nio.ByteBuffer; -[Ljava.nio.file.attribute.FileAttribute; -[Ljava.security.CryptoPrimitive; -[Ljava.security.Provider; -[Ljava.security.cert.Certificate; -[Ljava.security.cert.X509Certificate; -[Ljava.text.DateFormat$Field; -[Ljava.text.Normalizer$Form; -[Ljava.util.ArrayList; -[Ljava.util.Comparators$NaturalOrderComparator; -[Ljava.util.Enumeration; -[Ljava.util.Formatter$Flags; -[Ljava.util.Formatter$FormatString; -[Ljava.util.HashMap$Node; -[Ljava.util.Hashtable$HashtableEntry; -[Ljava.util.Locale$Category; -[Ljava.util.Locale; -[Ljava.util.Map$Entry; -[Ljava.util.WeakHashMap$Entry; -[Ljava.util.concurrent.ConcurrentHashMap$CounterCell; -[Ljava.util.concurrent.ConcurrentHashMap$Node; -[Ljava.util.concurrent.ConcurrentHashMap$Segment; -[Ljava.util.concurrent.ForkJoinTask$ExceptionNode; -[Ljava.util.concurrent.RunnableScheduledFuture; -[Ljava.util.concurrent.TimeUnit; -[Ljava.util.logging.Handler; -[Ljava.util.regex.Pattern; -[Ljava.util.stream.StreamOpFlag$Type; -[Ljava.util.stream.StreamOpFlag; -[Ljava.util.stream.StreamShape; -[Ljavax.crypto.Cipher$InitType; -[Ljavax.crypto.Cipher$NeedToSet; -[Ljavax.microedition.khronos.egl.EGLConfig; -[Ljavax.net.ssl.KeyManager; -[Ljavax.net.ssl.TrustManager; -[Ljavax.security.cert.X509Certificate; -[Llibcore.io.ClassPathURLStreamHandler; -[Llibcore.io.IoTracker$Mode; -[Llibcore.reflect.AnnotationMember$DefaultValues; -[Llibcore.reflect.AnnotationMember; -[Lorg.apache.http.Header; -[Lorg.json.JSONStringer$Scope; -[Lorg.kxml2.io.KXmlParser$ValueContext; -[Lsun.invoke.util.Wrapper; -[Lsun.misc.FDBigInteger; -[Lsun.misc.FormattedFloatingDecimal$Form; -[Lsun.security.jca.ProviderConfig; -[Lsun.security.jca.ServiceId; -[Lsun.security.pkcs.SignerInfo; -[Lsun.security.util.DerOutputStream; -[Lsun.security.util.DerValue; -[Lsun.security.util.DisabledAlgorithmConstraints$Constraint$Operator; -[Lsun.security.util.ObjectIdentifier; -[Lsun.security.x509.AVA; -[Lsun.security.x509.RDN; -[Lsun.util.logging.PlatformLogger$Level; -[S -[Z -[[B -[[I -[[Ljava.lang.Byte; -[[Ljava.lang.Class; -[[Ljava.lang.Object; -[[Ljava.lang.String; -[[Ljava.lang.annotation.Annotation; android.R$styleable +android.accessibilityservice.AccessibilityServiceInfo$1 android.accounts.Account android.accounts.Account$1 android.accounts.AccountManager android.accounts.AccountManager$1 -android.accounts.AccountManager$19 +android.accounts.AccountManager$11 +android.accounts.AccountManager$AmsTask +android.accounts.AccountManager$AmsTask$1 +android.accounts.AccountManager$AmsTask$Response android.accounts.AccountManager$BaseFutureTask android.accounts.AccountManager$BaseFutureTask$1 android.accounts.AccountManager$BaseFutureTask$Response android.accounts.AccountManager$Future2Task -android.accounts.AccountManagerCallback android.accounts.AccountManagerFuture android.accounts.AccountsException android.accounts.AuthenticatorException @@ -333,6 +55,7 @@ android.animation.Animator$AnimatorConstantState android.animation.Animator$AnimatorListener android.animation.Animator$AnimatorPauseListener android.animation.AnimatorInflater +android.animation.AnimatorInflater$PathDataEvaluator android.animation.AnimatorListenerAdapter android.animation.AnimatorSet android.animation.AnimatorSet$1 @@ -349,13 +72,15 @@ android.animation.IntKeyframeSet android.animation.Keyframe android.animation.Keyframe$FloatKeyframe android.animation.Keyframe$IntKeyframe +android.animation.Keyframe$ObjectKeyframe android.animation.KeyframeSet android.animation.Keyframes android.animation.Keyframes$FloatKeyframes android.animation.Keyframes$IntKeyframes -android.animation.LayoutTransition android.animation.LayoutTransition$TransitionListener android.animation.ObjectAnimator +android.animation.PathKeyframes$1 +android.animation.PathKeyframes$2 android.animation.PathKeyframes$FloatKeyframesBase android.animation.PathKeyframes$IntKeyframesBase android.animation.PathKeyframes$SimpleKeyframes @@ -368,26 +93,28 @@ android.animation.StateListAnimator android.animation.StateListAnimator$1 android.animation.StateListAnimator$StateListAnimatorConstantState android.animation.StateListAnimator$Tuple +android.animation.TimeAnimator +android.animation.TimeAnimator$TimeListener android.animation.TimeInterpolator android.animation.TypeEvaluator android.animation.ValueAnimator android.animation.ValueAnimator$AnimatorUpdateListener android.app.-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU android.app.-$Lambda$9I5WEMsoBc7l4QrNqZ4wx59yuHU$1 -android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk +android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI -android.app.-$Lambda$c44uHH2WE4sJvw5tZZB6gRzEaHI$1 +android.app.-$Lambda$vZ1qb742P9hE4drBY-TrOZB_qKo +android.app.ActionBar +android.app.ActionBar$LayoutParams android.app.Activity android.app.Activity$HostCallbacks android.app.ActivityManager android.app.ActivityManager$1 -android.app.ActivityManager$RecentTaskInfo +android.app.ActivityManager$AppTask +android.app.ActivityManager$MemoryInfo$1 android.app.ActivityManager$RecentTaskInfo$1 android.app.ActivityManager$RunningAppProcessInfo android.app.ActivityManager$RunningAppProcessInfo$1 -android.app.ActivityManager$RunningServiceInfo -android.app.ActivityManager$RunningServiceInfo$1 -android.app.ActivityManager$RunningTaskInfo android.app.ActivityManager$RunningTaskInfo$1 android.app.ActivityManager$StackId android.app.ActivityManager$TaskDescription @@ -408,15 +135,20 @@ android.app.ActivityThread$EventLoggingReporter android.app.ActivityThread$GcIdler android.app.ActivityThread$H android.app.ActivityThread$Idler +android.app.ActivityThread$NewIntentData android.app.ActivityThread$Profiler android.app.ActivityThread$ProviderClientRecord android.app.ActivityThread$ProviderKey android.app.ActivityThread$ProviderRefCount android.app.ActivityThread$ReceiverData +android.app.ActivityThread$RequestAssistContextExtras android.app.ActivityThread$ServiceArgsData android.app.ActivityThread$StopInfo android.app.ActivityTransitionState +android.app.AlarmManager +android.app.AlarmManager$ListenerWrapper android.app.AlertDialog +android.app.AlertDialog$Builder android.app.AppGlobals android.app.AppOpsManager android.app.AppOpsManager$OnOpChangedListener @@ -425,29 +157,45 @@ android.app.Application$ActivityLifecycleCallbacks android.app.ApplicationErrorReport$CrashInfo android.app.ApplicationLoaders android.app.ApplicationPackageManager -android.app.ApplicationPackageManager$OnPermissionsChangeListenerDelegate android.app.ApplicationPackageManager$ResourceName +android.app.BackStackRecord +android.app.BackStackRecord$Op android.app.ContentProviderHolder android.app.ContentProviderHolder$1 android.app.ContextImpl +android.app.ContextImpl$1 android.app.ContextImpl$ApplicationContentResolver android.app.DexLoadReporter android.app.Dialog android.app.Dialog$ListenersHandler +android.app.DialogFragment android.app.DownloadManager android.app.Fragment +android.app.Fragment$1 +android.app.Fragment$AnimationInfo android.app.FragmentContainer android.app.FragmentController android.app.FragmentHostCallback android.app.FragmentManager +android.app.FragmentManager$BackStackEntry android.app.FragmentManagerImpl android.app.FragmentManagerImpl$1 +android.app.FragmentManagerImpl$OpGenerator +android.app.FragmentManagerState$1 +android.app.FragmentState$1 +android.app.FragmentTransaction +android.app.FragmentTransition$FragmentContainerTransition android.app.IActivityManager android.app.IActivityManager$Stub android.app.IActivityManager$Stub$Proxy +android.app.IAlarmListener +android.app.IAlarmListener$Stub android.app.IAlarmManager android.app.IAlarmManager$Stub android.app.IAlarmManager$Stub$Proxy +android.app.IAppTask +android.app.IAppTask$Stub +android.app.IAppTask$Stub$Proxy android.app.IApplicationThread android.app.IApplicationThread$Stub android.app.IInstrumentationWatcher @@ -466,6 +214,7 @@ android.app.IUserSwitchObserver android.app.IUserSwitchObserver$Stub android.app.IWallpaperManager android.app.IWallpaperManager$Stub +android.app.IWallpaperManager$Stub$Proxy android.app.IWallpaperManagerCallback android.app.IWallpaperManagerCallback$Stub android.app.Instrumentation @@ -485,28 +234,20 @@ android.app.LoadedApk$ServiceDispatcher$InnerConnection android.app.LoadedApk$ServiceDispatcher$RunConnection android.app.LoadedApk$WarningContextClassLoader android.app.LoaderManager +android.app.LoaderManager$LoaderCallbacks android.app.LoaderManagerImpl +android.app.LoaderManagerImpl$LoaderInfo android.app.NativeActivity android.app.Notification android.app.Notification$1 -android.app.Notification$Action android.app.Notification$Action$1 -android.app.Notification$BigPictureStyle -android.app.Notification$BigTextStyle -android.app.Notification$Builder android.app.Notification$BuilderRemoteViews -android.app.Notification$DecoratedCustomViewStyle -android.app.Notification$DecoratedMediaCustomViewStyle -android.app.Notification$InboxStyle -android.app.Notification$MediaStyle -android.app.Notification$MessagingStyle android.app.Notification$StandardTemplateParams -android.app.Notification$Style android.app.NotificationChannel android.app.NotificationChannel$1 -android.app.NotificationChannelGroup android.app.NotificationChannelGroup$1 android.app.NotificationManager +android.app.OnActivityPausedListener android.app.PendingIntent android.app.PendingIntent$1 android.app.PendingIntent$CanceledException @@ -514,12 +255,13 @@ android.app.PendingIntent$OnMarshaledListener android.app.QueuedWork android.app.QueuedWork$QueuedWorkHandler android.app.ReceiverRestrictedContext -android.app.RemoteInput +android.app.RemoteInput$1 android.app.ResourcesManager android.app.ResourcesManager$1 android.app.ResourcesManager$ActivityResources android.app.ResultInfo android.app.ResultInfo$1 +android.app.SearchManager android.app.Service android.app.ServiceConnectionLeaked android.app.ServiceStartArgs @@ -532,6 +274,7 @@ android.app.SharedPreferencesImpl$2 android.app.SharedPreferencesImpl$EditorImpl android.app.SharedPreferencesImpl$EditorImpl$1 android.app.SharedPreferencesImpl$EditorImpl$2 +android.app.SharedPreferencesImpl$EditorImpl$3 android.app.SharedPreferencesImpl$MemoryCommitResult android.app.StatusBarManager android.app.SystemServiceRegistry @@ -616,6 +359,9 @@ android.app.SystemServiceRegistry$8 android.app.SystemServiceRegistry$80 android.app.SystemServiceRegistry$81 android.app.SystemServiceRegistry$82 +android.app.SystemServiceRegistry$83 +android.app.SystemServiceRegistry$84 +android.app.SystemServiceRegistry$85 android.app.SystemServiceRegistry$9 android.app.SystemServiceRegistry$CachedServiceFetcher android.app.SystemServiceRegistry$ServiceFetcher @@ -624,7 +370,10 @@ android.app.SystemServiceRegistry$StaticServiceFetcher android.app.UiModeManager android.app.UserSwitchObserver android.app.VrManager +android.app.WallpaperColors$1 +android.app.WallpaperInfo$1 android.app.WallpaperManager +android.app.WallpaperManager$Globals android.app.admin.DevicePolicyManager android.app.admin.IDevicePolicyManager android.app.admin.IDevicePolicyManager$Stub @@ -632,7 +381,16 @@ android.app.admin.IDevicePolicyManager$Stub$Proxy android.app.admin.SecurityLog android.app.admin.SecurityLog$SecurityEvent android.app.admin.SecurityLog$SecurityEvent$1 +android.app.assist.AssistStructure$1 +android.app.assist.AssistStructure$ParcelTransferWriter +android.app.assist.AssistStructure$SendChannel +android.app.assist.AssistStructure$ViewNode +android.app.assist.AssistStructure$ViewNodeBuilder +android.app.assist.AssistStructure$ViewNodeText +android.app.assist.AssistStructure$ViewStackEntry +android.app.assist.AssistStructure$WindowNode android.app.backup.BackupAgent +android.app.backup.BackupAgentHelper android.app.backup.BackupDataInput android.app.backup.BackupDataInput$EntityHeader android.app.backup.BackupDataOutput @@ -656,7 +414,6 @@ android.app.job.IJobService$Stub android.app.job.JobInfo android.app.job.JobInfo$1 android.app.job.JobInfo$Builder -android.app.job.JobInfo$TriggerContentUri android.app.job.JobInfo$TriggerContentUri$1 android.app.job.JobParameters android.app.job.JobParameters$1 @@ -666,23 +423,22 @@ android.app.job.JobService$1 android.app.job.JobServiceEngine android.app.job.JobServiceEngine$JobHandler android.app.job.JobServiceEngine$JobInterface +android.app.timezone.RulesManager android.app.trust.ITrustManager android.app.trust.ITrustManager$Stub android.app.trust.ITrustManager$Stub$Proxy android.app.trust.TrustManager -android.app.usage.IUsageStatsManager -android.app.usage.IUsageStatsManager$Stub +android.app.usage.IStorageStatsManager +android.app.usage.IStorageStatsManager$Stub android.app.usage.NetworkStatsManager android.app.usage.StorageStatsManager -android.app.usage.UsageEvents -android.app.usage.UsageEvents$1 android.app.usage.UsageStatsManager android.appwidget.AppWidgetManager android.appwidget.AppWidgetProvider -android.bluetooth.BluetoothActivityEnergyInfo -android.bluetooth.BluetoothAdapter +android.bluetooth.BluetoothA2dp +android.bluetooth.BluetoothA2dp$1 +android.bluetooth.BluetoothA2dp$2 android.bluetooth.BluetoothAdapter$1 -android.bluetooth.BluetoothDevice android.bluetooth.BluetoothDevice$1 android.bluetooth.BluetoothDevice$2 android.bluetooth.BluetoothHeadset @@ -697,6 +453,7 @@ android.bluetooth.IBluetooth$Stub android.bluetooth.IBluetooth$Stub$Proxy android.bluetooth.IBluetoothA2dp android.bluetooth.IBluetoothA2dp$Stub +android.bluetooth.IBluetoothA2dp$Stub$Proxy android.bluetooth.IBluetoothGatt android.bluetooth.IBluetoothGatt$Stub android.bluetooth.IBluetoothHeadset @@ -712,34 +469,45 @@ android.bluetooth.IBluetoothProfileServiceConnection$Stub android.bluetooth.IBluetoothStateChangeCallback android.bluetooth.IBluetoothStateChangeCallback$Stub android.companion.CompanionDeviceManager -android.content.AbstractThreadedSyncAdapter android.content.AbstractThreadedSyncAdapter$ISyncAdapterImpl android.content.ActivityNotFoundException +android.content.AsyncQueryHandler$WorkerArgs +android.content.AsyncQueryHandler$WorkerHandler +android.content.AsyncTaskLoader +android.content.AsyncTaskLoader$LoadTask android.content.BroadcastReceiver android.content.BroadcastReceiver$PendingResult android.content.BroadcastReceiver$PendingResult$1 android.content.ClipboardManager +android.content.ClipboardManager$1 +android.content.ClipboardManager$2 android.content.ComponentCallbacks android.content.ComponentCallbacks2 android.content.ComponentName android.content.ComponentName$1 android.content.ContentProvider +android.content.ContentProvider$PipeDataWriter android.content.ContentProvider$Transport android.content.ContentProviderClient android.content.ContentProviderNative android.content.ContentProviderProxy -android.content.ContentProviderResult android.content.ContentResolver +android.content.ContentResolver$1 android.content.ContentResolver$CursorWrapperInner +android.content.ContentResolver$ParcelFileDescriptorInner android.content.ContentUris android.content.ContentValues android.content.ContentValues$1 android.content.Context android.content.ContextWrapper +android.content.CursorLoader android.content.DialogInterface android.content.DialogInterface$OnCancelListener android.content.DialogInterface$OnClickListener android.content.DialogInterface$OnDismissListener +android.content.IClipboard +android.content.IClipboard$Stub +android.content.IClipboard$Stub$Proxy android.content.IContentProvider android.content.IContentService android.content.IContentService$Stub @@ -749,33 +517,43 @@ android.content.IIntentReceiver$Stub android.content.IIntentSender android.content.IIntentSender$Stub android.content.IIntentSender$Stub$Proxy +android.content.IOnPrimaryClipChangedListener +android.content.IOnPrimaryClipChangedListener$Stub +android.content.IRestrictionsManager +android.content.IRestrictionsManager$Stub android.content.ISyncAdapter android.content.ISyncAdapter$Stub android.content.ISyncContext android.content.ISyncContext$Stub +android.content.ISyncStatusObserver +android.content.ISyncStatusObserver$Stub android.content.Intent android.content.Intent$1 -android.content.Intent$FilterComparison android.content.IntentFilter android.content.IntentFilter$1 android.content.IntentFilter$MalformedMimeTypeException android.content.IntentSender android.content.IntentSender$SendIntentException +android.content.Loader +android.content.Loader$ForceLoadContentObserver +android.content.Loader$OnLoadCanceledListener +android.content.Loader$OnLoadCompleteListener android.content.OperationApplicationException android.content.RestrictionsManager android.content.ServiceConnection android.content.SharedPreferences android.content.SharedPreferences$Editor android.content.SharedPreferences$OnSharedPreferenceChangeListener -android.content.SyncResult +android.content.SyncRequest$1 android.content.SyncResult$1 -android.content.SyncStats android.content.SyncStats$1 +android.content.SyncStatusObserver android.content.UndoManager android.content.UndoOwner android.content.UriMatcher android.content.pm.ActivityInfo android.content.pm.ActivityInfo$1 +android.content.pm.ActivityInfo$WindowLayout android.content.pm.ApplicationInfo android.content.pm.ApplicationInfo$1 android.content.pm.BaseParceledListSlice @@ -786,15 +564,15 @@ android.content.pm.FeatureGroupInfo android.content.pm.FeatureGroupInfo$1 android.content.pm.FeatureInfo android.content.pm.FeatureInfo$1 -android.content.pm.IOnPermissionsChangeListener -android.content.pm.IOnPermissionsChangeListener$Stub android.content.pm.IPackageInstaller android.content.pm.IPackageInstaller$Stub +android.content.pm.IPackageInstaller$Stub$Proxy android.content.pm.IPackageManager android.content.pm.IPackageManager$Stub android.content.pm.IPackageManager$Stub$Proxy android.content.pm.IShortcutService android.content.pm.IShortcutService$Stub +android.content.pm.IShortcutService$Stub$Proxy android.content.pm.InstrumentationInfo android.content.pm.InstrumentationInfo$1 android.content.pm.LauncherApps @@ -803,7 +581,6 @@ android.content.pm.PackageInfo$1 android.content.pm.PackageItemInfo android.content.pm.PackageManager android.content.pm.PackageManager$NameNotFoundException -android.content.pm.PackageManager$OnPermissionsChangedListener android.content.pm.PackageParser$PackageParserException android.content.pm.ParceledListSlice android.content.pm.ParceledListSlice$1 @@ -817,12 +594,10 @@ android.content.pm.ResolveInfo android.content.pm.ResolveInfo$1 android.content.pm.ServiceInfo android.content.pm.ServiceInfo$1 -android.content.pm.ShortcutInfo android.content.pm.ShortcutInfo$1 android.content.pm.ShortcutManager android.content.pm.Signature android.content.pm.Signature$1 -android.content.pm.UserInfo android.content.pm.UserInfo$1 android.content.res.AssetFileDescriptor android.content.res.AssetFileDescriptor$1 @@ -845,6 +620,7 @@ android.content.res.GradientColor android.content.res.ObbInfo android.content.res.ObbInfo$1 android.content.res.ObbScanner +android.content.res.ResourceId android.content.res.Resources android.content.res.Resources$NotFoundException android.content.res.Resources$Theme @@ -874,7 +650,6 @@ android.database.ContentObserver$Transport android.database.CrossProcessCursor android.database.CrossProcessCursorWrapper android.database.Cursor -android.database.CursorIndexOutOfBoundsException android.database.CursorToBulkCursorAdaptor android.database.CursorToBulkCursorAdaptor$ContentObserverProxy android.database.CursorWindow @@ -890,10 +665,12 @@ android.database.IContentObserver android.database.IContentObserver$Stub android.database.IContentObserver$Stub$Proxy android.database.MatrixCursor +android.database.MergeCursor +android.database.MergeCursor$1 android.database.Observable android.database.SQLException +android.database.sqlite.-$Lambda$gPaS7kMbZ8xtrrEx06GlwJ2iDWE android.database.sqlite.DatabaseObjectNotClosedException -android.database.sqlite.SQLiteCantOpenDatabaseException android.database.sqlite.SQLiteClosable android.database.sqlite.SQLiteConnection android.database.sqlite.SQLiteConnection$Operation @@ -903,11 +680,14 @@ android.database.sqlite.SQLiteConnection$PreparedStatementCache android.database.sqlite.SQLiteConnectionPool android.database.sqlite.SQLiteConnectionPool$AcquiredConnectionStatus android.database.sqlite.SQLiteConnectionPool$ConnectionWaiter +android.database.sqlite.SQLiteConnectionPool$IdleConnectionHandler android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteCursorDriver android.database.sqlite.SQLiteCustomFunction android.database.sqlite.SQLiteDatabase -android.database.sqlite.SQLiteDatabase$1 +android.database.sqlite.SQLiteDatabase$CursorFactory +android.database.sqlite.SQLiteDatabase$OpenParams +android.database.sqlite.SQLiteDatabase$OpenParams$Builder android.database.sqlite.SQLiteDatabaseConfiguration android.database.sqlite.SQLiteDatabaseCorruptException android.database.sqlite.SQLiteDatabaseLockedException @@ -916,6 +696,7 @@ android.database.sqlite.SQLiteDebug$PagerStats android.database.sqlite.SQLiteDirectCursorDriver android.database.sqlite.SQLiteDoneException android.database.sqlite.SQLiteException +android.database.sqlite.SQLiteFullException android.database.sqlite.SQLiteGlobal android.database.sqlite.SQLiteOpenHelper android.database.sqlite.SQLiteProgram @@ -938,14 +719,9 @@ android.ddm.DdmRegister android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8 android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$1 android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$2 -android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$4 -android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$6 -android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$7 -android.graphics.-$Lambda$ZrP-zejiEXAqfwV-MyP5lE9mYC8$8 android.graphics.BaseCanvas android.graphics.Bitmap android.graphics.Bitmap$1 -android.graphics.Bitmap$CompressFormat android.graphics.Bitmap$Config android.graphics.BitmapFactory android.graphics.BitmapFactory$Options @@ -959,6 +735,8 @@ android.graphics.Canvas$NoImagePreloadHolder android.graphics.CanvasProperty android.graphics.Color android.graphics.ColorFilter +android.graphics.ColorFilter$NoImagePreloadHolder +android.graphics.ColorMatrix android.graphics.ColorMatrixColorFilter android.graphics.ColorSpace android.graphics.ColorSpace$Lab @@ -980,7 +758,6 @@ android.graphics.GraphicBuffer android.graphics.GraphicBuffer$1 android.graphics.Insets android.graphics.Interpolator -android.graphics.Interpolator$Result android.graphics.LightingColorFilter android.graphics.LinearGradient android.graphics.MaskFilter @@ -1002,12 +779,12 @@ android.graphics.Paint$NoImagePreloadHolder android.graphics.Paint$Style android.graphics.PaintFlagsDrawFilter android.graphics.Path -android.graphics.Path$Direction android.graphics.Path$FillType android.graphics.PathDashPathEffect android.graphics.PathEffect android.graphics.PathMeasure android.graphics.Picture +android.graphics.PixelFormat android.graphics.Point android.graphics.Point$1 android.graphics.PointF @@ -1029,17 +806,21 @@ android.graphics.Shader android.graphics.Shader$TileMode android.graphics.SumPathEffect android.graphics.SurfaceTexture +android.graphics.SurfaceTexture$1 +android.graphics.SurfaceTexture$OnFrameAvailableListener android.graphics.SweepGradient android.graphics.TableMaskFilter android.graphics.TemporaryBuffer android.graphics.Typeface android.graphics.Xfermode android.graphics.YuvImage -android.graphics.drawable.AdaptiveIconDrawable +android.graphics.drawable.AdaptiveIconDrawable$ChildDrawable +android.graphics.drawable.AdaptiveIconDrawable$LayerState android.graphics.drawable.Animatable android.graphics.drawable.Animatable2 android.graphics.drawable.AnimatedStateListDrawable android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState +android.graphics.drawable.AnimatedStateListDrawable$Transition android.graphics.drawable.AnimatedVectorDrawable android.graphics.drawable.AnimatedVectorDrawable$1 android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState @@ -1050,6 +831,8 @@ android.graphics.drawable.AnimationDrawable android.graphics.drawable.AnimationDrawable$AnimationState android.graphics.drawable.BitmapDrawable android.graphics.drawable.BitmapDrawable$BitmapState +android.graphics.drawable.ClipDrawable +android.graphics.drawable.ClipDrawable$ClipState android.graphics.drawable.ColorDrawable android.graphics.drawable.ColorDrawable$ColorState android.graphics.drawable.Drawable @@ -1081,12 +864,13 @@ android.graphics.drawable.RippleComponent android.graphics.drawable.RippleComponent$RenderNodeAnimatorSet android.graphics.drawable.RippleDrawable android.graphics.drawable.RippleDrawable$RippleState -android.graphics.drawable.RippleForeground android.graphics.drawable.RippleForeground$1 android.graphics.drawable.RippleForeground$2 android.graphics.drawable.RippleForeground$3 android.graphics.drawable.RippleForeground$4 android.graphics.drawable.RippleForeground$LogDecelerateInterpolator +android.graphics.drawable.RotateDrawable +android.graphics.drawable.RotateDrawable$RotateState android.graphics.drawable.ScaleDrawable android.graphics.drawable.ScaleDrawable$ScaleState android.graphics.drawable.ShapeDrawable @@ -1096,6 +880,7 @@ android.graphics.drawable.StateListDrawable$StateListState android.graphics.drawable.TransitionDrawable android.graphics.drawable.TransitionDrawable$TransitionState android.graphics.drawable.VectorDrawable +android.graphics.drawable.VectorDrawable$VClipPath android.graphics.drawable.VectorDrawable$VFullPath android.graphics.drawable.VectorDrawable$VFullPath$1 android.graphics.drawable.VectorDrawable$VFullPath$10 @@ -1124,6 +909,7 @@ android.graphics.drawable.VectorDrawable$VectorDrawableState android.graphics.drawable.VectorDrawable$VectorDrawableState$1 android.graphics.drawable.shapes.OvalShape android.graphics.drawable.shapes.RectShape +android.graphics.drawable.shapes.RoundRectShape android.graphics.drawable.shapes.Shape android.graphics.fonts.FontVariationAxis android.graphics.pdf.PdfDocument @@ -1132,13 +918,15 @@ android.graphics.pdf.PdfRenderer android.hardware.Camera android.hardware.Camera$CameraInfo android.hardware.Camera$Face +android.hardware.CameraStatus$1 android.hardware.ConsumerIrManager android.hardware.HardwareBuffer android.hardware.HardwareBuffer$1 android.hardware.ICameraService android.hardware.ICameraService$Stub android.hardware.ICameraService$Stub$Proxy -android.hardware.Sensor +android.hardware.ICameraServiceListener +android.hardware.ICameraServiceListener$Stub android.hardware.SensorEvent android.hardware.SensorEventListener android.hardware.SensorManager @@ -1147,6 +935,7 @@ android.hardware.SerialPort android.hardware.SystemSensorManager android.hardware.SystemSensorManager$BaseEventQueue android.hardware.SystemSensorManager$SensorEventQueue +android.hardware.TriggerEventListener android.hardware.camera2.CameraAccessException android.hardware.camera2.CameraCharacteristics android.hardware.camera2.CameraCharacteristics$1 @@ -1238,7 +1027,16 @@ android.hardware.display.IDisplayManager$Stub android.hardware.display.IDisplayManager$Stub$Proxy android.hardware.display.IDisplayManagerCallback android.hardware.display.IDisplayManagerCallback$Stub +android.hardware.display.WifiDisplay$1 +android.hardware.display.WifiDisplaySessionInfo$1 +android.hardware.display.WifiDisplayStatus$1 android.hardware.fingerprint.FingerprintManager +android.hardware.fingerprint.FingerprintManager$1 +android.hardware.fingerprint.FingerprintManager$MyHandler +android.hardware.fingerprint.IFingerprintService +android.hardware.fingerprint.IFingerprintService$Stub +android.hardware.fingerprint.IFingerprintServiceReceiver +android.hardware.fingerprint.IFingerprintServiceReceiver$Stub android.hardware.hdmi.HdmiControlManager android.hardware.input.IInputDevicesChangedListener android.hardware.input.IInputDevicesChangedListener$Stub @@ -1248,32 +1046,14 @@ android.hardware.input.IInputManager$Stub$Proxy android.hardware.input.InputDeviceIdentifier android.hardware.input.InputDeviceIdentifier$1 android.hardware.input.InputManager +android.hardware.input.InputManager$InputDeviceListener +android.hardware.input.InputManager$InputDeviceListenerDelegate android.hardware.input.InputManager$InputDevicesChangedListener android.hardware.location.ActivityRecognitionHardware android.hardware.location.ContextHubManager android.hardware.location.IActivityRecognitionHardware android.hardware.location.IActivityRecognitionHardware$Stub android.hardware.radio.RadioManager -android.hardware.radio.RadioManager$AmBandConfig -android.hardware.radio.RadioManager$AmBandConfig$1 -android.hardware.radio.RadioManager$AmBandDescriptor -android.hardware.radio.RadioManager$AmBandDescriptor$1 -android.hardware.radio.RadioManager$BandConfig -android.hardware.radio.RadioManager$BandConfig$1 -android.hardware.radio.RadioManager$BandDescriptor -android.hardware.radio.RadioManager$BandDescriptor$1 -android.hardware.radio.RadioManager$FmBandConfig -android.hardware.radio.RadioManager$FmBandConfig$1 -android.hardware.radio.RadioManager$FmBandDescriptor -android.hardware.radio.RadioManager$FmBandDescriptor$1 -android.hardware.radio.RadioManager$ModuleProperties -android.hardware.radio.RadioManager$ModuleProperties$1 -android.hardware.radio.RadioManager$ProgramInfo -android.hardware.radio.RadioManager$ProgramInfo$1 -android.hardware.radio.RadioMetadata -android.hardware.radio.RadioMetadata$1 -android.hardware.radio.RadioModule -android.hardware.radio.RadioTuner android.hardware.soundtrigger.SoundTrigger android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel$1 @@ -1302,12 +1082,14 @@ android.hardware.usb.UsbDevice android.hardware.usb.UsbDeviceConnection android.hardware.usb.UsbManager android.hardware.usb.UsbRequest +android.hidl.base.V1_0.IBase android.icu.impl.BMPSet android.icu.impl.CacheBase android.icu.impl.CacheValue android.icu.impl.CacheValue$NullValue android.icu.impl.CacheValue$SoftValue android.icu.impl.CacheValue$Strength +android.icu.impl.CalendarUtil android.icu.impl.CaseMapImpl android.icu.impl.CaseMapImpl$StringContextIterator android.icu.impl.CharTrie @@ -1353,8 +1135,10 @@ android.icu.impl.ICUResourceBundle$OpenType android.icu.impl.ICUResourceBundle$WholeBundle android.icu.impl.ICUResourceBundleImpl android.icu.impl.ICUResourceBundleImpl$ResourceArray +android.icu.impl.ICUResourceBundleImpl$ResourceBinary android.icu.impl.ICUResourceBundleImpl$ResourceContainer android.icu.impl.ICUResourceBundleImpl$ResourceInt +android.icu.impl.ICUResourceBundleImpl$ResourceIntVector android.icu.impl.ICUResourceBundleImpl$ResourceString android.icu.impl.ICUResourceBundleImpl$ResourceTable android.icu.impl.ICUResourceBundleReader @@ -1392,13 +1176,16 @@ android.icu.impl.Normalizer2Impl$1 android.icu.impl.Normalizer2Impl$IsAcceptable android.icu.impl.Pair android.icu.impl.PatternProps -android.icu.impl.PluralRulesLoader android.icu.impl.ReplaceableUCharacterIterator android.icu.impl.RuleCharacterIterator android.icu.impl.SimpleCache android.icu.impl.SoftCache -android.icu.impl.StandardPlural -android.icu.impl.StringPrepDataReader +android.icu.impl.TextTrieMap +android.icu.impl.TextTrieMap$Node +android.icu.impl.TimeZoneNamesFactoryImpl +android.icu.impl.TimeZoneNamesImpl$MZ2TZsCache +android.icu.impl.TimeZoneNamesImpl$MZMapEntry +android.icu.impl.TimeZoneNamesImpl$TZ2MZsCache android.icu.impl.Trie android.icu.impl.Trie$DataManipulate android.icu.impl.Trie$DefaultGetFoldingOffset @@ -1410,7 +1197,7 @@ android.icu.impl.Trie2$UTrie2Header android.icu.impl.Trie2$ValueMapper android.icu.impl.Trie2$ValueWidth android.icu.impl.Trie2_16 -android.icu.impl.UBiDiProps +android.icu.impl.Trie2_32 android.icu.impl.UBiDiProps$IsAcceptable android.icu.impl.UCaseProps android.icu.impl.UCaseProps$ContextIterator @@ -1447,13 +1234,20 @@ android.icu.impl.UCharacterProperty$IntProperty android.icu.impl.UCharacterProperty$IsAcceptable android.icu.impl.UCharacterProperty$NormInertBinaryProperty android.icu.impl.UCharacterProperty$NormQuickCheckIntProperty +android.icu.impl.UPropertyAliases$IsAcceptable android.icu.impl.URLHandler$URLVisitor android.icu.impl.UResource$Array android.icu.impl.UResource$Key android.icu.impl.UResource$Sink android.icu.impl.UResource$Table android.icu.impl.UResource$Value +android.icu.impl.USerializedSet android.icu.impl.Utility +android.icu.impl.ZoneMeta$SystemTimeZoneCache +android.icu.impl.coll.CollationDataReader$IsAcceptable +android.icu.impl.coll.CollationRoot +android.icu.impl.coll.SharedObject +android.icu.impl.coll.SharedObject$Reference android.icu.impl.locale.AsciiUtil android.icu.impl.locale.BaseLocale android.icu.impl.locale.BaseLocale$Cache @@ -1461,23 +1255,34 @@ android.icu.impl.locale.BaseLocale$Key android.icu.impl.locale.LocaleObjectCache android.icu.impl.locale.LocaleObjectCache$CacheEntry android.icu.impl.locale.LocaleSyntaxException +android.icu.impl.number.Parse android.icu.lang.UCharacter android.icu.lang.UCharacterEnums$ECharacterCategory android.icu.lang.UCharacterEnums$ECharacterDirection -android.icu.math.BigDecimal android.icu.math.MathContext -android.icu.text.BreakIterator android.icu.text.BreakIterator$BreakIteratorCache android.icu.text.BreakIterator$BreakIteratorServiceShim -android.icu.text.BreakIteratorFactory android.icu.text.BreakIteratorFactory$BFService android.icu.text.BreakIteratorFactory$BFService$1RBBreakIteratorFactory android.icu.text.CaseMap android.icu.text.CaseMap$Upper +android.icu.text.Collator$ServiceShim +android.icu.text.CollatorServiceShim$CService +android.icu.text.CollatorServiceShim$CService$1CollatorFactory android.icu.text.CurrencyDisplayNames android.icu.text.CurrencyMetaInfo android.icu.text.CurrencyMetaInfo$CurrencyDigits android.icu.text.CurrencyMetaInfo$CurrencyFilter +android.icu.text.DateFormatSymbols$1 +android.icu.text.DateTimePatternGenerator$AppendItemNamesSink +android.icu.text.DateTimePatternGenerator$AvailableFormatsSink +android.icu.text.DateTimePatternGenerator$DateTimeMatcher +android.icu.text.DateTimePatternGenerator$DayPeriodAllowedHoursSink +android.icu.text.DateTimePatternGenerator$DistanceInfo +android.icu.text.DateTimePatternGenerator$PatternInfo +android.icu.text.DateTimePatternGenerator$PatternWithMatcher +android.icu.text.DateTimePatternGenerator$PatternWithSkeletonFlag +android.icu.text.DateTimePatternGenerator$VariableField android.icu.text.DecimalFormat android.icu.text.DecimalFormat$Unit android.icu.text.DecimalFormatSymbols @@ -1487,6 +1292,7 @@ android.icu.text.DecimalFormatSymbols$DecFmtDataSink android.icu.text.DigitList android.icu.text.DisplayContext android.icu.text.DisplayContext$Type +android.icu.text.Edits android.icu.text.IDNA android.icu.text.LanguageBreakEngine android.icu.text.Normalizer @@ -1503,13 +1309,15 @@ android.icu.text.Normalizer$QuickCheckResult android.icu.text.Normalizer2 android.icu.text.NumberFormat android.icu.text.NumberFormat$Field +android.icu.text.NumberFormat$NumberFormatShim +android.icu.text.NumberFormatServiceShim$NFService +android.icu.text.NumberFormatServiceShim$NFService$1RBNumberFormatFactory android.icu.text.NumberingSystem android.icu.text.NumberingSystem$1 android.icu.text.NumberingSystem$2 android.icu.text.NumberingSystem$LocaleLookupData android.icu.text.PluralRanges android.icu.text.PluralRanges$Matrix -android.icu.text.PluralRules android.icu.text.PluralRules$1 android.icu.text.PluralRules$AndConstraint android.icu.text.PluralRules$BinaryConstraint @@ -1518,23 +1326,17 @@ android.icu.text.PluralRules$Factory android.icu.text.PluralRules$FixedDecimal android.icu.text.PluralRules$FixedDecimalRange android.icu.text.PluralRules$FixedDecimalSamples -android.icu.text.PluralRules$Operand -android.icu.text.PluralRules$PluralType android.icu.text.PluralRules$RangeConstraint android.icu.text.PluralRules$Rule android.icu.text.PluralRules$RuleList -android.icu.text.PluralRules$SampleType -android.icu.text.PluralRules$SimpleTokenizer -android.icu.text.RBBIDataWrapper android.icu.text.RBBIDataWrapper$IsAcceptable android.icu.text.RBBIDataWrapper$RBBIDataHeader android.icu.text.RBBIDataWrapper$TrieFoldingFunc android.icu.text.Replaceable android.icu.text.ReplaceableString -android.icu.text.RuleBasedBreakIterator -android.icu.text.RuleBasedBreakIterator$LookAheadResults -android.icu.text.StringPrep -android.icu.text.StringPrepParseException +android.icu.text.SimpleDateFormat$PatternItem +android.icu.text.TimeZoneNames$Cache +android.icu.text.TimeZoneNames$Factory android.icu.text.TimeZoneNames$NameType android.icu.text.UCharacterIterator android.icu.text.UFieldPosition @@ -1545,6 +1347,13 @@ android.icu.text.UnhandledBreakEngine android.icu.text.UnicodeFilter android.icu.text.UnicodeMatcher android.icu.text.UnicodeSet +android.icu.text.UnicodeSet$GeneralCategoryMaskFilter +android.icu.text.UnicodeSet$IntPropertyFilter +android.icu.util.BasicTimeZone +android.icu.util.Calendar$FormatConfiguration +android.icu.util.Calendar$PatternData +android.icu.util.Calendar$WeekData +android.icu.util.Calendar$WeekDataCache android.icu.util.Currency android.icu.util.Currency$1 android.icu.util.Currency$CurrencyUsage @@ -1555,6 +1364,7 @@ android.icu.util.MeasureUnit$1 android.icu.util.MeasureUnit$2 android.icu.util.MeasureUnit$3 android.icu.util.MeasureUnit$Factory +android.icu.util.Output android.icu.util.TimeUnit android.icu.util.TimeZone android.icu.util.TimeZone$ConstantZone @@ -1566,37 +1376,50 @@ android.icu.util.ULocale$JDKLocaleHelper android.icu.util.ULocale$Type android.icu.util.UResourceBundle android.icu.util.UResourceBundle$RootType +android.icu.util.UResourceBundleIterator android.icu.util.UResourceTypeMismatchException android.icu.util.VersionInfo android.location.BatchedLocationCallbackTransport android.location.BatchedLocationCallbackTransport$CallbackTransport +android.location.Country$1 android.location.CountryDetector +android.location.GeocoderParams$1 android.location.GnssMeasurementCallbackTransport android.location.GnssMeasurementCallbackTransport$ListenerTransport android.location.GnssNavigationMessageCallbackTransport android.location.GnssNavigationMessageCallbackTransport$ListenerTransport android.location.IBatchedLocationCallback android.location.IBatchedLocationCallback$Stub +android.location.ICountryDetector +android.location.ICountryDetector$Stub android.location.IGnssMeasurementsListener android.location.IGnssMeasurementsListener$Stub android.location.IGnssNavigationMessageListener android.location.IGnssNavigationMessageListener$Stub +android.location.IGnssStatusListener +android.location.IGnssStatusListener$Stub +android.location.ILocationListener +android.location.ILocationListener$Stub android.location.ILocationManager android.location.ILocationManager$Stub android.location.ILocationManager$Stub$Proxy android.location.LocalListenerHelper android.location.Location -android.location.LocationListener +android.location.Location$1 +android.location.Location$2 +android.location.Location$BearingDistanceCache android.location.LocationManager -android.location.LocationRequest +android.location.LocationManager$ListenerTransport android.location.LocationRequest$1 android.media.AudioAttributes android.media.AudioAttributes$1 android.media.AudioAttributes$Builder android.media.AudioDevicePort android.media.AudioDevicePortConfig +android.media.AudioFocusRequest$Builder android.media.AudioFormat android.media.AudioFormat$1 +android.media.AudioFormat$Builder android.media.AudioGain android.media.AudioGainConfig android.media.AudioHandle @@ -1604,6 +1427,8 @@ android.media.AudioManager android.media.AudioManager$1 android.media.AudioManager$2 android.media.AudioManager$3 +android.media.AudioManager$FocusRequestInfo +android.media.AudioManager$OnAudioFocusChangeListener android.media.AudioManager$ServiceEventHandlerDelegate android.media.AudioManager$ServiceEventHandlerDelegate$1 android.media.AudioMixPort @@ -1613,62 +1438,90 @@ android.media.AudioPort android.media.AudioPortConfig android.media.AudioPortEventHandler android.media.AudioRecord +android.media.AudioRoutesInfo$1 android.media.AudioRouting android.media.AudioSystem android.media.AudioTimestamp android.media.AudioTrack -android.media.CamcorderProfile -android.media.CameraProfile -android.media.DecoderCapabilities -android.media.EncoderCapabilities +android.media.BufferingParams$1 android.media.IAudioFocusDispatcher android.media.IAudioFocusDispatcher$Stub +android.media.IAudioRoutesObserver +android.media.IAudioRoutesObserver$Stub android.media.IAudioService android.media.IAudioService$Stub android.media.IAudioService$Stub$Proxy android.media.IMediaHTTPConnection android.media.IMediaHTTPConnection$Stub +android.media.IMediaRouterClient +android.media.IMediaRouterClient$Stub +android.media.IMediaRouterService +android.media.IMediaRouterService$Stub +android.media.IMediaRouterService$Stub$Proxy android.media.IPlaybackConfigDispatcher android.media.IPlaybackConfigDispatcher$Stub android.media.IPlayer android.media.IPlayer$Stub android.media.IRecordingConfigDispatcher android.media.IRecordingConfigDispatcher$Stub +android.media.IRemoteVolumeObserver +android.media.IRemoteVolumeObserver$Stub android.media.IRingtonePlayer android.media.IRingtonePlayer$Stub +android.media.IRingtonePlayer$Stub$Proxy android.media.Image android.media.ImageReader -android.media.ImageReader$SurfaceImage -android.media.ImageWriter -android.media.ImageWriter$WriterSurfaceImage android.media.JetPlayer -android.media.MediaCodec +android.media.MediaCodec$BufferInfo +android.media.MediaCodec$BufferMap +android.media.MediaCodec$CryptoInfo +android.media.MediaCodec$CryptoInfo$Pattern +android.media.MediaCodec$EventHandler +android.media.MediaCodecInfo$AudioCapabilities +android.media.MediaCodecInfo$CodecProfileLevel +android.media.MediaCodecInfo$Feature +android.media.MediaCodecInfo$VideoCapabilities android.media.MediaCodecList -android.media.MediaCrypto -android.media.MediaDescrambler -android.media.MediaDrm -android.media.MediaExtractor android.media.MediaFormat -android.media.MediaHTTPConnection -android.media.MediaMetadataRetriever -android.media.MediaMuxer +android.media.MediaMetadata$1 +android.media.MediaMetadata$Builder android.media.MediaPlayer -android.media.MediaRecorder +android.media.MediaPlayer$1 +android.media.MediaPlayer$2 +android.media.MediaPlayer$EventHandler +android.media.MediaPlayer$OnCompletionListener +android.media.MediaPlayer$OnSeekCompleteListener +android.media.MediaPlayer$OnSubtitleDataListener +android.media.MediaPlayer$TimeProvider +android.media.MediaPlayer$TimeProvider$EventHandler android.media.MediaRouter -android.media.MediaScanner -android.media.MediaSync +android.media.MediaRouter$Callback +android.media.MediaRouter$CallbackInfo +android.media.MediaRouter$RouteCategory +android.media.MediaRouter$RouteInfo +android.media.MediaRouter$RouteInfo$1 +android.media.MediaRouter$Static +android.media.MediaRouter$Static$1 +android.media.MediaRouter$Static$1$1 +android.media.MediaRouter$Static$Client +android.media.MediaRouter$VolumeCallback +android.media.MediaRouter$VolumeChangeReceiver +android.media.MediaRouter$WifiDisplayStatusChangedReceiver +android.media.MediaTimeProvider android.media.PlaybackParams android.media.PlaybackParams$1 android.media.PlayerBase android.media.PlayerBase$IAppOpsCallbackWrapper android.media.PlayerBase$IPlayerWrapper -android.media.PlayerBase$PlayerIdCard android.media.PlayerBase$PlayerIdCard$1 android.media.RemoteDisplay -android.media.ResampleInputStream +android.media.Ringtone$MyOnCompletionListener android.media.SoundPool android.media.SubtitleController$Listener android.media.ToneGenerator +android.media.Utils +android.media.Utils$1 +android.media.Utils$2 android.media.VolumeAutomation android.media.VolumeShaper$Configuration android.media.VolumeShaper$Configuration$1 @@ -1685,32 +1538,37 @@ android.media.midi.MidiManager android.media.projection.MediaProjectionManager android.media.session.IActiveSessionsListener android.media.session.IActiveSessionsListener$Stub +android.media.session.ISession +android.media.session.ISession$Stub +android.media.session.ISessionCallback +android.media.session.ISessionCallback$Stub android.media.session.ISessionController android.media.session.ISessionController$Stub +android.media.session.ISessionController$Stub$Proxy android.media.session.ISessionControllerCallback android.media.session.ISessionControllerCallback$Stub android.media.session.ISessionManager android.media.session.ISessionManager$Stub +android.media.session.ISessionManager$Stub$Proxy android.media.session.MediaController android.media.session.MediaController$CallbackStub android.media.session.MediaController$TransportControls -android.media.session.MediaSession$Token +android.media.session.MediaSession +android.media.session.MediaSession$Callback +android.media.session.MediaSession$CallbackMessageHandler +android.media.session.MediaSession$CallbackStub android.media.session.MediaSession$Token$1 android.media.session.MediaSessionManager -android.media.session.PlaybackState android.media.session.PlaybackState$1 -android.media.session.PlaybackState$CustomAction +android.media.session.PlaybackState$Builder android.media.session.PlaybackState$CustomAction$1 android.media.soundtrigger.SoundTriggerManager android.media.tv.TvInputManager -android.mtp.MtpDatabase -android.mtp.MtpDevice +android.metrics.LogMaker android.mtp.MtpDeviceInfo android.mtp.MtpEvent android.mtp.MtpObjectInfo -android.mtp.MtpPropertyGroup android.mtp.MtpPropertyList -android.mtp.MtpServer android.mtp.MtpStorage android.mtp.MtpStorageInfo android.net.ConnectivityManager @@ -1718,24 +1576,18 @@ android.net.ConnectivityManager$CallbackHandler android.net.ConnectivityManager$NetworkCallback android.net.ConnectivityThread android.net.Credentials -android.net.DhcpInfo -android.net.DhcpInfo$1 android.net.EthernetManager android.net.IConnectivityManager android.net.IConnectivityManager$Stub android.net.IConnectivityManager$Stub$Proxy android.net.INetworkPolicyManager android.net.INetworkPolicyManager$Stub +android.net.INetworkPolicyManager$Stub$Proxy android.net.INetworkScoreService android.net.INetworkScoreService$Stub -android.net.INetworkScoreService$Stub$Proxy android.net.INetworkStatsService android.net.INetworkStatsService$Stub android.net.INetworkStatsService$Stub$Proxy -android.net.IpConfiguration -android.net.IpConfiguration$1 -android.net.IpConfiguration$IpAssignment -android.net.IpConfiguration$ProxySettings android.net.IpPrefix android.net.IpPrefix$1 android.net.IpSecManager @@ -1746,7 +1598,6 @@ android.net.LinkProperties$1 android.net.LocalServerSocket android.net.LocalSocket android.net.LocalSocketAddress -android.net.LocalSocketAddress$Namespace android.net.LocalSocketImpl android.net.LocalSocketImpl$SocketInputStream android.net.LocalSocketImpl$SocketOutputStream @@ -1759,8 +1610,6 @@ android.net.NetworkInfo android.net.NetworkInfo$1 android.net.NetworkInfo$DetailedState android.net.NetworkInfo$State -android.net.NetworkKey -android.net.NetworkKey$1 android.net.NetworkPolicyManager android.net.NetworkRequest android.net.NetworkRequest$1 @@ -1772,17 +1621,11 @@ android.net.NetworkStats android.net.NetworkStats$1 android.net.NetworkUtils android.net.Proxy -android.net.ProxyInfo +android.net.ProxyInfo$1 android.net.RouteInfo android.net.RouteInfo$1 -android.net.RssiCurve -android.net.RssiCurve$1 -android.net.SSLCertificateSocketFactory android.net.SSLCertificateSocketFactory$1 android.net.SSLSessionCache -android.net.ScoredNetwork -android.net.ScoredNetwork$1 -android.net.StaticIpConfiguration android.net.TrafficStats android.net.Uri android.net.Uri$1 @@ -1797,24 +1640,18 @@ android.net.Uri$PathPart android.net.Uri$PathSegments android.net.Uri$PathSegmentsBuilder android.net.Uri$StringUri -android.net.WifiKey -android.net.WifiKey$1 +android.net.http.AndroidHttpClient$1 +android.net.http.X509TrustManagerExtensions +android.net.lowpan.LowpanManager android.net.nsd.NsdManager android.net.wifi.IWifiManager android.net.wifi.IWifiManager$Stub android.net.wifi.IWifiManager$Stub$Proxy -android.net.wifi.ParcelUtil android.net.wifi.RttManager -android.net.wifi.ScanResult android.net.wifi.ScanResult$1 android.net.wifi.ScanResult$InformationElement android.net.wifi.SupplicantState android.net.wifi.SupplicantState$1 -android.net.wifi.WifiConfiguration -android.net.wifi.WifiConfiguration$1 -android.net.wifi.WifiConfiguration$NetworkSelectionStatus -android.net.wifi.WifiEnterpriseConfig -android.net.wifi.WifiEnterpriseConfig$1 android.net.wifi.WifiInfo android.net.wifi.WifiInfo$1 android.net.wifi.WifiManager @@ -1824,6 +1661,24 @@ android.net.wifi.WifiSsid android.net.wifi.WifiSsid$1 android.net.wifi.aware.WifiAwareManager android.net.wifi.p2p.WifiP2pManager +android.nfc.IAppCallback +android.nfc.IAppCallback$Stub +android.nfc.INfcAdapter +android.nfc.INfcAdapter$Stub +android.nfc.INfcAdapter$Stub$Proxy +android.nfc.INfcCardEmulation +android.nfc.INfcCardEmulation$Stub +android.nfc.INfcCardEmulation$Stub$Proxy +android.nfc.INfcFCardEmulation +android.nfc.INfcFCardEmulation$Stub +android.nfc.INfcFCardEmulation$Stub$Proxy +android.nfc.INfcTag +android.nfc.INfcTag$Stub +android.nfc.INfcTag$Stub$Proxy +android.nfc.NfcActivityManager$NfcActivityState +android.nfc.NfcActivityManager$NfcApplicationState +android.nfc.NfcAdapter$1 +android.nfc.NfcAdapter$CreateNdefMessageCallback android.nfc.NfcManager android.opengl.EGL14 android.opengl.EGLConfig @@ -1845,8 +1700,9 @@ android.opengl.GLES32 android.opengl.GLUtils android.opengl.Matrix android.opengl.Visibility -android.os.-$Lambda$6x30vPJhBKUfNY8tswxuZo3DCe0 +android.os.-$Lambda$BcGBlsGjMZMF6Ej78rWJ608MYSM android.os.AsyncResult +android.os.AsyncTask android.os.AsyncTask$1 android.os.AsyncTask$2 android.os.AsyncTask$3 @@ -1860,6 +1716,23 @@ android.os.BadParcelableException android.os.BaseBundle android.os.BaseBundle$NoImagePreloadHolder android.os.BatteryManager +android.os.BatteryStats$BitDescription +android.os.BatteryStats$ControllerActivityCounter +android.os.BatteryStats$Counter +android.os.BatteryStats$HistoryEventTracker +android.os.BatteryStats$HistoryItem +android.os.BatteryStats$HistoryStepDetails +android.os.BatteryStats$HistoryTag +android.os.BatteryStats$IntToString +android.os.BatteryStats$LevelStepTracker +android.os.BatteryStats$LongCounter +android.os.BatteryStats$LongCounterArray +android.os.BatteryStats$Timer +android.os.BatteryStats$Uid$Pkg +android.os.BatteryStats$Uid$Pkg$Serv +android.os.BatteryStats$Uid$Proc +android.os.BatteryStats$Uid$Sensor +android.os.BatteryStats$Uid$Wakelock android.os.Binder android.os.BinderProxy android.os.Build @@ -1898,9 +1771,14 @@ android.os.IBinder android.os.IBinder$DeathRecipient android.os.ICancellationSignal android.os.ICancellationSignal$Stub +android.os.ICancellationSignal$Stub$Proxy android.os.IDeviceIdleController android.os.IDeviceIdleController$Stub +android.os.IHardwarePropertiesManager +android.os.IHardwarePropertiesManager$Stub android.os.IHwBinder +android.os.IHwBinder$DeathRecipient +android.os.IHwInterface android.os.IInterface android.os.IMessenger android.os.IMessenger$Stub @@ -1911,13 +1789,13 @@ android.os.INetworkManagementService$Stub$Proxy android.os.IPowerManager android.os.IPowerManager$Stub android.os.IPowerManager$Stub$Proxy -android.os.IRemoteCallback android.os.IServiceManager android.os.IUserManager android.os.IUserManager$Stub android.os.IUserManager$Stub$Proxy android.os.IVibratorService android.os.IVibratorService$Stub +android.os.IVibratorService$Stub$Proxy android.os.IncidentManager android.os.LocaleList android.os.LocaleList$1 @@ -1932,18 +1810,22 @@ android.os.Messenger$1 android.os.OperationCanceledException android.os.Parcel android.os.Parcel$1 +android.os.Parcel$2 +android.os.Parcel$ReadWriteHelper android.os.ParcelFileDescriptor android.os.ParcelFileDescriptor$1 -android.os.ParcelUuid +android.os.ParcelFileDescriptor$AutoCloseInputStream android.os.ParcelUuid$1 android.os.Parcelable android.os.Parcelable$ClassLoaderCreator android.os.Parcelable$Creator android.os.ParcelableException +android.os.ParcelableParcel$1 android.os.PatternMatcher android.os.PatternMatcher$1 android.os.PersistableBundle android.os.PersistableBundle$1 +android.os.PooledStringWriter android.os.PowerManager android.os.PowerManager$WakeLock android.os.PowerManager$WakeLock$1 @@ -1951,8 +1833,10 @@ android.os.Process android.os.RecoverySystem android.os.Registrant android.os.RemoteCallbackList +android.os.RemoteCallbackList$Callback android.os.RemoteException android.os.ResultReceiver +android.os.ResultReceiver$1 android.os.SELinux android.os.Seccomp android.os.ServiceManager @@ -1960,6 +1844,7 @@ android.os.ServiceManager$ServiceNotFoundException android.os.ServiceManagerNative android.os.ServiceManagerProxy android.os.ServiceSpecificException +android.os.SharedMemory android.os.ShellCallback android.os.StatFs android.os.StrictMode @@ -1993,16 +1878,13 @@ android.os.SystemClock android.os.SystemProperties android.os.SystemVibrator android.os.Trace -android.os.Trace$1 android.os.UEventObserver -android.os.UpdateLock android.os.UserHandle android.os.UserHandle$1 android.os.UserManager android.os.Vibrator android.os.VintfObject android.os.VintfRuntimeInfo -android.os.WorkSource android.os.WorkSource$1 android.os.ZygoteProcess android.os.ZygoteStartFailedEx @@ -2016,16 +1898,14 @@ android.os.storage.StorageManager android.os.storage.StorageManager$ObbActionListener android.os.storage.StorageVolume android.os.storage.StorageVolume$1 +android.os.storage.VolumeInfo$1 +android.os.storage.VolumeInfo$2 android.preference.PreferenceManager +android.preference.PreferenceManager$OnPreferenceTreeClickListener android.print.PrintManager -android.provider.-$Lambda$87WmhkvObehVg0OMBzwa_MTVV8g android.provider.-$Lambda$a7Jyr6j_Mb70hHJ2ssL1AAhKh4c +android.provider.-$Lambda$asz6VwQ86PPY-v8JLMb7rx-pSqg android.provider.BaseColumns -android.provider.CalendarContract$CalendarColumns -android.provider.CalendarContract$CalendarSyncColumns -android.provider.CalendarContract$EventsColumns -android.provider.CalendarContract$SyncColumns -android.provider.ContactsContract android.provider.ContactsContract$CommonDataKinds$BaseTypes android.provider.ContactsContract$CommonDataKinds$CommonColumns android.provider.ContactsContract$ContactCounts @@ -2038,9 +1918,9 @@ android.provider.ContactsContract$DataColumnsWithJoins android.provider.ContactsContract$DataUsageStatColumns android.provider.ContactsContract$RawContactsColumns android.provider.ContactsContract$StatusColumns -android.provider.Downloads$Impl android.provider.FontsContract android.provider.FontsContract$1 +android.provider.MediaStore$MediaColumns android.provider.Settings android.provider.Settings$ContentProviderHolder android.provider.Settings$GenerationTracker @@ -2064,6 +1944,10 @@ android.provider.Settings$System$InclusiveFloatRangeValidator android.provider.Settings$System$InclusiveIntegerRangeValidator android.provider.Settings$System$Validator android.renderscript.RenderScriptCacheDir +android.security.IKeystoreService +android.security.IKeystoreService$Stub +android.security.IKeystoreService$Stub$Proxy +android.security.KeyStore android.security.keystore.AndroidKeyStoreBCWorkaroundProvider android.security.keystore.AndroidKeyStoreProvider android.security.net.config.ApplicationConfig @@ -2075,6 +1959,8 @@ android.security.net.config.DirectoryCertificateSource android.security.net.config.DirectoryCertificateSource$1 android.security.net.config.DirectoryCertificateSource$3 android.security.net.config.DirectoryCertificateSource$CertSelector +android.security.net.config.KeyStoreCertificateSource +android.security.net.config.KeyStoreConfigSource android.security.net.config.ManifestConfigSource android.security.net.config.ManifestConfigSource$DefaultConfigSource android.security.net.config.NetworkSecurityConfig @@ -2086,14 +1972,29 @@ android.security.net.config.PinSet android.security.net.config.RootTrustManager android.security.net.config.RootTrustManagerFactorySpi android.security.net.config.SystemCertificateSource +android.security.net.config.SystemCertificateSource$NoPreloadHolder android.security.net.config.TrustedCertificateStoreAdapter android.security.net.config.UserCertificateSource -android.service.notification.StatusBarNotification +android.security.net.config.XmlConfigSource +android.security.net.config.XmlConfigSource$ParserException +android.service.notification.Condition$1 +android.service.notification.INotificationListener +android.service.notification.INotificationListener$Stub +android.service.notification.IStatusBarNotificationHolder +android.service.notification.IStatusBarNotificationHolder$Stub +android.service.notification.NotificationListenerService +android.service.notification.NotificationListenerService$MyHandler +android.service.notification.NotificationListenerService$NotificationListenerWrapper +android.service.notification.NotificationListenerService$RankingMap$1 +android.service.notification.NotificationRankingUpdate$1 +android.service.notification.StatusBarNotification$1 +android.service.notification.ZenModeConfig$ZenRule$1 android.service.oemlock.OemLockManager -android.service.persistentdata.IPersistentDataBlockService -android.service.persistentdata.IPersistentDataBlockService$Stub -android.service.persistentdata.IPersistentDataBlockService$Stub$Proxy android.service.persistentdata.PersistentDataBlockManager +android.service.vr.IVrManager +android.service.vr.IVrManager$Stub +android.service.vr.IVrStateCallbacks +android.service.vr.IVrStateCallbacks$Stub android.system.ErrnoException android.system.GaiException android.system.NetlinkSocketAddress @@ -2109,40 +2010,37 @@ android.system.StructPasswd android.system.StructPollfd android.system.StructStat android.system.StructStatVfs +android.system.StructTimespec android.system.StructTimeval android.system.StructUcred android.system.StructUtsname android.system.UnixSocketAddress +android.telecom.DisconnectCause$1 +android.telecom.Log$1 +android.telecom.PhoneAccount$1 +android.telecom.PhoneAccountHandle$1 android.telecom.TelecomManager android.telephony.CarrierConfigManager -android.telephony.CellIdentityWcdma -android.telephony.CellIdentityWcdma$1 -android.telephony.CellInfo +android.telephony.CellIdentityLte$1 android.telephony.CellInfo$1 -android.telephony.CellInfoWcdma -android.telephony.CellInfoWcdma$1 -android.telephony.CellLocation -android.telephony.CellSignalStrength -android.telephony.CellSignalStrengthWcdma -android.telephony.CellSignalStrengthWcdma$1 +android.telephony.CellInfoLte$1 +android.telephony.CellSignalStrengthLte$1 android.telephony.PhoneStateListener android.telephony.PhoneStateListener$1 android.telephony.PhoneStateListener$IPhoneStateListenerStub android.telephony.Rlog -android.telephony.ServiceState android.telephony.ServiceState$1 -android.telephony.SignalStrength android.telephony.SignalStrength$1 -android.telephony.SubscriptionInfo android.telephony.SubscriptionInfo$1 android.telephony.SubscriptionManager android.telephony.SubscriptionManager$OnSubscriptionsChangedListener android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$1 android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$2 android.telephony.TelephonyManager -android.telephony.TelephonyManager$MultiSimVariants +android.telephony.euicc.EuiccManager android.text.AndroidBidi android.text.AndroidCharacter +android.text.Annotation android.text.BoringLayout android.text.BoringLayout$Metrics android.text.ClipboardManager @@ -2156,6 +2054,9 @@ android.text.FontConfig$Family android.text.FontConfig$Font android.text.GetChars android.text.GraphicsOperations +android.text.Html +android.text.Html$HtmlParser +android.text.HtmlToSpannedConverter$Href android.text.Hyphenator android.text.Hyphenator$HyphenationData android.text.InputFilter @@ -2164,6 +2065,7 @@ android.text.Layout android.text.Layout$Alignment android.text.Layout$Directions android.text.Layout$Ellipsizer +android.text.Layout$SpannedEllipsizer android.text.MeasuredText android.text.NoCopySpan android.text.NoCopySpan$Concrete @@ -2194,6 +2096,7 @@ android.text.TextDirectionHeuristics$TextDirectionHeuristicImpl android.text.TextDirectionHeuristics$TextDirectionHeuristicInternal android.text.TextDirectionHeuristics$TextDirectionHeuristicLocale android.text.TextLine +android.text.TextLine$DecorationInfo android.text.TextPaint android.text.TextUtils android.text.TextUtils$1 @@ -2202,22 +2105,19 @@ android.text.TextUtils$SimpleStringSplitter android.text.TextUtils$StringSplitter android.text.TextUtils$TruncateAt android.text.TextWatcher -android.text.format.Time +android.text.format.Formatter android.text.format.Time$TimeCalculator -android.text.format.TimeFormatter android.text.method.AllCapsTransformationMethod android.text.method.ArrowKeyMovementMethod android.text.method.BaseKeyListener android.text.method.BaseMovementMethod android.text.method.KeyListener -android.text.method.LinkMovementMethod android.text.method.MetaKeyKeyListener android.text.method.MovementMethod android.text.method.PasswordTransformationMethod android.text.method.ReplacementTransformationMethod android.text.method.ReplacementTransformationMethod$ReplacementCharSequence android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence -android.text.method.ScrollingMovementMethod android.text.method.SingleLineTransformationMethod android.text.method.TextKeyListener android.text.method.TextKeyListener$Capitalize @@ -2226,6 +2126,7 @@ android.text.method.TransformationMethod2 android.text.style.AlignmentSpan android.text.style.CharacterStyle android.text.style.EasyEditSpan +android.text.style.ForegroundColorSpan android.text.style.LeadingMarginSpan android.text.style.LineBackgroundSpan android.text.style.LineHeightSpan @@ -2236,6 +2137,9 @@ android.text.style.SpellCheckSpan android.text.style.StyleSpan android.text.style.SuggestionSpan android.text.style.TabStopSpan +android.text.style.TextAppearanceSpan +android.text.style.URLSpan +android.text.style.UnderlineSpan android.text.style.UpdateAppearance android.text.style.UpdateLayout android.text.style.WrapTogetherSpan @@ -2256,6 +2160,7 @@ android.transition.ChangeTransform$1 android.transition.ChangeTransform$2 android.transition.Fade android.transition.PathMotion +android.transition.Scene android.transition.Transition android.transition.Transition$1 android.transition.TransitionInflater @@ -2275,8 +2180,8 @@ android.util.Base64 android.util.Base64$Coder android.util.Base64$Decoder android.util.Base64$Encoder -android.util.BootTimingsTraceLog android.util.ContainerHelpers +android.util.DebugUtils android.util.DisplayMetrics android.util.EventLog android.util.EventLog$Event @@ -2287,7 +2192,6 @@ android.util.Log android.util.Log$1 android.util.Log$ImmediateLogWriter android.util.Log$PreloadHolder -android.util.Log$TerribleFailure android.util.Log$TerribleFailureHandler android.util.LogPrinter android.util.LongArray @@ -2327,25 +2231,28 @@ android.util.SparseIntArray android.util.SparseLongArray android.util.StateSet android.util.SuperNotCalledException -android.util.TimeUtils +android.util.TimingLogger +android.util.TimingsTraceLog android.util.TypedValue android.util.Xml android.util.jar.StrictJarFile android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$1 -android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$2 -android.view.-$Lambda$6k_RnLLpNi5zg27ubDxN4lDdBbk$3 -android.view.-$Lambda$iU_USrtPm1XIm5H9QYQvXfBGDE4 -android.view.-$Lambda$iU_USrtPm1XIm5H9QYQvXfBGDE4$1 +android.view.-$Lambda$XmA8Y30pNAdQP9ujRlGx1qfDHH8 android.view.AbsSavedState android.view.AbsSavedState$1 android.view.AbsSavedState$2 +android.view.AccessibilityInteractionController +android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher +android.view.AccessibilityInteractionController$PrivateHandler android.view.ActionMode android.view.ActionMode$Callback android.view.ActionProvider +android.view.ActionProvider$SubUiVisibilityListener android.view.Choreographer android.view.Choreographer$1 android.view.Choreographer$2 +android.view.Choreographer$3 android.view.Choreographer$CallbackQueue android.view.Choreographer$CallbackRecord android.view.Choreographer$FrameCallback @@ -2406,6 +2313,7 @@ android.view.InputChannel android.view.InputChannel$1 android.view.InputDevice android.view.InputDevice$1 +android.view.InputDevice$MotionRange android.view.InputEvent android.view.InputEvent$1 android.view.InputEventConsistencyVerifier @@ -2428,6 +2336,7 @@ android.view.LayoutInflater$FactoryMerger android.view.LayoutInflater$Filter android.view.Menu android.view.MenuInflater +android.view.MenuInflater$MenuState android.view.MenuItem android.view.MenuItem$OnActionExpandListener android.view.MenuItem$OnMenuItemClickListener @@ -2435,6 +2344,8 @@ android.view.MotionEvent android.view.MotionEvent$1 android.view.MotionEvent$PointerCoords android.view.MotionEvent$PointerProperties +android.view.OrientationEventListener +android.view.OrientationEventListener$SensorEventListenerImpl android.view.PointerIcon android.view.PointerIcon$1 android.view.RecordingCanvas @@ -2443,6 +2354,10 @@ android.view.RenderNode$NoImagePreloadHolder android.view.RenderNodeAnimator android.view.RenderNodeAnimator$1 android.view.RenderNodeAnimatorSetHelper +android.view.ScaleGestureDetector +android.view.ScaleGestureDetector$1 +android.view.ScaleGestureDetector$OnScaleGestureListener +android.view.ScaleGestureDetector$SimpleOnScaleGestureListener android.view.SearchEvent android.view.SubMenu android.view.Surface @@ -2451,15 +2366,23 @@ android.view.Surface$CompatibleCanvas android.view.Surface$OutOfResourcesException android.view.SurfaceControl android.view.SurfaceControl$PhysicalDisplayInfo +android.view.SurfaceHolder android.view.SurfaceHolder$Callback android.view.SurfaceHolder$Callback2 android.view.SurfaceSession android.view.SurfaceView +android.view.SurfaceView$1 +android.view.SurfaceView$2 +android.view.SurfaceView$3 +android.view.SurfaceView$SurfaceControlWithBackground android.view.TextureView +android.view.TextureView$1 +android.view.TextureView$SurfaceTextureListener android.view.ThreadedRenderer android.view.ThreadedRenderer$DrawCallbacks android.view.ThreadedRenderer$ProcessInitializer android.view.ThreadedRenderer$ProcessInitializer$1 +android.view.TouchDelegate android.view.VelocityTracker android.view.VelocityTracker$Estimator android.view.View @@ -2483,22 +2406,29 @@ android.view.View$BaseSavedState$1 android.view.View$CheckForTap android.view.View$ForegroundInfo android.view.View$ListenerInfo +android.view.View$MatchLabelForPredicate android.view.View$MeasureSpec android.view.View$OnApplyWindowInsetsListener android.view.View$OnAttachStateChangeListener android.view.View$OnClickListener android.view.View$OnCreateContextMenuListener +android.view.View$OnDragListener android.view.View$OnFocusChangeListener +android.view.View$OnHoverListener android.view.View$OnKeyListener android.view.View$OnLayoutChangeListener android.view.View$OnLongClickListener +android.view.View$OnSystemUiVisibilityChangeListener android.view.View$OnTouchListener android.view.View$PerformClick android.view.View$ScrollabilityCache +android.view.View$SendViewScrolledAccessibilityEvent android.view.View$TooltipInfo android.view.View$TransformationInfo android.view.View$UnsetPressedState +android.view.View$VisibilityChangeForAutofillHandler android.view.ViewConfiguration +android.view.ViewDebug$HierarchyHandler android.view.ViewGroup android.view.ViewGroup$1 android.view.ViewGroup$2 @@ -2506,11 +2436,14 @@ android.view.ViewGroup$LayoutParams android.view.ViewGroup$MarginLayoutParams android.view.ViewGroup$OnHierarchyChangeListener android.view.ViewGroup$TouchTarget +android.view.ViewGroupOverlay android.view.ViewManager android.view.ViewOutlineProvider android.view.ViewOutlineProvider$1 android.view.ViewOutlineProvider$2 android.view.ViewOutlineProvider$3 +android.view.ViewOverlay +android.view.ViewOverlay$OverlayViewGroup android.view.ViewParent android.view.ViewPropertyAnimator android.view.ViewPropertyAnimator$1 @@ -2520,6 +2453,7 @@ android.view.ViewPropertyAnimator$PropertyBundle android.view.ViewRootImpl android.view.ViewRootImpl$1 android.view.ViewRootImpl$4 +android.view.ViewRootImpl$AccessibilityInteractionConnection android.view.ViewRootImpl$AccessibilityInteractionConnectionManager android.view.ViewRootImpl$ActivityConfigCallback android.view.ViewRootImpl$AsyncInputStage @@ -2534,12 +2468,14 @@ android.view.ViewRootImpl$InvalidateOnAnimationRunnable android.view.ViewRootImpl$NativePostImeInputStage android.view.ViewRootImpl$NativePreImeInputStage android.view.ViewRootImpl$QueuedInputEvent +android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent android.view.ViewRootImpl$SyntheticInputStage android.view.ViewRootImpl$SyntheticJoystickHandler android.view.ViewRootImpl$SyntheticKeyboardHandler android.view.ViewRootImpl$SyntheticTouchNavigationHandler android.view.ViewRootImpl$SyntheticTouchNavigationHandler$1 android.view.ViewRootImpl$SyntheticTrackballHandler +android.view.ViewRootImpl$SystemUiVisibilityInfo android.view.ViewRootImpl$TrackballAxis android.view.ViewRootImpl$TraversalRunnable android.view.ViewRootImpl$ViewPostImeInputStage @@ -2548,11 +2484,13 @@ android.view.ViewRootImpl$ViewRootHandler android.view.ViewRootImpl$W android.view.ViewRootImpl$WindowInputEventReceiver android.view.ViewRootImpl$WindowStoppedCallback +android.view.ViewStructure android.view.ViewStub android.view.ViewTreeObserver android.view.ViewTreeObserver$CopyOnWriteArray android.view.ViewTreeObserver$CopyOnWriteArray$Access android.view.ViewTreeObserver$InternalInsetsInfo +android.view.ViewTreeObserver$OnGlobalFocusChangeListener android.view.ViewTreeObserver$OnGlobalLayoutListener android.view.ViewTreeObserver$OnPreDrawListener android.view.ViewTreeObserver$OnScrollChangedListener @@ -2577,7 +2515,9 @@ android.view.WindowManagerGlobal android.view.WindowManagerGlobal$1 android.view.WindowManagerGlobal$2 android.view.WindowManagerImpl +android.view.accessibility.-$Lambda$T3m_l9_RA18vCOcakSWp1lZCy5g$1 android.view.accessibility.AccessibilityEvent +android.view.accessibility.AccessibilityEvent$1 android.view.accessibility.AccessibilityEventSource android.view.accessibility.AccessibilityManager android.view.accessibility.AccessibilityManager$1 @@ -2586,9 +2526,18 @@ android.view.accessibility.AccessibilityManager$HighTextContrastChangeListener android.view.accessibility.AccessibilityManager$MyCallback android.view.accessibility.AccessibilityManager$TouchExplorationStateChangeListener android.view.accessibility.AccessibilityNodeInfo +android.view.accessibility.AccessibilityNodeInfo$1 android.view.accessibility.AccessibilityNodeProvider android.view.accessibility.AccessibilityRecord android.view.accessibility.CaptioningManager +android.view.accessibility.CaptioningManager$1 +android.view.accessibility.CaptioningManager$CaptioningChangeListener +android.view.accessibility.CaptioningManager$MyContentObserver +android.view.accessibility.IAccessibilityInteractionConnection +android.view.accessibility.IAccessibilityInteractionConnection$Stub +android.view.accessibility.IAccessibilityInteractionConnectionCallback +android.view.accessibility.IAccessibilityInteractionConnectionCallback$Stub +android.view.accessibility.IAccessibilityInteractionConnectionCallback$Stub$Proxy android.view.accessibility.IAccessibilityManager android.view.accessibility.IAccessibilityManager$Stub android.view.accessibility.IAccessibilityManager$Stub$Proxy @@ -2598,21 +2547,29 @@ android.view.animation.AccelerateDecelerateInterpolator android.view.animation.AccelerateInterpolator android.view.animation.AlphaAnimation android.view.animation.Animation +android.view.animation.Animation$1 +android.view.animation.Animation$2 +android.view.animation.Animation$3 android.view.animation.Animation$AnimationListener -android.view.animation.Animation$NoImagePreloadHolder +android.view.animation.Animation$Description +android.view.animation.AnimationSet android.view.animation.AnimationUtils android.view.animation.AnimationUtils$1 android.view.animation.AnimationUtils$AnimationState android.view.animation.BaseInterpolator android.view.animation.DecelerateInterpolator android.view.animation.Interpolator +android.view.animation.LayoutAnimationController android.view.animation.LinearInterpolator +android.view.animation.OvershootInterpolator android.view.animation.PathInterpolator android.view.animation.Transformation +android.view.animation.TranslateAnimation +android.view.autofill.AutofillId$1 android.view.autofill.AutofillManager android.view.autofill.AutofillManager$AutofillClient android.view.autofill.AutofillManager$AutofillManagerClient -android.view.autofill.Helper +android.view.autofill.AutofillValue$1 android.view.autofill.IAutoFillManager android.view.autofill.IAutoFillManager$Stub android.view.autofill.IAutoFillManager$Stub$Proxy @@ -2624,104 +2581,196 @@ android.view.inputmethod.ComposingText android.view.inputmethod.CursorAnchorInfo$Builder android.view.inputmethod.EditorInfo android.view.inputmethod.EditorInfo$1 +android.view.inputmethod.ExtractedText$1 android.view.inputmethod.InputConnection +android.view.inputmethod.InputMethodInfo$1 android.view.inputmethod.InputMethodManager android.view.inputmethod.InputMethodManager$1 android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper android.view.inputmethod.InputMethodManager$FinishedInputEventCallback android.view.inputmethod.InputMethodManager$H +android.view.inputmethod.InputMethodManager$ImeInputEventSender +android.view.inputmethod.InputMethodManager$PendingEvent +android.view.inputmethod.InputMethodSubtype$1 +android.view.inputmethod.InputMethodSubtypeArray android.view.textclassifier.TextClassificationManager android.view.textservice.TextServicesManager +android.webkit.IWebViewUpdateService +android.webkit.IWebViewUpdateService$Stub +android.webkit.IWebViewUpdateService$Stub$Proxy +android.webkit.WebSyncManager android.webkit.WebViewFactory android.webkit.WebViewFactory$MissingWebViewPackageException +android.webkit.WebViewLibraryLoader +android.webkit.WebViewProviderResponse$1 +android.widget.-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4 +android.widget.-$Lambda$ISuHLqeK-K4pmesAfzlFglc3xF4$1 android.widget.AbsListView android.widget.AbsListView$AdapterDataSetObserver android.widget.AbsListView$LayoutParams android.widget.AbsListView$OnScrollListener android.widget.AbsListView$RecycleBin +android.widget.AbsListView$SavedState$1 android.widget.AbsSeekBar -android.widget.AbsSpinner +android.widget.AbsoluteLayout +android.widget.ActionMenuPresenter +android.widget.ActionMenuPresenter$1 +android.widget.ActionMenuPresenter$2 +android.widget.ActionMenuPresenter$OverflowMenuButton +android.widget.ActionMenuPresenter$OverflowMenuButton$1 +android.widget.ActionMenuPresenter$PopupPresenterCallback +android.widget.ActionMenuView +android.widget.ActionMenuView$ActionMenuChildView +android.widget.ActionMenuView$LayoutParams +android.widget.ActionMenuView$MenuBuilderCallback +android.widget.ActionMenuView$OnMenuItemClickListener android.widget.Adapter android.widget.AdapterView android.widget.AdapterView$AdapterDataSetObserver android.widget.AdapterView$OnItemClickListener android.widget.AdapterView$OnItemSelectedListener +android.widget.ArrayAdapter android.widget.AutoCompleteTextView +android.widget.AutoCompleteTextView$DropDownItemClickListener +android.widget.AutoCompleteTextView$MyWatcher +android.widget.AutoCompleteTextView$PassThroughClickListener android.widget.BaseAdapter android.widget.Button android.widget.CheckBox android.widget.Checkable -android.widget.CheckedTextView -android.widget.CompoundButton +android.widget.CompoundButton$OnCheckedChangeListener android.widget.EdgeEffect android.widget.EditText android.widget.Editor android.widget.Editor$1 android.widget.Editor$2 +android.widget.Editor$Blink android.widget.Editor$CursorAnchorInfoNotifier +android.widget.Editor$CursorController android.widget.Editor$InputContentType +android.widget.Editor$InputMethodState +android.widget.Editor$InsertionPointCursorController android.widget.Editor$PositionListener android.widget.Editor$ProcessTextIntentActionsHandler +android.widget.Editor$SelectionModifierCursorController android.widget.Editor$SpanController android.widget.Editor$SuggestionHelper android.widget.Editor$SuggestionHelper$SuggestionSpanComparator +android.widget.Editor$TextRenderNode android.widget.Editor$TextViewPositionListener android.widget.Editor$UndoInputFilter +android.widget.FastScroller$1 +android.widget.FastScroller$2 +android.widget.FastScroller$3 +android.widget.FastScroller$4 +android.widget.FastScroller$5 +android.widget.FastScroller$6 android.widget.Filter$FilterListener android.widget.Filterable +android.widget.ForwardingListener android.widget.FrameLayout android.widget.FrameLayout$LayoutParams +android.widget.GridLayout$1 +android.widget.GridLayout$2 +android.widget.GridLayout$3 +android.widget.GridLayout$4 +android.widget.GridLayout$5 +android.widget.GridLayout$6 +android.widget.GridLayout$6$1 +android.widget.GridLayout$7 +android.widget.GridLayout$8 +android.widget.GridLayout$Alignment +android.widget.GridLayout$Arc +android.widget.GridLayout$Assoc +android.widget.GridLayout$Bounds +android.widget.GridLayout$Interval +android.widget.GridLayout$MutableInt +android.widget.GridLayout$PackedMap android.widget.HorizontalScrollView +android.widget.HorizontalScrollView$SavedState$1 android.widget.ImageButton android.widget.ImageView android.widget.ImageView$ScaleType android.widget.LinearLayout android.widget.LinearLayout$LayoutParams android.widget.ListAdapter +android.widget.ListPopupWindow +android.widget.ListPopupWindow$ListSelectorHider +android.widget.ListPopupWindow$PopupScrollListener +android.widget.ListPopupWindow$PopupTouchInterceptor +android.widget.ListPopupWindow$ResizePopupRunnable android.widget.ListView android.widget.ListView$ArrowScrollFocusResult -android.widget.MultiAutoCompleteTextView +android.widget.ListView$FixedViewInfo android.widget.OverScroller android.widget.OverScroller$SplineOverScroller -android.widget.PopupWindow +android.widget.PopupWindow$1 +android.widget.PopupWindow$2 +android.widget.PopupWindow$OnDismissListener android.widget.ProgressBar android.widget.ProgressBar$1 -android.widget.RadioButton -android.widget.RatingBar +android.widget.ProgressBar$AccessibilityEventSender +android.widget.ProgressBar$SavedState$1 android.widget.RelativeLayout android.widget.RelativeLayout$DependencyGraph android.widget.RelativeLayout$DependencyGraph$Node android.widget.RelativeLayout$LayoutParams -android.widget.RemoteViews +android.widget.RelativeLayout$TopToBottomLeftToRightComparator android.widget.RemoteViews$1 android.widget.RemoteViews$2 android.widget.RemoteViews$3 android.widget.RemoteViews$Action -android.widget.RemoteViews$ActionException android.widget.RemoteViews$BitmapCache +android.widget.RemoteViews$LayoutParamAction android.widget.RemoteViews$MemoryUsageCounter android.widget.RemoteViews$MutablePair android.widget.RemoteViews$OnClickHandler android.widget.RemoteViews$ReflectionAction android.widget.RemoteViews$RemoteView android.widget.RemoteViews$RuntimeAction -android.widget.RemoteViews$SetOnClickPendingIntent +android.widget.RemoteViews$SetDrawableParameters android.widget.RemoteViewsAdapter$RemoteAdapterConnectionCallback +android.widget.RtlSpacingHelper android.widget.ScrollBarDrawable android.widget.ScrollView android.widget.Scroller android.widget.Scroller$ViscousFluidInterpolator +android.widget.SectionIndexer android.widget.SeekBar +android.widget.SeekBar$OnSeekBarChangeListener android.widget.Space -android.widget.Spinner android.widget.SpinnerAdapter +android.widget.Switch$1 android.widget.TextView android.widget.TextView$BufferType android.widget.TextView$ChangeWatcher android.widget.TextView$CharWrapper android.widget.TextView$Drawables android.widget.TextView$OnEditorActionListener +android.widget.TextView$SavedState$1 +android.widget.ThemedSpinnerAdapter +android.widget.Toolbar +android.widget.Toolbar$1 +android.widget.Toolbar$2 +android.widget.Toolbar$ExpandedActionViewMenuPresenter +android.widget.Toolbar$LayoutParams +android.widget.Toolbar$OnMenuItemClickListener +android.widget.Toolbar$SavedState$1 +android.widget.ViewAnimator +android.widget.WrapperListAdapter +com.android.i18n.phonenumbers.AlternateFormatsCountryCodeSet +com.android.i18n.phonenumbers.CountryCodeToRegionCodeMap +com.android.i18n.phonenumbers.MetadataLoader +com.android.i18n.phonenumbers.MetadataManager$1 +com.android.i18n.phonenumbers.MetadataSource +com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl +com.android.i18n.phonenumbers.RegexCache +com.android.i18n.phonenumbers.RegexCache$LRUCache +com.android.i18n.phonenumbers.RegexCache$LRUCache$1 +com.android.i18n.phonenumbers.ShortNumbersRegionCodeSet +com.android.ims.ImsException com.android.internal.R$styleable +com.android.internal.app.AlertController$AlertParams com.android.internal.app.IAppOpsCallback com.android.internal.app.IAppOpsCallback$Stub com.android.internal.app.IAppOpsService @@ -2734,6 +2783,7 @@ com.android.internal.app.IVoiceInteractionManagerService com.android.internal.app.IVoiceInteractionManagerService$Stub com.android.internal.app.IVoiceInteractor com.android.internal.app.IVoiceInteractor$Stub +com.android.internal.app.NightDisplayController com.android.internal.appwidget.IAppWidgetService com.android.internal.appwidget.IAppWidgetService$Stub com.android.internal.appwidget.IAppWidgetService$Stub$Proxy @@ -2742,43 +2792,72 @@ com.android.internal.content.ReferrerIntent com.android.internal.content.ReferrerIntent$1 com.android.internal.graphics.drawable.AnimationScaleListDrawable com.android.internal.graphics.drawable.AnimationScaleListDrawable$AnimationScaleListState -com.android.internal.inputmethod.InputMethodUtils -com.android.internal.inputmethod.InputMethodUtils$1 -com.android.internal.inputmethod.LocaleUtils$LocaleExtractor com.android.internal.logging.AndroidConfig com.android.internal.logging.AndroidHandler com.android.internal.logging.AndroidHandler$1 +com.android.internal.logging.EventLogTags com.android.internal.logging.MetricsLogger com.android.internal.net.NetworkStatsFactory com.android.internal.os.AndroidPrintStream +com.android.internal.os.BatteryStatsImpl$1 +com.android.internal.os.BatteryStatsImpl$Clocks +com.android.internal.os.BatteryStatsImpl$ControllerActivityCounterImpl +com.android.internal.os.BatteryStatsImpl$Counter +com.android.internal.os.BatteryStatsImpl$DualTimer +com.android.internal.os.BatteryStatsImpl$DurationTimer +com.android.internal.os.BatteryStatsImpl$LongSamplingCounter +com.android.internal.os.BatteryStatsImpl$LongSamplingCounterArray +com.android.internal.os.BatteryStatsImpl$OverflowArrayMap +com.android.internal.os.BatteryStatsImpl$SamplingTimer +com.android.internal.os.BatteryStatsImpl$StopwatchTimer +com.android.internal.os.BatteryStatsImpl$SystemClocks +com.android.internal.os.BatteryStatsImpl$TimeBase +com.android.internal.os.BatteryStatsImpl$TimeBaseObs +com.android.internal.os.BatteryStatsImpl$Timer +com.android.internal.os.BatteryStatsImpl$Uid +com.android.internal.os.BatteryStatsImpl$Uid$1 +com.android.internal.os.BatteryStatsImpl$Uid$2 +com.android.internal.os.BatteryStatsImpl$Uid$3 +com.android.internal.os.BatteryStatsImpl$Uid$Pkg +com.android.internal.os.BatteryStatsImpl$Uid$Pkg$Serv +com.android.internal.os.BatteryStatsImpl$Uid$Proc +com.android.internal.os.BatteryStatsImpl$Uid$Sensor +com.android.internal.os.BatteryStatsImpl$Uid$Wakelock com.android.internal.os.BinderInternal com.android.internal.os.BinderInternal$GcWatcher +com.android.internal.os.ClassLoaderFactory com.android.internal.os.FuseAppLoop com.android.internal.os.FuseAppLoop$1 com.android.internal.os.FuseUnavailableMountException com.android.internal.os.HandlerCaller com.android.internal.os.HandlerCaller$Callback com.android.internal.os.HandlerCaller$MyHandler +com.android.internal.os.IResultReceiver +com.android.internal.os.IResultReceiver$Stub +com.android.internal.os.IResultReceiver$Stub$Proxy +com.android.internal.os.KernelMemoryBandwidthStats +com.android.internal.os.KernelUidCpuFreqTimeReader +com.android.internal.os.KernelUidCpuTimeReader +com.android.internal.os.KernelWakelockStats com.android.internal.os.LoggingPrintStream com.android.internal.os.LoggingPrintStream$1 -com.android.internal.os.PathClassLoaderFactory +com.android.internal.os.PowerProfile$CpuClusterKey com.android.internal.os.RoSystemProperties com.android.internal.os.RuntimeInit com.android.internal.os.RuntimeInit$1 com.android.internal.os.RuntimeInit$Arguments com.android.internal.os.RuntimeInit$KillApplicationHandler com.android.internal.os.RuntimeInit$LoggingHandler -com.android.internal.os.SamplingProfilerIntegration +com.android.internal.os.RuntimeInit$MethodAndArgsCaller com.android.internal.os.SomeArgs com.android.internal.os.Zygote -com.android.internal.os.Zygote$MethodAndArgsCaller com.android.internal.os.ZygoteConnection com.android.internal.os.ZygoteConnection$Arguments com.android.internal.os.ZygoteInit -com.android.internal.os.ZygoteSecurityException com.android.internal.os.ZygoteServer com.android.internal.policy.DecorContext com.android.internal.policy.DecorView +com.android.internal.policy.DecorView$1 com.android.internal.policy.DecorView$ColorViewAttributes com.android.internal.policy.DecorView$ColorViewState com.android.internal.policy.PhoneFallbackEventHandler @@ -2786,11 +2865,13 @@ com.android.internal.policy.PhoneLayoutInflater com.android.internal.policy.PhoneWindow com.android.internal.policy.PhoneWindow$1 com.android.internal.policy.PhoneWindow$PanelFeatureState +com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState$1 com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback com.android.internal.policy.PhoneWindow$RotationWatcher com.android.internal.policy.PhoneWindow$RotationWatcher$1 com.android.internal.telecom.ITelecomService com.android.internal.telecom.ITelecomService$Stub +com.android.internal.telecom.ITelecomService$Stub$Proxy com.android.internal.telephony.ICarrierConfigLoader com.android.internal.telephony.ICarrierConfigLoader$Stub com.android.internal.telephony.ICarrierConfigLoader$Stub$Proxy @@ -2812,20 +2893,15 @@ com.android.internal.telephony.ITelephony$Stub$Proxy com.android.internal.telephony.ITelephonyRegistry com.android.internal.telephony.ITelephonyRegistry$Stub com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy -com.android.internal.telephony.IccCardConstants$State com.android.internal.telephony.PhoneConstants$State -com.android.internal.textservice.ITextServicesManager -com.android.internal.textservice.ITextServicesManager$Stub com.android.internal.util.ArrayUtils -com.android.internal.util.AsyncChannel -com.android.internal.util.AsyncChannel$DeathMonitor com.android.internal.util.BitUtils com.android.internal.util.ExponentiallyBucketedHistogram +com.android.internal.util.FastMath com.android.internal.util.FastPrintWriter com.android.internal.util.FastPrintWriter$DummyWriter com.android.internal.util.FastXmlSerializer com.android.internal.util.GrowingArrayUtils -com.android.internal.util.IState com.android.internal.util.IntPair com.android.internal.util.LineBreakBufferedWriter com.android.internal.util.Preconditions @@ -2833,17 +2909,19 @@ com.android.internal.util.State com.android.internal.util.StateMachine com.android.internal.util.StateMachine$LogRec com.android.internal.util.StateMachine$LogRecords -com.android.internal.util.StateMachine$SmHandler com.android.internal.util.StateMachine$SmHandler$HaltingState com.android.internal.util.StateMachine$SmHandler$QuittingState com.android.internal.util.StateMachine$SmHandler$StateInfo com.android.internal.util.VirtualRefBasePtr com.android.internal.util.XmlUtils com.android.internal.util.XmlUtils$WriteMapCallback +com.android.internal.view.ActionBarPolicy com.android.internal.view.IInputConnectionWrapper com.android.internal.view.IInputConnectionWrapper$MyHandler com.android.internal.view.IInputContext com.android.internal.view.IInputContext$Stub +com.android.internal.view.IInputContextCallback +com.android.internal.view.IInputContextCallback$Stub com.android.internal.view.IInputMethodClient com.android.internal.view.IInputMethodClient$Stub com.android.internal.view.IInputMethodManager @@ -2855,42 +2933,59 @@ com.android.internal.view.IInputMethodSession$Stub$Proxy com.android.internal.view.InputBindResult com.android.internal.view.InputBindResult$1 com.android.internal.view.RootViewSurfaceTaker +com.android.internal.view.SurfaceCallbackHelper +com.android.internal.view.SurfaceCallbackHelper$1 com.android.internal.view.animation.FallbackLUTInterpolator com.android.internal.view.animation.HasNativeInterpolator com.android.internal.view.animation.NativeInterpolatorFactory com.android.internal.view.animation.NativeInterpolatorFactoryHelper +com.android.internal.view.menu.ActionMenuItem +com.android.internal.view.menu.BaseMenuPresenter com.android.internal.view.menu.MenuBuilder$Callback +com.android.internal.view.menu.MenuBuilder$ItemInvoker +com.android.internal.view.menu.MenuPresenter com.android.internal.view.menu.MenuPresenter$Callback +com.android.internal.view.menu.MenuView +com.android.internal.view.menu.ShowableListMenu +com.android.internal.widget.AbsActionBarView$VisibilityAnimListener +com.android.internal.widget.ActionBarContainer +com.android.internal.widget.ActionBarContainer$ActionBarBackgroundDrawable +com.android.internal.widget.ActionBarContextView +com.android.internal.widget.ActionBarOverlayLayout$1 +com.android.internal.widget.ActionBarOverlayLayout$2 +com.android.internal.widget.ActionBarOverlayLayout$3 +com.android.internal.widget.ActionBarOverlayLayout$4 +com.android.internal.widget.ActionBarOverlayLayout$5 +com.android.internal.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback +com.android.internal.widget.ActionBarOverlayLayout$LayoutParams com.android.internal.widget.BackgroundFallback com.android.internal.widget.DecorContentParent +com.android.internal.widget.DecorToolbar +com.android.internal.widget.EditableInputConnection com.android.internal.widget.LockPatternUtils +com.android.internal.widget.ScrollBarUtils +com.android.internal.widget.ToolbarWidgetWrapper +com.android.internal.widget.ToolbarWidgetWrapper$1 com.android.okhttp.Address com.android.okhttp.Authenticator -com.android.okhttp.CacheControl com.android.okhttp.CacheControl$Builder -com.android.okhttp.CertificatePinner com.android.okhttp.CertificatePinner$Builder com.android.okhttp.CipherSuite com.android.okhttp.ConfigAwareConnectionPool com.android.okhttp.ConfigAwareConnectionPool$1 com.android.okhttp.Connection -com.android.okhttp.ConnectionPool com.android.okhttp.ConnectionPool$1 com.android.okhttp.ConnectionSpec com.android.okhttp.ConnectionSpec$Builder com.android.okhttp.Dispatcher -com.android.okhttp.Dns com.android.okhttp.Dns$1 com.android.okhttp.Handshake com.android.okhttp.Headers com.android.okhttp.Headers$Builder com.android.okhttp.HttpHandler com.android.okhttp.HttpHandler$CleartextURLFilter -com.android.okhttp.HttpUrl com.android.okhttp.HttpUrl$Builder -com.android.okhttp.HttpUrl$Builder$ParseResult com.android.okhttp.HttpsHandler -com.android.okhttp.OkHttpClient com.android.okhttp.OkHttpClient$1 com.android.okhttp.OkUrlFactory com.android.okhttp.Protocol @@ -2904,50 +2999,38 @@ com.android.okhttp.ResponseBody com.android.okhttp.Route com.android.okhttp.TlsVersion com.android.okhttp.internal.ConnectionSpecSelector -com.android.okhttp.internal.Internal com.android.okhttp.internal.OptionalMethod -com.android.okhttp.internal.Platform com.android.okhttp.internal.RouteDatabase com.android.okhttp.internal.URLFilter -com.android.okhttp.internal.Util com.android.okhttp.internal.Util$1 -com.android.okhttp.internal.http.AuthenticatorAdapter com.android.okhttp.internal.http.CacheStrategy com.android.okhttp.internal.http.CacheStrategy$Factory com.android.okhttp.internal.http.Http1xStream com.android.okhttp.internal.http.Http1xStream$AbstractSource com.android.okhttp.internal.http.Http1xStream$ChunkedSource com.android.okhttp.internal.http.Http1xStream$FixedLengthSource -com.android.okhttp.internal.http.HttpEngine com.android.okhttp.internal.http.HttpEngine$1 com.android.okhttp.internal.http.HttpMethod com.android.okhttp.internal.http.HttpStream -com.android.okhttp.internal.http.OkHeaders com.android.okhttp.internal.http.OkHeaders$1 com.android.okhttp.internal.http.RealResponseBody com.android.okhttp.internal.http.RequestException com.android.okhttp.internal.http.RequestLine com.android.okhttp.internal.http.RetryableSink -com.android.okhttp.internal.http.RouteException com.android.okhttp.internal.http.RouteSelector com.android.okhttp.internal.http.StatusLine com.android.okhttp.internal.http.StreamAllocation com.android.okhttp.internal.huc.DelegatingHttpsURLConnection -com.android.okhttp.internal.huc.HttpURLConnectionImpl com.android.okhttp.internal.huc.HttpsURLConnectionImpl -com.android.okhttp.internal.io.RealConnection com.android.okhttp.internal.tls.OkHostnameVerifier -com.android.okhttp.okio.AsyncTimeout com.android.okhttp.okio.AsyncTimeout$1 com.android.okhttp.okio.AsyncTimeout$2 com.android.okhttp.okio.AsyncTimeout$Watchdog -com.android.okhttp.okio.Buffer com.android.okhttp.okio.BufferedSink com.android.okhttp.okio.BufferedSource com.android.okhttp.okio.ForwardingTimeout com.android.okhttp.okio.GzipSource com.android.okhttp.okio.InflaterSource -com.android.okhttp.okio.Okio com.android.okhttp.okio.Okio$1 com.android.okhttp.okio.Okio$2 com.android.okhttp.okio.Okio$3 @@ -2956,12 +3039,9 @@ com.android.okhttp.okio.RealBufferedSink$1 com.android.okhttp.okio.RealBufferedSource com.android.okhttp.okio.RealBufferedSource$1 com.android.okhttp.okio.Segment -com.android.okhttp.okio.SegmentPool com.android.okhttp.okio.Sink com.android.okhttp.okio.Source -com.android.okhttp.okio.Timeout com.android.okhttp.okio.Timeout$1 -com.android.okhttp.okio.Util com.android.org.bouncycastle.asn1.ASN1Encodable com.android.org.bouncycastle.asn1.ASN1Object com.android.org.bouncycastle.asn1.ASN1ObjectIdentifier @@ -2976,9 +3056,13 @@ com.android.org.bouncycastle.asn1.oiw.OIWObjectIdentifiers com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers com.android.org.bouncycastle.asn1.x509.X509ObjectIdentifiers com.android.org.bouncycastle.asn1.x9.X9ObjectIdentifiers +com.android.org.bouncycastle.crypto.CipherParameters +com.android.org.bouncycastle.jcajce.provider.asymmetric.DH com.android.org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings +com.android.org.bouncycastle.jcajce.provider.asymmetric.EC com.android.org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings +com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA com.android.org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings com.android.org.bouncycastle.jcajce.provider.asymmetric.dh.KeyFactorySpi @@ -3043,10 +3127,11 @@ com.android.org.bouncycastle.util.Arrays com.android.org.bouncycastle.util.Encodable com.android.org.bouncycastle.util.Strings com.android.org.bouncycastle.util.Strings$1 -com.android.org.conscrypt.AbstractOpenSSLSession +com.android.org.conscrypt.AbstractConscryptSocket +com.android.org.conscrypt.AbstractConscryptSocket$1 com.android.org.conscrypt.AbstractSessionContext com.android.org.conscrypt.AbstractSessionContext$1 -com.android.org.conscrypt.AddressUtils +com.android.org.conscrypt.ActiveSession com.android.org.conscrypt.ArrayUtils com.android.org.conscrypt.ByteArray com.android.org.conscrypt.CertBlacklist @@ -3054,13 +3139,15 @@ com.android.org.conscrypt.CertificatePriorityComparator com.android.org.conscrypt.ChainStrengthAnalyzer com.android.org.conscrypt.ClientSessionContext com.android.org.conscrypt.ClientSessionContext$HostAndPort +com.android.org.conscrypt.Conscrypt +com.android.org.conscrypt.ConscryptFileDescriptorSocket +com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream +com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream com.android.org.conscrypt.CryptoUpcalls -com.android.org.conscrypt.EvpMdRef$MD5 com.android.org.conscrypt.EvpMdRef$SHA1 -com.android.org.conscrypt.EvpMdRef$SHA256 -com.android.org.conscrypt.FileClientSessionCache com.android.org.conscrypt.FileClientSessionCache$Impl com.android.org.conscrypt.Hex +com.android.org.conscrypt.InternalUtil com.android.org.conscrypt.JSSEProvider com.android.org.conscrypt.KeyManagerFactoryImpl com.android.org.conscrypt.KeyManagerImpl @@ -3070,15 +3157,22 @@ com.android.org.conscrypt.NativeCryptoJni com.android.org.conscrypt.NativeRef com.android.org.conscrypt.NativeRef$EC_GROUP com.android.org.conscrypt.NativeRef$EC_POINT +com.android.org.conscrypt.NativeRef$EVP_CIPHER_CTX com.android.org.conscrypt.NativeRef$EVP_MD_CTX com.android.org.conscrypt.NativeRef$EVP_PKEY +com.android.org.conscrypt.NativeRef$SSL_SESSION com.android.org.conscrypt.OpenSSLBIOInputStream -com.android.org.conscrypt.OpenSSLContextImpl +com.android.org.conscrypt.OpenSSLCipher +com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER +com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES +com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES$CBC +com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES$CBC$PKCS5Padding +com.android.org.conscrypt.OpenSSLCipher$EVP_CIPHER$AES_BASE com.android.org.conscrypt.OpenSSLContextImpl$TLSv12 com.android.org.conscrypt.OpenSSLECGroupContext +com.android.org.conscrypt.OpenSSLECKeyFactory com.android.org.conscrypt.OpenSSLECPointContext com.android.org.conscrypt.OpenSSLECPublicKey -com.android.org.conscrypt.OpenSSLExtendedSessionImpl com.android.org.conscrypt.OpenSSLKey com.android.org.conscrypt.OpenSSLKeyHolder com.android.org.conscrypt.OpenSSLMessageDigestJDK @@ -3089,16 +3183,9 @@ com.android.org.conscrypt.OpenSSLProvider com.android.org.conscrypt.OpenSSLRSAKeyFactory com.android.org.conscrypt.OpenSSLRSAPublicKey com.android.org.conscrypt.OpenSSLRandom -com.android.org.conscrypt.OpenSSLSessionImpl com.android.org.conscrypt.OpenSSLSignature -com.android.org.conscrypt.OpenSSLSignature$EngineType com.android.org.conscrypt.OpenSSLSignature$RSAPKCS1Padding -com.android.org.conscrypt.OpenSSLSignature$SHA1RSA -com.android.org.conscrypt.OpenSSLSocketFactoryImpl com.android.org.conscrypt.OpenSSLSocketImpl -com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream -com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream -com.android.org.conscrypt.OpenSSLSocketImplWrapper com.android.org.conscrypt.OpenSSLX509CertPath com.android.org.conscrypt.OpenSSLX509CertPath$Encoding com.android.org.conscrypt.OpenSSLX509Certificate @@ -3107,13 +3194,18 @@ com.android.org.conscrypt.OpenSSLX509CertificateFactory$1 com.android.org.conscrypt.OpenSSLX509CertificateFactory$2 com.android.org.conscrypt.OpenSSLX509CertificateFactory$Parser com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException +com.android.org.conscrypt.PeerInfoProvider$1 com.android.org.conscrypt.Platform +com.android.org.conscrypt.Platform$NoPreloadHolder +com.android.org.conscrypt.Preconditions com.android.org.conscrypt.SSLClientSessionCache -com.android.org.conscrypt.SSLParametersImpl com.android.org.conscrypt.SSLParametersImpl$AliasChooser com.android.org.conscrypt.SSLParametersImpl$PSKCallbacks -com.android.org.conscrypt.SSLUtils com.android.org.conscrypt.ServerSessionContext +com.android.org.conscrypt.SslSessionWrapper +com.android.org.conscrypt.SslSessionWrapper$Impl +com.android.org.conscrypt.SslSessionWrapper$Impl$1 +com.android.org.conscrypt.SslWrapper com.android.org.conscrypt.TrustManagerFactoryImpl com.android.org.conscrypt.TrustManagerImpl com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker @@ -3121,6 +3213,8 @@ com.android.org.conscrypt.TrustManagerImpl$TrustAnchorComparator com.android.org.conscrypt.TrustedCertificateIndex com.android.org.conscrypt.TrustedCertificateKeyStoreSpi com.android.org.conscrypt.TrustedCertificateStore +com.android.org.conscrypt.TrustedCertificateStore$1 +com.android.org.conscrypt.TrustedCertificateStore$CertSelector com.android.org.conscrypt.TrustedCertificateStore$PreloadHolder com.android.org.conscrypt.ct.CTLogInfo com.android.org.conscrypt.ct.CTLogStore @@ -3129,13 +3223,13 @@ com.android.org.conscrypt.ct.CTLogStoreImpl$InvalidLogFileException com.android.org.conscrypt.ct.CTPolicy com.android.org.conscrypt.ct.CTPolicyImpl com.android.org.conscrypt.ct.CTVerifier -com.android.org.conscrypt.ct.KnownLogs com.android.org.conscrypt.ct.SerializationException com.android.server.NetworkManagementSocketTagger com.android.server.NetworkManagementSocketTagger$1 com.android.server.NetworkManagementSocketTagger$SocketTags com.google.android.collect.Lists com.google.android.collect.Maps +com.google.android.collect.Sets com.google.android.gles_jni.EGLConfigImpl com.google.android.gles_jni.EGLContextImpl com.google.android.gles_jni.EGLDisplayImpl @@ -3160,6 +3254,7 @@ dalvik.system.CloseGuard$Reporter dalvik.system.CloseGuard$Tracker dalvik.system.DalvikLogHandler dalvik.system.DalvikLogging +dalvik.system.DelegateLastClassLoader dalvik.system.DexClassLoader dalvik.system.DexFile dalvik.system.DexFile$DFEnum @@ -3192,7 +3287,6 @@ java.io.DefaultFileSystem java.io.EOFException java.io.ExpiringCache java.io.ExpiringCache$1 -java.io.ExpiringCache$Entry java.io.Externalizable java.io.File java.io.File$PathStatus @@ -3206,14 +3300,17 @@ java.io.FileNotFoundException java.io.FileOutputStream java.io.FileReader java.io.FileSystem +java.io.FileWriter java.io.FilenameFilter java.io.FilterInputStream java.io.FilterOutputStream +java.io.FilterReader java.io.Flushable java.io.IOException java.io.InputStream java.io.InputStreamReader java.io.InterruptedIOException +java.io.InvalidClassException java.io.InvalidObjectException java.io.ObjectInput java.io.ObjectInputStream @@ -3224,8 +3321,21 @@ java.io.ObjectInputStream$PeekInputStream java.io.ObjectInputStream$ValidationList java.io.ObjectOutput java.io.ObjectOutputStream +java.io.ObjectOutputStream$BlockDataOutputStream +java.io.ObjectOutputStream$HandleTable java.io.ObjectOutputStream$PutField +java.io.ObjectOutputStream$ReplaceTable java.io.ObjectStreamClass +java.io.ObjectStreamClass$1 +java.io.ObjectStreamClass$2 +java.io.ObjectStreamClass$3 +java.io.ObjectStreamClass$4 +java.io.ObjectStreamClass$5 +java.io.ObjectStreamClass$ClassDataSlot +java.io.ObjectStreamClass$ExceptionInfo +java.io.ObjectStreamClass$FieldReflectorKey +java.io.ObjectStreamClass$MemberSignature +java.io.ObjectStreamClass$WeakClassKey java.io.ObjectStreamConstants java.io.ObjectStreamException java.io.ObjectStreamField @@ -3234,17 +3344,20 @@ java.io.OutputStreamWriter java.io.PrintStream java.io.PrintWriter java.io.PushbackInputStream +java.io.PushbackReader java.io.RandomAccessFile java.io.Reader +java.io.SequenceInputStream +java.io.SerialCallbackContext java.io.Serializable java.io.SerializablePermission +java.io.StreamCorruptedException java.io.StringReader java.io.StringWriter java.io.UnixFileSystem java.io.UnsupportedEncodingException java.io.Writer java.lang.-$Lambda$S9HjrJh0nDg7IyU6wZdPArnZWRQ -java.lang.-$Lambda$S9HjrJh0nDg7IyU6wZdPArnZWRQ$1 java.lang.AbstractMethodError java.lang.AbstractStringBuilder java.lang.AndroidHardcodedSystemProperties @@ -3304,13 +3417,11 @@ java.lang.Integer$IntegerCache java.lang.InternalError java.lang.InterruptedException java.lang.Iterable -java.lang.JavaLangAccess java.lang.LinkageError java.lang.Long java.lang.Long$LongCache java.lang.Math java.lang.Math$RandomNumberGeneratorHolder -java.lang.NegativeArraySizeException java.lang.NoClassDefFoundError java.lang.NoSuchFieldError java.lang.NoSuchFieldException @@ -3332,7 +3443,6 @@ java.lang.Runtime java.lang.RuntimeException java.lang.RuntimePermission java.lang.SecurityException -java.lang.SecurityManager java.lang.Short java.lang.Short$ShortCache java.lang.StackOverflowError @@ -3355,6 +3465,7 @@ java.lang.Thread$WeakClassKey java.lang.ThreadDeath java.lang.ThreadGroup java.lang.ThreadLocal +java.lang.ThreadLocal$SuppliedThreadLocal java.lang.ThreadLocal$ThreadLocalMap java.lang.ThreadLocal$ThreadLocalMap$Entry java.lang.Throwable @@ -3367,7 +3478,6 @@ java.lang.UNIXProcess java.lang.UnsatisfiedLinkError java.lang.UnsupportedOperationException java.lang.VMClassLoader -java.lang.VerifyError java.lang.VirtualMachineError java.lang.Void java.lang.annotation.Annotation @@ -3375,7 +3485,6 @@ java.lang.annotation.AnnotationTypeMismatchException java.lang.annotation.IncompleteAnnotationException java.lang.annotation.Inherited java.lang.annotation.Retention -java.lang.annotation.Target java.lang.invoke.CallSite java.lang.invoke.ConstantCallSite java.lang.invoke.MethodHandle @@ -3389,9 +3498,25 @@ java.lang.invoke.MethodType java.lang.invoke.MethodType$ConcurrentWeakInternSet java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry java.lang.invoke.MethodTypeForm +java.lang.invoke.Transformers$AlwaysThrow java.lang.invoke.Transformers$BindTo +java.lang.invoke.Transformers$CatchException +java.lang.invoke.Transformers$CollectArguments java.lang.invoke.Transformers$Collector +java.lang.invoke.Transformers$Constant java.lang.invoke.Transformers$Construct +java.lang.invoke.Transformers$DropArguments +java.lang.invoke.Transformers$ExplicitCastArguments +java.lang.invoke.Transformers$FilterArguments +java.lang.invoke.Transformers$FilterReturnValue +java.lang.invoke.Transformers$FoldArguments +java.lang.invoke.Transformers$GuardWithTest +java.lang.invoke.Transformers$InsertArguments +java.lang.invoke.Transformers$Invoker +java.lang.invoke.Transformers$PermuteArguments +java.lang.invoke.Transformers$ReferenceArrayElementGetter +java.lang.invoke.Transformers$ReferenceArrayElementSetter +java.lang.invoke.Transformers$ReferenceIdentity java.lang.invoke.Transformers$Spreader java.lang.invoke.Transformers$Transformer java.lang.invoke.Transformers$VarargsCollector @@ -3438,7 +3563,6 @@ java.lang.reflect.WeakCache$Factory java.lang.reflect.WeakCache$LookupValue java.lang.reflect.WeakCache$Value java.lang.reflect.WildcardType -java.math.BigDecimal java.math.BigInt java.math.BigInteger java.math.NativeBN @@ -3448,7 +3572,10 @@ java.net.AddressCache java.net.AddressCache$AddressCacheEntry java.net.AddressCache$AddressCacheKey java.net.ConnectException -java.net.CookieHandler +java.net.DatagramPacket +java.net.DatagramSocket$1 +java.net.DatagramSocketImpl +java.net.DefaultInterface java.net.HttpURLConnection java.net.IDN java.net.Inet4Address @@ -3461,16 +3588,15 @@ java.net.InetAddress$InetAddressHolder java.net.InetAddressImpl java.net.InetSocketAddress java.net.InetSocketAddress$InetSocketAddressHolder +java.net.InterfaceAddress java.net.JarURLConnection java.net.MalformedURLException +java.net.MulticastSocket java.net.NetworkInterface java.net.Parts +java.net.PlainDatagramSocketImpl java.net.PlainSocketImpl -java.net.Proxy -java.net.Proxy$Type java.net.ProxySelector -java.net.ResponseCache -java.net.ServerSocket java.net.Socket java.net.Socket$2 java.net.Socket$3 @@ -3482,13 +3608,11 @@ java.net.SocketOptions java.net.SocketOutputStream java.net.SocketTimeoutException java.net.SocksConsts -java.net.SocksSocketImpl java.net.URI java.net.URI$Parser java.net.URISyntaxException java.net.URL java.net.URLConnection -java.net.URLEncoder java.net.URLStreamHandler java.net.URLStreamHandlerFactory java.net.UnknownHostException @@ -3516,12 +3640,14 @@ java.nio.InvalidMarkException java.nio.LongBuffer java.nio.MappedByteBuffer java.nio.NIOAccess +java.nio.NioUtils java.nio.ReadOnlyBufferException java.nio.ShortBuffer java.nio.StringCharBuffer java.nio.channels.AsynchronousCloseException java.nio.channels.ByteChannel java.nio.channels.Channel +java.nio.channels.Channels java.nio.channels.ClosedByInterruptException java.nio.channels.ClosedChannelException java.nio.channels.DatagramChannel @@ -3558,7 +3684,14 @@ java.nio.charset.CodingErrorAction java.nio.charset.IllegalCharsetNameException java.nio.charset.StandardCharsets java.nio.charset.UnsupportedCharsetException +java.nio.file.FileSystem +java.nio.file.FileSystems +java.nio.file.FileSystems$DefaultFileSystemHolder$1 +java.nio.file.Path +java.nio.file.Watchable +java.nio.file.attribute.BasicFileAttributes java.nio.file.attribute.FileAttribute +java.nio.file.attribute.PosixFileAttributes java.security.AccessControlContext java.security.AccessControlException java.security.AccessController @@ -3576,6 +3709,7 @@ java.security.KeyException java.security.KeyFactory java.security.KeyFactorySpi java.security.KeyManagementException +java.security.KeyPair java.security.KeyStore java.security.KeyStore$1 java.security.KeyStoreException @@ -3603,8 +3737,6 @@ java.security.PublicKey java.security.SecureRandom java.security.SecureRandomSpi java.security.Security -java.security.Signature -java.security.Signature$Delegate java.security.SignatureException java.security.SignatureSpi java.security.UnrecoverableEntryException @@ -3634,6 +3766,7 @@ java.security.cert.PKIXCertPathValidatorResult java.security.cert.PKIXParameters java.security.cert.PKIXRevocationChecker java.security.cert.PolicyNode +java.security.cert.PolicyQualifierInfo java.security.cert.TrustAnchor java.security.cert.X509CertSelector java.security.cert.X509Certificate @@ -3641,7 +3774,6 @@ java.security.cert.X509Extension java.security.interfaces.DSAKey java.security.interfaces.DSAPublicKey java.security.interfaces.ECKey -java.security.interfaces.ECPrivateKey java.security.interfaces.ECPublicKey java.security.interfaces.RSAKey java.security.interfaces.RSAPrivateKey @@ -3657,10 +3789,13 @@ java.security.spec.EncodedKeySpec java.security.spec.InvalidKeySpecException java.security.spec.InvalidParameterSpecException java.security.spec.KeySpec +java.security.spec.PKCS8EncodedKeySpec java.security.spec.RSAPublicKeySpec java.security.spec.X509EncodedKeySpec java.text.AttributedCharacterIterator$Attribute +java.text.CalendarBuilder java.text.CharacterIterator +java.text.Collator java.text.DateFormat java.text.DateFormat$Field java.text.DateFormatSymbols @@ -3669,6 +3804,7 @@ java.text.DecimalFormatSymbols java.text.DontCareFieldPosition java.text.DontCareFieldPosition$1 java.text.FieldPosition +java.text.FieldPosition$Delegate java.text.Format java.text.Format$Field java.text.Format$FieldDelegate @@ -3677,19 +3813,13 @@ java.text.Normalizer$Form java.text.NumberFormat java.text.ParseException java.text.ParsePosition +java.text.RuleBasedCollator java.text.SimpleDateFormat java.text.StringCharacterIterator java.time.DateTimeException java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo -java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$1 -java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$2 -java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$3 -java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$4 -java.util.-$Lambda$4EqhxufgNKat19m0CB0-toH_lzo$5 +java.util.-$Lambda$Hazqao1eYCE_pmZR5Jlrc2GvLhk java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw -java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw$1 -java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw$2 -java.util.-$Lambda$aUGKT4ItCOku5-JSG-x8Aqj2pJw$3 java.util.AbstractCollection java.util.AbstractList java.util.AbstractList$Itr @@ -3792,6 +3922,9 @@ java.util.Dictionary java.util.DualPivotQuicksort java.util.EnumMap java.util.EnumMap$1 +java.util.EnumMap$EnumMapIterator +java.util.EnumMap$KeyIterator +java.util.EnumMap$KeySet java.util.EnumSet java.util.Enumeration java.util.EventListener @@ -3803,7 +3936,6 @@ java.util.Formatter$Flags java.util.Formatter$FormatSpecifier java.util.Formatter$FormatSpecifierParser java.util.Formatter$FormatString -java.util.FormatterClosedException java.util.GregorianCalendar java.util.HashMap java.util.HashMap$EntryIterator @@ -3854,6 +3986,8 @@ java.util.NavigableMap java.util.NavigableSet java.util.NoSuchElementException java.util.Objects +java.util.Observable +java.util.Observer java.util.PrimitiveIterator java.util.PrimitiveIterator$OfInt java.util.PriorityQueue @@ -3865,6 +3999,7 @@ java.util.Random java.util.RandomAccess java.util.RandomAccessSubList java.util.RegularEnumSet +java.util.RegularEnumSet$EnumSetIterator java.util.ResourceBundle java.util.ResourceBundle$1 java.util.Set @@ -3882,12 +4017,16 @@ java.util.Spliterators$EmptySpliterator$OfDouble java.util.Spliterators$EmptySpliterator$OfInt java.util.Spliterators$EmptySpliterator$OfLong java.util.Spliterators$EmptySpliterator$OfRef +java.util.Spliterators$IteratorSpliterator java.util.Stack java.util.StringJoiner java.util.StringTokenizer java.util.SubList java.util.TimSort java.util.TimeZone +java.util.Timer$1 +java.util.TimerTask +java.util.TimerThread java.util.TreeMap java.util.TreeMap$AscendingSubMap java.util.TreeMap$AscendingSubMap$AscendingEntrySetView @@ -3897,6 +4036,7 @@ java.util.TreeMap$KeyIterator java.util.TreeMap$KeySet java.util.TreeMap$NavigableSubMap java.util.TreeMap$NavigableSubMap$EntrySetView +java.util.TreeMap$NavigableSubMap$SubMapEntryIterator java.util.TreeMap$NavigableSubMap$SubMapIterator java.util.TreeMap$PrivateEntryIterator java.util.TreeMap$TreeMapEntry @@ -3914,10 +4054,12 @@ java.util.WeakHashMap$EntrySet java.util.WeakHashMap$HashIterator java.util.WeakHashMap$KeyIterator java.util.WeakHashMap$KeySet +java.util.WeakHashMap$ValueIterator java.util.WeakHashMap$Values java.util.concurrent.-$Lambda$xR9BLpu6SifNikvFgr4lEiECBsk java.util.concurrent.AbstractExecutorService java.util.concurrent.ArrayBlockingQueue +java.util.concurrent.BlockingDeque java.util.concurrent.BlockingQueue java.util.concurrent.Callable java.util.concurrent.CancellationException @@ -3939,6 +4081,7 @@ java.util.concurrent.ConcurrentHashMap$ForEachValueTask java.util.concurrent.ConcurrentHashMap$ForwardingNode java.util.concurrent.ConcurrentHashMap$KeyIterator java.util.concurrent.ConcurrentHashMap$KeySetView +java.util.concurrent.ConcurrentHashMap$MapEntry java.util.concurrent.ConcurrentHashMap$MapReduceEntriesTask java.util.concurrent.ConcurrentHashMap$MapReduceEntriesToDoubleTask java.util.concurrent.ConcurrentHashMap$MapReduceEntriesToIntTask @@ -3970,8 +4113,6 @@ java.util.concurrent.ConcurrentHashMap$TreeBin java.util.concurrent.ConcurrentHashMap$TreeNode java.util.concurrent.ConcurrentHashMap$ValueIterator java.util.concurrent.ConcurrentHashMap$ValuesView -java.util.concurrent.ConcurrentLinkedDeque -java.util.concurrent.ConcurrentLinkedDeque$Node java.util.concurrent.ConcurrentLinkedQueue java.util.concurrent.ConcurrentLinkedQueue$Node java.util.concurrent.ConcurrentMap @@ -3997,9 +4138,10 @@ java.util.concurrent.ForkJoinTask$ExceptionNode java.util.concurrent.Future java.util.concurrent.FutureTask java.util.concurrent.FutureTask$WaitNode +java.util.concurrent.LinkedBlockingDeque +java.util.concurrent.LinkedBlockingDeque$Node java.util.concurrent.LinkedBlockingQueue java.util.concurrent.LinkedBlockingQueue$Node -java.util.concurrent.PriorityBlockingQueue java.util.concurrent.RejectedExecutionException java.util.concurrent.RejectedExecutionHandler java.util.concurrent.RunnableFuture @@ -4018,9 +4160,9 @@ java.util.concurrent.SynchronousQueue$TransferStack$SNode java.util.concurrent.SynchronousQueue$Transferer java.util.concurrent.ThreadFactory java.util.concurrent.ThreadLocalRandom +java.util.concurrent.ThreadLocalRandom$1 java.util.concurrent.ThreadPoolExecutor java.util.concurrent.ThreadPoolExecutor$AbortPolicy -java.util.concurrent.ThreadPoolExecutor$DiscardPolicy java.util.concurrent.ThreadPoolExecutor$Worker java.util.concurrent.TimeUnit java.util.concurrent.TimeUnit$1 @@ -4033,9 +4175,10 @@ java.util.concurrent.TimeUnit$7 java.util.concurrent.TimeoutException java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicInteger +java.util.concurrent.atomic.AtomicIntegerFieldUpdater +java.util.concurrent.atomic.AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl$1 java.util.concurrent.atomic.AtomicLong java.util.concurrent.atomic.AtomicReference -java.util.concurrent.atomic.AtomicReferenceArray java.util.concurrent.atomic.AtomicReferenceFieldUpdater java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl java.util.concurrent.locks.AbstractOwnableSynchronizer @@ -4053,6 +4196,7 @@ java.util.concurrent.locks.ReentrantReadWriteLock java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock java.util.concurrent.locks.ReentrantReadWriteLock$Sync +java.util.concurrent.locks.ReentrantReadWriteLock$Sync$HoldCounter java.util.concurrent.locks.ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock java.util.function.-$Lambda$1MZdIZ-DL_fjy9l0o8IMJk57T2g @@ -4103,7 +4247,6 @@ java.util.logging.LogManager$LoggerContext$1 java.util.logging.LogManager$LoggerWeakRef java.util.logging.LogManager$RootLogger java.util.logging.LogManager$SystemLoggerContext -java.util.logging.LogRecord java.util.logging.Logger java.util.logging.Logger$LoggerBundle java.util.logging.LoggingPermission @@ -4115,24 +4258,21 @@ java.util.regex.MatchResult java.util.regex.Matcher java.util.regex.Pattern java.util.regex.PatternSyntaxException -java.util.stream.AbstractPipeline java.util.stream.BaseStream java.util.stream.DoubleStream java.util.stream.IntStream java.util.stream.LongStream java.util.stream.PipelineHelper java.util.stream.ReferencePipeline +java.util.stream.ReferencePipeline$2 +java.util.stream.ReferencePipeline$2$1 java.util.stream.ReferencePipeline$Head java.util.stream.Sink java.util.stream.Sink$ChainedReference java.util.stream.Stream -java.util.stream.StreamOpFlag java.util.stream.StreamOpFlag$MaskBuilder -java.util.stream.StreamOpFlag$Type -java.util.stream.StreamShape java.util.stream.StreamSupport java.util.stream.TerminalOp -java.util.stream.TerminalSink java.util.zip.Adler32 java.util.zip.CRC32 java.util.zip.CheckedInputStream @@ -4141,6 +4281,7 @@ java.util.zip.DataFormatException java.util.zip.Deflater java.util.zip.DeflaterOutputStream java.util.zip.GZIPInputStream +java.util.zip.GZIPInputStream$1 java.util.zip.GZIPOutputStream java.util.zip.Inflater java.util.zip.InflaterInputStream @@ -4157,22 +4298,21 @@ javax.crypto.BadPaddingException javax.crypto.Cipher javax.crypto.Cipher$CipherSpiAndProvider javax.crypto.Cipher$InitParams -javax.crypto.Cipher$InitType -javax.crypto.Cipher$NeedToSet javax.crypto.Cipher$SpiAndProviderUpdater javax.crypto.Cipher$Transform javax.crypto.CipherSpi javax.crypto.IllegalBlockSizeException -javax.crypto.JceSecurity +javax.crypto.MacSpi javax.crypto.NoSuchPaddingException +javax.crypto.NullCipher javax.crypto.SecretKey javax.crypto.ShortBufferException +javax.crypto.spec.GCMParameterSpec javax.crypto.spec.IvParameterSpec javax.crypto.spec.SecretKeySpec javax.microedition.khronos.egl.EGL javax.microedition.khronos.egl.EGL10 javax.microedition.khronos.egl.EGLConfig -javax.microedition.khronos.egl.EGLContext javax.microedition.khronos.egl.EGLDisplay javax.microedition.khronos.egl.EGLSurface javax.microedition.khronos.opengles.GL @@ -4182,7 +4322,6 @@ javax.microedition.khronos.opengles.GL11 javax.microedition.khronos.opengles.GL11Ext javax.microedition.khronos.opengles.GL11ExtensionPack javax.net.DefaultSocketFactory -javax.net.ServerSocketFactory javax.net.SocketFactory javax.net.ssl.ExtendedSSLSession javax.net.ssl.HandshakeCompletedListener @@ -4193,7 +4332,6 @@ javax.net.ssl.KeyManagerFactory javax.net.ssl.KeyManagerFactory$1 javax.net.ssl.KeyManagerFactorySpi javax.net.ssl.SNIHostName -javax.net.ssl.SNIServerName javax.net.ssl.SSLContext javax.net.ssl.SSLContextSpi javax.net.ssl.SSLEngine @@ -4201,7 +4339,6 @@ javax.net.ssl.SSLException javax.net.ssl.SSLParameters javax.net.ssl.SSLPeerUnverifiedException javax.net.ssl.SSLProtocolException -javax.net.ssl.SSLServerSocketFactory javax.net.ssl.SSLSession javax.net.ssl.SSLSessionContext javax.net.ssl.SSLSocket @@ -4218,9 +4355,11 @@ javax.net.ssl.X509TrustManager javax.security.auth.Destroyable javax.security.auth.callback.UnsupportedCallbackException javax.security.auth.x500.X500Principal -javax.security.cert.Certificate javax.security.cert.CertificateException -javax.security.cert.X509Certificate +javax.xml.parsers.ParserConfigurationException +javax.xml.parsers.SAXParser +javax.xml.parsers.SAXParserFactory +libcore.icu.DateUtilsBridge libcore.icu.ICU libcore.icu.LocaleData libcore.icu.NativeConverter @@ -4271,17 +4410,15 @@ libcore.util.EmptyArray libcore.util.NativeAllocationRegistry libcore.util.NativeAllocationRegistry$CleanerRunner libcore.util.NativeAllocationRegistry$CleanerThunk +libcore.util.Objects libcore.util.TimeZoneDataFiles libcore.util.ZoneInfo libcore.util.ZoneInfo$CheckedArithmeticException -libcore.util.ZoneInfo$OffsetInterval libcore.util.ZoneInfo$WallTime libcore.util.ZoneInfoDB libcore.util.ZoneInfoDB$TzData libcore.util.ZoneInfoDB$TzData$1 org.apache.commons.logging.Log -org.apache.commons.logging.LogFactory -org.apache.commons.logging.impl.Jdk14Logger org.apache.commons.logging.impl.WeakHashtable org.apache.harmony.dalvik.NativeTestTarget org.apache.harmony.dalvik.ddmc.Chunk @@ -4291,7 +4428,13 @@ org.apache.harmony.dalvik.ddmc.DdmVmInternal org.apache.harmony.luni.internal.util.TimezoneGetter org.apache.harmony.xml.ExpatAttributes org.apache.harmony.xml.ExpatParser -org.apache.http.Header +org.apache.harmony.xml.ExpatParser$CurrentAttributes +org.apache.harmony.xml.ExpatParser$ExpatLocator +org.apache.harmony.xml.ExpatReader +org.apache.harmony.xml.parsers.SAXParserFactoryImpl +org.apache.harmony.xml.parsers.SAXParserImpl +org.apache.http.ConnectionReuseStrategy +org.apache.http.HeaderElement org.apache.http.HttpEntity org.apache.http.HttpException org.apache.http.HttpHost @@ -4299,48 +4442,55 @@ org.apache.http.HttpMessage org.apache.http.HttpRequest org.apache.http.HttpRequestInterceptor org.apache.http.HttpResponse +org.apache.http.HttpResponseFactory +org.apache.http.NameValuePair org.apache.http.ProtocolException org.apache.http.ProtocolVersion +org.apache.http.ReasonPhraseCatalog org.apache.http.StatusLine org.apache.http.client.HttpClient org.apache.http.client.ResponseHandler +org.apache.http.client.methods.AbortableHttpRequest +org.apache.http.client.methods.HttpRequestBase org.apache.http.client.methods.HttpUriRequest org.apache.http.client.params.HttpClientParams org.apache.http.conn.ClientConnectionManager org.apache.http.conn.ClientConnectionOperator -org.apache.http.conn.ClientConnectionRequest org.apache.http.conn.ConnectTimeoutException -org.apache.http.conn.ConnectionReleaseTrigger org.apache.http.conn.params.ConnManagerPNames -org.apache.http.conn.params.ConnManagerParams org.apache.http.conn.params.ConnManagerParams$1 org.apache.http.conn.params.ConnPerRoute org.apache.http.conn.scheme.LayeredSocketFactory -org.apache.http.conn.scheme.PlainSocketFactory org.apache.http.conn.scheme.Scheme org.apache.http.conn.scheme.SchemeRegistry org.apache.http.conn.scheme.SocketFactory -org.apache.http.conn.ssl.AbstractVerifier org.apache.http.conn.ssl.AllowAllHostnameVerifier org.apache.http.conn.ssl.BrowserCompatHostnameVerifier -org.apache.http.conn.ssl.SSLSocketFactory org.apache.http.conn.ssl.StrictHostnameVerifier org.apache.http.conn.ssl.X509HostnameVerifier org.apache.http.entity.AbstractHttpEntity +org.apache.http.entity.BasicHttpEntity +org.apache.http.impl.DefaultConnectionReuseStrategy +org.apache.http.impl.DefaultHttpResponseFactory org.apache.http.impl.client.AbstractHttpClient org.apache.http.impl.client.DefaultHttpClient -org.apache.http.impl.conn.DefaultClientConnectionOperator org.apache.http.impl.conn.IdleConnectionHandler org.apache.http.impl.conn.tsccm.AbstractConnPool org.apache.http.impl.conn.tsccm.ConnPoolByRoute org.apache.http.impl.conn.tsccm.RefQueueHandler org.apache.http.impl.conn.tsccm.RefQueueWorker org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager +org.apache.http.impl.cookie.DateParseException +org.apache.http.impl.cookie.DateUtils$DateFormatHolder$1 org.apache.http.message.AbstractHttpMessage org.apache.http.message.BasicHeader +org.apache.http.message.BasicHeaderElement org.apache.http.message.BasicHttpResponse +org.apache.http.message.BasicNameValuePair org.apache.http.message.BasicStatusLine org.apache.http.message.HeaderGroup +org.apache.http.message.HeaderValueParser +org.apache.http.message.ParserCursor org.apache.http.params.AbstractHttpParams org.apache.http.params.BasicHttpParams org.apache.http.params.CoreConnectionPNames @@ -4348,15 +4498,18 @@ org.apache.http.params.CoreProtocolPNames org.apache.http.params.HttpConnectionParams org.apache.http.params.HttpParams org.apache.http.params.HttpProtocolParams +org.apache.http.protocol.BasicHttpProcessor +org.apache.http.protocol.HTTP org.apache.http.protocol.HttpContext +org.apache.http.protocol.HttpRequestInterceptorList +org.apache.http.protocol.HttpResponseInterceptorList +org.apache.http.util.CharArrayBuffer org.ccil.cowan.tagsoup.AttributesImpl org.ccil.cowan.tagsoup.AutoDetector org.ccil.cowan.tagsoup.Element org.ccil.cowan.tagsoup.ElementType -org.ccil.cowan.tagsoup.HTMLModels org.ccil.cowan.tagsoup.HTMLScanner org.ccil.cowan.tagsoup.HTMLSchema -org.ccil.cowan.tagsoup.Parser org.ccil.cowan.tagsoup.Parser$1 org.ccil.cowan.tagsoup.ScanHandler org.ccil.cowan.tagsoup.Scanner @@ -4367,21 +4520,18 @@ org.json.JSONException org.json.JSONObject org.json.JSONObject$1 org.json.JSONStringer -org.json.JSONStringer$Scope org.json.JSONTokener org.kxml2.io.KXmlParser org.kxml2.io.KXmlParser$ValueContext org.xml.sax.Attributes -org.xml.sax.ContentHandler org.xml.sax.DTDHandler org.xml.sax.EntityResolver org.xml.sax.ErrorHandler org.xml.sax.InputSource org.xml.sax.Locator org.xml.sax.SAXException -org.xml.sax.SAXNotRecognizedException -org.xml.sax.SAXNotSupportedException org.xml.sax.XMLReader +org.xml.sax.ext.LexicalHandler org.xml.sax.helpers.DefaultHandler org.xmlpull.v1.XmlPullParser org.xmlpull.v1.XmlPullParserException @@ -4401,23 +4551,18 @@ sun.misc.FloatingDecimal$BinaryToASCIIBuffer sun.misc.FloatingDecimal$BinaryToASCIIConverter sun.misc.FloatingDecimal$ExceptionalBinaryToASCIIBuffer sun.misc.FloatingDecimal$PreparedASCIIToBinaryBuffer -sun.misc.FormattedFloatingDecimal sun.misc.FormattedFloatingDecimal$1 -sun.misc.FormattedFloatingDecimal$Form sun.misc.IOUtils sun.misc.JavaIOFileDescriptorAccess -sun.misc.REException sun.misc.SharedSecrets sun.misc.Unsafe sun.misc.VM sun.misc.Version sun.net.ConnectionResetException sun.net.NetHooks -sun.net.NetProperties sun.net.NetProperties$1 sun.net.spi.DefaultProxySelector sun.net.spi.DefaultProxySelector$1 -sun.net.spi.DefaultProxySelector$NonProxyInfo sun.net.spi.nameservice.NameService sun.net.util.IPAddressUtil sun.net.www.ParseUtil @@ -4431,7 +4576,6 @@ sun.nio.ch.FileChannelImpl$Unmapper sun.nio.ch.FileDispatcher sun.nio.ch.FileDispatcherImpl sun.nio.ch.FileKey -sun.nio.ch.FileLockImpl sun.nio.ch.FileLockTable sun.nio.ch.IOStatus sun.nio.ch.IOUtil @@ -4442,16 +4586,21 @@ sun.nio.ch.NativeThreadSet sun.nio.ch.Net sun.nio.ch.SelChImpl sun.nio.ch.ServerSocketChannelImpl -sun.nio.ch.SharedFileLockTable sun.nio.ch.SharedFileLockTable$FileLockReference sun.nio.ch.SocketChannelImpl -sun.nio.ch.Util sun.nio.ch.Util$1 -sun.nio.ch.Util$BufferCache -sun.nio.cs.ArrayDecoder sun.nio.cs.ArrayEncoder sun.nio.cs.StreamDecoder sun.nio.cs.StreamEncoder +sun.nio.fs.AbstractFileSystemProvider +sun.nio.fs.AbstractPath +sun.nio.fs.DefaultFileSystemProvider +sun.nio.fs.LinuxFileSystem +sun.nio.fs.LinuxFileSystemProvider +sun.nio.fs.NativeBuffer$Deallocator +sun.nio.fs.UnixChannelFactory$Flags +sun.nio.fs.UnixFileSystem +sun.nio.fs.UnixFileSystemProvider sun.security.action.GetBooleanAction sun.security.action.GetPropertyAction sun.security.jca.GetInstance @@ -4466,8 +4615,6 @@ sun.security.jca.ProviderList$ServiceList sun.security.jca.ProviderList$ServiceList$1 sun.security.jca.Providers sun.security.jca.ServiceId -sun.security.pkcs.PKCS9Attribute -sun.security.pkcs.SignerInfo sun.security.provider.CertPathProvider sun.security.provider.X509Factory sun.security.provider.certpath.AdaptableX509CertSelector @@ -4518,7 +4665,6 @@ sun.security.x509.AuthorityKeyIdentifierExtension sun.security.x509.BasicConstraintsExtension sun.security.x509.CRLDistributionPointsExtension sun.security.x509.CRLNumberExtension -sun.security.x509.CRLReasonCodeExtension sun.security.x509.CertAttrSet sun.security.x509.CertificateAlgorithmId sun.security.x509.CertificateExtensions @@ -4538,17 +4684,14 @@ sun.security.x509.FreshestCRLExtension sun.security.x509.GeneralName sun.security.x509.GeneralNameInterface sun.security.x509.GeneralNames -sun.security.x509.InhibitAnyPolicyExtension sun.security.x509.IssuerAlternativeNameExtension sun.security.x509.IssuingDistributionPointExtension sun.security.x509.KeyIdentifier sun.security.x509.KeyUsageExtension sun.security.x509.NameConstraintsExtension -sun.security.x509.NetscapeCertTypeExtension sun.security.x509.OCSPNoCheckExtension sun.security.x509.OIDMap sun.security.x509.OIDMap$OIDInfo -sun.security.x509.PKIXExtensions sun.security.x509.PolicyConstraintsExtension sun.security.x509.PolicyInformation sun.security.x509.PolicyMappingsExtension diff --git a/config/preloaded-classes-blacklist b/config/preloaded-classes-blacklist new file mode 100644 index 0000000000000000000000000000000000000000..f612b1202866536dea945d9936529056f7893685 --- /dev/null +++ b/config/preloaded-classes-blacklist @@ -0,0 +1 @@ +android.net.ConnectivityThread$Singleton diff --git a/config/preloaded-classes-extra b/config/preloaded-classes-extra new file mode 100644 index 0000000000000000000000000000000000000000..09f393ad48444b653e0e4ccd6dcb65614f508d6d --- /dev/null +++ b/config/preloaded-classes-extra @@ -0,0 +1,14 @@ +android.icu.impl.coll.CollationRoot +android.icu.impl.IDNA2003 +android.icu.impl.number.Parse +android.icu.util.TimeZone +android.media.ImageReader +android.media.MediaCodecList +android.media.MediaPlayer +android.media.SoundPool +android.text.format.Formatter +android.text.Html$HtmlParser +android.util.Log$PreloadHolder +com.android.org.conscrypt.TrustedCertificateStore +org.ccil.cowan.tagsoup.HTMLScanner +sun.security.jca.Providers diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java index af0a204fed13f51683cb5b8715e9730ab77de319..a558d6850af15fefd5b97dfb55a0cb09ff480097 100644 --- a/core/java/android/accessibilityservice/AccessibilityService.java +++ b/core/java/android/accessibilityservice/AccessibilityService.java @@ -26,7 +26,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ParceledListSlice; import android.graphics.Region; -import android.hardware.fingerprint.FingerprintManager; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -52,8 +51,6 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; -import static android.content.pm.PackageManager.FEATURE_FINGERPRINT; - /** * Accessibility services should only be used to assist users with disabilities in using * Android devices and apps. They run in the background and receive callbacks by the system @@ -394,7 +391,7 @@ public abstract class AccessibilityService extends Service { public static final int SHOW_MODE_AUTO = 0; public static final int SHOW_MODE_HIDDEN = 1; - private int mConnectionId; + private int mConnectionId = AccessibilityInteractionClient.NO_ID; private AccessibilityServiceInfo mInfo; @@ -612,7 +609,7 @@ public abstract class AccessibilityService extends Service { /** * Get the controller for fingerprint gestures. This feature requires {@link - * AccessibilityServiceInfo#CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES}. + * AccessibilityServiceInfo#CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES}. * *Note: The service must be connected before this method is called. * @@ -1612,7 +1609,7 @@ public abstract class AccessibilityService extends Service { private final Callbacks mCallback; - private int mConnectionId; + private int mConnectionId = AccessibilityInteractionClient.NO_ID; public IAccessibilityServiceClientWrapper(Context context, Looper looper, Callbacks callback) { @@ -1707,7 +1704,8 @@ public abstract class AccessibilityService extends Service { if (event != null) { // Send the event to AccessibilityCache via AccessibilityInteractionClient AccessibilityInteractionClient.getInstance().onAccessibilityEvent(event); - if (serviceWantsEvent) { + if (serviceWantsEvent + && (mConnectionId != AccessibilityInteractionClient.NO_ID)) { // Send the event to AccessibilityService mCallback.onAccessibilityEvent(event); } @@ -1721,7 +1719,9 @@ public abstract class AccessibilityService extends Service { } return; case DO_ON_INTERRUPT: { - mCallback.onInterrupt(); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onInterrupt(); + } } return; case DO_INIT: { @@ -1746,8 +1746,10 @@ public abstract class AccessibilityService extends Service { } return; case DO_ON_GESTURE: { - final int gestureId = message.arg1; - mCallback.onGesture(gestureId); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final int gestureId = message.arg1; + mCallback.onGesture(gestureId); + } } return; case DO_CLEAR_ACCESSIBILITY_CACHE: { @@ -1779,37 +1781,51 @@ public abstract class AccessibilityService extends Service { } return; case DO_ON_MAGNIFICATION_CHANGED: { - final SomeArgs args = (SomeArgs) message.obj; - final Region region = (Region) args.arg1; - final float scale = (float) args.arg2; - final float centerX = (float) args.arg3; - final float centerY = (float) args.arg4; - mCallback.onMagnificationChanged(region, scale, centerX, centerY); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final SomeArgs args = (SomeArgs) message.obj; + final Region region = (Region) args.arg1; + final float scale = (float) args.arg2; + final float centerX = (float) args.arg3; + final float centerY = (float) args.arg4; + mCallback.onMagnificationChanged(region, scale, centerX, centerY); + } } return; case DO_ON_SOFT_KEYBOARD_SHOW_MODE_CHANGED: { - final int showMode = (int) message.arg1; - mCallback.onSoftKeyboardShowModeChanged(showMode); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final int showMode = (int) message.arg1; + mCallback.onSoftKeyboardShowModeChanged(showMode); + } } return; case DO_GESTURE_COMPLETE: { - final boolean successfully = message.arg2 == 1; - mCallback.onPerformGestureResult(message.arg1, successfully); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final boolean successfully = message.arg2 == 1; + mCallback.onPerformGestureResult(message.arg1, successfully); + } } return; case DO_ON_FINGERPRINT_ACTIVE_CHANGED: { - mCallback.onFingerprintCapturingGesturesChanged(message.arg1 == 1); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onFingerprintCapturingGesturesChanged(message.arg1 == 1); + } } return; case DO_ON_FINGERPRINT_GESTURE: { - mCallback.onFingerprintGesture(message.arg1); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onFingerprintGesture(message.arg1); + } } return; case (DO_ACCESSIBILITY_BUTTON_CLICKED): { - mCallback.onAccessibilityButtonClicked(); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + mCallback.onAccessibilityButtonClicked(); + } } return; case (DO_ACCESSIBILITY_BUTTON_AVAILABILITY_CHANGED): { - final boolean available = (message.arg1 != 0); - mCallback.onAccessibilityButtonAvailabilityChanged(available); + if (mConnectionId != AccessibilityInteractionClient.NO_ID) { + final boolean available = (message.arg1 != 0); + mCallback.onAccessibilityButtonAvailabilityChanged(available); + } } return; default : diff --git a/core/java/android/accessibilityservice/FingerprintGestureController.java b/core/java/android/accessibilityservice/FingerprintGestureController.java index 9f04cea885afd62ccc843ce79cdcf25b2b239b18..c30030d6f6fb7d31b9f36acb76c52feab2294593 100644 --- a/core/java/android/accessibilityservice/FingerprintGestureController.java +++ b/core/java/android/accessibilityservice/FingerprintGestureController.java @@ -29,11 +29,11 @@ import com.android.internal.annotations.VisibleForTesting; * sensor, as long as the device has a sensor capable of detecting gestures. *

* This capability must be declared by the service as - * {@link AccessibilityServiceInfo#CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES}. It also requires + * {@link AccessibilityServiceInfo#CAPABILITY_CAN_REQUEST_FINGERPRINT_GESTURES}. It also requires * the permission {@link android.Manifest.permission#USE_FINGERPRINT}. *

* Because capturing fingerprint gestures may have side effects, services with the capability only - * capture gestures when {@link AccessibilityServiceInfo#FLAG_CAPTURE_FINGERPRINT_GESTURES} is set. + * capture gestures when {@link AccessibilityServiceInfo#FLAG_REQUEST_FINGERPRINT_GESTURES} is set. *

* Note: The fingerprint sensor is used for authentication in critical use cases, * so services must carefully design their user's experience when performing gestures on the sensor. diff --git a/core/java/android/accounts/AbstractAccountAuthenticator.java b/core/java/android/accounts/AbstractAccountAuthenticator.java index 7ca65a41f85e703c1d86be98ef014a7a8a32bf3b..a3b3a9f21954219e6371913688741893a7a82f19 100644 --- a/core/java/android/accounts/AbstractAccountAuthenticator.java +++ b/core/java/android/accounts/AbstractAccountAuthenticator.java @@ -550,7 +550,9 @@ public abstract class AbstractAccountAuthenticator { * @param authTokenType the type of auth token to retrieve after adding the account, may be null * @param requiredFeatures a String array of authenticator-specific features that the added * account must support, may be null - * @param options a Bundle of authenticator-specific options, may be null + * @param options a Bundle of authenticator-specific options. It always contains + * {@link AccountManager#KEY_CALLER_PID} and {@link AccountManager#KEY_CALLER_UID} + * fields which will let authenticator know the identity of the caller. * @return a Bundle result or null if the result is to be returned via the response. The result * will contain either: *

    @@ -606,21 +608,24 @@ public abstract class AbstractAccountAuthenticator { * addition {@link AbstractAccountAuthenticator} implementations that declare themselves * {@code android:customTokens=true} may also provide a non-negative {@link * #KEY_CUSTOM_TOKEN_EXPIRY} long value containing the expiration timestamp of the expiration - * time (in millis since the unix epoch). + * time (in millis since the unix epoch), tokens will be cached in memory based on + * application's packageName/signature for however long that was specified. *

    * Implementers should assume that tokens will be cached on the basis of account and * authTokenType. The system may ignore the contents of the supplied options Bundle when * determining to re-use a cached token. Furthermore, implementers should assume a supplied * expiration time will be treated as non-binding advice. *

    - * Finally, note that for android:customTokens=false authenticators, tokens are cached + * Finally, note that for {@code android:customTokens=false} authenticators, tokens are cached * indefinitely until some client calls {@link * AccountManager#invalidateAuthToken(String,String)}. * * @param response to send the result back to the AccountManager, will never be null * @param account the account whose credentials are to be retrieved, will never be null * @param authTokenType the type of auth token to retrieve, will never be null - * @param options a Bundle of authenticator-specific options, may be null + * @param options a Bundle of authenticator-specific options. It always contains + * {@link AccountManager#KEY_CALLER_PID} and {@link AccountManager#KEY_CALLER_UID} + * fields which will let authenticator know the identity of the caller. * @return a Bundle result or null if the result is to be returned via the response. * @throws NetworkErrorException if the authenticator could not honor the request due to a * network error diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index d22e268dad5bcec3862e5d051fafdd9324a4f899..bd9c9fa3053644497e107d52dfaa0aed908e5649 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -242,10 +242,13 @@ public class AccountManager { public static final String KEY_LAST_AUTHENTICATED_TIME = "lastAuthenticatedTime"; /** - * Authenticators using 'customTokens' option will also get the UID of the - * caller + * The UID of caller app. */ public static final String KEY_CALLER_UID = "callerUid"; + + /** + * The process id of caller app. + */ public static final String KEY_CALLER_PID = "callerPid"; /** @@ -392,7 +395,7 @@ public class AccountManager { /** * Key to set default visibility for applications which don't satisfy conditions in - * {@link PACKAGE_NAME_KEY_LEGACY_VISIBLE}. If the value was not set by authenticator + * {@link #PACKAGE_NAME_KEY_LEGACY_VISIBLE}. If the value was not set by authenticator * {@link #VISIBILITY_USER_MANAGED_NOT_VISIBLE} is used. */ public static final String PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE = @@ -613,7 +616,7 @@ public class AccountManager { * not authorized to view all accounts. This method can only be called by system apps and * authenticators managing the type. * Beginning API level {@link android.os.Build.VERSION_CODES#O} it also return accounts - * which user can make visible to the application (see {@link VISIBILITY_USER_MANAGED_VISIBLE}). + * which user can make visible to the application (see {@link #VISIBILITY_USER_MANAGED_VISIBLE}). * * @param type The type of accounts to return, null to retrieve all accounts * @param packageName The package name of the app for which the accounts are to be returned @@ -651,7 +654,7 @@ public class AccountManager { * of accounts made visible to it by user * (see {@link #newChooseAccountIntent(Account, List, String[], String, * String, String[], Bundle)}) or AbstractAcccountAuthenticator - * using {@link setAccountVisibility}. + * using {@link #setAccountVisibility}. * {@link android.Manifest.permission#GET_ACCOUNTS} permission is not used. * *

    @@ -797,7 +800,7 @@ public class AccountManager { * of accounts made visible to it by user * (see {@link #newChooseAccountIntent(Account, List, String[], String, * String, String[], Bundle)}) or AbstractAcccountAuthenticator - * using {@link setAccountVisibility}. + * using {@link #setAccountVisibility}. * {@link android.Manifest.permission#GET_ACCOUNTS} permission is not used. * *

    @@ -2717,7 +2720,7 @@ public class AccountManager { * On success the activity returns a Bundle with the account name and type specified using * keys {@link #KEY_ACCOUNT_NAME} and {@link #KEY_ACCOUNT_TYPE}. * Chosen account is marked as {@link #VISIBILITY_USER_MANAGED_VISIBLE} to the caller - * (see {@link setAccountVisibility}) and will be returned to it in consequent + * (see {@link #setAccountVisibility}) and will be returned to it in consequent * {@link #getAccountsByType}) calls. *

    * The most common case is to call this with one account type, e.g.: @@ -2772,7 +2775,7 @@ public class AccountManager { * On success the activity returns a Bundle with the account name and type specified using * keys {@link #KEY_ACCOUNT_NAME} and {@link #KEY_ACCOUNT_TYPE}. * Chosen account is marked as {@link #VISIBILITY_USER_MANAGED_VISIBLE} to the caller - * (see {@link setAccountVisibility}) and will be returned to it in consequent + * (see {@link #setAccountVisibility}) and will be returned to it in consequent * {@link #getAccountsByType}) calls. *

    * The most common case is to call this with one account type, e.g.: diff --git a/core/java/android/accounts/ChooseAccountActivity.java b/core/java/android/accounts/ChooseAccountActivity.java index 9f2c39bbc4ceb5c38c5c8df64c6969bd64269725..6a436869a0ec964782b19e083976a6ce48f73752 100644 --- a/core/java/android/accounts/ChooseAccountActivity.java +++ b/core/java/android/accounts/ChooseAccountActivity.java @@ -16,12 +16,17 @@ package android.accounts; import android.app.Activity; +import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.IBinder; import android.os.Parcelable; +import android.os.RemoteException; +import android.os.Process; +import android.os.UserHandle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -45,6 +50,8 @@ public class ChooseAccountActivity extends Activity { private Parcelable[] mAccounts = null; private AccountManagerResponse mAccountManagerResponse = null; private Bundle mResult; + private int mCallingUid; + private String mCallingPackage; private HashMap mTypeToAuthDescription = new HashMap(); @@ -52,9 +59,6 @@ public class ChooseAccountActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - // TODO This activity is only used by getAuthTokenByFeatures and can not see - // VISIBILITY_USER_MANAGED_NOT_VISIBLE accounts. It should be moved to account managed - // service. mAccounts = getIntent().getParcelableArrayExtra(AccountManager.KEY_ACCOUNTS); mAccountManagerResponse = getIntent().getParcelableExtra(AccountManager.KEY_ACCOUNT_MANAGER_RESPONSE); @@ -66,6 +70,28 @@ public class ChooseAccountActivity extends Activity { return; } + try { + IBinder activityToken = getActivityToken(); + mCallingUid = ActivityManager.getService().getLaunchedFromUid(activityToken); + mCallingPackage = ActivityManager.getService().getLaunchedFromPackage( + activityToken); + } catch (RemoteException re) { + // Couldn't figure out caller details + Log.w(getClass().getSimpleName(), "Unable to get caller identity \n" + re); + } + + if (UserHandle.isSameApp(mCallingUid, Process.SYSTEM_UID) && + getIntent().getStringExtra(AccountManager.KEY_ANDROID_PACKAGE_NAME) != null) { + mCallingPackage = getIntent().getStringExtra( + AccountManager.KEY_ANDROID_PACKAGE_NAME); + } + + if (!UserHandle.isSameApp(mCallingUid, Process.SYSTEM_UID) && + getIntent().getStringExtra(AccountManager.KEY_ANDROID_PACKAGE_NAME) != null) { + Log.w(getClass().getSimpleName(), + "Non-system Uid: " + mCallingUid + " tried to override packageName \n"); + } + getAuthDescriptions(); AccountInfo[] mAccountInfos = new AccountInfo[mAccounts.length]; @@ -120,6 +146,14 @@ public class ChooseAccountActivity extends Activity { protected void onListItemClick(ListView l, View v, int position, long id) { Account account = (Account) mAccounts[position]; + // Mark account as visible since user chose it. + AccountManager am = AccountManager.get(this); + Integer oldVisibility = am.getAccountVisibility(account, mCallingPackage); + if (oldVisibility != null + && oldVisibility == AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE) { + am.setAccountVisibility(account, mCallingPackage, + AccountManager.VISIBILITY_USER_MANAGED_VISIBLE); + } Log.d(TAG, "selected account " + account); Bundle bundle = new Bundle(); bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); diff --git a/core/java/android/animation/AnimatorSet.java b/core/java/android/animation/AnimatorSet.java index 00d6657efd0d1637907ac35aaae61474823937af..1a2dc5cde4e545f626b63e6df42c6de559e1c4f0 100644 --- a/core/java/android/animation/AnimatorSet.java +++ b/core/java/android/animation/AnimatorSet.java @@ -843,7 +843,7 @@ public final class AnimatorSet extends Animator implements AnimationHandler.Anim // Assumes forward playing from here on. for (int i = 0; i < mEvents.size(); i++) { AnimationEvent event = mEvents.get(i); - if (event.getTime() > currentPlayTime) { + if (event.getTime() > currentPlayTime || event.getTime() == DURATION_INFINITE) { break; } @@ -1264,7 +1264,8 @@ public final class AnimatorSet extends Animator implements AnimationHandler.Anim } else { for (int i = mLastEventId + 1; i < size; i++) { AnimationEvent event = mEvents.get(i); - if (event.getTime() <= currentPlayTime) { + // TODO: need a function that accounts for infinite duration to compare time + if (event.getTime() != DURATION_INFINITE && event.getTime() <= currentPlayTime) { latestId = i; } } diff --git a/core/java/android/annotation/TargetApi.java b/core/java/android/annotation/TargetApi.java index ea178903eb4939f9c43f4b9c2f8f2faec8a5e609..975318e4de67bd0bf8695b119bbba4a5cd76fdda 100644 --- a/core/java/android/annotation/TargetApi.java +++ b/core/java/android/annotation/TargetApi.java @@ -16,6 +16,7 @@ package android.annotation; import static java.lang.annotation.ElementType.CONSTRUCTOR; +import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.TYPE; @@ -25,7 +26,7 @@ import java.lang.annotation.Target; /** Indicates that Lint should treat this type as targeting a given API level, no matter what the project target is. */ -@Target({TYPE, METHOD, CONSTRUCTOR}) +@Target({TYPE, METHOD, CONSTRUCTOR, FIELD}) @Retention(RetentionPolicy.CLASS) public @interface TargetApi { /** diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 0d89c6f6cb0706a82fe2588f127ae7a6d37005da..dbdb81c7c666c2972c986bfe575e6eadb0e132c0 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -16,6 +16,8 @@ package android.app; +import static android.os.Build.VERSION_CODES.O_MR1; + import static java.lang.Character.MIN_VALUE; import android.annotation.CallSuper; @@ -112,6 +114,7 @@ import android.view.WindowManager; import android.view.WindowManagerGlobal; import android.view.accessibility.AccessibilityEvent; import android.view.autofill.AutofillManager; +import android.view.autofill.AutofillManager.AutofillClient; import android.view.autofill.AutofillPopupWindow; import android.view.autofill.IAutofillWindowPresenter; import android.widget.AdapterView; @@ -539,9 +542,9 @@ import java.util.List; *

      *
    • When creating a new document, the backing database entry or file for * it is created immediately. For example, if the user chooses to write - * a new e-mail, a new entry for that e-mail is created as soon as they + * a new email, a new entry for that email is created as soon as they * start entering data, so that if they go to any other activity after - * that point this e-mail will now appear in the list of drafts.

      + * that point this email will now appear in the list of drafts.

      *
    • When an activity's onPause() method is called, it should * commit to the backing content provider or file any changes the user * has made. This ensures that those changes will be seen by any other @@ -759,6 +762,11 @@ public class Activity extends ContextThemeWrapper boolean mStartedActivity; private boolean mDestroyed; private boolean mDoReportFullyDrawn = true; + private boolean mRestoredFromBundle; + + /** {@code true} if the activity lifecycle is in a state which supports picture-in-picture. + * This only affects the client-side exception, the actual state check still happens in AMS. */ + private boolean mCanEnterPictureInPicture = false; /** true if the activity is going through a transient pause */ /*package*/ boolean mTemporaryPause = false; /** true if the activity is being destroyed in order to recreate it with a new configuration */ @@ -799,10 +807,6 @@ public class Activity extends ContextThemeWrapper final Handler mHandler = new Handler(); final FragmentController mFragments = FragmentController.createController(new HostCallbacks()); - // Most recent call to requestVisibleBehind(). - @Deprecated - boolean mVisibleBehind; - private static final class ManagedCursor { ManagedCursor(Cursor cursor) { mCursor = cursor; @@ -944,6 +948,18 @@ public class Activity extends ContextThemeWrapper return mAutofillManager; } + @Override + protected void attachBaseContext(Context newBase) { + super.attachBaseContext(newBase); + newBase.setAutofillClient(this); + } + + /** @hide */ + @Override + public final AutofillClient getAutofillClient() { + return this; + } + /** * Called when the activity is starting. This is where most initialization * should go: calling {@link #setContentView(int)} to inflate the @@ -974,6 +990,18 @@ public class Activity extends ContextThemeWrapper @CallSuper protected void onCreate(@Nullable Bundle savedInstanceState) { if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState); + + if (getApplicationInfo().targetSdkVersion >= O_MR1 && mActivityInfo.isFixedOrientation()) { + final TypedArray ta = obtainStyledAttributes(com.android.internal.R.styleable.Window); + final boolean isTranslucentOrFloating = ActivityInfo.isTranslucentOrFloating(ta); + ta.recycle(); + + if (isTranslucentOrFloating) { + throw new IllegalStateException( + "Only fullscreen opaque activities can request orientation"); + } + } + if (mLastNonConfigurationInstances != null) { mFragments.restoreLoaderNonConfig(mLastNonConfigurationInstances.loaders); } @@ -1002,6 +1030,7 @@ public class Activity extends ContextThemeWrapper if (mVoiceInteractor != null) { mVoiceInteractor.attachActivity(this); } + mRestoredFromBundle = savedInstanceState != null; mCalled = true; } @@ -1847,8 +1876,18 @@ public class Activity extends ContextThemeWrapper getApplication().dispatchActivityStopped(this); mTranslucentCallback = null; mCalled = true; - if (isFinishing() && mAutoFillResetNeeded) { - getAutofillManager().commit(); + + if (isFinishing()) { + if (mAutoFillResetNeeded) { + getAutofillManager().commit(); + } else if (mIntent != null + && mIntent.hasExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN)) { + // Activity was launched when user tapped a link in the Autofill Save UI - since + // user launched another activity, the Save UI should not be restored when this + // activity is finished. + getAutofillManager().onPendingSaveUi(AutofillManager.PENDING_UI_OPERATION_CANCEL, + mIntent.getIBinderExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN)); + } } } @@ -1938,7 +1977,7 @@ public class Activity extends ContextThemeWrapper if (mDoReportFullyDrawn) { mDoReportFullyDrawn = false; try { - ActivityManager.getService().reportActivityFullyDrawn(mToken); + ActivityManager.getService().reportActivityFullyDrawn(mToken, mRestoredFromBundle); } catch (RemoteException e) { } } @@ -2079,6 +2118,10 @@ public class Activity extends ContextThemeWrapper if (params == null) { throw new IllegalArgumentException("Expected non-null picture-in-picture params"); } + if (!mCanEnterPictureInPicture) { + throw new IllegalStateException("Activity must be resumed to enter" + + " picture-in-picture"); + } return ActivityManagerNative.getDefault().enterPictureInPictureMode(mToken, params); } catch (RemoteException e) { return false; @@ -5480,6 +5523,13 @@ public class Activity extends ContextThemeWrapper } else { mParent.finishFromChild(this); } + + // Activity was launched when user tapped a link in the Autofill Save UI - Save UI must + // be restored now. + if (mIntent != null && mIntent.hasExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN)) { + getAutofillManager().onPendingSaveUi(AutofillManager.PENDING_UI_OPERATION_RESTORE, + mIntent.getIBinderExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN)); + } } /** @@ -6214,6 +6264,11 @@ public class Activity extends ContextThemeWrapper } mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix); + + final AutofillManager afm = getAutofillManager(); + if (afm != null) { + afm.dump(prefix, writer); + } } /** @@ -6445,10 +6500,6 @@ public class Activity extends ContextThemeWrapper @Deprecated @SystemApi public boolean isBackgroundVisibleBehind() { - try { - return ActivityManager.getService().isBackgroundVisibleBehind(mToken); - } catch (RemoteException e) { - } return false; } @@ -6949,25 +7000,29 @@ public class Activity extends ContextThemeWrapper return mParent != null ? mParent.getActivityToken() : mToken; } - final void performCreateCommon() { - mVisibleFromClient = !mWindow.getWindowStyle().getBoolean( - com.android.internal.R.styleable.Window_windowNoDisplay, false); - mFragments.dispatchActivityCreated(); - mActivityTransitionState.setEnterActivityOptions(this, getActivityOptions()); - } - final void performCreate(Bundle icicle) { - restoreHasCurrentPermissionRequest(icicle); - onCreate(icicle); - mActivityTransitionState.readState(icicle); - performCreateCommon(); + performCreate(icicle, null); } final void performCreate(Bundle icicle, PersistableBundle persistentState) { + mCanEnterPictureInPicture = true; restoreHasCurrentPermissionRequest(icicle); - onCreate(icicle, persistentState); + if (persistentState != null) { + onCreate(icicle, persistentState); + } else { + onCreate(icicle); + } mActivityTransitionState.readState(icicle); - performCreateCommon(); + + mVisibleFromClient = !mWindow.getWindowStyle().getBoolean( + com.android.internal.R.styleable.Window_windowNoDisplay, false); + mFragments.dispatchActivityCreated(); + mActivityTransitionState.setEnterActivityOptions(this, getActivityOptions()); + } + + final void performNewIntent(Intent intent) { + mCanEnterPictureInPicture = true; + onNewIntent(intent); } final void performStart() { @@ -7013,6 +7068,7 @@ public class Activity extends ContextThemeWrapper } final void performRestart() { + mCanEnterPictureInPicture = true; mFragments.noteStateNotSaved(); if (mToken != null && mParent == null) { @@ -7118,6 +7174,9 @@ public class Activity extends ContextThemeWrapper mDoReportFullyDrawn = false; mFragments.doLoaderStop(mChangingConfigurations /*retain*/); + // Disallow entering picture-in-picture after the activity has been stopped + mCanEnterPictureInPicture = false; + if (!mStopped) { if (mWindow != null) { mWindow.closeAllPanels(); @@ -7542,6 +7601,53 @@ public class Activity extends ContextThemeWrapper } } + /** + * Specifies whether an {@link Activity} should be shown on top of the the lock screen whenever + * the lockscreen is up and the activity is resumed. Normally an activity will be transitioned + * to the stopped state if it is started while the lockscreen is up, but with this flag set the + * activity will remain in the resumed state visible on-top of the lock screen. This value can + * be set as a manifest attribute using {@link android.R.attr#showWhenLocked}. + * + * @param showWhenLocked {@code true} to show the {@link Activity} on top of the lock screen; + * {@code false} otherwise. + * @see #setTurnScreenOn(boolean) + * @see android.R.attr#turnScreenOn + * @see android.R.attr#showWhenLocked + */ + public void setShowWhenLocked(boolean showWhenLocked) { + try { + ActivityManager.getService().setShowWhenLocked(mToken, showWhenLocked); + } catch (RemoteException e) { + Log.e(TAG, "Failed to call setShowWhenLocked", e); + } + } + + /** + * Specifies whether the screen should be turned on when the {@link Activity} is resumed. + * Normally an activity will be transitioned to the stopped state if it is started while the + * screen if off, but with this flag set the activity will cause the screen to turn on if the + * activity will be visible and resumed due to the screen coming on. The screen will not be + * turned on if the activity won't be visible after the screen is turned on. This flag is + * normally used in conjunction with the {@link android.R.attr#showWhenLocked} flag to make sure + * the activity is visible after the screen is turned on when the lockscreen is up. In addition, + * if this flag is set and the activity calls {@link + * KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)} + * the screen will turn on. + * + * @param turnScreenOn {@code true} to turn on the screen; {@code false} otherwise. + * + * @see #setShowWhenLocked(boolean) + * @see android.R.attr#turnScreenOn + * @see android.R.attr#showWhenLocked + */ + public void setTurnScreenOn(boolean turnScreenOn) { + try { + ActivityManager.getService().setTurnScreenOn(mToken, turnScreenOn); + } catch (RemoteException e) { + Log.e(TAG, "Failed to call setTurnScreenOn", e); + } + } + class HostCallbacks extends FragmentHostCallback { public HostCallbacks() { super(Activity.this /*activity*/); diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 06dbe8218450d1fd7f27322fcbdd92e76bc8747c..ff68e2348b4ad55794f8945c898faaa7cc7e93ae 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -24,42 +24,35 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; -import android.content.pm.ActivityInfo; -import android.content.res.Configuration; -import android.graphics.Canvas; -import android.graphics.GraphicBuffer; -import android.graphics.Matrix; -import android.graphics.Point; -import android.os.BatteryStats; -import android.os.Build; -import android.os.Build.VERSION_CODES; -import android.os.IBinder; -import android.os.ParcelFileDescriptor; - -import com.android.internal.app.procstats.ProcessStats; -import com.android.internal.os.RoSystemProperties; -import com.android.internal.os.TransferPipe; -import com.android.internal.util.FastPrintWriter; -import com.android.server.LocalServices; - import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.UriPermission; +import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ConfigurationInfo; import android.content.pm.IPackageDataObserver; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.UserInfo; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.GraphicBuffer; +import android.graphics.Matrix; +import android.graphics.Point; import android.graphics.Rect; +import android.os.BatteryStats; +import android.os.Build; +import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.os.Debug; import android.os.Handler; +import android.os.IBinder; import android.os.Parcel; +import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.os.Process; import android.os.RemoteException; @@ -72,6 +65,12 @@ import android.util.DisplayMetrics; import android.util.Singleton; import android.util.Size; +import com.android.internal.app.procstats.ProcessStats; +import com.android.internal.os.RoSystemProperties; +import com.android.internal.os.TransferPipe; +import com.android.internal.util.FastPrintWriter; +import com.android.server.LocalServices; + import org.xmlpull.v1.XmlSerializer; import java.io.FileDescriptor; @@ -173,6 +172,9 @@ public class ActivityManager { @Override public void onUidIdle(int uid, boolean disabled) { } + + @Override public void onUidCachedChanged(int uid, boolean cached) { + } } final ArrayMap mImportanceListeners = new ArrayMap<>(); @@ -564,6 +566,9 @@ public class ActivityManager { /** @hide Flag for registerUidObserver: report uid has become active. */ public static final int UID_OBSERVER_ACTIVE = 1<<3; + /** @hide Flag for registerUidObserver: report uid cached state has changed. */ + public static final int UID_OBSERVER_CACHED = 1<<4; + /** @hide Mode for {@link IActivityManager#isAppStartModeDisabled}: normal free-to-run operation. */ public static final int APP_START_MODE_NORMAL = 0; @@ -903,19 +908,6 @@ public class ActivityManager { return stackId == HOME_STACK_ID || stackId == RECENTS_STACK_ID; } - /** - * Returns true if activities contained in this stack can request visible behind by - * calling {@link Activity#requestVisibleBehind}. - * - * @deprecated This method's functionality is no longer supported as of - * {@link android.os.Build.VERSION_CODES#O} and will be removed in a future release. - */ - @Deprecated - public static boolean activitiesCanRequestVisibleBehind(int stackId) { - return stackId == FULLSCREEN_WORKSPACE_STACK_ID || - stackId == ASSISTANT_STACK_ID; - } - /** * Returns true if this stack may be scaled without resizing, and windows within may need * to be configured as such. @@ -2915,6 +2907,8 @@ public class ActivityManager { /** * @hide */ + @RequiresPermission(anyOf={Manifest.permission.CLEAR_APP_USER_DATA, + Manifest.permission.ACCESS_INSTANT_APPS}) public boolean clearApplicationUserData(String packageName, IPackageDataObserver observer) { try { return getService().clearApplicationUserData(packageName, diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index e5fe2402dae1cfbc108c67c71c067cf86229fccc..c8d983933fc6d216fc0bd7b3309b3849d4a8aed9 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -30,8 +30,6 @@ import android.util.SparseIntArray; import com.android.internal.app.IVoiceInteractor; -import java.io.PrintWriter; -import java.util.ArrayList; import java.util.List; /** @@ -90,11 +88,12 @@ public abstract class ActivityManagerInternal { String processName, String abiOverride, int uid, Runnable crashHandler); /** - * Acquires a sleep token with the specified tag. + * Acquires a sleep token for the specified display with the specified tag. * * @param tag A string identifying the purpose of the token (eg. "Dream"). + * @param displayId The display to apply the sleep token to. */ - public abstract SleepToken acquireSleepToken(@NonNull String tag); + public abstract SleepToken acquireSleepToken(@NonNull String tag, int displayId); /** * Sleep tokens cause the activity manager to put the top activity to sleep. @@ -263,4 +262,10 @@ public abstract class ActivityManagerInternal { * Clears the previously saved activity manager ANR state. */ public abstract void clearSavedANRState(); + + /** + * Set focus on an activity. + * @param token The IApplicationToken for the activity + */ + public abstract void setFocusedActivity(IBinder token); } diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 6dead3e6c0dc23d1ff5012c869a8bbd49e4ff7a4..0bffc9e6cee5a5eeca037375e26cf0874c705ece 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -194,6 +194,14 @@ public class ActivityOptions { */ private static final String KEY_DOCK_CREATE_MODE = "android:activity.dockCreateMode"; + /** + * Determines whether to disallow the outgoing activity from entering picture-in-picture as the + * result of a new activity being launched. + * @hide + */ + private static final String KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING = + "android:activity.disallowEnterPictureInPictureWhileLaunching"; + /** * For Activity transitions, the calling Activity's TransitionListener used to * notify the called Activity when the shared element and the exit transitions @@ -267,6 +275,7 @@ public class ActivityOptions { private int mLaunchStackId = INVALID_STACK_ID; private int mLaunchTaskId = -1; private int mDockCreateMode = DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT; + private boolean mDisallowEnterPictureInPictureWhileLaunching; private boolean mTaskOverlay; private boolean mTaskOverlayCanResume; private AppTransitionAnimationSpec mAnimSpecs[]; @@ -856,6 +865,8 @@ public class ActivityOptions { mTaskOverlay = opts.getBoolean(KEY_TASK_OVERLAY, false); mTaskOverlayCanResume = opts.getBoolean(KEY_TASK_OVERLAY_CAN_RESUME, false); mDockCreateMode = opts.getInt(KEY_DOCK_CREATE_MODE, DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT); + mDisallowEnterPictureInPictureWhileLaunching = opts.getBoolean( + KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING, false); if (opts.containsKey(KEY_ANIM_SPECS)) { Parcelable[] specs = opts.getParcelableArray(KEY_ANIM_SPECS); mAnimSpecs = new AppTransitionAnimationSpec[specs.length]; @@ -1121,6 +1132,16 @@ public class ActivityOptions { mDockCreateMode = dockCreateMode; } + /** @hide */ + public void setDisallowEnterPictureInPictureWhileLaunching(boolean disallow) { + mDisallowEnterPictureInPictureWhileLaunching = disallow; + } + + /** @hide */ + public boolean disallowEnterPictureInPictureWhileLaunching() { + return mDisallowEnterPictureInPictureWhileLaunching; + } + /** * Update the current values in this ActivityOptions from those supplied * in otherOptions. Any values @@ -1275,6 +1296,8 @@ public class ActivityOptions { b.putBoolean(KEY_TASK_OVERLAY, mTaskOverlay); b.putBoolean(KEY_TASK_OVERLAY_CAN_RESUME, mTaskOverlayCanResume); b.putInt(KEY_DOCK_CREATE_MODE, mDockCreateMode); + b.putBoolean(KEY_DISALLOW_ENTER_PICTURE_IN_PICTURE_WHILE_LAUNCHING, + mDisallowEnterPictureInPictureWhileLaunching); if (mAnimSpecs != null) { b.putParcelableArray(KEY_ANIM_SPECS, mAnimSpecs); } diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 14ac726ebc529e76c929e4c051dad531219c7a7b..45f7eba2af02f567bae391f24c3b61bae1c314d3 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -100,6 +100,7 @@ import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Log; import android.util.LogPrinter; +import android.util.LogWriter; import android.util.Pair; import android.util.PrintWriterPrinter; import android.util.Slog; @@ -125,6 +126,7 @@ import com.android.internal.os.RuntimeInit; import com.android.internal.os.SomeArgs; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastPrintWriter; +import com.android.internal.util.IndentingPrintWriter; import com.android.org.conscrypt.OpenSSLSocketImpl; import com.android.org.conscrypt.TrustedCertificateStore; @@ -133,8 +135,6 @@ import dalvik.system.CloseGuard; import dalvik.system.VMDebug; import dalvik.system.VMRuntime; -import com.google.android.collect.Lists; - import libcore.io.DropBox; import libcore.io.EventLogger; import libcore.io.IoUtils; @@ -152,6 +152,7 @@ import java.lang.reflect.Field; import java.net.InetAddress; import java.text.DateFormat; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.Map; @@ -445,7 +446,6 @@ public final class ActivityThread { sb.append(", startedActivity=").append(activity.mStartedActivity); sb.append(", temporaryPause=").append(activity.mTemporaryPause); sb.append(", changingConfigurations=").append(activity.mChangingConfigurations); - sb.append(", visibleBehind=").append(activity.mVisibleBehind); sb.append("}"); } sb.append("}"); @@ -658,6 +658,9 @@ public final class ActivityThread { } static final class DumpHeapData { + public boolean managed; + public boolean mallocInfo; + public boolean runGc; String path; ParcelFileDescriptor fd; } @@ -1023,11 +1026,16 @@ public final class ActivityThread { sendMessage(H.PROFILER_CONTROL, profilerInfo, start ? 1 : 0, profileType); } - public void dumpHeap(boolean managed, String path, ParcelFileDescriptor fd) { + @Override + public void dumpHeap(boolean managed, boolean mallocInfo, boolean runGc, String path, + ParcelFileDescriptor fd) { DumpHeapData dhd = new DumpHeapData(); + dhd.managed = managed; + dhd.mallocInfo = mallocInfo; + dhd.runGc = runGc; dhd.path = path; dhd.fd = fd; - sendMessage(H.DUMP_HEAP, dhd, managed ? 1 : 0, 0, true /*async*/); + sendMessage(H.DUMP_HEAP, dhd, 0, 0, true /*async*/); } public void attachAgent(String agent) { @@ -1383,16 +1391,6 @@ public final class ActivityThread { DateFormat.set24HourTimePref(timeFormatPreferenceBool); } - @Override - public void scheduleCancelVisibleBehind(IBinder token) { - sendMessage(H.CANCEL_VISIBLE_BEHIND, token); - } - - @Override - public void scheduleBackgroundVisibleBehindChanged(IBinder token, boolean visible) { - sendMessage(H.BACKGROUND_VISIBLE_BEHIND_CHANGED, token, visible ? 1 : 0); - } - @Override public void scheduleEnterAnimationComplete(IBinder token) { sendMessage(H.ENTER_ANIMATION_COMPLETE, token); @@ -1509,8 +1507,6 @@ public final class ActivityThread { public static final int TRANSLUCENT_CONVERSION_COMPLETE = 144; public static final int INSTALL_PROVIDER = 145; public static final int ON_NEW_ACTIVITY_OPTIONS = 146; - public static final int CANCEL_VISIBLE_BEHIND = 147; - public static final int BACKGROUND_VISIBLE_BEHIND_CHANGED = 148; public static final int ENTER_ANIMATION_COMPLETE = 149; public static final int START_BINDER_TRACKING = 150; public static final int STOP_BINDER_TRACKING_AND_DUMP = 151; @@ -1571,8 +1567,6 @@ public final class ActivityThread { case TRANSLUCENT_CONVERSION_COMPLETE: return "TRANSLUCENT_CONVERSION_COMPLETE"; case INSTALL_PROVIDER: return "INSTALL_PROVIDER"; case ON_NEW_ACTIVITY_OPTIONS: return "ON_NEW_ACTIVITY_OPTIONS"; - case CANCEL_VISIBLE_BEHIND: return "CANCEL_VISIBLE_BEHIND"; - case BACKGROUND_VISIBLE_BEHIND_CHANGED: return "BACKGROUND_VISIBLE_BEHIND_CHANGED"; case ENTER_ANIMATION_COMPLETE: return "ENTER_ANIMATION_COMPLETE"; case MULTI_WINDOW_MODE_CHANGED: return "MULTI_WINDOW_MODE_CHANGED"; case PICTURE_IN_PICTURE_MODE_CHANGED: return "PICTURE_IN_PICTURE_MODE_CHANGED"; @@ -1773,7 +1767,7 @@ public final class ActivityThread { case SCHEDULE_CRASH: throw new RemoteServiceException((String)msg.obj); case DUMP_HEAP: - handleDumpHeap(msg.arg1 != 0, (DumpHeapData)msg.obj); + handleDumpHeap((DumpHeapData) msg.obj); break; case DUMP_ACTIVITY: handleDumpActivity((DumpComponentInfo)msg.obj); @@ -1815,12 +1809,6 @@ public final class ActivityThread { Pair pair = (Pair) msg.obj; onNewActivityOptions(pair.first, pair.second); break; - case CANCEL_VISIBLE_BEHIND: - handleCancelVisibleBehind((IBinder) msg.obj); - break; - case BACKGROUND_VISIBLE_BEHIND_CHANGED: - handleOnBackgroundVisibleBehindChanged((IBinder) msg.obj, msg.arg1 > 0); - break; case ENTER_ANIMATION_COMPLETE: handleEnterAnimationComplete((IBinder) msg.obj); break; @@ -2678,14 +2666,8 @@ public final class ActivityThread { Activity activity = null; try { java.lang.ClassLoader cl = appContext.getClassLoader(); - if (appContext.getApplicationContext() instanceof Application) { - activity = ((Application) appContext.getApplicationContext()) - .instantiateActivity(cl, component.getClassName(), r.intent); - } - if (activity == null) { - activity = mInstrumentation.newActivity( - cl, component.getClassName(), r.intent); - } + activity = mInstrumentation.newActivity( + cl, component.getClassName(), r.intent); StrictMode.incrementExpectedActivityCount(activity.getClass()); r.intent.setExtrasClassLoader(cl); r.intent.prepareToEnterProcess(); @@ -2962,6 +2944,7 @@ public final class ActivityThread { r.activity.mTemporaryPause = true; mInstrumentation.callActivityOnPause(r.activity); } + checkAndBlockForNetworkAccess(); deliverNewIntents(r, intents); if (resumed) { r.activity.performResume(); @@ -3069,40 +3052,10 @@ public final class ActivityThread { } } - public void handleCancelVisibleBehind(IBinder token) { - ActivityClientRecord r = mActivities.get(token); - if (r != null) { - mSomeActivitiesChanged = true; - final Activity activity = r.activity; - if (activity.mVisibleBehind) { - activity.mCalled = false; - activity.onVisibleBehindCanceled(); - // Tick, tick, tick. The activity has 500 msec to return or it will be destroyed. - if (!activity.mCalled) { - throw new SuperNotCalledException("Activity " + activity.getLocalClassName() + - " did not call through to super.onVisibleBehindCanceled()"); - } - activity.mVisibleBehind = false; - } - } - try { - ActivityManager.getService().backgroundResourcesReleased(token); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - public void handleOnBackgroundVisibleBehindChanged(IBinder token, boolean visible) { - ActivityClientRecord r = mActivities.get(token); - if (r != null) { - r.activity.onBackgroundVisibleBehindChanged(visible); - } - } - public void handleInstallProvider(ProviderInfo info) { final StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites(); try { - installContentProviders(mInitialApplication, Lists.newArrayList(info)); + installContentProviders(mInitialApplication, Arrays.asList(info)); } finally { StrictMode.setThreadPolicy(oldPolicy); } @@ -3210,8 +3163,7 @@ public final class ActivityThread { data.intent.setExtrasClassLoader(cl); data.intent.prepareToEnterProcess(); data.setExtrasClassLoader(cl); - receiver = instantiate(cl, component, data.intent, app, - Application::instantiateReceiver); + receiver = (BroadcastReceiver)cl.loadClass(component).newInstance(); } catch (Exception e) { if (DEBUG_BROADCAST) Slog.i(TAG, "Finishing failed broadcast to " + data.intent.getComponent()); @@ -3299,13 +3251,12 @@ public final class ActivityThread { } else { try { if (DEBUG_BACKUP) Slog.v(TAG, "Initializing agent class " + classname); - ContextImpl context = ContextImpl.createAppContext(this, packageInfo); java.lang.ClassLoader cl = packageInfo.getClassLoader(); - agent = instantiate(cl, classname, context, - Application::instantiateBackupAgent); + agent = (BackupAgent) cl.loadClass(classname).newInstance(); // set up the agent's context + ContextImpl context = ContextImpl.createAppContext(this, packageInfo); context.setOuterContext(agent); agent.attach(context); @@ -3365,12 +3316,9 @@ public final class ActivityThread { LoadedApk packageInfo = getPackageInfoNoCheck( data.info.applicationInfo, data.compatInfo); Service service = null; - Application app = null; try { - app = packageInfo.makeApplication(false, mInstrumentation); java.lang.ClassLoader cl = packageInfo.getClassLoader(); - service = instantiate(cl, data.info.name, data.intent, app, - Application::instantiateService); + service = (Service) cl.loadClass(data.info.name).newInstance(); } catch (Exception e) { if (!mInstrumentation.onException(service, e)) { throw new RuntimeException( @@ -3385,6 +3333,7 @@ public final class ActivityThread { ContextImpl context = ContextImpl.createAppContext(this, packageInfo); context.setOuterContext(service); + Application app = packageInfo.makeApplication(false, mInstrumentation); service.attach(context, this, data.info.name, data.token, app, ActivityManager.getService()); service.onCreate(); @@ -3595,6 +3544,7 @@ public final class ActivityThread { try { r.activity.onStateNotSaved(); r.activity.mFragments.noteStateNotSaved(); + checkAndBlockForNetworkAccess(); if (r.pendingIntents != null) { deliverNewIntents(r, r.pendingIntents); r.pendingIntents = null; @@ -3984,6 +3934,14 @@ public final class ActivityThread { ActivityManager.getService().activityStopped( activity.token, state, persistentState, description); } catch (RemoteException ex) { + // Dump statistics about bundle to help developers debug + final LogWriter writer = new LogWriter(Log.WARN, TAG); + final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " "); + pw.println("Bundle stats:"); + Bundle.dumpStats(pw, state); + pw.println("PersistableBundle stats:"); + Bundle.dumpStats(pw, persistentState); + if (ex instanceof TransactionTooLargeException && activity.packageInfo.getTargetSdkVersion() < Build.VERSION_CODES.N) { Log.e(TAG, "App sent too much data in instance state, so it was ignored", ex); @@ -4350,6 +4308,7 @@ public final class ActivityThread { } } } + checkAndBlockForNetworkAccess(); deliverResults(r, res.results); if (resumed) { r.activity.performResume(); @@ -5195,11 +5154,7 @@ public final class ActivityThread { Slog.w(TAG, "Profiling failed on path " + profilerInfo.profileFile + " -- can the process access this path?"); } finally { - try { - profilerInfo.profileFd.close(); - } catch (IOException e) { - Slog.w(TAG, "Failure closing profile fd", e); - } + profilerInfo.closeFd(); } } else { switch (profileType) { @@ -5222,8 +5177,13 @@ public final class ActivityThread { } } - static final void handleDumpHeap(boolean managed, DumpHeapData dhd) { - if (managed) { + static void handleDumpHeap(DumpHeapData dhd) { + if (dhd.runGc) { + System.gc(); + System.runFinalization(); + System.gc(); + } + if (dhd.managed) { try { Debug.dumpHprofData(dhd.path, dhd.fd.getFileDescriptor()); } catch (IOException e) { @@ -5236,6 +5196,8 @@ public final class ActivityThread { Slog.w(TAG, "Failure closing profile fd", e); } } + } else if (dhd.mallocInfo) { + Debug.dumpNativeMallocInfo(dhd.fd.getFileDescriptor()); } else { Debug.dumpNativeHeap(dhd.fd.getFileDescriptor()); } @@ -5305,7 +5267,7 @@ public final class ActivityThread { final ApplicationInfo aInfo = sPackageManager.getApplicationInfo( packageName, - 0 /*flags*/, + PackageManager.GET_SHARED_LIBRARY_FILES, UserHandle.myUserId()); if (mActivities.size() > 0) { @@ -5710,8 +5672,8 @@ public final class ActivityThread { try { final ClassLoader cl = instrContext.getClassLoader(); - mInstrumentation = instantiate(cl, data.instrumentationName.getClassName(), - instrContext, Application::instantiateInstrumentation); + mInstrumentation = (Instrumentation) + cl.loadClass(data.instrumentationName.getClassName()).newInstance(); } catch (Exception e) { throw new RuntimeException( "Unable to instantiate instrumentation " @@ -5744,11 +5706,13 @@ public final class ActivityThread { // Allow disk access during application and provider setup. This could // block processing ordered broadcasts, but later processing would // probably end up doing the same disk access. + Application app; final StrictMode.ThreadPolicy savedPolicy = StrictMode.allowThreadDiskWrites(); + final StrictMode.ThreadPolicy writesAllowedPolicy = StrictMode.getThreadPolicy(); try { // If the app is being launched for full backup or restore, bring it up in // a restricted environment with the base application class. - Application app = data.info.makeApplication(data.restrictedBackupMode, null); + app = data.info.makeApplication(data.restrictedBackupMode, null); mInitialApplication = app; // don't bring up providers in restricted mode; they may depend on the @@ -5772,18 +5736,22 @@ public final class ActivityThread { "Exception thrown in onCreate() of " + data.instrumentationName + ": " + e.toString(), e); } - try { mInstrumentation.callApplicationOnCreate(app); } catch (Exception e) { if (!mInstrumentation.onException(app, e)) { throw new RuntimeException( - "Unable to create application " + app.getClass().getName() - + ": " + e.toString(), e); + "Unable to create application " + app.getClass().getName() + + ": " + e.toString(), e); } } } finally { - StrictMode.setThreadPolicy(savedPolicy); + // If the app targets < O-MR1, or doesn't change the thread policy + // during startup, clobber the policy to maintain behavior of b/36951662 + if (data.appInfo.targetSdkVersion <= Build.VERSION_CODES.O + || StrictMode.getThreadPolicy().equals(writesAllowedPolicy)) { + StrictMode.setThreadPolicy(savedPolicy); + } } // Preload fonts resources @@ -5798,7 +5766,7 @@ public final class ActivityThread { final int preloadedFontsResource = info.metaData.getInt( ApplicationInfo.METADATA_PRELOADED_FONTS, 0); if (preloadedFontsResource != 0) { - data.info.mResources.preloadFonts(preloadedFontsResource); + data.info.getResources().preloadFonts(preloadedFontsResource); } } } catch (RemoteException e) { @@ -6256,8 +6224,8 @@ public final class ActivityThread { try { final java.lang.ClassLoader cl = c.getClassLoader(); - localProvider = instantiate(cl, info.name, context, - Application::instantiateProvider); + localProvider = (ContentProvider)cl. + loadClass(info.name).newInstance(); provider = localProvider.getIContentProvider(); if (provider == null) { Slog.e(TAG, "Failed to instantiate class " + @@ -6456,49 +6424,6 @@ public final class ActivityThread { } } - private T instantiate(ClassLoader cl, String className, Context c, - Instantiator instantiator) - throws ClassNotFoundException, IllegalAccessException, InstantiationException { - Application app = getApp(c); - if (app != null) { - T a = instantiator.instantiate(app, cl, className); - if (a != null) return a; - } - return (T) cl.loadClass(className).newInstance(); - } - - private T instantiate(ClassLoader cl, String className, Intent intent, Context c, - IntentInstantiator instantiator) - throws ClassNotFoundException, IllegalAccessException, InstantiationException { - Application app = getApp(c); - if (app != null) { - T a = instantiator.instantiate(app, cl, className, intent); - if (a != null) return a; - } - return (T) cl.loadClass(className).newInstance(); - } - - private Application getApp(Context c) { - // We need this shortcut to avoid actually calling getApplicationContext() on an Application - // because the Application may not return itself for getApplicationContext() because the - // API doesn't enforce it. - if (c instanceof Application) return (Application) c; - if (c.getApplicationContext() instanceof Application) { - return (Application) c.getApplicationContext(); - } - return null; - } - - private interface Instantiator { - T instantiate(Application app, ClassLoader cl, String className) - throws ClassNotFoundException, IllegalAccessException, InstantiationException; - } - - private interface IntentInstantiator { - T instantiate(Application app, ClassLoader cl, String className, Intent intent) - throws ClassNotFoundException, IllegalAccessException, InstantiationException; - } - private static class EventLoggingReporter implements EventLogger.Reporter { @Override public void report (int code, Object... list) { diff --git a/core/java/android/app/ActivityTransitionCoordinator.java b/core/java/android/app/ActivityTransitionCoordinator.java index 7d4d70d49d5382a9be572a7d9d7c5ce77c84f3df..9b2bfc5702cbef229e0f381f401bdcc100f6dd0d 100644 --- a/core/java/android/app/ActivityTransitionCoordinator.java +++ b/core/java/android/app/ActivityTransitionCoordinator.java @@ -1006,9 +1006,12 @@ abstract class ActivityTransitionCoordinator extends ResultReceiver { final int numElements = mTransitioningViews == null ? 0 : mTransitioningViews.size(); for (int i = 0; i < numElements; i++) { final View view = mTransitioningViews.get(i); - view.setTransitionVisibility(visiblity); if (invalidate) { - view.invalidate(); + // Allow the view to be invalidated by the visibility change + view.setVisibility(visiblity); + } else { + // Don't invalidate the view with the visibility change + view.setTransitionVisibility(visiblity); } } } diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java index 29b83dc3b3157a39b2703670d7f3be0f01c62a87..9f1e98399dce3353dcd16c7517af9c5b72858917 100644 --- a/core/java/android/app/ActivityView.java +++ b/core/java/android/app/ActivityView.java @@ -1,5 +1,5 @@ -/* - * Copyright (C) 2013 The Android Open Source Project +/** + * 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. @@ -16,17 +16,12 @@ package android.app; -import static android.app.ActivityManager.START_CANCELED; - +import android.annotation.NonNull; import android.content.Context; -import android.content.ContextWrapper; -import android.content.IIntentSender; import android.content.Intent; -import android.content.IntentSender; -import android.graphics.SurfaceTexture; -import android.os.IBinder; -import android.os.Message; -import android.os.OperationCanceledException; +import android.hardware.display.DisplayManager; +import android.hardware.display.VirtualDisplay; +import android.hardware.input.InputManager; import android.os.RemoteException; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -35,163 +30,177 @@ import android.view.InputDevice; import android.view.InputEvent; import android.view.MotionEvent; import android.view.Surface; -import android.view.TextureView; -import android.view.TextureView.SurfaceTextureListener; -import android.view.View; +import android.view.SurfaceHolder; +import android.view.SurfaceView; import android.view.ViewGroup; import android.view.WindowManager; -import dalvik.system.CloseGuard; - -import java.lang.ref.WeakReference; -import java.util.ArrayDeque; -import java.util.concurrent.Executor; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import com.android.internal.annotations.GuardedBy; +import dalvik.system.CloseGuard; -/** @hide */ +/** + * Activity container that allows launching activities into itself and does input forwarding. + *

      Creation of this view is only allowed to callers who have + * {@link android.Manifest.permission#INJECT_EVENTS} permission. + *

      Activity launching into this container is restricted by the same rules that apply to launching + * on VirtualDisplays. + * @hide + */ public class ActivityView extends ViewGroup { - private static final String TAG = "ActivityView"; - private static final boolean DEBUG = false; - - private static final int MSG_SET_SURFACE = 1; - - private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors(); - private static final int MINIMUM_POOL_SIZE = 1; - private static final int MAXIMUM_POOL_SIZE = CPU_COUNT * 2 + 1; - private static final int KEEP_ALIVE = 1; - - private static final ThreadFactory sThreadFactory = new ThreadFactory() { - private final AtomicInteger mCount = new AtomicInteger(1); - - public Thread newThread(Runnable r) { - return new Thread(r, "ActivityView #" + mCount.getAndIncrement()); - } - }; - - private static final BlockingQueue sPoolWorkQueue = - new LinkedBlockingQueue(128); - /** - * An {@link Executor} that can be used to execute tasks in parallel. - */ - private static final Executor sExecutor = new ThreadPoolExecutor(MINIMUM_POOL_SIZE, - MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory); - - - private static class SerialExecutor implements Executor { - private final ArrayDeque mTasks = new ArrayDeque(); - private Runnable mActive; - - public synchronized void execute(final Runnable r) { - mTasks.offer(new Runnable() { - public void run() { - try { - r.run(); - } finally { - scheduleNext(); - } - } - }); - if (mActive == null) { - scheduleNext(); - } - } - - protected synchronized void scheduleNext() { - if ((mActive = mTasks.poll()) != null) { - sExecutor.execute(mActive); - } - } - } - - private final SerialExecutor mExecutor = new SerialExecutor(); + private static final String DISPLAY_NAME = "ActivityViewVirtualDisplay"; + private static final String TAG = "ActivityView"; - private final int mDensityDpi; - private final TextureView mTextureView; + private VirtualDisplay mVirtualDisplay; + private final SurfaceView mSurfaceView; + private Surface mSurface; - @GuardedBy("mActivityContainerLock") - private ActivityContainerWrapper mActivityContainer; - private Object mActivityContainerLock = new Object(); + private final SurfaceCallback mSurfaceCallback; + private StateCallback mActivityViewCallback; - private Activity mActivity; - private int mWidth; - private int mHeight; - private Surface mSurface; - private int mLastVisibility; - private ActivityViewCallback mActivityViewCallback; + private IInputForwarder mInputForwarder; + private final CloseGuard mGuard = CloseGuard.get(); + private boolean mOpened; // Protected by mGuard. public ActivityView(Context context) { - this(context, null); + this(context, null /* attrs */); } public ActivityView(Context context, AttributeSet attrs) { - this(context, attrs, 0); + this(context, attrs, 0 /* defStyle */); } public ActivityView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - while (context instanceof ContextWrapper) { - if (context instanceof Activity) { - mActivity = (Activity)context; - break; - } - context = ((ContextWrapper)context).getBaseContext(); - } - if (mActivity == null) { - throw new IllegalStateException("The ActivityView's Context is not an Activity."); - } + mSurfaceView = new SurfaceView(context); + mSurfaceCallback = new SurfaceCallback(); + mSurfaceView.getHolder().addCallback(mSurfaceCallback); + addView(mSurfaceView); - try { - mActivityContainer = new ActivityContainerWrapper( - ActivityManager.getService().createVirtualActivityContainer( - mActivity.getActivityToken(), new ActivityContainerCallback(this))); - } catch (RemoteException e) { - throw new RuntimeException("ActivityView: Unable to create ActivityContainer. " - + e); - } + mOpened = true; + mGuard.open("release"); + } - mTextureView = new TextureView(context); - mTextureView.setSurfaceTextureListener(new ActivityViewSurfaceTextureListener()); - addView(mTextureView); + /** Callback that notifies when the container is ready or destroyed. */ + public abstract static class StateCallback { + /** + * Called when the container is ready for launching activities. Calling + * {@link #startActivity(Intent)} prior to this callback will result in an + * {@link IllegalStateException}. + * + * @see #startActivity(Intent) + */ + public abstract void onActivityViewReady(ActivityView view); + /** + * Called when the container can no longer launch activities. Calling + * {@link #startActivity(Intent)} after this callback will result in an + * {@link IllegalStateException}. + * + * @see #startActivity(Intent) + */ + public abstract void onActivityViewDestroyed(ActivityView view); + } - WindowManager wm = (WindowManager)mActivity.getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics metrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(metrics); - mDensityDpi = metrics.densityDpi; + /** + * Set the callback to be notified about state changes. + *

      This class must finish initializing before {@link #startActivity(Intent)} can be called. + *

      Note: If the instance was ready prior to this call being made, then + * {@link StateCallback#onActivityViewReady(ActivityView)} will be called from within + * this method call. + * + * @param callback The callback to report events to. + * + * @see StateCallback + * @see #startActivity(Intent) + */ + public void setCallback(StateCallback callback) { + mActivityViewCallback = callback; - mLastVisibility = getVisibility(); + if (mVirtualDisplay != null && mActivityViewCallback != null) { + mActivityViewCallback.onActivityViewReady(this); + } + } - if (DEBUG) Log.v(TAG, "ctor()"); + /** + * Launch a new activity into this container. + *

      Activity resolved by the provided {@link Intent} 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. + *

      Note: This class must finish initializing and + * {@link StateCallback#onActivityViewReady(ActivityView)} callback must be triggered before + * this method can be called. + * + * @param intent Intent used to launch an activity. + * + * @see StateCallback + * @see #startActivity(PendingIntent) + */ + public void startActivity(@NonNull Intent intent) { + final ActivityOptions options = prepareActivityOptions(); + getContext().startActivity(intent, options.toBundle()); } - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - mTextureView.layout(0, 0, r - l, b - t); + /** + * Launch a new activity into this container. + *

      Activity resolved by the provided {@link PendingIntent} 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. + *

      Note: This class must finish initializing and + * {@link StateCallback#onActivityViewReady(ActivityView)} callback must be triggered before + * this method can be called. + * + * @param pendingIntent Intent used to launch an activity. + * + * @see StateCallback + * @see #startActivity(Intent) + */ + public void startActivity(@NonNull PendingIntent pendingIntent) { + final ActivityOptions options = prepareActivityOptions(); + try { + pendingIntent.send(null /* context */, 0 /* code */, null /* intent */, + null /* onFinished */, null /* handler */, null /* requiredPermission */, + options.toBundle()); + } catch (PendingIntent.CanceledException e) { + throw new RuntimeException(e); + } } - @Override - protected void onVisibilityChanged(View changedView, final int visibility) { - super.onVisibilityChanged(changedView, visibility); + /** + * Check if container is ready to launch and create {@link ActivityOptions} to target the + * virtual display. + */ + private ActivityOptions prepareActivityOptions() { + if (mVirtualDisplay == null) { + throw new IllegalStateException( + "Trying to start activity before ActivityView is ready."); + } + final ActivityOptions options = ActivityOptions.makeBasic(); + options.setLaunchDisplayId(mVirtualDisplay.getDisplay().getDisplayId()); + return options; + } - if (mSurface != null && (visibility == View.GONE || mLastVisibility == View.GONE)) { - if (DEBUG) Log.v(TAG, "visibility changed; enqueing runnable"); - final Surface surface = (visibility == View.GONE) ? null : mSurface; - setSurfaceAsync(surface, mWidth, mHeight, mDensityDpi, false); + /** + * Release this container. Activity launching will no longer be permitted. + *

      Note: Calling this method is allowed after + * {@link StateCallback#onActivityViewReady(ActivityView)} callback was triggered and before + * {@link StateCallback#onActivityViewDestroyed(ActivityView)}. + * + * @see StateCallback + */ + public void release() { + if (mVirtualDisplay == null) { + throw new IllegalStateException( + "Trying to release container that is not initialized."); } - mLastVisibility = visibility; + performRelease(); } - private boolean injectInputEvent(InputEvent event) { - return mActivityContainer != null && mActivityContainer.injectEvent(event); + @Override + public void onLayout(boolean changed, int l, int t, int r, int b) { + mSurfaceView.layout(0 /* left */, 0 /* top */, r - l /* right */, b - t /* bottom */); } @Override @@ -209,309 +218,118 @@ public class ActivityView extends ViewGroup { return super.onGenericMotionEvent(event); } - @Override - public void onAttachedToWindow() { - if (DEBUG) Log.v(TAG, "onAttachedToWindow(): mActivityContainer=" + mActivityContainer + - " mSurface=" + mSurface); - } - - @Override - public void onDetachedFromWindow() { - if (DEBUG) Log.v(TAG, "onDetachedFromWindow(): mActivityContainer=" + mActivityContainer + - " mSurface=" + mSurface); - } - - public boolean isAttachedToDisplay() { - return mSurface != null; - } - - public void startActivity(Intent intent) { - if (mActivityContainer == null) { - throw new IllegalStateException("Attempt to call startActivity after release"); - } - if (mSurface == null) { - throw new IllegalStateException("Surface not yet created."); - } - if (DEBUG) Log.v(TAG, "startActivity(): intent=" + intent + " " + - (isAttachedToDisplay() ? "" : "not") + " attached"); - if (mActivityContainer.startActivity(intent) == START_CANCELED) { - throw new OperationCanceledException(); - } - } - - public void startActivity(IntentSender intentSender) { - if (mActivityContainer == null) { - throw new IllegalStateException("Attempt to call startActivity after release"); - } - if (mSurface == null) { - throw new IllegalStateException("Surface not yet created."); - } - if (DEBUG) Log.v(TAG, "startActivityIntentSender(): intentSender=" + intentSender + " " + - (isAttachedToDisplay() ? "" : "not") + " attached"); - final IIntentSender iIntentSender = intentSender.getTarget(); - if (mActivityContainer.startActivityIntentSender(iIntentSender) == START_CANCELED) { - throw new OperationCanceledException(); - } - } - - public void startActivity(PendingIntent pendingIntent) { - if (mActivityContainer == null) { - throw new IllegalStateException("Attempt to call startActivity after release"); - } - if (mSurface == null) { - throw new IllegalStateException("Surface not yet created."); - } - if (DEBUG) Log.v(TAG, "startActivityPendingIntent(): PendingIntent=" + pendingIntent + " " - + (isAttachedToDisplay() ? "" : "not") + " attached"); - final IIntentSender iIntentSender = pendingIntent.getTarget(); - if (mActivityContainer.startActivityIntentSender(iIntentSender) == START_CANCELED) { - throw new OperationCanceledException(); - } - } - - public void release() { - if (DEBUG) Log.v(TAG, "release() mActivityContainer=" + mActivityContainer + - " mSurface=" + mSurface); - if (mActivityContainer == null) { - Log.e(TAG, "Duplicate call to release"); - return; - } - synchronized (mActivityContainerLock) { - mActivityContainer.release(); - mActivityContainer = null; - } - - if (mSurface != null) { - mSurface.release(); - mSurface = null; - } - - mTextureView.setSurfaceTextureListener(null); - } - - private void setSurfaceAsync(final Surface surface, final int width, final int height, - final int densityDpi, final boolean callback) { - mExecutor.execute(new Runnable() { - public void run() { - try { - synchronized (mActivityContainerLock) { - if (mActivityContainer != null) { - mActivityContainer.setSurface(surface, width, height, densityDpi); - } - } - } catch (RemoteException e) { - throw new RuntimeException( - "ActivityView: Unable to set surface of ActivityContainer. ", - e); - } - if (callback) { - post(new Runnable() { - @Override - public void run() { - if (mActivityViewCallback != null) { - if (surface != null) { - mActivityViewCallback.onSurfaceAvailable(ActivityView.this); - } else { - mActivityViewCallback.onSurfaceDestroyed(ActivityView.this); - } - } - } - }); - } + private boolean injectInputEvent(InputEvent event) { + if (mInputForwarder != null) { + try { + return mInputForwarder.forwardEvent(event); + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); } - }); - } - - /** - * Set the callback to use to report certain state changes. - * - * Note: If the surface has been created prior to this call being made, then - * ActivityViewCallback.onSurfaceAvailable will be called from within setCallback. - * - * @param callback The callback to report events to. - * - * @see ActivityViewCallback - */ - public void setCallback(ActivityViewCallback callback) { - mActivityViewCallback = callback; - - if (mSurface != null) { - mActivityViewCallback.onSurfaceAvailable(this); } + return false; } - public static abstract class ActivityViewCallback { - /** - * Called when all activities in the ActivityView have completed and been removed. Register - * using {@link ActivityView#setCallback(ActivityViewCallback)}. Each ActivityView may - * have at most one callback registered. - */ - public abstract void onAllActivitiesComplete(ActivityView view); - /** - * Called when the surface is ready to be drawn to. Calling startActivity prior to this - * callback will result in an IllegalStateException. - */ - public abstract void onSurfaceAvailable(ActivityView view); - /** - * Called when the surface has been removed. Calling startActivity after this callback - * will result in an IllegalStateException. - */ - public abstract void onSurfaceDestroyed(ActivityView view); - } - - private class ActivityViewSurfaceTextureListener implements SurfaceTextureListener { + private class SurfaceCallback implements SurfaceHolder.Callback { @Override - public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, - int height) { - if (mActivityContainer == null) { - return; + public void surfaceCreated(SurfaceHolder surfaceHolder) { + mSurface = mSurfaceView.getHolder().getSurface(); + if (mVirtualDisplay == null) { + initVirtualDisplay(); + if (mVirtualDisplay != null && mActivityViewCallback != null) { + mActivityViewCallback.onActivityViewReady(ActivityView.this); + } + } else { + mVirtualDisplay.setSurface(surfaceHolder.getSurface()); } - if (DEBUG) Log.d(TAG, "onSurfaceTextureAvailable: width=" + width + " height=" - + height); - mWidth = width; - mHeight = height; - mSurface = new Surface(surfaceTexture); - setSurfaceAsync(mSurface, mWidth, mHeight, mDensityDpi, true); } @Override - public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int width, - int height) { - if (mActivityContainer == null) { - return; + public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) { + if (mVirtualDisplay != null) { + mVirtualDisplay.resize(width, height, getBaseDisplayDensity()); } - if (DEBUG) Log.d(TAG, "onSurfaceTextureSizeChanged: w=" + width + " h=" + height); } @Override - public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) { - if (mActivityContainer == null) { - return true; - } - if (DEBUG) Log.d(TAG, "onSurfaceTextureDestroyed"); + public void surfaceDestroyed(SurfaceHolder surfaceHolder) { mSurface.release(); mSurface = null; - setSurfaceAsync(null, mWidth, mHeight, mDensityDpi, true); - return true; - } - - @Override - public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) { -// Log.d(TAG, "onSurfaceTextureUpdated"); + if (mVirtualDisplay != null) { + mVirtualDisplay.setSurface(null); + } } - } - private static class ActivityContainerCallback extends IActivityContainerCallback.Stub { - private final WeakReference mActivityViewWeakReference; - - ActivityContainerCallback(ActivityView activityView) { - mActivityViewWeakReference = new WeakReference<>(activityView); + private void initVirtualDisplay() { + if (mVirtualDisplay != null) { + throw new IllegalStateException("Trying to initialize for the second time."); } - @Override - public void setVisible(IBinder container, boolean visible) { - if (DEBUG) Log.v(TAG, "setVisible(): container=" + container + " visible=" + visible + - " ActivityView=" + mActivityViewWeakReference.get()); + final int width = mSurfaceView.getWidth(); + final int height = mSurfaceView.getHeight(); + final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); + mVirtualDisplay = displayManager.createVirtualDisplay( + DISPLAY_NAME + "@" + System.identityHashCode(this), + width, height, getBaseDisplayDensity(), mSurface, 0 /* flags */); + if (mVirtualDisplay == null) { + Log.e(TAG, "Failed to initialize ActivityView"); + return; } - @Override - public void onAllActivitiesComplete(IBinder container) { - final ActivityView activityView = mActivityViewWeakReference.get(); - if (activityView != null) { - final ActivityViewCallback callback = activityView.mActivityViewCallback; - if (callback != null) { - final WeakReference callbackRef = - new WeakReference<>(callback); - activityView.post(new Runnable() { - @Override - public void run() { - ActivityViewCallback callback = callbackRef.get(); - if (callback != null) { - callback.onAllActivitiesComplete(activityView); - } - } - }); - } - } - } + mInputForwarder = InputManager.getInstance().createInputForwarder( + mVirtualDisplay.getDisplay().getDisplayId()); } - private static class ActivityContainerWrapper { - private final IActivityContainer mIActivityContainer; - private final CloseGuard mGuard = CloseGuard.get(); - boolean mOpened; // Protected by mGuard. - - ActivityContainerWrapper(IActivityContainer container) { - mIActivityContainer = container; - mOpened = true; - mGuard.open("release"); + private void performRelease() { + if (!mOpened) { + return; } - void setSurface(Surface surface, int width, int height, int density) - throws RemoteException { - mIActivityContainer.setSurface(surface, width, height, density); - } + mSurfaceView.getHolder().removeCallback(mSurfaceCallback); - int startActivity(Intent intent) { - try { - return mIActivityContainer.startActivity(intent); - } catch (RemoteException e) { - throw new RuntimeException("ActivityView: Unable to startActivity. " + e); - } + if (mInputForwarder != null) { + mInputForwarder = null; } - int startActivityIntentSender(IIntentSender intentSender) { - try { - return mIActivityContainer.startActivityIntentSender(intentSender); - } catch (RemoteException e) { - throw new RuntimeException( - "ActivityView: Unable to startActivity from IntentSender. " + e); - } + final boolean displayReleased; + if (mVirtualDisplay != null) { + mVirtualDisplay.release(); + mVirtualDisplay = null; + displayReleased = true; + } else { + displayReleased = false; } - int getDisplayId() { - try { - return mIActivityContainer.getDisplayId(); - } catch (RemoteException e) { - return -1; - } + if (mSurface != null) { + mSurface.release(); + mSurface = null; } - boolean injectEvent(InputEvent event) { - try { - return mIActivityContainer.injectEvent(event); - } catch (RemoteException e) { - return false; - } + if (displayReleased && mActivityViewCallback != null) { + mActivityViewCallback.onActivityViewDestroyed(this); } - void release() { - synchronized (mGuard) { - if (mOpened) { - if (DEBUG) Log.v(TAG, "ActivityContainerWrapper: release called"); - try { - mIActivityContainer.release(); - mGuard.close(); - } catch (RemoteException e) { - } - mOpened = false; - } - } - } + mGuard.close(); + mOpened = false; + } - @Override - protected void finalize() throws Throwable { - if (DEBUG) Log.v(TAG, "ActivityContainerWrapper: finalize called"); - try { - if (mGuard != null) { - mGuard.warnIfOpen(); - release(); - } - } finally { - super.finalize(); + /** Get density of the hosting display. */ + private int getBaseDisplayDensity() { + final WindowManager wm = mContext.getSystemService(WindowManager.class); + final DisplayMetrics metrics = new DisplayMetrics(); + wm.getDefaultDisplay().getMetrics(metrics); + return metrics.densityDpi; + } + + @Override + protected void finalize() throws Throwable { + try { + if (mGuard != null) { + mGuard.warnIfOpen(); + performRelease(); } + } finally { + super.finalize(); } - } } diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java index 7fb5e2e7e442204c3741124f6b504dd550834fa8..156df36a600c0a23303f895039b3bf8631b12880 100644 --- a/core/java/android/app/Application.java +++ b/core/java/android/app/Application.java @@ -16,20 +16,17 @@ package android.app; +import java.util.ArrayList; + import android.annotation.CallSuper; -import android.app.backup.BackupAgent; -import android.content.BroadcastReceiver; import android.content.ComponentCallbacks; import android.content.ComponentCallbacks2; -import android.content.ContentProvider; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; -import java.util.ArrayList; - /** * Base class for maintaining global application state. You can provide your own * implementation by creating a subclass and specifying the fully-qualified name @@ -292,79 +289,4 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 { } } } - - /** - * Allows application to override the creation of activities. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @param intent Intent creating the class. - * @hide - */ - public Activity instantiateActivity(ClassLoader cl, String className, Intent intent) { - return null; - } - - /** - * Allows application to override the creation of receivers. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @param intent Intent creating the class. - * @hide - */ - public BroadcastReceiver instantiateReceiver(ClassLoader cl, String className, Intent intent) { - return null; - } - - /** - * Allows application to override the creation of services. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @param intent Intent creating the class. - * @hide - */ - public Service instantiateService(ClassLoader cl, String className, Intent intent) { - return null; - } - - /** - * Allows application to override the creation of providers. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @hide - */ - public ContentProvider instantiateProvider(ClassLoader cl, String className) { - return null; - } - - /** - * Allows application to override the creation of backup agents. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @hide - */ - public BackupAgent instantiateBackupAgent(ClassLoader cl, String className) { - return null; - } - - /** - * Allows application to override the creation of instrumentation. This can be used to - * perform things such as dependency injection or class loader changes to these - * classes. Return null to use the default creation flow. - * @param cl The default classloader to use for instantiation. - * @param className The class to be instantiated. - * @hide - */ - public Instrumentation instantiateInstrumentation(ClassLoader cl, String className) { - return null; - } } \ No newline at end of file diff --git a/core/java/android/app/ApplicationLoaders.java b/core/java/android/app/ApplicationLoaders.java index 2062930929a2781ed32668e4b484d5a0b011af88..b7c1f4e082e2b06e04b6586cd09dff243684d0c0 100644 --- a/core/java/android/app/ApplicationLoaders.java +++ b/core/java/android/app/ApplicationLoaders.java @@ -18,9 +18,8 @@ package android.app; import android.os.Build; import android.os.Trace; -import android.text.TextUtils; import android.util.ArrayMap; -import com.android.internal.os.PathClassLoaderFactory; +import com.android.internal.os.ClassLoaderFactory; import dalvik.system.PathClassLoader; /** @hide */ @@ -31,15 +30,16 @@ public class ApplicationLoaders { ClassLoader getClassLoader(String zip, int targetSdkVersion, boolean isBundled, String librarySearchPath, String libraryPermittedPath, - ClassLoader parent) { + ClassLoader parent, String classLoaderName) { // For normal usage the cache key used is the same as the zip path. return getClassLoader(zip, targetSdkVersion, isBundled, librarySearchPath, - libraryPermittedPath, parent, zip); + libraryPermittedPath, parent, zip, classLoaderName); } private ClassLoader getClassLoader(String zip, int targetSdkVersion, boolean isBundled, String librarySearchPath, String libraryPermittedPath, - ClassLoader parent, String cacheKey) { + ClassLoader parent, String cacheKey, + String classLoaderName) { /* * This is the parent we use if they pass "null" in. In theory * this should be the "system" class loader; in practice we @@ -66,28 +66,25 @@ public class ApplicationLoaders { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip); - PathClassLoader pathClassloader = PathClassLoaderFactory.createClassLoader( - zip, - librarySearchPath, - libraryPermittedPath, - parent, - targetSdkVersion, - isBundled); + ClassLoader classloader = ClassLoaderFactory.createClassLoader( + zip, librarySearchPath, libraryPermittedPath, parent, + targetSdkVersion, isBundled, classLoaderName); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setupVulkanLayerPath"); - setupVulkanLayerPath(pathClassloader, librarySearchPath); + setupVulkanLayerPath(classloader, librarySearchPath); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); - mLoaders.put(cacheKey, pathClassloader); - return pathClassloader; + mLoaders.put(cacheKey, classloader); + return classloader; } Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, zip); - PathClassLoader pathClassloader = new PathClassLoader(zip, parent); + ClassLoader loader = ClassLoaderFactory.createClassLoader( + zip, null, parent, classLoaderName); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); - return pathClassloader; + return loader; } } @@ -105,7 +102,7 @@ public class ApplicationLoaders { // The cache key is passed separately to enable the stub WebView to be cached under the // stub's APK path, when the actual package path is the donor APK. return getClassLoader(packagePath, Build.VERSION.SDK_INT, false, libsPath, null, null, - cacheKey); + cacheKey, null /* classLoaderName */); } private static native void setupVulkanLayerPath(ClassLoader classLoader, String librarySearchPath); @@ -122,7 +119,7 @@ public class ApplicationLoaders { baseDexClassLoader.addDexPath(dexPath); } - private final ArrayMap mLoaders = new ArrayMap(); + private final ArrayMap mLoaders = new ArrayMap<>(); private static final ApplicationLoaders gApplicationLoaders = new ApplicationLoaders(); } diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 7fc9a69a1f92074a4a44faf73dfe9fb33b701664..0eafdec6bb0fd6caefa9a14ac34bf732e589259c 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -31,7 +31,6 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ChangedPackages; import android.content.pm.ComponentInfo; -import android.content.pm.InstantAppInfo; import android.content.pm.FeatureInfo; import android.content.pm.IOnPermissionsChangeListener; import android.content.pm.IPackageDataObserver; @@ -40,6 +39,7 @@ import android.content.pm.IPackageInstallObserver; import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; +import android.content.pm.InstantAppInfo; import android.content.pm.InstrumentationInfo; import android.content.pm.IntentFilterVerificationInfo; import android.content.pm.KeySet; @@ -88,13 +88,14 @@ import android.util.LauncherIcons; import android.util.Log; import android.view.Display; -import dalvik.system.VMRuntime; - import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.SomeArgs; import com.android.internal.util.Preconditions; import com.android.internal.util.UserIcons; + +import dalvik.system.VMRuntime; + import libcore.util.EmptyArray; import java.lang.ref.WeakReference; @@ -705,6 +706,15 @@ public class ApplicationPackageManager extends PackageManager { } } + @Override + public String[] getNamesForUids(int[] uids) { + try { + return mPM.getNamesForUids(uids); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + @Override public int getUidForSharedUser(String sharedUserName) throws NameNotFoundException { diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 318c7ac3152280c9d3268492027ae754492c11bb..5f3432264ca0b392f8c98549f14efc81c84adc5a 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -60,11 +60,10 @@ import android.os.Looper; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; -import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; +import android.os.UserManager; import android.os.storage.IStorageManager; -import android.os.storage.StorageManager; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; @@ -75,6 +74,7 @@ import android.util.Log; import android.util.Slog; import android.view.Display; import android.view.DisplayAdjustments; +import android.view.autofill.AutofillManager.AutofillClient; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.Preconditions; @@ -186,6 +186,8 @@ class ContextImpl extends Context { // The name of the split this Context is representing. May be null. private @Nullable String mSplitName = null; + private AutofillClient mAutofillClient = null; + private final Object mSync = new Object(); @GuardedBy("mSync") @@ -370,13 +372,6 @@ class ContextImpl extends Context { return getSharedPreferences(file, mode); } - private boolean isBuggy() { - // STOPSHIP: fix buggy apps - if (SystemProperties.getBoolean("fw.ignore_buggy", false)) return false; - if ("com.google.android.tts".equals(getApplicationInfo().packageName)) return true; - return false; - } - @Override public SharedPreferences getSharedPreferences(File file, int mode) { SharedPreferencesImpl sp; @@ -387,9 +382,8 @@ class ContextImpl extends Context { checkMode(mode); if (getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.O) { if (isCredentialProtectedStorage() - && !getSystemService(StorageManager.class).isUserKeyUnlocked( - UserHandle.myUserId()) - && !isBuggy()) { + && !getSystemService(UserManager.class) + .isUserUnlockingOrUnlocked(UserHandle.myUserId())) { throw new IllegalStateException("SharedPreferences in credential encrypted " + "storage are not available until after user is unlocked"); } @@ -628,7 +622,8 @@ class ContextImpl extends Context { @Override public File getExternalFilesDir(String type) { // Operates on primary external storage - return getExternalFilesDirs(type)[0]; + final File[] dirs = getExternalFilesDirs(type); + return (dirs != null && dirs.length > 0) ? dirs[0] : null; } @Override @@ -645,7 +640,8 @@ class ContextImpl extends Context { @Override public File getObbDir() { // Operates on primary external storage - return getObbDirs()[0]; + final File[] dirs = getObbDirs(); + return (dirs != null && dirs.length > 0) ? dirs[0] : null; } @Override @@ -679,7 +675,8 @@ class ContextImpl extends Context { @Override public File getExternalCacheDir() { // Operates on primary external storage - return getExternalCacheDirs()[0]; + final File[] dirs = getExternalCacheDirs(); + return (dirs != null && dirs.length > 0) ? dirs[0] : null; } @Override @@ -2231,6 +2228,18 @@ class ContextImpl extends Context { return mUser.getIdentifier(); } + /** @hide */ + @Override + public AutofillClient getAutofillClient() { + return mAutofillClient; + } + + /** @hide */ + @Override + public void setAutofillClient(AutofillClient client) { + mAutofillClient = client; + } + static ContextImpl createSystemContext(ActivityThread mainThread) { LoadedApk packageInfo = new LoadedApk(mainThread); ContextImpl context = new ContextImpl(null, mainThread, packageInfo, null, null, null, 0, diff --git a/core/java/android/app/DexLoadReporter.java b/core/java/android/app/DexLoadReporter.java index 01c045b2d816b2139651bed1bcfac19b759b0e05..0643414727cfd4e03dc1432ceecdbac91a735744 100644 --- a/core/java/android/app/DexLoadReporter.java +++ b/core/java/android/app/DexLoadReporter.java @@ -122,7 +122,6 @@ import java.util.Set; } String packageName = ActivityThread.currentPackageName(); try { - // Notify only the paths of the first class loader for now. ActivityThread.getPackageManager().notifyDexLoad( packageName, classLoadersNames, classPaths, VMRuntime.getRuntime().vmInstructionSet()); diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index 5baaeb30e2335b92fa81ba3cb66518be4fa62345..b444f17c0b69175f5854d16ddbdbc35b582c77b3 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -18,9 +18,9 @@ package android.app; import android.annotation.Nullable; import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; import android.annotation.SystemService; -import android.annotation.SdkConstant.SdkConstantType; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; @@ -36,8 +36,8 @@ import android.os.Environment; import android.os.FileUtils; import android.os.ParcelFileDescriptor; import android.provider.Downloads; -import android.provider.Settings; import android.provider.MediaStore.Images; +import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.text.TextUtils; import android.util.Pair; @@ -393,7 +393,6 @@ public class DownloadManager { private int mFlags = 0; private boolean mIsVisibleInDownloadsUi = true; private boolean mScannable = false; - private boolean mUseSystemCache = false; /** if a file is designated as a MediaScanner scannable file, the following value is * stored in the database column {@link Downloads.Impl#COLUMN_MEDIA_SCANNED}. */ @@ -473,24 +472,6 @@ public class DownloadManager { return this; } - /** - * Set the local destination for the downloaded file to the system cache dir (/cache). - * This is only available to System apps with the permission - * {@link android.Manifest.permission#ACCESS_CACHE_FILESYSTEM}. - *

      - * The downloaded file is not scanned by MediaScanner. - * But it can be made scannable by calling {@link #allowScanningByMediaScanner()}. - *

      - * Files downloaded to /cache may be deleted by the system at any time to reclaim space. - * - * @return this object - * @hide - */ - public Request setDestinationToSystemCache() { - mUseSystemCache = true; - return this; - } - /** * Set the local destination for the downloaded file to a path within * the application's external files directory (as returned by @@ -772,13 +753,13 @@ public class DownloadManager { values.put(Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE, packageName); if (mDestinationUri != null) { - values.put(Downloads.Impl.COLUMN_DESTINATION, Downloads.Impl.DESTINATION_FILE_URI); - values.put(Downloads.Impl.COLUMN_FILE_NAME_HINT, mDestinationUri.toString()); + values.put(Downloads.Impl.COLUMN_DESTINATION, + Downloads.Impl.DESTINATION_FILE_URI); + values.put(Downloads.Impl.COLUMN_FILE_NAME_HINT, + mDestinationUri.toString()); } else { values.put(Downloads.Impl.COLUMN_DESTINATION, - (this.mUseSystemCache) ? - Downloads.Impl.DESTINATION_SYSTEMCACHE_PARTITION : - Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE); + Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE); } // is the file supposed to be media-scannable? values.put(Downloads.Impl.COLUMN_MEDIA_SCANNED, (mScannable) ? SCANNABLE_VALUE_YES : diff --git a/core/java/android/app/EphemeralResolverService.java b/core/java/android/app/EphemeralResolverService.java index bbd8ab3bcd8af9d9b7876f688bb9691122d484d3..427a0386e87c4f767295e4d0cc7a56c01a1a9965 100644 --- a/core/java/android/app/EphemeralResolverService.java +++ b/core/java/android/app/EphemeralResolverService.java @@ -40,6 +40,7 @@ import java.util.List; /** * Base class for implementing the resolver service. * @hide + * @removed * @deprecated use InstantAppResolverService instead */ @Deprecated diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java index 66dc6a193af1bb2bbb4a9c59de6479fa27308b6a..93773454424e750c284995e41edaf7adefc37823 100644 --- a/core/java/android/app/Fragment.java +++ b/core/java/android/app/Fragment.java @@ -42,7 +42,6 @@ import android.util.AndroidRuntimeException; import android.util.ArrayMap; import android.util.AttributeSet; import android.util.DebugUtils; -import android.util.Log; import android.util.SparseArray; import android.util.SuperNotCalledException; import android.view.ContextMenu; @@ -406,6 +405,11 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene // getLayoutInflater() LayoutInflater mLayoutInflater; + // Keep track of whether or not this Fragment has run performCreate(). Retained instance + // fragments can have mRetaining set to true without going through creation, so we must + // track it separately. + boolean mIsCreated; + /** * State information that has been retrieved from a fragment instance * through {@link FragmentManager#saveFragmentInstanceState(Fragment) @@ -2483,6 +2487,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene mState = CREATED; mCalled = false; onCreate(savedInstanceState); + mIsCreated = true; if (!mCalled) { throw new SuperNotCalledException("Fragment " + this + " did not call through to super.onCreate()"); @@ -2759,6 +2764,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene } mState = INITIALIZING; mCalled = false; + mIsCreated = false; onDestroy(); if (!mCalled) { throw new SuperNotCalledException("Fragment " + this diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java index 6cb987c228b560b8d96a3431689cd2c4dbe4ba85..0d5cd0214f373240b18e252c28161a87809a9078 100644 --- a/core/java/android/app/FragmentManager.java +++ b/core/java/android/app/FragmentManager.java @@ -679,7 +679,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate ArrayList mAvailBackStackIndices; ArrayList mBackStackChangeListeners; - CopyOnWriteArrayList> mLifecycleCallbacks; + final CopyOnWriteArrayList> + mLifecycleCallbacks = new CopyOnWriteArrayList<>(); int mCurState = Fragment.INITIALIZING; FragmentHostCallback mHost; @@ -1231,7 +1232,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } dispatchOnFragmentAttached(f, mHost.getContext(), false); - if (!f.mRetaining) { + if (!f.mIsCreated) { dispatchOnFragmentPreCreated(f, f.mSavedFragmentState, false); f.performCreate(f.mSavedFragmentState); dispatchOnFragmentCreated(f, f.mSavedFragmentState, false); @@ -1379,8 +1380,13 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate @Override public void onAnimationEnd(Animator anim) { container.endViewTransition(view); - if (fragment.getAnimatingAway() != null) { - fragment.setAnimatingAway(null); + Animator animator = f.getAnimatingAway(); + f.setAnimatingAway(null); + // If the animation finished immediately, the fragment's + // view will still be there. If so, we can just pretend + // there was no animation and skip the moveToState() + if (container.indexOfChild(view) == -1 + && animator != null) { moveToState(fragment, fragment.getStateAfterAnimating(), 0, 0, false); } @@ -3100,6 +3106,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater inflater) { + if (mCurState < Fragment.CREATED) { + return false; + } boolean show = false; ArrayList newMenus = null; for (int i = 0; i < mAdded.size(); i++) { @@ -3130,6 +3139,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public boolean dispatchPrepareOptionsMenu(Menu menu) { + if (mCurState < Fragment.CREATED) { + return false; + } boolean show = false; for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); @@ -3143,6 +3155,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public boolean dispatchOptionsItemSelected(MenuItem item) { + if (mCurState < Fragment.CREATED) { + return false; + } for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { @@ -3155,6 +3170,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public boolean dispatchContextItemSelected(MenuItem item) { + if (mCurState < Fragment.CREATED) { + return false; + } for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { @@ -3167,6 +3185,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public void dispatchOptionsMenuClosed(Menu menu) { + if (mCurState < Fragment.CREATED) { + return; + } for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { @@ -3191,17 +3212,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void registerFragmentLifecycleCallbacks(FragmentLifecycleCallbacks cb, boolean recursive) { - if (mLifecycleCallbacks == null) { - mLifecycleCallbacks = new CopyOnWriteArrayList<>(); - } - mLifecycleCallbacks.add(new Pair(cb, recursive)); + mLifecycleCallbacks.add(new Pair<>(cb, recursive)); } public void unregisterFragmentLifecycleCallbacks(FragmentLifecycleCallbacks cb) { - if (mLifecycleCallbacks == null) { - return; - } - synchronized (mLifecycleCallbacks) { for (int i = 0, N = mLifecycleCallbacks.size(); i < N; i++) { if (mLifecycleCallbacks.get(i).first == cb) { @@ -3220,9 +3234,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentPreAttached(f, context, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentPreAttached(this, f, context); @@ -3238,9 +3249,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentAttached(f, context, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentAttached(this, f, context); @@ -3257,9 +3265,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentPreCreated(f, savedInstanceState, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentPreCreated(this, f, savedInstanceState); @@ -3275,9 +3280,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentCreated(f, savedInstanceState, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentCreated(this, f, savedInstanceState); @@ -3294,9 +3296,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentActivityCreated(f, savedInstanceState, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentActivityCreated(this, f, savedInstanceState); @@ -3313,9 +3312,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentViewCreated(f, v, savedInstanceState, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentViewCreated(this, f, v, savedInstanceState); @@ -3331,9 +3327,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentStarted(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentStarted(this, f); @@ -3349,9 +3342,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentResumed(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentResumed(this, f); @@ -3367,9 +3357,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentPaused(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentPaused(this, f); @@ -3385,9 +3372,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentStopped(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentStopped(this, f); @@ -3403,9 +3387,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentSaveInstanceState(f, outState, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentSaveInstanceState(this, f, outState); @@ -3421,9 +3402,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentViewDestroyed(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentViewDestroyed(this, f); @@ -3439,9 +3417,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentDestroyed(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentDestroyed(this, f); @@ -3457,9 +3432,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate .dispatchOnFragmentDetached(f, true); } } - if (mLifecycleCallbacks == null) { - return; - } for (Pair p : mLifecycleCallbacks) { if (!onlyRecursive || p.second) { p.first.onFragmentDetached(this, f); diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 3ac026d70a6f97ff064b8c11d45179a2a7508c68..18117481b0eab38ccaffd23e0314e132d4fe86a7 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -20,8 +20,6 @@ import android.app.ActivityManager; import android.app.ApplicationErrorReport; import android.app.ContentProviderHolder; import android.app.IApplicationThread; -import android.app.IActivityContainer; -import android.app.IActivityContainerCallback; import android.app.IActivityController; import android.app.IAppTask; import android.app.IInstrumentationWatcher; @@ -277,8 +275,8 @@ interface IActivityManager { int checkGrantUriPermission(int callingUid, in String targetPkg, in Uri uri, int modeFlags, int userId); // Cause the specified process to dump the specified heap. - boolean dumpHeap(in String process, int userId, boolean managed, in String path, - in ParcelFileDescriptor fd); + boolean dumpHeap(in String process, int userId, boolean managed, boolean mallocInfo, + boolean runGc, in String path, in ParcelFileDescriptor fd); int startActivities(in IApplicationThread caller, in String callingPackage, in Intent[] intents, in String[] resolvedTypes, in IBinder resultTo, in Bundle options, int userId); @@ -310,7 +308,15 @@ interface IActivityManager { boolean shouldUpRecreateTask(in IBinder token, in String destAffinity); boolean navigateUpTo(in IBinder token, in Intent target, int resultCode, in Intent resultData); - void setLockScreenShown(boolean showing); + /** + * Informs ActivityManagerService that the keyguard is showing. + * + * @param showing True if the keyguard is showing, false otherwise. + * @param secondaryDisplayShowing The displayId of the secondary display on which the keyguard + * is showing, or INVALID_DISPLAY if there is no such display. Only meaningful if + * showing is true. + */ + void setLockScreenShown(boolean showing, int secondaryDisplayShowing); boolean finishActivityAffinity(in IBinder token); // This is not public because you need to be very careful in how you // manage your activity to make sure it is always the uid you expect. @@ -355,8 +361,6 @@ interface IActivityManager { void killUid(int appId, int userId, in String reason); void setUserIsMonkey(boolean monkey); void hang(in IBinder who, boolean allowRestart); - IActivityContainer createVirtualActivityContainer(in IBinder parentActivityToken, - in IActivityContainerCallback callback); void moveTaskToStack(int taskId, int stackId, boolean toTop); /** * Resizes the input stack id to the given bounds. @@ -380,7 +384,7 @@ interface IActivityManager { boolean convertFromTranslucent(in IBinder token); boolean convertToTranslucent(in IBinder token, in Bundle options); void notifyActivityDrawn(in IBinder token); - void reportActivityFullyDrawn(in IBinder token); + void reportActivityFullyDrawn(in IBinder token, boolean restoredFromBundle); void restart(); void performIdleMaintenance(); void takePersistableUriPermission(in Uri uri, int modeFlags, int userId); @@ -412,9 +416,6 @@ interface IActivityManager { void stopSystemLockTaskMode(); void finishVoiceTask(in IVoiceInteractionSession session); boolean isTopOfTask(in IBinder token); - boolean requestVisibleBehind(in IBinder token, boolean visible); - boolean isBackgroundVisibleBehind(in IBinder token); - void backgroundResourcesReleased(in IBinder token); void notifyLaunchTaskBehindComplete(in IBinder token); int startActivityFromRecents(int taskId, in Bundle options); void notifyEnterAnimationComplete(in IBinder token); @@ -439,7 +440,7 @@ interface IActivityManager { // Start of M transactions void notifyCleartextNetwork(int uid, in byte[] firstPacket); - IActivityContainer createStackOnDisplay(int displayId); + int createStackOnDisplay(int displayId); int getFocusedStackId(); void setTaskResizeable(int taskId, int resizeableMode); boolean requestAssistContextExtras(int requestType, in IResultReceiver receiver, @@ -636,4 +637,7 @@ interface IActivityManager { // side. If so, make sure they are using the correct transaction ids and arguments. // If a transaction which will also be used on the native side is being inserted, add it // alongside with other transactions of this kind at the top of this file. + + void setShowWhenLocked(in IBinder token, boolean showWhenLocked); + void setTurnScreenOn(in IBinder token, boolean turnScreenOn); } diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl index b3521c06ae9608451ec88c140f8ee9198d996b65..aeed7e1287d28c6ea108acae325d8bf86ade3d25 100644 --- a/core/java/android/app/IApplicationThread.aidl +++ b/core/java/android/app/IApplicationThread.aidl @@ -117,7 +117,8 @@ oneway interface IApplicationThread { void scheduleSuicide(); void dispatchPackageBroadcast(int cmd, in String[] packages); void scheduleCrash(in String msg); - void dumpHeap(boolean managed, in String path, in ParcelFileDescriptor fd); + void dumpHeap(boolean managed, boolean mallocInfo, boolean runGc, in String path, + in ParcelFileDescriptor fd); void dumpActivity(in ParcelFileDescriptor fd, IBinder servicetoken, in String prefix, in String[] args); void clearDnsCache(); @@ -140,8 +141,6 @@ oneway interface IApplicationThread { void setProcessState(int state); void scheduleInstallProvider(in ProviderInfo provider); void updateTimePrefs(int timeFormatPreference); - void scheduleCancelVisibleBehind(IBinder token); - void scheduleBackgroundVisibleBehindChanged(IBinder token, boolean enabled); void scheduleEnterAnimationComplete(IBinder token); void notifyCleartextNetwork(in byte[] firstPacket); void startBinderTracking(); diff --git a/core/java/android/app/IActivityContainer.aidl b/core/java/android/app/IInputForwarder.aidl similarity index 50% rename from core/java/android/app/IActivityContainer.aidl rename to core/java/android/app/IInputForwarder.aidl index 1ff3c87bef6e4d30f38d67923fd454ca5835a25d..d6be63eb54e5de0413eeac2264c93e004723a2e6 100644 --- a/core/java/android/app/IActivityContainer.aidl +++ b/core/java/android/app/IInputForwarder.aidl @@ -1,5 +1,5 @@ /** - * Copyright (c) 2013, The Android Open Source Project + * 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. @@ -16,21 +16,14 @@ package android.app; -import android.app.IActivityContainerCallback; -import android.content.Intent; -import android.content.IIntentSender; -import android.os.IBinder; import android.view.InputEvent; -import android.view.Surface; -/** @hide */ -interface IActivityContainer { - void addToDisplay(int displayId); - void setSurface(in Surface surface, int width, int height, int density); - int startActivity(in Intent intent); - int startActivityIntentSender(in IIntentSender intentSender); - int getDisplayId(); - int getStackId(); - boolean injectEvent(in InputEvent event); - void release(); -} +/** + * Forwards input events into owned activity container, used in {@link android.app.ActivityView}. + * To forward input to other apps {@link android.Manifest.permission.INJECT_EVENTS} permission is + * required. + * @hide + */ +interface IInputForwarder { + boolean forwardEvent(in InputEvent event); +} \ No newline at end of file diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 1c1883b3b7f50086f757c7c69888600392da3714..08821bebd57e1a7ab05ef4909a2320946562b8df 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -116,6 +116,16 @@ interface INotificationManager boolean matchesCallFilter(in Bundle extras); boolean isSystemConditionProviderEnabled(String path); + boolean isNotificationListenerAccessGranted(in ComponentName listener); + boolean isNotificationListenerAccessGrantedForUser(in ComponentName listener, int userId); + boolean isNotificationAssistantAccessGranted(in ComponentName assistant); + void setNotificationListenerAccessGranted(in ComponentName listener, boolean enabled); + void setNotificationAssistantAccessGranted(in ComponentName assistant, boolean enabled); + void setNotificationListenerAccessGrantedForUser(in ComponentName listener, int userId, boolean enabled); + void setNotificationAssistantAccessGrantedForUser(in ComponentName assistant, int userId, boolean enabled); + List getEnabledNotificationListenerPackages(); + List getEnabledNotificationListeners(int userId); + int getZenMode(); ZenModeConfig getZenModeConfig(); oneway void setZenMode(int mode, in Uri conditionId, String reason); @@ -123,7 +133,6 @@ interface INotificationManager boolean isNotificationPolicyAccessGranted(String pkg); NotificationManager.Policy getNotificationPolicy(String pkg); void setNotificationPolicy(String pkg, in NotificationManager.Policy policy); - String[] getPackagesRequestingNotificationPolicyAccess(); boolean isNotificationPolicyAccessGrantedForPackage(String pkg); void setNotificationPolicyAccessGranted(String pkg, boolean granted); AutomaticZenRule getAutomaticZenRule(String id); diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl index b5b101773f15336f253e9d7f59a7de1e182104cc..a56965bdbd4d6722a269754ce1e32c8119750a20 100644 --- a/core/java/android/app/ITaskStackListener.aidl +++ b/core/java/android/app/ITaskStackListener.aidl @@ -30,7 +30,7 @@ oneway interface ITaskStackListener { void onTaskStackChanged(); /** Called whenever an Activity is moved to the pinned stack from another stack. */ - void onActivityPinned(String packageName, int taskId); + void onActivityPinned(String packageName, int userId, int taskId); /** Called whenever an Activity is moved from the pinned stack to another stack. */ void onActivityUnpinned(); diff --git a/core/java/android/app/IUidObserver.aidl b/core/java/android/app/IUidObserver.aidl index ae64875c45d8bcee4a0baf20b5f79d24e36ae4b5..01a9cbf56c35de191eb2fffe31693ddc7435e10b 100644 --- a/core/java/android/app/IUidObserver.aidl +++ b/core/java/android/app/IUidObserver.aidl @@ -43,4 +43,14 @@ oneway interface IUidObserver { * a sufficient period of time, or all of its processes have gone away. */ void onUidIdle(int uid, boolean disabled); + + /** + * Report when the cached state of a uid has changed. + * If true, a uid has become cached -- that is, it has some active processes that are + * all in the cached state. It should be doing as little as possible at this point. + * If false, that a uid is no longer cached. This will only be called after + * onUidCached() has been reported true. It will happen when either one of its actively + * running processes is no longer cached, or it no longer has any actively running processes. + */ + void onUidCachedChanged(int uid, boolean cached); } diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl index 7ac22233ecf84a949061766705501bee4b044170..49d58eb2c38d7716af1dc1687bd98498600db3fa 100644 --- a/core/java/android/app/IWallpaperManager.aidl +++ b/core/java/android/app/IWallpaperManager.aidl @@ -60,7 +60,7 @@ interface IWallpaperManager { /** * Get the wallpaper for a given user. */ - ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb, int which, + ParcelFileDescriptor getWallpaper(String callingPkg, IWallpaperManagerCallback cb, int which, out Bundle outParams, int userId); /** diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index 467fc952ffee2b9235e70fc846aaf85d13ac47c2..e260967f92d070970c2ff789398c60381b4ac0b7 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -48,6 +48,7 @@ import android.view.KeyEvent; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.view.Window; + import com.android.internal.content.ReferrerIntent; import java.io.File; @@ -1305,7 +1306,7 @@ public class Instrumentation { * @param intent The new intent being received. */ public void callActivityOnNewIntent(Activity activity, Intent intent) { - activity.onNewIntent(intent); + activity.performNewIntent(intent); } /** diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java index 16b21f15353ea7e662f20fadcc4d054d6dcc1381..54f74b15c50127e3297b0622b8648279fbda17d4 100644 --- a/core/java/android/app/KeyguardManager.java +++ b/core/java/android/app/KeyguardManager.java @@ -174,7 +174,7 @@ public class KeyguardManager { */ public Intent createConfirmFactoryResetCredentialIntent( CharSequence title, CharSequence description, CharSequence alternateButtonLabel) { - if (!LockPatternUtils.frpCredentialEnabled()) { + if (!LockPatternUtils.frpCredentialEnabled(mContext)) { Log.w(TAG, "Factory reset credentials not supported."); return null; } @@ -298,7 +298,9 @@ public class KeyguardManager { } /** - * Callback passed to {@link KeyguardManager#dismissKeyguard} to notify caller of result. + * Callback passed to + * {@link KeyguardManager#requestDismissKeyguard(Activity, KeyguardDismissCallback)} + * to notify caller of result. */ public static abstract class KeyguardDismissCallback { @@ -461,6 +463,9 @@ public class KeyguardManager { *

      * If the Keyguard is secure and the device is not in a trusted state, this will bring up the * UI so the user can enter their credentials. + *

      + * If the value set for the {@link Activity} attr {@link android.R.attr#turnScreenOn} is true, + * the screen will turn on when the keyguard is dismissed. * * @param activity The activity requesting the dismissal. The activity must be either visible * by using {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} or must be in a state in diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index 79e5407a17d3c22418b90d6251215f8939d9620e..f6d9710dae697f1505b4bea0f33b5a0cb78e51a2 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -97,7 +97,6 @@ public final class LoadedApk { private String mAppDir; private String mResDir; private String[] mOverlayDirs; - private String[] mSharedLibraries; private String mDataDir; private String mLibDir; private File mDataDirFile; @@ -116,6 +115,7 @@ public final class LoadedApk { private String[] mSplitNames; private String[] mSplitAppDirs; private String[] mSplitResDirs; + private String[] mSplitClassLoaderNames; private final ArrayMap> mReceivers = new ArrayMap<>(); @@ -126,8 +126,6 @@ public final class LoadedApk { private final ArrayMap> mUnboundServices = new ArrayMap<>(); - int mClientCount = 0; - Application getApplication() { return mApplication; } @@ -192,8 +190,8 @@ public final class LoadedApk { mResDir = null; mSplitAppDirs = null; mSplitResDirs = null; + mSplitClassLoaderNames = null; mOverlayDirs = null; - mSharedLibraries = null; mDataDir = null; mDataDirFile = null; mDeviceProtectedDataDirFile = null; @@ -324,7 +322,6 @@ public final class LoadedApk { mAppDir = aInfo.sourceDir; mResDir = aInfo.uid == myUid ? aInfo.sourceDir : aInfo.publicSourceDir; mOverlayDirs = aInfo.resourceDirs; - mSharedLibraries = aInfo.sharedLibraryFiles; mDataDir = aInfo.dataDir; mLibDir = aInfo.nativeLibraryDir; mDataDirFile = FileUtils.newFileOrNull(aInfo.dataDir); @@ -334,6 +331,7 @@ public final class LoadedApk { mSplitNames = aInfo.splitNames; mSplitAppDirs = aInfo.splitSourceDirs; mSplitResDirs = aInfo.uid == myUid ? aInfo.splitSourceDirs : aInfo.splitPublicSourceDirs; + mSplitClassLoaderNames = aInfo.splitClassLoaderNames; if (aInfo.requestsIsolatedSplitLoading() && !ArrayUtils.isEmpty(mSplitNames)) { mSplitLoader = new SplitDependencyLoaderImpl(aInfo.splitDependencies); @@ -530,7 +528,8 @@ public final class LoadedApk { // Since we handled the special base case above, parentSplitIdx is always valid. final ClassLoader parent = mCachedClassLoaders[parentSplitIdx]; mCachedClassLoaders[splitIdx] = ApplicationLoaders.getDefault().getClassLoader( - mSplitAppDirs[splitIdx - 1], getTargetSdkVersion(), false, null, null, parent); + mSplitAppDirs[splitIdx - 1], getTargetSdkVersion(), false, null, null, parent, + mSplitClassLoaderNames[splitIdx - 1]); Collections.addAll(splitPaths, mCachedResourcePaths[parentSplitIdx]); splitPaths.add(mSplitResDirs[splitIdx - 1]); @@ -626,17 +625,31 @@ public final class LoadedApk { final List zipPaths = new ArrayList<>(10); final List libPaths = new ArrayList<>(10); - final boolean isBundledApp = mApplicationInfo.isSystemApp() + boolean isBundledApp = mApplicationInfo.isSystemApp() && !mApplicationInfo.isUpdatedSystemApp(); + // Vendor apks are treated as bundled only when /vendor/lib is in the default search + // paths. If not, they are treated as unbundled; access to system libs is limited. + // Having /vendor/lib in the default search paths means that all system processes + // are allowed to use any vendor library, which in turn means that system is dependent + // on vendor partition. In the contrary, not having /vendor/lib in the default search + // paths mean that the two partitions are separated and thus we can treat vendor apks + // as unbundled. + final String defaultSearchPaths = System.getProperty("java.library.path"); + final boolean treatVendorApkAsUnbundled = !defaultSearchPaths.contains("/vendor/lib"); + if (mApplicationInfo.getCodePath() != null + && mApplicationInfo.getCodePath().startsWith("/vendor/") + && treatVendorApkAsUnbundled) { + isBundledApp = false; + } + makePaths(mActivityThread, isBundledApp, mApplicationInfo, zipPaths, libPaths); String libraryPermittedPath = mDataDir; if (isBundledApp) { // This is necessary to grant bundled apps access to // libraries located in subdirectories of /system/lib - libraryPermittedPath += File.pathSeparator + - System.getProperty("java.library.path"); + libraryPermittedPath += File.pathSeparator + defaultSearchPaths; } final String librarySearchPath = TextUtils.join(File.pathSeparator, libPaths); @@ -650,8 +663,9 @@ public final class LoadedApk { if (mClassLoader == null) { StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); mClassLoader = ApplicationLoaders.getDefault().getClassLoader( - "" /* codePath */, mApplicationInfo.targetSdkVersion, isBundledApp, - librarySearchPath, libraryPermittedPath, mBaseClassLoader); + "" /* codePath */, mApplicationInfo.targetSdkVersion, isBundledApp, + librarySearchPath, libraryPermittedPath, mBaseClassLoader, + null /* classLoaderName */); StrictMode.setThreadPolicy(oldPolicy); } @@ -678,7 +692,8 @@ public final class LoadedApk { mClassLoader = ApplicationLoaders.getDefault().getClassLoader(zip, mApplicationInfo.targetSdkVersion, isBundledApp, librarySearchPath, - libraryPermittedPath, mBaseClassLoader); + libraryPermittedPath, mBaseClassLoader, + mApplicationInfo.classLoaderName); StrictMode.setThreadPolicy(oldPolicy); // Setup the class loader paths for profiling. diff --git a/core/java/android/app/MediaRouteButton.java b/core/java/android/app/MediaRouteButton.java index d2d7b6d9fa62b34e547ff9b28b1d266edb00607e..a4a89fa3d1a6773a791317f1c2ac70d77a1d4275 100644 --- a/core/java/android/app/MediaRouteButton.java +++ b/core/java/android/app/MediaRouteButton.java @@ -24,6 +24,7 @@ import android.content.Context; import android.content.ContextWrapper; import android.content.res.TypedArray; import android.graphics.Canvas; +import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.media.MediaRouter; import android.media.MediaRouter.RouteGroup; @@ -339,28 +340,42 @@ public class MediaRouteButton extends View { } private void refreshRoute() { - if (mAttachedToWindow) { - final MediaRouter.RouteInfo route = mRouter.getSelectedRoute(); - final boolean isRemote = !route.isDefault() && route.matchesTypes(mRouteTypes); - final boolean isConnecting = isRemote && route.isConnecting(); - - boolean needsRefresh = false; - if (mRemoteActive != isRemote) { - mRemoteActive = isRemote; - needsRefresh = true; - } - if (mIsConnecting != isConnecting) { - mIsConnecting = isConnecting; - needsRefresh = true; - } - - if (needsRefresh) { - refreshDrawableState(); - } + final MediaRouter.RouteInfo route = mRouter.getSelectedRoute(); + final boolean isRemote = !route.isDefault() && route.matchesTypes(mRouteTypes); + final boolean isConnecting = isRemote && route.isConnecting(); + boolean needsRefresh = false; + if (mRemoteActive != isRemote) { + mRemoteActive = isRemote; + needsRefresh = true; + } + if (mIsConnecting != isConnecting) { + mIsConnecting = isConnecting; + needsRefresh = true; + } + if (needsRefresh) { + refreshDrawableState(); + } + if (mAttachedToWindow) { setEnabled(mRouter.isRouteAvailable(mRouteTypes, MediaRouter.AVAILABILITY_FLAG_IGNORE_DEFAULT_ROUTE)); } + if (mRemoteIndicator != null + && mRemoteIndicator.getCurrent() instanceof AnimationDrawable) { + AnimationDrawable curDrawable = (AnimationDrawable) mRemoteIndicator.getCurrent(); + if (mAttachedToWindow) { + if ((needsRefresh || isConnecting) && !curDrawable.isRunning()) { + curDrawable.start(); + } + } else if (isRemote && !isConnecting) { + // When the route is already connected before the view is attached, show the last + // frame of the connected animation immediately. + if (curDrawable.isRunning()) { + curDrawable.stop(); + } + curDrawable.selectDrawable(curDrawable.getNumberOfFrames() - 1); + } + } } private final class MediaRouterCallback extends MediaRouter.SimpleCallback { diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 531afa4c9b58a5fde7b48aff65b8701e69e5beaf..7caeca3da6f80494d8e5a1999504b9e2b6309a0a 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -33,6 +33,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ShortcutInfo; import android.content.res.ColorStateList; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -59,7 +60,6 @@ import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; import android.text.style.AbsoluteSizeSpan; -import android.text.style.BackgroundColorSpan; import android.text.style.CharacterStyle; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; @@ -1163,7 +1163,8 @@ public class Notification implements Parcelable * Constant for {@link Builder#setGroupAlertBehavior(int)}, meaning that all children * notification in a group should be silenced (no sound or vibration) even if they are posted * to a {@link NotificationChannel} that has sound and/or vibration. Use this constant to - * mute this notification if this notification is a group child. + * mute this notification if this notification is a group child. This must be applied to all + * children notifications you want to mute. * *

      For example, you might want to use this constant if you post a number of children * notifications at once (say, after a periodic sync), and only need to notify the user @@ -1178,7 +1179,8 @@ public class Notification implements Parcelable * to mute this notification if this notification is a group summary. * *

      For example, you might want to use this constant if only the children notifications - * in your group have content and the summary is only used to visually group notifications. + * in your group have content and the summary is only used to visually group notifications + * rather than to alert the user that new information is available. */ public static final int GROUP_ALERT_CHILDREN = 2; @@ -2779,6 +2781,9 @@ public class Notification implements Parcelable private ArrayList mOriginalActions; private boolean mRebuildStyledRemoteViews; + private boolean mTintActionButtons; + private boolean mInNightMode; + /** * Constructs a new Builder with the defaults: * @@ -2810,6 +2815,14 @@ public class Notification implements Parcelable */ public Builder(Context context, Notification toAdopt) { mContext = context; + Resources res = mContext.getResources(); + mTintActionButtons = res.getBoolean(R.bool.config_tintNotificationActionButtons); + + if (res.getBoolean(R.bool.config_enableNightMode)) { + Configuration currentConfig = res.getConfiguration(); + mInNightMode = (currentConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) + == Configuration.UI_MODE_NIGHT_YES; + } if (toAdopt == null) { mN = new Notification(); @@ -2902,7 +2915,9 @@ public class Notification implements Parcelable * Sets the group alert behavior for this notification. Use this method to mute this * notification if alerts for this notification's group should be handled by a different * notification. This is only applicable for notifications that belong to a - * {@link #setGroup(String) group}. + * {@link #setGroup(String) group}. This must be called on all notifications you want to + * mute. For example, if you want only the summary of your group to make noise, all + * children in the group should have the group alert behavior {@link #GROUP_ALERT_SUMMARY}. * *

      The default value is {@link #GROUP_ALERT_ALL}.

      */ @@ -3882,7 +3897,7 @@ public class Notification implements Parcelable boolean showProgress = handleProgressBar(p.hasProgress, contentView, ex); if (p.title != null) { contentView.setViewVisibility(R.id.title, View.VISIBLE); - contentView.setTextViewText(R.id.title, p.title); + contentView.setTextViewText(R.id.title, processTextSpans(p.title)); if (!p.ambient) { setTextViewColorPrimary(contentView, R.id.title); } @@ -3893,7 +3908,7 @@ public class Notification implements Parcelable if (p.text != null) { int textId = showProgress ? com.android.internal.R.id.text_line_1 : com.android.internal.R.id.text; - contentView.setTextViewText(textId, p.text); + contentView.setTextViewText(textId, processTextSpans(p.text)); if (!p.ambient) { setTextViewColorSecondary(contentView, textId); } @@ -3905,11 +3920,22 @@ public class Notification implements Parcelable return contentView; } + private CharSequence processTextSpans(CharSequence text) { + if (hasForegroundColor()) { + return NotificationColorUtil.clearColorSpans(text); + } + return text; + } + private void setTextViewColorPrimary(RemoteViews contentView, int id) { ensureColors(); contentView.setTextColor(id, mPrimaryTextColor); } + private boolean hasForegroundColor() { + return mForegroundColor != COLOR_INVALID; + } + /** * @return the primary text color * @hide @@ -3952,7 +3978,7 @@ public class Notification implements Parcelable || mActionBarColor == COLOR_INVALID || mTextColorsAreForBackground != backgroundColor) { mTextColorsAreForBackground = backgroundColor; - if (mForegroundColor == COLOR_INVALID || !isColorized()) { + if (!hasForegroundColor() || !isColorized()) { mPrimaryTextColor = NotificationColorUtil.resolvePrimaryColor(mContext, backgroundColor); mSecondaryTextColor = NotificationColorUtil.resolveSecondaryColor(mContext, @@ -4203,7 +4229,8 @@ public class Notification implements Parcelable } if (headerText != null) { // TODO: Remove the span entirely to only have the string with propper formating. - contentView.setTextViewText(R.id.header_text, processLegacyText(headerText)); + contentView.setTextViewText(R.id.header_text, processTextSpans( + processLegacyText(headerText))); setTextViewColorSecondary(contentView, R.id.header_text); contentView.setViewVisibility(R.id.header_text, View.VISIBLE); contentView.setViewVisibility(R.id.header_text_divider, View.VISIBLE); @@ -4334,18 +4361,21 @@ public class Notification implements Parcelable if (!p.ambient && validRemoteInput && replyText != null && replyText.length > 0 && !TextUtils.isEmpty(replyText[0])) { big.setViewVisibility(R.id.notification_material_reply_container, View.VISIBLE); - big.setTextViewText(R.id.notification_material_reply_text_1, replyText[0]); + big.setTextViewText(R.id.notification_material_reply_text_1, + processTextSpans(replyText[0])); setTextViewColorSecondary(big, R.id.notification_material_reply_text_1); if (replyText.length > 1 && !TextUtils.isEmpty(replyText[1])) { big.setViewVisibility(R.id.notification_material_reply_text_2, View.VISIBLE); - big.setTextViewText(R.id.notification_material_reply_text_2, replyText[1]); + big.setTextViewText(R.id.notification_material_reply_text_2, + processTextSpans(replyText[1])); setTextViewColorSecondary(big, R.id.notification_material_reply_text_2); if (replyText.length > 2 && !TextUtils.isEmpty(replyText[2])) { big.setViewVisibility( R.id.notification_material_reply_text_3, View.VISIBLE); - big.setTextViewText(R.id.notification_material_reply_text_3, replyText[2]); + big.setTextViewText(R.id.notification_material_reply_text_3, + processTextSpans(replyText[2])); setTextViewColorSecondary(big, R.id.notification_material_reply_text_3); } } @@ -4652,25 +4682,26 @@ public class Notification implements Parcelable CharSequence title = action.title; ColorStateList[] outResultColor = null; if (isLegacy()) { - title = clearColorSpans(title); + title = NotificationColorUtil.clearColorSpans(title); } else { outResultColor = new ColorStateList[1]; title = ensureColorSpanContrast(title, bgColor, outResultColor); } - button.setTextViewText(R.id.action0, title); + button.setTextViewText(R.id.action0, processTextSpans(title)); setTextViewColorPrimary(button, R.id.action0); if (outResultColor != null && outResultColor[0] != null) { // We need to set the text color as well since changing a text to uppercase // clears its spans. button.setTextColor(R.id.action0, outResultColor[0]); - } else if (mN.color != COLOR_DEFAULT && !isColorized()) { + } else if (mN.color != COLOR_DEFAULT && !isColorized() && mTintActionButtons) { button.setTextColor(R.id.action0,resolveContrastColor()); } } else { - button.setTextViewText(R.id.action0, processLegacyText(action.title)); + button.setTextViewText(R.id.action0, processTextSpans( + processLegacyText(action.title))); if (isColorized() && !ambient) { setTextViewColorPrimary(button, R.id.action0); - } else if (mN.color != COLOR_DEFAULT) { + } else if (mN.color != COLOR_DEFAULT && mTintActionButtons) { button.setTextColor(R.id.action0, ambient ? resolveAmbientColor() : resolveContrastColor()); } @@ -4678,45 +4709,6 @@ public class Notification implements Parcelable return button; } - /** - * Clears all color spans of a text - * @param charSequence the input text - * @return the same text but without color spans - */ - private CharSequence clearColorSpans(CharSequence charSequence) { - if (charSequence instanceof Spanned) { - Spanned ss = (Spanned) charSequence; - Object[] spans = ss.getSpans(0, ss.length(), Object.class); - SpannableStringBuilder builder = new SpannableStringBuilder(ss.toString()); - for (Object span : spans) { - Object resultSpan = span; - if (resultSpan instanceof CharacterStyle) { - resultSpan = ((CharacterStyle) span).getUnderlying(); - } - if (resultSpan instanceof TextAppearanceSpan) { - TextAppearanceSpan originalSpan = (TextAppearanceSpan) resultSpan; - if (originalSpan.getTextColor() != null) { - resultSpan = new TextAppearanceSpan( - originalSpan.getFamily(), - originalSpan.getTextStyle(), - originalSpan.getTextSize(), - null, - originalSpan.getLinkTextColor()); - } - } else if (resultSpan instanceof ForegroundColorSpan - || (resultSpan instanceof BackgroundColorSpan)) { - continue; - } else { - resultSpan = span; - } - builder.setSpan(resultSpan, ss.getSpanStart(span), ss.getSpanEnd(span), - ss.getSpanFlags(span)); - } - return builder; - } - return charSequence; - } - /** * Ensures contrast on color spans against a background color. also returns the color of the * text if a span was found that spans over the whole text. @@ -4749,7 +4741,7 @@ public class Notification implements Parcelable int[] newColors = new int[colors.length]; for (int i = 0; i < newColors.length; i++) { newColors[i] = NotificationColorUtil.ensureLargeTextContrast( - colors[i], background); + colors[i], background, mInNightMode); } textColor = new ColorStateList(textColor.getStates().clone(), newColors); @@ -4768,7 +4760,7 @@ public class Notification implements Parcelable ForegroundColorSpan originalSpan = (ForegroundColorSpan) resultSpan; int foregroundColor = originalSpan.getForegroundColor(); foregroundColor = NotificationColorUtil.ensureLargeTextContrast( - foregroundColor, background); + foregroundColor, background, mInNightMode); resultSpan = new ForegroundColorSpan(foregroundColor); if (fullLength) { outResultColor[0] = ColorStateList.valueOf(foregroundColor); @@ -4863,7 +4855,7 @@ public class Notification implements Parcelable color = mSecondaryTextColor; } else { color = NotificationColorUtil.resolveContrastColor(mContext, mN.color, - background); + background, mInNightMode); } if (Color.alpha(color) < 255) { // alpha doesn't go well for color filters, so let's blend it manually @@ -4958,7 +4950,6 @@ public class Notification implements Parcelable mStyle.purgeResources(); mStyle.buildStyled(mN); } - mN.reduceImageSizes(mContext); if (mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N @@ -5003,18 +4994,20 @@ public class Notification implements Parcelable /** * Removes RemoteViews that were created for compatibility from {@param n}, if they did not - * change. + * change. Also removes extenders on low ram devices, as + * {@link android.service.notification.NotificationListenerService} services are disabled. * * @return {@param n}, if no stripping is needed, otherwise a stripped clone of {@param n}. * * @hide */ - public static Notification maybeCloneStrippedForDelivery(Notification n) { + public static Notification maybeCloneStrippedForDelivery(Notification n, boolean isLowRam) { String templateClass = n.extras.getString(EXTRA_TEMPLATE); // Only strip views for known Styles because we won't know how to // re-create them otherwise. - if (!TextUtils.isEmpty(templateClass) + if (!isLowRam + && !TextUtils.isEmpty(templateClass) && getNotificationStyleClass(templateClass) == null) { return n; } @@ -5031,7 +5024,8 @@ public class Notification implements Parcelable n.headsUpContentView.getSequenceNumber(); // Nothing to do here, no need to clone. - if (!stripContentView && !stripBigContentView && !stripHeadsUpContentView) { + if (!isLowRam + && !stripContentView && !stripBigContentView && !stripHeadsUpContentView) { return n; } @@ -5048,6 +5042,11 @@ public class Notification implements Parcelable clone.headsUpContentView = null; clone.extras.remove(EXTRA_REBUILD_HEADS_UP_CONTENT_VIEW_ACTION_COUNT); } + if (isLowRam) { + clone.extras.remove(Notification.TvExtender.EXTRA_TV_EXTENDER); + clone.extras.remove(WearableExtender.EXTRA_WEARABLE_EXTENSIONS); + clone.extras.remove(CarExtender.EXTRA_CAR_EXTENDER); + } return clone; } @@ -5100,6 +5099,10 @@ public class Notification implements Parcelable return mN.isColorized(); } + private boolean shouldTintActionButtons() { + return mTintActionButtons; + } + private boolean textColorsNeedInversion() { if (mStyle == null || !MediaStyle.class.equals(mStyle.getClass())) { return false; @@ -5159,17 +5162,22 @@ public class Notification implements Parcelable if (extras.getBoolean(EXTRA_REDUCED_IMAGES)) { return; } + boolean isLowRam = ActivityManager.isLowRamDeviceStatic(); if (mLargeIcon != null || largeIcon != null) { Resources resources = context.getResources(); Class style = getNotificationStyle(); - int maxWidth = resources.getDimensionPixelSize(R.dimen.notification_right_icon_size); + int maxWidth = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_right_icon_size_low_ram + : R.dimen.notification_right_icon_size); int maxHeight = maxWidth; if (MediaStyle.class.equals(style) || DecoratedMediaCustomViewStyle.class.equals(style)) { - maxHeight = resources.getDimensionPixelSize( - R.dimen.notification_media_image_max_height); - maxWidth = resources.getDimensionPixelSize( - R.dimen.notification_media_image_max_width); + maxHeight = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_media_image_max_height_low_ram + : R.dimen.notification_media_image_max_height); + maxWidth = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_media_image_max_width_low_ram + : R.dimen.notification_media_image_max_width); } if (mLargeIcon != null) { mLargeIcon.scaleDownIfNecessary(maxWidth, maxHeight); @@ -5178,19 +5186,22 @@ public class Notification implements Parcelable largeIcon = Icon.scaleDownIfNecessary(largeIcon, maxWidth, maxHeight); } } - reduceImageSizesForRemoteView(contentView, context); - reduceImageSizesForRemoteView(headsUpContentView, context); - reduceImageSizesForRemoteView(bigContentView, context); + reduceImageSizesForRemoteView(contentView, context, isLowRam); + reduceImageSizesForRemoteView(headsUpContentView, context, isLowRam); + reduceImageSizesForRemoteView(bigContentView, context, isLowRam); extras.putBoolean(EXTRA_REDUCED_IMAGES, true); } - private void reduceImageSizesForRemoteView(RemoteViews remoteView, Context context) { + private void reduceImageSizesForRemoteView(RemoteViews remoteView, Context context, + boolean isLowRam) { if (remoteView != null) { Resources resources = context.getResources(); - int maxWidth = resources.getDimensionPixelSize( - R.dimen.notification_custom_view_max_image_width); - int maxHeight = resources.getDimensionPixelSize( - R.dimen.notification_custom_view_max_image_height); + int maxWidth = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_custom_view_max_image_width_low_ram + : R.dimen.notification_custom_view_max_image_width); + int maxHeight = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_custom_view_max_image_height_low_ram + : R.dimen.notification_custom_view_max_image_height); remoteView.reduceImageSizes(maxWidth, maxHeight); } } @@ -5301,7 +5312,7 @@ public class Notification implements Parcelable } /** - * @hide + * @removed */ @SystemApi public static Class getNotificationStyleClass(String templateClass) { @@ -5606,16 +5617,20 @@ public class Notification implements Parcelable public void reduceImageSizes(Context context) { super.reduceImageSizes(context); Resources resources = context.getResources(); + boolean isLowRam = ActivityManager.isLowRamDeviceStatic(); if (mPicture != null) { - int maxPictureWidth = resources.getDimensionPixelSize( - R.dimen.notification_big_picture_max_height); - int maxPictureHeight = resources.getDimensionPixelSize( - R.dimen.notification_big_picture_max_width); + int maxPictureWidth = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_big_picture_max_height_low_ram + : R.dimen.notification_big_picture_max_height); + int maxPictureHeight = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_big_picture_max_width_low_ram + : R.dimen.notification_big_picture_max_width); mPicture = Icon.scaleDownIfNecessary(mPicture, maxPictureWidth, maxPictureHeight); } if (mBigLargeIcon != null) { - int rightIconSize = resources.getDimensionPixelSize( - R.dimen.notification_right_icon_size); + int rightIconSize = resources.getDimensionPixelSize(isLowRam + ? R.dimen.notification_right_icon_size_low_ram + : R.dimen.notification_right_icon_size); mBigLargeIcon.scaleDownIfNecessary(rightIconSize, rightIconSize); } } @@ -5643,7 +5658,8 @@ public class Notification implements Parcelable RemoteViews contentView = getStandardView(mBuilder.getBigPictureLayoutResource()); if (mSummaryTextSet) { - contentView.setTextViewText(R.id.text, mBuilder.processLegacyText(mSummaryText)); + contentView.setTextViewText(R.id.text, mBuilder.processTextSpans( + mBuilder.processLegacyText(mSummaryText))); mBuilder.setTextViewColorSecondary(contentView, R.id.text); contentView.setViewVisibility(R.id.text, View.VISIBLE); } @@ -5825,7 +5841,7 @@ public class Notification implements Parcelable static void applyBigTextContentView(Builder builder, RemoteViews contentView, CharSequence bigTextText) { - contentView.setTextViewText(R.id.big_text, bigTextText); + contentView.setTextViewText(R.id.big_text, builder.processTextSpans(bigTextText)); builder.setTextViewColorSecondary(contentView, R.id.big_text); contentView.setViewVisibility(R.id.big_text, TextUtils.isEmpty(bigTextText) ? View.GONE : View.VISIBLE); @@ -6160,7 +6176,8 @@ public class Notification implements Parcelable int rowId = rowIds[i]; contentView.setViewVisibility(rowId, View.VISIBLE); - contentView.setTextViewText(rowId, makeMessageLine(m, mBuilder)); + contentView.setTextViewText(rowId, mBuilder.processTextSpans( + makeMessageLine(m, mBuilder))); mBuilder.setTextViewColorSecondary(contentView, rowId); if (contractedMessage == m) { @@ -6187,6 +6204,8 @@ public class Notification implements Parcelable BidiFormatter bidi = BidiFormatter.getInstance(); SpannableStringBuilder sb = new SpannableStringBuilder(); boolean colorize = builder.isColorized(); + TextAppearanceSpan colorSpan; + CharSequence messageName; if (TextUtils.isEmpty(m.mSender)) { CharSequence replyName = mUserDisplayName == null ? "" : mUserDisplayName; sb.append(bidi.unicodeWrap(replyName), @@ -6524,7 +6543,8 @@ public class Notification implements Parcelable CharSequence str = mTexts.get(i); if (!TextUtils.isEmpty(str)) { contentView.setViewVisibility(rowIds[i], View.VISIBLE); - contentView.setTextViewText(rowIds[i], mBuilder.processLegacyText(str)); + contentView.setTextViewText(rowIds[i], + mBuilder.processTextSpans(mBuilder.processLegacyText(str))); mBuilder.setTextViewColorSecondary(contentView, rowIds[i]); contentView.setViewPadding(rowIds[i], 0, topPadding, 0, 0); handleInboxImageMargin(contentView, rowIds[i], first); @@ -6715,8 +6735,16 @@ public class Notification implements Parcelable RemoteViews button = new BuilderRemoteViews(mBuilder.mContext.getApplicationInfo(), R.layout.notification_material_media_action); button.setImageViewIcon(R.id.action0, action.getIcon()); - button.setDrawableParameters(R.id.action0, false, -1, color, PorterDuff.Mode.SRC_ATOP, - -1); + + // If the action buttons should not be tinted, then just use the default + // notification color. Otherwise, just use the passed-in color. + int tintColor = mBuilder.shouldTintActionButtons() || mBuilder.isColorized() + ? color + : NotificationColorUtil.resolveColor(mBuilder.mContext, + Notification.COLOR_DEFAULT); + + button.setDrawableParameters(R.id.action0, false, -1, tintColor, + PorterDuff.Mode.SRC_ATOP, -1); if (!tombstone) { button.setOnClickPendingIntent(R.id.action0, action.actionIntent); } @@ -6902,6 +6930,7 @@ public class Notification implements Parcelable customContent = customContent.clone(); remoteViews.removeAllViewsExceptId(R.id.notification_main_column, R.id.progress); remoteViews.addView(R.id.notification_main_column, customContent, 0 /* index */); + remoteViews.setReapplyDisallowed(); } // also update the end margin if there is an image int endMargin = R.dimen.notification_content_margin_end; @@ -7006,8 +7035,10 @@ public class Notification implements Parcelable // Need to clone customContent before adding, because otherwise it can no longer be // parceled independently of remoteViews. customContent = customContent.clone(); + customContent.overrideTextColors(mBuilder.getPrimaryTextColor()); remoteViews.removeAllViews(id); remoteViews.addView(id, customContent); + remoteViews.setReapplyDisallowed(); } return remoteViews; } @@ -8484,8 +8515,15 @@ public class Notification implements Parcelable final StandardTemplateParams fillTextsFrom(Builder b) { Bundle extras = b.mN.extras; - title = b.processLegacyText(extras.getCharSequence(EXTRA_TITLE), ambient); - text = b.processLegacyText(extras.getCharSequence(EXTRA_TEXT), ambient); + this.title = b.processLegacyText(extras.getCharSequence(EXTRA_TITLE), ambient); + + // Big text notifications should contain their content when viewed in ambient mode. + CharSequence text = extras.getCharSequence(EXTRA_BIG_TEXT); + if (!ambient || TextUtils.isEmpty(text)) { + text = extras.getCharSequence(EXTRA_TEXT); + } + this.text = b.processLegacyText(text, ambient); + return this; } } diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java index d6e36914ac6cd1b4e4757376c6fa0710c416bee3..556acdcfff81b8ace2f8ba9b9193e96c2fc53be3 100644 --- a/core/java/android/app/NotificationChannel.java +++ b/core/java/android/app/NotificationChannel.java @@ -15,8 +15,11 @@ */ package android.app; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.app.NotificationManager.Importance; +import android.content.ContentResolver; +import android.content.Context; import android.content.Intent; import android.media.AudioAttributes; import android.net.Uri; @@ -26,6 +29,8 @@ import android.provider.Settings; import android.service.notification.NotificationListenerService; import android.text.TextUtils; +import com.android.internal.util.Preconditions; + import org.json.JSONException; import org.json.JSONObject; import org.xmlpull.v1.XmlPullParser; @@ -562,17 +567,38 @@ public final class NotificationChannel implements Parcelable { return mBlockableSystem; } + /** + * @hide + */ + public void populateFromXmlForRestore(XmlPullParser parser, Context context) { + populateFromXml(parser, true, context); + } + /** * @hide */ @SystemApi public void populateFromXml(XmlPullParser parser) { + populateFromXml(parser, false, null); + } + + /** + * If {@param forRestore} is true, {@param Context} MUST be non-null. + */ + private void populateFromXml(XmlPullParser parser, boolean forRestore, + @Nullable Context context) { + Preconditions.checkArgument(!forRestore || context != null, + "forRestore is true but got null context"); + // Name, id, and importance are set in the constructor. setDescription(parser.getAttributeValue(null, ATT_DESC)); setBypassDnd(Notification.PRIORITY_DEFAULT != safeInt(parser, ATT_PRIORITY, Notification.PRIORITY_DEFAULT)); setLockscreenVisibility(safeInt(parser, ATT_VISIBILITY, DEFAULT_VISIBILITY)); - setSound(safeUri(parser, ATT_SOUND), safeAudioAttributes(parser)); + + Uri sound = safeUri(parser, ATT_SOUND); + setSound(forRestore ? restoreSoundUri(context, sound) : sound, safeAudioAttributes(parser)); + enableLights(safeBool(parser, ATT_LIGHTS, false)); setLightColor(safeInt(parser, ATT_LIGHT_COLOR, DEFAULT_LIGHT_COLOR)); setVibrationPattern(safeLongArray(parser, ATT_VIBRATION, null)); @@ -584,11 +610,62 @@ public final class NotificationChannel implements Parcelable { setBlockableSystem(safeBool(parser, ATT_BLOCKABLE_SYSTEM, false)); } + @Nullable + private Uri restoreSoundUri(Context context, @Nullable Uri uri) { + if (uri == null) { + return null; + } + ContentResolver contentResolver = context.getContentResolver(); + // There are backups out there with uncanonical uris (because we fixed this after + // shipping). If uncanonical uris are given to MediaProvider.uncanonicalize it won't + // verify the uri against device storage and we'll possibly end up with a broken uri. + // We then canonicalize the uri to uncanonicalize it back, which means we properly check + // the uri and in the case of not having the resource we end up with the default - better + // than broken. As a side effect we'll canonicalize already canonicalized uris, this is fine + // according to the docs because canonicalize method has to handle canonical uris as well. + Uri canonicalizedUri = contentResolver.canonicalize(uri); + if (canonicalizedUri == null) { + // We got a null because the uri in the backup does not exist here, so we return default + return Settings.System.DEFAULT_NOTIFICATION_URI; + } + return contentResolver.uncanonicalize(canonicalizedUri); + } + /** * @hide */ @SystemApi public void writeXml(XmlSerializer out) throws IOException { + writeXml(out, false, null); + } + + /** + * @hide + */ + public void writeXmlForBackup(XmlSerializer out, Context context) throws IOException { + writeXml(out, true, context); + } + + private Uri getSoundForBackup(Context context) { + Uri sound = getSound(); + if (sound == null) { + return null; + } + Uri canonicalSound = context.getContentResolver().canonicalize(sound); + if (canonicalSound == null) { + // The content provider does not support canonical uris so we backup the default + return Settings.System.DEFAULT_NOTIFICATION_URI; + } + return canonicalSound; + } + + /** + * If {@param forBackup} is true, {@param Context} MUST be non-null. + */ + private void writeXml(XmlSerializer out, boolean forBackup, @Nullable Context context) + throws IOException { + Preconditions.checkArgument(!forBackup || context != null, + "forBackup is true but got null context"); out.startTag(null, TAG_CHANNEL); out.attribute(null, ATT_ID, getId()); if (getName() != null) { @@ -609,8 +686,9 @@ public final class NotificationChannel implements Parcelable { out.attribute(null, ATT_VISIBILITY, Integer.toString(getLockscreenVisibility())); } - if (getSound() != null) { - out.attribute(null, ATT_SOUND, getSound().toString()); + Uri sound = forBackup ? getSoundForBackup(context) : getSound(); + if (sound != null) { + out.attribute(null, ATT_SOUND, sound.toString()); } if (getAudioAttributes() != null) { out.attribute(null, ATT_USAGE, Integer.toString(getAudioAttributes().getUsage())); diff --git a/core/java/android/app/NotificationChannelGroup.java b/core/java/android/app/NotificationChannelGroup.java index 7e8f191acdb9381a3fce73d913ea1d32f4e61a1a..18ad9cf3d8e3aca55dae426c62c36f549b75eea4 100644 --- a/core/java/android/app/NotificationChannelGroup.java +++ b/core/java/android/app/NotificationChannelGroup.java @@ -15,24 +15,18 @@ */ package android.app; -import android.annotation.StringRes; import android.annotation.SystemApi; import android.content.Intent; -import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; -import android.service.notification.NotificationListenerService; import android.text.TextUtils; -import android.util.Slog; import org.json.JSONException; import org.json.JSONObject; -import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -115,10 +109,8 @@ public final class NotificationChannelGroup implements Parcelable { return mName; } - /* + /** * Returns the list of channels that belong to this group - * - * @hide */ public List getChannels() { return mChannels; diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index 9d7e4a2867e0d1c639097878a8b2ba436b75e985..34343e9e106a2d4d7648464affb7a1736f385f21 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -40,7 +40,6 @@ import android.os.UserHandle; import android.provider.Settings.Global; import android.service.notification.StatusBarNotification; import android.service.notification.ZenModeConfig; -import android.util.ArraySet; import android.util.Log; import java.lang.annotation.Retention; @@ -205,7 +204,12 @@ public class NotificationManager { public static final int IMPORTANCE_NONE = 0; /** - * Min notification importance: only shows in the shade, below the fold. + * Min notification importance: only shows in the shade, below the fold. This should + * not be used with {@link Service#startForeground(int, Notification) Service.startForeground} + * since a foreground service is supposed to be something the user cares about so it does + * not make semantic sense to mark its notification as minimum importance. If you do this + * as of Android version {@link android.os.Build.VERSION_CODES#O}, the system will show + * a higher-priority notification about your app running in the background. */ public static final int IMPORTANCE_MIN = 1; @@ -309,7 +313,9 @@ public class NotificationManager { } if (localLOGV) Log.v(TAG, pkg + ": notify(" + id + ", " + notification + ")"); notification.reduceImageSizes(mContext); - final Notification copy = Builder.maybeCloneStrippedForDelivery(notification); + ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); + boolean isLowRam = am.isLowRamDevice(); + final Notification copy = Builder.maybeCloneStrippedForDelivery(notification, isLowRam); try { service.enqueueNotificationWithTag(pkg, mContext.getOpPackageName(), tag, id, copy, user.getIdentifier()); @@ -415,12 +421,16 @@ public class NotificationManager { * Creates a notification channel that notifications can be posted to. * * This can also be used to restore a deleted channel and to update an existing channel's - * name and description. + * name, description, and/or importance. * *

      The name and description should only be changed if the locale changes * or in response to the user renaming this channel. For example, if a user has a channel * named 'John Doe' that represents messages from a 'John Doe', and 'John Doe' changes his name * to 'John Smith,' the channel can be renamed to match. + * + *

      The importance of an existing channel will only be changed if the new importance is lower + * than the current value and the user has not altered any settings on this channel. + * * All other fields are ignored for channels that already exist. * * @param channel the channel to create. Note that the created channel may differ from this @@ -744,14 +754,14 @@ public class NotificationManager { } /** - * Checks the ability to read/modify notification policy for the calling package. + * Checks the ability to read/modify notification do not disturb policy for the calling package. * *

      * Returns true if the calling package can read/modify notification policy. * *

      - * Request policy access by sending the user to the activity that matches the system intent - * action {@link android.provider.Settings#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS}. + * Apps can request policy access by sending the user to the activity that matches the system + * intent action {@link android.provider.Settings#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS}. * *

      * Use {@link #ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED} to listen for @@ -766,6 +776,39 @@ public class NotificationManager { } } + /** + * Checks whether the user has approved a given + * {@link android.service.notification.NotificationListenerService}. + * + *

      + * The listener service must belong to the calling app. + * + *

      + * Apps can request notification listener access by sending the user to the activity that + * matches the system intent action + * {@link android.provider.Settings#ACTION_NOTIFICATION_LISTENER_SETTINGS}. + */ + public boolean isNotificationListenerAccessGranted(ComponentName listener) { + INotificationManager service = getService(); + try { + return service.isNotificationListenerAccessGranted(listener); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * @hide + */ + public boolean isNotificationAssistantAccessGranted(ComponentName assistant) { + INotificationManager service = getService(); + try { + return service.isNotificationAssistantAccessGranted(assistant); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** @hide */ public boolean isNotificationPolicyAccessGrantedForPackage(String pkg) { INotificationManager service = getService(); @@ -776,6 +819,18 @@ public class NotificationManager { } } + /** + * @hide + */ + public List getEnabledNotificationListenerPackages() { + INotificationManager service = getService(); + try { + return service.getEnabledNotificationListenerPackages(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Gets the current notification policy. * @@ -822,21 +877,34 @@ public class NotificationManager { } /** @hide */ - public ArraySet getPackagesRequestingNotificationPolicyAccess() { + public void setNotificationListenerAccessGranted(ComponentName listener, boolean granted) { INotificationManager service = getService(); try { - final String[] pkgs = service.getPackagesRequestingNotificationPolicyAccess(); - if (pkgs != null && pkgs.length > 0) { - final ArraySet rt = new ArraySet<>(pkgs.length); - for (int i = 0; i < pkgs.length; i++) { - rt.add(pkgs[i]); - } - return rt; - } + service.setNotificationListenerAccessGranted(listener, granted); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** @hide */ + public void setNotificationListenerAccessGrantedForUser(ComponentName listener, int userId, + boolean granted) { + INotificationManager service = getService(); + try { + service.setNotificationListenerAccessGrantedForUser(listener, userId, granted); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** @hide */ + public List getEnabledNotificationListeners(int userId) { + INotificationManager service = getService(); + try { + return service.getEnabledNotificationListeners(userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } - return new ArraySet<>(); } private Context mContext; diff --git a/core/java/android/app/ProfilerInfo.java b/core/java/android/app/ProfilerInfo.java index f3fe6778375bc6df9fcc380004fd4d0c72ea22dc..fad4798e3a3ebadd009b5f31171fbc16ce326a3d 100644 --- a/core/java/android/app/ProfilerInfo.java +++ b/core/java/android/app/ProfilerInfo.java @@ -17,8 +17,11 @@ package android.app; import android.os.Parcel; -import android.os.Parcelable; import android.os.ParcelFileDescriptor; +import android.os.Parcelable; +import android.util.Slog; + +import java.io.IOException; /** * System private API for passing profiler settings. @@ -27,6 +30,8 @@ import android.os.ParcelFileDescriptor; */ public class ProfilerInfo implements Parcelable { + private static final String TAG = "ProfilerInfo"; + /* Name of profile output file. */ public final String profileFile; @@ -39,18 +44,50 @@ public class ProfilerInfo implements Parcelable { /* Automatically stop the profiler when the app goes idle. */ public final boolean autoStopProfiler; - /* Indicates whether to stream the profiling info to the out file continuously. */ + /* + * Indicates whether to stream the profiling info to the out file continuously. + */ public final boolean streamingOutput; + /** + * Denotes an agent (and its parameters) to attach for profiling. + */ + public final String agent; + public ProfilerInfo(String filename, ParcelFileDescriptor fd, int interval, boolean autoStop, - boolean streaming) { + boolean streaming, String agent) { profileFile = filename; profileFd = fd; samplingInterval = interval; autoStopProfiler = autoStop; streamingOutput = streaming; + this.agent = agent; + } + + public ProfilerInfo(ProfilerInfo in) { + profileFile = in.profileFile; + profileFd = in.profileFd; + samplingInterval = in.samplingInterval; + autoStopProfiler = in.autoStopProfiler; + streamingOutput = in.streamingOutput; + agent = in.agent; } + /** + * Close profileFd, if it is open. The field will be null after a call to this function. + */ + public void closeFd() { + if (profileFd != null) { + try { + profileFd.close(); + } catch (IOException e) { + Slog.w(TAG, "Failure closing profile fd", e); + } + profileFd = null; + } + } + + @Override public int describeContents() { if (profileFd != null) { return profileFd.describeContents(); @@ -59,6 +96,7 @@ public class ProfilerInfo implements Parcelable { } } + @Override public void writeToParcel(Parcel out, int flags) { out.writeString(profileFile); if (profileFd != null) { @@ -70,18 +108,21 @@ public class ProfilerInfo implements Parcelable { out.writeInt(samplingInterval); out.writeInt(autoStopProfiler ? 1 : 0); out.writeInt(streamingOutput ? 1 : 0); + out.writeString(agent); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - public ProfilerInfo createFromParcel(Parcel in) { - return new ProfilerInfo(in); - } + @Override + public ProfilerInfo createFromParcel(Parcel in) { + return new ProfilerInfo(in); + } - public ProfilerInfo[] newArray(int size) { - return new ProfilerInfo[size]; - } - }; + @Override + public ProfilerInfo[] newArray(int size) { + return new ProfilerInfo[size]; + } + }; private ProfilerInfo(Parcel in) { profileFile = in.readString(); @@ -89,5 +130,6 @@ public class ProfilerInfo implements Parcelable { samplingInterval = in.readInt(); autoStopProfiler = in.readInt() != 0; streamingOutput = in.readInt() != 0; + agent = in.readString(); } } diff --git a/core/java/android/app/RemoteInput.java b/core/java/android/app/RemoteInput.java index 8ab19c06df80835439745a62686141666f0f2150..02a01242c3ba7576d93c4db896be247dd8d57a58 100644 --- a/core/java/android/app/RemoteInput.java +++ b/core/java/android/app/RemoteInput.java @@ -33,8 +33,8 @@ import java.util.Set; * an intent inside a {@link android.app.PendingIntent} that is sent. * Always use {@link RemoteInput.Builder} to create instances of this class. *

      See - * Receiving Voice Input from - * a Notification for more information on how to use this class. + * Replying + * to notifications for more information on how to use this class. * *

      The following example adds a {@code RemoteInput} to a {@link Notification.Action}, * sets the result key as {@code quick_reply}, and sets the label as {@code Quick reply}. diff --git a/core/java/android/app/SharedElementCallback.java b/core/java/android/app/SharedElementCallback.java index bac84a4fcc9d863b9bc4b86361ff866837c94121..80fb80588e5589f270ddbb9865307c7faf94ea69 100644 --- a/core/java/android/app/SharedElementCallback.java +++ b/core/java/android/app/SharedElementCallback.java @@ -18,6 +18,7 @@ package android.app; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; +import android.graphics.GraphicBuffer; import android.graphics.Matrix; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; @@ -26,6 +27,7 @@ import android.os.Bundle; import android.os.Parcelable; import android.transition.TransitionUtils; import android.view.View; +import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ImageView.ScaleType; @@ -44,6 +46,8 @@ import java.util.Map; public abstract class SharedElementCallback { private Matrix mTempMatrix; private static final String BUNDLE_SNAPSHOT_BITMAP = "sharedElement:snapshot:bitmap"; + private static final String BUNDLE_SNAPSHOT_GRAPHIC_BUFFER = + "sharedElement:snapshot:graphicBuffer"; private static final String BUNDLE_SNAPSHOT_IMAGE_SCALETYPE = "sharedElement:snapshot:imageScaleType"; private static final String BUNDLE_SNAPSHOT_IMAGE_MATRIX = "sharedElement:snapshot:imageMatrix"; @@ -173,10 +177,15 @@ public abstract class SharedElementCallback { Drawable d = imageView.getDrawable(); Drawable bg = imageView.getBackground(); if (d != null && (bg == null || bg.getAlpha() == 0)) { - Bitmap bitmap = TransitionUtils.createDrawableBitmap(d); + Bitmap bitmap = TransitionUtils.createDrawableBitmap(d, imageView); if (bitmap != null) { Bundle bundle = new Bundle(); - bundle.putParcelable(BUNDLE_SNAPSHOT_BITMAP, bitmap); + if (bitmap.getConfig() != Bitmap.Config.HARDWARE) { + bundle.putParcelable(BUNDLE_SNAPSHOT_BITMAP, bitmap); + } else { + GraphicBuffer graphicBuffer = bitmap.createGraphicBufferHandle(); + bundle.putParcelable(BUNDLE_SNAPSHOT_GRAPHIC_BUFFER, graphicBuffer); + } bundle.putString(BUNDLE_SNAPSHOT_IMAGE_SCALETYPE, imageView.getScaleType().toString()); if (imageView.getScaleType() == ScaleType.MATRIX) { @@ -194,7 +203,8 @@ public abstract class SharedElementCallback { } else { mTempMatrix.set(viewToGlobalMatrix); } - return TransitionUtils.createViewBitmap(sharedElement, mTempMatrix, screenBounds); + ViewGroup parent = (ViewGroup) sharedElement.getParent(); + return TransitionUtils.createViewBitmap(sharedElement, mTempMatrix, screenBounds, parent); } /** @@ -218,10 +228,14 @@ public abstract class SharedElementCallback { View view = null; if (snapshot instanceof Bundle) { Bundle bundle = (Bundle) snapshot; - Bitmap bitmap = (Bitmap) bundle.getParcelable(BUNDLE_SNAPSHOT_BITMAP); - if (bitmap == null) { + GraphicBuffer buffer = bundle.getParcelable(BUNDLE_SNAPSHOT_GRAPHIC_BUFFER); + Bitmap bitmap = bundle.getParcelable(BUNDLE_SNAPSHOT_BITMAP); + if (buffer == null && bitmap == null) { return null; } + if (bitmap == null) { + bitmap = Bitmap.createHardwareBitmap(buffer); + } ImageView imageView = new ImageView(context); view = imageView; imageView.setImageBitmap(bitmap); diff --git a/core/java/android/app/SharedPreferencesImpl.java b/core/java/android/app/SharedPreferencesImpl.java index e245bb5ad931f4ec01cf9b6a52a9a29fc9d14932..6dca4004cb46e130c2b648ec2130525266d6436b 100644 --- a/core/java/android/app/SharedPreferencesImpl.java +++ b/core/java/android/app/SharedPreferencesImpl.java @@ -822,7 +822,7 @@ final class SharedPreferencesImpl implements SharedPreferences { } long fsyncDuration = fsyncTime - writeTime; - mSyncTimes.add(Long.valueOf(fsyncDuration).intValue()); + mSyncTimes.add((int) fsyncDuration); mNumSync++; if (DEBUG || mNumSync % 1024 == 0 || fsyncDuration > MAX_FSYNC_DURATION_MILLIS) { diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 9a019b8e72fe34ad4d2a70c2e48c668934a13da6..ab70f0e71216196ef74ff59991d545564ad07dec 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -39,6 +39,7 @@ import android.content.IRestrictionsManager; import android.content.RestrictionsManager; import android.content.pm.IShortcutService; import android.content.pm.LauncherApps; +import android.content.pm.PackageManager; import android.content.pm.ShortcutManager; import android.content.res.Resources; import android.hardware.ConsumerIrManager; @@ -82,6 +83,8 @@ import android.net.NetworkPolicyManager; import android.net.NetworkScoreManager; import android.net.nsd.INsdManager; import android.net.nsd.NsdManager; +import android.net.lowpan.ILowpanManager; +import android.net.lowpan.LowpanManager; import android.net.wifi.IRttManager; import android.net.wifi.IWifiManager; import android.net.wifi.IWifiScanner; @@ -539,6 +542,16 @@ final class SystemServiceRegistry { ctx.mMainThread.getHandler()); }}); + registerService(Context.LOWPAN_SERVICE, LowpanManager.class, + new CachedServiceFetcher() { + @Override + public LowpanManager createService(ContextImpl ctx) throws ServiceNotFoundException { + IBinder b = ServiceManager.getServiceOrThrow(Context.LOWPAN_SERVICE); + ILowpanManager service = ILowpanManager.Stub.asInterface(b); + return new LowpanManager(ctx.getOuterContext(), service, + ConnectivityThread.getInstanceLooper()); + }}); + registerService(Context.WIFI_SERVICE, WifiManager.class, new CachedServiceFetcher() { @Override @@ -651,25 +664,30 @@ final class SystemServiceRegistry { new CachedServiceFetcher() { @Override public PrintManager createService(ContextImpl ctx) throws ServiceNotFoundException { - // Get the services without throwing as this is an optional feature - IBinder iBinder = ServiceManager.getService(Context.PRINT_SERVICE); - IPrintManager service = IPrintManager.Stub.asInterface(iBinder); + IPrintManager service = null; + // If the feature not present, don't try to look up every time + if (ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_PRINTING)) { + service = IPrintManager.Stub.asInterface(ServiceManager + .getServiceOrThrow(Context.PRINT_SERVICE)); + } return new PrintManager(ctx.getOuterContext(), service, UserHandle.myUserId(), UserHandle.getAppId(Process.myUid())); }}); registerService(Context.COMPANION_DEVICE_SERVICE, CompanionDeviceManager.class, new CachedServiceFetcher() { - @Override - public CompanionDeviceManager createService(ContextImpl ctx) - throws ServiceNotFoundException { - // Get the services without throwing as this is an optional feature - IBinder iBinder = - ServiceManager.getService(Context.COMPANION_DEVICE_SERVICE); - ICompanionDeviceManager service = - ICompanionDeviceManager.Stub.asInterface(iBinder); - return new CompanionDeviceManager(service, ctx.getOuterContext()); - }}); + @Override + public CompanionDeviceManager createService(ContextImpl ctx) + throws ServiceNotFoundException { + ICompanionDeviceManager service = null; + // If the feature not present, don't try to look up every time + if (ctx.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_COMPANION_DEVICE_SETUP)) { + service = ICompanionDeviceManager.Stub.asInterface( + ServiceManager.getServiceOrThrow(Context.COMPANION_DEVICE_SERVICE)); + } + return new CompanionDeviceManager(service, ctx.getOuterContext()); + }}); registerService(Context.CONSUMER_IR_SERVICE, ConsumerIrManager.class, new CachedServiceFetcher() { diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java index a52ca0a64cd2c2ba1931bdd1c287a3ea22e6e39c..4674c9cd238925a85a491191544474a5a78037a4 100644 --- a/core/java/android/app/TaskStackListener.java +++ b/core/java/android/app/TaskStackListener.java @@ -31,7 +31,8 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub { } @Override - public void onActivityPinned(String packageName, int taskId) throws RemoteException { + public void onActivityPinned(String packageName, int userId, int taskId) + throws RemoteException { } @Override diff --git a/core/java/android/app/VrManager.java b/core/java/android/app/VrManager.java index b40c96c6f0c89d0c6b1652f2cfba17e9685eff6a..5c6ffa39e6f783e7a97112d084514e1c94deaf42 100644 --- a/core/java/android/app/VrManager.java +++ b/core/java/android/app/VrManager.java @@ -1,13 +1,19 @@ package android.app; - +import android.annotation.NonNull; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.ComponentName; import android.content.Context; +import android.os.Handler; import android.os.RemoteException; +import android.service.vr.IPersistentVrStateCallbacks; import android.service.vr.IVrManager; +import android.service.vr.IVrStateCallbacks; +import android.util.ArrayMap; + +import java.util.Map; /** * Used to control aspects of a devices Virtual Reality (VR) capabilities. @@ -16,7 +22,33 @@ import android.service.vr.IVrManager; @SystemApi @SystemService(Context.VR_SERVICE) public class VrManager { + + private static class CallbackEntry { + final IVrStateCallbacks mStateCallback = new IVrStateCallbacks.Stub() { + @Override + public void onVrStateChanged(boolean enabled) { + mHandler.post(() -> mCallback.onVrStateChanged(enabled)); + } + + }; + final IPersistentVrStateCallbacks mPersistentStateCallback = + new IPersistentVrStateCallbacks.Stub() { + @Override + public void onPersistentVrStateChanged(boolean enabled) { + mHandler.post(() -> mCallback.onPersistentVrStateChanged(enabled)); + } + }; + final VrStateCallback mCallback; + final Handler mHandler; + + CallbackEntry(VrStateCallback callback, Handler handler) { + mCallback = callback; + mHandler = handler; + } + } + private final IVrManager mService; + private Map mCallbackMap = new ArrayMap<>(); /** * {@hide} @@ -25,6 +57,96 @@ public class VrManager { mService = service; } + /** + * Registers a callback to be notified of changes to the VR Mode state. + * + * @param callback The callback to register. + * @hide + */ + @RequiresPermission(anyOf = { + android.Manifest.permission.RESTRICTED_VR_ACCESS, + android.Manifest.permission.ACCESS_VR_STATE + }) + public void registerVrStateCallback(VrStateCallback callback, @NonNull Handler handler) { + if (callback == null || mCallbackMap.containsKey(callback)) { + return; + } + + CallbackEntry entry = new CallbackEntry(callback, handler); + mCallbackMap.put(callback, entry); + try { + mService.registerListener(entry.mStateCallback); + mService.registerPersistentVrStateListener(entry.mPersistentStateCallback); + } catch (RemoteException e) { + try { + unregisterVrStateCallback(callback); + } catch (Exception ignore) { + e.rethrowFromSystemServer(); + } + } + } + + /** + * Deregisters VR State callbacks. + * + * @param callback The callback to deregister. + * @hide + */ + @RequiresPermission(anyOf = { + android.Manifest.permission.RESTRICTED_VR_ACCESS, + android.Manifest.permission.ACCESS_VR_STATE + }) + public void unregisterVrStateCallback(VrStateCallback callback) { + CallbackEntry entry = mCallbackMap.remove(callback); + if (entry != null) { + try { + mService.unregisterListener(entry.mStateCallback); + } catch (RemoteException ignore) { + // Dont rethrow exceptions from requests to unregister. + } + + try { + mService.unregisterPersistentVrStateListener(entry.mPersistentStateCallback); + } catch (RemoteException ignore) { + // Dont rethrow exceptions from requests to unregister. + } + } + } + + /** + * Returns the current VrMode state. + * @hide + */ + @RequiresPermission(anyOf = { + android.Manifest.permission.RESTRICTED_VR_ACCESS, + android.Manifest.permission.ACCESS_VR_STATE + }) + public boolean getVrModeEnabled() { + try { + return mService.getVrModeState(); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return false; + } + + /** + * Returns the current VrMode state. + * @hide + */ + @RequiresPermission(anyOf = { + android.Manifest.permission.RESTRICTED_VR_ACCESS, + android.Manifest.permission.ACCESS_VR_STATE + }) + public boolean getPersistentVrModeEnabled() { + try { + return mService.getPersistentVrModeEnabled(); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return false; + } + /** * Sets the persistent VR mode state of a device. When a device is in persistent VR mode it will * remain in VR mode even if the foreground does not specify Vr mode being enabled. Mainly used @@ -60,4 +182,20 @@ public class VrManager { e.rethrowFromSystemServer(); } } + + /** + * Set the component name of the compositor service to bind. + * + * @param componentName ComponentName of a Service in the application's compositor process to + * bind to, or null to clear the current binding. + */ + @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS) + public void setAndBindVrCompositor(ComponentName componentName) { + try { + mService.setAndBindCompositor( + (componentName == null) ? null : componentName.flattenToString()); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/app/VrStateCallback.java b/core/java/android/app/VrStateCallback.java new file mode 100644 index 0000000000000000000000000000000000000000..742faa06fd1dead6db0816493ae8deb9bc3c27bf --- /dev/null +++ b/core/java/android/app/VrStateCallback.java @@ -0,0 +1,38 @@ +/* + * 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.app; + +/** + * Listens to VR Mode state changes. Use with methods in {@link VrManager}. + * + * @hide + */ +public abstract class VrStateCallback { + + /** + * Callback triggered when there is a change to Persistent VR State. + * + * @param enabled True when VR State is in persistent mode, false otherwise. + */ + public void onPersistentVrStateChanged(boolean enabled) {} + + /** + * Callback triggered when there is a change to Vr State. + * + * @param enabled True when VR State is in VR mode, false otherwise. + */ + public void onVrStateChanged(boolean enabled) {} +} diff --git a/core/java/android/app/WallpaperColors.java b/core/java/android/app/WallpaperColors.java index 2a8130f1bd5e7d5fc2ecd1303e4a9593e2c7c5e2..a2864b9d83af431ba1bcbff77af23f6852f9fc30 100644 --- a/core/java/android/app/WallpaperColors.java +++ b/core/java/android/app/WallpaperColors.java @@ -49,7 +49,7 @@ public final class WallpaperColors implements Parcelable { * eg. A launcher may set its text color to black if this flag is specified. * @hide */ - public static final int HINT_SUPPORTS_DARK_TEXT = 0x1; + public static final int HINT_SUPPORTS_DARK_TEXT = 1 << 0; /** * Specifies that dark theme is preferred over the current wallpaper for best presentation. @@ -57,7 +57,13 @@ public final class WallpaperColors implements Parcelable { * eg. A launcher may set its drawer color to black if this flag is specified. * @hide */ - public static final int HINT_SUPPORTS_DARK_THEME = 0x2; + public static final int HINT_SUPPORTS_DARK_THEME = 1 << 1; + + /** + * Specifies that this object was generated by extracting colors from a bitmap. + * @hide + */ + public static final int HINT_FROM_BITMAP = 1 << 2; // Maximum size that a bitmap can have to keep our calculations sane private static final int MAX_BITMAP_SIZE = 112; @@ -180,13 +186,13 @@ public final class WallpaperColors implements Parcelable { } } - int hints = calculateHints(bitmap); + int hints = calculateDarkHints(bitmap); if (shouldRecycle) { bitmap.recycle(); } - return new WallpaperColors(primary, secondary, tertiary, hints); + return new WallpaperColors(primary, secondary, tertiary, HINT_FROM_BITMAP | hints); } /** @@ -348,7 +354,7 @@ public final class WallpaperColors implements Parcelable { * @param source What to read. * @return Whether image supports dark text or not. */ - private static int calculateHints(Bitmap source) { + private static int calculateDarkHints(Bitmap source) { if (source == null) { return 0; } diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 84839bf8f4475d4d383b1668f9fa5f91d2ef40fe..942cc99585edb4d5327be40fd7eb1ce97e72e5e8 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -48,6 +48,7 @@ import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.DeadSystemException; import android.os.Handler; @@ -58,6 +59,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserHandle; +import android.service.wallpaper.WallpaperService; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -407,10 +409,18 @@ public class WallpaperManager { mCachedWallpaper = null; mCachedWallpaperUserId = 0; try { - mCachedWallpaper = getCurrentWallpaperLocked(userId); + mCachedWallpaper = getCurrentWallpaperLocked(context, userId); mCachedWallpaperUserId = userId; } catch (OutOfMemoryError e) { - Log.w(TAG, "No memory load current wallpaper", e); + Log.w(TAG, "Out of memory loading the current wallpaper: " + e); + } catch (SecurityException e) { + if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.O) { + Log.w(TAG, "No permission to access wallpaper, suppressing" + + " exception to avoid crashing legacy app."); + } else { + // Post-O apps really most sincerely need the permission. + throw e; + } } if (mCachedWallpaper != null) { return mCachedWallpaper; @@ -437,7 +447,7 @@ public class WallpaperManager { } } - private Bitmap getCurrentWallpaperLocked(int userId) { + private Bitmap getCurrentWallpaperLocked(Context context, int userId) { if (mService == null) { Log.w(TAG, "WallpaperService not running"); return null; @@ -445,8 +455,8 @@ public class WallpaperManager { try { Bundle params = new Bundle(); - ParcelFileDescriptor fd = mService.getWallpaper(this, FLAG_SYSTEM, - params, userId); + ParcelFileDescriptor fd = mService.getWallpaper(context.getOpPackageName(), + this, FLAG_SYSTEM, params, userId); if (fd != null) { try { BitmapFactory.Options options = new BitmapFactory.Options(); @@ -778,6 +788,7 @@ public class WallpaperManager { * * @return Returns a Drawable object that will draw the wallpaper. */ + @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public Drawable getFastDrawable() { Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM); if (bm != null) { @@ -793,6 +804,7 @@ public class WallpaperManager { * @return Returns an optimized Drawable object that will draw the * wallpaper or a null pointer if these is none. */ + @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public Drawable peekFastDrawable() { Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, false, FLAG_SYSTEM); if (bm != null) { @@ -830,26 +842,20 @@ public class WallpaperManager { * @param which The wallpaper whose image file is to be retrieved. Must be a single * defined kind of wallpaper, either {@link #FLAG_SYSTEM} or * {@link #FLAG_LOCK}. + * @return An open, readable file desriptor to the requested wallpaper image file; + * or {@code null} if no such wallpaper is configured or if the calling app does + * not have permission to read the current wallpaper. * * @see #FLAG_LOCK * @see #FLAG_SYSTEM */ + @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) public ParcelFileDescriptor getWallpaperFile(@SetWallpaperFlags int which) { return getWallpaperFile(which, mContext.getUserId()); } /** * Registers a listener to get notified when the wallpaper colors change. - * Callback might be called from an arbitrary background thread. - * - * @param listener A listener to register - */ - public void addOnColorsChangedListener(@NonNull OnColorsChangedListener listener) { - addOnColorsChangedListener(listener, null); - } - - /** - * Registers a listener to get notified when the wallpaper colors change * @param listener A listener to register * @param handler Where to call it from. Will be called from the main thread * if null. @@ -892,10 +898,16 @@ public class WallpaperManager { } /** - * Get the primary colors of a wallpaper - * @param which wallpaper type. Must be either {@link #FLAG_SYSTEM} or - * {@link #FLAG_LOCK} - * @return {@link WallpaperColors} or null if colors are unknown. + * Get the primary colors of a wallpaper. + * + *

      You can expect null if: + * • Colors are still being processed by the system. + * • A live wallpaper doesn't implement {@link WallpaperService.Engine#onComputeColors()}. + * + * @param which Wallpaper type. Must be either {@link #FLAG_SYSTEM} or + * {@link #FLAG_LOCK}. + * @return Current {@link WallpaperColors} or null if colors are unknown. + * @see #addOnColorsChangedListener(OnColorsChangedListener, Handler) */ public @Nullable WallpaperColors getWallpaperColors(int which) { return getWallpaperColors(which, mContext.getUserId()); @@ -939,9 +951,18 @@ public class WallpaperManager { } else { try { Bundle outParams = new Bundle(); - return sGlobals.mService.getWallpaper(null, which, outParams, userId); + return sGlobals.mService.getWallpaper(mContext.getOpPackageName(), null, which, + outParams, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); + } catch (SecurityException e) { + if (mContext.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.O) { + Log.w(TAG, "No permission to access wallpaper, suppressing" + + " exception to avoid crashing legacy app."); + return null; + } else { + throw e; + } } } } @@ -1081,6 +1102,7 @@ public class WallpaperManager { * @throws IOException If an error occurs reverting to the built-in * wallpaper. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setResource(@RawRes int resid) throws IOException { setResource(resid, FLAG_SYSTEM | FLAG_LOCK); } @@ -1099,6 +1121,7 @@ public class WallpaperManager { * * @throws IOException */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setResource(@RawRes int resid, @SetWallpaperFlags int which) throws IOException { if (sGlobals.mService == null) { @@ -1154,6 +1177,7 @@ public class WallpaperManager { * @throws IOException If an error occurs when attempting to set the wallpaper * to the provided image. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setBitmap(Bitmap bitmap) throws IOException { setBitmap(bitmap, null, true); } @@ -1186,6 +1210,7 @@ public class WallpaperManager { * @throws IllegalArgumentException If the {@code visibleCropHint} rectangle is * empty or invalid. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup) throws IOException { return setBitmap(fullImage, visibleCropHint, allowBackup, FLAG_SYSTEM | FLAG_LOCK); @@ -1211,6 +1236,7 @@ public class WallpaperManager { * * @throws IOException */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, @SetWallpaperFlags int which) throws IOException { @@ -1282,6 +1308,7 @@ public class WallpaperManager { * @throws IOException If an error occurs when attempting to set the wallpaper * based on the provided image data. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void setStream(InputStream bitmapData) throws IOException { setStream(bitmapData, null, true); } @@ -1324,6 +1351,7 @@ public class WallpaperManager { * @throws IllegalArgumentException If the {@code visibleCropHint} rectangle is * empty or invalid. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup) throws IOException { return setStream(bitmapData, visibleCropHint, allowBackup, FLAG_SYSTEM | FLAG_LOCK); @@ -1350,6 +1378,7 @@ public class WallpaperManager { * * @throws IOException */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public int setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, @SetWallpaperFlags int which) throws IOException { @@ -1574,11 +1603,12 @@ public class WallpaperManager { /** * Clear the wallpaper for a specific user. The caller must hold the * INTERACT_ACROSS_USERS_FULL permission to clear another user's - * wallpaper. + * wallpaper, and must hold the SET_WALLPAPER permission in all + * circumstances. * @hide */ @SystemApi - @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) + @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void clearWallpaper(@SetWallpaperFlags int which, int userId) { if (sGlobals.mService == null) { Log.w(TAG, "WallpaperService not running"); @@ -1611,6 +1641,7 @@ public class WallpaperManager { * * @hide */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT) public boolean setWallpaperComponent(ComponentName name, int userId) { if (sGlobals.mService == null) { Log.w(TAG, "WallpaperService not running"); @@ -1755,6 +1786,7 @@ public class WallpaperManager { * @throws IOException If an error occurs reverting to the built-in * wallpaper. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear() throws IOException { setStream(openDefaultWallpaper(mContext, FLAG_SYSTEM), null, false); } @@ -1769,6 +1801,7 @@ public class WallpaperManager { * {@link #FLAG_LOCK} * @throws IOException If an error occurs reverting to the built-in wallpaper. */ + @RequiresPermission(android.Manifest.permission.SET_WALLPAPER) public void clear(@SetWallpaperFlags int which) throws IOException { if ((which & FLAG_SYSTEM) != 0) { clear(); diff --git a/core/java/android/app/admin/ConnectEvent.java b/core/java/android/app/admin/ConnectEvent.java index 423ee52ee6a13fee53edb931a9e5f622cf638bfa..ffd38e2b8760ef76835513c6775050a42f137a64 100644 --- a/core/java/android/app/admin/ConnectEvent.java +++ b/core/java/android/app/admin/ConnectEvent.java @@ -23,7 +23,11 @@ import java.net.InetAddress; import java.net.UnknownHostException; /** - * A class that represents a connect library call event. + * A class that represents a TCP connect event initiated through the standard network stack. + * + *

      It contains information about the originating app as well as the remote TCP endpoint. + * + *

      Support both IPv4 and IPv6 connections. */ public final class ConnectEvent extends NetworkEvent implements Parcelable { diff --git a/core/java/android/app/admin/DeviceAdminReceiver.java b/core/java/android/app/admin/DeviceAdminReceiver.java index d9b6eed4fc4d7a1999d2149bb3c3df184e58fc04..d0d98c9fb10fe02c009af83e31f6df3b69a8edcf 100644 --- a/core/java/android/app/admin/DeviceAdminReceiver.java +++ b/core/java/android/app/admin/DeviceAdminReceiver.java @@ -238,8 +238,7 @@ public class DeviceAdminReceiver extends BroadcastReceiver { * {@link android.app.admin.DevicePolicyManager#isProfileOwnerApp}. You will generally handle * this in {@link DeviceAdminReceiver#onProfileProvisioningComplete}. * - *

      Input: Nothing.

      - *

      Output: Nothing

      + * @see DevicePolicyManager#ACTION_PROVISIONING_SUCCESSFUL */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) @BroadcastBehavior(explicitOnly = true) @@ -660,15 +659,20 @@ public class DeviceAdminReceiver extends BroadcastReceiver { * managed provisioning. * *

      When provisioning of a managed profile is complete, the managed profile is hidden until - * the profile owner calls {DevicePolicyManager#setProfileEnabled(ComponentName admin)}. + * the profile owner calls {@link DevicePolicyManager#setProfileEnabled(ComponentName admin)}. * Typically a profile owner will enable the profile when it has finished any additional setup - * such as adding an account by using the {@link AccountManager} and calling apis to bring the + * such as adding an account by using the {@link AccountManager} and calling APIs to bring the * profile into the desired state. * *

      Note that provisioning completes without waiting for any server interactions, so the - * profile owner needs to wait for data to be available if required (e.g. android device ids or + * profile owner needs to wait for data to be available if required (e.g. Android device IDs or * other data that is set as a result of server interactions). * + *

      From version {@link android.os.Build.VERSION_CODES#O}, when managed provisioning has + * completed, along with this callback the activity intent + * {@link DevicePolicyManager#ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the same + * application. + * * @param context The running context as per {@link #onReceive}. * @param intent The received intent as per {@link #onReceive}. */ diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index f8aa948793224649b84a3fea57d6d2ea8f95cb9c..121b58a2b104831537e7582416545634d8f82c9c 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -169,8 +169,7 @@ public class DevicePolicyManager { * *

      From version {@link android.os.Build.VERSION_CODES#O}, when managed provisioning has * completed, along with the above broadcast, activity intent - * {@link #ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the application specified in - * the provisioning intent. + * {@link #ACTION_PROVISIONING_SUCCESSFUL} will also be sent to the profile owner. * *

      If provisioning fails, the managedProfile is removed so the device returns to its * previous state. @@ -278,6 +277,7 @@ public class DevicePolicyManager { * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + @SystemApi public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE"; @@ -856,8 +856,7 @@ public class DevicePolicyManager { * {@link DeviceAdminReceiver#ACTION_PROFILE_PROVISIONING_COMPLETE} broadcast but this will be * delivered faster as it's an activity intent. * - *

      The intent is only sent to the application on the profile that requested provisioning. In - * the device owner case the profile is the primary user. + *

      The intent is only sent to the new device or profile owner. * * @see #ACTION_PROVISION_MANAGED_PROFILE * @see #ACTION_PROVISION_MANAGED_DEVICE @@ -2532,7 +2531,7 @@ public class DevicePolicyManager { * @return Returns true if the password meets the current requirements, else false. * @throws SecurityException if the calling application does not own an active administrator * that uses {@link DeviceAdminInfo#USES_POLICY_LIMIT_PASSWORD} - * @throws InvalidStateException if the user is not unlocked. + * @throws IllegalStateException if the user is not unlocked. */ public boolean isActivePasswordSufficient() { if (mService != null) { @@ -2708,13 +2707,14 @@ public class DevicePolicyManager { } /** - * Flag for {@link #resetPassword}: don't allow other admins to change - * the password again until the user has entered it. + * Flag for {@link #resetPasswordWithToken} and {@link #resetPassword}: don't allow other admins + * to change the password again until the user has entered it. */ public static final int RESET_PASSWORD_REQUIRE_ENTRY = 0x0001; /** - * Flag for {@link #resetPassword}: don't ask for user credentials on device boot. + * Flag for {@link #resetPasswordWithToken} and {@link #resetPassword}: don't ask for user + * credentials on device boot. * If the flag is set, the device can be booted without asking for user password. * The absence of this flag does not change the current boot requirements. This flag * can be set by the device owner only. If the app is not the device owner, the flag @@ -2724,8 +2724,8 @@ public class DevicePolicyManager { public static final int RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT = 0x0002; /** - * Force a new device unlock password (the password needed to access the entire device, not for - * individual accounts) on the user. This takes effect immediately. + * Force a new password for device unlock (the password needed to access the entire device) or + * the work profile challenge on the current user. This takes effect immediately. *

      * For device owner and profile owners targeting SDK level * {@link android.os.Build.VERSION_CODES#O} or above, this API is no longer available and will @@ -2763,7 +2763,6 @@ public class DevicePolicyManager { * @throws SecurityException if the calling application does not own an active administrator * that uses {@link DeviceAdminInfo#USES_POLICY_RESET_PASSWORD} * @throws IllegalStateException if the calling user is locked or has a managed profile. - * @throws IllegalArgumentException if the password does not meet system requirements. */ public boolean resetPassword(String password, int flags) { throwIfParentInstance("resetPassword"); @@ -2805,8 +2804,8 @@ public class DevicePolicyManager { * @param token a secure token a least 32-byte long, which must be generated by a * cryptographically strong random number generator. * @return true if the operation is successful, false otherwise. + * @throws SecurityException if admin is not a device or profile owner. * @throws IllegalArgumentException if the supplied token is invalid. - * @throws SecurityException */ public boolean setResetPasswordToken(ComponentName admin, byte[] token) { throwIfParentInstance("setResetPasswordToken"); @@ -2825,6 +2824,7 @@ public class DevicePolicyManager { * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. * @return true if the operation is successful, false otherwise. + * @throws SecurityException if admin is not a device or profile owner. */ public boolean clearResetPasswordToken(ComponentName admin) { throwIfParentInstance("clearResetPasswordToken"); @@ -2843,6 +2843,7 @@ public class DevicePolicyManager { * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. * @return true if the token is active, false otherwise. + * @throws SecurityException if admin is not a device or profile owner. * @throws IllegalStateException if no token has been set. */ public boolean isResetPasswordTokenActive(ComponentName admin) { @@ -2868,24 +2869,23 @@ public class DevicePolicyManager { * The given password must be sufficient for the current password quality and length constraints * as returned by {@link #getPasswordQuality(ComponentName)} and * {@link #getPasswordMinimumLength(ComponentName)}; if it does not meet these constraints, then - * it will be rejected and false returned. Note that the password may be a stronger quality - * (containing alphanumeric characters when the requested quality is only numeric), in which - * case the currently active quality will be increased to match. + * it will be rejected and false returned. Note that the password may be a stronger quality, for + * example, a password containing alphanumeric characters when the requested quality is only + * numeric. *

      - * Calling with a null or empty password will clear any existing PIN, pattern or password if the - * current password constraints allow it. + * Calling with a {@code null} or empty password will clear any existing PIN, pattern or + * password if the current password constraints allow it. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. - * @param password The new password for the user. Null or empty clears the password. - * @param token the password reset token previously provisioned by #setResetPasswordToken. + * @param password The new password for the user. {@code null} or empty clears the password. + * @param token the password reset token previously provisioned by + * {@link #setResetPasswordToken}. * @param flags May be 0 or combination of {@link #RESET_PASSWORD_REQUIRE_ENTRY} and - * {@link #RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT}. + * {@link #RESET_PASSWORD_DO_NOT_ASK_CREDENTIALS_ON_BOOT}. * @return Returns true if the password was applied, or false if it is not acceptable for the * current constraints. - * @throws SecurityException if the calling application does not own an active administrator - * that uses {@link DeviceAdminInfo#USES_POLICY_RESET_PASSWORD} + * @throws SecurityException if admin is not a device or profile owner. * @throws IllegalStateException if the provided token is not valid. - * @throws IllegalArgumentException if the password does not meet system requirements. */ public boolean resetPasswordWithToken(@NonNull ComponentName admin, String password, byte[] token, int flags) { @@ -6422,34 +6422,35 @@ public class DevicePolicyManager { } /** - * Called by device owners to update {@link Settings.Global} settings. Validation that the value - * of the setting is in the correct form for the setting type should be performed by the caller. + * Called by device owners to update {@link android.provider.Settings.Global} settings. + * Validation that the value of the setting is in the correct form for the setting type should + * be performed by the caller. *

      * The settings that can be updated with this method are: *

        - *
      • {@link Settings.Global#ADB_ENABLED}
      • - *
      • {@link Settings.Global#AUTO_TIME}
      • - *
      • {@link Settings.Global#AUTO_TIME_ZONE}
      • - *
      • {@link Settings.Global#DATA_ROAMING}
      • - *
      • {@link Settings.Global#USB_MASS_STORAGE_ENABLED}
      • - *
      • {@link Settings.Global#WIFI_SLEEP_POLICY}
      • - *
      • {@link Settings.Global#STAY_ON_WHILE_PLUGGED_IN} This setting is only available from - * {@link android.os.Build.VERSION_CODES#M} onwards and can only be set if + *
      • {@link android.provider.Settings.Global#ADB_ENABLED}
      • + *
      • {@link android.provider.Settings.Global#AUTO_TIME}
      • + *
      • {@link android.provider.Settings.Global#AUTO_TIME_ZONE}
      • + *
      • {@link android.provider.Settings.Global#DATA_ROAMING}
      • + *
      • {@link android.provider.Settings.Global#USB_MASS_STORAGE_ENABLED}
      • + *
      • {@link android.provider.Settings.Global#WIFI_SLEEP_POLICY}
      • + *
      • {@link android.provider.Settings.Global#STAY_ON_WHILE_PLUGGED_IN} This setting is only + * available from {@link android.os.Build.VERSION_CODES#M} onwards and can only be set if * {@link #setMaximumTimeToLock} is not used to set a timeout.
      • - *
      • {@link Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN}
      • This setting is only - * available from {@link android.os.Build.VERSION_CODES#M} onwards. + *
      • {@link android.provider.Settings.Global#WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN}
      • This + * setting is only available from {@link android.os.Build.VERSION_CODES#M} onwards. *
      *

      * Changing the following settings has no effect as of {@link android.os.Build.VERSION_CODES#M}: *

        - *
      • {@link Settings.Global#BLUETOOTH_ON}. Use + *
      • {@link android.provider.Settings.Global#BLUETOOTH_ON}. Use * {@link android.bluetooth.BluetoothAdapter#enable()} and * {@link android.bluetooth.BluetoothAdapter#disable()} instead.
      • - *
      • {@link Settings.Global#DEVELOPMENT_SETTINGS_ENABLED}
      • - *
      • {@link Settings.Global#MODE_RINGER}. Use + *
      • {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED}
      • + *
      • {@link android.provider.Settings.Global#MODE_RINGER}. Use * {@link android.media.AudioManager#setRingerMode(int)} instead.
      • - *
      • {@link Settings.Global#NETWORK_PREFERENCE}
      • - *
      • {@link Settings.Global#WIFI_ON}. Use + *
      • {@link android.provider.Settings.Global#NETWORK_PREFERENCE}
      • + *
      • {@link android.provider.Settings.Global#WIFI_ON}. Use * {@link android.net.wifi.WifiManager#setWifiEnabled(boolean)} instead.
      • *
      * @@ -6470,19 +6471,19 @@ public class DevicePolicyManager { } /** - * Called by profile or device owners to update {@link Settings.Secure} settings. Validation - * that the value of the setting is in the correct form for the setting type should be performed - * by the caller. + * Called by profile or device owners to update {@link android.provider.Settings.Secure} + * settings. Validation that the value of the setting is in the correct form for the setting + * type should be performed by the caller. *

      * The settings that can be updated by a profile or device owner with this method are: *

        - *
      • {@link Settings.Secure#DEFAULT_INPUT_METHOD}
      • - *
      • {@link Settings.Secure#SKIP_FIRST_USE_HINTS}
      • + *
      • {@link android.provider.Settings.Secure#DEFAULT_INPUT_METHOD}
      • + *
      • {@link android.provider.Settings.Secure#SKIP_FIRST_USE_HINTS}
      • *
      *

      * A device owner can additionally update the following settings: *

        - *
      • {@link Settings.Secure#LOCATION_MODE}
      • + *
      • {@link android.provider.Settings.Secure#LOCATION_MODE}
      • *
      * * Note: Starting from Android O, apps should no longer call this method with the diff --git a/core/java/android/app/admin/DnsEvent.java b/core/java/android/app/admin/DnsEvent.java index c21725f0e86f695e8a1dbfac135c9e7fc355c6ea..f84c5b00a135aa996301d6fb75de06fba47dbb43 100644 --- a/core/java/android/app/admin/DnsEvent.java +++ b/core/java/android/app/admin/DnsEvent.java @@ -26,7 +26,10 @@ import java.util.Collections; import java.util.List; /** - * A class that represents a DNS lookup event. + * A class that represents a DNS lookup event initiated through the standard network stack. + * + *

      It contains information about the originating app as well as the DNS hostname and resolved + * IP addresses. */ public final class DnsEvent extends NetworkEvent implements Parcelable { diff --git a/core/java/android/app/admin/PasswordMetrics.java b/core/java/android/app/admin/PasswordMetrics.java index ea3f560d02db2c69ea364cf772e7a2998ea867da..4658a47444f99b58f97eac52b6edf02bf4dfea47 100644 --- a/core/java/android/app/admin/PasswordMetrics.java +++ b/core/java/android/app/admin/PasswordMetrics.java @@ -18,13 +18,11 @@ package android.app.admin; import android.annotation.IntDef; import android.annotation.NonNull; -import android.app.admin.DevicePolicyManager; -import android.os.Parcelable; import android.os.Parcel; +import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.io.IOException; /** * A class that represents the metrics of a password that are used to decide whether or not a @@ -159,6 +157,22 @@ public class PasswordMetrics implements Parcelable { quality, length, letters, upperCase, lowerCase, numeric, symbols, nonLetter); } + @Override + public boolean equals(Object other) { + if (!(other instanceof PasswordMetrics)) { + return false; + } + PasswordMetrics o = (PasswordMetrics) other; + return this.quality == o.quality + && this.length == o.length + && this.letters == o.letters + && this.upperCase == o.upperCase + && this.lowerCase == o.lowerCase + && this.numeric == o.numeric + && this.symbols == o.symbols + && this.nonLetter == o.nonLetter; + } + /* * Returns the maximum length of a sequential characters. A sequence is defined as * monotonically increasing characters with a constant interval or the same character repeated. diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java index 4e8277c388de85e678d52ead5c000daff7e6d52b..9383626360dc44bb16805a0ddd6f69d3cb79b5dc 100644 --- a/core/java/android/app/assist/AssistStructure.java +++ b/core/java/android/app/assist/AssistStructure.java @@ -1260,12 +1260,12 @@ public class AssistStructure implements Parcelable { *

      Typically used when the view associated with the view is a container for an HTML * document. * - * WARNING: a {@link android.service.autofill.AutofillService} should only - * use this domain for autofill purposes when it trusts the app generating it (i.e., the app - * defined by {@link AssistStructure#getActivityComponent()}). + *

      Warning: an autofill service cannot trust the value reported by this method + * without verifing its authenticity—see the "Web security" section of + * {@link android.service.autofill.AutofillService} for more details. * * @return domain-only part of the document. For example, if the full URL is - * {@code http://my.site/login?user=my_user}, it returns {@code my.site}. + * {@code https://example.com/login?user=my_user}, it returns {@code example.com}. */ @Nullable public String getWebDomain() { return mWebDomain; @@ -1905,6 +1905,10 @@ public class AssistStructure implements Parcelable { activity.getActivityToken()); for (int i=0; i + * Threading + *

      + * The constructor, as well as {@link #onCreate()} and {@link #onDestroy()} lifecycle callbacks run + * on the main thread (UI thread) of the application that implements the BackupAgent. + * The data-handling callbacks: + * {@link #onBackup(ParcelFileDescriptor, BackupDataOutput, ParcelFileDescriptor) onBackup()}, + * {@link #onFullBackup(FullBackupDataOutput)}, + * {@link #onRestore(BackupDataInput, int, ParcelFileDescriptor) onRestore()}, + * {@link #onRestoreFile(ParcelFileDescriptor, long, File, int, long, long) onRestoreFile()}, + * {@link #onRestoreFinished()}, and {@link #onQuotaExceeded(long, long) onQuotaExceeded()} + * run on binder pool threads. * * @see android.app.backup.BackupManager * @see android.app.backup.BackupAgentHelper diff --git a/core/java/android/app/backup/IBackupManager.aidl b/core/java/android/app/backup/IBackupManager.aidl index 9c3b11009243e4224252c49bc51c1e17d4d15edd..f1dc6d293914d1a700ae74c2b3eab49d01971190 100644 --- a/core/java/android/app/backup/IBackupManager.aidl +++ b/core/java/android/app/backup/IBackupManager.aidl @@ -56,6 +56,15 @@ interface IBackupManager { */ void clearBackupData(String transportName, String packageName); + /** + * Run an initialize operation on the given transports. This will wipe all data from + * the backing data store and establish a clean starting point for all backup + * operations. + * + *

      Callers must hold the android.permission.BACKUP permission to use this method. + */ + void initializeTransports(in String[] transportNames, IBackupObserver observer); + /** * Notifies the Backup Manager Service that an agent has become available. This * method is only invoked by the Activity Manager. diff --git a/core/java/android/app/backup/IBackupObserver.aidl b/core/java/android/app/backup/IBackupObserver.aidl index 821a58946311de746eec7cd00fcc52623d410aec..07a6634b5a1e5a4ec3b87941e8c7f9782903aa3f 100644 --- a/core/java/android/app/backup/IBackupObserver.aidl +++ b/core/java/android/app/backup/IBackupObserver.aidl @@ -29,20 +29,22 @@ oneway interface IBackupObserver { * This method could be called several times for packages with full data backup. * It will tell how much of backup data is already saved and how much is expected. * - * @param currentBackupPackage The name of the package that now being backuped. + * @param currentBackupPackage The name of the package that now being backed up. * @param backupProgress Current progress of backup for the package. */ void onUpdate(String currentPackage, in BackupProgress backupProgress); /** - * The backup of single package has completed. This method will be called at most one time - * for each package and could be not called if backup is failed before and - * backupFinished() is called. + * Backup of one package or initialization of one transport has completed. This + * method will be called at most one time for each package or transport, and might not + * be not called if the operation fails before backupFinished(); for example, if the + * requested package/transport does not exist. * - * @param currentBackupPackage The name of the package that was backuped. + * @param target The name of the package that was backed up, or of the transport + * that was initialized * @param status Zero on success; a nonzero error code if the backup operation failed. */ - void onResult(String currentPackage, int status); + void onResult(String target, int status); /** * The backup process has completed. This method will always be called, diff --git a/core/java/android/app/backup/RestoreDescription.java b/core/java/android/app/backup/RestoreDescription.java index 611ff07c8d0c230a043926891335690576519277..0250326e42f273acc47f73b01a4a30635c74ac41 100644 --- a/core/java/android/app/backup/RestoreDescription.java +++ b/core/java/android/app/backup/RestoreDescription.java @@ -34,7 +34,7 @@ public class RestoreDescription implements Parcelable { private final String mPackageName; private final int mDataType; - private static final String NO_MORE_PACKAGES_SENTINEL = ""; + private static final String NO_MORE_PACKAGES_SENTINEL = "NO_MORE_PACKAGES"; /** * Return this constant RestoreDescription from BackupTransport.nextRestorePackage() diff --git a/core/java/android/app/backup/WallpaperBackupHelper.java b/core/java/android/app/backup/WallpaperBackupHelper.java index f9874685167860be38fb0e5aa117dff18e0179b4..36f5f96732362502bd069e30ba429b8a849ea74d 100644 --- a/core/java/android/app/backup/WallpaperBackupHelper.java +++ b/core/java/android/app/backup/WallpaperBackupHelper.java @@ -18,20 +18,19 @@ package android.app.backup; import android.app.WallpaperManager; import android.content.Context; -import android.graphics.BitmapFactory; -import android.graphics.Point; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.UserHandle; import android.util.Slog; -import android.view.Display; -import android.view.WindowManager; import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; /** - * Helper for backing up / restoring wallpapers. Basically an AbsoluteFileBackupHelper, - * but with logic for deciding what to do with restored wallpaper images. + * We no longer back up wallpapers with this helper, but we do need to process restores + * of legacy backup payloads. We just take the restored image as-is and apply it as the + * system wallpaper using the public "set the wallpaper" API. * * @hide */ @@ -39,83 +38,34 @@ public class WallpaperBackupHelper extends FileBackupHelperBase implements Backu private static final String TAG = "WallpaperBackupHelper"; private static final boolean DEBUG = false; - // If 'true', then apply an acceptable-size heuristic at restore time, dropping back - // to the factory default wallpaper if the restored one differs "too much" from the - // device's preferred wallpaper image dimensions. - private static final boolean REJECT_OUTSIZED_RESTORE = false; - - // When outsized restore rejection is enabled, this is the maximum ratio between the - // source and target image heights that will be permitted. The ratio is checked both - // ways (i.e. >= MAX, or <= 1/MAX) to validate restores from both largeer-than-target - // and smaller-than-target sources. - private static final double MAX_HEIGHT_RATIO = 1.35; - - // The height ratio check when applying larger images on smaller screens is separate; - // in current policy we accept any such restore regardless of the relative dimensions. - private static final double MIN_HEIGHT_RATIO = 0; - - // This path must match what the WallpaperManagerService uses - // TODO: Will need to change if backing up non-primary user's wallpaper - // http://b/22388012 - public static final String WALLPAPER_IMAGE = - new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), - "wallpaper").getAbsolutePath(); - public static final String WALLPAPER_ORIG_IMAGE = - new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), - "wallpaper_orig").getAbsolutePath(); - public static final String WALLPAPER_INFO = - new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), - "wallpaper_info.xml").getAbsolutePath(); - // Use old keys to keep legacy data compatibility and avoid writing two wallpapers + // Key that legacy wallpaper imagery was stored under public static final String WALLPAPER_IMAGE_KEY = "/data/data/com.android.settings/files/wallpaper"; public static final String WALLPAPER_INFO_KEY = "/data/system/wallpaper_info.xml"; - // Stage file - should be adjacent to the WALLPAPER_IMAGE location. The wallpapers - // will be saved to this file from the restore stream, then renamed to the proper - // location if it's deemed suitable. - // TODO: Will need to change if backing up non-primary user's wallpaper - // http://b/22388012 + // Stage file that the restored imagery is stored to prior to being applied + // as the system wallpaper. private static final String STAGE_FILE = new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), "wallpaper-tmp").getAbsolutePath(); - Context mContext; - String[] mFiles; - String[] mKeys; - double mDesiredMinWidth; - double mDesiredMinHeight; + private final String[] mKeys; + private final WallpaperManager mWpm; /** - * Construct a helper for backing up / restoring the files at the given absolute locations - * within the file system. + * Legacy wallpaper restores, from back when the imagery was stored under the + * "android" system package as file key/value entities. * * @param context * @param files */ - public WallpaperBackupHelper(Context context, String[] files, String[] keys) { + public WallpaperBackupHelper(Context context, String[] keys) { super(context); mContext = context; - mFiles = files; mKeys = keys; - final WindowManager wm = - (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - final WallpaperManager wpm = - (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE); - final Display d = wm.getDefaultDisplay(); - final Point size = new Point(); - d.getSize(size); - mDesiredMinWidth = Math.min(size.x, size.y); - mDesiredMinHeight = (double) wpm.getDesiredMinimumHeight(); - if (mDesiredMinHeight <= 0) { - mDesiredMinHeight = size.y; - } - - if (DEBUG) { - Slog.d(TAG, "dmW=" + mDesiredMinWidth + " dmH=" + mDesiredMinHeight); - } + mWpm = (WallpaperManager) context.getSystemService(Context.WALLPAPER_SERVICE); } /** @@ -126,13 +76,12 @@ public class WallpaperBackupHelper extends FileBackupHelperBase implements Backu @Override public void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) { - performBackup_checked(oldState, data, newState, mFiles, mKeys); + // Intentionally no-op; we don't back up the wallpaper this way any more. } /** * Restore one absolute file entity from the restore stream. If we're restoring the - * magic wallpaper file, take specific action to determine whether it is suitable for - * the current device. + * magic wallpaper file, apply it as the system wallpaper. */ @Override public void restoreEntity(BackupDataInputStream data) { @@ -140,69 +89,21 @@ public class WallpaperBackupHelper extends FileBackupHelperBase implements Backu if (isKeyInList(key, mKeys)) { if (key.equals(WALLPAPER_IMAGE_KEY)) { // restore the file to the stage for inspection - File f = new File(STAGE_FILE); - if (writeFile(f, data)) { - - // Preflight the restored image's dimensions without loading it - BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; - BitmapFactory.decodeFile(STAGE_FILE, options); - - if (DEBUG) Slog.d(TAG, "Restoring wallpaper image w=" + options.outWidth - + " h=" + options.outHeight); - - if (REJECT_OUTSIZED_RESTORE) { - // We accept any wallpaper that is at least as wide as our preference - // (i.e. wide enough to fill the screen), and is within a comfortable - // factor of the target height, to avoid significant clipping/scaling/ - // letterboxing. At this point we know that mDesiredMinWidth is the - // smallest dimension, regardless of current orientation, so we can - // safely require that the candidate's width and height both exceed - // that hard minimum. - final double heightRatio = mDesiredMinHeight / options.outHeight; - if (options.outWidth < mDesiredMinWidth - || options.outHeight < mDesiredMinWidth - || heightRatio >= MAX_HEIGHT_RATIO - || heightRatio <= MIN_HEIGHT_RATIO) { - // Not wide enough for the screen, or too short/tall to be a good fit - // for the height of the screen, broken image file, or the system's - // desires for wallpaper size are in a bad state. Probably one of the - // first two. - Slog.i(TAG, "Restored image dimensions (w=" - + options.outWidth + ", h=" + options.outHeight - + ") too far off target (tw=" - + mDesiredMinWidth + ", th=" + mDesiredMinHeight - + "); falling back to default wallpaper."); - f.delete(); - return; + File stage = new File(STAGE_FILE); + try { + if (writeFile(stage, data)) { + try (FileInputStream in = new FileInputStream(stage)) { + mWpm.setStream(in); + } catch (IOException e) { + Slog.e(TAG, "Unable to set restored wallpaper: " + e.getMessage()); } + } else { + Slog.e(TAG, "Unable to save restored wallpaper"); } - - // We passed the acceptable-dimensions test (if any), so we're going to - // use the restored image. That comes last, when we are done restoring - // both the pixels and the metadata. + } finally { + stage.delete(); } - } else if (key.equals(WALLPAPER_INFO_KEY)) { - // XML file containing wallpaper info - File f = new File(WALLPAPER_INFO); - writeFile(f, data); } } } - - /** - * Hook for the agent to call this helper upon completion of the restore. We do this - * upon completion so that we know both the imagery and the wallpaper info have - * been emplaced without requiring either or relying on ordering. - */ - public void onRestoreFinished() { - final File f = new File(STAGE_FILE); - if (f.exists()) { - // TODO: spin a service to copy the restored image to sd/usb storage, - // since it does not exist anywhere other than the private wallpaper - // file. - Slog.d(TAG, "Applying restored wallpaper image."); - f.renameTo(new File(WALLPAPER_ORIG_IMAGE)); - } - } } diff --git a/core/java/android/app/job/JobParameters.java b/core/java/android/app/job/JobParameters.java index 98bdde8efeabf19f3a954b2900e9330fafe15228..a6f6be22809c877652410770d5b045843e2122de 100644 --- a/core/java/android/app/job/JobParameters.java +++ b/core/java/android/app/job/JobParameters.java @@ -45,6 +45,18 @@ public class JobParameters implements Parcelable { /** @hide */ public static final int REASON_DEVICE_IDLE = 4; + /** @hide */ + public static String getReasonName(int reason) { + switch (reason) { + case REASON_CANCELED: return "canceled"; + case REASON_CONSTRAINTS_NOT_SATISFIED: return "constraints"; + case REASON_PREEMPT: return "preempt"; + case REASON_TIMEOUT: return "timeout"; + case REASON_DEVICE_IDLE: return "device_idle"; + default: return "unknown:" + reason; + } + } + private final int jobId; private final PersistableBundle extras; private final Bundle transientExtras; diff --git a/core/java/android/app/timezone/RulesUpdaterContract.java b/core/java/android/app/timezone/RulesUpdaterContract.java index 1f354af3f0f839f7c55a30dbc8e19d0109b81b24..74ed658875abec3924ddce32100f320ba916b024 100644 --- a/core/java/android/app/timezone/RulesUpdaterContract.java +++ b/core/java/android/app/timezone/RulesUpdaterContract.java @@ -51,7 +51,7 @@ public final class RulesUpdaterContract { * applies. */ public static final String ACTION_TRIGGER_RULES_UPDATE_CHECK = - "android.intent.action.timezone.TRIGGER_RULES_UPDATE_CHECK"; + "com.android.intent.action.timezone.TRIGGER_RULES_UPDATE_CHECK"; /** * The extra containing the {@code byte[]} that should be passed to @@ -61,7 +61,7 @@ public final class RulesUpdaterContract { * {@link #ACTION_TRIGGER_RULES_UPDATE_CHECK} intent has been processed. */ public static final String EXTRA_CHECK_TOKEN = - "android.intent.extra.timezone.CHECK_TOKEN"; + "com.android.intent.extra.timezone.CHECK_TOKEN"; /** * Creates an intent that would trigger a time zone rules update check. diff --git a/core/java/android/app/usage/NetworkStats.java b/core/java/android/app/usage/NetworkStats.java index 3670b914ecf378ccafd9ab9a452a4341103a562b..222e9a0e5e0c3ee0c3cbea99424fe2b9137fe729 100644 --- a/core/java/android/app/usage/NetworkStats.java +++ b/core/java/android/app/usage/NetworkStats.java @@ -97,12 +97,12 @@ public final class NetworkStats implements AutoCloseable { private NetworkStatsHistory.Entry mRecycledHistoryEntry = null; /** @hide */ - NetworkStats(Context context, NetworkTemplate template, long startTimestamp, + NetworkStats(Context context, NetworkTemplate template, int flags, long startTimestamp, long endTimestamp) throws RemoteException, SecurityException { final INetworkStatsService statsService = INetworkStatsService.Stub.asInterface( ServiceManager.getService(Context.NETWORK_STATS_SERVICE)); // Open network stats session - mSession = statsService.openSessionForUsageStats(context.getOpPackageName()); + mSession = statsService.openSessionForUsageStats(flags, context.getOpPackageName()); mCloseGuard.open("close"); mTemplate = template; mStartTimeStamp = startTimestamp; diff --git a/core/java/android/app/usage/NetworkStatsManager.java b/core/java/android/app/usage/NetworkStatsManager.java index ef262e046021c3bfda891b1adeea91c65af37bc3..853b00331a4dc18ece05b4cf4d068156ef4deb96 100644 --- a/core/java/android/app/usage/NetworkStatsManager.java +++ b/core/java/android/app/usage/NetworkStatsManager.java @@ -24,15 +24,14 @@ import android.app.usage.NetworkStats.Bucket; import android.content.Context; import android.net.ConnectivityManager; import android.net.DataUsageRequest; +import android.net.INetworkStatsService; import android.net.NetworkIdentity; import android.net.NetworkTemplate; -import android.net.INetworkStatsService; import android.os.Binder; -import android.os.Build; -import android.os.Message; -import android.os.Messenger; import android.os.Handler; import android.os.Looper; +import android.os.Message; +import android.os.Messenger; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; @@ -79,7 +78,7 @@ import android.util.Log; * In addition to tethering usage, usage by removed users and apps, and usage by the system * is also included in the results for callers with one of these higher levels of access. *

      - * NOTE: Prior to API level {@value Build.VERSION_CODES#N}, all calls to these APIs required + * NOTE: Prior to API level {@value android.os.Build.VERSION_CODES#N}, all calls to these APIs required * the above permission, even to access an app's own data usage, and carrier-privileged apps were * not included. */ @@ -96,6 +95,13 @@ public class NetworkStatsManager { private final Context mContext; private final INetworkStatsService mService; + /** @hide */ + public static final int FLAG_POLL_ON_OPEN = 1 << 0; + /** @hide */ + public static final int FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN = 1 << 1; + + private int mFlags; + /** * {@hide} */ @@ -103,6 +109,25 @@ public class NetworkStatsManager { mContext = context; mService = INetworkStatsService.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.NETWORK_STATS_SERVICE)); + setPollOnOpen(true); + } + + /** @hide */ + public void setPollOnOpen(boolean pollOnOpen) { + if (pollOnOpen) { + mFlags |= FLAG_POLL_ON_OPEN; + } else { + mFlags &= ~FLAG_POLL_ON_OPEN; + } + } + + /** @hide */ + public void setAugmentWithSubscriptionPlan(boolean augmentWithSubscriptionPlan) { + if (augmentWithSubscriptionPlan) { + mFlags |= FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN; + } else { + mFlags &= ~FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN; + } } /** @@ -136,7 +161,7 @@ public class NetworkStatsManager { } Bucket bucket = null; - NetworkStats stats = new NetworkStats(mContext, template, startTime, endTime); + NetworkStats stats = new NetworkStats(mContext, template, mFlags, startTime, endTime); bucket = stats.getDeviceSummaryForNetwork(); stats.close(); @@ -174,7 +199,7 @@ public class NetworkStatsManager { } NetworkStats stats; - stats = new NetworkStats(mContext, template, startTime, endTime); + stats = new NetworkStats(mContext, template, mFlags, startTime, endTime); stats.startSummaryEnumeration(); stats.close(); @@ -211,7 +236,7 @@ public class NetworkStatsManager { } NetworkStats result; - result = new NetworkStats(mContext, template, startTime, endTime); + result = new NetworkStats(mContext, template, mFlags, startTime, endTime); result.startSummaryEnumeration(); return result; @@ -260,7 +285,7 @@ public class NetworkStatsManager { NetworkStats result; try { - result = new NetworkStats(mContext, template, startTime, endTime); + result = new NetworkStats(mContext, template, mFlags, startTime, endTime); result.startHistoryEnumeration(uid, tag); } catch (RemoteException e) { Log.e(TAG, "Error while querying stats for uid=" + uid + " tag=" + tag, e); @@ -305,7 +330,7 @@ public class NetworkStatsManager { } NetworkStats result; - result = new NetworkStats(mContext, template, startTime, endTime); + result = new NetworkStats(mContext, template, mFlags, startTime, endTime); result.startUserUidEnumeration(); return result; } diff --git a/core/java/android/app/usage/StorageStatsManager.java b/core/java/android/app/usage/StorageStatsManager.java index 7c680794d140cf299012e58ff45e197f2e861744..3d187ec7cb508521597b24a13ada92d887dfa021 100644 --- a/core/java/android/app/usage/StorageStatsManager.java +++ b/core/java/android/app/usage/StorageStatsManager.java @@ -119,8 +119,7 @@ public class StorageStatsManager { * could be reclaimed by the system. *

      * Apps making logical decisions about disk space should always use - * {@link StorageManager#getAllocatableBytes(UUID, int)} instead of this - * value. + * {@link StorageManager#getAllocatableBytes(UUID)} instead of this value. * * @param storageUuid the UUID of the storage volume you're interested in, * such as {@link StorageManager#UUID_DEFAULT}. diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java index c1ff580cbce7a6ffed94dbe55b9c685ec4577020..37360bad73c7deba9e32f0fa3cd4fea78d111913 100644 --- a/core/java/android/appwidget/AppWidgetHost.java +++ b/core/java/android/appwidget/AppWidgetHost.java @@ -16,15 +16,13 @@ package android.appwidget; -import java.lang.ref.WeakReference; -import java.util.List; - import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.IntentSender; +import android.content.pm.PackageManager; import android.os.Binder; import android.os.Bundle; import android.os.Handler; @@ -42,6 +40,9 @@ import android.widget.RemoteViews.OnClickHandler; import com.android.internal.appwidget.IAppWidgetHost; import com.android.internal.appwidget.IAppWidgetService; +import java.lang.ref.WeakReference; +import java.util.List; + /** * AppWidgetHost provides the interaction with the AppWidget service for apps, * like the home screen, that want to embed AppWidgets in their UI. @@ -55,6 +56,7 @@ public class AppWidgetHost { final static Object sServiceLock = new Object(); static IAppWidgetService sService; + static boolean sServiceInitialized = false; private DisplayMetrics mDisplayMetrics; private String mContextOpPackageName; @@ -160,15 +162,21 @@ public class AppWidgetHost { mHandler = new UpdateHandler(looper); mCallbacks = new Callbacks(mHandler); mDisplayMetrics = context.getResources().getDisplayMetrics(); - bindService(); + bindService(context); } - private static void bindService() { + private static void bindService(Context context) { synchronized (sServiceLock) { - if (sService == null) { - IBinder b = ServiceManager.getService(Context.APPWIDGET_SERVICE); - sService = IAppWidgetService.Stub.asInterface(b); + if (sServiceInitialized) { + return; } + sServiceInitialized = true; + if (!context.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_APP_WIDGETS)) { + return; + } + IBinder b = ServiceManager.getService(Context.APPWIDGET_SERVICE); + sService = IAppWidgetService.Stub.asInterface(b); } } @@ -177,6 +185,9 @@ public class AppWidgetHost { * becomes visible, i.e. from onStart() in your Activity. */ public void startListening() { + if (sService == null) { + return; + } final int[] idsToUpdate; synchronized (mViews) { int N = mViews.size(); @@ -215,6 +226,9 @@ public class AppWidgetHost { * no longer visible, i.e. from onStop() in your Activity. */ public void stopListening() { + if (sService == null) { + return; + } try { sService.stopListening(mContextOpPackageName, mHostId); } @@ -229,6 +243,9 @@ public class AppWidgetHost { * @return a appWidgetId */ public int allocateAppWidgetId() { + if (sService == null) { + return -1; + } try { return sService.allocateAppWidgetId(mContextOpPackageName, mHostId); } @@ -258,6 +275,9 @@ public class AppWidgetHost { */ public final void startAppWidgetConfigureActivityForResult(@NonNull Activity activity, int appWidgetId, int intentFlags, int requestCode, @Nullable Bundle options) { + if (sService == null) { + return; + } try { IntentSender intentSender = sService.createAppWidgetConfigIntentSender( mContextOpPackageName, appWidgetId, intentFlags); @@ -278,10 +298,10 @@ public class AppWidgetHost { * Gets a list of all the appWidgetIds that are bound to the current host */ public int[] getAppWidgetIds() { + if (sService == null) { + return new int[0]; + } try { - if (sService == null) { - bindService(); - } return sService.getAppWidgetIdsForHost(mContextOpPackageName, mHostId); } catch (RemoteException e) { throw new RuntimeException("system server dead?", e); @@ -292,6 +312,9 @@ public class AppWidgetHost { * Stop listening to changes for this AppWidget. */ public void deleteAppWidgetId(int appWidgetId) { + if (sService == null) { + return; + } synchronized (mViews) { mViews.remove(appWidgetId); try { @@ -312,6 +335,9 @@ public class AppWidgetHost { *

    */ public void deleteHost() { + if (sService == null) { + return; + } try { sService.deleteHost(mContextOpPackageName, mHostId); } @@ -329,6 +355,9 @@ public class AppWidgetHost { *
*/ public static void deleteAllHosts() { + if (sService == null) { + return; + } try { sService.deleteAllHosts(); } @@ -343,6 +372,9 @@ public class AppWidgetHost { */ public final AppWidgetHostView createView(Context context, int appWidgetId, AppWidgetProviderInfo appWidget) { + if (sService == null) { + return null; + } AppWidgetHostView view = onCreateView(context, appWidgetId, appWidget); view.setOnClickHandler(mOnClickHandler); view.setAppWidget(appWidgetId, appWidget); diff --git a/core/java/android/bluetooth/BluetoothHidDevice.java b/core/java/android/bluetooth/BluetoothHidDevice.java index bfee27974f57558e9e7c877105b3df39a5d0446f..5a203d0f29b8664e9cf55045fbd03e5a4fd4ba7a 100644 --- a/core/java/android/bluetooth/BluetoothHidDevice.java +++ b/core/java/android/bluetooth/BluetoothHidDevice.java @@ -83,7 +83,7 @@ public final class BluetoothHidDevice implements BluetoothProfile { public static final byte SUBCLASS2_GAMEPAD = (byte) 0x02; public static final byte SUBCLASS2_REMOTE_CONTROL = (byte) 0x03; public static final byte SUBCLASS2_SENSING_DEVICE = (byte) 0x04; - public static final byte SUBCLASS2_DIGITIZER_TABLET = (byte) 0x05; + public static final byte SUBCLASS2_DIGITIZER_TABLED = (byte) 0x05; public static final byte SUBCLASS2_CARD_READER = (byte) 0x06; /** diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java index 7fc79d79a6415a5766ce9870479bff29c5138e56..a189e271379ad1b9a8a3557ec8874ab0f9ab70a9 100644 --- a/core/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java @@ -143,6 +143,11 @@ public final class BluetoothLeScanner { * the PendingIntent. Use this method of scanning if your process is not always running and it * should be started when scan results are available. *

+ * An app must hold + * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or + * {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION} permission + * in order to get results. + *

* When the PendingIntent is delivered, the Intent passed to the receiver or activity * will contain one or more of the extras {@link #EXTRA_CALLBACK_TYPE}, * {@link #EXTRA_ERROR_CODE} and {@link #EXTRA_LIST_SCAN_RESULT} to indicate the result of diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java index 076deab5d211a8ff48fdd216f076a587f3681eec..b2952aab233499ed371c728b5cff7fdc1478f64a 100644 --- a/core/java/android/companion/CompanionDeviceManager.java +++ b/core/java/android/companion/CompanionDeviceManager.java @@ -113,8 +113,8 @@ public final class CompanionDeviceManager { * *

If your app needs to be excluded from battery optimizations (run in the background) * or to have unrestricted data access (use data in the background) you can declare that - * you use the {@link android.Manifest.permission#RUN_IN_BACKGROUND} and {@link - * android.Manifest.permission#USE_DATA_IN_BACKGROUND} respectively. Note that these + * you use the {@link android.Manifest.permission#REQUEST_COMPANION_RUN_IN_BACKGROUND} and {@link + * android.Manifest.permission#REQUEST_COMPANION_USE_DATA_IN_BACKGROUND} respectively. Note that these * special capabilities have a negative effect on the device's battery and user's data * usage, therefore you should requested them when absolutely necessary.

* diff --git a/core/java/android/content/BroadcastReceiver.java b/core/java/android/content/BroadcastReceiver.java index f9077218dfe53c5c894bdf10338d1ec735cf7692..58a9183d1b0968b4fb75e1f8261b59076b848710 100644 --- a/core/java/android/content/BroadcastReceiver.java +++ b/core/java/android/content/BroadcastReceiver.java @@ -338,7 +338,7 @@ public abstract class BroadcastReceiver { * before they system will consider them non-responsive and ANR the app. Since these usually * execute on the app's main thread, they are already bound by the ~5 second time limit * of various operations that can happen there (not to mention just avoiding UI jank), so - * the receive limit is generally not of concern. However, once you use {@goAsync}, though + * the receive limit is generally not of concern. However, once you use {@code goAsync}, though * able to be off the main thread, the broadcast execution limit still applies, and that * includes the time spent between calling this method and ultimately * {@link PendingResult#finish() PendingResult.finish()}.

diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index 64e464c318d3aed2d08a9042aad1b4a66e2ed168..cdeaea3ebcae17b88eccf35bcf15f96d3c2b05df 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -39,7 +39,6 @@ import android.os.Bundle; import android.os.CancellationSignal; import android.os.IBinder; import android.os.ICancellationSignal; -import android.os.OperationCanceledException; import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.RemoteException; @@ -47,7 +46,6 @@ import android.os.UserHandle; import android.os.storage.StorageManager; import android.text.TextUtils; import android.util.Log; -import android.util.MathUtils; import java.io.File; import java.io.FileDescriptor; @@ -1047,7 +1045,7 @@ public abstract class ContentProvider implements ComponentCallbacks2 { * @param sortOrder How the rows in the cursor should be sorted. * If {@code null} then the provider is free to define the sort order. * @param cancellationSignal A signal to cancel the operation in progress, or {@code null} if none. - * If the operation is canceled, then {@link OperationCanceledException} will be thrown + * If the operation is canceled, then {@link android.os.OperationCanceledException} will be thrown * when the query is executed. * @return a Cursor or {@code null}. */ diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 654b8dad72b082be05043f53c5667a4771f9e72f..7e2ac637284191d541e21ff3f5875ed7d98c6426 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -64,6 +64,7 @@ import android.view.DisplayAdjustments; import android.view.View; import android.view.ViewDebug; import android.view.WindowManager; +import android.view.autofill.AutofillManager.AutofillClient; import android.view.textclassifier.TextClassificationManager; import java.io.File; @@ -2934,6 +2935,7 @@ public abstract class Context { WIFI_AWARE_SERVICE, WIFI_P2P_SERVICE, WIFI_SCANNING_SERVICE, + //@hide: LOWPAN_SERVICE, //@hide: WIFI_RTT_SERVICE, //@hide: ETHERNET_SERVICE, WIFI_RTT_SERVICE, @@ -2989,7 +2991,8 @@ public abstract class Context { SHORTCUT_SERVICE, //@hide: CONTEXTHUB_SERVICE, SYSTEM_HEALTH_SERVICE, - //@hide: INCIDENT_SERVICE + //@hide: INCIDENT_SERVICE, + COMPANION_DEVICE_SERVICE }) @Retention(RetentionPolicy.SOURCE) public @interface ServiceName {} @@ -3462,6 +3465,18 @@ public abstract class Context { @SystemApi public static final String WIFI_RTT_SERVICE = "rttmanager"; + /** + * Use with {@link #getSystemService} to retrieve a {@link + * android.net.lowpan.LowpanManager} for handling management of + * LoWPAN access. + * + * @see #getSystemService + * @see android.net.lowpan.LowpanManager + * + * @hide + */ + public static final String LOWPAN_SERVICE = "lowpan"; + /** * Use with {@link #getSystemService} to retrieve a {@link * android.net.EthernetManager} for handling management of @@ -3949,7 +3964,7 @@ public abstract class Context { * @see #getSystemService * @hide */ - public static final String RADIO_SERVICE = "radio"; + public static final String RADIO_SERVICE = "broadcastradio"; /** * Use with {@link #getSystemService} to retrieve a @@ -4752,6 +4767,19 @@ public abstract class Context { throw new RuntimeException("Not implemented. Must override in a subclass."); } + /** + * @hide + */ + public AutofillClient getAutofillClient() { + return null; + } + + /** + * @hide + */ + public void setAutofillClient(AutofillClient client) { + } + /** * Throws an exception if the Context is using system resources, * which are non-runtime-overlay-themable and may show inconsistent UI. diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index a9fd58bc950ce393a03d5527b9bbb22fa9053f61..85acdc6b8101ab14849c817885a65ba0f848c49b 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -37,6 +37,7 @@ import android.os.Looper; import android.os.UserHandle; import android.view.Display; import android.view.DisplayAdjustments; +import android.view.autofill.AutofillManager.AutofillClient; import java.io.File; import java.io.FileInputStream; @@ -967,7 +968,24 @@ public class ContextWrapper extends Context { /** * @hide */ + @Override public int getNextAutofillId() { return mBase.getNextAutofillId(); } + + /** + * @hide + */ + @Override + public AutofillClient getAutofillClient() { + return mBase.getAutofillClient(); + } + + /** + * @hide + */ + @Override + public void setAutofillClient(AutofillClient client) { + mBase.setAutofillClient(client); + } } diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 6ed1fb7334b084d0234106f5debcf45e2ec8bf4e..8ff6699e81d11264f4bd198b7fcd8adc32971a3b 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -1459,6 +1459,7 @@ public class Intent implements Parcelable, Cloneable { * @deprecated As of {@link android.os.Build.VERSION_CODES#M}, setup wizard can be identified * using {@link #ACTION_MAIN} and {@link #CATEGORY_SETUP_WIZARD} * @hide + * @removed */ @Deprecated @SystemApi @@ -1534,8 +1535,25 @@ public class Intent implements Parcelable, Cloneable { @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_INSTALL_PACKAGE = "android.intent.action.INSTALL_PACKAGE"; + /** + * Activity Action: Activity to handle split installation failures. + *

Splits may be installed dynamically. This happens when an Activity is launched, + * but the split that contains the application isn't installed. When a split is + * installed in this manner, the containing package usually doesn't know this is + * happening. However, if an error occurs during installation, the containing + * package can define a single activity handling this action to deal with such + * failures. + *

The activity handling this action must be in the base package. + *

+ * Input: {@link #EXTRA_INTENT} the original intent that started split installation. + * {@link #EXTRA_SPLIT_NAME} the name of the split that failed to be installed. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_INSTALL_FAILURE = "android.intent.action.INSTALL_FAILURE"; + /** * @hide + * @removed * @deprecated Do not use. This will go away. * Replace with {@link #ACTION_INSTALL_INSTANT_APP_PACKAGE}. */ @@ -1558,6 +1576,7 @@ public class Intent implements Parcelable, Cloneable { /** * @hide + * @removed * @deprecated Do not use. This will go away. * Replace with {@link #ACTION_RESOLVE_INSTANT_APP_PACKAGE}. */ @@ -1581,6 +1600,7 @@ public class Intent implements Parcelable, Cloneable { /** * @hide + * @removed * @deprecated Do not use. This will go away. * Replace with {@link #ACTION_INSTANT_APP_RESOLVER_SETTINGS}. */ @@ -1823,9 +1843,7 @@ public class Intent implements Parcelable, Cloneable { *

* Type: String *

- * @hide */ - @SystemApi public static final String EXTRA_SPLIT_NAME = "android.intent.extra.SPLIT_NAME"; /** @@ -2207,7 +2225,12 @@ public class Intent implements Parcelable, Cloneable { * Note that the cleared package does not * receive this broadcast. The data contains the name of the package. *
    - *
  • {@link #EXTRA_UID} containing the integer uid assigned to the package. + *
  • {@link #EXTRA_UID} containing the integer uid assigned to the package. If the + * package whose data was cleared is an uninstalled instant app, then the UID + * will be -1. The platform keeps some meta-data associated with instant apps + * after they are uninstalled. + *
  • {@link #EXTRA_PACKAGE_NAME} containing the package name only if the cleared + * data was for an instant app. *
* *

This is a protected intent that can only be sent @@ -3389,6 +3412,7 @@ public class Intent implements Parcelable, Cloneable { /** * Deprecated - use ACTION_FACTORY_RESET instead. * @hide + * @removed */ @Deprecated @SystemApi @@ -3524,6 +3548,7 @@ public class Intent implements Parcelable, Cloneable { * *

This is a protected intent that can only be sent by the system. * @hide + * @removed */ @Deprecated @SystemApi @@ -3538,6 +3563,7 @@ public class Intent implements Parcelable, Cloneable { * @see android.telephony.ServiceState#STATE_OUT_OF_SERVICE * @see android.telephony.ServiceState#STATE_POWER_OFF * @hide + * @removed */ @Deprecated @SystemApi @@ -3550,6 +3576,7 @@ public class Intent implements Parcelable, Cloneable { * @see android.telephony.ServiceState#STATE_OUT_OF_SERVICE * @see android.telephony.ServiceState#STATE_POWER_OFF * @hide + * @removed */ @Deprecated @SystemApi @@ -3559,6 +3586,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which indicates the voice roaming * type. * @hide + * @removed */ @Deprecated @SystemApi @@ -3568,6 +3596,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which indicates the data roaming * type. * @hide + * @removed */ @Deprecated @SystemApi @@ -3578,6 +3607,7 @@ public class Intent implements Parcelable, Cloneable { * registered voice operator name in long alphanumeric format. * {@code null} if the operator name is not known or unregistered. * @hide + * @removed */ @Deprecated @SystemApi @@ -3588,6 +3618,7 @@ public class Intent implements Parcelable, Cloneable { * registered voice operator name in short alphanumeric format. * {@code null} if the operator name is not known or unregistered. * @hide + * @removed */ @Deprecated @SystemApi @@ -3598,6 +3629,7 @@ public class Intent implements Parcelable, Cloneable { * (Mobile Country Code, 3 digits) and MNC (Mobile Network code, 2-3 digits) for the mobile * network. * @hide + * @removed */ @Deprecated @SystemApi @@ -3608,6 +3640,7 @@ public class Intent implements Parcelable, Cloneable { * registered data operator name in long alphanumeric format. * {@code null} if the operator name is not known or unregistered. * @hide + * @removed */ @Deprecated @SystemApi @@ -3618,6 +3651,7 @@ public class Intent implements Parcelable, Cloneable { * registered data operator name in short alphanumeric format. * {@code null} if the operator name is not known or unregistered. * @hide + * @removed */ @Deprecated @SystemApi @@ -3628,6 +3662,7 @@ public class Intent implements Parcelable, Cloneable { * (Mobile Country Code, 3 digits) and MNC (Mobile Network code, 2-3 digits) for the * data operator. * @hide + * @removed */ @Deprecated @SystemApi @@ -3638,6 +3673,7 @@ public class Intent implements Parcelable, Cloneable { * network selection mode is manual. * Will be {@code true} if manual mode, {@code false} if automatic mode. * @hide + * @removed */ @Deprecated @SystemApi @@ -3647,6 +3683,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which represents the current voice * radio technology. * @hide + * @removed */ @Deprecated @SystemApi @@ -3656,6 +3693,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which represents the current data * radio technology. * @hide + * @removed */ @Deprecated @SystemApi @@ -3666,6 +3704,7 @@ public class Intent implements Parcelable, Cloneable { * support on CDMA network. * Will be {@code true} if support, {@code false} otherwise. * @hide + * @removed */ @Deprecated @SystemApi @@ -3675,6 +3714,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which represents the CDMA network * id. {@code Integer.MAX_VALUE} if unknown. * @hide + * @removed */ @Deprecated @SystemApi @@ -3684,6 +3724,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} which represents the CDMA system id. * {@code Integer.MAX_VALUE} if unknown. * @hide + * @removed */ @Deprecated @SystemApi @@ -3693,6 +3734,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} represents the TSB-58 roaming * indicator if registered on a CDMA or EVDO system or {@code -1} if not. * @hide + * @removed */ @Deprecated @SystemApi @@ -3702,6 +3744,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} represents the default roaming * indicator from the PRL if registered on a CDMA or EVDO system {@code -1} if not. * @hide + * @removed */ @Deprecated @SystemApi @@ -3712,6 +3755,7 @@ public class Intent implements Parcelable, Cloneable { * only mode. * {@code true} if in emergency only mode, {@code false} otherwise. * @hide + * @removed */ @Deprecated @SystemApi @@ -3722,6 +3766,7 @@ public class Intent implements Parcelable, Cloneable { * registration state is roaming. * {@code true} if registration indicates roaming, {@code false} otherwise * @hide + * @removed */ @Deprecated @SystemApi @@ -3733,6 +3778,7 @@ public class Intent implements Parcelable, Cloneable { * aggregation is in use. * {@code true} if carrier aggregation is in use, {@code false} otherwise. * @hide + * @removed */ @Deprecated @SystemApi @@ -3742,6 +3788,7 @@ public class Intent implements Parcelable, Cloneable { * An integer extra used with {@link #ACTION_SERVICE_STATE} representing the offset which * is reduced from the rsrp threshold while calculating signal strength level. * @hide + * @removed */ @Deprecated @SystemApi @@ -3907,6 +3954,16 @@ public class Intent implements Parcelable, Cloneable { */ @SdkConstant(SdkConstantType.INTENT_CATEGORY) public static final String CATEGORY_SETUP_WIZARD = "android.intent.category.SETUP_WIZARD"; + /** + * This is the home activity, that is the activity that serves as the launcher app + * from there the user can start other apps. Often components with lower/higher + * priority intent filters handle the home intent, for example SetupWizard, to + * setup the device and we need to be able to distinguish the home app from these + * setup helpers. + * @hide + */ + @SdkConstant(SdkConstantType.INTENT_CATEGORY) + public static final String CATEGORY_LAUNCHER_APP = "android.intent.category.LAUNCHER_APP"; /** * This activity is a preference panel. */ @@ -5592,6 +5649,16 @@ public class Intent implements Parcelable, Cloneable { // --------------------------------------------------------------------- + private static final int COPY_MODE_ALL = 0; + private static final int COPY_MODE_FILTER = 1; + private static final int COPY_MODE_HISTORY = 2; + + /** @hide */ + @IntDef(value = {COPY_MODE_ALL, COPY_MODE_FILTER, COPY_MODE_HISTORY}) + @Retention(RetentionPolicy.SOURCE) + public @interface CopyMode {} + + /** * Create an empty intent. */ @@ -5602,28 +5669,46 @@ public class Intent implements Parcelable, Cloneable { * Copy constructor. */ public Intent(Intent o) { + this(o, COPY_MODE_ALL); + } + + private Intent(Intent o, @CopyMode int copyMode) { this.mAction = o.mAction; this.mData = o.mData; this.mType = o.mType; this.mPackage = o.mPackage; this.mComponent = o.mComponent; - this.mFlags = o.mFlags; - this.mContentUserHint = o.mContentUserHint; - this.mLaunchToken = o.mLaunchToken; + if (o.mCategories != null) { - this.mCategories = new ArraySet(o.mCategories); - } - if (o.mExtras != null) { - this.mExtras = new Bundle(o.mExtras); - } - if (o.mSourceBounds != null) { - this.mSourceBounds = new Rect(o.mSourceBounds); + this.mCategories = new ArraySet<>(o.mCategories); } - if (o.mSelector != null) { - this.mSelector = new Intent(o.mSelector); - } - if (o.mClipData != null) { - this.mClipData = new ClipData(o.mClipData); + + if (copyMode != COPY_MODE_FILTER) { + this.mFlags = o.mFlags; + this.mContentUserHint = o.mContentUserHint; + this.mLaunchToken = o.mLaunchToken; + if (o.mSourceBounds != null) { + this.mSourceBounds = new Rect(o.mSourceBounds); + } + if (o.mSelector != null) { + this.mSelector = new Intent(o.mSelector); + } + + if (copyMode != COPY_MODE_HISTORY) { + if (o.mExtras != null) { + this.mExtras = new Bundle(o.mExtras); + } + if (o.mClipData != null) { + this.mClipData = new ClipData(o.mClipData); + } + } else { + if (o.mExtras != null && !o.mExtras.maybeIsEmpty()) { + this.mExtras = Bundle.STRIPPED; + } + + // Also set "stripped" clip data when we ever log mClipData in the (broadcast) + // history. + } } } @@ -5632,23 +5717,12 @@ public class Intent implements Parcelable, Cloneable { return new Intent(this); } - private Intent(Intent o, boolean all) { - this.mAction = o.mAction; - this.mData = o.mData; - this.mType = o.mType; - this.mPackage = o.mPackage; - this.mComponent = o.mComponent; - if (o.mCategories != null) { - this.mCategories = new ArraySet(o.mCategories); - } - } - /** * Make a clone of only the parts of the Intent that are relevant for * filter matching: the action, data, type, component, and categories. */ public @NonNull Intent cloneFilter() { - return new Intent(this, false); + return new Intent(this, COPY_MODE_FILTER); } /** @@ -7399,6 +7473,29 @@ public class Intent implements Parcelable, Cloneable { } } + /** + * @return Whether {@link #maybeStripForHistory} will return an lightened intent or + * return itself as-is. + * @hide + */ + public boolean canStripForHistory() { + return ((mExtras != null) && mExtras.isParcelled()) || (mClipData != null); + } + + /** + * Call it when the system needs to keep an intent for logging purposes to remove fields + * that are not needed for logging. + * @hide + */ + public Intent maybeStripForHistory() { + // TODO Scan and remove possibly heavy instances like Bitmaps from unparcelled extras? + + if (!canStripForHistory()) { + return this; + } + return new Intent(this, COPY_MODE_HISTORY); + } + /** * Retrieve any special flags associated with this intent. You will * normally just set them with {@link #setFlags} and let the system diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 86591407f54574f7df0fc57ce003ec1a869245e9..93338bb5b0254cd97aa6fb1413b05a0813ac7bb0 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Configuration.NativeConfig; +import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.util.Printer; @@ -439,6 +440,21 @@ public class ActivityInfo extends ComponentInfo */ public static final int FLAG_SUPPORTS_PICTURE_IN_PICTURE = 0x400000; + /** + * Bit in {@link #flags} indicating if the activity should be shown when locked. + * See {@link android.R.attr#showWhenLocked} + * @hide + */ + public static final int FLAG_SHOW_WHEN_LOCKED = 0x800000; + + /** + * Bit in {@link #flags} indicating if the screen should turn on when starting the activity. + * See {@link android.R.attr#turnScreenOn} + * @hide + */ + public static final int FLAG_TURN_SCREEN_ON = 0x1000000; + + /** * @hide Bit in {@link #flags}: If set, this component will only be seen * by the system user. Only works with broadcast receivers. Set from the @@ -460,6 +476,7 @@ public class ActivityInfo extends ComponentInfo * thrown. Set from the {@link android.R.attr#allowEmbedded} attribute. */ public static final int FLAG_ALLOW_EMBEDDED = 0x80000000; + /** * Options that have been set in the activity declaration in the * manifest. @@ -976,11 +993,19 @@ public class ActivityInfo extends ComponentInfo * Returns true if the activity's orientation is fixed. * @hide */ - boolean isFixedOrientation() { + public boolean isFixedOrientation() { return isFixedOrientationLandscape() || isFixedOrientationPortrait() || screenOrientation == SCREEN_ORIENTATION_LOCKED; } + /** + * Returns true if the specified orientation is considered fixed. + * @hide + */ + static public boolean isFixedOrientation(int orientation) { + return isFixedOrientationLandscape(orientation) || isFixedOrientationPortrait(orientation); + } + /** * Returns true if the activity's orientation is fixed to landscape. * @hide @@ -1071,12 +1096,12 @@ public class ActivityInfo extends ComponentInfo } /** @hide */ - public void dump(Printer pw, String prefix, int flags) { + public void dump(Printer pw, String prefix, int dumpFlags) { super.dumpFront(pw, prefix); if (permission != null) { pw.println(prefix + "permission=" + permission); } - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { pw.println(prefix + "taskAffinity=" + taskAffinity + " targetActivity=" + targetActivity + " persistableMode=" + persistableModeToString()); @@ -1095,7 +1120,7 @@ public class ActivityInfo extends ComponentInfo if (uiOptions != 0) { pw.println(prefix + " uiOptions=0x" + Integer.toHexString(uiOptions)); } - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { pw.println(prefix + "lockTaskLaunchMode=" + lockTaskLaunchModeToString(lockTaskLaunchMode)); } @@ -1111,7 +1136,7 @@ public class ActivityInfo extends ComponentInfo if (maxAspectRatio != 0) { pw.println(prefix + "maxAspectRatio=" + maxAspectRatio); } - super.dumpBack(pw, prefix, flags); + super.dumpBack(pw, prefix, dumpFlags); } public String toString() { @@ -1160,6 +1185,25 @@ public class ActivityInfo extends ComponentInfo dest.writeFloat(maxAspectRatio); } + /** + * Determines whether the {@link Activity} is considered translucent or floating. + * @hide + */ + public static boolean isTranslucentOrFloating(TypedArray attributes) { + final boolean isTranslucent = + attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent, + false); + final boolean isSwipeToDismiss = !attributes.hasValue( + com.android.internal.R.styleable.Window_windowIsTranslucent) + && attributes.getBoolean( + com.android.internal.R.styleable.Window_windowSwipeToDismiss, false); + final boolean isFloating = + attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating, + false); + + return isFloating || isTranslucent || isSwipeToDismiss; + } + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public ActivityInfo createFromParcel(Parcel source) { diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 70af021fe0c302276a92890a7346945558de422f..664bcbca6aba61870cdfe7d174d5c5d12901847d 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -572,18 +572,48 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public static final int PRIVATE_FLAG_STATIC_SHARED_LIBRARY = 1 << 14; /** - * Value for {@linl #privateFlags}: When set, the application will only have its splits loaded + * Value for {@link #privateFlags}: When set, the application will only have its splits loaded * if they are required to load a component. Splits can be loaded on demand using the * {@link Context#createContextForSplit(String)} API. * @hide */ public static final int PRIVATE_FLAG_ISOLATED_SPLIT_LOADING = 1 << 15; + /** + * Value for {@link #privateFlags}: When set, the application was installed as + * a virtual preload. + * @hide + */ + public static final int PRIVATE_FLAG_VIRTUAL_PRELOAD = 1 << 16; + + /** @hide */ + @IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = { + PRIVATE_FLAG_HIDDEN, + PRIVATE_FLAG_CANT_SAVE_STATE, + PRIVATE_FLAG_FORWARD_LOCK, + PRIVATE_FLAG_PRIVILEGED, + PRIVATE_FLAG_HAS_DOMAIN_URLS, + PRIVATE_FLAG_DEFAULT_TO_DEVICE_PROTECTED_STORAGE, + PRIVATE_FLAG_DIRECT_BOOT_AWARE, + PRIVATE_FLAG_INSTANT, + PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE, + PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER, + PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, + PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE, + PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION, + PRIVATE_FLAG_BACKUP_IN_FOREGROUND, + PRIVATE_FLAG_STATIC_SHARED_LIBRARY, + PRIVATE_FLAG_ISOLATED_SPLIT_LOADING, + PRIVATE_FLAG_VIRTUAL_PRELOAD, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface ApplicationInfoPrivateFlags {} + /** * Private/hidden flags. See {@code PRIVATE_FLAG_...} constants. - * {@hide} + * @hide */ - public int privateFlags; + public @ApplicationInfoPrivateFlags int privateFlags; /** * @hide @@ -1009,27 +1039,33 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { } } + /** @hide */ + public String classLoaderName; + + /** @hide */ + public String[] splitClassLoaderNames; + public void dump(Printer pw, String prefix) { dump(pw, prefix, DUMP_FLAG_ALL); } /** @hide */ - public void dump(Printer pw, String prefix, int flags) { + public void dump(Printer pw, String prefix, int dumpFlags) { super.dumpFront(pw, prefix); - if ((flags&DUMP_FLAG_DETAILS) != 0 && className != null) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0 && className != null) { pw.println(prefix + "className=" + className); } if (permission != null) { pw.println(prefix + "permission=" + permission); } pw.println(prefix + "processName=" + processName); - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { pw.println(prefix + "taskAffinity=" + taskAffinity); } pw.println(prefix + "uid=" + uid + " flags=0x" + Integer.toHexString(flags) + " privateFlags=0x" + Integer.toHexString(privateFlags) + " theme=0x" + Integer.toHexString(theme)); - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { pw.println(prefix + "requiresSmallestWidthDp=" + requiresSmallestWidthDp + " compatibleWidthLimitDp=" + compatibleWidthLimitDp + " largestWidthLimitDp=" + largestWidthLimitDp); @@ -1048,24 +1084,31 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { if (resourceDirs != null) { pw.println(prefix + "resourceDirs=" + Arrays.toString(resourceDirs)); } - if ((flags&DUMP_FLAG_DETAILS) != 0 && seInfo != null) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0 && seInfo != null) { pw.println(prefix + "seinfo=" + seInfo); pw.println(prefix + "seinfoUser=" + seInfoUser); } pw.println(prefix + "dataDir=" + dataDir); - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { pw.println(prefix + "deviceProtectedDataDir=" + deviceProtectedDataDir); pw.println(prefix + "credentialProtectedDataDir=" + credentialProtectedDataDir); if (sharedLibraryFiles != null) { pw.println(prefix + "sharedLibraryFiles=" + Arrays.toString(sharedLibraryFiles)); } } + if (classLoaderName != null) { + pw.println(prefix + "classLoaderName=" + classLoaderName); + } + if (!ArrayUtils.isEmpty(splitClassLoaderNames)) { + pw.println(prefix + "splitClassLoaderNames=" + Arrays.toString(splitClassLoaderNames)); + } + pw.println(prefix + "enabled=" + enabled + " minSdkVersion=" + minSdkVersion + " targetSdkVersion=" + targetSdkVersion + " versionCode=" + versionCode + " targetSandboxVersion=" + targetSandboxVersion); - if ((flags&DUMP_FLAG_DETAILS) != 0) { + if ((dumpFlags & DUMP_FLAG_DETAILS) != 0) { if (manageSpaceActivityName != null) { pw.println(prefix + "manageSpaceActivityName=" + manageSpaceActivityName); } @@ -1182,6 +1225,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { networkSecurityConfigRes = orig.networkSecurityConfigRes; category = orig.category; targetSandboxVersion = orig.targetSandboxVersion; + classLoaderName = orig.classLoaderName; + splitClassLoaderNames = orig.splitClassLoaderNames; } public String toString() { @@ -1250,6 +1295,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { dest.writeInt(networkSecurityConfigRes); dest.writeInt(category); dest.writeInt(targetSandboxVersion); + dest.writeString(classLoaderName); + dest.writeStringArray(splitClassLoaderNames); } public static final Parcelable.Creator CREATOR @@ -1315,6 +1362,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { networkSecurityConfigRes = source.readInt(); category = source.readInt(); targetSandboxVersion = source.readInt(); + classLoaderName = source.readString(); + splitClassLoaderNames = source.readStringArray(); } /** @@ -1463,6 +1512,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE) != 0; } + /** @hide */ + public boolean isEncryptionAware() { + return isDirectBootAware() || isPartiallyDirectBootAware(); + } + /** * @hide */ @@ -1493,6 +1547,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_STATIC_SHARED_LIBRARY) != 0; } + /** + * Returns whether or not this application was installed as a virtual preload. + */ + public boolean isVirtualPreload() { + return (privateFlags & PRIVATE_FLAG_VIRTUAL_PRELOAD) != 0; + } + /** * @hide */ diff --git a/core/java/android/content/pm/AuxiliaryResolveInfo.java b/core/java/android/content/pm/AuxiliaryResolveInfo.java index 323733c7c5e46cfbeb2a88dc31ef1925733c1592..067363d43adf9726d6a4928566a9a4d1555f4903 100644 --- a/core/java/android/content/pm/AuxiliaryResolveInfo.java +++ b/core/java/android/content/pm/AuxiliaryResolveInfo.java @@ -18,6 +18,7 @@ package android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; +import android.content.ComponentName; import android.content.Intent; import android.content.IntentFilter; @@ -35,6 +36,8 @@ public final class AuxiliaryResolveInfo extends IntentFilter { public final InstantAppResolveInfo resolveInfo; /** The resolved package. Copied from {@link #resolveInfo}. */ public final String packageName; + /** The activity to launch if there's an installation failure. */ + public final ComponentName installFailureActivity; /** The resolve split. Copied from the matched filter in {@link #resolveInfo}. */ public final String splitName; /** Whether or not instant resolution needs the second phase */ @@ -61,15 +64,18 @@ public final class AuxiliaryResolveInfo extends IntentFilter { this.needsPhaseTwo = needsPhase2; this.versionCode = resolveInfo.getVersionCode(); this.failureIntent = failureIntent; + this.installFailureActivity = null; } /** Create a response for installing a split on demand. */ public AuxiliaryResolveInfo(@NonNull String packageName, @Nullable String splitName, + @Nullable ComponentName failureActivity, int versionCode, @Nullable Intent failureIntent) { super(); this.packageName = packageName; + this.installFailureActivity = failureActivity; this.splitName = splitName; this.versionCode = versionCode; this.resolveInfo = null; diff --git a/core/java/android/content/pm/BaseParceledListSlice.java b/core/java/android/content/pm/BaseParceledListSlice.java index aaa5f19c3fca34cd78e1886cb71481e4717a80bf..5877a09b7759a7a34ab5e87e319d218374b8ede6 100644 --- a/core/java/android/content/pm/BaseParceledListSlice.java +++ b/core/java/android/content/pm/BaseParceledListSlice.java @@ -102,7 +102,7 @@ abstract class BaseParceledListSlice implements Parcelable { return; } while (i < N && reply.readInt() != 0) { - final T parcelable = reply.readCreator(creator, loader); + final T parcelable = readCreator(creator, reply, loader); verifySameType(listElementClass, parcelable.getClass()); mList.add(parcelable); diff --git a/core/java/android/content/pm/ComponentInfo.java b/core/java/android/content/pm/ComponentInfo.java index 53be9537d00d9b62d51e32a73fa356cc21273c6d..6b1222f53959a6e86b2137153abf6f7e3f423fb7 100644 --- a/core/java/android/content/pm/ComponentInfo.java +++ b/core/java/android/content/pm/ComponentInfo.java @@ -183,12 +183,12 @@ public class ComponentInfo extends PackageItemInfo { protected void dumpBack(Printer pw, String prefix) { dumpBack(pw, prefix, DUMP_FLAG_ALL); } - - void dumpBack(Printer pw, String prefix, int flags) { - if ((flags&DUMP_FLAG_APPLICATION) != 0) { + + void dumpBack(Printer pw, String prefix, int dumpFlags) { + if ((dumpFlags & DUMP_FLAG_APPLICATION) != 0) { if (applicationInfo != null) { pw.println(prefix + "ApplicationInfo:"); - applicationInfo.dump(pw, prefix + " ", flags); + applicationInfo.dump(pw, prefix + " ", dumpFlags); } else { pw.println(prefix + "ApplicationInfo: null"); } diff --git a/core/java/android/content/pm/EphemeralIntentFilter.java b/core/java/android/content/pm/EphemeralIntentFilter.java index f7d83a9e8d6e975349b24e2ef4a0e7b0de45c5aa..1dbbf816ed9339a4ebd5a7ee0f2b6deda31e8268 100644 --- a/core/java/android/content/pm/EphemeralIntentFilter.java +++ b/core/java/android/content/pm/EphemeralIntentFilter.java @@ -29,6 +29,7 @@ import java.util.List; /** * Information about an ephemeral application intent filter. * @hide + * @removed */ @Deprecated @SystemApi diff --git a/core/java/android/content/pm/EphemeralResolveInfo.java b/core/java/android/content/pm/EphemeralResolveInfo.java index a6e826826511e2c1254a9ef1d7698d2cbd0641e3..12131a3ebc982cbaa759c8aa4f43969815b1d999 100644 --- a/core/java/android/content/pm/EphemeralResolveInfo.java +++ b/core/java/android/content/pm/EphemeralResolveInfo.java @@ -34,6 +34,7 @@ import java.util.Locale; /** * Information about an ephemeral application. * @hide + * @removed */ @Deprecated @SystemApi diff --git a/core/java/android/content/pm/IPackageInstallerSession.aidl b/core/java/android/content/pm/IPackageInstallerSession.aidl index 2a3fac341e24a597e004a1eb8c128ea0fd69022f..0b16852246f8eeae51ace70be06530339857169f 100644 --- a/core/java/android/content/pm/IPackageInstallerSession.aidl +++ b/core/java/android/content/pm/IPackageInstallerSession.aidl @@ -32,6 +32,7 @@ interface IPackageInstallerSession { void removeSplit(String splitName); void close(); - void commit(in IntentSender statusReceiver); + void commit(in IntentSender statusReceiver, boolean forTransferred); + void transfer(in String packageName); void abandon(); } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index c9afd6b7e93027b324a80f8bb58e4e6a5adaa401..0e706456b9b28a3a861debc91cad4949918d302a 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -128,6 +128,7 @@ interface IPackageManager { String[] getPackagesForUid(int uid); String getNameForUid(int uid); + String[] getNamesForUids(in int[] uids); int getUidForSharedUser(String sharedUserName); diff --git a/core/java/android/content/pm/InstantAppRequest.java b/core/java/android/content/pm/InstantAppRequest.java index 27d28287b6ae3a6e6136bb769a6ba5bdb59e59e5..38f02256ee6e0a7e8f771b704d259ba3bd3c1462 100644 --- a/core/java/android/content/pm/InstantAppRequest.java +++ b/core/java/android/content/pm/InstantAppRequest.java @@ -38,14 +38,18 @@ public final class InstantAppRequest { * Optional extra bundle provided by the source application to the installer for additional * verification. */ public final Bundle verificationBundle; + /** Whether resolution occurs because an application is starting */ + public final boolean resolveForStart; public InstantAppRequest(AuxiliaryResolveInfo responseObj, Intent origIntent, - String resolvedType, String callingPackage, int userId, Bundle verificationBundle) { + String resolvedType, String callingPackage, int userId, Bundle verificationBundle, + boolean resolveForStart) { this.responseObj = responseObj; this.origIntent = origIntent; this.resolvedType = resolvedType; this.callingPackage = callingPackage; this.userId = userId; this.verificationBundle = verificationBundle; + this.resolveForStart = resolveForStart; } } diff --git a/core/java/android/content/pm/InstantAppResolveInfo.java b/core/java/android/content/pm/InstantAppResolveInfo.java index dcaf66ebc43bc7cd1594d6292e636d37167efc05..22e994f4cfa852672cca27f5c6a5b238aada182f 100644 --- a/core/java/android/content/pm/InstantAppResolveInfo.java +++ b/core/java/android/content/pm/InstantAppResolveInfo.java @@ -37,7 +37,7 @@ import java.util.Locale; @SystemApi public final class InstantAppResolveInfo implements Parcelable { /** Algorithm that will be used to generate the domain digest */ - public static final String SHA_ALGORITHM = "SHA-256"; + private static final String SHA_ALGORITHM = "SHA-256"; private final InstantAppDigest mDigest; private final String mPackageName; diff --git a/core/java/android/content/pm/PackageBackwardCompatibility.java b/core/java/android/content/pm/PackageBackwardCompatibility.java new file mode 100644 index 0000000000000000000000000000000000000000..4de160b0bf88018aadddc9ee4917b76087c95661 --- /dev/null +++ b/core/java/android/content/pm/PackageBackwardCompatibility.java @@ -0,0 +1,78 @@ +/* + * 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.content.pm; + +import android.annotation.Nullable; +import android.content.pm.PackageParser.Package; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ArrayUtils; + +import java.util.ArrayList; + +/** + * Modifies {@link Package} in order to maintain backwards compatibility. + * + * @hide + */ +@VisibleForTesting +public class PackageBackwardCompatibility { + + private static final String ANDROID_TEST_MOCK = "android.test.mock"; + + private static final String ANDROID_TEST_RUNNER = "android.test.runner"; + + /** + * Modify the shared libraries in the supplied {@link Package} to maintain backwards + * compatibility. + * + * @param pkg the {@link Package} to modify. + */ + @VisibleForTesting + public static void modifySharedLibraries(Package pkg) { + ArrayList usesLibraries = pkg.usesLibraries; + ArrayList usesOptionalLibraries = pkg.usesOptionalLibraries; + + usesLibraries = orgApacheHttpLegacy(usesLibraries); + usesOptionalLibraries = orgApacheHttpLegacy(usesOptionalLibraries); + + // android.test.runner has a dependency on android.test.mock so if android.test.runner + // is present but android.test.mock is not then add android.test.mock. + boolean androidTestMockPresent = ArrayUtils.contains(usesLibraries, ANDROID_TEST_MOCK) + || ArrayUtils.contains(usesOptionalLibraries, ANDROID_TEST_MOCK); + if (ArrayUtils.contains(usesLibraries, ANDROID_TEST_RUNNER) && !androidTestMockPresent) { + usesLibraries.add(ANDROID_TEST_MOCK); + } + if (ArrayUtils.contains(usesOptionalLibraries, ANDROID_TEST_RUNNER) + && !androidTestMockPresent) { + usesOptionalLibraries.add(ANDROID_TEST_MOCK); + } + + pkg.usesLibraries = usesLibraries; + pkg.usesOptionalLibraries = usesOptionalLibraries; + } + + private static ArrayList orgApacheHttpLegacy(@Nullable ArrayList libraries) { + // "org.apache.http.legacy" is now a part of the boot classpath so it doesn't need + // to be an explicit dependency. + // + // A future change will remove this library from the boot classpath, at which point + // all apps that target SDK 21 and earlier will have it automatically added to their + // dependency lists. + return ArrayUtils.remove(libraries, "org.apache.http.legacy"); + } +} diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java index 7f1198541668a57c346acf6ae832d259465af332..ba488f6a0518a0a6e5449f9431c4e485c210b25f 100644 --- a/core/java/android/content/pm/PackageInfo.java +++ b/core/java/android/content/pm/PackageInfo.java @@ -187,8 +187,17 @@ public class PackageInfo implements Parcelable { public static final int REQUESTED_PERMISSION_GRANTED = 1<<1; /** - * Array of all signatures read from the package file. This is only filled - * in if the flag {@link PackageManager#GET_SIGNATURES} was set. + * Array of all signatures read from the package file. This is only filled + * in if the flag {@link PackageManager#GET_SIGNATURES} was set. A package + * must be singed with at least one certificate which is at position zero. + * The package can be signed with additional certificates which appear as + * subsequent entries. + * + * Note: Signature ordering is not guaranteed to be + * stable which means that a package signed with certificates A and B is + * equivalent to being signed with certificates B and A. This means that + * in case multiple signatures are reported you cannot assume the one at + * the first position to be the same across updates. */ public Signature[] signatures; @@ -251,6 +260,9 @@ public class PackageInfo implements Parcelable { */ public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; + /** @hide */ + public boolean isStub; + /** @hide */ public boolean coreApp; @@ -324,6 +336,7 @@ public class PackageInfo implements Parcelable { dest.writeTypedArray(reqFeatures, parcelableFlags); dest.writeTypedArray(featureGroups, parcelableFlags); dest.writeInt(installLocation); + dest.writeInt(isStub ? 1 : 0); dest.writeInt(coreApp ? 1 : 0); dest.writeInt(requiredForAllUsers ? 1 : 0); dest.writeString(restrictedAccountType); @@ -375,6 +388,7 @@ public class PackageInfo implements Parcelable { reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); featureGroups = source.createTypedArray(FeatureGroupInfo.CREATOR); installLocation = source.readInt(); + isStub = source.readInt() != 0; coreApp = source.readInt() != 0; requiredForAllUsers = source.readInt() != 0; restrictedAccountType = source.readString(); diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 2add9a3b51d1f0566edc529ef6f59d6afdefa9de..f4fdcaa44836d83f6f42c224b20198483d015f81 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -27,6 +27,7 @@ import android.app.ActivityManager; import android.app.AppGlobals; import android.content.Intent; import android.content.IntentSender; +import android.content.pm.PackageManager.DeleteFlags; import android.content.pm.PackageManager.InstallReason; import android.graphics.Bitmap; import android.net.Uri; @@ -37,6 +38,7 @@ import android.os.Message; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Parcelable; +import android.os.ParcelableException; import android.os.RemoteException; import android.os.SystemProperties; import android.system.ErrnoException; @@ -443,8 +445,40 @@ public class PackageInstaller { * @param statusReceiver Where to deliver the result. */ public void uninstall(@NonNull String packageName, @NonNull IntentSender statusReceiver) { - uninstall(new VersionedPackage(packageName, PackageManager.VERSION_CODE_HIGHEST), - statusReceiver); + uninstall(packageName, 0 /*flags*/, statusReceiver); + } + + /** + * Uninstall the given package, removing it completely from the device. This + * method is only available to the current "installer of record" for the + * package. + * + * @param packageName The package to uninstall. + * @param flags Flags for uninstall. + * @param statusReceiver Where to deliver the result. + * + * @hide + */ + public void uninstall(@NonNull String packageName, @DeleteFlags int flags, + @NonNull IntentSender statusReceiver) { + uninstall(new VersionedPackage(packageName, PackageManager.VERSION_CODE_HIGHEST), + flags, statusReceiver); + } + + /** + * Uninstall the given package with a specific version code, removing it + * completely from the device. This method is only available to the current + * "installer of record" for the package. If the version code of the package + * does not match the one passed in the versioned package argument this + * method is a no-op. Use {@link PackageManager#VERSION_CODE_HIGHEST} to + * uninstall the latest version of the package. + * + * @param versionedPackage The versioned package to uninstall. + * @param statusReceiver Where to deliver the result. + */ + public void uninstall(@NonNull VersionedPackage versionedPackage, + @NonNull IntentSender statusReceiver) { + uninstall(versionedPackage, 0 /*flags*/, statusReceiver); } /** @@ -456,17 +490,20 @@ public class PackageInstaller { * uninstall the latest version of the package. * * @param versionedPackage The versioned package to uninstall. + * @param flags Flags for uninstall. * @param statusReceiver Where to deliver the result. + * + * @hide */ @RequiresPermission(anyOf = { Manifest.permission.DELETE_PACKAGES, Manifest.permission.REQUEST_DELETE_PACKAGES}) - public void uninstall(@NonNull VersionedPackage versionedPackage, + public void uninstall(@NonNull VersionedPackage versionedPackage, @DeleteFlags int flags, @NonNull IntentSender statusReceiver) { Preconditions.checkNotNull(versionedPackage, "versionedPackage cannot be null"); try { mInstaller.uninstall(versionedPackage, mInstallerPackageName, - 0, statusReceiver, mUserId); + flags, statusReceiver, mUserId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -757,7 +794,7 @@ public class PackageInstaller { * @throws IOException if trouble opening the file for writing, such as * lack of disk space or unavailable media. * @throws SecurityException if called after the session has been - * committed or abandoned. + * sealed or abandoned */ public @NonNull OutputStream openWrite(@NonNull String name, long offsetBytes, long lengthBytes) throws IOException { @@ -882,7 +919,68 @@ public class PackageInstaller { */ public void commit(@NonNull IntentSender statusReceiver) { try { - mSession.commit(statusReceiver); + mSession.commit(statusReceiver, false); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Attempt to commit a session that has been {@link #transfer(String) transferred}. + * + *

If the device reboots before the session has been finalized, you may commit the + * session again. + * + *

The caller of this method is responsible to ensure the safety of the session. As the + * session was created by another - usually less trusted - app, it is paramount that before + * committing all public and system {@link SessionInfo properties of the session} + * and all {@link #openRead(String) APKs} are verified by the caller. It might happen + * that new properties are added to the session with a new API revision. In this case the + * callers need to be updated. + * + * @param statusReceiver Callbacks called when the state of the session changes. + * + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) + public void commitTransferred(@NonNull IntentSender statusReceiver) { + try { + mSession.commit(statusReceiver, true); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Transfer the session to a new owner. + *

+ * Only sessions that update the installing app can be transferred. + *

+ * After the transfer to a package with a different uid all method calls on the session + * will cause {@link SecurityException}s. + *

+ * Once this method is called, the session is sealed and no additional mutations beside + * committing it may be performed on the session. + * + * @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. + * @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) + throws PackageManager.NameNotFoundException { + Preconditions.checkNotNull(packageName); + + try { + mSession.transfer(packageName); + } catch (ParcelableException e) { + e.maybeRethrow(PackageManager.NameNotFoundException.class); + throw new RuntimeException(e); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1004,6 +1102,26 @@ public class PackageInstaller { grantedRuntimePermissions = source.readStringArray(); } + /** + * Check if there are hidden options set. + * + *

Hidden options are those options that cannot be verified via public or system-api + * methods on {@link SessionInfo}. + * + * @return {@code true} if any hidden option is set. + * + * @hide + */ + public boolean areHiddenOptionsSet() { + return (installFlags & (PackageManager.INSTALL_ALLOW_DOWNGRADE + | PackageManager.INSTALL_DONT_KILL_APP + | PackageManager.INSTALL_INSTANT_APP + | PackageManager.INSTALL_FULL_APP + | PackageManager.INSTALL_VIRTUAL_PRELOAD + | PackageManager.INSTALL_ALLOCATE_AGGRESSIVE)) != installFlags + || abiOverride != null || volumeUuid != null; + } + /** * Provide value of {@link PackageInfo#installLocation}, which may be used * to determine where the app will be staged. Defaults to @@ -1149,6 +1267,16 @@ public class PackageInstaller { } } + /** + * Sets the install as a virtual preload. Will only have effect when called + * by the verifier. + * {@hide} + */ + @SystemApi + public void setInstallAsVirtualPreload() { + installFlags |= PackageManager.INSTALL_VIRTUAL_PRELOAD; + } + /** * Set the reason for installing this package. */ @@ -1253,6 +1381,19 @@ public class PackageInstaller { /** {@hide} */ public CharSequence appLabel; + /** {@hide} */ + public int installLocation; + /** {@hide} */ + public Uri originatingUri; + /** {@hide} */ + public int originatingUid; + /** {@hide} */ + public Uri referrerUri; + /** {@hide} */ + public String[] grantedRuntimePermissions; + /** {@hide} */ + public int installFlags; + /** {@hide} */ public SessionInfo() { } @@ -1272,6 +1413,13 @@ public class PackageInstaller { appPackageName = source.readString(); appIcon = source.readParcelable(null); appLabel = source.readString(); + + installLocation = source.readInt(); + originatingUri = source.readParcelable(null); + originatingUid = source.readInt(); + referrerUri = source.readParcelable(null); + grantedRuntimePermissions = source.readStringArray(); + installFlags = source.readInt(); } /** @@ -1395,6 +1543,130 @@ public class PackageInstaller { return intent; } + /** + * Get the mode of the session as set in the constructor of the {@link SessionParams}. + * + * @return One of {@link SessionParams#MODE_FULL_INSTALL} + * or {@link SessionParams#MODE_INHERIT_EXISTING} + */ + public int getMode() { + return mode; + } + + /** + * Get the value set in {@link SessionParams#setInstallLocation(int)}. + */ + public int getInstallLocation() { + return installLocation; + } + + /** + * Get the value as set in {@link SessionParams#setSize(long)}. + * + *

The value is a hint and does not have to match the actual size. + */ + public long getSize() { + return sizeBytes; + } + + /** + * Get the value set in {@link SessionParams#setOriginatingUri(Uri)}. + */ + public @Nullable Uri getOriginatingUri() { + return originatingUri; + } + + /** + * Get the value set in {@link SessionParams#setOriginatingUid(int)}. + */ + public int getOriginatingUid() { + return originatingUid; + } + + /** + * Get the value set in {@link SessionParams#setReferrerUri(Uri)} + */ + public @Nullable Uri getReferrerUri() { + return referrerUri; + } + + /** + * Get the value set in {@link SessionParams#setGrantedRuntimePermissions(String[])}. + * + * @hide + */ + @SystemApi + public @Nullable String[] getGrantedRuntimePermissions() { + return grantedRuntimePermissions; + } + + /** + * Get the value set in {@link SessionParams#setAllowDowngrade(boolean)}. + * + * @hide + */ + @SystemApi + public boolean getAllowDowngrade() { + return (installFlags & PackageManager.INSTALL_ALLOW_DOWNGRADE) != 0; + } + + /** + * Get the value set in {@link SessionParams#setDontKillApp(boolean)}. + * + * @hide + */ + @SystemApi + public boolean getDontKillApp() { + return (installFlags & PackageManager.INSTALL_DONT_KILL_APP) != 0; + } + + /** + * If {@link SessionParams#setInstallAsInstantApp(boolean)} was called with {@code true}, + * return true. If it was called with {@code false} or if it was not called return false. + * + * @hide + * + * @see #getInstallAsFullApp + */ + @SystemApi + public boolean getInstallAsInstantApp(boolean isInstantApp) { + return (installFlags & PackageManager.INSTALL_INSTANT_APP) != 0; + } + + /** + * If {@link SessionParams#setInstallAsInstantApp(boolean)} was called with {@code false}, + * return true. If it was called with {@code true} or if it was not called return false. + * + * @hide + * + * @see #getInstallAsInstantApp + */ + @SystemApi + public boolean getInstallAsFullApp(boolean isInstantApp) { + return (installFlags & PackageManager.INSTALL_FULL_APP) != 0; + } + + /** + * Get if {@link SessionParams#setInstallAsVirtualPreload()} was called. + * + * @hide + */ + @SystemApi + public boolean getInstallAsVirtualPreload() { + return (installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0; + } + + /** + * Get the value set in {@link SessionParams#setAllocateAggressive(boolean)}. + * + * @hide + */ + @SystemApi + public boolean getAllocateAggressive() { + return (installFlags & PackageManager.INSTALL_ALLOCATE_AGGRESSIVE) != 0; + } + + /** {@hide} */ @Deprecated public @Nullable Intent getDetailsIntent() { @@ -1421,6 +1693,13 @@ public class PackageInstaller { dest.writeString(appPackageName); dest.writeParcelable(appIcon, flags); dest.writeString(appLabel != null ? appLabel.toString() : null); + + dest.writeInt(installLocation); + dest.writeParcelable(originatingUri, flags); + dest.writeInt(originatingUid); + dest.writeParcelable(referrerUri, flags); + dest.writeStringArray(grantedRuntimePermissions); + dest.writeInt(installFlags); } public static final Parcelable.Creator diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 06dbc0b37f92cede745eaa9eae2c0f9ac5efa1d5..ef8f84bd1690966cb304005c8e5c8abfbac1e4ff 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -31,6 +31,7 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UserIdInt; import android.annotation.XmlRes; +import android.app.ActivityManager; import android.app.PackageDeleteObserver; import android.app.PackageInstallObserver; import android.app.admin.DevicePolicyManager; @@ -46,6 +47,7 @@ import android.content.res.XmlResourceParser; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.net.wifi.WifiManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; @@ -54,7 +56,6 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; -import android.provider.Settings; import android.util.AndroidException; import android.util.Log; @@ -810,6 +811,14 @@ public abstract class PackageManager { */ public static final int INSTALL_ALLOCATE_AGGRESSIVE = 0x00008000; + /** + * Flag parameter for {@link #installPackage} to indicate that this package + * is a virtual preload. + * + * @hide + */ + public static final int INSTALL_VIRTUAL_PRELOAD = 0x00010000; + /** @hide */ @IntDef(flag = true, prefix = { "DONT_KILL_APP" }, value = { DONT_KILL_APP @@ -1490,6 +1499,9 @@ public abstract class PackageManager { */ public static final int MOVE_FAILED_3RD_PARTY_NOT_ALLOWED_ON_INTERNAL = -9; + /** @hide */ + public static final int MOVE_FAILED_LOCKED_USER = -10; + /** * Flag parameter for {@link #movePackage} to indicate that * the package should be moved to internal storage if its @@ -1778,6 +1790,24 @@ public abstract class PackageManager { @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_LOCATION_NETWORK = "android.hardware.location.network"; + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's + * {@link ActivityManager#isLowRamDevice() ActivityManager.isLowRamDevice()} method returns + * true. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_RAM_LOW = "android.hardware.ram.low"; + + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device's + * {@link ActivityManager#isLowRamDevice() ActivityManager.isLowRamDevice()} method returns + * false. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_RAM_NORMAL = "android.hardware.ram.normal"; + /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: The device can record audio via a @@ -1874,10 +1904,16 @@ public abstract class PackageManager { * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature(String, int)}: If this feature is supported, the Vulkan native API * will enumerate at least one {@code VkPhysicalDevice}, and the feature version will indicate - * what level of optional compute features are supported beyond the Vulkan 1.0 requirements. + * what level of optional compute features that device supports beyond the Vulkan 1.0 + * requirements. *

- * Compute level 0 indicates support for the {@code VariablePointers} SPIR-V capability defined - * by the SPV_KHR_variable_pointers extension. + * Compute level 0 indicates: + *

    + *
  • The {@code VK_KHR_variable_pointers} extension and + * {@code VkPhysicalDeviceVariablePointerFeaturesKHR::variablePointers} feature are + supported.
  • + *
  • {@code VkPhysicalDeviceLimits::maxPerStageDescriptorStorageBuffers} is at least 16.
  • + *
*/ @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_VULKAN_HARDWARE_COMPUTE = "android.hardware.vulkan.compute"; @@ -1898,12 +1934,13 @@ public abstract class PackageManager { public static final String FEATURE_VULKAN_HARDWARE_VERSION = "android.hardware.vulkan.version"; /** - * The device includes broadcast radio tuner. - * - * @hide FutureFeature + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device includes broadcast radio tuner. + * @hide */ + @SystemApi @SdkConstant(SdkConstantType.FEATURE) - public static final String FEATURE_RADIO = "android.hardware.radio"; + public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio"; /** * Feature for {@link #getSystemAvailableFeatures} and @@ -2284,12 +2321,21 @@ public abstract class PackageManager { /** * Feature for {@link #getSystemAvailableFeatures} and - * {@link #hasSystemFeature}: The device supports Wi-Fi Passpoint. - * @hide + * {@link #hasSystemFeature}: The device supports Wi-Fi Passpoint and all + * Passpoint related APIs in {@link WifiManager} are supported. Refer to + * {@link WifiManager#addOrUpdatePasspointConfiguration} for more info. */ @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device supports LoWPAN networking. + * @hide + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_LOWPAN = "android.hardware.lowpan"; + /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: This is a device dedicated to showing UI @@ -2343,7 +2389,6 @@ public abstract class PackageManager { * computers, laptops and variants such as convertibles or detachables. * Due to the larger screen, the device will most likely use the * {@link #FEATURE_FREEFORM_WINDOW_MANAGEMENT} feature as well. - * @hide */ @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_PC = "android.hardware.type.pc"; @@ -3304,6 +3349,7 @@ public abstract class PackageManager { * * @hide */ + @TestApi public abstract String getPermissionControllerPackageName(); /** @@ -3571,6 +3617,14 @@ public abstract class PackageManager { */ public abstract @Nullable String getNameForUid(int uid); + /** + * Retrieves the official names associated with each given uid. + * @see #getNameForUid(int) + * + * @hide + */ + public abstract @Nullable String[] getNamesForUids(int[] uids); + /** * Return the user id associated with a shared user name. Multiple * applications can specify a shared user name in their manifest and thus @@ -3750,7 +3804,6 @@ public abstract class PackageManager { /** * @removed - * @hide */ public abstract boolean setInstantAppCookie(@Nullable byte[] cookie); @@ -4003,6 +4056,7 @@ public abstract class PackageManager { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS) public List queryBroadcastReceiversAsUser(Intent intent, @ResolveInfoFlags int flags, UserHandle userHandle) { return queryBroadcastReceiversAsUser(intent, flags, userHandle.getIdentifier()); @@ -4673,6 +4727,7 @@ public abstract class PackageManager { * on the system for other users, also install it for the calling user. * @hide */ + @SystemApi public abstract int installExistingPackage(String packageName) throws NameNotFoundException; /** @@ -4680,6 +4735,7 @@ public abstract class PackageManager { * on the system for other users, also install it for the calling user. * @hide */ + @SystemApi public abstract int installExistingPackage(String packageName, @InstallReason int installReason) throws NameNotFoundException; @@ -4791,6 +4847,7 @@ public abstract class PackageManager { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract int getIntentVerificationStatusAsUser(String packageName, @UserIdInt int userId); /** @@ -4860,6 +4917,7 @@ public abstract class PackageManager { */ @TestApi @SystemApi + @RequiresPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL) public abstract String getDefaultBrowserPackageNameAsUser(@UserIdInt int userId); /** @@ -4875,7 +4933,9 @@ public abstract class PackageManager { * @hide */ @SystemApi - @RequiresPermission(android.Manifest.permission.SET_PREFERRED_APPLICATIONS) + @RequiresPermission(allOf = { + Manifest.permission.SET_PREFERRED_APPLICATIONS, + Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract boolean setDefaultBrowserPackageNameAsUser(String packageName, @UserIdInt int userId); @@ -5775,6 +5835,7 @@ public abstract class PackageManager { * * @hide */ + @SystemApi public static abstract class DexModuleRegisterCallback { public abstract void onDexModuleRegistered(String dexModulePath, boolean success, String message); @@ -5808,6 +5869,7 @@ public abstract class PackageManager { * * @hide */ + @SystemApi public abstract void registerDexModule(String dexModulePath, @Nullable DexModuleRegisterCallback callback); } diff --git a/core/java/android/content/pm/PackageManagerInternal.java b/core/java/android/content/pm/PackageManagerInternal.java index 99700df2b990a6c4318ebb293445aef9d1366809..4c981cdb251141385195468e1e0c53420f685ed4 100644 --- a/core/java/android/content/pm/PackageManagerInternal.java +++ b/core/java/android/content/pm/PackageManagerInternal.java @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager.ApplicationInfoFlags; import android.content.pm.PackageManager.ComponentInfoFlags; -import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.PackageInfoFlags; import android.content.pm.PackageManager.ResolveInfoFlags; import android.os.Bundle; @@ -372,4 +371,16 @@ public abstract class PackageManagerInternal { /** Whether the binder caller can access instant apps. */ public abstract boolean canAccessInstantApps(int callingUid, int userId); + + /** + * Returns {@code true} if a given package has instant application meta-data. + * Otherwise, returns {@code false}. Meta-data is state (eg. cookie, app icon, etc) + * associated with an instant app. It may be kept after the instant app has been uninstalled. + */ + public abstract boolean hasInstantApplicationMetadata(String packageName, int userId); + + /** + * Updates a package last used time. + */ + public abstract void notifyPackageUse(String packageName, int reason); } diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index bcba938e4ed8e0787dae67008d8980a600588963..cb9ecf3e2bd80e19d97ead39b8e7cc20cb5654da 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -27,9 +27,9 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VER import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED; -import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; @@ -50,9 +50,11 @@ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageParserCacheHelper.ReadHelper; +import android.content.pm.PackageParserCacheHelper.WriteHelper; +import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetLoader; -import android.content.pm.split.DefaultSplitAssetLoader; import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; @@ -64,6 +66,7 @@ import android.os.FileUtils; import android.os.Parcel; import android.os.Parcelable; import android.os.PatternMatcher; +import android.os.SystemClock; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; @@ -88,11 +91,13 @@ import android.view.Gravity; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.os.ClassLoaderFactory; import com.android.internal.util.ArrayUtils; import com.android.internal.util.XmlUtils; import libcore.io.IoUtils; +import libcore.util.EmptyArray; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -119,6 +124,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.zip.ZipEntry; @@ -144,6 +150,8 @@ public class PackageParser { private static final boolean DEBUG_JAR = false; private static final boolean DEBUG_PARSER = false; private static final boolean DEBUG_BACKUP = false; + private static final boolean LOG_PARSE_TIMINGS = Build.IS_DEBUGGABLE; + private static final int LOG_PARSE_TIMINGS_THRESHOLD_MS = 100; private static final String PROPERTY_CHILD_PACKAGES_ENABLED = "persist.sys.child_packages_enabled"; @@ -230,6 +238,11 @@ public class PackageParser { private static final boolean LOG_UNSAFE_BROADCASTS = false; + /** + * Total number of packages that were read from the cache. We use it only for logging. + */ + public static final AtomicInteger sCachedPackageReadCount = new AtomicInteger(); + // Set of broadcast actions that are safe for manifest receivers private static final Set SAFE_BROADCASTS = new ArraySet<>(); static { @@ -500,11 +513,25 @@ public class PackageParser { } } + /** + * Cached parse state for new components. + * + * Allows reuse of the same parse argument records to avoid GC pressure. Lifetime is carefully + * scoped to the parsing of a single application element. + */ + private static class CachedComponentArgs { + ParseComponentArgs mActivityArgs; + ParseComponentArgs mActivityAliasArgs; + ParseComponentArgs mServiceArgs; + ParseComponentArgs mProviderArgs; + } + + /** + * Cached state for parsing instrumentation to avoid GC pressure. + * + * Must be manually reset to null for each new manifest. + */ private ParsePackageItemArgs mParseInstrumentationArgs; - private ParseComponentArgs mParseActivityArgs; - private ParseComponentArgs mParseActivityAliasArgs; - private ParseComponentArgs mParseServiceArgs; - private ParseComponentArgs mParseProviderArgs; /** If set to true, we will only allow package files that exactly match * the DTD. Otherwise, we try to get as much from the package as we @@ -641,6 +668,7 @@ public class PackageParser { pi.sharedUserLabel = p.mSharedUserLabel; pi.applicationInfo = generateApplicationInfo(p, flags, state, userId); pi.installLocation = p.installLocation; + pi.isStub = p.isStub; pi.coreApp = p.coreApp; if ((pi.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0 || (pi.applicationInfo.flags&ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { @@ -913,6 +941,7 @@ public class PackageParser { String[] configForSplits = null; String[] splitCodePaths = null; int[] splitRevisionCodes = null; + String[] splitClassLoaderNames = null; if (size > 0) { splitNames = new String[size]; isFeatureSplits = new boolean[size]; @@ -965,14 +994,23 @@ public class PackageParser { return parsed; } + long parseTime = LOG_PARSE_TIMINGS ? SystemClock.uptimeMillis() : 0; if (packageFile.isDirectory()) { parsed = parseClusterPackage(packageFile, flags); } else { parsed = parseMonolithicPackage(packageFile, flags); } + long cacheTime = LOG_PARSE_TIMINGS ? SystemClock.uptimeMillis() : 0; cacheResult(packageFile, flags, parsed); - + if (LOG_PARSE_TIMINGS) { + parseTime = cacheTime - parseTime; + cacheTime = SystemClock.uptimeMillis() - cacheTime; + if (parseTime + cacheTime > LOG_PARSE_TIMINGS_THRESHOLD_MS) { + Slog.i(TAG, "Parse times for '" + packageFile + "': parse=" + parseTime + + "ms, update_cache=" + cacheTime + " ms"); + } + } return parsed; } @@ -995,21 +1033,45 @@ public class PackageParser { } @VisibleForTesting - protected Package fromCacheEntry(byte[] bytes) throws IOException { - Parcel p = Parcel.obtain(); + protected Package fromCacheEntry(byte[] bytes) { + return fromCacheEntryStatic(bytes); + } + + /** static version of {@link #fromCacheEntry} for unit tests. */ + @VisibleForTesting + public static Package fromCacheEntryStatic(byte[] bytes) { + final Parcel p = Parcel.obtain(); p.unmarshall(bytes, 0, bytes.length); p.setDataPosition(0); + final ReadHelper helper = new ReadHelper(p); + helper.startAndInstall(); + PackageParser.Package pkg = new PackageParser.Package(p); + p.recycle(); + sCachedPackageReadCount.incrementAndGet(); + return pkg; } @VisibleForTesting - protected byte[] toCacheEntry(Package pkg) throws IOException { - Parcel p = Parcel.obtain(); + protected byte[] toCacheEntry(Package pkg) { + return toCacheEntryStatic(pkg); + + } + + /** static version of {@link #toCacheEntry} for unit tests. */ + @VisibleForTesting + public static byte[] toCacheEntryStatic(Package pkg) { + final Parcel p = Parcel.obtain(); + final WriteHelper helper = new WriteHelper(p); + pkg.writeToParcel(p, 0 /* flags */); + + helper.finishAndUninstall(); + byte[] serialized = p.marshall(); p.recycle(); @@ -1059,12 +1121,12 @@ public class PackageParser { final String cacheKey = getCacheKey(packageFile, flags); final File cacheFile = new File(mCacheDir, cacheKey); - // If the cache is not up to date, return null. - if (!isCacheUpToDate(packageFile, cacheFile)) { - return null; - } - try { + // If the cache is not up to date, return null. + if (!isCacheUpToDate(packageFile, cacheFile)) { + return null; + } + final byte[] bytes = IoUtils.readFileAsByteArray(cacheFile.getAbsolutePath()); Package p = fromCacheEntry(bytes); if (mCallback != null) { @@ -1079,7 +1141,7 @@ public class PackageParser { } } return p; - } catch (Exception e) { + } catch (Throwable e) { Slog.w(TAG, "Error reading package cache: ", e); // If something went wrong while reading the cache entry, delete the cache file @@ -1097,32 +1159,30 @@ public class PackageParser { return; } - final String cacheKey = getCacheKey(packageFile, flags); - final File cacheFile = new File(mCacheDir, cacheKey); + try { + final String cacheKey = getCacheKey(packageFile, flags); + final File cacheFile = new File(mCacheDir, cacheKey); - if (cacheFile.exists()) { - if (!cacheFile.delete()) { - Slog.e(TAG, "Unable to delete cache file: " + cacheFile); + if (cacheFile.exists()) { + if (!cacheFile.delete()) { + Slog.e(TAG, "Unable to delete cache file: " + cacheFile); + } } - } - final byte[] cacheEntry; - try { - cacheEntry = toCacheEntry(parsed); - } catch (IOException ioe) { - Slog.e(TAG, "Unable to serialize parsed package for: " + packageFile); - return; - } + final byte[] cacheEntry = toCacheEntry(parsed); - if (cacheEntry == null) { - return; - } + if (cacheEntry == null) { + return; + } - try (FileOutputStream fos = new FileOutputStream(cacheFile)) { - fos.write(cacheEntry); - } catch (IOException ioe) { - Slog.w(TAG, "Error writing cache entry.", ioe); - cacheFile.delete(); + try (FileOutputStream fos = new FileOutputStream(cacheFile)) { + fos.write(cacheEntry); + } catch (IOException ioe) { + Slog.w(TAG, "Error writing cache entry.", ioe); + cacheFile.delete(); + } + } catch (Throwable e) { + Slog.w(TAG, "Error saving package cache.", e); } } @@ -1174,6 +1234,7 @@ public class PackageParser { pkg.splitPrivateFlags = new int[num]; pkg.applicationInfo.splitNames = pkg.splitNames; pkg.applicationInfo.splitDependencies = splitDependencies; + pkg.applicationInfo.splitClassLoaderNames = new String[num]; for (int i = 0; i < num; i++) { final AssetManager splitAssets = assetLoader.getSplitAssetManager(i); @@ -1337,9 +1398,6 @@ public class PackageParser { parsePackageSplitNames(parser, attrs); mParseInstrumentationArgs = null; - mParseActivityArgs = null; - mParseServiceArgs = null; - mParseProviderArgs = null; int type; @@ -1687,7 +1745,7 @@ public class PackageParser { } final AttributeSet attrs = parser; - return parseApkLite(apkPath, parser, attrs, flags, signatures, certificates); + return parseApkLite(apkPath, parser, attrs, signatures, certificates); } catch (XmlPullParserException | IOException | RuntimeException e) { Slog.w(TAG, "Failed to parse " + apkPath, e); @@ -1774,7 +1832,7 @@ public class PackageParser { } private static ApkLite parseApkLite(String codePath, XmlPullParser parser, AttributeSet attrs, - int flags, Signature[] signatures, Certificate[][] certificates) + Signature[] signatures, Certificate[][] certificates) throws IOException, XmlPullParserException, PackageParserException { final Pair packageSplit = parsePackageSplitNames(parser, attrs); @@ -1868,18 +1926,6 @@ public class PackageParser { extractNativeLibs, isolatedSplits); } - /** - * Temporary. - */ - static public Signature stringToSignature(String str) { - final int N = str.length(); - byte[] sig = new byte[N]; - for (int i=0; i Build.VERSION_CODES.O) { + additionalCertSha256Digests = parseAdditionalCertificates(res, parser, outError); + if (additionalCertSha256Digests == null) { + return false; + } + } else { + XmlUtils.skipCurrentTag(parser); + } + + final String[] certSha256Digests = new String[additionalCertSha256Digests.length + 1]; + certSha256Digests[0] = certSha256Digest; + System.arraycopy(additionalCertSha256Digests, 0, certSha256Digests, + 1, additionalCertSha256Digests.length); + pkg.usesStaticLibraries = ArrayUtils.add(pkg.usesStaticLibraries, lname); pkg.usesStaticLibrariesVersions = ArrayUtils.appendInt( pkg.usesStaticLibrariesVersions, version, true); - pkg.usesStaticLibrariesCertDigests = ArrayUtils.appendElement(String.class, - pkg.usesStaticLibrariesCertDigests, certSha256, true); - - XmlUtils.skipCurrentTag(parser); + pkg.usesStaticLibrariesCertDigests = ArrayUtils.appendElement(String[].class, + pkg.usesStaticLibrariesCertDigests, certSha256Digests, true); return true; } + private String[] parseAdditionalCertificates(Resources resources, XmlResourceParser parser, + String[] outError) throws XmlPullParserException, IOException { + String[] certSha256Digests = EmptyArray.STRING; + + int outerDepth = parser.getDepth(); + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + + final String nodeName = parser.getName(); + if (nodeName.equals("additional-certificate")) { + final TypedArray sa = resources.obtainAttributes(parser, com.android.internal. + R.styleable.AndroidManifestAdditionalCertificate); + String certSha256Digest = sa.getNonResourceString(com.android.internal. + R.styleable.AndroidManifestAdditionalCertificate_certDigest); + sa.recycle(); + + if (TextUtils.isEmpty(certSha256Digest)) { + outError[0] = "Bad additional-certificate declaration with empty" + + " certDigest:" + certSha256Digest; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + XmlUtils.skipCurrentTag(parser); + sa.recycle(); + return null; + } + + // We allow ":" delimiters in the SHA declaration as this is the format + // emitted by the certtool making it easy for developers to copy/paste. + certSha256Digest = certSha256Digest.replace(":", "").toLowerCase(); + certSha256Digests = ArrayUtils.appendElement(String.class, + certSha256Digests, certSha256Digest); + } else { + XmlUtils.skipCurrentTag(parser); + } + } + + return certSha256Digests; + } + private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, @@ -2943,7 +3043,7 @@ public class PackageParser { if (procSeq == null || procSeq.length() <= 0) { return defProc; } - return buildCompoundName(pkg, procSeq, "process", outError); + return TextUtils.safeIntern(buildCompoundName(pkg, procSeq, "process", outError)); } private static String buildTaskAffinityName(String pkg, String defProc, @@ -3197,11 +3297,11 @@ public class PackageParser { perm.info.protectionLevel = PermissionInfo.fixProtectionLevel(perm.info.protectionLevel); if ((perm.info.protectionLevel&PermissionInfo.PROTECTION_MASK_FLAGS) != 0) { - if ( (perm.info.protectionLevel&PermissionInfo.PROTECTION_FLAG_EPHEMERAL) == 0 + if ( (perm.info.protectionLevel&PermissionInfo.PROTECTION_FLAG_INSTANT) == 0 && (perm.info.protectionLevel&PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) == 0 && (perm.info.protectionLevel&PermissionInfo.PROTECTION_MASK_BASE) != PermissionInfo.PROTECTION_SIGNATURE) { - outError[0] = " protectionLevel specifies a non-ephemeral flag but is " + outError[0] = " protectionLevel specifies a non-instnat flag but is " + "not based on signature type"; mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3632,6 +3732,13 @@ public class PackageParser { ai.uiOptions = sa.getInt( com.android.internal.R.styleable.AndroidManifestApplication_uiOptions, 0); + ai.classLoaderName = sa.getString( + com.android.internal.R.styleable.AndroidManifestApplication_classLoader); + if (ai.classLoaderName != null + && !ClassLoaderFactory.isValidClassLoaderName(ai.classLoaderName)) { + outError[0] = "Invalid class loader name: " + ai.classLoaderName; + } + sa.recycle(); if (outError[0] != null) { @@ -3640,6 +3747,9 @@ public class PackageParser { } final int innerDepth = parser.getDepth(); + // IMPORTANT: These must only be cached for a single to avoid components + // getting added to the wrong package. + final CachedComponentArgs cachedArgs = new CachedComponentArgs(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT @@ -3650,7 +3760,7 @@ public class PackageParser { String tagName = parser.getName(); if (tagName.equals("activity")) { - Activity a = parseActivity(owner, res, parser, flags, outError, false, + Activity a = parseActivity(owner, res, parser, flags, outError, cachedArgs, false, owner.baseHardwareAccelerated); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; @@ -3660,7 +3770,8 @@ public class PackageParser { owner.activities.add(a); } else if (tagName.equals("receiver")) { - Activity a = parseActivity(owner, res, parser, flags, outError, true, false); + Activity a = parseActivity(owner, res, parser, flags, outError, cachedArgs, + true, false); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3669,7 +3780,7 @@ public class PackageParser { owner.receivers.add(a); } else if (tagName.equals("service")) { - Service s = parseService(owner, res, parser, flags, outError); + Service s = parseService(owner, res, parser, flags, outError, cachedArgs); if (s == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3678,7 +3789,7 @@ public class PackageParser { owner.services.add(s); } else if (tagName.equals("provider")) { - Provider p = parseProvider(owner, res, parser, flags, outError); + Provider p = parseProvider(owner, res, parser, flags, outError, cachedArgs); if (p == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3687,7 +3798,7 @@ public class PackageParser { owner.providers.add(p); } else if (tagName.equals("activity-alias")) { - Activity a = parseActivityAlias(owner, res, parser, flags, outError); + Activity a = parseActivityAlias(owner, res, parser, flags, outError, cachedArgs); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3822,7 +3933,7 @@ public class PackageParser { // every activity info has had a chance to set it from its attributes. setMaxAspectRatio(owner); - modifySharedLibrariesForBackwardCompatibility(owner); + PackageBackwardCompatibility.modifySharedLibraries(owner); if (hasDomainURLs(owner)) { owner.applicationInfo.privateFlags |= ApplicationInfo.PRIVATE_FLAG_HAS_DOMAIN_URLS; @@ -3833,18 +3944,6 @@ public class PackageParser { return true; } - private static void modifySharedLibrariesForBackwardCompatibility(Package owner) { - // "org.apache.http.legacy" is now a part of the boot classpath so it doesn't need - // to be an explicit dependency. - // - // A future change will remove this library from the boot classpath, at which point - // all apps that target SDK 21 and earlier will have it automatically added to their - // dependency lists. - owner.usesLibraries = ArrayUtils.remove(owner.usesLibraries, "org.apache.http.legacy"); - owner.usesOptionalLibraries = ArrayUtils.remove(owner.usesOptionalLibraries, - "org.apache.http.legacy"); - } - /** * Check if one of the IntentFilter as both actions DEFAULT / VIEW and a HTTP/HTTPS data URI */ @@ -3889,6 +3988,16 @@ public class PackageParser { owner.splitFlags[splitIndex] |= ApplicationInfo.FLAG_HAS_CODE; } + final String classLoaderName = sa.getString( + com.android.internal.R.styleable.AndroidManifestApplication_classLoader); + if (classLoaderName == null || ClassLoaderFactory.isValidClassLoaderName(classLoaderName)) { + owner.applicationInfo.splitClassLoaderNames[splitIndex] = classLoaderName; + } else { + outError[0] = "Invalid class loader name: " + classLoaderName; + mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; + return false; + } + final int innerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT @@ -3899,9 +4008,12 @@ public class PackageParser { ComponentInfo parsedComponent = null; + // IMPORTANT: These must only be cached for a single to avoid components + // getting added to the wrong package. + final CachedComponentArgs cachedArgs = new CachedComponentArgs(); String tagName = parser.getName(); if (tagName.equals("activity")) { - Activity a = parseActivity(owner, res, parser, flags, outError, false, + Activity a = parseActivity(owner, res, parser, flags, outError, cachedArgs, false, owner.baseHardwareAccelerated); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; @@ -3912,7 +4024,8 @@ public class PackageParser { parsedComponent = a.info; } else if (tagName.equals("receiver")) { - Activity a = parseActivity(owner, res, parser, flags, outError, true, false); + Activity a = parseActivity(owner, res, parser, flags, outError, cachedArgs, + true, false); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3922,7 +4035,7 @@ public class PackageParser { parsedComponent = a.info; } else if (tagName.equals("service")) { - Service s = parseService(owner, res, parser, flags, outError); + Service s = parseService(owner, res, parser, flags, outError, cachedArgs); if (s == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3932,7 +4045,7 @@ public class PackageParser { parsedComponent = s.info; } else if (tagName.equals("provider")) { - Provider p = parseProvider(owner, res, parser, flags, outError); + Provider p = parseProvider(owner, res, parser, flags, outError, cachedArgs); if (p == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -3942,7 +4055,7 @@ public class PackageParser { parsedComponent = p.info; } else if (tagName.equals("activity-alias")) { - Activity a = parseActivityAlias(owner, res, parser, flags, outError); + Activity a = parseActivityAlias(owner, res, parser, flags, outError, cachedArgs); if (a == null) { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return false; @@ -4088,13 +4201,13 @@ public class PackageParser { } private Activity parseActivity(Package owner, Resources res, - XmlResourceParser parser, int flags, String[] outError, + XmlResourceParser parser, int flags, String[] outError, CachedComponentArgs cachedArgs, boolean receiver, boolean hardwareAccelerated) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, R.styleable.AndroidManifestActivity); - if (mParseActivityArgs == null) { - mParseActivityArgs = new ParseComponentArgs(owner, outError, + if (cachedArgs.mActivityArgs == null) { + cachedArgs.mActivityArgs = new ParseComponentArgs(owner, outError, R.styleable.AndroidManifestActivity_name, R.styleable.AndroidManifestActivity_label, R.styleable.AndroidManifestActivity_icon, @@ -4107,11 +4220,11 @@ public class PackageParser { R.styleable.AndroidManifestActivity_enabled); } - mParseActivityArgs.tag = receiver ? "" : ""; - mParseActivityArgs.sa = sa; - mParseActivityArgs.flags = flags; + cachedArgs.mActivityArgs.tag = receiver ? "" : ""; + cachedArgs.mActivityArgs.sa = sa; + cachedArgs.mActivityArgs.flags = flags; - Activity a = new Activity(mParseActivityArgs, new ActivityInfo()); + Activity a = new Activity(cachedArgs.mActivityArgs, new ActivityInfo()); if (outError[0] != null) { sa.recycle(); return null; @@ -4287,6 +4400,15 @@ public class PackageParser { a.info.colorMode = sa.getInt(R.styleable.AndroidManifestActivity_colorMode, ActivityInfo.COLOR_MODE_DEFAULT); + + if (sa.getBoolean(R.styleable.AndroidManifestActivity_showWhenLocked, false)) { + a.info.flags |= ActivityInfo.FLAG_SHOW_WHEN_LOCKED; + } + + if (sa.getBoolean(R.styleable.AndroidManifestActivity_turnScreenOn, false)) { + a.info.flags |= ActivityInfo.FLAG_TURN_SCREEN_ON; + } + } else { a.info.launchMode = ActivityInfo.LAUNCH_MULTIPLE; a.info.configChanges = 0; @@ -4600,7 +4722,8 @@ public class PackageParser { } private Activity parseActivityAlias(Package owner, Resources res, - XmlResourceParser parser, int flags, String[] outError) + XmlResourceParser parser, int flags, String[] outError, + CachedComponentArgs cachedArgs) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestActivityAlias); @@ -4621,8 +4744,8 @@ public class PackageParser { return null; } - if (mParseActivityAliasArgs == null) { - mParseActivityAliasArgs = new ParseComponentArgs(owner, outError, + if (cachedArgs.mActivityAliasArgs == null) { + cachedArgs.mActivityAliasArgs = new ParseComponentArgs(owner, outError, com.android.internal.R.styleable.AndroidManifestActivityAlias_name, com.android.internal.R.styleable.AndroidManifestActivityAlias_label, com.android.internal.R.styleable.AndroidManifestActivityAlias_icon, @@ -4633,11 +4756,11 @@ public class PackageParser { 0, com.android.internal.R.styleable.AndroidManifestActivityAlias_description, com.android.internal.R.styleable.AndroidManifestActivityAlias_enabled); - mParseActivityAliasArgs.tag = ""; + cachedArgs.mActivityAliasArgs.tag = ""; } - mParseActivityAliasArgs.sa = sa; - mParseActivityAliasArgs.flags = flags; + cachedArgs.mActivityAliasArgs.sa = sa; + cachedArgs.mActivityAliasArgs.flags = flags; Activity target = null; @@ -4685,7 +4808,7 @@ public class PackageParser { info.encryptionAware = info.directBootAware = target.info.directBootAware; - Activity a = new Activity(mParseActivityAliasArgs, info); + Activity a = new Activity(cachedArgs.mActivityAliasArgs, info); if (outError[0] != null) { sa.recycle(); return null; @@ -4791,13 +4914,14 @@ public class PackageParser { } private Provider parseProvider(Package owner, Resources res, - XmlResourceParser parser, int flags, String[] outError) + XmlResourceParser parser, int flags, String[] outError, + CachedComponentArgs cachedArgs) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestProvider); - if (mParseProviderArgs == null) { - mParseProviderArgs = new ParseComponentArgs(owner, outError, + if (cachedArgs.mProviderArgs == null) { + cachedArgs.mProviderArgs = new ParseComponentArgs(owner, outError, com.android.internal.R.styleable.AndroidManifestProvider_name, com.android.internal.R.styleable.AndroidManifestProvider_label, com.android.internal.R.styleable.AndroidManifestProvider_icon, @@ -4808,13 +4932,13 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestProvider_process, com.android.internal.R.styleable.AndroidManifestProvider_description, com.android.internal.R.styleable.AndroidManifestProvider_enabled); - mParseProviderArgs.tag = ""; + cachedArgs.mProviderArgs.tag = ""; } - mParseProviderArgs.sa = sa; - mParseProviderArgs.flags = flags; + cachedArgs.mProviderArgs.sa = sa; + cachedArgs.mProviderArgs.flags = flags; - Provider p = new Provider(mParseProviderArgs, new ProviderInfo()); + Provider p = new Provider(cachedArgs.mProviderArgs, new ProviderInfo()); if (outError[0] != null) { sa.recycle(); return null; @@ -5145,13 +5269,14 @@ public class PackageParser { } private Service parseService(Package owner, Resources res, - XmlResourceParser parser, int flags, String[] outError) + XmlResourceParser parser, int flags, String[] outError, + CachedComponentArgs cachedArgs) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestService); - if (mParseServiceArgs == null) { - mParseServiceArgs = new ParseComponentArgs(owner, outError, + if (cachedArgs.mServiceArgs == null) { + cachedArgs.mServiceArgs = new ParseComponentArgs(owner, outError, com.android.internal.R.styleable.AndroidManifestService_name, com.android.internal.R.styleable.AndroidManifestService_label, com.android.internal.R.styleable.AndroidManifestService_icon, @@ -5162,13 +5287,13 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestService_process, com.android.internal.R.styleable.AndroidManifestService_description, com.android.internal.R.styleable.AndroidManifestService_enabled); - mParseServiceArgs.tag = ""; + cachedArgs.mServiceArgs.tag = ""; } - mParseServiceArgs.sa = sa; - mParseServiceArgs.flags = flags; + cachedArgs.mServiceArgs.sa = sa; + cachedArgs.mServiceArgs.flags = flags; - Service s = new Service(mParseServiceArgs, new ServiceInfo()); + Service s = new Service(cachedArgs.mServiceArgs, new ServiceInfo()); if (outError[0] != null) { sa.recycle(); return null; @@ -5753,7 +5878,7 @@ public class PackageParser { public ArrayList usesLibraries = null; public ArrayList usesStaticLibraries = null; public int[] usesStaticLibrariesVersions = null; - public String[] usesStaticLibrariesCertDigests = null; + public String[][] usesStaticLibrariesCertDigests = null; public ArrayList usesOptionalLibraries = null; public String[] usesLibraryFiles = null; @@ -5851,10 +5976,10 @@ public class PackageParser { public byte[] restrictUpdateHash; - /** - * Set if the app or any of its components are visible to Instant Apps. - */ + /** Set if the app or any of its components are visible to instant applications. */ public boolean visibleToInstantApps; + /** Whether or not the package is a stub and must be replaced by the full version. */ + public boolean isStub; public Package(String packageName) { this.packageName = packageName; @@ -6251,8 +6376,10 @@ public class PackageParser { internStringArrayList(usesStaticLibraries); usesStaticLibrariesVersions = new int[libCount]; dest.readIntArray(usesStaticLibrariesVersions); - usesStaticLibrariesCertDigests = new String[libCount]; - dest.readStringArray(usesStaticLibrariesCertDigests); + usesStaticLibrariesCertDigests = new String[libCount][]; + for (int i = 0; i < libCount; i++) { + usesStaticLibrariesCertDigests[i] = dest.createStringArray(); + } } preferredActivityFilters = new ArrayList<>(); @@ -6380,8 +6507,11 @@ public class PackageParser { dest.writeStringList(requestedPermissions); dest.writeStringList(protectedBroadcasts); + + // TODO: This doesn't work: b/64295061 dest.writeParcelable(parentPackage, flags); dest.writeParcelableList(childPackages, flags); + dest.writeString(staticSharedLibName); dest.writeInt(staticSharedLibVersion); dest.writeStringList(libraryNames); @@ -6395,7 +6525,9 @@ public class PackageParser { dest.writeInt(usesStaticLibraries.size()); dest.writeStringList(usesStaticLibraries); dest.writeIntArray(usesStaticLibrariesVersions); - dest.writeStringArray(usesStaticLibrariesCertDigests); + for (String[] usesStaticLibrariesCertDigest : usesStaticLibrariesCertDigests) { + dest.writeStringArray(usesStaticLibrariesCertDigest); + } } dest.writeParcelableList(preferredActivityFilters, flags); @@ -6860,6 +6992,11 @@ public class PackageParser { } else { ai.privateFlags &= ~ApplicationInfo.PRIVATE_FLAG_INSTANT; } + if (state.virtualPreload) { + ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_VIRTUAL_PRELOAD; + } else { + ai.privateFlags &= ~ApplicationInfo.PRIVATE_FLAG_VIRTUAL_PRELOAD; + } if (state.hidden) { ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_HIDDEN; } else { diff --git a/core/java/android/content/pm/PackageParserCacheHelper.java b/core/java/android/content/pm/PackageParserCacheHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..44def3321c341f0bf53362a458d29ebadc78cfca --- /dev/null +++ b/core/java/android/content/pm/PackageParserCacheHelper.java @@ -0,0 +1,157 @@ +/* + * 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.content.pm; + +import android.os.Parcel; +import android.util.Log; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Helper classes to read from and write to Parcel with pooled strings. + * + * @hide + */ +public class PackageParserCacheHelper { + private PackageParserCacheHelper() { + } + + private static final String TAG = "PackageParserCacheHelper"; + private static final boolean DEBUG = false; + + /** + * Parcel read helper with a string pool. + */ + public static class ReadHelper extends Parcel.ReadWriteHelper { + private final ArrayList mStrings = new ArrayList<>(); + + private final Parcel mParcel; + + public ReadHelper(Parcel p) { + mParcel = p; + } + + /** + * Prepare to read from a parcel, and install itself as a read-write helper. + * + * (We don't do it in the constructor to avoid calling methods before the constructor + * finishes.) + */ + public void startAndInstall() { + mStrings.clear(); + + final int poolPosition = mParcel.readInt(); + final int startPosition = mParcel.dataPosition(); + + // The pool is at the end of the parcel. + mParcel.setDataPosition(poolPosition); + mParcel.readStringList(mStrings); + + // Then move back. + mParcel.setDataPosition(startPosition); + + if (DEBUG) { + Log.i(TAG, "Read " + mStrings.size() + " strings"); + for (int i = 0; i < mStrings.size(); i++) { + Log.i(TAG, " " + i + ": \"" + mStrings.get(i) + "\""); + } + } + + mParcel.setReadWriteHelper(this); + } + + /** + * Read an string index from a parcel, and returns the corresponding string from the pool. + */ + @Override + public String readString(Parcel p) { + return mStrings.get(p.readInt()); + } + } + + /** + * Parcel write helper with a string pool. + */ + public static class WriteHelper extends Parcel.ReadWriteHelper { + private final ArrayList mStrings = new ArrayList<>(); + + private final HashMap mIndexes = new HashMap<>(); + + private final Parcel mParcel; + private final int mStartPos; + + /** + * Constructor. Prepare a parcel, and install it self as a read-write helper. + */ + public WriteHelper(Parcel p) { + mParcel = p; + mStartPos = p.dataPosition(); + mParcel.writeInt(0); // We come back later here and write the pool position. + + mParcel.setReadWriteHelper(this); + } + + /** + * Instead of writing a string directly to a parcel, this method adds it to the pool, + * and write the index in the pool to the parcel. + */ + @Override + public void writeString(Parcel p, String s) { + final Integer cur = mIndexes.get(s); + if (cur != null) { + // String already in the pool. Just write the index. + p.writeInt(cur); // Already in the pool. + if (DEBUG) { + Log.i(TAG, "Duplicate '" + s + "' at " + cur); + } + } else { + // Not in the pool. Add to the pool, and write the index. + final int index = mStrings.size(); + mIndexes.put(s, index); + mStrings.add(s); + + if (DEBUG) { + Log.i(TAG, "New '" + s + "' at " + index); + } + + p.writeInt(index); + } + } + + /** + * Closes a parcel by appending the string pool at the end and updating the pool offset, + * which it assumes is at the first byte. It also uninstalls itself as a read-write helper. + */ + public void finishAndUninstall() { + // Uninstall first, so that writeStringList() uses the native writeString. + mParcel.setReadWriteHelper(null); + + final int poolPosition = mParcel.dataPosition(); + mParcel.writeStringList(mStrings); + + mParcel.setDataPosition(mStartPos); + mParcel.writeInt(poolPosition); + + // Move back to the end. + mParcel.setDataPosition(mParcel.dataSize()); + if (DEBUG) { + Log.i(TAG, "Wrote " + mStrings.size() + " strings"); + } + } + } +} diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index 470336cc70c755c93a50d330a390f22800cb31ed..069b2d4e02b5f2312d63e1ae090f99dff636c303 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -21,10 +21,10 @@ import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; -import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS; -import static android.content.pm.PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; 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_DISABLED_UNTIL_USED_COMPONENTS; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import android.util.ArraySet; @@ -45,6 +45,7 @@ public class PackageUserState { public boolean hidden; // Is the app restricted by owner / admin public boolean suspended; public boolean instantApp; + public boolean virtualPreload; public int enabled; public String lastDisableAppCaller; public int domainVerificationStatus; @@ -75,6 +76,7 @@ public class PackageUserState { hidden = o.hidden; suspended = o.suspended; instantApp = o.instantApp; + virtualPreload = o.virtualPreload; enabled = o.enabled; lastDisableAppCaller = o.lastDisableAppCaller; domainVerificationStatus = o.domainVerificationStatus; @@ -194,6 +196,9 @@ public class PackageUserState { if (instantApp != oldState.instantApp) { return false; } + if (virtualPreload != oldState.virtualPreload) { + return false; + } if (enabled != oldState.enabled) { return false; } diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java index 694e607815465d92e47b4ff80ce90400752ba326..797db54973907fdb7922929c30b80e92c72b9054 100644 --- a/core/java/android/content/pm/PermissionInfo.java +++ b/core/java/android/content/pm/PermissionInfo.java @@ -122,13 +122,10 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { /** * Additional flag for {@link #protectionLevel}, corresponding - * to the ephemeral value of + * to the instant value of * {@link android.R.attr#protectionLevel}. - * @hide */ - @SystemApi - @TestApi - public static final int PROTECTION_FLAG_EPHEMERAL = 0x1000; + public static final int PROTECTION_FLAG_INSTANT = 0x1000; /** * Additional flag for {@link #protectionLevel}, corresponding @@ -254,8 +251,8 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { if ((level&PermissionInfo.PROTECTION_FLAG_SETUP) != 0) { protLevel += "|setup"; } - if ((level&PermissionInfo.PROTECTION_FLAG_EPHEMERAL) != 0) { - protLevel += "|ephemeral"; + if ((level&PermissionInfo.PROTECTION_FLAG_INSTANT) != 0) { + protLevel += "|instant"; } if ((level&PermissionInfo.PROTECTION_FLAG_RUNTIME_ONLY) != 0) { protLevel += "|runtime"; diff --git a/core/java/android/content/pm/ProviderInfo.java b/core/java/android/content/pm/ProviderInfo.java index 91dc06e1213824d26eee40ebcebc93565d23a71e..379b7833150cfd10d312c96f8121de834c4b2eaa 100644 --- a/core/java/android/content/pm/ProviderInfo.java +++ b/core/java/android/content/pm/ProviderInfo.java @@ -125,11 +125,11 @@ public final class ProviderInfo extends ComponentInfo } /** @hide */ - public void dump(Printer pw, String prefix, int flags) { + public void dump(Printer pw, String prefix, int dumpFlags) { super.dumpFront(pw, prefix); pw.println(prefix + "authority=" + authority); pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); - super.dumpBack(pw, prefix, flags); + super.dumpBack(pw, prefix, dumpFlags); } public int describeContents() { diff --git a/core/java/android/content/pm/ResolveInfo.java b/core/java/android/content/pm/ResolveInfo.java index f312204e9467a5bb102ebfc5b233a1a19cf9b0a5..799316700b4def382fec250cb9431c0ef3a1f167 100644 --- a/core/java/android/content/pm/ResolveInfo.java +++ b/core/java/android/content/pm/ResolveInfo.java @@ -282,7 +282,7 @@ public class ResolveInfo implements Parcelable { } /** @hide */ - public void dump(Printer pw, String prefix, int flags) { + public void dump(Printer pw, String prefix, int dumpFlags) { if (filter != null) { pw.println(prefix + "Filter:"); filter.dump(pw, prefix + " "); @@ -302,13 +302,13 @@ public class ResolveInfo implements Parcelable { } if (activityInfo != null) { pw.println(prefix + "ActivityInfo:"); - activityInfo.dump(pw, prefix + " ", flags); + activityInfo.dump(pw, prefix + " ", dumpFlags); } else if (serviceInfo != null) { pw.println(prefix + "ServiceInfo:"); - serviceInfo.dump(pw, prefix + " ", flags); + serviceInfo.dump(pw, prefix + " ", dumpFlags); } else if (providerInfo != null) { pw.println(prefix + "ProviderInfo:"); - providerInfo.dump(pw, prefix + " ", flags); + providerInfo.dump(pw, prefix + " ", dumpFlags); } } diff --git a/core/java/android/content/pm/ServiceInfo.java b/core/java/android/content/pm/ServiceInfo.java index c683ea5d9739da6192cdc89831012d4f53931cf4..91f884ccd3dc4e24937537a2bc567bd2349af79c 100644 --- a/core/java/android/content/pm/ServiceInfo.java +++ b/core/java/android/content/pm/ServiceInfo.java @@ -91,13 +91,13 @@ public class ServiceInfo extends ComponentInfo } /** @hide */ - void dump(Printer pw, String prefix, int flags) { + void dump(Printer pw, String prefix, int dumpFlags) { super.dumpFront(pw, prefix); pw.println(prefix + "permission=" + permission); pw.println(prefix + "flags=0x" + Integer.toHexString(flags)); - super.dumpBack(pw, prefix, flags); + super.dumpBack(pw, prefix, dumpFlags); } - + public String toString() { return "ServiceInfo{" + Integer.toHexString(System.identityHashCode(this)) diff --git a/core/java/android/content/pm/SharedLibraryInfo.java b/core/java/android/content/pm/SharedLibraryInfo.java index 5032e6a59a8b415944220f31a4448a62d65c0bcf..7d301a3154f08699ce2c55f7ae40f613a6275011 100644 --- a/core/java/android/content/pm/SharedLibraryInfo.java +++ b/core/java/android/content/pm/SharedLibraryInfo.java @@ -136,7 +136,6 @@ public final class SharedLibraryInfo implements Parcelable { } /** - * @hide * @removed */ public boolean isBuiltin() { @@ -144,7 +143,6 @@ public final class SharedLibraryInfo implements Parcelable { } /** - * @hide * @removed */ public boolean isDynamic() { @@ -152,7 +150,6 @@ public final class SharedLibraryInfo implements Parcelable { } /** - * @hide * @removed */ public boolean isStatic() { diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 60226d5b6875ce18f5f8ef576f947e34bb6a00d0..e173653cd961799577ef5b6732be9ea9c888adc7 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -19,6 +19,7 @@ package android.content.res; import android.animation.Animator; import android.animation.StateListAnimator; import android.annotation.AnimRes; +import android.annotation.AnimatorRes; import android.annotation.AnyRes; import android.annotation.ArrayRes; import android.annotation.AttrRes; @@ -1162,7 +1163,7 @@ public class Resources { * * @see #getXml */ - public XmlResourceParser getAnimation(@AnimRes int id) throws NotFoundException { + public XmlResourceParser getAnimation(@AnimatorRes @AnimRes int id) throws NotFoundException { return loadXmlResourceParser(id, "anim"); } diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index 23591c7893fb0476c6a2f935de71618a71ad0b1e..386239cf4f93a4709b5300d927b3c1f0937fc940 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -15,9 +15,6 @@ */ package android.content.res; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; - import android.animation.Animator; import android.animation.StateListAnimator; import android.annotation.AnyRes; @@ -32,7 +29,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo.Config; import android.content.res.Configuration.NativeConfig; import android.content.res.Resources.NotFoundException; -import android.graphics.FontFamily; +import android.graphics.Bitmap; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; @@ -40,8 +37,9 @@ import android.graphics.drawable.DrawableContainer; import android.icu.text.PluralRules; import android.os.Build; import android.os.LocaleList; +import android.os.SystemClock; +import android.os.SystemProperties; import android.os.Trace; -import android.text.FontConfig; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; @@ -51,10 +49,12 @@ import android.util.TypedValue; import android.util.Xml; import android.view.DisplayAdjustments; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + import java.io.IOException; import java.io.InputStream; import java.util.Arrays; -import java.util.List; import java.util.Locale; /** @@ -72,9 +72,20 @@ public class ResourcesImpl { private static final boolean DEBUG_LOAD = false; private static final boolean DEBUG_CONFIG = false; - private static final boolean TRACE_FOR_PRELOAD = false; - private static final boolean TRACE_FOR_MISS_PRELOAD = false; + static final String TAG_PRELOAD = TAG + ".preload"; + + private static final boolean TRACE_FOR_PRELOAD = false; // Do we still need it? + private static final boolean TRACE_FOR_MISS_PRELOAD = false; // Do we still need it? + + public static final boolean TRACE_FOR_DETAILED_PRELOAD = + SystemProperties.getBoolean("debug.trace_resource_preload", false); + + /** Used only when TRACE_FOR_DETAILED_PRELOAD is true. */ + private static int sPreloadTracingNumLoadedDrawables; + private long mPreloadTracingPreloadStartTime; + private long mPreloadTracingStartBitmapSize; + private long mPreloadTracingStartBitmapCount; private static final int ID_OTHER = 0x01000004; @@ -593,6 +604,16 @@ public class ResourcesImpl { Drawable dr; boolean needsNewDrawableAfterCache = false; if (cs != null) { + if (TRACE_FOR_DETAILED_PRELOAD) { + // Log only framework resources + if (((id >>> 24) == 0x1) && (android.os.Process.myUid() != 0)) { + final String name = getResourceName(id); + if (name != null) { + Log.d(TAG_PRELOAD, "Hit preloaded FW drawable #" + + Integer.toHexString(id) + " " + name); + } + } + } dr = cs.newDrawable(wrapper); } else if (isColorDrawable) { dr = new ColorDrawable(value.data); @@ -744,6 +765,18 @@ public class ResourcesImpl { } } + // For prelaod tracing. + long startTime = 0; + int startBitmapCount = 0; + long startBitmapSize = 0; + int startDrwableCount = 0; + if (TRACE_FOR_DETAILED_PRELOAD) { + startTime = System.nanoTime(); + startBitmapCount = Bitmap.sPreloadTracingNumInstantiatedBitmaps; + startBitmapSize = Bitmap.sPreloadTracingTotalBitmapsSize; + startDrwableCount = sPreloadTracingNumLoadedDrawables; + } + if (DEBUG_LOAD) { Log.v(TAG, "Loading drawable for cookie " + value.assetCookie + ": " + file); } @@ -763,7 +796,7 @@ public class ResourcesImpl { dr = Drawable.createFromResourceStream(wrapper, value, is, file, null); is.close(); } - } catch (Exception e) { + } catch (Exception | StackOverflowError e) { Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); final NotFoundException rnf = new NotFoundException( "File " + file + " from drawable resource ID #0x" + Integer.toHexString(id)); @@ -772,6 +805,37 @@ public class ResourcesImpl { } Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + if (TRACE_FOR_DETAILED_PRELOAD) { + if (((id >>> 24) == 0x1)) { + final String name = getResourceName(id); + if (name != null) { + final long time = System.nanoTime() - startTime; + final int loadedBitmapCount = + Bitmap.sPreloadTracingNumInstantiatedBitmaps - startBitmapCount; + final long loadedBitmapSize = + Bitmap.sPreloadTracingTotalBitmapsSize - startBitmapSize; + final int loadedDrawables = + sPreloadTracingNumLoadedDrawables - startDrwableCount; + + sPreloadTracingNumLoadedDrawables++; + + final boolean isRoot = (android.os.Process.myUid() == 0); + + Log.d(TAG_PRELOAD, + (isRoot ? "Preloaded FW drawable #" + : "Loaded non-preloaded FW drawable #") + + Integer.toHexString(id) + + " " + name + + " " + file + + " " + dr.getClass().getCanonicalName() + + " #nested_drawables= " + loadedDrawables + + " #bitmaps= " + loadedBitmapCount + + " total_bitmap_size= " + loadedBitmapSize + + " in[us] " + (time / 1000)); + } + } + } + return dr; } @@ -1102,6 +1166,13 @@ public class ResourcesImpl { mPreloading = true; mConfiguration.densityDpi = DisplayMetrics.DENSITY_DEVICE; updateConfiguration(null, null, null); + + if (TRACE_FOR_DETAILED_PRELOAD) { + mPreloadTracingPreloadStartTime = SystemClock.uptimeMillis(); + mPreloadTracingStartBitmapSize = Bitmap.sPreloadTracingTotalBitmapsSize; + mPreloadTracingStartBitmapCount = Bitmap.sPreloadTracingNumInstantiatedBitmaps; + Log.d(TAG_PRELOAD, "Preload starting"); + } } } @@ -1111,6 +1182,16 @@ public class ResourcesImpl { */ void finishPreloading() { if (mPreloading) { + if (TRACE_FOR_DETAILED_PRELOAD) { + final long time = SystemClock.uptimeMillis() - mPreloadTracingPreloadStartTime; + final long size = + Bitmap.sPreloadTracingTotalBitmapsSize - mPreloadTracingStartBitmapSize; + final long count = Bitmap.sPreloadTracingNumInstantiatedBitmaps + - mPreloadTracingStartBitmapCount; + Log.d(TAG_PRELOAD, "Preload finished, " + + count + " bitmaps of " + size + " bytes in " + time + " ms"); + } + mPreloading = false; flushLayoutCache(); } diff --git a/core/java/android/database/AbstractCursor.java b/core/java/android/database/AbstractCursor.java index 581fe7fce5ebbf9d07ac09fc991030e961655b4f..fdb702f01e9d948aa70637a6ab224ed9ce46c4e3 100644 --- a/core/java/android/database/AbstractCursor.java +++ b/core/java/android/database/AbstractCursor.java @@ -23,6 +23,7 @@ import android.os.UserHandle; import android.util.Log; import java.lang.ref.WeakReference; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -330,7 +331,14 @@ public abstract class AbstractCursor implements CrossProcessCursor { public int getColumnIndexOrThrow(String columnName) { final int index = getColumnIndex(columnName); if (index < 0) { - throw new IllegalArgumentException("column '" + columnName + "' does not exist"); + String availableColumns = ""; + try { + availableColumns = Arrays.toString(getColumnNames()); + } catch (Exception e) { + Log.d(TAG, "Cannot collect column names for debug purposes", e); + } + throw new IllegalArgumentException("column '" + columnName + + "' does not exist. Available columns: " + availableColumns); } return index; } diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java index 34a9523fc104c38e5c1d4a3a75267a41bf066cdc..f894f0536b5222f0f5d501341151c6303a41e2ec 100644 --- a/core/java/android/database/sqlite/SQLiteConnection.java +++ b/core/java/android/database/sqlite/SQLiteConnection.java @@ -16,9 +16,6 @@ package android.database.sqlite; -import dalvik.system.BlockGuard; -import dalvik.system.CloseGuard; - import android.database.Cursor; import android.database.CursorWindow; import android.database.DatabaseUtils; @@ -32,11 +29,14 @@ import android.util.Log; import android.util.LruCache; import android.util.Printer; +import dalvik.system.BlockGuard; +import dalvik.system.CloseGuard; + import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Map; -import java.util.regex.Pattern; + /** * Represents a SQLite database connection. @@ -118,7 +118,8 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen private int mCancellationSignalAttachCount; private static native long nativeOpen(String path, int openFlags, String label, - boolean enableTrace, boolean enableProfile); + boolean enableTrace, boolean enableProfile, int lookasideSlotSize, + int lookasideSlotCount); private static native void nativeClose(long connectionPtr); private static native void nativeRegisterCustomFunction(long connectionPtr, SQLiteCustomFunction function); @@ -208,8 +209,8 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen private void open() { mConnectionPtr = nativeOpen(mConfiguration.path, mConfiguration.openFlags, mConfiguration.label, - SQLiteDebug.DEBUG_SQL_STATEMENTS, SQLiteDebug.DEBUG_SQL_TIME); - + SQLiteDebug.DEBUG_SQL_STATEMENTS, SQLiteDebug.DEBUG_SQL_TIME, + mConfiguration.lookasideSlotSize, mConfiguration.lookasideSlotCount); setPageSize(); setForeignKeyModeFromConfiguration(); setWalModeFromConfiguration(); diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java index 3a1714cedde96fba4db6cca3e0090e8e060aa138..b66bf18fca1d9935275bb7e153503ca008425aeb 100644 --- a/core/java/android/database/sqlite/SQLiteConnectionPool.java +++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java @@ -16,16 +16,22 @@ package android.database.sqlite; -import dalvik.system.CloseGuard; - import android.database.sqlite.SQLiteDebug.DbStats; import android.os.CancellationSignal; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; import android.os.OperationCanceledException; import android.os.SystemClock; import android.util.Log; import android.util.PrefixPrinter; import android.util.Printer; +import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; + +import dalvik.system.CloseGuard; + import java.io.Closeable; import java.util.ArrayList; import java.util.Map; @@ -93,6 +99,9 @@ public final class SQLiteConnectionPool implements Closeable { new ArrayList(); private SQLiteConnection mAvailablePrimaryConnection; + @GuardedBy("mLock") + private IdleConnectionHandler mIdleConnectionHandler; + // Describes what should happen to an acquired connection when it is returned to the pool. enum AcquiredConnectionStatus { // The connection should be returned to the pool as usual. @@ -148,6 +157,12 @@ public final class SQLiteConnectionPool implements Closeable { private SQLiteConnectionPool(SQLiteDatabaseConfiguration configuration) { mConfiguration = new SQLiteDatabaseConfiguration(configuration); setMaxConnectionPoolSizeLocked(); + // If timeout is set, setup idle connection handler + // In case of MAX_VALUE - idle connections are never closed + if (mConfiguration.idleConnectionTimeoutMs != Long.MAX_VALUE) { + setupIdleConnectionHandler(Looper.getMainLooper(), + mConfiguration.idleConnectionTimeoutMs); + } } @Override @@ -184,6 +199,12 @@ public final class SQLiteConnectionPool implements Closeable { // This might throw if the database is corrupt. mAvailablePrimaryConnection = openConnectionLocked(mConfiguration, true /*primaryConnection*/); // might throw + // Mark it released so it can be closed after idle timeout + synchronized (mLock) { + if (mIdleConnectionHandler != null) { + mIdleConnectionHandler.connectionReleased(mAvailablePrimaryConnection); + } + } // Mark the pool as being open for business. mIsOpen = true; @@ -345,7 +366,13 @@ public final class SQLiteConnectionPool implements Closeable { */ public SQLiteConnection acquireConnection(String sql, int connectionFlags, CancellationSignal cancellationSignal) { - return waitForConnection(sql, connectionFlags, cancellationSignal); + SQLiteConnection con = waitForConnection(sql, connectionFlags, cancellationSignal); + synchronized (mLock) { + if (mIdleConnectionHandler != null) { + mIdleConnectionHandler.connectionAcquired(con); + } + } + return con; } /** @@ -362,6 +389,9 @@ public final class SQLiteConnectionPool implements Closeable { */ public void releaseConnection(SQLiteConnection connection) { synchronized (mLock) { + if (mIdleConnectionHandler != null) { + mIdleConnectionHandler.connectionReleased(connection); + } AcquiredConnectionStatus status = mAcquiredConnections.remove(connection); if (status == null) { throw new IllegalStateException("Cannot perform this operation " @@ -503,6 +533,27 @@ public final class SQLiteConnectionPool implements Closeable { } } + // Can't throw. + private boolean closeAvailableConnectionLocked(int connectionId) { + final int count = mAvailableNonPrimaryConnections.size(); + for (int i = count - 1; i >= 0; i--) { + SQLiteConnection c = mAvailableNonPrimaryConnections.get(i); + if (c.getConnectionId() == connectionId) { + closeConnectionAndLogExceptionsLocked(c); + mAvailableNonPrimaryConnections.remove(i); + return true; + } + } + + if (mAvailablePrimaryConnection != null + && mAvailablePrimaryConnection.getConnectionId() == connectionId) { + closeConnectionAndLogExceptionsLocked(mAvailablePrimaryConnection); + mAvailablePrimaryConnection = null; + return true; + } + return false; + } + // Can't throw. private void closeAvailableNonPrimaryConnectionsAndLogExceptionsLocked() { final int count = mAvailableNonPrimaryConnections.size(); @@ -526,6 +577,9 @@ public final class SQLiteConnectionPool implements Closeable { private void closeConnectionAndLogExceptionsLocked(SQLiteConnection connection) { try { connection.close(); // might throw + if (mIdleConnectionHandler != null) { + mIdleConnectionHandler.connectionClosed(connection); + } } catch (RuntimeException ex) { Log.e(TAG, "Failed to close connection, its fate is now in the hands " + "of the merciful GC: " + connection, ex); @@ -946,17 +1000,35 @@ public final class SQLiteConnectionPool implements Closeable { } private void setMaxConnectionPoolSizeLocked() { - if ((mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { + if (!mConfiguration.isInMemoryDb() + && (mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { mMaxConnectionPoolSize = SQLiteGlobal.getWALConnectionPoolSize(); } else { - // TODO: We don't actually need to restrict the connection pool size to 1 + // We don't actually need to always restrict the connection pool size to 1 // for non-WAL databases. There might be reasons to use connection pooling - // with other journal modes. For now, enabling connection pooling and - // using WAL are the same thing in the API. + // with other journal modes. However, we should always keep pool size of 1 for in-memory + // databases since every :memory: db is separate from another. + // For now, enabling connection pooling and using WAL are the same thing in the API. mMaxConnectionPoolSize = 1; } } + /** + * Set up the handler based on the provided looper and timeout. + */ + @VisibleForTesting + public void setupIdleConnectionHandler(Looper looper, long timeoutMs) { + synchronized (mLock) { + mIdleConnectionHandler = new IdleConnectionHandler(looper, timeoutMs); + } + } + + void disableIdleConnectionHandler() { + synchronized (mLock) { + mIdleConnectionHandler = null; + } + } + private void throwIfClosedLocked() { if (!mIsOpen) { throw new IllegalStateException("Cannot perform this operation " @@ -1004,7 +1076,14 @@ public final class SQLiteConnectionPool implements Closeable { printer.println("Connection pool for " + mConfiguration.path + ":"); printer.println(" Open: " + mIsOpen); printer.println(" Max connections: " + mMaxConnectionPoolSize); - + if (mConfiguration.isLookasideConfigSet()) { + printer.println(" Lookaside config: sz=" + mConfiguration.lookasideSlotSize + + " cnt=" + mConfiguration.lookasideSlotCount); + } + if (mConfiguration.idleConnectionTimeoutMs != Long.MAX_VALUE) { + printer.println( + " Idle connection timeout: " + mConfiguration.idleConnectionTimeoutMs); + } printer.println(" Available primary connection:"); if (mAvailablePrimaryConnection != null) { mAvailablePrimaryConnection.dump(indentedPrinter, verbose); @@ -1069,4 +1148,42 @@ public final class SQLiteConnectionPool implements Closeable { public RuntimeException mException; public int mNonce; } + + private class IdleConnectionHandler extends Handler { + private final long mTimeout; + + IdleConnectionHandler(Looper looper, long timeout) { + super(looper); + mTimeout = timeout; + } + + @Override + public void handleMessage(Message msg) { + // Skip the (obsolete) message if the handler has changed + synchronized (mLock) { + if (this != mIdleConnectionHandler) { + return; + } + if (closeAvailableConnectionLocked(msg.what)) { + if (Log.isLoggable(TAG, Log.DEBUG)) { + Log.d(TAG, "Closed idle connection " + mConfiguration.label + " " + msg.what + + " after " + mTimeout); + } + } + } + } + + void connectionReleased(SQLiteConnection con) { + sendEmptyMessageDelayed(con.getConnectionId(), mTimeout); + } + + void connectionAcquired(SQLiteConnection con) { + // Remove any pending close operations + removeMessages(con.getConnectionId()); + } + + void connectionClosed(SQLiteConnection con) { + removeMessages(con.getConnectionId()); + } + } } diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index fe849b8a99cf549fe4884b28b206129b6165e86a..df0e262b712f18b488cc6124cb070d6b42d83787 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -16,8 +16,11 @@ package android.database.sqlite; +import android.annotation.IntDef; +import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.ActivityManager; import android.content.ContentValues; import android.database.Cursor; import android.database.DatabaseErrorHandler; @@ -28,16 +31,21 @@ import android.database.sqlite.SQLiteDebug.DbStats; import android.os.CancellationSignal; import android.os.Looper; import android.os.OperationCanceledException; +import android.os.SystemProperties; import android.text.TextUtils; import android.util.EventLog; import android.util.Log; import android.util.Pair; import android.util.Printer; +import com.android.internal.util.Preconditions; + import dalvik.system.CloseGuard; import java.io.File; import java.io.FileFilter; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -71,21 +79,20 @@ public final class SQLiteDatabase extends SQLiteClosable { private static final int EVENT_DB_CORRUPT = 75004; + // By default idle connections are not closed + private static final boolean DEBUG_CLOSE_IDLE_CONNECTIONS = SystemProperties + .getBoolean("persist.debug.sqlite.close_idle_connections", false); + // Stores reference to all databases opened in the current process. // (The referent Object is not used at this time.) // INVARIANT: Guarded by sActiveDatabases. - private static WeakHashMap sActiveDatabases = - new WeakHashMap(); + private static WeakHashMap sActiveDatabases = new WeakHashMap<>(); // Thread-local for database sessions that belong to this database. // Each thread has its own database session. // INVARIANT: Immutable. - private final ThreadLocal mThreadSession = new ThreadLocal() { - @Override - protected SQLiteSession initialValue() { - return createSession(); - } - }; + private final ThreadLocal mThreadSession = ThreadLocal + .withInitial(this::createSession); // The optional factory to use when creating new Cursors. May be null. // INVARIANT: Immutable. @@ -253,11 +260,31 @@ public final class SQLiteDatabase extends SQLiteClosable { */ public static final int MAX_SQL_CACHE_SIZE = 100; - private SQLiteDatabase(String path, int openFlags, CursorFactory cursorFactory, - DatabaseErrorHandler errorHandler) { + private SQLiteDatabase(final String path, final int openFlags, + CursorFactory cursorFactory, DatabaseErrorHandler errorHandler, + int lookasideSlotSize, int lookasideSlotCount, long idleConnectionTimeoutMs) { mCursorFactory = cursorFactory; mErrorHandler = errorHandler != null ? errorHandler : new DefaultDatabaseErrorHandler(); mConfigurationLocked = new SQLiteDatabaseConfiguration(path, openFlags); + mConfigurationLocked.lookasideSlotSize = lookasideSlotSize; + mConfigurationLocked.lookasideSlotCount = lookasideSlotCount; + // Disable lookaside allocator on low-RAM devices + if (ActivityManager.isLowRamDeviceStatic()) { + mConfigurationLocked.lookasideSlotCount = 0; + mConfigurationLocked.lookasideSlotSize = 0; + } + long effectiveTimeoutMs = Long.MAX_VALUE; + // Never close idle connections for in-memory databases + if (!mConfigurationLocked.isInMemoryDb()) { + // First, check app-specific value. Otherwise use defaults + // -1 in idleConnectionTimeoutMs indicates unset value + if (idleConnectionTimeoutMs >= 0) { + effectiveTimeoutMs = idleConnectionTimeoutMs; + } else if (DEBUG_CLOSE_IDLE_CONNECTIONS) { + effectiveTimeoutMs = SQLiteGlobal.getIdleConnectionTimeout(); + } + } + mConfigurationLocked.idleConnectionTimeoutMs = effectiveTimeoutMs; } @Override @@ -667,10 +694,37 @@ public final class SQLiteDatabase extends SQLiteClosable { * @return the newly opened database * @throws SQLiteException if the database cannot be opened */ - public static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags) { + public static SQLiteDatabase openDatabase(@NonNull String path, @Nullable CursorFactory factory, + @DatabaseOpenFlags int flags) { return openDatabase(path, factory, flags, null); } + /** + * Open the database according to the specified {@link OpenParams parameters} + * + * @param path path to database file to open and/or create. + *

Important: The file should be constructed either from an absolute path or + * by using {@link android.content.Context#getDatabasePath(String)}. + * @param openParams configuration parameters that are used for opening {@link SQLiteDatabase} + * @return the newly opened database + * @throws SQLiteException if the database cannot be opened + */ + public static SQLiteDatabase openDatabase(@NonNull File path, + @NonNull OpenParams openParams) { + return openDatabase(path.getPath(), openParams); + } + + private static SQLiteDatabase openDatabase(@NonNull String path, + @NonNull OpenParams openParams) { + Preconditions.checkArgument(openParams != null, "OpenParams cannot be null"); + SQLiteDatabase db = new SQLiteDatabase(path, openParams.mOpenFlags, + openParams.mCursorFactory, openParams.mErrorHandler, + openParams.mLookasideSlotSize, openParams.mLookasideSlotCount, + openParams.mIdleConnectionTimeout); + db.open(); + return db; + } + /** * Open the database according to the flags {@link #OPEN_READWRITE} * {@link #OPEN_READONLY} {@link #CREATE_IF_NECESSARY} and/or {@link #NO_LOCALIZED_COLLATORS}. @@ -690,9 +744,9 @@ public final class SQLiteDatabase extends SQLiteClosable { * @return the newly opened database * @throws SQLiteException if the database cannot be opened */ - public static SQLiteDatabase openDatabase(String path, CursorFactory factory, int flags, - DatabaseErrorHandler errorHandler) { - SQLiteDatabase db = new SQLiteDatabase(path, flags, factory, errorHandler); + public static SQLiteDatabase openDatabase(@NonNull String path, @Nullable CursorFactory factory, + @DatabaseOpenFlags int flags, @Nullable DatabaseErrorHandler errorHandler) { + SQLiteDatabase db = new SQLiteDatabase(path, flags, factory, errorHandler, -1, -1, -1); db.open(); return db; } @@ -700,22 +754,24 @@ public final class SQLiteDatabase extends SQLiteClosable { /** * Equivalent to openDatabase(file.getPath(), factory, CREATE_IF_NECESSARY). */ - public static SQLiteDatabase openOrCreateDatabase(File file, CursorFactory factory) { + public static SQLiteDatabase openOrCreateDatabase(@NonNull File file, + @Nullable CursorFactory factory) { return openOrCreateDatabase(file.getPath(), factory); } /** * Equivalent to openDatabase(path, factory, CREATE_IF_NECESSARY). */ - public static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory) { + public static SQLiteDatabase openOrCreateDatabase(@NonNull String path, + @Nullable CursorFactory factory) { return openDatabase(path, factory, CREATE_IF_NECESSARY, null); } /** * Equivalent to openDatabase(path, factory, CREATE_IF_NECESSARY, errorHandler). */ - public static SQLiteDatabase openOrCreateDatabase(String path, CursorFactory factory, - DatabaseErrorHandler errorHandler) { + public static SQLiteDatabase openOrCreateDatabase(@NonNull String path, + @Nullable CursorFactory factory, @Nullable DatabaseErrorHandler errorHandler) { return openDatabase(path, factory, CREATE_IF_NECESSARY, errorHandler); } @@ -726,7 +782,7 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param file The database file path. * @return True if the database was successfully deleted. */ - public static boolean deleteDatabase(File file) { + public static boolean deleteDatabase(@NonNull File file) { if (file == null) { throw new IllegalArgumentException("file must not be null"); } @@ -823,14 +879,32 @@ public final class SQLiteDatabase extends SQLiteClosable { * * @param factory an optional factory class that is called to instantiate a * cursor when query is called - * @return a SQLiteDatabase object, or null if the database can't be created + * @return a SQLiteDatabase instance + * @throws SQLiteException if the database cannot be created */ - public static SQLiteDatabase create(CursorFactory factory) { + @NonNull + public static SQLiteDatabase create(@Nullable CursorFactory factory) { // This is a magic string with special meaning for SQLite. return openDatabase(SQLiteDatabaseConfiguration.MEMORY_DB_PATH, factory, CREATE_IF_NECESSARY); } + /** + * Create a memory backed SQLite database. Its contents will be destroyed + * when the database is closed. + * + *

Sets the locale of the database to the the system's current locale. + * Call {@link #setLocale} if you would like something else.

+ * @param openParams configuration parameters that are used for opening SQLiteDatabase + * @return a SQLiteDatabase instance + * @throws SQLException if the database cannot be created + */ + @NonNull + public static SQLiteDatabase createInMemory(@NonNull OpenParams openParams) { + return openDatabase(SQLiteDatabaseConfiguration.MEMORY_DB_PATH, + openParams.toBuilder().addOpenFlags(CREATE_IF_NECESSARY).build()); + } + /** * Registers a CustomFunction callback as a function that can be called from * SQLite database triggers. @@ -1667,6 +1741,7 @@ public final class SQLiteDatabase extends SQLiteClosable { if (!mHasAttachedDbsLocked) { mHasAttachedDbsLocked = true; disableWal = true; + mConnectionPoolLocked.disableIdleConnectionHandler(); } } if (disableWal) { @@ -2210,4 +2285,273 @@ public final class SQLiteDatabase extends SQLiteClosable { public interface CustomFunction { public void callback(String[] args); } + + /** + * Wrapper for configuration parameters that are used for opening {@link SQLiteDatabase} + */ + public static final class OpenParams { + private final int mOpenFlags; + private final CursorFactory mCursorFactory; + private final DatabaseErrorHandler mErrorHandler; + private final int mLookasideSlotSize; + private final int mLookasideSlotCount; + private long mIdleConnectionTimeout; + + private OpenParams(int openFlags, CursorFactory cursorFactory, + DatabaseErrorHandler errorHandler, int lookasideSlotSize, int lookasideSlotCount, + long idleConnectionTimeout) { + mOpenFlags = openFlags; + mCursorFactory = cursorFactory; + mErrorHandler = errorHandler; + mLookasideSlotSize = lookasideSlotSize; + mLookasideSlotCount = lookasideSlotCount; + mIdleConnectionTimeout = idleConnectionTimeout; + } + + /** + * Returns size in bytes of each lookaside slot or -1 if not set. + * + * @see Builder#setLookasideConfig(int, int) + */ + @IntRange(from = -1) + public int getLookasideSlotSize() { + return mLookasideSlotSize; + } + + /** + * Returns total number of lookaside memory slots per database connection or -1 if not + * set. + * + * @see Builder#setLookasideConfig(int, int) + */ + @IntRange(from = -1) + public int getLookasideSlotCount() { + return mLookasideSlotCount; + } + + /** + * Returns flags to control database access mode. Default value is 0. + * + * @see Builder#setOpenFlags(int) + */ + @DatabaseOpenFlags + public int getOpenFlags() { + return mOpenFlags; + } + + /** + * Returns an optional factory class that is called to instantiate a cursor when query + * is called + * + * @see Builder#setCursorFactory(CursorFactory) + */ + @Nullable + public CursorFactory getCursorFactory() { + return mCursorFactory; + } + + /** + * Returns handler for database corruption errors + * + * @see Builder#setErrorHandler(DatabaseErrorHandler) + */ + @Nullable + public DatabaseErrorHandler getErrorHandler() { + return mErrorHandler; + } + + /** + * Returns maximum number of milliseconds that SQLite connection is allowed to be idle + * before it is closed and removed from the pool. + *

If the value isn't set, the timeout defaults to the system wide timeout + * + * @return timeout in milliseconds or -1 if the value wasn't set. + */ + public long getIdleConnectionTimeout() { + return mIdleConnectionTimeout; + } + + /** + * Creates a new instance of builder {@link Builder#Builder(OpenParams) initialized} with + * {@code this} parameters. + * @hide + */ + @NonNull + public Builder toBuilder() { + return new Builder(this); + } + + /** + * Builder for {@link OpenParams}. + */ + public static final class Builder { + private int mLookasideSlotSize = -1; + private int mLookasideSlotCount = -1; + private long mIdleConnectionTimeout = -1; + private int mOpenFlags; + private CursorFactory mCursorFactory; + private DatabaseErrorHandler mErrorHandler; + + public Builder() { + } + + public Builder(OpenParams params) { + mLookasideSlotSize = params.mLookasideSlotSize; + mLookasideSlotCount = params.mLookasideSlotCount; + mOpenFlags = params.mOpenFlags; + mCursorFactory = params.mCursorFactory; + mErrorHandler = params.mErrorHandler; + } + + /** + * Configures + * lookaside memory allocator + * + *

SQLite default settings will be used, if this method isn't called. + * Use {@code setLookasideConfig(0,0)} to disable lookaside + * + *

Note: Provided slotSize/slotCount configuration is just a + * recommendation. The system may choose different values depending on a device, e.g. + * lookaside allocations can be disabled on low-RAM devices + * + * @param slotSize The size in bytes of each lookaside slot. + * @param slotCount The total number of lookaside memory slots per database connection. + */ + public Builder setLookasideConfig(@IntRange(from = 0) final int slotSize, + @IntRange(from = 0) final int slotCount) { + Preconditions.checkArgument(slotSize >= 0, + "lookasideSlotCount cannot be negative"); + Preconditions.checkArgument(slotCount >= 0, + "lookasideSlotSize cannot be negative"); + Preconditions.checkArgument( + (slotSize > 0 && slotCount > 0) || (slotCount == 0 && slotSize == 0), + "Invalid configuration: " + slotSize + ", " + slotCount); + + mLookasideSlotSize = slotSize; + mLookasideSlotCount = slotCount; + return this; + } + + /** + * Returns true if {@link #ENABLE_WRITE_AHEAD_LOGGING} flag is set + * @hide + */ + public boolean isWriteAheadLoggingEnabled() { + return (mOpenFlags & ENABLE_WRITE_AHEAD_LOGGING) != 0; + } + + /** + * Sets flags to control database access mode + * @param openFlags The new flags to set + * @see #OPEN_READWRITE + * @see #OPEN_READONLY + * @see #CREATE_IF_NECESSARY + * @see #NO_LOCALIZED_COLLATORS + * @see #ENABLE_WRITE_AHEAD_LOGGING + * @return same builder instance for chaining multiple calls into a single statement + */ + @NonNull + public Builder setOpenFlags(@DatabaseOpenFlags int openFlags) { + mOpenFlags = openFlags; + return this; + } + + /** + * Adds flags to control database access mode + * + * @param openFlags The new flags to add + * @return same builder instance for chaining multiple calls into a single statement + */ + @NonNull + public Builder addOpenFlags(@DatabaseOpenFlags int openFlags) { + mOpenFlags |= openFlags; + return this; + } + + /** + * Removes database access mode flags + * + * @param openFlags Flags to remove + * @return same builder instance for chaining multiple calls into a single statement + */ + @NonNull + public Builder removeOpenFlags(@DatabaseOpenFlags int openFlags) { + mOpenFlags &= ~openFlags; + return this; + } + + /** + * Sets {@link #ENABLE_WRITE_AHEAD_LOGGING} flag if {@code enabled} is {@code true}, + * unsets otherwise + * @hide + */ + public void setWriteAheadLoggingEnabled(boolean enabled) { + if (enabled) { + addOpenFlags(ENABLE_WRITE_AHEAD_LOGGING); + } else { + removeOpenFlags(ENABLE_WRITE_AHEAD_LOGGING); + } + } + + /** + * Set an optional factory class that is called to instantiate a cursor when query + * is called. + * + * @param cursorFactory instance + * @return same builder instance for chaining multiple calls into a single statement + */ + @NonNull + public Builder setCursorFactory(@Nullable CursorFactory cursorFactory) { + mCursorFactory = cursorFactory; + return this; + } + + + /** + * Sets {@link DatabaseErrorHandler} object to handle db corruption errors + */ + @NonNull + public Builder setErrorHandler(@Nullable DatabaseErrorHandler errorHandler) { + mErrorHandler = errorHandler; + return this; + } + + /** + * Sets the maximum number of milliseconds that SQLite connection is allowed to be idle + * before it is closed and removed from the pool. + * + * @param idleConnectionTimeoutMs timeout in milliseconds. Use {@link Long#MAX_VALUE} + * to allow unlimited idle connections. + */ + @NonNull + public Builder setIdleConnectionTimeout( + @IntRange(from = 0) long idleConnectionTimeoutMs) { + Preconditions.checkArgument(idleConnectionTimeoutMs >= 0, + "idle connection timeout cannot be negative"); + mIdleConnectionTimeout = idleConnectionTimeoutMs; + return this; + } + + /** + * Creates an instance of {@link OpenParams} with the options that were previously set + * on this builder + */ + @NonNull + public OpenParams build() { + return new OpenParams(mOpenFlags, mCursorFactory, mErrorHandler, mLookasideSlotSize, + mLookasideSlotCount, mIdleConnectionTimeout); + } + } + } + + /** @hide */ + @IntDef(flag = true, prefix = {"OPEN_", "CREATE_", "NO_", "ENABLE_"}, value = { + OPEN_READWRITE, + OPEN_READONLY, + CREATE_IF_NECESSARY, + NO_LOCALIZED_COLLATORS, + ENABLE_WRITE_AHEAD_LOGGING + }) + @Retention(RetentionPolicy.SOURCE) + public @interface DatabaseOpenFlags {} } diff --git a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java index 549ab902fdd1ff85907b6af17f606174e4fff419..34c9b3395d1ab716e2a16c1613be701b27107b88 100644 --- a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java +++ b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java @@ -89,6 +89,27 @@ public final class SQLiteDatabaseConfiguration { public final ArrayList customFunctions = new ArrayList(); + /** + * The size in bytes of each lookaside slot + * + *

If negative, the default lookaside configuration will be used + */ + public int lookasideSlotSize = -1; + + /** + * The total number of lookaside memory slots per database connection + * + *

If negative, the default lookaside configuration will be used + */ + public int lookasideSlotCount = -1; + + /** + * The number of milliseconds that SQLite connection is allowed to be idle before it + * is closed and removed from the pool. + *

By default, idle connections are not closed + */ + public long idleConnectionTimeoutMs = Long.MAX_VALUE; + /** * Creates a database configuration with the required parameters for opening a * database and default values for all other parameters. @@ -146,6 +167,9 @@ public final class SQLiteDatabaseConfiguration { foreignKeyConstraintsEnabled = other.foreignKeyConstraintsEnabled; customFunctions.clear(); customFunctions.addAll(other.customFunctions); + lookasideSlotSize = other.lookasideSlotSize; + lookasideSlotCount = other.lookasideSlotCount; + idleConnectionTimeoutMs = other.idleConnectionTimeoutMs; } /** @@ -162,4 +186,8 @@ public final class SQLiteDatabaseConfiguration { } return EMAIL_IN_DB_PATTERN.matcher(path).replaceAll("XX@YY"); } + + boolean isLookasideConfigSet() { + return lookasideSlotCount >= 0 && lookasideSlotSize >= 0; + } } diff --git a/core/java/android/database/sqlite/SQLiteDebug.java b/core/java/android/database/sqlite/SQLiteDebug.java index 11973312a3a31a29bbc8980a77552aef15f114a2..a921aa34eb9205142bc510dd7766c1e896f7bc7c 100644 --- a/core/java/android/database/sqlite/SQLiteDebug.java +++ b/core/java/android/database/sqlite/SQLiteDebug.java @@ -16,13 +16,14 @@ package android.database.sqlite; -import java.util.ArrayList; - +import android.annotation.TestApi; import android.os.Build; import android.os.SystemProperties; import android.util.Log; import android.util.Printer; +import java.util.ArrayList; + /** * Provides debugging info about all SQLite databases running in the current process. * @@ -117,6 +118,7 @@ public final class SQLiteDebug { /** * contains statistics about a database */ + @TestApi public static class DbStats { /** name of the database */ public String dbName; @@ -127,7 +129,8 @@ public final class SQLiteDebug { /** the database size */ public long dbSize; - /** documented here http://www.sqlite.org/c3ref/c_dbstatus_lookaside_used.html */ + /** + * Number of lookaside slots: http://www.sqlite.org/c3ref/c_dbstatus_lookaside_used.html */ public int lookaside; /** statement cache stats: hits/misses/cachesize */ @@ -147,6 +150,7 @@ public final class SQLiteDebug { * return all pager and database stats for the current process. * @return {@link PagerStats} */ + @TestApi public static PagerStats getDatabaseInfo() { PagerStats stats = new PagerStats(); nativeGetPagerStats(stats); diff --git a/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java b/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java index 797430a4c8ec69c19600db3e13ae746ecb42d976..1721e0c69dc39804c2c348fdbae2b1a6d21ce0c6 100644 --- a/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java +++ b/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.TestApi; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.os.CancellationSignal; @@ -25,6 +26,7 @@ import android.os.CancellationSignal; * * @hide */ +@TestApi public final class SQLiteDirectCursorDriver implements SQLiteCursorDriver { private final SQLiteDatabase mDatabase; private final String mEditTable; diff --git a/core/java/android/database/sqlite/SQLiteGlobal.java b/core/java/android/database/sqlite/SQLiteGlobal.java index 922d11b6ae65f0687c26918365c52ccf488ff8f5..94d5555c4c24df010d8346af86593b107d2323ad 100644 --- a/core/java/android/database/sqlite/SQLiteGlobal.java +++ b/core/java/android/database/sqlite/SQLiteGlobal.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.TestApi; import android.content.res.Resources; import android.os.StatFs; import android.os.SystemProperties; @@ -34,6 +35,7 @@ import android.os.SystemProperties; * * @hide */ +@TestApi public final class SQLiteGlobal { private static final String TAG = "SQLiteGlobal"; @@ -124,4 +126,15 @@ public final class SQLiteGlobal { com.android.internal.R.integer.db_connection_pool_size)); return Math.max(2, value); } + + /** + * The default number of milliseconds that SQLite connection is allowed to be idle before it + * is closed and removed from the pool. + */ + public static int getIdleConnectionTimeout() { + return SystemProperties.getInt("debug.sqlite.idle_connection_timeout", + Resources.getSystem().getInteger( + com.android.internal.R.integer.db_default_idle_connection_timeout)); + } + } diff --git a/core/java/android/database/sqlite/SQLiteOpenHelper.java b/core/java/android/database/sqlite/SQLiteOpenHelper.java index bb8d9ffa679bffb28586192c7ca3002cd7797312..cc9e0f4ded8433b6d786ae04573f3eee12310a04 100644 --- a/core/java/android/database/sqlite/SQLiteOpenHelper.java +++ b/core/java/android/database/sqlite/SQLiteOpenHelper.java @@ -16,10 +16,14 @@ package android.database.sqlite; +import android.annotation.IntRange; import android.content.Context; import android.database.DatabaseErrorHandler; +import android.database.SQLException; import android.database.sqlite.SQLiteDatabase.CursorFactory; +import android.os.FileUtils; import android.util.Log; + import java.io.File; /** @@ -43,24 +47,14 @@ import java.io.File; public abstract class SQLiteOpenHelper { private static final String TAG = SQLiteOpenHelper.class.getSimpleName(); - // When true, getReadableDatabase returns a read-only database if it is just being opened. - // The database handle is reopened in read/write mode when getWritableDatabase is called. - // We leave this behavior disabled in production because it is inefficient and breaks - // many applications. For debugging purposes it can be useful to turn on strict - // read-only semantics to catch applications that call getReadableDatabase when they really - // wanted getWritableDatabase. - private static final boolean DEBUG_STRICT_READONLY = false; - private final Context mContext; private final String mName; - private final CursorFactory mFactory; private final int mNewVersion; private final int mMinimumSupportedVersion; private SQLiteDatabase mDatabase; private boolean mIsInitializing; - private boolean mEnableWriteAheadLogging; - private final DatabaseErrorHandler mErrorHandler; + private final SQLiteDatabase.OpenParams.Builder mOpenParamsBuilder; /** * Create a helper object to create, open, and/or manage a database. @@ -130,10 +124,12 @@ public abstract class SQLiteOpenHelper { mContext = context; mName = name; - mFactory = factory; mNewVersion = version; - mErrorHandler = errorHandler; mMinimumSupportedVersion = Math.max(0, minimumSupportedVersion); + mOpenParamsBuilder = new SQLiteDatabase.OpenParams.Builder(); + mOpenParamsBuilder.setCursorFactory(factory); + mOpenParamsBuilder.setErrorHandler(errorHandler); + mOpenParamsBuilder.addOpenFlags(SQLiteDatabase.CREATE_IF_NECESSARY); } /** @@ -157,7 +153,7 @@ public abstract class SQLiteOpenHelper { */ public void setWriteAheadLoggingEnabled(boolean enabled) { synchronized (this) { - if (mEnableWriteAheadLogging != enabled) { + if (mOpenParamsBuilder.isWriteAheadLoggingEnabled() != enabled) { if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) { if (enabled) { mDatabase.enableWriteAheadLogging(); @@ -165,8 +161,56 @@ public abstract class SQLiteOpenHelper { mDatabase.disableWriteAheadLogging(); } } - mEnableWriteAheadLogging = enabled; + mOpenParamsBuilder.setWriteAheadLoggingEnabled(enabled); + } + } + } + + /** + * Configures lookaside memory allocator + * + *

This method should be called from the constructor of the subclass, + * before opening the database, since lookaside memory configuration can only be changed + * when no connection is using it + * + *

SQLite default settings will be used, if this method isn't called. + * Use {@code setLookasideConfig(0,0)} to disable lookaside + * + *

Note: Provided slotSize/slotCount configuration is just a recommendation. + * The system may choose different values depending on a device, e.g. lookaside allocations + * can be disabled on low-RAM devices + * + * @param slotSize The size in bytes of each lookaside slot. + * @param slotCount The total number of lookaside memory slots per database connection. + */ + public void setLookasideConfig(@IntRange(from = 0) final int slotSize, + @IntRange(from = 0) final int slotCount) { + synchronized (this) { + if (mDatabase != null && mDatabase.isOpen()) { + throw new IllegalStateException( + "Lookaside memory config cannot be changed after opening the database"); } + mOpenParamsBuilder.setLookasideConfig(slotSize, slotCount); + } + } + + /** + * Sets the maximum number of milliseconds that SQLite connection is allowed to be idle + * before it is closed and removed from the pool. + * + *

This method should be called from the constructor of the subclass, + * before opening the database + * + * @param idleConnectionTimeoutMs timeout in milliseconds. Use {@link Long#MAX_VALUE} value + * to allow unlimited idle connections. + */ + public void setIdleConnectionTimeout(@IntRange(from = 0) final long idleConnectionTimeoutMs) { + synchronized (this) { + if (mDatabase != null && mDatabase.isOpen()) { + throw new IllegalStateException( + "Connection timeout setting cannot be changed after opening the database"); + } + mOpenParamsBuilder.setIdleConnectionTimeout(idleConnectionTimeoutMs); } } @@ -243,27 +287,22 @@ public abstract class SQLiteOpenHelper { db.reopenReadWrite(); } } else if (mName == null) { - db = SQLiteDatabase.create(null); + db = SQLiteDatabase.createInMemory(mOpenParamsBuilder.build()); } else { + final File filePath = mContext.getDatabasePath(mName); + SQLiteDatabase.OpenParams params = mOpenParamsBuilder.build(); try { - if (DEBUG_STRICT_READONLY && !writable) { - final String path = mContext.getDatabasePath(mName).getPath(); - db = SQLiteDatabase.openDatabase(path, mFactory, - SQLiteDatabase.OPEN_READONLY, mErrorHandler); - } else { - db = mContext.openOrCreateDatabase(mName, mEnableWriteAheadLogging ? - Context.MODE_ENABLE_WRITE_AHEAD_LOGGING : 0, - mFactory, mErrorHandler); - } - } catch (SQLiteException ex) { + db = SQLiteDatabase.openDatabase(filePath, params); + // Keep pre-O-MR1 behavior by resetting file permissions to 660 + setFilePermissionsForDb(filePath.getPath()); + } catch (SQLException ex) { if (writable) { throw ex; } Log.e(TAG, "Couldn't open " + mName + " for writing (will try read-only):", ex); - final String path = mContext.getDatabasePath(mName).getPath(); - db = SQLiteDatabase.openDatabase(path, mFactory, - SQLiteDatabase.OPEN_READONLY, mErrorHandler); + params = params.toBuilder().addOpenFlags(SQLiteDatabase.OPEN_READONLY).build(); + db = SQLiteDatabase.openDatabase(filePath, params); } } @@ -323,6 +362,11 @@ public abstract class SQLiteOpenHelper { } } + private static void setFilePermissionsForDb(String dbPath) { + int perms = FileUtils.S_IRUSR | FileUtils.S_IWUSR | FileUtils.S_IRGRP | FileUtils.S_IWGRP; + FileUtils.setPermissions(dbPath, perms, -1, -1); + } + /** * Close any open database object. */ diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index aa35a6610db7aec74a3fc2fa336d34687b72db85..931b5c91385129ddd6b07f16e3ca0a3f51f8fd52 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -16,10 +16,11 @@ package android.hardware; -import android.app.ActivityThread; +import static android.system.OsConstants.*; + import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; -import android.app.job.JobInfo; +import android.app.ActivityThread; import android.content.Context; import android.graphics.ImageFormat; import android.graphics.Point; @@ -34,11 +35,11 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.renderscript.Allocation; import android.renderscript.Element; -import android.renderscript.RenderScript; import android.renderscript.RSIllegalArgumentException; +import android.renderscript.RenderScript; import android.renderscript.Type; -import android.util.Log; import android.text.TextUtils; +import android.util.Log; import android.view.Surface; import android.view.SurfaceHolder; @@ -48,8 +49,6 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import static android.system.OsConstants.*; - /** * The Camera class is used to set image capture settings, start/stop preview, * snap pictures, and retrieve frames for encoding for video. This class is a @@ -243,12 +242,19 @@ public class Camera { /** * Returns the number of physical cameras available on this device. + * + * @return total number of accessible camera devices, or 0 if there are no + * cameras or an error was encountered enumerating them. */ public native static int getNumberOfCameras(); /** * Returns the information about a particular camera. * If {@link #getNumberOfCameras()} returns N, the valid id is 0 to N-1. + * + * @throws RuntimeException if an invalid ID is provided, or if there is an + * error retrieving the information (generally due to a hardware or other + * low-level failure). */ public static void getCameraInfo(int cameraId, CameraInfo cameraInfo) { _getCameraInfo(cameraId, cameraInfo); @@ -362,7 +368,10 @@ public class Camera { /** * Creates a new Camera object to access the first back-facing camera on the * device. If the device does not have a back-facing camera, this returns - * null. + * null. Otherwise acts like the {@link #open(int)} call. + * + * @return a new Camera object for the first back-facing camera, or null if there is no + * backfacing camera * @see #open(int) */ public static Camera open() { @@ -609,6 +618,8 @@ public class Camera { * * @throws IOException if a connection cannot be re-established (for * example, if the camera is still in use by another process). + * @throws RuntimeException if release() has been called on this Camera + * instance. */ public native final void reconnect() throws IOException; @@ -637,6 +648,8 @@ public class Camera { * or null to remove the preview surface * @throws IOException if the method fails (for example, if the surface * is unavailable or unsuitable). + * @throws RuntimeException if release() has been called on this Camera + * instance. */ public final void setPreviewDisplay(SurfaceHolder holder) throws IOException { if (holder != null) { @@ -684,6 +697,8 @@ public class Camera { * texture * @throws IOException if the method fails (for example, if the surface * texture is unavailable or unsuitable). + * @throws RuntimeException if release() has been called on this Camera + * instance. */ public native final void setPreviewTexture(SurfaceTexture surfaceTexture) throws IOException; @@ -733,12 +748,20 @@ public class Camera { * {@link #setPreviewCallbackWithBuffer(Camera.PreviewCallback)} were * called, {@link Camera.PreviewCallback#onPreviewFrame(byte[], Camera)} * will be called when preview data becomes available. + * + * @throws RuntimeException if starting preview fails; usually this would be + * because of a hardware or other low-level error, or because release() + * has been called on this Camera instance. */ public native final void startPreview(); /** * Stops capturing and drawing preview frames to the surface, and * resets the camera for a future call to {@link #startPreview()}. + * + * @throws RuntimeException if stopping preview fails; usually this would be + * because of a hardware or other low-level error, or because release() + * has been called on this Camera instance. */ public final void stopPreview() { _stopPreview(); @@ -777,6 +800,8 @@ public class Camera { * * @param cb a callback object that receives a copy of each preview frame, * or null to stop receiving callbacks. + * @throws RuntimeException if release() has been called on this Camera + * instance. * @see android.media.MediaActionSound */ public final void setPreviewCallback(PreviewCallback cb) { @@ -803,6 +828,8 @@ public class Camera { * * @param cb a callback object that receives a copy of the next preview frame, * or null to stop receiving callbacks. + * @throws RuntimeException if release() has been called on this Camera + * instance. * @see android.media.MediaActionSound */ public final void setOneShotPreviewCallback(PreviewCallback cb) { @@ -840,6 +867,8 @@ public class Camera { * * @param cb a callback object that receives a copy of the preview frame, * or null to stop receiving callbacks and clear the buffer queue. + * @throws RuntimeException if release() has been called on this Camera + * instance. * @see #addCallbackBuffer(byte[]) * @see android.media.MediaActionSound */ @@ -1259,6 +1288,9 @@ public class Camera { * success sound to the user.

* * @param cb the callback to run + * @throws RuntimeException if starting autofocus fails; usually this would + * be because of a hardware or other low-level error, or because + * release() has been called on this Camera instance. * @see #cancelAutoFocus() * @see android.hardware.Camera.Parameters#setAutoExposureLock(boolean) * @see android.hardware.Camera.Parameters#setAutoWhiteBalanceLock(boolean) @@ -1279,6 +1311,9 @@ public class Camera { * this function will return the focus position to the default. * If the camera does not support auto-focus, this is a no-op. * + * @throws RuntimeException if canceling autofocus fails; usually this would + * be because of a hardware or other low-level error, or because + * release() has been called on this Camera instance. * @see #autoFocus(Camera.AutoFocusCallback) */ public final void cancelAutoFocus() @@ -1333,6 +1368,9 @@ public class Camera { * Sets camera auto-focus move callback. * * @param cb the callback to run + * @throws RuntimeException if enabling the focus move callback fails; + * usually this would be because of a hardware or other low-level error, + * or because release() has been called on this Camera instance. */ public void setAutoFocusMoveCallback(AutoFocusMoveCallback cb) { mAutoFocusMoveCallback = cb; @@ -1384,7 +1422,7 @@ public class Camera { }; /** - * Equivalent to takePicture(shutter, raw, null, jpeg). + * Equivalent to
takePicture(Shutter, raw, null, jpeg)
. * * @see #takePicture(ShutterCallback, PictureCallback, PictureCallback, PictureCallback) */ @@ -1422,6 +1460,9 @@ public class Camera { * @param raw the callback for raw (uncompressed) image data, or null * @param postview callback with postview image data, may be null * @param jpeg the callback for JPEG image data, or null + * @throws RuntimeException if starting picture capture fails; usually this + * would be because of a hardware or other low-level error, or because + * release() has been called on this Camera instance. */ public final void takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback postview, PictureCallback jpeg) { @@ -1534,6 +1575,9 @@ public class Camera { * * @param degrees the angle that the picture will be rotated clockwise. * Valid values are 0, 90, 180, and 270. + * @throws RuntimeException if setting orientation fails; usually this would + * be because of a hardware or other low-level error, or because + * release() has been called on this Camera instance. * @see #setPreviewDisplay(SurfaceHolder) */ public native final void setDisplayOrientation(int degrees); @@ -1559,6 +1603,9 @@ public class Camera { * changed. {@code false} if the shutter sound state could not be * changed. {@code true} is also returned if shutter sound playback * is already set to the requested state. + * @throws RuntimeException if the call fails; usually this would be because + * of a hardware or other low-level error, or because release() has been + * called on this Camera instance. * @see #takePicture * @see CameraInfo#canDisableShutterSound * @see ShutterCallback @@ -1903,6 +1950,9 @@ public class Camera { * If modifications are made to the returned Parameters, they must be passed * to {@link #setParameters(Camera.Parameters)} to take effect. * + * @throws RuntimeException if reading parameters fails; usually this would + * be because of a hardware or other low-level error, or because + * release() has been called on this Camera instance. * @see #setParameters(Camera.Parameters) */ public Parameters getParameters() { diff --git a/core/java/android/hardware/camera2/DngCreator.java b/core/java/android/hardware/camera2/DngCreator.java index 1a51acd6c5ecd9603fca75001d05046be6beca3b..cc484eaf265ca1c092b6760b75d7ab76f3a1b5f4 100644 --- a/core/java/android/hardware/camera2/DngCreator.java +++ b/core/java/android/hardware/camera2/DngCreator.java @@ -18,7 +18,6 @@ package android.hardware.camera2; import android.annotation.IntRange; import android.annotation.NonNull; -import android.annotation.Nullable; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.ImageFormat; @@ -37,6 +36,7 @@ import java.nio.ByteBuffer; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Locale; import java.util.TimeZone; /** @@ -122,7 +122,7 @@ public final class DngCreator implements AutoCloseable { // Create this fresh each time since the time zone may change while a long-running application // is active. final DateFormat dateTimeStampFormat = - new SimpleDateFormat(TIFF_DATETIME_FORMAT); + new SimpleDateFormat(TIFF_DATETIME_FORMAT, Locale.US); dateTimeStampFormat.setTimeZone(TimeZone.getDefault()); // Format for metadata @@ -472,7 +472,8 @@ public final class DngCreator implements AutoCloseable { private static final String GPS_DATE_FORMAT_STR = "yyyy:MM:dd"; private static final String TIFF_DATETIME_FORMAT = "yyyy:MM:dd HH:mm:ss"; - private static final DateFormat sExifGPSDateStamp = new SimpleDateFormat(GPS_DATE_FORMAT_STR); + private static final DateFormat sExifGPSDateStamp = + new SimpleDateFormat(GPS_DATE_FORMAT_STR, Locale.US); private final Calendar mGPSTimeStampCalendar = Calendar .getInstance(TimeZone.getTimeZone("UTC")); diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java index 0d5c5e3538c1b7e30b05fba2ee4e4ff368e20fbd..bfeb14dedb5cef485bc5a2b4ca044adb6ff70868 100644 --- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java @@ -1769,7 +1769,7 @@ public class CameraDeviceImpl extends CameraDevice } @Override - public void onRepeatingRequestError(long lastFrameNumber) { + public void onRepeatingRequestError(long lastFrameNumber, int repeatingRequestId) { if (DEBUG) { Log.d(TAG, "Repeating request error received. Last frame number is " + lastFrameNumber); @@ -1782,7 +1782,10 @@ public class CameraDeviceImpl extends CameraDevice } checkEarlyTriggerSequenceComplete(mRepeatingRequestId, lastFrameNumber); - mRepeatingRequestId = REQUEST_ID_NONE; + // Check if there is already a new repeating request + if (mRepeatingRequestId == repeatingRequestId) { + mRepeatingRequestId = REQUEST_ID_NONE; + } } } diff --git a/core/java/android/hardware/camera2/legacy/CameraDeviceState.java b/core/java/android/hardware/camera2/legacy/CameraDeviceState.java index e48bce193b52cf0382e8871003ceae8c35ccd213..89ecd5f1ce63f92a5d85b7cc0f664e621b2e1941 100644 --- a/core/java/android/hardware/camera2/legacy/CameraDeviceState.java +++ b/core/java/android/hardware/camera2/legacy/CameraDeviceState.java @@ -76,7 +76,8 @@ public class CameraDeviceState { void onBusy(); void onCaptureStarted(RequestHolder holder, long timestamp); void onCaptureResult(CameraMetadataNative result, RequestHolder holder); - void onRepeatingRequestError(long lastFrameNumber); + void onRequestQueueEmpty(); + void onRepeatingRequestError(long lastFrameNumber, int repeatingRequestId); } /** @@ -207,12 +208,28 @@ public class CameraDeviceState { *

Repeating request has been stopped due to an error such as abandoned output surfaces.

* * @param lastFrameNumber Frame number of the last repeating request before it is stopped. + * @param repeatingRequestId The ID of the repeating request being stopped */ - public synchronized void setRepeatingRequestError(final long lastFrameNumber) { + public synchronized void setRepeatingRequestError(final long lastFrameNumber, + final int repeatingRequestId) { mCurrentHandler.post(new Runnable() { @Override public void run() { - mCurrentListener.onRepeatingRequestError(lastFrameNumber); + mCurrentListener.onRepeatingRequestError(lastFrameNumber, repeatingRequestId); + } + }); + } + + /** + * Indicate that request queue (non-repeating) becomes empty. + * + *

Send notification that all non-repeating requests have been sent to camera device.

+ */ + public synchronized void setRequestQueueEmpty() { + mCurrentHandler.post(new Runnable() { + @Override + public void run() { + mCurrentListener.onRequestQueueEmpty(); } }); } diff --git a/core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java b/core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java index f87d8c1401c530b147fdec351703424e74cd51b3..49d4096e3f3e87da35795b2720b760ff70785ad7 100644 --- a/core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java +++ b/core/java/android/hardware/camera2/legacy/CameraDeviceUserShim.java @@ -264,10 +264,10 @@ public class CameraDeviceUserShim implements ICameraDeviceUser { } @Override - public void onRepeatingRequestError(long lastFrameNumber) { + public void onRepeatingRequestError(long lastFrameNumber, int repeatingRequestId) { + Object[] objArray = new Object[] { lastFrameNumber, repeatingRequestId }; Message msg = getHandler().obtainMessage(REPEATING_REQUEST_ERROR, - /*arg1*/ (int) (lastFrameNumber & 0xFFFFFFFFL), - /*arg2*/ (int) ( (lastFrameNumber >> 32) & 0xFFFFFFFFL)); + /*obj*/ objArray); getHandler().sendMessage(msg); } @@ -329,9 +329,10 @@ public class CameraDeviceUserShim implements ICameraDeviceUser { break; } case REPEATING_REQUEST_ERROR: { - long lastFrameNumber = msg.arg2 & 0xFFFFFFFFL; - lastFrameNumber = (lastFrameNumber << 32) | (msg.arg1 & 0xFFFFFFFFL); - mCallbacks.onRepeatingRequestError(lastFrameNumber); + Object[] objArray = (Object[]) msg.obj; + long lastFrameNumber = (Long) objArray[0]; + int repeatingRequestId = (Integer) objArray[1]; + mCallbacks.onRepeatingRequestError(lastFrameNumber, repeatingRequestId); break; } case REQUEST_QUEUE_EMPTY: { @@ -504,12 +505,18 @@ public class CameraDeviceUserShim implements ICameraDeviceUser { if (mLegacyDevice.isClosed()) { String err = "Cannot end configure, device has been closed."; Log.e(TAG, err); + synchronized(mConfigureLock) { + mConfiguring = false; + } throw new ServiceSpecificException(ICameraService.ERROR_DISCONNECTED, err); } if (operatingMode != ICameraDeviceUser.NORMAL_MODE) { String err = "LEGACY devices do not support this operating mode"; Log.e(TAG, err); + synchronized(mConfigureLock) { + mConfiguring = false; + } throw new ServiceSpecificException(ICameraService.ERROR_ILLEGAL_ARGUMENT, err); } diff --git a/core/java/android/hardware/camera2/legacy/LegacyCameraDevice.java b/core/java/android/hardware/camera2/legacy/LegacyCameraDevice.java index 1a0590491523516f1330ef38f3b30e308a17358f..cb59fd14f5c5bd0877e38349b9b85bb5a135563a 100644 --- a/core/java/android/hardware/camera2/legacy/LegacyCameraDevice.java +++ b/core/java/android/hardware/camera2/legacy/LegacyCameraDevice.java @@ -222,6 +222,25 @@ public class LegacyCameraDevice implements AutoCloseable { }); } + @Override + public void onRequestQueueEmpty() { + mResultHandler.post(new Runnable() { + @Override + public void run() { + if (DEBUG) { + Log.d(TAG, "doing onRequestQueueEmpty callback"); + } + try { + mDeviceCallbacks.onRequestQueueEmpty(); + } catch (RemoteException e) { + throw new IllegalStateException( + "Received remote exception during onRequestQueueEmpty callback: ", + e); + } + } + }); + } + @Override public void onCaptureResult(final CameraMetadataNative result, final RequestHolder holder) { final CaptureResultExtras extras = getExtrasFromRequest(holder); @@ -244,7 +263,8 @@ public class LegacyCameraDevice implements AutoCloseable { } @Override - public void onRepeatingRequestError(final long lastFrameNumber) { + public void onRepeatingRequestError(final long lastFrameNumber, + final int repeatingRequestId) { mResultHandler.post(new Runnable() { @Override public void run() { @@ -252,7 +272,8 @@ public class LegacyCameraDevice implements AutoCloseable { Log.d(TAG, "doing onRepeatingRequestError callback."); } try { - mDeviceCallbacks.onRepeatingRequestError(lastFrameNumber); + mDeviceCallbacks.onRepeatingRequestError(lastFrameNumber, + repeatingRequestId); } catch (RemoteException e) { throw new IllegalStateException( "Received remote exception during onRepeatingRequestError " + diff --git a/core/java/android/hardware/camera2/legacy/RequestQueue.java b/core/java/android/hardware/camera2/legacy/RequestQueue.java index 8f252a19b48cc6a02f3a336de1f1f561c8506d89..407e5e63e6ac599d3fb8bf65a6854946f82b8e59 100644 --- a/core/java/android/hardware/camera2/legacy/RequestQueue.java +++ b/core/java/android/hardware/camera2/legacy/RequestQueue.java @@ -18,7 +18,6 @@ package android.hardware.camera2.legacy; import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.utils.SubmitInfo; import android.util.Log; -import android.util.Pair; import java.util.ArrayDeque; import java.util.List; @@ -41,6 +40,28 @@ public class RequestQueue { private int mCurrentRequestId = 0; private final List mJpegSurfaceIds; + public final class RequestQueueEntry { + private final BurstHolder mBurstHolder; + private final Long mFrameNumber; + private final boolean mQueueEmpty; + + public BurstHolder getBurstHolder() { + return mBurstHolder; + } + public Long getFrameNumber() { + return mFrameNumber; + } + public boolean isQueueEmpty() { + return mQueueEmpty; + } + + public RequestQueueEntry(BurstHolder burstHolder, Long frameNumber, boolean queueEmpty) { + mBurstHolder = burstHolder; + mFrameNumber = frameNumber; + mQueueEmpty = queueEmpty; + } + } + public RequestQueue(List jpegSurfaceIds) { mJpegSurfaceIds = jpegSurfaceIds; } @@ -50,10 +71,12 @@ public class RequestQueue { * *

If a repeating burst is returned, it will not be removed.

* - * @return a pair containing the next burst and the current frame number, or null if none exist. + * @return an entry containing the next burst, the current frame number, and flag about whether + * request queue becomes empty. Null if no burst exists. */ - public synchronized Pair getNext() { + public synchronized RequestQueueEntry getNext() { BurstHolder next = mRequestQueue.poll(); + boolean queueEmptied = (next != null && mRequestQueue.size() == 0); if (next == null && mRepeatingRequest != null) { next = mRepeatingRequest; mCurrentRepeatingFrameNumber = mCurrentFrameNumber + @@ -64,7 +87,7 @@ public class RequestQueue { return null; } - Pair ret = new Pair(next, mCurrentFrameNumber); + RequestQueueEntry ret = new RequestQueueEntry(next, mCurrentFrameNumber, queueEmptied); mCurrentFrameNumber += next.getNumberOfRequests(); return ret; } diff --git a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java index da62f5445daaf321c3a651b74a0a857fe7fc6fa2..aaf07e60bef56cf138c4e9779a8abeada43cb8dc 100644 --- a/core/java/android/hardware/camera2/legacy/RequestThreadManager.java +++ b/core/java/android/hardware/camera2/legacy/RequestThreadManager.java @@ -504,6 +504,15 @@ public class RequestThreadManager { previews.add(new Pair<>(p, previewSizeIter.next())); } mGLThreadManager.setConfigurationAndWait(previews, mCaptureCollector); + + for (Surface p : mPreviewOutputs) { + try { + LegacyCameraDevice.setSurfaceOrientation(p, facing, orientation); + } catch (LegacyExceptionUtils.BufferQueueAbandonedException e) { + Log.e(TAG, "Surface abandoned, skipping setSurfaceOrientation()", e); + } + } + mGLThreadManager.allowNewFrames(); mPreviewTexture = mGLThreadManager.getCurrentSurfaceTexture(); if (mPreviewTexture != null) { @@ -713,7 +722,7 @@ public class RequestThreadManager { boolean anyRequestOutputAbandoned = false; // Get the next burst from the request queue. - Pair nextBurst = mRequestQueue.getNext(); + RequestQueue.RequestQueueEntry nextBurst = mRequestQueue.getNext(); if (nextBurst == null) { // If there are no further requests queued, wait for any currently executing @@ -748,11 +757,17 @@ public class RequestThreadManager { if (nextBurst != null) { // Queue another capture if we did not get the last burst. handler.sendEmptyMessage(MSG_SUBMIT_CAPTURE_REQUEST); + + // Check whether capture queue becomes empty + if (nextBurst.isQueueEmpty()) { + mDeviceState.setRequestQueueEmpty(); + } } // Complete each request in the burst + BurstHolder burstHolder = nextBurst.getBurstHolder(); List requests = - nextBurst.first.produceRequestHolders(nextBurst.second); + burstHolder.produceRequestHolders(nextBurst.getFrameNumber()); for (RequestHolder holder : requests) { CaptureRequest request = holder.getRequest(); @@ -918,13 +933,14 @@ public class RequestThreadManager { } // Stop the repeating request if any of its output surfaces is abandoned. - if (anyRequestOutputAbandoned && nextBurst.first.isRepeating()) { - long lastFrameNumber = cancelRepeating(nextBurst.first.getRequestId()); + if (anyRequestOutputAbandoned && burstHolder.isRepeating()) { + long lastFrameNumber = cancelRepeating(burstHolder.getRequestId()); if (DEBUG) { Log.d(TAG, "Stopped repeating request. Last frame number is " + lastFrameNumber); } - mDeviceState.setRepeatingRequestError(lastFrameNumber); + mDeviceState.setRepeatingRequestError(lastFrameNumber, + burstHolder.getRequestId()); } if (DEBUG) { diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index bda80390a6149f943bfeb08ec6ccbe332eaf2a9c..b2af44ecf0fd8d4b4be0a55627aad1bcda8e65ef 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -18,13 +18,16 @@ package android.hardware.display; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; +import android.graphics.Point; import android.media.projection.MediaProjection; import android.os.Handler; import android.util.SparseArray; import android.view.Display; import android.view.Surface; +import android.view.WindowManagerPolicy; import java.util.ArrayList; @@ -236,6 +239,13 @@ public final class DisplayManager { * keyguard is shown but is insecure. * *

+ * This might be used in a case when the content of a virtual display is captured and sent to an + * external hardware display that is not visible to the system directly. This flag will allow + * the continued display of content while other displays will be covered by a keyguard which + * doesn't require providing credentials to unlock. This means that there is either no password + * or other authentication method set, or the device is in a trusted state - + * {@link android.service.trust.TrustAgentService} has available and active trust agent. + *

* This flag can only be applied to private displays as defined by the * {@link Display#FLAG_PRIVATE} display flag. It is mutually exclusive with * {@link #VIRTUAL_DISPLAY_FLAG_PUBLIC}. If both flags are specified then this flag's behavior @@ -243,8 +253,11 @@ public final class DisplayManager { *

* * @see #createVirtualDisplay + * @see WindowManagerPolicy#isKeyguardSecure(int) + * @see WindowManagerPolicy#isKeyguardTrustedLw() * @hide */ + // TODO: Update name and documentation and un-hide the flag. Don't change the value before that. public static final int VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD = 1 << 5; /** @@ -265,6 +278,19 @@ public final class DisplayManager { */ public static final int VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT = 1 << 7; + /** + * Virtual display flag: Indicates that the contents will be destroyed once + * the display is removed. + * + * Public virtual displays without this flag will move their content to main display + * stack once they're removed. Private vistual displays will always destroy their + * content on removal even without this flag. + * + * @see #createVirtualDisplay + * @hide + */ + public static final int VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL = 1 << 8; + /** @hide */ public DisplayManager(Context context) { mContext = context; @@ -574,6 +600,20 @@ public final class DisplayManager { name, width, height, densityDpi, surface, flags, callback, handler, uniqueId); } + /** + * Gets the stable device display size, in pixels. + * + * This should really only be used for things like server-side filtering of available + * applications. Most applications don't need the level of stability guaranteed by this and + * should instead query either the size of the display they're currently running on or the + * size of the default display. + * @hide + */ + @SystemApi + public Point getStableDisplaySize() { + return mGlobal.getStableDisplaySize(); + } + /** * Listens for changes in available display devices. */ diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 0b998e58656b91750185f6b8530a7fd6cf795b17..a8a4eb67f5809a8c587b1dd447c2083e701295c6 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -18,6 +18,7 @@ package android.hardware.display; import android.content.Context; import android.content.res.Resources; +import android.graphics.Point; import android.hardware.display.DisplayManager.DisplayListener; import android.media.projection.IMediaProjection; import android.media.projection.MediaProjection; @@ -444,6 +445,17 @@ public final class DisplayManagerGlobal { } } + /** + * Gets the stable device display size, in pixels. + */ + public Point getStableDisplaySize() { + try { + return mDm.getStableDisplaySize(); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + private final class DisplayManagerCallback extends IDisplayManagerCallback.Stub { @Override public void onDisplayEvent(int displayId, int event) { diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl index 7ca4dc140eca256a57387c79f2cc4aa35e1d4ea7..505388419c8c5ae536b7b38ee8483a728e5e1d10 100644 --- a/core/java/android/hardware/display/IDisplayManager.aidl +++ b/core/java/android/hardware/display/IDisplayManager.aidl @@ -16,6 +16,7 @@ package android.hardware.display; +import android.graphics.Point; import android.hardware.display.IDisplayManagerCallback; import android.hardware.display.IVirtualDisplayCallback; import android.hardware.display.WifiDisplay; @@ -77,4 +78,7 @@ interface IDisplayManager { // No permissions required but must be same Uid as the creator. void releaseVirtualDisplay(in IVirtualDisplayCallback token); + + // Get a stable metric for the device's display size. No permissions required. + Point getStableDisplaySize(); } diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index b51a7919e3bf6dda9903d0d11bab6adffcfac5af..987718a82c47ab4604383d6b1f20b21fae9b2364 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -106,13 +106,17 @@ public class FingerprintManager { /** * The operation was canceled because the API is locked out due to too many attempts. + * This occurs after 5 failed attempts, and lasts for 30 seconds. */ public static final int FINGERPRINT_ERROR_LOCKOUT = 7; /** * Hardware vendors may extend this list if there are conditions that do not fall under one of * the above categories. Vendors are responsible for providing error strings for these errors. - * @hide + * These messages are typically reserved for internal operations such as enrollment, but may be + * used to express vendor errors not covered by the ones in fingerprint.h. Applications are + * expected to show the error message string if they happen, but are advised not to rely on the + * message id since they will be device and vendor-specific */ public static final int FINGERPRINT_ERROR_VENDOR = 8; @@ -120,10 +124,16 @@ public class FingerprintManager { * The operation was canceled because FINGERPRINT_ERROR_LOCKOUT occurred too many times. * Fingerprint authentication is disabled until the user unlocks with strong authentication * (PIN/Pattern/Password) - * @hide */ public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9; + /** + * The user canceled the operation. Upon receiving this, applications should use alternate + * authentication (e.g. a password). The application should also provide the means to return + * to fingerprint authentication, such as a "use fingerprint" button. + */ + public static final int FINGERPRINT_ERROR_USER_CANCELED = 10; + /** * @hide */ diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl index 45863167fa1b1e161279dd493e9e89d9d27ada60..9e0c680cafa1ffe038d5dfed053f62e385aa5be1 100644 --- a/core/java/android/hardware/input/IInputManager.aidl +++ b/core/java/android/hardware/input/IInputManager.aidl @@ -16,6 +16,7 @@ package android.hardware.input; +import android.app.IInputForwarder; import android.hardware.input.InputDeviceIdentifier; import android.hardware.input.KeyboardLayout; import android.hardware.input.IInputDevicesChangedListener; @@ -88,4 +89,7 @@ interface IInputManager { void setCustomPointerIcon(in PointerIcon icon); void requestPointerCapture(IBinder windowToken, boolean enabled); + + /** Create input forwarder to deliver touch events to owned display. */ + IInputForwarder createInputForwarder(int displayId); } diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 4898c1a0802feec3691c0dfc5ee8845c132ccc47..c531a899f45d60f6d60032cfec0012f3c7868531 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -19,8 +19,9 @@ package android.hardware.input; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.SdkConstant; -import android.annotation.SystemService; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.SystemService; +import android.app.IInputForwarder; import android.content.Context; import android.media.AudioAttributes; import android.os.Binder; @@ -971,6 +972,25 @@ public final class InputManager { } } + + /** + * Create an {@link IInputForwarder} targeted to provided display. + * {@link android.Manifest.permission.INJECT_EVENTS} permission is required to call this method. + * + * @param displayId Id of the target display where input events should be forwarded. + * Display must exist and must be owned by the caller. + * @return The forwarder instance. + * + * @hide + */ + public IInputForwarder createInputForwarder(int displayId) { + try { + return mIm.createInputForwarder(displayId); + } catch (RemoteException ex) { + throw ex.rethrowFromSystemServer(); + } + } + private void populateInputDevicesLocked() { if (mInputDevicesChangedListener == null) { final InputDevicesChangedListener listener = new InputDevicesChangedListener(); diff --git a/core/java/android/hardware/location/NanoApp.java b/core/java/android/hardware/location/NanoApp.java index d5d428e95080e491e18af8972b3394a71acb1ae3..0465defc41ef8dc689d8c81b80d23f6015e6149a 100644 --- a/core/java/android/hardware/location/NanoApp.java +++ b/core/java/android/hardware/location/NanoApp.java @@ -56,10 +56,10 @@ public class NanoApp { * {@link #setAppBinary(byte[])} and {@link #setAppId(long)} must be called * prior to passing this object to any managers. * - * @see #NanoApp(int, byte[]) + * @see #NanoApp(long, byte[]) */ public NanoApp() { - this(0, null); + this(0L, null); mAppIdSet = false; } diff --git a/core/java/android/hardware/location/NanoAppInstanceInfo.java b/core/java/android/hardware/location/NanoAppInstanceInfo.java index ac6d83f622b2dfa003b5ea31cb7f9466b4dae855..26238304d8e96a687a26396634e61deeded271f9 100644 --- a/core/java/android/hardware/location/NanoAppInstanceInfo.java +++ b/core/java/android/hardware/location/NanoAppInstanceInfo.java @@ -287,8 +287,10 @@ public class NanoAppInstanceInfo { mPublisher = in.readString(); mName = in.readString(); + mHandle = in.readInt(); mAppId = in.readLong(); mAppVersion = in.readInt(); + mContexthubId = in.readInt(); mNeededReadMemBytes = in.readInt(); mNeededWriteMemBytes = in.readInt(); mNeededExecMemBytes = in.readInt(); @@ -309,6 +311,8 @@ public class NanoAppInstanceInfo { public void writeToParcel(Parcel out, int flags) { out.writeString(mPublisher); out.writeString(mName); + + out.writeInt(mHandle); out.writeLong(mAppId); out.writeInt(mAppVersion); out.writeInt(mContexthubId); diff --git a/core/java/android/hardware/radio/IRadioService.aidl b/core/java/android/hardware/radio/IRadioService.aidl index 9a157d1d183def9391d93e3d1a7f89620ae52b43..c43fd2615e4440e68f17a96ddac164a620ae14b4 100644 --- a/core/java/android/hardware/radio/IRadioService.aidl +++ b/core/java/android/hardware/radio/IRadioService.aidl @@ -26,6 +26,8 @@ import android.hardware.radio.RadioManager; * {@hide} */ interface IRadioService { + List listModules(); + ITuner openTuner(int moduleId, in RadioManager.BandConfig bandConfig, boolean withAudio, in ITunerCallback callback); } diff --git a/core/java/android/hardware/radio/ITuner.aidl b/core/java/android/hardware/radio/ITuner.aidl index 1fc71e07cdb739f9b418c594154bb9003bffdaa8..3aaeb5061de3726673619ecc9915413e03c5fe75 100644 --- a/core/java/android/hardware/radio/ITuner.aidl +++ b/core/java/android/hardware/radio/ITuner.aidl @@ -16,12 +16,16 @@ package android.hardware.radio; +import android.graphics.Bitmap; +import android.hardware.radio.ProgramSelector; import android.hardware.radio.RadioManager; /** {@hide} */ interface ITuner { void close(); + boolean isClosed(); + /** * @throws IllegalArgumentException if config is not valid or null */ @@ -50,28 +54,33 @@ interface ITuner { * @throws IllegalArgumentException if invalid arguments are passed * @throws IllegalStateException if called out of sequence */ - void tune(int channel, int subChannel); + void tune(in ProgramSelector selector); /** * @throws IllegalStateException if called out of sequence */ void cancel(); + void cancelAnnouncement(); + RadioManager.ProgramInfo getProgramInformation(); + Bitmap getImage(int id); + /** - * @returns {@code true} if the scan was properly scheduled, + * @return {@code true} if the scan was properly scheduled, * {@code false} if the scan feature is unavailable */ boolean startBackgroundScan(); /** - * @returns the list, or null if scan is in progress + * @param vendorFilter Vendor-specific filter, must be Map + * @return the list, or null if scan is in progress * @throws IllegalArgumentException if invalid arguments are passed * @throws IllegalStateException if the scan has not been started, client may * call startBackgroundScan to fix this. */ - List getProgramList(String filter); + List getProgramList(in Map vendorFilter); /** * @throws IllegalStateException if the switch is not supported at current diff --git a/core/java/android/hardware/radio/ITunerCallback.aidl b/core/java/android/hardware/radio/ITunerCallback.aidl index b32c6832b97ec92bc40d31afa66e9c216a597348..6ed171bbb8a9fe2edafcae7aff0b7450ec963375 100644 --- a/core/java/android/hardware/radio/ITunerCallback.aidl +++ b/core/java/android/hardware/radio/ITunerCallback.aidl @@ -17,10 +17,17 @@ package android.hardware.radio; import android.hardware.radio.RadioManager; +import android.hardware.radio.RadioMetadata; /** {@hide} */ oneway interface ITunerCallback { void onError(int status); void onConfigurationChanged(in RadioManager.BandConfig config); - void onProgramInfoChanged(in RadioManager.ProgramInfo info); + void onCurrentProgramInfoChanged(in RadioManager.ProgramInfo info); + void onTrafficAnnouncement(boolean active); + void onEmergencyAnnouncement(boolean active); + void onAntennaState(boolean connected); + void onBackgroundScanAvailabilityChange(boolean isAvailable); + void onBackgroundScanComplete(); + void onProgramListChanged(); } diff --git a/core/java/android/hardware/radio/ProgramSelector.aidl b/core/java/android/hardware/radio/ProgramSelector.aidl new file mode 100644 index 0000000000000000000000000000000000000000..545269a20aa821a2f0f771408d13751b79f06498 --- /dev/null +++ b/core/java/android/hardware/radio/ProgramSelector.aidl @@ -0,0 +1,20 @@ +/** + * 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.hardware.radio; + +/** @hide */ +parcelable ProgramSelector; diff --git a/core/java/android/hardware/radio/ProgramSelector.java b/core/java/android/hardware/radio/ProgramSelector.java new file mode 100644 index 0000000000000000000000000000000000000000..2211cee9b3151336e6f045dfb4b816a2ed5a8bc1 --- /dev/null +++ b/core/java/android/hardware/radio/ProgramSelector.java @@ -0,0 +1,502 @@ +/** + * 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.hardware.radio; + +import android.annotation.IntDef; +import android.annotation.IntRange; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.SystemApi; +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.List; +import java.util.Objects; +import java.util.stream.Stream; + +/** + * A set of identifiers necessary to tune to a given station. + * + * This can hold various identifiers, like + * - AM/FM frequency + * - HD Radio subchannel + * - DAB channel info + * + * The primary ID uniquely identifies a station and can be used for equality + * check. The secondary IDs are supplementary and can speed up tuning process, + * but the primary ID is sufficient (ie. after a full band scan). + * + * Two selectors with different secondary IDs, but the same primary ID are + * considered equal. In particular, secondary IDs vector may get updated for + * an entry on the program list (ie. when a better frequency for a given + * station is found). + * + * The primaryId of a given programType MUST be of a specific type: + * - AM, FM: RDS_PI if the station broadcasts RDS, AMFM_FREQUENCY otherwise; + * - AM_HD, FM_HD: HD_STATION_ID_EXT; + * - DAB: DAB_SIDECC; + * - DRMO: DRMO_SERVICE_ID; + * - SXM: SXM_SERVICE_ID; + * - VENDOR: VENDOR_PRIMARY. + * @hide + */ +@SystemApi +public final class ProgramSelector implements Parcelable { + /** Analogue AM radio (with or without RDS). */ + public static final int PROGRAM_TYPE_AM = 1; + /** analogue FM radio (with or without RDS). */ + public static final int PROGRAM_TYPE_FM = 2; + /** AM HD Radio. */ + public static final int PROGRAM_TYPE_AM_HD = 3; + /** FM HD Radio. */ + public static final int PROGRAM_TYPE_FM_HD = 4; + /** Digital audio broadcasting. */ + public static final int PROGRAM_TYPE_DAB = 5; + /** Digital Radio Mondiale. */ + public static final int PROGRAM_TYPE_DRMO = 6; + /** SiriusXM Satellite Radio. */ + public static final int PROGRAM_TYPE_SXM = 7; + /** Vendor-specific, not synced across devices. */ + public static final int PROGRAM_TYPE_VENDOR_START = 1000; + public static final int PROGRAM_TYPE_VENDOR_END = 1999; + @IntDef(prefix = { "PROGRAM_TYPE_" }, value = { + PROGRAM_TYPE_AM, + PROGRAM_TYPE_FM, + PROGRAM_TYPE_AM_HD, + PROGRAM_TYPE_FM_HD, + PROGRAM_TYPE_DAB, + PROGRAM_TYPE_DRMO, + PROGRAM_TYPE_SXM, + }) + @IntRange(from = PROGRAM_TYPE_VENDOR_START, to = PROGRAM_TYPE_VENDOR_END) + @Retention(RetentionPolicy.SOURCE) + public @interface ProgramType {} + + /** kHz */ + public static final int IDENTIFIER_TYPE_AMFM_FREQUENCY = 1; + /** 16bit */ + public static final int IDENTIFIER_TYPE_RDS_PI = 2; + /** + * 64bit compound primary identifier for HD Radio. + * + * Consists of (from the LSB): + * - 32bit: Station ID number; + * - 4bit: HD_SUBCHANNEL; + * - 18bit: AMFM_FREQUENCY. + * The remaining bits should be set to zeros when writing on the chip side + * and ignored when read. + */ + public static final int IDENTIFIER_TYPE_HD_STATION_ID_EXT = 3; + /** + * HD Radio subchannel - a value of range 0-7. + * + * The subchannel index is 0-based (where 0 is MPS and 1..7 are SPS), + * as opposed to HD Radio standard (where it's 1-based). + */ + public static final int IDENTIFIER_TYPE_HD_SUBCHANNEL = 4; + /** + * 24bit compound primary identifier for DAB. + * + * Consists of (from the LSB): + * - 16bit: SId; + * - 8bit: ECC code. + * The remaining bits should be set to zeros when writing on the chip side + * and ignored when read. + */ + public static final int IDENTIFIER_TYPE_DAB_SIDECC = 5; + /** 16bit */ + public static final int IDENTIFIER_TYPE_DAB_ENSEMBLE = 6; + /** 12bit */ + public static final int IDENTIFIER_TYPE_DAB_SCID = 7; + /** kHz */ + public static final int IDENTIFIER_TYPE_DAB_FREQUENCY = 8; + /** 24bit */ + public static final int IDENTIFIER_TYPE_DRMO_SERVICE_ID = 9; + /** kHz */ + public static final int IDENTIFIER_TYPE_DRMO_FREQUENCY = 10; + /** 1: AM, 2:FM */ + public static final int IDENTIFIER_TYPE_DRMO_MODULATION = 11; + /** 32bit */ + public static final int IDENTIFIER_TYPE_SXM_SERVICE_ID = 12; + /** 0-999 range */ + public static final int IDENTIFIER_TYPE_SXM_CHANNEL = 13; + /** + * Primary identifier for vendor-specific radio technology. + * The value format is determined by a vendor. + * + * It must not be used in any other programType than corresponding VENDOR + * type between VENDOR_START and VENDOR_END (eg. identifier type 1015 must + * not be used in any program type other than 1015). + */ + public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_START = PROGRAM_TYPE_VENDOR_START; + public static final int IDENTIFIER_TYPE_VENDOR_PRIMARY_END = PROGRAM_TYPE_VENDOR_END; + @IntDef(prefix = { "IDENTIFIER_TYPE_" }, value = { + IDENTIFIER_TYPE_AMFM_FREQUENCY, + IDENTIFIER_TYPE_RDS_PI, + IDENTIFIER_TYPE_HD_STATION_ID_EXT, + IDENTIFIER_TYPE_HD_SUBCHANNEL, + IDENTIFIER_TYPE_DAB_SIDECC, + IDENTIFIER_TYPE_DAB_ENSEMBLE, + IDENTIFIER_TYPE_DAB_SCID, + IDENTIFIER_TYPE_DAB_FREQUENCY, + IDENTIFIER_TYPE_DRMO_SERVICE_ID, + IDENTIFIER_TYPE_DRMO_FREQUENCY, + IDENTIFIER_TYPE_DRMO_MODULATION, + IDENTIFIER_TYPE_SXM_SERVICE_ID, + IDENTIFIER_TYPE_SXM_CHANNEL, + }) + @IntRange(from = IDENTIFIER_TYPE_VENDOR_PRIMARY_START, to = IDENTIFIER_TYPE_VENDOR_PRIMARY_END) + @Retention(RetentionPolicy.SOURCE) + public @interface IdentifierType {} + + private final @ProgramType int mProgramType; + private final @NonNull Identifier mPrimaryId; + private final @NonNull Identifier[] mSecondaryIds; + private final @NonNull long[] mVendorIds; + + /** + * Constructor for ProgramSelector. + * + * It's not desired to modify selector objects, so all its fields are initialized at creation. + * + * Identifier lists must not contain any nulls, but can itself be null to be interpreted + * as empty list at object creation. + * + * @param programType type of a radio technology. + * @param primaryId primary program identifier. + * @param secondaryIds list of secondary program identifiers. + * @param vendorIds list of vendor-specific program identifiers. + */ + public ProgramSelector(@ProgramType int programType, @NonNull Identifier primaryId, + @Nullable Identifier[] secondaryIds, @Nullable long[] vendorIds) { + if (secondaryIds == null) secondaryIds = new Identifier[0]; + if (vendorIds == null) vendorIds = new long[0]; + if (Stream.of(secondaryIds).anyMatch(id -> id == null)) { + throw new IllegalArgumentException("secondaryIds list must not contain nulls"); + } + mProgramType = programType; + mPrimaryId = Objects.requireNonNull(primaryId); + mSecondaryIds = secondaryIds; + mVendorIds = vendorIds; + } + + /** + * Type of a radio technology. + * + * @return program type. + */ + public @ProgramType int getProgramType() { + return mProgramType; + } + + /** + * Primary program identifier uniquely identifies a station and is used to + * determine equality between two ProgramSelectors. + * + * @return primary identifier. + */ + public @NonNull Identifier getPrimaryId() { + return mPrimaryId; + } + + /** + * Secondary program identifier is not required for tuning, but may make it + * faster or more reliable. + * + * @return secondary identifier list, must not be modified. + */ + public @NonNull Identifier[] getSecondaryIds() { + return mSecondaryIds; + } + + /** + * Looks up an identifier of a given type (either primary or secondary). + * + * If there are multiple identifiers if a given type, then first in order (where primary id is + * before any secondary) is selected. + * + * @param type type of identifier. + * @return identifier value, if found. + * @throws IllegalArgumentException, if not found. + */ + public long getFirstId(@IdentifierType int type) { + if (mPrimaryId.getType() == type) return mPrimaryId.getValue(); + for (Identifier id : mSecondaryIds) { + if (id.getType() == type) return id.getValue(); + } + throw new IllegalArgumentException("Identifier " + type + " not found"); + } + + /** + * Looks up all identifier of a given type (either primary or secondary). + * + * Some identifiers may be provided multiple times, for example + * IDENTIFIER_TYPE_AMFM_FREQUENCY for FM Alternate Frequencies. + * + * @param type type of identifier. + * @return a list of identifiers, generated on each call. May be modified. + */ + public @NonNull Identifier[] getAllIds(@IdentifierType int type) { + List out = new ArrayList<>(); + + if (mPrimaryId.getType() == type) out.add(mPrimaryId); + for (Identifier id : mSecondaryIds) { + if (id.getType() == type) out.add(id); + } + + return out.toArray(new Identifier[out.size()]); + } + + /** + * Vendor identifiers are passed as-is to the HAL implementation, + * preserving elements order. + * + * @return a array of vendor identifiers, must not be modified. + */ + public @NonNull long[] getVendorIds() { + return mVendorIds; + } + + /** + * Builds new ProgramSelector for AM/FM frequency. + * + * @param band the band. + * @param frequencyKhz the frequency in kHz. + * @return new ProgramSelector object representing given frequency. + * @throws IllegalArgumentException if provided frequency is out of bounds. + */ + public static @NonNull ProgramSelector createAmFmSelector( + @RadioManager.Band int band, int frequencyKhz) { + return createAmFmSelector(band, frequencyKhz, 0); + } + + /** + * Checks, if a given AM/FM frequency is roughly valid and in correct unit. + * + * It does not check the range precisely. In particular, it may be way off for certain regions. + * The main purpose is to avoid passing inproper units, ie. MHz instead of kHz. + * + * @param isAm true, if AM, false if FM. + * @param frequencyKhz the frequency in kHz. + * @return true, if the frequency is rougly valid. + */ + private static boolean isValidAmFmFrequency(boolean isAm, int frequencyKhz) { + if (isAm) { + return frequencyKhz > 150 && frequencyKhz < 30000; + } else { + return frequencyKhz > 60000 && frequencyKhz < 110000; + } + } + + /** + * Builds new ProgramSelector for AM/FM frequency. + * + * This method variant supports HD Radio subchannels, but it's undesirable to + * select them manually. Instead, the value should be retrieved from program list. + * + * @param band the band. + * @param frequencyKhz the frequency in kHz. + * @param subChannel 1-based HD Radio subchannel. + * @return new ProgramSelector object representing given frequency. + * @throws IllegalArgumentException if provided frequency is out of bounds, + * or tried setting a subchannel for analog AM/FM. + */ + public static @NonNull ProgramSelector createAmFmSelector( + @RadioManager.Band int band, int frequencyKhz, int subChannel) { + boolean isAm = (band == RadioManager.BAND_AM || band == RadioManager.BAND_AM_HD); + boolean isDigital = (band == RadioManager.BAND_AM_HD || band == RadioManager.BAND_FM_HD); + if (!isAm && !isDigital && band != RadioManager.BAND_FM) { + throw new IllegalArgumentException("Unknown band: " + band); + } + if (subChannel < 0 || subChannel > 8) { + throw new IllegalArgumentException("Invalid subchannel: " + subChannel); + } + if (subChannel > 0 && !isDigital) { + throw new IllegalArgumentException("Subchannels are not supported for non-HD radio"); + } + if (!isValidAmFmFrequency(isAm, frequencyKhz)) { + throw new IllegalArgumentException("Provided value is not a valid AM/FM frequency"); + } + + // We can't use AM_HD or FM_HD, because we don't know HD station ID. + @ProgramType int programType = isAm ? PROGRAM_TYPE_AM : PROGRAM_TYPE_FM; + Identifier primary = new Identifier(IDENTIFIER_TYPE_AMFM_FREQUENCY, frequencyKhz); + + Identifier[] secondary = null; + if (subChannel > 0) { + /* Stating sub channel for non-HD AM/FM does not give any guarantees, + * but we can't do much more without HD station ID. + * + * The legacy APIs had 1-based subChannels, while ProgramSelector is 0-based. + */ + secondary = new Identifier[]{ + new Identifier(IDENTIFIER_TYPE_HD_SUBCHANNEL, subChannel - 1)}; + } + + return new ProgramSelector(programType, primary, secondary, null); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder("ProgramSelector(type=").append(mProgramType) + .append(", primary=").append(mPrimaryId); + if (mSecondaryIds.length > 0) sb.append(", secondary=").append(mSecondaryIds); + if (mVendorIds.length > 0) sb.append(", vendor=").append(mVendorIds); + sb.append(")"); + return sb.toString(); + } + + @Override + public int hashCode() { + // secondaryIds and vendorIds are ignored for equality/hashing + return Objects.hash(mProgramType, mPrimaryId); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof ProgramSelector)) return false; + ProgramSelector other = (ProgramSelector) obj; + // secondaryIds and vendorIds are ignored for equality/hashing + return other.getProgramType() == mProgramType && mPrimaryId.equals(other.getPrimaryId()); + } + + private ProgramSelector(Parcel in) { + mProgramType = in.readInt(); + mPrimaryId = in.readTypedObject(Identifier.CREATOR); + mSecondaryIds = in.createTypedArray(Identifier.CREATOR); + if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) { + throw new IllegalArgumentException("secondaryIds list must not contain nulls"); + } + mVendorIds = in.createLongArray(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mProgramType); + dest.writeTypedObject(mPrimaryId, 0); + dest.writeTypedArray(mSecondaryIds, 0); + dest.writeLongArray(mVendorIds); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + public ProgramSelector createFromParcel(Parcel in) { + return new ProgramSelector(in); + } + + public ProgramSelector[] newArray(int size) { + return new ProgramSelector[size]; + } + }; + + /** + * A single program identifier component, eg. frequency or channel ID. + * + * The long value field holds the value in format described in comments for + * IdentifierType constants. + */ + public static final class Identifier implements Parcelable { + private final @IdentifierType int mType; + private final long mValue; + + public Identifier(@IdentifierType int type, long value) { + mType = type; + mValue = value; + } + + /** + * Type of an identifier. + * + * @return type of an identifier. + */ + public @IdentifierType int getType() { + return mType; + } + + /** + * Value of an identifier. + * + * Its meaning depends on identifier type, ie. for IDENTIFIER_TYPE_AMFM_FREQUENCY type, + * the value is a frequency in kHz. + * + * The range of a value depends on its type; it does not always require the whole long + * range. Casting to necessary type (ie. int) without range checking is correct in front-end + * code - any range violations are either errors in the framework or in the + * HAL implementation. For example, IDENTIFIER_TYPE_AMFM_FREQUENCY always fits in int, + * as Integer.MAX_VALUE would mean 2.1THz. + * + * @return value of an identifier. + */ + public long getValue() { + return mValue; + } + + @Override + public String toString() { + return "Identifier(" + mType + ", " + mValue + ")"; + } + + @Override + public int hashCode() { + return Objects.hash(mType, mValue); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof Identifier)) return false; + Identifier other = (Identifier) obj; + return other.getType() == mType && other.getValue() == mValue; + } + + private Identifier(Parcel in) { + mType = in.readInt(); + mValue = in.readLong(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mType); + dest.writeLong(mValue); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + public Identifier createFromParcel(Parcel in) { + return new Identifier(in); + } + + public Identifier[] newArray(int size) { + return new Identifier[size]; + } + }; + } +} diff --git a/core/java/android/hardware/radio/RadioManager.aidl b/core/java/android/hardware/radio/RadioManager.aidl index 0f0ec848df6fb3774470743aac785f8aac4a7ab7..8a39388482fde48ef4f23c1aecfa12d8717e1fc5 100644 --- a/core/java/android/hardware/radio/RadioManager.aidl +++ b/core/java/android/hardware/radio/RadioManager.aidl @@ -17,7 +17,10 @@ package android.hardware.radio; /** @hide */ -parcelable RadioManager.ProgramInfo; +parcelable RadioManager.BandConfig; /** @hide */ -parcelable RadioManager.BandConfig; +parcelable RadioManager.ModuleProperties; + +/** @hide */ +parcelable RadioManager.ProgramInfo; diff --git a/core/java/android/hardware/radio/RadioManager.java b/core/java/android/hardware/radio/RadioManager.java index 20292f7e7e4897943f8c74a818b0a2ff265485a2..4f4361f6f1ebfd31530b7f2aa480afb06bee6f45 100644 --- a/core/java/android/hardware/radio/RadioManager.java +++ b/core/java/android/hardware/radio/RadioManager.java @@ -16,8 +16,10 @@ package android.hardware.radio; +import android.Manifest; +import android.annotation.IntDef; import android.annotation.NonNull; -import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; @@ -27,12 +29,17 @@ import android.os.Parcelable; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager.ServiceNotFoundException; -import android.os.SystemProperties; import android.text.TextUtils; import android.util.Log; -import java.util.List; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * The RadioManager class allows to control a broadcast radio tuner present on the device. @@ -44,7 +51,7 @@ import java.util.Arrays; @SystemApi @SystemService(Context.RADIO_SERVICE) public class RadioManager { - private static final String TAG = "RadioManager"; + private static final String TAG = "BroadcastRadio.manager"; /** Method return status: successful operation */ public static final int STATUS_OK = 0; @@ -72,7 +79,7 @@ public class RadioManager { /** Radio module class supporting Digital terrestrial radio */ public static final int CLASS_DT = 2; - // keep in sync with radio_band_t in /system/core/incluse/system/radio.h + public static final int BAND_INVALID = -1; /** AM radio band (LW/MW/SW). * @see BandDescriptor */ public static final int BAND_AM = 0; @@ -85,6 +92,15 @@ public class RadioManager { /** AM HD radio or DRM band. * @see BandDescriptor */ public static final int BAND_AM_HD = 3; + @IntDef(prefix = { "BAND_" }, value = { + BAND_INVALID, + BAND_AM, + BAND_FM, + BAND_AM_HD, + BAND_FM_HD, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Band {} // keep in sync with radio_region_t in /system/core/incluse/system/radio.h /** Africa, Europe. @@ -103,6 +119,25 @@ public class RadioManager { * @see BandDescriptor */ public static final int REGION_KOREA = 4; + private static void writeStringMap(@NonNull Parcel dest, @NonNull Map map) { + dest.writeInt(map.size()); + for (Map.Entry entry : map.entrySet()) { + dest.writeString(entry.getKey()); + dest.writeString(entry.getValue()); + } + } + + private static @NonNull Map readStringMap(@NonNull Parcel in) { + int size = in.readInt(); + Map map = new HashMap<>(); + while (size-- > 0) { + String key = in.readString(); + String value = in.readString(); + map.put(key, value); + } + return map; + } + /***************************************************************************** * Lists properties, options and radio bands supported by a given broadcast radio module. * Each module has a unique ID used to address it when calling RadioManager APIs. @@ -111,6 +146,7 @@ public class RadioManager { public static class ModuleProperties implements Parcelable { private final int mId; + @NonNull private final String mServiceName; private final int mClassId; private final String mImplementor; private final String mProduct; @@ -121,12 +157,18 @@ public class RadioManager { private final boolean mIsCaptureSupported; private final BandDescriptor[] mBands; private final boolean mIsBgScanSupported; - private final String mVendorExension; - - ModuleProperties(int id, int classId, String implementor, String product, String version, - String serial, int numTuners, int numAudioSources, boolean isCaptureSupported, - BandDescriptor[] bands, boolean isBgScanSupported, String vendorExension) { + private final Set mSupportedProgramTypes; + private final Set mSupportedIdentifierTypes; + @NonNull private final Map mVendorInfo; + + ModuleProperties(int id, String serviceName, int classId, String implementor, + String product, String version, String serial, int numTuners, int numAudioSources, + boolean isCaptureSupported, BandDescriptor[] bands, boolean isBgScanSupported, + @ProgramSelector.ProgramType int[] supportedProgramTypes, + @ProgramSelector.IdentifierType int[] supportedIdentifierTypes, + Map vendorInfo) { mId = id; + mServiceName = TextUtils.isEmpty(serviceName) ? "default" : serviceName; mClassId = classId; mImplementor = implementor; mProduct = product; @@ -137,9 +179,18 @@ public class RadioManager { mIsCaptureSupported = isCaptureSupported; mBands = bands; mIsBgScanSupported = isBgScanSupported; - mVendorExension = vendorExension; + mSupportedProgramTypes = arrayToSet(supportedProgramTypes); + mSupportedIdentifierTypes = arrayToSet(supportedIdentifierTypes); + mVendorInfo = (vendorInfo == null) ? new HashMap<>() : vendorInfo; } + private static Set arrayToSet(int[] arr) { + return Arrays.stream(arr).boxed().collect(Collectors.toSet()); + } + + private static int[] setToArray(Set set) { + return set.stream().mapToInt(Integer::intValue).toArray(); + } /** Unique module identifier provided by the native service. * For use with {@link #openTuner(int, BandConfig, boolean, Callback, Handler)}. @@ -149,6 +200,14 @@ public class RadioManager { return mId; } + /** + * Module service (driver) name as registered with HIDL. + * @return the module service name. + */ + public @NonNull String getServiceName() { + return mServiceName; + } + /** Module class identifier: {@link #CLASS_AM_FM}, {@link #CLASS_SAT}, {@link #CLASS_DT} * @return the radio module class identifier. */ @@ -218,27 +277,48 @@ public class RadioManager { * * @return {@code true} if background scanning is supported (not necessary available * at a given time), {@code false} otherwise. - * - * @hide FutureFeature */ public boolean isBackgroundScanningSupported() { return mIsBgScanSupported; } /** - * Opaque vendor-specific string, passed from HAL without changes. - * Format of this string can vary across vendors. + * Checks, if a given program type is supported by this tuner. * - * It may be used for extra features, that's not supported by a platform, - * for example: "preset-slots=6;ultra-hd-capable=false". + * If a program type is supported by radio module, it means it can tune + * to ProgramSelector of a given type. * - * Client application MUST verify vendor/product name from the - * ModuleProperties class before doing any interpretation of this value. + * @return {@code true} if a given program type is supported. + */ + public boolean isProgramTypeSupported(@ProgramSelector.ProgramType int type) { + return mSupportedProgramTypes.contains(type); + } + + /** + * Checks, if a given program identifier is supported by this tuner. + * + * If an identifier is supported by radio module, it means it can use it for + * tuning to ProgramSelector with either primary or secondary Identifier of + * a given type. + * + * @return {@code true} if a given program type is supported. + */ + public boolean isProgramIdentifierSupported(@ProgramSelector.IdentifierType int type) { + return mSupportedIdentifierTypes.contains(type); + } + + /** + * A map of vendor-specific opaque strings, passed from HAL without changes. + * Format of these strings can vary across vendors. * - * @hide FutureFeature + * It may be used for extra features, that's not supported by a platform, + * for example: preset-slots=6; ultra-hd-capable=false. + * + * Keys must be prefixed with unique vendor Java-style namespace, + * eg. 'com.somecompany.parameter1'. */ - public @NonNull String getVendorExension() { - return mVendorExension == null ? "" : mVendorExension; + public @NonNull Map getVendorInfo() { + return mVendorInfo; } /** List of descriptors for all bands supported by this module. @@ -250,6 +330,8 @@ public class RadioManager { private ModuleProperties(Parcel in) { mId = in.readInt(); + String serviceName = in.readString(); + mServiceName = TextUtils.isEmpty(serviceName) ? "default" : serviceName; mClassId = in.readInt(); mImplementor = in.readString(); mProduct = in.readString(); @@ -264,7 +346,9 @@ public class RadioManager { mBands[i] = (BandDescriptor) tmp[i]; } mIsBgScanSupported = in.readInt() == 1; - mVendorExension = in.readString(); + mSupportedProgramTypes = arrayToSet(in.createIntArray()); + mSupportedIdentifierTypes = arrayToSet(in.createIntArray()); + mVendorInfo = readStringMap(in); } public static final Parcelable.Creator CREATOR @@ -281,6 +365,7 @@ public class RadioManager { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mId); + dest.writeString(mServiceName); dest.writeInt(mClassId); dest.writeString(mImplementor); dest.writeString(mProduct); @@ -291,7 +376,9 @@ public class RadioManager { dest.writeInt(mIsCaptureSupported ? 1 : 0); dest.writeParcelableArray(mBands, flags); dest.writeInt(mIsBgScanSupported ? 1 : 0); - dest.writeString(mVendorExension); + dest.writeIntArray(setToArray(mSupportedProgramTypes)); + dest.writeIntArray(setToArray(mSupportedIdentifierTypes)); + writeStringMap(dest, mVendorInfo); } @Override @@ -301,7 +388,8 @@ public class RadioManager { @Override public String toString() { - return "ModuleProperties [mId=" + mId + ", mClassId=" + mClassId + return "ModuleProperties [mId=" + mId + + ", mServiceName=" + mServiceName + ", mClassId=" + mClassId + ", mImplementor=" + mImplementor + ", mProduct=" + mProduct + ", mVersion=" + mVersion + ", mSerial=" + mSerial + ", mNumTuners=" + mNumTuners @@ -316,6 +404,7 @@ public class RadioManager { final int prime = 31; int result = 1; result = prime * result + mId; + result = prime * result + mServiceName.hashCode(); result = prime * result + mClassId; result = prime * result + ((mImplementor == null) ? 0 : mImplementor.hashCode()); result = prime * result + ((mProduct == null) ? 0 : mProduct.hashCode()); @@ -326,7 +415,7 @@ public class RadioManager { result = prime * result + (mIsCaptureSupported ? 1 : 0); result = prime * result + Arrays.hashCode(mBands); result = prime * result + (mIsBgScanSupported ? 1 : 0); - result = prime * result + ((mVendorExension == null) ? 0 : mVendorExension.hashCode()); + result = prime * result + mVendorInfo.hashCode(); return result; } @@ -339,6 +428,7 @@ public class RadioManager { ModuleProperties other = (ModuleProperties) obj; if (mId != other.getId()) return false; + if (!TextUtils.equals(mServiceName, other.mServiceName)) return false; if (mClassId != other.getClassId()) return false; if (mImplementor == null) { @@ -371,8 +461,7 @@ public class RadioManager { return false; if (mIsBgScanSupported != other.isBackgroundScanningSupported()) return false; - if (!TextUtils.equals(mVendorExension, other.mVendorExension)) - return false; + if (!mVendorInfo.equals(other.mVendorInfo)) return false; return true; } } @@ -414,6 +503,25 @@ public class RadioManager { public int getType() { return mType; } + + /** + * Checks if the band is either AM or AM_HD. + * + * @return {@code true}, if band is AM or AM_HD. + */ + public boolean isAmBand() { + return mType == BAND_AM || mType == BAND_AM_HD; + } + + /** + * Checks if the band is either FM or FM_HD. + * + * @return {@code true}, if band is FM or FM_HD. + */ + public boolean isFmBand() { + return mType == BAND_FM || mType == BAND_FM_HD; + } + /** Lower band limit expressed in units according to band type. * Currently all defined band types express channels as frequency in kHz * @return the lower band limit. @@ -1225,46 +1333,72 @@ public class RadioManager { public static class ProgramInfo implements Parcelable { // sourced from hardware/interfaces/broadcastradio/1.1/types.hal - private final static int FLAG_LIVE = 1 << 0; - private final static int FLAG_MUTED = 1 << 1; + private static final int FLAG_LIVE = 1 << 0; + private static final int FLAG_MUTED = 1 << 1; + private static final int FLAG_TRAFFIC_PROGRAM = 1 << 2; + private static final int FLAG_TRAFFIC_ANNOUNCEMENT = 1 << 3; - private final int mChannel; - private final int mSubChannel; + @NonNull private final ProgramSelector mSelector; private final boolean mTuned; private final boolean mStereo; private final boolean mDigital; private final int mFlags; private final int mSignalStrength; private final RadioMetadata mMetadata; - private final String mVendorExension; + @NonNull private final Map mVendorInfo; - ProgramInfo(int channel, int subChannel, boolean tuned, boolean stereo, + ProgramInfo(@NonNull ProgramSelector selector, boolean tuned, boolean stereo, boolean digital, int signalStrength, RadioMetadata metadata, int flags, - String vendorExension) { - mChannel = channel; - mSubChannel = subChannel; + Map vendorInfo) { + mSelector = selector; mTuned = tuned; mStereo = stereo; mDigital = digital; mFlags = flags; mSignalStrength = signalStrength; mMetadata = metadata; - mVendorExension = vendorExension; + mVendorInfo = (vendorInfo == null) ? new HashMap<>() : vendorInfo; + } + + /** + * Program selector, necessary for tuning to a program. + * + * @return the program selector. + */ + public @NonNull ProgramSelector getSelector() { + return mSelector; } /** Main channel expressed in units according to band type. * Currently all defined band types express channels as frequency in kHz * @return the program channel + * @deprecated Use {@link getSelector()} instead. */ + @Deprecated public int getChannel() { - return mChannel; + try { + return (int) mSelector.getFirstId(ProgramSelector.IDENTIFIER_TYPE_AMFM_FREQUENCY); + } catch (IllegalArgumentException ex) { + Log.w(TAG, "Not an AM/FM program"); + return 0; + } } + /** Sub channel ID. E.g 1 for HD radio HD1 * @return the program sub channel + * @deprecated Use {@link getSelector()} instead. */ + @Deprecated public int getSubChannel() { - return mSubChannel; + try { + return (int) mSelector.getFirstId( + ProgramSelector.IDENTIFIER_TYPE_HD_SUBCHANNEL) + 1; + } catch (IllegalArgumentException ex) { + // this is a normal behavior for analog AM/FM selector + return 0; + } } + /** {@code true} if the tuner is currently tuned on a valid station * @return {@code true} if currently tuned, {@code false} otherwise. */ @@ -1288,8 +1422,6 @@ public class RadioManager { * {@code true} if the program is currently playing live stream. * This may result in a slightly altered reception parameters, * usually targetted at reduced latency. - * - * @hide FutureFeature */ public boolean isLive() { return (mFlags & FLAG_LIVE) != 0; @@ -1300,13 +1432,27 @@ public class RadioManager { * conditions or buffering. In this state volume knob MAY be disabled to * prevent user increasing volume too much. * It does NOT mean the user has muted audio. - * - * @hide FutureFeature */ public boolean isMuted() { return (mFlags & FLAG_MUTED) != 0; } + /** + * {@code true} if radio station transmits traffic information + * regularily. + */ + public boolean isTrafficProgram() { + return (mFlags & FLAG_TRAFFIC_PROGRAM) != 0; + } + + /** + * {@code true} if radio station transmits traffic information + * at the very moment. + */ + public boolean isTrafficAnnouncementActive() { + return (mFlags & FLAG_TRAFFIC_ANNOUNCEMENT) != 0; + } + /** Signal strength indicator from 0 (no signal) to 100 (excellent) * @return the signal strength indication. */ @@ -1322,24 +1468,21 @@ public class RadioManager { } /** - * Opaque vendor-specific string, passed from HAL without changes. - * Format of this string can vary across vendors. + * A map of vendor-specific opaque strings, passed from HAL without changes. + * Format of these strings can vary across vendors. * * It may be used for extra features, that's not supported by a platform, - * for example: "paid-service=true;bitrate=320kbps". - * - * Client application MUST verify vendor/product name from the - * ModuleProperties class before doing any interpretation of this value. + * for example: paid-service=true; bitrate=320kbps. * - * @hide FutureFeature + * Keys must be prefixed with unique vendor Java-style namespace, + * eg. 'com.somecompany.parameter1'. */ - public @NonNull String getVendorExension() { - return mVendorExension == null ? "" : mVendorExension; + public @NonNull Map getVendorInfo() { + return mVendorInfo; } private ProgramInfo(Parcel in) { - mChannel = in.readInt(); - mSubChannel = in.readInt(); + mSelector = in.readParcelable(null); mTuned = in.readByte() == 1; mStereo = in.readByte() == 1; mDigital = in.readByte() == 1; @@ -1350,7 +1493,7 @@ public class RadioManager { mMetadata = null; } mFlags = in.readInt(); - mVendorExension = in.readString(); + mVendorInfo = readStringMap(in); } public static final Parcelable.Creator CREATOR @@ -1366,8 +1509,7 @@ public class RadioManager { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(mChannel); - dest.writeInt(mSubChannel); + dest.writeParcelable(mSelector, 0); dest.writeByte((byte)(mTuned ? 1 : 0)); dest.writeByte((byte)(mStereo ? 1 : 0)); dest.writeByte((byte)(mDigital ? 1 : 0)); @@ -1379,7 +1521,7 @@ public class RadioManager { mMetadata.writeToParcel(dest, flags); } dest.writeInt(mFlags); - dest.writeString(mVendorExension); + writeStringMap(dest, mVendorInfo); } @Override @@ -1389,7 +1531,7 @@ public class RadioManager { @Override public String toString() { - return "ProgramInfo [mChannel=" + mChannel + ", mSubChannel=" + mSubChannel + return "ProgramInfo [mSelector=" + mSelector + ", mTuned=" + mTuned + ", mStereo=" + mStereo + ", mDigital=" + mDigital + ", mFlags=" + mFlags + ", mSignalStrength=" + mSignalStrength + ((mMetadata == null) ? "" : (", mMetadata=" + mMetadata.toString())) @@ -1400,15 +1542,14 @@ public class RadioManager { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + mChannel; - result = prime * result + mSubChannel; + result = prime * result + mSelector.hashCode(); result = prime * result + (mTuned ? 1 : 0); result = prime * result + (mStereo ? 1 : 0); result = prime * result + (mDigital ? 1 : 0); result = prime * result + mFlags; result = prime * result + mSignalStrength; result = prime * result + ((mMetadata == null) ? 0 : mMetadata.hashCode()); - result = prime * result + ((mVendorExension == null) ? 0 : mVendorExension.hashCode()); + result = prime * result + mVendorInfo.hashCode(); return result; } @@ -1419,10 +1560,7 @@ public class RadioManager { if (!(obj instanceof ProgramInfo)) return false; ProgramInfo other = (ProgramInfo) obj; - if (mChannel != other.getChannel()) - return false; - if (mSubChannel != other.getSubChannel()) - return false; + if (!mSelector.equals(other.getSelector())) return false; if (mTuned != other.isTuned()) return false; if (mStereo != other.isStereo()) @@ -1438,8 +1576,7 @@ public class RadioManager { return false; } else if (!mMetadata.equals(other.getMetadata())) return false; - if (!TextUtils.equals(mVendorExension, other.mVendorExension)) - return false; + if (!mVendorInfo.equals(other.mVendorInfo)) return false; return true; } } @@ -1457,7 +1594,32 @@ public class RadioManager { *
  • {@link #STATUS_DEAD_OBJECT} if the binder transaction to the native service fails,
  • * */ - public native int listModules(List modules); + @RequiresPermission(Manifest.permission.ACCESS_BROADCAST_RADIO) + public int listModules(List modules) { + if (modules == null) { + Log.e(TAG, "the output list must not be empty"); + return STATUS_BAD_VALUE; + } + + Log.d(TAG, "Listing available tuners..."); + List returnedList; + try { + returnedList = mService.listModules(); + } catch (RemoteException e) { + Log.e(TAG, "Failed listing available tuners", e); + return STATUS_DEAD_OBJECT; + } + + if (returnedList == null) { + Log.e(TAG, "Returned list was a null"); + return STATUS_ERROR; + } + + modules.addAll(returnedList); + return STATUS_OK; + } + + private native int nativeListModules(List modules); /** * Open an interface to control a tuner on a given broadcast radio module. @@ -1473,50 +1635,39 @@ public class RadioManager { * Can be null if default handler is OK. * @return a valid {@link RadioTuner} interface in case of success or null in case of error. */ + @RequiresPermission(Manifest.permission.ACCESS_BROADCAST_RADIO) public RadioTuner openTuner(int moduleId, BandConfig config, boolean withAudio, RadioTuner.Callback callback, Handler handler) { if (callback == null) { throw new IllegalArgumentException("callback must not be empty"); } - if (mService != null) { - Log.d(TAG, "Opening tuner..."); + Log.d(TAG, "Opening tuner " + moduleId + "..."); - ITuner tuner; - ITunerCallback halCallback = new TunerCallbackAdapter(callback, handler); - try { - tuner = mService.openTuner(moduleId, config, withAudio, halCallback); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - if (tuner == null) { - Log.e(TAG, "Failed to open tuner"); - return null; - } - return new TunerAdapter(tuner); + ITuner tuner; + TunerCallbackAdapter halCallback = new TunerCallbackAdapter(callback, handler); + try { + tuner = mService.openTuner(moduleId, config, withAudio, halCallback); + } catch (RemoteException e) { + Log.e(TAG, "Failed to open tuner", e); + return null; } - - RadioModule module = new RadioModule(moduleId, config, withAudio, callback, handler); - if (!module.initCheck()) { + if (tuner == null) { Log.e(TAG, "Failed to open tuner"); - module = null; + return null; } - - return (RadioTuner)module; + return new TunerAdapter(tuner, config != null ? config.getType() : BAND_INVALID); } @NonNull private final Context mContext; - // TODO(b/36863239): NonNull when transitioned from native service - @Nullable private final IRadioService mService; + @NonNull private final IRadioService mService; /** * @hide */ public RadioManager(@NonNull Context context) throws ServiceNotFoundException { mContext = context; - - boolean isServiceJava = SystemProperties.getBoolean("config.enable_java_radio", false); - mService = isServiceJava ? IRadioService.Stub.asInterface( - ServiceManager.getServiceOrThrow(Context.RADIO_SERVICE)) : null; + mService = IRadioService.Stub.asInterface( + ServiceManager.getServiceOrThrow(Context.RADIO_SERVICE)); } } diff --git a/core/java/android/hardware/radio/RadioMetadata.aidl b/core/java/android/hardware/radio/RadioMetadata.aidl new file mode 100644 index 0000000000000000000000000000000000000000..cbf47134d539067f5d27749aeade4c5bd97f8a59 --- /dev/null +++ b/core/java/android/hardware/radio/RadioMetadata.aidl @@ -0,0 +1,20 @@ +/** + * 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.hardware.radio; + +/** @hide */ +parcelable RadioMetadata; diff --git a/core/java/android/hardware/radio/RadioMetadata.java b/core/java/android/hardware/radio/RadioMetadata.java index d07b40759be7e9c4f6cc9baae9e514ece725afa7..3cc4b566a3c02b3e61ce649dc86cdb1de097d6c3 100644 --- a/core/java/android/hardware/radio/RadioMetadata.java +++ b/core/java/android/hardware/radio/RadioMetadata.java @@ -17,19 +17,15 @@ package android.hardware.radio; import android.annotation.NonNull; import android.annotation.SystemApi; -import android.content.ContentResolver; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.net.Uri; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import android.util.SparseArray; -import java.util.ArrayList; import java.util.Set; /** @@ -38,7 +34,7 @@ import java.util.Set; */ @SystemApi public final class RadioMetadata implements Parcelable { - private static final String TAG = "RadioMetadata"; + private static final String TAG = "BroadcastRadio.metadata"; /** * The RDS Program Information. @@ -111,7 +107,7 @@ public final class RadioMetadata implements Parcelable { static { METADATA_KEYS_TYPE = new ArrayMap(); - METADATA_KEYS_TYPE.put(METADATA_KEY_RDS_PI, METADATA_TYPE_TEXT); + METADATA_KEYS_TYPE.put(METADATA_KEY_RDS_PI, METADATA_TYPE_INT); METADATA_KEYS_TYPE.put(METADATA_KEY_RDS_PS, METADATA_TYPE_TEXT); METADATA_KEYS_TYPE.put(METADATA_KEY_RDS_PTY, METADATA_TYPE_INT); METADATA_KEYS_TYPE.put(METADATA_KEY_RBDS_PTY, METADATA_TYPE_INT); @@ -245,6 +241,14 @@ public final class RadioMetadata implements Parcelable { return mBundle.getString(key); } + private static void putInt(Bundle bundle, String key, int value) { + int type = METADATA_KEYS_TYPE.getOrDefault(key, METADATA_TYPE_INVALID); + if (type != METADATA_TYPE_INT && type != METADATA_TYPE_BITMAP) { + throw new IllegalArgumentException("The " + key + " key cannot be used to put an int"); + } + bundle.putInt(key, value); + } + /** * Returns the value associated with the given key, * or 0 if the key is not found in the meta data. @@ -261,7 +265,9 @@ public final class RadioMetadata implements Parcelable { * * @param key The key the value is stored under * @return a {@link Bitmap} or null + * @deprecated Use getBitmapId(String) instead */ + @Deprecated public Bitmap getBitmap(String key) { Bitmap bmp = null; try { @@ -273,6 +279,30 @@ public final class RadioMetadata implements Parcelable { return bmp; } + /** + * Retrieves an identifier for a bitmap. + * + * The format of an identifier is opaque to the application, + * with a special case of value 0 being invalid. + * An identifier for a given image-tuner pair is unique, so an application + * may cache images and determine if there is a necessity to fetch them + * again - if identifier changes, it means the image has changed. + * + * Only bitmap keys may be used with this method: + *
      + *
    • {@link #METADATA_KEY_ICON}
    • + *
    • {@link #METADATA_KEY_ART}
    • + *
    + * + * @param key The key the value is stored under. + * @return a bitmap identifier or 0 if it's missing. + * @hide This API is not thoroughly elaborated yet + */ + public int getBitmapId(@NonNull String key) { + if (!METADATA_KEY_ICON.equals(key) && !METADATA_KEY_ART.equals(key)) return 0; + return getInt(key); + } + public Clock getClock(String key) { Clock clock = null; try { @@ -390,7 +420,6 @@ public final class RadioMetadata implements Parcelable { * the METADATA_KEYs defined in this class are used they may only be one * of the following: *
      - *
    • {@link #METADATA_KEY_RDS_PI}
    • *
    • {@link #METADATA_KEY_RDS_PS}
    • *
    • {@link #METADATA_KEY_RDS_RT}
    • *
    • {@link #METADATA_KEY_TITLE}
    • @@ -418,21 +447,18 @@ public final class RadioMetadata implements Parcelable { * the METADATA_KEYs defined in this class are used they may only be one * of the following: *
        + *
      • {@link #METADATA_KEY_RDS_PI}
      • *
      • {@link #METADATA_KEY_RDS_PTY}
      • *
      • {@link #METADATA_KEY_RBDS_PTY}
      • *
      + * or any bitmap represented by its identifier. * * @param key The key for referencing this value * @param value The int value to store * @return the same Builder instance */ public Builder putInt(String key, int value) { - if (!METADATA_KEYS_TYPE.containsKey(key) || - METADATA_KEYS_TYPE.get(key) != METADATA_TYPE_INT) { - throw new IllegalArgumentException("The " + key - + " key cannot be used to put a long"); - } - mBundle.putInt(key, value); + RadioMetadata.putInt(mBundle, key, value); return this; } @@ -503,12 +529,12 @@ public final class RadioMetadata implements Parcelable { int putIntFromNative(int nativeKey, int value) { String key = getKeyFromNativeKey(nativeKey); - if (!METADATA_KEYS_TYPE.containsKey(key) || - METADATA_KEYS_TYPE.get(key) != METADATA_TYPE_INT) { + try { + putInt(mBundle, key, value); + return 0; + } catch (IllegalArgumentException ex) { return -1; } - mBundle.putInt(key, value); - return 0; } int putStringFromNative(int nativeKey, String value) { @@ -540,7 +566,6 @@ public final class RadioMetadata implements Parcelable { } int putClockFromNative(int nativeKey, long utcEpochSeconds, int timezoneOffsetInMinutes) { - Log.d(TAG, "putClockFromNative()"); String key = getKeyFromNativeKey(nativeKey); if (!METADATA_KEYS_TYPE.containsKey(key) || METADATA_KEYS_TYPE.get(key) != METADATA_TYPE_CLOCK) { diff --git a/core/java/android/hardware/radio/RadioModule.java b/core/java/android/hardware/radio/RadioModule.java deleted file mode 100644 index c0df0f386b09f7c6a0830803a20d131de700168a..0000000000000000000000000000000000000000 --- a/core/java/android/hardware/radio/RadioModule.java +++ /dev/null @@ -1,234 +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.hardware.radio; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.SystemApi; -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.UUID; - -/** - * A RadioModule implements the RadioTuner interface for a broadcast radio tuner physically - * present on the device and exposed by the radio HAL. - * - * @hide - */ -public class RadioModule extends RadioTuner { - private long mNativeContext = 0; - private int mId; - private NativeEventHandlerDelegate mEventHandlerDelegate; - - RadioModule(int moduleId, RadioManager.BandConfig config, boolean withAudio, - RadioTuner.Callback callback, Handler handler) { - mId = moduleId; - mEventHandlerDelegate = new NativeEventHandlerDelegate(callback, handler); - native_setup(new WeakReference(this), config, withAudio); - } - private native void native_setup(Object module_this, - RadioManager.BandConfig config, boolean withAudio); - - @Override - protected void finalize() { - native_finalize(); - } - private native void native_finalize(); - - boolean initCheck() { - return mNativeContext != 0; - } - - // RadioTuner implementation - public native void close(); - - public native int setConfiguration(RadioManager.BandConfig config); - - public native int getConfiguration(RadioManager.BandConfig[] config); - - public native int setMute(boolean mute); - - public native boolean getMute(); - - public native int step(int direction, boolean skipSubChannel); - - public native int scan(int direction, boolean skipSubChannel); - - public native int tune(int channel, int subChannel); - - public native int cancel(); - - public native int getProgramInformation(RadioManager.ProgramInfo[] info); - - public native boolean startBackgroundScan(); - - public native @NonNull List getProgramList(@Nullable String filter); - - public native boolean isAnalogForced(); - - public native void setAnalogForced(boolean isForced); - - public native boolean isAntennaConnected(); - - public native boolean hasControl(); - - - /* keep in sync with radio_event_type_t in system/core/include/system/radio.h */ - static final int EVENT_HW_FAILURE = 0; - static final int EVENT_CONFIG = 1; - static final int EVENT_ANTENNA = 2; - static final int EVENT_TUNED = 3; - static final int EVENT_METADATA = 4; - static final int EVENT_TA = 5; - static final int EVENT_AF_SWITCH = 6; - static final int EVENT_EA = 7; - static final int EVENT_CONTROL = 100; - static final int EVENT_SERVER_DIED = 101; - - private class NativeEventHandlerDelegate { - private final Handler mHandler; - - NativeEventHandlerDelegate(final RadioTuner.Callback callback, - Handler handler) { - // find the looper for our new event handler - Looper looper; - if (handler != null) { - looper = handler.getLooper(); - } else { - looper = Looper.getMainLooper(); - } - - // construct the event handler with this looper - if (looper != null) { - // implement the event handler delegate - mHandler = new Handler(looper) { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case EVENT_HW_FAILURE: - if (callback != null) { - callback.onError(RadioTuner.ERROR_HARDWARE_FAILURE); - } - break; - case EVENT_CONFIG: { - RadioManager.BandConfig config = (RadioManager.BandConfig)msg.obj; - switch(msg.arg1) { - case RadioManager.STATUS_OK: - if (callback != null) { - callback.onConfigurationChanged(config); - } - break; - default: - if (callback != null) { - callback.onError(RadioTuner.ERROR_CONFIG); - } - break; - } - } break; - case EVENT_ANTENNA: - if (callback != null) { - callback.onAntennaState(msg.arg2 == 1); - } - break; - case EVENT_AF_SWITCH: - case EVENT_TUNED: { - RadioManager.ProgramInfo info = (RadioManager.ProgramInfo)msg.obj; - switch (msg.arg1) { - case RadioManager.STATUS_OK: - if (callback != null) { - callback.onProgramInfoChanged(info); - } - break; - case RadioManager.STATUS_TIMED_OUT: - if (callback != null) { - callback.onError(RadioTuner.ERROR_SCAN_TIMEOUT); - } - break; - case RadioManager.STATUS_INVALID_OPERATION: - default: - if (callback != null) { - callback.onError(RadioTuner.ERROR_CANCELLED); - } - break; - } - } break; - case EVENT_METADATA: { - RadioMetadata metadata = (RadioMetadata)msg.obj; - if (callback != null) { - callback.onMetadataChanged(metadata); - } - } break; - case EVENT_TA: - if (callback != null) { - callback.onTrafficAnnouncement(msg.arg2 == 1); - } - break; - case EVENT_EA: - if (callback != null) { - callback.onEmergencyAnnouncement(msg.arg2 == 1); - } - case EVENT_CONTROL: - if (callback != null) { - callback.onControlChanged(msg.arg2 == 1); - } - break; - case EVENT_SERVER_DIED: - if (callback != null) { - callback.onError(RadioTuner.ERROR_SERVER_DIED); - } - break; - default: - // Should not happen - break; - } - } - }; - } else { - mHandler = null; - } - } - - Handler handler() { - return mHandler; - } - } - - - @SuppressWarnings("unused") - private static void postEventFromNative(Object module_ref, - int what, int arg1, int arg2, Object obj) { - RadioModule module = (RadioModule)((WeakReference)module_ref).get(); - if (module == null) { - return; - } - - NativeEventHandlerDelegate delegate = module.mEventHandlerDelegate; - if (delegate != null) { - Handler handler = delegate.handler(); - if (handler != null) { - Message m = handler.obtainMessage(what, arg1, arg2, obj); - handler.sendMessage(m); - } - } - } -} - diff --git a/core/java/android/hardware/radio/RadioTuner.java b/core/java/android/hardware/radio/RadioTuner.java index 6e1232d84481714b583217406833621e3873f6ab..6e8991aa4a4aa39d90130c57725a337896993516 100644 --- a/core/java/android/hardware/radio/RadioTuner.java +++ b/core/java/android/hardware/radio/RadioTuner.java @@ -19,14 +19,11 @@ package android.hardware.radio; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; -import android.content.Context; -import android.content.Intent; +import android.graphics.Bitmap; import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import java.lang.ref.WeakReference; + import java.util.List; -import java.util.UUID; +import java.util.Map; /** * RadioTuner interface provides methods to control a radio tuner on the device: selecting and @@ -175,9 +172,21 @@ public abstract class RadioTuner { *
    • {@link RadioManager#STATUS_DEAD_OBJECT} if the binder transaction to the native * service fails,
    • *
    + * @deprecated Use {@link tune(ProgramSelector)} instead. */ + @Deprecated public abstract int tune(int channel, int subChannel); + /** + * Tune to a program. + * + * The operation is asynchronous and {@link Callback} onProgramInfoChanged() will be called + * when tune completes or onError() when cancelled or on timeout. + * + * @throws IllegalArgumentException if the provided selector is invalid + */ + public abstract void tune(@NonNull ProgramSelector selector); + /** * Cancel a pending scan or tune operation. * If an operation is pending, {@link Callback} onError() will be called with @@ -195,6 +204,17 @@ public abstract class RadioTuner { */ public abstract int cancel(); + /** + * Cancels traffic or emergency announcement. + * + * If there was no announcement to cancel, no action is taken. + * + * There is a race condition between calling cancelAnnouncement and the actual announcement + * being finished, so onTrafficAnnouncement / onEmergencyAnnouncement callback should be + * tracked with proper locking. + */ + public abstract void cancelAnnouncement(); + /** * Get current station information. * @param info a ProgramInfo array of lengh 1 where the information is returned. @@ -211,6 +231,27 @@ public abstract class RadioTuner { */ public abstract int getProgramInformation(RadioManager.ProgramInfo[] info); + /** + * Retrieves a {@link Bitmap} for the given image ID or null, + * if the image was missing from the tuner. + * + * This involves doing a call to the tuner, so the bitmap should be cached + * on the application side. + * + * If the method returns null for non-zero ID, it means the image was + * updated on the tuner side. There is a race conditon between fetching + * image for an old ID and tuner updating the image (and cleaning up the + * old image). In such case, a new ProgramInfo with updated image id will + * be sent with a {@link onProgramInfoChanged} callback. + * + * @param id The image identifier, retrieved with + * {@link RadioMetadata#getBitmapId(String)}. + * @return A {@link Bitmap} or null. + * @throws IllegalArgumentException if id==0 + * @hide This API is not thoroughly elaborated yet + */ + public abstract @Nullable Bitmap getMetadataImage(int id); + /** * Initiates a background scan to update internally cached program list. * @@ -224,24 +265,24 @@ public abstract class RadioTuner { * is unavailable; ie. temporarily due to ongoing foreground playback in single-tuner device * or permanently if the feature is not supported * (see ModuleProperties#isBackgroundScanningSupported()). - * @hide FutureFeature */ public abstract boolean startBackgroundScan(); /** * Get the list of discovered radio stations. * - * To get the full list, set filter to null or empty string. Otherwise, client application - * must verify vendor product/name before setting this parameter to anything else. + * To get the full list, set filter to null or empty map. + * Keys must be prefixed with unique vendor Java-style namespace, + * eg. 'com.somecompany.parameter1'. * - * @param filter vendor-specific selector for radio stations. + * @param vendorFilter vendor-specific selector for radio stations. * @return a list of radio stations. * @throws IllegalStateException if the scan is in progress or has not been started, * startBackgroundScan() call may fix it. - * @throws IllegalArgumentException if the filter argument is not valid. - * @hide FutureFeature + * @throws IllegalArgumentException if the vendorFilter argument is not valid. */ - public abstract @NonNull List getProgramList(@Nullable String filter); + public abstract @NonNull List + getProgramList(@Nullable Map vendorFilter); /** * Checks, if the analog playback is forced, see setAnalogForced. @@ -249,7 +290,6 @@ public abstract class RadioTuner { * @throws IllegalStateException if the switch is not supported at current * configuration. * @return {@code true} if analog is forced, {@code false} otherwise. - * @hide FutureFeature */ public abstract boolean isAnalogForced(); @@ -265,7 +305,6 @@ public abstract class RadioTuner { * @param isForced {@code true} to force analog, {@code false} for a default behaviour. * @throws IllegalStateException if the switch is not supported at current * configuration. - * @hide FutureFeature */ public abstract void setAnalogForced(boolean isForced); @@ -303,6 +342,10 @@ public abstract class RadioTuner { public static final int ERROR_SCAN_TIMEOUT = 3; /** The requested configuration could not be applied */ public static final int ERROR_CONFIG = 4; + /** Background scan was interrupted due to hardware becoming temporarily unavailable. */ + public static final int ERROR_BACKGROUND_SCAN_UNAVAILABLE = 5; + /** Background scan failed due to other error, ie. HW failure. */ + public static final int ERROR_BACKGROUND_SCAN_FAILED = 6; /** * Callback provided by the client application when opening a {@link RadioTuner} @@ -323,20 +366,24 @@ public abstract class RadioTuner { * or {@link RadioTuner#setConfiguration(RadioManager.BandConfig)} */ public void onConfigurationChanged(RadioManager.BandConfig config) {} + /** - * onProgramInfoChanged() is called upon successful completion of - * {@link RadioTuner#step(int, boolean)}, {@link RadioTuner#scan(int, boolean)}, - * {@link RadioTuner#tune(int, int)} or when a switching to alternate frequency occurs. - * Note that if metadata only are updated, {@link #onMetadataChanged(RadioMetadata)} will - * be called. + * Called when program info (including metadata) for the current program has changed. + * + * It happens either upon successful completion of {@link RadioTuner#step(int, boolean)}, + * {@link RadioTuner#scan(int, boolean)}, {@link RadioTuner#tune(int, int)}; when + * a switching to alternate frequency occurs; or when metadata is updated. */ public void onProgramInfoChanged(RadioManager.ProgramInfo info) {} + /** - * onMetadataChanged() is called when new meta data are received on current program. - * Meta data are also received in {@link RadioManager.ProgramInfo} when - * {@link #onProgramInfoChanged(RadioManager.ProgramInfo)} is called. + * Called when metadata is updated for the current program. + * + * @deprecated Use {@link #onProgramInfoChanged(RadioManager.ProgramInfo)} instead. */ + @Deprecated public void onMetadataChanged(RadioMetadata metadata) {} + /** * onTrafficAnnouncement() is called when a traffic announcement starts and stops. */ @@ -368,23 +415,18 @@ public abstract class RadioTuner { * * @param isAvailable true, if the tuner turned temporarily background- * capable, false in the other case. - * @hide FutureFeature */ public void onBackgroundScanAvailabilityChange(boolean isAvailable) {} /** * Called when a background scan completes successfully. - * - * @hide FutureFeature */ public void onBackgroundScanComplete() {} /** * Called when available program list changed. * - * Use getProgramList() to get the actual list. - * - * @hide FutureFeature + * Use {@link RadioTuner#getProgramList(String)} to get an actual list. */ public void onProgramListChanged() {} } diff --git a/core/java/android/hardware/radio/TunerAdapter.java b/core/java/android/hardware/radio/TunerAdapter.java index a457494012849cc1057ad94ad039a1c1c21f270c..b62196902570517f27f5582c271e95fec9087c5a 100644 --- a/core/java/android/hardware/radio/TunerAdapter.java +++ b/core/java/android/hardware/radio/TunerAdapter.java @@ -18,32 +18,37 @@ package android.hardware.radio; import android.annotation.NonNull; import android.annotation.Nullable; +import android.graphics.Bitmap; import android.os.RemoteException; import android.util.Log; import java.util.List; +import java.util.Map; /** * Implements the RadioTuner interface by forwarding calls to radio service. */ class TunerAdapter extends RadioTuner { - private static final String TAG = "radio.TunerAdapter"; + private static final String TAG = "BroadcastRadio.TunerAdapter"; @NonNull private final ITuner mTuner; private boolean mIsClosed = false; - TunerAdapter(ITuner tuner) { + private @RadioManager.Band int mBand; + + TunerAdapter(ITuner tuner, @RadioManager.Band int band) { if (tuner == null) { throw new NullPointerException(); } mTuner = tuner; + mBand = band; } @Override public void close() { synchronized (mTuner) { if (mIsClosed) { - Log.d(TAG, "Tuner is already closed"); + Log.v(TAG, "Tuner is already closed"); return; } mIsClosed = true; @@ -59,6 +64,7 @@ class TunerAdapter extends RadioTuner { public int setConfiguration(RadioManager.BandConfig config) { try { mTuner.setConfiguration(config); + mBand = config.getType(); return RadioManager.STATUS_OK; } catch (IllegalArgumentException e) { Log.e(TAG, "Can't set configuration", e); @@ -138,7 +144,7 @@ class TunerAdapter extends RadioTuner { @Override public int tune(int channel, int subChannel) { try { - mTuner.tune(channel, subChannel); + mTuner.tune(ProgramSelector.createAmFmSelector(mBand, channel, subChannel)); } catch (IllegalStateException e) { Log.e(TAG, "Can't tune", e); return RadioManager.STATUS_INVALID_OPERATION; @@ -152,6 +158,15 @@ class TunerAdapter extends RadioTuner { return RadioManager.STATUS_OK; } + @Override + public void tune(@NonNull ProgramSelector selector) { + try { + mTuner.tune(selector); + } catch (RemoteException e) { + throw new RuntimeException("service died", e); + } + } + @Override public int cancel() { try { @@ -166,6 +181,15 @@ class TunerAdapter extends RadioTuner { return RadioManager.STATUS_OK; } + @Override + public void cancelAnnouncement() { + try { + mTuner.cancelAnnouncement(); + } catch (RemoteException e) { + throw new RuntimeException("service died", e); + } + } + @Override public int getProgramInformation(RadioManager.ProgramInfo[] info) { if (info == null || info.length != 1) { @@ -180,6 +204,15 @@ class TunerAdapter extends RadioTuner { } } + @Override + public @Nullable Bitmap getMetadataImage(int id) { + try { + return mTuner.getImage(id); + } catch (RemoteException e) { + throw new RuntimeException("service died", e); + } + } + @Override public boolean startBackgroundScan() { try { @@ -190,9 +223,10 @@ class TunerAdapter extends RadioTuner { } @Override - public @NonNull List getProgramList(@Nullable String filter) { + public @NonNull List + getProgramList(@Nullable Map vendorFilter) { try { - return mTuner.getProgramList(filter); + return mTuner.getProgramList(vendorFilter); } catch (RemoteException e) { throw new RuntimeException("service died", e); } @@ -227,7 +261,11 @@ class TunerAdapter extends RadioTuner { @Override public boolean hasControl() { - // TODO(b/36863239): forward to mTuner - throw new RuntimeException("Not implemented"); + try { + // don't rely on mIsClosed, as tuner might get closed internally + return !mTuner.isClosed(); + } catch (RemoteException e) { + return false; + } } } diff --git a/core/java/android/hardware/radio/TunerCallbackAdapter.java b/core/java/android/hardware/radio/TunerCallbackAdapter.java index ba85017f16aaef017d23613ba1725e6b0e96df90..ffd5b30fa15c103a324faeb7525650fe3ef11f69 100644 --- a/core/java/android/hardware/radio/TunerCallbackAdapter.java +++ b/core/java/android/hardware/radio/TunerCallbackAdapter.java @@ -20,11 +20,14 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Handler; import android.os.Looper; +import android.util.Log; /** * Implements the ITunerCallback interface by forwarding calls to RadioTuner.Callback. */ class TunerCallbackAdapter extends ITunerCallback.Stub { + private static final String TAG = "BroadcastRadio.TunerCallbackAdapter"; + @NonNull private final RadioTuner.Callback mCallback; @NonNull private final Handler mHandler; @@ -48,7 +51,47 @@ class TunerCallbackAdapter extends ITunerCallback.Stub { } @Override - public void onProgramInfoChanged(RadioManager.ProgramInfo info) { - mHandler.post(() -> mCallback.onProgramInfoChanged(info)); + public void onCurrentProgramInfoChanged(RadioManager.ProgramInfo info) { + if (info == null) { + Log.e(TAG, "ProgramInfo must not be null"); + return; + } + + mHandler.post(() -> { + mCallback.onProgramInfoChanged(info); + + RadioMetadata metadata = info.getMetadata(); + if (metadata != null) mCallback.onMetadataChanged(metadata); + }); + } + + @Override + public void onTrafficAnnouncement(boolean active) { + mHandler.post(() -> mCallback.onTrafficAnnouncement(active)); + } + + @Override + public void onEmergencyAnnouncement(boolean active) { + mHandler.post(() -> mCallback.onEmergencyAnnouncement(active)); + } + + @Override + public void onAntennaState(boolean connected) { + mHandler.post(() -> mCallback.onAntennaState(connected)); + } + + @Override + public void onBackgroundScanAvailabilityChange(boolean isAvailable) { + mHandler.post(() -> mCallback.onBackgroundScanAvailabilityChange(isAvailable)); + } + + @Override + public void onBackgroundScanComplete() { + mHandler.post(() -> mCallback.onBackgroundScanComplete()); + } + + @Override + public void onProgramListChanged() { + mHandler.post(() -> mCallback.onProgramListChanged()); } } diff --git a/core/java/android/hardware/usb/UsbDeviceConnection.java b/core/java/android/hardware/usb/UsbDeviceConnection.java index 9b5d0d3deb8c72e4a5ea7a947767aa1040fd8079..5b15c0d2fd9c85fe88be36d18efc111006bbcadb 100644 --- a/core/java/android/hardware/usb/UsbDeviceConnection.java +++ b/core/java/android/hardware/usb/UsbDeviceConnection.java @@ -18,6 +18,7 @@ package android.hardware.usb; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.content.Context; import android.os.Build; @@ -257,6 +258,7 @@ public class UsbDeviceConnection { * @hide */ @SystemApi + @SuppressLint("Doclava125") public boolean resetDevice() { return native_reset_device(); } diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 6bf14257c772a87f239549353da380d1aac3635f..8071e8b83738504cb86788e1e842d0f3c22d9806 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -1772,14 +1772,8 @@ public class ConnectivityManager { // ignored } - /** - * Return quota status for the current active network, or {@code null} if no - * network is active. Quota status can change rapidly, so these values - * shouldn't be cached. - * - * @hide - */ - @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) + /** {@hide} */ + @Deprecated public NetworkQuotaInfo getActiveNetworkQuotaInfo() { try { return mService.getActiveNetworkQuotaInfo(); diff --git a/core/java/android/net/INetworkPolicyManager.aidl b/core/java/android/net/INetworkPolicyManager.aidl index 63bbd96bd01df09f0d2cbfc02f5d6dea42270fe2..f75789f5eaddd65bbb53d6428aae90778551b668 100644 --- a/core/java/android/net/INetworkPolicyManager.aidl +++ b/core/java/android/net/INetworkPolicyManager.aidl @@ -21,6 +21,7 @@ import android.net.NetworkPolicy; import android.net.NetworkQuotaInfo; import android.net.NetworkState; import android.net.NetworkTemplate; +import android.telephony.SubscriptionPlan; /** * Interface that creates and modifies network policy rules. @@ -63,9 +64,14 @@ interface INetworkPolicyManager { int getRestrictBackgroundByCaller(); void setDeviceIdleMode(boolean enabled); + void setWifiMeteredOverride(String networkId, int meteredOverride); NetworkQuotaInfo getNetworkQuotaInfo(in NetworkState state); - boolean isNetworkMetered(in NetworkState state); + + SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage); + void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage); void factoryReset(String subscriber); + + boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork); } diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl index e693009c33774a452b2c2c9c57dac28a7da6604b..91801127fd4a728c3f6f3328139e9c41428ccd17 100644 --- a/core/java/android/net/INetworkStatsService.aidl +++ b/core/java/android/net/INetworkStatsService.aidl @@ -36,7 +36,7 @@ interface INetworkStatsService { * PACKAGE_USAGE_STATS permission is always checked. If PACKAGE_USAGE_STATS is not granted * READ_NETWORK_USAGE_STATS is checked for. */ - INetworkStatsSession openSessionForUsageStats(String callingPackage); + INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage); /** Return network layer usage total for traffic that matches template. */ long getNetworkTotalBytes(in NetworkTemplate template, long start, long end); diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java index f468e5d2f92b48712cb1a038fc16509bdd28faf0..7c897de9b5e98354e04ffaafcfcd90c171c1f73f 100644 --- a/core/java/android/net/NetworkCapabilities.java +++ b/core/java/android/net/NetworkCapabilities.java @@ -895,7 +895,9 @@ public final class NetworkCapabilities implements Parcelable { // Ignore NOT_METERED being added or removed as it is effectively dynamic. http://b/63326103 // TODO: properly support NOT_METERED as a mutable and requestable capability. - final long mask = ~MUTABLE_CAPABILITIES & ~(1 << NET_CAPABILITY_NOT_METERED); + // Ignore DUN being added or removed. http://b/65257223. + final long mask = ~MUTABLE_CAPABILITIES + & ~(1 << NET_CAPABILITY_NOT_METERED) & ~(1 << NET_CAPABILITY_DUN); long oldImmutableCapabilities = this.mNetworkCapabilities & mask; long newImmutableCapabilities = that.mNetworkCapabilities & mask; if (oldImmutableCapabilities != newImmutableCapabilities) { diff --git a/core/java/android/net/NetworkFactory.java b/core/java/android/net/NetworkFactory.java index cab88b9972b5e4d2172ca28f8a141dd6f6e559a7..e2f8d1a3f08b9aad4a51a68f265ff32920ce934f 100644 --- a/core/java/android/net/NetworkFactory.java +++ b/core/java/android/net/NetworkFactory.java @@ -254,6 +254,16 @@ public class NetworkFactory extends Handler { } } + /** + * Post a command, on this NetworkFactory Handler, to re-evaluate all + * oustanding requests. Can be called from a factory implementation. + */ + protected void reevaluateAllRequests() { + post(() -> { + evalRequests(); + }); + } + // override to do simple mode (request independent) protected void startNetwork() { } protected void stopNetwork() { } diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java index df404b7dce271e488fab362077de826933f0708b..d3b35998be13b2d25f0692087b578dcffc8c0e7b 100644 --- a/core/java/android/net/NetworkIdentity.java +++ b/core/java/android/net/NetworkIdentity.java @@ -157,7 +157,7 @@ public class NetworkIdentity implements Comparable { * Scrub given IMSI on production builds. */ public static String scrubSubscriberId(String subscriberId) { - if ("eng".equals(Build.TYPE)) { + if (Build.IS_ENG) { return subscriberId; } else if (subscriberId != null) { // TODO: parse this as MCC+MNC instead of hard-coding diff --git a/core/java/android/net/NetworkInfo.java b/core/java/android/net/NetworkInfo.java index d5549387755d44977ebe0b0a71428e58be45d5f0..e6ad89a20bbd1d6e88cd72a30b69d2e671818ae6 100644 --- a/core/java/android/net/NetworkInfo.java +++ b/core/java/android/net/NetworkInfo.java @@ -16,8 +16,8 @@ package android.net; -import android.os.Parcelable; import android.os.Parcel; +import android.os.Parcelable; import com.android.internal.annotations.VisibleForTesting; @@ -121,7 +121,6 @@ public class NetworkInfo implements Parcelable { private boolean mIsFailover; private boolean mIsAvailable; private boolean mIsRoaming; - private boolean mIsMetered; /** * @hide @@ -154,7 +153,6 @@ public class NetworkInfo implements Parcelable { mIsFailover = source.mIsFailover; mIsAvailable = source.mIsAvailable; mIsRoaming = source.mIsRoaming; - mIsMetered = source.mIsMetered; } } } @@ -333,31 +331,6 @@ public class NetworkInfo implements Parcelable { } } - /** - * Returns if this network is metered. A network is classified as metered - * when the user is sensitive to heavy data usage on that connection due to - * monetary costs, data limitations or battery/performance issues. You - * should check this before doing large data transfers, and warn the user or - * delay the operation until another network is available. - * - * @return {@code true} if large transfers should be avoided, otherwise - * {@code false}. - * @hide - */ - public boolean isMetered() { - synchronized (this) { - return mIsMetered; - } - } - - /** {@hide} */ - @VisibleForTesting - public void setMetered(boolean isMetered) { - synchronized (this) { - mIsMetered = isMetered; - } - } - /** * Reports the current coarse-grained state of the network. * @return the coarse-grained state @@ -441,7 +414,6 @@ public class NetworkInfo implements Parcelable { append(", failover: ").append(mIsFailover). append(", available: ").append(mIsAvailable). append(", roaming: ").append(mIsRoaming). - append(", metered: ").append(mIsMetered). append("]"); return builder.toString(); } @@ -464,7 +436,6 @@ public class NetworkInfo implements Parcelable { dest.writeInt(mIsFailover ? 1 : 0); dest.writeInt(mIsAvailable ? 1 : 0); dest.writeInt(mIsRoaming ? 1 : 0); - dest.writeInt(mIsMetered ? 1 : 0); dest.writeString(mReason); dest.writeString(mExtraInfo); } @@ -483,7 +454,6 @@ public class NetworkInfo implements Parcelable { netInfo.mIsFailover = in.readInt() != 0; netInfo.mIsAvailable = in.readInt() != 0; netInfo.mIsRoaming = in.readInt() != 0; - netInfo.mIsMetered = in.readInt() != 0; netInfo.mReason = in.readString(); netInfo.mExtraInfo = in.readString(); return netInfo; diff --git a/core/java/android/net/NetworkPolicy.java b/core/java/android/net/NetworkPolicy.java index 9870e7b6fa0c04936ff6172264c240200092fae7..5df742c5a394d0013586ddc2e088388c87d9536b 100644 --- a/core/java/android/net/NetworkPolicy.java +++ b/core/java/android/net/NetworkPolicy.java @@ -16,16 +16,21 @@ package android.net; -import static com.android.internal.util.Preconditions.checkNotNull; - import android.os.Parcel; import android.os.Parcelable; import android.util.BackupUtils; +import android.util.Pair; +import android.util.RecurrenceRule; + +import com.android.internal.util.Preconditions; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Iterator; import java.util.Objects; /** @@ -35,10 +40,8 @@ import java.util.Objects; * @hide */ public class NetworkPolicy implements Parcelable, Comparable { - /** - * Current Version of the Backup Serializer. - */ - private static final int BACKUP_VERSION = 1; + private static final int VERSION_INIT = 1; + private static final int VERSION_RULE = 2; public static final int CYCLE_NONE = -1; public static final long WARNING_DISABLED = -1; @@ -46,17 +49,24 @@ public class NetworkPolicy implements Parcelable, Comparable { public static final long SNOOZE_NEVER = -1; public NetworkTemplate template; - public int cycleDay; - public String cycleTimezone; - public long warningBytes; - public long limitBytes; - public long lastWarningSnooze; - public long lastLimitSnooze; - public boolean metered; - public boolean inferred; + public RecurrenceRule cycleRule; + public long warningBytes = WARNING_DISABLED; + public long limitBytes = LIMIT_DISABLED; + public long lastWarningSnooze = SNOOZE_NEVER; + public long lastLimitSnooze = SNOOZE_NEVER; + @Deprecated public boolean metered = true; + public boolean inferred = false; private static final long DEFAULT_MTU = 1500; + public static RecurrenceRule buildRule(int cycleDay, ZoneId cycleTimezone) { + if (cycleDay != NetworkPolicy.CYCLE_NONE) { + return RecurrenceRule.buildRecurringMonthly(cycleDay, cycleTimezone); + } else { + return RecurrenceRule.buildNever(); + } + } + @Deprecated public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone, long warningBytes, long limitBytes, boolean metered) { @@ -64,12 +74,19 @@ public class NetworkPolicy implements Parcelable, Comparable { SNOOZE_NEVER, metered, false); } + @Deprecated public NetworkPolicy(NetworkTemplate template, int cycleDay, String cycleTimezone, long warningBytes, long limitBytes, long lastWarningSnooze, long lastLimitSnooze, boolean metered, boolean inferred) { - this.template = checkNotNull(template, "missing NetworkTemplate"); - this.cycleDay = cycleDay; - this.cycleTimezone = checkNotNull(cycleTimezone, "missing cycleTimezone"); + this(template, buildRule(cycleDay, ZoneId.of(cycleTimezone)), warningBytes, + limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred); + } + + public NetworkPolicy(NetworkTemplate template, RecurrenceRule cycleRule, long warningBytes, + long limitBytes, long lastWarningSnooze, long lastLimitSnooze, boolean metered, + boolean inferred) { + this.template = Preconditions.checkNotNull(template, "missing NetworkTemplate"); + this.cycleRule = Preconditions.checkNotNull(cycleRule, "missing RecurrenceRule"); this.warningBytes = warningBytes; this.limitBytes = limitBytes; this.lastWarningSnooze = lastWarningSnooze; @@ -78,23 +95,21 @@ public class NetworkPolicy implements Parcelable, Comparable { this.inferred = inferred; } - public NetworkPolicy(Parcel in) { - template = in.readParcelable(null); - cycleDay = in.readInt(); - cycleTimezone = in.readString(); - warningBytes = in.readLong(); - limitBytes = in.readLong(); - lastWarningSnooze = in.readLong(); - lastLimitSnooze = in.readLong(); - metered = in.readInt() != 0; - inferred = in.readInt() != 0; + private NetworkPolicy(Parcel source) { + template = source.readParcelable(null); + cycleRule = source.readParcelable(null); + warningBytes = source.readLong(); + limitBytes = source.readLong(); + lastWarningSnooze = source.readLong(); + lastLimitSnooze = source.readLong(); + metered = source.readInt() != 0; + inferred = source.readInt() != 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeParcelable(template, flags); - dest.writeInt(cycleDay); - dest.writeString(cycleTimezone); + dest.writeParcelable(cycleRule, flags); dest.writeLong(warningBytes); dest.writeLong(limitBytes); dest.writeLong(lastWarningSnooze); @@ -108,6 +123,10 @@ public class NetworkPolicy implements Parcelable, Comparable { return 0; } + public Iterator> cycleIterator() { + return cycleRule.cycleIterator(); + } + /** * Test if given measurement is over {@link #warningBytes}. */ @@ -138,7 +157,7 @@ public class NetworkPolicy implements Parcelable, Comparable { * Test if this policy has a cycle defined, after which usage should reset. */ public boolean hasCycle() { - return cycleDay != CYCLE_NONE; + return cycleRule.cycleIterator().hasNext(); } @Override @@ -156,7 +175,7 @@ public class NetworkPolicy implements Parcelable, Comparable { @Override public int hashCode() { - return Objects.hash(template, cycleDay, cycleTimezone, warningBytes, limitBytes, + return Objects.hash(template, cycleRule, warningBytes, limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred); } @@ -164,30 +183,29 @@ public class NetworkPolicy implements Parcelable, Comparable { public boolean equals(Object obj) { if (obj instanceof NetworkPolicy) { final NetworkPolicy other = (NetworkPolicy) obj; - return cycleDay == other.cycleDay && warningBytes == other.warningBytes + return warningBytes == other.warningBytes && limitBytes == other.limitBytes && lastWarningSnooze == other.lastWarningSnooze && lastLimitSnooze == other.lastLimitSnooze && metered == other.metered && inferred == other.inferred - && Objects.equals(cycleTimezone, other.cycleTimezone) - && Objects.equals(template, other.template); + && Objects.equals(template, other.template) + && Objects.equals(cycleRule, other.cycleRule); } return false; } @Override public String toString() { - final StringBuilder builder = new StringBuilder("NetworkPolicy"); - builder.append("[").append(template).append("]:"); - builder.append(" cycleDay=").append(cycleDay); - builder.append(", cycleTimezone=").append(cycleTimezone); - builder.append(", warningBytes=").append(warningBytes); - builder.append(", limitBytes=").append(limitBytes); - builder.append(", lastWarningSnooze=").append(lastWarningSnooze); - builder.append(", lastLimitSnooze=").append(lastLimitSnooze); - builder.append(", metered=").append(metered); - builder.append(", inferred=").append(inferred); - return builder.toString(); + return new StringBuilder("NetworkPolicy{") + .append("template=").append(template) + .append(" cycleRule=").append(cycleRule) + .append(" warningBytes=").append(warningBytes) + .append(" limitBytes=").append(limitBytes) + .append(" lastWarningSnooze=").append(lastWarningSnooze) + .append(" lastLimitSnooze=").append(lastLimitSnooze) + .append(" metered=").append(metered) + .append(" inferred=").append(inferred) + .append("}").toString(); } public static final Creator CREATOR = new Creator() { @@ -206,10 +224,9 @@ public class NetworkPolicy implements Parcelable, Comparable { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(baos); - out.writeInt(BACKUP_VERSION); + out.writeInt(VERSION_RULE); out.write(template.getBytesForBackup()); - out.writeInt(cycleDay); - BackupUtils.writeString(out, cycleTimezone); + cycleRule.writeToStream(out); out.writeLong(warningBytes); out.writeLong(limitBytes); out.writeLong(lastWarningSnooze); @@ -221,21 +238,36 @@ public class NetworkPolicy implements Parcelable, Comparable { public static NetworkPolicy getNetworkPolicyFromBackup(DataInputStream in) throws IOException, BackupUtils.BadVersionException { - int version = in.readInt(); - if (version < 1 || version > BACKUP_VERSION) { - throw new BackupUtils.BadVersionException("Unknown Backup Serialization Version"); + final int version = in.readInt(); + switch (version) { + case VERSION_INIT: { + NetworkTemplate template = NetworkTemplate.getNetworkTemplateFromBackup(in); + int cycleDay = in.readInt(); + String cycleTimeZone = BackupUtils.readString(in); + long warningBytes = in.readLong(); + long limitBytes = in.readLong(); + long lastWarningSnooze = in.readLong(); + long lastLimitSnooze = in.readLong(); + boolean metered = in.readInt() == 1; + boolean inferred = in.readInt() == 1; + return new NetworkPolicy(template, cycleDay, cycleTimeZone, warningBytes, + limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred); + } + case VERSION_RULE: { + NetworkTemplate template = NetworkTemplate.getNetworkTemplateFromBackup(in); + RecurrenceRule cycleRule = new RecurrenceRule(in); + long warningBytes = in.readLong(); + long limitBytes = in.readLong(); + long lastWarningSnooze = in.readLong(); + long lastLimitSnooze = in.readLong(); + boolean metered = in.readInt() == 1; + boolean inferred = in.readInt() == 1; + return new NetworkPolicy(template, cycleRule, warningBytes, + limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred); + } + default: { + throw new BackupUtils.BadVersionException("Unknown backup version: " + version); + } } - - NetworkTemplate template = NetworkTemplate.getNetworkTemplateFromBackup(in); - int cycleDay = in.readInt(); - String cycleTimeZone = BackupUtils.readString(in); - long warningBytes = in.readLong(); - long limitBytes = in.readLong(); - long lastWarningSnooze = in.readLong(); - long lastLimitSnooze = in.readLong(); - boolean metered = in.readInt() == 1; - boolean inferred = in.readInt() == 1; - return new NetworkPolicy(template, cycleDay, cycleTimeZone, warningBytes, limitBytes, - lastWarningSnooze, lastLimitSnooze, metered, inferred); } } diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java index 4d94a55cd0c46c6970cd81daadacbabce7b79d4a..81c49a339d534dcec4be301593c9412e54b0e458 100644 --- a/core/java/android/net/NetworkPolicyManager.java +++ b/core/java/android/net/NetworkPolicyManager.java @@ -17,7 +17,6 @@ package android.net; import static android.content.pm.PackageManager.GET_SIGNATURES; -import static android.net.NetworkPolicy.CYCLE_NONE; import android.annotation.SystemService; import android.app.ActivityManager; @@ -26,15 +25,19 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiInfo; import android.os.RemoteException; import android.os.UserHandle; +import android.telephony.SubscriptionPlan; import android.util.DebugUtils; +import android.util.Pair; import com.google.android.collect.Sets; -import java.util.Calendar; +import java.time.ZonedDateTime; import java.util.HashSet; -import java.util.TimeZone; +import java.util.Iterator; /** * Manager for creating and modifying network policy rules. @@ -249,73 +252,9 @@ public class NetworkPolicyManager { } } - /** - * Compute the last cycle boundary for the given {@link NetworkPolicy}. For - * example, if cycle day is 20th, and today is June 15th, it will return May - * 20th. When cycle day doesn't exist in current month, it snaps to the 1st - * of following month. - * - * @hide - */ - public static long computeLastCycleBoundary(long currentTime, NetworkPolicy policy) { - if (policy.cycleDay == CYCLE_NONE) { - throw new IllegalArgumentException("Unable to compute boundary without cycleDay"); - } - - final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(policy.cycleTimezone)); - cal.setTimeInMillis(currentTime); - snapToCycleDay(cal, policy.cycleDay); - - if (cal.getTimeInMillis() >= currentTime) { - // Cycle boundary is beyond now, use last cycle boundary - cal.set(Calendar.DAY_OF_MONTH, 1); - cal.add(Calendar.MONTH, -1); - snapToCycleDay(cal, policy.cycleDay); - } - - return cal.getTimeInMillis(); - } - /** {@hide} */ - public static long computeNextCycleBoundary(long currentTime, NetworkPolicy policy) { - if (policy.cycleDay == CYCLE_NONE) { - throw new IllegalArgumentException("Unable to compute boundary without cycleDay"); - } - - final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(policy.cycleTimezone)); - cal.setTimeInMillis(currentTime); - snapToCycleDay(cal, policy.cycleDay); - - if (cal.getTimeInMillis() <= currentTime) { - // Cycle boundary is before now, use next cycle boundary - cal.set(Calendar.DAY_OF_MONTH, 1); - cal.add(Calendar.MONTH, 1); - snapToCycleDay(cal, policy.cycleDay); - } - - return cal.getTimeInMillis(); - } - - /** - * Snap to the cycle day for the current month given; when cycle day doesn't - * exist, it snaps to last second of current month. - * - * @hide - */ - public static void snapToCycleDay(Calendar cal, int cycleDay) { - cal.set(Calendar.HOUR_OF_DAY, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - if (cycleDay > cal.getActualMaximum(Calendar.DAY_OF_MONTH)) { - cal.add(Calendar.MONTH, 1); - cal.set(Calendar.DAY_OF_MONTH, 1); - cal.set(Calendar.HOUR_OF_DAY, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.add(Calendar.SECOND, -1); - } else { - cal.set(Calendar.DAY_OF_MONTH, cycleDay); - } + public static Iterator> cycleIterator(NetworkPolicy policy) { + return policy.cycleIterator(); } /** @@ -400,4 +339,13 @@ public class NetworkPolicyManager { public static boolean isProcStateAllowedWhileOnRestrictBackground(int procState) { return procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; } + + public static String resolveNetworkId(WifiConfiguration config) { + return WifiInfo.removeDoubleQuotes(config.isPasspoint() + ? config.providerFriendlyName : config.SSID); + } + + public static String resolveNetworkId(String ssid) { + return WifiInfo.removeDoubleQuotes(ssid); + } } diff --git a/core/java/android/net/NetworkQuotaInfo.java b/core/java/android/net/NetworkQuotaInfo.java index 1725ed7b015e2096c4e0f6dd53b90c755f53fe9d..b95f1d9831809d3a2db71eb88594a1ac1acd7ebc 100644 --- a/core/java/android/net/NetworkQuotaInfo.java +++ b/core/java/android/net/NetworkQuotaInfo.java @@ -20,41 +20,32 @@ import android.os.Parcel; import android.os.Parcelable; /** - * Information about quota status on a specific network. - * + * @deprecated nobody should be using this, but keep it around returning stub + * values to prevent app crashes. * @hide */ +@Deprecated public class NetworkQuotaInfo implements Parcelable { - private final long mEstimatedBytes; - private final long mSoftLimitBytes; - private final long mHardLimitBytes; - public static final long NO_LIMIT = -1; /** {@hide} */ - public NetworkQuotaInfo(long estimatedBytes, long softLimitBytes, long hardLimitBytes) { - mEstimatedBytes = estimatedBytes; - mSoftLimitBytes = softLimitBytes; - mHardLimitBytes = hardLimitBytes; + public NetworkQuotaInfo() { } /** {@hide} */ public NetworkQuotaInfo(Parcel in) { - mEstimatedBytes = in.readLong(); - mSoftLimitBytes = in.readLong(); - mHardLimitBytes = in.readLong(); } public long getEstimatedBytes() { - return mEstimatedBytes; + return 0; } public long getSoftLimitBytes() { - return mSoftLimitBytes; + return NO_LIMIT; } public long getHardLimitBytes() { - return mHardLimitBytes; + return NO_LIMIT; } @Override @@ -64,9 +55,6 @@ public class NetworkQuotaInfo implements Parcelable { @Override public void writeToParcel(Parcel out, int flags) { - out.writeLong(mEstimatedBytes); - out.writeLong(mSoftLimitBytes); - out.writeLong(mHardLimitBytes); } public static final Creator CREATOR = new Creator() { diff --git a/core/java/android/net/NetworkRecommendationProvider.java b/core/java/android/net/NetworkRecommendationProvider.java index fdb4ba0738932694bf51a601b3fa281520a97b19..a70c97bac10cf7cd401f86717a02cfec9cdf530e 100644 --- a/core/java/android/net/NetworkRecommendationProvider.java +++ b/core/java/android/net/NetworkRecommendationProvider.java @@ -35,6 +35,7 @@ import java.util.concurrent.Executor; * A network recommendation provider is any application which: *
      *
    • Is granted the {@link permission#SCORE_NETWORKS} permission. + *
    • Is granted the {@link permission#ACCESS_COARSE_LOCATION} permission. *
    • Includes a Service for the {@link NetworkScoreManager#ACTION_RECOMMEND_NETWORKS} intent * which is protected by the {@link permission#BIND_NETWORK_RECOMMENDATION_SERVICE} permission. *
    diff --git a/core/java/android/net/NetworkScoreManager.java b/core/java/android/net/NetworkScoreManager.java index 7e0c9ce33b82b06c89f328be73411770ca880f0e..54e1899e9a00455a2c77320dfd754d41c64a2947 100644 --- a/core/java/android/net/NetworkScoreManager.java +++ b/core/java/android/net/NetworkScoreManager.java @@ -38,7 +38,8 @@ import java.util.List; * *

    A network scorer is any application which: *

      - *
    • Declares the {@link permission#SCORE_NETWORKS} permission. + *
    • Is granted the {@link permission#SCORE_NETWORKS} permission. + *
    • Is granted the {@link permission#ACCESS_COARSE_LOCATION} permission. *
    • Include a Service for the {@link #ACTION_RECOMMEND_NETWORKS} action * protected by the {@link permission#BIND_NETWORK_RECOMMENDATION_SERVICE} * permission. @@ -226,6 +227,8 @@ public class NetworkScoreManager { * @return the full package name of the current active scorer, or null if there is no active * scorer. */ + @RequiresPermission(anyOf = {android.Manifest.permission.SCORE_NETWORKS, + android.Manifest.permission.REQUEST_NETWORK_SCORES}) public String getActiveScorerPackage() { try { return mService.getActiveScorerPackage(); diff --git a/core/java/android/net/NetworkStatsHistory.java b/core/java/android/net/NetworkStatsHistory.java index 5f521de63cf1f2a041b77163edf5cea9d9031bb6..433f9410cc6e80496ecd333702dbf8f0d75bc446 100644 --- a/core/java/android/net/NetworkStatsHistory.java +++ b/core/java/android/net/NetworkStatsHistory.java @@ -27,6 +27,7 @@ import static android.net.NetworkStatsHistory.Entry.UNKNOWN; import static android.net.NetworkStatsHistory.ParcelUtils.readLongArray; import static android.net.NetworkStatsHistory.ParcelUtils.writeLongArray; import static android.text.format.DateUtils.SECOND_IN_MILLIS; + import static com.android.internal.util.ArrayUtils.total; import android.os.Parcel; @@ -282,6 +283,24 @@ public class NetworkStatsHistory implements Parcelable { return entry; } + public void setValues(int i, Entry entry) { + // Unwind old values + if (rxBytes != null) totalBytes -= rxBytes[i]; + if (txBytes != null) totalBytes -= txBytes[i]; + + bucketStart[i] = entry.bucketStart; + setLong(activeTime, i, entry.activeTime); + setLong(rxBytes, i, entry.rxBytes); + setLong(rxPackets, i, entry.rxPackets); + setLong(txBytes, i, entry.txBytes); + setLong(txPackets, i, entry.txPackets); + setLong(operations, i, entry.operations); + + // Apply new values + if (rxBytes != null) totalBytes += rxBytes[i]; + if (txBytes != null) totalBytes += txBytes[i]; + } + /** * Record that data traffic occurred in the given time range. Will * distribute across internal buckets, creating new buckets as needed. diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java index 0d2fcd0740476536c715b2ef0383e61a7fd6e1e2..b307c5d6fc534851cabf328f5745bf2e8de8959f 100644 --- a/core/java/android/net/NetworkTemplate.java +++ b/core/java/android/net/NetworkTemplate.java @@ -326,6 +326,10 @@ public class NetworkTemplate implements Parcelable { } } + public boolean matchesSubscriberId(String subscriberId) { + return ArrayUtils.contains(mMatchSubscriberIds, subscriberId); + } + /** * Check if mobile network with matching IMSI. */ diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index f9346165df3bec2401f4b1a8da2f6f026b70668f..c339856f4388b267fdee19c7354ea4b2913e5382 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -109,25 +109,26 @@ public class TrafficStats { */ public static final int TAG_SYSTEM_RESTORE = 0xFFFFFF04; + /** + * Default tag value for code (typically APKs) downloaded by an app store on + * behalf of the app, such as updates. + * + * @hide + */ + public static final int TAG_SYSTEM_APP = 0xFFFFFF05; + /** @hide */ - public static final int TAG_SYSTEM_DHCP = 0xFFFFFF05; + public static final int TAG_SYSTEM_DHCP = 0xFFFFFF40; /** @hide */ - public static final int TAG_SYSTEM_NTP = 0xFFFFFF06; + public static final int TAG_SYSTEM_NTP = 0xFFFFFF41; /** @hide */ - public static final int TAG_SYSTEM_PROBE = 0xFFFFFF07; + public static final int TAG_SYSTEM_PROBE = 0xFFFFFF42; /** @hide */ - public static final int TAG_SYSTEM_NEIGHBOR = 0xFFFFFF08; + public static final int TAG_SYSTEM_NEIGHBOR = 0xFFFFFF43; /** @hide */ - public static final int TAG_SYSTEM_GPS = 0xFFFFFF09; + public static final int TAG_SYSTEM_GPS = 0xFFFFFF44; /** @hide */ - public static final int TAG_SYSTEM_PAC = 0xFFFFFF0A; - - /** - * Sockets that are strictly local on device; never hits network. - * - * @hide - */ - public static final int TAG_SYSTEM_LOCAL = 0xFFFFFFAA; + public static final int TAG_SYSTEM_PAC = 0xFFFFFF45; private static INetworkStatsService sStatsService; @@ -209,6 +210,19 @@ public class TrafficStats { setThreadStatsTag(TAG_SYSTEM_RESTORE); } + /** + * Set active tag to use when accounting {@link Socket} traffic originating + * from the current thread. The tag used internally is well-defined to + * distinguish all code (typically APKs) downloaded by an app store on + * behalf of the app, such as updates. + * + * @hide + */ + @SystemApi + public static void setThreadStatsTagApp() { + setThreadStatsTag(TAG_SYSTEM_APP); + } + /** * Get the active tag used when accounting {@link Socket} traffic originating * from the current thread. Only one active tag per thread is supported. diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java index 8d858805693806ea578aa1afe831931604ac3a88..5312dcaeb508f13172db71f77eb6cfac5f36b0dd 100644 --- a/core/java/android/os/BaseBundle.java +++ b/core/java/android/os/BaseBundle.java @@ -16,11 +16,16 @@ package android.os; +import android.annotation.NonNull; import android.annotation.Nullable; import android.util.ArrayMap; import android.util.Log; import android.util.MathUtils; import android.util.Slog; +import android.util.SparseArray; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.IndentingPrintWriter; import java.io.Serializable; import java.util.ArrayList; @@ -91,7 +96,8 @@ public class BaseBundle { private ClassLoader mClassLoader; /** {@hide} */ - int mFlags; + @VisibleForTesting + public int mFlags; /** * Constructs a new, empty Bundle that uses a specific ClassLoader for @@ -215,59 +221,72 @@ public class BaseBundle { */ /* package */ void unparcel() { synchronized (this) { - final Parcel parcelledData = mParcelledData; - if (parcelledData == null) { - if (DEBUG) Log.d(TAG, "unparcel " - + Integer.toHexString(System.identityHashCode(this)) - + ": no parcelled data"); - return; + final Parcel source = mParcelledData; + if (source != null) { + initializeFromParcelLocked(source, /*recycleParcel=*/ true); + } else { + if (DEBUG) { + Log.d(TAG, "unparcel " + + Integer.toHexString(System.identityHashCode(this)) + + ": no parcelled data"); + } } + } + } - if (LOG_DEFUSABLE && sShouldDefuse && (mFlags & FLAG_DEFUSABLE) == 0) { - Slog.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may " - + "clobber all data inside!", new Throwable()); - } + private void initializeFromParcelLocked(@NonNull Parcel parcelledData, boolean recycleParcel) { + if (LOG_DEFUSABLE && sShouldDefuse && (mFlags & FLAG_DEFUSABLE) == 0) { + Slog.wtf(TAG, "Attempting to unparcel a Bundle while in transit; this may " + + "clobber all data inside!", new Throwable()); + } - if (isEmptyParcel()) { - if (DEBUG) Log.d(TAG, "unparcel " + if (isEmptyParcel(parcelledData)) { + if (DEBUG) { + Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) + ": empty"); - if (mMap == null) { - mMap = new ArrayMap<>(1); - } else { - mMap.erase(); - } - mParcelledData = null; - return; - } - - int N = parcelledData.readInt(); - if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) - + ": reading " + N + " maps"); - if (N < 0) { - return; } - ArrayMap map = mMap; - if (map == null) { - map = new ArrayMap<>(N); + if (mMap == null) { + mMap = new ArrayMap<>(1); } else { + mMap.erase(); + } + mParcelledData = null; + return; + } + + final int count = parcelledData.readInt(); + if (DEBUG) { + Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) + + ": reading " + count + " maps"); + } + if (count < 0) { + return; + } + ArrayMap map = mMap; + if (map == null) { + map = new ArrayMap<>(count); + } else { + map.erase(); + map.ensureCapacity(count); + } + try { + parcelledData.readArrayMapInternal(map, count, mClassLoader); + } catch (BadParcelableException e) { + if (sShouldDefuse) { + Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e); map.erase(); - map.ensureCapacity(N); + } else { + throw e; } - try { - parcelledData.readArrayMapInternal(map, N, mClassLoader); - } catch (BadParcelableException e) { - if (sShouldDefuse) { - Log.w(TAG, "Failed to parse Bundle, but defusing quietly", e); - map.erase(); - } else { - throw e; - } - } finally { - mMap = map; - parcelledData.recycle(); - mParcelledData = null; + } finally { + mMap = map; + if (recycleParcel) { + recycleParcel(parcelledData); } - if (DEBUG) Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) + mParcelledData = null; + } + if (DEBUG) { + Log.d(TAG, "unparcel " + Integer.toHexString(System.identityHashCode(this)) + " final map: " + mMap); } } @@ -283,7 +302,20 @@ public class BaseBundle { * @hide */ public boolean isEmptyParcel() { - return mParcelledData == NoImagePreloadHolder.EMPTY_PARCEL; + return isEmptyParcel(mParcelledData); + } + + /** + * @hide + */ + private static boolean isEmptyParcel(Parcel p) { + return p == NoImagePreloadHolder.EMPTY_PARCEL; + } + + private static void recycleParcel(Parcel p) { + if (p != null && !isEmptyParcel(p)) { + p.recycle(); + } } /** @hide */ @@ -1473,6 +1505,10 @@ public class BaseBundle { * @param parcel The parcel to copy this bundle to. */ void writeToParcelInner(Parcel parcel, int flags) { + // If the parcel has a read-write helper, we can't just copy the blob, so unparcel it first. + if (parcel.hasReadWriteHelper()) { + unparcel(); + } // Keep implementation in sync with writeToParcel() in // frameworks/native/libs/binder/PersistableBundle.cpp. final ArrayMap map; @@ -1541,6 +1577,15 @@ public class BaseBundle { + Integer.toHexString(magic)); } + if (parcel.hasReadWriteHelper()) { + // If the parcel has a read-write helper, then we can't lazily-unparcel it, so just + // unparcel right away. + synchronized (this) { + initializeFromParcelLocked(parcel, /*recycleParcel=*/ false); + } + return; + } + // Advance within this Parcel int offset = parcel.dataPosition(); parcel.setDataPosition(MathUtils.addOrThrow(offset, length)); @@ -1555,4 +1600,49 @@ public class BaseBundle { mParcelledData = p; } + + /** {@hide} */ + public static void dumpStats(IndentingPrintWriter pw, String key, Object value) { + final Parcel tmp = Parcel.obtain(); + tmp.writeValue(value); + final int size = tmp.dataPosition(); + tmp.recycle(); + + // We only really care about logging large values + if (size > 1024) { + pw.println(key + " [size=" + size + "]"); + if (value instanceof BaseBundle) { + dumpStats(pw, (BaseBundle) value); + } else if (value instanceof SparseArray) { + dumpStats(pw, (SparseArray) value); + } + } + } + + /** {@hide} */ + public static void dumpStats(IndentingPrintWriter pw, SparseArray array) { + pw.increaseIndent(); + if (array == null) { + pw.println("[null]"); + return; + } + for (int i = 0; i < array.size(); i++) { + dumpStats(pw, "0x" + Integer.toHexString(array.keyAt(i)), array.valueAt(i)); + } + pw.decreaseIndent(); + } + + /** {@hide} */ + public static void dumpStats(IndentingPrintWriter pw, BaseBundle bundle) { + pw.increaseIndent(); + if (bundle == null) { + pw.println("[null]"); + return; + } + final ArrayMap map = bundle.getMap(); + for (int i = 0; i < map.size(); i++) { + dumpStats(pw, map.keyAt(i), map.valueAt(i)); + } + pw.decreaseIndent(); + } } diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 4160ed74e3ea646c8ed474e1cdc682ff5fadd5c2..5785619dcb9f128c15d5fb631727ba0bd04a8510 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -16,15 +16,7 @@ package android.os; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Formatter; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import android.app.job.JobParameters; import android.content.Context; import android.content.pm.ApplicationInfo; import android.telephony.SignalStrength; @@ -42,6 +34,15 @@ import android.view.Display; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Formatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * A class providing access to battery usage statistics, including information on * wakelocks, processes, packages, and services. All times are represented in microseconds @@ -52,6 +53,8 @@ public abstract class BatteryStats implements Parcelable { private static final String TAG = "BatteryStats"; private static final boolean LOCAL_LOGV = false; + /** Fetching RPM stats is too slow to do each time screen changes, so disable it. */ + protected static final boolean SCREEN_OFF_RPM_STATS_ENABLED = false; /** @hide */ public static final String SERVICE_NAME = "batterystats"; @@ -75,17 +78,17 @@ public abstract class BatteryStats implements Parcelable { * A constant indicating a sensor timer. */ public static final int SENSOR = 3; - + /** * A constant indicating a a wifi running timer */ public static final int WIFI_RUNNING = 4; - + /** * A constant indicating a full wifi lock timer */ public static final int FULL_WIFI_LOCK = 5; - + /** * A constant indicating a wifi scan */ @@ -166,6 +169,11 @@ public abstract class BatteryStats implements Parcelable { */ public static final int BLUETOOTH_UNOPTIMIZED_SCAN_ON = 21; + /** + * A constant indicating a foreground service timer + */ + public static final int FOREGROUND_SERVICE = 22; + /** * Include all of the data in the stats, including previously saved data. */ @@ -200,8 +208,19 @@ public abstract class BatteryStats implements Parcelable { * - CPU frequency time per uid * New in version 22: * - BLE scan result background count, BLE unoptimized scan time + * - Background partial wakelock time & count + * New in version 23: + * - Logging smeared power model values + * New in version 24: + * - Fixed bugs in background timers and BLE scan time + * New in version 25: + * - Package wakeup alarms are now on screen-off timebase + * New in version 26: + * - Resource power manager (rpm) states [but screenOffRpm is disabled from working properly] + * New in version 27: + * - Always On Display (screen doze mode) time and power */ - static final String CHECKIN_VERSION = "24"; + static final String CHECKIN_VERSION = "27"; /** * Old version, we hit 9 and ran out of room, need to remove. @@ -220,9 +239,17 @@ public abstract class BatteryStats implements Parcelable { private static final String CPU_DATA = "cpu"; private static final String GLOBAL_CPU_FREQ_DATA = "gcf"; private static final String CPU_TIMES_AT_FREQ_DATA = "ctf"; + // rpm line is: + // BATTERY_STATS_CHECKIN_VERSION, uid, which, "rpm", state/voter name, total time, total count, + // screen-off time, screen-off count + private static final String RESOURCE_POWER_MANAGER_DATA = "rpm"; private static final String SENSOR_DATA = "sr"; private static final String VIBRATOR_DATA = "vib"; - private static final String FOREGROUND_DATA = "fg"; + private static final String FOREGROUND_ACTIVITY_DATA = "fg"; + // fgs line is: + // BATTERY_STATS_CHECKIN_VERSION, uid, category, "fgs", + // foreground service time, count + private static final String FOREGROUND_SERVICE_DATA = "fgs"; private static final String STATE_TIME_DATA = "st"; // wl line is: // BATTERY_STATS_CHECKIN_VERSION, uid, which, "wl", name, @@ -238,6 +265,7 @@ public abstract class BatteryStats implements Parcelable { private static final String AGGREGATED_WAKELOCK_DATA = "awl"; private static final String SYNC_DATA = "sy"; private static final String JOB_DATA = "jb"; + private static final String JOB_COMPLETION_DATA = "jbc"; private static final String KERNEL_WAKELOCK_DATA = "kwl"; private static final String WAKEUP_REASON_DATA = "wr"; private static final String NETWORK_DATA = "nt"; @@ -497,6 +525,13 @@ public abstract class BatteryStats implements Parcelable { */ public abstract ArrayMap getJobStats(); + /** + * Returns statistics about how jobs have completed. + * + * @return A Map of String job names to completion type -> count mapping. + */ + public abstract ArrayMap getJobCompletionStats(); + /** * The statistics associated with a particular wake lock. */ @@ -573,6 +608,11 @@ public abstract class BatteryStats implements Parcelable { public abstract Timer getFlashlightTurnedOnTimer(); public abstract Timer getCameraTurnedOnTimer(); public abstract Timer getForegroundActivityTimer(); + + /** + * Returns the timer keeping track of Foreground Service time + */ + public abstract Timer getForegroundServiceTimer(); public abstract Timer getBluetoothScanTimer(); public abstract Timer getBluetoothScanBackgroundTimer(); public abstract Timer getBluetoothUnoptimizedScanTimer(); @@ -663,7 +703,7 @@ public abstract class BatteryStats implements Parcelable { public abstract long getSystemCpuTimeUs(int which); /** - * Returns the approximate cpu time (in milliseconds) spent at a certain CPU speed for a + * Returns the approximate cpu time (in microseconds) spent at a certain CPU speed for a * given CPU cluster. * @param cluster the index of the CPU cluster. * @param step the index of the CPU speed. This is not the actual speed of the CPU. @@ -1343,12 +1383,12 @@ public abstract class BatteryStats implements Parcelable { public static final int STATE_PHONE_SCANNING_FLAG = 1<<21; public static final int STATE_SCREEN_ON_FLAG = 1<<20; // consider moving to states2 public static final int STATE_BATTERY_PLUGGED_FLAG = 1<<19; // consider moving to states2 - // empty slot + public static final int STATE_SCREEN_DOZE_FLAG = 1 << 18; // empty slot public static final int STATE_WIFI_MULTICAST_ON_FLAG = 1<<16; public static final int MOST_INTERESTING_STATES = - STATE_BATTERY_PLUGGED_FLAG | STATE_SCREEN_ON_FLAG; + STATE_BATTERY_PLUGGED_FLAG | STATE_SCREEN_ON_FLAG | STATE_SCREEN_DOZE_FLAG; public static final int SETTLE_TO_ZERO_STATES = 0xffff0000 & ~MOST_INTERESTING_STATES; @@ -1376,8 +1416,8 @@ public abstract class BatteryStats implements Parcelable { public static final int STATE2_BLUETOOTH_SCAN_FLAG = 1 << 20; public static final int MOST_INTERESTING_STATES2 = - STATE2_POWER_SAVE_FLAG | STATE2_WIFI_ON_FLAG | STATE2_DEVICE_IDLE_MASK - | STATE2_CHARGING_FLAG | STATE2_PHONE_IN_CALL_FLAG | STATE2_BLUETOOTH_ON_FLAG; + STATE2_POWER_SAVE_FLAG | STATE2_WIFI_ON_FLAG | STATE2_DEVICE_IDLE_MASK + | STATE2_CHARGING_FLAG | STATE2_PHONE_IN_CALL_FLAG | STATE2_BLUETOOTH_ON_FLAG; public static final int SETTLE_TO_ZERO_STATES2 = 0xffff0000 & ~MOST_INTERESTING_STATES2; @@ -1825,6 +1865,21 @@ public abstract class BatteryStats implements Parcelable { */ public abstract int getScreenOnCount(int which); + /** + * Returns the time in microseconds that the screen has been dozing while the device was + * running on battery. + * + * {@hide} + */ + public abstract long getScreenDozeTime(long elapsedRealtimeUs, int which); + + /** + * Returns the number of times the screen was turned dozing. + * + * {@hide} + */ + public abstract int getScreenDozeCount(int which); + public abstract long getInteractiveTime(long elapsedRealtimeUs, int which); public static final int SCREEN_BRIGHTNESS_DARK = 0; @@ -2078,8 +2133,7 @@ public abstract class BatteryStats implements Parcelable { "group", "compl", "dorm", "uninit" }; - public static final BitDescription[] HISTORY_STATE_DESCRIPTIONS - = new BitDescription[] { + public static final BitDescription[] HISTORY_STATE_DESCRIPTIONS = new BitDescription[] { new BitDescription(HistoryItem.STATE_CPU_RUNNING_FLAG, "running", "r"), new BitDescription(HistoryItem.STATE_WAKE_LOCK_FLAG, "wake_lock", "w"), new BitDescription(HistoryItem.STATE_SENSOR_ON_FLAG, "sensor", "s"), @@ -2093,6 +2147,7 @@ public abstract class BatteryStats implements Parcelable { new BitDescription(HistoryItem.STATE_AUDIO_ON_FLAG, "audio", "a"), new BitDescription(HistoryItem.STATE_SCREEN_ON_FLAG, "screen", "S"), new BitDescription(HistoryItem.STATE_BATTERY_PLUGGED_FLAG, "plugged", "BP"), + new BitDescription(HistoryItem.STATE_SCREEN_DOZE_FLAG, "screen_doze", "Sd"), new BitDescription(HistoryItem.STATE_DATA_CONNECTION_MASK, HistoryItem.STATE_DATA_CONNECTION_SHIFT, "data_conn", "Pcn", DATA_CONNECTION_NAMES, DATA_CONNECTION_NAMES), @@ -2428,6 +2483,18 @@ public abstract class BatteryStats implements Parcelable { */ public abstract int getDischargeAmountScreenOffSinceCharge(); + /** + * Get the amount the battery has discharged while the screen was doze, + * since the last time power was unplugged. + */ + public abstract int getDischargeAmountScreenDoze(); + + /** + * Get the amount the battery has discharged while the screen was doze, + * since the last time the device was charged. + */ + public abstract int getDischargeAmountScreenDozeSinceCharge(); + /** * Returns the total, last, or current battery uptime in microseconds. * @@ -2445,7 +2512,7 @@ public abstract class BatteryStats implements Parcelable { public abstract long computeBatteryRealtime(long curTime, int which); /** - * Returns the total, last, or current battery screen off uptime in microseconds. + * Returns the total, last, or current battery screen off/doze uptime in microseconds. * * @param curTime the elapsed realtime in microseconds. * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT. @@ -2453,7 +2520,7 @@ public abstract class BatteryStats implements Parcelable { public abstract long computeBatteryScreenOffUptime(long curTime, int which); /** - * Returns the total, last, or current battery screen off realtime in microseconds. + * Returns the total, last, or current battery screen off/doze realtime in microseconds. * * @param curTime the current elapsed realtime in microseconds. * @param which one of STATS_SINCE_CHARGED, STATS_SINCE_UNPLUGGED, or STATS_CURRENT. @@ -2552,18 +2619,24 @@ public abstract class BatteryStats implements Parcelable { }; /** - * Return the counter keeping track of the amount of battery discharge while the screen was off, - * measured in micro-Ampere-hours. This will be non-zero only if the device's battery has + * Return the amount of battery discharge while the screen was off, measured in + * micro-Ampere-hours. This will be non-zero only if the device's battery has * a coulomb counter. */ - public abstract LongCounter getDischargeScreenOffCoulombCounter(); + public abstract long getMahDischargeScreenOff(int which); /** - * Return the counter keeping track of the amount of battery discharge measured in + * Return the amount of battery discharge while the screen was in doze mode, measured in * micro-Ampere-hours. This will be non-zero only if the device's battery has * a coulomb counter. */ - public abstract LongCounter getDischargeCoulombCounter(); + public abstract long getMahDischargeScreenDoze(int which); + + /** + * Return the amount of battery discharge measured in micro-Ampere-hours. This will be + * non-zero only if the device's battery has a coulomb counter. + */ + public abstract long getMahDischarge(int which); /** * Returns the estimated real battery capacity, which may be less than the capacity @@ -2618,6 +2691,16 @@ public abstract class BatteryStats implements Parcelable { public abstract Map getKernelWakelockStats(); + /** + * Returns Timers tracking the total time of each Resource Power Manager state and voter. + */ + public abstract Map getRpmStats(); + /** + * Returns Timers tracking the screen-off time of each Resource Power Manager state and voter. + */ + public abstract Map getScreenOffRpmStats(); + + public abstract LongSparseArray getKernelMemoryStats(); public abstract void writeToParcelWithoutUids(Parcel out, int flags); @@ -2971,71 +3054,104 @@ public abstract class BatteryStats implements Parcelable { final long idleTimeMs = counter.getIdleTimeCounter().getCountLocked(which); final long rxTimeMs = counter.getRxTimeCounter().getCountLocked(which); final long powerDrainMaMs = counter.getPowerCounter().getCountLocked(which); + // Battery real time + final long totalControllerActivityTimeMs + = computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which) / 1000; long totalTxTimeMs = 0; for (LongCounter txState : counter.getTxTimeCounters()) { totalTxTimeMs += txState.getCountLocked(which); } + final long sleepTimeMs + = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + totalTxTimeMs); - final long totalTimeMs = idleTimeMs + rxTimeMs + totalTxTimeMs; + sb.setLength(0); + sb.append(prefix); + sb.append(" "); + sb.append(controllerName); + sb.append(" Sleep time: "); + formatTimeMs(sb, sleepTimeMs); + sb.append("("); + sb.append(formatRatioLocked(sleepTimeMs, totalControllerActivityTimeMs)); + sb.append(")"); + pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Idle time: "); formatTimeMs(sb, idleTimeMs); sb.append("("); - sb.append(formatRatioLocked(idleTimeMs, totalTimeMs)); + sb.append(formatRatioLocked(idleTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Rx time: "); formatTimeMs(sb, rxTimeMs); sb.append("("); - sb.append(formatRatioLocked(rxTimeMs, totalTimeMs)); + sb.append(formatRatioLocked(rxTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); sb.setLength(0); sb.append(prefix); - sb.append(" "); + sb.append(" "); sb.append(controllerName); sb.append(" Tx time: "); - formatTimeMs(sb, totalTxTimeMs); - sb.append("("); - sb.append(formatRatioLocked(totalTxTimeMs, totalTimeMs)); - sb.append(")"); - pw.println(sb.toString()); - final int numTxLvls = counter.getTxTimeCounters().length; + String [] powerLevel; + switch(controllerName) { + case "Cellular": + powerLevel = new String[] { + " less than 0dBm: ", + " 0dBm to 8dBm: ", + " 8dBm to 15dBm: ", + " 15dBm to 20dBm: ", + " above 20dBm: "}; + break; + default: + powerLevel = new String[] {"[0]", "[1]", "[2]", "[3]", "[4]"}; + break; + } + final int numTxLvls = Math.min(counter.getTxTimeCounters().length, powerLevel.length); if (numTxLvls > 1) { + pw.println(sb.toString()); for (int lvl = 0; lvl < numTxLvls; lvl++) { final long txLvlTimeMs = counter.getTxTimeCounters()[lvl].getCountLocked(which); sb.setLength(0); sb.append(prefix); - sb.append(" ["); - sb.append(lvl); - sb.append("] "); + sb.append(" "); + sb.append(powerLevel[lvl]); + sb.append(" "); formatTimeMs(sb, txLvlTimeMs); sb.append("("); - sb.append(formatRatioLocked(txLvlTimeMs, totalTxTimeMs)); + sb.append(formatRatioLocked(txLvlTimeMs, totalControllerActivityTimeMs)); sb.append(")"); pw.println(sb.toString()); } + } else { + final long txLvlTimeMs = counter.getTxTimeCounters()[0].getCountLocked(which); + formatTimeMs(sb, txLvlTimeMs); + sb.append("("); + sb.append(formatRatioLocked(txLvlTimeMs, totalControllerActivityTimeMs)); + sb.append(")"); + pw.println(sb.toString()); } - sb.setLength(0); - sb.append(prefix); - sb.append(" "); - sb.append(controllerName); - sb.append(" Power drain: ").append( + if (powerDrainMaMs > 0) { + sb.setLength(0); + sb.append(prefix); + sb.append(" "); + sb.append(controllerName); + sb.append(" Battery drain: ").append( BatteryStatsHelper.makemAh(powerDrainMaMs / (double) (1000*60*60))); - sb.append("mAh"); - pw.println(sb.toString()); + sb.append("mAh"); + pw.println(sb.toString()); + } } /** @@ -3064,6 +3180,7 @@ public abstract class BatteryStats implements Parcelable { final long totalRealtime = computeRealtime(rawRealtime, which); final long totalUptime = computeUptime(rawUptime, which); final long screenOnTime = getScreenOnTime(rawRealtime, which); + final long screenDozeTime = getScreenDozeTime(rawRealtime, which); final long interactiveTime = getInteractiveTime(rawRealtime, which); final long powerSaveModeEnabledTime = getPowerSaveModeEnabledTime(rawRealtime, which); final long deviceIdleModeLightTime = getDeviceIdleModeTime(DEVICE_IDLE_MODE_LIGHT, @@ -3076,9 +3193,9 @@ public abstract class BatteryStats implements Parcelable { rawRealtime, which); final int connChanges = getNumConnectivityChange(which); final long phoneOnTime = getPhoneOnTime(rawRealtime, which); - final long dischargeCount = getDischargeCoulombCounter().getCountLocked(which); - final long dischargeScreenOffCount = getDischargeScreenOffCoulombCounter() - .getCountLocked(which); + final long dischargeCount = getMahDischarge(which); + final long dischargeScreenOffCount = getMahDischargeScreenOff(which); + final long dischargeScreenDozeCount = getMahDischargeScreenDoze(which); final StringBuilder sb = new StringBuilder(128); @@ -3095,7 +3212,8 @@ public abstract class BatteryStats implements Parcelable { getStartClockTime(), whichBatteryScreenOffRealtime / 1000, whichBatteryScreenOffUptime / 1000, getEstimatedBatteryCapacity(), - getMinLearnedBatteryCapacity(), getMaxLearnedBatteryCapacity()); + getMinLearnedBatteryCapacity(), getMaxLearnedBatteryCapacity(), + screenDozeTime / 1000); // Calculate wakelock times across all uids. @@ -3247,13 +3365,15 @@ public abstract class BatteryStats implements Parcelable { getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff(), - dischargeCount / 1000, dischargeScreenOffCount / 1000); + dischargeCount / 1000, dischargeScreenOffCount / 1000, + getDischargeAmountScreenDoze(), dischargeScreenDozeCount / 1000); } else { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getLowDischargeAmountSinceCharge(), getHighDischargeAmountSinceCharge(), getDischargeAmountScreenOnSinceCharge(), getDischargeAmountScreenOffSinceCharge(), - dischargeCount / 1000, dischargeScreenOffCount / 1000); + dischargeCount / 1000, dischargeScreenOffCount / 1000, + getDischargeAmountScreenDozeSinceCharge(), dischargeScreenDozeCount / 1000); } if (reqUid < 0) { @@ -3279,6 +3399,30 @@ public abstract class BatteryStats implements Parcelable { } } + final Map rpmStats = getRpmStats(); + final Map screenOffRpmStats = getScreenOffRpmStats(); + if (rpmStats.size() > 0) { + for (Map.Entry ent : rpmStats.entrySet()) { + sb.setLength(0); + Timer totalTimer = ent.getValue(); + long timeMs = (totalTimer.getTotalTimeLocked(rawRealtime, which) + 500) / 1000; + int count = totalTimer.getCountLocked(which); + Timer screenOffTimer = screenOffRpmStats.get(ent.getKey()); + long screenOffTimeMs = screenOffTimer != null + ? (screenOffTimer.getTotalTimeLocked(rawRealtime, which) + 500) / 1000 : 0; + int screenOffCount = screenOffTimer != null + ? screenOffTimer.getCountLocked(which) : 0; + if (SCREEN_OFF_RPM_STATS_ENABLED) { + dumpLine(pw, 0 /* uid */, category, RESOURCE_POWER_MANAGER_DATA, + "\"" + ent.getKey() + "\"", timeMs, count, screenOffTimeMs, + screenOffCount); + } else { + dumpLine(pw, 0 /* uid */, category, RESOURCE_POWER_MANAGER_DATA, + "\"" + ent.getKey() + "\"", timeMs, count); + } + } + } + final BatteryStatsHelper helper = new BatteryStatsHelper(context, false, wifiOnly); helper.create(this); helper.refreshStats(which, UserHandle.USER_ALL); @@ -3521,6 +3665,12 @@ public abstract class BatteryStats implements Parcelable { if (name.indexOf(',') >= 0) { name = name.replace(',', '_'); } + if (name.indexOf('\n') >= 0) { + name = name.replace('\n', '_'); + } + if (name.indexOf('\r') >= 0) { + name = name.replace('\r', '_'); + } dumpLine(pw, uid, category, WAKELOCK_DATA, name, sb.toString()); } } @@ -3557,6 +3707,20 @@ public abstract class BatteryStats implements Parcelable { } } + final ArrayMap completions = u.getJobCompletionStats(); + for (int ic=completions.size()-1; ic>=0; ic--) { + SparseIntArray types = completions.valueAt(ic); + if (types != null) { + dumpLine(pw, uid, category, JOB_COMPLETION_DATA, + "\"" + completions.keyAt(ic) + "\"", + types.get(JobParameters.REASON_CANCELED, 0), + types.get(JobParameters.REASON_CONSTRAINTS_NOT_SATISFIED, 0), + types.get(JobParameters.REASON_PREEMPT, 0), + types.get(JobParameters.REASON_TIMEOUT, 0), + types.get(JobParameters.REASON_DEVICE_IDLE, 0)); + } + } + dumpTimer(pw, uid, category, FLASHLIGHT_DATA, u.getFlashlightTurnedOnTimer(), rawRealtime, which); dumpTimer(pw, uid, category, CAMERA_DATA, u.getCameraTurnedOnTimer(), @@ -3593,7 +3757,10 @@ public abstract class BatteryStats implements Parcelable { dumpTimer(pw, uid, category, VIBRATOR_DATA, u.getVibratorOnTimer(), rawRealtime, which); - dumpTimer(pw, uid, category, FOREGROUND_DATA, u.getForegroundActivityTimer(), + dumpTimer(pw, uid, category, FOREGROUND_ACTIVITY_DATA, u.getForegroundActivityTimer(), + rawRealtime, which); + + dumpTimer(pw, uid, category, FOREGROUND_SERVICE_DATA, u.getForegroundServiceTimer(), rawRealtime, which); final Object[] stateTimes = new Object[Uid.NUM_PROCESS_STATE]; @@ -3614,25 +3781,29 @@ public abstract class BatteryStats implements Parcelable { 0 /* old cpu power, keep for compatibility */); } - final long[] cpuFreqTimeMs = u.getCpuFreqTimes(which); - // If total cpuFreqTimes is null, then we don't need to check for screenOffCpuFreqTimes. - if (cpuFreqTimeMs != null) { - sb.setLength(0); - for (int i = 0; i < cpuFreqTimeMs.length; ++i) { - sb.append((i == 0 ? "" : ",") + cpuFreqTimeMs[i]); - } - final long[] screenOffCpuFreqTimeMs = u.getScreenOffCpuFreqTimes(which); - if (screenOffCpuFreqTimeMs != null) { - for (int i = 0; i < screenOffCpuFreqTimeMs.length; ++i) { - sb.append("," + screenOffCpuFreqTimeMs[i]); - } - } else { + // If the cpuFreqs is null, then don't bother checking for cpu freq times. + if (cpuFreqs != null) { + final long[] cpuFreqTimeMs = u.getCpuFreqTimes(which); + // If total cpuFreqTimes is null, then we don't need to check for + // screenOffCpuFreqTimes. + if (cpuFreqTimeMs != null && cpuFreqTimeMs.length == cpuFreqs.length) { + sb.setLength(0); for (int i = 0; i < cpuFreqTimeMs.length; ++i) { - sb.append(",0"); + sb.append((i == 0 ? "" : ",") + cpuFreqTimeMs[i]); } + final long[] screenOffCpuFreqTimeMs = u.getScreenOffCpuFreqTimes(which); + if (screenOffCpuFreqTimeMs != null) { + for (int i = 0; i < screenOffCpuFreqTimeMs.length; ++i) { + sb.append("," + screenOffCpuFreqTimeMs[i]); + } + } else { + for (int i = 0; i < cpuFreqTimeMs.length; ++i) { + sb.append(",0"); + } + } + dumpLine(pw, uid, category, CPU_TIMES_AT_FREQ_DATA, UID_TIMES_TYPE_ALL, + cpuFreqTimeMs.length, sb.toString()); } - dumpLine(pw, uid, category, CPU_TIMES_AT_FREQ_DATA, UID_TIMES_TYPE_ALL, - cpuFreqTimeMs.length, sb.toString()); } final ArrayMap processStats @@ -3732,6 +3903,7 @@ public abstract class BatteryStats implements Parcelable { which); final long batteryTimeRemaining = computeBatteryTimeRemaining(rawRealtime); final long chargeTimeRemaining = computeChargeTimeRemaining(rawRealtime); + final long screenDozeTime = getScreenDozeTime(rawRealtime, which); final StringBuilder sb = new StringBuilder(128); @@ -3769,25 +3941,35 @@ public abstract class BatteryStats implements Parcelable { sb.setLength(0); sb.append(prefix); - sb.append(" Time on battery: "); - formatTimeMs(sb, whichBatteryRealtime / 1000); sb.append("("); - sb.append(formatRatioLocked(whichBatteryRealtime, totalRealtime)); - sb.append(") realtime, "); - formatTimeMs(sb, whichBatteryUptime / 1000); - sb.append("("); sb.append(formatRatioLocked(whichBatteryUptime, totalRealtime)); - sb.append(") uptime"); + sb.append(" Time on battery: "); + formatTimeMs(sb, whichBatteryRealtime / 1000); sb.append("("); + sb.append(formatRatioLocked(whichBatteryRealtime, totalRealtime)); + sb.append(") realtime, "); + formatTimeMs(sb, whichBatteryUptime / 1000); + sb.append("("); sb.append(formatRatioLocked(whichBatteryUptime, whichBatteryRealtime)); + sb.append(") uptime"); pw.println(sb.toString()); + sb.setLength(0); sb.append(prefix); - sb.append(" Time on battery screen off: "); - formatTimeMs(sb, whichBatteryScreenOffRealtime / 1000); sb.append("("); - sb.append(formatRatioLocked(whichBatteryScreenOffRealtime, totalRealtime)); - sb.append(") realtime, "); - formatTimeMs(sb, whichBatteryScreenOffUptime / 1000); - sb.append("("); - sb.append(formatRatioLocked(whichBatteryScreenOffUptime, totalRealtime)); - sb.append(") uptime"); + sb.append(" Time on battery screen off: "); + formatTimeMs(sb, whichBatteryScreenOffRealtime / 1000); sb.append("("); + sb.append(formatRatioLocked(whichBatteryScreenOffRealtime, whichBatteryRealtime)); + sb.append(") realtime, "); + formatTimeMs(sb, whichBatteryScreenOffUptime / 1000); + sb.append("("); + sb.append(formatRatioLocked(whichBatteryScreenOffUptime, whichBatteryRealtime)); + sb.append(") uptime"); pw.println(sb.toString()); + + sb.setLength(0); + sb.append(prefix); + sb.append(" Time on battery screen doze: "); + formatTimeMs(sb, screenDozeTime / 1000); sb.append("("); + sb.append(formatRatioLocked(screenDozeTime, whichBatteryRealtime)); + sb.append(")"); + pw.println(sb.toString()); + sb.setLength(0); sb.append(prefix); sb.append(" Total run time: "); @@ -3811,8 +3993,7 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } - final LongCounter dischargeCounter = getDischargeCoulombCounter(); - final long dischargeCount = dischargeCounter.getCountLocked(which); + final long dischargeCount = getMahDischarge(which); if (dischargeCount >= 0) { sb.setLength(0); sb.append(prefix); @@ -3822,8 +4003,7 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } - final LongCounter dischargeScreenOffCounter = getDischargeScreenOffCoulombCounter(); - final long dischargeScreenOffCount = dischargeScreenOffCounter.getCountLocked(which); + final long dischargeScreenOffCount = getMahDischargeScreenOff(which); if (dischargeScreenOffCount >= 0) { sb.setLength(0); sb.append(prefix); @@ -3833,7 +4013,18 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } - final long dischargeScreenOnCount = dischargeCount - dischargeScreenOffCount; + final long dischargeScreenDozeCount = getMahDischargeScreenDoze(which); + if (dischargeScreenDozeCount >= 0) { + sb.setLength(0); + sb.append(prefix); + sb.append(" Screen doze discharge: "); + sb.append(BatteryStatsHelper.makemAh(dischargeScreenDozeCount / 1000.0)); + sb.append(" mAh"); + pw.println(sb.toString()); + } + + final long dischargeScreenOnCount = + dischargeCount - dischargeScreenOffCount - dischargeScreenDozeCount; if (dischargeScreenOnCount >= 0) { sb.setLength(0); sb.append(prefix); @@ -4028,51 +4219,50 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } + pw.println(""); pw.print(prefix); - pw.print(" Mobile total received: "); pw.print(formatBytesLocked(mobileRxTotalBytes)); - pw.print(", sent: "); pw.print(formatBytesLocked(mobileTxTotalBytes)); - pw.print(" (packets received "); pw.print(mobileRxTotalPackets); - pw.print(", sent "); pw.print(mobileTxTotalPackets); pw.println(")"); sb.setLength(0); sb.append(prefix); - sb.append(" Phone signal levels:"); - didOne = false; - for (int i=0; i mMemoryStats = getKernelMemoryStats(); - pw.println("Memory Stats"); - for (int i = 0; i < mMemoryStats.size(); i++) { - sb.setLength(0); - sb.append("Bandwidth "); - sb.append(mMemoryStats.keyAt(i)); - sb.append(" Time "); - sb.append(mMemoryStats.valueAt(i).getTotalTimeLocked(rawRealtime, which)); - pw.println(sb.toString()); + if (mMemoryStats.size() > 0) { + pw.println(" Memory Stats"); + for (int i = 0; i < mMemoryStats.size(); i++) { + sb.setLength(0); + sb.append(" Bandwidth "); + sb.append(mMemoryStats.keyAt(i)); + sb.append(" Time "); + sb.append(mMemoryStats.valueAt(i).getTotalTimeLocked(rawRealtime, which)); + pw.println(sb.toString()); + } + pw.println(); + } + + final Map rpmStats = getRpmStats(); + if (rpmStats.size() > 0) { + pw.print(prefix); pw.println(" Resource Power Manager Stats"); + if (rpmStats.size() > 0) { + for (Map.Entry ent : rpmStats.entrySet()) { + final String timerName = ent.getKey(); + final Timer timer = ent.getValue(); + printTimer(pw, sb, timer, rawRealtime, which, prefix, timerName); + } + } + pw.println(); + } + if (SCREEN_OFF_RPM_STATS_ENABLED) { + final Map screenOffRpmStats = getScreenOffRpmStats(); + if (screenOffRpmStats.size() > 0) { + pw.print(prefix); + pw.println(" Resource Power Manager Stats for when screen was off"); + if (screenOffRpmStats.size() > 0) { + for (Map.Entry ent : screenOffRpmStats.entrySet()) { + final String timerName = ent.getKey(); + final Timer timer = ent.getValue(); + printTimer(pw, sb, timer, rawRealtime, which, prefix, timerName); + } + } + pw.println(); + } } final long[] cpuFreqs = getCpuFreqs(); if (cpuFreqs != null) { sb.setLength(0); - sb.append("CPU freqs:"); + sb.append(" CPU freqs:"); for (int i = 0; i < cpuFreqs.length; ++i) { sb.append(" " + cpuFreqs[i]); } pw.println(sb.toString()); + pw.println(); } for (int iu=0; iu completions = u.getJobCompletionStats(); + for (int ic=completions.size()-1; ic>=0; ic--) { + SparseIntArray types = completions.valueAt(ic); + if (types != null) { + pw.print(prefix); + pw.print(" Job Completions "); + pw.print(completions.keyAt(ic)); + pw.print(":"); + for (int it=0; it apps, int flags, long histStart) { diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 86e58291edc6a7ea261b46bc6cbfaffb13afc01f..1b707bdf73a95508e59aec4b356c6c03c5af46bf 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -460,6 +460,11 @@ public class Binder implements IBinder { * *

      If you want to call this, call transact(). * + *

      Implementations that are returning a result should generally use + * {@link Parcel#writeNoException() Parcel.writeNoException} and + * {@link Parcel#writeException(Exception) Parcel.writeException} to propagate + * exceptions back to the caller.

      + * * @param code The action to perform. This should * be a number between {@link #FIRST_CALL_TRANSACTION} and * {@link #LAST_CALL_TRANSACTION}. @@ -716,13 +721,6 @@ public class Binder implements IBinder { reply.writeException(e); } res = true; - } catch (OutOfMemoryError e) { - // Unconditionally log this, since this is generally unrecoverable. - Log.e(TAG, "Caught an OutOfMemoryError from the binder stub implementation.", e); - RuntimeException re = new RuntimeException("Out of memory", e); - reply.setDataPosition(0); - reply.writeException(re); - res = true; } finally { if (tracingEnabled) { Trace.traceEnd(Trace.TRACE_TAG_ALWAYS); diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index a2fb9db8c64bb454141a9973274838b00aa14838..062799891ffdd1251b65966566fc8f586a39ca72 100644 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -757,8 +757,23 @@ public class Build { /** * O. + * + *

      Applications targeting this or a later release will get these + * new changes in behavior:

      + *
        + *
      • {@link android.R.attr#focusable} defaults to a new state ({@code auto}) where it will + * inherit the value of {@link android.R.attr#clickable} unless explicitly overridden.
      • + *
      • A default theme-appropriate focus-state highlight will be supplied to all Views + * which don't provide a focus-state drawable themselves. This can be disabled by setting + * {@link android.R.attr#defaultFocusHighlightEnabled} to false.
      • + *
      */ public static final int O = 26; + + /** + * O MR1. + */ + public static final int O_MR1 = 27; } /** The type of build, like "user" or "eng". */ diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java index ec01364b63b48684e96b445d4ece7aa320e39287..c58153aa34d1aace4cb0e7f3e145dadad112981f 100644 --- a/core/java/android/os/Bundle.java +++ b/core/java/android/os/Bundle.java @@ -22,6 +22,8 @@ import android.util.Size; import android.util.SizeF; import android.util.SparseArray; +import com.android.internal.annotations.VisibleForTesting; + import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -32,15 +34,29 @@ import java.util.List; * @see PersistableBundle */ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { - private static final int FLAG_HAS_FDS = 1 << 8; - private static final int FLAG_HAS_FDS_KNOWN = 1 << 9; - private static final int FLAG_ALLOW_FDS = 1 << 10; + @VisibleForTesting + static final int FLAG_HAS_FDS = 1 << 8; + + @VisibleForTesting + static final int FLAG_HAS_FDS_KNOWN = 1 << 9; + + @VisibleForTesting + static final int FLAG_ALLOW_FDS = 1 << 10; public static final Bundle EMPTY; + /** + * Special extras used to denote extras have been stripped off. + * @hide + */ + public static final Bundle STRIPPED; + static { EMPTY = new Bundle(); EMPTY.mMap = ArrayMap.EMPTY; + + STRIPPED = new Bundle(); + STRIPPED.putInt("STRIPPED", 1); } /** @@ -56,20 +72,42 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { * will be unparcelled on first contact, using the assigned ClassLoader. * * @param parcelledData a Parcel containing a Bundle + * + * @hide */ - Bundle(Parcel parcelledData) { + @VisibleForTesting + public Bundle(Parcel parcelledData) { super(parcelledData); - mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; - if (mParcelledData.hasFileDescriptors()) { - mFlags |= FLAG_HAS_FDS; - } + mFlags = FLAG_ALLOW_FDS; + maybePrefillHasFds(); } - /* package */ Bundle(Parcel parcelledData, int length) { + /** + * Constructor from a parcel for when the length is known *and is not stored in the parcel.* + * The other constructor that takes a parcel assumes the length is in the parcel. + * + * @hide + */ + @VisibleForTesting + public Bundle(Parcel parcelledData, int length) { super(parcelledData, length); - mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; - if (mParcelledData.hasFileDescriptors()) { - mFlags |= FLAG_HAS_FDS; + mFlags = FLAG_ALLOW_FDS; + maybePrefillHasFds(); + } + + /** + * If {@link #mParcelledData} is not null, copy the HAS FDS bit from it because it's fast. + * Otherwise (if {@link #mParcelledData} is already null), leave {@link #FLAG_HAS_FDS_KNOWN} + * unset, because scanning a map is slower. We'll do it lazily in + * {@link #hasFileDescriptors()}. + */ + private void maybePrefillHasFds() { + if (mParcelledData != null) { + if (mParcelledData.hasFileDescriptors()) { + mFlags |= FLAG_HAS_FDS | FLAG_HAS_FDS_KNOWN; + } else { + mFlags |= FLAG_HAS_FDS_KNOWN; + } } } @@ -1204,10 +1242,8 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable { */ public void readFromParcel(Parcel parcel) { super.readFromParcelInner(parcel); - mFlags = FLAG_HAS_FDS_KNOWN | FLAG_ALLOW_FDS; - if (mParcelledData.hasFileDescriptors()) { - mFlags |= FLAG_HAS_FDS; - } + mFlags = FLAG_ALLOW_FDS; + maybePrefillHasFds(); } @Override diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 3286e6ec6ef99930381888f7038585f391b5f3aa..2acf36fed85f26d4ed9a7009019aabab6e60ef8b 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -1748,22 +1748,26 @@ public final class Debug public static final int MEMINFO_SHMEM = 4; /** @hide */ public static final int MEMINFO_SLAB = 5; + /** @hide */ + public static final int MEMINFO_SLAB_RECLAIMABLE = 6; + /** @hide */ + public static final int MEMINFO_SLAB_UNRECLAIMABLE = 7; /** @hide */ - public static final int MEMINFO_SWAP_TOTAL = 6; + public static final int MEMINFO_SWAP_TOTAL = 8; /** @hide */ - public static final int MEMINFO_SWAP_FREE = 7; + public static final int MEMINFO_SWAP_FREE = 9; /** @hide */ - public static final int MEMINFO_ZRAM_TOTAL = 8; + public static final int MEMINFO_ZRAM_TOTAL = 10; /** @hide */ - public static final int MEMINFO_MAPPED = 9; + public static final int MEMINFO_MAPPED = 11; /** @hide */ - public static final int MEMINFO_VM_ALLOC_USED = 10; + public static final int MEMINFO_VM_ALLOC_USED = 12; /** @hide */ - public static final int MEMINFO_PAGE_TABLES = 11; + public static final int MEMINFO_PAGE_TABLES = 13; /** @hide */ - public static final int MEMINFO_KERNEL_STACK = 12; + public static final int MEMINFO_KERNEL_STACK = 14; /** @hide */ - public static final int MEMINFO_COUNT = 13; + public static final int MEMINFO_COUNT = 15; /** * Retrieves /proc/meminfo. outSizes is filled with fields @@ -1860,6 +1864,13 @@ public final class Debug */ public static native void dumpNativeHeap(FileDescriptor fd); + /** + * Writes malloc info data to the specified file descriptor. + * + * @hide + */ + public static native void dumpNativeMallocInfo(FileDescriptor fd); + /** * Returns a count of the extant instances of a class. * diff --git a/core/java/android/os/Handler.java b/core/java/android/os/Handler.java index b69a23aa585405319285b7f92b2c7ea98840f4fe..3ca1005b8c98ca0db62ef8390d81091a440b2653 100644 --- a/core/java/android/os/Handler.java +++ b/core/java/android/os/Handler.java @@ -76,11 +76,12 @@ public class Handler { /** * Callback interface you can use when instantiating a Handler to avoid * having to implement your own subclass of Handler. - * - * @param msg A {@link android.os.Message Message} object - * @return True if no further handling is desired */ public interface Callback { + /** + * @param msg A {@link android.os.Message Message} object + * @return True if no further handling is desired + */ public boolean handleMessage(Message msg); } diff --git a/core/java/android/os/IBinder.java b/core/java/android/os/IBinder.java index 20d8276c895e652571f24d3d66021a0ac4fc37e5..e74b0bb9e3f0eb7ecc40b2aa82c0edb2c96d238c 100644 --- a/core/java/android/os/IBinder.java +++ b/core/java/android/os/IBinder.java @@ -156,6 +156,14 @@ public interface IBinder { * caller returns immediately, without waiting for a result from the * callee. Applies only if the caller and callee are in different * processes. + * + *

      The system provides special ordering semantics for multiple oneway calls + * being made to the same IBinder object: these calls will be dispatched in the + * other process one at a time, with the same order as the original calls. These + * are still dispatched by the IPC thread pool, so may execute on different threads, + * but the next one will not be dispatched until the previous one completes. This + * ordering is not guaranteed for calls on different IBinder objects or when mixing + * oneway and non-oneway calls on the same IBinder object.

      */ int FLAG_ONEWAY = 0x00000001; diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index 66e16a67a22b6a044ad0801c8923d541e990aa9d..a474b47c429791b56c7a0358761861af2ea906e5 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -445,4 +445,6 @@ interface INetworkManagementService int removeRoutesFromLocalNetwork(in List routes); void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges); + + boolean isNetworkRestricted(int uid); } diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl index 037cccf14615baaf5fa7d0f236b53bb68517adcd..75f7c1f58ab94816a9ba0a19857a597f9db4a83a 100644 --- a/core/java/android/os/IPowerManager.aidl +++ b/core/java/android/os/IPowerManager.aidl @@ -59,6 +59,8 @@ interface IPowerManager void setStayOnSetting(int val); void boostScreenBrightness(long time); + + // --- deprecated --- boolean isScreenBrightnessBoosted(); // temporarily overrides the screen brightness settings to allow the user to diff --git a/core/java/android/os/IThermalEventListener.aidl b/core/java/android/os/IThermalEventListener.aidl new file mode 100644 index 0000000000000000000000000000000000000000..9a6de605c5971bb1562bc75146fbd65fb6abf9a5 --- /dev/null +++ b/core/java/android/os/IThermalEventListener.aidl @@ -0,0 +1,32 @@ +/* +** Copyright 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.os; + +import android.os.Temperature; + +/** + * Listener for thermal events. + * {@hide} + */ +oneway interface IThermalEventListener { + /** + * Called when a thermal throttling start/stop event is received. + * @param temperature the temperature at which the event was generated. + */ + void notifyThrottling( + in boolean isThrottling, in Temperature temperature); +} diff --git a/core/java/android/os/IThermalService.aidl b/core/java/android/os/IThermalService.aidl new file mode 100644 index 0000000000000000000000000000000000000000..e388edaa544191b56c3137c93d324e973f1b6955 --- /dev/null +++ b/core/java/android/os/IThermalService.aidl @@ -0,0 +1,51 @@ +/* +** Copyright 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.os; + +import android.os.IThermalEventListener; +import android.os.Temperature; + +/** + * {@hide} + */ +interface IThermalService { + /** + * Register a listener for thermal events. + * @param listener the IThermalEventListener to be notified. + * {@hide} + */ + void registerThermalEventListener(in IThermalEventListener listener); + /** + * Unregister a previously-registered listener for thermal events. + * @param listener the IThermalEventListener to no longer be notified. + * {@hide} + */ + void unregisterThermalEventListener(in IThermalEventListener listener); + /** + * Send a thermal throttling start/stop notification to all listeners. + * @param temperature the temperature at which the event was generated. + * {@hide} + */ + oneway void notifyThrottling( + in boolean isThrottling, in Temperature temperature); + /** + * Return whether system performance is currently thermal throttling. + * @return true if thermal throttling is currently in effect + * {@hide} + */ + boolean isThrottling(); +} diff --git a/core/java/android/os/MemoryFile.java b/core/java/android/os/MemoryFile.java index 6cec55a4a09ebad6f48484d69c91ac1fe01124b8..ff3258f806c984b46c9b1b137c3076c33f124dc4 100644 --- a/core/java/android/os/MemoryFile.java +++ b/core/java/android/os/MemoryFile.java @@ -16,68 +16,50 @@ package android.os; -import android.util.Log; +import android.system.ErrnoException; import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.ByteBuffer; /** - * MemoryFile is a wrapper for the Linux ashmem driver. - * MemoryFiles are backed by shared memory, which can be optionally - * set to be purgeable. + * MemoryFile is a wrapper for {@link SharedMemory} which can optionally be set to purgeable. + * + * Applications should generally prefer to use {@link SharedMemory} which offers more flexible + * access & control over the shared memory region than MemoryFile does. + * * Purgeable files may have their contents reclaimed by the kernel * in low memory conditions (only if allowPurging is set to true). * After a file is purged, attempts to read or write the file will * cause an IOException to be thrown. */ -public class MemoryFile -{ +public class MemoryFile { private static String TAG = "MemoryFile"; - // mmap(2) protection flags from - private static final int PROT_READ = 0x1; - private static final int PROT_WRITE = 0x2; - - private static native FileDescriptor native_open(String name, int length) throws IOException; - // returns memory address for ashmem region - private static native long native_mmap(FileDescriptor fd, int length, int mode) - throws IOException; - private static native void native_munmap(long addr, int length) throws IOException; - private static native void native_close(FileDescriptor fd); - private static native int native_read(FileDescriptor fd, long address, byte[] buffer, - int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException; - private static native void native_write(FileDescriptor fd, long address, byte[] buffer, - int srcOffset, int destOffset, int count, boolean isUnpinned) throws IOException; - private static native void native_pin(FileDescriptor fd, boolean pin) throws IOException; + // Returns 'true' if purged, 'false' otherwise + private static native boolean native_pin(FileDescriptor fd, boolean pin) throws IOException; private static native int native_get_size(FileDescriptor fd) throws IOException; - private FileDescriptor mFD; // ashmem file descriptor - private long mAddress; // address of ashmem memory - private int mLength; // total length of our ashmem region + private SharedMemory mSharedMemory; + private ByteBuffer mMapping; private boolean mAllowPurging = false; // true if our ashmem region is unpinned /** * Allocates a new ashmem region. The region is initially not purgable. * * @param name optional name for the file (can be null). - * @param length of the memory file in bytes, must be non-negative. + * @param length of the memory file in bytes, must be positive. * @throws IOException if the memory file could not be created. */ public MemoryFile(String name, int length) throws IOException { - mLength = length; - if (length >= 0) { - mFD = native_open(name, length); - } else { - throw new IOException("Invalid length: " + length); - } - - if (length > 0) { - mAddress = native_mmap(mFD, length, PROT_READ | PROT_WRITE); - } else { - mAddress = 0; + try { + mSharedMemory = SharedMemory.create(name, length); + mMapping = mSharedMemory.mapReadWrite(); + } catch (ErrnoException ex) { + ex.rethrowAsIOException(); } } @@ -87,9 +69,7 @@ public class MemoryFile */ public void close() { deactivate(); - if (!isClosed()) { - native_close(mFD); - } + mSharedMemory.close(); } /** @@ -100,35 +80,30 @@ public class MemoryFile * @hide */ void deactivate() { - if (!isDeactivated()) { - try { - native_munmap(mAddress, mLength); - mAddress = 0; - } catch (IOException ex) { - Log.e(TAG, ex.toString()); - } + if (mMapping != null) { + SharedMemory.unmap(mMapping); + mMapping = null; } } - /** - * Checks whether the memory file has been deactivated. - */ - private boolean isDeactivated() { - return mAddress == 0; + private void checkActive() throws IOException { + if (mMapping == null) { + throw new IOException("MemoryFile has been deactivated"); + } } - /** - * Checks whether the memory file has been closed. - */ - private boolean isClosed() { - return !mFD.valid(); + private void beginAccess() throws IOException { + checkActive(); + if (mAllowPurging) { + if (native_pin(mSharedMemory.getFileDescriptor(), true)) { + throw new IOException("MemoryFile has been purged"); + } + } } - @Override - protected void finalize() { - if (!isClosed()) { - Log.e(TAG, "MemoryFile.finalize() called while ashmem still open"); - close(); + private void endAccess() throws IOException { + if (mAllowPurging) { + native_pin(mSharedMemory.getFileDescriptor(), false); } } @@ -138,14 +113,19 @@ public class MemoryFile * @return file length. */ public int length() { - return mLength; + return mSharedMemory.getSize(); } /** * Is memory file purging enabled? * * @return true if the file may be purged. + * + * @deprecated Purgable is considered generally fragile and hard to use safely. Applications + * are recommend to instead use {@link android.content.ComponentCallbacks2#onTrimMemory(int)} + * to react to memory events and release shared memory regions as appropriate. */ + @Deprecated public boolean isPurgingAllowed() { return mAllowPurging; } @@ -156,11 +136,16 @@ public class MemoryFile * @param allowPurging true if the operating system can purge the contents * of the file in low memory situations * @return previous value of allowPurging + * + * @deprecated Purgable is considered generally fragile and hard to use safely. Applications + * are recommend to instead use {@link android.content.ComponentCallbacks2#onTrimMemory(int)} + * to react to memory events and release shared memory regions as appropriate. */ + @Deprecated synchronized public boolean allowPurging(boolean allowPurging) throws IOException { boolean oldValue = mAllowPurging; if (oldValue != allowPurging) { - native_pin(mFD, !allowPurging); + native_pin(mSharedMemory.getFileDescriptor(), !allowPurging); mAllowPurging = allowPurging; } return oldValue; @@ -197,16 +182,14 @@ public class MemoryFile */ public int readBytes(byte[] buffer, int srcOffset, int destOffset, int count) throws IOException { - if (isDeactivated()) { - throw new IOException("Can't read from deactivated memory file."); + beginAccess(); + try { + mMapping.position(srcOffset); + mMapping.get(buffer, destOffset, count); + } finally { + endAccess(); } - if (destOffset < 0 || destOffset > buffer.length || count < 0 - || count > buffer.length - destOffset - || srcOffset < 0 || srcOffset > mLength - || count > mLength - srcOffset) { - throw new IndexOutOfBoundsException(); - } - return native_read(mFD, mAddress, buffer, srcOffset, destOffset, count, mAllowPurging); + return count; } /** @@ -221,16 +204,13 @@ public class MemoryFile */ public void writeBytes(byte[] buffer, int srcOffset, int destOffset, int count) throws IOException { - if (isDeactivated()) { - throw new IOException("Can't write to deactivated memory file."); - } - if (srcOffset < 0 || srcOffset > buffer.length || count < 0 - || count > buffer.length - srcOffset - || destOffset < 0 || destOffset > mLength - || count > mLength - destOffset) { - throw new IndexOutOfBoundsException(); + beginAccess(); + try { + mMapping.position(destOffset); + mMapping.put(buffer, srcOffset, count); + } finally { + endAccess(); } - native_write(mFD, mAddress, buffer, srcOffset, destOffset, count, mAllowPurging); } /** @@ -243,7 +223,7 @@ public class MemoryFile * @hide */ public FileDescriptor getFileDescriptor() throws IOException { - return mFD; + return mSharedMemory.getFileDescriptor(); } /** @@ -266,10 +246,10 @@ public class MemoryFile @Override public int available() throws IOException { - if (mOffset >= mLength) { + if (mOffset >= mSharedMemory.getSize()) { return 0; } - return mLength - mOffset; + return mSharedMemory.getSize() - mOffset; } @Override @@ -319,8 +299,8 @@ public class MemoryFile @Override public long skip(long n) throws IOException { - if (mOffset + n > mLength) { - n = mLength - mOffset; + if (mOffset + n > mSharedMemory.getSize()) { + n = mSharedMemory.getSize() - mOffset; } mOffset += n; return n; diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 571fbcd9e96f025becee7c5409a742a7664b6f8b..fae9d5310f8ed81c2813bcf56755e853c28eed74 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -27,6 +27,7 @@ import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; +import dalvik.annotation.optimization.CriticalNative; import dalvik.annotation.optimization.FastNative; import dalvik.system.VMRuntime; @@ -260,24 +261,24 @@ public final class Parcel { // see libbinder's binder/Status.h private static final int EX_TRANSACTION_FAILED = -129; - @FastNative + @CriticalNative private static native int nativeDataSize(long nativePtr); - @FastNative + @CriticalNative private static native int nativeDataAvail(long nativePtr); - @FastNative + @CriticalNative private static native int nativeDataPosition(long nativePtr); - @FastNative + @CriticalNative private static native int nativeDataCapacity(long nativePtr); @FastNative private static native long nativeSetDataSize(long nativePtr, int size); - @FastNative + @CriticalNative private static native void nativeSetDataPosition(long nativePtr, int pos); @FastNative private static native void nativeSetDataCapacity(long nativePtr, int size); - @FastNative + @CriticalNative private static native boolean nativePushAllowFds(long nativePtr, boolean allowFds); - @FastNative + @CriticalNative private static native void nativeRestoreAllowFds(long nativePtr, boolean lastValue); private static native void nativeWriteByteArray(long nativePtr, byte[] b, int offset, int len); @@ -290,22 +291,22 @@ public final class Parcel { private static native void nativeWriteFloat(long nativePtr, float val); @FastNative private static native void nativeWriteDouble(long nativePtr, double val); - private static native void nativeWriteString(long nativePtr, String val); + static native void nativeWriteString(long nativePtr, String val); private static native void nativeWriteStrongBinder(long nativePtr, IBinder val); private static native long nativeWriteFileDescriptor(long nativePtr, FileDescriptor val); private static native byte[] nativeCreateByteArray(long nativePtr); private static native boolean nativeReadByteArray(long nativePtr, byte[] dest, int destLen); private static native byte[] nativeReadBlob(long nativePtr); - @FastNative + @CriticalNative private static native int nativeReadInt(long nativePtr); - @FastNative + @CriticalNative private static native long nativeReadLong(long nativePtr); - @FastNative + @CriticalNative private static native float nativeReadFloat(long nativePtr); - @FastNative + @CriticalNative private static native double nativeReadDouble(long nativePtr); - private static native String nativeReadString(long nativePtr); + static native String nativeReadString(long nativePtr); private static native IBinder nativeReadStrongBinder(long nativePtr); private static native FileDescriptor nativeReadFileDescriptor(long nativePtr); @@ -319,11 +320,12 @@ public final class Parcel { private static native int nativeCompareData(long thisNativePtr, long otherNativePtr); private static native long nativeAppendFrom( long thisNativePtr, long otherNativePtr, int offset, int length); - @FastNative + @CriticalNative private static native boolean nativeHasFileDescriptors(long nativePtr); private static native void nativeWriteInterfaceToken(long nativePtr, String interfaceName); private static native void nativeEnforceInterface(long nativePtr, String interfaceName); + @CriticalNative private static native long nativeGetBlobAshmemSize(long nativePtr); public final static Parcelable.Creator STRING_CREATOR @@ -336,6 +338,33 @@ public final class Parcel { } }; + /** + * @hide + */ + public static class ReadWriteHelper { + public static final ReadWriteHelper DEFAULT = new ReadWriteHelper(); + + /** + * Called when writing a string to a parcel. Subclasses wanting to write a string + * must use {@link #writeStringNoHelper(String)} to avoid + * infinity recursive calls. + */ + public void writeString(Parcel p, String s) { + nativeWriteString(p.mNativePtr, s); + } + + /** + * Called when reading a string to a parcel. Subclasses wanting to read a string + * must use {@link #readStringNoHelper()} to avoid + * infinity recursive calls. + */ + public String readString(Parcel p) { + return nativeReadString(p.mNativePtr); + } + } + + private ReadWriteHelper mReadWriteHelper = ReadWriteHelper.DEFAULT; + /** * Retrieve a new Parcel object from the pool. */ @@ -350,6 +379,7 @@ public final class Parcel { if (DEBUG_RECYCLE) { p.mStack = new RuntimeException(); } + p.mReadWriteHelper = ReadWriteHelper.DEFAULT; return p; } } @@ -383,6 +413,25 @@ public final class Parcel { } } + /** + * Set a {@link ReadWriteHelper}, which can be used to avoid having duplicate strings, for + * example. + * + * @hide + */ + public void setReadWriteHelper(ReadWriteHelper helper) { + mReadWriteHelper = helper != null ? helper : ReadWriteHelper.DEFAULT; + } + + /** + * @return whether this parcel has a {@link ReadWriteHelper}. + * + * @hide + */ + public boolean hasReadWriteHelper() { + return (mReadWriteHelper != null) && (mReadWriteHelper != ReadWriteHelper.DEFAULT); + } + /** @hide */ public static native long getGlobalAllocSize(); @@ -623,6 +672,17 @@ public final class Parcel { * growing dataCapacity() if needed. */ public final void writeString(String val) { + mReadWriteHelper.writeString(this, val); + } + + /** + * Write a string without going though a {@link ReadWriteHelper}. Subclasses of + * {@link ReadWriteHelper} must use this method instead of {@link #writeString} to avoid + * infinity recursive calls. + * + * @hide + */ + public void writeStringNoHelper(String val) { nativeWriteString(mNativePtr, val); } @@ -1780,6 +1840,7 @@ public final class Parcel { *
    • {@link IllegalStateException} *
    • {@link NullPointerException} *
    • {@link SecurityException} + *
    • {@link UnsupportedOperationException} *
    • {@link NetworkOnMainThreadException} *
    * @@ -1994,6 +2055,17 @@ public final class Parcel { * Read a string value from the parcel at the current dataPosition(). */ public final String readString() { + return mReadWriteHelper.readString(this); + } + + /** + * Read a string without going though a {@link ReadWriteHelper}. Subclasses of + * {@link ReadWriteHelper} must use this method instead of {@link #readString} to avoid + * infinity recursive calls. + * + * @hide + */ + public String readStringNoHelper() { return nativeReadString(mNativePtr); } @@ -2994,6 +3066,7 @@ public final class Parcel { if (mOwnsNativeParcelObject) { updateNativeSize(nativeFreeBuffer(mNativePtr)); } + mReadWriteHelper = ReadWriteHelper.DEFAULT; } private void destroy() { @@ -3004,6 +3077,7 @@ public final class Parcel { } mNativePtr = 0; } + mReadWriteHelper = null; } @Override diff --git a/core/java/android/os/ParcelableException.java b/core/java/android/os/ParcelableException.java index d84d62997d93910ac888a812c580676bb18612b4..7f71905d7f280954cb90d2b51dc4c595669a66c0 100644 --- a/core/java/android/os/ParcelableException.java +++ b/core/java/android/os/ParcelableException.java @@ -52,10 +52,12 @@ public final class ParcelableException extends RuntimeException implements Parce final String msg = in.readString(); try { final Class clazz = Class.forName(name, true, Parcelable.class.getClassLoader()); - return (Throwable) clazz.getConstructor(String.class).newInstance(msg); + if (Throwable.class.isAssignableFrom(clazz)) { + return (Throwable) clazz.getConstructor(String.class).newInstance(msg); + } } catch (ReflectiveOperationException e) { - throw new RuntimeException(name + ": " + msg); } + return new RuntimeException(name + ": " + msg); } /** {@hide} */ diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index a85ed9c0ce346d07f119b6d621ed93919cd340d7..960c9f5cf22c77f73f1c1bc9a0e391458f77f4a7 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -23,6 +23,7 @@ import android.annotation.SystemApi; import android.annotation.SystemService; import android.content.Context; import android.util.Log; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -265,7 +266,13 @@ public final class PowerManager { * {@link #PROXIMITY_SCREEN_OFF_WAKE_LOCK} wake lock until the proximity sensor * indicates that an object is not in close proximity. */ - public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1; + public static final int RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY = 1 << 0; + + /** + * Flag for {@link WakeLock#release(int)} when called due to timeout. + * @hide + */ + public static final int RELEASE_FLAG_TIMEOUT = 1 << 16; /** * Brightness value for fully on. @@ -848,15 +855,13 @@ public final class PowerManager { * to {@link #boostScreenBrightness(long)}. * @return {@code True} if the screen brightness is currently boosted. {@code False} otherwise. * + * @deprecated This call is rarely used and will be phased out soon. * @hide + * @removed */ - @SystemApi + @SystemApi @Deprecated public boolean isScreenBrightnessBoosted() { - try { - return mService.isScreenBrightnessBoosted(); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } + return false; } /** @@ -1216,9 +1221,11 @@ public final class PowerManager { * Intent that is broadcast when the state of {@link #isScreenBrightnessBoosted()} has changed. * This broadcast is only sent to registered receivers. * + * @deprecated This intent is rarely used and will be phased out soon. * @hide + * @removed **/ - @SystemApi + @SystemApi @Deprecated public static final String ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED = "android.os.action.SCREEN_BRIGHTNESS_BOOST_CHANGED"; @@ -1243,7 +1250,8 @@ public final class PowerManager { private String mTag; private final String mPackageName; private final IBinder mToken; - private int mCount; + private int mInternalCount; + private int mExternalCount; private boolean mRefCounted = true; private boolean mHeld; private WorkSource mWorkSource; @@ -1252,7 +1260,7 @@ public final class PowerManager { private final Runnable mReleaser = new Runnable() { public void run() { - release(); + release(RELEASE_FLAG_TIMEOUT); } }; @@ -1329,7 +1337,9 @@ public final class PowerManager { } private void acquireLocked() { - if (!mRefCounted || mCount++ == 0) { + mInternalCount++; + mExternalCount++; + if (!mRefCounted || mInternalCount == 1) { // Do this even if the wake lock is already thought to be held (mHeld == true) // because non-reference counted wake locks are not always properly released. // For example, the keyguard's wake lock might be forcibly released by the @@ -1374,7 +1384,11 @@ public final class PowerManager { */ public void release(int flags) { synchronized (mToken) { - if (!mRefCounted || --mCount == 0) { + mInternalCount--; + if ((flags & RELEASE_FLAG_TIMEOUT) == 0) { + mExternalCount--; + } + if (!mRefCounted || mInternalCount == 0) { mHandler.removeCallbacks(mReleaser); if (mHeld) { Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0); @@ -1386,7 +1400,7 @@ public final class PowerManager { mHeld = false; } } - if (mCount < 0) { + if (mRefCounted && mExternalCount < 0) { throw new RuntimeException("WakeLock under-locked " + mTag); } } @@ -1470,7 +1484,7 @@ public final class PowerManager { synchronized (mToken) { return "WakeLock{" + Integer.toHexString(System.identityHashCode(this)) - + " held=" + mHeld + ", refCount=" + mCount + "}"; + + " held=" + mHeld + ", refCount=" + mInternalCount + "}"; } } diff --git a/core/res/res/values-sw380dp-land/dimens.xml b/core/java/android/os/SharedMemory.aidl similarity index 67% rename from core/res/res/values-sw380dp-land/dimens.xml rename to core/java/android/os/SharedMemory.aidl index 20eb1be0bb342dce4f52420b9468812ebaeeccbe..b7c695e5f15c5623c728df55864da9b17c2c0b6e 100644 --- a/core/res/res/values-sw380dp-land/dimens.xml +++ b/core/java/android/os/SharedMemory.aidl @@ -1,8 +1,6 @@ - - - - - 48dp - + +package android.os; + +parcelable SharedMemory; \ No newline at end of file diff --git a/core/java/android/os/SharedMemory.java b/core/java/android/os/SharedMemory.java new file mode 100644 index 0000000000000000000000000000000000000000..e6c7a1716941a64f35e08e1a7d4c3b37e70d3fb2 --- /dev/null +++ b/core/java/android/os/SharedMemory.java @@ -0,0 +1,363 @@ +/* + * 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.os; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.system.ErrnoException; +import android.system.Os; +import android.system.OsConstants; + +import dalvik.system.VMRuntime; + +import java.io.Closeable; +import java.io.FileDescriptor; +import java.nio.ByteBuffer; +import java.nio.DirectByteBuffer; +import java.nio.NioUtils; + +import sun.misc.Cleaner; + +/** + * SharedMemory enables the creation, mapping, and protection control over anonymous shared memory. + */ +public final class SharedMemory implements Parcelable, Closeable { + + private final FileDescriptor mFileDescriptor; + private final int mSize; + private final MemoryRegistration mMemoryRegistration; + private Cleaner mCleaner; + + private SharedMemory(FileDescriptor fd) { + // This constructor is only used internally so it should be impossible to hit any of the + // exceptions unless something goes horribly wrong. + if (fd == null) { + throw new IllegalArgumentException( + "Unable to create SharedMemory from a null FileDescriptor"); + } + if (!fd.valid()) { + throw new IllegalArgumentException( + "Unable to create SharedMemory from closed FileDescriptor"); + } + mFileDescriptor = fd; + mSize = nGetSize(mFileDescriptor); + if (mSize <= 0) { + throw new IllegalArgumentException("FileDescriptor is not a valid ashmem fd"); + } + + mMemoryRegistration = new MemoryRegistration(mSize); + mCleaner = Cleaner.create(mFileDescriptor, + new Closer(mFileDescriptor, mMemoryRegistration)); + } + + /** + * Creates an anonymous SharedMemory instance with the provided debug name and size. The name + * is only used for debugging purposes and can help identify what the shared memory is used + * for when inspecting memory maps for the processes that have mapped this SharedMemory + * instance. + * + * @param name The debug name to use for this SharedMemory instance. This can be null, however + * a debug name is recommended to help identify memory usage when using tools + * such as lsof or examining /proc/[pid]/maps + * @param size The size of the shared memory to create. Must be greater than 0. + * @return A SharedMemory instance of the requested size + * @throws ErrnoException if the requested allocation fails. + */ + public static @NonNull SharedMemory create(@Nullable String name, int size) + throws ErrnoException { + if (size <= 0) { + throw new IllegalArgumentException("Size must be greater than zero"); + } + return new SharedMemory(nCreate(name, size)); + } + + private void checkOpen() { + if (!mFileDescriptor.valid()) { + throw new IllegalStateException("SharedMemory is closed"); + } + } + + private static final int PROT_MASK = OsConstants.PROT_READ | OsConstants.PROT_WRITE + | OsConstants.PROT_EXEC | OsConstants.PROT_NONE; + + private static void validateProt(int prot) { + if ((prot & ~PROT_MASK) != 0) { + throw new IllegalArgumentException("Invalid prot value"); + } + } + + /** + * Sets the protection on the shared memory to the combination specified in prot, which + * is either a bitwise-or'd combination of {@link android.system.OsConstants#PROT_READ}, + * {@link android.system.OsConstants#PROT_WRITE}, {@link android.system.OsConstants#PROT_EXEC} + * from {@link android.system.OsConstants}, or {@link android.system.OsConstants#PROT_NONE}, + * to remove all further access. + * + * Note that protection can only ever be removed, not added. By default shared memory + * is created with protection set to PROT_READ | PROT_WRITE | PROT_EXEC. The protection + * passed here also only applies to any mappings created after calling this method. Existing + * mmaps of the shared memory retain whatever protection they had when they were created. + * + * A common usage of this is to share a read-only copy of the data with something else. To do + * that first create the read/write mapping with PROT_READ | PROT_WRITE, + * then call setProtect(PROT_READ) to remove write capability, then send the SharedMemory + * to another process. That process will only be able to mmap with PROT_READ. + * + * @param prot Any bitwise-or'ed combination of + * {@link android.system.OsConstants#PROT_READ}, + * {@link android.system.OsConstants#PROT_WRITE}, and + * {@link android.system.OsConstants#PROT_EXEC}; or + * {@link android.system.OsConstants#PROT_NONE} + * @return Whether or not the requested protection was applied. Returns true on success, + * false if the requested protection was broader than the existing protection. + */ + public boolean setProtect(int prot) { + checkOpen(); + validateProt(prot); + int errno = nSetProt(mFileDescriptor, prot); + return errno == 0; + } + + /** + * Returns the backing {@link FileDescriptor} for this SharedMemory object. The SharedMemory + * instance retains ownership of the FileDescriptor. + * + * This FileDescriptor is interoperable with the ASharedMemory NDK APIs. + * + * @return Returns the FileDescriptor associated with this object. + * + * @hide Exists only for MemoryFile interop + */ + public @NonNull FileDescriptor getFileDescriptor() { + return mFileDescriptor; + } + + /** + * Returns the backing native fd int for this SharedMemory object. The SharedMemory + * instance retains ownership of the fd. + * + * This fd is interoperable with the ASharedMemory NDK APIs. + * + * @return Returns the native fd associated with this object, or -1 if it is already closed. + * + * @hide Exposed for native ASharedMemory_dupFromJava() + */ + public int getFd() { + return mFileDescriptor.getInt$(); + } + + /** + * @return The size of the SharedMemory region. + */ + public int getSize() { + checkOpen(); + return mSize; + } + + /** + * Creates a read/write mapping of the entire shared memory region. This requires the the + * protection level of the shared memory is at least PROT_READ|PROT_WRITE or the map will fail. + * + * Use {@link #map(int, int, int)} to have more control over the mapping if desired. + * This is equivalent to map(OsConstants.PROT_READ | OsConstants.PROT_WRITE, 0, getSize()) + * + * @return A ByteBuffer mapping + * @throws ErrnoException if the mmap call failed. + */ + public @NonNull ByteBuffer mapReadWrite() throws ErrnoException { + return map(OsConstants.PROT_READ | OsConstants.PROT_WRITE, 0, mSize); + } + + /** + * Creates a read-only mapping of the entire shared memory region. This requires the the + * protection level of the shared memory is at least PROT_READ or the map will fail. + * + * Use {@link #map(int, int, int)} to have more control over the mapping if desired. + * This is equivalent to map(OsConstants.PROT_READ, 0, getSize()) + * + * @return A ByteBuffer mapping + * @throws ErrnoException if the mmap call failed. + */ + public @NonNull ByteBuffer mapReadOnly() throws ErrnoException { + return map(OsConstants.PROT_READ, 0, mSize); + } + + /** + * Creates an mmap of the SharedMemory with the specified prot, offset, and length. This will + * always produce a new ByteBuffer window to the backing shared memory region. Every call + * to map() may be paired with a call to {@link #unmap(ByteBuffer)} when the ByteBuffer + * returned by map() is no longer needed. + * + * @param prot A bitwise-or'd combination of PROT_READ, PROT_WRITE, PROT_EXEC, or PROT_NONE. + * @param offset The offset into the shared memory to begin mapping. Must be >= 0 and less than + * getSize(). + * @param length The length of the region to map. Must be > 0 and offset + length must not + * exceed getSize(). + * @return A ByteBuffer mapping. + * @throws ErrnoException if the mmap call failed. + */ + public @NonNull ByteBuffer map(int prot, int offset, int length) throws ErrnoException { + checkOpen(); + validateProt(prot); + if (offset < 0) { + throw new IllegalArgumentException("Offset must be >= 0"); + } + if (length <= 0) { + throw new IllegalArgumentException("Length must be > 0"); + } + if (offset + length > mSize) { + throw new IllegalArgumentException("offset + length must not exceed getSize()"); + } + long address = Os.mmap(0, length, prot, OsConstants.MAP_SHARED, mFileDescriptor, offset); + boolean readOnly = (prot & OsConstants.PROT_WRITE) == 0; + Runnable unmapper = new Unmapper(address, length, mMemoryRegistration.acquire()); + return new DirectByteBuffer(length, address, mFileDescriptor, unmapper, readOnly); + } + + /** + * Unmaps a buffer previously returned by {@link #map(int, int, int)}. This will immediately + * release the backing memory of the ByteBuffer, invalidating all references to it. Only + * call this method if there are no duplicates of the ByteBuffer in use and don't + * access the ByteBuffer after calling this method. + * + * @param buffer The buffer to unmap + */ + public static void unmap(@NonNull ByteBuffer buffer) { + if (buffer instanceof DirectByteBuffer) { + NioUtils.freeDirectBuffer(buffer); + } else { + throw new IllegalArgumentException( + "ByteBuffer wasn't created by #map(int, int, int); can't unmap"); + } + } + + /** + * Close the backing {@link FileDescriptor} of this SharedMemory instance. Note that all + * open mappings of the shared memory will remain valid and may continue to be used. The + * shared memory will not be freed until all file descriptor handles are closed and all + * memory mappings are unmapped. + */ + @Override + public void close() { + if (mCleaner != null) { + mCleaner.clean(); + mCleaner = null; + } + } + + @Override + public int describeContents() { + return CONTENTS_FILE_DESCRIPTOR; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + checkOpen(); + dest.writeFileDescriptor(mFileDescriptor); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public SharedMemory createFromParcel(Parcel source) { + FileDescriptor descriptor = source.readRawFileDescriptor(); + return new SharedMemory(descriptor); + } + + @Override + public SharedMemory[] newArray(int size) { + return new SharedMemory[size]; + } + }; + + /** + * Cleaner that closes the FD + */ + private static final class Closer implements Runnable { + private FileDescriptor mFd; + private MemoryRegistration mMemoryReference; + + private Closer(FileDescriptor fd, MemoryRegistration memoryReference) { + mFd = fd; + mMemoryReference = memoryReference; + } + + @Override + public void run() { + try { + Os.close(mFd); + } catch (ErrnoException e) { /* swallow error */ } + mMemoryReference.release(); + mMemoryReference = null; + } + } + + /** + * Cleaner that munmap regions + */ + private static final class Unmapper implements Runnable { + private long mAddress; + private int mSize; + private MemoryRegistration mMemoryReference; + + private Unmapper(long address, int size, MemoryRegistration memoryReference) { + mAddress = address; + mSize = size; + mMemoryReference = memoryReference; + } + + @Override + public void run() { + try { + Os.munmap(mAddress, mSize); + } catch (ErrnoException e) { /* swallow exception */ } + mMemoryReference.release(); + mMemoryReference = null; + } + } + + /** + * Helper class that ensures that the native allocation pressure against the VM heap stays + * active until the FD is closed as well as all mappings from that FD are closed. + */ + private static final class MemoryRegistration { + private int mSize; + private int mReferenceCount; + + private MemoryRegistration(int size) { + mSize = size; + mReferenceCount = 1; + VMRuntime.getRuntime().registerNativeAllocation(mSize); + } + + public synchronized MemoryRegistration acquire() { + mReferenceCount++; + return this; + } + + public synchronized void release() { + mReferenceCount--; + if (mReferenceCount == 0) { + VMRuntime.getRuntime().registerNativeFree(mSize); + } + } + } + + private static native FileDescriptor nCreate(String name, int size) throws ErrnoException; + private static native int nGetSize(FileDescriptor fd); + private static native int nSetProt(FileDescriptor fd, int prot); +} diff --git a/core/java/android/os/StrictMode.java b/core/java/android/os/StrictMode.java index 2b82c77d59090144fd9672ff310053fcf220fc02..3b6df5df13aa8f1b505c5fe177f7573f45b31e8c 100644 --- a/core/java/android/os/StrictMode.java +++ b/core/java/android/os/StrictMode.java @@ -16,6 +16,7 @@ package android.os; import android.animation.ValueAnimator; +import android.annotation.TestApi; import android.app.ActivityManager; import android.app.ActivityThread; import android.app.ApplicationErrorReport; @@ -124,9 +125,6 @@ public final class StrictMode { private static final String TAG = "StrictMode"; private static final boolean LOG_V = Log.isLoggable(TAG, Log.VERBOSE); - private static final boolean IS_USER_BUILD = "user".equals(Build.TYPE); - private static final boolean IS_ENG_BUILD = "eng".equals(Build.TYPE); - /** * Boolean system property to disable strict mode checks outright. * Set this to 'true' to force disable; 'false' has no effect on other @@ -343,6 +341,7 @@ public final class StrictMode { private static volatile VmPolicy sVmPolicy = VmPolicy.LAX; /** {@hide} */ + @TestApi public interface ViolationListener { public void onViolation(String message); } @@ -350,6 +349,7 @@ public final class StrictMode { private static volatile ViolationListener sListener; /** {@hide} */ + @TestApi public static void setViolationListener(ViolationListener listener) { sListener = listener; } @@ -791,7 +791,7 @@ public final class StrictMode { /** * Detect when an {@link java.io.Closeable} or other - * object with a explict termination method is finalized + * object with an explicit termination method is finalized * without having been closed. * *

    You always want to explicitly close such objects to @@ -1188,7 +1188,7 @@ public final class StrictMode { // For debug builds, log event loop stalls to dropbox for analysis. // Similar logic also appears in ActivityThread.java for system apps. - if (!doFlashes && (IS_USER_BUILD || suppress)) { + if (!doFlashes && (Build.IS_USER || suppress)) { setCloseGuardEnabled(false); return false; } @@ -1196,7 +1196,7 @@ public final class StrictMode { // Eng builds have flashes on all the time. The suppression property // overrides this, so we force the behavior only after the short-circuit // check above. - if (IS_ENG_BUILD) { + if (Build.IS_ENG) { doFlashes = true; } @@ -1205,7 +1205,7 @@ public final class StrictMode { StrictMode.DETECT_DISK_READ | StrictMode.DETECT_NETWORK; - if (!IS_USER_BUILD) { + if (!Build.IS_USER) { threadPolicyMask |= StrictMode.PENALTY_DROPBOX; } if (doFlashes) { @@ -1216,23 +1216,25 @@ public final class StrictMode { // VM Policy controls CloseGuard, detection of Activity leaks, // and instance counting. - if (IS_USER_BUILD) { + if (Build.IS_USER) { setCloseGuardEnabled(false); } else { VmPolicy.Builder policyBuilder = new VmPolicy.Builder().detectAll(); - if (!IS_ENG_BUILD) { + if (!Build.IS_ENG) { // Activity leak detection causes too much slowdown for userdebug because of the // GCs. policyBuilder = policyBuilder.disable(DETECT_VM_ACTIVITY_LEAKS); } policyBuilder = policyBuilder.penaltyDropBox(); - if (IS_ENG_BUILD) { + if (Build.IS_ENG) { policyBuilder.penaltyLog(); } // All core system components need to tag their sockets to aid // system health investigations if (android.os.Process.myUid() < android.os.Process.FIRST_APPLICATION_UID) { - policyBuilder.detectUntaggedSockets(); + policyBuilder.enable(DETECT_VM_UNTAGGED_SOCKET); + } else { + policyBuilder.disable(DETECT_VM_UNTAGGED_SOCKET); } setVmPolicy(policyBuilder.build()); setCloseGuardEnabled(vmClosableObjectLeaksEnabled()); @@ -2291,7 +2293,7 @@ public final class StrictMode { * @hide */ public static Span enterCriticalSpan(String name) { - if (IS_USER_BUILD) { + if (Build.IS_USER) { return NO_OP_SPAN; } if (name == null || name.isEmpty()) { diff --git a/core/java/android/os/SynchronousResultReceiver.java b/core/java/android/os/SynchronousResultReceiver.java index d1b6288e1b13cca27a196e97db22fcd40dcb806c..6e1d4b31517c4072d9081a71bfec36d08cb36324 100644 --- a/core/java/android/os/SynchronousResultReceiver.java +++ b/core/java/android/os/SynchronousResultReceiver.java @@ -43,9 +43,19 @@ public class SynchronousResultReceiver extends ResultReceiver { } private final CompletableFuture mFuture = new CompletableFuture<>(); + private final String mName; public SynchronousResultReceiver() { super((Handler) null); + mName = null; + } + + /** + * @param name Name for logging purposes + */ + public SynchronousResultReceiver(String name) { + super((Handler) null); + mName = name; } @Override @@ -54,6 +64,10 @@ public class SynchronousResultReceiver extends ResultReceiver { mFuture.complete(new Result(resultCode, resultData)); } + public String getName() { + return mName; + } + /** * Blocks waiting for the result from the remote client. * diff --git a/core/res/res/values-sw380dp/dimens.xml b/core/java/android/os/Temperature.aidl similarity index 65% rename from core/res/res/values-sw380dp/dimens.xml rename to core/java/android/os/Temperature.aidl index fc0e85d26bae239062694a8ee354a9f1071ebb29..708c08fbe8b06cc679bedfa625b758076b66a3aa 100644 --- a/core/res/res/values-sw380dp/dimens.xml +++ b/core/java/android/os/Temperature.aidl @@ -1,9 +1,7 @@ - - - - - 340dp - \ No newline at end of file +package android.os; + +parcelable Temperature; diff --git a/core/java/android/os/Temperature.java b/core/java/android/os/Temperature.java new file mode 100644 index 0000000000000000000000000000000000000000..3e48493a7a815b9359dcd8687ffc3d4eb67303f9 --- /dev/null +++ b/core/java/android/os/Temperature.java @@ -0,0 +1,101 @@ +/* + * 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.os; + +/** + * Temperature values used by IThermalService. + */ + +/** + * @hide + */ +public class Temperature implements Parcelable { + /* Temperature value */ + private float mValue; + /* A temperature type from HardwarePropertiesManager */ + private int mType; + + public Temperature() { + mType = Integer.MIN_VALUE; + mValue = HardwarePropertiesManager.UNDEFINED_TEMPERATURE; + } + + public Temperature(float value, int type) { + mValue = value; + mType = type; + } + + /** + * Return the temperature value. + * @return a temperature value in floating point. + */ + public float getValue() { + return mValue; + } + + /** + * Return the temperature type. + * @return a temperature type: + * HardwarePropertiesManager.DEVICE_TEMPERATURE_CPU, etc. + */ + public int getType() { + return mType; + } + + /* + * Parcel read/write code must be kept in sync with + * frameworks/native/services/thermalservice/aidl/android/os/ + * Temperature.cpp + */ + + private Temperature(Parcel p) { + readFromParcel(p); + } + + /** + * Fill in Temperature members from a Parcel. + * @param p the parceled Temperature object. + */ + public void readFromParcel(Parcel p) { + mValue = p.readFloat(); + mType = p.readInt(); + } + + @Override + public void writeToParcel(Parcel p, int flags) { + p.writeFloat(mValue); + p.writeInt(mType); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public Temperature createFromParcel(Parcel p) { + return new Temperature(p); + } + + @Override + public Temperature[] newArray(int size) { + return new Temperature[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } +} diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java index 8549cff1faad0ff4b3a38f7a347ac322f3e4f7eb..ee0b6230fadee0957845927f06aa1e7882ba7184 100644 --- a/core/java/android/os/UpdateEngine.java +++ b/core/java/android/os/UpdateEngine.java @@ -21,8 +21,6 @@ import android.os.IUpdateEngine; import android.os.IUpdateEngineCallback; import android.os.RemoteException; -import android.util.Log; - /** * UpdateEngine handles calls to the update engine which takes care of A/B OTA * updates. It wraps up the update engine Binder APIs and exposes them as @@ -90,6 +88,8 @@ public class UpdateEngine { } private IUpdateEngine mUpdateEngine; + private IUpdateEngineCallback mUpdateEngineCallback = null; + private final Object mUpdateEngineCallbackLock = new Object(); /** * Creates a new instance. @@ -107,40 +107,42 @@ public class UpdateEngine { */ @SystemApi public boolean bind(final UpdateEngineCallback callback, final Handler handler) { - IUpdateEngineCallback updateEngineCallback = new IUpdateEngineCallback.Stub() { - @Override - public void onStatusUpdate(final int status, final float percent) { - if (handler != null) { - handler.post(new Runnable() { - @Override - public void run() { - callback.onStatusUpdate(status, percent); - } - }); - } else { - callback.onStatusUpdate(status, percent); + synchronized (mUpdateEngineCallbackLock) { + mUpdateEngineCallback = new IUpdateEngineCallback.Stub() { + @Override + public void onStatusUpdate(final int status, final float percent) { + if (handler != null) { + handler.post(new Runnable() { + @Override + public void run() { + callback.onStatusUpdate(status, percent); + } + }); + } else { + callback.onStatusUpdate(status, percent); + } } - } - @Override - public void onPayloadApplicationComplete(final int errorCode) { - if (handler != null) { - handler.post(new Runnable() { - @Override - public void run() { - callback.onPayloadApplicationComplete(errorCode); - } - }); - } else { - callback.onPayloadApplicationComplete(errorCode); + @Override + public void onPayloadApplicationComplete(final int errorCode) { + if (handler != null) { + handler.post(new Runnable() { + @Override + public void run() { + callback.onPayloadApplicationComplete(errorCode); + } + }); + } else { + callback.onPayloadApplicationComplete(errorCode); + } } - } - }; + }; - try { - return mUpdateEngine.bind(updateEngineCallback); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + try { + return mUpdateEngine.bind(mUpdateEngineCallback); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } @@ -249,4 +251,23 @@ public class UpdateEngine { throw e.rethrowFromSystemServer(); } } + + /** + * Unbinds the last bound callback function. + */ + @SystemApi + public boolean unbind() { + synchronized (mUpdateEngineCallbackLock) { + if (mUpdateEngineCallback == null) { + return true; + } + try { + boolean result = mUpdateEngine.unbind(mUpdateEngineCallback); + mUpdateEngineCallback = null; + return result; + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + } } diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java index 4c04f7860cf67066e3dd367dd488b7e6413034bf..6381b56a65039999bb8e6f35a9547681eeb87cbb 100644 --- a/core/java/android/os/UserHandle.java +++ b/core/java/android/os/UserHandle.java @@ -172,6 +172,11 @@ public final class UserHandle implements Parcelable { return getUserId(Binder.getCallingUid()); } + /** @hide */ + public static @AppIdInt int getCallingAppId() { + return getAppId(Binder.getCallingUid()); + } + /** @hide */ @SystemApi public static UserHandle of(@UserIdInt int userId) { diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java index fe9e8c67e56669f09ce64982f087bee0c5ce4a64..da0ed54e003e074565a51d37017182a6e34d13e5 100644 --- a/core/java/android/os/VibrationEffect.java +++ b/core/java/android/os/VibrationEffect.java @@ -149,14 +149,43 @@ public abstract class VibrationEffect implements Parcelable { * provide a better experience than you could otherwise build using the generic building * blocks. * + * This will fallback to a generic pattern if one exists and there does not exist a + * hardware-specific implementation of the effect. + * * @param effectId The ID of the effect to perform: - * {@link #EFFECT_CLICK}, {@link #EFFECT_DOUBLE_CLICK}. + * {@link #EFFECT_CLICK}, {@link #EFFECT_DOUBLE_CLICK}, {@link #EFFECT_TICK} * * @return The desired effect. * @hide */ public static VibrationEffect get(int effectId) { - VibrationEffect effect = new Prebaked(effectId); + return get(effectId, true); + } + + /** + * Get a predefined vibration effect. + * + * Predefined effects are a set of common vibration effects that should be identical, regardless + * of the app they come from, in order to provide a cohesive experience for users across + * the entire device. They also may be custom tailored to the device hardware in order to + * provide a better experience than you could otherwise build using the generic building + * blocks. + * + * Some effects you may only want to play if there's a hardware specific implementation because + * they may, for example, be too disruptive to the user without tuning. The {@code fallback} + * parameter allows you to decide whether you want to fallback to the generic implementation or + * only play if there's a tuned, hardware specific one available. + * + * @param effectId The ID of the effect to perform: + * {@link #EFFECT_CLICK}, {@link #EFFECT_DOUBLE_CLICK}, {@link #EFFECT_TICK} + * @param fallback Whether to fallback to a generic pattern if a hardware specific + * implementation doesn't exist. + * + * @return The desired effect. + * @hide + */ + public static VibrationEffect get(int effectId, boolean fallback) { + VibrationEffect effect = new Prebaked(effectId, fallback); effect.validate(); return effect; } @@ -374,19 +403,29 @@ public abstract class VibrationEffect implements Parcelable { /** @hide */ public static class Prebaked extends VibrationEffect implements Parcelable { private int mEffectId; + private boolean mFallback; public Prebaked(Parcel in) { - this(in.readInt()); + this(in.readInt(), in.readByte() != 0); } - public Prebaked(int effectId) { + public Prebaked(int effectId, boolean fallback) { mEffectId = effectId; + mFallback = fallback; } public int getId() { return mEffectId; } + /** + * Whether the effect should fall back to a generic pattern if there's no hardware specific + * implementation of it. + */ + public boolean shouldFallback() { + return mFallback; + } + @Override public void validate() { switch (mEffectId) { @@ -406,7 +445,7 @@ public abstract class VibrationEffect implements Parcelable { return false; } VibrationEffect.Prebaked other = (VibrationEffect.Prebaked) o; - return mEffectId == other.mEffectId; + return mEffectId == other.mEffectId && mFallback == other.mFallback; } @Override @@ -416,7 +455,7 @@ public abstract class VibrationEffect implements Parcelable { @Override public String toString() { - return "Prebaked{mEffectId=" + mEffectId + "}"; + return "Prebaked{mEffectId=" + mEffectId + ", mFallback=" + mFallback + "}"; } @@ -424,6 +463,7 @@ public abstract class VibrationEffect implements Parcelable { public void writeToParcel(Parcel out, int flags) { out.writeInt(PARCEL_TOKEN_EFFECT); out.writeInt(mEffectId); + out.writeByte((byte) (mFallback ? 1 : 0)); } public static final Parcelable.Creator CREATOR = diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index f2aa113ea28e234b0f4dd939b61ac9c31996bb3b..8533c7efad84d1f91c7346ce0c27135caa81b7bb 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -118,6 +118,8 @@ public class StorageManager { public static final String PROP_SDCARDFS = "persist.sys.sdcardfs"; /** {@hide} */ public static final String PROP_VIRTUAL_DISK = "persist.sys.virtual_disk"; + /** {@hide} */ + public static final String PROP_ADOPTABLE_FBE = "persist.sys.adoptable_fbe"; /** {@hide} */ public static final String UUID_PRIVATE_INTERNAL = null; @@ -737,7 +739,7 @@ public class StorageManager { * {@link Environment#getDataDirectory()}, the returned value will be * {@link #UUID_DEFAULT}. * - * @throws IOException when the storage device at the given path isn't + * @throws IOException when the storage device hosting the given path isn't * present, or when it doesn't have a valid UUID. */ public @NonNull UUID getUuidForPath(@NonNull File path) throws IOException { @@ -769,6 +771,19 @@ public class StorageManager { throw new FileNotFoundException("Failed to find a storage device for " + volumeUuid); } + /** + * Test if the given file descriptor supports allocation of disk space using + * {@link #allocateBytes(FileDescriptor, long)}. + */ + public boolean isAllocationSupported(@NonNull FileDescriptor fd) { + try { + getUuidForPath(ParcelFileDescriptor.getFile(fd)); + return true; + } catch (IOException e) { + return false; + } + } + /** {@hide} */ public @NonNull List getVolumes() { try { @@ -1560,12 +1575,6 @@ public class StorageManager { } } - /** @removed */ - @Deprecated - public long getCacheQuotaBytes(@NonNull File path) throws IOException { - return getCacheQuotaBytes(getUuidForPath(path)); - } - /** * Return total size in bytes of all cached data belonging to the calling * app on the given storage volume. @@ -1601,36 +1610,6 @@ public class StorageManager { } } - /** @removed */ - @Deprecated - public long getCacheSizeBytes(@NonNull File path) throws IOException { - return getCacheSizeBytes(getUuidForPath(path)); - } - - /** @removed */ - @Deprecated - public long getCacheQuotaBytes() throws IOException { - return getCacheQuotaBytes(mContext.getCacheDir()); - } - - /** @removed */ - @Deprecated - public long getCacheSizeBytes() throws IOException { - return getCacheSizeBytes(mContext.getCacheDir()); - } - - /** @removed */ - @Deprecated - public long getExternalCacheQuotaBytes() throws IOException { - return getCacheQuotaBytes(mContext.getExternalCacheDir()); - } - - /** @removed */ - @Deprecated - public long getExternalCacheSizeBytes() throws IOException { - return getCacheSizeBytes(mContext.getExternalCacheDir()); - } - /** * Flag indicating that a disk space allocation request should operate in an * aggressive mode. This flag should only be rarely used in situations that @@ -1683,8 +1662,8 @@ public class StorageManager { * itself on the given storage volume. This value is typically larger than * {@link File#getUsableSpace()}, since the system may be willing to delete * cached files to satisfy an allocation request. You can then allocate - * space for yourself using {@link #allocateBytes(UUID, long, int)} or - * {@link #allocateBytes(FileDescriptor, long, int)}. + * space for yourself using {@link #allocateBytes(UUID, long)} or + * {@link #allocateBytes(FileDescriptor, long)}. *

    * This method is best used as a pre-flight check, such as deciding if there * is enough space to store an entire music album before you allocate space @@ -1711,8 +1690,8 @@ public class StorageManager { * UUID for a specific path can be obtained using * {@link #getUuidForPath(File)}. * @return the maximum number of new bytes that the calling app can allocate - * using {@link #allocateBytes(UUID, long, int)} or - * {@link #allocateBytes(FileDescriptor, long, int)}. + * using {@link #allocateBytes(UUID, long)} or + * {@link #allocateBytes(FileDescriptor, long)}. * @throws IOException when the storage device isn't present, or when it * doesn't support allocating space. */ @@ -1739,26 +1718,17 @@ public class StorageManager { } } - /** @removed */ - @Deprecated - @WorkerThread - @SuppressLint("Doclava125") - public long getAllocatableBytes(@NonNull File path, - @RequiresPermission @AllocateFlags int flags) throws IOException { - return getAllocatableBytes(getUuidForPath(path), flags); - } - /** * Allocate the requested number of bytes for your application to use on the * given storage volume. This will cause the system to delete any cached * files necessary to satisfy your request. *

    * Attempts to allocate disk space beyond the value returned by - * {@link #getAllocatableBytes(UUID, int)} will fail. + * {@link #getAllocatableBytes(UUID)} will fail. *

    * Since multiple apps can be running simultaneously, this method may be * subject to race conditions. If possible, consider using - * {@link #allocateBytes(FileDescriptor, long, int)} which will guarantee + * {@link #allocateBytes(FileDescriptor, long)} which will guarantee * that bytes are allocated to an opened file. *

    * If you're progressively allocating an unbounded amount of storage space @@ -1772,7 +1742,7 @@ public class StorageManager { * @throws IOException when the storage device isn't present, or when it * doesn't support allocating space, or if the device had * trouble allocating the requested space. - * @see #getAllocatableBytes(UUID, int) + * @see #getAllocatableBytes(UUID) */ @WorkerThread public void allocateBytes(@NonNull UUID storageUuid, @BytesLong long bytes) @@ -1796,22 +1766,13 @@ public class StorageManager { } } - /** @removed */ - @Deprecated - @WorkerThread - @SuppressLint("Doclava125") - public void allocateBytes(@NonNull File path, @BytesLong long bytes, - @RequiresPermission @AllocateFlags int flags) throws IOException { - allocateBytes(getUuidForPath(path), bytes, flags); - } - /** * Allocate the requested number of bytes for your application to use in the * given open file. This will cause the system to delete any cached files * necessary to satisfy your request. *

    * Attempts to allocate disk space beyond the value returned by - * {@link #getAllocatableBytes(UUID, int)} will fail. + * {@link #getAllocatableBytes(UUID)} will fail. *

    * This method guarantees that bytes have been allocated to the opened file, * otherwise it will throw if fast allocation is not possible. Fast @@ -1832,6 +1793,7 @@ public class StorageManager { * doesn't support allocating space, or if the device had * trouble allocating the requested space. * @see #getAllocatableBytes(UUID, int) + * @see #isAllocationSupported(FileDescriptor) * @see Environment#isExternalStorageEmulated(File) */ @WorkerThread @@ -1846,17 +1808,28 @@ public class StorageManager { public void allocateBytes(FileDescriptor fd, @BytesLong long bytes, @RequiresPermission @AllocateFlags int flags) throws IOException { final File file = ParcelFileDescriptor.getFile(fd); + final UUID uuid = getUuidForPath(file); for (int i = 0; i < 3; i++) { try { final long haveBytes = Os.fstat(fd).st_blocks * 512; final long needBytes = bytes - haveBytes; if (needBytes > 0) { - allocateBytes(file, needBytes, flags); + allocateBytes(uuid, needBytes, flags); } - Os.posix_fallocate(fd, 0, bytes); - return; + try { + Os.posix_fallocate(fd, 0, bytes); + return; + } catch (ErrnoException e) { + if (e.errno == OsConstants.ENOSYS || e.errno == OsConstants.ENOTSUP) { + Log.w(TAG, "fallocate() not supported; falling back to ftruncate()"); + Os.ftruncate(fd, bytes); + return; + } else { + throw e; + } + } } catch (ErrnoException e) { if (e.errno == OsConstants.ENOSPC) { Log.w(TAG, "Odd, not enough space; let's try again?"); @@ -1939,18 +1912,6 @@ public class StorageManager { return isCacheBehavior(path, XATTR_CACHE_GROUP); } - /** @removed */ - @Deprecated - public void setCacheBehaviorAtomic(File path, boolean atomic) throws IOException { - setCacheBehaviorGroup(path, atomic); - } - - /** @removed */ - @Deprecated - public boolean isCacheBehaviorAtomic(File path) throws IOException { - return isCacheBehaviorGroup(path); - } - /** * Enable or disable special cache behavior that leaves deleted cache files * intact as tombstones. diff --git a/core/java/android/preference/SeekBarVolumizer.java b/core/java/android/preference/SeekBarVolumizer.java index ee8eed1906f4c33240d65bd8471943a015f71bd5..3d2e1d1f1d24ab1d5613f978cfac208ad4fc1e11 100644 --- a/core/java/android/preference/SeekBarVolumizer.java +++ b/core/java/android/preference/SeekBarVolumizer.java @@ -206,8 +206,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba try { mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone .getAudioAttributes()) - .setFlags(AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY | - AudioAttributes.FLAG_BYPASS_MUTE) + .setFlags(AudioAttributes.FLAG_BYPASS_MUTE) .build()); mRingtone.play(); } catch (Throwable e) { diff --git a/core/java/android/print/PrintDocumentAdapter.java b/core/java/android/print/PrintDocumentAdapter.java index 1f59bef853a3047a529e652a842e43834a45d04e..2bb7c2e5f1c301c8aaaec62ff40c3a2d323d98f7 100644 --- a/core/java/android/print/PrintDocumentAdapter.java +++ b/core/java/android/print/PrintDocumentAdapter.java @@ -268,7 +268,9 @@ public abstract class PrintDocumentAdapter { * Notifies that all the data was written. * * @param pages The pages that were written. Cannot be null - * or empty. + * or empty.
    + * Returning {@link PageRange#ALL_PAGES} indicates that all pages that were + * requested as the {@code pages} parameter in {@link #onWrite} were written. */ public void onWriteFinished(PageRange[] pages) { /* do nothing - stub */ diff --git a/core/java/android/print/PrintManager.java b/core/java/android/print/PrintManager.java index 52dccb4327663eb6a5f3d1f1c31e93f319414baa..51b77980fcf47049a5843f4819b7cd6c9bc593e2 100644 --- a/core/java/android/print/PrintManager.java +++ b/core/java/android/print/PrintManager.java @@ -18,9 +18,9 @@ package android.print; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; -import android.annotation.TestApi; import android.app.Activity; import android.app.Application.ActivityLifecycleCallbacks; import android.content.ComponentName; @@ -142,7 +142,6 @@ public final class PrintManager { * @see #getPrintServices * @hide */ - @TestApi public static final int ALL_SERVICES = ENABLED_SERVICES | DISABLED_SERVICES; /** @@ -554,6 +553,7 @@ public final class PrintManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void addPrintServicesChangeListener(@NonNull PrintServicesChangeListener listener, @Nullable Handler handler) { Preconditions.checkNotNull(listener); @@ -589,6 +589,7 @@ public final class PrintManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public void removePrintServicesChangeListener(@NonNull PrintServicesChangeListener listener) { Preconditions.checkNotNull(listener); @@ -629,8 +630,8 @@ public final class PrintManager { * * @hide */ - @TestApi @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICES) public @NonNull List getPrintServices(int selectionFlags) { Preconditions.checkFlagsArgument(selectionFlags, ALL_SERVICES); @@ -656,6 +657,7 @@ public final class PrintManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void addPrintServiceRecommendationsChangeListener( @NonNull PrintServiceRecommendationsChangeListener listener, @Nullable Handler handler) { @@ -692,6 +694,7 @@ public final class PrintManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public void removePrintServiceRecommendationsChangeListener( @NonNull PrintServiceRecommendationsChangeListener listener) { Preconditions.checkNotNull(listener); @@ -731,6 +734,7 @@ public final class PrintManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS) public @NonNull List getPrintServiceRecommendations() { try { List recommendations = diff --git a/core/java/android/printservice/PrintServiceInfo.java b/core/java/android/printservice/PrintServiceInfo.java index 5ef93193c67c7f3817843e355bd91181604ed717..57f122923c69bfa40eee47a12c82bdccac26afe8 100644 --- a/core/java/android/printservice/PrintServiceInfo.java +++ b/core/java/android/printservice/PrintServiceInfo.java @@ -18,7 +18,6 @@ package android.printservice; import android.annotation.NonNull; import android.annotation.SystemApi; -import android.annotation.TestApi; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; @@ -49,7 +48,6 @@ import java.io.IOException; * * @hide */ -@TestApi @SystemApi public final class PrintServiceInfo implements Parcelable { diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java index 70ef0355af8ce9cb4f8112841f57e0d535eee8c8..cc1c0677441ed8a2f6b3d5492a904c3269b7b2eb 100644 --- a/core/java/android/provider/ContactsContract.java +++ b/core/java/android/provider/ContactsContract.java @@ -1878,7 +1878,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -2975,7 +2974,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -3414,7 +3412,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -3515,7 +3512,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -3568,7 +3564,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -3961,7 +3956,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated @@ -4002,7 +3996,6 @@ public final class ContactsContract { * @deprecated - Do not use. This will not be supported in the future. In the future, * cursors returned from related queries will be empty. * - * @hide * @removed */ @Deprecated diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java index fa903841101039321e40bfff883824d51637a791..ad4ec7248a81612e49865f3a975b308ffc9d5b55 100644 --- a/core/java/android/provider/DocumentsContract.java +++ b/core/java/android/provider/DocumentsContract.java @@ -18,6 +18,7 @@ package android.provider; import static android.net.TrafficStats.KB_IN_BYTES; import static android.system.OsConstants.SEEK_SET; + import static com.android.internal.util.Preconditions.checkArgument; import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull; import static com.android.internal.util.Preconditions.checkCollectionNotEmpty; @@ -28,7 +29,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentSender; -import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.AssetFileDescriptor; import android.database.Cursor; @@ -182,6 +182,15 @@ public final class DocumentsContract { /** {@hide} */ public static final String PACKAGE_DOCUMENTS_UI = "com.android.documentsui"; + /** {@hide} */ + public static final String METADATA_TYPES = "android:documentMetadataType"; + + /** {@hide} */ + public static final String METADATA_EXIF = "android:documentExif"; + + /** {@hide} */ + public static final String EXTRA_METADATA_TAGS = "android:documentMetadataTags"; + /** * Constants related to a document, including {@link Cursor} column names * and flags. @@ -442,6 +451,13 @@ public final class DocumentsContract { * @hide */ public static final int FLAG_PARTIAL = 1 << 16; + + /** + * Flag indicating that a document has available metadata that can be read + * using DocumentsContract#getDocumentMetadata + * @hide + */ + public static final int FLAG_SUPPORTS_METADATA = 1 << 17; } /** @@ -706,6 +722,8 @@ public final class DocumentsContract { public static final String METHOD_FIND_DOCUMENT_PATH = "android:findDocumentPath"; /** {@hide} */ public static final String METHOD_CREATE_WEB_LINK_INTENT = "android:createWebLinkIntent"; + /** {@hide} */ + public static final String METHOD_GET_DOCUMENT_METADATA = "android:getDocumentMetadata"; /** {@hide} */ public static final String EXTRA_PARENT_URI = "parentUri"; @@ -1377,6 +1395,89 @@ public final class DocumentsContract { client.call(METHOD_EJECT_ROOT, null, in); } + /** + * Returns metadata associated with the document. The type of metadata returned + * is specific to the document type. For example image files will largely return EXIF + * metadata. + * + *

    The returned {@link Bundle} will contain zero or more entries. + *

    Each entry represents a specific type of metadata. + * + *

    if tags == null, then a list of default tags will be used. + * + * @param documentUri a Document URI + * @param tags an array of keys to choose which data are added to the Bundle. If the Document + * is a JPG or ExifInterface compatible, send keys from {@link ExifInterface}. + * If tags are null, a set of default tags will be used. If the tags don't + * match with any relevant data, they will not be added to the Bundle. + * @return a Bundle of Bundles. If metadata exists within the Bundle, there will also + * be a String under DocumentsContract.METADATA_TYPES that will return a String[] of the + * types of metadata gathered. + * + *

    
    +     *     Bundle metadata = DocumentsContract.getDocumentMetadata(resolver, imageDocUri, tags);
    +     *     int imageLength = metadata.getInt(ExifInterface.TAG_IMAGE_LENGTH);
    +     * 
    + * + * {@hide} + */ + public static Bundle getDocumentMetadata(ContentResolver resolver, Uri documentUri, + @Nullable String[] tags) + throws FileNotFoundException { + final ContentProviderClient client = resolver.acquireUnstableContentProviderClient( + documentUri.getAuthority()); + + try { + return getDocumentMetadata(client, documentUri, tags); + } catch (Exception e) { + Log.w(TAG, "Failed to get document metadata"); + rethrowIfNecessary(resolver, e); + return null; + } finally { + ContentProviderClient.releaseQuietly(client); + } + } + + /** + * Returns metadata associated with the document. The type of metadata returned + * is specific to the document type. For example image files will largely return EXIF + * metadata. + * + *

    The returned {@link Bundle} will contain zero or more entries. + *

    Each entry represents a specific type of metadata. + * + *

    if tags == null, then a list of default tags will be used. + * + * @param documentUri a Document URI + * @param tags an array of keys to choose which data are added to the Bundle. If the Document + * is a JPG or ExifInterface compatible, send keys from {@link ExifInterface}. + * If tags are null, a set of default tags will be used. If the tags don't + * match with any relevant data, they will not be added to the Bundle. + * @return a Bundle of Bundles. If metadata exists within the Bundle, there will also + * be a String under DocumentsContract.METADATA_TYPES that will return a String[] of the + * types of metadata gathered. + * + *

    
    +     *     Bundle metadata = DocumentsContract.getDocumentMetadata(client, imageDocUri, tags);
    +     *     int imageLength = metadata.getInt(ExifInterface.TAG_IMAGE_LENGTH);
    +     * 
    + * + * {@hide} + */ + public static Bundle getDocumentMetadata(ContentProviderClient client, + Uri documentUri, @Nullable String[] tags) throws RemoteException { + final Bundle in = new Bundle(); + in.putParcelable(EXTRA_URI, documentUri); + in.putStringArray(EXTRA_METADATA_TAGS, tags); + + final Bundle out = client.call(METHOD_GET_DOCUMENT_METADATA, null, in); + + if (out == null) { + throw new RemoteException("Failed to get a response from getDocumentMetadata"); + } + return out; + } + /** * Finds the canonical path from the top of the document tree. * diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java index 3eef31ad56aa76d9b9723ae0d66618d390b0f365..4bdcdb097df67b014058d3ef9fe48bae574b5f3e 100644 --- a/core/java/android/provider/DocumentsProvider.java +++ b/core/java/android/provider/DocumentsProvider.java @@ -22,6 +22,7 @@ import static android.provider.DocumentsContract.METHOD_CREATE_WEB_LINK_INTENT; import static android.provider.DocumentsContract.METHOD_DELETE_DOCUMENT; import static android.provider.DocumentsContract.METHOD_EJECT_ROOT; import static android.provider.DocumentsContract.METHOD_FIND_DOCUMENT_PATH; +import static android.provider.DocumentsContract.METHOD_GET_DOCUMENT_METADATA; import static android.provider.DocumentsContract.METHOD_IS_CHILD_DOCUMENT; import static android.provider.DocumentsContract.METHOD_MOVE_DOCUMENT; import static android.provider.DocumentsContract.METHOD_REMOVE_DOCUMENT; @@ -55,9 +56,7 @@ import android.graphics.Point; import android.net.Uri; import android.os.Bundle; import android.os.CancellationSignal; -import android.os.OperationCanceledException; import android.os.ParcelFileDescriptor; -import android.os.ParcelFileDescriptor.OnCloseListener; import android.os.ParcelableException; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Path; @@ -627,6 +626,12 @@ public abstract class DocumentsProvider extends ContentProvider { throw new UnsupportedOperationException("Eject not supported"); } + /** {@hide} */ + public @Nullable Bundle getDocumentMetadata(String documentId, @Nullable String[] tags) + throws FileNotFoundException { + throw new UnsupportedOperationException("Metadata not supported"); + } + /** * Return concrete MIME type of the requested document. Must match the value * of {@link Document#COLUMN_MIME_TYPE} for this document. The default @@ -1136,6 +1141,9 @@ public abstract class DocumentsProvider extends ContentProvider { } out.putParcelable(DocumentsContract.EXTRA_RESULT, path); + } else if (METHOD_GET_DOCUMENT_METADATA.equals(method)) { + return getDocumentMetadata( + documentId, extras.getStringArray(DocumentsContract.EXTRA_METADATA_TAGS)); } else { throw new UnsupportedOperationException("Method not supported " + method); } diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java index 9d83bd7e90a66ad09602c03c8a08de376869ebaf..a2c5a92e52a28a384a365f54ca54dc07fdb4f4e8 100644 --- a/core/java/android/provider/Downloads.java +++ b/core/java/android/provider/Downloads.java @@ -485,6 +485,7 @@ public final class Downloads { * partition. This option is only used by system apps and so it requires * android.permission.ACCESS_CACHE_FILESYSTEM permission. */ + @Deprecated public static final int DESTINATION_SYSTEMCACHE_PARTITION = 5; /** diff --git a/core/java/android/provider/FontsContract.java b/core/java/android/provider/FontsContract.java index f90911421e1091b968f51b2b6b078e6f61a07162..d8540ffd639a507df3bfc4a1d4f564f4f6205ea8 100644 --- a/core/java/android/provider/FontsContract.java +++ b/core/java/android/provider/FontsContract.java @@ -447,14 +447,14 @@ public class FontsContract { public FontRequestCallback() {} /** - * Called then a Typeface request done via {@link #requestFont} is complete. Note that this + * Called then a Typeface request done via {@link #requestFonts} is complete. Note that this * method will not be called if {@link #onTypefaceRequestFailed(int)} is called instead. * @param typeface The Typeface object retrieved. */ public void onTypefaceRetrieved(Typeface typeface) {} /** - * Called when a Typeface request done via {@link #requestFont}} fails. + * Called when a Typeface request done via {@link #requestFonts}} fails. * @param reason One of {@link #FAIL_REASON_PROVIDER_NOT_FOUND}, * {@link #FAIL_REASON_FONT_NOT_FOUND}, * {@link #FAIL_REASON_FONT_LOAD_ERROR}, diff --git a/core/java/android/provider/MetadataReader.java b/core/java/android/provider/MetadataReader.java new file mode 100644 index 0000000000000000000000000000000000000000..2d1fca029c1c60b2aaa999b094f82e8351585655 --- /dev/null +++ b/core/java/android/provider/MetadataReader.java @@ -0,0 +1,285 @@ +/* + * 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.provider; + +import android.annotation.Nullable; +import android.media.ExifInterface; +import android.os.Bundle; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Class providing support for extracting metadata from a file as a + * {@link Bundle} suitable for use with {@link DocumentsContract#getDocumentMetadata}. + *

    Currently only EXIF data is supported. + *

    TODO: Add support for common video and audio types, as well as PDF files. + * {@hide} + */ +public final class MetadataReader { + + private MetadataReader() { + } + + private static final String[] DEFAULT_EXIF_TAGS = { + ExifInterface.TAG_IMAGE_WIDTH, + ExifInterface.TAG_IMAGE_LENGTH, + ExifInterface.TAG_DATETIME, + ExifInterface.TAG_GPS_LATITUDE, + ExifInterface.TAG_GPS_LONGITUDE, + ExifInterface.TAG_MAKE, + ExifInterface.TAG_MODEL, + ExifInterface.TAG_APERTURE, + ExifInterface.TAG_SHUTTER_SPEED_VALUE + }; + + private static final Map TYPE_MAPPING = new HashMap<>(); + private static final String[] ALL_KNOWN_EXIF_KEYS; + private static final int TYPE_INT = 0; + private static final int TYPE_DOUBLE = 1; + private static final int TYPE_STRING = 2; + + static { + // TODO: Move this over to ExifInterface.java + // Since each ExifInterface item has a type, and there's currently no way to get the type + // from the tag, here we identify the tag to the type so that we can call the correct + // ExifInterface method + TYPE_MAPPING.put(ExifInterface.TAG_ARTIST, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_BITS_PER_SAMPLE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_COMPRESSION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_COPYRIGHT, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_DATETIME, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_IMAGE_DESCRIPTION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_IMAGE_LENGTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_IMAGE_WIDTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_JPEG_INTERCHANGE_FORMAT_LENGTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_MAKE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_MODEL, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_ORIENTATION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_PHOTOMETRIC_INTERPRETATION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_PLANAR_CONFIGURATION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_PRIMARY_CHROMATICITIES, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_REFERENCE_BLACK_WHITE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_RESOLUTION_UNIT, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_ROWS_PER_STRIP, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SAMPLES_PER_PIXEL, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SOFTWARE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_STRIP_BYTE_COUNTS, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_STRIP_OFFSETS, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_TRANSFER_FUNCTION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_WHITE_POINT, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_X_RESOLUTION, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_Y_CB_CR_COEFFICIENTS, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_Y_CB_CR_POSITIONING, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_Y_CB_CR_SUB_SAMPLING, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_Y_RESOLUTION, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_APERTURE_VALUE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_BRIGHTNESS_VALUE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_CFA_PATTERN, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_COLOR_SPACE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_COMPONENTS_CONFIGURATION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_COMPRESSED_BITS_PER_PIXEL, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_CONTRAST, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_CUSTOM_RENDERED, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_DATETIME_DIGITIZED, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_DATETIME_ORIGINAL, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_DEVICE_SETTING_DESCRIPTION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_DIGITAL_ZOOM_RATIO, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_EXIF_VERSION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_EXPOSURE_BIAS_VALUE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_EXPOSURE_INDEX, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_EXPOSURE_MODE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_EXPOSURE_PROGRAM, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_EXPOSURE_TIME, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_F_NUMBER, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_FILE_SOURCE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_FLASH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_FLASH_ENERGY, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_FLASHPIX_VERSION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_FOCAL_LENGTH, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_FOCAL_LENGTH_IN_35MM_FILM, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_FOCAL_PLANE_RESOLUTION_UNIT, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_FOCAL_PLANE_X_RESOLUTION, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_FOCAL_PLANE_Y_RESOLUTION, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GAIN_CONTROL, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_ISO_SPEED_RATINGS, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_IMAGE_UNIQUE_ID, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_LIGHT_SOURCE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_MAKER_NOTE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_MAX_APERTURE_VALUE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_METERING_MODE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_NEW_SUBFILE_TYPE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_OECF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_PIXEL_X_DIMENSION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_PIXEL_Y_DIMENSION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RELATED_SOUND_FILE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SATURATION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SCENE_CAPTURE_TYPE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SCENE_TYPE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SENSING_METHOD, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SHARPNESS, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SHUTTER_SPEED_VALUE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_SPATIAL_FREQUENCY_RESPONSE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SPECTRAL_SENSITIVITY, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SUBFILE_TYPE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SUBSEC_TIME, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SUBSEC_TIME_DIGITIZED, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SUBSEC_TIME_ORIGINAL, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_SUBJECT_AREA, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SUBJECT_DISTANCE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_SUBJECT_DISTANCE_RANGE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_SUBJECT_LOCATION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_USER_COMMENT, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_WHITE_BALANCE, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_ALTITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_ALTITUDE_REF, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_AREA_INFORMATION, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DOP, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DATESTAMP, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_BEARING, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_BEARING_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_DISTANCE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_DISTANCE_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_LATITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_LATITUDE_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_LONGITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DEST_LONGITUDE_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_DIFFERENTIAL, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_IMG_DIRECTION, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_IMG_DIRECTION_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LATITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LATITUDE_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LONGITUDE, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_LONGITUDE_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_MAP_DATUM, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_MEASURE_MODE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_PROCESSING_METHOD, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_SATELLITES, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_SPEED, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_SPEED_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_STATUS, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_TIMESTAMP, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_TRACK, TYPE_DOUBLE); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_TRACK_REF, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_GPS_VERSION_ID, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_INTEROPERABILITY_INDEX, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_THUMBNAIL_IMAGE_LENGTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_THUMBNAIL_IMAGE_WIDTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_DNG_VERSION, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_DEFAULT_CROP_SIZE, TYPE_INT); + //I don't know how to represent this. Type is unknown + //TYPE_MAPPING.put(ExifInterface.TAG_ORF_THUMBNAIL_IMAGE, TYPE_STRING); + TYPE_MAPPING.put(ExifInterface.TAG_ORF_PREVIEW_IMAGE_START, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_ORF_PREVIEW_IMAGE_LENGTH, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_ORF_ASPECT_FRAME, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RW2_SENSOR_BOTTOM_BORDER, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RW2_SENSOR_LEFT_BORDER, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RW2_SENSOR_RIGHT_BORDER, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RW2_SENSOR_TOP_BORDER, TYPE_INT); + TYPE_MAPPING.put(ExifInterface.TAG_RW2_ISO, TYPE_INT); + ALL_KNOWN_EXIF_KEYS = TYPE_MAPPING.keySet().toArray(new String[TYPE_MAPPING.size()]); + } + private static final String JPG_MIME_TYPE = "image/jpg"; + private static final String JPEG_MIME_TYPE = "image/jpeg"; + + /** + * Generic metadata retrieval method that can retrieve any available metadata from a given doc + * Currently only functions for exifdata + * + * @param metadata the bundle to which we add any relevant metadata + * @param stream InputStream containing a file + * @param mimeType type of the given file + * @param tags a variable amount of keys to differentiate which tags the user wants + * if null, returns a default set of data from the following keys: + * Exif data: + * ExifInterface.TAG_IMAGE_WIDTH, + * ExifInterface.TAG_IMAGE_LENGTH, + * ExifInterface.TAG_DATETIME, + * ExifInterface.TAG_GPS_LATITUDE, + * ExifInterface.TAG_GPS_LONGITUDE, + * ExifInterface.TAG_MAKE, + * ExifInterface.TAG_MODEL, + * ExifInterface.TAG_APERTURE, + * ExifInterface.TAG_SHUTTER_SPEED_VALUE + * @throws IOException when the file doesn't exist + */ + public static void getMetadata(Bundle metadata, InputStream stream, String mimeType, + @Nullable String[] tags) throws IOException { + List metadataTypes = new ArrayList(); + if (mimeType.equals(JPG_MIME_TYPE) || mimeType.equals(JPEG_MIME_TYPE)) { + ExifInterface exifInterface = new ExifInterface(stream); + Bundle exifData = getExifData(exifInterface, tags); + if (exifData.size() > 0) { + metadata.putBundle(DocumentsContract.METADATA_EXIF, exifData); + metadataTypes.add(DocumentsContract.METADATA_EXIF); + } + } + metadata.putStringArray(DocumentsContract.METADATA_TYPES, + metadataTypes.toArray(new String[metadataTypes.size()])); + // TODO: Add support for PDF and Video metadata + // TODO: Broaden image support to all images + } + + /** + * Helper method that is called if getMetadata is called for an image mimeType. + * + * @param exif the bundle to which we add exif data. + * @param exifInterface an ExifInterface for an image + * @param tags a list of ExifInterface tags that are used to retrieve data. + * if null, returns a default set of data from the following keys: + * ExifInterface.TAG_IMAGE_WIDTH, + * ExifInterface.TAG_IMAGE_LENGTH, + * ExifInterface.TAG_DATETIME, + * ExifInterface.TAG_GPS_LATITUDE, + * ExifInterface.TAG_GPS_LONGITUDE, + * ExifInterface.TAG_MAKE, + * ExifInterface.TAG_MODEL, + * ExifInterface.TAG_APERTURE, + * ExifInterface.TAG_SHUTTER_SPEED_VALUE + */ + private static Bundle getExifData(ExifInterface exifInterface, @Nullable String[] tags) + throws IOException { + if (tags == null) { + tags = DEFAULT_EXIF_TAGS; + } + Bundle exif = new Bundle(); + for (int i = 0; i < tags.length; i++) { + if (TYPE_MAPPING.get(tags[i]).equals(TYPE_INT)) { + int data = exifInterface.getAttributeInt(tags[i], Integer.MIN_VALUE); + if (data != Integer.MIN_VALUE) { + exif.putInt(tags[i], data); + } + } else if (TYPE_MAPPING.get(tags[i]).equals(TYPE_DOUBLE)) { + double data = exifInterface.getAttributeDouble(tags[i], Double.MIN_VALUE); + if (data != Double.MIN_VALUE) { + exif.putDouble(tags[i], data); + } + } else if (TYPE_MAPPING.get(tags[i]).equals(TYPE_STRING)) { + String data = exifInterface.getAttribute(tags[i]); + if (data != null) { + exif.putString(tags[i], data); + } + } + } + return exif; + } +} diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 6560a8f9a21f9a0fb7b58ce8b43ad9e7723b59e6..ca9544af70c31c9590d82e21acf4cbcf497da8b3 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -31,6 +31,7 @@ import android.app.ActivityThread; import android.app.AppOpsManager; import android.app.Application; import android.app.NotificationChannel; +import android.app.NotificationManager; import android.app.SearchManager; import android.app.WallpaperManager; import android.content.ComponentName; @@ -309,10 +310,7 @@ public final class Settings { /** * Activity Action: Show settings to allow configuration of trusted external sources - *

    - * In some cases, a matching Activity may not exist, so ensure you - * safeguard against this. - *

    + * * Input: Optionally, the Intent's data URI can specify the application package name to * directly invoke the management GUI specific to the package name. For example * "package:com.my.app". @@ -577,21 +575,6 @@ public final class Settings { public static final String ACTION_INPUT_METHOD_SUBTYPE_SETTINGS = "android.settings.INPUT_METHOD_SUBTYPE_SETTINGS"; - /** - * Activity Action: Show a dialog to select input method. - *

    - * In some cases, a matching Activity may not exist, so ensure you - * safeguard against this. - *

    - * Input: Nothing. - *

    - * Output: Nothing. - * @hide - */ - @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) - public static final String ACTION_SHOW_INPUT_METHOD_PICKER = - "android.settings.SHOW_INPUT_METHOD_PICKER"; - /** * Activity Action: Show settings to manage the user input dictionary. *

    @@ -4019,6 +4002,15 @@ public final class Settings { SHOW_BATTERY_PERCENT }; + /** + * Keys we no longer back up under the current schema, but want to continue to + * process when restoring historical backup datasets. + * + * @hide + */ + public static final String[] LEGACY_RESTORE_SETTINGS = { + }; + /** * These are all public system settings * @@ -5181,17 +5173,39 @@ public final class Settings { public static final String ALLOW_MOCK_LOCATION = "mock_location"; /** - * A 64-bit number (as a hex string) that is randomly + * On Android 8.0 (API level 26) and higher versions of the platform, + * a 64-bit number (expressed as a hexadecimal string), unique to + * each combination of app-signing key, user, and device. + * Values of {@code ANDROID_ID} are scoped by signing key and user. + * The value may change if a factory reset is performed on the + * device or if an APK signing key changes. + * + * For more information about how the platform handles {@code ANDROID_ID} + * in Android 8.0 (API level 26) and higher, see + * Android 8.0 Behavior Changes. + * + *

    Note: For apps that were installed + * prior to updating the device to a version of Android 8.0 + * (API level 26) or higher, the value of {@code ANDROID_ID} changes + * if the app is uninstalled and then reinstalled after the OTA. + * To preserve values across uninstalls after an OTA to Android 8.0 + * or higher, developers can use + * + * Key/Value Backup.

    + * + *

    In versions of the platform lower than Android 8.0 (API level 26), + * a 64-bit number (expressed as a hexadecimal string) that is randomly * generated when the user first sets up the device and should remain - * constant for the lifetime of the user's device. The value may - * change if a factory reset is performed on the device. - *

    Note: When a device has multiple users - * (available on certain devices running Android 4.2 or higher), each user appears as a - * completely separate device, so the {@code ANDROID_ID} value is unique to each - * user.

    - * - *

    Note: If the caller is an Instant App the id is scoped + * constant for the lifetime of the user's device. + * + * On devices that have + * + * multiple users, each user appears as a + * completely separate device, so the {@code ANDROID_ID} value is + * unique to each user.

    + * + *

    Note: If the caller is an Instant App the ID is scoped * to the Instant App, it is generated when the Instant App is first installed and reset if * the user clears the Instant App. */ @@ -5260,6 +5274,7 @@ public final class Settings { * Whether the current user has been set up via setup wizard (0 = false, 1 = true) * @hide */ + @TestApi public static final String USER_SETUP_COMPLETE = "user_setup_complete"; /** @@ -6662,28 +6677,36 @@ public final class Settings { public static final String ASSIST_DISCLOSURE_ENABLED = "assist_disclosure_enabled"; /** - * Name of the service components that the current user has explicitly allowed to + * Read only list of the service components that the current user has explicitly allowed to * see and assist with all of the user's notifications. * + * @deprecated Use + * {@link NotificationManager#isNotificationListenerAccessGranted(ComponentName)}. * @hide */ + @Deprecated public static final String ENABLED_NOTIFICATION_ASSISTANT = "enabled_notification_assistant"; /** - * Names of the service components that the current user has explicitly allowed to + * Read only list of the service components that the current user has explicitly allowed to * see all of the user's notifications, separated by ':'. * * @hide + * @deprecated Use + * {@link NotificationManager#isNotificationAssistantAccessGranted(ComponentName)}. */ + @Deprecated public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; /** - * Names of the packages that the current user has explicitly allowed to - * manage notification policy configuration, separated by ':'. + * Read only list of the packages that the current user has explicitly allowed to + * manage do not disturb, separated by ':'. * + * @deprecated Use {@link NotificationManager#isNotificationPolicyAccessGranted()}. * @hide */ + @Deprecated @TestApi public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages"; @@ -6922,8 +6945,9 @@ public final class Settings { public static final String NIGHT_DISPLAY_CUSTOM_END_TIME = "night_display_custom_end_time"; /** - * Time in milliseconds (since epoch) when Night display was last activated. Use to decide - * whether to apply the current activated state after a reboot or user change. + * A String representing the LocalDateTime when Night display was last activated. Use to + * decide whether to apply the current activated state after a reboot or user change. In + * legacy cases, this is represented by the time in milliseconds (since epoch). * @hide */ public static final String NIGHT_DISPLAY_LAST_ACTIVATED_TIME = @@ -7120,7 +7144,6 @@ public final class Settings { AUTOFILL_SERVICE, ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE, ENABLED_ACCESSIBILITY_SERVICES, - ENABLED_NOTIFICATION_LISTENERS, ENABLED_VR_LISTENERS, ENABLED_INPUT_METHODS, TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES, @@ -7202,6 +7225,13 @@ public final class Settings { SCREENSAVER_ACTIVATE_ON_SLEEP, }; + /** @hide */ + public static final String[] LEGACY_RESTORE_SETTINGS = { + ENABLED_NOTIFICATION_LISTENERS, + ENABLED_NOTIFICATION_ASSISTANT, + ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES + }; + /** * These entries are considered common between the personal and the managed profile, * since the managed profile doesn't get to change them. @@ -7743,6 +7773,16 @@ public final class Settings { */ public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode"; + /** + * The default value for whether background data is enabled or not. + * + * Used by {@code NetworkPolicyManagerService}. + * + * @hide + */ + public static final String DEFAULT_RESTRICT_BACKGROUND_DATA = + "default_restrict_background_data"; + /** Inactivity timeout to track mobile data activity. * * If set to a positive integer, it indicates the inactivity timeout value in seconds to @@ -8008,6 +8048,8 @@ public final class Settings { public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes"; /** {@hide} */ public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled"; + /** {@hide} */ + public static final String NETSTATS_AUGMENT_ENABLED = "netstats_augment_enabled"; /** {@hide} */ public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration"; @@ -8533,6 +8575,16 @@ public final class Settings { */ public static final String NETWORK_SCORING_UI_ENABLED = "network_scoring_ui_enabled"; + /** + * Value to specify how long in milliseconds to retain seen score cache curves to be used + * when generating SSID only bases score curves. + * + * Type: long + * @hide + */ + public static final String SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS = + "speed_label_cache_eviction_age_millis"; + /** * Value to specify if network recommendations from * {@link com.android.server.NetworkScoreService} are enabled. @@ -9248,9 +9300,11 @@ public final class Settings { * gc_min_interval (long) * full_pss_min_interval (long) * full_pss_lowered_interval (long) - * power_check_delay (long) - * wake_lock_min_check_duration (long) - * cpu_min_check_duration (long) + * power_check_interval (long) + * power_check_max_cpu_1 (int) + * power_check_max_cpu_2 (int) + * power_check_max_cpu_3 (int) + * power_check_max_cpu_4 (int) * service_usage_interaction_time (long) * usage_stats_interaction_interval (long) * service_restart_duration (long) @@ -9335,9 +9389,12 @@ public final class Settings { /** * Battery anomaly detection specific settings - * This is encoded as a key=value list, separated by commas. Ex: + * This is encoded as a key=value list, separated by commas. + * wakeup_blacklisted_tags is a string, encoded as a set of tags, encoded via + * {@link Uri#encode(String)}, separated by colons. Ex: * - * "anomaly_detection_enabled=true,wakelock_threshold=2000" + * "anomaly_detection_enabled=true,wakelock_threshold=2000,wakeup_alarm_enabled=true," + * "wakeup_alarm_threshold=10,wakeup_blacklisted_tags=tag1:tag2:with%2Ccomma:with%3Acolon" * * The following keys are supported: * @@ -9345,11 +9402,35 @@ public final class Settings { * anomaly_detection_enabled (boolean) * wakelock_enabled (boolean) * wakelock_threshold (long) + * wakeup_alarm_enabled (boolean) + * wakeup_alarm_threshold (long) + * wakeup_blacklisted_tags (string) + * bluetooth_scan_enabled (boolean) + * bluetooth_scan_threshold (long) * * @hide */ public static final String ANOMALY_DETECTION_CONSTANTS = "anomaly_detection_constants"; + /** + * Always on display(AOD) specific settings + * This is encoded as a key=value list, separated by commas. Ex: + * + * "prox_screen_off_delay=10000,screen_brightness_array=0:1:2:3:4" + * + * The following keys are supported: + * + *

    +         * screen_brightness_array         (string)
    +         * dimming_scrim_array             (string)
    +         * prox_screen_off_delay           (long)
    +         * prox_cooldown_trigger           (long)
    +         * prox_cooldown_period            (long)
    +         * 
    + * @hide + */ + public static final String ALWAYS_ON_DISPLAY_CONSTANTS = "always_on_display_constants"; + /** * App standby (app idle) specific settings. * This is encoded as a key=value list, separated by commas. Ex: @@ -9488,6 +9569,22 @@ public final class Settings { */ public static final String DEVICE_POLICY_CONSTANTS = "device_policy_constants"; + /** + * TextClassifier specific settings. + * This is encoded as a key=value list, separated by commas. Ex: + * + *
    +         * smart_selection_dark_launch              (boolean)
    +         * smart_selection_enabled_for_edit_text    (boolean)
    +         * 
    + * + *

    + * Type: string + * @hide + * see also android.view.textclassifier.TextClassifierConstants + */ + public static final String TEXT_CLASSIFIER_CONSTANTS = "text_classifier_constants"; + /** * Get the key that retrieves a bluetooth headset's priority. * @hide @@ -10208,6 +10305,15 @@ public final class Settings { public static final String EUICC_FACTORY_RESET_TIMEOUT_MILLIS = "euicc_factory_reset_timeout_millis"; + /** + * Flag to set the timeout for when to refresh the storage settings cached data. + * Type: long + * + * @hide + */ + public static final String STORAGE_SETTINGS_CLOBBER_THRESHOLD = + "storage_settings_clobber_threshold"; + /** * Settings to backup. This is here so that it's in the same place as the settings * keys and easy to update. @@ -10248,6 +10354,10 @@ public final class Settings { PRIVATE_DNS_SPECIFIER }; + /** @hide */ + public static final String[] LEGACY_RESTORE_SETTINGS = { + }; + private static final ContentProviderHolder sProviderHolder = new ContentProviderHolder(CONTENT_URI); @@ -10770,6 +10880,7 @@ public final class Settings { INSTANT_APP_SETTINGS.add(ANIMATOR_DURATION_SCALE); INSTANT_APP_SETTINGS.add(DEBUG_VIEW_ATTRIBUTES); INSTANT_APP_SETTINGS.add(WTF_IS_FATAL); + INSTANT_APP_SETTINGS.add(SEND_ACTION_APP_ERROR); } /** @@ -10803,6 +10914,26 @@ public final class Settings { */ public static final String ENABLE_DELETION_HELPER_NO_THRESHOLD_TOGGLE = "enable_deletion_helper_no_threshold_toggle"; + + /** + * The list of snooze options for notifications + * This is encoded as a key=value list, separated by commas. Ex: + * + * "default=60,options_array=15:30:60:120" + * + * The following keys are supported: + * + *

    +         * default               (int)
    +         * options_array         (string)
    +         * 
    + * + * All delays in integer minutes. Array order is respected. + * Options will be used in order up to the maximum allowed by the UI. + * @hide + */ + public static final String NOTIFICATION_SNOOZE_OPTIONS = + "notification_snooze_options"; } /** diff --git a/core/java/android/provider/TimeZoneRulesDataContract.java b/core/java/android/provider/TimeZoneRulesDataContract.java index 789638523905ceb3b456c1c2be4995e1cad390b7..33d25880226eb43fd2a4c5f709b34bdd900acf0f 100644 --- a/core/java/android/provider/TimeZoneRulesDataContract.java +++ b/core/java/android/provider/TimeZoneRulesDataContract.java @@ -16,6 +16,7 @@ package android.provider; +import android.annotation.SystemApi; import android.net.Uri; /** @@ -24,6 +25,7 @@ import android.net.Uri; * * @hide */ +@SystemApi public final class TimeZoneRulesDataContract { private TimeZoneRulesDataContract() {} diff --git a/core/java/android/service/autofill/AutofillService.java b/core/java/android/service/autofill/AutofillService.java index 53b49f0ba37368f30ab3ce2e7e95a932a737d22f..14e9904133bdbef8d860eae6b0351322d60c9447 100644 --- a/core/java/android/service/autofill/AutofillService.java +++ b/core/java/android/service/autofill/AutofillService.java @@ -18,16 +18,15 @@ package android.service.autofill; import android.annotation.CallSuper; import android.annotation.NonNull; import android.annotation.Nullable; -import android.os.RemoteException; -import android.provider.Settings; - -import com.android.internal.os.HandlerCaller; import android.annotation.SdkConstant; -import android.app.Service;import android.content.Intent; +import android.app.Service; +import android.content.Intent; import android.os.CancellationSignal; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.Looper; +import android.os.RemoteException; +import android.provider.Settings; import android.util.Log; import android.view.View; import android.view.ViewStructure; @@ -35,6 +34,7 @@ import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; +import com.android.internal.os.HandlerCaller; import com.android.internal.os.SomeArgs; /** @@ -51,6 +51,7 @@ import com.android.internal.os.SomeArgs; * Settings screen). * * + * *

    Basic usage

    * *

    The basic autofill process is defined by the workflow below: @@ -122,12 +123,14 @@ import com.android.internal.os.SomeArgs; * each {@link #onFillRequest(FillRequest, CancellationSignal, FillCallback)} received - if it * doesn't, the request will eventually time out and be discarded by the Android System. * + * *

    Saving user data

    * *

    If the service is also interested on saving the data filled by the user, it must set a * {@link SaveInfo} object in the {@link FillResponse}. See {@link SaveInfo} for more details and * examples. * + * *

    User authentication

    * *

    The service can provide an extra degree of security by requiring the user to authenticate @@ -164,6 +167,7 @@ import com.android.internal.os.SomeArgs; * credentials in "vaults": the first response would contain fake datasets with the vault names, * and the subsequent response would contain the app credentials stored in that vault. * + * *

    Data partitioning

    * *

    The autofillable views in a screen should be grouped in logical groups called "partitions". @@ -243,6 +247,7 @@ import com.android.internal.os.SomeArgs; *

    When the service returns multiple {@link FillResponse}, the last one overrides the previous; * that's why the {@link SaveInfo} in the 2nd request above has the info for both partitions. * + * *

    Package verification

    * *

    When autofilling app-specific data (like username and password), the service must verify @@ -270,9 +275,16 @@ import com.android.internal.os.SomeArgs; * } * return hash.toString(); * } - * * * + *

    If the service did not store the signing certificates data the first time the data was saved + * — for example, because the data was created by a previous version of the app that did not + * use the Autofill Framework — the service should warn the user that the authenticity of the + * app cannot be confirmed (see an example on how to show such warning in the + * Web security section below), and if the user agrees, + * then the service could save the data from the signing ceriticates for future use. + * + * *

    Ignoring views

    * *

    If the service find views that cannot be autofilled (for example, a text field representing @@ -281,6 +293,7 @@ import com.android.internal.os.SomeArgs; * a new {@link #onFillRequest(FillRequest, CancellationSignal, FillCallback)} when these views are * focused. * + * *

    Web security

    * *

    When handling autofill requests that represent web pages (typically @@ -292,7 +305,7 @@ import com.android.internal.os.SomeArgs; *

  • Use the {@link android.app.assist.AssistStructure.ViewNode#getWebDomain()} to get the * source of the document. *
  • Get the canonical domain using the - * Public Suffix List (see example below). *
  • Use Digital Asset Links * to obtain the package name and certificate fingerprint of the package corresponding to * the canonical domain. @@ -306,16 +319,18 @@ import com.android.internal.os.SomeArgs; *
      * private static String getCanonicalDomain(String domain) {
      *   InternetDomainName idn = InternetDomainName.from(domain);
    - *   while (!idn.isTopPrivateDomain() && idn != null) {
    + *   while (idn != null && !idn.isTopPrivateDomain()) {
      *     idn = idn.parent();
      *   }
      *   return idn == null ? null : idn.toString();
      * }
      * 
    * + * *

    If the association between the web domain and app package cannot be verified through the steps - * above, the service can still autofill the app, but it should warn the user about the potential - * data leakage first, and askfor the user to confirm. For example, the service could: + * above, but the service thinks that it is appropriate to fill persisted credentials that are + * stored for the web domain, the service should warn the user about the potential data + * leakage first, and ask for the user to confirm. For example, the service could: * *

      *
    1. Create a dataset that requires @@ -324,7 +339,7 @@ import com.android.internal.os.SomeArgs; *
    2. Include the web domain in the custom presentation for the * {@link Dataset.Builder#setValue(AutofillId, AutofillValue, android.widget.RemoteViews) * dataset value}. - *
    3. When the user select that dataset, show a disclaimer dialog explaining that the app is + *
    4. When the user selects that dataset, show a disclaimer dialog explaining that the app is * requesting credentials for a web domain, but the service could not verify if the app owns * that domain. If the user agrees, then the service can unlock the dataset. *
    5. Similarly, when adding a {@link SaveInfo} object for the request, the service should @@ -333,7 +348,7 @@ import com.android.internal.os.SomeArgs; * *

      This same procedure could also be used when the autofillable data is contained inside an * {@code IFRAME}, in which case the WebView generates a new autofill context when a node inside - * the {@code IFRAME} is focused, which the root node containing the {@code IFRAME}'s {@code src} + * the {@code IFRAME} is focused, with the root node containing the {@code IFRAME}'s {@code src} * attribute on {@link android.app.assist.AssistStructure.ViewNode#getWebDomain()}. A typical and * legitimate use case for this scenario is a financial app that allows the user * to login on different bank accounts. For example, a financial app {@code my_financial_app} could @@ -350,6 +365,81 @@ import com.android.internal.os.SomeArgs; *

      Note: The autofill service could also whitelist well-known browser apps and skip the * verifications above, as long as the service can verify the authenticity of the browser app by * checking its signing certificate. + * + * + *

      Saving when data is split in multiple screens

      + * + * Apps often split the user data in multiple screens in the same activity, specially in + * activities used to create a new user account. For example, the first screen asks for a username, + * and if the username is available, it moves to a second screen, which asks for a password. + * + *

      It's tricky to handle save for autofill in these situations, because the autofill service must + * wait until the user enters both fields before the autofill save UI can be shown. But it can be + * done by following the steps below: + * + *

        + *
      1. In the first + * {@link #onFillRequest(FillRequest, CancellationSignal, FillCallback) fill request}, the service + * adds a {@link FillResponse.Builder#setClientState(android.os.Bundle) client state bundle} in + * the response, containing the autofill ids of the partial fields present in the screen. + *
      2. In the second + * {@link #onFillRequest(FillRequest, CancellationSignal, FillCallback) fill request}, the service + * retrieves the {@link FillRequest#getClientState() client state bundle}, gets the autofill ids + * set in the previous request from the client state, and adds these ids and the + * {@link SaveInfo#FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE} to the {@link SaveInfo} used in the second + * response. + *
      3. In the {@link #onSaveRequest(SaveRequest, SaveCallback) save request}, the service uses the + * proper {@link FillContext fill contexts} to get the value of each field (there is one fill + * context per fill request). + *
      + * + *

      For example, in an app that uses 2 steps for the username and password fields, the workflow + * would be: + *

      + *  // On first fill request
      + *  AutofillId usernameId = // parse from AssistStructure;
      + *  Bundle clientState = new Bundle();
      + *  clientState.putParcelable("usernameId", usernameId);
      + *  fillCallback.onSuccess(
      + *    new FillResponse.Builder()
      + *        .setClientState(clientState)
      + *        .setSaveInfo(new SaveInfo
      + *             .Builder(SaveInfo.SAVE_DATA_TYPE_USERNAME, new AutofillId[] {usernameId})
      + *             .build())
      + *        .build());
      + *
      + *  // On second fill request
      + *  Bundle clientState = fillRequest.getClientState();
      + *  AutofillId usernameId = clientState.getParcelable("usernameId");
      + *  AutofillId passwordId = // parse from AssistStructure
      + *  clientState.putParcelable("passwordId", passwordId);
      + *  fillCallback.onSuccess(
      + *    new FillResponse.Builder()
      + *        .setClientState(clientState)
      + *        .setSaveInfo(new SaveInfo
      + *             .Builder(SaveInfo.SAVE_DATA_TYPE_USERNAME | SaveInfo.SAVE_DATA_TYPE_PASSWORD,
      + *                      new AutofillId[] {usernameId, passwordId})
      + *             .setFlags(SaveInfo.FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE)
      + *             .build())
      + *        .build());
      + *
      + *  // On save request
      + *  Bundle clientState = saveRequest.getClientState();
      + *  AutofillId usernameId = clientState.getParcelable("usernameId");
      + *  AutofillId passwordId = clientState.getParcelable("passwordId");
      + *  List fillContexts = saveRequest.getFillContexts();
      + *
      + *  FillContext usernameContext = fillContexts.get(0);
      + *  ViewNode usernameNode = findNodeByAutofillId(usernameContext.getStructure(), usernameId);
      + *  AutofillValue username = usernameNode.getAutofillValue().getTextValue().toString();
      + *
      + *  FillContext passwordContext = fillContexts.get(1);
      + *  ViewNode passwordNode = findNodeByAutofillId(passwordContext.getStructure(), passwordId);
      + *  AutofillValue password = passwordNode.getAutofillValue().getTextValue().toString();
      + *
      + *  save(username, password);
      + *
      + * 
      */ public abstract class AutofillService extends Service { private static final String TAG = "AutofillService"; @@ -488,13 +578,19 @@ public abstract class AutofillService extends Service { @NonNull CancellationSignal cancellationSignal, @NonNull FillCallback callback); /** - * Called when user requests service to save the fields of a screen. + * Called when the user requests the service to save the contents of a screen. * *

      Service must call one of the {@link SaveCallback} methods (like * {@link SaveCallback#onSuccess()} or {@link SaveCallback#onFailure(CharSequence)}) - * to notify the result of the request. + * to notify the Android System of the result of the request. + * + *

      If the service could not handle the request right away—for example, because it must + * launch an activity asking the user to authenticate first or because the network is + * down—the service could keep the {@link SaveRequest request} and reuse it later, + * but the service must call {@link SaveCallback#onSuccess()} right away. * - *

      Note: To retrieve the actual value of the field, the service should call + *

      Note: To retrieve the actual value of fields input by the user, the service + * should call * {@link android.app.assist.AssistStructure.ViewNode#getAutofillValue()}; if it calls * {@link android.app.assist.AssistStructure.ViewNode#getText()} or other methods, there is no * guarantee such method will return the most recent value of the field. diff --git a/core/java/android/service/autofill/AutofillServiceInfo.java b/core/java/android/service/autofill/AutofillServiceInfo.java index e64eb0d62992208fe2352cec00866a1ff4ed3cc6..1a9afccdabe2b6ab2074cc24c8e30d2c9f198b4e 100644 --- a/core/java/android/service/autofill/AutofillServiceInfo.java +++ b/core/java/android/service/autofill/AutofillServiceInfo.java @@ -29,11 +29,12 @@ import android.os.RemoteException; import android.util.AttributeSet; import android.util.Log; import android.util.Xml; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; import com.android.internal.R; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + import java.io.IOException; /** @@ -147,4 +148,9 @@ public final class AutofillServiceInfo { public String getSettingsActivity() { return mSettingsActivity; } + + @Override + public String toString() { + return mServiceInfo == null ? "null" : mServiceInfo.toString(); + } } diff --git a/core/java/android/service/autofill/CharSequenceTransformation.java b/core/java/android/service/autofill/CharSequenceTransformation.java new file mode 100644 index 0000000000000000000000000000000000000000..2413e97ba837676ae247b8b503c77aa5cb192e54 --- /dev/null +++ b/core/java/android/service/autofill/CharSequenceTransformation.java @@ -0,0 +1,226 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.ArrayMap; +import android.util.Log; +import android.util.Pair; +import android.view.autofill.AutofillId; +import android.widget.RemoteViews; +import android.widget.TextView; + +import com.android.internal.util.Preconditions; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Replaces a {@link TextView} child of a {@link CustomDescription} with the contents of one or + * more regular expressions (regexs). + * + *

      When it contains more than one field, the fields that match their regex are added to the + * overall transformation result. + * + *

      For example, a transformation to mask a credit card number contained in just one field would + * be: + * + *

      + * new CharSequenceTransformation
      + *     .Builder(ccNumberId, Pattern.compile("^.*(\\d\\d\\d\\d)$"), "...$1")
      + *     .build();
      + * 
      + * + *

      But a transformation that generates a {@code Exp: MM / YYYY} credit expiration date from two + * fields (month and year) would be: + * + *

      + * new CharSequenceTransformation
      + *   .Builder(ccExpMonthId, Pattern.compile("^(\\d\\d)$"), "Exp: $1")
      + *   .addField(ccExpYearId, Pattern.compile("^(\\d\\d\\d\\d)$"), " / $1");
      + * 
      + */ +public final class CharSequenceTransformation extends InternalTransformation implements + Transformation, Parcelable { + private static final String TAG = "CharSequenceTransformation"; + @NonNull private final ArrayMap> mFields; + + private CharSequenceTransformation(Builder builder) { + mFields = builder.mFields; + } + + /** @hide */ + @Override + @TestApi + public void apply(@NonNull ValueFinder finder, @NonNull RemoteViews parentTemplate, + int childViewId) throws Exception { + final StringBuilder converted = new StringBuilder(); + final int size = mFields.size(); + if (sDebug) Log.d(TAG, size + " multiple fields on id " + childViewId); + for (int i = 0; i < size; i++) { + final AutofillId id = mFields.keyAt(i); + final Pair field = mFields.valueAt(i); + final String value = finder.findByAutofillId(id); + if (value == null) { + Log.w(TAG, "No value for id " + id); + return; + } + try { + final Matcher matcher = field.first.matcher(value); + if (!matcher.find()) { + if (sDebug) Log.d(TAG, "match for " + field.first + " failed on id " + id); + return; + } + // replaceAll throws an exception if the subst is invalid + final String convertedValue = matcher.replaceAll(field.second); + converted.append(convertedValue); + } catch (Exception e) { + // Do not log full exception to avoid PII leaking + Log.w(TAG, "Cannot apply " + field.first.pattern() + "->" + field.second + " to " + + "field with autofill id" + id + ": " + e.getClass()); + throw e; + } + } + parentTemplate.setCharSequence(childViewId, "setText", converted); + } + + /** + * Builder for {@link CharSequenceTransformation} objects. + */ + public static class Builder { + @NonNull private final ArrayMap> mFields = + new ArrayMap<>(); + private boolean mDestroyed; + + /** + * Creates a new builder and adds the first transformed contents of a field to the overall + * result of this transformation. + * + * @param id id of the screen field. + * @param regex regular expression with groups (delimited by {@code (} and {@code (}) that + * are used to substitute parts of the value. + * @param subst the string that substitutes the matched regex, using {@code $} for + * group substitution ({@code $1} for 1st group match, {@code $2} for 2nd, etc). + */ + public Builder(@NonNull AutofillId id, @NonNull Pattern regex, @NonNull String subst) { + addField(id, regex, subst); + } + + /** + * Adds the transformed contents of a field to the overall result of this transformation. + * + * @param id id of the screen field. + * @param regex regular expression with groups (delimited by {@code (} and {@code (}) that + * are used to substitute parts of the value. + * @param subst the string that substitutes the matched regex, using {@code $} for + * group substitution ({@code $1} for 1st group match, {@code $2} for 2nd, etc). + * + * @return this builder. + */ + public Builder addField(@NonNull AutofillId id, @NonNull Pattern regex, + @NonNull String subst) { + throwIfDestroyed(); + Preconditions.checkNotNull(id); + Preconditions.checkNotNull(regex); + Preconditions.checkNotNull(subst); + + mFields.put(id, new Pair<>(regex, subst)); + return this; + } + + /** + * Creates a new {@link CharSequenceTransformation} instance. + */ + public CharSequenceTransformation build() { + throwIfDestroyed(); + mDestroyed = true; + return new CharSequenceTransformation(this); + } + + private void throwIfDestroyed() { + Preconditions.checkState(!mDestroyed, "Already called build()"); + } + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return "MultipleViewsCharSequenceTransformation: [fields=" + mFields + "]"; + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int flags) { + final int size = mFields.size(); + final AutofillId[] ids = new AutofillId[size]; + final Pattern[] regexs = new Pattern[size]; + final String[] substs = new String[size]; + Pair pair; + for (int i = 0; i < size; i++) { + ids[i] = mFields.keyAt(i); + pair = mFields.valueAt(i); + regexs[i] = pair.first; + substs[i] = pair.second; + } + parcel.writeParcelableArray(ids, flags); + parcel.writeSerializable(regexs); + parcel.writeStringArray(substs); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public CharSequenceTransformation createFromParcel(Parcel parcel) { + final AutofillId[] ids = parcel.readParcelableArray(null, AutofillId.class); + final Pattern[] regexs = (Pattern[]) parcel.readSerializable(); + final String[] substs = parcel.createStringArray(); + + // Always go through the builder to ensure the data ingested by + // the system obeys the contract of the builder to avoid attacks + // using specially crafted parcels. + final CharSequenceTransformation.Builder builder = + new CharSequenceTransformation.Builder(ids[0], regexs[0], substs[0]); + + final int size = ids.length; + for (int i = 1; i < size; i++) { + builder.addField(ids[i], regexs[i], substs[i]); + } + return builder.build(); + } + + @Override + public CharSequenceTransformation[] newArray(int size) { + return new CharSequenceTransformation[size]; + } + }; +} diff --git a/core/java/android/service/autofill/CustomDescription.java b/core/java/android/service/autofill/CustomDescription.java new file mode 100644 index 0000000000000000000000000000000000000000..9a4cbc415d641fa87cdb75146ea52618de2ec942 --- /dev/null +++ b/core/java/android/service/autofill/CustomDescription.java @@ -0,0 +1,248 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.app.Activity; +import android.app.PendingIntent; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; +import android.util.Pair; +import android.widget.RemoteViews; + +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; + +/** + * Defines a custom description for the Save UI affordance. + * + *

      This is useful when the autofill service needs to show a detailed view of what would be saved; + * for example, when the screen contains a credit card, it could display a logo of the credit card + * bank, the last four digits of the credit card number, and its expiration number. + * + *

      A custom description is made of 2 parts: + *

        + *
      • A {@link RemoteViews presentation template} containing children views. + *
      • {@link Transformation Transformations} to populate the children views. + *
      + * + *

      For the credit card example mentioned above, the (simplified) template would be: + * + *

      + * <LinearLayout>
      + *   <ImageView android:id="@+id/templateccLogo"/>
      + *   <TextView android:id="@+id/templateCcNumber"/>
      + *   <TextView android:id="@+id/templateExpDate"/>
      + * </LinearLayout>
      + * 
      + * + *

      Which in code translates to: + * + *

      + *   CustomDescription.Builder buider = new Builder(new RemoteViews(pgkName, R.layout.cc_template);
      + * 
      + * + *

      Then the value of each of the 3 children would be changed at runtime based on the the value of + * the screen fields and the {@link Transformation Transformations}: + * + *

      + * // Image child - different logo for each bank, based on credit card prefix
      + * builder.addChild(R.id.templateccLogo,
      + *   new ImageTransformation.Builder(ccNumberId)
      + *     .addOption(Pattern.compile(""^4815.*$"), R.drawable.ic_credit_card_logo1)
      + *     .addOption(Pattern.compile(""^1623.*$"), R.drawable.ic_credit_card_logo2)
      + *     .addOption(Pattern.compile(""^42.*$"), R.drawable.ic_credit_card_logo3)
      + *     .build();
      + * // Masked credit card number (as .....LAST_4_DIGITS)
      + * builder.addChild(R.id.templateCcNumber, new CharSequenceTransformation
      + *     .Builder(ccNumberId, Pattern.compile(""^.*(\\d\\d\\d\\d)$"), "...$1")
      + *     .build();
      + * // Expiration date as MM / YYYY:
      + * builder.addChild(R.id.templateExpDate, new CharSequenceTransformation
      + *     .Builder(ccExpMonthId, Pattern.compile(""^(\\d\\d)$"), "Exp: $1")
      + *     .addField(ccExpYearId, Pattern.compile(""^(\\d\\d)$"), "/$1")
      + *     .build();
      + * 
      + * + *

      See {@link ImageTransformation}, {@link CharSequenceTransformation} for more info about these + * transformations. + */ +public final class CustomDescription implements Parcelable { + + private static final String TAG = "CustomDescription"; + + private final RemoteViews mPresentation; + private final ArrayList> mTransformations; + + private CustomDescription(Builder builder) { + mPresentation = builder.mPresentation; + mTransformations = builder.mTransformations; + } + + /** @hide */ + public RemoteViews getPresentation(ValueFinder finder) { + if (mTransformations != null) { + final int size = mTransformations.size(); + if (sDebug) Log.d(TAG, "getPresentation(): applying " + size + " transformations"); + for (int i = 0; i < size; i++) { + final Pair pair = mTransformations.get(i); + final int id = pair.first; + final InternalTransformation transformation = pair.second; + if (sDebug) Log.d(TAG, "#" + i + ": " + transformation); + + try { + transformation.apply(finder, mPresentation, id); + } catch (Exception e) { + // Do not log full exception to avoid PII leaking + Log.e(TAG, "Could not apply transformation " + transformation + ": " + + e.getClass()); + return null; + } + } + } + return mPresentation; + } + + /** + * Builder for {@link CustomDescription} objects. + */ + public static class Builder { + private final RemoteViews mPresentation; + + private ArrayList> mTransformations; + + /** + * Default constructor. + * + *

      Note: If any child view of presentation triggers a + * {@link RemoteViews#setOnClickPendingIntent(int, android.app.PendingIntent) pending intent + * on click}, such {@link PendingIntent} must follow the restrictions below, otherwise + * it might not be triggered or the Save affordance might not be shown when its activity + * is finished: + *

        + *
      • It cannot be created with the {@link PendingIntent#FLAG_IMMUTABLE} flag. + *
      • It must be a PendingIntent for an {@link Activity}. + *
      • The activity must call {@link Activity#finish()} when done. + *
      • The activity should not launch other activities. + *
      + * + * @param parentPresentation template presentation with (optional) children views. + */ + public Builder(RemoteViews parentPresentation) { + mPresentation = parentPresentation; + } + + /** + * Adds a transformation to replace the value of a child view with the fields in the + * screen. + * + *

      When multiple transformations are added for the same child view, they will be applied + * in the same order as added. + * + * @param id view id of the children view. + * @param transformation an implementation provided by the Android System. + * @return this builder. + * @throws IllegalArgumentException if {@code transformation} is not a class provided + * by the Android System. + */ + public Builder addChild(int id, @NonNull Transformation transformation) { + Preconditions.checkArgument((transformation instanceof InternalTransformation), + "not provided by Android System: " + transformation); + if (mTransformations == null) { + mTransformations = new ArrayList<>(); + } + mTransformations.add(new Pair<>(id, (InternalTransformation) transformation)); + return this; + } + + /** + * Creates a new {@link CustomDescription} instance. + */ + public CustomDescription build() { + return new CustomDescription(this); + } + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return new StringBuilder("CustomDescription: [presentation=") + .append(mPresentation) + .append(", transformations=").append(mTransformations) + .append("]").toString(); + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(mPresentation, flags); + if (mTransformations == null) { + dest.writeIntArray(null); + } else { + final int size = mTransformations.size(); + final int[] ids = new int[size]; + final InternalTransformation[] values = new InternalTransformation[size]; + for (int i = 0; i < size; i++) { + final Pair pair = mTransformations.get(i); + ids[i] = pair.first; + values[i] = pair.second; + } + dest.writeIntArray(ids); + dest.writeParcelableArray(values, flags); + } + } + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public CustomDescription createFromParcel(Parcel parcel) { + // Always go through the builder to ensure the data ingested by + // the system obeys the contract of the builder to avoid attacks + // using specially crafted parcels. + final Builder builder = new Builder(parcel.readParcelable(null)); + final int[] ids = parcel.createIntArray(); + if (ids != null) { + final InternalTransformation[] values = + parcel.readParcelableArray(null, InternalTransformation.class); + final int size = ids.length; + for (int i = 0; i < size; i++) { + builder.addChild(ids[i], values[i]); + } + } + return builder.build(); + } + + @Override + public CustomDescription[] newArray(int size) { + return new CustomDescription[size]; + } + }; +} diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java index a2ec0993c2c90fc7339ca222791eb81d419d8257..65b0efcbe032afac22008ce65c0bf0d9aed15415 100644 --- a/core/java/android/service/autofill/Dataset.java +++ b/core/java/android/service/autofill/Dataset.java @@ -26,6 +26,7 @@ import android.os.Parcelable; import android.view.autofill.AutofillId; import android.view.autofill.AutofillValue; import android.widget.RemoteViews; + import com.android.internal.util.Preconditions; import java.util.ArrayList; diff --git a/core/java/android/service/autofill/FillEventHistory.java b/core/java/android/service/autofill/FillEventHistory.java index f7dc1c58ade1bdf990a487a8e00a0084ed411c6c..768e743612ed1cc076fdc022932f2ccd110e69ce 100644 --- a/core/java/android/service/autofill/FillEventHistory.java +++ b/core/java/android/service/autofill/FillEventHistory.java @@ -22,8 +22,7 @@ import android.content.IntentSender; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; -import android.view.autofill.AutofillId; -import android.widget.RemoteViews; +import android.view.autofill.AutofillManager; import com.android.internal.util.Preconditions; @@ -81,7 +80,7 @@ public final class FillEventHistory implements Parcelable { /** * Returns the client state set in the previous {@link FillResponse}. * - *

      NOTE: the state is associated with the app that was autofilled in the previous + *

      Note: the state is associated with the app that was autofilled in the previous * {@link AutofillService#onFillRequest(FillRequest, android.os.CancellationSignal, FillCallback)} * , which is not necessary the same app being autofilled now. */ @@ -148,6 +147,14 @@ public final class FillEventHistory implements Parcelable { public static final class Event { /** * A dataset was selected. The dataset selected can be read from {@link #getDatasetId()}. + * + *

      Note: on Android {@link android.os.Build.VERSION_CODES#O}, this event was also + * incorrectly reported after a + * {@link Dataset.Builder#setAuthentication(IntentSender) dataset authentication} was + * selected and the service returned a dataset in the + * {@link AutofillManager#EXTRA_AUTHENTICATION_RESULT} of the activity launched from that + * {@link IntentSender}. This behavior was fixed on Android + * {@link android.os.Build.VERSION_CODES#O_MR1}. */ public static final int TYPE_DATASET_SELECTED = 0; @@ -158,8 +165,8 @@ public final class FillEventHistory implements Parcelable { public static final int TYPE_DATASET_AUTHENTICATION_SELECTED = 1; /** - * A {@link FillResponse.Builder#setAuthentication(AutofillId[], IntentSender, RemoteViews) - * fill response authentication} was selected. + * A {@link FillResponse.Builder#setAuthentication(android.view.autofill.AutofillId[], + * IntentSender, android.widget.RemoteViews) fill response authentication} was selected. */ public static final int TYPE_AUTHENTICATION_SELECTED = 2; diff --git a/core/java/android/service/autofill/FillRequest.java b/core/java/android/service/autofill/FillRequest.java index fd6da05aa2371fca4cb6d7054c7d712098d7bd0a..3a84224084c02c1d53462101959b7b026601fe72 100644 --- a/core/java/android/service/autofill/FillRequest.java +++ b/core/java/android/service/autofill/FillRequest.java @@ -20,7 +20,6 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Bundle; -import android.os.CancellationSignal; import android.os.Parcel; import android.os.Parcelable; import android.view.View; @@ -38,7 +37,7 @@ import java.util.List; * interesting for saving and what are the possible ways to fill the inputs on * the screen if applicable. * - * @see AutofillService#onFillRequest(FillRequest, CancellationSignal, FillCallback) + * @see AutofillService#onFillRequest(FillRequest, android.os.CancellationSignal, FillCallback) */ public final class FillRequest implements Parcelable { @@ -61,9 +60,8 @@ public final class FillRequest implements Parcelable { *

      An explicit autofill request is triggered when the * {@link android.view.autofill.AutofillManager#requestAutofill(View)} or * {@link android.view.autofill.AutofillManager#requestAutofill(View, int, android.graphics.Rect)} - * is called. For example, standard {@link android.widget.TextView} views that use - * an {@link android.widget.Editor} shows an {@code AUTOFILL} option in the overflow menu that - * triggers such request. + * is called. For example, standard {@link android.widget.TextView} views show an + * {@code AUTOFILL} option in the overflow menu that triggers such request. */ public static final int FLAG_MANUAL_REQUEST = 0x1; @@ -123,9 +121,14 @@ public final class FillRequest implements Parcelable { return mContexts; } + @Override + public String toString() { + return "FillRequest: [id=" + mId + ", flags=" + mFlags + ", ctxts= " + mContexts + "]"; + } + /** * Gets the extra client state returned from the last {@link - * AutofillService#onFillRequest(FillRequest, CancellationSignal, FillCallback) + * AutofillService#onFillRequest(FillRequest, android.os.CancellationSignal, FillCallback) * fill request}, so the service can use it for state management. * *

      Once a {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback) diff --git a/core/java/android/service/autofill/FillResponse.java b/core/java/android/service/autofill/FillResponse.java index 80ef3aa9ebea319810b6c7186e423a408649ce49..6d8a95991f0552bb7516ce597c954d9c4d0ef37d 100644 --- a/core/java/android/service/autofill/FillResponse.java +++ b/core/java/android/service/autofill/FillResponse.java @@ -23,15 +23,16 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Activity; import android.content.IntentSender; +import android.content.pm.ParceledListSlice; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.view.autofill.AutofillId; -import android.view.autofill.AutofillManager; import android.widget.RemoteViews; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; /** * Response for a {@link @@ -41,7 +42,7 @@ import java.util.Arrays; */ public final class FillResponse implements Parcelable { - private final @Nullable ArrayList mDatasets; + private final @Nullable ParceledListSlice mDatasets; private final @Nullable SaveInfo mSaveInfo; private final @Nullable Bundle mClientState; private final @Nullable RemoteViews mPresentation; @@ -51,7 +52,7 @@ public final class FillResponse implements Parcelable { private int mRequestId; private FillResponse(@NonNull Builder builder) { - mDatasets = builder.mDatasets; + mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null; mSaveInfo = builder.mSaveInfo; mClientState = builder.mCLientState; mPresentation = builder.mPresentation; @@ -67,8 +68,8 @@ public final class FillResponse implements Parcelable { } /** @hide */ - public @Nullable ArrayList getDatasets() { - return mDatasets; + public @Nullable List getDatasets() { + return (mDatasets != null) ? mDatasets.getList() : null; } /** @hide */ @@ -143,13 +144,16 @@ public final class FillResponse implements Parcelable { * for the user to trigger your authentication flow. * *

      When a user triggers autofill, the system launches the provided intent - * whose extras will have the {@link AutofillManager#EXTRA_ASSIST_STRUCTURE screen + * whose extras will have the + * {@link android.view.autofill.AutofillManager#EXTRA_ASSIST_STRUCTURE screen * content} and your {@link android.view.autofill.AutofillManager#EXTRA_CLIENT_STATE * client state}. Once you complete your authentication flow you should set the - * {@link Activity} result to {@link android.app.Activity#RESULT_OK} and provide the fully - * populated {@link FillResponse response} by setting it to the {@link - * AutofillManager#EXTRA_AUTHENTICATION_RESULT} extra. - * For example, if you provided an empty {@link FillResponse resppnse} because the + * {@link Activity} result to {@link android.app.Activity#RESULT_OK} and set the + * {@link android.view.autofill.AutofillManager#EXTRA_AUTHENTICATION_RESULT} extra + * with the fully populated {@link FillResponse response} (or {@code null} if the screen + * cannot be autofilled). + * + *

      For example, if you provided an empty {@link FillResponse response} because the * user's data was locked and marked that the response needs an authentication then * in the response returned if authentication succeeds you need to provide all * available data sets some of which may need to be further authenticated, for @@ -168,7 +172,7 @@ public final class FillResponse implements Parcelable { * @param ids id of Views that when focused will display the authentication UI affordance. * * @return This builder. - * @throw {@link IllegalArgumentException} if {@code ids} is {@code null} or empty, or if + * @throws IllegalArgumentException if {@code ids} is {@code null} or empty, or if * neither {@code authentication} nor {@code presentation} is non-{@code null}. * * @see android.app.PendingIntent#getIntentSender() @@ -205,12 +209,14 @@ public final class FillResponse implements Parcelable { /** * Adds a new {@link Dataset} to this response. * - *

      Note: the total number of datasets is limited by the Binder transaction size, - * so it's recommended to keep it small (in the range of 10-20 at most) and use pagination - * by adding a fake - * {@link Dataset.Builder#setAuthentication(IntentSender) authenticated dataset} - * at the end with a presentation string like "Next 10" that would return a new - * {@link FillResponse} with the next 10 datasets, and so on. + *

      Note: on Android {@link android.os.Build.VERSION_CODES#O}, the total number of + * datasets is limited by the Binder transaction size, so it's recommended to keep it + * small (in the range of 10-20 at most) and use pagination by adding a fake + * {@link Dataset.Builder#setAuthentication(IntentSender) authenticated dataset} at the end + * with a presentation string like "Next 10" that would return a new {@link FillResponse} + * with the next 10 datasets, and so on. This limitation was lifted on + * Android {@link android.os.Build.VERSION_CODES#O_MR1}, although the Binder transaction + * size can still be reached if each dataset itself is too big. * * @return This builder. */ @@ -298,7 +304,7 @@ public final class FillResponse implements Parcelable { // TODO: create a dump() method instead return new StringBuilder( "FillResponse : [mRequestId=" + mRequestId) - .append(", datasets=").append(mDatasets) + .append(", datasets=").append(mDatasets == null ? "N/A" : mDatasets.getList()) .append(", saveInfo=").append(mSaveInfo) .append(", clientState=").append(mClientState != null) .append(", hasPresentation=").append(mPresentation != null) @@ -320,7 +326,7 @@ public final class FillResponse implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { - parcel.writeTypedArrayList(mDatasets, flags); + parcel.writeParcelable(mDatasets, flags); parcel.writeParcelable(mSaveInfo, flags); parcel.writeParcelable(mClientState, flags); parcel.writeParcelableArray(mAuthenticationIds, flags); @@ -338,7 +344,8 @@ public final class FillResponse implements Parcelable { // the system obeys the contract of the builder to avoid attacks // using specially crafted parcels. final Builder builder = new Builder(); - final ArrayList datasets = parcel.readTypedArrayList(null); + final ParceledListSlice datasetSlice = parcel.readParcelable(null); + final List datasets = (datasetSlice != null) ? datasetSlice.getList() : null; final int datasetCount = (datasets != null) ? datasets.size() : 0; for (int i = 0; i < datasetCount; i++) { builder.addDataset(datasets.get(i)); diff --git a/core/java/android/service/autofill/ImageTransformation.java b/core/java/android/service/autofill/ImageTransformation.java new file mode 100644 index 0000000000000000000000000000000000000000..2151f74fbe5b2078f3cc864a47f35db258c0ae5b --- /dev/null +++ b/core/java/android/service/autofill/ImageTransformation.java @@ -0,0 +1,219 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.DrawableRes; +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; +import android.util.Pair; +import android.view.autofill.AutofillId; +import android.widget.ImageView; +import android.widget.RemoteViews; + +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; +import java.util.regex.Pattern; + +/** + * Replaces the content of a child {@link ImageView} of a + * {@link RemoteViews presentation template} with the first image that matches a regular expression + * (regex). + * + *

      Typically used to display credit card logos. Example: + * + *

      + *   new ImageTransformation.Builder(ccNumberId, Pattern.compile("^4815.*$"),
      + *                                   R.drawable.ic_credit_card_logo1)
      + *     .addOption(Pattern.compile("^1623.*$"), R.drawable.ic_credit_card_logo2)
      + *     .addOption(Pattern.compile("^42.*$"), R.drawable.ic_credit_card_logo3)
      + *     .build();
      + * 
      + * + *

      There is no imposed limit in the number of options, but keep in mind that regexs are + * expensive to evaluate, so use the minimum number of regexs and add the most common first + * (for example, if this is a tranformation for a credit card logo and the most common credit card + * issuers are banks X and Y, add the regexes that resolves these 2 banks first). + */ +public final class ImageTransformation extends InternalTransformation implements Transformation, + Parcelable { + private static final String TAG = "ImageTransformation"; + + private final AutofillId mId; + private final ArrayList> mOptions; + + private ImageTransformation(Builder builder) { + mId = builder.mId; + mOptions = builder.mOptions; + } + + /** @hide */ + @TestApi + @Override + public void apply(@NonNull ValueFinder finder, @NonNull RemoteViews parentTemplate, + int childViewId) throws Exception { + final String value = finder.findByAutofillId(mId); + if (value == null) { + Log.w(TAG, "No view for id " + mId); + return; + } + final int size = mOptions.size(); + if (sDebug) { + Log.d(TAG, size + " multiple options on id " + childViewId + " to compare against"); + } + + for (int i = 0; i < size; i++) { + final Pair option = mOptions.get(i); + try { + if (option.first.matcher(value).matches()) { + Log.d(TAG, "Found match at " + i + ": " + option); + parentTemplate.setImageViewResource(childViewId, option.second); + return; + } + } catch (Exception e) { + // Do not log full exception to avoid PII leaking + Log.w(TAG, "Error matching regex #" + i + "(" + option.first.pattern() + ") on id " + + option.second + ": " + e.getClass()); + throw e; + + } + } + if (sDebug) Log.d(TAG, "No match for " + value); + } + + /** + * Builder for {@link ImageTransformation} objects. + */ + public static class Builder { + private final AutofillId mId; + private final ArrayList> mOptions = new ArrayList<>(); + private boolean mDestroyed; + + /** + * Create a new builder for a autofill id and add a first option. + * + * @param id id of the screen field that will be used to evaluate whether the image should + * be used. + * @param regex regular expression defining what should be matched to use this image. + * @param resId resource id of the image (in the autofill service's package). The + * {@link RemoteViews presentation} must contain a {@link ImageView} child with that id. + */ + public Builder(@NonNull AutofillId id, @NonNull Pattern regex, @DrawableRes int resId) { + mId = Preconditions.checkNotNull(id); + + addOption(regex, resId); + } + + /** + * Adds an option to replace the child view with a different image when the regex matches. + * + * @param regex regular expression defining what should be matched to use this image. + * @param resId resource id of the image (in the autofill service's package). The + * {@link RemoteViews presentation} must contain a {@link ImageView} child with that id. + * + * @return this build + */ + public Builder addOption(@NonNull Pattern regex, @DrawableRes int resId) { + throwIfDestroyed(); + + Preconditions.checkNotNull(regex); + Preconditions.checkArgument(resId != 0); + + mOptions.add(new Pair<>(regex, resId)); + return this; + } + + /** + * Creates a new {@link ImageTransformation} instance. + */ + public ImageTransformation build() { + throwIfDestroyed(); + mDestroyed = true; + return new ImageTransformation(this); + } + + private void throwIfDestroyed() { + Preconditions.checkState(!mDestroyed, "Already called build()"); + } + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return "ImageTransformation: [id=" + mId + ", options=" + mOptions + "]"; + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + @Override + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeParcelable(mId, flags); + + final int size = mOptions.size(); + final Pattern[] regexs = new Pattern[size]; + final int[] resIds = new int[size]; + for (int i = 0; i < size; i++) { + Pair regex = mOptions.get(i); + regexs[i] = regex.first; + resIds[i] = regex.second; + } + parcel.writeSerializable(regexs); + parcel.writeIntArray(resIds); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public ImageTransformation createFromParcel(Parcel parcel) { + final AutofillId id = parcel.readParcelable(null); + + final Pattern[] regexs = (Pattern[]) parcel.readSerializable(); + final int[] resIds = parcel.createIntArray(); + + // Always go through the builder to ensure the data ingested by the system obeys the + // contract of the builder to avoid attacks using specially crafted parcels. + final ImageTransformation.Builder builder = new ImageTransformation.Builder(id, + regexs[0], resIds[0]); + + final int size = regexs.length; + for (int i = 1; i < size; i++) { + builder.addOption(regexs[i], resIds[i]); + } + + return builder.build(); + } + + @Override + public ImageTransformation[] newArray(int size) { + return new ImageTransformation[size]; + } + }; +} diff --git a/core/java/android/service/autofill/InternalTransformation.java b/core/java/android/service/autofill/InternalTransformation.java new file mode 100644 index 0000000000000000000000000000000000000000..974397b3f0489558e80c8c67b414a42c16209990 --- /dev/null +++ b/core/java/android/service/autofill/InternalTransformation.java @@ -0,0 +1,42 @@ +/* + * 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.service.autofill; + +import android.annotation.NonNull; +import android.os.Parcelable; +import android.widget.RemoteViews; + +/** + * Superclass of all transformation the system understands. As this is not public all + * subclasses have to implement {@link Transformation} again. + * + * @hide + */ +abstract class InternalTransformation implements Transformation, Parcelable { + + /** + * Applies this transformation to a child view of a {@link android.widget.RemoteViews + * presentation template}. + * + * @param finder object used to find the value of a field in the screen. + * @param template the {@link RemoteViews presentation template}. + * @param childViewId resource id of the child view inside the template. + * + * @hide + */ + abstract void apply(@NonNull ValueFinder finder, @NonNull RemoteViews template, + int childViewId) throws Exception; +} diff --git a/core/java/android/service/autofill/InternalValidator.java b/core/java/android/service/autofill/InternalValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..e11cf6ad72e180a94f344a1cd84feaa71d7acda5 --- /dev/null +++ b/core/java/android/service/autofill/InternalValidator.java @@ -0,0 +1,38 @@ +/* + * 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.service.autofill; + +import android.annotation.NonNull; +import android.os.Parcelable; + +/** + * Superclass of all validators the system understands. As this is not public all public subclasses + * have to implement {@link Validator} again. + * + * @hide + */ +public abstract class InternalValidator implements Validator, Parcelable { + + /** + * Decides whether the contents of the screen are valid. + * + * @param finder object used to find the value of a field in the screen. + * @return {@code true} if the contents are valid, {@code false} otherwise. + * + * @hide + */ + public abstract boolean isValid(@NonNull ValueFinder finder); +} diff --git a/core/java/android/service/autofill/LuhnChecksumValidator.java b/core/java/android/service/autofill/LuhnChecksumValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..0b5930dfe5b72d996f7652dc1adb01f849600a69 --- /dev/null +++ b/core/java/android/service/autofill/LuhnChecksumValidator.java @@ -0,0 +1,127 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; +import android.view.autofill.AutofillId; + +import com.android.internal.util.Preconditions; + +/** + * Validator that returns {@code true} if the number created by concatenating all given fields + * pass a Luhn algorithm checksum. All non-digits are ignored. + * + *

      See {@link SaveInfo.Builder#setValidator(Validator)} for examples. + */ +public final class LuhnChecksumValidator extends InternalValidator implements Validator, + Parcelable { + private static final String TAG = "LuhnChecksumValidator"; + + private final AutofillId[] mIds; + + /** + * Default constructor. + * + * @param ids id of fields that comprises the number to be checked. + */ + public LuhnChecksumValidator(@NonNull AutofillId... ids) { + mIds = Preconditions.checkArrayElementsNotNull(ids, "ids"); + } + + /** + * Checks if the Luhn checksum is valid. + * + * @param number The number including the checksum + */ + private static boolean isLuhnChecksumValid(@NonNull String number) { + int sum = 0; + boolean isDoubled = false; + + for (int i = number.length() - 1; i >= 0; i--) { + final int digit = number.charAt(i) - '0'; + if (digit < 0 || digit > 9) { + // Ignore non-digits + continue; + } + + int addend; + if (isDoubled) { + addend = digit * 2; + if (addend > 9) { + addend -= 9; + } + } else { + addend = digit; + } + sum += addend; + isDoubled = !isDoubled; + } + + return sum % 10 == 0; + } + + /** @hide */ + @Override + @TestApi + public boolean isValid(@NonNull ValueFinder finder) { + if (mIds == null || mIds.length == 0) return false; + + final StringBuilder number = new StringBuilder(); + for (AutofillId id : mIds) { + final String partialNumber = finder.findByAutofillId(id); + if (partialNumber == null) { + if (sDebug) Log.d(TAG, "No partial number for id " + id); + return false; + } + number.append(partialNumber); + } + + return isLuhnChecksumValid(number.toString()); + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeParcelableArray(mIds, flags); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public LuhnChecksumValidator createFromParcel(Parcel parcel) { + return new LuhnChecksumValidator(parcel.readParcelableArray(null, AutofillId.class)); + } + + @Override + public LuhnChecksumValidator[] newArray(int size) { + return new LuhnChecksumValidator[size]; + } + }; +} diff --git a/core/java/android/service/autofill/OptionalValidators.java b/core/java/android/service/autofill/OptionalValidators.java new file mode 100644 index 0000000000000000000000000000000000000000..f7edd6e4e8e8350d49c77291a288be4d3a54879d --- /dev/null +++ b/core/java/android/service/autofill/OptionalValidators.java @@ -0,0 +1,91 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.util.Preconditions; + +/** + * Compound validator that returns {@code true} on {@link #isValid(ValueFinder)} if any + * of its subvalidators returns {@code true} as well. + * + *

      Used to implement an {@code OR} logical operation. + * + * @hide + */ +final class OptionalValidators extends InternalValidator { + + @NonNull private final InternalValidator[] mValidators; + + OptionalValidators(@NonNull InternalValidator[] validators) { + mValidators = Preconditions.checkArrayElementsNotNull(validators, "validators"); + } + + @Override + public boolean isValid(@NonNull ValueFinder finder) { + for (InternalValidator validator : mValidators) { + final boolean valid = validator.isValid(finder); + if (valid) return true; + } + + return false; + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return new StringBuilder("OptionalValidators: [validators=").append(mValidators) + .append("]") + .toString(); + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelableArray(mValidators, flags); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public OptionalValidators createFromParcel(Parcel parcel) { + return new OptionalValidators(parcel + .readParcelableArray(null, InternalValidator.class)); + } + + @Override + public OptionalValidators[] newArray(int size) { + return new OptionalValidators[size]; + } + }; +} diff --git a/core/java/android/service/autofill/RegexValidator.java b/core/java/android/service/autofill/RegexValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..9dfe78d2b372b409f36566913e4a6ca8b3a93b3a --- /dev/null +++ b/core/java/android/service/autofill/RegexValidator.java @@ -0,0 +1,109 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; +import android.view.autofill.AutofillId; + +import com.android.internal.util.Preconditions; + +import java.util.regex.Pattern; + +/** + * Defines if a field is valid based on a regular expression (regex). + * + *

      See {@link SaveInfo.Builder#setValidator(Validator)} for examples. + */ +public final class RegexValidator extends InternalValidator implements Validator, Parcelable { + + private static final String TAG = "RegexValidator"; + + private final AutofillId mId; + private final Pattern mRegex; + + /** + * Default constructor. + * + * @param id id of the field whose regex is applied to. + * @param regex regular expression that defines the result of the validator: if the regex + * matches the contents of the field identified by {@code id}, it returns {@code true}; + * otherwise, it returns {@code false}. + */ + public RegexValidator(@NonNull AutofillId id, @NonNull Pattern regex) { + mId = Preconditions.checkNotNull(id); + mRegex = Preconditions.checkNotNull(regex); + } + + /** @hide */ + @Override + @TestApi + public boolean isValid(@NonNull ValueFinder finder) { + final String value = finder.findByAutofillId(mId); + if (value == null) { + Log.w(TAG, "No view for id " + mId); + return false; + } + + final boolean valid = mRegex.matcher(value).matches(); + if (sDebug) Log.d(TAG, "isValid(): " + valid); + return valid; + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return "RegexValidator: [id=" + mId + ", regex=" + mRegex + "]"; + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int flags) { + parcel.writeParcelable(mId, flags); + parcel.writeSerializable(mRegex); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public RegexValidator createFromParcel(Parcel parcel) { + return new RegexValidator(parcel.readParcelable(null), + (Pattern) parcel.readSerializable()); + } + + @Override + public RegexValidator[] newArray(int size) { + return new RegexValidator[size]; + } + }; +} diff --git a/core/java/android/service/autofill/RequiredValidators.java b/core/java/android/service/autofill/RequiredValidators.java new file mode 100644 index 0000000000000000000000000000000000000000..ac85c28404f8aa4aed4d5fd6f2cbbe350d081ee8 --- /dev/null +++ b/core/java/android/service/autofill/RequiredValidators.java @@ -0,0 +1,90 @@ +/* + * 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.service.autofill; + +import static android.view.autofill.Helper.sDebug; + +import android.annotation.NonNull; +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.util.Preconditions; + +/** + * Compound validator that only returns {@code true} on {@link #isValid(ValueFinder)} if all + * of its subvalidators return {@code true} as well. + * + *

      Used to implement an {@code AND} logical operation. + * + * @hide + */ +final class RequiredValidators extends InternalValidator { + + @NonNull private final InternalValidator[] mValidators; + + RequiredValidators(@NonNull InternalValidator[] validators) { + mValidators = Preconditions.checkArrayElementsNotNull(validators, "validators"); + } + + @Override + public boolean isValid(@NonNull ValueFinder finder) { + for (InternalValidator validator : mValidators) { + final boolean valid = validator.isValid(finder); + if (!valid) return false; + } + return true; + } + + ///////////////////////////////////// + // Object "contract" methods. // + ///////////////////////////////////// + @Override + public String toString() { + if (!sDebug) return super.toString(); + + return new StringBuilder("RequiredValidators: [validators=").append(mValidators) + .append("]") + .toString(); + } + + ///////////////////////////////////// + // Parcelable "contract" methods. // + ///////////////////////////////////// + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelableArray(mValidators, flags); + } + + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + @Override + public RequiredValidators createFromParcel(Parcel parcel) { + return new RequiredValidators(parcel + .readParcelableArray(null, InternalValidator.class)); + } + + @Override + public RequiredValidators[] newArray(int size) { + return new RequiredValidators[size]; + } + }; +} diff --git a/core/java/android/service/autofill/SaveCallback.java b/core/java/android/service/autofill/SaveCallback.java index 3a7013841729baa3d7cebd2ceecf74179f3291b0..7207f1df3ee56d7ec107ca1bc9d1f4f1b7b5af4a 100644 --- a/core/java/android/service/autofill/SaveCallback.java +++ b/core/java/android/service/autofill/SaveCallback.java @@ -34,9 +34,13 @@ public final class SaveCallback { /** * Notifies the Android System that an - * {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback)} was successfully fulfilled + * {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback)} was successfully handled * by the service. * + *

      If the service could not handle the request right away—for example, because it must + * launch an activity asking the user to authenticate first or because the network is + * down—it should still call {@link #onSuccess()}. + * * @throws RuntimeException if an error occurred while calling the Android System. */ public void onSuccess() { @@ -51,9 +55,16 @@ public final class SaveCallback { /** * Notifies the Android System that an - * {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback)} could not be fulfilled + * {@link AutofillService#onSaveRequest(SaveRequest, SaveCallback)} could not be handled * by the service. * + *

      This method should only be called when the service could not handle the request right away + * and could not recover or retry it. If the service could retry or recover, it could keep + * the {@link SaveRequest} and call {@link #onSuccess()} instead. + * + *

      Note: The Android System displays an UI with the supplied error message; if + * you prefer to show your own message, call {@link #onSuccess()} instead. + * * @param message error message to be displayed to the user. * * @throws RuntimeException if an error occurred while calling the Android System. diff --git a/core/java/android/service/autofill/SaveInfo.java b/core/java/android/service/autofill/SaveInfo.java index 95d393b0234c250484ac0a8ace4cbb428104b02c..e0a073050b6b928f46e6043477501fe4250d5879 100644 --- a/core/java/android/service/autofill/SaveInfo.java +++ b/core/java/android/service/autofill/SaveInfo.java @@ -30,6 +30,7 @@ import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; +import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; import java.lang.annotation.Retention; @@ -117,14 +118,21 @@ import java.util.Arrays; *

    6. The {@link AutofillValue} of at least one view (be it required or optional) has changed * (i.e., it's neither the same value passed in a {@link Dataset}, nor the initial value * presented in the view). + *
    7. There is no {@link Dataset} in the last {@link FillResponse} that completely matches the + * screen state (i.e., all required and optional fields in the dataset have the same value as + * the fields in the screen). *
    8. The user explicitly tapped the UI affordance asking to save data for autofill. * * *

      The service can also customize some aspects of the save UI affordance: *

        - *
      • Add a subtitle by calling {@link Builder#setDescription(CharSequence)}. + *
      • Add a simple subtitle by calling {@link Builder#setDescription(CharSequence)}. + *
      • Add a customized subtitle by calling + * {@link Builder#setCustomDescription(CustomDescription)}. *
      • Customize the button used to reject the save request by calling * {@link Builder#setNegativeAction(int, IntentSender)}. + *
      • Decide whether the UI should be shown based on the user input validation by calling + * {@link Builder#setValidator(Validator)}. *
      */ public final class SaveInfo implements Parcelable { @@ -222,6 +230,8 @@ public final class SaveInfo implements Parcelable { private final AutofillId[] mOptionalIds; private final CharSequence mDescription; private final int mFlags; + private final CustomDescription mCustomDescription; + private final InternalValidator mValidator; private SaveInfo(Builder builder) { mType = builder.mType; @@ -231,6 +241,8 @@ public final class SaveInfo implements Parcelable { mOptionalIds = builder.mOptionalIds; mDescription = builder.mDescription; mFlags = builder.mFlags; + mCustomDescription = builder.mCustomDescription; + mValidator = builder.mValidator; } /** @hide */ @@ -244,7 +256,7 @@ public final class SaveInfo implements Parcelable { } /** @hide */ - public AutofillId[] getRequiredIds() { + public @Nullable AutofillId[] getRequiredIds() { return mRequiredIds; } @@ -268,6 +280,18 @@ public final class SaveInfo implements Parcelable { return mDescription; } + /** @hide */ + @Nullable + public CustomDescription getCustomDescription() { + return mCustomDescription; + } + + /** @hide */ + @Nullable + public InternalValidator getValidator() { + return mValidator; + } + /** * A builder for {@link SaveInfo} objects. */ @@ -281,12 +305,14 @@ public final class SaveInfo implements Parcelable { private CharSequence mDescription; private boolean mDestroyed; private int mFlags; + private CustomDescription mCustomDescription; + private InternalValidator mValidator; /** * Creates a new builder. * - * @param type the type of information the associated {@link FillResponse} represents, can - * be any combination of {@link SaveInfo#SAVE_DATA_TYPE_GENERIC}, + * @param type the type of information the associated {@link FillResponse} represents. It + * can be any combination of {@link SaveInfo#SAVE_DATA_TYPE_GENERIC}, * {@link SaveInfo#SAVE_DATA_TYPE_PASSWORD}, * {@link SaveInfo#SAVE_DATA_TYPE_ADDRESS}, {@link SaveInfo#SAVE_DATA_TYPE_CREDIT_CARD}, * {@link SaveInfo#SAVE_DATA_TYPE_USERNAME}, or @@ -299,11 +325,30 @@ public final class SaveInfo implements Parcelable { * it contains any {@code null} entry. */ public Builder(@SaveDataType int type, @NonNull AutofillId[] requiredIds) { - // TODO: add CTS unit tests (not integration) to assert the null cases mType = type; mRequiredIds = assertValid(requiredIds); } + /** + * Creates a new builder when no id is required. + * + *

      When using this builder, caller must call {@link #setOptionalIds(AutofillId[])} before + * calling {@link #build()}. + * + * @param type the type of information the associated {@link FillResponse} represents. It + * can be any combination of {@link SaveInfo#SAVE_DATA_TYPE_GENERIC}, + * {@link SaveInfo#SAVE_DATA_TYPE_PASSWORD}, + * {@link SaveInfo#SAVE_DATA_TYPE_ADDRESS}, {@link SaveInfo#SAVE_DATA_TYPE_CREDIT_CARD}, + * {@link SaveInfo#SAVE_DATA_TYPE_USERNAME}, or + * {@link SaveInfo#SAVE_DATA_TYPE_EMAIL_ADDRESS}. + * + *

      See {@link SaveInfo} for more info. + */ + public Builder(@SaveDataType int type) { + mType = type; + mRequiredIds = null; + } + private AutofillId[] assertValid(AutofillId[] ids) { Preconditions.checkArgument(ids != null && ids.length > 0, "must have at least one id: " + Arrays.toString(ids)); @@ -340,7 +385,6 @@ public final class SaveInfo implements Parcelable { * it contains any {@code null} entry. */ public @NonNull Builder setOptionalIds(@NonNull AutofillId[] ids) { - // TODO: add CTS unit tests (not integration) to assert the null cases throwIfDestroyed(); mOptionalIds = assertValid(ids); return this; @@ -354,21 +398,46 @@ public final class SaveInfo implements Parcelable { * * @param description a succint description. * @return This Builder. + * + * @throws IllegalStateException if this call was made after calling + * {@link #setCustomDescription(CustomDescription)}. */ public @NonNull Builder setDescription(@Nullable CharSequence description) { throwIfDestroyed(); + Preconditions.checkState(mCustomDescription == null, + "Can call setDescription() or setCustomDescription(), but not both"); mDescription = description; return this; } + /** + * Sets a custom description to be shown in the UI when the user is asked to save. + * + *

      Typically used when the service must show more info about the object being saved, + * like a credit card logo, masked number, and expiration date. + * + * @param customDescription the custom description. + * @return This Builder. + * + * @throws IllegalStateException if this call was made after calling + * {@link #setDescription(CharSequence)}. + */ + public @NonNull Builder setCustomDescription(@NonNull CustomDescription customDescription) { + throwIfDestroyed(); + Preconditions.checkState(mDescription == null, + "Can call setDescription() or setCustomDescription(), but not both"); + mCustomDescription = customDescription; + return this; + } + /** * Sets the style and listener for the negative save action. * - *

      This allows a fill-provider to customize the style and be + *

      This allows an autofill service to customize the style and be * notified when the user selects the negative action in the save * UI. Note that selecting the negative action regardless of its style * and listener being customized would dismiss the save UI and if a - * custom listener intent is provided then this intent will be + * custom listener intent is provided then this intent is * started. The default style is {@link #NEGATIVE_BUTTON_STYLE_CANCEL}

      * * @param style The action style. @@ -392,11 +461,86 @@ public final class SaveInfo implements Parcelable { return this; } + /** + * Sets an object used to validate the user input - if the input is not valid, the Save UI + * affordance is not shown. + * + *

      Typically used to validate credit card numbers. Examples: + * + *

      Validator for a credit number that must have exactly 16 digits: + * + *

      +         * Validator validator = new RegexValidator(ccNumberId, Pattern.compile(""^\\d{16}$"))
      +         * 
      + * + *

      Validator for a credit number that must pass a Luhn checksum and either have + * 16 digits, or 15 digits starting with 108: + * + *

      +         * import android.service.autofill.Validators;
      +         *
      +         * Validator validator =
      +         *   and(
      +         *     new LuhnChecksumValidator(ccNumberId),
      +         *     or(
      +         *       new RegexValidator(ccNumberId, Pattern.compile(""^\\d{16}$")),
      +         *       new RegexValidator(ccNumberId, Pattern.compile(""^108\\d{12}$"))
      +         *     )
      +         *   );
      +         * 
      + * + *

      NOTE: the example above is just for illustrative purposes; the same validator + * could be created using a single regex for the {@code OR} part: + * + *

      +         * Validator validator =
      +         *   and(
      +         *     new LuhnChecksumValidator(ccNumberId),
      +         *     new RegexValidator(ccNumberId, Pattern.compile(""^(\\d{16}|108\\d{12})$"))
      +         *   );
      +         * 
      + * + *

      Validator for a credit number contained in just 4 fields and that must have exactly + * 4 digits on each field: + * + *

      +         * import android.service.autofill.Validators;
      +         *
      +         * Validator validator =
      +         *   and(
      +         *     new RegexValidator(ccNumberId1, Pattern.compile(""^\\d{4}$")),
      +         *     new RegexValidator(ccNumberId2, Pattern.compile(""^\\d{4}$")),
      +         *     new RegexValidator(ccNumberId3, Pattern.compile(""^\\d{4}$")),
      +         *     new RegexValidator(ccNumberId4, Pattern.compile(""^\\d{4}$"))
      +         *   );
      +         * 
      + * + * @param validator an implementation provided by the Android System. + * @return this builder. + * + * @throws IllegalArgumentException if {@code validator} is not a class provided + * by the Android System. + */ + public @NonNull Builder setValidator(@NonNull Validator validator) { + throwIfDestroyed(); + Preconditions.checkArgument((validator instanceof InternalValidator), + "not provided by Android System: " + validator); + mValidator = (InternalValidator) validator; + return this; + } + /** * Builds a new {@link SaveInfo} instance. + * + * @throws IllegalStateException if no + * {@link #SaveInfo.Builder(int, AutofillId[]) required ids} + * or {@link #setOptionalIds(AutofillId[]) optional ids} were set */ public SaveInfo build() { throwIfDestroyed(); + Preconditions.checkState( + !ArrayUtils.isEmpty(mRequiredIds) || !ArrayUtils.isEmpty(mOptionalIds), + "must have at least one required or optional id"); mDestroyed = true; return new SaveInfo(this); } @@ -406,7 +550,6 @@ public final class SaveInfo implements Parcelable { throw new IllegalStateException("Already called #build()"); } } - } ///////////////////////////////////// @@ -424,6 +567,8 @@ public final class SaveInfo implements Parcelable { .append(DebugUtils.flagsToString(SaveInfo.class, "NEGATIVE_BUTTON_STYLE_", mNegativeButtonStyle)) .append(", mFlags=").append(mFlags) + .append(", mCustomDescription=").append(mCustomDescription) + .append(", validation=").append(mValidator) .append("]").toString(); } @@ -440,27 +585,42 @@ public final class SaveInfo implements Parcelable { public void writeToParcel(Parcel parcel, int flags) { parcel.writeInt(mType); parcel.writeParcelableArray(mRequiredIds, flags); + parcel.writeParcelableArray(mOptionalIds, flags); parcel.writeInt(mNegativeButtonStyle); parcel.writeParcelable(mNegativeActionListener, flags); - parcel.writeParcelableArray(mOptionalIds, flags); parcel.writeCharSequence(mDescription); + parcel.writeParcelable(mCustomDescription, flags); + parcel.writeParcelable(mValidator, flags); parcel.writeInt(mFlags); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public SaveInfo createFromParcel(Parcel parcel) { + // Always go through the builder to ensure the data ingested by // the system obeys the contract of the builder to avoid attacks // using specially crafted parcels. - final Builder builder = new Builder(parcel.readInt(), - parcel.readParcelableArray(null, AutofillId.class)); - builder.setNegativeAction(parcel.readInt(), parcel.readParcelable(null)); + final int type = parcel.readInt(); + final AutofillId[] requiredIds = parcel.readParcelableArray(null, AutofillId.class); + final Builder builder = requiredIds != null + ? new Builder(type, requiredIds) + : new Builder(type); final AutofillId[] optionalIds = parcel.readParcelableArray(null, AutofillId.class); if (optionalIds != null) { builder.setOptionalIds(optionalIds); } + + builder.setNegativeAction(parcel.readInt(), parcel.readParcelable(null)); builder.setDescription(parcel.readCharSequence()); + final CustomDescription customDescripton = parcel.readParcelable(null); + if (customDescripton != null) { + builder.setCustomDescription(customDescripton); + } + final InternalValidator validator = parcel.readParcelable(null); + if (validator != null) { + builder.setValidator(validator); + } builder.setFlags(parcel.readInt()); return builder.build(); } diff --git a/core/java/android/service/autofill/Transformation.java b/core/java/android/service/autofill/Transformation.java new file mode 100644 index 0000000000000000000000000000000000000000..4cef261dd389fc878d471961f3fb71832541460f --- /dev/null +++ b/core/java/android/service/autofill/Transformation.java @@ -0,0 +1,25 @@ +/* + * 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.service.autofill; + +/** + * Helper class used to change a child view of a {@link android.widget.RemoteViews presentation + * template} at runtime, using the values of fields contained in the screen. + * + *

      Typically used by {@link CustomDescription} to provide a customized Save UI affordance. + */ +public interface Transformation { +} diff --git a/core/java/android/service/autofill/Validator.java b/core/java/android/service/autofill/Validator.java new file mode 100644 index 0000000000000000000000000000000000000000..854aa1e69db7c99a1f522ac4665423a72eb64683 --- /dev/null +++ b/core/java/android/service/autofill/Validator.java @@ -0,0 +1,24 @@ +/* + * 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.service.autofill; + +/** + * Helper class used to define whether the contents of a screen are valid. + * + *

      Typically used to avoid displaying the Save UI affordance when the user input is invalid. + */ +public interface Validator { +} diff --git a/core/java/android/service/autofill/Validators.java b/core/java/android/service/autofill/Validators.java new file mode 100644 index 0000000000000000000000000000000000000000..51b503c2169098cde1ec5b452eb725e4d2fdc408 --- /dev/null +++ b/core/java/android/service/autofill/Validators.java @@ -0,0 +1,67 @@ +/* + * 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.service.autofill; + +import android.annotation.NonNull; + +import com.android.internal.util.Preconditions; + +/** + * Factory for {@link Validator} operations. + * + *

      See {@link SaveInfo.Builder#setValidator(Validator)} for examples. + */ +public final class Validators { + + private Validators() { + throw new UnsupportedOperationException("contains static methods only"); + } + + /** + * Creates a validator that is only valid if all {@code validators} are valid. + * + * @throws IllegalArgumentException if any element of {@code validators} is an instance of a + * class that is not provided by the Android System. + */ + @NonNull + public static Validator and(@NonNull Validator...validators) { + return new RequiredValidators(getInternalValidators(validators)); + } + + /** + * Creates a validator that is valid if any of the {@code validators} is valid. + * + * @throws IllegalArgumentException if any element of {@code validators} is an instance of a + * class that is not provided by the Android System. + */ + @NonNull + public static Validator or(@NonNull Validator...validators) { + return new OptionalValidators(getInternalValidators(validators)); + } + + private static InternalValidator[] getInternalValidators(Validator[] validators) { + Preconditions.checkArrayElementsNotNull(validators, "validators"); + + final InternalValidator[] internals = new InternalValidator[validators.length]; + + for (int i = 0; i < validators.length; i++) { + Preconditions.checkArgument((validators[i] instanceof InternalValidator), + "element " + i + " not provided by Android System: " + validators[i]); + internals[i] = (InternalValidator) validators[i]; + } + return internals; + } +} diff --git a/core/java/android/service/autofill/ValueFinder.java b/core/java/android/service/autofill/ValueFinder.java new file mode 100644 index 0000000000000000000000000000000000000000..1705b7d922aa99b909995ab295af5836bf0affdd --- /dev/null +++ b/core/java/android/service/autofill/ValueFinder.java @@ -0,0 +1,35 @@ +/* + * 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.service.autofill; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.TestApi; +import android.view.autofill.AutofillId; + +/** + * Helper object used to obtain the value of a field in the screen being autofilled. + * + * @hide + */ +@TestApi +public interface ValueFinder { + + /** + * Gets the value of a field, or {@code null} when not found. + */ + @Nullable String findByAutofillId(@NonNull AutofillId id); +} diff --git a/core/java/android/service/notification/Adjustment.java b/core/java/android/service/notification/Adjustment.java index 137cf577ab7c9dbdb9c8ebd80d4f53a8fc2ee2f9..ce678fc805876407f6dff86b1d4e19dad97b18d5 100644 --- a/core/java/android/service/notification/Adjustment.java +++ b/core/java/android/service/notification/Adjustment.java @@ -17,7 +17,7 @@ package android.service.notification; import android.annotation.SystemApi; import android.annotation.TestApi; -import android.app.NotificationChannel; +import android.app.Notification; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -48,6 +48,12 @@ public final class Adjustment implements Parcelable { * {@link NotificationAssistantService#onNotificationSnoozedUntilContext}. */ public static final String KEY_SNOOZE_CRITERIA = "key_snooze_criteria"; + /** + * Data type: String. Used to change what {@link Notification#getGroup() group} a notification + * belongs to. + * @hide + */ + public static final String KEY_GROUP_KEY = "key_group_key"; /** * Create a notification adjustment. @@ -146,4 +152,11 @@ public final class Adjustment implements Parcelable { dest.writeBundle(mSignals); dest.writeInt(mUser); } + + @Override + public String toString() { + return "Adjustment{" + + "mSignals=" + mSignals + + '}'; + } } diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 76c96bd41475875ce0e64e19dd7bba1e7613297d..a5223fd8acd5c9727ed86db370192b9ffc35744b 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -16,35 +16,32 @@ package android.service.notification; -import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; -import android.annotation.TestApi; -import android.app.NotificationChannel; -import android.app.NotificationChannelGroup; -import android.companion.CompanionDeviceManager; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; - -import android.annotation.SystemApi; import android.annotation.SdkConstant; +import android.annotation.SystemApi; import android.app.INotificationManager; import android.app.Notification; import android.app.Notification.Builder; +import android.app.NotificationChannel; +import android.app.NotificationChannelGroup; import android.app.NotificationManager; import android.app.Service; +import android.companion.CompanionDeviceManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ParceledListSlice; +import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; -import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; +import android.os.Looper; +import android.os.Message; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; @@ -54,6 +51,7 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.widget.RemoteViews; + import com.android.internal.annotations.GuardedBy; import com.android.internal.os.SomeArgs; @@ -67,7 +65,7 @@ import java.util.List; * A service that receives calls from the system when new notifications are * posted or removed, or their ranking changed. *

      To extend this class, you must declare the service in your manifest file with - * the {@link Manifest.permission#BIND_NOTIFICATION_LISTENER_SERVICE} permission + * the {@link android.Manifest.permission#BIND_NOTIFICATION_LISTENER_SERVICE} permission * and include an intent filter with the {@link #SERVICE_INTERFACE} action. For example:

      *
        * <service android:name=".NotificationListener"
      @@ -199,6 +197,7 @@ public abstract class NotificationListenerService extends Service {
            * The full trim of the StatusBarNotification including all its features.
            *
            * @hide
      +     * @removed
            */
           @SystemApi
           public static final int TRIM_FULL = 0;
      @@ -219,6 +218,7 @@ public abstract class NotificationListenerService extends Service {
            * 
    * * @hide + * @removed */ @SystemApi public static final int TRIM_LIGHT = 1; @@ -605,9 +605,9 @@ public abstract class NotificationListenerService extends Service { * @param snoozeCriterionId The{@link SnoozeCriterion#getId()} of a context to snooze the * notification until. * @hide + * @removed */ @SystemApi - @TestApi public final void snoozeNotification(String key, String snoozeCriterionId) { if (!isBound()) return; try { @@ -749,6 +749,7 @@ public abstract class NotificationListenerService extends Service { * before performing this operation. * * @hide + * @removed * * @param trim trim of the notifications to be passed via {@link #onNotificationPosted}. * See TRIM_* constants. @@ -801,6 +802,7 @@ public abstract class NotificationListenerService extends Service { * current user). Useful when you don't know what's already been posted. * * @hide + * @removed * * @param trim trim of the notifications to be returned. See TRIM_* constants. * @return An array of active notifications, sorted in natural order. @@ -832,6 +834,7 @@ public abstract class NotificationListenerService extends Service { * more data out of those notifications. * * @hide + * @removed * * @param keys the keys of the notifications to request * @param trim trim of the notifications to be returned. See TRIM_* constants. @@ -1046,6 +1049,7 @@ public abstract class NotificationListenerService extends Service { * @param componentName the component that will consume the notification information * @param currentUser the user to use as the stream filter * @hide + * @removed */ @SystemApi public void registerAsSystemService(Context context, ComponentName componentName, @@ -1066,6 +1070,7 @@ public abstract class NotificationListenerService extends Service { *

    This method will fail for listeners that were not registered * with (@link registerAsService). * @hide + * @removed */ @SystemApi public void unregisterAsSystemService() throws RemoteException { @@ -1434,9 +1439,9 @@ public abstract class NotificationListenerService extends Service { * If the {@link NotificationAssistantService} has added people to this notification, then * this will be non-null. * @hide + * @removed */ @SystemApi - @TestApi public List getAdditionalPeople() { return mOverridePeople; } @@ -1446,9 +1451,9 @@ public abstract class NotificationListenerService extends Service { * user interface displays options for snoozing notifications these criteria should be * displayed as well. * @hide + * @removed */ @SystemApi - @TestApi public List getSnoozeCriteria() { return mSnoozeCriteria; } diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java index b22501823020a4ec1f386b80696e496e02d91355..7bec898ac347fee4eb2614796210f902d6fa9b97 100644 --- a/core/java/android/service/notification/ZenModeConfig.java +++ b/core/java/android/service/notification/ZenModeConfig.java @@ -85,7 +85,7 @@ public class ZenModeConfig implements Parcelable { private static final boolean DEFAULT_ALLOW_SCREEN_ON = true; private static final int XML_VERSION = 2; - private static final String ZEN_TAG = "zen"; + public static final String ZEN_TAG = "zen"; private static final String ZEN_ATT_VERSION = "version"; private static final String ZEN_ATT_USER = "user"; private static final String ALLOW_TAG = "allow"; @@ -712,7 +712,8 @@ public class ZenModeConfig implements Parcelable { int userHandle, boolean shortVersion) { final int num; String summary, line1, line2; - final CharSequence formattedTime = getFormattedTime(context, time, userHandle); + final CharSequence formattedTime = + getFormattedTime(context, time, isToday(time), userHandle); final Resources res = context.getResources(); if (minutes < 60) { // display as minutes @@ -738,33 +739,43 @@ public class ZenModeConfig implements Parcelable { // display as day/time summary = line1 = line2 = res.getString(R.string.zen_mode_until, formattedTime); } - final Uri id = toCountdownConditionId(time); + final Uri id = toCountdownConditionId(time, false); return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } - public static Condition toNextAlarmCondition(Context context, long now, long alarm, + /** + * Converts countdown to alarm parameters into a condition with user facing summary + */ + public static Condition toNextAlarmCondition(Context context, long alarm, int userHandle) { - final CharSequence formattedTime = getFormattedTime(context, alarm, userHandle); + boolean isSameDay = isToday(alarm); + final CharSequence formattedTime = getFormattedTime(context, alarm, isSameDay, userHandle); final Resources res = context.getResources(); - final String line1 = res.getString(R.string.zen_mode_alarm, formattedTime); - final Uri id = toCountdownConditionId(alarm); + final String line1 = res.getString(R.string.zen_mode_until, formattedTime); + final Uri id = toCountdownConditionId(alarm, true); return new Condition(id, "", line1, "", 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } - private static CharSequence getFormattedTime(Context context, long time, int userHandle) { - String skeleton = "EEE " + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); + private static CharSequence getFormattedTime(Context context, long time, boolean isSameDay, + int userHandle) { + String skeleton = (!isSameDay ? "EEE " : "") + + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); + final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); + return DateFormat.format(pattern, time); + } + + private static boolean isToday(long time) { GregorianCalendar now = new GregorianCalendar(); GregorianCalendar endTime = new GregorianCalendar(); endTime.setTimeInMillis(time); if (now.get(Calendar.YEAR) == endTime.get(Calendar.YEAR) && now.get(Calendar.MONTH) == endTime.get(Calendar.MONTH) && now.get(Calendar.DATE) == endTime.get(Calendar.DATE)) { - skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; + return true; } - final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); - return DateFormat.format(pattern, time); + return false; } // ==== Built-in system conditions ==== @@ -775,17 +786,24 @@ public class ZenModeConfig implements Parcelable { public static final String COUNTDOWN_PATH = "countdown"; - public static Uri toCountdownConditionId(long time) { + public static final String IS_ALARM_PATH = "alarm"; + + /** + * Converts countdown condition parameters into a condition id. + */ + public static Uri toCountdownConditionId(long time, boolean alarm) { return new Uri.Builder().scheme(Condition.SCHEME) .authority(SYSTEM_AUTHORITY) .appendPath(COUNTDOWN_PATH) .appendPath(Long.toString(time)) + .appendPath(IS_ALARM_PATH) + .appendPath(Boolean.toString(alarm)) .build(); } public static long tryParseCountdownConditionId(Uri conditionId) { if (!Condition.isValidId(conditionId, SYSTEM_AUTHORITY)) return 0; - if (conditionId.getPathSegments().size() != 2 + if (conditionId.getPathSegments().size() < 2 || !COUNTDOWN_PATH.equals(conditionId.getPathSegments().get(0))) return 0; try { return Long.parseLong(conditionId.getPathSegments().get(1)); @@ -795,10 +813,32 @@ public class ZenModeConfig implements Parcelable { } } + /** + * Returns whether this condition is a countdown condition. + */ public static boolean isValidCountdownConditionId(Uri conditionId) { return tryParseCountdownConditionId(conditionId) != 0; } + /** + * Returns whether this condition is a countdown to an alarm. + */ + public static boolean isValidCountdownToAlarmConditionId(Uri conditionId) { + if (tryParseCountdownConditionId(conditionId) != 0) { + if (conditionId.getPathSegments().size() < 4 + || !IS_ALARM_PATH.equals(conditionId.getPathSegments().get(2))) { + return false; + } + try { + return Boolean.parseBoolean(conditionId.getPathSegments().get(3)); + } catch (RuntimeException e) { + Slog.w(TAG, "Error parsing countdown alarm condition: " + conditionId, e); + return false; + } + } + return false; + } + // ==== Built-in system condition: schedule ==== public static final String SCHEDULE_PATH = "schedule"; diff --git a/core/java/android/service/oemlock/IOemLockService.aidl b/core/java/android/service/oemlock/IOemLockService.aidl index 682e7ee0992937f209febd41cdaa018c0a15b4be..d5e10d6629caa8416503a198182ffdeb2e53011b 100644 --- a/core/java/android/service/oemlock/IOemLockService.aidl +++ b/core/java/android/service/oemlock/IOemLockService.aidl @@ -28,7 +28,6 @@ interface IOemLockService { void setOemUnlockAllowedByUser(boolean allowed); boolean isOemUnlockAllowedByUser(); - boolean canUserAllowOemUnlock(); boolean isOemUnlockAllowed(); boolean isDeviceOemUnlocked(); } diff --git a/core/java/android/service/oemlock/OemLockManager.java b/core/java/android/service/oemlock/OemLockManager.java index 3a56d9f1bf4f8abde15ef97146f6d33dc27a08f8..f0d660354167bae7ebcc6950ad37440e4a6bfa2b 100644 --- a/core/java/android/service/oemlock/OemLockManager.java +++ b/core/java/android/service/oemlock/OemLockManager.java @@ -117,24 +117,6 @@ public class OemLockManager { } } - /** - * Returns whether all parties other than the user allow OEM unlock meaning the user can - * directly control whether or not the device can be OEM unlocked. - * - * If this is true, {@link #isOemUnlockAllowedByUser} is the same as {@link #isOemUnlockAllowed} - * - * @return Whether the user can directly control whether the device can be OEM unlocked. - * - * @hide - */ - public boolean canUserAllowOemUnlock() { - try { - return mService.canUserAllowOemUnlock(); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - /** * @return Whether the bootloader is able to OEM unlock the device. * diff --git a/core/java/android/service/persistentdata/PersistentDataBlockManager.java b/core/java/android/service/persistentdata/PersistentDataBlockManager.java index fa75ad33d2508222ef48facfc37fe306c68b6186..9332a5be78ccc3eeb6b1ebcf86c16504d2b43648 100644 --- a/core/java/android/service/persistentdata/PersistentDataBlockManager.java +++ b/core/java/android/service/persistentdata/PersistentDataBlockManager.java @@ -130,6 +130,7 @@ public class PersistentDataBlockManager { * * Returns -1 on error. */ + @SuppressLint("Doclava125") public long getMaximumDataBlockSize() { try { return sService.getMaximumDataBlockSize(); diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index fbc6fc6c3cd69dcc59c1246d02f39039f088d30d..8f79bcffa7765cf68089a310937f6461318b4c8a 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -262,8 +262,7 @@ public class VoiceInteractionService extends Service { * @param keyphrase The keyphrase that's being used, for example "Hello Android". * @param locale The locale for which the enrollment needs to be performed. * @param callback The callback to notify of detection events. - * @return An always-on hotword detector for the given keyphrase and locale. Is null if the - * keyphrase and locale is not supported. + * @return An always-on hotword detector for the given keyphrase and locale. */ public final AlwaysOnHotwordDetector createAlwaysOnHotwordDetector( String keyphrase, Locale locale, AlwaysOnHotwordDetector.Callback callback) { @@ -273,10 +272,8 @@ public class VoiceInteractionService extends Service { synchronized (mLock) { // Allow only one concurrent recognition via the APIs. safelyShutdownHotwordDetector(); - if (isKeyphraseAndLocaleSupportedForHotword(keyphrase, locale)) { - mHotwordDetector = new AlwaysOnHotwordDetector(keyphrase, locale, callback, - mKeyphraseEnrollmentInfo, mInterface, mSystemService); - } + mHotwordDetector = new AlwaysOnHotwordDetector(keyphrase, locale, callback, + mKeyphraseEnrollmentInfo, mInterface, mSystemService); } return mHotwordDetector; } diff --git a/core/java/android/service/vr/IVrManager.aidl b/core/java/android/service/vr/IVrManager.aidl index 9b37a654ab9840c80989499b2c79bd359a829240..fef92230e7b8117518c92bca82279326c3bf78a7 100644 --- a/core/java/android/service/vr/IVrManager.aidl +++ b/core/java/android/service/vr/IVrManager.aidl @@ -58,6 +58,13 @@ interface IVrManager { */ boolean getVrModeState(); + /** + * Returns the current Persistent VR mode state. + * + * @return {@code true} if Persistent VR mode is enabled. + */ + boolean getPersistentVrModeEnabled(); + /** * Sets the persistent VR mode state of a device. When a device is in persistent VR mode it will * remain in VR mode even if the foreground does not specify VR mode being enabled. Mainly used @@ -86,5 +93,13 @@ interface IVrManager { * currently, else return the display id of the virtual display */ int getVr2dDisplayId(); + + /** + * Set the component name of the compositor service to bind. + * + * @param componentName flattened string representing a ComponentName of a Service in the + * application's compositor process to bind to, or null to clear the current binding. + */ + void setAndBindCompositor(in String componentName); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 5ef60a5a586885eaf828c0584e64b652d81dd81b..1c6275fb8dc136b0e4bc8d124c7c159b3729e3c8 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -33,10 +33,12 @@ import android.graphics.drawable.Drawable; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; import android.os.Bundle; +import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.RemoteException; +import android.os.SystemClock; import android.util.Log; import android.util.MergedConfiguration; import android.view.Display; @@ -54,6 +56,7 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.WindowManagerGlobal; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.HandlerCaller; import com.android.internal.view.BaseIWindow; import com.android.internal.view.BaseSurfaceHolder; @@ -61,6 +64,7 @@ import com.android.internal.view.BaseSurfaceHolder; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.function.Supplier; /** * A wallpaper service is responsible for showing a live wallpaper behind @@ -106,7 +110,9 @@ public abstract class WallpaperService extends Service { private static final int MSG_WINDOW_MOVED = 10035; private static final int MSG_TOUCH_EVENT = 10040; private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050; - + + private static final int NOTIFY_COLORS_RATE_LIMIT_MS = 1000; + private final ArrayList mActiveEngines = new ArrayList(); @@ -186,6 +192,12 @@ public abstract class WallpaperService extends Service { boolean mPendingSync; MotionEvent mPendingMove; + // Needed for throttling onComputeColors. + private long mLastColorInvalidation; + private final Runnable mNotifyColorsChanged = this::notifyColorsChanged; + private final Supplier mClockFunction; + private final Handler mHandler; + DisplayManager mDisplayManager; Display mDisplay; private int mDisplayState; @@ -351,6 +363,26 @@ public abstract class WallpaperService extends Service { } } }; + + /** + * Default constructor + */ + public Engine() { + this(SystemClock::elapsedRealtime, Handler.getMain()); + } + + /** + * Constructor used for test purposes. + * + * @param clockFunction Supplies current times in millis. + * @param handler Used for posting/deferring asynchronous calls. + * @hide + */ + @VisibleForTesting + public Engine(Supplier clockFunction, Handler handler) { + mClockFunction = clockFunction; + mHandler = handler; + } /** * Provides access to the surface in which this wallpaper is drawn. @@ -548,32 +580,49 @@ public abstract class WallpaperService extends Service { /** * Notifies the engine that wallpaper colors changed significantly. - * This will trigger a {@link #onComputeWallpaperColors()} call. - * @hide + * This will trigger a {@link #onComputeColors()} call. */ - public void invalidateColors() { + public void notifyColorsChanged() { + final long now = mClockFunction.get(); + if (now - mLastColorInvalidation < NOTIFY_COLORS_RATE_LIMIT_MS) { + Log.w(TAG, "This call has been deferred. You should only call " + + "notifyColorsChanged() once every " + + (NOTIFY_COLORS_RATE_LIMIT_MS / 1000f) + " seconds."); + if (!mHandler.hasCallbacks(mNotifyColorsChanged)) { + mHandler.postDelayed(mNotifyColorsChanged, NOTIFY_COLORS_RATE_LIMIT_MS); + } + return; + } + mLastColorInvalidation = now; + mHandler.removeCallbacks(mNotifyColorsChanged); + try { - mConnection.onWallpaperColorsChanged(onComputeWallpaperColors()); + final WallpaperColors newColors = onComputeColors(); + if (mConnection != null) { + mConnection.onWallpaperColorsChanged(newColors); + } else { + Log.w(TAG, "Can't notify system because wallpaper connection " + + "was not established."); + } } catch (RemoteException e) { - Log.w(TAG, "Can't invalidate wallpaper colors because " + - "wallpaper connection was lost", e); + Log.w(TAG, "Can't notify system because wallpaper connection was lost.", e); } } /** - * Notifies the system about what colors the wallpaper is using. - * You might return null if no color information is available at the moment. In that case - * you might want to call {@link #invalidateColors()} in a near future. + * Called by the system when it needs to know what colors the wallpaper is using. + * You might return null if no color information is available at the moment. + * In that case you might want to call {@link #notifyColorsChanged()} when + * color information becomes available. *

    - * The simplest way of creating A {@link android.app.WallpaperColors} object is by using + * The simplest way of creating a {@link android.app.WallpaperColors} object is by using * {@link android.app.WallpaperColors#fromBitmap(Bitmap)} or * {@link android.app.WallpaperColors#fromDrawable(Drawable)}, but you can also specify - * your main colors and dark text support explicitly using one of the constructors. + * your main colors by constructing a {@link android.app.WallpaperColors} object manually. * * @return Wallpaper colors. - * @hide */ - public @Nullable WallpaperColors onComputeWallpaperColors() { + public @Nullable WallpaperColors onComputeColors() { return null; } @@ -629,8 +678,7 @@ public abstract class WallpaperService extends Service { } Message msg = mCaller.obtainMessageO(MSG_TOUCH_EVENT, event); mCaller.sendMessage(msg); - } else { - event.recycle(); + } else {event.recycle(); } } @@ -896,7 +944,7 @@ public abstract class WallpaperService extends Service { " w=" + mLayout.width + " h=" + mLayout.height); } } - + void attach(IWallpaperEngineWrapper wrapper) { if (DEBUG) Log.v(TAG, "attach: " + this + " wrapper=" + wrapper); if (mDestroyed) { @@ -1280,7 +1328,7 @@ public abstract class WallpaperService extends Service { break; } try { - mConnection.onWallpaperColorsChanged(mEngine.onComputeWallpaperColors()); + mConnection.onWallpaperColorsChanged(mEngine.onComputeColors()); } catch (RemoteException e) { // Connection went away, nothing to do in here. } diff --git a/core/java/android/text/InputFilter.java b/core/java/android/text/InputFilter.java index bff09a20e59507c49fefd4747ceeb991b7243e3c..a507f2b373fc1b10d2dd7617839cfe7c2c857aa8 100644 --- a/core/java/android/text/InputFilter.java +++ b/core/java/android/text/InputFilter.java @@ -16,6 +16,12 @@ package android.text; +import android.annotation.NonNull; + +import com.android.internal.util.Preconditions; + +import java.util.Locale; + /** * InputFilters can be attached to {@link Editable}s to constrain the * changes that can be made to them. @@ -33,40 +39,123 @@ public interface InputFilter * as this is what happens when you delete text. Also beware that * you should not attempt to make any changes to dest * from this method; you may only examine it for context. - * + * * Note: If source is an instance of {@link Spanned} or - * {@link Spannable}, the span objects in the source should be - * copied into the filtered result (i.e. the non-null return value). - * {@link TextUtils#copySpansFrom} can be used for convenience. + * {@link Spannable}, the span objects in the source should be + * copied into the filtered result (i.e. the non-null return value). + * {@link TextUtils#copySpansFrom} can be used for convenience if the + * span boundary indices would be remaining identical relative to the source. */ public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend); /** - * This filter will capitalize all the lower case letters that are added - * through edits. + * This filter will capitalize all the lowercase and titlecase letters that are added + * through edits. (Note that if there are no lowercase or titlecase letters in the input, the + * text would not be transformed, even if the result of capitalization of the string is + * different from the string.) */ public static class AllCaps implements InputFilter { + private final Locale mLocale; + + public AllCaps() { + mLocale = null; + } + + /** + * Constructs a locale-specific AllCaps filter, to make sure capitalization rules of that + * locale are used for transforming the sequence. + */ + public AllCaps(@NonNull Locale locale) { + Preconditions.checkNotNull(locale); + mLocale = locale; + } + public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { - for (int i = start; i < end; i++) { - if (Character.isLowerCase(source.charAt(i))) { - char[] v = new char[end - start]; - TextUtils.getChars(source, start, end, v, 0); - String s = new String(v).toUpperCase(); - - if (source instanceof Spanned) { - SpannableString sp = new SpannableString(s); - TextUtils.copySpansFrom((Spanned) source, - start, end, null, sp, 0); - return sp; - } else { - return s; - } + final CharSequence wrapper = new CharSequenceWrapper(source, start, end); + + boolean lowerOrTitleFound = false; + final int length = end - start; + for (int i = 0, cp; i < length; i += Character.charCount(cp)) { + // We access 'wrapper' instead of 'source' to make sure no code unit beyond 'end' is + // ever accessed. + cp = Character.codePointAt(wrapper, i); + if (Character.isLowerCase(cp) || Character.isTitleCase(cp)) { + lowerOrTitleFound = true; + break; + } + } + if (!lowerOrTitleFound) { + return null; // keep original + } + + final boolean copySpans = source instanceof Spanned; + final CharSequence upper = TextUtils.toUpperCase(mLocale, wrapper, copySpans); + if (upper == wrapper) { + // Nothing was changed in the uppercasing operation. This is weird, since + // we had found at least one lowercase or titlecase character. But we can't + // do anything better than keeping the original in this case. + return null; // keep original + } + // Return a SpannableString or String for backward compatibility. + return copySpans ? new SpannableString(upper) : upper.toString(); + } + + private static class CharSequenceWrapper implements CharSequence, Spanned { + private final CharSequence mSource; + private final int mStart, mEnd; + private final int mLength; + + CharSequenceWrapper(CharSequence source, int start, int end) { + mSource = source; + mStart = start; + mEnd = end; + mLength = end - start; + } + + public int length() { + return mLength; + } + + public char charAt(int index) { + if (index < 0 || index >= mLength) { + throw new IndexOutOfBoundsException(); } + return mSource.charAt(mStart + index); + } + + public CharSequence subSequence(int start, int end) { + if (start < 0 || end < 0 || end > mLength || start > end) { + throw new IndexOutOfBoundsException(); + } + return new CharSequenceWrapper(mSource, mStart + start, mStart + end); + } + + public String toString() { + return mSource.subSequence(mStart, mEnd).toString(); + } + + public T[] getSpans(int start, int end, Class type) { + return ((Spanned) mSource).getSpans(mStart + start, mStart + end, type); + } + + public int getSpanStart(Object tag) { + return ((Spanned) mSource).getSpanStart(tag) - mStart; } - return null; // keep original + public int getSpanEnd(Object tag) { + return ((Spanned) mSource).getSpanEnd(tag) - mStart; + } + + public int getSpanFlags(Object tag) { + return ((Spanned) mSource).getSpanFlags(tag); + } + + public int nextSpanTransition(int start, int limit, Class type) { + return ((Spanned) mSource).nextSpanTransition(mStart + start, mStart + limit, type) + - mStart; + } } } diff --git a/core/java/android/text/InputType.java b/core/java/android/text/InputType.java index 8967b709a04f421f021aafc607a56c984ba40c72..f38482e6fdd1ef6b769f4f8a4ce01c993ea37859 100644 --- a/core/java/android/text/InputType.java +++ b/core/java/android/text/InputType.java @@ -182,9 +182,9 @@ public interface InputType { * want the IME to correct typos. * Note the contrast with {@link #TYPE_TEXT_FLAG_AUTO_CORRECT} and * {@link #TYPE_TEXT_FLAG_AUTO_COMPLETE}: - * {@code TYPE_TEXT_FLAG_NO_SUGGESTIONS} means the IME should never + * {@code TYPE_TEXT_FLAG_NO_SUGGESTIONS} means the IME does not need to * show an interface to display suggestions. Most IMEs will also take this to - * mean they should not try to auto-correct what the user is typing. + * mean they do not need to try to auto-correct what the user is typing. */ public static final int TYPE_TEXT_FLAG_NO_SUGGESTIONS = 0x00080000; diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index 74ff6dc0ec7f47bb0f3668069a13c91afe559279..a03a4fbd52437a3e1ea8c9414cad7a1faa9651e5 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -18,6 +18,7 @@ package android.text; import android.annotation.Nullable; import android.graphics.Paint; +import android.os.LocaleList; import android.text.style.LeadingMarginSpan; import android.text.style.LeadingMarginSpan.LeadingMarginSpan2; import android.text.style.LineHeightSpan; @@ -333,6 +334,16 @@ public class StaticLayout extends Layout { return this; } + private long[] getHyphenators(LocaleList locales) { + final int length = locales.size(); + final long[] result = new long[length]; + for (int i = 0; i < length; i++) { + final Locale locale = locales.get(i); + result[i] = Hyphenator.get(locale).getNativePtr(); + } + return result; + } + /** * Measurement and break iteration is done in native code. The protocol for using * the native code is as follows. @@ -342,7 +353,7 @@ public class StaticLayout extends Layout { * future). * * Then, for each run within the paragraph: - * - setLocale (this must be done at least for the first run, optional afterwards) + * - setLocales (this must be done at least for the first run, optional afterwards) * - one of the following, depending on the type of run: * + addStyleRun (a text run, to be measured in native code) * + addMeasuredRun (a run already measured in Java, passed into native code) @@ -354,15 +365,15 @@ public class StaticLayout extends Layout { * After all paragraphs, call finish() to release expensive buffers. */ - private void setLocale(Locale locale) { - if (!locale.equals(mLocale)) { - nSetLocale(mNativePtr, locale.toLanguageTag(), - Hyphenator.get(locale).getNativePtr()); - mLocale = locale; + private void setLocales(LocaleList locales) { + if (!locales.equals(mLocales)) { + nSetLocales(mNativePtr, locales.toLanguageTags(), getHyphenators(locales)); + mLocales = locales; } } /* package */ float addStyleRun(TextPaint paint, int start, int end, boolean isRtl) { + setLocales(paint.getTextLocales()); return nAddStyleRun(mNativePtr, paint.getNativeInstance(), paint.mNativeTypeface, start, end, isRtl); } @@ -425,7 +436,7 @@ public class StaticLayout extends Layout { // This will go away and be subsumed by native builder code MeasuredText mMeasuredText; - Locale mLocale; + LocaleList mLocales; private static final SynchronizedPool sPool = new SynchronizedPool(3); } @@ -594,9 +605,11 @@ public class StaticLayout extends Layout { // store fontMetrics per span range // must be a multiple of 4 (and > 0) (store top, bottom, ascent, and descent per range) int[] fmCache = new int[4 * 4]; - b.setLocale(paint.getTextLocale()); // TODO: also respect LocaleSpan within the text + b.setLocales(paint.getTextLocales()); mLineCount = 0; + mEllipsized = false; + mMaxLineHeight = mMaximumVisibleLineCount < 1 ? 0 : DEFAULT_MAX_LINE_HEIGHT; int v = 0; boolean needMultiply = (spacingmult != 1 || spacingadd != 0); @@ -1308,7 +1321,8 @@ public class StaticLayout extends Layout { /* package */ static native long nLoadHyphenator(ByteBuffer buf, int offset, int minPrefix, int minSuffix); - private static native void nSetLocale(long nativePtr, String locale, long nativeHyphenator); + private static native void nSetLocales(long nativePtr, String locales, + long[] nativeHyphenators); private static native void nSetIndents(long nativePtr, int[] indents); @@ -1354,7 +1368,7 @@ public class StaticLayout extends Layout { * The value is the same as getLineTop(maxLines) for ellipsized version where structurally no * more than maxLines is contained. */ - private int mMaxLineHeight = -1; + private int mMaxLineHeight = DEFAULT_MAX_LINE_HEIGHT; private static final int COLUMNS_NORMAL = 4; private static final int COLUMNS_ELLIPSIZE = 6; @@ -1382,6 +1396,8 @@ public class StaticLayout extends Layout { private static final double EXTRA_ROUNDING = 0.5; + private static final int DEFAULT_MAX_LINE_HEIGHT = -1; + // This is used to return three arrays from a single JNI call when // performing line breaking /*package*/ static class LineBreaks { diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index e4ed62a1ead9ecdef91a745c8a98ba81ed84052a..2dbff100375a4d9a5b73929d4ec0a647beb58a3d 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -72,8 +72,8 @@ class TextLine { private final SpanSet mReplacementSpanSpanSet = new SpanSet(ReplacementSpan.class); - private final UnderlineInfo mUnderlineInfo = new UnderlineInfo(); - private final ArrayList mUnderlines = new ArrayList(); + private final DecorationInfo mDecorationInfo = new DecorationInfo(); + private final ArrayList mDecorations = new ArrayList(); private static final TextLine[] sCached = new TextLine[3]; @@ -704,9 +704,9 @@ class TextLine { fmi.leading = Math.max(fmi.leading, previousLeading); } - private static void drawUnderline(TextPaint wp, Canvas c, int color, float thickness, - float xleft, float xright, float baseline) { - final float underlineTop = baseline + wp.baselineShift + wp.getUnderlinePosition(); + private static void drawStroke(TextPaint wp, Canvas c, int color, float position, + float thickness, float xleft, float xright, float baseline) { + final float strokeTop = baseline + wp.baselineShift + position; final int previousColor = wp.getColor(); final Paint.Style previousStyle = wp.getStyle(); @@ -716,7 +716,7 @@ class TextLine { wp.setAntiAlias(true); wp.setColor(color); - c.drawRect(xleft, underlineTop, xright, underlineTop + thickness, wp); + c.drawRect(xleft, strokeTop, xright, strokeTop + thickness, wp); wp.setStyle(previousStyle); wp.setColor(previousColor); @@ -750,7 +750,7 @@ class TextLine { * @param fmi receives metrics information, can be null * @param needWidth true if the width of the run is needed * @param offset the offset for the purpose of measuring - * @param underlines the list of locations and paremeters for drawing underlines + * @param decorations the list of locations and paremeters for drawing decorations * @return the signed width of the run based on the run direction; only * valid if needWidth is true */ @@ -758,7 +758,7 @@ class TextLine { int contextStart, int contextEnd, boolean runIsRtl, Canvas c, float x, int top, int y, int bottom, FontMetricsInt fmi, boolean needWidth, int offset, - @Nullable ArrayList underlines) { + @Nullable ArrayList decorations) { wp.setWordSpacing(mAddedWidth); // Get metrics first (even for empty strings or "0" width runs) @@ -773,8 +773,8 @@ class TextLine { float totalWidth = 0; - final int numUnderlines = underlines == null ? 0 : underlines.size(); - if (needWidth || (c != null && (wp.bgColor != 0 || numUnderlines != 0 || runIsRtl))) { + final int numDecorations = decorations == null ? 0 : decorations.size(); + if (needWidth || (c != null && (wp.bgColor != 0 || numDecorations != 0 || runIsRtl))) { totalWidth = getRunAdvance(wp, start, end, contextStart, contextEnd, runIsRtl, offset); } @@ -800,35 +800,44 @@ class TextLine { wp.setColor(previousColor); } - if (numUnderlines != 0) { - for (int i = 0; i < numUnderlines; i++) { - final UnderlineInfo info = underlines.get(i); - - final int underlineStart = Math.max(info.start, start); - final int underlineEnd = Math.min(info.end, offset); - float underlineStartAdvance = getRunAdvance( - wp, start, end, contextStart, contextEnd, runIsRtl, underlineStart); - float underlineEndAdvance = getRunAdvance( - wp, start, end, contextStart, contextEnd, runIsRtl, underlineEnd); - final float underlineXLeft, underlineXRight; + if (numDecorations != 0) { + for (int i = 0; i < numDecorations; i++) { + final DecorationInfo info = decorations.get(i); + + final int decorationStart = Math.max(info.start, start); + final int decorationEnd = Math.min(info.end, offset); + float decorationStartAdvance = getRunAdvance( + wp, start, end, contextStart, contextEnd, runIsRtl, decorationStart); + float decorationEndAdvance = getRunAdvance( + wp, start, end, contextStart, contextEnd, runIsRtl, decorationEnd); + final float decorationXLeft, decorationXRight; if (runIsRtl) { - underlineXLeft = rightX - underlineEndAdvance; - underlineXRight = rightX - underlineStartAdvance; + decorationXLeft = rightX - decorationEndAdvance; + decorationXRight = rightX - decorationStartAdvance; } else { - underlineXLeft = leftX + underlineStartAdvance; - underlineXRight = leftX + underlineEndAdvance; + decorationXLeft = leftX + decorationStartAdvance; + decorationXRight = leftX + decorationEndAdvance; } // Theoretically, there could be cases where both Paint's and TextPaint's // setUnderLineText() are called. For backward compatibility, we need to draw // both underlines, the one with custom color first. if (info.underlineColor != 0) { - drawUnderline(wp, c, info.underlineColor, info.underlineThickness, - underlineXLeft, underlineXRight, y); + drawStroke(wp, c, info.underlineColor, wp.getUnderlinePosition(), + info.underlineThickness, decorationXLeft, decorationXRight, y); } if (info.isUnderlineText) { - drawUnderline(wp, c, wp.getColor(), ((Paint) wp).getUnderlineThickness(), - underlineXLeft, underlineXRight, y); + final float thickness = + Math.max(((Paint) wp).getUnderlineThickness(), 1.0f); + drawStroke(wp, c, wp.getColor(), wp.getUnderlinePosition(), thickness, + decorationXLeft, decorationXRight, y); + } + + if (info.isStrikeThruText) { + final float thickness = + Math.max(((Paint) wp).getStrikeThruThickness(), 1.0f); + drawStroke(wp, c, wp.getColor(), wp.getStrikeThruPosition(), thickness, + decorationXLeft, decorationXRight, y); } } } @@ -917,20 +926,22 @@ class TextLine { return result; } - private static final class UnderlineInfo { + private static final class DecorationInfo { + public boolean isStrikeThruText; public boolean isUnderlineText; public int underlineColor; public float underlineThickness; public int start = -1; public int end = -1; - public boolean hasUnderline() { - return isUnderlineText || underlineColor != 0; + public boolean hasDecoration() { + return isStrikeThruText || isUnderlineText || underlineColor != 0; } // Copies the info, but not the start and end range. - public UnderlineInfo copyInfo() { - final UnderlineInfo copy = new UnderlineInfo(); + public DecorationInfo copyInfo() { + final DecorationInfo copy = new DecorationInfo(); + copy.isStrikeThruText = isStrikeThruText; copy.isUnderlineText = isUnderlineText; copy.underlineColor = underlineColor; copy.underlineThickness = underlineThickness; @@ -938,7 +949,11 @@ class TextLine { } } - private void extractUnderlineInfo(@NonNull TextPaint paint, @NonNull UnderlineInfo info) { + private void extractDecorationInfo(@NonNull TextPaint paint, @NonNull DecorationInfo info) { + info.isStrikeThruText = paint.isStrikeThruText(); + if (info.isStrikeThruText) { + paint.setStrikeThruText(false); + } info.isUnderlineText = paint.isUnderlineText(); if (info.isUnderlineText) { paint.setUnderlineText(false); @@ -986,7 +1001,17 @@ class TextLine { return 0f; } + final boolean needsSpanMeasurement; if (mSpanned == null) { + needsSpanMeasurement = false; + } else { + mMetricAffectingSpanSpanSet.init(mSpanned, mStart + start, mStart + limit); + mCharacterStyleSpanSet.init(mSpanned, mStart + start, mStart + limit); + needsSpanMeasurement = mMetricAffectingSpanSpanSet.numberOfSpans != 0 + || mCharacterStyleSpanSet.numberOfSpans != 0; + } + + if (!needsSpanMeasurement) { final TextPaint wp = mWorkPaint; wp.set(mPaint); wp.setHyphenEdit(adjustHyphenEdit(start, limit, wp.getHyphenEdit())); @@ -994,9 +1019,6 @@ class TextLine { y, bottom, fmi, needWidth, measureLimit, null); } - mMetricAffectingSpanSpanSet.init(mSpanned, mStart + start, mStart + limit); - mCharacterStyleSpanSet.init(mSpanned, mStart + start, mStart + limit); - // Shaping needs to take into account context up to metric boundaries, // but rendering needs to take into account character style boundaries. // So we iterate through metric runs to get metric bounds, @@ -1038,8 +1060,8 @@ class TextLine { activePaint.set(mPaint); int activeStart = i; int activeEnd = mlimit; - final UnderlineInfo underlineInfo = mUnderlineInfo; - mUnderlines.clear(); + final DecorationInfo decorationInfo = mDecorationInfo; + mDecorations.clear(); for (int j = i, jnext; j < mlimit; j = jnext) { jnext = mCharacterStyleSpanSet.getNextTransition(mStart + j, mStart + inext) - mStart; @@ -1055,7 +1077,7 @@ class TextLine { span.updateDrawState(wp); } - extractUnderlineInfo(wp, underlineInfo); + extractDecorationInfo(wp, decorationInfo); if (j == i) { // First chunk of text. We can't handle it yet, since we may need to merge it @@ -1070,24 +1092,24 @@ class TextLine { activeStart, activeEnd, mPaint.getHyphenEdit())); x += handleText(activePaint, activeStart, activeEnd, i, inext, runIsRtl, c, x, top, y, bottom, fmi, needWidth || activeEnd < measureLimit, - Math.min(activeEnd, mlimit), mUnderlines); + Math.min(activeEnd, mlimit), mDecorations); activeStart = j; activePaint.set(wp); - mUnderlines.clear(); + mDecorations.clear(); } else { // The present TextPaint is substantially equal to the last TextPaint except - // perhaps for underlines. We just need to expand the active piece of text to + // perhaps for decorations. We just need to expand the active piece of text to // include the present chunk, which we always do anyway. We don't need to save // wp to activePaint, since they are already equal. } activeEnd = jnext; - if (underlineInfo.hasUnderline()) { - final UnderlineInfo copy = underlineInfo.copyInfo(); + if (decorationInfo.hasDecoration()) { + final DecorationInfo copy = decorationInfo.copyInfo(); copy.start = j; copy.end = jnext; - mUnderlines.add(copy); + mDecorations.add(copy); } } // Handle the final piece of text. @@ -1095,7 +1117,7 @@ class TextLine { activeStart, activeEnd, mPaint.getHyphenEdit())); x += handleText(activePaint, activeStart, activeEnd, i, inext, runIsRtl, c, x, top, y, bottom, fmi, needWidth || activeEnd < measureLimit, - Math.min(activeEnd, mlimit), mUnderlines); + Math.min(activeEnd, mlimit), mDecorations); } return x - originalX; diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java index 3baadd4c64c5a7e5b26ec6856845bb0a1f68189f..3e64af47c27684e01de738c210611841cdf07bea 100644 --- a/core/java/android/text/TextUtils.java +++ b/core/java/android/text/TextUtils.java @@ -23,6 +23,8 @@ import android.annotation.PluralsRes; import android.content.Context; import android.content.res.Resources; import android.icu.lang.UCharacter; +import android.icu.text.CaseMap; +import android.icu.text.Edits; import android.icu.util.ULocale; import android.os.Parcel; import android.os.Parcelable; @@ -481,6 +483,14 @@ public class TextUtils { return isEmpty(s) ? 0 : s.length(); } + /** + * @return interned string if it's null. + * @hide + */ + public static String safeIntern(String s) { + return (s != null) ? s.intern() : null; + } + /** * Returns the length that the specified CharSequence would have if * spaces and ASCII control characters were trimmed from the start and end, @@ -1072,6 +1082,75 @@ public class TextUtils { } } + /** + * Transforms a CharSequences to uppercase, copying the sources spans and keeping them spans as + * much as possible close to their relative original places. In the case the the uppercase + * string is identical to the sources, the source itself is returned instead of being copied. + * + * If copySpans is set, source must be an instance of Spanned. + * + * {@hide} + */ + @NonNull + public static CharSequence toUpperCase(@Nullable Locale locale, @NonNull CharSequence source, + boolean copySpans) { + final Edits edits = new Edits(); + if (!copySpans) { // No spans. Just uppercase the characters. + final StringBuilder result = CaseMap.toUpper().apply( + locale, source, new StringBuilder(), edits); + return edits.hasChanges() ? result : source; + } + + final SpannableStringBuilder result = CaseMap.toUpper().apply( + locale, source, new SpannableStringBuilder(), edits); + if (!edits.hasChanges()) { + // No changes happened while capitalizing. We can return the source as it was. + return source; + } + + final Edits.Iterator iterator = edits.getFineIterator(); + final int sourceLength = source.length(); + final Spanned spanned = (Spanned) source; + final Object[] spans = spanned.getSpans(0, sourceLength, Object.class); + for (Object span : spans) { + final int sourceStart = spanned.getSpanStart(span); + final int sourceEnd = spanned.getSpanEnd(span); + final int flags = spanned.getSpanFlags(span); + // Make sure the indices are not at the end of the string, since in that case + // iterator.findSourceIndex() would fail. + final int destStart = sourceStart == sourceLength ? result.length() : + toUpperMapToDest(iterator, sourceStart); + final int destEnd = sourceEnd == sourceLength ? result.length() : + toUpperMapToDest(iterator, sourceEnd); + result.setSpan(span, destStart, destEnd, flags); + } + return result; + } + + // helper method for toUpperCase() + private static int toUpperMapToDest(Edits.Iterator iterator, int sourceIndex) { + // Guaranteed to succeed if sourceIndex < source.length(). + iterator.findSourceIndex(sourceIndex); + if (sourceIndex == iterator.sourceIndex()) { + return iterator.destinationIndex(); + } + // We handle the situation differently depending on if we are in the changed slice or an + // unchanged one: In an unchanged slice, we can find the exact location the span + // boundary was before and map there. + // + // But in a changed slice, we need to treat the whole destination slice as an atomic unit. + // We adjust the span boundary to the end of that slice to reduce of the chance of adjacent + // spans in the source overlapping in the result. (The choice for the end vs the beginning + // is somewhat arbitrary, but was taken because we except to see slightly more spans only + // affecting a base character compared to spans only affecting a combining character.) + if (iterator.hasChange()) { + return iterator.destinationIndex() + iterator.newLength(); + } else { + // Move the index 1:1 along with this unchanged piece of text. + return iterator.destinationIndex() + (sourceIndex - iterator.sourceIndex()); + } + } + public enum TruncateAt { START, MIDDLE, diff --git a/core/java/android/text/format/Formatter.java b/core/java/android/text/format/Formatter.java index b67ac9840d6047b0d5cdd2b985bc0601dba411a6..2c83fc4d904959c78f88e80c35f2933a99071220 100644 --- a/core/java/android/text/format/Formatter.java +++ b/core/java/android/text/format/Formatter.java @@ -20,11 +20,20 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.res.Resources; +import android.icu.text.DecimalFormat; +import android.icu.text.MeasureFormat; +import android.icu.text.NumberFormat; +import android.icu.text.UnicodeSet; +import android.icu.text.UnicodeSetSpanner; +import android.icu.util.Measure; +import android.icu.util.MeasureUnit; import android.net.NetworkUtils; import android.text.BidiFormatter; import android.text.TextUtils; import android.view.View; +import java.lang.reflect.Constructor; +import java.math.BigDecimal; import java.util.Locale; /** @@ -33,6 +42,8 @@ import java.util.Locale; */ public final class Formatter { + /** {@hide} */ + public static final int FLAG_DEFAULT = 0; /** {@hide} */ public static final int FLAG_SHORTER = 1 << 0; /** {@hide} */ @@ -51,9 +62,15 @@ public final class Formatter { } } - /* Wraps the source string in bidi formatting characters in RTL locales */ + private static Locale localeFromContext(@NonNull Context context) { + return context.getResources().getConfiguration().getLocales().get(0); + } + + /** + * Wraps the source string in bidi formatting characters in RTL locales. + */ private static String bidiWrap(@NonNull Context context, String source) { - final Locale locale = context.getResources().getConfiguration().locale; + final Locale locale = localeFromContext(context); if (TextUtils.getLayoutDirectionFromLocale(locale) == View.LAYOUT_DIRECTION_RTL) { return BidiFormatter.getInstance(true /* RTL*/).unicodeWrap(source); } else { @@ -80,12 +97,7 @@ public final class Formatter { * @return formatted string with the number */ public static String formatFileSize(@Nullable Context context, long sizeBytes) { - if (context == null) { - return ""; - } - final BytesResult res = formatBytes(context.getResources(), sizeBytes, 0); - return bidiWrap(context, context.getString(com.android.internal.R.string.fileSizeSuffix, - res.value, res.units)); + return formatFileSize(context, sizeBytes, FLAG_DEFAULT); } /** @@ -93,88 +105,207 @@ public final class Formatter { * (showing fewer digits of precision). */ public static String formatShortFileSize(@Nullable Context context, long sizeBytes) { + return formatFileSize(context, sizeBytes, FLAG_SHORTER); + } + + private static String formatFileSize(@Nullable Context context, long sizeBytes, int flags) { if (context == null) { return ""; } - final BytesResult res = formatBytes(context.getResources(), sizeBytes, FLAG_SHORTER); - return bidiWrap(context, context.getString(com.android.internal.R.string.fileSizeSuffix, - res.value, res.units)); + final RoundedBytesResult res = RoundedBytesResult.roundBytes(sizeBytes, flags); + return bidiWrap(context, formatRoundedBytesResult(context, res)); } - /** {@hide} */ - public static BytesResult formatBytes(Resources res, long sizeBytes, int flags) { - final boolean isNegative = (sizeBytes < 0); - float result = isNegative ? -sizeBytes : sizeBytes; - int suffix = com.android.internal.R.string.byteShort; - long mult = 1; - if (result > 900) { - suffix = com.android.internal.R.string.kilobyteShort; - mult = 1000; - result = result / 1000; + private static String getSuffixOverride(@NonNull Resources res, MeasureUnit unit) { + if (unit == MeasureUnit.BYTE) { + return res.getString(com.android.internal.R.string.byteShort); + } else { // unit == PETABYTE + return res.getString(com.android.internal.R.string.petabyteShort); } - if (result > 900) { - suffix = com.android.internal.R.string.megabyteShort; - mult *= 1000; - result = result / 1000; + } + + private static NumberFormat getNumberFormatter(Locale locale, int fractionDigits) { + final NumberFormat numberFormatter = NumberFormat.getInstance(locale); + numberFormatter.setMinimumFractionDigits(fractionDigits); + numberFormatter.setMaximumFractionDigits(fractionDigits); + numberFormatter.setGroupingUsed(false); + if (numberFormatter instanceof DecimalFormat) { + // We do this only for DecimalFormat, since in the general NumberFormat case, calling + // setRoundingMode may throw an exception. + numberFormatter.setRoundingMode(BigDecimal.ROUND_HALF_UP); } - if (result > 900) { - suffix = com.android.internal.R.string.gigabyteShort; - mult *= 1000; - result = result / 1000; + return numberFormatter; + } + + private static String deleteFirstFromString(String source, String toDelete) { + final int location = source.indexOf(toDelete); + if (location == -1) { + return source; + } else { + return source.substring(0, location) + + source.substring(location + toDelete.length(), source.length()); } - if (result > 900) { - suffix = com.android.internal.R.string.terabyteShort; - mult *= 1000; - result = result / 1000; + } + + private static String formatMeasureShort(Locale locale, NumberFormat numberFormatter, + float value, MeasureUnit units) { + final MeasureFormat measureFormatter = MeasureFormat.getInstance( + locale, MeasureFormat.FormatWidth.SHORT, numberFormatter); + return measureFormatter.format(new Measure(value, units)); + } + + private static final UnicodeSetSpanner SPACES_AND_CONTROLS = + new UnicodeSetSpanner(new UnicodeSet("[[:Zs:][:Cf:]]").freeze()); + + private static String formatRoundedBytesResult( + @NonNull Context context, @NonNull RoundedBytesResult input) { + final Locale locale = localeFromContext(context); + final NumberFormat numberFormatter = getNumberFormatter(locale, input.fractionDigits); + if (input.units == MeasureUnit.BYTE || input.units == PETABYTE) { + // ICU spells out "byte" instead of "B", and can't format petabytes yet. + final String formattedNumber = numberFormatter.format(input.value); + return context.getString(com.android.internal.R.string.fileSizeSuffix, + formattedNumber, getSuffixOverride(context.getResources(), input.units)); + } else { + return formatMeasureShort(locale, numberFormatter, input.value, input.units); } - if (result > 900) { - suffix = com.android.internal.R.string.petabyteShort; - mult *= 1000; - result = result / 1000; + } + + /** {@hide} */ + public static BytesResult formatBytes(Resources res, long sizeBytes, int flags) { + final RoundedBytesResult rounded = RoundedBytesResult.roundBytes(sizeBytes, flags); + final Locale locale = res.getConfiguration().getLocales().get(0); + final NumberFormat numberFormatter = getNumberFormatter(locale, rounded.fractionDigits); + final String formattedNumber = numberFormatter.format(rounded.value); + final String units; + if (rounded.units == MeasureUnit.BYTE || rounded.units == PETABYTE) { + // ICU spells out "byte" instead of "B", and can't format petabytes yet. + units = getSuffixOverride(res, rounded.units); + } else { + // Since ICU does not give us access to the pattern, we need to extract the unit string + // from ICU, which we do by taking out the formatted number out of the formatted string + // and trimming the result of spaces and controls. + final String formattedMeasure = formatMeasureShort( + locale, numberFormatter, rounded.value, rounded.units); + final String numberRemoved = deleteFirstFromString(formattedMeasure, formattedNumber); + units = SPACES_AND_CONTROLS.trim(numberRemoved).toString(); } - // Note we calculate the rounded long by ourselves, but still let String.format() - // compute the rounded value. String.format("%f", 0.1) might not return "0.1" due to - // floating point errors. - final int roundFactor; - final String roundFormat; - if (mult == 1 || result >= 100) { - roundFactor = 1; - roundFormat = "%.0f"; - } else if (result < 1) { - roundFactor = 100; - roundFormat = "%.2f"; - } else if (result < 10) { - if ((flags & FLAG_SHORTER) != 0) { - roundFactor = 10; - roundFormat = "%.1f"; - } else { - roundFactor = 100; - roundFormat = "%.2f"; + return new BytesResult(formattedNumber, units, rounded.roundedBytes); + } + + /** + * ICU doesn't support PETABYTE yet. Fake it so that we can treat all units the same way. + */ + private static final MeasureUnit PETABYTE = createPetaByte(); + + /** + * Create a petabyte MeasureUnit without registering it with ICU. + * ICU doesn't support user-create MeasureUnit and the only public (but hidden) method to do so + * is {@link MeasureUnit#internalGetInstance(String, String)} which also registers the unit as + * an available type and thus leaks it to code that doesn't expect or support it. + *

    This method uses reflection to create an instance of MeasureUnit to avoid leaking it. This + * instance is only to be used in this class. + */ + private static MeasureUnit createPetaByte() { + try { + Constructor constructor = MeasureUnit.class + .getDeclaredConstructor(String.class, String.class); + constructor.setAccessible(true); + return constructor.newInstance("digital", "petabyte"); + } catch (ReflectiveOperationException e) { + throw new RuntimeException("Failed to create petabyte MeasureUnit", e); + } + } + + private static class RoundedBytesResult { + public final float value; + public final MeasureUnit units; + public final int fractionDigits; + public final long roundedBytes; + + private RoundedBytesResult( + float value, MeasureUnit units, int fractionDigits, long roundedBytes) { + this.value = value; + this.units = units; + this.fractionDigits = fractionDigits; + this.roundedBytes = roundedBytes; + } + + /** + * Returns a RoundedBytesResult object based on the input size in bytes and the rounding + * flags. The result can be used for formatting. + */ + static RoundedBytesResult roundBytes(long sizeBytes, int flags) { + final boolean isNegative = (sizeBytes < 0); + float result = isNegative ? -sizeBytes : sizeBytes; + MeasureUnit units = MeasureUnit.BYTE; + long mult = 1; + if (result > 900) { + units = MeasureUnit.KILOBYTE; + mult = 1000; + result = result / 1000; + } + if (result > 900) { + units = MeasureUnit.MEGABYTE; + mult *= 1000; + result = result / 1000; + } + if (result > 900) { + units = MeasureUnit.GIGABYTE; + mult *= 1000; + result = result / 1000; } - } else { // 10 <= result < 100 - if ((flags & FLAG_SHORTER) != 0) { + if (result > 900) { + units = MeasureUnit.TERABYTE; + mult *= 1000; + result = result / 1000; + } + if (result > 900) { + units = PETABYTE; + mult *= 1000; + result = result / 1000; + } + // Note we calculate the rounded long by ourselves, but still let NumberFormat compute + // the rounded value. NumberFormat.format(0.1) might not return "0.1" due to floating + // point errors. + final int roundFactor; + final int roundDigits; + if (mult == 1 || result >= 100) { roundFactor = 1; - roundFormat = "%.0f"; - } else { + roundDigits = 0; + } else if (result < 1) { roundFactor = 100; - roundFormat = "%.2f"; + roundDigits = 2; + } else if (result < 10) { + if ((flags & FLAG_SHORTER) != 0) { + roundFactor = 10; + roundDigits = 1; + } else { + roundFactor = 100; + roundDigits = 2; + } + } else { // 10 <= result < 100 + if ((flags & FLAG_SHORTER) != 0) { + roundFactor = 1; + roundDigits = 0; + } else { + roundFactor = 100; + roundDigits = 2; + } } - } - if (isNegative) { - result = -result; - } - final String roundedString = String.format(roundFormat, result); - - // Note this might overflow if abs(result) >= Long.MAX_VALUE / 100, but that's like 80PB so - // it's okay (for now)... - final long roundedBytes = - (flags & FLAG_CALCULATE_ROUNDED) == 0 ? 0 - : (((long) Math.round(result * roundFactor)) * mult / roundFactor); + if (isNegative) { + result = -result; + } - final String units = res.getString(suffix); + // Note this might overflow if abs(result) >= Long.MAX_VALUE / 100, but that's like + // 80PB so it's okay (for now)... + final long roundedBytes = + (flags & FLAG_CALCULATE_ROUNDED) == 0 ? 0 + : (((long) Math.round(result * roundFactor)) * mult / roundFactor); - return new BytesResult(roundedString, units, roundedBytes); + return new RoundedBytesResult(result, units, roundDigits, roundedBytes); + } } /** @@ -197,7 +328,7 @@ public final class Formatter { /** * Returns elapsed time for the given millis, in the following format: - * 1 day 5 hrs; will include at most two units, can go down to seconds precision. + * 1 day, 5 hr; will include at most two units, can go down to seconds precision. * @param context the application context * @param millis the elapsed time in milli seconds * @return the formatted elapsed time @@ -221,44 +352,38 @@ public final class Formatter { } int seconds = (int)secondsLong; + final Locale locale = localeFromContext(context); + final MeasureFormat measureFormat = MeasureFormat.getInstance( + locale, MeasureFormat.FormatWidth.SHORT); if (days >= 2) { days += (hours+12)/24; - return context.getString(com.android.internal.R.string.durationDays, days); + return measureFormat.format(new Measure(days, MeasureUnit.DAY)); } else if (days > 0) { - if (hours == 1) { - return context.getString(com.android.internal.R.string.durationDayHour, days, hours); - } - return context.getString(com.android.internal.R.string.durationDayHours, days, hours); + return measureFormat.formatMeasures( + new Measure(days, MeasureUnit.DAY), + new Measure(hours, MeasureUnit.HOUR)); } else if (hours >= 2) { hours += (minutes+30)/60; - return context.getString(com.android.internal.R.string.durationHours, hours); + return measureFormat.format(new Measure(hours, MeasureUnit.HOUR)); } else if (hours > 0) { - if (minutes == 1) { - return context.getString(com.android.internal.R.string.durationHourMinute, hours, - minutes); - } - return context.getString(com.android.internal.R.string.durationHourMinutes, hours, - minutes); + return measureFormat.formatMeasures( + new Measure(hours, MeasureUnit.HOUR), + new Measure(minutes, MeasureUnit.MINUTE)); } else if (minutes >= 2) { minutes += (seconds+30)/60; - return context.getString(com.android.internal.R.string.durationMinutes, minutes); + return measureFormat.format(new Measure(minutes, MeasureUnit.MINUTE)); } else if (minutes > 0) { - if (seconds == 1) { - return context.getString(com.android.internal.R.string.durationMinuteSecond, minutes, - seconds); - } - return context.getString(com.android.internal.R.string.durationMinuteSeconds, minutes, - seconds); - } else if (seconds == 1) { - return context.getString(com.android.internal.R.string.durationSecond, seconds); + return measureFormat.formatMeasures( + new Measure(minutes, MeasureUnit.MINUTE), + new Measure(seconds, MeasureUnit.SECOND)); } else { - return context.getString(com.android.internal.R.string.durationSeconds, seconds); + return measureFormat.format(new Measure(seconds, MeasureUnit.SECOND)); } } /** * Returns elapsed time for the given millis, in the following format: - * 1 day 5 hrs; will include at most two units, can go down to minutes precision. + * 1 day, 5 hr; will include at most two units, can go down to minutes precision. * @param context the application context * @param millis the elapsed time in milli seconds * @return the formatted elapsed time @@ -267,10 +392,11 @@ public final class Formatter { public static String formatShortElapsedTimeRoundingUpToMinutes(Context context, long millis) { long minutesRoundedUp = (millis + MILLIS_PER_MINUTE - 1) / MILLIS_PER_MINUTE; - if (minutesRoundedUp == 0) { - return context.getString(com.android.internal.R.string.durationMinutes, 0); - } else if (minutesRoundedUp == 1) { - return context.getString(com.android.internal.R.string.durationMinute, 1); + if (minutesRoundedUp == 0 || minutesRoundedUp == 1) { + final Locale locale = localeFromContext(context); + final MeasureFormat measureFormat = MeasureFormat.getInstance( + locale, MeasureFormat.FormatWidth.SHORT); + return measureFormat.format(new Measure(minutesRoundedUp, MeasureUnit.MINUTE)); } return formatShortElapsedTime(context, minutesRoundedUp * MILLIS_PER_MINUTE); diff --git a/core/java/android/text/method/AllCapsTransformationMethod.java b/core/java/android/text/method/AllCapsTransformationMethod.java index 15f40d5121ef02cfc1bfd82a202b500ab4b83bcc..c807e7da4f1b1d90323dc3ad029c4aeb9a941315 100644 --- a/core/java/android/text/method/AllCapsTransformationMethod.java +++ b/core/java/android/text/method/AllCapsTransformationMethod.java @@ -15,12 +15,12 @@ */ package android.text.method; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Context; import android.graphics.Rect; -import android.icu.text.CaseMap; -import android.icu.text.Edits; -import android.text.SpannableStringBuilder; import android.text.Spanned; +import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -38,12 +38,12 @@ public class AllCapsTransformationMethod implements TransformationMethod2 { private boolean mEnabled; private Locale mLocale; - public AllCapsTransformationMethod(Context context) { + public AllCapsTransformationMethod(@NonNull Context context) { mLocale = context.getResources().getConfiguration().getLocales().get(0); } @Override - public CharSequence getTransformation(CharSequence source, View view) { + public CharSequence getTransformation(@Nullable CharSequence source, View view) { if (!mEnabled) { Log.w(TAG, "Caller did not enable length changes; not transforming text"); return source; @@ -60,61 +60,8 @@ public class AllCapsTransformationMethod implements TransformationMethod2 { if (locale == null) { locale = mLocale; } - - if (!(source instanceof Spanned)) { // No spans - return CaseMap.toUpper().apply( - locale, source, new StringBuilder(), - null /* we don't need the edits */); - } - - final Edits edits = new Edits(); - final SpannableStringBuilder result = CaseMap.toUpper().apply( - locale, source, new SpannableStringBuilder(), edits); - if (!edits.hasChanges()) { - // No changes happened while capitalizing. We can return the source as it was. - return source; - } - - final Edits.Iterator iterator = edits.getFineIterator(); - final Spanned spanned = (Spanned) source; - final int sourceLength = source.length(); - final Object[] spans = spanned.getSpans(0, sourceLength, Object.class); - for (Object span : spans) { - final int sourceStart = spanned.getSpanStart(span); - final int sourceEnd = spanned.getSpanEnd(span); - final int flags = spanned.getSpanFlags(span); - // Make sure the indexes are not at the end of the string, since in that case - // iterator.findSourceIndex() would fail. - final int destStart = sourceStart == sourceLength ? result.length() : - mapToDest(iterator, sourceStart); - final int destEnd = sourceEnd == sourceLength ? result.length() : - mapToDest(iterator, sourceEnd); - result.setSpan(span, destStart, destEnd, flags); - } - return result; - } - - private static int mapToDest(Edits.Iterator iterator, int sourceIndex) { - // Guaranteed to succeed if sourceIndex < source.length(). - iterator.findSourceIndex(sourceIndex); - if (sourceIndex == iterator.sourceIndex()) { - return iterator.destinationIndex(); - } - // We handle the situation differently depending on if we are in the changed slice or an - // unchanged one: In an unchanged slice, we can find the exact location the span - // boundary was before and map there. - // - // But in a changed slice, we need to treat the whole destination slice as an atomic unit. - // We adjust the span boundary to the end of that slice to reduce of the chance of adjacent - // spans in the source overlapping in the result. (The choice for the end vs the beginning - // is somewhat arbitrary, but was taken because we except to see slightly more spans only - // affecting a base character compared to spans only affecting a combining character.) - if (iterator.hasChange()) { - return iterator.destinationIndex() + iterator.newLength(); - } else { - // Move the index 1:1 along with this unchanged piece of text. - return iterator.destinationIndex() + (sourceIndex - iterator.sourceIndex()); - } + final boolean copySpans = source instanceof Spanned; + return TextUtils.toUpperCase(locale, source, copySpans); } @Override diff --git a/core/java/android/text/style/TextAppearanceSpan.java b/core/java/android/text/style/TextAppearanceSpan.java index abbd793dcb2a3f85cbca97062f66044a1be1238b..c17cfd5008270e22e37259c184ea1bf2e4793100 100644 --- a/core/java/android/text/style/TextAppearanceSpan.java +++ b/core/java/android/text/style/TextAppearanceSpan.java @@ -19,6 +19,7 @@ package android.text.style; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.graphics.LeakyTypefaceStorage; import android.graphics.Typeface; import android.os.Parcel; import android.text.ParcelableSpan; @@ -30,11 +31,12 @@ import android.text.TextUtils; * resource. */ public class TextAppearanceSpan extends MetricAffectingSpan implements ParcelableSpan { - private final String mTypeface; + private final String mFamilyName; private final int mStyle; private final int mTextSize; private final ColorStateList mTextColor; private final ColorStateList mTextColorLink; + private final Typeface mTypeface; /** * Uses the specified TextAppearance resource to determine the @@ -55,7 +57,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl */ public TextAppearanceSpan(Context context, int appearance, int colorList) { ColorStateList textColor; - + TypedArray a = context.obtainStyledAttributes(appearance, com.android.internal.R.styleable.TextAppearance); @@ -68,28 +70,37 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl TextAppearance_textSize, -1); mStyle = a.getInt(com.android.internal.R.styleable.TextAppearance_textStyle, 0); - String family = a.getString(com.android.internal.R.styleable.TextAppearance_fontFamily); - if (family != null) { - mTypeface = family; + if (!context.isRestricted() && context.canLoadUnsafeResources()) { + mTypeface = a.getFont(com.android.internal.R.styleable.TextAppearance_fontFamily); + } else { + mTypeface = null; + } + if (mTypeface != null) { + mFamilyName = null; } else { - int tf = a.getInt(com.android.internal.R.styleable.TextAppearance_typeface, 0); + String family = a.getString(com.android.internal.R.styleable.TextAppearance_fontFamily); + if (family != null) { + mFamilyName = family; + } else { + int tf = a.getInt(com.android.internal.R.styleable.TextAppearance_typeface, 0); - switch (tf) { - case 1: - mTypeface = "sans"; - break; + switch (tf) { + case 1: + mFamilyName = "sans"; + break; - case 2: - mTypeface = "serif"; - break; + case 2: + mFamilyName = "serif"; + break; - case 3: - mTypeface = "monospace"; - break; + case 3: + mFamilyName = "monospace"; + break; - default: - mTypeface = null; - break; + default: + mFamilyName = null; + break; + } } } @@ -102,7 +113,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl textColor = a.getColorStateList(colorList); a.recycle(); } - + mTextColor = textColor; } @@ -112,15 +123,16 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl */ public TextAppearanceSpan(String family, int style, int size, ColorStateList color, ColorStateList linkColor) { - mTypeface = family; + mFamilyName = family; mStyle = style; mTextSize = size; mTextColor = color; mTextColorLink = linkColor; + mTypeface = null; } public TextAppearanceSpan(Parcel src) { - mTypeface = src.readString(); + mFamilyName = src.readString(); mStyle = src.readInt(); mTextSize = src.readInt(); if (src.readInt() != 0) { @@ -133,8 +145,9 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl } else { mTextColorLink = null; } + mTypeface = LeakyTypefaceStorage.readTypefaceFromParcel(src); } - + public int getSpanTypeId() { return getSpanTypeIdInternal(); } @@ -143,7 +156,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl public int getSpanTypeIdInternal() { return TextUtils.TEXT_APPEARANCE_SPAN; } - + public int describeContents() { return 0; } @@ -154,7 +167,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl /** @hide */ public void writeToParcelInternal(Parcel dest, int flags) { - dest.writeString(mTypeface); + dest.writeString(mFamilyName); dest.writeInt(mStyle); dest.writeInt(mTextSize); if (mTextColor != null) { @@ -169,6 +182,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl } else { dest.writeInt(0); } + LeakyTypefaceStorage.writeTypefaceToParcel(mTypeface, dest); } /** @@ -176,7 +190,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl * if it does not specify one. */ public String getFamily() { - return mTypeface; + return mFamilyName; } /** @@ -226,9 +240,14 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl @Override public void updateMeasureState(TextPaint ds) { - if (mTypeface != null || mStyle != 0) { + final Typeface styledTypeface; + int style = 0; + + if (mTypeface != null) { + style = mStyle; + styledTypeface = Typeface.create(mTypeface, style); + } else if (mFamilyName != null || mStyle != 0) { Typeface tf = ds.getTypeface(); - int style = 0; if (tf != null) { style = tf.getStyle(); @@ -236,15 +255,19 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl style |= mStyle; - if (mTypeface != null) { - tf = Typeface.create(mTypeface, style); + if (mFamilyName != null) { + styledTypeface = Typeface.create(mFamilyName, style); } else if (tf == null) { - tf = Typeface.defaultFromStyle(style); + styledTypeface = Typeface.defaultFromStyle(style); } else { - tf = Typeface.create(tf, style); + styledTypeface = Typeface.create(tf, style); } + } else { + styledTypeface = null; + } - int fake = style & ~tf.getStyle(); + if (styledTypeface != null) { + int fake = style & ~styledTypeface.getStyle(); if ((fake & Typeface.BOLD) != 0) { ds.setFakeBoldText(true); @@ -254,7 +277,7 @@ public class TextAppearanceSpan extends MetricAffectingSpan implements Parcelabl ds.setTextSkewX(-0.25f); } - ds.setTypeface(tf); + ds.setTypeface(styledTypeface); } if (mTextSize > 0) { diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java index 7e6eb4906c2051acaa99ab147e70663cf38d2d81..768aee91e5b3e0e532dcf973669099ff3a749105 100644 --- a/core/java/android/text/util/Linkify.java +++ b/core/java/android/text/util/Linkify.java @@ -19,7 +19,9 @@ package android.text.util; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.content.Context; import android.telephony.PhoneNumberUtils; +import android.telephony.TelephonyManager; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; @@ -221,6 +223,11 @@ public class Linkify { * @return True if at least one link is found and applied. */ public static final boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask) { + return addLinks(text, mask, null); + } + + private static boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask, + @Nullable Context context) { if (mask == 0) { return false; } @@ -246,7 +253,7 @@ public class Linkify { } if ((mask & PHONE_NUMBERS) != 0) { - gatherTelLinks(links, text); + gatherTelLinks(links, text, context); } if ((mask & MAP_ADDRESSES) != 0) { @@ -282,10 +289,10 @@ public class Linkify { return false; } - CharSequence t = text.getText(); - + final Context context = text.getContext(); + final CharSequence t = text.getText(); if (t instanceof Spannable) { - if (addLinks((Spannable) t, mask)) { + if (addLinks((Spannable) t, mask, context)) { addLinkMovementMethod(text); return true; } @@ -294,7 +301,7 @@ public class Linkify { } else { SpannableString s = SpannableString.valueOf(t); - if (addLinks(s, mask)) { + if (addLinks(s, mask, context)) { addLinkMovementMethod(text); text.setText(s); @@ -528,10 +535,15 @@ public class Linkify { } } - private static final void gatherTelLinks(ArrayList links, Spannable s) { + private static void gatherTelLinks(ArrayList links, Spannable s, + @Nullable Context context) { PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); + final TelephonyManager tm = (context == null) + ? TelephonyManager.getDefault() + : TelephonyManager.from(context); Iterable matches = phoneUtil.findNumbers(s.toString(), - Locale.getDefault().getCountry(), Leniency.POSSIBLE, Long.MAX_VALUE); + tm.getSimCountryIso().toUpperCase(Locale.US), + Leniency.POSSIBLE, Long.MAX_VALUE); for (PhoneNumberMatch match : matches) { LinkSpec spec = new LinkSpec(); spec.url = "tel:" + PhoneNumberUtils.normalizeNumber(match.rawString()); diff --git a/core/java/android/transition/TransitionUtils.java b/core/java/android/transition/TransitionUtils.java index 49ceb3b5365e7f758318885b2b36f210ae32fb77..084b79d5830185c53952eb365d32c15e21af7756 100644 --- a/core/java/android/transition/TransitionUtils.java +++ b/core/java/android/transition/TransitionUtils.java @@ -20,12 +20,14 @@ import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.TypeEvaluator; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.view.DisplayListCanvas; +import android.view.RenderNode; +import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -99,7 +101,7 @@ public class TransitionUtils { ImageView copy = new ImageView(view.getContext()); copy.setScaleType(ImageView.ScaleType.CENTER_CROP); - Bitmap bitmap = createViewBitmap(view, matrix, bounds); + Bitmap bitmap = createViewBitmap(view, matrix, bounds, sceneRoot); if (bitmap != null) { copy.setImageBitmap(bitmap); } @@ -113,7 +115,7 @@ public class TransitionUtils { /** * Get a copy of bitmap of given drawable, return null if intrinsic size is zero */ - public static Bitmap createDrawableBitmap(Drawable drawable) { + public static Bitmap createDrawableBitmap(Drawable drawable, View hostView) { int width = drawable.getIntrinsicWidth(); int height = drawable.getIntrinsicHeight(); if (width <= 0 || height <= 0) { @@ -126,8 +128,11 @@ public class TransitionUtils { } int bitmapWidth = (int) (width * scale); int bitmapHeight = (int) (height * scale); - Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); + final RenderNode node = RenderNode.create("TransitionUtils", hostView); + node.setLeftTopRightBottom(0, 0, width, height); + node.setClipToBounds(false); + final DisplayListCanvas canvas = node.start(width, height); + // Do stuff with the canvas Rect existingBounds = drawable.getBounds(); int left = existingBounds.left; int top = existingBounds.top; @@ -136,7 +141,8 @@ public class TransitionUtils { drawable.setBounds(0, 0, bitmapWidth, bitmapHeight); drawable.draw(canvas); drawable.setBounds(left, top, right, bottom); - return bitmap; + node.end(canvas); + return ThreadedRenderer.createHardwareBitmap(node, width, height); } /** @@ -150,22 +156,40 @@ public class TransitionUtils { * returning. * @param bounds The bounds of the bitmap in the destination coordinate system (where the * view should be presented. Typically, this is matrix.mapRect(viewBounds); + * @param sceneRoot A ViewGroup that is attached to the window to temporarily contain the view + * if it isn't attached to the window. * @return A bitmap of the given view or null if bounds has no width or height. */ - public static Bitmap createViewBitmap(View view, Matrix matrix, RectF bounds) { + public static Bitmap createViewBitmap(View view, Matrix matrix, RectF bounds, + ViewGroup sceneRoot) { + final boolean addToOverlay = !view.isAttachedToWindow(); + if (addToOverlay) { + if (sceneRoot == null || !sceneRoot.isAttachedToWindow()) { + return null; + } + sceneRoot.getOverlay().add(view); + } Bitmap bitmap = null; int bitmapWidth = Math.round(bounds.width()); int bitmapHeight = Math.round(bounds.height()); if (bitmapWidth > 0 && bitmapHeight > 0) { - float scale = Math.min(1f, ((float)MAX_IMAGE_SIZE) / (bitmapWidth * bitmapHeight)); + float scale = Math.min(1f, ((float) MAX_IMAGE_SIZE) / (bitmapWidth * bitmapHeight)); bitmapWidth *= scale; bitmapHeight *= scale; matrix.postTranslate(-bounds.left, -bounds.top); matrix.postScale(scale, scale); - bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); + + final RenderNode node = RenderNode.create("TransitionUtils", view); + node.setLeftTopRightBottom(0, 0, bitmapWidth, bitmapHeight); + node.setClipToBounds(false); + final DisplayListCanvas canvas = node.start(bitmapWidth, bitmapHeight); canvas.concat(matrix); view.draw(canvas); + node.end(canvas); + bitmap = ThreadedRenderer.createHardwareBitmap(node, bitmapWidth, bitmapHeight); + } + if (addToOverlay) { + sceneRoot.getOverlay().remove(view); } return bitmap; } diff --git a/core/java/android/util/AtomicFile.java b/core/java/android/util/AtomicFile.java index 0122e49eb4623ca4e7662ae46ab0b999aa825062..6342c8bcb85e758a580b99c2b57b84796a1be92a 100644 --- a/core/java/android/util/AtomicFile.java +++ b/core/java/android/util/AtomicFile.java @@ -214,10 +214,10 @@ public class AtomicFile { * Gets the last modified time of the atomic file. * {@hide} * - * @return last modified time in milliseconds since epoch. - * @throws IOException + * @return last modified time in milliseconds since epoch. Returns zero if + * the file does not exist or an I/O error is encountered. */ - public long getLastModifiedTime() throws IOException { + public long getLastModifiedTime() { if (mBackupName.exists()) { return mBackupName.lastModified(); } diff --git a/core/java/android/util/IconDrawableFactory.java b/core/java/android/util/IconDrawableFactory.java index b07942ff7f9d8bb951586c8a5f98aedb4ecfbf0c..6a6c2ce4838eea1a8c907094e64780955e41fcd0 100644 --- a/core/java/android/util/IconDrawableFactory.java +++ b/core/java/android/util/IconDrawableFactory.java @@ -21,7 +21,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; import android.content.res.Resources; -import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.os.UserManager; @@ -68,8 +67,7 @@ public class IconDrawableFactory { return icon; } - // Before badging, add shadow to adaptive icon if needed. - icon = mLauncherIcons.wrapIconDrawableWithShadow(icon); + icon = getShadowedIcon(icon); if (appInfo.isInstantApp()) { int badgeColor = Resources.getSystem().getColor( com.android.internal.R.color.instant_app_badge, null); @@ -85,6 +83,13 @@ public class IconDrawableFactory { return icon; } + /** + * Add shadow to the icon if {@link AdaptiveIconDrawable} + */ + public Drawable getShadowedIcon(Drawable icon) { + return mLauncherIcons.wrapIconDrawableWithShadow(icon); + } + // Should have enough colors to cope with UserManagerService.getMaxManagedProfiles() @VisibleForTesting public static final int[] CORP_BADGE_COLORS = new int[] { diff --git a/core/java/android/util/LocalLog.java b/core/java/android/util/LocalLog.java index 665c583a56abad3d6280abf83429698f4213dd41..eb84479fef69d680db69ae667be7f7e14dbef401 100644 --- a/core/java/android/util/LocalLog.java +++ b/core/java/android/util/LocalLog.java @@ -18,10 +18,10 @@ package android.util; import java.io.FileDescriptor; import java.io.PrintWriter; -import java.util.Calendar; -import java.util.Iterator; -import java.util.Deque; +import java.time.LocalDateTime; import java.util.ArrayDeque; +import java.util.Deque; +import java.util.Iterator; /** * @hide @@ -40,9 +40,7 @@ public final class LocalLog { if (mMaxLines <= 0) { return; } - Calendar c = Calendar.getInstance(); - c.setTimeInMillis(System.currentTimeMillis()); - append(String.format("%tm-%td %tH:%tM:%tS.%tL - %s", c, c, c, c, c, c, msg)); + append(String.format("%s - %s", LocalDateTime.now(), msg)); } private synchronized void append(String logLine) { diff --git a/core/java/android/util/PackageUtils.java b/core/java/android/util/PackageUtils.java index 0fe56f6efa212afc273cf0f5d388d2bf2830c1d8..e2e9d53e7e9e618a9ec26932c1f87484939b52ef 100644 --- a/core/java/android/util/PackageUtils.java +++ b/core/java/android/util/PackageUtils.java @@ -18,12 +18,13 @@ package android.util; import android.annotation.NonNull; import android.annotation.Nullable; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; import android.content.pm.Signature; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.Arrays; /** * Helper functions applicable to packages. @@ -36,32 +37,67 @@ public final class PackageUtils { } /** - * Computes the SHA256 digest of the signing cert for a package. - * @param packageManager The package manager. - * @param packageName The package for which to generate the digest. - * @param userId The user for which to generate the digest. - * @return The digest or null if the package does not exist for this user. + * Computes the SHA256 digests of a list of signatures. Items in the + * resulting array of hashes correspond to the signatures in the + * input array. + * @param signatures The signatures. + * @return The digest array. */ - public static @Nullable String computePackageCertSha256Digest( - @NonNull PackageManager packageManager, - @NonNull String packageName, int userId) { - final PackageInfo packageInfo; - try { - packageInfo = packageManager.getPackageInfoAsUser(packageName, - PackageManager.GET_SIGNATURES, userId); - } catch (PackageManager.NameNotFoundException e) { - return null; + public static @NonNull String[] computeSignaturesSha256Digests( + @NonNull Signature[] signatures) { + final int signatureCount = signatures.length; + final String[] digests = new String[signatureCount]; + for (int i = 0; i < signatureCount; i++) { + digests[i] = computeSha256Digest(signatures[i].toByteArray()); + } + return digests; + } + /** + * Computes a SHA256 digest of the signatures' SHA256 digests. First, + * individual hashes for each signature is derived in a hexademical + * form, then these strings are sorted based the natural ordering, and + * finally a hash is derived from these strings' bytes. + * @param signatures The signatures. + * @return The digest. + */ + public static @NonNull String computeSignaturesSha256Digest( + @NonNull Signature[] signatures) { + // Shortcut for optimization - most apps singed by a single cert + if (signatures.length == 1) { + return computeSha256Digest(signatures[0].toByteArray()); } - return computeCertSha256Digest(packageInfo.signatures[0]); + + // Make sure these are sorted to handle reversed certificates + final String[] sha256Digests = computeSignaturesSha256Digests(signatures); + return computeSignaturesSha256Digest(sha256Digests); } /** - * Computes the SHA256 digest of a cert. - * @param signature The signature. - * @return The digest or null if an error occurs. + * Computes a SHA256 digest in of the signatures SHA256 digests. First, + * the strings are sorted based the natural ordering, and then a hash is + * derived from these strings' bytes. + * @param sha256Digests Signature SHA256 hashes in hexademical form. + * @return The digest. */ - public static @Nullable String computeCertSha256Digest(@NonNull Signature signature) { - return computeSha256Digest(signature.toByteArray()); + public static @NonNull String computeSignaturesSha256Digest( + @NonNull String[] sha256Digests) { + // Shortcut for optimization - most apps singed by a single cert + if (sha256Digests.length == 1) { + return sha256Digests[0]; + } + + // Make sure these are sorted to handle reversed certificates + Arrays.sort(sha256Digests); + + final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); + for (String sha256Digest : sha256Digests) { + try { + bytes.write(sha256Digest.getBytes()); + } catch (IOException e) { + /* ignore - can't happen */ + } + } + return computeSha256Digest(bytes.toByteArray()); } /** diff --git a/core/java/android/util/Patterns.java b/core/java/android/util/Patterns.java index ca3985449d92450176f988c3e614acac47c51ae2..50cd7b18e254f8dd704f52b838e64cf3cddbc76e 100644 --- a/core/java/android/util/Patterns.java +++ b/core/java/android/util/Patterns.java @@ -406,7 +406,7 @@ public class Patterns { * the local part to be at most 64 octets. */ private static final String EMAIL_ADDRESS_LOCAL_PART = - "[" + EMAIL_CHAR + "]" + "(?:[" + EMAIL_CHAR + "\\.]{1,62}[" + EMAIL_CHAR + "])?"; + "[" + EMAIL_CHAR + "]" + "(?:[" + EMAIL_CHAR + "\\.]{0,62}[" + EMAIL_CHAR + "])?"; /** * Regular expression for the domain part of an email address. RFC5321 section 4.5.3.1.2 limits diff --git a/core/java/android/util/RecurrenceRule.java b/core/java/android/util/RecurrenceRule.java new file mode 100644 index 0000000000000000000000000000000000000000..1fe638d6b76b07e8cd6945d7786474b2ddc7046d --- /dev/null +++ b/core/java/android/util/RecurrenceRule.java @@ -0,0 +1,257 @@ +/* + * 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.util; + +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.annotations.VisibleForTesting; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.ProtocolException; +import java.time.Clock; +import java.time.LocalTime; +import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Iterator; +import java.util.Objects; + +/** + * Description of an event that should recur over time at a specific interval + * between two anchor points in time. + * + * @hide + */ +public class RecurrenceRule implements Parcelable { + private static final String TAG = "RecurrenceRule"; + private static final boolean DEBUG = true; + + private static final int VERSION_INIT = 0; + + /** {@hide} */ + @VisibleForTesting + public static Clock sClock = Clock.systemDefaultZone(); + + public final ZonedDateTime start; + public final ZonedDateTime end; + public final Period period; + + public RecurrenceRule(ZonedDateTime start, ZonedDateTime end, Period period) { + this.start = start; + this.end = end; + this.period = period; + } + + @Deprecated + public static RecurrenceRule buildNever() { + return new RecurrenceRule(null, null, null); + } + + @Deprecated + public static RecurrenceRule buildRecurringMonthly(int dayOfMonth, ZoneId zone) { + // Assume we started last January, since it has all possible days + final ZonedDateTime now = ZonedDateTime.now(sClock).withZoneSameInstant(zone); + final ZonedDateTime start = ZonedDateTime.of( + now.toLocalDate().minusYears(1).withMonth(1).withDayOfMonth(dayOfMonth), + LocalTime.MIDNIGHT, zone); + return new RecurrenceRule(start, null, Period.ofMonths(1)); + } + + private RecurrenceRule(Parcel source) { + start = convertZonedDateTime(source.readString()); + end = convertZonedDateTime(source.readString()); + period = convertPeriod(source.readString()); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(convertZonedDateTime(start)); + dest.writeString(convertZonedDateTime(end)); + dest.writeString(convertPeriod(period)); + } + + public RecurrenceRule(DataInputStream in) throws IOException { + final int version = in.readInt(); + switch (version) { + case VERSION_INIT: + start = convertZonedDateTime(BackupUtils.readString(in)); + end = convertZonedDateTime(BackupUtils.readString(in)); + period = convertPeriod(BackupUtils.readString(in)); + default: + throw new ProtocolException("Unknown version " + version); + } + } + + public void writeToStream(DataOutputStream out) throws IOException { + out.writeInt(VERSION_INIT); + BackupUtils.writeString(out, convertZonedDateTime(start)); + BackupUtils.writeString(out, convertZonedDateTime(end)); + BackupUtils.writeString(out, convertPeriod(period)); + } + + @Override + public String toString() { + return new StringBuilder("RecurrenceRule{") + .append("start=").append(start) + .append(" end=").append(end) + .append(" period=").append(period) + .append("}").toString(); + } + + @Override + public int hashCode() { + return Objects.hash(start, end, period); + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof RecurrenceRule) { + final RecurrenceRule other = (RecurrenceRule) obj; + return Objects.equals(start, other.start) + && Objects.equals(end, other.end) + && Objects.equals(period, other.period); + } + return false; + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public RecurrenceRule createFromParcel(Parcel source) { + return new RecurrenceRule(source); + } + + @Override + public RecurrenceRule[] newArray(int size) { + return new RecurrenceRule[size]; + } + }; + + @Deprecated + public boolean isMonthly() { + return start != null + && period != null + && period.getYears() == 0 + && period.getMonths() == 1 + && period.getDays() == 0; + } + + public Iterator> cycleIterator() { + if (period != null) { + return new RecurringIterator(); + } else { + return new NonrecurringIterator(); + } + } + + private class NonrecurringIterator implements Iterator> { + boolean hasNext; + + public NonrecurringIterator() { + hasNext = (start != null) && (end != null); + } + + @Override + public boolean hasNext() { + return hasNext; + } + + @Override + public Pair next() { + hasNext = false; + return new Pair<>(start, end); + } + } + + private class RecurringIterator implements Iterator> { + int i; + ZonedDateTime cycleStart; + ZonedDateTime cycleEnd; + + public RecurringIterator() { + final ZonedDateTime anchor = (end != null) ? end + : ZonedDateTime.now(sClock).withZoneSameInstant(start.getZone()); + if (DEBUG) Log.d(TAG, "Resolving using anchor " + anchor); + + updateCycle(); + + // Walk forwards until we find first cycle after now + while (anchor.toEpochSecond() > cycleEnd.toEpochSecond()) { + i++; + updateCycle(); + } + + // Walk backwards until we find first cycle before now + while (anchor.toEpochSecond() <= cycleStart.toEpochSecond()) { + i--; + updateCycle(); + } + } + + private void updateCycle() { + cycleStart = roundBoundaryTime(start.plus(period.multipliedBy(i))); + cycleEnd = roundBoundaryTime(start.plus(period.multipliedBy(i + 1))); + } + + private ZonedDateTime roundBoundaryTime(ZonedDateTime boundary) { + if (isMonthly() && (boundary.getDayOfMonth() < start.getDayOfMonth())) { + // When forced to end a monthly cycle early, we want to count + // that entire day against the boundary. + return ZonedDateTime.of(boundary.toLocalDate(), LocalTime.MAX, start.getZone()); + } else { + return boundary; + } + } + + @Override + public boolean hasNext() { + return cycleStart.toEpochSecond() >= start.toEpochSecond(); + } + + @Override + public Pair next() { + if (DEBUG) Log.d(TAG, "Cycle " + i + " from " + cycleStart + " to " + cycleEnd); + Pair p = new Pair<>(cycleStart, cycleEnd); + i--; + updateCycle(); + return p; + } + } + + public static String convertZonedDateTime(ZonedDateTime time) { + return time != null ? time.toString() : null; + } + + public static ZonedDateTime convertZonedDateTime(String time) { + return time != null ? ZonedDateTime.parse(time) : null; + } + + public static String convertPeriod(Period period) { + return period != null ? period.toString() : null; + } + + public static Period convertPeriod(String period) { + return period != null ? Period.parse(period) : null; + } +} diff --git a/core/java/android/util/SparseLongArray.java b/core/java/android/util/SparseLongArray.java index 0166c4af47b2479f353d472a5b3ae9fc5f8a2763..81db2b7ff715375491804663928eccbab88516f4 100644 --- a/core/java/android/util/SparseLongArray.java +++ b/core/java/android/util/SparseLongArray.java @@ -118,6 +118,23 @@ public class SparseLongArray implements Cloneable { } } + /** + * @hide + * Remove a range of mappings as a batch. + * + * @param index Index to begin at + * @param size Number of mappings to remove + * + *

    For indices outside of the range 0...size()-1, + * the behavior is undefined.

    + */ + public void removeAtRange(int index, int size) { + size = Math.min(size, mSize - index); + System.arraycopy(mKeys, index + size, mKeys, index, mSize - (index + size)); + System.arraycopy(mValues, index + size, mValues, index, mSize - (index + size)); + mSize -= size; + } + /** * Removes the mapping at the given index. */ diff --git a/core/java/android/util/BootTimingsTraceLog.java b/core/java/android/util/TimingsTraceLog.java similarity index 61% rename from core/java/android/util/BootTimingsTraceLog.java rename to core/java/android/util/TimingsTraceLog.java index 2e4319cca0b9a59b13f9ad42bf3f4ab251055dd3..36e9f77bb831b8e35ea3e0a5cc63c17b11a8c057 100644 --- a/core/java/android/util/BootTimingsTraceLog.java +++ b/core/java/android/util/TimingsTraceLog.java @@ -11,7 +11,7 @@ * 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 + * limitations under the License. */ package android.util; @@ -24,22 +24,26 @@ import java.util.ArrayDeque; import java.util.Deque; /** - * Helper class for reporting boot timing metrics. + * Helper class for reporting boot and shutdown timing metrics. * @hide */ -public class BootTimingsTraceLog { +public class TimingsTraceLog { // Debug boot time for every step if it's non-user build. - private static final boolean DEBUG_BOOT_TIME = !"user".equals(Build.TYPE); - private final Deque> mStartTimes - = DEBUG_BOOT_TIME ? new ArrayDeque<>() : null; + private static final boolean DEBUG_BOOT_TIME = !Build.IS_USER; + private final Deque> mStartTimes = + DEBUG_BOOT_TIME ? new ArrayDeque<>() : null; private final String mTag; private long mTraceTag; - public BootTimingsTraceLog(String tag, long traceTag) { + public TimingsTraceLog(String tag, long traceTag) { mTag = tag; mTraceTag = traceTag; } + /** + * Begin tracing named section + * @param name name to appear in trace + */ public void traceBegin(String name) { Trace.traceBegin(mTraceTag, name); if (DEBUG_BOOT_TIME) { @@ -47,6 +51,10 @@ public class BootTimingsTraceLog { } } + /** + * End tracing previously {@link #traceBegin(String) started} section. + * Also {@link #logDuration logs} the duration. + */ public void traceEnd() { Trace.traceEnd(mTraceTag); if (!DEBUG_BOOT_TIME) { @@ -57,8 +65,13 @@ public class BootTimingsTraceLog { return; } Pair event = mStartTimes.pop(); - // Log the duration so it can be parsed by external tools for performance reporting - Slog.d(mTag, event.first + " took to complete: " - + (SystemClock.elapsedRealtime() - event.second) + "ms"); + logDuration(event.first, (SystemClock.elapsedRealtime() - event.second)); + } + + /** + * Log the duration so it can be parsed by external tools for performance reporting + */ + public void logDuration(String name, long timeMs) { + Slog.d(mTag, name + " took to complete: " + timeMs + "ms"); } } diff --git a/core/java/android/view/ActionMode.java b/core/java/android/view/ActionMode.java index ea979c8b4621e2af1aa7ad510ab7e1708174cbdd..05d9167589d4649cf04a1b03a30eabae87b2edaa 100644 --- a/core/java/android/view/ActionMode.java +++ b/core/java/android/view/ActionMode.java @@ -18,6 +18,7 @@ package android.view; import android.annotation.StringRes; +import android.annotation.TestApi; import android.graphics.Rect; /** @@ -278,6 +279,7 @@ public abstract class ActionMode { * @return true if the UI used to show this action mode can take focus * @hide Internal use only */ + @TestApi public boolean isUiFocusable() { return true; } diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java index 97788931ea931ccf066bc0053686fd72bb9af8d9..e7c3f92da830ebd32979614be2e74e27ee7e24c0 100644 --- a/core/java/android/view/Display.java +++ b/core/java/android/view/Display.java @@ -26,6 +26,7 @@ import android.content.res.Resources; import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.Rect; +import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManagerGlobal; import android.os.Parcel; import android.os.Parcelable; @@ -200,11 +201,16 @@ public final class Display { * Display flag: Indicates that the display can show its content when non-secure keyguard is * shown. *

    - * This flag identifies secondary displays that won't show keyguard if it can be dismissed - * without entering credentials. Display content will be shown even if other displays are - * locked. + * This flag identifies secondary displays that will continue showing content if keyguard can be + * dismissed without entering credentials. + *

    + * An example of usage is a virtual display which content is displayed on external hardware + * display that is not visible to the system directly. *

    * + * @see DisplayManager#VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD + * @see WindowManagerPolicy#isKeyguardSecure(int) + * @see WindowManagerPolicy#isKeyguardTrustedLw() * @see #getFlags * @hide */ diff --git a/core/java/android/view/FocusFinder.java b/core/java/android/view/FocusFinder.java index 21b72f3eb8c119e4a8b233532be9a66a2e67ad03..713cfb48c95f13cda7e801c40b1b20ce9ad18b69 100644 --- a/core/java/android/view/FocusFinder.java +++ b/core/java/android/view/FocusFinder.java @@ -574,10 +574,10 @@ public class FocusFinder { switch (direction) { case View.FOCUS_LEFT: case View.FOCUS_RIGHT: - return (rect2.bottom >= rect1.top) && (rect2.top <= rect1.bottom); + return (rect2.bottom > rect1.top) && (rect2.top < rect1.bottom); case View.FOCUS_UP: case View.FOCUS_DOWN: - return (rect2.right >= rect1.left) && (rect2.left <= rect1.right); + return (rect2.right > rect1.left) && (rect2.left < rect1.right); } throw new IllegalArgumentException("direction must be one of " + "{FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, FOCUS_RIGHT}."); diff --git a/core/java/android/view/HapticFeedbackConstants.java b/core/java/android/view/HapticFeedbackConstants.java index c43132388b5659479b7a6aad1e10586a769e7e61..b14792842be61c5523ae35b8f2579cb68376dcf9 100644 --- a/core/java/android/view/HapticFeedbackConstants.java +++ b/core/java/android/view/HapticFeedbackConstants.java @@ -57,16 +57,24 @@ public class HapticFeedbackConstants { public static final int CONTEXT_CLICK = 6; /** - * The user has released a virtual or software keyboard key. - * @hide + * The user has pressed a virtual or software keyboard key. + */ + public static final int KEYBOARD_PRESS = KEYBOARD_TAP; + + /** + * The user has released a virtual keyboard key. */ - public static final int VIRTUAL_KEY_RELEASE = 7; + public static final int KEYBOARD_RELEASE = 7; + + /** + * The user has released a virtual key. + */ + public static final int VIRTUAL_KEY_RELEASE = 8; /** * The user has performed a selection/insertion handle move on text field. - * @hide */ - public static final int TEXT_HANDLE_MOVE = 8; + public static final int TEXT_HANDLE_MOVE = 9; /** * The phone has booted with safe mode enabled. diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java index 15be2b0bd8ab8a1346d6189fafde588c33dd7797..8405d9ea8c38af60e8258e804e08992fa50e84ed 100644 --- a/core/java/android/view/InputDevice.java +++ b/core/java/android/view/InputDevice.java @@ -772,7 +772,6 @@ public final class InputDevice implements Parcelable { /** * Returns true if input device is enabled. * @return Whether the input device is enabled. - * @hide */ public boolean isEnabled() { return InputManager.getInstance().isInputDeviceEnabled(mId); diff --git a/core/java/android/view/InputEventConsistencyVerifier.java b/core/java/android/view/InputEventConsistencyVerifier.java index 46ef379d5c9ced60a8bfc9cc426f3b1357c043a6..7e8ec0469e565854e74c8097fcf21e041fb69bd9 100644 --- a/core/java/android/view/InputEventConsistencyVerifier.java +++ b/core/java/android/view/InputEventConsistencyVerifier.java @@ -30,7 +30,7 @@ import android.util.Log; * @hide */ public final class InputEventConsistencyVerifier { - private static final boolean IS_ENG_BUILD = "eng".equals(Build.TYPE); + private static final boolean IS_ENG_BUILD = Build.IS_ENG; private static final String EVENT_TYPE_KEY = "KeyEvent"; private static final String EVENT_TYPE_TRACKBALL = "TrackballEvent"; diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index 829b2b74ac9faadb450007efc539c9180524949a..a2147b714ec639f1fda21a1a1e8d0c5083a66af6 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -804,8 +804,11 @@ public class KeyEvent extends InputEvent implements Parcelable { public static final int KEYCODE_SYSTEM_NAVIGATION_LEFT = 282; /** Key code constant: Consumed by the system for navigation right */ public static final int KEYCODE_SYSTEM_NAVIGATION_RIGHT = 283; + /** Key code constant: Show all apps + * @hide */ + public static final int KEYCODE_ALL_APPS = 284; - private static final int LAST_KEYCODE = KEYCODE_SYSTEM_NAVIGATION_RIGHT; + private static final int LAST_KEYCODE = KEYCODE_ALL_APPS; // NOTE: If you add a new keycode here you must also add it to: // isSystem() diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index 4f9dbd5ad7a09e16b7c723e4febde8ee62f5777f..2c1f73468ca688288c505073e76d881ca9380184 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -73,10 +73,12 @@ public class Surface implements Parcelable { private static native long nativeGetNextFrameNumber(long nativeObject); private static native int nativeSetScalingMode(long nativeObject, int scalingMode); - private static native void nativeSetBuffersTransform(long nativeObject, long transform); private static native int nativeForceScopedDisconnect(long nativeObject); private static native int nativeAttachAndQueueBuffer(long nativeObject, GraphicBuffer buffer); + private static native int nativeSetSharedBufferModeEnabled(long nativeObject, boolean enabled); + private static native int nativeSetAutoRefreshEnabled(long nativeObject, boolean enabled); + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override @@ -114,6 +116,8 @@ public class Surface implements Parcelable { private HwuiContext mHwuiContext; private boolean mIsSingleBuffered; + private boolean mIsSharedBufferModeEnabled; + private boolean mIsAutoRefreshEnabled; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -623,6 +627,105 @@ public class Surface implements Parcelable { return mIsSingleBuffered; } + /** + *

    The shared buffer mode allows both the application and the surface compositor + * (SurfaceFlinger) to concurrently access this surface's buffer. While the + * application is still required to issue a present request + * (see {@link #unlockCanvasAndPost(Canvas)}) to the compositor when an update is required, + * the compositor may trigger an update at any time. Since the surface's buffer is shared + * between the application and the compositor, updates triggered by the compositor may + * cause visible tearing.

    + * + *

    The shared buffer mode can be used with + * {@link #setAutoRefreshEnabled(boolean) auto-refresh} to avoid the overhead of + * issuing present requests.

    + * + *

    If the application uses the shared buffer mode to reduce latency, it is + * recommended to use software rendering (see {@link #lockCanvas(Rect)} to ensure + * the graphics workloads are not affected by other applications and/or the system + * using the GPU. When using software rendering, the application should update the + * smallest possible region of the surface required.

    + * + *

    The shared buffer mode might not be supported by the underlying + * hardware. Enabling shared buffer mode on hardware that does not support it will + * not yield an error but the application will not benefit from lower latency (and + * tearing will not be visible).

    + * + *

    Depending on how many and what kind of surfaces are visible, the + * surface compositor may need to copy the shared buffer before it is displayed. When + * this happens, the latency benefits of shared buffer mode will be reduced.

    + * + * @param enabled True to enable the shared buffer mode on this surface, false otherwise + * + * @see #isSharedBufferModeEnabled() + * @see #setAutoRefreshEnabled(boolean) + * + * @hide + */ + public void setSharedBufferModeEnabled(boolean enabled) { + if (mIsSharedBufferModeEnabled != enabled) { + int error = nativeSetSharedBufferModeEnabled(mNativeObject, enabled); + if (error != 0) { + throw new RuntimeException( + "Failed to set shared buffer mode on Surface (bad object?)"); + } else { + mIsSharedBufferModeEnabled = enabled; + } + } + } + + /** + * @return True if shared buffer mode is enabled on this surface, false otherwise + * + * @see #setSharedBufferModeEnabled(boolean) + * + * @hide + */ + public boolean isSharedBufferModeEnabled() { + return mIsSharedBufferModeEnabled; + } + + /** + *

    When auto-refresh is enabled, the surface compositor (SurfaceFlinger) + * automatically updates the display on a regular refresh cycle. The application + * can continue to issue present requests but it is not required. Enabling + * auto-refresh may result in visible tearing.

    + * + *

    Auto-refresh has no effect if the {@link #setSharedBufferModeEnabled(boolean) + * shared buffer mode} is not enabled.

    + * + *

    Because auto-refresh will trigger continuous updates of the display, it is + * recommended to turn it on only when necessary. For example, in a drawing/painting + * application auto-refresh should be enabled on finger/pen down and disabled on + * finger/pen up.

    + * + * @param enabled True to enable auto-refresh on this surface, false otherwise + * + * @see #isAutoRefreshEnabled() + * @see #setSharedBufferModeEnabled(boolean) + * + * @hide + */ + public void setAutoRefreshEnabled(boolean enabled) { + if (mIsAutoRefreshEnabled != enabled) { + int error = nativeSetAutoRefreshEnabled(mNativeObject, enabled); + if (error != 0) { + throw new RuntimeException("Failed to set auto refresh on Surface (bad object?)"); + } else { + mIsAutoRefreshEnabled = enabled; + } + } + } + + /** + * @return True if auto-refresh is enabled on this surface, false otherwise + * + * @hide + */ + public boolean isAutoRefreshEnabled() { + return mIsAutoRefreshEnabled; + } + /** * Exception thrown when a Canvas couldn't be locked with {@link Surface#lockCanvas}, or * when a SurfaceTexture could not successfully be allocated. @@ -650,13 +753,13 @@ public class Surface implements Parcelable { return "ROTATION_0"; } case Surface.ROTATION_90: { - return "ROATATION_90"; + return "ROTATION_90"; } case Surface.ROTATION_180: { - return "ROATATION_180"; + return "ROTATION_180"; } case Surface.ROTATION_270: { - return "ROATATION_270"; + return "ROTATION_270"; } default: { throw new IllegalArgumentException("Invalid rotation: " + rotation); diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index cac27afa72cb74d5a1f29d655ca72ac6ff37437e..462dad3fad7ad54a5ec523f0a4833984565c3e77 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -231,6 +231,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb updateRequestedVisibility(); mAttachedToWindow = true; + mParent.requestTransparentRegion(SurfaceView.this); if (!mGlobalListenersAdded) { ViewTreeObserver observer = getViewTreeObserver(); observer.addOnScrollChangedListener(mScrollChangedListener); @@ -269,8 +270,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb if (mPendingReportDraws > 0) { mDrawFinished = true; if (mAttachedToWindow) { - mParent.requestTransparentRegion(SurfaceView.this); - notifyDrawFinished(); invalidate(); } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 47e8b58e8e327d47178b941f5b2bf364aa992df8..166d6b7a5b1c7a57ec2e162cc9bf5ace06bbeded 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -127,6 +127,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -1078,6 +1079,29 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@code android:autofillHint} (in which case the * value should be {@value #AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE}). * + *

    When annotating a view with this hint, it's recommended to use a date autofill value to + * avoid ambiguity when the autofill service provides a value for it. To understand why a + * value can be ambiguous, consider "April of 2020", which could be represented as either of + * the following options: + * + *

      + *
    • {@code "04/2020"} + *
    • {@code "4/2020"} + *
    • {@code "2020/04"} + *
    • {@code "2020/4"} + *
    • {@code "April/2020"} + *
    • {@code "Apr/2020"} + *
    + * + *

    You define a date autofill value for the view by overriding the following methods: + * + *

      + *
    1. {@link #getAutofillType()} to return {@link #AUTOFILL_TYPE_DATE}. + *
    2. {@link #getAutofillValue()} to return a + * {@link AutofillValue#forDate(long) date autofillvalue}. + *
    3. {@link #autofill(AutofillValue)} to expect a data autofillvalue. + *
    + * *

    See {@link #setAutofillHints(String...)} for more info about autofill hints. */ public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE = @@ -1090,6 +1114,22 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@code android:autofillHint} (in which case the * value should be {@value #AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH}). * + *

    When annotating a view with this hint, it's recommended to use a text autofill value + * whose value is the numerical representation of the month, starting on {@code 1} to avoid + * ambiguity when the autofill service provides a value for it. To understand why a + * value can be ambiguous, consider "January", which could be represented as either of + * + *

      + *
    • {@code "1"}: recommended way. + *
    • {@code "0"}: if following the {@link Calendar#MONTH} convention. + *
    • {@code "January"}: full name, in English. + *
    • {@code "jan"}: abbreviated name, in English. + *
    • {@code "Janeiro"}: full name, in another language. + *
    + * + *

    Another recommended approach is to use a date autofill value - see + * {@link #AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE} for more details. + * *

    See {@link #setAutofillHints(String...)} for more info about autofill hints. */ public static final String AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH = @@ -7450,7 +7490,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link ViewStructure#setAutofillOptions(CharSequence[])}. * * - *

    NOTE: the {@code left} and {@code top} values set in + *

    Note: The {@code left} and {@code top} values set in * {@link ViewStructure#setDimens(int, int, int, int, int, int)} must be relative to the next * {@link ViewGroup#isImportantForAutofill()} predecessor view included in the structure. * @@ -7618,6 +7658,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, *

  • Call * {@link android.view.autofill.AutofillManager#notifyValueChanged(View, int, AutofillValue)} * when the value of a virtual child changed. + *
  • Call + * {@link + * android.view.autofill.AutofillManager#notifyViewVisibilityChanged(View, int, boolean)} + * when the visibility of a virtual child changed. *
  • Call {@link AutofillManager#commit()} when the autofill context of the view structure * changed and the current context should be committed (for example, when the user tapped * a {@code SUBMIT} button in an HTML page). @@ -7688,6 +7732,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * {@link AutofillManager#notifyValueChanged(View)} must happen after the value was * changed to the autofilled value. If not, the view will not be considered autofilled. * + *

    Note: After this method is called, the value returned by + * {@link #getAutofillValue()} must be equal to the {@code value} passed to it, otherwise the + * view will not be highlighted as autofilled. + * * @param value value to be autofilled. */ public void autofill(@SuppressWarnings("unused") AutofillValue value) { @@ -7711,7 +7759,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * after the value was changed to the autofilled value. If not, the child will not be * considered autofilled. * - *

    NOTE: to indicate that a virtual view was autofilled, + *

    Note: To indicate that a virtual view was autofilled, * ?android:attr/autofilledHighlight should be drawn over it until the data * changes. * @@ -7780,8 +7828,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, /** * Gets the {@link View}'s current autofill value. * - *

    By default returns {@code null}, but views should override it to properly support the - * Autofill Framework. + *

    By default returns {@code null}, but subclasses should override it and return an + * appropriate value to properly support the Autofill Framework. * * @see #onProvideAutofillStructure(ViewStructure, int) * @see #autofill(AutofillValue) @@ -7833,7 +7881,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * be {@link #IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS}. * * - *

    NOTE: setting the mode as does {@link #IMPORTANT_FOR_AUTOFILL_NO} or + *

    Note: Setting the mode as {@link #IMPORTANT_FOR_AUTOFILL_NO} or * {@link #IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS} does not guarantee the view (and its * children) will be always be considered not important; for example, when the user explicitly * makes an autofill request, all views are considered important. See @@ -8078,10 +8126,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, boolean forAutofill, @AutofillFlags int flags) { if (forAutofill) { structure.setAutofillId(getAutofillId()); - if (!isLaidOut()) { - Log.w(VIEW_LOG_TAG, "dispatchProvideAutofillStructure(): not laid out, ignoring"); - return; - } onProvideAutofillStructure(structure, flags); onProvideAutofillVirtualStructure(structure, flags); } else if (!isAssistBlocked()) { @@ -9711,6 +9755,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @param hasTransientState true if this view has transient state */ public void setHasTransientState(boolean hasTransientState) { + final boolean oldHasTransientState = hasTransientState(); mTransientStateCount = hasTransientState ? mTransientStateCount + 1 : mTransientStateCount - 1; if (mTransientStateCount < 0) { @@ -9722,9 +9767,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // update flag if we've just incremented up from 0 or decremented down to 0 mPrivateFlags2 = (mPrivateFlags2 & ~PFLAG2_HAS_TRANSIENT_STATE) | (hasTransientState ? PFLAG2_HAS_TRANSIENT_STATE : 0); - if (mParent != null) { + final boolean newHasTransientState = hasTransientState(); + if (mParent != null && newHasTransientState != oldHasTransientState) { try { - mParent.childHasTransientStateChanged(this, hasTransientState); + mParent.childHasTransientStateChanged(this, newHasTransientState); } catch (AbstractMethodError e) { Log.e(VIEW_LOG_TAG, mParent.getClass().getSimpleName() + " does not fully implement ViewParent", e); @@ -10180,6 +10226,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * * @hide */ + @TestApi public final void setFocusedInCluster() { setFocusedInCluster(findKeyboardNavigationCluster()); } @@ -12157,7 +12204,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, // If the view is in the background but still part of the hierarchy this is called // with isVisible=false. Hence visibility==false requires further checks if (isVisible) { - afm.notifyViewVisibilityChange(this, true); + afm.notifyViewVisibilityChanged(this, true); } else { if (mVisibilityChangeForAutofillHandler == null) { mVisibilityChangeForAutofillHandler = @@ -13246,6 +13293,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, && ((privateFlags & PFLAG_FOCUSED) != 0)) { /* Give up focus if we are no longer focusable */ clearFocus(); + if (mParent instanceof ViewGroup) { + ((ViewGroup) mParent).clearFocusedInCluster(); + } } else if (((old & FOCUSABLE) == NOT_FOCUSABLE) && ((privateFlags & PFLAG_FOCUSED) == 0)) { /* @@ -13293,7 +13343,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback, requestLayout(); if (((mViewFlags & VISIBILITY_MASK) == GONE)) { - if (hasFocus()) clearFocus(); + if (hasFocus()) { + clearFocus(); + if (mParent instanceof ViewGroup) { + ((ViewGroup) mParent).clearFocusedInCluster(); + } + } clearAccessibilityFocus(); destroyDrawingCache(); if (mParent instanceof View) { @@ -13321,7 +13376,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (((mViewFlags & VISIBILITY_MASK) == INVISIBLE)) { // root view becoming invisible shouldn't clear focus and accessibility focus if (getRootView() != this) { - if (hasFocus()) clearFocus(); + if (hasFocus()) { + clearFocus(); + if (mParent instanceof ViewGroup) { + ((ViewGroup) mParent).clearFocusedInCluster(); + } + } clearAccessibilityFocus(); } } @@ -17684,6 +17744,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, setAutofilled(baseState.mIsAutofilled); } if ((baseState.mSavedData & BaseSavedState.AUTOFILL_ID) != 0) { + // It can happen that views have the same view id and the restoration path will not + // be able to distinguish between them. The autofill id needs to be unique though. + // Hence prevent the same autofill view id from being restored multiple times. + ((BaseSavedState) state).mSavedData &= ~BaseSavedState.AUTOFILL_ID; + mAutofillViewId = baseState.mAutofillViewId; } } @@ -25012,7 +25077,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @Override public void handleMessage(Message msg) { - mAfm.notifyViewVisibilityChange(mView, mView.isShown()); + mAfm.notifyViewVisibilityChanged(mView, mView.isShown()); } } diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 4def0d02c2259fbd6dbdbbaf2fa027915c3894c0..574137b30f1eeea66a4181c993d499d8aad10e86 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -35,7 +35,7 @@ public class ViewConfiguration { * Defines the width of the horizontal scrollbar and the height of the vertical scrollbar in * dips */ - private static final int SCROLL_BAR_SIZE = 10; + private static final int SCROLL_BAR_SIZE = 4; /** * Duration of the fade when scrollbars fade away in milliseconds @@ -354,7 +354,8 @@ public class ViewConfiguration { mEdgeSlop = (int) (sizeAndDensity * EDGE_SLOP + 0.5f); mFadingEdgeLength = (int) (sizeAndDensity * FADING_EDGE_LENGTH + 0.5f); - mScrollbarSize = (int) (density * SCROLL_BAR_SIZE + 0.5f); + mScrollbarSize = res.getDimensionPixelSize( + com.android.internal.R.dimen.config_scrollbarSize); mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f); mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f); diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index ecdfa3fc3336442fbd69c96c9a49ec4ab47d16a7..bf324070f5bfc2c08176776b7a6c4b846f9ded9b 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -818,6 +818,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (mFocusedInCluster != child) { return; } + clearFocusedInCluster(); + } + + /** + * Removes the focusedInCluster chain from this up to the cluster containing it. + */ + void clearFocusedInCluster() { View top = findKeyboardNavigationCluster(); ViewParent parent = this; do { @@ -3400,6 +3407,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (childrenCount <= 0) { return; } + + if (!isLaidOut()) { + Log.v(VIEW_LOG_TAG, "dispatchProvideStructure(): not laid out, ignoring " + + childrenCount + " children of " + getAccessibilityViewId()); + return; + } + structure.setChildCount(childrenCount); ArrayList preorderedList = buildOrderedChildList(); boolean customOrder = preorderedList == null @@ -3476,6 +3490,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (structure.getChildCount() != 0) { return; } + + if (!isLaidOut()) { + Log.v(VIEW_LOG_TAG, "dispatchProvideAutofillStructure(): not laid out, ignoring " + + mChildrenCount + " children of " + getAutofillId()); + return; + } + final ChildListForAutoFill children = getChildrenForAutofill(flags); final int childrenCount = children.size(); structure.setChildCount(childrenCount); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7ace841d270c8b637d3ba784a442f45126850496..8f250a9e9f15b41ad3a0bf2f4f496d793083058b 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -28,7 +28,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY; import android.Manifest; import android.animation.LayoutTransition; import android.annotation.NonNull; -import android.annotation.TestApi; import android.app.ActivityManager; import android.app.ActivityThread; import android.app.ResourcesManager; @@ -214,11 +213,8 @@ public final class ViewRootImpl implements ViewParent, /** * Always assign focus if a focusable View is available. - * - * @hide */ - @TestApi - public static boolean sAlwaysAssignFocus; + private static boolean sAlwaysAssignFocus; /** * This list must only be modified by the main thread, so a lock is only needed when changing @@ -263,6 +259,9 @@ public final class ViewRootImpl implements ViewParent, // visibility to control drawing. The decor view visibility will get adjusted when the app get // stopped and that's when the app will stop drawing further frames. private boolean mForceDecorViewVisibility = false; + // Used for tracking app visibility updates separately in case we get double change. This will + // make sure that we always call relayout for the corresponding window. + private boolean mAppVisibilityChanged; int mOrigWindowType = -1; /** Whether the window had focus during the most recent traversal. */ @@ -1062,6 +1061,7 @@ public final class ViewRootImpl implements ViewParent, void handleAppVisibility(boolean visible) { if (mAppVisible != visible) { mAppVisible = visible; + mAppVisibilityChanged = true; scheduleTraversals(); if (!mAppVisible) { WindowManagerGlobal.trimForeground(); @@ -1604,7 +1604,11 @@ public final class ViewRootImpl implements ViewParent, final int viewVisibility = getHostVisibility(); final boolean viewVisibilityChanged = !mFirst - && (mViewVisibility != viewVisibility || mNewSurfaceNeeded); + && (mViewVisibility != viewVisibility || mNewSurfaceNeeded + // Also check for possible double visibility update, which will make current + // viewVisibility value equal to mViewVisibility and we may miss it. + || mAppVisibilityChanged); + mAppVisibilityChanged = false; final boolean viewUserVisibilityChanged = !mFirst && ((mViewVisibility == View.VISIBLE) != (viewVisibility == View.VISIBLE)); @@ -7710,7 +7714,7 @@ public final class ViewRootImpl implements ViewParent, public void onAccessibilityStateChanged(boolean enabled) { if (enabled) { ensureConnection(); - if (mAttachInfo.mHasWindowFocus) { + if (mAttachInfo.mHasWindowFocus && (mView != null)) { mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); View focusedView = mView.findFocus(); if (focusedView != null && focusedView != mView) { diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java index 0d5c0754dca776e5113f4b01771773e351e67736..3d6af414a3a0d0ca51f01bdacec66bc6792cac4c 100644 --- a/core/java/android/view/Window.java +++ b/core/java/android/view/Window.java @@ -1139,11 +1139,18 @@ public abstract class Window { } /** - *

    Set the color mode of the window. Setting the color mode might + *

    Sets the requested color mode of the window. The requested the color mode might * override the window's pixel {@link WindowManager.LayoutParams#format format}.

    * - *

    The color mode must be one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, + *

    The requested color mode must be one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or {@link ActivityInfo#COLOR_MODE_HDR}.

    + * + *

    The requested color mode is not guaranteed to be honored. Please refer to + * {@link #getColorMode()} for more information.

    + * + * @see #getColorMode() + * @see Display#isWideColorGamut() + * @see Configuration#isScreenWideColorGamut() */ public void setColorMode(@ActivityInfo.ColorMode int colorMode) { final WindowManager.LayoutParams attrs = getAttributes(); @@ -1152,14 +1159,34 @@ public abstract class Window { } /** - * Returns the color mode of the window, one of {@link ActivityInfo#COLOR_MODE_DEFAULT}, - * {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} or {@link ActivityInfo#COLOR_MODE_HDR}. + * Returns the requested color mode of the window, one of + * {@link ActivityInfo#COLOR_MODE_DEFAULT}, {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} + * or {@link ActivityInfo#COLOR_MODE_HDR}. If {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT} + * was requested it is possible the window will not be put in wide color gamut mode depending + * on device and display support for that mode. Use {@link #isWideColorGamut} to determine + * if the window is currently in wide color gamut mode. + * + * @see #setColorMode(int) + * @see Display#isWideColorGamut() + * @see Configuration#isScreenWideColorGamut() */ @ActivityInfo.ColorMode public int getColorMode() { return getAttributes().getColorMode(); } + /** + * Returns true if this window's color mode is {@link ActivityInfo#COLOR_MODE_WIDE_COLOR_GAMUT}, + * the display has a wide color gamut and this device supports wide color gamut rendering. + * + * @see Display#isWideColorGamut() + * @see Configuration#isScreenWideColorGamut() + */ + public boolean isWideColorGamut() { + return getColorMode() == ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT + && getContext().getResources().getConfiguration().isScreenWideColorGamut(); + } + /** * Set the amount of dim behind the window when using * {@link WindowManager.LayoutParams#FLAG_DIM_BEHIND}. This overrides @@ -1242,8 +1269,10 @@ public abstract class Window { /** @hide */ public boolean shouldCloseOnTouch(Context context, MotionEvent event) { - if (mCloseOnTouchOutside && event.getAction() == MotionEvent.ACTION_DOWN - && isOutOfBounds(context, event) && peekDecorView() != null) { + final boolean isOutside = + event.getAction() == MotionEvent.ACTION_DOWN && isOutOfBounds(context, event) + || event.getAction() == MotionEvent.ACTION_OUTSIDE; + if (mCloseOnTouchOutside && peekDecorView() != null && isOutside) { return true; } return false; diff --git a/core/java/android/view/WindowInfo.java b/core/java/android/view/WindowInfo.java index 95a63944b3bcf66140bbdc88cd45f761f4855e00..bb9e391ddcb44729465e6436bc06796ce870084b 100644 --- a/core/java/android/view/WindowInfo.java +++ b/core/java/android/view/WindowInfo.java @@ -41,6 +41,7 @@ public class WindowInfo implements Parcelable { public int layer; public IBinder token; public IBinder parentToken; + public IBinder activityToken; public boolean focused; public final Rect boundsInScreen = new Rect(); public List childTokens; @@ -66,6 +67,7 @@ public class WindowInfo implements Parcelable { window.layer = other.layer; window.token = other.token; window.parentToken = other.parentToken; + window.activityToken = other.activityToken; window.focused = other.focused; window.boundsInScreen.set(other.boundsInScreen); window.title = other.title; @@ -99,6 +101,7 @@ public class WindowInfo implements Parcelable { parcel.writeInt(layer); parcel.writeStrongBinder(token); parcel.writeStrongBinder(parentToken); + parcel.writeStrongBinder(activityToken); parcel.writeInt(focused ? 1 : 0); boundsInScreen.writeToParcel(parcel, flags); parcel.writeCharSequence(title); @@ -135,6 +138,7 @@ public class WindowInfo implements Parcelable { layer = parcel.readInt(); token = parcel.readStrongBinder(); parentToken = parcel.readStrongBinder(); + activityToken = parcel.readStrongBinder(); focused = (parcel.readInt() == 1); boundsInScreen.readFromParcel(parcel); title = parcel.readCharSequence(); @@ -155,6 +159,7 @@ public class WindowInfo implements Parcelable { layer = 0; token = null; parentToken = null; + activityToken = null; focused = false; boundsInScreen.setEmpty(); if (childTokens != null) { diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index d60ba16dbad64e8ac9d9ef2a7f150a789c416cb1..86402a7c6abebcce0c75e8ce211c331470bc14ad 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -16,6 +16,7 @@ package android.view; +import android.Manifest.permission; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; @@ -955,7 +956,11 @@ public interface WindowManager extends ViewManager { * {@link #FLAG_DISMISS_KEYGUARD} to automatically fully dismisss * non-secure keyguards. This flag only applies to the top-most * full-screen window. + * @deprecated Use {@link android.R.attr#showWhenLocked} or + * {@link android.app.Activity#setShowWhenLocked(boolean)} instead to prevent an + * unintentional double life-cycle event. */ + @Deprecated public static final int FLAG_SHOW_WHEN_LOCKED = 0x00080000; /** Window flag: ask that the system wallpaper be shown behind @@ -980,24 +985,32 @@ public interface WindowManager extends ViewManager { /** Window flag: when set as a window is being added or made * visible, once the window has been shown then the system will * poke the power manager's user activity (as if the user had woken - * up the device) to turn the screen on. */ + * up the device) to turn the screen on. + * @deprecated Use {@link android.R.attr#turnScreenOn} or + * {@link android.app.Activity#setTurnScreenOn(boolean)} instead to prevent an + * unintentional double life-cycle event. + */ + @Deprecated public static final int FLAG_TURN_SCREEN_ON = 0x00200000; - /** Window flag: when set the window will cause the keyguard to - * be dismissed, only if it is not a secure lock keyguard. Because such - * a keyguard is not needed for security, it will never re-appear if - * the user navigates to another window (in contrast to - * {@link #FLAG_SHOW_WHEN_LOCKED}, which will only temporarily - * hide both secure and non-secure keyguards but ensure they reappear - * when the user moves to another UI that doesn't hide them). - * If the keyguard is currently active and is secure (requires an - * unlock credential) than the user will still need to confirm it before - * seeing this window, unless {@link #FLAG_SHOW_WHEN_LOCKED} has - * also been set. - * @deprecated Use {@link #FLAG_SHOW_WHEN_LOCKED} or {@link KeyguardManager#dismissKeyguard} - * instead. Since keyguard was dismissed all the time as long as an activity with this flag - * on its window was focused, keyguard couldn't guard against unintentional touches on the - * screen, which isn't desired. + /** + * Window flag: when set the window will cause the keyguard to be + * dismissed, only if it is not a secure lock keyguard. Because such a + * keyguard is not needed for security, it will never re-appear if the + * user navigates to another window (in contrast to + * {@link #FLAG_SHOW_WHEN_LOCKED}, which will only temporarily hide both + * secure and non-secure keyguards but ensure they reappear when the + * user moves to another UI that doesn't hide them). If the keyguard is + * currently active and is secure (requires an unlock credential) than + * the user will still need to confirm it before seeing this window, + * unless {@link #FLAG_SHOW_WHEN_LOCKED} has also been set. + * + * @deprecated Use {@link #FLAG_SHOW_WHEN_LOCKED} or + * {@link KeyguardManager#requestDismissKeyguard} instead. + * Since keyguard was dismissed all the time as long as an + * activity with this flag on its window was focused, + * keyguard couldn't guard against unintentional touches on + * the screen, which isn't desired. */ @Deprecated public static final int FLAG_DISMISS_KEYGUARD = 0x00400000; @@ -1394,15 +1407,14 @@ public interface WindowManager extends ViewManager { public static final int PRIVATE_FLAG_SUSTAINED_PERFORMANCE_MODE = 0x00040000; /** - * Flag to indicate that this window is used as a task snapshot window. A task snapshot - * window is a starting window that gets shown with a screenshot from the previous state - * that is active until the app has drawn its first frame. - * - *

    If this flag is set, SystemUI flags are ignored such that the real window behind can - * set the SystemUI flags. + * Flag to indicate that any window added by an application process that is of type + * {@link #TYPE_TOAST} or that requires + * {@link android.app.AppOpsManager#OP_SYSTEM_ALERT_WINDOW} permission should be hidden when + * this window is visible. * @hide */ - public static final int PRIVATE_FLAG_TASK_SNAPSHOT = 0x00080000; + @RequiresPermission(android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS) + public static final int PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS = 0x00080000; /** * Indicates that this window is the rounded corners overlay present on some @@ -1412,6 +1424,15 @@ public interface WindowManager extends ViewManager { */ public static final int PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY = 0x00100000; + /** + * If this flag is set on the window, window manager will acquire a sleep token that puts + * all activities to sleep as long as this window is visible. When this flag is set, the + * window needs to occlude all activity windows. + * @hide + */ + @RequiresPermission(permission.DEVICE_POWER) + public static final int PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN = 0x00200000; + /** * Control flags that are private to the platform. * @hide diff --git a/core/java/android/view/WindowManagerInternal.java b/core/java/android/view/WindowManagerInternal.java index 98f8dc8e3a6dda34063670b0ae92259d696cb0e9..97dff6a860b954616dd887334051d9e2f48c16c9 100644 --- a/core/java/android/view/WindowManagerInternal.java +++ b/core/java/android/view/WindowManagerInternal.java @@ -225,9 +225,6 @@ public abstract class WindowManagerInternal { */ public abstract boolean isKeyguardLocked(); - /** @return {@code true} if the keyguard is going away. */ - public abstract boolean isKeyguardGoingAway(); - /** * @return Whether the keyguard is showing and not occluded. */ diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 49b7ed8bac0e1464d4b36e94abdc589f345a3020..c4ffb4c06a26d42dd9f23e111354ae8615b37a06 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -16,6 +16,7 @@ package android.view; +import static android.Manifest.permission; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; @@ -485,11 +486,17 @@ public interface WindowManagerPolicy { /** * Returns true if the window owner can add internal system windows. - * That is, they have {@link android.Manifest.permission#INTERNAL_SYSTEM_WINDOW}. + * That is, they have {@link permission#INTERNAL_SYSTEM_WINDOW}. */ default boolean canAddInternalSystemWindow() { return false; } + + /** + * Returns true if the window owner has the permission to acquire a sleep token when it's + * visible. That is, they have the permission {@link permission#DEVICE_POWER}. + */ + boolean canAcquireSleepToken(); } /** @@ -774,7 +781,7 @@ public interface WindowManagerPolicy { * @param type The type of window being assigned. * @param canAddInternalSystemWindow If the owner window associated with the type we are * evaluating can add internal system windows. I.e they have - * {@link android.Manifest.permission#INTERNAL_SYSTEM_WINDOW}. If true, alert window + * {@link permission#INTERNAL_SYSTEM_WINDOW}. If true, alert window * types {@link android.view.WindowManager.LayoutParams#isSystemAlertWindowType(int)} * can be assigned layers greater than the layer for * {@link android.view.WindowManager.LayoutParams#TYPE_APPLICATION_OVERLAY} Else, their diff --git a/core/java/android/view/accessibility/AccessibilityCache.java b/core/java/android/view/accessibility/AccessibilityCache.java index 604e9854cd63a37fb02eb7cf333cc13b732d4836..d7851171cd67a1b996d6d9e88fbfb959c6b633f1 100644 --- a/core/java/android/view/accessibility/AccessibilityCache.java +++ b/core/java/android/view/accessibility/AccessibilityCache.java @@ -40,7 +40,7 @@ public final class AccessibilityCache { private static final boolean DEBUG = false; - private static final boolean CHECK_INTEGRITY = "eng".equals(Build.TYPE); + private static final boolean CHECK_INTEGRITY = Build.IS_ENG; /** * {@link AccessibilityEvent} types that are critical for the cache to stay up to date @@ -329,8 +329,6 @@ public final class AccessibilityCache { final long oldParentId = oldInfo.getParentNodeId(); if (info.getParentNodeId() != oldParentId) { clearSubTreeLocked(windowId, oldParentId); - } else { - oldInfo.recycle(); } } diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java index 9dd0fb0eb85e4ad7b22066160b0efd164c0aa389..eaa4b4b3ba0825f51a0f3a20f5dd0cbc95bd0c15 100644 --- a/core/java/android/view/accessibility/AccessibilityEvent.java +++ b/core/java/android/view/accessibility/AccessibilityEvent.java @@ -620,7 +620,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par public static final int TYPE_WINDOW_CONTENT_CHANGED = 0x00000800; /** - * Represents the event of scrolling a view. + * Represents the event of scrolling a view. This event type is generally not sent directly. + * @see View#onScrollChanged(int, int, int, int) */ public static final int TYPE_VIEW_SCROLLED = 0x00001000; diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java index 69892d991ccd07cb8f1ac8d20ef48ea735b6fc55..0b9bc5760fa86c43de166762845689a51d6207d0 100644 --- a/core/java/android/view/accessibility/AccessibilityManager.java +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -23,9 +23,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SdkConstant; -import android.annotation.SystemApi; import android.annotation.SystemService; -import android.annotation.TestApi; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; @@ -705,9 +703,7 @@ public final class AccessibilityManager { /** * Registers a {@link AccessibilityRequestPreparer}. - * @hide */ - @TestApi public void addAccessibilityRequestPreparer(AccessibilityRequestPreparer preparer) { if (mRequestPreparerLists == null) { mRequestPreparerLists = new SparseArray<>(1); @@ -723,9 +719,7 @@ public final class AccessibilityManager { /** * Unregisters a {@link AccessibilityRequestPreparer}. - * @hide */ - @TestApi public void removeAccessibilityRequestPreparer(AccessibilityRequestPreparer preparer) { if (mRequestPreparerLists == null) { return; @@ -1118,9 +1112,7 @@ public final class AccessibilityManager { * * @return {@code true} if the accessibility button is supported on this device, * {@code false} otherwise - * @hide */ - @SystemApi public static boolean isAccessibilityButtonSupported() { final Resources res = Resources.getSystem(); return res.getBoolean(com.android.internal.R.bool.config_showNavigationBar); diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 82a6de7019b204071fd667faa505542ba2402703..53efe1833db1cac5aed3d246c70ac74236ad5a8f 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -335,7 +335,8 @@ public class AccessibilityNodeInfo implements Parcelable { */ public static final int ACTION_SET_TEXT = 0x00200000; - private static final int LAST_LEGACY_STANDARD_ACTION = ACTION_SET_TEXT; + /** @hide */ + public static final int LAST_LEGACY_STANDARD_ACTION = ACTION_SET_TEXT; /** * Mask to see if the value is larger than the largest ACTION_ constant @@ -1180,7 +1181,7 @@ public class AccessibilityNodeInfo implements Parcelable { "actions: " + action); } - addLegacyStandardActions(action); + addStandardActions(action); } /** @@ -3193,22 +3194,22 @@ public class AccessibilityNodeInfo implements Parcelable { if (mActions != null && !mActions.isEmpty()) { final int actionCount = mActions.size(); - int nonLegacyActionCount = 0; - int defaultLegacyStandardActions = 0; + int nonStandardActionCount = 0; + int defaultStandardActions = 0; for (int i = 0; i < actionCount; i++) { AccessibilityAction action = mActions.get(i); - if (isDefaultLegacyStandardAction(action)) { - defaultLegacyStandardActions |= action.getId(); + if (isDefaultStandardAction(action)) { + defaultStandardActions |= action.mSerializationFlag; } else { - nonLegacyActionCount++; + nonStandardActionCount++; } } - parcel.writeInt(defaultLegacyStandardActions); - parcel.writeInt(nonLegacyActionCount); + parcel.writeInt(defaultStandardActions); + parcel.writeInt(nonStandardActionCount); for (int i = 0; i < actionCount; i++) { AccessibilityAction action = mActions.get(i); - if (!isDefaultLegacyStandardAction(action)) { + if (!isDefaultStandardAction(action)) { parcel.writeInt(action.getId()); parcel.writeCharSequence(action.getLabel()); } @@ -3400,10 +3401,10 @@ public class AccessibilityNodeInfo implements Parcelable { } if (isBitSet(nonDefaultFields, fieldIndex++)) { - final int legacyStandardActions = parcel.readInt(); - addLegacyStandardActions(legacyStandardActions); - final int nonLegacyActionCount = parcel.readInt(); - for (int i = 0; i < nonLegacyActionCount; i++) { + final int standardActions = parcel.readInt(); + addStandardActions(standardActions); + final int nonStandardActionCount = parcel.readInt(); + for (int i = 0; i < nonStandardActionCount; i++) { final AccessibilityAction action = new AccessibilityAction( parcel.readInt(), parcel.readCharSequence()); addActionUnchecked(action); @@ -3478,9 +3479,8 @@ public class AccessibilityNodeInfo implements Parcelable { init(DEFAULT); } - private static boolean isDefaultLegacyStandardAction(AccessibilityAction action) { - return (action.getId() <= LAST_LEGACY_STANDARD_ACTION - && TextUtils.isEmpty(action.getLabel())); + private static boolean isDefaultStandardAction(AccessibilityAction action) { + return action.mSerializationFlag != -1 && TextUtils.isEmpty(action.getLabel()); } private static AccessibilityAction getActionSingleton(int actionId) { @@ -3495,12 +3495,24 @@ public class AccessibilityNodeInfo implements Parcelable { return null; } - private void addLegacyStandardActions(int actionMask) { - int remainingIds = actionMask; + private static AccessibilityAction getActionSingletonBySerializationFlag(int flag) { + final int actions = AccessibilityAction.sStandardActions.size(); + for (int i = 0; i < actions; i++) { + AccessibilityAction currentAction = AccessibilityAction.sStandardActions.valueAt(i); + if (flag == currentAction.mSerializationFlag) { + return currentAction; + } + } + + return null; + } + + private void addStandardActions(int serializationIdMask) { + int remainingIds = serializationIdMask; while (remainingIds > 0) { final int id = 1 << Integer.numberOfTrailingZeros(remainingIds); remainingIds &= ~id; - AccessibilityAction action = getActionSingleton(id); + AccessibilityAction action = getActionSingletonBySerializationFlag(id); addAction(action); } } @@ -3749,61 +3761,56 @@ public class AccessibilityNodeInfo implements Parcelable { */ public static final class AccessibilityAction { + /** @hide */ + public static final ArraySet sStandardActions = new ArraySet<>(); + /** * Action that gives input focus to the node. */ public static final AccessibilityAction ACTION_FOCUS = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_FOCUS, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_FOCUS); /** * Action that clears input focus of the node. */ public static final AccessibilityAction ACTION_CLEAR_FOCUS = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_CLEAR_FOCUS, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS); /** * Action that selects the node. */ public static final AccessibilityAction ACTION_SELECT = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_SELECT, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_SELECT); /** * Action that deselects the node. */ public static final AccessibilityAction ACTION_CLEAR_SELECTION = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_CLEAR_SELECTION, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_CLEAR_SELECTION); /** * Action that clicks on the node info. */ public static final AccessibilityAction ACTION_CLICK = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_CLICK, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_CLICK); /** * Action that long clicks on the node. */ public static final AccessibilityAction ACTION_LONG_CLICK = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_LONG_CLICK, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); /** * Action that gives accessibility focus to the node. */ public static final AccessibilityAction ACTION_ACCESSIBILITY_FOCUS = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS); /** * Action that clears accessibility focus of the node. */ public static final AccessibilityAction ACTION_CLEAR_ACCESSIBILITY_FOCUS = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); /** * Action that requests to go to the next entity in this node's text @@ -3849,8 +3856,7 @@ public class AccessibilityNodeInfo implements Parcelable { * AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE */ public static final AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY); /** * Action that requests to go to the previous entity in this node's text @@ -3897,7 +3903,7 @@ public class AccessibilityNodeInfo implements Parcelable { */ public static final AccessibilityAction ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = new AccessibilityAction( - AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY, null); + AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY); /** * Action to move to the next HTML element of a given type. For example, move @@ -3915,8 +3921,7 @@ public class AccessibilityNodeInfo implements Parcelable { *

    */ public static final AccessibilityAction ACTION_NEXT_HTML_ELEMENT = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT); /** * Action to move to the previous HTML element of a given type. For example, move @@ -3934,43 +3939,37 @@ public class AccessibilityNodeInfo implements Parcelable { *

    */ public static final AccessibilityAction ACTION_PREVIOUS_HTML_ELEMENT = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT); /** * Action to scroll the node content forward. */ public static final AccessibilityAction ACTION_SCROLL_FORWARD = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_SCROLL_FORWARD, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); /** * Action to scroll the node content backward. */ public static final AccessibilityAction ACTION_SCROLL_BACKWARD = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); /** * Action to copy the current selection to the clipboard. */ public static final AccessibilityAction ACTION_COPY = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_COPY, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_COPY); /** * Action to paste the current clipboard content. */ public static final AccessibilityAction ACTION_PASTE = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_PASTE, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_PASTE); /** * Action to cut the current selection and place it to the clipboard. */ public static final AccessibilityAction ACTION_CUT = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_CUT, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_CUT); /** * Action to set the selection. Performing this action with no arguments @@ -3996,29 +3995,25 @@ public class AccessibilityNodeInfo implements Parcelable { * AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT */ public static final AccessibilityAction ACTION_SET_SELECTION = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_SET_SELECTION, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_SET_SELECTION); /** * Action to expand an expandable node. */ public static final AccessibilityAction ACTION_EXPAND = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_EXPAND, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_EXPAND); /** * Action to collapse an expandable node. */ public static final AccessibilityAction ACTION_COLLAPSE = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_COLLAPSE, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_COLLAPSE); /** * Action to dismiss a dismissable node. */ public static final AccessibilityAction ACTION_DISMISS = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_DISMISS, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_DISMISS); /** * Action that sets the text of the node. Performing the action without argument, @@ -4037,8 +4032,7 @@ public class AccessibilityNodeInfo implements Parcelable { *

    */ public static final AccessibilityAction ACTION_SET_TEXT = - new AccessibilityAction( - AccessibilityNodeInfo.ACTION_SET_TEXT, null); + new AccessibilityAction(AccessibilityNodeInfo.ACTION_SET_TEXT); /** * Action that requests the node make its bounding rectangle visible @@ -4047,7 +4041,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @see View#requestRectangleOnScreen(Rect) */ public static final AccessibilityAction ACTION_SHOW_ON_SCREEN = - new AccessibilityAction(R.id.accessibilityActionShowOnScreen, null); + new AccessibilityAction(R.id.accessibilityActionShowOnScreen); /** * Action that scrolls the node to make the specified collection @@ -4062,37 +4056,37 @@ public class AccessibilityNodeInfo implements Parcelable { * @see AccessibilityNodeInfo#getCollectionInfo() */ public static final AccessibilityAction ACTION_SCROLL_TO_POSITION = - new AccessibilityAction(R.id.accessibilityActionScrollToPosition, null); + new AccessibilityAction(R.id.accessibilityActionScrollToPosition); /** * Action to scroll the node content up. */ public static final AccessibilityAction ACTION_SCROLL_UP = - new AccessibilityAction(R.id.accessibilityActionScrollUp, null); + new AccessibilityAction(R.id.accessibilityActionScrollUp); /** * Action to scroll the node content left. */ public static final AccessibilityAction ACTION_SCROLL_LEFT = - new AccessibilityAction(R.id.accessibilityActionScrollLeft, null); + new AccessibilityAction(R.id.accessibilityActionScrollLeft); /** * Action to scroll the node content down. */ public static final AccessibilityAction ACTION_SCROLL_DOWN = - new AccessibilityAction(R.id.accessibilityActionScrollDown, null); + new AccessibilityAction(R.id.accessibilityActionScrollDown); /** * Action to scroll the node content right. */ public static final AccessibilityAction ACTION_SCROLL_RIGHT = - new AccessibilityAction(R.id.accessibilityActionScrollRight, null); + new AccessibilityAction(R.id.accessibilityActionScrollRight); /** * Action that context clicks the node. */ public static final AccessibilityAction ACTION_CONTEXT_CLICK = - new AccessibilityAction(R.id.accessibilityActionContextClick, null); + new AccessibilityAction(R.id.accessibilityActionContextClick); /** * Action that sets progress between {@link RangeInfo#getMin() RangeInfo.getMin()} and @@ -4105,7 +4099,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @see RangeInfo */ public static final AccessibilityAction ACTION_SET_PROGRESS = - new AccessibilityAction(R.id.accessibilityActionSetProgress, null); + new AccessibilityAction(R.id.accessibilityActionSetProgress); /** * Action to move a window to a new location. @@ -4115,45 +4109,14 @@ public class AccessibilityNodeInfo implements Parcelable { * {@link AccessibilityNodeInfo#ACTION_ARGUMENT_MOVE_WINDOW_Y} */ public static final AccessibilityAction ACTION_MOVE_WINDOW = - new AccessibilityAction(R.id.accessibilityActionMoveWindow, null); - - private static final ArraySet sStandardActions = new ArraySet<>(); - static { - sStandardActions.add(ACTION_FOCUS); - sStandardActions.add(ACTION_CLEAR_FOCUS); - sStandardActions.add(ACTION_SELECT); - sStandardActions.add(ACTION_CLEAR_SELECTION); - sStandardActions.add(ACTION_CLICK); - sStandardActions.add(ACTION_LONG_CLICK); - sStandardActions.add(ACTION_ACCESSIBILITY_FOCUS); - sStandardActions.add(ACTION_CLEAR_ACCESSIBILITY_FOCUS); - sStandardActions.add(ACTION_NEXT_AT_MOVEMENT_GRANULARITY); - sStandardActions.add(ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY); - sStandardActions.add(ACTION_NEXT_HTML_ELEMENT); - sStandardActions.add(ACTION_PREVIOUS_HTML_ELEMENT); - sStandardActions.add(ACTION_SCROLL_FORWARD); - sStandardActions.add(ACTION_SCROLL_BACKWARD); - sStandardActions.add(ACTION_COPY); - sStandardActions.add(ACTION_PASTE); - sStandardActions.add(ACTION_CUT); - sStandardActions.add(ACTION_SET_SELECTION); - sStandardActions.add(ACTION_EXPAND); - sStandardActions.add(ACTION_COLLAPSE); - sStandardActions.add(ACTION_DISMISS); - sStandardActions.add(ACTION_SET_TEXT); - sStandardActions.add(ACTION_SHOW_ON_SCREEN); - sStandardActions.add(ACTION_SCROLL_TO_POSITION); - sStandardActions.add(ACTION_SCROLL_UP); - sStandardActions.add(ACTION_SCROLL_LEFT); - sStandardActions.add(ACTION_SCROLL_DOWN); - sStandardActions.add(ACTION_SCROLL_RIGHT); - sStandardActions.add(ACTION_SET_PROGRESS); - sStandardActions.add(ACTION_CONTEXT_CLICK); - } + new AccessibilityAction(R.id.accessibilityActionMoveWindow); private final int mActionId; private final CharSequence mLabel; + /** @hide */ + public int mSerializationFlag = -1; + /** * Creates a new AccessibilityAction. For adding a standard action without a specific label, * use the static constants. @@ -4180,6 +4143,16 @@ public class AccessibilityNodeInfo implements Parcelable { mLabel = label; } + /** + * Constructor for a {@link #sStandardActions standard} action + */ + private AccessibilityAction(int standardActionId) { + this(standardActionId, null); + + mSerializationFlag = (int) bitAt(sStandardActions.size()); + sStandardActions.add(this); + } + /** * Gets the id for this action. * diff --git a/core/java/android/view/accessibility/AccessibilityRequestPreparer.java b/core/java/android/view/accessibility/AccessibilityRequestPreparer.java index c0323902aa9539efa950343f0eb96376701f9535..889feb983be4321cc84ee68a330cb8c5f2a1da09 100644 --- a/core/java/android/view/accessibility/AccessibilityRequestPreparer.java +++ b/core/java/android/view/accessibility/AccessibilityRequestPreparer.java @@ -18,7 +18,6 @@ package android.view.accessibility; import android.annotation.IntDef; import android.annotation.Nullable; -import android.annotation.TestApi; import android.content.Context; import android.os.Bundle; import android.os.Message; @@ -40,9 +39,7 @@ import java.lang.ref.WeakReference; *

    * Note: This class should only be needed in exceptional situations where a * {@link View} cannot otherwise synchronously meet the request for accessibility data. - * @hide */ -@TestApi public abstract class AccessibilityRequestPreparer { public static final int REQUEST_TYPE_EXTRA_DATA = 0x00000001; diff --git a/core/java/android/view/autofill/AutofillId.java b/core/java/android/view/autofill/AutofillId.java index 1cee529b9d624dae43f317bfd6d50e6d076f8d20..5ce2421aac871c1485433f9be3673b9738f35787 100644 --- a/core/java/android/view/autofill/AutofillId.java +++ b/core/java/android/view/autofill/AutofillId.java @@ -15,6 +15,7 @@ */ package android.view.autofill; +import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; import android.view.View; @@ -29,6 +30,7 @@ public final class AutofillId implements Parcelable { private final int mVirtualId; /** @hide */ + @TestApi public AutofillId(int id) { mVirtual = false; mViewId = id; diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 15c18aca96e6445623f081c322470e53a15afd09..4a76b804821814e37ef7b0cc758761ca4309406c 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -30,6 +30,7 @@ import android.content.IntentSender; import android.graphics.Rect; import android.metrics.LogMaker; import android.os.Bundle; +import android.os.IBinder; import android.os.Parcelable; import android.os.RemoteException; import android.service.autofill.AutofillService; @@ -42,8 +43,9 @@ import android.view.View; import com.android.internal.annotations.GuardedBy; import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.nano.MetricsProto; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; @@ -157,8 +159,15 @@ public final class AutofillManager { public static final String EXTRA_CLIENT_STATE = "android.view.autofill.extra.CLIENT_STATE"; - static final String SESSION_ID_TAG = "android:sessionId"; - static final String LAST_AUTOFILLED_DATA_TAG = "android:lastAutoFilledData"; + + /** @hide */ + public static final String EXTRA_RESTORE_SESSION_TOKEN = + "android.view.autofill.extra.RESTORE_SESSION_TOKEN"; + + private static final String SESSION_ID_TAG = "android:sessionId"; + private static final String STATE_TAG = "android:state"; + private static final String LAST_AUTOFILLED_DATA_TAG = "android:lastAutoFilledData"; + /** @hide */ public static final int ACTION_START_SESSION = 1; /** @hide */ public static final int ACTION_VIEW_ENTERED = 2; @@ -177,6 +186,58 @@ public final class AutofillManager { /** @hide The index for an undefined data set */ public static final int AUTHENTICATION_ID_DATASET_ID_UNDEFINED = 0xFFFF; + /** + * Used on {@link #onPendingSaveUi(int, IBinder)} to cancel the pending UI. + * + * @hide + */ + public static final int PENDING_UI_OPERATION_CANCEL = 1; + + /** + * Used on {@link #onPendingSaveUi(int, IBinder)} to restore the pending UI. + * + * @hide + */ + public static final int PENDING_UI_OPERATION_RESTORE = 2; + + /** + * Initial state of the autofill context, set when there is no session (i.e., when + * {@link #mSessionId} is {@link #NO_SESSION}). + * + *

    In this state, app callbacks (such as {@link #notifyViewEntered(View)}) are notified to + * the server. + * + * @hide + */ + public static final int STATE_UNKNOWN = 0; + + /** + * State where the autofill context hasn't been {@link #commit() finished} nor + * {@link #cancel() canceled} yet. + * + * @hide + */ + public static final int STATE_ACTIVE = 1; + + /** + * State where the autofill context was finished by the server because the autofill + * service could not autofill the page. + * + *

    In this state, most apps callback (such as {@link #notifyViewEntered(View)}) are ignored, + * exception {@link #requestAutofill(View)} (and {@link #requestAutofill(View, int, Rect)}). + * + * @hide + */ + public static final int STATE_FINISHED = 2; + + /** + * State where the autofill context has been {@link #commit() finished} but the server still has + * a session because the Save UI hasn't been dismissed yet. + * + * @hide + */ + public static final int STATE_SHOWING_SAVE_UI = 3; + /** * Makes an authentication id from a request id and a dataset id. * @@ -238,6 +299,9 @@ public final class AutofillManager { @GuardedBy("mLock") private int mSessionId = NO_SESSION; + @GuardedBy("mLock") + private int mState = STATE_UNKNOWN; + @GuardedBy("mLock") private boolean mEnabled; @@ -350,12 +414,13 @@ public final class AutofillManager { synchronized (mLock) { mLastAutofilledData = savedInstanceState.getParcelable(LAST_AUTOFILLED_DATA_TAG); - if (mSessionId != NO_SESSION) { + if (isActiveLocked()) { Log.w(TAG, "New session was started before onCreate()"); return; } mSessionId = savedInstanceState.getInt(SESSION_ID_TAG, NO_SESSION); + mState = savedInstanceState.getInt(STATE_TAG, STATE_UNKNOWN); if (mSessionId != NO_SESSION) { ensureServiceClientAddedIfNeededLocked(); @@ -369,6 +434,7 @@ public final class AutofillManager { if (!sessionWasRestored) { Log.w(TAG, "Session " + mSessionId + " could not be restored"); mSessionId = NO_SESSION; + mState = STATE_UNKNOWN; } else { if (sDebug) { Log.d(TAG, "session " + mSessionId + " was restored"); @@ -393,7 +459,7 @@ public final class AutofillManager { */ public void onVisibleForAutofill() { synchronized (mLock) { - if (mEnabled && mSessionId != NO_SESSION && mTrackedViews != null) { + if (mEnabled && isActiveLocked() && mTrackedViews != null) { mTrackedViews.onVisibleForAutofillLocked(); } } @@ -414,7 +480,9 @@ public final class AutofillManager { if (mSessionId != NO_SESSION) { outState.putInt(SESSION_ID_TAG, mSessionId); } - + if (mState != STATE_UNKNOWN) { + outState.putInt(STATE_TAG, mState); + } if (mLastAutofilledData != null) { outState.putParcelable(LAST_AUTOFILLED_DATA_TAG, mLastAutofilledData); } @@ -510,6 +578,14 @@ public final class AutofillManager { } AutofillCallback callback = null; synchronized (mLock) { + if (isFinishedLocked() && (flags & FLAG_MANUAL_REQUEST) == 0) { + if (sVerbose) { + Log.v(TAG, "notifyViewEntered(flags=" + flags + ", view=" + view + + "): ignored on state " + getStateAsStringLocked()); + } + return; + } + ensureServiceClientAddedIfNeededLocked(); if (!mEnabled) { @@ -520,7 +596,7 @@ public final class AutofillManager { final AutofillId id = getAutofillId(view); final AutofillValue value = view.getAutofillValue(); - if (mSessionId == NO_SESSION) { + if (!isActiveLocked()) { // Starts new session. startSessionLocked(id, null, value, flags); } else { @@ -547,7 +623,7 @@ public final class AutofillManager { synchronized (mLock) { ensureServiceClientAddedIfNeededLocked(); - if (mEnabled && mSessionId != NO_SESSION) { + if (mEnabled && isActiveLocked()) { final AutofillId id = getAutofillId(view); // Update focus on existing session. @@ -557,25 +633,48 @@ public final class AutofillManager { } /** - * Called when a {@link View view's} visibility changes. + * Called when a {@link View view's} visibility changed. + * + * @param view {@link View} that was exited. + * @param isVisible visible if the view is visible in the view hierarchy. + */ + public void notifyViewVisibilityChanged(@NonNull View view, boolean isVisible) { + notifyViewVisibilityChangedInternal(view, 0, isVisible, false); + } + + /** + * Called when a virtual view's visibility changed. * * @param view {@link View} that was exited. + * @param virtualId id identifying the virtual child inside the parent view. * @param isVisible visible if the view is visible in the view hierarchy. + */ + public void notifyViewVisibilityChanged(@NonNull View view, int virtualId, boolean isVisible) { + notifyViewVisibilityChangedInternal(view, virtualId, isVisible, true); + } + + /** + * Called when a view/virtual view's visibility changed. * - * @hide + * @param view {@link View} that was exited. + * @param virtualId id identifying the virtual child inside the parent view. + * @param isVisible visible if the view is visible in the view hierarchy. + * @param virtual Whether the view is virtual. */ - public void notifyViewVisibilityChange(@NonNull View view, boolean isVisible) { + private void notifyViewVisibilityChangedInternal(@NonNull View view, int virtualId, + boolean isVisible, boolean virtual) { synchronized (mLock) { - if (mEnabled && mSessionId != NO_SESSION) { + if (mEnabled && isActiveLocked()) { + final AutofillId id = virtual ? getAutofillId(view, virtualId) + : view.getAutofillId(); if (!isVisible && mFillableIds != null) { - final AutofillId id = view.getAutofillId(); if (mFillableIds.contains(id)) { if (sDebug) Log.d(TAG, "Hidding UI when view " + id + " became invisible"); requestHideFillUi(id, view); } } if (mTrackedViews != null) { - mTrackedViews.notifyViewVisibilityChange(view, isVisible); + mTrackedViews.notifyViewVisibilityChanged(id, isVisible); } } } @@ -610,6 +709,14 @@ public final class AutofillManager { } AutofillCallback callback = null; synchronized (mLock) { + if (isFinishedLocked() && (flags & FLAG_MANUAL_REQUEST) == 0) { + if (sVerbose) { + Log.v(TAG, "notifyViewEntered(flags=" + flags + ", view=" + view + + ", virtualId=" + virtualId + + "): ignored on state " + getStateAsStringLocked()); + } + return; + } ensureServiceClientAddedIfNeededLocked(); if (!mEnabled) { @@ -619,7 +726,7 @@ public final class AutofillManager { } else { final AutofillId id = getAutofillId(view, virtualId); - if (mSessionId == NO_SESSION) { + if (!isActiveLocked()) { // Starts new session. startSessionLocked(id, bounds, null, flags); } else { @@ -648,7 +755,7 @@ public final class AutofillManager { synchronized (mLock) { ensureServiceClientAddedIfNeededLocked(); - if (mEnabled && mSessionId != NO_SESSION) { + if (mEnabled && isActiveLocked()) { final AutofillId id = getAutofillId(view, virtualId); // Update focus on existing session. @@ -692,7 +799,11 @@ public final class AutofillManager { } } - if (!mEnabled || mSessionId == NO_SESSION) { + if (!mEnabled || !isActiveLocked()) { + if (sVerbose && mEnabled) { + Log.v(TAG, "notifyValueChanged(" + view + "): ignoring on state " + + getStateAsStringLocked()); + } return; } @@ -720,7 +831,7 @@ public final class AutofillManager { return; } synchronized (mLock) { - if (!mEnabled || mSessionId == NO_SESSION) { + if (!mEnabled || !isActiveLocked()) { return; } @@ -745,7 +856,7 @@ public final class AutofillManager { return; } synchronized (mLock) { - if (!mEnabled && mSessionId == NO_SESSION) { + if (!mEnabled && !isActiveLocked()) { return; } @@ -769,7 +880,7 @@ public final class AutofillManager { return; } synchronized (mLock) { - if (!mEnabled && mSessionId == NO_SESSION) { + if (!mEnabled && !isActiveLocked()) { return; } @@ -832,10 +943,7 @@ public final class AutofillManager { } private AutofillClient getClientLocked() { - if (mContext instanceof AutofillClient) { - return (AutofillClient) mContext; - } - return null; + return mContext.getAutofillClient(); } /** @hide */ @@ -851,7 +959,7 @@ public final class AutofillManager { if (sDebug) Log.d(TAG, "onAuthenticationResult(): d=" + data); synchronized (mLock) { - if (mSessionId == NO_SESSION || data == null) { + if (!isActiveLocked() || data == null) { return; } final Parcelable result = data.getParcelableExtra(EXTRA_AUTHENTICATION_RESULT); @@ -878,13 +986,22 @@ public final class AutofillManager { @NonNull AutofillValue value, int flags) { if (sVerbose) { Log.v(TAG, "startSessionLocked(): id=" + id + ", bounds=" + bounds + ", value=" + value - + ", flags=" + flags); + + ", flags=" + flags + ", state=" + getStateAsStringLocked()); + } + if (mState != STATE_UNKNOWN && (flags & FLAG_MANUAL_REQUEST) == 0) { + if (sVerbose) { + Log.v(TAG, "not automatically starting session for " + id + + " on state " + getStateAsStringLocked()); + } + return; } - try { mSessionId = mService.startSession(mContext.getActivityToken(), mServiceClient.asBinder(), id, bounds, value, mContext.getUserId(), mCallback != null, flags, mContext.getOpPackageName()); + if (mSessionId != NO_SESSION) { + mState = STATE_ACTIVE; + } final AutofillClient client = getClientLocked(); if (client != null) { client.autofillCallbackResetableStateAvailable(); @@ -895,7 +1012,9 @@ public final class AutofillManager { } private void finishSessionLocked() { - if (sVerbose) Log.v(TAG, "finishSessionLocked()"); + if (sVerbose) Log.v(TAG, "finishSessionLocked(): " + getStateAsStringLocked()); + + if (!isActiveLocked()) return; try { mService.finishSession(mSessionId, mContext.getUserId()); @@ -903,12 +1022,13 @@ public final class AutofillManager { throw e.rethrowFromSystemServer(); } - mTrackedViews = null; - mSessionId = NO_SESSION; + resetSessionLocked(); } private void cancelSessionLocked() { - if (sVerbose) Log.v(TAG, "cancelSessionLocked()"); + if (sVerbose) Log.v(TAG, "cancelSessionLocked(): " + getStateAsStringLocked()); + + if (!isActiveLocked()) return; try { mService.cancelSession(mSessionId, mContext.getUserId()); @@ -921,7 +1041,9 @@ public final class AutofillManager { private void resetSessionLocked() { mSessionId = NO_SESSION; + mState = STATE_UNKNOWN; mTrackedViews = null; + mFillableIds = null; } private void updateSessionLocked(AutofillId id, Rect bounds, AutofillValue value, int action, @@ -930,7 +1052,6 @@ public final class AutofillManager { Log.v(TAG, "updateSessionLocked(): id=" + id + ", bounds=" + bounds + ", value=" + value + ", action=" + action + ", flags=" + flags); } - boolean restartIfNecessary = (flags & FLAG_MANUAL_REQUEST) != 0; try { @@ -941,6 +1062,7 @@ public final class AutofillManager { if (newId != mSessionId) { if (sDebug) Log.d(TAG, "Session restarted: " + mSessionId + "=>" + newId); mSessionId = newId; + mState = (mSessionId == NO_SESSION) ? STATE_UNKNOWN : STATE_ACTIVE; final AutofillClient client = getClientLocked(); if (client != null) { client.autofillCallbackResetableStateAvailable(); @@ -1175,10 +1297,10 @@ public final class AutofillManager { } } - final LogMaker log = new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_DATASET_APPLIED); - log.addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_VALUES, itemCount); - log.addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_VIEWS_FILLED, - numApplied); + final LogMaker log = new LogMaker(MetricsEvent.AUTOFILL_DATASET_APPLIED) + .setPackageName(mContext.getPackageName()) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_VALUES, itemCount) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_VIEWS_FILLED, numApplied); mMetricsLogger.write(log); } } @@ -1215,6 +1337,41 @@ public final class AutofillManager { } } + private void setSaveUiState(int sessionId, boolean shown) { + if (sDebug) Log.d(TAG, "setSaveUiState(" + sessionId + "): " + shown); + synchronized (mLock) { + if (mSessionId != NO_SESSION) { + // Race condition: app triggered a new session after the previous session was + // finished but before server called setSaveUiState() - need to cancel the new + // session to avoid further inconsistent behavior. + Log.w(TAG, "setSaveUiState(" + sessionId + ", " + shown + + ") called on existing session " + mSessionId + "; cancelling it"); + cancelSessionLocked(); + } + if (shown) { + mSessionId = sessionId; + mState = STATE_SHOWING_SAVE_UI; + } else { + mSessionId = NO_SESSION; + mState = STATE_UNKNOWN; + } + } + } + + /** + * Marks the state of the session as finished. + * + * @param newState {@link #STATE_FINISHED} (because the autofill service returned a {@code null} + * FillResponse) or {@link #STATE_UNKNOWN} (because the session was removed). + */ + private void setSessionFinished(int newState) { + synchronized (mLock) { + if (sVerbose) Log.v(TAG, "setSessionFinished(): from " + mState + " to " + newState); + resetSessionLocked(); + mState = newState; + } + } + private void requestHideFillUi(AutofillId id) { final View anchor = findView(id); if (sVerbose) Log.v(TAG, "requestHideFillUi(" + id + "): anchor = " + anchor); @@ -1250,7 +1407,11 @@ public final class AutofillManager { } } - private void notifyNoFillUi(int sessionId, AutofillId id) { + private void notifyNoFillUi(int sessionId, AutofillId id, boolean sessionFinished) { + if (sVerbose) { + Log.v(TAG, "notifyNoFillUi(): sessionId=" + sessionId + ", autofillId=" + id + + ", finished=" + sessionFinished); + } final View anchor = findView(id); if (anchor == null) { return; @@ -1270,7 +1431,11 @@ public final class AutofillManager { } else { callback.onAutofillEvent(anchor, AutofillCallback.EVENT_INPUT_UNAVAILABLE); } + } + if (sessionFinished) { + // Callback call was "hijacked" to also update the session state. + setSessionFinished(STATE_FINISHED); } } @@ -1325,6 +1490,64 @@ public final class AutofillManager { return mService != null; } + /** @hide */ + public void onPendingSaveUi(int operation, IBinder token) { + if (sVerbose) Log.v(TAG, "onPendingSaveUi(" + operation + "): " + token); + + synchronized (mLock) { + try { + mService.onPendingSaveUi(operation, token); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } + } + + /** @hide */ + public void dump(String outerPrefix, PrintWriter pw) { + pw.print(outerPrefix); pw.println("AutofillManager:"); + final String pfx = outerPrefix + " "; + pw.print(pfx); pw.print("sessionId: "); pw.println(mSessionId); + pw.print(pfx); pw.print("state: "); pw.println(getStateAsStringLocked()); + pw.print(pfx); pw.print("enabled: "); pw.println(mEnabled); + pw.print(pfx); pw.print("hasService: "); pw.println(mService != null); + pw.print(pfx); pw.print("hasCallback: "); pw.println(mCallback != null); + pw.print(pfx); pw.print("last autofilled data: "); pw.println(mLastAutofilledData); + pw.print(pfx); pw.print("tracked views: "); + if (mTrackedViews == null) { + pw.println("null"); + } else { + final String pfx2 = pfx + " "; + pw.println(); + pw.print(pfx2); pw.print("visible:"); pw.println(mTrackedViews.mVisibleTrackedIds); + pw.print(pfx2); pw.print("invisible:"); pw.println(mTrackedViews.mInvisibleTrackedIds); + } + pw.print(pfx); pw.print("fillable ids: "); pw.println(mFillableIds); + } + + private String getStateAsStringLocked() { + switch (mState) { + case STATE_UNKNOWN: + return "STATE_UNKNOWN"; + case STATE_ACTIVE: + return "STATE_ACTIVE"; + case STATE_FINISHED: + return "STATE_FINISHED"; + case STATE_SHOWING_SAVE_UI: + return "STATE_SHOWING_SAVE_UI"; + default: + return "INVALID:" + mState; + } + } + + private boolean isActiveLocked() { + return mState == STATE_ACTIVE; + } + + private boolean isFinishedLocked() { + return mState == STATE_FINISHED; + } + private void post(Runnable runnable) { final AutofillClient client = getClientLocked(); if (client == null) { @@ -1446,15 +1669,14 @@ public final class AutofillManager { /** * Called when a {@link View view's} visibility changes. * - * @param view {@link View} that was exited. + * @param id the id of the view/virtual view whose visibility changed. * @param isVisible visible if the view is visible in the view hierarchy. */ - void notifyViewVisibilityChange(@NonNull View view, boolean isVisible) { - AutofillId id = getAutofillId(view); + void notifyViewVisibilityChanged(@NonNull AutofillId id, boolean isVisible) { AutofillClient client = getClientLocked(); if (sDebug) { - Log.d(TAG, "notifyViewVisibilityChange(): id=" + id + " isVisible=" + Log.d(TAG, "notifyViewVisibilityChanged(): id=" + id + " isVisible=" + isVisible); } @@ -1657,20 +1879,20 @@ public final class AutofillManager { } @Override - public void notifyNoFillUi(int sessionId, AutofillId id) { + public void notifyNoFillUi(int sessionId, AutofillId id, boolean sessionFinished) { final AutofillManager afm = mAfm.get(); if (afm != null) { - afm.post(() -> afm.notifyNoFillUi(sessionId, id)); + afm.post(() -> afm.notifyNoFillUi(sessionId, id, sessionFinished)); } } @Override - public void startIntentSender(IntentSender intentSender) { + public void startIntentSender(IntentSender intentSender, Intent intent) { final AutofillManager afm = mAfm.get(); if (afm != null) { afm.post(() -> { try { - afm.mContext.startIntentSender(intentSender, null, 0, 0, 0); + afm.mContext.startIntentSender(intentSender, intent, 0, 0, 0); } catch (IntentSender.SendIntentException e) { Log.e(TAG, "startIntentSender() failed for intent:" + intentSender, e); } @@ -1688,5 +1910,21 @@ public final class AutofillManager { ); } } + + @Override + public void setSaveUiState(int sessionId, boolean shown) { + final AutofillManager afm = mAfm.get(); + if (afm != null) { + afm.post(() -> afm.setSaveUiState(sessionId, shown)); + } + } + + @Override + public void setSessionFinished(int newState) { + final AutofillManager afm = mAfm.get(); + if (afm != null) { + afm.post(() -> afm.setSessionFinished(newState)); + } + } } } diff --git a/core/java/android/view/autofill/AutofillPopupWindow.java b/core/java/android/view/autofill/AutofillPopupWindow.java index 5f476380b1c3e4f2488456a3cf9494158f3634b7..b4688bb1d48bb87c78733a4b9a677ea0b8901bdb 100644 --- a/core/java/android/view/autofill/AutofillPopupWindow.java +++ b/core/java/android/view/autofill/AutofillPopupWindow.java @@ -47,6 +47,19 @@ public class AutofillPopupWindow extends PopupWindow { private final WindowPresenter mWindowPresenter; private WindowManager.LayoutParams mWindowLayoutParams; + private final View.OnAttachStateChangeListener mOnAttachStateChangeListener = + new View.OnAttachStateChangeListener() { + @Override + public void onViewAttachedToWindow(View v) { + /* ignore - handled by the super class */ + } + + @Override + public void onViewDetachedFromWindow(View v) { + dismiss(); + } + }; + /** * Creates a popup window with a presenter owning the window and responsible for * showing/hiding/updating the backing window. This can be useful of the window is @@ -208,7 +221,21 @@ public class AutofillPopupWindow extends PopupWindow { p.packageName = anchor.getContext().getPackageName(); mWindowPresenter.show(p, getTransitionEpicenter(), isLayoutInsetDecor(), anchor.getLayoutDirection()); - return; + } + + @Override + protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { + super.attachToAnchor(anchor, xoff, yoff, gravity); + anchor.addOnAttachStateChangeListener(mOnAttachStateChangeListener); + } + + @Override + protected void detachFromAnchor() { + final View anchor = getAnchor(); + if (anchor != null) { + anchor.removeOnAttachStateChangeListener(mOnAttachStateChangeListener); + } + super.detachFromAnchor(); } @Override diff --git a/core/java/android/view/autofill/IAutoFillManager.aidl b/core/java/android/view/autofill/IAutoFillManager.aidl index 7f2c080b3f096297dfd1df61f0414f88729445fa..5e53896b7ab66e2fa2cec43ccac07867b8120a8a 100644 --- a/core/java/android/view/autofill/IAutoFillManager.aidl +++ b/core/java/android/view/autofill/IAutoFillManager.aidl @@ -50,4 +50,5 @@ interface IAutoFillManager { void disableOwnedAutofillServices(int userId); boolean isServiceSupported(int userId); boolean isServiceEnabled(int userId, String packageName); + void onPendingSaveUi(int operation, IBinder token); } diff --git a/core/java/android/view/autofill/IAutoFillManagerClient.aidl b/core/java/android/view/autofill/IAutoFillManagerClient.aidl index d18b1816e09e06797c6f9f48b83163070c052ec2..3dabcec8636a0f45d60991c39a8e2d9f03912821 100644 --- a/core/java/android/view/autofill/IAutoFillManagerClient.aidl +++ b/core/java/android/view/autofill/IAutoFillManagerClient.aidl @@ -67,12 +67,24 @@ oneway interface IAutoFillManagerClient { void requestHideFillUi(int sessionId, in AutofillId id); /** - * Notifies no fill UI will be shown. + * Notifies no fill UI will be shown, and also mark the state as finished if necessary. */ - void notifyNoFillUi(int sessionId, in AutofillId id); + void notifyNoFillUi(int sessionId, in AutofillId id, boolean sessionFinished); /** - * Starts the provided intent sender + * Starts the provided intent sender. */ - void startIntentSender(in IntentSender intentSender); + void startIntentSender(in IntentSender intentSender, in Intent intent); + + /** + * Sets the state of the Autofill Save UI for a given session. + */ + void setSaveUiState(int sessionId, boolean shown); + + /** + * Marks the state of the session as finished. + * @param newState STATE_FINISHED (because the autofill service returned a null + * FillResponse) or STATE_UNKNOWN (because the session was removed). + */ + void setSessionFinished(int newState); } diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index e2f7979c61d9180748fc2090385ed27ad8772c00..92d1de8e5a2478a06700c82271d9156081dc761a 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -97,7 +97,7 @@ import java.util.concurrent.TimeUnit; * that manages the interaction across all processes. *

  • An input method (IME) implements a particular * interaction model allowing the user to generate text. The system binds - * to the current input method that is use, causing it to be created and run, + * to the current input method that is in use, causing it to be created and run, * and tells it when to hide and show its UI. Only one IME is running at a time. *
  • Multiple client applications arbitrate with the input * method manager for input focus and control over the state of the IME. Only diff --git a/core/java/android/view/inputmethod/InputMethodSubtype.java b/core/java/android/view/inputmethod/InputMethodSubtype.java index 28c2d016f6db66ffdfcabd91ea2d1641cc7e95a6..a7d7a8d67f64679707fe18b028eb8d7452f6a239 100644 --- a/core/java/android/view/inputmethod/InputMethodSubtype.java +++ b/core/java/android/view/inputmethod/InputMethodSubtype.java @@ -84,6 +84,8 @@ public final class InputMethodSubtype implements Parcelable { private final String mSubtypeLanguageTag; private final String mSubtypeMode; private final String mSubtypeExtraValue; + private final Object mLock = new Object(); + private volatile Locale mCachedLocaleObj; private volatile HashMap mExtraValueHashMapCache; /** @@ -372,10 +374,20 @@ public final class InputMethodSubtype implements Parcelable { */ @Nullable public Locale getLocaleObject() { - if (!TextUtils.isEmpty(mSubtypeLanguageTag)) { - return Locale.forLanguageTag(mSubtypeLanguageTag); + if (mCachedLocaleObj != null) { + return mCachedLocaleObj; + } + synchronized (mLock) { + if (mCachedLocaleObj != null) { + return mCachedLocaleObj; + } + if (!TextUtils.isEmpty(mSubtypeLanguageTag)) { + mCachedLocaleObj = Locale.forLanguageTag(mSubtypeLanguageTag); + } else { + mCachedLocaleObj = InputMethodUtils.constructLocaleFromString(mSubtypeLocale); + } + return mCachedLocaleObj; } - return InputMethodUtils.constructLocaleFromString(mSubtypeLocale); } /** @@ -681,4 +693,4 @@ public final class InputMethodSubtype implements Parcelable { } return sortedList; } -} +} \ No newline at end of file diff --git a/core/java/android/view/textclassifier/LangId.java b/core/java/android/view/textclassifier/LangId.java deleted file mode 100644 index 23c7842780a93a9c215eff4fcb42d9c769a18148..0000000000000000000000000000000000000000 --- a/core/java/android/view/textclassifier/LangId.java +++ /dev/null @@ -1,69 +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.view.textclassifier; - -/** - * Java wrapper for LangId native library interface. - * This class is used to detect languages in text. - */ -final class LangId { - - static { - System.loadLibrary("textclassifier"); - } - - private final long mModelPtr; - - /** - * Creates a new instance of LangId predictor, using the provided model image. - */ - LangId(int fd) { - mModelPtr = nativeNew(fd); - } - - /** - * Detects the language for given text. - */ - public ClassificationResult[] findLanguages(String text) { - return nativeFindLanguages(mModelPtr, text); - } - - /** - * Frees up the allocated memory. - */ - public void close() { - nativeClose(mModelPtr); - } - - private static native long nativeNew(int fd); - - private static native ClassificationResult[] nativeFindLanguages( - long context, String text); - - private static native void nativeClose(long context); - - /** Classification result for findLanguage method. */ - static final class ClassificationResult { - final String mLanguage; - /** float range: 0 - 1 */ - final float mScore; - - ClassificationResult(String language, float score) { - mLanguage = language; - mScore = score; - } - } -} diff --git a/core/java/android/view/textclassifier/TextClassification.java b/core/java/android/view/textclassifier/TextClassification.java index b6dd0b9487399b55ddbe6fbad18bcc4b997a0c18..1849368f6ae9505b6872829f87867d44f0c3c9af 100644 --- a/core/java/android/view/textclassifier/TextClassification.java +++ b/core/java/android/view/textclassifier/TextClassification.java @@ -48,15 +48,17 @@ public final class TextClassification { @NonNull private final EntityConfidence mEntityConfidence; @NonNull private final List mEntities; private int mLogType; + @NonNull private final String mVersionInfo; private TextClassification( - @NonNull String text, - Drawable icon, - String label, - Intent intent, - OnClickListener onClickListener, + @Nullable String text, + @Nullable Drawable icon, + @Nullable String label, + @Nullable Intent intent, + @Nullable OnClickListener onClickListener, @NonNull EntityConfidence entityConfidence, - int logType) { + int logType, + @NonNull String versionInfo) { mText = text; mIcon = icon; mLabel = label; @@ -65,12 +67,13 @@ public final class TextClassification { mEntityConfidence = new EntityConfidence<>(entityConfidence); mEntities = mEntityConfidence.getEntities(); mLogType = logType; + mVersionInfo = versionInfo; } /** * Gets the classified text. */ - @NonNull + @Nullable public String getText() { return mText; } @@ -145,6 +148,15 @@ public final class TextClassification { return mLogType; } + /** + * Returns information about the classifier model used to generate this TextClassification. + * @hide + */ + @NonNull + public String getVersionInfo() { + return mVersionInfo; + } + @Override public String toString() { return String.format("TextClassification {" @@ -179,12 +191,13 @@ public final class TextClassification { @NonNull private final EntityConfidence mEntityConfidence = new EntityConfidence<>(); private int mLogType; + @NonNull private String mVersionInfo = ""; /** * Sets the classified text. */ - public Builder setText(@NonNull String text) { - mText = Preconditions.checkNotNull(text); + public Builder setText(@Nullable String text) { + mText = text; return this; } @@ -197,7 +210,7 @@ public final class TextClassification { */ public Builder setEntityType( @NonNull @EntityType String type, - @FloatRange(from = 0.0, to = 1.0)float confidenceScore) { + @FloatRange(from = 0.0, to = 1.0) float confidenceScore) { mEntityConfidence.setEntityType(type, confidenceScore); return this; } @@ -243,12 +256,22 @@ public final class TextClassification { return this; } + /** + * Sets information about the classifier model used to generate this TextClassification. + * @hide + */ + Builder setVersionInfo(@NonNull String versionInfo) { + mVersionInfo = Preconditions.checkNotNull(versionInfo); + return this; + } + /** * Builds and returns a {@link TextClassification} object. */ public TextClassification build() { return new TextClassification( - mText, mIcon, mLabel, mIntent, mOnClickListener, mEntityConfidence, mLogType); + mText, mIcon, mLabel, mIntent, mOnClickListener, mEntityConfidence, + mLogType, mVersionInfo); } } } diff --git a/core/java/android/view/textclassifier/TextClassificationManager.java b/core/java/android/view/textclassifier/TextClassificationManager.java index efc88e23fa67a5d9d13d8c3e05c6802b6f6b8016..d7b07761a65359b3822efbe9f38e775c1b1ec3dc 100644 --- a/core/java/android/view/textclassifier/TextClassificationManager.java +++ b/core/java/android/view/textclassifier/TextClassificationManager.java @@ -16,37 +16,22 @@ package android.view.textclassifier; -import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemService; import android.content.Context; -import android.os.ParcelFileDescriptor; -import android.util.Log; import com.android.internal.util.Preconditions; -import java.io.File; -import java.io.FileNotFoundException; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Locale; - /** * Interface to the text classification service. */ @SystemService(Context.TEXT_CLASSIFICATION_SERVICE) public final class TextClassificationManager { - private static final String LOG_TAG = "TextClassificationManager"; - private final Object mTextClassifierLock = new Object(); - private final Object mLangIdLock = new Object(); private final Context mContext; - private ParcelFileDescriptor mLangIdFd; private TextClassifier mTextClassifier; - private LangId mLangId; /** @hide */ public TextClassificationManager(Context context) { @@ -75,47 +60,4 @@ public final class TextClassificationManager { mTextClassifier = textClassifier; } } - - /** - * Returns information containing languages that were detected in the provided text. - * This is a blocking operation you should avoid calling it on the UI thread. - * - * @throws IllegalArgumentException if text is null - * @hide - */ - public List detectLanguages(@NonNull CharSequence text) { - Preconditions.checkArgument(text != null); - try { - if (text.length() > 0) { - final LangId.ClassificationResult[] results = - getLanguageDetector().findLanguages(text.toString()); - final TextLanguage.Builder tlBuilder = new TextLanguage.Builder(0, text.length()); - final int size = results.length; - for (int i = 0; i < size; i++) { - tlBuilder.setLanguage( - new Locale.Builder().setLanguageTag(results[i].mLanguage).build(), - results[i].mScore); - } - - return Collections.unmodifiableList(Arrays.asList(tlBuilder.build())); - } - } catch (Throwable t) { - // Avoid throwing from this method. Log the error. - Log.e(LOG_TAG, "Error detecting languages for text. Returning empty result.", t); - } - // Getting here means something went wrong. Return an empty result. - return Collections.emptyList(); - } - - private LangId getLanguageDetector() throws FileNotFoundException { - synchronized (mLangIdLock) { - if (mLangId == null) { - mLangIdFd = ParcelFileDescriptor.open( - new File("/etc/textclassifier/textclassifier.langid.model"), - ParcelFileDescriptor.MODE_READ_ONLY); - mLangId = new LangId(mLangIdFd.getFd()); - } - return mLangId; - } - } } diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java index ab1d034bb91689d9cefdee9088262d09de453818..c3601d9d32be3c8b362f5f7631515121a007818c 100644 --- a/core/java/android/view/textclassifier/TextClassifier.java +++ b/core/java/android/view/textclassifier/TextClassifier.java @@ -34,6 +34,11 @@ import java.lang.annotation.RetentionPolicy; */ public interface TextClassifier { + /** @hide */ + String DEFAULT_LOG_TAG = "TextClassifierImpl"; + + /** @hide */ + String TYPE_UNKNOWN = ""; // TODO: Make this public API. String TYPE_OTHER = "other"; String TYPE_EMAIL = "email"; String TYPE_PHONE = "phone"; @@ -43,7 +48,7 @@ public interface TextClassifier { /** @hide */ @Retention(RetentionPolicy.SOURCE) @StringDef({ - TYPE_OTHER, TYPE_EMAIL, TYPE_PHONE, TYPE_ADDRESS, TYPE_URL + TYPE_UNKNOWN, TYPE_OTHER, TYPE_EMAIL, TYPE_PHONE, TYPE_ADDRESS, TYPE_URL }) @interface EntityType {} @@ -147,4 +152,12 @@ public interface TextClassifier { */ @WorkerThread default void logEvent(String source, String event) {} + + /** + * Returns this TextClassifier's settings. + * @hide + */ + default TextClassifierConstants getSettings() { + return TextClassifierConstants.DEFAULT; + } } diff --git a/core/java/android/view/textclassifier/TextClassifierConstants.java b/core/java/android/view/textclassifier/TextClassifierConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..51e6168e9aa58ebeec7dd87cfefcb570745a50b9 --- /dev/null +++ b/core/java/android/view/textclassifier/TextClassifierConstants.java @@ -0,0 +1,90 @@ +/* + * 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.view.textclassifier; + +import android.annotation.Nullable; +import android.util.KeyValueListParser; +import android.util.Slog; + +/** + * TextClassifier specific settings. + * This is encoded as a key=value list, separated by commas. Ex: + * + *
    + * smart_selection_dark_launch              (boolean)
    + * smart_selection_enabled_for_edit_text    (boolean)
    + * 
    + * + *

    + * Type: string + * see also android.provider.Settings.Global.TEXT_CLASSIFIER_CONSTANTS + * + * Example of setting the values for testing. + * adb shell settings put global text_classifier_constants smart_selection_dark_launch=true,smart_selection_enabled_for_edit_text=true + * @hide + */ +public final class TextClassifierConstants { + + private static final String LOG_TAG = "TextClassifierConstants"; + + private static final String SMART_SELECTION_DARK_LAUNCH = + "smart_selection_dark_launch"; + private static final String SMART_SELECTION_ENABLED_FOR_EDIT_TEXT = + "smart_selection_enabled_for_edit_text"; + + private static final boolean SMART_SELECTION_DARK_LAUNCH_DEFAULT = false; + private static final boolean SMART_SELECTION_ENABLED_FOR_EDIT_TEXT_DEFAULT = true; + + /** Default settings. */ + static final TextClassifierConstants DEFAULT = new TextClassifierConstants(); + + private final boolean mDarkLaunch; + private final boolean mSuggestSelectionEnabledForEditableText; + + private TextClassifierConstants() { + mDarkLaunch = SMART_SELECTION_DARK_LAUNCH_DEFAULT; + mSuggestSelectionEnabledForEditableText = SMART_SELECTION_ENABLED_FOR_EDIT_TEXT_DEFAULT; + } + + private TextClassifierConstants(@Nullable String settings) { + final KeyValueListParser parser = new KeyValueListParser(','); + try { + parser.setString(settings); + } catch (IllegalArgumentException e) { + // Failed to parse the settings string, log this and move on with defaults. + Slog.e(LOG_TAG, "Bad TextClassifier settings: " + settings); + } + mDarkLaunch = parser.getBoolean( + SMART_SELECTION_DARK_LAUNCH, + SMART_SELECTION_DARK_LAUNCH_DEFAULT); + mSuggestSelectionEnabledForEditableText = parser.getBoolean( + SMART_SELECTION_ENABLED_FOR_EDIT_TEXT, + SMART_SELECTION_ENABLED_FOR_EDIT_TEXT_DEFAULT); + } + + static TextClassifierConstants loadFromString(String settings) { + return new TextClassifierConstants(settings); + } + + public boolean isDarkLaunch() { + return mDarkLaunch; + } + + public boolean isSuggestSelectionEnabledForEditableText() { + return mSuggestSelectionEnabledForEditableText; + } +} diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java index 290d811d01acd7498ee7512e14f7459162b2b758..2e41404dde0aabe9d6665c10dc87a1b2ab5a9759 100644 --- a/core/java/android/view/textclassifier/TextClassifierImpl.java +++ b/core/java/android/view/textclassifier/TextClassifierImpl.java @@ -24,11 +24,11 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; -import android.icu.text.BreakIterator; import android.net.Uri; import android.os.LocaleList; import android.os.ParcelFileDescriptor; import android.provider.Browser; +import android.provider.Settings; import android.text.Spannable; import android.text.TextUtils; import android.text.method.WordIterator; @@ -46,6 +46,7 @@ import com.android.internal.util.Preconditions; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.text.BreakIterator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -70,7 +71,7 @@ import java.util.regex.Pattern; */ final class TextClassifierImpl implements TextClassifier { - private static final String LOG_TAG = "TextClassifierImpl"; + private static final String LOG_TAG = DEFAULT_LOG_TAG; private static final String MODEL_DIR = "/etc/textclassifier/"; private static final String MODEL_FILE_REGEX = "textclassifier\\.smartselection\\.(.*)\\.model"; private static final String UPDATED_MODEL_FILE_PATH = @@ -86,8 +87,12 @@ final class TextClassifierImpl implements TextClassifier { @GuardedBy("mSmartSelectionLock") // Do not access outside this lock. private Locale mLocale; @GuardedBy("mSmartSelectionLock") // Do not access outside this lock. + private int mVersion; + @GuardedBy("mSmartSelectionLock") // Do not access outside this lock. private SmartSelection mSmartSelection; + private TextClassifierConstants mSettings; + TextClassifierImpl(Context context) { mContext = Preconditions.checkNotNull(context); } @@ -108,8 +113,7 @@ final class TextClassifierImpl implements TextClassifier { if (start <= end && start >= 0 && end <= string.length() && start <= selectionStartIndex && end >= selectionEndIndex) { - final TextSelection.Builder tsBuilder = new TextSelection.Builder(start, end) - .setLogSource(LOG_TAG); + final TextSelection.Builder tsBuilder = new TextSelection.Builder(start, end); final SmartSelection.ClassificationResult[] results = smartSelection.classifyText( string, start, end, @@ -118,7 +122,10 @@ final class TextClassifierImpl implements TextClassifier { for (int i = 0; i < size; i++) { tsBuilder.setEntityType(results[i].mCollection, results[i].mScore); } - return tsBuilder.build(); + return tsBuilder + .setLogSource(LOG_TAG) + .setVersionInfo(getVersionInfo()) + .build(); } else { // We can not trust the result. Log the issue and ignore the result. Log.d(LOG_TAG, "Got bad indices for input text. Ignoring result."); @@ -184,6 +191,15 @@ final class TextClassifierImpl implements TextClassifier { } } + @Override + public TextClassifierConstants getSettings() { + if (mSettings == null) { + mSettings = TextClassifierConstants.loadFromString(Settings.Global.getString( + mContext.getContentResolver(), Settings.Global.TEXT_CLASSIFIER_CONSTANTS)); + } + return mSettings; + } + private SmartSelection getSmartSelection(LocaleList localeList) throws FileNotFoundException { synchronized (mSmartSelectionLock) { localeList = localeList == null ? LocaleList.getEmptyLocaleList() : localeList; @@ -202,6 +218,16 @@ final class TextClassifierImpl implements TextClassifier { } } + @NonNull + private String getVersionInfo() { + synchronized (mSmartSelectionLock) { + if (mLocale != null) { + return String.format("%s_v%d", mLocale.toLanguageTag(), mVersion); + } + return ""; + } + } + @GuardedBy("mSmartSelectionLock") // Do not call outside this lock. private ParcelFileDescriptor getFdLocked(Locale locale) throws FileNotFoundException { ParcelFileDescriptor updateFd; @@ -256,9 +282,11 @@ final class TextClassifierImpl implements TextClassifier { final int factoryVersion = SmartSelection.getVersion(factoryFd.getFd()); if (updateVersion > factoryVersion) { closeAndLogError(factoryFd); + mVersion = updateVersion; return updateFd; } else { closeAndLogError(updateFd); + mVersion = factoryVersion; return factoryFd; } } @@ -374,7 +402,7 @@ final class TextClassifierImpl implements TextClassifier { builder.setLabel(label != null ? label.toString() : null); } } - return builder.build(); + return builder.setVersionInfo(getVersionInfo()).build(); } private static int getHintFlags(CharSequence text, int start, int end) { diff --git a/core/java/android/view/textclassifier/TextLanguage.java b/core/java/android/view/textclassifier/TextLanguage.java deleted file mode 100644 index 209813a2beac63a105c6ef5471af24ea03e7646a..0000000000000000000000000000000000000000 --- a/core/java/android/view/textclassifier/TextLanguage.java +++ /dev/null @@ -1,140 +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.view.textclassifier; - -import android.annotation.FloatRange; -import android.annotation.IntRange; -import android.annotation.NonNull; -import android.annotation.Nullable; - -import com.android.internal.util.Preconditions; - -import java.util.List; -import java.util.Locale; - -/** - * Specifies detected languages for a section of text indicated by a start and end index. - * @hide - */ -public final class TextLanguage { - - private final int mStartIndex; - private final int mEndIndex; - @NonNull private final EntityConfidence mLanguageConfidence; - @NonNull private final List mLanguages; - - private TextLanguage( - int startIndex, int endIndex, @NonNull EntityConfidence languageConfidence) { - mStartIndex = startIndex; - mEndIndex = endIndex; - mLanguageConfidence = new EntityConfidence<>(languageConfidence); - mLanguages = mLanguageConfidence.getEntities(); - } - - /** - * Returns the start index of the detected languages in the text provided to generate this - * object. - */ - public int getStartIndex() { - return mStartIndex; - } - - /** - * Returns the end index of the detected languages in the text provided to generate this object. - */ - public int getEndIndex() { - return mEndIndex; - } - - /** - * Returns the number of languages found in the classified text. - */ - @IntRange(from = 0) - public int getLanguageCount() { - return mLanguages.size(); - } - - /** - * Returns the language locale at the specified index. - * Language locales are ordered from high confidence to low confidence. - * - * @throws IndexOutOfBoundsException if the specified index is out of range. - * @see #getLanguageCount() for the number of language locales available. - */ - @NonNull - public Locale getLanguage(int index) { - return mLanguages.get(index); - } - - /** - * Returns the confidence score for the specified language. The value ranges from - * 0 (low confidence) to 1 (high confidence). 0 indicates that the language was - * not found for the classified text. - */ - @FloatRange(from = 0.0, to = 1.0) - public float getConfidenceScore(@Nullable Locale language) { - return mLanguageConfidence.getConfidenceScore(language); - } - - @Override - public String toString() { - return String.format("TextLanguage {%d, %d, %s}", - mStartIndex, mEndIndex, mLanguageConfidence); - } - - /** - * Builder to build {@link TextLanguage} objects. - */ - public static final class Builder { - - private final int mStartIndex; - private final int mEndIndex; - @NonNull private final EntityConfidence mLanguageConfidence = - new EntityConfidence<>(); - - /** - * Creates a builder to build {@link TextLanguage} objects. - * - * @param startIndex the start index of the detected languages in the text provided - * to generate the result - * @param endIndex the end index of the detected languages in the text provided - * to generate the result. Must be greater than startIndex - */ - public Builder(@IntRange(from = 0) int startIndex, @IntRange(from = 0) int endIndex) { - Preconditions.checkArgument(startIndex >= 0); - Preconditions.checkArgument(endIndex > startIndex); - mStartIndex = startIndex; - mEndIndex = endIndex; - } - - /** - * Sets a language locale with the associated confidence score. - */ - public Builder setLanguage( - @NonNull Locale locale, @FloatRange(from = 0.0, to = 1.0) float confidenceScore) { - mLanguageConfidence.setEntityType(locale, confidenceScore); - return this; - } - - /** - * Builds and returns a {@link TextLanguage}. - */ - public TextLanguage build() { - return new TextLanguage(mStartIndex, mEndIndex, mLanguageConfidence); - } - } -} diff --git a/core/java/android/view/textclassifier/TextSelection.java b/core/java/android/view/textclassifier/TextSelection.java index 9a66693a93fa5ba05e9ca9eb0d76e30cccdf1939..11ebe8359b9c9ee8ff7a4d0d2784e4fce0cb08e3 100644 --- a/core/java/android/view/textclassifier/TextSelection.java +++ b/core/java/android/view/textclassifier/TextSelection.java @@ -35,15 +35,17 @@ public final class TextSelection { @NonNull private final EntityConfidence mEntityConfidence; @NonNull private final List mEntities; @NonNull private final String mLogSource; + @NonNull private final String mVersionInfo; private TextSelection( int startIndex, int endIndex, @NonNull EntityConfidence entityConfidence, - @NonNull String logSource) { + @NonNull String logSource, @NonNull String versionInfo) { mStartIndex = startIndex; mEndIndex = endIndex; mEntityConfidence = new EntityConfidence<>(entityConfidence); mEntities = mEntityConfidence.getEntities(); mLogSource = logSource; + mVersionInfo = versionInfo; } /** @@ -94,10 +96,20 @@ public final class TextSelection { * Returns a tag for the source classifier used to generate this result. * @hide */ + @NonNull public String getSourceClassifier() { return mLogSource; } + /** + * Returns information about the classifier model used to generate this TextSelection. + * @hide + */ + @NonNull + public String getVersionInfo() { + return mVersionInfo; + } + @Override public String toString() { return String.format("TextSelection {%d, %d, %s}", @@ -114,6 +126,7 @@ public final class TextSelection { @NonNull private final EntityConfidence mEntityConfidence = new EntityConfidence<>(); @NonNull private String mLogSource = ""; + @NonNull private String mVersionInfo = ""; /** * Creates a builder used to build {@link TextSelection} objects. @@ -151,11 +164,21 @@ public final class TextSelection { return this; } + /** + * Sets information about the classifier model used to generate this TextSelection. + * @hide + */ + Builder setVersionInfo(@NonNull String versionInfo) { + mVersionInfo = Preconditions.checkNotNull(versionInfo); + return this; + } + /** * Builds and returns {@link TextSelection} object. */ public TextSelection build() { - return new TextSelection(mStartIndex, mEndIndex, mEntityConfidence, mLogSource); + return new TextSelection( + mStartIndex, mEndIndex, mEntityConfidence, mLogSource, mVersionInfo); } } } diff --git a/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java b/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java new file mode 100644 index 0000000000000000000000000000000000000000..fb870bd3b9bd5a2836458106287c6b3086a3afd6 --- /dev/null +++ b/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java @@ -0,0 +1,592 @@ +/* + * 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.view.textclassifier.logging; + +import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.Context; +import android.metrics.LogMaker; +import android.util.Log; +import android.view.textclassifier.TextClassification; +import android.view.textclassifier.TextClassifier; +import android.view.textclassifier.TextSelection; + +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.internal.util.Preconditions; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.Objects; +import java.util.UUID; + +/** + * A selection event tracker. + * @hide + */ +//TODO: Do not allow any crashes from this class. +public final class SmartSelectionEventTracker { + + private static final String LOG_TAG = "SmartSelectEventTracker"; + private static final boolean DEBUG_LOG_ENABLED = false; + + private static final int START_EVENT_DELTA = MetricsEvent.FIELD_SELECTION_SINCE_START; + private static final int PREV_EVENT_DELTA = MetricsEvent.FIELD_SELECTION_SINCE_PREVIOUS; + private static final int INDEX = MetricsEvent.FIELD_SELECTION_SESSION_INDEX; + private static final int VERSION_TAG = MetricsEvent.FIELD_SELECTION_VERSION_TAG; + private static final int SMART_INDICES = MetricsEvent.FIELD_SELECTION_SMART_RANGE; + private static final int EVENT_INDICES = MetricsEvent.FIELD_SELECTION_RANGE; + private static final int SESSION_ID = MetricsEvent.FIELD_SELECTION_SESSION_ID; + + private static final String ZERO = "0"; + private static final String TEXTVIEW = "textview"; + private static final String EDITTEXT = "edittext"; + private static final String WEBVIEW = "webview"; + private static final String EDIT_WEBVIEW = "edit-webview"; + private static final String UNKNOWN = "unknown"; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({WidgetType.UNSPECIFIED, WidgetType.TEXTVIEW, WidgetType.WEBVIEW, + WidgetType.EDITTEXT, WidgetType.EDIT_WEBVIEW}) + public @interface WidgetType { + int UNSPECIFIED = 0; + int TEXTVIEW = 1; + int WEBVIEW = 2; + int EDITTEXT = 3; + int EDIT_WEBVIEW = 4; + } + + private final MetricsLogger mMetricsLogger = new MetricsLogger(); + private final int mWidgetType; + private final Context mContext; + + @Nullable private String mSessionId; + private final int[] mSmartIndices = new int[2]; + private final int[] mPrevIndices = new int[2]; + private int mOrigStart; + private int mIndex; + private long mSessionStartTime; + private long mLastEventTime; + private boolean mSmartSelectionTriggered; + private String mVersionTag; + + public SmartSelectionEventTracker(@NonNull Context context, @WidgetType int widgetType) { + mWidgetType = widgetType; + mContext = Preconditions.checkNotNull(context); + } + + /** + * Logs a selection event. + * + * @param event the selection event + */ + public void logEvent(@NonNull SelectionEvent event) { + Preconditions.checkNotNull(event); + + if (event.mEventType != SelectionEvent.EventType.SELECTION_STARTED && mSessionId == null + && DEBUG_LOG_ENABLED) { + Log.d(LOG_TAG, "Selection session not yet started. Ignoring event"); + return; + } + + final long now = System.currentTimeMillis(); + switch (event.mEventType) { + case SelectionEvent.EventType.SELECTION_STARTED: + mSessionId = startNewSession(); + Preconditions.checkArgument(event.mEnd == event.mStart + 1); + mOrigStart = event.mStart; + mSessionStartTime = now; + break; + case SelectionEvent.EventType.SMART_SELECTION_SINGLE: // fall through + case SelectionEvent.EventType.SMART_SELECTION_MULTI: + mSmartSelectionTriggered = true; + mVersionTag = getVersionTag(event); + mSmartIndices[0] = event.mStart; + mSmartIndices[1] = event.mEnd; + break; + case SelectionEvent.EventType.SELECTION_MODIFIED: // fall through + case SelectionEvent.EventType.AUTO_SELECTION: + if (mPrevIndices[0] == event.mStart && mPrevIndices[1] == event.mEnd) { + // Selection did not change. Ignore event. + return; + } + } + writeEvent(event, now); + + if (event.isTerminal()) { + endSession(); + } + } + + private void writeEvent(SelectionEvent event, long now) { + final long prevEventDelta = mLastEventTime == 0 ? 0 : now - mLastEventTime; + final LogMaker log = new LogMaker(MetricsEvent.TEXT_SELECTION_SESSION) + .setType(getLogType(event)) + .setSubtype(getLogSubType(event)) + .setPackageName(mContext.getPackageName()) + .setTimestamp(now) + .addTaggedData(START_EVENT_DELTA, now - mSessionStartTime) + .addTaggedData(PREV_EVENT_DELTA, prevEventDelta) + .addTaggedData(INDEX, mIndex) + .addTaggedData(VERSION_TAG, mVersionTag) + .addTaggedData(SMART_INDICES, getSmartDelta()) + .addTaggedData(EVENT_INDICES, getEventDelta(event)) + .addTaggedData(SESSION_ID, mSessionId); + mMetricsLogger.write(log); + debugLog(log); + mLastEventTime = now; + mPrevIndices[0] = event.mStart; + mPrevIndices[1] = event.mEnd; + mIndex++; + } + + private String startNewSession() { + endSession(); + mSessionId = createSessionId(); + return mSessionId; + } + + private void endSession() { + // Reset fields. + mOrigStart = 0; + mSmartIndices[0] = mSmartIndices[1] = 0; + mPrevIndices[0] = mPrevIndices[1] = 0; + mIndex = 0; + mSessionStartTime = 0; + mLastEventTime = 0; + mSmartSelectionTriggered = false; + mVersionTag = getVersionTag(null); + mSessionId = null; + } + + private static int getLogType(SelectionEvent event) { + switch (event.mEventType) { + case SelectionEvent.ActionType.OVERTYPE: + return MetricsEvent.ACTION_TEXT_SELECTION_OVERTYPE; + case SelectionEvent.ActionType.COPY: + return MetricsEvent.ACTION_TEXT_SELECTION_COPY; + case SelectionEvent.ActionType.PASTE: + return MetricsEvent.ACTION_TEXT_SELECTION_PASTE; + case SelectionEvent.ActionType.CUT: + return MetricsEvent.ACTION_TEXT_SELECTION_CUT; + case SelectionEvent.ActionType.SHARE: + return MetricsEvent.ACTION_TEXT_SELECTION_SHARE; + case SelectionEvent.ActionType.SMART_SHARE: + return MetricsEvent.ACTION_TEXT_SELECTION_SMART_SHARE; + case SelectionEvent.ActionType.DRAG: + return MetricsEvent.ACTION_TEXT_SELECTION_DRAG; + case SelectionEvent.ActionType.ABANDON: + return MetricsEvent.ACTION_TEXT_SELECTION_ABANDON; + case SelectionEvent.ActionType.OTHER: + return MetricsEvent.ACTION_TEXT_SELECTION_OTHER; + case SelectionEvent.ActionType.SELECT_ALL: + return MetricsEvent.ACTION_TEXT_SELECTION_SELECT_ALL; + case SelectionEvent.ActionType.RESET: + return MetricsEvent.ACTION_TEXT_SELECTION_RESET; + case SelectionEvent.EventType.SELECTION_STARTED: + return MetricsEvent.ACTION_TEXT_SELECTION_START; + case SelectionEvent.EventType.SELECTION_MODIFIED: + return MetricsEvent.ACTION_TEXT_SELECTION_MODIFY; + case SelectionEvent.EventType.SMART_SELECTION_SINGLE: + return MetricsEvent.ACTION_TEXT_SELECTION_SMART_SINGLE; + case SelectionEvent.EventType.SMART_SELECTION_MULTI: + return MetricsEvent.ACTION_TEXT_SELECTION_SMART_MULTI; + case SelectionEvent.EventType.AUTO_SELECTION: + return MetricsEvent.ACTION_TEXT_SELECTION_AUTO; + default: + return MetricsEvent.VIEW_UNKNOWN; + } + } + + private static String getLogTypeString(int logType) { + switch (logType) { + case MetricsEvent.ACTION_TEXT_SELECTION_OVERTYPE: + return "OVERTYPE"; + case MetricsEvent.ACTION_TEXT_SELECTION_COPY: + return "COPY"; + case MetricsEvent.ACTION_TEXT_SELECTION_PASTE: + return "PASTE"; + case MetricsEvent.ACTION_TEXT_SELECTION_CUT: + return "CUT"; + case MetricsEvent.ACTION_TEXT_SELECTION_SHARE: + return "SHARE"; + case MetricsEvent.ACTION_TEXT_SELECTION_SMART_SHARE: + return "SMART_SHARE"; + case MetricsEvent.ACTION_TEXT_SELECTION_DRAG: + return "DRAG"; + case MetricsEvent.ACTION_TEXT_SELECTION_ABANDON: + return "ABANDON"; + case MetricsEvent.ACTION_TEXT_SELECTION_OTHER: + return "OTHER"; + case MetricsEvent.ACTION_TEXT_SELECTION_SELECT_ALL: + return "SELECT_ALL"; + case MetricsEvent.ACTION_TEXT_SELECTION_RESET: + return "RESET"; + case MetricsEvent.ACTION_TEXT_SELECTION_START: + return "SELECTION_STARTED"; + case MetricsEvent.ACTION_TEXT_SELECTION_MODIFY: + return "SELECTION_MODIFIED"; + case MetricsEvent.ACTION_TEXT_SELECTION_SMART_SINGLE: + return "SMART_SELECTION_SINGLE"; + case MetricsEvent.ACTION_TEXT_SELECTION_SMART_MULTI: + return "SMART_SELECTION_MULTI"; + case MetricsEvent.ACTION_TEXT_SELECTION_AUTO: + return "AUTO_SELECTION"; + default: + return UNKNOWN; + } + } + + private static int getLogSubType(SelectionEvent event) { + switch (event.mEntityType) { + case TextClassifier.TYPE_OTHER: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_OTHER; + case TextClassifier.TYPE_EMAIL: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_EMAIL; + case TextClassifier.TYPE_PHONE: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_PHONE; + case TextClassifier.TYPE_ADDRESS: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_ADDRESS; + case TextClassifier.TYPE_URL: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_URL; + default: + return MetricsEvent.TEXT_CLASSIFIER_TYPE_UNKNOWN; + } + } + + private static String getLogSubTypeString(int logSubType) { + switch (logSubType) { + case MetricsEvent.TEXT_CLASSIFIER_TYPE_OTHER: + return TextClassifier.TYPE_OTHER; + case MetricsEvent.TEXT_CLASSIFIER_TYPE_EMAIL: + return TextClassifier.TYPE_EMAIL; + case MetricsEvent.TEXT_CLASSIFIER_TYPE_PHONE: + return TextClassifier.TYPE_PHONE; + case MetricsEvent.TEXT_CLASSIFIER_TYPE_ADDRESS: + return TextClassifier.TYPE_ADDRESS; + case MetricsEvent.TEXT_CLASSIFIER_TYPE_URL: + return TextClassifier.TYPE_URL; + default: + return TextClassifier.TYPE_UNKNOWN; + } + } + + private int getSmartDelta() { + if (mSmartSelectionTriggered) { + return (clamp(mSmartIndices[0] - mOrigStart) << 16) + | (clamp(mSmartIndices[1] - mOrigStart) & 0xffff); + } + // If the smart selection model was not run, return invalid selection indices [0,0]. This + // allows us to tell from the terminal event alone whether the model was run. + return 0; + } + + private int getEventDelta(SelectionEvent event) { + return (clamp(event.mStart - mOrigStart) << 16) + | (clamp(event.mEnd - mOrigStart) & 0xffff); + } + + private String getVersionTag(@Nullable SelectionEvent event) { + final String widgetType; + switch (mWidgetType) { + case WidgetType.TEXTVIEW: + widgetType = TEXTVIEW; + break; + case WidgetType.WEBVIEW: + widgetType = WEBVIEW; + break; + case WidgetType.EDITTEXT: + widgetType = EDITTEXT; + break; + case WidgetType.EDIT_WEBVIEW: + widgetType = EDIT_WEBVIEW; + break; + default: + widgetType = UNKNOWN; + } + final String version = event == null + ? SelectionEvent.NO_VERSION_TAG + : Objects.toString(event.mVersionTag, SelectionEvent.NO_VERSION_TAG); + return String.format("%s/%s", widgetType, version); + } + + private static String createSessionId() { + return UUID.randomUUID().toString(); + } + + private static int clamp(int val) { + return Math.max(Math.min(val, Short.MAX_VALUE), Short.MIN_VALUE); + } + + private static void debugLog(LogMaker log) { + if (!DEBUG_LOG_ENABLED) return; + + final String tag = Objects.toString(log.getTaggedData(VERSION_TAG), "tag"); + final int index = Integer.parseInt(Objects.toString(log.getTaggedData(INDEX), ZERO)); + if (log.getType() == MetricsEvent.ACTION_TEXT_SELECTION_START) { + String sessionId = Objects.toString(log.getTaggedData(SESSION_ID), ""); + sessionId = sessionId.substring(sessionId.lastIndexOf("-") + 1); + Log.d(LOG_TAG, String.format("New selection session: %s(%s)", tag, sessionId)); + } + + final String type = getLogTypeString(log.getType()); + final String subType = getLogSubTypeString(log.getSubtype()); + + final int smartIndices = Integer.parseInt( + Objects.toString(log.getTaggedData(SMART_INDICES), ZERO)); + final int smartStart = (short) ((smartIndices & 0xffff0000) >> 16); + final int smartEnd = (short) (smartIndices & 0xffff); + + final int eventIndices = Integer.parseInt( + Objects.toString(log.getTaggedData(EVENT_INDICES), ZERO)); + final int eventStart = (short) ((eventIndices & 0xffff0000) >> 16); + final int eventEnd = (short) (eventIndices & 0xffff); + + Log.d(LOG_TAG, String.format("%2d: %s/%s, context=%d,%d - old=%d,%d (%s)", + index, type, subType, eventStart, eventEnd, smartStart, smartEnd, tag)); + } + + /** + * A selection event. + * Specify index parameters as word token indices. + */ + public static final class SelectionEvent { + + /** + * Use this to specify an indeterminate positive index. + */ + public static final int OUT_OF_BOUNDS = Short.MAX_VALUE; + + /** + * Use this to specify an indeterminate negative index. + */ + public static final int OUT_OF_BOUNDS_NEGATIVE = Short.MIN_VALUE; + + private static final String NO_VERSION_TAG = ""; + + @Retention(RetentionPolicy.SOURCE) + @IntDef({ActionType.OVERTYPE, ActionType.COPY, ActionType.PASTE, ActionType.CUT, + ActionType.SHARE, ActionType.SMART_SHARE, ActionType.DRAG, ActionType.ABANDON, + ActionType.OTHER, ActionType.SELECT_ALL, ActionType.RESET}) + public @interface ActionType { + /** User typed over the selection. */ + int OVERTYPE = 100; + /** User copied the selection. */ + int COPY = 101; + /** User pasted over the selection. */ + int PASTE = 102; + /** User cut the selection. */ + int CUT = 103; + /** User shared the selection. */ + int SHARE = 104; + /** User clicked the textAssist menu item. */ + int SMART_SHARE = 105; + /** User dragged+dropped the selection. */ + int DRAG = 106; + /** User abandoned the selection. */ + int ABANDON = 107; + /** User performed an action on the selection. */ + int OTHER = 108; + + /* Non-terminal actions. */ + /** User activated Select All */ + int SELECT_ALL = 200; + /** User reset the smart selection. */ + int RESET = 201; + } + + @Retention(RetentionPolicy.SOURCE) + @IntDef({ActionType.OVERTYPE, ActionType.COPY, ActionType.PASTE, ActionType.CUT, + ActionType.SHARE, ActionType.SMART_SHARE, ActionType.DRAG, ActionType.ABANDON, + ActionType.OTHER, ActionType.SELECT_ALL, ActionType.RESET, + EventType.SELECTION_STARTED, EventType.SELECTION_MODIFIED, + EventType.SMART_SELECTION_SINGLE, EventType.SMART_SELECTION_MULTI, + EventType.AUTO_SELECTION}) + private @interface EventType { + /** User started a new selection. */ + int SELECTION_STARTED = 1; + /** User modified an existing selection. */ + int SELECTION_MODIFIED = 2; + /** Smart selection triggered for a single token (word). */ + int SMART_SELECTION_SINGLE = 3; + /** Smart selection triggered spanning multiple tokens (words). */ + int SMART_SELECTION_MULTI = 4; + /** Something else other than User or the default TextClassifier triggered a selection. */ + int AUTO_SELECTION = 5; + } + + private final int mStart; + private final int mEnd; + private @EventType int mEventType; + private final @TextClassifier.EntityType String mEntityType; + private final String mVersionTag; + + private SelectionEvent( + int start, int end, int eventType, + @TextClassifier.EntityType String entityType, String versionTag) { + Preconditions.checkArgument(end >= start, "end cannot be less than start"); + mStart = start; + mEnd = end; + mEventType = eventType; + mEntityType = Preconditions.checkNotNull(entityType); + mVersionTag = Preconditions.checkNotNull(versionTag); + } + + /** + * Creates a "selection started" event. + * + * @param start the word index of the selected word + */ + public static SelectionEvent selectionStarted(int start) { + return new SelectionEvent( + start, start + 1, EventType.SELECTION_STARTED, + TextClassifier.TYPE_UNKNOWN, NO_VERSION_TAG); + } + + /** + * Creates a "selection modified" event. + * Use when the user modifies the selection. + * + * @param start the start word (inclusive) index of the selection + * @param end the end word (exclusive) index of the selection + */ + public static SelectionEvent selectionModified(int start, int end) { + return new SelectionEvent( + start, end, EventType.SELECTION_MODIFIED, + TextClassifier.TYPE_UNKNOWN, NO_VERSION_TAG); + } + + /** + * Creates a "selection modified" event. + * Use when the user modifies the selection and the selection's entity type is known. + * + * @param start the start word (inclusive) index of the selection + * @param end the end word (exclusive) index of the selection + * @param classification the TextClassification object returned by the TextClassifier that + * classified the selected text + */ + public static SelectionEvent selectionModified( + int start, int end, @NonNull TextClassification classification) { + final String entityType = classification.getEntityCount() > 0 + ? classification.getEntity(0) + : TextClassifier.TYPE_UNKNOWN; + final String versionTag = classification.getVersionInfo(); + return new SelectionEvent( + start, end, EventType.SELECTION_MODIFIED, entityType, versionTag); + } + + /** + * Creates a "selection modified" event. + * Use when a TextClassifier modifies the selection. + * + * @param start the start word (inclusive) index of the selection + * @param end the end word (exclusive) index of the selection + * @param selection the TextSelection object returned by the TextClassifier for the + * specified selection + */ + public static SelectionEvent selectionModified( + int start, int end, @NonNull TextSelection selection) { + final boolean smartSelection = selection.getSourceClassifier() + .equals(TextClassifier.DEFAULT_LOG_TAG); + final int eventType; + if (smartSelection) { + eventType = end - start > 1 + ? EventType.SMART_SELECTION_MULTI + : EventType.SMART_SELECTION_SINGLE; + + } else { + eventType = EventType.AUTO_SELECTION; + } + final String entityType = selection.getEntityCount() > 0 + ? selection.getEntity(0) + : TextClassifier.TYPE_UNKNOWN; + final String versionTag = selection.getVersionInfo(); + return new SelectionEvent(start, end, eventType, entityType, versionTag); + } + + /** + * Creates an event specifying an action taken on a selection. + * Use when the user clicks on an action to act on the selected text. + * + * @param start the start word (inclusive) index of the selection + * @param end the end word (exclusive) index of the selection + * @param actionType the action that was performed on the selection + */ + public static SelectionEvent selectionAction( + int start, int end, @ActionType int actionType) { + return new SelectionEvent( + start, end, actionType, TextClassifier.TYPE_UNKNOWN, NO_VERSION_TAG); + } + + /** + * Creates an event specifying an action taken on a selection. + * Use when the user clicks on an action to act on the selected text and the selection's + * entity type is known. + * + * @param start the start word (inclusive) index of the selection + * @param end the end word (exclusive) index of the selection + * @param actionType the action that was performed on the selection + * @param classification the TextClassification object returned by the TextClassifier that + * classified the selected text + */ + public static SelectionEvent selectionAction( + int start, int end, @ActionType int actionType, + @NonNull TextClassification classification) { + final String entityType = classification.getEntityCount() > 0 + ? classification.getEntity(0) + : TextClassifier.TYPE_UNKNOWN; + final String versionTag = classification.getVersionInfo(); + return new SelectionEvent(start, end, actionType, entityType, versionTag); + } + + private boolean isActionType() { + switch (mEventType) { + case ActionType.OVERTYPE: // fall through + case ActionType.COPY: // fall through + case ActionType.PASTE: // fall through + case ActionType.CUT: // fall through + case ActionType.SHARE: // fall through + case ActionType.SMART_SHARE: // fall through + case ActionType.DRAG: // fall through + case ActionType.ABANDON: // fall through + case ActionType.SELECT_ALL: // fall through + case ActionType.RESET: // fall through + return true; + default: + return false; + } + } + + private boolean isTerminal() { + switch (mEventType) { + case ActionType.OVERTYPE: // fall through + case ActionType.COPY: // fall through + case ActionType.PASTE: // fall through + case ActionType.CUT: // fall through + case ActionType.SHARE: // fall through + case ActionType.SMART_SHARE: // fall through + case ActionType.DRAG: // fall through + case ActionType.ABANDON: // fall through + case ActionType.OTHER: // fall through + return true; + default: + return false; + } + } + } +} diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java index d9bfade33539d6786637b463daf7858de2e4459f..f368c74a17b58cfbc0d60361c514d747c86eac42 100644 --- a/core/java/android/view/textservice/TextServicesManager.java +++ b/core/java/android/view/textservice/TextServicesManager.java @@ -210,20 +210,6 @@ public final class TextServicesManager { } } - /** - * @hide - */ - public void setCurrentSpellChecker(SpellCheckerInfo sci) { - try { - if (sci == null) { - throw new NullPointerException("SpellCheckerInfo is null."); - } - mService.setCurrentSpellChecker(null, sci.getId()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - /** * @hide */ @@ -237,34 +223,6 @@ public final class TextServicesManager { } } - /** - * @hide - */ - public void setSpellCheckerSubtype(SpellCheckerSubtype subtype) { - try { - final int hashCode; - if (subtype == null) { - hashCode = 0; - } else { - hashCode = subtype.hashCode(); - } - mService.setCurrentSpellCheckerSubtype(null, hashCode); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * @hide - */ - public void setSpellCheckerEnabled(boolean enabled) { - try { - mService.setSpellCheckerEnabled(enabled); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - /** * @hide */ diff --git a/core/java/android/webkit/SafeBrowsingResponse.java b/core/java/android/webkit/SafeBrowsingResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..0d0f1cce2dfc6dfd0c567896a6df3fc8550adfe4 --- /dev/null +++ b/core/java/android/webkit/SafeBrowsingResponse.java @@ -0,0 +1,52 @@ +/* + * 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.webkit; + +/** + * Used to indicate an action to take when hitting a malicious URL. Instances of this class are + * created by the WebView and passed to {@link android.webkit.WebViewClient#onSafeBrowsingHit}. The + * host application must call {@link #showInterstitial(boolean)}, {@link #proceed(boolean)}, or + * {@link #backToSafety(boolean)} to set the WebView's response to the Safe Browsing hit. + * + *

    + * If reporting is enabled, all reports will be sent according to the privacy policy referenced by + * {@link android.webkit.WebView#getSafeBrowsingPrivacyPolicyUrl()}. + *

    + */ +public abstract class SafeBrowsingResponse { + + /** + * Display the default interstitial. + * + * @param allowReporting True if the interstitial should show a reporting checkbox. + */ + public abstract void showInterstitial(boolean allowReporting); + + /** + * Act as if the user clicked "visit this unsafe site." + * + * @param report True to enable Safe Browsing reporting. + */ + public abstract void proceed(boolean report); + + /** + * Act as if the user clicked "back to safety." + * + * @param report True to enable Safe Browsing reporting. + */ + public abstract void backToSafety(boolean report); +} diff --git a/core/java/android/webkit/UserPackage.java b/core/java/android/webkit/UserPackage.java index 892008948e877abc54d96d94ddf2bbdf1e30c313..9da64559d0fe3530a736c8acb552b0b2985893dc 100644 --- a/core/java/android/webkit/UserPackage.java +++ b/core/java/android/webkit/UserPackage.java @@ -83,7 +83,7 @@ public class UserPackage { * supported by the current framework version. */ public static boolean hasCorrectTargetSdkVersion(PackageInfo packageInfo) { - return packageInfo.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.O; + return packageInfo.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.O_MR1; } public UserInfo getUserInfo() { diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java index 3a6de9609b3c8936af32420bb99d8a761a16f90e..82cff7c13e472f8c6d065c5008971f4f230dfce9 100644 --- a/core/java/android/webkit/WebSettings.java +++ b/core/java/android/webkit/WebSettings.java @@ -1390,17 +1390,15 @@ public abstract class WebSettings { * Sets whether Safe Browsing is enabled. Safe browsing allows WebView to * protect against malware and phishing attacks by verifying the links. * - * Safe browsing is disabled by default. The recommended way to enable - * Safe browsing is using a manifest tag to change the default value to - * enabled for all WebViews. *

    - *

    -     * <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
    -     *            android:value="true" />
    -     * 
    + * Safe browsing is disabled by default. The recommended way to enable Safe browsing is using a + * manifest tag to change the default value to enabled for all WebViews (read general Safe Browsing info). *

    * + *

    * This API overrides the manifest tag value for this WebView. + *

    * * @param enabled Whether Safe browsing is enabled. */ diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index a0b4a03562331bbcb281d18a7d8044b828d4a6fa..637b60e2dcb471f239fbb814e03cb24c77acd764 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -67,6 +67,7 @@ import java.io.BufferedWriter; import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.List; import java.util.Map; /** @@ -318,6 +319,22 @@ import java.util.Map; * out. *

    * + *

    Safe Browsing

    + * + *

    + * If Safe Browsing is enabled, WebView will block malicious URLs and present a warning UI to the + * user to allow them to navigate back safely or proceed to the malicious page. + *

    + *

    + * The recommended way for apps to enable the feature is putting the following tag in the manifest: + *

    + *

    + *

    + * <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
    + *            android:value="true" />
    + * 
    + *

    + * */ // Implementation notes. // The WebView is a thin API class that delegates its public API to a backend WebViewProvider @@ -330,16 +347,6 @@ public class WebView extends AbsoluteLayout implements ViewTreeObserver.OnGlobalFocusChangeListener, ViewGroup.OnHierarchyChangeListener, ViewDebug.HierarchyHandler { - /** - * Broadcast Action: Indicates the data reduction proxy setting changed. - * Sent by the settings app when user changes the data reduction proxy value. This intent will - * always stay as a hidden API. - * @hide - */ - @SystemApi - public static final String DATA_REDUCTION_PROXY_SETTING_CHANGED = - "android.webkit.DATA_REDUCTION_PROXY_SETTING_CHANGED"; - private static final String LOGTAG = "WebView"; // Throwing an exception for incorrect thread usage if the @@ -1621,22 +1628,60 @@ public class WebView extends AbsoluteLayout } /** - * Starts Safe Browsing initialization. This should only be called once. - * @param context is the activity context the WebView will be used in. - * @param callback will be called with the value true if initialization is - * successful. The callback will be run on the UI thread. - * @hide + * Starts Safe Browsing initialization. + *

    + * URL loads are not guaranteed to be protected by Safe Browsing until after {@code callback} is + * invoked with {@code true}. Safe Browsing is not fully supported on all devices. For those + * devices {@code callback} will receive {@code false}. + *

    + * This does not enable the Safe Browsing feature itself, and should only be called if Safe + * Browsing is enabled by the manifest tag or {@link WebSettings#setSafeBrowsingEnabled}. This + * prepares resources used for Safe Browsing. + *

    + * This should be called with the Application Context (and will always use the Application + * context to do its work regardless). + * + * @param context Application Context. + * @param callback will be called on the UI thread with {@code true} if initialization is + * successful, {@code false} otherwise. */ - public static void initSafeBrowsing(Context context, ValueCallback callback) { + public static void startSafeBrowsing(Context context, ValueCallback callback) { getFactory().getStatics().initSafeBrowsing(context, callback); } /** - * Shuts down Safe Browsing. This should only be called once. - * @hide + * Sets the list of domains that are exempt from SafeBrowsing checks. The list is + * global for all the WebViews. + *

    + * Each rule should take one of these: + * + * + * + * + * + * + *
    Rule Example Matches Subdomain
    HOSTNAME example.com Yes
    .HOSTNAME .example.com No
    IPV4_LITERAL 192.168.1.1 No
    IPV6_LITERAL_WITH_BRACKETS [10:20:30:40:50:60:70:80]No
    + *

    + * All other rules, including wildcards, are invalid. + * + * @param urls the list of URLs + * @param callback will be called with true if URLs are successfully added to the whitelist. + * It will be called with false if any URLs are malformed. The callback will be run on + * the UI thread */ - public static void shutdownSafeBrowsing() { - getFactory().getStatics().shutdownSafeBrowsing(); + public static void setSafeBrowsingWhitelist(@NonNull List urls, + @Nullable ValueCallback callback) { + getFactory().getStatics().setSafeBrowsingWhitelist(urls, callback); + } + + /** + * Returns a URL pointing to the privacy policy for Safe Browsing reporting. + * + * @return the url pointing to a privacy policy document which can be displayed to users. + */ + @NonNull + public static Uri getSafeBrowsingPrivacyPolicyUrl() { + return getFactory().getStatics().getSafeBrowsingPrivacyPolicyUrl(); } /** @@ -1880,13 +1925,14 @@ public class WebView extends AbsoluteLayout * For applications targeted to API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN} or below, * all public methods (including the inherited ones) can be accessed, see the * important security note below for implications. - *

    Note that injected objects will not - * appear in JavaScript until the page is next (re)loaded. For example: + *

    Note that injected objects will not appear in JavaScript until the page is next + * (re)loaded. JavaScript should be enabled before injecting the object. For example: *

          * class JsObject {
          *    {@literal @}JavascriptInterface
          *    public String toString() { return "injectedObject"; }
          * }
    +     * webview.getSettings().setJavaScriptEnabled(true);
          * webView.addJavascriptInterface(new JsObject(), "injectedObject");
          * webView.loadData("", "text/html", null);
          * webView.loadUrl("javascript:alert(injectedObject.toString())");
    @@ -2274,7 +2320,6 @@ public class WebView extends AbsoluteLayout /** * Sets the {@link TextClassifier} for this WebView. - * @hide */ public void setTextClassifier(@Nullable TextClassifier textClassifier) { mProvider.setTextClassifier(textClassifier); @@ -2283,7 +2328,6 @@ public class WebView extends AbsoluteLayout /** * Returns the {@link TextClassifier} used by this WebView. * If no TextClassifier has been set, this WebView uses the default set by the system. - * @hide */ @NonNull public TextClassifier getTextClassifier() { @@ -2679,25 +2723,20 @@ public class WebView extends AbsoluteLayout * {@code IFRAME}, in which case it would be treated the same way as multiple forms described * above, except that the {@link ViewStructure#setWebDomain(String) web domain} of the * {@code FORM} contains the {@code src} attribute from the {@code IFRAME} node. - *
  • If the Android SDK provides a similar View, then should be set with the - * fully-qualified class name of such view. *
  • The W3C autofill field ({@code autocomplete} tag attribute) maps to - * {@link ViewStructure#setAutofillHints(String[])}. - *
  • The {@code type} attribute of {@code INPUT} tags maps to - * {@link ViewStructure#setInputType(int)}. - *
  • The {@code value} attribute of {@code INPUT} tags maps to - * {@link ViewStructure#setText(CharSequence)}. - *
  • If the view is editalbe, the {@link ViewStructure#setAutofillType(int)} and + * {@link ViewStructure#setAutofillHints(String[])}. + *
  • If the view is editable, the {@link ViewStructure#setAutofillType(int)} and * {@link ViewStructure#setAutofillValue(AutofillValue)} must be set. *
  • The {@code placeholder} attribute maps to {@link ViewStructure#setHint(CharSequence)}. *
  • Other HTML attributes can be represented through * {@link ViewStructure#setHtmlInfo(android.view.ViewStructure.HtmlInfo)}. * * - *

    It should also call {@code structure.setDataIsSensitive(false)} for fields whose value - * were not dynamically changed (for example, through Javascript). + *

    If the WebView implementation can determine that the value of a field was set statically + * (for example, not through Javascript), it should also call + * {@code structure.setDataIsSensitive(false)}. * - *

    Example1: an HTML form with 2 fields for username and password. + *

    For example, an HTML form with 2 fields for username and password: * *

          *    <input type="text" name="username" id="user" value="Type your username" autocomplete="username" placeholder="Email or username">
    @@ -2710,51 +2749,27 @@ public class WebView extends AbsoluteLayout
          *     int index = structure.addChildCount(2);
          *     ViewStructure username = structure.newChild(index);
          *     username.setAutofillId(structure.getAutofillId(), 1); // id 1 - first child
    -     *     username.setClassName("input");
    -     *     username.setInputType("android.widget.EditText");
          *     username.setAutofillHints("username");
          *     username.setHtmlInfo(username.newHtmlInfoBuilder("input")
          *         .addAttribute("type", "text")
          *         .addAttribute("name", "username")
    -     *         .addAttribute("id", "user")
          *         .build());
          *     username.setHint("Email or username");
          *     username.setAutofillType(View.AUTOFILL_TYPE_TEXT);
          *     username.setAutofillValue(AutofillValue.forText("Type your username"));
    -     *     username.setText("Type your username");
    -     *     // Value of the field is not sensitive because it was not dynamically changed:
    +     *     // Value of the field is not sensitive because it was created statically and not changed.
          *     username.setDataIsSensitive(false);
          *
          *     ViewStructure password = structure.newChild(index + 1);
          *     username.setAutofillId(structure, 2); // id 2 - second child
    -     *     password.setInputType("android.widget.EditText");
    -     *     password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
          *     password.setAutofillHints("current-password");
          *     password.setHtmlInfo(password.newHtmlInfoBuilder("input")
          *         .addAttribute("type", "password")
          *         .addAttribute("name", "password")
    -     *         .addAttribute("id", "pass")
          *         .build());
          *     password.setHint("Password");
          *     password.setAutofillType(View.AUTOFILL_TYPE_TEXT);
          * 
    - * - *

    Example2: an IFRAME tag. - * - *

    -     *    <iframe src="https://example.com/login"/>
    -     * 
    - * - *

    Would map to: - * - *

    -     *     int index = structure.addChildCount(1);
    -     *     ViewStructure iframe = structure.newChildFor(index);
    -     *     iframe.setAutofillId(structure.getAutofillId(), 1);
    -     *     iframe.setHtmlInfo(iframe.newHtmlInfoBuilder("iframe")
    -     *         .addAttribute("src", "https://example.com/login")
    -     *         .build());
    -     * 
    */ @Override public void onProvideAutofillVirtualStructure(ViewStructure structure, int flags) { diff --git a/core/java/android/webkit/WebViewClient.java b/core/java/android/webkit/WebViewClient.java index 788908ad946877cbfa398435bf5969a1c64ccc12..cbe75c405fe489eebeed15e2e799f9821fc7db50 100644 --- a/core/java/android/webkit/WebViewClient.java +++ b/core/java/android/webkit/WebViewClient.java @@ -16,6 +16,7 @@ package android.webkit; +import android.annotation.IntDef; import android.graphics.Bitmap; import android.net.http.SslError; import android.os.Message; @@ -23,6 +24,9 @@ import android.view.InputEvent; import android.view.KeyEvent; import android.view.ViewRootImpl; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + public class WebViewClient { /** @@ -150,6 +154,10 @@ public class WebViewClient { * other than the UI thread so clients should exercise caution * when accessing private data or the view system. * + *

    Note: when Safe Browsing is enabled, these URLs still undergo Safe Browsing checks. If + * this is undesired, whitelist the URL with {@link WebView#setSafeBrowsingWhitelist} or ignore + * the warning with {@link #onSafeBrowsingHit}. + * * @param view The {@link android.webkit.WebView} that is requesting the * resource. * @param url The raw url of the resource. @@ -173,6 +181,10 @@ public class WebViewClient { * other than the UI thread so clients should exercise caution * when accessing private data or the view system. * + *

    Note: when Safe Browsing is enabled, these URLs still undergo Safe Browsing checks. If + * this is undesired, whitelist the URL with {@link WebView#setSafeBrowsingWhitelist} or ignore + * the warning with {@link #onSafeBrowsingHit}. + * * @param view The {@link android.webkit.WebView} that is requesting the * resource. * @param request Object containing the details of the request. @@ -237,6 +249,25 @@ public class WebViewClient { /** Resource load was cancelled by Safe Browsing */ public static final int ERROR_UNSAFE_RESOURCE = -16; + /** @hide */ + @IntDef({ + SAFE_BROWSING_THREAT_UNKNOWN, + SAFE_BROWSING_THREAT_MALWARE, + SAFE_BROWSING_THREAT_PHISHING, + SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SafeBrowsingThreat {} + + /** The resource was blocked for an unknown reason */ + public static final int SAFE_BROWSING_THREAT_UNKNOWN = 0; + /** The resource was blocked because it contains malware */ + public static final int SAFE_BROWSING_THREAT_MALWARE = 1; + /** The resource was blocked because it contains deceptive content */ + public static final int SAFE_BROWSING_THREAT_PHISHING = 2; + /** The resource was blocked because it contains unwanted software */ + public static final int SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE = 3; + /** * Report an error to the host application. These errors are unrecoverable * (i.e. the main resource is unavailable). The errorCode parameter @@ -496,4 +527,24 @@ public class WebViewClient { public boolean onRenderProcessGone(WebView view, RenderProcessGoneDetail detail) { return false; } + + /** + * Notify the host application that a loading URL has been flagged by Safe Browsing. + * + * The application must invoke the callback to indicate the preferred response. The default + * behavior is to show an interstitial to the user, with the reporting checkbox visible. + * + * If the application needs to show its own custom interstitial UI, the callback can be invoked + * asynchronously with backToSafety() or proceed(), depending on user response. + * + * @param view The WebView that hit the malicious resource. + * @param request Object containing the details of the request. + * @param threatType The reason the resource was caught by Safe Browsing, corresponding to a + * SAFE_BROWSING_THREAT_* value. + * @param callback Applications must invoke one of the callback methods. + */ + public void onSafeBrowsingHit(WebView view, WebResourceRequest request, + @SafeBrowsingThreat int threatType, SafeBrowsingResponse callback) { + callback.showInterstitial(/* allowReporting */ true); + } } diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 1b6b3923d1308147ca559f0329b932efe6963e8c..668cfba94071db8684348fe7a004bebf22c67a4e 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -18,7 +18,6 @@ package android.webkit; import android.annotation.SystemApi; import android.app.ActivityManager; -import android.app.ActivityManagerInternal; import android.app.AppGlobals; import android.app.Application; import android.content.Context; @@ -27,27 +26,15 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; import android.os.Build; -import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.StrictMode; -import android.os.SystemProperties; import android.os.Trace; -import android.text.TextUtils; import android.util.AndroidRuntimeException; import android.util.ArraySet; import android.util.Log; -import com.android.server.LocalServices; - -import dalvik.system.VMRuntime; - import java.lang.reflect.Method; -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; /** * Top level factory, used creating all the main WebView implementation classes. @@ -60,21 +47,15 @@ public final class WebViewFactory { // visible for WebViewZygoteInit to look up the class by reflection and call preloadInZygote. /** @hide */ private static final String CHROMIUM_WEBVIEW_FACTORY = - "com.android.webview.chromium.WebViewChromiumFactoryProviderForO"; + "com.android.webview.chromium.WebViewChromiumFactoryProviderForOMR1"; private static final String CHROMIUM_WEBVIEW_FACTORY_METHOD = "create"; private static final String NULL_WEBVIEW_FACTORY = "com.android.webview.nullwebview.NullWebViewFactoryProvider"; - private static final String CHROMIUM_WEBVIEW_NATIVE_RELRO_32 = - "/data/misc/shared_relro/libwebviewchromium32.relro"; - private static final String CHROMIUM_WEBVIEW_NATIVE_RELRO_64 = - "/data/misc/shared_relro/libwebviewchromium64.relro"; - public static final String CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY = "persist.sys.webview.vmsize"; - private static final long CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES = 100 * 1024 * 1024; private static final String LOGTAG = "WebViewFactory"; @@ -84,7 +65,6 @@ public final class WebViewFactory { // same provider. private static WebViewFactoryProvider sProviderInstance; private static final Object sProviderLock = new Object(); - private static boolean sAddressSpaceReserved = false; private static PackageInfo sPackageInfo; // Error codes for loadWebViewNativeLibraryFromPackage @@ -120,7 +100,7 @@ public final class WebViewFactory { return "Unknown"; } - private static class MissingWebViewPackageException extends Exception { + static class MissingWebViewPackageException extends Exception { public MissingWebViewPackageException(String message) { super(message); } public MissingWebViewPackageException(Exception e) { super(e); } } @@ -183,7 +163,7 @@ public final class WebViewFactory { } try { - int loadNativeRet = loadNativeLibrary(clazzLoader, packageInfo); + int loadNativeRet = WebViewLibraryLoader.loadNativeLibrary(clazzLoader, packageInfo); // If we failed waiting for relro we want to return that fact even if we successfully // load the relro file. if (loadNativeRet == LIBLOAD_SUCCESS) return response.status; @@ -414,7 +394,7 @@ public final class WebViewFactory { ClassLoader clazzLoader = webViewContext.getClassLoader(); Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "WebViewFactory.loadNativeLibrary()"); - loadNativeLibrary(clazzLoader, sPackageInfo); + WebViewLibraryLoader.loadNativeLibrary(clazzLoader, sPackageInfo); Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW); Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "Class.forName()"); @@ -450,20 +430,7 @@ public final class WebViewFactory { */ public static void prepareWebViewInZygote() { try { - System.loadLibrary("webviewchromium_loader"); - long addressSpaceToReserve = - SystemProperties.getLong(CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY, - CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES); - sAddressSpaceReserved = nativeReserveAddressSpace(addressSpaceToReserve); - - if (sAddressSpaceReserved) { - if (DEBUG) { - Log.v(LOGTAG, "address space reserved: " + addressSpaceToReserve + " bytes"); - } - } else { - Log.e(LOGTAG, "reserving " + addressSpaceToReserve + - " bytes of address space failed"); - } + WebViewLibraryLoader.reserveAddressSpaceInZygote(); } catch (Throwable t) { // Log and discard errors at this stage as we must not crash the zygote. Log.e(LOGTAG, "error preparing native loader", t); @@ -479,13 +446,13 @@ public final class WebViewFactory { // waiting on relro creation. if (Build.SUPPORTED_32_BIT_ABIS.length > 0) { if (DEBUG) Log.v(LOGTAG, "Create 32 bit relro"); - createRelroFile(false /* is64Bit */, nativeLibraryPaths); + WebViewLibraryLoader.createRelroFile(false /* is64Bit */, nativeLibraryPaths); numRelros++; } if (Build.SUPPORTED_64_BIT_ABIS.length > 0) { if (DEBUG) Log.v(LOGTAG, "Create 64 bit relro"); - createRelroFile(true /* is64Bit */, nativeLibraryPaths); + WebViewLibraryLoader.createRelroFile(true /* is64Bit */, nativeLibraryPaths); numRelros++; } return numRelros; @@ -501,49 +468,7 @@ public final class WebViewFactory { fixupStubApplicationInfo(packageInfo.applicationInfo, AppGlobals.getInitialApplication().getPackageManager()); - nativeLibs = WebViewFactory.getWebViewNativeLibraryPaths(packageInfo); - if (nativeLibs != null) { - long newVmSize = 0L; - - for (String path : nativeLibs) { - if (path == null || TextUtils.isEmpty(path)) continue; - if (DEBUG) Log.d(LOGTAG, "Checking file size of " + path); - File f = new File(path); - if (f.exists()) { - newVmSize = Math.max(newVmSize, f.length()); - continue; - } - if (path.contains("!/")) { - String[] split = TextUtils.split(path, "!/"); - if (split.length == 2) { - try (ZipFile z = new ZipFile(split[0])) { - ZipEntry e = z.getEntry(split[1]); - if (e != null && e.getMethod() == ZipEntry.STORED) { - newVmSize = Math.max(newVmSize, e.getSize()); - continue; - } - } - catch (IOException e) { - Log.e(LOGTAG, "error reading APK file " + split[0] + ", ", e); - } - } - } - Log.e(LOGTAG, "error sizing load for " + path); - } - - if (DEBUG) { - Log.v(LOGTAG, "Based on library size, need " + newVmSize + - " bytes of address space."); - } - // The required memory can be larger than the file on disk (due to .bss), and an - // upgraded version of the library will likely be larger, so always attempt to - // reserve twice as much as we think to allow for the library to grow during this - // boot cycle. - newVmSize = Math.max(2 * newVmSize, CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES); - Log.d(LOGTAG, "Setting new address space to " + newVmSize); - SystemProperties.set(CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY, - Long.toString(newVmSize)); - } + nativeLibs = WebViewLibraryLoader.updateWebViewZygoteVmSize(packageInfo); } catch (Throwable t) { // Log and discard errors at this stage as we must not crash the system server. Log.e(LOGTAG, "error preparing webview native library", t); @@ -554,173 +479,6 @@ public final class WebViewFactory { return prepareWebViewInSystemServer(nativeLibs); } - private static String getLoadFromApkPath(String apkPath, - String[] abiList, - String nativeLibFileName) - throws MissingWebViewPackageException { - // Search the APK for a native library conforming to a listed ABI. - try (ZipFile z = new ZipFile(apkPath)) { - for (String abi : abiList) { - final String entry = "lib/" + abi + "/" + nativeLibFileName; - ZipEntry e = z.getEntry(entry); - if (e != null && e.getMethod() == ZipEntry.STORED) { - // Return a path formatted for dlopen() load from APK. - return apkPath + "!/" + entry; - } - } - } catch (IOException e) { - throw new MissingWebViewPackageException(e); - } - return ""; - } - - private static String[] getWebViewNativeLibraryPaths(PackageInfo packageInfo) - throws MissingWebViewPackageException { - ApplicationInfo ai = packageInfo.applicationInfo; - final String NATIVE_LIB_FILE_NAME = getWebViewLibrary(ai); - - String path32; - String path64; - boolean primaryArchIs64bit = VMRuntime.is64BitAbi(ai.primaryCpuAbi); - if (!TextUtils.isEmpty(ai.secondaryCpuAbi)) { - // Multi-arch case. - if (primaryArchIs64bit) { - // Primary arch: 64-bit, secondary: 32-bit. - path64 = ai.nativeLibraryDir; - path32 = ai.secondaryNativeLibraryDir; - } else { - // Primary arch: 32-bit, secondary: 64-bit. - path64 = ai.secondaryNativeLibraryDir; - path32 = ai.nativeLibraryDir; - } - } else if (primaryArchIs64bit) { - // Single-arch 64-bit. - path64 = ai.nativeLibraryDir; - path32 = ""; - } else { - // Single-arch 32-bit. - path32 = ai.nativeLibraryDir; - path64 = ""; - } - - // Form the full paths to the extracted native libraries. - // If libraries were not extracted, try load from APK paths instead. - if (!TextUtils.isEmpty(path32)) { - path32 += "/" + NATIVE_LIB_FILE_NAME; - File f = new File(path32); - if (!f.exists()) { - path32 = getLoadFromApkPath(ai.sourceDir, - Build.SUPPORTED_32_BIT_ABIS, - NATIVE_LIB_FILE_NAME); - } - } - if (!TextUtils.isEmpty(path64)) { - path64 += "/" + NATIVE_LIB_FILE_NAME; - File f = new File(path64); - if (!f.exists()) { - path64 = getLoadFromApkPath(ai.sourceDir, - Build.SUPPORTED_64_BIT_ABIS, - NATIVE_LIB_FILE_NAME); - } - } - - if (DEBUG) Log.v(LOGTAG, "Native 32-bit lib: " + path32 + ", 64-bit lib: " + path64); - return new String[] { path32, path64 }; - } - - private static void createRelroFile(final boolean is64Bit, String[] nativeLibraryPaths) { - final String abi = - is64Bit ? Build.SUPPORTED_64_BIT_ABIS[0] : Build.SUPPORTED_32_BIT_ABIS[0]; - - // crashHandler is invoked by the ActivityManagerService when the isolated process crashes. - Runnable crashHandler = new Runnable() { - @Override - public void run() { - try { - Log.e(LOGTAG, "relro file creator for " + abi + " crashed. Proceeding without"); - getUpdateService().notifyRelroCreationCompleted(); - } catch (RemoteException e) { - Log.e(LOGTAG, "Cannot reach WebViewUpdateService. " + e.getMessage()); - } - } - }; - - try { - if (nativeLibraryPaths == null - || nativeLibraryPaths[0] == null || nativeLibraryPaths[1] == null) { - throw new IllegalArgumentException( - "Native library paths to the WebView RelRo process must not be null!"); - } - int pid = LocalServices.getService(ActivityManagerInternal.class).startIsolatedProcess( - RelroFileCreator.class.getName(), nativeLibraryPaths, "WebViewLoader-" + abi, abi, - Process.SHARED_RELRO_UID, crashHandler); - if (pid <= 0) throw new Exception("Failed to start the relro file creator process"); - } catch (Throwable t) { - // Log and discard errors as we must not crash the system server. - Log.e(LOGTAG, "error starting relro file creator for abi " + abi, t); - crashHandler.run(); - } - } - - private static class RelroFileCreator { - // Called in an unprivileged child process to create the relro file. - public static void main(String[] args) { - boolean result = false; - boolean is64Bit = VMRuntime.getRuntime().is64Bit(); - try{ - if (args.length != 2 || args[0] == null || args[1] == null) { - Log.e(LOGTAG, "Invalid RelroFileCreator args: " + Arrays.toString(args)); - return; - } - Log.v(LOGTAG, "RelroFileCreator (64bit = " + is64Bit + "), " + - " 32-bit lib: " + args[0] + ", 64-bit lib: " + args[1]); - if (!sAddressSpaceReserved) { - Log.e(LOGTAG, "can't create relro file; address space not reserved"); - return; - } - result = nativeCreateRelroFile(args[0] /* path32 */, - args[1] /* path64 */, - CHROMIUM_WEBVIEW_NATIVE_RELRO_32, - CHROMIUM_WEBVIEW_NATIVE_RELRO_64); - if (result && DEBUG) Log.v(LOGTAG, "created relro file"); - } finally { - // We must do our best to always notify the update service, even if something fails. - try { - getUpdateService().notifyRelroCreationCompleted(); - } catch (RemoteException e) { - Log.e(LOGTAG, "error notifying update service", e); - } - - if (!result) Log.e(LOGTAG, "failed to create relro file"); - - // Must explicitly exit or else this process will just sit around after we return. - System.exit(0); - } - } - } - - // Assumes that we have waited for relro creation - private static int loadNativeLibrary(ClassLoader clazzLoader, PackageInfo packageInfo) - throws MissingWebViewPackageException { - if (!sAddressSpaceReserved) { - Log.e(LOGTAG, "can't load with relro file; address space not reserved"); - return LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; - } - - String[] args = getWebViewNativeLibraryPaths(packageInfo); - int result = nativeLoadWithRelroFile(args[0] /* path32 */, - args[1] /* path64 */, - CHROMIUM_WEBVIEW_NATIVE_RELRO_32, - CHROMIUM_WEBVIEW_NATIVE_RELRO_64, - clazzLoader); - if (result != LIBLOAD_SUCCESS) { - Log.w(LOGTAG, "failed to load with relro file, proceeding without"); - } else if (DEBUG) { - Log.v(LOGTAG, "loaded with relro file"); - } - return result; - } - private static String WEBVIEW_UPDATE_SERVICE_NAME = "webviewupdate"; /** @hide */ @@ -728,11 +486,4 @@ public final class WebViewFactory { return IWebViewUpdateService.Stub.asInterface( ServiceManager.getService(WEBVIEW_UPDATE_SERVICE_NAME)); } - - private static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); - private static native boolean nativeCreateRelroFile(String lib32, String lib64, - String relro32, String relro64); - private static native int nativeLoadWithRelroFile(String lib32, String lib64, - String relro32, String relro64, - ClassLoader clazzLoader); } diff --git a/core/java/android/webkit/WebViewFactoryProvider.java b/core/java/android/webkit/WebViewFactoryProvider.java index 00fdac89d02850c3fb06f74ac54ef8fe38d67de0..4c47abc65a651c153c50ca6d672febcdfed77047 100644 --- a/core/java/android/webkit/WebViewFactoryProvider.java +++ b/core/java/android/webkit/WebViewFactoryProvider.java @@ -16,11 +16,14 @@ package android.webkit; +import android.annotation.NonNull; import android.annotation.SystemApi; import android.content.Context; import android.content.Intent; import android.net.Uri; +import java.util.List; + /** * This is the main entry-point into the WebView back end implementations, which the WebView * proxy class uses to instantiate all the other objects as needed. The backend must provide an @@ -77,19 +80,23 @@ public interface WebViewFactoryProvider { /** * Implement the API method - * {@link android.webkit.WebView#initSafeBrowsing(Context , ValueCallback)} - * @hide + * {@link android.webkit.WebView#startSafeBrowsing(Context , ValueCallback)} */ - default void initSafeBrowsing(Context context, ValueCallback callback) { - } + void initSafeBrowsing(Context context, ValueCallback callback); + + /** + * Implement the API method + * {@link android.webkit.WebView#setSafeBrowsingWhitelist(List, + * ValueCallback)} + */ + void setSafeBrowsingWhitelist(List urls, ValueCallback callback); /** * Implement the API method - * {@link android.webkit.WebView#shutdownSafeBrowsing()} - * @hide + * {@link android.webkit.WebView#getSafeBrowsingPrivacyPolicyUrl()} */ - default void shutdownSafeBrowsing() { - } + @NonNull + Uri getSafeBrowsingPrivacyPolicyUrl(); } Statics getStatics(); diff --git a/core/java/android/webkit/WebViewLibraryLoader.java b/core/java/android/webkit/WebViewLibraryLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..6f9e8ece4b13a550c821a8e5b17ade660ff07abb --- /dev/null +++ b/core/java/android/webkit/WebViewLibraryLoader.java @@ -0,0 +1,320 @@ +/* + * 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.webkit; + +import android.app.ActivityManagerInternal; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.os.Build; +import android.os.Process; +import android.os.RemoteException; +import android.os.SystemProperties; +import android.text.TextUtils; +import android.util.Log; + +import com.android.server.LocalServices; + +import dalvik.system.VMRuntime; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +class WebViewLibraryLoader { + private static final String LOGTAG = WebViewLibraryLoader.class.getSimpleName(); + + private static final String CHROMIUM_WEBVIEW_NATIVE_RELRO_32 = + "/data/misc/shared_relro/libwebviewchromium32.relro"; + private static final String CHROMIUM_WEBVIEW_NATIVE_RELRO_64 = + "/data/misc/shared_relro/libwebviewchromium64.relro"; + private static final long CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES = 100 * 1024 * 1024; + + private static final boolean DEBUG = false; + + private static boolean sAddressSpaceReserved = false; + + /** + * Private class for running the actual relro creation in an unprivileged child process. + * RelroFileCreator is a static class (without access to the outer class) to avoid accidentally + * using any static members from the outer class. Those members will in reality differ between + * the child process in which RelroFileCreator operates, and the app process in which the static + * members of this class are used. + */ + private static class RelroFileCreator { + // Called in an unprivileged child process to create the relro file. + public static void main(String[] args) { + boolean result = false; + boolean is64Bit = VMRuntime.getRuntime().is64Bit(); + try { + if (args.length != 2 || args[0] == null || args[1] == null) { + Log.e(LOGTAG, "Invalid RelroFileCreator args: " + Arrays.toString(args)); + return; + } + Log.v(LOGTAG, "RelroFileCreator (64bit = " + is64Bit + "), " + + " 32-bit lib: " + args[0] + ", 64-bit lib: " + args[1]); + if (!sAddressSpaceReserved) { + Log.e(LOGTAG, "can't create relro file; address space not reserved"); + return; + } + result = nativeCreateRelroFile(args[0] /* path32 */, + args[1] /* path64 */, + CHROMIUM_WEBVIEW_NATIVE_RELRO_32, + CHROMIUM_WEBVIEW_NATIVE_RELRO_64); + if (result && DEBUG) Log.v(LOGTAG, "created relro file"); + } finally { + // We must do our best to always notify the update service, even if something fails. + try { + WebViewFactory.getUpdateService().notifyRelroCreationCompleted(); + } catch (RemoteException e) { + Log.e(LOGTAG, "error notifying update service", e); + } + + if (!result) Log.e(LOGTAG, "failed to create relro file"); + + // Must explicitly exit or else this process will just sit around after we return. + System.exit(0); + } + } + } + + /** + * Create a single relro file by invoking an isolated process that to do the actual work. + */ + static void createRelroFile(final boolean is64Bit, String[] nativeLibraryPaths) { + final String abi = + is64Bit ? Build.SUPPORTED_64_BIT_ABIS[0] : Build.SUPPORTED_32_BIT_ABIS[0]; + + // crashHandler is invoked by the ActivityManagerService when the isolated process crashes. + Runnable crashHandler = new Runnable() { + @Override + public void run() { + try { + Log.e(LOGTAG, "relro file creator for " + abi + " crashed. Proceeding without"); + WebViewFactory.getUpdateService().notifyRelroCreationCompleted(); + } catch (RemoteException e) { + Log.e(LOGTAG, "Cannot reach WebViewUpdateService. " + e.getMessage()); + } + } + }; + + try { + if (nativeLibraryPaths == null + || nativeLibraryPaths[0] == null || nativeLibraryPaths[1] == null) { + throw new IllegalArgumentException( + "Native library paths to the WebView RelRo process must not be null!"); + } + int pid = LocalServices.getService(ActivityManagerInternal.class).startIsolatedProcess( + RelroFileCreator.class.getName(), nativeLibraryPaths, + "WebViewLoader-" + abi, abi, Process.SHARED_RELRO_UID, crashHandler); + if (pid <= 0) throw new Exception("Failed to start the relro file creator process"); + } catch (Throwable t) { + // Log and discard errors as we must not crash the system server. + Log.e(LOGTAG, "error starting relro file creator for abi " + abi, t); + crashHandler.run(); + } + } + + /** + * + * @return the native WebView libraries in the new WebView APK. + */ + static String[] updateWebViewZygoteVmSize(PackageInfo packageInfo) + throws WebViewFactory.MissingWebViewPackageException { + // Find the native libraries of the new WebView package, to change the size of the + // memory region in the Zygote reserved for the library. + String[] nativeLibs = getWebViewNativeLibraryPaths(packageInfo); + if (nativeLibs != null) { + long newVmSize = 0L; + + for (String path : nativeLibs) { + if (path == null || TextUtils.isEmpty(path)) continue; + if (DEBUG) Log.d(LOGTAG, "Checking file size of " + path); + File f = new File(path); + if (f.exists()) { + newVmSize = Math.max(newVmSize, f.length()); + continue; + } + if (path.contains("!/")) { + String[] split = TextUtils.split(path, "!/"); + if (split.length == 2) { + try (ZipFile z = new ZipFile(split[0])) { + ZipEntry e = z.getEntry(split[1]); + if (e != null && e.getMethod() == ZipEntry.STORED) { + newVmSize = Math.max(newVmSize, e.getSize()); + continue; + } + } + catch (IOException e) { + Log.e(LOGTAG, "error reading APK file " + split[0] + ", ", e); + } + } + } + Log.e(LOGTAG, "error sizing load for " + path); + } + + if (DEBUG) { + Log.v(LOGTAG, "Based on library size, need " + newVmSize + + " bytes of address space."); + } + // The required memory can be larger than the file on disk (due to .bss), and an + // upgraded version of the library will likely be larger, so always attempt to + // reserve twice as much as we think to allow for the library to grow during this + // boot cycle. + newVmSize = Math.max(2 * newVmSize, CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES); + Log.d(LOGTAG, "Setting new address space to " + newVmSize); + setWebViewZygoteVmSize(newVmSize); + } + return nativeLibs; + } + + /** + * Reserve space for the native library to be loaded into. + */ + static void reserveAddressSpaceInZygote() { + System.loadLibrary("webviewchromium_loader"); + long addressSpaceToReserve = + SystemProperties.getLong(WebViewFactory.CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY, + CHROMIUM_WEBVIEW_DEFAULT_VMSIZE_BYTES); + sAddressSpaceReserved = nativeReserveAddressSpace(addressSpaceToReserve); + + if (sAddressSpaceReserved) { + if (DEBUG) { + Log.v(LOGTAG, "address space reserved: " + addressSpaceToReserve + " bytes"); + } + } else { + Log.e(LOGTAG, "reserving " + addressSpaceToReserve + " bytes of address space failed"); + } + } + + /** + * Load WebView's native library into the current process. + * Note: assumes that we have waited for relro creation. + * @param clazzLoader class loader used to find the linker namespace to load the library into. + * @param packageInfo the package from which WebView is loaded. + */ + static int loadNativeLibrary(ClassLoader clazzLoader, PackageInfo packageInfo) + throws WebViewFactory.MissingWebViewPackageException { + if (!sAddressSpaceReserved) { + Log.e(LOGTAG, "can't load with relro file; address space not reserved"); + return WebViewFactory.LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; + } + + final String libraryFileName = + WebViewFactory.getWebViewLibrary(packageInfo.applicationInfo); + int result = nativeLoadWithRelroFile(libraryFileName, CHROMIUM_WEBVIEW_NATIVE_RELRO_32, + CHROMIUM_WEBVIEW_NATIVE_RELRO_64, clazzLoader); + if (result != WebViewFactory.LIBLOAD_SUCCESS) { + Log.w(LOGTAG, "failed to load with relro file, proceeding without"); + } else if (DEBUG) { + Log.v(LOGTAG, "loaded with relro file"); + } + return result; + } + + /** + * Fetch WebView's native library paths from {@param packageInfo}. + */ + static String[] getWebViewNativeLibraryPaths(PackageInfo packageInfo) + throws WebViewFactory.MissingWebViewPackageException { + ApplicationInfo ai = packageInfo.applicationInfo; + final String nativeLibFileName = WebViewFactory.getWebViewLibrary(ai); + + String path32; + String path64; + boolean primaryArchIs64bit = VMRuntime.is64BitAbi(ai.primaryCpuAbi); + if (!TextUtils.isEmpty(ai.secondaryCpuAbi)) { + // Multi-arch case. + if (primaryArchIs64bit) { + // Primary arch: 64-bit, secondary: 32-bit. + path64 = ai.nativeLibraryDir; + path32 = ai.secondaryNativeLibraryDir; + } else { + // Primary arch: 32-bit, secondary: 64-bit. + path64 = ai.secondaryNativeLibraryDir; + path32 = ai.nativeLibraryDir; + } + } else if (primaryArchIs64bit) { + // Single-arch 64-bit. + path64 = ai.nativeLibraryDir; + path32 = ""; + } else { + // Single-arch 32-bit. + path32 = ai.nativeLibraryDir; + path64 = ""; + } + + // Form the full paths to the extracted native libraries. + // If libraries were not extracted, try load from APK paths instead. + if (!TextUtils.isEmpty(path32)) { + path32 += "/" + nativeLibFileName; + File f = new File(path32); + if (!f.exists()) { + path32 = getLoadFromApkPath(ai.sourceDir, + Build.SUPPORTED_32_BIT_ABIS, + nativeLibFileName); + } + } + if (!TextUtils.isEmpty(path64)) { + path64 += "/" + nativeLibFileName; + File f = new File(path64); + if (!f.exists()) { + path64 = getLoadFromApkPath(ai.sourceDir, + Build.SUPPORTED_64_BIT_ABIS, + nativeLibFileName); + } + } + + if (DEBUG) Log.v(LOGTAG, "Native 32-bit lib: " + path32 + ", 64-bit lib: " + path64); + return new String[] { path32, path64 }; + } + + private static String getLoadFromApkPath(String apkPath, + String[] abiList, + String nativeLibFileName) + throws WebViewFactory.MissingWebViewPackageException { + // Search the APK for a native library conforming to a listed ABI. + try (ZipFile z = new ZipFile(apkPath)) { + for (String abi : abiList) { + final String entry = "lib/" + abi + "/" + nativeLibFileName; + ZipEntry e = z.getEntry(entry); + if (e != null && e.getMethod() == ZipEntry.STORED) { + // Return a path formatted for dlopen() load from APK. + return apkPath + "!/" + entry; + } + } + } catch (IOException e) { + throw new WebViewFactory.MissingWebViewPackageException(e); + } + return ""; + } + + /** + * Sets the size of the memory area in which to store the relro section. + */ + private static void setWebViewZygoteVmSize(long vmSize) { + SystemProperties.set(WebViewFactory.CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY, + Long.toString(vmSize)); + } + + static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); + static native boolean nativeCreateRelroFile(String lib32, String lib64, + String relro32, String relro64); + static native int nativeLoadWithRelroFile(String lib, String relro32, String relro64, + ClassLoader clazzLoader); +} diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 5476ab216f2f5709c79fe65c8b63e4d70d08b179..91e2f7d4ddd06f3a44d11c292267c4ee5b0460a0 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -913,14 +913,7 @@ public abstract class AbsListView extends AdapterView implements Te mCheckedIdStates = new LongSparseArray(); } } - - if (mCheckStates != null) { - mCheckStates.clear(); - } - - if (mCheckedIdStates != null) { - mCheckedIdStates.clear(); - } + clearChoices(); } /** diff --git a/core/java/android/widget/ArrayAdapter.java b/core/java/android/widget/ArrayAdapter.java index 74f22b35e0019cae808df15cd86722ed0f684f28..690067b4813302163c1692921bdbadd8dcb329c9 100644 --- a/core/java/android/widget/ArrayAdapter.java +++ b/core/java/android/widget/ArrayAdapter.java @@ -526,6 +526,13 @@ public class ArrayAdapter extends BaseAdapter implements Filterable, ThemedSp */ @Override public CharSequence[] getAutofillOptions() { + // First check if app developer explicitly set them. + final CharSequence[] explicitOptions = super.getAutofillOptions(); + if (explicitOptions != null) { + return explicitOptions; + } + + // Otherwise, only return options that came from static resources. if (!mObjectsFromResources || mObjects == null || mObjects.isEmpty()) { return null; } diff --git a/core/java/android/widget/BaseAdapter.java b/core/java/android/widget/BaseAdapter.java index c960342f7c652724fd97ea33cddec5ce91c0629c..5838cc15cf92d5179d133b94e4c87d1c258fdbdf 100644 --- a/core/java/android/widget/BaseAdapter.java +++ b/core/java/android/widget/BaseAdapter.java @@ -16,6 +16,7 @@ package android.widget; +import android.annotation.Nullable; import android.database.DataSetObservable; import android.database.DataSetObserver; import android.view.View; @@ -29,6 +30,7 @@ import android.view.ViewGroup; */ public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { private final DataSetObservable mDataSetObservable = new DataSetObservable(); + private CharSequence[] mAutofillOptions; public boolean hasStableIds() { return false; @@ -82,4 +84,16 @@ public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { public boolean isEmpty() { return getCount() == 0; } + + @Override + public CharSequence[] getAutofillOptions() { + return mAutofillOptions; + } + + /** + * Sets the value returned by {@link #getAutofillOptions()} + */ + public void setAutofillOptions(@Nullable CharSequence... options) { + mAutofillOptions = options; + } } diff --git a/core/java/android/widget/Button.java b/core/java/android/widget/Button.java index 452ff17ee3d9007de8b22bdbedae787b94e87fc3..634cbe323d862c974d81f007cabb5e880ab64fb0 100644 --- a/core/java/android/widget/Button.java +++ b/core/java/android/widget/Button.java @@ -18,6 +18,7 @@ package android.widget; import android.content.Context; import android.util.AttributeSet; +import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.PointerIcon; import android.widget.RemoteViews.RemoteView; @@ -54,7 +55,7 @@ import android.widget.RemoteViews.RemoteView; * } * } * - *

    The above snippet creates an instance of {@link View.OnClickListener} and wires + *

    The above snippet creates an instance of {@link android.view.View.OnClickListener} and wires * the listener to the button using * {@link #setOnClickListener setOnClickListener(View.OnClickListener)}. * As a result, the system executes the code you write in {@code onClick(View)} after the @@ -77,15 +78,8 @@ import android.widget.RemoteViews.RemoteView; * {@link android.R.styleable#Button Button Attributes}, * {@link android.R.styleable#TextView TextView Attributes}, * {@link android.R.styleable#View View Attributes}. See the - * {@link Styles and Themes + * Styles and Themes * guide to learn how to implement and organize overrides to style-related attributes.

    - * - * @see - * Buttons Guide - * {@link android.R.styleable#Button Styleable Button Attributes}, - * {@link android.R.styleable#TextView Styleable TextView Attributes}, - * {@link android.R.styleable#View Styleable View Attributes}, - * */ @RemoteView public class Button extends TextView { diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java index 8094bfc6eeb86a3fc0a700bd0d182700d837d4e4..dfb36423ea9495fa198bfef8032e6d80eb3c8a7a 100644 --- a/core/java/android/widget/DatePicker.java +++ b/core/java/android/widget/DatePicker.java @@ -524,12 +524,13 @@ public class DatePicker extends FrameLayout { void setAutoFillChangeListener(OnDateChangedListener onDateChangedListener); void updateDate(int year, int month, int dayOfMonth); - void updateDate(long date); int getYear(); int getMonth(); int getDayOfMonth(); - long getDate(); + + void autofill(AutofillValue value); + AutofillValue getAutofillValue(); void setFirstDayOfWeek(int firstDayOfWeek); int getFirstDayOfWeek(); @@ -572,6 +573,7 @@ public class DatePicker extends FrameLayout { // The context protected Context mContext; + // NOTE: when subclasses change this variable, they must call resetAutofilledValue(). protected Calendar mCurrentDate; // The current locale @@ -582,6 +584,11 @@ public class DatePicker extends FrameLayout { protected OnDateChangedListener mAutoFillChangeListener; protected ValidationCallback mValidationCallback; + // The value that was passed to autofill() - it must be stored because it getAutofillValue() + // must return the exact same value that was autofilled, otherwise the widget will not be + // properly highlighted after autofill(). + private long mAutofilledValue; + public AbstractDatePickerDelegate(DatePicker delegator, Context context) { mDelegator = delegator; mContext = context; @@ -612,16 +619,38 @@ public class DatePicker extends FrameLayout { } @Override - public void updateDate(long date) { - Calendar cal = Calendar.getInstance(mCurrentLocale); - cal.setTimeInMillis(date); + public final void autofill(AutofillValue value) { + if (value == null || !value.isDate()) { + Log.w(LOG_TAG, value + " could not be autofilled into " + this); + return; + } + + final long time = value.getDateValue(); + + final Calendar cal = Calendar.getInstance(mCurrentLocale); + cal.setTimeInMillis(time); updateDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); + + // Must set mAutofilledValue *after* calling subclass method to make sure the value + // returned by getAutofillValue() matches it. + mAutofilledValue = time; } @Override - public long getDate() { - return mCurrentDate.getTimeInMillis(); + public final AutofillValue getAutofillValue() { + final long time = mAutofilledValue != 0 + ? mAutofilledValue + : mCurrentDate.getTimeInMillis(); + return AutofillValue.forDate(time); + } + + /** + * This method must be called every time the value of the year, month, and/or day is + * changed by a subclass method. + */ + protected void resetAutofilledValue() { + mAutofilledValue = 0; } protected void onValidationChanged(boolean valid) { @@ -777,12 +806,7 @@ public class DatePicker extends FrameLayout { public void autofill(AutofillValue value) { if (!isEnabled()) return; - if (!value.isDate()) { - Log.w(LOG_TAG, value + " could not be autofilled into " + this); - return; - } - - mDelegate.updateDate(value.getDateValue()); + mDelegate.autofill(value); } @Override @@ -792,6 +816,6 @@ public class DatePicker extends FrameLayout { @Override public AutofillValue getAutofillValue() { - return isEnabled() ? AutofillValue.forDate(mDelegate.getDate()) : null; + return isEnabled() ? mDelegate.getAutofillValue() : null; } } diff --git a/core/java/android/widget/DatePickerCalendarDelegate.java b/core/java/android/widget/DatePickerCalendarDelegate.java index 636519b197e7e68938f65aaca52a1e60a7a33c29..e40023d0da1d086b37150dfa31df591b6acd1d86 100755 --- a/core/java/android/widget/DatePickerCalendarDelegate.java +++ b/core/java/android/widget/DatePickerCalendarDelegate.java @@ -22,11 +22,10 @@ import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; +import android.icu.text.DateFormat; import android.icu.text.DisplayContext; -import android.icu.text.SimpleDateFormat; import android.icu.util.Calendar; import android.os.Parcelable; -import android.text.format.DateFormat; import android.util.AttributeSet; import android.util.StateSet; import android.view.HapticFeedbackConstants; @@ -62,8 +61,8 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { private static final int[] ATTRS_DISABLED_ALPHA = new int[] { com.android.internal.R.attr.disabledAlpha}; - private SimpleDateFormat mYearFormat; - private SimpleDateFormat mMonthDayFormat; + private DateFormat mYearFormat; + private DateFormat mMonthDayFormat; // Top-level container. private ViewGroup mContainer; @@ -273,19 +272,16 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { /** * Listener called when the user clicks on a header item. */ - private final OnClickListener mOnHeaderClickListener = new OnClickListener() { - @Override - public void onClick(View v) { - tryVibrate(); + private final OnClickListener mOnHeaderClickListener = v -> { + tryVibrate(); - switch (v.getId()) { - case R.id.date_picker_header_year: - setCurrentView(VIEW_YEAR); - break; - case R.id.date_picker_header_date: - setCurrentView(VIEW_MONTH_DAY); - break; - } + switch (v.getId()) { + case R.id.date_picker_header_year: + setCurrentView(VIEW_YEAR); + break; + case R.id.date_picker_header_date: + setCurrentView(VIEW_MONTH_DAY); + break; } }; @@ -299,10 +295,9 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { } // Update the date formatter. - final String datePattern = DateFormat.getBestDateTimePattern(locale, "EMMMd"); - mMonthDayFormat = new SimpleDateFormat(datePattern, locale); + mMonthDayFormat = DateFormat.getInstanceForSkeleton("EMMMd", locale); mMonthDayFormat.setContext(DisplayContext.CAPITALIZATION_FOR_STANDALONE); - mYearFormat = new SimpleDateFormat("y", locale); + mYearFormat = DateFormat.getInstanceForSkeleton("y", locale); // Update the header text. onCurrentDateChanged(false); @@ -344,14 +339,11 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { case VIEW_YEAR: final int year = mCurrentDate.get(Calendar.YEAR); mYearPickerView.setYear(year); - mYearPickerView.post(new Runnable() { - @Override - public void run() { - mYearPickerView.requestFocus(); - final View selected = mYearPickerView.getSelectedView(); - if (selected != null) { - selected.requestFocus(); - } + mYearPickerView.post(() -> { + mYearPickerView.requestFocus(); + final View selected = mYearPickerView.getSelectedView(); + if (selected != null) { + selected.requestFocus(); } }); @@ -368,12 +360,9 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { } @Override - public void init(int year, int monthOfYear, int dayOfMonth, + public void init(int year, int month, int dayOfMonth, DatePicker.OnDateChangedListener callBack) { - mCurrentDate.set(Calendar.YEAR, year); - mCurrentDate.set(Calendar.MONTH, monthOfYear); - mCurrentDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - + setDate(year, month, dayOfMonth); onDateChanged(false, false); mOnDateChangedListener = callBack; @@ -381,11 +370,15 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate { @Override public void updateDate(int year, int month, int dayOfMonth) { + setDate(year, month, dayOfMonth); + onDateChanged(false, true); + } + + private void setDate(int year, int month, int dayOfMonth) { mCurrentDate.set(Calendar.YEAR, year); mCurrentDate.set(Calendar.MONTH, month); mCurrentDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); - - onDateChanged(false, true); + resetAutofilledValue(); } private void onDateChanged(boolean fromUser, boolean callbackToClient) { diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java index 4f9316f881cdc77b089ac4d94e3cde3f71cc3486..dba74b191b09d512bba31885b38e2cdd6f6b23c2 100644 --- a/core/java/android/widget/DatePickerSpinnerDelegate.java +++ b/core/java/android/widget/DatePickerSpinnerDelegate.java @@ -504,6 +504,7 @@ class DatePickerSpinnerDelegate extends AbstractDatePickerDelegate { private void setDate(int year, int month, int dayOfMonth) { mCurrentDate.set(year, month, dayOfMonth); + resetAutofilledValue(); if (mCurrentDate.before(mMinDate)) { mCurrentDate.setTimeInMillis(mMinDate.getTimeInMillis()); } else if (mCurrentDate.after(mMaxDate)) { diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 6374aa26a200e922cf58c1e45b82aed8321daff8..92e8f4413742f53c110830ac5ae6022060912c38 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -83,6 +83,7 @@ import android.view.DisplayListCanvas; import android.view.DragAndDropPermissions; import android.view.DragEvent; import android.view.Gravity; +import android.view.HapticFeedbackConstants; import android.view.InputDevice; import android.view.LayoutInflater; import android.view.Menu; @@ -176,6 +177,8 @@ public class Editor { private boolean mInsertionControllerEnabled; private boolean mSelectionControllerEnabled; + private final boolean mHapticTextHandleEnabled; + // Used to highlight a word when it is corrected by the IME private CorrectionHighlighter mCorrectionHighlighter; @@ -320,6 +323,8 @@ public class Editor { // Synchronize the filter list, which places the undo input filter at the end. mTextView.setFilters(mTextView.getFilters()); mProcessTextIntentActionsHandler = new ProcessTextIntentActionsHandler(this); + mHapticTextHandleEnabled = mTextView.getContext().getResources().getBoolean( + com.android.internal.R.bool.config_enableHapticTextHandle); } ParcelableParcel saveInstanceState() { @@ -1061,6 +1066,8 @@ public class Editor { } private void startDragAndDrop() { + getSelectionActionModeHelper().onSelectionDrag(); + // TODO: Fix drag and drop in full screen extracted mode. if (mTextView.isInExtractedMode()) { return; @@ -1244,7 +1251,8 @@ public class Editor { } } - void sendOnTextChanged(int start, int after) { + void sendOnTextChanged(int start, int before, int after) { + getSelectionActionModeHelper().onTextChanged(start, start + before); updateSpellCheckSpans(start, start + after, false); // Flip flag to indicate the word iterator needs to have the text reset. @@ -1382,7 +1390,7 @@ public class Editor { if (mTextActionMode != null) { switch (event.getActionMasked()) { case MotionEvent.ACTION_MOVE: - hideFloatingToolbar(); + hideFloatingToolbar(ActionMode.DEFAULT_HIDE_DURATION); break; case MotionEvent.ACTION_UP: // fall through case MotionEvent.ACTION_CANCEL: @@ -1391,10 +1399,10 @@ public class Editor { } } - private void hideFloatingToolbar() { + void hideFloatingToolbar(int duration) { if (mTextActionMode != null) { mTextView.removeCallbacks(mShowFloatingToolbar); - mTextActionMode.hide(ActionMode.DEFAULT_HIDE_DURATION); + mTextActionMode.hide(duration); } } @@ -2659,7 +2667,7 @@ public class Editor { .setEnabled(mTextView.canSelectAllText()) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); menu.add(Menu.NONE, TextView.ID_AUTOFILL, MENU_ITEM_ORDER_AUTOFILL, - com.android.internal.R.string.autofill) + android.R.string.autofill) .setEnabled(mTextView.canRequestAutofill()) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); @@ -3935,7 +3943,7 @@ public class Editor { @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - getSelectionActionModeHelper().onSelectionAction(); + getSelectionActionModeHelper().onSelectionAction(item.getItemId()); if (mProcessTextIntentActionsHandler.performMenuItemAction(item)) { return true; @@ -4258,7 +4266,7 @@ public class Editor { mNumberPreviousOffsets++; } - private void filterOnTouchUp() { + private void filterOnTouchUp(boolean fromTouchScreen) { final long now = SystemClock.uptimeMillis(); int i = 0; int index = mPreviousOffsetIndex; @@ -4270,7 +4278,7 @@ public class Editor { if (i > 0 && i < iMax && (now - mPreviousOffsetsTimes[index]) > TOUCH_UP_FILTER_DELAY_BEFORE) { - positionAtCursorOffset(mPreviousOffsets[index], false); + positionAtCursorOffset(mPreviousOffsets[index], false, fromTouchScreen); } } @@ -4287,7 +4295,7 @@ public class Editor { public void invalidate() { super.invalidate(); if (isShowing()) { - positionAtCursorOffset(getCurrentCursorOffset(), true); + positionAtCursorOffset(getCurrentCursorOffset(), true, false); } }; @@ -4306,7 +4314,7 @@ public class Editor { // Make sure the offset is always considered new, even when focusing at same position mPreviousOffset = -1; - positionAtCursorOffset(getCurrentCursorOffset(), false); + positionAtCursorOffset(getCurrentCursorOffset(), false, false); } protected void dismiss() { @@ -4343,7 +4351,7 @@ public class Editor { protected abstract void updateSelection(int offset); - public abstract void updatePosition(float x, float y); + protected abstract void updatePosition(float x, float y, boolean fromTouchScreen); protected boolean isAtRtlRun(@NonNull Layout layout, int offset) { return layout.isRtlCharAt(offset); @@ -4362,8 +4370,11 @@ public class Editor { * @param offset Cursor offset. Must be in [-1, length]. * @param forceUpdatePosition whether to force update the position. This should be true * when If the parent has been scrolled, for example. + * @param fromTouchScreen {@code true} if the cursor is moved with motion events from the + * touch screen. */ - protected void positionAtCursorOffset(int offset, boolean forceUpdatePosition) { + protected void positionAtCursorOffset(int offset, boolean forceUpdatePosition, + boolean fromTouchScreen) { // A HandleView relies on the layout, which may be nulled by external methods Layout layout = mTextView.getLayout(); if (layout == null) { @@ -4377,6 +4388,9 @@ public class Editor { if (offsetChanged || forceUpdatePosition) { if (offsetChanged) { updateSelection(offset); + if (fromTouchScreen && mHapticTextHandleEnabled) { + mTextView.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + } addPositionToTouchUpFilter(offset); } final int line = layout.getLineForOffset(offset); @@ -4409,7 +4423,7 @@ public class Editor { @Override public void updatePosition(int parentPositionX, int parentPositionY, boolean parentPositionChanged, boolean parentScrolled) { - positionAtCursorOffset(getCurrentCursorOffset(), parentScrolled); + positionAtCursorOffset(getCurrentCursorOffset(), parentScrolled, false); if (parentPositionChanged || mPositionHasChanged) { if (mIsDragging) { // Update touchToWindow offset in case of parent scrolling while dragging @@ -4521,12 +4535,13 @@ public class Editor { xInWindow - mTouchToWindowOffsetX + mHotspotX + getHorizontalOffset(); final float newPosY = yInWindow - mTouchToWindowOffsetY + mTouchOffsetY; - updatePosition(newPosX, newPosY); + updatePosition(newPosX, newPosY, + ev.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)); break; } case MotionEvent.ACTION_UP: - filterOnTouchUp(); + filterOnTouchUp(ev.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)); mIsDragging = false; updateDrawable(); break; @@ -4707,7 +4722,7 @@ public class Editor { } @Override - public void updatePosition(float x, float y) { + protected void updatePosition(float x, float y, boolean fromTouchScreen) { Layout layout = mTextView.getLayout(); int offset; if (layout != null) { @@ -4720,7 +4735,7 @@ public class Editor { } else { offset = -1; } - positionAtCursorOffset(offset, false); + positionAtCursorOffset(offset, false, fromTouchScreen); if (mTextActionMode != null) { invalidateActionMode(); } @@ -4811,12 +4826,13 @@ public class Editor { } @Override - public void updatePosition(float x, float y) { + protected void updatePosition(float x, float y, boolean fromTouchScreen) { final Layout layout = mTextView.getLayout(); if (layout == null) { // HandleView will deal appropriately in positionAtCursorOffset when // layout is null. - positionAndAdjustForCrossingHandles(mTextView.getOffsetForPosition(x, y)); + positionAndAdjustForCrossingHandles(mTextView.getOffsetForPosition(x, y), + fromTouchScreen); return; } @@ -4859,12 +4875,12 @@ public class Editor { // to the current position. mLanguageDirectionChanged = true; mTouchWordDelta = 0.0f; - positionAndAdjustForCrossingHandles(offset); + positionAndAdjustForCrossingHandles(offset, fromTouchScreen); return; } else if (mLanguageDirectionChanged && !isLvlBoundary) { // We've just moved past the boundary so update the position. After this we can // figure out if the user is expanding or shrinking to go by word or character. - positionAndAdjustForCrossingHandles(offset); + positionAndAdjustForCrossingHandles(offset, fromTouchScreen); mTouchWordDelta = 0.0f; mLanguageDirectionChanged = false; return; @@ -4898,7 +4914,7 @@ public class Editor { final int nextOffset = (atRtl == isStartHandle()) ? layout.getOffsetToRightOf(mPreviousOffset) : layout.getOffsetToLeftOf(mPreviousOffset); - positionAndAdjustForCrossingHandles(nextOffset); + positionAndAdjustForCrossingHandles(nextOffset, fromTouchScreen); return; } } @@ -4977,14 +4993,15 @@ public class Editor { if (positionCursor) { mPreviousLineTouched = currLine; - positionAndAdjustForCrossingHandles(offset); + positionAndAdjustForCrossingHandles(offset, fromTouchScreen); } mPrevX = x; } @Override - protected void positionAtCursorOffset(int offset, boolean forceUpdatePosition) { - super.positionAtCursorOffset(offset, forceUpdatePosition); + protected void positionAtCursorOffset(int offset, boolean forceUpdatePosition, + boolean fromTouchScreen) { + super.positionAtCursorOffset(offset, forceUpdatePosition, fromTouchScreen); mInWord = (offset != -1) && !getWordIteratorWithText().isBoundary(offset); } @@ -5000,7 +5017,7 @@ public class Editor { return superResult; } - private void positionAndAdjustForCrossingHandles(int offset) { + private void positionAndAdjustForCrossingHandles(int offset, boolean fromTouchScreen) { final int anotherHandleOffset = isStartHandle() ? mTextView.getSelectionEnd() : mTextView.getSelectionStart(); if ((isStartHandle() && offset >= anotherHandleOffset) @@ -5025,14 +5042,14 @@ public class Editor { } else { offset = TextUtils.unpackRangeEndFromLong(range); } - positionAtCursorOffset(offset, false); + positionAtCursorOffset(offset, false, fromTouchScreen); return; } } // Handles can not cross and selection is at least one character. offset = getNextCursorOffset(anotherHandleOffset, !isStartHandle()); } - positionAtCursorOffset(offset, false); + positionAtCursorOffset(offset, false, fromTouchScreen); } private boolean positionNearEdgeOfScrollingView(float x, boolean atRtl) { @@ -5475,7 +5492,8 @@ public class Editor { private void updateCharacterBasedSelection(MotionEvent event) { final int offset = mTextView.getOffsetForPosition(event.getX(), event.getY()); - Selection.setSelection((Spannable) mTextView.getText(), mStartOffset, offset); + updateSelectionInternal(mStartOffset, offset, + event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)); } private void updateWordBasedSelection(MotionEvent event) { @@ -5533,7 +5551,8 @@ public class Editor { } } mLineSelectionIsOn = currLine; - Selection.setSelection((Spannable) mTextView.getText(), startOffset, offset); + updateSelectionInternal(startOffset, offset, + event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)); } private void updateParagraphBasedSelection(MotionEvent event) { @@ -5544,7 +5563,19 @@ public class Editor { final long paragraphsRange = getParagraphsRange(start, end); final int selectionStart = TextUtils.unpackRangeStartFromLong(paragraphsRange); final int selectionEnd = TextUtils.unpackRangeEndFromLong(paragraphsRange); + updateSelectionInternal(selectionStart, selectionEnd, + event.isFromSource(InputDevice.SOURCE_TOUCHSCREEN)); + } + + private void updateSelectionInternal(int selectionStart, int selectionEnd, + boolean fromTouchScreen) { + final boolean performHapticFeedback = fromTouchScreen && mHapticTextHandleEnabled + && ((mTextView.getSelectionStart() != selectionStart) + || (mTextView.getSelectionEnd() != selectionEnd)); Selection.setSelection((Spannable) mTextView.getText(), selectionStart, selectionEnd); + if (performHapticFeedback) { + mTextView.performHapticFeedback(HapticFeedbackConstants.TEXT_HANDLE_MOVE); + } } /** diff --git a/core/java/android/widget/LinearLayout.java b/core/java/android/widget/LinearLayout.java index 88c3c5b6101e1db930159ad93e53c720b510f94f..380bf7add2390558fe48a1b3532c3ea989a733d7 100644 --- a/core/java/android/widget/LinearLayout.java +++ b/core/java/android/widget/LinearLayout.java @@ -66,7 +66,7 @@ import java.lang.annotation.RetentionPolicy; * both horizontal and vertical alignment of all child views within the single row or column.

    * *

    You can set - * {@link LinearLayout.LayoutParams.html#attr_android:layout_weight android:layout_weight} + * {@link android.R.styleable#LinearLayout_Layout_layout_weight android:layout_weight} * on individual child views to specify how linear layout divides remaining space amongst * the views it contains. See the * Linear Layout diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java index 7bdd6dadf415f1312d30181e4773a8ea1a3ebf7a..4d3189efa64e494e8bea45974286e601867f14f6 100644 --- a/core/java/android/widget/NumberPicker.java +++ b/core/java/android/widget/NumberPicker.java @@ -737,6 +737,7 @@ public class NumberPicker extends LinearLayout { mInputText.setFilters(new InputFilter[] { new InputTextFilter() }); + mInputText.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); mInputText.setRawInputType(InputType.TYPE_CLASS_NUMBER); mInputText.setImeOptions(EditorInfo.IME_ACTION_DONE); @@ -770,6 +771,12 @@ public class NumberPicker extends LinearLayout { if (getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO) { setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES); } + + // Should be focusable by default, as the text view whose visibility changes is focusable + if (getFocusable() == View.FOCUSABLE_AUTO) { + setFocusable(View.FOCUSABLE); + setFocusableInTouchMode(true); + } } @Override @@ -856,7 +863,7 @@ public class NumberPicker extends LinearLayout { switch (action) { case MotionEvent.ACTION_DOWN: { removeAllCallbacks(); - mInputText.setVisibility(View.INVISIBLE); + hideSoftInput(); mLastDownOrMoveEventY = mLastDownEventY = event.getY(); mLastDownEventTime = event.getEventTime(); mIgnoreMoveEvents = false; @@ -883,11 +890,9 @@ public class NumberPicker extends LinearLayout { mFlingScroller.forceFinished(true); mAdjustScroller.forceFinished(true); } else if (mLastDownEventY < mTopSelectionDividerTop) { - hideSoftInput(); postChangeCurrentByOneFromLongPress( false, ViewConfiguration.getLongPressTimeout()); } else if (mLastDownEventY > mBottomSelectionDividerBottom) { - hideSoftInput(); postChangeCurrentByOneFromLongPress( true, ViewConfiguration.getLongPressTimeout()); } else { @@ -1120,6 +1125,7 @@ public class NumberPicker extends LinearLayout { @Override public void scrollBy(int x, int y) { int[] selectorIndices = mSelectorIndices; + int startScrollOffset = mCurrentScrollOffset; if (!mWrapSelectorWheel && y > 0 && selectorIndices[SELECTOR_MIDDLE_ITEM_INDEX] <= mMinValue) { mCurrentScrollOffset = mInitialScrollOffset; @@ -1147,6 +1153,9 @@ public class NumberPicker extends LinearLayout { mCurrentScrollOffset = mInitialScrollOffset; } } + if (startScrollOffset != mCurrentScrollOffset) { + onScrollChanged(0, mCurrentScrollOffset, 0, startScrollOffset); + } } @Override @@ -1281,9 +1290,9 @@ public class NumberPicker extends LinearLayout { InputMethodManager inputMethodManager = InputMethodManager.peekInstance(); if (inputMethodManager != null && inputMethodManager.isActive(mInputText)) { inputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0); - if (mHasSelectorWheel) { - mInputText.setVisibility(View.INVISIBLE); - } + } + if (mHasSelectorWheel) { + mInputText.setVisibility(View.INVISIBLE); } } @@ -1735,7 +1744,10 @@ public class NumberPicker extends LinearLayout { } int previous = mValue; mValue = current; - updateInputTextView(); + // If we're flinging, we'll update the text view at the end when it becomes visible + if (mScrollState != OnScrollListener.SCROLL_STATE_FLING) { + updateInputTextView(); + } if (notifyChange) { notifyChange(previous, current); } @@ -1752,7 +1764,7 @@ public class NumberPicker extends LinearLayout { */ private void changeValueByOne(boolean increment) { if (mHasSelectorWheel) { - mInputText.setVisibility(View.INVISIBLE); + hideSoftInput(); if (!moveToFinalScrollerPosition(mFlingScroller)) { moveToFinalScrollerPosition(mAdjustScroller); } @@ -1799,9 +1811,8 @@ public class NumberPicker extends LinearLayout { */ private void onScrollerFinished(Scroller scroller) { if (scroller == mFlingScroller) { - if (!ensureScrollWheelAdjusted()) { - updateInputTextView(); - } + ensureScrollWheelAdjusted(); + updateInputTextView(); onScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); } else { if (mScrollState != OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { @@ -1937,9 +1948,25 @@ public class NumberPicker extends LinearLayout { */ String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue]; - if (!TextUtils.isEmpty(text) && !text.equals(mInputText.getText().toString())) { - mInputText.setText(text); - return true; + if (!TextUtils.isEmpty(text)) { + CharSequence beforeText = mInputText.getText(); + if (!text.equals(beforeText.toString())) { + mInputText.setText(text); + if (AccessibilityManager.getInstance(mContext).isEnabled()) { + AccessibilityEvent event = AccessibilityEvent.obtain( + AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED); + mInputText.onInitializeAccessibilityEvent(event); + mInputText.onPopulateAccessibilityEvent(event); + event.setFromIndex(0); + event.setRemovedCount(beforeText.length()); + event.setAddedCount(text.length()); + event.setBeforeText(beforeText); + event.setSource(NumberPicker.this, + AccessibilityNodeProviderImpl.VIRTUAL_VIEW_ID_INPUT); + requestSendAccessibilityEvent(NumberPicker.this, event); + } + return true; + } } return false; diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 8464c6e47d474c76de61aa0c2fd9027666d68b21..23ebadb3806a51695f374579e10ab6ea4cbd2234 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -1334,6 +1334,10 @@ public class PopupWindow { + "calling setContentView() before attempting to show the popup."); } + if (p.accessibilityTitle == null) { + p.accessibilityTitle = mContext.getString(R.string.popup_window_default_title); + } + // The old decor view may be transitioning out. Make sure it finishes // and cleans up before we try to create another one. if (mDecorView != null) { @@ -2292,8 +2296,8 @@ public class PopupWindow { } /** @hide */ - protected final void detachFromAnchor() { - final View anchor = mAnchor != null ? mAnchor.get() : null; + protected void detachFromAnchor() { + final View anchor = getAnchor(); if (anchor != null) { final ViewTreeObserver vto = anchor.getViewTreeObserver(); vto.removeOnScrollChangedListener(mOnScrollChangedListener); @@ -2312,7 +2316,7 @@ public class PopupWindow { } /** @hide */ - protected final void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { + protected void attachToAnchor(View anchor, int xoff, int yoff, int gravity) { detachFromAnchor(); final ViewTreeObserver vto = anchor.getViewTreeObserver(); @@ -2335,6 +2339,11 @@ public class PopupWindow { mAnchoredGravity = gravity; } + /** @hide */ + protected @Nullable View getAnchor() { + return mAnchor != null ? mAnchor.get() : null; + } + private void alignToAnchor() { final View anchor = mAnchor != null ? mAnchor.get() : null; if (anchor != null && anchor.isAttachedToWindow() && hasDecorView()) { diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java index 181ad31deddc884ffc82b40097177e4079ed2989..75fc5386410158643f8a58b2697ab35650978893 100644 --- a/core/java/android/widget/RelativeLayout.java +++ b/core/java/android/widget/RelativeLayout.java @@ -486,7 +486,7 @@ public class RelativeLayout extends ViewGroup { if (targetSdkVersion < Build.VERSION_CODES.KITKAT) { width = Math.max(width, myWidth - params.mLeft); } else { - width = Math.max(width, myWidth - params.mLeft - params.leftMargin); + width = Math.max(width, myWidth - params.mLeft + params.leftMargin); } } else { if (targetSdkVersion < Build.VERSION_CODES.KITKAT) { @@ -833,25 +833,28 @@ public class RelativeLayout extends ViewGroup { if (!wrapContent) { centerHorizontal(child, params, myWidth); } else { - params.mLeft = mPaddingLeft + params.leftMargin; - params.mRight = params.mLeft + child.getMeasuredWidth(); + positionAtEdge(child, params, myWidth); } return true; } else { // This is the default case. For RTL we start from the right and for LTR we start // from the left. This will give LEFT/TOP for LTR and RIGHT/TOP for RTL. - if (isLayoutRtl()) { - params.mRight = myWidth - mPaddingRight- params.rightMargin; - params.mLeft = params.mRight - child.getMeasuredWidth(); - } else { - params.mLeft = mPaddingLeft + params.leftMargin; - params.mRight = params.mLeft + child.getMeasuredWidth(); - } + positionAtEdge(child, params, myWidth); } } return rules[ALIGN_PARENT_END] != 0; } + private void positionAtEdge(View child, LayoutParams params, int myWidth) { + if (isLayoutRtl()) { + params.mRight = myWidth - mPaddingRight - params.rightMargin; + params.mLeft = params.mRight - child.getMeasuredWidth(); + } else { + params.mLeft = mPaddingLeft + params.leftMargin; + params.mRight = params.mLeft + child.getMeasuredWidth(); + } + } + private boolean positionChildVertical(View child, LayoutParams params, int myHeight, boolean wrapContent) { diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 6e6235192cc94e3410b8db8110c080d89ffe4c8c..5adbdbe8ab4ffce5e83e5362ae14388164fe1901 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -64,6 +64,7 @@ import android.view.ViewStub; import android.widget.AdapterView.OnItemClickListener; import com.android.internal.R; +import com.android.internal.util.NotificationColorUtil; import com.android.internal.util.Preconditions; import libcore.util.Objects; @@ -75,6 +76,7 @@ import java.lang.annotation.Target; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; +import java.util.Stack; import java.util.concurrent.Executor; /** @@ -118,6 +120,7 @@ public class RemoteViews implements Parcelable, Filter { private static final int TEXT_VIEW_DRAWABLE_COLOR_FILTER_ACTION_TAG = 17; private static final int SET_REMOTE_INPUTS_ACTION_TAG = 18; private static final int LAYOUT_PARAM_ACTION_TAG = 19; + private static final int OVERRIDE_TEXT_COLORS_TAG = 20; /** * Application that hosts the remote views. @@ -153,6 +156,12 @@ public class RemoteViews implements Parcelable, Filter { */ private boolean mIsRoot = true; + /** + * Whether reapply is disallowed on this remoteview. This maybe be true if some actions modify + * the layout in a way that isn't recoverable, since views are being removed. + */ + private boolean mReapplyDisallowed; + /** * Constants to whether or not this RemoteViews is composed of a landscape and portrait * RemoteViews. @@ -214,6 +223,37 @@ public class RemoteViews implements Parcelable, Filter { } } + /** + * Override all text colors in this layout and replace them by the given text color. + * + * @param textColor The color to use. + * + * @hide + */ + public void overrideTextColors(int textColor) { + addAction(new OverrideTextColorsAction(textColor)); + } + + /** + * Set that it is disallowed to reapply another remoteview with the same layout as this view. + * This should be done if an action is destroying the view tree of the base layout. + * + * @hide + */ + public void setReapplyDisallowed() { + mReapplyDisallowed = true; + } + + /** + * @return Whether it is disallowed to reapply another remoteview with the same layout as this + * view. True if this remoteview has actions that destroyed view tree of the base layout. + * + * @hide + */ + public boolean isReapplyDisallowed() { + return mReapplyDisallowed; + } + /** * Handle with care! */ @@ -2222,6 +2262,52 @@ public class RemoteViews implements Parcelable, Filter { final Parcelable[] remoteInputs; } + /** + * Helper action to override all textViewColors + */ + private class OverrideTextColorsAction extends Action { + + private final int textColor; + + public OverrideTextColorsAction(int textColor) { + this.textColor = textColor; + } + + public OverrideTextColorsAction(Parcel parcel) { + textColor = parcel.readInt(); + } + + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(OVERRIDE_TEXT_COLORS_TAG); + dest.writeInt(textColor); + } + + @Override + public void apply(View root, ViewGroup rootParent, OnClickHandler handler) { + // Let's traverse the viewtree and override all textColors! + Stack viewsToProcess = new Stack<>(); + viewsToProcess.add(root); + while (!viewsToProcess.isEmpty()) { + View v = viewsToProcess.pop(); + if (v instanceof TextView) { + TextView textView = (TextView) v; + textView.setText(NotificationColorUtil.clearColorSpans(textView.getText())); + textView.setTextColor(textColor); + } + if (v instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) v; + for (int i = 0; i < viewGroup.getChildCount(); i++) { + viewsToProcess.push(viewGroup.getChildAt(i)); + } + } + } + } + + public String getActionName() { + return "OverrideTextColorsAction"; + } + } + /** * Simple class used to keep track of memory usage in a RemoteViews. * @@ -2417,6 +2503,9 @@ public class RemoteViews implements Parcelable, Filter { case LAYOUT_PARAM_ACTION_TAG: mActions.add(new LayoutParamAction(parcel)); break; + case OVERRIDE_TEXT_COLORS_TAG: + mActions.add(new OverrideTextColorsAction(parcel)); + break; default: throw new ActionException("Tag " + tag + " not found"); } @@ -2429,13 +2518,21 @@ public class RemoteViews implements Parcelable, Filter { mApplication = mPortrait.mApplication; mLayoutId = mPortrait.getLayoutId(); } + mReapplyDisallowed = parcel.readInt() == 0; // setup the memory usage statistics mMemoryUsageCounter = new MemoryUsageCounter(); recalculateMemoryUsage(); } - + /** + * Returns a deep copy of the RemoteViews object. The RemoteView may not be + * attached to another RemoteView -- it must be the root of a hierarchy. + * + * @throws IllegalStateException if this is not the root of a RemoteView + * hierarchy + */ + @Override public RemoteViews clone() { synchronized (this) { Preconditions.checkState(mIsRoot, "RemoteView has been attached to another RemoteView. " @@ -3731,6 +3828,7 @@ public class RemoteViews implements Parcelable, Filter { // Both RemoteViews already share the same package and user mPortrait.writeToParcel(dest, flags | PARCELABLE_ELIDE_DUPLICATES); } + dest.writeInt(mReapplyDisallowed ? 1 : 0); } private static ApplicationInfo getApplicationInfo(String packageName, int userId) { diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java index 142412ac8ccb0e7e97d7b5e79802a8fd374664aa..384e254e205fa666768947f7d399dff8cd7c27af 100644 --- a/core/java/android/widget/SelectionActionModeHelper.java +++ b/core/java/android/widget/SelectionActionModeHelper.java @@ -25,17 +25,22 @@ import android.os.LocaleList; import android.text.Selection; import android.text.Spannable; import android.text.TextUtils; +import android.util.Log; import android.view.ActionMode; import android.view.textclassifier.TextClassification; import android.view.textclassifier.TextClassifier; import android.view.textclassifier.TextSelection; +import android.view.textclassifier.logging.SmartSelectionEventTracker; +import android.view.textclassifier.logging.SmartSelectionEventTracker.SelectionEvent; import android.widget.Editor.SelectionModifierCursorController; import com.android.internal.util.Preconditions; +import java.text.BreakIterator; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; +import java.util.regex.Pattern; /** * Helper class for starting selection action mode @@ -44,13 +49,10 @@ import java.util.function.Supplier; @UiThread final class SelectionActionModeHelper { - /** - * Maximum time (in milliseconds) to wait for a result before timing out. - */ - // TODO: Consider making this a ViewConfiguration. - private static final int TIMEOUT_DURATION = 200; + private static final String LOG_TAG = "SelectActionModeHelper"; private final Editor mEditor; + private final TextView mTextView; private final TextClassificationHelper mTextClassificationHelper; private TextClassification mTextClassification; @@ -60,24 +62,32 @@ final class SelectionActionModeHelper { SelectionActionModeHelper(@NonNull Editor editor) { mEditor = Preconditions.checkNotNull(editor); - final TextView textView = mEditor.getTextView(); + mTextView = mEditor.getTextView(); mTextClassificationHelper = new TextClassificationHelper( - textView.getTextClassifier(), textView.getText(), 0, 1, textView.getTextLocales()); - mSelectionTracker = new SelectionTracker(textView.getTextClassifier()); + mTextView.getTextClassifier(), + getText(mTextView), + 0, 1, mTextView.getTextLocales()); + mSelectionTracker = new SelectionTracker(mTextView); } public void startActionModeAsync(boolean adjustSelection) { + // Check if the smart selection should run for editable text. + adjustSelection &= !mTextView.isTextEditable() + || mTextView.getTextClassifier().getSettings() + .isSuggestSelectionEnabledForEditableText(); + + mSelectionTracker.onOriginalSelection( + getText(mTextView), + mTextView.getSelectionStart(), + mTextView.getSelectionEnd()); cancelAsyncTask(); - if (isNoOpTextClassifier() || !hasSelection()) { - // No need to make an async call for a no-op TextClassifier. - // Do not call the TextClassifier if there is no selection. + if (skipTextClassification()) { startActionMode(null); } else { - resetTextClassificationHelper(true /* resetSelectionTag */); - final TextView tv = mEditor.getTextView(); + resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( - tv, - TIMEOUT_DURATION, + mTextView, + mTextClassificationHelper.getTimeoutDuration(), adjustSelection ? mTextClassificationHelper::suggestSelection : mTextClassificationHelper::classifyText, @@ -88,26 +98,37 @@ final class SelectionActionModeHelper { public void invalidateActionModeAsync() { cancelAsyncTask(); - if (isNoOpTextClassifier() || !hasSelection()) { - // No need to make an async call for a no-op TextClassifier. - // Do not call the TextClassifier if there is no selection. + if (skipTextClassification()) { invalidateActionMode(null); } else { - resetTextClassificationHelper(false /* resetSelectionTag */); + resetTextClassificationHelper(); mTextClassificationAsyncTask = new TextClassificationAsyncTask( - mEditor.getTextView(), TIMEOUT_DURATION, - mTextClassificationHelper::classifyText, this::invalidateActionMode) + mTextView, + mTextClassificationHelper.getTimeoutDuration(), + mTextClassificationHelper::classifyText, + this::invalidateActionMode) .execute(); } } - public void onSelectionAction() { - mSelectionTracker.onSelectionAction(mTextClassificationHelper.getSelectionTag()); + public void onSelectionAction(int menuItemId) { + mSelectionTracker.onSelectionAction( + mTextView.getSelectionStart(), mTextView.getSelectionEnd(), + getActionType(menuItemId), mTextClassification); + } + + public void onSelectionDrag() { + mSelectionTracker.onSelectionAction( + mTextView.getSelectionStart(), mTextView.getSelectionEnd(), + SelectionEvent.ActionType.DRAG, mTextClassification); + } + + public void onTextChanged(int start, int end) { + mSelectionTracker.onTextChanged(start, end, mTextClassification); } public boolean resetSelection(int textIndex) { - if (mSelectionTracker.resetSelection( - textIndex, mEditor, mTextClassificationHelper.getSelectionTag())) { + if (mSelectionTracker.resetSelection(textIndex, mEditor)) { invalidateActionModeAsync(); return true; } @@ -132,22 +153,24 @@ final class SelectionActionModeHelper { mTextClassification = null; } - private boolean isNoOpTextClassifier() { - return mEditor.getTextView().getTextClassifier() == TextClassifier.NO_OP; - } - - private boolean hasSelection() { - final TextView textView = mEditor.getTextView(); - return textView.getSelectionEnd() > textView.getSelectionStart(); + private boolean skipTextClassification() { + // No need to make an async call for a no-op TextClassifier. + final boolean noOpTextClassifier = mTextView.getTextClassifier() == TextClassifier.NO_OP; + // Do not call the TextClassifier if there is no selection. + final boolean noSelection = mTextView.getSelectionEnd() == mTextView.getSelectionStart(); + // Do not call the TextClassifier if this is a password field. + final boolean password = mTextView.hasPasswordTransformationMethod() + || TextView.isPasswordInputType(mTextView.getInputType()); + return noOpTextClassifier || noSelection || password; } private void startActionMode(@Nullable SelectionResult result) { - final TextView textView = mEditor.getTextView(); - final CharSequence text = textView.getText(); - mSelectionTracker.setOriginalSelection( - textView.getSelectionStart(), textView.getSelectionEnd()); + final CharSequence text = getText(mTextView); if (result != null && text instanceof Spannable) { - Selection.setSelection((Spannable) text, result.mStart, result.mEnd); + // Do not change the selection if TextClassifier should be dark launched. + if (!mTextView.getTextClassifier().getSettings().isDarkLaunch()) { + Selection.setSelection((Spannable) text, result.mStart, result.mEnd); + } mTextClassification = result.mClassification; } else { mTextClassification = null; @@ -158,8 +181,7 @@ final class SelectionActionModeHelper { controller.show(); } if (result != null) { - mSelectionTracker.onSelectionStarted( - result.mStart, result.mEnd, mTextClassificationHelper.getSelectionTag()); + mSelectionTracker.onSmartSelection(result); } } mEditor.setRestartActionModeOnNextRefresh(false); @@ -172,18 +194,17 @@ final class SelectionActionModeHelper { if (actionMode != null) { actionMode.invalidate(); } - final TextView textView = mEditor.getTextView(); mSelectionTracker.onSelectionUpdated( - textView.getSelectionStart(), textView.getSelectionEnd(), - mTextClassificationHelper.getSelectionTag()); + mTextView.getSelectionStart(), mTextView.getSelectionEnd(), mTextClassification); mTextClassificationAsyncTask = null; } - private void resetTextClassificationHelper(boolean resetSelectionTag) { - final TextView textView = mEditor.getTextView(); - mTextClassificationHelper.reset(textView.getTextClassifier(), textView.getText(), - textView.getSelectionStart(), textView.getSelectionEnd(), - resetSelectionTag, textView.getTextLocales()); + private void resetTextClassificationHelper() { + mTextClassificationHelper.init( + mTextView.getTextClassifier(), + getText(mTextView), + mTextView.getSelectionStart(), mTextView.getSelectionEnd(), + mTextView.getTextLocales()); } /** @@ -193,84 +214,60 @@ final class SelectionActionModeHelper { */ private static final class SelectionTracker { - // Log event: Smart selection happened. - private static final String LOG_EVENT_MULTI_SELECTION = - "textClassifier_multiSelection"; - private static final String LOG_EVENT_SINGLE_SELECTION = - "textClassifier_singleSelection"; - - // Log event: Smart selection acted upon. - private static final String LOG_EVENT_MULTI_SELECTION_ACTION = - "textClassifier_multiSelection_action"; - private static final String LOG_EVENT_SINGLE_SELECTION_ACTION = - "textClassifier_singleSelection_action"; - - // Log event: Smart selection was reset to original selection. - private static final String LOG_EVENT_MULTI_SELECTION_RESET = - "textClassifier_multiSelection_reset"; - - // Log event: Smart selection was user modified. - private static final String LOG_EVENT_MULTI_SELECTION_MODIFIED = - "textClassifier_multiSelection_modified"; - private static final String LOG_EVENT_SINGLE_SELECTION_MODIFIED = - "textClassifier_singleSelection_modified"; - - private final TextClassifier mClassifier; + private final TextView mTextView; + private SelectionMetricsLogger mLogger; private int mOriginalStart; private int mOriginalEnd; private int mSelectionStart; private int mSelectionEnd; + private boolean mAllowReset; + private final LogAbandonRunnable mDelayedLogAbandon = new LogAbandonRunnable(); - private boolean mMultiSelection; - private boolean mClassifierSelection; - - SelectionTracker(TextClassifier classifier) { - mClassifier = classifier; + SelectionTracker(TextView textView) { + mTextView = Preconditions.checkNotNull(textView); + mLogger = new SelectionMetricsLogger(textView); } /** - * Called to initialize the original selection before smart selection is triggered. + * Called when the original selection happens, before smart selection is triggered. */ - public void setOriginalSelection(int selectionStart, int selectionEnd) { - mOriginalStart = selectionStart; - mOriginalEnd = selectionEnd; - resetSelectionFlags(); + public void onOriginalSelection(CharSequence text, int selectionStart, int selectionEnd) { + // If we abandoned a selection and created a new one very shortly after, we may still + // have a pending request to log ABANDON, which we flush here. + mDelayedLogAbandon.flush(); + + mOriginalStart = mSelectionStart = selectionStart; + mOriginalEnd = mSelectionEnd = selectionEnd; + mAllowReset = false; + maybeInvalidateLogger(); + mLogger.logSelectionStarted(text, selectionStart); } /** * Called when selection action mode is started and the results come from a classifier. - * If the selection indices are different from the original selection indices, we have a - * smart selection. */ - public void onSelectionStarted(int selectionStart, int selectionEnd, String logTag) { - mClassifierSelection = !logTag.isEmpty(); - mSelectionStart = selectionStart; - mSelectionEnd = selectionEnd; - // If the started selection is different from the original selection, we have a - // smart selection. - mMultiSelection = - mSelectionStart != mOriginalStart || mSelectionEnd != mOriginalEnd; - if (mMultiSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_MULTI_SELECTION); - } else if (mClassifierSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_SINGLE_SELECTION); + public void onSmartSelection(SelectionResult result) { + if (isSelectionStarted()) { + mSelectionStart = result.mStart; + mSelectionEnd = result.mEnd; + mAllowReset = mSelectionStart != mOriginalStart || mSelectionEnd != mOriginalEnd; + mLogger.logSelectionModified( + result.mStart, result.mEnd, result.mClassification, result.mSelection); } } /** * Called when selection bounds change. */ - public void onSelectionUpdated(int selectionStart, int selectionEnd, String logTag) { - final boolean selectionChanged = - selectionStart != mSelectionStart || selectionEnd != mSelectionEnd; - if (selectionChanged) { - if (mMultiSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_MULTI_SELECTION_MODIFIED); - } else if (mClassifierSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_SINGLE_SELECTION_MODIFIED); - } - resetSelectionFlags(); + public void onSelectionUpdated( + int selectionStart, int selectionEnd, + @Nullable TextClassification classification) { + if (isSelectionStarted()) { + mSelectionStart = selectionStart; + mSelectionEnd = selectionEnd; + mAllowReset = false; + mLogger.logSelectionModified(selectionStart, selectionEnd, classification, null); } } @@ -278,17 +275,21 @@ final class SelectionActionModeHelper { * Called when the selection action mode is destroyed. */ public void onSelectionDestroyed() { - resetSelectionFlags(); + mAllowReset = false; + // Wait a few ms to see if the selection was destroyed because of a text change event. + mDelayedLogAbandon.schedule(100 /* ms */); } /** - * Logs if the action was taken on a smart selection. + * Called when an action is taken on a smart selection. */ - public void onSelectionAction(String logTag) { - if (mMultiSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_MULTI_SELECTION_ACTION); - } else if (mClassifierSelection) { - mClassifier.logEvent(logTag, LOG_EVENT_SINGLE_SELECTION_ACTION); + public void onSelectionAction( + int selectionStart, int selectionEnd, + @SelectionEvent.ActionType int action, + @Nullable TextClassification classification) { + if (isSelectionStarted()) { + mAllowReset = false; + mLogger.logSelectionAction(selectionStart, selectionEnd, action, classification); } } @@ -298,22 +299,234 @@ final class SelectionActionModeHelper { * The expected UX here is to allow the user to select a word inside of the smart selection * on a single tap. */ - public boolean resetSelection(int textIndex, Editor editor, String logTag) { - final CharSequence text = editor.getTextView().getText(); - if (mMultiSelection + public boolean resetSelection(int textIndex, Editor editor) { + final TextView textView = editor.getTextView(); + if (isSelectionStarted() + && mAllowReset && textIndex >= mSelectionStart && textIndex <= mSelectionEnd - && text instanceof Spannable) { - // Only allow a reset once. - resetSelectionFlags(); - mClassifier.logEvent(logTag, LOG_EVENT_MULTI_SELECTION_RESET); - return editor.selectCurrentWord(); + && getText(textView) instanceof Spannable) { + mAllowReset = false; + boolean selected = editor.selectCurrentWord(); + if (selected) { + mSelectionStart = editor.getTextView().getSelectionStart(); + mSelectionEnd = editor.getTextView().getSelectionEnd(); + mLogger.logSelectionAction( + textView.getSelectionStart(), textView.getSelectionEnd(), + SelectionEvent.ActionType.RESET, null /* classification */); + } + return selected; } return false; } - private void resetSelectionFlags() { - mMultiSelection = false; - mClassifierSelection = false; + public void onTextChanged(int start, int end, TextClassification classification) { + if (isSelectionStarted() && start == mSelectionStart && end == mSelectionEnd) { + onSelectionAction(start, end, SelectionEvent.ActionType.OVERTYPE, classification); + } + } + + private void maybeInvalidateLogger() { + if (mLogger.isEditTextLogger() != mTextView.isTextEditable()) { + mLogger = new SelectionMetricsLogger(mTextView); + } + } + + private boolean isSelectionStarted() { + return mSelectionStart >= 0 && mSelectionEnd >= 0 && mSelectionStart != mSelectionEnd; + } + + /** A helper for keeping track of pending abandon logging requests. */ + private final class LogAbandonRunnable implements Runnable { + private boolean mIsPending; + + /** Schedules an abandon to be logged with the given delay. Flush if necessary. */ + void schedule(int delayMillis) { + if (mIsPending) { + Log.e(LOG_TAG, "Force flushing abandon due to new scheduling request"); + flush(); + } + mIsPending = true; + mTextView.postDelayed(this, delayMillis); + } + + /** If there is a pending log request, execute it now. */ + void flush() { + mTextView.removeCallbacks(this); + run(); + } + + @Override + public void run() { + if (mIsPending) { + mLogger.logSelectionAction( + mSelectionStart, mSelectionEnd, + SelectionEvent.ActionType.ABANDON, null /* classification */); + mSelectionStart = mSelectionEnd = -1; + mIsPending = false; + } + } + } + } + + // TODO: Write tests + /** + * Metrics logging helper. + * + * This logger logs selection by word indices. The initial (start) single word selection is + * logged at [0, 1) -- end index is exclusive. Other word indices are logged relative to the + * initial single word selection. + * e.g. New York city, NY. Suppose the initial selection is "York" in + * "New York city, NY", then "York" is at [0, 1), "New" is at [-1, 0], and "city" is at [1, 2). + * "New York" is at [-1, 1). + * Part selection of a word e.g. "or" is counted as selecting the + * entire word i.e. equivalent to "York", and each special character is counted as a word, e.g. + * "," is at [2, 3). Whitespaces are ignored. + */ + private static final class SelectionMetricsLogger { + + private static final String LOG_TAG = "SelectionMetricsLogger"; + private static final Pattern PATTERN_WHITESPACE = Pattern.compile("\\s+"); + + private final SmartSelectionEventTracker mDelegate; + private final boolean mEditTextLogger; + private final BreakIterator mWordIterator; + private int mStartIndex; + private String mText; + + SelectionMetricsLogger(TextView textView) { + Preconditions.checkNotNull(textView); + final @SmartSelectionEventTracker.WidgetType int widgetType = textView.isTextEditable() + ? SmartSelectionEventTracker.WidgetType.EDITTEXT + : SmartSelectionEventTracker.WidgetType.TEXTVIEW; + mDelegate = new SmartSelectionEventTracker(textView.getContext(), widgetType); + mEditTextLogger = textView.isTextEditable(); + mWordIterator = BreakIterator.getWordInstance(textView.getTextLocale()); + } + + public void logSelectionStarted(CharSequence text, int index) { + try { + Preconditions.checkNotNull(text); + Preconditions.checkArgumentInRange(index, 0, text.length(), "index"); + if (mText == null || !mText.contentEquals(text)) { + mText = text.toString(); + } + mWordIterator.setText(mText); + mStartIndex = index; + mDelegate.logEvent(SelectionEvent.selectionStarted(0)); + } catch (Exception e) { + // Avoid crashes due to logging. + Log.d(LOG_TAG, e.getMessage()); + } + } + + public void logSelectionModified(int start, int end, + @Nullable TextClassification classification, @Nullable TextSelection selection) { + try { + Preconditions.checkArgumentInRange(start, 0, mText.length(), "start"); + Preconditions.checkArgumentInRange(end, start, mText.length(), "end"); + int[] wordIndices = getWordDelta(start, end); + if (selection != null) { + mDelegate.logEvent(SelectionEvent.selectionModified( + wordIndices[0], wordIndices[1], selection)); + } else if (classification != null) { + mDelegate.logEvent(SelectionEvent.selectionModified( + wordIndices[0], wordIndices[1], classification)); + } else { + mDelegate.logEvent(SelectionEvent.selectionModified( + wordIndices[0], wordIndices[1])); + } + } catch (Exception e) { + // Avoid crashes due to logging. + Log.d(LOG_TAG, e.getMessage()); + } + } + + public void logSelectionAction( + int start, int end, + @SelectionEvent.ActionType int action, + @Nullable TextClassification classification) { + try { + Preconditions.checkArgumentInRange(start, 0, mText.length(), "start"); + Preconditions.checkArgumentInRange(end, start, mText.length(), "end"); + int[] wordIndices = getWordDelta(start, end); + if (classification != null) { + mDelegate.logEvent(SelectionEvent.selectionAction( + wordIndices[0], wordIndices[1], action, classification)); + } else { + mDelegate.logEvent(SelectionEvent.selectionAction( + wordIndices[0], wordIndices[1], action)); + } + } catch (Exception e) { + // Avoid crashes due to logging. + Log.d(LOG_TAG, e.getMessage()); + } + } + + public boolean isEditTextLogger() { + return mEditTextLogger; + } + + private int[] getWordDelta(int start, int end) { + int[] wordIndices = new int[2]; + + if (start == mStartIndex) { + wordIndices[0] = 0; + } else if (start < mStartIndex) { + wordIndices[0] = -countWordsForward(start); + } else { // start > mStartIndex + wordIndices[0] = countWordsBackward(start); + + // For the selection start index, avoid counting a partial word backwards. + if (!mWordIterator.isBoundary(start) + && !isWhitespace( + mWordIterator.preceding(start), + mWordIterator.following(start))) { + // We counted a partial word. Remove it. + wordIndices[0]--; + } + } + + if (end == mStartIndex) { + wordIndices[1] = 0; + } else if (end < mStartIndex) { + wordIndices[1] = -countWordsForward(end); + } else { // end > mStartIndex + wordIndices[1] = countWordsBackward(end); + } + + return wordIndices; + } + + private int countWordsBackward(int from) { + Preconditions.checkArgument(from >= mStartIndex); + int wordCount = 0; + int offset = from; + while (offset > mStartIndex) { + int start = mWordIterator.preceding(offset); + if (!isWhitespace(start, offset)) { + wordCount++; + } + offset = start; + } + return wordCount; + } + + private int countWordsForward(int from) { + Preconditions.checkArgument(from <= mStartIndex); + int wordCount = 0; + int offset = from; + while (offset < mStartIndex) { + int end = mWordIterator.following(offset); + if (!isWhitespace(offset, end)) { + wordCount++; + } + offset = end; + } + return wordCount; + } + + private boolean isWhitespace(int start, int end) { + return PATTERN_WHITESPACE.matcher(mText.substring(start, end)).matches(); } } @@ -325,7 +538,7 @@ final class SelectionActionModeHelper { private static final class TextClassificationAsyncTask extends AsyncTask { - private final int mTimeOutDuration; + private final long mTimeOutDuration; private final Supplier mSelectionResultSupplier; private final Consumer mSelectionResultCallback; private final TextView mTextView; @@ -338,7 +551,7 @@ final class SelectionActionModeHelper { * @param selectionResultCallback receives the selection results. Runs on the UiThread */ TextClassificationAsyncTask( - @NonNull TextView textView, int timeOut, + @NonNull TextView textView, long timeOut, @NonNull Supplier selectionResultSupplier, @NonNull Consumer selectionResultCallback) { super(textView != null ? textView.getHandler() : null); @@ -347,7 +560,7 @@ final class SelectionActionModeHelper { mSelectionResultSupplier = Preconditions.checkNotNull(selectionResultSupplier); mSelectionResultCallback = Preconditions.checkNotNull(selectionResultCallback); // Make a copy of the original text. - mOriginalText = mTextView.getText().toString(); + mOriginalText = getText(mTextView).toString(); } @Override @@ -363,7 +576,7 @@ final class SelectionActionModeHelper { @Override @UiThread protected void onPostExecute(SelectionResult result) { - result = TextUtils.equals(mOriginalText, mTextView.getText()) ? result : null; + result = TextUtils.equals(mOriginalText, getText(mTextView)) ? result : null; mSelectionResultCallback.accept(result); } @@ -393,8 +606,6 @@ final class SelectionActionModeHelper { /** End index relative to mText. */ private int mSelectionEnd; private LocaleList mLocales; - /** A tag for the classifier that returned the latest smart selection. */ - private String mSelectionTag = ""; /** Trimmed text starting from mTrimStart in mText. */ private CharSequence mTrimmedText; @@ -412,15 +623,17 @@ final class SelectionActionModeHelper { private LocaleList mLastClassificationLocales; private SelectionResult mLastClassificationResult; + /** Whether the TextClassifier has been initialized. */ + private boolean mHot; + TextClassificationHelper(TextClassifier textClassifier, CharSequence text, int selectionStart, int selectionEnd, LocaleList locales) { - reset(textClassifier, text, selectionStart, selectionEnd, true, locales); + init(textClassifier, text, selectionStart, selectionEnd, locales); } @UiThread - public void reset(TextClassifier textClassifier, - CharSequence text, int selectionStart, int selectionEnd, - boolean resetSelectionTag, LocaleList locales) { + public void init(TextClassifier textClassifier, + CharSequence text, int selectionStart, int selectionEnd, LocaleList locales) { mTextClassifier = Preconditions.checkNotNull(textClassifier); mText = Preconditions.checkNotNull(text).toString(); mLastClassificationText = null; // invalidate. @@ -428,13 +641,46 @@ final class SelectionActionModeHelper { mSelectionStart = selectionStart; mSelectionEnd = selectionEnd; mLocales = locales; - if (resetSelectionTag) { - mSelectionTag = ""; - } } @WorkerThread public SelectionResult classifyText() { + mHot = true; + return performClassification(null /* selection */); + } + + @WorkerThread + public SelectionResult suggestSelection() { + mHot = true; + trimText(); + final TextSelection selection = mTextClassifier.suggestSelection( + mTrimmedText, mRelativeStart, mRelativeEnd, mLocales); + // Do not classify new selection boundaries if TextClassifier should be dark launched. + if (!mTextClassifier.getSettings().isDarkLaunch()) { + mSelectionStart = Math.max(0, selection.getSelectionStartIndex() + mTrimStart); + mSelectionEnd = Math.min( + mText.length(), selection.getSelectionEndIndex() + mTrimStart); + } + return performClassification(selection); + } + + /** + * Maximum time (in milliseconds) to wait for a textclassifier result before timing out. + */ + // TODO: Consider making this a ViewConfiguration. + public long getTimeoutDuration() { + if (mHot) { + return 200; + } else { + // Return a slightly larger number than usual when the TextClassifier is first + // initialized. Initialization would usually take longer than subsequent calls to + // the TextClassifier. The impact of this on the UI is that we do not show the + // selection handles or toolbar until after this timeout. + return 500; + } + } + + private SelectionResult performClassification(@Nullable TextSelection selection) { if (!Objects.equals(mText, mLastClassificationText) || mSelectionStart != mLastClassificationSelectionStart || mSelectionEnd != mLastClassificationSelectionEnd @@ -450,27 +696,13 @@ final class SelectionActionModeHelper { mSelectionStart, mSelectionEnd, mTextClassifier.classifyText( - mTrimmedText, mRelativeStart, mRelativeEnd, mLocales)); + mTrimmedText, mRelativeStart, mRelativeEnd, mLocales), + selection); } return mLastClassificationResult; } - @WorkerThread - public SelectionResult suggestSelection() { - trimText(); - final TextSelection sel = mTextClassifier.suggestSelection( - mTrimmedText, mRelativeStart, mRelativeEnd, mLocales); - mSelectionStart = Math.max(0, sel.getSelectionStartIndex() + mTrimStart); - mSelectionEnd = Math.min(mText.length(), sel.getSelectionEndIndex() + mTrimStart); - mSelectionTag = sel.getSourceClassifier(); - return classifyText(); - } - - String getSelectionTag() { - return mSelectionTag; - } - private void trimText() { mTrimStart = Math.max(0, mSelectionStart - TRIM_DELTA); final int referenceEnd = Math.min(mText.length(), mSelectionEnd + TRIM_DELTA); @@ -487,11 +719,45 @@ final class SelectionActionModeHelper { private final int mStart; private final int mEnd; private final TextClassification mClassification; + @Nullable private final TextSelection mSelection; - SelectionResult(int start, int end, TextClassification classification) { + SelectionResult(int start, int end, + TextClassification classification, @Nullable TextSelection selection) { mStart = start; mEnd = end; mClassification = Preconditions.checkNotNull(classification); + mSelection = selection; + } + } + + @SelectionEvent.ActionType + private static int getActionType(int menuItemId) { + switch (menuItemId) { + case TextView.ID_SELECT_ALL: + return SelectionEvent.ActionType.SELECT_ALL; + case TextView.ID_CUT: + return SelectionEvent.ActionType.CUT; + case TextView.ID_COPY: + return SelectionEvent.ActionType.COPY; + case TextView.ID_PASTE: // fall through + case TextView.ID_PASTE_AS_PLAIN_TEXT: + return SelectionEvent.ActionType.PASTE; + case TextView.ID_SHARE: + return SelectionEvent.ActionType.SHARE; + case TextView.ID_ASSIST: + return SelectionEvent.ActionType.SMART_SHARE; + default: + return SelectionEvent.ActionType.OTHER; + } + } + + private static CharSequence getText(TextView textView) { + // Extracts the textView's text. + // TODO: Investigate why/when TextView.getText() is null. + final CharSequence text = textView.getText(); + if (text != null) { + return text; } + return ""; } } diff --git a/core/java/android/widget/TabHost.java b/core/java/android/widget/TabHost.java index 8de17c072b5950055cd2d03e6b9871d3819e2704..8696d0d5df7fbf68057798ff28bb5c16725f2526 100644 --- a/core/java/android/widget/TabHost.java +++ b/core/java/android/widget/TabHost.java @@ -146,12 +146,17 @@ mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1"); // and relays them to the tab content. mTabKeyListener = new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { + if (KeyEvent.isModifierKey(keyCode)) { + return false; + } switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_DPAD_LEFT: case KeyEvent.KEYCODE_DPAD_RIGHT: case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_DPAD_DOWN: + case KeyEvent.KEYCODE_TAB: + case KeyEvent.KEYCODE_SPACE: case KeyEvent.KEYCODE_ENTER: return false; diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java index 05f7c0a1ee08234363a8571cf9f5458665013a2a..f8b6837e2d395cc5237d1027cd9e03488983ab8e 100644 --- a/core/java/android/widget/TabWidget.java +++ b/core/java/android/widget/TabWidget.java @@ -61,7 +61,10 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { // This value will be set to 0 as soon as the first tab is added to TabHost. private int mSelectedTab = -1; + @Nullable private Drawable mLeftStrip; + + @Nullable private Drawable mRightStrip; private boolean mDrawBottomStrips = true; @@ -374,23 +377,36 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener { final Drawable leftStrip = mLeftStrip; final Drawable rightStrip = mRightStrip; - leftStrip.setState(selectedChild.getDrawableState()); - rightStrip.setState(selectedChild.getDrawableState()); + if (leftStrip != null) { + leftStrip.setState(selectedChild.getDrawableState()); + } + if (rightStrip != null) { + rightStrip.setState(selectedChild.getDrawableState()); + } if (mStripMoved) { final Rect bounds = mBounds; bounds.left = selectedChild.getLeft(); bounds.right = selectedChild.getRight(); final int myHeight = getHeight(); - leftStrip.setBounds(Math.min(0, bounds.left - leftStrip.getIntrinsicWidth()), - myHeight - leftStrip.getIntrinsicHeight(), bounds.left, myHeight); - rightStrip.setBounds(bounds.right, myHeight - rightStrip.getIntrinsicHeight(), - Math.max(getWidth(), bounds.right + rightStrip.getIntrinsicWidth()), myHeight); + if (leftStrip != null) { + leftStrip.setBounds(Math.min(0, bounds.left - leftStrip.getIntrinsicWidth()), + myHeight - leftStrip.getIntrinsicHeight(), bounds.left, myHeight); + } + if (rightStrip != null) { + rightStrip.setBounds(bounds.right, myHeight - rightStrip.getIntrinsicHeight(), + Math.max(getWidth(), bounds.right + rightStrip.getIntrinsicWidth()), + myHeight); + } mStripMoved = false; } - leftStrip.draw(canvas); - rightStrip.draw(canvas); + if (leftStrip != null) { + leftStrip.draw(canvas); + } + if (rightStrip != null) { + rightStrip.draw(canvas); + } } /** diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 9a924890fcd7e9ebeef88c03a5ddef73dbb50561..9826fa0b94a1b851d4c107d97e6f6073586f965b 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -374,6 +374,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private static final int KEY_DOWN_HANDLED_BY_KEY_LISTENER = 1; private static final int KEY_DOWN_HANDLED_BY_MOVEMENT_METHOD = 2; + private static final int FLOATING_TOOLBAR_SELECT_ALL_REFRESH_DELAY = 500; + // System wide time for last cut, copy or text changed action. static long sLastCutCopyOrTextChangedTime; @@ -5674,7 +5676,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return mTransformation instanceof PasswordTransformationMethod; } - private static boolean isPasswordInputType(int inputType) { + static boolean isPasswordInputType(int inputType) { final int variation = inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION); return variation @@ -8339,7 +8341,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } private boolean suggestedSizeFitsInSpace(int suggestedSizeInPx, RectF availableSpace) { - final CharSequence text = getText(); + final CharSequence text = mTransformed != null + ? mTransformed + : getText(); final int maxLines = getMaxLines(); if (mTempTextPaint == null) { mTempTextPaint = new TextPaint(); @@ -8405,7 +8409,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (mMaxMode != LINES) { desired = Math.min(desired, mMaximum); - } else if (cap && linecount > mMaximum && layout instanceof DynamicLayout) { + } else if (cap && linecount > mMaximum && (layout instanceof DynamicLayout + || layout instanceof BoringLayout)) { desired = layout.getLineTop(mMaximum); if (dr != null) { @@ -9360,7 +9365,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } - if (mEditor != null) mEditor.sendOnTextChanged(start, after); + if (mEditor != null) mEditor.sendOnTextChanged(start, before, after); } /** @@ -10318,7 +10323,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return; } - setText(value.getTextValue(), mBufferType, true, 0); + final CharSequence autofilledValue = value.getTextValue(); + + // First autofill it... + setText(autofilledValue, mBufferType, true, 0); + + // ...then move cursor to the end. + final CharSequence text = getText(); + if ((text instanceof Spannable)) { + Selection.setSelection((Spannable) text, text.length()); + } } @Override @@ -10862,6 +10876,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public boolean performLongClick() { boolean handled = false; + boolean performedHapticFeedback = false; if (mEditor != null) { mEditor.mIsBeingLongClicked = true; @@ -10869,6 +10884,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (super.performLongClick()) { handled = true; + performedHapticFeedback = true; } if (mEditor != null) { @@ -10877,7 +10893,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } if (handled) { - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + if (!performedHapticFeedback) { + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } if (mEditor != null) mEditor.mDiscardNextActionUp = true; } else { MetricsLogger.action( @@ -11138,6 +11156,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } boolean selectAllText() { + if (mEditor != null) { + // Hide the toolbar before changing the selection to avoid flickering. + mEditor.hideFloatingToolbar(FLOATING_TOOLBAR_SELECT_ALL_REFRESH_DELAY); + } final int length = mText.length(); Selection.setSelection((Spannable) mText, 0, length); return length > 0; diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java index de289bb9a27a6605bd67312216d6ea62c60446f7..ae6881e4e28cc1e8ad6683ca5c895a2fe014318a 100644 --- a/core/java/android/widget/TimePicker.java +++ b/core/java/android/widget/TimePicker.java @@ -366,8 +366,11 @@ public class TimePicker extends FrameLayout { void setMinute(@IntRange(from = 0, to = 59) int minute); int getMinute(); - void setDate(long date); - long getDate(); + void setDate(@IntRange(from = 0, to = 23) int hour, + @IntRange(from = 0, to = 59) int minute); + + void autofill(AutofillValue value); + AutofillValue getAutofillValue(); void setIs24Hour(boolean is24Hour); boolean is24Hour(); @@ -422,6 +425,11 @@ public class TimePicker extends FrameLayout { protected OnTimeChangedListener mOnTimeChangedListener; protected OnTimeChangedListener mAutoFillChangeListener; + // The value that was passed to autofill() - it must be stored because it getAutofillValue() + // must return the exact same value that was autofilled, otherwise the widget will not be + // properly highlighted after autofill(). + private long mAutofilledValue; + public AbstractTimePickerDelegate(@NonNull TimePicker delegator, @NonNull Context context) { mDelegator = delegator; mContext = context; @@ -439,19 +447,41 @@ public class TimePicker extends FrameLayout { } @Override - public void setDate(long date) { - Calendar cal = Calendar.getInstance(mLocale); - cal.setTimeInMillis(date); - setHour(cal.get(Calendar.HOUR_OF_DAY)); - setMinute(cal.get(Calendar.MINUTE)); + public final void autofill(AutofillValue value) { + if (value == null || !value.isDate()) { + Log.w(LOG_TAG, value + " could not be autofilled into " + this); + return; + } + + final long time = value.getDateValue(); + + final Calendar cal = Calendar.getInstance(mLocale); + cal.setTimeInMillis(time); + setDate(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE)); + + // Must set mAutofilledValue *after* calling subclass method to make sure the value + // returned by getAutofillValue() matches it. + mAutofilledValue = time; } @Override - public long getDate() { - Calendar cal = Calendar.getInstance(mLocale); + public final AutofillValue getAutofillValue() { + if (mAutofilledValue != 0) { + return AutofillValue.forDate(mAutofilledValue); + } + + final Calendar cal = Calendar.getInstance(mLocale); cal.set(Calendar.HOUR_OF_DAY, getHour()); cal.set(Calendar.MINUTE, getMinute()); - return cal.getTimeInMillis(); + return AutofillValue.forDate(cal.getTimeInMillis()); + } + + /** + * This method must be called every time the value of the hour and/or minute is changed by + * a subclass method. + */ + protected void resetAutofilledValue() { + mAutofilledValue = 0; } protected static class SavedState extends View.BaseSavedState { @@ -532,12 +562,7 @@ public class TimePicker extends FrameLayout { public void autofill(AutofillValue value) { if (!isEnabled()) return; - if (!value.isDate()) { - Log.w(LOG_TAG, value + " could not be autofilled into " + this); - return; - } - - mDelegate.setDate(value.getDateValue()); + mDelegate.autofill(value); } @Override @@ -547,6 +572,6 @@ public class TimePicker extends FrameLayout { @Override public AutofillValue getAutofillValue() { - return isEnabled() ? AutofillValue.forDate(mDelegate.getDate()) : null; + return isEnabled() ? mDelegate.getAutofillValue() : null; } } diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java index d3c83eefbe1f55d03e1a2f7edfc6ca2164838224..706b0ce225dc43f6108b037510ab0e9ee759eb95 100644 --- a/core/java/android/widget/TimePickerClockDelegate.java +++ b/core/java/android/widget/TimePickerClockDelegate.java @@ -26,6 +26,7 @@ import android.content.res.TypedArray; import android.icu.text.DecimalFormatSymbols; import android.os.Parcelable; import android.text.SpannableStringBuilder; +import android.text.TextUtils; import android.text.format.DateFormat; import android.text.format.DateUtils; import android.text.style.TtsSpan; @@ -41,6 +42,7 @@ import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; +import android.view.inputmethod.InputMethodManager; import android.widget.RadialTimePickerView.OnValueSelectedListener; import android.widget.TextInputTimePickerView.OnValueTypedListener; @@ -110,7 +112,11 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { private int mCurrentHour; private int mCurrentMinute; private boolean mIs24Hour; - private boolean mIsAmPmAtStart; + + // The portrait layout puts AM/PM at the right by default. + private boolean mIsAmPmAtLeft = false; + // The landscape layouts put AM/PM at the bottom by default. + private boolean mIsAmPmAtTop = false; // Localization data. private boolean mHourFormatShowLeadingZero; @@ -262,6 +268,10 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { mRadialTimePickerModeButton.setContentDescription( mTextInputPickerModeEnabledDescription); updateTextInputPicker(); + InputMethodManager imm = InputMethodManager.peekInstance(); + if (imm != null) { + imm.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); + } mRadialPickerModeEnabled = true; } } @@ -430,34 +440,78 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { if (mIs24Hour) { mAmPmLayout.setVisibility(View.GONE); } else { - // Ensure that AM/PM layout is in the correct position. + // Find the location of AM/PM based on locale information. final String dateTimePattern = DateFormat.getBestDateTimePattern(mLocale, "hm"); final boolean isAmPmAtStart = dateTimePattern.startsWith("a"); - setAmPmAtStart(isAmPmAtStart); - + setAmPmStart(isAmPmAtStart); updateAmPmLabelStates(mCurrentHour < 12 ? AM : PM); } } - private void setAmPmAtStart(boolean isAmPmAtStart) { - if (mIsAmPmAtStart != isAmPmAtStart) { - mIsAmPmAtStart = isAmPmAtStart; - - final RelativeLayout.LayoutParams params = - (RelativeLayout.LayoutParams) mAmPmLayout.getLayoutParams(); - if (params.getRule(RelativeLayout.RIGHT_OF) != 0 || - params.getRule(RelativeLayout.LEFT_OF) != 0) { - if (isAmPmAtStart) { - params.removeRule(RelativeLayout.RIGHT_OF); - params.addRule(RelativeLayout.LEFT_OF, mHourView.getId()); - } else { - params.removeRule(RelativeLayout.LEFT_OF); - params.addRule(RelativeLayout.RIGHT_OF, mMinuteView.getId()); - } + private void setAmPmStart(boolean isAmPmAtStart) { + final RelativeLayout.LayoutParams params = + (RelativeLayout.LayoutParams) mAmPmLayout.getLayoutParams(); + if (params.getRule(RelativeLayout.RIGHT_OF) != 0 + || params.getRule(RelativeLayout.LEFT_OF) != 0) { + // Horizontal mode, with AM/PM appearing to left/right of hours and minutes. + final boolean isAmPmAtLeft; + if (TextUtils.getLayoutDirectionFromLocale(mLocale) == View.LAYOUT_DIRECTION_LTR) { + isAmPmAtLeft = isAmPmAtStart; + } else { + isAmPmAtLeft = !isAmPmAtStart; + } + if (mIsAmPmAtLeft == isAmPmAtLeft) { + // AM/PM is already at the correct location. No change needed. + return; } - mAmPmLayout.setLayoutParams(params); + if (isAmPmAtLeft) { + params.removeRule(RelativeLayout.RIGHT_OF); + params.addRule(RelativeLayout.LEFT_OF, mHourView.getId()); + } else { + params.removeRule(RelativeLayout.LEFT_OF); + params.addRule(RelativeLayout.RIGHT_OF, mMinuteView.getId()); + } + mIsAmPmAtLeft = isAmPmAtLeft; + } else if (params.getRule(RelativeLayout.BELOW) != 0 + || params.getRule(RelativeLayout.ABOVE) != 0) { + // Vertical mode, with AM/PM appearing to top/bottom of hours and minutes. + if (mIsAmPmAtTop == isAmPmAtStart) { + // AM/PM is already at the correct location. No change needed. + return; + } + + final int otherViewId; + if (isAmPmAtStart) { + otherViewId = params.getRule(RelativeLayout.BELOW); + params.removeRule(RelativeLayout.BELOW); + params.addRule(RelativeLayout.ABOVE, otherViewId); + } else { + otherViewId = params.getRule(RelativeLayout.ABOVE); + params.removeRule(RelativeLayout.ABOVE); + params.addRule(RelativeLayout.BELOW, otherViewId); + } + + // Switch the top and bottom paddings on the other view. + final View otherView = mRadialTimePickerHeader.findViewById(otherViewId); + final int top = otherView.getPaddingTop(); + final int bottom = otherView.getPaddingBottom(); + final int left = otherView.getPaddingLeft(); + final int right = otherView.getPaddingRight(); + otherView.setPadding(left, bottom, right, top); + + mIsAmPmAtTop = isAmPmAtStart; } + + mAmPmLayout.setLayoutParams(params); + } + + @Override + public void setDate(int hour, int minute) { + setHourInternal(hour, FROM_EXTERNAL_API, true, false); + setMinuteInternal(minute, FROM_EXTERNAL_API, false); + + onTimeChanged(); } /** @@ -465,14 +519,16 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { */ @Override public void setHour(int hour) { - setHourInternal(hour, FROM_EXTERNAL_API, true); + setHourInternal(hour, FROM_EXTERNAL_API, true, true); } - private void setHourInternal(int hour, @ChangeSource int source, boolean announce) { + private void setHourInternal(int hour, @ChangeSource int source, boolean announce, + boolean notify) { if (mCurrentHour == hour) { return; } + resetAutofilledValue(); mCurrentHour = hour; updateHeaderHour(hour, announce); updateHeaderAmPm(); @@ -486,7 +542,9 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { } mDelegator.invalidate(); - onTimeChanged(); + if (notify) { + onTimeChanged(); + } } /** @@ -511,14 +569,15 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { */ @Override public void setMinute(int minute) { - setMinuteInternal(minute, FROM_EXTERNAL_API); + setMinuteInternal(minute, FROM_EXTERNAL_API, true); } - private void setMinuteInternal(int minute, @ChangeSource int source) { + private void setMinuteInternal(int minute, @ChangeSource int source, boolean notify) { if (mCurrentMinute == minute) { return; } + resetAutofilledValue(); mCurrentMinute = minute; updateHeaderMinute(minute, true); @@ -530,7 +589,9 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { } mDelegator.invalidate(); - onTimeChanged(); + if (notify) { + onTimeChanged(); + } } /** @@ -824,7 +885,7 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { valueChanged = true; } final boolean isTransition = mAllowAutoAdvance && autoAdvance; - setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition); + setHourInternal(newValue, FROM_RADIAL_PICKER, !isTransition, true); if (isTransition) { setCurrentItemShowing(MINUTE_INDEX, true, false); @@ -836,7 +897,7 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { if (getMinute() != newValue) { valueChanged = true; } - setMinuteInternal(newValue, FROM_RADIAL_PICKER); + setMinuteInternal(newValue, FROM_RADIAL_PICKER, true); break; } @@ -851,10 +912,10 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate { public void onValueChanged(int pickerType, int newValue) { switch (pickerType) { case TextInputTimePickerView.HOURS: - setHourInternal(newValue, FROM_INPUT_PICKER, false); + setHourInternal(newValue, FROM_INPUT_PICKER, false, true); break; case TextInputTimePickerView.MINUTES: - setMinuteInternal(newValue, FROM_INPUT_PICKER); + setMinuteInternal(newValue, FROM_INPUT_PICKER, true); break; case TextInputTimePickerView.AMPM: setAmOrPm(newValue); diff --git a/core/java/android/widget/TimePickerSpinnerDelegate.java b/core/java/android/widget/TimePickerSpinnerDelegate.java index 7a7d9a948dcc598a14760bb0e79229c0db4dc350..cc79b9c85784f92ed0b216c72f3ed19543301f54 100644 --- a/core/java/android/widget/TimePickerSpinnerDelegate.java +++ b/core/java/android/widget/TimePickerSpinnerDelegate.java @@ -283,6 +283,14 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate { mDivider.setText(separatorText); } + @Override + public void setDate(int hour, int minute) { + setCurrentHour(hour, false); + setCurrentMinute(minute, false); + + onTimeChanged(); + } + @Override public void setHour(int hour) { setCurrentHour(hour, true); @@ -293,6 +301,7 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate { if (currentHour == getHour()) { return; } + resetAutofilledValue(); if (!is24Hour()) { // convert [0,23] ordinal to wall clock display if (currentHour >= HOURS_IN_HALF_DAY) { @@ -328,11 +337,18 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate { @Override public void setMinute(int minute) { + setCurrentMinute(minute, true); + } + + private void setCurrentMinute(int minute, boolean notifyTimeChanged) { if (minute == getMinute()) { return; } + resetAutofilledValue(); mMinuteSpinner.setValue(minute); - onTimeChanged(); + if (notifyTimeChanged) { + onTimeChanged(); + } } @Override diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 54afc9553b0f73a35d5c992bf2fd41cd3067be14..6e0ba3413e8cab437f36ecf73f6d1ea72339d4a2 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -100,7 +100,7 @@ public class ChooserActivity extends ResolverActivity { private static final boolean DEBUG = false; private static final int QUERY_TARGET_SERVICE_LIMIT = 5; - private static final int WATCHDOG_TIMEOUT_MILLIS = 5000; + private static final int WATCHDOG_TIMEOUT_MILLIS = 2000; private Bundle mReplacementExtras; private IntentSender mChosenComponentSender; @@ -1450,11 +1450,16 @@ public class ChooserActivity extends ResolverActivity { getFirstRowPosition(rowPosition + 1)); int serviceSpacing = holder.row.getContext().getResources() .getDimensionPixelSize(R.dimen.chooser_service_spacing); - int top = rowPosition == 0 ? serviceSpacing : 0; - if (nextStartType != ChooserListAdapter.TARGET_SERVICE) { - setVertPadding(holder, top, serviceSpacing); + if (rowPosition == 0 && nextStartType != ChooserListAdapter.TARGET_SERVICE) { + // if the row is the only row for target service + setVertPadding(holder, 0, 0); } else { - setVertPadding(holder, top, 0); + int top = rowPosition == 0 ? serviceSpacing : 0; + if (nextStartType != ChooserListAdapter.TARGET_SERVICE) { + setVertPadding(holder, top, serviceSpacing); + } else { + setVertPadding(holder, top, 0); + } } } else { holder.row.setBackgroundColor(Color.TRANSPARENT); @@ -1470,10 +1475,8 @@ public class ChooserActivity extends ResolverActivity { } final int oldHeight = holder.row.getLayoutParams().height; - int measuredRowHeight = holder.measuredRowHeight + holder.row.getPaddingTop() - + holder.row.getPaddingBottom(); holder.row.getLayoutParams().height = Math.max(1, - (int) (measuredRowHeight * getRowScale(rowPosition))); + (int) (holder.measuredRowHeight * getRowScale(rowPosition))); if (holder.row.getLayoutParams().height != oldHeight) { holder.row.requestLayout(); } @@ -1582,8 +1585,8 @@ public class ChooserActivity extends ResolverActivity { } catch (RemoteException e) { Log.e(TAG, "Querying ChooserTargetService " + name + " failed.", e); mChooserActivity.unbindService(this); - destroy(); mChooserActivity.mServiceConnections.remove(this); + destroy(); } } } @@ -1599,7 +1602,6 @@ public class ChooserActivity extends ResolverActivity { } mChooserActivity.unbindService(this); - destroy(); mChooserActivity.mServiceConnections.remove(this); if (mChooserActivity.mServiceConnections.isEmpty()) { mChooserActivity.mChooserHandler.removeMessages( @@ -1607,6 +1609,7 @@ public class ChooserActivity extends ResolverActivity { mChooserActivity.sendVoiceChoicesIfNeeded(); } mConnectedComponent = null; + destroy(); } } diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index a44fd675a709abe49b3da8fda0d9a7fc7745c96c..4275e0b43a4ea0bb4560efd79f11106fa61b30ee 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -66,7 +66,7 @@ interface IBatteryStats { void noteSyncStart(String name, int uid); void noteSyncFinish(String name, int uid); void noteJobStart(String name, int uid); - void noteJobFinish(String name, int uid); + void noteJobFinish(String name, int uid, int stopReason); void noteStartWakelock(int uid, int pid, String name, String historyName, int type, boolean unimportantForLogging); diff --git a/core/java/com/android/internal/app/LocalePickerWithRegion.java b/core/java/com/android/internal/app/LocalePickerWithRegion.java index d0719eeca04e4f2f587dde58bab292cb4c72adb1..3d5cd0f5847b2c3f6002c81def4f50c780fbed3f 100644 --- a/core/java/com/android/internal/app/LocalePickerWithRegion.java +++ b/core/java/com/android/internal/app/LocalePickerWithRegion.java @@ -238,7 +238,7 @@ public class LocalePickerWithRegion extends ListFragment implements SearchView.O mSearchView.setOnQueryTextListener(this); // Restore previous search status - if (!TextUtils.isEmpty(mPreviousSearch)) { + if (mPreviousSearch != null) { searchMenuItem.expandActionView(); mSearchView.setIconified(false); mSearchView.setActivated(true); diff --git a/core/java/com/android/internal/app/MediaRouteControllerDialog.java b/core/java/com/android/internal/app/MediaRouteControllerDialog.java index 635a868d359a3044f5284ffd2382abde011a765e..61e63d1b30de5645b50a2987c4582d68cc063ec0 100644 --- a/core/java/com/android/internal/app/MediaRouteControllerDialog.java +++ b/core/java/com/android/internal/app/MediaRouteControllerDialog.java @@ -72,6 +72,7 @@ public class MediaRouteControllerDialog extends AlertDialog { private boolean mVolumeSliderTouched; private View mControlView; + private boolean mAttachedToWindow; public MediaRouteControllerDialog(Context context, int theme) { super(context, theme); @@ -215,6 +216,7 @@ public class MediaRouteControllerDialog extends AlertDialog { @Override public void onAttachedToWindow() { super.onAttachedToWindow(); + mAttachedToWindow = true; mRouter.addCallback(0, mCallback, MediaRouter.CALLBACK_FLAG_UNFILTERED_EVENTS); update(); @@ -223,6 +225,7 @@ public class MediaRouteControllerDialog extends AlertDialog { @Override public void onDetachedFromWindow() { mRouter.removeCallback(mCallback); + mAttachedToWindow = false; super.onDetachedFromWindow(); } @@ -260,7 +263,14 @@ public class MediaRouteControllerDialog extends AlertDialog { mCurrentIconDrawable = icon; if (icon instanceof AnimationDrawable) { AnimationDrawable animDrawable = (AnimationDrawable) icon; - if (!animDrawable.isRunning()) { + if (!mAttachedToWindow && !mRoute.isConnecting()) { + // When the route is already connected before the view is attached, show the + // last frame of the connected animation immediately. + if (animDrawable.isRunning()) { + animDrawable.stop(); + } + icon = animDrawable.getFrame(animDrawable.getNumberOfFrames() - 1); + } else if (!animDrawable.isRunning()) { animDrawable.start(); } } diff --git a/core/java/com/android/internal/app/NightDisplayController.java b/core/java/com/android/internal/app/NightDisplayController.java index 860c5c4c3d3b6db88e8d0a70273ba26afc92529d..7a1383c7a01cedae05454848a6b244c0813d7e79 100644 --- a/core/java/com/android/internal/app/NightDisplayController.java +++ b/core/java/com/android/internal/app/NightDisplayController.java @@ -32,8 +32,12 @@ import com.android.internal.R; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.Calendar; -import java.util.Locale; +import java.time.DateTimeException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.format.DateTimeParseException; /** * Controller for managing Night display settings. @@ -116,8 +120,9 @@ public final class NightDisplayController { */ public boolean setActivated(boolean activated) { if (isActivated() != activated) { - Secure.putLongForUser(mContext.getContentResolver(), - Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, System.currentTimeMillis(), + Secure.putStringForUser(mContext.getContentResolver(), + Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, + LocalDateTime.now().toString(), mUserId); } return Secure.putIntForUser(mContext.getContentResolver(), @@ -128,17 +133,22 @@ public final class NightDisplayController { * Returns the time when Night display's activation state last changed, or {@code null} if it * has never been changed. */ - public Calendar getLastActivatedTime() { + public LocalDateTime getLastActivatedTime() { final ContentResolver cr = mContext.getContentResolver(); - final long lastActivatedTimeMillis = Secure.getLongForUser( - cr, Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, -1, mUserId); - if (lastActivatedTimeMillis < 0) { - return null; + final String lastActivatedTime = Secure.getStringForUser( + cr, Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, mUserId); + if (lastActivatedTime != null) { + try { + return LocalDateTime.parse(lastActivatedTime); + } catch (DateTimeParseException ignored) {} + // Uses the old epoch time. + try { + return LocalDateTime.ofInstant( + Instant.ofEpochMilli(Long.parseLong(lastActivatedTime)), + ZoneId.systemDefault()); + } catch (DateTimeException|NumberFormatException ignored) {} } - - final Calendar lastActivatedTime = Calendar.getInstance(); - lastActivatedTime.setTimeInMillis(lastActivatedTimeMillis); - return lastActivatedTime; + return null; } /** @@ -183,8 +193,10 @@ public final class NightDisplayController { } if (getAutoMode() != autoMode) { - Secure.putLongForUser(mContext.getContentResolver(), - Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, -1L, mUserId); + Secure.putStringForUser(mContext.getContentResolver(), + Secure.NIGHT_DISPLAY_LAST_ACTIVATED_TIME, + null, + mUserId); } return Secure.putIntForUser(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_AUTO_MODE, autoMode, mUserId); @@ -206,7 +218,7 @@ public final class NightDisplayController { R.integer.config_defaultNightDisplayCustomStartTime); } - return LocalTime.valueOf(startTimeValue); + return LocalTime.ofSecondOfDay(startTimeValue / 1000); } /** @@ -221,7 +233,7 @@ public final class NightDisplayController { throw new IllegalArgumentException("startTime cannot be null"); } return Secure.putIntForUser(mContext.getContentResolver(), - Secure.NIGHT_DISPLAY_CUSTOM_START_TIME, startTime.toMillis(), mUserId); + Secure.NIGHT_DISPLAY_CUSTOM_START_TIME, startTime.toSecondOfDay() * 1000, mUserId); } /** @@ -240,7 +252,7 @@ public final class NightDisplayController { R.integer.config_defaultNightDisplayCustomEndTime); } - return LocalTime.valueOf(endTimeValue); + return LocalTime.ofSecondOfDay(endTimeValue / 1000); } /** @@ -255,7 +267,7 @@ public final class NightDisplayController { throw new IllegalArgumentException("endTime cannot be null"); } return Secure.putIntForUser(mContext.getContentResolver(), - Secure.NIGHT_DISPLAY_CUSTOM_END_TIME, endTime.toMillis(), mUserId); + Secure.NIGHT_DISPLAY_CUSTOM_END_TIME, endTime.toSecondOfDay() * 1000, mUserId); } /** @@ -378,106 +390,6 @@ public final class NightDisplayController { return context.getResources().getBoolean(R.bool.config_nightDisplayAvailable); } - /** - * A time without a time-zone or date. - */ - public static class LocalTime { - - /** - * The hour of the day from 0 - 23. - */ - public final int hourOfDay; - /** - * The minute within the hour from 0 - 59. - */ - public final int minute; - - public LocalTime(int hourOfDay, int minute) { - if (hourOfDay < 0 || hourOfDay > 23) { - throw new IllegalArgumentException("Invalid hourOfDay: " + hourOfDay); - } else if (minute < 0 || minute > 59) { - throw new IllegalArgumentException("Invalid minute: " + minute); - } - - this.hourOfDay = hourOfDay; - this.minute = minute; - } - - /** - * Returns the first date time corresponding to this local time that occurs before the - * provided date time. - * - * @param time the date time to compare against - * @return the prior date time corresponding to this local time - */ - public Calendar getDateTimeBefore(Calendar time) { - final Calendar c = Calendar.getInstance(); - c.set(Calendar.YEAR, time.get(Calendar.YEAR)); - c.set(Calendar.DAY_OF_YEAR, time.get(Calendar.DAY_OF_YEAR)); - - c.set(Calendar.HOUR_OF_DAY, hourOfDay); - c.set(Calendar.MINUTE, minute); - c.set(Calendar.SECOND, 0); - c.set(Calendar.MILLISECOND, 0); - - // Check if the local time has past, if so return the same time tomorrow. - if (c.after(time)) { - c.add(Calendar.DATE, -1); - } - - return c; - } - - /** - * Returns the first date time corresponding to this local time that occurs after the - * provided date time. - * - * @param time the date time to compare against - * @return the next date time corresponding to this local time - */ - public Calendar getDateTimeAfter(Calendar time) { - final Calendar c = Calendar.getInstance(); - c.set(Calendar.YEAR, time.get(Calendar.YEAR)); - c.set(Calendar.DAY_OF_YEAR, time.get(Calendar.DAY_OF_YEAR)); - - c.set(Calendar.HOUR_OF_DAY, hourOfDay); - c.set(Calendar.MINUTE, minute); - c.set(Calendar.SECOND, 0); - c.set(Calendar.MILLISECOND, 0); - - // Check if the local time has past, if so return the same time tomorrow. - if (c.before(time)) { - c.add(Calendar.DATE, 1); - } - - return c; - } - - /** - * Returns a local time corresponding the given number of milliseconds from midnight. - * - * @param millis the number of milliseconds from midnight - * @return the corresponding local time - */ - private static LocalTime valueOf(int millis) { - final int hourOfDay = (millis / 3600000) % 24; - final int minutes = (millis / 60000) % 60; - return new LocalTime(hourOfDay, minutes); - } - - /** - * Returns the local time represented as milliseconds from midnight. - */ - private int toMillis() { - return hourOfDay * 3600000 + minute * 60000; - } - - @Override - public String toString() { - return String.format(Locale.US, "%02d:%02d", hourOfDay, minute); - } - } - /** * Callback invoked whenever the Night display settings are changed. */ diff --git a/core/java/com/android/internal/app/PlatLogoActivity.java b/core/java/com/android/internal/app/PlatLogoActivity.java index 36ab394f4a79d63335f2fde32e5870cd5787b4e4..b22ce5e2a6ee74e5dd44ff028f92bb03c8e77ad9 100644 --- a/core/java/com/android/internal/app/PlatLogoActivity.java +++ b/core/java/com/android/internal/app/PlatLogoActivity.java @@ -53,8 +53,7 @@ import android.widget.FrameLayout; import android.widget.ImageView; public class PlatLogoActivity extends Activity { - public static final boolean REVEAL_THE_NAME = false; - public static final boolean FINISH = false; + public static final boolean FINISH = true; FrameLayout mLayout; int mTapCount; @@ -85,15 +84,18 @@ public class PlatLogoActivity extends Activity { im.setAlpha(0f); im.setBackground(new RippleDrawable( - ColorStateList.valueOf(0xFFFFFFFF), + ColorStateList.valueOf(0xFF776677), getDrawable(com.android.internal.R.drawable.platlogo), null)); -// im.setOutlineProvider(new ViewOutlineProvider() { -// @Override -// public void getOutline(View view, Outline outline) { -// outline.setOval(0, 0, view.getWidth(), view.getHeight()); -// } -// }); + im.setOutlineProvider(new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + final int w = view.getWidth(); + final int h = view.getHeight(); + outline.setOval((int)(w*.125), (int)(h*.125), (int)(w*.96), (int)(h*.96)); + } + }); + im.setElevation(12f*dp); im.setClickable(true); im.setOnClickListener(new View.OnClickListener() { @Override @@ -103,18 +105,6 @@ public class PlatLogoActivity extends Activity { public boolean onLongClick(View v) { if (mTapCount < 5) return false; - if (REVEAL_THE_NAME) { - final Drawable overlay = getDrawable( - com.android.internal.R.drawable.platlogo_m); - overlay.setBounds(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); - im.getOverlay().clear(); - im.getOverlay().add(overlay); - overlay.setAlpha(0); - ObjectAnimator.ofInt(overlay, "alpha", 0, 255) - .setDuration(500) - .start(); - } - final ContentResolver cr = getContentResolver(); if (Settings.System.getLong(cr, Settings.System.EGG_MODE, 0) == 0) { diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 5c1bafdbca3f96a6325f0a43a3bb41ad1bdf94bb..ceb06f51110874b36f08c5d9e8e14ef3c52414c0 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -36,6 +36,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -50,6 +51,7 @@ import android.os.UserManager; import android.provider.MediaStore; import android.provider.Settings; import android.text.TextUtils; +import android.util.IconDrawableFactory; import android.util.Log; import android.util.Slog; import android.view.LayoutInflater; @@ -120,6 +122,8 @@ public class ResolverActivity extends Activity { /** See {@link #setRetainInOnStop}. */ private boolean mRetainInOnStop; + IconDrawableFactory mIconFactory; + private final PackageMonitor mPackageMonitor = new PackageMonitor() { @Override public void onSomePackagesChanged() { mAdapter.handlePackagesChanged(); @@ -330,6 +334,13 @@ public class ResolverActivity extends Activity { : MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_NONE_FEATURED, intent.getAction() + ":" + intent.getType() + ":" + (categories != null ? Arrays.toString(categories.toArray()) : "")); + mIconFactory = IconDrawableFactory.newInstance(this, true); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + mAdapter.handlePackagesChanged(); } /** @@ -468,20 +479,20 @@ public class ResolverActivity extends Activity { if (ri.resolvePackageName != null && ri.icon != 0) { dr = getIcon(mPm.getResourcesForApplication(ri.resolvePackageName), ri.icon); if (dr != null) { - return dr; + return mIconFactory.getShadowedIcon(dr); } } final int iconRes = ri.getIconResource(); if (iconRes != 0) { dr = getIcon(mPm.getResourcesForApplication(ri.activityInfo.packageName), iconRes); if (dr != null) { - return dr; + return mIconFactory.getShadowedIcon(dr); } } } catch (NameNotFoundException e) { Log.e(TAG, "Couldn't find resources for package", e); } - return ri.loadIcon(mPm); + return mIconFactory.getBadgedIcon(ri.activityInfo.applicationInfo); } @Override @@ -1930,7 +1941,8 @@ public class ResolverActivity extends Activity { final int checkedPos = mAdapterView.getCheckedItemPosition(); final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; if (!useLayoutWithDefault() - && (!hasValidSelection || mLastSelected != checkedPos)) { + && (!hasValidSelection || mLastSelected != checkedPos) + && mAlwaysButton != null) { setAlwaysButtonEnabled(hasValidSelection, checkedPos, true); mOnceButton.setEnabled(hasValidSelection); if (hasValidSelection) { diff --git a/core/java/com/android/internal/app/ResolverComparator.java b/core/java/com/android/internal/app/ResolverComparator.java index a0f58a99f625d4b8e19620e1186aab646da101b5..77cfc2fc5bd416dc4954d52935cf1066a6262ee8 100644 --- a/core/java/com/android/internal/app/ResolverComparator.java +++ b/core/java/com/android/internal/app/ResolverComparator.java @@ -30,6 +30,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.SharedPreferences; import android.content.ServiceConnection; +import android.metrics.LogMaker; import android.os.Environment; import android.os.Handler; import android.os.IBinder; @@ -46,6 +47,8 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; import com.android.internal.app.ResolverActivity.ResolvedComponentInfo; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import java.io.File; import java.lang.InterruptedException; @@ -99,6 +102,8 @@ class ResolverComparator implements Comparator { private String mContentType; private String[] mAnnotations; private String mAction; + private ComponentName mResolvedRankerName; + private ComponentName mRankerServiceName; private IResolverRankerService mRanker; private ResolverRankerServiceConnection mConnection; private AfterCompute mAfterCompute; @@ -119,9 +124,17 @@ class ResolverComparator implements Comparator { if (receivedTargets != null && mTargets != null && receivedTargets.size() == mTargets.size()) { final int size = mTargets.size(); + boolean isUpdated = false; for (int i = 0; i < size; ++i) { - mTargets.get(i).setSelectProbability( - receivedTargets.get(i).getSelectProbability()); + final float predictedProb = + receivedTargets.get(i).getSelectProbability(); + if (predictedProb != mTargets.get(i).getSelectProbability()) { + mTargets.get(i).setSelectProbability(predictedProb); + isUpdated = true; + } + } + if (isUpdated) { + mRankerServiceName = mResolvedRankerName; } } else { Log.e(TAG, "Sizes of sent and received ResolverTargets diff."); @@ -170,6 +183,7 @@ class ResolverComparator implements Comparator { mContentType = intent.getType(); getContentAnnotations(intent); mAction = intent.getAction(); + mRankerServiceName = new ComponentName(mContext, this.getClass()); } // get annotations of content from intent. @@ -323,11 +337,13 @@ class ResolverComparator implements Comparator { final ResolverTarget rhsTarget = mTargetsDict.get(new ComponentName( rhs.activityInfo.packageName, rhs.activityInfo.name)); - final int selectProbabilityDiff = Float.compare( + if (lhsTarget != null && rhsTarget != null) { + final int selectProbabilityDiff = Float.compare( rhsTarget.getSelectProbability(), lhsTarget.getSelectProbability()); - if (selectProbabilityDiff != 0) { - return selectProbabilityDiff > 0 ? 1 : -1; + if (selectProbabilityDiff != 0) { + return selectProbabilityDiff > 0 ? 1 : -1; + } } } } @@ -361,7 +377,15 @@ class ResolverComparator implements Comparator { try { int selectedPos = new ArrayList(mTargetsDict.keySet()) .indexOf(componentName); - if (selectedPos > 0) { + if (selectedPos >= 0 && mTargets != null) { + final float selectedProbability = getScore(componentName); + int order = 0; + for (ResolverTarget target : mTargets) { + if (target.getSelectProbability() > selectedProbability) { + order++; + } + } + logMetrics(order); mRanker.train(mTargets, selectedPos); } else { if (DEBUG) { @@ -392,6 +416,19 @@ class ResolverComparator implements Comparator { } } + // records metrics for evaluation. + private void logMetrics(int selectedPos) { + if (mRankerServiceName != null) { + MetricsLogger metricsLogger = new MetricsLogger(); + LogMaker log = new LogMaker(MetricsEvent.ACTION_TARGET_SELECTED); + log.setComponentName(mRankerServiceName); + int isCategoryUsed = (mAnnotations == null) ? 0 : 1; + log.addTaggedData(MetricsEvent.FIELD_IS_CATEGORY_USED, isCategoryUsed); + log.addTaggedData(MetricsEvent.FIELD_RANKED_POSITION, selectedPos); + metricsLogger.write(log); + } + } + // connect to a ranking service. private void initRanker(Context context) { synchronized (mLock) { @@ -454,6 +491,7 @@ class ResolverComparator implements Comparator { if (DEBUG) { Log.d(TAG, "Succeeded to retrieve a ranker: " + componentName); } + mResolvedRankerName = componentName; intent.setComponent(componentName); return intent; } @@ -523,6 +561,8 @@ class ResolverComparator implements Comparator { private void reset() { mTargetsDict.clear(); mTargets = null; + mRankerServiceName = new ComponentName(mContext, this.getClass()); + mResolvedRankerName = null; startWatchDog(WATCHDOG_TIMEOUT_MILLIS); initRanker(mContext); } diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index 94706687f6de486bd89b722e69218cb3ed1d93c2..e0a40536f255bcb9626f6c7d094f1c81bf3aec06 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -196,7 +196,6 @@ public final class ProcessState { ProcessState pnew = new ProcessState(this, mPackage, mUid, mVersion, mName, now); pnew.mDurations.addDurations(mDurations); pnew.mPssTable.copyFrom(mPssTable, PSS_COUNT); - pnew.mNumExcessiveWake = mNumExcessiveWake; pnew.mNumExcessiveCpu = mNumExcessiveCpu; pnew.mNumCachedKill = mNumCachedKill; pnew.mMinCachedKillPss = mMinCachedKillPss; @@ -250,7 +249,6 @@ public final class ProcessState { public void add(ProcessState other) { mDurations.addDurations(other.mDurations); mPssTable.mergeStats(other.mPssTable); - mNumExcessiveWake += other.mNumExcessiveWake; mNumExcessiveCpu += other.mNumExcessiveCpu; if (other.mNumCachedKill > 0) { addCachedKill(other.mNumCachedKill, other.mMinCachedKillPss, @@ -264,7 +262,6 @@ public final class ProcessState { mStartTime = now; mLastPssState = STATE_NOTHING; mLastPssTime = 0; - mNumExcessiveWake = 0; mNumExcessiveCpu = 0; mNumCachedKill = 0; mMinCachedKillPss = mAvgCachedKillPss = mMaxCachedKillPss = 0; @@ -286,7 +283,7 @@ public final class ProcessState { out.writeInt(mMultiPackage ? 1 : 0); mDurations.writeToParcel(out); mPssTable.writeToParcel(out); - out.writeInt(mNumExcessiveWake); + out.writeInt(0); // was mNumExcessiveWake out.writeInt(mNumExcessiveCpu); out.writeInt(mNumCachedKill); if (mNumCachedKill > 0) { @@ -309,7 +306,7 @@ public final class ProcessState { if (!mPssTable.readFromParcel(in)) { return false; } - mNumExcessiveWake = in.readInt(); + in.readInt(); // was mNumExcessiveWake mNumExcessiveCpu = in.readInt(); mNumCachedKill = in.readInt(); if (mNumCachedKill > 0) { @@ -493,18 +490,6 @@ public final class ProcessState { } } - public void reportExcessiveWake(ArrayMap pkgList) { - ensureNotDead(); - mCommonProcess.mNumExcessiveWake++; - if (!mCommonProcess.mMultiPackage) { - return; - } - - for (int ip=pkgList.size()-1; ip>=0; ip--) { - pullFixedProc(pkgList, ip).mNumExcessiveWake++; - } - } - public void reportExcessiveCpu(ArrayMap pkgList) { ensureNotDead(); mCommonProcess.mNumExcessiveCpu++; @@ -895,10 +880,6 @@ public final class ProcessState { } } } - if (mNumExcessiveWake != 0) { - pw.print(prefix); pw.print("Killed for excessive wake locks: "); - pw.print(mNumExcessiveWake); pw.println(" times"); - } if (mNumExcessiveCpu != 0) { pw.print(prefix); pw.print("Killed for excessive CPU use: "); pw.print(mNumExcessiveCpu); pw.println(" times"); @@ -1072,7 +1053,7 @@ public final class ProcessState { dumpAllPssCheckin(pw); pw.println(); } - if (mNumExcessiveWake > 0 || mNumExcessiveCpu > 0 || mNumCachedKill > 0) { + if (mNumExcessiveCpu > 0 || mNumCachedKill > 0) { pw.print("pkgkills,"); pw.print(pkgName); pw.print(","); @@ -1082,7 +1063,7 @@ public final class ProcessState { pw.print(","); pw.print(DumpUtils.collapseString(pkgName, itemName)); pw.print(","); - pw.print(mNumExcessiveWake); + pw.print("0"); // was mNumExcessiveWake pw.print(","); pw.print(mNumExcessiveCpu); pw.print(","); @@ -1114,13 +1095,13 @@ public final class ProcessState { dumpAllPssCheckin(pw); pw.println(); } - if (mNumExcessiveWake > 0 || mNumExcessiveCpu > 0 || mNumCachedKill > 0) { + if (mNumExcessiveCpu > 0 || mNumCachedKill > 0) { pw.print("kills,"); pw.print(procName); pw.print(","); pw.print(uid); pw.print(","); - pw.print(mNumExcessiveWake); + pw.print("0"); // was mNumExcessiveWake pw.print(","); pw.print(mNumExcessiveCpu); pw.print(","); diff --git a/core/java/com/android/internal/app/procstats/SparseMappingTable.java b/core/java/com/android/internal/app/procstats/SparseMappingTable.java index f941836d2c099910cbd75ecf223a2a5746a74382..956ce99c0ad8df6674f1aa3d2d28e356a6dd86d5 100644 --- a/core/java/com/android/internal/app/procstats/SparseMappingTable.java +++ b/core/java/com/android/internal/app/procstats/SparseMappingTable.java @@ -646,7 +646,7 @@ public class SparseMappingTable { */ private static void logOrThrow(String message, Throwable th) { Slog.e(TAG, message, th); - if (Build.TYPE.equals("eng")) { + if (Build.IS_ENG) { throw new RuntimeException(message, th); } } diff --git a/core/java/com/android/internal/backup/LocalTransport.java b/core/java/com/android/internal/backup/LocalTransport.java index f76b702a1cccfeccf978e81ad1c48431995c9164..543bd0c4913d6868baeb0070958fd092a514cbe6 100644 --- a/core/java/com/android/internal/backup/LocalTransport.java +++ b/core/java/com/android/internal/backup/LocalTransport.java @@ -30,6 +30,7 @@ import android.os.ParcelFileDescriptor; import android.system.ErrnoException; import android.system.Os; import android.system.StructStat; +import android.util.ArrayMap; import android.util.Log; import com.android.org.bouncycastle.util.encoders.Base64; @@ -44,7 +45,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; -import static android.system.OsConstants.SEEK_CUR; /** * Backup transport for stashing stuff into a known location on disk, and @@ -70,9 +70,8 @@ public class LocalTransport extends BackupTransport { // The currently-active restore set always has the same (nonzero!) token private static final long CURRENT_SET_TOKEN = 1; - // Full backup size quota is set to reasonable value. + // Size quotas at reasonable values, similar to the current cloud-storage limits private static final long FULL_BACKUP_SIZE_QUOTA = 25 * 1024 * 1024; - private static final long KEY_VALUE_BACKUP_SIZE_QUOTA = 5 * 1024 * 1024; private Context mContext; @@ -157,6 +156,17 @@ public class LocalTransport extends BackupTransport { return TRANSPORT_OK; } + // Encapsulation of a single k/v element change + private class KVOperation { + final String key; // Element filename, not the raw key, for efficiency + final byte[] value; // null when this is a deletion operation + + KVOperation(String k, byte[] v) { + key = k; + value = v; + } + } + @Override public int performBackup(PackageInfo packageInfo, ParcelFileDescriptor data) { if (DEBUG) { @@ -175,62 +185,135 @@ public class LocalTransport extends BackupTransport { // Each 'record' in the restore set is kept in its own file, named by // the record key. Wind through the data file, extracting individual - // record operations and building a set of all the updates to apply + // record operations and building a list of all the updates to apply // in this update. - BackupDataInput changeSet = new BackupDataInput(data.getFileDescriptor()); + final ArrayList changeOps; try { - int bufSize = 512; - byte[] buf = new byte[bufSize]; - while (changeSet.readNextHeader()) { - String key = changeSet.getKey(); - String base64Key = new String(Base64.encode(key.getBytes())); - File entityFile = new File(packageDir, base64Key); + changeOps = parseBackupStream(data); + } catch (IOException e) { + // oops, something went wrong. abort the operation and return error. + Log.v(TAG, "Exception reading backup input", e); + return TRANSPORT_ERROR; + } - int dataSize = changeSet.getDataSize(); + // Okay, now we've parsed out the delta's individual operations. We need to measure + // the effect against what we already have in the datastore to detect quota overrun. + // So, we first need to tally up the current in-datastore size per key. + final ArrayMap datastore = new ArrayMap<>(); + int totalSize = parseKeySizes(packageDir, datastore); - if (DEBUG) Log.v(TAG, "Got change set key=" + key + " size=" + dataSize - + " key64=" + base64Key); + // ... and now figure out the datastore size that will result from applying the + // sequence of delta operations + if (DEBUG) { + if (changeOps.size() > 0) { + Log.v(TAG, "Calculating delta size impact"); + } else { + Log.v(TAG, "No operations in backup stream, so no size change"); + } + } + int updatedSize = totalSize; + for (KVOperation op : changeOps) { + // Deduct the size of the key we're about to replace, if any + final Integer curSize = datastore.get(op.key); + if (curSize != null) { + updatedSize -= curSize.intValue(); + if (DEBUG && op.value == null) { + Log.v(TAG, " delete " + op.key + ", updated total " + updatedSize); + } + } - if (dataSize >= 0) { - if (entityFile.exists()) { - entityFile.delete(); - } - FileOutputStream entity = new FileOutputStream(entityFile); + // And add back the size of the value we're about to store, if any + if (op.value != null) { + updatedSize += op.value.length; + if (DEBUG) { + Log.v(TAG, ((curSize == null) ? " new " : " replace ") + + op.key + ", updated total " + updatedSize); + } + } + } - if (dataSize > bufSize) { - bufSize = dataSize; - buf = new byte[bufSize]; - } - changeSet.readEntityData(buf, 0, dataSize); - if (DEBUG) { - try { - long cur = Os.lseek(data.getFileDescriptor(), 0, SEEK_CUR); - Log.v(TAG, " read entity data; new pos=" + cur); - } - catch (ErrnoException e) { - Log.w(TAG, "Unable to stat input file in performBackup() on " - + packageInfo.packageName); - } - } + // If our final size is over quota, report the failure + if (updatedSize > KEY_VALUE_BACKUP_SIZE_QUOTA) { + if (DEBUG) { + Log.i(TAG, "New datastore size " + updatedSize + + " exceeds quota " + KEY_VALUE_BACKUP_SIZE_QUOTA); + } + return TRANSPORT_QUOTA_EXCEEDED; + } - try { - entity.write(buf, 0, dataSize); - } catch (IOException e) { - Log.e(TAG, "Unable to update key file " + entityFile.getAbsolutePath()); - return TRANSPORT_ERROR; - } finally { - entity.close(); - } - } else { - entityFile.delete(); + // No problem with storage size, so go ahead and apply the delta operations + // (in the order that the app provided them) + for (KVOperation op : changeOps) { + File element = new File(packageDir, op.key); + + // this is either a deletion or a rewrite-from-zero, so we can just remove + // the existing file and proceed in either case. + element.delete(); + + // if this wasn't a deletion, put the new data in place + if (op.value != null) { + try (FileOutputStream out = new FileOutputStream(element)) { + out.write(op.value, 0, op.value.length); + } catch (IOException e) { + Log.e(TAG, "Unable to update key file " + element); + return TRANSPORT_ERROR; } } - return TRANSPORT_OK; - } catch (IOException e) { - // oops, something went wrong. abort the operation and return error. - Log.v(TAG, "Exception reading backup input:", e); - return TRANSPORT_ERROR; } + return TRANSPORT_OK; + } + + // Parses a backup stream into individual key/value operations + private ArrayList parseBackupStream(ParcelFileDescriptor data) + throws IOException { + ArrayList changeOps = new ArrayList<>(); + BackupDataInput changeSet = new BackupDataInput(data.getFileDescriptor()); + while (changeSet.readNextHeader()) { + String key = changeSet.getKey(); + String base64Key = new String(Base64.encode(key.getBytes())); + int dataSize = changeSet.getDataSize(); + if (DEBUG) { + Log.v(TAG, " Delta operation key " + key + " size " + dataSize + + " key64 " + base64Key); + } + + byte[] buf = (dataSize >= 0) ? new byte[dataSize] : null; + if (dataSize >= 0) { + changeSet.readEntityData(buf, 0, dataSize); + } + changeOps.add(new KVOperation(base64Key, buf)); + } + return changeOps; + } + + // Reads the given datastore directory, building a table of the value size of each + // keyed element, and returning the summed total. + private int parseKeySizes(File packageDir, ArrayMap datastore) { + int totalSize = 0; + final String[] elements = packageDir.list(); + if (elements != null) { + if (DEBUG) { + Log.v(TAG, "Existing datastore contents:"); + } + for (String file : elements) { + File element = new File(packageDir, file); + String key = file; // filename + int size = (int) element.length(); + totalSize += size; + if (DEBUG) { + Log.v(TAG, " key " + key + " size " + size); + } + datastore.put(key, size); + } + if (DEBUG) { + Log.v(TAG, " TOTAL: " + totalSize); + } + } else { + if (DEBUG) { + Log.v(TAG, "No existing data for this package"); + } + } + return totalSize; } // Deletes the contents but not the given directory diff --git a/core/java/com/android/internal/colorextraction/ColorExtractor.java b/core/java/com/android/internal/colorextraction/ColorExtractor.java index ef98a5e9f787e580fdef2689f495047b5c83d17c..c171fa6b25fdb52130116826c24dc2df08d12118 100644 --- a/core/java/com/android/internal/colorextraction/ColorExtractor.java +++ b/core/java/com/android/internal/colorextraction/ColorExtractor.java @@ -80,7 +80,7 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener if (wallpaperManager == null) { Log.w(TAG, "Can't listen to color changes!"); } else { - wallpaperManager.addOnColorsChangedListener(this); + wallpaperManager.addOnColorsChangedListener(this, null /* handler */); // Initialize all gradients with the current colors Trace.beginSection("ColorExtractor#getWallpaperColors"); diff --git a/core/java/com/android/internal/colorextraction/types/Tonal.java b/core/java/com/android/internal/colorextraction/types/Tonal.java index dbc086c2130443fba45248eb7082bbfd1938b2ab..e6ef10b3b7c622be5251907869561d3513a97142 100644 --- a/core/java/com/android/internal/colorextraction/types/Tonal.java +++ b/core/java/com/android/internal/colorextraction/types/Tonal.java @@ -111,18 +111,19 @@ public class Tonal implements ExtractionType { final List mainColors = inWallpaperColors.getMainColors(); final int mainColorsSize = mainColors.size(); - final boolean supportsDarkText = (inWallpaperColors.getColorHints() & - WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; + final int hints = inWallpaperColors.getColorHints(); + final boolean supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; + final boolean generatedFromBitmap = (hints & WallpaperColors.HINT_FROM_BITMAP) != 0; if (mainColorsSize == 0) { return false; } - // Tonal is not really a sort, it takes a color from the extracted - // palette and finds a best fit amongst a collection of pre-defined - // palettes. The best fit is tweaked to be closer to the source color - // and replaces the original palette - // Get the most preeminent, non-blacklisted color. + // Decide what's the best color to use. + // We have 2 options: + // • Just pick the primary color + // • Filter out blacklisted colors. This is useful when palette is generated + // automatically from a bitmap. Color bestColor = null; final float[] hsl = new float[3]; for (int i = 0; i < mainColorsSize; i++) { @@ -132,7 +133,7 @@ public class Tonal implements ExtractionType { Color.blue(colorValue), hsl); // Stop when we find a color that meets our criteria - if (!isBlacklisted(hsl)) { + if (!generatedFromBitmap || !isBlacklisted(hsl)) { bestColor = color; break; } @@ -143,6 +144,10 @@ public class Tonal implements ExtractionType { return false; } + // Tonal is not really a sort, it takes a color from the extracted + // palette and finds a best fit amongst a collection of pre-defined + // palettes. The best fit is tweaked to be closer to the source color + // and replaces the original palette. int colorValue = bestColor.toArgb(); ColorUtils.RGBToHSL(Color.red(colorValue), Color.green(colorValue), Color.blue(colorValue), hsl); diff --git a/core/java/com/android/internal/content/FileSystemProvider.java b/core/java/com/android/internal/content/FileSystemProvider.java index ebea1a46aed84e77f620eb64e40e47517d784880..4b80a5ff03def78ce1b014c5c93c736e4be6d221 100644 --- a/core/java/com/android/internal/content/FileSystemProvider.java +++ b/core/java/com/android/internal/content/FileSystemProvider.java @@ -28,6 +28,7 @@ import android.database.MatrixCursor.RowBuilder; import android.graphics.Point; import android.net.Uri; import android.os.Binder; +import android.os.Bundle; import android.os.CancellationSignal; import android.os.FileObserver; import android.os.FileUtils; @@ -37,6 +38,7 @@ import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; import android.provider.DocumentsProvider; import android.provider.MediaStore; +import android.provider.MetadataReader; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; @@ -44,7 +46,10 @@ import android.webkit.MimeTypeMap; import com.android.internal.annotations.GuardedBy; +import libcore.io.IoUtils; + import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; @@ -68,6 +73,13 @@ public abstract class FileSystemProvider extends DocumentsProvider { private Handler mHandler; + + private static final String MIMETYPE_JPEG = "image/jpeg"; + + private static final String MIMETYPE_JPG = "image/jpg"; + + + protected abstract File getFileForDocId(String docId, boolean visible) throws FileNotFoundException; @@ -99,6 +111,30 @@ public abstract class FileSystemProvider extends DocumentsProvider { } } + @Override + public @Nullable Bundle getDocumentMetadata(String documentId, @Nullable String[] tags) + throws FileNotFoundException { + File file = getFileForDocId(documentId); + if (!(file.exists() && file.isFile() && file.canRead())) { + return Bundle.EMPTY; + } + String filePath = file.getAbsolutePath(); + Bundle metadata = new Bundle(); + if (getTypeForFile(file).equals(MIMETYPE_JPEG) + || getTypeForFile(file).equals(MIMETYPE_JPG)) { + FileInputStream stream = new FileInputStream(filePath); + try { + MetadataReader.getMetadata(metadata, stream, getTypeForFile(file), tags); + return metadata; + } catch (IOException e) { + Log.e(TAG, "An error occurred retrieving the metadata", e); + } finally { + IoUtils.closeQuietly(stream); + } + } + return null; + } + protected final List findDocumentPath(File parent, File doc) throws FileNotFoundException { diff --git a/core/java/com/android/internal/content/PackageHelper.java b/core/java/com/android/internal/content/PackageHelper.java index 9c361b37a659749113574567344a65d387b8712a..e923223de81dce4fca344f2fdafefa5e642efa02 100644 --- a/core/java/com/android/internal/content/PackageHelper.java +++ b/core/java/com/android/internal/content/PackageHelper.java @@ -16,11 +16,14 @@ package com.android.internal.content; +import static android.net.TrafficStats.MB_IN_BYTES; +import static android.os.storage.VolumeInfo.ID_PRIVATE_INTERNAL; + import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; import android.content.pm.PackageInstaller.SessionParams; +import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageParser.PackageLite; import android.os.Environment; @@ -39,21 +42,19 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; +import libcore.io.IoUtils; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collections; import java.util.Objects; +import java.util.UUID; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; -import libcore.io.IoUtils; - -import static android.net.TrafficStats.MB_IN_BYTES; -import static android.os.storage.VolumeInfo.ID_PRIVATE_INTERNAL; - /** * Constants used internally between the PackageManager * and media container service transports. @@ -358,7 +359,7 @@ public class PackageHelper { public boolean fitsOnInternalStorage(Context context, SessionParams params) throws IOException { StorageManager storage = getStorageManager(context); - File target = getDataDirectory(); + final UUID target = storage.getUuidForPath(getDataDirectory()); return (params.sizeBytes <= storage.getAllocatableBytes(target, translateAllocateFlags(params.installFlags))); } @@ -466,7 +467,8 @@ public class PackageHelper { boolean isInternalStorage = ID_PRIVATE_INTERNAL.equals(vol.id); if (vol.type == VolumeInfo.TYPE_PRIVATE && vol.isMountedWritable() && (!isInternalStorage || allow3rdPartyOnInternal)) { - final long availBytes = storageManager.getAllocatableBytes(new File(vol.path), + final UUID target = storageManager.getUuidForPath(new File(vol.path)); + final long availBytes = storageManager.getAllocatableBytes(target, translateAllocateFlags(params.installFlags)); if (availBytes >= params.sizeBytes) { allCandidates.add(vol.fsUuid); @@ -523,7 +525,7 @@ public class PackageHelper { public static boolean fitsOnInternal(Context context, SessionParams params) throws IOException { final StorageManager storage = context.getSystemService(StorageManager.class); - final File target = Environment.getDataDirectory(); + final UUID target = storage.getUuidForPath(Environment.getDataDirectory()); return (params.sizeBytes <= storage.getAllocatableBytes(target, translateAllocateFlags(params.installFlags))); } diff --git a/core/java/com/android/internal/content/PdfUtils.java b/core/java/com/android/internal/content/PdfUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..1716d426b362ee902d5815dd1b5b26ff82c8b04a --- /dev/null +++ b/core/java/com/android/internal/content/PdfUtils.java @@ -0,0 +1,96 @@ +/* + * 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.internal.content; + +import android.annotation.Nullable; +import android.content.res.AssetFileDescriptor; +import android.graphics.Bitmap; +import android.graphics.Point; +import android.graphics.Rect; +import android.graphics.pdf.PdfRenderer; +import android.os.AsyncTask; +import android.os.ParcelFileDescriptor; + +import libcore.io.IoUtils; +import libcore.io.Streams; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Utils class for extracting PDF Thumbnails + */ +public final class PdfUtils { + + private PdfUtils() { + } + + /** + * Returns the front page of the pdf as a thumbnail + * @param file Given PDF File + * @param size Cropping of the front page. + * @return AssetFileDescriptor containing the thumbnail as a bitmap. + * @throws IOException if the file isn't a pdf or if the file doesn't exist. + */ + public static @Nullable AssetFileDescriptor openPdfThumbnail(File file, Point size) + throws IOException { + // Create the bitmap of the PDF's first page + ParcelFileDescriptor pdfDescriptor = + ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); + PdfRenderer renderer = new PdfRenderer(pdfDescriptor); + PdfRenderer.Page frontPage = renderer.openPage(0); + Bitmap thumbnail = Bitmap.createBitmap(size.x, size.y, + Bitmap.Config.ARGB_8888); + frontPage.render(thumbnail, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); + + // Create an AssetFileDescriptor that contains the Bitmap's information + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + // Quality is an integer that determines how much compression is used. + // However, this integer is ignored when using the PNG format + int quality = 100; + // The use of Bitmap.CompressFormat.JPEG leads to a black PDF background on the thumbnail + thumbnail.compress(Bitmap.CompressFormat.PNG, quality, out); + + final ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); + + final ParcelFileDescriptor[] fds = ParcelFileDescriptor.createReliablePipe(); + new AsyncTask() { + @Override + protected Object doInBackground(Object... params) { + final FileOutputStream fos = new FileOutputStream(fds[1].getFileDescriptor()); + try { + Streams.copy(in, fos); + } catch (IOException e) { + throw new RuntimeException(e); + } + IoUtils.closeQuietly(fds[1]); + try { + pdfDescriptor.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + return null; + } + }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + pdfDescriptor.close(); + return new AssetFileDescriptor(fds[0], 0, AssetFileDescriptor.UNKNOWN_LENGTH); + } + +} diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 3bb20b4ad63726991cce6c16a3a190ae3cb134c9..f26c0cdfe95841fd794226258efccdf95c7dac3a 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -42,7 +42,7 @@ import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; -import android.os.SystemProperties; +import android.os.UserHandle; import android.os.WorkSource; import android.telephony.DataConnectionRealTimeInfo; import android.telephony.ModemActivityInfo; @@ -75,7 +75,7 @@ import com.android.internal.util.FastPrintWriter; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.JournaledFile; import com.android.internal.util.XmlUtils; -import com.android.server.NetworkManagementSocketTagger; + import libcore.util.EmptyArray; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -95,6 +95,7 @@ import java.util.Calendar; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReentrantLock; @@ -118,18 +119,37 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - private static final int VERSION = 159 + (USE_OLD_HISTORY ? 1000 : 0); + private static final int VERSION = 167 + (USE_OLD_HISTORY ? 1000 : 0); // Maximum number of items we will record in the history. - private static final int MAX_HISTORY_ITEMS = 2000; + private static final int MAX_HISTORY_ITEMS; // No, really, THIS is the maximum number of items we will record in the history. - private static final int MAX_MAX_HISTORY_ITEMS = 3000; + private static final int MAX_MAX_HISTORY_ITEMS; // The maximum number of names wakelocks we will keep track of // per uid; once the limit is reached, we batch the remaining wakelocks // in to one common name. - private static final int MAX_WAKELOCKS_PER_UID = 100; + private static final int MAX_WAKELOCKS_PER_UID; + + static final int MAX_HISTORY_BUFFER; // 256KB + static final int MAX_MAX_HISTORY_BUFFER; // 320KB + + static { + if (ActivityManager.isLowRamDeviceStatic()) { + MAX_HISTORY_ITEMS = 800; + MAX_MAX_HISTORY_ITEMS = 1200; + MAX_WAKELOCKS_PER_UID = 40; + MAX_HISTORY_BUFFER = 96*1024; // 96KB + MAX_MAX_HISTORY_BUFFER = 128*1024; // 128KB + } else { + MAX_HISTORY_ITEMS = 2000; + MAX_MAX_HISTORY_ITEMS = 3000; + MAX_WAKELOCKS_PER_UID = 100; + MAX_HISTORY_BUFFER = 256*1024; // 256KB + MAX_MAX_HISTORY_BUFFER = 320*1024; // 256KB + } + } // Number of transmit power states the Wifi controller can be in. private static final int NUM_WIFI_TX_LEVELS = 1; @@ -163,6 +183,13 @@ public class BatteryStatsImpl extends BatteryStats { return mKernelMemoryStats; } + /** Container for Resource Power Manager stats. Updated by updateRpmStatsLocked. */ + private final RpmStats mTmpRpmStats = new RpmStats(); + /** The soonest the RPM stats can be updated after it was last updated. */ + private static final long RPM_STATS_UPDATE_FREQ_MS = 1000; + /** Last time that RPM stats were updated by updateRpmStatsLocked. */ + private long mLastRpmStatsUpdateTimeMs = -RPM_STATS_UPDATE_FREQ_MS; + public interface BatteryCallback { public void batteryNeedsCpuUpdate(); public void batteryPowerChanged(boolean onBattery); @@ -170,10 +197,22 @@ public class BatteryStatsImpl extends BatteryStats { } public interface PlatformIdleStateCallback { + public void fillLowPowerStats(RpmStats rpmStats); public String getPlatformLowPowerStats(); public String getSubsystemLowPowerStats(); } + public static abstract class UserInfoProvider { + private int[] userIds; + protected abstract @Nullable int[] getUserIds(); + private final void refreshUserIds() { + userIds = getUserIds(); + } + private final boolean exists(int userId) { + return userIds != null ? ArrayUtils.contains(userIds, userId) : true; + } + } + private final PlatformIdleStateCallback mPlatformIdleStateCallback; final class MyHandler extends Handler { @@ -234,14 +273,16 @@ public class BatteryStatsImpl extends BatteryStats { int UPDATE_WIFI = 0x02; int UPDATE_RADIO = 0x04; int UPDATE_BT = 0x08; - int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT; + int UPDATE_RPM = 0x10; // 16 + int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT | UPDATE_RPM; - void scheduleSync(String reason, int flags); - void scheduleCpuSyncDueToRemovedUid(int uid); + Future scheduleSync(String reason, int flags); + Future scheduleCpuSyncDueToRemovedUid(int uid); } public final MyHandler mHandler; - private final ExternalStatsSync mExternalSync; + private ExternalStatsSync mExternalSync = null; + private UserInfoProvider mUserInfoProvider = null; private BatteryCallback mCallback; @@ -283,8 +324,8 @@ public class BatteryStatsImpl extends BatteryStats { protected final TimeBase mOnBatteryTimeBase = new TimeBase(); // These are the objects that will want to do something when the device - // is unplugged from power *and* the screen is off. - final TimeBase mOnBatteryScreenOffTimeBase = new TimeBase(); + // is unplugged from power *and* the screen is off or doze. + protected final TimeBase mOnBatteryScreenOffTimeBase = new TimeBase(); // Set to true when we want to distribute CPU across wakelocks for the next // CPU update, even if we aren't currently running wake locks. @@ -299,8 +340,6 @@ public class BatteryStatsImpl extends BatteryStats { boolean mRecordingHistory = false; int mNumHistoryItems; - static final int MAX_HISTORY_BUFFER = 256*1024; // 256KB - static final int MAX_MAX_HISTORY_BUFFER = 320*1024; // 320KB final Parcel mHistoryBuffer = Parcel.obtain(); final HistoryItem mHistoryLastWritten = new HistoryItem(); final HistoryItem mHistoryLastLastWritten = new HistoryItem(); @@ -380,8 +419,12 @@ public class BatteryStatsImpl extends BatteryStats { public boolean mRecordAllHistory; boolean mNoAutoReset; - int mScreenState = Display.STATE_UNKNOWN; - StopwatchTimer mScreenOnTimer; + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + protected int mScreenState = Display.STATE_UNKNOWN; + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + protected StopwatchTimer mScreenOnTimer; + @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) + protected StopwatchTimer mScreenDozeTimer; int mScreenBrightnessBin = -1; final StopwatchTimer[] mScreenBrightnessTimer = new StopwatchTimer[NUM_SCREEN_BRIGHTNESS_BINS]; @@ -526,12 +569,16 @@ public class BatteryStatsImpl extends BatteryStats { int mHighDischargeAmountSinceCharge; int mDischargeScreenOnUnplugLevel; int mDischargeScreenOffUnplugLevel; + int mDischargeScreenDozeUnplugLevel; int mDischargeAmountScreenOn; int mDischargeAmountScreenOnSinceCharge; int mDischargeAmountScreenOff; int mDischargeAmountScreenOffSinceCharge; + int mDischargeAmountScreenDoze; + int mDischargeAmountScreenDozeSinceCharge; private LongSamplingCounter mDischargeScreenOffCounter; + private LongSamplingCounter mDischargeScreenDozeCounter; private LongSamplingCounter mDischargeCounter; static final int MAX_LEVEL_STEPS = 200; @@ -578,6 +625,25 @@ public class BatteryStatsImpl extends BatteryStats { private PowerProfile mPowerProfile; + /* + * Holds a SamplingTimer associated with each Resource Power Manager state and voter, + * recording their times when on-battery (regardless of screen state). + */ + private final HashMap mRpmStats = new HashMap<>(); + /** Times for each Resource Power Manager state and voter when screen-off and on-battery. */ + private final HashMap mScreenOffRpmStats = new HashMap<>(); + + @Override + public Map getRpmStats() { + return mRpmStats; + } + + // TODO: Note: screenOffRpmStats has been disabled via SCREEN_OFF_RPM_STATS_ENABLED. + @Override + public Map getScreenOffRpmStats() { + return mScreenOffRpmStats; + } + /* * Holds a SamplingTimer associated with each kernel wakelock name being tracked. */ @@ -596,13 +662,18 @@ public class BatteryStatsImpl extends BatteryStats { } @Override - public LongCounter getDischargeScreenOffCoulombCounter() { - return mDischargeScreenOffCounter; + public long getMahDischarge(int which) { + return mDischargeCounter.getCountLocked(which); + } + + @Override + public long getMahDischargeScreenOff(int which) { + return mDischargeScreenOffCounter.getCountLocked(which); } @Override - public LongCounter getDischargeCoulombCounter() { - return mDischargeCounter; + public long getMahDischargeScreenDoze(int which) { + return mDischargeScreenDozeCounter.getCountLocked(which); } @Override @@ -630,8 +701,8 @@ public class BatteryStatsImpl extends BatteryStats { mCheckinFile = null; mDailyFile = null; mHandler = null; - mExternalSync = null; mPlatformIdleStateCallback = null; + mUserInfoProvider = null; clearHistoryLocked(); } @@ -1033,6 +1104,10 @@ public class BatteryStatsImpl extends BatteryStats { } } + public int getSize() { + return mCounts == null ? 0 : mCounts.length; + } + /** * Clear state of this counter. */ @@ -1793,6 +1868,7 @@ public class BatteryStatsImpl extends BatteryStats { super(clocks, uid, type, timerPool, timeBase, in); mMaxDurationMs = in.readLong(); mTotalDurationMs = in.readLong(); + mCurrentDurationMs = in.readLong(); } public DurationTimer(Clocks clocks, Uid uid, int type, ArrayList timerPool, @@ -1804,7 +1880,8 @@ public class BatteryStatsImpl extends BatteryStats { public void writeToParcel(Parcel out, long elapsedRealtimeUs) { super.writeToParcel(out, elapsedRealtimeUs); out.writeLong(getMaxDurationMsLocked(elapsedRealtimeUs / 1000)); - out.writeLong(getTotalDurationMsLocked(elapsedRealtimeUs / 1000)); + out.writeLong(mTotalDurationMs); + out.writeLong(getCurrentDurationMsLocked(elapsedRealtimeUs / 1000)); } /** @@ -1935,6 +2012,10 @@ public class BatteryStatsImpl extends BatteryStats { * * Note that this time is NOT split between the timers in the timer group that * this timer is attached to. It is the TOTAL time. + * + * Note that if running timer is parceled and unparceled, this method will return + * current duration value at the time of parceling even though timer may not be + * currently running. */ @Override public long getCurrentDurationMsLocked(long elapsedRealtimeMs) { @@ -2588,6 +2669,26 @@ public class BatteryStatsImpl extends BatteryStats { } } + /** Get Resource Power Manager stats. Create a new one if it doesn't already exist. */ + public SamplingTimer getRpmTimerLocked(String name) { + SamplingTimer rpmt = mRpmStats.get(name); + if (rpmt == null) { + rpmt = new SamplingTimer(mClocks, mOnBatteryTimeBase); + mRpmStats.put(name, rpmt); + } + return rpmt; + } + + /** Get Screen-off Resource Power Manager stats. Create new one if it doesn't already exist. */ + public SamplingTimer getScreenOffRpmTimerLocked(String name) { + SamplingTimer rpmt = mScreenOffRpmStats.get(name); + if (rpmt == null) { + rpmt = new SamplingTimer(mClocks, mOnBatteryScreenOffTimeBase); + mScreenOffRpmStats.put(name, rpmt); + } + return rpmt; + } + /* * Get the wakeup reason counter, and create a new one if one * doesn't already exist. @@ -3465,28 +3566,41 @@ public class BatteryStatsImpl extends BatteryStats { mActiveHistoryStates2 = 0xffffffff; } - public void updateTimeBasesLocked(boolean unplugged, boolean screenOff, long uptime, + public void updateTimeBasesLocked(boolean unplugged, int screenState, long uptime, long realtime) { - boolean batteryStatusChanged = mOnBatteryTimeBase.setRunning(unplugged, uptime, realtime); - - if (batteryStatusChanged) { - for (int i = 0; i < mUidStats.size(); i++) { - mUidStats.valueAt(i).updateOnBatteryBgTimeBase(uptime, realtime); + final boolean screenOff = isScreenOff(screenState) || isScreenDoze(screenState); + final boolean updateOnBatteryTimeBase = unplugged != mOnBatteryTimeBase.isRunning(); + final boolean updateOnBatteryScreenOffTimeBase = + (unplugged && screenOff) != mOnBatteryScreenOffTimeBase.isRunning(); + + if (updateOnBatteryScreenOffTimeBase || updateOnBatteryTimeBase) { + if (updateOnBatteryScreenOffTimeBase) { + updateKernelWakelocksLocked(); + updateBatteryPropertiesLocked(); + } + // This if{} is only necessary due to SCREEN_OFF_RPM_STATS_ENABLED, which exists because + // updateRpmStatsLocked is too slow to run each screen change. When the speed is + // improved, remove the surrounding if{}. + if (SCREEN_OFF_RPM_STATS_ENABLED || updateOnBatteryTimeBase) { + updateRpmStatsLocked(); // if either OnBattery or OnBatteryScreenOff timebase changes. } - } - - boolean unpluggedScreenOff = unplugged && screenOff; - if (unpluggedScreenOff != mOnBatteryScreenOffTimeBase.isRunning()) { - updateKernelWakelocksLocked(); - updateBatteryPropertiesLocked(); if (DEBUG_ENERGY_CPU) { - Slog.d(TAG, "Updating cpu time because screen is now " + - (unpluggedScreenOff ? "off" : "on")); + Slog.d(TAG, "Updating cpu time because screen is now " + + Display.stateToString(screenState) + + " and battery is " + (unplugged ? "on" : "off")); } updateCpuTimeLocked(true /* updateCpuFreqData */); - mOnBatteryScreenOffTimeBase.setRunning(unpluggedScreenOff, uptime, realtime); - for (int i = 0; i < mUidStats.size(); i++) { - mUidStats.valueAt(i).updateOnBatteryScreenOffBgTimeBase(uptime, realtime); + mOnBatteryTimeBase.setRunning(unplugged, uptime, realtime); + if (updateOnBatteryTimeBase) { + for (int i = mUidStats.size() - 1; i >= 0; --i) { + mUidStats.valueAt(i).updateOnBatteryBgTimeBase(uptime, realtime); + } + } + if (updateOnBatteryScreenOffTimeBase) { + mOnBatteryScreenOffTimeBase.setRunning(unplugged && screenOff, uptime, realtime); + for (int i = mUidStats.size() - 1; i >= 0; --i) { + mUidStats.valueAt(i).updateOnBatteryScreenOffBgTimeBase(uptime, realtime); + } } } } @@ -3652,11 +3766,11 @@ public class BatteryStatsImpl extends BatteryStats { addHistoryEventLocked(elapsedRealtime, uptime, HistoryItem.EVENT_JOB_START, name, uid); } - public void noteJobFinishLocked(String name, int uid) { + public void noteJobFinishLocked(String name, int uid, int stopReason) { uid = mapUid(uid); final long elapsedRealtime = mClocks.elapsedRealtime(); final long uptime = mClocks.uptimeMillis(); - getUidStatsLocked(uid).noteStopJobLocked(name, elapsedRealtime); + getUidStatsLocked(uid).noteStopJobLocked(name, elapsedRealtime, stopReason); if (!mActiveEvents.updateState(HistoryItem.EVENT_JOB_FINISH, name, uid, 0)) { return; } @@ -3745,8 +3859,10 @@ public class BatteryStatsImpl extends BatteryStats { } public void setPretendScreenOff(boolean pretendScreenOff) { - mPretendScreenOff = pretendScreenOff; - noteScreenStateLocked(pretendScreenOff ? Display.STATE_OFF : Display.STATE_ON); + if (mPretendScreenOff != pretendScreenOff) { + mPretendScreenOff = pretendScreenOff; + noteScreenStateLocked(pretendScreenOff ? Display.STATE_OFF : Display.STATE_ON); + } } private String mInitialAcquireWakeName; @@ -3975,14 +4091,6 @@ public class BatteryStatsImpl extends BatteryStats { return 0; } - public void reportExcessiveWakeLocked(int uid, String proc, long overTime, long usedTime) { - uid = mapUid(uid); - Uid u = mUidStats.get(uid); - if (u != null) { - u.reportExcessiveWakeLocked(proc, overTime, usedTime); - } - } - public void reportExcessiveCpuLocked(int uid, String proc, long overTime, long usedTime) { uid = mapUid(uid); Uid u = mUidStats.get(uid); @@ -4084,54 +4192,58 @@ public class BatteryStatsImpl extends BatteryStats { } } - if (state == Display.STATE_ON) { - // Screen turning on. - final long elapsedRealtime = mClocks.elapsedRealtime(); - final long uptime = mClocks.uptimeMillis(); + final long elapsedRealtime = mClocks.elapsedRealtime(); + final long uptime = mClocks.uptimeMillis(); + + boolean updateHistory = false; + if (isScreenDoze(state)) { + mHistoryCur.states |= HistoryItem.STATE_SCREEN_DOZE_FLAG; + mScreenDozeTimer.startRunningLocked(elapsedRealtime); + updateHistory = true; + } else if (isScreenDoze(oldState)) { + mHistoryCur.states &= ~HistoryItem.STATE_SCREEN_DOZE_FLAG; + mScreenDozeTimer.stopRunningLocked(elapsedRealtime); + updateHistory = true; + } + if (isScreenOn(state)) { mHistoryCur.states |= HistoryItem.STATE_SCREEN_ON_FLAG; if (DEBUG_HISTORY) Slog.v(TAG, "Screen on to: " + Integer.toHexString(mHistoryCur.states)); - addHistoryRecordLocked(elapsedRealtime, uptime); mScreenOnTimer.startRunningLocked(elapsedRealtime); if (mScreenBrightnessBin >= 0) { mScreenBrightnessTimer[mScreenBrightnessBin].startRunningLocked(elapsedRealtime); } - - updateTimeBasesLocked(mOnBatteryTimeBase.isRunning(), false, - mClocks.uptimeMillis() * 1000, elapsedRealtime * 1000); - - // Fake a wake lock, so we consider the device waked as long - // as the screen is on. - noteStartWakeLocked(-1, -1, "screen", null, WAKE_TYPE_PARTIAL, false, - elapsedRealtime, uptime); - - // Update discharge amounts. - if (mOnBatteryInternal) { - updateDischargeScreenLevelsLocked(false, true); - } - } else if (oldState == Display.STATE_ON) { - // Screen turning off or dozing. - final long elapsedRealtime = mClocks.elapsedRealtime(); - final long uptime = mClocks.uptimeMillis(); + updateHistory = true; + } else if (isScreenOn(oldState)) { mHistoryCur.states &= ~HistoryItem.STATE_SCREEN_ON_FLAG; if (DEBUG_HISTORY) Slog.v(TAG, "Screen off to: " + Integer.toHexString(mHistoryCur.states)); - addHistoryRecordLocked(elapsedRealtime, uptime); mScreenOnTimer.stopRunningLocked(elapsedRealtime); if (mScreenBrightnessBin >= 0) { mScreenBrightnessTimer[mScreenBrightnessBin].stopRunningLocked(elapsedRealtime); } - + updateHistory = true; + } + if (updateHistory) { + if (DEBUG_HISTORY) Slog.v(TAG, "Screen state to: " + + Display.stateToString(state)); + addHistoryRecordLocked(elapsedRealtime, uptime); + } + if (isScreenOn(state)) { + updateTimeBasesLocked(mOnBatteryTimeBase.isRunning(), state, + mClocks.uptimeMillis() * 1000, elapsedRealtime * 1000); + // Fake a wake lock, so we consider the device waked as long as the screen is on. + noteStartWakeLocked(-1, -1, "screen", null, WAKE_TYPE_PARTIAL, false, + elapsedRealtime, uptime); + } else if (isScreenOn(oldState)) { noteStopWakeLocked(-1, -1, "screen", "screen", WAKE_TYPE_PARTIAL, elapsedRealtime, uptime); - - updateTimeBasesLocked(mOnBatteryTimeBase.isRunning(), true, + updateTimeBasesLocked(mOnBatteryTimeBase.isRunning(), state, mClocks.uptimeMillis() * 1000, elapsedRealtime * 1000); - - // Update discharge amounts. - if (mOnBatteryInternal) { - updateDischargeScreenLevelsLocked(true, false); - } + } + // Update discharge amounts. + if (mOnBatteryInternal) { + updateDischargeScreenLevelsLocked(oldState, state); } } } @@ -5280,6 +5392,14 @@ public class BatteryStatsImpl extends BatteryStats { return mScreenOnTimer.getCountLocked(which); } + @Override public long getScreenDozeTime(long elapsedRealtimeUs, int which) { + return mScreenDozeTimer.getTotalTimeLocked(elapsedRealtimeUs, which); + } + + @Override public int getScreenDozeCount(int which) { + return mScreenDozeTimer.getCountLocked(which); + } + @Override public long getScreenBrightnessTime(int brightnessBin, long elapsedRealtimeUs, int which) { return mScreenBrightnessTimer[brightnessBin].getTotalTimeLocked( @@ -5620,6 +5740,7 @@ public class BatteryStatsImpl extends BatteryStats { StopwatchTimer mFlashlightTurnedOnTimer; StopwatchTimer mCameraTurnedOnTimer; StopwatchTimer mForegroundActivityTimer; + StopwatchTimer mForegroundServiceTimer; /** Total time spent by the uid holding any partial wakelocks. */ DualTimer mAggregatedPartialWakelockTimer; DualTimer mBluetoothScanTimer; @@ -5630,6 +5751,8 @@ public class BatteryStatsImpl extends BatteryStats { int mProcessState = ActivityManager.PROCESS_STATE_NONEXISTENT; StopwatchTimer[] mProcessStateTimer; + boolean mInForegroundService = false; + BatchTimer mVibratorOnTimer; Counter[] mUserActivityCounters; @@ -5677,7 +5800,7 @@ public class BatteryStatsImpl extends BatteryStats { LongSamplingCounter mUserCpuTime; LongSamplingCounter mSystemCpuTime; - LongSamplingCounter[][] mCpuClusterSpeed; + LongSamplingCounter[][] mCpuClusterSpeedTimesUs; LongSamplingCounterArray mCpuFreqTimeMs; LongSamplingCounterArray mScreenOffCpuFreqTimeMs; @@ -5697,6 +5820,11 @@ public class BatteryStatsImpl extends BatteryStats { */ final OverflowArrayMap mJobStats; + /** + * Count of the jobs that have completed and the reasons why they completed. + */ + final ArrayMap mJobCompletions = new ArrayMap<>(); + /** * The statistics we have collected for this uid's sensor activations. */ @@ -5818,6 +5946,11 @@ public class BatteryStatsImpl extends BatteryStats { return mJobStats.getMap(); } + @Override + public ArrayMap getJobCompletionStats() { + return mJobCompletions; + } + @Override public SparseArray getSensorStats() { return mSensorStats; @@ -6092,6 +6225,14 @@ public class BatteryStatsImpl extends BatteryStats { return mForegroundActivityTimer; } + public StopwatchTimer createForegroundServiceTimerLocked() { + if (mForegroundServiceTimer == null) { + mForegroundServiceTimer = new StopwatchTimer(mBsi.mClocks, Uid.this, + FOREGROUND_SERVICE, null, mBsi.mOnBatteryTimeBase); + } + return mForegroundServiceTimer; + } + public DualTimer createAggregatedPartialWakelockTimerLocked() { if (mAggregatedPartialWakelockTimer == null) { mAggregatedPartialWakelockTimer = new DualTimer(mBsi.mClocks, this, @@ -6177,6 +6318,16 @@ public class BatteryStatsImpl extends BatteryStats { } } + public void noteForegroundServiceResumedLocked(long elapsedRealtimeMs) { + createForegroundServiceTimerLocked().startRunningLocked(elapsedRealtimeMs); + } + + public void noteForegroundServicePausedLocked(long elapsedRealtimeMs) { + if (mForegroundServiceTimer != null) { + mForegroundServiceTimer.stopRunningLocked(elapsedRealtimeMs); + } + } + public BatchTimer createVibratorOnTimerLocked() { if (mVibratorOnTimer == null) { mVibratorOnTimer = new BatchTimer(mBsi.mClocks, Uid.this, VIBRATOR_ON, @@ -6304,6 +6455,11 @@ public class BatteryStatsImpl extends BatteryStats { return mForegroundActivityTimer; } + @Override + public Timer getForegroundServiceTimer() { + return mForegroundServiceTimer; + } + @Override public Timer getBluetoothScanTimer() { return mBluetoothScanTimer; @@ -6493,12 +6649,12 @@ public class BatteryStatsImpl extends BatteryStats { @Override public long getTimeAtCpuSpeed(int cluster, int step, int which) { - if (mCpuClusterSpeed != null) { - if (cluster >= 0 && cluster < mCpuClusterSpeed.length) { - final LongSamplingCounter[] cpuSpeeds = mCpuClusterSpeed[cluster]; - if (cpuSpeeds != null) { - if (step >= 0 && step < cpuSpeeds.length) { - final LongSamplingCounter c = cpuSpeeds[step]; + if (mCpuClusterSpeedTimesUs != null) { + if (cluster >= 0 && cluster < mCpuClusterSpeedTimesUs.length) { + final LongSamplingCounter[] cpuSpeedTimesUs = mCpuClusterSpeedTimesUs[cluster]; + if (cpuSpeedTimesUs != null) { + if (step >= 0 && step < cpuSpeedTimesUs.length) { + final LongSamplingCounter c = cpuSpeedTimesUs[step]; if (c != null) { return c.getCountLocked(which); } @@ -6591,6 +6747,7 @@ public class BatteryStatsImpl extends BatteryStats { active |= !resetTimerIfNotNull(mFlashlightTurnedOnTimer, false); active |= !resetTimerIfNotNull(mCameraTurnedOnTimer, false); active |= !resetTimerIfNotNull(mForegroundActivityTimer, false); + active |= !resetTimerIfNotNull(mForegroundServiceTimer, false); active |= !resetTimerIfNotNull(mAggregatedPartialWakelockTimer, false); active |= !resetTimerIfNotNull(mBluetoothScanTimer, false); active |= !resetTimerIfNotNull(mBluetoothUnoptimizedScanTimer, false); @@ -6648,8 +6805,8 @@ public class BatteryStatsImpl extends BatteryStats { mUserCpuTime.reset(false); mSystemCpuTime.reset(false); - if (mCpuClusterSpeed != null) { - for (LongSamplingCounter[] speeds : mCpuClusterSpeed) { + if (mCpuClusterSpeedTimesUs != null) { + for (LongSamplingCounter[] speeds : mCpuClusterSpeedTimesUs) { if (speeds != null) { for (LongSamplingCounter speed : speeds) { if (speed != null) { @@ -6702,6 +6859,7 @@ public class BatteryStatsImpl extends BatteryStats { } } mJobStats.cleanup(); + mJobCompletions.clear(); for (int ise=mSensorStats.size()-1; ise>=0; ise--) { Sensor s = mSensorStats.valueAt(ise); if (s.reset()) { @@ -6784,6 +6942,10 @@ public class BatteryStatsImpl extends BatteryStats { mForegroundActivityTimer.detach(); mForegroundActivityTimer = null; } + if (mForegroundServiceTimer != null) { + mForegroundServiceTimer.detach(); + mForegroundServiceTimer = null; + } if (mAggregatedPartialWakelockTimer != null) { mAggregatedPartialWakelockTimer.detach(); mAggregatedPartialWakelockTimer = null; @@ -6833,8 +6995,8 @@ public class BatteryStatsImpl extends BatteryStats { mUserCpuTime.detach(); mSystemCpuTime.detach(); - if (mCpuClusterSpeed != null) { - for (LongSamplingCounter[] cpuSpeeds : mCpuClusterSpeed) { + if (mCpuClusterSpeedTimesUs != null) { + for (LongSamplingCounter[] cpuSpeeds : mCpuClusterSpeedTimesUs) { if (cpuSpeeds != null) { for (LongSamplingCounter c : cpuSpeeds) { if (c != null) { @@ -6859,6 +7021,21 @@ public class BatteryStatsImpl extends BatteryStats { return !active; } + void writeJobCompletionsToParcelLocked(Parcel out) { + int NJC = mJobCompletions.size(); + out.writeInt(NJC); + for (int ijc=0; ijc 0) { + SparseIntArray types = new SparseIntArray(); + for (int k = 0; k < numTypes; k++) { + int type = in.readInt(); + int count = in.readInt(); + types.put(type, count); + } + mJobCompletions.put(jobName, types); + } + } + } + void readFromParcelLocked(TimeBase timeBase, TimeBase screenOffTimeBase, Parcel in) { mOnBatteryBackgroundTimeBase.readFromParcel(in); mOnBatteryScreenOffBackgroundTimeBase.readFromParcel(in); @@ -7139,6 +7342,8 @@ public class BatteryStatsImpl extends BatteryStats { } } + readJobCompletionsFromParcelLocked(in); + int numSensors = in.readInt(); mSensorStats.clear(); for (int k = 0; k < numSensors; k++) { @@ -7234,6 +7439,12 @@ public class BatteryStatsImpl extends BatteryStats { } else { mForegroundActivityTimer = null; } + if (in.readInt() != 0) { + mForegroundServiceTimer = new StopwatchTimer(mBsi.mClocks, Uid.this, + FOREGROUND_SERVICE, null, mBsi.mOnBatteryTimeBase, in); + } else { + mForegroundServiceTimer = null; + } if (in.readInt() != 0) { mAggregatedPartialWakelockTimer = new DualTimer(mBsi.mClocks, this, AGGREGATED_WAKE_TYPE_PARTIAL, null, @@ -7335,7 +7546,7 @@ public class BatteryStatsImpl extends BatteryStats { throw new ParcelFormatException("Incompatible number of cpu clusters"); } - mCpuClusterSpeed = new LongSamplingCounter[numCpuClusters][]; + mCpuClusterSpeedTimesUs = new LongSamplingCounter[numCpuClusters][]; for (int cluster = 0; cluster < numCpuClusters; cluster++) { if (in.readInt() != 0) { int numSpeeds = in.readInt(); @@ -7345,18 +7556,19 @@ public class BatteryStatsImpl extends BatteryStats { } final LongSamplingCounter[] cpuSpeeds = new LongSamplingCounter[numSpeeds]; - mCpuClusterSpeed[cluster] = cpuSpeeds; + mCpuClusterSpeedTimesUs[cluster] = cpuSpeeds; for (int speed = 0; speed < numSpeeds; speed++) { if (in.readInt() != 0) { - cpuSpeeds[speed] = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in); + cpuSpeeds[speed] = new LongSamplingCounter( + mBsi.mOnBatteryTimeBase, in); } } } else { - mCpuClusterSpeed[cluster] = null; + mCpuClusterSpeedTimesUs[cluster] = null; } } } else { - mCpuClusterSpeed = null; + mCpuClusterSpeedTimesUs = null; } mCpuFreqTimeMs = LongSamplingCounterArray.readFromParcel(in, mBsi.mOnBatteryTimeBase); @@ -7728,17 +7940,6 @@ public class BatteryStatsImpl extends BatteryStats { return null; } - public void addExcessiveWake(long overTime, long usedTime) { - if (mExcessivePower == null) { - mExcessivePower = new ArrayList(); - } - ExcessivePower ew = new ExcessivePower(); - ew.type = ExcessivePower.TYPE_WAKE; - ew.overTime = overTime; - ew.usedTime = usedTime; - mExcessivePower.add(ew); - } - public void addExcessiveCpu(long overTime, long usedTime) { if (mExcessivePower == null) { mExcessivePower = new ArrayList(); @@ -7936,6 +8137,7 @@ public class BatteryStatsImpl extends BatteryStats { /** * Number of times wakeup alarms have occurred for this app. + * On screen-off timebase starting in report v25. */ ArrayMap mWakeupAlarms = new ArrayMap<>(); @@ -7964,7 +8166,7 @@ public class BatteryStatsImpl extends BatteryStats { mWakeupAlarms.clear(); for (int i=0; i 0) { + for (SamplingTimer timer : mRpmStats.values()) { + mOnBatteryTimeBase.remove(timer); + } + mRpmStats.clear(); + } + if (mScreenOffRpmStats.size() > 0) { + for (SamplingTimer timer : mScreenOffRpmStats.values()) { + mOnBatteryScreenOffTimeBase.remove(timer); + } + mScreenOffRpmStats.clear(); + } + if (mKernelWakelockStats.size() > 0) { for (SamplingTimer timer : mKernelWakelockStats.values()) { mOnBatteryScreenOffTimeBase.remove(timer); @@ -9401,33 +9656,52 @@ public class BatteryStatsImpl extends BatteryStats { } } - void updateDischargeScreenLevelsLocked(boolean oldScreenOn, boolean newScreenOn) { - if (oldScreenOn) { + void updateDischargeScreenLevelsLocked(int oldState, int newState) { + updateOldDischargeScreenLevelLocked(oldState); + updateNewDischargeScreenLevelLocked(newState); + } + + private void updateOldDischargeScreenLevelLocked(int state) { + if (isScreenOn(state)) { int diff = mDischargeScreenOnUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOn += diff; mDischargeAmountScreenOnSinceCharge += diff; } - } else { + } else if (isScreenDoze(state)) { + int diff = mDischargeScreenDozeUnplugLevel - mDischargeCurrentLevel; + if (diff > 0) { + mDischargeAmountScreenDoze += diff; + mDischargeAmountScreenDozeSinceCharge += diff; + } + } else if (isScreenOff(state)){ int diff = mDischargeScreenOffUnplugLevel - mDischargeCurrentLevel; if (diff > 0) { mDischargeAmountScreenOff += diff; mDischargeAmountScreenOffSinceCharge += diff; } } - if (newScreenOn) { + } + + private void updateNewDischargeScreenLevelLocked(int state) { + if (isScreenOn(state)) { mDischargeScreenOnUnplugLevel = mDischargeCurrentLevel; mDischargeScreenOffUnplugLevel = 0; - } else { + mDischargeScreenDozeUnplugLevel = 0; + } else if (isScreenDoze(state)){ + mDischargeScreenOnUnplugLevel = 0; + mDischargeScreenDozeUnplugLevel = mDischargeCurrentLevel; + mDischargeScreenOffUnplugLevel = 0; + } else if (isScreenOff(state)) { mDischargeScreenOnUnplugLevel = 0; + mDischargeScreenDozeUnplugLevel = 0; mDischargeScreenOffUnplugLevel = mDischargeCurrentLevel; } } public void pullPendingStateUpdatesLocked() { if (mOnBatteryInternal) { - final boolean screenOn = mScreenState == Display.STATE_ON; - updateDischargeScreenLevelsLocked(screenOn, screenOn); + updateDischargeScreenLevelsLocked(mScreenState, mScreenState); } } @@ -9750,7 +10024,7 @@ public class BatteryStatsImpl extends BatteryStats { return; } - final long elapsedRealtimeMs = SystemClock.elapsedRealtime(); + final long elapsedRealtimeMs = mClocks.elapsedRealtime(); long radioTime = mMobileRadioActivePerAppTimer.getTimeSinceMarkLocked( elapsedRealtimeMs * 1000); mMobileRadioActivePerAppTimer.setMark(elapsedRealtimeMs); @@ -10044,6 +10318,61 @@ public class BatteryStatsImpl extends BatteryStats { } } + /** + * Read and record Resource Power Manager (RPM) state and voter times. + * If RPM stats were fetched more recently than RPM_STATS_UPDATE_FREQ_MS ago, uses the old data + * instead of fetching it anew. + */ + public void updateRpmStatsLocked() { + if (mPlatformIdleStateCallback == null) return; + long now = SystemClock.elapsedRealtime(); + if (now - mLastRpmStatsUpdateTimeMs >= RPM_STATS_UPDATE_FREQ_MS) { + mPlatformIdleStateCallback.fillLowPowerStats(mTmpRpmStats); + mLastRpmStatsUpdateTimeMs = now; + } + + for (Map.Entry pstate + : mTmpRpmStats.mPlatformLowPowerStats.entrySet()) { + + // Update values for this platform state. + final String pName = pstate.getKey(); + final long pTimeUs = pstate.getValue().mTimeMs * 1000; + final int pCount = pstate.getValue().mCount; + getRpmTimerLocked(pName).update(pTimeUs, pCount); + if (SCREEN_OFF_RPM_STATS_ENABLED) { + getScreenOffRpmTimerLocked(pName).update(pTimeUs, pCount); + } + + // Update values for each voter of this platform state. + for (Map.Entry voter + : pstate.getValue().mVoters.entrySet()) { + final String vName = pName + "." + voter.getKey(); + final long vTimeUs = voter.getValue().mTimeMs * 1000; + final int vCount = voter.getValue().mCount; + getRpmTimerLocked(vName).update(vTimeUs, vCount); + if (SCREEN_OFF_RPM_STATS_ENABLED) { + getScreenOffRpmTimerLocked(vName).update(vTimeUs, vCount); + } + } + } + + for (Map.Entry subsys + : mTmpRpmStats.mSubsystemLowPowerStats.entrySet()) { + + final String subsysName = subsys.getKey(); + for (Map.Entry sstate + : subsys.getValue().mStates.entrySet()) { + final String name = subsysName + "." + sstate.getKey(); + final long timeUs = sstate.getValue().mTimeMs * 1000; + final int count = sstate.getValue().mCount; + getRpmTimerLocked(name).update(timeUs, count); + if (SCREEN_OFF_RPM_STATS_ENABLED) { + getScreenOffRpmTimerLocked(name).update(timeUs, count); + } + } + } + } + /** * Read and distribute kernel wake lock use across apps. */ @@ -10146,12 +10475,6 @@ public class BatteryStatsImpl extends BatteryStats { // If no app is holding a wakelock, then the distribution is normal. final int wakelockWeight = 50; - // Read the time spent for each cluster at various cpu frequencies. - final long[][] clusterSpeeds = new long[mKernelCpuSpeedReaders.length][]; - for (int cluster = 0; cluster < mKernelCpuSpeedReaders.length; cluster++) { - clusterSpeeds[cluster] = mKernelCpuSpeedReaders[cluster].readDelta(); - } - int numWakelocks = 0; // Calculate how many wakelocks we have to distribute amongst. The system is excluded. @@ -10175,10 +10498,13 @@ public class BatteryStatsImpl extends BatteryStats { mTempTotalCpuUserTimeUs = 0; mTempTotalCpuSystemTimeUs = 0; + final SparseLongArray updatedUids = new SparseLongArray(); + // Read the CPU data for each UID. This will internally generate a snapshot so next time // we read, we get a delta. If we are to distribute the cpu time, then do so. Otherwise // we just ignore the data. final long startTimeMs = mClocks.uptimeMillis(); + mUserInfoProvider.refreshUserIds(); mKernelUidCpuTimeReader.readDelta(!mOnBatteryInternal ? null : new KernelUidCpuTimeReader.Callback() { @Override @@ -10192,6 +10518,11 @@ public class BatteryStatsImpl extends BatteryStats { + " no mapping to owning uid: " + uid); return; } + if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) { + Slog.d(TAG, "Got readings for an invalid user's uid " + uid); + mKernelUidCpuTimeReader.removeUid(uid); + return; + } final Uid u = getUidStatsLocked(uid); // Accumulate the total system and user time. @@ -10226,32 +10557,7 @@ public class BatteryStatsImpl extends BatteryStats { u.mUserCpuTime.addCountLocked(userTimeUs); u.mSystemCpuTime.addCountLocked(systemTimeUs); - - // Add the cpu speeds to this UID. These are used as a ratio - // for computing the power this UID used. - final int numClusters = mPowerProfile.getNumCpuClusters(); - if (u.mCpuClusterSpeed == null || u.mCpuClusterSpeed.length != - numClusters) { - u.mCpuClusterSpeed = new LongSamplingCounter[numClusters][]; - } - - for (int cluster = 0; cluster < clusterSpeeds.length; cluster++) { - final int speedsInCluster = mPowerProfile.getNumSpeedStepsInCpuCluster( - cluster); - if (u.mCpuClusterSpeed[cluster] == null || speedsInCluster != - u.mCpuClusterSpeed[cluster].length) { - u.mCpuClusterSpeed[cluster] = - new LongSamplingCounter[speedsInCluster]; - } - - final LongSamplingCounter[] cpuSpeeds = u.mCpuClusterSpeed[cluster]; - for (int speed = 0; speed < clusterSpeeds[cluster].length; speed++) { - if (cpuSpeeds[speed] == null) { - cpuSpeeds[speed] = new LongSamplingCounter(mOnBatteryTimeBase); - } - cpuSpeeds[speed].addCountLocked(clusterSpeeds[cluster][speed]); - } - } + updatedUids.put(u.getUid(), userTimeUs + systemTimeUs); } }); @@ -10291,6 +10597,8 @@ public class BatteryStatsImpl extends BatteryStats { timer.mUid.mUserCpuTime.addCountLocked(userTimeUs); timer.mUid.mSystemCpuTime.addCountLocked(systemTimeUs); + final int uid = timer.mUid.getUid(); + updatedUids.put(uid, updatedUids.get(uid, 0) + userTimeUs + systemTimeUs); final Uid.Proc proc = timer.mUid.getProcessStatsLocked("*wakelock*"); proc.addCpuTimeLocked(userTimeUs / 1000, systemTimeUs / 1000); @@ -10315,6 +10623,8 @@ public class BatteryStatsImpl extends BatteryStats { final Uid u = getUidStatsLocked(Process.SYSTEM_UID); u.mUserCpuTime.addCountLocked(mTempTotalCpuUserTimeUs); u.mSystemCpuTime.addCountLocked(mTempTotalCpuSystemTimeUs); + updatedUids.put(Process.SYSTEM_UID, updatedUids.get(Process.SYSTEM_UID, 0) + + mTempTotalCpuUserTimeUs + mTempTotalCpuSystemTimeUs); final Uid.Proc proc = u.getProcessStatsLocked("*lost*"); proc.addCpuTimeLocked((int) mTempTotalCpuUserTimeUs / 1000, @@ -10322,6 +10632,53 @@ public class BatteryStatsImpl extends BatteryStats { } } + long totalCpuClustersTimeMs = 0; + // Read the time spent for each cluster at various cpu frequencies. + final long[][] clusterSpeedTimesMs = new long[mKernelCpuSpeedReaders.length][]; + for (int cluster = 0; cluster < mKernelCpuSpeedReaders.length; cluster++) { + clusterSpeedTimesMs[cluster] = mKernelCpuSpeedReaders[cluster].readDelta(); + if (clusterSpeedTimesMs[cluster] != null) { + for (int speed = clusterSpeedTimesMs[cluster].length - 1; speed >= 0; --speed) { + totalCpuClustersTimeMs += clusterSpeedTimesMs[cluster][speed]; + } + } + } + if (totalCpuClustersTimeMs != 0) { + // We have cpu times per freq aggregated over all uids but we need the times per uid. + // So, we distribute total time spent by an uid to different cpu freqs based on the + // amount of time cpu was running at that freq. + final int updatedUidsCount = updatedUids.size(); + for (int i = 0; i < updatedUidsCount; ++i) { + final Uid u = getUidStatsLocked(updatedUids.keyAt(i)); + final long appCpuTimeUs = updatedUids.valueAt(i); + // Add the cpu speeds to this UID. + final int numClusters = mPowerProfile.getNumCpuClusters(); + if (u.mCpuClusterSpeedTimesUs == null || u.mCpuClusterSpeedTimesUs.length != + numClusters) { + u.mCpuClusterSpeedTimesUs = new LongSamplingCounter[numClusters][]; + } + + for (int cluster = 0; cluster < clusterSpeedTimesMs.length; cluster++) { + final int speedsInCluster = clusterSpeedTimesMs[cluster].length; + if (u.mCpuClusterSpeedTimesUs[cluster] == null || speedsInCluster != + u.mCpuClusterSpeedTimesUs[cluster].length) { + u.mCpuClusterSpeedTimesUs[cluster] + = new LongSamplingCounter[speedsInCluster]; + } + + final LongSamplingCounter[] cpuSpeeds = u.mCpuClusterSpeedTimesUs[cluster]; + for (int speed = 0; speed < speedsInCluster; speed++) { + if (cpuSpeeds[speed] == null) { + cpuSpeeds[speed] = new LongSamplingCounter(mOnBatteryTimeBase); + } + cpuSpeeds[speed].addCountLocked(appCpuTimeUs + * clusterSpeedTimesMs[cluster][speed] + / totalCpuClustersTimeMs); + } + } + } + } + // See if there is a difference in wakelocks between this collection and the last // collection. if (ArrayUtils.referenceEquals(mPartialTimers, mLastPartialTimers)) { @@ -10364,12 +10721,19 @@ public class BatteryStatsImpl extends BatteryStats { + " no mapping to owning uid: " + uid); return; } + if (!mUserInfoProvider.exists(UserHandle.getUserId(uid))) { + Slog.d(TAG, "Got readings for an invalid user's uid " + uid); + mKernelUidCpuFreqTimeReader.removeUid(uid); + return; + } final Uid u = getUidStatsLocked(uid); - if (u.mCpuFreqTimeMs == null) { + if (u.mCpuFreqTimeMs == null + || u.mCpuFreqTimeMs.getSize() != cpuFreqTimeMs.length) { u.mCpuFreqTimeMs = new LongSamplingCounterArray(mOnBatteryTimeBase); } u.mCpuFreqTimeMs.addCountLocked(cpuFreqTimeMs); - if (u.mScreenOffCpuFreqTimeMs == null) { + if (u.mScreenOffCpuFreqTimeMs == null + || u.mScreenOffCpuFreqTimeMs.getSize() != cpuFreqTimeMs.length) { u.mScreenOffCpuFreqTimeMs = new LongSamplingCounterArray( mOnBatteryScreenOffTimeBase); } @@ -10392,8 +10756,8 @@ public class BatteryStatsImpl extends BatteryStats { return false; } - void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, final boolean onBattery, - final int oldStatus, final int level, final int chargeUAh) { + protected void setOnBatteryLocked(final long mSecRealtime, final long mSecUptime, + final boolean onBattery, final int oldStatus, final int level, final int chargeUAh) { boolean doWrite = false; Message m = mHandler.obtainMessage(MSG_REPORT_POWER_CHANGE); m.arg1 = onBattery ? 1 : 0; @@ -10401,7 +10765,7 @@ public class BatteryStatsImpl extends BatteryStats { final long uptime = mSecUptime * 1000; final long realtime = mSecRealtime * 1000; - final boolean screenOn = mScreenState == Display.STATE_ON; + final int screenState = mScreenState; if (onBattery) { // We will reset our status if we are unplugging after the // battery was last full, or the level is at 100, or @@ -10477,16 +10841,23 @@ public class BatteryStatsImpl extends BatteryStats { } addHistoryRecordLocked(mSecRealtime, mSecUptime); mDischargeCurrentLevel = mDischargeUnplugLevel = level; - if (screenOn) { + if (isScreenOn(screenState)) { mDischargeScreenOnUnplugLevel = level; + mDischargeScreenDozeUnplugLevel = 0; + mDischargeScreenOffUnplugLevel = 0; + } else if (isScreenDoze(screenState)) { + mDischargeScreenOnUnplugLevel = 0; + mDischargeScreenDozeUnplugLevel = level; mDischargeScreenOffUnplugLevel = 0; } else { mDischargeScreenOnUnplugLevel = 0; + mDischargeScreenDozeUnplugLevel = 0; mDischargeScreenOffUnplugLevel = level; } mDischargeAmountScreenOn = 0; + mDischargeAmountScreenDoze = 0; mDischargeAmountScreenOff = 0; - updateTimeBasesLocked(true, !screenOn, uptime, realtime); + updateTimeBasesLocked(true, screenState, uptime, realtime); } else { mLastChargingStateLevel = level; mOnBattery = mOnBatteryInternal = false; @@ -10501,8 +10872,8 @@ public class BatteryStatsImpl extends BatteryStats { mLowDischargeAmountSinceCharge += mDischargeUnplugLevel-level-1; mHighDischargeAmountSinceCharge += mDischargeUnplugLevel-level; } - updateDischargeScreenLevelsLocked(screenOn, screenOn); - updateTimeBasesLocked(false, !screenOn, uptime, realtime); + updateDischargeScreenLevelsLocked(screenState, screenState); + updateTimeBasesLocked(false, screenState, uptime, realtime); mChargeStepTracker.init(); mLastChargeStepLevel = level; mMaxChargeStepLevel = level; @@ -10619,6 +10990,9 @@ public class BatteryStatsImpl extends BatteryStats { final long chargeDiff = mHistoryCur.batteryChargeUAh - chargeUAh; mDischargeCounter.addCountLocked(chargeDiff); mDischargeScreenOffCounter.addCountLocked(chargeDiff); + if (isScreenDoze(mScreenState)) { + mDischargeScreenDozeCounter.addCountLocked(chargeDiff); + } } mHistoryCur.batteryChargeUAh = chargeUAh; setOnBatteryLocked(elapsedRealtime, uptime, onBattery, oldStatus, level, chargeUAh); @@ -10661,6 +11035,9 @@ public class BatteryStatsImpl extends BatteryStats { final long chargeDiff = mHistoryCur.batteryChargeUAh - chargeUAh; mDischargeCounter.addCountLocked(chargeDiff); mDischargeScreenOffCounter.addCountLocked(chargeDiff); + if (isScreenDoze(mScreenState)) { + mDischargeScreenDozeCounter.addCountLocked(chargeDiff); + } } mHistoryCur.batteryChargeUAh = chargeUAh; changed = true; @@ -10969,10 +11346,11 @@ public class BatteryStatsImpl extends BatteryStats { return dischargeAmount; } + @Override public int getDischargeAmountScreenOn() { synchronized(this) { int val = mDischargeAmountScreenOn; - if (mOnBattery && mScreenState == Display.STATE_ON + if (mOnBattery && isScreenOn(mScreenState) && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } @@ -10980,10 +11358,11 @@ public class BatteryStatsImpl extends BatteryStats { } } + @Override public int getDischargeAmountScreenOnSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOnSinceCharge; - if (mOnBattery && mScreenState == Display.STATE_ON + if (mOnBattery && isScreenOn(mScreenState) && mDischargeCurrentLevel < mDischargeScreenOnUnplugLevel) { val += mDischargeScreenOnUnplugLevel-mDischargeCurrentLevel; } @@ -10991,24 +11370,52 @@ public class BatteryStatsImpl extends BatteryStats { } } + @Override public int getDischargeAmountScreenOff() { synchronized(this) { int val = mDischargeAmountScreenOff; - if (mOnBattery && mScreenState != Display.STATE_ON + if (mOnBattery && isScreenOff(mScreenState) && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } - return val; + // For backward compatibility, doze discharge is counted into screen off. + return val + getDischargeAmountScreenDoze(); } } + @Override public int getDischargeAmountScreenOffSinceCharge() { synchronized(this) { int val = mDischargeAmountScreenOffSinceCharge; - if (mOnBattery && mScreenState != Display.STATE_ON + if (mOnBattery && isScreenOff(mScreenState) && mDischargeCurrentLevel < mDischargeScreenOffUnplugLevel) { val += mDischargeScreenOffUnplugLevel-mDischargeCurrentLevel; } + // For backward compatibility, doze discharge is counted into screen off. + return val + getDischargeAmountScreenDozeSinceCharge(); + } + } + + @Override + public int getDischargeAmountScreenDoze() { + synchronized(this) { + int val = mDischargeAmountScreenDoze; + if (mOnBattery && isScreenDoze(mScreenState) + && mDischargeCurrentLevel < mDischargeScreenDozeUnplugLevel) { + val += mDischargeScreenDozeUnplugLevel-mDischargeCurrentLevel; + } + return val; + } + } + + @Override + public int getDischargeAmountScreenDozeSinceCharge() { + synchronized(this) { + int val = mDischargeAmountScreenDozeSinceCharge; + if (mOnBattery && isScreenDoze(mScreenState) + && mDischargeCurrentLevel < mDischargeScreenDozeUnplugLevel) { + val += mDischargeScreenDozeUnplugLevel-mDischargeCurrentLevel; + } return val; } } @@ -11025,6 +11432,23 @@ public class BatteryStatsImpl extends BatteryStats { return u; } + public void onCleanupUserLocked(int userId) { + final int firstUidForUser = UserHandle.getUid(userId, 0); + final int lastUidForUser = UserHandle.getUid(userId, UserHandle.PER_USER_RANGE - 1); + mKernelUidCpuFreqTimeReader.removeUidsInRange(firstUidForUser, lastUidForUser); + mKernelUidCpuTimeReader.removeUidsInRange(firstUidForUser, lastUidForUser); + } + + public void onUserRemovedLocked(int userId) { + final int firstUidForUser = UserHandle.getUid(userId, 0); + final int lastUidForUser = UserHandle.getUid(userId, UserHandle.PER_USER_RANGE - 1); + mUidStats.put(firstUidForUser, null); + mUidStats.put(lastUidForUser, null); + final int firstIndex = mUidStats.indexOfKey(firstUidForUser); + final int lastIndex = mUidStats.indexOfKey(lastUidForUser); + mUidStats.removeAtRange(firstIndex, lastIndex - firstIndex + 1); + } + /** * Remove the statistics object for a particular uid. */ @@ -11349,12 +11773,14 @@ public class BatteryStatsImpl extends BatteryStats { mHighDischargeAmountSinceCharge = in.readInt(); mDischargeAmountScreenOnSinceCharge = in.readInt(); mDischargeAmountScreenOffSinceCharge = in.readInt(); + mDischargeAmountScreenDozeSinceCharge = in.readInt(); mDischargeStepTracker.readFromParcel(in); mChargeStepTracker.readFromParcel(in); mDailyDischargeStepTracker.readFromParcel(in); mDailyChargeStepTracker.readFromParcel(in); mDischargeCounter.readSummaryFromParcelLocked(in); mDischargeScreenOffCounter.readSummaryFromParcelLocked(in); + mDischargeScreenDozeCounter.readSummaryFromParcelLocked(in); int NPKG = in.readInt(); if (NPKG > 0) { mDailyPackageChanges = new ArrayList<>(NPKG); @@ -11377,6 +11803,7 @@ public class BatteryStatsImpl extends BatteryStats { mScreenState = Display.STATE_UNKNOWN; mScreenOnTimer.readSummaryFromParcelLocked(in); + mScreenDozeTimer.readSummaryFromParcelLocked(in); for (int i=0; i 10000) { + throw new ParcelFormatException("File corrupt: too many rpm stats " + NRPMS); + } + for (int irpm = 0; irpm < NRPMS; irpm++) { + if (in.readInt() != 0) { + String rpmName = in.readString(); + getRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in); + } + } + int NSORPMS = in.readInt(); + if (NSORPMS > 10000) { + throw new ParcelFormatException("File corrupt: too many screen-off rpm stats " + NSORPMS); + } + for (int irpm = 0; irpm < NSORPMS; irpm++) { + if (in.readInt() != 0) { + String rpmName = in.readString(); + getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in); + } + } + int NKW = in.readInt(); if (NKW > 10000) { throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW); @@ -11519,6 +11967,9 @@ public class BatteryStatsImpl extends BatteryStats { if (in.readInt() != 0) { u.createForegroundActivityTimerLocked().readSummaryFromParcelLocked(in); } + if (in.readInt() != 0) { + u.createForegroundServiceTimerLocked().readSummaryFromParcelLocked(in); + } if (in.readInt() != 0) { u.createAggregatedPartialWakelockTimerLocked().readSummaryFromParcelLocked(in); } @@ -11575,7 +12026,7 @@ public class BatteryStatsImpl extends BatteryStats { throw new ParcelFormatException("Incompatible cpu cluster arrangement"); } - u.mCpuClusterSpeed = new LongSamplingCounter[numClusters][]; + u.mCpuClusterSpeedTimesUs = new LongSamplingCounter[numClusters][]; for (int cluster = 0; cluster < numClusters; cluster++) { if (in.readInt() != 0) { final int NSB = in.readInt(); @@ -11585,20 +12036,20 @@ public class BatteryStatsImpl extends BatteryStats { NSB); } - u.mCpuClusterSpeed[cluster] = new LongSamplingCounter[NSB]; + u.mCpuClusterSpeedTimesUs[cluster] = new LongSamplingCounter[NSB]; for (int speed = 0; speed < NSB; speed++) { if (in.readInt() != 0) { - u.mCpuClusterSpeed[cluster][speed] = new LongSamplingCounter( + u.mCpuClusterSpeedTimesUs[cluster][speed] = new LongSamplingCounter( mOnBatteryTimeBase); - u.mCpuClusterSpeed[cluster][speed].readSummaryFromParcelLocked(in); + u.mCpuClusterSpeedTimesUs[cluster][speed].readSummaryFromParcelLocked(in); } } } else { - u.mCpuClusterSpeed[cluster] = null; + u.mCpuClusterSpeedTimesUs[cluster] = null; } } } else { - u.mCpuClusterSpeed = null; + u.mCpuClusterSpeedTimesUs = null; } u.mCpuFreqTimeMs = LongSamplingCounterArray.readSummaryFromParcelLocked( @@ -11647,6 +12098,8 @@ public class BatteryStatsImpl extends BatteryStats { u.readJobSummaryFromParcelLocked(name, in); } + u.readJobCompletionsFromParcelLocked(in); + int NP = in.readInt(); if (NP > 1000) { throw new ParcelFormatException("File corrupt: too many sensors " + NP); @@ -11688,7 +12141,7 @@ public class BatteryStatsImpl extends BatteryStats { p.mWakeupAlarms.clear(); for (int iwa=0; iwa ent : mRpmStats.entrySet()) { + Timer rpmt = ent.getValue(); + if (rpmt != null) { + out.writeInt(1); + out.writeString(ent.getKey()); + rpmt.writeSummaryFromParcelLocked(out, NOWREAL_SYS); + } else { + out.writeInt(0); + } + } + out.writeInt(mScreenOffRpmStats.size()); + for (Map.Entry ent : mScreenOffRpmStats.entrySet()) { + Timer rpmt = ent.getValue(); + if (rpmt != null) { + out.writeInt(1); + out.writeString(ent.getKey()); + rpmt.writeSummaryFromParcelLocked(out, NOWREAL_SYS); + } else { + out.writeInt(0); + } + } + out.writeInt(mKernelWakelockStats.size()); for (Map.Entry ent : mKernelWakelockStats.entrySet()) { Timer kwlt = ent.getValue(); @@ -11929,6 +12408,12 @@ public class BatteryStatsImpl extends BatteryStats { } else { out.writeInt(0); } + if (u.mForegroundServiceTimer != null) { + out.writeInt(1); + u.mForegroundServiceTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS); + } else { + out.writeInt(0); + } if (u.mAggregatedPartialWakelockTimer != null) { out.writeInt(1); u.mAggregatedPartialWakelockTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS); @@ -11998,10 +12483,10 @@ public class BatteryStatsImpl extends BatteryStats { u.mUserCpuTime.writeSummaryFromParcelLocked(out); u.mSystemCpuTime.writeSummaryFromParcelLocked(out); - if (u.mCpuClusterSpeed != null) { + if (u.mCpuClusterSpeedTimesUs != null) { out.writeInt(1); - out.writeInt(u.mCpuClusterSpeed.length); - for (LongSamplingCounter[] cpuSpeeds : u.mCpuClusterSpeed) { + out.writeInt(u.mCpuClusterSpeedTimesUs.length); + for (LongSamplingCounter[] cpuSpeeds : u.mCpuClusterSpeedTimesUs) { if (cpuSpeeds != null) { out.writeInt(1); out.writeInt(cpuSpeeds.length); @@ -12086,6 +12571,8 @@ public class BatteryStatsImpl extends BatteryStats { jobStats.valueAt(ij).writeSummaryFromParcelLocked(out, NOWREAL_SYS); } + u.writeJobCompletionsToParcelLocked(out); + int NSE = u.mSensorStats.size(); out.writeInt(NSE); for (int ise=0; ise ent : mRpmStats.entrySet()) { + SamplingTimer rpmt = ent.getValue(); + if (rpmt != null) { + out.writeInt(1); + out.writeString(ent.getKey()); + rpmt.writeToParcel(out, uSecRealtime); + } else { + out.writeInt(0); + } + } + out.writeInt(mScreenOffRpmStats.size()); + for (Map.Entry ent : mScreenOffRpmStats.entrySet()) { + SamplingTimer rpmt = ent.getValue(); + if (rpmt != null) { + out.writeInt(1); + out.writeString(ent.getKey()); + rpmt.writeToParcel(out, uSecRealtime); + } else { + out.writeInt(0); + } + } + if (inclUids) { out.writeInt(mKernelWakelockStats.size()); for (Map.Entry ent : mKernelWakelockStats.entrySet()) { @@ -12460,6 +12997,7 @@ public class BatteryStatsImpl extends BatteryStats { } } } else { + // TODO: There should be two 0's printed here, not just one. out.writeInt(0); } @@ -12518,8 +13056,10 @@ public class BatteryStatsImpl extends BatteryStats { pw.println("mOnBatteryScreenOffTimeBase:"); mOnBatteryScreenOffTimeBase.dump(pw, " "); Printer pr = new PrintWriterPrinter(pw); - pr.println("*** Screen timer:"); + pr.println("*** Screen on timer:"); mScreenOnTimer.logState(pr, " "); + pr.println("*** Screen doze timer:"); + mScreenDozeTimer.logState(pr, " "); for (int i=0; i mLastUidCpuFreqTimeMs = new SparseArray<>(); @@ -64,7 +69,9 @@ public class KernelUidCpuFreqTimeReader { return; } try (BufferedReader reader = new BufferedReader(new FileReader(UID_TIMES_PROC_FILE))) { + mNowTimeMs = SystemClock.elapsedRealtime(); readDelta(reader, callback); + mLastTimeReadMs = mNowTimeMs; mProcFileAvailable = true; } catch (IOException e) { mReadErrorCounter++; @@ -76,6 +83,17 @@ public class KernelUidCpuFreqTimeReader { mLastUidCpuFreqTimeMs.delete(uid); } + public void removeUidsInRange(int startUid, int endUid) { + if (endUid < startUid) { + return; + } + mLastUidCpuFreqTimeMs.put(startUid, null); + mLastUidCpuFreqTimeMs.put(endUid, null); + final int firstIndex = mLastUidCpuFreqTimeMs.indexOfKey(startUid); + final int lastIndex = mLastUidCpuFreqTimeMs.indexOfKey(endUid); + mLastUidCpuFreqTimeMs.removeAtRange(firstIndex, lastIndex - firstIndex + 1); + } + @VisibleForTesting public void readDelta(BufferedReader reader, @Nullable Callback callback) throws IOException { String line = reader.readLine(); @@ -104,14 +122,37 @@ public class KernelUidCpuFreqTimeReader { return; } final long[] deltaUidTimeMs = new long[size]; + final long[] curUidTimeMs = new long[size]; + boolean notify = false; for (int i = 0; i < size; ++i) { // Times read will be in units of 10ms final long totalTimeMs = Long.parseLong(timesStr[i], 10) * 10; deltaUidTimeMs[i] = totalTimeMs - uidTimeMs[i]; - uidTimeMs[i] = totalTimeMs; + // If there is malformed data for any uid, then we just log about it and ignore + // the data for that uid. + if (deltaUidTimeMs[i] < 0 || totalTimeMs < 0) { + if (DEBUG) { + final StringBuilder sb = new StringBuilder("Malformed cpu freq data for UID=") + .append(uid).append("\n"); + sb.append("data=").append("(").append(uidTimeMs[i]).append(",") + .append(totalTimeMs).append(")").append("\n"); + sb.append("times=").append("("); + TimeUtils.formatDuration(mLastTimeReadMs, sb); + sb.append(","); + TimeUtils.formatDuration(mNowTimeMs, sb); + sb.append(")"); + Slog.e(TAG, sb.toString()); + } + return; + } + curUidTimeMs[i] = totalTimeMs; + notify = notify || (deltaUidTimeMs[i] > 0); } - if (callback != null) { - callback.onUidCpuFreqTime(uid, deltaUidTimeMs); + if (notify) { + System.arraycopy(curUidTimeMs, 0, uidTimeMs, 0, size); + if (callback != null) { + callback.onUidCpuFreqTime(uid, deltaUidTimeMs); + } } } diff --git a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java index 181e1ac9f3ecf72647ad8a2647c5160ea0586f47..37d9d1d475ee31d7659aac01cfbf01b45e5047bf 100644 --- a/core/java/com/android/internal/os/KernelUidCpuTimeReader.java +++ b/core/java/com/android/internal/os/KernelUidCpuTimeReader.java @@ -130,17 +130,42 @@ public class KernelUidCpuTimeReader { * @param uid The UID to remove. */ public void removeUid(int uid) { - int index = mLastUserTimeUs.indexOfKey(uid); + final int index = mLastSystemTimeUs.indexOfKey(uid); if (index >= 0) { - mLastUserTimeUs.removeAt(index); mLastSystemTimeUs.removeAt(index); + mLastUserTimeUs.removeAt(index); + } + removeUidsFromKernelModule(uid, uid); + } + + /** + * Removes UIDs in a given range from the kernel module and internal accounting data. + * @param startUid the first uid to remove + * @param endUid the last uid to remove + */ + public void removeUidsInRange(int startUid, int endUid) { + if (endUid < startUid) { + return; } + mLastSystemTimeUs.put(startUid, 0); + mLastUserTimeUs.put(startUid, 0); + mLastSystemTimeUs.put(endUid, 0); + mLastUserTimeUs.put(endUid, 0); + final int startIndex = mLastSystemTimeUs.indexOfKey(startUid); + final int endIndex = mLastSystemTimeUs.indexOfKey(endUid); + mLastSystemTimeUs.removeAtRange(startIndex, endIndex - startIndex + 1); + mLastUserTimeUs.removeAtRange(startIndex, endIndex - startIndex + 1); + removeUidsFromKernelModule(startUid, endUid); + } + private void removeUidsFromKernelModule(int startUid, int endUid) { + Slog.d(TAG, "Removing uids " + startUid + "-" + endUid); try (FileWriter writer = new FileWriter(sRemoveUidProcFile)) { - writer.write(Integer.toString(uid) + "-" + Integer.toString(uid)); + writer.write(startUid + "-" + endUid); writer.flush(); } catch (IOException e) { - Slog.e(TAG, "failed to remove uid from uid_cputime module", e); + Slog.e(TAG, "failed to remove uids " + startUid + " - " + endUid + + " from uid_cputime module", e); } } } diff --git a/core/java/com/android/internal/os/PathClassLoaderFactory.java b/core/java/com/android/internal/os/PathClassLoaderFactory.java deleted file mode 100644 index 06a93b254bf5af8df4f547acd49adb939441d9b7..0000000000000000000000000000000000000000 --- a/core/java/com/android/internal/os/PathClassLoaderFactory.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.internal.os; - -import android.os.Trace; - -import dalvik.system.PathClassLoader; - -/** - * Creates path class loaders. - * - * @hide - */ -public class PathClassLoaderFactory { - // Unconstructable - private PathClassLoaderFactory() {} - - /** - * Create a PathClassLoader and initialize a linker-namespace for it. - * - * @hide - */ - public static PathClassLoader createClassLoader(String dexPath, - String librarySearchPath, - String libraryPermittedPath, - ClassLoader parent, - int targetSdkVersion, - boolean isNamespaceShared) { - PathClassLoader pathClassloader = new PathClassLoader(dexPath, librarySearchPath, parent); - - Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "createClassloaderNamespace"); - String errorMessage = createClassloaderNamespace(pathClassloader, - targetSdkVersion, - librarySearchPath, - libraryPermittedPath, - isNamespaceShared); - Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); - - if (errorMessage != null) { - throw new UnsatisfiedLinkError("Unable to create namespace for the classloader " + - pathClassloader + ": " + errorMessage); - } - - return pathClassloader; - } - - private static native String createClassloaderNamespace(ClassLoader classLoader, - int targetSdkVersion, - String librarySearchPath, - String libraryPermittedPath, - boolean isNamespaceShared); -} diff --git a/core/java/com/android/internal/os/PowerProfile.java b/core/java/com/android/internal/os/PowerProfile.java index 51cf2eae851f94cc6fc97b1102b3bb164b5ded11..872b465a9ca58aeacbc54ad781817dd8f1861ef8 100644 --- a/core/java/com/android/internal/os/PowerProfile.java +++ b/core/java/com/android/internal/os/PowerProfile.java @@ -205,13 +205,17 @@ public class PowerProfile { private static final String TAG_ARRAYITEM = "value"; private static final String ATTR_NAME = "name"; + private static final Object sLock = new Object(); + public PowerProfile(Context context) { // Read the XML file for the given profile (normally only one per // device) - if (sPowerMap.size() == 0) { - readPowerValuesFromXml(context); + synchronized (sLock) { + if (sPowerMap.size() == 0) { + readPowerValuesFromXml(context); + } + initCpuClusters(); } - initCpuClusters(); } private void readPowerValuesFromXml(Context context) { diff --git a/core/java/com/android/internal/os/RpmStats.java b/core/java/com/android/internal/os/RpmStats.java new file mode 100644 index 0000000000000000000000000000000000000000..befc76e50ad55260adeb556e3fd24b42a3bb5013 --- /dev/null +++ b/core/java/com/android/internal/os/RpmStats.java @@ -0,0 +1,112 @@ +/* + * 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.internal.os; + +import android.util.ArrayMap; + +import java.util.Map; + +/** + * Container for Resource Power Manager states and their data. + * Values can be populated by the BatteryStatsService.fillLowPowerStats jni function. + */ +public final class RpmStats { + public Map mPlatformLowPowerStats = new ArrayMap<>(); + public Map mSubsystemLowPowerStats = new ArrayMap<>(); + + /** + * Finds the PowerStatePlatformSleepState with the given name (creating it if it doesn't exist), + * updates its timeMs and count, and returns it. + */ + @SuppressWarnings("unused") + public PowerStatePlatformSleepState getAndUpdatePlatformState( + String name, long timeMs, int count) { + + PowerStatePlatformSleepState e = mPlatformLowPowerStats.get(name); + if (e == null) { + e = new PowerStatePlatformSleepState(); + mPlatformLowPowerStats.put(name, e); + } + e.mTimeMs = timeMs; + e.mCount = count; + return e; + } + + /** + * Returns the PowerStateSubsystem with the given name (creating it if it doesn't exist). + */ + public PowerStateSubsystem getSubsystem(String name) { + PowerStateSubsystem e = mSubsystemLowPowerStats.get(name); + if (e == null) { + e = new PowerStateSubsystem(); + mSubsystemLowPowerStats.put(name, e); + } + return e; + } + + /** Represents a subsystem state or a platform voter. */ + public static class PowerStateElement { + public long mTimeMs; // totalTimeInMsecVotedForSinceBoot + public int mCount; // totalNumberOfTimesVotedSinceBoot + + private PowerStateElement(long timeMs, int count) { + this.mTimeMs = timeMs; + this.mCount = count; + } + } + + /** Represents a PowerStatePlatformSleepState, per hardware/interfaces/power/1.0/types.hal */ + public static class PowerStatePlatformSleepState { + public long mTimeMs; // residencyInMsecSinceBoot + public int mCount; // totalTransitions + public Map mVoters = new ArrayMap<>(); // voters for this platform-level sleep state + + /** + * Updates (creating if necessary) the voter with the given name, with the given timeMs and + * count. + */ + @SuppressWarnings("unused") + public void putVoter(String name, long timeMs, int count) { + PowerStateElement e = mVoters.get(name); + if (e == null) { + mVoters.put(name, new PowerStateElement(timeMs, count)); + } else { + e.mTimeMs = timeMs; + e.mCount = count; + } + } + } + + /** Represents a PowerStateSubsystem, per hardware/interfaces/power/1.1/types.hal */ + public static class PowerStateSubsystem { + public Map mStates = new ArrayMap<>(); // sleep states supported by this susbsystem + + /** + * Updates (creating if necessary) the subsystem state with the given name, with the given + * timeMs and count. + */ + @SuppressWarnings("unused") + public void putState(String name, long timeMs, int count) { + PowerStateElement e = mStates.get(name); + if (e == null) { + mStates.put(name, new PowerStateElement(timeMs, count)); + } else { + e.mTimeMs = timeMs; + e.mCount = count; + } + } + } +} diff --git a/core/java/com/android/internal/os/WebViewZygoteInit.java b/core/java/com/android/internal/os/WebViewZygoteInit.java index 7f46a0c1abdec0acf71a1a35ab9dffba0e203224..cadb66ae6e08bf6e757828cf73ab3dfae6ed0f4a 100644 --- a/core/java/com/android/internal/os/WebViewZygoteInit.java +++ b/core/java/com/android/internal/os/WebViewZygoteInit.java @@ -29,7 +29,7 @@ import android.webkit.WebViewFactoryProvider; import java.io.DataOutputStream; import java.io.File; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; /** * Startup class for the WebView zygote process. @@ -91,13 +91,18 @@ class WebViewZygoteInit { try { Class providerClass = WebViewFactory.getWebViewProviderClass(loader); - Object result = providerClass.getMethod("preloadInZygote").invoke(null); - preloadSucceeded = ((Boolean) result).booleanValue(); - if (!preloadSucceeded) { - Log.e(TAG, "preloadInZygote returned false"); + Method preloadInZygote = providerClass.getMethod("preloadInZygote"); + preloadInZygote.setAccessible(true); + if (preloadInZygote.getReturnType() != Boolean.TYPE) { + Log.e(TAG, "Unexpected return type: preloadInZygote must return boolean"); + } else { + preloadSucceeded = (boolean) providerClass.getMethod("preloadInZygote") + .invoke(null); + if (!preloadSucceeded) { + Log.e(TAG, "preloadInZygote returned false"); + } } - } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | - IllegalAccessException | InvocationTargetException e) { + } catch (ReflectiveOperationException e) { Log.e(TAG, "Exception while preloading package", e); } diff --git a/core/java/com/android/internal/os/WrapperInit.java b/core/java/com/android/internal/os/WrapperInit.java index 89328b21ccf5cd85c64e197328f10862bafe7146..49010802c784a46613dd19a739a7937c6b436244 100644 --- a/core/java/com/android/internal/os/WrapperInit.java +++ b/core/java/com/android/internal/os/WrapperInit.java @@ -23,7 +23,7 @@ import android.system.Os; import android.system.OsConstants; import android.system.StructCapUserData; import android.system.StructCapUserHeader; -import android.util.BootTimingsTraceLog; +import android.util.TimingsTraceLog; import android.util.Slog; import dalvik.system.VMRuntime; import java.io.DataOutputStream; @@ -80,7 +80,7 @@ public class WrapperInit { } // Mimic system Zygote preloading. - ZygoteInit.preload(new BootTimingsTraceLog("WrapperInitTiming", + ZygoteInit.preload(new TimingsTraceLog("WrapperInitTiming", Trace.TRACE_TAG_DALVIK)); // Launch the application. diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 0bb7326a682b17729582fc12b457e8d06b52ab48..6a87b1f4d3fd8311e5d7c1d6af7f692de821f2a3 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -43,7 +43,6 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; import java.io.FileDescriptor; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 3cda820eb27679ca01247b4a78bf6d12874ffb4d..2be6212b9f1ee77e97a01b62f0ee4eb0f848c530 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -45,7 +45,7 @@ import android.system.OsConstants; import android.system.StructCapUserData; import android.system.StructCapUserHeader; import android.text.Hyphenator; -import android.util.BootTimingsTraceLog; +import android.util.TimingsTraceLog; import android.util.EventLog; import android.util.Log; import android.util.Slog; @@ -56,7 +56,6 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.util.Preconditions; import dalvik.system.DexFile; -import dalvik.system.PathClassLoader; import dalvik.system.VMRuntime; import dalvik.system.ZygoteHooks; @@ -121,7 +120,7 @@ public class ZygoteInit { private static boolean sPreloadComplete; - static void preload(BootTimingsTraceLog bootTimingsTraceLog) { + static void preload(TimingsTraceLog bootTimingsTraceLog) { Log.d(TAG, "begin preload"); bootTimingsTraceLog.traceBegin("BeginIcuCachePinning"); beginIcuCachePinning(); @@ -154,7 +153,7 @@ public class ZygoteInit { Preconditions.checkState(!sPreloadComplete); Log.i(TAG, "Lazily preloading resources."); - preload(new BootTimingsTraceLog("ZygoteInitTiming_lazy", Trace.TRACE_TAG_DALVIK)); + preload(new TimingsTraceLog("ZygoteInitTiming_lazy", Trace.TRACE_TAG_DALVIK)); } private static void beginIcuCachePinning() { @@ -521,15 +520,12 @@ public class ZygoteInit { * namespace, i.e., this classloader can access platform-private native libraries. The * classloader will use java.library.path as the native library path. */ - static PathClassLoader createPathClassLoader(String classPath, int targetSdkVersion) { - String libraryPath = System.getProperty("java.library.path"); - - return PathClassLoaderFactory.createClassLoader(classPath, - libraryPath, - libraryPath, - ClassLoader.getSystemClassLoader(), - targetSdkVersion, - true /* isNamespaceShared */); + static ClassLoader createPathClassLoader(String classPath, int targetSdkVersion) { + String libraryPath = System.getProperty("java.library.path"); + + return ClassLoaderFactory.createClassLoader(classPath, libraryPath, libraryPath, + ClassLoader.getSystemClassLoader(), targetSdkVersion, true /* isNamespaceShared */, + null /* classLoaderName */); } /** @@ -542,7 +538,7 @@ public class ZygoteInit { .asInterface(ServiceManager.getService("installd")); final String instructionSet = VMRuntime.getRuntime().vmInstructionSet(); - String sharedLibraries = ""; + String classPathForElement = ""; for (String classPathElement : classPathElements) { // System server is fully AOTed and never profiled // for profile guided compilation. @@ -574,10 +570,12 @@ public class ZygoteInit { final String compilerFilter = systemServerFilter; final String uuid = StorageManager.UUID_PRIVATE_INTERNAL; final String seInfo = null; + final String classLoaderContext = + getSystemServerClassLoaderContext(classPathForElement); try { installd.dexopt(classPathElement, Process.SYSTEM_UID, packageName, instructionSet, dexoptNeeded, outputPath, dexFlags, compilerFilter, - uuid, sharedLibraries, seInfo, false /* downgrade */); + uuid, classLoaderContext, seInfo, false /* downgrade */); } catch (RemoteException | ServiceSpecificException e) { // Ignore (but log), we need this on the classpath for fallback mode. Log.w(TAG, "Failed compiling classpath element for system server: " @@ -585,13 +583,35 @@ public class ZygoteInit { } } - if (!sharedLibraries.isEmpty()) { - sharedLibraries += ":"; - } - sharedLibraries += classPathElement; + classPathForElement = encodeSystemServerClassPath( + classPathForElement, classPathElement); } } + /** + * Encodes the system server class loader context in a format that is accepted by dexopt. + * This assumes the system server is always loaded with a {@link dalvik.system.PathClassLoader}. + * + * Note that ideally we would use the {@code DexoptUtils} to compute this. However we have no + * dependency here on the server so we hard code the logic again. + */ + private static String getSystemServerClassLoaderContext(String classPath) { + return classPath == null ? "PCL[]" : "PCL[" + classPath + "]"; + } + + /** + * Encodes the class path in a format accepted by dexopt. + * @param classPath the old class path (may be empty). + * @param newElement the new class path elements + * @return the class path encoding resulted from appending {@code newElement} to + * {@code classPath}. + */ + private static String encodeSystemServerClassPath(String classPath, String newElement) { + return (classPath == null || classPath.isEmpty()) + ? newElement + : classPath + ":" + newElement; + } + /** * Prepare the arguments and forks for the system server process. * @@ -707,7 +727,7 @@ public class ZygoteInit { } String bootTimeTag = Process.is64Bit() ? "Zygote64Timing" : "Zygote32Timing"; - BootTimingsTraceLog bootTimingsTraceLog = new BootTimingsTraceLog(bootTimeTag, + TimingsTraceLog bootTimingsTraceLog = new TimingsTraceLog(bootTimeTag, Trace.TRACE_TAG_DALVIK); bootTimingsTraceLog.traceBegin("ZygoteInit"); RuntimeInit.enableDdms(); diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 60fbbe9778e7e8fec861dac6f7e2185850a42dd7..4e06577e35887eb4d668bb973a5e792a9847d4ec 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -17,6 +17,9 @@ package com.android.internal.policy; import android.graphics.Outline; +import android.graphics.drawable.InsetDrawable; +import android.graphics.drawable.LayerDrawable; +import android.util.Pair; import android.view.ViewOutlineProvider; import android.view.accessibility.AccessibilityNodeInfo; import com.android.internal.R; @@ -1061,7 +1064,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind WindowManager.LayoutParams attrs = mWindow.getAttributes(); int sysUiVisibility = attrs.systemUiVisibility | getWindowSystemUiVisibility(); - if (!mWindow.mIsFloating && ActivityManager.isHighEndGfx()) { + if (!mWindow.mIsFloating) { boolean disallowAnimate = !isLaidOut(); disallowAnimate |= ((mLastWindowFlags ^ attrs.flags) & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0; @@ -1103,8 +1106,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind boolean navBarToLeftEdge = isNavBarToLeftEdge(mLastBottomInset, mLastLeftInset); int navBarSize = getNavBarSize(mLastBottomInset, mLastRightInset, mLastLeftInset); updateColorViewInt(mNavigationColorViewState, sysUiVisibility, - mWindow.mNavigationBarColor, navBarSize, navBarToRightEdge || navBarToLeftEdge, - navBarToLeftEdge, + mWindow.mNavigationBarColor, mWindow.mNavigationBarDividerColor, navBarSize, + navBarToRightEdge || navBarToLeftEdge, navBarToLeftEdge, 0 /* sideInset */, animate && !disallowAnimate, false /* force */); boolean statusBarNeedsRightInset = navBarToRightEdge @@ -1114,7 +1117,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind int statusBarSideInset = statusBarNeedsRightInset ? mLastRightInset : statusBarNeedsLeftInset ? mLastLeftInset : 0; updateColorViewInt(mStatusColorViewState, sysUiVisibility, - calculateStatusBarColor(), mLastTopInset, + calculateStatusBarColor(), 0, mLastTopInset, false /* matchVertical */, statusBarNeedsLeftInset, statusBarSideInset, animate && !disallowAnimate, mForceWindowDrawsStatusBarBackground); @@ -1201,6 +1204,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind * @param state the color view to update. * @param sysUiVis the current systemUiVisibility to apply. * @param color the current color to apply. + * @param dividerColor the current divider color to apply. * @param size the current size in the non-parent-matching dimension. * @param verticalBar if true the view is attached to a vertical edge, otherwise to a * horizontal edge, @@ -1208,7 +1212,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind * @param animate if true, the change will be animated. */ private void updateColorViewInt(final ColorViewState state, int sysUiVis, int color, - int size, boolean verticalBar, boolean seascape, int sideMargin, + int dividerColor, int size, boolean verticalBar, boolean seascape, int sideMargin, boolean animate, boolean force) { state.present = state.attributes.isPresent(sysUiVis, mWindow.getAttributes().flags, force); boolean show = state.attributes.isVisible(state.present, color, @@ -1227,7 +1231,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind if (view == null) { if (showView) { state.view = view = new View(mContext); - view.setBackgroundColor(color); + setColor(view, color, dividerColor, verticalBar, seascape); view.setTransitionName(state.attributes.transitionName); view.setId(state.attributes.id); visibilityChanged = true; @@ -1262,7 +1266,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind view.setLayoutParams(lp); } if (showView) { - view.setBackgroundColor(color); + setColor(view, color, dividerColor, verticalBar, seascape); } } if (visibilityChanged) { @@ -1295,6 +1299,34 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind state.color = color; } + private static void setColor(View v, int color, int dividerColor, boolean verticalBar, + boolean seascape) { + if (dividerColor != 0) { + final Pair dir = (Pair) v.getTag(); + if (dir == null || dir.first != verticalBar || dir.second != seascape) { + final int size = Math.round( + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, + v.getContext().getResources().getDisplayMetrics())); + // Use an inset to make the divider line on the side that faces the app. + final InsetDrawable d = new InsetDrawable(new ColorDrawable(color), + verticalBar && !seascape ? size : 0, + !verticalBar ? size : 0, + verticalBar && seascape ? size : 0, 0); + v.setBackground(new LayerDrawable(new Drawable[] { + new ColorDrawable(dividerColor), d })); + v.setTag(new Pair<>(verticalBar, seascape)); + } else { + final LayerDrawable d = (LayerDrawable) v.getBackground(); + final InsetDrawable inset = ((InsetDrawable) d.getDrawable(1)); + ((ColorDrawable) inset.getDrawable()).setColor(color); + ((ColorDrawable) d.getDrawable(0)).setColor(dividerColor); + } + } else { + v.setTag(null); + v.setBackgroundColor(color); + } + } + private void updateColorViewTranslations() { // Put the color views back in place when they get moved off the screen // due to the the ViewRootImpl panning. @@ -1812,7 +1844,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mFloatingActionMode.finish(); } cleanupFloatingActionModeViews(); - mFloatingToolbar = new FloatingToolbar(mContext, mWindow); + mFloatingToolbar = new FloatingToolbar(mWindow); final FloatingActionMode mode = new FloatingActionMode(mContext, callback, originatingView, mFloatingToolbar); mFloatingActionModeOriginatingView = originatingView; diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index 544afd993b37499ef4e860a76db8f08f4ce6cd27..b13560c10326143529fdf3710787fa6244d71bd6 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -233,6 +233,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private int mTextColor = 0; int mStatusBarColor = 0; int mNavigationBarColor = 0; + int mNavigationBarDividerColor = 0; private boolean mForcedStatusBarColor = false; private boolean mForcedNavigationBarColor = false; @@ -2432,13 +2433,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } if (!mForcedNavigationBarColor) { mNavigationBarColor = a.getColor(R.styleable.Window_navigationBarColor, 0xFF000000); + mNavigationBarDividerColor = a.getColor(R.styleable.Window_navigationBarDividerColor, + 0x00000000); } WindowManager.LayoutParams params = getAttributes(); // Non-floating windows on high end devices must put up decor beneath the system bars and // therefore must know about visibility changes of those. - if (!mIsFloating && ActivityManager.isHighEndGfx()) { + if (!mIsFloating) { if (!targetPreL && a.getBoolean( R.styleable.Window_windowDrawsSystemBarBackgrounds, false)) { @@ -2453,6 +2456,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { decor.setSystemUiVisibility( decor.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } + if (a.getBoolean(R.styleable.Window_windowLightNavigationBar, false)) { + decor.setSystemUiVisibility( + decor.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); + } if (mAlwaysReadCloseOnTouchAttr || getContext().getApplicationInfo().targetSdkVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) { diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index 6f54b0cd5cbb928224036ca403fedf4e3329d7a1..bab0306aaf9f7a62edfd2620fe79d75a78534596 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -32,6 +32,7 @@ oneway interface IStatusBar void animateExpandNotificationsPanel(); void animateExpandSettingsPanel(String subPanel); void animateCollapsePanels(); + void togglePanel(); /** * Notifies the status bar of a System UI visibility flag change. @@ -111,6 +112,13 @@ oneway interface IStatusBar */ void showGlobalActionsMenu(); + /** + * Set whether the top app currently hides the statusbar. + * + * @param hidesStatusBar whether it is being hidden + */ + void setTopAppHidesStatusBar(boolean hidesStatusBar); + void addQsTile(in ComponentName tile); void remQsTile(in ComponentName tile); void clickQsTile(in ComponentName tile); diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 22eef0795dcea3b988a04d515f461e83eb9e0ab8..82eb1abcba4d5a19e8754dae4488da29dd98f704 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -31,6 +31,7 @@ interface IStatusBarService { void expandNotificationsPanel(); void collapsePanels(); + void togglePanel(); void disable(int what, IBinder token, String pkg); void disableForUser(int what, IBinder token, String pkg, int userId); void disable2(int what, IBinder token, String pkg); diff --git a/core/java/com/android/internal/textservice/ITextServicesManager.aidl b/core/java/com/android/internal/textservice/ITextServicesManager.aidl index 4882a127f24bb2bddbfdd3b5bf10cce07ebfb26a..c5940ba4dde2839212fb1a62b2cdf553fbcc08aa 100644 --- a/core/java/com/android/internal/textservice/ITextServicesManager.aidl +++ b/core/java/com/android/internal/textservice/ITextServicesManager.aidl @@ -36,9 +36,6 @@ interface ITextServicesManager { in ITextServicesSessionListener tsListener, in ISpellCheckerSessionListener scListener, in Bundle bundle); oneway void finishSpellCheckerService(in ISpellCheckerSessionListener listener); - oneway void setCurrentSpellChecker(String locale, String sciId); - oneway void setCurrentSpellCheckerSubtype(String locale, int hashCode); - oneway void setSpellCheckerEnabled(boolean enabled); boolean isSpellCheckerEnabled(); SpellCheckerInfo[] getEnabledSpellCheckers(); } diff --git a/core/java/com/android/internal/util/AsyncChannel.java b/core/java/com/android/internal/util/AsyncChannel.java index d8be9fdc33bda2b46c39dbf8fd6316341dc1cefc..e760f2526701008fcbde4249a1d7c049fea04504 100644 --- a/core/java/com/android/internal/util/AsyncChannel.java +++ b/core/java/com/android/internal/util/AsyncChannel.java @@ -402,7 +402,6 @@ public class AsyncChannel { // Initialize destination fields mDstMessenger = dstMessenger; - linkToDeathMonitor(); if (DBG) log("connected srcHandler to the dstMessenger X"); } @@ -768,9 +767,10 @@ public class AsyncChannel { /** Handle of the reply message */ @Override public void handleMessage(Message msg) { - mResultMsg = Message.obtain(); - mResultMsg.copyFrom(msg); + Message msgCopy = Message.obtain(); + msgCopy.copyFrom(msg); synchronized(mLockObject) { + mResultMsg = msgCopy; mLockObject.notify(); } } @@ -812,22 +812,26 @@ public class AsyncChannel { */ private static Message sendMessageSynchronously(Messenger dstMessenger, Message msg) { SyncMessenger sm = SyncMessenger.obtain(); + Message resultMsg = null; try { if (dstMessenger != null && msg != null) { msg.replyTo = sm.mMessenger; synchronized (sm.mHandler.mLockObject) { + if (sm.mHandler.mResultMsg != null) { + Slog.wtf(TAG, "mResultMsg should be null here"); + sm.mHandler.mResultMsg = null; + } dstMessenger.send(msg); sm.mHandler.mLockObject.wait(); + resultMsg = sm.mHandler.mResultMsg; + sm.mHandler.mResultMsg = null; } - } else { - sm.mHandler.mResultMsg = null; } } catch (InterruptedException e) { - sm.mHandler.mResultMsg = null; + Slog.e(TAG, "error in sendMessageSynchronously", e); } catch (RemoteException e) { - sm.mHandler.mResultMsg = null; + Slog.e(TAG, "error in sendMessageSynchronously", e); } - Message resultMsg = sm.mHandler.mResultMsg; sm.recycle(); return resultMsg; } diff --git a/core/java/com/android/internal/util/CollectionUtils.java b/core/java/com/android/internal/util/CollectionUtils.java index 1f84061a59782a45b8aa24cd7269a407a32f1a67..f0b47de8be98c28e164174be373b64f1553ae147 100644 --- a/core/java/com/android/internal/util/CollectionUtils.java +++ b/core/java/com/android/internal/util/CollectionUtils.java @@ -20,17 +20,21 @@ import static com.android.internal.util.ArrayUtils.isEmpty; import android.annotation.NonNull; import android.annotation.Nullable; +import android.util.ArraySet; +import android.util.ExceptionUtils; + +import com.android.internal.util.FunctionalUtils.ThrowingConsumer; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; -import java.util.function.Function; +import java.util.function.*; import java.util.stream.Stream; /** - * Utility methods for dealing with (typically {@link Nullable}) {@link Collection}s + * Utility methods for dealing with (typically {@code Nullable}) {@link Collection}s * * Unless a method specifies otherwise, a null value for a collection is treated as an empty * collection of that type. @@ -56,6 +60,32 @@ public class CollectionUtils { return emptyIfNull(result); } + /** + * @see #filter(List, java.util.function.Predicate) + */ + public static @NonNull Set filter(@Nullable Set set, + java.util.function.Predicate predicate) { + if (set == null || set.size() == 0) return Collections.emptySet(); + ArraySet result = null; + if (set instanceof ArraySet) { + ArraySet arraySet = (ArraySet) set; + int size = arraySet.size(); + for (int i = 0; i < size; i++) { + final T item = arraySet.valueAt(i); + if (predicate.test(item)) { + result = ArrayUtils.add(result, item); + } + } + } else { + for (T item : set) { + if (predicate.test(item)) { + result = ArrayUtils.add(result, item); + } + } + } + return emptyIfNull(result); + } + /** * Returns a list of items resulting from applying the given function to each element of the * provided list. @@ -75,6 +105,27 @@ public class CollectionUtils { return result; } + /** + * @see #map(List, Function) + */ + public static @NonNull Set map(@Nullable Set cur, + Function f) { + if (isEmpty(cur)) return Collections.emptySet(); + ArraySet result = new ArraySet<>(); + if (cur instanceof ArraySet) { + ArraySet arraySet = (ArraySet) cur; + int size = arraySet.size(); + for (int i = 0; i < size; i++) { + result.add(f.apply(arraySet.valueAt(i))); + } + } else { + for (I item : cur) { + result.add(f.apply(item)); + } + } + return result; + } + /** * {@link #map(List, Function)} + {@link #filter(List, java.util.function.Predicate)} * @@ -178,6 +229,17 @@ public class CollectionUtils { return cur; } + /** + * @see #add(List, Object) + */ + public static @NonNull Set add(@Nullable Set cur, T val) { + if (cur == null || cur == Collections.emptySet()) { + cur = new ArraySet<>(); + } + cur.add(val); + return cur; + } + /** * Similar to {@link List#remove}, but with support for list values of {@code null} and * {@link Collections#emptyList} @@ -190,10 +252,53 @@ public class CollectionUtils { return cur; } + /** + * @see #remove(List, Object) + */ + public static @NonNull Set remove(@Nullable Set cur, T val) { + if (isEmpty(cur)) { + return emptyIfNull(cur); + } + cur.remove(val); + return cur; + } + /** * @return a list that will not be affected by mutations to the given original list. */ public static @NonNull List copyOf(@Nullable List cur) { return isEmpty(cur) ? Collections.emptyList() : new ArrayList<>(cur); } + + /** + * @return a list that will not be affected by mutations to the given original list. + */ + public static @NonNull Set copyOf(@Nullable Set cur) { + return isEmpty(cur) ? Collections.emptySet() : new ArraySet<>(cur); + } + + /** + * Applies {@code action} to each element in {@code cur} + * + * This avoids creating an iterator if the given set is an {@link ArraySet} + */ + public static void forEach(@Nullable Set cur, @Nullable ThrowingConsumer action) { + if (cur == null || action == null) return; + int size = cur.size(); + if (size == 0) return; + try { + if (cur instanceof ArraySet) { + ArraySet arraySet = (ArraySet) cur; + for (int i = 0; i < size; i++) { + action.accept(arraySet.valueAt(i)); + } + } else { + for (T t : cur) { + action.accept(t); + } + } + } catch (Exception e) { + throw ExceptionUtils.propagate(e); + } + } } diff --git a/core/java/com/android/internal/util/FastXmlSerializer.java b/core/java/com/android/internal/util/FastXmlSerializer.java index 3c1d2d6ce581ec7386167345db6a961e0b49e40e..b85b84fb3dc89a97d53c2594575122ecc64124a6 100644 --- a/core/java/com/android/internal/util/FastXmlSerializer.java +++ b/core/java/com/android/internal/util/FastXmlSerializer.java @@ -49,18 +49,19 @@ public class FastXmlSerializer implements XmlSerializer { null, null, null, null, "<", null, ">", null, // 56-63 }; - private static final int BUFFER_LEN = 8192; + private static final int DEFAULT_BUFFER_LEN = 32*1024; private static String sSpace = " "; - private final char[] mText = new char[BUFFER_LEN]; + private final int mBufferLen; + private final char[] mText; private int mPos; private Writer mWriter; private OutputStream mOutputStream; private CharsetEncoder mCharset; - private ByteBuffer mBytes = ByteBuffer.allocate(BUFFER_LEN); + private ByteBuffer mBytes; private boolean mIndent = false; private boolean mInTag; @@ -68,9 +69,25 @@ public class FastXmlSerializer implements XmlSerializer { private int mNesting = 0; private boolean mLineStart = true; + public FastXmlSerializer() { + this(DEFAULT_BUFFER_LEN); + } + + /** + * Allocate a FastXmlSerializer with the given internal output buffer size. If the + * size is zero or negative, then the default buffer size will be used. + * + * @param bufferSize Size in bytes of the in-memory output buffer that the writer will use. + */ + public FastXmlSerializer(int bufferSize) { + mBufferLen = (bufferSize > 0) ? bufferSize : DEFAULT_BUFFER_LEN; + mText = new char[mBufferLen]; + mBytes = ByteBuffer.allocate(mBufferLen); + } + private void append(char c) throws IOException { int pos = mPos; - if (pos >= (BUFFER_LEN-1)) { + if (pos >= (mBufferLen-1)) { flush(); pos = mPos; } @@ -79,17 +96,17 @@ public class FastXmlSerializer implements XmlSerializer { } private void append(String str, int i, final int length) throws IOException { - if (length > BUFFER_LEN) { + if (length > mBufferLen) { final int end = i + length; while (i < end) { - int next = i + BUFFER_LEN; - append(str, i, next BUFFER_LEN) { + if ((pos+length) > mBufferLen) { flush(); pos = mPos; } @@ -98,17 +115,17 @@ public class FastXmlSerializer implements XmlSerializer { } private void append(char[] buf, int i, final int length) throws IOException { - if (length > BUFFER_LEN) { + if (length > mBufferLen) { final int end = i + length; while (i < end) { - int next = i + BUFFER_LEN; - append(buf, i, next BUFFER_LEN) { + if ((pos+length) > mBufferLen) { flush(); pos = mPos; } diff --git a/core/java/com/android/internal/util/FunctionalUtils.java b/core/java/com/android/internal/util/FunctionalUtils.java index 9aeb0415b5fc57e3b44e168722b841dff81ad5a6..cdef97e84f62933800950ffa7c76982d2f35dcb3 100644 --- a/core/java/com/android/internal/util/FunctionalUtils.java +++ b/core/java/com/android/internal/util/FunctionalUtils.java @@ -45,4 +45,15 @@ public class FunctionalUtils { public interface ThrowingSupplier { T get() throws Exception; } + + /** + * An equivalent of {@link java.util.function.Consumer} that allows throwing checked exceptions + * + * This can be used to specify a lambda argument without forcing all the checked exceptions + * to be handled within it + */ + @FunctionalInterface + public interface ThrowingConsumer { + void accept(T t) throws Exception; + } } diff --git a/core/java/com/android/internal/util/JournaledFile.java b/core/java/com/android/internal/util/JournaledFile.java index 9f775d3a79f25cefd00dad9243d7a7c11a42d01f..5372fc0e28a1a6b9b61ab97ccf8113a3d498690a 100644 --- a/core/java/com/android/internal/util/JournaledFile.java +++ b/core/java/com/android/internal/util/JournaledFile.java @@ -20,7 +20,7 @@ import java.io.File; import java.io.IOException; /** - * @deprecated Use {@link com.android.internal.os.AtomicFile} instead. It would + * @deprecated Use {@code AtomicFile} instead. It would * be nice to update all existing uses of this to switch to AtomicFile, but since * their on-file semantics are slightly different that would run the risk of losing * data if at the point of the platform upgrade to the new code it would need to diff --git a/core/java/com/android/internal/util/MemInfoReader.java b/core/java/com/android/internal/util/MemInfoReader.java index b71fa0674b4edbc5c2f083cc0fc5636cd29cf0d2..8d7166679b783832aa1ff40e6149840feb7738fd 100644 --- a/core/java/com/android/internal/util/MemInfoReader.java +++ b/core/java/com/android/internal/util/MemInfoReader.java @@ -82,7 +82,7 @@ public final class MemInfoReader { * that are mapped in to processes. */ public long getCachedSizeKb() { - return mInfos[Debug.MEMINFO_BUFFERS] + return mInfos[Debug.MEMINFO_BUFFERS] + mInfos[Debug.MEMINFO_SLAB_RECLAIMABLE] + mInfos[Debug.MEMINFO_CACHED] - mInfos[Debug.MEMINFO_MAPPED]; } @@ -90,7 +90,7 @@ public final class MemInfoReader { * Amount of RAM that is in use by the kernel for actual allocations. */ public long getKernelUsedSizeKb() { - return mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB] + return mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB_UNRECLAIMABLE] + mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES] + mInfos[Debug.MEMINFO_KERNEL_STACK]; } diff --git a/core/java/com/android/internal/util/NotificationColorUtil.java b/core/java/com/android/internal/util/NotificationColorUtil.java index 0c046a92020bd13a3fe2c291491f45c7678f537c..933cc7af975a6ef3617eebfaed9fa487ee503d34 100644 --- a/core/java/com/android/internal/util/NotificationColorUtil.java +++ b/core/java/com/android/internal/util/NotificationColorUtil.java @@ -33,6 +33,7 @@ import android.graphics.drawable.Icon; import android.graphics.drawable.VectorDrawable; import android.text.SpannableStringBuilder; import android.text.Spanned; +import android.text.style.BackgroundColorSpan; import android.text.style.CharacterStyle; import android.text.style.ForegroundColorSpan; import android.text.style.TextAppearanceSpan; @@ -240,6 +241,45 @@ public class NotificationColorUtil { return span; } + /** + * Clears all color spans of a text + * @param charSequence the input text + * @return the same text but without color spans + */ + public static CharSequence clearColorSpans(CharSequence charSequence) { + if (charSequence instanceof Spanned) { + Spanned ss = (Spanned) charSequence; + Object[] spans = ss.getSpans(0, ss.length(), Object.class); + SpannableStringBuilder builder = new SpannableStringBuilder(ss.toString()); + for (Object span : spans) { + Object resultSpan = span; + if (resultSpan instanceof CharacterStyle) { + resultSpan = ((CharacterStyle) span).getUnderlying(); + } + if (resultSpan instanceof TextAppearanceSpan) { + TextAppearanceSpan originalSpan = (TextAppearanceSpan) resultSpan; + if (originalSpan.getTextColor() != null) { + resultSpan = new TextAppearanceSpan( + originalSpan.getFamily(), + originalSpan.getTextStyle(), + originalSpan.getTextSize(), + null, + originalSpan.getLinkTextColor()); + } + } else if (resultSpan instanceof ForegroundColorSpan + || (resultSpan instanceof BackgroundColorSpan)) { + continue; + } else { + resultSpan = span; + } + builder.setSpan(resultSpan, ss.getSpanStart(span), ss.getSpanEnd(span), + ss.getSpanFlags(span)); + } + return builder; + } + return charSequence; + } + private int processColor(int color) { return Color.argb(Color.alpha(color), 255 - Color.red(color), @@ -360,20 +400,28 @@ public class NotificationColorUtil { return findContrastColorAgainstDark(color, Color.BLACK, true /* fg */, 12); } - /** - * Finds a text color with sufficient contrast over bg that has the same hue as the original - * color, assuming it is for large text. + /** + * Finds a large text color with sufficient contrast over bg that has the same or darker hue as + * the original color, depending on the value of {@code isBgDarker}. + * + * @param isBgDarker {@code true} if {@code bg} is darker than {@code color}. */ - public static int ensureLargeTextContrast(int color, int bg) { - return findContrastColor(color, bg, true, 3); + public static int ensureLargeTextContrast(int color, int bg, boolean isBgDarker) { + return isBgDarker + ? findContrastColorAgainstDark(color, bg, true, 3) + : findContrastColor(color, bg, true, 3); } /** - * Finds a text color with sufficient contrast over bg that has the same hue as the original - * color. + * Finds a text color with sufficient contrast over bg that has the same or darker hue as the + * original color, depending on the value of {@code isBgDarker}. + * + * @param isBgDarker {@code true} if {@code bg} is darker than {@code color}. */ - private static int ensureTextContrast(int color, int bg) { - return findContrastColor(color, bg, true, 4.5); + private static int ensureTextContrast(int color, int bg, boolean isBgDarker) { + return isBgDarker + ? findContrastColorAgainstDark(color, bg, true, 4.5) + : findContrastColor(color, bg, true, 4.5); } /** Finds a background color for a text view with given text color and hint text color, that @@ -400,24 +448,39 @@ public class NotificationColorUtil { return color; } + /** + * Resolves a Notification's color such that it has enough contrast to be used as the + * color for the Notification's action and header text on a background that is lighter than + * {@code notificationColor}. + * + * @see {@link #resolveContrastColor(Context, int, boolean)} + */ + public static int resolveContrastColor(Context context, int notificationColor, + int backgroundColor) { + return NotificationColorUtil.resolveContrastColor(context, notificationColor, + backgroundColor, false /* isDark */); + } + /** * Resolves a Notification's color such that it has enough contrast to be used as the * color for the Notification's action and header text. * * @param notificationColor the color of the notification or {@link Notification#COLOR_DEFAULT} * @param backgroundColor the background color to ensure the contrast against. + * @param isDark whether or not the {@code notificationColor} will be placed on a background + * that is darker than the color itself * @return a color of the same hue with enough contrast against the backgrounds. */ public static int resolveContrastColor(Context context, int notificationColor, - int backgroundColor) { + int backgroundColor, boolean isDark) { final int resolvedColor = resolveColor(context, notificationColor); final int actionBg = context.getColor( com.android.internal.R.color.notification_action_list); int color = resolvedColor; - color = NotificationColorUtil.ensureLargeTextContrast(color, actionBg); - color = NotificationColorUtil.ensureTextContrast(color, backgroundColor); + color = NotificationColorUtil.ensureLargeTextContrast(color, actionBg, isDark); + color = NotificationColorUtil.ensureTextContrast(color, backgroundColor, isDark); if (color != resolvedColor) { if (DEBUG){ diff --git a/core/java/com/android/internal/util/ObjectUtils.java b/core/java/com/android/internal/util/ObjectUtils.java index d109a5a1cae51b1bf9860ad4705c211775721513..59e5a6402fb82d9d1c9b4a6214c3d9ecd661fe5f 100644 --- a/core/java/com/android/internal/util/ObjectUtils.java +++ b/core/java/com/android/internal/util/ObjectUtils.java @@ -28,4 +28,12 @@ public class ObjectUtils { public static T firstNotNull(@Nullable T a, @NonNull T b) { return a != null ? a : Preconditions.checkNotNull(b); } + + public static int compare(@Nullable T a, @Nullable T b) { + if (a != null) { + return (b != null) ? a.compareTo(b) : 1; + } else { + return (b != null) ? -1 : 0; + } + } } diff --git a/core/java/com/android/internal/util/Protocol.java b/core/java/com/android/internal/util/Protocol.java index b075db881d6d751174f9508e38ef806f830f9614..1aa32cce11e8f636e6b99ba4aa3dff3c6f278413 100644 --- a/core/java/com/android/internal/util/Protocol.java +++ b/core/java/com/android/internal/util/Protocol.java @@ -65,5 +65,6 @@ public class Protocol { public static final int BASE_NETWORK_MONITOR = 0x00082000; public static final int BASE_NETWORK_FACTORY = 0x00083000; public static final int BASE_ETHERNET = 0x00084000; + public static final int BASE_LOWPAN = 0x00085000; //TODO: define all used protocols } diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java index 3d8c85e684cb76d701288c8df76ef74a66a802ef..3188d3005caed98ffe18e4004b0edd794f062954 100644 --- a/core/java/com/android/internal/util/XmlUtils.java +++ b/core/java/com/android/internal/util/XmlUtils.java @@ -1694,10 +1694,10 @@ public class XmlUtils { return in.getAttributeValue(null, name); } - public static void writeStringAttribute(XmlSerializer out, String name, String value) + public static void writeStringAttribute(XmlSerializer out, String name, CharSequence value) throws IOException { if (value != null) { - out.attribute(null, name, value); + out.attribute(null, name, value.toString()); } } diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java index ff211b6c2d627ba98a1a02f18857d1e513adee01..497e7b08d881ab1fe594d3808b826b93b5cc71da 100644 --- a/core/java/com/android/internal/view/FloatingActionMode.java +++ b/core/java/com/android/internal/view/FloatingActionMode.java @@ -295,6 +295,8 @@ public final class FloatingActionMode extends ActionMode { */ private static final class FloatingToolbarVisibilityHelper { + private static final long MIN_SHOW_DURATION_FOR_MOVE_HIDE = 500; + private final FloatingToolbar mToolbar; private boolean mHideRequested; @@ -304,6 +306,8 @@ public final class FloatingActionMode extends ActionMode { private boolean mActive; + private long mLastShowTime; + public FloatingToolbarVisibilityHelper(FloatingToolbar toolbar) { mToolbar = Preconditions.checkNotNull(toolbar); } @@ -327,7 +331,13 @@ public final class FloatingActionMode extends ActionMode { } public void setMoving(boolean moving) { - mMoving = moving; + // Avoid unintended flickering by allowing the toolbar to show long enough before + // triggering the 'moving' flag - which signals a hide. + final boolean showingLongEnough = + System.currentTimeMillis() - mLastShowTime > MIN_SHOW_DURATION_FOR_MOVE_HIDE; + if (!moving || showingLongEnough) { + mMoving = moving; + } } public void setOutOfBounds(boolean outOfBounds) { @@ -347,6 +357,7 @@ public final class FloatingActionMode extends ActionMode { mToolbar.hide(); } else { mToolbar.show(); + mLastShowTime = System.currentTimeMillis(); } } } diff --git a/core/java/com/android/internal/view/TooltipPopup.java b/core/java/com/android/internal/view/TooltipPopup.java index 3930214ea286cf87c25207b07943f909221d0cea..d38ea2c19af4ce5c821bdeb6baa666bf3f647b1b 100644 --- a/core/java/com/android/internal/view/TooltipPopup.java +++ b/core/java/com/android/internal/view/TooltipPopup.java @@ -93,7 +93,7 @@ public class TooltipPopup { private void computePosition(View anchorView, int anchorX, int anchorY, boolean fromTouch, WindowManager.LayoutParams outParams) { - outParams.token = anchorView.getWindowToken(); + outParams.token = anchorView.getApplicationWindowToken(); final int tooltipPreciseAnchorThreshold = mContext.getResources().getDimensionPixelOffset( com.android.internal.R.dimen.tooltip_precise_anchor_threshold); diff --git a/core/java/com/android/internal/widget/FloatingToolbar.java b/core/java/com/android/internal/widget/FloatingToolbar.java index 1d56e1ad3e03c22ad3b956acb775903d12075226..f63b5a213528cb8a362e0bb75c44b072e8d6e62d 100644 --- a/core/java/com/android/internal/widget/FloatingToolbar.java +++ b/core/java/com/android/internal/widget/FloatingToolbar.java @@ -120,8 +120,10 @@ public final class FloatingToolbar { /** * Initializes a floating toolbar. */ - public FloatingToolbar(Context context, Window window) { - mContext = applyDefaultTheme(Preconditions.checkNotNull(context)); + public FloatingToolbar(Window window) { + // TODO(b/65172902): Pass context in constructor when DecorView (and other callers) + // supports multi-display. + mContext = applyDefaultTheme(window.getContext()); mWindow = Preconditions.checkNotNull(window); mPopup = new FloatingToolbarPopup(mContext, window.getDecorView()); } diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index 53a965452df3e2d33d099c0b14c8919dc6901a01..54399061a38fe86a5ad5a426daef8aed8cefb84e 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -67,8 +67,7 @@ public class LockPatternUtils { private static final String TAG = "LockPatternUtils"; private static final boolean DEBUG = false; - private static final boolean FRP_CREDENTIAL_ENABLED = - Build.IS_DEBUGGABLE && SystemProperties.getBoolean("debug.frpcredential.enable", false); + private static final boolean FRP_CREDENTIAL_ENABLED = true; /** * The key to identify when the lock pattern enabled flag is being accessed for legacy reasons. @@ -304,7 +303,7 @@ public class LockPatternUtils { } public void reportFailedPasswordAttempt(int userId) { - if (userId == USER_FRP && frpCredentialEnabled()) { + if (userId == USER_FRP && frpCredentialEnabled(mContext)) { return; } getDevicePolicyManager().reportFailedPasswordAttempt(userId); @@ -312,7 +311,7 @@ public class LockPatternUtils { } public void reportSuccessfulPasswordAttempt(int userId) { - if (userId == USER_FRP && frpCredentialEnabled()) { + if (userId == USER_FRP && frpCredentialEnabled(mContext)) { return; } getDevicePolicyManager().reportSuccessfulPasswordAttempt(userId); @@ -320,21 +319,21 @@ public class LockPatternUtils { } public void reportPasswordLockout(int timeoutMs, int userId) { - if (userId == USER_FRP && frpCredentialEnabled()) { + if (userId == USER_FRP && frpCredentialEnabled(mContext)) { return; } getTrustManager().reportUnlockLockout(timeoutMs, userId); } public int getCurrentFailedPasswordAttempts(int userId) { - if (userId == USER_FRP && frpCredentialEnabled()) { + if (userId == USER_FRP && frpCredentialEnabled(mContext)) { return 0; } return getDevicePolicyManager().getCurrentFailedPasswordAttempts(userId); } public int getMaximumFailedPasswordsForWipe(int userId) { - if (userId == USER_FRP && frpCredentialEnabled()) { + if (userId == USER_FRP && frpCredentialEnabled(mContext)) { return 0; } return getDevicePolicyManager().getMaximumFailedPasswordsForWipe( @@ -804,12 +803,14 @@ public class LockPatternUtils { + "of length " + MIN_LOCK_PASSWORD_SIZE); } - final int computedQuality = PasswordMetrics.computeForPassword(password).quality; - setLong(PASSWORD_TYPE_KEY, Math.max(requestedQuality, computedQuality), userHandle); + setLong(PASSWORD_TYPE_KEY, + computePasswordQuality(CREDENTIAL_TYPE_PASSWORD, password, requestedQuality), + userHandle); getLockSettings().setLockCredential(password, CREDENTIAL_TYPE_PASSWORD, savedPassword, requestedQuality, userHandle); - updateEncryptionPasswordIfNeeded(password, computedQuality, userHandle); + updateEncryptionPasswordIfNeeded(password, + PasswordMetrics.computeForPassword(password).quality, userHandle); updatePasswordHistory(password, userHandle); } catch (RemoteException re) { // Cant do much @@ -898,6 +899,24 @@ public class LockPatternUtils { DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, userHandle); } + /** + * Returns the password quality of the given credential, promoting it to a higher level + * if DevicePolicyManager has a stronger quality requirement. This value will be written + * to PASSWORD_TYPE_KEY. + */ + private int computePasswordQuality(int type, String credential, int requestedQuality) { + final int quality; + if (type == CREDENTIAL_TYPE_PASSWORD) { + int computedQuality = PasswordMetrics.computeForPassword(credential).quality; + quality = Math.max(requestedQuality, computedQuality); + } else if (type == CREDENTIAL_TYPE_PATTERN) { + quality = DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; + } else /* if (type == CREDENTIAL_TYPE_NONE) */ { + quality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; + } + return quality; + } + /** * Enables/disables the Separate Profile Challenge for this {@param userHandle}. This is a no-op * for user handles that do not belong to a managed profile. @@ -909,44 +928,38 @@ public class LockPatternUtils { */ public void setSeparateProfileChallengeEnabled(int userHandle, boolean enabled, String managedUserPassword) { - UserInfo info = getUserManager().getUserInfo(userHandle); - if (info.isManagedProfile()) { - try { - getLockSettings().setSeparateProfileChallengeEnabled(userHandle, enabled, - managedUserPassword); - onAfterChangingPassword(userHandle); - } catch (RemoteException e) { - Log.e(TAG, "Couldn't update work profile challenge enabled"); - } + if (!isManagedProfile(userHandle)) { + return; + } + try { + getLockSettings().setSeparateProfileChallengeEnabled(userHandle, enabled, + managedUserPassword); + onAfterChangingPassword(userHandle); + } catch (RemoteException e) { + Log.e(TAG, "Couldn't update work profile challenge enabled"); } } /** - * Retrieves whether the Separate Profile Challenge is enabled for this {@param userHandle}. + * Returns true if {@param userHandle} is a managed profile with separate challenge. */ public boolean isSeparateProfileChallengeEnabled(int userHandle) { - UserInfo info = getUserManager().getUserInfo(userHandle); - if (info == null || !info.isManagedProfile()) { - return false; - } - try { - return getLockSettings().getSeparateProfileChallengeEnabled(userHandle); - } catch (RemoteException e) { - Log.e(TAG, "Couldn't get separate profile challenge enabled"); - // Default value is false - return false; - } + return isManagedProfile(userHandle) && hasSeparateChallenge(userHandle); + } + + /** + * Returns true if {@param userHandle} is a managed profile with unified challenge. + */ + public boolean isManagedProfileWithUnifiedChallenge(int userHandle) { + return isManagedProfile(userHandle) && !hasSeparateChallenge(userHandle); } /** * Retrieves whether the current DPM allows use of the Profile Challenge. */ public boolean isSeparateProfileChallengeAllowed(int userHandle) { - UserInfo info = getUserManager().getUserInfo(userHandle); - if (info == null || !info.isManagedProfile()) { - return false; - } - return getDevicePolicyManager().isSeparateProfileChallengeAllowed(userHandle); + return isManagedProfile(userHandle) + && getDevicePolicyManager().isSeparateProfileChallengeAllowed(userHandle); } /** @@ -956,6 +969,21 @@ public class LockPatternUtils { return getDevicePolicyManager().isProfileActivePasswordSufficientForParent(userHandle); } + private boolean hasSeparateChallenge(int userHandle) { + try { + return getLockSettings().getSeparateProfileChallengeEnabled(userHandle); + } catch (RemoteException e) { + Log.e(TAG, "Couldn't get separate profile challenge enabled"); + // Default value is false + return false; + } + } + + private boolean isManagedProfile(int userHandle) { + final UserInfo info = getUserManager().getUserInfo(userHandle); + return info != null && info.isManagedProfile(); + } + /** * Deserialize a pattern. * @param string The pattern serialized with {@link #patternToString} @@ -1203,6 +1231,11 @@ public class LockPatternUtils { */ public long setLockoutAttemptDeadline(int userId, int timeoutMs) { final long deadline = SystemClock.elapsedRealtime() + timeoutMs; + if (userId == USER_FRP) { + // For secure password storage (that is required for FRP), the underlying storage also + // enforces the deadline. Since we cannot store settings for the FRP user, don't. + return deadline; + } setLong(LOCKOUT_ATTEMPT_DEADLINE, deadline, userId); setLong(LOCKOUT_ATTEMPT_TIMEOUT_MS, timeoutMs, userId); return deadline; @@ -1492,25 +1525,34 @@ public class LockPatternUtils { } } - public boolean setLockCredentialWithToken(String credential, int type, long tokenHandle, - byte[] token, int userId) { + /** + * Change a user's lock credential with a pre-configured escrow token. + * + * @param credential The new credential to be set + * @param type Credential type: password / pattern / none. + * @param requestedQuality the requested password quality by DevicePolicyManager. + * See {@link DevicePolicyManager#getPasswordQuality(android.content.ComponentName)} + * @param tokenHandle Handle of the escrow token + * @param token Escrow token + * @param userId The user who's lock credential to be changed + * @return {@code true} if the operation is successful. + */ + public boolean setLockCredentialWithToken(String credential, int type, int requestedQuality, + long tokenHandle, byte[] token, int userId) { try { if (type != CREDENTIAL_TYPE_NONE) { if (TextUtils.isEmpty(credential) || credential.length() < MIN_LOCK_PASSWORD_SIZE) { throw new IllegalArgumentException("password must not be null and at least " + "of length " + MIN_LOCK_PASSWORD_SIZE); } - - final int computedQuality = PasswordMetrics.computeForPassword(credential).quality; - int quality = Math.max(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC, - computedQuality); + final int quality = computePasswordQuality(type, credential, requestedQuality); if (!getLockSettings().setLockCredentialWithToken(credential, type, tokenHandle, token, quality, userId)) { return false; } setLong(PASSWORD_TYPE_KEY, quality, userId); - updateEncryptionPasswordIfNeeded(credential, computedQuality, userId); + updateEncryptionPasswordIfNeeded(credential, quality, userId); updatePasswordHistory(credential, userId); } else { if (!TextUtils.isEmpty(credential)) { @@ -1726,11 +1768,12 @@ public class LockPatternUtils { return getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, 0, UserHandle.USER_SYSTEM) != 0; } - public static boolean userOwnsFrpCredential(UserInfo info) { - return info != null && info.isPrimary() && info.isAdmin() && frpCredentialEnabled(); + public static boolean userOwnsFrpCredential(Context context, UserInfo info) { + return info != null && info.isPrimary() && info.isAdmin() && frpCredentialEnabled(context); } - public static boolean frpCredentialEnabled() { - return FRP_CREDENTIAL_ENABLED; + public static boolean frpCredentialEnabled(Context context) { + return FRP_CREDENTIAL_ENABLED && context.getResources().getBoolean( + com.android.internal.R.bool.config_enableCredentialFactoryResetProtection); } } diff --git a/core/java/com/android/internal/widget/NotificationExpandButton.java b/core/java/com/android/internal/widget/NotificationExpandButton.java index b7028980b3146c7e2e7861abe8d4064aad4787c8..39f82a5fb349bdd8d928da3e380b628dd867f61f 100644 --- a/core/java/com/android/internal/widget/NotificationExpandButton.java +++ b/core/java/com/android/internal/widget/NotificationExpandButton.java @@ -31,7 +31,6 @@ import android.widget.RemoteViews; */ @RemoteViews.RemoteView public class NotificationExpandButton extends ImageView { - private View mLabeledBy; public NotificationExpandButton(Context context) { super(context); @@ -69,12 +68,5 @@ public class NotificationExpandButton extends ImageView { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); info.setClassName(Button.class.getName()); - if (mLabeledBy != null) { - info.setLabeledBy(mLabeledBy); - } - } - - public void setLabeledBy(View labeledBy) { - mLabeledBy = labeledBy; } } diff --git a/core/java/com/android/internal/widget/PointerLocationView.java b/core/java/com/android/internal/widget/PointerLocationView.java index 592576bb41d06e22650b3140e12b9ab43d602d0d..e53162cc97fd8de3c92ec2abe012938fa966fd34 100644 --- a/core/java/com/android/internal/widget/PointerLocationView.java +++ b/core/java/com/android/internal/widget/PointerLocationView.java @@ -25,6 +25,7 @@ import android.hardware.input.InputManager; import android.hardware.input.InputManager.InputDeviceListener; import android.os.SystemProperties; import android.util.Log; +import android.util.Slog; import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; @@ -630,6 +631,12 @@ public class PointerLocationView extends View implements InputDeviceListener, >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; // will be 0 for UP final int id = event.getPointerId(index); + if (id >= NP) { + Slog.wtf(TAG, "Got pointer ID out of bounds: id=" + id + " arraysize=" + + NP + " pointerindex=" + index + + " action=0x" + Integer.toHexString(action)); + return; + } final PointerState ps = mPointers.get(id); ps.mCurDown = false; diff --git a/core/java/com/android/internal/widget/RecyclerView.java b/core/java/com/android/internal/widget/RecyclerView.java index 0cf3164de98e3b2e5ccbc7a40bc8cc98bc9d4747..7abc76a85af58083efe839ce8869347e65a8d555 100644 --- a/core/java/com/android/internal/widget/RecyclerView.java +++ b/core/java/com/android/internal/widget/RecyclerView.java @@ -132,8 +132,6 @@ import java.util.List; *

    * When writing a {@link LayoutManager} you almost always want to use layout positions whereas when * writing an {@link Adapter}, you probably want to use adapter positions. - * - * @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_layoutManager */ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild { @@ -9591,11 +9589,6 @@ public class RecyclerView extends ViewGroup implements ScrollingView, NestedScro /** * Parse the xml attributes to get the most common properties used by layout managers. * - * @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_android_orientation - * @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_spanCount - * @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_reverseLayout - * @attr ref android.support.v7.recyclerview.R.styleable#RecyclerView_stackFromEnd - * * @return an object containing the properties as specified in the attrs. */ public static Properties getProperties(Context context, AttributeSet attrs, diff --git a/core/java/com/android/server/BootReceiver.java b/core/java/com/android/server/BootReceiver.java index 18990cff1f83116b45fb6dd4dd71f4326921f94d..43544862b5ec9ff79f4146304503e33d37cbdb6a 100644 --- a/core/java/com/android/server/BootReceiver.java +++ b/core/java/com/android/server/BootReceiver.java @@ -31,13 +31,13 @@ import android.os.ServiceManager; import android.os.SystemProperties; import android.os.storage.StorageManager; import android.provider.Downloads; +import android.text.TextUtils; import android.util.AtomicFile; import android.util.Slog; import android.util.Xml; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; -import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.XmlUtils; @@ -106,6 +106,11 @@ public class BootReceiver extends BroadcastReceiver { "powerctl_shutdown_time_ms:([0-9]+):([0-9]+)"; private static final int UMOUNT_STATUS_NOT_AVAILABLE = 4; // should match with init/reboot.h + // Location of file with metrics recorded during shutdown + private static final String SHUTDOWN_METRICS_FILE = "/data/system/shutdown-metrics.txt"; + + private static final String SHUTDOWN_TRON_METRICS_PREFIX = "shutdown_"; + @Override public void onReceive(final Context context, Intent intent) { // Log boot events in the background to avoid blocking the main thread with I/O @@ -232,6 +237,7 @@ public class BootReceiver extends BroadcastReceiver { logFsShutdownTime(); logFsMountTime(); addFsckErrorsToDropBoxAndLogFsStat(db, timestamps, headers, -LOG_SIZE, "SYSTEM_FSCK"); + logSystemServerShutdownTimeMetrics(); // Scan existing tombstones (in case any new ones appeared) File[] tombstoneFiles = TOMBSTONE_DIR.listFiles(); @@ -380,6 +386,47 @@ public class BootReceiver extends BroadcastReceiver { } } + // TODO b/64815357 Move to bootstat.cpp and log AbsoluteRebootTime + private static void logSystemServerShutdownTimeMetrics() { + File metricsFile = new File(SHUTDOWN_METRICS_FILE); + String metricsStr = null; + if (metricsFile.exists()) { + try { + metricsStr = FileUtils.readTextFile(metricsFile, 0, null); + } catch (IOException e) { + Slog.e(TAG, "Problem reading " + metricsFile, e); + } + } + if (!TextUtils.isEmpty(metricsStr)) { + String[] array = metricsStr.split(","); + for (String keyValueStr : array) { + String[] keyValue = keyValueStr.split(":"); + if (keyValue.length != 2) { + Slog.e(TAG, "Wrong format of shutdown metrics - " + metricsStr); + continue; + } + // Ignore keys that are not indended for tron + if (keyValue[0].startsWith(SHUTDOWN_TRON_METRICS_PREFIX)) { + logTronShutdownMetric(keyValue[0], keyValue[1]); + } + } + } + metricsFile.delete(); + } + + private static void logTronShutdownMetric(String metricName, String valueStr) { + int value; + try { + value = Integer.parseInt(valueStr); + } catch (NumberFormatException e) { + Slog.e(TAG, "Cannot parse metric " + metricName + " int value - " + valueStr); + return; + } + if (value >= 0) { + MetricsLogger.histogram(null, metricName, value); + } + } + private static void logFsShutdownTime() { File f = null; for (String fileName : LAST_KMSG_FILES) { diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java index 67f9f8f49ee6c72bf814f27bf5bcc383b9c53e84..77788921635fd0f537f060dd4f6a4474e660530f 100644 --- a/core/java/com/android/server/SystemConfig.java +++ b/core/java/com/android/server/SystemConfig.java @@ -141,6 +141,7 @@ public class SystemConfig { final ArrayMap> mPrivAppPermissions = new ArrayMap<>(); + final ArrayMap> mPrivAppDenyPermissions = new ArrayMap<>(); public static SystemConfig getInstance() { synchronized (SystemConfig.class) { @@ -219,6 +220,10 @@ public class SystemConfig { return mPrivAppPermissions.get(packageName); } + public ArraySet getPrivAppDenyPermissions(String packageName) { + return mPrivAppDenyPermissions.get(packageName); + } + SystemConfig() { // Read configuration from system readPermissions(Environment.buildPath( @@ -584,6 +589,12 @@ public class SystemConfig { addFeature(PackageManager.FEATURE_SECURELY_REMOVES_USERS, 0); } + if (ActivityManager.isLowRamDeviceStatic()) { + addFeature(PackageManager.FEATURE_RAM_LOW, 0); + } else { + addFeature(PackageManager.FEATURE_RAM_NORMAL, 0); + } + for (String featureName : mUnavailableFeatures) { removeFeature(featureName); } @@ -654,6 +665,7 @@ public class SystemConfig { if (permissions == null) { permissions = new ArraySet<>(); } + ArraySet denyPermissions = mPrivAppDenyPermissions.get(packageName); int depth = parser.getDepth(); while (XmlUtils.nextElementWithin(parser, depth)) { String name = parser.getName(); @@ -665,8 +677,22 @@ public class SystemConfig { continue; } permissions.add(permName); + } else if ("deny-permission".equals(name)) { + String permName = parser.getAttributeValue(null, "name"); + if (TextUtils.isEmpty(permName)) { + Slog.w(TAG, "name is required for in " + + parser.getPositionDescription()); + continue; + } + if (denyPermissions == null) { + denyPermissions = new ArraySet<>(); + } + denyPermissions.add(permName); } } mPrivAppPermissions.put(packageName, permissions); + if (denyPermissions != null) { + mPrivAppDenyPermissions.put(packageName, denyPermissions); + } } } diff --git a/core/java/com/android/server/backup/SystemBackupAgent.java b/core/java/com/android/server/backup/SystemBackupAgent.java index 537565185d9b41ea74b137356c3d8210fdd67e4a..a96b5dd3ed70b9e95eb23b99795069ed2e03b4d2 100644 --- a/core/java/com/android/server/backup/SystemBackupAgent.java +++ b/core/java/com/android/server/backup/SystemBackupAgent.java @@ -35,7 +35,8 @@ import java.io.File; import java.io.IOException; /** - * Backup agent for various system-managed data, currently just the system wallpaper + * Backup agent for various system-managed data. Wallpapers are now handled by a + * separate package, but we still process restores from legacy datasets here. */ public class SystemBackupAgent extends BackupAgentHelper { private static final String TAG = "SystemBackupAgent"; @@ -61,16 +62,19 @@ public class SystemBackupAgent extends BackupAgentHelper { // TODO: http://b/22388012 private static final String WALLPAPER_IMAGE_DIR = Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM).getAbsolutePath(); - private static final String WALLPAPER_IMAGE = WallpaperBackupHelper.WALLPAPER_IMAGE; + public static final String WALLPAPER_IMAGE = + new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), + "wallpaper").getAbsolutePath(); // TODO: Will need to change if backing up non-primary user's wallpaper // TODO: http://b/22388012 private static final String WALLPAPER_INFO_DIR = Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM).getAbsolutePath(); - private static final String WALLPAPER_INFO = WallpaperBackupHelper.WALLPAPER_INFO; + public static final String WALLPAPER_INFO = + new File(Environment.getUserSystemDirectory(UserHandle.USER_SYSTEM), + "wallpaper_info.xml").getAbsolutePath(); // Use old keys to keep legacy data compatibility and avoid writing two wallpapers private static final String WALLPAPER_IMAGE_KEY = WallpaperBackupHelper.WALLPAPER_IMAGE_KEY; - private static final String WALLPAPER_INFO_KEY = WallpaperBackupHelper.WALLPAPER_INFO_KEY; private WallpaperBackupHelper mWallpaperHelper = null; @@ -98,13 +102,11 @@ public class SystemBackupAgent extends BackupAgentHelper { // Slot in a restore helper for the older wallpaper backup schema to support restore // from devices still generating data in that format. mWallpaperHelper = new WallpaperBackupHelper(this, - new String[] { WALLPAPER_IMAGE, WALLPAPER_INFO }, - new String[] { WALLPAPER_IMAGE_KEY, WALLPAPER_INFO_KEY} ); + new String[] { WALLPAPER_IMAGE_KEY} ); addHelper(WALLPAPER_HELPER, mWallpaperHelper); // On restore, we also support a long-ago wallpaper data schema "system_files" addHelper("system_files", new WallpaperBackupHelper(this, - new String[] { WALLPAPER_IMAGE }, new String[] { WALLPAPER_IMAGE_KEY} )); addHelper(SYNC_SETTINGS_HELPER, new AccountSyncSettingsBackupHelper(this)); @@ -115,27 +117,12 @@ public class SystemBackupAgent extends BackupAgentHelper { addHelper(SHORTCUT_MANAGER_HELPER, new ShortcutBackupHelper()); addHelper(ACCOUNT_MANAGER_HELPER, new AccountManagerBackupHelper()); - try { - super.onRestore(data, appVersionCode, newState); - - IWallpaperManager wallpaper = (IWallpaperManager) ServiceManager.getService( - Context.WALLPAPER_SERVICE); - if (wallpaper != null) { - try { - wallpaper.settingsRestored(); - } catch (RemoteException re) { - Slog.e(TAG, "Couldn't restore settings\n" + re); - } - } - } catch (IOException ex) { - // If there was a failure, delete everything for the wallpaper, this is too aggressive, - // but this is hopefully a rare failure. - Slog.d(TAG, "restore failed", ex); - (new File(WALLPAPER_IMAGE)).delete(); - (new File(WALLPAPER_INFO)).delete(); - } + super.onRestore(data, appVersionCode, newState); } + /** + * Support for 'adb restore' of legacy archives + */ @Override public void onRestoreFile(ParcelFileDescriptor data, long size, int type, String domain, String path, long mode, long mtime) @@ -183,12 +170,4 @@ public class SystemBackupAgent extends BackupAgentHelper { } } } - - @Override - public void onRestoreFinished() { - // helper will be null following 'adb restore' or other full-data operation - if (mWallpaperHelper != null) { - mWallpaperHelper.onRestoreFinished(); - } - } } diff --git a/core/jni/Android.bp b/core/jni/Android.bp index ec516594eefa502b8ba4809182e0e21e79cee83f..336fee12a5af98e2a055926a57872a643e5ae4e4 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -87,6 +87,7 @@ cc_library_shared { "android_os_Parcel.cpp", "android_os_SELinux.cpp", "android_os_seccomp.cpp", + "android_os_SharedMemory.cpp", "android_os_SystemClock.cpp", "android_os_SystemProperties.cpp", "android_os_Trace.cpp", @@ -159,7 +160,6 @@ cc_library_shared { "android_hardware_camera2_DngCreator.cpp", "android_hardware_display_DisplayViewport.cpp", "android_hardware_HardwareBuffer.cpp", - "android_hardware_Radio.cpp", "android_hardware_SensorManager.cpp", "android_hardware_SerialPort.cpp", "android_hardware_SoundTrigger.cpp", @@ -182,8 +182,8 @@ cc_library_shared { "android_content_res_Configuration.cpp", "android_animation_PropertyValuesHolder.cpp", "com_android_internal_net_NetworkStatsFactory.cpp", + "com_android_internal_os_ClassLoaderFactory.cpp", "com_android_internal_os_FuseAppLoop.cpp", - "com_android_internal_os_PathClassLoaderFactory.cpp", "com_android_internal_os_Zygote.cpp", "com_android_internal_os_ZygoteInit.cpp", "com_android_internal_util_VirtualRefBasePtr.cpp", @@ -256,12 +256,10 @@ cc_library_shared { "libpdfium", "libimg_utils", "libnetd_client", - "libradio", "libsoundtrigger", "libminikin", "libprocessgroup", "libnativebridge", - "libradio_metadata", "libnativeloader", "libmemunreachable", "libhidlbase", diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 6bc6f6355bc2e4612397bf7dd9584636ba06f86f..90598626cbe834f766b084cbdcd2e1a7dcdc2c05 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -90,7 +90,6 @@ extern int register_android_hardware_camera2_legacy_LegacyCameraDevice(JNIEnv *e extern int register_android_hardware_camera2_legacy_PerfMeasurement(JNIEnv *env); extern int register_android_hardware_camera2_DngCreator(JNIEnv *env); extern int register_android_hardware_HardwareBuffer(JNIEnv *env); -extern int register_android_hardware_Radio(JNIEnv *env); extern int register_android_hardware_SensorManager(JNIEnv *env); extern int register_android_hardware_SerialPort(JNIEnv *env); extern int register_android_hardware_SoundTrigger(JNIEnv *env); @@ -171,6 +170,7 @@ extern int register_android_os_Trace(JNIEnv* env); extern int register_android_os_FileObserver(JNIEnv *env); extern int register_android_os_UEventObserver(JNIEnv* env); extern int register_android_os_MemoryFile(JNIEnv* env); +extern int register_android_os_SharedMemory(JNIEnv* env); extern int register_android_net_LocalSocketImpl(JNIEnv* env); extern int register_android_net_NetworkUtils(JNIEnv* env); extern int register_android_net_TrafficStats(JNIEnv* env); @@ -206,8 +206,8 @@ extern int register_android_content_res_Configuration(JNIEnv* env); extern int register_android_animation_PropertyValuesHolder(JNIEnv *env); extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env); extern int register_com_android_internal_net_NetworkStatsFactory(JNIEnv *env); +extern int register_com_android_internal_os_ClassLoaderFactory(JNIEnv* env); extern int register_com_android_internal_os_FuseAppLoop(JNIEnv* env); -extern int register_com_android_internal_os_PathClassLoaderFactory(JNIEnv* env); extern int register_com_android_internal_os_Zygote(JNIEnv *env); extern int register_com_android_internal_os_ZygoteInit(JNIEnv *env); extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env); @@ -607,9 +607,12 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) char jitprithreadweightOptBuf[sizeof("-Xjitprithreadweight:")-1 + PROPERTY_VALUE_MAX]; char jittransitionweightOptBuf[sizeof("-Xjittransitionweight:")-1 + PROPERTY_VALUE_MAX]; char hotstartupsamplesOptsBuf[sizeof("-Xps-hot-startup-method-samples:")-1 + PROPERTY_VALUE_MAX]; + char madviseRandomOptsBuf[sizeof("-XX:MadviseRandomAccess:")-1 + PROPERTY_VALUE_MAX]; char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX]; char backgroundgcOptsBuf[sizeof("-XX:BackgroundGC=")-1 + PROPERTY_VALUE_MAX]; char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX]; + char foregroundHeapGrowthMultiplierOptsBuf[ + sizeof("-XX:ForegroundHeapGrowthMultiplier=")-1 + PROPERTY_VALUE_MAX]; char cachePruneBuf[sizeof("-Xzygote-max-boot-retry=")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmsImageFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX]; char dex2oatXmxImageFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX]; @@ -713,6 +716,11 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) heaptargetutilizationOptsBuf, "-XX:HeapTargetUtilization="); + /* Foreground heap growth multiplier option */ + parseRuntimeOption("dalvik.vm.foreground-heap-growth-multiplier", + foregroundHeapGrowthMultiplierOptsBuf, + "-XX:ForegroundHeapGrowthMultiplier="); + /* * JIT related options. */ @@ -733,6 +741,11 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) jittransitionweightOptBuf, "-Xjittransitionweight:"); + /* + * Madvise related options. + */ + parseRuntimeOption("dalvik.vm.madvise-random", madviseRandomOptsBuf, "-XX:MadviseRandomAccess:"); + /* * Profile related options. */ @@ -1408,7 +1421,8 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_net_NetworkUtils), REG_JNI(register_android_net_TrafficStats), REG_JNI(register_android_os_MemoryFile), - REG_JNI(register_com_android_internal_os_PathClassLoaderFactory), + REG_JNI(register_android_os_SharedMemory), + REG_JNI(register_com_android_internal_os_ClassLoaderFactory), REG_JNI(register_com_android_internal_os_Zygote), REG_JNI(register_com_android_internal_os_ZygoteInit), REG_JNI(register_com_android_internal_util_VirtualRefBasePtr), @@ -1418,7 +1432,6 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_hardware_camera2_legacy_PerfMeasurement), REG_JNI(register_android_hardware_camera2_DngCreator), REG_JNI(register_android_hardware_HardwareBuffer), - REG_JNI(register_android_hardware_Radio), REG_JNI(register_android_hardware_SensorManager), REG_JNI(register_android_hardware_SerialPort), REG_JNI(register_android_hardware_SoundTrigger), diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index b03c346faa8d2c17934905ac26271ea92124c1f9..ad05a5113dffadaf5ab4f421c8cf7043680ace29 100755 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -485,11 +485,9 @@ bool GraphicsJNI::SetPixels(JNIEnv* env, jintArray srcColors, int srcOffset, int //////////////////// ToColor procs -typedef void (*ToColorProc)(SkColor dst[], const void* src, int width, - SkColorTable*); +typedef void (*ToColorProc)(SkColor dst[], const void* src, int width); -static void ToColor_F16_Alpha(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_F16_Alpha(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); uint64_t* s = (uint64_t*)src; do { @@ -497,8 +495,7 @@ static void ToColor_F16_Alpha(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_F16_Raw(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_F16_Raw(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); uint64_t* s = (uint64_t*)src; do { @@ -506,8 +503,7 @@ static void ToColor_F16_Raw(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S32_Alpha(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S32_Alpha(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor* s = (const SkPMColor*)src; do { @@ -515,8 +511,7 @@ static void ToColor_S32_Alpha(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S32_Raw(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S32_Raw(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor* s = (const SkPMColor*)src; do { @@ -526,8 +521,7 @@ static void ToColor_S32_Raw(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S32_Opaque(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S32_Opaque(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor* s = (const SkPMColor*)src; do { @@ -537,8 +531,7 @@ static void ToColor_S32_Opaque(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S4444_Alpha(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S4444_Alpha(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor16* s = (const SkPMColor16*)src; do { @@ -546,8 +539,7 @@ static void ToColor_S4444_Alpha(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S4444_Raw(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S4444_Raw(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor16* s = (const SkPMColor16*)src; do { @@ -557,8 +549,7 @@ static void ToColor_S4444_Raw(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S4444_Opaque(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S4444_Opaque(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const SkPMColor16* s = (const SkPMColor16*)src; do { @@ -568,8 +559,7 @@ static void ToColor_S4444_Opaque(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_S565(SkColor dst[], const void* src, int width, - SkColorTable*) { +static void ToColor_S565(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const uint16_t* s = (const uint16_t*)src; do { @@ -579,41 +569,7 @@ static void ToColor_S565(SkColor dst[], const void* src, int width, } while (--width != 0); } -static void ToColor_SI8_Alpha(SkColor dst[], const void* src, int width, - SkColorTable* ctable) { - SkASSERT(width > 0); - const uint8_t* s = (const uint8_t*)src; - const SkPMColor* colors = ctable->readColors(); - do { - *dst++ = SkUnPreMultiply::PMColorToColor(colors[*s++]); - } while (--width != 0); -} - -static void ToColor_SI8_Raw(SkColor dst[], const void* src, int width, - SkColorTable* ctable) { - SkASSERT(width > 0); - const uint8_t* s = (const uint8_t*)src; - const SkPMColor* colors = ctable->readColors(); - do { - SkPMColor c = colors[*s++]; - *dst++ = SkColorSetARGB(SkGetPackedA32(c), SkGetPackedR32(c), - SkGetPackedG32(c), SkGetPackedB32(c)); - } while (--width != 0); -} - -static void ToColor_SI8_Opaque(SkColor dst[], const void* src, int width, - SkColorTable* ctable) { - SkASSERT(width > 0); - const uint8_t* s = (const uint8_t*)src; - const SkPMColor* colors = ctable->readColors(); - do { - SkPMColor c = colors[*s++]; - *dst++ = SkColorSetRGB(SkGetPackedR32(c), SkGetPackedG32(c), - SkGetPackedB32(c)); - } while (--width != 0); -} - -static void ToColor_SA8(SkColor dst[], const void* src, int width, SkColorTable*) { +static void ToColor_SA8(SkColor dst[], const void* src, int width) { SkASSERT(width > 0); const uint8_t* s = (const uint8_t*)src; do { @@ -649,20 +605,6 @@ static ToColorProc ChooseToColorProc(const SkBitmap& src) { } case kRGB_565_SkColorType: return ToColor_S565; - case kIndex_8_SkColorType: - if (src.getColorTable() == NULL) { - return NULL; - } - switch (src.alphaType()) { - case kOpaque_SkAlphaType: - return ToColor_SI8_Opaque; - case kPremul_SkAlphaType: - return ToColor_SI8_Alpha; - case kUnpremul_SkAlphaType: - return ToColor_SI8_Raw; - default: - return NULL; - } case kAlpha_8_SkColorType: return ToColor_SA8; case kRGBA_F16_SkColorType: @@ -738,7 +680,7 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType, colorSpace)); - sk_sp nativeBitmap = Bitmap::allocateHeapBitmap(&bitmap, NULL); + sk_sp nativeBitmap = Bitmap::allocateHeapBitmap(&bitmap); if (!nativeBitmap) { return NULL; } @@ -752,9 +694,6 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, static bool bitmapCopyTo(SkBitmap* dst, SkColorType dstCT, const SkBitmap& src, SkBitmap::Allocator* alloc) { - LOG_ALWAYS_FATAL_IF(kIndex_8_SkColorType == dstCT && - kIndex_8_SkColorType != src.colorType(), "Error, cannot copyTo kIndex8."); - SkPixmap srcPM; if (!src.peekPixels(&srcPM)) { return false; @@ -767,7 +706,7 @@ static bool bitmapCopyTo(SkBitmap* dst, SkColorType dstCT, const SkBitmap& src, // allow the call to readPixels() to succeed and preserve this lenient behavior. if (kOpaque_SkAlphaType != srcPM.alphaType()) { srcPM = SkPixmap(srcPM.info().makeAlphaType(kOpaque_SkAlphaType), srcPM.addr(), - srcPM.rowBytes(), srcPM.ctable()); + srcPM.rowBytes()); dstInfo = dstInfo.makeAlphaType(kOpaque_SkAlphaType); } break; @@ -788,7 +727,7 @@ static bool bitmapCopyTo(SkBitmap* dst, SkColorType dstCT, const SkBitmap& src, if (!dst->setInfo(dstInfo)) { return false; } - if (!dst->tryAllocPixels(alloc, srcPM.ctable())) { + if (!dst->tryAllocPixels(alloc)) { return false; } @@ -801,7 +740,7 @@ static bool bitmapCopyTo(SkBitmap* dst, SkColorType dstCT, const SkBitmap& src, for (int y = 0; y < src.height(); y++) { const uint8_t* srcRow = srcPM.addr8(0, y); uint32_t* dstRow = dst->getAddr32(0, y); - ToColor_SA8(dstRow, srcRow, src.width(), nullptr); + ToColor_SA8(dstRow, srcRow, src.width()); } return true; } @@ -1100,7 +1039,6 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { kRGBA_F16_SkColorType != colorType && kRGB_565_SkColorType != colorType && kARGB_4444_SkColorType != colorType && - kIndex_8_SkColorType != colorType && kAlpha_8_SkColorType != colorType) { SkDebugf("Bitmap_createFromParcel unknown colortype: %d\n", colorType); return NULL; @@ -1112,24 +1050,6 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { return NULL; } - sk_sp ctable = NULL; - if (colorType == kIndex_8_SkColorType) { - int count = p->readInt32(); - if (count < 0 || count > 256) { - // The data is corrupt, since SkColorTable enforces a value between 0 and 256, - // inclusive. - return NULL; - } - if (count > 0) { - size_t size = count * sizeof(SkPMColor); - const SkPMColor* src = (const SkPMColor*)p->readInplace(size); - if (src == NULL) { - return NULL; - } - ctable = SkColorTable::Make(src, count); - } - } - // Read the bitmap blob. size_t size = bitmap->getSize(); android::Parcel::ReadableBlob blob; @@ -1161,7 +1081,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { // Map the pixels in place and take ownership of the ashmem region. nativeBitmap = sk_sp(GraphicsJNI::mapAshmemBitmap(env, bitmap.get(), - ctable.get(), dupFd, const_cast(blob.data()), size, !isMutable)); + dupFd, const_cast(blob.data()), size, !isMutable)); if (!nativeBitmap) { close(dupFd); blob.release(); @@ -1186,7 +1106,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { #endif // Copy the pixels into a new buffer. - nativeBitmap = Bitmap::allocateHeapBitmap(bitmap.get(), ctable); + nativeBitmap = Bitmap::allocateHeapBitmap(bitmap.get()); if (!nativeBitmap) { blob.release(); doThrowRE(env, "Could not allocate java pixel ref."); @@ -1241,19 +1161,6 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, p->writeInt32(bitmap.rowBytes()); p->writeInt32(density); - if (bitmap.colorType() == kIndex_8_SkColorType) { - // The bitmap needs to be locked to access its color table. - SkColorTable* ctable = bitmap.getColorTable(); - if (ctable != NULL) { - int count = ctable->count(); - p->writeInt32(count); - memcpy(p->writeInplace(count * sizeof(SkPMColor)), - ctable->readColors(), count * sizeof(SkPMColor)); - } else { - p->writeInt32(0); // indicate no ctable - } - } - // Transfer the underlying ashmem region if we have one and it's immutable. android::status_t status; int fd = bitmapWrapper->bitmap().getAshmemFd(); @@ -1395,7 +1302,7 @@ static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle, } SkColor dst[1]; - proc(dst, src, 1, bitmap.getColorTable()); + proc(dst, src, 1); SkColorSpace* colorSpace = bitmap.colorSpace(); if (bitmap.colorType() != kRGBA_F16_SkColorType && @@ -1425,7 +1332,6 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, return; } - SkColorTable* ctable = bitmap.getColorTable(); jint* dst = env->GetIntArrayElements(pixelArray, NULL); SkColor* d = (SkColor*)dst + offset; @@ -1433,7 +1339,7 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, if (bitmap.colorType() == kRGBA_F16_SkColorType || GraphicsJNI::isColorSpaceSRGB(colorSpace)) { while (--height >= 0) { - proc(d, src, width, ctable); + proc(d, src, width); d += stride; src = (void*)((const char*)src + bitmap.rowBytes()); } @@ -1442,7 +1348,7 @@ static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, auto xform = SkColorSpaceXform::New(colorSpace, sRGB.get()); while (--height >= 0) { - proc(d, src, width, ctable); + proc(d, src, width); xform->apply(SkColorSpaceXform::kBGRA_8888_ColorFormat, d, SkColorSpaceXform::kBGRA_8888_ColorFormat, d, width, @@ -1552,22 +1458,6 @@ static jboolean Bitmap_sameAs(JNIEnv* env, jobject, jlong bm0Handle, jlong bm1Ha return JNI_FALSE; } - if (bm0.colorType() == kIndex_8_SkColorType) { - SkColorTable* ct0 = bm0.getColorTable(); - SkColorTable* ct1 = bm1.getColorTable(); - if (NULL == ct0 || NULL == ct1) { - return JNI_FALSE; - } - if (ct0->count() != ct1->count()) { - return JNI_FALSE; - } - - const size_t size = ct0->count() * sizeof(SkPMColor); - if (memcmp(ct0->readColors(), ct1->readColors(), size) != 0) { - return JNI_FALSE; - } - } - // now compare each scanline. We can't do the entire buffer at once, // since we don't care about the pixel values that might extend beyond // the width (since the scanline might be larger than the logical width) diff --git a/core/jni/android/graphics/Bitmap.h b/core/jni/android/graphics/Bitmap.h index a4bfc94b79e3ddd2b5086f85c7797884ccc9180d..06877915856e392aae0b69c0f4b14d61e9556f10 100644 --- a/core/jni/android/graphics/Bitmap.h +++ b/core/jni/android/graphics/Bitmap.h @@ -19,9 +19,7 @@ #include #include #include -#include #include -#include namespace android { diff --git a/core/jni/android/graphics/BitmapFactory.cpp b/core/jni/android/graphics/BitmapFactory.cpp index 8b2a50d98cd1b811baee892125564d234b9ce6d3..325f6d4615d7652f161a4896604d14f546ec3e5b 100644 --- a/core/jni/android/graphics/BitmapFactory.cpp +++ b/core/jni/android/graphics/BitmapFactory.cpp @@ -75,6 +75,9 @@ jstring encodedFormatToString(JNIEnv* env, SkEncodedImageFormat format) { case SkEncodedImageFormat::kWEBP: mimeType = "image/webp"; break; + case SkEncodedImageFormat::kHEIF: + mimeType = "image/heif"; + break; case SkEncodedImageFormat::kWBMP: mimeType = "image/vnd.wap.wbmp"; break; @@ -130,27 +133,15 @@ static void scaleNinePatchChunk(android::Res_png_9patch* chunk, float scale, scaleDivRange(chunk->getYDivs(), chunk->numYDivs, scale, scaledHeight); } -static SkColorType colorTypeForScaledOutput(SkColorType colorType) { - switch (colorType) { - case kUnknown_SkColorType: - case kIndex_8_SkColorType: - return kN32_SkColorType; - default: - break; - } - return colorType; -} - class ScaleCheckingAllocator : public SkBitmap::HeapAllocator { public: ScaleCheckingAllocator(float scale, int size) : mScale(scale), mSize(size) { } - virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) { + virtual bool allocPixelRef(SkBitmap* bitmap) { // accounts for scale in final allocation, using eventual size and config - const int bytesPerPixel = SkColorTypeBytesPerPixel( - colorTypeForScaledOutput(bitmap->colorType())); + const int bytesPerPixel = SkColorTypeBytesPerPixel(bitmap->colorType()); const int requestedSize = bytesPerPixel * int(bitmap->width() * mScale + 0.5f) * int(bitmap->height() * mScale + 0.5f); @@ -159,7 +150,7 @@ public: mSize, requestedSize); return false; } - return SkBitmap::HeapAllocator::allocPixelRef(bitmap, ctable); + return SkBitmap::HeapAllocator::allocPixelRef(bitmap); } private: const float mScale; @@ -175,7 +166,7 @@ public: ~RecyclingPixelAllocator() { } - virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) { + virtual bool allocPixelRef(SkBitmap* bitmap) { const SkImageInfo& info = bitmap->info(); if (info.colorType() == kUnknown_SkColorType) { ALOGW("unable to reuse a bitmap as the target has an unknown bitmap configuration"); @@ -195,7 +186,7 @@ public: return false; } - mBitmap->reconfigure(info, bitmap->rowBytes(), sk_ref_sp(ctable)); + mBitmap->reconfigure(info, bitmap->rowBytes()); bitmap->setPixelRef(sk_ref_sp(mBitmap), 0, 0); return true; } @@ -334,13 +325,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding env->SetIntField(options, gOptions_heightFieldID, scaledHeight); env->SetObjectField(options, gOptions_mimeFieldID, mimeType); - SkColorType outColorType = decodeColorType; - // Scaling can affect the output color type - if (willScale || scale != 1.0f) { - outColorType = colorTypeForScaledOutput(outColorType); - } - - jint configID = GraphicsJNI::colorTypeToLegacyBitmapConfig(outColorType); + jint configID = GraphicsJNI::colorTypeToLegacyBitmapConfig(decodeColorType); if (isHardware) { configID = GraphicsJNI::kHardware_LegacyBitmapConfig; } @@ -397,24 +382,6 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding decodeAllocator = &defaultAllocator; } - // Construct a color table for the decode if necessary - sk_sp colorTable(nullptr); - SkPMColor* colorPtr = nullptr; - int* colorCount = nullptr; - int maxColors = 256; - SkPMColor colors[256]; - if (kIndex_8_SkColorType == decodeColorType) { - colorTable.reset(new SkColorTable(colors, maxColors)); - - // SkColorTable expects us to initialize all of the colors before creating an - // SkColorTable. However, we are using SkBitmap with an Allocator to allocate - // memory for the decode, so we need to create the SkColorTable before decoding. - // It is safe for SkAndroidCodec to modify the colors because this SkBitmap is - // not being used elsewhere. - colorPtr = const_cast(colorTable->readColors()); - colorCount = &maxColors; - } - SkAlphaType alphaType = codec->computeOutputAlphaType(requireUnpremultiplied); const SkImageInfo decodeInfo = SkImageInfo::Make(size.width(), size.height(), @@ -437,7 +404,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding } SkBitmap decodingBitmap; if (!decodingBitmap.setInfo(bitmapInfo) || - !decodingBitmap.tryAllocPixels(decodeAllocator, colorTable.get())) { + !decodingBitmap.tryAllocPixels(decodeAllocator)) { // SkAndroidCodec should recommend a valid SkImageInfo, so setInfo() // should only only fail if the calculated value for rowBytes is too // large. @@ -450,8 +417,6 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding SkAndroidCodec::AndroidOptions codecOptions; codecOptions.fZeroInitialized = decodeAllocator == &defaultAllocator ? SkCodec::kYes_ZeroInitialized : SkCodec::kNo_ZeroInitialized; - codecOptions.fColorPtr = colorPtr; - codecOptions.fColorCount = colorCount; codecOptions.fSampleSize = sampleSize; SkCodec::Result result = codec->getAndroidPixels(decodeInfo, decodingBitmap.getPixels(), decodingBitmap.rowBytes(), &codecOptions); @@ -518,13 +483,13 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding outputAllocator = &defaultAllocator; } - SkColorType scaledColorType = colorTypeForScaledOutput(decodingBitmap.colorType()); + SkColorType scaledColorType = decodingBitmap.colorType(); // FIXME: If the alphaType is kUnpremul and the image has alpha, the // colors may not be correct, since Skia does not yet support drawing // to/from unpremultiplied bitmaps. outputBitmap.setInfo( bitmapInfo.makeWH(scaledWidth, scaledHeight).makeColorType(scaledColorType)); - if (!outputBitmap.tryAllocPixels(outputAllocator, NULL)) { + if (!outputBitmap.tryAllocPixels(outputAllocator)) { // This should only fail on OOM. The recyclingAllocator should have // enough memory since we check this before decoding using the // scaleCheckingAllocator. @@ -579,6 +544,9 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding if (isHardware) { sk_sp hardwareBitmap = Bitmap::allocateHardwareBitmap(outputBitmap); + if (!hardwareBitmap.get()) { + return nullObjectReturn("Failed to allocate a hardware bitmap"); + } return bitmap::createBitmap(env, hardwareBitmap.release(), bitmapCreateFlags, ninePatchChunk, ninePatchInsets, -1); } diff --git a/core/jni/android/graphics/GIFMovie.cpp b/core/jni/android/graphics/GIFMovie.cpp index e501cf8f325215d1f1a6519bd0eee9bd667a94e2..dd99b377988ffd3b2038b98a93b25c4b0f5edc27 100644 --- a/core/jni/android/graphics/GIFMovie.cpp +++ b/core/jni/android/graphics/GIFMovie.cpp @@ -391,8 +391,8 @@ bool GIFMovie::onGetBitmap(SkBitmap* bm) } SkColor bgColor = SkPackARGB32(0, 0, 0, 0); - if (gif->SColorMap != nullptr) { - const GifColorType& col = gif->SColorMap->Colors[fGIF->SBackGroundColor]; + if (gif->SColorMap != nullptr && gif->SBackGroundColor < gif->SColorMap->ColorCount) { + const GifColorType& col = gif->SColorMap->Colors[gif->SBackGroundColor]; bgColor = SkColorSetARGB(0xFF, col.Red, col.Green, col.Blue); } diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp index 36ebcd7f2ca66bd775ae0a053ce8e741e2cc1d6d..7c75ff426b245e3d86ca82cc869f42ddd3e36a31 100644 --- a/core/jni/android/graphics/Graphics.cpp +++ b/core/jni/android/graphics/Graphics.cpp @@ -327,8 +327,6 @@ jint GraphicsJNI::colorTypeToLegacyBitmapConfig(SkColorType colorType) { return kARGB_4444_LegacyBitmapConfig; case kRGB_565_SkColorType: return kRGB_565_LegacyBitmapConfig; - case kIndex_8_SkColorType: - return kIndex8_LegacyBitmapConfig; case kAlpha_8_SkColorType: return kA8_LegacyBitmapConfig; case kUnknown_SkColorType: @@ -342,7 +340,7 @@ SkColorType GraphicsJNI::legacyBitmapConfigToColorType(jint legacyConfig) { const uint8_t gConfig2ColorType[] = { kUnknown_SkColorType, kAlpha_8_SkColorType, - kIndex_8_SkColorType, + kUnknown_SkColorType, // Previously kIndex_8_SkColorType, kRGB_565_SkColorType, kARGB_4444_SkColorType, kN32_SkColorType, @@ -435,7 +433,7 @@ jobject GraphicsJNI::createRegion(JNIEnv* env, SkRegion* region) /////////////////////////////////////////////////////////////////////////////// android::Bitmap* GraphicsJNI::mapAshmemBitmap(JNIEnv* env, SkBitmap* bitmap, - SkColorTable* ctable, int fd, void* addr, size_t size, bool readOnly) { + int fd, void* addr, size_t size, bool readOnly) { const SkImageInfo& info = bitmap->info(); if (info.colorType() == kUnknown_SkColorType) { doThrowIAE(env, "unknown bitmap configuration"); @@ -456,7 +454,7 @@ android::Bitmap* GraphicsJNI::mapAshmemBitmap(JNIEnv* env, SkBitmap* bitmap, // attempting to compute our own. const size_t rowBytes = bitmap->rowBytes(); - auto wrapper = new android::Bitmap(addr, fd, size, info, rowBytes, sk_ref_sp(ctable)); + auto wrapper = new android::Bitmap(addr, fd, size, info, rowBytes); wrapper->getSkBitmap(bitmap); if (readOnly) { bitmap->pixelRef()->setImmutable(); @@ -609,8 +607,8 @@ jobject GraphicsJNI::getColorSpace(JNIEnv* env, sk_sp& decodeColor } /////////////////////////////////////////////////////////////////////////////// -bool HeapAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) { - mStorage = android::Bitmap::allocateHeapBitmap(bitmap, sk_ref_sp(ctable)); +bool HeapAllocator::allocPixelRef(SkBitmap* bitmap) { + mStorage = android::Bitmap::allocateHeapBitmap(bitmap); return !!mStorage; } @@ -626,7 +624,7 @@ RecyclingClippingPixelAllocator::RecyclingClippingPixelAllocator( RecyclingClippingPixelAllocator::~RecyclingClippingPixelAllocator() {} -bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) { +bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap) { // Ensure that the caller did not pass in a NULL bitmap to the constructor or this // function. LOG_ALWAYS_FATAL_IF(!mRecycledBitmap); @@ -649,7 +647,7 @@ bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTab const size_t rowBytes = maxInfo.minRowBytes(); const size_t bytesNeeded = maxInfo.getSafeSize(rowBytes); if (bytesNeeded <= mRecycledBytes) { - // Here we take advantage of reconfigure() to reset the rowBytes and ctable + // Here we take advantage of reconfigure() to reset the rowBytes // of mRecycledBitmap. It is very important that we pass in // mRecycledBitmap->info() for the SkImageInfo. According to the // specification for BitmapRegionDecoder, we are not allowed to change @@ -658,7 +656,7 @@ bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTab // storage needs mRecycledBitmap->reconfigure( mRecycledBitmap->info().makeColorSpace(bitmap->refColorSpace()), - rowBytes, sk_ref_sp(ctable)); + rowBytes); // Give the bitmap the same pixelRef as mRecycledBitmap. // skbug.com/4538: We also need to make sure that the rowBytes on the pixel ref @@ -685,7 +683,7 @@ bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTab // decode is complete. mNeedsCopy = true; - return heapAllocator.allocPixelRef(bitmap, ctable); + return heapAllocator.allocPixelRef(bitmap); } void RecyclingClippingPixelAllocator::copyIfNecessary() { @@ -716,8 +714,8 @@ AshmemPixelAllocator::AshmemPixelAllocator(JNIEnv *env) { "env->GetJavaVM failed"); } -bool AshmemPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) { - mStorage = android::Bitmap::allocateAshmemBitmap(bitmap, sk_ref_sp(ctable)); +bool AshmemPixelAllocator::allocPixelRef(SkBitmap* bitmap) { + mStorage = android::Bitmap::allocateAshmemBitmap(bitmap); return !!mStorage; } diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h index 7fbea2589730ca983cf0d094e021b7afe7c2a0b5..7f4b384235e5ace2f0a576f56be6e62fbb38bbc7 100644 --- a/core/jni/android/graphics/GraphicsJNI.h +++ b/core/jni/android/graphics/GraphicsJNI.h @@ -91,7 +91,7 @@ public: static jobject createBitmapRegionDecoder(JNIEnv* env, SkBitmapRegionDecoder* bitmap); static android::Bitmap* mapAshmemBitmap(JNIEnv* env, SkBitmap* bitmap, - SkColorTable* ctable, int fd, void* addr, size_t size, bool readOnly); + int fd, void* addr, size_t size, bool readOnly); /** * Given a bitmap we natively allocate a memory block to store the contents @@ -99,7 +99,7 @@ public: * SkPixelRef, which ensures that upon deletion the appropriate caches * are notified. */ - static bool allocatePixels(JNIEnv* env, SkBitmap* bitmap, SkColorTable* ctable); + static bool allocatePixels(JNIEnv* env, SkBitmap* bitmap); /** Copy the colors in colors[] to the bitmap, convert to the correct format along the way. @@ -127,7 +127,7 @@ public: HeapAllocator() { }; ~HeapAllocator() { }; - virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) override; + virtual bool allocPixelRef(SkBitmap* bitmap) override; /** * Fetches the backing allocation object. Must be called! @@ -176,7 +176,7 @@ public: ~RecyclingClippingPixelAllocator(); - virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable) override; + virtual bool allocPixelRef(SkBitmap* bitmap) override; /** * Must be called! @@ -206,7 +206,7 @@ class AshmemPixelAllocator : public SkBitmap::Allocator { public: explicit AshmemPixelAllocator(JNIEnv* env); ~AshmemPixelAllocator() { }; - virtual bool allocPixelRef(SkBitmap* bitmap, SkColorTable* ctable); + virtual bool allocPixelRef(SkBitmap* bitmap); android::Bitmap* getStorageObjAndReset() { return mStorage.release(); }; diff --git a/core/jni/android/graphics/NinePatch.cpp b/core/jni/android/graphics/NinePatch.cpp index 05734fd48c4383175546e6b71034e6a7523cde1f..460a0d75ca4ea843819442fda1a59b877894498c 100644 --- a/core/jni/android/graphics/NinePatch.cpp +++ b/core/jni/android/graphics/NinePatch.cpp @@ -91,7 +91,6 @@ public: jlong chunkHandle, jobject dstRect) { Res_png_9patch* chunk = reinterpret_cast(chunkHandle); SkASSERT(chunk); - SkASSERT(boundsRect); SkBitmap bitmap; GraphicsJNI::getSkBitmap(env, jbitmap, &bitmap); diff --git a/core/jni/android/graphics/Paint.cpp b/core/jni/android/graphics/Paint.cpp index 5a24b9d6786145d66639399cf90977e080ae2e8d..7c7a1c72502e4aa24bb38351383f8b545901ebcb 100644 --- a/core/jni/android/graphics/Paint.cpp +++ b/core/jni/android/graphics/Paint.cpp @@ -961,6 +961,40 @@ namespace PaintGlue { return SkScalarToFloat(metrics.fDescent); } + static jfloat getUnderlinePosition(jlong paintHandle, jlong typefaceHandle) { + Paint::FontMetrics metrics; + getMetricsInternal(paintHandle, typefaceHandle, &metrics); + SkScalar position; + if (metrics.hasUnderlinePosition(&position)) { + return SkScalarToFloat(position); + } else { + const SkScalar textSize = reinterpret_cast(paintHandle)->getTextSize(); + return SkScalarToFloat(Paint::kStdUnderline_Top * textSize); + } + } + + static jfloat getUnderlineThickness(jlong paintHandle, jlong typefaceHandle) { + Paint::FontMetrics metrics; + getMetricsInternal(paintHandle, typefaceHandle, &metrics); + SkScalar thickness; + if (metrics.hasUnderlineThickness(&thickness)) { + return SkScalarToFloat(thickness); + } else { + const SkScalar textSize = reinterpret_cast(paintHandle)->getTextSize(); + return SkScalarToFloat(Paint::kStdUnderline_Thickness * textSize); + } + } + + static jfloat getStrikeThruPosition(jlong paintHandle, jlong typefaceHandle) { + const SkScalar textSize = reinterpret_cast(paintHandle)->getTextSize(); + return SkScalarToFloat(Paint::kStdStrikeThru_Top * textSize); + } + + static jfloat getStrikeThruThickness(jlong paintHandle, jlong typefaceHandle) { + const SkScalar textSize = reinterpret_cast(paintHandle)->getTextSize(); + return SkScalarToFloat(Paint::kStdStrikeThru_Thickness * textSize); + } + static void setShadowLayer(jlong paintHandle, jfloat radius, jfloat dx, jfloat dy, jint color) { Paint* paint = reinterpret_cast(paintHandle); @@ -1072,6 +1106,10 @@ static const JNINativeMethod methods[] = { {"nSetHyphenEdit", "(JI)V", (void*) PaintGlue::setHyphenEdit}, {"nAscent","(JJ)F", (void*) PaintGlue::ascent}, {"nDescent","(JJ)F", (void*) PaintGlue::descent}, + {"nGetUnderlinePosition","(JJ)F", (void*) PaintGlue::getUnderlinePosition}, + {"nGetUnderlineThickness","(JJ)F", (void*) PaintGlue::getUnderlineThickness}, + {"nGetStrikeThruPosition","(JJ)F", (void*) PaintGlue::getStrikeThruPosition}, + {"nGetStrikeThruThickness","(JJ)F", (void*) PaintGlue::getStrikeThruThickness}, {"nSetShadowLayer", "(JFFFI)V", (void*)PaintGlue::setShadowLayer}, {"nHasShadowLayer", "(J)Z", (void*)PaintGlue::hasShadowLayer} }; diff --git a/core/jni/android/opengl/util.cpp b/core/jni/android/opengl/util.cpp index 79cc1e61e1841e5e0cf3141a97f612819aa2665a..1522c20dbe2f5f4c63277647ed7b9d82de7ff1c8 100644 --- a/core/jni/android/opengl/util.cpp +++ b/core/jni/android/opengl/util.cpp @@ -623,9 +623,6 @@ void util_multiplyMV(JNIEnv *env, jclass clazz, static int checkFormat(SkColorType colorType, int format, int type) { switch(colorType) { - case kIndex_8_SkColorType: - if (format == GL_PALETTE8_RGBA8_OES) - return 0; case kN32_SkColorType: case kAlpha_8_SkColorType: if (type == GL_UNSIGNED_BYTE) @@ -657,8 +654,6 @@ static int getInternalFormat(SkColorType colorType) return GL_RGBA; case kN32_SkColorType: return GL_RGBA; - case kIndex_8_SkColorType: - return GL_PALETTE8_RGBA8_OES; case kRGB_565_SkColorType: return GL_RGB; default: @@ -675,8 +670,6 @@ static int getType(SkColorType colorType) return GL_UNSIGNED_SHORT_4_4_4_4; case kN32_SkColorType: return GL_UNSIGNED_BYTE; - case kIndex_8_SkColorType: - return -1; // No type for compressed data. case kRGB_565_SkColorType: return GL_UNSIGNED_SHORT_5_6_5; default: @@ -720,28 +713,10 @@ static jint util_texImage2D(JNIEnv *env, jclass clazz, const int h = bitmap.height(); const void* p = bitmap.getPixels(); if (internalformat == GL_PALETTE8_RGBA8_OES) { - if (sizeof(SkPMColor) != sizeof(uint32_t)) { - err = -1; - goto error; - } - const size_t size = bitmap.getSize(); - const size_t palette_size = 256*sizeof(SkPMColor); - const size_t imageSize = size + palette_size; - void* const data = malloc(imageSize); - if (data) { - void* const pixels = (char*)data + palette_size; - SkColorTable* ctable = bitmap.getColorTable(); - memcpy(data, ctable->readColors(), ctable->count() * sizeof(SkPMColor)); - memcpy(pixels, p, size); - glCompressedTexImage2D(target, level, internalformat, w, h, border, imageSize, data); - free(data); - } else { - err = -1; - } + err = -1; } else { glTexImage2D(target, level, internalformat, w, h, border, internalformat, type, p); } -error: return err; } diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp index cbf09bd08673cb262e8c10abb36ba49eb031045a..c3f9bf7f25bf14334a554bcd80ec7b8af811bc8d 100644 --- a/core/jni/android_database_SQLiteConnection.cpp +++ b/core/jni/android_database_SQLiteConnection.cpp @@ -112,7 +112,8 @@ static int sqliteProgressHandlerCallback(void* data) { static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFlags, - jstring labelStr, jboolean enableTrace, jboolean enableProfile) { + jstring labelStr, jboolean enableTrace, jboolean enableProfile, jint lookasideSz, + jint lookasideCnt) { int sqliteFlags; if (openFlags & SQLiteConnection::CREATE_IF_NECESSARY) { sqliteFlags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE; @@ -137,6 +138,16 @@ static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFla return 0; } + if (lookasideSz >= 0 && lookasideCnt >= 0) { + int err = sqlite3_db_config(db, SQLITE_DBCONFIG_LOOKASIDE, NULL, lookasideSz, lookasideCnt); + if (err != SQLITE_OK) { + ALOGE("sqlite3_db_config(..., %d, %d) failed: %d", lookasideSz, lookasideCnt, err); + throw_sqlite3_exception(env, db, "Cannot set lookaside"); + sqlite3_close(db); + return 0; + } + } + // Check that the database is really read/write when that is what we asked for. if ((sqliteFlags & SQLITE_OPEN_READWRITE) && sqlite3_db_readonly(db, NULL)) { throw_sqlite3_exception(env, db, "Could not open the database in read/write mode."); @@ -789,7 +800,7 @@ static void nativeResetCancel(JNIEnv* env, jobject clazz, jlong connectionPtr, static const JNINativeMethod sMethods[] = { /* name, signature, funcPtr */ - { "nativeOpen", "(Ljava/lang/String;ILjava/lang/String;ZZ)J", + { "nativeOpen", "(Ljava/lang/String;ILjava/lang/String;ZZII)J", (void*)nativeOpen }, { "nativeClose", "(J)V", (void*)nativeClose }, diff --git a/core/jni/android_graphics_Canvas.cpp b/core/jni/android_graphics_Canvas.cpp index c0f719ed7abed2e9ef8034bdaabd11872e3154ef..80f6abe194b32383818d8dcb48d2e15252403211 100644 --- a/core/jni/android_graphics_Canvas.cpp +++ b/core/jni/android_graphics_Canvas.cpp @@ -452,7 +452,7 @@ static void drawBitmapArray(JNIEnv* env, jobject, jlong canvasHandle, GraphicsJNI::defaultColorSpace()); SkBitmap bitmap; bitmap.setInfo(info); - sk_sp androidBitmap = Bitmap::allocateHeapBitmap(&bitmap, NULL); + sk_sp androidBitmap = Bitmap::allocateHeapBitmap(&bitmap); if (!androidBitmap) { return; } diff --git a/core/jni/android_hardware_Radio.cpp b/core/jni/android_hardware_Radio.cpp deleted file mode 100644 index 39e615c1de49478730559b67a86fc5c0bb54efb2..0000000000000000000000000000000000000000 --- a/core/jni/android_hardware_Radio.cpp +++ /dev/null @@ -1,967 +0,0 @@ -/* -** -** Copyright 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_NDEBUG 1 -#define LOG_TAG "Radio-JNI" -#include - -#include "jni.h" -#include "JNIHelp.h" -#include "core_jni_helpers.h" -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace android; - -static jclass gArrayListClass; -static struct { - jmethodID add; -} gArrayListMethods; - -static const char* const kRadioManagerClassPathName = "android/hardware/radio/RadioManager"; -static jclass gRadioManagerClass; - -static const char* const kRadioModuleClassPathName = "android/hardware/radio/RadioModule"; -static jclass gRadioModuleClass; -static struct { - jfieldID mNativeContext; - jfieldID mId; -} gModuleFields; -static jmethodID gPostEventFromNative; - -static const char* const kModulePropertiesClassPathName = - "android/hardware/radio/RadioManager$ModuleProperties"; -static jclass gModulePropertiesClass; -static jmethodID gModulePropertiesCstor; - - -static const char* const kRadioBandDescriptorClassPathName = - "android/hardware/radio/RadioManager$BandDescriptor"; -static jclass gRadioBandDescriptorClass; -static struct { - jfieldID mRegion; - jfieldID mType; - jfieldID mLowerLimit; - jfieldID mUpperLimit; - jfieldID mSpacing; -} gRadioBandDescriptorFields; - -static const char* const kRadioFmBandDescriptorClassPathName = - "android/hardware/radio/RadioManager$FmBandDescriptor"; -static jclass gRadioFmBandDescriptorClass; -static jmethodID gRadioFmBandDescriptorCstor; - -static const char* const kRadioAmBandDescriptorClassPathName = - "android/hardware/radio/RadioManager$AmBandDescriptor"; -static jclass gRadioAmBandDescriptorClass; -static jmethodID gRadioAmBandDescriptorCstor; - -static const char* const kRadioBandConfigClassPathName = - "android/hardware/radio/RadioManager$BandConfig"; -static jclass gRadioBandConfigClass; -static struct { - jfieldID mDescriptor; -} gRadioBandConfigFields; - - -static const char* const kRadioFmBandConfigClassPathName = - "android/hardware/radio/RadioManager$FmBandConfig"; -static jclass gRadioFmBandConfigClass; -static jmethodID gRadioFmBandConfigCstor; -static struct { - jfieldID mStereo; - jfieldID mRds; - jfieldID mTa; - jfieldID mAf; - jfieldID mEa; -} gRadioFmBandConfigFields; - -static const char* const kRadioAmBandConfigClassPathName = - "android/hardware/radio/RadioManager$AmBandConfig"; -static jclass gRadioAmBandConfigClass; -static jmethodID gRadioAmBandConfigCstor; -static struct { - jfieldID mStereo; -} gRadioAmBandConfigFields; - - -static const char* const kRadioProgramInfoClassPathName = - "android/hardware/radio/RadioManager$ProgramInfo"; -static jclass gRadioProgramInfoClass; -static jmethodID gRadioProgramInfoCstor; - -static const char* const kRadioMetadataClassPathName = - "android/hardware/radio/RadioMetadata"; -static jclass gRadioMetadataClass; -static jmethodID gRadioMetadataCstor; -static struct { - jmethodID putIntFromNative; - jmethodID putStringFromNative; - jmethodID putBitmapFromNative; - jmethodID putClockFromNative; -} gRadioMetadataMethods; - -static Mutex gLock; - -enum { - RADIO_STATUS_OK = 0, - RADIO_STATUS_ERROR = INT_MIN, - RADIO_PERMISSION_DENIED = -1, - RADIO_STATUS_NO_INIT = -19, - RADIO_STATUS_BAD_VALUE = -22, - RADIO_STATUS_DEAD_OBJECT = -32, - RADIO_STATUS_INVALID_OPERATION = -38, - RADIO_STATUS_TIMED_OUT = -110, -}; - - -// ---------------------------------------------------------------------------- - -static sp getRadio(JNIEnv* env, jobject thiz) -{ - Mutex::Autolock l(gLock); - Radio* const radio = (Radio*)env->GetLongField(thiz, gModuleFields.mNativeContext); - return sp(radio); -} - -static sp setRadio(JNIEnv* env, jobject thiz, const sp& module) -{ - Mutex::Autolock l(gLock); - sp old = (Radio*)env->GetLongField(thiz, gModuleFields.mNativeContext); - if (module.get()) { - module->incStrong((void*)setRadio); - } - if (old != 0) { - old->decStrong((void*)setRadio); - } - env->SetLongField(thiz, gModuleFields.mNativeContext, (jlong)module.get()); - return old; -} - -static jint convertBandDescriptorFromNative(JNIEnv *env, - jobject *jBandDescriptor, - const radio_band_config_t *nBandconfig) -{ - ALOGV("%s type %d region %d", __FUNCTION__, nBandconfig->band.type, nBandconfig->region); - - if (nBandconfig->band.type == RADIO_BAND_FM || - nBandconfig->band.type == RADIO_BAND_FM_HD) { - *jBandDescriptor = env->NewObject(gRadioFmBandDescriptorClass, gRadioFmBandDescriptorCstor, - nBandconfig->region, nBandconfig->band.type, - nBandconfig->band.lower_limit, nBandconfig->band.upper_limit, - nBandconfig->band.spacings[0], - nBandconfig->band.fm.stereo, - nBandconfig->band.fm.rds != RADIO_RDS_NONE, - nBandconfig->band.fm.ta, - nBandconfig->band.fm.af, - nBandconfig->band.fm.ea); - } else if (nBandconfig->band.type == RADIO_BAND_AM) { - *jBandDescriptor = env->NewObject(gRadioAmBandDescriptorClass, gRadioAmBandDescriptorCstor, - nBandconfig->region, nBandconfig->band.type, - nBandconfig->band.lower_limit, nBandconfig->band.upper_limit, - nBandconfig->band.spacings[0], - nBandconfig->band.am.stereo); - } else { - ALOGE("%s unknown band type %d", __FUNCTION__, nBandconfig->band.type); - return (jint)RADIO_STATUS_BAD_VALUE; - } - - if (*jBandDescriptor == NULL) { - return (jint)RADIO_STATUS_NO_INIT; - } - - return (jint)RADIO_STATUS_OK; -} - -static jint convertBandConfigFromNative(JNIEnv *env, - jobject *jBandConfig, - const radio_band_config_t *nBandconfig) -{ - ALOGV("%s type %d region %d", __FUNCTION__, nBandconfig->band.type, nBandconfig->region); - - if (nBandconfig->band.type == RADIO_BAND_FM || - nBandconfig->band.type == RADIO_BAND_FM_HD) { - *jBandConfig = env->NewObject(gRadioFmBandConfigClass, gRadioFmBandConfigCstor, - nBandconfig->region, nBandconfig->band.type, - nBandconfig->band.lower_limit, nBandconfig->band.upper_limit, - nBandconfig->band.spacings[0], - nBandconfig->band.fm.stereo, - nBandconfig->band.fm.rds != RADIO_RDS_NONE, - nBandconfig->band.fm.ta, - nBandconfig->band.fm.af, - nBandconfig->band.fm.ea); - } else if (nBandconfig->band.type == RADIO_BAND_AM) { - *jBandConfig = env->NewObject(gRadioAmBandConfigClass, gRadioAmBandConfigCstor, - nBandconfig->region, nBandconfig->band.type, - nBandconfig->band.lower_limit, nBandconfig->band.upper_limit, - nBandconfig->band.spacings[0], - nBandconfig->band.am.stereo); - } else { - ALOGE("%s unknown band type %d", __FUNCTION__, nBandconfig->band.type); - return (jint)RADIO_STATUS_BAD_VALUE; - } - - if (*jBandConfig == NULL) { - return (jint)RADIO_STATUS_NO_INIT; - } - - return (jint)RADIO_STATUS_OK; -} - -static jint convertMetadataFromNative(JNIEnv *env, - jobject *jMetadata, - const radio_metadata_t *nMetadata) -{ - ALOGV("%s", __FUNCTION__); - int count = radio_metadata_get_count(nMetadata); - if (count <= 0) { - return (jint)count; - } - *jMetadata = env->NewObject(gRadioMetadataClass, gRadioMetadataCstor); - - jint jCount = 0; - jint jStatus = 0; - for (unsigned int i = 0; i < (unsigned int)count; i++) { - radio_metadata_key_t key; - radio_metadata_type_t type; - void *value; - size_t size; - if (radio_metadata_get_at_index(nMetadata, i , &key, &type, &value, &size) != 0) { - continue; - } - switch (type) { - case RADIO_METADATA_TYPE_INT: { - ALOGV("%s RADIO_METADATA_TYPE_INT %d", __FUNCTION__, key); - int32_t val = *(int32_t *)value; - jStatus = env->CallIntMethod(*jMetadata, - gRadioMetadataMethods.putIntFromNative, - key, (jint)val); - if (jStatus == 0) { - jCount++; - } - } break; - case RADIO_METADATA_TYPE_TEXT: { - ALOGV("%s RADIO_METADATA_TYPE_TEXT %d", __FUNCTION__, key); - jstring jText = env->NewStringUTF((char *)value); - jStatus = env->CallIntMethod(*jMetadata, - gRadioMetadataMethods.putStringFromNative, - key, jText); - if (jStatus == 0) { - jCount++; - } - env->DeleteLocalRef(jText); - } break; - case RADIO_METADATA_TYPE_RAW: { - ALOGV("%s RADIO_METADATA_TYPE_RAW %d size %zu", __FUNCTION__, key, size); - if (size == 0) { - break; - } - jbyteArray jData = env->NewByteArray(size); - if (jData == NULL) { - break; - } - env->SetByteArrayRegion(jData, 0, size, (jbyte *)value); - jStatus = env->CallIntMethod(*jMetadata, - gRadioMetadataMethods.putBitmapFromNative, - key, jData); - if (jStatus == 0) { - jCount++; - } - env->DeleteLocalRef(jData); - } break; - case RADIO_METADATA_TYPE_CLOCK: { - ALOGV("%s RADIO_METADATA_TYPE_CLOCK %d", __FUNCTION__, key); - radio_metadata_clock_t *clock = (radio_metadata_clock_t *) value; - jStatus = - env->CallIntMethod(*jMetadata, - gRadioMetadataMethods.putClockFromNative, - key, (jint) clock->utc_seconds_since_epoch, - (jint) clock->timezone_offset_in_minutes); - if (jStatus == 0) { - jCount++; - } - } break; - } - } - return jCount; -} - -static jint convertProgramInfoFromNative(JNIEnv *env, - jobject *jProgramInfo, - const radio_program_info_t *nProgramInfo) -{ - ALOGV("%s", __FUNCTION__); - int jStatus; - jobject jMetadata = NULL; - - if (nProgramInfo == nullptr || nProgramInfo->metadata == nullptr) { - return (jint)RADIO_STATUS_BAD_VALUE; - } - - jStatus = convertMetadataFromNative(env, &jMetadata, nProgramInfo->metadata); - if (jStatus < 0) { - return jStatus; - } - - ALOGV("%s channel %d tuned %d", __FUNCTION__, nProgramInfo->channel, nProgramInfo->tuned); - - int flags = 0; // TODO(b/32621193): pass from the HAL - jstring jVendorExension = env->NewStringUTF(""); // TODO(b/32621193): pass from the HAL - *jProgramInfo = env->NewObject(gRadioProgramInfoClass, gRadioProgramInfoCstor, - nProgramInfo->channel, nProgramInfo->sub_channel, - nProgramInfo->tuned, nProgramInfo->stereo, - nProgramInfo->digital, nProgramInfo->signal_strength, - jMetadata, flags, jVendorExension); - - env->DeleteLocalRef(jMetadata); - env->DeleteLocalRef(jVendorExension); - return (jint)RADIO_STATUS_OK; -} - - -static jint convertBandConfigToNative(JNIEnv *env, - radio_band_config_t *nBandconfig, - jobject jBandConfig) -{ - ALOGV("%s", __FUNCTION__); - - jobject jDescriptor = env->GetObjectField(jBandConfig, gRadioBandConfigFields.mDescriptor); - - if (jDescriptor == NULL) { - return (jint)RADIO_STATUS_NO_INIT; - } - - nBandconfig->region = - (radio_region_t)env->GetIntField(jDescriptor, gRadioBandDescriptorFields.mRegion); - nBandconfig->band.type = - (radio_band_t)env->GetIntField(jDescriptor, gRadioBandDescriptorFields.mType); - nBandconfig->band.lower_limit = - env->GetIntField(jDescriptor, gRadioBandDescriptorFields.mLowerLimit); - nBandconfig->band.upper_limit = - env->GetIntField(jDescriptor, gRadioBandDescriptorFields.mUpperLimit); - nBandconfig->band.num_spacings = 1; - nBandconfig->band.spacings[0] = - env->GetIntField(jDescriptor, gRadioBandDescriptorFields.mSpacing); - - if (env->IsInstanceOf(jBandConfig, gRadioFmBandConfigClass)) { - nBandconfig->band.fm.deemphasis = radio_demephasis_for_region(nBandconfig->region); - nBandconfig->band.fm.stereo = - env->GetBooleanField(jBandConfig, gRadioFmBandConfigFields.mStereo); - nBandconfig->band.fm.rds = - radio_rds_for_region(env->GetBooleanField(jBandConfig, - gRadioFmBandConfigFields.mRds), - nBandconfig->region); - nBandconfig->band.fm.ta = env->GetBooleanField(jBandConfig, gRadioFmBandConfigFields.mTa); - nBandconfig->band.fm.af = env->GetBooleanField(jBandConfig, gRadioFmBandConfigFields.mAf); - nBandconfig->band.fm.ea = env->GetBooleanField(jBandConfig, gRadioFmBandConfigFields.mEa); - } else if (env->IsInstanceOf(jBandConfig, gRadioAmBandConfigClass)) { - nBandconfig->band.am.stereo = - env->GetBooleanField(jBandConfig, gRadioAmBandConfigFields.mStereo); - } else { - return (jint)RADIO_STATUS_BAD_VALUE; - } - - return (jint)RADIO_STATUS_OK; -} - -static jint -android_hardware_Radio_listModules(JNIEnv *env, jobject clazz, - jobject jModules) -{ - ALOGV("%s", __FUNCTION__); - - if (jModules == NULL) { - ALOGE("listModules NULL ArrayList"); - return RADIO_STATUS_BAD_VALUE; - } - if (!env->IsInstanceOf(jModules, gArrayListClass)) { - ALOGE("listModules not an arraylist"); - return RADIO_STATUS_BAD_VALUE; - } - - unsigned int numModules = 0; - radio_properties_t *nModules = NULL; - - status_t status = Radio::listModules(nModules, &numModules); - if (status != NO_ERROR || numModules == 0) { - return (jint)status; - } - - nModules = (radio_properties_t *)calloc(numModules, sizeof(radio_properties_t)); - - status = Radio::listModules(nModules, &numModules); - ALOGV("%s Radio::listModules status %d numModules %d", __FUNCTION__, status, numModules); - - if (status != NO_ERROR) { - numModules = 0; - } - - for (size_t i = 0; i < numModules; i++) { - if (nModules[i].num_bands == 0) { - continue; - } - ALOGV("%s module %zu id %d implementor %s product %s", - __FUNCTION__, i, nModules[i].handle, nModules[i].implementor, - nModules[i].product); - - - jobjectArray jBands = env->NewObjectArray(nModules[i].num_bands, - gRadioBandDescriptorClass, NULL); - - for (size_t j = 0; j < nModules[i].num_bands; j++) { - jobject jBandDescriptor; - int jStatus = - convertBandDescriptorFromNative(env, &jBandDescriptor, &nModules[i].bands[j]); - if (jStatus != RADIO_STATUS_OK) { - continue; - } - env->SetObjectArrayElement(jBands, j, jBandDescriptor); - env->DeleteLocalRef(jBandDescriptor); - } - - if (env->GetArrayLength(jBands) == 0) { - continue; - } - jstring jImplementor = env->NewStringUTF(nModules[i].implementor); - jstring jProduct = env->NewStringUTF(nModules[i].product); - jstring jVersion = env->NewStringUTF(nModules[i].version); - jstring jSerial = env->NewStringUTF(nModules[i].serial); - bool isBgscanSupported = false; // TODO(b/32621193): pass from the HAL - jstring jVendorExension = env->NewStringUTF(""); // TODO(b/32621193): pass from the HAL - jobject jModule = env->NewObject(gModulePropertiesClass, gModulePropertiesCstor, - nModules[i].handle, nModules[i].class_id, - jImplementor, jProduct, jVersion, jSerial, - nModules[i].num_tuners, - nModules[i].num_audio_sources, - nModules[i].supports_capture, - jBands, isBgscanSupported, jVendorExension); - - env->DeleteLocalRef(jImplementor); - env->DeleteLocalRef(jProduct); - env->DeleteLocalRef(jVersion); - env->DeleteLocalRef(jSerial); - env->DeleteLocalRef(jBands); - env->DeleteLocalRef(jVendorExension); - if (jModule == NULL) { - continue; - } - env->CallBooleanMethod(jModules, gArrayListMethods.add, jModule); - } - - free(nModules); - return (jint) status; -} - -// ---------------------------------------------------------------------------- - -class JNIRadioCallback: public RadioCallback -{ -public: - JNIRadioCallback(JNIEnv* env, jobject thiz, jobject weak_thiz); - ~JNIRadioCallback(); - - virtual void onEvent(struct radio_event *event); - -private: - jclass mClass; // Reference to Radio class - jobject mObject; // Weak ref to Radio Java object to call on -}; - -JNIRadioCallback::JNIRadioCallback(JNIEnv* env, jobject thiz, jobject weak_thiz) -{ - - // Hold onto the RadioModule class for use in calling the static method - // that posts events to the application thread. - jclass clazz = env->GetObjectClass(thiz); - if (clazz == NULL) { - ALOGE("Can't find class %s", kRadioModuleClassPathName); - return; - } - mClass = (jclass)env->NewGlobalRef(clazz); - - // We use a weak reference so the RadioModule object can be garbage collected. - // The reference is only used as a proxy for callbacks. - mObject = env->NewGlobalRef(weak_thiz); -} - -JNIRadioCallback::~JNIRadioCallback() -{ - // remove global references - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - return; - } - env->DeleteGlobalRef(mObject); - env->DeleteGlobalRef(mClass); -} - -void JNIRadioCallback::onEvent(struct radio_event *event) -{ - JNIEnv *env = AndroidRuntime::getJNIEnv(); - if (env == NULL) { - return; - } - - ALOGV("%s", __FUNCTION__); - - jobject jObj = NULL; - jint jArg2 = 0; - jint jStatus = RADIO_STATUS_OK; - switch (event->type) { - case RADIO_EVENT_CONFIG: - jStatus = convertBandConfigFromNative(env, &jObj, &event->config); - break; - case RADIO_EVENT_TUNED: - case RADIO_EVENT_AF_SWITCH: - ALOGV("%s RADIO_EVENT_TUNED channel %d", __FUNCTION__, event->info.channel); - jStatus = convertProgramInfoFromNative(env, &jObj, &event->info); - break; - case RADIO_EVENT_METADATA: - jStatus = convertMetadataFromNative(env, &jObj, event->metadata); - if (jStatus >= 0) { - jStatus = RADIO_STATUS_OK; - } - break; - case RADIO_EVENT_ANTENNA: - case RADIO_EVENT_TA: - case RADIO_EVENT_EA: - case RADIO_EVENT_CONTROL: - jArg2 = event->on ? 1 : 0; - break; - } - - if (jStatus != RADIO_STATUS_OK) { - return; - } - env->CallStaticVoidMethod(mClass, gPostEventFromNative, mObject, - event->type, event->status, jArg2, jObj); - - env->DeleteLocalRef(jObj); - if (env->ExceptionCheck()) { - ALOGW("An exception occurred while notifying an event."); - env->ExceptionClear(); - } -} - -// ---------------------------------------------------------------------------- - -static void -android_hardware_Radio_setup(JNIEnv *env, jobject thiz, - jobject weak_this, jobject jConfig, jboolean withAudio) -{ - ALOGV("%s", __FUNCTION__); - - setRadio(env, thiz, 0); - - sp callback = new JNIRadioCallback(env, thiz, weak_this); - - radio_handle_t handle = (radio_handle_t)env->GetIntField(thiz, gModuleFields.mId); - - struct radio_band_config nConfig; - struct radio_band_config *configPtr = NULL; - if (jConfig != NULL) { - jint jStatus = convertBandConfigToNative(env, &nConfig, jConfig); - if (jStatus != RADIO_STATUS_OK) { - return; - } - configPtr = &nConfig; - } - sp module = Radio::attach(handle, configPtr, (bool)withAudio, callback); - if (module == 0) { - return; - } - - setRadio(env, thiz, module); -} - -static void -android_hardware_Radio_close(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = setRadio(env, thiz, 0); - ALOGV("detach module %p", module.get()); - if (module != 0) { - ALOGV("detach module->detach()"); - module->detach(); - } -} - -static void -android_hardware_Radio_finalize(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module != 0) { - ALOGW("Radio finalized without being detached"); - } - android_hardware_Radio_close(env, thiz); -} - -static jint -android_hardware_Radio_setConfiguration(JNIEnv *env, jobject thiz, jobject jConfig) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - - if (!env->IsInstanceOf(jConfig, gRadioFmBandConfigClass) && - !env->IsInstanceOf(jConfig, gRadioAmBandConfigClass)) { - return RADIO_STATUS_BAD_VALUE; - } - - struct radio_band_config nConfig; - jint jStatus = convertBandConfigToNative(env, &nConfig, jConfig); - if (jStatus != RADIO_STATUS_OK) { - return jStatus; - } - - status_t status = module->setConfiguration(&nConfig); - return (jint)status; -} - -static jint -android_hardware_Radio_getConfiguration(JNIEnv *env, jobject thiz, jobjectArray jConfigs) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - if (env->GetArrayLength(jConfigs) != 1) { - return (jint)RADIO_STATUS_BAD_VALUE; - } - - struct radio_band_config nConfig; - - status_t status = module->getConfiguration(&nConfig); - if (status != NO_ERROR) { - return (jint)status; - } - jobject jConfig; - int jStatus = convertBandConfigFromNative(env, &jConfig, &nConfig); - if (jStatus != RADIO_STATUS_OK) { - return jStatus; - } - env->SetObjectArrayElement(jConfigs, 0, jConfig); - env->DeleteLocalRef(jConfig); - return RADIO_STATUS_OK; -} - -static jint -android_hardware_Radio_setMute(JNIEnv *env, jobject thiz, jboolean mute) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - status_t status = module->setMute((bool)mute); - return (jint)status; -} - -static jboolean -android_hardware_Radio_getMute(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return true; - } - bool mute = true; - status_t status = module->getMute(&mute); - if (status != NO_ERROR) { - return true; - } - return (jboolean)mute; -} - -static jint -android_hardware_Radio_step(JNIEnv *env, jobject thiz, jint direction, jboolean skipSubChannel) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - status_t status = module->step((radio_direction_t)direction, (bool)skipSubChannel); - return (jint)status; -} - -static jint -android_hardware_Radio_scan(JNIEnv *env, jobject thiz, jint direction, jboolean skipSubChannel) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - status_t status = module->scan((radio_direction_t)direction, (bool)skipSubChannel); - return (jint)status; -} - -static jint -android_hardware_Radio_tune(JNIEnv *env, jobject thiz, jint channel, jint subChannel) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - status_t status = module->tune((uint32_t)channel, (uint32_t)subChannel); - return (jint)status; -} - -static jint -android_hardware_Radio_cancel(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - status_t status = module->cancel(); - return (jint)status; -} - -static jint -android_hardware_Radio_getProgramInformation(JNIEnv *env, jobject thiz, jobjectArray jInfos) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return RADIO_STATUS_NO_INIT; - } - if (env->GetArrayLength(jInfos) != 1) { - return (jint)RADIO_STATUS_BAD_VALUE; - } - - struct radio_program_info nInfo; - RadioMetadataWrapper metadataWrapper(&nInfo.metadata); - jobject jInfo = NULL; - int jStatus; - - jStatus = (int)module->getProgramInformation(&nInfo); - if (jStatus != RADIO_STATUS_OK) { - goto exit; - } - jStatus = convertProgramInfoFromNative(env, &jInfo, &nInfo); - if (jStatus != RADIO_STATUS_OK) { - goto exit; - } - env->SetObjectArrayElement(jInfos, 0, jInfo); - -exit: - if (jInfo != NULL) { - env->DeleteLocalRef(jInfo); - } - return jStatus; -} - -static jboolean -android_hardware_Radio_isAntennaConnected(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return false; - } - - struct radio_band_config nConfig; - - status_t status = module->getConfiguration(&nConfig); - if (status != NO_ERROR) { - return false; - } - - return (jboolean)nConfig.band.antenna_connected; -} - - -static jboolean -android_hardware_Radio_hasControl(JNIEnv *env, jobject thiz) -{ - ALOGV("%s", __FUNCTION__); - sp module = getRadio(env, thiz); - if (module == NULL) { - return false; - } - - bool hasControl; - status_t status = module->hasControl(&hasControl); - if (status != NO_ERROR) { - return false; - } - - return (jboolean)hasControl; -} - - -static JNINativeMethod gMethods[] = { - {"listModules", - "(Ljava/util/List;)I", - (void *)android_hardware_Radio_listModules}, -}; - -static JNINativeMethod gModuleMethods[] = { - {"native_setup", - "(Ljava/lang/Object;Landroid/hardware/radio/RadioManager$BandConfig;Z)V", - (void *)android_hardware_Radio_setup}, - {"native_finalize", - "()V", - (void *)android_hardware_Radio_finalize}, - {"close", - "()V", - (void *)android_hardware_Radio_close}, - {"setConfiguration", - "(Landroid/hardware/radio/RadioManager$BandConfig;)I", - (void *)android_hardware_Radio_setConfiguration}, - {"getConfiguration", - "([Landroid/hardware/radio/RadioManager$BandConfig;)I", - (void *)android_hardware_Radio_getConfiguration}, - {"setMute", - "(Z)I", - (void *)android_hardware_Radio_setMute}, - {"getMute", - "()Z", - (void *)android_hardware_Radio_getMute}, - {"step", - "(IZ)I", - (void *)android_hardware_Radio_step}, - {"scan", - "(IZ)I", - (void *)android_hardware_Radio_scan}, - {"tune", - "(II)I", - (void *)android_hardware_Radio_tune}, - {"cancel", - "()I", - (void *)android_hardware_Radio_cancel}, - {"getProgramInformation", - "([Landroid/hardware/radio/RadioManager$ProgramInfo;)I", - (void *)android_hardware_Radio_getProgramInformation}, - {"isAntennaConnected", - "()Z", - (void *)android_hardware_Radio_isAntennaConnected}, - {"hasControl", - "()Z", - (void *)android_hardware_Radio_hasControl}, -}; - -int register_android_hardware_Radio(JNIEnv *env) -{ - jclass arrayListClass = FindClassOrDie(env, "java/util/ArrayList"); - gArrayListClass = MakeGlobalRefOrDie(env, arrayListClass); - gArrayListMethods.add = GetMethodIDOrDie(env, arrayListClass, "add", "(Ljava/lang/Object;)Z"); - - jclass lClass = FindClassOrDie(env, kRadioManagerClassPathName); - gRadioManagerClass = MakeGlobalRefOrDie(env, lClass); - - jclass moduleClass = FindClassOrDie(env, kRadioModuleClassPathName); - gRadioModuleClass = MakeGlobalRefOrDie(env, moduleClass); - gPostEventFromNative = GetStaticMethodIDOrDie(env, moduleClass, "postEventFromNative", - "(Ljava/lang/Object;IIILjava/lang/Object;)V"); - gModuleFields.mNativeContext = GetFieldIDOrDie(env, moduleClass, "mNativeContext", "J"); - gModuleFields.mId = GetFieldIDOrDie(env, moduleClass, "mId", "I"); - - jclass modulePropertiesClass = FindClassOrDie(env, kModulePropertiesClassPathName); - gModulePropertiesClass = MakeGlobalRefOrDie(env, modulePropertiesClass); - gModulePropertiesCstor = GetMethodIDOrDie(env, modulePropertiesClass, "", - "(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ[Landroid/hardware/radio/RadioManager$BandDescriptor;ZLjava/lang/String;)V"); - - jclass bandDescriptorClass = FindClassOrDie(env, kRadioBandDescriptorClassPathName); - gRadioBandDescriptorClass = MakeGlobalRefOrDie(env, bandDescriptorClass); - gRadioBandDescriptorFields.mRegion = GetFieldIDOrDie(env, bandDescriptorClass, "mRegion", "I"); - gRadioBandDescriptorFields.mType = GetFieldIDOrDie(env, bandDescriptorClass, "mType", "I"); - gRadioBandDescriptorFields.mLowerLimit = - GetFieldIDOrDie(env, bandDescriptorClass, "mLowerLimit", "I"); - gRadioBandDescriptorFields.mUpperLimit = - GetFieldIDOrDie(env, bandDescriptorClass, "mUpperLimit", "I"); - gRadioBandDescriptorFields.mSpacing = - GetFieldIDOrDie(env, bandDescriptorClass, "mSpacing", "I"); - - jclass fmBandDescriptorClass = FindClassOrDie(env, kRadioFmBandDescriptorClassPathName); - gRadioFmBandDescriptorClass = MakeGlobalRefOrDie(env, fmBandDescriptorClass); - gRadioFmBandDescriptorCstor = GetMethodIDOrDie(env, fmBandDescriptorClass, "", - "(IIIIIZZZZZ)V"); - - jclass amBandDescriptorClass = FindClassOrDie(env, kRadioAmBandDescriptorClassPathName); - gRadioAmBandDescriptorClass = MakeGlobalRefOrDie(env, amBandDescriptorClass); - gRadioAmBandDescriptorCstor = GetMethodIDOrDie(env, amBandDescriptorClass, "", - "(IIIIIZ)V"); - - jclass bandConfigClass = FindClassOrDie(env, kRadioBandConfigClassPathName); - gRadioBandConfigClass = MakeGlobalRefOrDie(env, bandConfigClass); - gRadioBandConfigFields.mDescriptor = - GetFieldIDOrDie(env, bandConfigClass, "mDescriptor", - "Landroid/hardware/radio/RadioManager$BandDescriptor;"); - - jclass fmBandConfigClass = FindClassOrDie(env, kRadioFmBandConfigClassPathName); - gRadioFmBandConfigClass = MakeGlobalRefOrDie(env, fmBandConfigClass); - gRadioFmBandConfigCstor = GetMethodIDOrDie(env, fmBandConfigClass, "", - "(IIIIIZZZZZ)V"); - gRadioFmBandConfigFields.mStereo = GetFieldIDOrDie(env, fmBandConfigClass, "mStereo", "Z"); - gRadioFmBandConfigFields.mRds = GetFieldIDOrDie(env, fmBandConfigClass, "mRds", "Z"); - gRadioFmBandConfigFields.mTa = GetFieldIDOrDie(env, fmBandConfigClass, "mTa", "Z"); - gRadioFmBandConfigFields.mAf = GetFieldIDOrDie(env, fmBandConfigClass, "mAf", "Z"); - gRadioFmBandConfigFields.mEa = - GetFieldIDOrDie(env, fmBandConfigClass, "mEa", "Z"); - - - jclass amBandConfigClass = FindClassOrDie(env, kRadioAmBandConfigClassPathName); - gRadioAmBandConfigClass = MakeGlobalRefOrDie(env, amBandConfigClass); - gRadioAmBandConfigCstor = GetMethodIDOrDie(env, amBandConfigClass, "", - "(IIIIIZ)V"); - gRadioAmBandConfigFields.mStereo = GetFieldIDOrDie(env, amBandConfigClass, "mStereo", "Z"); - - jclass programInfoClass = FindClassOrDie(env, kRadioProgramInfoClassPathName); - gRadioProgramInfoClass = MakeGlobalRefOrDie(env, programInfoClass); - gRadioProgramInfoCstor = GetMethodIDOrDie(env, programInfoClass, "", - "(IIZZZILandroid/hardware/radio/RadioMetadata;ILjava/lang/String;)V"); - - jclass metadataClass = FindClassOrDie(env, kRadioMetadataClassPathName); - gRadioMetadataClass = MakeGlobalRefOrDie(env, metadataClass); - gRadioMetadataCstor = GetMethodIDOrDie(env, metadataClass, "", "()V"); - gRadioMetadataMethods.putIntFromNative = GetMethodIDOrDie(env, metadataClass, - "putIntFromNative", - "(II)I"); - gRadioMetadataMethods.putStringFromNative = GetMethodIDOrDie(env, metadataClass, - "putStringFromNative", - "(ILjava/lang/String;)I"); - gRadioMetadataMethods.putBitmapFromNative = GetMethodIDOrDie(env, metadataClass, - "putBitmapFromNative", - "(I[B)I"); - gRadioMetadataMethods.putClockFromNative = GetMethodIDOrDie(env, metadataClass, - "putClockFromNative", - "(IJI)I"); - - - RegisterMethodsOrDie(env, kRadioManagerClassPathName, gMethods, NELEM(gMethods)); - - int ret = RegisterMethodsOrDie(env, kRadioModuleClassPathName, gModuleMethods, NELEM(gModuleMethods)); - - ALOGV("%s DONE", __FUNCTION__); - - return ret; -} diff --git a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp index 863ca8b0bc0206cd4fea44f3302343ab134d7a2c..b610b35e45cdd19d0455c1a82c5ebc9848f1d323 100644 --- a/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp +++ b/core/jni/android_hardware_camera2_legacy_LegacyCameraDevice.cpp @@ -484,14 +484,14 @@ static jint LegacyCameraDevice_nativeDetectSurfaceUsageFlags(JNIEnv* env, jobjec sp anw; if ((anw = getNativeWindow(env, surface)) == NULL) { - jniThrowException(env, "Ljava/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException;", "Could not retrieve native window from surface."); return BAD_VALUE; } int32_t usage = 0; status_t err = anw->query(anw.get(), NATIVE_WINDOW_CONSUMER_USAGE_BITS, &usage); if(err != NO_ERROR) { - jniThrowException(env, "Ljava/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException;", "Error while querying surface usage bits"); return err; } @@ -511,7 +511,7 @@ static jint LegacyCameraDevice_nativeDisconnectSurface(JNIEnv* env, jobject thiz status_t err = native_window_api_disconnect(anw.get(), NATIVE_WINDOW_API_CAMERA); if(err != NO_ERROR) { - jniThrowException(env, "Ljava/lang/UnsupportedOperationException;", + jniThrowException(env, "java/lang/UnsupportedOperationException;", "Error while disconnecting surface"); return err; } diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 954e46eeab6cf263578e25e93d66f061c70e1108..7ec68edddf52ec4128e697900945bf0a64dc6e38 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -396,7 +396,7 @@ android_media_AudioSystem_dyn_policy_callback(int event, String8 regId, int val) } static void -android_media_AudioSystem_recording_callback(int event, audio_session_t session, int source, +android_media_AudioSystem_recording_callback(int event, const record_client_info_t *clientInfo, const audio_config_base_t *clientConfig, const audio_config_base_t *deviceConfig, audio_patch_handle_t patchHandle) { @@ -404,8 +404,8 @@ android_media_AudioSystem_recording_callback(int event, audio_session_t session, if (env == NULL) { return; } - if (clientConfig == NULL || deviceConfig == NULL) { - ALOGE("Unexpected null client/device configurations in recording callback"); + if (clientInfo == NULL || clientConfig == NULL || deviceConfig == NULL) { + ALOGE("Unexpected null client/device info or configurations in recording callback"); return; } @@ -433,7 +433,7 @@ android_media_AudioSystem_recording_callback(int event, audio_session_t session, jclass clazz = env->FindClass(kClassPathName); env->CallStaticVoidMethod(clazz, gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative, - event, session, source, recParamArray); + event, (jint) clientInfo->uid, clientInfo->session, clientInfo->source, recParamArray); env->DeleteLocalRef(clazz); env->DeleteLocalRef(recParamArray); @@ -1930,7 +1930,7 @@ int register_android_media_AudioSystem(JNIEnv *env) "dynamicPolicyCallbackFromNative", "(ILjava/lang/String;I)V"); gAudioPolicyEventHandlerMethods.postRecordConfigEventFromNative = GetStaticMethodIDOrDie(env, env->FindClass(kClassPathName), - "recordingCallbackFromNative", "(III[I)V"); + "recordingCallbackFromNative", "(IIII[I)V"); jclass audioMixClass = FindClassOrDie(env, "android/media/audiopolicy/AudioMix"); gAudioMixClass = MakeGlobalRefOrDie(env, audioMixClass); diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 5272af553fd227e099fb8918ce0cc5dc9d7ef9c8..d3da21b5635bdc2b8798ae70033a068e62dadf25 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -44,14 +45,13 @@ #include "jni.h" #include #include +#include "android_os_Debug.h" namespace android { -using UniqueFile = std::unique_ptr; - static inline UniqueFile MakeUniqueFile(const char* path, const char* mode) { - return UniqueFile(fopen(path, mode), fclose); + return UniqueFile(fopen(path, mode), safeFclose); } enum { @@ -151,6 +151,14 @@ struct stats_t { int swappedOutPss; }; +enum pss_rollup_support { + PSS_ROLLUP_UNTRIED, + PSS_ROLLUP_SUPPORTED, + PSS_ROLLUP_UNSUPPORTED +}; + +static std::atomic g_pss_rollup_support; + #define BINDER_STATS "/proc/binder/stats" static jlong android_os_Debug_getNativeHeapSize(JNIEnv *env, jobject clazz) @@ -544,6 +552,33 @@ static void android_os_Debug_getDirtyPages(JNIEnv *env, jobject clazz, jobject o android_os_Debug_getDirtyPagesPid(env, clazz, getpid(), object); } +UniqueFile OpenSmapsOrRollup(int pid) +{ + enum pss_rollup_support rollup_support = + g_pss_rollup_support.load(std::memory_order_relaxed); + if (rollup_support != PSS_ROLLUP_UNSUPPORTED) { + std::string smaps_rollup_path = + base::StringPrintf("/proc/%d/smaps_rollup", pid); + UniqueFile fp_rollup = MakeUniqueFile(smaps_rollup_path.c_str(), "re"); + if (fp_rollup == nullptr && errno != ENOENT) { + return fp_rollup; // Actual error, not just old kernel. + } + if (fp_rollup != nullptr) { + if (rollup_support == PSS_ROLLUP_UNTRIED) { + ALOGI("using rollup pss collection"); + g_pss_rollup_support.store(PSS_ROLLUP_SUPPORTED, + std::memory_order_relaxed); + } + return fp_rollup; + } + g_pss_rollup_support.store(PSS_ROLLUP_UNSUPPORTED, + std::memory_order_relaxed); + } + + std::string smaps_path = base::StringPrintf("/proc/%d/smaps", pid); + return MakeUniqueFile(smaps_path.c_str(), "re"); +} + static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, jlongArray outUssSwapPss, jlongArray outMemtrack) { @@ -559,12 +594,11 @@ static jlong android_os_Debug_getPssPid(JNIEnv *env, jobject clazz, jint pid, } { - std::string smaps_path = base::StringPrintf("/proc/%d/smaps", pid); - UniqueFile fp = MakeUniqueFile(smaps_path.c_str(), "re"); + UniqueFile fp = OpenSmapsOrRollup(pid); if (fp != nullptr) { while (true) { - if (fgets(line, 1024, fp.get()) == NULL) { + if (fgets(line, sizeof (line), fp.get()) == NULL) { break; } @@ -671,6 +705,8 @@ enum { MEMINFO_CACHED, MEMINFO_SHMEM, MEMINFO_SLAB, + MEMINFO_SLAB_RECLAIMABLE, + MEMINFO_SLAB_UNRECLAIMABLE, MEMINFO_SWAP_TOTAL, MEMINFO_SWAP_FREE, MEMINFO_ZRAM_TOTAL, @@ -742,6 +778,8 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o "Cached:", "Shmem:", "Slab:", + "SReclaimable:", + "SUnreclaim:", "SwapTotal:", "SwapFree:", "ZRam:", @@ -758,6 +796,8 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o 7, 6, 5, + 13, + 11, 10, 9, 5, @@ -767,7 +807,7 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o 12, 0 }; - long mem[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + long mem[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; char* p = buffer; while (*p && numFound < (sizeof(tagsLen) / sizeof(tagsLen[0]))) { @@ -1002,21 +1042,16 @@ static void dumpNativeHeap(FILE* fp) fprintf(fp, "END\n"); } -/* - * Dump the native heap, writing human-readable output to the specified - * file descriptor. - */ -static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, - jobject fileDescriptor) +static bool openFile(JNIEnv* env, jobject fileDescriptor, UniqueFile& fp) { if (fileDescriptor == NULL) { jniThrowNullPointerException(env, "fd == null"); - return; + return false; } int origFd = jniGetFDFromFileDescriptor(env, fileDescriptor); if (origFd < 0) { jniThrowRuntimeException(env, "Invalid file descriptor"); - return; + return false; } /* dup() the descriptor so we don't close the original with fclose() */ @@ -1024,14 +1059,28 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, if (fd < 0) { ALOGW("dup(%d) failed: %s\n", origFd, strerror(errno)); jniThrowRuntimeException(env, "dup() failed"); - return; + return false; } - UniqueFile fp(fdopen(fd, "w"), fclose); + fp.reset(fdopen(fd, "w")); if (fp == nullptr) { ALOGW("fdopen(%d) failed: %s\n", fd, strerror(errno)); close(fd); jniThrowRuntimeException(env, "fdopen() failed"); + return false; + } + return true; +} + +/* + * Dump the native heap, writing human-readable output to the specified + * file descriptor. + */ +static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject, + jobject fileDescriptor) +{ + UniqueFile fp(nullptr, safeFclose); + if (!openFile(env, fileDescriptor, fp)) { return; } @@ -1040,6 +1089,21 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject clazz, ALOGD("Native heap dump complete.\n"); } +/* + * Dump the native malloc info, writing xml output to the specified + * file descriptor. + */ +static void android_os_Debug_dumpNativeMallocInfo(JNIEnv* env, jobject, + jobject fileDescriptor) +{ + UniqueFile fp(nullptr, safeFclose); + if (!openFile(env, fileDescriptor, fp)) { + return; + } + + malloc_info(0, fp.get()); +} + static bool dumpTraces(JNIEnv* env, jint pid, jstring fileName, jint timeoutSecs, DebuggerdDumpType dumpType) { const ScopedUtfChars fileNameChars(env, fileName); @@ -1100,6 +1164,8 @@ static const JNINativeMethod gMethods[] = { (void*) android_os_Debug_getMemInfo }, { "dumpNativeHeap", "(Ljava/io/FileDescriptor;)V", (void*) android_os_Debug_dumpNativeHeap }, + { "dumpNativeMallocInfo", "(Ljava/io/FileDescriptor;)V", + (void*) android_os_Debug_dumpNativeMallocInfo }, { "getBinderSentTransactions", "()I", (void*) android_os_Debug_getBinderSentTransactions }, { "getBinderReceivedTransactions", "()I", diff --git a/core/jni/android_os_Debug.h b/core/jni/android_os_Debug.h new file mode 100644 index 0000000000000000000000000000000000000000..81270ca994bbd15e5bd59e1b3595dd78a8b1abff --- /dev/null +++ b/core/jni/android_os_Debug.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_OS_DEBUG_H +#define ANDROID_OS_DEBUG_H + +#include +#include + +namespace android { + +inline void safeFclose(FILE* fp) { + if (fp) fclose(fp); +} + +using UniqueFile = std::unique_ptr; +UniqueFile OpenSmapsOrRollup(int pid); + +} // namespace android + +#endif // ANDROID_OS_HW_BLOB_H diff --git a/core/jni/android_os_MemoryFile.cpp b/core/jni/android_os_MemoryFile.cpp index 19926e2ac155bdc771b51a41da928607ff310561..b21566bbc1860ca6387988650129932ae93d7c40 100644 --- a/core/jni/android_os_MemoryFile.cpp +++ b/core/jni/android_os_MemoryFile.cpp @@ -26,95 +26,14 @@ namespace android { -static jobject android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring name, jint length) -{ - const char* namestr = (name ? env->GetStringUTFChars(name, NULL) : NULL); - - int result = ashmem_create_region(namestr, length); - - if (name) - env->ReleaseStringUTFChars(name, namestr); - - if (result < 0) { - jniThrowException(env, "java/io/IOException", "ashmem_create_region failed"); - return NULL; - } - - return jniCreateFileDescriptor(env, result); -} - -static jlong android_os_MemoryFile_mmap(JNIEnv* env, jobject clazz, jobject fileDescriptor, - jint length, jint prot) -{ - int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - void* result = mmap(NULL, length, prot, MAP_SHARED, fd, 0); - if (result == MAP_FAILED) { - jniThrowException(env, "java/io/IOException", "mmap failed"); - } - return reinterpret_cast(result); -} - -static void android_os_MemoryFile_munmap(JNIEnv* env, jobject clazz, jlong addr, jint length) -{ - int result = munmap(reinterpret_cast(addr), length); - if (result < 0) - jniThrowException(env, "java/io/IOException", "munmap failed"); -} - -static void android_os_MemoryFile_close(JNIEnv* env, jobject clazz, jobject fileDescriptor) -{ - int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (fd >= 0) { - jniSetFileDescriptorOfFD(env, fileDescriptor, -1); - close(fd); - } -} - -static jint android_os_MemoryFile_read(JNIEnv* env, jobject clazz, - jobject fileDescriptor, jlong address, jbyteArray buffer, jint srcOffset, jint destOffset, - jint count, jboolean unpinned) -{ - int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (unpinned && ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) { - ashmem_unpin_region(fd, 0, 0); - jniThrowException(env, "java/io/IOException", "ashmem region was purged"); - return -1; - } - - env->SetByteArrayRegion(buffer, destOffset, count, (const jbyte *)address + srcOffset); - - if (unpinned) { - ashmem_unpin_region(fd, 0, 0); - } - return count; -} - -static jint android_os_MemoryFile_write(JNIEnv* env, jobject clazz, - jobject fileDescriptor, jlong address, jbyteArray buffer, jint srcOffset, jint destOffset, - jint count, jboolean unpinned) -{ - int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (unpinned && ashmem_pin_region(fd, 0, 0) == ASHMEM_WAS_PURGED) { - ashmem_unpin_region(fd, 0, 0); - jniThrowException(env, "java/io/IOException", "ashmem region was purged"); - return -1; - } - - env->GetByteArrayRegion(buffer, srcOffset, count, (jbyte *)address + destOffset); - - if (unpinned) { - ashmem_unpin_region(fd, 0, 0); - } - return count; -} - -static void android_os_MemoryFile_pin(JNIEnv* env, jobject clazz, jobject fileDescriptor, jboolean pin) -{ +static jboolean android_os_MemoryFile_pin(JNIEnv* env, jobject clazz, jobject fileDescriptor, + jboolean pin) { int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); int result = (pin ? ashmem_pin_region(fd, 0, 0) : ashmem_unpin_region(fd, 0, 0)); if (result < 0) { jniThrowException(env, "java/io/IOException", NULL); } + return result == ASHMEM_WAS_PURGED; } static jint android_os_MemoryFile_get_size(JNIEnv* env, jobject clazz, @@ -138,19 +57,12 @@ static jint android_os_MemoryFile_get_size(JNIEnv* env, jobject clazz, } static const JNINativeMethod methods[] = { - {"native_open", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_MemoryFile_open}, - {"native_mmap", "(Ljava/io/FileDescriptor;II)J", (void*)android_os_MemoryFile_mmap}, - {"native_munmap", "(JI)V", (void*)android_os_MemoryFile_munmap}, - {"native_close", "(Ljava/io/FileDescriptor;)V", (void*)android_os_MemoryFile_close}, - {"native_read", "(Ljava/io/FileDescriptor;J[BIIIZ)I", (void*)android_os_MemoryFile_read}, - {"native_write", "(Ljava/io/FileDescriptor;J[BIIIZ)V", (void*)android_os_MemoryFile_write}, - {"native_pin", "(Ljava/io/FileDescriptor;Z)V", (void*)android_os_MemoryFile_pin}, + {"native_pin", "(Ljava/io/FileDescriptor;Z)Z", (void*)android_os_MemoryFile_pin}, {"native_get_size", "(Ljava/io/FileDescriptor;)I", (void*)android_os_MemoryFile_get_size} }; -int register_android_os_MemoryFile(JNIEnv* env) -{ +int register_android_os_MemoryFile(JNIEnv* env) { return RegisterMethodsOrDie(env, "android/os/MemoryFile", methods, NELEM(methods)); } diff --git a/core/jni/android_os_Parcel.cpp b/core/jni/android_os_Parcel.cpp index fc8b8f39ab63ed4d3e3259ba023bb2c22b324563..f0ac79acd7dee5d6025ddc065886bb52f4095bbc 100644 --- a/core/jni/android_os_Parcel.cpp +++ b/core/jni/android_os_Parcel.cpp @@ -90,25 +90,25 @@ void recycleJavaParcelObject(JNIEnv* env, jobject parcelObj) env->CallVoidMethod(parcelObj, gParcelOffsets.recycle); } -static jint android_os_Parcel_dataSize(JNIEnv* env, jclass clazz, jlong nativePtr) +static jint android_os_Parcel_dataSize(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); return parcel ? parcel->dataSize() : 0; } -static jint android_os_Parcel_dataAvail(JNIEnv* env, jclass clazz, jlong nativePtr) +static jint android_os_Parcel_dataAvail(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); return parcel ? parcel->dataAvail() : 0; } -static jint android_os_Parcel_dataPosition(JNIEnv* env, jclass clazz, jlong nativePtr) +static jint android_os_Parcel_dataPosition(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); return parcel ? parcel->dataPosition() : 0; } -static jint android_os_Parcel_dataCapacity(JNIEnv* env, jclass clazz, jlong nativePtr) +static jint android_os_Parcel_dataCapacity(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); return parcel ? parcel->dataCapacity() : 0; @@ -127,7 +127,7 @@ static jlong android_os_Parcel_setDataSize(JNIEnv* env, jclass clazz, jlong nati return 0; } -static void android_os_Parcel_setDataPosition(JNIEnv* env, jclass clazz, jlong nativePtr, jint pos) +static void android_os_Parcel_setDataPosition(jlong nativePtr, jint pos) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -146,7 +146,7 @@ static void android_os_Parcel_setDataCapacity(JNIEnv* env, jclass clazz, jlong n } } -static jboolean android_os_Parcel_pushAllowFds(JNIEnv* env, jclass clazz, jlong nativePtr, jboolean allowFds) +static jboolean android_os_Parcel_pushAllowFds(jlong nativePtr, jboolean allowFds) { Parcel* parcel = reinterpret_cast(nativePtr); jboolean ret = JNI_TRUE; @@ -156,7 +156,7 @@ static jboolean android_os_Parcel_pushAllowFds(JNIEnv* env, jclass clazz, jlong return ret; } -static void android_os_Parcel_restoreAllowFds(JNIEnv* env, jclass clazz, jlong nativePtr, jboolean lastValue) +static void android_os_Parcel_restoreAllowFds(jlong nativePtr, jboolean lastValue) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -398,7 +398,7 @@ static jbyteArray android_os_Parcel_readBlob(JNIEnv* env, jclass clazz, jlong na return ret; } -static jint android_os_Parcel_readInt(JNIEnv* env, jclass clazz, jlong nativePtr) +static jint android_os_Parcel_readInt(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -407,7 +407,7 @@ static jint android_os_Parcel_readInt(JNIEnv* env, jclass clazz, jlong nativePtr return 0; } -static jlong android_os_Parcel_readLong(JNIEnv* env, jclass clazz, jlong nativePtr) +static jlong android_os_Parcel_readLong(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -416,7 +416,7 @@ static jlong android_os_Parcel_readLong(JNIEnv* env, jclass clazz, jlong nativeP return 0; } -static jfloat android_os_Parcel_readFloat(JNIEnv* env, jclass clazz, jlong nativePtr) +static jfloat android_os_Parcel_readFloat(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -425,7 +425,7 @@ static jfloat android_os_Parcel_readFloat(JNIEnv* env, jclass clazz, jlong nativ return 0; } -static jdouble android_os_Parcel_readDouble(JNIEnv* env, jclass clazz, jlong nativePtr) +static jdouble android_os_Parcel_readDouble(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -673,7 +673,7 @@ static jlong android_os_Parcel_appendFrom(JNIEnv* env, jclass clazz, jlong thisN return thisParcel->getOpenAshmemSize(); } -static jboolean android_os_Parcel_hasFileDescriptors(JNIEnv* env, jclass clazz, jlong nativePtr) +static jboolean android_os_Parcel_hasFileDescriptors(jlong nativePtr) { jboolean ret = JNI_FALSE; Parcel* parcel = reinterpret_cast(nativePtr); @@ -747,7 +747,7 @@ static jlong android_os_Parcel_getGlobalAllocCount(JNIEnv* env, jclass clazz) return Parcel::getGlobalAllocCount(); } -static jlong android_os_Parcel_getBlobAshmemSize(JNIEnv* env, jclass clazz, jlong nativePtr) +static jlong android_os_Parcel_getBlobAshmemSize(jlong nativePtr) { Parcel* parcel = reinterpret_cast(nativePtr); if (parcel != NULL) { @@ -759,24 +759,24 @@ static jlong android_os_Parcel_getBlobAshmemSize(JNIEnv* env, jclass clazz, jlon // ---------------------------------------------------------------------------- static const JNINativeMethod gParcelMethods[] = { - // @FastNative + // @CriticalNative {"nativeDataSize", "(J)I", (void*)android_os_Parcel_dataSize}, - // @FastNative + // @CriticalNative {"nativeDataAvail", "(J)I", (void*)android_os_Parcel_dataAvail}, - // @FastNative + // @CriticalNative {"nativeDataPosition", "(J)I", (void*)android_os_Parcel_dataPosition}, - // @FastNative + // @CriticalNative {"nativeDataCapacity", "(J)I", (void*)android_os_Parcel_dataCapacity}, // @FastNative {"nativeSetDataSize", "(JI)J", (void*)android_os_Parcel_setDataSize}, - // @FastNative + // @CriticalNative {"nativeSetDataPosition", "(JI)V", (void*)android_os_Parcel_setDataPosition}, // @FastNative {"nativeSetDataCapacity", "(JI)V", (void*)android_os_Parcel_setDataCapacity}, - // @FastNative + // @CriticalNative {"nativePushAllowFds", "(JZ)Z", (void*)android_os_Parcel_pushAllowFds}, - // @FastNative + // @CriticalNative {"nativeRestoreAllowFds", "(JZ)V", (void*)android_os_Parcel_restoreAllowFds}, {"nativeWriteByteArray", "(J[BII)V", (void*)android_os_Parcel_writeByteArray}, @@ -796,13 +796,13 @@ static const JNINativeMethod gParcelMethods[] = { {"nativeCreateByteArray", "(J)[B", (void*)android_os_Parcel_createByteArray}, {"nativeReadByteArray", "(J[BI)Z", (void*)android_os_Parcel_readByteArray}, {"nativeReadBlob", "(J)[B", (void*)android_os_Parcel_readBlob}, - // @FastNative + // @CriticalNative {"nativeReadInt", "(J)I", (void*)android_os_Parcel_readInt}, - // @FastNative + // @CriticalNative {"nativeReadLong", "(J)J", (void*)android_os_Parcel_readLong}, - // @FastNative + // @CriticalNative {"nativeReadFloat", "(J)F", (void*)android_os_Parcel_readFloat}, - // @FastNative + // @CriticalNative {"nativeReadDouble", "(J)D", (void*)android_os_Parcel_readDouble}, {"nativeReadString", "(J)Ljava/lang/String;", (void*)android_os_Parcel_readString}, {"nativeReadStrongBinder", "(J)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder}, @@ -821,7 +821,7 @@ static const JNINativeMethod gParcelMethods[] = { {"nativeUnmarshall", "(J[BII)J", (void*)android_os_Parcel_unmarshall}, {"nativeCompareData", "(JJ)I", (void*)android_os_Parcel_compareData}, {"nativeAppendFrom", "(JJII)J", (void*)android_os_Parcel_appendFrom}, - // @FastNative + // @CriticalNative {"nativeHasFileDescriptors", "(J)Z", (void*)android_os_Parcel_hasFileDescriptors}, {"nativeWriteInterfaceToken", "(JLjava/lang/String;)V", (void*)android_os_Parcel_writeInterfaceToken}, {"nativeEnforceInterface", "(JLjava/lang/String;)V", (void*)android_os_Parcel_enforceInterface}, @@ -829,6 +829,7 @@ static const JNINativeMethod gParcelMethods[] = { {"getGlobalAllocSize", "()J", (void*)android_os_Parcel_getGlobalAllocSize}, {"getGlobalAllocCount", "()J", (void*)android_os_Parcel_getGlobalAllocCount}, + // @CriticalNative {"nativeGetBlobAshmemSize", "(J)J", (void*)android_os_Parcel_getBlobAshmemSize}, }; diff --git a/core/jni/android_os_SharedMemory.cpp b/core/jni/android_os_SharedMemory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1d29908ad3dfc504441ecb67a5103e006719b1c7 --- /dev/null +++ b/core/jni/android_os_SharedMemory.cpp @@ -0,0 +1,105 @@ +/* + * 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. + */ + +#define LOG_TAG "SharedMemory" + +#include "core_jni_helpers.h" + +#include +#include +#include "JNIHelp.h" +#include +#include + +#include +#include +#include +#include + +namespace { + +static void throwErrnoException(JNIEnv* env, const char* functionName, int error) { + static jmethodID ctor = env->GetMethodID(JniConstants::errnoExceptionClass, + "", "(Ljava/lang/String;I)V"); + + ScopedLocalRef detailMessage(env, env->NewStringUTF(functionName)); + if (detailMessage.get() == NULL) { + // Not really much we can do here. We're probably dead in the water, + // but let's try to stumble on... + env->ExceptionClear(); + } + + jobject exception = env->NewObject(JniConstants::errnoExceptionClass, ctor, + detailMessage.get(), error); + env->Throw(reinterpret_cast(exception)); +} + +static jobject SharedMemory_create(JNIEnv* env, jobject, jstring jname, jint size) { + + // Name is optional so we can't use ScopedUtfChars for this as it throws NPE on null + const char* name = jname ? env->GetStringUTFChars(jname, nullptr) : nullptr; + + int fd = ashmem_create_region(name, size); + + // Capture the error, if there is one, before calling ReleaseStringUTFChars + int err = fd < 0 ? errno : 0; + + if (name) { + env->ReleaseStringUTFChars(jname, name); + } + + if (fd < 0) { + throwErrnoException(env, "SharedMemory_create", err); + return nullptr; + } + + return jniCreateFileDescriptor(env, fd); +} + +static jint SharedMemory_getSize(JNIEnv* env, jobject, jobject fileDescriptor) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); + if (!ashmem_valid(fd)) { + return -1; + } + size_t size = ashmem_get_size_region(fd); + return static_cast(std::min(size, static_cast(std::numeric_limits::max()))); +} + +static jint SharedMemory_setProt(JNIEnv* env, jobject, jobject fileDescriptor, jint prot) { + int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); + int err = 0; + if (ashmem_set_prot_region(fd, prot)) { + err = errno; + } + return err; +} + +static const JNINativeMethod methods[] = { + {"nCreate", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)SharedMemory_create}, + {"nGetSize", "(Ljava/io/FileDescriptor;)I", (void*)SharedMemory_getSize}, + {"nSetProt", "(Ljava/io/FileDescriptor;I)I", (void*)SharedMemory_setProt}, +}; + +} // anonymous namespace + +namespace android { + +int register_android_os_SharedMemory(JNIEnv* env) +{ + return RegisterMethodsOrDie(env, "android/os/SharedMemory", methods, NELEM(methods)); +} + +} // namespace android diff --git a/core/jni/android_text_StaticLayout.cpp b/core/jni/android_text_StaticLayout.cpp index 91bfee9a555ec13e08f4df785d6b9cc3dd63c514..ba8dec12ef22ddee0d7d9bb981e3af580b056025 100644 --- a/core/jni/android_text_StaticLayout.cpp +++ b/core/jni/android_text_StaticLayout.cpp @@ -137,15 +137,19 @@ static jlong nLoadHyphenator(JNIEnv* env, jclass, jobject buffer, jint offset, return reinterpret_cast(hyphenator); } -static void nSetLocale(JNIEnv* env, jclass, jlong nativePtr, jstring javaLocaleName, - jlong nativeHyphenator) { - ScopedIcuLocale icuLocale(env, javaLocaleName); +static void nSetLocales(JNIEnv* env, jclass, jlong nativePtr, jstring javaLocaleNames, + jlongArray nativeHyphenators) { minikin::LineBreaker* b = reinterpret_cast(nativePtr); - minikin::Hyphenator* hyphenator = reinterpret_cast(nativeHyphenator); - if (icuLocale.valid()) { - b->setLocale(icuLocale.locale(), hyphenator); + ScopedUtfChars localeNames(env, javaLocaleNames); + ScopedLongArrayRO hyphArr(env, nativeHyphenators); + const size_t numLocales = hyphArr.size(); + std::vector hyphVec; + hyphVec.reserve(numLocales); + for (size_t i = 0; i < numLocales; i++) { + hyphVec.push_back(reinterpret_cast(hyphArr[i])); } + b->setLocales(localeNames.c_str(), hyphVec); } static void nSetIndents(JNIEnv* env, jclass, jlong nativePtr, jintArray indents) { @@ -194,7 +198,7 @@ static const JNINativeMethod gMethods[] = { {"nFreeBuilder", "(J)V", (void*) nFreeBuilder}, {"nFinishBuilder", "(J)V", (void*) nFinishBuilder}, {"nLoadHyphenator", "(Ljava/nio/ByteBuffer;III)J", (void*) nLoadHyphenator}, - {"nSetLocale", "(JLjava/lang/String;J)V", (void*) nSetLocale}, + {"nSetLocales", "(JLjava/lang/String;[J)V", (void*) nSetLocales}, {"nSetupParagraph", "(J[CIFIF[IIIIZ)V", (void*) nSetupParagraph}, {"nSetIndents", "(J[I)V", (void*) nSetIndents}, {"nAddStyleRun", "(JJJIIZ)F", (void*) nAddStyleRun}, diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index 550c44d0807c30f4fe44229e5c7daaabbd1989f7..dec6c0226baa7b0ac65a8c2488300aecb5506421 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -31,6 +31,7 @@ #include "android_util_Binder.h" #include +#include "android_os_Debug.h" #include #include @@ -1092,27 +1093,21 @@ static jlong android_os_Process_getElapsedCpuTime(JNIEnv* env, jobject clazz) static jlong android_os_Process_getPss(JNIEnv* env, jobject clazz, jint pid) { - char filename[64]; - - snprintf(filename, sizeof(filename), "/proc/%" PRId32 "/smaps", pid); - - FILE * file = fopen(filename, "r"); - if (!file) { + UniqueFile file = OpenSmapsOrRollup(pid); + if (file == nullptr) { return (jlong) -1; } // Tally up all of the Pss from the various maps char line[256]; jlong pss = 0; - while (fgets(line, sizeof(line), file)) { + while (fgets(line, sizeof(line), file.get())) { jlong v; if (sscanf(line, "Pss: %" SCNd64 " kB", &v) == 1) { pss += v; } } - fclose(file); - // Return the Pss value in bytes, not kilobytes return pss * 1024; } diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index 215a00e7384c7622b40439629b4ca3d62bd02806..3ad4da6b65804817a0475e32dac60b37700c475a 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -537,6 +537,20 @@ static jint nativeAttachAndQueueBuffer(JNIEnv *env, jclass clazz, jlong nativeOb return err; } +static jint nativeSetSharedBufferModeEnabled(JNIEnv* env, jclass clazz, jlong nativeObject, + jboolean enabled) { + Surface* surface = reinterpret_cast(nativeObject); + return ((ANativeWindow*) nativeObject)->perform(surface, + NATIVE_WINDOW_SET_SHARED_BUFFER_MODE, enabled); +} + +static jint nativeSetAutoRefreshEnabled(JNIEnv* env, jclass clazz, jlong nativeObject, + jboolean enabled) { + Surface* surface = reinterpret_cast(nativeObject); + return ((ANativeWindow*) nativeObject)->perform(surface, + NATIVE_WINDOW_SET_AUTO_REFRESH, enabled); +} + namespace uirenderer { using namespace android::uirenderer::renderthread; @@ -618,6 +632,8 @@ static const JNINativeMethod gSurfaceMethods[] = { {"nativeSetScalingMode", "(JI)I", (void*)nativeSetScalingMode }, {"nativeForceScopedDisconnect", "(J)I", (void*)nativeForceScopedDisconnect}, {"nativeAttachAndQueueBuffer", "(JLandroid/graphics/GraphicBuffer;)I", (void*)nativeAttachAndQueueBuffer}, + {"nativeSetSharedBufferModeEnabled", "(JZ)I", (void*)nativeSetSharedBufferModeEnabled}, + {"nativeSetAutoRefreshEnabled", "(JZ)I", (void*)nativeSetAutoRefreshEnabled}, // HWUI context {"nHwuiCreate", "(JJ)J", (void*) hwui::create }, diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 2bf8d93022168895614062c6ddfe63ab5109ffd3..db9b52e4fdbd8ad2eaa123a86b8c7670924e2571 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -246,7 +246,7 @@ static jobject nativeScreenshotBitmap(JNIEnv* env, jclass clazz, auto bitmap = new Bitmap( (void*) screenshot->getPixels(), (void*) screenshot.get(), DeleteScreenshot, - screenshotInfo, rowBytes, nullptr); + screenshotInfo, rowBytes); screenshot.release(); bitmap->setImmutable(); return bitmap::createBitmap(env, bitmap, diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp index 46b0a79d9f6fe676bbf43d006a7ee0a74bbd2e2e..e757ddd8cddec80af1ac60e03e0bb76a7d3fa0d8 100644 --- a/core/jni/android_view_ThreadedRenderer.cpp +++ b/core/jni/android_view_ThreadedRenderer.cpp @@ -888,7 +888,7 @@ static jobject android_view_ThreadedRenderer_createHardwareBitmapFromRenderNode( // Render into the surface { ContextFactory factory; - RenderProxy proxy{false, renderNode, &factory}; + RenderProxy proxy{true, renderNode, &factory}; proxy.loadSystemProperties(); proxy.setSwapBehavior(SwapBehavior::kSwap_discardBuffer); proxy.initialize(surface); diff --git a/core/jni/com_android_internal_os_PathClassLoaderFactory.cpp b/core/jni/com_android_internal_os_ClassLoaderFactory.cpp similarity index 76% rename from core/jni/com_android_internal_os_PathClassLoaderFactory.cpp rename to core/jni/com_android_internal_os_ClassLoaderFactory.cpp index a7a912cd0e05c35a4ca1896b28ff7db2b5906da0..9ce328948ca8841f89b60fa2944769317fcac9d9 100644 --- a/core/jni/com_android_internal_os_PathClassLoaderFactory.cpp +++ b/core/jni/com_android_internal_os_ClassLoaderFactory.cpp @@ -27,25 +27,27 @@ static jstring createClassloaderNamespace_native(JNIEnv* env, jint targetSdkVersion, jstring librarySearchPath, jstring libraryPermittedPath, - jboolean isShared) { + jboolean isShared, + jboolean isForVendor) { return android::CreateClassLoaderNamespace(env, targetSdkVersion, classLoader, isShared == JNI_TRUE, + isForVendor == JNI_TRUE, librarySearchPath, libraryPermittedPath); } static const JNINativeMethod g_methods[] = { { "createClassloaderNamespace", - "(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;", + "(Ljava/lang/ClassLoader;ILjava/lang/String;Ljava/lang/String;ZZ)Ljava/lang/String;", reinterpret_cast(createClassloaderNamespace_native) }, }; -static const char* const kPathClassLoaderFactoryPathName = "com/android/internal/os/PathClassLoaderFactory"; +static const char* const kClassLoaderFactoryPathName = "com/android/internal/os/ClassLoaderFactory"; namespace android { -int register_com_android_internal_os_PathClassLoaderFactory(JNIEnv* env) { - return RegisterMethodsOrDie(env, kPathClassLoaderFactoryPathName, g_methods, NELEM(g_methods)); +int register_com_android_internal_os_ClassLoaderFactory(JNIEnv* env) { + return RegisterMethodsOrDie(env, kClassLoaderFactoryPathName, g_methods, NELEM(g_methods)); } } // namespace android diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index b08f031681c54d1b533b99de927805b38e5d85e5..32ef3dc0aed4b32c67f301c3b230ec1022b5e7ab 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -45,6 +45,8 @@ #include #include "android-base/logging.h" +#include +#include #include #include #include @@ -65,6 +67,8 @@ namespace { using android::String8; +using android::base::StringPrintf; +using android::base::WriteStringToFile; static pid_t gSystemServerPid = 0; @@ -770,6 +774,11 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer( ALOGE("System server process %d has died. Restarting Zygote!", pid); RuntimeAbort(env, __LINE__, "System server process has died. Restarting Zygote!"); } + + // Assign system_server to the correct memory cgroup. + if (!WriteStringToFile(StringPrintf("%d", pid), "/dev/memcg/system/tasks")) { + ALOGE("couldn't write %d to /dev/memcg/system/tasks", pid); + } } return pid; } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index e1318c3bd27548c910ef6afc295bf3a37dfd4793..90729607006f0b198713a91ff9b179cb31cd9120 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -94,6 +94,7 @@ + @@ -316,6 +317,10 @@ + + + + @@ -552,6 +557,7 @@ + @@ -776,7 +782,7 @@ android:permissionGroup="android.permission-group.LOCATION" android:label="@string/permlab_accessFineLocation" android:description="@string/permdesc_accessFineLocation" - android:protectionLevel="dangerous|ephemeral" /> + android:protectionLevel="dangerous|instant" /> @@ -820,13 +826,13 @@ android:protectionLevel="dangerous" /> + android:protectionLevel="dangerous|instant" /> + android:protectionLevel="signature|privileged"/> + android:protectionLevel="signature|privileged"/> @@ -1006,7 +1012,7 @@ android:permissionGroup="android.permission-group.CAMERA" android:label="@string/permlab_camera" android:description="@string/permdesc_camera" - android:protectionLevel="dangerous|ephemeral" /> + android:protectionLevel="dangerous|instant" /> @@ -1248,7 +1254,7 @@ + android:protectionLevel="normal|instant" /> + + + + + + + + + + + @@ -1458,7 +1485,7 @@ + android:protectionLevel="normal|instant" /> + + + @@ -1680,7 +1712,8 @@ - + @@ -1841,6 +1874,10 @@ + + + @@ -1959,6 +1996,15 @@ android:description="@string/permdesc_setWallpaperHints" android:protectionLevel="normal" /> + + + @@ -2195,7 +2241,7 @@ @@ -2236,7 +2282,7 @@

    An application requesting this permission is responsible for verifying the source and integrity of the update before passing it off to the installer components. - @hide --> + @SystemApi @hide --> @@ -2380,6 +2426,15 @@ + + + + + + + + @@ -2584,7 +2655,7 @@ @@ -2606,12 +2677,24 @@ + + + + + + - + + + + @@ -3334,7 +3419,7 @@ + + + + android:protectionLevel="signature|development|instant|appop" /> - - - - - - + android:width="48dp" + android:height="48dp" + android:viewportWidth="48" + android:viewportHeight="48"> + + + + + + + + diff --git a/core/res/res/drawable-nodpi/platlogo_m.xml b/core/res/res/drawable-nodpi/platlogo_m.xml index d9a558db859a2ca0ff5c9ba08c3406055a45601e..aacf67483d72f4f110cf8d65653c5cd6dd404846 100644 --- a/core/res/res/drawable-nodpi/platlogo_m.xml +++ b/core/res/res/drawable-nodpi/platlogo_m.xml @@ -1,5 +1,5 @@ + + android:pathData="M24.0,24.0m-20.0,0.0a20.0,20.0,0,1,1,40.0,0.0a20.0,20.0,0,1,1,-40.0,0.0" + android:fillColor="#FFC107"/> + android:pathData="M44,24.2010101 L33.9004889,14.101499 L14.101499,33.9004889 L24.2010101,44 C29.2525804,43.9497929 34.2887564,41.9975027 38.1431296,38.1431296 C41.9975027,34.2887564 43.9497929,29.2525804 44,24.2010101 Z" + android:fillColor="#FE9F00"/> + android:pathData="M24.0,24.0m-14.0,0.0a14.0,14.0,0,1,1,28.0,0.0a14.0,14.0,0,1,1,-28.0,0.0" + android:fillColor="#FED44F"/> + android:pathData="M37.7829445,26.469236 L29.6578482,18.3441397 L18.3441397,29.6578482 L26.469236,37.7829445 C29.1911841,37.2979273 31.7972024,36.0037754 33.9004889,33.9004889 C36.0037754,31.7972024 37.2979273,29.1911841 37.7829445,26.469236 Z" + android:fillColor="#FFC107"/> - - - - - - - - - - - - + android:pathData="M24.0,24.0m-8.0,0.0a8.0,8.0,0,1,1,16.0,0.0a8.0,8.0,0,1,1,-16.0,0.0" + android:fillColor="#FFFFFF"/> diff --git a/core/res/res/drawable-nodpi/stat_sys_adb.xml b/core/res/res/drawable-nodpi/stat_sys_adb.xml index 89e42e6a82d576896b1238827fcecfcdc1d80394..2e2b3956dc68df913e8794d6594ca2a89e41337e 100644 --- a/core/res/res/drawable-nodpi/stat_sys_adb.xml +++ b/core/res/res/drawable-nodpi/stat_sys_adb.xml @@ -1,3 +1,4 @@ + - - - - + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + + + + + \ No newline at end of file diff --git a/core/res/res/drawable-xhdpi/ic_corp_icon.png b/core/res/res/drawable-xhdpi/ic_corp_icon.png deleted file mode 100644 index 3626c7d03b815207daa94a7c73a1236f5f0ba71b..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_corp_icon.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_00_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0907a1e8b1aa43a463a5bf2983e69e48df1cf4a4 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_01_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..365d96e4eacfde065e6d28ed98e455ee7c8de744 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_02_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7191add8b4a9391e2ac24bbd3af57be2b659093a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_03_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8a5dff27bc2233fce5e9793f0ecfbeffb89d2b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_04_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae573be0ec1d2d6bc5eeecd05d23dfd32ab6e21 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_05_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a41d549dd0a59876546f94627c1e4472029f1e85 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_06_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4faef9853ba5f5344311f0aa5f0d6386760e0461 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_07_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..337372c10980a583f670d279f19ef196e0d62922 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_08_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a78de95cd86673b76f777d03cc42715328ade942 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_09_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..74f8912879466833827430422532095343efce2a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_10_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b868fb92fd239fa23cda6bcbc9a64d0aac3d179 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_11_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8c381cc68b3b5d86491d8c6a357f80be398324c6 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_12_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..17e40a0b0b5ddcc4ff3b64122ef0ef31d5297269 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_13_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5280b2fc15d31f4ece4b33375e24fa45473d7e3a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_14_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe29ce647731c1ce11030915dd222435679ce1b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_15_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..663d361b0accc748d03693073dd53c2ce66f1e2e Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_16_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2ecdf663076689b76bf029d5059990372ac1e7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_17_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6c1f243eed658761431f9edd26f6b4aaa0bb01 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_18_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4edd1acb001355358df6f052ae991469635a0f86 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_19_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..af45ea74bb1a45d2ea8fc11ce1fb4dfda64a3cd8 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_20_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f0757561d8e0203d07b76ae8f59cec9033d7dfb2 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_21_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..69bd8775bdcae5a4bffa3a9317b24c270683e550 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_22_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8c956bb6706e51f849a7410274818f3b96b58861 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_23_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..76bf9ab8d68ffcb1aac753952983767cb5a53955 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_24_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7f9a13132fc39010b0f431f41d7c35cf5a96dd Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_25_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1275eaa508c1f6fa5d52253be5a87ced96227d7b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_26_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ed71defa7fb18abbfe454755d5be1e62a86d0d Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_27_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..03252d77af9c2f46199f9f4ab846e59038b74d10 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_28_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8ee855796c8947695355c712df35870923f60b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_29_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b024c4e68eff409e980534ea1e3fceb49ccd3e13 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_30_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..35516f6d21a4ea70ac9aff6ca2aa04d0e2eafcf5 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_00_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd985495bc5489e2d06cfb8aacb9de5f4320c99 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_01_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c30b10e79ce1050b693849796e9e402557bc83 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_02_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f21743b18161a3ebd8a59262b5213aaba262e475 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_03_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b96ae0b6634a58ae71488631b708de2b4672bf7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_04_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5407ff2a8cd5921b651fbcaba6940c6833cd79 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_05_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0beb38973c4d9cac774402982bfec4f3415b22ce Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_06_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a41586e5a9298ac0a1823f016c4b12bc69ab56ae Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_07_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..709f6501f0c70a20d5bff9ca6531d181111a73d7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_08_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..494a7165c5318cbd95ec59b7d71e906995f7ac28 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_09_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec48f4ad21d9aa16b5c5f105e0d4f624f44181c Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_10_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c22b14cc576735b2601bc345a179718dad31d1 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_11_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd600f48d9b3ee0f41f77881554c988340c8a6f Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_12_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cfee3e1f927d3f34775f281544aa0556107f2cfe Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_13_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cc79904e3fe150f9fa0cd4eff2fcafdfff6de3d4 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_14_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..28c7441da0f6f3493a2f86bbea1e989a0cb5cee7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_15_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7e53435deb36bafa62fab9b15db83f6a6ae421 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_16_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d20d751b8a0a9abb50f342df4422a73841de7c Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_17_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ea492d2b76ab887dd85cf4acc78056b3e5c4e07b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_18_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..92c6ad85e507dcc77338b9018c78a3eda258bd4d Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_19_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f666d8930d98ef9ec75c9529ca5cb0acc75f8bf1 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_20_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c2b600de2f5daa1ad7dc0975f8c21285869a4cb2 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_21_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..31736aaca08bfeda1b4bab9be0060c0ad8d6e76a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_22_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3032ef0c01349e58e043a636eaedd66f2cef83ae Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_23_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1d5cbc012bb63da8a7b922b9cef93de2802d2c23 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_24_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..84ebcc3676bfe08cbc1f0eaeb43fbfe076afdd31 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_25_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..505aadf7f2d79c9a5c6ab2cb5502ca3eac1cfd7e Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_26_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8c662c91c5a97a72888984956f8659e9b72f10 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_27_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d650c07f749a9857014c4f051b32e65190131f34 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_28_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3caa40d1db15563cb4bc129c2f87acfd6a460c73 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_29_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f8ea61604471eac13a8e0e00bb1d9e086d0d38 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connected_light_30_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b54396c39da7f6ec8ee3c1838baba5bebc242b3a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connected_light_30_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_00_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0907a1e8b1aa43a463a5bf2983e69e48df1cf4a4 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_01_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..365d96e4eacfde065e6d28ed98e455ee7c8de744 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_02_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7191add8b4a9391e2ac24bbd3af57be2b659093a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_03_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8a5dff27bc2233fce5e9793f0ecfbeffb89d2b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_04_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae573be0ec1d2d6bc5eeecd05d23dfd32ab6e21 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_05_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a41d549dd0a59876546f94627c1e4472029f1e85 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_06_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4faef9853ba5f5344311f0aa5f0d6386760e0461 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_07_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..337372c10980a583f670d279f19ef196e0d62922 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_08_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a78de95cd86673b76f777d03cc42715328ade942 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_09_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..74f8912879466833827430422532095343efce2a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_10_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b868fb92fd239fa23cda6bcbc9a64d0aac3d179 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_11_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..90ca46c8059447fcd674967334b56448739eceda Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_12_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..db0201973d84f1059527f3fd447416fa87c9b2cf Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_13_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5ee81a329a5290b2cc6ddfd622a91e6dcaa61b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_14_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3dcbef6a6079770f4ffe38bd3f9f47a85b473273 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_15_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7646f1831231f1f785f79ffa2c07943f114df113 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_16_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c16cac96f8687616db184ae0b98f507ac5574409 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_17_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7dbc57cd70fc1c1a5ce8a115dc1c6ca59964736f Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_18_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..39d17e04ae574fc0fefdf5101dacbf93b26173a3 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_19_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0e12128a7be063e52d0d686f119d6f6e242398 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_20_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..30ea5dfd143147cd0e43060379ce3f137922b88d Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_21_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..151a2223dbef491e9ac050fd5f600972cd5572e0 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_22_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4e6606879301226592abee5efe8bc7012674bf Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_23_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e26d54bfd85987ab093a438076dc05ca525f0fe Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_24_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e85f2394349a16074655b17b7e03f97e21b5f5eb Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_25_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..81f38ac32a5ceae8b28be885615811d3335f4074 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_26_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5a50e6ac56c5b5dc15775d63aeb4fedf78db6e1a Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_27_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6069dadd5af2ffdb00b76f07a604dc02c69e4932 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_28_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..37cc4c6a5549ba3a9a4f81ca68dd1bbd226c1c84 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_29_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..aff0d4c3ef8dd71c1e91afebb5a55263180266af Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_30_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0907a1e8b1aa43a463a5bf2983e69e48df1cf4a4 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_00_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd985495bc5489e2d06cfb8aacb9de5f4320c99 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_01_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c30b10e79ce1050b693849796e9e402557bc83 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_02_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f21743b18161a3ebd8a59262b5213aaba262e475 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_03_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b96ae0b6634a58ae71488631b708de2b4672bf7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_04_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5407ff2a8cd5921b651fbcaba6940c6833cd79 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_05_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..302fafa14873fc7183b4453383c15c7af7ef718d Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_06_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a41586e5a9298ac0a1823f016c4b12bc69ab56ae Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_07_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..709f6501f0c70a20d5bff9ca6531d181111a73d7 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_08_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..494a7165c5318cbd95ec59b7d71e906995f7ac28 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_09_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec48f4ad21d9aa16b5c5f105e0d4f624f44181c Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_10_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c22b14cc576735b2601bc345a179718dad31d1 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_11_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7d72685f8c65feb2026d9c1eb33fb69ddbca1965 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_12_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4c545efd2c01c92200818169833d88d4244c81a8 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_13_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e9b007f24ba73605d857be94fe83b20b716960 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_14_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b67140d9e94b3d5871f413bedbffeab0f24d4004 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_15_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..166bdaeb942efb765cce0fcee802285bf1c36fc1 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_16_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1bda465b4148e775f20c09f8b837bff907d0af77 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_17_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cc8ec51fa963dd394d9142dd9ed079132881f2b9 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_18_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2013c61140dc0e3a6ad13dcc09021ecfdc50f9 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_19_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..daa1ca17c7df7c1de35f6a2fb300339516cb5e3b Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_20_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..56355d9bebf73a80be2f41a580913eecd5abd7ad Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_21_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42657ec39ab45522b4de17103fea7a503fc8f935 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_22_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..53e4121c0be63cb050f93b9332cbdc6bdeb92497 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_23_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f6e9ffa00ab95f11cea58953eb8487c0004efffc Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_24_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a313e16015cc98855ad89488b1239131d1c3fa70 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_25_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..40034b6512e02a877d38a799cdbf061c6cfbbcf5 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_26_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..678f9725eecf6c60ad547f1f16de150437428f7d Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_27_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a37073d8b8a5ca0992984250e3332126878084 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_28_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..427c52e3ea4f7444dd2191c76fd35519cc089226 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_29_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4d80759435e5e0b37b86d0192120bb3a9a1161 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_30_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd985495bc5489e2d06cfb8aacb9de5f4320c99 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_connecting_light_30_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_dark.png deleted file mode 100644 index c4dc132ef7f67f94929ba398386c013c42a8d8fe..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_light.png deleted file mode 100644 index b14617c72539937cf0b7871b15e25ad93dee0f63..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_disabled_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_off_dark_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_off_dark_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1d85b667c57edabf50392533988bd8050e814c27 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_off_dark_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_off_light_mtrl.png b/core/res/res/drawable-xhdpi/ic_media_route_off_light_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..231aec4f7960d37df68d94dfa3928dc338034329 Binary files /dev/null and b/core/res/res/drawable-xhdpi/ic_media_route_off_light_mtrl.png differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_alpha.png b/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_alpha.png deleted file mode 100644 index e75ffb811e041264da99a2b7ff18d85aca312ac2..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_dark.png deleted file mode 100644 index bb30773af112a67f158787125f0df6d42d752aff..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_light.png deleted file mode 100644 index a05d7d71028099ba635c750f2d5a033f597340ce..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_off_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_alpha.png b/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_alpha.png deleted file mode 100644 index 1b9fc125829616d2cff304dc3eb9c2ceddd95209..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_dark.png deleted file mode 100644 index 8690cf4d0d9913de8553664543b8c94008bc549d..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_light.png deleted file mode 100644 index 2cf94ce5930fece2ffc12e06c20cdcf70affac53..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_0_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_alpha.png b/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_alpha.png deleted file mode 100644 index f63d47e13a04e4632661ac4586dcb92d26a45c21..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_dark.png deleted file mode 100644 index e3fd200b6d12f66c630a21281c14e8e436f32d58..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_light.png deleted file mode 100644 index 0af22bef6f029244b4ea36dac12aef620303a27a..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_1_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_alpha.png b/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_alpha.png deleted file mode 100644 index fe005d94231a19e300030f4467e356d13126d559..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_dark.png deleted file mode 100644 index 6cb970c46ca43c74ae0780209f65ecc90d440136..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_light.png deleted file mode 100644 index 9577e7bb8d49c85518fd9e89d42e16e6251cf99c..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_2_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_alpha.png b/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_alpha.png deleted file mode 100644 index ea86408b4fd5861b76027fe11d5f722eb2fc376e..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_dark.png b/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_dark.png deleted file mode 100644 index 8290b981298570a7390dcaeee58173f7774b2a59..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_light.png b/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_light.png deleted file mode 100644 index abdecfb0ed2bcd2af187feefcf74c4f8f7a25439..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xhdpi/ic_media_route_on_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_corp_icon.png b/core/res/res/drawable-xxhdpi/ic_corp_icon.png deleted file mode 100644 index d33319f3eda44241bb5ef2cf269ffd2356c9a1e9..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_corp_icon.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_00_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..97949c66b112f28efaa94b3b70d19f30b653fe30 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_01_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3f35bcd9bb155b5801747c8b7afc2121e720d735 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_02_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed20948bca7599f2372fc26adf9f88a820b4da6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_03_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa7f010af2dfb68499dc826dfb936b12afd72b6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_04_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e1ea164a96da70c255c8707f54626e455b3a46 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_05_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ff079326e9ade580997b7b214180f46fa9102d2b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_06_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7b283bf4cac70f50c4edfeb3183c16427c10c2 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_07_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..41c4443cf05c7c7b593e16ffcf1fc34cc5a9ef66 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_08_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..461fa4622a0dfcf38ce31411f627e21e61f77f8d Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_09_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f96d1f010de94c8041697ea5c6476f9e85092f54 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_10_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..87a9b49722d21fee838f8e74ec3879a07062124d Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_11_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..96b536653900c64f913ab15529f852fe5ad3c971 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_12_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..532a86dd35f7b60d8c4560d4c41ba74a43c9880c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_13_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9f37eb266f0233b53e92fdb68c1c64fef1da13b4 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_14_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2437e0e80a01a5ca8b994772857a5f64cd70d6a6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_15_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..79bc6ce0d6ed75bcffb2a160b3d7b2e5d0014426 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_16_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbbe2f712c281cdcdedbb2969ef96a706141dfa Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_17_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1da48b863b179e3e9fd7589dd45cb044cd7c536a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_18_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..89635820b32a3b6daa395d3d85e5e3742cff8cd1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_19_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4be833f9594ff97ed13ed173a9f402ebab3c04 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_20_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4658fc3ad1018a4a37f2720f2fdc2a120de4ff51 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_21_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecd6bd1409a5e44f2c398955188452654fc6761 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_22_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..565e8deec640b5ca4007500915676f18c7969e91 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_23_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5c607cb7f17e5988a7f3d842324a044bf1ec43 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_24_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..87b84a7c33b908498ba4c6cda48954c7889a488a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_25_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9e12e5bb799859791fa13141c439484e7dc10cd9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_26_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..85e8791bdd338e4c528bfeb3a53c4ddb2020b7d0 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_27_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bd75d73764f35ab9d6b0fc5046fb3c1975aa8c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_28_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..204f3936ebf6f687ed4a15f431b8e617fb139578 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_29_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..78f787abcdb170600970a98137245f12595e4318 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_30_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e61c2cb0ab5023bb273eefac4cbaf5141df6a1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_00_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5155c0fbdbf32069a5466d01520ec9b9e3c53 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_01_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec05aeee8239a1b44215621eddf775991b13e8c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_02_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42cd13cf7e57967793afa7b8a765ef68844d6599 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_03_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f43727f0138ef8cc4f4068e2c8b39946d1a3c65b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_04_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e61a05c074c6415eb75d12ad01f3da37b1073d05 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_05_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc5976ad6b7a85f23f20f33ec85ebd933584a47 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_06_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ead968ed5d75fa148aab9d8d1f5dd051697f0313 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_07_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..52aa7d52f0334f85c029e9f121edaa01e5a7b7e9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_08_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..58986d450b9693c18a99bfe19d8f3ca51badc061 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_09_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42d6c7ce51da23680ecb71c1ed4734cd45fa4c70 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_10_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e0e60d1e0584c41c83a4320dffbd988cc89948 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_11_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..75bd261f2b8512f6b0b32944187da683daf93a46 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_12_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5207dac42a19a4a2d78b977b2e94fe5548f15747 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_13_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c2f69e79f7bb9e2c30f720c267b060d717c01190 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_14_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..167f8824bd25b3ba35d059ada0ad5b66a3627ec8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_15_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a85f2442c0f4dd9a07fd1df545a19d6720f7fc Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_16_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0390dc5681b2218aef97666121a7acc62e8322 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_17_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6a65d158f89de741387b4d145dd9a2410b6982e1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_18_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8086a55f1cbf6f34c7368b04fa4d949f5863ac62 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_19_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..eee4115746c494c1ec02966c26155a9cc1ef1b8e Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_20_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d214ad1eea50507896de7f49de0b00a0aa870fe5 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_21_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac56ac46e1e3a4aa4e97c3fb9c0e4b4ede158673 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_22_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..49af14e70b5835a5d47422366dcc8f75ebe904c9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_23_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5003095b4e97d071b58ba9328a182447b5ae7dad Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_24_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..62054a0e114613afee4a1730c9b0f4c5ad1a0bc3 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_25_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4c83dd483684627776247a083513ef62cdccca38 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_26_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a55f8e414735cc15c70d3b982c9a6a37a26ab2c1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_27_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..81567b7e691b0f601e559b2e5bc19100f1e8a6ae Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_28_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..40474754575e9d4b045d0067847652261caa5226 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_29_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..23db45a064e83852df211571b3c6f717d3b5d172 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_30_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d9961a11c0cb06ff5b11f2e989dc92ec5013bc Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connected_light_30_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_00_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..97949c66b112f28efaa94b3b70d19f30b653fe30 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_01_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3f35bcd9bb155b5801747c8b7afc2121e720d735 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_02_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed20948bca7599f2372fc26adf9f88a820b4da6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_03_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa7f010af2dfb68499dc826dfb936b12afd72b6 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_04_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e1ea164a96da70c255c8707f54626e455b3a46 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_05_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ff079326e9ade580997b7b214180f46fa9102d2b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_06_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7b283bf4cac70f50c4edfeb3183c16427c10c2 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_07_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..41c4443cf05c7c7b593e16ffcf1fc34cc5a9ef66 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_08_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..461fa4622a0dfcf38ce31411f627e21e61f77f8d Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_09_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f96d1f010de94c8041697ea5c6476f9e85092f54 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_10_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..87a9b49722d21fee838f8e74ec3879a07062124d Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_11_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..685a340b52166540f404e6a087414d5acf7ab455 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_12_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b49c30e8517314aba0fe5b5c98a2e06506bd872c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_13_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..aa92d9ed7952653769c6aebdcb8672cb197ca461 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_14_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..73d487cc2432c6c926d811fc052effdea8639884 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_15_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f427d0c4a3f98667e441ef02948b26e8941b8a0a Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_16_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbaa08778afd965de814eb4241e881bda09811f Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_17_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1f0fcd67ee8a6ccf0a2a93b2c162aaa1c31ddc45 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_18_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..80c905a911812c06c054b984ed4fc8f6c85a843c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_19_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9b27fa38626f96b6330a7f7937d78831b463ba75 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_20_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..24f2b75803f6da8644489fe874c48954506d46e8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_21_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f499d0a6fcdba1d66dc0c43ae33fe58d095abf7f Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_22_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e22ca9bb42a5f4498ecdd2e9df5cc040ef6939b4 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_23_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..596ca8b6725039182edc0b3c14f974ddf00995ac Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_24_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..363a4d6477362d3cbfc63cdc96413754c1ba0877 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_25_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..10e275bdb90fc296ce99c8b9582cc6cf91354f18 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_26_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..aa87c9e5cd9cf11873182b960a44c3e7c0deaf83 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_27_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..77a2b8f56d4a8e653afa6210a8688e9985606703 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_28_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f6108d95c30db97dade96c50eb7846a61497c17f Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_29_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a6a20d33764ad769c648d6bc30626144265e54 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_30_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6dc9aacd4903dd75ff0a8bad48c37c6cbb7f10 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_00_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5155c0fbdbf32069a5466d01520ec9b9e3c53 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_01_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec05aeee8239a1b44215621eddf775991b13e8c Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_02_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42cd13cf7e57967793afa7b8a765ef68844d6599 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_03_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f43727f0138ef8cc4f4068e2c8b39946d1a3c65b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_04_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..849638b1ed4f76b5849764b2a63daf1cd1d47aa1 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_05_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..06e21b06a1ec9e30c7eed1a4a6af83f13ef43764 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_06_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ead968ed5d75fa148aab9d8d1f5dd051697f0313 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_07_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..52aa7d52f0334f85c029e9f121edaa01e5a7b7e9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_08_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..58986d450b9693c18a99bfe19d8f3ca51badc061 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_09_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42d6c7ce51da23680ecb71c1ed4734cd45fa4c70 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_10_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e7e0e60d1e0584c41c83a4320dffbd988cc89948 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_11_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..933be303500dc33cfc3ef4e57ad248c8cb31b242 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_12_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b39230f429cba4e4cd9ea2350e112e69732e3b14 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_13_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..01492c44a2e8a360fb1b28aa374c8a9357de82a8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_14_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b56aa16538a70d3e8eb05fb139e2f34c5ea855c7 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_15_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd3d2c74e0f7cfbb373647f23b275bebb69736b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_16_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b76d5d70f52134a6b546255b72c63e7b3772c3f7 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_17_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5fb12e763b128cb818a82f07400db9caa09836dd Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_18_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..64fe3c53ec6121a138b7b2832e399176aa659b49 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_19_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..68fd05155db475f30074c1e11b31d11449023834 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_20_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a4fd4cc9a40046464026b5d95e5a15166fb761b5 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_21_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..40b02f06c3dcd142b55f102f54d40a830d6f8b9b Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_22_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd6ddb844c858452b16cb30bab9cbbc50daf5b9 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_23_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb250dddd69d981234419d91f4d47fed5f595243 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_24_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..43d211921b62dcdd1ff6752d661a04d2911d1bcd Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_25_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..bdcaf69feb71d728f514f056b9d3db30b2ea0155 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_26_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2bff46600898a4ee2b29ae6ad1d46223888ef4 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_27_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..290e7d906049a813eed69130bc25e251eea66182 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_28_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c670fb9068aa4958e323da8ddd0474678aaa3c8 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_29_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e93c824660c933719e14fc39f60e9d5287670f2f Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_30_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..80d5155c0fbdbf32069a5466d01520ec9b9e3c53 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_connecting_light_30_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_dark.png deleted file mode 100644 index fdb2121261c488008e171a255b7f0651347fed6a..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_light.png deleted file mode 100644 index 9ce7e3aefdd20bbc9a67bc423aa3f6d69b4aef6c..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_disabled_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_off_dark_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_off_dark_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9acbd296eb585417e58206e306aae5b34c01b0ff Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_off_dark_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_off_light_mtrl.png b/core/res/res/drawable-xxhdpi/ic_media_route_off_light_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4273d62d9a3e93e8c5c853d9ba5909101c2795 Binary files /dev/null and b/core/res/res/drawable-xxhdpi/ic_media_route_off_light_mtrl.png differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_alpha.png deleted file mode 100644 index 44d98d56d2b54998a2ec3056c971fda540179ebf..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_dark.png deleted file mode 100644 index e8601ce3278140e07cbdac6cfa059291dbc10156..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_light.png deleted file mode 100644 index 34928d7f94f4957533f433365d9db242ec75a929..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_off_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_alpha.png deleted file mode 100644 index c807b50ad076fa991e47af41121638841c8809c0..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_dark.png deleted file mode 100644 index 23d8ba8de469efe54b84f1622f00a1f681764a2b..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_light.png deleted file mode 100644 index ef5039cc2ae2e1ac568707d4836a2601d1627cd9..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_0_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_alpha.png deleted file mode 100644 index d54f44acb84ba2a83eb3456513d27b577b93a4c9..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_dark.png deleted file mode 100644 index 4c0f0e0ebc40c29fd85fefde901c54bd6b329faf..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_light.png deleted file mode 100644 index 8cd82da543d4d3d1896fede958c7f66cf48c25b0..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_1_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_alpha.png deleted file mode 100644 index 17c1d9945b1271ded0c6d9cc461ef6524046902c..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_dark.png deleted file mode 100644 index ecfe3465fde194447102ec73536655e6a8c04863..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_light.png deleted file mode 100644 index d25288d7a4bec8626ad4ef69d782cc10ecad4266..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_2_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_alpha.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_alpha.png deleted file mode 100644 index 906401e6f03f53286347e6505764fddfea541dec..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_alpha.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_dark.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_dark.png deleted file mode 100644 index 8e47095e5ae96f7274b6651340858c1c62aa67e4..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_dark.png and /dev/null differ diff --git a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_light.png b/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_light.png deleted file mode 100644 index 4b64a48f0c79af1a4c52cc838d0f37761b33c26f..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxhdpi/ic_media_route_on_mtrl_light.png and /dev/null differ diff --git a/core/res/res/drawable-xxxhdpi/ic_corp_icon.png b/core/res/res/drawable-xxxhdpi/ic_corp_icon.png deleted file mode 100644 index 359e210ea81f9672315c2bbda9bbeabb3c8360f2..0000000000000000000000000000000000000000 Binary files a/core/res/res/drawable-xxxhdpi/ic_corp_icon.png and /dev/null differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_00_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5561c627571104ecb6dff272f35ed933c5158e14 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_01_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9eff17e594b4624b2f9bfdee0a09bca90ae1ac55 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_02_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..67923e25999c20d8c042fb042be2d6bc000dc24b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_03_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa0e98965c1ab4eae56d1696a9411f8f91c458b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_04_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd549df58c3e6fd6ce976e314e51d75b9ad4a42 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_05_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c14d79181b6a9c43e9f2ea57488a1a494153500 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_06_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9f061a5331a079c71273478e72acade34bd49502 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_07_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1523086df532edad1461a6bece0ba5e0097054 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_08_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..220a4fed4b6404160c127ebbc717cf7b563df3ca Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_09_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..77aac4cb6daa46bc221bdc288fbcdc2e376d2f1b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_10_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..bf691881dc3cfbeea35cd8ded4a50daea64370fe Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_11_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..22197da7f54002219cd733116ff1d96a53770c5d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_12_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..380e9298a0d0d4f750169c2ba3c0f23bf94f4b04 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_13_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d93a600938bd0949e8093fcb2e53313e9b8ab49c Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_14_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..3709d5fa21d57044ea8bbd9139b58ea1adf45027 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_15_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5019b59195e2aef95c0d5dcae94d3512e1b41f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_16_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f75a0720e711c018598358026352de3ebec7efce Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_17_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c8dcd0da0269208b67044edda5492d8c046a83a8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_18_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..172775e7db1fe3759748c30c00ad3e80fcaae08d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_19_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2f081fd81e9a8e8f87ecdcfc205a9126340b0e60 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_20_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4c55b9deed742e3293a556d98f0356b2baa06f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_21_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..de155f6ae4ff3d123574ee478d0e8ed1cbd92c33 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_22_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc028d8b576991d2105e52f31bcf118795cea55 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_23_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e848d08f6852a88bedc17b15a80a792a58a399c1 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_24_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..584c2f8c197f9b67cc5ad30b71101e0b7c2ad8a8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_25_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c9299be66fb606a49b78ce8fce363c0e8002e04a Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_26_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8abcbd69ad42d77b41a81dc774e75a4d1405807f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_27_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ee53e472e9d739c4e4a4ba32e7698bad1d514af3 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_28_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b10d23a26c19895dada497c963ccc0583da569bc Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_29_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..65a23632c9529421845e6a8ba4ef23b546f5a7fc Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_30_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7347282253ec9aa71495615d0b92a48485f012 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_00_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6a656b85518674e17cdaabfde591afe8c9a7e1d8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_01_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3a3b6b3461099d3adbd4c710587f23e2f39ea5 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_02_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6b22554baf954eb9ec883532eacf40f8dd9f16c2 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_03_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9245c6db7b5982b40fefbc242c4c04e65e9390 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_04_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a7f6c937145774f03c65c6735777dd3c7ee018 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_05_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac396ed23c13a70711cfdf878e873dd1d57df3c9 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_06_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8c15241d09d54c0839cb82134c431ea8313081c6 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_07_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a75e217481d0beff4fb321df9d61cc287a391c Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_08_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..90280a926217c9cacbbb1ea269a6be037139f58f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_09_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a4632bb32008196fb75160cf00280e4842205b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_10_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ae68b5fdb4d6fdb0754eb14bdf6cb1e08732c6 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_11_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cba8f18e1416d36565d614fd88a92e75e545c8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_12_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..611faeb14ba5b7a652161b9f38af8e18cbe1a2a1 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_13_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..dfada4df313f4e7f48f0ae0929c14a759e77da9e Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_14_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6118202120e202c584e2d16c8888138a3f038320 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_15_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..60d51994d0586e4404cb34a869069c2756015306 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_16_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ee0b672c5bfd6d6bb51c8671fb7ba928d41cdd5d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_17_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5a97f67416ca3cfa19383775ff21f7d60ddb2c31 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_18_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9237a7d516fefd0831c0ab4fcdc879abb53e448c Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_19_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4c663064bd22bc5a32fb24e8df0b4461fc8b35 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_20_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..141f9f6e1f48227660469eaf46aa298275ed6026 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_21_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2baa531f5cf5c8c4016c13898212fc6f07f008ae Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_22_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7a911d5a22cc441d166c515c22f887215d5fa180 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_23_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a760b85ff9244c12b2b91f11da4fc0a2bec267be Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_24_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5c15a879a9b1d1e75b42becf2865530e1d9ae7b7 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_25_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..36a9f1fe8e17af064df8ae196b0d709c2e8704c4 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_26_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..03e8c9f7c2dc819419476dec741d73d2129fa21d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_27_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..533c69498f6f444413d763da28299ce43dff26f5 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_28_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ead60f5e6feffaaabc5e9dade04f48d92078eb3a Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_29_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8534f565075a3d965036703710c76ea3a8ece2 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_30_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fa69ad0a39c284ef388246561c9a42c8a24624ec Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connected_light_30_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_00_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5561c627571104ecb6dff272f35ed933c5158e14 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_00_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_01_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9eff17e594b4624b2f9bfdee0a09bca90ae1ac55 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_01_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_02_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..67923e25999c20d8c042fb042be2d6bc000dc24b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_02_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_03_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa0e98965c1ab4eae56d1696a9411f8f91c458b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_03_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_04_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd549df58c3e6fd6ce976e314e51d75b9ad4a42 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_04_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_05_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c14d79181b6a9c43e9f2ea57488a1a494153500 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_05_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_06_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..9f061a5331a079c71273478e72acade34bd49502 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_06_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_07_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1523086df532edad1461a6bece0ba5e0097054 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_07_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_08_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..220a4fed4b6404160c127ebbc717cf7b563df3ca Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_08_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_09_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..77aac4cb6daa46bc221bdc288fbcdc2e376d2f1b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_09_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_10_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..bf691881dc3cfbeea35cd8ded4a50daea64370fe Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_10_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_11_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..98b04487e0f7ee72aa3efb7df96330428615394b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_11_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_12_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a92641958a6bef23094331faa788a7f2b8dfe71b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_12_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_13_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..53f6e3ed1d64063f065d033d434559cff421f653 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_13_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_14_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2d1b1768f2130ed18ebf932b69519edd98b0d1 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_14_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_15_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..22cce05577c7bf580095a71627a4b060ec2103dd Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_15_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_16_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d40db2168eb1dadb8670d13f4409fa098e5c8f50 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_16_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_17_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0a95b7ef7c769515ad8ce8c06b3f01922a4c74ec Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_17_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_18_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..08698bde6d28cc18ca4c2bf5735e2d4c47244414 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_18_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_19_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..698d23ad1793fc5ee3fe7693e8802e951cd25f48 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_19_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_20_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..36ed854751e002bf9a37aa31d2be2591c0374abd Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_20_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_21_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0d9252e8e7575d62deec22c17635e6ba8da425 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_21_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_22_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..747b90162a9039790c853607942166fae6534be5 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_22_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_23_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..bae86656ce2d5d6fe0801a2a25282e63d0d6a1be Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_23_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_24_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7b1a88af81d6d793097922f35d31c28194b5a0 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_24_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_25_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..03f624e33c5dd977e779f0be315112af71ca8d5d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_25_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_26_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a06ed167f9e50206790a24503063fdfed20687 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_26_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_27_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b2a165b824f253fc83c54c50a61c23d1873896 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_27_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_28_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8b045cb1d798ab7aea315dcdff65db06a3af3506 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_28_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_29_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..522ec676aa930a389706c9d70bbd43e4dbad16eb Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_29_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_30_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5561c627571104ecb6dff272f35ed933c5158e14 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_dark_30_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_00_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_00_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6a656b85518674e17cdaabfde591afe8c9a7e1d8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_00_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_01_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_01_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3a3b6b3461099d3adbd4c710587f23e2f39ea5 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_01_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_02_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_02_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6b22554baf954eb9ec883532eacf40f8dd9f16c2 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_02_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_03_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_03_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9245c6db7b5982b40fefbc242c4c04e65e9390 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_03_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_04_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_04_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a7f6c937145774f03c65c6735777dd3c7ee018 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_04_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_05_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_05_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac396ed23c13a70711cfdf878e873dd1d57df3c9 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_05_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_06_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_06_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8c15241d09d54c0839cb82134c431ea8313081c6 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_06_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_07_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_07_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a75e217481d0beff4fb321df9d61cc287a391c Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_07_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_08_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_08_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..90280a926217c9cacbbb1ea269a6be037139f58f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_08_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_09_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_09_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a4632bb32008196fb75160cf00280e4842205b Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_09_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_10_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_10_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ae68b5fdb4d6fdb0754eb14bdf6cb1e08732c6 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_10_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_11_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_11_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ce3fd3d3db97bc4db8fce4ae5beb697efd0284 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_11_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_12_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_12_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..42482a45fd5ec4c62244ca1f3db6fe4efc1670ca Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_12_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_13_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_13_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ff30f98771387b7b05425d02634a74e07df0da44 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_13_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_14_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_14_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0ddcb5515bade42605d452508a916da9cb3eab72 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_14_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_15_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_15_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..46ec435d158f7691f9c592200f1766968570c744 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_15_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_16_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_16_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..d95fd77adacfa4981fe7a43ea0afb7274cc7892e Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_16_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_17_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_17_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f116a1fa19510c4a738c31fa243c92d08834d8ee Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_17_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_18_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_18_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..957db7fc9c971018311cc3100f0f36baf0e4b763 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_18_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_19_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_19_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..624ec473b5e8da0cc3edec6e8edad29ca6f6d4e8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_19_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_20_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_20_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..362fba40c74ed10285703de16ba94b260bd97fc0 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_20_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_21_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_21_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..24032b979b5e560ad81a6bf2e35a9c4ddad587b7 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_21_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_22_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_22_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6e4c83c2ea5875528cf6ae9b954c631b568d17b1 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_22_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_23_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_23_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2a09e4b904c824fa9a5353ba7ed3e132b01c2f Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_23_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_24_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_24_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..7b05dfaac1ba262119cd236a81eda6ed2ee415c8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_24_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_25_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_25_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..30de74a129968e0293e4e72e80a16cb2c45786f2 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_25_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_26_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_26_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b08b782f1f094635b2b67e24764737955c16107d Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_26_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_27_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_27_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..e52a1aa381a0def3ed911a7370a2c2c42948e0a9 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_27_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_28_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_28_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2c311f56adaa2f9850363a34c274577243b551e0 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_28_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_29_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_29_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..efdf5fca48bdd300d3a0656d229b0e2dd1135fab Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_29_mtrl.png differ diff --git a/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_30_mtrl.png b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_30_mtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6a656b85518674e17cdaabfde591afe8c9a7e1d8 Binary files /dev/null and b/core/res/res/drawable-xxxhdpi/ic_media_route_connecting_light_30_mtrl.png differ diff --git a/core/res/res/drawable/ic_close.xml b/core/res/res/drawable/ic_close.xml index 708695994ab642deedb68c61d30132ae3d3c0f24..70565f296a1f41195f5e0927f7b2fba270797e7f 100644 --- a/core/res/res/drawable/ic_close.xml +++ b/core/res/res/drawable/ic_close.xml @@ -19,6 +19,6 @@ Copyright (C) 2016 The Android Open Source Project android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/core/res/res/drawable/ic_corp_badge.xml b/core/res/res/drawable/ic_corp_badge.xml new file mode 100644 index 0000000000000000000000000000000000000000..78cce586ac18de0efba503c76858913727df1802 --- /dev/null +++ b/core/res/res/drawable/ic_corp_badge.xml @@ -0,0 +1,12 @@ + + + + diff --git a/core/res/res/drawable/ic_corp_badge_case.xml b/core/res/res/drawable/ic_corp_badge_case.xml index 0b6028cc5d2a82c12b530b35aaf14542ac902de2..2d11ee61eabb14679b3b99d5a2651d510cf225a5 100644 --- a/core/res/res/drawable/ic_corp_badge_case.xml +++ b/core/res/res/drawable/ic_corp_badge_case.xml @@ -1,30 +1,9 @@ - - - diff --git a/core/res/res/drawable/ic_corp_badge_no_background.xml b/core/res/res/drawable/ic_corp_badge_no_background.xml index 78322a9920c87f17c702accae9965c189c5c7a06..8f7fb70d5b835dd4d15f66cb59b388146c2f8eb7 100644 --- a/core/res/res/drawable/ic_corp_badge_no_background.xml +++ b/core/res/res/drawable/ic_corp_badge_no_background.xml @@ -1,30 +1,9 @@ - + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> - - diff --git a/core/res/res/drawable/ic_corp_badge_off.xml b/core/res/res/drawable/ic_corp_badge_off.xml index 6799bf716d97b26cc0f98a70b19c5262f3d681c3..4774f318738a1067810eadb547d8d5409b4f4ee9 100644 --- a/core/res/res/drawable/ic_corp_badge_off.xml +++ b/core/res/res/drawable/ic_corp_badge_off.xml @@ -1,56 +1,12 @@ - - - + android:width="20dp" + android:height="20dp" + android:viewportWidth="20.0" + android:viewportHeight="20.0"> + android:pathData="M10,10m-10,0a10,10 0,1 1,20 0a10,10 0,1 1,-20 0" + android:fillColor="#607D8B"/> - - - - - - \ No newline at end of file + android:pathData="M16.42,15.68l-0.85,-0.85L7.21,6.47L4.9,4.16L4.16,4.9l1.57,1.57H5.36c-0.65,0 -1.16,0.52 -1.16,1.17L4.2,14.05c0,0.65 0.52,1.17 1.17,1.17h9.12l1.2,1.2L16.42,15.68zM15.83,7.64c0.03,-0.65 -0.49,-1.17 -1.14,-1.14h-2.33V5.3c0,-0.65 -0.52,-1.17 -1.17,-1.14H8.86C8.22,4.14 7.7,4.66 7.7,5.3v0.19l8.14,8.17V7.64zM11.2,6.5H8.83V5.3h2.36V6.5z" + android:fillColor="#FFFFFF"/> + diff --git a/core/res/res/drawable/ic_corp_icon.xml b/core/res/res/drawable/ic_corp_icon.xml new file mode 100644 index 0000000000000000000000000000000000000000..48531dd8c539f330316dcadf1ddec323983bb4fd --- /dev/null +++ b/core/res/res/drawable/ic_corp_icon.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/core/res/res/drawable/ic_corp_icon_badge_case.xml b/core/res/res/drawable/ic_corp_icon_badge_case.xml index d62eda4a12ba03e436b8e5e24a68d72a8005ca94..dd653c6ff2d3a9a10d5aa264dcf35133162b5b7b 100644 --- a/core/res/res/drawable/ic_corp_icon_badge_case.xml +++ b/core/res/res/drawable/ic_corp_icon_badge_case.xml @@ -1,30 +1,9 @@ - - - diff --git a/core/res/res/drawable/ic_corp_statusbar_icon.xml b/core/res/res/drawable/ic_corp_statusbar_icon.xml index e742c0b9bff21bbbf1b7d1ac3be3e74af7f1a023..8f7fb70d5b835dd4d15f66cb59b388146c2f8eb7 100644 --- a/core/res/res/drawable/ic_corp_statusbar_icon.xml +++ b/core/res/res/drawable/ic_corp_statusbar_icon.xml @@ -1,30 +1,9 @@ - - - diff --git a/core/res/res/drawable/ic_corp_user_badge.xml b/core/res/res/drawable/ic_corp_user_badge.xml index 23809d5a33101d0d98e0b87c871398c1720ce6f4..6a0d9025684d397924313fdefc5dafaec1d6be66 100644 --- a/core/res/res/drawable/ic_corp_user_badge.xml +++ b/core/res/res/drawable/ic_corp_user_badge.xml @@ -1,24 +1,15 @@ - + android:pathData="M16.3,11.3h3.4v1.7h-3.4z" + android:fillColor="#FFFFFF"/> + + diff --git a/core/res/res/drawable/ic_eject_24dp.xml b/core/res/res/drawable/ic_eject_24dp.xml index 1bb351a576017be6666913787027d102f6d81640..321ee3b6289c0a638d12cee8bf708bbbb5276984 100644 --- a/core/res/res/drawable/ic_eject_24dp.xml +++ b/core/res/res/drawable/ic_eject_24dp.xml @@ -20,5 +20,8 @@ Copyright (C) 2015 The Android Open Source Project android:viewportHeight="24.0"> + android:pathData="M6,17h12c0.55,0 1,0.45 1,1v0c0,0.55 -0.45,1 -1,1H6c-0.55,0 -1,-0.45 -1,-1v0C5,17.45 5.45,17 6,17z"/> + diff --git a/core/res/res/drawable/ic_feedback.xml b/core/res/res/drawable/ic_feedback.xml index 365863da31e210ea737e155f5b9f5be332a5d907..c316e7df5d4bdd44bff235cc6caad3632f74f0fd 100644 --- a/core/res/res/drawable/ic_feedback.xml +++ b/core/res/res/drawable/ic_feedback.xml @@ -20,5 +20,5 @@ Copyright (C) 2016 The Android Open Source Project android:viewportHeight="24.0"> + android:pathData="M20,2H4C2.9,2 2,2.9 2,4v17.39c0,0.54 0.65,0.81 1.04,0.43L6.86,18H20c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2zM11,7c0,-0.55 0.45,-1 1,-1s1,0.45 1,1v3c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1V7zM12,15.2c-0.61,0 -1.1,-0.49 -1.1,-1.1c0,-0.61 0.49,-1.1 1.1,-1.1c0.61,0 1.1,0.49 1.1,1.1C13.1,14.71 12.61,15.2 12,15.2z"/> diff --git a/core/res/res/drawable/ic_media_route_connected_dark_material.xml b/core/res/res/drawable/ic_media_route_connected_dark_material.xml new file mode 100644 index 0000000000000000000000000000000000000000..efde152a57e4e343f336ba1183ad00ac1c0e3a01 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connected_dark_material.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/drawable/ic_media_route_connected_light_material.xml b/core/res/res/drawable/ic_media_route_connected_light_material.xml new file mode 100644 index 0000000000000000000000000000000000000000..466a43aa8079047d343e348182c9e2655f2c0c80 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connected_light_material.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/drawable/ic_media_route_connecting_dark_material.xml b/core/res/res/drawable/ic_media_route_connecting_dark_material.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c4bae513e35e7d3593c612bc24165371e165cd5 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connecting_dark_material.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/drawable/ic_media_route_connecting_light_material.xml b/core/res/res/drawable/ic_media_route_connecting_light_material.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b7e80708ad2ddd47a5eae7392811c7f5e1d0433 --- /dev/null +++ b/core/res/res/drawable/ic_media_route_connecting_light_material.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/res/res/drawable/ic_media_route_connecting_material_dark.xml b/core/res/res/drawable/ic_media_route_connecting_material_dark.xml deleted file mode 100644 index 51decd30728d89a81ec88eb2b3164fa0a15ed709..0000000000000000000000000000000000000000 --- a/core/res/res/drawable/ic_media_route_connecting_material_dark.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/core/res/res/drawable/ic_media_route_connecting_material_light.xml b/core/res/res/drawable/ic_media_route_connecting_material_light.xml deleted file mode 100644 index 51decd30728d89a81ec88eb2b3164fa0a15ed709..0000000000000000000000000000000000000000 --- a/core/res/res/drawable/ic_media_route_connecting_material_light.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/core/res/res/drawable/ic_media_route_material_dark.xml b/core/res/res/drawable/ic_media_route_dark_material.xml similarity index 74% rename from core/res/res/drawable/ic_media_route_material_dark.xml rename to core/res/res/drawable/ic_media_route_dark_material.xml index eb26ac866e60f0f51f16ff778a86cd1549ae8185..2a60f586f1a058f98f5d5e9058122b06a4da0deb 100644 --- a/core/res/res/drawable/ic_media_route_material_dark.xml +++ b/core/res/res/drawable/ic_media_route_dark_material.xml @@ -17,17 +17,14 @@ - - - + android:drawable="@android:drawable/ic_media_route_connecting_dark_material" /> + - + - + diff --git a/core/res/res/drawable/ic_media_route_material_light.xml b/core/res/res/drawable/ic_media_route_light_material.xml similarity index 65% rename from core/res/res/drawable/ic_media_route_material_light.xml rename to core/res/res/drawable/ic_media_route_light_material.xml index 37bbf14821e09c652bdb074c3660710de8fc338a..f35187eeac660a31132089133544b282ea7d014d 100644 --- a/core/res/res/drawable/ic_media_route_material_light.xml +++ b/core/res/res/drawable/ic_media_route_light_material.xml @@ -1,6 +1,6 @@ + + + - - - - - + android:visibility="gone"/> @@ -105,7 +102,6 @@ android:layout_height="wrap_content" style="@style/Widget.Material.Button.Colored" android:text="@string/autofill_save_yes"> - diff --git a/core/res/res/layout/notification_template_material_ambient.xml b/core/res/res/layout/notification_template_material_ambient.xml index 76b3528d26fe028bbe35e81608f86a575f4274b3..ee5c758cc130863a50672b1a3bb6fb9cea4a8d79 100644 --- a/core/res/res/layout/notification_template_material_ambient.xml +++ b/core/res/res/layout/notification_template_material_ambient.xml @@ -70,6 +70,8 @@ android:textSize="16sp" android:textColor="#eeffffff" android:layout_marginTop="4dp" + android:ellipsize="end" + android:maxLines="7" /> diff --git a/core/res/res/layout/notification_template_material_big_picture.xml b/core/res/res/layout/notification_template_material_big_picture.xml index 83c0fec004b66d39c031883452aa271767d9cd59..e94e646fa581265952026ff89288bfbc5f2adb7c 100644 --- a/core/res/res/layout/notification_template_material_big_picture.xml +++ b/core/res/res/layout/notification_template_material_big_picture.xml @@ -40,7 +40,10 @@ android:layout_marginEnd="@dimen/notification_content_margin_end" android:orientation="vertical"> - + - + + android:layout_height="@dimen/notification_progress_bar_height" + android:layout_marginTop="@dimen/notification_progress_margin_top" + android:layout_marginBottom="2dp"/> "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dae" - "%1$d dag %2$d uur" - "%1$d dag %2$d uur" - "%1$d uur" - "%1$d u. %2$d min." - "%1$d u. %2$d min." - "%1$d minute" - "%1$d min." - "%1$d min. %2$d s." - "%1$d min. %2$d s." - "%1$d sekondes" - "%1$d sekonde" "<Titelloos>" "(Geen foonnommer)" "Onbekend" @@ -95,11 +79,13 @@ "Geen stem- of nooddiens nie" "Word tydelik nie deur die selnetwerk by jou ligging aangebied nie" "Kan netwerk nie bereik nie" - "Om die opvangs te verbeter, probeer die tipe verander wat gekies is by Stelsel > Netwerk en internet > Mobiele netwerke > Voorkeurnetwerktipe." + "Om opvangs te verbeter, probeer die soort verander wat by Instellings > Netwerk en internet > Mobiele netwerke > Voorkeurnetwerksoort gekies is." + "Wi‑Fi-oproepe is aktief" + "Noodoproepe vereis \'n mobiele netwerk." "Opletberigte" "Oproepaanstuur" "Noodterugbel-modus" - "Opletberigte oor mobiele data" + "Status van mobiele data" "SMS-boodskappe" "Stemboodskappe" "Wi-Fi-oproepe" @@ -1780,4 +1766,5 @@ "SIM is nie opgestel nie" "SIM word nie toegelaat nie" "Foon word nie toegelaat nie" + "Opspringvenster" diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 14fb6bb01a9a869a850a3ec44d0fe5e719702090..0fdfb67ad8d43769543ed9e4e3159ca48ca3f016 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -21,24 +21,8 @@ "B" - "ኪባ" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ቀኖች" - "%1$d ቀን %2$d ሰዓ" - "%1$d ቀን %2$d ሰዓ" - "%1$d ሰዓ" - "%1$d ሰዓ %2$d ደቂቃ" - "%1$d ሰዓ %2$d ደቂቃ" - "%1$d ደቂቃዎች" - "%1$d ደቂቃዎች" - "%1$d ደቂቃ %2$d ሴ" - "%1$d ደቂቃ %2$d ሴ" - "%1$d ሴ" - "%1$d ሴ" "<ርዕስ አልባ>" "(ምንም ስልክ ቁጥር የለም)" "አይታወቅም" @@ -95,11 +79,13 @@ "ምንም የድምፅ እና የድንገተኛ አደጋ ጥሪ አገልግሎት የለም" "ለጊዜው በአካባቢዎ ባለው የተንቀሳቃሽ ስልክ አውታረ መረብ አይቀርብም" "አውታረ መረብ ላይ መድረስ አይቻልም" - "ቅበላን ለማሻሻል የተመረጠውን ዓይነት በሥርዓት > አውታረ መረቦች እና በይነመረብ > የተንቀሳቃሽ ስልክ አውታረ መረቦች > ተመራጭ የአውታረ መረብ ዓይነት ላይ ለመለወጥ ይሞክሩ።" + "ቅበላን ለማሻሻል የተመረጠውን ዓይነት በቅንብሮች > አውታረ መረብ እና በይነመረብ > የተንቀሳቃሽ ስልክ አውታረ መረቦች > ተመራጭ የአውታረ መረብ ዓይነት ላይ ለመለወጥ ይሞክሩ።" + "የWi‑Fi ጥሪ ገቢር ነው" + "የአደጋ ጥሪዎች የተንቀሳቃሽ ስልክ አውታረ መረብ ያስፈልጋቸዋል።" "ማንቂያዎች" "ጥሪ ማስተላለፍ" "የአደጋ ጊዜ ጥሪ ሁነታ" - "የተንቀሳቃሽ ስልክ ውሂብ ማንቂያዎች" + "የተንቀሳቃሽ ስልክ ውሂብ ሁኔታ" "የኤስኤምኤስ መልዕክቶች" "የድምጽ መልዕክቶች" "የWi-Fi ጥሪ" @@ -1780,4 +1766,5 @@ "ሲም አልቀረበም" "ሲም አይፈቀድም" "ስልክ አይፈቀድም" + "ብቅ-ባይ መስኮት" diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 45e604bd868729469b6711cf8979222559ae7e9a..b25a13ce45918f357eafa51b30a3bf62473849dd 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -21,30 +21,14 @@ "بايت" - "كيلوبايت" - "ميغابايت" - "غيغابايت" - "تيرابايت" "بيتابايت" "%1$s %2$s" - "%1$d يوم" - "%1$d يوم %2$d ساعة" - "%1$d يوم %2$d ساعة" - "%1$d ساعة" - "%1$d ساعة %2$d دقيقة" - "%1$d ساعة %2$d دقيقة" - "%1$d دقيقة" - "%1$d دقيقة" - "%1$d دقيقة %2$d ثانية" - "%1$d دقيقة %2$d ثانية" - "%1$d ثانية" - "%1$d ثانية" "‏<بلا عنوان>" "(ليس هناك رقم هاتف)" "غير معروف" "البريد الصوتي" "MSISDN1" - "‏حدثت مشكلة في الاتصال أو أن كود MMI غير صحيح." + "‏حدثت مشكلة في الاتصال أو أن رمز MMI غير صحيح." "تم تقييد التشغيل لأرقام الاتصال الثابت فقط." "يتعذر تغيير إعدادات إعادة توجيه المكالمات من هاتفك أثناء التجوال." "تم تمكين الخدمة." @@ -59,7 +43,7 @@ "أرقام التعريف الشخصية التي كتبتها غير مطابقة." "ادخل رقم تعريف شخصي مكون من ٤ إلى ٨ أرقام." "‏اكتب رمز PUK مكونًا من ٨ أرقام أو أكثر." - "‏شريحة SIM مؤمّنة بكود PUK. اكتب كود PUK لإلغاء تأمينها." + "‏شريحة SIM مؤمّنة برمز PUK. اكتب رمز PUK لإلغاء تأمينها." "‏اكتب PUK2 لإلغاء تأمين شريحة SIM." "‏محاولة غير ناجحة، مكّن قفل SIM/RUIM." @@ -99,11 +83,13 @@ "لا تتوفر خدمة الصوت/الطوارئ" "مؤقتا لا تقدمها شبكة الجوال في موقعك" "يتعذر الوصول إلى الشبكة" - "‏لتحسين الاستقبال، يمكنك تجربة تغيير النوع المحدّد في النظام > الشبكة والإنترنت > شبكات الجوّال > نوع الشبكة المفضّل." + "‏لتحسين الاستقبال، يمكنك محاولة تغيير النوع المحدّد من خلال الإعدادات > الشبكة والإنترنت > شبكات الجوّال > نوع الشبكة المفضّل." + "‏الاتصال عبر Wi-Fi نشط" + "تتطلب مكالمات الطوارئ شبكة جوّال." "التنبيهات" "إعادة توجيه المكالمة" "وضع معاودة الاتصال بالطوارئ" - "تنبيهات بيانات الجوّال" + "حالة بيانات الجوّال" "‏الرسائل القصيرة SMS" "رسائل البريد الصوتي" "‏الاتصال عبر Wi-Fi" @@ -153,8 +139,8 @@ "{0}: {1} بعد {2} ثانية" "{0}: لم تتم إعادة التوجيه" "{0}: لم تتم إعادة التوجيه" - "اكتمل كود الميزة." - "حدثت مشكلة بالاتصال أو أن كود الميزة غير صحيح." + "اكتمل رمز الميزة." + "حدثت مشكلة بالاتصال أو أن رمز الميزة غير صحيح." "حسنًا" "حدث خطأ في الشبكة." "‏تعذر العثور على عنوان URL." @@ -1916,4 +1902,5 @@ "‏لم يتم تقديم SIM" "‏غير مسموح باستخدام SIM" "غير مسموح باستخدام الهاتف" + "نافذة منبثقة" diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 97bcd6d8396f2254b8748e5baa8020e19d4c8d63..615640288ead1d2b4505f2302474c70680a94726 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d gün" - "%1$d gan %2$d saat" - "%1$d gün %2$d saat" - "%1$d saat" - "%1$d saat %2$d dəq" - "%1$d saat %2$d dəq" - "%1$d dəqiqə" - "%1$d dəq" - "%1$d dəq %2$d san" - "%1$d dəq %2$d san" - "%1$d saniyə" - "%1$d saniyə" "Başlıqsız" "(Telefon nömrəsi yoxdur)" "Naməlum" @@ -95,11 +79,13 @@ "Səsli/təcili xidmət yoxdur" "Müvəqqəti olaraq məkanda mobil şəbəkə tərəfindən təklif edilmir" "Şəbəkəyə daxil olmaq mümkün deyil" - "Qəbulu inkişaf etdirmək üçün seçilmiş növü Sistem > Şəbəkə və İnternet > Mobil şəbəkə > Tərcih edilən şəbəkə növü bölməsində dəyişə bilərsiniz." + "Qəbulu inkişaf etdirmək üçün seçilmiş növü Ayarlar > Şəbəkə və İnternet > Mobil şəbəkə > Tərcih edilən şəbəkə növü bölməsində dəyişə bilərsiniz." + "Wi‑Fi zəngi aktivdir" + "Təcili zənglər üçün mobil şəbəkə tələb olunur." "Siqnallar" "Zəng yönləndirmə" "Təcili geriyə zəng rejimi" - "Mobil data siqnalları" + "Mobil data statusu" "SMS mesajları" "Səsli e-poçt mesajları" "Wi-Fi zəngi" @@ -1780,4 +1766,5 @@ "SIM təmin edilməyib" "SIM-ə icazə verilmir" "Telefona icazə verilmir" + "Popap Pəncərəsi" diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 6203907099b295635eaaeea7958cd026848c7b7b..5f1ca49c610559ab6df41c01d34b767d81fd12df 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -27,18 +27,6 @@ "TB" "PB" "%1$s %2$s" - "%1$d dana" - "%1$d dan %2$d s" - "%1$d dan %2$d s" - "%1$d s" - "%1$d s %2$d min" - "%1$d s %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d sek" - "%1$d min %2$d sek" - "%1$d sek" - "%1$d sek" "<Bez naslova>" "(Nema broja telefona)" "Nepoznato" @@ -91,15 +79,12 @@ "Usluga nije dobavljena." "Ne možete da promenite podešavanje ID-a korisnika." "Nema usluge prenosa podataka" - "Nema usluge za hitne pozive" + "Hitni pozivi nisu mogući" "Nema glasovne usluge" "Nema glasovne usluge/usluge za hitne pozive" - "Mobilni operater je privremeno suspendovao uslugu prenosa podataka na ovoj lokaciji" - "Mobilni operater je privremeno suspendovao hitne pozive na ovoj lokaciji" - "Mobilni operater je privremeno suspendovao glasovne pozive na ovoj lokaciji" - "Mobilni operater je privremeno suspendovao glasovne i hitne pozive na ovoj lokaciji" + "Privremeno je onemogućeno na mobilnoj mreži na vašoj lokaciji" "Povezivanje sa mrežom nije uspelo" - "Da biste poboljšali prijem, probajte da promenite izabrani tip u odeljku Sistem > Mreža i internet > Mobilne mreže > Željeni tip mreže." + "Da biste poboljšali prijem, probajte da promenite izabrani tip u odeljku Podešavanja > Mreža i internet > Mobilne mreže > Željeni tip mreže." "Obaveštenja" "Preusmeravanje poziva" "Režim za hitan povratni poziv" @@ -135,7 +120,7 @@ "Pretraživanje usluge" "Pozivanje preko Wi-Fi-ja" - "Da biste upućivali pozive i slali poruke preko Wi-Fi-ja, prvo zatražite od mobilnog operatera da vam omogući ovu uslugu. Zatim u Podešavanjima ponovo uključite Pozivanje preko Wi-Fi-ja." + "Da biste upućivali pozive i slali poruke preko Wi-Fi-ja, prvo zatražite od mobilnog operatera da vam omogući ovu uslugu. Zatim u Podešavanjima ponovo uključite Pozivanje preko Wi-Fi-ja. (kôd greške: %1$s)" "Registrujte se kod mobilnog operatera" @@ -1131,6 +1116,13 @@ Otvorene Wi-Fi mreže su dostupne Otvorene Wi-Fi mreže su dostupne + "Povežite se sa otvorenom Wi‑Fi mrežom" + "Povezujete se sa otvorenom Wi‑Fi mrežom" + "Povezali ste se sa Wi‑Fi mrežom" + "Povezivanje sa Wi‑Fi mrežom nije uspelo" + "Dodirnite da biste videli sve mreže" + "Poveži" + "Sve mreže" "Prijavljivanje na Wi-Fi mrežu" "Prijavite se na mrežu" @@ -1212,7 +1204,7 @@ "Dodirnite za još opcija." "Dodatna oprema za audio sadržaj nije podržana" "Dodirnite za više informacija" - "Otklanjanje grešaka sa USB-a je uspostavljeno" + "Otklanjanje grešaka sa USB-a je omogućeno" "Dodirnite da biste onemogućili otklanjanje grešaka sa USB-a." "Izaberite da biste onemogućili otklanjanja grešaka sa USB-a." "Izveštaj o grešci se generiše…" @@ -1228,8 +1220,7 @@ "Dodirnite da biste izabrali jezik i raspored" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - - + "Prikaz preko drugih aplikacija" "Aplikacija %s se prikazuje preko drugih aplikacija" "%s se prikazuje preko drugih aplik." "Ako ne želite ovu funkciju za %s, dodirnite da biste otvorili podešavanja i isključili je." @@ -1812,9 +1803,11 @@ "Odmah se sklonite iz priobalnih regiona i oblasti pored reka na neko bezbednije mesto, na primer, na neko uzvišenje." "Ostanite mirni i potražite sklonište u okolini." "Testiranje poruka u hitnim slučajevima" + "Odgovori" "SIM kartica nije dozvoljena" "SIM kartica nije podešena" "SIM kartica nije dozvoljena" "Telefon nije dozvoljen" + "Iskačući prozor" diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index db163bfd61fde7e172b34c6975209ee493e6b0d0..7ec47510e490b8bb584ab9109e322343bee24584 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -27,18 +27,6 @@ "Тб" "Пб" "%1$s %2$s" - "%1$d сут" - "%1$d дз. %2$d гадз" - "%1$d дз. %2$d гадз" - "%1$d гадз" - "%1$d гадз %2$d хв" - "%1$d гадз %2$d хв" - "%1$d хв" - "%1$d хвіліна" - "%1$d хв %2$d с" - "%1$d хв %2$d с" - "%1$d с" - "%1$d секунда" "<Без назвы>" "(Няма нумара тэлефона)" "Невядома" @@ -92,15 +80,12 @@ "Служба не прадастаўляецца." "Вы не можаце змяніць налады ідэнтыфікатара абанента, якi тэлефануе." "Няма сэрвісу перадачы даных" - "Няма сэрвісу экстранных выклікаў" + "Немагчыма выклікаць экстраную дапамогу" "Няма сэрвісу галасавых выклікаў" "Няма сэрвісу галасавых / экстранных выклікаў" - "Ваш аператар часова прыпыніў працу сэрвісу перадачы даных у гэтым месцы" - "Ваш аператар часова прыпыніў працу сэрвісу экстранных выклікаў у гэтым месцы" - "Ваш аператар часова прыпыніў працу сэрвісу галасавых выклікаў у гэтым месцы" - "Ваш аператар часова прыпыніў працу сэрвісу галасавых і экстранных выклікаў у гэтым месцы" + "Часова не прапаноўваецца сеткай мабільнай сувязі ў вашым месцазанходжанні" "Немагчыма падключыцца да сеткі" - "Каб палепшыць якасць прыёму, паспрабуйце змяніць тып, выбраны ў меню \"Сістэма > Сетка і інтэрнэт > Мабільныя сеткі > Прыярытэтны тып сеткі\"." + "Каб палепшыць якасць прыёму, паспрабуйце змяніць тып, выбраны ў меню \"Налады > Сетка і інтэрнэт > Мабільныя сеткі > Прыярытэтны тып сеткі\"." "Абвесткі" "Пераадрасацыя выкліку" "Рэжым экстраннага зваротнага выкліку" @@ -136,7 +121,7 @@ "Пошук службы" "Wi-Fi-тэлефанія" - "Каб рабіць выклікі і адпраўляць паведамленні па Wi-Fi, спачатку папрасіце свайго аператара наладзіць гэту паслугу. Затым зноў уключыце Wi-Fi-тэлефанію ў меню Налады." + "Каб рабіць выклікі і адпраўляць паведамленні па Wi-Fi, спачатку папрасіце свайго аператара наладзіць гэту паслугу. Затым зноў уключыце Wi-Fi-тэлефанію ў меню Налады. (Код памылкі: %1$s)" "Зарэгіструйцеся ў свайго аператара" @@ -1153,6 +1138,13 @@ адкрытых сетак Wi-Fi даступна адкрытай сеткі Wi-Fi даступна + "Падключыцеся да адкрытай сеткі Wi-Fi" + "Ідзе падключэнне да адкрытай сеткі Wi‑Fi" + "Выканана падключэнне да адкрытай сеткі Wi‑Fi" + "Не атрымалася падключыцца да адкрытай сеткі Wi‑Fi" + "Дакраніцеся, каб убачыць усе сеткі" + "Падключыцца" + "Усе сеткі" "Уваход у сетку Wi-Fi" "Увайдзіце ў сетку" @@ -1250,8 +1242,7 @@ "Дакраніцеся, каб выбраць мову і раскладку" " АБВГДЕЁЖЗІЙКЛМНОПРСТУЎФХЦЧШ\'ЫЬЭЮЯ" " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - - + "Паказваць паверх іншых праграм" "%s паказваецца паверх іншых праграм" "%s паказв. паверх іншых праграм" "Калі вы не хочаце, каб праграма %s выкарыстоўвала гэту функцыю, дакраніцеся, каб адкрыць налады і адключыць гэта." @@ -1846,9 +1837,11 @@ "Неадкладна эвакуіруйцеся з прыбярэжных раёнаў у больш бяспечнае месца, напрыклад на ўзвышша." "Заставайцеся спакойнымі і пашукайце прытулак паблізу." "Праверка экстранных паведамленняў" + "Адказаць" "SIM-карта не дапускаецца" "SIM-карты няма" "SIM-карта не дапускаецца" "Тэлефон не дапускаецца" + "Выплыўное акно" diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 6c9b8d6c8ee39c089e002ab26da9b22d30f41443..461418c23b203d18644947a0f22f083aa6dde52c 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -21,24 +21,8 @@ "Б" - "КБ" - "МБ" - "ГБ" - "ТБ" "ПБ" "%1$s %2$s" - "%1$d дни" - "%1$d ден %2$d ч" - "%1$d ден %2$d ч" - "%1$d ч" - "%1$d ч %2$d мин" - "%1$d ч %2$d мин" - "%1$d мин" - "%1$d мин" - "%1$d мин %2$d сек" - "%1$d мин %2$d сек" - "%1$d сек" - "%1$d сек" "<Без заглавие>" "(Няма телефонен номер)" "Неизвестно" @@ -95,11 +79,13 @@ "Няма услуга за гласови/спешни обаждания" "Временно не се предлага от мобилната мрежа в местоположението ви" "Не може да се установи връзка с мрежата" - "За да подобрите сигнала, променете избрания тип мрежа от „Система“ > „Мрежа и интернет“ > „Мобилни мрежи“ > „Предпочитан тип мрежа“." + "За да подобрите сигнала, променете избрания тип мрежа от „Настройки“ > „Мрежа и интернет“ > „Мобилни мрежи“ > „Предпочитан тип мрежа“." + "Функцията за обаждания през Wi-Fi е активна" + "За спешните обаждания се изисква мобилна мрежа." "Сигнали" "Пренасочване на обаждания" "Режим на обратно обаждане при спешност" - "Сигнали за мобилните данни" + "Състояние на мобилните данни" "SMS съобщения" "Съобщения в гласовата поща" "Обаждания през Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM картата не е обезпечена" "SIM картата не е разрешена" "Телефонът не е разрешен" + "Изскачащ прозорец" diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 540af9c4909fb99f900adce926265d70f97141af..aab14c46dd30bfbe6ce4735da79490a0c9632cd1 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -21,24 +21,8 @@ "বাইট" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d দিন" - "%1$d দিন %2$d ঘণ্টা" - "%1$d দিন %2$d ঘণ্টা" - "%1$d ঘণ্টা" - "%1$d ঘণ্টা %2$d মিনিট" - "%1$d ঘণ্টা %2$d মিনিট" - "%1$d মিনিট" - "%1$d মিনিট" - "%1$d মিনিট %2$d সেকেন্ড" - "%1$d মিনিট %2$d সেকেন্ড" - "%1$d সেকেন্ড" - "%1$d সেকেন্ড" "<শিরোনামহীন>" "(কোনো ফোন নম্বর নেই)" "অজানা" @@ -95,11 +79,13 @@ "কোনো ভয়েস/জরুরী পরিষেবা নেই" "সাময়িকভাবে মোবাইল নেটওয়ার্ক আপনার অবস্থানে এই পরিষেবা দিচ্ছে না" "নেটওয়ার্কের সিগন্যাল নেই" - "রিসেপশন উন্নত করতে সিস্টেম > নেটওয়ার্ক এবং ইন্টারনেট > মোবাইল নেটওয়ার্ক > পছন্দের নেটওয়ার্কের ধরণ এ গিয়ে নির্বাচিত নেটওয়ার্কের ধরণ পরিবর্তন করে দেখুন।" + "রিসেপশন উন্নত করতে সেটিংস > নেটওয়ার্ক এবং ইন্টারনেট > মোবাইল নেটওয়ার্ক > পছন্দের নেটওয়ার্কের ধরণ এ গিয়ে নির্বাচিত নেটওয়ার্কের ধরণ পরিবর্তন করে দেখুন।" + "ওয়াই-ফাই কলিং সক্রিয় আছে" + "জরুরি কলের জন্য মোবাইল নেটওয়ার্ক থাকতে হবে।" "সতর্কতা" "কল ফরওয়ার্ড করা" "জরুরি কলব্যাক মোড" - "মোবাইল ডেটার সতর্কবার্তা" + "মোবাইল ডেটার স্থিতি" "এসএমএস মেসেজ" "ভয়েসমেল মেসেজ" "ওয়াই-ফাই কলিং" @@ -982,7 +968,7 @@ "পাঠ্য ক্রিয়াগুলি" "ইমেল" "ফোন করুন" - "মানচিত্র" + "ম্যাপ" "ব্রাউজার" "স্টোরেজ পূর্ণ হতে চলেছে" "কিছু কিছু সিস্টেম ক্রিয়াকলাপ কাজ নাও করতে পারে" @@ -1074,7 +1060,7 @@ "%1$s মেমরি সীমা অতিক্রম করেছে" "অনেক ডেটা সংগ্রহ করা হয়েছে; শেয়ার করার জন্য ট্যাপ করুন" "হিপ ডাম্প শেয়ার করবেন?" - "%1$s প্রক্রিয়াটি তার %2$s এর মেমরি সীমা অতিক্রম করেছে৷ তার বিকাশকারীর সাথে শেয়ার করার জন্য একটি হিপ ডাম্প উপলব্ধ৷ সতর্কতা অবলম্বন করুন: এই হিপ ডাম্পে অ্যাপ্লিকেশানটির অ্যাক্সেস আছে এমন আপনার যেকোন ব্যক্তিগত তথ্য থাকতে পারে৷" + "%1$s প্রক্রিয়াটি তার %2$s এর মেমরি সীমা অতিক্রম করেছে৷ তার ডেভেলপারের সাথে শেয়ার করার জন্য একটি হিপ ডাম্প উপলব্ধ৷ সতর্কতা অবলম্বন করুন: এই হিপ ডাম্পে অ্যাপ্লিকেশানটির অ্যাক্সেস আছে এমন আপনার যেকোন ব্যক্তিগত তথ্য থাকতে পারে৷" "পাঠ্যের জন্য একটি কাজ বেছে নিন" "রিং ভলিউম" "মিডিয়ার ভলিউম" @@ -1740,7 +1726,7 @@ "ফটো ও ছবিগুলি" "সামাজিক ও যোগাযোগ" "খবর ও পত্রিকাগুলি" - "মানচিত্র ও নেভিগেশান" + "ম্যাপ ও নেভিগেশান" "উৎপাদনশীলতা" "ডিভাইসের স্টোরেজ" "USB ডিবাগিং" @@ -1780,4 +1766,5 @@ "সিম প্রস্তুত নয়" "সিম অনুমোদিত নয়" "ফোন অনুমোদিত নয়" + "পপ-আপ উইন্ডো" diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 63a3945698439b115fe71c3832e4802dd5028347..1c1ec25652541938b0a91844177231d0d4e892cf 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -27,18 +27,6 @@ "TB" "PB" "%1$s %2$s" - "%1$d dana" - "%1$d d i %2$d h" - "%1$d d i %2$d h" - "%1$d sati" - "%1$d h i %2$d min" - "%1$d h i %2$d min" - "%1$d min" - "%1$d min" - "%1$d min i %2$d s" - "%1$d min i %2$d s" - "%1$d sek" - "%1$d sek" "<Bez naslova>" "(Nema broja telefona)" "Nepoznato" @@ -91,15 +79,12 @@ "Uslugu nije moguće koristiti." "Ne možete promijeniti postavke ID-a pozivaoca." "Nema usluge prijenosa mobilnih podataka" - "Nema usluge za hitne slučajeve" + "Nema hitnih poziva" "Nema usluge govornih poziva" "Nema govornih/hitnih usluga" - "Vaš operater je privremeno obustavio uslugu prijenosa mobilnih podataka na ovoj lokaciji" - "Vaš operater je privremeno obustavio hite pozive na ovoj lokaciji" - "Vaš operater je privremeno obustavio govorne pozive na ovoj lokaciji" - "Vaš operater je na ovoj lokaciji privremeno obustavio govorne i hitne pozive." + "Trenutno nije u ponudi mobilne mreže na vašoj lokaciji" "Nije moguće dosegnuti mrežu" - "Za poboljšanje prijema, pokušajte promijeniti tip odabran u meniju Sistem > Mreža i internet > Mobilne mreže > Preferirani tip mreže." + "Da poboljšate prijem, pokušajte promijeniti odabranu vrstu u meniju Postavke < Mreža i internet < Mobilne mreže < Preferirana vrsta mreže." "Upozorenja" "Preusmjeravanje poziva" "Način rada za hitni povratni poziv" @@ -135,7 +120,7 @@ "Traženje usluge" "Wi-Fi pozivanje" - "Da biste pozivali i slali poruke preko Wi-Fi-ja, prvo zatražite od operatera da postavi tu uslugu. Potom u Postavkama ponovo uključite Wi-Fi pozivanje." + "Da biste pozivali i slali poruke koristeći Wi-Fi mrežu, prvo zatražite od operatera da postavi tu uslugu. Zatim ponovo uključite Wi-Fi pozivanje u Postavkama. (Kôd greške: %1$s)" "Registrirajte se kod svog operatera" @@ -210,10 +195,10 @@ "Ažuriranje sistema Android" "Priprema za ažuriranje..." "Obrađuje se paket ažuriranja..." - "Ponovno se pokreće..." + "Ponovno pokretanje......" "Vraćanje na fabričke postavke" - "Ponovno se pokreće..." - "Gašenje u toku…" + "Ponovno pokretanje......" + "Isključivanje...…" "Vaš tablet će se isključiti." "TV će se isključiti." "Sat će se isključiti." @@ -453,7 +438,7 @@ "izmjene podijeljenog povezivanja" "Dozvoljava aplikaciji izmjenu stanja povezanosti na podijeljenu mrežu." "pregled Wi-Fi veza" - "Omogućava aplikaciji pregled informacija o Wi-Fi mrežama, npr. da li je Wi-Fi omogućen i naziv povezanih Wi-Fi uređaja." + "Omogućava aplikaciji pregled informacija o Wi-Fi mrežama, npr. je li Wi-Fi omogućen i imena povezanih Wi-Fi uređaja." "uspostavljanje i prekidanje Wi-Fi veze" "Omogućava aplikaciji uspostavljanje i prekidanje veze sa Wi-Fi pristupnim tačkama, kao i promjenu konfiguracije uređaja za Wi-Fi mreže." "dozvoljava prijem paketa kroz Wi-Fi Multicast" @@ -1133,6 +1118,13 @@ Otvorene Wi-Fi mreže su dostupne Otvorene Wi-Fi mreže su dostupne + "Povežite se na otvorenu Wi‑Fi mrežu" + "Povezivanje na otvorenu Wi‑Fi mrežu" + "Povezani ste na Wi‑Fi mrežu" + "Nije se moguće povezati na Wi‑Fi mrežu" + "Dodirnite da vidite sve mreže" + "Povežite se" + "Sve mreže" "Prijavljivanje na Wi-Fi mrežu" "Prijava na mrežu" @@ -1233,8 +1225,7 @@ "Dodirnite za odabir jezika i rasporeda" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - - + "Prikazivanje preko drugih aplikacija" "Aplikacija %s prekriva ostale aplikacije" "Aplikacija %s prekriva druge apl." "Ako ne želite da %s koristi ovu funkciju, dodirnite da otvorite postavke i isključite je." @@ -1290,7 +1281,7 @@ "Omogućava aplikaciji da traži dozvolu za zanemarivanje optimizacije baterije za tu aplikaciju." "Dodirnite dvaput za kontrolu uvećanja" "Dodavanje vidžeta nije uspjelo." - "Počni" + "Započni" "Pretraži" "Poslati" "Naprijed" @@ -1518,7 +1509,7 @@ "Koristi prečicu" "Prečica za pristupačnost je uključila uslugu %1$s" "Prečica za pristupačnost je isključila uslugu %1$s" - "Izaberite funkciju koja će se koristiti kada dodirnete dugme Pristupačnost:" + "Odaberite funkciju koja će se koristiti kada dodirnete dugme Pristupačnost:" "Da promijenite funkcije, dodirnite i držite dugme Pristupačnost." "Uvećanje" "Trenutni korisnik %1$s." @@ -1709,7 +1700,7 @@ "Skupi" "Ne ometaj" "Odmor" - "Radni dan uveče" + "Radni dan uvečer" "Vikend" "Događaj" "Ton isključila aplikacija %1$s" @@ -1745,7 +1736,7 @@ "Da li dozvoljavate da %1$s kreira novog korisnika za %2$s (Korisnik sa ovim nalogom već postoji)?" "Dodaj jezik" "Izbor regije" - "Ukucajte naziv jezika" + "Upišite ime jezika" "Predloženo" "Svi jezici" "Sve regije" @@ -1818,9 +1809,11 @@ "Odmah se evakuirajte iz priobalnih područja i područja oko rijeka na sigurnije mjesto kao što su viši predjeli." "Ostanite smireni i potražite sklonište u blizini." "Test poruka za hitne slučajeve" + "Odgovori" "SIM kartica nije dozvoljena" "SIM kartica nije dodijeljena" "SIM kartica nije dozvoljena" "Telefon nije dozvoljen" + "Iskočni prozor" diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index b1d8794316797bcd4981dce09dfa5e902eb92b73..6c02eb2b3ebcdf6613d5f1a16c8776f541616cfd 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dies" - "%1$d dia %2$d h" - "%1$d dia %2$d h" - "%1$d hores" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d minuts" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Sense títol>" "(Sense número de telèfon)" "Desconegut" @@ -95,11 +79,13 @@ "Sense servei de veu/emergència" "La xarxa mòbil de la teva ubicació temporalment no ofereix aquest servei" "No es pot accedir a la xarxa" - "Per millorar la recepció, prova de canviar-ne el tipus a Sistema > Xarxa i Internet > Xarxes mòbils > Tipus de xarxa preferit." + "Per millorar la recepció, prova de canviar el tipus de xarxa a Configuració > Xarxa i Internet > Xarxes mòbils > Tipus de xarxa preferit." + "La funció Trucades per Wi Fi està activada" + "Per poder fer trucades d\'emergència, cal tenir connexió a una xarxa mòbil." "Alertes" "Desviació de trucades" "Mode de devolució de trucada d\'emergència" - "Alertes de dades mòbils" + "Estat de les dades mòbils" "Missatges SMS" "Missatges de veu" "Trucades per Wi-Fi" @@ -282,7 +268,7 @@ "Emmagatzematge" "accedir a fotos, contingut multimèdia i fitxers del dispositiu" "Micròfon" - "enregistrar àudio" + "gravar àudio" "Càmera" "fer fotos i vídeos" "Telèfon" @@ -397,12 +383,12 @@ "Aquesta aplicació pot obtenir la teva ubicació a partir de fonts de xarxa, com ara torres de telefonia mòbil i xarxes Wi-Fi. Aquests serveis d\'ubicació han d\'estar activats i disponibles al telèfon perquè l\'aplicació els pugui utilitzar." "canviar la configuració d\'àudio" "Permet que l\'aplicació modifiqui la configuració d\'àudio general, com ara el volum i l\'altaveu de sortida que es fa servir." - "enregistrar àudio" - "Aquesta aplicació pot enregistrar àudio amb el micròfon en qualsevol moment." + "gravar àudio" + "Aquesta aplicació pot gravar àudio amb el micròfon en qualsevol moment." "enviar ordres a la SIM" "Permet que l\'aplicació enviï ordres a la SIM. Això és molt perillós." "fer fotos i vídeos" - "Aquesta aplicació pot fer fotos i enregistrar vídeos amb la càmera en qualsevol moment." + "Aquesta aplicació pot fer fotos i gravar vídeos amb la càmera en qualsevol moment." "controlar la vibració" "Permet que l\'aplicació controli el vibrador." "trucar directament a números de telèfon" @@ -453,7 +439,7 @@ "Permet que l\'aplicació rebi paquets enviats a tots els dispositius d\'una xarxa Wi-Fi mitjançant les adreces multidifusió, no només a la teva tauleta. Fa servir més energia que el mode que no és multidifusió." "Permet que l\'aplicació rebi paquets enviats a tots els dispositius d\'una xarxa Wi-Fi mitjançant les adreces de multidifusió, no només al televisor. Fa servir més energia que el mode que no és de multidifusió." "Permet que l\'aplicació rebi paquets enviats a tots els dispositius d\'una xarxa Wi-Fi mitjançant les adreces multidifusió, no només al teu telèfon. Fa servir més energia que el mode que no és multidifusió." - "accés a la configuració de Bluetooth" + "accés a la configuració del Bluetooth" "Permet que l\'aplicació configuri la tauleta Bluetooth local i que detecti dispositius remots i s\'hi vinculi." "Permet que l\'aplicació configuri el televisor Bluetooth local, cerqui dispositius remots i s\'hi vinculi." "Permet que l\'aplicació configuri el telèfon Bluetooth local i que detecti dispositius remots i s\'hi vinculi." @@ -464,9 +450,9 @@ "Permet que l\'aplicació connecti el televisor a xarxes WiMAX, o bé que el desconnecti." "Permet que l\'aplicació connecti i desconnecti el telèfon de les xarxes WiMAX." "vincula amb dispositius Bluetooth" - "Permet que l\'aplicació visualitzi la configuració de Bluetooth de la tauleta i que estableixi i accepti connexions amb dispositius sincronitzats." - "Permet que l\'aplicació consulti la configuració de Bluetooth del televisor i estableixi i accepti connexions amb dispositius vinculats ." - "Permet que una aplicació visualitzi la configuració de Bluetooth del telèfon i que estableixi i accepti connexions amb els dispositius sincronitzats." + "Permet que l\'aplicació visualitzi la configuració del Bluetooth de la tauleta i que estableixi i accepti connexions amb dispositius sincronitzats." + "Permet que l\'aplicació consulti la configuració del Bluetooth del televisor i estableixi i accepti connexions amb dispositius vinculats ." + "Permet que una aplicació visualitzi la configuració del Bluetooth del telèfon i que estableixi i accepti connexions amb els dispositius sincronitzats." "controlar Comunicació de camp proper (NFC)" "Permet que l\'aplicació es comuniqui amb les etiquetes, les targetes i els lectors de Comunicació de camp proper (NFC)." "desactivació del bloqueig de pantalla" @@ -841,8 +827,8 @@ "Permet que l\'aplicació defineixi una alarma en una aplicació de despertador instal·lada. És possible que algunes aplicacions de despertador no incorporin aquesta funció." "afegeix bústia de veu" "Permet que l\'aplicació afegeixi missatges a la safata d\'entrada de la bústia de veu." - "Modifica els permisos d\'ubicació geogràfica del navegador" - "Permet que l\'aplicació modifiqui els permisos d\'ubicació geogràfica del navegador. Les aplicacions malicioses poden utilitzar-ho per enviar la informació d\'ubicació a llocs web arbitraris." + "Modifica els permisos d\'ubicació del navegador" + "Permet que l\'aplicació modifiqui els permisos d\'ubicació del navegador. Les aplicacions malicioses poden utilitzar-ho per enviar la informació d\'ubicació a llocs web arbitraris." "Voleu que el navegador recordi aquesta contrasenya?" "Ara no" "Recorda-ho" @@ -1078,14 +1064,14 @@ "Tria una acció per al text" "Volum del timbre" "Volum de multimèdia" - "S\'està reproduint a través de Bluetooth" + "S\'està reproduint per Bluetooth" "S\'ha establert el so de silenci" "Volum en trucada" - "Volum en trucada Bluetooth" + "Volum en trucada per Bluetooth" "Volum de l\'alarma" "Volum de notificacions" "Volum" - "Volum de Bluetooth" + "Volum del Bluetooth" "Volum del so" "Volum de trucada" "Volum de multimèdia" @@ -1203,7 +1189,7 @@ "COMPARTEIX" "REBUTJA" "Canvia el teclat" - "Mantén-lo a la pantalla mentre el teclat físic està actiu" + "Mantén-lo en pantalla mentre el teclat físic està actiu" "Mostra el teclat virtual" "Configura el teclat físic" "Toca per seleccionar l\'idioma i el disseny" @@ -1289,7 +1275,7 @@ "Fons de pantalla" "Canvia el fons de pantalla" "Oient de notificacions" - "Processador d\'RV" + "Processador de RV" "Proveïdor de condicions" "Servei de classificació de notificacions" "VPN activada" @@ -1780,4 +1766,5 @@ "SIM no proporcionada" "SIM no compatible" "Telèfon no no compatible" + "Finestra emergent" diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 9003a1d97f465e923a932a005bcae1da3a66523c..a80dac578a2bdbebd7183ffe43422640cd7984f3 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d d" - "%1$d d %2$d h" - "%1$d d %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Bez názvu>" "(žádné telefonní číslo)" "Není známo" @@ -97,11 +81,13 @@ "Hlasová ani tísňová volání nejsou k dispozici" "Mobilní síť ve vaší oblasti tuto službu dočasně nenabízí" "K síti se nelze připojit" - "Chcete-li zlepšit příjem, zkuste změnit vybraný typ sítě v nastavení Systém > Síť a internet > Mobilní sítě > Preferovaný typ sítě." + "Chcete-li zlepšit příjem, zkuste změnit vybraný typ sítě v Nastavení > Síť a internet > Mobilní sítě > Preferovaný typ sítě." + "Volání přes Wi-Fi je aktivní" + "Tísňová volání vyžadují mobilní síť." "Upozornění" "Přesměrování hovorů" "Režim tísňového zpětného volání" - "Upozornění na mobilní data" + "Stav mobilních dat" "Zprávy SMS" "Hlasové zprávy" "Volání přes Wi-Fi" @@ -1848,4 +1834,5 @@ "SIM karta není poskytována" "SIM karta není povolena" "Telefon není povolen" + "Vyskakovací okno" diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 9c1d3b872ce48f0e651f9e323464f993693a6dcb..07ccb6027133ea2440e328981a01a8ebcd628c1f 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -21,24 +21,8 @@ "b" - "kB" - "Mb" - "GB" - "Tb" "Pb" "%1$s %2$s" - "%1$d dage" - "%1$d dag %2$d t." - "%1$d dag %2$d t." - "%1$d timer" - "%1$d t. %2$d min." - "%1$d t. %2$d min." - "%1$d min." - "%1$d min." - "%1$d min. %2$d s" - "%1$d min. %2$d s" - "%1$d sek." - "%1$d sek." "<Uden titel>" "(Intet telefonnummer)" "Ukendt" @@ -95,11 +79,13 @@ "Ingen tale- og nødtjenester" "Tilbydes i øjeblikket ikke af mobilnetværket på din placering" "Der er ingen forbindelse til netværket" - "Hvis du vil forbedre signalet, kan du prøve at ændre den valgte netværkstype i System > Netværk og internet > Mobilnetværk > Foretrukken netværkstype." + "Hvis du vil forbedre signalet, kan du prøve at ændre den valgte netværkstype i Indstillinger > Netværk og internet > Mobilnetværk > Foretrukken netværkstype." + "Wi‑Fi-opkald er aktiveret" + "Nødopkald kræver adgang til et mobilnetværk." "Underretninger" "Viderestilling af opkald" "Nødtilbagekaldstilstand" - "Underretninger om mobildata" + "Status for mobildata" "Sms-beskeder" "Talebeskeder" "Wi-Fi-opkald" @@ -1095,7 +1081,7 @@ "Ingen" "Ringetoner" "Alarmlyde" - "Meddelelseslyde" + "Underretningslyde" "Ukendt" Tilgængelige Wi-Fi-netværk @@ -1642,7 +1628,7 @@ I %1$d min. (indtil kl. %2$s) - I %1$d timer (indtil %2$s) + I %1$d time (indtil %2$s) I %1$d timer (indtil %2$s) @@ -1658,7 +1644,7 @@ I %d min. - I %d timer + I %d time I %d timer @@ -1780,4 +1766,5 @@ "SIM-kortet er ikke aktiveret" "SIM-kortet har ikke adgangstilladelse" "Telefonen har ikke adgangstilladelse" + "Pop op-vindue" diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 269342cbc5dea6ca529d8ec1e2bf10fc9ffddb3e..7f3709957c7d68a73573f2f16772cb71533b6e95 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d Tage" - "%1$d Tag %2$d Std." - "%1$d Tag %2$d Std." - "%1$d Std." - "%1$d Std. %2$d Min." - "%1$d Std. %2$d Min." - "%1$d Min." - "%1$d min" - "%1$d Min. %2$d Sek." - "%1$d Min. %2$d Sek." - "%1$d Sek." - "%1$d Sek." "<Unbenannt>" "(Keine Telefonnummer)" "Unbekannt" @@ -95,11 +79,13 @@ "Keine Anrufe/Notrufe" "Derzeit nicht im Mobilfunknetz in deiner Region verfügbar" "Netzwerk nicht erreichbar" - "Der Empfang lässt sich möglicherweise verbessern, indem du unter \"System\" > \"Netzwerk\" & \"Internet\" > \"Mobilfunknetze\" > \"Bevorzugter Netzwerktyp\" einen anderen Typ auswählst." + "Der Empfang lässt sich möglicherweise verbessern, indem du unter \"Einstellungen\" > \"Netzwerk\" & \"Internet\" > \"Mobilfunknetze\" > \"Bevorzugter Netzwerktyp\" einen anderen Typ auswählst." + "\"Anrufe über WLAN\" ist aktiv" + "Für Notrufe ist ein Mobilfunknetz erforderlich." "Warnmeldungen" "Anrufweiterleitung" "Notfallrückrufmodus" - "Warnmeldungen für mobile Daten" + "Status der mobilen Datennutzung" "SMS" "Mailboxnachrichten" "Anrufe über WLAN" @@ -1780,4 +1766,5 @@ "SIM nicht eingerichtet" "SIM-Karte nicht zulässig" "Smartphone nicht zulässig" + "Pop-up-Fenster" diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index d8abf8a2f2a6e4ad4ad4df130bab2a71ba46aa2c..c7e3eeea5dd0cebe93a61d0f35954ae0ad2aec8c 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ημέρες" - "%1$d ημ. %2$d ώρες" - "%1$d ημ. %2$d ώρα" - "%1$d ώρες" - "%1$d ώρα %2$d λ" - "%1$d ώρα %2$d λ" - "%1$d λεπτά" - "%1$d λεπτά" - "%1$d λ. %2$d δευτ." - "%1$d λ %2$d δευτ." - "%1$d δευτ." - "%1$d δευτ." "<Χωρίς τίτλο>" "(Δεν υπάρχει τηλεφωνικός αριθμός)" "Άγνωστο" @@ -95,11 +79,13 @@ "Δεν υπάρχει φωνητική υπηρεσία/υπηρεσία έκτακτης ανάγκης" "Δεν προσφέρεται προσωρινά από το δίκτυο κινητής τηλεφωνίας στην τοποθεσία σας" "Δεν είναι δυνατή η σύνδεση στο δίκτυο" - "Για να βελτιώσετε τη λήψη, δοκιμάστε να αλλάξετε τον επιλεγμένο τύπο από το Σύστημα > Δίκτυο και διαδίκτυο > Δίκτυα κινητής τηλεφωνίας > Προτιμώμενος τύπος δικτύου." + "Για να βελτιώσετε τη λήψη, δοκιμάστε να αλλάξετε τον επιλεγμένο τύπο από τις Ρυθμίσεις > Δίκτυο και διαδίκτυο > Δίκτυα κινητής τηλεφωνίας > Προτιμώμενος τύπος δικτύου." + "Η κλήση Wi‑Fi είναι ενεργή" + "Για κλήσεις έκτακτης ανάγκης, απαιτείται δίκτυο κινητής τηλεφωνίας." "Ειδοποιήσεις" "Προώθηση κλήσης" "Λειτουργία επιστροφής κλήσης έκτακτης ανάγκης" - "Ειδοποιήσεις δεδομένων κινητής τηλεφωνίας" + "Κατάσταση δεδομένων κινητής τηλεφωνίας" "Μηνύματα SMS" "Μηνύματα αυτόματου τηλεφωνητή" "Κλήση Wi-Fi" @@ -1780,4 +1766,5 @@ "Δεν παρέχεται κάρτα SIM" "Η κάρτα SIM δεν επιτρέπεται" "Το τηλέφωνο δεν επιτρέπεται" + "Αναδυόμενο παράθυρο" diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 8bbf74ac79b07dc5c8603833346d63ad2c05c1f7..31848b26603ff953f6013072b96f92e5438cd3af 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d days" - "%1$d day %2$d hrs" - "%1$d day %2$d hr" - "%1$d hrs" - "%1$d hr %2$d mins" - "%1$d hr %2$d min" - "%1$d mins" - "%1$d min" - "%1$d min %2$d secs" - "%1$d min %2$d sec" - "%1$d secs" - "%1$d sec" "<Untitled>" "(No phone number)" "Unknown" @@ -95,11 +79,13 @@ "No voice/emergency service" "Temporarily not offered by the mobile network at your location" "Can’t find network" - "To improve reception, try changing the type selected at System > Network & Internet > Mobile networks > Preferred network type." + "To improve reception, try changing the type selected at Settings > Network & Internet > Mobile networks > Preferred network type." + "Wi‑Fi calling is active" + "Emergency calls require a mobile network." "Alerts" "Call forwarding" "Emergency callback mode" - "Mobile data alerts" + "Mobile data status" "SMS messages" "Voicemail messages" "Wi-Fi Calling" @@ -1780,4 +1766,5 @@ "SIM not provisioned" "SIM not allowed" "Phone not allowed" + "Pop-Up Window" diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 8bbf74ac79b07dc5c8603833346d63ad2c05c1f7..31848b26603ff953f6013072b96f92e5438cd3af 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d days" - "%1$d day %2$d hrs" - "%1$d day %2$d hr" - "%1$d hrs" - "%1$d hr %2$d mins" - "%1$d hr %2$d min" - "%1$d mins" - "%1$d min" - "%1$d min %2$d secs" - "%1$d min %2$d sec" - "%1$d secs" - "%1$d sec" "<Untitled>" "(No phone number)" "Unknown" @@ -95,11 +79,13 @@ "No voice/emergency service" "Temporarily not offered by the mobile network at your location" "Can’t find network" - "To improve reception, try changing the type selected at System > Network & Internet > Mobile networks > Preferred network type." + "To improve reception, try changing the type selected at Settings > Network & Internet > Mobile networks > Preferred network type." + "Wi‑Fi calling is active" + "Emergency calls require a mobile network." "Alerts" "Call forwarding" "Emergency callback mode" - "Mobile data alerts" + "Mobile data status" "SMS messages" "Voicemail messages" "Wi-Fi Calling" @@ -1780,4 +1766,5 @@ "SIM not provisioned" "SIM not allowed" "Phone not allowed" + "Pop-Up Window" diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 8bbf74ac79b07dc5c8603833346d63ad2c05c1f7..31848b26603ff953f6013072b96f92e5438cd3af 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d days" - "%1$d day %2$d hrs" - "%1$d day %2$d hr" - "%1$d hrs" - "%1$d hr %2$d mins" - "%1$d hr %2$d min" - "%1$d mins" - "%1$d min" - "%1$d min %2$d secs" - "%1$d min %2$d sec" - "%1$d secs" - "%1$d sec" "<Untitled>" "(No phone number)" "Unknown" @@ -95,11 +79,13 @@ "No voice/emergency service" "Temporarily not offered by the mobile network at your location" "Can’t find network" - "To improve reception, try changing the type selected at System > Network & Internet > Mobile networks > Preferred network type." + "To improve reception, try changing the type selected at Settings > Network & Internet > Mobile networks > Preferred network type." + "Wi‑Fi calling is active" + "Emergency calls require a mobile network." "Alerts" "Call forwarding" "Emergency callback mode" - "Mobile data alerts" + "Mobile data status" "SMS messages" "Voicemail messages" "Wi-Fi Calling" @@ -1780,4 +1766,5 @@ "SIM not provisioned" "SIM not allowed" "Phone not allowed" + "Pop-Up Window" diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 99c1e4fce2f84e0e6e62c66f0a6d1b63d6bf22fd..857ada65031e40b471c9da01a8543014f7ca0006 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d días" - "%1$d día %2$d h" - "%1$d día %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Sin título>" "(No hay número de teléfono)" "Desconocido" @@ -95,11 +79,13 @@ "Sin servicio de voz/emergencia" "La red móvil de tu ubicación no ofrece este servicio de forma temporal" "No se puede establecer conexión con la red" - "Para mejorar la recepción, cambia el tipo de red. Selecciona Sistema > Internet y red > Redes móviles > Tipo de red preferido." + "Para mejorar la recepción, cambia el tipo de red. Selecciona Configuración > Internet y red > Redes móviles > Tipo de red preferido." + "Las llamadas con Wi-Fi están activadas" + "Las llamadas de emergencia requieren una red móvil." "Alertas" "Desvío de llamada" "Modo de devolución de llamada de emergencia" - "Alertas de datos móviles" + "Estado de datos móviles" "Mensajes SMS" "Mensajes del buzón de voz" "Llamada con Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM no provista" "SIM no permitida" "Teléfono no permitido" + "Ventana emergente" diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index d5216a950817aee1a8da5ea66b625336ff7e1645..1f468385adf22b83b785dc60372bb0356498fe1d 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d días" - "%1$d día %2$d h" - "%1$d día %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Sin título>" "(Sin número de teléfono)" "Desconocido" @@ -95,11 +79,13 @@ "Sin servicio de emergencia ni de voz" "La red móvil disponible en tu ubicación no ofrece esta opción de forma temporal" "No se puede establecer conexión con la red" - "Para mejorar la recepción, prueba a cambiar el tipo de red seleccionado en Sistema > Red e Internet > Redes móviles > Tipo de red preferido." + "Para mejorar la recepción, prueba a cambiar el tipo seleccionado en Ajustes > Red e Internet > Redes móviles > Tipo de red preferido." + "La llamada por Wi‑Fi está activada" + "Necesitas conectarte a una red móvil para hacer llamadas de emergencia." "Alertas" "Desvío de llamada" "Modo de devolución de llamada de emergencia" - "Alertas de datos móviles" + "Estado de los datos móviles" "Mensajes SMS" "Mensajes de voz" "Llamada por Wi-Fi" @@ -206,7 +192,7 @@ "Preparando para actualizar…" "Procesando paquete de actualización…" "Reiniciando…" - "Restablecer datos de fábrica" + "Restablecer estado de fábrica" "Reiniciando…" "Apagando..." "El tablet se apagará." @@ -567,9 +553,9 @@ "Bloquear la pantalla" "Controlar cómo y cuándo se bloquea la pantalla" "Borrar todos los datos" - "Borrar los datos del tablet sin avisar restableciendo datos de fábrica" + "Borrar los datos del tablet sin avisar restableciendo el estado de fábrica" "Borra los datos de la TV sin advertencia previa restableciendo la TV a los valores predeterminados de fábrica." - "Borrar los datos del teléfono sin avisar restableciendo datos de fábrica" + "Borrar los datos del teléfono sin avisar restableciendo el estado de fábrica" "Borrar datos del usuario" "Borra los datos del usuario en este tablet sin avisar." "Borra los datos del usuario en esta TV sin avisar." @@ -747,12 +733,12 @@ "Has fallado %1$d veces al dibujar el patrón de desbloqueo. Si fallas otras %2$d veces, deberás usar tus credenciales de acceso de Google para desbloquear el tablet.\n\n Inténtalo de nuevo dentro de %3$d segundos." "Has dibujado el patrón de desbloqueo incorrectamente %1$d veces. Si se producen %2$d intentos incorrectos más, deberás desbloquear la TV iniciando sesión en Google.\n\n Vuelve a intentarlo dentro de %3$d segundos." "Has fallado %1$d veces al dibujar el patrón de desbloqueo. Si fallas otras %2$d veces, deberás usar tus credenciales de acceso de Google para desbloquear el teléfono.\n\n Inténtalo de nuevo dentro de %3$d segundos." - "Has intentado desbloquear el tablet %1$d veces, pero no lo has conseguido. Si fallas %2$d veces más, se restablecerán los datos de fábrica y se perderán todos los datos del usuario." + "Has intentado desbloquear el tablet %1$d veces, pero no lo has conseguido. Si fallas %2$d veces más, se restablecerá el estado de fábrica y se perderán todos los datos del usuario." "Has intentado desbloquear la TV incorrectamente %1$d veces. Si se producen %2$d intentos incorrectos más, la TV se restablecerá a los valores predeterminados de fábrica y se perderán todos los datos del usuario." - "Has intentado desbloquear el teléfono %1$d veces, pero no lo has conseguido. Si fallas %2$d veces más, se restablecerán los datos de fábrica y se perderán todos los datos del usuario." - "Has intentado desbloquear el tablet %d veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo." + "Has intentado desbloquear el teléfono %1$d veces, pero no lo has conseguido. Si fallas %2$d veces más, se restablecerá el estado de fábrica y se perderán todos los datos del usuario." + "Has intentado desbloquear el tablet %d veces, pero no lo has conseguido. Se restablecerá el estado de fábrica del dispositivo." "Has intentando desbloquear la TV incorrectamente %d veces. La TV se restablecerá a los valores predeterminados de fábrica." - "Has intentado desbloquear el teléfono %d veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo." + "Has intentado desbloquear el teléfono %d veces, pero no lo has conseguido. Se restablecerá el estado de fábrica del dispositivo." "Espera %d segundos y vuelve a intentarlo." "¿Has olvidado el patrón?" "Desbloqueo de cuenta" @@ -1473,12 +1459,12 @@ "Has introducido un código PIN incorrecto %1$d veces. \n\nInténtalo de nuevo en %2$d segundos." "Has introducido una contraseña incorrecta %1$d veces. \n\nInténtalo de nuevo en %2$d segundos." "Has fallado %1$d veces al dibujar tu patrón de desbloqueo. \n\nInténtalo de nuevo en %2$d segundos." - "Has intentado desbloquear el tablet %1$d veces, pero no lo has conseguido. Si fallas otras %2$d veces, se restablecerán los datos de fábrica y se perderán todos los datos del usuario." + "Has intentado desbloquear el tablet %1$d veces, pero no lo has conseguido. Si fallas otras %2$d veces, se restablecerá el estado de fábrica y se perderán todos los datos del usuario." "Has intentado desbloquear la TV incorrectamente %1$d veces. Si se producen %2$d intentos incorrectos más, la TV se restablecerá a los valores predeterminados de fábrica y se perderán todos los datos del usuario." - "Has intentado desbloquear el teléfono %1$d veces, pero no lo has conseguido. Si fallas otras %2$d veces, se restablecerán los datos de fábrica y se perderán todos los datos del usuario." - "Has intentado desbloquear el tablet %d veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo." + "Has intentado desbloquear el teléfono %1$d veces, pero no lo has conseguido. Si fallas otras %2$d veces, se restablecerá el estado de fábrica y se perderán todos los datos del usuario." + "Has intentado desbloquear el tablet %d veces, pero no lo has conseguido. Se restablecerá el estado de fábrica del dispositivo." "Has intentando desbloquear la TV incorrectamente %d veces. La TV se restablecerá a los valores predeterminados de fábrica." - "Has intentado desbloquear el teléfono %d veces, pero no lo has conseguido. Se restablecerán los datos de fábrica del dispositivo." + "Has intentado desbloquear el teléfono %d veces, pero no lo has conseguido. Se restablecerá el estado de fábrica del dispositivo." "Has fallado %1$d veces al dibujar el patrón de desbloqueo. Si fallas otras %2$d veces, deberás usar una cuenta de correo electrónico para desbloquear el tablet.\n\n Inténtalo de nuevo en %3$d segundos." "Has dibujado el patrón de desbloqueo incorrectamente %1$d veces. Si se producen %2$d intentos incorrectos más, deberás desbloquear la TV mediante una cuenta de correo electrónico.\n\n Vuelve a intentarlo dentro de %3$d segundos." "Has fallado %1$d veces al dibujar el patrón de desbloqueo. Si fallas otras %2$d veces, deberás usar una cuenta de correo electrónico para desbloquear el teléfono.\n\n Inténtalo de nuevo en %3$d segundos." @@ -1677,7 +1663,7 @@ "Fin de semana" "Evento" "Silenciado por %1$s" - "Se ha producido un problema interno en el dispositivo y es posible que este no sea estable hasta que restablezcas los datos de fábrica." + "Se ha producido un problema interno en el dispositivo y es posible que este no sea estable hasta que restablezcas el estado de fábrica." "Se ha producido un problema interno en el dispositivo. Ponte en contacto con el fabricante para obtener más información." "La solicitud USSD se ha modificado para la solicitud DIAL." "La solicitud USSD se ha modificado para la solicitud SS." @@ -1780,4 +1766,5 @@ "SIM no proporcionada" "SIM no compatible" "Teléfono no compatible" + "Ventana emergente" diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 14debb2625bff4174ce155e131728e60bc4fd7a5..b78df05ed372de50dc965e11dd5ba5da60aab303 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d päeva" - "%1$d päev %2$d h" - "%1$d päev %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Pealkirjata>" "(Telefoninumbrit pole)" "Teadmata" @@ -95,11 +79,13 @@ "Häälkõned/hädaabiteenus pole saadaval" "Teie asukoha mobiilsidevõrk seda teenust ajutiselt ei paku" "Võrguga ei saa ühendust" - "Vastuvõtu parandamiseks muutke valitud tüüpi jaotises Süsteem > Võrk ja Internet > Mobiilsidevõrgud > Eelistatud võrgutüüp." + "Vastuvõtu parandamiseks muutke valitud tüüpi jaotises Seaded > Võrk ja Internet > Mobiilsidevõrgud > Eelistatud võrgutüüp." + "WiFi-kõned on aktiivsed" + "Hädaabikõnede jaoks on vajalik mobiilsidevõrk." "Teatised" "Kõnede suunamine" "Hädaolukorra tagasihelistusrežiim" - "Mobiilse andmeside teatised" + "Mobiilse andmeside olek" "SMS-sõnumid" "Kõnepostisõnumid" "WiFi-kõned" @@ -1780,4 +1766,5 @@ "SIM-kaart on ettevalmistamata" "SIM-kaart pole lubatud" "Telefon pole lubatud" + "Hüpikaken" diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index ee688fc3256f89e1c1abc38a4b265f61454fcdcd..425be5200e197c89f8bfe4ffd7ba97199e52c088 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d egun" - "%1$d egun %2$d h" - "%1$d egun %2$d h" - "%1$d h" - "%1$d h %2$d m" - "%1$d h %2$d m" - "%1$d m" - "%1$d min" - "%1$d m %2$d s" - "%1$d m %2$d s" - "%1$d s" - "%1$d s" "<Izengabea>" "(Ez dago telefono-zenbakirik)" "Ezezaguna" @@ -95,11 +79,13 @@ "Ez dago ahots- edo larrialdi-deien zerbitzurik" "Zauden tokiko sare mugikorrak ez du eskaintzen aukera hori une honetan" "Ezin da konektatu sarera" - "Seinalea hobea izan dadin, aldatu hautatutako sare mota Sistema > Sareak eta Internet > Sare mugikorrak > Sare mota hobetsia atalean." + "Seinalea hobea izan dadin, aldatu sare mota Ezarpenak > Sareak eta Internet > Sare mugikorrak > Sare mota hobetsia atalean." + "Wi‑Fi bidezko deiak aktibo daude" + "Sare mugikorrera konektatuta egon behar da larrialdi-deiak egin ahal izateko." "Abisuak" "Dei-desbideratzea" "Larrialdi-deiak soilik jasotzeko modua" - "Datu mugikorren abisuak" + "Datu mugikorren egoera" "SMS mezuak" "Erantzungailuko mezuak" "Wi-Fi bidezko deiak" @@ -1780,4 +1766,5 @@ "Ez dago SIM txartelik" "Ez da onartzen SIM txartela" "Ez da onartzen telefonoa" + "Leiho gainerakorra" diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index d492087565b0892eacc54a1ee80f8fd0f086b0f6..2fe8cdc7f75e89e15b408a7ec7952d5bd86ad956 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -21,24 +21,8 @@ "بایت" - "کیلوبایت" - "مگابایت" - "گیگابایت" - "ترابایت" "پتابایت" "%1$s%2$s" - "%1$d روز" - "%1$d روز و %2$d ساعت" - "%1$d روز و %2$d ساعت" - "%1$d ساعت" - "%1$d ساعت و %2$d دقیقه" - "%1$d ساعت و %2$d دقیقه" - "%1$d دقیقه" - "%1$d دقیقه" - "%1$d دقیقه و %2$d ثانیه" - "%1$d دقیقه و %2$d ثانیه" - "%1$d ثانیه" - "%1$d ثانیه" "‏<بدون عنوان>" "(بدون شماره تلفن)" "نامشخص" @@ -95,11 +79,13 @@ "سرویس صوتی/اضطراری دردسترس نیست" "موقتاً توسط شبکه داده دستگاه همراه در مکان شما ارائه نمی‌شود" "شبکه دردسترس نیست" - "برای بهبود دریافت، نوع شبکه‌ای را که انتخاب کرده‌اید در «سیستم» > «شبکه‌ و اینترنت» > «شبکه‌های تلفن همراه» > «نوع شبکه ترجیحی» تغییر دهید." + "برای بهبود دریافت، نوع شبکه انتخاب‌شده را در «تنظیمات > شبکه‌ و اینترنت > شبکه‌های تلفن همراه > نوع شبکه ترجیحی» تغییر دهید." + "‏تماس ازطریق Wi-Fi فعال است" + "برای انجام تماس‌های اضطراری به شبکه تلفن همراه نیاز دارید." "هشدارها" "بازارسال تماس" "حالت پاسخ تماس اضطراری" - "هشدارهای داده تلفن همراه" + "وضعیت داده تلفن همراه" "پیامک‌ها" "پیام‌های پست صوتی" "‏تماس ازطریق Wi-Fi" @@ -979,7 +965,7 @@ "افزودن به واژه‌نامه" "حذف" "روش ورودی" - "عملکردهای متنی" + "کنش‌های متنی" "رایانامه" "تلفن" "نقشه‌ها" @@ -1780,4 +1766,5 @@ "سیم‌کارت مجوز لازم را ندارد" "سیم‌کارت مجاز نیست" "تلفن مجاز نیست" + "پنجره بازشو" diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 55a42d4e13b5e38d51676a7758f0f3133a43fd9d..0c0fe765a31f48009d6893bb8ae9b30a635a34b2 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -21,24 +21,8 @@ "t" - "kt" - "Mt" - "Gt" - "Tt" "Pt" "%1$s %2$s" - "%1$d päivää" - "%1$d päivä %2$d t" - "%1$d päivä %2$d t" - "%1$d t" - "%1$d t %2$d min" - "%1$d t %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Nimetön>" "(Ei puhelinnumeroa)" "Tuntematon" @@ -95,11 +79,13 @@ "Ei ääni- tai hätäpuheluja" "Sijaintisi mobiiliverkko ei tarjoa tätä tilapäisesti." "Ei yhteyttä verkkoon" - "Voit yrittää parantaa kuuluvuutta vaihtamalla tyypin asetusta. Valitse Järjestelmä > Verkko > Internet > Mobiiliverkot > Ensisijainen verkko." + "Voit yrittää parantaa kuuluvuutta vaihtamalla tyypin asetusta. Valitse Asetukset > Verkko > Internet > Mobiiliverkot > Ensisijainen verkko." + "Wi‑Fi-puhelut käytössä" + "Hätäpuheluihin vaaditaan mobiiliverkko." "Ilmoitukset" "Soitonsiirto" "Hätäpuhelujen takaisinsoittotila" - "Mobiilidatailmoitukset" + "Mobiilidatan tila" "Tekstiviestit" "Vastaajaviestit" "Wi-Fi-puhelut" @@ -1780,4 +1766,5 @@ "SIM-kortti ei käyttäjien hallinnassa" "SIM-kortti estetty" "Puhelin estetty" + "Ponnahdusikkuna" diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 29d167197e187b326533a215242056ec3125ade1..29322874728c7a170ce126573537ecfe8d09dda6 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -21,24 +21,8 @@ "o" - "ko" - "Mo" - "Go" - "To" "Po" "%1$s %2$s" - "%1$d jours" - "%1$d j et %2$d h" - "%1$d j et %2$d h" - "%1$d h" - "%1$d h et %2$d min" - "%1$d h et %2$d min" - "%1$d min" - "%1$d min" - "%1$d min et %2$d s" - "%1$d min et %2$d s" - "%1$d s" - "%1$d s" "<Sans_titre>" "(Aucun numéro de téléphone)" "Inconnu" @@ -95,11 +79,13 @@ "Aucun service vocal ou d\'urgence" "Ce service est temporairement non offert par le réseau cellulaire à l\'endroit où vous êtes" "Impossible de joindre le réseau" - "Pour améliorer la réception, essayez de changer le type de réseau sélectionné, sous Système > Réseaux et Internet > Réseaux cellulaires > Type de réseau préféré." + "Pour améliorer la réception, essayez de changer le type de réseau sélectionné, sous Paramètres > Réseaux et Internet > Réseaux cellulaires > Type de réseau préféré." + "Les appels Wi-Fi sont actifs" + "Les appels d\'urgence nécessitent un réseau cellulaire." "Alertes" "Transfert d\'appel" "Mode de rappel d\'urgence" - "Alertes de données cellulaires" + "État des données cellulaires" "Messages texte" "Messages vocaux" "Appels Wi-Fi" @@ -230,7 +216,7 @@ "Rapport interactif" "Utilisez cette option dans la plupart des circonstances. Elle vous permet de suivre la progression du rapport, d\'entrer plus d\'information sur le problème et d\'effectuer des saisies d\'écran. Certaines sections moins utilisées et dont le remplissage demande beaucoup de temps peuvent être omises." "Rapport complet" - "Utilisez cette option pour qu\'il y ait le moins d\'interférences système possible lorsque votre appareil ne répond pas ou qu\'il est trop lent, ou lorsque vous avez besoin de toutes les sections du rapport de bogue. Aucune saisie d\'écran supplémentaire ne peut être capturée, et vous ne pouvez entrer aucune autre information." + "Utilisez cette option pour qu\'il y ait le moins d\'interférences système possible lorsque votre appareil ne répond pas ou qu\'il est trop lent, ou lorsque vous avez besoin de toutes les sections du rapport de bogue. Aucune capture d\'écran supplémentaire ne peut être capturée, et vous ne pouvez entrer aucune autre information." Saisie d\'écran pour le rapport de bogue dans %d seconde. Saisie d\'écran pour le rapport de bogue dans %d secondes. @@ -1169,7 +1155,7 @@ "Terminé" "Carte SIM ajoutée." "Redémarrez votre appareil pour accéder au réseau mobile." - "Recommencer" + "Redémarrer" "Pour que la nouvelle carte SIM fonctionne correctement, vous devez installer et ouvrir une application fournie par votre fournisseur de services." "TÉLÉCHARGER L\'APPLICATION" "PAS MAINTENANT" @@ -1780,4 +1766,5 @@ "Carte SIM non configurée" "Carte SIM non autorisée" "Téléphone non autorisé" + "Fenêtre contextuelle" diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 6aa85ec5777c99550218a6563ab99637b8939494..47c58cbe60fb2a3cbf41e8bab60d62fb4b52b762 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -21,24 +21,8 @@ "octet(s)" - "Ko" - "Mo" - "Go" - "To" "Po" "%1$s %2$s" - "%1$d jours" - "%1$d j et %2$d h" - "%1$d j et %2$d h" - "%1$d h" - "%1$d h et %2$d min" - "%1$d h et %2$d min" - "%1$d min" - "%1$d min" - "%1$d min et %2$d s" - "%1$d min et %2$d s" - "%1$d s" - "%1$d s" "<Sans nom>" "(Aucun numéro de téléphone)" "Inconnu" @@ -95,11 +79,13 @@ "Aucun service vocal/d\'urgence" "Momentanément non proposé par le réseau mobile à votre position" "Impossible d\'accéder au réseau" - "Pour améliorer la réception, essayez de modifier le type sélectionné sous Système > Réseau et Internet > Réseaux mobiles > Type de réseau préféré." + "Pour améliorer la réception, essayez de modifier le type sélectionné sous Paramètres > Réseau et Internet > Réseaux mobiles > Type de réseau préféré." + "Les appels Wi-Fi sont actifs" + "Les appels d\'urgence requièrent un réseau mobile." "Alertes" "Transfert d\'appel" "Mode de rappel d\'urgence" - "Alertes relatives aux données mobiles" + "État des données mobiles" "SMS" "Messages vocaux" "Appels Wi-Fi" @@ -273,7 +259,7 @@ "Passer au profil professionnel" "Contacts" "accéder à vos contacts" - "Position" + "Localisation" "accéder à la position de l\'appareil" "Agenda" "accéder à votre agenda" @@ -1780,4 +1766,5 @@ "Carte SIM non configurée" "Carte SIM non autorisée" "Téléphone non autorisé" + "Fenêtre pop-up" diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index cfa0a256bfd315e233b441c096f682529c37b2b2..a4377db1f279a021d4bb1e5467e4616a57d3b394 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d días" - "%1$d día %2$d h" - "%1$d día %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d minuto" - "%1$d min %2$d seg" - "%1$d min %2$d seg" - "%1$d segundos" - "%1$d segundo" "<Sen título>" "(Sen número de teléfono)" "Descoñecido" @@ -95,11 +79,13 @@ "Non hai servizo de chamadas de urxencia nin de voz" "A rede de telefonía móbil non ofrece o servizo na túa localización temporalmente" "Non se pode conectar coa rede" - "Para mellorar a recepción, proba a cambiar o tipo seleccionado en Sistema > Rede e Internet > Redes de telefonía móbil > Tipo de rede preferido." + "Para mellorar a recepción, proba a cambiar o tipo seleccionado en Configuración > Rede e Internet > Redes de telefonía móbil > Tipo de rede preferido." + "As chamadas por wifi están activadas" + "As chamadas de urxencia precisan unha rede de telefonía móbil." "Alertas" "Desvío de chamadas" "Modo de devolución de chamadas de urxencia" - "Alertas de datos móbiles" + "Estado dos datos móbiles" "Mensaxes SMS" "Mensaxes de correo de voz" "Chamadas por wifi" @@ -1780,4 +1766,5 @@ "Non se introduciu ningunha tarxeta SIM" "Non se admite a tarxeta SIM" "Non se admite o teléfono" + "Ventá emerxente" diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 3695340c2c7b663372e15c4d3bfee6ddae2c78e5..84a5d808490609c81ccbe98b9724931cbf5514a9 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d દિવસ" - "%1$d દિવસ %2$d કલાક" - "%1$d દિવસ %2$d કલાક" - "%1$d કલાક" - "%1$d કલાક %2$d મિનિટ" - "%1$d કલાક %2$d મિનિટ" - "%1$d મિનિટ" - "%1$d મિનિટ" - "%1$d મિનિટ %2$d સેકન્ડ" - "%1$d મિ %2$d સે" - "%1$d સેકન્ડ" - "%1$d સેકન્ડ" "<અનામાંકિત>" "(કોઈ ફોન નંબર નથી)" "અજાણ્યું" @@ -95,11 +79,13 @@ "કોઈ વૉઇસ/કટોકટીની સેવા નથી" "તમારા સ્થળે મોબાઇલ નેટવર્ક દ્વારા અસ્થાયીરૂપે ઑફર કરવામાં આવતી નથી" "નેટવર્ક પર પહોંચી શકાતું નથી" - "રિસેપ્શનને બહેતર બનાવવા માટે, સિસ્ટમ > નેટવર્ક અને ઇન્ટરનેટ > મોબાઇલ નેટવર્ક > પસંદગીનો નેટવર્ક પ્રકારમાં પસંદ કરેલો પ્રકાર બદલવાનો પ્રયાસ કરો." + "રિસેપ્શનને બહેતર બનાવવા માટે, સેટિંગ્સ > નેટવર્ક અને ઇન્ટરનેટ > મોબાઇલ નેટવર્ક > પસંદગીના નેટવર્ક પ્રકાર પર પસંદ કરેલ પ્રકાર બદલવાનો પ્રયાસ કરો." + "વાઇ-ફાઇ કૉલિંગ સક્રિય છે" + "કટોકટીના કૉલ માટે એક મોબાઇલ નેટવર્કની આવશ્યકતા છે." "ચેતવણીઓ" "કૉલ ફૉર્વર્ડિંગ" "કટોકટી કૉલબૅક મોડ" - "મોબાઇલ ડેટા ચેતવણીઓ" + "મોબાઇલ ડેટાની સ્થિતિ" "SMS સંદેશા" "વૉઇસમેઇલ સંદેશા" "વાઇ-ફાઇ કૉલિંગ" @@ -1780,4 +1766,5 @@ "SIMની જોગવાઈ કરી નથી" "સિમ મંજૂર નથી" "ફોન મંજૂર નથી" + "પૉપઅપ વિંડો" diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 023a7ddfc4290bedd93aa8504bb47a2739ceacb4..66f240ae3eaf8acba968fd37d6c524f732e75553 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -21,24 +21,8 @@ "B" - "केबी" - "एमबी" - "जीबी" - "TB" "PB" "%1$s %2$s" - "%1$d दिन" - "%1$d दिन %2$d घंटे" - "%1$d दिन %2$d घंटा" - "%1$d घंटे" - "%1$d घं. %2$d मि." - "%1$d घं. %2$d मि." - "%1$d मिनट" - "%1$d मिनट" - "%1$d मि. %2$d से." - "%1$d मि. %2$d से." - "%1$d सेकंड" - "%1$d सेकंड" "<शीर्षक-रहित>" "(कोई फ़ोन नंबर नहीं)" "अज्ञात" @@ -95,11 +79,13 @@ "कोई वॉइस/आपातकालीन सेवा नहीं है" "मोबाइल नेटवर्क आपके जगह पर इस समय यह सेवाएं नहीं दे पा रहा" "नेटवर्क तक नहीं पहुंच पा रहे हैं" - "रिसेप्शन बेहतर करने के लिए, सिस्टम > नेटवर्क और इंटरनेट > मोबाइल नेटवर्क > पसंदीदा नेटवर्क प्रकार पर जाकर, चुना गया प्रकार बदलकर देखें." + "रिसेप्शन बेहतर करने के लिए, सेटिंग > नेटवर्क और इंटरनेट > मोबाइल नेटवर्क > पसंदीदा नेटवर्क प्रकार पर जाकर, चुना गया प्रकार बदलकर देखें." + "वाई-फ़ाई कॉलिंग सक्रिय है" + "आपातकालीन कॉल के लिए मोबाइल नेटवर्क ज़रूरी है." "सूचनाएं" "कॉल को दूसरे नंबर पर भेजना" "आपातकालीन कॉलबैक मोड" - "मोबाइल डेटा सूचनाएं" + "मोबाइल डेटा की स्थिति" "मैसेज (एसएमएस)" "वॉइसमेल संदेश" "वाई-फ़ाई कॉलिंग" @@ -471,15 +457,15 @@ "ऐप्स को नियर फ़ील्ड कम्यूनिकेशन (NFC) टैग, कार्ड, और रीडर के साथ संचार करने देता है." "अपना स्‍क्रीन लॉक अक्षम करें" "ऐप्स को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा अक्षम करने देता है. उदाहरण के लिए, इनकमिंग फ़ोन कॉल प्राप्त करते समय फ़ोन, कीलॉक को अक्षम कर देता है, फिर कॉल समाप्त होने पर कीलॉक को पुन: सक्षम कर देता है." - "अंगुली की छाप के लिए हार्डवेयर को प्रबंधित करें" - "अंगुली की छाप वाले टेम्पलेट का उपयोग करने के लिए जोड़ने और हटाने हेतु ऐप को विधियां प्रारंभ करने देती है." - "अंगुली की छाप के लिए हार्डवेयर का उपयोग करें" - "ऐप के प्रमाणीकरण के लिए अंगुली की छाप हार्डवेयर का उपयोग करने देती है" + "उंगली की छाप के लिए हार्डवेयर को प्रबंधित करें" + "उंगली की छाप वाले टेम्पलेट का उपयोग करने के लिए जोड़ने और हटाने हेतु ऐप को विधियां प्रारंभ करने देती है." + "उंगली की छाप के लिए हार्डवेयर का उपयोग करें" + "ऐप के प्रमाणीकरण के लिए उंगली की छाप हार्डवेयर का उपयोग करने देती है" "आंशिक फ़िंगरप्रिंट की पहचान की गई. कृपया पुनः प्रयास करें." "फ़िंगरप्रिंट संसाधित नहीं हो सका. कृपया पुन: प्रयास करें." "फ़िंगरप्रिंट सेंसर गंदा है. कृपया साफ़ करें और फिर कोशिश करें." - "अंगुली बहुत तेज़ी से चलाई गई है. कृपया पुनः प्रयास करें." - "अंगुली बहुत धीरे चलाई गई. कृपया पुनः प्रयास करें." + "उंगली बहुत तेज़ी से चलाई गई है. कृपया फिर से कोशिश करें." + "उंगली बहुत धीरे चलाई गई. कृपया फिर से कोशिश करें." "फ़िंगरप्रिंट हार्डवेयर उपलब्ध नहीं है." @@ -489,7 +475,7 @@ "बहुत अधिक प्रयास कर लिए गए हैं. बाद में पुन: प्रयास करें." "बहुत अधिक कोशिशें. फ़िंगरप्रिंट सेंसर अक्षम है." "पुन: प्रयास करें." - "अंगुली %d" + "उंगली %d" "फ़िंगरप्रिंट आइकॉन" @@ -528,7 +514,7 @@ "नेटवर्क उपयोग हिसाब बदलें" "ऐप्स को यह संशोधित करने देता है कि ऐप्स की तुलना में नेटवर्क उपयोग का मूल्यांकन कैसे किया जाता है. सामान्‍य ऐप्स द्वारा उपयोग करने के लिए नहीं." "सूचना तक पहुंचें" - "ऐप को सूचना पाने, जांच करने और साफ़ करने देता है, जिनमें अन्य ऐप के ज़रिए पोस्ट की गई सूचनाएं भी शामिल हैं." + "ऐप को सूचना पाने, जाँच करने और साफ़ करने देता है, जिनमें अन्य ऐप के ज़रिए पोस्ट की गई सूचनाएं भी शामिल हैं." "सूचना श्रवणकर्ता सेवा से जुड़ें" "उपयोगकर्ता को सूचना सुनने वाली सेवा के सबसे बेहतर इंटरफ़ेस से जुड़ने देती है. सामान्य ऐप के लिए कभी भी इसकी ज़रुरत नहीं होगी." "किसी शर्तें लागू करने वाली (कंडीशन प्रोवाइडर) सेवा से जुड़ें" @@ -763,7 +749,7 @@ "साइन इन करें" "उपयोगकर्ता नाम या पासवर्ड गलत है." "अपना उपयोगकर्ता नाम या पासवर्ड भूल गए?\n ""google.com/accounts/recovery"" पर जाएं." - "जांच रहा है…" + "जाँच रहा है…" "अनलॉक करें" "ध्‍वनि चालू करें" "ध्वनि बंद" @@ -1006,9 +992,9 @@ "इसके ज़रिये बदलाव करें" "%1$s की मदद से बदलाव करें" "बदलाव करें" - "इससे साझा करें" - "%1$s से साझा करें" - "साझा करें" + "इससे शेयर करें" + "%1$s से शेयर करें" + "शेयर करें" "इसका उपयोग करके भेजें" "%1$s का उपयोग करके भेजें" "भेजें" @@ -1073,7 +1059,7 @@ "पुराने ऐप्स को बिना सहेजे बंद करें." "%1$s मेमोरी सीमा को पार कर गई है" "हीप डंप का संग्रह कर लिया गया है; शेयर करने के लिए टैप करें" - "हीप डंप साझा करें?" + "हीप डंप शेयर करें?" "यह प्रक्रिया %1$s इसकी %2$s की मेमोरी की सीमा को पार कर गई है. एक हीप डंप मौजूद है जिसे आप इसके डेवलपर से शेयर कर सकते हैं. सावधान रहें: इस हीप डंप में आपकी ऐसी कोई भी निजी जानकारी हो सकती है जिस पर ऐप्लिकेशन की पहुंच हो." "मैसेज करने के लिए कोई कार्रवाई चुनें" "रिंगर वॉल्‍यूम" @@ -1200,7 +1186,7 @@ "गड़बड़ी की रिपोर्ट शेयर करें?" "गड़बड़ी की रिपोर्ट शेयर की जा रही है…" "आपके एडमिन ने इस डिवाइस की समस्या को हल करने में सहायता के लिए एक गड़बड़ी की रिपोर्ट का अनुरोध किया है. ऐप्लिकेशन और डेटा शेयर किए जा सकते हैं." - "साझा करें" + "शेयर करें" "अस्वीकार करें" "कीबोर्ड बदलें" "भौतिक कीबोर्ड के सक्रिय होने के दौरान इसे स्‍क्रीन पर बनाए रखें" @@ -1215,7 +1201,7 @@ "अगर आप नहीं चाहते कि %s इस सुविधा का उपयोग करे, तो सेटिंग खोलने और उसे बंद करने के लिए टैप करें." "बंद करें" "%s को तैयार किया जा रहा है" - "त्रुटियों की जांच कर रहा है" + "त्रुटियों की जाँच कर रहा है" "नए %s का पता लगा" "फ़ोटो और मीडिया ट्रांसफर करने के लिए" "दूषित %s" @@ -1243,7 +1229,7 @@ "डेटा शुरुआती जगह पर छूट गया है" "निकाल दिया गया" "निकाला गया" - "जांच की जा रही है..." + "जाँच की जा रही है..." "तैयार" "केवल-पढ़ने के लिए" "असुरक्षित रूप से निकाला गया" @@ -1321,7 +1307,7 @@ "हो गया" "USB मेमोरी मिटाया जा रहा है…" "SD कार्ड मिटाया जा रहा है…" - "साझा करें" + "शेयर करें" "ढूंढें" "वेब सर्च" "आगे ढूंढें" @@ -1366,8 +1352,8 @@ "Enter" "कोई ऐप्स चुनें" "%s को लॉन्च नहीं किया जा सका" - "इसके साथ साझा करें:" - "%s के साथ साझा करें" + "इसके साथ शेयर करें:" + "%s के साथ शेयर करें" "स्लाइडिंग हैंडल. दबाकर रखें." "अनलॉक करने के लिए स्‍वाइप करें." "होम पेज पर जाएं" @@ -1412,7 +1398,7 @@ "SHA-1 फ़िंगरप्रिंट:" "सभी देखें" "गतिविधि चुनें" - "इसके साथ साझा करें:" + "इसके साथ शेयर करें:" "भेजा जा रहा है…" "ब्राउज़र लॉन्च करें?" "कॉल स्वीकार करें?" @@ -1469,7 +1455,7 @@ "साइन इन करें" "उपयोगकर्ता नाम या पासवर्ड गलत है" "अपना उपयोगकर्ता नाम या पासवर्ड भूल गए?\n ""google.com/accounts/recovery"" पर जाएं." - "खाते की जांच की जा रही है…" + "खाते की जाँच की जा रही है…" "आप अपना PIN %1$d बार गलत तरीके से लिख चुके हैं. \n\n %2$d सेकंड में पुन: प्रयास करें." "आप अपना पासवर्ड %1$d बार गलत तरीके से लिख चुके हैं. \n\n %2$d सेकंड में पुन: प्रयास करें." "आपने अपना अनलॉक आकार %1$d बार गलत तरीके से आरेखित किया है. \n\n %2$d सेकंड में पुन: प्रयास करें." @@ -1780,4 +1766,5 @@ "SIM का प्रावधान नहीं किया गया है" "SIM की अनुमति नहीं है" "फ़ोन की अनुमति नहीं है" + "पॉपअप विंडो" diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 867d3102f0e2168a1acfeb8429a638c912eff59a..4c6a3b737a2969602b871be484d89213395bb14e 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d d" - "%1$d d %2$d h" - "%1$d d %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Bez naslova>" "(Nema telefonskog broja)" "Nepoznato" @@ -96,11 +80,13 @@ "Nema glasovnih i hitnih usluga" "Trenutačno nije u ponudi mobilne mreže na vašoj lokaciji" "Pristup mreži nije moguć" - "Za bolji prijem pokušajte odabrati drugu vrstu mreže u odjeljku Sustav > Mreža i internet > Mobilne mreže > Željena vrsta mreže." + "Za bolji prijem pokušajte promijeniti vrstu odabranu u odjeljku Postavke > Mreža i internet > Mobilne mreže > Preferirana vrsta mreže." + "Aktivni su Wi‑Fi pozivi" + "Za hitne pozive potrebna je mobilna mreža." "Upozorenja" "Preusmjeravanje poziva" "Način hitnog povratnog poziva" - "Upozorenja o mobilnim podacima" + "Status mobilnih podataka" "SMS poruke" "Poruke govorne pošte" "Wi-Fi pozivi" @@ -1814,4 +1800,5 @@ "Ne pruža se usluga za SIM" "SIM nije dopušten" "Telefon nije dopušten" + "Skočni prozor" diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index f2c4ea08e555209e4c79fd62e4536514216ba64e..acb350df36bf5673ca073af47621458b1bf29839 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d nap" - "%1$d nap %2$d óra" - "%1$d nap %2$d óra" - "%1$d óra" - "%1$d óra %2$d perc" - "%1$d óra %2$d perc" - "%1$d perc" - "%1$d perc" - "%1$d perc %2$d mp" - "%1$d perc %2$d mp" - "%1$d másodperc" - "%1$d másodperc" "<Névtelen>" "(Nincs telefonszám)" "Ismeretlen" @@ -95,11 +79,13 @@ "Hang- és segélyszolgáltatás letiltva" "Az Ön tartózkodási helyén ideiglenesen nem áll rendelkezésre a mobilhálózaton" "A hálózat nem érhető el" - "A vétel javítása érdekében próbálja módosítani a kiválasztott hálózattípust a Rendszer > Hálózat és internet > Mobilhálózatok > Preferált hálózattípus menüben." + "A vétel javítása érdekében próbálja módosítani a kiválasztott hálózattípust a Beállítások > Hálózat és internet > Mobilhálózatok > Preferált hálózattípus menüpontban." + "A Wi‑Fi-hívás aktív" + "A segélyhíváshoz mobilhálózatra van szükség." "Értesítések" "Hívásátirányítás" "Sürgősségi visszahívás mód" - "Mobiladat-forgalommal kapcsolatos értesítések" + "Mobiladat-állapot" "SMS-ek" "Hangpostaüzenetek" "Wi-Fi-hívás" @@ -1780,4 +1766,5 @@ "Nem engedélyezett SIM-kártya" "A SIM-kártya nem engedélyezett" "A telefon nem engedélyezett" + "Előugró ablak" diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index d94895f565216c618b92279b8e90f924e23c1ab2..d24db5a52a683156b6829da77309b40801b2376b 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -21,24 +21,8 @@ "Բ" - "կԲ" - "ՄԲ" - "ԳԲ" - "ՏԲ" "Պբ" "%1$s %2$s" - "%1$d օր" - "%1$d օր %2$d ժ" - "%1$d օր %2$d ժ" - "%1$d ժ" - "%1$d ժ %2$d ր" - "%1$d ժ %2$d ր" - "%1$d րոպե" - "%1$d րոպե" - "%1$d ր %2$d վ" - "%1$d ր %2$d վ" - "%1$d վ" - "%1$d վ" "<Անանուն>" "(Հեռախոսահամար չկա)" "Անհայտ" @@ -95,11 +79,13 @@ "Ձայնային/արտակարգ իրավիճակների ծառայությունն անհասանելի է" "Ձեր գտնվելու վայրում ծառայությունը ժամանակավորապես չի տրամադրվում բջջային ցանցի կողմից" "Ցանցն անհասանելի է" - "Ազդանշանի ընդունման որակը բարելավելու համար փոխեք ցանցի տեսակը՝ անցնելով Համակարգ > Ցանց և ինտերնետ > Բջջային ցանցեր > Ցանկալի ցանցի տեսակը։" + "Ազդանշանի ընդունման որակը բարելավելու համար փոխեք ցանցի տեսակը՝ անցնելով Համակարգ > Ցանց և ինտերնետ > Բջջային ցանցեր > Ցանկալի ցանցի տեսակը։" + "Wi‑Fi կանչերն ակտիվ են" + "Շտապ կանչերի համար բջջային ցանց է անհրաժեշտ" "Ծանուցումներ" "Զանգի վերահասցեավորում" "Շտապ հետկանչի ռեժիմ" - "Բջջային տվյալների ծանուցումներ" + "Բջջային ինտերնետի կարգավիճակը" "SMS հաղորդագրություններ" "Ձայնային փոստի հաղորդագրություններ" "Զանգեր Wi-Fi-ի միջոցով" @@ -1780,4 +1766,5 @@ "SIM քարտը նախապատրաստված չէ" "SIM քարտի օգտագործումն արգելված է" "Հեռախոսի օգտագործումն արգելված է" + "Հայտնվող պատուհան" diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 0d4f8c53adfbeaa44242d4a36e538b1507a75484..24ead9ee121af48fc14d1aae6e7d4350d2f35784 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d hari" - "%1$d hari %2$d jam" - "%1$d hari %2$d jam" - "%1$d jam" - "%1$d jam %2$d mnt" - "%1$d jam %2$d mnt" - "%1$d mnt" - "%1$d menit" - "%1$d mnt %2$d dtk" - "%1$d mnt %2$d dtk" - "%1$d dtk" - "%1$d dtk" "<Tanpa judul>" "(Tidak ada nomor telepon)" "Tidak diketahui" @@ -95,11 +79,13 @@ "Tidak ada layanan panggilan suara/darurat" "Untuk sementara tidak ditawarkan oleh jaringan seluler di lokasi Anda" "Tidak dapat menjangkau jaringan" - "Untuk meningkatkan penerimaan sinyal, coba ubah jenis yang dipilih di Sistem > Jaringan & Internet > Jaringan seluler > Jenis jaringan pilihan." + "Untuk menyempurnakan penerimaan sinyal, coba ubah jenis yang dipilih di Setelan > Jaringan & Internet > Jaringan seluler > Jenis jaringan pilihan." + "Panggilan Wi‑Fi aktif" + "Panggilan darurat memerlukan jaringan seluler." "Notifikasi" "Penerusan panggilan" "Mode panggilan balik darurat" - "Notifikasi data seluler" + "Status data seluler" "Pesan SMS" "Notifikasi pesan suara" "Panggilan Wi-Fi" @@ -160,7 +146,7 @@ "Tidak dapat tersambung ke server." "Tidak dapat berkomunikasi dengan server. Coba lagi nanti." "Sambungan ke server terputus." - "Laman ini berisi terlalu banyak pengalihan server." + "Halaman ini berisi terlalu banyak pengalihan server." "Protokol tidak didukung." "Tidak dapat membuat sambungan aman." "Tidak dapat membuka halaman karena URL tidak valid." @@ -298,7 +284,7 @@ "Mengontrol perbesaran layar" "Mengontrol tingkat zoom dan pemosisian layar." "Melakukan isyarat" - "Dapat mengetuk, menggesek, mencubit, dan melakukan isyarat lainnya." + "Dapat mengetuk, menggeser, mencubit, dan melakukan isyarat lainnya." "Gestur sidik jari" "Dapat merekam gestur yang dilakukan di sensor sidik jari perangkat." "nonaktifkan atau ubah bilah status" @@ -320,9 +306,9 @@ "terima pesan teks (MMS)" "Memungkinkan aplikasi menerima dan memproses pesan MMS. Ini artinya aplikasi dapat memantau atau menghapus pesan yang dikirim ke perangkat Anda tanpa menunjukkannya kepada Anda." "membaca pesan siaran seluler" - "Mengizinkan aplikasi membaca pesan siaran seluler yang diterima perangkat Anda. Lansiran siaran seluler dikirimkan di beberapa lokasi untuk memperingatkan Anda tentang situasi darurat. Aplikasi berbahaya dapat mengganggu kinerja atau operasi perangkat Anda saat siaran seluler darurat diterima." - "baca umpan langganan" - "Mengizinkan apl mendapatkan detail tentang umpan yang saat ini sedang disinkronkan." + "Mengizinkan aplikasi membaca pesan siaran seluler yang diterima perangkat Anda. Notifikasi siaran seluler dikirimkan di beberapa lokasi untuk memperingatkan Anda tentang situasi darurat. Aplikasi berbahaya dapat mengganggu kinerja atau operasi perangkat Anda saat siaran seluler darurat diterima." + "baca feed langganan" + "Mengizinkan apl mendapatkan detail tentang feed yang saat ini sedang disinkronkan." "mengirim dan melihat pesan SMS" "Memungkinkan aplikasi mengirim pesan SMS. Izin ini dapat mengakibatkan biaya tak terduga. Aplikasi berbahaya dapat membebankan biaya kepada Anda dengan mengirim pesan tanpa konfirmasi dari Anda." "membaca pesan teks (SMS atau MMS) Anda" @@ -498,7 +484,7 @@ "nyalakan dan matikan sinkronisasi" "Memungkinkan aplikasi mengubah setelan sinkronisasi untuk sebuah akun. Misalnya, izin ini dapat digunakan untuk mengaktifkan sinkronisasi dari aplikasi Orang dengan sebuah akun." "statistika baca sinkron" - "Memungkinkan aplikasi membaca statistik sinkronisasi untuk sebuah akun, termasuk riwayat kejadian sinkronisasi dan berapa banyak data yang disinkronkan." + "Memungkinkan aplikasi membaca statistik sinkronisasi untuk sebuah akun, termasuk histori kejadian sinkronisasi dan berapa banyak data yang disinkronkan." "baca konten simpanan USB Anda" "baca konten kartu SD Anda" "Mengizinkan aplikasi membaca konten penyimpanan USB Anda." @@ -521,7 +507,7 @@ "Memungkinkan aplikasi berinteraksi dengan layanan telepon untuk melakukan/menerima panggilan." "memberikan pengalaman pengguna dalam panggilan" "Memungkinkan aplikasi memberikan pengalaman pengguna dalam panggilan." - "baca riwayat penggunaan jaringan" + "baca histori penggunaan jaringan" "Mengizinkan apl membaca penggunaan jaringan historis untuk apl dan jaringan tertentu." "kelola kebijakan jaringan" "Mengizinkan apl mengelola kebijakan jaringan dan menentukan peraturan khusus apl." @@ -799,17 +785,17 @@ "ALT" "karakter" "kata" - "tautan" + "link" "baris" "Uji pabrik gagal" "Tindakan FACTORY_TEST hanya didukung untuk paket yang terpasang pada /system/app." "Tidak ada paket yang memberikan tindakan FACTORY_TEST." "Mulai ulang" - "Laman pada \"%s\" menyatakan:" + "Halaman pada \"%s\" menyatakan:" "JavaScript" "Konfirmasi Navigasi" - "Keluar dari Laman ini" - "Tetap di Laman ini" + "Keluar dari Halaman ini" + "Tetap di Halaman ini" "%s\n\nYakin ingin beranjak dari halaman ini?" "Konfirmasi" "Kiat: Ketuk dua kali untuk memperbesar dan memperkecil." @@ -831,12 +817,12 @@ "Kampung" "Area" "Emirat" - "baca riwayat dan bookmark web Anda" - "Memungkinkan aplikasi membaca riwayat semua URL yang telah dikunjungi Browser, dan semua bookmark Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." - "tulis riwayat dan bookmark web" - "Memungkinkan aplikasi mengubah riwayat atau bookmark Browser yang tersimpan dalam tablet Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." - "Mengizinkan aplikasi untuk memodifikasi riwayat atau bookmark Browser yang disimpan di TV. Izin ini memungkinkan aplikasi untuk menghapus atau memodifikasi data Browser. Catatan: izin ini mungkin diterapkan oleh browser pihak ketiga atau aplikasi lain yang memiliki kemampuan menjelajah web." - "Memungkinkan aplikasi mengubah riwayat atau bookmark Browser yang tersimpan dalam ponsel Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." + "baca histori dan bookmark web Anda" + "Memungkinkan aplikasi membaca histori semua URL yang telah dikunjungi Browser, dan semua bookmark Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." + "tulis histori dan bookmark web" + "Memungkinkan aplikasi mengubah histori atau bookmark Browser yang tersimpan dalam tablet Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." + "Mengizinkan aplikasi untuk memodifikasi histori atau bookmark Browser yang disimpan di TV. Izin ini memungkinkan aplikasi untuk menghapus atau memodifikasi data Browser. Catatan: izin ini mungkin diterapkan oleh browser pihak ketiga atau aplikasi lain yang memiliki kemampuan menjelajah web." + "Memungkinkan aplikasi mengubah histori atau bookmark Browser yang tersimpan dalam ponsel Anda. Izin ini memungkinkan aplikasi menghapus atau mengubah data Browser. Catatan: izin ini tidak dapat diberlakukan oleh browser pihak ketiga atau aplikasi lain dengan kemampuan menjelajahi web." "setel alarm" "Mengizinkan apl menyetel alarm di apl jam alarm yang terpasang. Beberapa apl jam alarm mungkin tidak menerapkan fitur ini." "tambahkan kotak pesan" @@ -1042,7 +1028,7 @@ "Oke" "Laporkan" "Tunggu" - "Laman ini tidak menanggapi.\n\nApakah Anda ingin menutupnya?" + "Halaman ini tidak menanggapi.\n\nApakah Anda ingin menutupnya?" "Apl dialihkan" "%1$s sedang berjalan." "%1$s telah diluncurkan aslinya." @@ -1369,7 +1355,7 @@ "Berbagi dengan" "Berbagi dengan %s" "Gagang geser. Sentuh & tahan." - "Gesek untuk membuka kunci." + "Geser untuk membuka kunci." "Navigasi ke beranda" "Navigasi naik" "Opsi lainnya" @@ -1382,7 +1368,7 @@ "Drive USB %s" "Penyimpanan USB" "Edit" - "Lansiran penggunaan data" + "Notifikasi penggunaan data" "Ketuk untuk lihat penggunaan & setelan." "Batas data 2G-3G terlampaui" "Batas data 4G terlampaui" @@ -1630,8 +1616,8 @@ "Diupdate oleh admin Anda" "Dihapus oleh admin Anda" "Untuk membantu meningkatkan masa pakai baterai, penghemat baterai mengurangi kinerja perangkat dan membatasi getaran, layanan lokasi, dan sebagian besar data latar belakang. Email, pesan, dan aplikasi lain yang mengandalkan sinkronisasi mungkin tidak diperbarui kecuali jika dibuka.\n\nPenghemat baterai otomatis nonaktif jika perangkat diisi dayanya." - "Untuk membantu mengurangi penggunaan data, Penghemat Data mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah disentuh." - "Aktifkan Penghemat Data?" + "Untuk membantu mengurangi penggunaan data, Penghemat Kuota Internet mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah disentuh." + "Aktifkan Penghemat Kuota Internet?" "Aktifkan" Selama %1$d menit (hingga %2$s) @@ -1780,4 +1766,5 @@ "SIM tidak di-provisioning" "SIM tidak diizinkan" "Ponsel tidak diizinkan" + "Jendela Pop-up" diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 869780c5899633e1b98b153c0dfb67d3ec23fd6e..ce6f56563d43194f77529396d98ef8ae2d4d3a4e 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dagar" - "%1$d d. %2$d klst." - "%1$d d. %2$d klst." - "%1$d klst." - "%1$d k. %2$d mín." - "%1$d k. %2$d mín." - "%1$d mín." - "%1$d mín." - "%1$d m. %2$d sek." - "%1$d m. %2$d sek." - "%1$d sek." - "%1$d sek." "<Ónefnt>" "(Ekkert símanúmer)" "Óþekkt" @@ -95,11 +79,13 @@ "Símtöl/neyðarsímtöl eru ekki í boði" "Ekki í boði á farsímakerfinu á þínum stað eins og er" "Ekki næst samband við símkerfi" - "Reyndu að breyta valinni gerð í Kerfi > Netkerfi og internet > Farsímakerfi > Valin símkerfistegund til að bæta móttökuskilyrðin." + "Reyndu að breyta valinni gerð í Stillingar > Netkerfi og internet > Farsímakerfi > Valin símkerfistegund til að bæta móttökuskilyrðin." + "Wi-Fi símtöl eru virk" + "Neyðarsímtöl krefjast farsímanets." "Tilkynningar" "Símtalsflutningur" "Stilling fyrir svarhringingu neyðarsímtala" - "Tilkynningar fyrir farsímagögn" + "Staða farsímagagna" "SMS-skilaboð" "Talhólfsskilaboð" "Wi-Fi símtöl" @@ -1780,4 +1766,5 @@ "SIM-korti ekki úthlutað" "SIM-kort er ekki leyft" "Sími er ekki leyfður" + "Sprettigluggi" diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 2acfb0b4d67c64d2416d01f4a0b079b96e5cc310..74d1e14d39a78772723ae30ab9010beb241f44d8 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d giorni" - "%1$d giorno %2$d ore" - "%1$d giorno %2$d ora" - "%1$d ore" - "%1$d ora %2$d minuti" - "%1$d ora %2$d minuto" - "%1$d minuti" - "%1$d min" - "%1$d minuto %2$d secondi" - "%1$d minuto %2$d secondo" - "%1$d secondi" - "%1$d secondo" "<Senza nome>" "(Nessun numero di telefono)" "Sconosciuto" @@ -95,11 +79,13 @@ "Nessun servizio di telefonia/emergenza" "Servizio temporaneamente non offerto dalla rete mobile nella tua località" "Impossibile raggiungere la rete" - "Per migliorare la ricezione, prova a modificare il tipo selezionato in Sistema > Rete e Internet > Reti mobili > Tipo di rete preferito." + "Per migliorare la ricezione, prova a modificare il tipo selezionato in Impostazioni > Rete e Internet > Reti mobili > Tipo di rete preferito." + "Chiamate Wi‑Fi attive" + "Per le chiamate di emergenza è necessaria una rete mobile." "Avvisi" "Deviazione chiamate" "Modalità di richiamata di emergenza" - "Avvisi relativi ai dati mobili" + "Stato dati mobili" "SMS" "Messaggi vocali" "Chiamate Wi-Fi" @@ -1619,10 +1605,10 @@ "%1$s lavoro" "%1$s di lavoro (2°)" "%1$s di lavoro (3°)" - "Per rimuovere il blocco, tieni premuti i pulsanti Indietro e Panoramica" - "Impossibile rimuovere il blocco per l\'app" - "Schermata bloccata" - "Schermata sbloccata" + "Per sganciare la schermata, tieni premuti i pulsanti Indietro e Panoramica" + "Impossibile sganciare l\'app" + "Schermata fissata" + "Schermata sganciata" "Richiedi il PIN per lo sblocco" "Richiedi sequenza di sblocco prima di sbloccare" "Richiedi password prima di sbloccare" @@ -1726,7 +1712,7 @@ "Connesso a %1$s" "Tocca per visualizzare i file" "Blocca" - "Sblocca" + "Sgancia" "Informazioni app" "−%1$s" "Avvio della demo…" @@ -1780,4 +1766,5 @@ "Scheda SIM non predisposta" "Scheda SIM non consentita" "Telefono non consentito" + "Finestra popup" diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index bcf34982425a6319554472f80d0528bf71a4aaa1..ca266835bd0ac6b9bed4ae1f97d6b0de75cc5b27 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ימים" - "יום %1$d%2$d שע\'" - "יום %1$d שעה %2$d" - "%1$d שעות" - "שעה %1$d%2$d דק\'" - "%1$d שעות %2$d דק\'" - "%1$d דקות" - "%1$d דקות" - "דקה %1$d%2$d שנ\'" - "דקה %1$d שנ\' %2$d" - "%1$d שניות" - "שנייה %1$d" "‏>ללא כותרת<" "(אין מספר טלפון)" "לא ידוע" @@ -97,11 +81,13 @@ "אין אפשרות לבצע שיחות חירום ושיחות קוליות רגילות" "הרשת הסלולרית במיקום הזה חסמה את השירות באופן זמני" "לא ניתן להתחבר לרשת" - "‏כדי לשפר את הקליטה, נסה לשנות את הסוג הנבחר ב\'מערכת\' > \'רשת ואינטרנט\' > \'רשתות סלולריות\' > \'סוג רשת מועדף\'." + "כדי לשפר את הקליטה, כדאי לנסות לשנות את סוג הרשת ב\'הגדרות\' > \'רשת ואינטרנט\' > \'רשתות סלולריות\' > \'סוג רשת מועדף\'." + "‏שיחות ה-Wi-Fi מופעלות" + "כדי לבצע שיחות חירום, יש להתחבר לרשת סלולרית." "התראות" "העברת שיחות" "מצב \'התקשרות חזרה בחירום\'" - "התראות לגבי חבילת הגלישה" + "סטטוס חבילת הגלישה" "‏הודעות SMS" "הודעות קוליות" "‏שיחות Wi-Fi" @@ -1345,7 +1331,7 @@ "‏אין חיבור ל-VPN שפועל כל הזמן" "‏שגיאת VPN שמופעל תמיד" "‏רוצה לשנות את הגדרות הרשת או הגדרות ה-VPN?" - "בחר קובץ" + "בחירת קובץ" "לא נבחר קובץ" "איפוס" "שלח" @@ -1848,4 +1834,5 @@ "‏כרטיס ה-SIM לא מזוהה" "‏כרטיס ה-SIM לא מורשה" "הטלפון לא מורשה" + "חלון קופץ" diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 3ffccd1a7e24a97ee6d186415f4bc1cde79ad404..4f110209c11fd352a852162efce8622bd9958947 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s%2$s" - "%1$d日" - "%1$d%2$d時間" - "%1$d%2$d時間" - "%1$d時間" - "%1$d時間%2$d分" - "%1$d時間%2$d分" - "%1$d分" - "%1$d分" - "%1$d%2$d秒" - "%1$d%2$d秒" - "%1$d秒" - "%1$d秒" "<新規>" "(電話番号なし)" "不明" @@ -95,11 +79,13 @@ "音声通話 / 緊急通報サービス停止" "現在地のモバイル ネットワークでは一時的に提供されていません" "ネットワークにアクセスできません" - "受信状態を改善するには、[システム] > [ネットワークとインターネット] > [モバイル ネットワーク] > [優先ネットワーク タイプ] で選択したタイプを変更してみてください。" + "受信状態を改善するには、[設定] > [ネットワークとインターネット] > [モバイル ネットワーク] > [優先ネットワーク タイプ] で選択したタイプを変更してみてください。" + "Wi‑Fi 通話が有効な状態です" + "緊急通報にはモバイル ネットワークが必要です。" "通知" "電話の転送" "緊急通報待機モード" - "モバイルデータ通知" + "モバイルデータのステータス" "SMS メッセージ" "ボイスメール メッセージ" "Wi-Fi 通話" @@ -1780,4 +1766,5 @@ "SIM には対応していません" "SIM は許可されていません" "電話は許可されていません" + "ポップアップ ウィンドウ" diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index d3f86f896a63e375631933914ce17315e060c25f..030454924a4291bd1e95520467de73d00f211190 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -21,24 +21,8 @@ "ბაიტი" - "კბაიტი" - "მბაიტი" - "გბაიტი" - "ტბაიტი" "PB" "%1$s %2$s" - "%1$d დღე" - "%1$d დღე %2$d სთ" - "%1$d დღე %2$d სთ" - "%1$d სთ" - "%1$d სთ %2$d წთ" - "%1$d სთ %2$d წთ" - "%1$d წთ" - "%1$d წთ" - "%1$d წთ %2$d წმ" - "%1$d წთ %2$d წმ" - "%1$d წმ" - "%1$d წმ" "უსათაურო" "(ტელეფონის ნომრის გარეშე)" "უცნობი" @@ -95,11 +79,13 @@ "ხმოვანი/გადაუდებელი ზარების სერვისი არ არის" "დროებით არ არის შემოთავაზებული მობილური ქსელის მიერ თქვენს მდებარეობაზე" "ქსელთან დაკავშირება ვერ ხერხდება" - "მიღების გასაუმჯობესებლად ცადეთ არჩეული ტიპის შეცვლა აქ: სისტემა > ქსელი და ინტერნეტი > მობილური ქსელები > ქსელის სასურველი ტიპი." + "მიღების გასაუმჯობესებლად ცადეთ არჩეული ტიპის შეცვლა აქ: პარამეტრები > ქსელი და ინტერნეტი > მობილური ქსელები > ქსელის სასურველი ტიპი." + "აქტიურია Wi‑Fi დარეკვა" + "გადაუდებელი ზარები საჭიროებს მობილურ ქსელს." "გაფრთხილებები" "ზარის გადამისამართება" "გადაუდებელი გადმორეკვის რეჟიმი" - "მობილური ინტერნეტის შეტყობინებები" + "მობილური ინტერნეტის სტატუსი" "SMS შეტყობინებები" "ხმოვანი ფოსტის შეტყობინებები" "დარეკვა Wi-Fi-ს მეშვეობით" @@ -1780,4 +1766,5 @@ "SIM ბარათი უზრუნველყოფილი არ არის" "SIM ბარათი დაუშვებელია" "ტელეფონი დაუშვებელია" + "ამომხტარი ფანჯარა" diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index b1fabbd5cb5db8411647e3bb676703b714c93510..7139f7875a5d956fa7016aa7c8ce5a885be4712e 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -21,24 +21,8 @@ "Б" - "КБ" - "MБ" - "ГБ" - "TБ" "ПБ" "%1$s %2$s" - "%1$d күн" - "%1$d күн %2$d сағ." - "%1$d күн %2$d сағ." - "%1$d сағ." - "%1$d сағ. %2$d м." - "%1$d сағ. %2$d м." - "%1$d мин." - "%1$d мин" - "%1$d мин. %2$d с." - "%1$d мин. %2$d с." - "%1$d сек." - "%1$d сек." "<Атаусыз>" "(Телефон нөмірі жоқ)" "Белгісіз" @@ -95,11 +79,13 @@ "Дауыстық/жедел қызметке қоңыраулар қызметі жоқ" "Орналасқан аймағыңызда мобильдік желі уақытша ұсынбады" "Желіге қосылу мүмкін емес" - "Қабылдауды жақсарту үшін \"Жүйе > Желі және интернет > Мобильдік желілер > Қалаған желі түрі\" тармағынан түрді өзгертіп көріңіз." + "Қабылдауды жақсарту үшін \"Параметрлер > Желі және интернет > Мобильді желілер және қалаулы желі түрі\" тармағынан түрді өзгертіп көріңіз." + "Wi‑Fi қоңыраулары қосулы" + "Жедел қызметке қоңырау шалу үшін мобильдік желі қажет." "Дабылдар" "Қоңырауды басқа нөмірге бағыттау" "Шұғыл кері қоңырау шалу режимі" - "Мобильдік деректер дабылдары" + "Мобильдік деректер күйі" "SMS хабарлары" "Дауыстық пошта хабарлары" "Wi-Fi қоңыраулары" @@ -1780,4 +1766,5 @@ "SIM картасы белсендірілмеген" "SIM картасына рұқсат етілмеген" "Телефонға рұқсат етілмеген" + "Қалқымалы терезе" diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 62d09bffa8e42946211657f2133d77ab2c9f9e42..ecbc38f10e74e15ae04bd518d4585de185802ff5 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "មេកាបៃ" - "ជីកាបៃ" - "តេរ៉ាបៃ" "PB" "%1$s %2$s" - "%1$d ថ្ងៃ" - "%1$d ថ្ងៃ %2$d ម៉ោង" - "%1$d ថ្ងៃ %2$d ម៉ោង" - "%1$d ម៉ោង" - "%1$d ម៉ោង %2$d នាទី" - "%1$d ម៉ោង %2$d នាទី" - "%1$d នាទី" - "%1$d នាទី" - "%1$dនាទី %2$dវិនាទី" - "%1$dនាទី %2$dវិនាទី" - "%1$d វិនាទី" - "%1$d វិនាទី" "<គ្មាន​ចំណង​ជើង>" "(គ្មាន​លេខ​ទូរស័ព្ទ)" "មិន​ស្គាល់" @@ -95,11 +79,13 @@ "គ្មាន​សេវាកម្ម​សំឡេង/សង្រ្គោះបន្ទាន់​ទេ" "​មិន​បាន​ផ្តល់​ជូន​ដោយ​បណ្តាញចល័តនៅ​ទីកន្លែងរបស់អ្នកជា​បណ្តោះ​អាសន្ន" "មិន​អាច​ភ្ជាប់​ទៅ​បណ្តាញ​បានទេ​" - "ដើម្បីកែលម្អការទទួលយក សាកល្បងប្តូរប្រភេទដែលបានជ្រើសរើសនៅ ប្រព័ន្ធ > បណ្តាញ និងអ៊ីនធឺណិត > បណ្តាញទូរសព្ទចល័ត > ប្រភេទបណ្តាញដែលចង់ប្រើ។" + "ដើម្បី​ធ្វើ​ឲ្យ​ការ​ទទួល​​រលក​សញ្ញា​​ប្រសើរ​ជាងមុន សូមសាកល្បងប្តូរប្រភេទដែលបានជ្រើសរើសនៅ ការកំណត់ > បណ្តាញ និងអ៊ីនធឺណិត > បណ្តាញទូរសព្ទចល័ត > ប្រភេទបណ្តាញដែលចង់ប្រើ។" + "ការហៅតាម Wi-Fi បានបើក" + "ការហៅ​បន្ទាន់​តម្រូវឲ្យ​មានបណ្ដាញ​ទូរសព្ទ​ចល័ត។" "ការជូនដំណឹង" "ការបញ្ជូន​ការហៅ​ទូរសព្ទ​បន្ត" "មុខងារ​ហៅត្រឡប់​វិញ​បន្ទាន់" - "ការជូនដំណឹង​អំពី​ទិន្នន័យ​ទូរសព្ទ​ចល័ត" + "ស្ថានភាព​ទិន្នន័យ​ទូរសព្ទ​ចល័ត" "សារ SMS" "សារ​ជា​សំឡេង" "ការហៅ​ទូរសព្ទ​តាម Wi-Fi" @@ -1782,4 +1768,5 @@ "សីុម​មិន​ត្រូវបាន​ផ្តល់ជូន​ទេ" "មិន​អនុញ្ញាត​ចំពោះសីុម​ទេ" "មិន​អនុញ្ញាត​ចំពោះទូរសព្ទ​ទេ" + "វិនដូលេចឡើង" diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 65efb562a9738bd3b726c5dfa8d87ad245b7bcc9..f90ab12b5e41054238f4087fd7b4e5b99452b580 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ದಿನಗಳು" - "%1$d ದಿನ %2$d ಗಂಟೆಗಳು" - "%1$d ದಿನ %2$d ಗಂ" - "%1$d ಗಂಟೆಗಳು" - "%1$d ಗಂಟೆ %2$d ನಿಮಿಷಗಳು" - "%1$d ಗಂಟೆ %2$d ನಿಮಿಷ" - "%1$d ನಿಮಿಷಗಳು" - "%1$d ನಿಮಿಷ" - "%1$d ನಿಮಿ %2$d ಸೆಕೆಂಡುಗಳು" - "%1$d ನಿಮಿ %2$d ಸೆ" - "%1$d ಸೆಕೆಂಡುಗಳು" - "%1$d ಸೆಕೆಂಡುಗಳು" "<ಶೀರ್ಷಿಕೆ ರಹಿತ>" "(ಯಾವುದೇ ಫೋನ್ ಸಂಖ್ಯೆಯಿಲ್ಲ)" "ಅಪರಿಚಿತ" @@ -95,11 +79,13 @@ "ಧ್ವನಿ/ತುರ್ತು ಸೇವೆ ಇಲ್ಲ" "ತಾತ್ಕಾಲಿಕವಾಗಿ ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ನಿಮ್ಮ ಸ್ಥಳದಲ್ಲಿ ಒದಗಿಸುತ್ತಿಲ್ಲ" "ನೆಟ್‌ವರ್ಕ್ ತಲುಪಲು ಸಾಧ್ಯವಿಲ್ಲ" - "ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕ ಪಡೆಯುವುದನ್ನು ಸುಧಾರಿಸಲು, ಆಯ್ಕೆ ಮಾಡಿರುವ ವಿಧವನ್ನು ಸಿಸ್ಟಂ > ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್ > ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು > ಆದ್ಯತೆಯ ನೆಟ್‌ವರ್ಕ್ ವಿಧದಲ್ಲಿ ಬದಲಿಸಿ ನೋಡಿ." + "ನೆಟ್‌ವರ್ಕ್ ಸಂಪರ್ಕ ಪಡೆಯುವುದನ್ನು ಸುಧಾರಿಸಲು, ಆಯ್ಕೆ ಮಾಡಿರುವ ವಿಧವನ್ನು ಸೆಟ್ಟಿಂಗ್‌ಗಳು > ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್ > ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್‌ಗಳು > ಆದ್ಯತೆಯ ನೆಟ್‌ವರ್ಕ್ ವಿಧದಲ್ಲಿ ಬದಲಿಸಿ ನೋಡಿ." + "ವೈ‑ಫೈ ಕರೆಮಾಡುವಿಕೆ ಸಕ್ರಿಯವಾಗಿದೆ" + "ತುರ್ತು ಕರೆಗಳನ್ನು ಮಾಡಲು ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಅಗತ್ಯವಿದೆ." "ಎಚ್ಚರಿಕೆಗಳು" "ಕರೆ ಫಾರ್ವರ್ಡ್‌ ಮಾಡುವಿಕೆ" "ತುರ್ತು ಕಾಲ್‌ಬ್ಯಾಕ್‌ ಮೋಡ್‌" - "ಮೊಬೈಲ್ ಡೇಟಾ ಎಚ್ಚರಿಕೆಗಳು" + "ಮೊಬೈಲ್ ಡೇಟಾ ಸ್ಥಿತಿ" "ಎಸ್‌ಎಂಎಸ್ ಸಂದೇಶಗಳು" "ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳು" "ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ" @@ -1780,4 +1766,5 @@ "ಸಿಮ್ ಸಿದ್ಧವಾಗಿಲ್ಲ" "ಸಿಮ್‌ಗೆ ಅನುಮತಿಯಿಲ್ಲ" "ಫೋನ್‌ಗೆ ಅನುಮತಿಯಿಲ್ಲ" + "ಪಾಪ್‌ಅಪ್ ವಿಂಡೋ" diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 6f59df6a3ec6be1c7a6710586231f57e50167040..5002734858a5a63b07e9c7bc33952b83f7b2c46e 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s%2$s" - "%1$d일" - "%1$d%2$d시간" - "%1$d%2$d시간" - "%1$d시간" - "%1$d시간 %2$d분" - "%1$d시간 %2$d분" - "%1$d분" - "%1$d분" - "%1$d%2$d초" - "%1$d%2$d초" - "%1$d초" - "%1$d초" "<제목 없음>" "(전화번호 없음)" "알 수 없음" @@ -95,11 +79,13 @@ "음성/긴급 서비스를 이용할 수 없음" "현재 위치에서 모바일 네트워크가 서비스 제공을 일시적으로 중단했습니다." "네트워크에 연결할 수 없습니다." - "수신 상태를 개선하려면 시스템 > 네트워크 및 인터넷 > 모바일 네트워크 > 기본 네트워크 유형에서 선택된 유형을 변경해 보세요." + "수신 상태를 개선하려면 설정 > 네트워크 및 인터넷 > 모바일 네트워크 > 기본 네트워크 유형에서 선택된 유형을 변경해 보세요." + "Wi‑Fi 통화가 활성화됨" + "긴급 전화를 걸려면 모바일 네트워크에 연결되어 있어야 합니다." "알림" "착신전환" "긴급 콜백 모드" - "모바일 데이터 알림" + "모바일 데이터 상태" "SMS 메시지" "음성사서함 메시지" "Wi-Fi 통화" @@ -1231,7 +1217,7 @@ "아직 %s 꺼내는 중…" "삭제하지 마세요." "설정" - "꺼내기" + "마운트 해제" "둘러보기" "%s 없음" "기기 다시 삽입" @@ -1780,4 +1766,5 @@ "SIM이 프로비저닝되지 않음" "SIM이 허용되지 않음" "전화가 허용되지 않음" + "팝업 창" diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index a983446e557cdec27a238f0cf381fbde3d8355d2..fefc82fef879352b9f92876d779890cc7963e4a6 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -21,24 +21,8 @@ "Б" - "Кб" - "Мб" - "Гб" - "ТБ" "ПБ" "%1$s %2$s" - "%1$d күн" - "%1$d күн %2$d с" - "%1$d күн %2$d с" - "%1$d с" - "%1$d с. %2$d мүн" - "%1$d саат %2$d мүн" - "%1$d мүн" - "%1$d мүн." - "%1$d мүн. %2$d сек" - "%1$d мүн. %2$d сек" - "%1$d сек" - "%1$d сек" "<Баш аты жок>" "(Телефон номери жок)" "Белгисиз" @@ -95,11 +79,13 @@ "Бардык чалуулар жана кызматтар бөгөттөлгөн" "Өзгөчө кырдаалдагы кызматтар сиз жайгашкан жердеги мобилдик тармак тарабынан убактылуу бөгөттөлгөн" "Тармакка туташпай жатат" - "Кабыл алуу мүмкүнчүлүгүн жакшыртуу үчүн Тутум > Тармак жана Интернет > Мобилдик тармактар > Тандалган тармак бөлүмүнөн тармактын түрүн өзгөртүп көрүңүз." + "Кабыл алуу мүмкүнчүлүгүн жакшыртуу үчүн Жөндөөлөр > Тармак жана Интернет > Мобилдик тармактар > Тандалган тармак бөлүмүнөн тармактын түрүн өзгөртүп көрүңүз." + "Wi‑Fi аркылуу чалуу жүрүп жатат" + "Шашылыш чалуу үчүн мобилдик тармак талап кылынат." "Эскертүүлөр" "Чалууну башка номерге багыттоо" "Шашылыш кайра чалуу режими" - "Мобилдик Интернеттин эскертүүлөрү" + "Мобилдик Интернеттин абалы" "SMS билдирүүлөрү" "Үн почтасынын билдирүүлөрү" "Wi-Fi аркылуу чалуу" @@ -1781,4 +1767,5 @@ "SIM карта таанылган жок" "SIM картаны колдонууга тыюу салынган" "Телефонду колдонууга тыюу салынган" + "Калкып чыкма терезе" diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 0d105d361660f147fbe07b145b14cb581c3ed57d..0d84b8947ac24e0045fa2b7c2f1892d8ac263128 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ມື້" - "%1$d ມື້ %2$d ຊມ" - "%1$d ມື້ %2$d ຊມ" - "%1$d ຊມ" - "%1$d ຊມ %2$d ນທ" - "%1$d ຊມ %2$d ນທ" - "%1$d ນທ" - "%1$d ​ນ​ທ" - "%1$d ນທ %2$d ວິ" - "%1$d ນທ %2$d ວິ" - "%1$d ວິ" - "%1$d ວິ" "<ບໍ່ມີຊື່>" "(ບໍ່ມີເບີໂທລະສັບ)" "​ບໍ່​ຮູ້​ຈັກ" @@ -95,11 +79,13 @@ "ບໍ່ມີບໍລິການສຽງ/ສຸກເສີນ" "ເຄືອຂ່າຍຂອງທ່ານບໍ່ໄດ້ໃຫ້ບໍລິການຢູ່ສະຖານທີ່ນີ້ເປັນການຊົ່ວຄາວ" "Can’t reach network" - "ເພື່ອປັບປຸງການຮັບສັນຍານ, ໃຫ້ລອງປ່ຽນປະເພດທີ່ເລືອກໄວ້ທີ່ ລະບົບ > ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ > ເຄືອຂ່າຍມືຖື > ປະເພດເຄືອຂ່າຍທີ່ຕ້ອງການ." + "ເພື່ອປັບປຸງການຮັບສັນຍານ, ໃຫ້ລອງປ່ຽນປະເພດທີ່ເລືອກໄວ້ຢູ່ທີ່ ການຕັ້ງຄ່າ > ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ > ເຄືອຂ່າຍມືຖື > ປະເພດເຄືອຂ່າຍທີ່ຕ້ອງການ." + "ການໂທ Wi‑Fi ເຮັດວຽກຢູ່" + "ການໂທສຸກເສີນຕ້ອງໃຊ້ການເຊື່ອມຕໍ່ເຄືອຂ່າຍ." "ການເຕືອນ" "ການໂອນສາຍ" "ໂໝດໂທກັບສຸກເສີນ" - "ການແຈ້ງເຕືອນອິນເຕີເນັດມືຖື" + "ສະຖານະອິນເຕີເນັດມືຖື" "ຂໍ້ຄວາມ SMS" "ຂໍ້ຄວາມສຽງ" "ການ​ໂທ Wi-Fi" @@ -1780,4 +1766,5 @@ "ບໍ່ມີການນຳໃຊ້ SIM" "ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ SIM" "ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ໂທລະສັບ" + "ໜ້າຈໍປັອບອັບ" diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 420edcc51b7b73888c4c03e5f8cba900a7f36725..37baa92abb372697f05466f5a291235db547e820 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d d." - "%1$d d. %2$d val." - "%1$d d. %2$d val." - "%1$d val." - "%1$d val. %2$d min." - "%1$d val. %2$d min." - "%1$d min." - "%1$d min." - "%1$d min. %2$d sek." - "%1$d min. %2$d sek." - "%1$d sek." - "%1$d sek." "<Be pavadinimo>" "(Nėra telefono numerio)" "Nežinoma" @@ -97,11 +81,13 @@ "Balso skambučių / skambučių pagalbos numeriais paslauga neteikiama" "Laikinai nesiūloma mobiliojo ryšio tinkle jūsų vietovėje" "Nepavyko pasiekti tinklo" - "Kad pagerintumėte ryšį, pabandykite pakeisti tipą, pasirinktą skiltyje „Nustatymai“ > „Tinklas ir internetas“ > „Mobiliojo ryšio tinklai“ > „Pageidaujamas tinklo tipas“." + "Kad pagerintumėte ryšį, pabandykite pakeisti tipą, pasirinktą skiltyje „Nustatymai“ > „Tinklas ir internetas“ > „Mobiliojo ryšio tinklai“ > „Pageidaujamas tinklo tipas“." + "„Wi-Fi“ skambinimas aktyvus" + "Kad būtų galima skambinti pagalbos numeriais, būtina naudoti mobiliojo ryšio tinklą." "Įspėjimai" "Skambučio peradresavimas" "Atskambinimo pagalbos numeriu režimas" - "Mobiliojo ryšio duomenų įspėjimai" + "Mobiliojo ryšio duomenų būsena" "SMS pranešimai" "Balso pašto pranešimai" "„Wi-Fi“ skambinimas" @@ -1848,4 +1834,5 @@ "SIM kortelė neteikiama" "SIM kortelė neleidžiama" "Telefonas neleidžiamas" + "Iššokantysis langas" diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 0216e37f87c2bf1f18abc2ee6bb7cbd2831c1424..1a0656d8471aa7a3cf5f14592a6aa7140322b602 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d d." - "%1$d d. %2$d h" - "%1$d d. %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Bez nosaukuma>" "(Nav tālruņa numura)" "Nezināms" @@ -96,11 +80,13 @@ "Balss un ārkārtas izsaukumu pakalpojums nedarbojas" "Pagaidām netiek piedāvāts mobilajā tīklā jūsu atrašanās vietā" "Nevar sasniegt tīklu" - "Lai uzlabotu uztveršanu, mainiet atlasīto veidu sadaļā Sistēma > Tīkls un internets > Mobilie tīkli > Ieteicamais tīkla veids." + "Lai uzlabotu uztveršanu, mainiet atlasīto veidu sadaļā Iestatījumi > Tīkls un internets > Mobilie tīkli > Ieteicamais tīkla veids." + "Wi‑Fi zvani ir aktīvi" + "Lai veiktu ārkārtas zvanus, ir nepieciešams mobilais tīkls." "Brīdinājumi" "Zvanu pāradresācija" "Ārkārtas atzvana režīms" - "Mobilo datu brīdinājumi" + "Mobilo datu statuss" "Īsziņas" "Balss pasta ziņojumi" "Wi-Fi zvani" @@ -1814,4 +1800,5 @@ "SIM karte netiek nodrošināta" "SIM karti nav atļauts izmantot" "Tālruni nav atļauts izmantot" + "Uznirstošais logs" diff --git a/packages/SystemUI/res-keyguard/values-sw380dp/dimens.xml b/core/res/res/values-mcc302-mnc370-b+sr+Latn/strings.xml similarity index 57% rename from packages/SystemUI/res-keyguard/values-sw380dp/dimens.xml rename to core/res/res/values-mcc302-mnc370-b+sr+Latn/strings.xml index fc0e85d26bae239062694a8ee354a9f1071ebb29..b93949e190c7a451b9ec84eecd5cdd971498cfae 100644 --- a/packages/SystemUI/res-keyguard/values-sw380dp/dimens.xml +++ b/core/res/res/values-mcc302-mnc370-b+sr+Latn/strings.xml @@ -1,9 +1,9 @@ - - + --> - - - 340dp - \ No newline at end of file + + + "%s" + "%s Wi-Fi" + + diff --git a/core/res/res/values-mcc302-mnc370-be/strings.xml b/core/res/res/values-mcc302-mnc370-be/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..74d4f17ce6432bd4a2a3731b7f26644eeaf71e4a --- /dev/null +++ b/core/res/res/values-mcc302-mnc370-be/strings.xml @@ -0,0 +1,26 @@ + + + + + + "%s" + "Wi-Fi %s" + + diff --git a/core/res/res/values-mcc302-mnc370-bs/strings.xml b/core/res/res/values-mcc302-mnc370-bs/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..b93949e190c7a451b9ec84eecd5cdd971498cfae --- /dev/null +++ b/core/res/res/values-mcc302-mnc370-bs/strings.xml @@ -0,0 +1,26 @@ + + + + + + "%s" + "%s Wi-Fi" + + diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml index 28cca62c8b8a494fb6a76f9f081a722da40758fe..1241a9d029d6b2fce67b85edcc6d7e3553e27953 100644 --- a/core/res/res/values-mcc302-mnc370/config.xml +++ b/core/res/res/values-mcc302-mnc370/config.xml @@ -35,7 +35,7 @@ --> 1410 - + SUPL_HOST=supl.google.com SUPL_PORT=7275 diff --git a/core/res/res/values-mcc302-mnc720-b+sr+Latn/strings.xml b/core/res/res/values-mcc302-mnc720-b+sr+Latn/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b2336d8006d161b02afc4e34f22ffcb18f96bed --- /dev/null +++ b/core/res/res/values-mcc302-mnc720-b+sr+Latn/strings.xml @@ -0,0 +1,26 @@ + + + + + + "%s" + "%s Wi-Fi" + + diff --git a/core/res/res/values-mcc302-mnc720-be/strings.xml b/core/res/res/values-mcc302-mnc720-be/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..20e4f47ad6e12fe07cde0946895eb3b84e67941d --- /dev/null +++ b/core/res/res/values-mcc302-mnc720-be/strings.xml @@ -0,0 +1,26 @@ + + + + + + "%s" + "Wi-Fi %s" + + diff --git a/core/res/res/values-mcc302-mnc720-bs/strings.xml b/core/res/res/values-mcc302-mnc720-bs/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b2336d8006d161b02afc4e34f22ffcb18f96bed --- /dev/null +++ b/core/res/res/values-mcc302-mnc720-bs/strings.xml @@ -0,0 +1,26 @@ + + + + + + "%s" + "%s Wi-Fi" + + diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml index c322bb99c48c81069578fa7ed29a7e5968fda91e..ef1ecd29845cc47c60e2e20a86f67636666a2c92 100644 --- a/core/res/res/values-mcc302-mnc720/config.xml +++ b/core/res/res/values-mcc302-mnc720/config.xml @@ -37,7 +37,7 @@ --> 1430 - + SUPL_HOST=supl.google.com SUPL_PORT=7275 diff --git a/core/res/res/values-mcc310-mnc030-da/strings.xml b/core/res/res/values-mcc310-mnc030-da/strings.xml index dab49128b54b355ec8f10b325f67c34e172cfa8f..c45e3be4bd7a3d42ff8733b6a83a62501abe78b4 100644 --- a/core/res/res/values-mcc310-mnc030-da/strings.xml +++ b/core/res/res/values-mcc310-mnc030-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc310-mnc170-da/strings.xml b/core/res/res/values-mcc310-mnc170-da/strings.xml index 98ab33627c96fbb026f0b36c7796939a99982cde..8580fb355bd16f236605f629f82a26c2564bc52b 100644 --- a/core/res/res/values-mcc310-mnc170-da/strings.xml +++ b/core/res/res/values-mcc310-mnc170-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc310-mnc280-da/strings.xml b/core/res/res/values-mcc310-mnc280-da/strings.xml index 180c523a4308e7e806581db7aed7d45f81ae31ac..6a8e40b2f4626b58e271c48ea6565ef84e4974fc 100644 --- a/core/res/res/values-mcc310-mnc280-da/strings.xml +++ b/core/res/res/values-mcc310-mnc280-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc310-mnc380-da/strings.xml b/core/res/res/values-mcc310-mnc380-da/strings.xml index 7dda72cf76eccef2aa453503697dc8aff29fc380..cd4c796edff3b13fa8915f1fb42579209d78062f 100644 --- a/core/res/res/values-mcc310-mnc380-da/strings.xml +++ b/core/res/res/values-mcc310-mnc380-da/strings.xml @@ -20,6 +20,6 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" diff --git a/core/res/res/values-mcc310-mnc410-da/strings.xml b/core/res/res/values-mcc310-mnc410-da/strings.xml index 38c47b3b276efa4111a241dbd9b019f92b7fdf4e..3c5b9eedb6d96769d6f3ae803b49d46001fe2a65 100644 --- a/core/res/res/values-mcc310-mnc410-da/strings.xml +++ b/core/res/res/values-mcc310-mnc410-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc310-mnc560-da/strings.xml b/core/res/res/values-mcc310-mnc560-da/strings.xml index 857e04020e436c253229a5db52b18243227776bd..95c214ba657deb8165372e361c0078ce06815d46 100644 --- a/core/res/res/values-mcc310-mnc560-da/strings.xml +++ b/core/res/res/values-mcc310-mnc560-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc310-mnc950-da/strings.xml b/core/res/res/values-mcc310-mnc950-da/strings.xml index e63a586bbb630e26dbdcbff4926c9da0cc2f00f1..97c801b3494cc07940cc242eafad3a043cda31c6 100644 --- a/core/res/res/values-mcc310-mnc950-da/strings.xml +++ b/core/res/res/values-mcc310-mnc950-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mcc311-mnc180-da/strings.xml b/core/res/res/values-mcc311-mnc180-da/strings.xml index 6fadac14940e94229b03f1174926989784d502bd..5bcc43db1ad214cd1164ca82758bc20c48925094 100644 --- a/core/res/res/values-mcc311-mnc180-da/strings.xml +++ b/core/res/res/values-mcc311-mnc180-da/strings.xml @@ -20,7 +20,7 @@ - "SIM-kort leveres ikke MM#2" + "SIM-kortet er ikke aktiveret MM#2" "SIM-kort er ikke tilladt MM#3" "Telefonen har ikke adgangstilladelse MM#6" diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index b88d1b9120375fbe908ab1ee6440eac68aa75c4d..4a53c2c199c633fae046c33133511f82103c546f 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -21,24 +21,8 @@ "Б" - "КБ" - "МБ" - "ГБ" - "ТБ" "ПБ" "%1$s %2$s" - "%1$d дена" - "%1$d ден %2$d ч." - "%1$d ден %2$d ч." - "%1$d ч." - "%1$d ч. %2$d мин." - "%1$d ч. %2$d мин." - "%1$d мин." - "%1$d мин." - "%1$d мин. %2$d с." - "%1$d мин. %2$d с." - "%1$d сек." - "%1$d сек." "<Без наслов>" "(Нема телефонски број)" "Непознато" @@ -95,11 +79,13 @@ "Нема услуга за говорни/итни повици" "Привремено не се нуди од мобилната мрежа на вашата локација" "Не може да се дојде до мрежата" - "За подобрување на приемот, обидете се да го промените избраниот тип во: Систем > Мрежа и интернет > Мобилни мрежи > Претпочитан тип мрежа." + "За подобрување на приемот, обидете се да го промените избраниот тип во „Поставки > Мрежа и интернет > Мобилни мрежи > Претпочитан тип мрежа“." + "„Повикување преку Wi‑Fi“ е активна" + "За итните повици е потребна мобилна мрежа." "Предупредувања" "Проследување повик" "Режим на итен повратен повик" - "Предупредувања за мобилен интернет" + "Статус на мобилна мрежа" "SMS-пораки" "Пораки од говорна пошта" "Повикување преку Wi-Fi" @@ -984,7 +970,7 @@ "Телефон" "„Карти“" "Прелистувач" - "Меморијата е речиси полна" + "Капацитетот е речиси полн" "Некои системски функции може да не работат" "Нема доволно меморија во системот. Проверете дали има слободен простор од 250 МБ и рестартирајте." "%1$s работи" @@ -1782,4 +1768,5 @@ "Не е обезбедена SIM-картичка" "Не е дозволена SIM-картичка" "Не е дозволен телефон" + "Појавен прозорец" diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index dcb2bbaa0b6960e8e02d4cd214b85c7b1eb8982c..92bebc7ce8050958826ee0b717e189ced6b0637a 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ദിവസം" - "%1$d ദിവസം %2$d മണിക്കൂർ" - "%1$d ദിവസം %2$d മണിക്കൂർ" - "%1$d മണിക്കൂർ" - "%1$d മണിക്കൂർ %2$d മിനിറ്റ്" - "%1$d മണിക്കൂർ %2$d മിനിറ്റ്" - "%1$d മിനിറ്റ്" - "%1$d മി." - "%1$d മിനിറ്റ് %2$d സെക്കൻഡ്" - "%1$d മിനിറ്റ് %2$d സെക്കൻഡ്" - "%1$d സെക്കൻഡ്" - "%1$d സെക്കൻഡ്" "<ശീർഷകമില്ലാത്ത>" "(ഫോൺ നമ്പറില്ല)" "അജ്ഞാതം" @@ -95,11 +79,13 @@ "വോയ്സ്/അടിയന്തിര സേവനമില്ല" "നിങ്ങളുടെ ലൊക്കേഷനിൽ മൊബൈൽ നെറ്റ്‌വര്‍ക്ക് താൽക്കാലികമായി ലഭ്യമല്ല" "നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റുചെയ്യാനാവുന്നില്ല" - "സ്വീകരണം മെച്ചപ്പെടുത്തുന്നതിന് സിസ്റ്റം > നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും > മൊബൈൽ നെറ്റ്‌വർക്കുകൾ > തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് തരം എന്നതിൽ തിരഞ്ഞെടുത്തിരിക്കുന്ന തരം മാറ്റിക്കൊണ്ട് ശ്രമിച്ചുനോക്കുക." + "സ്വീകരണം മെച്ചപ്പെടുത്തുന്നതിന് സിസ്‌റ്റം > നെറ്റ്‌വർക്കും ഇ‌ന്റെർനെറ്റും > മൊബൈൽ നെറ്റ്‌വർക്കുകൾ > തിരഞ്ഞെടുത്ത നെറ്റ്‌വർക്ക് തരം എന്നതിൽ തിരഞ്ഞെടുത്തിരിക്കുന്ന തരം മാറ്റിക്കൊണ്ട് ശ്രമിച്ചുനോക്കുക." + "വൈ-ഫൈ കോളിംഗ് സജീവമാണ്" + "എമർജൻസി കോളുകൾ ചെയ്യാൻ ഒരു മൊബൈൽ നെറ്റ്‌വർക്ക് ആവശ്യമാണ്." "അലേർട്ടുകൾ" "കോൾ ഫോർവേഡിംഗ്" "അടിയന്തര കോൾബാക്ക് മോഡ്" - "മൊബൈൽ ഡാറ്റ അലേർട്ടുകൾ" + "മൊബൈൽ ഡാറ്റാ നില" "SMS സന്ദേശങ്ങൾ" "വോയ്‌സ്‌മെയിൽ സന്ദേശങ്ങൾ" "വൈഫൈ കോളിംഗ്" @@ -1780,4 +1766,5 @@ "SIM പ്രൊവിഷൻ ചെയ്തിട്ടില്ല" "SIM അനുവദനീയമല്ല" "ഫോൺ അനുവദനീയമല്ല" + "പോപ്പ് അപ്പ് വിൻഡോ" diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 01f0c5291781b7f6c68d66047fda3fab01e843bf..3327739d8389ef6e6b0d89213e456b8876099cc9 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -21,24 +21,8 @@ "B" - "килобайт" - "МБ" - "ГБ" - "TБ" "ПБ" "%1$s %2$s" - "%1$d өдөр" - "%1$d өдөр %2$d цаг" - "%1$d өдөр %2$d цаг" - "%1$d цаг" - "%1$d цаг %2$d минут" - "%1$d цаг %2$d мин" - "%1$d мин" - "%1$d минут" - "%1$d мин %2$d секунд" - "%1$d мин %2$d сек" - "%1$d сек" - "%1$d сек" "<Гарчиггүй>" "(Утасны дугаар байхгүй)" "Тодорхойгүй" @@ -95,11 +79,13 @@ "Дуу хоолой/яаралтай үйлчилгээ алга" "Таны байршилд таны мобайл сүлжээнээс түр хугацаанд блоклосон" "Сүлжээнд холбогдох боломжгүй байна" - "Хүлээн авалтыг сайжруулахын тулд систем, сүлжээ, интернэт, мобайл сүлжээнд сонгосон сүлжээний төрлийг өөрчилнө үү." + "Хүлээн авалтыг сайжруулахын тулд Тохиргоо > Сүлжээ & Интернэт > Мобайл сүлжээ > Сонгосон сүлжээний төрөл хэсгийг сонгон төрлөө өөрчилнө үү." + "Wi‑Fi дуудлага идэвхтэй байна" + "Яаралтай дуудлага хийхэд мобайл сүлжээнд холбогдсон байх шаардлагатай." "Сануулга" "Дуудлага шилжүүлэх" "Яаралтай дуудлага хийх горим" - "Мобайл дата сануулга" + "Мобайл датаны төлөв" "SMS мессеж" "Дуут шуудангийн мессеж" "Wi-Fi дуудлага" @@ -1778,4 +1764,5 @@ "SIM-г хийгээгүй" "SIM боломжгүй" "Утас боломжгүй" + "гэнэт гарч ирэх цонх" diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 66de97b6d9eb9debee6fc9c2b88e2ebe01a6a446..86fdf40b9cbd6c4f4143c473d11cfc63cfd40913 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d दिवस" - "%1$d दिवस %2$d तास" - "%1$d दिवस %2$d तास" - "%1$d तास" - "%1$d ता %2$d मि" - "%1$d ता %2$d मि" - "%1$d मिनिटे" - "%1$d मिनिट" - "%1$d मि %2$d से" - "%1$d मि %2$d से" - "%1$d सेकंद" - "%1$d सेकंद" "<अशीर्षकांकित>" "(कोणताही फोन नंबर नाही)" "अज्ञात" @@ -52,7 +36,7 @@ "सेवा अक्षम केली गेली आहे." "नोंदणी यशस्वी झाली." "मिटवणे यशस्वी झाले." - "अयोग्य संकेतशब्द." + "अयोग्य पासवर्ड." "MMI पूर्ण." "आपण टाइप केलेला जुना पिन योग्य नाही." "आपण टाइप केलेला PUK योग्य नाही." @@ -75,7 +59,7 @@ "कॉल फॉरवर्डिंग" "कॉल प्रतीक्षा" "कॉल सोडून" - "संकेतशब्द बदल" + "पासवर्ड बदल" "पिन बदल" "कॉल करण्‍याचा नंबर आहे" "कॉल करणारे नंबर प्रतिबंधित" @@ -95,11 +79,13 @@ "व्हॉइस/आणीबाणी सेवा नाही" "तुम्‍ही असलेल्‍या स्‍थानी मोबाइल नेटवर्क तात्‍पुरते उपलब्‍ध नाही" "नेटवर्कवर पोहोचूू शकत नाही" - "रीसेप्शन सुधारण्यासाठी सिस्टम > नेटवर्क आणि इंटरनेट > मोबाइल नेटवर्क > अग्रमानांकित नेटवर्क प्रकार येथे निवडलेला प्रकार बदलून पहा." + "रीसेप्शन सुधारण्यासाठी, सेटिंग्ज > नेटवर्क आणि इंटरनेट > मोबाइल नेटवर्क > अग्रमानांकित नेटवर्क प्रकार बदलून पहा." + "वाय-फाय कॉलिंग चालू आहे" + "आपात्कालीन कॉलसाठी मोबाइल नेटवर्क असणे आवश्यक आहे." "अलर्ट" "कॉल फॉरवर्डिंग" "इमर्जन्सी कॉलबॅक मोड" - "मोबाइल डेटा अलर्ट" + "मोबाइल डेटा स्थिती" "SMS संदेश" "व्हॉइसमेल संदेश" "वाय-फाय कॉलिंग" @@ -205,9 +191,9 @@ "Android सिस्टम अपडेट" "अपडेट करण्याची तयारी करत आहे…" "अपडेट पॅकेज प्रक्रिया करत आहे…" - "रीस्टार्ट करीत आहे..." + "रीस्टार्ट करत आहे..." "फॅक्‍टरी डेटा रीसेट" - "रीस्टार्ट करीत आहे..." + "रीस्टार्ट करत आहे..." "बंद होत आहे…" "आपला टॅबलेट बंद होईल." "आपला टीव्ही बंद होईल." @@ -228,7 +214,7 @@ "बग रीपोर्ट घ्या" "ई-मेल संदेश म्हणून पाठविण्यासाठी, हे तुमच्या सद्य डिव्हाइस स्थितीविषयी माहिती संकलित करेल. बग रीपोर्ट सुरू करण्यापासून तो पाठविण्यापर्यंत थोडा वेळ लागेल; कृपया धीर धरा." "परस्परसंवादी अहवाल" - "बहुतांश प्रसंगांमध्ये याचा वापर करा. ते आपल्याला अहवालाच्या प्रगतीचा मागोवा घेण्याची, समस्येविषयी आणखी तपाशील प्रविष्ट करण्याची आणि स्क्रीनशॉट घेण्याची अनुमती देते. ते कदाचित अहवाल देण्यासाठी बराच वेळ घेणारे कमी-वापरलेले विभाग वगळू शकते." + "बहुतांश प्रसंगांमध्ये याचा वापर करा. ते आपल्याला अहवालाच्या प्रगतीचा मागोवा घेण्याची, समस्येविषयी आणखी तपाशील एंटर करण्याची आणि स्क्रीनशॉट घेण्याची अनुमती देते. ते कदाचित अहवाल देण्यासाठी बराच वेळ घेणारे कमी-वापरलेले विभाग वगळू शकते." "संपूर्ण अहवाल" "तुमचे डिव्हाइस प्रतिसाद देत नाही किंवा खूप धीमे असते किंवा तुम्हाला सर्व अहवाल विभागांची आवश्यकता असते तेव्हा कमीतकमी सिस्टम हस्तक्षेपासाठी या पर्यायाचा वापर करा. तुम्हाला आणखी तपशील एंटर करण्याची किंवा अतिरिक्त स्क्रीनशॉट घेण्याची अनुमती देत नाही." @@ -464,13 +450,13 @@ "WiMAX नेटवर्कवरून टीव्ही कनेक्ट करण्यासाठी आणि त्यावरून टीव्ही डिस्कनेक्ट करण्यासाठी अॅपला अनुमती देते." "WiMAX नेटवर्कवर फोन कनेक्ट करण्यास आणि त्यावरून फोन डिस्कनेक्ट करण्यास अॅप ला अनुमती देते." "ब्लूटूथ डीव्हाइससह जोडा" - "टॅबलेटवर ब्लूटूथ चे कॉंफिगरेशन पाहण्यासाठी आणि पेअर केलेल्या डीव्हाइससह कनेक्शन स्थापित करण्यासाठी आणि स्वीकारण्यासाठी, अॅप ला अनुमती देते." - "टीव्हीवर ब्लूटूथचे कॉंफिगरेशन पाहण्यासाठी आणि जोडलेल्या डीव्हाइससह कनेक्शन स्थापित करण्यासाठी आणि स्वीकारण्यासाठी अॅपला अनुमती देते." - "फोनवर ब्लूटूथ चे कॉंफिगरेशन पाहण्यासाठी आणि पेअर केलेल्या डीव्हाइससह कनेक्शन स्थापित करण्यासाठी आणि स्वीकारण्यासाठी, अॅप ला अनुमती देते." + "टॅबलेटवर ब्लूटूथ चे कॉंफिगरेशन पाहण्यासाठी आणि पेअर केलेल्या डीव्हाइससह कनेक्शन इंस्टॉल करण्यासाठी आणि स्वीकारण्यासाठी, अॅप ला अनुमती देते." + "टीव्हीवर ब्लूटूथचे कॉंफिगरेशन पाहण्यासाठी आणि जोडलेल्या डीव्हाइससह कनेक्शन इंस्टॉल करण्यासाठी आणि स्वीकारण्यासाठी अॅपला अनुमती देते." + "फोनवर ब्लूटूथ चे कॉंफिगरेशन पाहण्यासाठी आणि पेअर केलेल्या डीव्हाइससह कनेक्शन इंस्टॉल करण्यासाठी आणि स्वीकारण्यासाठी, अॅप ला अनुमती देते." "फील्ड जवळील कम्युनिकेशन नियंत्रित करा" "फील्ड जवळील कम्युनिकेशन (NFC) टॅग, कार्डे आणि वाचक यांच्यासह संवाद करण्यासाठी अॅपला अनुमती देते." "आपले स्क्रीन लॉक अक्षम करा" - "कीलॉक आणि कोणतीही संबद्ध संकेतशब्द सुरक्षितता अक्षम करण्यासाठी अॅप ला अनुमती देते. उदाहरणार्थ, येणारा फोन कॉल प्राप्त करताना फोन कीलॉक अक्षम करतो, नंतर जेव्हा कॉल समाप्त होतो तेव्हा तो कीलॉक पुन्हा-सक्षम करतो." + "कीलॉक आणि कोणतीही संबद्ध पासवर्ड सुरक्षितता अक्षम करण्यासाठी अॅप ला अनुमती देते. उदाहरणार्थ, येणारा फोन कॉल प्राप्त करताना फोन कीलॉक अक्षम करतो, नंतर जेव्हा कॉल समाप्त होतो तेव्हा तो कीलॉक पुन्हा-सक्षम करतो." "फिंगरप्रिंट हार्डवेअर व्यवस्थापित करा" "वापर करण्याकरिता फिंगरप्रिंट टेम्पलेट जोडण्यासाठी आणि हटविण्यासाठी पद्धती रद्द करण्यास अॅपला अनुमती देते." "फिंगरप्रिंट हार्डवेअर वापरा" @@ -553,15 +539,15 @@ "वाहक सेवांवर प्रतिबद्ध करण्यासाठी होल्डरला अनुमती देते. सामान्य अॅप्ससाठी कधीही आवश्यकता नसावी." "व्यत्यय आणू नका अॅक्सेस करा" "व्यत्यय आणू नका कॉन्फिगरेशन वाचण्यासाठी आणि लिहिण्यासाठी अॅपला अनुमती देते." - "संकेतशब्द नियम सेट करा" + "पासवर्ड नियम सेट करा" "स्क्रीन लॉक पासवर्ड आणि पिन मध्ये अनुमती दिलेले लांबी आणि वर्ण नियंत्रित करा." "स्क्रीन अनलॉक प्रयत्नांचे परीक्षण करा" - "टाइप केलेल्या अयोग्य संकेतशब्दांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा टॅबलेट लॉक करा किंवा बरेच संकेतशब्द टाइप केले असल्यास टॅबलेटचा सर्व डेटा मिटवा." - "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या संकेतशब्दांच्या संख्येचे परीक्षण करा आणि टीव्ही लॉक करा किंवा अनेक चुकीचे संकेतशब्द टाइप केले असल्यास टीव्हीचा सर्व डेटा मिटवा." - "टाइप केलेल्या अयोग्य संकेतशब्दांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा फोन लॉक करा किंवा बरेच संकेतशब्द टाइप केले असल्यास फोनचा सर्व डेटा मिटवा." - "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या संकेतशब्दांच्या संख्येचे परीक्षण करा आणि टॅबलेट लॉक करा किंवा अनेक चुकीचे संकेतशब्द टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." - "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या संकेतशब्दांच्या संख्येचे परीक्षण करा आणि टीव्ही लॉक करा किंवा अनेक चुकीचे संकेतशब्द टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." - "टाइप केलेल्या अयोग्य संकेतशब्दांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा फोन लॉक करा किंवा बरेच संकेतशब्द टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." + "टाइप केलेल्या अयोग्य पासवर्डांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा टॅबलेट लॉक करा किंवा बरेच पासवर्ड टाइप केले असल्यास टॅबलेटचा सर्व डेटा मिटवा." + "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्डांच्या संख्येचे परीक्षण करा आणि टीव्ही लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास टीव्हीचा सर्व डेटा मिटवा." + "टाइप केलेल्या अयोग्य पासवर्डांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा फोन लॉक करा किंवा बरेच पासवर्ड टाइप केले असल्यास फोनचा सर्व डेटा मिटवा." + "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्डांच्या संख्येचे परीक्षण करा आणि टॅबलेट लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." + "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्डांच्या संख्येचे परीक्षण करा आणि टीव्ही लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." + "टाइप केलेल्या अयोग्य पासवर्डांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा फोन लॉक करा किंवा बरेच पासवर्ड टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." "स्क्रीन लॉक बदला" "स्क्रीन लॉक बदला." "स्क्रीन लॉक करा" @@ -576,8 +562,8 @@ "कोणत्याही चेतावणी शिवाय या वापरकर्त्याचा या फोनवरील डेटा मिटवा." "डिव्हाइस समग्र प्रॉक्सी सेट करा" "धोरण सक्षम असताना वापरण्यासाठी डिव्हाइस समग्र प्रॉक्सी सेट करा. फक्त डिव्हाइस मालक समग्र प्रॉक्सी सेट करु शकतो." - "स्क्रीन लॉक संकेतशब्द कालबाह्यता सेट करा" - "लॉक-स्क्रीन संकेतशब्द किती वारंवार बदलणे आवश्यक आहे ते बदला." + "स्क्रीन लॉक पासवर्ड कालबाह्यता सेट करा" + "लॉक-स्क्रीन पासवर्ड किती वारंवार बदलणे आवश्यक आहे ते बदला." "स्टोरेज एंक्रिप्शन सेट करा" "स्टोअर केलेला अॅप डेटा एंक्रिप्ट केला जाणे आवश्यक आहे." "कॅमेरे अक्षम करा" @@ -702,8 +688,8 @@ "PUK आणि नवीन पिन कोड टाइप करा" "PUK कोड" "नवीन पिन कोड" - "संकेतशब्द टाइप करण्यासाठी टॅप करा" - "अनलॉक करण्यासाठी संकेतशब्द टाइप करा" + "पासवर्ड टाइप करण्यासाठी टॅप करा" + "अनलॉक करण्यासाठी पासवर्ड टाइप करा" "अनलॉक करण्यासाठी पिन टाइप करा" "अयोग्य पिन कोड." "अनलॉक करण्यासाठी, मेनू दाबा नंतर 0." @@ -742,7 +728,7 @@ "सिम कार्ड लॉक केलेले आहे." "सिम कार्ड अनलॉक करत आहे…" "तुम्ही आपला अनलॉक पॅटर्न %1$d वेळा अयोग्यरितीने काढला. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." - "आपण आपला संकेतशब्द %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." + "आपण आपला पासवर्ड %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "आपण आपला पिन %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुम्ही आपला अनलॉक पॅटर्न %1$d वेळा चुकीचा रेखांकित केला आहे. %2$d अधिक अयशस्वी प्रयत्नांनंतर, तुमच्याला आपले Google साइन इन वापरून आपला टॅब्लेट अनलॉक करण्यास सांगितले जाईल.\n\n %3$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुम्ही %1$d वेळा आपला अनलॉक पॅटर्न अयोग्यरीत्या काढला आहे. आणखी %2$d अयशस्वी प्रयत्नांनंतर, तुमच्याला आपले Google साइन इन वापरून आपला टीव्ही अनलॉक करण्यास सांगितले जाईल.\n\n %3$d सेकंदांनी पुन्हा प्रयत्न करा." @@ -759,10 +745,10 @@ "बरेच पॅटर्न प्रयत्न" "अनलॉक करण्यासाठी, आपल्या Google खात्यासह साइन इन करा." "वापरकर्तानाव (ईमेल)" - "संकेतशब्द" + "पासवर्ड" "साइन इन करा" "अवैध वापरकर्तानाव किंवा पासवर्ड." - "आपले वापरकर्तानाव किंवा संकेतशब्द विसरलात?\n ""google.com/accounts/recovery"" ला भेट द्या." + "आपले वापरकर्तानाव किंवा पासवर्ड विसरलात?\n ""google.com/accounts/recovery"" ला भेट द्या." "तपासत आहे..." "अनलॉक करा" "ध्वनी सुरु" @@ -791,7 +777,7 @@ "पॅटर्न अनलॉक." "चेहरा अनलॉक." "पिन अनलॉक." - "संकेतशब्द अनलॉक." + "पासवर्ड अनलॉक." "पॅटर्न क्षेत्र." "स्लाइड क्षेत्र." "?123" @@ -843,7 +829,7 @@ "आपल्या व्हॉइसमेल इनबॉक्समध्ये संदेश जोडण्यासाठी अॅप ला अनुमती देते." "ब्राउझर भौगोलिक स्थान परवानग्या सुधारित करा" "ब्राउझरच्या भौगोलिक स्थान परवानग्या सुधारित करण्यासाठी अॅप ला अनुमती देते. दुर्भावनापूर्ण अॅप्स यादृच्छिक वेबसाइटवर स्थान माहिती पाठविण्यास अनुमती देण्यासाठी याचा वापर करू शकतात." - "ब्राउझरने हा संकेतशब्द लक्षात ठेवावा असे आपण इच्छिता?" + "ब्राउझरने हा पासवर्ड लक्षात ठेवावा असे आपण इच्छिता?" "आत्ता नाही" "लक्षात ठेवा" "कधीही नाही" @@ -994,7 +980,7 @@ "ठीक" "रद्द करा" "लक्ष द्या" - "लोड करीत आहे..." + "लोड करत आहे..." "चालू" "बंद" "याचा वापर करून क्रिया पूर्ण करा" @@ -1058,9 +1044,9 @@ "संचयन ऑप्टिमाइझ करत आहे." "Android अपडेट संपवत आहे..." "श्रेणीसुधारणा पूर्ण होईपर्यंत काही अॅप्स योग्यरित्या कार्य करणार नाहीत" - "%1$s श्रेणीसुधारित करीत आहे…" + "%1$s श्रेणीसुधारित करत आहे…" "%2$d पैकी %1$d अॅप ऑप्टिमाइझ करत आहे." - "%1$s तयार करीत आहे." + "%1$s तयार करत आहे." "अॅप्स प्रारंभ करत आहे." "बूट समाप्त होत आहे." "%1$s चालत आहे" @@ -1074,7 +1060,7 @@ "%1$s ने मेमेरी मर्यादा वाढविली" "हीप डंप संकलित केला गेला आहे; सामायिक करण्यासाठी टॅप करा" "हीप डंप सामायिक करायचे?" - "%1$s प्रक्रियेने त्याची %2$s ची प्रक्रिया मेमरी मर्यादा ओलांडली आहे. त्याच्या विकासकासह सामायिक करण्यासाठी आपल्याकरिता हीप डंप उपलब्ध आहे. सावधगिरी बाळगा: या हीप डंपमध्ये आपली कोणतीही वैयक्तिक माहिती असू शकते ज्यात अॅप्लिकेशन प्रवेश करू शकतो." + "%1$s प्रक्रियेने त्याची %2$s ची प्रक्रिया मेमरी मर्यादा ओलांडली आहे. त्याच्या विकासकासह सामायिक करण्यासाठी तुमच्यासाठी हीप डंप उपलब्ध आहे. सावधगिरी बाळगा: या हीप डंपमध्ये आपली कोणतीही वैयक्तिक माहिती असू शकते ज्यात अॅप्लिकेशन प्रवेश करू शकतो." "मजकुरासाठी क्रिया निवडा" "रिंगर व्हॉल्यूम" "मीडिया व्हॉल्यूम" @@ -1185,7 +1171,7 @@ "यासाठी आपले पैसे खर्च होऊ शकतात" "ठीक" "USB हे डिव्हाइस चार्ज करत आहे" - "USB संलग्न केलेल्या डिव्हाइसला पॉवरचा पुरवठा करीत आहे" + "USB संलग्न केलेल्या डिव्हाइसला पॉवरचा पुरवठा करत आहे" "स्थानांतरणासाठी USB" "फोटो स्थानांतरणासाठी USB" "MIDI साठी USB" @@ -1210,11 +1196,11 @@ " ABCDEFGHIJKLMNOPQRSTUVWXYZ" " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" "इतर अ‍ॅप्सवर दाखवा" - "%s इतर अॅप्सवर प्रदर्शित करीत आहे" - "%s अन्‍य अॅप्सवर प्रदर्शित करीत आहे" + "%s इतर अॅप्सवर प्रदर्शित करत आहे" + "%s अन्‍य अॅप्सवर प्रदर्शित करत आहे" "%s ने हे वैशिष्ट्य वापरू नये असे आपण इच्छित असल्यास, सेटिंग्ज उघडण्यासाठी टॅप करा आणि ते बंद करा." "बंद करा" - "%s तयार करीत आहे" + "%s तयार करत आहे" "त्रुटींसाठी तपासत आहे" "नवीन %s आढळले" "फोटो आणि मीडिया स्थानांतरित करण्‍यासाठी" @@ -1250,7 +1236,7 @@ "दूषित झाले" "समर्थित नसलेले" "बाहेर काढत आहे…" - "फॉर्मेट करीत आहे..." + "फॉर्मेट करत आहे..." "घातले नाही" "कोणत्याही जुळणाऱ्या अॅक्टिव्हिटी आढळल्या नाहीत." "मीडिया आउटपुट मार्गस्थ करा" @@ -1363,7 +1349,7 @@ "पूर्ण झाले" "मोड बदल" "Shift" - "प्रविष्ट करा" + "एंटर करा" "एक अ‍ॅप निवडा" "%s लाँच करू शकलो नाही" "यांच्यासह सामायिक करा" @@ -1406,7 +1392,7 @@ "वैधता:" "रोजी जारी:" "रोजी मुदत संपेल:" - "सीरीअल नंबर:" + "सिरीअल नंबर:" "फिंगरप्रिंट:" "SHA-256 फिंगरप्रिंट:" "SHA-1 फिंगरप्रिंट:" @@ -1435,7 +1421,7 @@ "सेटिंग्ज" "‍डिस्कनेक्ट करा" "स्कॅन करत आहे..." - "कनेक्ट करीत आहे..." + "कनेक्ट करत आहे..." "उपलब्ध" "उपलब्ध नाही" "वापरात आहे" @@ -1446,15 +1432,15 @@ ", सुरक्षित" "पॅटर्न विसरलात" "चुकीचा पॅटर्न" - "चुकीचा संकेतशब्द" + "चुकीचा पासवर्ड" "चुकीचा पिन" "%1$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुमचा पॅटर्न काढा" - "सिम पिन प्रविष्ट करा" - "पिन प्रविष्ट करा" - "संकेतशब्द प्रविष्ट करा" - "सिम आता अक्षम केले आहे. सुरु ठेवण्यासाठी PUK कोड प्रविष्ट करा. तपशीलांसाठी वाहकाशी संपर्क साधा." - "इच्छित पिन कोड प्रविष्ट करा" + "सिम पिन एंटर करा" + "पिन एंटर करा" + "पासवर्ड एंटर करा" + "सिम आता अक्षम केले आहे. सुरु ठेवण्यासाठी PUK कोड एंटर करा. तपशीलांसाठी वाहकाशी संपर्क साधा." + "इच्छित पिन कोड एंटर करा" "इच्छित पिन कोड ची पुष्टी करा" "सिम कार्ड अनलॉक करत आहे…" "अयोग्य पिन कोड." @@ -1465,13 +1451,13 @@ "बरेच पॅटर्न प्रयत्न" "अनलॉक करण्यासाठी, आपल्या Google खात्यासह साइन इन करा." "वापरकर्तानाव (ईमेल)" - "संकेतशब्द" + "पासवर्ड" "साइन इन करा" "अवैध वापरकर्तानाव किंवा पासवर्ड." - "आपले वापरकर्तानाव किंवा संकेतशब्द विसरलात?\n ""google.com/accounts/recovery"" ला भेट द्या." + "आपले वापरकर्तानाव किंवा पासवर्ड विसरलात?\n ""google.com/accounts/recovery"" ला भेट द्या." "खाते तपासत आहे…" "आपण आपला पिन %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." - "आपण आपला संकेतशब्द %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." + "आपण आपला पासवर्ड %1$d वेळा अयोग्यरितीने टाइप केला आहे. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुम्ही आपला अनलॉक पॅटर्न %1$d वेळा अयोग्यरितीने काढला. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "आपण %1$d वेळा टॅबलेट अनलॉक करण्याचा अयोग्यपणे प्रयत्न केला. %2$d आणखी अयशस्वी प्रयत्नांनंतर, टॅबलेट फॅक्टरी डीफॉल्टवर रीसेट केला जाईल आणि वापरकर्ता डेटा गमावेल." "आपण %1$d वेळा टीव्ही अनलॉक करण्याचा अयोग्यरित्या प्रयत्न केला. आणखी %2$d अयशस्वी प्रयत्नांनंतर, टीव्ही फॅक्टरी डीफॉल्टवर रीसेट केला जाईल आणि सर्व वापरकर्ता डेटा गमावेल." @@ -1496,7 +1482,7 @@ "मोठे करणे" "वर्तमान वापरकर्ता %1$s." "%1$s वर स्विच करत आहे…" - "%1$s लॉग आउट करीत आहे…" + "%1$s लॉग आउट करत आहे…" "मालक" "एरर" "या बदलास आपल्या प्रशासकाद्वारे अनुमती नाही" @@ -1592,7 +1578,7 @@ "%s सेवा स्‍थापित केली" "सक्षम करण्यासाठी टॅप करा" "प्रशासक पिन एंटर करा" - "पिन प्रविष्ट करा" + "पिन एंटर करा" "चुकीचा" "वर्तमान पिन" "नवीन पिन" @@ -1765,7 +1751,7 @@ "<b>%4$s</b>मध्ये %1$s, %2$s आणि %3$s सेव्ह करायची?" "सेव्ह करा" "नाही, नको" - "संकेतशब्द" + "पासवर्ड" "पत्ता" "क्रेडिट कार्ड" "वापरकर्तानाव" @@ -1780,4 +1766,5 @@ "सिमसाठी तरतूद नाही" "सिमला अनुमती नाही" "फोनला अनुमती नाही" + "पॉपअप विंडो" diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index f0368c190e153775cf1119881383fd27c6152911..ff472c1ef03a101dacc90aa6bfa3630bd6ff260d 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -21,24 +21,8 @@ "B." - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d hari" - "%1$d hari %2$d jam" - "%1$d hari %2$d jam" - "%1$d jam" - "%1$d jam %2$d min" - "%1$d jam %2$d min" - "%1$d minit" - "%1$d minit" - "%1$d min %2$d saat" - "%1$d min %2$d saat" - "%1$d saat" - "%1$d saat" "<Tidak bertajuk>" "(Tiada nombor telefon)" "Tidak diketahui" @@ -95,11 +79,13 @@ "Tiada perkhidmatan suara/kecemasan" "Tidak ditawarkan oleh rangkaian mudah alih di lokasi anda untuk sementara waktu" "Tidak dapat mencapai rangkaian" - "Untuk memperbaik penerimaan, cuba tukar jenis rangkaian yang dipilih di Sistem > Rangkaian & Internet > Rangkaian mudah alih > Jenis rangkaian pilihan." + "Untuk memperbaik penerimaan, cuba tukar jenis rangkaian yang dipilih di Tetapan > Rangkaian & Internet > Rangkaian mudah alih > Jenis rangkaian pilihan." + "Panggilan Wi-Fi aktif" + "Rangkaian mudah alih diperlukan untuk membuat panggilan kecemasan." "Makluman" "Pemajuan panggilan" "Mod paggil balik kecemasan" - "Makluman data mudah alih" + "Status data mudah alih" "Mesej SMS" "Mesej mel suara" "Panggilan Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM tidak diperuntukkan" "SIM tidak dibenarkan" "Telefon tidak dibenarkan" + "Tetingkap Timbul" diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 58dc084f8ff1a446299ae371cbb3d1556e29c475..be25f73e407bd7f345768943768d205e7c3bd448 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ရက်" - "%1$d ရက် %2$d နာရီ" - "%1$d ရက်%2$d နာရီ" - "%1$d နာရီ" - "%1$d နာရီ %2$d မိနစ်" - "%1$d နာရီ %2$d မိနစ်" - "%1$d မိနစ်" - "%1$d မိနစ်" - "%1$d မိနစ် %2$d စက္ကန့်" - "%1$d မိနစ် %2$d စက္ကန့်" - "%1$d စက္ကန့်" - "%1$d စက္ကန့်" "<ခေါင်းစဉ်မဲ့>" "(ဖုန်းနံပါတ်မရှိပါ)" "မသိရ" @@ -95,11 +79,13 @@ "ဖုန်း/အရေးပေါ် ဝန်ဆောင်မှုများမရရှိနိုင်ပါ" "သင်၏ ဒေသတွင် မိုဘိုင်းကွန်ရက် ယာယီမရရှိနိုင်ပါ" "ကွန်ရက်ကို ချိတ်ဆက်၍မရပါ" - "လိုင်းဖမ်းယူမှု ကောင်းမွန်စေရန် စနစ် > ကွန်ရက်နှင့် အင်တာနက် > မိုဘိုင်းကွန်ရက်များ > အသုံးပြုလိုသည့် ကွန်ရက်အမျိုးအစားတွင် ရွေးချယ်ထားသည့် အမျိုးအစားကို ပြောင်းကြည့်ပါ။" + "လိုင်းဖမ်းယူမှု ကောင်းမွန်စေရန် ဆက်တင်များ > ကွန်ရက်နှင့် အင်တာနက် > မိုဘိုင်းကွန်ရက်များ > အသုံးပြုလိုသည့် ကွန်ရက်အမျိုးအစားတွင် ရွေးချယ်ထားသည့် အမျိုးအစားကို ပြောင်းကြည့်ပါ။" + "Wi‑Fi ခေါ်ဆိုမှုကို အသုံးပြုနေပါသည်" + "အရေးပေါ်ဖုန်းခေါ်ဆိုရန် မိုဘိုင်းကွန်ရက်ကို လိုအပ်သည်။" "သတိပေးချက်များ" "အဝင်ခေါ်ဆိုမှုအား ထပ်ဆင့်ပို့ခြင်း" "အရေးပေါ် ပြန်လည်ခေါ်ဆိုနိုင်သောမုဒ်" - "မိုဘိုင်းဒေတာ သတိပေးချက်များ" + "မိုဘိုင်းဒေတာ အခြေအနေ" "SMS မက်ဆေ့ဂျ်များ" "အသံမေးလ် မက်ဆေ့ဂျ်များ" "Wi-Fi ခေါ်ဆိုမှု" @@ -1780,4 +1766,5 @@ "ဆင်းမ်ကို ထောက်ပံ့မထားပါ" "ဆင်းမ်ကို ခွင့်မပြုပါ" "ဖုန်းကို ခွင့်မပြုပါ" + "ပေါ့ပ်အပ် ဝင်းဒိုး" diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index bf520bf914c863e8769ced0e3792e06781d14c9d..302df4c0e09b728bda50d35918ea0f9f939e350f 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dager" - "%1$d dag %2$d t" - "%1$d dag %2$d t" - "%1$d t" - "%1$d t %2$d min" - "%1$d t %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d sek" - "%1$d min %2$d sek" - "%1$d sek" - "%1$d sek" "<Uten navn>" "(Mangler telefonnummer)" "Ukjent" @@ -95,11 +79,13 @@ "Ingen tale-/nødtjeneste" "Tilbys midlertidig ikke gjennom mobilnettverket der du er" "Får ikke kontakt med nettverket" - "For å forbedre signalet, prøv å endre valgt nettverkstype i System > Nettverk og Internett > Mobilnettverk > Foretrukket nettverkstype." + "For å forbedre signalet, prøv å endre valgt nettverkstype i Innstillinger > Nettverk og Internett > Mobilnettverk > Foretrukket nettverkstype." + "Wi‑Fi-anrop er aktivt" + "Du trenger et mobilnettverk for å utføre nødanrop." "Varsler" "Viderekobling" "Modusen nødsamtale-tilbakeringing" - "Varsler for mobildata" + "Status for mobildata" "SMS-meldinger" "Talepostmeldinger" "Wi-Fi-anrop" @@ -217,7 +203,7 @@ "Start på nytt i sikker modus" "Ønsker du å starte på nytt i sikker modus? Dette deaktiverer alle tredjepartsprogrammene du har installert. De gjenopprettes når du starter på nytt." "Nylig" - "Ingen nylige apper." + "Ingen nylig brukte apper." "Innstillinger for nettbrett" "Alternativer for TV" "Telefoninnstillinger" @@ -1780,4 +1766,5 @@ "SIM-kortet er ikke klargjort" "SIM-kortet er ikke tillatt" "Telefonen er ikke tillatt" + "Forgrunnsvindu" diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index b7576c1278d306ba8e97f4bc70a8bb85b61ed790..28ae109fdbd73a448d1743c075d92207854c4ae2 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -21,24 +21,8 @@ "B" - "के.बि." - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d दिन" - "%1$d दिन%2$d घन्टा" - "%1$d दिन%2$d घन्टा" - "%1$d घन्टा" - "%1$d घन्टा %2$d मि" - "%1$d घन्टा %2$d मिनेट" - "%1$d मिनेट" - "%1$d मिनेट" - "%1$d मिनेट %2$d से" - "%1$d मिनेट %2$d से" - "%1$d सेकेन्ड" - "%1$d सेकेन्ड" "<बिना शीर्षक>" "(कुनै फोन नम्बर छैन)" "अज्ञात" @@ -95,11 +79,13 @@ "कुनै पनि भ्वाइस/आपतकालीन सेवा उपलब्ध छैन" "तपाईंको स्थानमा सञ्चालन भइरहेको मोबाइल नेटवर्कले अस्थायी रूपमा यो सुविधा प्रदान गर्दैन" "नेटवर्कमाथि पहुँच राख्न सकिँदैन" - "रिसेप्सनमा सुधार गर्न, प्रणाली > नेटवर्क र इन्टरनेट > मोबाइल नेटवर्कहरू > रुचाइएको नेटवर्कको प्रकार मा गएर चयन गरिएको प्रकार परिवर्तन गरी हेर्नुहोस्।" + "रिसेप्सनमा सुधार गर्न प्रणालीहरू > नेटवर्क तथा इन्टरनेट > मोबाइल नेटवर्कहरू > रुचाइएको नेटवर्कको प्रकारमा गई चयन गरिएको प्रकार परिवर्तन गरी हेर्नुहोस्।" + "Wi‑Fi कलिङ सक्रिय छ" + "आपतकालीन कलहरू गर्न मोबाइल नेटवर्क अनिवार्य छ।" "अलर्टहरू" "कल फर्वार्ड गर्ने सेवा" "आपतकालीन कलब्याक मोड" - "मोबाइल डेटाका अलर्टहरू" + "मोबाइल डेटाको स्थिति" "SMS सन्देशहरू" "भ्वाइस मेल सन्देशहरू" "Wi-Fi कल" @@ -1199,8 +1185,8 @@ "थप विकल्पहरूका लागि ट्याप गर्नुहोस्।" "एनालग अडियोको सहायक उपकरण पत्ता लाग्यो" "संलग्न गरिएको यन्त्र यो फोनसँग कम्प्याटिबल छैन। थप जान्न ट्याप गर्नुहोस्।" - "USB डिबग गर्ने जडित छ" - "USB डिबगिङलाई असक्षम गर्न ट्याप गर्नुहोस्।" + "USB डिबग गर्ने सुविधा सुचारू छ" + "USB डिबग गर्ने सुविधालाई असक्षम गर्न ट्याप गर्नुहोस्।" "USB डिबगिङलाई असक्षम पार्न ट्याप गर्नुहोस्।" "बग रिपोर्ट लिँदै..." "बग रिपोर्टलाई साझेदारी गर्ने हो?" @@ -1786,4 +1772,5 @@ "SIM को प्रावधान छैन" "SIM लाई अनुमति छैन" "फोनलाई अनुमति छैन" + "पपअप विन्डो" diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index f18cd3bfe2e4c862a21f6719a6813eb8fa4fbd66..91a98f20972fc4e71480a54bd9b913ccb029afdf 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -21,24 +21,8 @@ "B" - " KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dagen" - "%1$d dag %2$d uur" - "%1$d dag %2$d uur" - "%1$d uur" - "%1$d uur %2$d min." - "%1$d uur %2$d min." - "%1$d minuten" - "%1$d min." - "%1$d min %2$d sec" - "%1$d min %2$d sec" - "%1$d seconden" - "%1$d seconde" "<Naamloos>" "(Geen telefoonnummer)" "Onbekend" @@ -95,11 +79,13 @@ "Geen service voor spraak-/noodoproepen" "Tijdelijk niet aangeboden door het mobiele netwerk op je locatie" "Kan netwerk niet bereiken" - "Als je de ontvangst wilt verbeteren, kun je het netwerktype wijzigen dat is geselecteerd bij Systeem > Netwerk en internet > Mobiele netwerken > Voorkeursnetwerktype." + "Als je de ontvangst wilt verbeteren, kun je het netwerktype wijzigen dat is geselecteerd bij Instellingen > Netwerk en internet > Mobiele netwerken > Voorkeursnetwerktype." + "Bellen via wifi is actief" + "Voor noodoproepen is een mobiel netwerk vereist." "Meldingen" "Oproep doorschakelen" "Modus voor noodoproepen" - "Meldingen voor mobiele data" + "Status van mobiele data" "Sms\'jes" "Voicemailberichten" "Bellen via wifi" @@ -224,9 +210,9 @@ "Schermvergrendeling" "Uitschakelen" "Noodgeval" - "Foutenrapport" - "Foutenrapport genereren" - "Hiermee worden gegevens over de huidige status van je apparaat verzameld en als e-mail verzonden. Wanneer u een foutenrapport start, duurt het even voordat het kan worden verzonden. Even geduld alstublieft." + "Bugrapport" + "Bugrapport genereren" + "Hiermee worden gegevens over de huidige status van je apparaat verzameld en als e-mail verzonden. Wanneer u een bugrapport start, duurt het even voordat het kan worden verzonden. Even geduld alstublieft." "Interactief rapport" "Gebruik deze optie in de meeste situaties. Hiermee kun je de voortgang van het rapport bijhouden, meer gegevens over het probleem opgeven en screenshots maken. Mogelijk worden bepaalde minder vaak gebruikte gedeelten weggelaten (waarvoor het lang zou duren om een rapport te genereren)." "Volledig rapport" @@ -1780,4 +1766,5 @@ "Simkaart niet geregistreerd" "Simkaart niet toegestaan" "Telefoon niet toegestaan" + "Pop-upvenster" diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 5e545ef3d64c63ca4d69f25bb6067247b8b26c99..f4d0cc1549e35ac7e61b2f19b4bf99d0b034e9ad 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ਦਿਨ" - "%1$d ਦਿਨ %2$d ਘੰਟੇ" - "%1$d ਦਿਨ %2$d ਘੰਟਾ" - "%1$d ਘੰਟੇ" - "%1$d ਘੰਟਾ %2$d ਮਿੰਟ" - "%1$d ਘੰਟਾ %2$d ਮਿੰਟ" - "%1$d ਮਿੰਟ" - "%1$d ਮਿੰਟ" - "%1$d ਮਿੰਟ %2$d ਸਕਿੰਟ" - "%1$d ਮਿੰਟ %2$d ਸਕਿੰਟ" - "%1$d ਸਕਿੰਟ" - "%1$d ਸਕਿੰਟ" "<ਬਿਨਾਂ ਸਿਰਲੇਖ>" "(ਕੋਈ ਫ਼ੋਨ ਨੰਬਰ ਨਹੀਂ)" "ਅਗਿਆਤ" @@ -95,11 +79,13 @@ "ਕੋਈ ਆਵਾਜ਼ੀ/ਸੰਕਟਕਾਲੀਨ ਸੇਵਾ ਨਹੀਂ" "ਤੁਹਾਡੇ ਟਿਕਾਣੇ \'ਤੇ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਵੱਲੋਂ ਉਪਲਬਧ ਨਹੀਂ ਕਰਵਾਈ ਗਈ" "ਨੈੱਟਵਰਕ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ" - "ਸਿਗਨਲ ਪ੍ਰਾਪਤੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ, ਸਿਸਟਮ > ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ > ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ > ਤਰਜੀਹੀ ਨੈੱਟਵਰਕ ਦੀ ਕਿਸਮ \'ਤੇ ਚੁਣੀ ਗਈ ਕਿਸਮ ਨੂੰ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + "ਸਿਗਨਲ ਪ੍ਰਾਪਤੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ, ਸੈਟਿੰਗਾਂ > ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ > ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ > ਤਰਜੀਹੀ ਨੈੱਟਵਰਕ ਦੀ ਕਿਸਮ \'ਤੇ ਜਾਓ ਅਤੇ ਚੁਣੀ ਗਈ ਕਿਸਮ ਨੂੰ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + "ਵਾਈ-ਫਾਈ ਕਾਲਿੰਗ ਕਿਰਿਆਸ਼ੀਲ ਹੈ" + "ਸੰਕਟਕਾਲੀਨ ਕਾਲਾਂ ਲਈ ਕਿਸੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।" "ਸੁਚੇਤਨਾਵਾਂ" "ਕਾਲ ਫਾਰਵਰਡਿੰਗ" "ਸੰਕਟਕਾਲੀਨ ਕਾਲਬੈਕ ਮੋਡ" - "ਮੋਬਾਈਲ ਡਾਟਾ ਸੁਚੇਤਨਾਵਾਂ" + "ਮੋਬਾਈਲ ਡਾਟੇ ਦੀ ਸਥਿਤੀ" "SMS ਸੁਨੇਹੇ" "ਵੌਇਸਮੇਲ ਸੁਨੇਹੇ" "ਵਾਈ-ਫਾਈ ਕਾਲਿੰਗ" @@ -1780,4 +1766,5 @@ "SIM ਦੀ ਵਿਵਸਥਾ ਨਹੀਂ ਹੈ" "SIM ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ" "ਫ਼ੋਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ" + "ਪੌਪਅੱਪ ਵਿੰਡੋ" diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index a3bac5e2ec444af7d38b21d3ca89a9797d27ebcb..f1c7a085d0f4498f60602b60809ae47374df8838 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dni" - "%1$d dzień %2$d godz." - "%1$d dzień %2$d godz." - "%1$d godz." - "%1$d godz. %2$d min" - "%1$d godz. %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Bez nazwy>" "(Brak numeru telefonu)" "Nieznana" @@ -97,11 +81,13 @@ "Brak usługi połączeń głosowych/alarmowych" "Usługa tymczasowo nieoferowana przez sieć komórkową w Twojej lokalizacji" "Brak zasięgu sieci" - "Aby poprawić odbiór, zmień typ sieci – wybierz System > Sieć i internet > Sieci komórkowe > Preferowany typ sieci." + "Aby poprawić odbiór, zmień typ sieci: wybierz Ustawienia > Sieć i internet > Sieci komórkowe > Preferowany typ sieci." + "Funkcja Połączenia przez Wi‑Fi jest aktywna" + "Połączenia alarmowe wymagają sieci komórkowej." "Alerty" "Przekierowanie połączeń" "Tryb alarmowego połączenia zwrotnego" - "Alerty o mobilnej transmisji danych" + "Stan mobilnej transmisji danych" "SMS-y" "Wiadomości poczty głosowej" "Połączenia przez Wi-Fi" @@ -284,7 +270,7 @@ "Kalendarz" "dostęp do kalendarza" "SMS" - "wysyłanie i wyświetlanie SMS-ów" + "wysyłanie i wyświetlanie SMS‑ów" "Pamięć wewnętrzna" "dostęp do zdjęć, multimediów i plików na Twoim urządzeniu" "Mikrofon" @@ -1848,4 +1834,5 @@ "Nieobsługiwana karta SIM" "Niedozwolona karta SIM" "Niedozwolony telefon" + "Wyskakujące okienko" diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 20fc2e513a89eb29e1c8190076ae6d7738c48b7a..7082ea2929d5b4289508fe6b663c55ae18508dc8 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dias" - "%1$d dia %2$d h" - "%1$d dia %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d m" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Sem título>" "(Nenhum número de telefone)" "Desconhecido" @@ -95,11 +79,13 @@ "Sem serviço de voz/emergência" "Serviço temporariamente bloqueado pela rede móvel no seu local" "Não foi possível acessar a rede" - "Para melhorar a recepção, tente alterar o tipo selecionado em Sistema > Rede & Internet > Redes móveis > Tipo de rede preferencial." + "Para melhorar a recepção, tente alterar o tipo selecionado em Configurações > Rede & Internet > Redes móveis > Tipo de rede preferencial." + "A chamada no Wi‑Fi está ativa" + "As chamadas de emergência exigem uma rede móvel." "Alertas" "Encaminhamento de chamada" "Modo de retorno de chamada de emergência" - "Alertas de dados móveis" + "Status dos dados móveis" "Mensagens SMS" "Mensagens do correio de voz" "Chamadas por Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM não aprovisionado" "SIM não permitido" "Smartphone não permitido" + "Janela pop-up" diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 125eb13f13d5b4e57c3ae27a7e31ffef8016aded..d16ee9ec4d847649b71e93e90b57922d966cfc7f 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dias" - "%1$d dia %2$d h" - "%1$d dia %2$d h" - "%1$d horas" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min." - "%1$d min %2$d seg" - "%1$d min %2$d seg" - "%1$d seg" - "%1$d seg" "<Sem nome>" "(Nenhum número de telefone)" "Desconhecido" @@ -95,11 +79,13 @@ "Sem serviço de voz/emergência" "Serviço temporariamente não disponibilizado pela rede móvel na sua localização" "Não é possível ligar à rede" - "Para melhorar a receção, experimente alterar o tipo selecionado em Sistema > Rede e Internet > Redes móveis > Tipo de rede preferido." + "Para melhorar a receção, experimente alterar o tipo selecionado em Definições > Rede e Internet > Redes móveis > Tipo de rede preferido." + "As chamadas Wi‑Fi estão ativas." + "As chamadas de emergência necessitam de uma rede móvel." "Alertas" "Reencaminhamento de chamadas" "Modo de chamada de retorno de emergência" - "Alertas de dados móveis" + "Estado dos dados móveis" "Mensagens SMS" "Mensagens de correio de voz" "Chamadas Wi-Fi" @@ -180,16 +166,16 @@ Autoridades de certificação instaladas "Por um terceiro desconhecido" - "Pelo administrador do seu perfil de trabalho" + "Pelo gestor do seu perfil de trabalho" "Por %s" "Perfil de trabalho eliminado" "Perfil de trabalho eliminado devido a aplicação de administração em falta" - "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 administrador para obter assistência." + "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." "O seu perfil de trabalho já não está disponível neste dispositivo" "O dispositivo é gerido" "A sua entidade gere este dispositivo e pode monitorizar o tráfego de rede. Toque para obter mais detalhes." "O seu dispositivo será apagado" - "Não é possível utilizar a aplicação de administração. O seu dispositivo será agora apagado.\n\nSe tiver questões, contacte o administrador da entidade." + "Não é possível utilizar a aplicação de administração. O seu dispositivo será agora apagado.\n\nSe tiver questões, contacte o gestor da entidade." "Eu" "Opções do tablet" "Opções de TV" @@ -613,7 +599,7 @@ "Personalizado" - "Emprego" + "Trabalho" "Outro" "Personalizado" @@ -1199,7 +1185,7 @@ "A criar relatório de erro…" "Pretende partilhar o relatório de erro?" "A partilhar relatório de erro…" - "O seu administrador solicitou um relatório de erro para ajudar na resolução de problemas deste dispositivo. As aplicações e os dados podem ser partilhados." + "O seu gestor solicitou um relatório de erro para ajudar na resolução de problemas deste dispositivo. As aplicações e os dados podem ser partilhados." "PARTILHAR" "RECUSAR" "Alterar teclado" @@ -1499,7 +1485,7 @@ "A terminar a sessão de %1$s…" "Proprietário" "Erro" - "O administrador não permite esta alteração" + "O gestor não permite esta alteração" "Não foram encontradas aplicações para executar esta ação" "Revogar" "ISO A0" @@ -1591,7 +1577,7 @@ "Serviço de impressão não ativado" "Serviço %s instalado" "Toque para ativar" - "Introduzir o PIN do administrador" + "Introduzir o PIN do gestor" "Introduzir PIN" "Incorreto" "PIN Atual" @@ -1626,9 +1612,9 @@ "Pedir PIN antes de soltar" "Pedir sequência de desbloqueio antes de soltar" "Pedir palavra-passe antes de soltar" - "Instalado pelo seu administrador" - "Atualizado pelo seu administrador" - "Eliminado pelo seu administrador" + "Instalado pelo seu gestor" + "Atualizado pelo seu gestor" + "Eliminado pelo seu gestor" "Para ajudar a melhorar a autonomia da bateria, a poupança de bateria reduz o desempenho do seu dispositivo e limita a vibração, os serviços de localização e a maioria dos dados em segundo plano. O email, as mensagens e outras aplicações que dependem da sincronização não podem ser atualizados exceto se os abrir.\n\nA poupança de bateria desliga-se automaticamente quando o dispositivo está a carregar." "Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas aplicações enviem ou recebam dados em segundo plano. Uma determinada aplicação que esteja a utilizar atualmente pode aceder aos dados, mas é possível que o faça com menos frequência. Isto pode significar, por exemplo, que as imagens não são apresentadas até que toque nas mesmas." "Ativar a Poupança de dados?" @@ -1780,4 +1766,5 @@ "SIM não ativado" "SIM não permitido" "Telemóvel não permitido" + "Janela pop-up" diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 20fc2e513a89eb29e1c8190076ae6d7738c48b7a..7082ea2929d5b4289508fe6b663c55ae18508dc8 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dias" - "%1$d dia %2$d h" - "%1$d dia %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d m" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Sem título>" "(Nenhum número de telefone)" "Desconhecido" @@ -95,11 +79,13 @@ "Sem serviço de voz/emergência" "Serviço temporariamente bloqueado pela rede móvel no seu local" "Não foi possível acessar a rede" - "Para melhorar a recepção, tente alterar o tipo selecionado em Sistema > Rede & Internet > Redes móveis > Tipo de rede preferencial." + "Para melhorar a recepção, tente alterar o tipo selecionado em Configurações > Rede & Internet > Redes móveis > Tipo de rede preferencial." + "A chamada no Wi‑Fi está ativa" + "As chamadas de emergência exigem uma rede móvel." "Alertas" "Encaminhamento de chamada" "Modo de retorno de chamada de emergência" - "Alertas de dados móveis" + "Status dos dados móveis" "Mensagens SMS" "Mensagens do correio de voz" "Chamadas por Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM não aprovisionado" "SIM não permitido" "Smartphone não permitido" + "Janela pop-up" diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index a212b1b39aa07ae79454ae5fa97ecf7838faf9c6..30e88864e66433bd8e3a141826b1d39e596371b4 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TO" "PO" "%1$s %2$s" - "%1$d zile" - "%1$d zile %2$d h" - "%1$d zi %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min." - "%1$d min %2$d sec" - "%1$d min %2$d sec" - "%1$d sec" - "%1$d sec" "<Fără titlu>" "(Niciun număr de telefon)" "Necunoscut" @@ -96,11 +80,13 @@ "Fără servicii vocale/de urgență" "Momentan nu este oferit de rețeaua mobilă în locația dvs." "Nu se poate stabili conexiunea la rețea" - "Pentru o recepție mai bună, încercați să schimbați tipul selectat în Sistem > Rețea și internet > Rețele mobile > Tip preferat de rețea." + "Pentru o recepție mai bună, încercați să schimbați tipul selectat în Setări > Rețea și internet > Rețele mobile > Tip preferat de rețea." + "Apelarea prin Wi-Fi este activă" + "Apelurile de urgență necesită o rețea mobilă." "Alerte" "Redirecționarea apelurilor" "Mod de apelare inversă de urgență" - "Alerte de date mobile" + "Starea datelor mobile" "Mesaje SMS" "Mesaje din mesageria vocală" "Apelare prin Wi-Fi" @@ -1814,4 +1800,5 @@ "Cardul SIM nu este activat" "Cardul SIM nu este permis" "Telefonul nu este permis" + "Fereastră pop-up" diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 22438046329009e3da3ed528da608aa133963691..8fbc70a9a935844003947cf423984bc7533be5e7 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -21,24 +21,8 @@ "Б" - "КБ" - "МБ" - "ГБ" - "TБ" "ПБ" "%1$s %2$s" - "%1$d дн." - "%1$d день %2$d ч." - "%1$d день %2$d ч." - "%1$d ч." - "%1$d ч. %2$d мин." - "%1$d ч. %2$d мин." - "%1$d мин." - "%1$d мин." - "%1$d мин. %2$d с" - "%1$d мин. %2$d с" - "%1$d с" - "%1$d с" "<Без названия>" "(Нет номера телефона)" "Неизвестно" @@ -97,11 +81,13 @@ "Голосовые и экстренные вызовы недоступны" "Местная мобильная сеть временно не поддерживает эту функцию." "Сеть недоступна" - "Чтобы улучшить сигнал, попробуйте выбрать другой тип сети в настройках (раздел \"Мобильные сети\")." + "Чтобы улучшить сигнал, попробуйте выбрать другой тип сети в настройках (раздел \"Мобильные сети\")." + "Включена функция \"Звонки по Wi‑Fi\"" + "Для экстренных вызовов требуется мобильная сеть." "Оповещения" "Переадресация вызовов" "Режим экстренных обратных вызовов" - "Оповещения, связанные с мобильным Интернетом" + "Состояние мобильного Интернета" "SMS" "Голосовые сообщения" "Звонки по Wi-Fi" @@ -1736,7 +1722,7 @@ "%1$s / %2$s" "Свернуть" "Не беспокоить" - "Режим оповещения" + "Режим уведомления" "Будний вечер" "Выходные" "Мероприятие" @@ -1848,4 +1834,5 @@ "SIM-карта не активирована" "Использование SIM-карты запрещено" "Звонки запрещены" + "Всплывающее окно" diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 6adfb303d549e0af739df1c4829518df6d139916..1f67c1935dcd1991837fc810c39549244da38676 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "දින %1$d" - "දින %1$d පැය %2$d" - "දින %1$d පැය %2$d" - "පැය %1$d" - "පැය %1$d මිනි %2$d" - "පැය %1$d මිනි %2$d" - "මිනි %1$d" - "මිනිත්තු %1$d" - "මිනි %1$d තත් %2$d" - "මිනි %1$d තත් %2$d" - "තත් %1$d" - "තත් %1$d" "<නම් යොදා නැත>" "(දුරකථන අංකයක් නොමැත)" "නොදනී" @@ -95,11 +79,13 @@ "හඬ/හදිසි සේවාව නොමැත" "ඔබේ ස්ථානයේ ජංගම ජාලය මගින් තාවකාලිකව පිරිනොනමයි" "ජාලය වෙත ළඟා විය නොහැකිය" - "ප්‍රතිග්‍රහණය වැඩි දියුණු කිරීමට, පද්ධතිය > ජාලය සහ අන්තර්ජාලය > ජංගම ජාල > වඩා කැමති ජාල වර්ගය තුළ තෝරන ලද වර්ගය වෙනස් කිරීම උත්සාහ කරන්න." + "ප්‍රතිග්‍රහණය වැඩි දියුණු කිරීමට, සැකසීම් > ජාලය සහ අන්තර්ජාලය > ජංගම ජාල > වඩා කැමති ජාල වර්ගය තුළ තෝරන ලද වර්ගය වෙනස් කිරීම උත්සාහ කරන්න." + "Wi‑Fi ඇමතීම සක්‍රියයි" + "හදිසි ඇමතුම්වලට ජංගම ජාලයක් අවශ්‍යයි" "ඇඟවීම්" "ඇමතුම ප්‍රතියොමු කිරීම" "හදිසි අවස්ථා පසු ඇමතුම් ප්‍රකාරය" - "ජංගම දත්ත ඇඟවීම්" + "ජංගම දත්ත තත්ත්වය" "SMS පණිවිඩ" "හඬ තැපැල් පණිවිඩ" "Wi-Fi ඇමතීම" @@ -1782,4 +1768,5 @@ "SIM එක සක්‍රීය කර නොමැත" "SIM එක සඳහා ඉඩ නොදේ" "දුරකථනය සඳහා ඉඩ නොදේ" + "උත්පතන කවුළුව" diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index b716f0dbcf66c9d4eb425add56495fb637624d06..d83367be2ba33e23384c46c7d41a295f637653ff 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d d." - "%1$d d. %2$d hod." - "%1$d d. %2$d hod." - "%1$d hod." - "%1$d hod. %2$d min." - "%1$d hod. %2$d min." - "%1$d min" - "%1$d min" - "%1$d min. %2$d s" - "%1$d min. %2$d s" - "%1$d s" - "%1$d s" "<Bez mena>" "(žiadne telefónne číslo)" "Bez názvu" @@ -97,11 +81,13 @@ "Hlasové ani tiesňové volania nie sú k dispozícii" "Momentálne nie sú v ponuke mobilnej siete na vašom mieste" "Nepodarilo sa pripojiť k sieti" - "Ak chcete vylepšiť príjem, skúste zmeniť vybratý typ siete v časti Systém > Sieť a internet > Mobilné siete > Preferovaný typ siete." + "Ak chcete vylepšiť príjem, skúste zmeniť vybraný typ v časti Nastavenia > Sieť a internet > Mobilné siete > Preferovaný typ siete." + "Volanie cez Wi‑Fi je aktívne" + "Tiesňové volania vyžadujú mobilnú sieť." "Upozornenia" "Presmerovanie hovorov" "Režim tiesňového spätného volania" - "Upozornenia na mobilné dáta" + "Stav mobilných dát" "Správy SMS" "Správy hlasovej schránky" "Volanie cez Wi‑Fi" @@ -1848,4 +1834,5 @@ "SIM karta nie je k dispozícii" "SIM karta je zakázaná" "Telefón je zakázaný" + "Automaticky otvárané okno" diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 0db64347375b67d23509bafcc91636ed2a759c2a..0575f93c9d9f75c467d86894e9db33360c92a64d 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "Št. dni: %1$d" - "%1$d dan %2$d h" - "%1$d dan %2$d h" - "%1$d h" - "%1$d h %2$d min" - "%1$d h %2$d min" - "%1$d min" - "%1$d min" - "%1$d min %2$d s" - "%1$d min %2$d s" - "%1$d s" - "%1$d s" "<Brez naslova>" "(Ni telefonske številke)" "Neznano" @@ -97,11 +81,13 @@ "Ni storitve za glasovne klice / klice v sili" "Ta storitev trenutno ni na voljo v mobilnem omrežju na vaši lokaciji" "Povezave z omrežjem ni mogoče vzpostaviti" - "Če želite izboljšati sprejem, poskusite zamenjati vrsto omrežja v možnostih »Sistem« > »Omrežje in internet« > »Mobilna omrežja« > »Prednostna vrsta omrežja«." + "Če želite izboljšati sprejem, poskusite zamenjati vrsto omrežja v »Nastavitve« > »Omrežje in internet« > »Mobilna omrežja« > »Prednostna vrsta omrežja«." + "Klicanje prek Wi-Fi-ja je aktivno" + "Za klice v sili potrebujete mobilno omrežje." "Opozorila" "Preusmerjanje klicev" "Način za povratni klic v sili" - "Opozorila o prenosu podatkov v mobilnem omrežju" + "Stanje prenosa podatkov v mobilnem omrežju" "Sporočila SMS" "Sporočila v odzivniku" "Klicanje prek Wi-Fi-ja" @@ -1848,4 +1834,5 @@ "Kartica SIM ni omogočena za uporabo" "Kartica SIM ni dovoljena" "Telefon ni dovoljen" + "Pojavno okno" diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 26714d9118d8b46dd4b4c25e5fe9d150f16f2e90..a3f512c20ad059111ecb1e184109c69725b1f82f 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "terabajt" "petabajt" "%1$s %2$s" - "%1$d ditë" - "%1$d ditë e %2$d orë" - "%1$d ditë e %2$d orë" - "%1$d orë" - "%1$d orë e %2$d minuta" - "%1$d orë e %2$d minuta" - "%1$d minuta" - "%1$d minuta" - "%1$d minuta e %2$d sekonda" - "%1$d minuta e %2$d sekonda" - "%1$d sekonda" - "%1$d sekonda" "<Pa titull>" "(Nuk ka numër telefoni)" "E panjohur" @@ -95,11 +79,13 @@ "Nuk ka shërbim zanor/urgjence" "Përkohësisht nuk ofrohet nga rrjeti celular në vendndodhjen tënde" "Rrjeti i paarritshëm" - "Për të përmirësuar marrjen e sinjalit, provo të ndryshosh llojin e zgjedhur te Sistemi > Rrjeti dhe interneti > Lloji i preferuar i rrjetit." + "Për të përmirësuar marrjen e sinjalit, provo të ndryshosh llojin e zgjedhur te Cilësimet > Rrjeti dhe interneti > Lloji i preferuar i rrjetit." + "Telefonata me Wi‑Fi është aktive" + "Telefonatat e urgjencës kërkojnë një rrjet celular." "Sinjalizimet" "Transferimi i telefonatave" "Modaliteti i \"Kthimit të telefonatës së urgjencës\"" - "Sinjalizimet për të dhënat celulare" + "Statusi i të dhënave celulare" "Mesazhet SMS" "Mesazhet e postës zanore" "Telefonata me Wi-Fi" @@ -1780,4 +1766,5 @@ "Karta SIM nuk është dhënë" "Karta SIM nuk lejohet" "Telefoni nuk lejohet" + "Dritare kërcyese" diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index d4b2e64b972ed9472fdce4c28c281df2457b44ed..d930d849a99185eae79b96596bc05929a0724b72 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d дана" - "%1$d дан %2$d с" - "%1$d дан %2$d с" - "%1$d с" - "%1$d с %2$d мин" - "%1$d с %2$d мин" - "%1$d мин" - "%1$d мин" - "%1$d мин %2$d сек" - "%1$d мин %2$d сек" - "%1$d сек" - "%1$d сек" "<Без наслова>" "(Нема броја телефона)" "Непознато" @@ -96,11 +80,13 @@ "Нема гласовне услуге/услуге за хитне позиве" "Привремено је онемогућено на мобилној мрежи на вашој локацији" "Повезивање са мрежом није успело" - "Да бисте побољшали пријем, пробајте да промените изабрани тип у одељку Систем > Мрежа и интернет > Мобилне мреже > Жељени тип мреже." + "Да бисте побољшали пријем, пробајте да промените изабрани тип у одељку Подешавања > Мрежа и интернет > Мобилне мреже > Жељени тип мреже." + "Wi‑Fi позивање је активно" + "Хитни позиви захтевају мобилну мрежу." "Обавештења" "Преусмеравање позива" "Режим за хитан повратни позив" - "Обавештења за мобилне податке" + "Статус мобилних података" "SMS-ови" "Поруке говорне поште" "Позивање преко Wi-Fi мреже" @@ -285,7 +271,7 @@ "Складиште" "приступа сликама, медијима и датотекама на уређају" "Микрофон" - "снима аудио" + "снима звук" "Камера" "снима слике и видео" "Телефон" @@ -1814,4 +1800,5 @@ "SIM картица није подешена" "SIM картица није дозвољена" "Телефон није дозвољен" + "Искачући прозор" diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 21a500c20812068ccf78ba4d3794d9919fbeed0d..73db73c4ab781ba95af3823b6850eefa6b40a2cc 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d dagar" - "%1$d dag %2$d tim" - "%1$d dag %2$d tim" - "%1$d timmar" - "%1$d tim %2$d min" - "%1$d tim %2$d min" - "%1$d minuter" - "%1$d min" - "%1$d min %2$d sek" - "%1$d min %2$d sek" - "%1$d sekunder" - "%1$d sekund" "<Okänd>" "(Inget telefonnummer)" "Okänt" @@ -95,11 +79,13 @@ "Tjänster för röst- och nödsamtal har blockerats" "Detta erbjuds för tillfället inte på mobilnätverket där du befinner dig" "Det går inte att nå nätverket" - "Testa om du får bättre mottagning genom att ändra till en annan typ under System > Nätverk och internet > Mobila nätverk > Önskad nätverkstyp." + "Testa om du får bättre mottagning genom att ändra till en annan typ under Inställningar > Nätverk och internet > Mobila nätverk > Önskad nätverkstyp." + "Wi-Fi-samtal är aktiverat" + "Mobilnätverk krävs för att ringa nödsamtal." "Aviseringar" "Vidarekoppla samtal" "Läget Återuppringning vid nödsamtal" - "Aviseringar för mobildata" + "Status för mobildata" "Sms" "Röstmeddelanden" "Wi-Fi-samtal" @@ -434,7 +420,7 @@ "Tillåter att appen ändrar tidszonen på TV:n." "Tillåter att appen ändrar mobilens tidszon." "hitta konton på enheten" - "Tillåter att appen hämtar en lista över alla kända konton på surfplattan. Detta kan inkludera konton som har skapats av appar som du har installerat." + "Tillåter att appen laddar ned en lista över alla kända konton på surfplattan. Detta kan inkludera konton som har skapats av appar som du har installerat." "Tillåter att appen hämtar listan med konton som TV:n kan identifiera. Den kan innehålla konton som skapats av appar som du har installerat." "Tillåter att appen hämtar en lista över alla kända konton på mobilen. Detta kan inkludera konton som har skapats av appar som du har installerat." "visa nätverksanslutningar" @@ -455,7 +441,7 @@ "Tillåter att appen tar emot paket som skickats med multicast-adress till alla enheter i ett Wi-Fi-nätverk och inte bara till den här mobilen. Detta drar mer batteri än när multicastläget inte används." "få åtkomst till Bluetooth-inställningar" "Tillåter att appen konfigurerar den lokala Bluetooth-surfplattan samt upptäcker och parkopplar den med fjärranslutna enheter." - "Tillåter att appen konfigurerar den lokala Bluetooth-TV:n och identifierar och kopplar den till fjärrenheter." + "Tillåter att appen konfigurerar den lokala Bluetooth-TV:n och identifierar och parkopplar den till fjärrenheter." "Tillåter att appen konfigurerar den lokala Bluetooth-mobilen samt upptäcker och parkopplar den med fjärranslutna enheter." "ansluta till och koppla från WiMAX" "Tillåter att appen avgör om WiMAX är aktiverat och kommer åt information om eventuella anslutna WiMAX-nätverk." @@ -463,7 +449,7 @@ "Tillåter att appen ansluter surfplattan till eller kopplar från WiMAX-nätverk." "Tillåter att appen ansluter TV:n till och kopplar från TV:n från WiMAX-nätverk." "Tillåter att appen ansluter mobilen till eller kopplar från WiMAX-nätverk." - "koppla till Bluetooth-enheter" + "parkoppla till Bluetooth-enheter" "Tillåter att appen kommer åt pekdatorns Bluetooth-konfiguration och upprättar och godkänner anslutningar till parkopplade enheter." "Tillåter att appen visar konfigurationen av Bluetooth på TV:n och godkänner alla anslutningar till kopplade enheter." "Tillåter att appen kommer åt mobilens Bluetooth-konfiguration och upprättar och godkänner anslutningar till parkopplade enheter." @@ -1780,4 +1766,5 @@ "SIM-kort tillhandahålls inte" "SIM-kort tillåts inte" "Mobil tillåts inte" + "popup-fönster" diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 0b70edf86dc043f87e51efbbbe050a6394b46650..8195fc5fe7541b655b27bed2f3489a20cb285525 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "Siku %1$d" - "Siku %1$d saa %2$d" - "Siku %1$d saa %2$d" - "Saa %1$d" - "Saa %1$d dak %2$d" - "Saa %1$d dak %2$d" - "Dakika %1$d" - "Dak %1$d" - "Dak %1$d sek %2$d" - "Dak %1$d sek %2$d" - "Sekunde %1$d" - "Sekunde %1$d" "<Haina jina>" "(Hakuna nambari ya simu)" "Isiyojulikana" @@ -95,11 +79,13 @@ "Hakuna huduma ya simu za dharura au za sauti" "Kwa sasa, huduma hii haipatikani katika mtandao wa simu mahali ulipo" "Haiwezi kufikia mtandao" - "Ili kupata mtandao thabiti, jaribu kubadilisha aina iliyochaguliwa katika Mfumo > Mtandao na Intaneti > Mitandao ya simu > Aina ya mtandao unaopendelea." + "Ili kupata mtandao thabiti, jaribu kubadilisha aina uliyochagua katika Mipangilio > Mtandao na Intaneti > Mitandao ya simu > Aina ya mtandao unaopendelea." + "Umewasha kipengele cha kupiga simu kupitia Wi‑Fi" + "Huduma ya kupiga simu za dharura inahitaji mtandao wa simu." "Arifa" "Kupeleka simu kwenye nambari nyingine" "Hali ya kupiga simu za dharura" - "Arifa za matumizi ya data ya simu" + "Hali ya data ya mtandao wa simu" "Ujumbe wa SMS" "Ujumbe wa sauti" "Kupiga simu kupitia Wi-Fi" @@ -185,7 +171,7 @@ "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." "Wasifu wako wa kazini haupatikani tena kwenye kifaa hiki" "Kifaa kinadhibitiwa" - "Shirika lako linadhibiti kifaa hiki na huenda likafuatilia shughuli kwenye mtandao. Gonga ili upate maelezo zaidi." + "Shirika lako linadhibiti kifaa hiki na huenda likafuatilia shughuli kwenye mtandao. Gusa ili upate maelezo zaidi." "Data iliyomo kwenye kifaa chako itafutwa" "Huwezi kutumia programu ya msimamizi. Sasa data iliyo kwenye kifaa chako itafutwa.\n\nIkiwa una maswali yoyote, wasiliana na msimamizi wa shirika lako." "Mimi" @@ -263,7 +249,7 @@ "Programu zinazotumia betri" "%1$s inatumia betri" "Programu %1$d zinatumia betri" - "Gonga ili upate maelezo kuhusu betri na matumizi ya data" + "Gusa ili upate maelezo kuhusu betri na matumizi ya data" "%1$s, %2$s" "Mtindo salama" "Mfumo wa Android" @@ -810,7 +796,7 @@ "Bakia kwenye Ukurasa huu" "%s\n\nJe, una uhakika unataka kutoka kwenye ukurasa huu?" "Thibitisha" - "Kidokezo: Gonga mara mbili ili kukuza ndani na nje." + "Kidokezo: Gusa mara mbili ili kukuza ndani na nje." "Kujaza kiotomatiki" "Weka uwezo wa kujaza kiotomatiki" " " @@ -973,7 +959,7 @@ "Tendua" "Rejesha" "Kujaza kiotomatiki" - "Uchaguzi wa maandishi?" + "Maandishi yaliyoteuliwa" "Ongeza kwenye kamusi" "Futa" "Mbinu ya uingizaji" @@ -986,7 +972,7 @@ "Baadhi ya vipengee vya mfumo huenda visifanye kazi" "Hifadhi haitoshi kwa ajili ya mfumo. Hakikisha una MB 250 za nafasi ya hifadhi isiyotumika na uanzishe upya." "%1$s inatumiwa" - "Gonga ili upate maelezo zaidi au usitishe programu." + "Gusa ili upate maelezo zaidi au usitishe programu." "Sawa" "Ghairi" "Sawa" @@ -1062,7 +1048,7 @@ "Programu zinaanza" "Inamaliza kuwasha." "%1$s inaendelea" - "Gonga ili uende kwenye programu" + "Gusa ili uende kwenye programu" "Badilisha programu?" "Programmu nyingine tayari inaendeshwa na lazima hiyo ikomeshwe kabla ya kuanza nyingine mpya." "Rejea katika %1$s" @@ -1107,7 +1093,7 @@ "Inaunganisha kwenye mtandao wa Wi‑Fi unaotumiwa na mtu yeyote" "Imeunganisha kwenye mtandao wa Wi-Fi" "Imeshindwa kuunganisha kwenye mtandao wa Wi‑Fi" - "Gonga ili uone mitandao yote" + "Gusa ili uone mitandao yote" "Unganisha" "Mitandao Yote" "Ingia kwa mtandao wa Wi-Fi" @@ -1115,7 +1101,7 @@ "Wi-Fi haina muunganisho wa intaneti" - "Gonga ili upate chaguo" + "Gusa ili upate chaguo" "Sasa inatumia %1$s" "Kifaa hutumia %1$s wakati %2$s haina Intaneti. Huenda ukalipishwa." "Imebadilisha mtandao kutoka %1$s na sasa inatumia %2$s" @@ -1136,7 +1122,7 @@ "Anzisha Wi-Fi Moja kwa Moja. Hii itazima mteja/mtandao-hewa wa Wi-Fi." "Haikuweza kuanzisha Wi-Fi Moja kwa Moja." "Wi-Fi ya Moja kwa Moja imewashwa" - "Gonga ili uweke mipangilio" + "Gusa ili uweke mipangilio" "Kubali" "Kataa" "Mwaliko umetumwa" @@ -1172,7 +1158,7 @@ "PATA PROGRAMU" "SIYO SASA" "SIM mpya imewekwa" - "Gonga ili uiweke" + "Gusa ili uiweke" "Weka saa" "Weka tarehe" "Weka" @@ -1188,11 +1174,11 @@ "USB kwa ajili ya kuhamisha picha" "USB kwa ajili ya MIDI" "Imeunganishwa kwa kifuasi cha USB" - "Gonga ili upate chaguo zaidi." + "Gusa ili upate chaguo zaidi." "Imetambua kifaa cha sauti ya analogi" - "Kifaa ulichoambatisha hakitumiki kwenye simu hii. Gonga ili upate maelezo zaidi." + "Kifaa ulichoambatisha hakitumiki kwenye simu hii. Gusa ili upate maelezo zaidi." "Utatuaji wa USB umeunganishwa" - "Gonga ili uzime utatuaji wa USB." + "Gusa ili uzime utatuaji wa USB." "Chagua ili kulemaza utatuaji USB." "Inatayarisha ripoti ya hitilafu…" "Ungependa kushiriki ripoti ya hitilafu?" @@ -1204,23 +1190,23 @@ "Ionyeshe kwenye skrini wakati kibodi halisi inatumika" "Onyesha kibodi pepe" "Sanidi kibodi halisi" - "Gonga ili uchague lugha na muundo" + "Gusa ili uchague lugha na muundo" " ABCDEFGHIJKLMNOPQRSTUVWXYZ" " 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" "Onyesha juu ya programu zingine" "%s inachomoza juu ya programu zingine" "%s inachomoza juu ya programu zingine." - "Ikiwa hutaki %s kutumia kipengele hiki, gonga ili ufungue mipangilio na ukizime." + "Ikiwa hutaki %s kutumia kipengele hiki, gusa ili ufungue mipangilio na ukizime." "ZIMA" "Inaandaa %s" "Inakagua hitilafu" "%s mpya imegunduliwa" "Kwa ajili ya kuhamisha picha na maudhui" "%s iliyoharibika" - "%s ina hitilafu. Gonga ili uirekebishe." + "%s ina hitilafu. Gusa ili uirekebishe." "%s imeharibika. Ichague ili uirekebishe." "%s isiyotumika" - "Kifaa hiki hakitumii %s. Gonga ili uweke mipangilio ya muundo unaoweza kutumika." + "Kifaa hiki hakitumii %s. Gusa ili uweke mipangilio ya muundo unaoweza kutumika." "Kifaa hiki hakitumii %s hii. Ichague ili uweke muundo unaotumika." "%s imeondolewa bila kutarajiwa" "Ondoa %s kabla ya kuchomoa ili kuepuka kupoteza data" @@ -1261,7 +1247,7 @@ "Huruhusu programu kuomba idhini ya kufuta vifurushi." "omba kupuuza uimarishji wa betri" "Huruhusu programu kuomba ruhusa ya kupuuza uimarishaji wa betri katika programu yako." - "Gonga mara mbili kwa udhibiti wa kuza" + "Gusa mara mbili kwa udhibiti wa kuza" "Haikuweza kuongeza wijeti." "Nenda" "Tafuta" @@ -1292,8 +1278,8 @@ "Huduma ya kupanga arifa" "VPN imewezeshwa" "VPN imeamilishwa na %s" - "Gonga ili kudhibiti mtandao." - "Imeunganishwa kwa %s. Gonga ili kudhibiti mtandao" + "Gusa ili kudhibiti mtandao." + "Imeunganishwa kwa %s. Gusa ili kudhibiti mtandao" "Kila mara VPN iliyowashwa inaunganishwa…" "Kila mara VPN iliyowashwa imeunganishwa" "Imeondolewa kwenye VPN iliyowashwa kila wakati" @@ -1304,9 +1290,9 @@ "Weka upya" "Wasilisha" "Mtindo wa gari umewezeshwa" - "Gonga ili ufunge hali ya garini." + "Gusa ili ufunge hali ya garini." "Kushiriki au kusambaza intaneti kumewashwa" - "Gonga ili uweke mipangilio." + "Gusa ili uweke mipangilio." "Nyuma" "Ifuatayo" "Ruka" @@ -1381,7 +1367,7 @@ "Hifadhi ya USB" "Badilisha" "Tahadhari ya matumizi ya data" - "Gonga ili uangalie matumizi na mipangilio." + "Gusa ili uangalie matumizi na mipangilio." "Kikomo data ya 2G-3G kimefikiwa" "Kikomo cha data ya 4G kimefikiwa" "Umefikisha kipimo cha juu cha data" @@ -1393,7 +1379,7 @@ "Taarifa za Wi-fi zimevuka kiwanga" "%s juu ya kikomo kilichobainishwa." "Data ya mandhari nyuma imezuiwa" - "Gonga ili uondoe kizuizi." + "Gusa ili uondoe kizuizi." "Cheti cha usalama" "Cheti hiki ni halali." "Kimetolewa kwa:" @@ -1588,7 +1574,7 @@ "haijulikani" "Huduma ya uchapishaji haijawashwa" "Huduma ya %s imesakinisha" - "Gonga ili uwashe" + "Gusa ili uwashe" "Weka PIN ya msimamizi" "Ingiza PIN" "Sio sahihi" @@ -1717,12 +1703,12 @@ "Una ujumbe mpya" "Fungua programu ya SMS ili uweze kuangalia" "Huenda baadhi ya utendaji ukawa vikwazo" - "Gonga ili ufungue" + "Gusa ili ufungue" "Data ya mtumiaji imefungwa" "Wasifu wa kazini umefungwa" - "Gonga ili ufungue wasifu wa kazini" + "Gusa ili ufungue wasifu wa kazini" "Imeunganishwa na %1$s" - "Gonga ili uangalie faili" + "Gusa ili uangalie faili" "Bandika" "Bandua" "Maelezo ya programu" @@ -1778,4 +1764,5 @@ "SIM haikubaliwi" "SIM imekataliwa" "Simu imekataliwa" + "Dirisha Ibukizi" diff --git a/core/res/res/values-sw600dp/dimens.xml b/core/res/res/values-sw600dp/dimens.xml index 9c45c12ce1092005cfb408d4aff36275e6f60d92..02ed848fc7f170ea400aae0ca7f16d67d2a52ca4 100644 --- a/core/res/res/values-sw600dp/dimens.xml +++ b/core/res/res/values-sw600dp/dimens.xml @@ -103,9 +103,6 @@ devices to account for the widget pager padding --> -10dp - - 12dp - 12dp diff --git a/core/res/res/values-sw720dp/dimens.xml b/core/res/res/values-sw720dp/dimens.xml index 2317d1f6909ca622d0ce645633344ec6b7dac1ab..ac48ad76d43d6e5fa7709297513149f992b9b80b 100644 --- a/core/res/res/values-sw720dp/dimens.xml +++ b/core/res/res/values-sw720dp/dimens.xml @@ -111,10 +111,4 @@ 12sp - - - 420dp - - - 420dp diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 17c7406338c080f9a67855064dc7d6e61376eaf5..563e3d74c6b23f2f160d40f964d5785446780d01 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -21,24 +21,8 @@ "பை." - "கி.பை." - "மெ.பை." - "ஜி.பை." - "டெ.பை." "பெ.பை." "%1$s %2$s" - "%1$d நாட்கள்" - "%1$d நாள் %2$d ம.நே." - "%1$d நாள் %2$d ம.நே." - "%1$d ம.நே." - "%1$d ம.நே. %2$d நிமி." - "%1$d மநே %2$d நிமி" - "%1$d நிமிடங்கள்" - "%1$d நிமி." - "%1$d நிமி %2$d வி" - "%1$d நிமி %2$d வி" - "%1$d வினாடிகள்" - "%1$d வினாடி" "<பெயரிடப்படாதது>" "(தொலைபேசி எண் இல்லை)" "அறியப்படாதவர்" @@ -95,11 +79,13 @@ "குரல்/அவசரச் சேவை இல்லை" "தற்காலிகமாக உங்கள் இருப்பிடத்தில் மொபைல் நெட்வொர்க் வழங்கவில்லை" "நெட்வொர்க்குடன் இணைக்க முடியவில்லை" - "பெறுதலை மேம்படுத்த, சாதனம் > நெட்வொர்க் & இணையம் > மொபைல் நெட்வொர்க்குகள் > விரும்பும் நெட்வொர்க் வகை என்பதற்குச் சென்று, தேர்ந்தெடுத்த வகையை மாற்றவும்." + "பெறுதலை மேம்படுத்த, அமைப்புகள் > நெட்வொர்க் & இணையம் > மொபைல் நெட்வொர்க்குகள் > விரும்பும் நெட்வொர்க் வகை என்பதற்குச் சென்று, தேர்ந்தெடுத்த வகையை மாற்றவும்." + "வைஃபை அழைப்பு இயக்கத்தில் உள்ளது" + "அவசர அழைப்புகளுக்கு, மொபைல் நெட்வொர்க் தேவை." "விழிப்பூட்டல்கள்" "அழைப்புப் பகிர்வு" "அவசரகாலத் திரும்ப அழைக்கும் பயன்முறை" - "மொபைல் டேட்டா விழிப்பூட்டல்கள்" + "மொபைல் டேட்டாவின் நிலை" "SMS செய்திகள்" "குரலஞ்சல் செய்திகள்" "வைஃபை அழைப்பு" @@ -324,7 +310,7 @@ "குழுசேர்ந்த ஊட்டங்களைப் படித்தல்" "தற்போது ஒத்திசைந்த ஊட்டங்களைப் பற்றிய விவரங்களைப் பெற பயன்பாட்டை அனுமதிக்கிறது." "SMS செய்திகளை அனுப்புதல் மற்றும் பார்த்தல்" - "SMS செய்திகளை அனுப்ப பயன்பாட்டை அனுமதிக்கிறது. இதற்கு எதிர்பாராத கட்டணங்கள் விதிக்கப்படலாம். தீங்கு விளைவிக்கும் பயன்பாடுகள் உங்களின் உறுதிப்படுத்தல் எதுவுமின்றி செய்திகளை அனுப்பி உங்களுக்குக் கட்டணம் விதிக்கலாம்." + "SMS செய்திகளை அனுப்ப பயன்பாட்டை அனுமதிக்கிறது. இதற்கு எதிர்பாராத பேமெண்ட்கள் விதிக்கப்படலாம். தீங்கு விளைவிக்கும் பயன்பாடுகள் உங்களின் உறுதிப்படுத்தல் எதுவுமின்றி செய்திகளை அனுப்பி உங்களுக்குக் கட்டணம் விதிக்கலாம்." "உங்கள் உரைச் செய்திகளை (SMS அல்லது MMS) படித்தல்" "இந்தப் பயன்பாடு உங்கள் டேப்லெட்டில் சேமிக்கப்பட்டுள்ள எல்லா SMS (உரை) செய்திகளையும் படிக்கலாம்." "இந்தப் பயன்பாடு உங்கள் டிவியில் சேமிக்கப்பட்டுள்ள எல்லா SMS (உரை) செய்திகளையும் படிக்கலாம்." @@ -1119,7 +1105,7 @@ "வைஃபை இணைய அணுகல் கொண்டிருக்கவில்லை" "விருப்பங்களுக்கு, தட்டவும்" "%1$sக்கு மாற்றப்பட்டது" - "%2$s இல் இணைய அணுகல் இல்லாததால், சாதனமானது %1$sஐப் பயன்படுத்துகிறது. கட்டணங்கள் விதிக்கப்படலாம்." + "%2$s இல் இணைய அணுகல் இல்லாததால், சாதனமானது %1$sஐப் பயன்படுத்துகிறது. பேமெண்ட்கள் விதிக்கப்படலாம்." "%1$s இலிருந்து %2$sக்கு மாற்றப்பட்டது" "மொபைல் டேட்டா" @@ -1184,7 +1170,7 @@ "அனுமதிகள் தேவையில்லை" "இதனால் நீங்கள் கட்டணம் செலுத்த வேண்டியிருக்கலாம்" "சரி" - "இந்தச் சாதனத்தை USB சார்ஜ் செய்கிறது" + "சாதனம் USB சார்ஜிங் செய்யப்படுகிறது" "இணைத்துள்ள சாதனத்திற்கு USB சக்தி அளிக்கிறது" "USB, கோப்புப் பரிமாற்றத்துக்கு மட்டும்" "USB, படப் பரிமாற்றத்துக்கு மட்டும்" @@ -1780,4 +1766,5 @@ "சிம் அமைக்கப்படவில்லை" "சிம் அனுமதிக்கப்படவில்லை" "ஃபோன் அனுமதிக்கப்படவில்லை" + "பாப்அப் சாளரம்" diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index c012a3e0430a0ad52fafb5e9ce1ed5c7a7e4afe1..cf4dee77f1fa1c06b76fff8185c190bf64f119cd 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d రోజులు" - "%1$d రో %2$d గం" - "%1$d రో %2$d గం" - "%1$d గంటలు" - "%1$d గం %2$d నిమి" - "%1$d గం %2$d నిమి" - "%1$d నిమిషాలు" - "%1$d నిమి" - "%1$d నిమి %2$d సె" - "%1$d నిమి %2$d సె" - "%1$d సెకన్లు" - "%1$d సెకను" "<శీర్షిక లేనిది>" "(ఫోన్ నంబర్ లేదు)" "తెలియదు" @@ -95,11 +79,13 @@ "వాయిస్/అత్యవసర సేవ లేదు" "మీ స్థానంలో మొబైల్ నెట్‌వర్క్ ద్వారా తాత్కాలికంగా అందించబడదు" "నెట్‌వర్క్‌ను చేరుకోలేరు" - "స్వీకరణను మెరుగుపరచాలంటే, సిస్టమ్ > నెట్‌వర్క్ & ఇంటర్నెట్ > మొబైల్ నెట్‌వర్క్‌లు > ప్రాధాన్య నెట్‌వర్క్ రకంలో మీరు ఎంచుకున్న రకాన్ని మార్చి ప్రయత్నించండి." + "స్వీకరణను మెరుగుపరచాలంటే, సెట్టింగ్‌లు > నెట్‌వర్క్ & ఇంటర్నెట్ > మొబైల్ నెట్‌వర్క్‌లు > ప్రాధాన్య నెట్‌వర్క్ రకంలో మీరు ఎంచుకున్న రకాన్ని మార్చి ప్రయత్నించండి." + "Wi-Fi కాలింగ్ సక్రియంగా ఉంది" + "అత్యవసర కాల్‌లకు మొబైల్ నెట్‌వర్క్ అవసరమవుతుంది." "హెచ్చరికలు" "కాల్ ఫార్వార్డింగ్" "అత్యవసర కాల్‌బ్యాక్ మోడ్" - "మొబైల్ డేటా హెచ్చరికలు" + "మొబైల్ డేటా స్థితి" "SMS సందేశాలు" "వాయిస్ మెయిల్ సందేశాలు" "Wi-Fi కాలింగ్" @@ -1780,4 +1766,5 @@ "SIM సక్రియం కాలేదు" "SIM అనుమతించబడదు" "ఫోన్ అనుమతించబడదు" + "పాప్అప్ విండో" diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 1242826cc1753b0bbed8cd87f0d17567b8741db7..990e5ddce20ea2fea5d5e4e9c7603e4914d17023 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d วัน" - "%1$d วัน %2$d ชม." - "%1$d วัน %2$d ชม." - "%1$d ชม." - "%1$d ชม. %2$d นาที" - "%1$d ชม. %2$d นาที" - "%1$d นาที" - "%1$d นาที" - "%1$d นาที %2$d วิ." - "%1$d นาที %2$d วิ." - "%1$d วินาที" - "%1$d วินาที" "<ไม่มีชื่อ>" "(ไม่มีหมายเลขโทรศัพท์)" "ไม่ทราบ" @@ -95,11 +79,13 @@ "ไม่มีบริการเสียง/บริการฉุกเฉิน" "งดให้บริการชั่วคราวโดยเครือข่ายมือถือในตำแหน่งของคุณ" "เข้าถึงเครือข่ายไม่ได้" - "เพื่อให้การรับสัญญาณดีขึ้น ลองเปลี่ยนประเภทที่เลือกใน \"การตั้งค่า\" > \"เครือข่ายและอินเทอร์เน็ต\" > \"เครือข่ายมือถือ\" > \"ประเภทเครือข่ายที่ต้องการ\"" + "ลองเปลี่ยนประเภทที่เลือกใน \"การตั้งค่า\" > \"เครือข่ายและอินเทอร์เน็ต\" > \"เครือข่ายมือถือ\" > \"ประเภทเครือข่ายที่ต้องการ\" เพื่อให้การรับสัญญาณดีขึ้น" + "กำลังใช้งานการโทรผ่าน Wi-Fi" + "หมายเลขฉุกเฉินต้องใช้เครือข่ายมือถือ" "การแจ้งเตือน" "การโอนสาย" "โหมดติดต่อกลับฉุกเฉิน" - "การแจ้งเตือนอินเทอร์เน็ตมือถือ" + "สถานะเน็ตมือถือ" "ข้อความ SMS" "ข้อความเสียง" "การโทรผ่าน Wi-Fi" @@ -1780,4 +1766,5 @@ "ไม่มีการจัดสรรซิม" "ไม่อนุญาตให้ใช้ซิม" "ไม่อนุญาตให้ใช้โทรศัพท์" + "หน้าต่างป๊อปอัป" diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 0c50301cf9468e03d9d1020c07255fa96014ca0b..e8fe658d60f1e9d005bd43d4755a590a7610e52b 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d (na) araw" - "%1$d day %2$d hr" - "%1$d day %2$d hr" - "%1$d (na) oras" - "%1$d oras %2$d min" - "%1$d oras %2$d min" - "%1$d (na) min" - "%1$d min" - "%1$d min %2$d seg" - "%1$d min %2$d seg" - "%1$d (na) seg" - "%1$d (na) seg" "<Walang pamagat>" "(Walang numero ng telepono)" "Hindi alam" @@ -95,11 +79,13 @@ "Walang serbisyo para sa voice/emergency" "Pansamantalang hindi inaalok ng mobile network sa iyong lokasyon" "Hindi maabot ang network" - "Upang lumakas ang reception, subukang baguhin ang uring napili sa System > Network at Internet > Mga mobile network > Gustong uri ng network." + "Upang mapahusay ang reception, subukang baguhin ang uring napili sa Mga Setting > Network at Internet > Mga mobile network > Gustong uri ng network." + "Aktibo ang pagtawag sa pamamagitan ng Wi‑Fi" + "Nangangailangan ng mobile network ang mga emergency na tawag." "Mga Alerto" "Pagpasa ng tawag" "Emergency callback mode" - "Mga alerto ng mobile data" + "Status ng mobile data" "Mga mensaheng SMS" "Mga mensahe sa voicemail" "Pagtawag gamit ang Wi-Fi" @@ -1780,4 +1766,5 @@ "Hindi naprobisyon ang SIM" "Hindi pinahihintulutan ang SIM" "Hindi pinahihintulutan ang telepono" + "Window ng Popup" diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 393523a95574f9b7bc85beeaa753ec06fda108e2..f5cd4a72e86270fe22f4a671c56880ad3dfefda8 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d gün" - "%1$d gün %2$d sa." - "%1$d gün %2$d sa." - "%1$d sa." - "%1$d sa. %2$d dk." - "%1$d sa. %2$d dk." - "%1$d dk." - "%1$d dk." - "%1$d dk. %2$d sn." - "%1$d dk. %2$d sn." - "%1$d sn." - "%1$d sn." "<Adsız>" "(Telefon numarası yok)" "Bilinmiyor" @@ -95,11 +79,13 @@ "Ses/acil durum hizmeti yok" "Bulunduğunuz yerdeki mobil ağ tarafından geçici olarak sunulmuyor" "Ağa erişilemiyor" - "Sinyal gücünü iyileştirmek için Sistem > Ağ ve İnternet > Mobil ağlar > Tercih edilen ağ türü\'nden seçili türü değiştirmeyi deneyin." + "Sinyal gücünü iyileştirmek için Ayarlar > Ağ ve İnternet > Mobil ağlar > Tercih edilen ağ türü bölümünde seçili türü değiştirmeyi deneyin." + "Kablosuz çağrı etkin" + "Acil durum çağrıları için mobil ağ gereklidir." "Uyarılar" "Çağrı yönlendirme" "Acil geri arama modu" - "Mobil veri uyarıları" + "Mobil veri durumu" "SMS mesajları" "Sesli mesajlar" "Kablosuz çağrı" @@ -1780,4 +1766,5 @@ "SIM için temel hazırlık yapılmadı" "SIM\'e izin verilmiyor" "Telefona izin verilmiyor" + "Pop-up Pencere" diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 298f0f490a5708383a41e4df3887cf50fc397be2..d9664adbee9e18d128bcde3cfe56f26fc08727fe 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -21,24 +21,8 @@ "б" - "КБ" - "МБ" - "ГБ" - "ТБ" "Пб" "%1$s %2$s" - "%1$d дн." - "%1$d день %2$d год" - "%1$d дн. %2$d год" - "%1$d год" - "%1$d год %2$d хв" - "%1$d год %2$d хв" - "%1$d хв" - "%1$d хв" - "%1$d хв %2$d с" - "%1$d хв %2$d с" - "%1$d с" - "%1$d с" "<Без назви>" "(Немає номера тел.)" "Невідомо" @@ -97,11 +81,13 @@ "Немає голосової/екстреної служби" "Тимчасово не пропонується мобільною мережею у вашому місцезнаходженні" "Не вдається під’єднатися до мережі" - "Щоб покращити якість сигналу, змініть тип у меню \"Система\" > \"Мережа й Інтернет\" > \"Мобільні мережі\" > \"Тип мережі\"." + "Щоб покращити прийняття сигналу, змініть тип у меню \"Налаштування\" > \"Мережа й Інтернет\" > \"Мобільні мережі\" > \"Тип мережі\"." + "Виклики через Wi-Fi активовано" + "Щоб здійснювати екстрені виклики, потрібне з’єднання з мобільною мережею." "Сповіщення" "Переадресація виклику" "Режим екстреного зворотного виклику" - "Сповіщення про мобільне передавання даних" + "Статус мобільного передавання даних" "SMS-повідомлення" "Повідомлення голосової пошти" "Дзвінки через Wi-Fi" @@ -1848,4 +1834,5 @@ "SIM-карту не затверджено" "SIM-карта заборонена" "Телефон заборонено" + "Спливаюче вікно" diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 416ec79263739a09258b6db366619c4fccb6b932..4e9b17fdb3ed0836ee03d46fbeb1c7942e8596e3 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -21,24 +21,8 @@ "بائٹس" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d دن" - "%1$d دن %2$d گھنٹے" - "%1$d دن %2$d گھنٹہ" - "%1$d گھنٹے" - "%1$d گھنٹہ %2$d منٹ" - "%1$d گھنٹہ %2$d منٹ" - "%1$d منٹ" - "%1$d منٹ" - "%1$d منٹ %2$d سیکنڈ" - "%1$d منٹ %2$d سیکنڈ" - "%1$d سیکنڈ" - "%1$d سیکنڈ" "‏‎>‎بلا عنوان‎<‎" "(کوئی فون نمبر نہیں ہے)" "نامعلوم" @@ -95,11 +79,13 @@ "کوئی صوتی/ہنگامی سروس نہیں" "عارضی طور پر آپ کے مقام پر موبائل نیٹ ورک کی طرف سے پیش نہیں ہے" "نیٹ ورک تک نہیں پہنچا جا سکتا" - "‏ریسپشن کو بہتر بنانے کیلئے، سسٹم ‎> نیٹ ورک اور انٹرنیٹ ‎> موبائل نیٹ ورکس ‎> ترجیحی نیٹ ورک کی قسم تبدیل کرنے کی کوشش کریں۔" + "‏ریسپشن کو بہتر بنانے کیلئے، ترتیبات ‎> نیٹ ورک اور انٹرنیٹ ‎> موبائل نیٹ ورکس ‎> ترجیحی نیٹ ورک کی قسم تبدیل کرنے کی کوشش کریں۔" + "‏Wi-Fi کالنگ فعال ہے" + "ہنگامی کالز کو موبائل نیٹ ورک کی ضرورت ہے۔" "الرٹس" "کال آگے منتقل کرنا" "ہنگامی کال بیک وضع" - "موبائل ڈیٹا الرٹس" + "موبائل ڈیٹا کی صورت حال" "‏SMS پیغامات" "صوتی میل پیغامات" "‏Wi-Fi کالنگ" @@ -1780,4 +1766,5 @@ "‏SIM فراہم کردہ نہیں ہے" "‏SIM کی اجازت نہیں ہے" "فون کی اجازت نہیں ہے" + "پاپ اپ ونڈو" diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 4961b1e7e5281e3d83bc2522da2129023fba1a46..1a94fa7bd010eb5a3ea804f163d02bc0f911b6ff 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -21,24 +21,8 @@ "B" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d kun" - "%1$d kun %2$d soat" - "%1$d kun %2$d soat" - "%1$d soat" - "%1$d soat %2$d daq" - "%1$d soat %2$d daq" - "%1$d daqiqa" - "%1$d daqiqa" - "%1$d daq %2$d son" - "%1$d daq %2$d son" - "%1$d soniya" - "%1$d soniya" "<Nomsiz>" "(Telefon raqami yo‘q)" "Noma’lum" @@ -95,11 +79,13 @@ "Ovozli va favqulodda chaqiruvlar ishlamaydi" "Hududingizda mobil tarmoq tomonidan vaqtinchalik taklif etilmayapti" "Tarmoq bilan bog‘lanib bo‘lmadi" - "Qabul qilish sifatini yaxshilash uchun Tizim > Tarmoq va Internet > Mobil tarmoqlar > Asosiy tarmoq turi orqali o‘zgartirib ko‘ring." + "Qabul qilish sifatini yaxshilash uchun Sozlamalar > Tarmoq va Internet > Mobil tarmoqlar > Asosiy tarmoq turi orqali o‘zgartirib ko‘ring." + "Wi‑Fi chaqiruv faol" + "Favqulodda chaqiruvlar uchun mobil internet zarur." "Ogohlantirishlar" "Chaqiruvlarni uzatish" "Favqulodda qaytarib chaqirish rejimi" - "Mobil internetga oid ogohlantirishlar" + "Mobil internet holati" "SMS xabarlar" "Ovozli xabarlar" "Wi-Fi chaqiruv" @@ -1780,4 +1766,5 @@ "SIM karta yo‘q" "SIM karta ishlatish taqiqlangan" "Chaqiruvlar taqiqlangan" + "Qalqib chiquvchi oyna" diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index c37458e75db65f3ae3f796809bc78e7e69d85cd5..8001c9f6facf6fd03761645ce4ca7185021c6fac 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d ngày" - "%1$d ngày %2$d giờ" - "%1$d ngày %2$d giờ" - "%1$d giờ" - "%1$d giờ %2$d phút" - "%1$d giờ %2$d phút" - "%1$d phút" - "%1$d phút" - "%1$d phút %2$d giây" - "%1$d phút %2$d giây" - "%1$d giây" - "%1$d giây" "<Không có tiêu đề>" "(Không có số điện thoại nào)" "Không xác định" @@ -95,11 +79,13 @@ "Không có dịch vụ thoại/khẩn cấp" "Tạm thời không được cung cấp bởi mạng di động tại vị trí của bạn" "Không thể kết nối mạng" - "Để cải thiện khả năng thu tín hiệu, hãy thử thay đổi loại mạng được chọn trong Hệ thống > Mạng và Internet > Mạng di động > Loại mạng ưu tiên." + "Để cải thiện khả năng thu tín hiệu, hãy thử thay đổi loại mạng được chọn trong Cài đặt > Mạng và Internet > Mạng di động > Loại mạng ưu tiên." + "Gọi qua Wi‑Fi đang hoạt động" + "Cuộc gọi khẩn cấp yêu cầu có mạng di động." "Thông báo" "Chuyển tiếp cuộc gọi" "Chế độ gọi lại khẩn cấp" - "Thông báo dữ liệu di động" + "Trạng thái dữ liệu di động" "Tin nhắn SMS" "Thư thoại" "Gọi qua Wi-Fi" @@ -1780,4 +1766,5 @@ "SIM không được cấp phép" "SIM không được cho phép" "Điện thoại không được cho phép" + "Cửa sổ bật lên" diff --git a/core/res/res/values-watch/colors_device_defaults.xml b/core/res/res/values-watch/colors_device_defaults.xml index 15786b4a23f89086fd1633d4abe24cee1bddc65c..654e92cf62f7cbc55100113a79a973f95a4e8961 100644 --- a/core/res/res/values-watch/colors_device_defaults.xml +++ b/core/res/res/values-watch/colors_device_defaults.xml @@ -17,8 +17,87 @@ + + + #33ffffff + + @color/black + + #5E97F6 + + #232E33 + + #3E5059 + + + + @color/btn_default_material_dark + #995E97f6 + + + @color/white + + + #F4511E + + + #5385DB + #75A4F5 + #93B7F5 diff --git a/core/res/res/values-watch/colors_material.xml b/core/res/res/values-watch/colors_material.xml index 72f589b3d337600404d27d2af3b218b557e7d48e..b19820c4bbbe5e9bf1f688f2563598c52db909b7 100644 --- a/core/res/res/values-watch/colors_material.xml +++ b/core/res/res/values-watch/colors_material.xml @@ -14,15 +14,8 @@ limitations under the License. --> - #232E33 - #3E5059 - #5385DB - #75A4F5 - #5E97F6 - #93B7F5 + + #ff919699 - #33ffffff - - #ff919699 diff --git a/core/res/res/values-watch/dimens_device_defaults.xml b/core/res/res/values-watch/dimens_device_defaults.xml new file mode 100644 index 0000000000000000000000000000000000000000..ac0fcb88e8ba384b4f4473c6656b87f878c29da8 --- /dev/null +++ b/core/res/res/values-watch/dimens_device_defaults.xml @@ -0,0 +1,24 @@ + + + + + 0.5 + + 1.0 + + 0.8 + diff --git a/core/res/res/values-watch/themes_device_defaults.xml b/core/res/res/values-watch/themes_device_defaults.xml index 4d210f6e2f9f740fc65dba6908222b16f8d6a600..f6752c2942fe2a39f34f71d698c06f86feeffcf7 100644 --- a/core/res/res/values-watch/themes_device_defaults.xml +++ b/core/res/res/values-watch/themes_device_defaults.xml @@ -37,11 +37,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @@ -49,11 +54,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @@ -134,11 +159,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @@ -156,11 +186,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @@ -195,11 +240,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @@ -248,11 +313,16 @@ a similar way. @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default @color/primary_device_default_dark @color/primary_dark_device_default_dark + @color/foreground_device_default_dark @color/accent_device_default_dark @color/background_device_default_dark @color/background_floating_device_default_dark @color/background_cache_hint_selector_device_default @color/button_normal_device_default_dark + @color/error_color_device_default_dark + @dimen/disabled_alpha_device_default + @dimen/primary_content_alpha_device_default + @dimen/secondary_content_alpha_device_default diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index cc8a0653a900483d5b97b31de97a57bcdd4c66d1..02599dadb0d935022e619f3bb8f166bd4376d19c 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d天" - "%1$d%2$d小时" - "%1$d%2$d小时" - "%1$d小时" - "%1$d小时%2$d分钟" - "%1$d小时%2$d分钟" - "%1$d分钟" - "%1$d 分钟" - "%1$d分钟%2$d秒" - "%1$d分钟%2$d秒" - "%1$d秒" - "%1$d秒" "<未命名>" "(无电话号码)" "未知" @@ -95,11 +79,13 @@ "无法使用语音通话/紧急呼救服务" "您所在位置的移动网络暂时不提供这项服务" "无法连接网络" - "要改善信号情况,请尝试更改在“系统”>“网络和互联网”>“移动网络”>“首选网络类型”中选择的类型。" + "要改善信号情况,请尝试更改在“设置”>“网络和互联网”>“移动网络”>“首选网络类型”中选择的类型。" + "正在进行 WLAN 通话" + "紧急呼救需要使用移动网络。" "提醒" "来电转接" "紧急回拨模式" - "移动数据提醒" + "移动数据状态" "短信" "语音邮件" "WLAN 通话" @@ -1780,4 +1766,5 @@ "未配置的 SIM 卡" "不受允许的 SIM 卡" "不受允许的手机" + "弹出式窗口" diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index c592b655212658e0112f6227c765193e3cbe4273..6d603d90db12af5dd4c71ddae9ac978c49f5110a 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d 天" - "%1$d%2$d 小時" - "%1$d%2$d 小時" - "%1$d 小時" - "%1$d 小時 %2$d 分鐘" - "%1$d 小時 %2$d 分鐘" - "%1$d 分鐘" - "%1$d 分鐘" - "%1$d 分鐘 %2$d 秒" - "%1$d 分鐘 %2$d 秒" - "%1$d 秒" - "%1$d 秒" "<未命名>" "(沒有電話號碼)" "不明" @@ -95,11 +79,13 @@ "沒有語音/緊急服務" "您所在位置的流動網絡暫不提供這項服務" "無法連接網絡" - "如要改善接收品質,請前往 [系統] > [網絡與互聯網] > [流動網絡] > [偏好的網絡類型],然後變更所選的網絡類型。" + "如要接收更強訊號,請前往 [設定] > [網絡與互聯網] > [流動網絡] > [偏好的網絡類型] 更改網絡類型。" + "正在進行 Wi-Fi 通話" + "撥打緊急電話需要使用流動網絡" "通知" "來電轉駁" "緊急回撥模式" - "流動數據通知" + "流動數據狀態" "短訊" "留言訊息" "Wi-Fi 通話" @@ -1780,4 +1766,5 @@ "無法識別 SIM 卡" "不允許使用 SIM 卡" "不允許使用手機" + "彈出式視窗" diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 0eb317952946a7d17cf86056fdb557320e171374..2e0fefc6ba6cc8b407c76162e439b54fadcb3cc4 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -21,24 +21,8 @@ "位元組" - "KB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d 天" - "%1$d%2$d 小時" - "%1$d%2$d 小時" - "%1$d 小時" - "%1$d 小時 %2$d 分鐘" - "%1$d 小時 %2$d 分鐘" - "%1$d 分鐘" - "%1$d 分鐘" - "%1$d 分鐘 %2$d 秒" - "%1$d 分鐘 %2$d 秒" - "%1$d 秒" - "%1$d 秒" "<未命名>" "(沒有電話號碼)" "不明" @@ -95,11 +79,13 @@ "無法使用語音/緊急通話服務" "你所在位置的行動網路暫時不提供這項服務" "無法連上網路" - "如要改善收訊狀況,請依序開啟 [系統] > [網路與網際網路] > [行動網路] > [偏好的網路類型],然後選取其他網路類型。" + "如要改善收訊狀況,請依序開啟 [設定] > [網路與網際網路] > [行動網路] > [偏好的網路類型],然後選取其他網路類型。" + "Wi‑Fi 通話正在進行中" + "撥打緊急電話需要使用行動網路" "快訊" "來電轉接" "緊急回撥模式" - "行動數據快訊" + "行動數據狀態" "簡訊" "語音留言" "Wi-Fi 通話" @@ -1780,4 +1766,5 @@ "未佈建的 SIM 卡" "不受允許的 SIM 卡" "不受允許的手機" + "彈出式視窗" diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 22040d7274c9f7c2a64712486aa0d4f341e0ffc6..35dd469ed53665f022884b318d491538e8888d6a 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -21,24 +21,8 @@ "B" - "kB" - "MB" - "GB" - "TB" "PB" "%1$s %2$s" - "%1$d izinsuku" - "%1$d usuku %2$d amahora" - "%1$d usuku %2$d ihora" - "%1$d amahora" - "%1$d ihora %2$d amaminithi" - "%1$d ihora %2$d iminithi" - "%1$d amaminithi" - "%1$d iminithi" - "%1$d iminithi %2$d amasekhondi" - "%1$d iminithi %2$d isekhondi" - "%1$d amasekhondi" - "%1$d isekhondi" "<Akunasihloko>" "(Ayikho inombolo yefoni)" "Akwaziwa" @@ -95,11 +79,13 @@ "Ayikho isevisi yezwi/yesimo esiphuthumayo" "Okwesikhashana akunikezwa inethiwekhi yeselula endaweni yakho" "Ayikwazi ukufinyelela inethiwekhi" - "Ukuze kuthuthukiswe ukwamukelwa, zama ukushintsha uhlobo olukhethiwe kusistimu > Inethiwekhi ne-inthanethi > amanethiwekhi eselula > uhlobo oluncanyelwayo lwenethiwekhi." + "Ukuze uthuthukise ukwamukelwa, zama ukushintsha uhlobo olukhethiwe kuzilungiselelo > Inethiwekhi ne-inthanethi > amanethiwekhi eselula > Uhlobo oluncanyelwayo lwenethiwekhi." + "Ukushaya kwe-Wi-Fi kuyasebenza" + "Amakholi aphuthumayo adinga inethiwekhi yeselula." "Izexwayiso" "Ukudlulisa ikholi" "Imodi yokushayela yesimo esiphuthumayo" - "Izexwayiso zedatha yeselula" + "Isimo sedatha yeselula" "Imilayezo ye-SMS" "Imilayezo yevoyisimeyili" "Ukushaya kwe-Wi-Fi" @@ -1780,4 +1766,5 @@ "I-SIM ayinikezelwe" "I-SIM ayivunyelwe" "Ifoni ayivunyelwe" + "Iwindi lesigelekeqe" diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 5baf98534d45da0d6beb794eeba39b93e8f01330..733878b9882b2e3adb790a81aae04af15eaa015a 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -22,68 +22,39 @@ - @drawable/ab_share_pack_material - @drawable/ab_solid_shadow_material @drawable/action_bar_item_background_material @drawable/activated_background_material @drawable/btn_borderless_material @drawable/btn_check_material_anim @drawable/btn_colored_material @drawable/btn_default_material - @drawable/btn_group_holo_dark - @drawable/btn_group_holo_light @drawable/btn_radio_material_anim - @drawable/btn_star_material @drawable/btn_toggle_material - @drawable/button_inset - @drawable/cab_background_bottom_material - @drawable/cab_background_top_material @drawable/control_background_32dp_material @drawable/control_background_40dp_material @drawable/dialog_background_material - @drawable/editbox_dropdown_background_dark - @drawable/edit_text_material - @drawable/expander_group_material @drawable/fastscroll_label_left_material @drawable/fastscroll_label_right_material @drawable/fastscroll_thumb_material @drawable/fastscroll_track_material @drawable/floating_popup_background_dark @drawable/floating_popup_background_light - @drawable/gallery_item_background @drawable/ic_ab_back_material @drawable/ic_ab_back_material_dark @drawable/ic_ab_back_material_light @drawable/ic_account_circle @drawable/ic_arrow_drop_right_black_24dp - @drawable/ic_clear - @drawable/ic_clear_disabled @drawable/ic_clear_material - @drawable/ic_clear_normal - @drawable/ic_commit_search_api_material @drawable/ic_dialog_alert_material - @drawable/ic_find_next_material - @drawable/ic_find_previous_material - @drawable/ic_go @drawable/ic_go_search_api_material - @drawable/ic_media_route_connecting_material_dark - @drawable/ic_media_route_connecting_material_light - @drawable/ic_media_route_material_dark - @drawable/ic_media_route_material_light - @drawable/ic_menu_close_clear_cancel @drawable/ic_menu_copy_material @drawable/ic_menu_cut_material - @drawable/ic_menu_find_material - @drawable/ic_menu_more @drawable/ic_menu_moreoverflow_material @drawable/ic_menu_paste_material - @drawable/ic_menu_search_material @drawable/ic_menu_selectall_material @drawable/ic_menu_share_material @drawable/ic_search_api_material @drawable/ic_voice_search_api_material - @drawable/indicator_check_mark_dark - @drawable/indicator_check_mark_light @drawable/item_background_borderless_material @drawable/item_background_borderless_material_dark @drawable/item_background_borderless_material_light @@ -92,30 +63,15 @@ @drawable/item_background_material_light @drawable/list_choice_background_material @drawable/list_divider_material - @drawable/list_section_divider_material - @drawable/menu_background_fill_parent_width @drawable/notification_material_action_background @drawable/notification_material_media_action_background @drawable/number_picker_divider_material @drawable/popup_background_material - @drawable/popup_inline_error_above_holo_dark - @drawable/popup_inline_error_above_holo_light - @drawable/popup_inline_error_holo_dark - @drawable/popup_inline_error_holo_light @drawable/progress_horizontal_material @drawable/progress_indeterminate_horizontal_material @drawable/progress_large_material @drawable/progress_medium_material @drawable/progress_small_material - @drawable/quickcontact_badge_overlay_dark - @drawable/quickcontact_badge_overlay_light - @drawable/quickcontact_badge_overlay_normal_dark - @drawable/quickcontact_badge_overlay_normal_light - @drawable/quickcontact_badge_overlay_pressed_dark - @drawable/quickcontact_badge_overlay_pressed_light - @drawable/ratingbar_indicator_material - @drawable/ratingbar_material - @drawable/ratingbar_small_material @drawable/screen_background_dark @drawable/screen_background_dark_transparent @drawable/screen_background_light @@ -127,17 +83,9 @@ @drawable/seekbar_tick_mark_material @drawable/seekbar_track_material @drawable/spinner_background_material - @drawable/spinner_textfield_background_material - @drawable/switch_thumb_material_anim @drawable/switch_track_material @drawable/tab_indicator_material @drawable/text_cursor_material - @drawable/text_edit_paste_window - @drawable/textfield_search_material - @drawable/text_select_handle_left_material - @drawable/text_select_handle_middle_material - @drawable/text_select_handle_right_material - @drawable/toast_frame + + + @@ -1888,6 +1891,7 @@ + @@ -2052,6 +2056,14 @@ Corresponds to {@link android.view.Window#setNavigationBarColor(int)}. --> + + + + + + diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index ced22cc37f5a84bf9298433e0a5fd4bf5a3a2809..8aff3b6eb7497f5768ddc2b11a70c6d21b60a433 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -242,9 +242,9 @@ - - + @@ -561,6 +561,35 @@ to be set for all windows of this activity --> + + + + + + + + + + + @@ -1742,6 +1795,17 @@ + + + + + + - #ffff5722 + #ffff6d00 #ff000000 #ff22f033 diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index e291ea6cc856535829ee595270356561acc50819..15fd34d78a01c0f10dc22a55a319fada409c1a2c 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -44,7 +44,11 @@ @string/status_bar_zen @string/status_bar_mute @string/status_bar_volume + @string/status_bar_vpn + @string/status_bar_ethernet @string/status_bar_wifi + @string/status_bar_mobile + @string/status_bar_airplane @string/status_bar_cdma_eri @string/status_bar_data_connection @string/status_bar_phone_evdo_signal @@ -81,6 +85,10 @@ alarm_clock secure clock + mobile + vpn + ethernet + airplane false + + false + true @@ -422,24 +435,45 @@ --> 0 - - - - 0 1 - 5 7 + 0 @@ -516,15 +550,18 @@ -82 + -82 -70 -57 -85 + -85 -73 -60 6 12 24 36 + DA-A1-19 1,6,11 @@ -611,10 +648,10 @@ false - 200 + 180 - 40 + 60 true @@ -864,6 +901,18 @@ 4082 + + 0.0 + 0.0 + 1.0 + -0.00000000962353339 + 0.000153045476 + 0.390782778 + -0.0000000189359041 + 0.000302412211 + -0.198650895 + + false + + true + 100 + + 30000 + @@ -1978,6 +2037,10 @@ 500 + + 4dp + 64dp @@ -2218,11 +2281,19 @@ + See {@link com.android.server.notification.NotificationSignalExtractor} + If you add a new extractor to this list make sure to update + NotificationManagerService.handleRankingSort()--> + + com.android.server.notification.NotificationChannelExtractor + com.android.server.notification.NotificationAdjustmentExtractor + com.android.server.notification.ValidateNotificationPeople com.android.server.notification.PriorityExtractor com.android.server.notification.ImportanceExtractor + com.android.server.notification.NotificationIntrusivenessExtractor com.android.server.notification.VisibilityExtractor com.android.server.notification.BadgeExtractor @@ -2972,9 +3043,11 @@ false - - 67 + + .10 + + + /system/media/audio/ui/InCallNotification.ogg -1 @@ -3002,6 +3075,13 @@ + + false + + + true + false @@ -3011,6 +3091,12 @@ true + + -1 + -1 + false diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index b4636a69709ca92dbc292f82b89261e4f94d10aa..16c857894d054b3a2c31fd7d2a84b19726c5b494 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -438,15 +438,6 @@ 4dip - - 320dp - - - 400dp - - - 8dp - 8dp @@ -592,7 +583,32 @@ 40dp + + 208dp + + 294dp + + 208dp + + 294dp + + 100dp + + 100dp + + 40dp + 90% + + 20% + + + 300dp + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 4868774723f4ced1a061757bc3433c128e82359e..bbd29c5d3b0300b04b0dcb8c89ac3cdfa60e7cb6 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2825,17 +2825,30 @@ - - + + - - + + + + + - - + B - - kB - - MB - - GB - - TB PB - - %1$s %2$s - - - %1$d days - - - %1$d day - %2$d hrs - - - %1$d day - %2$d hr - - - %1$d hrs - - - %1$d hr - %2$d mins - - - %1$d hr - %2$d min - - - %1$d mins - - - %1$d min - - - %1$d min - %2$d secs - - - %1$d min - %2$d sec - - - %1$d secs - - - %1$d sec + + %1$s %2$s @@ -204,7 +152,11 @@ Can\u2019t reach network - To improve reception, try changing the type selected at System > Network & Internet > Mobile networks > Preferred network type." + To improve reception, try changing the type selected at Settings > Network & Internet > Mobile networks > Preferred network type." + + Wi\u2011Fi calling is active + + Emergency calls require a mobile network. Alerts @@ -212,8 +164,8 @@ Call forwarding Emergency callback mode - - Mobile data alerts + + Mobile data status SMS messages @@ -4715,4 +4667,7 @@ SIM not provisioned SIM not allowed Phone not allowed + + + Popup Window diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 4b0fe3f3a04cde19c9989ea5fa44127a4a0907cd..e14aa149b1c7e1f80627aa0ed5d1c70d885a9730 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -1493,6 +1493,12 @@ please see styles_device_defaults.xml. @drawable/autofill_dataset_picker_background + + + @@ -1204,8 +1204,8 @@ please see styles_device_defaults.xml. diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d5624981bb6408c841ce23dd079037bd1d5def1d..451a285bdac753880f73a083021abfd79c8b4f65 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -241,6 +241,7 @@ + @@ -273,6 +274,7 @@ + @@ -355,9 +357,11 @@ + + @@ -428,6 +432,7 @@ + @@ -451,6 +456,7 @@ + @@ -528,6 +534,8 @@ + + @@ -536,7 +544,7 @@ - + @@ -658,18 +666,6 @@ - - - - - - - - - - - - @@ -689,7 +685,6 @@ - @@ -745,7 +740,6 @@ - @@ -766,7 +760,6 @@ - @@ -969,7 +962,6 @@ - @@ -1745,6 +1737,8 @@ + + @@ -2821,6 +2815,7 @@ + @@ -2906,11 +2901,11 @@ - - + + + - @@ -2930,7 +2925,10 @@ + + + @@ -2940,6 +2938,14 @@ + + + + + + + + @@ -3015,6 +3021,8 @@ + + @@ -3047,7 +3055,8 @@ - + + @@ -3061,10 +3070,14 @@ + + + + diff --git a/core/res/res/values/themes.xml b/core/res/res/values/themes.xml index 383ae5d577cef81127364cdd0950e8fd9bfef940..9c3d8ebfa5054d2c6ded0f31747a5208cb9227cf 100644 --- a/core/res/res/values/themes.xml +++ b/core/res/res/values/themes.xml @@ -453,6 +453,9 @@ please see themes_device_defaults.xml. @dimen/autofill_dataset_picker_max_size @dimen/autofill_dataset_picker_max_size + + + @dimen/autofill_save_custom_subtitle_max_height diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index 8755e37f105fd5cd1567ec7dd5265e3d4cf35e98..bf0c9066039206aac01540761b55163cdeb6e5ac 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -745,6 +745,11 @@ easier. @color/secondary_device_default_settings_light @color/accent_device_default_light @android:color/black + + + #1f000000 + @android:color/white + true 250 400 - 10dp + @dimen/config_scrollbarSize @drawable/scrollbar_handle_material @drawable/config_scrollbarThumbVertical @null @@ -582,7 +582,7 @@ please see themes_device_defaults.xml. 250 400 - 10dp + @dimen/config_scrollbarSize @drawable/scrollbar_handle_material @drawable/config_scrollbarThumbVertical @null diff --git a/tests/radio/Android.mk b/core/tests/BroadcastRadioTests/Android.mk similarity index 90% rename from tests/radio/Android.mk rename to core/tests/BroadcastRadioTests/Android.mk index dc55d0bb0b58d3cdbe89aa18a460aac98dffe43f..c409e3af7fa7afba183f1c44e471e52ff118aeee 100644 --- a/tests/radio/Android.mk +++ b/core/tests/BroadcastRadioTests/Android.mk @@ -16,8 +16,10 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -LOCAL_PACKAGE_NAME := RadioTests +LOCAL_PACKAGE_NAME := BroadcastRadioTests +LOCAL_PRIVILEGED_MODULE := true +LOCAL_CERTIFICATE := platform LOCAL_MODULE_TAGS := tests # TODO(b/13282254): uncomment when b/13282254 is fixed # LOCAL_SDK_VERSION := current diff --git a/tests/radio/AndroidManifest.xml b/core/tests/BroadcastRadioTests/AndroidManifest.xml similarity index 88% rename from tests/radio/AndroidManifest.xml rename to core/tests/BroadcastRadioTests/AndroidManifest.xml index 150edbffe8f8b6617a47204b4f74fbe84778e00a..d9b5522693e36828a147705b3438c5e2894bb2c6 100644 --- a/tests/radio/AndroidManifest.xml +++ b/core/tests/BroadcastRadioTests/AndroidManifest.xml @@ -17,6 +17,8 @@ + + @@ -24,6 +26,6 @@ + android:label="Tests for Broadcast Radio APIs" > diff --git a/tests/radio/src/android/hardware/radio/tests/RadioTest.java b/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java similarity index 79% rename from tests/radio/src/android/hardware/radio/tests/RadioTest.java rename to core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java index 47e104ce03e3aa5b9a35b123fbb0b0f0001fca3f..a8d516405ea2aa1169660bc2c65402817585e151 100644 --- a/tests/radio/src/android/hardware/radio/tests/RadioTest.java +++ b/core/tests/BroadcastRadioTests/src/android/hardware/radio/tests/functional/RadioTunerTest.java @@ -13,19 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.hardware.radio.tests; +package android.hardware.radio.tests.functional; +import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; +import android.hardware.radio.ProgramSelector; import android.hardware.radio.RadioManager; import android.hardware.radio.RadioTuner; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.MediumTest; import android.util.Log; import java.lang.reflect.Constructor; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.junit.After; import org.junit.Before; @@ -41,6 +46,7 @@ import static org.junit.Assume.*; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.after; +import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.never; import static org.mockito.Mockito.timeout; @@ -53,14 +59,16 @@ import static org.testng.Assert.assertThrows; * A test for broadcast radio API. */ @RunWith(AndroidJUnit4.class) -public class RadioTest { - private static final String TAG = "RadioTest"; +@MediumTest +public class RadioTunerTest { + private static final String TAG = "BroadcastRadioTests.RadioTuner"; public final Context mContext = InstrumentationRegistry.getContext(); private final int kConfigCallbackTimeoutMs = 10000; private final int kCancelTimeoutMs = 1000; private final int kTuneCallbackTimeoutMs = 30000; + private final int kFullScanTimeoutMs = 60000; private RadioManager mRadioManager; private RadioTuner mRadioTuner; @@ -80,9 +88,15 @@ public class RadioTest { // check if radio is supported and skip the test if it's not PackageManager packageManager = mContext.getPackageManager(); - boolean isRadioSupported = packageManager.hasSystemFeature(PackageManager.FEATURE_RADIO); + boolean isRadioSupported = packageManager.hasSystemFeature( + PackageManager.FEATURE_BROADCAST_RADIO); assumeTrue(isRadioSupported); + // Check radio access permission + int res = mContext.checkCallingOrSelfPermission(Manifest.permission.ACCESS_BROADCAST_RADIO); + assertEquals("ACCESS_BROADCAST_RADIO permission not granted", + PackageManager.PERMISSION_GRANTED, res); + mRadioManager = (RadioManager)mContext.getSystemService(Context.RADIO_SERVICE); assertNotNull(mRadioManager); @@ -99,7 +113,7 @@ public class RadioTest { mRadioTuner.close(); mRadioTuner = null; } - verifyNoMoreInteractions(mCallback); + resetCallback(); } private void openTuner() { @@ -107,6 +121,7 @@ public class RadioTest { } private void resetCallback() { + verify(mCallback, atLeast(0)).onMetadataChanged(any()); verifyNoMoreInteractions(mCallback); Mockito.reset(mCallback); } @@ -116,11 +131,14 @@ public class RadioTest { // find FM band and build its config mModule = mModules.get(0); + for (RadioManager.BandDescriptor band : mModule.getBands()) { - if (band.getType() == RadioManager.BAND_AM) { + Log.d(TAG, "Band: " + band); + int bandType = band.getType(); + if (bandType == RadioManager.BAND_AM || bandType == RadioManager.BAND_AM_HD) { mAmBandDescriptor = (RadioManager.AmBandDescriptor)band; } - if (band.getType() == RadioManager.BAND_FM) { + if (bandType == RadioManager.BAND_FM || bandType == RadioManager.BAND_FM_HD) { mFmBandDescriptor = (RadioManager.FmBandDescriptor)band; } } @@ -134,11 +152,9 @@ public class RadioTest { assertNotNull(mRadioTuner); verify(mCallback, timeout(kConfigCallbackTimeoutMs)).onConfigurationChanged(any()); resetCallback(); - } - private void checkAntenna() { - boolean isConnected = mRadioTuner.isAntennaConnected(); - assertTrue(isConnected); + boolean isAntennaConnected = mRadioTuner.isAntennaConnected(); + assertTrue(isAntennaConnected); } @Test @@ -246,7 +262,6 @@ public class RadioTest { @Test public void testStep() { openTuner(); - checkAntenna(); int ret = mRadioTuner.step(RadioTuner.DIRECTION_DOWN, true); assertEquals(RadioManager.STATUS_OK, ret); @@ -259,10 +274,24 @@ public class RadioTest { verify(mCallback, timeout(kTuneCallbackTimeoutMs)).onProgramInfoChanged(any()); } + @Test + public void testStepLoop() { + openTuner(); + + for (int i = 0; i < 10; i++) { + Log.d(TAG, "step loop iteration " + (i + 1)); + + int ret = mRadioTuner.step(RadioTuner.DIRECTION_DOWN, true); + assertEquals(RadioManager.STATUS_OK, ret); + verify(mCallback, timeout(kTuneCallbackTimeoutMs)).onProgramInfoChanged(any()); + + resetCallback(); + } + } + @Test public void testTuneAndGetPI() { openTuner(); - checkAntenna(); int channel = mFmBandConfig.getLowerLimit() + mFmBandConfig.getSpacing(); @@ -281,6 +310,7 @@ public class RadioTest { assertEquals(RadioManager.STATUS_OK, ret); assertNotNull(info[0]); assertEquals(channel, info[0].getChannel()); + Log.d(TAG, "PI: " + info[0].toString()); } @Test @@ -294,7 +324,6 @@ public class RadioTest { @Test public void testLateCancel() { openTuner(); - checkAntenna(); int ret = mRadioTuner.step(RadioTuner.DIRECTION_DOWN, false); assertEquals(RadioManager.STATUS_OK, ret); @@ -307,7 +336,6 @@ public class RadioTest { @Test public void testScanAndCancel() { openTuner(); - checkAntenna(); /* There is a possible race condition between scan and cancel commands - the scan may finish * before cancel command is issued. Thus we accept both outcomes in this test. @@ -325,7 +353,6 @@ public class RadioTest { @Test public void testStartBackgroundScan() { openTuner(); - checkAntenna(); boolean ret = mRadioTuner.startBackgroundScan(); boolean isSupported = mModule.isBackgroundScanningSupported(); @@ -335,10 +362,11 @@ public class RadioTest { @Test public void testGetProgramList() { openTuner(); - checkAntenna(); try { - List list = mRadioTuner.getProgramList(null); + Map filter = new HashMap<>(); + filter.put("com.google.dummy", "dummy"); + List list = mRadioTuner.getProgramList(filter); assertNotNull(list); } catch (IllegalStateException e) { // the list may or may not be ready at this point @@ -346,6 +374,39 @@ public class RadioTest { } } + @Test + public void testTuneFromProgramList() { + openTuner(); + + List list; + + try { + list = mRadioTuner.getProgramList(null); + assertNotNull(list); + } catch (IllegalStateException e) { + Log.i(TAG, "Background list is not ready, trying to fix it"); + + boolean success = mRadioTuner.startBackgroundScan(); + assertTrue(success); + verify(mCallback, timeout(kFullScanTimeoutMs)).onBackgroundScanComplete(); + + list = mRadioTuner.getProgramList(null); + assertNotNull(list); + } + + if (list.isEmpty()) { + Log.i(TAG, "Program list is empty, can't test tune"); + return; + } + + ProgramSelector sel = list.get(0).getSelector(); + mRadioTuner.tune(sel); + ArgumentCaptor infoc = + ArgumentCaptor.forClass(RadioManager.ProgramInfo.class); + verify(mCallback, timeout(kTuneCallbackTimeoutMs)).onProgramInfoChanged(infoc.capture()); + assertEquals(sel, infoc.getValue().getSelector()); + } + @Test public void testForcedAnalog() { openTuner(); diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml index e127896a70912ea7f74233d4fee73f5892599eb3..ab9912a438d4c25905e1d750036f90048d578d7f 100644 --- a/core/tests/coretests/AndroidManifest.xml +++ b/core/tests/coretests/AndroidManifest.xml @@ -978,6 +978,13 @@ + + + + + + + diff --git a/core/tests/coretests/README b/core/tests/coretests/README index aced4417ba024bab3b2067a192e1a78098732855..ea282a0ebb3aa54b629b03c379ef44f8d779e00d 100644 --- a/core/tests/coretests/README +++ b/core/tests/coretests/README @@ -28,7 +28,7 @@ To run a test or set of tests, first build the FrameworksCoreTests package: Next, install the resulting APK and run tests as you would normal JUnit tests: - adb install out/target/product/.../data/app/FrameworksCoreTests/FrameworksCoreTests.apk + adb install -r ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk adb shell am instrument -w \ com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner diff --git a/core/tests/coretests/apks/install_complete_package_info/AndroidManifest.xml b/core/tests/coretests/apks/install_complete_package_info/AndroidManifest.xml index 4b01736d67c4f7166b37e7d6150d9cc108735db1..2c430e08c16a76c6eea13f5c8a9fd51b011d19e2 100644 --- a/core/tests/coretests/apks/install_complete_package_info/AndroidManifest.xml +++ b/core/tests/coretests/apks/install_complete_package_info/AndroidManifest.xml @@ -40,15 +40,31 @@ + + + + + + android:authorities="com.android.frameworks.coretests.testprovider" > + + + + + android:name="com.android.frameworks.coretests.TestReceiver" > + + + + + android:name="com.android.frameworks.coretests.TestService" > + + + diff --git a/core/tests/coretests/apks/install_multi_package/Android.mk b/core/tests/coretests/apks/install_multi_package/Android.mk new file mode 100644 index 0000000000000000000000000000000000000000..2813dad2339a3e0619f206cd594ba78955e5a7df --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/Android.mk @@ -0,0 +1,12 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := install_multi_package + +include $(FrameworkCoreTests_BUILD_PACKAGE) +#include $(BUILD_PACKAGE) + diff --git a/core/tests/coretests/apks/install_multi_package/AndroidManifest.xml b/core/tests/coretests/apks/install_multi_package/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..5164cae9e5c0d23b8468c15cb9f4e9da9ab820cc --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/AndroidManifest.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTaskListener.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestActivity.java similarity index 68% rename from tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTaskListener.java rename to core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestActivity.java index b1d168fe34e1e61cba2c9836176c443bf74e98c7..57afcb0e1a0df6cf1bcc338e3f28534d2372dad0 100644 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTaskListener.java +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestActivity.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 Google Inc. All Rights Reserved. + * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -12,13 +12,13 @@ * 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.example.android.musicservicedemo.browser; +package com.android.frameworks.coretests; + +import android.app.Activity; + +public class FirstChildTestActivity extends Activity { -/** - * Callback listener for completion of MusicProviderTask - */ -public interface MusicProviderTaskListener { - public void onMusicProviderTaskCompleted(); } diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestProvider.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2816865b2f1f944f800351406c176f5f6eef4702 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestProvider.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class FirstChildTestProvider extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestReceiver.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..ffe84b73dd37f7a3d1658d6dbb995a629eaa8d3e --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestReceiver.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class FirstChildTestReceiver extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestService.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestService.java new file mode 100644 index 0000000000000000000000000000000000000000..faa6e9cff2b2cd6987be4dcf12da54f4ecc20166 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/FirstChildTestService.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +public class FirstChildTestService extends Service { + + @Override + public IBinder onBind(Intent intent) { + return null; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestActivity.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..e89f264899593514668613d2964fc5fef66f3e6c --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestActivity.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.app.Activity; + +public class SecondChildTestActivity extends Activity { + +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestProvider.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..2bd40a5df94d661c6a07f21089aa44d9e4340b90 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestProvider.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class SecondChildTestProvider extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestReceiver.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..a6c4ddc90c6a99b797ee2446ca80eb0a988eb1d2 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestReceiver.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class SecondChildTestReceiver extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestService.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestService.java new file mode 100644 index 0000000000000000000000000000000000000000..1e721aa8ae5b0e72a0fcc9164ac22f4fa707ad4f --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/SecondChildTestService.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +public class SecondChildTestService extends Service { + + @Override + public IBinder onBind(Intent intent) { + return null; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestActivity.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..10d0551a3a6f1d43f00e15c763b5f352bad58810 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestActivity.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.app.Activity; + +public class TestActivity extends Activity { + +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestProvider.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..59f9f10c6efe67a50bc64ac13ed6372abcba3f44 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestProvider.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class TestProvider extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestReceiver.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..21f6263a38bc5ac994d6bba2c41ed83a87425361 --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestReceiver.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +public class TestReceiver extends ContentProvider { + + @Override + public boolean onCreate() { + return false; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + return null; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} diff --git a/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestService.java b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestService.java new file mode 100644 index 0000000000000000000000000000000000000000..b330e75308f97ce0ba4dc6df9566a1026716c1fd --- /dev/null +++ b/core/tests/coretests/apks/install_multi_package/src/com/android/frameworks/coretests/TestService.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.android.frameworks.coretests; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +public class TestService extends Service { + + @Override + public IBinder onBind(Intent intent) { + return null; + } +} diff --git a/core/tests/coretests/assets/fonts/underlineTestFont.ttf b/core/tests/coretests/assets/fonts/underlineTestFont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a46a38e0b397ba04eb0cb24275b2739561ec1f57 Binary files /dev/null and b/core/tests/coretests/assets/fonts/underlineTestFont.ttf differ diff --git a/core/tests/coretests/assets/fonts/underlineTestFont.ttx b/core/tests/coretests/assets/fonts/underlineTestFont.ttx new file mode 100644 index 0000000000000000000000000000000000000000..d7376b06703ee2c837fc82ead3f6360b283d11e7 --- /dev/null +++ b/core/tests/coretests/assets/fonts/underlineTestFont.ttx @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sample Font + + + Regular + + + Sample Font + + + SampleFont-Regular + + + + + + + + + + + + + + + + diff --git a/core/tests/coretests/res/layout/activity_editor_cursor_test.xml b/core/tests/coretests/res/layout/activity_editor_cursor_test.xml new file mode 100644 index 0000000000000000000000000000000000000000..45a9318cb4ec0b17521b5dbd34cf7b0fbc7f7d54 --- /dev/null +++ b/core/tests/coretests/res/layout/activity_editor_cursor_test.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/core/tests/coretests/res/layout/view_transient_state.xml b/core/tests/coretests/res/layout/view_transient_state.xml new file mode 100644 index 0000000000000000000000000000000000000000..887301547ef149abf996cdb2f592bd95438a19ba --- /dev/null +++ b/core/tests/coretests/res/layout/view_transient_state.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + diff --git a/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java b/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java index 42b06f587e928eaa6fd8ffc613ffb9be46078296..68b9b007976175430a247ee9bad91d844eccb85a 100644 --- a/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java +++ b/core/tests/coretests/src/android/app/DownloadManagerBaseTest.java @@ -29,13 +29,15 @@ import android.net.Uri; import android.net.wifi.WifiManager; import android.os.Environment; import android.os.ParcelFileDescriptor; -import android.os.UserHandle; import android.os.ParcelFileDescriptor.AutoCloseInputStream; import android.os.SystemClock; +import android.os.UserHandle; import android.provider.Settings; import android.test.InstrumentationTestCase; import android.util.Log; +import libcore.io.Streams; + import com.google.mockwebserver.MockResponse; import com.google.mockwebserver.MockWebServer; @@ -54,8 +56,6 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.TimeoutException; -import libcore.io.Streams; - /** * Base class for Instrumented tests for the Download Manager. */ @@ -83,9 +83,6 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { protected static final int WAIT_FOR_DOWNLOAD_POLL_TIME = 1 * 1000; // 1 second protected static final int MAX_WAIT_FOR_DOWNLOAD_TIME = 30 * 1000; // 30 seconds - protected static final int DOWNLOAD_TO_SYSTEM_CACHE = 1; - protected static final int DOWNLOAD_TO_DOWNLOAD_CACHE_DIR = 2; - // Just a few popular file types used to return from a download protected enum DownloadFileType { PLAINTEXT, @@ -923,13 +920,13 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { * @param body The body to return in the response from the server */ protected long doStandardEnqueue(byte[] body) throws Exception { - return enqueueDownloadRequest(body, DOWNLOAD_TO_DOWNLOAD_CACHE_DIR); + return enqueueDownloadRequest(body); } - protected long enqueueDownloadRequest(byte[] body, int location) throws Exception { + protected long enqueueDownloadRequest(byte[] body) throws Exception { // Prepare the mock server with a standard response mServer.enqueue(buildResponse(HTTP_OK, body)); - return doEnqueue(location); + return doEnqueue(); } /** @@ -938,13 +935,13 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { * @param body The body to return in the response from the server, contained in the file */ protected long doStandardEnqueue(File body) throws Exception { - return enqueueDownloadRequest(body, DOWNLOAD_TO_DOWNLOAD_CACHE_DIR); + return enqueueDownloadRequest(body); } - protected long enqueueDownloadRequest(File body, int location) throws Exception { + protected long enqueueDownloadRequest(File body) throws Exception { // Prepare the mock server with a standard response mServer.enqueue(buildResponse(HTTP_OK, body)); - return doEnqueue(location); + return doEnqueue(); } /** @@ -952,16 +949,12 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { * doing a standard enqueue request to the server. */ protected long doCommonStandardEnqueue() throws Exception { - return doEnqueue(DOWNLOAD_TO_DOWNLOAD_CACHE_DIR); + return doEnqueue(); } - private long doEnqueue(int location) throws Exception { + private long doEnqueue() throws Exception { Uri uri = getServerUri(DEFAULT_FILENAME); Request request = new Request(uri).setTitle(DEFAULT_FILENAME); - if (location == DOWNLOAD_TO_SYSTEM_CACHE) { - request.setDestinationToSystemCache(); - } - return mDownloadManager.enqueue(request); } @@ -1026,8 +1019,8 @@ public class DownloadManagerBaseTest extends InstrumentationTestCase { /** * Helper that does the actual basic download verification. */ - protected long doBasicDownload(byte[] blobData, int location) throws Exception { - long dlRequest = enqueueDownloadRequest(blobData, location); + protected long doBasicDownload(byte[] blobData) throws Exception { + long dlRequest = enqueueDownloadRequest(blobData); // wait for the download to complete waitForDownloadOrTimeout(dlRequest); diff --git a/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java b/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java index d1a5d281326a430324b1f532bd8d4b66ca14a460..c1d4be0f33c335b5c5f84491f51ac1c8ee897867 100644 --- a/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java +++ b/core/tests/coretests/src/android/app/DownloadManagerFunctionalTest.java @@ -23,12 +23,13 @@ import android.net.Uri; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.test.suitebuilder.annotation.LargeTest; + import com.google.mockwebserver.MockResponse; import java.io.File; -import java.util.concurrent.TimeoutException; import java.util.Iterator; import java.util.Set; +import java.util.concurrent.TimeoutException; /** * Integration tests of the DownloadManager API. @@ -95,11 +96,11 @@ public class DownloadManagerFunctionalTest extends DownloadManagerBaseTest { * Test a basic download of a binary file 500k in size. */ @LargeTest - public void testBinaryDownloadToSystemCache() throws Exception { + public void testBinaryDownload() throws Exception { int fileSize = 1024; byte[] blobData = generateData(fileSize, DataType.BINARY); - long dlRequest = doBasicDownload(blobData, DOWNLOAD_TO_SYSTEM_CACHE); + long dlRequest = doBasicDownload(blobData); verifyDownload(dlRequest, blobData); mDownloadManager.remove(dlRequest); } @@ -108,11 +109,11 @@ public class DownloadManagerFunctionalTest extends DownloadManagerBaseTest { * Tests the basic downloading of a text file 300000 bytes in size. */ @LargeTest - public void testTextDownloadToSystemCache() throws Exception { + public void testTextDownload() throws Exception { int fileSize = 1024; byte[] blobData = generateData(fileSize, DataType.TEXT); - long dlRequest = doBasicDownload(blobData, DOWNLOAD_TO_SYSTEM_CACHE); + long dlRequest = doBasicDownload(blobData); verifyDownload(dlRequest, blobData); mDownloadManager.remove(dlRequest); } @@ -318,7 +319,7 @@ public class DownloadManagerFunctionalTest extends DownloadManagerBaseTest { int fileSize = 1024; byte[] blobData = generateData(fileSize, DataType.BINARY); - long dlRequest = doBasicDownload(blobData, DOWNLOAD_TO_DOWNLOAD_CACHE_DIR); + long dlRequest = doBasicDownload(blobData); Cursor cursor = mDownloadManager.query(new Query().setFilterById(dlRequest)); try { assertEquals("The count of downloads with this ID is not 1!", 1, cursor.getCount()); diff --git a/core/tests/coretests/src/android/app/DownloadManagerStressTest.java b/core/tests/coretests/src/android/app/DownloadManagerStressTest.java index 9fa9131ec5ec2d96dd643fc4bd0664cfd6eec097..39d9a8e31ddc0520540811e4a5abf0b099d4746a 100644 --- a/core/tests/coretests/src/android/app/DownloadManagerStressTest.java +++ b/core/tests/coretests/src/android/app/DownloadManagerStressTest.java @@ -195,7 +195,7 @@ public class DownloadManagerStressTest extends DownloadManagerBaseTest { // try to download 1MB file into /cache - and it should succeed byte[] blobData = generateData(DOWNLOAD_FILE_SIZE, DataType.TEXT); - long dlRequest = doBasicDownload(blobData, DOWNLOAD_TO_SYSTEM_CACHE); + long dlRequest = doBasicDownload(blobData); verifyAndCleanupSingleFileDownload(dlRequest, blobData); } finally { if (outFile != null) { diff --git a/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java b/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java index 2470e87666a9a57fe191063c7c1d2905b6ffbefe..d289f1f5defc6fc1d5409f6ed4b66afbbd0fd67f 100644 --- a/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java +++ b/core/tests/coretests/src/android/app/admin/PasswordMetricsTest.java @@ -17,6 +17,7 @@ package android.app.admin; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import android.os.Parcel; import android.support.test.filters.SmallTest; @@ -119,4 +120,48 @@ public class PasswordMetricsTest { // ordered, but not composed of alphas or digits assertEquals(1, PasswordMetrics.maxLengthSequence(":;<=>")); } + + @Test + public void testEquals() { + PasswordMetrics metrics0 = new PasswordMetrics(); + PasswordMetrics metrics1 = new PasswordMetrics(); + assertNotEquals(metrics0, null); + assertNotEquals(metrics0, new Object()); + assertEquals(metrics0, metrics0); + assertEquals(metrics0, metrics1); + + assertEquals(new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, 4), + new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, 4)); + + assertNotEquals(new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, 4), + new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, 5)); + + assertNotEquals(new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING, 4), + new PasswordMetrics(DevicePolicyManager.PASSWORD_QUALITY_COMPLEX, 4)); + + metrics0 = PasswordMetrics.computeForPassword("1234abcd,./"); + metrics1 = PasswordMetrics.computeForPassword("1234abcd,./"); + assertEquals(metrics0, metrics1); + metrics1.letters++; + assertNotEquals(metrics0, metrics1); + metrics1.letters--; + metrics1.upperCase++; + assertNotEquals(metrics0, metrics1); + metrics1.upperCase--; + metrics1.lowerCase++; + assertNotEquals(metrics0, metrics1); + metrics1.lowerCase--; + metrics1.numeric++; + assertNotEquals(metrics0, metrics1); + metrics1.numeric--; + metrics1.symbols++; + assertNotEquals(metrics0, metrics1); + metrics1.symbols--; + metrics1.nonLetter++; + assertNotEquals(metrics0, metrics1); + metrics1.nonLetter--; + assertEquals(metrics0, metrics1); + + + } } diff --git a/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java b/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4d2a0470b2ea779274daf20981a209e85fca593e --- /dev/null +++ b/core/tests/coretests/src/android/content/pm/PackageBackwardCompatibilityTest.java @@ -0,0 +1,114 @@ +/* + * 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.content.pm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import android.content.pm.PackageParser.Package; +import android.os.Build; +import android.support.test.filters.SmallTest; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.util.ArrayList; +import java.util.Collections; + +@SmallTest +@RunWith(JUnit4.class) +public class PackageBackwardCompatibilityTest { + + private static final String ORG_APACHE_HTTP_LEGACY = "org.apache.http.legacy"; + + private static final String ANDROID_TEST_RUNNER = "android.test.runner"; + + private static final String ANDROID_TEST_MOCK = "android.test.mock"; + + private Package mPackage; + + private static ArrayList arrayList(String... strings) { + ArrayList list = new ArrayList<>(); + Collections.addAll(list, strings); + return list; + } + + @Before + public void setUp() { + mPackage = new Package("org.package.name"); + mPackage.applicationInfo.targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT; + } + + @Test + public void null_usesLibraries() { + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertNull("usesLibraries not updated correctly", mPackage.usesLibraries); + } + + @Test + public void null_usesOptionalLibraries() { + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); + } + + @Test + public void remove_org_apache_http_legacy_from_usesLibraries() { + mPackage.usesLibraries = arrayList(ORG_APACHE_HTTP_LEGACY); + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertNull("usesLibraries not updated correctly", mPackage.usesLibraries); + } + + @Test + public void remove_org_apache_http_legacy_from_usesOptionalLibraries() { + mPackage.usesOptionalLibraries = arrayList(ORG_APACHE_HTTP_LEGACY); + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertNull("usesOptionalLibraries not updated correctly", mPackage.usesOptionalLibraries); + } + + @Test + public void android_test_runner_in_usesLibraries() { + mPackage.usesLibraries = arrayList(ANDROID_TEST_RUNNER); + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertEquals("usesLibraries not updated correctly", + arrayList(ANDROID_TEST_RUNNER, ANDROID_TEST_MOCK), + mPackage.usesLibraries); + } + + @Test + public void android_test_runner_in_usesOptionalLibraries() { + mPackage.usesOptionalLibraries = arrayList(ANDROID_TEST_RUNNER); + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertEquals("usesOptionalLibraries not updated correctly", + arrayList(ANDROID_TEST_RUNNER, ANDROID_TEST_MOCK), + mPackage.usesOptionalLibraries); + } + + @Test + public void android_test_runner_in_usesLibraries_android_test_mock_in_usesOptionalLibraries() { + mPackage.usesLibraries = arrayList(ANDROID_TEST_RUNNER); + mPackage.usesOptionalLibraries = arrayList(ANDROID_TEST_MOCK); + PackageBackwardCompatibility.modifySharedLibraries(mPackage); + assertEquals("usesLibraries not updated correctly", + arrayList(ANDROID_TEST_RUNNER), + mPackage.usesLibraries); + assertEquals("usesOptionalLibraries not updated correctly", + arrayList(ANDROID_TEST_MOCK), + mPackage.usesOptionalLibraries); + } +} diff --git a/core/tests/coretests/src/android/content/pm/PackageHelperTests.java b/core/tests/coretests/src/android/content/pm/PackageHelperTests.java index 5c497b4f527c509c02f1e9f0caeb657909d49ae7..55092fab5e4610677c7086917810decb92630d41 100644 --- a/core/tests/coretests/src/android/content/pm/PackageHelperTests.java +++ b/core/tests/coretests/src/android/content/pm/PackageHelperTests.java @@ -34,6 +34,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import static android.net.TrafficStats.MB_IN_BYTES; import static android.os.storage.VolumeInfo.STATE_MOUNTED; @@ -90,14 +91,20 @@ public class PackageHelperTests extends AndroidTestCase { File internalFile = new File(sInternalVolPath); File adoptedFile = new File(sAdoptedVolPath); File publicFile = new File(sPublicVolPath); + UUID internalUuid = UUID.randomUUID(); + UUID adoptedUuid = UUID.randomUUID(); + UUID publicUuid = UUID.randomUUID(); Mockito.when(storageManager.getStorageBytesUntilLow(internalFile)).thenReturn(sInternalSize); Mockito.when(storageManager.getStorageBytesUntilLow(adoptedFile)).thenReturn(sAdoptedSize); Mockito.when(storageManager.getStorageBytesUntilLow(publicFile)).thenReturn(sPublicSize); - Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(internalFile), Mockito.anyInt())) + Mockito.when(storageManager.getUuidForPath(Mockito.eq(internalFile))).thenReturn(internalUuid); + Mockito.when(storageManager.getUuidForPath(Mockito.eq(adoptedFile))).thenReturn(adoptedUuid); + Mockito.when(storageManager.getUuidForPath(Mockito.eq(publicFile))).thenReturn(publicUuid); + Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(internalUuid), Mockito.anyInt())) .thenReturn(sInternalSize); - Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(adoptedFile), Mockito.anyInt())) + Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(adoptedUuid), Mockito.anyInt())) .thenReturn(sAdoptedSize); - Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(publicFile), Mockito.anyInt())) + Mockito.when(storageManager.getAllocatableBytes(Mockito.eq(publicUuid), Mockito.anyInt())) .thenReturn(sPublicSize); return storageManager; } diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java index 423d45ea520a49299838a5c4920c8eb435840c5b..0a89b7409250708af518180ce5c3e114f7641446 100644 --- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java +++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java @@ -25,11 +25,14 @@ import static android.system.OsConstants.S_ISDIR; import static android.system.OsConstants.S_IXGRP; import static android.system.OsConstants.S_IXOTH; -import android.app.PackageInstallObserver; import android.content.BroadcastReceiver; import android.content.Context; +import android.content.IIntentReceiver; +import android.content.IIntentSender; import android.content.Intent; import android.content.IntentFilter; +import android.content.IntentSender; +import android.content.pm.PackageInstaller.SessionParams; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageParser.PackageParserException; import android.content.res.Resources; @@ -46,7 +49,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.StatFs; import android.os.SystemClock; -import android.os.UserManager; import android.os.storage.IStorageManager; import android.os.storage.StorageListener; import android.os.storage.StorageManager; @@ -67,9 +69,13 @@ import com.android.internal.content.PackageHelper; import dalvik.system.VMRuntime; +import libcore.io.IoUtils; + import java.io.File; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; @@ -77,6 +83,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; public class PackageManagerTests extends AndroidTestCase { @@ -130,29 +137,7 @@ public class PackageManagerTests extends AndroidTestCase { super.tearDown(); } - private class TestInstallObserver extends PackageInstallObserver { - public int returnCode; - - private boolean doneFlag = false; - - @Override - public void onPackageInstalled(String basePackageName, int returnCode, String msg, - Bundle extras) { - Log.d(TAG, "onPackageInstalled: code=" + returnCode + ", msg=" + msg + ", extras=" - + extras); - synchronized (this) { - this.returnCode = returnCode; - doneFlag = true; - notifyAll(); - } - } - - public boolean isDone() { - return doneFlag; - } - } - - abstract class GenericReceiver extends BroadcastReceiver { + private abstract static class GenericReceiver extends BroadcastReceiver { private boolean doneFlag = false; boolean received = false; @@ -184,7 +169,7 @@ public class PackageManagerTests extends AndroidTestCase { } } - class InstallReceiver extends GenericReceiver { + private static class InstallReceiver extends GenericReceiver { String pkgName; InstallReceiver(String pkgName) { @@ -208,100 +193,152 @@ public class PackageManagerTests extends AndroidTestCase { } } + private static class LocalIntentReceiver { + private final SynchronousQueue mResult = new SynchronousQueue<>(); + + private IIntentSender.Stub mLocalSender = new IIntentSender.Stub() { + @Override + public void send(int code, Intent intent, String resolvedType, IBinder whitelistToken, + IIntentReceiver finishedReceiver, String requiredPermission, Bundle options) { + try { + mResult.offer(intent, 5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }; + + public IntentSender getIntentSender() { + return new IntentSender((IIntentSender) mLocalSender); + } + + public Intent getResult() { + try { + return mResult.take(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + private PackageManager getPm() { return mContext.getPackageManager(); } - private IPackageManager getIPm() { - IPackageManager ipm = IPackageManager.Stub.asInterface( - ServiceManager.getService("package")); - return ipm; + private PackageInstaller getPi() { + return getPm().getPackageInstaller(); } - public void invokeInstallPackage(Uri packageURI, int flags, GenericReceiver receiver, - boolean shouldSucceed) { - TestInstallObserver observer = new TestInstallObserver(); - mContext.registerReceiver(receiver, receiver.filter); - try { - // Wait on observer - synchronized (observer) { - synchronized (receiver) { - getPm().installPackage(packageURI, observer, flags, null); - long waitTime = 0; - while ((!observer.isDone()) && (waitTime < MAX_WAIT_TIME)) { - try { - observer.wait(WAIT_TIME_INCR); - waitTime += WAIT_TIME_INCR; - } catch (InterruptedException e) { - Log.i(TAG, "Interrupted during sleep", e); - } - } - if (!observer.isDone()) { - fail("Timed out waiting for packageInstalled callback"); - } - - if (shouldSucceed) { - if (observer.returnCode != PackageManager.INSTALL_SUCCEEDED) { - fail("Package installation should have succeeded, but got code " - + observer.returnCode); - } - } else { - if (observer.returnCode == PackageManager.INSTALL_SUCCEEDED) { - fail("Package installation should fail"); - } - - /* - * We'll never expect get a notification since we - * shouldn't succeed. - */ - return; - } + private void writeSplitToInstallSession(PackageInstaller.Session session, String inPath, + String splitName) throws RemoteException { + long sizeBytes = 0; + final File file = new File(inPath); + if (file.isFile()) { + sizeBytes = file.length(); + } else { + return; + } - // Verify we received the broadcast - waitTime = 0; - while ((!receiver.isDone()) && (waitTime < MAX_WAIT_TIME)) { - try { - receiver.wait(WAIT_TIME_INCR); - waitTime += WAIT_TIME_INCR; - } catch (InterruptedException e) { - Log.i(TAG, "Interrupted during sleep", e); - } - } - if (!receiver.isDone()) { - fail("Timed out waiting for PACKAGE_ADDED notification"); - } - } - } + InputStream in = null; + OutputStream out = null; + try { + in = new FileInputStream(inPath); + out = session.openWrite(splitName, 0, sizeBytes); + + int total = 0; + byte[] buffer = new byte[65536]; + int c; + while ((c = in.read(buffer)) != -1) { + total += c; + out.write(buffer, 0, c); + } + session.fsync(out); + } catch (IOException e) { + fail("Error: failed to write; " + e.getMessage()); } finally { - mContext.unregisterReceiver(receiver); + IoUtils.closeQuietly(out); + IoUtils.closeQuietly(in); + IoUtils.closeQuietly(session); } } - public void invokeInstallPackageFail(Uri packageURI, int flags, int expectedResult) { - TestInstallObserver observer = new TestInstallObserver(); - try { - // Wait on observer - synchronized (observer) { - getPm().installPackage(packageURI, observer, flags, null); + private void invokeInstallPackage(Uri packageUri, int flags, GenericReceiver receiver, + boolean shouldSucceed) { + mContext.registerReceiver(receiver, receiver.filter); + synchronized (receiver) { + final String inPath = packageUri.getPath(); + PackageInstaller.Session session = null; + try { + final SessionParams sessionParams = + new SessionParams(SessionParams.MODE_FULL_INSTALL); + sessionParams.installFlags = flags; + final int sessionId = getPi().createSession(sessionParams); + session = getPi().openSession(sessionId); + writeSplitToInstallSession(session, inPath, "base.apk"); + final LocalIntentReceiver localReceiver = new LocalIntentReceiver(); + session.commit(localReceiver.getIntentSender()); + final Intent result = localReceiver.getResult(); + final int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS, + PackageInstaller.STATUS_FAILURE); + if (shouldSucceed) { + if (status != PackageInstaller.STATUS_SUCCESS) { + fail("Installation should have succeeded, but got code " + status); + } + } else { + if (status == PackageInstaller.STATUS_SUCCESS) { + fail("Installation should have failed"); + } + // We'll never get a broadcast since the package failed to install + return; + } + // Verify we received the broadcast long waitTime = 0; - while ((!observer.isDone()) && (waitTime < MAX_WAIT_TIME)) { + while ((!receiver.isDone()) && (waitTime < MAX_WAIT_TIME)) { try { - observer.wait(WAIT_TIME_INCR); + receiver.wait(WAIT_TIME_INCR); waitTime += WAIT_TIME_INCR; } catch (InterruptedException e) { Log.i(TAG, "Interrupted during sleep", e); } } - if (!observer.isDone()) { - fail("Timed out waiting for packageInstalled callback"); + if (!receiver.isDone()) { + fail("Timed out waiting for PACKAGE_ADDED notification"); } - assertEquals(expectedResult, observer.returnCode); + } catch (IllegalArgumentException | IOException | RemoteException e) { + Log.w(TAG, "Failed to install package; path=" + inPath, e); + fail("Failed to install package; path=" + inPath + ", e=" + e); + } finally { + IoUtils.closeQuietly(session); + mContext.unregisterReceiver(receiver); } + } + } + + private void invokeInstallPackageFail(Uri packageUri, int flags, int expectedResult) { + final String inPath = packageUri.getPath(); + PackageInstaller.Session session = null; + try { + final SessionParams sessionParams = + new SessionParams(SessionParams.MODE_FULL_INSTALL); + sessionParams.installFlags = flags; + final int sessionId = getPi().createSession(sessionParams); + session = getPi().openSession(sessionId); + writeSplitToInstallSession(session, inPath, "base.apk"); + final LocalIntentReceiver localReceiver = new LocalIntentReceiver(); + session.commit(localReceiver.getIntentSender()); + final Intent result = localReceiver.getResult(); + final int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS, + PackageInstaller.STATUS_SUCCESS); + assertEquals(expectedResult, status); + } catch (IllegalArgumentException | IOException | RemoteException e) { + Log.w(TAG, "Failed to install package; path=" + inPath, e); + fail("Failed to install package; path=" + inPath + ", e=" + e); } finally { + IoUtils.closeQuietly(session); } } - Uri getInstallablePackage(int fileResId, File outFile) { + private Uri getInstallablePackage(int fileResId, File outFile) { Resources res = mContext.getResources(); InputStream is = null; try { @@ -430,28 +467,17 @@ public class PackageManagerTests extends AndroidTestCase { int rLoc = getInstallLoc(flags, expInstallLocation, pkgLen); if (rLoc == INSTALL_LOC_INT) { - if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0) { - assertTrue("The application should be installed forward locked", - (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); - assertStartsWith("The APK path should point to the ASEC", - SECURE_CONTAINERS_PREFIX, srcPath); - assertStartsWith("The public APK path should point to the ASEC", - SECURE_CONTAINERS_PREFIX, publicSrcPath); - assertStartsWith("The native library path should point to the ASEC", - SECURE_CONTAINERS_PREFIX, info.nativeLibraryDir); - } else { - assertFalse( - (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); - assertEquals(appInstallPath, srcPath); - assertEquals(appInstallPath, publicSrcPath); - assertStartsWith("Native library should point to shared lib directory", - expectedLibPath, info.nativeLibraryDir); - assertDirOwnerGroupPermsIfExists( - "Native library directory should be owned by system:system and 0755", - Process.SYSTEM_UID, Process.SYSTEM_UID, - S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH, - info.nativeLibraryDir); - } + assertFalse( + (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); + assertEquals(appInstallPath, srcPath); + assertEquals(appInstallPath, publicSrcPath); + assertStartsWith("Native library should point to shared lib directory", + expectedLibPath, info.nativeLibraryDir); + assertDirOwnerGroupPermsIfExists( + "Native library directory should be owned by system:system and 0755", + Process.SYSTEM_UID, Process.SYSTEM_UID, + S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH, + info.nativeLibraryDir); assertFalse((info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0); // Make sure the native library dir is not a symlink @@ -465,13 +491,8 @@ public class PackageManagerTests extends AndroidTestCase { } } } else if (rLoc == INSTALL_LOC_SD) { - if ((flags & PackageManager.INSTALL_FORWARD_LOCK) != 0) { - assertTrue("The application should be installed forward locked", - (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); - } else { - assertFalse("The application should not be installed forward locked", - (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); - } + assertFalse("The application should not be installed forward locked", + (info.privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0); assertTrue("Application flags (" + info.flags + ") should contain FLAG_EXTERNAL_STORAGE", (info.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0); @@ -598,7 +619,8 @@ public class PackageManagerTests extends AndroidTestCase { } } - private InstallParams sampleInstallFromRawResource(int flags, boolean cleanUp) throws Exception { + private InstallParams sampleInstallFromRawResource(int flags, boolean cleanUp) + throws Exception { return installFromRawResource("install.apk", R.raw.install, flags, cleanUp, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); } @@ -721,7 +743,7 @@ public class PackageManagerTests extends AndroidTestCase { PackageManager.MATCH_UNINSTALLED_PACKAGES); GenericReceiver receiver = new DeleteReceiver(pkg.packageName); invokeDeletePackage(pkg.packageName, 0, receiver); - } catch (NameNotFoundException e) { + } catch (IllegalArgumentException | NameNotFoundException e) { } } try { @@ -760,11 +782,6 @@ public class PackageManagerTests extends AndroidTestCase { sampleInstallFromRawResource(0, true); } - @LargeTest - public void testInstallFwdLockedInternal() throws Exception { - sampleInstallFromRawResource(PackageManager.INSTALL_FORWARD_LOCK, true); - } - @LargeTest public void testInstallSdcard() throws Exception { // Do not run on devices with emulated external storage. @@ -868,11 +885,6 @@ public class PackageManagerTests extends AndroidTestCase { sampleReplaceFromRawResource(0); } - @LargeTest - public void testReplaceFailFwdLockedInternal() throws Exception { - sampleReplaceFromRawResource(PackageManager.INSTALL_FORWARD_LOCK); - } - @LargeTest public void testReplaceFailSdcard() throws Exception { // Do not run on devices with emulated external storage. @@ -888,12 +900,6 @@ public class PackageManagerTests extends AndroidTestCase { sampleReplaceFromRawResource(PackageManager.INSTALL_REPLACE_EXISTING); } - @LargeTest - public void testReplaceFwdLockedInternal() throws Exception { - sampleReplaceFromRawResource(PackageManager.INSTALL_REPLACE_EXISTING - | PackageManager.INSTALL_FORWARD_LOCK); - } - @LargeTest public void testReplaceSdcard() throws Exception { // Do not run on devices with emulated external storage. @@ -984,10 +990,11 @@ public class PackageManagerTests extends AndroidTestCase { mContext.registerReceiver(receiver, receiver.filter); try { - DeleteObserver observer = new DeleteObserver(pkgName); - - getPm().deletePackage(pkgName, observer, flags | PackageManager.DELETE_ALL_USERS); - observer.waitForCompletion(MAX_WAIT_TIME); + final LocalIntentReceiver localReceiver = new LocalIntentReceiver(); + getPi().uninstall(pkgName, + flags | PackageManager.DELETE_ALL_USERS, + localReceiver.getIntentSender()); + localReceiver.getResult(); assertUninstalled(info); @@ -1049,11 +1056,6 @@ public class PackageManagerTests extends AndroidTestCase { deleteFromRawResource(0, 0); } - @LargeTest - public void testDeleteFwdLockedInternal() throws Exception { - deleteFromRawResource(PackageManager.INSTALL_FORWARD_LOCK, 0); - } - @LargeTest public void testDeleteSdcard() throws Exception { // Do not run on devices with emulated external storage. @@ -1069,11 +1071,6 @@ public class PackageManagerTests extends AndroidTestCase { deleteFromRawResource(0, PackageManager.DELETE_KEEP_DATA); } - @LargeTest - public void testDeleteFwdLockedInternalRetainData() throws Exception { - deleteFromRawResource(PackageManager.INSTALL_FORWARD_LOCK, PackageManager.DELETE_KEEP_DATA); - } - @LargeTest public void testDeleteSdcardRetainData() throws Exception { // Do not run on devices with emulated external storage. @@ -1342,9 +1339,11 @@ public class PackageManagerTests extends AndroidTestCase { final ApplicationInfo info = getPm().getApplicationInfo(pkgName, PackageManager.MATCH_UNINSTALLED_PACKAGES); if (info != null) { - DeleteObserver observer = new DeleteObserver(pkgName); - getPm().deletePackage(pkgName, observer, PackageManager.DELETE_ALL_USERS); - observer.waitForCompletion(MAX_WAIT_TIME); + final LocalIntentReceiver localReceiver = new LocalIntentReceiver(); + getPi().uninstall(pkgName, + PackageManager.DELETE_ALL_USERS, + localReceiver.getIntentSender()); + localReceiver.getResult(); assertUninstalled(info); } } catch (IllegalArgumentException | NameNotFoundException e) { @@ -1380,31 +1379,6 @@ public class PackageManagerTests extends AndroidTestCase { 0, true, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); } - @LargeTest - public void testManifestInstallLocationFwdLockedFlagSdcard() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - installFromRawResource("install.apk", R.raw.install_loc_unspecified, - PackageManager.INSTALL_FORWARD_LOCK | - PackageManager.INSTALL_EXTERNAL, true, false, -1, - PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); - } - - @LargeTest - public void testManifestInstallLocationFwdLockedSdcard() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - installFromRawResource("install.apk", R.raw.install_loc_sdcard, - PackageManager.INSTALL_FORWARD_LOCK, true, false, -1, - PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); - } - /* * Install a package on internal flash via PackageManager install flag. Replace * the package via flag to install on sdcard. Make sure the new flag overrides @@ -1703,20 +1677,6 @@ public class PackageManagerTests extends AndroidTestCase { sampleMoveFromRawResource(installFlags, moveFlags, fail, result); } - @LargeTest - public void testMoveAppForwardLocked() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - int installFlags = PackageManager.INSTALL_FORWARD_LOCK; - int moveFlags = PackageManager.MOVE_EXTERNAL_MEDIA; - boolean fail = false; - int result = PackageManager.MOVE_SUCCEEDED; - sampleMoveFromRawResource(installFlags, moveFlags, fail, result); - } - @LargeTest public void testMoveAppFailInternalToExternalDelete() throws Exception { // Do not run on devices with emulated external storage. @@ -1771,7 +1731,7 @@ public class PackageManagerTests extends AndroidTestCase { // Try to install and make sure an error code is returned. installFromRawResource("install.apk", R.raw.install, PackageManager.INSTALL_EXTERNAL, false, - true, PackageManager.INSTALL_FAILED_MEDIA_UNAVAILABLE, + true, PackageInstaller.STATUS_FAILURE_STORAGE, PackageInfo.INSTALL_LOCATION_AUTO); } finally { // Restore original media state @@ -1843,63 +1803,6 @@ public class PackageManagerTests extends AndroidTestCase { sampleInstallFromRawResource(PackageManager.INSTALL_EXTERNAL, true); } - /* - * Install an app forward-locked. - */ - @LargeTest - public void testFlagF() throws Exception { - sampleInstallFromRawResource(PackageManager.INSTALL_FORWARD_LOCK, true); - } - - /* - * Install an app with both internal and external flags set. should fail - */ - @LargeTest - public void testFlagIE() throws Exception { - installFromRawResource("install.apk", R.raw.install, - PackageManager.INSTALL_EXTERNAL | PackageManager.INSTALL_INTERNAL, - false, - true, PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION, - PackageInfo.INSTALL_LOCATION_AUTO); - } - - /* - * Install an app with both internal and forward-lock flags set. - */ - @LargeTest - public void testFlagIF() throws Exception { - sampleInstallFromRawResource(PackageManager.INSTALL_FORWARD_LOCK - | PackageManager.INSTALL_INTERNAL, true); - } - - /* - * Install an app with both external and forward-lock flags set. - */ - @LargeTest - public void testFlagEF() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - sampleInstallFromRawResource(PackageManager.INSTALL_FORWARD_LOCK - | PackageManager.INSTALL_EXTERNAL, true); - } - - /* - * Install an app with both internal and external flags set with forward - * lock. Should fail. - */ - @LargeTest - public void testFlagIEF() throws Exception { - installFromRawResource("install.apk", R.raw.install, - PackageManager.INSTALL_FORWARD_LOCK | PackageManager.INSTALL_INTERNAL | - PackageManager.INSTALL_EXTERNAL, - false, - true, PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION, - PackageInfo.INSTALL_LOCATION_AUTO); - } - /* * Install an app with both internal and manifest option set. * should install on internal. @@ -1990,55 +1893,6 @@ public class PackageManagerTests extends AndroidTestCase { PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); } - /* - * Install an app with fwd locked flag set and install location set to - * internal. should install internally. - */ - @LargeTest - public void testFlagFManifestI() throws Exception { - installFromRawResource("install.apk", R.raw.install_loc_internal, - PackageManager.INSTALL_FORWARD_LOCK, - true, - false, -1, - PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY); - } - - /* - * Install an app with fwd locked flag set and install location set to - * preferExternal. Should install externally. - */ - @LargeTest - public void testFlagFManifestE() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - installFromRawResource("install.apk", R.raw.install_loc_sdcard, - PackageManager.INSTALL_FORWARD_LOCK, - true, - false, -1, - PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL); - } - - /* - * Install an app with fwd locked flag set and install location set to auto. - * should install externally. - */ - @LargeTest - public void testFlagFManifestA() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - installFromRawResource("install.apk", R.raw.install_loc_auto, - PackageManager.INSTALL_FORWARD_LOCK, - true, - false, -1, - PackageInfo.INSTALL_LOCATION_AUTO); - } - /* * The following test functions verify install location for existing apps. * ie existing app can be installed internally or externally. If install @@ -2134,48 +1988,6 @@ public class PackageManagerTests extends AndroidTestCase { -1); } - @Suppress - @LargeTest - public void testFlagFExistingI() throws Exception { - int iFlags = PackageManager.INSTALL_INTERNAL; - int rFlags = PackageManager.INSTALL_FORWARD_LOCK | PackageManager.INSTALL_REPLACE_EXISTING; - // First install. - installFromRawResource("install.apk", R.raw.install, - iFlags, - false, - false, -1, - -1); - // Replace now - installFromRawResource("install.apk", R.raw.install, - rFlags, - true, - false, -1, - -1); - } - - @LargeTest - public void testFlagFExistingE() throws Exception { - // Do not run on devices with emulated external storage. - if (Environment.isExternalStorageEmulated()) { - return; - } - - int iFlags = PackageManager.INSTALL_EXTERNAL; - int rFlags = PackageManager.INSTALL_FORWARD_LOCK | PackageManager.INSTALL_REPLACE_EXISTING; - // First install. - installFromRawResource("install.apk", R.raw.install, - iFlags, - false, - false, -1, - -1); - // Replace now - installFromRawResource("install.apk", R.raw.install, - rFlags, - true, - false, -1, - -1); - } - /* * The following set of tests verify the installation of apps with * install location attribute set to internalOnly, preferExternal and auto. @@ -2905,7 +2717,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchNoCerts1() throws Exception { replaceCerts(APP1_CERT1_CERT2, APP1_CERT3, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -2915,7 +2727,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchNoCerts2() throws Exception { replaceCerts(APP1_CERT1_CERT2, APP1_CERT3_CERT4, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -2925,7 +2737,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchSomeCerts1() throws Exception { replaceCerts(APP1_CERT1_CERT2, APP1_CERT1, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -2935,7 +2747,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchSomeCerts2() throws Exception { replaceCerts(APP1_CERT1_CERT2, APP1_CERT2, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -2945,7 +2757,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchMoreCerts() throws Exception { replaceCerts(APP1_CERT1, APP1_CERT1_CERT2, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -2956,7 +2768,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testReplaceMatchMoreCertsReplaceSomeCerts() throws Exception { InstallParams ip = replaceCerts(APP1_CERT1, APP1_CERT1_CERT2, false, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); try { int rFlags = PackageManager.INSTALL_REPLACE_EXISTING; installFromRawResource("install.apk", APP1_CERT1, rFlags, false, @@ -2996,7 +2808,7 @@ public class PackageManagerTests extends AndroidTestCase { */ public void testUpgradeKSWithWrongKey() throws Exception { replaceCerts(R.raw.keyset_sa_ua, R.raw.keyset_sb_ua, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -3005,7 +2817,7 @@ public class PackageManagerTests extends AndroidTestCase { */ public void testUpgradeKSWithWrongSigningKey() throws Exception { replaceCerts(R.raw.keyset_sa_ub, R.raw.keyset_sa_ub, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -3037,7 +2849,7 @@ public class PackageManagerTests extends AndroidTestCase { */ public void testMultipleUpgradeKSWithSigningKey() throws Exception { replaceCerts(R.raw.keyset_sau_ub, R.raw.keyset_sa_ua, true, true, - PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE); + PackageInstaller.STATUS_FAILURE_CONFLICT); } /* @@ -3471,7 +3283,12 @@ public class PackageManagerTests extends AndroidTestCase { int rawResId = apk2; Uri packageURI = getInstallablePackage(rawResId, outFile); PackageParser.Package pkg = parsePackage(packageURI); - getPm().deletePackage(pkg.packageName, null, PackageManager.DELETE_ALL_USERS); + try { + getPi().uninstall(pkg.packageName, + PackageManager.DELETE_ALL_USERS, + null /*statusReceiver*/); + } catch (IllegalArgumentException ignore) { + } // Check signatures now int match = mContext.getPackageManager().checkSignatures( ip.pkg.packageName, pkg.packageName); @@ -3487,7 +3304,7 @@ public class PackageManagerTests extends AndroidTestCase { String apk1Name = "install1.apk"; installFromRawResource(apk1Name, apk1, 0, false, - true, PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES, + true, PackageInstaller.STATUS_FAILURE_INVALID, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); } @@ -3557,7 +3374,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk1 = SHARED1_CERT1; int apk2 = SHARED2_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_SHARED_USER_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; int expMatchResult = -1; checkSharedSignatures(apk1, apk2, true, fail, retCode, expMatchResult); } @@ -3571,7 +3388,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk1 = SHARED1_CERT1_CERT2; int apk2 = SHARED2_CERT1; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_SHARED_USER_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; int expMatchResult = -1; checkSharedSignatures(apk1, apk2, true, fail, retCode, expMatchResult); } @@ -3585,7 +3402,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk1 = SHARED1_CERT1_CERT2; int apk2 = SHARED2_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_SHARED_USER_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; int expMatchResult = -1; checkSharedSignatures(apk1, apk2, true, fail, retCode, expMatchResult); } @@ -3604,7 +3421,11 @@ public class PackageManagerTests extends AndroidTestCase { PackageManager pm = mContext.getPackageManager(); // Delete app2 PackageParser.Package pkg = getParsedPackage(apk2Name, apk2); - getPm().deletePackage(pkg.packageName, null, PackageManager.DELETE_ALL_USERS); + try { + getPi().uninstall( + pkg.packageName, PackageManager.DELETE_ALL_USERS, null /*statusReceiver*/); + } catch (IllegalArgumentException ignore) { + } // Check signatures now int match = mContext.getPackageManager().checkSignatures( ip1.pkg.packageName, pkg.packageName); @@ -3640,7 +3461,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1_CERT2; int rapk1 = SHARED1_CERT1; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk1, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3652,7 +3473,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1_CERT2; int rapk2 = SHARED2_CERT1; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk2, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3664,7 +3485,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1; int rapk1 = SHARED1_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk1, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3676,7 +3497,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1; int rapk2 = SHARED2_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk2, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3688,7 +3509,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1; int rapk1 = SHARED1_CERT1_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk1, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3700,7 +3521,7 @@ public class PackageManagerTests extends AndroidTestCase { int apk2 = SHARED2_CERT1; int rapk2 = SHARED2_CERT1_CERT2; boolean fail = true; - int retCode = PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE; + int retCode = PackageInstaller.STATUS_FAILURE_CONFLICT; checkSharedSignatures(apk1, apk2, false, false, -1, PackageManager.SIGNATURE_MATCH); installFromRawResource("install.apk", rapk2, PackageManager.INSTALL_REPLACE_EXISTING, true, fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); @@ -3724,7 +3545,7 @@ public class PackageManagerTests extends AndroidTestCase { @LargeTest public void testInstallNonexistentFile() throws Exception { - int retCode = PackageManager.INSTALL_FAILED_INVALID_URI; + int retCode = PackageInstaller.STATUS_FAILURE_INVALID; File invalidFile = new File("/nonexistent-file.apk"); invokeInstallPackageFail(Uri.fromFile(invalidFile), 0, retCode); } @@ -3845,7 +3666,7 @@ public class PackageManagerTests extends AndroidTestCase { @Suppress public void testInstall_BadDex_CleanUp() throws Exception { - int retCode = PackageManager.INSTALL_FAILED_DEXOPT; + int retCode = PackageInstaller.STATUS_FAILURE_INVALID; installFromRawResource("install.apk", R.raw.install_bad_dex, 0, true, true, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED); } diff --git a/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java b/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..00be82219e4fc360b6cce3359670b50226cd78f2 --- /dev/null +++ b/core/tests/coretests/src/android/content/pm/PackageParserCacheHelperTest.java @@ -0,0 +1,69 @@ +/* + * 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.content.pm; + +import static org.junit.Assert.assertEquals; + +import android.content.pm.PackageParserCacheHelper.ReadHelper; +import android.content.pm.PackageParserCacheHelper.WriteHelper; +import android.os.Bundle; +import android.os.Parcel; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; + +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class PackageParserCacheHelperTest { + @Test + public void testParcelUnparcel() throws Exception { + final Bundle source = new Bundle(); + source.putInt("i1", 123); + source.putString("s1", "abcdef"); + source.putString("s2", "xyz"); + source.putString("s3", null); + + final Bundle nest = new Bundle(); + nest.putString("s1", "xyz"); + source.putBundle("b1", nest); + + final Parcel p = Parcel.obtain(); + final WriteHelper writeHelper = new WriteHelper(p); + + source.writeToParcel(p, 0); + writeHelper.finishAndUninstall(); + + p.setDataPosition(0); + + final ReadHelper readHelper = new ReadHelper(p); + readHelper.startAndInstall(); + + final Bundle dest = new Bundle(); + dest.readFromParcel(p); + + dest.size(); // Unparcel so that toString() returns the content. + + assertEquals(source.get("i1"), dest.get("i1")); + assertEquals(source.get("s1"), dest.get("s1")); + assertEquals(source.get("s2"), dest.get("s2")); + assertEquals(source.get("s3"), dest.get("s3")); + assertEquals(source.getBundle("b1").get("s1"), dest.getBundle("b1").get("s1")); + assertEquals(source.keySet().size(), dest.keySet().size()); + } +} diff --git a/core/tests/coretests/src/android/content/pm/PackageParserTest.java b/core/tests/coretests/src/android/content/pm/PackageParserTest.java index b9bd193ad48c339b156dcd8f1630ec7af94a5903..53f4f3a8af9adff4609a7b5829dac3f84b76e84f 100644 --- a/core/tests/coretests/src/android/content/pm/PackageParserTest.java +++ b/core/tests/coretests/src/android/content/pm/PackageParserTest.java @@ -19,14 +19,30 @@ package android.content.pm; 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 android.content.Context; +import android.content.pm.PackageParser.Component; +import android.content.pm.PackageParser.Package; +import android.content.pm.PackageParser.Permission; import android.os.Build; +import android.os.Bundle; +import android.os.FileUtils; +import android.os.SystemProperties; +import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; +import com.android.frameworks.coretests.R; + import org.junit.Test; import org.junit.runner.RunWith; +import java.io.File; +import java.io.InputStream; +import java.util.Arrays; +import java.util.function.Function; + @SmallTest @RunWith(AndroidJUnit4.class) public class PackageParserTest { @@ -257,4 +273,178 @@ public class PackageParserTest { PackageParser.getActivityConfigChanges(configChanges, recreateOnConfigChanges); assertEquals(0x0083, finalConfigChanges); // Should be 10000011. } + + Package parsePackage(String apkFileName, int apkResourceId) throws Exception { + return parsePackage(apkFileName, apkResourceId, p -> p); + } + + /** + * Attempts to parse a package. + * + * APKs are put into coretests/apks/packageparser_*. + * + * @param apkFileName temporary file name to store apk extracted from resources + * @param apkResourceId identifier of the apk as a resource + */ + Package parsePackage(String apkFileName, int apkResourceId, + Function converter) throws Exception { + // Copy the resource to a file. + Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); + File outFile = new File(context.getFilesDir(), apkFileName); + try { + InputStream is = context.getResources().openRawResource(apkResourceId); + assertTrue(FileUtils.copyToFile(is, outFile)); + return converter.apply(new PackageParser().parsePackage(outFile, 0 /* flags */)); + } finally { + outFile.delete(); + } + } + + /** + * Asserts basic properties about a component. + */ + private void assertComponent(String className, String packageName, int numIntents, + Component component) { + assertEquals(className, component.className); + assertEquals(packageName, component.owner.packageName); + assertEquals(numIntents, component.intents.size()); + } + + /** + * Asserts four regularly-named components of each type: one Activity, one Service, one + * Provider, and one Receiver. + * @param template templated string with %s subbed with Activity, Service, Provider, Receiver + */ + private void assertOneComponentOfEachType(String template, Package p) { + String packageName = p.packageName; + + assertEquals(1, p.activities.size()); + assertComponent(String.format(template, "Activity"), + packageName, 0 /* intents */, p.activities.get(0)); + assertEquals(1, p.services.size()); + assertComponent(String.format(template, "Service"), + packageName, 0 /* intents */, p.services.get(0)); + assertEquals(1, p.providers.size()); + assertComponent(String.format(template, "Provider"), + packageName, 0 /* intents */, p.providers.get(0)); + assertEquals(1, p.receivers.size()); + assertComponent(String.format(template, "Receiver"), + packageName, 0 /* intents */, p.receivers.get(0)); + } + + private void assertPermission(String name, String packageName, int protectionLevel, + Permission permission) { + assertEquals(packageName, permission.owner.packageName); + assertEquals(name, permission.info.name); + assertEquals(protectionLevel, permission.info.protectionLevel); + } + + private void assertMetadata(Bundle b, String... keysAndValues) { + assertTrue("Odd number of elements in keysAndValues", (keysAndValues.length % 2) == 0); + + assertNotNull(b); + assertEquals(keysAndValues.length / 2, b.size()); + + for (int i = 0; i < keysAndValues.length; i += 2) { + final String key = keysAndValues[i]; + final String value = keysAndValues[i + 1]; + + assertEquals(value, b.getString(key)); + } + } + + // TODO Add a "_cached" test for testMultiPackageComponents() too, after fixing b/64295061. + // Package.writeToParcel can't handle circular package references. + + @Test + public void testPackageWithComponents_no_cache() throws Exception { + checkPackageWithComponents(p -> p); + } + + @Test + public void testPackageWithComponents_cached() throws Exception { + checkPackageWithComponents(p -> + PackageParser.fromCacheEntryStatic(PackageParser.toCacheEntryStatic(p))); + } + + private void checkPackageWithComponents( + Function converter) throws Exception { + Package p = parsePackage( + "install_complete_package_info.apk", R.raw.install_complete_package_info, + converter); + String packageName = "com.android.frameworks.coretests.install_complete_package_info"; + + assertEquals(packageName, p.packageName); + assertEquals(1, p.permissions.size()); + assertPermission( + "com.android.frameworks.coretests.install_complete_package_info.test_permission", + packageName, PermissionInfo.PROTECTION_NORMAL, p.permissions.get(0)); + + assertOneComponentOfEachType("com.android.frameworks.coretests.Test%s", p); + + assertMetadata(p.mAppMetaData, + "key1", "value1", + "key2", "this_is_app"); + assertMetadata(p.activities.get(0).metaData, + "key1", "value1", + "key2", "this_is_activity"); + assertMetadata(p.services.get(0).metaData, + "key1", "value1", + "key2", "this_is_service"); + assertMetadata(p.receivers.get(0).metaData, + "key1", "value1", + "key2", "this_is_receiver"); + assertMetadata(p.providers.get(0).metaData, + "key1", "value1", + "key2", "this_is_provider"); + } + + /** + * Determines if the current device supports multi-package APKs. + */ + private boolean supportsMultiPackageApk() { + return SystemProperties.getBoolean("persist.sys.child_packages_enabled", false); + } + + @Test + public void testMultiPackageComponents() throws Exception { + // TODO(gboyer): Remove once we decide to launch multi-package APKs. + if (!supportsMultiPackageApk()) { + return; + } + String parentName = "com.android.frameworks.coretests.install_multi_package"; + String firstChildName = + "com.android.frameworks.coretests.install_multi_package.first_child"; + String secondChildName = // NOTE: intentionally inconsistent! + "com.android.frameworks.coretests.blah.second_child"; + + Package parent = parsePackage("install_multi_package.apk", R.raw.install_multi_package); + assertEquals(parentName, parent.packageName); + assertEquals(2, parent.childPackages.size()); + assertOneComponentOfEachType("com.android.frameworks.coretests.Test%s", parent); + assertEquals(1, parent.permissions.size()); + assertPermission(parentName + ".test_permission", parentName, + PermissionInfo.PROTECTION_NORMAL, parent.permissions.get(0)); + assertEquals(Arrays.asList("android.permission.INTERNET"), + parent.requestedPermissions); + + Package firstChild = parent.childPackages.get(0); + assertEquals(firstChildName, firstChild.packageName); + assertOneComponentOfEachType( + "com.android.frameworks.coretests.FirstChildTest%s", firstChild); + assertEquals(0, firstChild.permissions.size()); // Child APKs cannot declare permissions. + assertEquals(Arrays.asList("android.permission.NFC"), + firstChild.requestedPermissions); + + Package secondChild = parent.childPackages.get(1); + assertEquals(secondChildName, secondChild.packageName); + assertOneComponentOfEachType( + "com.android.frameworks.coretests.SecondChildTest%s", secondChild); + assertEquals(0, secondChild.permissions.size()); // Child APKs cannot declare permissions. + assertEquals( + Arrays.asList( + "android.permission.ACCESS_NETWORK_STATE", + "android.permission.READ_CONTACTS"), + secondChild.requestedPermissions); + } } diff --git a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java index 5dd3c2ce6b5d165eb4b58629b992dba87626c1be..a9d19b4b295c542b6b29031e22d3236cc6f0bf0c 100644 --- a/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java +++ b/core/tests/coretests/src/android/content/pm/ParceledListSliceTest.java @@ -2,9 +2,11 @@ package android.content.pm; import android.os.Parcel; import android.os.Parcelable; + import junit.framework.TestCase; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class ParceledListSliceTest extends TestCase { @@ -91,15 +93,10 @@ public class ParceledListSliceTest extends TestCase { } } - public void testStringList() throws Exception { - final int objectCount = 400; - List list = new ArrayList(); - for (long i = 0; i < objectCount; i++) { - list.add(Long.toString(i * (6 - i))); - } - + private void sendParcelStringList(List list) { StringParceledListSlice slice; Parcel parcel = Parcel.obtain(); + try { parcel.writeParcelable(new StringParceledListSlice(list), 0); parcel.setDataPosition(0); @@ -113,6 +110,26 @@ public class ParceledListSliceTest extends TestCase { assertEquals(list, slice.getList()); } + public void testStringList() throws Exception { + final int objectCount = 400; + List list = new ArrayList(); + for (long i = 0; i < objectCount; i++) { + list.add(Long.toString(i * (6 - i))); + } + + sendParcelStringList(list); + } + + public void testLargeStringList() throws Exception { + final int thresholdBytes = 256 * 1024; + final String value = Long.toString(Long.MAX_VALUE); + final int objectCount = 2 * thresholdBytes / value.length(); + final List list = Collections.nCopies(objectCount, value); + + sendParcelStringList(list); + } + + /** * Test that only homogeneous elements may be unparceled. */ diff --git a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java index c7cb43d3dbc0425dd9d895e61711e6644724b12e..335cea772a74190a5f57831c3a10883904a7a74a 100644 --- a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java +++ b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java @@ -18,12 +18,15 @@ package android.database; import static android.database.DatabaseUtils.InsertHelper.TABLE_INFO_PRAGMA_COLUMNNAME_INDEX; import static android.database.DatabaseUtils.InsertHelper.TABLE_INFO_PRAGMA_DEFAULT_INDEX; + import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDebug; import android.database.sqlite.SQLiteException; -import android.os.Handler; import android.os.Parcel; +import android.support.test.InstrumentationRegistry; +import android.support.test.uiautomator.UiDevice; import android.test.AndroidTestCase; import android.test.PerformanceTestCase; import android.test.suitebuilder.annotation.LargeTest; @@ -40,6 +43,9 @@ import java.util.Arrays; import java.util.List; import java.util.Locale; +/** + * Usage: bit FrameworksCoreTests:android.database.DatabaseGeneralTest + */ public class DatabaseGeneralTest extends AndroidTestCase implements PerformanceTestCase { private static final String TAG = "DatabaseGeneralTest"; @@ -68,7 +74,7 @@ public class DatabaseGeneralTest extends AndroidTestCase implements PerformanceT @Override protected void tearDown() throws Exception { mDatabase.close(); - mDatabaseFile.delete(); + SQLiteDatabase.deleteDatabase(mDatabaseFile); super.tearDown(); } @@ -1044,6 +1050,52 @@ public class DatabaseGeneralTest extends AndroidTestCase implements PerformanceT } } + @SmallTest + public void testOpenDatabaseLookasideConfig() { + // First check that lookaside is active + verifyLookasideStats(false); + // Reopen test db with lookaside disabled + mDatabase.close(); + SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder() + .setLookasideConfig(0, 0).build(); + mDatabase = SQLiteDatabase.openDatabase(mDatabaseFile, params); + verifyLookasideStats(true); + } + + @SmallTest + public void testOpenParamsSetLookasideConfigValidation() { + try { + SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder() + .setLookasideConfig(-1, 0).build(); + fail("Negative slot size should be rejected"); + } catch (IllegalArgumentException expected) { + } + try { + SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder() + .setLookasideConfig(0, -10).build(); + fail("Negative slot count should be rejected"); + } catch (IllegalArgumentException expected) { + } + } + + void verifyLookasideStats(boolean expectDisabled) { + boolean dbStatFound = false; + SQLiteDebug.PagerStats info = SQLiteDebug.getDatabaseInfo(); + for (SQLiteDebug.DbStats dbStat : info.dbStats) { + if (dbStat.dbName.endsWith(mDatabaseFile.getName())) { + dbStatFound = true; + Log.i(TAG, "Lookaside for " + dbStat.dbName + " " + dbStat.lookaside); + if (expectDisabled) { + assertTrue("lookaside slots count should be zero", dbStat.lookaside == 0); + } else { + assertTrue("lookaside slots count should be greater than zero", + dbStat.lookaside > 0); + } + } + } + assertTrue("No dbstat found for " + mDatabaseFile.getName(), dbStatFound); + } + @LargeTest public void testDefaultDatabaseErrorHandler() { DefaultDatabaseErrorHandler errorHandler = new DefaultDatabaseErrorHandler(); @@ -1135,4 +1187,38 @@ public class DatabaseGeneralTest extends AndroidTestCase implements PerformanceT fail("unexpected"); } } + + @MediumTest + public void testCloseIdleConnection() throws Exception { + mDatabase.close(); + SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder() + .setIdleConnectionTimeout(1000).build(); + mDatabase = SQLiteDatabase.openDatabase(mDatabaseFile, params); + // Wait a bit and check that connection is still open + Thread.sleep(100); + String output = executeShellCommand("dumpsys dbinfo " + getContext().getPackageName()); + assertTrue("Connection #0 should be open. Output: " + output, + output.contains("Connection #0:")); + + // Now cause idle timeout and check that connection is closed + Thread.sleep(1000); + output = executeShellCommand("dumpsys dbinfo " + getContext().getPackageName()); + assertFalse("Connection #0 should be closed. Output: " + output, + output.contains("Connection #0:")); + } + + @SmallTest + public void testSetIdleConnectionTimeoutValidation() throws Exception { + try { + new SQLiteDatabase.OpenParams.Builder().setIdleConnectionTimeout(-1).build(); + fail("Negative timeout should be rejected"); + } catch (IllegalArgumentException expected) { + } + } + + private String executeShellCommand(String cmd) throws Exception { + return UiDevice.getInstance( + InstrumentationRegistry.getInstrumentation()).executeShellCommand(cmd); + } + } diff --git a/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java b/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java index c9db034220ea780fc1277a9d45c5b99869e179ba..61566927433d4f6b729d5524c471be777e5654f1 100644 --- a/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java +++ b/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java @@ -23,6 +23,7 @@ public class NewDatabasePerformanceTestSuite extends TestSuite { TestSuite suite = new TestSuite(NewDatabasePerformanceTestSuite.class.getName()); + suite.addTestSuite(NewDatabasePerformanceTests.CreateTable100.class); suite.addTestSuite(NewDatabasePerformanceTests.Insert100.class); suite.addTestSuite(NewDatabasePerformanceTests.InsertIndexed100.class); suite.addTestSuite(NewDatabasePerformanceTests.Select100.class); diff --git a/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java b/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java index f8d8e5e21d477896497bf9dcec06259040bcb087..75809c0fce4b17c25e43c54fe6016c3b6231513d 100644 --- a/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java +++ b/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java @@ -18,53 +18,96 @@ package android.database; import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; +import android.os.SystemProperties; import android.test.PerformanceTestCase; +import android.util.ArrayMap; import android.util.Log; import junit.framework.TestCase; import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.List; +import java.util.Map; import java.util.Random; /** - * Database Performance Tests - * + * Database Performance Tests. + * + *

    Usage: + * ./frameworks/base/core/tests/coretests/src/android/database/run_newdb_perf_test.sh + *

    Test with WAL journaling enabled: + * setprop debug.NewDatabasePerformanceTests.enable_wal 1 */ - public class NewDatabasePerformanceTests { private static final String TAG = "NewDatabasePerformanceTests"; - // Edit this to change the test run times. The original is 100. - private static final int SIZE_MULTIPLIER = 100; + private static final boolean DEBUG_ENABLE_WAL = SystemProperties + .getBoolean("debug.NewDatabasePerformanceTests.enable_wal", false); + + private static final int DATASET_SIZE = 100; // Size of dataset to use for testing + private static final int FAST_OP_MULTIPLIER = 25; + private static final int FAST_OP_COUNT = FAST_OP_MULTIPLIER * DATASET_SIZE; + + private static Long sInitialWriteBytes; + + static { + sInitialWriteBytes = getIoStats().get("write_bytes"); + if (DEBUG_ENABLE_WAL) { + Log.i(TAG, "Testing with WAL enabled"); + } + } public static class PerformanceBase extends TestCase - implements PerformanceTestCase { + implements PerformanceTestCase { protected static final int CURRENT_DATABASE_VERSION = 42; protected SQLiteDatabase mDatabase; protected File mDatabaseFile; private long mSetupFinishedTime; + private Long mSetupWriteBytes; public void setUp() { long setupStarted = System.currentTimeMillis(); mDatabaseFile = new File("/sdcard", "perf_database_test.db"); if (mDatabaseFile.exists()) { - mDatabaseFile.delete(); + SQLiteDatabase.deleteDatabase(mDatabaseFile); + } + SQLiteDatabase.OpenParams.Builder params = new SQLiteDatabase.OpenParams.Builder(); + params.addOpenFlags(SQLiteDatabase.CREATE_IF_NECESSARY); + if (DEBUG_ENABLE_WAL) { + params.addOpenFlags(SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING); + } + mDatabase = SQLiteDatabase.openDatabase(mDatabaseFile, params.build()); + if (DEBUG_ENABLE_WAL) { + assertTrue("Cannot enable WAL", mDatabase.isWriteAheadLoggingEnabled()); } - mDatabase = - SQLiteDatabase.openOrCreateDatabase(mDatabaseFile.getPath(), - null); - assertTrue(mDatabase != null); mDatabase.setVersion(CURRENT_DATABASE_VERSION); + mDatabase.beginTransactionNonExclusive(); + prepareForTest(); + mDatabase.setTransactionSuccessful(); + mDatabase.endTransaction(); mSetupFinishedTime = System.currentTimeMillis(); Log.i(TAG, "Setup for " + getClass().getSimpleName() + " took " + (mSetupFinishedTime - setupStarted) + " ms"); + mSetupWriteBytes = getIoStats().get("write_bytes"); + } + + protected void prepareForTest() { } public void tearDown() { long duration = System.currentTimeMillis() - mSetupFinishedTime; Log.i(TAG, "Test " + getClass().getSimpleName() + " took " + duration + " ms"); mDatabase.close(); - mDatabaseFile.delete(); + SQLiteDatabase.deleteDatabase(mDatabaseFile); + Long writeBytes = getIoStats().get("write_bytes"); + if (writeBytes != null && sInitialWriteBytes != null) { + long testWriteBytes = writeBytes - mSetupWriteBytes; + long totalWriteBytes = (writeBytes - sInitialWriteBytes); + Log.i(TAG, "Test " + getClass().getSimpleName() + " write_bytes=" + testWriteBytes + + ". Since tests started - totalWriteBytes=" + totalWriteBytes); + } } public boolean isPerformanceOnly() { @@ -76,7 +119,7 @@ public class NewDatabasePerformanceTests { return 0; } - public String numberName(int number) { + String numberName(int number) { String result = ""; if (number >= 1000) { @@ -106,36 +149,50 @@ public class NewDatabasePerformanceTests { return result; } + + void checkCursor(Cursor c) { + c.getColumnCount(); + c.close(); + } } /** - * Test 100 inserts. + * Test CREATE SIZE tables with 1 row. */ + public static class CreateTable100 extends PerformanceBase { + public void testRun() { + for (int i = 0; i < DATASET_SIZE; i++) { + String t = "t" + i; + mDatabase.execSQL("CREATE TABLE " + t + "(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("INSERT INTO " + t + " VALUES(" + i + "," + i + ",'" + + numberName(i) + "')"); + } + } + } + /** + * Test 100 inserts. + */ public static class Insert100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - - private String[] statements = new String[SIZE]; + private String[] mStatements = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); - statements[i] = + mStatements[i] = "INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"; } - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.execSQL(statements[i]); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.execSQL(mStatements[i]); } } } @@ -145,30 +202,25 @@ public class NewDatabasePerformanceTests { */ public static class InsertIndexed100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - - private String[] statements = new String[SIZE]; + private String[] mStatements = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); - statements[i] = - "INSERT INTO t1 VALUES(" + i + "," + r + ",'" - + numberName(r) + "')"; + mStatements[i] = "INSERT INTO t1 VALUES(" + i + "," + r + ",'" + + numberName(r) + "')"; } - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1c ON t1(c)"); } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.execSQL(statements[i]); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.execSQL(mStatements[i]); } } } @@ -176,41 +228,35 @@ public class NewDatabasePerformanceTests { /** * 100 SELECTs without an index */ - public static class Select100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"count(*)", "avg(b)"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); mDatabase .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -219,37 +265,32 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on a string comparison */ public static class SelectStringComparison100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"count(*)", "avg(b)"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); mDatabase .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { - where[i] = "c LIKE '" + numberName(i) + "'"; + for (int i = 0; i < DATASET_SIZE; i++) { + mWhere[i] = "c LIKE '" + numberName(i) + "'"; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -258,40 +299,35 @@ public class NewDatabasePerformanceTests { * 100 SELECTs with an index */ public static class SelectIndex100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; + private static final int TABLE_SIZE = 100; private static final String[] COLUMNS = {"count(*)", "avg(b)"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[TABLE_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b ON t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < TABLE_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < TABLE_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1", COLUMNS, mWhere[i % TABLE_SIZE], null, null, null, null)); } } } @@ -300,27 +336,22 @@ public class NewDatabasePerformanceTests { * INNER JOIN without an index */ public static class InnerJoin100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t1.a"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - mDatabase - .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -328,9 +359,9 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null, - null, null, null, null); + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null, + null, null, null, null)); } } } @@ -340,29 +371,24 @@ public class NewDatabasePerformanceTests { */ public static class InnerJoinOneSide100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t1.a"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - mDatabase - .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b ON t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -370,9 +396,9 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null, - null, null, null, null); + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null, + null, null, null, null)); } } } @@ -381,29 +407,24 @@ public class NewDatabasePerformanceTests { * INNER JOIN without an index on one side */ public static class InnerJoinNoIndex100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t1.a"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - mDatabase - .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b ON t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -411,9 +432,10 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - mDatabase.query("t1 INNER JOIN t2 ON t1.c = t2.c", COLUMNS, null, - null, null, null, null); + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1 INNER JOIN t2 ON t1.c = t2.c", COLUMNS, null, null, null, null, + null)); } } } @@ -422,49 +444,44 @@ public class NewDatabasePerformanceTests { * 100 SELECTs with subqueries. Subquery is using an index */ public static class SelectSubQIndex100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t1.a"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - mDatabase - .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i2b ON t2(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = + mWhere[i] = "t1.b IN (SELECT t2.b FROM t2 WHERE t2.b >= " + lower + " AND t2.b < " + upper + ")"; } } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -473,38 +490,32 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on string comparison with Index */ public static class SelectIndexStringComparison100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"count(*)", "avg(b)"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i3c ON t1(c)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { - where[i] = "c LIKE '" + numberName(i) + "'"; + for (int i = 0; i < DATASET_SIZE; i++) { + mWhere[i] = "c LIKE '" + numberName(i) + "'"; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -513,19 +524,15 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on integer */ public static class SelectInteger100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"b"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -534,10 +541,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t1", COLUMNS, null, null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase.query("t1", COLUMNS, null, null, null, null, null)); } } } @@ -546,19 +551,16 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on String */ public static class SelectString100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"c"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); mDatabase .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -566,10 +568,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t1", COLUMNS, null, null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + mDatabase.query("t1", COLUMNS, null, null, null, null, null); } } } @@ -578,20 +578,17 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on integer with index */ public static class SelectIntegerIndex100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"b"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); mDatabase .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b on t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -600,10 +597,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t1", COLUMNS, null, null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + mDatabase.query("t1", COLUMNS, null, null, null, null, null); } } } @@ -612,20 +607,16 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on String with index */ public static class SelectIndexString100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"c"}; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1c ON t1(c)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -633,10 +624,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t1", COLUMNS, null, null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase.query("t1", COLUMNS, null, null, null, null, null)); } } @@ -646,40 +635,33 @@ public class NewDatabasePerformanceTests { * 100 SELECTs on String with starts with */ public static class SelectStringStartsWith100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"c"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1c ON t1(c)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); - where[i] = "c LIKE '" + numberName(r).substring(0, 1) + "*'"; + mWhere[i] = "c LIKE '" + numberName(r).substring(0, 1) + "*'"; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase - .query("t1", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + mDatabase.query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null); } } } @@ -688,18 +670,15 @@ public class NewDatabasePerformanceTests { * 100 Deletes on an indexed table */ public static class DeleteIndexed100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i3c ON t1(c)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -708,7 +687,7 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { mDatabase.delete("t1", null, null); } } @@ -718,17 +697,13 @@ public class NewDatabasePerformanceTests { * 100 Deletes */ public static class Delete100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); @@ -737,7 +712,7 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { mDatabase.delete("t1", null, null); } } @@ -747,33 +722,30 @@ public class NewDatabasePerformanceTests { * 100 DELETE's without an index with where clause */ public static class DeleteWhere100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; } } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.delete("t1", where[i], null); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.delete("t1", mWhere[i], null); } } } @@ -782,34 +754,31 @@ public class NewDatabasePerformanceTests { * 100 DELETE's with an index with where clause */ public static class DeleteIndexWhere100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b ON t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; } } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.delete("t1", where[i], null); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.delete("t1", mWhere[i], null); } } } @@ -818,30 +787,26 @@ public class NewDatabasePerformanceTests { * 100 update's with an index with where clause */ public static class UpdateIndexWhere100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private String[] where = new String[SIZE]; - ContentValues[] mValues = new ContentValues[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; + ContentValues[] mValues = new ContentValues[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i1b ON t1(b)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { - + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; ContentValues b = new ContentValues(1); b.put("b", upper); mValues[i] = b; @@ -850,8 +815,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.update("t1", mValues[i], where[i], null); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.update("t1", mValues[i], mWhere[i], null); } } } @@ -860,29 +825,26 @@ public class NewDatabasePerformanceTests { * 100 update's without an index with where clause */ public static class UpdateWhere100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private String[] where = new String[SIZE]; - ContentValues[] mValues = new ContentValues[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; + ContentValues[] mValues = new ContentValues[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int lower = i * 100; int upper = (i + 10) * 100; - where[i] = "b >= " + lower + " AND b < " + upper; + mWhere[i] = "b >= " + lower + " AND b < " + upper; ContentValues b = new ContentValues(1); b.put("b", upper); mValues[i] = b; @@ -890,8 +852,8 @@ public class NewDatabasePerformanceTests { } public void testRun() { - for (int i = 0; i < SIZE; i++) { - mDatabase.update("t1", mValues[i], where[i], null); + for (int i = 0; i < DATASET_SIZE; i++) { + mDatabase.update("t1", mValues[i], mWhere[i], null); } } } @@ -900,36 +862,31 @@ public class NewDatabasePerformanceTests { * 100 selects for a String - contains 'e' */ public static class SelectStringContains100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t3.a"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t3(a VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t3(a VARCHAR(100))"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t3 VALUES('" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { - where[i] = "a LIKE '*e*'"; + for (int i = 0; i < DATASET_SIZE; i++) { + mWhere[i] = "a LIKE '*e*'"; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t3", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t3", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -938,37 +895,32 @@ public class NewDatabasePerformanceTests { * 100 selects for a String - contains 'e'-indexed table */ public static class SelectStringIndexedContains100 extends PerformanceBase { - private static final int SIZE = SIZE_MULTIPLIER; - private static final int REPEAT_COUNT = 10; private static final String[] COLUMNS = {"t3.a"}; - private String[] where = new String[SIZE]; + private String[] mWhere = new String[DATASET_SIZE]; @Override - public void setUp() { - super.setUp(); + protected void prepareForTest() { Random random = new Random(42); - mDatabase - .execSQL("CREATE TABLE t3(a VARCHAR(100))"); + mDatabase.execSQL("CREATE TABLE t3(a VARCHAR(100))"); mDatabase.execSQL("CREATE INDEX i3a ON t3(a)"); - for (int i = 0; i < SIZE; i++) { + for (int i = 0; i < DATASET_SIZE; i++) { int r = random.nextInt(100000); mDatabase.execSQL("INSERT INTO t3 VALUES('" + numberName(r) + "')"); } - for (int i = 0; i < SIZE; i++) { - where[i] = "a LIKE '*e*'"; + for (int i = 0; i < DATASET_SIZE; i++) { + mWhere[i] = "a LIKE '*e*'"; } } public void testRun() { - for (int iter = 0; iter < REPEAT_COUNT; iter++) { - for (int i = 0; i < SIZE; i++) { - mDatabase.query("t3", COLUMNS, where[i], null, null, null, null); - } + for (int i = 0; i < FAST_OP_COUNT; i++) { + checkCursor(mDatabase + .query("t3", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null)); } } } @@ -982,4 +934,31 @@ public class NewDatabasePerformanceTests { static final String[] TENS = {"", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}; + + static Map getIoStats() { + String ioStat = "/proc/self/io"; + Map results = new ArrayMap<>(); + try { + List lines = Files.readAllLines(new File(ioStat).toPath()); + for (String line : lines) { + line = line.trim(); + String[] split = line.split(":"); + if (split.length == 2) { + try { + String key = split[0].trim(); + Long value = Long.valueOf(split[1].trim()); + results.put(key, value); + } catch (NumberFormatException e) { + Log.e(TAG, "Cannot parse number from " + line); + } + } else if (line.isEmpty()) { + Log.e(TAG, "Cannot parse line " + line); + } + } + } catch (IOException e) { + Log.e(TAG, "Can't read: " + ioStat, e); + } + return results; + } + } diff --git a/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java b/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..75eeb93f5b9a429c4838126758d474ff01400ee4 --- /dev/null +++ b/core/tests/coretests/src/android/database/SQLiteOpenHelperTest.java @@ -0,0 +1,171 @@ +/* + * 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.database; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteDatabaseConfiguration; +import android.database.sqlite.SQLiteDebug; +import android.database.sqlite.SQLiteOpenHelper; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; +import android.util.Log; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tests for {@link SQLiteOpenHelper} + * + *

    Run with: bit FrameworksCoreTests:android.database.SQLiteOpenHelperTest + */ +@RunWith(AndroidJUnit4.class) +@SmallTest +public class SQLiteOpenHelperTest { + private static final String TAG = "SQLiteOpenHelperTest"; + + private TestHelper mTestHelper; + private Context mContext; + private List mHelpersToClose; + + private static class TestHelper extends SQLiteOpenHelper { + TestHelper(Context context) { // In-memory + super(context, null, null, 1); + } + + TestHelper(Context context, String name) { + super(context, name, null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + } + } + + @Before + public void setup() { + mContext = InstrumentationRegistry.getContext(); + mTestHelper = new TestHelper(mContext, "openhelper_test"); + mHelpersToClose = new ArrayList<>(); + mHelpersToClose.add(mTestHelper); + } + + @After + public void teardown() { + for (SQLiteOpenHelper helper : mHelpersToClose) { + try { + helper.close(); + if (mTestHelper.getDatabaseName() != null) { + SQLiteDatabase.deleteDatabase( + mContext.getDatabasePath(mTestHelper.getDatabaseName())); + } + } catch (RuntimeException ex) { + Log.w(TAG, "Error occured when closing db helper " + helper, ex); + } + } + } + + @Test + public void testLookasideDefault() throws Exception { + assertNotNull(mTestHelper.getWritableDatabase()); + verifyLookasideStats(false); + } + + @Test + public void testLookasideDisabled() throws Exception { + mTestHelper.setLookasideConfig(0, 0); + assertNotNull(mTestHelper.getWritableDatabase()); + verifyLookasideStats(true); + } + + @Test + public void testInMemoryLookasideDisabled() throws Exception { + TestHelper memHelper = new TestHelper(mContext); + mHelpersToClose.add(memHelper); + memHelper.setLookasideConfig(0, 0); + assertNotNull(memHelper.getWritableDatabase()); + verifyLookasideStats(SQLiteDatabaseConfiguration.MEMORY_DB_PATH, true); + } + + @Test + public void testInMemoryLookasideDefault() throws Exception { + TestHelper memHelper = new TestHelper(mContext); + mHelpersToClose.add(memHelper); + assertNotNull(memHelper.getWritableDatabase()); + verifyLookasideStats(SQLiteDatabaseConfiguration.MEMORY_DB_PATH, false); + } + + @Test + public void testSetLookasideConfigValidation() { + try { + mTestHelper.setLookasideConfig(-1, 0); + fail("Negative slot size should be rejected"); + } catch (IllegalArgumentException expected) { + } + try { + mTestHelper.setLookasideConfig(0, -10); + fail("Negative slot count should be rejected"); + } catch (IllegalArgumentException expected) { + } + try { + mTestHelper.setLookasideConfig(1, 0); + fail("Illegal config should be rejected"); + } catch (IllegalArgumentException expected) { + } + try { + mTestHelper.setLookasideConfig(0, 1); + fail("Illegal config should be rejected"); + } catch (IllegalArgumentException expected) { + } + } + + private void verifyLookasideStats(boolean expectDisabled) { + verifyLookasideStats(mTestHelper.getDatabaseName(), expectDisabled); + } + + private static void verifyLookasideStats(String dbName, boolean expectDisabled) { + boolean dbStatFound = false; + SQLiteDebug.PagerStats info = SQLiteDebug.getDatabaseInfo(); + for (SQLiteDebug.DbStats dbStat : info.dbStats) { + if (dbStat.dbName.endsWith(dbName)) { + dbStatFound = true; + Log.i(TAG, "Lookaside for " + dbStat.dbName + " " + dbStat.lookaside); + if (expectDisabled) { + assertTrue("lookaside slots count should be zero", dbStat.lookaside == 0); + } else { + assertTrue("lookaside slots count should be greater than zero", + dbStat.lookaside > 0); + } + } + } + assertTrue("No dbstat found for " + dbName, dbStatFound); + } +} diff --git a/core/tests/coretests/src/android/database/process_newdb_perf_test_logs.py b/core/tests/coretests/src/android/database/process_newdb_perf_test_logs.py index 1faeceb78d8bf58a4eb615c86854bf485243a3f7..27b20c327c0b9dd795cd31bc0f0fb2fe2933e657 100644 --- a/core/tests/coretests/src/android/database/process_newdb_perf_test_logs.py +++ b/core/tests/coretests/src/android/database/process_newdb_perf_test_logs.py @@ -25,7 +25,16 @@ def main(): all_lines = f.readlines() timings = {} running_sum = 0 + # If WAL was enabled for the test + wal_enabled = False + # Number of bytes which test process caused to be sent to the storage layer. + # Reported as max value across all runs. + max_write_bytes = 0 for line in all_lines: + if "NewDatabasePerformanceTests: Testing with WAL enabled" in line: + wal_enabled = True + continue + regex = r"NewDatabasePerformanceTests: Test (\w+) took (\d+) ms" matches = re.search(regex, line) if matches: @@ -35,16 +44,31 @@ def main(): timings[test_name] = [] timings[test_name].append(duration) running_sum += duration + continue + if ("TestRunner: run finished:" in line) and (running_sum > 0): - test_name = '*** TOTAL ALL TESTS (ms) ***' + test_name = ('*** TOTAL ALL TESTS [WAL] (ms) ***' if wal_enabled + else '*** TOTAL ALL TESTS (ms) ***') if not test_name in timings: timings[test_name] = [] timings[test_name].append(running_sum) running_sum=0 + continue + + # Determine max from all reported totalWriteBytes + regex = r"Test .* totalWriteBytes=(\d+)" + matches = re.search(regex, line) + if matches: + max_write_bytes = max(max_write_bytes, int(matches.group(1))) + continue for k in sorted(timings): timings_ar = timings[k] print "%s: %s avg: %s" % (k, timings_ar, sum(timings_ar) / float(len(timings_ar)) ) + + print "\nAdditional stats: " + print " max write_bytes: %d" % max_write_bytes + if __name__ == '__main__': main() diff --git a/core/tests/coretests/src/android/database/run_newdb_perf_test.sh b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh new file mode 100755 index 0000000000000000000000000000000000000000..c5b2c97b572f2734e09c74c2b060970acc5e4c89 --- /dev/null +++ b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh @@ -0,0 +1,31 @@ +#!/bin/bash - +# 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. + +make -j44 FrameworksCoreTests +adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk +adb logcat -c + +# by default run 5 times +RUN_N=${1:-5} +echo "Running benchmark $RUN_N times" + +for (( i=0; i<$RUN_N; i++ )) +do + adb shell am instrument -e class 'android.database.NewDatabasePerformanceTestSuite' -w 'com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner' +done + +adb logcat -d > /tmp/testlogcat.txt + +python frameworks/base/core/tests/coretests/src/android/database/process_newdb_perf_test_logs.py /tmp/testlogcat.txt \ No newline at end of file diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ed14a5348ab46f593e487a942d90f04c617ff0f5 --- /dev/null +++ b/core/tests/coretests/src/android/database/sqlite/SQLiteConnectionPoolTest.java @@ -0,0 +1,91 @@ +/* + * 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.database.sqlite; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import android.content.Context; +import android.os.HandlerThread; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; +import android.util.Log; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.File; + +/** + * Tests for {@link SQLiteConnectionPool} + * + *

    Run with: bit FrameworksCoreTests:android.database.sqlite.SQLiteConnectionPoolTest + */ +@RunWith(AndroidJUnit4.class) +@SmallTest +public class SQLiteConnectionPoolTest { + private static final String TAG = "SQLiteConnectionPoolTest"; + + private Context mContext; + private File mTestDatabase; + private SQLiteDatabaseConfiguration mTestConf; + + + @Before + public void setup() { + mContext = InstrumentationRegistry.getContext(); + SQLiteDatabase db = SQLiteDatabase + .openOrCreateDatabase(mContext.getDatabasePath("pool_test"), null); + mTestDatabase = new File(db.getPath()); + Log.i(TAG, "setup: created " + mTestDatabase); + db.close(); + mTestConf = new SQLiteDatabaseConfiguration(mTestDatabase.getPath(), 0); + } + + @After + public void teardown() { + if (mTestDatabase != null) { + Log.i(TAG, "teardown: deleting " + mTestDatabase); + SQLiteDatabase.deleteDatabase(mTestDatabase); + } + } + + @Test + public void testCloseIdleConnections() throws InterruptedException { + HandlerThread thread = new HandlerThread("test-close-idle-connections-thread"); + Log.i(TAG, "Starting " + thread.getName()); + thread.start(); + SQLiteConnectionPool pool = SQLiteConnectionPool.open(mTestConf); + pool.setupIdleConnectionHandler(thread.getLooper(), 100); + SQLiteConnection c1 = pool.acquireConnection("pragma user_version", 0, null); + assertEquals("First connection should be returned", 0, c1.getConnectionId()); + pool.releaseConnection(c1); + SQLiteConnection c2 = pool.acquireConnection("pragma user_version", 0, null); + assertTrue("Returned connection should be the same", c1 == c2); + pool.releaseConnection(c2); + Thread.sleep(200); + SQLiteConnection c3 = pool.acquireConnection("pragma user_version", 0, null); + assertTrue("New connection should be returned", c1 != c3); + assertEquals("New connection should be returned", 1, c3.getConnectionId()); + pool.releaseConnection(c3); + pool.close(); + thread.quit(); + } +} diff --git a/core/tests/coretests/src/android/graphics/PaintTest.java b/core/tests/coretests/src/android/graphics/PaintTest.java index 5811ca0fd2660163e18464ee199f2bb026f40605..2f28606790cf4fc3970a4fa8ccbd1dcc00cdb9fb 100644 --- a/core/tests/coretests/src/android/graphics/PaintTest.java +++ b/core/tests/coretests/src/android/graphics/PaintTest.java @@ -16,6 +16,8 @@ package android.graphics; +import static org.junit.Assert.assertNotEquals; + import android.graphics.Paint; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; @@ -148,7 +150,10 @@ public class PaintTest extends InstrumentationTestCase { " U+" + Integer.toHexString(vs) + ")"; final String testString = codePointsToString(new int[] {testCase.mBaseCodepoint, vs}); - if (testCase.mVariationSelectors.contains(vs)) { + if (vs == 0xFE0E // U+FE0E is the text presentation emoji. hasGlyph is expected to + // return true for that variation selector if the font has the base + // glyph. + || testCase.mVariationSelectors.contains(vs)) { assertTrue(signature + " is expected to be true", p.hasGlyph(testString)); } else { assertFalse(signature + " is expected to be false", p.hasGlyph(testString)); @@ -365,4 +370,31 @@ public class PaintTest extends InstrumentationTestCase { p.setWordSpacing(-2.0f); assertEquals(-2.0f, p.getWordSpacing()); } + + public void testGetUnderlinePositionAndThickness() { + final Typeface fontTypeface = Typeface.createFromAsset( + getInstrumentation().getContext().getAssets(), "fonts/underlineTestFont.ttf"); + final Paint p = new Paint(); + final int textSize = 100; + p.setTextSize(textSize); + + final float origPosition = p.getUnderlinePosition(); + final float origThickness = p.getUnderlineThickness(); + + p.setTypeface(fontTypeface); + assertNotEquals(origPosition, p.getUnderlinePosition()); + assertNotEquals(origThickness, p.getUnderlineThickness()); + + // -200 (underlinePosition in 'post' table, negative means below the baseline) + // ÷ 1000 (unitsPerEm in 'head' table) + // × 100 (text size) + // × -1 (negated, since we consider below the baseline positive) + // = 20 + assertEquals(20.0f, p.getUnderlinePosition(), 0.5f); + // 300 (underlineThickness in 'post' table) + // ÷ 1000 (unitsPerEm in 'head' table) + // × 100 (text size) + // = 30 + assertEquals(30.0f, p.getUnderlineThickness(), 0.5f); + } } diff --git a/core/tests/coretests/src/android/os/BundleTest.java b/core/tests/coretests/src/android/os/BundleTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9fcf96d6f3aeeff03af552f78451531ee134eef4 --- /dev/null +++ b/core/tests/coretests/src/android/os/BundleTest.java @@ -0,0 +1,140 @@ +/* + * 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.os; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; + +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Unit tests for bundle that requires accessing hidden APS. Tests that can be written only with + * public APIs should go in the CTS counterpart. + * + * Run with: + * bit FrameworksCoreTests:android.os.BundleTest + */ +@SmallTest +@RunWith(AndroidJUnit4.class) +public class BundleTest { + /** + * Create a test bundle, parcel it and return the parcel. + */ + private Parcel createBundleParcel(boolean withFd) throws Exception { + final Bundle source = new Bundle(); + source.putString("string", "abc"); + source.putInt("int", 1); + if (withFd) { + ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); + pipe[1].close(); + source.putParcelable("fd", pipe[0]); + } + final Parcel p = Parcel.obtain(); + // Don't use p.writeParcelabe(), which would write the creator, which we don't need. + source.writeToParcel(p, 0); + p.setDataPosition(0); + + return p; + } + + /** + * Verify a bundle generated by {@link #createBundleParcel(boolean)}. + */ + private void checkBundle(Bundle b, boolean withFd) { + // First, do the checks without actually unparceling the bundle. + // (Note looking into the contents will unparcel a bundle, so we'll do it later.) + assertTrue("mParcelledData shouldn't be null here.", b.isParcelled()); + + // Make sure FLAG_HAS_FDS and FLAG_HAS_FDS_KNOWN are set/cleared properly. + if (withFd) { + // FLAG_HAS_FDS and FLAG_HAS_FDS_KNOWN should both be set. + assertEquals(Bundle.FLAG_HAS_FDS | Bundle.FLAG_HAS_FDS_KNOWN, + b.mFlags & (Bundle.FLAG_HAS_FDS | Bundle.FLAG_HAS_FDS_KNOWN)); + } else { + // FLAG_HAS_FDS_KNOWN should be set, bot not FLAG_HAS_FDS. + assertEquals(Bundle.FLAG_HAS_FDS_KNOWN, + b.mFlags & (Bundle.FLAG_HAS_FDS | Bundle.FLAG_HAS_FDS_KNOWN)); + } + + // Then, check the contents. + assertEquals("abc", b.getString("string")); + assertEquals(1, b.getInt("int")); + + // Make sure FLAG_HAS_FDS and FLAG_HAS_FDS_KNOWN are set/cleared properly. + if (withFd) { + assertEquals(ParcelFileDescriptor.class, b.getParcelable("fd").getClass()); + assertEquals(3, b.keySet().size()); + } else { + assertEquals(2, b.keySet().size()); + } + assertFalse(b.isParcelled()); + } + + @Test + public void testCreateFromParcel() throws Exception { + boolean withFd; + Parcel p; + Bundle b; + int length; + + withFd = false; + + // new Bundle with p + p = createBundleParcel(withFd); + checkBundle(new Bundle(p), withFd); + p.recycle(); + + // new Bundle with p and length + p = createBundleParcel(withFd); + length = p.readInt(); + checkBundle(new Bundle(p, length), withFd); + p.recycle(); + + // readFromParcel() + p = createBundleParcel(withFd); + b = new Bundle(); + b.readFromParcel(p); + checkBundle(b, withFd); + p.recycle(); + + // Same test with FDs. + withFd = true; + + // new Bundle with p + p = createBundleParcel(withFd); + checkBundle(new Bundle(p), withFd); + p.recycle(); + + // new Bundle with p and length + p = createBundleParcel(withFd); + length = p.readInt(); + checkBundle(new Bundle(p, length), withFd); + p.recycle(); + + // readFromParcel() + p = createBundleParcel(withFd); + b = new Bundle(); + b.readFromParcel(p); + checkBundle(b, withFd); + p.recycle(); + } +} diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 9edaffe2bde1abc7949ec9aa2c520fbad0a5f5f2..19808cae372182fe43ebb8909efa6872034f0ae4 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -26,6 +26,7 @@ import static java.lang.reflect.Modifier.isFinal; import static java.lang.reflect.Modifier.isPublic; import static java.lang.reflect.Modifier.isStatic; +import android.platform.test.annotations.Presubmit; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -37,6 +38,7 @@ import java.util.HashSet; import java.util.Set; /** Tests that ensure appropriate settings are backed up. */ +@Presubmit @RunWith(AndroidJUnit4.class) @SmallTest public class SettingsBackupTest { @@ -97,7 +99,9 @@ public class SettingsBackupTest { Settings.Global.ALARM_MANAGER_CONSTANTS, Settings.Global.ALLOW_USER_SWITCHING_WHEN_SYSTEM_USER_LOCKED, Settings.Global.ALWAYS_FINISH_ACTIVITIES, + Settings.Global.ALWAYS_ON_DISPLAY_CONSTANTS, Settings.Global.ANIMATOR_DURATION_SCALE, + Settings.Global.ANOMALY_DETECTION_CONSTANTS, Settings.Global.APN_DB_UPDATE_CONTENT_URL, Settings.Global.APN_DB_UPDATE_METADATA_URL, Settings.Global.APP_IDLE_CONSTANTS, @@ -117,7 +121,6 @@ public class SettingsBackupTest { Settings.Global.BLUETOOTH_INTEROPERABILITY_LIST, Settings.Global.BLUETOOTH_MAP_CLIENT_PRIORITY_PREFIX, Settings.Global.BLUETOOTH_MAP_PRIORITY_PREFIX, - Settings.Global.BLUETOOTH_ON, // Candidate for backup? Settings.Global.BLUETOOTH_PAN_PRIORITY_PREFIX, Settings.Global.BLUETOOTH_PBAP_CLIENT_PRIORITY_PREFIX, Settings.Global.BLUETOOTH_SAP_PRIORITY_PREFIX, @@ -157,6 +160,7 @@ public class SettingsBackupTest { Settings.Global.DEBUG_VIEW_ATTRIBUTES, Settings.Global.DEFAULT_DNS_SERVER, Settings.Global.DEFAULT_INSTALL_LOCATION, + Settings.Global.DEFAULT_RESTRICT_BACKGROUND_DATA, Settings.Global.DESK_DOCK_SOUND, Settings.Global.DESK_UNDOCK_SOUND, Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, @@ -167,6 +171,7 @@ public class SettingsBackupTest { Settings.Global.DEVICE_IDLE_CONSTANTS, Settings.Global.DEVICE_IDLE_CONSTANTS_WATCH, Settings.Global.BATTERY_SAVER_CONSTANTS, + Settings.Global.DEFAULT_SM_DP_PLUS, Settings.Global.DEVICE_NAME, Settings.Global.DEVICE_POLICY_CONSTANTS, Settings.Global.DEVICE_PROVISIONED, @@ -191,6 +196,7 @@ public class SettingsBackupTest { Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, Settings.Global.ENABLE_CACHE_QUOTA_CALCULATION, Settings.Global.ENABLE_CELLULAR_ON_BOOT, + Settings.Global.ENABLE_DELETION_HELPER_NO_THRESHOLD_TOGGLE, Settings.Global.ENABLE_DISKSTATS_LOGGING, Settings.Global.ENABLE_EPHEMERAL_FEATURE, Settings.Global.ENHANCED_4G_MODE_ENABLED, @@ -214,6 +220,7 @@ public class SettingsBackupTest { Settings.Global.HTTP_PROXY, Settings.Global.INET_CONDITION_DEBOUNCE_DOWN_DELAY, Settings.Global.INET_CONDITION_DEBOUNCE_UP_DELAY, + Settings.Global.INSTANT_APP_DEXOPT_ENABLED, Settings.Global.INTENT_FIREWALL_UPDATE_CONTENT_URL, Settings.Global.INTENT_FIREWALL_UPDATE_METADATA_URL, Settings.Global.JOB_SCHEDULER_CONSTANTS, @@ -248,6 +255,7 @@ public class SettingsBackupTest { Settings.Global.NETSTATS_GLOBAL_ALERT_BYTES, Settings.Global.NETSTATS_POLL_INTERVAL, Settings.Global.NETSTATS_SAMPLE_ENABLED, + Settings.Global.NETSTATS_AUGMENT_ENABLED, Settings.Global.NETSTATS_TIME_CACHE_MAX_AGE, Settings.Global.NETSTATS_UID_BUCKET_DURATION, Settings.Global.NETSTATS_UID_DELETE_AGE, @@ -270,6 +278,7 @@ public class SettingsBackupTest { Settings.Global.NEW_CONTACT_AGGREGATOR, Settings.Global.NITZ_UPDATE_DIFF, Settings.Global.NITZ_UPDATE_SPACING, + Settings.Global.NOTIFICATION_SNOOZE_OPTIONS, Settings.Global.NSD_ON, Settings.Global.NTP_SERVER, Settings.Global.NTP_TIMEOUT, @@ -321,7 +330,9 @@ public class SettingsBackupTest { Settings.Global.SMS_SHORT_CODE_RULE, Settings.Global.SMS_SHORT_CODES_UPDATE_CONTENT_URL, Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL, + Settings.Global.SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS, Settings.Global.STORAGE_BENCHMARK_INTERVAL, + Settings.Global.STORAGE_SETTINGS_CLOBBER_THRESHOLD, Settings.Global.SYNC_MAX_RETRY_DELAY_IN_SECONDS, Settings.Global.SYS_FREE_STORAGE_LOG_INTERVAL, Settings.Global.SYS_STORAGE_CACHE_MAX_BYTES, @@ -332,7 +343,9 @@ public class SettingsBackupTest { Settings.Global.TCP_DEFAULT_INIT_RWND, Settings.Global.TETHER_DUN_APN, Settings.Global.TETHER_DUN_REQUIRED, + Settings.Global.TETHER_OFFLOAD_DISABLED, Settings.Global.TETHER_SUPPORTED, + Settings.Global.TEXT_CLASSIFIER_CONSTANTS, Settings.Global.THEATER_MODE_ON, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.TRUSTED_SOUND, @@ -433,6 +446,7 @@ public class SettingsBackupTest { Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, Settings.Secure.EMERGENCY_ASSISTANCE_APPLICATION, Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT, + Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES, Settings.Secure.ENABLED_PRINT_SERVICES, Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, @@ -487,6 +501,7 @@ public class SettingsBackupTest { Settings.Secure.TRUST_AGENTS_INITIALIZED, Settings.Secure.TV_INPUT_CUSTOM_LABELS, Settings.Secure.TV_INPUT_HIDDEN_INPUTS, + Settings.Secure.TV_USER_SETUP_COMPLETE, Settings.Secure.UI_NIGHT_MODE, // candidate? Settings.Secure.UNKNOWN_SOURCES_DEFAULT_REVERSED, Settings.Secure.UNSAFE_VOLUME_MUSIC_ACTIVE_MS, diff --git a/core/tests/coretests/src/android/text/StaticLayoutTest.java b/core/tests/coretests/src/android/text/StaticLayoutTest.java index 74a6cc6299373219401f8e0383010509e310b5ec..f1c4e56fc6c93d196da65a07cdecfc8496bd673a 100644 --- a/core/tests/coretests/src/android/text/StaticLayoutTest.java +++ b/core/tests/coretests/src/android/text/StaticLayoutTest.java @@ -22,10 +22,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import android.graphics.Paint.FontMetricsInt; +import android.os.LocaleList; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.text.Layout.Alignment; import android.text.method.EditorState; +import android.text.style.LocaleSpan; import android.util.Log; import org.junit.Before; @@ -35,6 +37,7 @@ import org.junit.runner.RunWith; import java.text.Normalizer; import java.util.ArrayList; import java.util.List; +import java.util.Locale; /** * Tests StaticLayout vertical metrics behavior. @@ -671,4 +674,87 @@ public class StaticLayoutTest { assertEquals(testLabel, 4, layout.getOffsetToRightOf(5)); } } + + @Test + public void testLocaleSpanAffectsHyphenation() { + TextPaint paint = new TextPaint(); + paint.setTextLocale(Locale.US); + // Private use language, with no hyphenation rules. + final Locale privateLocale = Locale.forLanguageTag("qaa"); + + final String longWord = "philanthropic"; + final float wordWidth = paint.measureText(longWord); + // Wide enough that words get hyphenated by default. + final int paraWidth = Math.round(wordWidth * 1.8f); + final String sentence = longWord + " " + longWord + " " + longWord + " " + longWord + " " + + longWord + " " + longWord; + + final int numEnglishLines = StaticLayout.Builder + .obtain(sentence, 0, sentence.length(), paint, paraWidth) + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) + .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) + .build() + .getLineCount(); + + { + final SpannableString text = new SpannableString(sentence); + text.setSpan(new LocaleSpan(privateLocale), 0, text.length(), + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + final int numPrivateLocaleLines = StaticLayout.Builder + .obtain(text, 0, text.length(), paint, paraWidth) + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) + .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) + .build() + .getLineCount(); + + // Since the paragraph set to English gets hyphenated, the number of lines would be + // smaller than the number of lines when there is a span setting a language that + // doesn't get hyphenated. + assertTrue(numEnglishLines < numPrivateLocaleLines); + } + { + // Same as the above test, except that the locale span now uses a locale list starting + // with the private non-hyphenating locale. + final SpannableString text = new SpannableString(sentence); + final LocaleList locales = new LocaleList(privateLocale, Locale.US); + text.setSpan(new LocaleSpan(locales), 0, text.length(), + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + final int numPrivateLocaleLines = StaticLayout.Builder + .obtain(text, 0, text.length(), paint, paraWidth) + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) + .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) + .build() + .getLineCount(); + + assertTrue(numEnglishLines < numPrivateLocaleLines); + } + { + final SpannableString text = new SpannableString(sentence); + // Apply the private LocaleSpan only to the first word, which is not getting hyphenated + // anyway. + text.setSpan(new LocaleSpan(privateLocale), 0, longWord.length(), + Spanned.SPAN_INCLUSIVE_INCLUSIVE); + final int numPrivateLocaleLines = StaticLayout.Builder + .obtain(text, 0, text.length(), paint, paraWidth) + .setHyphenationFrequency(Layout.HYPHENATION_FREQUENCY_FULL) + .setBreakStrategy(Layout.BREAK_STRATEGY_HIGH_QUALITY) + .build() + .getLineCount(); + + // Since the first word is not hyphenated anyway (there's enough width), the LocaleSpan + // should not affect the layout. + assertEquals(numEnglishLines, numPrivateLocaleLines); + } + } + + @Test + public void testGetHeight_zeroMaxLines() { + final String text = "a\nb"; + final TextPaint paint = new TextPaint(); + final StaticLayout layout = StaticLayout.Builder.obtain(text, 0, text.length(), paint, + Integer.MAX_VALUE).setMaxLines(0).build(); + + assertEquals(0, layout.getHeight(true)); + assertEquals(2, layout.getLineCount()); + } } diff --git a/core/tests/coretests/src/android/text/TextUtilsTest.java b/core/tests/coretests/src/android/text/TextUtilsTest.java index 312c4fb4b23f64501aa01416f951d9da6393e342..472b3e2cd20d752bb4ec3c222646964309547ad1 100644 --- a/core/tests/coretests/src/android/text/TextUtilsTest.java +++ b/core/tests/coretests/src/android/text/TextUtilsTest.java @@ -20,26 +20,28 @@ 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.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import android.support.test.runner.AndroidJUnit4; -import com.google.android.collect.Lists; - import android.os.Parcel; import android.support.test.filters.LargeTest; import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; import android.test.MoreAsserts; import android.text.style.StyleSpan; import android.text.util.Rfc822Token; import android.text.util.Rfc822Tokenizer; import android.view.View; +import com.google.android.collect.Lists; + +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.ArrayList; import java.util.List; import java.util.Locale; -import org.junit.Test; -import org.junit.runner.RunWith; /** * TextUtilsTest tests {@link TextUtils}. @@ -361,14 +363,23 @@ public class TextUtilsTest { @Test public void testCharSequenceCreator() { Parcel p = Parcel.obtain(); - TextUtils.writeToParcel(null, p, 0); - CharSequence text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); - assertNull("null CharSequence should generate null from parcel", text); + CharSequence text; + try { + TextUtils.writeToParcel(null, p, 0); + text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); + assertNull("null CharSequence should generate null from parcel", text); + } finally { + p.recycle(); + } p = Parcel.obtain(); - TextUtils.writeToParcel("test", p, 0); - p.setDataPosition(0); - text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); - assertEquals("conversion to/from parcel failed", "test", text); + try { + TextUtils.writeToParcel("test", p, 0); + p.setDataPosition(0); + text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); + assertEquals("conversion to/from parcel failed", "test", text); + } finally { + p.recycle(); + } } @Test @@ -376,10 +387,14 @@ public class TextUtilsTest { Parcel p; CharSequence text; p = Parcel.obtain(); - TextUtils.writeToParcel(null, p, 0); - p.setDataPosition(0); - text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); - assertNull("null CharSequence should generate null from parcel", text); + try { + TextUtils.writeToParcel(null, p, 0); + p.setDataPosition(0); + text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); + assertNull("null CharSequence should generate null from parcel", text); + } finally { + p.recycle(); + } } @Test @@ -387,10 +402,14 @@ public class TextUtilsTest { Parcel p; CharSequence text; p = Parcel.obtain(); - TextUtils.writeToParcel(new SpannableString("test"), p, 0); - p.setDataPosition(0); - text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); - assertEquals("conversion to/from parcel failed", "test", text.toString()); + try { + TextUtils.writeToParcel(new SpannableString("test"), p, 0); + p.setDataPosition(0); + text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); + assertEquals("conversion to/from parcel failed", "test", text.toString()); + } finally { + p.recycle(); + } } @Test @@ -398,10 +417,14 @@ public class TextUtilsTest { Parcel p; CharSequence text; p = Parcel.obtain(); - TextUtils.writeToParcel("test", p, 0); - p.setDataPosition(0); - text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); - assertEquals("conversion to/from parcel failed", "test", text.toString()); + try { + TextUtils.writeToParcel("test", p, 0); + p.setDataPosition(0); + text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p); + assertEquals("conversion to/from parcel failed", "test", text.toString()); + } finally { + p.recycle(); + } } /** @@ -580,4 +603,84 @@ public class TextUtilsTest { assertEquals(View.LAYOUT_DIRECTION_RTL, TextUtils.getLayoutDirectionFromLocale(Locale.forLanguageTag("tr-Arab"))); } + + @Test + public void testToUpperCase() { + { + final CharSequence result = TextUtils.toUpperCase(null, "abc", false); + assertEquals(StringBuilder.class, result.getClass()); + assertEquals("ABC", result.toString()); + } + { + final SpannableString str = new SpannableString("abc"); + Object span = new Object(); + str.setSpan(span, 1, 2, Spanned.SPAN_INCLUSIVE_INCLUSIVE); + + final CharSequence result = TextUtils.toUpperCase(null, str, true /* copySpans */); + assertEquals(SpannableStringBuilder.class, result.getClass()); + assertEquals("ABC", result.toString()); + final Spanned spanned = (Spanned) result; + final Object[] resultSpans = spanned.getSpans(0, result.length(), Object.class); + assertEquals(1, resultSpans.length); + assertSame(span, resultSpans[0]); + assertEquals(1, spanned.getSpanStart(span)); + assertEquals(2, spanned.getSpanEnd(span)); + assertEquals(Spanned.SPAN_INCLUSIVE_INCLUSIVE, spanned.getSpanFlags(span)); + } + { + final Locale turkish = new Locale("tr", "TR"); + final CharSequence result = TextUtils.toUpperCase(turkish, "i", false); + assertEquals(StringBuilder.class, result.getClass()); + assertEquals("İ", result.toString()); + } + { + final String str = "ABC"; + assertSame(str, TextUtils.toUpperCase(null, str, false)); + } + { + final SpannableString str = new SpannableString("ABC"); + str.setSpan(new Object(), 1, 2, Spanned.SPAN_INCLUSIVE_INCLUSIVE); + assertSame(str, TextUtils.toUpperCase(null, str, true /* copySpans */)); + } + } + + // Copied from cts/tests/tests/widget/src/android/widget/cts/TextViewTest.java and modified + // for the TextUtils.toUpperCase method. + @Test + public void testToUpperCase_SpansArePreserved() { + final Locale greek = new Locale("el", "GR"); + final String lowerString = "ι\u0301ριδα"; // ίριδα with first letter decomposed + final String upperString = "ΙΡΙΔΑ"; // uppercased + // expected lowercase to uppercase index map + final int[] indexMap = {0, 1, 1, 2, 3, 4, 5}; + final int flags = Spanned.SPAN_INCLUSIVE_INCLUSIVE; + + final Spannable source = new SpannableString(lowerString); + source.setSpan(new Object(), 0, 1, flags); + source.setSpan(new Object(), 1, 2, flags); + source.setSpan(new Object(), 2, 3, flags); + source.setSpan(new Object(), 3, 4, flags); + source.setSpan(new Object(), 4, 5, flags); + source.setSpan(new Object(), 5, 6, flags); + source.setSpan(new Object(), 0, 2, flags); + source.setSpan(new Object(), 1, 3, flags); + source.setSpan(new Object(), 2, 4, flags); + source.setSpan(new Object(), 0, 6, flags); + final Object[] sourceSpans = source.getSpans(0, source.length(), Object.class); + + final CharSequence uppercase = TextUtils.toUpperCase(greek, source, true /* copySpans */); + assertEquals(SpannableStringBuilder.class, uppercase.getClass()); + final Spanned result = (Spanned) uppercase; + + assertEquals(upperString, result.toString()); + final Object[] resultSpans = result.getSpans(0, result.length(), Object.class); + assertEquals(sourceSpans.length, resultSpans.length); + for (int i = 0; i < sourceSpans.length; i++) { + assertSame(sourceSpans[i], resultSpans[i]); + final Object span = sourceSpans[i]; + assertEquals(indexMap[source.getSpanStart(span)], result.getSpanStart(span)); + assertEquals(indexMap[source.getSpanEnd(span)], result.getSpanEnd(span)); + assertEquals(source.getSpanFlags(span), result.getSpanFlags(span)); + } + } } diff --git a/core/tests/coretests/src/android/text/format/FormatterTest.java b/core/tests/coretests/src/android/text/format/FormatterTest.java index a4ce911cf9295c71d30db3adef4849637bd48a08..24e3646e02fcfafeb782be29bb8b732bcfac307a 100644 --- a/core/tests/coretests/src/android/text/format/FormatterTest.java +++ b/core/tests/coretests/src/android/text/format/FormatterTest.java @@ -17,21 +17,26 @@ package android.text.format; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; +import android.icu.util.MeasureUnit; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.text.format.Formatter.BytesResult; -import java.util.Locale; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import java.util.Locale; +import java.util.Set; + + @SmallTest @RunWith(AndroidJUnit4.class) public class FormatterTest { @@ -54,7 +59,7 @@ public class FormatterTest { @Test public void testFormatBytes() { - setLocale(Locale.ENGLISH); + setLocale(Locale.US); checkFormatBytes(0, true, "0", 0); checkFormatBytes(0, false, "0", 0); @@ -99,6 +104,95 @@ public class FormatterTest { checkFormatBytes(9123000, false, "9,12", 9120000); } + private static final long SECOND = 1000; + private static final long MINUTE = 60 * SECOND; + private static final long HOUR = 60 * MINUTE; + private static final long DAY = 24 * HOUR; + + @Test + public void testFormatShortElapsedTime() { + setLocale(Locale.US); + assertEquals("3 days", Formatter.formatShortElapsedTime(mContext, 2 * DAY + 12 * HOUR)); + assertEquals("2 days", Formatter.formatShortElapsedTime(mContext, 2 * DAY + 11 * HOUR)); + assertEquals("2 days", Formatter.formatShortElapsedTime(mContext, 2 * DAY)); + assertEquals("1 day, 23 hr", + Formatter.formatShortElapsedTime(mContext, 1 * DAY + 23 * HOUR + 59 * MINUTE)); + assertEquals("1 day, 0 hr", + Formatter.formatShortElapsedTime(mContext, 1 * DAY + 59 * MINUTE)); + assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTime(mContext, 1 * DAY)); + assertEquals("24 hr", Formatter.formatShortElapsedTime(mContext, 23 * HOUR + 30 * MINUTE)); + assertEquals("3 hr", Formatter.formatShortElapsedTime(mContext, 2 * HOUR + 30 * MINUTE)); + assertEquals("2 hr", Formatter.formatShortElapsedTime(mContext, 2 * HOUR)); + assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTime(mContext, 1 * HOUR)); + assertEquals("60 min", + Formatter.formatShortElapsedTime(mContext, 59 * MINUTE + 30 * SECOND)); + assertEquals("59 min", + Formatter.formatShortElapsedTime(mContext, 59 * MINUTE)); + assertEquals("3 min", Formatter.formatShortElapsedTime(mContext, 2 * MINUTE + 30 * SECOND)); + assertEquals("2 min", Formatter.formatShortElapsedTime(mContext, 2 * MINUTE)); + assertEquals("1 min, 59 sec", + Formatter.formatShortElapsedTime(mContext, 1 * MINUTE + 59 * SECOND + 999)); + assertEquals("1 min, 0 sec", Formatter.formatShortElapsedTime(mContext, 1 * MINUTE)); + assertEquals("59 sec", Formatter.formatShortElapsedTime(mContext, 59 * SECOND + 999)); + assertEquals("1 sec", Formatter.formatShortElapsedTime(mContext, 1 * SECOND)); + assertEquals("0 sec", Formatter.formatShortElapsedTime(mContext, 1)); + assertEquals("0 sec", Formatter.formatShortElapsedTime(mContext, 0)); + + // Make sure it works on different locales. + setLocale(Locale.FRANCE); + assertEquals("2 j", Formatter.formatShortElapsedTime(mContext, 2 * DAY)); + } + + @Test + public void testFormatShortElapsedTimeRoundingUpToMinutes() { + setLocale(Locale.US); + assertEquals("3 days", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * DAY + 12 * HOUR)); + assertEquals("2 days", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * DAY + 11 * HOUR)); + assertEquals("2 days", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * DAY)); + assertEquals("1 day, 23 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * DAY + 23 * HOUR + 59 * MINUTE)); + assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * DAY + 59 * MINUTE)); + assertEquals("1 day, 0 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * DAY)); + assertEquals("24 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 23 * HOUR + 30 * MINUTE)); + assertEquals("3 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * HOUR + 30 * MINUTE)); + assertEquals("2 hr", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * HOUR)); + assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * HOUR)); + assertEquals("1 hr, 0 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 59 * MINUTE + 30 * SECOND)); + assertEquals("59 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 59 * MINUTE)); + assertEquals("3 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * MINUTE + 30 * SECOND)); + assertEquals("2 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 2 * MINUTE)); + assertEquals("2 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * MINUTE + 59 * SECOND + 999)); + assertEquals("1 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * MINUTE)); + assertEquals("1 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 59 * SECOND + 999)); + assertEquals("1 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * SECOND)); + assertEquals("1 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1)); + assertEquals("0 min", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 0)); + + // Make sure it works on different locales. + setLocale(new Locale("ru", "RU")); + assertEquals("1 мин", Formatter.formatShortElapsedTimeRoundingUpToMinutes( + mContext, 1 * SECOND)); + } + private void checkFormatBytes(long bytes, boolean useShort, String expectedString, long expectedRounded) { BytesResult r = Formatter.formatBytes(mContext.getResources(), bytes, @@ -115,4 +209,24 @@ public class FormatterTest { Locale.setDefault(locale); } + + /** + * Verifies that Formatter doesn't "leak" the locally defined petabyte unit into ICU via the + * {@link MeasureUnit} registry. This test can fail for two reasons: + * 1. we regressed and started leaking again. In this case the code needs to be fixed. + * 2. ICU started supporting petabyte as a unit, in which case change one needs to revert this + * change (I494fb59a3b3742f35cbdf6b8705817f404a2c6b0), remove Formatter.PETABYTE and replace any + * usages of that field with just MeasureUnit.PETABYTE. + */ + // http://b/65632959 + @Test + public void doesNotLeakPetabyte() { + // Ensure that the Formatter class is loaded when we call .getAvailable(). + Formatter.formatFileSize(mContext, Long.MAX_VALUE); + Set digitalUnits = MeasureUnit.getAvailable("digital"); + for (MeasureUnit unit : digitalUnits) { + // This assert can fail if we don't leak PETABYTE, but ICU has added it, see #2 above. + assertNotEquals("petabyte", unit.getSubtype()); + } + } } diff --git a/core/tests/coretests/src/android/text/util/LinkifyTest.java b/core/tests/coretests/src/android/text/util/LinkifyTest.java index 73ff046f0f835bee1725fc2959af83b3674ec588..be3a0be079bfcebc9e071e427b9a88555bf69e34 100644 --- a/core/tests/coretests/src/android/text/util/LinkifyTest.java +++ b/core/tests/coretests/src/android/text/util/LinkifyTest.java @@ -80,7 +80,7 @@ public class LinkifyTest { tv = new TextView(createUsEnglishContext()); tv.setAutoLinkMask(Linkify.ALL); - tv.setText("Hey, foo@google.com, call 415-555-1212."); + tv.setText("Hey, foo@google.com, call +1-415-555-1212."); assertTrue(tv.getMovementMethod() instanceof LinkMovementMethod); assertTrue(tv.getUrls().length == 2); @@ -93,7 +93,7 @@ public class LinkifyTest { tv = new TextView(createUsEnglishContext()); tv.setAutoLinkMask(Linkify.ALL); tv.setLinksClickable(false); - tv.setText("Hey, foo@google.com, call 415-555-1212."); + tv.setText("Hey, foo@google.com, call +1-415-555-1212."); assertFalse(tv.getMovementMethod() instanceof LinkMovementMethod); assertTrue(tv.getUrls().length == 2); diff --git a/core/tests/coretests/src/android/transition/FadeTransitionTest.java b/core/tests/coretests/src/android/transition/FadeTransitionTest.java index 674b36355ab097a0dad57e8cb461db9c281aea6a..22365bac64a2be5cd4e2d48876a891ce53c54d21 100644 --- a/core/tests/coretests/src/android/transition/FadeTransitionTest.java +++ b/core/tests/coretests/src/android/transition/FadeTransitionTest.java @@ -16,22 +16,24 @@ package android.transition; +import android.animation.Animator; import android.animation.AnimatorSetActivity; import android.app.Activity; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.SmallTest; import android.transition.Transition.TransitionListener; -import android.transition.TransitionListenerAdapter; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; import com.android.frameworks.coretests.R; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import static android.support.test.espresso.Espresso.onView; - public class FadeTransitionTest extends ActivityInstrumentationTestCase2 { Activity mActivity; public FadeTransitionTest() { @@ -129,6 +131,43 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2 { Activity mActivity; public TransitionTest() { @@ -77,27 +79,47 @@ public class TransitionTest extends ActivityInstrumentationTestCase2 type, String fieldName) throws NoSuchFieldException { + while (type != null) { + try { + return type.getDeclaredField(fieldName); + } catch (NoSuchFieldException e) { + // try the parent + type = type.getSuperclass(); + } + } + throw new NoSuchFieldException(fieldName); } } diff --git a/core/tests/coretests/src/android/util/RecurrenceRuleTest.java b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java new file mode 100644 index 0000000000000000000000000000000000000000..42b6048b533adb91181b0b66115226cbabc1d527 --- /dev/null +++ b/core/tests/coretests/src/android/util/RecurrenceRuleTest.java @@ -0,0 +1,146 @@ +/* + * 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.util; + +import android.support.test.filters.SmallTest; + +import junit.framework.TestCase; + +import java.time.Clock; +import java.time.Instant; +import java.time.Period; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Iterator; + +@SmallTest +public class RecurrenceRuleTest extends TestCase { + + static Clock sOriginalClock; + + @Override + protected void setUp() throws Exception { + super.setUp(); + sOriginalClock = RecurrenceRule.sClock; + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + RecurrenceRule.sClock = sOriginalClock; + } + + private void setClock(Instant instant) { + RecurrenceRule.sClock = Clock.fixed(instant, ZoneId.systemDefault()); + } + + public void testSimpleMonth() throws Exception { + setClock(Instant.parse("2015-11-20T10:15:30.00Z")); + final RecurrenceRule r = new RecurrenceRule( + ZonedDateTime.parse("2010-11-14T00:00:00.000Z"), + null, + Period.ofMonths(1)); + + assertTrue(r.isMonthly()); + + final Iterator> it = r.cycleIterator(); + assertTrue(it.hasNext()); + assertEquals(Pair.create( + ZonedDateTime.parse("2015-11-14T00:00:00.00Z"), + ZonedDateTime.parse("2015-12-14T00:00:00.00Z")), it.next()); + assertTrue(it.hasNext()); + assertEquals(Pair.create( + ZonedDateTime.parse("2015-10-14T00:00:00.00Z"), + ZonedDateTime.parse("2015-11-14T00:00:00.00Z")), it.next()); + } + + public void testSimpleDays() throws Exception { + setClock(Instant.parse("2015-01-01T10:15:30.00Z")); + final RecurrenceRule r = new RecurrenceRule( + ZonedDateTime.parse("2010-11-14T00:11:00.000Z"), + ZonedDateTime.parse("2010-11-20T00:11:00.000Z"), + Period.ofDays(3)); + + assertFalse(r.isMonthly()); + + final Iterator> it = r.cycleIterator(); + assertTrue(it.hasNext()); + assertEquals(Pair.create( + ZonedDateTime.parse("2010-11-17T00:11:00.00Z"), + ZonedDateTime.parse("2010-11-20T00:11:00.00Z")), it.next()); + assertTrue(it.hasNext()); + assertEquals(Pair.create( + ZonedDateTime.parse("2010-11-14T00:11:00.00Z"), + ZonedDateTime.parse("2010-11-17T00:11:00.00Z")), it.next()); + assertFalse(it.hasNext()); + } + + public void testNotRecurring() throws Exception { + setClock(Instant.parse("2015-01-01T10:15:30.00Z")); + final RecurrenceRule r = new RecurrenceRule( + ZonedDateTime.parse("2010-11-14T00:11:00.000Z"), + ZonedDateTime.parse("2010-11-20T00:11:00.000Z"), + null); + + assertFalse(r.isMonthly()); + + final Iterator> it = r.cycleIterator(); + assertTrue(it.hasNext()); + assertEquals(Pair.create( + ZonedDateTime.parse("2010-11-14T00:11:00.000Z"), + ZonedDateTime.parse("2010-11-20T00:11:00.000Z")), it.next()); + assertFalse(it.hasNext()); + } + + public void testNever() throws Exception { + setClock(Instant.parse("2015-01-01T10:15:30.00Z")); + final RecurrenceRule r = RecurrenceRule.buildNever(); + + assertFalse(r.isMonthly()); + + final Iterator> it = r.cycleIterator(); + assertFalse(it.hasNext()); + } + + public void testSane() throws Exception { + final RecurrenceRule r = new RecurrenceRule( + ZonedDateTime.parse("1980-01-31T00:00:00.000Z"), + ZonedDateTime.parse("2030-01-31T00:00:00.000Z"), + Period.ofMonths(1)); + + final Iterator> it = r.cycleIterator(); + ZonedDateTime lastStart = null; + int months = 0; + while (it.hasNext()) { + final Pair cycle = it.next(); + + // Make sure cycle has reasonable length + final long length = cycle.second.toEpochSecond() - cycle.first.toEpochSecond(); + assertTrue(cycle + " must be more than 4 weeks", length >= 2419200); + assertTrue(cycle + " must be less than 5 weeks", length <= 3024000); + + // Make sure we have no gaps + if (lastStart != null) { + assertEquals(lastStart, cycle.second); + } + lastStart = cycle.first; + months++; + } + + assertEquals(600, months); + } +} diff --git a/core/tests/coretests/src/android/util/SparseLongArrayTest.java b/core/tests/coretests/src/android/util/SparseLongArrayTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5a5e893d147251340b8935d3a71dfbd8e141be18 --- /dev/null +++ b/core/tests/coretests/src/android/util/SparseLongArrayTest.java @@ -0,0 +1,156 @@ +/* + * Copyright (C) 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.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import android.support.annotation.NonNull; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Random; + +/** + * Internal tests for {@link SparseLongArray}. + */ +@SmallTest +@RunWith(AndroidJUnit4.class) +public class SparseLongArrayTest { + + private static final int TEST_SIZE = 1000; + + private SparseLongArray mSparseLongArray; + private int[] mKeys; + private long[] mValues; + private Random mRandom; + + private static boolean isSame(@NonNull SparseLongArray array1, + @NonNull SparseLongArray array2) { + if (array1.size() != array2.size()) { + return false; + } + for (int i = 0; i < array1.size(); i++) { + if (array1.keyAt(i) != array2.keyAt(i) || array1.valueAt(i) != array2.valueAt(i)) { + return false; + } + } + return true; + } + + private void assertRemoved(int startIndex, int endIndex) { + for (int i = 0; i < TEST_SIZE; i++) { + if (i >= startIndex && i <= endIndex) { + assertEquals("Entry not removed", Long.MIN_VALUE, + mSparseLongArray.get(mKeys[i], Long.MIN_VALUE)); + } else { + assertEquals("Untouched entry corrupted", mValues[i], + mSparseLongArray.get(mKeys[i])); + } + } + } + + /** + * Generates a sorted array of distinct and random keys + * + * @param size the number of keys to return in the array. Should be < (2^31)/1000. + * @return the array of keys + */ + private int[] generateRandomKeys(int size) { + final int[] keys = new int[size]; + keys[0] = -1 * mRandom.nextInt(size * 500); + for (int i = 1; i < size; i++) { + keys[i] = keys[i - 1] + 1 + mRandom.nextInt(1000); + assertTrue(keys[i] > keys[i - 1]); + } + return keys; + } + + @Before + public void setUp() { + mSparseLongArray = new SparseLongArray(); + mRandom = new Random(12345); + mKeys = generateRandomKeys(TEST_SIZE); + mValues = new long[TEST_SIZE]; + for (int i = 0; i < TEST_SIZE; i++) { + mValues[i] = i + 1; + mSparseLongArray.put(mKeys[i], mValues[i]); + } + } + + @Test + public void testRemoveAtRange_removeHead() { + mSparseLongArray.removeAtRange(0, 100); + assertEquals(TEST_SIZE - 100, mSparseLongArray.size()); + assertRemoved(0, 99); + } + + @Test + public void testRemoveAtRange_removeTail() { + mSparseLongArray.removeAtRange(TEST_SIZE - 200, 200); + assertEquals(TEST_SIZE - 200, mSparseLongArray.size()); + assertRemoved(TEST_SIZE - 200, TEST_SIZE - 1); + } + + @Test + public void testRemoveAtRange_removeOverflow() { + mSparseLongArray.removeAtRange(TEST_SIZE - 100, 200); + assertEquals(TEST_SIZE - 100, mSparseLongArray.size()); + assertRemoved(TEST_SIZE - 100, TEST_SIZE - 1); + } + + @Test + public void testRemoveAtRange_removeEverything() { + mSparseLongArray.removeAtRange(0, TEST_SIZE); + assertEquals(0, mSparseLongArray.size()); + assertRemoved(0, TEST_SIZE - 1); + } + + @Test + public void testRemoveAtRange_removeMiddle() { + mSparseLongArray.removeAtRange(200, 200); + assertEquals(TEST_SIZE - 200, mSparseLongArray.size()); + assertRemoved(200, 399); + } + + @Test + public void testRemoveAtRange_removeSingle() { + mSparseLongArray.removeAtRange(300, 1); + assertEquals(TEST_SIZE - 1, mSparseLongArray.size()); + assertRemoved(300, 300); + } + + @Test + public void testRemoveAtRange_compareRemoveAt() { + final SparseLongArray sparseLongArray2 = mSparseLongArray.clone(); + assertTrue(isSame(mSparseLongArray, sparseLongArray2)); + + final int startIndex = 101; + final int endIndex = 200; + mSparseLongArray.removeAtRange(startIndex, endIndex - startIndex + 1); + for (int i = endIndex; i >= startIndex; i--) { + sparseLongArray2.removeAt(i); + } + assertEquals(TEST_SIZE - (endIndex - startIndex + 1), mSparseLongArray.size()); + assertRemoved(startIndex, endIndex); + assertTrue(isSame(sparseLongArray2, mSparseLongArray)); + } +} diff --git a/core/tests/coretests/src/android/view/ViewTransientState.java b/core/tests/coretests/src/android/view/ViewTransientState.java new file mode 100644 index 0000000000000000000000000000000000000000..206ff81660547abbf52a11ebc0e2645b1edf3079 --- /dev/null +++ b/core/tests/coretests/src/android/view/ViewTransientState.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 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.view; + +import android.app.Activity; +import android.os.Bundle; + +import com.android.frameworks.coretests.R; + +/** + * Exercise set View's transient state + */ +public class ViewTransientState extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.view_transient_state); + } +} diff --git a/core/tests/coretests/src/android/view/ViewTransientStateTest.java b/core/tests/coretests/src/android/view/ViewTransientStateTest.java new file mode 100644 index 0000000000000000000000000000000000000000..36ea01deea22009e4611a85586ecfd61d43a2f1f --- /dev/null +++ b/core/tests/coretests/src/android/view/ViewTransientStateTest.java @@ -0,0 +1,98 @@ +/* + * 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.view; + +import android.app.Activity; +import android.test.ActivityInstrumentationTestCase; +import android.test.UiThreadTest; +import android.test.suitebuilder.annotation.MediumTest; + +import com.android.frameworks.coretests.R; + +import static org.junit.Assert.assertFalse; + +/** + * Exercise set View's transient state + */ +public class ViewTransientStateTest extends ActivityInstrumentationTestCase { + + View mP1; + View mP2; + View mP3; + + public ViewTransientStateTest() { + super("com.android.frameworks.coretests", ViewTransientState.class); + } + + @Override + public void setUp() throws Exception { + super.setUp(); + + final Activity a = getActivity(); + mP1 = a.findViewById(R.id.p1); + mP2 = a.findViewById(R.id.p2); + mP3 = a.findViewById(R.id.p3); + } + + @UiThreadTest + @MediumTest + public void testSetTransientState1() throws Exception { + mP3.setHasTransientState(true); + mP2.setHasTransientState(true); + mP3.setHasTransientState(false); + mP2.setHasTransientState(false); + assertFalse(mP3.hasTransientState()); + assertFalse(mP2.hasTransientState()); + assertFalse(mP1.hasTransientState()); + } + + @UiThreadTest + @MediumTest + public void testSetTransientState2() throws Exception { + mP3.setHasTransientState(true); + mP2.setHasTransientState(true); + mP2.setHasTransientState(false); + mP3.setHasTransientState(false); + assertFalse(mP3.hasTransientState()); + assertFalse(mP2.hasTransientState()); + assertFalse(mP1.hasTransientState()); + } + + @UiThreadTest + @MediumTest + public void testSetTransientState3() throws Exception { + mP2.setHasTransientState(true); + mP3.setHasTransientState(true); + mP3.setHasTransientState(false); + mP2.setHasTransientState(false); + assertFalse(mP3.hasTransientState()); + assertFalse(mP2.hasTransientState()); + assertFalse(mP1.hasTransientState()); + } + + @UiThreadTest + @MediumTest + public void testSetTransientState4() throws Exception { + mP2.setHasTransientState(true); + mP3.setHasTransientState(true); + mP2.setHasTransientState(false); + mP3.setHasTransientState(false); + assertFalse(mP3.hasTransientState()); + assertFalse(mP2.hasTransientState()); + assertFalse(mP1.hasTransientState()); + } +} diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java index 0adac4cbe879b930cdaaf4dacc74254d77157237..d203465577dafe32d23f335c6840db12db82d56f 100644 --- a/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java +++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodSubtypeTest.java @@ -21,6 +21,7 @@ import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.SmallTest; import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder; +import java.util.Locale; import java.util.Objects; public class InputMethodSubtypeTest extends InstrumentationTestCase { @@ -47,6 +48,38 @@ public class InputMethodSubtypeTest extends InstrumentationTestCase { cloneViaParcel(cloneViaParcel(createDummySubtype(localeString))).hashCode()); } + @SmallTest + public void testLocaleObj_locale() { + final InputMethodSubtype usSubtype = createDummySubtype("en_US"); + Locale localeObject = usSubtype.getLocaleObject(); + assertEquals("en", localeObject.getLanguage()); + assertEquals("US", localeObject.getCountry()); + + // The locale object should be cached. + assertTrue(localeObject == usSubtype.getLocaleObject()); + } + + @SmallTest + public void testLocaleObj_languageTag() { + final InputMethodSubtype usSubtype = createDummySubtypeUsingLanguageTag("en-US"); + Locale localeObject = usSubtype.getLocaleObject(); + assertNotNull(localeObject); + assertEquals("en", localeObject.getLanguage()); + assertEquals("US", localeObject.getCountry()); + + // The locale object should be cached. + assertTrue(localeObject == usSubtype.getLocaleObject()); + } + + @SmallTest + public void testLocaleObj_emptyLocale() { + final InputMethodSubtype emptyLocaleSubtype = createDummySubtype(""); + assertNull(emptyLocaleSubtype.getLocaleObject()); + // It should continue returning null when called multiple times. + assertNull(emptyLocaleSubtype.getLocaleObject()); + assertNull(emptyLocaleSubtype.getLocaleObject()); + } + @SmallTest public void testLocaleString() throws Exception { // The locale string in InputMethodSubtype has accepted an arbitrary text actually, @@ -94,7 +127,7 @@ public class InputMethodSubtypeTest extends InstrumentationTestCase { } } - private static final InputMethodSubtype createDummySubtype(final String locale) { + private static InputMethodSubtype createDummySubtype(final String locale) { final InputMethodSubtypeBuilder builder = new InputMethodSubtypeBuilder(); return builder.setSubtypeNameResId(0) .setSubtypeIconResId(0) @@ -102,4 +135,14 @@ public class InputMethodSubtypeTest extends InstrumentationTestCase { .setIsAsciiCapable(true) .build(); } -} + + private static InputMethodSubtype createDummySubtypeUsingLanguageTag( + final String languageTag) { + final InputMethodSubtypeBuilder builder = new InputMethodSubtypeBuilder(); + return builder.setSubtypeNameResId(0) + .setSubtypeIconResId(0) + .setLanguageTag(languageTag) + .setIsAsciiCapable(true) + .build(); + } +} \ No newline at end of file diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java index 29447edfddd26620af0939b058b1f6cdd3615b15..2a6c22e21487f8bb09e49ad5d1f9237582db13e1 100644 --- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java +++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java @@ -32,9 +32,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import java.util.List; -import java.util.Locale; - @SmallTest @RunWith(AndroidJUnit4.class) public class TextClassificationManagerTest { @@ -176,20 +173,6 @@ public class TextClassificationManagerTest { "mailto:" + classifiedText)); } - @Test - public void testLanguageDetection() { - if (isTextClassifierDisabled()) return; - - String text = "This is a piece of English text"; - assertThat(mTcm.detectLanguages(text), isDetectedLanguage("en")); - - text = "Das ist ein deutscher Text"; - assertThat(mTcm.detectLanguages(text), isDetectedLanguage("de")); - - text = "これは日本語のテキストです"; - assertThat(mTcm.detectLanguages(text), isDetectedLanguage("ja")); - } - @Test public void testSetTextClassifier() { TextClassifier classifier = mock(TextClassifier.class); @@ -270,30 +253,4 @@ public class TextClassificationManagerTest { } }; } - - private static Matcher> isDetectedLanguage(final String language) { - return new BaseMatcher>() { - @Override - public boolean matches(Object o) { - if (o instanceof List) { - List languages = (List) o; - if (!languages.isEmpty()) { - Object o1 = languages.get(0); - if (o1 instanceof TextLanguage) { - TextLanguage lang = (TextLanguage) o1; - return lang.getLanguageCount() > 0 - && new Locale(language).getLanguage() - .equals(lang.getLanguage(0).getLanguage()); - } - } - } - return false; - } - - @Override - public void describeTo(Description description) { - description.appendValue(String.format("%s", language)); - } - }; - } } diff --git a/core/tests/coretests/src/android/widget/EditorCursorTest.java b/core/tests/coretests/src/android/widget/EditorCursorTest.java index 6d650ffaa66a0d2eed6bf28a5323d2cbbffda0d9..9186827b38f3c59e427678fb76c3e5baf12ecdcc 100644 --- a/core/tests/coretests/src/android/widget/EditorCursorTest.java +++ b/core/tests/coretests/src/android/widget/EditorCursorTest.java @@ -16,71 +16,68 @@ package android.widget; -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.SmallTest; -import android.view.Choreographer; -import android.view.ViewGroup; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.widget.espresso.TextViewAssertions.hasInsertionPointerOnLeft; import static android.widget.espresso.TextViewAssertions.hasInsertionPointerOnRight; + +import static junit.framework.Assert.fail; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.isEmptyString; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.Matchers.sameInstance; -public class EditorCursorTest extends ActivityInstrumentationTestCase2 { +import android.app.Activity; +import android.app.Instrumentation; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.MediumTest; +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; +import com.android.frameworks.coretests.R; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class EditorCursorTest { private final static String LTR_STRING = "aaaaaaaaaaaaaaaaaaaaaa"; private final static String LTR_HINT = "hint"; private final static String RTL_STRING = "مرحبا الروبوت مرحبا الروبوت مرحبا الروبوت"; private final static String RTL_HINT = "الروبوت"; private final static int CURSOR_BLINK_MS = 500; + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + TextViewActivity.class); + + private Instrumentation mInstrumentation; + private Activity mActivity; private EditText mEditText; - public EditorCursorTest() { - super(TextViewActivity.class); - } + @Before + public void setUp() throws Throwable { + mActivity = mActivityRule.getActivity(); + mInstrumentation = InstrumentationRegistry.getInstrumentation(); - @Override - protected void setUp() throws Exception { - super.setUp(); - mEditText = new EditText(getActivity()); - mEditText.setTextSize(30); - mEditText.setSingleLine(true); - mEditText.setLines(1); - mEditText.setPadding(15, 15, 15, 15); - ViewGroup.LayoutParams editTextLayoutParams = new ViewGroup.LayoutParams(200, - ViewGroup.LayoutParams.WRAP_CONTENT); - - mEditText.setLayoutParams(editTextLayoutParams); - - final FrameLayout layout = new FrameLayout(getActivity()); - ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT); - layout.setLayoutParams(layoutParams); - layout.addView(mEditText); - - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - getActivity().setContentView(layout); - } + mActivityRule.runOnUiThread(() -> { + mActivity.setContentView(R.layout.activity_editor_cursor_test); + mEditText = mActivity.findViewById(R.id.edittext); }); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); onView(sameInstance(mEditText)).perform(click()); } - @SmallTest - public void testCursorIsInViewBoundariesWhenOnRightForLtr() { + @Test + public void testCursorIsInViewBoundariesWhenOnRightForLtr() throws Throwable { // Asserts that when an EditText has LTR text, and cursor is at the end (right), // cursor is drawn to the right edge of the view setEditTextText(LTR_STRING, LTR_STRING.length()); @@ -88,8 +85,8 @@ public class EditorCursorTest extends ActivityInstrumentationTestCase2 { + if (textDirection != null) mEditText.setTextDirection(textDirection); + if (text != null) mEditText.setText(text); + if (hint != null) mEditText.setHint(hint); + if (selection != null) mEditText.setSelection(selection); }); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); // wait for cursor to be drawn. updateCursorPositions function is called during draw() and // only when cursor is visible during blink. final CountDownLatch latch = new CountDownLatch(1); - mEditText.postOnAnimationDelayed(new Runnable() { - @Override - public void run() { - latch.countDown(); - } - }, CURSOR_BLINK_MS); + mEditText.postOnAnimationDelayed(latch::countDown, CURSOR_BLINK_MS); try { assertThat("Problem while waiting for the cursor to blink", latch.await(10, TimeUnit.SECONDS), equalTo(true)); @@ -222,11 +211,12 @@ public class EditorCursorTest extends ActivityInstrumentationTestCase2{ +@RunWith(AndroidJUnit4.class) +@MediumTest +public class TextViewActivityMouseTest { - public TextViewActivityMouseTest() { - super(TextViewActivity.class); - } + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + TextViewActivity.class); - @Override - public void setUp() throws Exception { - super.setUp(); - getActivity(); + private Activity mActivity; + + @Before + public void setUp() { + mActivity = mActivityRule.getActivity(); + mActivity.getSystemService(TextClassificationManager.class) + .setTextClassifier(TextClassifier.NO_OP); } - @SmallTest - public void testSelectTextByDrag() throws Exception { + @Test + public void testSelectTextByDrag() { final String helloWorld = "Hello world!"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(helloWorld)); assertNoSelectionHandles(); @@ -88,22 +101,22 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< assertNoSelectionHandles(); } - @SmallTest - public void testSelectTextByDrag_reverse() throws Exception { + @Test + public void testSelectTextByDrag_reverse() { final String helloWorld = "Hello world!"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(helloWorld)); onView(withId(R.id.textview)).perform( mouseDragOnText( helloWorld.indexOf("ld!"), helloWorld.indexOf("llo"))); onView(withId(R.id.textview)).check(hasSelection("llo wor")); } - @SmallTest - public void testContextMenu() throws Exception { + @Test + public void testContextMenu() { final String text = "abc def ghi."; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); assertContextMenuIsNotDisplayed(); @@ -111,9 +124,26 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< mouseClickOnTextAtIndex(text.indexOf("d"), MotionEvent.BUTTON_SECONDARY)); assertContextMenuContainsItemDisabled( - getActivity().getString(com.android.internal.R.string.copy)); + mActivity.getString(com.android.internal.R.string.copy)); + assertContextMenuContainsItemDisabled( + mActivity.getString(com.android.internal.R.string.undo)); + + // Hide context menu. + pressBack(); + assertContextMenuIsNotDisplayed(); + + // type something to enable Undo + onView(withId(R.id.textview)).perform( + mouseClickOnTextAtIndex(text.indexOf("."))); + onView(withId(R.id.textview)).perform(typeText(" ")); + + onView(withId(R.id.textview)).perform( + mouseClickOnTextAtIndex(text.indexOf("d"), MotionEvent.BUTTON_SECONDARY)); + + assertContextMenuContainsItemDisabled( + mActivity.getString(com.android.internal.R.string.copy)); assertContextMenuContainsItemEnabled( - getActivity().getString(com.android.internal.R.string.undo)); + mActivity.getString(com.android.internal.R.string.undo)); // Hide context menu. pressBack(); @@ -125,9 +155,9 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< mouseClickOnTextAtIndex(text.indexOf("d"), MotionEvent.BUTTON_SECONDARY)); assertContextMenuContainsItemEnabled( - getActivity().getString(com.android.internal.R.string.copy)); + mActivity.getString(com.android.internal.R.string.copy)); assertContextMenuContainsItemEnabled( - getActivity().getString(com.android.internal.R.string.undo)); + mActivity.getString(com.android.internal.R.string.undo)); // Hide context menu. pressBack(); @@ -137,9 +167,9 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).perform( mouseClickOnTextAtIndex(text.indexOf("i"), MotionEvent.BUTTON_SECONDARY)); assertContextMenuContainsItemDisabled( - getActivity().getString(com.android.internal.R.string.copy)); + mActivity.getString(com.android.internal.R.string.copy)); assertContextMenuContainsItemEnabled( - getActivity().getString(com.android.internal.R.string.undo)); + mActivity.getString(com.android.internal.R.string.undo)); // Hide context menu. pressBack(); @@ -150,11 +180,11 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< // TODO: Add tests for suggestions } - @SmallTest - public void testDragAndDrop() throws Exception { + @Test + public void testDragAndDrop() { final String text = "abc def ghi."; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseDragOnText(text.indexOf("d"), text.indexOf("f") + 1)); @@ -167,11 +197,11 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex("abc ghi.def".length())); } - @SmallTest - public void testDragAndDrop_longClick() throws Exception { + @Test + public void testDragAndDrop_longClick() { final String text = "abc def ghi."; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseDragOnText(text.indexOf("d"), text.indexOf("f") + 1)); @@ -184,11 +214,11 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex("abc ghi.def".length())); } - @SmallTest - public void testSelectTextByLongClick() throws Exception { + @Test + public void testSelectTextByLongClick() { final String helloWorld = "Hello world!"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(helloWorld)); onView(withId(R.id.textview)).perform(mouseLongClickOnTextAtIndex(0)); onView(withId(R.id.textview)).check(hasSelection("Hello")); @@ -209,14 +239,15 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasSelection("!")); } - @SmallTest - public void testSelectTextByDoubleClick() throws Exception { - final String helloWorld = "Hello world!"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(helloWorld)); + @Test + public void testSelectTextByDoubleClick() { + final String helloWorld = "hello world!"; - onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex(0)); - onView(withId(R.id.textview)).check(hasSelection("Hello")); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(helloWorld)); + + onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex(1)); + onView(withId(R.id.textview)).check(hasSelection("hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("world"))); @@ -224,7 +255,7 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("llo"))); - onView(withId(R.id.textview)).check(hasSelection("Hello")); + onView(withId(R.id.textview)).check(hasSelection("hello")); onView(withId(R.id.textview)).perform(mouseDoubleClickOnTextAtIndex( helloWorld.indexOf("rld"))); @@ -234,52 +265,52 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasSelection("!")); } - @SmallTest - public void testSelectTextByDoubleClickAndDrag() throws Exception { + @Test + public void testSelectTextByDoubleClickAndDrag() { final String text = "abcd efg hijk lmn"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } - @SmallTest - public void testSelectTextByDoubleClickAndDrag_reverse() throws Exception { + @Test + public void testSelectTextByDoubleClickAndDrag_reverse() { final String text = "abcd efg hijk lmn"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseDoubleClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } - @SmallTest - public void testSelectTextByLongPressAndDrag() throws Exception { + @Test + public void testSelectTextByLongPressAndDrag() { final String text = "abcd efg hijk lmn"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("f"), text.indexOf("j"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } - @SmallTest - public void testSelectTextByLongPressAndDrag_reverse() throws Exception { + @Test + public void testSelectTextByLongPressAndDrag_reverse() { final String text = "abcd efg hijk lmn"; - onView(withId(R.id.textview)).perform(click()); - onView(withId(R.id.textview)).perform(typeTextIntoFocusedView(text)); + onView(withId(R.id.textview)).perform(mouseClick()); + onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( mouseLongClickAndDragOnText(text.indexOf("j"), text.indexOf("f"))); onView(withId(R.id.textview)).check(hasSelection("efg hijk")); } - @SmallTest - public void testSelectTextByTripleClick() throws Exception { + @Test + public void testSelectTextByTripleClick() { final StringBuilder builder = new StringBuilder(); builder.append("First paragraph.\n"); builder.append("Second paragraph."); @@ -290,7 +321,7 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< builder.append("Third paragraph."); final String text = builder.toString(); - onView(withId(R.id.textview)).perform(click()); + onView(withId(R.id.textview)).perform(mouseClick()); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( @@ -312,8 +343,8 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< text.substring(text.indexOf("Second"), text.indexOf("Third")))); } - @SmallTest - public void testSelectTextByTripleClickAndDrag() throws Exception { + @Test + public void testSelectTextByTripleClickAndDrag() { final StringBuilder builder = new StringBuilder(); builder.append("First paragraph.\n"); builder.append("Second paragraph."); @@ -324,7 +355,7 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< builder.append("Third paragraph."); final String text = builder.toString(); - onView(withId(R.id.textview)).perform(click()); + onView(withId(R.id.textview)).perform(mouseClick()); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( @@ -341,8 +372,8 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< onView(withId(R.id.textview)).check(hasSelection(text)); } - @SmallTest - public void testSelectTextByTripleClickAndDrag_reverse() throws Exception { + @Test + public void testSelectTextByTripleClickAndDrag_reverse() { final StringBuilder builder = new StringBuilder(); builder.append("First paragraph.\n"); builder.append("Second paragraph."); @@ -353,7 +384,7 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2< builder.append("Third paragraph."); final String text = builder.toString(); - onView(withId(R.id.textview)).perform(click()); + onView(withId(R.id.textview)).perform(mouseClick()); onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform( diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java index 5a7bca4d44f56607b09505605dd5c25248f4319e..56c72d2143477011acde3ffd5fac01cc5d0cb171 100644 --- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java +++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java @@ -16,77 +16,93 @@ package android.widget; +import static android.support.test.espresso.Espresso.onView; +import static android.support.test.espresso.action.ViewActions.click; +import static android.support.test.espresso.action.ViewActions.longClick; +import static android.support.test.espresso.action.ViewActions.pressKey; +import static android.support.test.espresso.action.ViewActions.replaceText; +import static android.support.test.espresso.assertion.ViewAssertions.matches; +import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; +import static android.support.test.espresso.matcher.ViewMatchers.withId; +import static android.support.test.espresso.matcher.ViewMatchers.withText; import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; import static android.widget.espresso.DragHandleUtils.onHandleView; +import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; +import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; +import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed; +import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsNotDisplayed; +import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarItemIndex; +import static android.widget.espresso.FloatingToolbarEspressoUtils.clickFloatingToolbarItem; +import static android.widget.espresso.FloatingToolbarEspressoUtils.sleepForFloatingToolbarPopup; +import static android.widget.espresso.TextViewActions.Handle; import static android.widget.espresso.TextViewActions.clickOnTextAtIndex; -import static android.widget.espresso.TextViewActions.doubleTapAndDragOnText; import static android.widget.espresso.TextViewActions.doubleClickOnTextAtIndex; +import static android.widget.espresso.TextViewActions.doubleTapAndDragOnText; import static android.widget.espresso.TextViewActions.dragHandle; -import static android.widget.espresso.TextViewActions.Handle; import static android.widget.espresso.TextViewActions.longPressAndDragOnText; import static android.widget.espresso.TextViewActions.longPressOnTextAtIndex; +import static android.widget.espresso.TextViewAssertions.doesNotHaveStyledText; import static android.widget.espresso.TextViewAssertions.hasInsertionPointerAtIndex; import static android.widget.espresso.TextViewAssertions.hasSelection; -import static android.widget.espresso.TextViewAssertions.doesNotHaveStyledText; -import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarItemIndex; -import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsDisplayed; -import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarIsNotDisplayed; -import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; -import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; -import static android.widget.espresso.FloatingToolbarEspressoUtils.clickFloatingToolbarItem; -import static android.widget.espresso.FloatingToolbarEspressoUtils.sleepForFloatingToolbarPopup; -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.action.ViewActions.click; -import static android.support.test.espresso.action.ViewActions.longClick; -import static android.support.test.espresso.action.ViewActions.pressKey; -import static android.support.test.espresso.action.ViewActions.replaceText; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; -import static android.support.test.espresso.matcher.ViewMatchers.withId; -import static android.support.test.espresso.matcher.ViewMatchers.withText; + +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.is; +import android.app.Activity; +import android.app.Instrumentation; import android.content.ClipData; import android.content.ClipboardManager; -import android.support.test.espresso.NoMatchingViewException; -import android.support.test.espresso.ViewAssertion; +import android.support.test.InstrumentationRegistry; +import android.support.test.espresso.action.EspressoKey; +import android.support.test.filters.MediumTest; +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; +import android.text.InputType; +import android.text.Selection; +import android.text.Spannable; import android.view.ActionMode; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.textclassifier.TextClassificationManager; import android.view.textclassifier.TextClassifier; import android.widget.espresso.CustomViewActions.RelativeCoordinatesProvider; -import android.support.test.espresso.action.EspressoKey; -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.MediumTest; -import android.text.Selection; -import android.text.Spannable; -import android.text.InputType; -import android.view.KeyEvent; - import com.android.frameworks.coretests.R; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + /** * Tests the TextView widget from an Activity */ +@RunWith(AndroidJUnit4.class) @MediumTest -public class TextViewActivityTest extends ActivityInstrumentationTestCase2{ +public class TextViewActivityTest { - public TextViewActivityTest() { - super(TextViewActivity.class); - } + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + TextViewActivity.class); + + private Activity mActivity; + private Instrumentation mInstrumentation; - @Override - public void setUp() throws Exception { - super.setUp(); - getActivity().getSystemService(TextClassificationManager.class) + @Before + public void setUp() { + mActivity = mActivityRule.getActivity(); + mInstrumentation = InstrumentationRegistry.getInstrumentation(); + mActivity.getSystemService(TextClassificationManager.class) .setTextClassifier(TextClassifier.NO_OP); } - public void testTypedTextIsOnScreen() throws Exception { + @Test + public void testTypedTextIsOnScreen() { final String helloWorld = "Hello world!"; // We use replaceText instead of typeTextIntoFocusedView to input text to avoid // unintentional interactions with software keyboard. @@ -94,8 +110,8 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 { + final TextView textView = mActivity.findViewById(R.id.textview); + textView.setTextDirection(TextView.TEXT_DIRECTION_FIRST_STRONG_LTR); + textView.setInputType(InputType.TYPE_CLASS_TEXT); + textView.setSingleLine(true); + textView.setHint("الروبوت"); }); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); onView(withId(R.id.textview)).perform(replaceText("test")); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(1)); - clickFloatingToolbarItem( - getActivity().getString(com.android.internal.R.string.cut)); + clickFloatingToolbarItem(mActivity.getString(com.android.internal.R.string.cut)); onView(withId(R.id.textview)).perform(longClick()); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); } - public void testToolbarAndInsertionHandle() throws Exception { + @Test + public void testToolbarAndInsertionHandle() { final String text = "text"; onView(withId(R.id.textview)).perform(replaceText(text)); onView(withId(R.id.textview)).perform(clickOnTextAtIndex(text.length())); @@ -293,14 +319,15 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 Selection.setSelection((Spannable) textView.getText(), 0, 3)); - getInstrumentation().waitForIdleSync(); + mActivityRule.runOnUiThread( + () -> Selection.setSelection((Spannable) textView.getText(), 0, 3)); + mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); // Don't automatically start action mode. assertFloatingToolbarIsNotDisplayed(); @@ -624,25 +662,29 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 Selection.setSelection((Spannable) textView.getText(), 0, 3)); - getInstrumentation().waitForIdleSync(); + mActivityRule.runOnUiThread( + () -> Selection.setSelection((Spannable) textView.getText(), 0, 3)); + mInstrumentation.waitForIdleSync(); sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); assertFloatingToolbarContainsItem( - getActivity().getString(com.android.internal.R.string.selectAll)); + mActivity.getString(com.android.internal.R.string.selectAll)); // Make sure that "Select All" is no longer included when the entire text is selected by // API. - textView.post( + mActivityRule.runOnUiThread( () -> Selection.setSelection((Spannable) textView.getText(), 0, text.length())); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); + sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); assertFloatingToolbarDoesNotContainItem( - getActivity().getString(com.android.internal.R.string.selectAll)); + mActivity.getString(com.android.internal.R.string.selectAll)); // Make sure that shrinking the selection range to cursor (an empty range) by API // terminates selection action mode and does not trigger the insertion action mode. - textView.post(() -> Selection.setSelection((Spannable) textView.getText(), 0)); - getInstrumentation().waitForIdleSync(); + mActivityRule.runOnUiThread( + () -> Selection.setSelection((Spannable) textView.getText(), 0)); + mInstrumentation.waitForIdleSync(); + sleepForFloatingToolbarPopup(); assertFloatingToolbarIsNotDisplayed(); // Make sure that user click can trigger the insertion action mode. @@ -652,28 +694,32 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 Selection.setSelection((Spannable) textView.getText(), 0)); - getInstrumentation().waitForIdleSync(); + mActivityRule.runOnUiThread( + () -> Selection.setSelection((Spannable) textView.getText(), 0)); + mInstrumentation.waitForIdleSync(); + sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); assertFloatingToolbarDoesNotContainItem( - getActivity().getString(com.android.internal.R.string.copy)); + mActivity.getString(com.android.internal.R.string.copy)); // Make sure that selection action mode is started after selection is created by API when // insertion action mode is active. - textView.post( + mActivityRule.runOnUiThread( () -> Selection.setSelection((Spannable) textView.getText(), 1, text.length())); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); + sleepForFloatingToolbarPopup(); assertFloatingToolbarIsDisplayed(); assertFloatingToolbarContainsItem( - getActivity().getString(com.android.internal.R.string.copy)); + mActivity.getString(com.android.internal.R.string.copy)); } - public void testTransientState() throws Exception { + @Test + public void testTransientState() throws Throwable { final String text = "abc def"; onView(withId(R.id.textview)).perform(replaceText(text)); - final TextView textView = (TextView) getActivity().findViewById(R.id.textview); + final TextView textView = mActivity.findViewById(R.id.textview); assertFalse(textView.hasTransientState()); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf('b'))); @@ -682,22 +728,24 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 Selection.setSelection((Spannable) textView.getText(), 0, text.length())); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); + // hasTransientState should return false when selection is created by API. assertFalse(textView.hasTransientState()); } - public void testResetMenuItemTitle() throws Exception { - getActivity().getSystemService(TextClassificationManager.class).setTextClassifier(null); - final TextView textView = (TextView) getActivity().findViewById(R.id.textview); + @Test + public void testResetMenuItemTitle() throws Throwable { + mActivity.getSystemService(TextClassificationManager.class).setTextClassifier(null); + final TextView textView = mActivity.findViewById(R.id.textview); final int itemId = 1; final String title1 = " AFIGBO"; final int index = title1.indexOf('I'); final String title2 = title1.substring(index); final String[] title = new String[]{title1}; - textView.post(() -> textView.setCustomSelectionActionModeCallback( + mActivityRule.runOnUiThread(() -> textView.setCustomSelectionActionModeCallback( new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { @@ -720,6 +768,8 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 textView.setCustomSelectionActionModeCallback( + @Test + public void testAssistItemIsAtIndexZero() throws Throwable { + useSystemDefaultTextClassifier(); + final TextView textView = mActivity.findViewById(R.id.textview); + mActivityRule.runOnUiThread(() -> textView.setCustomSelectionActionModeCallback( new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { @@ -761,6 +812,7 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 { + textView.setInputType( + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + }); + mInstrumentation.waitForIdleSync(); + final String password = "afigbo@android.com"; + + onView(withId(R.id.textview)).perform(replaceText(password)); + onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(password.indexOf('@'))); + sleepForFloatingToolbarPopup(); + assertFloatingToolbarDoesNotContainItem(android.R.id.textAssist); + } + + @Test + public void testPastePlainText_menuAction() { initializeClipboardWithText(TextStyle.STYLED); onView(withId(R.id.textview)).perform(replaceText("")); onView(withId(R.id.textview)).perform(longClick()); sleepForFloatingToolbarPopup(); clickFloatingToolbarItem( - getActivity().getString(com.android.internal.R.string.paste_as_plain_text)); - getInstrumentation().waitForIdleSync(); + mActivity.getString(com.android.internal.R.string.paste_as_plain_text)); + mInstrumentation.waitForIdleSync(); onView(withId(R.id.textview)).check(matches(withText("styledtext"))); onView(withId(R.id.textview)).check(doesNotHaveStyledText()); } + @Test public void testPastePlainText_noMenuItemForPlainText() { initializeClipboardWithText(TextStyle.PLAIN); @@ -791,7 +862,11 @@ public class TextViewActivityTest extends ActivityInstrumentationTestCase2 - getActivity().getSystemService(ClipboardManager.class).setPrimaryClip( clip)); - getInstrumentation().waitForIdleSync(); + mActivity.getWindow().getDecorView().post(() -> + mActivity.getSystemService(ClipboardManager.class).setPrimaryClip(clip)); + mInstrumentation.waitForIdleSync(); } private enum TextStyle { diff --git a/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java b/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java index c25df7c1b44e4569f47c2706860114b04b8cbef0..cf173fb78a32c4baf33d73a2f15d35a669dae4ed 100644 --- a/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java +++ b/core/tests/coretests/src/android/widget/TextViewPerformanceTest.java @@ -20,15 +20,20 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.MediumTest; -import android.test.suitebuilder.annotation.SmallTest; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.MediumTest; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; import android.text.SpannedString; import android.view.View; import android.view.ViewGroup; -import android.widget.TextView; -public class TextViewPerformanceTest extends AndroidTestCase { +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +public class TextViewPerformanceTest { private String mString = "The quick brown fox"; private Canvas mCanvas; @@ -36,16 +41,16 @@ public class TextViewPerformanceTest extends AndroidTestCase { private Paint mPaint; private PerformanceLabelView mLabelView; - @Override - protected void setUp() throws Exception { - super.setUp(); - + @Before + public void setUp() { Bitmap mBitmap = Bitmap.createBitmap(320, 240, Bitmap.Config.RGB_565); mCanvas = new Canvas(mBitmap); ViewGroup.LayoutParams p = new ViewGroup.LayoutParams(320, 240); - mLabelView = new PerformanceLabelView(mContext); + final Context context = InstrumentationRegistry.getContext(); + + mLabelView = new PerformanceLabelView(context); mLabelView.setText(mString); mLabelView.measure(View.MeasureSpec.AT_MOST | 320, View.MeasureSpec.AT_MOST | 240); mLabelView.mySetFrame(320, 240); @@ -54,7 +59,7 @@ public class TextViewPerformanceTest extends AndroidTestCase { mPaint = new Paint(); mCanvas.save(); - mTextView = new PerformanceTextView(mContext); + mTextView = new PerformanceTextView(context); mTextView.setLayoutParams(p); mTextView.setText(mString); mTextView.mySetFrame(320, 240); @@ -62,7 +67,8 @@ public class TextViewPerformanceTest extends AndroidTestCase { } @MediumTest - public void testDrawTextViewLine() throws Exception { + @Test + public void testDrawTextViewLine() { mTextView.myDraw(mCanvas); mTextView.myDraw(mCanvas); mTextView.myDraw(mCanvas); @@ -76,7 +82,8 @@ public class TextViewPerformanceTest extends AndroidTestCase { } @SmallTest - public void testSpan() throws Exception { + @Test + public void testSpan() { CharSequence charSeq = new SpannedString(mString); mTextView.setText(charSeq); @@ -93,12 +100,14 @@ public class TextViewPerformanceTest extends AndroidTestCase { } @SmallTest - public void testCanvasDrawText() throws Exception { + @Test + public void testCanvasDrawText() { mCanvas.drawText(mString, 30, 30, mPaint); } @SmallTest - public void testLabelViewDraw() throws Exception { + @Test + public void testLabelViewDraw() { mLabelView.myDraw(mCanvas); } diff --git a/core/tests/coretests/src/android/widget/TextViewTest.java b/core/tests/coretests/src/android/widget/TextViewTest.java index 8989462a916d7620ea8b0a032b134017fcd7446a..1a1244f0a7d147c64f823baceeab6d87a8a3083f 100644 --- a/core/tests/coretests/src/android/widget/TextViewTest.java +++ b/core/tests/coretests/src/android/widget/TextViewTest.java @@ -16,41 +16,57 @@ package android.widget; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; + import android.app.Activity; +import android.app.Instrumentation; import android.content.Intent; import android.graphics.Paint; import android.platform.test.annotations.Presubmit; -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.SmallTest; +import android.support.test.InstrumentationRegistry; +import android.support.test.annotation.UiThreadTest; +import android.support.test.filters.MediumTest; +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; import android.text.GetChars; import android.text.Layout; import android.text.Selection; import android.text.Spannable; -import android.util.Log; import android.view.View; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + import java.util.Locale; /** * TextViewTest tests {@link TextView}. */ -public class TextViewTest extends ActivityInstrumentationTestCase2 { - private static final String TAG = "TextViewTest"; +@RunWith(AndroidJUnit4.class) +@MediumTest +public class TextViewTest { + @Rule + public ActivityTestRule mActivityRule = new ActivityTestRule<>( + TextViewActivity.class); + private Instrumentation mInstrumentation; + private Activity mActivity; private TextView mTextView; - public TextViewTest() { - super(TextViewActivity.class); + @Before + public void setup() { + mActivity = mActivityRule.getActivity(); + mInstrumentation = InstrumentationRegistry.getInstrumentation(); } - @SmallTest @Presubmit - public void testArray() throws Exception { - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - mTextView = new TextView(getActivity()); - } - }); - getInstrumentation().waitForIdleSync(); + @UiThreadTest + @Test + public void testArray() { + mTextView = new TextView(mActivity); char[] c = new char[] { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' }; @@ -78,15 +94,10 @@ public class TextViewTest extends ActivityInstrumentationTestCase2 mTextView = new TextView(mActivity)); + mInstrumentation.waitForIdleSync(); CharSequence originalText = "This is some text."; mTextView.setText(originalText, TextView.BufferType.SPANNABLE); assertEquals(originalText, mTextView.getText().toString()); @@ -94,30 +105,23 @@ public class TextViewTest extends ActivityInstrumentationTestCase2 { + CharSequence newText = "Text is replaced."; + Intent data = new Intent(); + data.putExtra(Intent.EXTRA_PROCESS_TEXT, newText); + mTextView.onActivityResult(TextView.PROCESS_TEXT_REQUEST_CODE, Activity.RESULT_OK, + data); }); - getInstrumentation().waitForIdleSync(); + mInstrumentation.waitForIdleSync(); // This is a TextView, which can't be modified. Hence no change should have been made. assertEquals(originalText, mTextView.getText().toString()); } - @SmallTest - public void testProcessTextActivityResultEditable() { - getActivity().runOnUiThread(new Runnable() { - @Override - public void run() { - mTextView = new EditText(getActivity()); - } - }); - getInstrumentation().waitForIdleSync(); + @Test + public void testProcessTextActivityResultEditable() throws Throwable { + mActivityRule.runOnUiThread(() -> mTextView = new EditText(mActivity)); + mInstrumentation.waitForIdleSync(); CharSequence originalText = "This is some text."; mTextView.setText(originalText, TextView.BufferType.SPANNABLE); assertEquals(originalText, mTextView.getText().toString()); @@ -132,15 +136,10 @@ public class TextViewTest extends ActivityInstrumentationTestCase2 mTextView = new EditText(mActivity)); + mInstrumentation.waitForIdleSync(); CharSequence originalText = "This is some text."; mTextView.setText(originalText, TextView.BufferType.SPANNABLE); assertEquals(originalText, mTextView.getText().toString()); @@ -156,15 +155,10 @@ public class TextViewTest extends ActivityInstrumentationTestCase2 mTextView = new EditText(mActivity)); + mInstrumentation.waitForIdleSync(); CharSequence originalText = "This is some text."; mTextView.setText(originalText, TextView.BufferType.SPANNABLE); assertEquals(originalText, mTextView.getText().toString()); @@ -176,13 +170,14 @@ public class TextViewTest extends ActivityInstrumentationTestCase2() { + @Override + public boolean matchesSafely(View view) { + return !hasMenuItemWithSpecifiedId(view); + } + + @Override + public void describeTo(Description description) {} + + private boolean hasMenuItemWithSpecifiedId(View view) { + if (view.getTag() instanceof MenuItem + && ((MenuItem) view.getTag()).getItemId() == menuItemId) { + return true; + } else if (view instanceof ViewGroup) { + ViewGroup viewGroup = (ViewGroup) view; + for (int i = 0; i < viewGroup.getChildCount(); i++) { + if (hasMenuItemWithSpecifiedId(viewGroup.getChildAt(i))) { + return true; + } + } + } + return false; + } + })); + } + /** * Click specified item on the floating tool bar. * diff --git a/core/tests/coretests/src/android/widget/espresso/TextViewActions.java b/core/tests/coretests/src/android/widget/espresso/TextViewActions.java index 335d021efd14b1694e226117a2ef1a99364ff7fe..b4c547e1fbb7bfe25a0151d5aa9403ea8491bcb7 100644 --- a/core/tests/coretests/src/android/widget/espresso/TextViewActions.java +++ b/core/tests/coretests/src/android/widget/espresso/TextViewActions.java @@ -17,10 +17,12 @@ package android.widget.espresso; import static android.support.test.espresso.action.ViewActions.actionWithAssertions; + import android.graphics.Rect; import android.support.test.espresso.PerformException; import android.support.test.espresso.ViewAction; import android.support.test.espresso.action.CoordinatesProvider; +import android.support.test.espresso.action.GeneralLocation; import android.support.test.espresso.action.Press; import android.support.test.espresso.action.Tap; import android.support.test.espresso.util.HumanReadables; @@ -53,6 +55,20 @@ public final class TextViewActions { new ViewClickAction(Tap.SINGLE, new TextCoordinates(index), Press.FINGER)); } + + /** + * Returns an action that single-clicks by mouse on the View.
    + *
    + * View constraints: + *

      + *
    • must be a View displayed on screen + *
        + */ + public static ViewAction mouseClick() { + return actionWithAssertions(new MouseClickAction(Tap.SINGLE, GeneralLocation.VISIBLE_CENTER, + MotionEvent.BUTTON_PRIMARY)); + } + /** * Returns an action that clicks by mouse on text at an index on the TextView.
        *
        diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java index c21c3be2bcbe13dbc321f897ff441b12d8437681..c611a01c6e1611831726644f046bf64669b6046e 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsBackgroundStatsTest.java @@ -22,6 +22,7 @@ import android.os.BatteryStats; import android.os.WorkSource; import android.support.test.filters.SmallTest; import android.util.ArrayMap; +import android.view.Display; import junit.framework.TestCase; @@ -44,7 +45,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off-battery, non-existent clocks.realtime = clocks.uptime = 10; cur = clocks.realtime * 1000; - bi.updateTimeBasesLocked(false, false, cur, cur); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, cur, cur); // off battery assertFalse(bgtb.isRunning()); assertEquals(0, bgtb.computeRealtime(cur, STATS_SINCE_CHARGED)); @@ -65,7 +66,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On-battery, background clocks.realtime = clocks.uptime = 303; cur = clocks.realtime * 1000; - bi.updateTimeBasesLocked(true, false, cur, cur); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, cur, cur); // on battery // still in ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND assertTrue(bgtb.isRunning()); assertEquals(0, bgtb.computeRealtime(cur, STATS_SINCE_CHARGED)); @@ -73,7 +74,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On-battery, background - but change screen state clocks.realtime = clocks.uptime = 409; cur = clocks.realtime * 1000; - bi.updateTimeBasesLocked(true, true, cur, cur); // on battery (again) + bi.updateTimeBasesLocked(true, Display.STATE_OFF, cur, cur); // on battery (again) assertTrue(bgtb.isRunning()); assertEquals(106_000, bgtb.computeRealtime(cur, STATS_SINCE_CHARGED)); @@ -87,7 +88,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off-battery, foreground clocks.realtime = clocks.uptime = 530; cur = clocks.realtime * 1000; - bi.updateTimeBasesLocked(false, false, cur, cur); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, cur, cur); // off battery bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); assertFalse(bgtb.isRunning()); assertEquals(227_000, bgtb.computeRealtime(cur, STATS_SINCE_CHARGED)); @@ -112,17 +113,17 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // battery=off, screen=off, background=off cur = (clocks.realtime = clocks.uptime = 100) * 1000; bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); - bi.updateTimeBasesLocked(false, false, cur, cur); + bi.updateTimeBasesLocked(false, Display.STATE_ON, cur, cur); assertFalse(bgtb.isRunning()); // battery=on, screen=off, background=off cur = (clocks.realtime = clocks.uptime = 200) * 1000; - bi.updateTimeBasesLocked(true, false, cur, cur); + bi.updateTimeBasesLocked(true, Display.STATE_ON, cur, cur); assertFalse(bgtb.isRunning()); // battery=on, screen=on, background=off cur = (clocks.realtime = clocks.uptime = 300) * 1000; - bi.updateTimeBasesLocked(true, true, cur, cur); + bi.updateTimeBasesLocked(true, Display.STATE_OFF, cur, cur); assertFalse(bgtb.isRunning()); // battery=on, screen=on, background=on @@ -133,12 +134,12 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // battery=on, screen=off, background=on cur = (clocks.realtime = clocks.uptime = 550) * 1000; - bi.updateTimeBasesLocked(true, false, cur, cur); + bi.updateTimeBasesLocked(true, Display.STATE_ON, cur, cur); assertFalse(bgtb.isRunning()); // battery=off, screen=off, background=on cur = (clocks.realtime = clocks.uptime = 660) * 1000; - bi.updateTimeBasesLocked(false, false, cur, cur); + bi.updateTimeBasesLocked(false, Display.STATE_ON, cur, cur); assertFalse(bgtb.isRunning()); // battery=off, screen=off, background=off @@ -157,7 +158,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On battery curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // on battery // App in foreground bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); @@ -171,7 +172,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off battery curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(false, false, curr, curr); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // off battery // Stop timer curr = 1000 * (clocks.realtime = clocks.uptime = 409); @@ -200,7 +201,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On battery curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // on battery // App in foreground bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); @@ -215,7 +216,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off battery curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(false, false, curr, curr); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // off battery // Start timer (unoptimized) curr = 1000 * (clocks.realtime = clocks.uptime = 1000); @@ -223,7 +224,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On battery curr = 1000 * (clocks.realtime = clocks.uptime = 2001); - bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // on battery // Move to foreground curr = 1000 * (clocks.realtime = clocks.uptime = 3004); @@ -270,7 +271,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On battery curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // on battery // App in foreground bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); @@ -280,7 +281,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Stop timer curr = 1000 * (clocks.realtime = clocks.uptime = 161); - bi.noteJobFinishLocked(jobName, UID); + bi.noteJobFinishLocked(jobName, UID, 0); // Move to background curr = 1000 * (clocks.realtime = clocks.uptime = 202); @@ -292,11 +293,11 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off battery curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(false, false, curr, curr); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // off battery // Stop timer curr = 1000 * (clocks.realtime = clocks.uptime = 409); - bi.noteJobFinishLocked(jobName, UID); + bi.noteJobFinishLocked(jobName, UID, 0); // Test curr = 1000 * (clocks.realtime = clocks.uptime = 657); @@ -319,7 +320,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { final String jobName2 = "second_job"; bi.noteJobStartLocked(jobName2, UID); assertEquals(2, bi.getUidStats().get(UID).getJobStats().size()); - bi.noteJobFinishLocked(jobName2, UID); + bi.noteJobFinishLocked(jobName2, UID, 0); } @SmallTest @@ -331,7 +332,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // On battery curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); // on battery + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // on battery // App in foreground bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); @@ -353,7 +354,7 @@ public class BatteryStatsBackgroundStatsTest extends TestCase { // Off battery curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(false, false, curr, curr); // off battery + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // off battery // Stop timer curr = 1000 * (clocks.realtime = clocks.uptime = 409); diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java index a1b05cdbd9d8ff71be75c07621ad037947329928..19dab7961401f58239ab140c7d7c8f37c09f4662 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsDurationTimerTest.java @@ -134,7 +134,8 @@ public class BatteryStatsDurationTimerTest extends TestCase { null, BatteryStats.WAKE_TYPE_PARTIAL, null, timeBase); summary.startRunningLocked(3100); summary.readSummaryFromParcelLocked(summaryParcel); - // The new one shouldn't be running, and therefore 0 for current time + // The new one shouldn't be running, and therefore 0 for current time if using + // summary parcel assertFalse(summary.isRunningLocked()); assertEquals(0, summary.getCurrentDurationMsLocked(6300)); // The new one should have the max and total durations that we had when we wrote it @@ -149,10 +150,10 @@ public class BatteryStatsDurationTimerTest extends TestCase { // Read full - Should be the same as the summary as far as DurationTimer is concerned. final BatteryStatsImpl.DurationTimer full = new BatteryStatsImpl.DurationTimer(clocks, null, BatteryStats.WAKE_TYPE_PARTIAL, null, timeBase, fullParcel); - // The new one shouldn't be running, and therefore 0 for current time + // The new one shouldn't be running assertFalse(full.isRunningLocked()); - assertEquals(0, full.getCurrentDurationMsLocked(6300)); - // The new one should have the max and total durations that we had when we wrote it + // The new one should have the current, max and total durations that we had when we wrote it + assertEquals(1200, full.getCurrentDurationMsLocked(6300)); assertEquals(1200, full.getMaxDurationMsLocked(6301)); assertEquals(1200, full.getTotalDurationMsLocked(6302)); diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java index ed54f53037504a4c793bdba71dc930c3b7712dd3..461d537e86f9a54d7ded7820f75f9b34e79f8221 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsNoteTest.java @@ -19,14 +19,30 @@ import static android.os.BatteryStats.STATS_SINCE_CHARGED; import static android.os.BatteryStats.WAKE_TYPE_PARTIAL; import android.app.ActivityManager; +import android.os.BatteryManager; import android.os.BatteryStats; import android.os.WorkSource; import android.support.test.filters.SmallTest; +import android.view.Display; import junit.framework.TestCase; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Test various BatteryStatsImpl noteStart methods. + * + * Build/Install/Run: bit FrameworksCoreTests:com.android.internal.os.BatteryStatsNoteTest + * + * Alternatively, + * Build: m FrameworksCoreTests + * Install: adb install -r \ + * ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk + * Run: adb shell am instrument -e class com.android.internal.os.BatteryStatsNoteTest -w \ + * com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner */ public class BatteryStatsNoteTest extends TestCase{ private static final int UID = 10500; @@ -36,7 +52,7 @@ public class BatteryStatsNoteTest extends TestCase{ @SmallTest public void testNoteBluetoothScanResultLocked() throws Exception { MockBatteryStatsImpl bi = new MockBatteryStatsImpl(new MockClocks()); - bi.updateTimeBasesLocked(true, true, 0, 0); + bi.updateTimeBasesLocked(true, Display.STATE_OFF, 0, 0); bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_TOP); bi.noteBluetoothScanResultsFromSourceLocked(WS, 1); @@ -68,7 +84,7 @@ public class BatteryStatsNoteTest extends TestCase{ int pid = 10; String name = "name"; - bi.updateTimeBasesLocked(true, true, 0, 0); + bi.updateTimeBasesLocked(true, Display.STATE_OFF, 0, 0); bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_TOP); bi.getUidStatsLocked(UID).noteStartWakeLocked(pid, name, WAKE_TYPE_PARTIAL, clocks.realtime); @@ -84,4 +100,137 @@ public class BatteryStatsNoteTest extends TestCase{ assertEquals(220_000, actualTime); assertEquals(120_000, bgTime); } + + + /** Test BatteryStatsImpl.noteUidProcessStateLocked. */ + @SmallTest + public void testNoteUidProcessStateLocked() throws Exception { + final MockClocks clocks = new MockClocks(); + MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); + + // map of ActivityManager process states and how long to simulate run time in each state + Map stateRuntimeMap = new HashMap(); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP, 1111); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 1234); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 2468); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TOP_SLEEPING, 7531); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND, 4455); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 1337); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_BACKUP, 90210); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_HEAVY_WEIGHT, 911); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_SERVICE, 404); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_RECEIVER, 31459); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_HOME, 1123); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_LAST_ACTIVITY, 5813); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY, 867); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT, 5309); + stateRuntimeMap.put(ActivityManager.PROCESS_STATE_CACHED_EMPTY, 42); + + bi.updateTimeBasesLocked(true, Display.STATE_ON, 0, 0); + + for (Map.Entry entry : stateRuntimeMap.entrySet()) { + bi.noteUidProcessStateLocked(UID, entry.getKey()); + clocks.realtime += entry.getValue(); + clocks.uptime = clocks.realtime; + } + + long actualRunTimeUs; + long expectedRunTimeMs; + long elapsedTimeUs = clocks.realtime * 1000; + BatteryStats.Uid uid = bi.getUidStats().get(UID); + + // compare runtime of process states to the Uid process states they map to + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP, elapsedTimeUs, + STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_TOP); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE, + elapsedTimeUs, STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get( + ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_TOP_SLEEPING, + elapsedTimeUs, STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_TOP_SLEEPING); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_FOREGROUND, + elapsedTimeUs, STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, + elapsedTimeUs, STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_BACKUP) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_HEAVY_WEIGHT) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_SERVICE) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_RECEIVER); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + + actualRunTimeUs = uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_CACHED, + elapsedTimeUs, STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_HOME) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_LAST_ACTIVITY) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_CACHED_ACTIVITY_CLIENT) + + stateRuntimeMap.get(ActivityManager.PROCESS_STATE_CACHED_EMPTY); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + + // Special check for foreground service timer + actualRunTimeUs = uid.getForegroundServiceTimer().getTotalTimeLocked(elapsedTimeUs, + STATS_SINCE_CHARGED); + expectedRunTimeMs = stateRuntimeMap.get(ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE); + assertEquals(expectedRunTimeMs * 1000, actualRunTimeUs); + } + + /** Test BatteryStatsImpl.updateTimeBasesLocked. */ + @SmallTest + public void testUpdateTimeBasesLocked() throws Exception { + final MockClocks clocks = new MockClocks(); // holds realtime and uptime in ms + MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); + + bi.updateTimeBasesLocked(false, Display.STATE_OFF, 0, 0); + assertFalse(bi.getOnBatteryTimeBase().isRunning()); + bi.updateTimeBasesLocked(false, Display.STATE_DOZE, 10, 10); + assertFalse(bi.getOnBatteryTimeBase().isRunning()); + bi.updateTimeBasesLocked(false, Display.STATE_ON, 20, 20); + assertFalse(bi.getOnBatteryTimeBase().isRunning()); + + bi.updateTimeBasesLocked(true, Display.STATE_ON, 30, 30); + assertTrue(bi.getOnBatteryTimeBase().isRunning()); + assertFalse(bi.getOnBatteryScreenOffTimeBase().isRunning()); + bi.updateTimeBasesLocked(true, Display.STATE_DOZE, 40, 40); + assertTrue(bi.getOnBatteryScreenOffTimeBase().isRunning()); + bi.updateTimeBasesLocked(true, Display.STATE_OFF, 40, 40); + assertTrue(bi.getOnBatteryScreenOffTimeBase().isRunning()); + } + + /** Test BatteryStatsImpl.noteScreenStateLocked. */ + @SmallTest + public void testNoteScreenStateLocked() throws Exception { + final MockClocks clocks = new MockClocks(); // holds realtime and uptime in ms + MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); + + bi.updateTimeBasesLocked(true, Display.STATE_ON, 0, 0); + bi.noteScreenStateLocked(Display.STATE_ON); + bi.noteScreenStateLocked(Display.STATE_DOZE); + assertTrue(bi.getOnBatteryScreenOffTimeBase().isRunning()); + assertEquals(bi.getScreenState(), Display.STATE_DOZE); + bi.noteScreenStateLocked(Display.STATE_ON); + assertFalse(bi.getOnBatteryScreenOffTimeBase().isRunning()); + assertEquals(bi.getScreenState(), Display.STATE_ON); + bi.noteScreenStateLocked(Display.STATE_OFF); + assertTrue(bi.getOnBatteryScreenOffTimeBase().isRunning()); + assertEquals(bi.getScreenState(), Display.STATE_OFF); + } + } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java index 8fd4e31105694ae514a25f96343dc3e34bb9adaf..a751f9060588fd01ade10a60e113bf8bb114a8ba 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsSensorTest.java @@ -18,6 +18,7 @@ package com.android.internal.os; import android.app.ActivityManager; import android.os.BatteryStats; import android.support.test.filters.SmallTest; +import android.view.Display; import junit.framework.TestCase; @@ -74,7 +75,7 @@ public class BatteryStatsSensorTest extends TestCase { // Plugged-in (battery=off, sensor=off) curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(false, false, curr, curr); + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // Start sensor (battery=off, sensor=on) @@ -110,7 +111,7 @@ public class BatteryStatsSensorTest extends TestCase { // Unplugged (battery=on, sensor=off) curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // Start sensor (battery=on, sensor=on) curr = 1000 * (clocks.realtime = clocks.uptime = 200); @@ -145,7 +146,7 @@ public class BatteryStatsSensorTest extends TestCase { // On battery (battery=on, sensor=off) curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(true, false, curr, curr); + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); bi.noteUidProcessStateLocked(UID, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND); // Start sensor (battery=on, sensor=on) @@ -154,7 +155,7 @@ public class BatteryStatsSensorTest extends TestCase { // Off battery (battery=off, sensor=on) curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(false, false, curr, curr); + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // Stop sensor while off battery (battery=off, sensor=off) curr = 1000 * (clocks.realtime = clocks.uptime = 409); @@ -191,7 +192,7 @@ public class BatteryStatsSensorTest extends TestCase { // Plugged-in (battery=off, sensor=off) curr = 1000 * (clocks.realtime = clocks.uptime = 100); - bi.updateTimeBasesLocked(false, false, curr, curr); + bi.updateTimeBasesLocked(false, Display.STATE_ON, curr, curr); // Start sensor (battery=off, sensor=on) curr = 1000 * (clocks.realtime = clocks.uptime = 200); @@ -209,7 +210,7 @@ public class BatteryStatsSensorTest extends TestCase { // Unplug (battery=on, sensor=on) curr = 1000 * (clocks.realtime = clocks.uptime = 305); - bi.updateTimeBasesLocked(true, false, curr, curr); + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); //Test situation curr = 1000 * (clocks.realtime = clocks.uptime = 410); @@ -243,7 +244,7 @@ public class BatteryStatsSensorTest extends TestCase { long curr = 0; // realtime in us // Entire test is on-battery curr = 1000 * (clocks.realtime = clocks.uptime = 1000); - bi.updateTimeBasesLocked(true, false, curr, curr); + bi.updateTimeBasesLocked(true, Display.STATE_ON, curr, curr); // See below for a diagram of events. @@ -488,7 +489,7 @@ public class BatteryStatsSensorTest extends TestCase { bi.noteStartSensorLocked(UID, SENSOR_ID); clocks.realtime += 111; - clocks.uptime += 1111; + clocks.uptime += 111; // Timebase and timer was on so times have increased. assertEquals(111_000, timer.getTotalTimeLocked(1000*clocks.realtime, which)); diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java new file mode 100644 index 0000000000000000000000000000000000000000..450473d0335c1d70a01a4f32b914f0f2f2822289 --- /dev/null +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsUserLifecycleTests.java @@ -0,0 +1,167 @@ +/* + * 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.internal.os; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeTrue; + +import android.app.ActivityManager; +import android.app.IActivityManager; +import android.app.IStopUserCallback; +import android.content.Context; +import android.content.pm.UserInfo; +import android.os.RemoteException; +import android.os.UserHandle; +import android.os.UserManager; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.LargeTest; +import android.support.test.runner.AndroidJUnit4; +import android.support.test.uiautomator.UiDevice; +import android.util.ArraySet; + +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +@LargeTest +@RunWith(AndroidJUnit4.class) +public class BatteryStatsUserLifecycleTests { + + private static final long POLL_INTERVAL_MS = 500; + private static final long USER_REMOVE_TIMEOUT_MS = 5_000; + private static final long STOP_USER_TIMEOUT_MS = 10_000; + private static final long BATTERYSTATS_POLLING_TIMEOUT_MS = 5_000; + + private static final String CPU_DATA_TAG = "cpu"; + private static final String CPU_FREQ_DATA_TAG = "ctf"; + + private int mTestUserId = UserHandle.USER_NULL; + private Context mContext; + private UserManager mUm; + private IActivityManager mIam; + + @BeforeClass + public static void setUpOnce() { + assumeTrue(UserManager.getMaxSupportedUsers() > 1); + } + + @Before + public void setUp() throws Exception { + mContext = InstrumentationRegistry.getTargetContext(); + mUm = UserManager.get(mContext); + mIam = ActivityManager.getService(); + final UserInfo user = mUm.createUser("Test_user_" + System.currentTimeMillis() / 1000, 0); + assertNotNull("Unable to create test user", user); + mTestUserId = user.id; + batteryOnScreenOff(); + } + + @Test + public void testNoCpuDataForRemovedUser() throws Exception { + mIam.startUserInBackground(mTestUserId); + waitUntilTrue("No uids for started user " + mTestUserId, + () -> getNumberOfUidsInBatteryStats() > 0, BATTERYSTATS_POLLING_TIMEOUT_MS); + + CountDownLatch stopUserLatch = new CountDownLatch(1); + mIam.stopUser(mTestUserId, true, new IStopUserCallback.Stub() { + @Override + public void userStopped(int userId) throws RemoteException { + stopUserLatch.countDown(); + } + + @Override + public void userStopAborted(int userId) throws RemoteException { + } + }); + assertTrue("User " + mTestUserId + " could not be stopped", + stopUserLatch.await(STOP_USER_TIMEOUT_MS, TimeUnit.MILLISECONDS)); + + mUm.removeUser(mTestUserId); + waitUntilTrue("Unable to remove user " + mTestUserId, () -> { + for (UserInfo user : mUm.getUsers()) { + if (user.id == mTestUserId) { + return false; + } + } + return true; + }, USER_REMOVE_TIMEOUT_MS); + waitUntilTrue("Uids still found for removed user " + mTestUserId, + () -> getNumberOfUidsInBatteryStats() == 0, BATTERYSTATS_POLLING_TIMEOUT_MS); + } + + @After + public void tearDown() throws Exception { + batteryOffScreenOn(); + if (mTestUserId != UserHandle.USER_NULL) { + mUm.removeUser(mTestUserId); + } + } + + private int getNumberOfUidsInBatteryStats() throws Exception { + ArraySet uids = new ArraySet<>(); + final String dumpsys = executeShellCommand("dumpsys batterystats --checkin"); + for (String line : dumpsys.split("\n")) { + final String[] parts = line.trim().split(","); + if (parts.length < 5 || + (!parts[3].equals(CPU_DATA_TAG) && !parts[3].equals(CPU_FREQ_DATA_TAG))) { + continue; + } + try { + final int uid = Integer.parseInt(parts[1]); + if (UserHandle.getUserId(uid) == mTestUserId) { + uids.add(uid); + } + } catch (NumberFormatException nexc) { + // ignore + } + } + return uids.size(); + } + + protected void batteryOnScreenOff() throws Exception { + executeShellCommand("dumpsys battery unplug"); + executeShellCommand("dumpsys batterystats enable pretend-screen-off"); + } + + protected void batteryOffScreenOn() throws Exception { + executeShellCommand("dumpsys battery reset"); + executeShellCommand("dumpsys batterystats disable pretend-screen-off"); + } + + private String executeShellCommand(String cmd) throws Exception { + return UiDevice.getInstance( + InstrumentationRegistry.getInstrumentation()).executeShellCommand(cmd); + } + + private void waitUntilTrue(String message, Condition condition, long timeout) throws Exception { + final long deadLine = System.currentTimeMillis() + timeout; + while (System.currentTimeMillis() <= deadLine && !condition.isTrue()) { + Thread.sleep(POLL_INTERVAL_MS); + } + assertTrue(message, condition.isTrue()); + } + + private interface Condition { + boolean isTrue() throws Exception; + } +} diff --git a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java index 620acaecd01019bf20efdd327c39721a6e0d9648..7ab956943e3efea37e690a5904ae525acfabec96 100644 --- a/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java +++ b/core/tests/coretests/src/com/android/internal/os/KernelUidCpuFreqTimeReaderTest.java @@ -98,6 +98,14 @@ public class KernelUidCpuFreqTimeReaderTest { } verifyNoMoreInteractions(mCallback); + // Verify that there won't be a callback if the proc file values didn't change. + Mockito.reset(mCallback, mBufferedReader); + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, newTimes1)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + verifyNoMoreInteractions(mCallback); + // Verify that calling with a null callback doesn't result in any crashes Mockito.reset(mCallback, mBufferedReader); final long[][] newTimes2 = new long[uids.length][freqs.length]; @@ -130,6 +138,91 @@ public class KernelUidCpuFreqTimeReaderTest { verifyNoMoreInteractions(mCallback); } + @Test + public void testReadDelta_malformedData() throws Exception { + final long[] freqs = {1, 12, 123, 1234, 12345, 123456}; + final int[] uids = {1, 22, 333, 4444, 5555}; + final long[][] times = new long[uids.length][freqs.length]; + for (int i = 0; i < uids.length; ++i) { + for (int j = 0; j < freqs.length; ++j) { + times[i][j] = uids[i] * freqs[j] * 10; + } + } + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, times)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + for (int i = 0; i < uids.length; ++i) { + verify(mCallback).onUidCpuFreqTime(uids[i], times[i]); + } + verifyNoMoreInteractions(mCallback); + + // Verify that there is no callback if any value in the proc file is -ve. + Mockito.reset(mCallback, mBufferedReader); + final long[][] newTimes1 = new long[uids.length][freqs.length]; + for (int i = 0; i < uids.length; ++i) { + for (int j = 0; j < freqs.length; ++j) { + newTimes1[i][j] = (times[i][j] + uids[i] + freqs[j]) * 10; + } + } + newTimes1[uids.length - 1][freqs.length - 1] *= -1; + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, newTimes1)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + for (int i = 0; i < uids.length; ++i) { + if (i == uids.length - 1) { + continue; + } + verify(mCallback).onUidCpuFreqTime(uids[i], subtract(newTimes1[i], times[i])); + } + verifyNoMoreInteractions(mCallback); + + // Verify that the internal state was not modified when the proc file had -ve value. + Mockito.reset(mCallback, mBufferedReader); + for (int i = 0; i < freqs.length; ++i) { + newTimes1[uids.length - 1][i] = times[uids.length - 1][i]; + } + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, newTimes1)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + verifyNoMoreInteractions(mCallback); + + // Verify that there is no callback if the values in the proc file are decreased. + Mockito.reset(mCallback, mBufferedReader); + final long[][] newTimes2 = new long[uids.length][freqs.length]; + for (int i = 0; i < uids.length; ++i) { + for (int j = 0; j < freqs.length; ++j) { + newTimes2[i][j] = (newTimes1[i][j] + uids[i] * freqs[j]) * 10; + } + } + newTimes2[uids.length - 1][freqs.length - 1] = + newTimes1[uids.length - 1][freqs.length - 1] - 222; + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, newTimes2)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + for (int i = 0; i < uids.length; ++i) { + if (i == uids.length - 1) { + continue; + } + verify(mCallback).onUidCpuFreqTime(uids[i], subtract(newTimes2[i], newTimes1[i])); + } + verifyNoMoreInteractions(mCallback); + + // Verify that the internal state was not modified when the proc file had decreasing values. + Mockito.reset(mCallback, mBufferedReader); + for (int i = 0; i < freqs.length; ++i) { + newTimes2[uids.length - 1][i] = newTimes1[uids.length - 1][i]; + } + when(mBufferedReader.readLine()) + .thenReturn(getFreqsLine(freqs), getUidTimesLines(uids, newTimes2)); + mKernelUidCpuFreqTimeReader.readDelta(mBufferedReader, mCallback); + verify(mCallback).onCpuFreqs(freqs); + verifyNoMoreInteractions(mCallback); + } + private long[] subtract(long[] a1, long[] a2) { long[] val = new long[a1.length]; for (int i = 0; i < val.length; ++i) { diff --git a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java index 4a23f408e745c84f0c660c8200b78ee47fff378c..27aec561dff23212f4ade8bf3b10c4c6cf67ee37 100644 --- a/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java +++ b/core/tests/coretests/src/com/android/internal/os/LongSamplingCounterArrayTest.java @@ -114,7 +114,7 @@ public class LongSamplingCounterArrayTest { public void testOnTimeStarted() { initializeCounterArrayWithDefaultValues(); mCounterArray.onTimeStarted(0, 0, 0); - assertArrayEquals(PLUGGED_COUNTS, mCounterArray.mCounts, "Unexpected counts"); + assertArrayEquals(COUNTS, mCounterArray.mCounts, "Unexpected counts"); assertArrayEquals(LOADED_COUNTS, mCounterArray.mLoadedCounts, "Unexpected loadedCounts"); assertArrayEquals(PLUGGED_COUNTS, mCounterArray.mPluggedCounts, "Unexpected pluggedCounts"); assertArrayEquals(PLUGGED_COUNTS, mCounterArray.mUnpluggedCounts, @@ -150,6 +150,7 @@ public class LongSamplingCounterArrayTest { @Test public void testAddCountLocked() { final long[] deltas = {123, 234, 345, 456}; + when(mTimeBase.isRunning()).thenReturn(true); mCounterArray.addCountLocked(deltas); assertArrayEquals(deltas, mCounterArray.mCounts, "Unexpected counts"); assertArrayEquals(null, mCounterArray.mLoadedCounts, "Unexpected loadedCounts"); diff --git a/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java b/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java index a123fce0748cdfa34889a2c426240810d77a1bbe..ae42f78da87d87733ecf0c4da3a8e751022a8d66 100644 --- a/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java +++ b/core/tests/coretests/src/com/android/internal/os/MockBatteryStatsImpl.java @@ -26,6 +26,10 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { MockBatteryStatsImpl(Clocks clocks) { super(clocks); this.clocks = mClocks; + mScreenOnTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null, + mOnBatteryTimeBase); + mScreenDozeTimer = new BatteryStatsImpl.StopwatchTimer(clocks, null, -1, null, + mOnBatteryTimeBase); mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase); } @@ -37,6 +41,14 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { return mOnBatteryTimeBase; } + public TimeBase getOnBatteryScreenOffTimeBase() { + return mOnBatteryScreenOffTimeBase; + } + + public int getScreenState() { + return mScreenState; + } + public boolean isOnBattery() { return mForceOnBattery ? true : super.isOnBattery(); } diff --git a/core/tests/utiltests/AndroidManifest.xml b/core/tests/utiltests/AndroidManifest.xml index d6384e7b139ef899f08d6b807fb7aa32a48b61ec..8db81ca4b3b6e389bac416f2312b6a74e28d02de 100644 --- a/core/tests/utiltests/AndroidManifest.xml +++ b/core/tests/utiltests/AndroidManifest.xml @@ -30,7 +30,6 @@ - diff --git a/core/tests/utiltests/res/drawable/image.jpg b/core/tests/utiltests/res/drawable/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bef1fb111f89637e80ec8968d8ab24fefcfd7e7c Binary files /dev/null and b/core/tests/utiltests/res/drawable/image.jpg differ diff --git a/core/tests/utiltests/res/drawable/png.png b/core/tests/utiltests/res/drawable/png.png new file mode 100644 index 0000000000000000000000000000000000000000..b13c865e02be81f7cd5a2868cb8d6c77c0e362e7 Binary files /dev/null and b/core/tests/utiltests/res/drawable/png.png differ diff --git a/core/tests/utiltests/src/android/util/MetadataReaderTest.java b/core/tests/utiltests/src/android/util/MetadataReaderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..193fb50b06f372666e3adc984a70a216c6caa73d --- /dev/null +++ b/core/tests/utiltests/src/android/util/MetadataReaderTest.java @@ -0,0 +1,115 @@ +/* + * 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.util; + +import android.media.ExifInterface; +import android.os.Bundle; +import android.provider.DocumentsContract; +import android.provider.MetadataReader; + +import libcore.io.IoUtils; + +import junit.framework.TestCase; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; + +public class MetadataReaderTest extends TestCase { + + private InputStream mInputStream; + private Bundle mData; + + @Before + protected void setUp() throws Exception { + mInputStream = getClass().getClassLoader().getResourceAsStream("res/drawable/image.jpg"); + mData = new Bundle(); + } + + @After + protected void tearDown() throws Exception { + IoUtils.closeQuietly(mInputStream); + } + + @Test + public void testGetMetadata() throws IOException { + MetadataReader.getMetadata(mData, mInputStream, "image/jpg", null); + Bundle exif = mData.getBundle(DocumentsContract.METADATA_EXIF); + assertEquals("3036", String.valueOf(exif.getInt(ExifInterface.TAG_IMAGE_WIDTH))); + assertEquals("4048", String.valueOf(exif.getInt(ExifInterface.TAG_IMAGE_LENGTH))); + assertEquals("2017:07:17 19:19:28", exif.getString(ExifInterface.TAG_DATETIME)); + assertEquals(0.0, exif.getDouble(ExifInterface.TAG_GPS_LATITUDE)); + assertEquals(0.0, exif.getDouble(ExifInterface.TAG_GPS_LONGITUDE)); + assertEquals("Google", exif.getString(ExifInterface.TAG_MAKE)); + assertEquals("Pixel", exif.getString(ExifInterface.TAG_MODEL)); + assertEquals(mData.getStringArray(DocumentsContract.METADATA_TYPES)[0], + DocumentsContract.METADATA_EXIF); + } + + @Test + public void testGetMetadata_JpegOneTag() throws IOException { + String[] tags = {ExifInterface.TAG_MAKE}; + MetadataReader.getMetadata(mData, mInputStream, "image/jpg", tags); + assertEquals("Google", + mData.getBundle(DocumentsContract.METADATA_EXIF).getString(tags[0])); + } + + @Test + public void testGetMetadata_JpegNoResults() throws IOException { + String[] tags = {ExifInterface.TAG_SPECTRAL_SENSITIVITY}; + assertEquals(0, mData.size()); + MetadataReader.getMetadata(mData, mInputStream, "image/jpg", tags); + assertEquals(1, mData.size()); + assertEquals(mData.getStringArray(DocumentsContract.METADATA_TYPES).length, 0); + } + + @Test + public void testGetMetadata_BadFile() { + try { + InputStream stream = new FileInputStream("badString"); + MetadataReader.getMetadata(mData, stream, "image/jpg", null); + } catch (IOException e) { + assertEquals(FileNotFoundException.class, e.getClass()); + } + } + + @Test + public void testGetMetadata_UnsupportedMimeType() throws IOException { + MetadataReader.getMetadata(mData, mInputStream, "no/metadata", null); + assertEquals(1, mData.size()); + } + + @Test + public void testGetMetadata_NoTags() throws IOException { + MetadataReader.getMetadata(mData, mInputStream, "image/jpg", new String[0]); + assertEquals(1, mData.size()); + } + + @Test + public void testGetMetadata_Png() throws IOException { + InputStream pngStream = getClass().getClassLoader().getResourceAsStream("res/drawable/png.png"); + MetadataReader.getMetadata(mData, pngStream, "image/png", null); + assertEquals(1, mData.size()); + + } + +} diff --git a/core/tests/utiltests/src/android/util/RemoteIntArray.java b/core/tests/utiltests/src/android/util/RemoteIntArray.java index 7dc3400779b0f916e70252076f8eec78d5c590a4..11d0888179d11c14ad88b1c612a058a15de50856 100644 --- a/core/tests/utiltests/src/android/util/RemoteIntArray.java +++ b/core/tests/utiltests/src/android/util/RemoteIntArray.java @@ -32,7 +32,7 @@ import java.util.concurrent.TimeoutException; final class RemoteIntArray implements ServiceConnection, Closeable { private static final long BIND_REMOTE_SERVICE_TIMEOUT = - ("eng".equals(Build.TYPE)) ? 120000 : 10000; + Build.IS_ENG ? 120000 : 10000; private final Object mLock = new Object(); diff --git a/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..443183eeba4de5b49ab28e491d666c974ecf367e --- /dev/null +++ b/core/tests/utiltests/src/com/android/internal/util/ObjectUtilsTest.java @@ -0,0 +1,33 @@ +/* + * 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.internal.util; + +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +@SmallTest +public class ObjectUtilsTest extends AndroidTestCase { + public void testCompare() { + assertEquals(0, ObjectUtils.compare(null, null)); + assertEquals(1, ObjectUtils.compare("a", null)); + assertEquals(-1, ObjectUtils.compare(null, "a")); + + assertEquals(0, ObjectUtils.compare("a", "a")); + + assertEquals(-1, ObjectUtils.compare("a", "b")); + assertEquals(1, ObjectUtils.compare("b", "a")); + } +} diff --git a/data/etc/framework-sysconfig.xml b/data/etc/framework-sysconfig.xml index 3a81c1309a8ba994208b790a9831189f0ba14cf0..ae6a7f6d6808c1f9292fa75549a38a279f5b7ab8 100644 --- a/data/etc/framework-sysconfig.xml +++ b/data/etc/framework-sysconfig.xml @@ -22,6 +22,8 @@ + + diff --git a/data/etc/platform.xml b/data/etc/platform.xml index 19d2a3173bf7ab60d17b2d99e84e0b25802d9c8f..26741fee36ea2dbfa80c5ebe612e2efd0f1f4bff 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -93,7 +93,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -163,6 +163,8 @@ + - + @@ -186,7 +186,6 @@ applications that come with the platform - @@ -266,6 +265,7 @@ applications that come with the platform + @@ -280,6 +280,7 @@ applications that come with the platform + @@ -348,11 +349,14 @@ applications that come with the platform - - - - - + + + + + + + + diff --git a/data/sounds/AudioPackageGo.mk b/data/sounds/AudioPackageGo.mk new file mode 100644 index 0000000000000000000000000000000000000000..ae742df8f9bb39b0603ef466614d34722a117037 --- /dev/null +++ b/data/sounds/AudioPackageGo.mk @@ -0,0 +1,48 @@ +# Copyright 2013 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH := frameworks/base/data/sounds + +# Ring_Classic_02 : Bell Phone +# Ring_Synth_02 : Chimey Phone +# Ring_Digital_02 : Digital Phone +# Ring_Synth_04 : Flutey Phone +# Alarm_Beep_03 : Beep Beep Beep +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/notifications/ogg/Alya.ogg:system/media/audio/notifications/Alya.ogg \ + $(LOCAL_PATH)/notifications/ogg/Argon.ogg:system/media/audio/notifications/Argon.ogg \ + $(LOCAL_PATH)/notifications/Canopus.ogg:system/media/audio/notifications/Canopus.ogg \ + $(LOCAL_PATH)/notifications/Deneb.ogg:system/media/audio/notifications/Deneb.ogg \ + $(LOCAL_PATH)/newwavelabs/Highwire.ogg:system/media/audio/notifications/Highwire.ogg \ + $(LOCAL_PATH)/notifications/ogg/Iridium.ogg:system/media/audio/notifications/Iridium.ogg \ + $(LOCAL_PATH)/notifications/pixiedust.ogg:system/media/audio/notifications/pixiedust.ogg \ + $(LOCAL_PATH)/notifications/ogg/Talitha.ogg:system/media/audio/notifications/Talitha.ogg \ + $(LOCAL_PATH)/Ring_Classic_02.ogg:system/media/audio/ringtones/Ring_Classic_02.ogg \ + $(LOCAL_PATH)/Ring_Synth_02.ogg:system/media/audio/ringtones/Ring_Synth_02.ogg \ + $(LOCAL_PATH)/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.ogg \ + $(LOCAL_PATH)/Ring_Digital_02.ogg:system/media/audio/ringtones/Ring_Digital_02.ogg \ + $(LOCAL_PATH)/Ring_Synth_04.ogg:system/media/audio/ringtones/Ring_Synth_04.ogg \ + $(LOCAL_PATH)/ringtones/ogg/Kuma.ogg:system/media/audio/ringtones/Kuma.ogg \ + $(LOCAL_PATH)/ringtones/ogg/Themos.ogg:system/media/audio/ringtones/Themos.ogg \ + $(LOCAL_PATH)/alarms/ogg/Argon.ogg:system/media/audio/alarms/Argon.ogg \ + $(LOCAL_PATH)/alarms/ogg/Platinum.ogg:system/media/audio/alarms/Platinum.ogg \ + $(LOCAL_PATH)/Alarm_Beep_03.ogg:system/media/audio/alarms/Alarm_Beep_03.ogg \ + $(LOCAL_PATH)/alarms/ogg/Helium.ogg:system/media/audio/alarms/Helium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Oxygen.ogg:system/media/audio/alarms/Oxygen.ogg \ + $(LOCAL_PATH)/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressInvalid.ogg:system/media/audio/ui/KeypressInvalid.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ diff --git a/data/sounds/AudioTv.mk b/data/sounds/AudioTv.mk new file mode 100644 index 0000000000000000000000000000000000000000..ee37cb943872f28e4f626cb1a9327a7edd708a5f --- /dev/null +++ b/data/sounds/AudioTv.mk @@ -0,0 +1,125 @@ +# Copyright 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH := frameworks/base/data/sounds + +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \ + $(LOCAL_PATH)/Alarm_Beep_02.ogg:system/media/audio/alarms/Alarm_Beep_02.ogg \ + $(LOCAL_PATH)/Alarm_Beep_03.ogg:system/media/audio/alarms/Alarm_Beep_03.ogg \ + $(LOCAL_PATH)/Alarm_Buzzer.ogg:system/media/audio/alarms/Alarm_Buzzer.ogg \ + $(LOCAL_PATH)/Alarm_Classic.ogg:system/media/audio/alarms/Alarm_Classic.ogg \ + $(LOCAL_PATH)/Alarm_Rooster_02.ogg:system/media/audio/alarms/Alarm_Rooster_02.ogg \ + $(LOCAL_PATH)/alarms/ogg/Argon.ogg:system/media/audio/alarms/Argon.ogg \ + $(LOCAL_PATH)/alarms/ogg/Barium.ogg:system/media/audio/alarms/Barium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Carbon.ogg:system/media/audio/alarms/Carbon.ogg \ + $(LOCAL_PATH)/alarms/ogg/Cesium.ogg:system/media/audio/alarms/Cesium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Fermium.ogg:system/media/audio/alarms/Fermium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Hassium.ogg:system/media/audio/alarms/Hassium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Helium.ogg:system/media/audio/alarms/Helium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Krypton.ogg:system/media/audio/alarms/Krypton.ogg \ + $(LOCAL_PATH)/alarms/ogg/Neon.ogg:system/media/audio/alarms/Neon.ogg \ + $(LOCAL_PATH)/alarms/ogg/Neptunium.ogg:system/media/audio/alarms/Neptunium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Nobelium.ogg:system/media/audio/alarms/Nobelium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Osmium.ogg:system/media/audio/alarms/Osmium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Oxygen.ogg:system/media/audio/alarms/Oxygen.ogg \ + $(LOCAL_PATH)/alarms/ogg/Platinum.ogg:system/media/audio/alarms/Platinum.ogg \ + $(LOCAL_PATH)/alarms/ogg/Plutonium.ogg:system/media/audio/alarms/Plutonium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Promethium.ogg:system/media/audio/alarms/Promethium.ogg \ + $(LOCAL_PATH)/alarms/ogg/Scandium.ogg:system/media/audio/alarms/Scandium.ogg \ + $(LOCAL_PATH)/effects/ogg/camera_click_48k.ogg:system/media/audio/ui/camera_click.ogg \ + $(LOCAL_PATH)/effects/ogg/camera_focus.ogg:system/media/audio/ui/camera_focus.ogg \ + $(LOCAL_PATH)/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.ogg \ + $(LOCAL_PATH)/effects/ogg/Effect_Tick_48k.ogg:system/media/audio/ui/Effect_Tick.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressDelete_120_48k.ogg:system/media/audio/ui/KeypressDelete.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressInvalid_120_48k.ogg:system/media/audio/ui/KeypressInvalid.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressReturn_120_48k.ogg:system/media/audio/ui/KeypressReturn.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressSpacebar_120_48k.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ + $(LOCAL_PATH)/effects/ogg/KeypressStandard_120_48k.ogg:system/media/audio/ui/KeypressStandard.ogg \ + $(LOCAL_PATH)/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.ogg \ + $(LOCAL_PATH)/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.ogg \ + $(LOCAL_PATH)/effects/ogg/Trusted_48k.ogg:system/media/audio/ui/Trusted.ogg \ + $(LOCAL_PATH)/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg \ + $(LOCAL_PATH)/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.ogg \ + $(LOCAL_PATH)/effects/ogg/VideoRecord_48k.ogg:system/media/audio/ui/VideoRecord.ogg \ + $(LOCAL_PATH)/effects/ogg/VideoStop_48k.ogg:system/media/audio/ui/VideoStop.ogg \ + $(LOCAL_PATH)/effects/ogg/WirelessChargingStarted.ogg:system/media/audio/ui/WirelessChargingStarted.ogg \ + $(LOCAL_PATH)/F1_MissedCall.ogg:system/media/audio/notifications/F1_MissedCall.ogg \ + $(LOCAL_PATH)/F1_New_MMS.ogg:system/media/audio/notifications/F1_New_MMS.ogg \ + $(LOCAL_PATH)/F1_New_SMS.ogg:system/media/audio/notifications/F1_New_SMS.ogg \ + $(LOCAL_PATH)/notifications/Aldebaran.ogg:system/media/audio/notifications/Aldebaran.ogg \ + $(LOCAL_PATH)/notifications/Altair.ogg:system/media/audio/notifications/Altair.ogg \ + $(LOCAL_PATH)/notifications/Antares.ogg:system/media/audio/notifications/Antares.ogg \ + $(LOCAL_PATH)/notifications/arcturus.ogg:system/media/audio/notifications/arcturus.ogg \ + $(LOCAL_PATH)/notifications/Beat_Box_Android.ogg:system/media/audio/notifications/Beat_Box_Android.ogg \ + $(LOCAL_PATH)/notifications/Betelgeuse.ogg:system/media/audio/notifications/Betelgeuse.ogg \ + $(LOCAL_PATH)/notifications/Canopus.ogg:system/media/audio/notifications/Canopus.ogg \ + $(LOCAL_PATH)/notifications/Castor.ogg:system/media/audio/notifications/Castor.ogg \ + $(LOCAL_PATH)/notifications/Cricket.ogg:system/media/audio/notifications/Cricket.ogg \ + $(LOCAL_PATH)/notifications/Deneb.ogg:system/media/audio/notifications/Deneb.ogg \ + $(LOCAL_PATH)/notifications/Doink.ogg:system/media/audio/notifications/Doink.ogg \ + $(LOCAL_PATH)/notifications/Drip.ogg:system/media/audio/notifications/Drip.ogg \ + $(LOCAL_PATH)/notifications/Electra.ogg:system/media/audio/notifications/Electra.ogg \ + $(LOCAL_PATH)/notifications/Fomalhaut.ogg:system/media/audio/notifications/Fomalhaut.ogg \ + $(LOCAL_PATH)/notifications/Heaven.ogg:system/media/audio/notifications/Heaven.ogg \ + $(LOCAL_PATH)/notifications/Merope.ogg:system/media/audio/notifications/Merope.ogg \ + $(LOCAL_PATH)/notifications/moonbeam.ogg:system/media/audio/notifications/moonbeam.ogg \ + $(LOCAL_PATH)/notifications/ogg/Adara.ogg:system/media/audio/notifications/Adara.ogg \ + $(LOCAL_PATH)/notifications/ogg/Alya.ogg:system/media/audio/notifications/Alya.ogg \ + $(LOCAL_PATH)/notifications/ogg/Antimony.ogg:system/media/audio/notifications/Antimony.ogg \ + $(LOCAL_PATH)/notifications/ogg/Arcturus.ogg:system/media/audio/notifications/Arcturus.ogg \ + $(LOCAL_PATH)/notifications/ogg/Argon.ogg:system/media/audio/notifications/Argon.ogg \ + $(LOCAL_PATH)/notifications/ogg/Bellatrix.ogg:system/media/audio/notifications/Bellatrix.ogg \ + $(LOCAL_PATH)/notifications/ogg/Beryllium.ogg:system/media/audio/notifications/Beryllium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.ogg \ + $(LOCAL_PATH)/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.ogg \ + $(LOCAL_PATH)/notifications/ogg/Cobalt.ogg:system/media/audio/notifications/Cobalt.ogg \ + $(LOCAL_PATH)/notifications/ogg/Fluorine.ogg:system/media/audio/notifications/Fluorine.ogg \ + $(LOCAL_PATH)/notifications/ogg/Gallium.ogg:system/media/audio/notifications/Gallium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Helium.ogg:system/media/audio/notifications/Helium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Hojus.ogg:system/media/audio/notifications/Hojus.ogg \ + $(LOCAL_PATH)/notifications/ogg/Iridium.ogg:system/media/audio/notifications/Iridium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Krypton.ogg:system/media/audio/notifications/Krypton.ogg \ + $(LOCAL_PATH)/notifications/ogg/Lalande.ogg:system/media/audio/notifications/Lalande.ogg \ + $(LOCAL_PATH)/notifications/ogg/Mira.ogg:system/media/audio/notifications/Mira.ogg \ + $(LOCAL_PATH)/notifications/ogg/Palladium.ogg:system/media/audio/notifications/Palladium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.ogg \ + $(LOCAL_PATH)/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.ogg \ + $(LOCAL_PATH)/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.ogg \ + $(LOCAL_PATH)/notifications/ogg/Proxima.ogg:system/media/audio/notifications/Proxima.ogg \ + $(LOCAL_PATH)/notifications/ogg/Radon.ogg:system/media/audio/notifications/Radon.ogg \ + $(LOCAL_PATH)/notifications/ogg/Rubidium.ogg:system/media/audio/notifications/Rubidium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Selenium.ogg:system/media/audio/notifications/Selenium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Shaula.ogg:system/media/audio/notifications/Shaula.ogg \ + $(LOCAL_PATH)/notifications/ogg/Spica.ogg:system/media/audio/notifications/Spica.ogg \ + $(LOCAL_PATH)/notifications/ogg/Strontium.ogg:system/media/audio/notifications/Strontium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Syrma.ogg:system/media/audio/notifications/Syrma.ogg \ + $(LOCAL_PATH)/notifications/ogg/Talitha.ogg:system/media/audio/notifications/Talitha.ogg \ + $(LOCAL_PATH)/notifications/ogg/Tejat.ogg:system/media/audio/notifications/Tejat.ogg \ + $(LOCAL_PATH)/notifications/ogg/Thallium.ogg:system/media/audio/notifications/Thallium.ogg \ + $(LOCAL_PATH)/notifications/ogg/Upsilon.ogg:system/media/audio/notifications/Upsilon.ogg \ + $(LOCAL_PATH)/notifications/ogg/Vega.ogg:system/media/audio/notifications/Vega.ogg \ + $(LOCAL_PATH)/notifications/ogg/Xenon.ogg:system/media/audio/notifications/Xenon.ogg \ + $(LOCAL_PATH)/notifications/ogg/Zirconium.ogg:system/media/audio/notifications/Zirconium.ogg \ + $(LOCAL_PATH)/notifications/pixiedust.ogg:system/media/audio/notifications/pixiedust.ogg \ + $(LOCAL_PATH)/notifications/pizzicato.ogg:system/media/audio/notifications/pizzicato.ogg \ + $(LOCAL_PATH)/notifications/Plastic_Pipe.ogg:system/media/audio/notifications/Plastic_Pipe.ogg \ + $(LOCAL_PATH)/notifications/regulus.ogg:system/media/audio/notifications/regulus.ogg \ + $(LOCAL_PATH)/notifications/sirius.ogg:system/media/audio/notifications/sirius.ogg \ + $(LOCAL_PATH)/notifications/Sirrah.ogg:system/media/audio/notifications/Sirrah.ogg \ + $(LOCAL_PATH)/notifications/SpaceSeed.ogg:system/media/audio/notifications/SpaceSeed.ogg \ + $(LOCAL_PATH)/notifications/TaDa.ogg:system/media/audio/notifications/TaDa.ogg \ + $(LOCAL_PATH)/notifications/Tinkerbell.ogg:system/media/audio/notifications/Tinkerbell.ogg \ + $(LOCAL_PATH)/notifications/tweeters.ogg:system/media/audio/notifications/tweeters.ogg \ + $(LOCAL_PATH)/notifications/vega.ogg:system/media/audio/notifications/vega.ogg diff --git a/data/sounds/effects/InCallNotification.ogg b/data/sounds/effects/InCallNotification.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4481ccb25614687c02f091e80722c363dcb61a4d Binary files /dev/null and b/data/sounds/effects/InCallNotification.ogg differ diff --git a/data/sounds/effects/ogg/InCallNotification.ogg b/data/sounds/effects/ogg/InCallNotification.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4481ccb25614687c02f091e80722c363dcb61a4d Binary files /dev/null and b/data/sounds/effects/ogg/InCallNotification.ogg differ diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index d586db438765fd9bd743c80e48c02696e5d4421d..57c75490ec47bed7b279c83f142418bb0516e51b 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -21,6 +21,7 @@ import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Size; +import android.content.res.ResourcesImpl; import android.os.Parcel; import android.os.Parcelable; import android.os.StrictMode; @@ -82,6 +83,12 @@ public final class Bitmap implements Parcelable { private static volatile int sDefaultDensity = -1; + /** @hide Used only when ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD is true. */ + public static volatile int sPreloadTracingNumInstantiatedBitmaps; + + /** @hide Used only when ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD is true. */ + public static volatile long sPreloadTracingTotalBitmapsSize; + /** * For backwards compatibility, allows the app layer to change the default * density when running old apps. @@ -128,6 +135,11 @@ public final class Bitmap implements Parcelable { NativeAllocationRegistry registry = new NativeAllocationRegistry( Bitmap.class.getClassLoader(), nativeGetNativeFinalizer(), nativeSize); registry.registerNativeAllocation(this, nativeBitmap); + + if (ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD) { + sPreloadTracingNumInstantiatedBitmaps++; + sPreloadTracingTotalBitmapsSize += nativeSize; + } } /** diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java index 3b272c8ddec709da3feb3cfa96a0b9333a3b757e..ffb39e33911951ba380f6486307c3bc1c8604a86 100644 --- a/graphics/java/android/graphics/BitmapFactory.java +++ b/graphics/java/android/graphics/BitmapFactory.java @@ -433,10 +433,15 @@ public class BitmapFactory { static void validate(Options opts) { if (opts == null) return; - if (opts.inMutable && opts.inPreferredConfig == Bitmap.Config.HARDWARE) { + if (opts.inBitmap != null && opts.inBitmap.getConfig() == Bitmap.Config.HARDWARE) { throw new IllegalArgumentException("Bitmaps with Config.HARWARE are always immutable"); } + if (opts.inMutable && opts.inPreferredConfig == Bitmap.Config.HARDWARE) { + throw new IllegalArgumentException("Bitmaps with Config.HARDWARE cannot be " + + "decoded into - they are immutable"); + } + if (opts.inPreferredColorSpace != null) { if (!(opts.inPreferredColorSpace instanceof ColorSpace.Rgb)) { throw new IllegalArgumentException("The destination color space must use the " + diff --git a/graphics/java/android/graphics/ImageFormat.java b/graphics/java/android/graphics/ImageFormat.java index e3527e359d62fda8d3bc7cf218518af06c3069b0..43fd2708ee3e223c84cc28f459e82ffc0d3809e4 100644 --- a/graphics/java/android/graphics/ImageFormat.java +++ b/graphics/java/android/graphics/ImageFormat.java @@ -658,6 +658,14 @@ public class ImageFormat { * float confidence = floatDepthBuffer.get(); * * + * For camera devices that support the + * {@link android.hardware.camera2.CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_DEPTH_OUTPUT DEPTH_OUTPUT} + * capability, DEPTH_POINT_CLOUD coordinates have units of meters, and the coordinate system is + * defined by the camera's pose transforms: + * {@link android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION} and + * {@link android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION}. That means the origin is + * the optical center of the camera device, and the positive Z axis points along the camera's optical axis, + * toward the scene. */ public static final int DEPTH_POINT_CLOUD = 0x101; diff --git a/graphics/java/android/graphics/LeakyTypefaceStorage.java b/graphics/java/android/graphics/LeakyTypefaceStorage.java new file mode 100644 index 0000000000000000000000000000000000000000..618e60d442d73c39c263d775de5d58e2f05bde01 --- /dev/null +++ b/graphics/java/android/graphics/LeakyTypefaceStorage.java @@ -0,0 +1,86 @@ +/* + * 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.graphics; + +import com.android.internal.annotations.GuardedBy; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Parcel; +import android.os.Process; +import android.util.ArrayMap; + +import java.util.ArrayList; + +/** + * This class is used for Parceling Typeface object. + * Note: Typeface object can not be passed over the process boundary. + * + * @hide + */ +public class LeakyTypefaceStorage { + private static final Object sLock = new Object(); + + @GuardedBy("sLock") + private static final ArrayList sStorage = new ArrayList<>(); + @GuardedBy("sLock") + private static final ArrayMap sTypefaceMap = new ArrayMap<>(); + + /** + * Write typeface to parcel. + * + * You can't transfer Typeface to a different process. {@link readTypefaceFromParcel} will + * return {@code null} if the {@link readTypefaceFromParcel} is called in a different process. + * + * @param typeface A {@link Typeface} to be written. + * @param parcel A {@link Parcel} object. + */ + public static void writeTypefaceToParcel(@Nullable Typeface typeface, @NonNull Parcel parcel) { + parcel.writeInt(Process.myPid()); + synchronized (sLock) { + final int id; + final Integer i = sTypefaceMap.get(typeface); + if (i != null) { + id = i.intValue(); + } else { + id = sStorage.size(); + sStorage.add(typeface); + sTypefaceMap.put(typeface, id); + } + parcel.writeInt(id); + } + } + + /** + * Read typeface from parcel. + * + * If the {@link Typeface} was created in another process, this method returns null. + * + * @param parcel A {@link Parcel} object + * @return A {@link Typeface} object. + */ + public static @Nullable Typeface readTypefaceFromParcel(@NonNull Parcel parcel) { + final int pid = parcel.readInt(); + final int typefaceId = parcel.readInt(); + if (pid != Process.myPid()) { + return null; // The Typeface was created and written in another process. + } + synchronized (sLock) { + return sStorage.get(typefaceId); + } + } +} diff --git a/graphics/java/android/graphics/Paint.java b/graphics/java/android/graphics/Paint.java index e1eb69a27e33d52141cca0d747f5415da055b031..aa9227c9bb0892b1e5333fb46fae6f02e2cf0ace 100644 --- a/graphics/java/android/graphics/Paint.java +++ b/graphics/java/android/graphics/Paint.java @@ -822,18 +822,14 @@ public class Paint { * @hide */ public float getUnderlinePosition() { - // kStdUnderline_Offset = 1/9, defined in SkTextFormatParams.h - // TODO: replace with position from post and MVAR tables (b/62353930). - return (1.0f / 9.0f) * getTextSize(); + return nGetUnderlinePosition(mNativePaint, mNativeTypeface); } /** * @hide */ public float getUnderlineThickness() { - // kStdUnderline_Thickness = 1/18, defined in SkTextFormatParams.h - // TODO: replace with thickness from post and MVAR tables (b/62353930). - return (1.0f / 18.0f) * getTextSize(); + return nGetUnderlineThickness(mNativePaint, mNativeTypeface); } /** @@ -855,6 +851,23 @@ public class Paint { return (getFlags() & STRIKE_THRU_TEXT_FLAG) != 0; } + /** + * Distance from top of the strike-through line to the baseline. Negative values mean above the + * baseline. This method returns where the strike-through line should be drawn independent of if + * the strikeThruText bit is set at the moment. + * @hide + */ + public float getStrikeThruPosition() { + return nGetStrikeThruPosition(mNativePaint, mNativeTypeface); + } + + /** + * @hide + */ + public float getStrikeThruThickness() { + return nGetStrikeThruThickness(mNativePaint, mNativeTypeface); + } + /** * Helper for setFlags(), setting or clearing the STRIKE_THRU_TEXT_FLAG bit * @@ -2997,5 +3010,13 @@ public class Paint { @CriticalNative private static native float nDescent(long paintPtr, long typefacePtr); @CriticalNative + private static native float nGetUnderlinePosition(long paintPtr, long typefacePtr); + @CriticalNative + private static native float nGetUnderlineThickness(long paintPtr, long typefacePtr); + @CriticalNative + private static native float nGetStrikeThruPosition(long paintPtr, long typefacePtr); + @CriticalNative + private static native float nGetStrikeThruThickness(long paintPtr, long typefacePtr); + @CriticalNative private static native void nSetTextSize(long paintPtr, float textSize); } diff --git a/graphics/java/android/graphics/Shader.java b/graphics/java/android/graphics/Shader.java index 0209cea4e2e516f905fa1d094865616108f7278b..40288f5ec8af3277ff93786a7a3742036087bd11 100644 --- a/graphics/java/android/graphics/Shader.java +++ b/graphics/java/android/graphics/Shader.java @@ -159,8 +159,10 @@ public class Shader { if (mNativeInstance == 0) { mNativeInstance = createNativeInstance(mLocalMatrix == null ? 0 : mLocalMatrix.native_instance); - mCleaner = NoImagePreloadHolder.sRegistry.registerNativeAllocation( - this, mNativeInstance); + if (mNativeInstance != 0) { + mCleaner = NoImagePreloadHolder.sRegistry.registerNativeAllocation( + this, mNativeInstance); + } } return mNativeInstance; } diff --git a/graphics/java/android/graphics/drawable/VectorDrawable.java b/graphics/java/android/graphics/drawable/VectorDrawable.java index c3ef45088f8ec279c29ec56811cd862aca698fd3..ceac3253e178e6e30403556b9e8cb9b567a8a7f5 100644 --- a/graphics/java/android/graphics/drawable/VectorDrawable.java +++ b/graphics/java/android/graphics/drawable/VectorDrawable.java @@ -31,6 +31,7 @@ import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.Shader; +import android.os.Trace; import android.util.ArrayMap; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -605,38 +606,44 @@ public class VectorDrawable extends Drawable { public void inflate(@NonNull Resources r, @NonNull XmlPullParser parser, @NonNull AttributeSet attrs, @Nullable Theme theme) throws XmlPullParserException, IOException { - if (mVectorState.mRootGroup != null || mVectorState.mNativeTree != null) { - // This VD has been used to display other VD resource content, clean up. - if (mVectorState.mRootGroup != null) { - // Subtract the native allocation for all the nodes. - VMRuntime.getRuntime().registerNativeFree(mVectorState.mRootGroup.getNativeSize()); - // Remove child nodes' reference to tree - mVectorState.mRootGroup.setTree(null); - } - mVectorState.mRootGroup = new VGroup(); - if (mVectorState.mNativeTree != null) { - // Subtract the native allocation for the tree wrapper, which contains root node - // as well as rendering related data. - VMRuntime.getRuntime().registerNativeFree(mVectorState.NATIVE_ALLOCATION_SIZE); - mVectorState.mNativeTree.release(); + try { + Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, "VectorDrawable#inflate"); + if (mVectorState.mRootGroup != null || mVectorState.mNativeTree != null) { + // This VD has been used to display other VD resource content, clean up. + if (mVectorState.mRootGroup != null) { + // Subtract the native allocation for all the nodes. + VMRuntime.getRuntime().registerNativeFree( + mVectorState.mRootGroup.getNativeSize()); + // Remove child nodes' reference to tree + mVectorState.mRootGroup.setTree(null); + } + mVectorState.mRootGroup = new VGroup(); + if (mVectorState.mNativeTree != null) { + // Subtract the native allocation for the tree wrapper, which contains root node + // as well as rendering related data. + VMRuntime.getRuntime().registerNativeFree(mVectorState.NATIVE_ALLOCATION_SIZE); + mVectorState.mNativeTree.release(); + } + mVectorState.createNativeTree(mVectorState.mRootGroup); } - mVectorState.createNativeTree(mVectorState.mRootGroup); - } - final VectorDrawableState state = mVectorState; - state.setDensity(Drawable.resolveDensity(r, 0)); + final VectorDrawableState state = mVectorState; + state.setDensity(Drawable.resolveDensity(r, 0)); - final TypedArray a = obtainAttributes(r, theme, attrs, R.styleable.VectorDrawable); - updateStateFromTypedArray(a); - a.recycle(); + final TypedArray a = obtainAttributes(r, theme, attrs, R.styleable.VectorDrawable); + updateStateFromTypedArray(a); + a.recycle(); - mDpiScaledDirty = true; + mDpiScaledDirty = true; - state.mCacheDirty = true; - inflateChildElements(r, parser, attrs, theme); + state.mCacheDirty = true; + inflateChildElements(r, parser, attrs, theme); - state.onTreeConstructionFinished(); - // Update local properties. - updateLocalState(r); + state.onTreeConstructionFinished(); + // Update local properties. + updateLocalState(r); + } finally { + Trace.traceEnd(Trace.TRACE_TAG_RESOURCES); + } } private void updateStateFromTypedArray(TypedArray a) throws XmlPullParserException { diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java index ccf9de0abdb4a25c1ba18e0be902d32824103980..7e959a87da5d20d30667208e934b4700e7cb6e65 100644 --- a/keystore/java/android/security/KeyStore.java +++ b/keystore/java/android/security/KeyStore.java @@ -754,6 +754,8 @@ public class KeyStore { // None of the key's SIDs can ever be authenticated return new KeyPermanentlyInvalidatedException(); } + case UNINITIALIZED: + return new KeyPermanentlyInvalidatedException(); default: return new InvalidKeyException("Keystore operation failed", e); } diff --git a/legacy-test/Android.mk b/legacy-test/Android.mk index e6839997d57e5678586852083e1e8edd7aaab3e3..0e6b31e6ebd90e2a1446acc03b1bd596661a75a3 100644 --- a/legacy-test/Android.mk +++ b/legacy-test/Android.mk @@ -31,6 +31,109 @@ LOCAL_JAVA_LIBRARIES := core-oj core-libart framework include $(BUILD_JAVA_LIBRARY) +# Build the repackaged-legacy-test library +# ======================================== +# This contains repackaged versions of the classes from legacy-test. +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_MODULE := repackaged-legacy-test +LOCAL_NO_STANDARD_LIBRARIES := true +LOCAL_JAVA_LIBRARIES := core-oj core-libart framework +LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt + +include $(BUILD_STATIC_JAVA_LIBRARY) + +# Generate the stub source files for legacy.test.stubs +# ==================================================== +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + $(call all-java-files-under, src) + +LOCAL_JAVA_LIBRARIES := \ + core-oj \ + core-libart \ + framework \ + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src + +LEGACY_TEST_OUTPUT_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/legacy.test.stubs_intermediates/api.txt +LEGACY_TEST_OUTPUT_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/legacy.test.stubs_intermediates/removed.txt + +LEGACY_TEST_API_FILE := $(LOCAL_PATH)/api/legacy-test-current.txt +LEGACY_TEST_REMOVED_API_FILE := $(LOCAL_PATH)/api/legacy-test-removed.txt + +LOCAL_DROIDDOC_OPTIONS:= \ + -stubpackages android.test:android.test.suitebuilder.annotation:com.android.internal.util:junit.framework \ + -stubsourceonly \ + -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/legacy.test.stubs_intermediates/src \ + -nodocs \ + -api $(LEGACY_TEST_OUTPUT_API_FILE) \ + -removedApi $(LEGACY_TEST_OUTPUT_REMOVED_API_FILE) \ + +LOCAL_UNINSTALLABLE_MODULE := true +LOCAL_MODULE := legacy-test-api-stubs-gen + +include $(BUILD_DROIDDOC) + +# Remember the target that will trigger the code generation. +legacy_test_api_gen_stamp := $(full_target) + +# Add some additional dependencies +$(LEGACY_TEST_OUTPUT_API_FILE): $(full_target) +$(LEGACY_TEST_OUTPUT_REMOVED_API_FILE): $(full_target) + +# Build the legacy.test.stubs library +# =================================== +include $(CLEAR_VARS) + +LOCAL_MODULE := legacy.test.stubs + +LOCAL_SOURCE_FILES_ALL_GENERATED := true + +# Make sure to run droiddoc first to generate the stub source files. +LOCAL_ADDITIONAL_DEPENDENCIES := $(legacy_test_api_gen_stamp) + +include $(BUILD_STATIC_JAVA_LIBRARY) + +# Archive a copy of the classes.jar in SDK build. +$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):legacy.test.stubs.jar) + +# Check that the legacy.test.stubs library has not changed +# ======================================================== + +# Check that the API we're building hasn't changed from the not-yet-released +# SDK version. +$(eval $(call check-api, \ + check-legacy-test-api-current, \ + $(LEGACY_TEST_API_FILE), \ + $(LEGACY_TEST_OUTPUT_API_FILE), \ + $(LEGACY_TEST_REMOVED_API_FILE), \ + $(LEGACY_TEST_OUTPUT_REMOVED_API_FILE), \ + -error 2 -error 3 -error 4 -error 5 -error 6 \ + -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ + -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ + -error 25 -error 26 -error 27, \ + cat $(LOCAL_PATH)/api/apicheck_msg_legacy_test.txt, \ + check-legacy-test-api, \ + $(call doc-timestamp-for,legacy-test-api-stubs-gen) \ + )) + +.PHONY: check-legacy-test-api +checkapi: check-legacy-test-api + +.PHONY: update-legacy-test-api +update-api: update-legacy-test-api + +update-legacy-test-api: $(LEGACY_TEST_OUTPUT_API_FILE) | $(ACP) + @echo Copying current.txt + $(hide) $(ACP) $(LEGACY_TEST_OUTPUT_API_FILE) $(LEGACY_TEST_API_FILE) + @echo Copying removed.txt + $(hide) $(ACP) $(LEGACY_TEST_OUTPUT_REMOVED_API_FILE) $(LEGACY_TEST_REMOVED_API_FILE) + # Build the legacy-android-test library # ===================================== # This contains the android.test classes that were in Android API level 25, diff --git a/legacy-test/api/apicheck_msg_legacy_test.txt b/legacy-test/api/apicheck_msg_legacy_test.txt new file mode 100644 index 0000000000000000000000000000000000000000..ad5f2359b8b199327e666d10201637d55234a6ea --- /dev/null +++ b/legacy-test/api/apicheck_msg_legacy_test.txt @@ -0,0 +1,17 @@ + +****************************** +You have tried to change the API from what has been previously approved. + +To make these errors go away, you have two choices: + 1) You can add "@hide" javadoc comments to the methods, etc. listed in the + errors above. + + 2) You can update legacy-test-current.txt by executing the following command: + make update-legacy-test-api + + To submit the revised legacy-test-current.txt to the main Android repository, + you will need approval. +****************************** + + + diff --git a/legacy-test/api/legacy-test-current.txt b/legacy-test/api/legacy-test-current.txt new file mode 100644 index 0000000000000000000000000000000000000000..7ebd6aa8a4a272f1052f770702dd68be820e01c6 --- /dev/null +++ b/legacy-test/api/legacy-test-current.txt @@ -0,0 +1,227 @@ +package android.test { + + public deprecated class AndroidTestCase extends junit.framework.TestCase { + ctor public AndroidTestCase(); + method public void assertActivityRequiresPermission(java.lang.String, java.lang.String, java.lang.String); + method public void assertReadingContentUriRequiresPermission(android.net.Uri, java.lang.String); + method public void assertWritingContentUriRequiresPermission(android.net.Uri, java.lang.String); + method public android.content.Context getContext(); + method protected void scrubClass(java.lang.Class) throws java.lang.IllegalAccessException; + method public void setContext(android.content.Context); + method public void testAndroidTestCaseSetupProperly(); + field protected android.content.Context mContext; + } + + public abstract deprecated class FlakyTest implements java.lang.annotation.Annotation { + } + + public deprecated class InstrumentationTestCase extends junit.framework.TestCase { + ctor public InstrumentationTestCase(); + method public android.app.Instrumentation getInstrumentation(); + method public deprecated void injectInsrumentation(android.app.Instrumentation); + method public void injectInstrumentation(android.app.Instrumentation); + method public final T launchActivity(java.lang.String, java.lang.Class, android.os.Bundle); + method public final T launchActivityWithIntent(java.lang.String, java.lang.Class, android.content.Intent); + method public void runTestOnUiThread(java.lang.Runnable) throws java.lang.Throwable; + method public void sendKeys(java.lang.String); + method public void sendKeys(int...); + method public void sendRepeatedKeys(int...); + } + + public deprecated class InstrumentationTestSuite extends junit.framework.TestSuite { + ctor public InstrumentationTestSuite(android.app.Instrumentation); + ctor public InstrumentationTestSuite(java.lang.String, android.app.Instrumentation); + ctor public InstrumentationTestSuite(java.lang.Class, android.app.Instrumentation); + method public void addTestSuite(java.lang.Class); + } + + public abstract deprecated interface PerformanceTestCase { + method public abstract boolean isPerformanceOnly(); + method public abstract int startPerformance(android.test.PerformanceTestCase.Intermediates); + } + + public static abstract interface PerformanceTestCase.Intermediates { + method public abstract void addIntermediate(java.lang.String); + method public abstract void addIntermediate(java.lang.String, long); + method public abstract void finishTiming(boolean); + method public abstract void setInternalIterations(int); + method public abstract void startTiming(boolean); + } + + public abstract deprecated class UiThreadTest implements java.lang.annotation.Annotation { + } + +} + +package android.test.suitebuilder.annotation { + + public abstract deprecated class LargeTest implements java.lang.annotation.Annotation { + } + + public abstract deprecated class MediumTest implements java.lang.annotation.Annotation { + } + + public abstract deprecated class SmallTest implements java.lang.annotation.Annotation { + } + + public abstract deprecated class Smoke implements java.lang.annotation.Annotation { + } + + public abstract deprecated class Suppress implements java.lang.annotation.Annotation { + } + +} + +package com.android.internal.util { + + public abstract deprecated interface Predicate { + method public abstract boolean apply(T); + } + +} + +package junit.framework { + + public class Assert { + ctor protected Assert(); + method public static void assertEquals(java.lang.String, java.lang.Object, java.lang.Object); + method public static void assertEquals(java.lang.Object, java.lang.Object); + method public static void assertEquals(java.lang.String, java.lang.String, java.lang.String); + method public static void assertEquals(java.lang.String, java.lang.String); + method public static void assertEquals(java.lang.String, double, double, double); + method public static void assertEquals(double, double, double); + method public static void assertEquals(java.lang.String, float, float, float); + method public static void assertEquals(float, float, float); + method public static void assertEquals(java.lang.String, long, long); + method public static void assertEquals(long, long); + method public static void assertEquals(java.lang.String, boolean, boolean); + method public static void assertEquals(boolean, boolean); + method public static void assertEquals(java.lang.String, byte, byte); + method public static void assertEquals(byte, byte); + method public static void assertEquals(java.lang.String, char, char); + method public static void assertEquals(char, char); + method public static void assertEquals(java.lang.String, short, short); + method public static void assertEquals(short, short); + method public static void assertEquals(java.lang.String, int, int); + method public static void assertEquals(int, int); + method public static void assertFalse(java.lang.String, boolean); + method public static void assertFalse(boolean); + method public static void assertNotNull(java.lang.Object); + method public static void assertNotNull(java.lang.String, java.lang.Object); + method public static void assertNotSame(java.lang.String, java.lang.Object, java.lang.Object); + method public static void assertNotSame(java.lang.Object, java.lang.Object); + method public static void assertNull(java.lang.Object); + method public static void assertNull(java.lang.String, java.lang.Object); + method public static void assertSame(java.lang.String, java.lang.Object, java.lang.Object); + method public static void assertSame(java.lang.Object, java.lang.Object); + method public static void assertTrue(java.lang.String, boolean); + method public static void assertTrue(boolean); + method public static void fail(java.lang.String); + method public static void fail(); + method public static void failNotEquals(java.lang.String, java.lang.Object, java.lang.Object); + method public static void failNotSame(java.lang.String, java.lang.Object, java.lang.Object); + method public static void failSame(java.lang.String); + method public static java.lang.String format(java.lang.String, java.lang.Object, java.lang.Object); + } + + public class AssertionFailedError extends java.lang.AssertionError { + ctor public AssertionFailedError(); + ctor public AssertionFailedError(java.lang.String); + } + + public class ComparisonFailure extends junit.framework.AssertionFailedError { + ctor public ComparisonFailure(java.lang.String, java.lang.String, java.lang.String); + method public java.lang.String getActual(); + method public java.lang.String getExpected(); + } + + public abstract interface Protectable { + method public abstract void protect() throws java.lang.Throwable; + } + + public abstract interface Test { + method public abstract int countTestCases(); + method public abstract void run(junit.framework.TestResult); + } + + public abstract class TestCase extends junit.framework.Assert implements junit.framework.Test { + ctor public TestCase(); + ctor public TestCase(java.lang.String); + method public int countTestCases(); + method protected junit.framework.TestResult createResult(); + method public java.lang.String getName(); + method public junit.framework.TestResult run(); + method public void run(junit.framework.TestResult); + method public void runBare() throws java.lang.Throwable; + method protected void runTest() throws java.lang.Throwable; + method public void setName(java.lang.String); + method protected void setUp() throws java.lang.Exception; + method protected void tearDown() throws java.lang.Exception; + } + + public class TestFailure { + ctor public TestFailure(junit.framework.Test, java.lang.Throwable); + method public java.lang.String exceptionMessage(); + method public junit.framework.Test failedTest(); + method public boolean isFailure(); + method public java.lang.Throwable thrownException(); + method public java.lang.String trace(); + field protected junit.framework.Test fFailedTest; + field protected java.lang.Throwable fThrownException; + } + + public abstract interface TestListener { + method public abstract void addError(junit.framework.Test, java.lang.Throwable); + method public abstract void addFailure(junit.framework.Test, junit.framework.AssertionFailedError); + method public abstract void endTest(junit.framework.Test); + method public abstract void startTest(junit.framework.Test); + } + + public class TestResult { + ctor public TestResult(); + method public synchronized void addError(junit.framework.Test, java.lang.Throwable); + method public synchronized void addFailure(junit.framework.Test, junit.framework.AssertionFailedError); + method public synchronized void addListener(junit.framework.TestListener); + method public void endTest(junit.framework.Test); + method public synchronized int errorCount(); + method public synchronized java.util.Enumeration errors(); + method public synchronized int failureCount(); + method public synchronized java.util.Enumeration failures(); + method public synchronized void removeListener(junit.framework.TestListener); + method protected void run(junit.framework.TestCase); + method public synchronized int runCount(); + method public void runProtected(junit.framework.Test, junit.framework.Protectable); + method public synchronized boolean shouldStop(); + method public void startTest(junit.framework.Test); + method public synchronized void stop(); + method public synchronized boolean wasSuccessful(); + field protected java.util.Vector fErrors; + field protected java.util.Vector fFailures; + field protected java.util.Vector fListeners; + field protected int fRunTests; + } + + public class TestSuite implements junit.framework.Test { + ctor public TestSuite(); + ctor public TestSuite(java.lang.Class); + ctor public TestSuite(java.lang.Class, java.lang.String); + ctor public TestSuite(java.lang.String); + ctor public TestSuite(java.lang.Class...); + ctor public TestSuite(java.lang.Class[], java.lang.String); + method public void addTest(junit.framework.Test); + method public void addTestSuite(java.lang.Class); + method public int countTestCases(); + method public static junit.framework.Test createTest(java.lang.Class, java.lang.String); + method public java.lang.String getName(); + method public static java.lang.reflect.Constructor getTestConstructor(java.lang.Class) throws java.lang.NoSuchMethodException; + method public void run(junit.framework.TestResult); + method public void runTest(junit.framework.Test, junit.framework.TestResult); + method public void setName(java.lang.String); + method public junit.framework.Test testAt(int); + method public int testCount(); + method public java.util.Enumeration tests(); + method public static junit.framework.Test warning(java.lang.String); + } + +} + diff --git a/legacy-test/api/legacy-test-removed.txt b/legacy-test/api/legacy-test-removed.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/legacy-test/jarjar-rules.txt b/legacy-test/jarjar-rules.txt new file mode 100644 index 0000000000000000000000000000000000000000..fd8555c8931cbd4c53097a503df925981f1df0fa --- /dev/null +++ b/legacy-test/jarjar-rules.txt @@ -0,0 +1,3 @@ +rule junit.** repackaged.junit.@1 +rule android.test.** repackaged.android.test.@1 +rule com.android.internal.util.** repackaged.com.android.internal.util.@1 diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index 303d05f084aa4c9369d9678ad4f84e2e87b6c859..770a57a5c445229452fd24934e3bb24078273ce4 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -36,6 +36,7 @@ cc_defaults { "external/skia/src/effects", "external/skia/src/image", "external/skia/src/utils", + "external/skia/src/gpu", ], product_variables: { @@ -133,6 +134,7 @@ cc_defaults { "pipeline/skia/SkiaProfileRenderer.cpp", "pipeline/skia/SkiaRecordingCanvas.cpp", "pipeline/skia/SkiaVulkanPipeline.cpp", + "pipeline/skia/VectorDrawableAtlas.cpp", "renderstate/Blend.cpp", "renderstate/MeshState.cpp", "renderstate/OffscreenBufferPool.cpp", @@ -201,6 +203,8 @@ cc_defaults { "PathParser.cpp", "PathTessellator.cpp", "PixelBuffer.cpp", + "ProfileData.cpp", + "ProfileDataContainer.cpp", "ProfileRenderer.cpp", "Program.cpp", "ProgramCache.cpp", @@ -300,7 +304,6 @@ cc_test { "tests/unit/BakedOpDispatcherTests.cpp", "tests/unit/BakedOpRendererTests.cpp", "tests/unit/BakedOpStateTests.cpp", - "tests/unit/BitmapTests.cpp", "tests/unit/CacheManagerTests.cpp", "tests/unit/CanvasContextTests.cpp", "tests/unit/CanvasStateTests.cpp", @@ -339,6 +342,7 @@ cc_test { "tests/unit/TextureCacheTests.cpp", "tests/unit/TypefaceTests.cpp", "tests/unit/VectorDrawableTests.cpp", + "tests/unit/VectorDrawableAtlasTests.cpp", ], } diff --git a/libs/hwui/AnimatorManager.cpp b/libs/hwui/AnimatorManager.cpp index f5bb821f4e2390e4eb787a7e5741964b8399f2a5..69ead58905663f1a6e3dee5093dafbf092a0fb7d 100644 --- a/libs/hwui/AnimatorManager.cpp +++ b/libs/hwui/AnimatorManager.cpp @@ -71,9 +71,11 @@ void AnimatorManager::setAnimationHandle(AnimationHandle* handle) { void AnimatorManager::pushStaging() { if (mNewAnimators.size()) { - LOG_ALWAYS_FATAL_IF(!mAnimationHandle, - "Trying to start new animators on %p (%s) without an animation handle!", - &mParent, mParent.getName()); + if (CC_UNLIKELY(!mAnimationHandle)) { + ALOGW("Trying to start new animators on %p (%s) without an animation handle!", + &mParent, mParent.getName()); + return; + } // Only add new animators that are not already in the mAnimators list for (auto& anim : mNewAnimators) { diff --git a/libs/hwui/BakedOpRenderer.cpp b/libs/hwui/BakedOpRenderer.cpp index df2b35b39aa853e31e7a50fb1baa58e991001399..3c3b3177159b58b694405c2727248ceecd6393f5 100644 --- a/libs/hwui/BakedOpRenderer.cpp +++ b/libs/hwui/BakedOpRenderer.cpp @@ -208,7 +208,6 @@ void BakedOpRenderer::drawRects(const float* rects, int count, const SkPaint* pa // TODO: Currently assume full FBO damage, due to FrameInfoVisualizer::unionDirty. // Should should scissor/set mHasDrawn safely. mRenderState.scissor().setEnabled(false); - mHasDrawn = true; Glop glop; GlopBuilder(mRenderState, mCaches, &glop) .setRoundRectClipState(nullptr) @@ -217,7 +216,8 @@ void BakedOpRenderer::drawRects(const float* rects, int count, const SkPaint* pa .setTransform(Matrix4::identity(), TransformFlags::None) .setModelViewIdentityEmptyBounds() .build(); - mRenderState.render(glop, mRenderTarget.orthoMatrix); + mRenderState.render(glop, mRenderTarget.orthoMatrix, false); + mHasDrawn = true; } // clears and re-fills stencil with provided rendertarget space quads, @@ -234,7 +234,7 @@ void BakedOpRenderer::setupStencilQuads(std::vector& quadVertices, .setTransform(Matrix4::identity(), TransformFlags::None) .setModelViewIdentityEmptyBounds() .build(); - mRenderState.render(glop, mRenderTarget.orthoMatrix); + mRenderState.render(glop, mRenderTarget.orthoMatrix, false); mRenderState.stencil().enableTest(incrementThreshold); } @@ -346,7 +346,16 @@ void BakedOpRenderer::prepareRender(const Rect* dirtyBounds, const ClipBase* cli void BakedOpRenderer::renderGlopImpl(const Rect* dirtyBounds, const ClipBase* clip, const Glop& glop) { prepareRender(dirtyBounds, clip); - mRenderState.render(glop, mRenderTarget.orthoMatrix); + // Disable blending if this is the first draw to the main framebuffer, in case app has defined + // transparency where it doesn't make sense - as first draw in opaque window. Note that we only + // apply this improvement when the blend mode is SRC_OVER - other modes (e.g. CLEAR) can be + // valid draws that affect other content (e.g. draw CLEAR, then draw DST_OVER) + bool overrideDisableBlending = !mHasDrawn + && mOpaque + && !mRenderTarget.frameBufferId + && glop.blend.src == GL_ONE + && glop.blend.dst == GL_ONE_MINUS_SRC_ALPHA; + mRenderState.render(glop, mRenderTarget.orthoMatrix, overrideDisableBlending); if (!mRenderTarget.frameBufferId) mHasDrawn = true; } diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp index 2fdfcd42a1e199112e33533816097dc932346969..0700d1fb9f70685704baf7092560ebd7b138af4b 100644 --- a/libs/hwui/Caches.cpp +++ b/libs/hwui/Caches.cpp @@ -50,9 +50,9 @@ Caches* Caches::sInstance = nullptr; /////////////////////////////////////////////////////////////////////////////// Caches::Caches(RenderState& renderState) - : gradientCache(mExtensions) + : gradientCache(extensions()) , patchCache(renderState) - , programCache(mExtensions) + , programCache(extensions()) , mRenderState(&renderState) , mInitialized(false) { INIT_LOGD("Creating OpenGL renderer caches"); @@ -80,7 +80,7 @@ bool Caches::init() { } void Caches::initExtensions() { - if (mExtensions.hasDebugMarker()) { + if (extensions().hasDebugMarker()) { eventMark = glInsertEventMarkerEXT; startMark = glPushGroupMarkerEXT; @@ -93,12 +93,12 @@ void Caches::initExtensions() { } void Caches::initConstraints() { - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); + maxTextureSize = DeviceInfo::get()->maxTextureSize(); } void Caches::initStaticProperties() { // OpenGL ES 3.0+ specific features - gpuPixelBuffersEnabled = mExtensions.hasPixelBufferObjects() + gpuPixelBuffersEnabled = extensions().hasPixelBufferObjects() && property_get_bool(PROPERTY_ENABLE_GPU_PIXEL_BUFFERS, true); } diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h index 19063e3768cd4680731332e7322b728d79d0539a..29eddde1e42b14243b2deae304e6cdf43b360f7e 100644 --- a/libs/hwui/Caches.h +++ b/libs/hwui/Caches.h @@ -16,6 +16,7 @@ #pragma once +#include "DeviceInfo.h" #include "Extensions.h" #include "FboCache.h" #include "GammaFontRenderer.h" @@ -145,10 +146,6 @@ public: // Misc GLint maxTextureSize; -private: - // Declared before gradientCache and programCache which need this to initialize. - // TODO: cleanup / move elsewhere - Extensions mExtensions; public: TextureCache textureCache; RenderBufferCache renderBufferCache; @@ -174,7 +171,7 @@ public: void setProgram(const ProgramDescription& description); void setProgram(Program* program); - const Extensions& extensions() const { return mExtensions; } + const Extensions& extensions() const { return DeviceInfo::get()->extensions(); } Program& program() { return *mProgram; } PixelBufferState& pixelBufferState() { return *mPixelBufferState; } TextureState& textureState() { return *mTextureState; } diff --git a/libs/hwui/DeviceInfo.cpp b/libs/hwui/DeviceInfo.cpp index d180ba51b304d1844cef7edc87ce2ac0bd4f20b2..37965daf9a8d9df490ac0cfe85ad241ffb956a7d 100644 --- a/libs/hwui/DeviceInfo.cpp +++ b/libs/hwui/DeviceInfo.cpp @@ -16,7 +16,8 @@ #include -#include "Extensions.h" +#include +#include #include #include @@ -46,13 +47,22 @@ void DeviceInfo::initialize() { void DeviceInfo::initialize(int maxTextureSize) { std::call_once(sInitializedFlag, [maxTextureSize]() { sDeviceInfo = new DeviceInfo(); + sDeviceInfo->loadDisplayInfo(); sDeviceInfo->mMaxTextureSize = maxTextureSize; }); } void DeviceInfo::load() { + loadDisplayInfo(); glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); } +void DeviceInfo::loadDisplayInfo() { + sp dtoken(SurfaceComposerClient::getBuiltInDisplay( + ISurfaceComposer::eDisplayIdMain)); + status_t status = SurfaceComposerClient::getDisplayInfo(dtoken, &mDisplayInfo); + LOG_ALWAYS_FATAL_IF(status, "Failed to get display info, error %d", status); +} + } /* namespace uirenderer */ } /* namespace android */ diff --git a/libs/hwui/DeviceInfo.h b/libs/hwui/DeviceInfo.h index aff84b02d85aad390cb04f6359e20ed639699f10..5bd7b14b156db46e37c7f294fd1bde0a04bbdb76 100644 --- a/libs/hwui/DeviceInfo.h +++ b/libs/hwui/DeviceInfo.h @@ -16,7 +16,10 @@ #ifndef DEVICEINFO_H #define DEVICEINFO_H +#include + #include "utils/Macros.h" +#include "Extensions.h" namespace android { namespace uirenderer { @@ -35,14 +38,24 @@ public: static void initialize(int maxTextureSize); int maxTextureSize() const { return mMaxTextureSize; } + const DisplayInfo& displayInfo() const { return mDisplayInfo; } + const Extensions& extensions() const { return mExtensions; } + + static uint32_t multiplyByResolution(uint32_t in) { + auto di = DeviceInfo::get()->displayInfo(); + return di.w * di.h * in; + } private: DeviceInfo() {} ~DeviceInfo() {} void load(); + void loadDisplayInfo(); int mMaxTextureSize; + DisplayInfo mDisplayInfo; + Extensions mExtensions; }; } /* namespace uirenderer */ diff --git a/libs/hwui/FboCache.cpp b/libs/hwui/FboCache.cpp index b2181b60054fefbb8bef1792f93d40e0e3b6c7f5..a39e49f82eb08a5d46d758f48ec247db6e1f3eb8 100644 --- a/libs/hwui/FboCache.cpp +++ b/libs/hwui/FboCache.cpp @@ -28,7 +28,7 @@ namespace uirenderer { /////////////////////////////////////////////////////////////////////////////// FboCache::FboCache() - : mMaxSize(Properties::fboCacheSize) {} + : mMaxSize(0) {} FboCache::~FboCache() { clear(); diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp index ee99018fb65240892b0f47169ea18e89f771620b..8b0346867cbcf2c9706d092f5865c3dfa58b34d0 100644 --- a/libs/hwui/FontRenderer.cpp +++ b/libs/hwui/FontRenderer.cpp @@ -32,7 +32,6 @@ #include "utils/Timing.h" #include -#include #include #include #include @@ -99,22 +98,23 @@ FontRenderer::FontRenderer(const uint8_t* gammaTable) INIT_LOGD("Creating FontRenderer"); } - mSmallCacheWidth = property_get_int32(PROPERTY_TEXT_SMALL_CACHE_WIDTH, - DEFAULT_TEXT_SMALL_CACHE_WIDTH); - mSmallCacheHeight = property_get_int32(PROPERTY_TEXT_SMALL_CACHE_HEIGHT, - DEFAULT_TEXT_SMALL_CACHE_HEIGHT); + auto deviceInfo = DeviceInfo::get(); + auto displayInfo = deviceInfo->displayInfo(); + int maxTextureSize = deviceInfo->maxTextureSize(); - mLargeCacheWidth = property_get_int32(PROPERTY_TEXT_LARGE_CACHE_WIDTH, - DEFAULT_TEXT_LARGE_CACHE_WIDTH); - mLargeCacheHeight = property_get_int32(PROPERTY_TEXT_LARGE_CACHE_HEIGHT, - DEFAULT_TEXT_LARGE_CACHE_HEIGHT); + // Adjust cache size based on Pixel's desnsity. + constexpr float PIXEL_DENSITY = 2.6; + const float densityRatio = displayInfo.density / PIXEL_DENSITY; - uint32_t maxTextureSize = (uint32_t) Caches::getInstance().maxTextureSize; - - mSmallCacheWidth = std::min(mSmallCacheWidth, maxTextureSize); - mSmallCacheHeight = std::min(mSmallCacheHeight, maxTextureSize); - mLargeCacheWidth = std::min(mLargeCacheWidth, maxTextureSize); - mLargeCacheHeight = std::min(mLargeCacheHeight, maxTextureSize); + // TODO: Most devices are hardcoded with this configuration, does it need to be dynamic? + mSmallCacheWidth = + OffscreenBuffer::computeIdealDimension(std::min(1024, maxTextureSize) * densityRatio); + mSmallCacheHeight = + OffscreenBuffer::computeIdealDimension(std::min(1024, maxTextureSize) * densityRatio); + mLargeCacheWidth = + OffscreenBuffer::computeIdealDimension(std::min(2048, maxTextureSize) * densityRatio); + mLargeCacheHeight = + OffscreenBuffer::computeIdealDimension(std::min(1024, maxTextureSize) * densityRatio); if (sLogFontRendererCreate) { INIT_LOGD(" Text cache sizes, in pixels: %i x %i, %i x %i, %i x %i, %i x %i", diff --git a/libs/hwui/GradientCache.cpp b/libs/hwui/GradientCache.cpp index d4d0c997be11f17ab21c910d88acbdf29e0e4364..20262349dda471f492831ce6826f6d6979f2c823 100644 --- a/libs/hwui/GradientCache.cpp +++ b/libs/hwui/GradientCache.cpp @@ -20,6 +20,7 @@ #include "Debug.h" #include "GradientCache.h" #include "Properties.h" +#include "DeviceInfo.h" #include @@ -62,14 +63,14 @@ int GradientCacheEntry::compare(const GradientCacheEntry& lhs, const GradientCac // Constructors/destructor /////////////////////////////////////////////////////////////////////////////// -GradientCache::GradientCache(Extensions& extensions) +GradientCache::GradientCache(const Extensions& extensions) : mCache(LruCache::kUnlimitedCapacity) , mSize(0) - , mMaxSize(Properties::gradientCacheSize) + , mMaxSize(MB(1)) , mUseFloatTexture(extensions.hasFloatTextures()) , mHasNpot(extensions.hasNPot()) , mHasLinearBlending(extensions.hasLinearBlending()) { - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); + mMaxTextureSize = DeviceInfo::get()->maxTextureSize(); mCache.setOnEntryRemovedListener(this); } diff --git a/libs/hwui/GradientCache.h b/libs/hwui/GradientCache.h index f299a40e994f5facfa605f6a92296754dc54e0ce..d95589c514ebb77e4ea16cb7971c8458b8a89eb1 100644 --- a/libs/hwui/GradientCache.h +++ b/libs/hwui/GradientCache.h @@ -105,7 +105,7 @@ inline hash_t hash_type(const GradientCacheEntry& entry) { */ class GradientCache: public OnEntryRemoved { public: - explicit GradientCache(Extensions& extensions); + explicit GradientCache(const Extensions& extensions); ~GradientCache(); /** diff --git a/libs/hwui/JankTracker.cpp b/libs/hwui/JankTracker.cpp index 028d9f756fb715506db100f2db383a4b8433a497..9d11828194441ae85cd2501f4fbaebe82d166a14 100644 --- a/libs/hwui/JankTracker.cpp +++ b/libs/hwui/JankTracker.cpp @@ -34,14 +34,6 @@ namespace android { namespace uirenderer { -static const char* JANK_TYPE_NAMES[] = { - "Missed Vsync", - "High input latency", - "Slow UI thread", - "Slow bitmap uploads", - "Slow issue draw commands", -}; - struct Comparison { FrameInfoIndex start; FrameInfoIndex end; @@ -68,70 +60,13 @@ static const int64_t IGNORE_EXCEEDING = seconds_to_nanoseconds(10); */ static const int64_t EXEMPT_FRAMES_FLAGS = FrameInfoFlags::SurfaceCanvas; -// The bucketing algorithm controls so to speak -// If a frame is <= to this it goes in bucket 0 -static const uint32_t kBucketMinThreshold = 5; -// If a frame is > this, start counting in increments of 2ms -static const uint32_t kBucket2msIntervals = 32; -// If a frame is > this, start counting in increments of 4ms -static const uint32_t kBucket4msIntervals = 48; - // For testing purposes to try and eliminate test infra overhead we will // consider any unknown delay of frame start as part of the test infrastructure // and filter it out of the frame profile data static FrameInfoIndex sFrameStart = FrameInfoIndex::IntendedVsync; -// The interval of the slow frame histogram -static const uint32_t kSlowFrameBucketIntervalMs = 50; -// The start point of the slow frame bucket in ms -static const uint32_t kSlowFrameBucketStartMs = 150; - -// This will be called every frame, performance sensitive -// Uses bit twiddling to avoid branching while achieving the packing desired -static uint32_t frameCountIndexForFrameTime(nsecs_t frameTime) { - uint32_t index = static_cast(ns2ms(frameTime)); - // If index > kBucketMinThreshold mask will be 0xFFFFFFFF as a result - // of negating 1 (twos compliment, yaay) else mask will be 0 - uint32_t mask = -(index > kBucketMinThreshold); - // If index > threshold, this will essentially perform: - // amountAboveThreshold = index - threshold; - // index = threshold + (amountAboveThreshold / 2) - // However if index is <= this will do nothing. It will underflow, do - // a right shift by 0 (no-op), then overflow back to the original value - index = ((index - kBucket4msIntervals) >> (index > kBucket4msIntervals)) - + kBucket4msIntervals; - index = ((index - kBucket2msIntervals) >> (index > kBucket2msIntervals)) - + kBucket2msIntervals; - // If index was < minThreshold at the start of all this it's going to - // be a pretty garbage value right now. However, mask is 0 so we'll end - // up with the desired result of 0. - index = (index - kBucketMinThreshold) & mask; - return index; -} - -// Only called when dumping stats, less performance sensitive -int32_t JankTracker::frameTimeForFrameCountIndex(uint32_t index) { - index = index + kBucketMinThreshold; - if (index > kBucket2msIntervals) { - index += (index - kBucket2msIntervals); - } - if (index > kBucket4msIntervals) { - // This works because it was already doubled by the above if - // 1 is added to shift slightly more towards the middle of the bucket - index += (index - kBucket4msIntervals) + 1; - } - return index; -} - -int32_t JankTracker::frameTimeForSlowFrameCountIndex(uint32_t index) { - return (index * kSlowFrameBucketIntervalMs) + kSlowFrameBucketStartMs; -} - -JankTracker::JankTracker(const DisplayInfo& displayInfo) { - // By default this will use malloc memory. It may be moved later to ashmem - // if there is shared space for it and a request comes in to do that. - mData = new ProfileData; - reset(); +JankTracker::JankTracker(ProfileDataContainer* globalData, const DisplayInfo& displayInfo) { + mGlobalData = globalData; nsecs_t frameIntervalNanos = static_cast(1_s / displayInfo.fps); #if USE_HWC2 nsecs_t sfOffset = frameIntervalNanos - (displayInfo.presentationDeadline - 1_ms); @@ -151,82 +86,6 @@ JankTracker::JankTracker(const DisplayInfo& displayInfo) { setFrameInterval(frameIntervalNanos); } -JankTracker::~JankTracker() { - freeData(); -} - -void JankTracker::freeData() { - if (mIsMapped) { - munmap(mData, sizeof(ProfileData)); - } else { - delete mData; - } - mIsMapped = false; - mData = nullptr; -} - -void JankTracker::rotateStorage() { - // If we are mapped we want to stop using the ashmem backend and switch to malloc - // We are expecting a switchStorageToAshmem call to follow this, but it's not guaranteed - // If we aren't sitting on top of ashmem then just do a reset() as it's functionally - // equivalent do a free, malloc, reset. - if (mIsMapped) { - freeData(); - mData = new ProfileData; - } - reset(); -} - -void JankTracker::switchStorageToAshmem(int ashmemfd) { - int regionSize = ashmem_get_size_region(ashmemfd); - if (regionSize < 0) { - int err = errno; - ALOGW("Failed to get ashmem region size from fd %d, err %d %s", ashmemfd, err, strerror(err)); - return; - } - if (regionSize < static_cast(sizeof(ProfileData))) { - ALOGW("Ashmem region is too small! Received %d, required %u", - regionSize, static_cast(sizeof(ProfileData))); - return; - } - ProfileData* newData = reinterpret_cast( - mmap(NULL, sizeof(ProfileData), PROT_READ | PROT_WRITE, - MAP_SHARED, ashmemfd, 0)); - if (newData == MAP_FAILED) { - int err = errno; - ALOGW("Failed to move profile data to ashmem fd %d, error = %d", - ashmemfd, err); - return; - } - - // The new buffer may have historical data that we want to build on top of - // But let's make sure we don't overflow Just In Case - uint32_t divider = 0; - if (newData->totalFrameCount > (1 << 24)) { - divider = 4; - } - for (size_t i = 0; i < mData->jankTypeCounts.size(); i++) { - newData->jankTypeCounts[i] >>= divider; - newData->jankTypeCounts[i] += mData->jankTypeCounts[i]; - } - for (size_t i = 0; i < mData->frameCounts.size(); i++) { - newData->frameCounts[i] >>= divider; - newData->frameCounts[i] += mData->frameCounts[i]; - } - newData->jankFrameCount >>= divider; - newData->jankFrameCount += mData->jankFrameCount; - newData->totalFrameCount >>= divider; - newData->totalFrameCount += mData->totalFrameCount; - if (newData->statStartTime > mData->statStartTime - || newData->statStartTime == 0) { - newData->statStartTime = mData->statStartTime; - } - - freeData(); - mData = newData; - mIsMapped = true; -} - void JankTracker::setFrameInterval(nsecs_t frameInterval) { mFrameInterval = frameInterval; mThresholds[kMissedVsync] = 1; @@ -250,8 +109,7 @@ void JankTracker::setFrameInterval(nsecs_t frameInterval) { } -void JankTracker::addFrame(const FrameInfo& frame) { - mData->totalFrameCount++; +void JankTracker::finishFrame(const FrameInfo& frame) { // Fast-path for jank-free frames int64_t totalDuration = frame.duration(sFrameStart, FrameInfoIndex::FrameCompleted); if (mDequeueTimeForgiveness @@ -271,11 +129,11 @@ void JankTracker::addFrame(const FrameInfo& frame) { } } LOG_ALWAYS_FATAL_IF(totalDuration <= 0, "Impossible totalDuration %" PRId64, totalDuration); - uint32_t framebucket = frameCountIndexForFrameTime(totalDuration); - LOG_ALWAYS_FATAL_IF(framebucket < 0, "framebucket < 0 (%u)", framebucket); + mData->reportFrame(totalDuration); + (*mGlobalData)->reportFrame(totalDuration); + // Keep the fast path as fast as possible. if (CC_LIKELY(totalDuration < mFrameInterval)) { - mData->frameCounts[framebucket]++; return; } @@ -284,22 +142,14 @@ void JankTracker::addFrame(const FrameInfo& frame) { return; } - if (framebucket <= mData->frameCounts.size()) { - mData->frameCounts[framebucket]++; - } else { - framebucket = (ns2ms(totalDuration) - kSlowFrameBucketStartMs) - / kSlowFrameBucketIntervalMs; - framebucket = std::min(framebucket, - static_cast(mData->slowFrameCounts.size() - 1)); - mData->slowFrameCounts[framebucket]++; - } - - mData->jankFrameCount++; + mData->reportJank(); + (*mGlobalData)->reportJank(); for (int i = 0; i < NUM_BUCKETS; i++) { int64_t delta = frame.duration(COMPARISONS[i].start, COMPARISONS[i].end); if (delta >= mThresholds[i] && delta < IGNORE_EXCEEDING) { - mData->jankTypeCounts[i]++; + mData->reportJankType((JankType) i); + (*mGlobalData)->reportJankType((JankType) i); } } } @@ -320,58 +170,39 @@ void JankTracker::dumpData(int fd, const ProfileDataDescription* description, co if (sFrameStart != FrameInfoIndex::IntendedVsync) { dprintf(fd, "\nNote: Data has been filtered!"); } - dprintf(fd, "\nStats since: %" PRIu64 "ns", data->statStartTime); - dprintf(fd, "\nTotal frames rendered: %u", data->totalFrameCount); - dprintf(fd, "\nJanky frames: %u (%.2f%%)", data->jankFrameCount, - (float) data->jankFrameCount / (float) data->totalFrameCount * 100.0f); - dprintf(fd, "\n50th percentile: %ums", findPercentile(data, 50)); - dprintf(fd, "\n90th percentile: %ums", findPercentile(data, 90)); - dprintf(fd, "\n95th percentile: %ums", findPercentile(data, 95)); - dprintf(fd, "\n99th percentile: %ums", findPercentile(data, 99)); - for (int i = 0; i < NUM_BUCKETS; i++) { - dprintf(fd, "\nNumber %s: %u", JANK_TYPE_NAMES[i], data->jankTypeCounts[i]); - } - dprintf(fd, "\nHISTOGRAM:"); - for (size_t i = 0; i < data->frameCounts.size(); i++) { - dprintf(fd, " %ums=%u", frameTimeForFrameCountIndex(i), - data->frameCounts[i]); - } - for (size_t i = 0; i < data->slowFrameCounts.size(); i++) { - dprintf(fd, " %ums=%u", frameTimeForSlowFrameCountIndex(i), - data->slowFrameCounts[i]); - } + data->dump(fd); dprintf(fd, "\n"); } +void JankTracker::dumpFrames(int fd) { + FILE* file = fdopen(fd, "a"); + fprintf(file, "\n\n---PROFILEDATA---\n"); + for (size_t i = 0; i < static_cast(FrameInfoIndex::NumIndexes); i++) { + fprintf(file, "%s", FrameInfoNames[i].c_str()); + fprintf(file, ","); + } + for (size_t i = 0; i < mFrames.size(); i++) { + FrameInfo& frame = mFrames[i]; + if (frame[FrameInfoIndex::SyncStart] == 0) { + continue; + } + fprintf(file, "\n"); + for (int i = 0; i < static_cast(FrameInfoIndex::NumIndexes); i++) { + fprintf(file, "%" PRId64 ",", frame[i]); + } + } + fprintf(file, "\n---PROFILEDATA---\n\n"); + fflush(file); +} + void JankTracker::reset() { - mData->jankTypeCounts.fill(0); - mData->frameCounts.fill(0); - mData->slowFrameCounts.fill(0); - mData->totalFrameCount = 0; - mData->jankFrameCount = 0; - mData->statStartTime = systemTime(CLOCK_MONOTONIC); + mFrames.clear(); + mData->reset(); + (*mGlobalData)->reset(); sFrameStart = Properties::filterOutTestOverhead ? FrameInfoIndex::HandleInputStart : FrameInfoIndex::IntendedVsync; } -uint32_t JankTracker::findPercentile(const ProfileData* data, int percentile) { - int pos = percentile * data->totalFrameCount / 100; - int remaining = data->totalFrameCount - pos; - for (int i = data->slowFrameCounts.size() - 1; i >= 0; i--) { - remaining -= data->slowFrameCounts[i]; - if (remaining <= 0) { - return (i * kSlowFrameBucketIntervalMs) + kSlowFrameBucketStartMs; - } - } - for (int i = data->frameCounts.size() - 1; i >= 0; i--) { - remaining -= data->frameCounts[i]; - if (remaining <= 0) { - return frameTimeForFrameCountIndex(i); - } - } - return 0; -} - } /* namespace uirenderer */ } /* namespace android */ diff --git a/libs/hwui/JankTracker.h b/libs/hwui/JankTracker.h index 6ff5d890eaf736d74b991518886324c30b4fa05a..e56c0791d3a47be7a7e25cdcf36927925e9affe9 100644 --- a/libs/hwui/JankTracker.h +++ b/libs/hwui/JankTracker.h @@ -17,6 +17,8 @@ #define JANKTRACKER_H_ #include "FrameInfo.h" +#include "ProfileData.h" +#include "ProfileDataContainer.h" #include "renderthread/TimeLord.h" #include "utils/RingBuffer.h" @@ -29,31 +31,6 @@ namespace android { namespace uirenderer { -enum JankType { - kMissedVsync = 0, - kHighInputLatency, - kSlowUI, - kSlowSync, - kSlowRT, - - // must be last - NUM_BUCKETS, -}; - -// Try to keep as small as possible, should match ASHMEM_SIZE in -// GraphicsStatsService.java -struct ProfileData { - std::array jankTypeCounts; - // See comments on kBucket* constants for what this holds - std::array frameCounts; - // Holds a histogram of frame times in 50ms increments from 150ms to 5s - std::array slowFrameCounts; - - uint32_t totalFrameCount; - uint32_t jankFrameCount; - nsecs_t statStartTime; -}; - enum class JankTrackerType { // The default, means there's no description set Generic, @@ -72,31 +49,27 @@ struct ProfileDataDescription { // TODO: Replace DrawProfiler with this class JankTracker { public: - explicit JankTracker(const DisplayInfo& displayInfo); - ~JankTracker(); + explicit JankTracker(ProfileDataContainer* globalData, const DisplayInfo& displayInfo); void setDescription(JankTrackerType type, const std::string&& name) { mDescription.type = type; mDescription.name = name; } - void addFrame(const FrameInfo& frame); + FrameInfo* startFrame() { return &mFrames.next(); } + void finishFrame(const FrameInfo& frame); - void dump(int fd) { dumpData(fd, &mDescription, mData); } + void dumpStats(int fd) { dumpData(fd, &mDescription, mData.get()); } + void dumpFrames(int fd); void reset(); - void rotateStorage(); - void switchStorageToAshmem(int ashmemfd); - - uint32_t findPercentile(int p) { return findPercentile(mData, p); } - static int32_t frameTimeForFrameCountIndex(uint32_t index); - static int32_t frameTimeForSlowFrameCountIndex(uint32_t index); + // Exposed for FrameInfoVisualizer + // TODO: Figure out a better way to handle this + RingBuffer& frames() { return mFrames; } private: - void freeData(); void setFrameInterval(nsecs_t frameIntervalNanos); - static uint32_t findPercentile(const ProfileData* data, int p); static void dumpData(int fd, const ProfileDataDescription* description, const ProfileData* data); std::array mThresholds; @@ -109,9 +82,12 @@ private: // This is only used if we are in pipelined mode and are using HWC2, // otherwise it's 0. nsecs_t mDequeueTimeForgiveness = 0; - ProfileData* mData; - bool mIsMapped = false; + ProfileDataContainer mData; + ProfileDataContainer* mGlobalData; ProfileDataDescription mDescription; + + // Ring buffer large enough for 2 seconds worth of frames + RingBuffer mFrames; }; } /* namespace uirenderer */ diff --git a/libs/hwui/OpenGLReadback.cpp b/libs/hwui/OpenGLReadback.cpp index 19d5d9d2250eebff973cfc00a90f625e605d1657..2687410897acba80c841b303466a5f8d2e14b91e 100644 --- a/libs/hwui/OpenGLReadback.cpp +++ b/libs/hwui/OpenGLReadback.cpp @@ -85,11 +85,6 @@ CopyResult OpenGLReadback::copyGraphicBufferInto(GraphicBuffer* graphicBuffer, uint32_t width = graphicBuffer->getWidth(); uint32_t height = graphicBuffer->getHeight(); - // If this is a 90 or 270 degree rotation we need to swap width/height - // This is a fuzzy way of checking that. - if (texTransform[Matrix4::kSkewX] >= 0.5f || texTransform[Matrix4::kSkewX] <= -0.5f) { - std::swap(width, height); - } CopyResult copyResult = copyImageInto(sourceImage, texTransform, width, height, srcRect, bitmap); @@ -233,11 +228,12 @@ inline CopyResult copyTextureInto(Caches& caches, RenderState& renderState, .build(); Matrix4 ortho; ortho.loadOrtho(destWidth, destHeight); - renderState.render(glop, ortho); + renderState.render(glop, ortho, false); // TODO: We should convert to linear space when the target is RGBA16F glReadPixels(0, 0, bitmap->width(), bitmap->height(), format, type, bitmap->getPixels()); + bitmap->notifyPixelsChanged(); } // Cleanup @@ -253,6 +249,12 @@ CopyResult OpenGLReadbackImpl::copyImageInto(EGLImageKHR eglImage, const Matrix4& imgTransform, int imgWidth, int imgHeight, const Rect& srcRect, SkBitmap* bitmap) { + // If this is a 90 or 270 degree rotation we need to swap width/height + // This is a fuzzy way of checking that. + if (imgTransform[Matrix4::kSkewX] >= 0.5f || imgTransform[Matrix4::kSkewX] <= -0.5f) { + std::swap(imgWidth, imgHeight); + } + Caches& caches = Caches::getInstance(); GLuint sourceTexId; // Create a 2D texture to sample from the EGLImage @@ -278,6 +280,11 @@ CopyResult OpenGLReadbackImpl::copyImageInto(EGLImageKHR eglImage, bool OpenGLReadbackImpl::copyLayerInto(renderthread::RenderThread& renderThread, GlLayer& layer, SkBitmap* bitmap) { + if (!layer.isRenderable()) { + // layer has never been updated by DeferredLayerUpdater, abort copy + return false; + } + return CopyResult::Success == copyTextureInto(Caches::getInstance(), renderThread.renderState(), layer.getTexture(), layer.getTexTransform(), Rect(), bitmap); diff --git a/libs/hwui/PatchCache.cpp b/libs/hwui/PatchCache.cpp index 983c17e922669a92edfa72c4fae03e67fb9e6206..78c7eb9ad809a426e7102b6027098fbf0166cfb3 100644 --- a/libs/hwui/PatchCache.cpp +++ b/libs/hwui/PatchCache.cpp @@ -32,7 +32,7 @@ namespace uirenderer { PatchCache::PatchCache(RenderState& renderState) : mRenderState(renderState) - , mMaxSize(Properties::patchCacheSize) + , mMaxSize(KB(128)) , mSize(0) , mCache(LruCache::kUnlimitedCapacity) , mMeshBuffer(0) diff --git a/libs/hwui/PathCache.cpp b/libs/hwui/PathCache.cpp index cc96de71df826bdff57bc25fbf66451b50a904f3..8d4ae1b6622afa1769b0600dda93a46743518d98 100644 --- a/libs/hwui/PathCache.cpp +++ b/libs/hwui/PathCache.cpp @@ -38,6 +38,8 @@ namespace android { namespace uirenderer { +static constexpr size_t PATH_CACHE_COUNT_LIMIT = 256; + template static bool compareWidthHeight(const T& lhs, const T& rhs) { return (lhs.mWidth == rhs.mWidth) && (lhs.mHeight == rhs.mHeight); @@ -179,13 +181,9 @@ static sk_sp drawPath(const SkPath* path, const SkPaint* paint, PathText PathCache::PathCache() : mCache(LruCache::kUnlimitedCapacity) , mSize(0) - , mMaxSize(Properties::pathCacheSize) { + , mMaxSize(DeviceInfo::multiplyByResolution(4)) { mCache.setOnEntryRemovedListener(this); - - GLint maxTextureSize; - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); - mMaxTextureSize = maxTextureSize; - + mMaxTextureSize = DeviceInfo::get()->maxTextureSize(); mDebugEnabled = Properties::debugLevel & kDebugCaches; } @@ -259,12 +257,7 @@ void PathCache::purgeCache(uint32_t width, uint32_t height) { } void PathCache::trim() { - // 25 is just an arbitrary lower bound to ensure we aren't in weird edge cases - // of things like a cap of 0 or 1 as that's going to break things. - // It does not represent a reasonable minimum value - static_assert(DEFAULT_PATH_TEXTURE_CAP > 25, "Path cache texture cap is too small"); - - while (mSize > mMaxSize || mCache.size() > DEFAULT_PATH_TEXTURE_CAP) { + while (mSize > mMaxSize || mCache.size() > PATH_CACHE_COUNT_LIMIT) { LOG_ALWAYS_FATAL_IF(!mCache.size(), "Inconsistent mSize! Ran out of items to remove!" " mSize = %u, mMaxSize = %u", mSize, mMaxSize); mCache.removeOldest(); diff --git a/libs/hwui/ProfileData.cpp b/libs/hwui/ProfileData.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a295c5debc67b2510166177456d38dd7ab78cbf0 --- /dev/null +++ b/libs/hwui/ProfileData.cpp @@ -0,0 +1,177 @@ +/* + * 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. + */ + +#include "ProfileData.h" + +#include + +namespace android { +namespace uirenderer { + +static const char* JANK_TYPE_NAMES[] = { + "Missed Vsync", + "High input latency", + "Slow UI thread", + "Slow bitmap uploads", + "Slow issue draw commands", +}; + +// The bucketing algorithm controls so to speak +// If a frame is <= to this it goes in bucket 0 +static const uint32_t kBucketMinThreshold = 5; +// If a frame is > this, start counting in increments of 2ms +static const uint32_t kBucket2msIntervals = 32; +// If a frame is > this, start counting in increments of 4ms +static const uint32_t kBucket4msIntervals = 48; + +// The interval of the slow frame histogram +static const uint32_t kSlowFrameBucketIntervalMs = 50; +// The start point of the slow frame bucket in ms +static const uint32_t kSlowFrameBucketStartMs = 150; + +// This will be called every frame, performance sensitive +// Uses bit twiddling to avoid branching while achieving the packing desired +static uint32_t frameCountIndexForFrameTime(nsecs_t frameTime) { + uint32_t index = static_cast(ns2ms(frameTime)); + // If index > kBucketMinThreshold mask will be 0xFFFFFFFF as a result + // of negating 1 (twos compliment, yaay) else mask will be 0 + uint32_t mask = -(index > kBucketMinThreshold); + // If index > threshold, this will essentially perform: + // amountAboveThreshold = index - threshold; + // index = threshold + (amountAboveThreshold / 2) + // However if index is <= this will do nothing. It will underflow, do + // a right shift by 0 (no-op), then overflow back to the original value + index = ((index - kBucket4msIntervals) >> (index > kBucket4msIntervals)) + + kBucket4msIntervals; + index = ((index - kBucket2msIntervals) >> (index > kBucket2msIntervals)) + + kBucket2msIntervals; + // If index was < minThreshold at the start of all this it's going to + // be a pretty garbage value right now. However, mask is 0 so we'll end + // up with the desired result of 0. + index = (index - kBucketMinThreshold) & mask; + return index; +} + +// Only called when dumping stats, less performance sensitive +uint32_t ProfileData::frameTimeForFrameCountIndex(uint32_t index) { + index = index + kBucketMinThreshold; + if (index > kBucket2msIntervals) { + index += (index - kBucket2msIntervals); + } + if (index > kBucket4msIntervals) { + // This works because it was already doubled by the above if + // 1 is added to shift slightly more towards the middle of the bucket + index += (index - kBucket4msIntervals) + 1; + } + return index; +} + +uint32_t ProfileData::frameTimeForSlowFrameCountIndex(uint32_t index) { + return (index * kSlowFrameBucketIntervalMs) + kSlowFrameBucketStartMs; +} + +void ProfileData::mergeWith(const ProfileData& other) { + // Make sure we don't overflow Just In Case + uint32_t divider = 0; + if (mTotalFrameCount > (1 << 24)) { + divider = 4; + } + for (size_t i = 0; i < other.mJankTypeCounts.size(); i++) { + mJankTypeCounts[i] >>= divider; + mJankTypeCounts[i] += other.mJankTypeCounts[i]; + } + for (size_t i = 0; i < other.mFrameCounts.size(); i++) { + mFrameCounts[i] >>= divider; + mFrameCounts[i] += other.mFrameCounts[i]; + } + mJankFrameCount >>= divider; + mJankFrameCount += other.mJankFrameCount; + mTotalFrameCount >>= divider; + mTotalFrameCount += other.mTotalFrameCount; + if (mStatStartTime > other.mStatStartTime + || mStatStartTime == 0) { + mStatStartTime = other.mStatStartTime; + } +} + +void ProfileData::dump(int fd) const { + dprintf(fd, "\nStats since: %" PRIu64 "ns", mStatStartTime); + dprintf(fd, "\nTotal frames rendered: %u", mTotalFrameCount); + dprintf(fd, "\nJanky frames: %u (%.2f%%)", mJankFrameCount, + (float) mJankFrameCount / (float) mTotalFrameCount * 100.0f); + dprintf(fd, "\n50th percentile: %ums", findPercentile(50)); + dprintf(fd, "\n90th percentile: %ums", findPercentile(90)); + dprintf(fd, "\n95th percentile: %ums", findPercentile(95)); + dprintf(fd, "\n99th percentile: %ums", findPercentile(99)); + for (int i = 0; i < NUM_BUCKETS; i++) { + dprintf(fd, "\nNumber %s: %u", JANK_TYPE_NAMES[i], mJankTypeCounts[i]); + } + dprintf(fd, "\nHISTOGRAM:"); + histogramForEach([fd](HistogramEntry entry) { + dprintf(fd, " %ums=%u", entry.renderTimeMs, entry.frameCount); + }); +} + +uint32_t ProfileData::findPercentile(int percentile) const { + int pos = percentile * mTotalFrameCount / 100; + int remaining = mTotalFrameCount - pos; + for (int i = mSlowFrameCounts.size() - 1; i >= 0; i--) { + remaining -= mSlowFrameCounts[i]; + if (remaining <= 0) { + return (i * kSlowFrameBucketIntervalMs) + kSlowFrameBucketStartMs; + } + } + for (int i = mFrameCounts.size() - 1; i >= 0; i--) { + remaining -= mFrameCounts[i]; + if (remaining <= 0) { + return frameTimeForFrameCountIndex(i); + } + } + return 0; +} + +void ProfileData::reset() { + mJankTypeCounts.fill(0); + mFrameCounts.fill(0); + mSlowFrameCounts.fill(0); + mTotalFrameCount = 0; + mJankFrameCount = 0; + mStatStartTime = systemTime(CLOCK_MONOTONIC); +} + +void ProfileData::reportFrame(int64_t duration) { + mTotalFrameCount++; + uint32_t framebucket = frameCountIndexForFrameTime(duration); + if (framebucket <= mFrameCounts.size()) { + mFrameCounts[framebucket]++; + } else { + framebucket = (ns2ms(duration) - kSlowFrameBucketStartMs) / kSlowFrameBucketIntervalMs; + framebucket = std::min(framebucket, static_cast(mSlowFrameCounts.size() - 1)); + mSlowFrameCounts[framebucket]++; + } +} + +void ProfileData::histogramForEach(const std::function& callback) const { + for (size_t i = 0; i < mFrameCounts.size(); i++) { + callback(HistogramEntry{frameTimeForFrameCountIndex(i), mFrameCounts[i]}); + } + for (size_t i = 0; i < mSlowFrameCounts.size(); i++) { + callback(HistogramEntry{frameTimeForSlowFrameCountIndex(i), mSlowFrameCounts[i]}); + } +} + +} /* namespace uirenderer */ +} /* namespace android */ \ No newline at end of file diff --git a/libs/hwui/ProfileData.h b/libs/hwui/ProfileData.h new file mode 100644 index 0000000000000000000000000000000000000000..d53ee29511f0776fc419862f80a0296322436a3c --- /dev/null +++ b/libs/hwui/ProfileData.h @@ -0,0 +1,109 @@ +/* + * 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. + */ + +#pragma once + +#include "utils/Macros.h" + +#include + +#include +#include +#include + +namespace android { +namespace uirenderer { + +enum JankType { + kMissedVsync = 0, + kHighInputLatency, + kSlowUI, + kSlowSync, + kSlowRT, + + // must be last + NUM_BUCKETS, +}; + +// For testing +class MockProfileData; + +// Try to keep as small as possible, should match ASHMEM_SIZE in +// GraphicsStatsService.java +class ProfileData { + PREVENT_COPY_AND_ASSIGN(ProfileData); + +public: + ProfileData() { reset(); } + + void reset(); + void mergeWith(const ProfileData& other); + void dump(int fd) const; + uint32_t findPercentile(int percentile) const; + + void reportFrame(int64_t duration); + void reportJank() { mJankFrameCount++; } + void reportJankType(JankType type) { mJankTypeCounts[static_cast(type)]++; } + + uint32_t totalFrameCount() const { return mTotalFrameCount; } + uint32_t jankFrameCount() const { return mJankFrameCount; } + nsecs_t statsStartTime() const { return mStatStartTime; } + uint32_t jankTypeCount(JankType type) const { return mJankTypeCounts[static_cast(type)]; } + + struct HistogramEntry { + uint32_t renderTimeMs; + uint32_t frameCount; + }; + void histogramForEach(const std::function& callback) const; + + constexpr static int HistogramSize() { + return std::tuple_size::value + + std::tuple_size::value; + } + + // Visible for testing + static uint32_t frameTimeForFrameCountIndex(uint32_t index); + static uint32_t frameTimeForSlowFrameCountIndex(uint32_t index); + +private: + // Open our guts up to unit tests + friend class MockProfileData; + + std::array mJankTypeCounts; + // See comments on kBucket* constants for what this holds + std::array mFrameCounts; + // Holds a histogram of frame times in 50ms increments from 150ms to 5s + std::array mSlowFrameCounts; + + uint32_t mTotalFrameCount; + uint32_t mJankFrameCount; + nsecs_t mStatStartTime; +}; + +// For testing +class MockProfileData : public ProfileData { +public: + std::array& editJankTypeCounts() { return mJankTypeCounts; } + std::array& editFrameCounts() { return mFrameCounts; } + std::array& editSlowFrameCounts() { return mSlowFrameCounts; } + uint32_t& editTotalFrameCount() { return mTotalFrameCount; } + uint32_t& editJankFrameCount() { return mJankFrameCount; } + nsecs_t& editStatStartTime() { return mStatStartTime; } +}; + +} /* namespace uirenderer */ +} /* namespace android */ + diff --git a/libs/hwui/ProfileDataContainer.cpp b/libs/hwui/ProfileDataContainer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cbf3eb390f5365cb0739e6bb1f6ce945acdafb50 --- /dev/null +++ b/libs/hwui/ProfileDataContainer.cpp @@ -0,0 +1,78 @@ +/* + * 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. + */ + +#include "ProfileDataContainer.h" + +#include +#include + +#include + +namespace android { +namespace uirenderer { + +void ProfileDataContainer::freeData() { + if (mIsMapped) { + munmap(mData, sizeof(ProfileData)); + } else { + delete mData; + } + mIsMapped = false; + mData = nullptr; +} + +void ProfileDataContainer::rotateStorage() { + // If we are mapped we want to stop using the ashmem backend and switch to malloc + // We are expecting a switchStorageToAshmem call to follow this, but it's not guaranteed + // If we aren't sitting on top of ashmem then just do a reset() as it's functionally + // equivalent do a free, malloc, reset. + if (mIsMapped) { + freeData(); + mData = new ProfileData; + } + mData->reset(); +} + +void ProfileDataContainer::switchStorageToAshmem(int ashmemfd) { + int regionSize = ashmem_get_size_region(ashmemfd); + if (regionSize < 0) { + int err = errno; + ALOGW("Failed to get ashmem region size from fd %d, err %d %s", ashmemfd, err, strerror(err)); + return; + } + if (regionSize < static_cast(sizeof(ProfileData))) { + ALOGW("Ashmem region is too small! Received %d, required %u", + regionSize, static_cast(sizeof(ProfileData))); + return; + } + ProfileData* newData = reinterpret_cast( + mmap(NULL, sizeof(ProfileData), PROT_READ | PROT_WRITE, + MAP_SHARED, ashmemfd, 0)); + if (newData == MAP_FAILED) { + int err = errno; + ALOGW("Failed to move profile data to ashmem fd %d, error = %d", + ashmemfd, err); + return; + } + + newData->mergeWith(*mData); + freeData(); + mData = newData; + mIsMapped = true; +} + +} /* namespace uirenderer */ +} /* namespace android */ \ No newline at end of file diff --git a/libs/hwui/ProfileDataContainer.h b/libs/hwui/ProfileDataContainer.h new file mode 100644 index 0000000000000000000000000000000000000000..d2de24188c7c9f3d6717786c166b1fadd9098883 --- /dev/null +++ b/libs/hwui/ProfileDataContainer.h @@ -0,0 +1,48 @@ +/* + * 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. + */ + +#pragma once + +#include "ProfileData.h" +#include "utils/Macros.h" + +namespace android { +namespace uirenderer { + +class ProfileDataContainer { + PREVENT_COPY_AND_ASSIGN(ProfileDataContainer); +public: + explicit ProfileDataContainer() {} + + ~ProfileDataContainer() { freeData(); } + + void rotateStorage(); + void switchStorageToAshmem(int ashmemfd); + + ProfileData* get() { return mData; } + ProfileData* operator->() { return mData; } + +private: + void freeData(); + + // By default this will use malloc memory. It may be moved later to ashmem + // if there is shared space for it and a request comes in to do that. + ProfileData* mData = new ProfileData; + bool mIsMapped = false; +}; + +} /* namespace uirenderer */ +} /* namespace android */ \ No newline at end of file diff --git a/libs/hwui/ProgramCache.cpp b/libs/hwui/ProgramCache.cpp index 8cc0aa7b414cf8df0b08539660b3cb6f0112e0a1..b767046f1a4f1e2b0112092e3eb66481d820e377 100644 --- a/libs/hwui/ProgramCache.cpp +++ b/libs/hwui/ProgramCache.cpp @@ -505,7 +505,7 @@ const char* gBlendOps[18] = { // Constructors/destructors /////////////////////////////////////////////////////////////////////////////// -ProgramCache::ProgramCache(Extensions& extensions) +ProgramCache::ProgramCache(const Extensions& extensions) : mHasES3(extensions.getMajorGlVersion() >= 3) , mHasLinearBlending(extensions.hasLinearBlending()) { } diff --git a/libs/hwui/ProgramCache.h b/libs/hwui/ProgramCache.h index cedd854bb48bbcb2c0eb478d06e9045f32c711a0..ee76f22f35d4ff579334405ec569fa320f2ebc19 100644 --- a/libs/hwui/ProgramCache.h +++ b/libs/hwui/ProgramCache.h @@ -40,7 +40,7 @@ namespace uirenderer { */ class ProgramCache { public: - explicit ProgramCache(Extensions& extensions); + explicit ProgramCache(const Extensions& extensions); ~ProgramCache(); Program* get(const ProgramDescription& description); diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp index b5872485b13695637a05e65f978f91e0e07b4361..acc75393ebcfe34a1b7832feb13e69c24e1813a1 100644 --- a/libs/hwui/Properties.cpp +++ b/libs/hwui/Properties.cpp @@ -16,6 +16,7 @@ #include "Properties.h" #include "Debug.h" +#include "DeviceInfo.h" #include #include @@ -36,20 +37,6 @@ bool Properties::skipEmptyFrames = true; bool Properties::useBufferAge = true; bool Properties::enablePartialUpdates = true; -float Properties::textGamma = DEFAULT_TEXT_GAMMA; - -int Properties::fboCacheSize = DEFAULT_FBO_CACHE_SIZE; -int Properties::gradientCacheSize = MB(DEFAULT_GRADIENT_CACHE_SIZE); -int Properties::layerPoolSize = MB(DEFAULT_LAYER_CACHE_SIZE); -int Properties::patchCacheSize = KB(DEFAULT_PATCH_CACHE_SIZE); -int Properties::pathCacheSize = MB(DEFAULT_PATH_CACHE_SIZE); -int Properties::renderBufferCacheSize = MB(DEFAULT_RENDER_BUFFER_CACHE_SIZE); -int Properties::tessellationCacheSize = MB(DEFAULT_VERTEX_CACHE_SIZE); -int Properties::textDropShadowCacheSize = MB(DEFAULT_DROP_SHADOW_CACHE_SIZE); -int Properties::textureCacheSize = MB(DEFAULT_TEXTURE_CACHE_SIZE); - -float Properties::textureCacheFlushRate = DEFAULT_TEXTURE_CACHE_FLUSH_RATE; - DebugLevel Properties::debugLevel = kDebugDisabled; OverdrawColorSet Properties::overdrawColorSet = OverdrawColorSet::Default; StencilClipDebug Properties::debugStencilClip = StencilClipDebug::Hide; @@ -80,15 +67,6 @@ static int property_get_int(const char* key, int defaultValue) { return defaultValue; } -static float property_get_float(const char* key, float defaultValue) { - char buf[PROPERTY_VALUE_MAX] = {'\0',}; - - if (property_get(key, buf, "") > 0) { - return atof(buf); - } - return defaultValue; -} - bool Properties::load() { char property[PROPERTY_VALUE_MAX]; bool prevDebugLayersUpdates = debugLayersUpdates; @@ -147,20 +125,6 @@ bool Properties::load() { useBufferAge = property_get_bool(PROPERTY_USE_BUFFER_AGE, true); enablePartialUpdates = property_get_bool(PROPERTY_ENABLE_PARTIAL_UPDATES, true); - textGamma = property_get_float(PROPERTY_TEXT_GAMMA, DEFAULT_TEXT_GAMMA); - - fboCacheSize = property_get_int(PROPERTY_FBO_CACHE_SIZE, DEFAULT_FBO_CACHE_SIZE); - gradientCacheSize = MB(property_get_float(PROPERTY_GRADIENT_CACHE_SIZE, DEFAULT_GRADIENT_CACHE_SIZE)); - layerPoolSize = MB(property_get_float(PROPERTY_LAYER_CACHE_SIZE, DEFAULT_LAYER_CACHE_SIZE)); - patchCacheSize = KB(property_get_float(PROPERTY_PATCH_CACHE_SIZE, DEFAULT_PATCH_CACHE_SIZE)); - pathCacheSize = MB(property_get_float(PROPERTY_PATH_CACHE_SIZE, DEFAULT_PATH_CACHE_SIZE)); - renderBufferCacheSize = MB(property_get_float(PROPERTY_RENDER_BUFFER_CACHE_SIZE, DEFAULT_RENDER_BUFFER_CACHE_SIZE)); - tessellationCacheSize = MB(property_get_float(PROPERTY_VERTEX_CACHE_SIZE, DEFAULT_VERTEX_CACHE_SIZE)); - textDropShadowCacheSize = MB(property_get_float(PROPERTY_DROP_SHADOW_CACHE_SIZE, DEFAULT_DROP_SHADOW_CACHE_SIZE)); - textureCacheSize = MB(property_get_float(PROPERTY_TEXTURE_CACHE_SIZE, DEFAULT_TEXTURE_CACHE_SIZE)); - textureCacheFlushRate = std::max(0.0f, std::min(1.0f, - property_get_float(PROPERTY_TEXTURE_CACHE_FLUSH_RATE, DEFAULT_TEXTURE_CACHE_FLUSH_RATE))); - filterOutTestOverhead = property_get_bool(PROPERTY_FILTER_TEST_OVERHEAD, false); return (prevDebugLayersUpdates != debugLayersUpdates) diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index 91b4a2d440e244a325cf31e371e41f4aaf9fcea9..47ae9e9121277c26bffbc87fa5ebfe5693c7f7b4 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -152,80 +152,17 @@ enum DebugLevel { #define PROPERTY_FILTER_TEST_OVERHEAD "debug.hwui.filter_test_overhead" -/** - * Allows to set rendering pipeline mode to OpenGL (default), Skia OpenGL - * or Vulkan. - */ -#define PROPERTY_RENDERER "debug.hwui.renderer" - -/////////////////////////////////////////////////////////////////////////////// -// Runtime configuration properties -/////////////////////////////////////////////////////////////////////////////// - -/** - * Used to enable/disable scissor optimization. The accepted values are - * "true" and "false". The default value is "false". - * - * When scissor optimization is enabled, libhwui will attempt to - * minimize the use of scissor by selectively enabling and disabling the - * GL scissor test. - * When the optimization is disabled, OpenGLRenderer will keep the GL - * scissor test enabled and change the scissor rect as needed. - * Some GPUs (for instance the SGX 540) perform better when changing - * the scissor rect often than when enabling/disabling the scissor test - * often. - */ -#define PROPERTY_DISABLE_SCISSOR_OPTIMIZATION "ro.hwui.disable_scissor_opt" - /** * Indicates whether PBOs can be used to back pixel buffers. * Accepted values are "true" and "false". Default is true. */ -#define PROPERTY_ENABLE_GPU_PIXEL_BUFFERS "ro.hwui.use_gpu_pixel_buffers" - -// These properties are defined in mega-bytes -#define PROPERTY_TEXTURE_CACHE_SIZE "ro.hwui.texture_cache_size" -#define PROPERTY_LAYER_CACHE_SIZE "ro.hwui.layer_cache_size" -#define PROPERTY_RENDER_BUFFER_CACHE_SIZE "ro.hwui.r_buffer_cache_size" -#define PROPERTY_GRADIENT_CACHE_SIZE "ro.hwui.gradient_cache_size" -#define PROPERTY_PATH_CACHE_SIZE "ro.hwui.path_cache_size" -#define PROPERTY_VERTEX_CACHE_SIZE "ro.hwui.vertex_cache_size" -#define PROPERTY_PATCH_CACHE_SIZE "ro.hwui.patch_cache_size" -#define PROPERTY_DROP_SHADOW_CACHE_SIZE "ro.hwui.drop_shadow_cache_size" -#define PROPERTY_FBO_CACHE_SIZE "ro.hwui.fbo_cache_size" - -// These properties are defined in percentage (range 0..1) -#define PROPERTY_TEXTURE_CACHE_FLUSH_RATE "ro.hwui.texture_cache_flushrate" - -// These properties are defined in pixels -#define PROPERTY_TEXT_SMALL_CACHE_WIDTH "ro.hwui.text_small_cache_width" -#define PROPERTY_TEXT_SMALL_CACHE_HEIGHT "ro.hwui.text_small_cache_height" -#define PROPERTY_TEXT_LARGE_CACHE_WIDTH "ro.hwui.text_large_cache_width" -#define PROPERTY_TEXT_LARGE_CACHE_HEIGHT "ro.hwui.text_large_cache_height" - -// Gamma (>= 1.0, <= 3.0) -#define PROPERTY_TEXT_GAMMA "hwui.text_gamma" - -/////////////////////////////////////////////////////////////////////////////// -// Default property values -/////////////////////////////////////////////////////////////////////////////// - -#define DEFAULT_TEXTURE_CACHE_SIZE 24.0f -#define DEFAULT_LAYER_CACHE_SIZE 16.0f -#define DEFAULT_RENDER_BUFFER_CACHE_SIZE 2.0f -#define DEFAULT_PATH_CACHE_SIZE 4.0f -#define DEFAULT_VERTEX_CACHE_SIZE 1.0f -#define DEFAULT_PATCH_CACHE_SIZE 128.0f // in kB -#define DEFAULT_GRADIENT_CACHE_SIZE 0.5f -#define DEFAULT_DROP_SHADOW_CACHE_SIZE 2.0f -#define DEFAULT_FBO_CACHE_SIZE 0 - -#define DEFAULT_TEXTURE_CACHE_FLUSH_RATE 0.6f +#define PROPERTY_ENABLE_GPU_PIXEL_BUFFERS "debug.hwui.use_gpu_pixel_buffers" -#define DEFAULT_TEXT_GAMMA 1.45f // Match design tools - -// cap to 256 to limite paths in the path cache -#define DEFAULT_PATH_TEXTURE_CAP 256 +/** + * Allows to set rendering pipeline mode to OpenGL (default), Skia OpenGL + * or Vulkan. + */ +#define PROPERTY_RENDERER "debug.hwui.renderer" /////////////////////////////////////////////////////////////////////////////// // Misc @@ -279,18 +216,8 @@ public: static bool useBufferAge; static bool enablePartialUpdates; - static float textGamma; - - static int fboCacheSize; - static int gradientCacheSize; - static int layerPoolSize; - static int patchCacheSize; - static int pathCacheSize; - static int renderBufferCacheSize; - static int tessellationCacheSize; - static int textDropShadowCacheSize; - static int textureCacheSize; - static float textureCacheFlushRate; + // TODO: Move somewhere else? + static constexpr float textGamma = 1.45f; static DebugLevel debugLevel; static OverdrawColorSet overdrawColorSet; diff --git a/libs/hwui/RenderBufferCache.cpp b/libs/hwui/RenderBufferCache.cpp index 1ac57cdbac0cc882fb94d77fff7466d42b90d3fa..2f8ddfe6d6606d49104da459224c86d4080a88bc 100644 --- a/libs/hwui/RenderBufferCache.cpp +++ b/libs/hwui/RenderBufferCache.cpp @@ -17,6 +17,7 @@ #include "Debug.h" #include "Properties.h" #include "RenderBufferCache.h" +#include "DeviceInfo.h" #include @@ -36,13 +37,20 @@ namespace uirenderer { #define RENDER_BUFFER_LOGD(...) #endif +static uint32_t calculateRboCacheSize() { + // TODO: Do we need to use extensions().has4BitStencil() here? + // The tuning guide recommends it, but all real devices are configured + // with a larger cache than necessary by 4x, so keep the 2x for now regardless + return DeviceInfo::multiplyByResolution(2); +} + /////////////////////////////////////////////////////////////////////////////// // Constructors/destructor /////////////////////////////////////////////////////////////////////////////// RenderBufferCache::RenderBufferCache() : mSize(0) - , mMaxSize(Properties::renderBufferCacheSize) {} + , mMaxSize(calculateRboCacheSize()) {} RenderBufferCache::~RenderBufferCache() { clear(); diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index 55eeb7fa207377c552546790006a4e8a7a19f195..61b3876cd095effbae698d4bf7bacea7521076a1 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -241,7 +241,8 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) { if (CC_LIKELY(layerType != LayerType::RenderLayer) || CC_UNLIKELY(!isRenderable()) || CC_UNLIKELY(properties().getWidth() == 0) - || CC_UNLIKELY(properties().getHeight() == 0)) { + || CC_UNLIKELY(properties().getHeight() == 0) + || CC_UNLIKELY(!properties().fitsOnLayer())) { if (CC_UNLIKELY(hasLayer())) { renderthread::CanvasContext::destroyLayer(this); } diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 623b496f5f092610d84bcc432b374104b518bf63..0a642b60d4c7b1e56a2accdbc412ac6afde873f1 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -530,33 +530,25 @@ void SkiaCanvas::drawVertices(const SkVertices* vertices, SkBlendMode mode, cons // ---------------------------------------------------------------------------- void SkiaCanvas::drawBitmap(Bitmap& bitmap, float left, float top, const SkPaint* paint) { - SkBitmap skBitmap; - bitmap.getSkBitmap(&skBitmap); - mCanvas->drawBitmap(skBitmap, left, top, paint); + mCanvas->drawImage(bitmap.makeImage(), left, top, paint); } void SkiaCanvas::drawBitmap(Bitmap& hwuiBitmap, const SkMatrix& matrix, const SkPaint* paint) { - SkBitmap bitmap; - hwuiBitmap.getSkBitmap(&bitmap); SkAutoCanvasRestore acr(mCanvas, true); mCanvas->concat(matrix); - mCanvas->drawBitmap(bitmap, 0, 0, paint); + mCanvas->drawImage(hwuiBitmap.makeImage(), 0, 0, paint); } void SkiaCanvas::drawBitmap(Bitmap& hwuiBitmap, float srcLeft, float srcTop, float srcRight, float srcBottom, float dstLeft, float dstTop, float dstRight, float dstBottom, const SkPaint* paint) { - SkBitmap bitmap; - hwuiBitmap.getSkBitmap(&bitmap); SkRect srcRect = SkRect::MakeLTRB(srcLeft, srcTop, srcRight, srcBottom); SkRect dstRect = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom); - mCanvas->drawBitmapRect(bitmap, srcRect, dstRect, paint); + mCanvas->drawImageRect(hwuiBitmap.makeImage(), srcRect, dstRect, paint); } void SkiaCanvas::drawBitmapMesh(Bitmap& hwuiBitmap, int meshWidth, int meshHeight, const float* vertices, const int* colors, const SkPaint* paint) { - SkBitmap bitmap; - hwuiBitmap.getSkBitmap(&bitmap); const int ptCount = (meshWidth + 1) * (meshHeight + 1); const int indexCount = meshWidth * meshHeight * 6; uint32_t flags = SkVertices::kHasTexCoords_BuilderFlag; @@ -573,8 +565,8 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& hwuiBitmap, int meshWidth, int meshHeigh // cons up texture coordinates and indices { - const SkScalar w = SkIntToScalar(bitmap.width()); - const SkScalar h = SkIntToScalar(bitmap.height()); + const SkScalar w = SkIntToScalar(hwuiBitmap.width()); + const SkScalar h = SkIntToScalar(hwuiBitmap.height()); const SkScalar dx = w / meshWidth; const SkScalar dy = h / meshHeight; @@ -635,7 +627,7 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& hwuiBitmap, int meshWidth, int meshHeigh tmpPaint = *paint; } - sk_sp image = SkMakeImageFromRasterBitmap(bitmap, kNever_SkCopyPixelsMode); + sk_sp image = hwuiBitmap.makeImage(); tmpPaint.setShader(image->makeShader(SkShader::kClamp_TileMode, SkShader::kClamp_TileMode)); mCanvas->drawVertices(builder.detach(), SkBlendMode::kModulate, tmpPaint); @@ -644,11 +636,8 @@ void SkiaCanvas::drawBitmapMesh(Bitmap& hwuiBitmap, int meshWidth, int meshHeigh void SkiaCanvas::drawNinePatch(Bitmap& hwuiBitmap, const Res_png_9patch& chunk, float dstLeft, float dstTop, float dstRight, float dstBottom, const SkPaint* paint) { - SkBitmap bitmap; - hwuiBitmap.getSkBitmap(&bitmap); - SkCanvas::Lattice lattice; - NinePatchUtils::SetLatticeDivs(&lattice, chunk, bitmap.width(), bitmap.height()); + NinePatchUtils::SetLatticeDivs(&lattice, chunk, hwuiBitmap.width(), hwuiBitmap.height()); lattice.fFlags = nullptr; int numFlags = 0; @@ -665,7 +654,7 @@ void SkiaCanvas::drawNinePatch(Bitmap& hwuiBitmap, const Res_png_9patch& chunk, lattice.fBounds = nullptr; SkRect dst = SkRect::MakeLTRB(dstLeft, dstTop, dstRight, dstBottom); - mCanvas->drawBitmapLattice(bitmap, lattice, dst, paint); + mCanvas->drawImageLattice(hwuiBitmap.makeImage().get(), lattice, dst, paint); } void SkiaCanvas::drawVectorDrawable(VectorDrawableRoot* vectorDrawable) { diff --git a/libs/hwui/SkiaCanvasProxy.cpp b/libs/hwui/SkiaCanvasProxy.cpp index 34dddd169e969c6899afe34b639fa6d6a9147def..16a19ca4d36abf197da77c351bc1e5930a3d3f06 100644 --- a/libs/hwui/SkiaCanvasProxy.cpp +++ b/libs/hwui/SkiaCanvasProxy.cpp @@ -151,7 +151,8 @@ void SkiaCanvasProxy::onDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& ce void SkiaCanvasProxy::onDrawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint) { SkBitmap skiaBitmap; - if (image->asLegacyBitmap(&skiaBitmap, SkImage::kRO_LegacyBitmapMode)) { + SkPixmap pixmap; + if (image->peekPixels(&pixmap) && skiaBitmap.installPixels(pixmap)) { onDrawBitmap(skiaBitmap, left, top, paint); } } @@ -159,7 +160,8 @@ void SkiaCanvasProxy::onDrawImage(const SkImage* image, SkScalar left, SkScalar void SkiaCanvasProxy::onDrawImageRect(const SkImage* image, const SkRect* srcPtr, const SkRect& dst, const SkPaint* paint, SrcRectConstraint constraint) { SkBitmap skiaBitmap; - if (image->asLegacyBitmap(&skiaBitmap, SkImage::kRO_LegacyBitmapMode)) { + SkPixmap pixmap; + if (image->peekPixels(&pixmap) && skiaBitmap.installPixels(pixmap)) { sk_sp bitmap = Bitmap::createFrom(skiaBitmap.info(), *skiaBitmap.pixelRef()); SkRect src = (srcPtr) ? *srcPtr : SkRect::MakeWH(image->width(), image->height()); mCanvas->drawBitmap(*bitmap, src.fLeft, src.fTop, src.fRight, src.fBottom, diff --git a/libs/hwui/TessellationCache.cpp b/libs/hwui/TessellationCache.cpp index 9adf0538203e0ac4dc227b537f797809d4bfddf4..63bf7bc443e036a1e2108e3f4e864983ccd9d17b 100644 --- a/libs/hwui/TessellationCache.cpp +++ b/libs/hwui/TessellationCache.cpp @@ -290,7 +290,7 @@ public: /////////////////////////////////////////////////////////////////////////////// TessellationCache::TessellationCache() - : mMaxSize(Properties::tessellationCacheSize) + : mMaxSize(MB(1)) , mCache(LruCache::kUnlimitedCapacity) , mShadowCache(LruCache*>::kUnlimitedCapacity) { mCache.setOnEntryRemovedListener(&mBufferRemovedListener); diff --git a/libs/hwui/TextDropShadowCache.cpp b/libs/hwui/TextDropShadowCache.cpp index e1f0b2a20172f8ea598ccbcaf9459419d1b41f8e..c521892c69dfe812cc3aafce8e9969452ebeae4a 100644 --- a/libs/hwui/TextDropShadowCache.cpp +++ b/libs/hwui/TextDropShadowCache.cpp @@ -94,7 +94,7 @@ int ShadowText::compare(const ShadowText& lhs, const ShadowText& rhs) { /////////////////////////////////////////////////////////////////////////////// TextDropShadowCache::TextDropShadowCache() - : TextDropShadowCache(Properties::textDropShadowCacheSize) {} + : TextDropShadowCache(DeviceInfo::multiplyByResolution(2)) {} TextDropShadowCache::TextDropShadowCache(uint32_t maxByteSize) : mCache(LruCache::kUnlimitedCapacity) diff --git a/libs/hwui/Texture.cpp b/libs/hwui/Texture.cpp index 4ef31d59271e64c06c103f4cff9ff05ee7408cbf..b7c1e290370fc812f18849e9cf5f7a2b179d7a35 100644 --- a/libs/hwui/Texture.cpp +++ b/libs/hwui/Texture.cpp @@ -217,9 +217,8 @@ void Texture::colorTypeToGlFormatAndType(const Caches& caches, SkColorType color *outType = GL_UNSIGNED_SHORT_5_6_5; } break; - // ARGB_4444 and Index_8 are both upconverted to RGBA_8888 + // ARGB_4444 is upconverted to RGBA_8888 case kARGB_4444_SkColorType: - case kIndex_8_SkColorType: case kN32_SkColorType: *outFormat = GL_RGBA; *outInternalFormat = caches.rgbaInternalFormat(needSRGB); @@ -270,7 +269,6 @@ SkBitmap Texture::uploadToN32(const SkBitmap& bitmap, bool hasLinearBlending, bool Texture::hasUnsupportedColorType(const SkImageInfo& info, bool hasLinearBlending) { return info.colorType() == kARGB_4444_SkColorType - || info.colorType() == kIndex_8_SkColorType || (info.colorType() == kRGB_565_SkColorType && hasLinearBlending && info.colorSpace()->isSRGB()) @@ -279,11 +277,6 @@ bool Texture::hasUnsupportedColorType(const SkImageInfo& info, bool hasLinearBle } void Texture::upload(Bitmap& bitmap) { - if (!bitmap.readyToDraw()) { - ALOGE("Cannot generate texture from bitmap"); - return; - } - ATRACE_FORMAT("Upload %ux%u Texture", bitmap.width(), bitmap.height()); // We could also enable mipmapping if both bitmap dimensions are powers diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp index 710cdd9286e8b17d8c5703d56d8644803b003d96..6fe3606a75762f48f5a9cedf6503350869f2a604 100644 --- a/libs/hwui/TextureCache.cpp +++ b/libs/hwui/TextureCache.cpp @@ -24,6 +24,7 @@ #include "Properties.h" #include "utils/TraceUtils.h" #include "hwui/Bitmap.h" +#include "DeviceInfo.h" namespace android { namespace uirenderer { @@ -35,13 +36,10 @@ namespace uirenderer { TextureCache::TextureCache() : mCache(LruCache::kUnlimitedCapacity) , mSize(0) - , mMaxSize(Properties::textureCacheSize) - , mFlushRate(Properties::textureCacheFlushRate) { + , mMaxSize(DeviceInfo::multiplyByResolution(4 * 6)) // 6 screen-sized RGBA_8888 bitmaps + , mFlushRate(.4f) { mCache.setOnEntryRemovedListener(this); - - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &mMaxTextureSize); - INIT_LOGD(" Maximum texture dimension is %d pixels", mMaxTextureSize); - + mMaxTextureSize = DeviceInfo::get()->maxTextureSize(); mDebugEnabled = Properties::debugLevel & kDebugCaches; } diff --git a/libs/hwui/VectorDrawable.cpp b/libs/hwui/VectorDrawable.cpp index f6b2912a6254d5ee58d5bbec4a1ed75b1e6adf2e..ca179c9a25d2505c606de9cbb10f8f43110bfaf1 100644 --- a/libs/hwui/VectorDrawable.cpp +++ b/libs/hwui/VectorDrawable.cpp @@ -22,6 +22,7 @@ #include "SkShader.h" #include #include "utils/Macros.h" +#include "utils/TraceUtils.h" #include "utils/VectorDrawableUtils.h" #include @@ -491,47 +492,119 @@ Bitmap& Tree::getBitmapUpdateIfDirty() { return *mCache.bitmap; } -void Tree::updateCache(sk_sp surface) { - if (surface.get()) { - mCache.surface = surface; +void Tree::updateCache(sp& atlas, GrContext* context) { + SkRect dst; + sk_sp surface = mCache.getSurface(&dst); + bool canReuseSurface = surface && dst.width() >= mProperties.getScaledWidth() + && dst.height() >= mProperties.getScaledHeight(); + if (!canReuseSurface) { + int scaledWidth = SkScalarCeilToInt(mProperties.getScaledWidth()); + int scaledHeight = SkScalarCeilToInt(mProperties.getScaledHeight()); + auto atlasEntry = atlas->requestNewEntry(scaledWidth, scaledHeight, context); + if (INVALID_ATLAS_KEY != atlasEntry.key) { + dst = atlasEntry.rect; + surface = atlasEntry.surface; + mCache.setAtlas(atlas, atlasEntry.key); + } else { + //don't draw, if we failed to allocate an offscreen buffer + mCache.clear(); + surface.reset(); + } + } + if (!canReuseSurface || mCache.dirty) { + draw(surface.get(), dst); + mCache.dirty = false; } - if (surface.get() || mCache.dirty) { - SkSurface* vdSurface = mCache.surface.get(); - SkCanvas* canvas = vdSurface->getCanvas(); - float scaleX = vdSurface->width() / mProperties.getViewportWidth(); - float scaleY = vdSurface->height() / mProperties.getViewportHeight(); +} + +void Tree::draw(SkSurface* surface, const SkRect& dst) { + if (surface) { + SkCanvas* canvas = surface->getCanvas(); + float scaleX = dst.width() / mProperties.getViewportWidth(); + float scaleY = dst.height() / mProperties.getViewportHeight(); SkAutoCanvasRestore acr(canvas, true); + canvas->translate(dst.fLeft, dst.fTop); + canvas->clipRect(SkRect::MakeWH(dst.width(), dst.height())); canvas->clear(SK_ColorTRANSPARENT); canvas->scale(scaleX, scaleY); mRootNode->draw(canvas, false); - mCache.dirty = false; - canvas->flush(); } } +void Tree::Cache::setAtlas(sp newAtlas, + skiapipeline::AtlasKey newAtlasKey) { + LOG_ALWAYS_FATAL_IF(newAtlasKey == INVALID_ATLAS_KEY); + clear(); + mAtlas = newAtlas; + mAtlasKey = newAtlasKey; +} + +sk_sp Tree::Cache::getSurface(SkRect* bounds) { + sk_sp surface; + sp atlas = mAtlas.promote(); + if (atlas.get() && mAtlasKey != INVALID_ATLAS_KEY) { + auto atlasEntry = atlas->getEntry(mAtlasKey); + *bounds = atlasEntry.rect; + surface = atlasEntry.surface; + mAtlasKey = atlasEntry.key; + } + + return surface; +} + +void Tree::Cache::clear() { + sp lockAtlas = mAtlas.promote(); + if (lockAtlas.get()) { + lockAtlas->releaseEntry(mAtlasKey); + } + mAtlas = nullptr; + mAtlasKey = INVALID_ATLAS_KEY; +} + void Tree::draw(SkCanvas* canvas) { - /* - * TODO address the following... - * - * 1) figure out how to set path's as volatile during animation - * 2) if mRoot->getPaint() != null either promote to layer (during - * animation) or cache in SkSurface (for static content) - */ - canvas->drawImageRect(mCache.surface->makeImageSnapshot().get(), - mutateProperties()->getBounds(), getPaint()); + SkRect src; + sk_sp vdSurface = mCache.getSurface(&src); + if (vdSurface) { + canvas->drawImageRect(vdSurface->makeImageSnapshot().get(), src, + mutateProperties()->getBounds(), getPaint()); + } else { + // Handle the case when VectorDrawableAtlas has been destroyed, because of memory pressure. + // We render the VD into a temporary standalone buffer and mark the frame as dirty. Next + // frame will be cached into the atlas. + int scaledWidth = SkScalarCeilToInt(mProperties.getScaledWidth()); + int scaledHeight = SkScalarCeilToInt(mProperties.getScaledHeight()); + SkRect src = SkRect::MakeWH(scaledWidth, scaledHeight); +#ifndef ANDROID_ENABLE_LINEAR_BLENDING + sk_sp colorSpace = nullptr; +#else + sk_sp colorSpace = SkColorSpace::MakeSRGB(); +#endif + SkImageInfo info = SkImageInfo::MakeN32(scaledWidth, scaledHeight, kPremul_SkAlphaType, + colorSpace); + sk_sp surface = SkSurface::MakeRenderTarget(canvas->getGrContext(), + SkBudgeted::kYes, info); + draw(surface.get(), src); + mCache.clear(); + canvas->drawImageRect(surface->makeImageSnapshot().get(), mutateProperties()->getBounds(), + getPaint()); + markDirty(); + } } void Tree::updateBitmapCache(Bitmap& bitmap, bool useStagingData) { SkBitmap outCache; bitmap.getSkBitmap(&outCache); + int cacheWidth = outCache.width(); + int cacheHeight = outCache.height(); + ATRACE_FORMAT("VectorDrawable repaint %dx%d", cacheWidth, cacheHeight); outCache.eraseColor(SK_ColorTRANSPARENT); SkCanvas outCanvas(outCache); float viewportWidth = useStagingData ? mStagingProperties.getViewportWidth() : mProperties.getViewportWidth(); float viewportHeight = useStagingData ? mStagingProperties.getViewportHeight() : mProperties.getViewportHeight(); - float scaleX = outCache.width() / viewportWidth; - float scaleY = outCache.height() / viewportHeight; + float scaleX = cacheWidth / viewportWidth; + float scaleY = cacheHeight / viewportHeight; outCanvas.scale(scaleX, scaleY); mRootNode->draw(&outCanvas, useStagingData); } diff --git a/libs/hwui/VectorDrawable.h b/libs/hwui/VectorDrawable.h index 22cfe29d2aa55a93cff62f1296e1aff38ae96878..efbb695a14ddfe68ac733245d91fadf4adca77a1 100644 --- a/libs/hwui/VectorDrawable.h +++ b/libs/hwui/VectorDrawable.h @@ -19,6 +19,7 @@ #include "hwui/Canvas.h" #include "hwui/Bitmap.h" +#include "renderthread/CacheManager.h" #include "DisplayList.h" #include @@ -687,35 +688,61 @@ public: bool getPropertyChangeWillBeConsumed() const { return mWillBeConsumed; } void setPropertyChangeWillBeConsumed(bool willBeConsumed) { mWillBeConsumed = willBeConsumed; } - // Returns true if VD cache surface is big enough. This should always be called from RT and it - // works with Skia pipelines only. - bool canReuseSurface() { - SkSurface* surface = mCache.surface.get(); - return surface && surface->width() >= mProperties.getScaledWidth() - && surface->height() >= mProperties.getScaledHeight(); - } - - // Draws VD cache into a canvas. This should always be called from RT and it works with Skia - // pipelines only. + /** + * Draws VD cache into a canvas. This should always be called from RT and it works with Skia + * pipelines only. + */ void draw(SkCanvas* canvas); - // Draws VD into a GPU backed surface. If canReuseSurface returns false, then "surface" must - // contain a new surface. This should always be called from RT and it works with Skia pipelines - // only. - void updateCache(sk_sp surface); + /** + * Draws VD into a GPU backed surface. + * This should always be called from RT and it works with Skia pipeline only. + */ + void updateCache(sp& atlas, GrContext* context); private: - struct Cache { + class Cache { + public: sk_sp bitmap; //used by HWUI pipeline and software //TODO: use surface instead of bitmap when drawing in software canvas - sk_sp surface; //used only by Skia pipelines bool dirty = true; + + // the rest of the code in Cache is used by Skia pipelines only + + ~Cache() { clear(); } + + /** + * Stores a weak pointer to the atlas and a key. + */ + void setAtlas(sp atlas, + skiapipeline::AtlasKey newAtlasKey); + + /** + * Gets a surface and bounds from the atlas. + * + * @return nullptr if the altas has been deleted. + */ + sk_sp getSurface(SkRect* bounds); + + /** + * Releases atlas key from the atlas, which makes it available for reuse. + */ + void clear(); + private: + wp mAtlas; + skiapipeline::AtlasKey mAtlasKey = INVALID_ATLAS_KEY; }; SkPaint* updatePaint(SkPaint* outPaint, TreeProperties* prop); bool allocateBitmapIfNeeded(Cache& cache, int width, int height); bool canReuseBitmap(Bitmap*, int width, int height); void updateBitmapCache(Bitmap& outCache, bool useStagingData); + + /** + * Draws the root node into "surface" at a given "dst" position. + */ + void draw(SkSurface* surface, const SkRect& dst); + // Cap the bitmap size, such that it won't hurt the performance too much // and it won't crash due to a very large scale. // The drawable will look blurry above this size. diff --git a/libs/hwui/font/CacheTexture.cpp b/libs/hwui/font/CacheTexture.cpp index e2844ad0649a4ac3ed60169802552b80ecb67c0d..73beba9297c4ec8d41b46d73678d11668bb5fa6a 100644 --- a/libs/hwui/font/CacheTexture.cpp +++ b/libs/hwui/font/CacheTexture.cpp @@ -91,6 +91,9 @@ CacheBlock* CacheBlock::removeBlock(CacheBlock* head, CacheBlock* blockToRemove) CacheBlock* prevBlock = blockToRemove->mPrev; if (prevBlock) { + // If this doesn't hold, we have a use-after-free below. + LOG_ALWAYS_FATAL_IF(head == blockToRemove, + "removeBlock: head should not have a previous block"); prevBlock->mNext = nextBlock; } else { newHead = nextBlock; diff --git a/libs/hwui/font/FontUtil.h b/libs/hwui/font/FontUtil.h index 07e8b34ac66f058c2dfcdc9e7522ba525c87620b..d4b4ff949f5ae1d53481d7ce9fa51c8fd8dd1325 100644 --- a/libs/hwui/font/FontUtil.h +++ b/libs/hwui/font/FontUtil.h @@ -25,11 +25,6 @@ // Defines /////////////////////////////////////////////////////////////////////////////// -#define DEFAULT_TEXT_SMALL_CACHE_WIDTH 1024 -#define DEFAULT_TEXT_SMALL_CACHE_HEIGHT 512 -#define DEFAULT_TEXT_LARGE_CACHE_WIDTH 2048 -#define DEFAULT_TEXT_LARGE_CACHE_HEIGHT 512 - #ifdef TEXTURE_BORDER_SIZE #if TEXTURE_BORDER_SIZE != 1 #error TEXTURE_BORDER_SIZE other than 1 is not currently supported diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp index 6dde005c2fc42f7474db0aa36f38714bf7b815bc..75b6d233643d70bf727d9fce9866186851bd0239 100644 --- a/libs/hwui/hwui/Bitmap.cpp +++ b/libs/hwui/hwui/Bitmap.cpp @@ -46,10 +46,10 @@ static bool computeAllocationSize(size_t rowBytes, int height, size_t* size) { return true; } -typedef sk_sp (*AllocPixeRef)(size_t allocSize, const SkImageInfo& info, size_t rowBytes, - sk_sp ctable); +typedef sk_sp (*AllocPixelRef)(size_t allocSize, const SkImageInfo& info, + size_t rowBytes); -static sk_sp allocateBitmap(SkBitmap* bitmap, sk_sp ctable, AllocPixeRef alloc) { +static sk_sp allocateBitmap(SkBitmap* bitmap, AllocPixelRef alloc) { const SkImageInfo& info = bitmap->info(); if (info.colorType() == kUnknown_SkColorType) { LOG_ALWAYS_FATAL("unknown bitmap configuration"); @@ -65,32 +65,31 @@ static sk_sp allocateBitmap(SkBitmap* bitmap, sk_sp ctable return nullptr; } - auto wrapper = alloc(size, info, rowBytes, std::move(ctable)); + auto wrapper = alloc(size, info, rowBytes); if (wrapper) { wrapper->getSkBitmap(bitmap); } return wrapper; } -sk_sp Bitmap::allocateAshmemBitmap(SkBitmap* bitmap, sk_sp ctable) { - return allocateBitmap(bitmap, std::move(ctable), &Bitmap::allocateAshmemBitmap); +sk_sp Bitmap::allocateAshmemBitmap(SkBitmap* bitmap) { + return allocateBitmap(bitmap, &Bitmap::allocateAshmemBitmap); } -static sk_sp allocateHeapBitmap(size_t size, const SkImageInfo& info, size_t rowBytes, - sk_sp ctable) { +static sk_sp allocateHeapBitmap(size_t size, const SkImageInfo& info, size_t rowBytes) { void* addr = calloc(size, 1); if (!addr) { return nullptr; } - return sk_sp(new Bitmap(addr, size, info, rowBytes, std::move(ctable))); + return sk_sp(new Bitmap(addr, size, info, rowBytes)); } sk_sp Bitmap::allocateHardwareBitmap(SkBitmap& bitmap) { return uirenderer::renderthread::RenderProxy::allocateHardwareBitmap(bitmap); } -sk_sp Bitmap::allocateHeapBitmap(SkBitmap* bitmap, sk_sp ctable) { - return allocateBitmap(bitmap, std::move(ctable), &android::allocateHeapBitmap); +sk_sp Bitmap::allocateHeapBitmap(SkBitmap* bitmap) { + return allocateBitmap(bitmap, &android::allocateHeapBitmap); } sk_sp Bitmap::allocateHeapBitmap(const SkImageInfo& info) { @@ -99,11 +98,11 @@ sk_sp Bitmap::allocateHeapBitmap(const SkImageInfo& info) { LOG_ALWAYS_FATAL("trying to allocate too large bitmap"); return nullptr; } - return android::allocateHeapBitmap(size, info, info.minRowBytes(), nullptr); + return android::allocateHeapBitmap(size, info, info.minRowBytes()); } sk_sp Bitmap::allocateAshmemBitmap(size_t size, const SkImageInfo& info, - size_t rowBytes, sk_sp ctable) { + size_t rowBytes) { // Create new ashmem region with read/write priv int fd = ashmem_create_region("bitmap", size); if (fd < 0) { @@ -121,7 +120,7 @@ sk_sp Bitmap::allocateAshmemBitmap(size_t size, const SkImageInfo& info, close(fd); return nullptr; } - return sk_sp(new Bitmap(addr, fd, size, info, rowBytes, std::move(ctable))); + return sk_sp(new Bitmap(addr, fd, size, info, rowBytes)); } void FreePixelRef(void* addr, void* context) { @@ -132,7 +131,7 @@ void FreePixelRef(void* addr, void* context) { sk_sp Bitmap::createFrom(const SkImageInfo& info, SkPixelRef& pixelRef) { pixelRef.ref(); return sk_sp(new Bitmap((void*) pixelRef.pixels(), (void*) &pixelRef, FreePixelRef, - info, pixelRef.rowBytes(), sk_ref_sp(pixelRef.colorTable()))); + info, pixelRef.rowBytes())); } sk_sp Bitmap::createFrom(sp graphicBuffer) { @@ -161,11 +160,7 @@ static SkImageInfo validateAlpha(const SkImageInfo& info) { return info.makeAlphaType(alphaType); } -void Bitmap::reconfigure(const SkImageInfo& newInfo, size_t rowBytes, sk_sp ctable) { - if (kIndex_8_SkColorType != newInfo.colorType()) { - ctable = nullptr; - } - +void Bitmap::reconfigure(const SkImageInfo& newInfo, size_t rowBytes) { mInfo = validateAlpha(newInfo); // Dirty hack is dirty @@ -173,20 +168,11 @@ void Bitmap::reconfigure(const SkImageInfo& newInfo, size_t rowBytes, sk_spandroid_only_reset(mInfo.width(), mInfo.height(), rowBytes, std::move(ctable)); + this->android_only_reset(mInfo.width(), mInfo.height(), rowBytes); } -static sk_sp sanitize(const SkImageInfo& info, sk_sp ctable) { - if (info.colorType() == kIndex_8_SkColorType) { - SkASSERT(ctable); - return ctable; - } - return nullptr; // drop the ctable if we're not indexed -} -Bitmap::Bitmap(void* address, size_t size, const SkImageInfo& info, size_t rowBytes, - sk_sp ctable) - : SkPixelRef(info.width(), info.height(), address, rowBytes, - sanitize(info, std::move(ctable))) +Bitmap::Bitmap(void* address, size_t size, const SkImageInfo& info, size_t rowBytes) + : SkPixelRef(info.width(), info.height(), address, rowBytes) , mInfo(validateAlpha(info)) , mPixelStorageType(PixelStorageType::Heap) { mPixelStorage.heap.address = address; @@ -194,9 +180,8 @@ Bitmap::Bitmap(void* address, size_t size, const SkImageInfo& info, size_t rowBy } Bitmap::Bitmap(void* address, void* context, FreeFunc freeFunc, - const SkImageInfo& info, size_t rowBytes, sk_sp ctable) - : SkPixelRef(info.width(), info.height(), address, rowBytes, - sanitize(info, std::move(ctable))) + const SkImageInfo& info, size_t rowBytes) + : SkPixelRef(info.width(), info.height(), address, rowBytes) , mInfo(validateAlpha(info)) , mPixelStorageType(PixelStorageType::External) { mPixelStorage.external.address = address; @@ -205,9 +190,8 @@ Bitmap::Bitmap(void* address, void* context, FreeFunc freeFunc, } Bitmap::Bitmap(void* address, int fd, size_t mappedSize, - const SkImageInfo& info, size_t rowBytes, sk_sp ctable) - : SkPixelRef(info.width(), info.height(), address, rowBytes, - sanitize(info, std::move(ctable))) + const SkImageInfo& info, size_t rowBytes) + : SkPixelRef(info.width(), info.height(), address, rowBytes) , mInfo(validateAlpha(info)) , mPixelStorageType(PixelStorageType::Ashmem) { mPixelStorage.ashmem.address = address; @@ -217,15 +201,16 @@ Bitmap::Bitmap(void* address, int fd, size_t mappedSize, Bitmap::Bitmap(GraphicBuffer* buffer, const SkImageInfo& info) : SkPixelRef(info.width(), info.height(), nullptr, - bytesPerPixel(buffer->getPixelFormat()) * buffer->getStride(), - nullptr) + bytesPerPixel(buffer->getPixelFormat()) * buffer->getStride()) , mInfo(validateAlpha(info)) , mPixelStorageType(PixelStorageType::Hardware) { mPixelStorage.hardware.buffer = buffer; buffer->incStrong(buffer); setImmutable(); // HW bitmaps are always immutable if (uirenderer::Properties::isSkiaEnabled()) { - // TODO: add color correctness for Skia pipeline - pass null color space for now + // GraphicBuffer should be in the display color space (Bitmap::createFrom is always + // passing SRGB). The code that uploads into a GraphicBuffer should do color conversion if + // needed. mImage = SkImage::MakeFromAHardwareBuffer(reinterpret_cast(buffer), mInfo.alphaType(), nullptr); } @@ -295,7 +280,7 @@ size_t Bitmap::getAllocationByteCount() const { } void Bitmap::reconfigure(const SkImageInfo& info) { - reconfigure(info, info.minRowBytes(), nullptr); + reconfigure(info, info.minRowBytes()); } void Bitmap::setAlphaType(SkAlphaType alphaType) { @@ -310,7 +295,6 @@ void Bitmap::getSkBitmap(SkBitmap* outBitmap) { outBitmap->setHasHardwareMipMap(mHasHardwareMipMap); if (isHardware()) { if (uirenderer::Properties::isSkiaEnabled()) { - // TODO: add color correctness for Skia pipeline - pass null color space for now outBitmap->allocPixels(SkImageInfo::Make(info().width(), info().height(), info().colorType(), info().alphaType(), nullptr)); } else { @@ -346,7 +330,12 @@ sk_sp Bitmap::makeImage() { // Note we don't cache in this case, because the raster image holds a pointer to this Bitmap // internally and ~Bitmap won't be invoked. // TODO: refactor Bitmap to not derive from SkPixelRef, which would allow caching here. - image = SkMakeImageFromRasterBitmap(skiaBitmap, kNever_SkCopyPixelsMode); + if (uirenderer::Properties::isSkiaEnabled()) { + image = SkMakeImageInColorSpace(skiaBitmap, SkColorSpace::MakeSRGB(), + skiaBitmap.getGenerationID(), kNever_SkCopyPixelsMode); + } else { + image = SkMakeImageFromRasterBitmap(skiaBitmap, kNever_SkCopyPixelsMode); + } } return image; } diff --git a/libs/hwui/hwui/Bitmap.h b/libs/hwui/hwui/Bitmap.h index 3642406709f9fe5d4f883da39c4a42ec528fb04e..634e76450c38ebfaa15cf202969e18e47a312fe8 100644 --- a/libs/hwui/hwui/Bitmap.h +++ b/libs/hwui/hwui/Bitmap.h @@ -17,7 +17,6 @@ #include #include -#include #include #include #include @@ -46,32 +45,31 @@ typedef void (*FreeFunc)(void* addr, void* context); class ANDROID_API Bitmap : public SkPixelRef { public: - static sk_sp allocateHeapBitmap(SkBitmap* bitmap, sk_sp ctable); + static sk_sp allocateHeapBitmap(SkBitmap* bitmap); static sk_sp allocateHeapBitmap(const SkImageInfo& info); static sk_sp allocateHardwareBitmap(SkBitmap& bitmap); - static sk_sp allocateAshmemBitmap(SkBitmap* bitmap, sk_sp ctable); + static sk_sp allocateAshmemBitmap(SkBitmap* bitmap); static sk_sp allocateAshmemBitmap(size_t allocSize, const SkImageInfo& info, - size_t rowBytes, sk_sp ctable); + size_t rowBytes); static sk_sp createFrom(sp graphicBuffer); static sk_sp createFrom(const SkImageInfo&, SkPixelRef&); - Bitmap(void* address, size_t allocSize, const SkImageInfo& info, size_t rowBytes, - sk_sp ctable); + Bitmap(void* address, size_t allocSize, const SkImageInfo& info, size_t rowBytes); Bitmap(void* address, void* context, FreeFunc freeFunc, - const SkImageInfo& info, size_t rowBytes, sk_sp ctable); + const SkImageInfo& info, size_t rowBytes); Bitmap(void* address, int fd, size_t mappedSize, const SkImageInfo& info, - size_t rowBytes, sk_sp ctable); + size_t rowBytes); Bitmap(GraphicBuffer* buffer, const SkImageInfo& info); int rowBytesAsPixels() const { return rowBytes() >> SkColorTypeShiftPerPixel(mInfo.colorType()); } - void reconfigure(const SkImageInfo& info, size_t rowBytes, sk_sp ctable); + void reconfigure(const SkImageInfo& info, size_t rowBytes); void reconfigure(const SkImageInfo& info); void setColorSpace(sk_sp colorSpace); void setAlphaType(SkAlphaType alphaType); @@ -92,10 +90,6 @@ public: void getBounds(SkRect* bounds) const; - bool readyToDraw() const { - return this->colorType() != kIndex_8_SkColorType || this->colorTable(); - } - bool isHardware() const { return mPixelStorageType == PixelStorageType::Hardware; } diff --git a/libs/hwui/hwui/Canvas.cpp b/libs/hwui/hwui/Canvas.cpp index 679cb5021e27e5c464a670098d8b7a9bc98c6971..e754daf7c42ed1f8c47c60c4e4cdebd858997a36 100644 --- a/libs/hwui/hwui/Canvas.cpp +++ b/libs/hwui/hwui/Canvas.cpp @@ -35,6 +35,13 @@ Canvas* Canvas::create_recording_canvas(int width, int height, uirenderer::Rende return new uirenderer::RecordingCanvas(width, height); } +static inline void drawStroke(SkScalar left, SkScalar right, SkScalar top, SkScalar thickness, + const SkPaint& paint, Canvas* canvas) { + const SkScalar strokeWidth = fmax(thickness, 1.0f); + const SkScalar bottom = top + strokeWidth; + canvas->drawRect(left, top, right, bottom, paint); +} + void Canvas::drawTextDecorations(float x, float y, float length, const SkPaint& paint) { uint32_t flags; SkDrawFilter* drawFilter = getDrawFilter(); @@ -46,24 +53,28 @@ void Canvas::drawTextDecorations(float x, float y, float length, const SkPaint& flags = paint.getFlags(); } if (flags & (SkPaint::kUnderlineText_ReserveFlag | SkPaint::kStrikeThruText_ReserveFlag)) { - // Same values used by Skia - const float kStdStrikeThru_Offset = (-6.0f / 21.0f); - const float kStdUnderline_Offset = (1.0f / 9.0f); - const float kStdUnderline_Thickness = (1.0f / 18.0f); - - SkScalar left = x; - SkScalar right = x + length; - float textSize = paint.getTextSize(); - float strokeWidth = fmax(textSize * kStdUnderline_Thickness, 1.0f); + const SkScalar left = x; + const SkScalar right = x + length; if (flags & SkPaint::kUnderlineText_ReserveFlag) { - SkScalar top = y + textSize * kStdUnderline_Offset - 0.5f * strokeWidth; - SkScalar bottom = y + textSize * kStdUnderline_Offset + 0.5f * strokeWidth; - drawRect(left, top, right, bottom, paint); + Paint::FontMetrics metrics; + paint.getFontMetrics(&metrics); + SkScalar position; + if (!metrics.hasUnderlinePosition(&position)) { + position = paint.getTextSize() * Paint::kStdUnderline_Top; + } + SkScalar thickness; + if (!metrics.hasUnderlineThickness(&thickness)) { + thickness = paint.getTextSize() * Paint::kStdUnderline_Thickness; + } + const SkScalar top = y + position; + drawStroke(left, right, top, thickness, paint, this); } if (flags & SkPaint::kStrikeThruText_ReserveFlag) { - SkScalar top = y + textSize * kStdStrikeThru_Offset - 0.5f * strokeWidth; - SkScalar bottom = y + textSize * kStdStrikeThru_Offset + 0.5f * strokeWidth; - drawRect(left, top, right, bottom, paint); + const float textSize = paint.getTextSize(); + const float position = textSize * Paint::kStdStrikeThru_Top; + const SkScalar thickness = textSize * Paint::kStdStrikeThru_Thickness; + const SkScalar top = y + position; + drawStroke(left, right, top, thickness, paint, this); } } } diff --git a/libs/hwui/hwui/Paint.h b/libs/hwui/hwui/Paint.h index c9b5f0031a7b2edba07de22860bd5a2518d524b3..a5d83a0ca018d57bc91623ebda4fe6945d69a8a3 100644 --- a/libs/hwui/hwui/Paint.h +++ b/libs/hwui/hwui/Paint.h @@ -28,6 +28,19 @@ namespace android { class ANDROID_API Paint : public SkPaint { public: + // Default values for underlined and strikethrough text, + // as defined by Skia in SkTextFormatParams.h. + constexpr static float kStdStrikeThru_Offset = (-6.0f / 21.0f); + constexpr static float kStdUnderline_Offset = (1.0f / 9.0f); + constexpr static float kStdUnderline_Thickness = (1.0f / 18.0f); + + constexpr static float kStdUnderline_Top = + kStdUnderline_Offset - 0.5f * kStdUnderline_Thickness; + + constexpr static float kStdStrikeThru_Thickness = kStdUnderline_Thickness; + constexpr static float kStdStrikeThru_Top = + kStdStrikeThru_Offset - 0.5f * kStdStrikeThru_Thickness; + Paint(); Paint(const Paint& paint); Paint(const SkPaint& paint); // NOLINT(implicit) diff --git a/libs/hwui/pipeline/skia/LayerDrawable.cpp b/libs/hwui/pipeline/skia/LayerDrawable.cpp index 2ebfbcc1f18efd8075692b494601e682f01442a7..4feeb2d6facb50a2b241906373d3a21d85929778 100644 --- a/libs/hwui/pipeline/skia/LayerDrawable.cpp +++ b/libs/hwui/pipeline/skia/LayerDrawable.cpp @@ -18,6 +18,7 @@ #include "LayerDrawable.h" #include "VkLayer.h" +#include "GrBackendSurface.h" #include "SkColorFilter.h" #include "SkSurface.h" #include "gl/GrGLTypes.h" @@ -46,13 +47,10 @@ bool LayerDrawable::DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer GrGLTextureInfo externalTexture; externalTexture.fTarget = glLayer->getRenderTarget(); externalTexture.fID = glLayer->getTextureId(); - GrBackendTextureDesc textureDescription; - textureDescription.fWidth = glLayer->getWidth(); - textureDescription.fHeight = glLayer->getHeight(); - textureDescription.fConfig = kRGBA_8888_GrPixelConfig; - textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; - textureDescription.fTextureHandle = reinterpret_cast(&externalTexture); - layerImage = SkImage::MakeFromTexture(context, textureDescription); + GrBackendTexture backendTexture(glLayer->getWidth(), glLayer->getHeight(), + kRGBA_8888_GrPixelConfig, externalTexture); + layerImage = SkImage::MakeFromTexture(context, backendTexture, kTopLeft_GrSurfaceOrigin, + kPremul_SkAlphaType, nullptr); } else { SkASSERT(layer->getApi() == Layer::Api::Vulkan); VkLayer* vkLayer = static_cast(layer); diff --git a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.cpp b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.cpp index 975f849c70710ad4e12362d73bdee3755f2197a0..374d364787de80a69ebcec8a8eeb39631fa4b8d2 100644 --- a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.cpp +++ b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.cpp @@ -51,8 +51,6 @@ void StartReorderBarrierDrawable::onDraw(SkCanvas* canvas) { return aZValue < bZValue; }); - SkASSERT(!mChildren.empty()); - size_t drawIndex = 0; const size_t endIndex = mChildren.size(); while (drawIndex < endIndex) { @@ -76,7 +74,6 @@ EndReorderBarrierDrawable::EndReorderBarrierDrawable(StartReorderBarrierDrawable void EndReorderBarrierDrawable::onDraw(SkCanvas* canvas) { auto& zChildren = mStartBarrier->mChildren; - SkASSERT(!zChildren.empty()); /** * Draw shadows and (potential) casters mostly in order, but allow the shadows of casters diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp index 6d5ef1d4ff1f0a8b5e0352d8d996dc0a3f398f53..925db303461f93a3b074fb11b1cbd27185b6ef64 100644 --- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp +++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp @@ -27,6 +27,8 @@ #include "SkiaProfileRenderer.h" #include "utils/TraceUtils.h" +#include + #include #include @@ -69,20 +71,17 @@ bool SkiaOpenGLPipeline::draw(const Frame& frame, const SkRect& screenDirty, mEglManager.damageFrame(frame, dirty); // setup surface for fbo0 - GrBackendRenderTargetDesc renderTargetDesc; - renderTargetDesc.fWidth = frame.width(); - renderTargetDesc.fHeight = frame.height(); - renderTargetDesc.fConfig = kRGBA_8888_GrPixelConfig; - renderTargetDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; - renderTargetDesc.fSampleCnt = 0; - renderTargetDesc.fStencilBits = STENCIL_BUFFER_SIZE; - renderTargetDesc.fRenderTargetHandle = 0; + GrGLFramebufferInfo fboInfo; + fboInfo.fFBOID = 0; + + GrBackendRenderTarget backendRT(frame.width(), frame.height(), 0, STENCIL_BUFFER_SIZE, + kRGBA_8888_GrPixelConfig, fboInfo); SkSurfaceProps props(0, kUnknown_SkPixelGeometry); SkASSERT(mRenderThread.getGrContext() != nullptr); sk_sp surface(SkSurface::MakeFromBackendRenderTarget( - mRenderThread.getGrContext(), renderTargetDesc, &props)); + mRenderThread.getGrContext(), backendRT, kBottomLeft_GrSurfaceOrigin, nullptr, &props)); SkiaPipeline::updateLighting(lightGeometry, lightInfo); renderFrame(*layerUpdateQueue, dirty, renderNodes, opaque, wideColorGamut, @@ -270,8 +269,7 @@ sk_sp SkiaOpenGLPipeline::allocateHardwareBitmap(renderthread::RenderThr switch (info.colorType()) { case kRGBA_8888_SkColorType: isSupported = true; - // ARGB_4444 and Index_8 are both upconverted to RGBA_8888 - case kIndex_8_SkColorType: + // ARGB_4444 is upconverted to RGBA_8888 case kARGB_4444_SkColorType: pixelFormat = PIXEL_FORMAT_RGBA_8888; format = GL_RGBA; @@ -305,6 +303,13 @@ sk_sp SkiaOpenGLPipeline::allocateHardwareBitmap(renderthread::RenderThr return nullptr; } + auto colorSpace = info.colorSpace(); + bool convertToSRGB = false; + if (colorSpace && (!colorSpace->isSRGB())) { + isSupported = false; + convertToSRGB = true; + } + SkBitmap bitmap; if (isSupported) { bitmap = skBitmap; @@ -312,7 +317,7 @@ sk_sp SkiaOpenGLPipeline::allocateHardwareBitmap(renderthread::RenderThr bitmap.allocPixels(SkImageInfo::MakeN32(info.width(), info.height(), info.alphaType(), nullptr)); bitmap.eraseColor(0); - if (info.colorType() == kRGBA_F16_SkColorType) { + if (info.colorType() == kRGBA_F16_SkColorType || convertToSRGB) { // Drawing RGBA_F16 onto ARGB_8888 is not supported skBitmap.readPixels(bitmap.info().makeColorSpace(SkColorSpace::MakeSRGB()), bitmap.getPixels(), bitmap.rowBytes(), 0, 0); diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp index 89697d7445c692f3128e39b6bef21fee6720b6e6..311419dd2b657204b95505c1e9d970f8ac714b62 100644 --- a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp +++ b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp @@ -20,6 +20,7 @@ #include "Properties.h" #include #include +#include #include #include #include @@ -53,50 +54,61 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4 externalTexture.fTarget = GL_TEXTURE_EXTERNAL_OES; externalTexture.fID = sourceTexId; - GrBackendTextureDesc textureDescription; - textureDescription.fWidth = imgWidth; - textureDescription.fHeight = imgHeight; - textureDescription.fConfig = kRGBA_8888_GrPixelConfig; - textureDescription.fOrigin = kTopLeft_GrSurfaceOrigin; - textureDescription.fTextureHandle = reinterpret_cast(&externalTexture); + GrBackendTexture backendTexture(imgWidth, imgHeight, kRGBA_8888_GrPixelConfig, externalTexture); CopyResult copyResult = CopyResult::UnknownError; - sk_sp image(SkImage::MakeFromAdoptedTexture(grContext.get(), textureDescription)); + sk_sp image(SkImage::MakeFromAdoptedTexture(grContext.get(), backendTexture, + kTopLeft_GrSurfaceOrigin)); if (image) { - // convert to Skia data structures - const SkRect bufferRect = SkRect::MakeIWH(imgWidth, imgHeight); - SkRect skiaSrcRect = srcRect.toSkRect(); SkMatrix textureMatrix; imgTransform.copyTo(textureMatrix); - // remove the y-flip applied to the matrix so that we can scale the srcRect. - // This flip is not needed as we specify the origin of the texture when we - // wrap it as an SkImage. + // remove the y-flip applied to the matrix SkMatrix yFlip = SkMatrix::MakeScale(1, -1); yFlip.postTranslate(0,1); textureMatrix.preConcat(yFlip); - // copy the entire src if the rect is empty - if (skiaSrcRect.isEmpty()) { - skiaSrcRect = bufferRect; - } + // multiply by image size, because textureMatrix maps to [0..1] range + textureMatrix[SkMatrix::kMTransX] *= imgWidth; + textureMatrix[SkMatrix::kMTransY] *= imgHeight; - // since the y-flip has been removed we can simply scale & translate - // the source rectangle - textureMatrix.mapRect(&skiaSrcRect); + // swap rotation and translation part of the matrix, because we convert from + // right-handed Cartesian to left-handed coordinate system. + std::swap(textureMatrix[SkMatrix::kMTransX], textureMatrix[SkMatrix::kMTransY]); + std::swap(textureMatrix[SkMatrix::kMSkewX], textureMatrix[SkMatrix::kMSkewY]); - if (skiaSrcRect.intersect(bufferRect)) { + // convert to Skia data structures + SkRect skiaSrcRect = srcRect.toSkRect(); + SkMatrix textureMatrixInv; + SkRect skiaDestRect = SkRect::MakeWH(bitmap->width(), bitmap->height()); + bool srcNotEmpty = false; + if (textureMatrix.invert(&textureMatrixInv)) { + if (skiaSrcRect.isEmpty()) { + skiaSrcRect = SkRect::MakeIWH(imgWidth, imgHeight); + srcNotEmpty = !skiaSrcRect.isEmpty(); + } else { + // src and dest rectangles need to be converted into texture coordinates before the + // rotation matrix is applied (because drawImageRect preconcat its matrix). + textureMatrixInv.mapRect(&skiaSrcRect); + srcNotEmpty = skiaSrcRect.intersect(SkRect::MakeIWH(imgWidth, imgHeight)); + } + textureMatrixInv.mapRect(&skiaDestRect); + } + + if (srcNotEmpty) { // we render in an offscreen buffer to scale and to avoid an issue b/62262733 // with reading incorrect data from EGLImage backed SkImage (likely a driver bug) sk_sp scaledSurface = SkSurface::MakeRenderTarget( grContext.get(), SkBudgeted::kYes, bitmap->info()); SkPaint paint; paint.setBlendMode(SkBlendMode::kSrc); - scaledSurface->getCanvas()->drawImageRect(image, skiaSrcRect, - SkRect::MakeWH(bitmap->width(), bitmap->height()), &paint); + scaledSurface->getCanvas()->concat(textureMatrix); + scaledSurface->getCanvas()->drawImageRect(image, skiaSrcRect, skiaDestRect, &paint); + image = scaledSurface->makeImageSnapshot(); if (image->readPixels(bitmap->info(), bitmap->getPixels(), bitmap->rowBytes(), 0, 0)) { + bitmap->notifyPixelsChanged(); copyResult = CopyResult::Success; } } diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp index 0bab7932432cba88d84cd5f8bdf839339423c75f..03792e0ed291cc65ba8d4bca8f89ae36de952aa6 100644 --- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp +++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp @@ -95,7 +95,7 @@ void SkiaPipeline::renderLayersImpl(const LayerUpdateQueue& layers, SkASSERT(layerNode->getDisplayList()->isSkiaDL()); SkiaDisplayList* displayList = (SkiaDisplayList*)layerNode->getDisplayList(); if (!displayList || displayList->isEmpty()) { - SkDEBUGF(("%p drawLayers(%s) : missing drawable", this, layerNode->getName())); + SkDEBUGF(("%p drawLayers(%s) : missing drawable", layerNode, layerNode->getName())); return; } @@ -183,26 +183,16 @@ public: }; void SkiaPipeline::renderVectorDrawableCache() { - //render VectorDrawables into offscreen buffers - for (auto vd : mVectorDrawables) { - sk_sp surface; - if (!vd->canReuseSurface()) { -#ifndef ANDROID_ENABLE_LINEAR_BLENDING - sk_sp colorSpace = nullptr; -#else - sk_sp colorSpace = SkColorSpace::MakeSRGB(); -#endif - int scaledWidth = SkScalarCeilToInt(vd->properties().getScaledWidth()); - int scaledHeight = SkScalarCeilToInt(vd->properties().getScaledHeight()); - SkImageInfo info = SkImageInfo::MakeN32(scaledWidth, scaledHeight, - kPremul_SkAlphaType, colorSpace); - SkASSERT(mRenderThread.getGrContext() != nullptr); - surface = SkSurface::MakeRenderTarget(mRenderThread.getGrContext(), SkBudgeted::kYes, - info); + if (!mVectorDrawables.empty()) { + sp atlas = mRenderThread.cacheManager().acquireVectorDrawableAtlas(); + auto grContext = mRenderThread.getGrContext(); + atlas->prepareForDraw(grContext); + for (auto vd : mVectorDrawables) { + vd->updateCache(atlas, grContext); } - vd->updateCache(surface); + grContext->flush(); + mVectorDrawables.clear(); } - mVectorDrawables.clear(); } void SkiaPipeline::renderFrame(const LayerUpdateQueue& layers, const SkRect& clip, diff --git a/libs/hwui/pipeline/skia/VectorDrawableAtlas.cpp b/libs/hwui/pipeline/skia/VectorDrawableAtlas.cpp new file mode 100644 index 0000000000000000000000000000000000000000..437653a8dfa8ca4874cbb94bcb71d8ea7d97cce0 --- /dev/null +++ b/libs/hwui/pipeline/skia/VectorDrawableAtlas.cpp @@ -0,0 +1,269 @@ +/* + * 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. + */ + +#include "VectorDrawableAtlas.h" + +#include +#include +#include +#include "utils/TraceUtils.h" +#include "renderthread/RenderProxy.h" + +namespace android { +namespace uirenderer { +namespace skiapipeline { + +VectorDrawableAtlas::VectorDrawableAtlas(size_t surfaceArea, StorageMode storageMode) + : mWidth((int)std::sqrt(surfaceArea)) + , mHeight((int)std::sqrt(surfaceArea)) + , mStorageMode(storageMode) { +} + +void VectorDrawableAtlas::prepareForDraw(GrContext* context) { + if (StorageMode::allowSharedSurface == mStorageMode) { + if (!mSurface) { + mSurface = createSurface(mWidth, mHeight, context); + mRectanizer = std::make_unique(mWidth, mHeight); + mPixelUsedByVDs = 0; + mPixelAllocated = 0; + mConsecutiveFailures = 0; + mFreeRects.clear(); + } else { + if (isFragmented()) { + // Invoke repack outside renderFrame to avoid jank. + renderthread::RenderProxy::repackVectorDrawableAtlas(); + } + } + } +} + +#define MAX_CONSECUTIVE_FAILURES 5 +#define MAX_UNUSED_RATIO 2.0f + +bool VectorDrawableAtlas::isFragmented() { + return mConsecutiveFailures > MAX_CONSECUTIVE_FAILURES + && mPixelUsedByVDs*MAX_UNUSED_RATIO < mPixelAllocated; +} + +void VectorDrawableAtlas::repackIfNeeded(GrContext* context) { + // We repackage when atlas failed to allocate space MAX_CONSECUTIVE_FAILURES consecutive + // times and the atlas allocated pixels are at least MAX_UNUSED_RATIO times higher than pixels + // used by atlas VDs. + if (isFragmented() && mSurface) { + repack(context); + } +} + +// compare to CacheEntry objects based on VD area. +bool VectorDrawableAtlas::compareCacheEntry(const CacheEntry& first, const CacheEntry& second) +{ + return first.VDrect.width()*first.VDrect.height() < second.VDrect.width()*second.VDrect.height(); +} + +void VectorDrawableAtlas::repack(GrContext* context) { + ATRACE_CALL(); + sk_sp newSurface; + SkCanvas* canvas = nullptr; + if (StorageMode::allowSharedSurface == mStorageMode) { + newSurface = createSurface(mWidth, mHeight, context); + if (!newSurface) { + return; + } + canvas = newSurface->getCanvas(); + canvas->clear(SK_ColorTRANSPARENT); + mRectanizer = std::make_unique(mWidth, mHeight); + } else { + if (!mSurface) { + return; //nothing to repack + } + mRectanizer.reset(); + } + mFreeRects.clear(); + SkImage* sourceImageAtlas = nullptr; + if (mSurface) { + sourceImageAtlas = mSurface->makeImageSnapshot().get(); + } + + // Sort the list by VD size, which allows for the smallest VDs to get first in the atlas. + // Sorting is safe, because it does not affect iterator validity. + if (mRects.size() <= 100) { + mRects.sort(compareCacheEntry); + } + + for (CacheEntry& entry : mRects) { + SkRect currentVDRect = entry.VDrect; + SkImage* sourceImage; //copy either from the atlas or from a standalone surface + if (entry.surface) { + if (!fitInAtlas(currentVDRect.width(), currentVDRect.height())) { + continue; //don't even try to repack huge VD + } + sourceImage = entry.surface->makeImageSnapshot().get(); + } else { + sourceImage = sourceImageAtlas; + } + size_t VDRectArea = currentVDRect.width()*currentVDRect.height(); + SkIPoint16 pos; + if (canvas && mRectanizer->addRect(currentVDRect.width(), currentVDRect.height(), &pos)) { + SkRect newRect = SkRect::MakeXYWH(pos.fX, pos.fY, currentVDRect.width(), + currentVDRect.height()); + canvas->drawImageRect(sourceImage, currentVDRect, newRect, nullptr); + entry.VDrect = newRect; + entry.rect = newRect; + if (entry.surface) { + // A rectangle moved from a standalone surface to the atlas. + entry.surface = nullptr; + mPixelUsedByVDs += VDRectArea; + } + } else { + // Repack failed for this item. If it is not already, store it in a standalone + // surface. + if (!entry.surface) { + // A rectangle moved from an atlas to a standalone surface. + mPixelUsedByVDs -= VDRectArea; + SkRect newRect = SkRect::MakeWH(currentVDRect.width(), + currentVDRect.height()); + entry.surface = createSurface(newRect.width(), newRect.height(), context); + auto tempCanvas = entry.surface->getCanvas(); + tempCanvas->clear(SK_ColorTRANSPARENT); + tempCanvas->drawImageRect(sourceImageAtlas, currentVDRect, newRect, nullptr); + entry.VDrect = newRect; + entry.rect = newRect; + } + } + } + mPixelAllocated = mPixelUsedByVDs; + context->flush(); + mSurface = newSurface; + mConsecutiveFailures = 0; +} + +AtlasEntry VectorDrawableAtlas::requestNewEntry(int width, int height, GrContext* context) { + AtlasEntry result; + if (width <= 0 || height <= 0) { + return result; + } + + if (mSurface) { + const size_t area = width*height; + + // Use a rectanizer to allocate unused space from the atlas surface. + bool notTooBig = fitInAtlas(width, height); + SkIPoint16 pos; + if (notTooBig && mRectanizer->addRect(width, height, &pos)) { + mPixelUsedByVDs += area; + mPixelAllocated += area; + result.rect = SkRect::MakeXYWH(pos.fX, pos.fY, width, height); + result.surface = mSurface; + auto eraseIt = mRects.emplace(mRects.end(), result.rect, result.rect, nullptr); + CacheEntry* entry = &(*eraseIt); + entry->eraseIt = eraseIt; + result.key = reinterpret_cast(entry); + mConsecutiveFailures = 0; + return result; + } + + // Try to reuse atlas memory from rectangles freed by "releaseEntry". + auto freeRectIt = mFreeRects.lower_bound(area); + while (freeRectIt != mFreeRects.end()) { + SkRect& freeRect = freeRectIt->second; + if (freeRect.width() >= width && freeRect.height() >= height) { + result.rect = SkRect::MakeXYWH(freeRect.fLeft, freeRect.fTop, width, height); + result.surface = mSurface; + auto eraseIt = mRects.emplace(mRects.end(), result.rect, freeRect, nullptr); + CacheEntry* entry = &(*eraseIt); + entry->eraseIt = eraseIt; + result.key = reinterpret_cast(entry); + mPixelUsedByVDs += area; + mFreeRects.erase(freeRectIt); + mConsecutiveFailures = 0; + return result; + } + freeRectIt++; + } + + if (notTooBig && mConsecutiveFailures <= MAX_CONSECUTIVE_FAILURES) { + mConsecutiveFailures++; + } + } + + // Allocate a surface for a rectangle that is too big or if atlas is full. + if (nullptr != context) { + result.rect = SkRect::MakeWH(width, height); + result.surface = createSurface(width, height, context); + auto eraseIt = mRects.emplace(mRects.end(), result.rect, result.rect, result.surface); + CacheEntry* entry = &(*eraseIt); + entry->eraseIt = eraseIt; + result.key = reinterpret_cast(entry); + } + + return result; +} + +AtlasEntry VectorDrawableAtlas::getEntry(AtlasKey atlasKey) { + AtlasEntry result; + if (INVALID_ATLAS_KEY != atlasKey) { + CacheEntry* entry = reinterpret_cast(atlasKey); + result.rect = entry->VDrect; + result.surface = entry->surface; + if (!result.surface) { + result.surface = mSurface; + } + result.key = atlasKey; + } + return result; +} + +void VectorDrawableAtlas::releaseEntry(AtlasKey atlasKey) { + if (INVALID_ATLAS_KEY != atlasKey) { + CacheEntry* entry = reinterpret_cast(atlasKey); + if (!entry->surface) { + // Store freed atlas rectangles in "mFreeRects" and try to reuse them later, when atlas + // is full. + SkRect& removedRect = entry->rect; + size_t rectArea = removedRect.width()*removedRect.height(); + mFreeRects.emplace(rectArea, removedRect); + SkRect& removedVDRect = entry->VDrect; + size_t VDRectArea = removedVDRect.width()*removedVDRect.height(); + mPixelUsedByVDs -= VDRectArea; + mConsecutiveFailures = 0; + } + auto eraseIt = entry->eraseIt; + mRects.erase(eraseIt); + } +} + +sk_sp VectorDrawableAtlas::createSurface(int width, int height, GrContext* context) { +#ifndef ANDROID_ENABLE_LINEAR_BLENDING + sk_sp colorSpace = nullptr; +#else + sk_sp colorSpace = SkColorSpace::MakeSRGB(); +#endif + SkImageInfo info = SkImageInfo::MakeN32(width, height, kPremul_SkAlphaType, colorSpace); + return SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, info); +} + +void VectorDrawableAtlas::setStorageMode(StorageMode mode) { + mStorageMode = mode; + if (StorageMode::disallowSharedSurface == mStorageMode && mSurface) { + mSurface.reset(); + mRectanizer.reset(); + mFreeRects.clear(); + } +} + +} /* namespace skiapipeline */ +} /* namespace uirenderer */ +} /* namespace android */ diff --git a/libs/hwui/pipeline/skia/VectorDrawableAtlas.h b/libs/hwui/pipeline/skia/VectorDrawableAtlas.h new file mode 100644 index 0000000000000000000000000000000000000000..496c55742748d95e72d5ec57c41f1ee05f2899cf --- /dev/null +++ b/libs/hwui/pipeline/skia/VectorDrawableAtlas.h @@ -0,0 +1,198 @@ +/* + * 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. + */ + +#pragma once + +#include +#include +#include +#include +#include + +class GrRectanizer; + +namespace android { +namespace uirenderer { +namespace skiapipeline { + +typedef uintptr_t AtlasKey; + +#define INVALID_ATLAS_KEY 0 + +struct AtlasEntry { + sk_sp surface; + SkRect rect; + AtlasKey key = INVALID_ATLAS_KEY; +}; + +/** + * VectorDrawableAtlas provides offscreen buffers used to draw VD and AnimatedVD. + * VectorDrawableAtlas can allocate a standalone surface or provide a subrect from a shared surface. + * VectorDrawableAtlas is owned by the CacheManager and weak pointers are kept by each + * VectorDrawable that is using it. VectorDrawableAtlas and its surface can be deleted at any time, + * except during a renderFrame call. VectorDrawable does not contain a pointer to atlas SkSurface + * nor any coordinates into the atlas, but instead holds a rectangle "id", which is resolved only + * when drawing. This design makes VectorDrawableAtlas free to move the data internally. + * At draw time a VectorDrawable may find, that its atlas has been deleted, which will make it + * draw in a standalone cache surface not part of an atlas. In this case VD won't use + * VectorDrawableAtlas until the next frame. + * VectorDrawableAtlas tries to fit VDs in the atlas SkSurface. If there is not enough space in + * the atlas, VectorDrawableAtlas creates a standalone surface for each VD. + * When a VectorDrawable is deleted, it invokes VectorDrawableAtlas::releaseEntry, which is keeping + * track of free spaces and allow to reuse the surface for another VD. + */ + //TODO: Check if not using atlas for AnimatedVD is more efficient. + //TODO: For low memory situations, when there are no paint effects in VD, we may render without an + //TODO: offscreen surface. +class VectorDrawableAtlas : public virtual RefBase { +public: + enum class StorageMode { + allowSharedSurface, + disallowSharedSurface + }; + + VectorDrawableAtlas(size_t surfaceArea, + StorageMode storageMode = StorageMode::allowSharedSurface); + + /** + * "prepareForDraw" may allocate a new surface if needed. It may schedule to repack the + * atlas at a later time. + */ + void prepareForDraw(GrContext* context); + + /** + * Repack the atlas if needed, by moving used rectangles into a new atlas surface. + * The goal of repacking is to fix a fragmented atlas. + */ + void repackIfNeeded(GrContext* context); + + /** + * Returns true if atlas is fragmented and repack is needed. + */ + bool isFragmented(); + + /** + * "requestNewEntry" is called by VectorDrawable to allocate a new rectangle area from the atlas + * or create a standalone surface if atlas is full. + * On success it returns a non-negative unique id, which can be used later with "getEntry" and + * "releaseEntry". + */ + AtlasEntry requestNewEntry(int width, int height, GrContext* context); + + /** + * "getEntry" extracts coordinates and surface of a previously created rectangle. + * "atlasKey" is an unique id created by "requestNewEntry". Passing a non-existing "atlasKey" is + * causing an undefined behaviour. + * On success it returns a rectangle Id -> may be same or different from "atlasKey" if + * implementation decides to move the record internally. + */ + AtlasEntry getEntry(AtlasKey atlasKey); + + /** + * "releaseEntry" is invoked when a VectorDrawable is deleted. Passing a non-existing "atlasKey" + * is causing an undefined behaviour. + */ + void releaseEntry(AtlasKey atlasKey); + + void setStorageMode(StorageMode mode); + +private: + struct CacheEntry { + CacheEntry(const SkRect& newVDrect, const SkRect& newRect, + const sk_sp& newSurface) + : VDrect(newVDrect) + , rect(newRect) + , surface(newSurface) { } + + /** + * size and position of VectorDrawable into the atlas or in "this.surface" + */ + SkRect VDrect; + + /** + * rect allocated in atlas surface or "this.surface". It may be bigger than "VDrect" + */ + SkRect rect; + + /** + * this surface is used if atlas is full or VD is too big + */ + sk_sp surface; + + /** + * iterator is used to delete self with a constant complexity (without traversing the list) + */ + std::list::iterator eraseIt; + }; + + /** + * atlas surface shared by all VDs + */ + sk_sp mSurface; + + std::unique_ptr mRectanizer; + const int mWidth; + const int mHeight; + + /** + * "mRects" keeps records only for rectangles used by VDs. List has nice properties: constant + * complexity to insert and erase and references are not invalidated by insert/erase. + */ + std::list mRects; + + /** + * Rectangles freed by "releaseEntry" are removed from "mRects" and added to "mFreeRects". + * "mFreeRects" is using for an index the rectangle area. There could be more than one free + * rectangle with the same area, which is the reason to use "multimap" instead of "map". + */ + std::multimap mFreeRects; + + /** + * area in atlas used by VectorDrawables (area in standalone surface not counted) + */ + int mPixelUsedByVDs = 0; + + /** + * area allocated in mRectanizer + */ + int mPixelAllocated = 0; + + /** + * Consecutive times we had to allocate standalone surfaces, because atlas was full. + */ + int mConsecutiveFailures = 0; + + /** + * mStorageMode allows using a shared surface to store small vector drawables. + * Using a shared surface can boost the performance by allowing GL ops to be batched, but may + * consume more memory. + */ + StorageMode mStorageMode; + + sk_sp createSurface(int width, int height, GrContext* context); + + inline bool fitInAtlas(int width, int height) { + return 2*width < mWidth && 2*height < mHeight; + } + + void repack(GrContext* context); + + static bool compareCacheEntry(const CacheEntry& first, const CacheEntry& second); +}; + +} /* namespace skiapipeline */ +} /* namespace uirenderer */ +} /* namespace android */ diff --git a/libs/hwui/renderstate/Blend.cpp b/libs/hwui/renderstate/Blend.cpp index 8865c6efce8cd3dbc12a603a991de1e1594bc760..b1ca4a248a80f998e8c0ffad9845249daf73598d 100644 --- a/libs/hwui/renderstate/Blend.cpp +++ b/libs/hwui/renderstate/Blend.cpp @@ -118,7 +118,7 @@ void Blend::getFactors(SkBlendMode mode, ModeOrderSwap modeUsage, GLenum* outSrc } void Blend::setFactors(GLenum srcMode, GLenum dstMode) { - if (srcMode == GL_ZERO && dstMode == GL_ZERO) { + if ((srcMode == GL_ZERO || srcMode == GL_ONE) && dstMode == GL_ZERO) { // disable blending if (mEnabled) { glDisable(GL_BLEND); diff --git a/libs/hwui/renderstate/Blend.h b/libs/hwui/renderstate/Blend.h index ec0e114c998f82d14744034995a390a9baa3b053..a9de246313408180cf9e18a6b149aded52d9229d 100644 --- a/libs/hwui/renderstate/Blend.h +++ b/libs/hwui/renderstate/Blend.h @@ -40,6 +40,14 @@ public: GLenum* outSrc, GLenum* outDst); void setFactors(GLenum src, GLenum dst); + bool getEnabled() { + return mEnabled; + } + void getFactors(GLenum* src, GLenum* dst) { + *src = mSrcMode; + *dst = mDstMode; + } + void dump(); private: Blend(); diff --git a/libs/hwui/renderstate/OffscreenBufferPool.cpp b/libs/hwui/renderstate/OffscreenBufferPool.cpp index 90b27c8d8fb0c6be26d8624557bcc2896e542541..ea292d678c67cf1097a18bdd21bbe82ba0953f4e 100644 --- a/libs/hwui/renderstate/OffscreenBufferPool.cpp +++ b/libs/hwui/renderstate/OffscreenBufferPool.cpp @@ -17,7 +17,6 @@ #include "OffscreenBufferPool.h" #include "Caches.h" -#include "Properties.h" #include "renderstate/RenderState.h" #include "utils/FatVector.h" #include "utils/TraceUtils.h" @@ -118,7 +117,8 @@ OffscreenBuffer::~OffscreenBuffer() { /////////////////////////////////////////////////////////////////////////////// OffscreenBufferPool::OffscreenBufferPool() - : mMaxSize(Properties::layerPoolSize) { + // 4 screen-sized RGBA_8888 textures + : mMaxSize(DeviceInfo::multiplyByResolution(4 * 4)) { } OffscreenBufferPool::~OffscreenBufferPool() { @@ -179,8 +179,9 @@ OffscreenBuffer* OffscreenBufferPool::resize(OffscreenBuffer* layer, layer->region.clear(); return layer; } + bool wideColorGamut = layer->wideColorGamut; putOrDelete(layer); - return get(renderState, width, height, layer->wideColorGamut); + return get(renderState, width, height, wideColorGamut); } void OffscreenBufferPool::dump() { diff --git a/libs/hwui/renderstate/RenderState.cpp b/libs/hwui/renderstate/RenderState.cpp index 2c92924cc12cc2aeff934160a61d8b5e2fbac301..5fc5cb275741af3d62b3f07bb972c517c083a843 100644 --- a/libs/hwui/renderstate/RenderState.cpp +++ b/libs/hwui/renderstate/RenderState.cpp @@ -53,6 +53,11 @@ void RenderState::onGLContextCreated() { mScissor = new Scissor(); mStencil = new Stencil(); + // Deferred because creation needs GL context for texture limits + if (!mLayerPool) { + mLayerPool = new OffscreenBufferPool(); + } + // This is delayed because the first access of Caches makes GL calls if (!mCaches) { mCaches = &Caches::createInstance(*this); @@ -67,7 +72,7 @@ static void layerLostGlContext(Layer* layer) { } void RenderState::onGLContextDestroyed() { - mLayerPool.clear(); + mLayerPool->clear(); // TODO: reset all cached state in state objects std::for_each(mActiveLayers.begin(), mActiveLayers.end(), layerLostGlContext); @@ -100,7 +105,7 @@ static void layerDestroyedVkContext(Layer* layer) { } void RenderState::onVkContextDestroyed() { - mLayerPool.clear(); + mLayerPool->clear(); std::for_each(mActiveLayers.begin(), mActiveLayers.end(), layerDestroyedVkContext); GpuMemoryTracker::onGpuContextDestroyed(); } @@ -116,10 +121,10 @@ void RenderState::flush(Caches::FlushMode mode) { case Caches::FlushMode::Moderate: // fall through case Caches::FlushMode::Layers: - mLayerPool.clear(); + if (mLayerPool) mLayerPool->clear(); break; } - mCaches->flush(mode); + if (mCaches) mCaches->flush(mode); } void RenderState::onBitmapDestroyed(uint32_t pixelRefId) { @@ -257,7 +262,8 @@ void RenderState::postDecStrong(VirtualLightRefBase* object) { // Render /////////////////////////////////////////////////////////////////////////////// -void RenderState::render(const Glop& glop, const Matrix4& orthoMatrix) { +void RenderState::render(const Glop& glop, const Matrix4& orthoMatrix, + bool overrideDisableBlending) { const Glop::Mesh& mesh = glop.mesh; const Glop::Mesh::Vertices& vertices = mesh.vertices; const Glop::Mesh::Indices& indices = mesh.indices; @@ -412,7 +418,11 @@ void RenderState::render(const Glop& glop, const Matrix4& orthoMatrix) { // ------------------------------------ // ---------- GL state setup ---------- // ------------------------------------ - blend().setFactors(glop.blend.src, glop.blend.dst); + if (CC_UNLIKELY(overrideDisableBlending)) { + blend().setFactors(GL_ZERO, GL_ZERO); + } else { + blend().setFactors(glop.blend.src, glop.blend.dst); + } GL_CHECKPOINT(MODERATE); diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h index 4b7a86580621a10ae394f369d8ac42b1cc8189f0..315fa2db68782de827d67189edf7d8dac8d3a84b 100644 --- a/libs/hwui/renderstate/RenderState.h +++ b/libs/hwui/renderstate/RenderState.h @@ -106,14 +106,14 @@ public: // more thinking... void postDecStrong(VirtualLightRefBase* object); - void render(const Glop& glop, const Matrix4& orthoMatrix); + void render(const Glop& glop, const Matrix4& orthoMatrix, bool overrideDisableBlending); Blend& blend() { return *mBlend; } MeshState& meshState() { return *mMeshState; } Scissor& scissor() { return *mScissor; } Stencil& stencil() { return *mStencil; } - OffscreenBufferPool& layerPool() { return mLayerPool; } + OffscreenBufferPool& layerPool() { return *mLayerPool; } GrContext* getGrContext() const; @@ -136,7 +136,7 @@ private: Scissor* mScissor = nullptr; Stencil* mStencil = nullptr; - OffscreenBufferPool mLayerPool; + OffscreenBufferPool* mLayerPool = nullptr; std::set mActiveLayers; std::set mActiveLayerUpdaters; diff --git a/libs/hwui/renderstate/Stencil.cpp b/libs/hwui/renderstate/Stencil.cpp index d25ad514e8924b34f4dbd02c910fd3d04619a768..f59442196af1984dc2066b10b0717643796c1944 100644 --- a/libs/hwui/renderstate/Stencil.cpp +++ b/libs/hwui/renderstate/Stencil.cpp @@ -47,7 +47,7 @@ uint8_t Stencil::getStencilSize() { */ GLenum Stencil::getLayerStencilFormat() { #if !DEBUG_STENCIL - const Extensions& extensions = Caches::getInstance().extensions(); + const Extensions& extensions = DeviceInfo::get()->extensions(); if (extensions.has4BitStencil()) { return GL_STENCIL_INDEX4_OES; } diff --git a/libs/hwui/renderthread/CacheManager.cpp b/libs/hwui/renderthread/CacheManager.cpp index f0d6b3860938e9c2d9417db01bad45f724fd509e..55694d046c2f69d4a89c0cc219434e334ff05d84 100644 --- a/libs/hwui/renderthread/CacheManager.cpp +++ b/libs/hwui/renderthread/CacheManager.cpp @@ -43,7 +43,8 @@ namespace renderthread { CacheManager::CacheManager(const DisplayInfo& display) : mMaxSurfaceArea(display.w * display.h) { - mVectorDrawableAtlas.reset(new VectorDrawableAtlas); + mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas(mMaxSurfaceArea/2, + skiapipeline::VectorDrawableAtlas::StorageMode::allowSharedSurface); } void CacheManager::reset(GrContext* context) { @@ -61,7 +62,7 @@ void CacheManager::reset(GrContext* context) { void CacheManager::destroy() { // cleanup any caches here as the GrContext is about to go away... mGrContext.reset(nullptr); - mVectorDrawableAtlas.reset(new VectorDrawableAtlas); + mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas(mMaxSurfaceArea/2); } void CacheManager::updateContextCacheSizes() { @@ -104,7 +105,7 @@ void CacheManager::trimMemory(TrimMemoryMode mode) { switch (mode) { case TrimMemoryMode::Complete: - mVectorDrawableAtlas.reset(new VectorDrawableAtlas); + mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas(mMaxSurfaceArea/2); mGrContext->freeGpuResources(); break; case TrimMemoryMode::UiHidden: @@ -121,24 +122,14 @@ void CacheManager::trimStaleResources() { mGrContext->purgeResourcesNotUsedInMs(std::chrono::seconds(30)); } -VectorDrawableAtlas* CacheManager::acquireVectorDrawableAtlas() { +sp CacheManager::acquireVectorDrawableAtlas() { LOG_ALWAYS_FATAL_IF(mVectorDrawableAtlas.get() == nullptr); LOG_ALWAYS_FATAL_IF(mGrContext == nullptr); /** - * TODO LIST: - * 1) compute the atlas based on the surfaceArea surface - * 2) identify a way to reuse cache entries - * 3) add ability to repack the cache? - * 4) define memory conditions where we clear the cache (e.g. surface->reset()) + * TODO: define memory conditions where we clear the cache (e.g. surface->reset()) */ - - return mVectorDrawableAtlas.release(); -} -void CacheManager::releaseVectorDrawableAtlas(VectorDrawableAtlas* atlas) { - LOG_ALWAYS_FATAL_IF(mVectorDrawableAtlas.get() != nullptr); - mVectorDrawableAtlas.reset(atlas); - mVectorDrawableAtlas->isNewAtlas = false; + return mVectorDrawableAtlas; } void CacheManager::dumpMemoryUsage(String8& log, const RenderState* renderState) { diff --git a/libs/hwui/renderthread/CacheManager.h b/libs/hwui/renderthread/CacheManager.h index 43d58f2d58a83f198c9cf314cff0f7cfbe726655..90362f33358d7278e764ccc288e5eb30d51a8a60 100644 --- a/libs/hwui/renderthread/CacheManager.h +++ b/libs/hwui/renderthread/CacheManager.h @@ -22,6 +22,7 @@ #include #include #include +#include "pipeline/skia/VectorDrawableAtlas.h" namespace android { @@ -36,11 +37,6 @@ namespace renderthread { class IRenderPipeline; class RenderThread; -struct VectorDrawableAtlas { - sk_sp surface; - bool isNewAtlas = true; -}; - class CacheManager { public: enum class TrimMemoryMode { @@ -53,8 +49,7 @@ public: void trimStaleResources(); void dumpMemoryUsage(String8& log, const RenderState* renderState = nullptr); - VectorDrawableAtlas* acquireVectorDrawableAtlas(); - void releaseVectorDrawableAtlas(VectorDrawableAtlas*); + sp acquireVectorDrawableAtlas(); size_t getCacheSize() const { return mMaxResourceBytes; } size_t getBackgroundCacheSize() const { return mBackgroundResourceBytes; } @@ -81,7 +76,7 @@ private: size_t surfaceArea = 0; }; - std::unique_ptr mVectorDrawableAtlas; + sp mVectorDrawableAtlas; }; } /* namespace renderthread */ diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 77992488301625761721723f560e7980a5a02289..5d7f5948b0ece3d8d04c4c305a8c29ff402455b6 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -142,8 +142,8 @@ CanvasContext::CanvasContext(RenderThread& thread, bool translucent, : mRenderThread(thread) , mOpaque(!translucent) , mAnimationContext(contextFactory->createAnimationContext(mRenderThread.timeLord())) - , mJankTracker(thread.mainDisplayInfo()) - , mProfiler(mFrames) + , mJankTracker(&thread.globalProfileData(), thread.mainDisplayInfo()) + , mProfiler(mJankTracker.frames()) , mContentDrawBounds(0, 0, 0, 0) , mRenderPipeline(std::move(renderPipeline)) { rootRenderNode->makeRoot(); @@ -321,7 +321,7 @@ void CanvasContext::prepareTree(TreeInfo& info, int64_t* uiFrameInfo, // If the previous frame was dropped we don't need to hold onto it, so // just keep using the previous frame's structure instead if (!wasSkipped(mCurrentFrameInfo)) { - mCurrentFrameInfo = &mFrames.next(); + mCurrentFrameInfo = mJankTracker.startFrame(); } mCurrentFrameInfo->importUiThreadInfo(uiFrameInfo); mCurrentFrameInfo->set(FrameInfoIndex::SyncQueued) = syncQueued; @@ -485,8 +485,7 @@ void CanvasContext::draw() { } #endif - mJankTracker.addFrame(*mCurrentFrameInfo); - mRenderThread.jankTracker().addFrame(*mCurrentFrameInfo); + mJankTracker.finishFrame(*mCurrentFrameInfo); if (CC_UNLIKELY(mFrameMetricsReporter.get() != nullptr)) { mFrameMetricsReporter->reportFrameMetrics(mCurrentFrameInfo->data()); } @@ -625,30 +624,12 @@ DeferredLayerUpdater* CanvasContext::createTextureLayer() { } void CanvasContext::dumpFrames(int fd) { - mJankTracker.dump(fd); - FILE* file = fdopen(fd, "a"); - fprintf(file, "\n\n---PROFILEDATA---\n"); - for (size_t i = 0; i < static_cast(FrameInfoIndex::NumIndexes); i++) { - fprintf(file, "%s", FrameInfoNames[i].c_str()); - fprintf(file, ","); - } - for (size_t i = 0; i < mFrames.size(); i++) { - FrameInfo& frame = mFrames[i]; - if (frame[FrameInfoIndex::SyncStart] == 0) { - continue; - } - fprintf(file, "\n"); - for (int i = 0; i < static_cast(FrameInfoIndex::NumIndexes); i++) { - fprintf(file, "%" PRId64 ",", frame[i]); - } - } - fprintf(file, "\n---PROFILEDATA---\n\n"); - fflush(file); + mJankTracker.dumpStats(fd); + mJankTracker.dumpFrames(fd); } void CanvasContext::resetFrameStats() { - mFrames.clear(); - mRenderThread.jankTracker().reset(); + mJankTracker.reset(); } void CanvasContext::setName(const std::string&& name) { diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h index b1f405040a590692c24673b5075bb4d2944a5d09..4a5b2c72b02a4b611a56a7c4fe708004697d3d99 100644 --- a/libs/hwui/renderthread/CanvasContext.h +++ b/libs/hwui/renderthread/CanvasContext.h @@ -29,7 +29,6 @@ #include "RenderNode.h" #include "thread/Task.h" #include "thread/TaskProcessor.h" -#include "utils/RingBuffer.h" #include "renderthread/RenderTask.h" #include "renderthread/RenderThread.h" @@ -163,8 +162,8 @@ public: void addRenderNode(RenderNode* node, bool placeFront); void removeRenderNode(RenderNode* node); - void setContentDrawBounds(int left, int top, int right, int bottom) { - mContentDrawBounds.set(left, top, right, bottom); + void setContentDrawBounds(const Rect& bounds) { + mContentDrawBounds = bounds; } RenderState& getRenderState() { @@ -253,8 +252,6 @@ private: std::vector< sp > mRenderNodes; FrameInfo* mCurrentFrameInfo = nullptr; - // Ring buffer large enough for 2 seconds worth of frames - RingBuffer mFrames; std::string mName; JankTracker mJankTracker; FrameInfoVisualizer mProfiler; diff --git a/libs/hwui/renderthread/DrawFrameTask.cpp b/libs/hwui/renderthread/DrawFrameTask.cpp index 7d641d3ac7c776bb0be4280155d6e9fc875d4836..a097272df3594a1478d999bc40f5058faf464145 100644 --- a/libs/hwui/renderthread/DrawFrameTask.cpp +++ b/libs/hwui/renderthread/DrawFrameTask.cpp @@ -32,6 +32,7 @@ namespace renderthread { DrawFrameTask::DrawFrameTask() : mRenderThread(nullptr) , mContext(nullptr) + , mContentDrawBounds(0, 0, 0, 0) , mSyncResult(SyncResult::OK) { } @@ -123,6 +124,7 @@ bool DrawFrameTask::syncFrameState(TreeInfo& info) { mLayers[i]->apply(); } mLayers.clear(); + mContext->setContentDrawBounds(mContentDrawBounds); mContext->prepareTree(info, mFrameInfo, mSyncQueued, mTargetNode); // This is after the prepareTree so that any pending operations diff --git a/libs/hwui/renderthread/DrawFrameTask.h b/libs/hwui/renderthread/DrawFrameTask.h index fb480626d421429d432ded414724518eb9bfd43f..83ecb98f548f52d48861357ea96cf3441e548f9d 100644 --- a/libs/hwui/renderthread/DrawFrameTask.h +++ b/libs/hwui/renderthread/DrawFrameTask.h @@ -61,6 +61,9 @@ public: virtual ~DrawFrameTask(); void setContext(RenderThread* thread, CanvasContext* context, RenderNode* targetNode); + void setContentDrawBounds(int left, int top, int right, int bottom) { + mContentDrawBounds.set(left, top, right, bottom); + } void pushLayerUpdate(DeferredLayerUpdater* layer); void removeLayerUpdate(DeferredLayerUpdater* layer); @@ -82,6 +85,7 @@ private: RenderThread* mRenderThread; CanvasContext* mContext; RenderNode* mTargetNode = nullptr; + Rect mContentDrawBounds; /********************************************* * Single frame data diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp index 0e676ee4f9dba5a28b25e2fc74b5d8eef6efcb05..16d77364942ea1efd453708f09552210b0d1557d 100644 --- a/libs/hwui/renderthread/EglManager.cpp +++ b/libs/hwui/renderthread/EglManager.cpp @@ -114,7 +114,7 @@ void EglManager::initialize() { // An Adreno driver bug is causing rendering problems for SkiaGL with // buffer age swap behavior (b/31957043). To temporarily workaround, // we will use preserved swap behavior. - if (Properties::useBufferAge && EglExtensions.bufferAge && !Properties::isSkiaEnabled()) { + if (Properties::useBufferAge && EglExtensions.bufferAge) { mSwapBehavior = SwapBehavior::BufferAge; } else { mSwapBehavior = SwapBehavior::Preserved; diff --git a/libs/hwui/renderthread/RenderProxy.cpp b/libs/hwui/renderthread/RenderProxy.cpp index 80c2955400d8e7a62d412ff21686087dc22e2a09..9048bd14b35c676560b58ac40a4395310d0ba5e3 100644 --- a/libs/hwui/renderthread/RenderProxy.cpp +++ b/libs/hwui/renderthread/RenderProxy.cpp @@ -21,6 +21,7 @@ #include "Properties.h" #include "Readback.h" #include "Rect.h" +#include "pipeline/skia/VectorDrawableAtlas.h" #include "renderthread/CanvasContext.h" #include "renderthread/EglManager.h" #include "renderthread/RenderTask.h" @@ -427,12 +428,12 @@ CREATE_BRIDGE4(dumpProfileInfo, CanvasContext* context, RenderThread* thread, if (args->dumpFlags & DumpFlags::FrameStats) { args->context->dumpFrames(args->fd); } + if (args->dumpFlags & DumpFlags::JankStats) { + args->thread->globalProfileData()->dump(args->fd); + } if (args->dumpFlags & DumpFlags::Reset) { args->context->resetFrameStats(); } - if (args->dumpFlags & DumpFlags::JankStats) { - args->thread->jankTracker().dump(args->fd); - } return nullptr; } @@ -458,7 +459,7 @@ void RenderProxy::resetProfileInfo() { CREATE_BRIDGE2(frameTimePercentile, RenderThread* thread, int percentile) { return reinterpret_cast(static_cast( - args->thread->jankTracker().findPercentile(args->percentile))); + args->thread->globalProfileData()->findPercentile(args->percentile))); } uint32_t RenderProxy::frameTimePercentile(int p) { @@ -483,7 +484,7 @@ void RenderProxy::dumpGraphicsMemory(int fd) { } CREATE_BRIDGE2(setProcessStatsBuffer, RenderThread* thread, int fd) { - args->thread->jankTracker().switchStorageToAshmem(args->fd); + args->thread->globalProfileData().switchStorageToAshmem(args->fd); close(args->fd); return nullptr; } @@ -497,7 +498,7 @@ void RenderProxy::setProcessStatsBuffer(int fd) { } CREATE_BRIDGE1(rotateProcessStatsBuffer, RenderThread* thread) { - args->thread->jankTracker().rotateStorage(); + args->thread->globalProfileData().rotateStorage(); return nullptr; } @@ -550,20 +551,8 @@ void RenderProxy::drawRenderNode(RenderNode* node) { staticPostAndWait(task); } -CREATE_BRIDGE5(setContentDrawBounds, CanvasContext* context, int left, int top, - int right, int bottom) { - args->context->setContentDrawBounds(args->left, args->top, args->right, args->bottom); - return nullptr; -} - void RenderProxy::setContentDrawBounds(int left, int top, int right, int bottom) { - SETUP_TASK(setContentDrawBounds); - args->context = mContext; - args->left = left; - args->top = top; - args->right = right; - args->bottom = bottom; - staticPostAndWait(task); + mDrawFrameTask.setContentDrawBounds(left, top, right, bottom); } CREATE_BRIDGE1(serializeDisplayListTree, CanvasContext* context) { @@ -718,6 +707,19 @@ void RenderProxy::post(RenderTask* task) { mRenderThread.queue(task); } +CREATE_BRIDGE1(repackVectorDrawableAtlas, RenderThread* thread) { + args->thread->cacheManager().acquireVectorDrawableAtlas()->repackIfNeeded( + args->thread->getGrContext()); + return nullptr; +} + +void RenderProxy::repackVectorDrawableAtlas() { + RenderThread& thread = RenderThread::getInstance(); + SETUP_TASK(repackVectorDrawableAtlas); + args->thread = &thread; + thread.queue(task); +} + void* RenderProxy::postAndWait(MethodInvokeRenderTask* task) { void* retval; task->setReturnPtr(&retval); diff --git a/libs/hwui/renderthread/RenderProxy.h b/libs/hwui/renderthread/RenderProxy.h index 31f0ce67e1a7608bce2df6582bce4950d05bc958..06eaebd066ee6150379afadb337a10df536b5abc 100644 --- a/libs/hwui/renderthread/RenderProxy.h +++ b/libs/hwui/renderthread/RenderProxy.h @@ -140,6 +140,9 @@ public: static void onBitmapDestroyed(uint32_t pixelRefId); ANDROID_API static void disableVsync(); + + static void repackVectorDrawableAtlas(); + private: RenderThread& mRenderThread; CanvasContext* mContext; diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index 13af2c4d15e85649c629fd586ab12732cd2222d5..72a428f1c70c78c3be415b519b0218e45c101910 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -200,13 +200,12 @@ void RenderThread::initThreadLocals() { initializeDisplayEventReceiver(); mEglManager = new EglManager(*this); mRenderState = new RenderState(*this); - mJankTracker = new JankTracker(mDisplayInfo); mVkManager = new VulkanManager(*this); mCacheManager = new CacheManager(mDisplayInfo); } void RenderThread::dumpGraphicsMemory(int fd) { - jankTracker().dump(fd); + globalProfileData()->dump(fd); String8 cachesOutput; String8 pipeline; diff --git a/libs/hwui/renderthread/RenderThread.h b/libs/hwui/renderthread/RenderThread.h index d9842572d7cd3bea7c94b137fe66a8b891bffcf8..bef47b3e27c5c2a6043e388f2362b60e352658c1 100644 --- a/libs/hwui/renderthread/RenderThread.h +++ b/libs/hwui/renderthread/RenderThread.h @@ -97,7 +97,7 @@ public: TimeLord& timeLord() { return mTimeLord; } RenderState& renderState() const { return *mRenderState; } EglManager& eglManager() const { return *mEglManager; } - JankTracker& jankTracker() { return *mJankTracker; } + ProfileDataContainer& globalProfileData() { return mGlobalProfileData; } Readback& readback(); const DisplayInfo& mainDisplayInfo() { return mDisplayInfo; } @@ -160,7 +160,7 @@ private: RenderState* mRenderState; EglManager* mEglManager; - JankTracker* mJankTracker = nullptr; + ProfileDataContainer mGlobalProfileData; Readback* mReadback = nullptr; sk_sp mGrContext; diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp index a745320ca8844ca96be8a3f30d2dee939f91fa1f..2195143658d2a9828bf1d390ac19c243ad046888 100644 --- a/libs/hwui/renderthread/VulkanManager.cpp +++ b/libs/hwui/renderthread/VulkanManager.cpp @@ -22,6 +22,7 @@ #include "renderstate/RenderState.h" #include "utils/FatVector.h" +#include #include #include #include @@ -297,13 +298,9 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt SkSurfaceProps props(0, kUnknown_SkPixelGeometry); - bool wantSRGB = VK_FORMAT_R8G8B8A8_SRGB == format; - GrPixelConfig config = wantSRGB ? kSRGBA_8888_GrPixelConfig : kRGBA_8888_GrPixelConfig; - // set up initial image layouts and create surfaces surface->mImageInfos = new VulkanSurface::ImageInfo[surface->mImageCount]; for (uint32_t i = 0; i < surface->mImageCount; ++i) { - GrBackendRenderTargetDesc desc; GrVkImageInfo info; info.fImage = surface->mImages[i]; info.fAlloc = { VK_NULL_HANDLE, 0, 0, 0 }; @@ -312,17 +309,11 @@ void VulkanManager::createBuffers(VulkanSurface* surface, VkFormat format, VkExt info.fFormat = format; info.fLevelCount = 1; - desc.fWidth = extent.width; - desc.fHeight = extent.height; - desc.fConfig = config; - desc.fOrigin = kTopLeft_GrSurfaceOrigin; - desc.fSampleCnt = 0; - desc.fStencilBits = 0; - desc.fRenderTargetHandle = (GrBackendObject) &info; + GrBackendRenderTarget backendRT(extent.width, extent.height, 0, 0, info); VulkanSurface::ImageInfo& imageInfo = surface->mImageInfos[i]; imageInfo.mSurface = SkSurface::MakeFromBackendRenderTarget(mRenderThread.getGrContext(), - desc, &props); + backendRT, kTopLeft_GrSurfaceOrigin, nullptr, &props); } SkASSERT(mCommandPool != VK_NULL_HANDLE); diff --git a/libs/hwui/service/GraphicsStatsService.cpp b/libs/hwui/service/GraphicsStatsService.cpp index 978a1f3481c3befdaf707b341ac1a14793d27633..f7a90b0a65ec756b8b41c9115a86577f0d587a77 100644 --- a/libs/hwui/service/GraphicsStatsService.cpp +++ b/libs/hwui/service/GraphicsStatsService.cpp @@ -39,11 +39,9 @@ constexpr int32_t sCurrentFileVersion = 1; constexpr int32_t sHeaderSize = 4; static_assert(sizeof(sCurrentFileVersion) == sHeaderSize, "Header size is wrong"); -constexpr int sHistogramSize = - std::tuple_size::value + - std::tuple_size::value; +constexpr int sHistogramSize = ProfileData::HistogramSize(); -static void mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, +static bool mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, const std::string& package, int versionCode, int64_t startTime, int64_t endTime, const ProfileData* data); static void dumpAsTextToFd(service::GraphicsStatsProto* proto, int outFd); @@ -162,7 +160,7 @@ bool GraphicsStatsService::parseFromFile(const std::string& path, service::Graph return success; } -void mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, const std::string& package, +bool mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, const std::string& package, int versionCode, int64_t startTime, int64_t endTime, const ProfileData* data) { if (proto->stats_start() == 0 || proto->stats_start() > startTime) { proto->set_stats_start(startTime); @@ -173,54 +171,49 @@ void mergeProfileDataIntoProto(service::GraphicsStatsProto* proto, const std::st proto->set_package_name(package); proto->set_version_code(versionCode); auto summary = proto->mutable_summary(); - summary->set_total_frames(summary->total_frames() + data->totalFrameCount); - summary->set_janky_frames(summary->janky_frames() + data->jankFrameCount); + summary->set_total_frames(summary->total_frames() + data->totalFrameCount()); + summary->set_janky_frames(summary->janky_frames() + data->jankFrameCount()); summary->set_missed_vsync_count( - summary->missed_vsync_count() + data->jankTypeCounts[kMissedVsync]); + summary->missed_vsync_count() + data->jankTypeCount(kMissedVsync)); summary->set_high_input_latency_count( - summary->high_input_latency_count() + data->jankTypeCounts[kHighInputLatency]); + summary->high_input_latency_count() + data->jankTypeCount(kHighInputLatency)); summary->set_slow_ui_thread_count( - summary->slow_ui_thread_count() + data->jankTypeCounts[kSlowUI]); + summary->slow_ui_thread_count() + data->jankTypeCount(kSlowUI)); summary->set_slow_bitmap_upload_count( - summary->slow_bitmap_upload_count() + data->jankTypeCounts[kSlowSync]); + summary->slow_bitmap_upload_count() + data->jankTypeCount(kSlowSync)); summary->set_slow_draw_count( - summary->slow_draw_count() + data->jankTypeCounts[kSlowRT]); + summary->slow_draw_count() + data->jankTypeCount(kSlowRT)); bool creatingHistogram = false; if (proto->histogram_size() == 0) { proto->mutable_histogram()->Reserve(sHistogramSize); creatingHistogram = true; } else if (proto->histogram_size() != sHistogramSize) { - LOG_ALWAYS_FATAL("Histogram size mismatch, proto is %d expected %d", + ALOGE("Histogram size mismatch, proto is %d expected %d", proto->histogram_size(), sHistogramSize); + return false; } - for (size_t i = 0; i < data->frameCounts.size(); i++) { - service::GraphicsStatsHistogramBucketProto* bucket; - int32_t renderTime = JankTracker::frameTimeForFrameCountIndex(i); - if (creatingHistogram) { - bucket = proto->add_histogram(); - bucket->set_render_millis(renderTime); - } else { - bucket = proto->mutable_histogram(i); - LOG_ALWAYS_FATAL_IF(bucket->render_millis() != renderTime, - "Frame time mistmatch %d vs. %d", bucket->render_millis(), renderTime); - } - bucket->set_frame_count(bucket->frame_count() + data->frameCounts[i]); - } - for (size_t i = 0; i < data->slowFrameCounts.size(); i++) { + int index = 0; + bool hitMergeError = false; + data->histogramForEach([&](ProfileData::HistogramEntry entry) { + if (hitMergeError) return; + service::GraphicsStatsHistogramBucketProto* bucket; - int32_t renderTime = JankTracker::frameTimeForSlowFrameCountIndex(i); if (creatingHistogram) { bucket = proto->add_histogram(); - bucket->set_render_millis(renderTime); + bucket->set_render_millis(entry.renderTimeMs); } else { - constexpr int offset = std::tuple_size::value; - bucket = proto->mutable_histogram(offset + i); - LOG_ALWAYS_FATAL_IF(bucket->render_millis() != renderTime, - "Frame time mistmatch %d vs. %d", bucket->render_millis(), renderTime); + bucket = proto->mutable_histogram(index); + if (bucket->render_millis() != static_cast(entry.renderTimeMs)) { + ALOGW("Frame time mistmatch %d vs. %u", bucket->render_millis(), entry.renderTimeMs); + hitMergeError = true; + return; + } } - bucket->set_frame_count(bucket->frame_count() + data->slowFrameCounts[i]); - } + bucket->set_frame_count(bucket->frame_count() + entry.frameCount); + index++; + }); + return !hitMergeError; } static int32_t findPercentile(service::GraphicsStatsProto* proto, int percentile) { @@ -237,9 +230,11 @@ static int32_t findPercentile(service::GraphicsStatsProto* proto, int percentile void dumpAsTextToFd(service::GraphicsStatsProto* proto, int fd) { // This isn't a full validation, just enough that we can deref at will - LOG_ALWAYS_FATAL_IF(proto->package_name().empty() - || !proto->has_summary(), "package_name() '%s' summary %d", - proto->package_name().c_str(), proto->has_summary()); + if (proto->package_name().empty() || !proto->has_summary()) { + ALOGW("Skipping dump, invalid package_name() '%s' or summary %d", + proto->package_name().c_str(), proto->has_summary()); + return; + } dprintf(fd, "\nPackage: %s", proto->package_name().c_str()); dprintf(fd, "\nVersion: %d", proto->version_code()); dprintf(fd, "\nStats since: %lldns", proto->stats_start()); @@ -270,14 +265,20 @@ void GraphicsStatsService::saveBuffer(const std::string& path, const std::string if (!parseFromFile(path, &statsProto)) { statsProto.Clear(); } - mergeProfileDataIntoProto(&statsProto, package, versionCode, startTime, endTime, data); + if (!mergeProfileDataIntoProto(&statsProto, package, versionCode, startTime, endTime, data)) { + return; + } // Although we might not have read any data from the file, merging the existing data // should always fully-initialize the proto - LOG_ALWAYS_FATAL_IF(!statsProto.IsInitialized(), "%s", - statsProto.InitializationErrorString().c_str()); - LOG_ALWAYS_FATAL_IF(statsProto.package_name().empty() - || !statsProto.has_summary(), "package_name() '%s' summary %d", - statsProto.package_name().c_str(), statsProto.has_summary()); + if (!statsProto.IsInitialized()) { + ALOGE("proto initialization error %s", statsProto.InitializationErrorString().c_str()); + return; + } + if (statsProto.package_name().empty() || !statsProto.has_summary()) { + ALOGE("missing package_name() '%s' summary %d", + statsProto.package_name().c_str(), statsProto.has_summary()); + return; + } int outFd = open(path.c_str(), O_CREAT | O_RDWR | O_TRUNC, 0660); if (outFd <= 0) { int err = errno; @@ -328,8 +329,9 @@ void GraphicsStatsService::addToDump(Dump* dump, const std::string& path, const if (!path.empty() && !parseFromFile(path, &statsProto)) { statsProto.Clear(); } - if (data) { - mergeProfileDataIntoProto(&statsProto, package, versionCode, startTime, endTime, data); + if (data && !mergeProfileDataIntoProto( + &statsProto, package, versionCode, startTime, endTime, data)) { + return; } if (!statsProto.IsInitialized()) { ALOGW("Failed to load profile data from path '%s' and data %p", diff --git a/libs/hwui/tests/common/BitmapAllocationTestUtils.h b/libs/hwui/tests/common/BitmapAllocationTestUtils.h index 4892179f0d480a41827442e48346d1f4fe4e38cc..2988979cc2668dc0f26411e853c6d8a24cf1d80d 100644 --- a/libs/hwui/tests/common/BitmapAllocationTestUtils.h +++ b/libs/hwui/tests/common/BitmapAllocationTestUtils.h @@ -41,7 +41,7 @@ public: SkBitmap skBitmap; SkImageInfo info = SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType); skBitmap.setInfo(info); - sk_sp heapBitmap(Bitmap::allocateHeapBitmap(&skBitmap, nullptr)); + sk_sp heapBitmap(Bitmap::allocateHeapBitmap(&skBitmap)); setup(skBitmap); return Bitmap::allocateHardwareBitmap(skBitmap); } @@ -73,4 +73,4 @@ public: } // namespace test } // namespace uirenderer -} // namespace android \ No newline at end of file +} // namespace android diff --git a/libs/hwui/tests/common/LeakChecker.cpp b/libs/hwui/tests/common/LeakChecker.cpp index d935382cc9a42ed076c2b98cca6b519ed9ce07a8..fe38ec958527b598b675f0c08f60979d4d4e0d1a 100644 --- a/libs/hwui/tests/common/LeakChecker.cpp +++ b/libs/hwui/tests/common/LeakChecker.cpp @@ -58,9 +58,8 @@ static void logUnreachable(initializer_list infolist) { if (merged.num_leaks) { cout << endl << "Leaked memory!" << endl; if (!merged.leaks[0].backtrace.num_frames) { - cout << "Re-run with 'setprop libc.debug.malloc.program hwui_unit_test'" - << endl << "and 'setprop libc.debug.malloc.options backtrace=8'" - << " to get backtraces" << endl; + cout << "Re-run with 'export LIBC_DEBUG_MALLOC_OPTIONS=backtrace' to get backtraces" + << endl; } cout << merged.ToString(false); } diff --git a/libs/hwui/tests/common/TestUtils.h b/libs/hwui/tests/common/TestUtils.h index 98d5fb3af09a14c22603db5a3e3c506b06967e2d..f29363131030e73793b41a438e7c4a1e8f688df2 100644 --- a/libs/hwui/tests/common/TestUtils.h +++ b/libs/hwui/tests/common/TestUtils.h @@ -189,7 +189,7 @@ public: static sk_sp createBitmap(int width, int height, SkBitmap* outBitmap) { SkImageInfo info = SkImageInfo::Make(width, height, kN32_SkColorType, kPremul_SkAlphaType); outBitmap->setInfo(info); - return Bitmap::allocateHeapBitmap(outBitmap, nullptr); + return Bitmap::allocateHeapBitmap(outBitmap); } static sp createTextureLayerUpdater( diff --git a/libs/hwui/tests/common/scenes/TvApp.cpp b/libs/hwui/tests/common/scenes/TvApp.cpp new file mode 100644 index 0000000000000000000000000000000000000000..04fc2d46f946d4170955c6868b52ae095257b1ef --- /dev/null +++ b/libs/hwui/tests/common/scenes/TvApp.cpp @@ -0,0 +1,274 @@ +/* + * 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. + */ + +#include "TestSceneBase.h" +#include "tests/common/BitmapAllocationTestUtils.h" +#include "SkBlendMode.h" + +class TvApp; +class TvAppNoRoundedCorner; +class TvAppColorFilter; +class TvAppNoRoundedCornerColorFilter; + +static bool _TvApp( + BitmapAllocationTestUtils::registerBitmapAllocationScene( + "tvapp", "A dense grid of cards:" + "with rounded corner, using overlay RenderNode for dimming.")); + +static bool _TvAppNoRoundedCorner( + BitmapAllocationTestUtils::registerBitmapAllocationScene( + "tvapp_norc", "A dense grid of cards:" + "no rounded corner, using overlay RenderNode for dimming")); + +static bool _TvAppColorFilter( + BitmapAllocationTestUtils::registerBitmapAllocationScene( + "tvapp_cf", "A dense grid of cards:" + "with rounded corner, using ColorFilter for dimming")); + +static bool _TvAppNoRoundedCornerColorFilter( + BitmapAllocationTestUtils::registerBitmapAllocationScene( + "tvapp_norc_cf", "A dense grid of cards:" + "no rounded corner, using ColorFilter for dimming")); + +class TvApp : public TestScene { +public: + TvApp(BitmapAllocationTestUtils::BitmapAllocator allocator) + : TestScene() + , mAllocator(allocator) { } + + sp mBg; + std::vector> mCards; + std::vector> mInfoAreas; + std::vector> mImages; + std::vector> mOverlays; + std::vector> mCachedBitmaps; + BitmapAllocationTestUtils::BitmapAllocator mAllocator; + sk_sp mSingleBitmap; + int mSeed = 0; + int mSeed2 = 0; + + void createContent(int width, int height, Canvas& canvas) override { + mBg = createBitmapNode(canvas, 0xFF9C27B0, 0, 0, width, height); + canvas.drawRenderNode(mBg.get()); + + canvas.insertReorderBarrier(true); + mSingleBitmap = mAllocator(dp(160), dp(120), kRGBA_8888_SkColorType, + [](SkBitmap& skBitmap) { + skBitmap.eraseColor(0xFF0000FF); + }); + + for (int y = dp(18) - dp(178); y < height - dp(18); y += dp(178)) { + bool isFirstCard = true; + for (int x = dp(18); x < width - dp(18); x += dp(178)) { + sp card = createCard(x, y, dp(160), dp(160), isFirstCard); + isFirstCard = false; + canvas.drawRenderNode(card.get()); + mCards.push_back(card); + } + } + canvas.insertReorderBarrier(false); + } + + void doFrame(int frameNr) override { + size_t numCards = mCards.size(); + for (size_t ci = 0; ci < numCards; ci++) { + updateCard(ci, frameNr); + } + } + +private: + sp createBitmapNode(Canvas& canvas, SkColor color, int left, int top, + int width, int height) { + return TestUtils::createNode(left, top, left + width , top + height, + [this, width, height, color](RenderProperties& props, Canvas& canvas) { + sk_sp bitmap = mAllocator(width, height, kRGBA_8888_SkColorType, + [color](SkBitmap& skBitmap) { + skBitmap.eraseColor(color); + }); + canvas.drawBitmap(*bitmap, 0, 0, nullptr); + }); + } + + sp createSharedBitmapNode(Canvas& canvas, int left, int top, + int width, int height, sk_spbitmap) { + return TestUtils::createNode(left, top, left + width , top + height, + [bitmap](RenderProperties& props, Canvas& canvas) { + canvas.drawBitmap(*bitmap, 0, 0, nullptr); + }); + } + + sp createInfoNode(Canvas& canvas, int left, int top, + int width, int height, const char* text, const char* text2) { + return TestUtils::createNode(left, top, left + width , top + height, + [text, text2](RenderProperties& props, Canvas& canvas) { + canvas.drawColor(0xFFFFEEEE, SkBlendMode::kSrcOver); + + SkPaint paint; + paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding); + paint.setAntiAlias(true); + paint.setTextSize(24); + + paint.setColor(Color::Black); + TestUtils::drawUtf8ToCanvas(&canvas, text, paint, 10, 30); + paint.setTextSize(20); + TestUtils::drawUtf8ToCanvas(&canvas, text2, paint, 10, 54); + + }); + } + + sp createColorNode(Canvas& canvas, int left, int top, + int width, int height, SkColor color) { + return TestUtils::createNode(left, top, left + width , top + height, + [color](RenderProperties& props, Canvas& canvas) { + canvas.drawColor(color, SkBlendMode::kSrcOver); + }); + } + + virtual bool useSingleBitmap() { + return false; + } + + virtual float roundedCornerRadius() { + return dp(2); + } + + // when true, use overlay RenderNode for dimming, otherwise apply a ColorFilter to dim image + virtual bool useOverlay() { + return true; + } + + sp createCard(int x, int y, int width, int height, bool selected) { + return TestUtils::createNode(x, y, x + width, y + height, + [width, height, selected, this](RenderProperties& props, Canvas& canvas) { + if (selected) { + props.setElevation(dp(16)); + props.setScaleX(1.2); + props.setScaleY(1.2); + } + props.mutableOutline().setRoundRect(0, 0, width, height, roundedCornerRadius(), 1); + props.mutableOutline().setShouldClip(true); + + sk_sp bitmap = useSingleBitmap() ? mSingleBitmap + : mAllocator(width, dp(120), kRGBA_8888_SkColorType, [this](SkBitmap& skBitmap) { + skBitmap.eraseColor(0xFF000000 | ((mSeed << 3) & 0xFF)); + }); + sp cardImage = createSharedBitmapNode(canvas, 0, 0, width, dp(120), + bitmap); + canvas.drawRenderNode(cardImage.get()); + mCachedBitmaps.push_back(bitmap); + mImages.push_back(cardImage); + + char buffer[128]; + sprintf(buffer, "Video %d-%d", mSeed, mSeed + 1); + mSeed++; + char buffer2[128]; + sprintf(buffer2, "Studio %d", mSeed2++); + sp infoArea = createInfoNode(canvas, 0, dp(120), width, height, buffer, buffer2); + canvas.drawRenderNode(infoArea.get()); + mInfoAreas.push_back(infoArea); + + if (useOverlay()) { + sp overlayColor = createColorNode(canvas, 0, 0, width, height, 0x00000000); + canvas.drawRenderNode(overlayColor.get()); + mOverlays.push_back(overlayColor); + } + }); + } + + void updateCard(int ci, int curFrame) { + // updating card's translation Y + sp card = mCards[ci]; + card->setPropertyFieldsDirty(RenderNode::Y); + card->mutateStagingProperties().setTranslationY(curFrame % 150); + + // re-recording card's canvas, not necessary but to add some burden to CPU + std::unique_ptr cardcanvas(Canvas::create_recording_canvas( + card->stagingProperties().getWidth(), + card->stagingProperties().getHeight())); + sp image = mImages[ci]; + sp infoArea = mInfoAreas[ci]; + cardcanvas->drawRenderNode(infoArea.get()); + + if (useOverlay()) { + cardcanvas->drawRenderNode(image.get()); + // re-recording card overlay's canvas, animating overlay color alpha + sp overlay = mOverlays[ci]; + std::unique_ptr canvas(Canvas::create_recording_canvas( + overlay->stagingProperties().getWidth(), + overlay->stagingProperties().getHeight())); + canvas->drawColor((curFrame % 150) << 24, SkBlendMode::kSrcOver); + overlay->setStagingDisplayList(canvas->finishRecording()); + cardcanvas->drawRenderNode(overlay.get()); + } else { + // re-recording image node's canvas, animating ColorFilter + std::unique_ptr canvas(Canvas::create_recording_canvas( + image->stagingProperties().getWidth(), + image->stagingProperties().getHeight())); + SkPaint paint; + sk_sp filter(SkColorFilter::MakeModeFilter((curFrame % 150) << 24, + SkBlendMode::kSrcATop)); + paint.setColorFilter(filter); + sk_sp bitmap = mCachedBitmaps[ci]; + canvas->drawBitmap(*bitmap, 0, 0, &paint); + image->setStagingDisplayList(canvas->finishRecording()); + cardcanvas->drawRenderNode(image.get()); + } + + card->setStagingDisplayList(cardcanvas->finishRecording()); + } +}; + +class TvAppNoRoundedCorner : public TvApp { +public: + TvAppNoRoundedCorner(BitmapAllocationTestUtils::BitmapAllocator allocator) + : TvApp(allocator) { } + +private: + + virtual float roundedCornerRadius() override { + return dp(0); + } +}; + +class TvAppColorFilter : public TvApp { +public: + TvAppColorFilter(BitmapAllocationTestUtils::BitmapAllocator allocator) + : TvApp(allocator) { } + +private: + + virtual bool useOverlay() override { + return false; + } +}; + +class TvAppNoRoundedCornerColorFilter : public TvApp { +public: + TvAppNoRoundedCornerColorFilter(BitmapAllocationTestUtils::BitmapAllocator allocator) + : TvApp(allocator) { } + +private: + + virtual float roundedCornerRadius() override { + return dp(0); + } + + virtual bool useOverlay() override { + return false; + } +}; + + diff --git a/libs/hwui/tests/unit/BakedOpRendererTests.cpp b/libs/hwui/tests/unit/BakedOpRendererTests.cpp index 603599ceb88a4b8540ae5beb884d3ef602aa0aa4..38e106a8ab77e0df123dd3e5454f15cec8d0c4b0 100644 --- a/libs/hwui/tests/unit/BakedOpRendererTests.cpp +++ b/libs/hwui/tests/unit/BakedOpRendererTests.cpp @@ -17,6 +17,7 @@ #include #include +#include #include using namespace android::uirenderer; @@ -53,3 +54,53 @@ RENDERTHREAD_OPENGL_PIPELINE_TEST(BakedOpRenderer, startRepaintLayer_clear) { renderer.endLayer(); } } + +static void drawFirstOp(RenderState& renderState, int color, SkBlendMode mode) { + BakedOpRenderer renderer(Caches::getInstance(), renderState, true, false, sLightInfo); + + renderer.startFrame(100, 100, Rect(100, 100)); + SkPaint paint; + paint.setColor(color); + paint.setBlendMode(mode); + + Rect dest(0, 0, 100, 100); + Glop glop; + GlopBuilder(renderState, Caches::getInstance(), &glop) + .setRoundRectClipState(nullptr) + .setMeshUnitQuad() + .setFillPaint(paint, 1.0f) + .setTransform(Matrix4::identity(), TransformFlags::None) + .setModelViewMapUnitToRectSnap(dest) + .build(); + renderer.renderGlop(nullptr, nullptr, glop); + renderer.endFrame(Rect(100, 100)); +} + +static void verifyBlend(RenderState& renderState, GLenum expectedSrc, GLenum expectedDst) { + EXPECT_TRUE(renderState.blend().getEnabled()); + GLenum src; + GLenum dst; + renderState.blend().getFactors(&src, &dst); + EXPECT_EQ(expectedSrc, src); + EXPECT_EQ(expectedDst, dst); +} + +static void verifyBlendDisabled(RenderState& renderState) { + EXPECT_FALSE(renderState.blend().getEnabled()); +} + +RENDERTHREAD_OPENGL_PIPELINE_TEST(BakedOpRenderer, firstDrawBlend_clear) { + // initialize blend state to nonsense value + renderThread.renderState().blend().setFactors(GL_ONE, GL_ONE); + + drawFirstOp(renderThread.renderState(), 0xfeff0000, SkBlendMode::kClear); + verifyBlend(renderThread.renderState(), GL_ZERO, GL_ONE_MINUS_SRC_ALPHA); +} + +RENDERTHREAD_OPENGL_PIPELINE_TEST(BakedOpRenderer, firstDrawBlend_srcover) { + // initialize blend state to nonsense value + renderThread.renderState().blend().setFactors(GL_ONE, GL_ONE); + + drawFirstOp(renderThread.renderState(), 0xfeff0000, SkBlendMode::kSrcOver); + verifyBlendDisabled(renderThread.renderState()); +} diff --git a/libs/hwui/tests/unit/BitmapTests.cpp b/libs/hwui/tests/unit/BitmapTests.cpp deleted file mode 100644 index ed689bd6f1748d66e718ea8db8a74a4b9d2ba052..0000000000000000000000000000000000000000 --- a/libs/hwui/tests/unit/BitmapTests.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "hwui/Bitmap.h" - -#include -#include -#include - -#include - -using namespace android; -using namespace android::uirenderer; - -TEST(Bitmap, colorTableRefCounting) { - const SkPMColor c[] = { SkPackARGB32(0x80, 0x80, 0, 0) }; - sk_sp ctable = SkColorTable::Make(c, SK_ARRAY_COUNT(c)); - - SkBitmap* bm = new SkBitmap(); - bm->allocPixels(SkImageInfo::Make(1, 1, kIndex_8_SkColorType, kPremul_SkAlphaType), - ctable); - sk_sp bitmap = Bitmap::allocateHeapBitmap(bm, ctable); - EXPECT_FALSE(ctable->unique()); - delete bm; - bitmap.reset(); - EXPECT_TRUE(ctable->unique()); -} - diff --git a/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp b/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp index f6f73377e14719f170f56654c06afb0a2e259d5c..fda3a79a69daf0f1b3f102c546c6922fe1f590e2 100644 --- a/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp +++ b/libs/hwui/tests/unit/GraphicsStatsServiceTests.cpp @@ -61,17 +61,17 @@ TEST(GraphicsStats, findRootPath) { TEST(GraphicsStats, saveLoad) { std::string path = findRootPath() + "/test_saveLoad"; std::string packageName = "com.test.saveLoad"; - ProfileData mockData; - mockData.jankFrameCount = 20; - mockData.totalFrameCount = 100; - mockData.statStartTime = 10000; + MockProfileData mockData; + mockData.editJankFrameCount() = 20; + mockData.editTotalFrameCount() = 100; + mockData.editStatStartTime() = 10000; // Fill with patterned data we can recognize but which won't map to a // memset or basic for iteration count - for (size_t i = 0; i < mockData.frameCounts.size(); i++) { - mockData.frameCounts[i] = ((i % 10) + 1) * 2; + for (size_t i = 0; i < mockData.editFrameCounts().size(); i++) { + mockData.editFrameCounts()[i] = ((i % 10) + 1) * 2; } - for (size_t i = 0; i < mockData.slowFrameCounts.size(); i++) { - mockData.slowFrameCounts[i] = (i % 5) + 1; + for (size_t i = 0; i < mockData.editSlowFrameCounts().size(); i++) { + mockData.editSlowFrameCounts()[i] = (i % 5) + 1; } GraphicsStatsService::saveBuffer(path, packageName, 5, 3000, 7000, &mockData); service::GraphicsStatsProto loadedProto; @@ -87,17 +87,17 @@ TEST(GraphicsStats, saveLoad) { ASSERT_TRUE(loadedProto.has_summary()); EXPECT_EQ(20, loadedProto.summary().janky_frames()); EXPECT_EQ(100, loadedProto.summary().total_frames()); - EXPECT_EQ(mockData.frameCounts.size() + mockData.slowFrameCounts.size(), + EXPECT_EQ(mockData.editFrameCounts().size() + mockData.editSlowFrameCounts().size(), (size_t) loadedProto.histogram_size()); for (size_t i = 0; i < (size_t) loadedProto.histogram_size(); i++) { int expectedCount, expectedBucket; - if (i < mockData.frameCounts.size()) { + if (i < mockData.editFrameCounts().size()) { expectedCount = ((i % 10) + 1) * 2; - expectedBucket = JankTracker::frameTimeForFrameCountIndex(i); + expectedBucket = ProfileData::frameTimeForFrameCountIndex(i); } else { - int temp = i - mockData.frameCounts.size(); + int temp = i - mockData.editFrameCounts().size(); expectedCount = (temp % 5) + 1; - expectedBucket = JankTracker::frameTimeForSlowFrameCountIndex(temp); + expectedBucket = ProfileData::frameTimeForSlowFrameCountIndex(temp); } EXPECT_EQ(expectedCount, loadedProto.histogram().Get(i).frame_count()); EXPECT_EQ(expectedBucket, loadedProto.histogram().Get(i).render_millis()); @@ -107,26 +107,26 @@ TEST(GraphicsStats, saveLoad) { TEST(GraphicsStats, merge) { std::string path = findRootPath() + "/test_merge"; std::string packageName = "com.test.merge"; - ProfileData mockData; - mockData.jankFrameCount = 20; - mockData.totalFrameCount = 100; - mockData.statStartTime = 10000; + MockProfileData mockData; + mockData.editJankFrameCount() = 20; + mockData.editTotalFrameCount() = 100; + mockData.editStatStartTime() = 10000; // Fill with patterned data we can recognize but which won't map to a // memset or basic for iteration count - for (size_t i = 0; i < mockData.frameCounts.size(); i++) { - mockData.frameCounts[i] = ((i % 10) + 1) * 2; + for (size_t i = 0; i < mockData.editFrameCounts().size(); i++) { + mockData.editFrameCounts()[i] = ((i % 10) + 1) * 2; } - for (size_t i = 0; i < mockData.slowFrameCounts.size(); i++) { - mockData.slowFrameCounts[i] = (i % 5) + 1; + for (size_t i = 0; i < mockData.editSlowFrameCounts().size(); i++) { + mockData.editSlowFrameCounts()[i] = (i % 5) + 1; } GraphicsStatsService::saveBuffer(path, packageName, 5, 3000, 7000, &mockData); - mockData.jankFrameCount = 50; - mockData.totalFrameCount = 500; - for (size_t i = 0; i < mockData.frameCounts.size(); i++) { - mockData.frameCounts[i] = (i % 5) + 1; + mockData.editJankFrameCount() = 50; + mockData.editTotalFrameCount() = 500; + for (size_t i = 0; i < mockData.editFrameCounts().size(); i++) { + mockData.editFrameCounts()[i] = (i % 5) + 1; } - for (size_t i = 0; i < mockData.slowFrameCounts.size(); i++) { - mockData.slowFrameCounts[i] = ((i % 10) + 1) * 2; + for (size_t i = 0; i < mockData.editSlowFrameCounts().size(); i++) { + mockData.editSlowFrameCounts()[i] = ((i % 10) + 1) * 2; } GraphicsStatsService::saveBuffer(path, packageName, 5, 7050, 10000, &mockData); @@ -143,19 +143,19 @@ TEST(GraphicsStats, merge) { ASSERT_TRUE(loadedProto.has_summary()); EXPECT_EQ(20 + 50, loadedProto.summary().janky_frames()); EXPECT_EQ(100 + 500, loadedProto.summary().total_frames()); - EXPECT_EQ(mockData.frameCounts.size() + mockData.slowFrameCounts.size(), + EXPECT_EQ(mockData.editFrameCounts().size() + mockData.editSlowFrameCounts().size(), (size_t) loadedProto.histogram_size()); for (size_t i = 0; i < (size_t) loadedProto.histogram_size(); i++) { int expectedCount, expectedBucket; - if (i < mockData.frameCounts.size()) { + if (i < mockData.editFrameCounts().size()) { expectedCount = ((i % 10) + 1) * 2; expectedCount += (i % 5) + 1; - expectedBucket = JankTracker::frameTimeForFrameCountIndex(i); + expectedBucket = ProfileData::frameTimeForFrameCountIndex(i); } else { - int temp = i - mockData.frameCounts.size(); + int temp = i - mockData.editFrameCounts().size(); expectedCount = (temp % 5) + 1; expectedCount += ((temp % 10) + 1) * 2; - expectedBucket = JankTracker::frameTimeForSlowFrameCountIndex(temp); + expectedBucket = ProfileData::frameTimeForSlowFrameCountIndex(temp); } EXPECT_EQ(expectedCount, loadedProto.histogram().Get(i).frame_count()); EXPECT_EQ(expectedBucket, loadedProto.histogram().Get(i).render_millis()); diff --git a/libs/hwui/tests/unit/OffscreenBufferPoolTests.cpp b/libs/hwui/tests/unit/OffscreenBufferPoolTests.cpp index 919852f6b2d787ef0601c65257fdb0d963f078a1..308fef30374018f86a7e0f999c987cc91d42c7da 100644 --- a/libs/hwui/tests/unit/OffscreenBufferPoolTests.cpp +++ b/libs/hwui/tests/unit/OffscreenBufferPoolTests.cpp @@ -74,8 +74,8 @@ RENDERTHREAD_TEST(OffscreenBufferPool, construct) { OffscreenBufferPool pool; EXPECT_EQ(0u, pool.getCount()) << "pool must be created empty"; EXPECT_EQ(0u, pool.getSize()) << "pool must be created empty"; - EXPECT_EQ((uint32_t) Properties::layerPoolSize, pool.getMaxSize()) - << "pool must read size from Properties"; + // TODO: Does this really make sense as a test? + EXPECT_EQ(DeviceInfo::multiplyByResolution(4 * 4), pool.getMaxSize()); } RENDERTHREAD_OPENGL_PIPELINE_TEST(OffscreenBufferPool, getPutClear) { diff --git a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp index a3d5079c6ce9cb38bd4e1bbc0465ff65d1668cfb..85b12ba79a8ccb581a7f48b61f4917f4ff7534f2 100644 --- a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp +++ b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp @@ -51,8 +51,6 @@ TEST(SkiaBehavior, CreateBitmapShader1x1) { SkShader::TileMode xy[2]; ASSERT_TRUE(s->isABitmap(&bitmap, nullptr, xy)) << "1x1 bitmap shader must query as bitmap shader"; - EXPECT_EQ(SkShader::kClamp_TileMode, xy[0]); - EXPECT_EQ(SkShader::kRepeat_TileMode, xy[1]); EXPECT_EQ(origBitmap.pixelRef(), bitmap.pixelRef()); } diff --git a/libs/hwui/tests/unit/VectorDrawableAtlasTests.cpp b/libs/hwui/tests/unit/VectorDrawableAtlasTests.cpp new file mode 100644 index 0000000000000000000000000000000000000000..17f8176bcfdc1d66615c0be04bed0ef35b9bd2ad --- /dev/null +++ b/libs/hwui/tests/unit/VectorDrawableAtlasTests.cpp @@ -0,0 +1,164 @@ +/* + * 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. + */ + +#include + +#include "tests/common/TestUtils.h" +#include +#include "pipeline/skia/VectorDrawableAtlas.h" + +using namespace android; +using namespace android::uirenderer; +using namespace android::uirenderer::renderthread; +using namespace android::uirenderer::skiapipeline; + +RENDERTHREAD_SKIA_PIPELINE_TEST(VectorDrawableAtlas, addGetRemove) { + VectorDrawableAtlas atlas(100*100); + atlas.prepareForDraw(renderThread.getGrContext()); + //create 150 rects 10x10, which won't fit in the atlas (atlas can fit no more than 100 rects) + const int MAX_RECTS = 150; + AtlasEntry VDRects[MAX_RECTS]; + + sk_sp atlasSurface; + + //check we are able to allocate new rects + //check that rects in the atlas do not intersect + for (uint32_t i = 0; i < MAX_RECTS; i++) { + VDRects[i] = atlas.requestNewEntry(10, 10, renderThread.getGrContext()); + if (0 == i) { + atlasSurface = VDRects[0].surface; + } + ASSERT_TRUE(VDRects[i].key != INVALID_ATLAS_KEY); + ASSERT_TRUE(VDRects[i].surface.get() != nullptr); + ASSERT_TRUE(VDRects[i].rect.width() == 10 && VDRects[i].rect.height() == 10); + + //nothing in the atlas should intersect + if (atlasSurface.get() == VDRects[i].surface.get()) { + for (uint32_t j = 0; j < i; j++) { + if (atlasSurface.get() == VDRects[j].surface.get()) { + ASSERT_FALSE(VDRects[i].rect.intersect(VDRects[j].rect)); + } + } + } + } + + //first 1/3 rects should all be in the same surface + for (uint32_t i = 1; i < MAX_RECTS/3; i++) { + ASSERT_NE(VDRects[i].key, VDRects[0].key); + ASSERT_EQ(VDRects[i].surface.get(), atlasSurface.get()); + } + + //first rect is using atlas and last is a standalone surface + ASSERT_NE(VDRects[0].surface.get(), VDRects[MAX_RECTS-1].surface.get()); + + //check getEntry returns the same surfaces that we had created + for (uint32_t i = 0; i < MAX_RECTS; i++) { + auto VDRect = atlas.getEntry(VDRects[i].key); + ASSERT_TRUE(VDRect.key != INVALID_ATLAS_KEY); + ASSERT_EQ(VDRects[i].key, VDRect.key); + ASSERT_EQ(VDRects[i].surface.get(), VDRect.surface.get()); + ASSERT_EQ(VDRects[i].rect, VDRect.rect); + atlas.releaseEntry(VDRect.key); + } + + //check that any new rects will be allocated in the atlas, even that rectanizer is full. + //rects in the atlas should not intersect. + for (uint32_t i = 0; i < MAX_RECTS/3; i++) { + VDRects[i] = atlas.requestNewEntry(10, 10, renderThread.getGrContext()); + ASSERT_TRUE(VDRects[i].key != INVALID_ATLAS_KEY); + ASSERT_EQ(VDRects[i].surface.get(), atlasSurface.get()); + ASSERT_TRUE(VDRects[i].rect.width() == 10 && VDRects[i].rect.height() == 10); + for (uint32_t j = 0; j < i; j++) { + ASSERT_FALSE(VDRects[i].rect.intersect(VDRects[j].rect)); + } + } +} + + +RENDERTHREAD_SKIA_PIPELINE_TEST(VectorDrawableAtlas, disallowSharedSurface) { + VectorDrawableAtlas atlas(100*100); + //don't allow to use a shared surface + atlas.setStorageMode(VectorDrawableAtlas::StorageMode::disallowSharedSurface); + atlas.prepareForDraw(renderThread.getGrContext()); + //create 150 rects 10x10, which won't fit in the atlas (atlas can fit no more than 100 rects) + const int MAX_RECTS = 150; + AtlasEntry VDRects[MAX_RECTS]; + + //check we are able to allocate new rects + //check that rects in the atlas use unique surfaces + for (uint32_t i = 0; i < MAX_RECTS; i++) { + VDRects[i] = atlas.requestNewEntry(10, 10, renderThread.getGrContext()); + ASSERT_TRUE(VDRects[i].key != INVALID_ATLAS_KEY); + ASSERT_TRUE(VDRects[i].surface.get() != nullptr); + ASSERT_TRUE(VDRects[i].rect.width() == 10 && VDRects[i].rect.height() == 10); + + //nothing in the atlas should use the same surface + for (uint32_t j = 0; j < i; j++) { + ASSERT_NE(VDRects[i].surface.get(), VDRects[j].surface.get()); + } + } +} + +RENDERTHREAD_SKIA_PIPELINE_TEST(VectorDrawableAtlas, repack) { + VectorDrawableAtlas atlas(100*100); + ASSERT_FALSE(atlas.isFragmented()); + atlas.prepareForDraw(renderThread.getGrContext()); + ASSERT_FALSE(atlas.isFragmented()); + //create 150 rects 10x10, which won't fit in the atlas (atlas can fit no more than 100 rects) + const int MAX_RECTS = 150; + AtlasEntry VDRects[MAX_RECTS]; + + sk_sp atlasSurface; + + //fill the atlas with check we are able to allocate new rects + for (uint32_t i = 0; i < MAX_RECTS; i++) { + VDRects[i] = atlas.requestNewEntry(10, 10, renderThread.getGrContext()); + if (0 == i) { + atlasSurface = VDRects[0].surface; + } + ASSERT_TRUE(VDRects[i].key != INVALID_ATLAS_KEY); + } + + ASSERT_FALSE(atlas.isFragmented()); + + //first 1/3 rects should all be in the same surface + for (uint32_t i = 1; i < MAX_RECTS/3; i++) { + ASSERT_NE(VDRects[i].key, VDRects[0].key); + ASSERT_EQ(VDRects[i].surface.get(), atlasSurface.get()); + } + + //release all entries + for (uint32_t i = 0; i < MAX_RECTS; i++) { + auto VDRect = atlas.getEntry(VDRects[i].key); + ASSERT_TRUE(VDRect.key != INVALID_ATLAS_KEY); + atlas.releaseEntry(VDRect.key); + } + + ASSERT_FALSE(atlas.isFragmented()); + + //allocate 4x4 rects, which will fragment the atlas badly, because each entry occupies a 10x10 + //area + for (uint32_t i = 0; i < 4*MAX_RECTS; i++) { + AtlasEntry entry = atlas.requestNewEntry(4, 4, renderThread.getGrContext()); + ASSERT_TRUE(entry.key != INVALID_ATLAS_KEY); + } + + ASSERT_TRUE(atlas.isFragmented()); + + atlas.repackIfNeeded(renderThread.getGrContext()); + + ASSERT_FALSE(atlas.isFragmented()); +} \ No newline at end of file diff --git a/lowpan/java/android/net/lowpan/ILowpanEnergyScanCallback.aidl b/lowpan/java/android/net/lowpan/ILowpanEnergyScanCallback.aidl new file mode 100644 index 0000000000000000000000000000000000000000..f09dbe3d077e7067084d6085155b2154d1d60960 --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanEnergyScanCallback.aidl @@ -0,0 +1,23 @@ +/* + * 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.lowpan; + +/** {@hide} */ +interface ILowpanEnergyScanCallback { + oneway void onEnergyScanResult(int channel, int rssi); + oneway void onEnergyScanFinished(); +} diff --git a/lowpan/java/android/net/lowpan/ILowpanInterface.aidl b/lowpan/java/android/net/lowpan/ILowpanInterface.aidl new file mode 100644 index 0000000000000000000000000000000000000000..603dc3cfe6412e7d7e24b2d83846e9d6d7679ff2 --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanInterface.aidl @@ -0,0 +1,155 @@ +/* + * 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.lowpan; + +import android.net.IpPrefix; +import android.net.lowpan.ILowpanEnergyScanCallback; +import android.net.lowpan.ILowpanInterfaceListener; +import android.net.lowpan.ILowpanNetScanCallback; +import android.net.lowpan.LowpanBeaconInfo; +import android.net.lowpan.LowpanChannelInfo; +import android.net.lowpan.LowpanCredential; +import android.net.lowpan.LowpanIdentity; +import android.net.lowpan.LowpanProvision; + +/** {@hide} */ +interface ILowpanInterface { + + // These are here for the sake of C++ interface implementations. + + const String PERM_ACCESS_LOWPAN_STATE = "android.permission.ACCESS_LOWPAN_STATE"; + const String PERM_CHANGE_LOWPAN_STATE = "android.permission.CHANGE_LOWPAN_STATE"; + const String PERM_READ_LOWPAN_CREDENTIAL = "android.permission.READ_LOWPAN_CREDENTIAL"; + + /** + * Channel mask key. + * Used for setting a channel mask when starting a scan. + * Type: int[] + * */ + const String KEY_CHANNEL_MASK = "android.net.lowpan.property.CHANNEL_MASK"; + + /** + * Max Transmit Power Key. + * Used for setting the maximum transmit power when starting a network scan. + * Type: Integer + * */ + const String KEY_MAX_TX_POWER = "android.net.lowpan.property.MAX_TX_POWER"; + + // Interface States + + const String STATE_OFFLINE = "offline"; + const String STATE_COMMISSIONING = "commissioning"; + const String STATE_ATTACHING = "attaching"; + const String STATE_ATTACHED = "attached"; + const String STATE_FAULT = "fault"; + + // Device Roles + + const String ROLE_END_DEVICE = "end-device"; + const String ROLE_ROUTER = "router"; + const String ROLE_SLEEPY_END_DEVICE = "sleepy-end-device"; + const String ROLE_SLEEPY_ROUTER = "sleepy-router"; + const String ROLE_LEADER = "leader"; + const String ROLE_COORDINATOR = "coordinator"; + const String ROLE_DETACHED = "detached"; + + const String NETWORK_TYPE_UNKNOWN = "unknown"; + + /** + * Network type for Thread 1.x networks. + * + * @see android.net.lowpan.LowpanIdentity#getType + * @see #getLowpanIdentity + */ + const String NETWORK_TYPE_THREAD_V1 = "org.threadgroup.thread.v1"; + + // Service-Specific Error Code Constants + + const int ERROR_UNSPECIFIED = 1; + const int ERROR_INVALID_ARGUMENT = 2; + const int ERROR_DISABLED = 3; + const int ERROR_WRONG_STATE = 4; + const int ERROR_TIMEOUT = 5; + const int ERROR_IO_FAILURE = 6; + const int ERROR_NCP_PROBLEM = 7; + const int ERROR_BUSY = 8; + const int ERROR_ALREADY = 9; + const int ERROR_CANCELED = 10; + const int ERROR_FEATURE_NOT_SUPPORTED = 11; + const int ERROR_JOIN_FAILED_UNKNOWN = 12; + const int ERROR_JOIN_FAILED_AT_SCAN = 13; + const int ERROR_JOIN_FAILED_AT_AUTH = 14; + const int ERROR_FORM_FAILED_AT_SCAN = 15; + + // Methods + + @utf8InCpp String getName(); + + @utf8InCpp String getNcpVersion(); + @utf8InCpp String getDriverVersion(); + LowpanChannelInfo[] getSupportedChannels(); + @utf8InCpp String[] getSupportedNetworkTypes(); + byte[] getMacAddress(); + + boolean isEnabled(); + void setEnabled(boolean enabled); + + boolean isUp(); + boolean isCommissioned(); + boolean isConnected(); + @utf8InCpp String getState(); + + @utf8InCpp String getRole(); + @utf8InCpp String getPartitionId(); + byte[] getExtendedAddress(); + + LowpanIdentity getLowpanIdentity(); + LowpanCredential getLowpanCredential(); + + @utf8InCpp String[] getLinkAddresses(); + IpPrefix[] getLinkNetworks(); + + void join(in LowpanProvision provision); + void form(in LowpanProvision provision); + void attach(in LowpanProvision provision); + void leave(); + void reset(); + + void startCommissioningSession(in LowpanBeaconInfo beaconInfo); + void closeCommissioningSession(); + oneway void sendToCommissioner(in byte[] packet); + + void beginLowPower(); + oneway void pollForData(); + + oneway void onHostWake(); + + void addListener(ILowpanInterfaceListener listener); + oneway void removeListener(ILowpanInterfaceListener listener); + + void startNetScan(in Map properties, ILowpanNetScanCallback listener); + oneway void stopNetScan(); + + void startEnergyScan(in Map properties, ILowpanEnergyScanCallback listener); + oneway void stopEnergyScan(); + + void addOnMeshPrefix(in IpPrefix prefix, int flags); + oneway void removeOnMeshPrefix(in IpPrefix prefix); + + void addExternalRoute(in IpPrefix prefix, int flags); + oneway void removeExternalRoute(in IpPrefix prefix); +} diff --git a/lowpan/java/android/net/lowpan/ILowpanInterfaceListener.aidl b/lowpan/java/android/net/lowpan/ILowpanInterfaceListener.aidl new file mode 100644 index 0000000000000000000000000000000000000000..5e4049a0fab83c4ee353d51ad22c68c8f295f581 --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanInterfaceListener.aidl @@ -0,0 +1,45 @@ +/* + * 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.lowpan; + +import android.net.IpPrefix; +import android.net.lowpan.LowpanIdentity; + +/** {@hide} */ +interface ILowpanInterfaceListener { + oneway void onEnabledChanged(boolean value); + + oneway void onConnectedChanged(boolean value); + + oneway void onUpChanged(boolean value); + + oneway void onRoleChanged(@utf8InCpp String value); + + oneway void onStateChanged(@utf8InCpp String value); + + oneway void onLowpanIdentityChanged(in LowpanIdentity value); + + oneway void onLinkNetworkAdded(in IpPrefix value); + + oneway void onLinkNetworkRemoved(in IpPrefix value); + + oneway void onLinkAddressAdded(@utf8InCpp String value); + + oneway void onLinkAddressRemoved(@utf8InCpp String value); + + oneway void onReceiveFromCommissioner(in byte[] packet); +} diff --git a/lowpan/java/android/net/lowpan/ILowpanManager.aidl b/lowpan/java/android/net/lowpan/ILowpanManager.aidl new file mode 100644 index 0000000000000000000000000000000000000000..326aa65e0fef6f8868e6e7ba383f129fd4cd674b --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanManager.aidl @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.net.lowpan; +import android.net.lowpan.ILowpanInterface; +import android.net.lowpan.ILowpanManagerListener; + +/** {@hide} */ +interface ILowpanManager { + + /* Keep this in sync with Context.LOWPAN_SERVICE */ + const String LOWPAN_SERVICE_NAME = "lowpan"; + + ILowpanInterface getInterface(@utf8InCpp String name); + + @utf8InCpp String[] getInterfaceList(); + + void addListener(ILowpanManagerListener listener); + void removeListener(ILowpanManagerListener listener); + + void addInterface(ILowpanInterface lowpan_interface); + void removeInterface(ILowpanInterface lowpan_interface); +} diff --git a/lowpan/java/android/net/lowpan/ILowpanManagerListener.aidl b/lowpan/java/android/net/lowpan/ILowpanManagerListener.aidl new file mode 100644 index 0000000000000000000000000000000000000000..d4846f6740b9a2f78cec4b55d31c3957b8008239 --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanManagerListener.aidl @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.net.lowpan; + +import android.net.lowpan.ILowpanInterface; + +/** {@hide} */ +interface ILowpanManagerListener { + oneway void onInterfaceAdded(ILowpanInterface lowpanInterface); + oneway void onInterfaceRemoved(ILowpanInterface lowpanInterface); +} diff --git a/lowpan/java/android/net/lowpan/ILowpanNetScanCallback.aidl b/lowpan/java/android/net/lowpan/ILowpanNetScanCallback.aidl new file mode 100644 index 0000000000000000000000000000000000000000..9743fce0b128e6ab65c6b646ec0309ef59a2b8da --- /dev/null +++ b/lowpan/java/android/net/lowpan/ILowpanNetScanCallback.aidl @@ -0,0 +1,25 @@ +/* + * 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.lowpan; + +import android.net.lowpan.LowpanBeaconInfo; + +/** {@hide} */ +interface ILowpanNetScanCallback { + oneway void onNetScanBeacon(in LowpanBeaconInfo beacon); + oneway void onNetScanFinished(); +} diff --git a/lowpan/java/android/net/lowpan/InterfaceDisabledException.java b/lowpan/java/android/net/lowpan/InterfaceDisabledException.java new file mode 100644 index 0000000000000000000000000000000000000000..e917d4521baeff31c6bdd1b3e0897d177fef8c59 --- /dev/null +++ b/lowpan/java/android/net/lowpan/InterfaceDisabledException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating this operation requires the interface to be enabled. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class InterfaceDisabledException extends LowpanException { + + public InterfaceDisabledException() {} + + public InterfaceDisabledException(String message) { + super(message); + } + + public InterfaceDisabledException(String message, Throwable cause) { + super(message, cause); + } + + protected InterfaceDisabledException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/JoinFailedAtAuthException.java b/lowpan/java/android/net/lowpan/JoinFailedAtAuthException.java new file mode 100644 index 0000000000000000000000000000000000000000..7aceb71e2a850b4a8c12ad8b737485d814afed1f --- /dev/null +++ b/lowpan/java/android/net/lowpan/JoinFailedAtAuthException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating the join operation was unable to find the given network. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class JoinFailedAtAuthException extends JoinFailedException { + + public JoinFailedAtAuthException() {} + + public JoinFailedAtAuthException(String message) { + super(message); + } + + public JoinFailedAtAuthException(String message, Throwable cause) { + super(message, cause); + } + + public JoinFailedAtAuthException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/JoinFailedAtScanException.java b/lowpan/java/android/net/lowpan/JoinFailedAtScanException.java new file mode 100644 index 0000000000000000000000000000000000000000..a4346f98d719d51c6032d173b1488cf837e35305 --- /dev/null +++ b/lowpan/java/android/net/lowpan/JoinFailedAtScanException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating the join operation was unable to find the given network. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class JoinFailedAtScanException extends JoinFailedException { + + public JoinFailedAtScanException() {} + + public JoinFailedAtScanException(String message) { + super(message); + } + + public JoinFailedAtScanException(String message, Throwable cause) { + super(message, cause); + } + + public JoinFailedAtScanException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/JoinFailedException.java b/lowpan/java/android/net/lowpan/JoinFailedException.java new file mode 100644 index 0000000000000000000000000000000000000000..e51d3829f9f1d9a0f6f1e9fe2293406c625b9ec0 --- /dev/null +++ b/lowpan/java/android/net/lowpan/JoinFailedException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating the join operation has failed. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class JoinFailedException extends LowpanException { + + public JoinFailedException() {} + + public JoinFailedException(String message) { + super(message); + } + + public JoinFailedException(String message, Throwable cause) { + super(message, cause); + } + + protected JoinFailedException(Exception cause) { + super(cause); + } +} diff --git a/core/java/android/app/IActivityContainerCallback.aidl b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.aidl similarity index 66% rename from core/java/android/app/IActivityContainerCallback.aidl rename to lowpan/java/android/net/lowpan/LowpanBeaconInfo.aidl index 99d0a6f8189e5b68e783f66bbb97b7f06a7499d0..9464fea02d18edc13576176fa941736cf2003e8e 100644 --- a/core/java/android/app/IActivityContainerCallback.aidl +++ b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.aidl @@ -1,5 +1,5 @@ /** - * Copyright (c) 2013, The Android Open Source Project + * 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. @@ -14,12 +14,6 @@ * limitations under the License. */ -package android.app; +package android.net.lowpan; -import android.os.IBinder; - -/** @hide */ -interface IActivityContainerCallback { - oneway void setVisible(IBinder container, boolean visible); - oneway void onAllActivitiesComplete(IBinder container); -} +parcelable LowpanBeaconInfo cpp_header "android/net/lowpan/LowpanBeaconInfo.h"; diff --git a/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..345a4c504b5b072f6084c9f4f8d48399f669b8f4 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanBeaconInfo.java @@ -0,0 +1,234 @@ +/* + * 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.lowpan; + +import android.os.Parcel; +import android.os.Parcelable; +import com.android.internal.util.HexDump; +import java.util.Arrays; +import java.util.Collection; +import java.util.Objects; +import java.util.TreeSet; + +/** + * Describes a LoWPAN Beacon + * + * @hide + */ +// @SystemApi +public class LowpanBeaconInfo implements Parcelable { + public static final int UNKNOWN_RSSI = Integer.MAX_VALUE; + public static final int UNKNOWN_LQI = 0; + + private LowpanIdentity mIdentity; + private int mRssi = UNKNOWN_RSSI; + private int mLqi = UNKNOWN_LQI; + private byte[] mBeaconAddress = null; + private final TreeSet mFlags = new TreeSet<>(); + + public static final int FLAG_CAN_ASSIST = 1; + + /** @hide */ + public static class Builder { + final LowpanIdentity.Builder mIdentityBuilder = new LowpanIdentity.Builder(); + final LowpanBeaconInfo mBeaconInfo = new LowpanBeaconInfo(); + + public Builder setLowpanIdentity(LowpanIdentity x) { + mIdentityBuilder.setLowpanIdentity(x); + return this; + } + + public Builder setName(String x) { + mIdentityBuilder.setName(x); + return this; + } + + public Builder setXpanid(byte x[]) { + mIdentityBuilder.setXpanid(x); + return this; + } + + public Builder setPanid(int x) { + mIdentityBuilder.setPanid(x); + return this; + } + + public Builder setChannel(int x) { + mIdentityBuilder.setChannel(x); + return this; + } + + public Builder setType(String x) { + mIdentityBuilder.setType(x); + return this; + } + + public Builder setRssi(int x) { + mBeaconInfo.mRssi = x; + return this; + } + + public Builder setLqi(int x) { + mBeaconInfo.mLqi = x; + return this; + } + + public Builder setBeaconAddress(byte x[]) { + mBeaconInfo.mBeaconAddress = (x != null ? x.clone() : null); + return this; + } + + public Builder setFlag(int x) { + mBeaconInfo.mFlags.add(x); + return this; + } + + public Builder setFlags(Collection x) { + mBeaconInfo.mFlags.addAll(x); + return this; + } + + public LowpanBeaconInfo build() { + mBeaconInfo.mIdentity = mIdentityBuilder.build(); + if (mBeaconInfo.mBeaconAddress == null) { + mBeaconInfo.mBeaconAddress = new byte[0]; + } + return mBeaconInfo; + } + } + + private LowpanBeaconInfo() {} + + public LowpanIdentity getLowpanIdentity() { + return mIdentity; + } + + public int getRssi() { + return mRssi; + } + + public int getLqi() { + return mLqi; + } + + public byte[] getBeaconAddress() { + return mBeaconAddress.clone(); + } + + public Collection getFlags() { + return (Collection) mFlags.clone(); + } + + public boolean isFlagSet(int flag) { + return mFlags.contains(flag); + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append(mIdentity.toString()); + + if (mRssi != UNKNOWN_RSSI) { + sb.append(", RSSI:").append(mRssi).append("dBm"); + } + + if (mLqi != UNKNOWN_LQI) { + sb.append(", LQI:").append(mLqi); + } + + if (mBeaconAddress.length > 0) { + sb.append(", BeaconAddress:").append(HexDump.toHexString(mBeaconAddress)); + } + + for (Integer flag : mFlags) { + switch (flag.intValue()) { + case FLAG_CAN_ASSIST: + sb.append(", CAN_ASSIST"); + break; + default: + sb.append(", FLAG_").append(Integer.toHexString(flag)); + break; + } + } + + return sb.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(mIdentity, mRssi, mLqi, Arrays.hashCode(mBeaconAddress), mFlags); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof LowpanBeaconInfo)) { + return false; + } + LowpanBeaconInfo rhs = (LowpanBeaconInfo) obj; + return mIdentity.equals(rhs.mIdentity) + && Arrays.equals(mBeaconAddress, rhs.mBeaconAddress) + && mRssi == rhs.mRssi + && mLqi == rhs.mLqi + && mFlags.equals(rhs.mFlags); + } + + /** Implement the Parcelable interface. */ + @Override + public int describeContents() { + return 0; + } + + /** Implement the Parcelable interface. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + mIdentity.writeToParcel(dest, flags); + dest.writeInt(mRssi); + dest.writeInt(mLqi); + dest.writeByteArray(mBeaconAddress); + + dest.writeInt(mFlags.size()); + for (Integer val : mFlags) { + dest.writeInt(val); + } + } + + /** Implement the Parcelable interface. */ + public static final Creator CREATOR = + new Creator() { + public LowpanBeaconInfo createFromParcel(Parcel in) { + Builder builder = new Builder(); + + builder.setLowpanIdentity(LowpanIdentity.CREATOR.createFromParcel(in)); + + builder.setRssi(in.readInt()); + builder.setLqi(in.readInt()); + + builder.setBeaconAddress(in.createByteArray()); + + for (int i = in.readInt(); i > 0; i--) { + builder.setFlag(in.readInt()); + } + + return builder.build(); + } + + public LowpanBeaconInfo[] newArray(int size) { + return new LowpanBeaconInfo[size]; + } + }; +} diff --git a/lowpan/java/android/net/lowpan/LowpanChannelInfo.aidl b/lowpan/java/android/net/lowpan/LowpanChannelInfo.aidl new file mode 100644 index 0000000000000000000000000000000000000000..0676deb6c6dfec90f3efc7a1dfaad2e4e30e7c87 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanChannelInfo.aidl @@ -0,0 +1,19 @@ +/** + * 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.lowpan; + +parcelable LowpanChannelInfo cpp_header "android/net/lowpan/LowpanChannelInfo.h"; diff --git a/lowpan/java/android/net/lowpan/LowpanChannelInfo.java b/lowpan/java/android/net/lowpan/LowpanChannelInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..52b1c6d6a3e3bf01ccaf775957fda09063c96502 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanChannelInfo.java @@ -0,0 +1,216 @@ +/* + * 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.lowpan; + +import android.os.Parcel; +import android.os.Parcelable; +import java.util.Objects; + +/** + * Provides detailed information about a given channel. + * + * @hide + */ +// @SystemApi +public class LowpanChannelInfo implements Parcelable { + + public static final int UNKNOWN_POWER = Integer.MAX_VALUE; + public static final float UNKNOWN_FREQUENCY = 0.0f; + public static final float UNKNOWN_BANDWIDTH = 0.0f; + + private int mIndex = 0; + private String mName = null; + private float mSpectrumCenterFrequency = UNKNOWN_FREQUENCY; + private float mSpectrumBandwidth = UNKNOWN_BANDWIDTH; + private int mMaxTransmitPower = UNKNOWN_POWER; + private boolean mIsMaskedByRegulatoryDomain = false; + + /** @hide */ + public static LowpanChannelInfo getChannelInfoForIeee802154Page0(int index) { + LowpanChannelInfo info = new LowpanChannelInfo(); + + if (index < 0) { + info = null; + + } else if (index == 0) { + info.mSpectrumCenterFrequency = 868300000.0f; + info.mSpectrumBandwidth = 600000.0f; + + } else if (index < 11) { + info.mSpectrumCenterFrequency = 906000000.0f - (2000000.0f * 1) + 2000000.0f * (index); + info.mSpectrumBandwidth = 0; // Unknown + + } else if (index < 26) { + info.mSpectrumCenterFrequency = + 2405000000.0f - (5000000.0f * 11) + 5000000.0f * (index); + info.mSpectrumBandwidth = 2000000.0f; + + } else { + info = null; + } + + info.mName = Integer.toString(index); + + return info; + } + + private LowpanChannelInfo() {} + + private LowpanChannelInfo(int index, String name, float cf, float bw) { + mIndex = index; + mName = name; + mSpectrumCenterFrequency = cf; + mSpectrumBandwidth = bw; + } + + public String getName() { + return mName; + } + + public int getIndex() { + return mIndex; + } + + public int getMaxTransmitPower() { + return mMaxTransmitPower; + } + + public boolean isMaskedByRegulatoryDomain() { + return mIsMaskedByRegulatoryDomain; + } + + public float getSpectrumCenterFrequency() { + return mSpectrumCenterFrequency; + } + + public float getSpectrumBandwidth() { + return mSpectrumBandwidth; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append("Channel ").append(mIndex); + + if (mName != null && !mName.equals(Integer.toString(mIndex))) { + sb.append(" (").append(mName).append(")"); + } + + if (mSpectrumCenterFrequency > 0.0f) { + if (mSpectrumCenterFrequency > 1000000000.0f) { + sb.append(", SpectrumCenterFrequency: ") + .append(mSpectrumCenterFrequency / 1000000000.0f) + .append("GHz"); + } else if (mSpectrumCenterFrequency > 1000000.0f) { + sb.append(", SpectrumCenterFrequency: ") + .append(mSpectrumCenterFrequency / 1000000.0f) + .append("MHz"); + } else { + sb.append(", SpectrumCenterFrequency: ") + .append(mSpectrumCenterFrequency / 1000.0f) + .append("kHz"); + } + } + + if (mSpectrumBandwidth > 0.0f) { + if (mSpectrumBandwidth > 1000000000.0f) { + sb.append(", SpectrumBandwidth: ") + .append(mSpectrumBandwidth / 1000000000.0f) + .append("GHz"); + } else if (mSpectrumBandwidth > 1000000.0f) { + sb.append(", SpectrumBandwidth: ") + .append(mSpectrumBandwidth / 1000000.0f) + .append("MHz"); + } else { + sb.append(", SpectrumBandwidth: ") + .append(mSpectrumBandwidth / 1000.0f) + .append("kHz"); + } + } + + if (mMaxTransmitPower != UNKNOWN_POWER) { + sb.append(", MaxTransmitPower: ").append(mMaxTransmitPower).append("dBm"); + } + + return sb.toString(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof LowpanChannelInfo)) { + return false; + } + LowpanChannelInfo rhs = (LowpanChannelInfo) obj; + return Objects.equals(mName, rhs.mName) + && mIndex == rhs.mIndex + && mIsMaskedByRegulatoryDomain == rhs.mIsMaskedByRegulatoryDomain + && mSpectrumCenterFrequency == rhs.mSpectrumCenterFrequency + && mSpectrumBandwidth == rhs.mSpectrumBandwidth + && mMaxTransmitPower == rhs.mMaxTransmitPower; + } + + @Override + public int hashCode() { + return Objects.hash( + mName, + mIndex, + mIsMaskedByRegulatoryDomain, + mSpectrumCenterFrequency, + mSpectrumBandwidth, + mMaxTransmitPower); + } + + /** Implement the Parcelable interface. */ + @Override + public int describeContents() { + return 0; + } + + /** Implement the Parcelable interface. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(mIndex); + dest.writeString(mName); + dest.writeFloat(mSpectrumCenterFrequency); + dest.writeFloat(mSpectrumBandwidth); + dest.writeInt(mMaxTransmitPower); + dest.writeBoolean(mIsMaskedByRegulatoryDomain); + } + + /** Implement the Parcelable interface. */ + public static final Creator CREATOR = + new Creator() { + + public LowpanChannelInfo createFromParcel(Parcel in) { + LowpanChannelInfo info = new LowpanChannelInfo(); + + info.mIndex = in.readInt(); + info.mName = in.readString(); + info.mSpectrumCenterFrequency = in.readFloat(); + info.mSpectrumBandwidth = in.readFloat(); + info.mMaxTransmitPower = in.readInt(); + info.mIsMaskedByRegulatoryDomain = in.readBoolean(); + + return info; + } + + public LowpanChannelInfo[] newArray(int size) { + return new LowpanChannelInfo[size]; + } + }; +} diff --git a/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java b/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java new file mode 100644 index 0000000000000000000000000000000000000000..8f75e8db6243c8051c85377d0cfdf058201ebc1e --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanCommissioningSession.java @@ -0,0 +1,223 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.net.IpPrefix; +import android.os.DeadObjectException; +import android.os.Handler; +import android.os.Looper; +import android.os.RemoteException; + +/** + * Commissioning Session. + * + *

        This class enables a device to learn the credential needed to join a network using a technique + * called "in-band commissioning". + * + * @hide + */ +// @SystemApi +public class LowpanCommissioningSession { + + private final ILowpanInterface mBinder; + private final LowpanBeaconInfo mBeaconInfo; + private final ILowpanInterfaceListener mInternalCallback = new InternalCallback(); + private final Looper mLooper; + private Handler mHandler; + private Callback mCallback = null; + private volatile boolean mIsClosed = false; + + /** + * Callback base class for {@link LowpanCommissioningSession} + * + * @hide + */ + // @SystemApi + public abstract static class Callback { + public void onReceiveFromCommissioner(@NonNull byte[] packet) {}; + + public void onClosed() {}; + } + + private class InternalCallback extends ILowpanInterfaceListener.Stub { + @Override + public void onStateChanged(String value) { + if (!mIsClosed) { + switch (value) { + case ILowpanInterface.STATE_OFFLINE: + case ILowpanInterface.STATE_FAULT: + synchronized (LowpanCommissioningSession.this) { + lockedCleanup(); + } + } + } + } + + @Override + public void onReceiveFromCommissioner(byte[] packet) { + mHandler.post( + () -> { + synchronized (LowpanCommissioningSession.this) { + if (!mIsClosed && (mCallback != null)) { + mCallback.onReceiveFromCommissioner(packet); + } + } + }); + } + + // We ignore all other callbacks. + @Override + public void onEnabledChanged(boolean value) {} + + @Override + public void onConnectedChanged(boolean value) {} + + @Override + public void onUpChanged(boolean value) {} + + @Override + public void onRoleChanged(String value) {} + + @Override + public void onLowpanIdentityChanged(LowpanIdentity value) {} + + @Override + public void onLinkNetworkAdded(IpPrefix value) {} + + @Override + public void onLinkNetworkRemoved(IpPrefix value) {} + + @Override + public void onLinkAddressAdded(String value) {} + + @Override + public void onLinkAddressRemoved(String value) {} + } + + LowpanCommissioningSession( + ILowpanInterface binder, LowpanBeaconInfo beaconInfo, Looper looper) { + mBinder = binder; + mBeaconInfo = beaconInfo; + mLooper = looper; + + if (mLooper != null) { + mHandler = new Handler(mLooper); + } else { + mHandler = new Handler(); + } + + try { + mBinder.addListener(mInternalCallback); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + private void lockedCleanup() { + // Note: this method is only called from synchronized contexts. + + if (!mIsClosed) { + try { + mBinder.removeListener(mInternalCallback); + + } catch (DeadObjectException x) { + /* We don't care if we receive a DOE at this point. + * DOE is as good as success as far as we are concerned. + */ + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + + if (mCallback != null) { + mHandler.post(() -> mCallback.onClosed()); + } + } + + mCallback = null; + mIsClosed = true; + } + + /** TODO: doc */ + @NonNull + public LowpanBeaconInfo getBeaconInfo() { + return mBeaconInfo; + } + + /** TODO: doc */ + public void sendToCommissioner(@NonNull byte[] packet) { + if (!mIsClosed) { + try { + mBinder.sendToCommissioner(packet); + + } catch (DeadObjectException x) { + /* This method is a best-effort delivery. + * We don't care if we receive a DOE at this point. + */ + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + } + + /** TODO: doc */ + public synchronized void setCallback(@Nullable Callback cb, @Nullable Handler handler) { + if (!mIsClosed) { + /* This class can be created with or without a default looper. + * Also, this method can be called with or without a specific + * handler. If a handler is specified, it is to always be used. + * Otherwise, if there was a Looper specified when this object + * was created, we create a new handle based on that looper. + * Otherwise we just create a default handler object. Since we + * don't really know how the previous handler was created, we + * end up always replacing it here. This isn't a huge problem + * because this method should be called infrequently. + */ + if (handler != null) { + mHandler = handler; + } else if (mLooper != null) { + mHandler = new Handler(mLooper); + } else { + mHandler = new Handler(); + } + mCallback = cb; + } + } + + /** TODO: doc */ + public synchronized void close() { + if (!mIsClosed) { + try { + mBinder.closeCommissioningSession(); + + lockedCleanup(); + + } catch (DeadObjectException x) { + /* We don't care if we receive a DOE at this point. + * DOE is as good as success as far as we are concerned. + */ + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanCredential.aidl b/lowpan/java/android/net/lowpan/LowpanCredential.aidl new file mode 100644 index 0000000000000000000000000000000000000000..af0c2d63474a0f930e5fd0015ff72554a91ce602 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanCredential.aidl @@ -0,0 +1,19 @@ +/** + * 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.lowpan; + +parcelable LowpanCredential cpp_header "android/net/lowpan/LowpanCredential.h"; diff --git a/lowpan/java/android/net/lowpan/LowpanCredential.java b/lowpan/java/android/net/lowpan/LowpanCredential.java new file mode 100644 index 0000000000000000000000000000000000000000..e9126f9f2f7b5f6ca5661244c73c1cc988d7cc9c --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanCredential.java @@ -0,0 +1,172 @@ +/* + * 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.lowpan; + +import android.os.Parcel; +import android.os.Parcelable; +import com.android.internal.util.HexDump; +import java.util.Arrays; +import java.util.Objects; + +/** + * Describes a credential for a LoWPAN network. + * + * @hide + */ +// @SystemApi +public class LowpanCredential implements Parcelable { + + public static final int UNSPECIFIED_KEY_INDEX = 0; + + private byte[] mMasterKey = null; + private int mMasterKeyIndex = UNSPECIFIED_KEY_INDEX; + + LowpanCredential() {} + + private LowpanCredential(byte[] masterKey, int keyIndex) { + setMasterKey(masterKey, keyIndex); + } + + private LowpanCredential(byte[] masterKey) { + setMasterKey(masterKey); + } + + public static LowpanCredential createMasterKey(byte[] masterKey) { + return new LowpanCredential(masterKey); + } + + public static LowpanCredential createMasterKey(byte[] masterKey, int keyIndex) { + return new LowpanCredential(masterKey, keyIndex); + } + + void setMasterKey(byte[] masterKey) { + if (masterKey != null) { + masterKey = masterKey.clone(); + } + mMasterKey = masterKey; + } + + void setMasterKeyIndex(int keyIndex) { + mMasterKeyIndex = keyIndex; + } + + void setMasterKey(byte[] masterKey, int keyIndex) { + setMasterKey(masterKey); + setMasterKeyIndex(keyIndex); + } + + public byte[] getMasterKey() { + if (mMasterKey != null) { + return mMasterKey.clone(); + } + return null; + } + + public int getMasterKeyIndex() { + return mMasterKeyIndex; + } + + public boolean isMasterKey() { + return mMasterKey != null; + } + + public String toSensitiveString() { + StringBuffer sb = new StringBuffer(); + + sb.append(""); + + return sb.toString(); + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append(""); + + return sb.toString(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof LowpanCredential)) { + return false; + } + LowpanCredential rhs = (LowpanCredential) obj; + return Arrays.equals(mMasterKey, rhs.mMasterKey) && mMasterKeyIndex == rhs.mMasterKeyIndex; + } + + @Override + public int hashCode() { + return Objects.hash(Arrays.hashCode(mMasterKey), mMasterKeyIndex); + } + + /** Implement the Parcelable interface. */ + @Override + public int describeContents() { + return 0; + } + + /** Implement the Parcelable interface. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeByteArray(mMasterKey); + dest.writeInt(mMasterKeyIndex); + } + + /** Implement the Parcelable interface. */ + public static final Creator CREATOR = + new Creator() { + + public LowpanCredential createFromParcel(Parcel in) { + LowpanCredential credential = new LowpanCredential(); + + credential.mMasterKey = in.createByteArray(); + credential.mMasterKeyIndex = in.readInt(); + + return credential; + } + + public LowpanCredential[] newArray(int size) { + return new LowpanCredential[size]; + } + }; +} diff --git a/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java b/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java new file mode 100644 index 0000000000000000000000000000000000000000..da87752008c9bf760daa9b390f862359b79d3a0e --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanEnergyScanResult.java @@ -0,0 +1,53 @@ +/* + * 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.lowpan; + +/** + * Describes the result from one channel of an energy scan. + * + * @hide + */ +// @SystemApi +public class LowpanEnergyScanResult { + public static final int UNKNOWN = Integer.MAX_VALUE; + + private int mChannel = UNKNOWN; + private int mMaxRssi = UNKNOWN; + + LowpanEnergyScanResult() {} + + public int getChannel() { + return mChannel; + } + + public int getMaxRssi() { + return mMaxRssi; + } + + void setChannel(int x) { + mChannel = x; + } + + void setMaxRssi(int x) { + mMaxRssi = x; + } + + @Override + public String toString() { + return "LowpanEnergyScanResult(channel: " + mChannel + ", maxRssi:" + mMaxRssi + ")"; + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanException.java b/lowpan/java/android/net/lowpan/LowpanException.java new file mode 100644 index 0000000000000000000000000000000000000000..5dfce48d3f17d4433f80c7c8600c82ad82c3b673 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanException.java @@ -0,0 +1,92 @@ +/* + * 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.lowpan; + +import android.os.ServiceSpecificException; +import android.util.AndroidException; + +/** + * LowpanException is thrown if an action to a LoWPAN interface could not be performed + * or a LoWPAN interface property could not be fetched or changed. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class LowpanException extends AndroidException { + public LowpanException() {} + + public LowpanException(String message) { + super(message); + } + + public LowpanException(String message, Throwable cause) { + super(message, cause); + } + + public LowpanException(Exception cause) { + super(cause); + } + + /* This method returns LowpanException so that the caller + * can add "throw" before the invocation of this method. + * This might seem superfluous, but it is actually to + * help provide a hint to the java compiler that this + * function will not return. + */ + static LowpanException rethrowFromServiceSpecificException(ServiceSpecificException e) + throws LowpanException { + switch (e.errorCode) { + case ILowpanInterface.ERROR_DISABLED: + throw new InterfaceDisabledException(e); + + case ILowpanInterface.ERROR_WRONG_STATE: + throw new WrongStateException(e); + + case ILowpanInterface.ERROR_CANCELED: + throw new OperationCanceledException(e); + + case ILowpanInterface.ERROR_JOIN_FAILED_UNKNOWN: + throw new JoinFailedException(e); + + case ILowpanInterface.ERROR_JOIN_FAILED_AT_SCAN: + throw new JoinFailedAtScanException(e); + + case ILowpanInterface.ERROR_JOIN_FAILED_AT_AUTH: + throw new JoinFailedAtAuthException(e); + + case ILowpanInterface.ERROR_FORM_FAILED_AT_SCAN: + throw new NetworkAlreadyExistsException(e); + + case ILowpanInterface.ERROR_FEATURE_NOT_SUPPORTED: + throw new LowpanException( + e.getMessage() != null ? e.getMessage() : "Feature not supported", e); + + case ILowpanInterface.ERROR_NCP_PROBLEM: + throw new LowpanRuntimeException( + e.getMessage() != null ? e.getMessage() : "NCP problem", e); + + case ILowpanInterface.ERROR_INVALID_ARGUMENT: + throw new LowpanRuntimeException( + e.getMessage() != null ? e.getMessage() : "Invalid argument", e); + + case ILowpanInterface.ERROR_UNSPECIFIED: + default: + throw new LowpanRuntimeException(e); + } + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanIdentity.aidl b/lowpan/java/android/net/lowpan/LowpanIdentity.aidl new file mode 100644 index 0000000000000000000000000000000000000000..fcef98f5c49695d244ad6a426822f646ac5d42b2 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanIdentity.aidl @@ -0,0 +1,19 @@ +/** + * 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.lowpan; + +parcelable LowpanIdentity cpp_header "android/net/lowpan/LowpanIdentity.h"; diff --git a/lowpan/java/android/net/lowpan/LowpanIdentity.java b/lowpan/java/android/net/lowpan/LowpanIdentity.java new file mode 100644 index 0000000000000000000000000000000000000000..6cb1f987c5d9de17ca05ee5e4ada3f108c79e7d1 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanIdentity.java @@ -0,0 +1,255 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.icu.text.StringPrep; +import android.icu.text.StringPrepParseException; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; +import com.android.internal.util.HexDump; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Objects; + +/** + * Describes an instance of a LoWPAN network. + * + * @hide + */ +// @SystemApi +public class LowpanIdentity implements Parcelable { + private static final String TAG = LowpanIdentity.class.getSimpleName(); + + // Constants + public static final int UNSPECIFIED_CHANNEL = -1; + public static final int UNSPECIFIED_PANID = 0xFFFFFFFF; + // Builder + + /** @hide */ + // @SystemApi + public static class Builder { + private static final StringPrep stringPrep = + StringPrep.getInstance(StringPrep.RFC3920_RESOURCEPREP); + + final LowpanIdentity mIdentity = new LowpanIdentity(); + + private static String escape(@NonNull byte[] bytes) { + StringBuffer sb = new StringBuffer(); + for (byte b : bytes) { + if (b >= 32 && b <= 126) { + sb.append((char) b); + } else { + sb.append(String.format("\\0x%02x", b & 0xFF)); + } + } + return sb.toString(); + } + + public Builder setLowpanIdentity(@NonNull LowpanIdentity x) { + Objects.requireNonNull(x); + setRawName(x.getRawName()); + setXpanid(x.getXpanid()); + setPanid(x.getPanid()); + setChannel(x.getChannel()); + setType(x.getType()); + return this; + } + + public Builder setName(@NonNull String name) { + Objects.requireNonNull(name); + try { + mIdentity.mName = stringPrep.prepare(name, StringPrep.DEFAULT); + mIdentity.mRawName = mIdentity.mName.getBytes(StandardCharsets.UTF_8); + mIdentity.mIsNameValid = true; + } catch (StringPrepParseException x) { + Log.w(TAG, x.toString()); + setRawName(name.getBytes(StandardCharsets.UTF_8)); + } + return this; + } + + public Builder setRawName(@NonNull byte[] name) { + Objects.requireNonNull(name); + mIdentity.mRawName = name.clone(); + mIdentity.mName = new String(name, StandardCharsets.UTF_8); + try { + String nameCheck = stringPrep.prepare(mIdentity.mName, StringPrep.DEFAULT); + mIdentity.mIsNameValid = + Arrays.equals(nameCheck.getBytes(StandardCharsets.UTF_8), name); + } catch (StringPrepParseException x) { + Log.w(TAG, x.toString()); + mIdentity.mIsNameValid = false; + } + + // Non-normal names must be rendered differently to avoid confusion. + if (!mIdentity.mIsNameValid) { + mIdentity.mName = "«" + escape(name) + "»"; + } + + return this; + } + + public Builder setXpanid(byte x[]) { + mIdentity.mXpanid = (x != null ? x.clone() : null); + return this; + } + + public Builder setPanid(int x) { + mIdentity.mPanid = x; + return this; + } + + public Builder setType(@NonNull String x) { + mIdentity.mType = x; + return this; + } + + public Builder setChannel(int x) { + mIdentity.mChannel = x; + return this; + } + + public LowpanIdentity build() { + return mIdentity; + } + } + + LowpanIdentity() {} + + // Instance Variables + + private String mName = ""; + private boolean mIsNameValid = true; + private byte[] mRawName = new byte[0]; + private String mType = ""; + private byte[] mXpanid = new byte[0]; + private int mPanid = UNSPECIFIED_PANID; + private int mChannel = UNSPECIFIED_CHANNEL; + + // Public Getters + + public String getName() { + return mName; + } + + public boolean isNameValid() { + return mIsNameValid; + } + + public byte[] getRawName() { + return mRawName.clone(); + } + + public byte[] getXpanid() { + return mXpanid.clone(); + } + + public int getPanid() { + return mPanid; + } + + public String getType() { + return mType; + } + + public int getChannel() { + return mChannel; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append("Name:").append(getName()); + + if (mType.length() > 0) { + sb.append(", Type:").append(mType); + } + + if (mXpanid.length > 0) { + sb.append(", XPANID:").append(HexDump.toHexString(mXpanid)); + } + + if (mPanid != UNSPECIFIED_PANID) { + sb.append(", PANID:").append(String.format("0x%04X", mPanid)); + } + + if (mChannel != UNSPECIFIED_CHANNEL) { + sb.append(", Channel:").append(mChannel); + } + + return sb.toString(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof LowpanIdentity)) { + return false; + } + LowpanIdentity rhs = (LowpanIdentity) obj; + return Arrays.equals(mRawName, rhs.mRawName) + && Arrays.equals(mXpanid, rhs.mXpanid) + && mType.equals(rhs.mType) + && mPanid == rhs.mPanid + && mChannel == rhs.mChannel; + } + + @Override + public int hashCode() { + return Objects.hash( + Arrays.hashCode(mRawName), mType, Arrays.hashCode(mXpanid), mPanid, mChannel); + } + + /** Implement the Parcelable interface. */ + @Override + public int describeContents() { + return 0; + } + + /** Implement the Parcelable interface. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeByteArray(mRawName); + dest.writeString(mType); + dest.writeByteArray(mXpanid); + dest.writeInt(mPanid); + dest.writeInt(mChannel); + } + + /** Implement the Parcelable interface. */ + public static final Creator CREATOR = + new Creator() { + + public LowpanIdentity createFromParcel(Parcel in) { + Builder builder = new Builder(); + + builder.setRawName(in.createByteArray()); + builder.setType(in.readString()); + builder.setXpanid(in.createByteArray()); + builder.setPanid(in.readInt()); + builder.setChannel(in.readInt()); + + return builder.build(); + } + + public LowpanIdentity[] newArray(int size) { + return new LowpanIdentity[size]; + } + }; +} diff --git a/lowpan/java/android/net/lowpan/LowpanInterface.java b/lowpan/java/android/net/lowpan/LowpanInterface.java new file mode 100644 index 0000000000000000000000000000000000000000..57e91357b2378ff399961b6554e2dd3688295922 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanInterface.java @@ -0,0 +1,824 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.Context; +import android.net.IpPrefix; +import android.net.LinkAddress; +import android.os.DeadObjectException; +import android.os.Handler; +import android.os.Looper; +import android.os.RemoteException; +import android.os.ServiceSpecificException; +import android.util.Log; +import java.util.HashMap; + +/** + * Class for managing a specific Low-power Wireless Personal Area Network (LoWPAN) interface. + * + * @hide + */ +// @SystemApi +public class LowpanInterface { + private static final String TAG = LowpanInterface.class.getSimpleName(); + + /** Detached role. The interface is not currently attached to a network. */ + public static final String ROLE_DETACHED = ILowpanInterface.ROLE_DETACHED; + + /** End-device role. End devices do not route traffic for other nodes. */ + public static final String ROLE_END_DEVICE = ILowpanInterface.ROLE_END_DEVICE; + + /** Router role. Routers help route traffic around the mesh network. */ + public static final String ROLE_ROUTER = ILowpanInterface.ROLE_ROUTER; + + /** + * Sleepy End-Device role. + * + *

        End devices with this role are nominally asleep, waking up periodically to check in with + * their parent to see if there are packets destined for them. Such devices are capable of + * extraordinarilly low power consumption, but packet latency can be on the order of dozens of + * seconds(depending on how the node is configured). + */ + public static final String ROLE_SLEEPY_END_DEVICE = ILowpanInterface.ROLE_SLEEPY_END_DEVICE; + + /** + * Sleepy-router role. + * + *

        Routers with this role are nominally asleep, waking up periodically to check in with other + * routers and their children. + */ + public static final String ROLE_SLEEPY_ROUTER = ILowpanInterface.ROLE_SLEEPY_ROUTER; + + /** TODO: doc */ + public static final String ROLE_LEADER = ILowpanInterface.ROLE_LEADER; + + /** TODO: doc */ + public static final String ROLE_COORDINATOR = ILowpanInterface.ROLE_COORDINATOR; + + /** + * Offline state. + * + *

        This is the initial state of the LoWPAN interface when the underlying driver starts. In + * this state the NCP is idle and not connected to any network. + * + *

        This state can be explicitly entered by calling {@link #reset()}, {@link #leave()}, or + * setUp(false), with the later two only working if we were not previously in the + * {@link #STATE_FAULT} state. + * + * @see #getState() + * @see #STATE_FAULT + */ + public static final String STATE_OFFLINE = ILowpanInterface.STATE_OFFLINE; + + /** + * Commissioning state. + * + *

        The interface enters this state after a call to {@link #startCommissioningSession()}. This + * state may only be entered directly from the {@link #STATE_OFFLINE} state. + * + * @see #startCommissioningSession() + * @see #getState() + * @hide + */ + public static final String STATE_COMMISSIONING = ILowpanInterface.STATE_COMMISSIONING; + + /** + * Attaching state. + * + *

        The interface enters this state when it starts the process of trying to find other nodes + * so that it can attach to any pre-existing network fragment, or when it is in the process of + * calculating the optimal values for unspecified parameters when forming a new network. + * + *

        The interface may stay in this state for a prolonged period of time (or may spontaneously + * enter this state from {@link #STATE_ATTACHED}) if the underlying network technology is + * heirarchical (like ZigBeeIP) or if the device role is that of an "end-device" ({@link + * #ROLE_END_DEVICE} or {@link #ROLE_SLEEPY_END_DEVICE}). This is because such roles cannot + * create their own network fragments. + * + * @see #STATE_ATTACHED + * @see #getState() + */ + public static final String STATE_ATTACHING = ILowpanInterface.STATE_ATTACHING; + + /** + * Attached state. + * + *

        The interface enters this state from {@link #STATE_ATTACHING} once it is actively + * participating on a network fragment. + * + * @see #STATE_ATTACHING + * @see #getState() + */ + public static final String STATE_ATTACHED = ILowpanInterface.STATE_ATTACHED; + + /** + * Fault state. + * + *

        The interface will enter this state when the driver has detected some sort of problem from + * which it was not immediately able to recover. + * + *

        This state can be entered spontaneously from any other state. Calling {@link #reset} will + * cause the device to return to the {@link #STATE_OFFLINE} state. + * + * @see #getState + * @see #STATE_OFFLINE + */ + public static final String STATE_FAULT = ILowpanInterface.STATE_FAULT; + + /** + * Network type for Thread 1.x networks. + * + * @see android.net.lowpan.LowpanIdentity#getType + * @see #getLowpanIdentity + * @hide + */ + public static final String NETWORK_TYPE_THREAD_V1 = ILowpanInterface.NETWORK_TYPE_THREAD_V1; + + public static final String EMPTY_PARTITION_ID = ""; + + /** + * Callback base class for LowpanInterface + * + * @hide + */ + // @SystemApi + public abstract static class Callback { + public void onConnectedChanged(boolean value) {} + + public void onEnabledChanged(boolean value) {} + + public void onUpChanged(boolean value) {} + + public void onRoleChanged(@NonNull String value) {} + + public void onStateChanged(@NonNull String state) {} + + public void onLowpanIdentityChanged(@NonNull LowpanIdentity value) {} + + public void onLinkNetworkAdded(IpPrefix prefix) {} + + public void onLinkNetworkRemoved(IpPrefix prefix) {} + + public void onLinkAddressAdded(LinkAddress address) {} + + public void onLinkAddressRemoved(LinkAddress address) {} + } + + private final ILowpanInterface mBinder; + private final Looper mLooper; + private final HashMap mListenerMap = new HashMap<>(); + + /** + * Create a new LowpanInterface instance. Applications will almost always want to use {@link + * LowpanManager#getInterface LowpanManager.getInterface()} instead of this. + * + * @param context the application context + * @param service the Binder interface + * @param looper the Binder interface + * @hide + */ + public LowpanInterface(Context context, ILowpanInterface service, Looper looper) { + /* We aren't currently using the context, but if we need + * it later on we can easily add it to the class. + */ + + mBinder = service; + mLooper = looper; + } + + /** + * Returns the ILowpanInterface object associated with this interface. + * + * @hide + */ + public ILowpanInterface getService() { + return mBinder; + } + + // Public Actions + + /** + * Form a new network with the given network information optional credential. Unspecified fields + * in the network information will be filled in with reasonable values. If the network + * credential is unspecified, one will be generated automatically. + * + *

        This method will block until either the network was successfully formed or an error + * prevents the network form being formed. + * + *

        Upon success, the interface will be up and attached to the newly formed network. + * + * @see #join(LowpanProvision) + */ + public void form(@NonNull LowpanProvision provision) throws LowpanException { + try { + mBinder.form(provision); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Attempts to join a new network with the given network information. This method will block + * until either the network was successfully joined or an error prevented the network from being + * formed. Upon success, the interface will be up and attached to the newly joined network. + * + *

        Note that “joining” is distinct from “attaching”: Joining requires at least one other peer + * device to be present in order for the operation to complete successfully. + */ + public void join(@NonNull LowpanProvision provision) throws LowpanException { + try { + mBinder.join(provision); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Attaches to the network described by identity and credential. This is similar to {@link + * #join}, except that (assuming the identity and credential are valid) it will always succeed + * and provision the interface, even if there are no peers nearby. + * + *

        This method will block execution until the operation has completed. + */ + public void attach(@NonNull LowpanProvision provision) throws LowpanException { + try { + mBinder.attach(provision); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Bring down the network interface and forget all non-volatile details about the current + * network. + * + *

        This method will block execution until the operation has completed. + */ + public void leave() throws LowpanException { + try { + mBinder.leave(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Start a new commissioning session. Will fail if the interface is attached to a network or if + * the interface is disabled. + */ + public @NonNull LowpanCommissioningSession startCommissioningSession( + @NonNull LowpanBeaconInfo beaconInfo) throws LowpanException { + try { + mBinder.startCommissioningSession(beaconInfo); + + return new LowpanCommissioningSession(mBinder, beaconInfo, mLooper); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Reset this network interface as if it has been power cycled. Will bring the network interface + * down if it was previously up. Will not erase any non-volatile settings. + * + *

        This method will block execution until the operation has completed. + * + * @hide + */ + public void reset() throws LowpanException { + try { + mBinder.reset(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + // Public Getters and Setters + + /** Returns the name of this network interface. */ + @NonNull + public String getName() { + try { + return mBinder.getName(); + + } catch (DeadObjectException x) { + return ""; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Indicates if the interface is enabled or disabled. + * + * @see #setEnabled + * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED + */ + public boolean isEnabled() { + try { + return mBinder.isEnabled(); + + } catch (DeadObjectException x) { + return false; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Enables or disables the LoWPAN interface. When disabled, the interface is put into a + * low-power state and all commands that require the NCP to be queried will fail with {@link + * android.net.lowpan.LowpanException#LOWPAN_DISABLED}. + * + * @see #isEnabled + * @see android.net.lowpan.LowpanException#LOWPAN_DISABLED + * @hide + */ + public void setEnabled(boolean enabled) throws LowpanException { + try { + mBinder.setEnabled(enabled); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Indicates if the network interface is up or down. + * + * @hide + */ + public boolean isUp() { + try { + return mBinder.isUp(); + + } catch (DeadObjectException x) { + return false; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Indicates if there is at least one peer in range. + * + * @return true if we have at least one other peer in range, false + * otherwise. + */ + public boolean isConnected() { + try { + return mBinder.isConnected(); + + } catch (DeadObjectException x) { + return false; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Indicates if this interface is currently commissioned onto an existing network. If the + * interface is commissioned, the interface may be brought up using setUp(). + */ + public boolean isCommissioned() { + try { + return mBinder.isCommissioned(); + + } catch (DeadObjectException x) { + return false; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Get interface state + * + *

        State Diagram

        + * + * + * + * @return The current state of the interface. + * @see #STATE_OFFLINE + * @see #STATE_COMMISSIONING + * @see #STATE_ATTACHING + * @see #STATE_ATTACHED + * @see #STATE_FAULT + */ + public String getState() { + try { + return mBinder.getState(); + + } catch (DeadObjectException x) { + return STATE_FAULT; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** Get network partition/fragment identifier. */ + public String getPartitionId() { + try { + return mBinder.getPartitionId(); + + } catch (DeadObjectException x) { + return EMPTY_PARTITION_ID; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** TODO: doc */ + public LowpanIdentity getLowpanIdentity() { + try { + return mBinder.getLowpanIdentity(); + + } catch (DeadObjectException x) { + return new LowpanIdentity(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** TODO: doc */ + @NonNull + public String getRole() { + try { + return mBinder.getRole(); + + } catch (DeadObjectException x) { + return ROLE_DETACHED; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** TODO: doc */ + @Nullable + public LowpanCredential getLowpanCredential() { + try { + return mBinder.getLowpanCredential(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + public @NonNull String[] getSupportedNetworkTypes() throws LowpanException { + try { + return mBinder.getSupportedNetworkTypes(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + public @NonNull LowpanChannelInfo[] getSupportedChannels() throws LowpanException { + try { + return mBinder.getSupportedChannels(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + // Listener Support + + /** + * Registers a subclass of {@link LowpanInterface.Callback} to receive events. + * + * @param cb Subclass of {@link LowpanInterface.Callback} which will receive events. + * @param handler If not null, events will be dispatched via the given handler + * object. If null, the thread upon which events will be dispatched is + * unspecified. + * @see #registerCallback(Callback) + * @see #unregisterCallback(Callback) + */ + public void registerCallback(@NonNull Callback cb, @Nullable Handler handler) { + ILowpanInterfaceListener.Stub listenerBinder = + new ILowpanInterfaceListener.Stub() { + private Handler mHandler; + + { + if (handler != null) { + mHandler = handler; + } else if (mLooper != null) { + mHandler = new Handler(mLooper); + } else { + mHandler = new Handler(); + } + } + + @Override + public void onEnabledChanged(boolean value) { + mHandler.post(() -> cb.onEnabledChanged(value)); + } + + @Override + public void onConnectedChanged(boolean value) { + mHandler.post(() -> cb.onConnectedChanged(value)); + } + + @Override + public void onUpChanged(boolean value) { + mHandler.post(() -> cb.onUpChanged(value)); + } + + @Override + public void onRoleChanged(String value) { + mHandler.post(() -> cb.onRoleChanged(value)); + } + + @Override + public void onStateChanged(String value) { + mHandler.post(() -> cb.onStateChanged(value)); + } + + @Override + public void onLowpanIdentityChanged(LowpanIdentity value) { + mHandler.post(() -> cb.onLowpanIdentityChanged(value)); + } + + @Override + public void onLinkNetworkAdded(IpPrefix value) { + mHandler.post(() -> cb.onLinkNetworkAdded(value)); + } + + @Override + public void onLinkNetworkRemoved(IpPrefix value) { + mHandler.post(() -> cb.onLinkNetworkRemoved(value)); + } + + @Override + public void onLinkAddressAdded(String value) { + LinkAddress la; + try { + la = new LinkAddress(value); + } catch (IllegalArgumentException x) { + Log.e( + TAG, + "onLinkAddressAdded: Bad LinkAddress \"" + value + "\", " + x); + return; + } + mHandler.post(() -> cb.onLinkAddressAdded(la)); + } + + @Override + public void onLinkAddressRemoved(String value) { + LinkAddress la; + try { + la = new LinkAddress(value); + } catch (IllegalArgumentException x) { + Log.e( + TAG, + "onLinkAddressRemoved: Bad LinkAddress \"" + + value + + "\", " + + x); + return; + } + mHandler.post(() -> cb.onLinkAddressRemoved(la)); + } + + @Override + public void onReceiveFromCommissioner(byte[] packet) { + // This is only used by the LowpanCommissioningSession. + } + }; + try { + mBinder.addListener(listenerBinder); + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + + synchronized (mListenerMap) { + mListenerMap.put(System.identityHashCode(cb), listenerBinder); + } + } + + /** + * Registers a subclass of {@link LowpanInterface.Callback} to receive events. + * + *

        The thread upon which events will be dispatched is unspecified. + * + * @param cb Subclass of {@link LowpanInterface.Callback} which will receive events. + * @see #registerCallback(Callback, Handler) + * @see #unregisterCallback(Callback) + */ + public void registerCallback(Callback cb) { + registerCallback(cb, null); + } + + /** + * Unregisters a previously registered callback class. + * + * @param cb Subclass of {@link LowpanInterface.Callback} which was previously registered to + * receive events. + * @see #registerCallback(Callback, Handler) + * @see #registerCallback(Callback) + */ + public void unregisterCallback(Callback cb) { + int hashCode = System.identityHashCode(cb); + synchronized (mListenerMap) { + ILowpanInterfaceListener listenerBinder = mListenerMap.get(hashCode); + + if (listenerBinder != null) { + mListenerMap.remove(hashCode); + + try { + mBinder.removeListener(listenerBinder); + } catch (DeadObjectException x) { + // We ignore a dead object exception because that + // pretty clearly means our callback isn't registered. + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + } + } + + // Active and Passive Scanning + + /** + * Creates a new {@link android.net.lowpan.LowpanScanner} object for this interface. + * + *

        This method allocates a new unique object for each call. + * + * @see android.net.lowpan.LowpanScanner + */ + public @NonNull LowpanScanner createScanner() { + return new LowpanScanner(mBinder); + } + + // Route Management + + /** + * Makes a copy of the internal list of LinkAddresses. + * + * @hide + */ + public LinkAddress[] getLinkAddresses() throws LowpanException { + try { + String[] linkAddressStrings = mBinder.getLinkAddresses(); + LinkAddress[] ret = new LinkAddress[linkAddressStrings.length]; + int i = 0; + for (String str : linkAddressStrings) { + ret[i++] = new LinkAddress(str); + } + return ret; + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Makes a copy of the internal list of networks reachable on via this link. + * + * @hide + */ + public IpPrefix[] getLinkNetworks() throws LowpanException { + try { + return mBinder.getLinkNetworks(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Advertise the given IP prefix as an on-mesh prefix. + * + * @hide + */ + public void addOnMeshPrefix(IpPrefix prefix, int flags) throws LowpanException { + try { + mBinder.addOnMeshPrefix(prefix, flags); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Remove an IP prefix previously advertised by this device from the list of advertised on-mesh + * prefixes. + * + * @hide + */ + public void removeOnMeshPrefix(IpPrefix prefix) { + try { + mBinder.removeOnMeshPrefix(prefix); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + // Catch and ignore all service exceptions + Log.e(TAG, x.toString()); + } + } + + /** + * Advertise this device to other devices on the mesh network as having a specific route to the + * given network. This device will then receive forwarded traffic for that network. + * + * @hide + */ + public void addExternalRoute(IpPrefix prefix, int flags) throws LowpanException { + try { + mBinder.addExternalRoute(prefix, flags); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Revoke a previously advertised specific route to the given network. + * + * @hide + */ + public void removeExternalRoute(IpPrefix prefix) { + try { + mBinder.removeExternalRoute(prefix); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + // Catch and ignore all service exceptions + Log.e(TAG, x.toString()); + } + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanManager.java b/lowpan/java/android/net/lowpan/LowpanManager.java new file mode 100644 index 0000000000000000000000000000000000000000..2d974ee79e407972389fc5eba90c7c5e5cb996a3 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanManager.java @@ -0,0 +1,313 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.content.Context; +import android.os.Handler; +import android.os.IBinder; +import android.os.Looper; +import android.os.RemoteException; +import android.os.ServiceManager; +import java.lang.ref.WeakReference; +import java.util.HashMap; +import java.util.Map; +import java.util.WeakHashMap; + +/** + * Manager object for looking up LoWPAN interfaces. + * + * @hide + */ +// @SystemApi +public class LowpanManager { + private static final String TAG = LowpanManager.class.getSimpleName(); + + /** @hide */ + // @SystemApi + public abstract static class Callback { + public void onInterfaceAdded(LowpanInterface lowpanInterface) {} + + public void onInterfaceRemoved(LowpanInterface lowpanInterface) {} + } + + private final Map mListenerMap = new HashMap<>(); + private final Map mInterfaceCache = new HashMap<>(); + + /* This is a WeakHashMap because we don't want to hold onto + * a strong reference to ILowpanInterface, so that it can be + * garbage collected if it isn't being used anymore. Since + * the value class holds onto this specific ILowpanInterface, + * we also need to have a weak reference to the value. + * This design pattern allows us to skip removal of items + * from this Map without leaking memory. + */ + private final Map> mBinderCache = + new WeakHashMap<>(); + + private final ILowpanManager mService; + private final Context mContext; + private final Looper mLooper; + + // Static Methods + + public static LowpanManager from(Context context) { + return (LowpanManager) context.getSystemService(Context.LOWPAN_SERVICE); + } + + /** @hide */ + public static LowpanManager getManager() { + IBinder binder = ServiceManager.getService(Context.LOWPAN_SERVICE); + + if (binder != null) { + ILowpanManager service = ILowpanManager.Stub.asInterface(binder); + return new LowpanManager(service); + } + + return null; + } + + // Constructors + + LowpanManager(ILowpanManager service) { + mService = service; + mContext = null; + mLooper = null; + } + + /** + * Create a new LowpanManager instance. Applications will almost always want to use {@link + * android.content.Context#getSystemService Context.getSystemService()} to retrieve the standard + * {@link android.content.Context#LOWPAN_SERVICE Context.LOWPAN_SERVICE}. + * + * @param context the application context + * @param service the Binder interface + * @param looper the default Looper to run callbacks on + * @hide - hide this because it takes in a parameter of type ILowpanManager, which is a system + * private class. + */ + public LowpanManager(Context context, ILowpanManager service, Looper looper) { + mContext = context; + mService = service; + mLooper = looper; + } + + /** @hide */ + @Nullable + public LowpanInterface getInterface(@NonNull ILowpanInterface ifaceService) { + LowpanInterface iface = null; + + try { + synchronized (mBinderCache) { + if (mBinderCache.containsKey(ifaceService)) { + iface = mBinderCache.get(ifaceService).get(); + } + + if (iface == null) { + String ifaceName = ifaceService.getName(); + + iface = new LowpanInterface(mContext, ifaceService, mLooper); + + synchronized (mInterfaceCache) { + mInterfaceCache.put(iface.getName(), iface); + } + + mBinderCache.put(ifaceService, new WeakReference(iface)); + + /* Make sure we remove the object from the + * interface cache if the associated service + * dies. + */ + ifaceService + .asBinder() + .linkToDeath( + new IBinder.DeathRecipient() { + @Override + public void binderDied() { + synchronized (mInterfaceCache) { + LowpanInterface iface = + mInterfaceCache.get(ifaceName); + + if ((iface != null) + && (iface.getService() == ifaceService)) { + mInterfaceCache.remove(ifaceName); + } + } + } + }, + 0); + } + } + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + + return iface; + } + + /** + * Returns a reference to the requested LowpanInterface object. If the given interface doesn't + * exist, or it is not a LoWPAN interface, returns null. + */ + @Nullable + public LowpanInterface getInterface(@NonNull String name) { + LowpanInterface iface = null; + + try { + /* This synchronized block covers both branches of the enclosed + * if() statement in order to avoid a race condition. Two threads + * calling getInterface() with the same name would race to create + * the associated LowpanInterface object, creating two of them. + * Having the whole block be synchronized avoids that race. + */ + synchronized (mInterfaceCache) { + if (mInterfaceCache.containsKey(name)) { + iface = mInterfaceCache.get(name); + + } else { + ILowpanInterface ifaceService = mService.getInterface(name); + + if (ifaceService != null) { + iface = getInterface(ifaceService); + } + } + } + } catch (RemoteException x) { + throw x.rethrowFromSystemServer(); + } + + return iface; + } + + /** + * Returns a reference to the first registered LowpanInterface object. If there are no LoWPAN + * interfaces registered, returns null. + */ + @Nullable + public LowpanInterface getInterface() { + String[] ifaceList = getInterfaceList(); + if (ifaceList.length > 0) { + return getInterface(ifaceList[0]); + } + return null; + } + + /** + * Returns a string array containing the names of LoWPAN interfaces. This list may contain fewer + * interfaces if the calling process does not have permissions to see individual interfaces. + */ + @NonNull + public String[] getInterfaceList() { + try { + return mService.getInterfaceList(); + } catch (RemoteException x) { + throw x.rethrowFromSystemServer(); + } + } + + /** + * Registers a callback object to receive notifications when LoWPAN interfaces are added or + * removed. + * + * @hide + */ + public void registerCallback(@NonNull Callback cb, @Nullable Handler handler) + throws LowpanException { + ILowpanManagerListener.Stub listenerBinder = + new ILowpanManagerListener.Stub() { + private Handler mHandler; + + { + if (handler != null) { + mHandler = handler; + } else if (mLooper != null) { + mHandler = new Handler(mLooper); + } else { + mHandler = new Handler(); + } + } + + @Override + public void onInterfaceAdded(ILowpanInterface ifaceService) { + Runnable runnable = + () -> { + LowpanInterface iface = getInterface(ifaceService); + + if (iface != null) { + cb.onInterfaceAdded(iface); + } + }; + + mHandler.post(runnable); + } + + @Override + public void onInterfaceRemoved(ILowpanInterface ifaceService) { + Runnable runnable = + () -> { + LowpanInterface iface = getInterface(ifaceService); + + if (iface != null) { + cb.onInterfaceRemoved(iface); + } + }; + + mHandler.post(runnable); + } + }; + try { + mService.addListener(listenerBinder); + } catch (RemoteException x) { + throw x.rethrowFromSystemServer(); + } + + synchronized (mListenerMap) { + mListenerMap.put(Integer.valueOf(System.identityHashCode(cb)), listenerBinder); + } + } + + /** @hide */ + public void registerCallback(@NonNull Callback cb) throws LowpanException { + registerCallback(cb, null); + } + + /** + * Unregisters a previously registered {@link LowpanManager.Callback} object. + * + * @hide + */ + public void unregisterCallback(@NonNull Callback cb) { + Integer hashCode = Integer.valueOf(System.identityHashCode(cb)); + ILowpanManagerListener listenerBinder = null; + + synchronized (mListenerMap) { + listenerBinder = mListenerMap.get(hashCode); + mListenerMap.remove(hashCode); + } + + if (listenerBinder != null) { + try { + mService.removeListener(listenerBinder); + } catch (RemoteException x) { + throw x.rethrowFromSystemServer(); + } + } else { + throw new RuntimeException("Attempt to unregister an unknown callback"); + } + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanProperties.java b/lowpan/java/android/net/lowpan/LowpanProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..cc45ff85f72384966e8a4ffd98171804834ed431 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanProperties.java @@ -0,0 +1,56 @@ +/* + * 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.lowpan; + +/** {@hide} */ +public final class LowpanProperties { + + public static final LowpanProperty KEY_CHANNEL_MASK = + new LowpanStandardProperty("android.net.lowpan.property.CHANNEL_MASK", int[].class); + + public static final LowpanProperty KEY_MAX_TX_POWER = + new LowpanStandardProperty("android.net.lowpan.property.MAX_TX_POWER", Integer.class); + + /** @hide */ + private LowpanProperties() {} + + /** @hide */ + static final class LowpanStandardProperty extends LowpanProperty { + private final String mName; + private final Class mType; + + LowpanStandardProperty(String name, Class type) { + mName = name; + mType = type; + } + + @Override + public String getName() { + return mName; + } + + @Override + public Class getType() { + return mType; + } + + @Override + public String toString() { + return getName(); + } + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanProperty.java b/lowpan/java/android/net/lowpan/LowpanProperty.java new file mode 100644 index 0000000000000000000000000000000000000000..7f26986e9da063f50c1cc0767d04b3486b61c17b --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanProperty.java @@ -0,0 +1,34 @@ +/* + * 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.lowpan; + +import java.util.Map; + +/** {@hide} */ +public abstract class LowpanProperty { + public abstract String getName(); + + public abstract Class getType(); + + public void putInMap(Map map, T value) { + map.put(getName(), value); + } + + public T getFromMap(Map map) { + return (T) map.get(getName()); + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanProvision.aidl b/lowpan/java/android/net/lowpan/LowpanProvision.aidl new file mode 100644 index 0000000000000000000000000000000000000000..100e9dc8cc4a160af40a13f23f614fefdd3fff96 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanProvision.aidl @@ -0,0 +1,19 @@ +/** + * 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.lowpan; + +parcelable LowpanProvision cpp_header "android/net/lowpan/LowpanProvision.h"; diff --git a/lowpan/java/android/net/lowpan/LowpanProvision.java b/lowpan/java/android/net/lowpan/LowpanProvision.java new file mode 100644 index 0000000000000000000000000000000000000000..f1260037b331943d2c08a418d6c9a27416b1e315 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanProvision.java @@ -0,0 +1,149 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Parcel; +import android.os.Parcelable; +import java.util.Objects; + +/** + * Describes the information needed to describe a network + * + * @hide + */ +// @SystemApi +public class LowpanProvision implements Parcelable { + + // Builder + + /** @hide */ + // @SystemApi + public static class Builder { + private final LowpanProvision provision = new LowpanProvision(); + + public Builder setLowpanIdentity(@NonNull LowpanIdentity identity) { + provision.mIdentity = identity; + return this; + } + + public Builder setLowpanCredential(@NonNull LowpanCredential credential) { + provision.mCredential = credential; + return this; + } + + public LowpanProvision build() { + return provision; + } + } + + private LowpanProvision() {} + + // Instance Variables + + private LowpanIdentity mIdentity = new LowpanIdentity(); + private LowpanCredential mCredential = null; + + // Public Getters and Setters + + @NonNull + public LowpanIdentity getLowpanIdentity() { + return mIdentity; + } + + @Nullable + public LowpanCredential getLowpanCredential() { + return mCredential; + } + + @Override + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append("LowpanProvision { identity => ").append(mIdentity.toString()); + + if (mCredential != null) { + sb.append(", credential => ").append(mCredential.toString()); + } + + sb.append("}"); + + return sb.toString(); + } + + @Override + public int hashCode() { + return Objects.hash(mIdentity, mCredential); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof LowpanProvision)) { + return false; + } + LowpanProvision rhs = (LowpanProvision) obj; + + if (!mIdentity.equals(rhs.mIdentity)) { + return false; + } + + if (!Objects.equals(mCredential, rhs.mCredential)) { + return false; + } + + return true; + } + + /** Implement the Parcelable interface. */ + @Override + public int describeContents() { + return 0; + } + + /** Implement the Parcelable interface. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + mIdentity.writeToParcel(dest, flags); + if (mCredential == null) { + dest.writeBoolean(false); + } else { + dest.writeBoolean(true); + mCredential.writeToParcel(dest, flags); + } + } + + /** Implement the Parcelable interface. */ + public static final Creator CREATOR = + new Creator() { + public LowpanProvision createFromParcel(Parcel in) { + Builder builder = new Builder(); + + builder.setLowpanIdentity(LowpanIdentity.CREATOR.createFromParcel(in)); + + if (in.readBoolean()) { + builder.setLowpanCredential(LowpanCredential.CREATOR.createFromParcel(in)); + } + + return builder.build(); + } + + public LowpanProvision[] newArray(int size) { + return new LowpanProvision[size]; + } + }; +}; diff --git a/lowpan/java/android/net/lowpan/LowpanRuntimeException.java b/lowpan/java/android/net/lowpan/LowpanRuntimeException.java new file mode 100644 index 0000000000000000000000000000000000000000..71a5a1397a4e21e64e6b3be9cfc809648f220277 --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanRuntimeException.java @@ -0,0 +1,42 @@ +/* + * 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.lowpan; + +import android.util.AndroidRuntimeException; + +/** + * Generic runtime exception for LoWPAN operations. + * + * @hide + */ +// @SystemApi +public class LowpanRuntimeException extends AndroidRuntimeException { + + public LowpanRuntimeException() {} + + public LowpanRuntimeException(String message) { + super(message); + } + + public LowpanRuntimeException(String message, Throwable cause) { + super(message, cause); + } + + public LowpanRuntimeException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/LowpanScanner.java b/lowpan/java/android/net/lowpan/LowpanScanner.java new file mode 100644 index 0000000000000000000000000000000000000000..59156c42901006c3dfd6484e6fbbe8bb7d8b39ba --- /dev/null +++ b/lowpan/java/android/net/lowpan/LowpanScanner.java @@ -0,0 +1,326 @@ +/* + * 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.lowpan; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Handler; +import android.os.RemoteException; +import android.os.ServiceSpecificException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * LoWPAN Scanner + * + *

        This class allows performing network (active) scans and energy (passive) scans. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class LowpanScanner { + private static final String TAG = LowpanScanner.class.getSimpleName(); + + // Public Classes + + /** + * Callback base class for LowpanScanner + * + * @hide + */ + // @SystemApi + public abstract static class Callback { + public void onNetScanBeacon(LowpanBeaconInfo beacon) {} + + public void onEnergyScanResult(LowpanEnergyScanResult result) {} + + public void onScanFinished() {} + } + + // Instance Variables + + private ILowpanInterface mBinder; + private Callback mCallback = null; + private Handler mHandler = null; + private ArrayList mChannelMask = null; + private int mTxPower = Integer.MAX_VALUE; + + // Constructors/Accessors and Exception Glue + + LowpanScanner(@NonNull ILowpanInterface binder) { + mBinder = binder; + } + + /** Sets an instance of {@link LowpanScanner.Callback} to receive events. */ + public synchronized void setCallback(@Nullable Callback cb, @Nullable Handler handler) { + mCallback = cb; + mHandler = handler; + } + + /** Sets an instance of {@link LowpanScanner.Callback} to receive events. */ + public void setCallback(@Nullable Callback cb) { + setCallback(cb, null); + } + + /** + * Sets the channel mask to use when scanning. + * + * @param mask The channel mask to use when scanning. If null, any previously set + * channel mask will be cleared and all channels not masked by the current regulatory zone + * will be scanned. + */ + public void setChannelMask(@Nullable Collection mask) { + if (mask == null) { + mChannelMask = null; + } else { + if (mChannelMask == null) { + mChannelMask = new ArrayList<>(); + } else { + mChannelMask.clear(); + } + mChannelMask.addAll(mask); + } + } + + /** + * Gets the current channel mask. + * + * @return the current channel mask, or null if no channel mask is currently set. + */ + public @Nullable Collection getChannelMask() { + return (Collection) mChannelMask.clone(); + } + + /** + * Adds a channel to the channel mask used for scanning. + * + *

        If a channel mask was previously null, a new one is created containing only + * this channel. May be called multiple times to add additional channels ot the channel mask. + * + * @see #setChannelMask + * @see #getChannelMask + * @see #getTxPower + */ + public void addChannel(int channel) { + if (mChannelMask == null) { + mChannelMask = new ArrayList<>(); + } + mChannelMask.add(Integer.valueOf(channel)); + } + + /** + * Sets the maximum transmit power to be used for active scanning. + * + *

        The actual transmit power used is the lesser of this value and the currently configured + * maximum transmit power for the interface. + * + * @see #getTxPower + */ + public void setTxPower(int txPower) { + mTxPower = txPower; + } + + /** + * Gets the maximum transmit power used for active scanning. + * + * @see #setTxPower + */ + public int getTxPower() { + return mTxPower; + } + + private Map createScanOptionMap() { + Map map = new HashMap(); + + if (mChannelMask != null) { + LowpanProperties.KEY_CHANNEL_MASK.putInMap( + map, mChannelMask.stream().mapToInt(i -> i).toArray()); + } + + if (mTxPower != Integer.MAX_VALUE) { + LowpanProperties.KEY_MAX_TX_POWER.putInMap(map, Integer.valueOf(mTxPower)); + } + + return map; + } + + /** + * Start a network scan. + * + *

        This method will return once the scan has started. + * + * @see #stopNetScan + */ + public void startNetScan() throws LowpanException { + Map map = createScanOptionMap(); + + ILowpanNetScanCallback binderListener = + new ILowpanNetScanCallback.Stub() { + public void onNetScanBeacon(LowpanBeaconInfo beaconInfo) { + Callback callback; + Handler handler; + + synchronized (LowpanScanner.this) { + callback = mCallback; + handler = mHandler; + } + + if (callback == null) { + return; + } + + Runnable runnable = () -> callback.onNetScanBeacon(beaconInfo); + + if (handler != null) { + handler.post(runnable); + } else { + runnable.run(); + } + } + + public void onNetScanFinished() { + Callback callback; + Handler handler; + + synchronized (LowpanScanner.this) { + callback = mCallback; + handler = mHandler; + } + + if (callback == null) { + return; + } + + Runnable runnable = () -> callback.onScanFinished(); + + if (handler != null) { + handler.post(runnable); + } else { + runnable.run(); + } + } + }; + + try { + mBinder.startNetScan(map, binderListener); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Stop a network scan currently in progress. + * + * @see #startNetScan + */ + public void stopNetScan() { + try { + mBinder.stopNetScan(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } + + /** + * Start an energy scan. + * + *

        This method will return once the scan has started. + * + * @see #stopEnergyScan + */ + public void startEnergyScan() throws LowpanException { + Map map = createScanOptionMap(); + + ILowpanEnergyScanCallback binderListener = + new ILowpanEnergyScanCallback.Stub() { + public void onEnergyScanResult(int channel, int rssi) { + Callback callback = mCallback; + Handler handler = mHandler; + + if (callback == null) { + return; + } + + Runnable runnable = + () -> { + if (callback != null) { + LowpanEnergyScanResult result = + new LowpanEnergyScanResult(); + result.setChannel(channel); + result.setMaxRssi(rssi); + callback.onEnergyScanResult(result); + } + }; + + if (handler != null) { + handler.post(runnable); + } else { + runnable.run(); + } + } + + public void onEnergyScanFinished() { + Callback callback = mCallback; + Handler handler = mHandler; + + if (callback == null) { + return; + } + + Runnable runnable = () -> callback.onScanFinished(); + + if (handler != null) { + handler.post(runnable); + } else { + runnable.run(); + } + } + }; + + try { + mBinder.startEnergyScan(map, binderListener); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + + } catch (ServiceSpecificException x) { + throw LowpanException.rethrowFromServiceSpecificException(x); + } + } + + /** + * Stop an energy scan currently in progress. + * + * @see #startEnergyScan + */ + public void stopEnergyScan() { + try { + mBinder.stopEnergyScan(); + + } catch (RemoteException x) { + throw x.rethrowAsRuntimeException(); + } + } +} diff --git a/lowpan/java/android/net/lowpan/NetworkAlreadyExistsException.java b/lowpan/java/android/net/lowpan/NetworkAlreadyExistsException.java new file mode 100644 index 0000000000000000000000000000000000000000..90ef498baaba1b85941fc5e66e47ad303c13a600 --- /dev/null +++ b/lowpan/java/android/net/lowpan/NetworkAlreadyExistsException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating the form operation found a network nearby with the same identity. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class NetworkAlreadyExistsException extends LowpanException { + + public NetworkAlreadyExistsException() {} + + public NetworkAlreadyExistsException(String message) { + super(message, null); + } + + public NetworkAlreadyExistsException(String message, Throwable cause) { + super(message, cause); + } + + public NetworkAlreadyExistsException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/OperationCanceledException.java b/lowpan/java/android/net/lowpan/OperationCanceledException.java new file mode 100644 index 0000000000000000000000000000000000000000..fcafe3ae9b8f65d0582eab1a52906f162340a356 --- /dev/null +++ b/lowpan/java/android/net/lowpan/OperationCanceledException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating this operation was canceled by the driver before it could finish. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class OperationCanceledException extends LowpanException { + + public OperationCanceledException() {} + + public OperationCanceledException(String message) { + super(message); + } + + public OperationCanceledException(String message, Throwable cause) { + super(message, cause); + } + + protected OperationCanceledException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/WrongStateException.java b/lowpan/java/android/net/lowpan/WrongStateException.java new file mode 100644 index 0000000000000000000000000000000000000000..35654194e32bb573c73778719d66e01df44bd77e --- /dev/null +++ b/lowpan/java/android/net/lowpan/WrongStateException.java @@ -0,0 +1,41 @@ +/* + * 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.lowpan; + +/** + * Exception indicating the interface is the wrong state for an operation. + * + * @see LowpanInterface + * @hide + */ +// @SystemApi +public class WrongStateException extends LowpanException { + + public WrongStateException() {} + + public WrongStateException(String message) { + super(message); + } + + public WrongStateException(String message, Throwable cause) { + super(message, cause); + } + + protected WrongStateException(Exception cause) { + super(cause); + } +} diff --git a/lowpan/java/android/net/lowpan/package.html b/lowpan/java/android/net/lowpan/package.html new file mode 100644 index 0000000000000000000000000000000000000000..342e32eefc1e768f1017ade342c10ee1595f5a6a --- /dev/null +++ b/lowpan/java/android/net/lowpan/package.html @@ -0,0 +1,29 @@ + + +

        @SystemApi

        + +

        Provides classes to manage Low-power Wireless Personal Area Network (LoWPAN) functionality on the device. +Examples of such network technologies include Thread and +ZigBee IP.

        +

        The LoWPAN APIs provide a means by which applications can communicate +with the lower-level wireless stack that provides LoWPAN network access.

        + +

        Some APIs may require the following user permissions:

        +
          +
        • {@link android.Manifest.permission#ACCESS_LOWPAN_STATE}
        • +
        • {@link android.Manifest.permission#CHANGE_LOWPAN_STATE}
        • +
        • TBD
        • +
        + +

        Note: Not all Android-powered devices provide LoWPAN functionality. +If your application uses these APIs, declare so with a {@code } +element in the manifest file:

        +
        +<manifest ...>
        +    <uses-feature android:name="android.hardware.lowpan" />
        +    ...
        +</manifest>
        +
        + + diff --git a/lowpan/tests/Android.mk b/lowpan/tests/Android.mk new file mode 100644 index 0000000000000000000000000000000000000000..bb0a944b5e7d1d2a00e2c576b7984c706f4c8acb --- /dev/null +++ b/lowpan/tests/Android.mk @@ -0,0 +1,65 @@ +# Copyright (C) 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +LOCAL_PATH:= $(call my-dir) + +# Make test APK +# ============================================================ +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +# This list is generated from the java source files in this module +# The list is a comma separated list of class names with * matching zero or more characters. +# Example: +# Input files: src/com/android/server/lowpan/Test.java src/com/android/server/lowpan/AnotherTest.java +# Generated exclude list: com.android.server.lowpan.Test*,com.android.server.lowpan.AnotherTest* + +# Filter all src files to just java files +local_java_files := $(filter %.java,$(LOCAL_SRC_FILES)) +# Transform java file names into full class names. +# This only works if the class name matches the file name and the directory structure +# matches the package. +local_classes := $(subst /,.,$(patsubst src/%.java,%,$(local_java_files))) +# Utility variables to allow replacing a space with a comma +comma:= , +empty:= +space:= $(empty) $(empty) +# Convert class name list to jacoco exclude list +# This appends a * to all classes and replace the space separators with commas. +# These patterns will match all classes in this module and their inner classes. +jacoco_exclude := $(subst $(space),$(comma),$(patsubst %,%*,$(local_classes))) + +jacoco_include := android.net.lowpan.* + +LOCAL_JACK_COVERAGE_INCLUDE_FILTER := $(jacoco_include) +LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := $(jacoco_exclude) + +LOCAL_STATIC_JAVA_LIBRARIES := \ + android-support-test \ + guava \ + mockito-target-minus-junit4 \ + frameworks-base-testutils \ + +LOCAL_JAVA_LIBRARIES := \ + android.test.runner \ + +LOCAL_PACKAGE_NAME := FrameworksLowpanApiTests +LOCAL_COMPATIBILITY_SUITE := device-tests + +LOCAL_CERTIFICATE := platform +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk +include $(BUILD_PACKAGE) diff --git a/lowpan/tests/AndroidManifest.xml b/lowpan/tests/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..a21621423e410b7ea77849bb45b982b953c36be7 --- /dev/null +++ b/lowpan/tests/AndroidManifest.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/lowpan/tests/AndroidTest.xml b/lowpan/tests/AndroidTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..72ad050efaebc8c5236298ba6449207830690db5 --- /dev/null +++ b/lowpan/tests/AndroidTest.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/lowpan/tests/README.md b/lowpan/tests/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d0eed95739a32ef27d5875ce4cfe7a8cd507a605 --- /dev/null +++ b/lowpan/tests/README.md @@ -0,0 +1,50 @@ +# LoWPAN Unit Tests +This package contains unit tests for the android LoWPAN framework System APIs based on the +[Android Testing Support Library](http://developer.android.com/tools/testing-support-library/index.html). +The test cases are built using the [JUnit](http://junit.org/) and [Mockito](http://mockito.org/) +libraries. + +## Running Tests +The easiest way to run tests is simply run + +``` +frameworks/base/lowpan/tests/runtests.sh +``` + +`runtests.sh` will build the test project and all of its dependencies and push the APK to the +connected device. It will then run the tests on the device. + +To pick up changes in framework/base, you will need to: +1. rebuild the framework library 'make -j32' +2. sync over the updated library to the device 'adb sync' +3. restart framework on the device 'adb shell stop' then 'adb shell start' + +To enable syncing data to the device for first time after clean reflash: +1. adb disable-verity +2. adb reboot +3. adb remount + +See below for a few example of options to limit which tests are run. +See the +[AndroidJUnitRunner Documentation](https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html) +for more details on the supported options. + +``` +runtests.sh -e package android.net.lowpan +runtests.sh -e class android.net.lowpan.LowpanManagerTest +``` + +If you manually build and push the test APK to the device you can run tests using + +``` +adb shell am instrument -w 'android.net.wifi.test/android.support.test.runner.AndroidJUnitRunner' +``` + +## Adding Tests +Tests can be added by adding classes to the src directory. JUnit4 style test cases can +be written by simply annotating test methods with `org.junit.Test`. + +## Debugging Tests +If you are trying to debug why tests are not doing what you expected, you can add android log +statements and use logcat to view them. The beginning and end of every tests is automatically logged +with the tag `TestRunner`. diff --git a/lowpan/tests/runtests.sh b/lowpan/tests/runtests.sh new file mode 100755 index 0000000000000000000000000000000000000000..040f4f0492e90445ca68982d8ca67ffde07d19c3 --- /dev/null +++ b/lowpan/tests/runtests.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if [ -z $ANDROID_BUILD_TOP ]; then + echo "You need to source and lunch before you can use this script" + exit 1 +fi + +echo "Running tests" + +set -e # fail early + +echo "+ mmma -j32 $ANDROID_BUILD_TOP/frameworks/base/lowpan/tests" +# NOTE Don't actually run the command above since this shell doesn't inherit functions from the +# caller. +make -j32 -C $ANDROID_BUILD_TOP -f build/core/main.mk MODULES-IN-frameworks-base-lowpan-tests + +set -x # print commands + +adb root +adb wait-for-device + +adb install -r -g "$OUT/data/app/FrameworksLowpanApiTests/FrameworksLowpanApiTests.apk" + +adb shell am instrument -w "$@" 'android.net.lowpan.test/android.support.test.runner.AndroidJUnitRunner' diff --git a/lowpan/tests/src/android/net/lowpan/LowpanInterfaceTest.java b/lowpan/tests/src/android/net/lowpan/LowpanInterfaceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a495d3d7a7848bf4f85588aba17be306cbfecf60 --- /dev/null +++ b/lowpan/tests/src/android/net/lowpan/LowpanInterfaceTest.java @@ -0,0 +1,89 @@ +/* + * 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.lowpan; + +import static org.mockito.Mockito.*; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.os.Handler; +import android.os.IBinder; +import android.os.test.TestLooper; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; +import java.util.Map; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +/** Unit tests for android.net.lowpan.LowpanInterface. */ +@RunWith(AndroidJUnit4.class) +@SmallTest +public class LowpanInterfaceTest { + private static final String TEST_PACKAGE_NAME = "TestPackage"; + + @Mock Context mContext; + @Mock ILowpanInterface mLowpanInterfaceService; + @Mock IBinder mLowpanInterfaceBinder; + @Mock ApplicationInfo mApplicationInfo; + @Mock IBinder mAppBinder; + @Mock LowpanInterface.Callback mLowpanInterfaceCallback; + + private Handler mHandler; + private final TestLooper mTestLooper = new TestLooper(); + private ILowpanInterfaceListener mInterfaceListener; + private LowpanInterface mLowpanInterface; + private Map mPropertyMap; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + when(mContext.getApplicationInfo()).thenReturn(mApplicationInfo); + when(mContext.getOpPackageName()).thenReturn(TEST_PACKAGE_NAME); + when(mLowpanInterfaceService.getName()).thenReturn("wpan0"); + when(mLowpanInterfaceService.asBinder()).thenReturn(mLowpanInterfaceBinder); + + mLowpanInterface = + new LowpanInterface(mContext, mLowpanInterfaceService, mTestLooper.getLooper()); + } + + @Test + public void testStateChangedCallback() throws Exception { + // Register our callback + mLowpanInterface.registerCallback(mLowpanInterfaceCallback); + + // Verify a listener was added + verify(mLowpanInterfaceService) + .addListener( + argThat( + listener -> { + mInterfaceListener = listener; + return listener instanceof ILowpanInterfaceListener; + })); + + // Change some properties + mInterfaceListener.onStateChanged(LowpanInterface.STATE_OFFLINE); + mTestLooper.dispatchAll(); + + // Verify that the property was changed + verify(mLowpanInterfaceCallback) + .onStateChanged( + argThat(stateString -> stateString.equals(LowpanInterface.STATE_OFFLINE))); + } +} diff --git a/lowpan/tests/src/android/net/lowpan/LowpanManagerTest.java b/lowpan/tests/src/android/net/lowpan/LowpanManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3dd7504d83327b2355af4b43ad52435228488985 --- /dev/null +++ b/lowpan/tests/src/android/net/lowpan/LowpanManagerTest.java @@ -0,0 +1,175 @@ +/* + * 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.lowpan; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.*; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.os.Handler; +import android.os.IBinder; +import android.os.test.TestLooper; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +/** Unit tests for android.net.lowpan.LowpanManager. */ +@RunWith(AndroidJUnit4.class) +@SmallTest +public class LowpanManagerTest { + private static final String TEST_PACKAGE_NAME = "TestPackage"; + + @Mock Context mContext; + @Mock ILowpanManager mLowpanService; + @Mock ILowpanInterface mLowpanInterfaceService; + @Mock IBinder mLowpanInterfaceBinder; + @Mock ApplicationInfo mApplicationInfo; + @Mock IBinder mAppBinder; + @Mock LowpanManager.Callback mLowpanManagerCallback; + + private Handler mHandler; + private final TestLooper mTestLooper = new TestLooper(); + private LowpanManager mLowpanManager; + + private ILowpanManagerListener mManagerListener; + private LowpanInterface mLowpanInterface; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + when(mContext.getApplicationInfo()).thenReturn(mApplicationInfo); + when(mContext.getOpPackageName()).thenReturn(TEST_PACKAGE_NAME); + + mLowpanManager = new LowpanManager(mContext, mLowpanService, mTestLooper.getLooper()); + } + + @Test + public void testGetEmptyInterfaceList() throws Exception { + when(mLowpanService.getInterfaceList()).thenReturn(new String[0]); + assertTrue(mLowpanManager.getInterfaceList().length == 0); + assertTrue(mLowpanManager.getInterface() == null); + } + + @Test + public void testGetInterfaceList() throws Exception { + when(mLowpanService.getInterfaceList()).thenReturn(new String[] {"wpan0"}); + when(mLowpanService.getInterface("wpan0")).thenReturn(mLowpanInterfaceService); + when(mLowpanInterfaceService.getName()).thenReturn("wpan0"); + when(mLowpanInterfaceService.asBinder()).thenReturn(mLowpanInterfaceBinder); + assertEquals(mLowpanManager.getInterfaceList().length, 1); + + LowpanInterface iface = mLowpanManager.getInterface(); + assertNotNull(iface); + assertEquals(iface.getName(), "wpan0"); + } + + @Test + public void testRegisterCallback() throws Exception { + when(mLowpanInterfaceService.getName()).thenReturn("wpan0"); + when(mLowpanInterfaceService.asBinder()).thenReturn(mLowpanInterfaceBinder); + + // Register our callback + mLowpanManager.registerCallback(mLowpanManagerCallback); + + // Verify a listener was added + verify(mLowpanService) + .addListener( + argThat( + listener -> { + mManagerListener = listener; + return listener instanceof ILowpanManagerListener; + })); + + // Add an interface + mManagerListener.onInterfaceAdded(mLowpanInterfaceService); + mTestLooper.dispatchAll(); + + // Verify that the interface was added + verify(mLowpanManagerCallback) + .onInterfaceAdded( + argThat( + iface -> { + mLowpanInterface = iface; + return iface instanceof LowpanInterface; + })); + verifyNoMoreInteractions(mLowpanManagerCallback); + + // This check causes the test to fail with a weird error, but I'm not sure why. + assertEquals(mLowpanInterface.getService(), mLowpanInterfaceService); + + // Verify that calling getInterface on the LowpanManager object will yield the same + // LowpanInterface object. + when(mLowpanService.getInterfaceList()).thenReturn(new String[] {"wpan0"}); + when(mLowpanService.getInterface("wpan0")).thenReturn(mLowpanInterfaceService); + assertEquals(mLowpanManager.getInterface(), mLowpanInterface); + + // Remove the service + mManagerListener.onInterfaceRemoved(mLowpanInterfaceService); + mTestLooper.dispatchAll(); + + // Verify that the interface was removed + verify(mLowpanManagerCallback).onInterfaceRemoved(mLowpanInterface); + } + + @Test + public void testUnregisterCallback() throws Exception { + when(mLowpanInterfaceService.getName()).thenReturn("wpan0"); + when(mLowpanInterfaceService.asBinder()).thenReturn(mLowpanInterfaceBinder); + + // Register our callback + mLowpanManager.registerCallback(mLowpanManagerCallback); + + // Verify a listener was added + verify(mLowpanService) + .addListener( + argThat( + listener -> { + mManagerListener = listener; + return listener instanceof ILowpanManagerListener; + })); + + // Add an interface + mManagerListener.onInterfaceAdded(mLowpanInterfaceService); + mTestLooper.dispatchAll(); + + // Verify that the interface was added + verify(mLowpanManagerCallback) + .onInterfaceAdded( + argThat( + iface -> { + mLowpanInterface = iface; + return iface instanceof LowpanInterface; + })); + verifyNoMoreInteractions(mLowpanManagerCallback); + + // Unregister our callback + mLowpanManager.unregisterCallback(mLowpanManagerCallback); + + // Verify the listener was removed + verify(mLowpanService).removeListener(mManagerListener); + + // Verify that the callback wasn't invoked. + verifyNoMoreInteractions(mLowpanManagerCallback); + } +} diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index f4039889adedf0b39987c80c12496629fad7eb46..3b9a5de0070794bbbfe93a54eaf54a87c52d7ff2 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -842,8 +842,8 @@ public final class AudioAttributes implements Parcelable { @Override public String toString () { return new String("AudioAttributes:" - + " usage=" + mUsage - + " content=" + mContentType + + " usage=" + usageToString() + + " content=" + contentTypeToString() + " flags=0x" + Integer.toHexString(mFlags).toUpperCase() + " tags=" + mFormattedTags + " bundle=" + (mBundle == null ? "null" : mBundle.toString())); @@ -894,6 +894,19 @@ public final class AudioAttributes implements Parcelable { } } + /** @hide */ + public String contentTypeToString() { + switch(mContentType) { + case CONTENT_TYPE_UNKNOWN: + return new String("CONTENT_TYPE_UNKNOWN"); + case CONTENT_TYPE_SPEECH: return new String("CONTENT_TYPE_SPEECH"); + case CONTENT_TYPE_MUSIC: return new String("CONTENT_TYPE_MUSIC"); + case CONTENT_TYPE_MOVIE: return new String("CONTENT_TYPE_MOVIE"); + case CONTENT_TYPE_SONIFICATION: return new String("CONTENT_TYPE_SONIFICATION"); + default: return new String("unknown content type " + mContentType); + } + } + private static int usageForStreamType(int streamType) { switch(streamType) { case AudioSystem.STREAM_VOICE_CALL: diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index 81cc93da2e6fee06fc1967fd7a70967ce44da8e8..93fc3da5455043f14e678dd5eeae37bf73187ea3 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -267,6 +267,42 @@ public final class AudioFormat implements Parcelable { **/ public static final int ENCODING_DOLBY_TRUEHD = 14; + /** @hide */ + public static String toLogFriendlyEncoding(int enc) { + switch(enc) { + case ENCODING_INVALID: + return "ENCODING_INVALID"; + case ENCODING_PCM_16BIT: + return "ENCODING_PCM_16BIT"; + case ENCODING_PCM_8BIT: + return "ENCODING_PCM_8BIT"; + case ENCODING_PCM_FLOAT: + return "ENCODING_PCM_FLOAT"; + case ENCODING_AC3: + return "ENCODING_AC3"; + case ENCODING_E_AC3: + return "ENCODING_E_AC3"; + case ENCODING_DTS: + return "ENCODING_DTS"; + case ENCODING_DTS_HD: + return "ENCODING_DTS_HD"; + case ENCODING_MP3: + return "ENCODING_MP3"; + case ENCODING_AAC_LC: + return "ENCODING_AAC_LC"; + case ENCODING_AAC_HE_V1: + return "ENCODING_AAC_HE_V1"; + case ENCODING_AAC_HE_V2: + return "ENCODING_AAC_HE_V2"; + case ENCODING_IEC61937: + return "ENCODING_IEC61937"; + case ENCODING_DOLBY_TRUEHD: + return "ENCODING_DOLBY_TRUEHD"; + default : + return "invalid encoding " + enc; + } + } + /** Invalid audio channel configuration */ /** @deprecated Use {@link #CHANNEL_INVALID} instead. */ @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; @@ -693,6 +729,12 @@ public final class AudioFormat implements Parcelable { return mPropertySetMask; } + /** @hide */ + public String toLogFriendlyString() { + return String.format("%dch %dHz %s", + getChannelCount(), mSampleRate, toLogFriendlyEncoding(mEncoding)); + } + /** * Builder class for {@link AudioFormat} objects. * Use this class to configure and create an AudioFormat instance. By setting format diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 05be088fb2ac422ca45ae9cbbccec53c69f65e8b..3df17068725e36ad90ad43fc68e7ddccdda1fa69 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -16,12 +16,12 @@ package android.media; -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.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; import android.app.NotificationManager; @@ -397,6 +397,19 @@ public class AudioManager { */ public static final int ADJUST_TOGGLE_MUTE = 101; + /** @hide */ + public static final String adjustToString(int adj) { + switch (adj) { + case ADJUST_RAISE: return "ADJUST_RAISE"; + case ADJUST_LOWER: return "ADJUST_LOWER"; + case ADJUST_SAME: return "ADJUST_SAME"; + case ADJUST_MUTE: return "ADJUST_MUTE"; + case ADJUST_UNMUTE: return "ADJUST_UNMUTE"; + case ADJUST_TOGGLE_MUTE: return "ADJUST_TOGGLE_MUTE"; + default: return new StringBuilder("unknown adjust mode ").append(adj).toString(); + } + } + // Flags should be powers of 2! /** @@ -2364,8 +2377,8 @@ public class AudioManager { * usecases such as voice memo recording, or speech recognition. * Use {@link #AUDIOFOCUS_GAIN} for a focus request of unknown duration such * as the playback of a song or a video. - * @param flags 0 or a combination of {link #AUDIOFOCUS_FLAG_DELAY_OK} - * and {@link #AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS}. + * @param flags 0 or a combination of {link #AUDIOFOCUS_FLAG_DELAY_OK}, + * {@link #AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS} and {@link #AUDIOFOCUS_FLAG_LOCK}. *
        Use 0 when not using any flags for the request, which behaves like * {@link #requestAudioFocus(OnAudioFocusChangeListener, int, int)}, where either audio * focus is granted immediately, or the grant request fails because the system is in a @@ -2377,6 +2390,7 @@ public class AudioManager { * @throws IllegalArgumentException */ @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(OnAudioFocusChangeListener l, @NonNull AudioAttributes requestAttributes, int durationHint, @@ -2416,6 +2430,10 @@ public class AudioManager { * @deprecated use {@link #requestAudioFocus(AudioFocusRequest, AudioPolicy)} */ @SystemApi + @RequiresPermission(anyOf= { + android.Manifest.permission.MODIFY_PHONE_STATE, + android.Manifest.permission.MODIFY_AUDIO_ROUTING + }) public int requestAudioFocus(OnAudioFocusChangeListener l, @NonNull AudioAttributes requestAttributes, int durationHint, @@ -2474,6 +2492,7 @@ public class AudioManager { * @throws IllegalArgumentException when trying to lock focus without an AudioPolicy */ @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int requestAudioFocus(@NonNull AudioFocusRequest afr, @Nullable AudioPolicy ap) { if (afr == null) { throw new NullPointerException("Illegal null AudioFocusRequest"); @@ -2571,6 +2590,7 @@ public class AudioManager { * @throws NullPointerException if the {@link AudioFocusInfo} or {@link AudioPolicy} are null. */ @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull AudioFocusInfo afi, int focusChange, @NonNull AudioPolicy ap) { if (afi == null) { @@ -2622,6 +2642,8 @@ public class AudioManager { * @deprecated use {@link #abandonAudioFocusRequest(AudioFocusRequest)} */ @SystemApi + @SuppressLint("Doclava125") // no permission enforcement, but only "undoes" what would have been + // done by a matching requestAudioFocus public int abandonAudioFocus(OnAudioFocusChangeListener l, AudioAttributes aa) { int status = AUDIOFOCUS_REQUEST_FAILED; unregisterAudioFocusRequest(l); @@ -3036,7 +3058,11 @@ public class AudioManager { private final IPlaybackConfigDispatcher mPlayCb = new IPlaybackConfigDispatcher.Stub() { @Override - public void dispatchPlaybackConfigChange(List configs) { + public void dispatchPlaybackConfigChange(List configs, + boolean flush) { + if (flush) { + Binder.flushPendingCommands(); + } synchronized(mPlaybackCallbackLock) { if (mPlaybackCallbackList != null) { for (int i=0 ; i < mPlaybackCallbackList.size() ; i++) { @@ -3833,6 +3859,7 @@ public class AudioManager { * @hide */ @SystemApi + @SuppressLint("Doclava125") // FIXME is this still used? public boolean isHdmiSystemAudioSupported() { try { return getService().isHdmiSystemAudioSupported(); diff --git a/media/java/android/media/AudioManagerInternal.java b/media/java/android/media/AudioManagerInternal.java index 2b5ac5e6ec203f231be7e33c765b5706f8e56ad6..0a1de33b845b8f6c42a32834264d2b33ec26fe55 100644 --- a/media/java/android/media/AudioManagerInternal.java +++ b/media/java/android/media/AudioManagerInternal.java @@ -59,15 +59,4 @@ public abstract class AudioManagerInternal { int getRingerModeAffectedStreams(int streams); } - - /** - * Disable or restore the ability to play audio for a given UID. - * When a UID isn't meant to be tracked anymore (e.g. client died), re-enable audio for this UID - * to prevent disabling audio for future UIDs that would reuse the same value. - * This operation is asynchronous. - * @param disable when true, prevents playback of audio streams from the given uid. If false, - * restores the ability to play, or no-op if playback hadn't been disabled before. - * @param uid the client UID whose ability to play will be affected. - */ - public abstract void disableAudioForUid(boolean disable, int uid); } diff --git a/media/java/android/media/AudioPlaybackConfiguration.java b/media/java/android/media/AudioPlaybackConfiguration.java index 14bc5551ba49199e34608e671c4879a8cb3f9476..8a36f91cfff667dc181e9de190144213de8c61fc 100644 --- a/media/java/android/media/AudioPlaybackConfiguration.java +++ b/media/java/android/media/AudioPlaybackConfiguration.java @@ -212,8 +212,10 @@ public final class AudioPlaybackConfiguration implements Parcelable { * @hide */ public void init() { - if (mIPlayerShell != null) { - mIPlayerShell.monitorDeath(); + synchronized (this) { + if (mIPlayerShell != null) { + mIPlayerShell.monitorDeath(); + } } } @@ -322,7 +324,11 @@ public final class AudioPlaybackConfiguration implements Parcelable { */ @SystemApi public PlayerProxy getPlayerProxy() { - return mIPlayerShell == null ? null : new PlayerProxy(this); + final IPlayerShell ips; + synchronized (this) { + ips = mIPlayerShell; + } + return ips == null ? null : new PlayerProxy(this); } /** @@ -330,7 +336,11 @@ public final class AudioPlaybackConfiguration implements Parcelable { * @return the IPlayer interface for the associated player */ IPlayer getIPlayer() { - return mIPlayerShell == null ? null : mIPlayerShell.getIPlayer(); + final IPlayerShell ips; + synchronized (this) { + ips = mIPlayerShell; + } + return ips == null ? null : ips.getIPlayer(); } /** @@ -351,10 +361,14 @@ public final class AudioPlaybackConfiguration implements Parcelable { * @return true if the state changed, false otherwise */ public boolean handleStateEvent(int event) { - final boolean changed = (mPlayerState != event); - mPlayerState = event; - if ((event == PLAYER_STATE_RELEASED) && (mIPlayerShell != null)) { - mIPlayerShell.release(); + final boolean changed; + synchronized (this) { + changed = (mPlayerState != event); + mPlayerState = event; + if (changed && (event == PLAYER_STATE_RELEASED) && (mIPlayerShell != null)) { + mIPlayerShell.release(); + mIPlayerShell = null; + } } return changed; } @@ -447,7 +461,11 @@ public final class AudioPlaybackConfiguration implements Parcelable { dest.writeInt(mClientPid); dest.writeInt(mPlayerState); mPlayerAttr.writeToParcel(dest, 0); - dest.writeStrongInterface(mIPlayerShell == null ? null : mIPlayerShell.getIPlayer()); + final IPlayerShell ips; + synchronized (this) { + ips = mIPlayerShell; + } + dest.writeStrongInterface(ips == null ? null : ips.getIPlayer()); } private AudioPlaybackConfiguration(Parcel in) { @@ -479,14 +497,17 @@ public final class AudioPlaybackConfiguration implements Parcelable { static final class IPlayerShell implements IBinder.DeathRecipient { final AudioPlaybackConfiguration mMonitor; // never null - private IPlayer mIPlayer; + private volatile IPlayer mIPlayer; IPlayerShell(@NonNull AudioPlaybackConfiguration monitor, @NonNull IPlayer iplayer) { mMonitor = monitor; mIPlayer = iplayer; } - void monitorDeath() { + synchronized void monitorDeath() { + if (mIPlayer == null) { + return; + } try { mIPlayer.asBinder().linkToDeath(this, 0); } catch (RemoteException e) { @@ -509,8 +530,13 @@ public final class AudioPlaybackConfiguration implements Parcelable { } else if (DEBUG) { Log.i(TAG, "IPlayerShell binderDied"); } } - void release() { + synchronized void release() { + if (mIPlayer == null) { + return; + } mIPlayer.asBinder().unlinkToDeath(this, 0); + mIPlayer = null; + Binder.flushPendingCommands(); } } @@ -532,7 +558,7 @@ public final class AudioPlaybackConfiguration implements Parcelable { case PLAYER_TYPE_HW_SOURCE: return "hardware source"; case PLAYER_TYPE_EXTERNAL_PROXY: return "external proxy"; default: - return "unknown player type - FIXME"; + return "unknown player type " + type + " - FIXME"; } } diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java index 50dbd035b84da2a2bebbeb4916361ea215d2e3c0..984c5542cb7be98d6884f3c5146ff25616ef66ab 100644 --- a/media/java/android/media/AudioRecordingConfiguration.java +++ b/media/java/android/media/AudioRecordingConfiguration.java @@ -17,10 +17,12 @@ package android.media; import android.annotation.IntDef; +import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; +import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; @@ -52,18 +54,59 @@ public final class AudioRecordingConfiguration implements Parcelable { private final AudioFormat mDeviceFormat; private final AudioFormat mClientFormat; + @NonNull private final String mClientPackageName; + private final int mClientUid; + private final int mPatchHandle; /** * @hide */ - public AudioRecordingConfiguration(int session, int source, AudioFormat clientFormat, - AudioFormat devFormat, int patchHandle) { + public AudioRecordingConfiguration(int uid, int session, int source, AudioFormat clientFormat, + AudioFormat devFormat, int patchHandle, String packageName) { + mClientUid = uid; mSessionId = session; mClientSource = source; mClientFormat = clientFormat; mDeviceFormat = devFormat; mPatchHandle = patchHandle; + mClientPackageName = packageName; + } + + /** + * @hide + * For AudioService dump + * @param pw + */ + public void dump(PrintWriter pw) { + pw.println(" " + toLogFriendlyString(this)); + } + + /** + * @hide + */ + public static String toLogFriendlyString(AudioRecordingConfiguration arc) { + return new String("session:" + arc.mSessionId + + " -- source:" + MediaRecorder.toLogFriendlyAudioSource(arc.mClientSource) + + " -- uid:" + arc.mClientUid + + " -- patch:" + arc.mPatchHandle + + " -- pack:" + arc.mClientPackageName + + " -- format client=" + arc.mClientFormat.toLogFriendlyString() + + ", dev=" + arc.mDeviceFormat.toLogFriendlyString()); + } + + // Note that this method is called server side, so no "privileged" information is ever sent + // to a client that is not supposed to have access to it. + /** + * @hide + * Creates a copy of the recording configuration that is stripped of any data enabling + * identification of which application it is associated with ("anonymized"). + * @param in + */ + public static AudioRecordingConfiguration anonymizedCopy(AudioRecordingConfiguration in) { + return new AudioRecordingConfiguration( /*anonymized uid*/ -1, + in.mSessionId, in.mClientSource, in.mClientFormat, + in.mDeviceFormat, in.mPatchHandle, "" /*empty package name*/); } // matches the sources that return false in MediaRecorder.isSystemOnlyAudioSource(source) @@ -119,6 +162,30 @@ public final class AudioRecordingConfiguration implements Parcelable { */ public AudioFormat getClientFormat() { return mClientFormat; } + /** + * @pending for SystemApi + * Returns the package name of the application performing the recording. + * Where there are multiple packages sharing the same user id through the "sharedUserId" + * mechanism, only the first one with that id will be returned + * (see {@link PackageManager#getPackagesForUid(int)}). + *

        This information is only available if the caller has the + * {@link android.Manifest.permission.MODIFY_AUDIO_ROUTING} permission. + *
        When called without the permission, the result is an empty string. + * @return the package name + */ + public String getClientPackageName() { return mClientPackageName; } + + /** + * @pending for SystemApi + * Returns the user id of the application performing the recording. + *

        This information is only available if the caller has the + * {@link android.Manifest.permission.MODIFY_AUDIO_ROUTING} + * permission. + *
        The result is -1 without the permission. + * @return the user id + */ + public int getClientUid() { return mClientUid; } + /** * Returns information about the audio input device used for this recording. * @return the audio recording device or null if this information cannot be retrieved @@ -185,6 +252,8 @@ public final class AudioRecordingConfiguration implements Parcelable { mClientFormat.writeToParcel(dest, 0); mDeviceFormat.writeToParcel(dest, 0); dest.writeInt(mPatchHandle); + dest.writeString(mClientPackageName); + dest.writeInt(mClientUid); } private AudioRecordingConfiguration(Parcel in) { @@ -193,6 +262,8 @@ public final class AudioRecordingConfiguration implements Parcelable { mClientFormat = AudioFormat.CREATOR.createFromParcel(in); mDeviceFormat = AudioFormat.CREATOR.createFromParcel(in); mPatchHandle = in.readInt(); + mClientPackageName = in.readString(); + mClientUid = in.readInt(); } @Override @@ -202,10 +273,12 @@ public final class AudioRecordingConfiguration implements Parcelable { AudioRecordingConfiguration that = (AudioRecordingConfiguration) o; - return ((mSessionId == that.mSessionId) + return ((mClientUid == that.mClientUid) + && (mSessionId == that.mSessionId) && (mClientSource == that.mClientSource) && (mPatchHandle == that.mPatchHandle) && (mClientFormat.equals(that.mClientFormat)) - && (mDeviceFormat.equals(that.mDeviceFormat))); + && (mDeviceFormat.equals(that.mDeviceFormat)) + && (mClientPackageName.equals(that.mClientPackageName))); } } diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index ea4d8024911dcf82d7ea54cf363c664b2394eb11..e56944dff7826621fe2675af24c5b695a0d5f352 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -113,6 +113,17 @@ public class AudioSystem public static final int MODE_IN_COMMUNICATION = 3; public static final int NUM_MODES = 4; + public static String modeToString(int mode) { + switch (mode) { + case MODE_CURRENT: return "MODE_CURRENT"; + case MODE_IN_CALL: return "MODE_IN_CALL"; + case MODE_IN_COMMUNICATION: return "MODE_IN_COMMUNICATION"; + case MODE_INVALID: return "MODE_INVALID"; + case MODE_NORMAL: return "MODE_NORMAL"; + case MODE_RINGTONE: return "MODE_RINGTONE"; + default: return "unknown mode (" + mode + ")"; + } + } /* Routing bits for the former setRouting/getRouting API */ /** @deprecated */ @@ -287,6 +298,7 @@ public class AudioSystem /** * Callback for recording activity notifications events * @param event + * @param uid uid of the client app performing the recording * @param session * @param source * @param recordingFormat an array of ints containing respectively the client and device @@ -298,9 +310,10 @@ public class AudioSystem * 4: device channel mask * 5: device sample rate * 6: patch handle + * @param packName package name of the client app performing the recording. NOT SUPPORTED */ - void onRecordingConfigurationChanged(int event, int session, int source, - int[] recordingFormat); + void onRecordingConfigurationChanged(int event, int uid, int session, int source, + int[] recordingFormat, String packName); } private static AudioRecordingCallback sRecordingCallback; @@ -318,17 +331,18 @@ public class AudioSystem * @param session * @param source * @param recordingFormat see - * {@link AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int[])} for - * the description of the record format. + * {@link AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int, int[])} + * for the description of the record format. */ - private static void recordingCallbackFromNative(int event, int session, int source, + private static void recordingCallbackFromNative(int event, int uid, int session, int source, int[] recordingFormat) { AudioRecordingCallback cb = null; synchronized (AudioSystem.class) { cb = sRecordingCallback; } if (cb != null) { - cb.onRecordingConfigurationChanged(event, session, source, recordingFormat); + // TODO receive package name from native + cb.onRecordingConfigurationChanged(event, uid, session, source, recordingFormat, ""); } } @@ -495,6 +509,14 @@ public class AudioSystem public static final int DEVICE_STATE_AVAILABLE = 1; private static final int NUM_DEVICE_STATES = 1; + public static String deviceStateToString(int state) { + switch (state) { + case DEVICE_STATE_UNAVAILABLE: return "DEVICE_STATE_UNAVAILABLE"; + case DEVICE_STATE_AVAILABLE: return "DEVICE_STATE_AVAILABLE"; + default: return "unknown state (" + state + ")"; + } + } + public static final String DEVICE_OUT_EARPIECE_NAME = "earpiece"; public static final String DEVICE_OUT_SPEAKER_NAME = "speaker"; public static final String DEVICE_OUT_WIRED_HEADSET_NAME = "headset"; @@ -690,6 +712,27 @@ public class AudioSystem public static final int NUM_FORCE_CONFIG = 15; public static final int FORCE_DEFAULT = FORCE_NONE; + public static String forceUseConfigToString(int config) { + switch (config) { + case FORCE_NONE: return "FORCE_NONE"; + case FORCE_SPEAKER: return "FORCE_SPEAKER"; + case FORCE_HEADPHONES: return "FORCE_HEADPHONES"; + case FORCE_BT_SCO: return "FORCE_BT_SCO"; + case FORCE_BT_A2DP: return "FORCE_BT_A2DP"; + case FORCE_WIRED_ACCESSORY: return "FORCE_WIRED_ACCESSORY"; + case FORCE_BT_CAR_DOCK: return "FORCE_BT_CAR_DOCK"; + case FORCE_BT_DESK_DOCK: return "FORCE_BT_DESK_DOCK"; + case FORCE_ANALOG_DOCK: return "FORCE_ANALOG_DOCK"; + case FORCE_DIGITAL_DOCK: return "FORCE_DIGITAL_DOCK"; + case FORCE_NO_BT_A2DP: return "FORCE_NO_BT_A2DP"; + case FORCE_SYSTEM_ENFORCED: return "FORCE_SYSTEM_ENFORCED"; + case FORCE_HDMI_SYSTEM_AUDIO_ENFORCED: return "FORCE_HDMI_SYSTEM_AUDIO_ENFORCED"; + case FORCE_ENCODED_SURROUND_NEVER: return "FORCE_ENCODED_SURROUND_NEVER"; + case FORCE_ENCODED_SURROUND_ALWAYS: return "FORCE_ENCODED_SURROUND_ALWAYS"; + default: return "unknown config (" + config + ")" ; + } + } + // usage for setForceUse, must match audio_policy_force_use_t public static final int FOR_COMMUNICATION = 0; public static final int FOR_MEDIA = 1; @@ -700,6 +743,19 @@ public class AudioSystem public static final int FOR_ENCODED_SURROUND = 6; private static final int NUM_FORCE_USE = 7; + public static String forceUseUsageToString(int usage) { + switch (usage) { + case FOR_COMMUNICATION: return "FOR_COMMUNICATION"; + case FOR_MEDIA: return "FOR_MEDIA"; + case FOR_RECORD: return "FOR_RECORD"; + case FOR_DOCK: return "FOR_DOCK"; + case FOR_SYSTEM: return "FOR_SYSTEM"; + case FOR_HDMI_SYSTEM_AUDIO: return "FOR_HDMI_SYSTEM_AUDIO"; + case FOR_ENCODED_SURROUND: return "FOR_ENCODED_SURROUND"; + default: return "unknown usage (" + usage + ")" ; + } + } + // usage for AudioRecord.startRecordingSync(), must match AudioSystem::sync_event_t public static final int SYNC_EVENT_NONE = 0; public static final int SYNC_EVENT_PRESENTATION_COMPLETE = 1; diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index bf5939fa173742b5a202cb5d38b3418f5363f31f..50145f8a988611cb0402afd7b845352308a3e183 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -276,6 +276,9 @@ public class AudioTrack extends PlayerBase private static final int AUDIO_OUTPUT_FLAG_FAST = 0x4; private static final int AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 0x8; + // Size of HW_AV_SYNC track AV header. + private static final float HEADER_V2_SIZE_BYTES = 20.0f; + //-------------------------------------------------------------------------- // Member variables //-------------------- @@ -364,6 +367,10 @@ public class AudioTrack extends PlayerBase * HW_AV_SYNC track audio data bytes remaining to write after current AV sync header */ private int mAvSyncBytesRemaining = 0; + /** + * Offset of the first sample of the audio in byte from start of HW_AV_SYNC track AV header. + */ + private int mOffset = 0; //-------------------------------- // Used exclusively by native code @@ -603,6 +610,16 @@ public class AudioTrack extends PlayerBase mSampleRate = sampleRate[0]; mSessionId = session[0]; + if ((mAttributes.getFlags() & AudioAttributes.FLAG_HW_AV_SYNC) != 0) { + int frameSizeInBytes; + if (AudioFormat.isEncodingLinearFrames(mAudioFormat)) { + frameSizeInBytes = mChannelCount * AudioFormat.getBytesPerSample(mAudioFormat); + } else { + frameSizeInBytes = 1; + } + mOffset = ((int) Math.ceil(HEADER_V2_SIZE_BYTES / frameSizeInBytes)) * frameSizeInBytes; + } + if (mDataLoadMode == MODE_STATIC) { mState = STATE_NO_STATIC_DATA; } else { @@ -2520,14 +2537,15 @@ public class AudioTrack extends PlayerBase // create timestamp header if none exists if (mAvSyncHeader == null) { - mAvSyncHeader = ByteBuffer.allocate(16); + mAvSyncHeader = ByteBuffer.allocate(mOffset); mAvSyncHeader.order(ByteOrder.BIG_ENDIAN); - mAvSyncHeader.putInt(0x55550001); + mAvSyncHeader.putInt(0x55550002); } if (mAvSyncBytesRemaining == 0) { mAvSyncHeader.putInt(4, sizeInBytes); mAvSyncHeader.putLong(8, timestamp); + mAvSyncHeader.putInt(16, mOffset); mAvSyncHeader.position(0); mAvSyncBytesRemaining = sizeInBytes; } diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index 0a611481284b7dad5c5b4a85fa42810271f423eb..bf3a3b9b07bbd9fa31d71159a9e45540a3326426 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -442,6 +442,10 @@ public class ExifInterface { private static final int RAF_INFO_SIZE = 160; private static final int RAF_JPEG_LENGTH_VALUE_SIZE = 4; + private static final byte[] HEIF_TYPE_FTYP = new byte[] {'f', 't', 'y', 'p'}; + private static final byte[] HEIF_BRAND_MIF1 = new byte[] {'m', 'i', 'f', '1'}; + private static final byte[] HEIF_BRAND_HEIC = new byte[] {'h', 'e', 'i', 'c'}; + // See http://fileformats.archiveteam.org/wiki/Olympus_ORF private static final short ORF_SIGNATURE_1 = 0x4f52; private static final short ORF_SIGNATURE_2 = 0x5352; @@ -1264,6 +1268,7 @@ public class ExifInterface { private static final int IMAGE_TYPE_RAF = 9; private static final int IMAGE_TYPE_RW2 = 10; private static final int IMAGE_TYPE_SRW = 11; + private static final int IMAGE_TYPE_HEIF = 12; static { sFormatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss"); @@ -1691,6 +1696,10 @@ public class ExifInterface { getRafAttributes(inputStream); break; } + case IMAGE_TYPE_HEIF: { + getHeifAttributes(inputStream); + break; + } case IMAGE_TYPE_ORF: { getOrfAttributes(inputStream); break; @@ -2101,14 +2110,14 @@ public class ExifInterface { private int getMimeType(BufferedInputStream in) throws IOException { in.mark(SIGNATURE_CHECK_SIZE); byte[] signatureCheckBytes = new byte[SIGNATURE_CHECK_SIZE]; - if (in.read(signatureCheckBytes) != SIGNATURE_CHECK_SIZE) { - throw new EOFException(); - } + in.read(signatureCheckBytes); in.reset(); if (isJpegFormat(signatureCheckBytes)) { return IMAGE_TYPE_JPEG; } else if (isRafFormat(signatureCheckBytes)) { return IMAGE_TYPE_RAF; + } else if (isHeifFormat(signatureCheckBytes)) { + return IMAGE_TYPE_HEIF; } else if (isOrfFormat(signatureCheckBytes)) { return IMAGE_TYPE_ORF; } else if (isRw2Format(signatureCheckBytes)) { @@ -2147,6 +2156,78 @@ public class ExifInterface { return true; } + private boolean isHeifFormat(byte[] signatureCheckBytes) throws IOException { + ByteOrderedDataInputStream signatureInputStream = null; + try { + signatureInputStream = new ByteOrderedDataInputStream(signatureCheckBytes); + signatureInputStream.setByteOrder(ByteOrder.BIG_ENDIAN); + + long chunkSize = signatureInputStream.readInt(); + byte[] chunkType = new byte[4]; + signatureInputStream.read(chunkType); + + if (!Arrays.equals(chunkType, HEIF_TYPE_FTYP)) { + return false; + } + + long chunkDataOffset = 8; + if (chunkSize == 1) { + // This indicates that the next 8 bytes represent the chunk size, + // and chunk data comes after that. + chunkSize = signatureInputStream.readLong(); + if (chunkSize < 16) { + // The smallest valid chunk is 16 bytes long in this case. + return false; + } + chunkDataOffset += 8; + } + + // only sniff up to signatureCheckBytes.length + if (chunkSize > signatureCheckBytes.length) { + chunkSize = signatureCheckBytes.length; + } + + long chunkDataSize = chunkSize - chunkDataOffset; + + // It should at least have major brand (4-byte) and minor version (4-byte). + // The rest of the chunk (if any) is a list of (4-byte) compatible brands. + if (chunkDataSize < 8) { + return false; + } + + byte[] brand = new byte[4]; + boolean isMif1 = false; + boolean isHeic = false; + for (long i = 0; i < chunkDataSize / 4; ++i) { + if (signatureInputStream.read(brand) != brand.length) { + return false; + } + if (i == 1) { + // Skip this index, it refers to the minorVersion, not a brand. + continue; + } + if (Arrays.equals(brand, HEIF_BRAND_MIF1)) { + isMif1 = true; + } else if (Arrays.equals(brand, HEIF_BRAND_HEIC)) { + isHeic = true; + } + if (isMif1 && isHeic) { + return true; + } + } + } catch (Exception e) { + if (DEBUG) { + Log.d(TAG, "Exception parsing HEIF file type box.", e); + } + } finally { + if (signatureInputStream != null) { + signatureInputStream.close(); + signatureInputStream = null; + } + } + return false; + } + /** * ORF has a similar structure to TIFF but it contains a different signature at the TIFF Header. * This method looks at the 2 bytes following the Byte Order bytes to determine if this file is @@ -2439,6 +2520,100 @@ public class ExifInterface { } } + private void getHeifAttributes(ByteOrderedDataInputStream in) throws IOException { + MediaMetadataRetriever retriever = new MediaMetadataRetriever(); + try { + if (mSeekableFileDescriptor != null) { + retriever.setDataSource(mSeekableFileDescriptor); + } else { + retriever.setDataSource(new MediaDataSource() { + long mPosition; + + @Override + public void close() throws IOException {} + + @Override + public int readAt(long position, byte[] buffer, int offset, int size) + throws IOException { + if (size == 0) { + return 0; + } + if (position < 0) { + return -1; + } + if (mPosition != position) { + in.seek(position); + mPosition = position; + } + + int bytesRead = in.read(buffer, offset, size); + if (bytesRead < 0) { + mPosition = -1; // need to seek on next read + return -1; + } + + mPosition += bytesRead; + return bytesRead; + } + + @Override + public long getSize() throws IOException { + return -1; + } + }); + } + + String hasVideo = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_HAS_VIDEO); + + final String METADATA_HAS_VIDEO_VALUE_YES = "yes"; + if (METADATA_HAS_VIDEO_VALUE_YES.equals(hasVideo)) { + String width = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); + String height = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); + + if (width != null) { + mAttributes[IFD_TYPE_PRIMARY].put(TAG_IMAGE_WIDTH, + ExifAttribute.createUShort(Integer.parseInt(width), mExifByteOrder)); + } + + if (height != null) { + mAttributes[IFD_TYPE_PRIMARY].put(TAG_IMAGE_LENGTH, + ExifAttribute.createUShort(Integer.parseInt(height), mExifByteOrder)); + } + + String rotation = retriever.extractMetadata( + MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION); + if (rotation != null) { + int orientation = ExifInterface.ORIENTATION_NORMAL; + + // all rotation angles in CW + switch (Integer.parseInt(rotation)) { + case 90: + orientation = ExifInterface.ORIENTATION_ROTATE_90; + break; + case 180: + orientation = ExifInterface.ORIENTATION_ROTATE_180; + break; + case 270: + orientation = ExifInterface.ORIENTATION_ROTATE_270; + break; + } + + mAttributes[IFD_TYPE_PRIMARY].put(TAG_ORIENTATION, + ExifAttribute.createUShort(orientation, mExifByteOrder)); + } + + if (DEBUG) { + Log.d(TAG, "Heif meta: " + width + "x" + height + ", rotation " + rotation); + } + } + } finally { + retriever.release(); + } + } + /** * ORF files contains a primary image data and a MakerNote data that contains preview/thumbnail * images. Both data takes the form of IFDs and can therefore be read with the @@ -2661,9 +2836,9 @@ public class ExifInterface { } private void addDefaultValuesForCompatibility() { - // The value of DATETIME tag has the same value of DATETIME_ORIGINAL tag. + // If DATETIME tag has no value, then set the value to DATETIME_ORIGINAL tag's. String valueOfDateTimeOriginal = getAttribute(TAG_DATETIME_ORIGINAL); - if (valueOfDateTimeOriginal != null) { + if (valueOfDateTimeOriginal != null && getAttribute(TAG_DATETIME) == null) { mAttributes[IFD_TYPE_PRIMARY].put(TAG_DATETIME, ExifAttribute.createString(valueOfDateTimeOriginal)); } @@ -2679,7 +2854,7 @@ public class ExifInterface { } if (getAttribute(TAG_ORIENTATION) == null) { mAttributes[IFD_TYPE_PRIMARY].put(TAG_ORIENTATION, - ExifAttribute.createULong(0, mExifByteOrder)); + ExifAttribute.createUShort(0, mExifByteOrder)); } if (getAttribute(TAG_LIGHT_SOURCE) == null) { mAttributes[IFD_TYPE_EXIF].put(TAG_LIGHT_SOURCE, diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index 9c138e30e929b796302714b8f8a6d0a57a814d22..bb6ae9863d31df67985ce1b69e87dd77d18c65c1 100644 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -201,5 +201,7 @@ interface IAudioService { int dispatchFocusChange(in AudioFocusInfo afi, in int focusChange, in IAudioPolicyCallback pcb); + oneway void playerHasOpPlayAudio(in int piid, in boolean hasOpPlayAudio); + // WARNING: read warning at top of file, it is recommended to add new methods at the end } diff --git a/media/java/android/media/IPlaybackConfigDispatcher.aidl b/media/java/android/media/IPlaybackConfigDispatcher.aidl index 3cb52161d9bf714026b0db9918657faa08e3ac10..150ff26043626a11126653ebf174170c67549536 100644 --- a/media/java/android/media/IPlaybackConfigDispatcher.aidl +++ b/media/java/android/media/IPlaybackConfigDispatcher.aidl @@ -25,6 +25,6 @@ import android.media.AudioPlaybackConfiguration; */ oneway interface IPlaybackConfigDispatcher { - void dispatchPlaybackConfigChange(in List configs); + void dispatchPlaybackConfigChange(in List configs, in boolean flush); } diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java index 3e75759bdfce48f5195d176d0686b3e034e89d75..fbe55614db52b468be05b57f303a8aea49a84676 100644 --- a/media/java/android/media/Image.java +++ b/media/java/android/media/Image.java @@ -31,7 +31,7 @@ import android.graphics.Rect; * {@link java.nio.ByteBuffer ByteBuffers}. Each buffer is encapsulated in a * {@link Plane} that describes the layout of the pixel data in that plane. Due * to this direct access, and unlike the {@link android.graphics.Bitmap Bitmap} class, - * Images are not directly usable as as UI resources.

        + * Images are not directly usable as UI resources.

        * *

        Since Images are often directly produced or consumed by hardware * components, they are a limited resource shared across the system, and should diff --git a/media/java/android/media/MediaCas.java b/media/java/android/media/MediaCas.java index ce50cc801dafbdfe9183efa90aa043bc18829d11..12352e7f8b24216414371c2449c27c00068b7fc7 100644 --- a/media/java/android/media/MediaCas.java +++ b/media/java/android/media/MediaCas.java @@ -18,21 +18,20 @@ package android.media; import android.annotation.NonNull; import android.annotation.Nullable; +import android.hardware.cas.V1_0.*; import android.media.MediaCasException.*; import android.os.Handler; import android.os.HandlerThread; -import android.os.IBinder; +import android.os.IHwBinder; import android.os.Looper; import android.os.Message; -import android.os.Parcel; -import android.os.Parcelable; import android.os.Process; import android.os.RemoteException; -import android.os.ServiceManager; -import android.os.ServiceSpecificException; import android.util.Log; import android.util.Singleton; +import java.util.ArrayList; + /** * MediaCas can be used to obtain keys for descrambling protected media streams, in * conjunction with {@link android.media.MediaDescrambler}. The MediaCas APIs are @@ -95,7 +94,6 @@ import android.util.Singleton; */ public final class MediaCas implements AutoCloseable { private static final String TAG = "MediaCas"; - private final ParcelableCasData mCasData = new ParcelableCasData(); private ICas mICas; private EventListener mListener; private HandlerThread mHandlerThread; @@ -105,8 +103,10 @@ public final class MediaCas implements AutoCloseable { new Singleton() { @Override protected IMediaCasService create() { - return IMediaCasService.Stub.asInterface( - ServiceManager.getService("media.cas")); + try { + return IMediaCasService.getService(); + } catch (RemoteException e) {} + return null; } }; @@ -136,65 +136,21 @@ public final class MediaCas implements AutoCloseable { @Override public void handleMessage(Message msg) { if (msg.what == MSG_CAS_EVENT) { - mListener.onEvent(MediaCas.this, msg.arg1, msg.arg2, (byte[]) msg.obj); + mListener.onEvent(MediaCas.this, msg.arg1, msg.arg2, + toBytes((ArrayList) msg.obj)); } } } private final ICasListener.Stub mBinder = new ICasListener.Stub() { @Override - public void onEvent(int event, int arg, @Nullable byte[] data) + public void onEvent(int event, int arg, @Nullable ArrayList data) throws RemoteException { mEventHandler.sendMessage(mEventHandler.obtainMessage( EventHandler.MSG_CAS_EVENT, event, arg, data)); } }; - /** - * Class for parceling byte array data over ICas binder. - */ - static class ParcelableCasData implements Parcelable { - private byte[] mData; - private int mOffset; - private int mLength; - - ParcelableCasData() { - mData = null; - mOffset = mLength = 0; - } - - private ParcelableCasData(Parcel in) { - this(); - } - - void set(@NonNull byte[] data, int offset, int length) { - mData = data; - mOffset = offset; - mLength = length; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeByteArray(mData, mOffset, mLength); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public ParcelableCasData createFromParcel(Parcel in) { - return new ParcelableCasData(in); - } - - public ParcelableCasData[] newArray(int size) { - return new ParcelableCasData[size]; - } - }; - } - /** * Describe a CAS plugin with its CA_system_ID and string name. * @@ -210,9 +166,9 @@ public final class MediaCas implements AutoCloseable { mName = null; } - PluginDescriptor(int CA_system_id, String name) { - mCASystemId = CA_system_id; - mName = name; + PluginDescriptor(@NonNull HidlCasPluginDescriptor descriptor) { + mCASystemId = descriptor.caSystemId; + mName = descriptor.name; } public int getSystemId() { @@ -230,13 +186,38 @@ public final class MediaCas implements AutoCloseable { } } + private ArrayList toByteArray(@NonNull byte[] data, int offset, int length) { + ArrayList byteArray = new ArrayList(length); + for (int i = 0; i < length; i++) { + byteArray.add(Byte.valueOf(data[offset + i])); + } + return byteArray; + } + + private ArrayList toByteArray(@Nullable byte[] data) { + if (data == null) { + return new ArrayList(); + } + return toByteArray(data, 0, data.length); + } + + private byte[] toBytes(@NonNull ArrayList byteArray) { + byte[] data = null; + if (byteArray != null) { + data = new byte[byteArray.size()]; + for (int i = 0; i < data.length; i++) { + data[i] = byteArray.get(i); + } + } + return data; + } /** * Class for an open session with the CA system. */ public final class Session implements AutoCloseable { - final byte[] mSessionId; + final ArrayList mSessionId; - Session(@NonNull byte[] sessionId) { + Session(@NonNull ArrayList sessionId) { mSessionId = sessionId; } @@ -254,9 +235,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.setSessionPrivateData(mSessionId, data); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.setSessionPrivateData(mSessionId, toByteArray(data, 0, data.length))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -279,10 +259,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mCasData.set(data, offset, length); - mICas.processEcm(mSessionId, mCasData); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.processEcm(mSessionId, toByteArray(data, offset, length))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -314,56 +292,21 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.closeSession(mSessionId); - } catch (ServiceSpecificException e) { - MediaCasStateException.throwExceptions(e); + MediaCasStateException.throwExceptionIfNeeded( + mICas.closeSession(mSessionId)); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } } } - Session createFromSessionId(byte[] sessionId) { - if (sessionId == null || sessionId.length == 0) { + Session createFromSessionId(@NonNull ArrayList sessionId) { + if (sessionId == null || sessionId.size() == 0) { return null; } return new Session(sessionId); } - /** - * Class for parceling CAS plugin descriptors over IMediaCasService binder. - */ - static class ParcelableCasPluginDescriptor - extends PluginDescriptor implements Parcelable { - - private ParcelableCasPluginDescriptor(int CA_system_id, String name) { - super(CA_system_id, name); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - Log.w(TAG, "ParcelableCasPluginDescriptor.writeToParcel shouldn't be called!"); - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public ParcelableCasPluginDescriptor createFromParcel(Parcel in) { - int CA_system_id = in.readInt(); - String name = in.readString(); - return new ParcelableCasPluginDescriptor(CA_system_id, name); - } - - public ParcelableCasPluginDescriptor[] newArray(int size) { - return new ParcelableCasPluginDescriptor[size]; - } - }; - } - /** * Query if a certain CA system is supported on this device. * @@ -393,13 +336,14 @@ public final class MediaCas implements AutoCloseable { if (service != null) { try { - ParcelableCasPluginDescriptor[] descriptors = service.enumeratePlugins(); - if (descriptors.length == 0) { + ArrayList descriptors = + service.enumeratePlugins(); + if (descriptors.size() == 0) { return null; } - PluginDescriptor[] results = new PluginDescriptor[descriptors.length]; + PluginDescriptor[] results = new PluginDescriptor[descriptors.size()]; for (int i = 0; i < results.length; i++) { - results[i] = descriptors[i]; + results[i] = new PluginDescriptor(descriptors.get(i)); } return results; } catch (RemoteException e) { @@ -430,7 +374,7 @@ public final class MediaCas implements AutoCloseable { } } - IBinder getBinder() { + IHwBinder getBinder() { validateInternalStates(); return mICas.asBinder(); @@ -497,14 +441,22 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.setPrivateData(data); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.setPrivateData(toByteArray(data, 0, data.length))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } } + private class OpenSessionCallback implements ICas.openSessionCallback { + public Session mSession; + public int mStatus; + @Override + public void onValues(int status, ArrayList sessionId) { + mStatus = status; + mSession = createFromSessionId(sessionId); + } + } /** * Open a session to descramble one or more streams scrambled by the * conditional access system. @@ -519,9 +471,10 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - return createFromSessionId(mICas.openSession()); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + OpenSessionCallback cb = new OpenSessionCallback(); + mICas.openSession(cb); + MediaCasException.throwExceptionIfNeeded(cb.mStatus); + return cb.mSession; } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -544,10 +497,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mCasData.set(data, offset, length); - mICas.processEmm(mCasData); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.processEmm(toByteArray(data, offset, length))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -585,9 +536,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.sendEvent(event, arg, data); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.sendEvent(event, arg, toByteArray(data))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -608,9 +558,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.provision(provisionString); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.provision(provisionString)); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -631,9 +580,8 @@ public final class MediaCas implements AutoCloseable { validateInternalStates(); try { - mICas.refreshEntitlements(refreshType, refreshData); - } catch (ServiceSpecificException e) { - MediaCasException.throwExceptions(e); + MediaCasException.throwExceptionIfNeeded( + mICas.refreshEntitlements(refreshType, toByteArray(refreshData))); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } diff --git a/media/java/android/media/MediaCasException.java b/media/java/android/media/MediaCasException.java index 485f6eebf88e0cb4187a6427e9013bd2a5b97d04..35fb104b7f0b10c5bd3d0911601afb3cbffc2bcf 100644 --- a/media/java/android/media/MediaCasException.java +++ b/media/java/android/media/MediaCasException.java @@ -16,60 +16,29 @@ package android.media; -import android.os.ServiceSpecificException; +import android.hardware.cas.V1_0.Status; /** * Base class for MediaCas exceptions */ public class MediaCasException extends Exception { - - /** @hide */ - public static final int DRM_ERROR_BASE = -2000; - /** @hide */ - public static final int ERROR_DRM_UNKNOWN = DRM_ERROR_BASE; - /** @hide */ - public static final int ERROR_DRM_NO_LICENSE = DRM_ERROR_BASE - 1; - /** @hide */ - public static final int ERROR_DRM_LICENSE_EXPIRED = DRM_ERROR_BASE - 2; - /** @hide */ - public static final int ERROR_DRM_SESSION_NOT_OPENED = DRM_ERROR_BASE - 3; - /** @hide */ - public static final int ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED = DRM_ERROR_BASE - 4; - /** @hide */ - public static final int ERROR_DRM_DECRYPT = DRM_ERROR_BASE - 5; - /** @hide */ - public static final int ERROR_DRM_CANNOT_HANDLE = DRM_ERROR_BASE - 6; - /** @hide */ - public static final int ERROR_DRM_TAMPER_DETECTED = DRM_ERROR_BASE - 7; - /** @hide */ - public static final int ERROR_DRM_NOT_PROVISIONED = DRM_ERROR_BASE - 8; - /** @hide */ - public static final int ERROR_DRM_DEVICE_REVOKED = DRM_ERROR_BASE - 9; - /** @hide */ - public static final int ERROR_DRM_RESOURCE_BUSY = DRM_ERROR_BASE - 10; - /** @hide */ - public static final int ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION = DRM_ERROR_BASE - 11; - /** @hide */ - public static final int ERROR_DRM_LAST_USED_ERRORCODE = DRM_ERROR_BASE - 11; - /** @hide */ - public static final int ERROR_DRM_VENDOR_MAX = DRM_ERROR_BASE - 500; - /** @hide */ - public static final int ERROR_DRM_VENDOR_MIN = DRM_ERROR_BASE - 999; - - /** @hide */ - public MediaCasException(String detailMessage) { + private MediaCasException(String detailMessage) { super(detailMessage); } - static void throwExceptions(ServiceSpecificException e) throws MediaCasException { - if (e.errorCode == ERROR_DRM_NOT_PROVISIONED) { - throw new NotProvisionedException(e.getMessage()); - } else if (e.errorCode == ERROR_DRM_RESOURCE_BUSY) { - throw new ResourceBusyException(e.getMessage()); - } else if (e.errorCode == ERROR_DRM_DEVICE_REVOKED) { - throw new DeniedByServerException(e.getMessage()); + static void throwExceptionIfNeeded(int error) throws MediaCasException { + if (error == Status.OK) { + return; + } + + if (error == Status.ERROR_CAS_NOT_PROVISIONED) { + throw new NotProvisionedException(null); + } else if (error == Status.ERROR_CAS_RESOURCE_BUSY) { + throw new ResourceBusyException(null); + } else if (error == Status.ERROR_CAS_DEVICE_REVOKED) { + throw new DeniedByServerException(null); } else { - MediaCasStateException.throwExceptions(e); + MediaCasStateException.throwExceptionIfNeeded(error); } } diff --git a/media/java/android/media/MediaCasStateException.java b/media/java/android/media/MediaCasStateException.java index cf05c29752722e66e74b3db761a966243f02340b..26c57923912d1244eb8a10671626a61034281687 100644 --- a/media/java/android/media/MediaCasStateException.java +++ b/media/java/android/media/MediaCasStateException.java @@ -18,9 +18,8 @@ package android.media; import android.annotation.NonNull; import android.annotation.Nullable; -import android.os.ServiceSpecificException; -import static android.media.MediaCasException.*; +import android.hardware.cas.V1_0.Status; /** * Base class for MediaCas runtime exceptions @@ -29,46 +28,62 @@ public class MediaCasStateException extends IllegalStateException { private final int mErrorCode; private final String mDiagnosticInfo; - /** @hide */ - public MediaCasStateException(int err, @Nullable String msg, @Nullable String diagnosticInfo) { + private MediaCasStateException(int err, @Nullable String msg, @Nullable String diagnosticInfo) { super(msg); mErrorCode = err; mDiagnosticInfo = diagnosticInfo; } - static void throwExceptions(ServiceSpecificException e) { + static void throwExceptionIfNeeded(int err) { + throwExceptionIfNeeded(err, null /* msg */); + } + + static void throwExceptionIfNeeded(int err, @Nullable String msg) { + if (err == Status.OK) { + return; + } + if (err == Status.BAD_VALUE) { + throw new IllegalArgumentException(); + } + String diagnosticInfo = ""; - switch (e.errorCode) { - case ERROR_DRM_UNKNOWN: + switch (err) { + case Status.ERROR_CAS_UNKNOWN: diagnosticInfo = "General CAS error"; break; - case ERROR_DRM_NO_LICENSE: + case Status.ERROR_CAS_NO_LICENSE: diagnosticInfo = "No license"; break; - case ERROR_DRM_LICENSE_EXPIRED: + case Status.ERROR_CAS_LICENSE_EXPIRED: diagnosticInfo = "License expired"; break; - case ERROR_DRM_SESSION_NOT_OPENED: + case Status.ERROR_CAS_SESSION_NOT_OPENED: diagnosticInfo = "Session not opened"; break; - case ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED: - diagnosticInfo = "Not initialized"; + case Status.ERROR_CAS_CANNOT_HANDLE: + diagnosticInfo = "Unsupported scheme or data format"; break; - case ERROR_DRM_DECRYPT: - diagnosticInfo = "Decrypt error"; + case Status.ERROR_CAS_INVALID_STATE: + diagnosticInfo = "Invalid CAS state"; break; - case ERROR_DRM_CANNOT_HANDLE: - diagnosticInfo = "Unsupported scheme or data format"; + case Status.ERROR_CAS_INSUFFICIENT_OUTPUT_PROTECTION: + diagnosticInfo = "Insufficient output protection"; break; - case ERROR_DRM_TAMPER_DETECTED: + case Status.ERROR_CAS_TAMPER_DETECTED: diagnosticInfo = "Tamper detected"; break; + case Status.ERROR_CAS_DECRYPT_UNIT_NOT_INITIALIZED: + diagnosticInfo = "Not initialized"; + break; + case Status.ERROR_CAS_DECRYPT: + diagnosticInfo = "Decrypt error"; + break; default: diagnosticInfo = "Unknown CAS state exception"; break; } - throw new MediaCasStateException(e.errorCode, e.getMessage(), - String.format("%s (err=%d)", diagnosticInfo, e.errorCode)); + throw new MediaCasStateException(err, msg, + String.format("%s (err=%d)", diagnosticInfo, err)); } /** diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 9b74656384db1aa2bae4aa5deedbb6e11f68db4b..3d5f6bc9ac7132a9629cfedcb98c23dced45521a 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -26,6 +26,7 @@ import android.media.MediaCodecInfo.CodecCapabilities; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.os.IHwBinder; import android.os.Looper; import android.os.Message; import android.os.PersistableBundle; @@ -340,7 +341,8 @@ import java.util.Map; FLAC - Metadata blocks + mandatory metadata block (called the STREAMINFO block),
        + optionally followed by any number of other metadata blocks Not Used Not Used @@ -1902,7 +1904,7 @@ final public class MediaCodec { private void configure( @Nullable MediaFormat format, @Nullable Surface surface, - @Nullable MediaCrypto crypto, @Nullable IBinder descramblerBinder, + @Nullable MediaCrypto crypto, @Nullable IHwBinder descramblerBinder, @ConfigureFlag int flags) { if (crypto != null && descramblerBinder != null) { throw new IllegalArgumentException("Can't use crypto and descrambler together!"); @@ -2017,7 +2019,7 @@ final public class MediaCodec { private native final void native_configure( @Nullable String[] keys, @Nullable Object[] values, @Nullable Surface surface, @Nullable MediaCrypto crypto, - @Nullable IBinder descramblerBinder, @ConfigureFlag int flags); + @Nullable IHwBinder descramblerBinder, @ConfigureFlag int flags); /** * Requests a Surface to use as the input to an encoder, in place of input buffers. This diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java index a19726cb26478c6e8578aacaa7b8fa554fa94170..f41e33f7c10267559907c9d4ebd83edbc29b7137 100644 --- a/media/java/android/media/MediaCodecInfo.java +++ b/media/java/android/media/MediaCodecInfo.java @@ -2095,6 +2095,7 @@ public final class MediaCodecInfo { errors |= ERROR_UNRECOGNIZED; } switch (profileLevel.profile) { + case CodecProfileLevel.AVCProfileConstrainedHigh: case CodecProfileLevel.AVCProfileHigh: BR *= 1250; break; case CodecProfileLevel.AVCProfileHigh10: @@ -2107,6 +2108,7 @@ public final class MediaCodecInfo { errors |= ERROR_UNSUPPORTED; supported = false; // fall through - treat as base profile + case CodecProfileLevel.AVCProfileConstrainedBaseline: case CodecProfileLevel.AVCProfileBaseline: case CodecProfileLevel.AVCProfileMain: BR *= 1000; break; @@ -2747,8 +2749,8 @@ public final class MediaCodecInfo { mQualityRange = Utils .parseIntRange(info.getString("quality-range"), mQualityRange); } - if (info.containsKey("feature-bitrate-control")) { - for (String mode: info.getString("feature-bitrate-control").split(",")) { + if (info.containsKey("feature-bitrate-modes")) { + for (String mode: info.getString("feature-bitrate-modes").split(",")) { mBitControl |= parseBitrateMode(mode); } } @@ -2861,6 +2863,8 @@ public final class MediaCodecInfo { public static final int AVCProfileHigh10 = 0x10; public static final int AVCProfileHigh422 = 0x20; public static final int AVCProfileHigh444 = 0x40; + public static final int AVCProfileConstrainedBaseline = 0x10000; + public static final int AVCProfileConstrainedHigh = 0x80000; // from OMX_VIDEO_AVCLEVELTYPE public static final int AVCLevel1 = 0x01; @@ -3042,6 +3046,8 @@ public final class MediaCodecInfo { public static final int DolbyVisionProfileDvheStn = 0x20; public static final int DolbyVisionProfileDvheDth = 0x40; public static final int DolbyVisionProfileDvheDtb = 0x80; + public static final int DolbyVisionProfileDvheSt = 0x100; + public static final int DolbyVisionProfileDvavSe = 0x200; // from OMX_VIDEO_DOLBYVISIONLEVELTYPE public static final int DolbyVisionLevelHd24 = 0x1; diff --git a/media/java/android/media/MediaDescrambler.java b/media/java/android/media/MediaDescrambler.java index b75b7dd8b742475124cead353f7a87504a191dbd..40c837b13cc8f17cc053383217032c79d1fd2093 100644 --- a/media/java/android/media/MediaDescrambler.java +++ b/media/java/android/media/MediaDescrambler.java @@ -17,10 +17,9 @@ package android.media; import android.annotation.NonNull; +import android.hardware.cas.V1_0.*; import android.media.MediaCasException.UnsupportedCasException; -import android.os.IBinder; -import android.os.Parcel; -import android.os.Parcelable; +import android.os.IHwBinder; import android.os.RemoteException; import android.os.ServiceSpecificException; import android.util.Log; @@ -40,7 +39,7 @@ import java.nio.ByteBuffer; */ public final class MediaDescrambler implements AutoCloseable { private static final String TAG = "MediaDescrambler"; - private IDescrambler mIDescrambler; + private IDescramblerBase mIDescrambler; private final void validateInternalStates() { if (mIDescrambler == null) { @@ -53,39 +52,6 @@ public final class MediaDescrambler implements AutoCloseable { throw new IllegalStateException(); } - /** - * Class for parceling descrambling parameters over IDescrambler binder. - */ - // This class currently is not used by Java binder. descramble() goes through - // jni to use shared memory. However, the parcelable is still required for AIDL. - static class DescrambleInfo implements Parcelable { - private DescrambleInfo() { - } - - private DescrambleInfo(Parcel in) { - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - } - - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { - public DescrambleInfo createFromParcel(Parcel in) { - return new DescrambleInfo(in); - } - - public DescrambleInfo[] newArray(int size) { - return new DescrambleInfo[size]; - } - }; - } - /** * Instantiate a MediaDescrambler. * @@ -107,7 +73,7 @@ public final class MediaDescrambler implements AutoCloseable { native_setup(mIDescrambler.asBinder()); } - IBinder getBinder() { + IHwBinder getBinder() { validateInternalStates(); return mIDescrambler.asBinder(); @@ -151,9 +117,8 @@ public final class MediaDescrambler implements AutoCloseable { validateInternalStates(); try { - mIDescrambler.setMediaCasSession(session.mSessionId); - } catch (ServiceSpecificException e) { - MediaCasStateException.throwExceptions(e); + MediaCasStateException.throwExceptionIfNeeded( + mIDescrambler.setMediaCasSession(session.mSessionId)); } catch (RemoteException e) { cleanupAndRethrowIllegalState(); } @@ -210,7 +175,9 @@ public final class MediaDescrambler implements AutoCloseable { srcBuf, srcBuf.position(), srcBuf.limit(), dstBuf, dstBuf.position(), dstBuf.limit()); } catch (ServiceSpecificException e) { - MediaCasStateException.throwExceptions(e); + MediaCasStateException.throwExceptionIfNeeded(e.errorCode, e.getMessage()); + } catch (RemoteException e) { + cleanupAndRethrowIllegalState(); } return -1; } @@ -234,12 +201,12 @@ public final class MediaDescrambler implements AutoCloseable { } private static native final void native_init(); - private native final void native_setup(@NonNull IBinder decramblerBinder); + private native final void native_setup(@NonNull IHwBinder decramblerBinder); private native final void native_release(); private native final int native_descramble( byte key, int numSubSamples, int[] numBytesOfClearData, int[] numBytesOfEncryptedData, @NonNull ByteBuffer srcBuf, int srcOffset, int srcLimit, - ByteBuffer dstBuf, int dstOffset, int dstLimit); + ByteBuffer dstBuf, int dstOffset, int dstLimit) throws RemoteException; static { System.loadLibrary("media_jni"); diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java index fe461be6dea55bdad08a1fdddb22487d8f7e3af5..2c1b4b3526e0d31d381a6b01301971279092bd3b 100644 --- a/media/java/android/media/MediaExtractor.java +++ b/media/java/android/media/MediaExtractor.java @@ -26,8 +26,8 @@ import android.media.MediaCodec; import android.media.MediaFormat; import android.media.MediaHTTPService; import android.net.Uri; -import android.os.Bundle; import android.os.IBinder; +import android.os.IHwBinder; import android.os.PersistableBundle; import com.android.internal.util.Preconditions; @@ -38,9 +38,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.util.Collections; +import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.UUID; @@ -263,7 +262,7 @@ final public class MediaExtractor { nativeSetMediaCas(mediaCas.getBinder()); } - private native final void nativeSetMediaCas(@NonNull IBinder casBinder); + private native final void nativeSetMediaCas(@NonNull IHwBinder casBinder); /** * Describes the conditional access system used to scramble a track. @@ -300,6 +299,14 @@ final public class MediaExtractor { } } + private ArrayList toByteArray(@NonNull byte[] data) { + ArrayList byteArray = new ArrayList(data.length); + for (int i = 0; i < data.length; i++) { + byteArray.add(i, Byte.valueOf(data[i])); + } + return byteArray; + } + /** * Retrieves the information about the conditional access system used to scramble * a track. @@ -317,7 +324,7 @@ final public class MediaExtractor { buf.rewind(); final byte[] sessionId = new byte[buf.remaining()]; buf.get(sessionId); - session = mMediaCas.createFromSessionId(sessionId); + session = mMediaCas.createFromSessionId(toByteArray(sessionId)); } return new CasInfo(systemId, session); } diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java index ebc4071c3db32333c10acbc1f7ecca208fc31fda..35937de287a3714d40280b6279cec17ff7332a87 100644 --- a/media/java/android/media/MediaFile.java +++ b/media/java/android/media/MediaFile.java @@ -80,8 +80,9 @@ public class MediaFile { public static final int FILE_TYPE_BMP = 34; public static final int FILE_TYPE_WBMP = 35; public static final int FILE_TYPE_WEBP = 36; + public static final int FILE_TYPE_HEIF = 37; private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG; - private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WEBP; + private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_HEIF; // Raw image file types public static final int FILE_TYPE_DNG = 300; @@ -239,6 +240,8 @@ public class MediaFile { addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", MtpConstants.FORMAT_BMP, true); addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp", MtpConstants.FORMAT_DEFINED, false); addFileType("WEBP", FILE_TYPE_WEBP, "image/webp", MtpConstants.FORMAT_DEFINED, false); + addFileType("HEIC", FILE_TYPE_HEIF, "image/heif", MtpConstants.FORMAT_HEIF, true); + addFileType("HEIF", FILE_TYPE_HEIF, "image/heif", MtpConstants.FORMAT_HEIF, false); addFileType("DNG", FILE_TYPE_DNG, "image/x-adobe-dng", MtpConstants.FORMAT_DNG, true); addFileType("CR2", FILE_TYPE_CR2, "image/x-canon-cr2", MtpConstants.FORMAT_TIFF, false); diff --git a/media/java/android/media/MediaMetadataRetriever.java b/media/java/android/media/MediaMetadataRetriever.java index 7dd70d4d55270bc922d59fd5512746e024c95ab9..4ea4e3810e0396bc86f451108784b37b5658d394 100644 --- a/media/java/android/media/MediaMetadataRetriever.java +++ b/media/java/android/media/MediaMetadataRetriever.java @@ -16,6 +16,7 @@ package android.media; +import android.annotation.IntDef; import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; @@ -27,6 +28,8 @@ import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Map; @@ -246,16 +249,67 @@ public class MediaMetadataRetriever * {@link #OPTION_CLOSEST} often has larger performance overhead compared * to the other options if there is no sync frame located at timeUs. * - * @return A Bitmap containing a representative video frame, which + * @return A Bitmap containing a representative video frame, which * can be null, if such a frame cannot be retrieved. */ - public Bitmap getFrameAtTime(long timeUs, int option) { + public Bitmap getFrameAtTime(long timeUs, @Option int option) { + if (option < OPTION_PREVIOUS_SYNC || + option > OPTION_CLOSEST) { + throw new IllegalArgumentException("Unsupported option: " + option); + } + + return _getFrameAtTime(timeUs, option, -1 /*dst_width*/, -1 /*dst_height*/); + } + + /** + * Retrieve a video frame near a given timestamp scaled to a desired size. + * Call this method after setDataSource(). This method finds a representative + * frame close to the given time position by considering the given option + * if possible, and returns it as a bitmap with same aspect ratio as the source + * while scaling it so that it fits into the desired size of dst_width by dst_height. + * This is useful for generating a thumbnail for an input data source or just to + * obtain a scaled frame at the given time position. + * + * @param timeUs The time position in microseconds where the frame will be retrieved. + * When retrieving the frame at the given time position, there is no + * guarantee that the data source has a frame located at the position. + * When this happens, a frame nearby will be returned. If timeUs is + * negative, time position and option will ignored, and any frame + * that the implementation considers as representative may be returned. + * + * @param option a hint on how the frame is found. Use + * {@link #OPTION_PREVIOUS_SYNC} if one wants to retrieve a sync frame + * that has a timestamp earlier than or the same as timeUs. Use + * {@link #OPTION_NEXT_SYNC} if one wants to retrieve a sync frame + * that has a timestamp later than or the same as timeUs. Use + * {@link #OPTION_CLOSEST_SYNC} if one wants to retrieve a sync frame + * that has a timestamp closest to or the same as timeUs. Use + * {@link #OPTION_CLOSEST} if one wants to retrieve a frame that may + * or may not be a sync frame but is closest to or the same as timeUs. + * {@link #OPTION_CLOSEST} often has larger performance overhead compared + * to the other options if there is no sync frame located at timeUs. + * + * @param dstWidth expected output bitmap width + * @param dstHeight expected output bitmap height + * @return A Bitmap of size not larger than dstWidth by dstHeight containing a + * scaled video frame, which can be null, if such a frame cannot be retrieved. + * @throws IllegalArgumentException if passed in invalid option or width by height + * is less than or equal to 0. + */ + public Bitmap getScaledFrameAtTime( + long timeUs, @Option int option, int dstWidth, int dstHeight) { if (option < OPTION_PREVIOUS_SYNC || option > OPTION_CLOSEST) { throw new IllegalArgumentException("Unsupported option: " + option); } + if (dstWidth <= 0) { + throw new IllegalArgumentException("Invalid width: " + dstWidth); + } + if (dstHeight <= 0) { + throw new IllegalArgumentException("Invalid height: " + dstHeight); + } - return _getFrameAtTime(timeUs, option); + return _getFrameAtTime(timeUs, option, dstWidth, dstHeight); } /** @@ -273,8 +327,8 @@ public class MediaMetadataRetriever * negative, time position and option will ignored, and any frame * that the implementation considers as representative may be returned. * - * @return A Bitmap containing a representative video frame, which - * can be null, if such a frame cannot be retrieved. + * @return A Bitmap of size dst_widthxdst_height containing a representative + * video frame, which can be null, if such a frame cannot be retrieved. * * @see #getFrameAtTime(long, int) */ @@ -297,17 +351,16 @@ public class MediaMetadataRetriever * @see #getFrameAtTime(long, int) */ public Bitmap getFrameAtTime() { - return getFrameAtTime(-1, OPTION_CLOSEST_SYNC); + return _getFrameAtTime(-1, OPTION_CLOSEST_SYNC, -1 /*dst_width*/, -1 /*dst_height*/); } - private native Bitmap _getFrameAtTime(long timeUs, int option); + private native Bitmap _getFrameAtTime(long timeUs, int option, int width, int height); - /** * Call this method after setDataSource(). This method finds the optional * graphic or album/cover art associated associated with the data source. If * there are more than one pictures, (any) one of them is returned. - * + * * @return null if no such graphic is found. */ public byte[] getEmbeddedPicture() { @@ -377,6 +430,16 @@ public class MediaMetadataRetriever */ public static final int OPTION_CLOSEST = 0x03; + /** @hide */ + @IntDef(flag = true, prefix = { "OPTION_" }, value = { + OPTION_PREVIOUS_SYNC, + OPTION_NEXT_SYNC, + OPTION_CLOSEST_SYNC, + OPTION_CLOSEST, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface Option {} + /* * Do not change these metadata key values without updating their * counterparts in include/media/mediametadataretriever.h! diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java index 832b2974f53c7549d853b9e5b894b4d8d8690936..91e57ee073b0220cf051d41c938651f23b6927be 100644 --- a/media/java/android/media/MediaMuxer.java +++ b/media/java/android/media/MediaMuxer.java @@ -70,7 +70,7 @@ import java.util.Map;

        Per-frame metadata is useful in carrying extra information that correlated with video or audio to facilitate offline processing, e.g. gyro signals from the sensor could help video stabilization when - doing offline processing. Metaadata track is only supported in MP4 container. When adding a new + doing offline processing. Metadata track is only supported in MP4 container. When adding a new metadata track, track's mime format must start with prefix "application/", e.g. "applicaton/gyro". Metadata's format/layout will be defined by the application. Writing metadata is nearly the same as writing video/audio data except that the data will not be from mediacodec. Application just needs diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index d48c7a613c9ac005ee4985aeedb627c98b0b91a6..31ffc4b59ea83d4d9dc91ce855ce2e55b7331f3e 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -3408,7 +3408,7 @@ public class MediaPlayer extends PlayerBase private static void postEventFromNative(Object mediaplayer_ref, int what, int arg1, int arg2, Object obj) { - MediaPlayer mp = (MediaPlayer)((WeakReference)mediaplayer_ref).get(); + final MediaPlayer mp = (MediaPlayer)((WeakReference)mediaplayer_ref).get(); if (mp == null) { return; } @@ -3416,8 +3416,14 @@ public class MediaPlayer extends PlayerBase switch (what) { case MEDIA_INFO: if (arg1 == MEDIA_INFO_STARTED_AS_NEXT) { - // this acquires the wakelock if needed, and sets the client side state - mp.start(); + new Thread(new Runnable() { + @Override + public void run() { + // this acquires the wakelock if needed, and sets the client side state + mp.start(); + } + }).start(); + Thread.yield(); } break; diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java index 33a7c836dec86a032790a5d727803fcba46b317e..59a124fa434fd8645a64a6498359e4f2f9be9950 100644 --- a/media/java/android/media/MediaRecorder.java +++ b/media/java/android/media/MediaRecorder.java @@ -324,6 +324,40 @@ public class MediaRecorder } } + /** @hide */ + public static final String toLogFriendlyAudioSource(int source) { + switch(source) { + case AudioSource.DEFAULT: + return "DEFAULT"; + case AudioSource.MIC: + return "MIC"; + case AudioSource.VOICE_UPLINK: + return "VOICE_UPLINK"; + case AudioSource.VOICE_DOWNLINK: + return "VOICE_DOWNLINK"; + case AudioSource.VOICE_CALL: + return "VOICE_CALL"; + case AudioSource.CAMCORDER: + return "CAMCORDER"; + case AudioSource.VOICE_RECOGNITION: + return "VOICE_RECOGNITION"; + case AudioSource.VOICE_COMMUNICATION: + return "VOICE_COMMUNICATION"; + case AudioSource.REMOTE_SUBMIX: + return "REMOTE_SUBMIX"; + case AudioSource.UNPROCESSED: + return "UNPROCESSED"; + case AudioSource.RADIO_TUNER: + return "RADIO_TUNER"; + case AudioSource.HOTWORD: + return "HOTWORD"; + case AudioSource.AUDIO_SOURCE_INVALID: + return "AUDIO_SOURCE_INVALID"; + default: + return "unknown source " + source; + } + } + /** * Defines the video source. These constants are used with * {@link MediaRecorder#setVideoSource(int)}. diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 80a0315b00b40486384db7f5a0ba36d2caefa3a4..b4fff4839e9cf94f7fb06aa7389775ac75d613db 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -88,7 +88,6 @@ public class MediaRouter { RouteInfo mBluetoothA2dpRoute; RouteInfo mSelectedRoute; - RouteInfo mSystemAudioRoute; final boolean mCanConfigureWifiDisplays; boolean mActivelyScanningWifiDisplays; @@ -150,7 +149,6 @@ public class MediaRouter { } addRouteStatic(mDefaultAudioVideo); - mSystemAudioRoute = mDefaultAudioVideo; // This will select the active wifi display route if there is one. updateWifiDisplayStatus(mDisplayService.getWifiDisplayStatus()); @@ -185,28 +183,34 @@ public class MediaRouter { } void updateAudioRoutes(AudioRoutesInfo newRoutes) { - boolean updated = false; + boolean audioRoutesChanged = false; + boolean forceUseDefaultRoute = false; + if (newRoutes.mainType != mCurAudioRoutesInfo.mainType) { mCurAudioRoutesInfo.mainType = newRoutes.mainType; int name; - if ((newRoutes.mainType&AudioRoutesInfo.MAIN_HEADPHONES) != 0 - || (newRoutes.mainType&AudioRoutesInfo.MAIN_HEADSET) != 0) { + if ((newRoutes.mainType & AudioRoutesInfo.MAIN_HEADPHONES) != 0 + || (newRoutes.mainType & AudioRoutesInfo.MAIN_HEADSET) != 0) { name = com.android.internal.R.string.default_audio_route_name_headphones; - } else if ((newRoutes.mainType&AudioRoutesInfo.MAIN_DOCK_SPEAKERS) != 0) { + } else if ((newRoutes.mainType & AudioRoutesInfo.MAIN_DOCK_SPEAKERS) != 0) { name = com.android.internal.R.string.default_audio_route_name_dock_speakers; - } else if ((newRoutes.mainType&AudioRoutesInfo.MAIN_HDMI) != 0) { + } else if ((newRoutes.mainType & AudioRoutesInfo.MAIN_HDMI) != 0) { name = com.android.internal.R.string.default_media_route_name_hdmi; } else { name = com.android.internal.R.string.default_audio_route_name; } mDefaultAudioVideo.mNameResId = name; dispatchRouteChanged(mDefaultAudioVideo); - updated = true; - } - final int mainType = mCurAudioRoutesInfo.mainType; + if ((newRoutes.mainType & (AudioRoutesInfo.MAIN_HEADSET + | AudioRoutesInfo.MAIN_HEADPHONES | AudioRoutesInfo.MAIN_USB)) != 0) { + forceUseDefaultRoute = true; + } + audioRoutesChanged = true; + } if (!TextUtils.equals(newRoutes.bluetoothName, mCurAudioRoutesInfo.bluetoothName)) { + forceUseDefaultRoute = false; mCurAudioRoutesInfo.bluetoothName = newRoutes.bluetoothName; if (mCurAudioRoutesInfo.bluetoothName != null) { if (mBluetoothA2dpRoute == null) { @@ -219,8 +223,6 @@ public class MediaRouter { info.mDeviceType = RouteInfo.DEVICE_TYPE_BLUETOOTH; mBluetoothA2dpRoute = info; addRouteStatic(mBluetoothA2dpRoute); - mSystemAudioRoute = mBluetoothA2dpRoute; - selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mSystemAudioRoute, false); } else { mBluetoothA2dpRoute.mName = mCurAudioRoutesInfo.bluetoothName; dispatchRouteChanged(mBluetoothA2dpRoute); @@ -229,33 +231,26 @@ public class MediaRouter { // BT disconnected removeRouteStatic(mBluetoothA2dpRoute); mBluetoothA2dpRoute = null; - mSystemAudioRoute = mDefaultAudioVideo; - selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mSystemAudioRoute, false); - } - updated = true; - } - - if (mBluetoothA2dpRoute != null) { - final boolean a2dpEnabled = isBluetoothA2dpOn(); - if (mSelectedRoute == mBluetoothA2dpRoute && !a2dpEnabled) { - // A2DP off - mSystemAudioRoute = mDefaultAudioVideo; - updated = true; - } else if ((mSelectedRoute == mDefaultAudioVideo || mSelectedRoute == null) && - a2dpEnabled) { - // A2DP on or BT connected - mSystemAudioRoute = mBluetoothA2dpRoute; - updated = true; } + audioRoutesChanged = true; } - if (updated) { + + if (audioRoutesChanged) { Log.v(TAG, "Audio routes updated: " + newRoutes + ", a2dp=" + isBluetoothA2dpOn()); + if (mSelectedRoute == null || mSelectedRoute == mDefaultAudioVideo + || mSelectedRoute == mBluetoothA2dpRoute) { + if (forceUseDefaultRoute || mBluetoothA2dpRoute == null) { + selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mDefaultAudioVideo, false); + } else { + selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mBluetoothA2dpRoute, false); + } + } } } boolean isBluetoothA2dpOn() { try { - return mAudioService.isBluetoothA2dpOn(); + return mBluetoothA2dpRoute != null && mAudioService.isBluetoothA2dpOn(); } catch (RemoteException e) { Log.e(TAG, "Error querying Bluetooth A2DP state", e); return false; @@ -603,15 +598,20 @@ public class MediaRouter { @Override public void onRestoreRoute() { - if ((mSelectedRoute != mDefaultAudioVideo && mSelectedRoute != mBluetoothA2dpRoute) - || mSelectedRoute == mSystemAudioRoute) { - return; - } - try { - sStatic.mAudioService.setBluetoothA2dpOn(mSelectedRoute == mBluetoothA2dpRoute); - } catch (RemoteException e) { - Log.e(TAG, "Error changing Bluetooth A2DP state", e); - } + mHandler.post(new Runnable() { + @Override + public void run() { + // Skip restoring route if the selected route is not a system audio route, + // MediaRouter is initializing, or mClient was changed. + if (Client.this != mClient || mSelectedRoute == null + || (mSelectedRoute != mDefaultAudioVideo + && mSelectedRoute != mBluetoothA2dpRoute)) { + return; + } + Log.v(TAG, "onRestoreRoute() : route=" + mSelectedRoute); + mSelectedRoute.select(); + } + }); } } } @@ -943,10 +943,12 @@ public class MediaRouter { Log.v(TAG, "Selecting route: " + route); assert(route != null); final RouteInfo oldRoute = sStatic.mSelectedRoute; + final RouteInfo currentSystemRoute = sStatic.isBluetoothA2dpOn() + ? sStatic.mBluetoothA2dpRoute : sStatic.mDefaultAudioVideo; boolean wasDefaultOrBluetoothRoute = (oldRoute == sStatic.mDefaultAudioVideo || oldRoute == sStatic.mBluetoothA2dpRoute); if (oldRoute == route - && (!wasDefaultOrBluetoothRoute || oldRoute == sStatic.mSystemAudioRoute)) { + && (!wasDefaultOrBluetoothRoute || route == currentSystemRoute)) { return; } if (!route.matchesTypes(types)) { @@ -1017,8 +1019,7 @@ public class MediaRouter { static void selectDefaultRouteStatic() { // TODO: Be smarter about the route types here; this selects for all valid. - if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute - && sStatic.mBluetoothA2dpRoute != null && sStatic.isBluetoothA2dpOn()) { + if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute && sStatic.isBluetoothA2dpOn()) { selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false); } else { selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false); @@ -1266,7 +1267,9 @@ public class MediaRouter { } static void dispatchRouteChanged(RouteInfo info, int oldSupportedTypes) { - Log.v(TAG, "Dispatching route change: " + info); + if (DEBUG) { + Log.d(TAG, "Dispatching route change: " + info); + } final int newSupportedTypes = info.mSupportedTypes; for (CallbackInfo cbi : sStatic.mCallbacks) { // Reconstruct some of the history for callbacks that may not have observed diff --git a/media/java/android/media/PlaybackParams.java b/media/java/android/media/PlaybackParams.java index 021dbf2507cf61b2f1949e885eb6d2af48e4aa01..938a953ae8585e2080108f3dfcd03332cfeaae5e 100644 --- a/media/java/android/media/PlaybackParams.java +++ b/media/java/android/media/PlaybackParams.java @@ -174,7 +174,7 @@ public final class PlaybackParams implements Parcelable { * Sets the pitch factor. * @param pitch * @return this PlaybackParams instance. - * @throws InvalidArgumentException if the pitch is negative + * @throws IllegalArgumentException if the pitch is negative. */ public PlaybackParams setPitch(float pitch) { if (pitch < 0.f) { diff --git a/media/java/android/media/PlayerBase.java b/media/java/android/media/PlayerBase.java index 9bd93aa31abf89ec46cac701a023a9e5b219426f..09449a183d968135f01e04974a9da217284c7520 100644 --- a/media/java/android/media/PlayerBase.java +++ b/media/java/android/media/PlayerBase.java @@ -127,8 +127,9 @@ public abstract class PlayerBase { Log.e(TAG, "Error talking to audio service, STARTED state will not be tracked", e); } synchronized (mLock) { + boolean attributesChanged = (mAttributes != attr); mAttributes = attr; - updateAppOpsPlayAudio_sync(); + updateAppOpsPlayAudio_sync(attributesChanged); } } @@ -200,16 +201,13 @@ public abstract class PlayerBase { } void baseSetVolume(float leftVolume, float rightVolume) { - final boolean hasAppOpsPlayAudio; + final boolean isRestricted; synchronized (mLock) { mLeftVolume = leftVolume; mRightVolume = rightVolume; - hasAppOpsPlayAudio = mHasAppOpsPlayAudio; - if (isRestricted_sync()) { - return; - } + isRestricted = isRestricted_sync(); } - playerSetVolume(!hasAppOpsPlayAudio/*muting*/, + playerSetVolume(isRestricted/*muting*/, leftVolume * mPanMultiplierL, rightVolume * mPanMultiplierR); } @@ -250,7 +248,7 @@ public abstract class PlayerBase { private void updateAppOpsPlayAudio() { synchronized (mLock) { - updateAppOpsPlayAudio_sync(); + updateAppOpsPlayAudio_sync(false); } } @@ -258,7 +256,7 @@ public abstract class PlayerBase { * To be called whenever a condition that might affect audibility of this player is updated. * Must be called synchronized on mLock. */ - void updateAppOpsPlayAudio_sync() { + void updateAppOpsPlayAudio_sync(boolean attributesChanged) { boolean oldHasAppOpsPlayAudio = mHasAppOpsPlayAudio; try { int mode = AppOpsManager.MODE_IGNORED; @@ -275,8 +273,10 @@ public abstract class PlayerBase { // AppsOps alters a player's volume; when the restriction changes, reflect it on the actual // volume used by the player try { - if (oldHasAppOpsPlayAudio != mHasAppOpsPlayAudio) { - if (mHasAppOpsPlayAudio) { + if (oldHasAppOpsPlayAudio != mHasAppOpsPlayAudio || + attributesChanged) { + getService().playerHasOpPlayAudio(mPlayerIId, mHasAppOpsPlayAudio); + if (!isRestricted_sync()) { if (DEBUG_APP_OPS) { Log.v(TAG, "updateAppOpsPlayAudio: unmuting player, vol=" + mLeftVolume + "/" + mRightVolume); diff --git a/media/java/android/media/SyncParams.java b/media/java/android/media/SyncParams.java index 319eacba50b160ed2a3f3e25c4757754bd7d82c0..9f6bfe14bd616d08b4e0871a282796a6ee28e6c3 100644 --- a/media/java/android/media/SyncParams.java +++ b/media/java/android/media/SyncParams.java @@ -232,7 +232,7 @@ public final class SyncParams { * the maximum deviation of the playback rate from the playback rate * set. ({@code abs(actual_rate - set_rate) / set_rate}) * @return this SyncParams instance. - * @throws InvalidArgumentException if the tolerance is negative, or not less than one + * @throws IllegalArgumentException if the tolerance is negative, or not less than one. */ public SyncParams setTolerance(float tolerance) { if (tolerance < 0.f || tolerance >= 1.f) { diff --git a/media/java/android/media/audiofx/AcousticEchoCanceler.java b/media/java/android/media/audiofx/AcousticEchoCanceler.java index f5f98efeb94f7d7242d4f5b00262975ab778d409..3a44df4d1a42709cf9e7e0a5d5714b39ff5951d6 100644 --- a/media/java/android/media/audiofx/AcousticEchoCanceler.java +++ b/media/java/android/media/audiofx/AcousticEchoCanceler.java @@ -20,7 +20,7 @@ import android.util.Log; /** * Acoustic Echo Canceler (AEC). - *

        Acoustic Echo Canceler (AEC) is an audio pre-processing which removes the contribution of the + *

        Acoustic Echo Canceler (AEC) is an audio pre-processor which removes the contribution of the * signal received from the remote party from the captured audio signal. *

        AEC is used by voice communication applications (voice chat, video conferencing, SIP calls) * where the presence of echo with significant delay in the signal received from the remote party diff --git a/media/java/android/media/audiofx/AutomaticGainControl.java b/media/java/android/media/audiofx/AutomaticGainControl.java index 4a6b1f307f9c5a3bc21ed0dd2bae0bd6a72de47e..a76b4de7a627ef501c931af26e7ccb4048e8d986 100644 --- a/media/java/android/media/audiofx/AutomaticGainControl.java +++ b/media/java/android/media/audiofx/AutomaticGainControl.java @@ -20,7 +20,7 @@ import android.util.Log; /** * Automatic Gain Control (AGC). - *

        Automatic Gain Control (AGC) is an audio pre-processing which automatically normalizes the + *

        Automatic Gain Control (AGC) is an audio pre-processor which automatically normalizes the * output of the captured signal by boosting or lowering input from the microphone to match a preset * level so that the output signal level is virtually constant. * AGC can be used by applications where the input signal dynamic range is not important but where diff --git a/media/java/android/media/audiofx/NoiseSuppressor.java b/media/java/android/media/audiofx/NoiseSuppressor.java index bca990f1c9765f1035a7b3608af637a00c7a8c52..70cc87cc7aaa4a58511e79c1fc2bc703466d82ab 100644 --- a/media/java/android/media/audiofx/NoiseSuppressor.java +++ b/media/java/android/media/audiofx/NoiseSuppressor.java @@ -20,7 +20,7 @@ import android.util.Log; /** * Noise Suppressor (NS). - *

        Noise suppression (NS) is an audio pre-processing which removes background noise from the + *

        Noise suppression (NS) is an audio pre-processor which removes background noise from the * captured signal. The component of the signal considered as noise can be either stationary * (car/airplane engine, AC system) or non-stationary (other peoples conversations, car horn) for * more advanced implementations. diff --git a/media/java/android/media/audiopolicy/AudioPolicy.java b/media/java/android/media/audiopolicy/AudioPolicy.java index 61d642f50179d33e032dfd36d167e403b6deee43..7e88c277cc23007abf74b83d2464e828a6dff7b7 100644 --- a/media/java/android/media/audiopolicy/AudioPolicy.java +++ b/media/java/android/media/audiopolicy/AudioPolicy.java @@ -186,9 +186,9 @@ public class AudioPolicy { /** * Declares whether this policy will grant and deny audio focus through - * the {@link AudioPolicy.AudioPolicyStatusListener}. + * the {@link AudioPolicy.AudioPolicyFocusListener}. * If set to {@code true}, it is mandatory to set an - * {@link AudioPolicy.AudioPolicyStatusListener} in order to successfully build + * {@link AudioPolicy.AudioPolicyFocusListener} in order to successfully build * an {@code AudioPolicy} instance. * @param enforce true if the policy will govern audio focus decisions. * @return the same Builder instance. diff --git a/media/java/android/media/browse/MediaBrowser.java b/media/java/android/media/browse/MediaBrowser.java index ece19e46e4790a6f6bccea113b8edcf66cfc3b35..c9b096fb124c4258deaa5a813e72dce2bc384951 100644 --- a/media/java/android/media/browse/MediaBrowser.java +++ b/media/java/android/media/browse/MediaBrowser.java @@ -256,7 +256,13 @@ public final class MediaBrowser { */ private void forceCloseConnection() { if (mServiceConnection != null) { - mContext.unbindService(mServiceConnection); + try { + mContext.unbindService(mServiceConnection); + } catch (IllegalArgumentException e) { + if (DBG) { + Log.d(TAG, "unbindService failed", e); + } + } } mState = CONNECT_STATE_DISCONNECTED; mServiceConnection = null; @@ -445,6 +451,9 @@ public final class MediaBrowser { ResultReceiver receiver = new ResultReceiver(mHandler) { @Override protected void onReceiveResult(int resultCode, Bundle resultData) { + if (!isConnected()) { + return; + } if (resultCode != 0 || resultData == null || !resultData.containsKey(MediaBrowserService.KEY_MEDIA_ITEM)) { cb.onError(mediaId); diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java index e02a4dcba9e4649664a34e875db165c17b23046b..b215825cbfb4796b84b9e9c79ee2384b4ffbd55c 100644 --- a/media/java/android/media/session/MediaSessionManager.java +++ b/media/java/android/media/session/MediaSessionManager.java @@ -546,18 +546,23 @@ public final class MediaSessionManager { private final IActiveSessionsListener.Stub mStub = new IActiveSessionsListener.Stub() { @Override public void onActiveSessionsChanged(final List tokens) { - if (mHandler != null) { - mHandler.post(new Runnable() { + final Handler handler = mHandler; + if (handler != null) { + handler.post(new Runnable() { @Override public void run() { - if (mListener != null) { + final Context context = mContext; + if (context != null) { ArrayList controllers = new ArrayList(); int size = tokens.size(); for (int i = 0; i < size; i++) { - controllers.add(new MediaController(mContext, tokens.get(i))); + controllers.add(new MediaController(context, tokens.get(i))); + } + final OnActiveSessionsChangedListener listener = mListener; + if (listener != null) { + listener.onActiveSessionsChanged(controllers); } - mListener.onActiveSessionsChanged(controllers); } } }); @@ -566,8 +571,8 @@ public final class MediaSessionManager { }; private void release() { - mContext = null; mListener = null; + mContext = null; mHandler = null; } } diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java index 102e02da9f7067b469757dd2558594d25bfe4339..48fb5bffffd376043bd1b0671568def50420a8b6 100644 --- a/media/java/android/media/tv/TvContract.java +++ b/media/java/android/media/tv/TvContract.java @@ -730,6 +730,13 @@ public final class TvContract { return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_PROGRAM); } + /** + * Returns {@code true}, if {@code uri} is a recorded program URI. + */ + public static boolean isRecordedProgramUri(Uri uri) { + return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_RECORDED_PROGRAM); + } + /** * Requests to make a channel browsable. * diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java index 9264fe473f62f69ccd2a0769a074e10ff8cd4339..6b329f8ec694753326a8f16bdd97b99d43485921 100644 --- a/media/java/android/media/tv/TvView.java +++ b/media/java/android/media/tv/TvView.java @@ -22,6 +22,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.content.Context; +import android.content.pm.PackageManager; import android.graphics.Canvas; import android.graphics.PorterDuff; import android.graphics.Rect; @@ -199,6 +200,7 @@ public class TvView extends ViewGroup { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE) public void setMain() { synchronized (sMainTvViewLock) { sMainTvView = new WeakReference<>(this); @@ -679,7 +681,8 @@ public class TvView extends ViewGroup { // Other app may have shown its own main TvView. // Set main again to regain main session. synchronized (sMainTvViewLock) { - if (hasFocus && this == sMainTvView.get() && mSession != null) { + if (hasFocus && this == sMainTvView.get() && mSession != null + && checkChangeHdmiCecActiveSourcePermission()) { mSession.setMain(); } } @@ -847,6 +850,12 @@ public class TvView extends ViewGroup { return frame; } + private boolean checkChangeHdmiCecActiveSourcePermission() { + return getContext().checkSelfPermission( + android.Manifest.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE) + == PackageManager.PERMISSION_GRANTED; + } + /** * Callback used to receive time shift position changes. */ @@ -1079,7 +1088,8 @@ public class TvView extends ViewGroup { mPendingAppPrivateCommands.clear(); synchronized (sMainTvViewLock) { - if (hasWindowFocus() && TvView.this == sMainTvView.get()) { + if (hasWindowFocus() && TvView.this == sMainTvView.get() + && checkChangeHdmiCecActiveSourcePermission()) { mSession.setMain(); } } diff --git a/media/java/android/mtp/MtpConstants.java b/media/java/android/mtp/MtpConstants.java index 7d078d7a97cf528924862d9c618a547d889c9b94..88e287e6264fe5e6358286ac558560fbf9fbe95c 100644 --- a/media/java/android/mtp/MtpConstants.java +++ b/media/java/android/mtp/MtpConstants.java @@ -211,6 +211,8 @@ public final class MtpConstants { public static final int FORMAT_JPX = 0x3810; /** Format code for DNG files */ public static final int FORMAT_DNG = 0x3811; + /** Format code for HEIF files {@hide} */ + public static final int FORMAT_HEIF = 0x3812; /** Format code for firmware files */ public static final int FORMAT_UNDEFINED_FIRMWARE = 0xB802; /** Format code for Windows image files */ diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java index 09a04bc1a508b5468bd9f3d3e939c4b0cbb834f6..ba29d2daaa0e2216016d6b51d370e7c0a217399d 100755 --- a/media/java/android/mtp/MtpDatabase.java +++ b/media/java/android/mtp/MtpDatabase.java @@ -52,6 +52,7 @@ import java.util.concurrent.atomic.AtomicBoolean; public class MtpDatabase implements AutoCloseable { private static final String TAG = "MtpDatabase"; + private final Context mUserContext; private final Context mContext; private final String mPackageName; private final ContentProviderClient mMediaProvider; @@ -159,13 +160,14 @@ public class MtpDatabase implements AutoCloseable { } }; - public MtpDatabase(Context context, String volumeName, String storagePath, + public MtpDatabase(Context context, Context userContext, String volumeName, String storagePath, String[] subDirectories) { native_setup(); mContext = context; + mUserContext = userContext; mPackageName = context.getPackageName(); - mMediaProvider = context.getContentResolver() + mMediaProvider = userContext.getContentResolver() .acquireContentProviderClient(MediaStore.AUTHORITY); mVolumeName = volumeName; mMediaStoragePath = storagePath; @@ -610,6 +612,7 @@ public class MtpDatabase implements AutoCloseable { MtpConstants.FORMAT_XML_DOCUMENT, MtpConstants.FORMAT_FLAC, MtpConstants.FORMAT_DNG, + MtpConstants.FORMAT_HEIF, }; } @@ -720,6 +723,7 @@ public class MtpDatabase implements AutoCloseable { case MtpConstants.FORMAT_PNG: case MtpConstants.FORMAT_BMP: case MtpConstants.FORMAT_DNG: + case MtpConstants.FORMAT_HEIF: return IMAGE_PROPERTIES; default: return FILE_PROPERTIES; @@ -1155,7 +1159,7 @@ public class MtpDatabase implements AutoCloseable { private void sessionEnded() { if (mDatabaseModified) { - mContext.sendBroadcast(new Intent(MediaStore.ACTION_MTP_SESSION_END)); + mUserContext.sendBroadcast(new Intent(MediaStore.ACTION_MTP_SESSION_END)); mDatabaseModified = false; } } diff --git a/media/java/android/service/media/MediaBrowserService.java b/media/java/android/service/media/MediaBrowserService.java index b52906ddd1aed49c7017b494e5641f60e1227d8b..4fc43ea78537296ef2bd7662fdf1f96c8f2399e3 100644 --- a/media/java/android/service/media/MediaBrowserService.java +++ b/media/java/android/service/media/MediaBrowserService.java @@ -110,12 +110,22 @@ public abstract class MediaBrowserService extends Service { /** * All the info about a connection. */ - private class ConnectionRecord { + private class ConnectionRecord implements IBinder.DeathRecipient { String pkg; Bundle rootHints; IMediaBrowserServiceCallbacks callbacks; BrowserRoot root; HashMap>> subscriptions = new HashMap<>(); + + @Override + public void binderDied() { + mHandler.post(new Runnable() { + @Override + public void run() { + mConnections.remove(callbacks.asBinder()); + } + }); + } } /** @@ -207,7 +217,6 @@ public abstract class MediaBrowserService extends Service { connection.pkg = pkg; connection.rootHints = rootHints; connection.callbacks = callbacks; - connection.root = MediaBrowserService.this.onGetRoot(pkg, uid, rootHints); // If they didn't return something, don't allow this client. @@ -223,6 +232,7 @@ public abstract class MediaBrowserService extends Service { } else { try { mConnections.put(b, connection); + b.linkToDeath(connection, 0); if (mSession != null) { callbacks.onConnect(connection.root.getRootId(), mSession, connection.root.getExtras()); @@ -248,6 +258,7 @@ public abstract class MediaBrowserService extends Service { final ConnectionRecord old = mConnections.remove(b); if (old != null) { // TODO + old.callbacks.asBinder().unlinkToDeath(old, 0); } } }); @@ -700,6 +711,13 @@ public abstract class MediaBrowserService extends Service { new Result(itemId) { @Override void onResultSent(MediaBrowser.MediaItem item, @ResultFlags int flag) { + if (mConnections.get(connection.callbacks.asBinder()) != connection) { + if (DBG) { + Log.d(TAG, "Not sending onLoadItem result for connection that has" + + " been disconnected. pkg=" + connection.pkg + " id=" + itemId); + } + return; + } if ((flag & RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED) != 0) { receiver.send(RESULT_ERROR, null); return; diff --git a/media/jni/Android.bp b/media/jni/Android.bp index 9686ab5cafb149193e29be77bf50346b77b2487d..02667ca070a4393f590eb32e13377d7b1472a1b5 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -50,6 +50,12 @@ cc_library_shared { "libexif", "libpiex", "libandroidfw", + "libhidlbase", + "libhidltransport", + "android.hardware.cas@1.0", + "android.hardware.cas.native@1.0", + "android.hidl.memory@1.0", + "android.hidl.token@1.0-utils", ], header_libs: ["libhardware_headers"], diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 8c965e74315d92bdbd5db01ad3d741c9f840a9ee..022198beae45b1fb83efa8882b4152d95d6a55c4 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -21,6 +21,7 @@ #include "android_media_MediaCodec.h" #include "android_media_MediaCrypto.h" +#include "android_media_MediaDescrambler.h" #include "android_media_MediaMetricsJNI.h" #include "android_media_Utils.h" #include "android_runtime/AndroidRuntime.h" @@ -29,7 +30,7 @@ #include "jni.h" #include -#include +#include #include @@ -136,7 +137,7 @@ JMediaCodec::JMediaCodec( mLooper->start( false, // runOnCallingThread true, // canCallJava - PRIORITY_FOREGROUND); + ANDROID_PRIORITY_VIDEO); if (nameIsType) { mCodec = MediaCodec::CreateByType(mLooper, name, encoder, &mInitStatus); @@ -1010,8 +1011,7 @@ static void android_media_MediaCodec_native_configure( sp descrambler; if (descramblerBinderObj != NULL) { - sp binder = ibinderForJavaObject(env, descramblerBinderObj); - descrambler = interface_cast(binder); + descrambler = JDescrambler::GetDescrambler(env, descramblerBinderObj); } err = codec->configure(format, bufferProducer, crypto, descrambler, flags); @@ -1726,7 +1726,7 @@ static void android_media_MediaCodec_setVideoScalingMode( if (mode != NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW && mode != NATIVE_WINDOW_SCALING_MODE_SCALE_CROP) { - jniThrowException(env, "java/lang/InvalidArgumentException", NULL); + jniThrowException(env, "java/lang/IllegalArgumentException", NULL); return; } @@ -1952,7 +1952,7 @@ static const JNINativeMethod gMethods[] = { { "native_configure", "([Ljava/lang/String;[Ljava/lang/Object;Landroid/view/Surface;" - "Landroid/media/MediaCrypto;Landroid/os/IBinder;I)V", + "Landroid/media/MediaCrypto;Landroid/os/IHwBinder;I)V", (void *)android_media_MediaCodec_native_configure }, { "native_setSurface", diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h index c9a1700215a47d0751060bf4cb7d85a6fcc9cafb..2ec8703adc8311ee08f8f1dd136074cc7c882efd 100644 --- a/media/jni/android_media_MediaCodec.h +++ b/media/jni/android_media_MediaCodec.h @@ -36,10 +36,13 @@ class IGraphicBufferProducer; struct MediaCodec; struct PersistentSurface; class Surface; -namespace media { -class IDescrambler; -}; -using namespace media; +namespace hardware { +namespace cas { +namespace native { +namespace V1_0 { +struct IDescrambler; +}}}} +using hardware::cas::native::V1_0::IDescrambler; struct JMediaCodec : public AHandler { JMediaCodec( diff --git a/media/jni/android_media_MediaDescrambler.cpp b/media/jni/android_media_MediaDescrambler.cpp index 85d33b7730079fde8487301d9f2346bf947b4799..bee52188e798eae83c73a481adbf4547ec1ade59 100644 --- a/media/jni/android_media_MediaDescrambler.cpp +++ b/media/jni/android_media_MediaDescrambler.cpp @@ -20,16 +20,19 @@ #include "android_media_MediaDescrambler.h" #include "android_runtime/AndroidRuntime.h" -#include "android_util_Binder.h" +#include "android_os_HwRemoteBinder.h" #include "JNIHelp.h" -#include +#include +#include #include +#include #include #include namespace android { -using media::MediaDescrambler::DescrambleInfo; + +using hardware::hidl_handle; struct fields_t { jfieldID context; @@ -94,10 +97,9 @@ static status_t getBufferAndSize( } JDescrambler::JDescrambler(JNIEnv *env, jobject descramblerBinderObj) { - sp cas; - if (descramblerBinderObj != NULL) { - sp binder = ibinderForJavaObject(env, descramblerBinderObj); - mDescrambler = interface_cast(binder); + mDescrambler = GetDescrambler(env, descramblerBinderObj); + if (mDescrambler == NULL) { + jniThrowException(env, "java/lang/NullPointerException", NULL); } } @@ -108,9 +110,23 @@ JDescrambler::~JDescrambler() { mDealer.clear(); } -void JDescrambler::ensureBufferCapacity(size_t neededSize) { +// static +sp JDescrambler::GetDescrambler(JNIEnv *env, jobject obj) { + if (obj != NULL) { + sp hwBinder = + JHwRemoteBinder::GetNativeContext(env, obj)->getBinder(); + + if (hwBinder != NULL) { + return hardware::fromBinder< + IDescrambler, BpHwDescrambler, BnHwDescrambler>(hwBinder); + } + } + return NULL; +} + +bool JDescrambler::ensureBufferCapacity(size_t neededSize) { if (mMem != NULL && mMem->size() >= neededSize) { - return; + return true; } ALOGV("ensureBufferCapacity: current size %zu, new size %zu", @@ -122,49 +138,84 @@ void JDescrambler::ensureBufferCapacity(size_t neededSize) { neededSize = (neededSize + 65535) & ~65535; mDealer = new MemoryDealer(neededSize, "JDescrambler"); mMem = mDealer->allocate(neededSize); + + ssize_t offset; + size_t size; + sp heap = mMem->getMemory(&offset, &size); + if (heap == NULL) { + return false; + } + + native_handle_t* nativeHandle = native_handle_create(1, 0); + if (!nativeHandle) { + ALOGE("ensureBufferCapacity: failed to create native handle"); + return false; + } + nativeHandle->data[0] = heap->getHeapID(); + mDescramblerSrcBuffer.heapBase = hidl_memory("ashmem", + hidl_handle(nativeHandle), heap->getSize()); + mDescramblerSrcBuffer.offset = (uint64_t) offset; + mDescramblerSrcBuffer.size = (uint64_t) size; + return true; } -Status JDescrambler::descramble( +status_t JDescrambler::descramble( jbyte key, - size_t numSubSamples, ssize_t totalLength, - DescramblerPlugin::SubSample *subSamples, + const hidl_vec& subSamples, const void *srcPtr, jint srcOffset, void *dstPtr, jint dstOffset, - ssize_t *result) { + Status *status, + uint32_t *bytesWritten, + hidl_string *detailedError) { // TODO: IDescrambler::descramble() is re-entrant, however because we // only have 1 shared mem buffer, we can only do 1 descramble at a time. // Concurrency might be improved by allowing on-demand allocation of up // to 2 shared mem buffers. Mutex::Autolock autolock(mSharedMemLock); - ensureBufferCapacity(totalLength); + if (!ensureBufferCapacity(totalLength)) { + return NO_MEMORY; + } memcpy(mMem->pointer(), (const void*)((const uint8_t*)srcPtr + srcOffset), totalLength); - DescrambleInfo info; - info.dstType = DescrambleInfo::kDestinationTypeVmPointer; - info.numSubSamples = numSubSamples; - info.scramblingControl = (DescramblerPlugin::ScramblingControl) key; - info.subSamples = subSamples; - info.srcMem = mMem; - info.srcOffset = 0; - info.dstPtr = NULL; - info.dstOffset = 0; - - int32_t descrambleResult; - Status status = mDescrambler->descramble(info, &descrambleResult); - - if (status.isOk()) { - *result = (descrambleResult <= totalLength) ? descrambleResult : -1; - if (*result > 0) { - memcpy((void*)((uint8_t*)dstPtr + dstOffset), mMem->pointer(), *result); + DestinationBuffer dstBuffer; + dstBuffer.type = BufferType::SHARED_MEMORY; + dstBuffer.nonsecureMemory = mDescramblerSrcBuffer; + + auto err = mDescrambler->descramble( + (ScramblingControl) key, + subSamples, + mDescramblerSrcBuffer, + 0, + dstBuffer, + 0, + [&status, &bytesWritten, &detailedError] ( + Status _status, uint32_t _bytesWritten, + const hidl_string& _detailedError) { + *status = _status; + *bytesWritten = _bytesWritten; + *detailedError = _detailedError; + }); + + if (!err.isOk()) { + return FAILED_TRANSACTION; + } + + if (*status == Status::OK) { + if (*bytesWritten > 0 && (ssize_t) *bytesWritten <= totalLength) { + memcpy((void*)((uint8_t*)dstPtr + dstOffset), mMem->pointer(), *bytesWritten); + } else { + // status seems OK but bytesWritten is invalid, we really + // have no idea what is wrong. + *status = Status::ERROR_CAS_UNKNOWN; } } - return status; + return OK; } } // namespace android @@ -191,10 +242,10 @@ static void android_media_MediaDescrambler_native_setup( static ssize_t getSubSampleInfo(JNIEnv *env, jint numSubSamples, jintArray numBytesOfClearDataObj, jintArray numBytesOfEncryptedDataObj, - DescramblerPlugin::SubSample **outSubSamples) { + hidl_vec *outSubSamples) { - if (numSubSamples <= 0 || numSubSamples >= - (signed)(INT32_MAX / sizeof(DescramblerPlugin::SubSample)) ) { + if (numSubSamples <= 0 || + numSubSamples >= (signed)(INT32_MAX / sizeof(SubSample))) { // subSamples array may silently overflow if number of samples are // too large. Use INT32_MAX as maximum allocation size may be less // than SIZE_MAX on some platforms. @@ -215,24 +266,23 @@ static ssize_t getSubSampleInfo(JNIEnv *env, jint numSubSamples, ? NULL : env->GetIntArrayElements(numBytesOfEncryptedDataObj, &isCopy); - DescramblerPlugin::SubSample *subSamples = - new(std::nothrow) DescramblerPlugin::SubSample[numSubSamples]; - + outSubSamples->resize(numSubSamples); + SubSample *subSamples = outSubSamples->data(); if (subSamples == NULL) { ALOGE("Failed to allocate SubSample array!"); return -1; } for (jint i = 0; i < numSubSamples; ++i) { - subSamples[i].mNumBytesOfClearData = + subSamples[i].numBytesOfClearData = (numBytesOfClearData == NULL) ? 0 : numBytesOfClearData[i]; - subSamples[i].mNumBytesOfEncryptedData = + subSamples[i].numBytesOfEncryptedData = (numBytesOfEncryptedData == NULL) ? 0 : numBytesOfEncryptedData[i]; - totalSize += subSamples[i].mNumBytesOfClearData + - subSamples[i].mNumBytesOfEncryptedData; + totalSize += subSamples[i].numBytesOfClearData + + subSamples[i].numBytesOfEncryptedData; } if (numBytesOfEncryptedData != NULL) { @@ -248,12 +298,9 @@ static ssize_t getSubSampleInfo(JNIEnv *env, jint numSubSamples, } if (totalSize < 0) { - delete[] subSamples; return -1; } - *outSubSamples = subSamples; - return totalSize; } @@ -280,12 +327,6 @@ static jthrowable createServiceSpecificException( clazz.get(), ctor, serviceSpecificError, msgObj.get()); } -static void throwServiceSpecificException( - JNIEnv *env, int serviceSpecificError, const char *msg) { - jthrowable exception = createServiceSpecificException(env, serviceSpecificError, msg); - env->Throw(exception); -} - static jint android_media_MediaDescrambler_native_descramble( JNIEnv *env, jobject thiz, jbyte key, jint numSubSamples, jintArray numBytesOfClearDataObj, jintArray numBytesOfEncryptedDataObj, @@ -293,11 +334,12 @@ static jint android_media_MediaDescrambler_native_descramble( jobject dstBuf, jint dstOffset, jint dstLimit) { sp descrambler = getDescrambler(env, thiz); if (descrambler == NULL) { - jniThrowException(env, "java/lang/IllegalStateException", NULL); + jniThrowException(env, "java/lang/IllegalStateException", + "Invalid descrambler object!"); return -1; } - DescramblerPlugin::SubSample *subSamples = NULL; + hidl_vec subSamples; ssize_t totalLength = getSubSampleInfo( env, numSubSamples, numBytesOfClearDataObj, numBytesOfEncryptedDataObj, &subSamples); @@ -307,7 +349,6 @@ static jint android_media_MediaDescrambler_native_descramble( return -1; } - ssize_t result = -1; void *srcPtr = NULL, *dstPtr = NULL; jbyteArray srcArray = NULL, dstArray = NULL; status_t err = getBufferAndSize( @@ -329,13 +370,15 @@ static jint android_media_MediaDescrambler_native_descramble( } Status status; - if (err == OK) { - status = descrambler->descramble( - key, numSubSamples, totalLength, subSamples, - srcPtr, srcOffset, dstPtr, dstOffset, &result); - } + uint32_t bytesWritten; + hidl_string detailedError; + + err = descrambler->descramble( + key, totalLength, subSamples, + srcPtr, srcOffset, dstPtr, dstOffset, + &status, &bytesWritten, &detailedError); - delete[] subSamples; + // Release byte array before throwing if (srcArray != NULL) { env->ReleaseByteArrayElements(srcArray, (jbyte *)srcPtr, 0); } @@ -343,51 +386,17 @@ static jint android_media_MediaDescrambler_native_descramble( env->ReleaseByteArrayElements(dstArray, (jbyte *)dstPtr, 0); } - if (!status.isOk()) { - switch (status.exceptionCode()) { - case Status::EX_SECURITY: - jniThrowException(env, "java/lang/SecurityException", - status.exceptionMessage()); - break; - case Status::EX_BAD_PARCELABLE: - jniThrowException(env, "java/lang/BadParcelableException", - status.exceptionMessage()); - break; - case Status::EX_ILLEGAL_ARGUMENT: - jniThrowException(env, "java/lang/IllegalArgumentException", - status.exceptionMessage()); - break; - case Status::EX_NULL_POINTER: - jniThrowException(env, "java/lang/NullPointerException", - status.exceptionMessage()); - break; - case Status::EX_ILLEGAL_STATE: - jniThrowException(env, "java/lang/IllegalStateException", - status.exceptionMessage()); - break; - case Status::EX_NETWORK_MAIN_THREAD: - jniThrowException(env, "java/lang/NetworkOnMainThreadException", - status.exceptionMessage()); - break; - case Status::EX_UNSUPPORTED_OPERATION: - jniThrowException(env, "java/lang/UnsupportedOperationException", - status.exceptionMessage()); - break; - case Status::EX_SERVICE_SPECIFIC: - throwServiceSpecificException(env, status.serviceSpecificErrorCode(), - status.exceptionMessage()); - break; - default: - { - String8 msg; - msg.appendFormat("Unknown exception code: %d, msg: %s", - status.exceptionCode(), status.exceptionMessage().string()); - jniThrowException(env, "java/lang/RuntimeException", msg.string()); - break; - } - } + if (err == NO_MEMORY) { + jniThrowException(env, "java/lang/OutOfMemoryError", NULL); + } else if (err == FAILED_TRANSACTION) { + jniThrowException(env, "android/os/RemoteException", NULL); + } else if (status != Status::OK) { + // Throw ServiceSpecific with cas error code and detailed msg, + // which will be re-thrown as MediaCasStateException. + env->Throw(createServiceSpecificException( + env, (int) status, detailedError.c_str())); } - return result; + return bytesWritten; } static const JNINativeMethod gMethods[] = { @@ -395,7 +404,7 @@ static const JNINativeMethod gMethods[] = { (void *)android_media_MediaDescrambler_native_release }, { "native_init", "()V", (void *)android_media_MediaDescrambler_native_init }, - { "native_setup", "(Landroid/os/IBinder;)V", + { "native_setup", "(Landroid/os/IHwBinder;)V", (void *)android_media_MediaDescrambler_native_setup }, { "native_descramble", "(BI[I[ILjava/nio/ByteBuffer;IILjava/nio/ByteBuffer;II)I", (void *)android_media_MediaDescrambler_native_descramble }, diff --git a/media/jni/android_media_MediaDescrambler.h b/media/jni/android_media_MediaDescrambler.h index aeef05e7968d90ee4c47a229833a26b7e3525e10..015fad22e13b988a8f02699f051bef7666217d32 100644 --- a/media/jni/android_media_MediaDescrambler.h +++ b/media/jni/android_media_MediaDescrambler.h @@ -19,34 +19,37 @@ #include "jni.h" -#include -#include +#include + #include #include -#include namespace android { class IMemory; class MemoryDealer; -namespace media { -class IDescrambler; -}; -using namespace media; -using binder::Status; + +using hardware::hidl_memory; +using hardware::hidl_string; +using hardware::hidl_vec; +using namespace hardware::cas::V1_0; +using namespace hardware::cas::native::V1_0; struct JDescrambler : public RefBase { JDescrambler(JNIEnv *env, jobject descramberBinderObj); - Status descramble( + status_t descramble( jbyte key, - size_t numSubSamples, ssize_t totalLength, - DescramblerPlugin::SubSample *subSamples, + const hidl_vec& subSamples, const void *srcPtr, jint srcOffset, void *dstPtr, jint dstOffset, - ssize_t *result); + Status *status, + uint32_t *bytesWritten, + hidl_string *detailedError); + + static sp GetDescrambler(JNIEnv *env, jobject obj); protected: virtual ~JDescrambler(); @@ -55,9 +58,11 @@ private: sp mDescrambler; sp mMem; sp mDealer; + SharedBuffer mDescramblerSrcBuffer; + Mutex mSharedMemLock; - void ensureBufferCapacity(size_t neededSize); + bool ensureBufferCapacity(size_t neededSize); DISALLOW_EVIL_CONSTRUCTORS(JDescrambler); }; diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp index 9e5d3d12f0bd6a29f9696beb3014ad5ec030ae60..c9657b119bdb332fd5736b2b68537253b49fa95e 100644 --- a/media/jni/android_media_MediaExtractor.cpp +++ b/media/jni/android_media_MediaExtractor.cpp @@ -18,16 +18,20 @@ #define LOG_TAG "MediaExtractor-JNI" #include +#include "android_media_MediaDataSource.h" #include "android_media_MediaExtractor.h" #include "android_media_MediaMetricsJNI.h" - #include "android_media_Utils.h" +#include "android_os_HwRemoteBinder.h" #include "android_runtime/AndroidRuntime.h" #include "android_runtime/Log.h" +#include "android_util_Binder.h" #include "jni.h" #include "JNIHelp.h" -#include "android_media_MediaDataSource.h" +#include +#include +#include #include #include #include @@ -37,14 +41,12 @@ #include #include #include -#include - #include -#include "android_util_Binder.h" - namespace android { +using namespace hardware::cas::V1_0; + struct fields_t { jfieldID context; @@ -89,8 +91,28 @@ status_t JMediaExtractor::setDataSource(const sp &datasource) { return mImpl->setDataSource(datasource); } -status_t JMediaExtractor::setMediaCas(const sp &cas) { - return mImpl->setMediaCas(cas); +status_t JMediaExtractor::setMediaCas(JNIEnv *env, jobject casBinderObj) { + if (casBinderObj == NULL) { + return BAD_VALUE; + } + + sp hwBinder = + JHwRemoteBinder::GetNativeContext(env, casBinderObj)->getBinder(); + if (hwBinder == NULL) { + return BAD_VALUE; + } + + sp cas = hardware::fromBinder(hwBinder); + if (cas == NULL) { + return BAD_VALUE; + } + + HalToken halToken; + if (!createHalToken(cas, &halToken)) { + return BAD_VALUE; + } + + return mImpl->setMediaCas(halToken); } size_t JMediaExtractor::countTracks() const { @@ -748,23 +770,13 @@ static void android_media_MediaExtractor_setMediaCas( return; } - if (casBinderObj == NULL) { - jniThrowException(env, "java/lang/IllegalArgumentException", NULL); - return; - } - - sp cas; - if (casBinderObj != NULL) { - sp binder = ibinderForJavaObject(env, casBinderObj); - cas = interface_cast(binder); - } - status_t err = extractor->setMediaCas(cas); + status_t err = extractor->setMediaCas(env, casBinderObj); if (err != OK) { - cas.clear(); + extractor.clear(); jniThrowException( env, - "java/io/IllegalArgumentException", + "java/lang/IllegalArgumentException", "Failed to set MediaCas on extractor."); } } @@ -896,7 +908,7 @@ static const JNINativeMethod gMethods[] = { { "setDataSource", "(Landroid/media/MediaDataSource;)V", (void *)android_media_MediaExtractor_setDataSourceCallback }, - { "nativeSetMediaCas", "(Landroid/os/IBinder;)V", + { "nativeSetMediaCas", "(Landroid/os/IHwBinder;)V", (void *)android_media_MediaExtractor_setMediaCas }, { "getCachedDuration", "()J", diff --git a/media/jni/android_media_MediaExtractor.h b/media/jni/android_media_MediaExtractor.h index 3d8c50b809ac9eb0f46a1760ab4ccbe8c87b7a41..94d36f25ae1c87ecdb1f7c8d9bb6cedabdddcf5c 100644 --- a/media/jni/android_media_MediaExtractor.h +++ b/media/jni/android_media_MediaExtractor.h @@ -28,10 +28,6 @@ #include "jni.h" namespace android { -namespace media { -class ICas; -}; -using namespace media; struct IMediaHTTPService; class MetaData; @@ -48,7 +44,7 @@ struct JMediaExtractor : public RefBase { status_t setDataSource(int fd, off64_t offset, off64_t size); status_t setDataSource(const sp &source); - status_t setMediaCas(const sp &cas); + status_t setMediaCas(JNIEnv *env, jobject casBinderObj); size_t countTracks() const; status_t getTrackFormat(size_t index, jobject *format) const; diff --git a/media/jni/android_media_MediaMetadataRetriever.cpp b/media/jni/android_media_MediaMetadataRetriever.cpp index 71f3856d60d37860c7a5ba8f3de8412735816fd8..4659ae131f53d35aeb1ab824b5c3e51399c970ea 100644 --- a/media/jni/android_media_MediaMetadataRetriever.cpp +++ b/media/jni/android_media_MediaMetadataRetriever.cpp @@ -244,9 +244,11 @@ static void rotate(T *dst, const T *src, size_t width, size_t height, int angle) } } -static jobject android_media_MediaMetadataRetriever_getFrameAtTime(JNIEnv *env, jobject thiz, jlong timeUs, jint option) +static jobject android_media_MediaMetadataRetriever_getFrameAtTime( + JNIEnv *env, jobject thiz, jlong timeUs, jint option, jint dst_width, jint dst_height) { - ALOGV("getFrameAtTime: %lld us option: %d", (long long)timeUs, option); + ALOGV("getFrameAtTime: %lld us option: %d dst width: %d heigh: %d", + (long long)timeUs, option, dst_width, dst_height); MediaMetadataRetriever* retriever = getRetriever(env, thiz); if (retriever == 0) { jniThrowException(env, "java/lang/IllegalStateException", "No retriever available"); @@ -274,15 +276,19 @@ static jobject android_media_MediaMetadataRetriever_getFrameAtTime(JNIEnv *env, fields.createConfigMethod, GraphicsJNI::colorTypeToLegacyBitmapConfig(kRGB_565_SkColorType)); - uint32_t width, height; + uint32_t width, height, displayWidth, displayHeight; bool swapWidthAndHeight = false; if (videoFrame->mRotationAngle == 90 || videoFrame->mRotationAngle == 270) { width = videoFrame->mHeight; height = videoFrame->mWidth; swapWidthAndHeight = true; + displayWidth = videoFrame->mDisplayHeight; + displayHeight = videoFrame->mDisplayWidth; } else { width = videoFrame->mWidth; height = videoFrame->mHeight; + displayWidth = videoFrame->mDisplayWidth; + displayHeight = videoFrame->mDisplayHeight; } jobject jBitmap = env->CallStaticObjectMethod( @@ -308,22 +314,26 @@ static jobject android_media_MediaMetadataRetriever_getFrameAtTime(JNIEnv *env, videoFrame->mHeight, videoFrame->mRotationAngle); - if (videoFrame->mDisplayWidth != videoFrame->mWidth || - videoFrame->mDisplayHeight != videoFrame->mHeight) { - uint32_t displayWidth = videoFrame->mDisplayWidth; - uint32_t displayHeight = videoFrame->mDisplayHeight; - if (swapWidthAndHeight) { - displayWidth = videoFrame->mDisplayHeight; - displayHeight = videoFrame->mDisplayWidth; - } + if (dst_width <= 0 || dst_height <= 0) { + dst_width = displayWidth; + dst_height = displayHeight; + } else { + float factor = std::min((float)dst_width / (float)displayWidth, + (float)dst_height / (float)displayHeight); + dst_width = std::round(displayWidth * factor); + dst_height = std::round(displayHeight * factor); + } + + if ((uint32_t)dst_width != videoFrame->mWidth || + (uint32_t)dst_height != videoFrame->mHeight) { ALOGV("Bitmap dimension is scaled from %dx%d to %dx%d", - width, height, displayWidth, displayHeight); + width, height, dst_width, dst_height); jobject scaledBitmap = env->CallStaticObjectMethod(fields.bitmapClazz, - fields.createScaledBitmapMethod, - jBitmap, - displayWidth, - displayHeight, - true); + fields.createScaledBitmapMethod, + jBitmap, + dst_width, + dst_height, + true); return scaledBitmap; } @@ -474,7 +484,7 @@ static const JNINativeMethod nativeMethods[] = { {"setDataSource", "(Ljava/io/FileDescriptor;JJ)V", (void *)android_media_MediaMetadataRetriever_setDataSourceFD}, {"_setDataSource", "(Landroid/media/MediaDataSource;)V", (void *)android_media_MediaMetadataRetriever_setDataSourceCallback}, - {"_getFrameAtTime", "(JI)Landroid/graphics/Bitmap;", (void *)android_media_MediaMetadataRetriever_getFrameAtTime}, + {"_getFrameAtTime", "(JIII)Landroid/graphics/Bitmap;", (void *)android_media_MediaMetadataRetriever_getFrameAtTime}, {"extractMetadata", "(I)Ljava/lang/String;", (void *)android_media_MediaMetadataRetriever_extractMetadata}, {"getEmbeddedPicture", "(I)[B", (void *)android_media_MediaMetadataRetriever_getEmbeddedPicture}, {"release", "()V", (void *)android_media_MediaMetadataRetriever_release}, diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 08bf4e144b2fafc5989520b85e84aa6c729edea8..9ee99a4f8d0ac835b91b65b846f95794e5361aea 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -866,6 +866,7 @@ MtpResponseCode MyMtpDatabase::getObjectInfo(MtpObjectHandle handle, // read EXIF data for thumbnail information switch (info.mFormat) { case MTP_FORMAT_EXIF_JPEG: + case MTP_FORMAT_HEIF: case MTP_FORMAT_JFIF: { ExifData *exifdata = exif_data_new_from_file(path); if (exifdata) { @@ -923,6 +924,7 @@ void* MyMtpDatabase::getThumbnail(MtpObjectHandle handle, size_t& outThumbSize) if (getObjectFilePath(handle, path, length, format) == MTP_RESPONSE_OK) { switch (format) { case MTP_FORMAT_EXIF_JPEG: + case MTP_FORMAT_HEIF: case MTP_FORMAT_JFIF: { ExifData *exifdata = exif_data_new_from_file(path); if (exifdata) { diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java index fcb861ce07da19755b24a3b27777a63753cf8503..cf5882f92b00af8116c4974cd9c82e8f7d11c854 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraBinderTest.java @@ -271,7 +271,7 @@ public class CameraBinderTest extends AndroidTestCase { * @see android.hardware.camera2.ICameraDeviceCallbacks#onRepeatingRequestError() */ @Override - public void onRepeatingRequestError(long lastFrameNumber) { + public void onRepeatingRequestError(long lastFrameNumber, int repeatingRequestId) { // TODO Auto-generated method stub } } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java index 476f0166ca0da210bc8235b8054b5b68d7bcff73..e628b6825208bf0c8bf472f98b71b63095f4429e 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java @@ -161,7 +161,7 @@ public class CameraDeviceBinderTest extends AndroidTestCase { * @see android.hardware.camera2.ICameraDeviceCallbacks#onRepeatingRequestError() */ @Override - public void onRepeatingRequestError(long lastFrameNumber) { + public void onRepeatingRequestError(long lastFrameNumber, int repeatingRequestId) { // TODO Auto-generated method stub } } diff --git a/native/android/include/android/multinetwork.h b/native/android/include/android/multinetwork.h new file mode 120000 index 0000000000000000000000000000000000000000..0feab3aa27cd17dc7d67c48c9bf64838124bfd82 --- /dev/null +++ b/native/android/include/android/multinetwork.h @@ -0,0 +1 @@ +../../../../../native/include/android/multinetwork.h \ No newline at end of file diff --git a/native/android/include/multinetwork.h b/native/android/include/multinetwork.h deleted file mode 120000 index f9d051aa9f24121065812f64f3a2935ce53faa41..0000000000000000000000000000000000000000 --- a/native/android/include/multinetwork.h +++ /dev/null @@ -1 +0,0 @@ -../../../../native/include/android/multinetwork.h \ No newline at end of file diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 27b2d4442caf4268923333910159eba53a4276c6..3d5ee39e37d3800f748ca08cd994cfc237d862e1 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -198,6 +198,7 @@ LIBANDROID { ASharedMemory_create; # introduced=26 ASharedMemory_getSize; # introduced=26 ASharedMemory_setProt; # introduced=26 + ASharedMemory_dupFromJava; # introduced=27 AStorageManager_delete; AStorageManager_getMountedObbPath; AStorageManager_isObbMounted; diff --git a/native/android/sharedmem.cpp b/native/android/sharedmem.cpp index 9d029dfad41a85cab4e33223776bc4199c937978..757aaecab40d7f9064e0179e33820fa19a0ee846 100644 --- a/native/android/sharedmem.cpp +++ b/native/android/sharedmem.cpp @@ -14,10 +14,36 @@ * limitations under the License. */ +#include + #include +#include #include +#include #include +#include +#include + +static struct { + jclass clazz; + jmethodID getFd; +} sSharedMemory; + +static void jniInit(JNIEnv* env) { + static std::once_flag sJniInitialized; + std::call_once(sJniInitialized, [](JNIEnv* env) { + jclass clazz = env->FindClass("android/os/SharedMemory"); + LOG_ALWAYS_FATAL_IF(clazz == nullptr, "Failed to find android.os.SharedMemory"); + sSharedMemory.clazz = (jclass) env->NewGlobalRef(clazz); + LOG_ALWAYS_FATAL_IF(sSharedMemory.clazz == nullptr, + "Failed to create global ref of android.os.SharedMemory"); + sSharedMemory.getFd = env->GetMethodID(sSharedMemory.clazz, "getFd", "()I"); + LOG_ALWAYS_FATAL_IF(sSharedMemory.getFd == nullptr, + "Failed to find method SharedMemory#getFd()"); + }, env); +} + int ASharedMemory_create(const char *name, size_t size) { if (size == 0) { return android::BAD_VALUE; @@ -32,3 +58,20 @@ size_t ASharedMemory_getSize(int fd) { int ASharedMemory_setProt(int fd, int prot) { return ashmem_set_prot_region(fd, prot); } + +int ASharedMemory_dupFromJava(JNIEnv* env, jobject javaSharedMemory) { + if (env == nullptr || javaSharedMemory == nullptr) { + return -1; + } + jniInit(env); + if (!env->IsInstanceOf(javaSharedMemory, sSharedMemory.clazz)) { + ALOGW("ASharedMemory_dupFromJava called with object " + "that's not an instanceof android.os.SharedMemory"); + return -1; + } + int fd = env->CallIntMethod(javaSharedMemory, sSharedMemory.getFd); + if (fd != -1) { + fd = dup(fd); + } + return fd; +} diff --git a/native/webview/Android.mk b/native/webview/Android.mk new file mode 100644 index 0000000000000000000000000000000000000000..a2a93d7d664d2a18c9d97e9a8bef372f8ebd846e --- /dev/null +++ b/native/webview/Android.mk @@ -0,0 +1,19 @@ +# +# 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. +# + +# Include all the makefiles for subdirectories. +include $(call all-subdir-makefiles) + diff --git a/native/webview/OWNERS b/native/webview/OWNERS new file mode 100644 index 0000000000000000000000000000000000000000..deee852093d771c235ff2b2e21cea428526b5444 --- /dev/null +++ b/native/webview/OWNERS @@ -0,0 +1,4 @@ +boliu@google.com +sgurun@google.com +tobiasjs@google.com +torne@google.com diff --git a/tests/MusicServiceDemo/Android.mk b/native/webview/loader/Android.mk similarity index 51% rename from tests/MusicServiceDemo/Android.mk rename to native/webview/loader/Android.mk index feef67a9ca7faf6501aa74888bfc2f2794d3e0ad..e8a7d9743cb99781dff91dc088ee71636fcd780d 100644 --- a/tests/MusicServiceDemo/Android.mk +++ b/native/webview/loader/Android.mk @@ -1,4 +1,5 @@ -# Copyright (C) 2013 The Android Open Source Project +# +# 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. @@ -12,24 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +# This package provides the system interfaces required to load WebView. + LOCAL_PATH := $(call my-dir) +# Loader library which handles address space reservation and relro sharing. +# Does NOT link any native chromium code. include $(CLEAR_VARS) -LOCAL_PACKAGE_NAME := MusicServiceDemo -#LOCAL_SDK_VERSION := current -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := \ - android-support-v4 \ - android-support-v7-appcompat - -LOCAL_RESOURCE_DIR := \ - $(LOCAL_PATH)/res \ - frameworks/support/v7/appcompat/res -LOCAL_PROGUARD_ENABLED := disabled -#LOCAL_PROGUARD_FLAG_FILES := proguard.flags - -LOCAL_AAPT_FLAGS := \ - --auto-add-overlay \ - --extra-packages android.support.v7.appcompat -include $(BUILD_PACKAGE) +LOCAL_MODULE:= libwebviewchromium_loader + +LOCAL_SRC_FILES := \ + loader.cpp \ + +LOCAL_CFLAGS := \ + -Werror \ + +LOCAL_SHARED_LIBRARIES += \ + libdl \ + liblog \ + libnativeloader \ + +LOCAL_MODULE_TAGS := optional + +include $(BUILD_SHARED_LIBRARY) + diff --git a/native/webview/loader/loader.cpp b/native/webview/loader/loader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..376dbb84490645399217afaee758afe821eaa857 --- /dev/null +++ b/native/webview/loader/loader.cpp @@ -0,0 +1,259 @@ +/* + * Copyright (C) 2014 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. + */ + +// Uncomment for verbose logging. +// #define LOG_NDEBUG 0 +#define LOG_TAG "webviewchromiumloader" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0]))) + +namespace android { +namespace { + +void* gReservedAddress = NULL; +size_t gReservedSize = 0; + +jint LIBLOAD_SUCCESS; +jint LIBLOAD_FAILED_TO_OPEN_RELRO_FILE; +jint LIBLOAD_FAILED_TO_LOAD_LIBRARY; +jint LIBLOAD_FAILED_JNI_CALL; +jint LIBLOAD_FAILED_TO_FIND_NAMESPACE; + +jboolean DoReserveAddressSpace(jlong size) { + size_t vsize = static_cast(size); + + void* addr = mmap(NULL, vsize, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (addr == MAP_FAILED) { + ALOGE("Failed to reserve %zd bytes of address space for future load of " + "libwebviewchromium.so: %s", + vsize, strerror(errno)); + return JNI_FALSE; + } + gReservedAddress = addr; + gReservedSize = vsize; + ALOGV("Reserved %zd bytes at %p", vsize, addr); + return JNI_TRUE; +} + +jboolean DoCreateRelroFile(const char* lib, const char* relro) { + // Try to unlink the old file, since if this is being called, the old one is + // obsolete. + if (unlink(relro) != 0 && errno != ENOENT) { + // If something went wrong other than the file not existing, log a warning + // but continue anyway in the hope that we can successfully overwrite the + // existing file with rename() later. + ALOGW("Failed to unlink old file %s: %s", relro, strerror(errno)); + } + static const char tmpsuffix[] = ".XXXXXX"; + char relro_tmp[strlen(relro) + sizeof(tmpsuffix)]; + strlcpy(relro_tmp, relro, sizeof(relro_tmp)); + strlcat(relro_tmp, tmpsuffix, sizeof(relro_tmp)); + int tmp_fd = TEMP_FAILURE_RETRY(mkstemp(relro_tmp)); + if (tmp_fd == -1) { + ALOGE("Failed to create temporary file %s: %s", relro_tmp, strerror(errno)); + return JNI_FALSE; + } + android_dlextinfo extinfo; + extinfo.flags = ANDROID_DLEXT_RESERVED_ADDRESS | ANDROID_DLEXT_WRITE_RELRO; + extinfo.reserved_addr = gReservedAddress; + extinfo.reserved_size = gReservedSize; + extinfo.relro_fd = tmp_fd; + void* handle = android_dlopen_ext(lib, RTLD_NOW, &extinfo); + int close_result = close(tmp_fd); + if (handle == NULL) { + ALOGE("Failed to load library %s: %s", lib, dlerror()); + unlink(relro_tmp); + return JNI_FALSE; + } + if (close_result != 0 || + chmod(relro_tmp, S_IRUSR | S_IRGRP | S_IROTH) != 0 || + rename(relro_tmp, relro) != 0) { + ALOGE("Failed to update relro file %s: %s", relro, strerror(errno)); + unlink(relro_tmp); + return JNI_FALSE; + } + ALOGV("Created relro file %s for library %s", relro, lib); + return JNI_TRUE; +} + +jint DoLoadWithRelroFile(JNIEnv* env, const char* lib, const char* relro, + jobject clazzLoader) { + int relro_fd = TEMP_FAILURE_RETRY(open(relro, O_RDONLY)); + if (relro_fd == -1) { + ALOGE("Failed to open relro file %s: %s", relro, strerror(errno)); + return LIBLOAD_FAILED_TO_OPEN_RELRO_FILE; + } + android_namespace_t* ns = + android::FindNamespaceByClassLoader(env, clazzLoader); + if (ns == NULL) { + ALOGE("Failed to find classloader namespace"); + return LIBLOAD_FAILED_TO_FIND_NAMESPACE; + } + android_dlextinfo extinfo; + extinfo.flags = ANDROID_DLEXT_RESERVED_ADDRESS | ANDROID_DLEXT_USE_RELRO | + ANDROID_DLEXT_USE_NAMESPACE; + extinfo.reserved_addr = gReservedAddress; + extinfo.reserved_size = gReservedSize; + extinfo.relro_fd = relro_fd; + extinfo.library_namespace = ns; + void* handle = android_dlopen_ext(lib, RTLD_NOW, &extinfo); + close(relro_fd); + if (handle == NULL) { + ALOGE("Failed to load library %s: %s", lib, dlerror()); + return LIBLOAD_FAILED_TO_LOAD_LIBRARY; + } + ALOGV("Loaded library %s with relro file %s", lib, relro); + return LIBLOAD_SUCCESS; +} + +/******************************************************************************/ +/* JNI wrappers - handle string lifetimes and 32/64 ABI choice */ +/******************************************************************************/ + +jboolean ReserveAddressSpace(JNIEnv*, jclass, jlong size) { + return DoReserveAddressSpace(size); +} + +jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, + jstring relro32, jstring relro64) { +#ifdef __LP64__ + jstring lib = lib64; + jstring relro = relro64; + (void)lib32; (void)relro32; +#else + jstring lib = lib32; + jstring relro = relro32; + (void)lib64; (void)relro64; +#endif + jboolean ret = JNI_FALSE; + const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); + if (lib_utf8 != NULL) { + const char* relro_utf8 = env->GetStringUTFChars(relro, NULL); + if (relro_utf8 != NULL) { + ret = DoCreateRelroFile(lib_utf8, relro_utf8); + env->ReleaseStringUTFChars(relro, relro_utf8); + } + env->ReleaseStringUTFChars(lib, lib_utf8); + } + return ret; +} + +jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro32, + jstring relro64, jobject clazzLoader) { +#ifdef __LP64__ + jstring relro = relro64; + (void)relro32; +#else + jstring relro = relro32; + (void)relro64; +#endif + jint ret = LIBLOAD_FAILED_JNI_CALL; + const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); + if (lib_utf8 != NULL) { + const char* relro_utf8 = env->GetStringUTFChars(relro, NULL); + if (relro_utf8 != NULL) { + ret = DoLoadWithRelroFile(env, lib_utf8, relro_utf8, clazzLoader); + env->ReleaseStringUTFChars(relro, relro_utf8); + } + env->ReleaseStringUTFChars(lib, lib_utf8); + } + return ret; +} + +const char kWebViewFactoryClassName[] = "android/webkit/WebViewFactory"; +const char kWebViewLibraryLoaderClassName[] = + "android/webkit/WebViewLibraryLoader"; +const JNINativeMethod kJniMethods[] = { + { "nativeReserveAddressSpace", "(J)Z", + reinterpret_cast(ReserveAddressSpace) }, + { "nativeCreateRelroFile", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", + reinterpret_cast(CreateRelroFile) }, + { "nativeLoadWithRelroFile", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", + reinterpret_cast(LoadWithRelroFile) }, +}; + +} // namespace + +void RegisterWebViewFactory(JNIEnv* env) { + // If either of these fail, it will set an exception that will be thrown on + // return, so no need to handle errors here. + jclass clazz = env->FindClass(kWebViewFactoryClassName); + if (clazz) { + LIBLOAD_SUCCESS = env->GetStaticIntField( + clazz, + env->GetStaticFieldID(clazz, "LIBLOAD_SUCCESS", "I")); + + LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = env->GetStaticIntField( + clazz, + env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_TO_OPEN_RELRO_FILE", "I")); + + LIBLOAD_FAILED_TO_LOAD_LIBRARY = env->GetStaticIntField( + clazz, + env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_TO_LOAD_LIBRARY", "I")); + + LIBLOAD_FAILED_JNI_CALL = env->GetStaticIntField( + clazz, + env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_JNI_CALL", "I")); + + LIBLOAD_FAILED_TO_FIND_NAMESPACE = env->GetStaticIntField( + clazz, + env->GetStaticFieldID(clazz, "LIBLOAD_FAILED_TO_FIND_NAMESPACE", "I")); + } +} + +void RegisterWebViewLibraryLoader(JNIEnv* env) { + // If either of these fail, it will set an exception that will be thrown on + // return, so no need to handle errors here. + jclass clazz = env->FindClass(kWebViewLibraryLoaderClassName); + if (clazz) { + env->RegisterNatives(clazz, kJniMethods, NELEM(kJniMethods)); + } +} + +} // namespace android + +JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void*) { + JNIEnv* env = NULL; + if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { + ALOGE("GetEnv failed"); + return JNI_ERR; + } + android::RegisterWebViewFactory(env); + // Ensure there isn't a pending Java exception before registering methods from + // WebViewLibraryLoader + if (!env->ExceptionCheck()) { + android::RegisterWebViewLibraryLoader(env); + } + return JNI_VERSION_1_6; +} diff --git a/packages/BackupRestoreConfirmation/res/values-da/strings.xml b/packages/BackupRestoreConfirmation/res/values-da/strings.xml index 3a749153a0b324728be485ff71ebd17e52054c7d..94872e2fcd002ee6be91101394bcc8d987900ba2 100644 --- a/packages/BackupRestoreConfirmation/res/values-da/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-da/strings.xml @@ -16,23 +16,23 @@ - "Fuld sikkerhedskopiering" + "Fuld backup" "Fuld genoprettelse" - "Der er anmodet om en fuld sikkerhedskopiering af alle data til en tilsluttet stationær computer. Vil du tillade dette?\n\nHvis du ikke har anmodet om sikkerhedskopiering, skal du ikke tillade denne handling." + "Der er anmodet om en fuld backup af alle data til en tilsluttet computer. Vil du tillade dette?\n\nHvis du ikke har anmodet om backup, skal du ikke tillade denne handling." "Sikkerhedskopiér mine data" "Undlad at sikkerhedskopiere" - "Der er anmodet om en fuld sikkerhedskopiering af alle data til en tilsluttet stationær computer. Vil du tillade dette?\n\nHvis du ikke har anmodet om sikkerhedskopiering, skal du ikke tillade denne handling." + "Der er anmodet om en fuld backup af alle data til en tilsluttet stationær computer. Vil du tillade dette?\n\nHvis du ikke har anmodet om backup, skal du ikke tillade denne handling." "Gendan mine data" "Gendan ikke" - "Indtast din aktuelle adgangskode til sikkerhedskopiering nedenfor:" + "Indtast din aktuelle adgangskode til backup nedenfor:" "Indtast adgangskoden til kryptering for din enhed nedenfor." "Indtast adgangskoden til kryptering for din enhed nedenfor. Denne bliver også brugt til at kryptere sikkerhedskopien af arkivet." - "Angiv en adgangskode, som skal bruges til kryptering af alle dine sikkerhedsdata. Hvis dette felt er tomt, bruges din aktuelle adgangskode til sikkerhedskopiering:" + "Angiv en adgangskode, som skal bruges til kryptering af alle dine sikkerhedsdata. Hvis dette felt er tomt, bruges din aktuelle adgangskode til backup:" "Hvis du ønsker at kryptere sikkerhedsdataene, skal du indtaste en adgangskode nedenfor:" "Eftersom din enhed er krypteret, skal du kryptere din backup. Indtast en adgangskode nedenfor:" "Hvis gendannelsesdataene er krypteret, skal du angive adgangskoden nedenfor:" - "Sikkerhedskopiering begynder..." - "Sikkerhedskopiering er færdig" + "Backup begynder..." + "Backup er færdig" "Gendannelse begynder..." "Gendannelse afsluttet" "Handling fik timeout" diff --git a/packages/BackupRestoreConfirmation/res/values-hy/strings.xml b/packages/BackupRestoreConfirmation/res/values-hy/strings.xml index 285c15d49a05e2ba5e2cef9b8f1328f8cd00eb81..ca9834e30f084234531d9db31dfe8a2b52796834 100644 --- a/packages/BackupRestoreConfirmation/res/values-hy/strings.xml +++ b/packages/BackupRestoreConfirmation/res/values-hy/strings.xml @@ -32,7 +32,7 @@ "Քանի որ ձեր սարքը գաղտնագրված է, դուք պետք է գաղտնագրեք նաև ձեր պահուստը: Խնդրում ենք ստորև սահմանել գաղտնաբառը՝" "Եթե ​​վերականգնվող տվյալները գաղտնագրված են, խնդրում ենք մուտքագրել գաղտնաբառը ստորև`" "Պահուստավորումը սկսվում է..." - "Պահուստավորումն ավարտվեց" + "Պահուստավորումն ավարտված է" "Վերականգնումը մեկնարկեց..." "Վերականգնումն ավարտվեց" "Գործողության ժամանակը սպառվեց" diff --git a/packages/CaptivePortalLogin/res/values-b+sr+Latn/strings.xml b/packages/CaptivePortalLogin/res/values-b+sr+Latn/strings.xml index fb05a9eddd7a2e64580f6a4fb0ebee312245413d..f2a6e076ce7bc3b17d295b3ba25023acbd5f844f 100644 --- a/packages/CaptivePortalLogin/res/values-b+sr+Latn/strings.xml +++ b/packages/CaptivePortalLogin/res/values-b+sr+Latn/strings.xml @@ -5,6 +5,7 @@ "Koristi ovu mrežu takvu kakva je" "Ne koristi ovu mrežu" "Prijavi me na mrežu" + "Prijavite se u: %1$s" "Mreža kojoj pokušavate da se pridružite ima bezbednosnih problema." "Na primer, stranica za prijavljivanje možda ne pripada prikazanoj organizaciji." "Ipak nastavi preko pregledača" diff --git a/packages/CaptivePortalLogin/res/values-be/strings.xml b/packages/CaptivePortalLogin/res/values-be/strings.xml index 5391946a67e04e5328b24efbbafcc35dfdd8d133..09ed1dec88ab4034022150bc3773080fb17fb277 100644 --- a/packages/CaptivePortalLogin/res/values-be/strings.xml +++ b/packages/CaptivePortalLogin/res/values-be/strings.xml @@ -5,6 +5,7 @@ "Выкарыстоўваць гэтую сетку як ёсць" "Не выкарыстоўваць гэту сетку" "Увайсці ў сетку" + "Увайсці ў %1$s" "У сеткі, да якой вы спрабуеце далучыцца, ёсць праблемы з бяспекай." "Напрыклад, старонка ўваходу можа не належаць указанай арганізацыі." "Усё роўна працягнуць праз браўзер" diff --git a/packages/CaptivePortalLogin/res/values-bs/strings.xml b/packages/CaptivePortalLogin/res/values-bs/strings.xml index 0b36cd0b96c48c1f65c339a60e06609390520dba..10be0e5294490f26174a68dd7737204e94390cd7 100644 --- a/packages/CaptivePortalLogin/res/values-bs/strings.xml +++ b/packages/CaptivePortalLogin/res/values-bs/strings.xml @@ -5,6 +5,7 @@ "Koristi ovu mrežu kakva jeste" "Ne koristi ovu mrežu" "Prijava na mrežu" + "Prijava na %1$s" "Mreža kojoj pokušavate pristupiti ima sigurnosnih problema." "Naprimjer, stranica za prijavu možda ne pripada prikazanoj organizaciji." "Ipak nastavi preko preglednika" diff --git a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java index 35c6a995247b7a9b54a9500f4ef431e78b0300e7..e13aba7e5fe6be4e2f5da22685879c350d1957ca 100644 --- a/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java +++ b/packages/CaptivePortalLogin/src/com/android/captiveportallogin/CaptivePortalLoginActivity.java @@ -62,6 +62,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Objects; import java.util.Random; +import java.util.concurrent.atomic.AtomicBoolean; public class CaptivePortalLoginActivity extends Activity { private static final String TAG = CaptivePortalLoginActivity.class.getSimpleName(); @@ -87,6 +88,8 @@ public class CaptivePortalLoginActivity extends Activity { private ConnectivityManager mCm; private boolean mLaunchBrowser = false; private MyWebViewClient mWebViewClient; + // Ensures that done() happens once exactly, handling concurrent callers with atomic operations. + private final AtomicBoolean isDone = new AtomicBoolean(false); @Override protected void onCreate(Bundle savedInstanceState) { @@ -183,13 +186,13 @@ public class CaptivePortalLoginActivity extends Activity { } private void done(Result result) { + if (isDone.getAndSet(true)) { + // isDone was already true: done() already called + return; + } if (DBG) { Log.d(TAG, String.format("Result %s for %s", result.name(), mUrl.toString())); } - if (mNetworkCallback != null) { - mCm.unregisterNetworkCallback(mNetworkCallback); - mNetworkCallback = null; - } logMetricsEvent(result.metricsEvent); switch (result) { case DISMISSED: @@ -249,8 +252,8 @@ public class CaptivePortalLoginActivity extends Activity { public void onDestroy() { super.onDestroy(); if (mNetworkCallback != null) { + // mNetworkCallback is not null if mUrl is not null. mCm.unregisterNetworkCallback(mNetworkCallback); - mNetworkCallback = null; } if (mLaunchBrowser) { // Give time for this network to become default. After 500ms just proceed. diff --git a/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml b/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml index 04926852f0e7f4e975469a1f5e5adfd9950a6b43..5d557900c40da9252db6180009d33776e7261b58 100644 --- a/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml +++ b/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml @@ -7,6 +7,8 @@ "Mobilni podaci su deaktivirani" "Dodirnite da biste posetili veb-sajt %s" "Kontaktirajte dobavljača usluge %s" + "Nema veze za prenos podataka preko mobilnog operatera" + "Dodajte podatke ili paket za roming preko operatera %s" "Status mobilnih podataka" "Prijavite se na mobilnu mrežu" "Mreža kojoj pokušavate da se pridružite ima bezbednosnih problema." diff --git a/packages/CarrierDefaultApp/res/values-be/strings.xml b/packages/CarrierDefaultApp/res/values-be/strings.xml index 12677f213b5818d06e8dc47749b0b34fd0b9b55f..3ad85f2b37b5a4900806065a6a6c702bb07263ec 100644 --- a/packages/CarrierDefaultApp/res/values-be/strings.xml +++ b/packages/CarrierDefaultApp/res/values-be/strings.xml @@ -7,6 +7,8 @@ "Перадача мабільных даных была дэактывавана" "Дакраніцеся, каб наведаць вэб-сайт %s" "Звярніцеся да свайго пастаўшчыка паслуг %s" + "Няма падключэння мабільнай перадачы даных" + "Дадаць тарыфны план або план для роўмінгу праз %s" "Статус мабільнага трафіка" "Увайсці ў мабільную сетку" "У сеткі, да якой вы спрабуеце далучыцца, ёсць праблемы з бяспекай." diff --git a/packages/CarrierDefaultApp/res/values-bs/strings.xml b/packages/CarrierDefaultApp/res/values-bs/strings.xml index 110924f6b5ccec68ace8fa35f1dee2c5b3d22f74..7edbb119f67c4ece04909e6f301a47019db11183 100644 --- a/packages/CarrierDefaultApp/res/values-bs/strings.xml +++ b/packages/CarrierDefaultApp/res/values-bs/strings.xml @@ -7,6 +7,8 @@ "Prijenos mobilnih podataka je deaktiviran" "Dodirnite da posjetite %s web lokaciju" "Obratite se pružaocu usluga %s" + "Nema mobilnog prijenosa podataka" + "Dodajte plan prijenosa podataka ili rominga putem operatera %s" "Status mobilnih podataka" "Prijava na mobilnu mrežu" "Mreža kojoj pokušavate pristupiti ima sigurnosnih problema." diff --git a/packages/CarrierDefaultApp/res/values-sw/strings.xml b/packages/CarrierDefaultApp/res/values-sw/strings.xml index c546fcee61865300928b94824fb37efc52afaaf2..a52a7333527679c922913809ef2e26866072ba6f 100644 --- a/packages/CarrierDefaultApp/res/values-sw/strings.xml +++ b/packages/CarrierDefaultApp/res/values-sw/strings.xml @@ -5,7 +5,7 @@ "Mtoa Huduma za Simu" "Data ya mtandao wa simu imekwisha" "Data yako ya mtandao wa simu imezimwa" - "Gonga ili utembelee tovuti ya %s" + "Gusa ili utembelee tovuti ya %s" "Tafadhali wasiliana na mtoa huduma wako %s" "Hakuna muunganisho wa data kwa simu za mkononi" "Ongeza mpango wa mitandao mingine au data kupitia %s" diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java index 8553bcf8100a04186daeb2b44ef8abe8798c8a52..95ec83dd9e1436723db00aae13a08a288b030688 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java @@ -82,6 +82,7 @@ public class CaptivePortalLoginActivity extends Activity { private MyWebViewClient mWebViewClient; private boolean mLaunchBrowser = false; private Thread mTestingThread = null; + private boolean mReload = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -291,9 +292,13 @@ public class CaptivePortalLoginActivity extends Activity { mCm.bindProcessToNetwork(network); mNetwork = network; runOnUiThreadIfNotFinishing(() -> { - // Start initial page load so WebView finishes loading proxy settings. - // Actual load of mUrl is initiated by MyWebViewClient. - mWebView.loadData("", "text/html", null); + if (mReload) { + mWebView.reload(); + } else { + // Start initial page load so WebView finishes loading proxy settings. + // Actual load of mUrl is initiated by MyWebViewClient. + mWebView.loadData("", "text/html", null); + } }); } @@ -306,6 +311,12 @@ public class CaptivePortalLoginActivity extends Activity { mWebView.loadUrl(mUrl.toString()); }); } + + @Override + public void onLost(Network lostNetwork) { + if (DBG) logd("Network lost"); + mReload = true; + } }; logd("request Network for captive portal"); mCm.requestNetwork(request, mNetworkCallback, NETWORK_REQUEST_TIMEOUT_MS); diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CarrierActionUtils.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CarrierActionUtils.java index a2bf964ec05f28a2cd2d25497949684f351e2b10..33cb596415d5abfb7987344cc8212a45ede84bef 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CarrierActionUtils.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CarrierActionUtils.java @@ -27,6 +27,7 @@ import android.content.res.Resources; import android.os.Bundle; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.text.TextUtils; import android.util.Log; import com.android.internal.telephony.PhoneConstants; import com.android.carrierdefaultapp.R; @@ -199,13 +200,19 @@ public class CarrierActionUtils { PendingIntent pendingIntent) { final TelephonyManager telephonyMgr = context.getSystemService(TelephonyManager.class); final Resources resources = context.getResources(); + String spn = telephonyMgr.getSimOperatorName(); + if (TextUtils.isEmpty(spn)) { + // There is no consistent way to get the current carrier name as MNOs didn't + // bother to set EF_SPN. in the long term, we should display a generic wording if + // spn from subscription is not set. + spn = telephonyMgr.getNetworkOperatorName(); + } final Bundle extras = Bundle.forPair(Notification.EXTRA_SUBSTITUTE_APP_NAME, resources.getString(R.string.android_system_label)); createNotificationChannels(context); Notification.Builder builder = new Notification.Builder(context) .setContentTitle(resources.getString(titleId)) - .setContentText(String.format(resources.getString(textId), - telephonyMgr.getNetworkOperatorName())) + .setContentText(String.format(resources.getString(textId), spn)) .setSmallIcon(R.drawable.ic_sim_card) .setColor(context.getColor( com.android.internal.R.color.system_notification_accent_color)) diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java index 0cf21d236041646b7220706eed3b00e3c031a317..7e23ee152ed94fc5f8fa43c528e9d1d339135116 100644 --- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java +++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/DeviceChooserActivity.java @@ -62,9 +62,14 @@ public class DeviceChooserActivity extends Activity { R.string.confirmation_title, getCallingAppName(), selectedDevice.getDisplayName()), 0)); + mPairButton = findViewById(R.id.button_pair); + mPairButton.setOnClickListener(v -> onDeviceConfirmed(getService().mSelectedDevice)); getService().mSelectedDevice = selectedDevice; + onSelectionUpdate(); } else { setContentView(R.layout.device_chooser); + mPairButton = findViewById(R.id.button_pair); + mPairButton.setVisibility(View.GONE); setTitle(Html.fromHtml(getString(R.string.chooser_title, getCallingAppName()), 0)); mDeviceListView = findViewById(R.id.device_list); final DeviceDiscoveryService.DevicesAdapter adapter = getService().mDevicesAdapter; @@ -72,16 +77,12 @@ public class DeviceChooserActivity extends Activity { adapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { - updatePairButtonEnabled(); + onSelectionUpdate(); } }); mDeviceListView.addFooterView(getProgressBar(), null, false); } - mPairButton = findViewById(R.id.button_pair); - mPairButton.setOnClickListener(v -> onPairTapped(getService().mSelectedDevice)); - updatePairButtonEnabled(); - mCancelButton = findViewById(R.id.button_cancel); mCancelButton.setOnClickListener(v -> cancel()); } @@ -134,15 +135,20 @@ public class DeviceChooserActivity extends Activity { return r.getDimensionPixelSize(R.dimen.padding); } - private void updatePairButtonEnabled() { - mPairButton.setEnabled(getService().mSelectedDevice != null); + private void onSelectionUpdate() { + DeviceFilterPair selectedDevice = getService().mSelectedDevice; + if (mPairButton.getVisibility() != View.VISIBLE && selectedDevice != null) { + onDeviceConfirmed(selectedDevice); + } else { + mPairButton.setEnabled(selectedDevice != null); + } } private DeviceDiscoveryService getService() { return DeviceDiscoveryService.sInstance; } - protected void onPairTapped(DeviceFilterPair selectedDevice) { + protected void onDeviceConfirmed(DeviceFilterPair selectedDevice) { getService().onDeviceSelected( getCallingPackage(), getDeviceMacAddress(selectedDevice.device)); setResult(RESULT_OK, diff --git a/packages/CtsShim/Android.mk b/packages/CtsShim/Android.mk index fa6423ecb8c7f6cce5154c4b1e347829ba13ea35..88b85e078f45043706c676d9c95d836f2d482d97 100644 --- a/packages/CtsShim/Android.mk +++ b/packages/CtsShim/Android.mk @@ -30,8 +30,11 @@ LOCAL_BUILT_MODULE_STEM := package.apk # Make sure the build system doesn't try to resign the APK LOCAL_CERTIFICATE := PRESIGNED LOCAL_DEX_PREOPT := false +LOCAL_MODULE_TARGET_ARCH := arm arm64 x86 x86_64 -LOCAL_SRC_FILES := CtsShimPriv.apk +my_archs := arm x86 +my_src_arch := $(call get-prebuilt-src-arch, $(my_archs)) +LOCAL_SRC_FILES := apk/$(my_src_arch)/CtsShimPriv.apk include $(BUILD_PREBUILT) @@ -48,8 +51,11 @@ LOCAL_BUILT_MODULE_STEM := package.apk # Make sure the build system doesn't try to resign the APK LOCAL_CERTIFICATE := PRESIGNED LOCAL_DEX_PREOPT := false +LOCAL_MODULE_TARGET_ARCH := arm arm64 x86 x86_64 -LOCAL_SRC_FILES := CtsShim.apk +my_archs := arm x86 +my_src_arch := $(call get-prebuilt-src-arch, $(my_archs)) +LOCAL_SRC_FILES := apk/$(my_src_arch)/CtsShim.apk include $(BUILD_PREBUILT) diff --git a/packages/CtsShim/CtsShim.apk b/packages/CtsShim/CtsShim.apk deleted file mode 100644 index 27289037dd8bdf5e062c0b20f8657734063b9f52..0000000000000000000000000000000000000000 Binary files a/packages/CtsShim/CtsShim.apk and /dev/null differ diff --git a/packages/CtsShim/CtsShimPriv.apk b/packages/CtsShim/CtsShimPriv.apk deleted file mode 100644 index 9a8e75c28b059af97a1e3538f2f594c97451f5df..0000000000000000000000000000000000000000 Binary files a/packages/CtsShim/CtsShimPriv.apk and /dev/null differ diff --git a/packages/CtsShim/apk/arm/CtsShim.apk b/packages/CtsShim/apk/arm/CtsShim.apk new file mode 100644 index 0000000000000000000000000000000000000000..a91160368cb8249aba90770620b0595c283ec065 Binary files /dev/null and b/packages/CtsShim/apk/arm/CtsShim.apk differ diff --git a/packages/CtsShim/apk/arm/CtsShimPriv.apk b/packages/CtsShim/apk/arm/CtsShimPriv.apk new file mode 100644 index 0000000000000000000000000000000000000000..845d781f38f318b1eca7221d754aa549bdc2a681 Binary files /dev/null and b/packages/CtsShim/apk/arm/CtsShimPriv.apk differ diff --git a/packages/CtsShim/apk/x86/CtsShim.apk b/packages/CtsShim/apk/x86/CtsShim.apk new file mode 100644 index 0000000000000000000000000000000000000000..a91160368cb8249aba90770620b0595c283ec065 Binary files /dev/null and b/packages/CtsShim/apk/x86/CtsShim.apk differ diff --git a/packages/CtsShim/apk/x86/CtsShimPriv.apk b/packages/CtsShim/apk/x86/CtsShimPriv.apk new file mode 100644 index 0000000000000000000000000000000000000000..2fc9a94037fa1a5b5879eeee236f292204bc82b7 Binary files /dev/null and b/packages/CtsShim/apk/x86/CtsShimPriv.apk differ diff --git a/packages/CtsShim/build/Android.mk b/packages/CtsShim/build/Android.mk index 21f0afe573bec914e69d1721048f031422a54776..ec14d50b371d94130b436514ef0a6f53ca2d8286 100644 --- a/packages/CtsShim/build/Android.mk +++ b/packages/CtsShim/build/Android.mk @@ -32,6 +32,9 @@ LOCAL_PACKAGE_NAME := CtsShimPrivUpgrade LOCAL_MANIFEST_FILE := shim_priv_upgrade/AndroidManifest.xml +LOCAL_MULTILIB := both +LOCAL_JNI_SHARED_LIBRARIES := libshim_jni + include $(BUILD_PACKAGE) my_shim_priv_upgrade_apk := $(LOCAL_BUILT_MODULE) @@ -60,6 +63,9 @@ my_shim_priv_upgrade_apk := LOCAL_FULL_MANIFEST_FILE := $(gen) +LOCAL_MULTILIB := both +LOCAL_JNI_SHARED_LIBRARIES := libshim_jni + include $(BUILD_PACKAGE) ########################################################### @@ -80,6 +86,9 @@ LOCAL_PACKAGE_NAME := CtsShimPrivUpgradeWrongSHA LOCAL_MANIFEST_FILE := shim_priv_upgrade/AndroidManifest.xml +LOCAL_MULTILIB := both +LOCAL_JNI_SHARED_LIBRARIES := libshim_jni + include $(BUILD_PACKAGE) @@ -99,3 +108,5 @@ LOCAL_MANIFEST_FILE := shim/AndroidManifest.xml include $(BUILD_PACKAGE) +########################################################### +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/CtsShim/build/README b/packages/CtsShim/build/README index 9869377738b80835e1238e06771bc0aab5d38f9a..59af068f0587104d13e7232c99d8ac7f4579842c 100644 --- a/packages/CtsShim/build/README +++ b/packages/CtsShim/build/README @@ -6,19 +6,34 @@ must specify the singular APK that can be used to upgrade it. NOTE: The need to include a binary on the system image may be deprecated if a solution involving a temporarily writable /system partition is implemented. -build: - $ tapas CtsShim CtsShimPriv CtsShimPrivUpgrade CtsShimPrivUpgradeWrongSHA +For local testing, build the apk and put them in the following folders. +This is for arm: + $ tapas CtsShim CtsShimPriv CtsShimPrivUpgrade CtsShimPrivUpgradeWrongSHA arm64 $ m + $ cp $OUT/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \ + cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm + $ cp $OUT/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \ + vendor/xts/gts-tests/hostsidetests/packagemanager/app/apk/arm/GtsShimPrivUpgrade.apk + $ cp $OUT/system/priv-app/CtsShimPrivUpgradeWrongSHA/CtsShimPrivUpgradeWrongSHA.apk \ + cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm + $ cp $OUT/system/priv-app/CtsShimPriv/CtsShimPriv.apk \ + frameworks/base/packages/CtsShim/apk/arm + $ cp $OUT/system/app/CtsShim/CtsShim.apk \ + frameworks/base/packages/CtsShim/apk/arm -local testing: +This is for x86: + $ tapas CtsShim CtsShimPriv CtsShimPrivUpgrade CtsShimPrivUpgradeWrongSHA x86_64 + $ m + $ cp $OUT/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \ + cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86 $ cp $OUT/system/priv-app/CtsShimPrivUpgrade/CtsShimPrivUpgrade.apk \ - cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp + vendor/xts/gts-tests/hostsidetests/packagemanager/app/apk/x86/GtsShimPrivUpgrade.apk $ cp $OUT/system/priv-app/CtsShimPrivUpgradeWrongSHA/CtsShimPrivUpgradeWrongSHA.apk \ - cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp + cts/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86 $ cp $OUT/system/priv-app/CtsShimPriv/CtsShimPriv.apk \ - frameworks/base/packages/CtsShim + frameworks/base/packages/CtsShim/apk/x86 $ cp $OUT/system/app/CtsShim/CtsShim.apk \ - frameworks/base/packages/CtsShim + frameworks/base/packages/CtsShim/apk/x86 For final submission, the APKs should be downloaded from the build server, then submitted to the cts/ and frameworks/base/ repos. diff --git a/tests/MusicBrowserDemo/Android.mk b/packages/CtsShim/build/jni/Android.mk similarity index 51% rename from tests/MusicBrowserDemo/Android.mk rename to packages/CtsShim/build/jni/Android.mk index 207774b07a0507bd9f6abf80ebeb51febe154a22..968fc0bb820356cef7a8500fff85697e4f3b3507 100644 --- a/tests/MusicBrowserDemo/Android.mk +++ b/packages/CtsShim/build/jni/Android.mk @@ -1,4 +1,5 @@ -# Copyright (C) 2014 The Android Open Source Project +# +# 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. @@ -11,25 +12,16 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_PACKAGE_NAME := MusicBrowserDemo -#LOCAL_SDK_VERSION := current -LOCAL_SRC_FILES := $(call all-java-files-under, src) -LOCAL_STATIC_JAVA_LIBRARIES := \ - android-support-v4 \ - android-support-v7-appcompat +LOCAL_MODULE := libshim_jni + +LOCAL_SRC_FILES := Shim.c -LOCAL_RESOURCE_DIR := \ - $(LOCAL_PATH)/res \ - frameworks/support/v7/appcompat/res -LOCAL_PROGUARD_ENABLED := disabled -#LOCAL_PROGUARD_FLAG_FILES := proguard.flags +LOCAL_SDK_VERSION := 24 -LOCAL_AAPT_FLAGS := \ - --auto-add-overlay \ - --extra-packages android.support.v7.appcompat -include $(BUILD_PACKAGE) +include $(BUILD_SHARED_LIBRARY) diff --git a/packages/CtsShim/build/jni/Shim.c b/packages/CtsShim/build/jni/Shim.c new file mode 100644 index 0000000000000000000000000000000000000000..44eb316f50b1452a8cf185ae76c492af1cb02edc --- /dev/null +++ b/packages/CtsShim/build/jni/Shim.c @@ -0,0 +1,17 @@ +/* + * 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. + */ + +#include \ No newline at end of file diff --git a/packages/CtsShim/build/shim_priv/AndroidManifest.xml b/packages/CtsShim/build/shim_priv/AndroidManifest.xml index 5195ef79d93b651e7a5c8e78a31099a4e880754e..9bf454c297680e5e3c60ff72b735b15da747d38d 100644 --- a/packages/CtsShim/build/shim_priv/AndroidManifest.xml +++ b/packages/CtsShim/build/shim_priv/AndroidManifest.xml @@ -27,6 +27,7 @@ diff --git a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml index b938e3e363d710bb15e6e35c694c7833d947bcd7..023e93e1449ee9c3447e320ea5d2a2f2f12bf297 100644 --- a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml +++ b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml @@ -24,6 +24,7 @@ diff --git a/packages/DefaultContainerService/res/values-bs/strings.xml b/packages/DefaultContainerService/res/values-bs/strings.xml index 56b7db12b48e5a247a5c93e089d0b7d38699d105..9be3873ef5299a6f752d6091874259da528f02c0 100644 --- a/packages/DefaultContainerService/res/values-bs/strings.xml +++ b/packages/DefaultContainerService/res/values-bs/strings.xml @@ -20,5 +20,5 @@ - "Pomoćnik pristupa paketu" + "Asistent pristupa paketu" diff --git a/packages/EasterEgg/AndroidManifest.xml b/packages/EasterEgg/AndroidManifest.xml index 14861c261f0da28564e844c0afc8a04e5830abbc..172490dc91788593abf7f4a13bfd81e7e8179263 100644 --- a/packages/EasterEgg/AndroidManifest.xml +++ b/packages/EasterEgg/AndroidManifest.xml @@ -84,5 +84,16 @@ Copyright (C) 2016 The Android Open Source Project + + + + + diff --git a/packages/EasterEgg/res/drawable/food_cookie.xml b/packages/EasterEgg/res/drawable/food_cookie.xml new file mode 100644 index 0000000000000000000000000000000000000000..74dd134355e23a383bd8c5ad5d10832d81d873e8 --- /dev/null +++ b/packages/EasterEgg/res/drawable/food_cookie.xml @@ -0,0 +1,35 @@ + + + + + + + + + \ No newline at end of file diff --git a/packages/EasterEgg/res/values/strings.xml b/packages/EasterEgg/res/values/strings.xml index 8478a438a0e482a15dee7b113a1bda4d91ae8c3f..61e38342872e67dcf2ff309ba47524fcd280885e 100644 --- a/packages/EasterEgg/res/values/strings.xml +++ b/packages/EasterEgg/res/values/strings.xml @@ -17,6 +17,7 @@ Copyright (C) 2016 The Android Open Source Project Android Easter Egg Android Neko + New cats \???? A cat is here. Cat #%s @@ -34,7 +35,7 @@ Copyright (C) 2016 The Android Open Source Project @drawable/food_bits @drawable/food_sysuituna @drawable/food_chicken - @drawable/food_donut + @drawable/food_cookie 0 diff --git a/packages/EasterEgg/res/xml/filepaths.xml b/packages/EasterEgg/res/xml/filepaths.xml new file mode 100644 index 0000000000000000000000000000000000000000..2130025e92659d787740b969461008a8ff56dba1 --- /dev/null +++ b/packages/EasterEgg/res/xml/filepaths.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/packages/EasterEgg/src/com/android/egg/neko/Cat.java b/packages/EasterEgg/src/com/android/egg/neko/Cat.java index a4df372ef835c52e6b93d15400b31f8f0069ba87..dd1bd07f3298706d7670043eb7683eca42dbf51d 100644 --- a/packages/EasterEgg/src/com/android/egg/neko/Cat.java +++ b/packages/EasterEgg/src/com/android/egg/neko/Cat.java @@ -31,6 +31,8 @@ import java.util.concurrent.ThreadLocalRandom; import com.android.egg.R; import com.android.internal.logging.MetricsLogger; +import static com.android.egg.neko.NekoLand.CHAN_ID; + public class Cat extends Drawable { public static final long[] PURR = {0, 40, 20, 40, 20, 40, 20, 40, 20, 40, 20, 40}; @@ -218,6 +220,7 @@ public class Cat extends Drawable { .setContentText(getName()) .setContentIntent(PendingIntent.getActivity(context, 0, intent, 0)) .setAutoCancel(true) + .setChannel(CHAN_ID) .setVibrate(PURR) .addExtras(extras); } diff --git a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java index 689e38142988bf2eaa397631fd3f63abcbd0b42b..d2e37d8779d196985b3fc286d9984342e7d16e73 100644 --- a/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java +++ b/packages/EasterEgg/src/com/android/egg/neko/NekoLand.java @@ -31,6 +31,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore.Images; +import android.support.v4.content.FileProvider; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; @@ -56,6 +57,8 @@ import java.util.Comparator; import java.util.List; public class NekoLand extends Activity implements PrefsListener { + public static String CHAN_ID = "EGG"; + public static boolean DEBUG = false; public static boolean DEBUG_NOTIFICATIONS = false; @@ -289,10 +292,13 @@ public class NekoLand extends Activity implements PrefsListener { new String[] {png.toString()}, new String[] {"image/png"}, null); - Uri uri = Uri.fromFile(png); + Log.v("Neko", "cat file: " + png); + Uri uri = FileProvider.getUriForFile(this, "com.android.egg.fileprovider", png); + Log.v("Neko", "cat uri: " + uri); Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, uri); intent.putExtra(Intent.EXTRA_SUBJECT, cat.getName()); + intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.setType("image/png"); startActivity(Intent.createChooser(intent, null)); cat.logShare(this); diff --git a/packages/EasterEgg/src/com/android/egg/neko/NekoService.java b/packages/EasterEgg/src/com/android/egg/neko/NekoService.java index 808ec361fb4f059bb676a17387933bce23d50a3f..42506e61d2ecdc8738d0854b67d908bafdd1281e 100644 --- a/packages/EasterEgg/src/com/android/egg/neko/NekoService.java +++ b/packages/EasterEgg/src/com/android/egg/neko/NekoService.java @@ -15,15 +15,15 @@ package com.android.egg.neko; import android.app.Notification; +import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.job.JobInfo; import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.app.job.JobService; -import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; -import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import java.util.List; @@ -33,6 +33,9 @@ import com.android.egg.R; import java.util.Random; +import static com.android.egg.neko.Cat.PURR; +import static com.android.egg.neko.NekoLand.CHAN_ID; + public class NekoService extends JobService { private static final String TAG = "NekoService"; @@ -40,6 +43,7 @@ public class NekoService extends JobService { public static int JOB_ID = 42; public static int CAT_NOTIFICATION = 1; + public static int DEBUG_NOTIFICATION = 1234; public static float CAT_CAPTURE_PROB = 1.0f; // generous @@ -50,6 +54,18 @@ public class NekoService extends JobService { public static float INTERVAL_JITTER_FRAC = 0.25f; + private static void setupNotificationChannels(Context context) { + NotificationManager noman = context.getSystemService(NotificationManager.class); + NotificationChannel eggChan = new NotificationChannel(CHAN_ID, + context.getString(R.string.notification_channel_name), + NotificationManager.IMPORTANCE_DEFAULT); + eggChan.setSound(Uri.EMPTY, Notification.AUDIO_ATTRIBUTES_DEFAULT); // cats are quiet + eggChan.setVibrationPattern(PURR); // not totally quiet though + eggChan.setBlockableSystem(true); // unlike a real cat, you can push this one off your lap + eggChan.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); // cats sit in the window + noman.createNotificationChannel(eggChan); + } + @Override public boolean onStartJob(JobParameters params) { Log.v(TAG, "Starting job: " + String.valueOf(params)); @@ -64,8 +80,9 @@ public class NekoService extends JobService { final Notification.Builder builder = cat.buildNotification(this) .setContentTitle("DEBUG") + .setChannel(NekoLand.CHAN_ID) .setContentText("Ran job: " + params); - noman.notify(1, builder.build()); + noman.notify(DEBUG_NOTIFICATION, builder.build()); } final PrefState prefs = new PrefState(this); @@ -111,6 +128,8 @@ public class NekoService extends JobService { } public static void registerJob(Context context, long intervalMinutes) { + setupNotificationChannels(context); + JobScheduler jss = context.getSystemService(JobScheduler.class); jss.cancel(JOB_ID); long interval = intervalMinutes * MINUTES; @@ -126,12 +145,13 @@ public class NekoService extends JobService { if (NekoLand.DEBUG_NOTIFICATIONS) { NotificationManager noman = context.getSystemService(NotificationManager.class); - noman.notify(500, new Notification.Builder(context) + noman.notify(DEBUG_NOTIFICATION, new Notification.Builder(context) .setSmallIcon(R.drawable.stat_icon) .setContentTitle(String.format("Job scheduled in %d min", (interval / MINUTES))) .setContentText(String.valueOf(jobInfo)) .setPriority(Notification.PRIORITY_MIN) .setCategory(Notification.CATEGORY_SERVICE) + .setChannel(NekoLand.CHAN_ID) .setShowWhen(true) .build()); } diff --git a/packages/InputDevices/res/raw/keyboard_layout_persian.kcm b/packages/InputDevices/res/raw/keyboard_layout_persian.kcm new file mode 100644 index 0000000000000000000000000000000000000000..e7dd6c6d68c8054187b7274c64d621f136969747 --- /dev/null +++ b/packages/InputDevices/res/raw/keyboard_layout_persian.kcm @@ -0,0 +1,501 @@ +# 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. + + + +type FULL + +### Basic QWERTY keys ### + +key A { + label: '\u0634' + base: '\u0634' + shift, capslock: '\u0624' + ctrl, alt, meta: none +} + +key B { + label: '\u0630' + base: '\u0630' + shift, capslock: '\u200C' + ctrl, alt, meta: none +} + +key C { + label: '\u0632' + base: '\u0632' + shift, capslock: '\u0698' + ctrl, alt, meta: none +} + +key D { + label: '\u06CC' + base: '\u06CC' + shift, capslock: '\u064A' + ctrl, alt, meta: none +} + +key E { + label: '\u062B' + base: '\u062B' + shift, capslock: '\u064D' + ctrl, alt, meta: none +} + +key F { + label: '\u0628' + base: '\u0628' + shift, capslock: '\u0625' + ctrl, alt, meta: none +} + +key G { + label: '\u0644' + base: '\u0644' + shift, capslock: '\u0623' + ctrl, alt, meta: none +} + +key H { + label: '\u0627' + base: '\u0627' + shift, capslock: '\u0622' + ctrl, alt, meta: none +} + +key I { + label: '\u0647' + base: '\u0647' + shift, capslock: '\u0651' + ctrl, alt, meta: none +} + +key J { + label: '\u062A' + base: '\u062A' + shift, capslock: '\u0629' + ctrl, alt, meta: none +} + +key K { + label: '\u0646' + base: '\u0646' + shift, capslock: '\u00AB' + ctrl, alt, meta: none +} + +key L { + label: '\u0645' + base: '\u0645' + shift, capslock: '\u00BB' + ctrl, alt, meta: none +} + +key M { + label: '\u067E' + base: '\u067E' + shift, capslock: '\u0621' + ctrl, alt, meta: none +} + +key N { + label: '\u062F' + base: '\u062F' + shift, capslock: '\u0654' + ctrl, alt, meta: none +} + +key O { + label: '\u062E' + base: '\u062E' + shift, capslock: ']' + ctrl, alt, meta: none +} + +key P { + label: '\u062D' + base: '\u062D' + shift, capslock: '[' + ctrl, alt, meta: none +} + +key Q { + label: '\u0636' + base: '\u0636' + shift, capslock: '\u0652' + ctrl, alt, meta: none +} + +key R { + label: '\u0642' + base: '\u0642' + shift, capslock: '\u064B' + ctrl, alt, meta: none +} + +key S { + label: '\u0633' + base: '\u0633' + shift, capslock: '\u0626' + ctrl, alt, meta: none +} + +key T { + label: '\u0641' + base: '\u0641' + shift, capslock: '\u064F' + ctrl, alt, meta: none +} + +key U { + label: '\u0639' + base: '\u0639' + shift, capslock: '\u064E' + ctrl, alt, meta: none +} + +key V { + label: '\u0631' + base: '\u0631' + shift, capslock: '\u0670' + ctrl, alt, meta: none +} + +key W { + label: '\u0635' + base: '\u0635' + shift, capslock: '\u064C' + ctrl, alt, meta: none +} + +key X { + label: '\u0637' + base: '\u0637' + shift, capslock: '\u0653' + ctrl, alt, meta: none +} + +key Y { + label: '\u063A' + base: '\u063A' + shift, capslock: '\u0650' + ctrl, alt, meta: none +} + +key Z { + label: '\u0638' + base: '\u0638' + shift, capslock: '\u0643' + ctrl, alt, meta: none +} + +key 0 { + label, number: '\u06F0' + base: '\u06F0' + shift: '(' + ctrl, alt, meta: none +} + +key 1 { + label, number: '\u06F1' + base: '\u06F1' + shift: '!' + ctrl, alt, meta: none +} + +key 2 { + label, number: '\u06F2' + base: '\u06F2' + shift: '\u066C' + ctrl, alt, meta: none + +} +key 3 { + label, number: '\u06F3' + base: '\u06F3' + shift: '\u066B' + ctrl, alt, meta: none +} + +key 4 { + label, number: '\u06F4' + base: '\u06F4' + shift: '\uFDFC' + ctrl, alt, meta: none +} + +key 5 { + label, number: '\u06F5' + base: '\u06F5' + shift: '\u066A' + ctrl, alt, meta: none +} + +key 6 { + label, number: '\u06F6' + base: '\u06F6' + shift: '\u00D7' + ctrl, alt, meta: none +} + + +key 7 { + label, number: '\u06F7' + base: '\u06F7' + shift: '\u060C' + ctrl, alt, meta: none +} + +key 8 { + label, number: '\u06F8' + base: '\u06F8' + shift: '*' + ctrl, alt, meta: none +} + +key 9 { + label, number: '\u06F9' + base: '\u06F9' + shift: ')' + ctrl, alt, meta: none +} + +key SPACE { + label: ' ' + base: ' ' + ctrl, alt, meta: none +} + +key ENTER { + label: '\n' + base: '\n' + ctrl, alt, meta: none +} + +key TAB { + label: '\t' + base: '\t' + ctrl, alt, meta: none +} + +key COMMA { + label, number: '\u0648' + base: '\u0648' + shift: '<' + ctrl, alt, meta: none +} + +key PERIOD { + label, number: '.' + base: '.' + shift: '>' + ctrl, alt, meta: none +} + +key SLASH { + label, number: '/' + base: '/' + shift: '\u061F' + ctrl, alt, meta: none +} + +key GRAVE { + label, number: '`' + base: '`' + shift: '\u00F7' + ctrl, alt, meta: none +} + + +key MINUS { + label, number: '-' + base: '-' + shift: '_' + ctrl, alt, meta: none +} + +key EQUALS { + label, number: '=' + base: '=' + shift: '+' + ctrl, alt, meta: none +} + +key LEFT_BRACKET { + label, number: '\u062C' + base: '\u062C' + shift: '}' + ctrl, alt, meta: none +} + +key RIGHT_BRACKET { + label, number: '\u0686' + base: '\u0686' + shift: '{' + ctrl, alt, meta: none +} + +key BACKSLASH { + label, number: '\\' + base: '\\' + shift: '|' + ctrl, alt, meta: none +} + +key SEMICOLON { + label, number: '\u06A9' + base: '\u06A9' + shift: ':' + ctrl, alt, meta: none +} + +key APOSTROPHE { + label, number: '\'' + base: '\'' + shift: '\"' + ctrl, alt, meta: none +} + +### Numeric keypad ### + +key NUMPAD_0 { + label, number: '0' + base: fallback INSERT + numlock: '0' + ctrl, alt, meta: none +} + +key NUMPAD_1 { + label, number: '1' + base: fallback MOVE_END + numlock: '1' + ctrl, alt, meta: none +} + +key NUMPAD_2 { + label, number: '2' + base: fallback DPAD_DOWN + numlock: '2' + ctrl, alt, meta: none +} + +key NUMPAD_3 { + label, number: '3' + base: fallback PAGE_DOWN + numlock: '3' + ctrl, alt, meta: none +} + +key NUMPAD_4 { + label, number: '4' + base: fallback DPAD_LEFT + numlock: '4' + ctrl, alt, meta: none +} + +key NUMPAD_5 { + label, number: '5' + base: fallback DPAD_CENTER + numlock: '5' + ctrl, alt, meta: none +} + +key NUMPAD_6 { + label, number: '6' + base: fallback DPAD_RIGHT + numlock: '6' + ctrl, alt, meta: none +} + +key NUMPAD_7 { + label, number: '7' + base: fallback MOVE_HOME + numlock: '7' + ctrl, alt, meta: none +} + +key NUMPAD_8 { + label, number: '8' + base: fallback DPAD_UP + numlock: '8' + ctrl, alt, meta: none +} + +key NUMPAD_9 { + label, number: '9' + base: fallback PAGE_UP + numlock: '9' + ctrl, alt, meta: none +} + +key NUMPAD_LEFT_PAREN { + label, number: '(' + base: '(' + ctrl, alt, meta: none +} + +key NUMPAD_RIGHT_PAREN { + label, number: ')' + base: ')' + ctrl, alt, meta: none +} + +key NUMPAD_DIVIDE { + label, number: '/' + base: '/' + ctrl, alt, meta: none +} + +key NUMPAD_MULTIPLY { + label, number: '*' + base: '*' + ctrl, alt, meta: none +} + +key NUMPAD_SUBTRACT { + label, number: '-' + base: '-' + ctrl, alt, meta: none +} + +key NUMPAD_ADD { + label, number: '+' + base: '+' + ctrl, alt, meta: none +} + +key NUMPAD_DOT { + label, number: '.' + base: fallback FORWARD_DEL + numlock: '.' + ctrl, alt, meta: none +} + +key NUMPAD_COMMA { + label, number: ',' + base: ',' + ctrl, alt, meta: none +} + +key NUMPAD_EQUALS { + label, number: '=' + base: '=' + ctrl, alt, meta: none +} + +key NUMPAD_ENTER { + label: '\n' + base: '\n' fallback ENTER + ctrl, alt, meta: none fallback ENTER +} diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml index a36d01e02a7a5e6f3af46ca514fd37c2df88ccf5..43010192e454dabc9432ecfee8690cd5dd58bf1f 100644 --- a/packages/InputDevices/res/values-af/strings.xml +++ b/packages/InputDevices/res/values-af/strings.xml @@ -41,4 +41,5 @@ "Litaus" "Spaans (Latyn)" "Letties" + "Persies" diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml index 3186addcf64e1da958e8b3f5b6db21f392c8b9a2..ce3659ab38a54c03df71579e21798c791b044155 100644 --- a/packages/InputDevices/res/values-am/strings.xml +++ b/packages/InputDevices/res/values-am/strings.xml @@ -41,4 +41,5 @@ "ሊቱዌኒያኛ" "ስፓኒሽ (ላቲን)" "ላትቪያኛ" + "ፋርስኛ" diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml index 1d3d9f5455119b74bb44bef4c3539d5f54e895fe..2b0a6f99b03eb071ad1d30223ec1a85c910347c4 100644 --- a/packages/InputDevices/res/values-ar/strings.xml +++ b/packages/InputDevices/res/values-ar/strings.xml @@ -41,4 +41,5 @@ "الليتوانية" "الإسبانية (اللاتينية)" "اللاتفية" + "الفارسية" diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml index 25d7c9151bfb3fa1df5afdaee12ee5a91b116a35..a1f7c1c95b3445b39fa96f65a5b3d903a960ba4e 100644 --- a/packages/InputDevices/res/values-az/strings.xml +++ b/packages/InputDevices/res/values-az/strings.xml @@ -41,4 +41,5 @@ "Litva" "İspan (Latın)" "Latış" + "Fars Dili" diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml index e5e2c967d3114ca56e841fa4c6c4737a6bfda16d..ee5cfa8906102fa3d323b1e70ed38e3afbae9600 100644 --- a/packages/InputDevices/res/values-bg/strings.xml +++ b/packages/InputDevices/res/values-bg/strings.xml @@ -41,4 +41,5 @@ "Литовска клавиатурна подредба" "Исп. клав. подредба (Лат. Америка)" "латвийски" + "персийски" diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml index e9540b64f89493b85dfe24d3ad6bffe1dd3b4f1d..945c89138e540b44779b3461b25012a4493a1a24 100644 --- a/packages/InputDevices/res/values-bn/strings.xml +++ b/packages/InputDevices/res/values-bn/strings.xml @@ -41,4 +41,5 @@ "লিথুয়ানিয়ান" "স্প্যানিশ (ল্যাটিন)" "লাটভিও" + "ফার্সী" diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml index ee25a74d7daa4e689a6cccf30f1635148fb35931..3c6ea158a2a3999278750e72ba40140ebff7f2da 100644 --- a/packages/InputDevices/res/values-ca/strings.xml +++ b/packages/InputDevices/res/values-ca/strings.xml @@ -41,4 +41,5 @@ "Lituà" "Espanyol (llatí)" "Letó" + "Persa" diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml index 3e7b9c84aeccdc49e11f826b2f3309cb914bf988..a78663b4ab369ff682a6454c1b48e69e7464fab6 100644 --- a/packages/InputDevices/res/values-cs/strings.xml +++ b/packages/InputDevices/res/values-cs/strings.xml @@ -41,4 +41,5 @@ "litevština" "španělština (Latinská Amerika)" "Lotyšská klávesnice" + "perština" diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml index 974c43dcb8b1d2af0d6e76e3c7825d006e4eda8c..08ff4ca40ce20932968d855727c32ce614eb8526 100644 --- a/packages/InputDevices/res/values-da/strings.xml +++ b/packages/InputDevices/res/values-da/strings.xml @@ -41,4 +41,5 @@ "Litauisk" "Spansk (latinamerika)" "Lettisk" + "Persisk" diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml index 6af00309071dfcdd7f6866d214e104346d020c62..1543ef2d37263b12fda82d41d9a7980e19be61c8 100644 --- a/packages/InputDevices/res/values-de/strings.xml +++ b/packages/InputDevices/res/values-de/strings.xml @@ -41,4 +41,5 @@ "Litauisch" "Spanisch (Lateinisch)" "Lettisch" + "Persisch" diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml index da6dca2fe242ec13582bbc4ee34cb99580566949..e5d14090acb44d6f9b4e37bd74b8f566f62dd48d 100644 --- a/packages/InputDevices/res/values-el/strings.xml +++ b/packages/InputDevices/res/values-el/strings.xml @@ -41,4 +41,5 @@ "Λιθουανικά" "Ισπανικά (Λατινικής Αμερικής)" "Λετονικά" + "Περσικά" diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml index 01c2979ec1072663456659213f80f875577ead40..9217bc49a21c84a40ee1f4bf8531346b29c4a867 100644 --- a/packages/InputDevices/res/values-en-rAU/strings.xml +++ b/packages/InputDevices/res/values-en-rAU/strings.xml @@ -41,4 +41,5 @@ "Lithuanian" "Spanish (Latin)" "Latvian" + "Persian" diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml index 01c2979ec1072663456659213f80f875577ead40..9217bc49a21c84a40ee1f4bf8531346b29c4a867 100644 --- a/packages/InputDevices/res/values-en-rGB/strings.xml +++ b/packages/InputDevices/res/values-en-rGB/strings.xml @@ -41,4 +41,5 @@ "Lithuanian" "Spanish (Latin)" "Latvian" + "Persian" diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml index 01c2979ec1072663456659213f80f875577ead40..9217bc49a21c84a40ee1f4bf8531346b29c4a867 100644 --- a/packages/InputDevices/res/values-en-rIN/strings.xml +++ b/packages/InputDevices/res/values-en-rIN/strings.xml @@ -41,4 +41,5 @@ "Lithuanian" "Spanish (Latin)" "Latvian" + "Persian" diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml index 6acf07b5a63091775f6b7b770f5abb224219ac0d..68fcfd7d6035769cbbd0dc765ac9d9dd3a908ece 100644 --- a/packages/InputDevices/res/values-es-rUS/strings.xml +++ b/packages/InputDevices/res/values-es-rUS/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Español (latino)" "Letón" + "Persa" diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml index af1492a00623bd0216b1761b2c6bc38cdcd2b8a2..86c82ed75ab4d17a981dd8a0b4dac30c4b1abd49 100644 --- a/packages/InputDevices/res/values-es/strings.xml +++ b/packages/InputDevices/res/values-es/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Español (Latinoamérica)" "Letón" + "Persa" diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml index d03b82ebd29a5b7792a45dd65e9178c78dba9b50..8bc5c2535ab5078859eb029f32c7a991f43fd8f3 100644 --- a/packages/InputDevices/res/values-et/strings.xml +++ b/packages/InputDevices/res/values-et/strings.xml @@ -41,4 +41,5 @@ "Leedu" "Hispaania (Ladina-Ameerika)" "läti keel" + "pärsia" diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml index d18c6f8ab59ad7495abd6e776763726f2562f3c4..4fadb97329d2fcd3faa1b823d2affd1e3899299d 100644 --- a/packages/InputDevices/res/values-eu/strings.xml +++ b/packages/InputDevices/res/values-eu/strings.xml @@ -41,4 +41,5 @@ "Lituaniera" "Espainiera (Latinoamerika)" "Letoniera" + "Pertsiera" diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml index f2848a978ebaaa96c0c41d6dec9079af2b523551..037e04473f9fbe5a09a7bddd26047bd5bbf5977f 100644 --- a/packages/InputDevices/res/values-fa/strings.xml +++ b/packages/InputDevices/res/values-fa/strings.xml @@ -41,4 +41,5 @@ "لیتوانیایی" "اسپانیایی (لاتین)" "لتونیایی" + "فارسی" diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml index 284efc8a93a788916a573e1e3963cdc2a8c9232b..65bd8d3cc491d178d7421c9417d440fe96da64de 100644 --- a/packages/InputDevices/res/values-fi/strings.xml +++ b/packages/InputDevices/res/values-fi/strings.xml @@ -41,4 +41,5 @@ "liettua" "espanja (Latinalainen Amerikka)" "latvialainen" + "persia" diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml index b26a0eac16e16458cbbe543a16cf43e4d09f407e..8b132fa90fbade1a899c7633687c6724e9ab5dd6 100644 --- a/packages/InputDevices/res/values-fr-rCA/strings.xml +++ b/packages/InputDevices/res/values-fr-rCA/strings.xml @@ -41,4 +41,5 @@ "Lituanien" "Espagnol (latin)" "Letton" + "Persan" diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml index a428a23c091bfe97e1ac130906fe86b6a8371e9e..baf749db96525a28c0aaf9e2c01ef857dc8e6ed3 100644 --- a/packages/InputDevices/res/values-fr/strings.xml +++ b/packages/InputDevices/res/values-fr/strings.xml @@ -41,4 +41,5 @@ "Lituanien" "Espagnol (latin)" "Letton" + "Persan" diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml index bb0f2a06ec1f77e87fbf083980d905097ab31730..c5bddc5fab702fecf745b387a3273347115e644c 100644 --- a/packages/InputDevices/res/values-gl/strings.xml +++ b/packages/InputDevices/res/values-gl/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Español (América Latina)" "Letón" + "Persa" diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml index e83b0ca49dad79700245d9c0cea8634f6f725256..0f8c7520d243c5d45427b4d09f5fff14f68b7f5f 100644 --- a/packages/InputDevices/res/values-gu/strings.xml +++ b/packages/InputDevices/res/values-gu/strings.xml @@ -41,4 +41,5 @@ "લિથુનિયન" "સ્પેનિશ (લેટિન)" "લાતવિયન" + "પર્શિયન" diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml index 41966e403f25fb5e6ad4f7d2647a1caf0a731734..c1bbd9d059a9c1ab34d3d52ba92b1722c37551b4 100644 --- a/packages/InputDevices/res/values-hi/strings.xml +++ b/packages/InputDevices/res/values-hi/strings.xml @@ -41,4 +41,5 @@ "लिथुआनियाई" "स्पेनिश (लैटिन)" "लातवियाई" + "फ़ारसी" diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml index 27066adb4162cc1213abecb8b3ffe5df115a620c..ec029349b6deb299216a192a9d030b34ebb4120b 100644 --- a/packages/InputDevices/res/values-hr/strings.xml +++ b/packages/InputDevices/res/values-hr/strings.xml @@ -41,4 +41,5 @@ "litavski" "španjolski (Latinska Amerika)" "latvijska" + "perzijski" diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml index 6fbc3ebf3e17d6722474672ce1d9182581312ba5..a5412d4e1d8badaf98d1adc1030279da83fccd0b 100644 --- a/packages/InputDevices/res/values-hu/strings.xml +++ b/packages/InputDevices/res/values-hu/strings.xml @@ -41,4 +41,5 @@ "litván" "spanyol (latin-amerikai)" "lett" + "perzsa" diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml index 0d116457c3abb39ac98fd79dc511ad8992dd8f62..b152b0f1e8f9e01257d98ebe6a88968c20fdc72d 100644 --- a/packages/InputDevices/res/values-hy/strings.xml +++ b/packages/InputDevices/res/values-hy/strings.xml @@ -41,4 +41,5 @@ "Լիտվերեն" "Իսպաներեն (Լատինական)" "լատիշերեն" + "պարսկերեն" diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml index b2cbd6e71c4a3a09b37994b253586abb5e2f4de9..33b9ae35a12276156039aad5867360e64ddfa88e 100644 --- a/packages/InputDevices/res/values-in/strings.xml +++ b/packages/InputDevices/res/values-in/strings.xml @@ -41,4 +41,5 @@ "Lithuania" "Spanyol (Latin)" "Latvi" + "Persia" diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml index de91275044fae9d9e26b5bdeb94e9ab55ac9a3db..0e80bd4243b60659b73856797e65c04cee08c6f2 100644 --- a/packages/InputDevices/res/values-is/strings.xml +++ b/packages/InputDevices/res/values-is/strings.xml @@ -41,4 +41,5 @@ "Litháískt" "Spænskt (latneskt)" "Lettneska" + "Persneska" diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml index c1c7faa9e6fa9a9a93bf881b7f256c5c5301b299..5da935b32dbfe43a5d0af71a441ad1668ebf8753 100644 --- a/packages/InputDevices/res/values-it/strings.xml +++ b/packages/InputDevices/res/values-it/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Spagnolo (America Latina)" "Lettone" + "Persiano" diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml index b3bd576c5c1afc2c2b7501e344e5fb55a39bcc6b..5cbc4f4c9c627d9ae7f92b027e9c03ab69b545f0 100644 --- a/packages/InputDevices/res/values-iw/strings.xml +++ b/packages/InputDevices/res/values-iw/strings.xml @@ -41,4 +41,5 @@ "ליטאית" "ספרדית (לטינית)" "לטבית" + "פרסית" diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml index 2b3daf53ef4cb6d79ce08fb8252d357aa3f025ad..aa77ddc3b6f8b8ae067f089fac87bf6074edbfb2 100644 --- a/packages/InputDevices/res/values-ja/strings.xml +++ b/packages/InputDevices/res/values-ja/strings.xml @@ -41,4 +41,5 @@ "リトアニア語" "スペイン語(中南米)" "ラトビア語" + "ペルシャ語" diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml index 66d147e0f3350e36dc5a3b88af86fb8a5a56b521..0b899c7489d0982e94807563e7351a3289443e0d 100644 --- a/packages/InputDevices/res/values-ka/strings.xml +++ b/packages/InputDevices/res/values-ka/strings.xml @@ -41,4 +41,5 @@ "ლიტვური" "ესპანური (ლათინური)" "ლატვიური" + "სპარსული" diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml index d25354233062dcc4bd89ad3cfd747f14497bbb40..659f5717be30cebbfba35a163d827228f0d35db4 100644 --- a/packages/InputDevices/res/values-kk/strings.xml +++ b/packages/InputDevices/res/values-kk/strings.xml @@ -41,4 +41,5 @@ "Литван" "Испан (латын)" "Латыш" + "Парсы" diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml index acd01ee6c3a1f69131a7f74c732ec01369d6daff..a3a789c63a851b0aba8401127f3a79f71cdf123d 100644 --- a/packages/InputDevices/res/values-km/strings.xml +++ b/packages/InputDevices/res/values-km/strings.xml @@ -41,4 +41,5 @@ "លីទុយអានី" "អេស្ប៉ាញ (ឡាតាំង​)" "ឡាតវីយ៉ា" + "ពីស៊ាន" diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml index 966818dbc885de4915418693bdc8fe5d86d60493..f07b439bdf72e9643da137f671268ffa4133bdfa 100644 --- a/packages/InputDevices/res/values-kn/strings.xml +++ b/packages/InputDevices/res/values-kn/strings.xml @@ -41,4 +41,5 @@ "ಲಿಥುವೇನಿಯನ್" "ಸ್ಪ್ಯಾನಿಶ್ (ಲ್ಯಾಟಿನ್)" "ಲ್ಯಾಟ್ವಿಯನ್" + "ಪರ್ಶಿಯನ್" diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml index 7758210949254e9c546ff353cffbbf3aa045770b..28dde45575514acd943a5f808958331a64057c27 100644 --- a/packages/InputDevices/res/values-ko/strings.xml +++ b/packages/InputDevices/res/values-ko/strings.xml @@ -41,4 +41,5 @@ "리투아니아어" "스페인어(라틴)" "라트비아어" + "페르시아어" diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml index 578f70bc4076fb9517f7a4b8589f7b7e7084ad7e..e12b69fe158b68f4f63a88675956663761dfd5e6 100644 --- a/packages/InputDevices/res/values-ky/strings.xml +++ b/packages/InputDevices/res/values-ky/strings.xml @@ -41,4 +41,5 @@ "Литвача" "Испанча (Латын)" "Латвияча" + "Фарсиче" diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml index 05b1b8351513916952f6d96fda7c6ec78c850064..8c040be3081c913e20c10306fc40889afce57775 100644 --- a/packages/InputDevices/res/values-lo/strings.xml +++ b/packages/InputDevices/res/values-lo/strings.xml @@ -41,4 +41,5 @@ "​ລິ​ທົວ​ນຽນ" "​ສະ​ແປນ​ນິດ (ລາ​ຕິນ)" "​ລັດ​ວຽນ" + "ເປີຊຽນ" diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml index 1dae850ee1f0f506985d01284289f7214e86e6ac..0cd696f6f188db2d37063aa20fb1fdf8804a7ee0 100644 --- a/packages/InputDevices/res/values-lt/strings.xml +++ b/packages/InputDevices/res/values-lt/strings.xml @@ -41,4 +41,5 @@ "Lietuvių" "Ispanų (Lotynų Amerika)" "Latvių k." + "Persų" diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml index 96dc53ba1affdd15ad91f9e4e4dade8f2c7d82f1..52a0751697ba23b1688fd7ffb1c7841cb1b42abd 100644 --- a/packages/InputDevices/res/values-lv/strings.xml +++ b/packages/InputDevices/res/values-lv/strings.xml @@ -41,4 +41,5 @@ "Lietuviešu" "Spāņu (latīņu)" "Latviešu" + "Persiešu" diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml index 2fae1cf50cd1497472e92f1ccca55a59a346b07e..2f9befe2c6787f88997ba5e9ba5208122f56006f 100644 --- a/packages/InputDevices/res/values-mk/strings.xml +++ b/packages/InputDevices/res/values-mk/strings.xml @@ -41,4 +41,5 @@ "литвански" "шпански (латиница)" "латвиски" + "персиски" diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml index 51866673bdcda6a748c78a5cbcba3f2ce89d49de..6b5ed06dc3c3130ac2cb17646b608c159aa6aefc 100644 --- a/packages/InputDevices/res/values-ml/strings.xml +++ b/packages/InputDevices/res/values-ml/strings.xml @@ -41,4 +41,5 @@ "ലിത്വാനിയന്‍" "സ്‌പാനിഷ് (ലാറ്റിൻ)" "ലാറ്റ്വിയന്‍" + "പേര്‍ഷ്യന്‍" diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml index f1354fede5f65813bf4ba1b5da5e844117ce28f2..82e664e4f5c0ec052a25d39536c2b3bc5d401e7f 100644 --- a/packages/InputDevices/res/values-mn/strings.xml +++ b/packages/InputDevices/res/values-mn/strings.xml @@ -41,4 +41,5 @@ "Литви" "Испани (Латин)" "Латви" + "Перс" diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml index a73d4fa9ee5c652b2e6231ca592b51e6d5b27dab..e8575a85cf73dec2a1ce391cd7b781527aae748e 100644 --- a/packages/InputDevices/res/values-mr/strings.xml +++ b/packages/InputDevices/res/values-mr/strings.xml @@ -41,4 +41,5 @@ "लिथुआनियन" "स्पॅनिश (लॅटिन)" "ला‍ट्वियन" + "पर्शियन" diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml index 04983e360a50855a4a0d5103e23c1437f66b47b3..0f402e7b850df2c7879ac827c909fa6dcc788e0c 100644 --- a/packages/InputDevices/res/values-ms/strings.xml +++ b/packages/InputDevices/res/values-ms/strings.xml @@ -41,4 +41,5 @@ "Bahasa Lithuania" "Bahasa Sepanyol (Latin)" "Bahasa Latvia" + "Bahasa Parsi" diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml index f3762b4d6a10180e33f121b0b2577384b213d0e9..246735375ef54dbcf3c07e4686fdcdb7217f9fce 100644 --- a/packages/InputDevices/res/values-my/strings.xml +++ b/packages/InputDevices/res/values-my/strings.xml @@ -41,4 +41,5 @@ "လီသွေနီယံ" "စပိန် (လက်တင်)" "လာတ်ဗီယံ" + "ပါရှန်" diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml index 37604e333c1cba63181364a7b009f0656eda6812..bd2879ec7f2324a390fac524b1491296ff690c3a 100644 --- a/packages/InputDevices/res/values-nb/strings.xml +++ b/packages/InputDevices/res/values-nb/strings.xml @@ -41,4 +41,5 @@ "Litauisk" "Spansk (latinsk)" "Latvisk" + "Persisk" diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml index 4c3dec37f40c3534562a5b2362946c2cdd175aec..55969c9e0565c1f29b86b7bfae496dccad96bd58 100644 --- a/packages/InputDevices/res/values-ne/strings.xml +++ b/packages/InputDevices/res/values-ne/strings.xml @@ -41,4 +41,5 @@ "लिथुआनियन" "स्पेनेली(ल्याटिन)" "लातभियन" + "फारसी" diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml index 31ade0555bd70b3673390199334039e47df0647d..e40248f271c15dac3fdd4f9bb7b49906662366da 100644 --- a/packages/InputDevices/res/values-nl/strings.xml +++ b/packages/InputDevices/res/values-nl/strings.xml @@ -41,4 +41,5 @@ "Litouws" "Spaans (Latijns-Amerika)" "Lets" + "Perzisch" diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml index 574ce810c8b17164c0fa347fd155cb89503b0ab7..951adc8c6e809250f99b934d35449e85b8f6971b 100644 --- a/packages/InputDevices/res/values-pa/strings.xml +++ b/packages/InputDevices/res/values-pa/strings.xml @@ -41,4 +41,5 @@ "ਲੀਥੂਨੀਅਨ" "ਸਪੇਨੀ (ਲਾਤੀਨੀ)" "ਲਾਤਵੀਅਨ" + "ਫ਼ਾਰਸੀ" diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml index 2ae815e3245638885e4fa80e98aade8a088972de..a307940f232d7d334a547e8e6fa3c4645c8624bb 100644 --- a/packages/InputDevices/res/values-pl/strings.xml +++ b/packages/InputDevices/res/values-pl/strings.xml @@ -41,4 +41,5 @@ "litewski" "hiszpański (Ameryka Łacińska)" "łotewski" + "Perski" diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml index a1503a4ebcb33407e245ddc63f63215e74d00912..ad2abe1ca9de941ff531441eed9365ab068ed44f 100644 --- a/packages/InputDevices/res/values-pt-rBR/strings.xml +++ b/packages/InputDevices/res/values-pt-rBR/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Espanhol (América Latina)" "Letão" + "Persa" diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml index b806fc2519f3582430f383fa46465be4eece5f66..a5beee46123ff1b29c9db4e6419bc874ba153dbf 100644 --- a/packages/InputDevices/res/values-pt-rPT/strings.xml +++ b/packages/InputDevices/res/values-pt-rPT/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Espanhol (América Latina)" "Letão" + "Persa" diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml index a1503a4ebcb33407e245ddc63f63215e74d00912..ad2abe1ca9de941ff531441eed9365ab068ed44f 100644 --- a/packages/InputDevices/res/values-pt/strings.xml +++ b/packages/InputDevices/res/values-pt/strings.xml @@ -41,4 +41,5 @@ "Lituano" "Espanhol (América Latina)" "Letão" + "Persa" diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml index 795e9a2abd054ae4ee9e63f8280073c5a5e38a78..a933a7094b35cb01d142141ea265cd8a1e139a9d 100644 --- a/packages/InputDevices/res/values-ro/strings.xml +++ b/packages/InputDevices/res/values-ro/strings.xml @@ -41,4 +41,5 @@ "Lituaniană" "Spaniolă (America Latină)" "Letonă" + "Persană" diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml index ac4c81b490bef83ce3a1980376bf8fd6849d9aaa..127a84dad8b05a5a592c6d89fbe5542b570c6531 100644 --- a/packages/InputDevices/res/values-ru/strings.xml +++ b/packages/InputDevices/res/values-ru/strings.xml @@ -41,4 +41,5 @@ "Литовский" "Испанский (Латинская Америка)" "латышский" + "Персидский" diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml index 945a097bba97ca34fafd72bd8e4a7004ca6ae62c..8192c18e751ad6269d94e7a2b8370713ca3af460 100644 --- a/packages/InputDevices/res/values-si/strings.xml +++ b/packages/InputDevices/res/values-si/strings.xml @@ -41,4 +41,5 @@ "ලිතුවේනියානු" "ස්පාඤ්ඤය (ලතින්)" "ලැට්වියානු" + "පර්සියානු" diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml index 2e76024f24f68a28a64fe4f987ab803b2635013d..c631095aa982b1ad93a3f8850f03f3c81ce527d3 100644 --- a/packages/InputDevices/res/values-sk/strings.xml +++ b/packages/InputDevices/res/values-sk/strings.xml @@ -41,4 +41,5 @@ "Litovčina" "Španielčina (Latinská Amerika)" "Lotyština" + "Perzština" diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml index a643c8ee5e0e147226c0ebf5ba5cd987807c0700..c5a19be9ef029abe1f721777b997f8a5e256e223 100644 --- a/packages/InputDevices/res/values-sl/strings.xml +++ b/packages/InputDevices/res/values-sl/strings.xml @@ -41,4 +41,5 @@ "litovščina" "španščina (Latinska Amerika)" "latvijščina" + "perzijščina" diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml index 8a9000db65c5ca2bee46c1f2230793b7e0ca38a9..dbc5b4d6286fda7dd2725a277e3d95ac98938dce 100644 --- a/packages/InputDevices/res/values-sq/strings.xml +++ b/packages/InputDevices/res/values-sq/strings.xml @@ -41,4 +41,5 @@ "lituanisht" "spanjisht (latine)" "letonisht" + "Persisht" diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml index b06f6fc9bd6fad12b9a552f175754aec98347c0a..29eea72b9f2fa9d15da62c8285ad1acf57b57189 100644 --- a/packages/InputDevices/res/values-sr/strings.xml +++ b/packages/InputDevices/res/values-sr/strings.xml @@ -41,4 +41,5 @@ "литвански" "шпански (Латинска Америка)" "летонски" + "персијска" diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml index 89cb54eee02b96534731ad288ff8f488a608eb4a..9954a2b746616a08c8ae51844f1c001094018a43 100644 --- a/packages/InputDevices/res/values-sv/strings.xml +++ b/packages/InputDevices/res/values-sv/strings.xml @@ -41,4 +41,5 @@ "Litauiska" "Spanska (latinamerikansk)" "lettiska" + "persiska" diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml index 90516850443a3f160e94e17f5ef9cfa626f78ef9..13b3954d21d31dbf8c0816fbf8d0567a4812bd51 100644 --- a/packages/InputDevices/res/values-sw/strings.xml +++ b/packages/InputDevices/res/values-sw/strings.xml @@ -41,4 +41,5 @@ "Kilithuania" "Kihispania (Kilatini)" "Kilatvia" + "Kiajemi" diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml index 32efe7b2ff7c2db582f1cc12486ec15b10738411..fec9d8c00b99353de6efce7b4fd12a341beb9aa7 100644 --- a/packages/InputDevices/res/values-ta/strings.xml +++ b/packages/InputDevices/res/values-ta/strings.xml @@ -41,4 +41,5 @@ "லிதுவேனியன்" "ஸ்பானிஷ் (லத்தீன்)" "லத்வியன்" + "பெர்சியன்" diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml index e07d4c876d72c4825fed012b0b474d9fa8cd741a..922868dbaec88e8801903ea44104a399b2e64bf1 100644 --- a/packages/InputDevices/res/values-te/strings.xml +++ b/packages/InputDevices/res/values-te/strings.xml @@ -41,4 +41,5 @@ "లిథువేనియన్" "స్పానిష్ (లాటిన్)" "లాత్వియన్" + "పర్షియన్" diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml index 50dc1e4d93d7d1b15773471a65a84c828262a868..69d9ddf6065c1988e13ec229dbc52d49808bef87 100644 --- a/packages/InputDevices/res/values-th/strings.xml +++ b/packages/InputDevices/res/values-th/strings.xml @@ -41,4 +41,5 @@ "ลิทัวเนีย" "สเปน (ละติน)" "ลัตเวีย" + "เปอร์เซีย" diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml index 0c3f1ff8864d376e0afbcd529641a1110f36f034..44821287906e61f9508f497ad5921266823b8a66 100644 --- a/packages/InputDevices/res/values-tl/strings.xml +++ b/packages/InputDevices/res/values-tl/strings.xml @@ -41,4 +41,5 @@ "Lithuanian" "Spanish (Latin)" "Latvian" + "Persian" diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml index a8d9a0f10a2f9689c98a31ebd749d9d1144824fc..08e5e3e6e5cdb18e01df37906d27e3e96ac9f3f3 100644 --- a/packages/InputDevices/res/values-tr/strings.xml +++ b/packages/InputDevices/res/values-tr/strings.xml @@ -41,4 +41,5 @@ "Litvanca" "İspanyolca (Latin)" "Letonca" + "Farsça" diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml index c818001b5bec4efdaff84827ef7b3a8d6890d3e0..b81f6726d209b399b81dca607f992908e1f6425b 100644 --- a/packages/InputDevices/res/values-uk/strings.xml +++ b/packages/InputDevices/res/values-uk/strings.xml @@ -41,4 +41,5 @@ "Литовська" "Іспанська (латиниця)" "Латвійська" + "Перська" diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml index 2f2b84f1d8e3c71de3595941afadf4fe74736ae8..2508d5d307481efecfa5a6fed3b7c9c5c126241b 100644 --- a/packages/InputDevices/res/values-ur/strings.xml +++ b/packages/InputDevices/res/values-ur/strings.xml @@ -41,4 +41,5 @@ "لتھوانیائی" "ہسپانوی (لاطینی)" "لاتویائی" + "فارسی" diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml index 9c55615af30a5e59a7fa2424eeeb2cf7cc2b4aa8..4b9d08b660525764d22ea7fd51697c4350205e13 100644 --- a/packages/InputDevices/res/values-uz/strings.xml +++ b/packages/InputDevices/res/values-uz/strings.xml @@ -41,4 +41,5 @@ "Litvan" "Ispan (lotin)" "Latish" + "Fors" diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml index 3ca715bab599607b90f1bba8600a8ac5d077fc96..35c596056fbb4481dd85281485e38b6b37c8af15 100644 --- a/packages/InputDevices/res/values-vi/strings.xml +++ b/packages/InputDevices/res/values-vi/strings.xml @@ -41,4 +41,5 @@ "Tiếng Lithuania" "Tiếng Tây Ban Nha (La tinh)" "Tiếng Latvia" + "Tiếng Ba Tư" diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml index c61dccb66674965a6ccadb4fd715406a0ead29d0..5f1fc17a9d00793625058a51bb40d78aba2329e5 100644 --- a/packages/InputDevices/res/values-zh-rCN/strings.xml +++ b/packages/InputDevices/res/values-zh-rCN/strings.xml @@ -41,4 +41,5 @@ "立陶宛语" "西班牙语(拉丁美洲)" "拉脱维亚语" + "波斯语" diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml index 9385df8f403212a257aaca1e7d3fa629b527af2d..086f9664bff03e6824a32984d3a84cf95a5422d2 100644 --- a/packages/InputDevices/res/values-zh-rHK/strings.xml +++ b/packages/InputDevices/res/values-zh-rHK/strings.xml @@ -41,4 +41,5 @@ "立陶宛文" "西班牙文 (拉丁美洲)" "拉脫維亞文" + "波斯文" diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml index 89ef55857878d48a68836eac1c1f12ace4917759..5e2890f7bc79237c99d917ff2f53e1b4228e2856 100644 --- a/packages/InputDevices/res/values-zh-rTW/strings.xml +++ b/packages/InputDevices/res/values-zh-rTW/strings.xml @@ -41,4 +41,5 @@ "立陶宛文" "西班牙文 (拉丁美洲)" "拉脫維亞文" + "波斯文" diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml index 0dcffb0518f8e8262f9e89c19e5561a69915fbe3..18d26a25f5244958b9e39b24f3b7fc990a17b58d 100644 --- a/packages/InputDevices/res/values-zu/strings.xml +++ b/packages/InputDevices/res/values-zu/strings.xml @@ -41,4 +41,5 @@ "Isi-Lithuanian" "Isi-Spanish (Latin)" "Isi-Latvian" + "Isi-Persian" diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml index 5644c9a9ddfb5bf89be7794659451294f52c8573..1e262260a6c79751e7a31f697788edf930db4994 100644 --- a/packages/InputDevices/res/values/strings.xml +++ b/packages/InputDevices/res/values/strings.xml @@ -119,4 +119,7 @@ Latvian + + + Persian diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml index a302162a00f12e816077f7f9cd5ea8909210cc9b..c55711a4e716c1a746fca01cb0cc68fedc672dca 100644 --- a/packages/InputDevices/res/xml/keyboard_layouts.xml +++ b/packages/InputDevices/res/xml/keyboard_layouts.xml @@ -151,4 +151,8 @@ + + diff --git a/packages/MtpDocumentsProvider/res/values-hi/strings.xml b/packages/MtpDocumentsProvider/res/values-hi/strings.xml index 6aceb95d525c81b013fbd7dbae59db476f7dc1d7..bbd0ae711faf6cc4b828b2f6991a107290b2f3bb 100644 --- a/packages/MtpDocumentsProvider/res/values-hi/strings.xml +++ b/packages/MtpDocumentsProvider/res/values-hi/strings.xml @@ -20,6 +20,6 @@ "डाउनलोड" "%1$s %2$s" "%1$s से फ़ाइलें एक्सेस कर रहा है" - "दूसरा डिवाइस व्यस्त है. आप उसके उपलब्ध हो जाने तक फ़ाइलें स्थानांतरित नहीं कर सकते हैं." + "दूसरा डिवाइस व्यस्त है. आप उसके उपलब्ध हो जाने तक फ़ाइलें ट्रांसफ़र नहीं कर सकते." "कोई फ़ाइल नहीं मिली. हो सकता है कि दूसरा डिवाइस लॉक हो. अगर ऐसा है, तो उसे अनलॉक करें और दोबारा कोशिश करें." diff --git a/packages/MtpDocumentsProvider/res/values-mr/strings.xml b/packages/MtpDocumentsProvider/res/values-mr/strings.xml index 89a9d14243d9f616a91091e14167e9b631faaacb..d581e10f6a1d6f9ed799895f21d738e9a90a134a 100644 --- a/packages/MtpDocumentsProvider/res/values-mr/strings.xml +++ b/packages/MtpDocumentsProvider/res/values-mr/strings.xml @@ -19,7 +19,7 @@ "MTP होस्ट" "डाउनलोड" "%1$s %2$s" - "%1$s मधून फायलींंमध्ये प्रवेश करीत आहे" + "%1$s मधून फायलींंमध्ये प्रवेश करत आहे" "दुसरे डिव्हाइस व्यस्त आहे. ते उपलब्‍ध होईपर्यंत तुम्ही फायली ट्रांसफर करू शकत नाही." "कोणत्याही फायली आढळल्या नाहीत. दुसरे डिव्हाइस कदाचित बंद असू शकते. तसे असल्यास, ते अनलॉक करा आणि पुन्हा प्रयत्न करा." diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml index 4b9415e2a2ca1e400654b88570ae19d86ce0764a..91e23ddeaedffe86091d62b85eaa86c357575c60 100644 --- a/packages/PrintSpooler/AndroidManifest.xml +++ b/packages/PrintSpooler/AndroidManifest.xml @@ -36,6 +36,8 @@ + + - - + diff --git a/packages/PrintSpooler/res/values-b+sr+Latn/strings.xml b/packages/PrintSpooler/res/values-b+sr+Latn/strings.xml index 49fe52be91275a33ba9ae57aa58013d7b19ba84a..9c29ff27d5e0d3e0c38384ca8db888021b29720f 100644 --- a/packages/PrintSpooler/res/values-b+sr+Latn/strings.xml +++ b/packages/PrintSpooler/res/values-b+sr+Latn/strings.xml @@ -16,7 +16,7 @@ - "Štamp. iz memor." + "Štampanje iz memorije" "Još opcija" "Odredište" "Kopije" diff --git a/packages/PrintSpooler/res/values-bn/strings.xml b/packages/PrintSpooler/res/values-bn/strings.xml index d2751f129de0a949d274f3af40bdae9895ae0c37..cd74d221246ea4b4380763780f294ab6154fb618 100644 --- a/packages/PrintSpooler/res/values-bn/strings.xml +++ b/packages/PrintSpooler/res/values-bn/strings.xml @@ -27,7 +27,7 @@ "দ্বিভুজ" "সজ্জা" "পৃষ্ঠাগুলি" - "একটি মুদ্রক বেছে নিন" + "একটি প্রিন্টার বেছে নিন" "সমস্ত %1$s" "%1$s এর পরিসর" "যেমন, ১—৫,৮,১১—১৩" @@ -36,7 +36,7 @@ "প্রিন্ট অ্যাপ্লিকেশান ক্র্যাশ করছে" "প্রিন্ট কার্য তৈরি করা হচ্ছে" "পিডিএফ হিসাবে সেভ করুন" - "সমস্ত মুদ্রক…" + "সমস্ত প্রিন্টার…" "প্রিন্ট ডায়লগ" "%1$d/%2$d" "%2$dটির মধ্যে %1$d নম্বর পৃষ্ঠা" @@ -48,16 +48,16 @@ "প্রিন্ট বিকল্প প্রসারিত হয়েছে" "প্রিন্ট বিকল্প সংকুচিত হয়েছে" "খুঁজুন" - "সমস্ত মুদ্রক" + "সমস্ত প্রিন্টার" "পরিষেবা যোগ করুন" "অনুসন্ধান বাক্স দেখানো হচ্ছে" "অনুসন্ধান বাক্স লুকানো রয়েছে" - "মুদ্রক যোগ করুন" - "মুদ্রক বেছে নিন" + "প্রিন্টার যোগ করুন" + "প্রিন্টার বেছে নিন" "মুদ্রকটিকে সরিয়ে দিন" - %1$sটি মুদ্রক খুঁজে পাওয়া গেছে - %1$sটি মুদ্রক খুঁজে পাওয়া গেছে + %1$sটি প্রিন্টার খুঁজে পাওয়া গেছে + %1$sটি প্রিন্টার খুঁজে পাওয়া গেছে "%1$s - %2$s" "এই মুদ্রকটির বিষয়ে আরও তথ্য" @@ -67,22 +67,22 @@ "কিছু প্রিন্ট পরিষেবা অক্ষম করা আছে" "মুদ্রকগুলি অনুসন্ধান করা হচ্ছে" "প্রিন্ট পরিষেবা সক্ষম নেই" - "কোনো মুদ্রক পাওয়া যায়নি" + "কোনো প্রিন্টার পাওয়া যায়নি" "মুদ্রকগুলি যোগ করা যাবে না" - "মুদ্রক যোগ করতে বেছে নিন" + "প্রিন্টার যোগ করতে বেছে নিন" "সক্ষম করতে বেছে নিন" "সক্ষম করা পরিষেবাগুলি" "প্রস্তাবিত পরিষেবাগুলি" "অক্ষম করা পরিষেবাগুলি" "সমস্ত পরিষেবা" - %1$sটি মুদ্রক খুঁজে পেতে ইনস্টল করুন - %1$sটি মুদ্রক খুঁজে পেতে ইনস্টল করুন + %1$sটি প্রিন্টার খুঁজে পেতে ইনস্টল করুন + %1$sটি প্রিন্টার খুঁজে পেতে ইনস্টল করুন "%1$s প্রিন্ট করা হচ্ছে" "%1$s বাতিল করা হচ্ছে" - "%1$s মুদ্রক ত্রুটি" - "মুদ্রক %1$s অবরুদ্ধ করেছে" + "%1$s প্রিন্টার ত্রুটি" + "প্রিন্টার %1$s অবরুদ্ধ করেছে" "বাতিল করুন" "রিস্টার্ট করুন" "মুদ্রকে কোনো সংযোগ নেই" diff --git a/packages/PrintSpooler/res/values-bs/strings.xml b/packages/PrintSpooler/res/values-bs/strings.xml index d3f1b80088c03c1e3674459cb9d8685c5566ba04..2e9bfa317c649889c7a713fb488d1503c9b7d5b0 100644 --- a/packages/PrintSpooler/res/values-bs/strings.xml +++ b/packages/PrintSpooler/res/values-bs/strings.xml @@ -53,7 +53,7 @@ "Okvir za pretraživanje je prikazan" "Okvir za pretraživanje je skriven" "Dodaj štampač" - "Izaberite štampač" + "Odaberite štampač" "Zaboravi ovaj štampač" %1$s štampač je pronađen diff --git a/packages/PrintSpooler/res/values-mr/strings.xml b/packages/PrintSpooler/res/values-mr/strings.xml index 05eb8539444f8c7590173d3cd1f41378750fccdd..862d19305d91fba805953fc98747dcfac2d24f72 100644 --- a/packages/PrintSpooler/res/values-mr/strings.xml +++ b/packages/PrintSpooler/res/values-mr/strings.xml @@ -34,7 +34,7 @@ "मुद्रण पूर्वावलोकन" "पूर्वावलोकनासाठी पीडीएफ व्ह्यूअर इंस्टॉल करा" "प्रिंटिंग अ‍ॅप क्रॅश झाले" - "मुद्रण कार्य व्‍युत्‍पन्न करीत आहे" + "मुद्रण कार्य व्‍युत्‍पन्न करत आहे" "पीडीएफ म्‍हणून सेव्ह करा" "सर्व प्रिंटर..." "मुद्रण संवाद" @@ -79,8 +79,8 @@ %1$s प्रिंटर शोधण्यासाठी इंस्टॉल करा %1$s प्रिंटर शोधण्यासाठी इंस्टॉल करा - "%1$s मुद्रण करीत आहे" - "%1$s रद्द करीत आहे" + "%1$s मुद्रण करत आहे" + "%1$s रद्द करत आहे" "प्रिंटर एरर %1$s" "प्रिंटरने %1$s अवरोधित केले" "रद्द करा" diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index 601491abfd7effc18521c7de09505b616e3742e4..1b7a1b8b956721fbbf79cdd13bdc366f09246d12 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -70,7 +70,6 @@ import android.util.ArraySet; import android.util.Log; import android.util.TypedValue; import android.view.KeyEvent; -import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; @@ -101,6 +100,7 @@ import com.android.printspooler.util.ApprovedPrintServices; import com.android.printspooler.util.MediaSizeUtils; import com.android.printspooler.util.MediaSizeUtils.MediaSizeComparator; import com.android.printspooler.util.PageRangeUtils; +import com.android.printspooler.widget.ClickInterceptSpinner; import com.android.printspooler.widget.PrintContentView; import com.android.printspooler.widget.PrintContentView.OptionsStateChangeListener; import com.android.printspooler.widget.PrintContentView.OptionsStateController; @@ -200,7 +200,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat private TextView mPageRangeTitle; private EditText mPageRangeEditText; - private Spinner mDestinationSpinner; + private ClickInterceptSpinner mDestinationSpinner; private DestinationAdapter mDestinationSpinnerAdapter; private boolean mShowDestinationPrompt; @@ -1383,19 +1383,14 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mSummaryCopies.setEnabled(false); mSummaryPaperSize.setEnabled(false); - mDestinationSpinner.setOnTouchListener(new View.OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - mShowDestinationPrompt = false; - mSummaryCopies.setEnabled(true); - mSummaryPaperSize.setEnabled(true); - updateOptionsUi(); - - mDestinationSpinner.setOnTouchListener(null); - mDestinationSpinnerAdapter.notifyDataSetChanged(); + mDestinationSpinner.setPerformClickListener((v) -> { + mShowDestinationPrompt = false; + mSummaryCopies.setEnabled(true); + mSummaryPaperSize.setEnabled(true); + updateOptionsUi(); - return false; - } + mDestinationSpinner.setPerformClickListener(null); + mDestinationSpinnerAdapter.notifyDataSetChanged(); }); } } diff --git a/packages/PrintSpooler/src/com/android/printspooler/widget/ClickInterceptSpinner.java b/packages/PrintSpooler/src/com/android/printspooler/widget/ClickInterceptSpinner.java new file mode 100644 index 0000000000000000000000000000000000000000..1d3aac9997ffbe4c58722ba4141afdc6b0b2fc3c --- /dev/null +++ b/packages/PrintSpooler/src/com/android/printspooler/widget/ClickInterceptSpinner.java @@ -0,0 +1,56 @@ +/* + * 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.printspooler.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.Spinner; + +/** + * Spinner that can intercept {@link Spinner#performClick()} + */ +public class ClickInterceptSpinner extends Spinner { + private OnClickListener mListener; + + /** + * Create a new spinner with the given attributes. + * + * @param context The context for the spinner + * @param attrs Attributes of the spinner + */ + public ClickInterceptSpinner(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * Set a listener invoked on {@link #performClick()} + * + * @param listener The listener to be invoked + */ + public void setPerformClickListener(OnClickListener listener) { + mListener = listener; + } + + @Override + public boolean performClick() { + if (mListener != null) { + mListener.onClick(this); + } + + return super.performClick(); + } +} diff --git a/packages/SettingsLib/common.mk b/packages/SettingsLib/common.mk index 081553493cf9cf4a280b3200f5119392c8586eb4..46b66c4900e606db9eec9a1a25c938ef0fa34ac2 100644 --- a/packages/SettingsLib/common.mk +++ b/packages/SettingsLib/common.mk @@ -20,13 +20,42 @@ LOCAL_STATIC_ANDROID_LIBRARIES += \ SettingsLib else LOCAL_RESOURCE_DIR += $(call my-dir)/res + + +## Include transitive dependencies below + +# Include support-v7-appcompat, if not already included +ifeq (,$(findstring android-support-v7-appcompat,$(LOCAL_STATIC_JAVA_LIBRARIES))) +LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res +LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat +LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat +endif + +# Include support-v7-recyclerview, if not already included +ifeq (,$(findstring android-support-v7-recyclerview,$(LOCAL_STATIC_JAVA_LIBRARIES))) +LOCAL_RESOURCE_DIR += frameworks/support/v7/recyclerview/res +LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.recyclerview +LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview +endif + +# Include android-support-v7-preference, if not already included +ifeq (,$(findstring android-support-v7-preference,$(LOCAL_STATIC_JAVA_LIBRARIES))) +LOCAL_RESOURCE_DIR += frameworks/support/v7/preference/res +LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.preference +LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-preference +endif + +# Include android-support-v14-preference, if not already included +ifeq (,$(findstring android-support-v14-preference,$(LOCAL_STATIC_JAVA_LIBRARIES))) +LOCAL_RESOURCE_DIR += frameworks/support/v14/preference/res +LOCAL_AAPT_FLAGS += --extra-packages android.support.v14.preference +LOCAL_STATIC_JAVA_LIBRARIES += android-support-v14-preference +endif + LOCAL_AAPT_FLAGS += --auto-add-overlay --extra-packages com.android.settingslib + LOCAL_STATIC_JAVA_LIBRARIES += \ android-support-annotations \ android-support-v4 \ - android-support-v7-appcompat \ - android-support-v7-preference \ - android-support-v7-recyclerview \ - android-support-v14-preference \ SettingsLib endif diff --git a/packages/SettingsLib/res/drawable/ic_info_outline_24dp.xml b/packages/SettingsLib/res/drawable/ic_info_outline_24dp.xml index 3fe1e9e5ca9f45c9c19f0c4b9d0f9ad3cde05c9b..5a7f954e0dfdb79ca1aee9ae7300773f25bb29ab 100644 --- a/packages/SettingsLib/res/drawable/ic_info_outline_24dp.xml +++ b/packages/SettingsLib/res/drawable/ic_info_outline_24dp.xml @@ -21,6 +21,12 @@ android:viewportHeight="24.0" android:tint="?android:attr/textColorSecondary"> + android:fillColor="#FF000000" + android:pathData="M12,17L12,17c0.55,0 1,-0.45 1,-1v-4c0,-0.55 -0.45,-1 -1,-1l0,0c-0.55,0 -1,0.45 -1,1v4C11,16.55 11.45,17 12,17z"/> + + diff --git a/packages/SettingsLib/res/layout/preference_category_material_settings.xml b/packages/SettingsLib/res/layout/preference_category_material_settings.xml index 741435ec9b43cc6437ec1dc215f5292aa7bafda1..245e3b741630c0ef276f628553761ba9220b2fe2 100644 --- a/packages/SettingsLib/res/layout/preference_category_material_settings.xml +++ b/packages/SettingsLib/res/layout/preference_category_material_settings.xml @@ -51,6 +51,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="@android:style/TextAppearance.Material.Body2" + android:textAlignment="viewStart" android:textColor="?android:attr/colorAccent" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"/> - + - - + + + android:layout_marginStart="@dimen/preference_no_icon_padding_start" + android:visibility="invisible" /> + + - + \ No newline at end of file diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml index f5b49784de5e05af1c3a38754f2b3120393d6103..771abe666dc992260254c871af8423dcc7b84577 100644 --- a/packages/SettingsLib/res/values-af/arrays.xml +++ b/packages/SettingsLib/res/values-af/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Gebruik stelselkeuse (verstek)" + "SBC" + "AAC" + "Qualcomm® aptX™-oudio" + "Qualcomm® aptX™ HD-oudio" + "LDAC" + "Aktiveer opsionele kodekke" + "Deaktiveer opsionele kodekke" + + + "Gebruik stelselkeuse (verstek)" + "SBC" + "AAC" + "Qualcomm® aptX™-oudio" + "Qualcomm® aptX™ HD-oudio" + "LDAC" + "Aktiveer opsionele kodekke" + "Deaktiveer opsionele kodekke" + "Gebruik stelselkeuse (verstek)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 5d04cf6974b9677707ce6ee762aa3200003f6d3d..f51e0d6165a99152df0f6457f568ccb379f0975a 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -40,12 +40,16 @@ "Gekoppel via %1$s" "Beskikbaar via %1$s" "Gekoppel, geen internet nie" + "Toegangspunt is tydelik vol" + "Gekoppel via %1$s" + "Beskikbaar via %1$s" "Baie stadig" "Stadig" "OK" "Middelmatig" "Vinnig" "Baie vinnig" + "%1$s / %2$s" "Ontkoppel" "Ontkoppel tans…" "Verbind tans…" @@ -101,6 +105,8 @@ "Wi-Fi twee stawe." "Wi-Fi drie stawe." "Wi-Fi-sein vol." + "Oop netwerk" + "Veilige netwerk" "Android-bedryfstelsel" "Verwyderde programme" "Verwyderde programme en gebruikers" @@ -187,6 +193,7 @@ "Laat altyd Wi-Fi-swerfskanderings toe" "Mobiele data is altyd aktief" "Hardewareversnelling vir verbinding" + "Wys Bluetooth-toestelle sonder name" "Deaktiveer absolute volume" "Aktiveer inband-luitoon" "Bluetooth AVRCP-weergawe" @@ -202,6 +209,12 @@ "Bluetooth-oudio-LDAC-kodek: Speelgehalte" "Kies Bluetooth-oudio-LDAC-kodek:\nSpeelgehalte" "Stroming: %1$s" + "Private DNS" + "Kies private DNS-modus" + "Af" + "Opportunisties" + "Gasheernaam van private DNS-verskaffer" + "Voer gasheernaam van DNS-verskaffer in" "Wys opsies vir draadlose skermsertifisering" "Verhoog Wi-Fi-aantekeningvlak, wys per SSID RSSI in Wi‑Fi-kieser" "Wanneer dit geaktiveer is, sal Wi-Fi die dataverbinding aggressiewer na mobiel oordra wanneer die Wi-Fi-sein swak is" @@ -226,6 +239,7 @@ "Hierdie instellings is bedoel net vir ontwikkelinggebruik. Dit kan jou toestel en die programme daarop breek of vreemde dinge laat doen." "Verifieer programme oor USB" "Kontroleer programme wat via ADB/ADT geïnstalleer is vir skadelike gedrag." + "Bluetooth-toestelle sonder name (net MAC-adresse) sal gewys word" "Deaktiveer die Bluetooth-kenmerk vir absolute volume indien daar volumeprobleme met afgeleë toestelle is, soos onaanvaarbare harde klank of geen beheer nie." "Laat toe dat luitone op die foon op Bluetooth-kopstukke gespeel word" "Plaaslike terminaal" @@ -345,12 +359,11 @@ "^1^2 oor" "%1$s%2$s" "^1^2 tot vol gelaai" - "^1^2" "Onbekend" "Laai" "laai tans" "Laai nie" - "Laai nie" + "Ingeprop; kan nie op die oomblik laai nie" "Vol" "Beheer deur administrateur" "Geaktiveer deur administrateur" @@ -375,7 +388,6 @@ "Gepasmaak (%d)" "Hulp en terugvoer" "Kieslys" - "MGT" "Voer wagwoord in om fabriekterugstelling in demonstrasiemodus uit te voer" "Volgende" "Wagwoord word benodig" diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml index e531f2896554e33d9efe02b89d978b6003270170..a5fb9cf6105810d580de97e7fe97ac8576dbef9c 100644 --- a/packages/SettingsLib/res/values-am/arrays.xml +++ b/packages/SettingsLib/res/values-am/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "የስርዓቱን ምርጫ (ነባሪ) ተጠቀም" + "SBC" + "AAC" + "Qualcomm® aptX™ ኦዲዮ" + "Qualcomm® aptX™ HD ኦዲዮ" + "LDAC" + "አማራጭ ኮዴኮችን አንቃ" + "አማራጭ ኮዴኮችን አሰናክል" + + + "የስርዓቱን ምርጫ (ነባሪ) ተጠቀም" + "SBC" + "AAC" + "Qualcomm® aptX™ ኦዲዮ" + "Qualcomm® aptX™ HD ኦዲዮ" + "LDAC" + "አማራጭ ኮዴኮችን አንቃ" + "አማራጭ ኮዴኮችን አሰናክል" + "የስርዓቱን ምርጫ (ነባሪ) ተጠቀም" "44.1 ኪኸ" diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index b42d26ac32253df9040ef862bc8a2b30d3b0686e..3167dea6c1f415e60f3ca3aa1e84d231821fe7d2 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -40,12 +40,16 @@ "በ%1$s በኩል መገናኘት" "በ%1$s በኩል የሚገኝ" "ተገናኝቷል፣ ምንም በይነመረብ የለም" + "የመዳረሻ ነጥብ ለጊዜው ሞልቷል" + "በ%1$s በኩል ተገናኝቷል" + "በ%1$s በኩል የሚገኝ" "በጣም ቀርፋፋ" "አዘግይ" "እሺ" "መካከለኛ" "ፈጣን" "እጅግ በጣም ፈጣን" + "%1$s / %2$s" "ተለያይቷል" "በመለያየት ላይ..." "በማገናኘት ላይ…" @@ -101,6 +105,8 @@ "ሁለት የWiFi አሞሌዎች።" "ሦስት የWiFi አሞሌዎች።" "የWiFi ምልክት ሙሉ ነው።" + "አውታረ መረብ ክፈት" + "ደህንነቱ የተጠበቀ አውታረ መረብ" "Android ስርዓተ ክወና" "የተወገዱ መተግበሪያዎች" "የተወገዱ መተግበሪያዎች እና ተጠቃሚዎች" @@ -187,6 +193,7 @@ "ሁልጊዜ የWi‑Fi ማንቀሳቀስ ቅኝቶችን ይፍቀዱ" "የተንቀሳቃሽ ስልክ ውሂብ ሁልጊዜ ገቢር ነው" "የሃርድዌር ማቀላጠፊያን በማስተሳሰር ላይ" + "የብሉቱዝ መሣሪያዎችን ያለ ስሞች አሳይ" "ፍጹማዊ ድምፅን አሰናክል" "የውስጠ-ሞገድ ማስጮህን አንቃ" "የብሉቱዝ AVRCP ስሪት" @@ -202,6 +209,12 @@ "የብሉቱዝ ኦዲዮ LDAC ኮዴክ ይምረጡ፦ የመልሶ ማጫወት ጥራት" "የብሉቱዝ ኦዲዮ LDAC ኮዴክ ይምረጡ፦\nየመልሶ ማጫወት ጥራት" "ዥረት፦ %1$s" + "የግል ዲኤንኤስ" + "የግል ዲኤንኤስ ሁነታ ይምረጡ" + "ጠፍቷል" + "አድርባይ" + "የግል ዲኤንኤስ አቅራቢ አስተናጋጅ ስም" + "የዲኤንኤስ አቅራቢ አስተናጋጅ ስም ያስገቡ" "የገመድ አልባ ማሳያ እውቅና ማረጋገጫ አማራጮችን አሳይ" "የWi‑Fi ምዝግብ ማስታወሻ አያያዝ ደረጃ ጨምር፣ በWi‑Fi መምረጫ ውስጥ በአንድ SSID RSSI አሳይ" "ሲነቃ የWi‑Fi ምልክት ዝቅተኛ ሲሆን Wi‑Fi የውሂብ ግንኙነት ለሞባይል ማስረከብ ላይ ይበልጥ አስገዳጅ ይሆናል" @@ -226,6 +239,7 @@ "እነዚህ ቅንብሮች የታሰቡት ለግንባታ አጠቃቀም ብቻ ናቸው። መሳሪያህን እና በሱ ላይ ያሉትን መተግበሪያዎች እንዲበለሹ ወይም በትክክል እንዳይሰሩ ሊያደርጉ ይችላሉ።" "መተግበሪያዎች በUSB በኩል ያረጋግጡ" "በADB/ADT በኩል የተጫኑ መተግበሪያዎች ጎጂ ባህሪ ካላቸው ያረጋግጡ።" + "የብሉቱዝ መሣሪያዎች ያለ ስሞች (MAC አድራሻዎች ብቻ) ይታያሉ" "እንደ ተቀባይነት በሌለው ደረጃ ድምፁ ከፍ ማለት ወይም መቆጣጠር አለመቻል ያሉ ከሩቅ መሣሪያዎች ጋር የድምፅ ችግር በሚኖርበት ጊዜ የብሉቱዝ ፍጹማዊ ድምፅን ባሕሪ ያሰናክላል።" "በስልኩ ላይ ያሉ የጥሪ ቅላጼዎች በብሉቱዝ ጆሮ ማዳመጫዎች ላይ እንዲጫወቱ ፍቀድ" "አካባቢያዊ ተርሚናል" @@ -345,12 +359,11 @@ "^1 - ^2 ይቀራል" "%1$s - %2$s" "^1 - ሙሉ ለሙሉ እስኪሞላ ድረስ ^2" - "^1 - ^2" "ያልታወቀ" "ኃይል በመሙላት ላይ" "ኃይል በመሙላት ላይ" "ባትሪ እየሞላ አይደለም" - "ኃይል እየሞላ አይደለም" + "ተሰክቷል፣ አሁን ኃይል መሙላት አይቻልም" "ሙሉነው" "በአስተዳዳሪ ቁጥጥር የተደረገበት" "በአስተዳዳሪ ነቅቷል" @@ -375,7 +388,6 @@ "ብጁ (%d)" "እገዛ እና ግብረመልስ" "ምናሌ" - "ጂኤምቲ" "የፋብሪካ ዳግም ማስጀመር በማሳያ ሁነታ ውስጥ ለማከናወን የይለፍ ቃል ያስገቡ" "ቀጣይ" "የይለፍ ቃል ያስፈልጋል" diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml index cc8293c8a27a79d2850e4b51db75b2c86d3f2d11..603dcc8c3e1430cdf5921769235b4babe15372ab 100644 --- a/packages/SettingsLib/res/values-ar/arrays.xml +++ b/packages/SettingsLib/res/values-ar/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "استخدام اختيار النظام (افتراضي)" + "SBC" + "AAC" + "صوت Qualcomm® aptX™" + "صوت Qualcomm® aptX™ HD" + "LDAC" + "تمكين برامج الترميز الاختيارية" + "تعطيل برامج الترميز الاختيارية" + + + "استخدام اختيار النظام (افتراضي)" + "SBC" + "AAC" + "صوت Qualcomm® aptX™" + "صوت Qualcomm® aptX™ HD" + "LDAC" + "تمكين برامج الترميز الاختيارية" + "تعطيل برامج الترميز الاختيارية" + "استخدام اختيار النظام (افتراضي)" "44.1 كيلو هرتز" diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 08f4a63025102d7b14e1caba28b37ce528b71ba3..7421c9fcd382dcd2d1c1355df1eca1559affe094 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -24,7 +24,7 @@ "لا شيء" "تم الحفظ" "معطلة" - "‏أخفقت تهيئة عنوان IP" + "‏تعذّرت تهيئة عنوان IP" "الجهاز غير متصل بسبب انخفاض جودة الشبكة" "‏تعذّر اتصال WiFi" "حدثت مشكلة في المصادقة" @@ -40,12 +40,16 @@ "‏تم الاتصال عبر %1$s" "‏متوفرة عبر %1$s" "متصلة، ولا يتوفر إنترنت" + "نقطة الدخول ممتلئة مؤقتًا" + "‏تم الاتصال عبر %1$s" + "‏متوفرة عبر %1$s" "بطيئة جدًا" "بطيئة" "موافق" "متوسطة" "سريعة" "سريعة جدًا" + "%1$s / %2$s" "غير متصل" "جارٍ قطع الاتصال..." "جارٍ الاتصال…" @@ -101,6 +105,8 @@ "‏إشارة Wi-Fi تتكون من شريطين." "‏إشارة Wi-Fi تتكون من ثلاثة أشرطة." "‏إشارة Wi-Fi كاملة." + "شبكة مفتوحة" + "شبكة محمية بكلمة مرور" "‏نظام التشغيل Android" "التطبيقات المزالة" "التطبيقات والمستخدمون الذين تمت إزالتهم" @@ -187,6 +193,7 @@ "‏السماح دائمًا بعمليات فحص Wi-Fi للتجوال" "بيانات الجوّال نشطة دائمًا" "تسريع الأجهزة للتوصيل" + "عرض أجهزة البلوتوث بدون أسماء" "تعطيل مستوى الصوت المطلق" "تمكين الرنين ضمن النطاق الأساسي" "‏إصدار Bluetooth AVRCP" @@ -202,6 +209,12 @@ "‏برنامج ترميز LDAC لصوت البلوتوث: جودة التشغيل" "‏اختيار برنامج ترميز LDAC لصوت البلوتوث:\nجودة التشغيل" "البث: %1$s" + "نظام أسماء النطاقات الخاص" + "اختر وضع نظام أسماء النطاقات الخاص" + "غير مفعّل" + "انتهازي" + "اسم مضيف مزوّد نظام أسماء النطاقات الخاص" + "أدخل اسم مضيف مزوّد نظام أسماء النطاقات" "عرض خيارات شهادة عرض شاشة لاسلكي" "‏زيادة مستوى تسجيل Wi-Fi، وعرض لكل SSID RSSI في منتقي Wi-Fi" "‏عند تمكينه، سيكون Wi-Fi أكثر حدة في تسليم اتصال البيانات إلى الجوّال، وذلك عندما تكون إشارة WiFi منخفضة" @@ -226,6 +239,7 @@ "هذه الإعدادات مخصصة لاستخدام التطوير فقط. قد يتسبب هذا في حدوث أعطال أو خلل في أداء الجهاز والتطبيقات المثبتة عليه." "‏التحقق من التطبيقات عبر USB" "‏التحقق من التطبيقات المثبتة عبر ADB/ADT لكشف السلوك الضار" + "‏سيتم عرض أجهزة البلوتوث بدون أسماء (عناوين MAC فقط)" "لتعطيل ميزة مستوى الصوت المطلق للبلوتوث في حالة حدوث مشكلات متعلقة بمستوى الصوت مع الأجهزة البعيدة مثل مستوى صوت عالٍ بشكل غير مقبول أو نقص إمكانية التحكم في الصوت." "السماح بتشغيل نغمات الرنين على الهاتف من خلال سماعات الرأس البلوتوث" "تطبيق طرفي محلي" @@ -345,12 +359,11 @@ "^1 - يتبقى ^2" "%1$s - %2$s" "^1 - ^2 حتى يكتمل الشحن" - "^1 - ^2" "غير معروف" "جارٍ الشحن" "جارٍ الشحن" "لا يتم الشحن" - "لا يتم الشحن" + "تم التوصيل، ولكن يتعذّر الشحن الآن" "ممتلئة" "إعدادات يتحكم فيها المشرف" "تم تمكين الإعداد بواسطة المشرف" @@ -375,7 +388,6 @@ "مخصص (%d)" "المساعدة والتعليقات" "القائمة" - "غرينيتش" "إدخال كلمة المرور لإعادة الضبط بحسب بيانات المصنع في الوضع التجريبي" "التالي" "يلزم توفر كلمة مرور" diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml index f329e00a3cc8a5e3dbe326499f8214b95dd88fd0..9048d93b3b60b516cf848b71d08640ab8ecdb3d3 100644 --- a/packages/SettingsLib/res/values-az/arrays.xml +++ b/packages/SettingsLib/res/values-az/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Sistem Seçimini istifadə edin (Defolt)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Şəxsi Kodekləri Aktiv edin" + "Şəxsi Kodekləri Deaktiv edin" + + + "Sistem Seçimini istifadə edin (Defolt)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Şəxsi Kodekləri Aktiv edin" + "Şəxsi Kodekləri Deaktiv edin" + "Sistem Seçimini istifadə edin (Defolt)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index 494ae00bc9668821b22d35c6e284a0cf0f58e80d..42190ce09ce0f3f46febbab7efbe8774d6c40f70 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -40,12 +40,16 @@ "%1$s vasitəsilə qoşuludur" "%1$s vasitəsilə əlçatandır" "Qoşuludur, internet yoxdur" + "Giriş nöqtəsi müvəqqəti olaraq doludur" + "%1$s ilə qoşuludur" + "%1$s vasitəsilə əlçatandır" "Çox Yavaş" "Yavaş" "OK" "Orta" "Sürətli" "Çox Sürətli" + "%1$s / %2$s" "Ayrıldı" "Ayrılır..." "Qoşulur..." @@ -101,6 +105,8 @@ "Wifi iki xətdir." "Wifi üç xətdir." "Wifi siqnalı tamdır." + "Açıq şəbəkə" + "Təhlükəsiz şəbəkə" "Android OS" "Silinmiş tətbiqlər" "Tətbiqləri və istifadəçiləri silin" @@ -187,6 +193,7 @@ "Wi‑Fi axtarışlarına həmişə icazə verin" "Mobil data həmişə aktiv" "Birləşmə üçün avadanlıq akselerasiyası" + "Bluetooth cihazlarını adsız göstərin" "Mütləq səs həcmi deaktiv edin" "Diapazon daxili zəngi aktiv edin" "Bluetooth AVRCP Versiya" @@ -202,6 +209,12 @@ "Bluetooth Audio LDAC Kodeki:Oxutma Keyfiyyəti" "Bluetooth Audio LDAC Kodek:\nOxutma Keyfiyyəti Seçin" "Canlı yayım: %1$s" + "Şəxsi DNS" + "Şəxsi DNS Rejimini Seçin" + "Deaktiv" + "Geniş imkanlar" + "Şəxsi DNS provayderinin host adı" + "DNS provayderinin host adını daxil edin" "Simsiz displey sertifikatlaşması üçün seçimləri göstərir" "Wi‑Fi giriş səviyyəsini qaldırın, Wi‑Fi seçəndə hər SSID RSSI üzrə göstərin" "Aktiv edildikdə, Wi-Fi siqnalı zəif olan zaman, data bağlantısını mobilə ötürərəkən Wi-Fi daha aqressiv olacaq" @@ -226,6 +239,7 @@ "Bu parametrlər yalnız inkişafetdirici istifadə üçün nəzərdə tutulub. Onlar cihaz və tətbiqlərinizin sınması və ya pis işləməsinə səbəb ola bilər." "USB üzərindən tətbiqləri yoxlayın" "ADB/ADT vasitəsi ilə quraşdırılmış tətbiqləri zərərli davranış üzrə yoxlayın." + "Adsız Bluetooth cihazları (yalnız MAC ünvanları) göstəriləcək" "Uzaqdan idarə olunan cihazlarda dözülməz yüksək səs həcmi və ya nəzarət çatışmazlığı kimi səs problemləri olduqda Bluetooth mütləq səs həcmi xüsusiyyətini deaktiv edir." "Telefondakı bütün melodiyaların Bluetooth qulaqlıqlarında oxudulmasına icazə verin" "Yerli terminal" @@ -345,12 +359,11 @@ "^1 - ^2 qalıb" "%1$s - %2$s" "^1 - ^2 tam enerji yığana kimi" - "^1 - ^2" "Naməlum" "Enerji doldurma" "enerji yığır" "Doldurulmur" - "Enerji doldurulmur" + "Cihaz hazırda batareya yığa bilmir" "Tam" "Admin tərəfindən nəzarət olunur" "Admin tərəfindən aktiv edildi" @@ -375,7 +388,6 @@ "Fərdi (%d)" "Yardım və rəy" "Menyu" - "GMT" "Demo rejimində sıfırlamaq üçün parol daxil edin" "Növbəti" "Parol tələb olunur" diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index e8fade22b8a27223e58d8d54ceb5f6d99eb86b71..fb06a8233c7ac41f9c1a6deed7f563da5f5a4880 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -28,6 +28,9 @@ "Nije povezano zbog lošeg kvaliteta mreže" "Wi-Fi veza je otkazala" "Problem sa potvrdom autentičnosti" + "Povezivanje nije uspelo" + "Povezivanje sa „%1$s“ nije uspelo" + "Proverite lozinku i probajte ponovo" "Nije u opsegu" "Automatsko povezivanje nije uspelo" "Nema pristupa internetu" @@ -37,18 +40,12 @@ "Veza je uspostavljena preko pristupne tačke %1$s" "Dostupna je preko pristupne tačke %1$s" "Veza je uspostavljena, nema interneta" - - - - - - - - - - - - + "Veoma spora" + "Spora" + "Potvrdi" + "Srednja" + "Brza" + "Veoma brza" "Veza je prekinuta" "Prekidanje veze..." "Povezivanje…" @@ -58,22 +55,22 @@ "Povezano (bez medija)" "Povezano je (nema pristupa porukama)" "Povezano (bez telefona ili medija)" + "Povezano, nivo baterije je %1$s" + "Povezano (bez telefona), nivo baterije je %1$s" + "Povezano (bez medija), nivo baterije je %1$s" + "Povezano (bez telefona ili medija), nivo baterije je %1$s" "Zvuk medija" - - + "Telefonski pozivi" "Prenos datoteke" "Ulazni uređaj" "Pristup Internetu" "Deljenje kontakata" "Koristite za deljenje kontakata" "Deljenje internet veze" - - + "SMS-ovi" "Pristup SIM kartici" - - - - + "HD zvuk: %1$s" + "HD zvuk" "Povezano sa zvukom medija" "Povezano sa zvukom telefona" "Povezano sa serverom za prenos datoteka" @@ -189,6 +186,7 @@ "Agresivan prelaz sa Wi‑Fi mreže na mobilnu" "Uvek dozvoli skeniranje Wi‑Fi-ja u romingu" "Mobilni podaci su uvek aktivni" + "Hardversko ubrzanje privezivanja" "Onemogući glavno podešavanje jačine zvuka" "Omogućavanje zvonjave na istom kanalu" "Verzija Bluetooth AVRCP-a" @@ -220,6 +218,7 @@ "Dozvoli lažne lokacije" "Omogući proveru atributa za pregled" "Neka mobilni podaci uvek budu aktivni, čak i kada je Wi‑Fi aktivan (radi brze promene mreže)." + "Koristi hardversko ubrzanje privezivanja ako je dostupno" "Dozvoli otklanjanje USB grešaka?" "Otklanjanje USB grešaka namenjeno je samo za svrhe programiranja. Koristite ga za kopiranje podataka sa računara na uređaj i obrnuto, instaliranje aplikacija na uređaju bez obaveštenja i čitanje podataka iz evidencije." "Želite li da opozovete pristup otklanjanju USB grešaka sa svih računara koje ste prethodno odobrili?" @@ -336,17 +335,17 @@ "Korekcija boja" "Ova funkcija je eksperimentalna i može da utiče na kvalitet rada." "Zamenjuje ga %1$s" - "Još oko %1$s" - "Na osnovu potrošnje imate još otprilike %1$s" - "%1$s do potpunog punjenja" - "Preostalo vreme: %1$s" - "Na osnovu potrošnje imate još %1$s" - "%1$s – ostalo je oko %2$s" - "%1$s – na osnovu potrošnje imate još otprilike %2$s" - "Preostalo je %1$s%2$s" + "Još oko ^1" + "Na osnovu potrošnje imate još otprilike ^1" + "^1 do potpunog punjenja" + "Preostalo vreme: ^1" + "Na osnovu potrošnje imate još ^1" + "^1 – ostalo je oko ^2" + "^1 – na osnovu potrošnje imate još otprilike ^2" + "Preostalo je ^1^2" "%1$s%2$s" - "%1$s%2$s do potpunog punjenja" - "%1$s%2$s" + "^1^2 do potpunog punjenja" + "^1^2" "Nepoznato" "Punjenje" "puni se" @@ -356,6 +355,10 @@ "Kontroliše administrator" "Omogućio je administrator" "Administrator je onemogućio" + "Onemogućeno" + "Dozvoljeno" + "Nije dozvoljeno" + "Instaliranje nepoznatih aplikacija" "Početna za Podešavanja" "0%" diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index c69b3141c7a6eb58051352fac59f52153bd032ef..f73fd39f61f4e65c90bd0ec2ec0a28db2699524b 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -28,6 +28,9 @@ "Няма падключэння з-за нізкай якасці сеткі" "Збой падлучэння Wi-Fi" "Праблема аўтэнтыфікацыі" + "Немагчыма падключыцца" + "Немагчыма падключыцца да сеткі \"%1$s\"" + "Праверце пароль і паўтарыце спробу" "Не ў зоне дасягальнасці" "Не будзе аўтаматычна падключацца" "Няма доступу да інтэрнэту" @@ -37,18 +40,12 @@ "Падлучана праз %1$s" "Даступна праз %1$s" "Падлучана, няма інтэрнэту" - - - - - - - - - - - - + "Вельмі павольная" + "Павольная" + "ОК" + "Сярэдняя" + "Хуткая" + "Вельмі хуткая" "Адключана" "Адключэнне..." "Злучэнне..." @@ -58,22 +55,22 @@ "Падключэнне (без носьбіта)" "Падлучана (без доступу да паведамленняў)" "Падключаны (без тэлефона або носьбіта)" + "Падключана, узровень зараду акумулятара: %1$s" + "Падключана (без тэлефона), узровень зараду акумулятара: %1$s" + "Падключана (без носьбіта), узровень зараду акумулятара: %1$s" + "Падключана (без тэлефона ці носьбіта), узровень зараду акумулятара: %1$s" "Аўдыё медыяпрылады" - - + "Тэлефонныя выклікі" "Перадача файлаў" "Прылада ўводу" "Доступ у інтэрнэт" "Абагуленне кантактаў" "Выкарыстоўваць для абагулення кантактаў" "Прадастаўленне доступу да Інтэрнэту" - - + "Тэкставыя паведамленні" "Доступ да SIM-карты" - - - - + "Аўдыя ў HD: %1$s" + "Аўдыя ў HD" "Падключана да аўдыё медыа" "Падключана да аўдыё тэлефона" "Падключаны да серверу перадачы файлаў" @@ -189,6 +186,7 @@ "Інтэнсіўны пераход з Wi‑Fi на маб. сетку" "Заўсёды дазваляць роўмінгавае сканіраванне Wi‑Fi" "Мабільная перадача даных заўсёды актыўная" + "Апаратнае паскарэнне ў рэжыме мадэма" "Адключыць абсалютны гук" "Уключыць унутрыпалосны празвон" "Версія Bluetooth AVRCP" @@ -220,6 +218,7 @@ "Дазволіць несапраўдныя месцы" "Уключыць прагляд атрыбутаў" "Перадача даных мабільнай сувязі заўсёды актыўна, нават калі актыўна сетка Wi‑Fi (для хуткага пераключэння паміж сеткамі)." + "Выкарыстоўваць апаратнае паскарэнне ў рэжыме мадэма пры наяўнасці" "Дазволіць адладку USB?" "Адладка USB прызначана толькі для мэтаў распрацоўкі. Яна можа выкарыстоўвацца, каб капіяваць дадзеныя паміж кампутарам і прыладай, усталёўваць прыкладанні на прыладзе без папярэдняга апавяшчэння і чытаць дадзеныя дзённiка." "Адклікаць доступ да адладкі USB з усіх камп\'ютараў, на якiх вы уваходзiлi ў сiстэму?" @@ -336,17 +335,17 @@ "Карэкцыя колеру" "Гэта функцыя з\'яўляецца эксперыментальнай і можа паўплываць на прадукцыйнасць." "Перавызначаны %1$s" - "Засталося каля %1$s" - "Засталося каля %1$s на аснове вашага выкарыстання" - "Да поўнай зарадкі засталося %1$s" - "Засталося %1$s" - "Засталося %1$s на аснове вашага выкарыстання" - "%1$s – засталося каля %2$s" - "%1$s – засталося каля %2$s на аснове вашага выкарыстання" - "%1$s – засталося %2$s" + "Засталося каля ^1" + "Засталося каля ^1 на аснове вашага выкарыстання" + "Да поўнай зарадкі засталося ^1" + "Засталося ^1" + "Засталося ^1 на аснове вашага выкарыстання" + "^1 – засталося каля ^2" + "^1 – засталося каля ^2 на аснове вашага выкарыстання" + "^1 – засталося ^2" "%1$s%2$s" - "%1$s%2$s да поўнай зарадкі" - "%1$s%2$s" + "^1^2 да поўнай зарадкі" + "^1^2" "Невядома" "Зарадка" "ідзе зарадка" @@ -356,6 +355,10 @@ "Кантралюецца адміністратарам" "Уключана адміністратарам" "Адключана адміністратарам" + "Адключанае" + "Дазволена" + "Забаронена" + "Усталёўваць невядомыя праграмы" "Галоўная старонка налад" "0 %" diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml index fe1dad2f1e5dbb0e3b2f947e8daff8fef82e0b83..7eec6ed3664c63949ca491304b310a1c936c30a9 100644 --- a/packages/SettingsLib/res/values-bg/arrays.xml +++ b/packages/SettingsLib/res/values-bg/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Използване на сист. избор (стандартно)" + "SBC" + "Разширено аудиокодиране (AAC)" + "Аудио: aptX™ от Qualcomm®" + "Аудио: aptX™ HD от Qualcomm®" + "LDAC" + "Активиране на кодеците по избор" + "Деактивиране на кодеците по избор" + + + "Използване на сист. избор (стандартно)" + "SBC" + "Разширено аудиокодиране (AAC)" + "Аудио: aptX™ от Qualcomm®" + "Аудио: aptX™ HD от Qualcomm®" + "LDAC" + "Активиране на кодеците по избор" + "Деактивиране на кодеците по избор" + "Използване на сист. избор (стандартно)" "44,1 кХц" diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index aa42ccea3c2a5df8738f4f14ab05c845a38a2ce7..a554289b5988ed4b5d296c96f00bf81545a6a1c2 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -40,12 +40,16 @@ "Установена е връзка през „%1$s“" "Мрежата е достъпна през „%1$s“" "Установена е връзка – няма достъп до интернет" + "Точката за достъп временно е пълна" + "Установена е връзка през %1$s" + "Мрежата е достъпна през %1$s" "Много бавна" "Бавна" "ОK" "Средна" "Бърза" "Много бърза" + "%1$s/%2$s" "Изкл." "Изключва се..." "Установява се връзка…" @@ -101,6 +105,8 @@ "Wi-Fi е с две чертички." "Wi-Fi е с три чертички." "Сигналът за Wi-Fi е пълен." + "Отворена мрежа" + "Защитена мрежа" "Android (ОС)" "Премахнати приложения" "Премахнати приложения и потребители" @@ -187,6 +193,7 @@ "Сканирането за роуминг на Wi-Fi да е разрешено винаги" "Винаги активни мобилни данни" "Хардуерно ускорение за тетъринга" + "Показване на устройствата с Bluetooth без имена" "Деактивиране на пълната сила на звука" "Активиране на звъненето в една и съща честотна лента" "Версия на AVRCP за Bluetooth" @@ -202,6 +209,12 @@ "Кодек за звука през Bluetooth с технологията LDAC: Качество на възпроизвеждане" "Изберете кодек за звука през Bluetooth с технологията LDAC:\nКачество на възпроизвеждане" "Поточно предаване: %1$s" + "Частен DNS" + "Изберете режим на частния DNS" + "Изкл." + "При възможност" + "Име на хоста на доставчика на частния DNS" + "Въведете името на хоста на DNS доставчика" "Показване на опциите за сертифициране на безжичния дисплей" "По-подробно регистр. на Wi‑Fi – данни за RSSI на SSID в инстр. за избор на Wi‑Fi" "При активиране предаването на връзката за данни от Wi-Fi към мобилната мрежа ще е по-агресивно, когато сигналът за Wi-Fi е слаб" @@ -226,6 +239,7 @@ "Тези настройки са предназначени само за програмиране. Те могат да доведат до прекъсване на работата или неправилно функциониране на устройството ви и приложенията в него." "Потвържд. на прил. през USB" "Проверка на инсталираните чрез ADB/ADT приложения за опасно поведение." + "Ще бъдат показани устройствата с Bluetooth без имена (само MAC адресите)" "Деактивира функцията на Bluetooth за пълна сила на звука в случай на проблеми със звука на отдалечени устройства, като например неприемливо висока сила на звука или липса на управление." "Разрешаване на мелодиите на телефона да се възпроизвеждат на слушалките с Bluetooth" "Локален терминал" @@ -345,12 +359,11 @@ "^1 – оставащо време: ^2" "%1$s%2$s" "^1^2 до пълно зареждане" - "^1^2" "Неизвестно" "Зарежда се" "зарежда се" "Не се зарежда" - "Не се зарежда" + "Включена в захранването, в момента не се зарежда" "Пълна" "Контролира се от администратор" "Активирано от администратора" @@ -375,7 +388,6 @@ "Персонализирано (%d)" "Помощ и отзиви" "Меню" - "Средно време по Гринуич (GMT)" "Въведете парола за възст. на фабр. настройки в демонстр. режим" "Напред" "Изисква се парола" diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml index ecfeb46a4cb89e686eef797620f8553fa0ef1f1d..60869c4d56a0c569472b3bca708a42f0e954121e 100644 --- a/packages/SettingsLib/res/values-bn/arrays.xml +++ b/packages/SettingsLib/res/values-bn/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)" + "SBC" + "AAC" + "Qualcomm® aptX™ অডিও" + "Qualcomm® aptX™ HD অডিও" + "LDAC" + "ঐচ্ছিক কোডেক সক্ষম করুন" + "ঐচ্ছিক কোডেক অক্ষম করুন" + + + "সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)" + "SBC" + "AAC" + "Qualcomm® aptX™ অডিও" + "Qualcomm® aptX™ HD অডিও" + "LDAC" + "ঐচ্ছিক কোডেক সক্ষম করুন" + "ঐচ্ছিক কোডেক অক্ষম করুন" + "সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)" "৪৪.১ kHz" diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 029d79d13b31e298813138b14003823853a5f78a..ff86c9d05a1786343e7d66047ea8cf268b36344a 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -40,12 +40,16 @@ "%1$s মাধ্যমে সংযুক্ত হয়েছে" "%1$s এর মাধ্যমে উপলব্ধ" "সংযুক্ত, ইন্টারনেট নেই" + "এই মুহূর্তে অ্যাক্সেস পয়েন্টের কোনও কানেকশন ফাঁকা নেই" + "%1$s এর মাধ্যমে সংযুক্ত হয়েছে" + "%1$s এর মাধ্যমে পাওয়া যাচ্ছে" "খুব ধীরে" "ধীরে" "ঠিক আছে" "মাঝারি" "দ্রুত" "খুব দ্রুত" + "%1$s / %2$s" "সংযোগ বিচ্ছিন্ন করা হয়েছে" "সংযোগ বিচ্ছিন্ন হচ্ছে..." "সংযুক্ত হচ্ছে..." @@ -74,7 +78,7 @@ "মিডিয়া অডিওতে সংযুক্ত রয়েছে" "ফোন অডিওতে সংযুক্ত" "ফাইল স্থানান্তর সার্ভারের সঙ্গে সংযুক্ত" - "মানচিত্রে সংযুক্ত" + "ম্যাপে সংযুক্ত" "SAP -তে সংযুক্ত হয়েছে" "ফাইল স্থানান্তর সার্ভারের সঙ্গে সংযুক্ত নয়" "ইনপুট ডিভাইসে সংযুক্ত" @@ -101,6 +105,8 @@ "ওয়াই ফাই এ দুইটি দণ্ড৷" "ওয়াই ফাই এ তিনটি দণ্ড৷" "ওয়াই ফাই এ সম্পূর্ণ সিগন্যাল৷" + "খোলা নেটওয়ার্ক" + "সুরক্ষিত নেটওয়ার্ক" "Android OS" "সরানো অ্যাপ্লিকেশানগুলি" "সরানো অ্যাপ্লিকেশানগুলি এবং ব্যবহারকারীগণ" @@ -187,6 +193,7 @@ "সর্বদা ওয়াই ফাই রোম স্ক্যানকে অনুমতি দিন" "মোবাইল ডেটা সব সময় সক্রিয় থাক" "টিথারিং হার্ডওয়্যার অ্যাক্সিলারেশন" + "নামহীন ব্লুটুথ ডিভাইসগুলি দেখুন" "চূড়ান্ত ভলিউম অক্ষম করুন" "ইন-ব্যান্ড রিং করা সক্ষম করুন" "ব্লুটুথ AVRCP ভার্সন" @@ -202,6 +209,12 @@ "ব্লুটুথ অডিও LDAC কোডেক: প্লেব্যাক গুণমান" "ব্লুটুথ অডিও LDAC কোডেক বেছে নিন:\nপ্লেব্যাক গুণমান" "স্ট্রিমিং: %1$s" + "ব্যক্তিগত ডিএনএস" + "ব্যক্তিগত ডিএনএস মোড বেছে নিন" + "বন্ধ আছে" + "সুবিধাবাদী" + "ব্যক্তিগত ডিএনএস প্রদানকারীর হোস্টনেম" + "ডিএনএস প্রদানকারীর হোস্টনেম লিখুন" "ওয়্যারলেস প্রদর্শন সার্টিফিকেশন জন্য বিকল্পগুলি দেখান" "ওয়াই-ফাই লগিং স্তর বাড়ান, ওয়াই-ফাই চয়নকারীতে SSID RSSI অনুযায়ী দেখান" "সক্ষম করা থাকলে, ওয়াই ফাই সিগন্যালের মান খারাপ হলে ডেটা সংযোগ মোবাইলের কাছে হস্তান্তর করার জন্য ওয়াই ফাই আরো বেশি তৎপর হবে।" @@ -226,6 +239,7 @@ "এইসব সেটিংস কেবলমাত্র উন্নত করার উদ্দেশ্য। সেগুলি কারণে আপনার ডিভাইস ভেঙ্গে এবং অ্যাপ্লিকেশানগুলি ভালো ভাবে কাজ করা নাও কারতে পারে।" "USB এর অ্যাপ্লিকেশনগুলি যাচাই করুন" "ক্ষতিকারক ক্রিয়াকলাপ করছে কিনা তার জন্য ADB/ADT মারফত ইনস্টল করা অ্যাপ্লিকেশানগুলি চেক করুন।" + "নামহীন ব্লুটুথ ডিভাইসগুলি দেখানো হবে (শুধুমাত্র MAC ঠিকানা)" "অপ্রত্যাশিত উচ্চ ভলিউম বা নিয়ন্ত্রণের অভাবের মত দূরবর্তী ডিভাইসের ভলিউম সমস্যাগুলির ক্ষেত্রে, ব্লুটুথ চুড়ান্ত ভলিউম বৈশিষ্ট্য অক্ষম করে৷" "ফোনের রিংটোন ব্লুটুথ হেডসেটে শোনা সক্ষম করুন" "স্থানীয় টার্মিনাল" @@ -345,12 +359,11 @@ "^1 - ^2 বাকী আছে" "%1$s - %2$s" "^1 - সম্পূর্ণ চার্জ হতে ^2 লাগবে" - "^1 - ^2" "অজানা" "চার্জ হচ্ছে" "চার্জ হচ্ছে" "চার্জ হচ্ছে না" - "চার্জ হচ্ছে না" + "প্লাগ-ইন করা হয়েছে কিন্তু এখনই চার্জ করা যাবে না" "পূর্ণ" "প্রশাসকের দ্বারা নিয়ন্ত্রিত" "প্রশাসক দ্বারা সক্ষম করা হয়েছে" @@ -375,7 +388,6 @@ "কাস্টম (%d)" "সহায়তা ও মতামত" "মেনু" - "GMT" "ডেমো মোডে ফ্যাক্টরি রিসেট করতে পাসওয়ার্ড দিন" "পরবর্তী" "পাসওয়ার্ড আবশ্যক" diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 58598a34b070b36b18dcd6e540c46be7a381f4a1..ca187ab573db9503366a9977876b57c2e5caefa0 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -28,6 +28,9 @@ "Niste povezani zbog slabog kvaliteta mreže" "Greška pri povezivanju na Wi-Fi" "Problem pri provjeri vjerodostojnosti." + "Nije se moguće povezati" + "Nije se moguće povezati na aplikaciju \'%1$s\'" + "Provjerite lozinku i pokušajte ponovo" "Nije u dometu" "Neće se automatski povezati" "Nema pristupa internetu" @@ -37,18 +40,12 @@ "Povezani preko %1$s" "Dostupan preko %1$s" "Povezano. Nema interneta" - - - - - - - - - - - - + "Veoma sporo" + "Sporo" + "UREDU" + "Srednja brzina" + "Brzo" + "Veoma brzo" "Isključen" "Prekidanje veze…" "Povezivanje…" @@ -58,22 +55,22 @@ "Povezano (bez medija)" "Povezano (bez pristupa porukama)" "Povezano (bez zvuka telefona ili medija)" + "Povezano, baterija %1$s" + "Povezano (bez telefona), baterija %1$s" + "Povezano (bez medija), baterija %1$s" + "Povezano (bez telefona ili medija), baterija %1$s" "Zvuk medija" - - + "Telefonski pozivi" "Prenošenje fajla" "Ulazni uređaj" "Pristup internetu" "Dijeljenje kontakta" "Koristi za dijeljenje kontakta" "Dijeljenje internet veze" - - + "Tekstualne poruke" "Pristup SIM-u" - - - - + "HD audio: %1$s" + "HD audio" "Povezano sa zvukom medija" "Povezano na zvuk telefona" "Povezan na server za prijenos podataka" @@ -166,7 +163,7 @@ "Opcije za programere nisu dostupne za ovog korisnika" "VPN postavke nisu dostupne za ovog korisnika" "Postavke za privezivanje nisu dostupne za ovog korisnika" - "Postavke za naziv pristupne tačke nisu dostupne za ovog korisnika" + "Postavke za ime pristupne tačke nisu dostupne za ovog korisnika" "Otklanjanje grešaka putem uređaja spojenog na USB" "Način rada za uklanjanje grešaka kada je povezan USB" "Ukini odobrenja otklanjanja grešaka putem uređaja spojenog na USB" @@ -189,6 +186,7 @@ "Agresivni prijenos s Wi-Fi mreže na mob." "Uvijek dopustiti Wi-Fi lutajuće skeniranje" "Mobilna mreža za prijenos podataka je uvijek aktivna" + "Hardversko ubrzavanje dijeljenja veze" "Onemogućite apsolutnu jačinu zvuka" "Omogući zvono unutar pojasa" "Bluetooth AVRCP verzija" @@ -209,17 +207,18 @@ "Kada je omogućeno, Wi-Fi veza će u slučaju slabog signala agresivnije predavati vezu za prijenos podataka na mobilnu vezu" "Dozvoli/Zabrani Wi-Fi lutajuće skeniranje na osnovu količine podatkovnog prometa prisutnog na sučelju" "Veličine bafera za zapisnik" - "Izaberite veličine za Logger prema međumemoriji evidencije" + "Odaberite veličine za Logger prema međumemoriji evidencije" "Želite li izbrisati trajnu pohranu zapisivača?" "Kada više ne pratimo trajnog zapisivača, trebamo u potpunosti izbrisati podatke zapisivača na vašem uređaju." "Trajno pohranjuj podatke zapisivača na uređaju" - "Izaberite međuspremnike zapisnika za trajno pohranjivanje na uređaju" + "Odaberite međuspremnike zapisnika za trajno pohranjivanje na uređaju" "Odaberite USB konfiguraciju" "Odaberite konfiguraciju USB-a" "Dozvoli lažne lokacije" "Dozvoli lažne lokacije" "Omogući pregled atributa prikaza" "Uvijek drži mobilne podatke aktivnim, čak i kada je Wi-Fi je aktivan (za brzo prebacivanje između mreža)." + "Koristi hardversko ubrzavanje dijeljenja veze, ako je dostupno" "Omogućiti otklanjanje grešaka putem uređaja spojenog na USB?" "Otklanjanje grešaka putem uređaja spojenog na USB je namijenjeno samo u svrhe razvoja aplikacija. Koristite ga za kopiranje podataka između računara i uređaja, instaliranje aplikacija na uređaj bez obavještenja te čitanje podataka iz zapisnika." "Opozvati pristup otklanjanju grešaka putem uređaja spojenog na USB za sve računare koje ste prethodno ovlastili?" @@ -336,17 +335,17 @@ "Ispravka boje" "Ova funkcija je eksperimentalna i može uticati na performanse." "Zamjenjuje %1$s" - "Preostalo je otprilike još %1$s" - "Preostalo je još oko %1$s, na osnovu vašeg korištenja" - "Još %1$s do potpune napunjenosti" - "Imate još %1$s" - "Preostalo je još %1$s, na osnovu vašeg korištenja" - "%1$s - imate još %2$s" - "%1$s - preostalo je još oko %2$s, na osnovu vašeg korištenja" - "%1$s - imate još %2$s" + "Preostalo je otprilike još ^1" + "Preostalo je još oko ^1, na osnovu vašeg korištenja" + "Još ^1 do potpune napunjenosti" + "Imate još ^1" + "Preostalo je još ^1, na osnovu vašeg korištenja" + "^1 - imate još ^2" + "^1 - preostalo je još oko ^2, na osnovu vašeg korištenja" + "^1 - imate još ^2" "%1$s%2$s" - "%1$s - %2$s do potpune napunjenosti" - "%1$s - %2$s" + "^1 - ^2 do potpune napunjenosti" + "^1 - ^2" "Nepoznato" "Punjenje" "punjenje" @@ -356,6 +355,10 @@ "Pod kontrolom administratora" "Omogućio administrator" "Onemogućio administrator" + "Onemogućeno" + "Dozvoljeno" + "Nije dozvoljeno" + "Instaliranje nepoznatih aplikacija" "Postavke početne stranice" "0%" diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml index d7eb2d42d49036055f652df9efcf16632d816279..3cda6ab8718e7284cfe2d88b50762b093afe5ad9 100644 --- a/packages/SettingsLib/res/values-ca/arrays.xml +++ b/packages/SettingsLib/res/values-ca/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Utilitza selecció del sistema (predeterminada)" + "SBC" + "AAC" + "Àudio Qualcomm® aptX™" + "Àudio Qualcomm® aptX™ HD" + "LDAC" + "Activa els còdecs opcionals" + "Desactiva els còdecs opcionals" + + + "Utilitza selecció del sistema (predeterminada)" + "SBC" + "AAC" + "Àudio Qualcomm® aptX™" + "Àudio Qualcomm® aptX™ HD" + "LDAC" + "Activa els còdecs opcionals" + "Desactiva els còdecs opcionals" + "Utilitza selecció del sistema (predeterminada)" "44,1 kHz" @@ -215,7 +231,7 @@ "Desactiva" - "Mostra les àrees superposades" + "Mostra les àrees sobredibuixades" "Mostra les àrees amb deuteranomalia" diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 00bb4a98a5ef9e46376231ec0c992b06eae0bd37..3ca46a1c6269fa40caca13736b4376bd46fd9141 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -40,12 +40,16 @@ "Connectada mitjançant %1$s" "Disponible mitjançant %1$s" "Connectada, sense Internet" + "El punt d\'accés està temporalment ple" + "Connectat mitjançant %1$s" + "Disponible mitjançant %1$s" "Molt lenta" "Lenta" "Correcta" "Mitjana" "Ràpida" "Molt ràpida" + "%1$s / %2$s" "Desconnectat" "S\'està desconnectant..." "S\'està connectant…" @@ -101,6 +105,8 @@ "Senyal Wi-Fi: dues barres." "Senyal Wi-Fi: tres barres." "Senyal Wi-Fi: complet." + "Xarxa oberta" + "Xarxa segura" "Android OS" "Aplicacions eliminades" "Aplicacions i usuaris eliminats" @@ -187,6 +193,7 @@ "Permet sempre cerca de Wi-Fi en ininerància" "Dades mòbils sempre actives" "Acceleració per maquinari per compartir la xarxa" + "Mostra els dispositius Bluetooth sense el nom" "Desactiva el volum absolut" "Activa el so al mateix canal" "Versió AVRCP de Bluetooth" @@ -202,6 +209,12 @@ "Còdec LDAC d\'àudio per Bluetooth: qualitat de reproducció" "Selecciona el còdec LDAC d\'àudio per Bluetooth:\nQualitat de reproducció" "S\'està reproduint en temps real: %1$s" + "DNS privat" + "Selecciona el mode de DNS privat" + "Desactivat" + "Oportunista" + "Nom d\'amfitrió del proveïdor de DNS privat" + "Introdueix el nom d\'amfitrió del proveïdor de DNS" "Mostra les opcions de certificació de pantalla sense fil" "Augmenta nivell de registre Wi‑Fi i mostra\'l per SSID RSSI al Selector de Wi‑Fi" "Quan s\'activa, la Wi-Fi és més agressiva en transferir la connexió de dades al mòbil quan el senyal de la Wi-Fi sigui dèbil" @@ -226,8 +239,9 @@ "Aquesta configuració només està prevista per a usos de desenvolupament. Pot fer que el dispositiu i que les aplicacions s\'interrompin o tinguin un comportament inadequat." "Verifica aplicacions per USB" "Comprova les aplicacions instal·lades mitjançant ADB/ADT per detectar possibles comportaments perillosos" - "Desactiva la funció de volum absolut de Bluetooth en cas que es produeixin problemes de volum amb dispositius remots, com ara un volum massa alt o una manca de control." - "Permet que els sons de trucada del telèfon es reprodueixin en auriculars amb Bluetooth" + "Es mostraran els dispositius Bluetooth sense el nom (només l\'adreça MAC)" + "Desactiva la funció de volum absolut del Bluetooth en cas que es produeixin problemes de volum amb dispositius remots, com ara un volum massa alt o una manca de control." + "Permet que els sons de trucada del telèfon es reprodueixin en auriculars Bluetooth" "Terminal local" "Activa l\'aplicació de terminal que ofereix accés al shell local" "Comprovació HDCP" @@ -259,7 +273,7 @@ "Actualitza visualitzacions de finestres creades amb GPU" "Mostra actualitzacions capes" "Il·lumina capes de maquinari en verd en actualitzar-se" - "Depura superposició de GPU" + "Depura sobredibuix de GPU" "Configura renderitzador GPU" "Desactiva superposicions HW" "Utilitza sempre GPU per combinar pantalles" @@ -345,12 +359,11 @@ "^1; temps restant: ^2" "%1$s: %2$s" "^1: ^2 per completar la càrrega" - "^1: ^2" "Desconegut" "S\'està carregant" "s\'està carregant" "No s\'està carregant" - "No s\'està carregant" + "El dispositiu està endollat però en aquests moments no es pot carregar" "Plena" "Controlat per l\'administrador" "Activada per l\'administrador" @@ -375,7 +388,6 @@ "Personalitzat (%d)" "Ajuda i suggeriments" "Menú" - "GMT" "Introdueix la contrasenya per restablir les dades de fàbrica en mode de demostració" "Següent" "Contrasenya obligatòria" diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml index e4129e3adca27c58916e8ce617cbcccab80bb272..9d665a3bed55947195b6c7aa74629d264ea233d3 100644 --- a/packages/SettingsLib/res/values-cs/arrays.xml +++ b/packages/SettingsLib/res/values-cs/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Použít systémový výběr (výchozí)" + "SBC" + "AAC" + "Zvuk Qualcomm® aptX™" + "Zvuk Qualcomm® aptX™ HD" + "LDAC" + "Povolit volitelné kodeky" + "Zakázat volitelné kodeky" + + + "Použít systémový výběr (výchozí)" + "SBC" + "AAC" + "Zvuk Qualcomm® aptX™" + "Zvuk Qualcomm® aptX™ HD" + "LDAC" + "Povolit volitelné kodeky" + "Zakázat volitelné kodeky" + "Použít systémový výběr (výchozí)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 8dd1c324d08a24edc175f31b33e20ffe8b307814..5e901009938dbfbef640d2e9151d292a7d8936d5 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -40,12 +40,16 @@ "Připojeno prostřednictvím %1$s" "Dostupné prostřednictvím %1$s" "Připojeno, není k dispozici internet" + "Přístupový bod je dočasně zaplněn" + "Připojeno prostřednictvím %1$s" + "Dostupné prostřednictvím %1$s" "Velmi pomalá" "Pomalá" "OK" "Střední" "Rychlá" "Velmi rychlá" + "%1$s / %2$s" "Odpojeno" "Odpojování..." "Připojování..." @@ -101,6 +105,8 @@ "Wi-Fi – dvě čárky." "Wi-Fi – tři čárky." "Wi-Fi – plný signál." + "Nezabezpečená síť" + "Zabezpečená síť" "OS Android" "Odebrané aplikace" "Odebrané aplikace a odebraní uživatelé" @@ -187,6 +193,7 @@ "Vždy povolit Wi-Fi roaming" "Mobilní data jsou vždy aktivní" "Hardwarová akcelerace tetheringu" + "Zobrazovat zařízení Bluetooth bez názvů" "Zakázat absolutní hlasitost" "Povolit vyzvánění v hovorovém pásmu" "Verze profilu Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Kodek Bluetooth Audio LDAC: Kvalita přehrávání" "Vyberte kodek Bluetooth Audio LDAC:\nKvalita přehrávání" "Streamování: %1$s" + "Soukromé DNS" + "Vyberte soukromý režim DNS" + "Vypnuto" + "Příležitostné" + "Název hostitele poskytovatele soukromého DNS" + "Zadejte název hostitele poskytovatele DNS" "Zobrazit možnosti certifikace bezdrátového displeje" "Zvýšit úroveň protokolování Wi‑Fi zobrazenou v SSID a RSSI při výběru sítě Wi‑Fi." "Pokud je tato možnost zapnuta, bude síť Wi-Fi při předávání datového připojení mobilní síti při slabém signálu Wi-Fi agresivnější." @@ -226,6 +239,7 @@ "Tato nastavení jsou určena pouze pro vývojáře. Mohou způsobit rozbití nebo nesprávné fungování zařízení a nainstalovaných aplikací." "Ověřit aplikace z USB" "Kontrolovat škodlivost aplikací nainstalovaných pomocí nástroje ADB/ADT" + "Zařízení Bluetooth se budou zobrazovat bez názvů (pouze adresy MAC)" "Zakáže funkci absolutní hlasitosti Bluetooth. Zabrání tak problémům s hlasitostí vzdálených zařízení (jako je příliš vysoká hlasitost nebo nemožnost ovládání)." "Umožňuje přehrávat vyzváněcí tóny z telefonu v náhlavní soupravě Bluetooth" "Místní terminál" @@ -345,12 +359,11 @@ "^1 – zbývá ^2" "%1$s%2$s" "^1 – plně se nabije za ^2" - "^1^2" "Neznámé" "Nabíjí se" "nabíjení" "Nenabíjí se" - "Nenabíjí se" + "Zapojeno, ale nelze nabíjet" "Nabitá" "Spravováno administrátorem" "Zapnuto administrátorem" @@ -375,7 +388,6 @@ "Vlastní (%d)" "Nápověda a zpětná vazba" "Nabídka" - "GMT" "Chcete-li v ukázkovém režimu obnovit zařízení do továrního nastavení, zadejte heslo" "Další" "Je třeba zadat heslo" diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml index 0e0a45648fd9463448fa1c65f689f3e6713a5eb1..0993d314009727350604758108b696d1bf996e75 100644 --- a/packages/SettingsLib/res/values-da/arrays.xml +++ b/packages/SettingsLib/res/values-da/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Brug systemvalg (standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-lyd" + "Qualcomm® aptX™ HD-lyd" + "LDAC" + "Aktivér Optional Codecs" + "Deaktiver Optional Codecs" + + + "Brug systemvalg (standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-lyd" + "Qualcomm® aptX™ HD-lyd" + "LDAC" + "Aktivér Optional Codecs" + "Deaktiver Optional Codecs" + "Brug systemvalg (standard)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index ff479717c80fcf713520c7a4972a876038446715..4a07edaa51af79a2e550c6ee0af9f58df7bed163 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -40,12 +40,16 @@ "Tilsluttet via %1$s" "Tilgængelig via %1$s" "Tilsluttet – intet internet" + "Adgangspunktet er midlertidigt fuldt" + "Tilsluttet via %1$s" + "Tilgængelig via %1$s" "Meget langsom" "Langsom" "OK" "Middel" "Hurtig" "Meget hurtig" + "%1$s%2$s" "Afbrudt" "Afbryder ..." "Opretter forbindelse..." @@ -101,6 +105,8 @@ "Wi-Fi har to bjælker." "Wi-Fi har tre bjælker." "Wi-Fi har fuldt signal." + "Åbent netværk" + "Sikkert netværk" "Android OS" "Fjernede apps" "Fjernede apps og brugere" @@ -187,6 +193,7 @@ "Tillad altid scanning af Wi-Fi-roaming" "Mobildata er altid aktiveret" "Hardwareacceleration ved netdeling" + "Vis Bluetooth-enheder uden navne" "Deaktiver absolut lydstyrke" "Afspil ringetone via Bluetooth" "AVRCP-version for Bluetooth" @@ -202,6 +209,12 @@ "LDAC-codec for Bluetooth-lyd: Afspilningskvalitet" "Vælg LDAC-codec for Bluetooth-lyd:\nAfspilningskvalitet" "Streamer: %1$s" + "Privat DNS" + "Vælg privat DNS-tilstand" + "Fra" + "Opportunistisk" + "Hostname for privat DNS-udbyder" + "Angiv hostname for DNS-udbyder" "Vis valgmuligheder for certificering af trådløs skærm" "Øg mængden af Wi‑Fi-logføring. Vis opdelt efter SSID RSSI i Wi‑Fi-vælgeren" "Når dette er aktiveret, gennemtvinges en overdragelse af dataforbindelsen fra Wi-Fi til mobilnetværk, når Wi-Fi-signalet er svagt" @@ -220,12 +233,13 @@ "Hold altid mobildata aktiveret, selv når Wi-Fi er aktiveret (for at skifte hurtigt mellem netværk)." "Brug hardwareacceleration ved netdeling, hvis det er muligt" "Vil du tillade USB-fejlretning?" - "USB-fejlretning er kun beregnet til udvikling og kan bruges til at kopiere data mellem din computer og enheden, installere apps på enheden uden meddelelser og læse logdata." + "USB-fejlretning er kun beregnet til udvikling og kan bruges til at kopiere data mellem din computer og enheden, installere apps på enheden uden underretning og læse logdata." "Vil du ophæve adgangen til USB-fejlfinding for alle computere, du tidligere har godkendt?" "Vil du tillade udviklingsindstillinger?" "Disse indstillinger er kun beregnet til brug i forbindelse med udvikling. De kan forårsage, at din enhed og dens applikationer går ned eller ikke fungerer korrekt." "Verificer apps via USB" "Tjek apps, der er installeret via ADB/ADT, for skadelig adfærd." + "Bluetooth-enheder uden navne (kun MAC-adresser) vises" "Deaktiverer funktionen til absolut lydstyrke via Bluetooth i tilfælde af problemer med lydstyrken på eksterne enheder, f.eks. uacceptabel høj lyd eller manglende kontrol." "Tillad, at ringetoner på telefonen kan afspilles i Bluetooth-headset" "Lokal terminal" @@ -345,12 +359,11 @@ "^1^2 tilbage" "%1$s%2$s" "^1^2 til det er fuldt opladet" - "^1^2" "Ukendt" "Oplader" "oplader" "Oplader ikke" - "Oplader ikke" + "Enheden er tilsluttet en strømkilde. Det er ikke muligt at oplade på nuværende tidspunkt." "Fuld" "Kontrolleret af administratoren" "Aktiveret af administratoren" @@ -375,7 +388,6 @@ "Tilpasset (%d)" "Hjælp og feedback" "Menu" - "GMT" "Angiv adgangskode for at gendanne fabriksdata i demotilstand" "Næste" "Angiv en adgangskode" diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml index c70d3951434c48cb45d4f3b2b1de26e0edf816f1..b5e349179fb24cbbcf4a359c629df0c767c2a336 100644 --- a/packages/SettingsLib/res/values-de/arrays.xml +++ b/packages/SettingsLib/res/values-de/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Systemauswahl verwenden (Standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-Audio" + "Qualcomm® aptX™ HD-Audio" + "LDAC" + "Optionale Codecs aktivieren" + "Optionale Codecs deaktivieren" + + + "Systemauswahl verwenden (Standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-Audio" + "Qualcomm® aptX™ HD-Audio" + "LDAC" + "Optionale Codecs aktivieren" + "Optionale Codecs deaktivieren" + "Systemauswahl verwenden (Standard)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index fda1aa496fe2fc7d7b33f7765b7e25c49b153288..6a2ccdf02fbc5049b1a681768d483dd173d4dbb1 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -40,12 +40,16 @@ "Über %1$s verbunden" "Verfügbar über %1$s" "Verbunden, kein Internet" + "Zugangspunkt vorübergehend voll belegt" + "Über %1$s verbunden" + "Verfügbar über %1$s" "Sehr langsam" "Langsam" "OK" "Mittel" "Schnell" "Sehr schnell" + "%1$s%2$s" "Nicht verbunden" "Verbindung wird getrennt..." "Verbindung wird hergestellt..." @@ -101,6 +105,8 @@ "WLAN: zwei Balken" "WLAN: drei Balken" "WLAN: volle Signalstärke" + "Offenes Netzwerk" + "Sicheres Netzwerk" "Android OS" "Entfernte Apps" "Entfernte Apps und Nutzer" @@ -187,6 +193,7 @@ "WLAN-Roamingsuchen immer zulassen" "Mobile Datennutzung immer aktiviert" "Hardwarebeschleunigung für Tethering" + "Bluetooth-Geräte ohne Namen anzeigen" "Maximallautstärke deaktivieren" "In-Band-Klingeln aktivieren" "Bluetooth AVRCP-Version" @@ -202,6 +209,12 @@ "Bluetooth-Audio-LDAC-Codec: Wiedergabequalität" "Bluetooth-Audio-LDAC-Codec auswählen:\nWiedergabequalität" "Streaming: %1$s" + "Privates DNS" + "Privaten DNS-Modus auswählen" + "Aus" + "Opportunistisch" + "Hostname des privaten DNS-Anbieters" + "Hostname des DNS-Anbieters eingeben" "Optionen zur Zertifizierung für kabellose Übertragung anzeigen" "Level für WLAN-Protokollierung erhöhen, in WiFi Picker pro SSID-RSSI anzeigen" "Wenn diese Option aktiviert ist, ist das WLAN bei schwachem Signal bei der Übergabe der Datenverbindung an den Mobilfunk aggressiver" @@ -226,6 +239,7 @@ "Diese Einstellungen sind ausschließlich für Entwicklungszwecke gedacht. Sie können dein Gerät und die darauf installierten Apps beschädigen oder zu unerwünschtem Verhalten führen." "Apps über USB bestätigen" "Überprüft installierte Apps über ADB/ADT auf schädliches Verhalten" + "Bluetooth-Geräte ohne Namen (nur MAC-Adressen) werden angezeigt" "Deaktiviert die Bluetooth-Maximallautstärkefunktion, falls auf Remote-Geräten Probleme mit der Lautstärke auftreten, wie beispielsweise übermäßig laute Wiedergabe oder fehlende Kontrolle bei der Steuerung." "Wiedergabe von Smartphone-Klingeltönen auf Bluetooth-Headsets zulassen" "Lokales Terminal" @@ -345,12 +359,11 @@ "^1 – noch ^2" "%1$s%2$s" "^1^2 bis vollständig geladen" - "^1^2" "Unbekannt" "Wird aufgeladen" "wird aufgeladen..." "Wird nicht geladen" - "Wird nicht geladen" + "Angeschlossen, kann derzeit nicht geladen werden" "Voll" "Durch den Administrator verwaltet" "Vom Administrator aktiviert" @@ -375,7 +388,6 @@ "Benutzerdefiniert (%d)" "Hilfe & Feedback" "Menü" - "GMT" "Passwort eingeben, um Gerät im Demomodus auf Werkseinstellungen zurückzusetzen" "Weiter" "Passwort erforderlich" diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml index 47838432b58c46bb70304ed75290afc1783f9287..1b740e624165cc8f2d714bcce53480492deab8c6 100644 --- a/packages/SettingsLib/res/values-el/arrays.xml +++ b/packages/SettingsLib/res/values-el/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Χρήση επιλογής συστήματος (Προεπιλογή)" + "SBC" + "AAC" + "Ήχος Qualcomm® aptX™" + "Ήχος Qualcomm® aptX™ HD" + "LDAC" + "Ενεργοποίηση προαιρετικών κωδικοποιητών" + "Απενεργοποίηση προαιρετικών κωδικοποιητών" + + + "Χρήση επιλογής συστήματος (Προεπιλογή)" + "SBC" + "AAC" + "Ήχος Qualcomm® aptX™" + "Ήχος Qualcomm® aptX™ HD" + "LDAC" + "Ενεργοποίηση προαιρετικών κωδικοποιητών" + "Απενεργοποίηση προαιρετικών κωδικοποιητών" + "Χρήση επιλογής συστήματος (Προεπιλογή)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 244af422292e828d173a68c0c57f1ce566c7f4d8..46de74b5fec38fb6ec2c2d8dc429dbba1eae9d40 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -40,12 +40,16 @@ "Συνδέθηκε μέσω %1$s" "Διαθέσιμο μέσω %1$s" "Συνδέθηκε, χωρίς διαδίκτυο" + "Το σημείο πρόσβασης είναι προσωρινά πλήρες" + "Συνδέθηκε μέσω %1$s" + "Διαθέσιμο μέσω %1$s" "Πολύ αργή" "Αργή" "ΟΚ" "Μέτρια" "Γρήγορη" "Πολύ γρήγορη" + "%1$s / %2$s" "Αποσυνδέθηκε" "Αποσύνδεση..." "Σύνδεση..." @@ -101,6 +105,8 @@ "Δύο γραμμές Wi-Fi." "Τρεις γραμμές Wi-Fi." "Άριστο σήμα Wi-Fi." + "Ανοικτό δίκτυο" + "Ασφαλές δίκτυο" "Λειτουργικό σύστημα Android" "Εφαρμογές που καταργήθηκαν" "Εφαρμογές και χρήστες που έχουν καταργηθεί" @@ -187,6 +193,7 @@ "Να επιτρέπεται πάντα η σάρωση Wi-Fi κατά την περιαγωγή" "Πάντα ενεργά δεδομένα κινητής τηλεφωνίας" "Σύνδεση επιτάχυνσης υλικού" + "Εμφάνιση συσκευών Bluetooth χωρίς ονόματα" "Απενεργοποίηση απόλυτης έντασης" "Ενεργοποίηση κλήσης εντός εύρους" "Έκδοση AVRCP Bluetooth" @@ -202,6 +209,12 @@ "Κωδικοποιητής LDAC ήχου Bluetooth: Ποιότητα αναπαραγωγής" "Επιλογή κωδικοποιητή LDAC ήχου Bluetooth:\nΠοιότητα αναπαραγωγής" "Ροή: %1$s" + "Ιδιωτικό DNS" + "Επιλέξτε τη λειτουργία ιδιωτικού DNS" + "Ανενεργή" + "Καιροσκοπική" + "Όνομα κεντρικού υπολογιστή παρόχου DNS" + "Εισαγάγετε το όνομα κεντρικού υπολογιστή του παρόχου DNS" "Εμφάνιση επιλογών για πιστοποίηση ασύρματης οθόνης" "Αύξηση επιπέδου καταγ. Wi-Fi, εμφάνιση ανά SSID RSSI στο εργαλείο επιλογής Wi-Fi" "Όταν είναι ενεργό, το Wi-Fi θα μεταβιβάζει πιο επιθετικά τη σύνδ.δεδομένων σε δίκτυο κινητής τηλ., όταν το σήμα Wi-Fi είναι χαμηλό" @@ -226,6 +239,7 @@ "Αυτές οι ρυθμίσεις προορίζονται για χρήση κατά την ανάπτυξη. Μπορούν να προκαλέσουν προβλήματα στη λειτουργία της συσκευής και των εφαρμογών σας." "Επαλήθευση εφαρμογών μέσω USB" "Έλεγχος εφαρμογών που έχουν εγκατασταθεί μέσω ADB/ADT για επιβλαβή συμπεριφορά." + "Θα εμφανιστούν οι συσκευές Bluetooth χωρίς ονόματα (μόνο διευθύνσεις MAC)" "Απενεργοποιεί τη δυνατότητα απόλυτης έντασης του Bluetooth σε περίπτωση προβλημάτων έντασης με απομακρυσμένες συσκευές, όπως όταν υπάρχει μη αποδεκτά υψηλή ένταση ή απουσία ελέγχου." "Να επιτρέπεται η αναπαραγωγή των ήχων κλήσης του τηλεφώνου στα ακουστικά Bluetooth" "Τοπική τερματική εφαρμογή" @@ -345,12 +359,11 @@ "^1 - απομένει/ουν ^2" "%1$s - %2$s" "^1 - ^2 για πλήρη φόρτιση" - "^1 - ^2" "Άγνωστο" "Φόρτιση" "φόρτιση" "Δεν φορτίζει" - "Δεν φορτίζει" + "Συνδέθηκε, δεν είναι δυνατή η φόρτιση αυτήν τη στιγμή" "Πλήρης" "Ελέγχονται από το διαχειριστή" "Ενεργοποιήθηκε από τον διαχειριστή" @@ -375,7 +388,6 @@ "Προσαρμοσμένη (%d)" "Βοήθεια και σχόλια" "Μενού" - "GMT" "Εισαγάγετε κωδικό πρόσβασης για επαναφορά εργοστασιακών ρυθμίσεων στη λειτουργία επίδειξης" "Επόμενο" "Απαιτείται κωδικός πρόσβασης" diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml index c5fe2d9df1285de317cf6e2caac6793a84d0e423..f4fceaea1b5626f1f9792df3a0f7d90ac7b746bc 100644 --- a/packages/SettingsLib/res/values-en-rAU/arrays.xml +++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + "Use System Selection (Default)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 09ad05cc7a71c0a72f1236e228dab67c62d6ca8e..0c37713ff821baa8b7082c4c346b60ead123e0c6 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -40,12 +40,16 @@ "Connected via %1$s" "Available via %1$s" "Connected, no Internet" + "Access point temporarily full" + "Connected via %1$s" + "Available via %1$s" "Very slow" "Slow" "OK" "Medium" "Fast" "Very fast" + "%1$s/%2$s" "Disconnected" "Disconnecting…" "Connecting…" @@ -101,6 +105,8 @@ "Wi-Fi two bars." "Wi-Fi three bars." "Wi-Fi signal full." + "Open network" + "Secure network" "Android OS" "Removed apps" "Removed apps and users" @@ -187,6 +193,7 @@ "Always allow Wi‑Fi Roam Scans" "Mobile data always active" "Tethering hardware acceleration" + "Show Bluetooth devices without names" "Disable absolute volume" "Enable in-band ringing" "Bluetooth AVRCP Version" @@ -202,6 +209,12 @@ "Bluetooth Audio LDAC Codec: Playback Quality" "Select Bluetooth Audio LDAC Codec:\nPlayback Quality" "Streaming: %1$s" + "Private DNS" + "Select private DNS mode" + "Off" + "Opportunistic" + "Private DNS provider hostname" + "Enter hostname of DNS provider" "Show options for wireless display certification" "Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker" "When enabled, Wi‑Fi will be more aggressive in handing over the data connection to mobile, when Wi‑Fi signal is low" @@ -226,6 +239,7 @@ "These settings are intended for development use only. They can cause your device and the applications on it to break or misbehave." "Verify apps over USB" "Check apps installed via ADB/ADT for harmful behaviour." + "Bluetooth devices without names (MAC addresses only) will be displayed" "Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control." "Allow ringtones on the phone to be played on Bluetooth headsets" "Local terminal" @@ -345,12 +359,11 @@ "^1 - ^2 left" "%1$s - %2$s" "^1^2 until fully charged" - "^1 - ^2" "Unknown" "Charging" "charging" "Not charging" - "Not charging" + "Plugged in, can\'t charge right now" "Full" "Controlled by admin" "Enabled by admin" @@ -375,7 +388,6 @@ "Custom (%d)" "Help & feedback" "Menu" - "GMT" "Enter password to perform factory reset in demo mode" "Next" "Password required" diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml index c5fe2d9df1285de317cf6e2caac6793a84d0e423..f4fceaea1b5626f1f9792df3a0f7d90ac7b746bc 100644 --- a/packages/SettingsLib/res/values-en-rGB/arrays.xml +++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + "Use System Selection (Default)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 09ad05cc7a71c0a72f1236e228dab67c62d6ca8e..0c37713ff821baa8b7082c4c346b60ead123e0c6 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -40,12 +40,16 @@ "Connected via %1$s" "Available via %1$s" "Connected, no Internet" + "Access point temporarily full" + "Connected via %1$s" + "Available via %1$s" "Very slow" "Slow" "OK" "Medium" "Fast" "Very fast" + "%1$s/%2$s" "Disconnected" "Disconnecting…" "Connecting…" @@ -101,6 +105,8 @@ "Wi-Fi two bars." "Wi-Fi three bars." "Wi-Fi signal full." + "Open network" + "Secure network" "Android OS" "Removed apps" "Removed apps and users" @@ -187,6 +193,7 @@ "Always allow Wi‑Fi Roam Scans" "Mobile data always active" "Tethering hardware acceleration" + "Show Bluetooth devices without names" "Disable absolute volume" "Enable in-band ringing" "Bluetooth AVRCP Version" @@ -202,6 +209,12 @@ "Bluetooth Audio LDAC Codec: Playback Quality" "Select Bluetooth Audio LDAC Codec:\nPlayback Quality" "Streaming: %1$s" + "Private DNS" + "Select private DNS mode" + "Off" + "Opportunistic" + "Private DNS provider hostname" + "Enter hostname of DNS provider" "Show options for wireless display certification" "Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker" "When enabled, Wi‑Fi will be more aggressive in handing over the data connection to mobile, when Wi‑Fi signal is low" @@ -226,6 +239,7 @@ "These settings are intended for development use only. They can cause your device and the applications on it to break or misbehave." "Verify apps over USB" "Check apps installed via ADB/ADT for harmful behaviour." + "Bluetooth devices without names (MAC addresses only) will be displayed" "Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control." "Allow ringtones on the phone to be played on Bluetooth headsets" "Local terminal" @@ -345,12 +359,11 @@ "^1 - ^2 left" "%1$s - %2$s" "^1^2 until fully charged" - "^1 - ^2" "Unknown" "Charging" "charging" "Not charging" - "Not charging" + "Plugged in, can\'t charge right now" "Full" "Controlled by admin" "Enabled by admin" @@ -375,7 +388,6 @@ "Custom (%d)" "Help & feedback" "Menu" - "GMT" "Enter password to perform factory reset in demo mode" "Next" "Password required" diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml index c5fe2d9df1285de317cf6e2caac6793a84d0e423..f4fceaea1b5626f1f9792df3a0f7d90ac7b746bc 100644 --- a/packages/SettingsLib/res/values-en-rIN/arrays.xml +++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + + + "Use System Selection (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Enable Optional Codecs" + "Disable Optional Codecs" + "Use System Selection (Default)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 09ad05cc7a71c0a72f1236e228dab67c62d6ca8e..0c37713ff821baa8b7082c4c346b60ead123e0c6 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -40,12 +40,16 @@ "Connected via %1$s" "Available via %1$s" "Connected, no Internet" + "Access point temporarily full" + "Connected via %1$s" + "Available via %1$s" "Very slow" "Slow" "OK" "Medium" "Fast" "Very fast" + "%1$s/%2$s" "Disconnected" "Disconnecting…" "Connecting…" @@ -101,6 +105,8 @@ "Wi-Fi two bars." "Wi-Fi three bars." "Wi-Fi signal full." + "Open network" + "Secure network" "Android OS" "Removed apps" "Removed apps and users" @@ -187,6 +193,7 @@ "Always allow Wi‑Fi Roam Scans" "Mobile data always active" "Tethering hardware acceleration" + "Show Bluetooth devices without names" "Disable absolute volume" "Enable in-band ringing" "Bluetooth AVRCP Version" @@ -202,6 +209,12 @@ "Bluetooth Audio LDAC Codec: Playback Quality" "Select Bluetooth Audio LDAC Codec:\nPlayback Quality" "Streaming: %1$s" + "Private DNS" + "Select private DNS mode" + "Off" + "Opportunistic" + "Private DNS provider hostname" + "Enter hostname of DNS provider" "Show options for wireless display certification" "Increase Wi‑Fi logging level, show per SSID RSSI in Wi‑Fi Picker" "When enabled, Wi‑Fi will be more aggressive in handing over the data connection to mobile, when Wi‑Fi signal is low" @@ -226,6 +239,7 @@ "These settings are intended for development use only. They can cause your device and the applications on it to break or misbehave." "Verify apps over USB" "Check apps installed via ADB/ADT for harmful behaviour." + "Bluetooth devices without names (MAC addresses only) will be displayed" "Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control." "Allow ringtones on the phone to be played on Bluetooth headsets" "Local terminal" @@ -345,12 +359,11 @@ "^1 - ^2 left" "%1$s - %2$s" "^1^2 until fully charged" - "^1 - ^2" "Unknown" "Charging" "charging" "Not charging" - "Not charging" + "Plugged in, can\'t charge right now" "Full" "Controlled by admin" "Enabled by admin" @@ -375,7 +388,6 @@ "Custom (%d)" "Help & feedback" "Menu" - "GMT" "Enter password to perform factory reset in demo mode" "Next" "Password required" diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml index 01b9f70bde0b54df6502dd09b23014386e437431..16f725ad9a5bd37b8cda2d6d9db61c1fc9278923 100644 --- a/packages/SettingsLib/res/values-es-rUS/arrays.xml +++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usar selección del sistema (predeterminado)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Habilitar códecs opcionales" + "Inhabilitar códecs opcionales" + + + "Usar selección del sistema (predeterminado)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Habilitar códecs opcionales" + "Inhabilitar códecs opcionales" + "Usar selección del sistema (predeterminado)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index f2acfe5bdf6ac3faf392a5e4a95a33a4082d6df1..291df190d9ae0b38f79e23b403a2b721a4986369 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -40,12 +40,16 @@ "Conexión a través de %1$s" "Disponible a través de %1$s" "Conectado a Wi-Fi, sin conexión a Internet" + "El punto de acceso está completo temporalmente" + "Conexión a través de %1$s" + "Disponible a través de %1$s" "Muy lenta" "Lenta" "Aceptar" "Media" "Rápida" "Muy rápida" + "%1$s/%2$s" "Desconectado" "Desconectando…" "Conectando…" @@ -101,6 +105,8 @@ "Dos barras de Wi-Fi" "Tres barras de Wi-Fi" "Señal de Wi-Fi excelente" + "Red abierta" + "Red segura" "SO Android" "Aplicaciones eliminadas" "Aplicaciones y usuarios eliminados" @@ -157,7 +163,7 @@ "Elegir perfil" "Personal" "Trabajo" - "Opciones del programador" + "Opciones para programadores" "Activar opciones para programador" "Establecer opciones para desarrollar aplicaciones" "Las opciones de programador no están disponibles para este usuario." @@ -187,6 +193,7 @@ "Permitir siempre búsquedas de Wi-Fi" "Datos móviles siempre activados" "Aceleración de hardware de conexión mediante dispositivo portátil" + "Mostrar dispositivos Bluetooth sin nombre" "Inhabilitar volumen absoluto" "Habilitar sonido dentro de banda" "Versión de AVRCP del Bluetooth" @@ -202,6 +209,12 @@ "Códec del audio Bluetooth LDAC: calidad de reproducción" "Seleccionar códec del audio Bluetooth LDAC:\nCalidad de reproducción" "Transmitiendo: %1$s" + "DNS privado" + "Selecciona el modo de DNS privado" + "Desactivado" + "Oportunista" + "Nombre de host del proveedor de DNS privado" + "Ingresa el nombre de host del proveedor de DNS" "Mostrar opciones de certificación de pantalla inalámbrica" "Aumentar nivel de registro Wi-Fi; mostrar por SSID RSSI en el selector de Wi-Fi" "Si habilitas esta opción, se priorizará el cambio de Wi-Fi a datos móviles cuando la señal de Wi-Fi sea débil" @@ -226,6 +239,7 @@ "Estos parámetros de configuración están destinados únicamente a los programadores. Pueden hacer que el dispositivo o sus aplicaciones no funcionen correctamente." "Verificar aplicaciones por USB" "Comprobar que las aplicaciones instaladas mediante ADB/ADT no ocasionen daños" + "Se mostrarán los dispositivos Bluetooth sin nombre (solo direcciones MAC)" "Inhabilita la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen demasiado alto o falta de control)." "Permite que los tonos del teléfono suenen en auriculares Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 - Tiempo restante: ^2" "%1$s: %2$s" "^1 (^2 para completar la carga)" - "^1 - ^2" "Desconocido" "Cargando" "cargando" "No se está cargando." - "No se realiza la carga" + "Conectado. No se puede cargar en este momento" "Cargado" "Controlada por el administrador" "El administrador habilitó esta opción" @@ -375,7 +388,6 @@ "Personalizado (%d)" "Ayuda y comentarios" "Menú" - "GMT" "Ingresa contraseña y restablece en demo" "Siguiente" "Contraseña obligatoria" diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml index 7cd97fa318bc145765cbbfff9cd5ac0fc40b72aa..a752db9b3703be13323aae8f35a88663c11a2449 100644 --- a/packages/SettingsLib/res/values-es/arrays.xml +++ b/packages/SettingsLib/res/values-es/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usar preferencia del sistema (predeter.)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Habilitar códecs opcionales" + "Inhabilitar códecs opcionales" + + + "Usar preferencia del sistema (predeter.)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Habilitar códecs opcionales" + "Inhabilitar códecs opcionales" + "Usar preferencia del sistema (predeter.)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 4a6f12d75f738204d3372f92a3cd1bcd75aa3ff0..1d95375422cd50295d0c7a96fe0597a9247a67d7 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -40,12 +40,16 @@ "Conectado a través de %1$s" "Disponible a través de %1$s" "Conexión sin Internet" + "Punto de acceso temporalmente lleno" + "Conectado a través de %1$s" + "Disponible a través de %1$s" "Muy lenta" "Lenta" - "Aceptar" + "Aceptable" "Media" "Rápida" "Muy rápida" + "%1$s/%2$s" "Desconectado" "Desconectando…" "Estableciendo conexión…" @@ -101,6 +105,8 @@ "Dos barras de Wi-Fi." "Tres barras de Wi-Fi." "Señal de Wi-Fi al máximo." + "Red abierta" + "Red segura" "SO Android" "Aplicaciones eliminadas" "Usuarios y aplicaciones eliminados" @@ -187,6 +193,7 @@ "Permitir siempre búsquedas de Wi-Fi" "Datos móviles siempre activos" "Aceleración por hardware para conexión compartida" + "Mostrar dispositivos Bluetooth sin nombre" "Inhabilitar volumen absoluto" "Habilitar tono de llamada por Bluetooth" "Versión AVRCP del Bluetooth" @@ -202,6 +209,12 @@ "Selecciona el códec LDAC por Bluetooth: calidad de reproducción" "Selecciona el códec LDAC de audio por Bluetooth:\nCalidad de reproducción" "Streaming: %1$s" + "DNS privado" + "Selecciona el modo de DNS privado" + "No" + "Oportunista" + "Nombre de host de proveedor de DNS privado" + "Introduce el nombre de host del proveedor de DNS" "Mostrar opciones para la certificación de la pantalla inalámbrica" "Aumentar el nivel de registro de Wi-Fi, mostrar por SSID RSSI en el selector Wi-Fi" "Si se activa esta opción, la conexión Wi-Fi será más agresiva al pasar la conexión a datos móviles (si la señal Wi-Fi es débil)" @@ -226,6 +239,7 @@ "Estos ajustes están destinados únicamente a los desarrolladores. Pueden provocar que el dispositivo o las aplicaciones no funcionen correctamente." "Verificar aplicaciones por USB" "Comprueba las aplicaciones instaladas mediante ADB/ADT para detectar comportamientos dañinos" + "Se mostrarán dispositivos Bluetooth sin nombre (solo direcciones MAC)" "Inhabilita la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen demasiado alto o falta de control)." "Permite que los tonos de llamada del teléfono se reproduzcan en auriculares Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 - Tiempo restante: ^2" "%1$s - %2$s" "^1 - ^2 para completar la carga" - "^1 - ^2" "Desconocido" "Cargando" "cargando" "No se está cargando" - "No se está cargando" + "Se ha conectado, pero no se puede cargar en este momento" "Completa" "Controlada por el administrador" "Habilitada por el administrador" @@ -375,11 +388,10 @@ "Personalizado (%d)" "Ayuda y sugerencias" "Menú" - "GMT" - "Escribe una contraseña para restablecer datos de fábrica en modo demostración" + "Escribe una contraseña para restablecer estado de fábrica en modo demostración" "Siguiente" "Contraseña obligatoria" - "Métodos de introducción activos" + "Métodos de introducción de texto activos" "Usar idiomas del sistema" "Error al abrir los ajustes de %1$s" "Este método de entrada puede registrar todo lo que escribas, incluidos datos personales, como las contraseñas y los números de las tarjetas de crédito. Procede de la aplicación %1$s. ¿Quieres usar este método de entrada?" diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml index 91424b2ab89b6a3d00e54a87010faac1578292c3..db796f15fb9956df65d6195cb627829661637c0c 100644 --- a/packages/SettingsLib/res/values-et/arrays.xml +++ b/packages/SettingsLib/res/values-et/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Süsteemi valiku kasutamine (vaikeseade)" + "SBC" + "AAC" + "Heli: Qualcomm® aptX™" + "Heli: Qualcomm® aptX™ HD" + "LDAC" + "Lubatakse valikulised kodekid" + "Keelatakse valikulised kodekid" + + + "Süsteemi valiku kasutamine (vaikeseade)" + "SBC" + "AAC" + "Heli: Qualcomm® aptX™" + "Heli: Qualcomm® aptX™ HD" + "LDAC" + "Lubatakse valikulised kodekid" + "Keelatakse valikulised kodekid" + "Süsteemi valiku kasutamine (vaikeseade)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 4a23f67a9b379f8e257fd86898c996fb1842e8f0..4e046a1bd0774d2cfb1c1029fdb5e11b63731502 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -40,12 +40,16 @@ "Ühendatud üksuse %1$s kaudu" "Saadaval üksuse %1$s kaudu" "Ühendatud, Interneti-ühendus puudub" + "Pääsupunkt on ajutiselt täis" + "Ühendatud operaatori %1$s kaudu" + "Saadaval operaatori %1$s kaudu" "Väga aeglane" "Aeglane" "Hea" "Keskmine" "Kiire" "Väga kiire" + "%1$s / %2$s" "Ühendus katkestatud" "Ühenduse katkestamine ..." "Ühendamine ..." @@ -101,6 +105,8 @@ "WiFi: kaks pulka." "WiFi: kolm pulka." "WiFi-signaal on tugev." + "Avatud võrk" + "Turvaline võrk" "Android OS" "Eemaldatud rakendused" "Eemaldatud rakendused ja kasutajad" @@ -187,6 +193,7 @@ "Luba alati WiFi-rändluse skannimine" "Mobiilne andmeside on alati aktiivne" "Jagamise riistvaraline kiirendus" + "Kuva Bluetoothi seadmed ilma nimedeta" "Keela absoluutne helitugevus" "Luba ribasisene helisemine" "Bluetoothi AVRCP versioon" @@ -202,6 +209,12 @@ "Bluetoothi LDAC-helikodek: taasesituskvaliteet" "Valige Bluetoothi LDAC-helikodek:\ntaasesituskvaliteet" "Voogesitus: %1$s" + "Privaatne DNS" + "Valige privaatse DNS-i režiim" + "Väljas" + "Oportunistlik" + "Privaatse DNS-i teenusepakkuja hostinimi" + "Sisestage DNS-i teenusepakkuja hostinimi" "Juhtmeta ekraaniühenduse sertifitseerimisvalikute kuvamine" "Suurenda WiFi logimistaset, kuva WiFi valijas SSID RSSI järgi" "Kui seade on lubatud, asendatakse nõrga signaaliga WiFi-ühendus agressiivsemalt mobiilse andmesideühendusega" @@ -226,6 +239,7 @@ "Need seaded on mõeldud ainult arendajatele. Need võivad põhjustada seadme ja seadmes olevate rakenduste rikkeid või valesti toimimist." "Kinnita rakendus USB kaudu" "Kontrolli, kas ADB/ADT-ga installitud rakendused on ohtlikud." + "Kuvatakse ilma nimedeta (ainult MAC-aadressidega) Bluetoothi seadmed" "Keelatakse Bluetoothi absoluutse helitugevuse funktsioon, kui kaugseadmetega on helitugevuse probleeme (nt liiga vali heli või juhitavuse puudumine)." "Lubab telefonis olevaid helinaid esitada Bluetoothi peakomplektides" "Kohalik terminal" @@ -345,12 +359,11 @@ "^1^2 on jäänud" "%1$s%2$s" "^1^2 täislaadimiseni" - "^1^2" "Tundmatu" "Laadimine" "laadimine" "Ei lae" - "Ei lae" + "Vooluvõrgus, praegu ei saa laadida" "Täis" "Juhib administraator" "Administraatori lubatud" @@ -375,7 +388,6 @@ "Kohandatud (%d)" "Abi ja tagasiside" "Menüü" - "GMT" "Sisestage parool, et demorežiimis tehaseseadetele lähtestada" "Järgmine" "Parool on kohustuslik" diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml index 4b8ba152e80d9ff14548df91f11284e07361c5fe..d4a5e6e56864e1fd91c694c518a33569088695a5 100644 --- a/packages/SettingsLib/res/values-eu/arrays.xml +++ b/packages/SettingsLib/res/values-eu/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Erabili sistema-hautapena (lehenetsia)" + "SBC" + "AAC" + "Qualcomm® aptX™ audioa" + "Qualcomm® aptX™ HD audioa" + "LDAC" + "Gaitu aukerako kodekak" + "Desgaitu aukerako kodekak" + + + "Erabili sistema-hautapena (lehenetsia)" + "SBC" + "AAC" + "Qualcomm® aptX™ audioa" + "Qualcomm® aptX™ HD audioa" + "LDAC" + "Gaitu aukerako kodekak" + "Desgaitu aukerako kodekak" + "Erabili sistema-hautapena (lehenetsia)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 9fd8ad84f7f834b0a72e0ccc51d68b18a6c95fe8..222aa917d9a809782d8aa045ff89f8626c772994 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -40,12 +40,16 @@ "%1$s bidez konektatuta" "%1$s bidez erabilgarri" "Konektatuta, ez dago Interneteko konexiorik" + "Sarbide-puntua beteta dago aldi baterako" + "%1$s bidez konektatuta" + "%1$s bidez erabilgarri" "Oso motela" "Motela" "Ados" "Tartekoa" "Bizkorra" "Oso bizkorra" + "%1$s / %2$s" "Deskonektatuta" "Deskonektatzen…" "Konektatzen…" @@ -101,6 +105,8 @@ "Wi-Fi sarearen bi barra." "Wi-Fi sarearen hiru barra." "Wi-Fi sarearen seinalea osoa." + "Sare irekia" + "Sare segurua" "Android sistema eragilea" "Kendutako aplikazioak" "Kendutako aplikazioak eta erabiltzaileak" @@ -187,6 +193,7 @@ "Onartu beti ibiltaritzan Wi-Fi sareak bilatzea" "Datu mugikorrak beti aktibo" "Konexioa partekatzeko hardwarearen azelerazioa" + "Erakutsi Bluetooth gailuak izenik gabe" "Desgaitu bolumen absolutua" "Gaitu tonuak audio-kanal berean erreproduzitzeko aukera" "Bluetooth AVRCP bertsioa" @@ -202,6 +209,12 @@ "Bluetooth audioaren LDAC kodeka: erreprodukzioaren kalitatea" "Hautatu Bluetooth audioaren LDAC kodeka:\nerreprodukzioaren kalitatea" "Igortzean: %1$s" + "DNS pribatua" + "Hautatu DNS pribatuaren modua" + "Desaktibatuta" + "Aldakorra" + "DNS hornitzaile pribatuaren ostalari-izena" + "Idatzi DNS hornitzailearen ostalari-izena" "Erakutsi hari gabeko bistaratze-egiaztapenaren aukerak" "Erakutsi datu gehiago Wi-Fi sareetan saioa hasterakoan. Erakutsi sarearen identifikatzailea eta seinalearen indarra Wi‑Fi sareen hautagailuan." "Aukera hori gaituz gero, gailua nahitaez aldatuko da datu mugikorren konexiora Wi-Fi seinalea ahultzen dela nabaritutakoan" @@ -226,6 +239,7 @@ "Ezarpen hauek garapen-xedeetarako pentsatu dira soilik. Baliteke ezarpenen eraginez gailua matxuratzea edo funtzionamendu okerra izatea." "Egiaztatu USBko aplikazioak." "Egiaztatu ADB/ADT bidez instalatutako aplikazioak portaera kaltegarriak antzemateko." + "Bluetooth gailuak izenik gabe (MAC helbideak soilik) erakutsiko dira" "Desgaitu egiten du Bluetooth bidezko bolumen absolutuaren eginbidea urruneko gailuetan arazoak hautematen badira; esaterako, bolumena ozenegia bada edo ezin bada kontrolatu." "Onartu telefonoko tonuak Bluetooth entzungailuetan erreproduzitzeko aukera" "Tokiko terminala" @@ -345,12 +359,11 @@ "^1 - ^2 guztiz kargatu arte" "%1$s - %2$s" "^1 - ^2 guztiz kargatu arte" - "^1 - ^2" "Ezezaguna" "Kargatzen" "kargatzen" "Ez da kargatzen ari" - "Ez da kargatzen ari" + "Konektatuta dago. Ezin da kargatu une honetan." "Beteta" "Administratzaileak kontrolatzen du" "Administratzaileak gaitu du" @@ -375,7 +388,6 @@ "Pertsonalizatua (%d)" "Laguntza eta iritziak" "Menua" - "GMT" "Idatzi pasahitza jatorrizko ezarpenak demo moduan berrezartzeko" "Hurrengoa" "Pasahitza behar da" diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml index 62b3f19e2ceb51f5fbe926495ac43536321373a1..2436e79d6bca8c102bce5f2b604a66763bc902f2 100644 --- a/packages/SettingsLib/res/values-fa/arrays.xml +++ b/packages/SettingsLib/res/values-fa/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "استفاده از انتخاب سیستم (پیش‌فرض)" + "SBC" + "AAC" + "صوت Qualcomm® aptX™" + "صوت Qualcomm® aptX™ HD" + "LDAC" + "فعال کردن کدک‌های اختیاری" + "غیرفعال کردن کدک‌های اختیاری" + + + "استفاده از انتخاب سیستم (پیش‌فرض)" + "SBC" + "AAC" + "صوت Qualcomm® aptX™" + "صوت Qualcomm® aptX™ HD" + "LDAC" + "فعال کردن کدک‌های اختیاری" + "غیرفعال کردن کدک‌های اختیاری" + "استفاده از انتخاب سیستم (پیش‌فرض)" "۴۴٫۱ کیلوهرتز" diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 0430592a47dd373523ce304f5e09cd0e2ba60233..1bdea4ec4160e6fdf10237705934e1ac4d261fab 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -40,12 +40,16 @@ "‏متصل از طریق %1$s" "‏در دسترس از طریق %1$s" "متصل، بدون اینترنت" + "ظرفیت نقطه دسترسی موقتاً تکمیل شده است" + "‏متصل ازطریق %1$s" + "‏در دسترس ازطریق %1$s" "بسیار آهسته" "آهسته" "تأیید" "متوسط" "سریع" "خیلی سریع" + "%1$s / %2$s" "اتصال قطع شد" "در حال قطع اتصال..." "در حال اتصال…" @@ -101,6 +105,8 @@ "‏دو نوار برای Wi‑Fi." "‏سه نوار برای Wi‑Fi." "‏قدرت سیگنال Wi‑Fi کامل است." + "شبکه باز" + "شبکه ایمن" "‏سیستم عامل Android" "برنامه‌های حذف شده" "برنامه‌ها و کاربران حذف شده" @@ -187,6 +193,7 @@ "‏اسکن‌های رومینگ Wi‑Fi همیشه مجاز است" "داده تلفن همراه همیشه فعال باشد" "شتاب سخت‌افزاری اتصال به اینترنت با تلفن همراه" + "نمایش دستگاه‌های بلوتوث بدون نام" "غیرفعال کردن میزان صدای مطلق" "فعال کردن زنگ زدن درون باندی" "‏نسخه AVRCP بلوتوث" @@ -202,6 +209,12 @@ "‏کدک LDAC صوتی بلوتوث: کیفیت پخش" "‏انتخاب کدک LDAC صوتی بلوتوث:\nکیفیت پخش" "پخش جریانی: %1$s" + "‏DNS خصوصی" + "‏حالت DNS خصوصی را انتخاب کنید" + "خاموش" + "فرصت‌طلب" + "‏نام میزبان ارائه‌دهنده DNS خصوصی" + "‏نام میزبان ارائه‌دهنده DNS خصوصی را وارد کنید" "نمایش گزینه‌ها برای گواهینامه نمایش بی‌سیم" "‏افزایش سطح گزارش‌گیری Wi‑Fi، نمایش به ازای SSID RSSI در انتخاب‌کننده Wi‑Fi" "‏زمانی‌که فعال است، درشرایطی که سیگنال Wi-Fi ضعیف باشد، Wi‑Fi برای واگذاری اتصال داده به دستگاه همراه قوی‌تر عمل خواهد کرد." @@ -226,6 +239,7 @@ "این تنظیمات فقط برای برنامه‌نویسی در نظر گرفته شده است. ممکن است استفاده از این تنظیمات موجب خرابی یا عملکرد نادرست دستگاه یا برنامه‌های شما شود." "‏تأیید برنامه‌های نصب شده از طریق USB" "‏برنامه‌های نصب شده از طریق ADB/ADT را ازنظر رفتار مخاطره‌آمیز بررسی کنید." + "‏دستگاه‌های بلوتوث بدون نام (فقط نشانی‌های MAC) نشان داده خواهند شد" "در صورت وجود مشکل میزان صدا با دستگاه‌های راه دور مثل میزان صدای بلند ناخوشایند یا عدم کنترل صدا، قابلیت میزان صدای کامل بلوتوث را غیرفعال کنید." "اجازه می‌دهد آهنگ‌های زنگ تلفن در هدست‌های بلوتوث پخش شود" "ترمینال محلی" @@ -345,12 +359,11 @@ "^1 - ^2 باقی مانده" "%1$s - ‏%2$s" "^1 - ^2 مانده تا شارژ کامل" - "^1 - ^2" "ناشناس" "در حال شارژ شدن" "درحال شارژ شدن" "شارژ نمی‌شود" - "شارژ نمی‌شود" + "به برق وصل شده‌ است، درحال‌حاضر شارژ نمی‌شود" "پر" "توسط سرپرست سیستم کنترل می‌شود" "فعال‌شده توسط سرپرست" @@ -375,7 +388,6 @@ "سفارشی (%d)" "راهنما و بازخورد" "منو" - "GMT" "برای انجام بازنشانی کارخانه‌ای در حالت نمایشی، گذرواژه را وارد کنید" "بعدی" "وارد کردن گذرواژه الزامی است" diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml index 1be1b5aca38bd6575a8d7f2892da25375cba0a70..9ed0c8961f4622a2e2f4a039c1e749008d8f044d 100644 --- a/packages/SettingsLib/res/values-fi/arrays.xml +++ b/packages/SettingsLib/res/values-fi/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Käytä järjestelmän valintaa (oletus)" + "SBC" + "AAC" + "Qualcomm® aptX™ ‑ääni" + "Qualcomm® aptX™ HD ‑ääni" + "LDAC" + "Ota valinnaiset koodekit käyttöön" + "Poista valinnaiset koodekit käytöstä" + + + "Käytä järjestelmän valintaa (oletus)" + "SBC" + "AAC" + "Qualcomm® aptX™ ‑ääni" + "Qualcomm® aptX™ HD ‑ääni" + "LDAC" + "Ota valinnaiset koodekit käyttöön" + "Poista valinnaiset koodekit käytöstä" + "Käytä järjestelmän valintaa (oletus)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index b7b65ad14405e10d534e0c3e447f1a9e9e4c4e4f..268fa5394986370e8886db1e0c05276210548bdd 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -40,12 +40,16 @@ "Yhdistetty seuraavan kautta: %1$s" "Käytettävissä seuraavan kautta: %1$s" "Yhdistetty, ei internetyhteyttä." + "Yhteyspiste tilapäisesti täynnä" + "Yhdistetty, verkko: %1$s" + "Käytettävissä, verkko: %1$s" "Hyvin hidas" "Hidas" "OK" "Kohtuullinen" "Nopea" "Hyvin nopea" + "%1$s / %2$s" "Yhteys katkaistu" "Katkaistaan yhteyttä..." "Yhdistetään…" @@ -101,6 +105,8 @@ "Wi-Fi-signaali – kaksi palkkia" "Wi-Fi-signaali – kolme palkkia" "Vahva Wi-Fi-signaali" + "Avoin verkko" + "Suojattu verkko" "Android-käyttöjärjestelmä" "Poistetut sovellukset" "Poistetut sovellukset ja käyttäjät" @@ -187,6 +193,7 @@ "Salli Wi-Fi-verkkovierailuskannaus aina" "Mobiilidata aina käytössä" "Laitteistokiihdytyksen yhteyden jakaminen" + "Näytä nimettömät Bluetooth-laitteet" "Poista yleinen äänenvoimakkuuden säätö käytöstä" "Ota käyttöön kaistalla soitto" "Bluetoothin AVRCP-versio" @@ -202,6 +209,12 @@ "Bluetooth-äänen LDAC-koodekki: Toiston laatu" "Valitse Bluetooth-äänen LDAC-koodekki:\nToiston laatu" "Striimaus: %1$s" + "Yksityinen DNS" + "Valitse yksityinen DNS-tila" + "Pois käytöstä" + "Opportunistinen" + "Yksityisen DNS-tarjoajan isäntänimi" + "Anna isäntänimi tai DNS-tarjoaja." "Näytä langattoman näytön sertifiointiin liittyvät asetukset" "Lisää Wi‑Fin lokikirjaustasoa, näytä SSID RSSI -kohtaisesti Wi‑Fi-valitsimessa." "Kun asetus on käytössä, datayhteys siirtyy helpommin Wi-Fistä matkapuhelinverkkoon, jos Wi-Fi-signaali on heikko." @@ -226,6 +239,7 @@ "Nämä asetukset on tarkoitettu vain kehityskäyttöön, ja ne voivat aiheuttaa haittaa laitteellesi tai sen sovelluksille." "Tarkista USB:n kautta asennetut" "Tarkista ADB:n/ADT:n kautta asennetut sovellukset haitallisen toiminnan varalta." + "Näytetään Bluetooth-laitteet, joilla ei ole nimiä (vain MAC-osoitteet)." "Bluetoothin yleinen äänenvoimakkuuden säätö poistetaan käytöstä ongelmien välttämiseksi esimerkiksi silloin, kun laitteen äänenvoimakkuus on liian kova tai sitä ei voi säätää." "Salli puhelimen soittoäänten toistaminen Bluetooth-kuulokemikrofoneissa" "Paikallinen pääte" @@ -345,12 +359,11 @@ "^1^2 jäljellä" "%1$s%2$s" "^1^2 täyteen lataukseen" - "^1^2" "Tuntematon" "Ladataan" "ladataan" "Ei laturissa" - "Ei laturissa" + "Kytketty virtalähteeseen, lataaminen ei onnistu" "Täynnä" "Järjestelmänvalvoja hallinnoi tätä asetusta." "Järjestelmänvalvojan käyttöön ottama" @@ -375,7 +388,6 @@ "Muokattu (%d)" "Ohje ja palaute" "Valikko" - "GMT" "Palauta tehdasasetukset antamalla salasana" "Seuraava" "Salasana vaaditaan" diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml index 31ea851337aebcf2f14b4ab83a7365889968a96f..be568ed46e77542e1cddf62d9a4ed222240e5b60 100644 --- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml +++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Utiliser sélect. du système (par défaut)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activer les codecs optionnels" + "Désactiver les codecs optionnels" + + + "Utiliser sélect. du système (par défaut)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activer les codecs optionnels" + "Désactiver les codecs optionnels" + "Utiliser sélect. du système (par défaut)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index e409fcc099235fdcc8b24db7921ff46a278535f4..94ea32fcd24d2276cd121e2d6552e16a5524dd59 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -40,12 +40,16 @@ "Connecté par %1$s" "Accessible par %1$s" "Connecté, aucun accès à Internet" + "Le point d\'accès est temporairement plein" + "Connecté par %1$s" + "Accessible par %1$s" "Très lente" "Lente" "OK" "Moyenne" "Élevée" "Très rapide" + "%1$s : %2$s" "Déconnecté" "Déconnexion…" "Connexion en cours…" @@ -101,6 +105,8 @@ "Wi-Fi : deux barres." "Wi-Fi : trois barres." "Wi-Fi : signal complet." + "Réseau ouvert" + "Réseau sécurisé" "Système d\'exploitation Android" "Applications supprimées" "Applications et utilisateurs supprimés" @@ -187,6 +193,7 @@ "Toujours autoriser la détection de réseaux Wi-Fi en itinérance" "Données cellulaires toujours actives" "Accélération matérielle pour le partage de connexion" + "Afficher les appareils Bluetooth sans nom" "Désactiver le volume absolu" "Activer la signalisation intra-bande" "Version du profil Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec audio Bluetooth LDAC : qualité de lecture" "Sélectionner le codec audio Bluetooth LDAC :\nQualité de lecture" "Diffusion : %1$s" + "DNS privé" + "Sélectionnez le mode DNS privé" + "Désactivé" + "Opportuniste" + "Nom d\'hôte du fournisseur DNS privé" + "Entrez le nom d\'hôte du fournisseur DNS" "Afficher les options pour la certification d\'affichage sans fil" "Détailler davantage les données Wi-Fi, afficher par SSID RSSI dans sélect. Wi-Fi" "Si cette option est activée, le passage du Wi-Fi aux données cellulaires est forcé lorsque le signal Wi-Fi est faible" @@ -226,6 +239,7 @@ "Ces paramètres sont en cours de développement. Ils peuvent endommager votre appareil et les applications qui s\'y trouvent, ou provoquer leur dysfonctionnement." "Vérifier les applis via USB" "Vérifiez que les applications installées par ADB/ADT ne présentent pas de comportement dangereux." + "Les appareils Bluetooth sans nom (adresses MAC seulement) seront affichés" "Désactive la fonctionnalité de volume absolu par Bluetooth en cas de problème de volume sur les appareils à distance, par exemple si le volume est trop élevé ou s\'il ne peut pas être contrôlé." "Autoriser la lecture des sonneries du téléphone sur les écouteurs Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 – Temps restant : ^2" "%1$s - %2$s" "^1 : ^2 jusqu\'à la charge complète" - "^1 - ^2" "Inconnu" "Charge en cours…" "en cours de charge" "N\'est pas en charge" - "N\'est pas en charge" + "L\'appareil est branché, mais il ne peut pas être chargé pour le moment" "Pleine" "Contrôlé par l\'administrateur" "Activé par l\'administrateur" @@ -375,7 +388,6 @@ "Personnalisée (%d)" "Aide et commentaires" "Menu" - "GMT" "Entrez m. passe pour réinit. en mode démo" "Suivant" "Mot de passe obligatoire" diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml index 0576a53b52fee5ac6ac8a899453bb23c096acf2b..995a1ff1c04c9c5a9b82dd08ee209055667e0edc 100644 --- a/packages/SettingsLib/res/values-fr/arrays.xml +++ b/packages/SettingsLib/res/values-fr/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Utiliser sélection système (par défaut)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activer les codecs facultatifs" + "Désactiver les codecs facultatifs" + + + "Utiliser sélection système (par défaut)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activer les codecs facultatifs" + "Désactiver les codecs facultatifs" + "Utiliser sélection système (par défaut)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 48fcb38ce1d71c822d1519a35cb06f6b75e54737..7ff2e8ee1debf1f2fa9fe2a9c1b99f5963dc7995 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -40,12 +40,16 @@ "Connecté via %1$s" "Disponible via %1$s" "Connecté, aucun accès à Internet" + "Point d\'accès temporairement plein" + "Connecté via %1$s" + "Disponible via %1$s" "Très lente" "Lente" "Correct" "Moyenne" "Élevée" "Très élevée" + "%1$s/%2$s" "Déconnecté" "Déconnexion…" "Connexion…" @@ -101,6 +105,8 @@ "Signal Wi-Fi moyen" "Signal Wi-Fi bon" "Signal Wi-Fi excellent" + "Réseau ouvert" + "Réseau sécurisé" "Plate-forme Android" "Applications supprimées" "Applications et utilisateurs supprimés" @@ -187,6 +193,7 @@ "Toujours autoriser la détection de réseaux Wi-Fi en itinérance" "Données mobiles toujours actives" "Accélération matérielle pour le partage de connexion" + "Afficher les appareils Bluetooth sans nom" "Désactiver le volume absolu" "Activer la signalisation intra-bande" "Version Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec audio Bluetooth LDAC : qualité de lecture" "Sélectionner le codec audio Bluetooth LDAC :\nQualité de lecture" "Diffusion : %1$s" + "DNS privé" + "Sélectionner le mode DNS privé" + "Désactivé" + "Opportuniste" + "Nom d\'hôte du fournisseur DNS privé" + "Saisissez le nom d\'hôte du fournisseur DNS" "Afficher les options de la certification de l\'affichage sans fil" "Détailler plus infos Wi-Fi, afficher par RSSI de SSID dans outil sélection Wi-Fi" "Si cette option est activée, le passage du Wi-Fi aux données mobiles est forcé en cas de signal Wi-Fi faible." @@ -226,6 +239,7 @@ "Ces paramètres sont en cours de développement. Ils peuvent endommager votre appareil et les applications qui s\'y trouvent, ou provoquer leur dysfonctionnement." "Vérifier les applis via USB" "Vérifiez que les applications installées par ADB/ADT ne présentent pas de comportement dangereux." + "Les appareils Bluetooth seront affichés sans nom (adresse MAC uniquement)" "Désactive la fonctionnalité de volume absolu du Bluetooth en cas de problème de volume sur les appareils à distance, par exemple si le volume est trop élevé ou s\'il ne peut pas être contrôlé." "Autoriser la lecture des sonneries du téléphone sur les casques Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 – Temps restant : ^2" "%1$s%2$s" "^1 - ^2 jusqu\'à la charge complète" - "^1^2" "Inconnu" "Batterie en charge" "chargement…" "Pas en charge" - "Débranchée" + "Appareil branché, mais impossible de le charger pour le moment" "pleine" "Contrôlé par l\'administrateur" "Activé par l\'administrateur" @@ -375,7 +388,6 @@ "Personnalisé (%d)" "Aide et commentaires" "Menu" - "GMT" "Saisir mot de passe pour rétablir conf. d\'usine en mode démo." "Suivant" "Veuillez saisir le mot de passe" diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml index c716dce1ad6205035b82323b0a616f2c2d123624..d06fe9ce890dfe1928dac627b79cb7ec1d3c90f0 100644 --- a/packages/SettingsLib/res/values-gl/arrays.xml +++ b/packages/SettingsLib/res/values-gl/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usar selección sistema (predeterminado)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activar códecs opcionais" + "Desactivar códecs opcionais" + + + "Usa selección sistema (predeterminado)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activa os códecs opcionais" + "Desactiva os códecs opcionais" + "Usar selección sistema (predeterminado)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index fe91f4036c88ca5f6bbfc2dea90c260875298499..cee844a2368f7ab4fb56e3b3974acc72a4e429ad 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -40,12 +40,16 @@ "Conectado a través de %1$s" "Dispoñible a través de %1$s" "Conectado, pero sen Internet" + "O punto de acceso está temporalmente cheo" + "Conectado a través de %1$s" + "Dispoñible a través de %1$s" "Moi lenta" "Lenta" "Aceptar" "Media" "Rápida" "Moi rápida" + "%1$s/%2$s" "Desconectado" "Desconectando..." "Conectando..." @@ -101,6 +105,8 @@ "Dúas barras de wifi." "Tres barras de wifi." "Sinal completo de wifi." + "Rede aberta" + "Rede segura" "SO Android" "Aplicacións eliminadas" "Aplicacións e usuarios eliminados" @@ -187,6 +193,7 @@ "Permitir sempre buscas de itinerancia da wifi" "Datos móbiles sempre activados" "Aceleración de hardware para conexión compartida" + "Mostrar dispositivos Bluetooth sen nomes" "Desactivar volume absoluto" "Activar a función de soar na mesma banda" "Versión AVRCP de Bluetooth" @@ -202,6 +209,12 @@ "Códec LDAC de audio por Bluetooth: calidade de reprodución" "Seleccionar códec LDAC de audio por Bluetooth:\ncalidade de reprodución" "Reprodución en tempo real: %1$s" + "DNS privado" + "Selecciona o modo de DNS privado" + "Desactivar" + "Oportunista" + "Nome de host de provedor de DNS privado" + "Introduce o nome de host de provedor de DNS" "Mostra opcións para o certificado de visualización sen fíos" "Aumentar o nivel de rexistro da wifi, mostrar por SSID RSSI no selector de wifi" "Cando estea activada esta función, a wifi será máis agresiva ao transferir a conexión de datos ao móbil cando o sinal wifi sexa feble" @@ -226,6 +239,7 @@ "Esta configuración só está destinada á programación. Esta pode provocar que o dispositivo e as aplicacións fallen ou se comporten incorrectamente." "Verificar aplicacións por USB" "Comprobar as aplicacións instaladas a través de ADB/ADT para detectar comportamento perigoso." + "Mostraranse dispositivos Bluetooth sen nomes (só enderezos MAC)" "Desactiva a función do volume absoluto do Bluetooth en caso de que se produzan problemas de volume cos dispositivos remotos, como volume demasiado alto ou falta de control." "Permite que os tons de chamada do teléfono se reproduzan nos auriculares Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 (tempo restante: ^2)" "%1$s - %2$s" "^1 - ^2 ata completar a carga" - "^1 (^2)" "Descoñecido" "Cargando" "cargando" "Non se está cargando" - "Non está cargando" + "Conectouse, pero non se pode cargar neste momento" "Completa" "Opción controlada polo administrador" "Activado polo administrador" @@ -375,7 +388,6 @@ "Personalizado (%d)" "Axuda e comentarios" "Menú" - "GMT" "Insire contrasinal para restablec. en demostración" "Seguinte" "O contrasinal é obrigatorio" diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml index 45bd6abd904ccce7a8335a62698a2e640365e44d..00eb29ce5d5f3be1b656430f1aa014fdc5461983 100644 --- a/packages/SettingsLib/res/values-gu/arrays.xml +++ b/packages/SettingsLib/res/values-gu/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)" + "SBC" + "AAC" + "Qualcomm® aptX™ ઑડિઓ" + "Qualcomm® aptX™ HD ઑડિઓ" + "LDAC" + "વૈકલ્પિક કોડેક સક્ષમ કરો" + "વૈકલ્પિક કોડેક અક્ષમ કરો" + + + "સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)" + "SBC" + "AAC" + "Qualcomm® aptX™ ઑડિઓ" + "Qualcomm® aptX™ HD ઑડિઓ" + "LDAC" + "વૈકલ્પિક કોડેક સક્ષમ કરો" + "વૈકલ્પિક કોડેક અક્ષમ કરો" + "સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 3457cc73e167c4d194429bac335fb58567c7fb67..a9124a7da39c48a94d6d0b1cf6a3ddac6a581baa 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -40,12 +40,16 @@ "%1$s દ્વારા કનેક્ટ થયેલ" "%1$s દ્વારા ઉપલબ્ધ" "કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી" + "ઍક્સેસ પૉઇન્ટ અસ્થાયીરૂપે ભરાયેલ છે" + "%1$s દ્વારા કનેક્ટ થયેલ" + "%1$s દ્વારા ઉપલબ્ધ" "ખૂબ જ ધીમી" "ધીમી" "ઓકે" "મધ્યમ" "ઝડપી" "ખૂબ ઝડપી" + "%1$s / %2$s" "ડિસ્કનેક્ટ કર્યું" "ડિસ્કનેક્ટ થઈ રહ્યું છે..." "કનેક્ટ થઈ રહ્યું છે…" @@ -101,6 +105,8 @@ "Wifi બે બાર." "Wifi ત્રણ બાર." "પૂર્ણ Wifi સિગ્નલ." + "નેટવર્ક ખોલો" + "સુરક્ષિત નેટવર્ક" "Android OS" "દૂર કરેલી ઍપ્લિકેશનો" "દૂર કરેલી ઍપ્લિકેશનો અને વપરાશકર્તાઓ" @@ -187,6 +193,7 @@ "હંમેશા વાઇ-ફાઇ રોમ સ્કૅન્સને મંજૂરી આપો" "મોબાઇલ ડેટા હંમેશાં સક્રિય" "ટિથરિંગ માટે હાર્ડવેર ગતિવૃદ્ધિ" + "નામ વિનાના બ્લૂટૂથ ઉપકરણો બતાવો" "ચોક્કસ વૉલ્યૂમને અક્ષમ કરો" "બેંડમાં રિંગ કરવાનું સક્ષમ કરો" "બ્લૂટૂથ AVRCP સંસ્કરણ" @@ -202,6 +209,12 @@ "બ્લૂટૂથ ઑડિઓ LDAC કોડેક: પ્લેબૅક ગુણવત્તા" "બ્લૂટૂથ ઑડિઓ LDAC કોડેક પસંદ કરો:\nપ્લેબૅક ગુણવત્તા" "સ્ટ્રીમિંગ: %1$s" + "ખાનગી DNS" + "ખાનગી DNS મોડને પસંદ કરો" + "બંધ" + "તકવાદી" + "ખાનગી DNS પ્રદાતા હોસ્ટનું નામ" + "DNS પ્રદાતાના હોસ્ટનું નામ દાખલ કરો" "વાયરલેસ ડિસ્પ્લે પ્રમાણપત્ર માટેના વિકલ્પો બતાવો" "વાઇ-ફાઇ લોગિંગ સ્તર વધારો, વાઇ-ફાઇ પીકરમાં SSID RSSI દીઠ બતાવો" "જ્યારે સક્ષમ કરેલ હોય, ત્યારે વાઇ-ફાઇ સિગ્નલ નબળું હોવા પર, વાઇ-ફાઇ વધુ ઝડપથી ડેટા કનેક્શનને મોબાઇલ પર મોકલશે" @@ -226,6 +239,7 @@ "આ સેટિંગ્સ ફક્ત વિકાસનાં ઉપયોગ માટે જ હેતુબદ્ધ છે. તે તમારા ઉપકરણ અને તેના પરની એપ્લિકેશન્સનાં ભંગ થવા અથવા ખરાબ વર્તનનું કારણ બની શકે છે." "USB પર ઍપ્લિકેશનો ચકાસો" "હાનિકારક વર્તણૂંક માટે ADB/ADT મારફતે ઇન્સ્ટોલ કરવામાં આવેલી ઍપ્લિકેશનો તપાસો." + "નામ વગરના (ફક્ત MAC ઍડ્રેસવાળા) બ્લૂટૂથ ઉપકરણો બતાવવામાં આવશે" "રિમોટ ઉપકરણોમાં વધુ પડતું ઊંચું વૉલ્યૂમ અથવા નિયંત્રણની કમી જેવી વૉલ્યૂમની સમસ્યાઓની સ્થિતિમાં બ્લૂટૂથ ચોક્કસ વૉલ્યૂમ સુવિધાને અક્ષમ કરે છે." "ફોનની રિંગટોન બ્લૂટૂથ હૅડસેટ પર વાગવાની મંજૂરી આપો" "સ્થાનિક ટર્મિનલ" @@ -345,12 +359,11 @@ "^1 - ^2 બાકી" "%1$s - %2$s" "^1 - સંપૂર્ણપણે ચાર્જ થવા માટે ^2" - "^1 - ^2" "અજાણ્યું" "ચાર્જ થઈ રહ્યું છે" "ચાર્જ થઈ રહ્યું છે" "ચાર્જ થઈ રહ્યું નથી" - "ચાર્જ થઈ રહ્યું નથી" + "પ્લગ ઇન કરેલ, હમણાં ચાર્જ કરી શકતા નથી" "પૂર્ણ" "વ્યવસ્થાપક દ્વારા નિયંત્રિત" "વ્યવસ્થાપકે સક્ષમ કરેલ" @@ -375,7 +388,6 @@ "કસ્ટમ (%d)" "સહાય અને પ્રતિસાદ" "મેનુ" - "GMT" "ડેમો મોડમાં ફેક્ટરી રીસેટ પાસવર્ડ દાખલ કરો" "આગલું" "પાસવર્ડ આવશ્યક છે" diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml index f4bc1dd61ab58d595d379bc55f55de539c25af2c..1a765b34e4d76d4ec37f8ca22cf0f682ca156edc 100644 --- a/packages/SettingsLib/res/values-hi/arrays.xml +++ b/packages/SettingsLib/res/values-hi/arrays.xml @@ -49,14 +49,14 @@ "खराब कनेक्शन को अस्थायी रूप से अनदेखा कर रहा है" - "कभी नही जांचें" - "केवल DRM सामग्री जांचें" - "हमेशा जांचें" + "कभी नही जाँचें" + "केवल DRM सामग्री जाँचें" + "हमेशा जाँचें" - "कभी भी HDCP जांच का उपयोग न करें" - "HDCP जांच का उपयोग केवल DRM सामग्री के लिए करें" - "हमेशा HDCP जांच का उपयोग करें" + "कभी भी HDCP जाँच का उपयोग न करें" + "HDCP जाँच का उपयोग केवल DRM सामग्री के लिए करें" + "हमेशा HDCP जाँच का उपयोग करें" "AVRCP 1.4 (डिफ़ॉल्ट)" @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)" + "SBC" + "AAC" + "Qualcomm® aptX™ ऑडियो" + "Qualcomm® aptX™ HD ऑडियो" + "LDAC" + "वैकल्पिक कोडेक चालू करें" + "वैकल्पिक कोडेक अक्षम करें" + + + "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)" + "SBC" + "AAC" + "Qualcomm® aptX™ ऑडियो" + "Qualcomm® aptX™ HD ऑडियो" + "LDAC" + "वैकल्पिक कोडेक चालू करें" + "वैकल्पिक कोडेक अक्षम करें" + "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index f23c82ddfa23e8a85f6d0be02dfce74d708098bd..97daac70fa92f4f66f3ece3f65bdae0846fa9394 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -30,7 +30,7 @@ "प्रमाणीकरण समस्या" "कनेक्ट नहीं हो पा रहा है" "\'%1$s\' से कनेक्ट नहीं हो पा रहा है" - "पासवर्ड जांचें और दोबारा कोशिश करें" + "पासवर्ड जाँचें और दोबारा कोशिश करें" "रेंज में नहीं" "अपने आप कनेक्ट नहीं होगा" "इंटरनेट नहीं है" @@ -40,12 +40,16 @@ "%1$s के द्वारा उपलब्ध" "%1$s के द्वारा उपलब्ध" "कनेक्ट किया गया, इंटरनेट नहीं" + "एक्सेस पॉइंट फ़िलहाल भरा हुआ है" + "%1$s के ज़रिए कनेक्ट" + "%1$s के ज़रिए उपलब्ध" "अत्‍यधिक धीमी" "धीमी" "ठीक है" "मध्यम" "तेज़" "अत्‍यधिक तेज़" + "%1$s / %2$s" "डिस्कनेक्‍ट किया गया" "डिस्‍कनेक्‍ट हो रहा है..." "कनेक्ट हो रहा है..." @@ -101,6 +105,8 @@ "वाई-फ़ाई की दो पट्टी मिल रही हैं." "वाई-फ़ाई की एक पट्टी मिल रही है." "पूरे वाई-फ़ाई सिग्नल मिल रहे हैं." + "खुला नेटवर्क" + "सुरक्षित नेटवर्क" "Android OS" "निकाले गए ऐप्स" "ऐप्स और उपयोगकर्ताओं को निकालें" @@ -136,7 +142,7 @@ "%1$s पूरी तरह से समर्थित है" "%1$s के लिए नेटवर्क कनेक्शन की आवश्यकता है" "%1$s समर्थित नहीं है" - "जांच की जा रही है..." + "जाँच की जा रही है..." "%s के लिए सेटिंग" "इंजन सेटिंग लॉन्‍च करें" "पसंदीदा इंजन" @@ -187,6 +193,7 @@ "हमेशा वाई-फ़ाई रोम स्कैन करने दें" "मोबाइल डेटा हमेशा सक्रिय" "हार्डवेयर से तेज़ी लाने के लिए टेदर करें" + "बिना नाम वाले ब्लूटूथ डिवाइस दिखाएं" "पूर्ण वॉल्यूम अक्षम करें" "इन-बैंड रिंग करना चालू करें" "ब्लूटूथ AVRCP वर्शन" @@ -202,6 +209,12 @@ "ब्लूटूथ ऑडियो LDAC कोडेक: प्लेबैक क्वालिटी" "ब्लूटूथ ऑडियो LDAC कोडेक चुनें:\nप्लेबैक क्वालिटी" "चलाया जा रहा है: %1$s" + "निजी DNS" + "निजी DNS मोड चुनें" + "बंद" + "मौका मिलते ही काम करने वाला" + "निजी DNS सेवा देने वाले का होस्टनाम" + "DNS सेवा देने वाले का होस्टनाम डालें" "वायरलेस दिखाई देने के लिए प्रमाणन विकल्प दिखाएं" "वाई-फ़ाई प्रवेश स्तर बढ़ाएं, वाई-फ़ाई पिकर में प्रति SSID RSSI दिखाएं" "इसके सक्षम होने पर, जब वाई-फ़ाई संकेत कमज़ोर हों तो वाई-फ़ाई, डेटा कनेक्शन को मोबाइल पर ज़्यादा तेज़ी से भेजेगा" @@ -225,13 +238,14 @@ "विकास सेटिंग की अनुमति दें?" "ये सेटिंग केवल विकास संबंधी उपयोग के प्रयोजन से हैं. वे आपके डिवाइस और उस पर स्‍थित ऐप्स को खराब कर सकती हैं या उनके दुर्व्यवहार का कारण हो सकती हैं." "USB पर ऐप की पुष्टि करें" - "नुकसानदेह व्यवहार के लिए ADB/ADT के द्वारा इंस्टॉल किए गए ऐप्स जांचें." + "नुकसानदेह व्यवहार के लिए ADB/ADT के द्वारा इंस्टॉल किए गए ऐप्स जाँचें." + "बिना नाम वाले ब्लूटूथ डिवाइस (केवल MAC पते वाले) दिखाए जाएंगे" "दूरस्थ डिवाइस के साथ वॉल्यूम की समस्याओं जैसे अस्वीकार्य तेज़ वॉल्यूम या नियंत्रण की कमी की स्थिति में ब्लूटूथ पूर्ण वॉल्यूम सुविधा को अक्षम करता है." "फ़ोन की रिंगटोन को ब्लूटूथ हेडसेट पर बजने दें" "स्थानीय टर्मिनल" "लोकल शेल तक पहुंचने की सुविधा देने वाले टर्मिनल ऐप को चालू करें" - "HDCP जांच" - "HDCP जांच व्‍यवहार सेट करें" + "HDCP जाँच" + "HDCP जाँच व्‍यवहार सेट करें" "डीबग करना" "डीबग ऐप्स को चुनें" "कोई डीबग ऐप्स सेट नहीं है" @@ -294,7 +308,7 @@ "आकार बदले जाने के लिए गतिविधियों को बाध्य करें" "सभी गतिविधियों को मल्टी-विंडो (एक से ज़्यादा ऐप, एक साथ) के लिए आकार बदलने लायक बनाएं, चाहे उनकी मेनिफ़ेस्ट वैल्यू कुछ भी हो." "फ़्रीफ़ॉर्म विंडो (एक साथ कई विंडो दिखाना) चालू करें" - "जांच के लिए बनी फ़्रीफ़ॉर्म विंडो के लिए सहायता चालू करें." + "जाँच के लिए बनी फ़्रीफ़ॉर्म विंडो के लिए सहायता चालू करें." "डेस्‍कटॉप बैकअप पासवर्ड" "डेस्‍कटॉप पूर्ण बैकअप वर्तमान में सुरक्षित नहीं हैं" "डेस्कटॉप के पूर्ण बैकअप का पासवर्ड बदलने या निकालने के लिए टैप करें" @@ -345,17 +359,16 @@ "^1 - ^2 शेष" "%1$s - %2$s" "^1 - ^2 पूरी तरह से चार्ज होने तक" - "^1 - ^2" "अज्ञात" "चार्ज हो रही है" "चार्ज किया जा रहा है" "चार्ज नहीं हो रही है" - "चार्ज नहीं हो रही है" + "प्लग इन है, अभी चार्ज नहीं हो सकती" "पूरी" - "व्यवस्थापक द्वारा नियंत्रित" + "इसका नियंत्रण ऐडमिन के पास है" "व्यवस्थापक ने सक्षम किया है" "व्यवस्थापक ने अक्षम किया है" - "अक्षम किया गया" + "बंद किया गया" "अनुमति है" "अनुमति नहीं है" "अनजान ऐप इंस्टॉल करें" @@ -375,7 +388,6 @@ "कस्टम (%d)" "सहायता और फ़ीडबैक" "मेन्यू" - "GMT" "डेमो मोड में फ़ैक्टरी रीसेट के लिए पासवर्ड डालें" "आगे" "पासवर्ड आवश्यक" diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml index 4d0cd2e16b18587efdd02e935752f4569c9d2b33..ffc76e8c221b7b420bdef72c7dc0368a26b5c9d0 100644 --- a/packages/SettingsLib/res/values-hr/arrays.xml +++ b/packages/SettingsLib/res/values-hr/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Upotreba odabira sustava (zadano)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Omogućivanje izbornih kodeka" + "Onemogućivanje izbornih kodeka" + + + "Upotreba odabira sustava (zadano)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Omogućivanje izbornih kodeka" + "Onemogućivanje izbornih kodeka" + "Upotreba odabira sustava (zadano)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index c244f3180a2b2935f215f207ed5c2573c8af3335..aa554a81d49fd891c657487acd8044bac97dc491 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -40,12 +40,16 @@ "Povezano putem %1$s" "Dostupno putem %1$s" "Povezano, bez interneta" + "Pristupna je točka privremeno puna" + "Povezano putem mreže %1$s" + "Dostupno putem mreže %1$s" "Vrlo sporo" "Sporo" "U redu" "Srednje" "Brzo" "Vrlo brzo" + "%1$s/%2$s" "Niste povezani" "Isključivanje…" "Povezivanje…" @@ -101,6 +105,8 @@ "Wi-Fi signal ima dva stupca." "Wi-Fi signal ima tri stupca." "Wi-Fi signal je pun." + "Otvorena mreža" + "Sigurna mreža" "Android OS" "Uklonjene aplikacije" "Uklonjene aplikacije i korisnici" @@ -187,6 +193,7 @@ "Uvijek dopusti slobodno traženje Wi-Fi mreže" "Mobilni podaci uvijek aktivni" "Hardversko ubrzanje za modemsko povezivanje" + "Prikaži Bluetooth uređaje bez naziva" "Onemogući apsolutnu glasnoću" "Omogući zvuk zvona unutar pojasne širine" "Verzija AVRCP-a za Bluetooth" @@ -202,6 +209,12 @@ "Kodek za Bluetooth Audio LDAC: kvaliteta reprodukcije" "Odaberi kodek za Bluetooth Audio LDAC:\nkvaliteta reprodukcije" "Strujanje: %1$s" + "Privatni DNS" + "Odaberite način privatnog DNS-a" + "Isključeno" + "Oportunistički" + "Naziv hosta davatelja usluge privatnog DNS-a" + "Unesite naziv hosta davatelja usluge DNS-a" "Prikaži opcije za certifikaciju bežičnog prikaza" "Povećana razina prijave na Wi‑Fi, prikaz po SSID RSSI-ju u Biraču Wi‑Fi-ja" "Ako je omogućeno, Wi-Fi će aktivno prebacivati podatkovnu vezu mobilnoj mreži kada je Wi-Fi signal slab." @@ -226,6 +239,7 @@ "Ove su postavke namijenjene samo razvojnim programerima. One mogu uzrokovati kvar ili neželjeno ponašanje vašeg uređaja i aplikacija na njemu." "Potvrdi aplikacije putem USB-a" "Provjerite uzrokuju li aplikacije instalirane putem ADB-a/ADT-a poteškoće." + "Prikazivat će se Bluetooth uređaji bez naziva (samo MAC adrese)" "Onemogućuje Bluetoothovu značajku apsolutne glasnoće ako udaljeni uređaji imaju poteškoća sa zvukom, kao što su, primjerice, neprihvatljiva glasnoća ili nepostojanje kontrole." "Omogući reprodukciju melodija zvona telefona putem Bluetooth slušalica" "Lokalni terminal" @@ -345,12 +359,11 @@ "^1 – još ^2" "%1$s%2$s" "^1^2 do potpune napunjenosti" - "^1^2" "Nepoznato" "Punjenje" "punjenje" "Ne puni se" - "Ne puni se" + "Uključen, trenutačno se ne može puniti" "Puna" "Kontrolira administrator" "Omogućio administrator" @@ -375,7 +388,6 @@ "Prilagođeno (%d)" "Pomoć i povratne informacije" "Izbornik" - "GMT" "Unesite zaporku za resetiranje u demo načinu" "Dalje" "Potrebna je zaporka" diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml index a361d3e925752688ab208e865857a6ecbee2c506..7ad170a6d401af31eac6e1963cf86ae493def336 100644 --- a/packages/SettingsLib/res/values-hu/arrays.xml +++ b/packages/SettingsLib/res/values-hu/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Rendszerérték (alapértelmezett)" + "SBC" + "AAC" + "Hang: Qualcomm® aptX™" + "Hang: Qualcomm® aptX™ HD" + "LDAC" + "Nem kötelező kodekek engedélyezése" + "Nem kötelező kodekek letiltása" + + + "Rendszerérték (alapértelmezett)" + "SBC" + "AAC" + "Hang: Qualcomm® aptX™" + "Hang: Qualcomm® aptX™ HD" + "LDAC" + "Engedélyezi a nem kötelező kodekeket" + "Letiltja a nem kötelező kodekeket" + "Rendszerérték (alapértelmezett)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 1cb9ef67d51f2a14a3c9f0c43db779651efca986..c308290bd5bb7d5236b5e81ece18dab7a2ba4285 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -40,12 +40,16 @@ "Csatlakozva a következőn keresztül: %1$s" "Elérhető a következőn keresztül: %1$s" "Csatlakozva, nincs internetelérés" + "A hozzáférési pont átmenetileg megtelt" + "Csatlakozva a következőn keresztül: %1$s" + "Elérhető a következőn keresztül: %1$s" "Nagyon lassú" "Lassú" "Rendben" "Közepes" "Gyors" "Nagyon gyors" + "%1$s / %2$s" "Szétkapcsolva" "Szétkapcsolás..." "Csatlakozás…" @@ -101,6 +105,8 @@ "Wi-Fi-jel: két sáv." "Wi-Fi-jel: három sáv." "Wi-Fi-jel: teljes." + "Nyílt hálózat" + "Biztonságos hálózat" "Android OS" "Eltávolított alkalmazások" "Eltávolított alkalmazások és felhasználók" @@ -187,6 +193,7 @@ "Wi‑Fi-roaming ellenőrzésének engedélyezése mindig" "A mobilhálózati kapcsolat mindig aktív" "Internetmegosztás hardveres gyorsítása" + "Név nélküli Bluetooth-eszközök megjelenítése" "Abszolút hangerő funkció letiltása" "Sávon belüli csörgetés engedélyezése" "A Bluetooth AVRCP-verziója" @@ -202,6 +209,12 @@ "Bluetooth LDAC hangkodek: lejátszási minőség" "Bluetooth LDAC hangkodek kiválasztása:\nlejátszási minőség" "Streamelés: %1$s" + "Privát DNS" + "„Privát DNS” mód kiválasztása" + "Ki" + "Opportunista" + "Privát DNS-szolgáltató gazdagépneve" + "Adja meg a DNS-szolgáltató gazdagépnevét" "Vezeték nélküli kijelző tanúsítványával kapcsolatos lehetőségek megjelenítése" "Wi‑Fi-naplózási szint növelése, RSSI/SSID megjelenítése a Wi‑Fi-választóban" "Ha engedélyezi, a Wi-Fi agresszívebben fogja átadni az adatkapcsolatot a mobilhálózatnak gyenge Wi-Fi-jel esetén" @@ -226,6 +239,7 @@ "Ezek a beállítások csak fejlesztői használatra szolgálnak. Használatuk esetén eszköze vagy alkalmazásai meghibásodhatnak, illetve nem várt módon viselkedhetnek." "USB-n keresztül telepített alkalmazások ellenőrzése" "Az ADB/ADT útján telepített alkalmazások ellenőrzése kártékony viselkedésre." + "Név nélküli Bluetooth-eszközök jelennek meg (csak MAC-címekkel)" "Letiltja a Bluetooth abszolút hangerő funkcióját a távoli eszközökkel kapcsolatos hangerőproblémák – például elfogadhatatlanul magas vagy nem vezérelhető hangerő – esetén." "A telefonon lévő csengőhangok Bluetooth-headseteken való lejátszásának engedélyezése" "Helyi végpont" @@ -345,12 +359,11 @@ "^1^2 van hátra" "%1$s%2$s" "^1 - ^2 a teljes feltöltésig" - "^1^2" "Ismeretlen" "Töltés" "töltés" "Nem tölt" - "Nem töltődik" + "Csatlakoztatva, jelenleg nem tölt" "Feltöltve" "Rendszergazda által irányítva" "A rendszergazda bekapcsolta" @@ -375,7 +388,6 @@ "Egyéni (%d)" "Súgó és visszajelzés" "Menü" - "GMT" "Írja be a jelszót a visszaállításhoz" "Következő" "Jelszó szükséges" diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml index cf4ade626965ad663e94d12cbdd9af41fc3a42f7..7406554701d4f089e0ea7b92097dee4b432c4e45 100644 --- a/packages/SettingsLib/res/values-hy/arrays.xml +++ b/packages/SettingsLib/res/values-hy/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Օգտագործել համակարգի կարգավորումը (կանխադրված)" + "SBC" + "AAC" + "Qualcomm® aptX™ աուդիո" + "Qualcomm® aptX™ HD աուդիո" + "LDAC" + "Միացնել լրացուցիչ կոդեկները" + "Անջատել լրացուցիչ կոդեկները" + + + "Օգտագործել համակարգի կարգավորումը (կանխադրված)" + "SBC" + "AAC" + "Qualcomm® aptX™ աուդիո" + "Qualcomm® aptX™ HD աուդիո" + "LDAC" + "Միացնել լրացուցիչ կոդեկները" + "Անջատել լրացուցիչ կոդեկները" + "Օգտագործել համակարգի կարգավորումը (կանխադրված)" "44,1 կՀց" diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 5b82dc3a9686b0c6cda76afd8b9309ce3bc63742..3b46d675398642d8f716bd73d56f1e5243ca7825 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -40,12 +40,16 @@ "Կապակցված է %1$s-ի միջոցով" "Հասանելի է %1$s-ի միջոցով" "Կապակցված է առանց համացանցի" + "Հասանելիության կետը ժամանակավորապես լիքն է" + "Միացված է %1$s-ի միջոցով" + "Հասանելի է %1$s-ի միջոցով" "Շատ դանդաղ" "Դանդաղ" "Հաստատել" "Միջին" "Արագ" "Շատ արագ" + "%1$s / %2$s" "Անջատված է" "Անջատվում է..." "Միանում է..." @@ -101,6 +105,8 @@ "Wi-Fi-ի ուժգնությունը՝ երկու գիծ:" "Wi-Fi-ի ուժգնությունը՝ երեք գիծ:" "Wi-Fi-ի ազդանշանը ուժեղ է:" + "Բաց ցանց" + "Անվտանգ ցանց" "Android OS" "Հեռացված ծրագրեր" "Հեռացված հավելվածներն ու օգտատերերը" @@ -187,6 +193,7 @@ "Միշտ թույլատրել Wi‑Fi ռոումինգի որոնումը" "Բջջային ինտերնետը միշտ ակտիվ է" "Սարքակազմի արագացման միացում" + "Ցուցադրել Bluetooth սարքերն առանց անունների" "Անջատել ձայնի բացարձակ ուժգնությունը" "Միացնել ներխմբային զանգը" "Bluetooth AVRCP տարբերակը" @@ -202,6 +209,12 @@ "Bluetooth աուդիո LDAC կոդեկ՝ նվագարկման որակ" "Ընտրեք Bluetooth աուդիո LDAC կոդեկը՝\nնվագարկման որակ" "Հեռարձակում՝ %1$s" + "Անհատական DNS" + "Ընտրեք անհատական DNS սերվերի ռեժիմը" + "Անջատված է" + "Ճկուն" + "Անհատական DNS ծառայության մատակարարի խնամորդի անունը" + "Մուտքագրեք DNS ծառայության մատակարարի խնամորդի անունը" "Ցույց տալ անլար էկրանի հավաստագրման ընտրանքները" "Բարձրացնել մակարդակը, Wi‑Fi ընտրիչում ամեն մի SSID-ի համար ցույց տալ RSSI" "Եթե այս գործառույթը միացված է, Wi-Fi-ի թույլ ազդանշանի դեպքում Wi‑Fi ինտերնետից բջջային ինտերնետի անցումը ավելի կտրուկ կկատարվի" @@ -226,6 +239,7 @@ "Այս կարգավորումները միայն ծրագրավորման նպատակների համար են նախատեսված: Դրանք կարող են խանգարել ձեր սարքի կամ ծրագրի աշխատանքին:" "Ստուգել հավելվածները USB-ի նկատմամբ" "Ստուգեք տեղադրված հավելվածը ADB/ADT-ի միջոցով կասկածելի աշխատանքի պատճառով:" + "Bluetooth սարքերը կցուցադրվեն առանց անունների (միայն MAC հասցեները)" "Կասեցնում է Bluetooth-ի ձայնի բացարձակ ուժգնության գործառույթը՝ հեռավոր սարքերի հետ ձայնի ուժգնությանը վերաբերող խնդիրներ ունենալու դեպքում (օրինակ՝ երբ ձայնի ուժգնությունն անընդունելի է կամ դրա կառավարումը հնարավոր չէ):" "Ընձեռել հեռախոսի բոլոր զանգերանգների Bluetooth ականջակալներով նվագարկումը" "Տեղային տերմինալ" @@ -345,12 +359,11 @@ "^1 - մնացել է ^2" "%1$s - %2$s" "^1^2 մինչև լրիվ լիցքավորումը" - "^1 - ^2" "Անհայտ" "Լիցքավորում" "լիցքավորում" "Չի լիցքավորվում" - "Չի լիցքավորվում" + "Միացված է հոսանքի աղբյուրին, սակայն այս պահին չի կարող լիցքավորվել" "Լիցքավորված" "Վերահսկվում է ադմինիստրատորի կողմից" "Միացված է ադմինիստրատորի կողմից" @@ -375,7 +388,6 @@ "Հատուկ (%d)" "Օգնություն և հետադարձ կապ" "Ընտրացանկ" - "GMT" "Մուտքագրեք գաղտնաբառը՝ ցուցադրական ռեժիմում գործարանային վերակայում կատարելու համար" "Հաջորդը" "Պահանջվում է գաղտնաբառ" diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml index 1a7e132ee4b65b73772dc40633962e3b0da77a7d..0e2217de1ea4a9a5eae44c2e468c9c7855279fc8 100644 --- a/packages/SettingsLib/res/values-in/arrays.xml +++ b/packages/SettingsLib/res/values-in/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Gunakan Pilihan Sistem (Default)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Aktifkan Codec Opsional" + "Nonaktifkan Codec Opsional" + + + "Gunakan Pilihan Sistem (Default)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Aktifkan Codec Opsional" + "Nonaktifkan Codec Opsional" + "Gunakan Pilihan Sistem (Default)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index a8dd4c2383c264b70f90381079b9ba4cd62ca6ff..ce80c887021b99b771ae323df799281b8a477c05 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -40,12 +40,16 @@ "Terhubung melalui %1$s" "Tersedia melalui %1$s" "Tersambung, tidak ada internet" + "Titik akses penuh untuk sementara" + "Tersambung melalui %1$s" + "Tersedia melalui %1$s" "Sangat Lambat" "Lambat" "Oke" "Sedang" "Cepat" "Sangat Cepat" + "%1$s/%2$s" "Sambungan terputus" "Memutus sambungan..." "Menyambung…" @@ -90,7 +94,7 @@ "Sandingkan" "SANDINGKAN" "Batal" - "Penyandingan memberi akses ke kontak dan riwayat panggilan saat tersambung" + "Penyandingan memberi akses ke kontak dan histori panggilan saat tersambung" "Tidak dapat menyandingkan dengan %1$s." "Tidak dapat menyandingkan dengan %1$s karena PIN atau kode sandi salah." "Tidak dapat berkomunikasi dengan %1$s." @@ -101,6 +105,8 @@ "Wi-Fi dua baris" "Wi-Fi tiga baris." "Sinyal Wi-Fi penuh." + "Jaringan terbuka" + "Jaringan aman" "OS Android" "Aplikasi dihapus" "Aplikasi dan pengguna yang dihapus" @@ -187,6 +193,7 @@ "Selalu izinkan Pemindaian Roaming Wi-Fi" "Data seluler selalu aktif" "Akselerasi hardware tethering" + "Tampilkan perangkat Bluetooth tanpa nama" "Nonaktifkan volume absolut" "Aktifkan dering in-band" "Versi AVRCP Bluetooth" @@ -202,6 +209,12 @@ "Codec LDAC Audio Bluetooth: Kualitas Pemutaran" "Pilih Codec LDAC Audio Bluetooth:\nKualitas Pemutaran" "Streaming: %1$s" + "DNS Pribadi" + "Pilih Mode DNS Pribadi" + "Nonaktif" + "Oportunistik" + "Hostname penyedia DNS pribadi" + "Masukkan hostname penyedia DNS" "Tampilkan opsi untuk sertifikasi layar nirkabel" "Tingkatkan level pencatatan log Wi-Fi, tampilkan per SSID RSSI di Pemilih Wi‑Fi" "Jika diaktifkan, Wi-Fi akan menjadi lebih agresif dalam mengalihkan sambungan data ke seluler saat sinyal Wi-Fi lemah" @@ -226,6 +239,7 @@ "Setelan ini hanya dimaksudkan untuk penggunaan pengembangan. Setelan dapat menyebabkan perangkat dan aplikasi yang menerapkannya rusak atau tidak berfungsi semestinya." "Verifikasi aplikasi melalui USB" "Periksa perilaku membahayakan dalam aplikasi yang terpasang melalui ADB/ADT." + "Perangkat Bluetooth tanpa nama (hanya alamat MAC) akan ditampilkan" "Menonaktifkan fitur volume absolut Bluetooth jika ada masalah volume dengan perangkat jarak jauh, misalnya volume terlalu keras atau kurangnya kontrol." "Izinkan nada dering di ponsel diputar di headset Bluetooth" "Terminal lokal" @@ -271,7 +285,7 @@ "Tampilkan batas klip, margin, dll." "Paksa arah tata letak RTL" "Paksa arah tata letak layar RTL untuk semua lokal" - "Paksa perenderan GPU" + "Paksa rendering GPU" "Paksa penggunaan GPU untuk gambar 2d" "Paksa 4x MSAA" "Aktifkan 4x MSAA dalam aplikasi OpenGL ES 2.0" @@ -345,12 +359,11 @@ "^1 - ^2 tersisa" "%1$s - %2$s" "^1 - ^2 lagi terisi penuh" - "^1 - ^2" "Tidak diketahui" "Mengisi daya" "mengisi daya baterai" "Tidak mengisi daya" - "Tidak mengisi daya" + "Tercolok, tidak dapat mengisi baterai sekarang" "Penuh" "Dikontrol oleh admin" "Diaktifkan oleh admin" @@ -375,7 +388,6 @@ "(%d) khusus" "Bantuan & masukan" "Menu" - "GMT" "Masukkan sandi untuk mengembalikan ke setelan pabrik dalam mode demo" "Berikutnya" "Perlu sandi" diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml index f1453ab42d133561bc237f2724150b9081deed19..a8a01a4f1f8389d2c8364d2863dff39f73c314eb 100644 --- a/packages/SettingsLib/res/values-is/arrays.xml +++ b/packages/SettingsLib/res/values-is/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Nota val kerfisins (sjálfgefið)" + "SBC" + "AAC" + "Qualcomm® aptX™ hljóð" + "Qualcomm® aptX™ HD hljóð" + "LDAC" + "Gera valfrjálsa kóðara virka" + "Gera valfrjálsa kóðara óvirka" + + + "Nota val kerfisins (sjálfgefið)" + "SBC" + "AAC" + "Qualcomm® aptX™ hljóð" + "Qualcomm® aptX™ HD hljóð" + "LDAC" + "Gera valfrjálsa kóðara virka" + "Gera valfrjálsa kóðara óvirka" + "Nota val kerfisins (sjálfgefið)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 7f541ce8bcfadb576ee385920230bde620138fed..7efb0b92010ce2d6971067db8ae0a08cfe80e825 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -40,12 +40,16 @@ "Tengt í gegnum %1$s" "Í boði í gegnum %1$s" "Tengt, enginn internetaðgangur" + "Aðgangsstaður tímabundið fullur" + "Tengt í gegnum %1$s" + "Í boði í gegnum %1$s" "Mjög hægt" "Hægt" "Í lagi" "Miðlungshratt" "Hratt" "Mjög hratt" + "%1$s / %2$s" "Aftengt" "Aftengist…" "Tengist…" @@ -101,6 +105,8 @@ "Wi-Fi: Tvö strik." "Wi-Fi: Þrjú strik." "Fullur Wi-Fi sendistyrkur." + "Opið net" + "Öruggt net" "Android stýrikerfið" "Fjarlægð forrit" "Fjarlægð forrit og notendur" @@ -187,6 +193,7 @@ "Leyfa alltaf reikileit með Wi-Fi" "Alltaf kveikt á farsímagögnum" "Vélbúnaðarhröðun fyrir tjóðrun" + "Sýna Bluetooth-tæki án heita" "Slökkva á samstillingu hljóðstyrks" "Leyfa símtöl á sömu rás" "Bluetooth AVRCP-útgáfa" @@ -202,6 +209,12 @@ "Bluetooth LDAC-hljóðkóðari: gæði spilunar" "Velja Bluetooth LDAC-hljóðkóðara:\ngæði spilunar" "Streymi: %1$s" + "Lokað DNS" + "Velja lokaða DNS-stillingu" + "Slökkt" + "Eftir hentugleika" + "Hýsilheiti lokaðrar DNS-veitu" + "Slá inn hýsilheiti DNS-veitu" "Sýna valkosti fyrir vottun þráðlausra skjáa" "Auka skráningarstig Wi-Fi, sýna RSSI fyrir hvert SSID í Wi-Fi vali" "Þegar þetta er virkt mun Wi-Fi skipta hraðar yfir í farsímagagnatengingu þegar Wi-Fi-tenging er léleg" @@ -226,6 +239,7 @@ "Þessar stillingar eru einungis ætlaðar í þróunarskyni. Þær geta valdið því að tækið og forrit þess bili eða starfi á rangan hátt." "Staðfesta forrit gegnum USB" "Kanna skaðlega hegðun forrita sem sett eru upp frá ADB/ADT." + "Bluetooth-tæki án heita (aðeins MAC-vistfang) verða birt" "Slekkur á samstillingu Bluetooth-hljóðstyrks ef vandamál koma upp með hljóðstyrk hjá fjartengdum tækjum, svo sem of hár hljóðstyrkur eða erfiðleikar við stjórnun." "Leyfa að hringitónar í símanum spilist í Bluetooth-höfuðtólum" "Staðbundin skipanalína" @@ -345,12 +359,11 @@ "^1^2 eftir" "%1$s%2$s" "^1 - ^2 þar til fullri hleðslu er náð" - "^1^2" "Óþekkt" "Í hleðslu" "í hleðslu" "Ekki í hleðslu" - "Ekki í hleðslu" + "Í sambandi, ekki hægt að hlaða eins og er" "Fullhlaðin" "Stjórnað af kerfisstjóra" "Gert virkt af kerfisstjóra" @@ -375,7 +388,6 @@ "Sérsniðið (%d)" "Hjálp og ábendingar" "Valmynd" - "GMT" "Sláðu inn aðgangsorð til að framkvæma núllstillingu í sýnisútgáfu" "Áfram" "Aðgangsorðs krafist" diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml index 6de79371d7dc1248ec47d0d0a75021e40c79e0ee..42a246d43a3533101a194202c8a5b74dadaee118 100644 --- a/packages/SettingsLib/res/values-it/arrays.xml +++ b/packages/SettingsLib/res/values-it/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usa selezione di sistema (predefinita)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Attiva codec facoltativi" + "Disattiva codec facoltativi" + + + "Usa selezione di sistema (predefinita)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Attiva codec facoltativi" + "Disattiva codec facoltativi" + "Usa selezione di sistema (predefinita)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 5598d87d5a24a28096d4938d19da5ed0871b736f..b54f61d0d1bbe192ef989b217f079afa84a095f0 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -40,12 +40,16 @@ "Collegato tramite %1$s" "Disponibile tramite %1$s" "Connesso senza Internet" + "Punto di accesso momentaneamente al completo" + "Connesso tramite %1$s" + "Disponibile tramite %1$s" "Molto lenta" "Lenta" "OK" "Media" "Veloce" "Molto veloce" + "%1$s/%2$s" "Disconnesso" "Disconnessione..." "Connessione..." @@ -101,6 +105,8 @@ "Wi-Fi: due barre." "Wi-Fi: tre barre." "Segnale Wi-Fi completo." + "Rete aperta" + "Rete protetta" "Sistema operativo Android" "Applicazioni rimosse" "App e utenti rimossi" @@ -187,6 +193,7 @@ "Consenti sempre scansioni roaming Wi-Fi" "Dati mobili sempre attivi" "Tethering accelerazione hardware" + "Mostra dispositivi Bluetooth senza nome" "Disattiva volume assoluto" "Attiva suoneria in banda" "Versione Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec LDAC audio Bluetooth: qualità di riproduzione" "Seleziona il codec LDAC audio Bluetooth:\nQualità di riproduzione" "Streaming: %1$s" + "DNS privato" + "Seleziona modalità DNS privato" + "Non attiva" + "Opportunistica" + "Nome host del provider DNS privato" + "Inserisci il nome host del provider DNS" "Mostra opzioni per la certificazione display wireless" "Aumenta il livello di registrazione Wi-Fi, mostrando il SSID RSSI nel selettore Wi-Fi" "Con questa impostazione attivata, il Wi-Fi è più aggressivo nel passare la connessione dati al cellulare, con segnale Wi-Fi basso" @@ -226,6 +239,7 @@ "Queste impostazioni sono utilizzabili solo a scopo di sviluppo. Possono causare l\'arresto o il comportamento anomalo del dispositivo e delle applicazioni su di esso." "Verifica app tramite USB" "Controlla che le app installate tramite ADB/ADT non abbiano un comportamento dannoso." + "Verranno mostrati solo dispositivi Bluetooth senza nome (solo indirizzo MAC)" "Consente di disattivare la funzione del volume assoluto Bluetooth in caso di problemi con il volume dei dispositivi remoti, ad esempio un volume troppo alto o la mancanza di controllo." "Consenti la riproduzione delle suonerie del telefono tramite gli auricolari Bluetooth" "Terminale locale" @@ -345,12 +359,11 @@ "^1 - Tempo rimanente: ^2" "%1$s - %2$s" "^1 - ^2 alla carica completa" - "^1 - ^2" "Sconosciuta" "In carica" "in carica" "Non in carica" - "Non in carica" + "Collegato alla corrente. Impossibile caricare al momento" "Carica" "Gestita dall\'amministratore" "Attivata dall\'amministratore" @@ -375,7 +388,6 @@ "Personalizzato (%d)" "Guida e feedback" "Menu" - "GMT" "Inserisci la password per eseguire il ripristino dei dati di fabbrica in modalità demo" "Avanti" "Password obbligatoria" diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml index ab4e0e1d534cef5f8b82e8e60f8d0dcff4927f01..b8197a8bb6eb9604416fe269e12314dd76dc43fa 100644 --- a/packages/SettingsLib/res/values-iw/arrays.xml +++ b/packages/SettingsLib/res/values-iw/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "שימוש בבחירת המערכת (ברירת המחדל)" + "SBC" + "AAC" + "אודיו Qualcomm® aptX™" + "אודיו Qualcomm® aptX™ HD" + "LDAC" + "‏הפעלה של Codecs אופציונליים" + "‏השבתה של Codecs אופציונליים" + + + "השתמש בבחירת המערכת (ברירת המחדל)" + "SBC" + "AAC" + "אודיו Qualcomm® aptX™" + "אודיו Qualcomm® aptX™ HD" + "LDAC" + "‏הפעלה של Codecs אופציונליים" + "‏השבתה של Codecs אופציונליים" + "שימוש בבחירת המערכת (ברירת המחדל)" "44.1 קילו-הרץ" diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index ffbabb5ed8da9390ed52806bb3d4d45436a6a24f..972028cb6134df16d1ea8bcf904d5c28e23c5838 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -40,12 +40,16 @@ "‏מחובר דרך %1$s" "‏זמינה דרך %1$s" "מחובר. אין אינטרנט" + "נקודת הגישה מלאה באופן זמני" + "‏מחובר לרשת של %1$s" + "‏זמינה דרך %1$s" "איטית מאוד" "איטית" "אישור" "בינונית" "מהירה" "מהירה מאוד" + "%1$s / %2$s" "מנותק" "מתנתק..." "מתחבר ..." @@ -101,6 +105,8 @@ "‏שני פסים של Wi-Fi." "‏שלושה פסים של Wi-Fi." "‏אות Wi-Fi מלא." + "רשת פתוחה" + "רשת מאובטחת" "Android OS" "אפליקציות שהוסרו" "אפליקציות ומשתמשים שהוסרו" @@ -187,6 +193,7 @@ "‏התר תמיד סריקות נדידה של Wi‑Fi" "חבילת הגלישה פעילה תמיד" "שיפור מהירות באמצעות חומרה לצורך שיתוף אינטרנט בין ניידים" + "‏הצגת מכשירי Bluetooth ללא שמות" "השבת עוצמת קול מוחלטת" "‏הפעל צלצולים בערוץ ה-Bluetooth‏ (in-band ringing)" "‏Bluetooth גרסה AVRCP" @@ -202,6 +209,12 @@ "‏Codec אודיו LDAC ל-Bluetooth: איכות נגינה" "‏בחירת Codec אודיו LDAC ל-Bluetooth:‏\nאיכות נגינה" "סטרימינג: %1$s" + "‏DNS פרטי" + "‏צריך לבחור במצב DNS פרטי" + "מושבת" + "אופרטוניסטי" + "‏שם מארח של ספק DNS פרטי" + "‏צריך להזין את שם המארח של ספק DNS" "‏הצג אפשרויות עבור אישור של תצוגת WiFi" "‏העלה את רמת הרישום של Wi‑Fi ביומן, הצג לכל SSID RSSI ב-Wi‑Fi Picker" "‏כשאפשרות זו מופעלת, Wi-Fi יתנהג בצורה אגרסיבית יותר בעת העברת חיבור הנתונים לרשת הסלולרית כשאות ה-Wi-Fi חלש." @@ -226,6 +239,7 @@ "הגדרות אלה מיועדות לשימוש בפיתוח בלבד. הן עלולות לגרום למכשיר או לאפליקציות המותקנות בו לקרוס או לפעול באופן לא תקין." "‏אמת אפליקציות באמצעות USB" "‏בדוק אפליקציות שהותקנו באמצעות ADB/ADT לאיתור התנהגות מזיקה." + "‏יוצגו מכשירי Bluetooth ללא שמות (כתובות MAC בלבד)" "‏משבית את תכונת עוצמת הקול המוחלטת ב-Bluetooth במקרה של בעיות בעוצמת הקול במכשירים מרוחקים, כגון עוצמת קול רמה מדי או חוסר שליטה ברמת העוצמה." "‏הפעלת רינגטונים באוזניות Bluetooth" "מסוף מקומי" @@ -345,12 +359,11 @@ "^1 - נותרו ^2" "%1$s‏ - %2$s" "^1 - ^2 עד לטעינה מלאה" - "^1 - ^2" "לא ידוע" "טוען" "בטעינה" "לא בטעינה" - "לא טוען" + "המכשיר מחובר, אבל לא ניתן לטעון עכשיו" "מלא" "נמצא בשליטת מנהל מערכת" "מופעל על ידי מנהל המכשיר" @@ -375,7 +388,6 @@ "מותאם אישית (%d)" "עזרה ומשוב" "תפריט" - "GMT" "הזן סיסמה כדי לבצע איפוס להגדרות היצרן במצב הדגמה" "הבא" "דרושה סיסמה" diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml index 150081cda73d0e0a854c3b692e3afc2d4ab890d1..aa20097322a01a7ffef75e09c870e19238465b65 100644 --- a/packages/SettingsLib/res/values-ja/arrays.xml +++ b/packages/SettingsLib/res/values-ja/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "システムの選択(デフォルト)を使用" + "SBC" + "AAC" + "Qualcomm® aptX™ オーディオ" + "Qualcomm® aptX™ HD オーディオ" + "LDAC" + "オプションのコーデックの有効化" + "オプションのコーデックの無効化" + + + "システムの選択(デフォルト)を使用" + "SBC" + "AAC" + "Qualcomm® aptX™ オーディオ" + "Qualcomm® aptX™ HD オーディオ" + "LDAC" + "オプションのコーデックを有効にします" + "オプションのコーデックを無効にします" + "システムの選択(デフォルト)を使用" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index ba12e68ca1f8bd7ff2d568a6ed5e5ef9f7fc5818..66382cc92cea400c2f72fc1d04552077e2d9ce00 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -40,12 +40,16 @@ "%1$s経由で接続" "%1$s経由で使用可能" "接続済み、インターネットは利用できません" + "アクセス ポイントが一時的にいっぱいです" + "%1$s 経由で接続済み" + "%1$s 経由で使用可能" "とても遅い" "遅い" "OK" "普通" "速い" - "とても速い" + "非常に速い" + "%1$s / %2$s" "切断" "切断中..." "接続処理中..." @@ -101,6 +105,8 @@ "Wi-Fiはレベル2です。" "Wi-Fiはレベル3です。" "Wi-Fiの電波はフルです。" + "オープンネットワーク" + "保護されたネットワーク" "Android OS" "削除したアプリケーション" "削除されたアプリとユーザー" @@ -187,6 +193,7 @@ "Wi‑Fiローミングスキャンを常に許可する" "モバイルデータを常に ON にする" "テザリング時のハードウェア アクセラレーション" + "Bluetooth デバイスを名前なしで表示" "絶対音量を無効にする" "インバンド リンギングを有効にする" "Bluetooth AVRCP バージョン" @@ -202,6 +209,12 @@ "Bluetooth オーディオ LDAC コーデック: 再生音質" "Bluetooth オーディオ LDAC コーデックを選択:\n再生音質" "ストリーミング: %1$s" + "プライベート DNS" + "プライベート DNS モードを選択" + "OFF" + "日和見" + "プライベート DNS プロバイダのホスト名" + "DNS プロバイダのホスト名を入力" "ワイヤレスディスプレイ認証のオプションを表示" "Wi-Fiログレベルを上げて、Wi-Fi選択ツールでSSID RSSIごとに表示します" "ON にすると、Wi-Fi の電波強度が弱い場合は強制的にモバイルデータ接続に切り替わるようになります" @@ -226,6 +239,7 @@ "これらの設定は開発専用に設計されています。そのため端末や端末上のアプリが故障したり正常に動作しなくなったりするおそれがあります。" "USB経由のアプリを確認" "ADB/ADT経由でインストールされたアプリに不正な動作がないかを確認する" + "Bluetooth デバイスを名前なしで(MAC アドレスのみで)表示します" "リモート端末で音量に関する問題(音量が大きすぎる、制御できないなど)が発生した場合に、Bluetooth の絶対音量の機能を無効にする。" "スマートフォンの着信音が Bluetooth ヘッドセットで再生されることを許可する" "ローカルターミナル" @@ -345,12 +359,11 @@ "^1 - ^2(残り時間)" "%1$s - %2$s" "^1 - フル充電まで ^2" - "^1 - ^2" "不明" "充電中" "充電しています" "充電していません" - "充電していません" + "接続されていますが、現在、充電できません" @@ -377,7 +390,6 @@ "カスタム(%d)" "ヘルプとフィードバック" "メニュー" - "GMT" "デモモードで初期状態にリセットするには、パスワードを入力してください" "次へ" "パスワード必須" diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml index a0f10c83f08a172bf32ffb1b4b99dcd282932c62..7e36f86a465fea47aae3c5ebab3866052eea51f3 100644 --- a/packages/SettingsLib/res/values-ka/arrays.xml +++ b/packages/SettingsLib/res/values-ka/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "სისტემის არჩეულის გამოყენება (ნაგულისხმევი)" + "SBC" + "AAC" + "Qualcomm® aptX™ აუდიო" + "Qualcomm® aptX™ HD აუდიო" + "LDAC" + "არასავალდებულო კოდეკების ჩართვა" + "არასავალდებულო კოდეკების გათიშვა" + + + "სისტემის არჩეულის გამოყენება (ნაგულისხმევი)" + "SBC" + "AAC" + "Qualcomm® aptX™ აუდიო" + "Qualcomm® aptX™ HD აუდიო" + "LDAC" + "არასავალდებულო კოდეკების ჩართვა" + "არასავალდებულო კოდეკების გათიშვა" + "სისტემის არჩეულის გამოყენება (ნაგულისხმევი)" "44,1 კჰც" diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index dd70c65a7cee91a874a3605982df1d1988ba1673..db56f3a9c69348b106522eaf5a89e147d0c66357 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -40,12 +40,16 @@ "%1$s-ით დაკავშირებული" "ხელმისაწვდომია %1$s-ით" "დაკავშირებულია, ინტერნეტის გარეშე" + "წვდომის წერტილი დროებით გადატვირთულია" + "%1$s-ით დაკავშირებული" + "ხელმისაწვდომია %1$s-ით" "ძალიან ნელი" "ნელი" "კარგი" "საშუალო" "სწრაფი" "ძალიან სწრაფი" + "%1$s / %2$s" "კავშირი გაწყვეტილია" "მიმდინარეობს გათიშვა…" "მიმდინარეობს დაკავშირება…" @@ -101,6 +105,8 @@ "WiFi სიგნალი ორ ზოლზეა." "WiFi სიგნალი სამ ზოლზეა." "WiFi სიგნალი სრულია." + "ღია ქსელი" + "დაცული ქსელი" "Android OS" "აპების წაშლა" "წაშლილი აპები და მომხმარებლები" @@ -187,6 +193,7 @@ "Wi‑Fi Roam სკანირების მუდამ დაშვება" "მობილური ინტერნეტის ყოველთვის გააქტიურება" "ტეტერინგის აპარატურული აჩქარება" + "Bluetooth-მოწყობილობების ჩვენება სახელების გარეშე" "ხმის აბსოლუტური სიძლიერის გათიშვა" "ზოლსშიდა დარეკვის ჩართვა" "Bluetooth-ის AVRCP-ის ვერსია" @@ -202,6 +209,12 @@ "Bluetooth აუდიოს LDAC კოდეკის დაკვრის ხარისხი" "აირჩიეთ Bluetooth აუდიოს LDAC კოდეკის\nდაკვრის ხარისხი" "სტრიმინგი: %1$s" + "პირადი DNS" + "აირჩიეთ პირადი DNS რეჟიმი" + "გამორთული" + "ოპორტუნისტული" + "პირადი DNS პროვაიდერის სერვერის სახელი" + "შეიყვანეთ DNS პროვაიდერის სერვერის სახელი" "უსადენო ეკრანის სერტიფიცირების ვარიანტების ჩვენება" "Wi‑Fi-ს აღრიცხვის დონის გაზრდა, Wi‑Fi ამომრჩეველში ყოველ SSID RSSI-ზე ჩვენება" "ჩართვის შემთხვევაში, Wi‑Fi უფრო აქტიურად შეეცდება მობილურ ინტერნეტზე გადართვას, როცა Wi‑Fi სიგნალი სუსტია" @@ -226,6 +239,7 @@ "ამ პარამეტრების გამოყენება დასაშვებია მხოლოდ დეველოპერული მიზნებით. მათმა გამოყენებამ შეიძლება გამოიწვიოს თქვენი მოწყობილობის და მისი აპლიკაციების დაზიანება ან გაუმართავი მუშაობა." "აპლიკაციების USB-ს საშუალებით შემოწმება" "შეამოწმეთ, რამდენად უსაფრთხოა ADB/ADT-ის საშუალებით ინსტალირებული აპლიკაციები." + "Bluetooth-მოწყობილობები ნაჩვენები იქნება სახელების გარეშე (მხოლოდ MAC-მისამართები)" "გათიშავს Bluetooth-ის ხმის აბსოლუტური სიძლიერის ფუნქციას დისტანციურ მოწყობილობებზე ხმასთან დაკავშირებული ისეთი პრობლემების არსებობის შემთხვევაში, როგორიცაა ხმის დაუშვებლად მაღალი სიძლიერე ან კონტროლის შეუძლებლობა." "ტელეფონის ზარების Bluetooth-ყურსაცვამებზე დაკვრის დაშვება" "ადგილობრივი ტერმინალი" @@ -345,12 +359,11 @@ "^1 — დარჩენილია ^2" "%1$s - %2$s" "^1 — სრულ დატენვამდე დარჩა ^2" - "^1^2" "უცნობი" "იტენება" "იტენება" "არ იტენება" - "არ იტენება" + "მიერთებულია, დატენვა ამჟამად ვერ ხერხდება" "ბატარეა დატენილია" "იმართება ადმინისტრატორის მიერ" "ჩართულია ადმინისტრატორის მიერ" @@ -375,7 +388,6 @@ "მორგებული (%d)" "დახმარება და გამოხმაურება" "მენიუ" - "GMT" "შეიყვანეთ პაროლი დემო-რეჟიმში ქარხნულ მდგომარეობაზე დასაბრუნებლად" "შემდეგი" "საჭიროა პაროლი" diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml index 448cb14f3c09c8032d42451d18a8ee894a95c747..b0ba2ff20a02a531b9a23f9cc760d088814d7bac 100644 --- a/packages/SettingsLib/res/values-kk/arrays.xml +++ b/packages/SettingsLib/res/values-kk/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Жүйені таңдау (әдепкі)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудиокодегі" + "Qualcomm® aptX™ HD аудиокодегі" + "LDAC" + "Қосымша кодектерді қосу" + "Қосымша кодектерді өшіру" + + + "Жүйені таңдау (әдепкі)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудиокодегі" + "Qualcomm® aptX™ HD аудиокодегі" + "LDAC" + "Қосымша кодектерді қосу" + "Қосымша кодектерді өшіру" + "Жүйені таңдау (әдепкі)" "44,1 кГц" diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 27622a1c6492e842fda199d6271ea375a86170af..559b68cfed593cba5b0257d2ca1ec5a40af83970 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -40,12 +40,16 @@ "%1$s арқылы қосылған" "%1$s арқылы қолжетімді" "Қосылған, интернет жоқ" + "Кіру нүктесі уақытша бос емес" + "%1$s арқылы қосылды" + "%1$s арқылы қолжетімді" "Өте баяу" "Баяу" "Жарайды" "Орташа" "Жылдам" "Өте жылдам" + "%1$s / %2$s" "Ажыратылған" "Ажыратылуда…" "Жалғауда..." @@ -101,6 +105,8 @@ "Wi-Fi сигналы — екі жолақ." "Wi-Fi сигналы — үш жолақ." "Wi-Fi сигналы толық." + "Ашық желі" + "Қауіпсіз желі" "Android операциялық жүйесі" "Алынған қолданбалар" "Алынған қолданбалар және пайдаланушылар" @@ -187,6 +193,7 @@ "Wi‑Fi роумингін іздеулерге әрқашан рұқсат ету" "Мобильдік деректер әрқашан қосулы" "Тетерингтің аппараттық жеделдетуі" + "Атаусыз Bluetooth құрылғыларын көрсету" "Абсолютті дыбыс деңгейін өшіру" "Ішкі жолақтағы шылдырлауды қосу" "Bluetooth AVRCP нұсқасы" @@ -202,6 +209,12 @@ "Bluetooth LDAC аудиокодегі: ойнату сапасы" "Bluetooth LDAC аудиокодегін таңдау:\nойнату сапасы" "Трансляция: %1$s" + "Жеке DNS" + "Жеке DNS режимін таңдаңыз" + "Өшіру" + "Кездейсоқ" + "Жеке DNS провайдерінің хост атауы" + "DNS провайдерінің хост атауын енгізіңіз" "Сымсыз дисплей растау опцияларын көрсету" "Wi‑Fi жур. тір. дең. арт., Wi‑Fi желісін таңдағышта әр SSID RSSI бойынша көрсету" "Wi‑Fi сигналы әлсіз болғанда, деректер байланысы мәжбүрлі түрде мобильдік желіге ауысады" @@ -226,6 +239,7 @@ "Бұл параметрлер жетілдіру мақсатында ғана қолданылады. Олар құрылғыңыз бен қолданбаларыңыздың бұзылуына немесе әдеттен тыс әрекеттерге себеп болуы мүмкін." "USB арқылы орнатылған қолданбаларды растау" "ADB/ADT арқылы орнатылған қолданбалардың залалды болмауын тексеру." + "Атаусыз Bluetooth құрылғылары (тек MAC мекенжайымен) көрсетіледі" "Қолайсыз қатты дыбыс деңгейі немесе басқарудың болмауы сияқты қашықтағы құрылғыларда дыбыс деңгейімен мәселелер жағдайында Bluetooth абсолютті дыбыс деңгейі функциясын өшіреді." "Телефондағы қоңырау әуендерінің Bluetooth құлақаспабында ойнатылуына мүмкіндік беру" "Жергілікті терминал" @@ -345,12 +359,11 @@ "^1 - ^2 қалды" "%1$s - %2$s" "^1 – толық зарядталғанға дейін ^2" - "^1 - ^2" "Белгісіз" "Зарядталуда" "зарядталуда" "Зарядталу орындалып жатқан жоқ" - "Зарядталып тұрған жоқ" + "Қосылған, зарядталмайды" "Толық" "Әкімші басқарады" "Әкімші қосқан" @@ -375,7 +388,6 @@ "Арнаулы (%d)" "Анықтама және пікір" "Mәзір" - "GMT" "Демо режимде зауыттық мәндерге қайтару үшін құпия сөзді енгізу" "Келесі" "Құпия сөз қажет" diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml index 525f5aa83e6bbce256f9c627e3465b34896801e6..3cbdc37aff1cf217246ff2a68302ffc0fa746705 100644 --- a/packages/SettingsLib/res/values-km/arrays.xml +++ b/packages/SettingsLib/res/values-km/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "ប្រើ​ការ​ជ្រើសរើស​ប្រព័ន្ធ (លំនាំ​ដើម)" + "SBC" + "AAC" + "Qualcomm®សំឡេង aptX™" + "Qualcomm®សំឡេង aptX™ HD" + "LDAC" + "បើក​កូឌិក​ប្រភេទ​ស្រេច​ចិត្ត" + "បិទ​កូឌិក​ប្រភេទ​ស្រេច​ចិត្ត" + + + "ប្រើ​ការ​ជ្រើសរើស​ប្រព័ន្ធ (លំនាំ​ដើម)" + "SBC" + "AAC" + "Qualcomm®សំឡេង aptX™" + "Qualcomm®សំឡេង aptX™ HD" + "LDAC" + "បើក​កូឌិក​ប្រភេទ​ស្រេច​ចិត្ត" + "បិទ​កូឌិក​ប្រភេទ​ស្រេច​ចិត្ត" + "ប្រើ​ការ​ជ្រើសរើស​ប្រព័ន្ធ (លំនាំ​ដើម)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index 5f614f64502edfcfa670cc72c8148dce0a42e75f..836cc3414b75970dec5b6fc5c790b47ad1cad121 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -40,12 +40,16 @@ "បានភ្ជាប់តាមរយៈ %1$s" "មានតាមរយៈ %1$s" "បានភ្ជាប់ ប៉ុន្តែគ្មានអ៊ីនធឺណិតទេ" + "ចំណុចចូលប្រើពេញជាបណ្តោះអាសន្ន" + "បានភ្ជាប់តាមរយៈ %1$s" + "មានតាមរយៈ %1$s" "យឺតណាស់" "យឺត" "យល់ព្រម" "មធ្យម" "លឿន" "លឿន​ណាស់" + "%1$s / %2$s" "បាន​ផ្ដាច់" "កំពុង​ផ្ដាច់…" "កំពុង​ត​ភ្ជាប់​…" @@ -101,6 +105,8 @@ "Wifi ពីរកាំ" "Wifi បីកាំ" "សេវា Wifi ពេញ" + "បើក​បណ្ដាញ" + "បណ្តាញ​ដែល​មានសុវត្ថិភាព" "ប្រព័ន្ធ​ប្រតិបត្តិការ Android" "កម្មវិធី​ដែល​បាន​លុប" "បាន​លុប​កម្មវិធី និង​អ្នកប្រើ" @@ -187,6 +193,7 @@ "តែងតែ​អនុញ្ញាត​​​ការវិភាគ​រ៉ូម​វ៉ាយហ្វាយ" "ទិន្នន័យទូរសព្ទចល័តដំណើរការជានិច្ច" "ការ​បង្កើនល្បឿន​ផ្នែករឹងសម្រាប់​ការភ្ជាប់" + "បង្ហាញ​ឧបករណ៍​ប្ល៊ូធូស​គ្មានឈ្មោះ" "បិទកម្រិតសំឡេងលឺខ្លាំង" "បើក​ការ​រោទ៍​ក្នុងបណ្តាញ" "កំណែប្ល៊ូធូស AVRCP" @@ -202,6 +209,12 @@ "កូឌិកប្រភេទ LDAC នៃសំឡេង​ប៊្លូធូស៖ គុណភាព​ចាក់​សំឡេង" "ជ្រើសរើស​កូឌិក​ប្រភេទ​ LDAC នៃសំឡេង​ប៊្លូធូស៖\nគុណភាព​ចាក់​សំឡេង" "កំពុង​ចាក់៖ %1$s" + "DNS ឯកជន" + "ជ្រើសរើសមុខងារ DNS ឯកជន" + "បិទ" + "Opportunistic" + "ឈ្មោះម៉ាស៊ីនក្រុមហ៊ុនផ្ដល់សេវា DNS ឯកជន" + "បញ្ចូលឈ្មោះម៉ាស៊ីនរបស់ក្រុមហ៊ុនផ្ដល់សេវា DNS" "បង្ហាញ​ជម្រើស​សម្រាប់​វិញ្ញាបនបត្រ​បង្ហាញ​ឥត​ខ្សែ" "បង្កើនកម្រិតកំណត់ហេតុវ៉ាយហ្វាយបង្ហាញក្នុង SSID RSSI ក្នុងកម្មវិធីជ្រើស​វ៉ាយហ្វាយ" "នៅពេលដែលបើក នោះ Wi‑Fi នឹងផ្តល់ការតភ្ជាប់ទិន្នន័យយ៉ាងគំហុកទៅបណ្តាញទូរសព្ទចល័ត នៅពេលរលកសញ្ញា Wi‑Fi ចុះខ្សោយ។" @@ -226,6 +239,7 @@ "ការ​កំណត់​ទាំង​នេះ​សម្រាប់​តែ​ការ​ប្រើ​ក្នុង​ការ​អភិវឌ្ឍ​ប៉ុណ្ណោះ។ ពួក​វា​អាច​ធ្វើ​ឲ្យ​ឧបករណ៍ និង​កម្មវិធី​របស់​អ្នក​ខូច ឬ​ដំណើរ​មិន​ត្រឹមត្រូវ។" "ផ្ទៀងផ្ទាត់​កម្មវិធី​តាម​យូអេសប៊ី" "ពិនិត្យ​កម្មវិធី​បាន​ដំឡើង​តាម​រយៈ ADB/ADT សម្រាប់​ឥរិយាបថ​ដែល​គ្រោះ​ថ្នាក់។" + "​ឧបករណ៍​ប្ល៊ូធូសគ្មានឈ្មោះ​ (អាសយដ្ឋាន MAC តែប៉ុណ្ណោះ) នឹង​បង្ហាញ" "បិទលក្ខណៈពិសេសកម្រិតសំឡេងលឺខ្លាំងពេលភ្ជាប់ប៊្លូធូសក្នុងករណីមានបញ្ហាជាមួយឧបករណ៍បញ្ជាពីចម្ងាយ ដូចជាកម្រិតសំឡេងលឺខ្លាំងដែលមិនអាចទទួលយកបាន ឬខ្វះការគ្រប់គ្រង។" "អនុញ្ញាត​ឲ្យ​សំឡេង​រោទ៍​នៅ​លើ​ទូរសព្ទ​បញ្ចេញសំឡេង​តាម​រយៈ​កាស​ប្ល៊ូធូស" "ស្ថានីយ​មូលដ្ឋាន" @@ -345,12 +359,11 @@ "^1 - នៅសល់ ^2" "%1$s - %2$s" "^1 - ^2 រហូតដល់សាកពេញ" - "^1 - ^2" "មិន​ស្គាល់" "កំពុងបញ្ចូល​ថ្ម" "កំពុង​សាក​ថ្ម" "មិនកំពុង​បញ្ចូល​ថ្ម" - "មិន​បញ្ចូលថ្ម" + "ដោត​សាកថ្ម​រួចហើយ ប៉ុន្តែ​​សាកថ្ម​មិន​ចូលទេឥឡូវនេះ" "ពេញ" "គ្រប់គ្រងដោយអ្នកគ្រប់គ្រង" "បើកដោយ​អ្នកគ្រប់គ្រង" @@ -375,7 +388,6 @@ "ផ្ទាល់ខ្លួន (%d)" "ជំនួយ និងមតិស្ថាបនា" "ម៉ឺនុយ" - "GMT" "បញ្ចូល​ពាក្យ​សម្ងាត់ ដើម្បី​កំណត់ឧបករណ៍​​ឡើង​វិញ​ដូចពេលចេញ​ពី​រោងចក្រ នៅក្នុង​មុខងារ​សាកល្បង" "បន្ទាប់" "តម្រូវ​ឲ្យ​មានពាក្យ​សម្ងាត់" diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml index 1e2e7ba96952007e42b1ef4f40c87edfd5dd32b5..455b0a9e1a63d1c997fd4ce427fc1dfb87db9843 100644 --- a/packages/SettingsLib/res/values-kn/arrays.xml +++ b/packages/SettingsLib/res/values-kn/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)" + "SBC" + "AAC" + "Qualcomm® aptX™ ಆಡಿಯೋ" + "Qualcomm® aptX™ HD ಆಡಿಯೋ" + "LDAC" + "ಐಚ್ಛಿಕ ಕೋಡೆಕ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" + "ಐಚ್ಛಿಕ ಕೋಡೆಕ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + + + "ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)" + "SBC" + "AAC" + "Qualcomm® aptX™ ಆಡಿಯೋ" + "Qualcomm® aptX™ HD ಆಡಿಯೋ" + "LDAC" + "ಐಚ್ಛಿಕ ಕೋಡೆಕ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ" + "ಐಚ್ಛಿಕ ಕೋಡೆಕ್‌ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" + "ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index 7148af5c4d67819bfdb8c4ea0a8ca7f40f8cadf3..cf049aeeca286c913de40b6a4bca50d19a9480f9 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -40,12 +40,16 @@ "%1$s ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿದೆ" "%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ" "ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ" + "ಪ್ರವೇಶ ಕೇಂದ್ರ ತಾತ್ಕಾಲಿಕವಾಗಿ ಭರ್ತಿಯಾಗಿದೆ" + "%1$s ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿದೆ" + "%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ" "ತುಂಬಾ ನಿಧಾನವಾಗಿದೆ" "ನಿಧಾನ" "ಸರಿ" "ಮಧ್ಯಮ" "ವೇಗ" "ತುಂಬಾ ವೇಗವಾಗಿದೆ" + "%1$s / %2$s" "ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ" "ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ..." "ಸಂಪರ್ಕಗೊಳಿಸಲಾಗುತ್ತಿದೆ..." @@ -101,6 +105,8 @@ "ವೈಫೈ ಎರಡು ಪಟ್ಟಿಗಳು." "ವೈಫೈ ಮೂರು ಪಟ್ಟಿಗಳು." "ವೈಫೈ ಸಿಗ್ನಲ್‌‌ ಪೂರ್ತಿ ಇದೆ." + "ನೆಟ್‌ವರ್ಕ್‌ ತೆರೆಯಿರಿ" + "ಸುರಕ್ಷಿತ ನೆಟ್‌ವರ್ಕ್" "Android OS" "ತೆಗೆದುಹಾಕಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು" "ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ" @@ -187,6 +193,7 @@ "ವೈ-ಫೈ ರೋಮ್ ಸ್ಕ್ಯಾನ್‌ಗಳನ್ನು ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ" "ಮೊಬೈಲ್ ಡೇಟಾ ಯಾವಾಗಲೂ ಸಕ್ರಿಯ" "ಹಾರ್ಡ್‌ವೇರ್‌ನ ವೇಗವರ್ಧನೆಯನ್ನು ಟೆಥರಿಂಗ್ ಮಾಡಿ" + "ಹೆಸರುಗಳಿಲ್ಲದ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ತೋರಿಸಿ" "ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್‌ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ" "ಇನ್ ಬ್ಯಾಂಡ್ ರಿಂಗಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ" "ಬ್ಲೂಟೂತ್ AVRCP ಆವೃತ್ತಿ" @@ -202,6 +209,12 @@ "ಬ್ಲೂಟೂತ್‌ ಆಡಿಯೊ LDAC ಕೋಡೆಕ್: ಪ್ಲೇಬ್ಯಾಕ್ ಗುಣಮಟ್ಟ" "ಬ್ಲೂಟೂತ್‌ ಆಡಿಯೊ LDAC ಕೋಡೆಕ್:\nಪ್ಲೇಬ್ಯಾಕ್‌ ಗುಣಮಟ್ಟ ಆಯ್ಕೆ ಮಾಡಿ" "ಸ್ಟ್ರೀಮಿಂಗ್: %1$s" + "ಖಾಸಗಿ DNS" + "ಖಾಸಗಿ DNS ಮೋಡ್ ಆಯ್ಕೆಮಾಡಿ" + "ಆಫ್" + "ಅವಕಾಶವಾದಿ" + "ಖಾಸಗಿ DNS ಪೂರೈಕೆದಾರರ ಹೋಸ್ಟ್‌ಹೆಸರು" + "DNS ಪೂರೈಕೆದಾರರ ಹೋಸ್ಟ್‌ಹೆಸರನ್ನು ನಮೂದಿಸಿ" "ವೈರ್‌ಲೆಸ್‌‌‌ ಪ್ರದರ್ಶನ ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಆಯ್ಕೆಗಳನ್ನು ತೋರಿಸು" "Wi‑Fi ಲಾಗಿಂಗ್ ಮಟ್ಟನ್ನು ಹೆಚ್ಚಿಸಿ, Wi‑Fi ಆಯ್ಕೆಯಲ್ಲಿ ಪ್ರತಿಯೊಂದು SSID RSSI ತೋರಿಸಿ" "ಇದು ಸಕ್ರಿಯಗೊಂಡರೆ, ವೈ-ಫೈ ಸಿಗ್ನಲ್ ದುರ್ಬಲವಾಗಿದ್ದಾಗ, ಮೊಬೈಲ್‌ಗೆ ಡೇಟಾ ಸಂಪರ್ಕವನ್ನು ಹಸ್ತಾಂತರಿಸುವಲ್ಲಿ ವೈ-ಫೈ ಹೆಚ್ಚು ಆಕ್ರಮಣಕಾರಿಯಾಗಿರುತ್ತದೆ" @@ -226,6 +239,7 @@ "ಈ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಅಭಿವೃದ್ಧಿಯ ಬಳಕೆಗೆ ಮಾತ್ರ. ಅವುಗಳು ನಿಮ್ಮ ಸಾಧನ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌‌ಗಳಿಗೆ ಧಕ್ಕೆ ಮಾಡಬಹುದು ಅಥವಾ ಅವು ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರುವಂತೆ ಮಾಡಬಹುದು." "USB ಮೂಲಕ ಆಪ್‌ ಪರಿಶೀಲಿಸಿ" "ಹಾನಿಮಾಡುವಂತಹ ವರ್ತನೆಗಾಗಿ ADB/ADT ಮೂಲಕ ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ." + "ಹೆಸರುಗಳಿಲ್ಲದ (ಕೇವಲ MAC ವಿಳಾಸಗಳು ಮಾತ್ರ) ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ" "ರಿಮೋಟ್ ಸಾಧನಗಳೊಂದಿಗೆ ಒಪ್ಪಲಾಗದ ಜೋರಾದ ವಾಲ್ಯೂಮ್ ಅಥವಾ ನಿಯಂತ್ರಣದ ಕೊರತೆಯಂತಹ ವಾಲ್ಯೂಮ್ ಸಮಸ್ಯೆಗಳಂತಹ ಸಂದರ್ಭದಲ್ಲಿ ಬ್ಲೂಟೂತ್ ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು." "ಫೋನ್‌ನ ರಿಂಗ್‌ಟೋನ್‌ಗಳನ್ನು ಬ್ಲೂಟೂತ್ ಹೆಡ್‌ಸೆಟ್‌ಗಳಲ್ಲಿ ಪ್ಲೇ ಮಾಡಲು ಅನುಮತಿ ನೀಡಿ" "ಸ್ಥಳೀಯ ಟರ್ಮಿನಲ್" @@ -345,12 +359,11 @@ "^1 - ^2 ಉಳಿದಿದೆ" "%1$s - %2$s" "^1 - ಸಂಪೂರ್ಣ ಚಾರ್ಜ್ ಆಗಲು ^2" - "^1 - ^2" "ಅಪರಿಚಿತ" "ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ" "ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ" "ಚಾರ್ಜ್‌ ಆಗುತ್ತಿಲ್ಲ" - "ಚಾರ್ಜ್ ಆಗುತ್ತಿಲ್ಲ" + "ಪ್ಲಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ, ಇದೀಗ ಚಾರ್ಜ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ" "ಭರ್ತಿ" "ನಿರ್ವಾಹಕರ ಮೂಲಕ ನಿಯಂತ್ರಿಸಲಾಗಿದೆ" "ನಿರ್ವಾಹಕರು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ" @@ -375,7 +388,6 @@ "ಕಸ್ಟಮ್ (%d)" "ಸಹಾಯ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ" "ಮೆನು" - "GMT" "ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್‌ಗೆ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ" "ಮುಂದೆ" "ಪಾಸ್‌ವರ್ಡ್ ಅಗತ್ಯವಿದೆ" diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml index 8bc794f20cc095d019ff78d73d3495c8c3d4cc10..3dbf759f2f16dd773c802dd0d4995b7c9cc1fb74 100644 --- a/packages/SettingsLib/res/values-ko/arrays.xml +++ b/packages/SettingsLib/res/values-ko/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "시스템 설정 사용(기본)" + "SBC" + "AAC" + "Qualcomm® aptX™ 오디오" + "Qualcomm® aptX™ HD 오디오" + "LDAC" + "선택사항 코덱 사용 설정" + "선택사항 코덱 사용 중지" + + + "시스템 설정 사용(기본)" + "SBC" + "AAC" + "Qualcomm® aptX™ 오디오" + "Qualcomm® aptX™ HD 오디오" + "LDAC" + "선택사항 코덱 사용 설정" + "선택사항 코덱 사용 중지" + "시스템 설정 사용(기본)" "44.1kHz" diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index b7cf51577f4f06948aa49421990032f58afae041..328b0758dedc5fc7346be72dfe89870f77e6cd3c 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -40,12 +40,16 @@ "%1$s을(를) 통해 연결됨" "%1$s을(를) 통해 사용 가능" "인터넷을 사용하지 않고 연결됨" + "액세스 포인트가 일시적으로 가득 참" + "%1$s을(를) 통해 연결됨" + "%1$s을(를) 통해 사용 가능" "매우 느림" "느림" "확인" "보통" "빠름" "매우 빠름" + "%1$s/%2$s" "연결 끊김" "연결을 끊는 중…" "연결 중…" @@ -101,6 +105,8 @@ "Wi-Fi 신호 막대가 두 개입니다." "Wi-Fi 신호 막대가 세 개입니다." "Wi-Fi 신호가 강합니다." + "개방형 네트워크" + "보안 네트워크" "Android OS" "삭제된 앱" "삭제된 앱 및 사용자" @@ -187,6 +193,7 @@ "Wi‑Fi 로밍 스캔 항상 허용" "항상 모바일 데이터 활성화" "테더링 하드웨어 가속" + "이름이 없는 블루투스 기기 표시" "절대 볼륨 사용 안함" "대역 내 벨소리 사용 설정" "블루투스 AVRCP 버전" @@ -202,6 +209,12 @@ "블루투스 오디오 LDAC 코덱: 재생 품질" "블루투스 오디오 LDAC 코덱 선택:\n재생 품질" "스트리밍: %1$s" + "비공개 DNS" + "비공개 DNS 모드 선택" + "사용 안함" + "기회주의적" + "비공개 DNS 제공업체 호스트 이름" + "DNS 제공업체의 호스트 이름 입력" "무선 디스플레이 인증서 옵션 표시" "Wi‑Fi 로깅 수준을 높이고, Wi‑Fi 선택도구에서 SSID RSSI당 값을 표시합니다." "사용 설정하면 Wi-Fi 신호가 약할 때 데이터 연결을 Wi-Fi에서 모바일 네트워크로 더욱 적극적으로 핸드오버합니다." @@ -226,6 +239,7 @@ "이 설정은 개발자용으로만 설계되었습니다. 이 설정을 사용하면 기기 및 애플리케이션에 예기치 않은 중단이나 오류가 발생할 수 있습니다." "USB를 통해 설치된 앱 확인" "ADB/ADT을 통해 설치된 앱에 유해한 동작이 있는지 확인" + "이름이 없이 MAC 주소만 있는 블루투스 기기가 표시됩니다." "참기 어려울 정도로 볼륨이 크거나 제어가 되지 않는 등 원격 기기에서 볼륨 문제가 발생할 경우 블루투스 절대 볼륨 기능을 사용 중지합니다." "휴대전화의 벨소리가 블루투스 헤드셋에서 재생되도록 허용" "로컬 터미널" @@ -345,12 +359,11 @@ "^1 - ^2 남음" "%1$s - %2$s" "^1 - 충전 완료까지 ^2 남음" - "^1 - ^2" "알 수 없음" "충전 중" "충전 중" "충전 안함" - "충전 안함" + "전원이 연결되었지만 현재 충전할 수 없음" "충전 완료" "관리자가 제어" "관리자가 사용 설정함" @@ -375,7 +388,6 @@ "맞춤(%d)" "고객센터" "메뉴" - "GMT" "데모 모드에서 초기화하려면 비밀번호 입력" "다음" "비밀번호 입력 필요" diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml index 30c13b2f52b004690cce8e2a0deba8b6b092a4b4..721bfaa7ac54ff60477e8eb6efbdf4e10dba91fa 100644 --- a/packages/SettingsLib/res/values-ky/arrays.xml +++ b/packages/SettingsLib/res/values-ky/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Тутум тандаганды колдонуу (демейки)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Кошумча кодекстер иштетилсин" + "Кошумча кодекстер өчүрүлсүн" + + + "Тутум тандаганды колдонуу (демейки)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Кошумча кодекстер иштетилсин" + "Кошумча кодекстер өчүрүлсүн" + "Тутум тандаганды колдонуу (демейки)" "44,1 кГц" diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 701c90fdd6ceac5868e350d057846b34e054f856..c4bc32aaa458fabff6db8a0ed3fee530b3d59bb5 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -40,12 +40,16 @@ "%1$s аркылуу жеткиликтүү" "%1$s аркылуу жеткиликтүү" "Туташып турат, Интернет жок" + "Туташуу түйүнү убактылуу толуп калды" + "%1$s аркылуу туташты" + "%1$s аркылуу иштейт" "Өтө жай" "Жай" "Жарайт" "Орто" "Ылдам" "Абдан ылдам" + "%1$s/%2$s" "Ажыратылган" "Ажыратылууда…" "Туташууда…" @@ -101,6 +105,8 @@ "Wifi: эки таякча." "Wifi: үч таякча." "Wifi: күчтүү сигнал." + "Ачык тармак" + "Коопсуз тармак" "Android OS" "Алынып салынган колдонмолор" "Өчүрүлгөн колдонмолор жана колдонуучулар" @@ -187,6 +193,7 @@ "Wi-Fi Роуминг Скандоо мүмкүнчүлүгүнө ар дайым уруксат берилсин" "Мобилдик Интернет иштей берсин" "Тетерингдин иштешин тездетүү" + "Аталышсыз Bluetooth түзмөктөрү көрсөтүлсүн" "Үндүн абсолюттук деңгээли өчүрүлсүн" "Канал аралык чалууну иштетүү" "Bluetooth AVRCP версиясы" @@ -202,6 +209,12 @@ "Bluetooth аудио LDAC кодеги: Ойнотуу сапаты" "Bluetooth аудио LDAC кодегин тандаңыз:\nОйнотуу сапаты" "Трансляция: %1$s" + "Купуя DNS" + "Купуя DNS режимин тандаңыз" + "Өчүк" + "Ийкемдүү" + "Купуя DNS түйүндүн аталышы" + "DNS түйүндүн аталышын киргизиңиз" "Зымсыз дисплейди сертификатто мүмкүнчүлүктөрүн көргөзүү" "Wi-Fi Кармагычта Wi‑Fi протокол деңгээлин жогорулатуу жана ар бир SSID RSSI үчүн көрсөтүү." "Иштетилсе, Wi-Fi байланышы үзүл-кесил болуп жатканда, Wi-Fi тармагы туташууну мобилдик Интернетке өжөрлүк менен өткөрүп берет" @@ -226,6 +239,7 @@ "Бул орнотуулар өндүрүүчүлөр үчүн гана берилген. Булар түзмөгүңүздүн колдонмолорун бузулушуна же туура эмес иштешине алып келиши мүмкүн." "USB аркылуу келген колдонмолорду ырастоо" "ADB/ADT аркылуу орнотулган колдонмолорду зыянкечтикке текшерүү." + "Аталышсыз Bluetooth түзмөктөрү (MAC даректери менен гана) көрсөтүлөт" "Алыскы түзмөктөр өтө катуу добуш чыгарып же көзөмөлдөнбөй жатса Bluetooth \"Үндүн абсолюттук деңгээли\" функциясын өчүрөт." "Телефондогу рингтондор Bluetooth гарнитурасында ойнотулсун" "Жергиликтүү терминал" @@ -345,12 +359,11 @@ "^1 - ^2 калды" "%1$s - %2$s" "^1^2 кийин толук кубатталат" - "^1 - ^2" "Белгисиз" "Кубатталууда" "кубатталууда" "Кубат алган жок" - "Кубатталган жок" + "Сайылып турат, учурда кубаттоо мүмкүн эмес" "Толук" "Администратор тарабынан көзөмөлдөнөт" "Администратор иштетип койгон" @@ -375,7 +388,6 @@ "Ыңгайлаштырылган (%d)" "Жардам жана пикир билдирүү" "Меню" - "GMT" "Демо режиминде демейки жөндөөлөргө кайтаруу үчүн сырсөздү киргизиңиз" "Кийинки" "Сырсөз талап кылынат" diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml index 73fe616252a5eb9710ca18ce426981f96d2d0dc0..6aa8ffca0c96ca18e3f67a00ab657ec7dd82fc77 100644 --- a/packages/SettingsLib/res/values-lo/arrays.xml +++ b/packages/SettingsLib/res/values-lo/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Use System Selection (Default)" + "SBC" + "AAC" + "ສຽງ Qualcomm® aptX™" + "ສຽງ Qualcomm® aptX™ HD" + "LDAC" + "ເປີດໃຊ້ Codecs ແບບເສີມ" + "ປິດການໃຊ້ Codecs ແບບເສີມ" + + + "Use System Selection (Default)" + "SBC" + "AAC" + "ສຽງ Qualcomm® aptX™" + "ສຽງ Qualcomm® aptX™ HD" + "LDAC" + "ເປີດໃຊ້ Codecs ແບບເສີມ" + "ປິດການໃຊ້ Codecs ແບບເສີມ" + "Use System Selection (Default)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 88bdc41002d0ff00652fd3aab1b843840575e4c7..e18c989defe04217d024e6888963ac13536decaa 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -40,12 +40,16 @@ "​ເຊື່ອມຕໍ່​ຜ່ານ %1$s ​ແລ້ວ" "ມີ​ໃຫ້​ຜ່ານ %1$s" "​ເຊື່ອມ​ຕໍ່​ແລ້ວ,​ ບໍ່​ມີ​ອິນ​ເຕີ​ເນັດ" + "ຈຸດການເຂົ້າເຖິງເຕັມຊົ່ວຄາວ" + "ເຊື່ອມຕໍ່ຜ່ານ %1$s ແລ້ວ" + "ໃຊ້ໄດ້ຜ່ານ %1$s" "ຊ້າຫຼາຍ" "ຊ້າ" "ຕົກລົງ" "ປານກາງ" "ໄວ" "ໄວຫຼາຍ" + "%1$s / %2$s" "ຕັດການເຊື່ອມຕໍ່ແລ້ວ" "ກຳລັງຢຸດການເຊື່ອມຕໍ່..." "ກຳລັງເຊື່ອມຕໍ່..." @@ -101,6 +105,8 @@ "ສັນຍານ Wi-Fi ສອງຂີດ." "Wifi ສາມຂີດ." "ສັນຍານ Wi-Fi ເຕັມ" + "ເຄືອຂ່າຍເປີດ" + "ເຄືອຂ່າຍເຂົ້າລະຫັດ" "Android OS" "ແອັບຯທີ່ຖືກລຶບອອກແລ້ວ" "ລຶບແອັບຯ ແລະຜູ່ໃຊ້ແລ້ວ" @@ -187,6 +193,7 @@ "ອະ​ນຸ​ຍາດ​ການ​ສະ​ແກນ​ການ​ໂຣມ Wi‑Fi ​ສະ​ເໝີ" "ເປີດໃຊ້ອິນເຕີເນັດມືຖືຕະຫຼອດເວລາ" "ເປີດໃຊ້ການເລັ່ງຄວາມໄວດ້ວຍຮາດແວ" + "ສະແດງອຸປະກອນ Bluetooth ທີ່ບໍ່ມີຊື່" "ປິດໃຊ້ລະດັບສຽງສົມບູນ" "ເປີດສຽງເຕືອນແບບອິນແບນ" "ເວີຊັນ Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Bluetooth Audio LDAC Codec: Playback Quality" "Select Bluetooth Audio LDAC Codec:\nPlayback Quality" "Streaming: %1$s" + "DNS ສ່ວນຕົວ" + "ເລືອກໂໝດ DNS ສ່ວນຕົວ" + "ປິດ" + "ກ່ຽວກັບໂອກາດ" + "ຊື່ໂຮສຜູ້ໃຫ້ບໍລິການ DNS ສ່ວນຕົວ" + "ລະບຸຊື່ໂຮສຂອງຜູ້ໃຫ້ບໍລິການ DNS" "ສະແດງໂຕເລືອກສຳລັບການສະແດງການຮັບຮອງລະບົບໄຮ້ສາຍ" "ເພີ່ມ​ລະ​ດັບ​ການ​ເກັບ​ປະ​ຫວັດ Wi‑Fi, ສະ​ແດງ​ຕໍ່ SSID RSSI ​ໃນ​ Wi‑Fi Picker" "ເມື່ອເປີດໃຊ້ແລ້ວ, Wi-Fi ຈະສົ່ງຜ່ານການເຊື່ອມຕໍ່ຂໍ້ມູນໄປຫາເຄືອຂ່າຍມືຖືເມື່ອສັນຍານ Wi-Fi ອ່ອນ" @@ -226,6 +239,7 @@ "ການ​ຕັ້ງຄ່າ​ເຫຼົ່ານີ້​ແມ່ນ​ມີ​ຈຸດປະສົງ​ເພື່ອ​ການ​ພັດທະນາ​ເທົ່ານັ້ນ. ພວກ​ມັນ​ສາມາດ​ເຮັດ​ໃຫ້​ອຸປະກອນ ແລະ​ແອັບພລິເຄຊັນ​ຂອງ​ທ່ານ​ຢຸດ​ເຮັດ​ວຽກ ຫຼື​ເຮັດ​ວຽກ​ຜິດປົກກະຕິ​ໄດ້." "ຢືນຢັນແອັບຯຜ່ານທາງ USB" "ກວດສອບແອັບຯທີ່ຕິດຕັ້ງແລ້ວຜ່ານທາງ ADB/ADT ເພື່ອກວດຫາພຶດຕິກຳທີ່ເປັນອັນຕະລາຍ." + "ຈະສະແດງອຸປະກອນ Bluetooth ທີ່ບໍ່ມີຊື່ (ທີ່ຢູ່ MAC ເທົ່ານັ້ນ)" "ປິດໃຊ້ຄຸນສົມບັດລະດັບສຽງສົມບູນຂອງ Bluetooth ໃນກໍລະນີເກີດບັນຫາລະດັບສຽງສົມບູນກັບອຸປະກອນທາງໄກ ເຊັ່ນວ່າ ລະດັບສຽງດັງເກີນຍອມຮັບໄດ້ ຫຼື ຄວບຄຸມບໍ່ໄດ້." "ເປີດໃຫ້ສຽງຣິງໂທນຢູ່ໂທລະສັບດັງໃນຫູຟັງ Bluetooth" "Terminal ໃນໂຕເຄື່ອງ" @@ -345,12 +359,11 @@ "^1 - ຍັງເຫຼືອ ^2" "%1$s - %2$s" "^1 - ^2 ຈົນກວ່າຈະສາກເຕັມ" - "^1 - ^2" "ບໍ່ຮູ້ຈັກ" "ກຳລັງສາກໄຟ" "ກຳລັງສາກໄຟ" "ບໍ່ໄດ້ສາກໄຟ" - "ບໍ່ໄດ້ສາກໄຟ" + "ສຽບສາຍແລ້ວ, ບໍ່ສາມາດສາກໄດ້ໃນຕອນນີ້" "ເຕັມ" "ຄວບຄຸມໂດຍຜູ້ເບິ່ງແຍງ" "ຜູ້ເບິ່ງແຍງລະບົບເປີດໃຫ້ໃຊ້ແລ້ວ" @@ -375,7 +388,6 @@ "ປັບແຕ່ງເອງ (%d)" "ຊ່ວຍເຫຼືອ & ຄຳຕິຊົມ" "ເມນູ" - "GMT" "Enter password to perform factory reset in demo mode" "ຕໍ່ໄປ" "​ຕ້ອງ​ໃສ່​ລະ​ຫັດ​ຜ່ານ" diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml index 99babf64cf43114dfdfe86fc475f4c1609ebf4f5..b4407ea728861ba543fb8e01aa83c83998c361bf 100644 --- a/packages/SettingsLib/res/values-lt/arrays.xml +++ b/packages/SettingsLib/res/values-lt/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Naudoti sistemos pasirink. (numatytasis)" + "SBC" + "AAC" + "Qualcomm® aptX™ garsas" + "Qualcomm® aptX™ HD garsas" + "LDAC" + "Įgalinti nebūtinus kodekus" + "Išjungti nebūtinus kodekus" + + + "Naudoti sistemos pasirink. (numatytasis)" + "SBC" + "AAC" + "Qualcomm® aptX™ garsas" + "Qualcomm® aptX™ HD garsas" + "LDAC" + "Įgalinti nebūtinus kodekus" + "Išjungti nebūtinus kodekus" + "Naudoti sistemos pasirink. (numatytasis)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 8ca0d369cf8f1f2983fdcdd8baea5ed5d3eb242d..0495237da28d8a572f30dca86887d33fcbadf4b7 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -40,12 +40,16 @@ "Prisijungta naudojant „%1$s“" "Pasiekiama naudojant „%1$s“" "Prisijungta, nėra interneto" + "Prieigos taškas laikinai visiškai užimtas" + "Prisijungta naudojant „%1$s“" + "Pasiekiama naudojant „%1$s“" "Labai lėtas" "Lėtas" "Gerai" "Vidutinis" "Greitas" "Labai greitas" + "%1$s / %2$s" "Atsijungęs (-usi)" "Atjungiama..." "Prisijungiama..." @@ -101,6 +105,8 @@ "Dvi „Wi-Fi“ signalo juostos." "Trys „Wi-Fi“ signalo juostos." "Stiprus „Wi-Fi“ signalas." + "Atviras tinklas" + "Saugus tinklas" "„Android“ OS" "Pašalintos programos" "Pašalintos programos ir naudotojai" @@ -187,6 +193,7 @@ "Visada leisti „Wi-Fi“ tarptiklinio ryšio nuskaitymą" "Mobiliojo ryšio duomenys visada suaktyvinti" "Įrenginio kaip modemo naudojimo aparatinės įrangos spartinimas" + "Rodyti „Bluetooth“ įrenginius be pavadinimų" "Išjungti didžiausią garsą" "Įgalinti diapazono skambėjimą" "„Bluetooth“ AVRCP versija" @@ -202,6 +209,12 @@ "„Bluetooth“ garso LDAC kodekas: atkūrimo kokybė" "Pasirinkite „Bluetooth“ garso LDAC kodeką:\natkūrimo kokybė" "Srautinis perdavimas: %1$s" + "Privatus DNS" + "Pasirinkite privataus DNS režimą" + "Išjungta" + "Oportunistinis" + "Privataus DNS teikėjo prieglobos serverio pavadinimas" + "Įveskite DNS teikėjo prieglobos serverio pavadinimą" "Rodyti belaidžio rodymo sertifikavimo parinktis" "Padidinti „Wi‑Fi“ įrašymo į žurnalą lygį, rodyti SSID RSSI „Wi-Fi“ rinkiklyje" "Jei ši parinktis įgalinta, „Wi‑Fi“ agresyviau perduos duomenų ryšiu į mobiliojo ryšio tinklą, kai „Wi‑Fi“ signalas silpnas" @@ -226,6 +239,7 @@ "Šie nustatymai skirti tik kūrėjams. Nustačius juos įrenginys ir jame naudojamos programos gali nustoti veikti arba veikti netinkamai." "Patvirtinti progr. naudojant USB" "Patikrinkite, ar programų, įdiegtų naudojant ADB / ADT, veikimas nėra žalingas." + "Bus rodomi „Bluetooth“ įrenginiai be pavadinimų (tik MAC adresai)" "Išjungiama „Bluetooth“ didžiausio garso funkcija, jei naudojant nuotolinio valdymo įrenginius kyla problemų dėl garso, pvz., garsas yra per didelis arba jo negalima tinkamai valdyti." "Leisti telefono skambėjimo tonus per „Bluetooth“ ausines" "Vietinis terminalas" @@ -345,12 +359,11 @@ "^1 – liko ^2" "%1$s%2$s" "^1^2 iki visiško įkrovimo" - "^1^2" "Nežinomas" "Kraunasi..." "įkraunama" "Nekraunama" - "Nekraunama" + "Įjungta į maitinimo lizdą, bet šiuo metu įkrauti neįmanoma" "Visiškai įkrautas" "Valdo administratorius" "Įgalino administratorius" @@ -375,7 +388,6 @@ "Tinkintas (%d)" "Pagalba ir atsiliepimai" "Meniu" - "GMT" "Įv. slapt. ir atk. gam. nust. dem. rež." "Kitas" "Būtina nurodyti slaptažodį" diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml index 10f94d0e66f7df92ba07006f2b936d52eb2094e9..09fc6136b73ea96a3151c8db107cb493e1d9adc0 100644 --- a/packages/SettingsLib/res/values-lv/arrays.xml +++ b/packages/SettingsLib/res/values-lv/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Sistēmas atlases izmantošana (nokl.)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Iespējot neobligātos kodekus" + "Atspējot neobligātos kodekus" + + + "Sistēmas atlases izmantošana (nokl.)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Iespējot neobligātos kodekus" + "Atspējot neobligātos kodekus" + "Sistēmas atlases izmantošana (nokl.)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index 518eb33753e146a729147a971a8353797f11b6c4..3a647eb225408afafe664f828ab108e4cc56f66e 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -40,12 +40,16 @@ "Savienots, izmantojot %1$s" "Pieejams, izmantojot %1$s" "Savienots, nav piekļuves internetam" + "Piekļuves punkts īslaicīgi ir pilns" + "Savienojums izveidots, izmantojot %1$s" + "Pieejams, izmantojot %1$s" "Ļoti lēns" "Lēns" "Labi" "Vidējs" "Ātrs" "Ļoti ātrs" + "%1$s / %2$s" "Atvienots" "Notiek atvienošana..." "Notiek savienojuma izveide…" @@ -101,6 +105,8 @@ "Wi-Fi: divas joslas" "Wi-Fi: trīs joslas" "Pilna piekļuve Wi-Fi signālam" + "Atvērts tīkls" + "Drošs tīkls" "Android OS" "Noņemtās lietotnes" "Noņemtās lietotnes un lietotāji" @@ -187,6 +193,7 @@ "Vienmēr atļaut Wi‑Fi meklēšanu" "Vienmēr aktīvs mobilo datu savienojums" "Paātrināta aparatūras darbība piesaistei" + "Rādīt Bluetooth ierīces bez nosaukumiem" "Atspējot absolūto skaļumu" "Iespējot iekšjoslas zvanīšanu" "Bluetooth AVRCP versija" @@ -202,6 +209,12 @@ "Bluetooth audio LDAC kodeks: atskaņošanas kvalitāte" "Atlasīt Bluetooth audio LDAC kodeku:\natskaņošanas kvalitāte" "Straumēšana: %1$s" + "Privāts DNS" + "Atlasiet privāta DNS režīmu" + "Izslēgts" + "Oportūnistisks" + "Privātā DNS pakalpojumu sniedzēja saimniekdatora nosaukums" + "Ievadiet DNS pakalpojumu sniedzēja saimniekdatora nosaukumu" "Rādīt bezvadu attēlošanas sertifikācijas iespējas" "Palieliniet Wi‑Fi reģistrēšanas līmeni; rādīt katram SSID RSSI Wi‑Fi atlasītājā." "Ja opcija ir iespējota un Wi‑Fi signāls ir vājš, datu savienojuma pāreja no Wi-Fi uz mobilo tīklu tiks veikta agresīvāk." @@ -226,6 +239,7 @@ "Šie iestatījumi ir paredzēti tikai izstrādei. To dēļ var tikt pārtraukta vai traucēta ierīces un lietojumprogrammu darbība." "Verificēt, ja instalētas no USB" "Pārbaudīt, vai lietotņu, kuru instalēšanai izmantots ADB/ADT, darbība nav kaitīga." + "Tiks parādītas Bluetooth ierīces bez nosaukumiem (tikai MAC adreses)." "Atspējo Bluetooth absolūtā skaļuma funkciju skaļuma problēmu gadījumiem attālajās ierīcēs, piemēram, ja ir nepieņemami liels skaļums vai nav iespējas kontrolēt skaļumu." "Atļaut tālrunī esošo zvana signālu atskaņošanu Bluetooth austiņās" "Vietējā beigu lietotne" @@ -345,12 +359,11 @@ "^1 — atlicis: ^2" "%1$s — %2$s" "^1 - ^2, kamēr pilnībā uzlādēts" - "^1 — ^2" "Nezināms" "Uzlāde" "notiek uzlāde" "Nenotiek uzlāde" - "Nenotiek uzlāde" + "Pievienots, taču pašlaik nevar veikt uzlādi" "Pilns" "Kontrolē administrators" "Iespējoja administrators" @@ -375,7 +388,6 @@ "Pielāgots (%d)" "Palīdzība un atsauksmes" "Izvēlne" - "GMT" "Iev. paroli, lai atiest. rūpnīcas iest. dem. režīmā" "Tālāk" "Nepieciešama parole" diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml index d64311304cd80892f3d350f3e9b2e73b2b9aa61f..2d9d73ce79236282a250f8ecff1da8b2cb2e56bb 100644 --- a/packages/SettingsLib/res/values-mk/arrays.xml +++ b/packages/SettingsLib/res/values-mk/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Користи избор на системот (стандардно)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Овозможување на „Кодеци по избор“" + "Оневозможување на „Кодеци по избор“" + + + "Користи избор на системот (стандардно)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Овозможи ја „Кодеци по избор“" + "Оневозможи ја „Кодеци по избор“" + "Користи избор на системот (стандардно)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index c931d991a1ffe15df31ba570bf7a9ca65fe1c7a8..339c7d8a40b2c1b4012cfd3f5a23fef0c29fec5f 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -40,12 +40,16 @@ "Поврзано преку %1$s" "Достапно преку %1$s" "Поврзана, нема интернет" + "Пристапната точка привремено е преоптоварена" + "Поврзано преку %1$s" + "Достапно преку %1$s" "Многу бавна" "Бавна" "Во ред" "Средна" "Брза" "Многу брза" + "%1$s/%2$s" "Исклучено" "Се исклучува..." "Се поврзува..." @@ -101,6 +105,8 @@ "Две црти на Wi-Fi." "Три црти на Wi-Fi." "Полн сигнал на Wi-Fi." + "Отворена мрежа" + "Заклучена мрежа" "Оперативен систем Android" "Отстранети апликации" "Отстранети апликации и корисници" @@ -187,6 +193,7 @@ "Секогаш дозволувај Wi‑Fi скенирање во роаминг" "Мобилниот интернет е секогаш активен" "Хардверско забрзување за врзување" + "Прикажувај уреди со Bluetooth без имиња" "Оневозможете апсолутна јачина на звук" "Овозможете ѕвонење во појас" "Верзија Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Кодек за LDAC-аудио преку Bluetooth: квалитет на репродукција" "Изберете кодек за LDAC-аудио преку Bluetooth:\nКвалитет на репродукција" "Емитување: %1$s" + "Приватен DNS" + "Изберете режим на приватен DNS" + "Исклучено" + "Опортунистички" + "Име на хост на оператор на приватен DNS" + "Внесете име на хост на операторот на DNS" "Покажи ги опциите за безжичен приказ на сертификат" "Зголеми Wi‑Fi ниво на пријавување, прикажи по SSID RSSI во Wi‑Fi бирач" "Кога е овозможено, Wi-Fi ќе биде поагресивна при предавање на интернет-врската на мобилната мрежа при слаб сигнал на Wi-Fi" @@ -226,6 +239,7 @@ "Овие поставки се наменети само за употреба за развој. Тие може да предизвикаат уредот и апликациите во него да се расипат или да се однесуваат необично." "Потврди апликации преку USB" "Провери апликации инсталирани преку ADB/ADT за штетно однесување." + "Уредите со Bluetooth без имиња (само MAC-адреси) ќе се прикажуваат" "Ја оневозможува карактеристиката за апсолутна јачина на звук преку Bluetooth во случај кога ќе настанат проблеми со далечинските уреди, како на пр., неприфатливо силен звук или недоволна контрола." "Дозволи мелодиите на телефонот да се пуштаат на Bluetooth слушалките" "Локален терминал" @@ -345,12 +359,11 @@ "^1 - уште ^2" "%1$s%2$s" "^1 - ^2 дури се наполни целосно" - "^1 - ^2" "Непознато" "Се полни" "се полни" "Не се полни" - "Не се полни" + "Приклучен е, но батеријата не може да се полни во моментов" "Полна" "Контролирано од администраторот" "Овозможено од администраторот" @@ -375,7 +388,6 @@ "Приспособен (%d)" "Помош и повратни информации" "Мени" - "GMT" "Внесете лозинка за фаб. ресет. во демо" "Следно" "Потребна е лозинка" diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml index 05c487732ad35b4cf1cedd6da232ab82f3bcd230..121c28758c05a696bb884f8c81ac62d5ef2256ab 100644 --- a/packages/SettingsLib/res/values-ml/arrays.xml +++ b/packages/SettingsLib/res/values-ml/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ ‌(ഡിഫോൾട്ട്)" + "SBC" + "AAC" + "Qualcomm® aptX™ ഓഡിയോ" + "Qualcomm® aptX™ HD ഓഡിയോ" + "LDAC" + "ഓപ്ഷണൽ കോഡെകുകൾ പ്രവർത്തനക്ഷമമാക്കുക" + "ഓപ്ഷണൽ കോഡെകുകൾ പ്രവർത്തനരഹിതമാക്കുക" + + + "സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ ‌(ഡിഫോൾട്ട്)" + "SBC" + "AAC" + "Qualcomm® aptX™ ഓഡിയോ" + "Qualcomm® aptX™ HD ഓഡിയോ" + "LDAC" + "ഓപ്ഷണൽ കോഡെകുകൾ പ്രവർത്തനക്ഷമമാക്കുക" + "ഓപ്ഷണൽ കോഡെകുകൾ പ്രവർത്തനരഹിതമാക്കുക" + "സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ ‌(ഡിഫോൾട്ട്)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 128d977aee6e4f334e1150eef731a76a72975b36..51931b46e389fc7468ba7164ec11f8f573aeb0df 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -40,12 +40,16 @@ "%1$s വഴി ബന്ധിപ്പിച്ചു" "%1$s വഴി ലഭ്യം" "കണക്റ്റുചെയ്തിരിക്കുന്നു, ഇന്റർനെറ്റില്ല" + "ആക്‌സസ് പോയിന്റ് താൽക്കാലികമായി നിറഞ്ഞിരിക്കുന്നു" + "%1$s വഴി ബന്ധിപ്പിച്ചു" + "%1$s വഴി ലഭ്യം" "വളരെ കുറഞ്ഞ വേഗത്തിൽ" "കുറഞ്ഞ വേഗത്തിൽ" "ശരി" "ഇടത്തരം" "വേഗത്തിൽ" "വളരെ വേഗത്തിൽ" + "%1$s / %2$s" "വിച്ഛേദിച്ചു" "വിച്‌ഛേദിക്കുന്നു..." "കണക്‌റ്റുചെയ്യുന്നു..." @@ -101,6 +105,8 @@ "വൈഫൈ സിഗ്നൽ രണ്ട് ബാറുകൾ." "വൈഫൈ സിഗ്നൽ മൂന്ന് ബാറുകൾ." "വൈഫൈ മികച്ച സിഗ്‌നൽ." + "ഓപ്പൺ നെറ്റ്‍വര്‍ക്ക്" + "സുരക്ഷിത നെറ്റ്‍വര്‍ക്ക്" "Android OS" "നീക്കംചെയ്‌ത അപ്ലിക്കേഷനുകൾ" "നീക്കംചെയ്‌ത അപ്ലിക്കേഷനുകളും ഉപയോക്താക്കളും" @@ -187,6 +193,7 @@ "എപ്പോഴും വൈഫൈ റോം സ്‌‌കാൻ അനുവദിക്കൂ" "മൊബൈൽ ഡാറ്റ എല്ലായ്‌പ്പോഴും സജീവം" "ടെതറിംഗ് ഹാർഡ്‌വെയർ ത്വരിതപ്പെടുത്തൽ" + "പേരില്ലാത്ത Bluetooth ഉപകരണങ്ങൾ കാണിക്കുക" "അബ്‌സൊല്യൂട്ട് വോളിയം പ്രവർത്തനരഹിതമാക്കുക" "ഇൻ-ബാൻഡ് റിംഗുചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക" "Bluetooth AVRCP പതിപ്പ്" @@ -202,6 +209,12 @@ "Bluetooth ഓഡിയോ LDAC കോഡെക്: പ്ലേബാക്ക് ‌നിലവാരം" "Bluetooth ഓഡിയോ LDAC കോഡെക് തിരഞ്ഞെടുക്കുക:\nപ്ലേബാക്ക് ‌നിലവാരം" "സ്ട്രീമിംഗ്: %1$s" + "സ്വകാര്യ DNS" + "സ്വകാര്യ DNS മോഡ് തിരഞ്ഞെടുക്കുക" + "ഓഫ്" + "അവസരവാദപരം" + "സ്വകാര്യ DNS ദാതാവിന്‍റെ ഹോസ്റ്റുനാമം" + "DNS ദാതാവിന്‍റെ ഹോസ്റ്റുനാമം നൽകുക" "വയർലെസ് ഡിസ്‌പ്ലേ സർട്ടിഫിക്കേഷനായി ഓപ്‌ഷനുകൾ ദൃശ്യമാക്കുക" "വൈഫൈ പിക്കറിൽ ഓരോ SSID RSSI പ്രകാരം കാണിക്കാൻ വൈഫൈ ലോഗിംഗ് നില വർദ്ധിപ്പിക്കുക" "പ്രവർത്തനക്ഷമമായിരിക്കുമ്പോൾ, വൈഫൈ സിഗ്‌നൽ കുറവായിരിക്കുന്ന സമയത്ത് മൊബൈലിലേക്ക് ഡാറ്റ കണക്ഷൻ വഴി കൈമാറുന്നതിൽ വൈഫൈ കൂടുതൽ സക്രിയമായിരിക്കും" @@ -226,6 +239,7 @@ "ഈ ക്രമീകരണങ്ങൾ വികസന ഉപയോഗത്തിന് മാത്രമായുള്ളതാണ്. അവ നിങ്ങളുടെ ഉപകരണവും അതിലെ അപ്ലിക്കേഷനുകളും തകരാറിലാക്കുന്നതിനോ തെറ്റായി പ്രവർത്തിക്കുന്നതിനോ ഇടയാക്കാം." "USB വഴി ആപ്സ് പരിശോധിച്ചുറപ്പിക്കൂ" "കേടാക്കുന്ന പ്രവർത്തനരീതിയുള്ള ADB/ADT വഴി ഇൻസ്റ്റാളുചെയ്‌ത അപ്ലിക്കേഷനുകൾ പരിശോധിക്കുക." + "പേരില്ലാത്ത Bluetooth ഉപകരണങ്ങൾ (MAC വിലാസങ്ങൾ മാത്രം) പ്രദർശിപ്പിക്കും" "അസ്വീകാര്യമായ തരത്തിൽ ഉയർന്ന വോളിയമോ ശബ്ദ നിയന്ത്രണത്തിന്റെ അഭാവമോ പോലെ, വിദൂര ഉപകരണങ്ങളുമായി ബന്ധപ്പെട്ട വോളിയം പ്രശ്നങ്ങൾ ഉണ്ടാകുന്ന സാഹചര്യത്തിൽ, Bluetooth അബ്‌സൊല്യൂട്ട് വോളിയം ഫീച്ചർ പ്രവർത്തനരഹിതമാക്കുന്നു." "ഫോണിലെ റിംഗ്‌ടോണുകൾ Bluetooth ഹെഡ്‌സെറ്റുകളിൽ പ്ലേ ചെയ്യാനായി അനുവദിക്കുക" "പ്രാദേശിക ടെർമിനൽ" @@ -345,12 +359,11 @@ "^1 - ^2 ശേഷിക്കുന്നു" "%1$s - %2$s" "^1 - ഫുൾ ചാർജാകാൻ ^2" - "^1 - ^2" "അജ്ഞാതം" "ചാർജ്ജുചെയ്യുന്നു" "ചാർജ് ചെയ്യുന്നു" "ചാർജ്ജുചെയ്യുന്നില്ല" - "ചാർജ്ജുചെയ്യുന്നില്ല" + "പ്ലഗ് ഇൻ ചെയ്‌തു, ഇപ്പോൾ ചാർജ് ചെയ്യാനാവില്ല" "നിറഞ്ഞു" "അഡ്‌മിൻ നിയന്ത്രിക്കുന്നത്" "അഡ്‌മിൻ പ്രവർത്തനക്ഷമമാക്കി" @@ -375,7 +388,6 @@ "ഇഷ്ടാനുസൃതം ( %d )" "സഹായവും പ്രതികരണവും" "മെനു" - "GMT" "ഡെമോ ‌മോഡിൽ ഫാക്ടറി റീസെറ്റിന് പാസ്‌വേഡ് നൽകുക" "അടുത്തത്" "പാസ്‌വേഡ് ആവശ്യമാണ്" diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml index 052bbac1175c67b3cd6e74ea80d7e50b1ba34b2a..73f40995696223f6221919eaeccca9f06b1d6ecf 100644 --- a/packages/SettingsLib/res/values-mn/arrays.xml +++ b/packages/SettingsLib/res/values-mn/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Системийн сонголтыг ашиглах (Өгөгдмөл)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Нэмэлт кодлогчийг идэвхжүүлэх" + "Нэмэлт кодлогчийг идэвхгүй болгох" + + + "Системийн сонголтыг ашиглах (Өгөгдмөл)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Нэмэлт кодлогчийг идэвхжүүлэх" + "Нэмэлт кодлогчийг идэвхгүй болгох" + "Системийн сонголтыг ашиглах (Өгөгдмөл)" "44.1 кГц" diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 1e864da60a042806ae531764782bff3584b591b4..ff0ef2d6804646fba256e2b4b308febbe7ef4bbd 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -40,12 +40,16 @@ "%1$s-р холбогдсон" "%1$s-р боломжтой" "Холбогдсон, интернэт байхгүй байна" + "Хандах цэг түр хугацаанд дүүрсэн байна" + "%1$s-р холбогдсон" + "%1$s-р боломжтой" "Маш удаан" "Удаан" "ЗА" "Дунд" "Хурдан" "Маш хурдан" + "%1$s / %2$s" "Салгагдсан" "Салгаж байна…" "Холбогдож байна..." @@ -101,6 +105,8 @@ "Wifi сүлжээний дохио хоёр баганатай байна." "Wifi сүлжээний дохио гурван баганатай байна." "Wifi-н дохио дүүрэн байна." + "Нээлттэй сүлжээ" + "Аюулгүй сүлжээ" "Андройд OS" "Арилгасан апп-ууд" "Арилгасан апп-ууд болон хэрэглэгчид" @@ -187,6 +193,7 @@ "Wi‑Fi Роум сканыг байнга зөвшөөрөх" "Мобайл дата байнга идэвхтэй" "Модем болгох хардвер хурдасгуур" + "Нэргүй Bluetooth төхөөрөмжийг харуулах" "Үнэмлэхүй дууны түвшинг идэвхгүй болгох" "Сүлжээний хонхны аяыг идэвхжүүлэх" "Bluetooth AVRCP хувилбар" @@ -202,6 +209,12 @@ "Bluetooth Аудио LDAC Кодлогч: Тоглуулагчийн чанар" "Bluetooth Аудио LDAC Кодлогч сонгох:\nТоглуулагчийн чанар" "Дамжуулж байна: %1$s" + "Хувийн DNS" + "Хувийн DNS Горимыг сонгох" + "Унтраалттай" + "Оппортунист үзэлтэн" + "Хувийн DNS-н үйлчилгээ үзүүлэгчийн хостын нэр" + "DNS-н үйлчилгээ үзүүлэгчийн хостын нэрийг оруулах" "Утасгүй дэлгэцийн сертификатын сонголтыг харуулах" "Wi‑Fi лог-н түвшинг нэмэгдүүлэх, Wi‑Fi Сонгогч дээрх SSID-д ногдох RSSI-г харуулах" "Идэвхжүүлсэн үед Wi‑Fi холболт сул байх үед дата холболтыг мобайлд шилжүүлэхэд илүү идэвхтэй байх болно" @@ -226,6 +239,7 @@ "Эдгээр тохиргоо нь зөвхөн хөгжүүлэлтэд ашиглах зорилготой. Эдгээр нь таны төхөөрөмж буюу түүн дээрх аппликейшнүүдийг эвдрэх, буруу ажиллах шалтгаан нь болж болно." "Апп-г USB-р тулгах" "ADB/ADT-р суулгасан апп-уудыг хорлонтой авиртай эсэхийг шалгах." + "Нэргүй Bluetooth төхөөрөмжийг (зөвхөн MAC хаяг) харуулна" "Хэт чанга дуугаралт эсвэл муу тохиргоо зэрэг алсын зайн төхөөрөмжийн дуугаралттай холбоотой асуудлын үед Bluetooth-ийн үнэмлэхүй дууны түвшинг идэвхгүй болго." "Утасны хонхны аяыг Bluetooth чихэвчээр тоглуулахыг зөвшөөрөх" "Локал терминал" @@ -345,12 +359,11 @@ "^1 - ^2 үлдсэн" "%1$s - %2$s" "бүрэн цэнэглэх хүртэл ^1 - ^2" - "^1 - ^2" "Тодорхойгүй" "Цэнэглэж байна" "цэнэглэж байна" "Цэнэглэхгүй байна" - "Цэнэглэхгүй байна" + "Залгаастай тул одоо цэнэглэх боломжгүй" "Дүүрэн" "Админ удирдсан" "Админ идэвхжүүлсэн" @@ -375,7 +388,6 @@ "Тогтмол утга (%d)" "Тусламж, санал хүсэлт" "Цэс" - "Гринвичийн цаг" "Үйлдвэрийн тохиргоог демо горимд ажиллуулахын тулд нууц үг оруулна уу" "Дараагийн" "Нууц үг шаардлагатай" diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml index e86f1442efb635c3138d822dcf278cc1d9099bc5..606494911c13fcd2ed487af27f6d615bbae45a3d 100644 --- a/packages/SettingsLib/res/values-mr/arrays.xml +++ b/packages/SettingsLib/res/values-mr/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "प्रणाली निवड वापरा (डीफॉल्ट)" + "SBC" + "AAC" + "Qualcomm® aptX™ ऑडिओ" + "Qualcomm® aptX™ HD ऑडिओ" + "LDAC" + "पर्यायी कोडेक सक्षम करा" + "पर्यायी कोडेक अक्षम करा" + + + "प्रणाली निवड वापरा (डीफॉल्ट)" + "SBC" + "AAC" + "Qualcomm® aptX™ ऑडिओ" + "Qualcomm® aptX™ HD ऑडिओ" + "LDAC" + "पर्यायी कोडेक सक्षम करा" + "पर्यायी कोडेक अक्षम करा" + "प्रणाली निवड वापरा (डीफॉल्ट)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 66f8cec32d284cda8ff6f0e76bba250d970b2f4e..d4f6f4b51df9c0e960da00a3a5206cb71528709a 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -22,7 +22,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "नेटवर्कसाठी स्कॅन करू शकत नाही" "काहीही नाही" - "जतन केले" + "सेव्ह केले" "अक्षम" "IP कॉन्फिगरेशन अयशस्वी" "कमी दर्जाच्या नेटवर्कमुळे कनेक्ट केलेले नाही" @@ -34,21 +34,25 @@ "परिक्षेत्रामध्ये नाही" "स्वयंचलितपणे कनेक्ट करणार नाही" "इंटरनेट अॅक्सेस नाही" - "%1$s द्वारे जतन केले" + "%1$s द्वारे सेव्ह केले" "%1$s द्वारे स्वयंचलितपणे कनेक्ट केले" "नेटवर्क रेटिंग प्रदात्याद्वारे स्वयंचलितपणे कनेक्ट केले" "%1$s द्वारे कनेक्‍ट केले" "%1$s द्वारे उपलब्‍ध" "कनेक्‍ट केले, इंटरनेट नाही" + "अॅक्सेस पॉइंट तात्पुरते भरलेले" + "%1$s ने कनेक्‍ट केले" + "%1$s ने उपलब्‍ध" "खूप हळू" "हळू" "ठीक आहे" "मध्‍यम" "जलद" "खूप जलद" + "%1$s / %2$s" "डिस्कनेक्ट केले" "डिस्कनेक्ट करत आहे..." - "कनेक्ट करीत आहे..." + "कनेक्ट करत आहे..." "कनेक्ट केले" "जोडत आहे…" "कनेक्ट केले (फोन नाही)" @@ -101,6 +105,8 @@ "वाय फाय दोन बार." "वाय फाय तीन बार." "वाय फाय सिग्नल संपूर्ण आहे." + "नेटवर्क उघडा" + "सुरक्षित नेटवर्क" "Android OS" "काढलेले अॅप्स" "काढलेले अॅप्स आणि वापरकर्ते" @@ -129,7 +135,7 @@ "उच्चार संश्लेषणाचे एक छोटेसे प्रात्यक्षिक प्ले करा" "व्हॉइस डेटा इंस्टॉल करा" "उच्चार संश्लेषणासाठी आवश्यक आवाज डेटा इंस्टॉल करा" - "हे उच्चार संश्लेषण इंजिन संकेतशब्द आणि क्रेडिट कार्ड नंबर यासारख्या वैयक्तिक मजकुरासह, बोलला जाणारा सर्व मजकूर संकलित करण्यात सक्षम होऊ शकते. हे %s इंजिनवरून येते. या उच्चार संश्लेषण इंजिनचा वापर सक्षम करायचा?" + "हे उच्चार संश्लेषण इंजिन पासवर्ड आणि क्रेडिट कार्ड नंबर यासारख्या वैयक्तिक मजकुरासह, बोलला जाणारा सर्व मजकूर संकलित करण्यात सक्षम होऊ शकते. हे %s इंजिनवरून येते. या उच्चार संश्लेषण इंजिनचा वापर सक्षम करायचा?" "या भाषेस टेक्‍स्‍ट टू स्‍पीचसाठी एका नेटवर्क कनेक्शनची आवश्यकता आहे." "हे उच्चार संश्लेषणाचे एक उदाहरण आहे" "डीफॉल्ट भाषा स्थिती" @@ -187,6 +193,7 @@ "वाय-फाय रोम स्‍कॅनला नेहमी अनुमती द्या" "मोबाइल डेटा नेहमी सक्रिय" "टेदरिंग हार्डवेअर प्रवेग" + "नावांशिवाय ब्‍लूटूथ डिव्‍हाइस दाखवा" "संपूर्ण आवाज अक्षम करा" "इन-बँड रिंगिंग सक्षम करा" "ब्लूटूथ AVRCP आवृत्ती" @@ -202,6 +209,12 @@ "ब्लूटूथ ऑडिओ LDAC कोडेक: प्लेबॅक गुणवत्ता" "ब्लूटूथ ऑडिओ LDAC कोडेक निवडा:\nप्लेबॅक गुणवत्ता" "स्ट्रीमिंग: %1$s" + "खाजगी DNS" + "खाजगी DNS मोड निवडा" + "बंद" + "संधिसाधू" + "खाजगी DNS पुरवठादार होस्ट नाव" + "DNS पुरवठादाराचे होस्टनाव टाका" "वायरलेस डिस्प्ले प्रमाणिकरणाचे पर्याय दाखवा" "वाय-फाय लॉगिंग स्‍तर वाढवा, वाय-फाय सिलेक्टरमध्‍ये प्रति SSID RSSI दर्शवा" "सक्षम केले असताना, वाय-फाय सिग्‍नल कमी असताना, मोबाइलकडे डेटा कनेक्‍शन सोपवण्यासाठी वाय-फाय अधिक अॅग्रेसिव्ह असेल." @@ -226,6 +239,7 @@ "या सेटिंग्जचा हेतू फक्त विकास वापरासाठी आहे. त्यामुळे तुमचे डिव्हाइस आणि त्यावरील अॅप्लिकेशन ब्रेक होऊ शकतात किंवा नेहमीपेक्षा वेगळे वर्तन करू शकतात." "USB वर अॅप्स पडताळून पाहा" "हानिकारक वर्तनासाठी ADB/ADT द्वारे इंस्टॉल अॅप्स तपासा." + "नावांशिवाय ब्‍लूटूथ डीव्‍हाइस (फक्‍त MAC पत्‍ते) दाखवले जातील" "दूरस्थ डीव्हाइसमध्ये सहन न होणारा मोठा आवाज किंवा नियंत्रणचा अभाव यासारखी आवाजाची समस्या असल्यास ब्लूटूथ संपूर्ण आवाज वैशिष्ट्य अक्षम करते." "फोनवरील रिंगटोन ब्लूटूथ हेडसेटवर वाजू द्या" "स्थानिक टर्मिनल" @@ -235,7 +249,7 @@ "डीबग करणे" "डीबग अॅप निवडा" "कोणतेही डीबग अॅप्लिकेशन सेट नाही" - "अॅप्लिकेशन डीबग करीत आहे: %1$s" + "अॅप्लिकेशन डीबग करत आहे: %1$s" "अॅप्लिकेशन निवडा" "काहीही नाही" "डीबगरची प्रतीक्षा करा" @@ -295,11 +309,11 @@ "manifest मूल्यांकडे दुर्लक्ष करून, एकाधिक-विंडोसाठी सर्व क्रियाकलापांचा आकार बदलण्यायोग्य करा." "freeform विंडो सक्षम करा" "प्रायोगिक मुक्तस्वरूपाच्या विंडोसाठी समर्थन सक्षम करा." - "डेस्कटॉप बॅकअप संकेतशब्द" + "डेस्कटॉप बॅकअप पासवर्ड" "डेस्कटॉप पूर्ण बॅक अप सध्या संरक्षित नाहीत" - "डेस्कटॉपच्या पूर्ण बॅकअपसाठी असलेला संकेतशब्द बदलण्यासाठी किंवा काढण्यासाठी टॅप करा" + "डेस्कटॉपच्या पूर्ण बॅकअपसाठी असलेला पासवर्ड बदलण्यासाठी किंवा काढण्यासाठी टॅप करा" "नवीन बॅक अप पासवर्ड सेट झाला" - "नवीन संकेतशब्द आणि पुष्टीकरण जुळत नाही" + "नवीन पासवर्ड आणि पुष्टीकरण जुळत नाही" "बॅक अप पासवर्ड सेट करणे अयशस्वी" "सशक्त (डीफॉल्ट)" @@ -345,12 +359,11 @@ "^1 - ^2 शिल्लक" "%1$s - %2$s" "^1 - पूर्णपणे चार्ज होण्यात ^2" - "^1 - ^2" "अज्ञात" "चार्ज होत आहे" "चार्ज होत आहे" "चार्ज होत नाही" - "चार्ज होत नाही" + "प्लग इन केलेले आहे, आता चार्ज करू शकत नाही" "पूर्ण" "प्रशासकाने नियंत्रित केलेले" "प्रशासकाने सक्षम केलेले" @@ -375,13 +388,12 @@ "सानुकूल करा (%d)" "मदत आणि अभिप्राय" "मेनू" - "GMT" - "डेमो मोडमध्ये फॅक्टरी रीसेट करण्यासाठी पासवर्ड प्रविष्ट करा" + "डेमो मोडमध्ये फॅक्टरी रीसेट करण्यासाठी पासवर्ड एंटर करा" "पुढील" - "संकेतशब्द आवश्यक" + "पासवर्ड आवश्यक" "सक्रिय इनपुट पद्धती" "सिस्टम भाषा वापरा" "%1$s साठी सेटिंग्ज उघडण्यात अयशस्वी" - "ही इनपुट पद्धत संकेतशब्द आणि क्रेडिट कार्ड नंबर यासह, आपण टाइप करता तो सर्व मजकूर संकलित करण्यात सक्षम होऊ शकते. ही %1$s अॅपवरून येते. ही इनपुट पद्धत वापरायची?" + "ही इनपुट पद्धत पासवर्ड आणि क्रेडिट कार्ड नंबर यासह, आपण टाइप करता तो सर्व मजकूर संकलित करण्यात सक्षम होऊ शकते. ही %1$s अॅपवरून येते. ही इनपुट पद्धत वापरायची?" "टीप: रीबूट केल्यानंतर, तुम्ही आपला फोन अनलॉक करे पर्यंत हे अॅप सुरू होऊ शकत नाही" diff --git a/packages/SettingsLib/res/values-ms/arrays.xml b/packages/SettingsLib/res/values-ms/arrays.xml index 2d7e014abc72fe503cd2bf79719501a17c1fca6f..915814fe414d17296aeb0f3aafd9b9c2eba3c204 100644 --- a/packages/SettingsLib/res/values-ms/arrays.xml +++ b/packages/SettingsLib/res/values-ms/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Gunakan Pilihan Sistem (Lalai)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Dayakan Codec Pilihan" + "Lumpuhkan Codec Pilihan" + + + "Gunakan Pilihan Sistem (Lalai)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Dayakan Codec Pilihan" + "Lumpuhkan Codec Pilihan" + "Gunakan Pilihan Sistem (Lalai)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index caa07f941fb93bc013f6549edfeb15b6537d8b88..b08908fc5892271e82184766873bacbd4ed9dc76 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -40,12 +40,16 @@ "Disambungkan melalui %1$s" "Tersedia melalui %1$s" "Disambungkan, tiada Internet" + "Titik akses penuh buat sementara waktu" + "Disambungkan melalui %1$s" + "Tersedia melalui %1$s" "Sangat Perlahan" "Perlahan" "OK" "Sederhana" "Laju" "Sangat Laju" + "%1$s / %2$s" "Diputuskan sambungan" "Memutuskan sambungan..." "Menyambung..." @@ -101,6 +105,8 @@ "Wi-Fi dua bar." "Wi-Fi tiga bar." "Isyarat Wi-Fi penuh." + "Rangkaian terbuka" + "Rangkaian selamat" "OS Android" "Apl dialih keluar" "Apl dan pengguna yang dialih keluar" @@ -187,6 +193,7 @@ "Sentiasa benarkan Imbasan Perayauan Wi-Fi" "Data mudah alih sentiasa aktif" "Pecutan perkakasan penambatan" + "Tunjukkan peranti Bluetooth tanpa nama" "Lumpuhkan kelantangan mutlak" "Dayakan dering dalam jalur" "Versi AVRCP Bluetooth" @@ -202,6 +209,12 @@ "Codec LDAC Audio Bluetooth: Kualiti Main Balik" "Pilih Codec LDAC Audio Bluetooth:\nKualiti Main Balik" "Penstriman: %1$s" + "DNS Peribadi" + "Pilih Mod DNS Peribadi" + "Mati" + "Oportunistik" + "Nama hos pembekal DNS peribadi" + "Masukkan nama hos pembekal DNS" "Tunjukkan pilihan untuk pensijilan paparan wayarles" "Tingkatkan tahap pengelogan Wi-Fi, tunjuk setiap SSID RSSI dalam Pemilih Wi-Fi" "Apabila didayakan, Wi-Fi akan menjadi lebih agresif dalam menyerahkan sambungan data ke mudah alih, apabila isyarat Wi-Fi rendah" @@ -226,6 +239,7 @@ "Tetapan ini adalah untuk penggunaan pembangunan sahaja. Peranti dan aplikasi yang terdapat padanya boleh rosak atau tidak berfungsi dengan betul." "Sahkan apl melalui USB" "Semak apl yang dipasang melalui ADB/ADT untuk tingkah laku yang berbahaya." + "Peranti Bluetooth tanpa nama (alamat MAC sahaja) akan dipaparkan" "Lumpuhkan ciri kelantangan mutlak Bluetooth dalam kes isu kelantangan menggunakan peranti kawalan jauh seperti kelantangan yang sangat kuat atau tidak dapat mengawal." "Benarkan nada dering pada telefon dimainkan pada set kepala Bluetooth" "Terminal setempat" @@ -345,12 +359,11 @@ "^1 - ^2 lagi" "%1$s - %2$s" "^1 - ^2 sehingga dicas penuh" - "^1 - ^2" "Tidak diketahui" "Mengecas" "mengecas" "Tidak mengecas" - "Tidak mengecas" + "Dipalamkan, tidak boleh mengecas sekarang" "Penuh" "Dikawal oleh pentadbir" "Didayakan oleh pentadbir" @@ -375,7 +388,6 @@ "Tersuai (%d)" "Bantuan & maklum balas" "Menu" - "GMT" "Mskkn kta laluan utk ttpn sml kilang dlm mod demo" "Seterusnya" "Kata laluan diperlukan" diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml index 3a802a78bb61e5f08dfefb8748a1507456dd648b..8e3ed3fc1f6a0f5d96d2780525489d0be71e1afc 100644 --- a/packages/SettingsLib/res/values-my/arrays.xml +++ b/packages/SettingsLib/res/values-my/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)" + "SBC" + "AAC" + "Qualcomm® aptX™ အသံ" + "Qualcomm® aptX™ HD အသံ" + "LDAC" + "စိတ်ကြိုက်ထည့်သွင်းနိုင်သော ကိုးဒက်ခ်များကို ဖွင့်ပါ" + "စိတ်ကြိုက်ထည့်သွင်းနိုင်သော ကိုးဒက်ခ်များကို ပိတ်ပါ" + + + "စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)" + "SBC" + "AAC" + "Qualcomm® aptX™ အသံ" + "Qualcomm® aptX™ HD အသံ" + "LDAC" + "စိတ်ကြိုက်ထည့်သွင်းနိုင်သော ကိုးဒက်ခ်များကို ဖွင့်ပါ" + "စိတ်ကြိုက်ထည့်သွင်းနိုင်သော ကိုးဒက်ခ်များကို ပိတ်ပါ" + "စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)" "၄၄.၁ kHz" diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index abee907baaaf31e929b76229715899c96daf0a0c..7c870a90fb97d2f335af09bb7fd1069cfe6535ae 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -40,12 +40,16 @@ "%1$s မှတစ်ဆင့် ချိတ်ဆက်ထားသည်" "%1$s မှတစ်ဆင့်ရနိုင်သည်" "ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိ" + "ကွန်ရက်ချိတ်ဆက်မှု ယာယီပြည့်နေသည်" + "%1$s မှတစ်ဆင့် ချိတ်ဆက်ထားသည်" + "%1$s မှတစ်ဆင့် ရနိုင်သည်" "အလွန်နှေး" "နှေး" "အိုကေ" "အတော်အသင့်" "မြန်" "အလွန်မြန်" + "%1$s / %2$s" "ချိတ်ဆက်မှုပြတ်တောက်သည်" "အဆက်အသွယ်ဖြတ်တောက်သည်" "ချိတ်ဆက်နေသည်" @@ -101,6 +105,8 @@ "Wi-Fi ၂ ဘား" "Wi-Fi ၃ ဘား" "Wi-Fi အပြည့်ရှိ" + "အများသုံး ကွန်ရက်" + "လုံခြုံသည့် ကွန်ရက်" "Android စနစ်" "ဖယ်ရှားထားသော အက်ပ်များ" "ဖယ်ရှားထားသော အပလီကေးရှင်းနှင့် သုံးစွဲသူများ" @@ -187,6 +193,7 @@ "Wi‑Fi ရွမ်းရှာဖွေမှုကို အမြဲတမ်း ခွင့်ပြုမည်" "မိုဘိုင်းဒေတာကို အမြဲဖွင့်ထားရန်" "ဖုန်းကို မိုဒမ်အဖြစ်အသုံးပြုမှု စက်ပစ္စည်းဖြင့် အရှိန်မြှင့်တင်ခြင်း" + "အမည်မရှိသော ဘလူးတုသ်စက်ပစ္စည်းများကို ပြသရန်" "ပကတိ အသံနှုန်း သတ်မှတ်ချက် ပိတ်ရန်" "သတ်မှတ်ထားသည့်ဖုန်းမြည်သံကို အသုံးပြုခြင်းအား ဖွင့်ရန်" "ဘလူးတုသ် AVRCP ဗားရှင်း" @@ -202,6 +209,12 @@ "ဘလူးတုသ်အသံ LDAC ကိုးဒက်ခ်− နားထောင်ရန် အရည်အသွေး" "ဘလူးတုသ်အသံ LDAC ကိုးဒက်ခ်ကို ရွေးပါ−\nနားထောင်ရန် အရည်အသွေး" "တိုက်ရိုက်လွှင့်နေသည်− %1$s" + "သီးသန့် DNS" + "သီးသန့် DNS မုဒ်ကို ရွေးပါ" + "ပိတ်ရန်" + "အခွင့်အရေးသမား" + "သီးသန့် DNS ပံ့ပိုးသူ၏ အင်တာနက်လက်ခံဝန်ဆောင်ပေးသူအမည်" + "DNS ဝန်ဆောင်မှုပေးသူ၏ အင်တာနက်လက်ခံဝန်ဆောင်ပေးသူအမည်ကို ထည့်ပါ" "ကြိုးမဲ့ အခင်းအကျင်း အသိအမှတ်ပြုလက်မှတ်အတွက် ရွေးချယ်စရာများပြရန်" "Wi‑Fi မှတ်တမ်းတင်ခြင်း နှုန်းအားမြင့်ကာ၊ Wi‑Fi ရွေးရာတွင် SSID RSSI ဖြင့်ပြပါ" "ဖွင့်ထားပါက Wi‑Fi လွှင့်အား နည်းချိန်တွင် Wi‑Fi မှ မိုဘိုင်းသို့ ဒေတာချိတ်ဆက်မှုကို လွှဲပြောင်းရာ၌ ပိုမိုထိရောက်ပါသည်" @@ -226,6 +239,7 @@ "ဤဆက်တင်းများကို တည်ဆောက်ပြုပြင်ရာတွင် သုံးရန်အတွက်သာ ရည်ရွယ်သည်။ ၎င်းတို့သည် သင်၏စက်နှင့် အပလီကေးရှင်းများကို ရပ်စေခြင်း သို့ လုပ်ဆောင်ချက်မမှန်ကန်ခြင်းများ ဖြစ်ပေါ်စေနိုင်သည်။" "USBပေါ်မှ အပလီကေးရှင်းများကို အတည်ပြုစိစစ်ရန်" "ADB/ADT မှတဆင့် ထည့်သွင်းသော အပလီကေးရှင်းများကို အန္တရာယ်ဖြစ်နိုင်ခြင်း ရှိမရှိ စစ်ဆေးရန်။" + "အမည်မရှိသော (MAC လိပ်စာများသာပါသော) ဘလူးတုသ်စက်ပစ္စည်းများကို ပြသပါမည်" "ချိတ်ဆက်ထားသည့် ကိရိယာတွင် လက်မခံနိုင်လောက်အောင် ဆူညံ သို့မဟုတ် ထိန်းညှိမရနိုင်သော အသံပိုင်းပြဿနာ ရှိခဲ့လျှင် ဘလူးတုသ် ပကတိ အသံနှုန်းကို ပိတ်ပါ။" "ဖုန်းတွင်းရှိ ဖုန်းမြည်သံများကို ဘလူးတုသ် မိုက်ခွက်ပါနားကြပ်တွင် ဖွင့်ခွင့်ပြုရန်" "လိုကယ်တာမီနယ်" @@ -345,12 +359,11 @@ "^1 - ^2 ကျန်သည်" "%1$s - %2$s" "^1 − အားပြည့်ရန် ^2 ကျန်သည်" - "^1 - ^2" "အကြောင်းအရာ မသိရှိ" "အားသွင်းနေပါသည်" "အားသွင်းနေပါသည်" "အားသွင်းမနေပါ" - "အားသွင်းမနေပါ" + "ပလပ်ထိုးထားသောကြောင့် ယခုအားသွင်း၍ မရသေးပါ" "အပြည့်" "စီမံခန့်ခွဲသူမှ ထိန်းချုပ်ပါသည်" "စီမံခန့်ခွဲသူက ဖွင့်ထားသည်" @@ -375,7 +388,6 @@ "စိတ်ကြိုက် (%d)" "အကူအညီနှင့် အကြံပြုချက်" "မီနူး" - "ဂရင်းနစ်စံတော်ချိန်" "ဒီမိုမုဒ်၌မူလဆက်တင်ထားရန် စကားဝှက်ထည့်ပါ" "ရှေ့သို့" "စကားဝှက် လိုအပ်သည်" diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml index a67e999d045c52eb82b3e4e1679dde8454a1a592..1882e2e026c6fd91ec989cadb78b6b2e976db38c 100644 --- a/packages/SettingsLib/res/values-nb/arrays.xml +++ b/packages/SettingsLib/res/values-nb/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Bruk systemvalg (standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-lyd" + "Qualcomm® aptX™ HD-lyd" + "LDAC" + "Slå på valgfrie kodeker" + "Slå av valgfrie kodeker" + + + "Bruk systemvalg (standard)" + "SBC" + "AAC" + "Qualcomm® aptX™-lyd" + "Qualcomm® aptX™ HD-lyd" + "LDAC" + "Slå på valgfrie kodeker" + "Slå av valgfrie kodeker" + "Bruk systemvalg (standard)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index 004fcf1ed804ab03f3cebda327c7ce0800384902..19d838254148b71fb84b1c2ba99ab908e48b497e 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -40,12 +40,16 @@ "Tilkoblet via %1$s" "Tilgjengelig via %1$s" "Tilkoblet – ingen Internett-forbindelse" + "Tilgangspunktet er midlertidig fullt" + "Tilkoblet via %1$s" + "Tilgjengelig via %1$s" "Veldig treg" "Treg" "Ok" "Middels" "Rask" "Veldig rask" + "%1$s / %2$s" "Frakoblet" "Kobler fra…" "Kobler til…" @@ -101,6 +105,8 @@ "Wi-Fi-signal med to stolper." "Wi-Fi-signal med tre stolper." "Wi-Fi-signalet er ved full styrke." + "Åpent nettverk" + "Sikkert nettverk" "Android-operativsystem" "Fjernede apper" "Fjernede apper og brukere" @@ -187,6 +193,7 @@ "Tillat alltid skanning for Wi-Fi-roaming" "Mobildata er alltid aktiv" "Maskinvareakselerasjon for internettdeling" + "Vis Bluetooth-enheter uten navn" "Slå av funksjonen for absolutt volum" "Slå på innenbåndsringing" "Bluetooth AVRCP-versjon" @@ -202,6 +209,12 @@ "LDAC-kodek for Bluetooth-lyd: Avspillingskvalitet" "Velg LDAC-kodek for Bluetooth-lyd:\nAvspillingskvalitet" "Strømming: %1$s" + "Privat DNS" + "Velg Privat DNS-modus" + "Av" + "Opportunistisk" + "Vertsnavn for privat DNS-leverandør" + "Skriv inn vertsnavnet til DNS-leverandøren" "Vis alternativer for sertifisering av trådløs skjerm" "Øk Wi-Fi-loggenivå – vis per SSID RSSI i Wi-Fi-velgeren" "Hvis dette slås på, overfører Wi-Fi-nettverket datatilkoblingen til mobil mer aggressivt når Wi-Fi-signalet er svakt" @@ -226,6 +239,7 @@ "Disse innstillingene er bare beregnet for bruk under programutvikling. De kan forårsake problemer med enheten din og tilhørende apper." "Bekreft apper via USB" "Sjekk apper som er installert via ADB/ADT for skadelig adferd." + "Bluetooth-enheter uten navn (bare MAC-adresser) vises" "Slår av funksjonen for absolutt volum via Bluetooth i tilfelle det oppstår volumrelaterte problemer med eksterne enheter, for eksempel uakseptabelt høyt volum eller mangel på kontroll." "Tillater at ringelyder på telefonen spilles av på Bluetooth-hodetelefoner" "Lokal terminal" @@ -345,12 +359,11 @@ "^1^2 gjenstår" "%1$s%2$s" "^1^2 til det er fulladet" - "^1^2" "Ukjent" "Lader" "lader" "Lader ikke" - "Lader ikke" + "Laderen er koblet til – kan ikke lade akkurat nå" "Fullt" "Kontrollert av administratoren" "Slått på av administratoren" @@ -375,7 +388,6 @@ "Egendefinert (%d)" "Hjelp og tilbakemelding" "Meny" - "GMT" "Skriv inn passordet for å tilbakestille til fabrikkstandard i demomodus" "Neste" "Passord er obligatorisk" diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml index f26125be138531d43c6c0e54a382ca1741641627..de6b86e393b6c5c9e70f3cacdeafa834451b7b4a 100644 --- a/packages/SettingsLib/res/values-ne/arrays.xml +++ b/packages/SettingsLib/res/values-ne/arrays.xml @@ -70,10 +70,26 @@ "avrcp १५" "avrcp १६" - - - - + + "प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)" + "SBC" + "AAC" + "Qualcomm® aptX™ अडियो" + "Qualcomm® aptX™ HD अडियो" + "LDAC" + "वैकल्पिक कोडेकहरूलाई सक्षम पार्नुहोस्" + "वैकल्पिक कोडेकहरूलाई असक्षम पार्नुहोस्" + + + "प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)" + "SBC" + "AAC" + "Qualcomm® aptX™ अडियो" + "Qualcomm® aptX™ HD अडियो" + "LDAC" + "वैकल्पिक कोडेकहरूलाई सक्षम पार्नुहोस्" + "वैकल्पिक कोडेकहरूलाई असक्षम पार्नुहोस्" + "प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)" "४४.१ kHz" diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index eac1e24384dcca253999d7d7bec06cb9eaf73cf1..c7a434b239c592d3f2365804a3a3f37ef5f1f6ee 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -40,12 +40,16 @@ "%1$s मार्फत जडित" "%1$s मार्फत उपलब्ध" "जडित, इन्टरनेट चलेको छैन" + "पहुँचसम्बन्धी स्थान अस्थायी रूपमा भरिएको छ" + "%1$s मार्फत जडान गरियो" + "%1$s मार्फत उपलब्ध" "धेरै ढिलो" "बिस्तारै" "ठीक छ" "मध्यम" "छिटो" "धेरै छिटो" + "%1$s / %2$s" "विच्छेदन गरियो" "जडान हटाइँदै ..." "जडान हुँदै..." @@ -101,6 +105,8 @@ "Wi-Fi दुई पट्टि।" "Wi-Fi तीन बारहरू।" "पूर्ण Wi-Fi सिंग्नल।" + "खुला नेटवर्क" + "सुरक्षित नेटवर्क" "एन्ड्रोइड OS" "हटाइएका अनुप्रयोगहरू" "अनुप्रयोगहरू र प्रयोगकर्ताहरू हटाइयो।" @@ -187,6 +193,7 @@ "Wi-Fi घुम्ने स्क्यान गर्न सधैँ अनुमति दिनुहोस्" "मोबाइल डेटा सधैँ सक्रिय राख्नुहोस्" "टेदरिङको लागि हार्डवेयरको प्रवेग" + "नामकरण नगरिएका ब्लुटुथ यन्त्रहरू देखाउनुहोस्" "निरपेक्ष आवाज असक्षम गर्नुहोस्" "इन-ब्यान्ड घन्टी बज्ने सुविधालाई सक्षम पार्नुहोस्" "ब्लुटुथको AVRCP संस्करण" @@ -202,6 +209,12 @@ "ब्लुटुथ अडियो LDAC कोडेक: प्लेब्याक गुणस्तर" "ब्लुटुथ अडियो LDAC कोडेक चयन गर्नुहोस्‌:\nप्लेब्याक गुणस्तर" "स्ट्रिमिङ: %1$s" + "निजी DNS" + "निजी DNS मोड चयन गर्नुहोस्" + "निष्क्रिय छ" + "अवसरवादी" + "निजी DNS प्रदायकको होस्टनाम" + "DNS प्रदायकको होस्टनाम प्रविष्ट गर्नुहोस्" "ताररहित प्रदर्शन प्रमाणीकरणका लागि विकल्पहरू देखाउनुहोस्" "Wi-Fi लग स्तर बढाउनुहोस्, Wi-Fi चयनकर्तामा प्रति SSID RSSI देखाइन्छ" "सक्षम गरिएको अवस्थामा, Wi-Fi सिग्नल न्यून हुँदा, Wi-Fi ले बढी आक्रामक ढंगले मोबाइलमा डेटा जडान हस्तान्तरण गर्नेछ" @@ -226,6 +239,7 @@ "यी सेटिङहरू केवल विकास प्रयोगको लागि विचार गरिएको हो। तिनीहरूले तपाईंको उपकरण र अनुप्रयोगहरूलाई विच्छेदन गर्न वा दुर्व्यवहार गर्न सक्दछ।" "USB मा अनुप्रयोगहरू रुजु गर्नुहोस्" "हानिकारक व्यवहारको लागि ADB/ADT को माध्यमबाट स्थापित अनुप्रयोगहरूको जाँच गर्नुहोस्।" + "नामकरण नगरिएका ब्लुटुथ यन्त्रहरू (MAC ठेगाना भएका मात्र) देखाइनेछ" "रिमोट यन्त्रहरूमा अस्वीकार्य चर्को आवाज वा नियन्त्रणमा कमी जस्ता आवाज सम्बन्धी समस्याहरूको अवस्थामा ब्लुटुथ निरपेक्ष आवाज सुविधालाई असक्षम गराउँछ।" "उक्त फोनमा भएका रिङटोनहरूलाई ब्लुटुथका हेडसेटहरूमा प्ले गर्न दिनुहोस्" "स्थानीय टर्मिनल" @@ -345,12 +359,11 @@ "बाँकी समय ^1 - ^2" "%1$s - %2$s" "^1 - पूर्णरूपमा चार्ज हुन ^2 बाँकी" - "^1 - ^2" "अज्ञात" "चार्ज हुँदै" "चार्ज हुँदै" "चार्ज भइरहेको छैन" - "चार्ज हुँदै छैन" + "प्लगइन गरिएको छ, अहिले नै चार्ज गर्न सकिँदैन" "पूर्ण" "प्रशासकद्वारा नियन्त्रित" "प्रशासकद्वारा सक्षम पारिएको छ" @@ -375,7 +388,6 @@ "आफू अनुकूल (%d)" "मद्दत र प्रतिक्रिया" "मेनु" - "GMT" "डेमो मोडमा फ्याक्ट्री रिसेट गर्न पासवर्ड प्रविष्ट गर्नुहोस्" "अर्को" "पासवर्ड आवश्यक छ" diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml index b35245baef359a4c37bd8d7284b38e1677347a9a..ace58fd3d2341f619fa12532172f77fd0453769b 100644 --- a/packages/SettingsLib/res/values-nl/arrays.xml +++ b/packages/SettingsLib/res/values-nl/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Systeemselectie gebruiken (standaard)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Optionele codecs inschakelen" + "Optionele codecs uitschakelen" + + + "Systeemselectie gebruiken (standaard)" + "SBC" + "AAC" + "Qualcomm® aptX™ audio" + "Qualcomm® aptX™ HD audio" + "LDAC" + "Optionele codecs inschakelen" + "Optionele codecs uitschakelen" + "Systeemselectie gebruiken (standaard)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 0c2e96d1493d76e66ef7de4c24792a6ad29fcee8..3ccb0195108f0a6301bdfd08d61780c5d8b5877e 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -40,12 +40,16 @@ "Verbonden via %1$s" "Beschikbaar via %1$s" "Verbonden, geen internet" + "Toegangspunt tijdelijk vol" + "Verbonden via %1$s" + "Beschikbaar via %1$s" "Zeer langzaam" "Langzaam" "Redelijk" "Gemiddeld" "Snel" "Zeer snel" + "%1$s/%2$s" "Verbinding verbroken" "Verbinding verbreken..." "Verbinding maken..." @@ -101,6 +105,8 @@ "Wifi: twee streepjes." "Wifi: drie streepjes." "Wifii-signaal is op volledige sterkte." + "Open netwerk" + "Beveiligd netwerk" "Android-besturingssysteem" "Verwijderde apps" "Verwijderde apps en gebruikers" @@ -167,8 +173,8 @@ "USB-foutopsporing" "Foutopsporingsmodus bij USB-verbinding" "Autorisatie USB-foutopsporing intrekken" - "Snelle link naar foutenrapport" - "Een knop in het voedingsmenu weergeven om een foutenrapport te maken" + "Snelle link naar bugrapport" + "Een knop in het voedingsmenu weergeven om een bugrapport te maken" "Stand-by" "Scherm gaat nooit uit tijdens het opladen" "Snoop-logbestand voor Bluetooth-HCI inschakelen" @@ -187,6 +193,7 @@ "Altijd roamingscans voor wifi toestaan" "Mobiele data altijd actief" "Hardwareversnelling voor tethering" + "Bluetooth-apparaten zonder namen weergeven" "Absoluut volume uitschakelen" "In-band bellen inschakelen" "Bluetooth-AVRCP-versie" @@ -202,6 +209,12 @@ "LDAC-codec voor Bluetooth-audio: afspeelkwaliteit" "LDAC-codec voor Bluetooth-audio selecteren:\nafspeelkwaliteit" "Streaming: %1$s" + "Privé-DNS" + "Selecteer de modus Privé-DNS" + "Uit" + "Opportunistisch" + "Hostnaam van privé-DNS-provider" + "Geef hostnaam van DNS-provider op" "Opties weergeven voor certificering van draadloze weergave" "Logniveau voor wifi verhogen, weergeven per SSID RSSI in wifi-kiezer" "Indien ingeschakeld, is wifi agressiever bij het overgeven van de gegevensverbinding aan mobiel wanneer het wifi-signaal zwak is" @@ -217,7 +230,7 @@ "Neplocaties toestaan" "Neplocaties toestaan" "Inspectie van weergavekenmerk inschakelen" - "Mobiele gegevens altijd actief houden, ook als wifi actief is (voor sneller schakelen tussen netwerken)." + "mobiele data altijd actief houden, ook als wifi actief is (voor sneller schakelen tussen netwerken)." "Hardwareversnelling voor tethering gebruiken indien beschikbaar" "USB-foutopsporing toestaan?" "USB-foutopsporing is alleen bedoeld voor ontwikkeldoeleinden. Het kan worden gebruikt om gegevens te kopiëren tussen je computer en je apparaat, apps zonder melding op je apparaat te installeren en loggegevens te lezen." @@ -226,6 +239,7 @@ "Deze instellingen zijn uitsluitend bedoeld voor ontwikkelingsgebruik. Je apparaat en apps kunnen hierdoor vastlopen of anders reageren." "Apps verifiëren via USB" "Apps die zijn geïnstalleerd via ADB/ADT, controleren op schadelijk gedrag" + "Bluetooth-apparaten zonder namen (alleen MAC-adressen) worden weergegeven" "Hiermee wordt de functie voor absoluut volume van Bluetooth uitgeschakeld in geval van volumeproblemen met externe apparaten, zoals een onacceptabel hoog volume of geen volumeregeling." "Toestaan dat beltonen worden afgespeeld op Bluetooth-headsets" "Lokale terminal" @@ -345,12 +359,11 @@ "^1 - ^2 resterend" "%1$s - %2$s" "^1 - ^2 tot volledig opgeladen" - "^1 - ^2" "Onbekend" "Opladen" "opladen" "Wordt niet opgeladen" - "Wordt niet opgeladen" + "Aangesloten, kan nu niet opladen" "Volledig" "Ingesteld door beheerder" "Ingeschakeld door beheerder" @@ -375,7 +388,6 @@ "Aangepast (%d)" "Help en feedback" "Menu" - "GMT" "Geef wachtwoord op om terug te zetten op fabrieksinstellingen in demomodus" "Volgende" "Wachtwoord vereist" diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml index 55e67f0a6138f4ccaa5ab0e69949645da1f932c5..750aee0ec856d6978ef8d85cfa1cc45ed74b5394 100644 --- a/packages/SettingsLib/res/values-pa/arrays.xml +++ b/packages/SettingsLib/res/values-pa/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)" + "SBC" + "AAC" + "Qualcomm® aptX™ ਆਡੀਓ" + "Qualcomm® aptX™ HD ਆਡੀਓ" + "LDAC" + "ਵਿਕਲਪਿਕ ਕੋਡੈਕ ਚਾਲੂ ਕਰੋ" + "ਵਿਕਲਪਿਕ ਕੋਡੈਕ ਅਯੋਗ ਬਣਾਓ" + + + "ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)" + "SBC" + "AAC" + "Qualcomm® aptX™ ਆਡੀਓ" + "Qualcomm® aptX™ HD ਆਡੀਓ" + "LDAC" + "ਵਿਕਲਪਿਕ ਕੋਡੈਕ ਚਾਲੂ ਕਰੋ" + "ਵਿਕਲਪਿਕ ਕੋਡੈਕ ਅਯੋਗ ਬਣਾਓ" + "ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 2994f8acd90067201e9796d979ad0f410f2e3bb7..fcfaa2825053ec6dea0e679aea103a88f1d4a64c 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -40,12 +40,16 @@ "%1$s ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ" "%1$s ਰਾਹੀਂ ਉਪਲਬਧ" "ਕਨੈਕਟ ਕੀਤਾ, ਕੋਈ ਇੰਟਰਨੈੱਟ ਨਹੀਂ" + "ਐਕਸੈੱਸ ਪੁਆਇੰਟ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਸੰਪੂਰਨ ਰੁਝੇਂਵੇਂ ਵਿੱਚ ਹੈ" + "%1$s ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ" + "%1$s ਰਾਹੀਂ ਉਪਲਬਧ" "ਬਹੁਤ ਹੌਲੀ" "ਹੌਲੀ" "ਠੀਕ ਹੈ" "ਔਸਤ" "ਤੇਜ਼" "ਬਹੁਤ ਤੇਜ਼" + "%1$s / %2$s" "ਡਿਸਕਨੈਕਟ ਕੀਤਾ" "ਡਿਸਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ..." "ਕਨੈਕਟ ਕਰ ਰਿਹਾ ਹੈ…" @@ -101,6 +105,8 @@ "Wifi ਦੋ ਬਾਰ।" "Wifi ਤਿੰਨ ਬਾਰ।" "Wifi ਸਿਗਨਲ ਪੂਰਾ।" + "ਖੁੱਲ੍ਹਾ ਨੈੱਟਵਰਕ" + "ਸੁਰੱਖਿਅਤ ਨੈੱਟਵਰਕ" "Android OS" "ਹਟਾਏ ਗਏ ਐਪਸ" "ਹਟਾਏ ਗਏ ਐਪਸ ਅਤੇ ਉਪਭੋਗਤਾ" @@ -187,6 +193,7 @@ "ਹਮੇਸ਼ਾਂ ਵਾਈ‑ਫਾਈ ਰੋਮ ਸਕੈਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ" "ਮੋਬਾਈਲ ਡਾਟਾ ਹਮੇਸ਼ਾਂ ਕਿਰਿਆਸ਼ੀਲ" "ਟੈਦਰਿੰਗ ਹਾਰਡਵੇਅਰ ਐਕਸੈੱਲਰੇਸ਼ਨ" + "ਅਨਾਮ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦਿਖਾਓ" "ਪੂਰਨ ਵੌਲਿਊਮ ਨੂੰ ਅਯੋਗ ਬਣਾਓ" "ਇਨ-ਬੈਂਡ ਘੰਟੀ ਵੱਜਣ ਨੂੰ ਚਾਲੂ ਕਰੋ" "ਬਲੂਟੁੱਥ AVRCP ਵਰਜਨ" @@ -202,6 +209,12 @@ "ਬਲੂਟੁੱਥ ਔਡੀਓ LDAC ਕੋਡੇਕ: ਪਲੇਬੈਕ ਗੁਣਵੱਤਾ" "ਬਲੂਟੁੱਥ ਔਡੀਓ LDAC ਕੋਡੇਕ ਚੁਣੋ:\nਪਲੇਬੈਕ ਗੁਣਵੱਤਾ" "ਸਟ੍ਰੀਮਿੰਗ: %1$s" + "ਨਿੱਜੀ DNS" + "ਨਿੱਜੀ DNS ਮੋਡ ਚੁਣੋ" + "ਬੰਦ" + "ਮੌਕਾਪ੍ਰਸਤ" + "ਨਿੱਜੀ DNS ਪ੍ਰਦਾਨਕ ਹੋਸਟਨਾਮ" + "DNS ਪ੍ਰਦਾਨਕ ਦਾ ਹੋਸਟਨਾਮ ਦਾਖਲ ਕਰੋ" "ਵਾਇਰਲੈੱਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚੋਣਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" "ਵਾਈ‑ਫਾਈ ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, ਵਾਈ‑ਫਾਈ Picker ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ" "ਜਦੋਂ ਯੋਗ ਬਣਾਇਆ ਹੋਵੇ, ਤਾਂ ਵਾਈ‑ਫਾਈ ਸਿਗਨਲ ਘੱਟ ਹੋਣ \'ਤੇ ਵਾਈ‑ਫਾਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਮੋਬਾਈਲ ਨੂੰ ਹੈਂਡ ਓਵਰ ਕਰਨ ਵਿੱਚ ਵੱਧ ਆਕਰਮਣਸ਼ੀਲ ਹੋਵੇਗਾ।" @@ -226,6 +239,7 @@ "ਇਹ ਸੈਟਿੰਗਾਂ ਕੇਵਲ ਵਿਕਾਸਕਾਰ ਦੀ ਵਰਤੋਂ ਲਈ ਹਨ। ਇਹ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਅਤੇ ਇਸਤੇ ਮੌਜੂਦ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਬ੍ਰੇਕ ਕਰਨ ਜਾਂ ਦੁਰਵਿਵਹਾਰ ਕਰਨ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੇ ਹਨ।" "USB ਤੇ ਐਪਾਂ ਦੀ ਜਾਂਚ ਕਰੋ" "ਹਾਨੀਕਾਰਕ ਵਿਵਹਾਰ ਲਈ ADB/ADT ਰਾਹੀਂ ਸਥਾਪਤ ਕੀਤੀਆਂ ਐਪਾਂ ਦੀ ਜਾਂਚ ਕਰੋ।" + "ਅਨਾਮ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦਿਖਾਈਆਂ ਜਾਣਗੀਆਂ (ਸਿਰਫ਼ MAC ਪਤੇ)" "ਰਿਮੋਟ ਡੀਵਾਈਸਾਂ ਨਾਲ ਵੌਲਿਊਮ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਕਿ ਨਾ ਪਸੰਦ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਉੱਚੀ ਵੌਲਿਊਮ ਜਾਂ ਕੰਟਰੋਲ ਦੀ ਕਮੀ ਵਰਗੀ ਹਾਲਤ ਵਿੱਚ ਬਲੂਟੁੱਥ ਪੂਰਨ ਵੌਲਿਊਮ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਅਯੋਗ ਬਣਾਉਂਦਾ ਹੈ।" "ਤੁਹਾਡੇ ਫ਼ੋਨ ਦੀਆਂ ਰਿੰਗਟੋਨਾਂ ਨੂੰ ਬਲੂਟੁੱਥ ਹੈੱਡਸੈੱਟਾਂ \'ਤੇ ਚਲਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ" "ਸਥਾਨਕ ਟਰਮੀਨਲ" @@ -345,12 +359,11 @@ "^1 - ^2 ਬਾਕੀ" "%1$s - %2$s" "ਪੂਰੀ ਤਰ੍ਹਾਂ ਚਾਰਜ ਹੋਣ ਤੱਕ ^1 - ^2" - "^1 - ^2" "ਅਗਿਆਤ" "ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" "ਚਾਰਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" "ਚਾਰਜ ਨਹੀਂ ਹੋ ਰਿਹਾ" - "ਚਾਰਜ ਨਹੀਂ ਹੋ ਰਿਹਾ" + "ਪਲੱਗ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਇਸ ਸਮੇਂ ਚਾਰਜ ਨਹੀਂ ਹੋ ਸਕਦੀ" "ਪੂਰੀ" "ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕੀਤੀ ਗਈ" "ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਯੋਗ ਬਣਾਇਆ ਗਿਆ" @@ -375,7 +388,6 @@ "ਵਿਉਂਂਤੀ (%d)" "ਮਦਦ & ਫੀਡਬੈਕ" "ਮੀਨੂ" - "GMT" "ਡੈਮੋ ਮੋਡ \'ਚ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਲਈ ਪਾਸਵਰਡ ਦਿਓ" "ਅੱਗੇ" "ਪਾਸਵਰਡ ਦੀ ਲੋੜ ਹੈ" diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml index 2e238788c9085efb209927fcd2063ee976aa0562..c0427c891faaa7155815bdd3ada730d7018eccb6 100644 --- a/packages/SettingsLib/res/values-pl/arrays.xml +++ b/packages/SettingsLib/res/values-pl/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Użyj wyboru systemu (domyślnie)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Włącz opcjonalne kodeki" + "Wyłącz opcjonalne kodeki" + + + "Użyj wyboru systemu (domyślnie)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Włączenie opcjonalnych kodeków" + "Wyłączenie opcjonalnych kodeków" + "Użyj wyboru systemu (domyślnie)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 58454b47a77d3b744e1157521fc6dc151b2dd448..85594f31e4c564016733a8986c01434141396451 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -40,12 +40,16 @@ "Połączono przez %1$s" "Dostępne przez %1$s" "Połączono, brak internetu" + "Punkt dostępu jest tymczasowo zajęty" + "Połączono przez: %1$s" + "Dostępna przez: %1$s" "Bardzo wolna" "Wolna" "OK" "Średnia" "Szybka" "Bardzo szybka" + "%1$s / %2$s" "Rozłączona" "Rozłączanie..." "Łączenie..." @@ -101,6 +105,8 @@ "Wi-Fi: dwa paski." "Wi-Fi: trzy paski." "Wi-Fi: pełna moc sygnału." + "Sieć otwarta" + "Sieć zabezpieczona" "System operacyjny Android" "Usunięte aplikacje" "Usunięte aplikacje i użytkownicy" @@ -187,6 +193,7 @@ "Zawsze szukaj Wi-Fi w roamingu" "Mobilna transmisja danych zawsze aktywna" "Akceleracja sprzętowa tetheringu" + "Pokaż urządzenia Bluetooth bez nazw" "Wyłącz głośność bezwzględną" "Włącz dzwonek w kanale dźwiękowym" "Wersja AVRCP Bluetooth" @@ -202,6 +209,12 @@ "Kodek dźwięku Bluetooth LDAC: jakość odtwarzania" "Wybierz kodek dźwięku Bluetooth LDAC:\njakość odtwarzania" "Strumieniowe przesyłanie danych: %1$s" + "Prywatny DNS" + "Wybierz tryb prywatnego DNS" + "Wyłączony" + "Oportunistyczny" + "Nazwa hosta dostawcy prywatnego DNS" + "Wpisz nazwę hosta dostawcy DNS" "Pokaż opcje certyfikacji wyświetlacza bezprzewodowego" "Zwiększ poziom rejestrowania Wi‑Fi, pokazuj według RSSI SSID w selektorze Wi‑Fi" "Po włączeniu połączenie danych będzie bardziej agresywnie przełączać się z Wi-Fi na sieć komórkową przy słabym sygnale Wi-Fi" @@ -226,6 +239,7 @@ "Te ustawienia są przeznaczone wyłącznie dla programistów. Ich użycie może spowodować uszkodzenie lub nieprawidłowe działanie urządzenia i zainstalowanych na nim aplikacji." "Zweryfikuj aplikacje przez USB" "Sprawdź, czy aplikacje zainstalowane przez ADB/ADT nie zachowują się w szkodliwy sposób" + "Zostaną wyświetlone urządzenia Bluetooth bez nazw (tylko adresy MAC)" "Wyłącza funkcję Głośność bezwzględna Bluetooth, jeśli występują problemy z urządzeniami zdalnymi, np. zbyt duża głośność lub brak kontroli." "Zezwala na odtwarzanie dzwonków telefonu w zestawach słuchawkowych Bluetooth" "Terminal lokalny" @@ -345,12 +359,11 @@ "^1 – zostało ^2" "%1$s%2$s" "^1^2 do pełnego naładowania" - "^1^2" "Nieznane" "Ładowanie" "ładowanie" "Nie podłączony" - "Nie podłączony" + "Podłączony. Nie można teraz ładować" "Naładowana" "Kontrolowane przez administratora" "Włączone przez administratora" @@ -375,7 +388,6 @@ "Niestandardowe (%d)" "Pomoc i opinie" "Menu" - "GMT" "Wpisz hasło, by przywrócić ustawienia fabryczne w trybie demonstracyjnym" "Dalej" "Wymagane hasło" diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml index a1b545f70754ed3597c6295bfd15d8e925fcdf82..46958297c464da481589e18977e4e52a80062467 100644 --- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usar seleção do sistema (padrão)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + + + "Usar seleção do sistema (padrão)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + "Usar seleção do sistema (padrão)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 3b97a7f8e2a74ea01815964bf631af824291b727..70e676b635807ef56978ce74ecc65e6cff83fd64 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -40,12 +40,16 @@ "Conectado via %1$s" "Disponível via %1$s" "Conectada, sem Internet" + "Ponto de acesso temporariamente cheio" + "Conectado via %1$s" + "Disponível via %1$s" "Muito lenta" "Lenta" "Ok" "Média" "Rápida" "Muito rápida" + "%1$s / %2$s" "Desconectado" "Desconectando…" "Conectando..." @@ -101,6 +105,8 @@ "Duas barras de Wi-Fi." "Três barras de Wi-Fi." "Sinal Wi-Fi cheio." + "Rede aberta" + "Rede segura" "Sistema operacional Android" "Apps removidos" "Apps e usuários removidos" @@ -187,6 +193,7 @@ "Sempre permitir verif. de roaming de Wi-Fi" "Dados móveis sempre ativos" "Aceleração de hardware de tethering" + "Mostrar dispositivos Bluetooth sem nomes" "Desativar volume absoluto" "Ativar o toque em banda" "Versão do Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec de áudio Bluetooth LDAC: qualidade de reprodução" "Selecionar codec de áudio Bluetooth LDAC:\nqualidade de reprodução" "Streaming: %1$s" + "DNS particular" + "Selecione o modo DNS particular" + "Desativado" + "Oportunista" + "Nome do host do provedor de DNS particular" + "Informe o nome do host do provedor de DNS" "Mostrar opções de certificação de Display sem fio" "Aumentar o nível de registro do Wi-Fi; mostrar conforme o RSSI de SSID na Seleção de Wi-Fi" "Quando ativada, o Wi-Fi será mais agressivo em passar a conexão de dados para móvel, quando o sinal de Wi-Fi estiver fraco" @@ -226,6 +239,7 @@ "Essas configurações são destinadas apenas para o uso de desenvolvedores. Elas podem causar a desativação ou mau funcionamento do dispositivo e dos apps contidos nele." "Verificar apps por USB" "Verificar comportamento nocivo em apps instalados via ADB/ADT." + "Dispositivos Bluetooth sem nomes (somente endereços MAC) serão exibidos" "Desativa o recurso Bluetooth de volume absoluto em caso de problemas com o volume em dispositivos remotos, como volume excessivamente alto ou falta de controle." "Permitir que os toques no smartphone sejam reproduzidos em fones de ouvido Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 - ^2 restante(s)" "%1$s - %2$s" "^1 - ^2 até a carga completa" - "^1 - ^2" "Desconhecido" "Carregando" "carregando" "Não está carregando" - "Não está carregando" + "Conectado. Não é possível carregar no momento" "Cheio" "Controlada pelo admin" "Ativado pelo administrador" @@ -375,7 +388,6 @@ "Personalizada (%d)" "Ajuda e feedback" "Menu" - "GMT" "Digite a senha para redef. p/ configuração original em modo demo" "Próxima" "Senha necessária" diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml index e55d12446d52beda9558226c5b26cb793568e177..78a24c4d3bb5c66f162d48a4736a01afcdbda26f 100644 --- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Utilizar seleção do sistema (predef.)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + + + "Utilizar seleção do sistema (predef.)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + "Utilizar seleção do sistema (predef.)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index e2c6b2fe7b48dbaeb35185abaa99fe90c340c1a7..dcbaf394794d92ba16b4a73e1c531821cff09a91 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -40,12 +40,16 @@ "Ligado através de %1$s" "Disponível através de %1$s" "Ligado, sem Internet" + "Ponto de acesso temporariamente cheio" + "Ligado através de %1$s" + "Disponível através de %1$s" "Muito lenta" "Lenta" "OK" "Média" "Rápida" "Muito rápida" + "%1$s/%2$s" "Desligado" "A desligar..." "A ligar..." @@ -101,6 +105,8 @@ "Duas barras de Wi-Fi." "Três barras de Wi-Fi." "Sinal de Wi-Fi completo." + "Rede aberta" + "Rede segura" "SO Android" "Aplicações removidas" "Aplicações e utilizadores removidos" @@ -187,6 +193,7 @@ "Permitir sempre a deteção de Wi-Fi em roaming" "Dados móveis sempre ativos" "Aceleração de hardware para ligação (à Internet) via telemóvel" + "Mostrar dispositivos Bluetooth sem nomes" "Desativar volume absoluto" "Ativar toque dentro da banda" "Versão de Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec LDAC de áudio Bluetooth: qualidade de reprodução" "Selecionar codec LDAC de áudio Bluetooth:\nQualidade de reprodução" "Transmissão em fluxo contínuo: %1$s" + "DNS privado" + "Selecionar modo DNS privado" + "Desativado" + "Oportunista" + "Nome de anfitrião do fornecedor DNS privado" + "Introduza o nome de anfitrião do fornecedor DNS." "Mostrar opções da certificação de display sem fios" "Aumentar o nível de reg. de Wi-Fi, mostrar por RSSI de SSID no Selec. de Wi-Fi" "Se estiver ativado, o Wi-Fi será mais agressivo ao transmitir a lig. de dados para a rede móvel quando o sinal Wi-Fi estiver fraco" @@ -226,6 +239,7 @@ "Estas definições destinam-se apenas a programação. Podem fazer com que o seu aparelho e as aplicações nele existentes falhem ou funcionem mal." "Verificar aplicações de USB" "Verificar as aplicações instaladas via ADB/ADT para detetar comportamento perigoso." + "São apresentados os dispositivos Bluetooth sem nomes (apenas endereços MAC)" "Desativa a funcionalidade de volume absoluto do Bluetooth caso existam problemas de volume com dispositivos remotos, como um volume insuportavelmente alto ou a ausência de controlo." "Permitir que os toques no telemóvel sejam reproduzidos em auscultadores com microfone integrado Bluetooth" "Terminal local" @@ -345,16 +359,15 @@ "^1 – resta(m) ^2" "%1$s%2$s" "^1^2 até ficar totalmente carregada" - "^1^2" "Desconhecido" "A carregar" "a carregar…" "Não está a carregar" - "Não está a carregar" + "Ligada à corrente, não é possível carregar neste momento" "Completo" - "Controlado pelo administrador" - "Ativada pelo administrador" - "Desativada pelo administrador" + "Controlado pelo gestor" + "Ativada pelo gestor" + "Desativada pelo gestor" "Desativada" "Autorizada" "Não autorizada" @@ -375,7 +388,6 @@ "Personalizado (%d)" "Ajuda e comentários" "Menu" - "GMT" "Introduzir palavra-passe para efetuar a reposição de fábrica no modo demo" "Próximo" "Palavra-passe obrigatória" diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml index a1b545f70754ed3597c6295bfd15d8e925fcdf82..46958297c464da481589e18977e4e52a80062467 100644 --- a/packages/SettingsLib/res/values-pt/arrays.xml +++ b/packages/SettingsLib/res/values-pt/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Usar seleção do sistema (padrão)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + + + "Usar seleção do sistema (padrão)" + "SBC" + "AAC" + "Áudio Qualcomm® aptX™" + "Áudio Qualcomm® aptX™ HD" + "LDAC" + "Ativar codecs opcionais" + "Desativar codecs opcionais" + "Usar seleção do sistema (padrão)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 3b97a7f8e2a74ea01815964bf631af824291b727..70e676b635807ef56978ce74ecc65e6cff83fd64 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -40,12 +40,16 @@ "Conectado via %1$s" "Disponível via %1$s" "Conectada, sem Internet" + "Ponto de acesso temporariamente cheio" + "Conectado via %1$s" + "Disponível via %1$s" "Muito lenta" "Lenta" "Ok" "Média" "Rápida" "Muito rápida" + "%1$s / %2$s" "Desconectado" "Desconectando…" "Conectando..." @@ -101,6 +105,8 @@ "Duas barras de Wi-Fi." "Três barras de Wi-Fi." "Sinal Wi-Fi cheio." + "Rede aberta" + "Rede segura" "Sistema operacional Android" "Apps removidos" "Apps e usuários removidos" @@ -187,6 +193,7 @@ "Sempre permitir verif. de roaming de Wi-Fi" "Dados móveis sempre ativos" "Aceleração de hardware de tethering" + "Mostrar dispositivos Bluetooth sem nomes" "Desativar volume absoluto" "Ativar o toque em banda" "Versão do Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Codec de áudio Bluetooth LDAC: qualidade de reprodução" "Selecionar codec de áudio Bluetooth LDAC:\nqualidade de reprodução" "Streaming: %1$s" + "DNS particular" + "Selecione o modo DNS particular" + "Desativado" + "Oportunista" + "Nome do host do provedor de DNS particular" + "Informe o nome do host do provedor de DNS" "Mostrar opções de certificação de Display sem fio" "Aumentar o nível de registro do Wi-Fi; mostrar conforme o RSSI de SSID na Seleção de Wi-Fi" "Quando ativada, o Wi-Fi será mais agressivo em passar a conexão de dados para móvel, quando o sinal de Wi-Fi estiver fraco" @@ -226,6 +239,7 @@ "Essas configurações são destinadas apenas para o uso de desenvolvedores. Elas podem causar a desativação ou mau funcionamento do dispositivo e dos apps contidos nele." "Verificar apps por USB" "Verificar comportamento nocivo em apps instalados via ADB/ADT." + "Dispositivos Bluetooth sem nomes (somente endereços MAC) serão exibidos" "Desativa o recurso Bluetooth de volume absoluto em caso de problemas com o volume em dispositivos remotos, como volume excessivamente alto ou falta de controle." "Permitir que os toques no smartphone sejam reproduzidos em fones de ouvido Bluetooth" "Terminal local" @@ -345,12 +359,11 @@ "^1 - ^2 restante(s)" "%1$s - %2$s" "^1 - ^2 até a carga completa" - "^1 - ^2" "Desconhecido" "Carregando" "carregando" "Não está carregando" - "Não está carregando" + "Conectado. Não é possível carregar no momento" "Cheio" "Controlada pelo admin" "Ativado pelo administrador" @@ -375,7 +388,6 @@ "Personalizada (%d)" "Ajuda e feedback" "Menu" - "GMT" "Digite a senha para redef. p/ configuração original em modo demo" "Próxima" "Senha necessária" diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml index 4cb0a4fa3998a3c04dd7133d6e948d2a1549152c..b62014e8f732ca767eac34d6432af82f0eb9ab03 100644 --- a/packages/SettingsLib/res/values-ro/arrays.xml +++ b/packages/SettingsLib/res/values-ro/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Folosiți selectarea sist. (prestabilit)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activați codecurile opționale" + "Dezactivați codecurile opționale" + + + "Folosiți selectarea sist. (prestabilit)" + "SBC" + "AAC" + "Audio Qualcomm® aptX™" + "Audio Qualcomm® aptX™ HD" + "LDAC" + "Activați codecurile opționale" + "Dezactivați codecurile opționale" + "Folosiți selectarea sist. (prestabilit)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index 97e28775b686de54a70f4eb49e7aba5cb43119f4..92b8b1938c4a0e4bfd1e5e23d57f865fed20f7c7 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -40,12 +40,16 @@ "Conectată prin %1$s" "Disponibilă prin %1$s" "Conectată, fără internet" + "Punctul de acces este temporar plin" + "Conectată prin %1$s" + "Disponibilă prin %1$s" "Foarte lentă" "Lentă" "Bine" "Medie" "Rapidă" "Foarte rapidă" + "%1$s/%2$s" "Deconectat" "În curs de deconectare..." "Se conectează..." @@ -101,6 +105,8 @@ "Semnal Wi-Fi: două bare." "Semnal Wi-Fi: trei bare." "Semnal Wi-Fi: complet." + "Rețea nesecurizată" + "Securizați rețeaua" "Sistem de operare Android" "Aplicații eliminate" "Aplicații și utilizatori eliminați" @@ -187,6 +193,7 @@ "Se permite întotdeauna scanarea traficului Wi-Fi" "Date mobile permanent active" "Accelerare hardware pentru tethering" + "Afișați dispozitivele Bluetooth fără nume" "Dezactivați volumul absolut" "Activați soneria în căști" "Versiunea AVRCP pentru Bluetooth" @@ -202,6 +209,12 @@ "Codecul LDAC audio pentru Bluetooth: calitatea redării" "Selectați codecul LDAC audio pentru Bluetooth:\ncalitatea redării" "Transmitere în flux: %1$s" + "DNS privat" + "Selectați modul DNS privat" + "Dezactivat" + "Oportunist" + "Nume de gazdă al furnizorului de DNS privat" + "Introduceți numele de gazdă al furnizorului de DNS" "Afișați opțiunile pentru certificarea Ecran wireless" "Măriți niv. de înr. prin Wi‑Fi, afișați în fcț. de SSID RSSI în Selectorul Wi‑Fi" "Când este activată, Wi-Fi va fi mai agresivă la predarea conexiunii de date către rețeaua mobilă când semnalul Wi-Fi este slab" @@ -226,6 +239,7 @@ "Aceste setări sunt destinate exclusiv utilizării pentru dezvoltare. Din cauza lor, este posibil ca dispozitivul dvs. și aplicațiile de pe acesta să nu mai funcționeze sau să funcționeze necorespunzător." "Verificați aplicațiile prin USB" "Verificați aplicațiile instalate utilizând ADB/ADT, pentru a detecta un comportament dăunător." + "Vor fi afișate dispozitivele Bluetooth fără nume (numai adresele MAC)" "Dezactivează funcția Bluetooth de volum absolut în cazul problemelor de volum apărute la dispozitivele la distanță, cum ar fi volumul mult prea ridicat sau lipsa de control asupra acestuia." "Permiteți ca tonurile de sonerie de pe telefon să fie redate prin căștile Bluetooth" "Aplicație terminal locală" @@ -345,12 +359,11 @@ "^1 – timp rămas: ^2" "%1$s - %2$s" "^1 - ^2 până la încărcarea completă" - "^1^2" "Necunoscut" "Se încarcă" "se încarcă" "Nu se încarcă" - "Nu încarcă" + "Conectat, nu se poate încărca chiar acum" "Complet" "Controlată de administrator" "Activat de administrator" @@ -375,7 +388,6 @@ "Personalizat (%d)" "Ajutor și feedback" "Meniu" - "GMT" "Introduceți parola pentru a reveni la setările din fabrică în modul demo" "Înainte" "Trebuie să introduceți o parolă" diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml index c5a9dddf2d5aa2f17bc457a07b0f07ebf888a174..05ccc80f37c3e399f1d29ed42df454f2fcb8659f 100644 --- a/packages/SettingsLib/res/values-ru/arrays.xml +++ b/packages/SettingsLib/res/values-ru/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Выбор системы (по умолчанию)" + "SBC" + "AAC" + "Аудиокодек: Qualcomm® aptX™" + "Аудиокодек: Qualcomm® aptX™ HD" + "LDAC" + "Включить дополнительные кодеки" + "Отключить дополнительные кодеки" + + + "Выбор системы (по умолчанию)" + "SBC" + "AAC" + "Аудиокодек: Qualcomm® aptX™" + "Аудиокодек: Qualcomm® aptX™ HD" + "LDAC" + "Включить дополнительные кодеки" + "Отключить дополнительные кодеки" + "Выбор системы (по умолчанию)" "44,1 кГц" diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index 381d9315ce2e26fdf8ff6eb8230a1423be5a0410..3cf9ab2a865b0a8a99c20295795b58e189e09c38 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -40,12 +40,16 @@ "Подключено к %1$s" "Доступно через %1$s" "Подключено, без Интернета" + "К точке доступа подключено слишком много устройств" + "Подключено к %1$s" + "Доступно через %1$s" "Очень медленная" "Медленная" "ОК" "Средняя" "Быстрая" "Очень быстрая" + "%2$s: %1$s" "Нет подключения" "Отключение..." "Подключение..." @@ -101,6 +105,8 @@ "Wi-Fi: два деления" "Wi-Fi: три деления" "Wi-Fi: надежный сигнал" + "Открытая сеть" + "Защищенная сеть" "ОС Android" "Удаленные приложения" "Удаленные приложения и пользователи" @@ -187,6 +193,7 @@ "Всегда включать поиск сетей Wi-Fi" "Не отключать мобильный Интернет" "Аппаратное ускорение в режиме модема" + "Показывать Bluetooth-устройства без названий" "Отключить абсолютный уровень громкости" "Включить внутриполосное воспроизведение" "Версия Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Аудиокодек LDAC для Bluetooth: качество воспроизведения" "Аудиокодек LDAC для Bluetooth:\nкачество воспроизведения" "Потоковая передача: %1$s" + "Персональный DNS-сервер" + "Выберите режим персонального DNS-сервера" + "ВЫКЛ" + "Гибкий" + "Имя хоста поставщика персонального DNS-сервера" + "Введите имя хоста поставщика услуг DNS" "Показывать параметры сертификации беспроводных мониторов" "При выборе Wi‑Fi указывать в журнале RSSI для каждого SSID" "Принудительно переключаться на мобильную сеть, если сигнал Wi-Fi слабый" @@ -226,6 +239,7 @@ "Только для разработчиков. Изменение этих настроек может привести к сбоям или неправильной работе устройства и приложений." "Проверять приложения при установке" "Выполнять проверку безопасности приложений при установке через ADB/ADT" + "Показывать Bluetooth-устройства без названий (только с MAC-адресами)" "Отключить абсолютный уровень громкости Bluetooth при возникновении проблем на удаленных устройствах, например при слишком громком звучании или невозможности контролировать настройку." "Разрешить воспроизведение рингтонов на телефоне через Bluetooth-гарнитуру" "Локальный терминальный доступ" @@ -287,7 +301,7 @@ "Лимит фоновых процессов" "Все ANR" "Уведомлять о том, что приложение не отвечает" - "Показывать предупреждения канала передачи оповещения" + "Показывать предупреждения канала передачи уведомлений" "Показывать предупреждение о новых уведомлениях приложения вне допустимого канала" "Разрешить сохранение на внешние накопители" "Разрешить сохранение приложений на внешних накопителях (независимо от значений в манифесте)" @@ -345,12 +359,11 @@ "^1, осталось: ^2" "%1$s – %2$s" "^1 – ^2 до полной зарядки" - "^1 – ^2" "Неизвестно" "Идет зарядка" "заряжается" "Не заряжается" - "Не заряжается" + "Подключено, не заряжается" "Батарея заряжена" "Контролируется администратором" "Включено администратором" @@ -375,7 +388,6 @@ "Другой (%d)" "Справка/отзыв" "Меню" - "GMT" "Чтобы сбросить настройки в деморежиме, введите пароль." "Далее" "Требуется пароль" diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml index 069470ae5a6c5cd936e83acabfa2136b79143fcb..2808ba387a26bd2a48cfc6a9172d2effb0f90571 100644 --- a/packages/SettingsLib/res/values-si/arrays.xml +++ b/packages/SettingsLib/res/values-si/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)" + "SBC" + "AAC" + "Qualcomm® aptX™ ශ්‍රව්‍යය" + "Qualcomm® aptX™ HD ශ්‍රව්‍යය" + "LDAC" + "විකල්පමය කොඩෙක් සබල කරන්න" + "විකල්පමය කොඩෙක් අබල කරන්න" + + + "පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)" + "SBC" + "AAC" + "Qualcomm® aptX™ ශ්‍රව්‍යය" + "Qualcomm® aptX™ HD ශ්‍රව්‍යය" + "LDAC" + "විකල්පමය කොඩෙක් සබල කරන්න" + "විකල්පමය කොඩෙක් අබල කරන්න" + "පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index f20af61a158f8a6f9447e7a027627c5262f1661e..bbad45788c92e454f7c71801a522ae1fa37c8f88 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -40,12 +40,16 @@ "%1$s හරහා සම්බන්ධ විය" "%1$s හරහා ලබා ගැනීමට හැකිය" "සම්බන්ධයි, අන්තර්ජාලය නැත" + "ප්‍රවේශ ලක්ෂ්‍ය තාවකාලිකව පිරී ඇත" + "%1$s හරහා සම්බන්ධ විය" + "%1$s හරහා ලබා ගැනීමට හැකිය" "ඉතා මන්දගාමී" "මන්දගාමී" "හරි" "මධ්‍යම" "වේගවත්" "ඉතා වේගවත්" + "%1$s / %2$s" "විසන්ධි වුණි" "විසන්ධි වෙමින්…" "සම්බන්ධ වෙමින්…" @@ -101,6 +105,8 @@ "Wifi තීරු දෙකයි." "WiFi තීරු තුනයි." "Wifi සංඥාව පිරී ඇත." + "විවෘත ජාලය" + "ආරක්ෂිත ජාලය" "Android OS" "ඉවත් කළ යෙදුම්" "යෙදුම් සහ පරිශීලකයින් ඉවත් කරන ලදි" @@ -187,6 +193,7 @@ "Wi‑Fi රෝම් පරිලෝකන වෙතට සැමවිට අවසර දෙන්න" "ජංගම දත්ත සැමවිට ක්‍රියාකාරීය" "ටෙදරින් දෘඪාංග ත්වරණය" + "නම් නොමැති බ්ලූටූත් උපාංග පෙන්වන්න" "නිරපේක්ෂ හඩ පරිමාව අබල කරන්න" "කලාපය තුළ නාද වීම සබල කරන්න" "බ්ලූටූත් AVRCP අනුවාදය" @@ -202,6 +209,12 @@ "බ්ලූටූත් ශ්‍රව්‍ය LDAC පසුධාවන ගුණත්වය" "බ්ලූටූත් ශ්‍රව්‍ය LDAC කොඩෙක් තෝරන්න:\nපසුධාවන ගුණත්වය" "ප්‍රවාහ කරමින්: %1$s" + "පුද්ගලික DNS" + "පුද්ගලික DNS ප්‍රකාරය තෝරන්න" + "ක්‍රියාවිරහිතයි" + "අවස්ථාවාදී" + "පුද්ගලික DNS සැපයුම්කරු සත්කාරක නම" + "DNS සැපයුම්කරුගේ සත්කාරක නම ඇතුළු කරන්න" "නොරැහැන් සංදර්ශක සහතිකය සඳහා විකල්ප පෙන්වන්න" "Wi‑Fi ලොග් මට්ටම වැඩි කරන්න, Wi‑Fi තෝරනයෙහි SSID RSSI අනුව පෙන්වන්න" "සබල විට Wi‑Fi සිග්නලය අඩු විට Wi‑Fi දත්ත සම්බන්ධතාවය ජංගම වෙත භාර දීමට වඩා ආක්‍රමණික වේ" @@ -226,6 +239,7 @@ "මෙම සැකසීම් වර්ධක භාවිතය සඳහා පමණි. ඔබගේ උපාංගයේ සහ යෙදුම්වල අක්‍රිය වීමට හෝ වැරදි ක්‍රියා කෙරුමකට ඒවා බලපෑ හැක." "USB ඔස්සේ යෙදුම් සත්‍යාපනය කරගන්න" "ADB/ADT හරහා ස්ථාපනය වූ යෙදුම්, විනාශකාරී ක්‍රියාවන් ඇත්දැයි පරික්ෂාකර බලන්න." + "නම් නොමැති බ්ලූටූත් උපාංග (MAC ලිපින පමණි) සංදර්ශනය කරනු ඇත" "පිළිගත නොහැකි ලෙස වැඩි හඩ පරිමාව හෝ පාලනය නොමැති වීම යනාදී දුරස්ථ උපාංග සමගින් වන හඬ පරිමා ගැටලුවලදී බ්ලූටූත් නිරපේක්ෂ හඬ පරිමා විශේෂාංගය අබල කරයි." "දුරකථනයේ නාද රටාවලට බ්ලූටූත් මත වාදනය වීමට ඉඩ දෙන්න" "අභ්‍යන්තර අන්තය" @@ -345,12 +359,11 @@ "^1 - ඉතිරි ^2" "%1$s - %2$s" "^1 - ^2 සම්පූර්ණයෙන් ආරෝපණය වන තෙක්" - "^1 - ^2" "නොදනී" "ආරෝපණය වෙමින්" "ආරෝපණය වේ" "ආරෝපණය නොවේ" - "ආරෝපණය නොවෙමින්" + "පේනුගත කර ඇත, මේ අවස්ථාවේදී ආරෝපණය කළ නොහැකිය" "පූර්ණ" "පරිපාලක විසින් පාලනය කරන ලදී" "පරිපාලක විසින් සබල කර ඇත" @@ -375,7 +388,6 @@ "අභිරුචි (%d)" "උදව් සහ ප්‍රතිපෝෂණ" "මෙනුව" - "GMT" "ආදර්ශන ප්‍රකාර කර්මාන්තශාලා යළි සැකසීමට මුරපදය ඇ. ක." "ඊළඟ" "මුරපදය අවශ්‍යයි" diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml index e2005ba28e7f22f960914a59d0df3fc766d9db4a..f3c25b4df13a54bc9dbf1383a35a6dfc47003aad 100644 --- a/packages/SettingsLib/res/values-sk/arrays.xml +++ b/packages/SettingsLib/res/values-sk/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Použiť voľbu systému (predvolené)" + "SBC" + "AAC" + "Zvuk: Qualcomm® aptX™" + "Zvuk: Qualcomm® aptX™ HD" + "LDAC" + "Povoliť voliteľné kodeky" + "Zakázať voliteľné kodeky" + + + "Použiť voľbu systému (predvolené)" + "SBC" + "AAC" + "Zvuk: Qualcomm® aptX™" + "Zvuk: Qualcomm® aptX™ HD" + "LDAC" + "Povoliť voliteľné kodeky" + "Zakázať voliteľné kodeky" + "Použiť voľbu systému (predvolené)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index c97448fe4b58e316bbe5f87ee448981f07070650..2bf91566160b1835c30dbce46c204677fc742f46 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -40,12 +40,16 @@ "Pripojené prostredníctvom %1$s" "K dispozícii prostredníctvom %1$s" "Pripojené, žiadny internet" + "Prístupový bod je dočasne plný" + "Pripojené prostredníctvom operátora %1$s" + "K dispozícii prostredníctvom operátora %1$s" "Veľmi nízka" "Nízka" "OK" "Stredná" "Vysoká" "Veľmi vysoká" + "%1$s / %2$s" "Odpojený" "Prebieha odpájanie..." "Prebieha pripájanie…" @@ -101,6 +105,8 @@ "Dve čiarky signálu Wi‑Fi." "Tri čiarky signálu Wi‑Fi." "Plný signál Wi‑Fi." + "Otvorená sieť" + "Zabezpečená sieť" "OS Android" "Odstránené aplikácie" "Odstránené aplikácie a používatelia" @@ -187,6 +193,7 @@ "Vždy povoliť funkciu Wi‑Fi Roam Scans" "Mobilné dáta ponechať vždy aktívne" "Hardvérovú akcelerácia pre tethering" + "Zobrazovať zariadenia Bluetooth bez názvov" "Zakázať absolútnu hlasitosť" "Povoliť zvonenie v hovorovom pásme" "Verzia rozhrania Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Kodek LDAC Bluetooth Audio: Kvalita prehrávania" "Vybrať kodek LDAC Bluetooth Audio:\nKvalita prehrávania" "Streamovanie: %1$s" + "Súkromné DNS" + "Výber súkromného režimu DNS" + "Vypnuté" + "Príležitostné" + "Súkromný názov hostiteľa poskytovateľa DNS" + "Zadajte názov hostiteľa poskytovateľa DNS" "Zobraziť možnosti certifikácie bezdrôtového zobrazenia" "Zvýšiť úroveň denníkov Wi‑Fi, zobrazovať podľa SSID RSSI pri výbere siete Wi‑Fi" "Keď túto možnosť zapnete, Wi‑Fi bude agresívnejšie odovzdávať dátové pripojenie na mobilnú sieť vtedy, keď bude slabý signál Wi‑Fi" @@ -226,6 +239,7 @@ "Tieto nastavenia sú určené len pre vývojárov. Môžu spôsobiť poruchu alebo nesprávne fungovanie zariadenia a nainštalovaných aplikácií." "Overovať aplikácie z USB" "Kontrolovať škodlivosť aplikácií nainštalovaných pomocou nástroja ADB alebo ADT" + "Zariadenia Bluetooth sa budú zobrazovať bez názvov (iba adresy MAC)" "Umožňuje zakázať funkciu absolútnej hlasitosti rozhrania Bluetooth v prípade problémov s hlasitosťou na vzdialených zariadeniach, ako je napríklad neprijateľne vysoká hlasitosť alebo absencia ovládacích prvkov." "Umožňuje prehrávať tóny zvonenia na telefóne v náhlavných súpravách Bluetooth" "Miestny terminál" @@ -345,12 +359,11 @@ "^1 – zostávajúci čas: ^2" "%1$s%2$s" "^1^2 do úplného nabitia" - "^1^2" "Neznáme" "Nabíja sa" "nabíja sa" "Nenabíja sa" - "Nenabíja sa" + "Pripojené, ale nie je možné nabíjať" "Nabitá" "Ovládané správcom" "Povolené správcom" @@ -375,7 +388,6 @@ "Vlastné (%d)" "Pomocník a spätná väzba" "Ponuka" - "GMT" "Zadajte heslo na obnovenie továrenských nastavení v režime ukážky" "Ďalej" "Vyžaduje sa heslo" diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml index 40ec1348b8738b97718242de26bdbef0c40d6258..a924bdbed8d7dee1c903abd4bb7fa75f077ad674 100644 --- a/packages/SettingsLib/res/values-sl/arrays.xml +++ b/packages/SettingsLib/res/values-sl/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Uporabi sistemsko izbiro (privzeto)" + "SBC" + "AAC" + "Zvok Qualcomm® aptX™" + "Zvok Qualcomm® aptX™ HD" + "LDAC" + "Omogoči izbirne kodeke" + "Onemogoči izbirne kodeke" + + + "Uporabi sistemsko izbiro (privzeto)" + "SBC" + "AAC" + "Zvok Qualcomm® aptX™" + "Zvok Qualcomm® aptX™ HD" + "LDAC" + "Omogoči izbirne kodeke" + "Onemogoči izbirne kodeke" + "Uporabi sistemsko izbiro (privzeto)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 28f2af673d0bf7cd7b2f7dbccb83ef233e3549a5..3317438ccaca967f8a3bea6e2d0e8e3a80483608 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -40,12 +40,16 @@ "Vzpostavljena povezava prek: %1$s" "Na voljo prek: %1$s" "Vzpostavljena povezava, brez interneta" + "Dostopna točka je trenutno zasedena" + "Vzpostavljena povezava prek: %1$s" + "Na voljo prek: %1$s" "Zelo počasna" "Počasna" "V redu" "Srednje hitra" "Hitra" "Zelo hitra" + "%1$s/%2$s" "Prekinjena povezava" "Prekinjanje povezave ..." "Vzpostavljanje povezave ..." @@ -101,6 +105,8 @@ "Dve črtici signala Wi-Fi." "Tri črtice signala Wi-Fi." "Poln signal Wi-Fi." + "Odprto omrežje" + "Varno omrežje" "OS Android" "Odstranjene aplikacije" "Odstranjene aplikacije in uporabniki" @@ -187,6 +193,7 @@ "Vedno omogoči iskanje omrežij Wi-Fi za gostovanje" "Prenos podatkov v mobilnem omrežju je vedno aktiven" "Strojno pospeševanje za internetno povezavo prek mobilnega telefona" + "Naprave Bluetooth prikaži brez imen" "Onemogočanje absolutnega praga glasnosti" "Omogoči zvonjenje iz telefona" "Različica profila AVRCP za Bluetooth" @@ -202,6 +209,12 @@ "Zvočni kodek LDAC za Bluetooth: kakovost predvajanja" "Izberi zvočni kodek LDAC za Bluetooth:\nKakovost predvajanja" "Pretočno predvajanje: %1$s" + "Zasebni strežnik DNS" + "Izbira načina zasebnega strežnika DNS" + "Izklopljeno" + "Priložnostno" + "Ime gostitelja pri ponudniku zasebnega strežnika DNS" + "Vnesite ime gostitelja pri ponudniku strežnika DNS" "Pokaži možnosti za potrdilo brezžičnega zaslona" "Povečaj raven zapis. dnev. za Wi-Fi; v izbir. Wi‑Fi-ja pokaži glede na SSID RSSI" "Če je ta možnost omogočena, Wi-Fi odločneje preda podatkovno povezavo mobilnemu omrežju, ko je signal Wi-Fi šibek." @@ -226,6 +239,7 @@ "Te nastavitve so namenjene samo za razvijanje in lahko povzročijo prekinitev ali napačno delovanje naprave in aplikacij v njej." "Preveri aplikacije prek USB" "Preveri, ali so aplikacije, nameščene prek ADB/ADT, škodljive." + "Naprave Bluetooth bodo prikazane brez imen (samo z naslovi MAC)" "Onemogoči funkcijo absolutnega praga glasnosti za Bluetooth, če pride do težav z glasnostjo z oddaljenimi napravami, kot je nesprejemljivo visoka glasnost ali pomanjkanje nadzora." "Omogoči, da se toni zvonjenja v telefonu predvajajo v slušalkah z mikrofonom Bluetooth" "Lokalni terminal" @@ -345,12 +359,11 @@ "^1 – še ^2" "%1$s%2$s" "^1^2 do napolnjenosti" - "^1^2" "Neznano" "Polnjenje" "polnjenje" "Se ne polni" - "Se ne polni" + "Priključeno, trenutno ni mogoče polniti" "Poln" "Nadzira skrbnik" "Omogočil skrbnik" @@ -375,7 +388,6 @@ "Po meri (%d)" "Pomoč in povratne informacije" "Meni" - "GMT" "Geslo za tovar. nast. v predstav. načinu" "Naprej" "Vnesite geslo" diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml index 46a7ae9f683ec30ca2a7c864a20ef1fd99c97b38..244a534c4af86c43dd4d57a729177785fe9ac706 100644 --- a/packages/SettingsLib/res/values-sq/arrays.xml +++ b/packages/SettingsLib/res/values-sq/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Përdor përzgjedhjen e sistemit (e parazgjedhur)" + "SBC" + "AAC" + "Audioja e Qualcomm® aptX™" + "Audioja e Qualcomm® aptX™ HD" + "LDAC" + "Aktivizo kodekët opsionalë" + "Çaktivizo kodekët opsionalë" + + + "Përdor përzgjedhjen e sistemit (e parazgjedhur)" + "SBC" + "AAC" + "Audioja e Qualcomm® aptX™" + "Audioja e Qualcomm® aptX™ HD" + "LDAC" + "Aktivizo kodekët opsionalë" + "Çaktivizo kodekët opsionalë" + "Përdor përzgjedhjen e sistemit (e parazgjedhur)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 34d033364022fc2de05656d1064e5909fc828fca..51e6d360086a819c07e23ccb1d660d83a9e8e39d 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -40,12 +40,16 @@ "E lidhur përmes %1$s" "E mundshme përmes %1$s" "U lidh, nuk ka internet" + "Pika e qasjes është përkohësisht plot" + "E lidhur përmes %1$s" + "E disponueshme përmes %1$s" "Shumë e ulët" "E ngadaltë" "Në rregull" "Mesatare" "E shpejtë" "Shumë e shpejtë" + "%1$s / %2$s" "Shkëputur" "Po shkëputet..." "Po lidhet..." @@ -101,6 +105,8 @@ "Wi-Fi ka dy vija." "Wi-Fi: tre vija." "Wi-Fi ka sinjal të plotë." + "Rrjet i hapur" + "Rrjet i sigurt" "Sistemi operativ Android" "Aplikacionet e hequra" "Aplikacionet dhe përdoruesit e hequr" @@ -187,6 +193,7 @@ "Lejo gjithmonë skanimet për Wi-Fi edhe kur je në lëvizje" "Të dhënat celulare gjithmonë aktive" "Përshpejtimi i harduerit për ndarjen" + "Shfaq pajisjet me Bluetooth pa emra" "Çaktivizo volumin absolut" "Aktivizo zilen brenda të njëjtit brez" "Versioni AVRCP i Bluetooth-it" @@ -202,6 +209,12 @@ "Kodeku LDAC i audios së Bluetooth-it: Cilësia e luajtjes" "Zgjidh kodekun LDAC të audios së Bluetooth-it:\nCilësia e luajtjes" "Transmetimi: %1$s" + "DNS-ja private" + "Zgjidh modalitetin e DNS-së private" + "Joaktiv" + "Oportunist" + "Emri i pritësit të ofruesit të DNS-së private" + "Fut emrin e pritësit të ofruesit të DNS-së" "Shfaq opsionet për certifikimin e ekranit valor" "Rrit nivelin regjistrues të Wi‑Fi duke shfaqur SSID RSSI-në te Zgjedhësi i Wi‑Fi" "Kur ky funksion aktivizohet, Wi‑Fi bëhet më agresiv në kalimin e lidhjes së të dhënave te rrjeti celular, në rastet kur sinjali Wi‑Fi është i dobët" @@ -226,6 +239,7 @@ "Këto cilësime janë të projektuara vetëm për përdorim në programim. Ato mund të shkaktojnë që pajisja dhe aplikacionet në të, të mos punojnë ose të veprojnë në mënyrë të gabuar." "Verifiko apl. përmes USB-së" "Kontrollo aplikacionet e instaluara nëpërmjet ADB/ADT për sjellje të dëmshme." + "Pajisjet me Bluetooth do të shfaqen pa emra (vetëm adresat MAC)" "Çaktivizon funksionin e volumit absolut të Bluetooth në rast të problemeve të volumit me pajisjet në largësi, si p.sh. një volum i lartë i papranueshëm ose mungesa e kontrollit." "Lejo që zilet në telefon të luhen në kufjet me \"Bluetooth\"" "Terminali lokal" @@ -345,12 +359,11 @@ "^1 - ^2 të mbetura" "%1$s - %2$s" "^1 - ^2 derisa të mbushet plotësisht" - "^1 - ^2" "I panjohur" "Po ngarkohet" "po ngarkohet" "Nuk po ngarkohet" - "Nuk po ngarkohet" + "Në prizë, por nuk mund të ngarkohet për momentin" "E mbushur" "Kontrolluar nga administratori" "Aktivizuar nga administratori" @@ -375,7 +388,6 @@ "I personalizuar (%d)" "Ndihma dhe komentet" "Menyja" - "GMT" "Fut fjalëkalimin për të kryer rivendosje në gjendje fabrike në modalitetin e demonstrimit" "Përpara" "Kërkohet fjalëkalimi" diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml index f097b01f218d5d031ab34eed8f5cbed2769dd01d..4486bf193698c1790bf79b34ba1ba237142d236f 100644 --- a/packages/SettingsLib/res/values-sr/arrays.xml +++ b/packages/SettingsLib/res/values-sr/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Користи избор система (подразумевано)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Омогући опционалне кодеке" + "Онемогући опционалне кодеке" + + + "Користи избор система (подразумевано)" + "SBC" + "AAC" + "Qualcomm® aptX™ аудио" + "Qualcomm® aptX™ HD аудио" + "LDAC" + "Омогући опционалне кодеке" + "Онемогући опционалне кодеке" + "Користи избор система (подразумевано)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 2b21d30a671756625afa074a3d09de89048bd3e8..a9d16dbe30f9dd4ef40c91567507393df9956a58 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -40,12 +40,16 @@ "Веза је успостављена преко приступне тачке %1$s" "Доступна је преко приступне тачке %1$s" "Веза је успостављена, нема интернета" + "Приступна тачка је привремено заузета" + "Повезано преко %1$s" + "Доступно преко %1$s" "Веома спора" "Спора" "Потврди" "Средња" "Брза" "Веома брза" + "%1$s/%2$s" "Веза је прекинута" "Прекидање везе..." "Повезивање…" @@ -101,6 +105,8 @@ "Wi-Fi сигнал има две црте." "Wi-Fi сигнал има три црте." "Wi-Fi сигнал је најјачи." + "Отворена мрежа" + "Безбедна мрежа" "Android ОС" "Уклоњене апликације" "Уклоњене апликације и корисници" @@ -187,6 +193,7 @@ "Увек дозволи скенирање Wi‑Fi-ја у ромингу" "Мобилни подаци су увек активни" "Хардверско убрзање привезивања" + "Прикажи Bluetooth уређаје без назива" "Онемогући главно подешавање јачине звука" "Омогућавање звоњаве на истом каналу" "Верзија Bluetooth AVRCP-а" @@ -202,6 +209,12 @@ "Bluetooth аудио кодек LDAC: квалитет репродукције" "Изаберите Bluetooth аудио кодек LDAC:\nквалитет репродукције" "Стримовање: %1$s" + "Приватни DNS" + "Изаберите режим приватног DNS-а" + "Искључено" + "Оппортунистички" + "Име хоста добављача услуге приватног DNS-а" + "Унесите име хоста добављача услуге DNS-а" "Приказ опција за сертификацију бежичног екрана" "Повећава ниво евидентирања за Wi‑Fi. Приказ по SSID RSSI-у у бирачу Wi‑Fi мреже" "Кад се омогући, Wi‑Fi ће бити агресивнији при пребацивању мреже за пренос података на мобилну ако је Wi‑Fi сигнал слаб" @@ -226,6 +239,7 @@ "Ова подешавања су намењена само за програмирање. Могу да изазову престанак функционисања или неочекивано понашање уређаја и апликација на њему." "Верификуј апликације преко USB-а" "Проверава да ли су апликације инсталиране преко ADB-а/ADT-а штетне." + "Биће приказани Bluetooth уређаји без назива (само са MAC адресама)" "Онемогућава главно подешавање јачине звука на Bluetooth уређају у случају проблема са јачином звука на даљинским уређајима, као што су изузетно велика јачина звука или недостатак контроле." "Омогућите да се мелодија звона на телефону пушта преко Bluetooth слушалица" "Локални терминал" @@ -345,12 +359,11 @@ "Преостало је ^1^2" "%1$s%2$s" "^1^2 до потпуног пуњења" - "^1^2" "Непознато" "Пуњење" "пуни се" "Не пуни се" - "Не пуни се" + "Прикључено је, али пуњење тренутно није могуће" "Пуно" "Контролише администратор" "Омогућио је администратор" @@ -375,7 +388,6 @@ "Прилагођени (%d)" "Помоћ и повратне информације" "Мени" - "GMT" "Унесите лозинку да бисте обавили ресетовање на фабричка подешавања у режиму демонстрације" "Даље" "Потребна је лозинка" diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml index 37cb084cc6398235536e3bb3b5c7f563e8fc05fa..de1e54f65fd10943bfe6afff874398245d7c66e7 100644 --- a/packages/SettingsLib/res/values-sv/arrays.xml +++ b/packages/SettingsLib/res/values-sv/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Använd systemval (standardinställning)" + "SBC" + "AAC" + "Qualcomm® aptX™-ljud" + "Qualcomm® aptX™ HD-ljud" + "LDAC" + "Aktivera valfria kodekar" + "Inaktivera valfria kodekar" + + + "Använd systemval (standardinställning)" + "SBC" + "AAC" + "Qualcomm® aptX™-ljud" + "Qualcomm® aptX™ HD-ljud" + "LDAC" + "Aktivera valfria kodekar" + "Inaktivera valfria kodekar" + "Använd systemval (standardinställning)" "44,1 kHz" @@ -215,7 +231,7 @@ "Av" - "Visa områden som överskrider gränsen" + "Visa överritningsområden" "Visa områden för deuteranomali" diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 172a7d1bb7d1cec241e6ce8b0c3b003e7dc6b720..6ba95b45204bf4d2520bde7e1170054d112f6173 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -40,12 +40,16 @@ "Anslutet via %1$s" "Tillgängligt via %1$s" "Ansluten, inget internet" + "Åtkomstpunkten har inga platser över för tillfället" + "Anslutet via %1$s" + "Tillgängligt via %1$s" "Mycket långsam" "Långsam" "Okej" "Medelsnabb" "Snabb" "Mycket snabb" + "%1$s/%2$s" "Kopplas ifrån" "Kopplar ifrån…" "Ansluter…" @@ -101,6 +105,8 @@ "Wi-Fi: två staplar." "Wi-Fi: tre staplar." "Full signalstyrka för Wi-Fi." + "Öppet nätverk" + "Säkert nätverk" "Operativsystemet Android" "Borttagna appar" "Borttagna appar och användare" @@ -187,6 +193,7 @@ "Tillåt alltid sökning efter Wi-Fi-roaming" "Mobildata alltid aktiverad" "Maskinvaruacceleration för internetdelning" + "Visa namnlösa Bluetooth-enheter" "Inaktivera Absolute volume" "Aktivera samtal inom nätverket" "AVRCP-version för Bluetooth" @@ -202,6 +209,12 @@ "Bluetooth-ljud via LDAC-kodek: uppspelningskvalitet" "Välj Bluetooth-ljud via LDAC-kodek:\nuppspelningskvalitet" "Streaming: %1$s" + "Privat DNS" + "Välj läget Privat DNS" + "Av" + "Opportunistisk" + "Värdnamn för leverantör av privat DNS" + "Ange värdnamn för DNS-leverantör" "Visa certifieringsalternativ för Wi-Fi-skärmdelning" "Öka loggningsnivån för Wi-Fi, visa per SSID RSSI i Wi‑Fi Picker" "När funktionen har aktiverats kommer dataanslutningen lämnas över från Wi-Fi till mobilen på ett aggressivare sätt när Wi-Fi-signalen är svag" @@ -226,6 +239,7 @@ "Inställningarna är endast avsedda att användas för utvecklingsändamål. De kan orsaka problem med enheten eller apparna som finns installerade på den." "Verifiera appar via USB" "Kontrollera om appar som installeras via ADB/ADT kan vara skadliga." + "Bluetooth-enheter utan namn (enbart MAC-adresser) visas" "Inaktivera Bluetooth-funktionen Absolute volume om det skulle uppstå problem med volymen på fjärrenheter, t.ex. alldeles för hög volym eller brist på kontroll." "Tillåt att ringsignaler på mobilen kan spelas upp i Bluetooth-headset" "Lokal terminal" @@ -259,7 +273,7 @@ "Visningar blinkar i fönster vid GPU-ritningar" "Visa maskinvaruskiktuppd." "Låt maskinvaruskikt blinka grönt vid uppdateringar" - "Felsök överskriden GPU" + "Felsök GPU-överritning" "Ange GPU-renderare" "Inaktivera HW-överlagringar" "Använd alltid GPU för skärmsammansättning" @@ -345,12 +359,11 @@ "^1^2 kvar" "%1$s%2$s" "^1^2 tills det är fulladdat" - "^1^2" "Okänd" "Laddar" "laddas" "Laddar inte" - "Laddar inte" + "Inkopplad, kan inte laddas just nu" "Fullt" "Strys av administratören" "Aktiverad av administratör" @@ -375,7 +388,6 @@ "Anpassad (%d)" "Hjälp och feedback" "Meny" - "GMT" "Ange lösenord och utför fabriksåterställning i demoläge" "Nästa" "Lösenord krävs" diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml index 53d003d92a6a6f56048e81f238bbc99e349c316d..b694687d8bde22af03152368bbffebb683b8dd89 100644 --- a/packages/SettingsLib/res/values-sw/arrays.xml +++ b/packages/SettingsLib/res/values-sw/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Tumia Uteuzi wa Mfumo (Chaguo-msingi)" + "SBC" + "AAC" + "Sauti ya Qualcomm® aptX™" + "Sauti ya Qualcomm® aptX™ HD" + "LDAC" + "Washa Kodeki Zisizo za Lazima" + "Zima Kodeki Zisizo za Lazima" + + + "Tumia Uteuzi wa Mfumo (Chaguo-msingi)" + "SBC" + "AAC" + "Sauti ya Qualcomm® aptX™" + "Sauti ya Qualcomm® aptX™ HD" + "LDAC" + "Washa Kodeki Zisizo za Lazima" + "Zima Kodeki Zisizo za Lazima" + "Tumia Uteuzi wa Mfumo (Chaguo-msingi)" "kHz 44.1" diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 18181181575921964f3a159ebf1bd10f8cf385f3..d03472bc1b1ebeb980a6df2d657ec9f6c9cb68e2 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -40,12 +40,16 @@ "Imeunganishwa kupitia %1$s" "Inapatikana kupitia %1$s" "Imeunganishwa, hakuna Intaneti" + "Lango la mtandao lina shughuli nyingi kwa sasa" + "Imeunganishwa kupitia %1$s" + "Inapatikana kupitia %1$s" "Polepole Sana" "Polepole" "Sawa" "Wastani" "Haraka" "Haraka Sana" + "%1$s / %2$s" "Haijaunganishwa" "Inatenganisha..." "Inaunganisha…" @@ -101,6 +105,8 @@ "Vipima mtandao viwili vya Wifi." "Vipima mtandao vitatu vya Wifi." "Nguvu kamili ya mtandao wa Wifi." + "Mtandao unaotumiwa na mtu yeyote" + "Mtandao salama" "OS ya Android" "Programu zilizoondolewa" "Watumiaji na programu ziilizoondolewa" @@ -187,6 +193,7 @@ "Ruhusu Uchanganuzi wa Matumizi ya Mitandao mingine" "Iendelee kutumia data ya simu" "Kuongeza kasi kwa kutumia maunzi ili kusambaza mtandao" + "Onyesha vifaa vya Bluetooth visivyo na majina" "Zima sauti kamili" "Washa kipengele cha mlio wa simu katika kituo hicho hicho" "Toleo la Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Kodeki ya LDAC ya Sauti ya Bluetooth: Ubora wa Kucheza" "Chagua Kodeki ya LDAC ya Sauti ya Bluetooth:\nUbora wa Kucheza" "Kutiririsha: %1$s" + "DNS ya Faragha" + "Chagua Hali ya DNS ya Faragha" + "Imezimwa" + "Inayojitokeza" + "Jina la mpangishi wa huduma za DNS ya faragha" + "Weka jina la mpangishi wa huduma za DNS" "Onyesha chaguo za cheti cha kuonyesha pasiwaya" "Ongeza hatua ya uwekaji kumbukumbu ya Wi-Fi, onyesha kwa kila SSID RSSI kwenye Kichukuzi cha Wi-Fi" "Ikiwashwa, Wi-Fi itakabidhi kwa hima muunganisho wa data kwa mtandao wa simu, wakati mtandao wa Wi-Fi si thabiti" @@ -226,6 +239,7 @@ "Mipangilio hii imekusudiwa kwa matumizi ya usanidi tu. Inaweza kusababisha kifaa chako na programu zilizoko kuvunjika au kutofanya kazi vizuri." "Thibitisha programu kupitia USB" "Kagua programu zilizosakinishwa kupitia ADB/ADT kwa tabia ya kudhuru." + "Itaonyesha vifaa vya Bluetooth bila majina (anwani za MAC pekee)" "Huzima kipengele cha Bluetooth cha sauti kamili kunapotokea matatizo ya sauti katika vifaa vya mbali kama vile sauti ya juu mno au inaposhindikana kuidhibiti." "Ruhusu milio ya simu kwenye simu ichezwe kwenye Vifaa vya sauti vya Bluetooth" "Kituo cha karibu" @@ -297,7 +311,7 @@ "Ruhusu uwezo wa kutumia madirisha ya majaribio yenye muundo huru." "Nenosiri la hifadhi rudufu ya eneo kazi" "Hifadhi rudufu kamili za eneo kazi hazijalindwa kwa sasa" - "Gonga ili ubadilishe au uondoe nenosiri la hifadhi rudufu kamili za eneo kazi" + "Gusa ili ubadilishe au uondoe nenosiri la hifadhi rudufu kamili za eneo kazi" "Nenosiri jipya la hifadhi rudufu limewekwa" "Nenosiri jipya na uthibitisho havioani" "Imeshindwa kuweka nenosiri la hifadhi rudufu" @@ -312,8 +326,8 @@ "Rangi zilizoboreshwa kwa ajili ya maudhui dijitali" "Programu zilizozimwa" - "Haitumika. Gonga ili ugeuze." - "Inatumika. Gonga ili ugeuze." + "Haitumika. Gusa ili ugeuze." + "Inatumika. Gusa ili ugeuze." "Huduma zinazoendeshwa" "Onyesha na dhibiti huduma zinazoendeshwa kwa sasa" "Utekelezaji wa WebView" @@ -345,12 +359,11 @@ "Imechaji ^1 - Zimesalia ^2" "%1$s - %2$s" "^1 - ^2 hadi ijae chaji" - "^1 - ^2" "Haijulikani" "Inachaji" "inachaji" "Haichaji" - "Haichaji" + "Haiwezi kuchaji kwa sasa" "Imejaa" "Imedhibitiwa na msimamizi" "Imewashwa na msimamizi" @@ -375,7 +388,6 @@ "Kiwango maalum (%d)" "Usaidizi na maoni" "Menyu" - "GMT" "Weka nenosiri ili urejeshe mipangilio ya kiwandani ikiwa katika hali ya onyesho." "Inayofuata" "Nenosiri linahitajika" diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml index 61ff58aa53d051c15807138f5b06cc0ace3668ba..2d75c0164f7c2897ac136de586365295c637896f 100644 --- a/packages/SettingsLib/res/values-ta/arrays.xml +++ b/packages/SettingsLib/res/values-ta/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)" + "SBC" + "AAC" + "Qualcomm® aptX™ ஆடியோ" + "Qualcomm® aptX™ HD ஆடியோ" + "LDAC" + "கட்டாயமில்லா கோடெக்குகளை இயக்கு" + "கட்டாயமில்லா கோடெக்குகளை முடக்கு" + + + "சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)" + "SBC" + "AAC" + "Qualcomm® aptX™ ஆடியோ" + "Qualcomm® aptX™ HD ஆடியோ" + "LDAC" + "கட்டாயமில்லா கோடெக்குகளை இயக்கு" + "கட்டாயமில்லா கோடெக்குகளை முடக்கு" + "சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index fde89df0fc5fffbe55a4c6a478df7c0357175fa5..3f0f2f05c496f3fa98d7f6ed3e94a9c458231414 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -40,12 +40,16 @@ "%1$s வழியாக இணைக்கப்பட்டது" "%1$s வழியாகக் கிடைக்கிறது" "இணைக்கப்பட்டது, இணையம் இல்லை" + "தற்காலிகமாக அணுகல் புள்ளி நிரம்பியுள்ளது" + "%1$s வழியாக இணைக்கப்பட்டது" + "%1$s வழியாகக் கிடைக்கிறது" "மிகவும் வேகம் குறைவானது" "வேகம் குறைவு" "சரி" "நடுத்தரம்" "வேகம்" "மிகவும் வேகமானது" + "%1$s / %2$s" "தொடர்பு துண்டிக்கப்பட்டது" "துண்டிக்கிறது..." "இணைக்கிறது..." @@ -101,6 +105,8 @@ "வைஃபை சிக்னல்: இரண்டு கோடுகள்." "வைஃபை சிக்னல்: மூன்று கோடுகள்." "வைஃபை சிக்னல் முழுமையாக உள்ளது." + "கடவுச்சொல் தேவைப்படாத திறந்த நெட்வொர்க்" + "கடவுச்சொல் தேவைப்படும் பாதுகாப்பான நெட்வொர்க்" "Android OS" "அகற்றப்பட்ட பயன்பாடுகள்" "அகற்றப்பட்ட பயன்பாடுகள் மற்றும் பயனர்கள்" @@ -187,6 +193,7 @@ "எப்போதும் வைஃபை ரோமிங் ஸ்கேன்களை அனுமதி" "மொபைல் டேட்டாவை எப்போதும் இயக்கத்திலேயே வை" "வன்பொருள் விரைவுப்படுத்துதல் இணைப்பு முறை" + "பெயர்கள் இல்லாத புளூடூத் சாதனங்களைக் காட்டு" "அப்சல்யூட் ஒலியளவு அம்சத்தை முடக்கு" "இன்-பேண்ட் ரிங் செய்வதை இயக்கு" "புளூடூத் AVRCP பதிப்பு" @@ -202,6 +209,12 @@ "புளூடூத் ஆடியோ LDAC கோடெக்: வீடியோவின் தரம்" "புளூடூத் ஆடியோ LDAC கோடெக்கைத் தேர்ந்தெடுக்கவும்:\nவீடியோவின் தரம்" "ஸ்ட்ரீமிங்: %1$s" + "தனிப்பட்ட DNS" + "தனிப்பட்ட DNS பயன்முறையைத் தேர்ந்தெடுக்கவும்" + "ஆஃப்" + "சந்தர்ப்பவாதம்" + "தனிப்பட்ட DNS வழங்குநரின் ஹோஸ்ட் பெயர்" + "DNS வழங்குநரின் ஹோஸ்ட் பெயரை உள்ளிடவும்" "வயர்லெஸ் காட்சி சான்றுக்கான விருப்பங்களைக் காட்டு" "Wifi நுழைவு அளவை அதிகரித்து, வைஃபை தேர்வியில் ஒவ்வொன்றிற்கும் SSID RSSI ஐ காட்டுக" "இயக்கப்பட்டதும், வைஃபை சிக்னல் குறையும் போது, வைஃபை முழுமையாக ஒத்துழைக்காமல் இருந்தால் மொபைல் தரவிற்கு மாறும்" @@ -226,6 +239,7 @@ "இந்த அமைப்பு மேம்பட்டப் பயன்பாட்டிற்காக மட்டுமே. உங்கள் சாதனம் மற்றும் அதில் உள்ள பயன்பாடுகளைச் சிதைக்கும் அல்லது தவறாகச் செயல்படும் வகையில் பாதிப்பை ஏற்படுத்தும்." "USB பயன்பாடுகளை சரிபார்" "தீங்கு விளைவிக்கும் செயல்பாட்டை அறிய ADB/ADT மூலம் நிறுவப்பட்டப் பயன்பாடுகளைச் சரிபார்." + "பெயர்கள் இல்லாத புளூடூத் சாதனங்கள் (MAC முகவரிகள் மட்டும்) காட்டப்படும்" "மிகவும் அதிகமான ஒலியளவு அல்லது கட்டுப்பாடு இழப்பு போன்ற தொலைநிலைச் சாதனங்களில் ஏற்படும் ஒலி தொடர்பான சிக்கல்கள் இருக்கும் சமயங்களில், புளூடூத் அப்சல்யூட் ஒலியளவு அம்சத்தை முடக்கும்." "ஃபோனில் இருக்கும் ரிங்டோன்களை, புளூடூத் ஹெட்செட்களில் இயக்க அனுமதி" "அக முனையம்" @@ -345,12 +359,11 @@ "^1 - ^2 மீதமுள்ளது" "%1$s - %2$s" "^1 - முழு சார்ஜாக ^2 ஆகும்" - "^1 - ^2" "அறியப்படாத" "சார்ஜ் ஆகிறது" "சார்ஜ் ஆகிறது" "சார்ஜ் செய்யப்படவில்லை" - "சார்ஜ் ஏறவில்லை" + "செருகப்பட்டது, ஆனால் இப்போது சார்ஜ் செய்ய முடியவில்லை" "முழுவதும் சார்ஜ் ஆனது" "நிர்வாகி கட்டுப்படுத்துகிறார்" "நிர்வாகி இயக்கியுள்ளார்" @@ -375,7 +388,6 @@ "தனிப்பயன் (%d)" "உதவி & கருத்து" "மெனு" - "GMT" "டெமோ பயன்முறையில் ஆரம்பநிலை மீட்டமைவைச் செயல்படுத்த, கடவுச்சொல்லை உள்ளிடவும்" "அடுத்து" "கடவுச்சொல் தேவை" diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml index f12fd2affe21a25b10f9972219d3ca16cd55c61e..39d84dda5d314ab7657903e23140bd9bcd615b16 100644 --- a/packages/SettingsLib/res/values-te/arrays.xml +++ b/packages/SettingsLib/res/values-te/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "సిస్టమ్ ఎంపికను ఉపయోగించండి (డిఫాల్ట్)" + "SBC" + "AAC" + "Qualcomm® aptX™ ఆడియో" + "Qualcomm® aptX™ HD ఆడియో" + "LDAC" + "ఐచ్ఛిక కోడెక్‌లను ప్రారంభించు" + "ఐచ్ఛిక కోడెక్‌లను నిలిపివేయి" + + + "సిస్టమ్ ఎంపికను ఉపయోగించండి (డిఫాల్ట్)" + "SBC" + "AAC" + "Qualcomm® aptX™ ఆడియో" + "Qualcomm® aptX™ HD ఆడియో" + "LDAC" + "ఐచ్ఛిక కోడెక్‌లను ప్రారంభించు" + "ఐచ్ఛిక కోడెక్‌లను నిలిపివేయి" + "సిస్టమ్ ఎంపికను ఉపయోగించండి (డిఫాల్ట్)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index 42b08f133e398befaf41945a6704efa18e28915e..581a4cb55cd9eedfb48e2623898e071dbc82e546 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -40,12 +40,16 @@ "%1$s ద్వారా కనెక్ట్ చేయబడింది" "%1$s ద్వారా అందుబాటులో ఉంది" "కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు" + "యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండుకుంది" + "%1$s ద్వారా కనెక్ట్ చేయబడింది" + "%1$s ద్వారా అందుబాటులో ఉంది" "చాలా నెమ్మది" "నెమ్మది" "సరే" "మధ్యస్థం" "వేగవంతం" "చాలా వేగవంతం" + "%1$s / %2$s" "డిస్‌కనెక్ట్ చేయబడింది" "డిస్‌కనెక్ట్ చేస్తోంది..." "కనెక్ట్ చేస్తోంది..." @@ -101,6 +105,8 @@ "Wifi సిగ్నల్ రెండు బార్‌లు ఉంది." "Wifi సిగ్నల్ మూడు బార్‌లు ఉంది." "Wifi సిగ్నల్ పూర్తిగా ఉంది." + "ఓపెన్ నెట్‌వర్క్" + "సురక్షిత నెట్‌వర్క్" "Android OS" "తీసివేయబడిన అనువర్తనాలు" "తీసివేయబడిన అనువర్తనాలు మరియు వినియోగదారులు" @@ -187,6 +193,7 @@ "Wi‑Fi సంచార స్కాన్‌లను ఎల్లప్పుడూ అనుమతించు" "మొబైల్ డేటాని ఎల్లప్పుడూ సక్రియంగా ఉంచు" "టెథెరింగ్ హార్డ్‌వేర్ వేగవృద్ధి" + "పేర్లు లేని బ్లూటూత్ పరికరాలు చూపించు" "సంపూర్ణ వాల్యూమ్‌‍ను నిలిపివేయి" "ఇన్-బ్యాండ్ రింగింగ్‌ని ప్రారంభించండి" "బ్లూటూత్ AVRCP వెర్షన్" @@ -202,6 +209,12 @@ "బ్లూటూత్ ఆడియో LDAC కోడెక్: ప్లేబ్యాక్ నాణ్యత" "బ్లూటూత్ ఆడియో LDAC కోడెక్‌ని ఎంచుకోండి:\nప్లేబ్యాక్ నాణ్యత" "ప్రసారం చేస్తోంది: %1$s" + "ప్రైవేట్ DNS" + "ప్రైవేట్ DNS మోడ్‌ను ఎంచుకోండి" + "ఆఫ్" + "అవకాశవాదం" + "ప్రైవేట్ DNS ప్రదాత హోస్ట్‌పేరు" + "DNS ప్రదాత యొక్క హోస్ట్‌పేరును నమోదు చేయండి" "వైర్‌లెస్ ప్రదర్శన సర్టిఫికెట్ కోసం ఎంపికలను చూపు" "Wi‑Fi ఎంపికలో SSID RSSI ప్రకారం చూపబడే Wi‑Fi లాగింగ్ స్థాయిని పెంచండి" "ప్రారంభించబడినప్పుడు, Wi‑Fi సిగ్నల్ బలహీనంగా ఉంటే డేటా కనెక్షన్‌ను మొబైల్‌కి మార్చేలా Wi‑Fi చురుగ్గా వ్యవహరిస్తుంది" @@ -226,6 +239,7 @@ "ఈ సెట్టింగ్‌లు అభివృద్ధి వినియోగం కోసం మాత్రమే ఉద్దేశించబడినవి. వీటి వలన మీ పరికరం మరియు దీనిలోని యాప్‌లు విచ్ఛిన్నం కావచ్చు లేదా తప్పుగా ప్రవర్తించవచ్చు." "USB ద్వారా అనువర్తనాలను ధృవీకరించు" "హానికరమైన ప్రవర్తన కోసం ADB/ADT ద్వారా ఇన్‌స్టాల్ చేయబడిన అనువర్తనాలను తనిఖీ చేయి." + "పేర్లు (MAC చిరునామాలు మాత్రమే) లేని బ్లూటూత్ పరికరాలు ప్రదర్శించబడతాయి" "రిమోట్ పరికరాల్లో ఆమోదించలేని స్థాయిలో అధిక వాల్యూమ్ ఉండటం లేదా వాల్యూమ్ నియంత్రణ లేకపోవడం వంటి సమస్యలు ఉంటే బ్లూటూత్ సంపూర్ణ వాల్యూమ్ లక్షణాన్ని నిలిపివేస్తుంది." "బ్లూటూత్ హెడ్‌సెట్‌లలో ప్లే చేయడానికి ఫోన్‌లో రింగ్‌టోన్‌లను అనుమతించండి" "స్థానిక టెర్మినల్" @@ -345,12 +359,11 @@ "^1 - ^2 మిగిలి ఉంది" "%1$s - %2$s" "^1 - ^2లో పూర్తిగా ఛార్జ్ అవుతుంది" - "^1 - ^2" "తెలియదు" "ఛార్జ్ అవుతోంది" "ఛార్జ్ అవుతోంది" "ఛార్జ్ కావడం లేదు" - "ఛార్జ్ కావడం లేదు" + "ప్లగ్ ఇన్ చేయబడింది, ప్రస్తుతం ఛార్జ్ చేయడం సాధ్యం కాదు" "నిండింది" "నిర్వాహకుని ద్వారా నియంత్రించబడింది" "నిర్వాహకులు ప్రారంభించారు" @@ -375,7 +388,6 @@ "అనుకూలం (%d)" "సహాయం & అభిప్రాయం" "మెను" - "GMT" "డెమో మోడ్‌లో ఫ్యాక్టరీ రీసెట్‌ను నిర్వహించడానికి పాస్‌వర్డ్‌ను నమోదు చేయండి" "తర్వాత" "పాస్‌వర్డ్ అవసరం" diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml index 1ef6c1eaf530c45c94ca4e44f07c40e30657b26a..6d1c5d768d909a2d99bf9c96bc7272814f5c1004 100644 --- a/packages/SettingsLib/res/values-th/arrays.xml +++ b/packages/SettingsLib/res/values-th/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "ใช้การเลือกระบบ (ค่าเริ่มต้น)" + "SBC" + "AAC" + "เสียง Qualcomm® aptX™" + "เสียง Qualcomm® aptX™ HD" + "LDAC" + "เปิดใช้ตัวแปลงรหัสที่ไม่บังคับ" + "ปิดใช้ตัวแปลงรหัสที่ไม่บังคับ" + + + "ใช้การเลือกระบบ (ค่าเริ่มต้น)" + "SBC" + "AAC" + "เสียง Qualcomm® aptX™" + "เสียง Qualcomm® aptX™ HD" + "LDAC" + "เปิดใช้ตัวแปลงรหัสที่ไม่บังคับ" + "ปิดใช้ตัวแปลงรหัสที่ไม่บังคับ" + "ใช้การเลือกระบบ (ค่าเริ่มต้น)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 4f31238d75412b48ba995d06dabb4cb0494937de..a85f05366614d8d45e1037739777169ec3508641 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -40,12 +40,16 @@ "เชื่อมต่อผ่าน %1$s แล้ว" "พร้อมใช้งานผ่านทาง %1$s" "เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต" + "จุดเข้าใช้งานเต็มชั่วคราว" + "เชื่อมต่อผ่าน %1$s แล้ว" + "พร้อมใช้งานผ่านทาง %1$s" "ช้ามาก" "ช้า" "ตกลง" "ปานกลาง" "เร็ว" "เร็วมาก" + "%1$s/%2$s" "ตัดการเชื่อมต่อ" "กำลังตัดการเชื่อมต่อ..." "กำลังเชื่อมต่อ…" @@ -101,6 +105,8 @@ "สัญญาณ Wi-Fi 2 ขีด" "สัญญาณ Wi-Fi 3 ขีด" "สัญญาณ Wi-Fi เต็ม" + "เครือข่ายแบบเปิด" + "เครือข่ายที่ปลอดภัย" "ระบบปฏิบัติการของ Android" "แอปพลิเคชันที่นำออก" "แอปพลิเคชันและผู้ใช้ที่นำออก" @@ -187,6 +193,7 @@ "ใช้การสแกน Wi-Fi ข้ามเครือข่ายเสมอ" "เปิดใช้อินเทอร์เน็ตมือถือเสมอ" "การเร่งฮาร์ดแวร์การเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ" + "แสดงอุปกรณ์บลูทูธที่ไม่มีชื่อ" "ปิดใช้การควบคุมระดับเสียงของอุปกรณ์อื่น" "เปิดใช้การส่งเสียงในช่องสัญญาณเดียวกัน" "เวอร์ชันของบลูทูธ AVRCP" @@ -202,6 +209,12 @@ "ตัวแปลงรหัสเสียงบลูทูธที่ใช้ LDAC: คุณภาพการเล่น" "เลือกตัวแปลงรหัสเสียงบลูทูธที่ใช้ LDAC:\nคุณภาพการเล่น" "สตรีมมิง: %1$s" + "DNS ส่วนตัว" + "เลือกโหมด DNS ส่วนตัว" + "ปิด" + "ที่ใช้โอกาส" + "ชื่อโฮสต์ของผู้ให้บริการ DNS ส่วนตัว" + "ป้อนชื่อโฮสต์ของผู้ให้บริการ DNS" "แสดงตัวเลือกสำหรับการรับรองการแสดงผล แบบไร้สาย" "เพิ่มระดับการบันทึก Wi‑Fi แสดงต่อ SSID RSSI ในตัวเลือก Wi‑Fi" "เมื่อเปิดใช้แล้ว Wi-Fi จะส่งผ่านการเชื่อมต่อข้อมูลไปยังเครือข่ายมือถือเมื่อสัญญาณ Wi-Fi อ่อน" @@ -226,6 +239,7 @@ "การตั้งค่านี้มีไว้เพื่อการพัฒนาเท่านั้น จึงอาจทำให้อุปกรณ์และแอปพลิเคชันที่มีอยู่เสียหายหรือทำงานผิดพลาดได้" "ยืนยันแอปพลิเคชันผ่าน USB" "ตรวจสอบแอปพลิเคชันที่ติดตั้งผ่าน ADB/ADT เพื่อตรวจดูพฤติกรรมที่เป็นอันตราย" + "ระบบจะแสดงอุปกรณ์บลูทูธที่ไม่มีชื่อ (มีเฉพาะที่อยู่ MAC)" "ปิดใช้ฟีเจอร์การควบคุมระดับเสียงของอุปกรณ์อื่นผ่านบลูทูธในกรณีที่มีปัญหาเกี่ยวกับระดับเสียงของอุปกรณ์ระยะไกล เช่น ระดับเสียงที่ดังเกินไปหรือระดับเสียงที่ไม่มีการควบคุม" "ให้เสียงเรียกเข้าในโทรศัพท์เล่นในชุดหูฟังบลูทูธ" "เทอร์มินัลในตัวเครื่อง" @@ -345,12 +359,11 @@ "^1 - เหลืออีก ^2" "%1$s - %2$s" "^1 - ^2 จนกว่าจะชาร์จเต็ม" - "^1 - ^2" "ไม่ทราบ" "กำลังชาร์จ" "กำลังชาร์จ" "ไม่ได้ชาร์จ" - "ไม่ได้ชาร์จ" + "เสียบอยู่ ไม่สามารถชาร์จได้ในขณะนี้" "เต็ม" "ผู้ดูแลระบบเป็นผู้ควบคุม" "เปิดใช้โดยผู้ดูแลระบบ" @@ -375,7 +388,6 @@ "กำหนดเอง (%d)" "ความช่วยเหลือและความคิดเห็น" "เมนู" - "GMT" "ป้อนรหัสผ่านเพื่อรีเซ็ตค่าในโหมดสาธิต" "ถัดไป" "ต้องป้อนรหัสผ่าน" diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml index c643e496be2812207fe5fe677ba330dcb6ae557e..7a3fd30714fe7c915c1096ebf3db974dd494c3c4 100644 --- a/packages/SettingsLib/res/values-tl/arrays.xml +++ b/packages/SettingsLib/res/values-tl/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Gamitin ang Pagpili ng System (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ na audio" + "Qualcomm® aptX™ HD na audio" + "LDAC" + "I-enable ang Mga Opsyonal na Codec" + "I-disable ang Mga Opsyonal na Codec" + + + "Gamitin ang Pagpili ng System (Default)" + "SBC" + "AAC" + "Qualcomm® aptX™ na audio" + "Qualcomm® aptX™ HD na audio" + "LDAC" + "I-enable ang Mga Opsyonal na Codec" + "I-disable ang Mga Opsyonal na Codec" + "Gamitin ang Pagpili ng System (Default)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 42556a00f4abfaea1fa2072ee809a9ebd936674b..6c3d89f954f8dc058cdc221a52be9a148242af69 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -40,12 +40,16 @@ "Nakakonekta sa pamamagitan ng %1$s" "Available sa pamamagitan ng %1$s" "Nakakonekta, walang Internet" + "Pansamantalang puno ang access point" + "Nakakonekta sa pamamagitan ng %1$s" + "Available sa pamamagitan ng %1$s" "Napakabagal" "Mabagal" "OK" "Katamtaman" "Mabilis" "Napakabilis" + "%1$s / %2$s" "Hindi nakakonekta" "Nadidiskonekta..." "Kumukonekta…" @@ -101,6 +105,8 @@ "May dalawang bar ang Wifi." "May tatlong bar ang Wifi." "Puno ang signal ng Wifi." + "Bukas na network" + "Ligtas na network" "Android OS" "Mga inalis na app" "Mga inalis na apps at user" @@ -187,6 +193,7 @@ "Palaging payagan ang Mga Pag-scan sa Roaming ng Wi‑Fi" "Palaging aktibo ang mobile data" "Hardware acceleration para sa pag-tether" + "Ipakita ang mga Bluetooth device na walang pangalan" "I-disable ang absolute volume" "I-enable ang pag-ring na nasa band" "Bersyon ng AVRCP ng Bluetooth" @@ -202,6 +209,12 @@ "Audio LDAC Codec ng Bluetooth: Kalidad ng Pag-playback" "Piliin ang Audio LDAC Codec ng Bluetooth:\nKalidad ng Pag-playback" "Streaming: %1$s" + "Pribadong DNS" + "Pumili ng Pribadong DNS Mode" + "Naka-off" + "Oportunista" + "Hostname ng provider ng pribadong DNS" + "Ilagay ang hostname ng DNS provider" "Ipakita ang mga opsyon para sa certification ng wireless display" "Pataasin ang antas ng Wi‑Fi logging, ipakita sa bawat SSID RSSI sa Wi‑Fi Picker" "Kapag na-enable, magiging mas agresibo ang Wi‑Fi sa paglipat sa koneksyon ng mobile data kapag mahina ang signal ng Wi‑Fi" @@ -226,6 +239,7 @@ "Nilalayon ang mga setting na ito para sa paggamit sa pag-develop lamang. Maaaring magsanhi ang mga ito ng pagkasira o hindi paggana nang maayos ng iyong device at mga application na nandito." "I-verify ang mga app sa USB" "Tingnan kung may nakakahamak na pagkilos sa apps na na-install sa pamamagitan ng ADB/ADT." + "Ipapakita ang mga Bluetooth device na walang pangalan (mga MAC address lang)" "Dini-disable ang absolute volume feature ng Bluetooth kung may mga isyu sa volume ang mga malayong device gaya ng hindi katanggap-tanggap na malakas na volume o kawalan ng kontrol." "Payagan ang pag-play ng mga ringtone sa telepono sa mga headset na gumagamit ng Bluetooth" "Lokal na terminal" @@ -345,12 +359,11 @@ "^1 - ^2 pa" "%1$s - %2$s" "^1 - ^2 hanggang sa makumpleto ang charge" - "^1 - ^2" "Hindi Kilala" "Nagcha-charge" "nagcha-charge" "Hindi nagcha-charge" - "Hindi nagkakarga" + "Nakasaksak, hindi makapag-charge sa ngayon" "Puno" "Pinapamahalaan ng admin" "Na-enable ng admin" @@ -375,7 +388,6 @@ "Custom (%d)" "Tulong at feedback" "Menu" - "GMT" "Ilagay ang password upang mag-factory reset sa demo mode" "Susunod" "Kinakailangan ang password" diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml index b6d0ab226aa07174a006fe5de75b357f171a96e3..2a70fdaf947c1e1bbcc1c6c1c49b3dc04b1b30da 100644 --- a/packages/SettingsLib/res/values-tr/arrays.xml +++ b/packages/SettingsLib/res/values-tr/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Sistem Seçimini Kullan (Varsayılan)" + "SBC" + "AAC" + "Qualcomm® aptX™ ses" + "Qualcomm® aptX™ HD ses" + "LDAC" + "İsteğe Bağlı Codec\'leri Etkinleştir" + "İsteğe Bağlı Codec\'leri Devre Dışı Bırak" + + + "Sistem Seçimini Kullan (Varsayılan)" + "SBC" + "AAC" + "Qualcomm® aptX™ ses" + "Qualcomm® aptX™ HD ses" + "LDAC" + "İsteğe Bağlı Codec\'leri Etkinleştir" + "İsteğe Bağlı Codec\'leri Devre Dışı Bırak" + "Sistem Seçimini Kullan (Varsayılan)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index b0c60f55e5620c03d418b3138f2d52b4219b8fe3..61644972cb0bf9731ec66d4e0ab5711b056d0d80 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -40,12 +40,16 @@ "%1$s üzerinden bağlı" "%1$s üzerinden kullanılabilir" "Bağlı, İnternet yok" + "Erişim noktası geçici olarak dolu" + "%1$s üzerinden bağlı" + "%1$s üzerinden kullanılabilir" "Çok Yavaş" "Yavaş" "Tamam" "Orta" "Hızlı" "Çok Hızlı" + "%1$s / %2$s" "Bağlantı kesildi" "Bağlantı kesiliyor…" "Bağlanıyor…" @@ -101,6 +105,8 @@ "Kablosuz sinyal gücü iki çubuk." "Kablosuz sinyal gücü üç çubuk." "Kablosuz sinyal gücü tam." + "Açık ağ" + "Güvenli ağ" "Android OS" "Kaldırılan uygulamalar" "Kaldırılmış kullanıcılar ve uygulamalar" @@ -187,6 +193,7 @@ "Kablosuz Dolaşım Taramalarına daima izin ver" "Mobil veri her zaman etkin" "Tethering donanım hızlandırıcısı" + "Adsız Bluetooth cihazlarını göster" "Mutlak sesi iptal et" "Bant içi zil çaldırmayı etkinleştir" "Bluetooth AVRCP Sürümü" @@ -202,6 +209,12 @@ "Bluetooth Ses LDAC Codec\'i: Oynatma Kalitesi" "Bluetooth Ses LDAC Codec\'ini Seçin:\nOynatma Kalitesi" "Akış: %1$s" + "Gizli DNS" + "Gizli DNS Modunu Seçin" + "Kapalı" + "Fırsatçı" + "Gizli DNS sağlayıcının ana makine adı" + "DNS sağlayıcının ana makine adını gir" "Kablosuz ekran sertifikası seçeneklerini göster" "Kablosuz günlük kaydı seviyesini artır. Kablosuz Seçici\'de her bir SSID RSSI için göster." "Etkinleştirildiğinde, kablosuz ağ sinyali zayıfken veri bağlantısının mobil ağa geçirilmesinde daha agresif olunur" @@ -226,6 +239,7 @@ "Bu ayarlar yalnızca geliştirme amaçlıdır. Cihazınızın veya cihazdaki uygulamaların bozulmasına veya hatalı çalışmasına neden olabilir." "USB\'den yüklenen uygulamaları doğrula" "ADB/ADT üzerinden yüklenen uygulamaları zararlı davranışlara karşı denetle." + "Adsız Bluetooth cihazları (yalnızca MAC adresleri) gösterilecek" "Uzak cihazda sesin aşırı yüksek olması veya kontrol edilememesi gibi ses sorunları olması ihtimaline karşı Bluetooh mutlak ses özelliğini iptal eder." "Telefondaki zil seslerinin Bluetooth kulaklıklarda çalınmasına olanak tanır" "Yerel terminal" @@ -345,12 +359,11 @@ "^1 - ^2 kaldı" "%1$s - %2$s" "^1 - Tam şarj olmasına ^2 kaldı" - "^1 - ^2" "Bilinmiyor" "Şarj oluyor" "şarj oluyor" "Şarj olmuyor" - "Şarj etmiyor" + "Prize takıldı, şu anda şarj olamıyor" "Dolu" "Yönetici tarafından denetleniyor" "Yönetici tarafından etkinleştirildi" @@ -375,7 +388,6 @@ "Özel (%d)" "Yardım ve geri bildirim" "Menü" - "GMT" "Demo modunda sıfırlamak için şifreyi girin" "Sonraki" "Şifre gerekli" diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml index 90629f94ccb9a3be3853efc86f2ea80e7cb7fbee..e3f21ad6b6f12d6f30cbd5a098e516b5a88295c2 100644 --- a/packages/SettingsLib/res/values-uk/arrays.xml +++ b/packages/SettingsLib/res/values-uk/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Використовувати вибір системи (за умовчанням)" + "SBC" + "AAC" + "Аудіо Qualcomm® aptX™" + "Аудіо Qualcomm® aptX™ HD" + "LDAC" + "Увімкнути додаткові кодеки" + "Вимкнути додаткові кодеки" + + + "Використовувати вибір системи (за умовчанням)" + "SBC" + "AAC" + "Аудіо Qualcomm® aptX™" + "Аудіо Qualcomm® aptX™ HD" + "LDAC" + "Увімкнути додаткові кодеки" + "Вимкнути додаткові кодеки" + "Використовувати вибір системи (за умовчанням)" "44,1 кГц" diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index 28c5276ee6c9b1270b80a954d7ed86b8adea87d9..ea3c0cb4f22155dd072d824e66638e116c551e54 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -40,12 +40,16 @@ "Під’єднано через %1$s" "Доступ через %1$s" "Під’єднано, але немає доступу до Інтернету" + "Точка доступу тимчасово переповнена" + "Під’єднано через мережу %1$s" + "Доступ через мережу %1$s" "Дуже повільна" "Повільна" "ОК" "Середня" "Швидка" "Дуже швидка" + "%1$s: %2$s" "Роз’єднано" "Відключення..." "Підключення…" @@ -101,6 +105,8 @@ "Дві смужки сигналу Wi-Fi." "Три смужки сигналу Wi-Fi." "Максимальний сигнал Wi-Fi." + "Відкрита мережа" + "Захищена мережа" "ОС Android" "Видалені програми" "Видалені програми та користувачі" @@ -187,6 +193,7 @@ "Завжди шукати мережі Wi-Fi" "Не вимикати мобільне передавання даних" "Апаратне прискорення під час використання телефона в режимі модема" + "Показувати пристрої Bluetooth без назв" "Вимкнути абсолютну гучність" "Увімкнути внутрішньосмугові сигнали" "Версія Bluetooth AVRCP" @@ -202,6 +209,12 @@ "Кодек для аудіо Bluetooth LDAC: якість відтворення" "Вибрати кодек для аудіо Bluetooth LDAC:\nякість відтворення" "Трансляція: %1$s" + "Приватна DNS" + "Виберіть режим \"Приватна DNS\"" + "Вимкнено" + "Періодично доступно" + "Ім’я хосту приватного постачальника послуг DNS" + "Введіть ім’я хосту постачальника послуг DNS" "Показати параметри сертифікації бездротового екрана" "Показувати в журналі RSSI для кожного SSID під час вибору Wi-Fi" "Примусово перемикатися на мобільну мережу, коли сигнал Wi-Fi слабкий" @@ -226,6 +239,7 @@ "Ці налаштування застосовуються лише з метою розробки. Вони можуть спричиняти вихід з ладу або неправильне функціонування вашого пристрою чи програм у ньому." "Встановлення через USB" "Перевіряти безпеку додатків, установлених через ADB/ADT." + "Пристрої Bluetooth відображатимуться без назв (лише MAC-адреси)" "Функція абсолютної гучності Bluetooth вимикається, якщо на віддалених пристроях виникають проблеми, як-от надто висока гучність або втрата контролю." "Дозволити відтворювати сигнали дзвінка на телефоні через гарнітуру Bluetooth" "Локальний термінал" @@ -345,12 +359,11 @@ "^1 – залишилося ^2" "%1$s%2$s" "^1^2 до повного заряду" - "^1^2" "Невідомо" "Заряджається" "заряджається" "Не заряджається" - "Не заряджається" + "Підключено. Не вдається зарядити" "Акумулятор заряджено" "Керується адміністратором" "Увімкнено адміністратором" @@ -375,7 +388,6 @@ "Спеціальний масштаб (%d)" "Довідка й відгуки" "Меню" - "GMT" "Введіть пароль, щоб скинути налаштування в демо-режимі" "Далі" "Потрібен пароль" diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml index 321f8fe1df364888c8984e3270ef4656351e2890..8d46582e7fb2a6c017a4b1e9f65cb282bdf556b4 100644 --- a/packages/SettingsLib/res/values-ur/arrays.xml +++ b/packages/SettingsLib/res/values-ur/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)" + "SBC" + "AAC" + "Qualcomm® aptX™ آڈیو" + "Qualcomm® aptX™ HD آڈیو" + "LDAC" + "اختیاری کوڈیکز کو فعال کریں" + "اختیاری کوڈیکز کو غیر فعال کریں" + + + "سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)" + "SBC" + "AAC" + "Qualcomm® aptX™ آڈیو" + "Qualcomm® aptX™ HD آڈیو" + "LDAC" + "اختیاری کوڈیکز کو فعال کریں" + "اختیاری کوڈیکز کو غیر فعال کریں" + "سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 97662edd1c05996601b439017bc658d34a53c714..a7a38dc646f41fb649b9db6aaffa9ecfb71857ec 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -40,12 +40,16 @@ "‏منسلک بذریعہ ‎%1$s" "‏دستیاب بذریعہ ‎%1$s" "منسلک، انٹرنیٹ نہیں ہے" + "رسائی پوائنٹ عارضی طور پر فُل ہے" + "‏منسلک بذریعہ ‎%1$s" + "‏دستیاب بذریعہ ‎%1$s" "بہت سست" "سست" "ٹھیک ہے" "متوسط" "تیز" "بہت تیز" + "%1$s / %2$s" "منقطع" "منقطع کیا جارہا ہے…" "مربوط ہو رہا ہے…" @@ -101,6 +105,8 @@ "‏Wifi دو بارز۔" "‏Wifi تین بارز۔" "‏Wifi سگنل پورا ہے۔" + "اوپن نیٹ ورک" + "محفوظ نیٹ ورک" "Android OS" "ہٹائی گئی ایپس" "ہٹائی گئی ایپس اور صارفین" @@ -187,6 +193,7 @@ "‏ہمیشہ Wi‑Fi روم اسکینز کی اجازت دیں" "موبائل ڈیٹا ہمیشہ فعال رکھیں" "ٹیدرنگ ہارڈویئر سرعت کاری" + "بغیر نام والے بلوٹوتھ آلات دکھائیں" "مطلق والیوم کو غیر فعال کریں" "ان بینڈ رنگنگ فعال کریں" "‏بلوٹوتھ AVRCP ورژن" @@ -202,6 +209,12 @@ "‏بلوٹوتھ آڈیو LDAC کوڈیک: پلے بیک کا معیار" "‏بلوٹوتھ آڈیو LDAC کوڈیک منتخب کریں:\nپلے بیک کا معیار" "سلسلہ بندی: %1$s" + "‏نجی DNS" + "‏نجی DNS وضع منتخب کریں" + "آف" + "موقع پرست" + "‏نجی DNS فراہم کنندہ میزبان کا نام" + "‏DNS فراہم کنندہ کے میزبان کا نام درج کریں" "وائرلیس ڈسپلے سرٹیفیکیشن کیلئے اختیارات دکھائیں" "‏Wi‑Fi لاگنگ لیول میں اضافہ کریں، Wi‑Fi منتخب کنندہ میں فی SSID RSSI دکھائیں" "‏فعال کئے جانے پر، جب Wi‑Fi سگنل کمزور ہوگا، تو Wi‑Fi موبائل پر ڈیٹا کنکشن بھیجنے کیلئے مزید جارحانہ کارروائی کرے گا" @@ -226,6 +239,7 @@ "یہ ترتیبات صرف ڈویلپمنٹ استعمال کے ارادے سے ہیں۔ ان سے آپ کا آلہ اور اس پر موجود ایپلیکیشنز بریک ہو سکتی یا غلط برتاؤ کر سکتی ہیں۔" "‏USB پر ایپس کی توثیق کریں" "‏نقصان دہ رویے کے مدنظر ADB/ADT کی معرفت انسٹال شدہ ایپس کی جانچ کریں۔" + "‏بغیر نام والے بلوٹوتھ آلات (صرف MAC پتے) ڈسپلے کئے جائیں گے" "ریموٹ آلات کے ساتھ والیوم کے مسائل مثلاً نا قابل قبول حد تک بلند والیوم یا کنٹرول نہ ہونے کی صورت میں بلو ٹوتھ مطلق والیوم والی خصوصیت کو غیر فعال کریں۔" "فون پر موجود رنگ ٹونز کو بلوٹوتھ ہیڈ سیٹز پر چلنے دیں" "مقامی ٹرمینل" @@ -345,12 +359,11 @@ "^1 - ^2 باقی ہے" "‎%1$s - %2$s‎" "^1 - ^2 پوری طرح چارج ہونے تک" - "^1 - ^2" "نامعلوم" "چارج ہو رہا ہے" "چارج ہو رہا ہے" "چارج نہیں ہو رہا ہے" - "چارج نہیں ہو رہا ہے" + "پلگ ان ہے، ابھی چارج نہیں کر سکتے" "مکمل" "کنٹرول کردہ بذریعہ منتظم" "منتظم کی طرف سے فعال کردہ" @@ -375,7 +388,6 @@ "حسب ضرورت (%d)" "مدد اور تاثرات" "مینو" - "GMT" "ڈیمو موڈ میں فیکٹری ری سیٹ کیلئے پاس ورڈ درج کریں" "اگلا" "پاس ورڈ درکار ہے" diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml index 847489e5febf5a87da9e4b38ae6485ab9ffc437c..16d325fec08a06345be0be35286e08ca9220a0f1 100644 --- a/packages/SettingsLib/res/values-uz/arrays.xml +++ b/packages/SettingsLib/res/values-uz/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Tizim tanlovi (birlamchi)" + "SBC" + "AAC" + "Qualcomm® aptX™ audiokodeki" + "Qualcomm® aptX™ HD audiokodeki" + "LDAC" + "Boshqa kodeklarni yoqish" + "Boshqa kodeklarni o‘chirib qo‘yish" + + + "Tizim tanlovi (birlamchi)" + "SBC" + "AAC" + "Qualcomm® aptX™ audiokodeki" + "Qualcomm® aptX™ HD audiokodeki" + "LDAC" + "Boshqa kodeklarni yoqish" + "Boshqa kodeklarni o‘chirib qo‘yish" + "Tizim tanlovi (birlamchi)" "44.1 kGs" diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index 9399db68d5cda2f5549357ebd30d90f7cf4bf4be..7191e251e4e3c1d7ffac98044663c78f3627209d 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -40,12 +40,16 @@ "%1$s orqali ulangan" "%1$s orqali ishlaydi" "Ulangan, lekin internet aloqasi yo‘q" + "Internet kirish nuqtasi vaqtinchalik to‘lgan" + "%1$s orqali ulangan" + "%1$s orqali ishlaydi" "Juda sekin" "Sekin" "OK" "O‘rtacha" "Tez" "Juda tez" + "%1$s / %2$s" "Uzildi" "Uzilyapti…" "Ulanmoqda…" @@ -101,6 +105,8 @@ "Wi-Fi: ikkita ustun" "Wi-Fi: uchta ustun" "Wi-Fi: signal to‘liq" + "Ochiq tarmoq" + "Xavfsiz tarmoq" "Android OS" "O‘chirilgan ilovalar" "O‘chirib tashlangan ilova va foydalanuvchilar" @@ -187,6 +193,7 @@ "Wi-Fi tarmoqlarini qidirishga doim ruxsat" "Mobil internet doim yoniq tursin" "Modem rejimida apparatli tezlashtirish" + "Bluetooth qurilmalarini nomlarisiz ko‘rsatish" "Ovoz balangligining mutlaq darajasini o‘chirib qo‘yish" "Bitta liniyada jiringlashni yoqish" "Bluetooth AVRCP versiyasi" @@ -202,6 +209,12 @@ "LDAC audiokodeki bilan ijro etish sifati (Bluetooth orqali)" "LDAC audiokodeki:\nijro sifati" "Translatsiya: %1$s" + "Shaxsiy DNS" + "Shaxsiy DNS rejimini tanlang" + "O‘chiq" + "Moslashuvchan" + "Shaxsiy DNS provayderining host nomi" + "DNS provayderining host nomini kiriting" "Simsiz monitorlarni sertifikatlash parametrini ko‘rsatish" "Wi-Fi ulanishini tanlashda har bir SSID uchun jurnalda ko‘rsatilsin" "Agar ushbu funksiya yoqilsa, Wi-Fi signali past bo‘lganda internetga ulanish majburiy ravishda mobil internetga o‘tkaziladi" @@ -226,6 +239,7 @@ "Bu sozlamalar faqat dasturlash maqsadlariga mo‘ljallangan. Shuning uchun, ular qurilmangizga va undagi ilovalariga shikast yetkazib, noto‘g‘ri ishlashiga sabab bo‘lishi mumkin." "USB orqali o‘rnatish" "ADB/ADT orqali o‘rnatilgan ilovalar xavfsizligini tekshiring" + "Bluetooth qurilmalari nomsiz (faqat MAC manzillari) ko‘rsatiladi" "Masofadan ulanadigan qurilmalar bilan muammolar yuz berganda, jumladan, juda baland ovoz yoki sozlamalarni boshqarib bo‘lmaydigan holatlarda Bluetooth ovozi balandligining mutlaq darajasini o‘chirib qo‘yadi." "Bluetooth quloqliklarda ijro etish uchun telefonda ringtonlarga ruxsat bering" "Mahalliy terminal" @@ -345,12 +359,11 @@ "^1^2 qoldi" "%1$s%2$s" "^1^2 ichida to‘ladi" - "^1^2" "Noma’lum" "Quvvat olmoqda" "quvvat olmoqda" "Quvvat olmayapti" - "Quvvatlanmayapti" + "Ulangan, lekin quvvat olmayapti" "To‘la" "Administrator tomonidan boshqariladi" "Administrator tomonidan yoqilgan" @@ -375,7 +388,6 @@ "Moslashtirilgan (%d)" "Yordam va fikr-mulohaza" "Menyu" - "GMT" "Demo rejimda zavod holatiga qaytarish uchun parolni kiriting" "Keyingisi" "Parolni kiritish zarur" diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml index 3c2b5849680bf5ddc53a2bb513fdcea03c0cdf24..57e749fd1e756cdfaa1b704d6bf531e3db2617b7 100644 --- a/packages/SettingsLib/res/values-vi/arrays.xml +++ b/packages/SettingsLib/res/values-vi/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "Sử dụng lựa chọn hệ thống (Mặc định)" + "SBC" + "AAC" + "Âm thanh Qualcomm® aptX™" + "Âm thanh Qualcomm® aptX™ HD" + "LDAC" + "Bật codec tùy chọn" + "Tắt codec tùy chọn" + + + "Sử dụng lựa chọn hệ thống (Mặc định)" + "SBC" + "AAC" + "Âm thanh Qualcomm® aptX™" + "Âm thanh Qualcomm® aptX™ HD" + "LDAC" + "Bật codec tùy chọn" + "Tắt codec tùy chọn" + "Sử dụng lựa chọn hệ thống (Mặc định)" "44,1 kHz" diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index db2b29d5753d119f62cb94d652a01563f7fb7f9c..469871b98057d8f7e977da2bdf3fe051a9d9e44d 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -40,12 +40,16 @@ "Được kết nối qua %1$s" "Có sẵn qua %1$s" "Đã kết nối, không có Internet" + "Điểm truy cập tạm thời đã đạt đến giới hạn số lượng thiết bị truy cập." + "Được kết nối qua %1$s" + "Có sẵn qua %1$s" "Rất chậm" "Chậm" "Khá tốt" "Trung bình" "Nhanh" "Rất nhanh" + "%1$s / %2$s" "Đã ngắt kết nối" "Đang ngắt kết nối…" "Đang kết nối…" @@ -101,6 +105,8 @@ "Tín hiệu Wi-Fi hai vạch." "Tín hiệu Wi-Fi ba vạch." "Tín hiệu Wi-Fi đủ." + "Mạng mở" + "Mạng bảo mật" "Hệ điều hành Android" "Ứng dụng đã xóa" "Ứng dụng và người dùng bị xóa" @@ -187,6 +193,7 @@ "Luôn cho phép quét chuyển vùng Wi‑Fi" "Dữ liệu di động luôn hiện hoạt" "Tăng tốc phần cứng cho chia sẻ kết nối" + "Hiển thị các thiết bị Bluetooth không có tên" "Vô hiệu hóa âm lượng tuyệt đối" "Bật đổ chuông trong dải" "Bluetooth phiên bản AVRCP" @@ -202,6 +209,12 @@ "Codec LDAC âm thanh Bluetooth: Chất lượng phát lại" "Chọn Codec LDAC âm thanh Bluetooth:\nChất lượng phát lại" "Truyền trực tuyến: %1$s" + "DNS riêng tư" + "Chọn chế độ DNS riêng tư" + "Tắt" + "Cơ hội" + "Tên máy chủ của nhà cung cấp DNS riêng tư" + "Nhập tên máy chủ của nhà cung cấp DNS" "Hiển thị tùy chọn chứng nhận hiển thị không dây" "Tăng mức ghi nhật ký Wi‑Fi, hiển thị mỗi SSID RSSI trong bộ chọn Wi‑Fi" "Khi được bật, Wi‑Fi sẽ tích cực hơn trong việc chuyển vùng kết nối dữ liệu sang mạng di động khi tín hiệu Wi‑Fi yếu" @@ -226,6 +239,7 @@ "Những cài đặt này chỉ dành cho mục đích phát triển. Chúng có thể làm cho thiết bị và ứng dụng trên thiết bị của bạn bị lỗi và hoạt động sai." "Xác minh ứng dụng qua USB" "Kiểm tra các ứng dụng được cài đặt qua ADB/ADT để xem có hoạt động gây hại hay không." + "Các thiết bị Bluetooth không có tên (chỉ có địa chỉ MAC) sẽ được hiển thị" "Vô hiệu hóa tính năng âm lượng tuyệt đối qua Bluetooth trong trường hợp xảy ra sự cố về âm lượng với các thiết bị từ xa, chẳng hạn như âm lượng lớn không thể chấp nhận được hoặc thiếu kiểm soát." "Cho phép nhạc chuông trên điện thoại được phát trên tai nghe Bluetooth" "Dòng lệnh cục bộ" @@ -345,12 +359,11 @@ "^1 - còn lại ^2" "%1$s - %2$s" "^1 - ^2 cho tới khi được sạc đầy" - "^1 - ^2" "Không xác định" "Đang sạc" "đang sạc" "Hiện không sạc" - "Hiện không sạc" + "Đã cắm nhưng không thể sạc ngay" "Đầy" "Do quản trị viên kiểm soát" "Kích hoạt bởi quản trị viên" @@ -375,11 +388,10 @@ "Tùy chỉnh (%d)" "Trợ giúp và phản hồi" "Menu" - "GMT" "Nhập mật khẩu để tiến hành khôi phục cài đặt gốc ở chế độ trình diễn" "Tiếp theo" "Yêu cầu mật khẩu" - "Phương pháp nhập liệu hoạt động" + "Phương thức nhập đang hoạt động" "Sử dụng ngôn ngữ hệ thống" "Không thể mở cài đặt cho %1$s" "Phương thức nhập này có thể thu thập tất cả văn bản bạn nhập, bao gồm dữ liệu cá nhân như mật khẩu và số thẻ tín dụng. Phương thức nhập này đến từ ứng dụng %1$s. Sử dụng phương thức nhập này?" diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml index 459995122f30f815991b447e09f5ac4dc3dd71ac..dc24afdd9952a606670b2f14bbda929daeaa548c 100644 --- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml @@ -24,7 +24,7 @@ "正在扫描..." "正在连接..." - "正在进行身份验证..." + "正在验证身份…" "正在获取IP地址..." "已连接" "已暂停" @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "使用系统选择(默认)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音频" + "Qualcomm® aptX™ HD 音频" + "LDAC" + "启用可选编解码器" + "停用可选编解码器" + + + "使用系统选择(默认)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音频" + "Qualcomm® aptX™ HD 音频" + "LDAC" + "启用可选编解码器" + "停用可选编解码器" + "使用系统选择(默认)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 1fe8778295bb57d51962768186f3a01c090ae196..b13c02a827781cb870fbd48d97e2d075589dca47 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -40,12 +40,16 @@ "已通过%1$s连接" "可通过%1$s连接" "已连接,但无法访问互联网" + "接入点暂时满载" + "已通过%1$s连接" + "可通过%1$s连接" "很慢" "慢" "良好" "适中" "快" "很快" + "%1$s/%2$s" "已断开连接" "正在断开连接..." "正在连接..." @@ -101,6 +105,8 @@ "WLAN 信号强度为两格。" "WLAN 信号强度为三格。" "WLAN 信号满格。" + "开放网络" + "安全网络" "Android 操作系统" "已删除的应用" "已删除的应用和用户" @@ -187,6 +193,7 @@ "一律允许WLAN漫游扫描" "始终开启移动数据网络" "网络共享硬件加速" + "显示没有名称的蓝牙设备" "停用绝对音量功能" "启用手机默认铃声" "蓝牙 AVRCP 版本" @@ -202,6 +209,12 @@ "蓝牙音频 LDAC 编解码器:播放质量" "选择蓝牙音频 LDAC 编解码器:\n播放质量" "正在流式传输:%1$s" + "私人 DNS" + "选择私人 DNS 模式" + "关闭" + "随机" + "私人 DNS 提供商主机名" + "输入 DNS 提供商的主机名" "显示无线显示认证选项" "提升WLAN日志记录级别(在WLAN选择器中显示每个SSID的RSSI)" "开启此设置后,系统会在 WLAN 信号较弱时,主动将网络模式从 WLAN 网络切换到移动数据网络" @@ -226,6 +239,7 @@ "这些设置仅适用于开发工作。一旦启用,会导致您的设备以及设备上的应用崩溃或出现异常。" "通过USB验证应用" "通过 ADB/ADT 检查安装的应用是否存在有害行为。" + "系统将显示没有名称(只有 MAC 地址)的蓝牙设备" "停用蓝牙绝对音量功能,即可避免在连接到远程设备时出现音量问题(例如音量高得让人无法接受或无法控制音量等)。" "允许手机铃声通过蓝牙耳机播放" "本地终端" @@ -345,12 +359,11 @@ "^1 - 还可用 ^2" "%1$s - %2$s" "^1 - 还需 ^2充满" - "^1 - ^2" "未知" "正在充电" "正在充电" "未在充电" - "未在充电" + "已插入电源,但是现在无法充电" "电量充足" "由管理员控制" "已被管理员启用" @@ -375,7 +388,6 @@ "自定义 (%d)" "帮助和反馈" "菜单" - "GMT" "输入密码即可在演示模式下恢复出厂设置" "下一步" "需要输入密码" diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml index f700e8601606740e58b447689ab669c68927e929..85c151eea12a9d5efd1f173327fdae01ffdbe1b2 100644 --- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "使用系統選擇 (預設)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音訊" + "Qualcomm® aptX™ HD 音訊" + "LDAC" + "啟用選用的編解碼器" + "停用選用的編解碼器" + + + "使用系統選擇 (預設)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音訊" + "Qualcomm® aptX™ HD 音訊" + "LDAC" + "啟用選用的編解碼器" + "停用選用的編解碼器" + "使用系統選擇 (預設)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 9d608cc4b058988ab1b28d5b508728966e902de9..ef19a7537211f75db03be109b1df59e03cbce497 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -40,12 +40,16 @@ "已透過 %1$s 連線" "可透過 %1$s 連線" "已連線,沒有互聯網" + "存取點暫時已滿" + "已透過 %1$s 連線" + "可透過 %1$s 連線" "非常慢" "慢" "良好" "適中" "快" "非常快" + "%1$s/%2$s" "已中斷連線" "正在中斷連線..." "正在連線..." @@ -101,6 +105,8 @@ "Wi-Fi 訊號兩格。" "Wi-Fi 訊號三格。" "Wi-Fi 訊號滿格。" + "開放式網絡" + "安全網絡" "Android 作業系統" "已移除的應用程式" "已移除的應用程式和使用者" @@ -187,6 +193,7 @@ "永遠允許 Wi-Fi 漫遊掃描" "一律保持啟用流動數據" "網絡共享硬件加速" + "顯示沒有名稱的藍牙裝置" "停用絕對音量功能" "啟用頻內鈴聲" "藍牙 AVRCP 版本" @@ -202,6 +209,12 @@ "藍牙音訊 LDAC 編解碼器:播放品質" "選擇藍牙音訊 LDAC 編解碼器:\n播放品質" "正在串流:%1$s" + "不公開的網域名稱系統 (DNS)" + "選取不公開的網域名稱系統 (DNS) 模式" + "停用" + "隨機" + "不公開的網域名稱系統 (DNS) 供應商主機名稱" + "輸入網域名稱系統 (DNS) 供應商的主機名稱" "顯示無線螢幕分享認證的選項" "讓 Wi‑Fi 記錄功能升級,在 Wi‑Fi 選擇器中依每個 SSID RSSI 顯示 Wi‑Fi 詳細紀錄" "啟用後,Wi-Fi 連線會在訊號不穩定的情況下更積極轉換成流動數據連線" @@ -226,6 +239,7 @@ "這些設定僅供開發用途,可能會導致您的裝置及應用程式損毀或運作不正常。" "透過 USB 驗證應用程式" "透過 ADB/ADT 檢查安裝的應用程式有否有害的行為。" + "系統將顯示沒有名稱 (只有 MAC 位址) 的藍牙裝置" "連線至遠端裝置時,如發生音量過大或無法控制音量等問題,請停用藍牙絕對音量功能。" "允許藍牙耳機播放手機鈴聲" "本機終端機" @@ -345,12 +359,11 @@ "^1 - 尚餘 ^2" "%1$s - %2$s" "^1 - 還需 ^2才能充滿電" - "^1 - ^2" "未知" "充電中" "正在充電" "非充電中" - "未開始充電" + "已插入電源插座,但目前無法充電" "電量已滿" "已由管理員停用" "已由管理員啟用" @@ -375,7 +388,6 @@ "自訂 (%d)" "說明和意見反映" "選單" - "GMT" "輸入密碼即可在示範模式下重設原廠設定" "下一步" "請輸入密碼" diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml index a62151b05c58c84e91b0b7713c283fd22a02c003..ce2e89fd6047f9457410e2379c742b2ed01bae63 100644 --- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml @@ -70,10 +70,26 @@ "avrcp15" "avrcp16" - - - - + + "使用系統選擇 (預設)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音訊" + "Qualcomm® aptX™ HD 音訊" + "LDAC" + "啟用選用的轉碼器" + "停用選用的轉碼器" + + + "使用系統選擇 (預設)" + "SBC" + "AAC" + "Qualcomm® aptX™ 音訊" + "Qualcomm® aptX™ HD 音訊" + "LDAC" + "啟用選用的轉碼器" + "停用選用的轉碼器" + "使用系統選擇 (預設)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 0b7c3fafc0de82c6d8c750cae0e05c0c41a3201a..cf996d994b2be537ee0449c3e5d7f424206823a9 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -40,12 +40,16 @@ "已透過 %1$s 連線" "可透過 %1$s 使用" "已連線,沒有網際網路" + "存取點暫時滿載" + "已透過 %1$s 連線" + "可透過 %1$s 使用" "非常慢" "慢" "確定" "適中" "快" "非常快" + "%1$s / %2$s" "已中斷連線" "正在中斷連線…" "連線中…" @@ -101,6 +105,8 @@ "Wi-Fi 訊號強度兩格。" "Wi-Fi 訊號強度三格。" "Wi-Fi 訊號強度滿格。" + "開放式網路" + "安全網路" "Android 作業系統" "移除的應用程式" "已移除的應用程式和使用者" @@ -187,6 +193,7 @@ "一律允許 Wi-Fi 漫遊掃描" "行動數據連線一律保持啟用狀態" "數據連線硬體加速" + "顯示沒有名稱的藍牙裝置" "停用絕對音量功能" "啟用藍牙同步鈴聲功能" "藍牙 AVRCP 版本" @@ -202,6 +209,12 @@ "藍牙音訊 LDAC 轉碼器:播放品質" "選取藍牙音訊 LDAC 轉碼器:\n播放品質" "串流中:%1$s" + "私人 DNS" + "選取私人 DNS 模式" + "停用" + "隨機" + "私人 DNS 供應商主機名稱" + "輸入 DNS 供應商的主機名稱" "顯示無線螢幕分享認證的選項" "讓 Wi‑Fi 記錄功能升級,在 Wi‑Fi 選擇器中依每個 SSID RSSI 顯示 Wi‑Fi 詳細紀錄" "啟用時,Wi-Fi 連線在訊號不穩的情況下會更積極轉換成行動數據連線" @@ -226,6 +239,7 @@ "這些設定僅供開發之用,可能導致你的裝置及裝置中的應用程式毀損或運作異常。" "透過 USB 驗證應用程式" "檢查透過 ADB/ADT 安裝的應用程式是否具有有害行為。" + "系統會顯示沒有名稱 (僅具有 MAC 位址) 的藍牙裝置" "只要停用藍牙絕對音量功能,即可避免在連線到遠端裝置時,發生音量過大或無法控制音量等問題。" "允許手機鈴聲透過藍牙耳機播放" "本機終端機" @@ -345,12 +359,11 @@ "^1 - 還剩 ^2" "%1$s - %2$s" "^1 - ^2後充飽" - "^1 - ^2" "不明" "充電中" "充電中" "非充電中" - "非充電中" + "已接上電源,但現在無法充電" "電力充足" "已由管理員停用" "已由管理員啟用" @@ -375,7 +388,6 @@ "自訂 (%d)" "說明與意見回饋" "選單" - "GMT" "如要在示範模式中恢復原廠設定,請輸入密碼" "下一步" "請輸入密碼" diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml index cbec89f3470be850c7e4e6345d3cea6c17d8eecc..3d0de36adb0252060556ecd69783cb68146bc317 100644 --- a/packages/SettingsLib/res/values-zu/arrays.xml +++ b/packages/SettingsLib/res/values-zu/arrays.xml @@ -70,10 +70,26 @@ "I-avrcp15" "I-avrcp16" - - - - + + "Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)" + "SBC" + "I-AAC" + "Qualcomm® aptX™ umsindo" + "Qualcomm® aptX™ HD umsindo" + "I-LDAC" + "Nika amandla amakhodekhi akhethekayo" + "Khubaza amakhodekhi akhethekayo" + + + "Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)" + "SBC" + "I-AAC" + "Qualcomm® aptX™ umsindo" + "Qualcomm® aptX™ HD umsindo" + "I-LDAC" + "Nika amandla amakhodekhi akhethekayo" + "Khubaza amakhodekhi akhethekayo" + "Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)" "44.1 kHz" diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index f3c27a13b2ccc466a6880dd01de4b900eafd8e64..010b887c3dc61dd3f5ba625e20c0d4c9e6113b38 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -40,12 +40,16 @@ "Kuxhumeke nge-%1$s" "Iyatholakala nge-%1$s" "Kuxhumekile, ayikho i-inthanethi" + "Iphoyinti lokufinyelela ligcwele okwesikhashana" + "Kuxhumeke nge-%1$s" + "Iyatholakala nge-%1$s" "Phansi kakhulu" "Phansi" "KULUNGILE" "Okumaphakathi" "Sheshayo" "Kushesha kakhulu" + "%1$s / %2$s" "Ayixhunyiwe" "Inqamula uxhumano kwi-inthanethi..." "Iyaxhuma..." @@ -101,6 +105,8 @@ "Amabha amabili we-Wifi." "Amabha amathathu we-Wifi." "Isiginali ye-Wifi igcwele." + "Vula inethiwekhi" + "Inethiwekhi evikelekile" "I-Android OS" "Izinhlelo zokusebenza zisusiwe" "Izinhelo zokusebenza nabasebenzisi abasusiwe" @@ -187,6 +193,7 @@ "Vumela njalo ukuskena kokuzula kwe-Wi-Fi" "Idatha yeselula ihlala isebenza" "I-Tethering hardware acceleration" + "Bonisa amadivayisi e-Bluetooth ngaphandle kwamagama" "Khubaza ivolumu ngokuphelele" "Nika amandla ukukhala okuphakathi nomkhiqizo" "Inguqulo ye-Bluetooth ye-AVRCP" @@ -202,6 +209,12 @@ "I-Bluetooth Audio LDAC Codec: Ikhwalithi yokudlala" "Khetha i-Bluetooth Audio LDAC Codec:\nIkhwalithi yokudlala" "Ukusakaza: %1$s" + "I-DNS eyimfihlo" + "Khetha imodi ye-DNS eyimfihlo" + "Kuvaliwe" + "Amathuba" + "Igama lomsingathi womhlinzeki we-DNS" + "Faka igama lomsingathi womhlinzeki we-DNS" "Bonisa izinketho zokunikeza isitifiketi ukubukeka okungenantambo" "khuphula izinga lokungena le-Wi-Fi, bonisa nge-SSID RSSI engayodwana kusikhethi se-Wi-Fi" "Uma inikwe amandla, i-Wi-Fi izoba namandla kakhulu ekudluliseleni ukuxhumeka kwedatha kuselula, uma isignali ye-Wi-Fi iphansi" @@ -226,6 +239,7 @@ "Lezi zilungiselelo zenzelwe ukusetshenziswa ukuthuthukisa kuphela. Zingadala ukuthi idivayisi yakho kanye nensiza ekuyona ukuthi iphuke noma iziphathe kabi." "Qiniseka izinhlelo zokusebenza nge-USB" "Hlola izinhlelo zokusebenza ezifakiwe nge-ADB/ADT ngokuziphatha okuyingozi." + "Amadivayisi e-Bluetooth anganawo amagama (Amakheli e-MAC kuphela) azoboniswa" "Ikhubaza isici esiphelele sevolumu ye-Bluetooth uma kuba nezinkinga zevolumu ngamadivayisi esilawuli kude ezifana nevolumu ephezulu noma eshoda ngokulawuleka." "Vumela amathoni okukhala efonini ukuthi adlalwe kuma-earphone e-Bluetooth" "Itheminali yasendaweni" @@ -345,12 +359,11 @@ "^1 - ^2 okusele" "%1$s - %2$s" "^1 - ^2 kuze ligcwale ngokuphelele" - "^1 - ^2" "Akwaziwa" "Iyashaja" "iyashaja" "Ayishaji" - "Ayishaji" + "Kuxhunyiwe, ayikwazi ukushaja khona manje" "Kugcwele" "Kulawulwa umqondisi" "Kunikwe amandla umlawuli" @@ -375,7 +388,6 @@ "Ngokwezifiso (%d)" "Usizo nempendulo" "Imenyu" - "I-GMT" "Faka iphasiwedi ukuze wenze ukusetha kwefekthri kumodi yedemo" "Okulandelayo" "Iphasiwedi iyadingeka" diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml index 9704bd6215f7222bef4c1225cdd9bf23341dfe9a..77df02bc5753bb7510f6d5980f9ff7cbfc02f5f2 100644 --- a/packages/SettingsLib/res/values/arrays.xml +++ b/packages/SettingsLib/res/values/arrays.xml @@ -123,8 +123,8 @@ Use System Selection (Default) SBC AAC - Qualcomm(R) aptX(TM) audio - Qualcomm(R) aptX(TM) HD audio + Qualcomm® aptX™ audio + Qualcomm® aptX™ HD audio LDAC Enable Optional Codecs Disable Optional Codecs @@ -147,8 +147,8 @@ Use System Selection (Default) SBC AAC - Qualcomm(R) aptX(TM) audio - Qualcomm(R) aptX(TM) HD audio + Qualcomm® aptX™ audio + Qualcomm® aptX™ HD audio LDAC Enable Optional Codecs Disable Optional Codecs diff --git a/packages/SettingsLib/res/values/attrs.xml b/packages/SettingsLib/res/values/attrs.xml index 6d852df2f907c5ec4985d72b1283d55a5690e4ca..a8a179358744cc41548df834b2f65e312c76fccb 100644 --- a/packages/SettingsLib/res/values/attrs.xml +++ b/packages/SettingsLib/res/values/attrs.xml @@ -48,9 +48,4 @@ - - - - - diff --git a/packages/SettingsLib/res/values/dimens.xml b/packages/SettingsLib/res/values/dimens.xml index 3322839ee213c7dfb8331be22f43904cfc2a8a66..e2615709cfb72ac0f11437650675c3662b1aafa8 100644 --- a/packages/SettingsLib/res/values/dimens.xml +++ b/packages/SettingsLib/res/values/dimens.xml @@ -55,9 +55,20 @@ 14.5dp 9.5dp + 2dp + 10.5% + + 7.8% + + + 35% + + + 75% + 0% diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index a73f800fb689940c26f770954504be1fb72352b6..8a4a77473871b79f6ddd98945c091d02d8cd123b 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -97,6 +97,14 @@ Connected, no Internet + + Access point temporarily full + + + Connected via %1$s + + Available via %1$s + Very Slow @@ -110,6 +118,9 @@ Very Fast + + %1$s / %2$s + Disconnected @@ -237,6 +248,12 @@ Wifi signal full. + + Open network + + + Secure network + Android OS @@ -467,6 +484,8 @@ Mobile data always active Tethering hardware acceleration + + Show Bluetooth devices without names Disable absolute volume @@ -559,12 +578,13 @@ Verify apps over USB Check apps installed via ADB/ADT for harmful behavior. + + Bluetooth devices without names (MAC addresses only) will be displayed Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control. Allow ringtones on the phone to be played on Bluetooth headsets - Local terminal @@ -858,8 +878,6 @@ %1$s - %2$s ^1 - ^2 until fully charged - - ^1 - ^2 Unknown @@ -870,7 +888,7 @@ Not charging - Not charging + Plugged in, can\'t charge right now Full @@ -946,9 +964,6 @@ Menu - - GMT - Enter password to perform factory reset in demo mode diff --git a/packages/SettingsLib/res/values/styles_support_preference.xml b/packages/SettingsLib/res/values/styles_support_preference.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf9f3c67137c56e1833cc3b0af0d964d67b3cb5e --- /dev/null +++ b/packages/SettingsLib/res/values/styles_support_preference.xml @@ -0,0 +1,92 @@ + + + + + + + 72dp + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java b/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java index 692d2110e498780125c00e4aa3a3faea18256343..253ca11bc44efa63e6b000b7b6de87e5af377691 100644 --- a/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java @@ -30,8 +30,7 @@ public class CustomEditTextPreference extends EditTextPreference { private CustomPreferenceDialogFragment mFragment; - public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, - int defStyleRes) { + public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } diff --git a/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java index 2e77f4264de68a96158586b96848db7bc66cf56a..b01fc8541957951e3fc90b25220143fd1316d50a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java +++ b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java @@ -21,6 +21,7 @@ import static android.net.NetworkPolicy.LIMIT_DISABLED; import static android.net.NetworkPolicy.SNOOZE_NEVER; import static android.net.NetworkPolicy.WARNING_DISABLED; import static android.net.NetworkTemplate.MATCH_WIFI; + import static com.android.internal.util.Preconditions.checkNotNull; import android.net.NetworkPolicy; @@ -29,10 +30,12 @@ import android.net.NetworkTemplate; import android.net.wifi.WifiInfo; import android.os.AsyncTask; import android.text.TextUtils; -import android.text.format.Time; +import android.util.RecurrenceRule; import com.google.android.collect.Lists; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.ArrayList; /** @@ -128,35 +131,36 @@ public class NetworkPolicyEditor { @Deprecated private static NetworkPolicy buildDefaultPolicy(NetworkTemplate template) { // TODO: move this into framework to share with NetworkPolicyManagerService - final int cycleDay; - final String cycleTimezone; + final RecurrenceRule cycleRule; final boolean metered; if (template.getMatchRule() == MATCH_WIFI) { - cycleDay = CYCLE_NONE; - cycleTimezone = Time.TIMEZONE_UTC; + cycleRule = RecurrenceRule.buildNever(); metered = false; } else { - final Time time = new Time(); - time.setToNow(); - cycleDay = time.monthDay; - cycleTimezone = time.timezone; + cycleRule = RecurrenceRule.buildRecurringMonthly(ZonedDateTime.now().getDayOfMonth(), + ZoneId.systemDefault()); metered = true; } - return new NetworkPolicy(template, cycleDay, cycleTimezone, WARNING_DISABLED, + return new NetworkPolicy(template, cycleRule, WARNING_DISABLED, LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, metered, true); } + @Deprecated public int getPolicyCycleDay(NetworkTemplate template) { final NetworkPolicy policy = getPolicy(template); - return (policy != null) ? policy.cycleDay : -1; + if (policy != null && policy.cycleRule.isMonthly()) { + return policy.cycleRule.start.getDayOfMonth(); + } else { + return CYCLE_NONE; + } } + @Deprecated public void setPolicyCycleDay(NetworkTemplate template, int cycleDay, String cycleTimezone) { final NetworkPolicy policy = getOrCreatePolicy(template); - policy.cycleDay = cycleDay; - policy.cycleTimezone = cycleTimezone; + policy.cycleRule = NetworkPolicy.buildRule(cycleDay, ZoneId.of(cycleTimezone)); policy.inferred = false; policy.clearSnooze(); writeAsync(); @@ -204,53 +208,6 @@ public class NetworkPolicyEditor { writeAsync(); } - public boolean getPolicyMetered(NetworkTemplate template) { - NetworkPolicy policy = getPolicy(template); - if (policy != null) { - return policy.metered; - } else { - return false; - } - } - - public void setPolicyMetered(NetworkTemplate template, boolean metered) { - boolean modified = false; - - NetworkPolicy policy = getPolicy(template); - if (metered) { - if (policy == null) { - policy = buildDefaultPolicy(template); - policy.metered = true; - policy.inferred = false; - mPolicies.add(policy); - modified = true; - } else if (!policy.metered) { - policy.metered = true; - policy.inferred = false; - modified = true; - } - - } else { - if (policy == null) { - // ignore when policy doesn't exist - } else if (policy.metered) { - policy.metered = false; - policy.inferred = false; - modified = true; - } - } - - // Remove legacy unquoted policies while we're here - final NetworkTemplate unquoted = buildUnquotedNetworkTemplate(template); - final NetworkPolicy unquotedPolicy = getPolicy(unquoted); - if (unquotedPolicy != null) { - mPolicies.remove(unquotedPolicy); - modified = true; - } - - if (modified) writeAsync(); - } - /** * Build a revised {@link NetworkTemplate} that matches the same rule, but * with an unquoted {@link NetworkTemplate#getNetworkId()}. Used to work diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index e8c48840466a2938a9d1a6e739afa69aeb83d83e..64ec16a23b46f678db03e170163c7cd5c3b74677 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -14,12 +14,12 @@ import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; +import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.net.ConnectivityManager; import android.net.NetworkBadging; import android.os.BatteryManager; -import android.os.UserHandle; import android.os.UserManager; import android.print.PrintManager; import android.provider.Settings; @@ -31,12 +31,6 @@ import com.android.settingslib.drawable.UserIconDrawable; import java.text.NumberFormat; public class Utils { - /** Broadcast intent action when the location mode is about to change. */ - private static final String MODE_CHANGING_ACTION = - "com.android.settings.location.MODE_CHANGING"; - private static final String CURRENT_MODE_KEY = "CURRENT_MODE"; - private static final String NEW_MODE_KEY = "NEW_MODE"; - private static Signature[] sSystemSignature; private static String sPermissionControllerPackageName; private static String sServicesSystemSharedLibPackageName; @@ -50,18 +44,6 @@ public class Utils { com.android.internal.R.drawable.ic_signal_wifi_badged_4_bars }; - public static boolean updateLocationMode(Context context, int oldMode, int newMode, - int userId) { - Intent intent = new Intent(MODE_CHANGING_ACTION); - intent.putExtra(CURRENT_MODE_KEY, oldMode); - intent.putExtra(NEW_MODE_KEY, newMode); - intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); - context.sendBroadcastAsUser(intent, UserHandle.of(userId), - android.Manifest.permission.WRITE_SECURE_SETTINGS); - return Settings.Secure.putIntForUser(context.getContentResolver(), - Settings.Secure.LOCATION_MODE, newMode, userId); - } - /** * Return string resource that best describes combination of tethering * options available on this device. @@ -114,13 +96,12 @@ public class Utils { /** * Returns a circular icon for a user. */ - public static UserIconDrawable getUserIcon(Context context, UserManager um, UserInfo user) { + public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) { final int iconSize = UserIconDrawable.getSizeForList(context); if (user.isManagedProfile()) { - // We use predefined values for managed profiles - Bitmap b = BitmapFactory.decodeResource(context.getResources(), - com.android.internal.R.drawable.ic_corp_icon); - return new UserIconDrawable(iconSize).setIcon(b).bake(); + Drawable drawable = context.getDrawable(com.android.internal.R.drawable.ic_corp_icon); + drawable.setBounds(0, 0, iconSize, iconSize); + return drawable; } if (user.iconPath != null) { Bitmap icon = um.getUserIcon(user.id); diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index 443f1ee1d827249aa50925aeec1ff178d9b125ab..40c2b1f3b771140098722e3de15a34eb463855f6 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -339,26 +339,35 @@ public class ApplicationsState { synchronized (mEntriesMap) { AppEntry entry = mEntriesMap.get(userId).get(packageName); if (entry != null && (entry.info.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { - mBackgroundHandler.post(() -> { - try { - final StorageStats stats = mStats.queryStatsForPackage( - entry.info.storageUuid, packageName, UserHandle.of(userId)); - final PackageStats legacy = new PackageStats(packageName, userId); - legacy.codeSize = stats.getCodeBytes(); - legacy.dataSize = stats.getDataBytes(); - legacy.cacheSize = stats.getCacheBytes(); - try { - mBackgroundHandler.mStatsObserver.onGetStatsCompleted(legacy, true); - } catch (RemoteException ignored) { - } - } catch (NameNotFoundException | IOException e) { - Log.w(TAG, "Failed to query stats: " + e); - try { - mBackgroundHandler.mStatsObserver.onGetStatsCompleted(null, false); - } catch (RemoteException ignored) { - } - } - }); + mBackgroundHandler.post( + () -> { + try { + final StorageStats stats = + mStats.queryStatsForPackage( + entry.info.storageUuid, + packageName, + UserHandle.of(userId)); + final long cacheQuota = + mStats.getCacheQuotaBytes( + entry.info.storageUuid.toString(), entry.info.uid); + final PackageStats legacy = new PackageStats(packageName, userId); + legacy.codeSize = stats.getCodeBytes(); + legacy.dataSize = stats.getDataBytes(); + legacy.cacheSize = Math.min(stats.getCacheBytes(), cacheQuota); + try { + mBackgroundHandler.mStatsObserver.onGetStatsCompleted( + legacy, true); + } catch (RemoteException ignored) { + } + } catch (NameNotFoundException | IOException e) { + Log.w(TAG, "Failed to query stats: " + e); + try { + mBackgroundHandler.mStatsObserver.onGetStatsCompleted( + null, false); + } catch (RemoteException ignored) { + } + } + }); } if (DEBUG_LOCKING) Log.v(TAG, "...requestSize releasing lock"); } @@ -1638,6 +1647,21 @@ public class ApplicationsState { } }; + public static final AppFilter FILTER_PHOTOS = + new AppFilter() { + @Override + public void init() {} + + @Override + public boolean filterApp(AppEntry entry) { + boolean isPhotosApp; + synchronized (entry) { + isPhotosApp = entry.info.category == ApplicationInfo.CATEGORY_IMAGE; + } + return isPhotosApp; + } + }; + public static final AppFilter FILTER_OTHER_APPS = new AppFilter() { @Override @@ -1650,7 +1674,8 @@ public class ApplicationsState { isCategorized = FILTER_AUDIO.filterApp(entry) || FILTER_GAMES.filterApp(entry) - || FILTER_MOVIES.filterApp(entry); + || FILTER_MOVIES.filterApp(entry) + || FILTER_PHOTOS.filterApp(entry); } return !isCategorized; } diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java b/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java index 8fc9fa6a4f26d7e51133051df6d84a8666996a23..9fbadee3075ae1d5985c4b836aeaab247f43c924 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java @@ -131,7 +131,7 @@ public class StorageStatsSource { } public long getTotalBytes() { - return mStats.getCacheBytes() + mStats.getCodeBytes() + mStats.getDataBytes(); + return mStats.getAppBytes() + mStats.getDataBytes(); } } } \ No newline at end of file diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java index 7268d00bade1228f5b931500bda3ac30e5c643e8..0946181ab710f838baec5d0bbc9cdc9553273428 100755 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java @@ -233,8 +233,8 @@ public class A2dpProfile implements LocalBluetoothProfile { public String getHighQualityAudioOptionLabel(BluetoothDevice device) { int unknownCodecId = R.string.bluetooth_profile_a2dp_high_quality_unknown_codec; - if (!supportsHighQualityAudio(device) || - getConnectionStatus(device) != BluetoothProfile.STATE_CONNECTED) { + if (!supportsHighQualityAudio(device) + || getConnectionStatus(device) != BluetoothProfile.STATE_CONNECTED) { return mContext.getString(unknownCodecId); } // We want to get the highest priority codec, since that's the one that will be used with @@ -248,11 +248,36 @@ public class A2dpProfile implements LocalBluetoothProfile { return b.getCodecPriority() - a.getCodecPriority(); }); } - if (selectable == null || selectable.length < 1 || selectable[0].isMandatoryCodec()) { + + final BluetoothCodecConfig codecConfig = (selectable == null || selectable.length < 1) + ? null : selectable[0]; + final int codecType = (codecConfig == null || codecConfig.isMandatoryCodec()) + ? BluetoothCodecConfig.SOURCE_CODEC_TYPE_INVALID : codecConfig.getCodecType(); + + int index = -1; + switch (codecType) { + case BluetoothCodecConfig.SOURCE_CODEC_TYPE_SBC: + index = 1; + break; + case BluetoothCodecConfig.SOURCE_CODEC_TYPE_AAC: + index = 2; + break; + case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX: + index = 3; + break; + case BluetoothCodecConfig.SOURCE_CODEC_TYPE_APTX_HD: + index = 4; + break; + case BluetoothCodecConfig.SOURCE_CODEC_TYPE_LDAC: + index = 5; + break; + } + + if (index < 0) { return mContext.getString(unknownCodecId); } return mContext.getString(R.string.bluetooth_profile_a2dp_high_quality, - selectable[0].getCodecName()); + mContext.getResources().getStringArray(R.array.bluetooth_a2dp_codec_titles)[index]); } public String toString() { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java index 63d944d5ec5e593e1ea6c0cb1f007822fe15d965..f57d02bb92fa7c6d223967a96b12e0c046e8db9d 100755 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java @@ -222,7 +222,7 @@ public class BluetoothEventManager { cachedDevice.setRssi(rssi); cachedDevice.setBtClass(btClass); cachedDevice.setNewName(name); - cachedDevice.setVisible(true); + cachedDevice.setJustDiscovered(true); } } @@ -374,7 +374,7 @@ public class BluetoothEventManager { if (device != null && device.getBondState() == BluetoothDevice.BOND_NONE) { CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device); if (cachedDevice != null) { - cachedDevice.setVisible(false); + cachedDevice.setJustDiscovered(false); } } } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java index bfa8de9e963b189dad0e8cb2088bde834f9d653d..2873fb68ce5bed8940625e23bcb5ff5d49182a94 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java @@ -50,8 +50,11 @@ public class CachedBluetoothDevice implements Comparable private final LocalBluetoothAdapter mLocalAdapter; private final LocalBluetoothProfileManager mProfileManager; private final BluetoothDevice mDevice; + //TODO: consider remove, BluetoothDevice.getName() is already cached private String mName; + // Need this since there is no method for getting RSSI private short mRssi; + //TODO: consider remove, BluetoothDevice.getBluetoothClass() is already cached private BluetoothClass mBtClass; private HashMap mProfileConnectionState; @@ -65,7 +68,7 @@ public class CachedBluetoothDevice implements Comparable // Device supports PANU but not NAP: remove PanProfile after device disconnects from NAP private boolean mLocalNapRoleConnected; - private boolean mVisible; + private boolean mJustDiscovered; private int mMessageRejectionCount; @@ -359,7 +362,6 @@ public class CachedBluetoothDevice implements Comparable migrateMessagePermissionChoice(); fetchMessageRejectionCount(); - mVisible = false; dispatchAttributesChanged(); } @@ -394,10 +396,12 @@ public class CachedBluetoothDevice implements Comparable } /** - * user changes the device name + * User changes the device name + * @param name new alias name to be set, should never be null */ public void setName(String name) { - if (!mName.equals(name)) { + // Prevent mName to be set to null if setName(null) is called + if (name != null && !TextUtils.equals(name, mName)) { mName = name; mDevice.setAlias(name); dispatchAttributesChanged(); @@ -418,6 +422,14 @@ public class CachedBluetoothDevice implements Comparable } } + /** + * Checks if device has a human readable name besides MAC address + * @return true if device's alias name is not null nor empty, false otherwise + */ + public boolean hasHumanReadableName() { + return !TextUtils.isEmpty(mDevice.getAliasName()); + } + /** * Get battery level from remote device * @return battery level in percentage [0-100], or {@link BluetoothDevice#BATTERY_LEVEL_UNKNOWN} @@ -430,13 +442,9 @@ public class CachedBluetoothDevice implements Comparable dispatchAttributesChanged(); } - public boolean isVisible() { - return mVisible; - } - - public void setVisible(boolean visible) { - if (mVisible != visible) { - mVisible = visible; + public void setJustDiscovered(boolean justDiscovered) { + if (mJustDiscovered != justDiscovered) { + mJustDiscovered = justDiscovered; dispatchAttributesChanged(); } } @@ -499,7 +507,7 @@ public class CachedBluetoothDevice implements Comparable ParcelUuid[] localUuids = mLocalAdapter.getUuids(); if (localUuids == null) return false; - /** + /* * Now we know if the device supports PBAP, update permissions... */ processPhonebookAccess(); @@ -660,8 +668,8 @@ public class CachedBluetoothDevice implements Comparable (getBondState() == BluetoothDevice.BOND_BONDED ? 1 : 0); if (comparison != 0) return comparison; - // Visible above not visible - comparison = (another.mVisible ? 1 : 0) - (mVisible ? 1 : 0); + // Just discovered above discovered in the past + comparison = (another.mJustDiscovered ? 1 : 0) - (mJustDiscovered ? 1 : 0); if (comparison != 0) return comparison; // Stronger signal above weaker signal diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java index 9217338884d0d62d5fe7d7752a7f5429c210ba05..c3ff617bfaa7dcbafbe1bf990bcd1cd5ce383ae9 100755 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java @@ -47,7 +47,7 @@ public class CachedBluetoothDeviceManager { } public static boolean onDeviceDisappeared(CachedBluetoothDevice cachedDevice) { - cachedDevice.setVisible(false); + cachedDevice.setJustDiscovered(false); return cachedDevice.getBondState() == BluetoothDevice.BOND_NONE; } @@ -131,7 +131,7 @@ public class CachedBluetoothDeviceManager { // Iterate in reverse order since devices may be removed. for (int i = mCachedDevices.size() - 1; i >= 0; i--) { CachedBluetoothDevice cachedDevice = mCachedDevices.get(i); - cachedDevice.setVisible(false); + cachedDevice.setJustDiscovered(false); } } @@ -156,7 +156,7 @@ public class CachedBluetoothDeviceManager { for (int i = mCachedDevices.size() - 1; i >= 0; i--) { CachedBluetoothDevice cachedDevice = mCachedDevices.get(i); if (cachedDevice.getBondState() != BluetoothDevice.BOND_BONDED) { - cachedDevice.setVisible(false); + cachedDevice.setJustDiscovered(false); mCachedDevices.remove(i); } else { // For bonded devices, we need to clear the connection status so that diff --git a/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java index fc1a3a902c7376dbb39c98b16d7857d915fe3170..38fe8790e4d0c17f5d1f92971955773c83e03f14 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java @@ -4,7 +4,6 @@ import android.content.Context; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; -import java.util.List; /** * A controller that manages event for preference. @@ -39,17 +38,6 @@ public abstract class AbstractPreferenceController { } - /** - * Updates non-indexable keys for search provider. - * - * Called by SearchIndexProvider#getNonIndexableKeys - */ - public void updateNonIndexableKeys(List keys) { - if (!isAvailable()) { - keys.add(getPreferenceKey()); - } - } - /** * Returns true if preference is available (should be displayed) */ diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java index 1cbb7450f7e16863130be6573d0222891ca14586..1771208398fd96290a670a3957f730bf8acaec19 100644 --- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java +++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java @@ -18,6 +18,7 @@ package com.android.settingslib.datetime; import android.content.Context; import android.content.res.XmlResourceParser; +import android.icu.text.TimeZoneFormat; import android.icu.text.TimeZoneNames; import android.support.v4.text.BidiFormatter; import android.support.v4.text.TextDirectionHeuristicsCompat; @@ -88,8 +89,9 @@ public class ZoneGetter { private static final String XMLTAG_TIMEZONE = "timezone"; public static CharSequence getTimeZoneOffsetAndName(Context context, TimeZone tz, Date now) { - Locale locale = Locale.getDefault(); - CharSequence gmtText = getGmtOffsetText(context, locale, tz, now); + Locale locale = context.getResources().getConfiguration().locale; + TimeZoneFormat tzFormatter = TimeZoneFormat.getInstance(locale); + CharSequence gmtText = getGmtOffsetText(tzFormatter, locale, tz, now); TimeZoneNames timeZoneNames = TimeZoneNames.getInstance(locale); String zoneNameString = getZoneLongName(timeZoneNames, tz, now); if (zoneNameString == null) { @@ -101,7 +103,7 @@ public class ZoneGetter { } public static List> getZonesList(Context context) { - final Locale locale = Locale.getDefault(); + final Locale locale = context.getResources().getConfiguration().locale; final Date now = new Date(); final TimeZoneNames timeZoneNames = TimeZoneNames.getInstance(locale); final ZoneGetterData data = new ZoneGetterData(context); @@ -243,12 +245,15 @@ public class ZoneGetter { builder.setSpan(span, start, builder.length(), 0); } - private static String twoDigits(int input) { - StringBuilder builder = new StringBuilder(3); - if (input < 0) builder.append('-'); - String string = Integer.toString(Math.abs(input)); - if (string.length() == 1) builder.append("0"); - builder.append(string); + // Input must be positive. minDigits must be 1 or 2. + private static String formatDigits(int input, int minDigits, String localizedDigits) { + final int tens = input / 10; + final int units = input % 10; + StringBuilder builder = new StringBuilder(minDigits); + if (input >= 10 || minDigits == 2) { + builder.append(localizedDigits.charAt(tens)); + } + builder.append(localizedDigits.charAt(units)); return builder.toString(); } @@ -256,36 +261,83 @@ public class ZoneGetter { * Get the GMT offset text label for the given time zone, in the format "GMT-08:00". This will * also add TTS spans to give hints to the text-to-speech engine for the type of data it is. * - * @param context The context which the string is displayed in. + * @param tzFormatter The timezone formatter to use. * @param locale The locale which the string is displayed in. This should be the same as the - * locale of the context. + * locale of the time zone formatter. * @param tz Time zone to get the GMT offset from. * @param now The current time, used to tell whether daylight savings is active. * @return A CharSequence suitable for display as the offset label of {@code tz}. */ - private static CharSequence getGmtOffsetText(Context context, Locale locale, TimeZone tz, - Date now) { - SpannableStringBuilder builder = new SpannableStringBuilder(); + private static CharSequence getGmtOffsetText(TimeZoneFormat tzFormatter, Locale locale, + TimeZone tz, Date now) { + final SpannableStringBuilder builder = new SpannableStringBuilder(); + + final String gmtPattern = tzFormatter.getGMTPattern(); + final int placeholderIndex = gmtPattern.indexOf("{0}"); + final String gmtPatternPrefix, gmtPatternSuffix; + if (placeholderIndex == -1) { + // Bad pattern. Replace with defaults. + gmtPatternPrefix = "GMT"; + gmtPatternSuffix = ""; + } else { + gmtPatternPrefix = gmtPattern.substring(0, placeholderIndex); + gmtPatternSuffix = gmtPattern.substring(placeholderIndex + 3); // After the "{0}". + } - appendWithTtsSpan(builder, "GMT", - new TtsSpan.TextBuilder(context.getString(R.string.time_zone_gmt)).build()); + if (!gmtPatternPrefix.isEmpty()) { + appendWithTtsSpan(builder, gmtPatternPrefix, + new TtsSpan.TextBuilder(gmtPatternPrefix).build()); + } int offsetMillis = tz.getOffset(now.getTime()); - if (offsetMillis >= 0) { - appendWithTtsSpan(builder, "+", new TtsSpan.VerbatimBuilder("+").build()); + final boolean negative = offsetMillis < 0; + final TimeZoneFormat.GMTOffsetPatternType patternType; + if (negative) { + offsetMillis = -offsetMillis; + patternType = TimeZoneFormat.GMTOffsetPatternType.NEGATIVE_HM; + } else { + patternType = TimeZoneFormat.GMTOffsetPatternType.POSITIVE_HM; } + final String gmtOffsetPattern = tzFormatter.getGMTOffsetPattern(patternType); + final String localizedDigits = tzFormatter.getGMTOffsetDigits(); final int offsetHours = (int) (offsetMillis / DateUtils.HOUR_IN_MILLIS); - appendWithTtsSpan(builder, twoDigits(offsetHours), - new TtsSpan.MeasureBuilder().setNumber(offsetHours).setUnit("hour").build()); - - builder.append(":"); - final int offsetMinutes = (int) (offsetMillis / DateUtils.MINUTE_IN_MILLIS); final int offsetMinutesRemaining = Math.abs(offsetMinutes) % 60; - appendWithTtsSpan(builder, twoDigits(offsetMinutesRemaining), - new TtsSpan.MeasureBuilder().setNumber(offsetMinutesRemaining) - .setUnit("minute").build()); + + for (int i = 0; i < gmtOffsetPattern.length(); i++) { + char c = gmtOffsetPattern.charAt(i); + if (c == '+' || c == '-' || c == '\u2212' /* MINUS SIGN */) { + final String sign = String.valueOf(c); + appendWithTtsSpan(builder, sign, new TtsSpan.VerbatimBuilder(sign).build()); + } else if (c == 'H' || c == 'm') { + final int numDigits; + if (i + 1 < gmtOffsetPattern.length() && gmtOffsetPattern.charAt(i + 1) == c) { + numDigits = 2; + i++; // Skip the next formatting character. + } else { + numDigits = 1; + } + final int number; + final String unit; + if (c == 'H') { + number = offsetHours; + unit = "hour"; + } else { // c == 'm' + number = offsetMinutesRemaining; + unit = "minute"; + } + appendWithTtsSpan(builder, formatDigits(number, numDigits, localizedDigits), + new TtsSpan.MeasureBuilder().setNumber(number).setUnit(unit).build()); + } else { + builder.append(c); + } + } + + if (!gmtPatternSuffix.isEmpty()) { + appendWithTtsSpan(builder, gmtPatternSuffix, + new TtsSpan.TextBuilder(gmtPatternSuffix).build()); + } CharSequence gmtText = new SpannableString(builder); @@ -305,7 +357,8 @@ public class ZoneGetter { public final int zoneCount; public ZoneGetterData(Context context) { - final Locale locale = Locale.getDefault(); + final Locale locale = context.getResources().getConfiguration().locale; + final TimeZoneFormat tzFormatter = TimeZoneFormat.getInstance(locale); final Date now = new Date(); final List olsonIdsToDisplayList = readTimezonesToDisplay(context); @@ -319,7 +372,7 @@ public class ZoneGetter { olsonIdsToDisplay[i] = olsonId; final TimeZone tz = TimeZone.getTimeZone(olsonId); timeZones[i] = tz; - gmtOffsetTexts[i] = getGmtOffsetText(context, locale, tz, now); + gmtOffsetTexts[i] = getGmtOffsetText(tzFormatter, locale, tz, now); } // Create a lookup of local zone IDs. diff --git a/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java new file mode 100644 index 0000000000000000000000000000000000000000..75b6696d923c2549a78a36666af90e8e7be0b3ca --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java @@ -0,0 +1,116 @@ +/* + * 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.settingslib.development; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.os.UserManager; +import android.provider.Settings; +import android.support.v14.preference.SwitchPreference; +import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceScreen; +import android.support.v7.preference.TwoStatePreference; +import android.text.TextUtils; + +import com.android.settingslib.core.AbstractPreferenceController; + +public abstract class AbstractEnableAdbPreferenceController extends AbstractPreferenceController { + private static final String KEY_ENABLE_ADB = "enable_adb"; + public static final String ACTION_ENABLE_ADB_STATE_CHANGED = + "com.android.settingslib.development.AbstractEnableAdbController." + + "ENABLE_ADB_STATE_CHANGED"; + + private SwitchPreference mPreference; + + public AbstractEnableAdbPreferenceController(Context context) { + super(context); + } + + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + if (isAvailable()) { + mPreference = (SwitchPreference) screen.findPreference(KEY_ENABLE_ADB); + } + } + + @Override + public boolean isAvailable() { + return mContext.getSystemService(UserManager.class).isAdminUser(); + } + + @Override + public String getPreferenceKey() { + return KEY_ENABLE_ADB; + } + + private boolean isAdbEnabled() { + final ContentResolver cr = mContext.getContentResolver(); + return Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0; + } + + @Override + public void updateState(Preference preference) { + ((TwoStatePreference)preference).setChecked(isAdbEnabled()); + } + + public void enablePreference(boolean enabled) { + if (isAvailable()) { + mPreference.setEnabled(enabled); + } + } + + public void resetPreference() { + if (mPreference.isChecked()) { + mPreference.setChecked(false); + handlePreferenceTreeClick(mPreference); + } + } + + public boolean haveDebugSettings() { + return isAdbEnabled(); + } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (TextUtils.equals(KEY_ENABLE_ADB, preference.getKey())) { + if (!isAdbEnabled()) { + showConfirmationDialog((SwitchPreference) preference); + } else { + writeAdbSetting(false); + } + return true; + } else { + return false; + } + } + + protected void writeAdbSetting(boolean enabled) { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.ADB_ENABLED, enabled ? 1 : 0); + notifyStateChanged(); + } + + protected void notifyStateChanged() { + LocalBroadcastManager.getInstance(mContext) + .sendBroadcast(new Intent(ACTION_ENABLE_ADB_STATE_CHANGED)); + } + + public abstract void showConfirmationDialog(SwitchPreference preference); +} diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java index e067de1a5e7a5ee4964b3867109e3e29e8e2a0fc..b04bd5a5edee384ff681f7c83cae252a7e36c17f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java @@ -37,6 +37,8 @@ public final class CategoryKey { public static final String CATEGORY_SECURITY_LOCKSCREEN = "com.android.settings.category.ia.lockscreen"; public static final String CATEGORY_ACCOUNT = "com.android.settings.category.ia.accounts"; + public static final String CATEGORY_ACCOUNT_DETAIL = + "com.android.settings.category.ia.account_detail"; public static final String CATEGORY_SYSTEM = "com.android.settings.category.ia.system"; public static final String CATEGORY_SYSTEM_LANGUAGE = "com.android.settings.category.ia.language"; diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java index a0eadd0fa1222d67fc459c3983edb6b336cd750c..190f5e6d140255084343ed0a9272c797fc6307f9 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java @@ -169,7 +169,10 @@ public class SettingsDrawerActivity extends Activity { finish(); } - public void setTileEnabled(ComponentName component, boolean enabled) { + /** + * @return whether or not the enabled state actually changed. + */ + public boolean setTileEnabled(ComponentName component, boolean enabled) { PackageManager pm = getPackageManager(); int state = pm.getComponentEnabledSetting(component); boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; @@ -183,7 +186,9 @@ public class SettingsDrawerActivity extends Activity { ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); + return true; } + return false; } /** diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java index 9620a9153f80fa106822562984a32bda7b30ed6b..6e676bc4f46040498c92a244f660f73c9c623bf3 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java @@ -326,6 +326,15 @@ public class TileUtils { Context context, UserHandle user, Intent intent, Map, Tile> addedCache, String defaultCategory, List outTiles, boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon) { + getTilesForIntent(context, user, intent, addedCache, defaultCategory, outTiles, + usePriority, checkCategory, forceTintExternalIcon, false /* shouldUpdateTiles */); + } + + public static void getTilesForIntent( + Context context, UserHandle user, Intent intent, + Map, Tile> addedCache, String defaultCategory, List outTiles, + boolean usePriority, boolean checkCategory, boolean forceTintExternalIcon, + boolean shouldUpdateTiles) { PackageManager pm = context.getPackageManager(); List results = pm.queryIntentActivitiesAsUser(intent, PackageManager.GET_META_DATA, user.getIdentifier()); @@ -363,9 +372,11 @@ public class TileUtils { updateTileData(context, tile, activityInfo, activityInfo.applicationInfo, pm, providerMap, forceTintExternalIcon); if (DEBUG) Log.d(LOG_TAG, "Adding tile " + tile.title); - addedCache.put(key, tile); + } else if (shouldUpdateTiles) { + updateSummaryAndTitle(context, providerMap, tile); } + if (!tile.userHandle.contains(user)) { tile.userHandle.add(user); } @@ -386,7 +397,6 @@ public class TileUtils { String summary = null; String keyHint = null; boolean isIconTintable = false; - RemoteViews remoteViews = null; // Get the activity's meta-data try { @@ -441,16 +451,8 @@ public class TileUtils { } if (metaData.containsKey(META_DATA_PREFERENCE_CUSTOM_VIEW)) { int layoutId = metaData.getInt(META_DATA_PREFERENCE_CUSTOM_VIEW); - remoteViews = new RemoteViews(applicationInfo.packageName, layoutId); - if (metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { - String uriString = metaData.getString( - META_DATA_PREFERENCE_SUMMARY_URI); - String overrideSummary = getTextFromUri(context, uriString, providerMap, - META_DATA_PREFERENCE_SUMMARY); - if (overrideSummary != null) { - remoteViews.setTextViewText(android.R.id.summary, overrideSummary); - } - } + tile.remoteViews = new RemoteViews(applicationInfo.packageName, layoutId); + updateSummaryAndTitle(context, providerMap, tile); } } } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { @@ -482,7 +484,6 @@ public class TileUtils { // Suggest a key for this tile tile.key = keyHint; tile.isIconTintable = isIconTintable; - tile.remoteViews = remoteViews; return true; } @@ -490,6 +491,26 @@ public class TileUtils { return false; } + private static void updateSummaryAndTitle( + Context context, Map providerMap, Tile tile) { + if (tile == null || tile.metaData == null + || !tile.metaData.containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) { + return; + } + + String uriString = tile.metaData.getString(META_DATA_PREFERENCE_SUMMARY_URI); + Bundle bundle = getBundleFromUri(context, uriString, providerMap); + String overrideSummary = getString(bundle, META_DATA_PREFERENCE_SUMMARY); + String overrideTitle = getString(bundle, META_DATA_PREFERENCE_TITLE); + if (overrideSummary != null) { + tile.remoteViews.setTextViewText(android.R.id.summary, overrideSummary); + } + + if (overrideTitle != null) { + tile.remoteViews.setTextViewText(android.R.id.title, overrideTitle); + } + } + /** * Gets the icon package name and resource id from content provider. * @param Context context @@ -555,6 +576,10 @@ public class TileUtils { } } + private static String getString(Bundle bundle, String key) { + return bundle == null ? null : bundle.getString(key); + } + private static IContentProvider getProviderFromUri(Context context, Uri uri, Map providerMap) { if (uri == null) { diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java b/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java index 426dc7c20a9649f484360950fbe60bc2c9297f6c..ec45b7e917003ed7db6b8d2102c7727ca72cdc6c 100755 --- a/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java +++ b/packages/SettingsLib/src/com/android/settingslib/graph/BatteryMeterDrawableBase.java @@ -50,6 +50,7 @@ public class BatteryMeterDrawableBase extends Drawable { protected final Paint mTextPaint; protected final Paint mBoltPaint; protected final Paint mPlusPaint; + protected float mButtonHeightFraction; private int mLevel = -1; private boolean mCharging; @@ -66,7 +67,6 @@ public class BatteryMeterDrawableBase extends Drawable { private final int mIntrinsicWidth; private final int mIntrinsicHeight; - private float mButtonHeightFraction; private float mSubpixelSmoothingLeft; private float mSubpixelSmoothingRight; private float mTextHeight, mWarningTextHeight; @@ -293,16 +293,19 @@ public class BatteryMeterDrawableBase extends Drawable { @Override public void draw(Canvas c) { final int level = mLevel; + final Rect bounds = getBounds(); if (level == -1) return; float drawFrac = (float) level / 100f; final int height = mHeight; - final int width = (int) (ASPECT_RATIO * mHeight); + final int width = (int) (getAspectRatio() * mHeight); final int px = (mWidth - width) / 2; final int buttonHeight = Math.round(height * mButtonHeightFraction); + final int left = mPadding.left + bounds.left; + final int top = bounds.bottom - mPadding.bottom - height; - mFrame.set(mPadding.left, mPadding.top, width + mPadding.left, height + mPadding.top); + mFrame.set(left, top, width + left, height + top); mFrame.offset(px, 0); // button-frame: area above the battery body @@ -329,7 +332,7 @@ public class BatteryMeterDrawableBase extends Drawable { // define the battery shape mShapePath.reset(); - final float radius = RADIUS_RATIO * (mFrame.height() + buttonHeight); + final float radius = getRadiusRatio() * (mFrame.height() + buttonHeight); mShapePath.setFillType(FillType.WINDING); mShapePath.addRoundRect(mFrame, radius, radius, Direction.CW); mShapePath.addRect(mButtonFrame, Direction.CW); @@ -469,4 +472,12 @@ public class BatteryMeterDrawableBase extends Drawable { public int getCriticalLevel() { return mCriticalLevel; } + + protected float getAspectRatio() { + return ASPECT_RATIO; + } + + protected float getRadiusRatio() { + return RADIUS_RATIO; + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java new file mode 100644 index 0000000000000000000000000000000000000000..3c5ac8dff0afd79d87cfb3c67088ed6483a7532a --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java @@ -0,0 +1,165 @@ +/* + * 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.settingslib.graph; + +import android.annotation.NonNull; +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; +import android.graphics.Rect; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; +import android.support.annotation.VisibleForTesting; +import android.view.Gravity; +import android.view.View; + +import com.android.settingslib.R; +import com.android.settingslib.Utils; + +/** + * LayerDrawable contains the bluetooth device icon and battery gauge icon + */ +public class BluetoothDeviceLayerDrawable extends LayerDrawable { + + private BluetoothDeviceLayerDrawableState mState; + + private BluetoothDeviceLayerDrawable(@NonNull Drawable[] layers) { + super(layers); + } + + /** + * Create the {@link LayerDrawable} that contains bluetooth device icon and battery icon. + * This is a horizontal layout drawable while bluetooth icon at start and battery icon at end. + * + * @param context used to get the spec for icon + * @param resId represents the bluetooth device drawable + * @param batteryLevel the battery level for bluetooth device + */ + public static BluetoothDeviceLayerDrawable createLayerDrawable(Context context, int resId, + int batteryLevel) { + return createLayerDrawable(context, resId, batteryLevel, 1 /*iconScale*/); + } + + /** + * Create the {@link LayerDrawable} that contains bluetooth device icon and battery icon. + * This is a horizontal layout drawable while bluetooth icon at start and battery icon at end. + * + * @param context used to get the spec for icon + * @param resId represents the bluetooth device drawable + * @param batteryLevel the battery level for bluetooth device + * @param iconScale the ratio of height between battery icon and bluetooth icon + */ + public static BluetoothDeviceLayerDrawable createLayerDrawable(Context context, int resId, + int batteryLevel, float iconScale) { + final Drawable deviceDrawable = context.getDrawable(resId); + + final BatteryMeterDrawable batteryDrawable = new BatteryMeterDrawable(context, + context.getColor(R.color.meter_background_color), batteryLevel); + final int pad = context.getResources().getDimensionPixelSize(R.dimen.bt_battery_padding); + batteryDrawable.setPadding(pad, pad, pad, pad); + + final BluetoothDeviceLayerDrawable drawable = new BluetoothDeviceLayerDrawable( + new Drawable[]{deviceDrawable, batteryDrawable}); + // Set the bluetooth icon at the left + drawable.setLayerGravity(0 /* index of deviceDrawable */, Gravity.START); + // Set battery icon to the right of the bluetooth icon + drawable.setLayerInsetStart(1 /* index of batteryDrawable */, + deviceDrawable.getIntrinsicWidth()); + drawable.setLayerInsetTop(1 /* index of batteryDrawable */, + (int) (deviceDrawable.getIntrinsicHeight() * (1 - iconScale))); + + drawable.setConstantState(context, resId, batteryLevel, iconScale); + + return drawable; + } + + public void setConstantState(Context context, int resId, int batteryLevel, float iconScale) { + mState = new BluetoothDeviceLayerDrawableState(context, resId, batteryLevel, iconScale); + } + + @Override + public ConstantState getConstantState() { + return mState; + } + + /** + * Battery gauge icon with new spec. + */ + @VisibleForTesting + static class BatteryMeterDrawable extends BatteryMeterDrawableBase { + private final float mAspectRatio; + @VisibleForTesting + int mFrameColor; + + public BatteryMeterDrawable(Context context, int frameColor, int batteryLevel) { + super(context, frameColor); + final Resources resources = context.getResources(); + mButtonHeightFraction = resources.getFraction( + R.fraction.bt_battery_button_height_fraction, 1, 1); + mAspectRatio = resources.getFraction(R.fraction.bt_battery_ratio_fraction, 1, 1); + + final int tintColor = Utils.getColorAttr(context, android.R.attr.colorControlNormal); + setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN)); + setBatteryLevel(batteryLevel); + mFrameColor = frameColor; + } + + @Override + protected float getAspectRatio() { + return mAspectRatio; + } + + @Override + protected float getRadiusRatio() { + // Remove the round edge + return 0; + } + } + + /** + * {@link ConstantState} to restore the {@link BluetoothDeviceLayerDrawable} + */ + private static class BluetoothDeviceLayerDrawableState extends ConstantState { + Context context; + int resId; + int batteryLevel; + float iconScale; + + public BluetoothDeviceLayerDrawableState(Context context, int resId, + int batteryLevel, float iconScale) { + this.context = context; + this.resId = resId; + this.batteryLevel = batteryLevel; + this.iconScale = iconScale; + } + + @Override + public Drawable newDrawable() { + return createLayerDrawable(context, resId, batteryLevel, iconScale); + } + + @Override + public int getChangingConfigurations() { + return 0; + } + } +} diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java index b69232c80f69101ce3720809865d713af50cd106..ed3696cafa452e73cd8b9c13f671e437c7576212 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java @@ -16,6 +16,14 @@ package com.android.settingslib.net; +import static android.net.ConnectivityManager.TYPE_MOBILE; +import static android.net.NetworkStatsHistory.FIELD_RX_BYTES; +import static android.net.NetworkStatsHistory.FIELD_TX_BYTES; +import static android.net.TrafficStats.MB_IN_BYTES; +import static android.telephony.TelephonyManager.SIM_STATE_READY; +import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; +import static android.text.format.DateUtils.FORMAT_SHOW_DATE; + import android.content.Context; import android.net.ConnectivityManager; import android.net.INetworkStatsService; @@ -29,22 +37,15 @@ import android.os.ServiceManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.format.DateUtils; -import android.text.format.Time; import android.util.Log; +import android.util.Pair; import com.android.internal.R; +import java.time.ZonedDateTime; import java.util.Date; import java.util.Locale; -import static android.net.ConnectivityManager.TYPE_MOBILE; -import static android.net.NetworkStatsHistory.FIELD_RX_BYTES; -import static android.net.NetworkStatsHistory.FIELD_TX_BYTES; -import static android.telephony.TelephonyManager.SIM_STATE_READY; -import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; -import static android.text.format.DateUtils.FORMAT_SHOW_DATE; -import static android.net.TrafficStats.MB_IN_BYTES; - public class DataUsageController { private static final String TAG = "DataUsageController"; @@ -107,13 +108,6 @@ public class DataUsageController { return null; } - private static Time addMonth(Time t, int months) { - final Time rt = new Time(t); - rt.set(t.monthDay, t.month + months, t.year); - rt.normalize(false); - return rt; - } - public DataUsageInfo getDataUsageInfo() { final String subscriberId = getActiveSubscriberId(mContext); if (subscriberId == null) { @@ -140,22 +134,11 @@ public class DataUsageController { final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS); final long now = System.currentTimeMillis(); final long start, end; - if (policy != null && policy.cycleDay > 0) { - // period = determined from cycleDay - if (DEBUG) Log.d(TAG, "Cycle day=" + policy.cycleDay + " tz=" - + policy.cycleTimezone); - final Time nowTime = new Time(policy.cycleTimezone); - nowTime.setToNow(); - final Time policyTime = new Time(nowTime); - policyTime.set(policy.cycleDay, policyTime.month, policyTime.year); - policyTime.normalize(false); - if (nowTime.after(policyTime)) { - start = policyTime.toMillis(false); - end = addMonth(policyTime, 1).toMillis(false); - } else { - start = addMonth(policyTime, -1).toMillis(false); - end = policyTime.toMillis(false); - } + if (policy != null) { + final Pair cycle = NetworkPolicyManager + .cycleIterator(policy).next(); + start = cycle.first.toInstant().toEpochMilli(); + end = cycle.second.toInstant().toEpochMilli(); } else { // period = last 4 wks end = now; diff --git a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java index 7f82a1ca17fa60b4550c8ca7a014529c6d166f55..56b84415e9079a58cdcd209ac2c78384bf1b06de 100644 --- a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java +++ b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionParser.java @@ -91,30 +91,25 @@ public class SuggestionParser { // Shared prefs keys for storing dismissed state. // Index into current dismissed state. - @VisibleForTesting - static final String DISMISS_INDEX = "_dismiss_index"; - private static final String SETUP_TIME = "_setup_time"; + public static final String SETUP_TIME = "_setup_time"; private static final String IS_DISMISSED = "_is_dismissed"; - private static final long MILLIS_IN_DAY = 24 * 60 * 60 * 1000; - // Default dismiss control for smart suggestions. - private static final String DEFAULT_SMART_DISMISS_CONTROL = "0,10"; + private static final String DEFAULT_SMART_DISMISS_CONTROL = "0"; private final Context mContext; private final List mSuggestionList; private final ArrayMap, Tile> mAddCache = new ArrayMap<>(); private final SharedPreferences mSharedPrefs; - private final String mSmartDismissControl; - + private final String mDefaultDismissControl; public SuggestionParser(Context context, SharedPreferences sharedPrefs, int orderXml, - String smartDismissControl) { + String defaultDismissControl) { this( context, sharedPrefs, (List) new SuggestionOrderInflater(context).parse(orderXml), - smartDismissControl); + defaultDismissControl); } public SuggestionParser(Context context, SharedPreferences sharedPrefs, int orderXml) { @@ -126,11 +121,11 @@ public class SuggestionParser { Context context, SharedPreferences sharedPrefs, List suggestionList, - String smartDismissControl) { + String defaultDismissControl) { mContext = context; mSuggestionList = suggestionList; mSharedPrefs = sharedPrefs; - mSmartDismissControl = smartDismissControl; + mDefaultDismissControl = defaultDismissControl; } public SuggestionList getSuggestions(boolean isSmartSuggestionEnabled) { @@ -163,25 +158,16 @@ public class SuggestionParser { return suggestionList; } - public boolean dismissSuggestion(Tile suggestion) { - return dismissSuggestion(suggestion, false); - } - /** * Dismisses a suggestion, returns true if the suggestion has no more dismisses left and should * be disabled. */ - public boolean dismissSuggestion(Tile suggestion, boolean isSmartSuggestionEnabled) { - String keyBase = suggestion.intent.getComponent().flattenToShortString(); - int index = mSharedPrefs.getInt(keyBase + DISMISS_INDEX, 0); - String dismissControl = getDismissControl(suggestion, isSmartSuggestionEnabled); - if (dismissControl == null || parseDismissString(dismissControl).length == index) { - return true; - } + public boolean dismissSuggestion(Tile suggestion) { + final String keyBase = suggestion.intent.getComponent().flattenToShortString(); mSharedPrefs.edit() .putBoolean(keyBase + IS_DISMISSED, true) .commit(); - return false; + return true; } @VisibleForTesting @@ -209,7 +195,7 @@ public class SuggestionParser { intent.setPackage(category.pkg); } TileUtils.getTilesForIntent(mContext, new UserHandle(UserHandle.myUserId()), intent, - mAddCache, null, suggestions, true, false, false); + mAddCache, null, suggestions, true, false, false, true /* shouldUpdateTiles */); filterSuggestions(suggestions, countBefore, isSmartSuggestionEnabled); if (!category.multiple && suggestions.size() > (countBefore + 1)) { // If there are too many, remove them all and only re-add the one with the highest @@ -359,32 +345,29 @@ public class SuggestionParser { @VisibleForTesting boolean isDismissed(Tile suggestion, boolean isSmartSuggestionEnabled) { String dismissControl = getDismissControl(suggestion, isSmartSuggestionEnabled); - if (dismissControl == null) { - return false; - } String keyBase = suggestion.intent.getComponent().flattenToShortString(); if (!mSharedPrefs.contains(keyBase + SETUP_TIME)) { mSharedPrefs.edit() .putLong(keyBase + SETUP_TIME, System.currentTimeMillis()) .commit(); } - // Default to dismissed, so that we can have suggestions that only first appear after - // some number of days. - if (!mSharedPrefs.getBoolean(keyBase + IS_DISMISSED, true)) { - return false; - } - int index = mSharedPrefs.getInt(keyBase + DISMISS_INDEX, 0); - int[] dismissRules = parseDismissString(dismissControl); - if (dismissRules.length <= index) { + // Check if it's already manually dismissed + final boolean isDismissed = mSharedPrefs.getBoolean(keyBase + IS_DISMISSED, false); + if (isDismissed) { return true; } - int currentDismiss = dismissRules[index]; - long time = getEndTime(mSharedPrefs.getLong(keyBase + SETUP_TIME, 0), currentDismiss); - if (System.currentTimeMillis() >= time) { + if (dismissControl == null) { + return false; + } + // Parse when suggestion should first appear. return true to artificially hide suggestion + // before then. + int firstAppearDay = parseDismissString(dismissControl); + long firstAppearDayInMs = getEndTime(mSharedPrefs.getLong(keyBase + SETUP_TIME, 0), + firstAppearDay); + if (System.currentTimeMillis() >= firstAppearDayInMs) { // Dismiss timeout has passed, undismiss it. mSharedPrefs.edit() .putBoolean(keyBase + IS_DISMISSED, false) - .putInt(keyBase + DISMISS_INDEX, index + 1) .commit(); return false; } @@ -392,22 +375,22 @@ public class SuggestionParser { } private long getEndTime(long startTime, int daysDelay) { - long days = daysDelay * MILLIS_IN_DAY; + long days = daysDelay * DateUtils.DAY_IN_MILLIS; return startTime + days; } - private int[] parseDismissString(String dismissControl) { - String[] dismissStrs = dismissControl.split(","); - int[] dismisses = new int[dismissStrs.length]; - for (int i = 0; i < dismissStrs.length; i++) { - dismisses[i] = Integer.parseInt(dismissStrs[i]); - } - return dismisses; + /** + * Parse the first int from a string formatted as "0,1,2..." + * The value means suggestion should first appear on Day X. + */ + private int parseDismissString(String dismissControl) { + final String[] dismissStrs = dismissControl.split(","); + return Integer.parseInt(dismissStrs[0]); } private String getDismissControl(Tile suggestion, boolean isSmartSuggestionEnabled) { if (isSmartSuggestionEnabled) { - return mSmartDismissControl; + return mDefaultDismissControl; } else { return suggestion.metaData.getString(META_DATA_DISMISS_CONTROL); } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index 306f9acee406ebc4b3ed2ecd3a3c53c6a4114bcf..682b85e461650bb277e6f7f67121f2b3425dad00 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -28,13 +28,16 @@ import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.net.NetworkInfo.DetailedState; import android.net.NetworkInfo.State; +import android.net.NetworkKey; import android.net.NetworkScoreManager; import android.net.NetworkScorerAppData; import android.net.ScoredNetwork; +import android.net.WifiKey; import android.net.wifi.IWifiManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.KeyMgmt; +import android.net.wifi.WifiEnterpriseConfig; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.net.wifi.WifiNetworkScoreCache; @@ -57,7 +60,9 @@ import com.android.settingslib.R; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; @@ -118,19 +123,33 @@ public class AccessPoint implements Comparable { */ private final ConcurrentHashMap mScanResultCache = new ConcurrentHashMap(32); + + /** + * Map of BSSIDs to scored networks for individual bssids. + * + *

        This cache should not be evicted with scan results, as the values here are used to + * generate a fallback in the absence of scores for the visible APs. + */ + private final Map mScoredNetworkCache = new HashMap<>(); + /** Maximum age of scan results to hold onto while actively scanning. **/ - private static final long MAX_SCAN_RESULT_AGE_MS = 15000; + private static final long MAX_SCAN_RESULT_AGE_MILLIS = 25000; static final String KEY_NETWORKINFO = "key_networkinfo"; static final String KEY_WIFIINFO = "key_wifiinfo"; static final String KEY_SCANRESULT = "key_scanresult"; static final String KEY_SSID = "key_ssid"; static final String KEY_SECURITY = "key_security"; + static final String KEY_SPEED = "key_speed"; static final String KEY_PSKTYPE = "key_psktype"; static final String KEY_SCANRESULTCACHE = "key_scanresultcache"; + static final String KEY_SCOREDNETWORKCACHE = "key_scorednetworkcache"; static final String KEY_CONFIG = "key_config"; static final String KEY_FQDN = "key_fqdn"; static final String KEY_PROVIDER_FRIENDLY_NAME = "key_provider_friendly_name"; + static final String KEY_IS_CARRIER_AP = "key_is_carrier_ap"; + static final String KEY_CARRIER_AP_EAP_TYPE = "key_carrier_ap_eap_type"; + static final String KEY_CARRIER_NAME = "key_carrier_name"; static final AtomicInteger sLastId = new AtomicInteger(0); /** @@ -175,8 +194,7 @@ public class AccessPoint implements Comparable { private Object mTag; - private int mRankingScore = Integer.MIN_VALUE; - private int mSpeed = Speed.NONE; + @Speed private int mSpeed = Speed.NONE; private boolean mIsScoredNetworkMetered = false; // used to co-relate internal vs returned accesspoint. @@ -189,6 +207,13 @@ public class AccessPoint implements Comparable { private String mFqdn; private String mProviderFriendlyName; + private boolean mIsCarrierAp = false; + /** + * The EAP type {@link WifiEnterpriseConfig.Eap} associated with this AP if it is a carrier AP. + */ + private int mCarrierApEapType = WifiEnterpriseConfig.Eap.NONE; + private String mCarrierName = null; + public AccessPoint(Context context, Bundle savedState) { mContext = context; mConfig = savedState.getParcelable(KEY_CONFIG); @@ -201,10 +226,13 @@ public class AccessPoint implements Comparable { if (savedState.containsKey(KEY_SECURITY)) { security = savedState.getInt(KEY_SECURITY); } + if (savedState.containsKey(KEY_SPEED)) { + mSpeed = savedState.getInt(KEY_SPEED); + } if (savedState.containsKey(KEY_PSKTYPE)) { pskType = savedState.getInt(KEY_PSKTYPE); } - mInfo = (WifiInfo) savedState.getParcelable(KEY_WIFIINFO); + mInfo = savedState.getParcelable(KEY_WIFIINFO); if (savedState.containsKey(KEY_NETWORKINFO)) { mNetworkInfo = savedState.getParcelable(KEY_NETWORKINFO); } @@ -216,12 +244,28 @@ public class AccessPoint implements Comparable { mScanResultCache.put(result.BSSID, result); } } + if (savedState.containsKey(KEY_SCOREDNETWORKCACHE)) { + ArrayList scoredNetworkArrayList = + savedState.getParcelableArrayList(KEY_SCOREDNETWORKCACHE); + for (TimestampedScoredNetwork timedScore : scoredNetworkArrayList) { + mScoredNetworkCache.put(timedScore.getScore().networkKey.wifiKey.bssid, timedScore); + } + } if (savedState.containsKey(KEY_FQDN)) { mFqdn = savedState.getString(KEY_FQDN); } if (savedState.containsKey(KEY_PROVIDER_FRIENDLY_NAME)) { mProviderFriendlyName = savedState.getString(KEY_PROVIDER_FRIENDLY_NAME); } + if (savedState.containsKey(KEY_IS_CARRIER_AP)) { + mIsCarrierAp = savedState.getBoolean(KEY_IS_CARRIER_AP); + } + if (savedState.containsKey(KEY_CARRIER_AP_EAP_TYPE)) { + mCarrierApEapType = savedState.getInt(KEY_CARRIER_AP_EAP_TYPE); + } + if (savedState.containsKey(KEY_CARRIER_NAME)) { + mCarrierName = savedState.getString(KEY_CARRIER_NAME); + } update(mConfig, mInfo, mNetworkInfo); // Do not evict old scan results on initial creation @@ -277,10 +321,14 @@ public class AccessPoint implements Comparable { this.mNetworkInfo = that.mNetworkInfo; this.mScanResultCache.clear(); this.mScanResultCache.putAll(that.mScanResultCache); + this.mScoredNetworkCache.clear(); + this.mScoredNetworkCache.putAll(that.mScoredNetworkCache); this.mId = that.mId; this.mSpeed = that.mSpeed; this.mIsScoredNetworkMetered = that.mIsScoredNetworkMetered; - this.mRankingScore = that.mRankingScore; + this.mIsCarrierAp = that.mIsCarrierAp; + this.mCarrierApEapType = that.mCarrierApEapType; + this.mCarrierName = that.mCarrierName; } /** @@ -291,7 +339,7 @@ public class AccessPoint implements Comparable { * 1. Active before inactive * 2. Reachable before unreachable * 3. Saved before unsaved - * 4. (Internal only) Network ranking score + * 4. Network speed value * 5. Stronger signal before weaker signal * 6. SSID alphabetically * @@ -312,9 +360,9 @@ public class AccessPoint implements Comparable { if (isSaved() && !other.isSaved()) return -1; if (!isSaved() && other.isSaved()) return 1; - // Higher scores go before lower scores - if (getRankingScore() != other.getRankingScore()) { - return (getRankingScore() > other.getRankingScore()) ? -1 : 1; + // Faster speeds go before slower speeds - but only if visible change in speed label + if (getSpeed() != other.getSpeed()) { + return other.getSpeed() - getSpeed(); } // Sort by signal strength, bucketed by level @@ -373,14 +421,16 @@ public class AccessPoint implements Comparable { builder.append(',').append(securityToString(security, pskType)); } builder.append(",level=").append(getLevel()); - if (mRankingScore != Integer.MIN_VALUE) { - builder.append(",rankingScore=").append(mRankingScore); - } if (mSpeed != Speed.NONE) { builder.append(",speed=").append(mSpeed); } builder.append(",metered=").append(isMetered()); + if (WifiTracker.sVerboseLogging) { + builder.append(",rssi=").append(mRssi); + builder.append(",scan cache size=").append(mScanResultCache.size()); + } + return builder.append(')').toString(); } @@ -388,13 +438,18 @@ public class AccessPoint implements Comparable { * Updates the AccessPoint rankingScore, metering, and speed, returning true if the data has * changed. * - * @param scoreCache The score cache to use to retrieve scores. - * @param scoringUiEnabled Whether to show scoring and badging UI. + * @param scoreCache The score cache to use to retrieve scores + * @param scoringUiEnabled Whether to show scoring and badging UI + * @param maxScoreCacheAgeMillis the maximum age in milliseconds of scores to consider when + * generating speed labels */ - boolean update(WifiNetworkScoreCache scoreCache, boolean scoringUiEnabled) { + boolean update( + WifiNetworkScoreCache scoreCache, + boolean scoringUiEnabled, + long maxScoreCacheAgeMillis) { boolean scoreChanged = false; if (scoringUiEnabled) { - scoreChanged = updateScores(scoreCache); + scoreChanged = updateScores(scoreCache, maxScoreCacheAgeMillis); } return updateMetered(scoreCache) || scoreChanged; } @@ -402,28 +457,89 @@ public class AccessPoint implements Comparable { /** * Updates the AccessPoint rankingScore and speed, returning true if the data has changed. * - * @param scoreCache The score cache to use to retrieve scores. + *

        Any cached {@link TimestampedScoredNetwork} objects older than the given max age in millis + * will be removed when this method is invoked. + * + *

        Precondition: {@link #mRssi} is up to date before invoking this method. + * + * @param scoreCache The score cache to use to retrieve scores + * @param maxScoreCacheAgeMillis the maximum age in milliseconds of scores to consider when + * generating speed labels + * + * @return true if the set speed has changed */ - private boolean updateScores(WifiNetworkScoreCache scoreCache) { - int oldSpeed = mSpeed; - int oldRankingScore = mRankingScore; - mSpeed = Speed.NONE; - mRankingScore = Integer.MIN_VALUE; - + private boolean updateScores(WifiNetworkScoreCache scoreCache, long maxScoreCacheAgeMillis) { + long nowMillis = SystemClock.elapsedRealtime(); for (ScanResult result : mScanResultCache.values()) { ScoredNetwork score = scoreCache.getScoredNetwork(result); if (score == null) { continue; } + TimestampedScoredNetwork timedScore = mScoredNetworkCache.get(result.BSSID); + if (timedScore == null) { + mScoredNetworkCache.put( + result.BSSID, new TimestampedScoredNetwork(score, nowMillis)); + } else { + // Update data since the has been seen in the score cache + timedScore.update(score, nowMillis); + } + } - if (score.hasRankingScore()) { - mRankingScore = Math.max(mRankingScore, score.calculateRankingScore(result.level)); + // Remove old cached networks + long evictionCutoff = nowMillis - maxScoreCacheAgeMillis; + Iterator iterator = mScoredNetworkCache.values().iterator(); + iterator.forEachRemaining(timestampedScoredNetwork -> { + if (timestampedScoredNetwork.getUpdatedTimestampMillis() < evictionCutoff) { + iterator.remove(); } - // TODO(sghuman): Rename calculateBadge API - mSpeed = Math.max(mSpeed, score.calculateBadge(result.level)); + }); + + return updateSpeed(); + } + + /** + * Updates the internal speed, returning true if the update resulted in a speed label change. + */ + private boolean updateSpeed() { + int oldSpeed = mSpeed; + mSpeed = generateAverageSpeedForSsid(); + + boolean changed = oldSpeed != mSpeed; + if(WifiTracker.sVerboseLogging && changed) { + Log.i(TAG, String.format("%s: Set speed to %d", ssid, mSpeed)); } + return changed; + } - return (oldSpeed != mSpeed || oldRankingScore != mRankingScore); + /** Creates a speed value for the current {@link #mRssi} by averaging all non zero badges. */ + @Speed private int generateAverageSpeedForSsid() { + if (mScoredNetworkCache.isEmpty()) { + return Speed.NONE; + } + + if (Log.isLoggable(TAG, Log.DEBUG)) { + Log.d(TAG, String.format("Generating fallbackspeed for %s using cache: %s", + getSsidStr(), mScoredNetworkCache)); + } + + // TODO(b/63073866): If flickering issues persist, consider mapping using getLevel rather + // than specific rssi value so score doesn't change without a visible wifi bar change. This + // issue is likely to be more evident for the active AP whose RSSI value is not half-lifed. + + int count = 0; + int totalSpeed = 0; + for (TimestampedScoredNetwork timedScore : mScoredNetworkCache.values()) { + int speed = timedScore.getScore().calculateBadge(mRssi); + if (speed != Speed.NONE) { + count++; + totalSpeed += speed; + } + } + int speed = count == 0 ? Speed.NONE : totalSpeed / count; + if (WifiTracker.sVerboseLogging) { + Log.i(TAG, String.format("%s generated fallback speed is: %d", getSsidStr(), speed)); + } + return roundToClosestSpeedEnum(speed); } /** @@ -433,12 +549,22 @@ public class AccessPoint implements Comparable { private boolean updateMetered(WifiNetworkScoreCache scoreCache) { boolean oldMetering = mIsScoredNetworkMetered; mIsScoredNetworkMetered = false; - for (ScanResult result : mScanResultCache.values()) { - ScoredNetwork score = scoreCache.getScoredNetwork(result); - if (score == null) { - continue; + + if (isActive() && mInfo != null) { + NetworkKey key = new NetworkKey(new WifiKey( + AccessPoint.convertToQuotedString(ssid), mInfo.getBSSID())); + ScoredNetwork score = scoreCache.getScoredNetwork(key); + if (score != null) { + mIsScoredNetworkMetered |= score.meteredHint; + } + } else { + for (ScanResult result : mScanResultCache.values()) { + ScoredNetwork score = scoreCache.getScoredNetwork(result); + if (score == null) { + continue; + } + mIsScoredNetworkMetered |= score.meteredHint; } - mIsScoredNetworkMetered |= score.meteredHint; } return oldMetering == mIsScoredNetworkMetered; } @@ -448,7 +574,7 @@ public class AccessPoint implements Comparable { for (Iterator iter = mScanResultCache.values().iterator(); iter.hasNext(); ) { ScanResult result = iter.next(); // result timestamp is in microseconds - if (nowMs - result.timestamp / 1000 > MAX_SCAN_RESULT_AGE_MS) { + if (nowMs - result.timestamp / 1000 > MAX_SCAN_RESULT_AGE_MILLIS) { iter.remove(); } } @@ -529,8 +655,6 @@ public class AccessPoint implements Comparable { /** Updates {@link #mSeen} based on the scan result cache. */ private void updateSeen() { - // TODO(sghuman): Set to now if connected - long seen = 0; for (ScanResult result : mScanResultCache.values()) { if (result.timestamp > seen) { @@ -545,15 +669,11 @@ public class AccessPoint implements Comparable { } /** - * Returns if the network is marked metered. Metering can be marked through its config in - * {@link WifiConfiguration}, after connection in {@link WifiInfo}, or from a score config in - * {@link ScoredNetwork}. + * Returns if the network should be considered metered. */ public boolean isMetered() { return mIsScoredNetworkMetered - || (mConfig != null && mConfig.meteredHint) - || (mInfo != null && mInfo.getMeteredHint() - || (mNetworkInfo != null && mNetworkInfo.isMetered())); + || WifiConfiguration.isMetered(mConfig, mInfo); } public NetworkInfo getNetworkInfo() { @@ -566,7 +686,7 @@ public class AccessPoint implements Comparable { public String getSecurityString(boolean concise) { Context context = mContext; - if (mConfig != null && mConfig.isPasspoint()) { + if (isPasspoint() || isPasspointConfig()) { return concise ? context.getString(R.string.wifi_security_short_eap) : context.getString(R.string.wifi_security_eap); } @@ -632,6 +752,18 @@ public class AccessPoint implements Comparable { return null; } + public boolean isCarrierAp() { + return mIsCarrierAp; + } + + public int getCarrierApEapType() { + return mCarrierApEapType; + } + + public String getCarrierName() { + return mCarrierName; + } + public String getSavedNetworkSummary() { WifiConfiguration config = mConfig; if (config != null) { @@ -670,17 +802,13 @@ public class AccessPoint implements Comparable { // Update to new summary StringBuilder summary = new StringBuilder(); - // TODO(b/62354743): Standardize and international delimiter usage - final String concatenator = " / "; - - if (mSpeed != Speed.NONE) { - summary.append(getSpeedLabel() + concatenator); - } - if (isActive() && config != null && config.isPasspoint()) { // This is the active connection on passpoint summary.append(getSummary(mContext, getDetailedState(), false, config.providerFriendlyName)); + } else if (isActive() && config != null && getDetailedState() == DetailedState.CONNECTED + && mIsCarrierAp) { + summary.append(String.format(mContext.getString(R.string.connected_via_carrier), mCarrierName)); } else if (isActive()) { // This is the active connection on non-passpoint network summary.append(getSummary(mContext, getDetailedState(), @@ -714,18 +842,30 @@ public class AccessPoint implements Comparable { } } else if (config != null && config.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)); } else if (!isReachable()) { // Wifi out of range summary.append(mContext.getString(R.string.wifi_not_in_range)); } else { // In range, not disabled. if (config != null) { // Is saved network - summary.append(mContext.getString(R.string.wifi_remembered)); + // Last attempt to connect to this failed. Show reason why + switch (config.recentFailure.getAssociationStatus()) { + case WifiConfiguration.RecentFailure.STATUS_AP_UNABLE_TO_HANDLE_NEW_STA: + summary.append(mContext.getString( + R.string.wifi_ap_unable_to_handle_new_sta)); + break; + default: + // "Saved" + summary.append(mContext.getString(R.string.wifi_remembered)); + break; + } } } - if (WifiTracker.sVerboseLogging > 0) { + if (WifiTracker.sVerboseLogging) { // Add RSSI/band information for this config, what was seen up to 6 seconds ago // verbose WiFi Logging is only turned on thru developers settings - if (mInfo != null && mNetworkInfo != null) { // This is the active connection + if (isActive() && mInfo != null) { summary.append(" f=" + Integer.toString(mInfo.getFrequency())); } summary.append(" " + getVisibilityStatus()); @@ -760,14 +900,18 @@ public class AccessPoint implements Comparable { } } - // Strip trailing delimiter if applicable - int concatLength = concatenator.length(); - if (summary.length() >= concatLength && summary.substring( - summary.length() - concatLength, summary.length()).equals(concatenator)) { - summary.delete(summary.length() - concatLength, summary.length()); + // If Speed label and summary are both present, use the preference combination to combine + // the two, else return the non-null one. + if (getSpeedLabel() != null && summary.length() != 0) { + return mContext.getResources().getString( + R.string.preference_summary_default_combination, + getSpeedLabel(), + summary.toString()); + } else if (getSpeedLabel() != null) { + return getSpeedLabel(); + } else { + return summary.toString(); } - - return summary.toString(); } /** @@ -780,13 +924,13 @@ public class AccessPoint implements Comparable { */ private String getVisibilityStatus() { StringBuilder visibility = new StringBuilder(); - StringBuilder scans24GHz = null; - StringBuilder scans5GHz = null; + StringBuilder scans24GHz = new StringBuilder(); + StringBuilder scans5GHz = new StringBuilder(); String bssid = null; long now = System.currentTimeMillis(); - if (mInfo != null) { + if (isActive() && mInfo != null) { bssid = mInfo.getBSSID(); if (bssid != null) { visibility.append(" ").append(bssid); @@ -794,9 +938,6 @@ public class AccessPoint implements Comparable { visibility.append(" rssi=").append(mInfo.getRssi()); visibility.append(" "); visibility.append(" score=").append(mInfo.score); - if (mRankingScore != Integer.MIN_VALUE) { - visibility.append(" rankingScore=").append(getRankingScore()); - } if (mSpeed != Speed.NONE) { visibility.append(" speed=").append(getSpeedLabel()); } @@ -806,87 +947,56 @@ public class AccessPoint implements Comparable { visibility.append(String.format("rx=%.1f", mInfo.rxSuccessRate)); } - int rssi5 = WifiConfiguration.INVALID_RSSI; - int rssi24 = WifiConfiguration.INVALID_RSSI; - int num5 = 0; - int num24 = 0; + int maxRssi5 = WifiConfiguration.INVALID_RSSI; + int maxRssi24 = WifiConfiguration.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 int numBlackListed = 0; - int n24 = 0; // Number scan results we included in the string - int n5 = 0; // Number scan results we included in the string evictOldScanResults(); + // TODO: sort list by RSSI or age + long nowMs = SystemClock.elapsedRealtime(); for (ScanResult result : mScanResultCache.values()) { - if (result.frequency >= LOWER_FREQ_5GHZ && result.frequency <= HIGHER_FREQ_5GHZ) { // Strictly speaking: [4915, 5825] - // number of known BSSID on 5GHz band - num5 = num5 + 1; - } else if (result.frequency >= LOWER_FREQ_24GHZ - && result.frequency <= HIGHER_FREQ_24GHZ) { - // Strictly speaking: [2412, 2482] - // number of known BSSID on 2.4Ghz band - num24 = num24 + 1; - } - + num5++; - if (result.frequency >= LOWER_FREQ_5GHZ - && result.frequency <= HIGHER_FREQ_5GHZ) { - if (result.level > rssi5) { - rssi5 = result.level; + if (result.level > maxRssi5) { + maxRssi5 = result.level; } - if (n5 < 4) { - if (scans5GHz == null) scans5GHz = new StringBuilder(); - scans5GHz.append(" \n{").append(result.BSSID); - if (bssid != null && result.BSSID.equals(bssid)) scans5GHz.append("*"); - scans5GHz.append("=").append(result.frequency); - scans5GHz.append(",").append(result.level); - scans5GHz.append("}"); - n5++; + if (num5 <= maxDisplayedScans) { + scans5GHz.append(verboseScanResultSummary(result, bssid, nowMs)); } } else if (result.frequency >= LOWER_FREQ_24GHZ && result.frequency <= HIGHER_FREQ_24GHZ) { - if (result.level > rssi24) { - rssi24 = result.level; + // Strictly speaking: [2412, 2482] + num24++; + + if (result.level > maxRssi24) { + maxRssi24 = result.level; } - if (n24 < 4) { - if (scans24GHz == null) scans24GHz = new StringBuilder(); - scans24GHz.append(" \n{").append(result.BSSID); - if (bssid != null && result.BSSID.equals(bssid)) scans24GHz.append("*"); - scans24GHz.append("=").append(result.frequency); - scans24GHz.append(",").append(result.level); - scans24GHz.append("}"); - n24++; + if (num24 <= maxDisplayedScans) { + scans24GHz.append(verboseScanResultSummary(result, bssid, nowMs)); } } } visibility.append(" ["); if (num24 > 0) { visibility.append("(").append(num24).append(")"); - if (n24 <= 4) { - if (scans24GHz != null) { - visibility.append(scans24GHz.toString()); - } - } else { - visibility.append("max=").append(rssi24); - if (scans24GHz != null) { - visibility.append(",").append(scans24GHz.toString()); - } + if (num24 > maxDisplayedScans) { + visibility.append("max=").append(maxRssi24).append(","); } + visibility.append(scans24GHz.toString()); } visibility.append(";"); if (num5 > 0) { visibility.append("(").append(num5).append(")"); - if (n5 <= 4) { - if (scans5GHz != null) { - visibility.append(scans5GHz.toString()); - } - } else { - visibility.append("max=").append(rssi5); - if (scans5GHz != null) { - visibility.append(",").append(scans5GHz.toString()); - } + if (num5 > maxDisplayedScans) { + visibility.append("max=").append(maxRssi5).append(","); } + visibility.append(scans5GHz.toString()); } if (numBlackListed > 0) visibility.append("!").append(numBlackListed); @@ -895,6 +1005,36 @@ public class AccessPoint implements Comparable { return visibility.toString(); } + @VisibleForTesting + /* package */ String verboseScanResultSummary(ScanResult result, String bssid, long nowMs) { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(" \n{").append(result.BSSID); + if (result.BSSID.equals(bssid)) { + stringBuilder.append("*"); + } + stringBuilder.append("=").append(result.frequency); + stringBuilder.append(",").append(result.level); + int speed = getSpecificApSpeed(result); + if (speed != Speed.NONE) { + stringBuilder.append(",") + .append(getSpeedLabel(speed)); + } + int ageSeconds = (int) (nowMs - result.timestamp / 1000) / 1000; + stringBuilder.append(",").append(ageSeconds).append("s"); + stringBuilder.append("}"); + return stringBuilder.toString(); + } + + @Speed private int getSpecificApSpeed(ScanResult result) { + TimestampedScoredNetwork timedScore = mScoredNetworkCache.get(result.BSSID); + if (timedScore == null) { + return Speed.NONE; + } + // For debugging purposes we may want to use mRssi rather than result.level as the average + // speed wil be determined by mRssi + return timedScore.getScore().calculateBadge(result.level); + } + /** * Return whether this is the active connection. * For ephemeral connections (networkId is invalid), this returns false if the network is @@ -992,17 +1132,23 @@ public class AccessPoint implements Comparable { mScanResultCache.put(result.BSSID, result); updateRssi(); mSeen = result.timestamp; // even if the timestamp is old it is still valid + mIsCarrierAp = result.isCarrierAp; + mCarrierApEapType = result.carrierApEapType; + mCarrierName = result.carrierName; } public void saveWifiState(Bundle savedState) { if (ssid != null) savedState.putString(KEY_SSID, getSsidStr()); savedState.putInt(KEY_SECURITY, security); + savedState.putInt(KEY_SPEED, mSpeed); savedState.putInt(KEY_PSKTYPE, pskType); if (mConfig != null) savedState.putParcelable(KEY_CONFIG, mConfig); savedState.putParcelable(KEY_WIFIINFO, mInfo); evictOldScanResults(); savedState.putParcelableArrayList(KEY_SCANRESULTCACHE, new ArrayList(mScanResultCache.values())); + savedState.putParcelableArrayList(KEY_SCOREDNETWORKCACHE, + new ArrayList<>(mScoredNetworkCache.values())); if (mNetworkInfo != null) { savedState.putParcelable(KEY_NETWORKINFO, mNetworkInfo); } @@ -1012,6 +1158,9 @@ public class AccessPoint implements Comparable { if (mProviderFriendlyName != null) { savedState.putString(KEY_PROVIDER_FRIENDLY_NAME, mProviderFriendlyName); } + savedState.putBoolean(KEY_IS_CARRIER_AP, mIsCarrierAp); + savedState.putInt(KEY_CARRIER_AP_EAP_TYPE, mCarrierApEapType); + savedState.putString(KEY_CARRIER_NAME, mCarrierName); } public void setListener(AccessPointListener listener) { @@ -1038,8 +1187,12 @@ public class AccessPoint implements Comparable { updateRssi(); int newLevel = getLevel(); - if (newLevel > 0 && newLevel != oldLevel && mAccessPointListener != null) { - mAccessPointListener.onLevelChanged(this); + if (newLevel > 0 && newLevel != oldLevel) { + // Only update labels on visible rssi changes + updateSpeed(); + if (mAccessPointListener != null) { + mAccessPointListener.onLevelChanged(this); + } } // This flag only comes from scans, is not easily saved in config if (security == SECURITY_PSK) { @@ -1050,6 +1203,12 @@ public class AccessPoint implements Comparable { mAccessPointListener.onAccessPointChanged(this); } + // The carrier info in the ScanResult is set by the platform based on the SSID and will + // always be the same for all matching scan results. + mIsCarrierAp = result.isCarrierAp; + mCarrierApEapType = result.carrierApEapType; + mCarrierName = result.carrierName; + return true; } return false; @@ -1058,6 +1217,7 @@ public class AccessPoint implements Comparable { /** Attempt to update the AccessPoint and return true if an update occurred. */ public boolean update( @Nullable WifiConfiguration config, WifiInfo info, NetworkInfo networkInfo) { + boolean updated = false; final int oldLevel = getLevel(); if (info != null && isInfoForThisAccessPoint(config, info)) { @@ -1089,6 +1249,7 @@ public class AccessPoint implements Comparable { mAccessPointListener.onLevelChanged(this); } } + return updated; } @@ -1110,15 +1271,32 @@ public class AccessPoint implements Comparable { setRssi(AccessPoint.UNREACHABLE_RSSI); } - int getRankingScore() { - return mRankingScore; - } - int getSpeed() { return mSpeed;} @Nullable String getSpeedLabel() { - switch (mSpeed) { + return getSpeedLabel(mSpeed); + } + + @Nullable + @Speed + private int roundToClosestSpeedEnum(int speed) { + if (speed < Speed.SLOW) { + return Speed.NONE; + } else if (speed < (Speed.SLOW + Speed.MODERATE) / 2) { + return Speed.SLOW; + } else if (speed < (Speed.MODERATE + Speed.FAST) / 2) { + return Speed.MODERATE; + } else if (speed < (Speed.FAST + Speed.VERY_FAST) / 2) { + return Speed.FAST; + } else { + return Speed.VERY_FAST; + } + } + + @Nullable + private String getSpeedLabel(@Speed int speed) { + switch (speed) { case Speed.VERY_FAST: return mContext.getString(R.string.speed_label_very_fast); case Speed.FAST: diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java index 92995a8e850dc6afbe82c1b19e11779feb64f781..9ed8de059996cfb6e73aa262b19c35b2d11c0aae 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java @@ -25,6 +25,7 @@ import android.net.NetworkBadging; import android.net.wifi.WifiConfiguration; import android.os.Looper; import android.os.UserHandle; +import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceViewHolder; import android.text.TextUtils; @@ -47,7 +48,17 @@ public class AccessPointPreference extends Preference { R.attr.state_metered }; - private static final int[] wifi_friction_attributes = { R.attr.wifi_friction }; + private static final int[] FRICTION_ATTRS = { + R.attr.wifi_friction + }; + + private static final int[] WIFI_CONNECTION_STRENGTH = { + R.string.accessibility_no_wifi, + R.string.accessibility_wifi_one_bar, + R.string.accessibility_wifi_two_bars, + R.string.accessibility_wifi_three_bars, + R.string.accessibility_wifi_signal_full + }; private final StateListDrawable mFrictionSld; private final int mBadgePadding; @@ -62,21 +73,13 @@ public class AccessPointPreference extends Preference { private int mDefaultIconResId; private int mWifiSpeed = NetworkBadging.BADGING_NONE; - static final int[] WIFI_CONNECTION_STRENGTH = { - R.string.accessibility_no_wifi, - R.string.accessibility_wifi_one_bar, - R.string.accessibility_wifi_two_bars, - R.string.accessibility_wifi_three_bars, - R.string.accessibility_wifi_signal_full - }; - public static String generatePreferenceKey(AccessPoint accessPoint) { StringBuilder builder = new StringBuilder(); - if (TextUtils.isEmpty(accessPoint.getBssid())) { - builder.append(accessPoint.getSsidStr()); - } else { + if (TextUtils.isEmpty(accessPoint.getSsidStr())) { builder.append(accessPoint.getBssid()); + } else { + builder.append(accessPoint.getSsidStr()); } builder.append(',').append(accessPoint.getSecurity()); @@ -103,7 +106,7 @@ public class AccessPointPreference extends Preference { TypedArray frictionSld; try { - frictionSld = context.getTheme().obtainStyledAttributes(wifi_friction_attributes); + frictionSld = context.getTheme().obtainStyledAttributes(FRICTION_ATTRS); } catch (Resources.NotFoundException e) { // Fallback for platforms that do not need friction icon resources. frictionSld = null; @@ -129,7 +132,7 @@ public class AccessPointPreference extends Preference { TypedArray frictionSld; try { - frictionSld = context.getTheme().obtainStyledAttributes(wifi_friction_attributes); + frictionSld = context.getTheme().obtainStyledAttributes(FRICTION_ATTRS); } catch (Resources.NotFoundException e) { // Fallback for platforms that do not need friction icon resources. frictionSld = null; @@ -157,7 +160,7 @@ public class AccessPointPreference extends Preference { drawable.setLevel(mLevel); } - mTitleView = (TextView) view.findViewById(com.android.internal.R.id.title); + mTitleView = (TextView) view.findViewById(android.R.id.title); if (mTitleView != null) { // Attach to the end of the title view mTitleView.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, mBadge, null); @@ -228,12 +231,7 @@ public class AccessPointPreference extends Preference { * Updates the title and summary; may indirectly call notifyChanged(). */ public void refresh() { - if (mForSavedNetworks) { - setTitle(mAccessPoint.getConfigName()); - } else { - setTitle(mAccessPoint.getSsid()); - } - + setTitle(this, mAccessPoint, mForSavedNetworks); final Context context = getContext(); int level = mAccessPoint.getLevel(); int wifiSpeed = mAccessPoint.getSpeed(); @@ -249,14 +247,7 @@ public class AccessPointPreference extends Preference { setSummary(mForSavedNetworks ? mAccessPoint.getSavedNetworkSummary() : mAccessPoint.getSettingsSummary()); - mContentDescription = getTitle(); - if (getSummary() != null) { - mContentDescription = TextUtils.concat(mContentDescription, ",", getSummary()); - } - if (level >= 0 && level < WIFI_CONNECTION_STRENGTH.length) { - mContentDescription = TextUtils.concat(mContentDescription, ",", - getContext().getString(WIFI_CONNECTION_STRENGTH[level])); - } + mContentDescription = buildContentDescription(getContext(), this /* pref */, mAccessPoint); } @Override @@ -269,6 +260,36 @@ public class AccessPointPreference extends Preference { } } + @VisibleForTesting + static void setTitle(AccessPointPreference preference, AccessPoint ap, boolean savedNetworks) { + if (savedNetworks) { + preference.setTitle(ap.getConfigName()); + } else { + preference.setTitle(ap.getSsidStr()); + } + } + + /** + * Helper method to generate content description string. + */ + @VisibleForTesting + static CharSequence buildContentDescription(Context context, Preference pref, AccessPoint ap) { + CharSequence contentDescription = pref.getTitle(); + final CharSequence summary = pref.getSummary(); + if (!TextUtils.isEmpty(summary)) { + contentDescription = TextUtils.concat(contentDescription, ",", summary); + } + int level = ap.getLevel(); + if (level >= 0 && level < WIFI_CONNECTION_STRENGTH.length) { + contentDescription = TextUtils.concat(contentDescription, ",", + context.getString(WIFI_CONNECTION_STRENGTH[level])); + } + return TextUtils.concat(contentDescription, ",", + ap.getSecurity() == AccessPoint.SECURITY_NONE + ? context.getString(R.string.accessibility_wifi_security_type_none) + : context.getString(R.string.accessibility_wifi_security_type_secured)); + } + public void onLevelChanged() { postNotifyChanged(); } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java index 3413f249cf0cf9e64ef88d2ccbb30177f2b3aa24..3dec1d382026cbf7f586965097e79c3bfe4dff60 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java @@ -19,11 +19,16 @@ package com.android.settingslib.wifi; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Bundle; import android.support.annotation.Keep; +import com.android.settingslib.wifi.AccessPoint.Speed; + +import java.util.ArrayList; + /** * Build and return a valid AccessPoint. * @@ -39,6 +44,7 @@ public class TestAccessPointBuilder { // set some sensible defaults private String mBssid = null; + private int mSpeed = Speed.NONE; private int mRssi = AccessPoint.UNREACHABLE_RSSI; private int mNetworkId = WifiConfiguration.INVALID_NETWORK_ID; private String ssid = "TestSsid"; @@ -48,8 +54,12 @@ public class TestAccessPointBuilder { private int mSecurity = AccessPoint.SECURITY_NONE; private WifiConfiguration mWifiConfig; private WifiInfo mWifiInfo; + private boolean mIsCarrierAp = false; + private String mCarrierName = null; Context mContext; + private ArrayList mScanResultCache; + private ArrayList mScoredNetworkCache; @Keep public TestAccessPointBuilder(Context context) { @@ -74,7 +84,18 @@ public class TestAccessPointBuilder { if (mProviderFriendlyName != null) { bundle.putString(AccessPoint.KEY_PROVIDER_FRIENDLY_NAME, mProviderFriendlyName); } + if (mScanResultCache != null) { + bundle.putParcelableArrayList(AccessPoint.KEY_SCANRESULTCACHE, mScanResultCache); + } + if (mScoredNetworkCache != null) { + bundle.putParcelableArrayList(AccessPoint.KEY_SCOREDNETWORKCACHE, mScoredNetworkCache); + } bundle.putInt(AccessPoint.KEY_SECURITY, mSecurity); + bundle.putInt(AccessPoint.KEY_SPEED, mSpeed); + bundle.putBoolean(AccessPoint.KEY_IS_CARRIER_AP, mIsCarrierAp); + if (mCarrierName != null) { + bundle.putString(AccessPoint.KEY_CARRIER_NAME, mCarrierName); + } AccessPoint ap = new AccessPoint(mContext, bundle); ap.setRssi(mRssi); @@ -128,6 +149,11 @@ public class TestAccessPointBuilder { return this; } + public TestAccessPointBuilder setSpeed(int speed) { + mSpeed = speed; + return this; + } + /** * Set whether the AccessPoint is reachable. * Side effect: if the signal level was not previously set, @@ -202,4 +228,25 @@ public class TestAccessPointBuilder { mBssid = bssid; return this; } + + public TestAccessPointBuilder setScanResultCache(ArrayList scanResultCache) { + mScanResultCache = scanResultCache; + return this; + } + + public TestAccessPointBuilder setIsCarrierAp(boolean isCarrierAp) { + mIsCarrierAp = isCarrierAp; + return this; + } + + public TestAccessPointBuilder setCarrierName(String carrierName) { + mCarrierName = carrierName; + return this; + } + + public TestAccessPointBuilder setScoredNetworkCache( + ArrayList scoredNetworkCache) { + mScoredNetworkCache = scoredNetworkCache; + return this; + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/TimestampedScoredNetwork.java b/packages/SettingsLib/src/com/android/settingslib/wifi/TimestampedScoredNetwork.java new file mode 100644 index 0000000000000000000000000000000000000000..1286d57b4959b146131ab0c3dec1fc107c5891e5 --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/TimestampedScoredNetwork.java @@ -0,0 +1,76 @@ +/* + * 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.settingslib.wifi; + +import android.net.ScoredNetwork; +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Data encapsulation object to associate a time with a {@link ScoredNetwork} + */ +class TimestampedScoredNetwork implements Parcelable { + private ScoredNetwork mScore; + private long mUpdatedTimestampMillis; + + TimestampedScoredNetwork(ScoredNetwork score, long updatedTimestampMillis) { + mScore = score; + mUpdatedTimestampMillis = updatedTimestampMillis; + } + + protected TimestampedScoredNetwork(Parcel in) { + mScore = in.readParcelable(ScoredNetwork.class.getClassLoader()); + mUpdatedTimestampMillis = in.readLong(); + } + + public void update(ScoredNetwork score, long updatedTimestampMillis) { + mScore = score; + mUpdatedTimestampMillis = updatedTimestampMillis; + } + + public ScoredNetwork getScore() { + return mScore; + } + + public long getUpdatedTimestampMillis() { + return mUpdatedTimestampMillis; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(mScore, flags); + dest.writeLong(mUpdatedTimestampMillis); + } + + public static final Creator CREATOR = + new Creator() { + @Override + public TimestampedScoredNetwork createFromParcel(Parcel in) { + return new TimestampedScoredNetwork(in); + } + + @Override + public TimestampedScoredNetwork[] newArray(int size) { + return new TimestampedScoredNetwork[size]; + } + }; +} diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index f8e2f8bbb1468a4a51f855cbe97febfb4190f1dd..3c664b0b01a952740ba08c18abe1337a12228b32 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -20,7 +20,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.database.ContentObserver; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; @@ -41,6 +40,7 @@ import android.os.Looper; import android.os.Message; import android.provider.Settings; import android.support.annotation.GuardedBy; +import android.text.format.DateUtils; import android.util.ArraySet; import android.util.Log; import android.util.SparseArray; @@ -65,14 +65,22 @@ import java.util.concurrent.atomic.AtomicBoolean; * Tracks saved or available wifi networks and their state. */ public class WifiTracker { - // TODO(b/36733768): Remove flag includeSaved and includePasspoints. + /** + * Default maximum age in millis of cached scored networks in + * {@link AccessPoint#mScoredNetworkCache} to be used for speed label generation. + */ + private static final long DEFAULT_MAX_CACHED_SCORE_AGE_MILLIS = 20 * DateUtils.MINUTE_IN_MILLIS; private static final String TAG = "WifiTracker"; - private static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG); + private static final boolean DBG() { + return Log.isLoggable(TAG, Log.DEBUG); + } /** verbose logging flag. this flag is set thru developer debugging options * and used so as to assist with in-the-field WiFi connectivity debugging */ - public static int sVerboseLogging = 0; + public static boolean sVerboseLogging; + + // TODO(b/36733768): Remove flag includeSaved and includePasspoints. // TODO: Allow control of this? // Combo scans can take 5-6s to complete - set to 10s. @@ -136,7 +144,7 @@ public class WifiTracker { private final NetworkScoreManager mNetworkScoreManager; private final WifiNetworkScoreCache mScoreCache; private boolean mNetworkScoringUiEnabled; - private final ContentObserver mObserver; + private long mMaxSpeedLabelScoreCacheAge; @GuardedBy("mLock") private final Set mRequestedScores = new ArraySet<>(); @@ -195,7 +203,7 @@ public class WifiTracker { mConnectivityManager = connectivityManager; // check if verbose logging has been turned on or off - sVerboseLogging = mWifiManager.getVerboseLoggingLevel(); + sVerboseLogging = (mWifiManager.getVerboseLoggingLevel() > 0); mFilter = new IntentFilter(); mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); @@ -227,16 +235,6 @@ public class WifiTracker { updateNetworkScores(); } }); - - mObserver = new ContentObserver(mWorkHandler) { - @Override - public void onChange(boolean selfChange) { - mNetworkScoringUiEnabled = - Settings.Global.getInt( - mContext.getContentResolver(), - Settings.Global.NETWORK_SCORING_UI_ENABLED, 0) == 1; - } - }; } /** Synchronously update the list of access points with the latest information. */ @@ -248,20 +246,20 @@ public class WifiTracker { mLastNetworkInfo = mConnectivityManager.getNetworkInfo(mWifiManager.getCurrentNetwork()); final List newScanResults = mWifiManager.getScanResults(); + if (sVerboseLogging) { + Log.i(TAG, "Fetched scan results: " + newScanResults); + } + List configs = mWifiManager.getConfiguredNetworks(); mInternalAccessPoints.clear(); updateAccessPointsLocked(newScanResults, configs); - if (DBG) { - Log.d(TAG, "force update - internal access point list:\n" + mInternalAccessPoints); - } - // Synchronously copy access points mMainHandler.removeMessages(MainHandler.MSG_ACCESS_POINT_CHANGED); mMainHandler.handleMessage( Message.obtain(mMainHandler, MainHandler.MSG_ACCESS_POINT_CHANGED)); - if (DBG) { - Log.d(TAG, "force update - external access point list:\n" + mAccessPoints); + if (sVerboseLogging) { + Log.i(TAG, "force update - external access point list:\n" + mAccessPoints); } } } @@ -312,11 +310,16 @@ public class WifiTracker { synchronized (mLock) { registerScoreCache(); - mContext.getContentResolver().registerContentObserver( - Settings.Global.getUriFor(Settings.Global.NETWORK_SCORING_UI_ENABLED), - false /* notifyForDescendants */, - mObserver); - mObserver.onChange(false /* selfChange */); // Set mScoringUiEnabled + mNetworkScoringUiEnabled = + Settings.Global.getInt( + mContext.getContentResolver(), + Settings.Global.NETWORK_SCORING_UI_ENABLED, 0) == 1; + + mMaxSpeedLabelScoreCacheAge = + Settings.Global.getLong( + mContext.getContentResolver(), + Settings.Global.SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS, + DEFAULT_MAX_CACHED_SCORE_AGE_MILLIS); resumeScanning(); if (!mRegistered) { @@ -339,7 +342,7 @@ public class WifiTracker { private void requestScoresForNetworkKeys(Collection keys) { if (keys.isEmpty()) return; - if (DBG) { + if (DBG()) { Log.d(TAG, "Requesting scores for Network Keys: " + keys); } mNetworkScoreManager.requestScores(keys.toArray(new NetworkKey[keys.size()])); @@ -368,7 +371,6 @@ public class WifiTracker { } unregisterScoreCache(); pauseScanning(); - mContext.getContentResolver().unregisterContentObserver(mObserver); mWorkHandler.removePendingMessages(); mMainHandler.removePendingMessages(); @@ -444,19 +446,19 @@ public class WifiTracker { } if (mScanId > NUM_SCANS_TO_CONFIRM_AP_LOSS) { - if (DBG) Log.d(TAG, "------ Dumping SSIDs that were expired on this scan ------"); + if (DBG()) Log.d(TAG, "------ Dumping SSIDs that were expired on this scan ------"); Integer threshold = mScanId - NUM_SCANS_TO_CONFIRM_AP_LOSS; for (Iterator> it = mSeenBssids.entrySet().iterator(); it.hasNext(); /* nothing */) { Map.Entry e = it.next(); if (e.getValue() < threshold) { ScanResult result = mScanResultCache.get(e.getKey()); - if (DBG) Log.d(TAG, "Removing " + e.getKey() + ":(" + result.SSID + ")"); + if (DBG()) Log.d(TAG, "Removing " + e.getKey() + ":(" + result.SSID + ")"); mScanResultCache.remove(e.getKey()); it.remove(); } } - if (DBG) Log.d(TAG, "---- Done Dumping SSIDs that were expired on this scan ----"); + if (DBG()) Log.d(TAG, "---- Done Dumping SSIDs that were expired on this scan ----"); } return mScanResultCache.values(); @@ -483,6 +485,9 @@ public class WifiTracker { private void updateAccessPoints() { List configs = mWifiManager.getConfiguredNetworks(); final List newScanResults = mWifiManager.getScanResults(); + if (sVerboseLogging) { + Log.i(TAG, "Fetched scan results: " + newScanResults); + } synchronized (mLock) { if(!mStaleScanResults) { @@ -604,14 +609,14 @@ public class WifiTracker { requestScoresForNetworkKeys(scoresToRequest); for (AccessPoint ap : accessPoints) { - ap.update(mScoreCache, mNetworkScoringUiEnabled); + ap.update(mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge); } // Pre-sort accessPoints to speed preference insertion Collections.sort(accessPoints); // Log accesspoints that were deleted - if (DBG) { + if (DBG()) { Log.d(TAG, "------ Dumping SSIDs that were not seen on this scan ------"); for (AccessPoint prevAccessPoint : mInternalAccessPoints) { if (prevAccessPoint.getSsid() == null) @@ -619,7 +624,7 @@ public class WifiTracker { String prevSsid = prevAccessPoint.getSsidStr(); boolean found = false; for (AccessPoint newAccessPoint : accessPoints) { - if (newAccessPoint.getSsid() != null && newAccessPoint.getSsid() + if (newAccessPoint.getSsidStr() != null && newAccessPoint.getSsidStr() .equals(prevSsid)) { found = true; break; @@ -671,24 +676,23 @@ public class WifiTracker { private void updateNetworkInfo(NetworkInfo networkInfo) { /* sticky broadcasts can call this when wifi is disabled */ if (!mWifiManager.isWifiEnabled()) { - mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING); clearAccessPointsAndConditionallyUpdate(); return; } - if (networkInfo != null && - networkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR) { - mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING); - } else { - mMainHandler.sendEmptyMessage(MainHandler.MSG_RESUME_SCANNING); - } - if (networkInfo != null) { mLastNetworkInfo = networkInfo; + if (DBG()) { + Log.d(TAG, "mLastNetworkInfo set: " + mLastNetworkInfo); + } } WifiConfiguration connectionConfig = null; + mLastInfo = mWifiManager.getConnectionInfo(); + if (DBG()) { + Log.d(TAG, "mLastInfo set as: " + mLastInfo); + } if (mLastInfo != null) { connectionConfig = getWifiConfigurationForNetworkId(mLastInfo.getNetworkId(), mWifiManager.getConfiguredNetworks()); @@ -705,14 +709,13 @@ public class WifiTracker { updated = true; if (previouslyConnected != ap.isActive()) reorder = true; } - if (ap.update(mScoreCache, mNetworkScoringUiEnabled)) { + if (ap.update(mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge)) { reorder = true; updated = true; } } if (reorder) Collections.sort(mInternalAccessPoints); - if (updated) mMainHandler.sendEmptyMessage(MainHandler.MSG_ACCESS_POINT_CHANGED); } } @@ -739,7 +742,8 @@ public class WifiTracker { synchronized (mLock) { boolean updated = false; for (int i = 0; i < mInternalAccessPoints.size(); i++) { - if (mInternalAccessPoints.get(i).update(mScoreCache, mNetworkScoringUiEnabled)) { + if (mInternalAccessPoints.get(i).update( + mScoreCache, mNetworkScoringUiEnabled, mMaxSpeedLabelScoreCacheAge)) { updated = true; } } @@ -860,6 +864,9 @@ public class WifiTracker { if (mScanner != null) { mScanner.pause(); } + synchronized (mLock) { + mStaleScanResults = true; + } break; } } @@ -922,6 +929,9 @@ public class WifiTracker { if (mScanner != null) { mScanner.pause(); } + synchronized (mLock) { + mStaleScanResults = true; + } } mMainHandler.obtainMessage(MainHandler.MSG_WIFI_STATE_CHANGED, msg.arg1, 0) .sendToTarget(); @@ -976,7 +986,7 @@ public class WifiTracker { } return; } - sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS); + sendEmptyMessageDelayed(MSG_SCAN, WIFI_RESCAN_INTERVAL_MS); } } @@ -1069,10 +1079,12 @@ public class WifiTracker { oldAccessPoints.put(accessPoint.mId, accessPoint); } - if (DBG) { - Log.d(TAG, "Starting to copy AP items on the MainHandler"); - } synchronized (mLock) { + if (DBG()) { + Log.d(TAG, "Starting to copy AP items on the MainHandler. Internal APs: " + + mInternalAccessPoints); + } + if (notifyListeners) { notificationMap = mAccessPointListenerAdapter.mPendingNotifications.clone(); } diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java index fed18fa1bcb0307e8b512ea740714ed57408211c..d9ac262f44146f83ab20a181e5d6cf2bfa06fdac 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java @@ -102,6 +102,13 @@ public class ApplicationsStateTest { assertThat(ApplicationsState.FILTER_OTHER_APPS.filterApp(mEntry)).isFalse(); } + @Test + public void testOtherAppsRejectsImageApp() { + mEntry.info.category = ApplicationInfo.CATEGORY_IMAGE; + + assertThat(ApplicationsState.FILTER_OTHER_APPS.filterApp(mEntry)).isFalse(); + } + @Test public void testOtherAppsAcceptsDefaultCategory() { mEntry.info.category = ApplicationInfo.CATEGORY_UNDEFINED; @@ -109,6 +116,27 @@ public class ApplicationsStateTest { assertThat(ApplicationsState.FILTER_OTHER_APPS.filterApp(mEntry)).isTrue(); } + @Test + public void testPhotosFilterAcceptsFilter() { + mEntry.info.category = ApplicationInfo.CATEGORY_IMAGE; + + assertThat(ApplicationsState.FILTER_PHOTOS.filterApp(mEntry)).isTrue(); + } + + @Test + public void testPhotosFilterRejectsNotPhotos() { + mEntry.info.category = ApplicationInfo.CATEGORY_VIDEO; + + assertThat(ApplicationsState.FILTER_PHOTOS.filterApp(mEntry)).isFalse(); + } + + @Test + public void testPhotosFilterRejectsDefaultCategory() { + mEntry.info.category = ApplicationInfo.CATEGORY_UNDEFINED; + + assertThat(ApplicationsState.FILTER_PHOTOS.filterApp(mEntry)).isFalse(); + } + @Test public void testDownloadAndLauncherAndInstantAcceptsCorrectApps() { // should include instant apps diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/StorageStatsSourceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/StorageStatsSourceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3dabe99f3776cb4d199756f6038a9d69d2dce7b9 --- /dev/null +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/StorageStatsSourceTest.java @@ -0,0 +1,41 @@ +/* + * 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.settingslib.applications; + +import static com.google.common.truth.Truth.assertThat; + +import android.app.usage.StorageStats; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class StorageStatsSourceTest { + @Test + public void AppStorageStatsImpl_totalCorrectly() { + StorageStats storageStats = new StorageStats(); + storageStats.cacheBytes = 1; + storageStats.codeBytes = 10; + storageStats.dataBytes = 100; + StorageStatsSource.AppStorageStatsImpl stats = new StorageStatsSource.AppStorageStatsImpl( + storageStats); + + // Note that this does not double add the cache (111). + assertThat(stats.getTotalBytes()).isEqualTo(110); + } +} diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/ZoneGetterTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/ZoneGetterTest.java index a3345ee58b7d8d19532fe479bf51b60953aa4805..0ec75ecee066a5278de6e8993b307fccc2edce14 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/ZoneGetterTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/utils/ZoneGetterTest.java @@ -36,6 +36,8 @@ import static junit.framework.Assert.assertTrue; public class ZoneGetterTest { private static final String TIME_ZONE_LONDON_ID = "Europe/London"; private static final String TIME_ZONE_LA_ID = "America/Los_Angeles"; + private static final String TIME_ZONE_ALGIERS_ID = "Africa/Algiers"; + private static final String TIME_ZONE_CEUTA_ID = "Africa/Ceuta"; private Locale mLocaleEnUs; private Calendar mCalendar; @@ -58,6 +60,16 @@ public class ZoneGetterTest { testTimeZoneOffsetAndNameInner(TIME_ZONE_LA_ID, "Pacific Daylight Time"); } + @Test + public void getTimeZoneOffsetAndName_setAlgiers_returnCentralEuropeanStandardTime() { + testTimeZoneOffsetAndNameInner(TIME_ZONE_ALGIERS_ID, "Central European Standard Time"); + } + + @Test + public void getTimeZoneOffsetAndName_setCeuta_returnCentralEuropeanSummerTime() { + testTimeZoneOffsetAndNameInner(TIME_ZONE_CEUTA_ID, "Central European Summer Time"); + } + @Test public void getZonesList_checkTypes() { final List> zones = 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 88d3a320e7818925dfeb03ffe128a9f3cadfee8d..230b20081961bf7ab081ea78476ac3c71b3283b3 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 @@ -33,6 +33,7 @@ import android.net.ScoredNetwork; import android.net.WifiKey; import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiEnterpriseConfig; import android.net.wifi.WifiInfo; import android.net.wifi.WifiNetworkScoreCache; import android.net.wifi.WifiSsid; @@ -44,9 +45,11 @@ import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.text.SpannableString; +import android.text.format.DateUtils; import android.text.style.TtsSpan; import com.android.settingslib.R; +import com.android.settingslib.wifi.AccessPoint.Speed; import org.junit.Before; import org.junit.Test; @@ -55,21 +58,43 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; @SmallTest @RunWith(AndroidJUnit4.class) public class AccessPointTest { - private static final String TEST_SSID = "test_ssid"; + private static final String TEST_SSID = "\"test_ssid\""; + private static final int NUM_SCAN_RESULTS = 5; + + private static final ArrayList SCAN_RESULTS = buildScanResultCache(); + + private static final RssiCurve FAST_BADGE_CURVE = + new RssiCurve(-150, 10, new byte[]{Speed.FAST}); + public static final String TEST_BSSID = "00:00:00:00:00:00"; + private static final long MAX_SCORE_CACHE_AGE_MILLIS = + 20 * DateUtils.MINUTE_IN_MILLIS;; + private Context mContext; @Mock private RssiCurve mockBadgeCurve; @Mock private WifiNetworkScoreCache mockWifiNetworkScoreCache; + private static ScanResult createScanResult(String ssid, String bssid, int rssi) { + ScanResult scanResult = new ScanResult(); + scanResult.SSID = ssid; + scanResult.level = rssi; + scanResult.BSSID = bssid; + scanResult.timestamp = SystemClock.elapsedRealtime() * 1000; + scanResult.capabilities = ""; + return scanResult; + } + @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = InstrumentationRegistry.getTargetContext(); + WifiTracker.sVerboseLogging = false; } @Test @@ -143,7 +168,13 @@ public class AccessPointTest { assertSortingWorks(savedAp, notSavedAp); } - //TODO: add tests for mRankingScore sort order if ranking is exposed + @Test + public void testCompareTo_GivesHighSpeedBeforeLowSpeed() { + AccessPoint fastAp = new TestAccessPointBuilder(mContext).setSpeed(Speed.FAST).build(); + AccessPoint slowAp = new TestAccessPointBuilder(mContext).setSpeed(Speed.SLOW).build(); + + assertSortingWorks(fastAp, slowAp); + } @Test public void testCompareTo_GivesHighLevelBeforeLowLevel() { @@ -297,23 +328,6 @@ public class AccessPointTest { assertThat(accessPoint.isMetered()).isTrue(); } - @Test - public void testIsMetered_returnTrueWhenNetworkInfoIsMetered() { - WifiConfiguration configuration = createWifiConfiguration(); - - NetworkInfo networkInfo = - new NetworkInfo(ConnectivityManager.TYPE_WIFI, 2, "WIFI", "WIFI_SUBTYPE"); - networkInfo.setMetered(true); - AccessPoint accessPoint = new AccessPoint(mContext, configuration); - WifiInfo wifiInfo = new WifiInfo(); - wifiInfo.setSSID(WifiSsid.createFromAsciiEncoded(configuration.SSID)); - wifiInfo.setBSSID(configuration.BSSID); - wifiInfo.setNetworkId(configuration.networkId); - accessPoint.update(configuration, wifiInfo, networkInfo); - - assertThat(accessPoint.isMetered()).isTrue(); - } - @Test public void testIsMetered_returnTrueWhenScoredNetworkIsMetered() { AccessPoint ap = createAccessPointWithScanResultCache(); @@ -324,7 +338,8 @@ public class AccessPointTest { null /* NetworkKey */, null /* rssiCurve */, true /* metered */)); - ap.update(mockWifiNetworkScoreCache, false /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, false /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); assertThat(ap.isMetered()).isTrue(); } @@ -353,7 +368,8 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.VERY_FAST); assertThat(ap.getSpeedLabel()) @@ -368,7 +384,9 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.FAST); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.FAST); assertThat(ap.getSpeedLabel()) @@ -383,7 +401,8 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.MODERATE); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.MODERATE); assertThat(ap.getSpeedLabel()) @@ -398,7 +417,8 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.SLOW); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); assertThat(ap.getSpeed()).isEqualTo(AccessPoint.Speed.SLOW); assertThat(ap.getSpeedLabel()) @@ -413,11 +433,32 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); assertThat(ap.getSummary()).isEqualTo(mContext.getString(R.string.speed_label_very_fast)); } + @Test + public void testVerboseSummaryString_showsScanResultSpeedLabel() { + WifiTracker.sVerboseLogging = true; + + Bundle bundle = new Bundle(); + ArrayList scanResults = buildScanResultCache(); + bundle.putParcelableArrayList(AccessPoint.KEY_SCANRESULTCACHE, scanResults); + AccessPoint ap = new AccessPoint(mContext, bundle); + + when(mockWifiNetworkScoreCache.getScoredNetwork(any(ScanResult.class))) + .thenReturn(buildScoredNetworkWithMockBadgeCurve()); + when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + String summary = ap.verboseScanResultSummary(scanResults.get(0), null, 0); + + assertThat(summary.contains(mContext.getString(R.string.speed_label_very_fast))).isTrue(); + } + @Test public void testSummaryString_concatenatesSpeedLabel() { AccessPoint ap = createAccessPointWithScanResultCache(); @@ -427,7 +468,8 @@ public class AccessPointTest { .thenReturn(buildScoredNetworkWithMockBadgeCurve()); when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) AccessPoint.Speed.VERY_FAST); - ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */); + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); String expectedString = mContext.getString(R.string.speed_label_very_fast) + " / " + mContext.getString(R.string.wifi_remembered); @@ -447,12 +489,86 @@ public class AccessPointTest { R.string.wifi_check_password_try_again)); } + @Test + public void testSummaryString_showsAvaiableViaCarrier() { + String carrierName = "Test Carrier"; + ScanResult result = new ScanResult(); + result.BSSID = "00:11:22:33:44:55"; + result.capabilities = "EAP"; + result.isCarrierAp = true; + result.carrierApEapType = WifiEnterpriseConfig.Eap.SIM; + result.carrierName = carrierName; + + AccessPoint ap = new AccessPoint(mContext, result); + assertThat(ap.getSummary()).isEqualTo(String.format(mContext.getString( + R.string.available_via_carrier), carrierName)); + assertThat(ap.isCarrierAp()).isEqualTo(true); + assertThat(ap.getCarrierApEapType()).isEqualTo(WifiEnterpriseConfig.Eap.SIM); + assertThat(ap.getCarrierName()).isEqualTo(carrierName); + } + + @Test + public void testSummaryString_showsConnectedViaCarrier() { + int networkId = 123; + int rssi = -55; + String carrierName = "Test Carrier"; + WifiConfiguration config = new WifiConfiguration(); + config.networkId = networkId; + WifiInfo wifiInfo = new WifiInfo(); + wifiInfo.setNetworkId(networkId); + wifiInfo.setRssi(rssi); + + NetworkInfo networkInfo = + new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", ""); + networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", ""); + + AccessPoint ap = new TestAccessPointBuilder(mContext) + .setNetworkInfo(networkInfo) + .setNetworkId(networkId) + .setRssi(rssi) + .setWifiInfo(wifiInfo) + .setIsCarrierAp(true) + .setCarrierName(carrierName) + .build(); + assertThat(ap.getSummary()).isEqualTo(String.format(mContext.getString( + R.string.connected_via_carrier), carrierName)); + } + + @Test + public void testUpdateScanResultWithCarrierInfo() { + String ssid = "ssid"; + AccessPoint ap = new TestAccessPointBuilder(mContext).setSsid(ssid).build(); + assertThat(ap.isCarrierAp()).isEqualTo(false); + assertThat(ap.getCarrierApEapType()).isEqualTo(WifiEnterpriseConfig.Eap.NONE); + assertThat(ap.getCarrierName()).isEqualTo(null); + + int carrierApEapType = WifiEnterpriseConfig.Eap.SIM; + String carrierName = "Test Carrier"; + ScanResult scanResult = new ScanResult(); + scanResult.SSID = ssid; + scanResult.BSSID = "00:11:22:33:44:55"; + scanResult.capabilities = ""; + scanResult.isCarrierAp = true; + scanResult.carrierApEapType = carrierApEapType; + scanResult.carrierName = carrierName; + assertThat(ap.update(scanResult, true /* evictOldScanresults */)).isTrue(); + + assertThat(ap.isCarrierAp()).isEqualTo(true); + assertThat(ap.getCarrierApEapType()).isEqualTo(carrierApEapType); + assertThat(ap.getCarrierName()).isEqualTo(carrierName); + } + private ScoredNetwork buildScoredNetworkWithMockBadgeCurve() { + return buildScoredNetworkWithGivenBadgeCurve(mockBadgeCurve); + + } + + private ScoredNetwork buildScoredNetworkWithGivenBadgeCurve(RssiCurve badgeCurve) { Bundle attr1 = new Bundle(); - attr1.putParcelable(ScoredNetwork.ATTRIBUTES_KEY_BADGING_CURVE, mockBadgeCurve); + attr1.putParcelable(ScoredNetwork.ATTRIBUTES_KEY_BADGING_CURVE, badgeCurve); return new ScoredNetwork( - new NetworkKey(new WifiKey("\"ssid\"", "00:00:00:00:00:00")), - mockBadgeCurve, + new NetworkKey(new WifiKey(TEST_SSID, TEST_BSSID)), + badgeCurve, false /* meteredHint */, attr1); @@ -460,18 +576,17 @@ public class AccessPointTest { private AccessPoint createAccessPointWithScanResultCache() { Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(AccessPoint.KEY_SCANRESULTCACHE, SCAN_RESULTS); + return new AccessPoint(mContext, bundle); + } + + private static ArrayList buildScanResultCache() { ArrayList scanResults = new ArrayList<>(); for (int i = 0; i < 5; i++) { - ScanResult scanResult = new ScanResult(); - scanResult.level = i; - scanResult.BSSID = "bssid-" + i; - scanResult.timestamp = SystemClock.elapsedRealtime() * 1000; - scanResult.capabilities = ""; + ScanResult scanResult = createScanResult(TEST_SSID, "bssid-" + i, i); scanResults.add(scanResult); } - - bundle.putParcelableArrayList(AccessPoint.KEY_SCANRESULTCACHE, scanResults); - return new AccessPoint(mContext, bundle); + return scanResults; } private WifiConfiguration createWifiConfiguration() { @@ -482,8 +597,20 @@ public class AccessPointTest { return configuration; } + private AccessPoint createApWithFastTimestampedScoredNetworkCache( + long elapsedTimeMillis) { + TimestampedScoredNetwork recentScore = new TimestampedScoredNetwork( + buildScoredNetworkWithGivenBadgeCurve(FAST_BADGE_CURVE), + elapsedTimeMillis); + return new TestAccessPointBuilder(mContext) + .setSsid(TEST_SSID) + .setScoredNetworkCache( + new ArrayList<>(Arrays.asList(recentScore))) + .build(); + } + /** - * Assert that the first AccessPoint appears after the second AccessPoint + * Assert that the first AccessPoint appears before the second AccessPoint * once sorting has been completed. */ private void assertSortingWorks(AccessPoint first, AccessPoint second) { @@ -731,4 +858,202 @@ public class AccessPointTest { ap.update(null, wifiInfo, networkInfo); } + + @Test + public void testSpeedLabelAveragesAllBssidScores() { + AccessPoint ap = createAccessPointWithScanResultCache(); + + int speed1 = Speed.MODERATE; + RssiCurve badgeCurve1 = mock(RssiCurve.class); + when(badgeCurve1.lookupScore(anyInt())).thenReturn((byte) speed1); + when(mockWifiNetworkScoreCache.getScoredNetwork(SCAN_RESULTS.get(0))) + .thenReturn(buildScoredNetworkWithGivenBadgeCurve(badgeCurve1)); + int speed2 = Speed.VERY_FAST; + RssiCurve badgeCurve2 = mock(RssiCurve.class); + when(badgeCurve2.lookupScore(anyInt())).thenReturn((byte) speed2); + when(mockWifiNetworkScoreCache.getScoredNetwork(SCAN_RESULTS.get(1))) + .thenReturn(buildScoredNetworkWithGivenBadgeCurve(badgeCurve2)); + + int expectedSpeed = (speed1 + speed2) / 2; + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(expectedSpeed); + } + + @Test + public void testSpeedLabelAverageIgnoresNoSpeedScores() { + AccessPoint ap = createAccessPointWithScanResultCache(); + + int speed1 = Speed.VERY_FAST; + RssiCurve badgeCurve1 = mock(RssiCurve.class); + when(badgeCurve1.lookupScore(anyInt())).thenReturn((byte) speed1); + when(mockWifiNetworkScoreCache.getScoredNetwork(SCAN_RESULTS.get(0))) + .thenReturn(buildScoredNetworkWithGivenBadgeCurve(badgeCurve1)); + int speed2 = Speed.NONE; + RssiCurve badgeCurve2 = mock(RssiCurve.class); + when(badgeCurve2.lookupScore(anyInt())).thenReturn((byte) speed2); + when(mockWifiNetworkScoreCache.getScoredNetwork(SCAN_RESULTS.get(1))) + .thenReturn(buildScoredNetworkWithGivenBadgeCurve(badgeCurve2)); + + ap.update( + mockWifiNetworkScoreCache, true /* scoringUiEnabled */, MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(speed1); + } + + @Test + public void testSpeedLabelFallbackScoreIgnoresNullCurves() { + int rssi = -55; + String bssid = "00:00:00:00:00:00"; + int networkId = 123; + + WifiInfo info = new WifiInfo(); + info.setRssi(rssi); + info.setSSID(WifiSsid.createFromAsciiEncoded(TEST_SSID)); + info.setBSSID(bssid); + info.setNetworkId(networkId); + + ArrayList scanResults = new ArrayList<>(); + ScanResult scanResultUnconnected = createScanResult(TEST_SSID, "11:11:11:11:11:11", rssi); + scanResults.add(scanResultUnconnected); + + ScanResult scanResultConnected = createScanResult(TEST_SSID, bssid, rssi); + scanResults.add(scanResultConnected); + + AccessPoint ap = + new TestAccessPointBuilder(mContext) + .setActive(true) + .setNetworkId(networkId) + .setSsid(TEST_SSID) + .setScanResultCache(scanResults) + .setWifiInfo(info) + .build(); + + int fallbackSpeed = Speed.SLOW; + when(mockWifiNetworkScoreCache.getScoredNetwork(scanResultUnconnected)) + .thenReturn(buildScoredNetworkWithMockBadgeCurve()); + when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) fallbackSpeed); + + when(mockWifiNetworkScoreCache.getScoredNetwork(scanResultConnected)) + .thenReturn(null); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(fallbackSpeed); + } + + @Test + public void testScoredNetworkCacheBundling() { + long timeMillis = SystemClock.elapsedRealtime(); + AccessPoint ap = createApWithFastTimestampedScoredNetworkCache(timeMillis); + Bundle bundle = new Bundle(); + ap.saveWifiState(bundle); + + ArrayList list = + bundle.getParcelableArrayList(AccessPoint.KEY_SCOREDNETWORKCACHE); + assertThat(list).hasSize(1); + assertThat(list.get(0).getUpdatedTimestampMillis()).isEqualTo(timeMillis); + + RssiCurve curve = list.get(0).getScore().attributes.getParcelable( + ScoredNetwork.ATTRIBUTES_KEY_BADGING_CURVE); + assertThat(curve).isEqualTo(FAST_BADGE_CURVE); + } + + @Test + public void testRecentNetworkScoresAreUsedForSpeedLabelGeneration() { + AccessPoint ap = + createApWithFastTimestampedScoredNetworkCache(SystemClock.elapsedRealtime()); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(Speed.FAST); + } + + @Test + public void testNetworkScoresAreUsedForSpeedLabelGenerationWhenWithinAgeRange() { + long withinRangeTimeMillis = + SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS - 10000); + AccessPoint ap = + createApWithFastTimestampedScoredNetworkCache(withinRangeTimeMillis); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(Speed.FAST); + } + + @Test + public void testOldNetworkScoresAreNotUsedForSpeedLabelGeneration() { + long tooOldTimeMillis = + SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1); + AccessPoint ap = + createApWithFastTimestampedScoredNetworkCache(tooOldTimeMillis); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + assertThat(ap.getSpeed()).isEqualTo(Speed.NONE); + } + + @Test + public void testUpdateScoresRefreshesScoredNetworkCacheTimestamps () { + long tooOldTimeMillis = + SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1); + + ScoredNetwork scoredNetwork = buildScoredNetworkWithGivenBadgeCurve(FAST_BADGE_CURVE); + TimestampedScoredNetwork recentScore = new TimestampedScoredNetwork( + scoredNetwork, + tooOldTimeMillis); + AccessPoint ap = new TestAccessPointBuilder(mContext) + .setSsid(TEST_SSID) + .setBssid(TEST_BSSID) + .setActive(true) + .setScoredNetworkCache( + new ArrayList(Arrays.asList(recentScore))) + .setScanResultCache(SCAN_RESULTS) + .build(); + + when(mockWifiNetworkScoreCache.getScoredNetwork(any(ScanResult.class))) + .thenReturn(scoredNetwork); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + // Fast should still be returned since cache was updated with recent time + assertThat(ap.getSpeed()).isEqualTo(Speed.FAST); + } + + @Test + public void testUpdateScoresRefreshesScoredNetworkCacheWithNewSpeed () { + long tooOldTimeMillis = + SystemClock.elapsedRealtime() - (MAX_SCORE_CACHE_AGE_MILLIS + 1); + + ScoredNetwork scoredNetwork = buildScoredNetworkWithGivenBadgeCurve(FAST_BADGE_CURVE); + TimestampedScoredNetwork recentScore = new TimestampedScoredNetwork( + scoredNetwork, + tooOldTimeMillis); + AccessPoint ap = new TestAccessPointBuilder(mContext) + .setSsid(TEST_SSID) + .setBssid(TEST_BSSID) + .setActive(true) + .setScoredNetworkCache( + new ArrayList(Arrays.asList(recentScore))) + .setScanResultCache(SCAN_RESULTS) + .build(); + + int newSpeed = Speed.MODERATE; + when(mockWifiNetworkScoreCache.getScoredNetwork(any(ScanResult.class))) + .thenReturn(buildScoredNetworkWithMockBadgeCurve()); + when(mockBadgeCurve.lookupScore(anyInt())).thenReturn((byte) newSpeed); + + ap.update(mockWifiNetworkScoreCache, true /* scoringUiEnabled */, + MAX_SCORE_CACHE_AGE_MILLIS); + + // Fast should still be returned since cache was updated with recent time + assertThat(ap.getSpeed()).isEqualTo(newSpeed); + } } 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 df6587e5042f8c47cfd0bcec0d54a27ec60c902c..7cce648f0dfad6a3f22a37181f89abc146ead0d0 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 @@ -105,15 +105,30 @@ public class WifiTrackerTest { private static final byte SCORE_2 = 15; private static final int BADGE_2 = AccessPoint.Speed.FAST; - private static final int CONNECTED_NETWORK_ID = 123; + // TODO(b/65594609): Convert mutable Data objects to instance variables / builder pattern + private static final int NETWORK_ID_1 = 123; private static final int CONNECTED_RSSI = -50; private static final WifiInfo CONNECTED_AP_1_INFO = new WifiInfo(); static { CONNECTED_AP_1_INFO.setSSID(WifiSsid.createFromAsciiEncoded(SSID_1)); CONNECTED_AP_1_INFO.setBSSID(BSSID_1); - CONNECTED_AP_1_INFO.setNetworkId(CONNECTED_NETWORK_ID); + CONNECTED_AP_1_INFO.setNetworkId(NETWORK_ID_1); CONNECTED_AP_1_INFO.setRssi(CONNECTED_RSSI); } + private static final WifiConfiguration CONFIGURATION_1 = new WifiConfiguration(); + static { + CONFIGURATION_1.SSID = SSID_1; + CONFIGURATION_1.BSSID = BSSID_1; + CONFIGURATION_1.networkId = NETWORK_ID_1; + } + + private static final int NETWORK_ID_2 = 2; + private static final WifiConfiguration CONFIGURATION_2 = new WifiConfiguration(); + static { + CONFIGURATION_2.SSID = SSID_2; + CONFIGURATION_2.BSSID = BSSID_2; + CONFIGURATION_2.networkId = NETWORK_ID_2; + } @Captor ArgumentCaptor mScoreCacheCaptor; @Mock private ConnectivityManager mockConnectivityManager; @@ -159,6 +174,8 @@ public class WifiTrackerTest { when(mockWifiManager.isWifiEnabled()).thenReturn(true); when(mockWifiManager.getScanResults()) .thenReturn(Arrays.asList(buildScanResult1(), buildScanResult2())); + when(mockWifiManager.getConfiguredNetworks()) + .thenReturn(Arrays.asList(CONFIGURATION_1, CONFIGURATION_2)); when(mockCurve1.lookupScore(RSSI_1)).thenReturn(SCORE_1); @@ -333,8 +350,7 @@ public class WifiTrackerTest { WifiConfiguration configuration = new WifiConfiguration(); configuration.SSID = SSID_1; configuration.BSSID = BSSID_1; - configuration.networkId = CONNECTED_NETWORK_ID; - when(mockWifiManager.getConfiguredNetworks()).thenReturn(Arrays.asList(configuration)); + configuration.networkId = NETWORK_ID_1; NetworkInfo networkInfo = new NetworkInfo( ConnectivityManager.TYPE_WIFI, 0, "Type Wifi", "subtype"); @@ -365,6 +381,24 @@ public class WifiTrackerTest { mainLatch.await(LATCH_TIMEOUT, TimeUnit.MILLISECONDS)); } + private void switchToNetwork2(WifiTracker tracker) throws InterruptedException { + NetworkInfo networkInfo = new NetworkInfo( + ConnectivityManager.TYPE_WIFI, 0, "Type Wifi", "subtype"); + networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTING, "connecting", "test"); + + WifiInfo info = new WifiInfo(); + info.setSSID(WifiSsid.createFromAsciiEncoded(SSID_2)); + info.setBSSID(BSSID_2); + info.setRssi(CONNECTED_RSSI); + info.setNetworkId(NETWORK_ID_2); + when(mockWifiManager.getConnectionInfo()).thenReturn(info); + + Intent intent = new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION); + intent.putExtra(WifiManager.EXTRA_NETWORK_INFO, networkInfo); + tracker.mReceiver.onReceive(mContext, intent); + waitForHandlersToProcessCurrentlyEnqueuedMessages(tracker); + } + @Test public void testAccessPointListenerSetWhenLookingUpUsingScanResults() { ScanResult scanResult = new ScanResult(); @@ -722,12 +756,6 @@ public class WifiTrackerTest { when(mockWifiManager.getConnectionInfo()).thenReturn(CONNECTED_AP_1_INFO); - WifiConfiguration configuration = new WifiConfiguration(); - configuration.SSID = SSID_1; - configuration.BSSID = BSSID_1; - configuration.networkId = CONNECTED_NETWORK_ID; - when(mockWifiManager.getConfiguredNetworks()).thenReturn(Arrays.asList(configuration)); - NetworkInfo networkInfo = new NetworkInfo( ConnectivityManager.TYPE_WIFI, 0, "Type Wifi", "subtype"); networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "connected", "test"); @@ -881,4 +909,17 @@ public class WifiTrackerTest { assertThat(tracker.isConnected()).isFalse(); verify(mockWifiListener, times(2)).onConnectedChanged(); } + + @Test + public void updateNetworkInfoWithNewConnectedNetwork_switchesNetworks() throws Exception { + WifiTracker tracker = createTrackerWithScanResultsAndAccessPoint1Connected(); + + switchToNetwork2(tracker); + + List aps = tracker.getAccessPoints(); + assertThat(aps.get(0).getSsidStr()).isEqualTo(SSID_2); + + assertThat(aps.get(0).isReachable()).isTrue(); + assertThat(aps.get(1).isReachable()).isTrue(); + } } diff --git a/packages/SettingsLib/tests/robotests/Android.mk b/packages/SettingsLib/tests/robotests/Android.mk index eca20528b54b9a884d15a28a1df4b71e26b7a2a6..55b635ec9b248d53eb1735bc03bc8399e06e8926 100644 --- a/packages/SettingsLib/tests/robotests/Android.mk +++ b/packages/SettingsLib/tests/robotests/Android.mk @@ -41,7 +41,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) # Include the testing libraries (JUnit4 + Robolectric libs). LOCAL_STATIC_JAVA_LIBRARIES := \ - platform-system-robolectric \ + mockito-robolectric-prebuilt \ truth-prebuilt LOCAL_JAVA_LIBRARIES := \ diff --git a/packages/SettingsLib/tests/robotests/src/android/bluetooth/BluetoothCodecConfig.java b/packages/SettingsLib/tests/robotests/src/android/bluetooth/BluetoothCodecConfig.java index 656ab86e69871dfbf5ff0ba88fe898126d03ba12..14b0d598681789d809d82946a301614bc5d9c8ae 100644 --- a/packages/SettingsLib/tests/robotests/src/android/bluetooth/BluetoothCodecConfig.java +++ b/packages/SettingsLib/tests/robotests/src/android/bluetooth/BluetoothCodecConfig.java @@ -21,5 +21,6 @@ package android.bluetooth; */ public class BluetoothCodecConfig { public boolean isMandatoryCodec() { return true; } - public String getCodecName() { return null;} + public String getCodecName() { return null; } + public int getCodecType() { return -1; } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java index fd3b1dc635dd23c065b155c42ce3e8de32d237f2..482b788113b94ecce921dc050b5172af0b517656 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/SettingLibRobolectricTestRunner.java @@ -20,6 +20,9 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.Fs; +import org.robolectric.res.ResourcePath; + +import java.util.List; public class SettingLibRobolectricTestRunner extends RobolectricTestRunner { @@ -36,10 +39,31 @@ public class SettingLibRobolectricTestRunner extends RobolectricTestRunner { final String assetsDir = appRoot + config.assetDir(); final AndroidManifest manifest = new AndroidManifest(Fs.fileFromPath(manifestPath), - Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)); - + Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)) { + @Override + public List getIncludedResourcePaths() { + List paths = super.getIncludedResourcePaths(); + SettingLibRobolectricTestRunner.getIncludedResourcePaths(getPackageName(), paths); + return paths; + } + }; manifest.setPackageName("com.android.settingslib"); return manifest; } + static void getIncludedResourcePaths(String packageName, List paths) { + paths.add(new ResourcePath( + packageName, + Fs.fileFromPath("./frameworks/base/packages/SettingsLib/res"), + null)); + paths.add(new ResourcePath( + packageName, + Fs.fileFromPath("./frameworks/base/core/res/res"), + null)); + paths.add(new ResourcePath( + packageName, + Fs.fileFromPath("./frameworks/support/v7/appcompat/res"), + null)); + } + } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java index 07a0e11dc0639093dc4ff8d895498708af582620..4a73c1bb61aa2ed32f98e63cdf0385856366713b 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java @@ -21,6 +21,7 @@ import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; +import android.content.res.Resources; import com.android.settingslib.R; import com.android.settingslib.TestConfig; @@ -133,6 +134,8 @@ public class A2dpProfileTest { // Strings to use in fake resource lookups. private static String KNOWN_CODEC_LABEL = "Use high quality audio: %1$s"; private static String UNKNOWN_CODEC_LABEL = "Use high quality audio"; + private static String[] CODEC_NAMES = + new String[] { "Default", "SBC", "AAC", "aptX", "aptX HD", "LDAC" }; /** * Helper for setting up several tests of getHighQualityAudioOptionLabel @@ -147,6 +150,11 @@ public class A2dpProfileTest { when(mContext.getString(eq(R.string.bluetooth_profile_a2dp_high_quality_unknown_codec))) .thenReturn(UNKNOWN_CODEC_LABEL); + final Resources res = mock(Resources.class); + when(mContext.getResources()).thenReturn(res); + when(res.getStringArray(eq(R.array.bluetooth_a2dp_codec_titles))) + .thenReturn(CODEC_NAMES); + // Most tests want to simulate optional codecs being supported by the device, so do that // by default here. when(mBluetoothA2dpWrapper.supportsOptionalCodecs(any())).thenReturn( @@ -196,7 +204,8 @@ public class A2dpProfileTest { when(status.getCodecsSelectableCapabilities()).thenReturn(configs); when(config.isMandatoryCodec()).thenReturn(false); - when(config.getCodecName()).thenReturn("PiedPiper"); + when(config.getCodecType()).thenReturn(4); + when(config.getCodecName()).thenReturn("LDAC"); assertThat(mProfile.getHighQualityAudioOptionLabel(mDevice)).isEqualTo( String.format(KNOWN_CODEC_LABEL, config.getCodecName())); } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java index 9ac08f97c8f00721d40baf5c4f04ce643eb33cf3..4091ce1f173e224c1ae643be3c6ef067f56c540e 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java @@ -17,8 +17,12 @@ package com.android.settingslib.bluetooth; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; @@ -42,6 +46,10 @@ import org.robolectric.annotation.Config; @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, resourceDir = "../../res") public class CachedBluetoothDeviceTest { + private final static String DEVICE_NAME = "TestName"; + private final static String DEVICE_ALIAS = "TestAlias"; + private final static String DEVICE_ADDRESS = "AA:BB:CC:DD:EE:FF"; + private final static String DEVICE_ALIAS_NEW = "TestAliasNew"; @Mock private LocalBluetoothAdapter mAdapter; @Mock @@ -62,6 +70,7 @@ public class CachedBluetoothDeviceTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; + when(mDevice.getAddress()).thenReturn(DEVICE_ADDRESS); when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON); when(mHfpProfile.isProfileReady()).thenReturn(true); when(mA2dpProfile.isProfileReady()).thenReturn(true); @@ -152,4 +161,49 @@ public class CachedBluetoothDeviceTest { mCachedDevice.onProfileStateChanged(mPanProfile, BluetoothProfile.STATE_DISCONNECTED); assertThat(mCachedDevice.getConnectionSummary()).isNull(); } + + @Test + public void testDeviceName_testAliasNameAvailable() { + when(mDevice.getAliasName()).thenReturn(DEVICE_ALIAS); + when(mDevice.getName()).thenReturn(DEVICE_NAME); + CachedBluetoothDevice cachedBluetoothDevice = + new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + // Verify alias is returned on getName + assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS); + // Verify device is visible + assertThat(cachedBluetoothDevice.hasHumanReadableName()).isTrue(); + } + + @Test + public void testDeviceName_testNameNotAvailable() { + CachedBluetoothDevice cachedBluetoothDevice = + new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + // Verify device address is returned on getName + assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ADDRESS); + // Verify device is not visible + assertThat(cachedBluetoothDevice.hasHumanReadableName()).isFalse(); + } + + @Test + public void testDeviceName_testRenameDevice() { + final String[] alias = {DEVICE_ALIAS}; + doAnswer(invocation -> alias[0]).when(mDevice).getAliasName(); + doAnswer(invocation -> { + alias[0] = (String) invocation.getArguments()[0]; + return true; + }).when(mDevice).setAlias(anyString()); + when(mDevice.getName()).thenReturn(DEVICE_NAME); + CachedBluetoothDevice cachedBluetoothDevice = + new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + // Verify alias is returned on getName + assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS); + // Verify null name does not get set + cachedBluetoothDevice.setName(null); + verify(mDevice, never()).setAlias(any()); + // Verify new name is set properly + cachedBluetoothDevice.setName(DEVICE_ALIAS_NEW); + verify(mDevice).setAlias(DEVICE_ALIAS_NEW); + // Verify new alias is returned on getName + assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS_NEW); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..0778b27399102db80c44139372f9ee75cad4e1fa --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java @@ -0,0 +1,158 @@ +/* + * 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.settingslib.development; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.UserManager; +import android.provider.Settings; +import android.support.v14.preference.SwitchPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceScreen; + +import com.android.settingslib.SettingLibRobolectricTestRunner; +import com.android.settingslib.TestConfig; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; + +@RunWith(SettingLibRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class EnableAdbPreferenceControllerTest { + @Mock(answer = RETURNS_DEEP_STUBS) + private PreferenceScreen mScreen; + @Mock + private UserManager mUserManager; + @Mock + private PackageManager mPackageManager; + + private Context mContext; + private SwitchPreference mPreference; + private ConcreteEnableAdbPreferenceController mController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + ShadowApplication shadowContext = ShadowApplication.getInstance(); + shadowContext.setSystemService(Context.USER_SERVICE, mUserManager); + mContext = spy(shadowContext.getApplicationContext()); + when(mContext.getPackageManager()).thenReturn(mPackageManager); + mPreference = new SwitchPreference(mContext); + when(mScreen.findPreference(anyString())).thenReturn(mPreference); + mController = new ConcreteEnableAdbPreferenceController(mContext); + mPreference.setKey(mController.getPreferenceKey()); + } + + @Test + public void displayPreference_isNotAdmin_shouldRemovePreference() { + when(mUserManager.isAdminUser()).thenReturn(false); + when(mScreen.getPreferenceCount()).thenReturn(1); + when(mScreen.getPreference(0)).thenReturn(mPreference); + + mController.displayPreference(mScreen); + + verify(mScreen).removePreference(any(Preference.class)); + } + + @Test + public void displayPreference_isAdmin_shouldNotRemovePreference() { + when(mUserManager.isAdminUser()).thenReturn(true); + + mController.displayPreference(mScreen); + + verify(mScreen, never()).removePreference(any(Preference.class)); + } + + + @Test + public void resetPreference_shouldUncheck() { + when(mUserManager.isAdminUser()).thenReturn(true); + mController.displayPreference(mScreen); + mPreference.setChecked(true); + + mController.resetPreference(); + + assertThat(mPreference.isChecked()).isFalse(); + } + + @Test + public void handlePreferenceTreeClick_shouldUpdateSettings() { + when(mUserManager.isAdminUser()).thenReturn(true); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Global.ADB_ENABLED, 1); + mPreference.setChecked(true); + mController.displayPreference(mScreen); + + mController.handlePreferenceTreeClick(mPreference); + + assertThat(Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Global.ADB_ENABLED, 0)).isEqualTo(0); + } + + @Test + public void updateState_settingsOn_shouldCheck() { + when(mUserManager.isAdminUser()).thenReturn(true); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Global.ADB_ENABLED, 1); + mPreference.setChecked(false); + mController.displayPreference(mScreen); + + mController.updateState(mPreference); + + assertThat(mPreference.isChecked()).isTrue(); + } + + @Test + public void updateState_settingsOff_shouldUncheck() { + when(mUserManager.isAdminUser()).thenReturn(true); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Global.ADB_ENABLED, 0); + mPreference.setChecked(true); + mController.displayPreference(mScreen); + + mController.updateState(mPreference); + + assertThat(mPreference.isChecked()).isFalse(); + } + + class ConcreteEnableAdbPreferenceController extends AbstractEnableAdbPreferenceController { + public ConcreteEnableAdbPreferenceController(Context context) { + super(context); + } + + @Override + public void showConfirmationDialog(SwitchPreference preference) { + // Don't show a dialog, just set setting. + writeAdbSetting(true); + } + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java index 9fc8a9607cbad63b3b75f84816b6a1db971ae728..6be44cc07194aa1565a0749160080603cb5023c9 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java @@ -56,12 +56,13 @@ public class CategoryKeyTest { allKeys.add(CategoryKey.CATEGORY_SECURITY); allKeys.add(CategoryKey.CATEGORY_SECURITY_LOCKSCREEN); allKeys.add(CategoryKey.CATEGORY_ACCOUNT); + allKeys.add(CategoryKey.CATEGORY_ACCOUNT_DETAIL); allKeys.add(CategoryKey.CATEGORY_SYSTEM); allKeys.add(CategoryKey.CATEGORY_SYSTEM_LANGUAGE); allKeys.add(CategoryKey.CATEGORY_SYSTEM_DEVELOPMENT); // DO NOT REMOVE ANYTHING ABOVE - assertThat(allKeys.size()).isEqualTo(14); + assertThat(allKeys.size()).isEqualTo(15); } } 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 036441839b5bd5c02f02bc6a30752ee7fcd25437..e9ca753fa62213828b712d595f4682df4519e3fd 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 @@ -18,11 +18,12 @@ package com.android.settingslib.drawer; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.argThat; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; @@ -59,7 +60,6 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; -import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; @@ -100,6 +100,7 @@ public class TileUtilsTest { MockitoAnnotations.initMocks(this); when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mPackageManager.getResourcesForApplication(anyString())).thenReturn(mResources); + when(mPackageManager.getResourcesForApplication((String) isNull())).thenReturn(mResources); when(mPackageManager.getApplicationInfo(eq("abc"), anyInt())) .thenReturn(application.getApplicationInfo()); mContentResolver = spy(application.getContentResolver()); @@ -115,7 +116,6 @@ public class TileUtilsTest { List outTiles = new ArrayList<>(); List info = new ArrayList<>(); info.add(newInfo(true, testCategory)); - Map, Tile> cache = new ArrayMap<>(); when(mPackageManager.queryIntentActivitiesAsUser(eq(intent), anyInt(), anyInt())) .thenReturn(info); @@ -169,7 +169,6 @@ public class TileUtilsTest { @Test public void getTilesForIntent_shouldSkipFilteredApps() { - final String testCategory = "category1"; Intent intent = new Intent(); Map, Tile> addedCache = new ArrayMap<>(); List outTiles = new ArrayList<>(); @@ -210,11 +209,9 @@ public class TileUtilsTest { userHandleList.add(UserHandle.CURRENT); when(mUserManager.getUserProfiles()).thenReturn(userHandleList); - when(mPackageManager.queryIntentActivitiesAsUser(argThat(new ArgumentMatcher() { - public boolean matches(Object event) { - return testAction.equals(((Intent) event).getAction()); - } - }), anyInt(), anyInt())).thenReturn(info); + when(mPackageManager.queryIntentActivitiesAsUser(argThat( + event -> testAction.equals(event.getAction())), anyInt(), anyInt())) + .thenReturn(info); List categoryList = TileUtils.getCategories( mContext, cache, false /* categoryDefinedInManifest */, testAction, diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawableTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawableTest.java new file mode 100644 index 0000000000000000000000000000000000000000..adec40267b970eb8625065aa692a53c8fc20e28e --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawableTest.java @@ -0,0 +1,114 @@ +/* + * 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.settingslib.graph; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.VectorDrawable; + +import com.android.settingslib.R; +import com.android.settingslib.SettingLibRobolectricTestRunner; +import com.android.settingslib.TestConfig; +import com.android.settingslib.testutils.shadow.SettingsLibShadowResources; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +@RunWith(SettingLibRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION, + shadows = SettingsLibShadowResources.class) +public class BluetoothDeviceLayerDrawableTest { + private static final int RES_ID = R.drawable.ic_bt_cellphone; + private static final int BATTERY_LEVEL = 15; + private static final float BATTERY_ICON_SCALE = 0.75f; + private static final int BATTERY_ICON_PADDING_TOP = 6; + private static final float TOLERANCE = 0.001f; + + private Context mContext; + + @Before + public void setUp() { + mContext = RuntimeEnvironment.application; + } + + @Test + public void testCreateLayerDrawable_configCorrect() { + BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable( + mContext, RES_ID, BATTERY_LEVEL); + + assertThat(drawable.getDrawable(0)).isInstanceOf(VectorDrawable.class); + assertThat(drawable.getDrawable(1)).isInstanceOf( + BluetoothDeviceLayerDrawable.BatteryMeterDrawable.class); + assertThat(drawable.getLayerInsetStart(1)).isEqualTo( + drawable.getDrawable(0).getIntrinsicWidth()); + assertThat(drawable.getLayerInsetTop(1)).isEqualTo(0); + } + + @Test + public void testCreateLayerDrawable_withIconScale_configCorrect() { + BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable( + mContext, RES_ID, BATTERY_LEVEL, BATTERY_ICON_SCALE); + + assertThat(drawable.getDrawable(0)).isInstanceOf(VectorDrawable.class); + assertThat(drawable.getDrawable(1)).isInstanceOf( + BluetoothDeviceLayerDrawable.BatteryMeterDrawable.class); + assertThat(drawable.getLayerInsetStart(1)).isEqualTo( + drawable.getDrawable(0).getIntrinsicWidth()); + assertThat(drawable.getLayerInsetTop(1)).isEqualTo(BATTERY_ICON_PADDING_TOP); + } + + @Test + public void testBatteryMeterDrawable_configCorrect() { + BluetoothDeviceLayerDrawable.BatteryMeterDrawable batteryDrawable = + new BluetoothDeviceLayerDrawable.BatteryMeterDrawable(mContext, + R.color.meter_background_color, BATTERY_LEVEL); + + assertThat(batteryDrawable.getAspectRatio()).isWithin(TOLERANCE).of(0.35f); + assertThat(batteryDrawable.getRadiusRatio()).isWithin(TOLERANCE).of(0f); + assertThat(batteryDrawable.getBatteryLevel()).isEqualTo(BATTERY_LEVEL); + } + + @Test + public void testConstantState_returnTwinBluetoothLayerDrawable() { + BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable( + mContext, RES_ID, BATTERY_LEVEL); + + BluetoothDeviceLayerDrawable twinDrawable = + (BluetoothDeviceLayerDrawable) drawable.getConstantState().newDrawable(); + + assertThat(twinDrawable.getDrawable(0)).isEqualTo(drawable.getDrawable(0)); + assertThat(twinDrawable.getDrawable(1)).isEqualTo(drawable.getDrawable(1)); + assertThat(twinDrawable.getLayerInsetTop(1)).isEqualTo( + drawable.getLayerInsetTop(1)); + } + + @Test + public void testCreateLayerDrawable_bluetoothDrawable_hasCorrectFrameColor() { + BluetoothDeviceLayerDrawable drawable = BluetoothDeviceLayerDrawable.createLayerDrawable( + mContext, RES_ID, BATTERY_LEVEL); + BluetoothDeviceLayerDrawable.BatteryMeterDrawable batteryMeterDrawable = + (BluetoothDeviceLayerDrawable.BatteryMeterDrawable) drawable.getDrawable(1); + + assertThat(batteryMeterDrawable.mFrameColor).isEqualTo( + mContext.getColor(R.color.meter_background_color)); + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionParserTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionParserTest.java index 83911360bdfeec82f9c29f4283cabf188b5702aa..f6404a2215fb9fe919ae69fc3374acf07f32288f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionParserTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionParserTest.java @@ -83,7 +83,7 @@ public class SuggestionParserTest { mSuggestionParser = new SuggestionParser(mContext, mPrefs, Arrays.asList(mMultipleCategory, mExclusiveCategory, mExpiredExclusiveCategory), - "0,0"); + "0"); ResolveInfo info1 = TileUtilsTest.newInfo(true, null); info1.activityInfo.packageName = "pkg"; @@ -109,17 +109,12 @@ public class SuggestionParserTest { } @Test - public void testDismissSuggestion_withoutSmartSuggestion() { - assertThat(mSuggestionParser.dismissSuggestion(mSuggestion, false)).isTrue(); + public void dismissSuggestion_shouldDismiss() { + assertThat(mSuggestionParser.dismissSuggestion(mSuggestion)).isTrue(); } @Test - public void testDismissSuggestion_withSmartSuggestion() { - assertThat(mSuggestionParser.dismissSuggestion(mSuggestion, true)).isFalse(); - } - - @Test - public void testGetSuggestions_withoutSmartSuggestions() { + public void testGetSuggestions_withoutSmartSuggestions_shouldDismiss() { readAndDismissSuggestion(false); mSuggestionParser.readSuggestions(mMultipleCategory, mSuggestionsAfterDismiss, false); assertThat(mSuggestionsBeforeDismiss).hasSize(2); @@ -128,11 +123,10 @@ public class SuggestionParserTest { } @Test - public void testGetSuggestions_withSmartSuggestions() { + public void testGetSuggestions_withSmartSuggestions_shouldDismiss() { readAndDismissSuggestion(true); assertThat(mSuggestionsBeforeDismiss).hasSize(2); - assertThat(mSuggestionsAfterDismiss).hasSize(2); - assertThat(mSuggestionsBeforeDismiss).isEqualTo(mSuggestionsAfterDismiss); + assertThat(mSuggestionsAfterDismiss).hasSize(1); } @Test @@ -191,19 +185,15 @@ public class SuggestionParserTest { } @Test - public void isSuggestionDismissed_mismatchRule_shouldDismiss() { + public void isSuggestionDismissed_dismissedSuggestion_shouldReturnTrue() { final Tile suggestion = new Tile(); suggestion.metaData = new Bundle(); suggestion.metaData.putString(SuggestionParser.META_DATA_DISMISS_CONTROL, "1,2,3"); suggestion.intent = new Intent().setComponent(new ComponentName("pkg", "cls")); // Dismiss suggestion when smart suggestion is not enabled. - mSuggestionParser.dismissSuggestion(suggestion, false /* isSmartSuggestionEnabled */); - final String suggestionKey = suggestion.intent.getComponent().flattenToShortString(); - // And point to last rule in dismiss control - mPrefs.edit().putInt(suggestionKey + SuggestionParser.DISMISS_INDEX, 2).apply(); + mSuggestionParser.dismissSuggestion(suggestion); - // Turn on smart suggestion, and check if suggestion is enabled. assertThat(mSuggestionParser.isDismissed(suggestion, true /* isSmartSuggestionEnabled */)) .isTrue(); } @@ -215,7 +205,7 @@ public class SuggestionParserTest { mMultipleCategory, mSuggestionsBeforeDismiss, isSmartSuggestionEnabled); final Tile suggestion = mSuggestionsBeforeDismiss.get(0); - if (mSuggestionParser.dismissSuggestion(suggestion, isSmartSuggestionEnabled)) { + if (mSuggestionParser.dismissSuggestion(suggestion)) { RuntimeEnvironment.getRobolectricPackageManager().removeResolveInfosForIntent( new Intent(Intent.ACTION_MAIN).addCategory(mMultipleCategory.category), suggestion.intent.getComponent().getPackageName()); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/SettingsLibShadowResources.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/SettingsLibShadowResources.java new file mode 100644 index 0000000000000000000000000000000000000000..a376dcdbbbd34b05eb4cfca2944266325499cd3a --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/SettingsLibShadowResources.java @@ -0,0 +1,49 @@ +/* + * 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.settingslib.testutils.shadow; + +import static org.robolectric.internal.Shadow.directlyOn; + +import android.content.res.Resources; +import android.content.res.Resources.NotFoundException; +import android.support.annotation.ArrayRes; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; +import org.robolectric.annotation.RealObject; +import org.robolectric.shadows.ShadowResources; + +/** + * Shadow Resources to handle resource references that Robolectric shadows cannot + * handle because they are too new or private. + */ +@Implements(Resources.class) +public class SettingsLibShadowResources extends ShadowResources { + + @RealObject + public Resources realResources; + + @Implementation + public int[] getIntArray(@ArrayRes int id) throws NotFoundException { + // The Robolectric has resource mismatch for these values, so we need to stub it here + if (id == com.android.settingslib.R.array.batterymeter_bolt_points + || id == com.android.settingslib.R.array.batterymeter_plus_points) { + return new int[2]; + } + return directlyOn(realResources, Resources.class).getIntArray(id); + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java index 335653bc2f18673531bc1aca28dfb92cae32711e..af0b69c0a7cbd090a55e4266b86da189fc51eb17 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java @@ -16,6 +16,9 @@ package com.android.settingslib.wifi; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.Context; @@ -34,28 +37,63 @@ public class AccessPointPreferenceTest { private Context mContext = RuntimeEnvironment.application; @Test - public void generatePreferenceKey_shouldReturnSsidPlusSecurity() { + public void generatePreferenceKey_returnsSsidPlusSecurity() { String ssid = "ssid"; + String bssid = "00:00:00:00:00:00"; int security = AccessPoint.SECURITY_WEP; String expectedKey = ssid + ',' + security; TestAccessPointBuilder builder = new TestAccessPointBuilder(mContext); - builder.setSsid(ssid).setSecurity(security); + builder.setBssid(bssid).setSsid(ssid).setSecurity(security); assertThat(AccessPointPreference.generatePreferenceKey(builder.build())) .isEqualTo(expectedKey); } @Test - public void generatePreferenceKey_shouldReturnBssidPlusSecurity() { - String bssid = "bssid"; + public void generatePreferenceKey_emptySsidReturnsBssidPlusSecurity() { + String ssid = ""; + String bssid = "00:00:00:00:00:00"; int security = AccessPoint.SECURITY_WEP; String expectedKey = bssid + ',' + security; TestAccessPointBuilder builder = new TestAccessPointBuilder(mContext); - builder.setBssid(bssid).setSecurity(security); + builder.setBssid(bssid).setSsid(ssid).setSecurity(security); assertThat(AccessPointPreference.generatePreferenceKey(builder.build())) .isEqualTo(expectedKey); } + + @Test + public void refresh_openNetwork_updateContentDescription() { + final String ssid = "ssid"; + final String summary = "connected"; + final int security = AccessPoint.SECURITY_WEP; + final AccessPoint ap = new TestAccessPointBuilder(mContext) + .setSsid(ssid) + .setSecurity(security) + .build(); + final AccessPointPreference pref = mock(AccessPointPreference.class); + when(pref.getTitle()).thenReturn(ssid); + when(pref.getSummary()).thenReturn(summary); + + assertThat(AccessPointPreference.buildContentDescription( + RuntimeEnvironment.application, pref, ap)) + .isEqualTo("ssid,connected,Wifi signal full.,Secure network"); + } + + @Test + public void refresh_setTitle_shouldUseSsidString() { + final String ssid = "ssid"; + final String summary = "connected"; + final int security = AccessPoint.SECURITY_WEP; + final AccessPoint ap = new TestAccessPointBuilder(mContext) + .setSsid(ssid) + .setSecurity(security) + .build(); + final AccessPointPreference preference = mock(AccessPointPreference.class); + + AccessPointPreference.setTitle(preference, ap, false /* savedNetwork */); + verify(preference).setTitle(ssid); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/TimestampedScoredNetworkTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/TimestampedScoredNetworkTest.java new file mode 100644 index 0000000000000000000000000000000000000000..639d51c61f2c10b3054f37e3b0265b7fd822f410 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/TimestampedScoredNetworkTest.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.settingslib.wifi; + +import static com.google.common.truth.Truth.assertThat; + +import android.net.NetworkKey; +import android.net.ScoredNetwork; +import android.net.WifiKey; +import android.os.Parcel; + +import com.android.settingslib.SettingLibRobolectricTestRunner; +import com.android.settingslib.TestConfig; +import java.util.Date; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +@RunWith(SettingLibRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class TimestampedScoredNetworkTest { + private TimestampedScoredNetwork impl; + + private ScoredNetwork createTestScoredNetwork(String ssid) { + return new ScoredNetwork( + new NetworkKey(new WifiKey("\"" + ssid + "\"", "00:00:00:00:00:00")), null); + } + + @Before + public void setUp() { + impl = new TimestampedScoredNetwork(createTestScoredNetwork("test"), + 0 /* updatedTimestampMillis */); + } + + @Test + public void testUpdate() { + long time = new Date().getTime(); + ScoredNetwork updated = createTestScoredNetwork("updated"); + impl.update(updated, time); + + assertThat(impl.getScore()).isEqualTo(updated); + assertThat(impl.getUpdatedTimestampMillis()).isEqualTo(time); + } + + @Test + public void testParcel() { + Parcel parcel = Parcel.obtain(); + impl.writeToParcel(parcel, 0); + parcel.setDataPosition(0); + + TimestampedScoredNetwork fromParcel = TimestampedScoredNetwork.CREATOR.createFromParcel(parcel); + + assertThat(fromParcel.getScore()).isEqualTo(impl.getScore()); + assertThat(fromParcel.getUpdatedTimestampMillis()).isEqualTo(impl.getUpdatedTimestampMillis()); + } +} diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml index e9dadc5fbf102bc689c8edcc3c86b280d88e62d9..4007cc909e266fcbc31eb35205ff663a8d72952e 100644 --- a/packages/SettingsProvider/res/values/defaults.xml +++ b/packages/SettingsProvider/res/values/defaults.xml @@ -187,4 +187,7 @@ 0x2 + + + false diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java index f8701c40427a8b04b3bc7cf20754b51ff77a3900..f1fb208b1e10d2a2649e6218586d4b6d7d595d87 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java @@ -16,6 +16,7 @@ package com.android.providers.settings; +import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.backup.BackupAgentHelper; import android.app.backup.BackupDataInput; @@ -30,10 +31,10 @@ import android.net.NetworkPolicyManager; import android.net.Uri; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; -import android.os.Handler; import android.os.ParcelFileDescriptor; import android.os.UserHandle; import android.provider.Settings; +import android.util.ArrayMap; import android.util.BackupUtils; import android.util.Log; @@ -62,6 +63,9 @@ public class SettingsBackupAgent extends BackupAgentHelper { private static final boolean DEBUG = false; private static final boolean DEBUG_BACKUP = DEBUG || false; + private static final byte[] NULL_VALUE = new byte[0]; + private static final int NULL_SIZE = -1; + private static final String KEY_SYSTEM = "system"; private static final String KEY_SECURE = "secure"; private static final String KEY_GLOBAL = "global"; @@ -597,21 +601,25 @@ public class SettingsBackupAgent extends BackupAgentHelper { Log.i(TAG, "restoreSettings: " + contentUri); } - // Figure out the white list and redirects to the global table. + // Figure out the white list and redirects to the global table. We restore anything + // in either the backup whitelist or the legacy-restore whitelist for this table. final String[] whitelist; if (contentUri.equals(Settings.Secure.CONTENT_URI)) { - whitelist = Settings.Secure.SETTINGS_TO_BACKUP; + whitelist = concat(Settings.Secure.SETTINGS_TO_BACKUP, + Settings.Secure.LEGACY_RESTORE_SETTINGS); } else if (contentUri.equals(Settings.System.CONTENT_URI)) { - whitelist = Settings.System.SETTINGS_TO_BACKUP; + whitelist = concat(Settings.System.SETTINGS_TO_BACKUP, + Settings.System.LEGACY_RESTORE_SETTINGS); } else if (contentUri.equals(Settings.Global.CONTENT_URI)) { - whitelist = Settings.Global.SETTINGS_TO_BACKUP; + whitelist = concat(Settings.Global.SETTINGS_TO_BACKUP, + Settings.Global.LEGACY_RESTORE_SETTINGS); } else { throw new IllegalArgumentException("Unknown URI: " + contentUri); } // Restore only the white list data. int pos = 0; - Map cachedEntries = new HashMap(); + final ArrayMap cachedEntries = new ArrayMap<>(); ContentValues contentValues = new ContentValues(2); SettingsHelper settingsHelper = mSettingsHelper; ContentResolver cr = getContentResolver(); @@ -619,28 +627,36 @@ public class SettingsBackupAgent extends BackupAgentHelper { final int whiteListSize = whitelist.length; for (int i = 0; i < whiteListSize; i++) { String key = whitelist[i]; - String value = cachedEntries.remove(key); - // If the value not cached, let us look it up. - if (value == null) { + String value = null; + boolean hasValueToRestore = false; + if (cachedEntries.indexOfKey(key) >= 0) { + value = cachedEntries.remove(key); + hasValueToRestore = true; + } else { + // If the value not cached, let us look it up. while (pos < bytes) { int length = readInt(settings, pos); pos += INTEGER_BYTE_COUNT; - String dataKey = length > 0 ? new String(settings, pos, length) : null; + String dataKey = length >= 0 ? new String(settings, pos, length) : null; pos += length; length = readInt(settings, pos); pos += INTEGER_BYTE_COUNT; - String dataValue = length > 0 ? new String(settings, pos, length) : null; - pos += length; + String dataValue = null; + if (length >= 0) { + dataValue = new String(settings, pos, length); + pos += length; + } if (key.equals(dataKey)) { value = dataValue; + hasValueToRestore = true; break; } cachedEntries.put(dataKey, dataValue); } } - if (value == null) { + if (!hasValueToRestore) { continue; } @@ -656,6 +672,18 @@ public class SettingsBackupAgent extends BackupAgentHelper { } } + private final String[] concat(String[] first, @Nullable String[] second) { + if (second == null || second.length == 0) { + return first; + } + final int firstLen = first.length; + final int secondLen = second.length; + String[] both = new String[firstLen + secondLen]; + System.arraycopy(first, 0, both, 0, firstLen); + System.arraycopy(second, 0, both, firstLen, secondLen); + return both; + } + /** * Restores the owner info enabled and other settings in LockSettings. * @@ -716,50 +744,56 @@ public class SettingsBackupAgent extends BackupAgentHelper { * @return The byte array of extracted values. */ private byte[] extractRelevantValues(Cursor cursor, String[] settings) { - final int settingsCount = settings.length; - byte[][] values = new byte[settingsCount * 2][]; // keys and values if (!cursor.moveToFirst()) { Log.e(TAG, "Couldn't read from the cursor"); return new byte[0]; } + final int nameColumnIndex = cursor.getColumnIndex(Settings.NameValueTable.NAME); + final int valueColumnIndex = cursor.getColumnIndex(Settings.NameValueTable.VALUE); + // Obtain the relevant data in a temporary array. int totalSize = 0; int backedUpSettingIndex = 0; - Map cachedEntries = new HashMap(); + final int settingsCount = settings.length; + final byte[][] values = new byte[settingsCount * 2][]; // keys and values + final ArrayMap cachedEntries = new ArrayMap<>(); for (int i = 0; i < settingsCount; i++) { - String key = settings[i]; - String value = cachedEntries.remove(key); - - final int nameColumnIndex = cursor.getColumnIndex(Settings.NameValueTable.NAME); - final int valueColumnIndex = cursor.getColumnIndex(Settings.NameValueTable.VALUE); + final String key = settings[i]; // If the value not cached, let us look it up. - if (value == null) { + String value = null; + boolean hasValueToBackup = false; + if (cachedEntries.indexOfKey(key) >= 0) { + value = cachedEntries.remove(key); + hasValueToBackup = true; + } else { while (!cursor.isAfterLast()) { - String cursorKey = cursor.getString(nameColumnIndex); - String cursorValue = cursor.getString(valueColumnIndex); + final String cursorKey = cursor.getString(nameColumnIndex); + final String cursorValue = cursor.getString(valueColumnIndex); cursor.moveToNext(); if (key.equals(cursorKey)) { value = cursorValue; + hasValueToBackup = true; break; } cachedEntries.put(cursorKey, cursorValue); } } + if (!hasValueToBackup) { + continue; + } + // Intercept the keys and see if they need special handling value = mSettingsHelper.onBackupValue(key, value); - if (value == null) { - continue; - } // Write the key and value in the intermediary array. - byte[] keyBytes = key.getBytes(); + final byte[] keyBytes = key.getBytes(); totalSize += INTEGER_BYTE_COUNT + keyBytes.length; values[backedUpSettingIndex * 2] = keyBytes; - byte[] valueBytes = value.getBytes(); + final byte[] valueBytes = (value != null) ? value.getBytes() : NULL_VALUE; totalSize += INTEGER_BYTE_COUNT + valueBytes.length; values[backedUpSettingIndex * 2 + 1] = valueBytes; @@ -775,8 +809,13 @@ public class SettingsBackupAgent extends BackupAgentHelper { int pos = 0; final int keyValuePairCount = backedUpSettingIndex * 2; for (int i = 0; i < keyValuePairCount; i++) { - pos = writeInt(result, pos, values[i].length); - pos = writeBytes(result, pos, values[i]); + final byte[] value = values[i]; + if (value != NULL_VALUE) { + pos = writeInt(result, pos, value.length); + pos = writeBytes(result, pos, value); + } else { + pos = writeInt(result, pos, NULL_SIZE); + } } return result; } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java index 344cd8fcc36da6457f40191cd478523396bb7fe5..fc765f4d3335a51dfb902077d2f9f569036c0cbe 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java @@ -16,6 +16,11 @@ package com.android.providers.settings; +import com.android.internal.R; +import com.android.internal.app.LocalePicker; +import com.android.internal.annotations.VisibleForTesting; + +import android.annotation.NonNull; import android.app.ActivityManager; import android.app.IActivityManager; import android.app.backup.IBackupManager; @@ -24,11 +29,13 @@ import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.icu.util.ULocale; import android.location.LocationManager; import android.media.AudioManager; import android.media.RingtoneManager; import android.net.Uri; import android.os.IPowerManager; +import android.os.LocaleList; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; @@ -39,6 +46,9 @@ import android.text.TextUtils; import android.util.ArraySet; import android.util.Slog; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Locale; public class SettingsHelper { @@ -306,59 +316,106 @@ public class SettingsHelper { } } - byte[] getLocaleData() { + /* package */ byte[] getLocaleData() { Configuration conf = mContext.getResources().getConfiguration(); - final Locale loc = conf.locale; - String localeString = loc.getLanguage(); - String country = loc.getCountry(); - if (!TextUtils.isEmpty(country)) { - localeString += "-" + country; + return conf.getLocales().toLanguageTags().getBytes(); + } + + private static Locale toFullLocale(@NonNull Locale locale) { + if (locale.getScript().isEmpty() || locale.getCountry().isEmpty()) { + return ULocale.addLikelySubtags(ULocale.forLocale(locale)).toLocale(); } - return localeString.getBytes(); + return locale; } /** - * Sets the locale specified. Input data is the byte representation of a - * BCP-47 language tag. For backwards compatibility, strings of the form + * Merging the locale came from backup server and current device locale. + * + * Merge works with following rules. + * - The backup locales are appended to the current locale with keeping order. + * e.g. current locale "en-US,zh-CN" and backup locale "ja-JP,ko-KR" are merged to + * "en-US,zh-CH,ja-JP,ko-KR". + * + * - Duplicated locales are dropped. + * e.g. current locale "en-US,zh-CN" and backup locale "ja-JP,zh-Hans-CN,en-US" are merged to + * "en-US,zh-CN,ja-JP". + * + * - Unsupported locales are dropped. + * e.g. current locale "en-US" and backup locale "ja-JP,zh-CN" but the supported locales + * are "en-US,zh-CN", the merged locale list is "en-US,zh-CN". + * + * - The final result locale list only contains the supported locales. + * e.g. current locale "en-US" and backup locale "zh-Hans-CN" and supported locales are + * "en-US,zh-CN", the merged locale list is "en-US,zh-CN". + * + * @param restore The locale list that came from backup server. + * @param current The device's locale setting. + * @param supportedLocales The list of language tags supported by this device. + */ + @VisibleForTesting + public static LocaleList resolveLocales(LocaleList restore, LocaleList current, + String[] supportedLocales) { + final HashMap allLocales = new HashMap<>(supportedLocales.length); + for (String supportedLocaleStr : supportedLocales) { + final Locale locale = Locale.forLanguageTag(supportedLocaleStr); + allLocales.put(toFullLocale(locale), locale); + } + + final ArrayList filtered = new ArrayList<>(current.size()); + for (int i = 0; i < current.size(); i++) { + final Locale locale = current.get(i); + allLocales.remove(toFullLocale(locale)); + filtered.add(locale); + } + + for (int i = 0; i < restore.size(); i++) { + final Locale locale = allLocales.remove(toFullLocale(restore.get(i))); + if (locale != null) { + filtered.add(locale); + } + } + + if (filtered.size() == current.size()) { + return current; // Nothing added to current locale list. + } + + return new LocaleList(filtered.toArray(new Locale[filtered.size()])); + } + + /** + * Sets the locale specified. Input data is the byte representation of comma separated + * multiple BCP-47 language tags. For backwards compatibility, strings of the form * {@code ll_CC} are also accepted, where {@code ll} is a two letter language * code and {@code CC} is a two letter country code. * - * @param data the locale string in bytes. + * @param data the comma separated BCP-47 language tags in bytes. */ - void setLocaleData(byte[] data, int size) { - // Check if locale was set by the user: - final ContentResolver cr = mContext.getContentResolver(); - final boolean userSetLocale = mContext.getResources().getConfiguration().userSetLocale; - final boolean provisioned = Settings.Global.getInt(cr, - Settings.Global.DEVICE_PROVISIONED, 0) != 0; - if (userSetLocale || provisioned) { - // Don't change if user set it in the SetupWizard, or if this is a post-setup - // deferred restore operation - Slog.i(TAG, "Not applying restored locale; " - + (userSetLocale ? "user already specified" : "device already provisioned")); + /* package */ void setLocaleData(byte[] data, int size) { + final Configuration conf = mContext.getResources().getConfiguration(); + + // Replace "_" with "-" to deal with older backups. + final String localeCodes = new String(data, 0, size).replace('_', '-'); + final LocaleList localeList = LocaleList.forLanguageTags(localeCodes); + if (localeList.isEmpty()) { return; } - final String[] availableLocales = mContext.getAssets().getLocales(); - // Replace "_" with "-" to deal with older backups. - String localeCode = new String(data, 0, size).replace('_', '-'); - Locale loc = null; - for (int i = 0; i < availableLocales.length; i++) { - if (availableLocales[i].equals(localeCode)) { - loc = Locale.forLanguageTag(localeCode); - break; - } + final String[] supportedLocales = LocalePicker.getSupportedLocales(mContext); + final LocaleList currentLocales = conf.getLocales(); + + final LocaleList merged = resolveLocales(localeList, currentLocales, supportedLocales); + if (merged.equals(currentLocales)) { + return; } - if (loc == null) return; // Couldn't find the saved locale in this version of the software try { IActivityManager am = ActivityManager.getService(); Configuration config = am.getConfiguration(); - config.locale = loc; + config.setLocales(merged); // indicate this isn't some passing default - the user wants this remembered config.userSetLocale = true; - am.updateConfiguration(config); + am.updatePersistentConfiguration(config); } catch (RemoteException e) { // Intentionally left blank } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index d22d0b365a7b9b1a77f67f0ac5ae73335a39bd8c..7d7f9ae7f19e78384e732f31a6dc8437a87b24b2 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -32,8 +32,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; import android.content.res.Resources; import android.database.Cursor; @@ -61,7 +59,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.UserManagerInternal; import android.provider.Settings; -import android.service.notification.NotificationListenerService; +import android.provider.Settings.Global; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; @@ -82,7 +80,6 @@ import java.io.File; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.PrintWriter; -import java.nio.charset.StandardCharsets; import java.nio.ByteBuffer; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -2881,7 +2878,11 @@ public class SettingsProvider extends ContentProvider { case MSG_NOTIFY_URI_CHANGED: { final int userId = msg.arg1; Uri uri = (Uri) msg.obj; - getContext().getContentResolver().notifyChange(uri, null, true, userId); + try { + getContext().getContentResolver().notifyChange(uri, null, true, userId); + } catch (SecurityException e) { + Slog.w(LOG_TAG, "Failed to notify for " + userId + ": " + uri, e); + } if (DEBUG) { Slog.v(LOG_TAG, "Notifying for " + userId + ": " + uri); } @@ -2895,7 +2896,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 146; + private static final int SETTINGS_VERSION = 148; private final int mUserId; @@ -3166,33 +3167,7 @@ public class SettingsProvider extends ContentProvider { } if (currentVersion == 128) { - // Version 128: Allow OEMs to grant DND access to default apps. Note that - // the new apps are appended to the list of already approved apps. - final SettingsState systemSecureSettings = - getSecureSettingsLocked(userId); - - final Setting policyAccess = systemSecureSettings.getSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES); - String defaultPolicyAccess = getContext().getResources().getString( - com.android.internal.R.string.config_defaultDndAccessPackages); - if (!TextUtils.isEmpty(defaultPolicyAccess)) { - if (policyAccess.isNull()) { - systemSecureSettings.insertSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES, - defaultPolicyAccess, null, true, - SettingsState.SYSTEM_PACKAGE_NAME); - } else { - StringBuilder currentSetting = - new StringBuilder(policyAccess.getValue()); - currentSetting.append(":"); - currentSetting.append(defaultPolicyAccess); - systemSecureSettings.updateSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES, - currentSetting.toString(), null, true, - SettingsState.SYSTEM_PACKAGE_NAME); - } - } - + // Version 128: Removed currentVersion = 129; } @@ -3365,58 +3340,7 @@ public class SettingsProvider extends ContentProvider { } if (currentVersion == 140) { - // Version 141: One-time grant of notification listener privileges - // to packages specified in overlay. - String defaultListenerAccess = getContext().getResources().getString( - com.android.internal.R.string.config_defaultListenerAccessPackages); - if (defaultListenerAccess != null) { - StringBuffer newListeners = new StringBuffer(); - for (String whitelistPkg : defaultListenerAccess.split(":")) { - // Gather all notification listener components for candidate pkgs. - Intent serviceIntent = - new Intent(NotificationListenerService.SERVICE_INTERFACE) - .setPackage(whitelistPkg); - List installedServices = - getContext().getPackageManager().queryIntentServicesAsUser( - serviceIntent, - PackageManager.GET_SERVICES - | PackageManager.GET_META_DATA - | PackageManager.MATCH_DIRECT_BOOT_AWARE - | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, - userId); - - for (int i = 0, count = installedServices.size(); i < count; i++) { - ResolveInfo resolveInfo = installedServices.get(i); - ServiceInfo info = resolveInfo.serviceInfo; - if (!android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE - .equals(info.permission)) { - continue; - } - newListeners.append(":") - .append(info.getComponentName().flattenToString()); - } - } - - if (newListeners.length() > 0) { - final SettingsState secureSetting = getSecureSettingsLocked(userId); - final Setting existingSetting = secureSetting.getSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS); - if (existingSetting.isNull()) { - secureSetting.insertSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, - newListeners.toString(), null, true, - SettingsState.SYSTEM_PACKAGE_NAME); - } else { - StringBuilder currentSetting = - new StringBuilder(existingSetting.getValue()); - currentSetting.append(newListeners.toString()); - secureSetting.updateSettingLocked( - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, - currentSetting.toString(), null, true, - SettingsState.SYSTEM_PACKAGE_NAME); - } - } - } + // Version 141: Removed currentVersion = 141; } @@ -3467,21 +3391,7 @@ public class SettingsProvider extends ContentProvider { } if (currentVersion == 144) { - // Version 145: Set the default value for WIFI_WAKEUP_AVAILABLE. - if (userId == UserHandle.USER_SYSTEM) { - final SettingsState globalSettings = getGlobalSettingsLocked(); - final Setting currentSetting = globalSettings.getSettingLocked( - Settings.Global.WIFI_WAKEUP_AVAILABLE); - if (currentSetting.isNull()) { - final int defaultValue = getContext().getResources().getInteger( - com.android.internal.R.integer.config_wifi_wakeup_available); - globalSettings.insertSettingLocked( - Settings.Global.WIFI_WAKEUP_AVAILABLE, - String.valueOf(defaultValue), - null, true, SettingsState.SYSTEM_PACKAGE_NAME); - } - } - + // Version 145: Removed currentVersion = 145; } @@ -3510,6 +3420,42 @@ public class SettingsProvider extends ContentProvider { currentVersion = 146; } + if (currentVersion == 146) { + // Version 147: Set the default value for WIFI_WAKEUP_AVAILABLE. + if (userId == UserHandle.USER_SYSTEM) { + final SettingsState globalSettings = getGlobalSettingsLocked(); + final Setting currentSetting = globalSettings.getSettingLocked( + Settings.Global.WIFI_WAKEUP_AVAILABLE); + if (currentSetting.getValue() == null) { + final int defaultValue = getContext().getResources().getInteger( + com.android.internal.R.integer.config_wifi_wakeup_available); + globalSettings.insertSettingLocked( + Settings.Global.WIFI_WAKEUP_AVAILABLE, + String.valueOf(defaultValue), + null, true, SettingsState.SYSTEM_PACKAGE_NAME); + } + } + + currentVersion = 147; + } + + if (currentVersion == 147) { + // Version 148: Set the default value for DEFAULT_RESTRICT_BACKGROUND_DATA. + if (userId == UserHandle.USER_SYSTEM) { + final SettingsState globalSettings = getGlobalSettingsLocked(); + final Setting currentSetting = globalSettings.getSettingLocked( + Global.DEFAULT_RESTRICT_BACKGROUND_DATA); + if (currentSetting.isNull()) { + globalSettings.insertSettingLocked( + Global.DEFAULT_RESTRICT_BACKGROUND_DATA, + getContext().getResources().getBoolean( + R.bool.def_restrict_background_data) ? "1" : "0", + null, true, SettingsState.SYSTEM_PACKAGE_NAME); + } + } + currentVersion = 148; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/SettingsProvider/test/Android.mk b/packages/SettingsProvider/test/Android.mk index 85e611f95d78aad0960bc9f1ac21f88bd0608d26..a9707d4ae69b9ac9b83161cd0db778fe4fcc487f 100644 --- a/packages/SettingsProvider/test/Android.mk +++ b/packages/SettingsProvider/test/Android.mk @@ -4,10 +4,11 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := tests -# Note we statically link SettingsState to do some unit tests. It's not accessible otherwise +# Note we statically link several classes to do some unit tests. It's not accessible otherwise # because this test is not an instrumentation test. (because the target runs in the system process.) LOCAL_SRC_FILES := $(call all-subdir-java-files) \ - ../src/com/android/providers/settings/SettingsState.java + ../src/com/android/providers/settings/SettingsState.java \ + ../src/com/android/providers/settings/SettingsHelper.java LOCAL_STATIC_JAVA_LIBRARIES := android-support-test diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6fa014d4bef7755c80b15a84b8139142a413b5b3 --- /dev/null +++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsHelperTest.java @@ -0,0 +1,135 @@ +/* + * 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.providers.settings; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertSame; +import static junit.framework.Assert.assertNull; +import static junit.framework.Assert.fail; + +import com.android.internal.app.LocalePicker; +import com.android.providers.settings.SettingsHelper; + +import android.os.LocaleList; +import android.support.test.runner.AndroidJUnit4; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Tests for the SettingsHelperTest + */ +@RunWith(AndroidJUnit4.class) +public class SettingsHelperTest { + @Test + public void testResolveLocales() throws Exception { + // Empty string from backup server + assertEquals(LocaleList.forLanguageTags("en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags(""), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US" })); // supported + + // Same as current settings + assertEquals(LocaleList.forLanguageTags("en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US" })); // supported + + assertEquals(LocaleList.forLanguageTags("en-US,ja-JP"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US,ja-JP"), // restore + LocaleList.forLanguageTags("en-US,ja-JP"), // current + new String[] { "en-US", "ja-JP" })); // supported + + // Current locale must be kept at the first place. + assertEquals(LocaleList.forLanguageTags("ja-JP,en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US"), // restore + LocaleList.forLanguageTags("ja-JP"), // current + new String[] { "en-US", "ja-JP" })); // supported + + assertEquals(LocaleList.forLanguageTags("ja-JP,ko-KR,en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US"), // restore + LocaleList.forLanguageTags("ja-JP,ko-KR"), // current + new String[] { "en-US", "ja-JP", "ko-KR" })); // supported + + assertEquals(LocaleList.forLanguageTags("ja-JP,en-US,ko-KR"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US,ko-KR"), // restore + LocaleList.forLanguageTags("ja-JP"), // current + new String[] { "en-US", "ja-JP", "ko-KR" })); // supported + + // Duplicated entries must be removed. + assertEquals(LocaleList.forLanguageTags("ja-JP,ko-KR,en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US,ko-KR"), // restore + LocaleList.forLanguageTags("ja-JP,ko-KR"), // current + new String[] { "en-US", "ja-JP", "ko-KR" })); // supported + + // Drop unsupported locales. + assertEquals(LocaleList.forLanguageTags("en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("en-US,zh-CN"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US" })); // supported + + // Comparison happens on fully-expanded locale. + assertEquals(LocaleList.forLanguageTags("en-US,sr-Latn-SR,sr-Cryl-SR"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("sr-Cryl-SR"), // restore + LocaleList.forLanguageTags("en-US,sr-Latn-SR"), // current + new String[] { "en-US", "sr-Latn-SR", "sr-Cryl-SR" })); // supported + + assertEquals(LocaleList.forLanguageTags("en-US"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("kk-Cryl-KZ"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US", "kk-Latn-KZ" })); // supported + + assertEquals(LocaleList.forLanguageTags("en-US,kk-Cryl-KZ"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("kk-Cryl-KZ"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US", "kk-Cryl-KZ" })); // supported + + assertEquals(LocaleList.forLanguageTags("en-US,zh-CN"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("zh-Hans-CN"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US", "zh-CN" })); // supported + + assertEquals(LocaleList.forLanguageTags("en-US,zh-Hans-CN"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("zh-CN"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "en-US", "zh-Hans-CN" })); // supported + + // Old langauge code should be updated. + assertEquals(LocaleList.forLanguageTags("en-US,he-IL,id-ID,yi"), + SettingsHelper.resolveLocales( + LocaleList.forLanguageTags("iw-IL,in-ID,ji"), // restore + LocaleList.forLanguageTags("en-US"), // current + new String[] { "he-IL", "id-ID", "yi" })); // supported + } +} diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index e6d9a9a39280e497598dc91048d4211472530894..b758e7f5bc8797411c212d7733eee2d563ab34ea 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -62,6 +62,7 @@ + @@ -114,9 +115,12 @@ + + + diff --git a/packages/Shell/res/layout/dialog_bugreport_info.xml b/packages/Shell/res/layout/dialog_bugreport_info.xml index bb3084f5c10aef610d89ead6507251b4db09a06e..4bd8711031936fd8a07c12f7a1d99bcead7d5b27 100644 --- a/packages/Shell/res/layout/dialog_bugreport_info.xml +++ b/packages/Shell/res/layout/dialog_bugreport_info.xml @@ -19,39 +19,51 @@ android:paddingTop="15dp" android:paddingStart="24dp" android:paddingEnd="24dp" - android:focusableInTouchMode="true" + android:focusableInTouchMode="false" + android:focusable="false" + android:importantForAutofill="noExcludeDescendants" android:layout_width="wrap_content" android:layout_height="wrap_content"> "Tafadhali subiri…" "Tutatuma ripoti ya hitilafu kwenye simu baada ya muda mfupi" "Chagua kushiriki ripoti ya hitilafu" - "Gonga ili ushiriki ripoti yako ya hitilafu" + "Gusa ili ushiriki ripoti yako ya hitilafu" "Chagua kushiriki ripoti yako ya hitilafu bila picha ya skrini au usubiri picha ya skrini itayarishwe" - "Gonga ili ushiriki ripoti yako ya hitilafu bila picha ya skrini au usubiri picha ya skrini itayarishwe" - "Gonga ili ushiriki ripoti yako ya hitilafu bila picha ya skrini au usubiri picha ya skrini itayarishwe" + "Gusa ili ushiriki ripoti yako ya hitilafu bila picha ya skrini au usubiri picha ya skrini itayarishwe" + "Gusa ili ushiriki ripoti yako ya hitilafu bila picha ya skrini au usubiri picha ya skrini itayarishwe" "Ripoti za hitilafu zinajumuisha data kutoka faili za kumbukumbu mbalimbali zilizo kwenye mfumo, ambazo huenda zinajumuisha data ambayo unachukulia kuwa nyeti (kama vile matumizi ya programu na maelezo kuhusu data ilipo). Shiriki ripoti za hitilafu na watu na programu unazoamini pekee." "Usionyeshe tena" "Ripoti za hitilafu" diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java index 988b9865c7ecd7b2cb0af115fd8970e37d8f0d15..a8b184c3f204150f11350b871c2fe54c005193dc 100644 --- a/packages/Shell/src/com/android/shell/BugreportProgressService.java +++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java @@ -1060,7 +1060,6 @@ public class BugreportProgressService extends Service { } return new Notification.Builder(context, NOTIFICATION_CHANNEL_ID) .addExtras(sNotificationBundle) - .setCategory(Notification.CATEGORY_SYSTEM) .setSmallIcon( isTv(context) ? R.drawable.ic_bug_report_black_24dp : com.android.internal.R.drawable.stat_sys_adb) diff --git a/packages/Shell/src/com/android/shell/BugreportWarningActivity.java b/packages/Shell/src/com/android/shell/BugreportWarningActivity.java index bdf41714d26c82b0f9a2b700ec08036e56829fb4..2191d939e5914d3d46cdd8df8f3b8a22e81d541a 100644 --- a/packages/Shell/src/com/android/shell/BugreportWarningActivity.java +++ b/packages/Shell/src/com/android/shell/BugreportWarningActivity.java @@ -64,7 +64,7 @@ public class BugreportWarningActivity extends AlertActivity final int state = getWarningState(this, STATE_UNKNOWN); final boolean checked; - if (Build.TYPE.equals("user")) { + if (Build.IS_USER) { checked = state == STATE_HIDE; // Only checks if specifically set to. } else { checked = state != STATE_SHOW; // Checks by default. diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java index 8bfcc74f7b04488baf1c8edae18218c39e752d4e..e69b0a81b97e0535538e8d7989da73e39a767aeb 100644 --- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java +++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java @@ -577,7 +577,7 @@ public class BugreportReceiverTest { mUiBot.getVisibleObject(mContext.getString(R.string.bugreport_confirm_dont_repeat)); final boolean firstTime = propertyState == null || propertyState == STATE_UNKNOWN; if (firstTime) { - if (Build.TYPE.equals("user")) { + if (Build.IS_USER) { assertFalse("Checkbox should NOT be checked by default on user builds", dontShowAgain.isChecked()); mUiBot.click(dontShowAgain, "dont-show-again"); diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index 86ff8fe5743c54948a6adb171572e6d4179be53e..87971cb41f96d9ae157447afc1d23471a775500d 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -108,6 +108,7 @@ + @@ -271,21 +272,9 @@ + android:value="com.android.settings.category.ia.system" /> - - - - - - - - + + + + android:process=":screenshot" + android:exported="false" /> + android:process=":screenshot" + android:exported="false" /> - - T get(Plugin p, Class cls) { return sProvider.get(p, cls); } diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java index d57124381c1faac3e21c097e7751a986e9084c79..a648345e9c043af73c27ce64faa8a7ea4d2f5094 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java @@ -31,9 +31,9 @@ import com.android.systemui.plugins.qs.QS.HeightListener; @DependsOn(target = HeightListener.class) public interface QS extends FragmentBase { - public static final String ACTION = "com.android.systemui.action.PLUGIN_QS"; + String ACTION = "com.android.systemui.action.PLUGIN_QS"; - public static final int VERSION = 6; + int VERSION = 6; String TAG = "QS"; @@ -66,8 +66,8 @@ public interface QS extends FragmentBase { } @ProvidesInterface(version = HeightListener.VERSION) - public interface HeightListener { - public static final int VERSION = 1; + interface HeightListener { + int VERSION = 1; void onQsHeightChanged(); } diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index b4b4e19028b01b08929a445df6c876fe02672db1..c52c0aae355682ece18b7f32422cdf7c59604ca4 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -26,6 +26,7 @@ import com.android.systemui.plugins.qs.QSTile.Icon; import com.android.systemui.plugins.qs.QSTile.State; import java.util.Objects; +import java.util.function.Supplier; @ProvidesInterface(version = QSTile.VERSION) @DependsOn(target = QSIconView.class) @@ -104,6 +105,7 @@ public interface QSTile { public static class State { public static final int VERSION = 1; public Icon icon; + public Supplier iconSupplier; public int state = Tile.STATE_ACTIVE; public CharSequence label; public CharSequence contentDescription; @@ -118,6 +120,7 @@ public interface QSTile { if (other == null) throw new IllegalArgumentException(); if (!other.getClass().equals(getClass())) throw new IllegalArgumentException(); final boolean changed = !Objects.equals(other.icon, icon) + || !Objects.equals(other.iconSupplier, iconSupplier) || !Objects.equals(other.label, label) || !Objects.equals(other.contentDescription, contentDescription) || !Objects.equals(other.dualLabelContentDescription, @@ -130,6 +133,7 @@ public interface QSTile { || !Objects.equals(other.dualTarget, dualTarget) || !Objects.equals(other.slash, slash); other.icon = icon; + other.iconSupplier = iconSupplier; other.label = label; other.contentDescription = contentDescription; other.dualLabelContentDescription = dualLabelContentDescription; @@ -150,6 +154,7 @@ public interface QSTile { protected StringBuilder toStringBuilder() { final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); sb.append(",icon=").append(icon); + sb.append(",iconSupplier=").append(iconSupplier); sb.append(",label=").append(label); sb.append(",contentDescription=").append(contentDescription); sb.append(",dualLabelContentDescription=").append(dualLabelContentDescription); diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java index 5243228121c62ecd68ac1124af2f4e8b5482c6c4..56a3ee3a28f70d3c1bd9a88f07ea184220f71386 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java @@ -46,7 +46,8 @@ public interface NavBarButtonProvider extends Plugin { void setVertical(boolean vertical); - void setCarMode(boolean carMode); + default void setCarMode(boolean carMode) { + } void setDarkIntensity(float intensity); } diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_esim_area.xml b/packages/SystemUI/res-keyguard/layout/keyguard_esim_area.xml index 8cbd94bd0cb4221976fbd3f301ad8c3602ef6818..db508c91e0de21d6d6186d1c48ac9ad7bd48cebf 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_esim_area.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_esim_area.xml @@ -25,8 +25,7 @@ android:id="@+id/keyguard_disable_esim" android:visibility="gone" android:text="@string/disable_carrier_button_text" - style="?android:attr/buttonBarButtonStyle" + style="@style/Keyguard.TextView" android:textAppearance="?android:attr/textAppearanceMedium" android:textSize="@dimen/kg_status_line_font_size" - android:textColor="?android:attr/textColorSecondary" android:textAllCaps="@bool/kg_use_all_caps" /> diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml index 7291cd44c8acdade7c1709d8fa8d611e0e291576..29376ce01e4fd7a96a6310ea67a00611ec553770 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml @@ -45,7 +45,9 @@ android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false" - android:paddingTop="@dimen/keyguard_security_view_margin" + android:paddingTop="@dimen/keyguard_security_view_top_margin" + android:paddingStart="@dimen/keyguard_security_view_lateral_margin" + android:paddingEnd="@dimen/keyguard_security_view_lateral_margin" android:gravity="center"> diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml index 1662bc8b7e9d2a8c37c0d4c5a2075934672b9598..6e371f543efe887f1588a94778f07f777ee2184a 100644 --- a/packages/SystemUI/res-keyguard/values-af/strings.xml +++ b/packages/SystemUI/res-keyguard/values-af/strings.xml @@ -29,8 +29,7 @@ "Voer wagwoord in om te ontsluit" "Tik PIN in om te ontsluit" "Verkeerde PIN-kode." - - + "Ongeldige kaart." "Gelaai" "Laai" "Laai tans vinnig" diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml index fc7634a71a35e05ac879c802df4b9ddd156eae38..4cdf7214200686aba960d81ac9917355ee4187a3 100644 --- a/packages/SystemUI/res-keyguard/values-am/strings.xml +++ b/packages/SystemUI/res-keyguard/values-am/strings.xml @@ -29,8 +29,7 @@ "ለመክፈት የይለፍ ቃል ይተይቡ" "ለመክፈት ፒን ይተይቡ" "ትክክል ያልሆነ ፒን ኮድ።" - - + "ልክ ያልሆነ ካርድ።" "ባትሪ ሞልቷል" "ኃይል በመሙላት ላይ" "ኃይል በፍጥነት በመሙላት ላይ" diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml index 42f92e39120c22353ec46a6696ca0fd3f28526bc..bc830dc99f673f2cc6134b2acda662406557b4c6 100644 --- a/packages/SystemUI/res-keyguard/values-ar/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml @@ -29,8 +29,7 @@ "اكتب كلمة المرور لإلغاء التأمين" "اكتب رمز رقم التعريف الشخصي لإلغاء التأمين" "رمز رقم التعريف الشخصي غير صحيح." - - + "بطاقة غير صالحة." "تم الشحن" "جارٍ الشحن" "الشحن سريعًا" @@ -111,8 +110,8 @@ ‏رمز PUK لشريحة SIM غير صحيح، ويتبقى لديك %d من المحاولات تصبح بعدها شريحة SIM غير صالحة للاستخدام بشكل دائم. ‏رمز PUK لشريحة SIM غير صالح، ويتبقى لديك محاولة واحدة (%d)، تصبح بعدها شريحة SIM غير صالحة للاستخدام بشكل دائم. - "‏أخفقت عملية \"رقم التعريف الشخصي\" لشريحة SIM" - "‏أخفقت عملية PUK لشريحة SIM" + "‏تعذّر إتمام عملية \"رقم التعريف الشخصي\" لشريحة SIM" + "‏تعذّر إتمام عملية PUK لشريحة SIM" "تم قبول الرمز" "لا تتوفر خدمة." "تبديل أسلوب الإدخال" diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml index c074380ccda5a8e6ea7f9a9bba627fbe7bc158b2..3471b143825f117fae2a7aa98d325a5fffbd7008 100644 --- a/packages/SystemUI/res-keyguard/values-az/strings.xml +++ b/packages/SystemUI/res-keyguard/values-az/strings.xml @@ -29,8 +29,7 @@ "Kilidi açmaq üçün parol daxil edin" "Kilidi açmaq üçün PIN daxil edin" "Yanlış PIN kod." - - + "Yanlış Kart." "Enerji yığdı" "Enerji yığır" "Sürətlə enerji yığır" diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml index 1e42f25299cd4f56aeaca6f28b7e65fd771fbe52..ce2ea71b8a430ae9354322a46eb8bcf7d3adfb55 100644 --- a/packages/SystemUI/res-keyguard/values-bg/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml @@ -29,8 +29,7 @@ "Въведете парола, за да отключите" "Въведете ПИН кода, за да отключите" "Неправилен ПИН код." - - + "Картата е невалидна." "Заредена" "Зарежда се" "Зарежда се бързо" diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml index 66a56217cbb5a3879ab741c30b72a970bca1f135..421a737c2893ad20cc9dacf03009f85cda844662 100644 --- a/packages/SystemUI/res-keyguard/values-bn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml @@ -29,8 +29,7 @@ "আনলক করতে পাসওয়ার্ড লিখুন" "আনলক করতে পিন লিখুন" "ভুল পিন কোড দেওয়া হয়েছে।" - - + "ভুল কার্ড।" "চার্জ হয়েছে" "চার্জ হচ্ছে" "দ্রুত চার্জ হচ্ছে" diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml index 553b41ec3dfd5693ac0eb151db0a352944bd7f13..4d5970503f641338eeda1401f33b158f7ad38881 100644 --- a/packages/SystemUI/res-keyguard/values-ca/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml @@ -29,8 +29,7 @@ "Escriu la contrasenya per desbloquejar" "Escriu el PIN per desbloquejar" "El codi PIN no és correcte." - - + "La targeta no és vàlida." "Bateria carregada" "S\'està carregant" "S\'està carregant ràpidament" diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml index 2d520599f9562f5ced986a2c8c6a7c5623277856..787a59fae57a23dfe6475831bb085afd61c05a2b 100644 --- a/packages/SystemUI/res-keyguard/values-cs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml @@ -29,8 +29,7 @@ "Zadejte heslo pro odemknutí" "Zadejte kód PIN pro odemknutí" "Nesprávný kód PIN." - - + "Neplatná karta." "Nabito" "Nabíjení" "Rychlé nabíjení" diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml index eeff613d36b0624f70f5201958b7602637718338..2890760acd7cebd6ccb7eecf257b5dc1e0cc82f5 100644 --- a/packages/SystemUI/res-keyguard/values-da/strings.xml +++ b/packages/SystemUI/res-keyguard/values-da/strings.xml @@ -29,8 +29,7 @@ "Indtast adgangskoden for at låse op" "Indtast pinkoden for at låse op" "Forkert pinkode." - - + "Ugyldigt kort." "Opladet" "Oplader" "Oplader hurtigt" diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml index 1c73463e0454076710fc5060b3dd5950fa4acc66..d55eb5ec27929a80473f3b0c3c0a0d21dd18c7e7 100644 --- a/packages/SystemUI/res-keyguard/values-de/strings.xml +++ b/packages/SystemUI/res-keyguard/values-de/strings.xml @@ -29,8 +29,7 @@ "Bitte gib das Passwort zum Entsperren ein" "Bitte gib die PIN zum Entsperren ein" "Falscher PIN-Code." - - + "Ungültige Karte." "Aufgeladen" "Wird aufgeladen" "Schnelles Aufladen" diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml index bfef1211f6b299019da58217d0d7a4062189d99f..6581a8fc19f2aedaaee413e80d7f14644d5de256 100644 --- a/packages/SystemUI/res-keyguard/values-el/strings.xml +++ b/packages/SystemUI/res-keyguard/values-el/strings.xml @@ -29,8 +29,7 @@ "Πληκτρολογήστε τον κωδικό πρόσβασης για ξεκλείδωμα" "Πληκτρολογήστε τον αριθμό PIN για ξεκλείδωμα" "Λανθασμένος κωδικός PIN." - - + "Μη έγκυρη κάρτα." "Φορτίστηκε" "Φόρτιση σε εξέλιξη" "Ταχεία φόρτιση" diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml index a17b784653d4dac59b78d3e4d2b5c85e0d7e3a57..4acc66dfd0875522feed11f257a5d06c7fd9c9d8 100644 --- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml @@ -29,8 +29,7 @@ "Type password to unlock" "Type PIN to unlock" "Incorrect PIN code." - - + "Invalid card." "Charged" "Charging" "Charging rapidly" diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml index a17b784653d4dac59b78d3e4d2b5c85e0d7e3a57..4acc66dfd0875522feed11f257a5d06c7fd9c9d8 100644 --- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml @@ -29,8 +29,7 @@ "Type password to unlock" "Type PIN to unlock" "Incorrect PIN code." - - + "Invalid card." "Charged" "Charging" "Charging rapidly" diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml index a17b784653d4dac59b78d3e4d2b5c85e0d7e3a57..4acc66dfd0875522feed11f257a5d06c7fd9c9d8 100644 --- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml @@ -29,8 +29,7 @@ "Type password to unlock" "Type PIN to unlock" "Incorrect PIN code." - - + "Invalid card." "Charged" "Charging" "Charging rapidly" diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml index 4514deefb863c35d43fb4c1ebafccfd6d2019b21..bfec511ef49d34a6640c40051c4bd0459729b90f 100644 --- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml @@ -29,8 +29,7 @@ "Ingresa la contraseña para desbloquearlo" "Ingresa el PIN para desbloquearlo" "Código PIN incorrecto" - - + "Tarjeta no válida" "Cargada" "Cargando" "Carga rápida" diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml index 8c75489e62624c46cfc22aeb14d65b599d79eb2e..4f0c488953bf236fbb7a3077475519af22c3c60e 100644 --- a/packages/SystemUI/res-keyguard/values-es/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es/strings.xml @@ -29,8 +29,7 @@ "Escribe la contraseña para desbloquear" "Escribe el código PIN para desbloquear" "El código PIN es incorrecto." - - + "Tarjeta no válida." "Cargada" "Cargando" "Cargando rápidamente" diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml index 97742cbd1d71e0ef54eb87cdc28101b692c1f556..54aae7e8ebf8b3e58a7b43bb0715f1a28a0ea39f 100644 --- a/packages/SystemUI/res-keyguard/values-et/strings.xml +++ b/packages/SystemUI/res-keyguard/values-et/strings.xml @@ -29,8 +29,7 @@ "Avamiseks sisestage parool" "Avamiseks sisestage PIN-kood" "Vale PIN-kood." - - + "Kehtetu kaart." "Laetud" "Laadimine" "Kiiresti laadimine" diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml index b493a0946c486de5527ac4a867c13c6545b7c516..42b823ec16db9f881a91ac178279df3d94bb7f7c 100644 --- a/packages/SystemUI/res-keyguard/values-eu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml @@ -29,8 +29,7 @@ "Idatzi desblokeatzeko pasahitza" "Idatzi desblokeatzeko PIN kodea" "PIN kode hori ez da zuzena." - - + "Txartelak ez du balio." "Kargatuta" "Kargatzen" "Bizkor kargatzen" diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml index 8e23d9d18e9555e00a66e87a31c0a28fa71c47f8..421ae79be4295d8319d82d3db96703b0f6884423 100644 --- a/packages/SystemUI/res-keyguard/values-fa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml @@ -29,8 +29,7 @@ "برای بازکردن قفل، گذرواژه را وارد کنید" "برای بازکردن قفل، پین را تایپ کنید" "کد پین اشتباه است." - - + "کارت نامعتبر" "شارژ کامل شد" "درحال شارژ شدن" "شارژ سریع" diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml index d531e65a1fa21012d3709630f4e0506b5378c826..b791253c56b9f3e6a989bc9fba6ac5bf94dd0603 100644 --- a/packages/SystemUI/res-keyguard/values-fi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml @@ -29,8 +29,7 @@ "Poista lukitus antamalla salasana." "Poista lukitus antamalla PIN-koodi." "Väärä PIN-koodi" - - + "Virheellinen kortti" "Ladattu" "Ladataan" "Nopea lataus käynnissä" diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml index 11f6ff1ee2bea5878470a3af57506040172c4230..a53ecf73e0aaac706a49b7ae55963623364583b7 100644 --- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml @@ -29,8 +29,7 @@ "Entrez le mot de passe pour déverrouiller le clavier." "Entrez le NIP pour déverrouiller le clavier." "NIP erroné." - - + "Cette carte n\'est pas valide." "Chargé" "Pile en cours de charge" "Charge rapide" diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml index 5acf96e45b2482ce22f75bde3b33a9966b173450..95f63e2152cbf7464ee2b9adcf0131dbca0b0bfa 100644 --- a/packages/SystemUI/res-keyguard/values-fr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml @@ -29,8 +29,7 @@ "Saisissez le mot de passe pour déverrouiller le clavier" "Saisissez le code pour déverrouiller le clavier" "Le code est incorrect." - - + "Carte non valide." "Chargé" "En charge…" "Chargement rapide…" diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml index a81affbc6970408a9cfd7bbd62fbf06b955a3973..3a970f3da1720ce35f4410e33df645380f7730d4 100644 --- a/packages/SystemUI/res-keyguard/values-gl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml @@ -29,8 +29,7 @@ "Escribe o contrasinal para desbloquear" "Escribe o PIN para desbloquear" "Código PIN incorrecto" - - + "A tarxeta non é válida." "Cargada" "Cargando" "Cargando rapidamente" diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml index 60666fbc5e6b18da7790be76eec5da7674be3fb1..20c5aa92897d4625aa0d101ab410b99337eac462 100644 --- a/packages/SystemUI/res-keyguard/values-gu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml @@ -29,8 +29,7 @@ "અનલૉક કરવા માટે પાસવર્ડ લખો" "અનલૉક કરવા માટે પિન લખો" "ખોટો પિન કોડ." - - + "અમાન્ય કાર્ડ." "ચાર્જ થઈ ગયું" "ચાર્જ થઈ રહ્યું છે" "ઝડપથી ચાર્જ થઈ રહ્યું છે" diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml index 3beb4fe9904a64a69f27c844a7512d03282dc9d5..82d73162ecc0c09584f1afb732ca48fd98057044 100644 --- a/packages/SystemUI/res-keyguard/values-hi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml @@ -29,8 +29,7 @@ "अनलॉक करने के लिए पासवर्ड लिखें" "अनलॉक करने के लिए पिन लिखें" "गलत पिन कोड." - - + "गलत कार्ड." "चार्ज हो गई है" "चार्ज हो रही है" "तेज़ी से चार्ज हो रही है" @@ -132,5 +131,5 @@ डिवाइस को %d घंटों से अनलॉक नहीं किया गया है. पासवर्ड की पुष्टि करें. डिवाइस को %d घंटों से अनलॉक नहीं किया गया है. पासवर्ड की पुष्टि करें. - "अंगुली की पहचान नहीं हो सकी" + "उंगली की पहचान नहीं हो सकी" diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml index 1862c9d6d82cdfee0ad90391ee29c7c09769cebb..cd5599e78a08298a649fbe3d190f566697f3bf4b 100644 --- a/packages/SystemUI/res-keyguard/values-hr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml @@ -29,8 +29,7 @@ "Unesite zaporku da biste otključali" "Unesite PIN da biste otključali" "PIN kôd nije točan." - - + "Nevažeća kartica." "Napunjeno" "Punjenje" "Brzo punjenje" diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml index a7ce529679e28980eb2ef4f30b9179fff4ee7ccd..d13d93a645cc073531ee3ccffcb30f265ebd2ea5 100644 --- a/packages/SystemUI/res-keyguard/values-hu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml @@ -29,8 +29,7 @@ "A feloldáshoz írja be a jelszót" "A feloldáshoz írja be a PIN-kódot" "Helytelen PIN-kód." - - + "Érvénytelen kártya." "Feltöltve" "Töltés folyamatban" "Gyors töltés folyamatban" diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml index 3279074b33a5d4bab17a6fbf4f7a10873297c064..b7e10703b0f1d3df6f44fec1cc779c4f099180f5 100644 --- a/packages/SystemUI/res-keyguard/values-hy/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml @@ -29,8 +29,7 @@ "Ապակողպելու համար մուտքագրեք գաղտնաբառը" "Ապակողպելու համար մուտքագրեք PIN կոդը" "PIN կոդը սխալ է։" - - + "Սխալ քարտ" "Լիցքավորված է" "Լիցքավորում" "Արագ լիցքավորում" diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml index 3385f23e7f4284fe0a1186f7f6a0eeac20692de0..5e50e27030b74ca30d41c9772fb2b7803658e7ff 100644 --- a/packages/SystemUI/res-keyguard/values-in/strings.xml +++ b/packages/SystemUI/res-keyguard/values-in/strings.xml @@ -29,8 +29,7 @@ "Ketik sandi untuk membuka kunci" "Ketik PIN untuk membuka kunci" "Kode PIN salah." - - + "Kartu Tidak Valid" "Terisi" "Mengisi daya" "Mengisi daya dengan cepat" diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml index 21bc49e36c5545838073f127c1be1d569bb96163..9420b6e86bf944450f1d573512c47ad0cebe2dac 100644 --- a/packages/SystemUI/res-keyguard/values-is/strings.xml +++ b/packages/SystemUI/res-keyguard/values-is/strings.xml @@ -29,8 +29,7 @@ "Sláðu inn aðgangsorðið til að opna" "Sláðu inn PIN-númer til að opna" "Rangt PIN-númer." - - + "Ógilt kort." "Fullhlaðin" "Í hleðslu" "Hröð hleðsla" diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml index aa3062e69197f7745a4d9703aeb50b2fb0391b72..04020e35f6d4a3fde28b145fe4d7473480cf08ca 100644 --- a/packages/SystemUI/res-keyguard/values-it/strings.xml +++ b/packages/SystemUI/res-keyguard/values-it/strings.xml @@ -29,8 +29,7 @@ "Inserisci password per sbloccare" "Inserisci PIN per sbloccare" "Codice PIN errato." - - + "Scheda non valida." "Carico" "In carica" "Ricarica veloce" diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml index 9899958b849d50bc33624afb39bda6c9c0d9b753..f2665f07f5e64937d98b1a7bc134b3290e28f140 100644 --- a/packages/SystemUI/res-keyguard/values-iw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml @@ -29,8 +29,7 @@ "הזן סיסמה לביטול הנעילה" "הזן את קוד הגישה לביטול הנעילה" "קוד הגישה שגוי" - - + "כרטיס לא חוקי." "הסוללה טעונה" "הסוללה נטענת" "הסוללה נטענת מהר" diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml index ed1e0b3742a3a06f7d36d5ed15185e749a602408..63db97c6121c287970a16acad381edfe03d16536 100644 --- a/packages/SystemUI/res-keyguard/values-ka/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml @@ -29,8 +29,7 @@ "განსაბლოკად აკრიფეთ პაროლი" "განსაბლოკად აკრიფეთ PIN-კოდი" "PIN-კოდი არასწორია." - - + "ბარათი არასწორია." "დატენილია" "მიმდინარეობს დატენა" "მიმდინარეობს სწრაფი დატენა" diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml index 3400de413a549a69558fb0a2e2f77df6d2719ff8..3cceb6a295f9b699c4f3a62712bf11edb0482f9c 100644 --- a/packages/SystemUI/res-keyguard/values-kk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml @@ -29,8 +29,7 @@ "Құлпын ашу үшін құпия сөзді теріңіз" "Құлпын ашу үшін PIN кодын енгізіңіз" "PIN коды қате" - - + "Жарамсыз карта." "Зарядталды" "Зарядталуда" "Жылдам зарядталуда" diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index df4a5c82dbc9307b4bc99503870bd6d06aad13c6..38b2cdb1730bc7bea2e45b0b18537b83562fd48b 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -29,8 +29,7 @@ "វាយ​បញ្ចូល​ពាក្យ​សម្ងាត់​ ដើម្បី​ដោះ​សោ" "វាយ​បញ្ចូល​កូដ PIN ដើម្បី​ដោះ​សោ" "កូដ PIN មិន​ត្រឹមត្រូវ​ទេ។" - - + "បណ្ណមិនត្រឹមត្រូវទេ។" "បាន​សាក​ថ្ម" "កំពុង​សាក​ថ្ម" "សាកយ៉ាងឆាប់រហ័ស" diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml index cd1db40b739a4487a713409182bb0e6187d9cdf3..39ab5de5ff0c7699b20ea64aff5c529a564449dd 100644 --- a/packages/SystemUI/res-keyguard/values-kn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml @@ -29,8 +29,7 @@ "ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ಪಾಸ್‌ವರ್ಡ್‌ ಟೈಪ್‌ ಮಾಡಿ" "ಅನ್‌ಲಾಕ್‌ ಮಾಡಲು ಪಿನ್‌ ಟೈಪ್‌ ಮಾಡಿ" "ತಪ್ಪಾದ ಪಿನ್‌ ಕೋಡ್." - - + "ಅಮಾನ್ಯ ಕಾರ್ಡ್." "ಚಾರ್ಜ್ ಆಗಿದೆ" "ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ" "ವೇಗವಾಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ" diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml index 0a16504881299e52a6dfd2ac65b2a49740b819b7..797e87815e462ea4497e12a54e3c22a6aa9998b3 100644 --- a/packages/SystemUI/res-keyguard/values-ko/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml @@ -29,8 +29,7 @@ "잠금 해제하려면 비밀번호 입력" "잠금 해제하려면 PIN 입력" "잘못된 PIN 코드입니다." - - + "유효하지 않은 카드" "충전됨" "충전 중" "고속 충전 중" diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml index c55bef48c238757916aed8a217e31bc71d1edb8d..efa7ac30ef196ebd21eb9964452f75f99d34afd7 100644 --- a/packages/SystemUI/res-keyguard/values-ky/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml @@ -29,8 +29,7 @@ "Кулпуну ачуу үчүн сырсөздү териңиз" "Кулпуну ачуу үчүн PIN-кодду териңиз" "PIN-код туура эмес." - - + "SIM-карта жараксыз." "Кубатталды" "Кубатталууда" "Ыкчам кубатталууда" diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml index ac7d49f39a7820d3cb5f5468175343774bb8c365..133551be52f5277f4005825d4fa1b09f45c8248c 100644 --- a/packages/SystemUI/res-keyguard/values-lo/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml @@ -29,8 +29,7 @@ "ພິມລະຫັດເພື່ອປົດລັອກ" "ພິມລະຫັດ PIN ເພື່ອປົດລັອກ" "ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ." - - + "ບັດບໍ່ຖືກຕ້ອງ." "ສາກເຕັມແລ້ວ." "ກຳລັງສາກໄຟ" "ກຳລັງສາກດ່ວນ" diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml index cafb2e37c7442fa224d0c5c58561864b5b3c79fa..bc95b36ab77a68cda2d6456258da1b6c7d26babc 100644 --- a/packages/SystemUI/res-keyguard/values-lt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml @@ -29,8 +29,7 @@ "Įveskite slaptažodį, kad atrakintumėte" "Įveskite PIN kodą, kad atrakintumėte" "Netinkamas PIN kodas." - - + "Netinkama kortelė." "Įkrauta" "Įkraunama" "Greitai įkraunama" diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml index 0eafef8c8b0941f31dfc38e2bc6802f8a18f46b0..05a51eb102e40746b513a00494eb7778380bbad0 100644 --- a/packages/SystemUI/res-keyguard/values-lv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml @@ -29,8 +29,7 @@ "Ievadiet paroli, lai atbloķētu." "Ievadiet PIN kodu, lai atbloķētu." "PIN kods nav pareizs." - - + "Nederīga karte." "Akumulators uzlādēts" "Notiek uzlāde" "Notiek ātrā uzlāde" diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml index d25d86bf566936db8a6a470f375a7b8cd859c36f..5678365a177ff3830fb17bd49539fe6dc44cec73 100644 --- a/packages/SystemUI/res-keyguard/values-mk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml @@ -29,8 +29,7 @@ "Напишете ја лозинката за да отклучите" "Напишете PIN-код за да отклучите" "Погрешен PIN-код." - - + "Неважечка картичка." "Полна" "Се полни" "Брзо полнење" diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml index dc070d4f8deaa866c2a32075e1b8190b41e3820d..b30afa4cdab32583cf27e3b1affec95e045858c1 100644 --- a/packages/SystemUI/res-keyguard/values-ml/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml @@ -29,8 +29,7 @@ "അൺലോക്കുചെയ്യുന്നതിന് പാസ്‌വേഡ് ടൈപ്പുചെയ്യുക" "അൺലോക്കുചെയ്യുന്നതിന് പിൻ ടൈപ്പുചെയ്യുക" "പിൻ കോഡ് തെറ്റാണ്." - - + "അസാധുവായ കാർഡ്." "ചാർജായി" "ചാർജ്ജുചെയ്യുന്നു" "വേഗത്തിൽ ചാർജുചെയ്യുന്നു" diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml index 6d81a7af16095f0eb4813353dbd2a94070d26f54..33d0c62ebb2a4eac4bcf774454070b21e6958730 100644 --- a/packages/SystemUI/res-keyguard/values-mn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml @@ -29,8 +29,7 @@ "Түгжээг тайлахын тулд нууц үгийг оруулна уу" "Түгжээг тайлахын тулд ПИН кодыг оруулна уу" "ПИН код буруу байна." - - + "Карт хүчингүй байна." "Цэнэглэсэн" "Цэнэглэж байна" "Хурдан цэнэглэж байна" diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml index 20b352c0bc05610cfa8768e198e1e030423837ca..c1f04495505e0c754ef3293203480ebd17ffbdf5 100644 --- a/packages/SystemUI/res-keyguard/values-mr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml @@ -25,12 +25,11 @@ "सिम PUK आणि नवीन पिन कोड टाइप करा" "सिम PUK कोड" "नवीन सिम पिन कोड" - "संकेतशब्द टाइप करण्यासाठी स्पर्श करा" - "अनलॉक करण्यासाठी संकेतशब्द टाइप करा" + "पासवर्ड टाइप करण्यासाठी स्पर्श करा" + "अनलॉक करण्यासाठी पासवर्ड टाइप करा" "अनलॉक करण्यासाठी पिन टाइप करा" "चुकीचा पिन कोड." - - + "अवैध कार्ड." "चार्ज झाली" "चार्ज होत आहे" "द्रुतपणे चार्ज होत आहे" @@ -54,30 +53,30 @@ "पुढील अलार्म %1$s साठी सेट केला" "हटवा" "eSIM बंद करा" - "प्रविष्ट करा" + "एंटर करा" "पॅटर्न विसरलात" "चुकीचा पॅटर्न" - "चुकीचा संकेतशब्द" + "चुकीचा पासवर्ड" "चुकीचा पिन" "%d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुमचा पॅटर्न काढा" "सिम पिन एंटर करा" "\"%1$s\" साठी सिम पिन एंटर करा" "मोबाइल सेवांशिवाय डिव्हाइस वापरण्यासाठी eSIM बंद करा." - "पिन प्रविष्ट करा" - "संकेतशब्द प्रविष्ट करा" - "सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड प्रविष्ट करा. तपशीलांसाठी वाहकाशी संपर्क साधा." - "\"%1$s\" सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड प्रविष्ट करा. तपशीलांसाठी वाहकाशी संपर्क साधा." - "इच्छित पिन कोड प्रविष्ट करा" + "पिन एंटर करा" + "पासवर्ड एंटर करा" + "सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड एंटर करा. तपशीलांसाठी वाहकाशी संपर्क साधा." + "\"%1$s\" सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड एंटर करा. तपशीलांसाठी वाहकाशी संपर्क साधा." + "इच्छित पिन कोड एंटर करा" "इच्छित पिन कोड ची पुष्टी करा" "सिम कार्ड अनलॉक करत आहे…" "4 ते 8 अंकांचा पिन टाईप करा." "PUK कोड 8 अंकी किंवा त्यापेक्षा अधिकचा असावा." - "योग्य PUK कोड पुन्हा प्रविष्ट करा. पुनःपुन्हा प्रयत्न करणे सिम कायमचे अक्षम करेल." + "योग्य PUK कोड पुन्हा एंटर करा. पुनःपुन्हा प्रयत्न करणे सिम कायमचे अक्षम करेल." "पिन कोड जुळत नाहीत" "खूप जास्त पॅटर्न प्रयत्न" "आपण आपला PIN %1$d वेळा चुकीच्या पद्धतीने टाइप केला आहे. \n\n%2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." - "आपण आपला संकेतशब्द %1$d वेळा चुकीच्या पद्धतीने टाइप केला आहे. \n\n%2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." + "आपण आपला पासवर्ड %1$d वेळा चुकीच्या पद्धतीने टाइप केला आहे. \n\n%2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "तुम्ही आपला अनलॉक पॅटर्न %1$d वेळा अयोग्यरितीने काढला. \n\n %2$d सेकंदांमध्ये पुन्हा प्रयत्न करा." "आपण टॅबलेट अनलॉक करण्याचा %1$d वेळा चुकीच्या पद्धतीने प्रयत्न केला आहे. आणखी %2$d अयशस्वी प्रयत्नांनंतर, हे टॅबलेट रीसेट केला जाईल, जे त्याचा सर्व डेटा हटवेल." "आपण फोन अनलॉक करण्याचा %1$d वेळा चुकीच्या पद्धतीने प्रयत्न केला आहे. आणखी %2$d अयशस्वी प्रयत्नांनंतर, हा फोन रीसेट केला जाईल, जे त्याचा सर्व डेटा हटवेल." @@ -114,10 +113,10 @@ "डिव्हाइस रीस्टार्ट झाल्यावर पासवर्ड आवश्यक आहे" "अतिरिक्त सुरक्षिततेसाठी पॅटर्न आवश्‍यक आहे" "अतिरिक्त सुरक्षिततेसाठी पिन आवश्‍यक आहे" - "अतिरिक्त सुरक्षिततेसाठी संकेतशब्द आवश्‍यक आहे" + "अतिरिक्त सुरक्षिततेसाठी पासवर्ड आवश्‍यक आहे" "तुम्ही प्रोफाईल स्विच करता तेव्‍हा पॅटर्न आवश्‍यक आहे" "आपण प्रोफाईल स्विच करता तेव्‍हा पिन आवश्‍यक आहे" - "आपण प्रोफाईल स्विच करता तेव्‍हा संकेतशब्द आवश्‍यक आहे" + "आपण प्रोफाईल स्विच करता तेव्‍हा पासवर्ड आवश्‍यक आहे" "प्रशासकाद्वारे लॉक केलेले डिव्हाइस" "डिव्हाइस मॅन्युअली लॉक केले होते" diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml index a68fa0a489b48fd26c62b7d8b1116ce4a29a207e..dcef8b1fc399c66830881b1dc62966cf4927eac5 100644 --- a/packages/SystemUI/res-keyguard/values-ms/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml @@ -29,8 +29,7 @@ "Taip kata laluan untuk membuka kunci" "Taip PIN untuk membuka kunci" "Kod PIN salah." - - + "Kad Tidak Sah." "Sudah dicas" "Mengecas" "Mengecas dengan cepat" diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml index 391b9e9507f801b0c4504f11c43cc9d84c42b14b..a84cf0067c1c721af70ad48da28ef3a8e994f842 100644 --- a/packages/SystemUI/res-keyguard/values-my/strings.xml +++ b/packages/SystemUI/res-keyguard/values-my/strings.xml @@ -29,8 +29,7 @@ "လော့ခ်ဖွင့်ရန် စကားဝှက်ကို ထည့်ပါ" "လော့ခ်ဖွင့်ရန် ပင်နံပါတ်ထည့်ပါ" "ပင်နံပါတ် မှားနေသည်။" - - + "ကဒ် မမှန်ကန်ပါ။" "အားသွင်းပြီးပါပြီ" "အားသွင်းနေပါသည်" "လျှင်မြန်စွာ အားသွင်းနေသည်" diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml index dbc54c2a3753eddf8158e1b095701382da6b29b7..8a2eefa5cc523e715b02b6354d919b7f06be6104 100644 --- a/packages/SystemUI/res-keyguard/values-nb/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml @@ -29,8 +29,7 @@ "Skriv inn passordet for å låse opp" "Skriv inn PIN-koden for å låse opp" "Feil PIN-kode." - - + "Ugyldig kort." "Oppladet" "Lader" "Lader raskt" diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml index 568059d4f3a08bf84c1040b1ede1125b18a5cd98..021d02e8c5b8784f7e830eaab302b043946256a6 100644 --- a/packages/SystemUI/res-keyguard/values-ne/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml @@ -29,8 +29,7 @@ "अनलक गर्न पासवर्ड टाइप गर्नुहोस्" "अनलक गर्न PIN कोड टाइप गर्नुहोस्" "PIN कोड गलत छ।" - - + "अमान्य कार्ड।" "चार्ज भयो" "चार्ज हुँदै" "छिटो चार्ज हुँदै" diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml index f0be94b42a2005ef247818ac8392ca747dfc957d..29e0d91956bedc4a5dae8c07c96c8642581406e1 100644 --- a/packages/SystemUI/res-keyguard/values-nl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml @@ -29,8 +29,7 @@ "Typ het wachtwoord om te ontgrendelen" "Typ pincode om te ontgrendelen" "Onjuiste pincode." - - + "Ongeldige kaart." "Opgeladen" "Opladen" "Snel opladen" diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml index b17eebd74aeb69858d08d3927260475e3f073025..ce0a00645b93387b3a875553b1cc83d1ac11f519 100644 --- a/packages/SystemUI/res-keyguard/values-pa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml @@ -29,8 +29,7 @@ "ਅਣਲਾਕ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਟਾਈਪ ਕਰੋ" "ਅਣਲਾਕ ਕਰਨ ਲਈ ਪਿੰਨ ਟਾਈਪ ਕਰੋ" "ਗਲਤ ਪਿੰਨ ਕੋਡ।" - - + "ਅਵੈਧ ਕਾਰਡ।" "ਚਾਰਜ ਹੋ ਗਿਆ" "ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" "ਤੇਜ਼ੀ ਨਾਲ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ" diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml index ee42dbbef04cbe3db82274e81c37b6d8f6ff8520..bca8cd178ca095b36fe03df90c0a90b834ee898d 100644 --- a/packages/SystemUI/res-keyguard/values-pl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml @@ -29,8 +29,7 @@ "Wpisz hasło, aby odblokować" "Wpisz kod PIN, aby odblokować" "Nieprawidłowy kod PIN." - - + "Nieprawidłowa karta." "Naładowana" "Ładowanie" "Szybkie ładowanie" diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml index 5bfa74e7191e01cce73c5690d12b2c5d109de8d7..e69e5232e26b44d3dda291b2ab4042da6abdaf15 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml @@ -29,8 +29,7 @@ "Introduza a palavra-passe para desbloquear" "Introduza o PIN para desbloquear" "Código PIN incorreto." - - + "Cartão inválido." "Carregada" "A carregar…" "A carregar rapidamente…" @@ -118,7 +117,7 @@ "É necessário um padrão quando muda de perfil" "É necessário um PIN quando muda de perfil" "É necessária uma palavra-passe quando muda de perfil" - "Dispositivo bloqueado pelo administrador" + "Dispositivo bloqueado pelo gestor" "O dispositivo foi bloqueado manualmente" O dispositivo não é desbloqueado há %d hora. Confirme o padrão. diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml index 01f150d3cedb379d934708fd5c1f2e93196340ee..0e6200dbb94eb919c060e05d05e0f8a9752623e8 100644 --- a/packages/SystemUI/res-keyguard/values-ro/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml @@ -29,8 +29,7 @@ "Introduceți parola pentru a debloca" "Introduceți codul PIN pentru a debloca" "Cod PIN incorect." - - + "Card nevalid" "Încărcată" "Se încarcă" "Se încarcă rapid" diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml index 47f85ae8890e822537a12233b09427ae10f0ade2..f3965c9e19e699fbdd25ff138f5ed08b48038e67 100644 --- a/packages/SystemUI/res-keyguard/values-ru/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml @@ -29,8 +29,7 @@ "Введите пароль" "Введите PIN-код для разблокировки" "Неверный PIN-код." - - + "Ошибка SIM-карты." "Батарея заряжена" "Зарядка батареи" "Быстрая зарядка" diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml index 5951e11a1e9a4a4d57d23f8a4adb552469610117..fbe21030fa6bdf8a00ac9c95c4be29d19f4c4ae3 100644 --- a/packages/SystemUI/res-keyguard/values-si/strings.xml +++ b/packages/SystemUI/res-keyguard/values-si/strings.xml @@ -29,8 +29,7 @@ "අගුළු ඇරීමට මුරපදය ටයිප් කරන්න" "අගුළු හැරීමට PIN එක ටයිප් කරන්න" "වැරදි PIN කේතයකි." - - + "වලංගු නොවන කාඩ්පත." "අරෝපිතයි" "ආරෝපණය වෙමින්" "වේගයෙන් ආරෝපණය වෙමින්" diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml index c290320c5e57a8198784d05b3fb77cf97188dfad..24f2a618d568079d5c732711d9ef367729e0f285 100644 --- a/packages/SystemUI/res-keyguard/values-sk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml @@ -29,8 +29,7 @@ "Zadajte heslo na odomknutie" "Zadajte kód PIN na odomknutie" "Nesprávny kód PIN." - - + "Neplatná karta." "Nabité" "Nabíja sa" "Rýchle nabíjanie" diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml index 7cd6eec2773a45c0e4d4ccd960531bc67c363a0c..27667c8ec5856d03a8b691085e3113b486fc4c31 100644 --- a/packages/SystemUI/res-keyguard/values-sl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml @@ -29,8 +29,7 @@ "Vnesite geslo za odklepanje" "Vnesite kodo PIN za odklepanje" "Napačna koda PIN." - - + "Neveljavna kartica" "Akumulator napolnjen" "Polnjenje" "Hitro polnjenje" diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml index 64bf9c0b1776b21369a7bc11f36efc75be44829b..b5556f095a5123b5d450157b6122a94cd3ddde00 100644 --- a/packages/SystemUI/res-keyguard/values-sq/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml @@ -29,8 +29,7 @@ "Shkruaj fjalëkalimin për të shkyçur" "Shkruaj kodin PIN për ta shkyçur" "Kodi PIN është i pasaktë." - - + "Karta e pavlefshme." "I ngarkuar" "Po ngarkon" "Po ngarkon me shpejtësi" diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml index 5b69c0cdc930d9b45c8d83835e66bc1e3d3cb575..e242c856ebbe5c8b4706675377e210878c826e3e 100644 --- a/packages/SystemUI/res-keyguard/values-sr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml @@ -29,8 +29,7 @@ "Унесите лозинку да бисте откључали" "Унесите PIN за откључавање" "PIN кôд је нетачан." - - + "Неважећа картица." "Напуњена је" "Пуни се" "Брзо се пуни" diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml index 9431e42513cf42db4c67fcd56ae735089bc50e9d..a6d9395bdc1605468ba01b94536d888eb6d4c1ff 100644 --- a/packages/SystemUI/res-keyguard/values-sv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml @@ -29,8 +29,7 @@ "Lås upp med lösenordet" "Lås upp med pinkoden" "Fel pinkod." - - + "Ogiltigt kort." "Laddat" "Laddas" "Laddas snabbt" diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml index 4209334d9683ec8b751ceabd548e9e2ee0351807..5307a53ef1af475639b27cd7e10cf07765b365d6 100644 --- a/packages/SystemUI/res-keyguard/values-sw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml @@ -29,8 +29,7 @@ "Andika nenosiri ili ufungue" "Andika PIN ili ufungue" "Nambari ya PIN si sahihi." - - + "Kadi si Sahihi." "Betri imejaa" "Inachaji" "Inachaji kwa kasi" diff --git a/packages/SystemUI/res-keyguard/values-sw320dp/dimens.xml b/packages/SystemUI/res-keyguard/values-sw320dp/dimens.xml index 2c209e2448166d991bab76dc2a2d917afab05aa5..38d2ecc3ddb5976c358d0d6355cd26169a0fd6c1 100644 --- a/packages/SystemUI/res-keyguard/values-sw320dp/dimens.xml +++ b/packages/SystemUI/res-keyguard/values-sw320dp/dimens.xml @@ -19,7 +19,8 @@ --> - + 345dp diff --git a/packages/SystemUI/res-keyguard/values-sw360dp/dimens.xml b/packages/SystemUI/res-keyguard/values-sw360dp/dimens.xml index 38658caeb4430703e004a480cb7700c47bb13789..90c4795d1e56bf9e1ff7ab09cedd443f8c23db17 100644 --- a/packages/SystemUI/res-keyguard/values-sw360dp/dimens.xml +++ b/packages/SystemUI/res-keyguard/values-sw360dp/dimens.xml @@ -20,6 +20,6 @@ + keyguard_security_view_top_margin) --> 400dp diff --git a/packages/SystemUI/res-keyguard/values-sw540dp-port/dimens.xml b/packages/SystemUI/res-keyguard/values-sw540dp-port/dimens.xml index de3106f9571bca1d521e832f78fbd454ca57b4a7..9ea04dc72ba93910dec69ea3859351f413763b3f 100644 --- a/packages/SystemUI/res-keyguard/values-sw540dp-port/dimens.xml +++ b/packages/SystemUI/res-keyguard/values-sw540dp-port/dimens.xml @@ -19,6 +19,6 @@ --> + (includes 2x keyguard_security_view_top_margin) --> 500dp diff --git a/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml b/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml index 9e788bec49cd3cf12f14f0d13df3d98cf3b427c3..4ae7cb97e1a2f8e10c683ee5796234faefa88411 100644 --- a/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml +++ b/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml @@ -23,7 +23,7 @@ 16sp - 12dp + 12dp 100dp diff --git a/packages/SystemUI/res-keyguard/values-sw720dp/dimens.xml b/packages/SystemUI/res-keyguard/values-sw720dp/dimens.xml index 7eb63d7b100a0ce590b2b4f2d3954aff12ec6195..9157822db960d80aa8530c273e2c8881e90e740f 100644 --- a/packages/SystemUI/res-keyguard/values-sw720dp/dimens.xml +++ b/packages/SystemUI/res-keyguard/values-sw720dp/dimens.xml @@ -18,10 +18,8 @@ --> - - 420dp - - + 420dp 100dp diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml index 157eabc274e88cdcea06f9de7fb08a12e9528885..a34e19652364c8a461f7fe69bbcc2485fbe12879 100644 --- a/packages/SystemUI/res-keyguard/values-ta/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml @@ -29,8 +29,7 @@ "திறக்க, கடவுச்சொல்லை உள்ளிடவும்" "திறக்க, பின்னை உள்ளிடவும்" "தவறான பின் குறியீடு." - - + "செல்லாத சிம் கார்டு." "சார்ஜ் செய்யப்பட்டது" "சார்ஜ் ஆகிறது" "வேகமாகச் சார்ஜாகிறது" diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml index f83ada8b6214de6d24f42adcc89e06d2ea279292..d97ff6c7614743e32264c2a80e6692205735fe5c 100644 --- a/packages/SystemUI/res-keyguard/values-te/strings.xml +++ b/packages/SystemUI/res-keyguard/values-te/strings.xml @@ -29,8 +29,7 @@ "అన్‌లాక్ చేయడానికి పాస్‌వర్డ్‌ను టైప్ చేయండి" "అన్‌లాక్ చేయడానికి పిన్ టైప్ చేయండి" "పిన్ కోడ్ తప్పు." - - + "చెల్లని కార్డ్." "ఛార్జ్ చేయబడింది" "ఛార్జ్ అవుతోంది" "వేగంగా ఛార్జ్ అవుతోంది" diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml index 24258920d90d183c2627d57dd00d52e5fd78c02c..bbad14e7fa3ea811794dd2a67afd5c3fc26a5a9c 100644 --- a/packages/SystemUI/res-keyguard/values-th/strings.xml +++ b/packages/SystemUI/res-keyguard/values-th/strings.xml @@ -29,8 +29,7 @@ "พิมพ์รหัสผ่านเพื่อปลดล็อก" "พิมพ์ PIN เพื่อปลดล็อก" "รหัส PIN ไม่ถูกต้อง" - - + "การ์ดไม่ถูกต้อง" "ชาร์จแล้ว" "กำลังชาร์จ" "กำลังชาร์จเร็ว" diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml index 9b806c66b3e31e8d8dbc7671382794f0da7110ca..7afb1bc87d7c172b678c3492045d17ad054a3477 100644 --- a/packages/SystemUI/res-keyguard/values-tl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml @@ -29,8 +29,7 @@ "I-type ang password upang i-unlock" "I-type ang PIN upang i-unlock" "Mali ang PIN code." - - + "Di-wasto ang Card." "Tapos nang mag-charge" "Nagcha-charge" "Mabilis na nagcha-charge" diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml index 034dce30e270182cf854b473c77a400cc0b871c2..074924552f00e16a29d7a15987d5adbd322cde54 100644 --- a/packages/SystemUI/res-keyguard/values-tr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml @@ -29,8 +29,7 @@ "Kilidi açmak için şifreyi yazın" "Kilidi açmak için PIN kodunu yazın" "Yanlış PIN kodu." - - + "Geçersiz Kart." "Ödeme alındı" "Şarj oluyor" "Hızlı şarj oluyor" diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml index 4e41e1b712b0bb0a956f6cf24db528ab8bec04f5..9aac87daaaefc84811737de0f69e375ee0f22c9e 100644 --- a/packages/SystemUI/res-keyguard/values-uk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml @@ -29,8 +29,7 @@ "Введіть пароль, щоб розблокувати" "Введіть PIN-код, щоб розблокувати" "Неправильний PIN-код." - - + "Недійсна картка." "Заряджено" "Заряджається" "Швидке заряджання" diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml index 9e408dda4a4a81898fba5e5b2634d0558722a0cb..782e15dde1a8b00f5aa7674f67daf7c38fe91b21 100644 --- a/packages/SystemUI/res-keyguard/values-ur/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml @@ -29,8 +29,7 @@ "غیر مقفل کرنے کیلئے پاس ورڈ ٹائپ کریں" "‏غیر مقفل کرنے کیلئے PIN ٹائپ کریں" "‏غلط PIN کوڈ۔" - - + "غلط کارڈ۔" "چارج ہوگئی" "چارج ہو رہا ہے" "تیزی سے چارج ہو رہا ہے" diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml index 901885cbcc4bfb229a49a49aca8b8d2667b72dca..9f1bdfe51f405c1a7efffc7d2c6b33616b322197 100644 --- a/packages/SystemUI/res-keyguard/values-uz/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml @@ -29,8 +29,7 @@ "Qulfni ochish uchun parolni kiriting" "Qulfni ochish uchun PIN kodni kiriting" "PIN kodi xato." - - + "SIM karta yaroqsiz." "Batareya quvvati to‘ldi" "Quvvatlash" "Tezkor quvvat olmoqda" diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml index a51be6251d74ef6d7ae1bd1a31cc44e4448412d5..b8da4c19441d41cd863969abbfc71035145d3895 100644 --- a/packages/SystemUI/res-keyguard/values-vi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml @@ -29,8 +29,7 @@ "Nhập mật khẩu để mở khóa" "Nhập mã PIN để mở khóa" "Mã PIN không chính xác." - - + "Thẻ không hợp lệ." "Đã sạc đầy" "Đang sạc" "Đang sạc nhanh" diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml index 1953b037c32e0bcc602458ca8977bd06e2ce3492..6d1901cc38cd2c680a3e2e66ea55ed0b8d90b1cd 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml @@ -29,8 +29,7 @@ "输入密码即可解锁" "输入 PIN 码即可解锁" "PIN 码有误。" - - + "SIM 卡无效。" "已充满电" "正在充电" "正在快速充电" diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml index 12567fc80b861c605dc983af0f2979fa44b0703f..353ce007e39d1d0777a7ed1bf9af44237d408b7f 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml @@ -29,8 +29,7 @@ "輸入密碼即可解鎖" "輸入 PIN 碼即可解鎖" "PIN 碼不正確。" - - + "SIM 卡無效。" "已完成充電" "正在充電" "正在快速充電" diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml index 7df7373ab07e66a868c30440348ce837bacabf4e..47b4fd694b7d2205d04611888ffd343d3d103424 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml @@ -29,8 +29,7 @@ "輸入密碼即可解鎖" "輸入 PIN 碼即可解鎖" "PIN 碼不正確。" - - + "卡片無效。" "充電完成" "充電中" "快速充電中" diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml index 220830606b1aa43982eacd8df6188f2574b78d94..2f30aef66acfee2a6e932ecceeaa3eb218d9353c 100644 --- a/packages/SystemUI/res-keyguard/values-zu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml @@ -29,8 +29,7 @@ "Bhala iphasiwedi ukuze kuvuleke" "Faka i-PIN ukuvula" "Ikhodi ye-PIN engalungile!" - - + "Ikhadi elingavumelekile." "Kushajiwe" "Iyashaja" "Ishaja ngokushesha" diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml index a721dd0609dc87bbba9df58cfe191ea4811cac6a..bcac07295ccea6b8bfd0a05867605082a01b0c6f 100644 --- a/packages/SystemUI/res-keyguard/values/dimens.xml +++ b/packages/SystemUI/res-keyguard/values/dimens.xml @@ -22,17 +22,20 @@ 14sp - - 320dp + + 420dp - + 400dp - + 450dp - 8dp + 8dp + 36dp diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_left_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_left_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6054c4d34222b83277348f0ff730fabb1c483c7 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_left_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_mask_1_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_mask_1_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..282170c1fae4bfca7cf89adf9014fdcd72eec71b --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_mask_1_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..b59c66419080536aa682e09a72c0bb698a6fd035 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_position_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_position_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..60d23966ed123ac6f5b69a02efbd093fdb4cff52 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_3_position_animation.xml @@ -0,0 +1,10 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..ef442e9ef13a401584652bb6fc10da06f5d3f6ef --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_position_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_position_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..97782be4f14571585e788ffafca2d5c1675d037e --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_rectangle_path_4_position_animation.xml @@ -0,0 +1,10 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_right_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_right_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..d6054c4d34222b83277348f0ff730fabb1c483c7 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_right_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_stick_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_stick_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..573205ffd2c8add60bf8062ec993e84e42751629 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_stick_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_stickito_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_stickito_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b038b930c468a22b68dda470f6b353db8b91586 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_stickito_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_disable_whole_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_disable_whole_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..562985a89ba99907252c63d55cc700e585258657 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_disable_whole_animation.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_cross_1.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_cross_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c7e75118f5cb581c18f6fed15ad69948a5756be --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_cross_1.xml @@ -0,0 +1,40 @@ + + + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_ic_signal_briefcase.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_ic_signal_briefcase.xml new file mode 100644 index 0000000000000000000000000000000000000000..c699fe280f66c786cb9e383f5e65ca5719264fb9 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_ic_signal_briefcase.xml @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_mask.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_mask.xml new file mode 100644 index 0000000000000000000000000000000000000000..5595e5c7629709d8caf6e6c1f544ef5de2043046 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_animation_mask.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_left_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_left_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..4614bfc849e1630921b7d4a9c2044121f0223e52 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_left_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_mask_1_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_mask_1_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..f5cfcf91b77794147040191e8609903c340e0d97 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_mask_1_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..0b74b3a4fdc5e3def14cedbc89911c4db03adb20 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_position_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_position_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba10224ab4db9ab756b6592402d0e8d6fd61d296 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_3_position_animation.xml @@ -0,0 +1,10 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..395bbf4802dd96719c80850f0c49ea40f07cd82e --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_position_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_position_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..0115759ab0d828c4ea721225fae3aeeea853cbed --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_rectangle_path_4_position_animation.xml @@ -0,0 +1,10 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_right_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_right_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..4614bfc849e1630921b7d4a9c2044121f0223e52 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_right_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_stick_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_stick_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b182be014466fa1681e35505943325e82d077b4 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_stick_animation.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_stickito_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_stickito_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..828f7a289ec63478f5b57a82f602e2d29b57680d --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_stickito_animation.xml @@ -0,0 +1,11 @@ + + + + diff --git a/packages/SystemUI/res/anim/ic_signal_workmode_enable_whole_animation.xml b/packages/SystemUI/res/anim/ic_signal_workmode_enable_whole_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..89ab5808b4ab5c58cfd802bb6dc961afcfeee217 --- /dev/null +++ b/packages/SystemUI/res/anim/ic_signal_workmode_enable_whole_animation.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/color/qs_background_dark.xml b/packages/SystemUI/res/color/qs_background_dark.xml index 62e49597462365972268c198e3cd5fc8aead8123..c19fa0803245f1e5ab88123b1a72ccd8deb8cd0c 100644 --- a/packages/SystemUI/res/color/qs_background_dark.xml +++ b/packages/SystemUI/res/color/qs_background_dark.xml @@ -15,6 +15,6 @@ --> - diff --git a/packages/SystemUI/res/color/qs_detail_progress_track.xml b/packages/SystemUI/res/color/qs_detail_progress_track.xml index c56382e6047f67f1f9f8215dbb7e9431819175eb..d86119fc01fef82a0bea469088c291ccd3dc95a3 100644 --- a/packages/SystemUI/res/color/qs_detail_progress_track.xml +++ b/packages/SystemUI/res/color/qs_detail_progress_track.xml @@ -16,5 +16,5 @@ - + diff --git a/packages/SystemUI/res/drawable/ic_qs_bluetooth_connected.xml b/packages/SystemUI/res/drawable/ic_qs_bluetooth_connected.xml index 3eb81f84dc2a0f7681b7734686316075b77ed004..b673e4f3b081e36ebb5d7b78c33ceb047db3e754 100644 --- a/packages/SystemUI/res/drawable/ic_qs_bluetooth_connected.xml +++ b/packages/SystemUI/res/drawable/ic_qs_bluetooth_connected.xml @@ -14,8 +14,8 @@ Copyright (C) 2017 The Android Open Source Project limitations under the License. --> diff --git a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml index 69869fe9c9bed7bf1618ed0b12b971f27d3a6336..5dcd9f78301bf13ae2d5e4483a6813ed92c148d9 100644 --- a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml +++ b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml @@ -1,5 +1,5 @@ - - + android:viewportWidth="42" + android:height="42dp" + android:viewportHeight="42" > + android:name="suitcase" + android:translateX="21" + android:translateY="36.9375" + android:scaleX="0.1" + android:scaleY="0.1" > + android:name="suitcase_pivot" + android:translateY="-158" > + android:name="mask_1" + android:pathData="M 366.5,-269.5 c 0.0,0.0 -578.0,2.0 -578.0,2.0 c 0.0,0.0 65.7498321533,68.2501220703 65.7498321533,68.2501220703 c 0.0,0.0 -20.7500457764,20.7500610352 -20.7500457764,20.7500610352 c 0.0,0.0 -65.749786377,-68.2501983643 -65.749786377,-68.2501983643 c 0.0,0.0 -7.25,539.250015259 -7.25,539.250015259 c 0.0,0.0 606.0,0.0 606.0,0.0 c 0.0,0.0 0.0,-562.0 0.0,-562.0 Z" /> + android:name="whole" + android:translateX="-1.11523" + android:translateY="32.0918" > + android:strokeWidth="65" + android:pathData="M 0.0,-66.5 l 0.0,0.0 c 36.7269358617,0.0 66.5,29.7730641383 66.5,66.5 l 0.0,0.0 c 0.0,36.7269358617 -29.7730641383,66.5 -66.5,66.5 l 0.0,0.0 c -36.7269358617,0.0 -66.5,-29.7730641383 -66.5,-66.5 l 0.0,0.0 c 0.0,-36.7269358617 29.7730641383,-66.5 66.5,-66.5 Z" /> - + android:name="handle" + android:translateY="-100" > - + android:name="rectangle_path_2" + android:strokeColor="#FFFFFFFF" + android:strokeWidth="35" + android:pathData="M -34.0,-50.0 l 68.0,0.0 c 8.8365559968,0.0 16.0,7.1634440032 16.0,16.0 l 0.0,68.0 c 0.0,8.8365559968 -7.1634440032,16.0 -16.0,16.0 l -68.0,0.0 c -8.8365559968,0.0 -16.0,-7.1634440032 -16.0,-16.0 l 0.0,-68.0 c 0.0,-8.8365559968 7.1634440032,-16.0 16.0,-16.0 Z" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_signal_workmode_disable_animation.xml b/packages/SystemUI/res/drawable/ic_signal_workmode_disable_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a2bd548f61d93d08ba475648457f83673f42de2 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_signal_workmode_disable_animation.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_signal_workmode_enable.xml b/packages/SystemUI/res/drawable/ic_signal_workmode_enable.xml index f962594803408b294578d9db34065e8c9d026c21..2d4f0b5d162fc09747999eeb9509f2f99246783b 100644 --- a/packages/SystemUI/res/drawable/ic_signal_workmode_enable.xml +++ b/packages/SystemUI/res/drawable/ic_signal_workmode_enable.xml @@ -1,62 +1,127 @@ - - + android:viewportWidth="42" + android:height="42dp" + android:viewportHeight="42" > + android:name="suitcase" + android:translateX="21" + android:translateY="36.9375" + android:scaleX="0.1" + android:scaleY="0.1" > + android:name="suitcase_pivot" + android:translateY="-158" > + android:name="mask_1" + android:pathData="M 366.5,-269.5 c 0.0,0.0 -578.0,2.0 -578.0,2.0 c 0.0,0.0 480.0,480.0 480.0,480.0 c 0.0,0.0 -20.7500915527,20.75 -20.7500915527,20.75 c 0.0,0.0 -479.999908447,-480.000015259 -479.999908447,-480.000015259 c 0.0,0.0 -7.25,539.250015259 -7.25,539.250015259 c 0.0,0.0 606.0,0.0 606.0,0.0 c 0.0,0.0 0.0,-562.0 0.0,-562.0 Z" /> + android:name="whole" + android:translateX="-1.11523" + android:translateY="32.0918" + android:scaleX="0" + android:scaleY="0" > + android:strokeWidth="65" + android:pathData="M 0.0,-66.5 l 0.0,0.0 c 36.7269358617,0.0 66.5,29.7730641383 66.5,66.5 l 0.0,0.0 c 0.0,36.7269358617 -29.7730641383,66.5 -66.5,66.5 l 0.0,0.0 c -36.7269358617,0.0 -66.5,-29.7730641383 -66.5,-66.5 l 0.0,0.0 c 0.0,-36.7269358617 29.7730641383,-66.5 66.5,-66.5 Z" /> - + android:name="handle" + android:translateY="-100" > - + android:name="rectangle_path_2" + android:strokeColor="#FFFFFFFF" + android:strokeWidth="35" + android:pathData="M -34.0,-50.0 l 68.0,0.0 c 8.8365559968,0.0 16.0,7.1634440032 16.0,16.0 l 0.0,68.0 c 0.0,8.8365559968 -7.1634440032,16.0 -16.0,16.0 l -68.0,0.0 c -8.8365559968,0.0 -16.0,-7.1634440032 -16.0,-16.0 l 0.0,-68.0 c 0.0,-8.8365559968 7.1634440032,-16.0 16.0,-16.0 Z" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/ic_signal_workmode_enable_animation.xml b/packages/SystemUI/res/drawable/ic_signal_workmode_enable_animation.xml new file mode 100644 index 0000000000000000000000000000000000000000..c98f800d70c126834e3d64e244e39515593d39db --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_signal_workmode_enable_animation.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/recents_low_ram_stack_button_background.xml b/packages/SystemUI/res/drawable/recents_low_ram_stack_button_background.xml new file mode 100644 index 0000000000000000000000000000000000000000..bff97f6f8fe4e0e9089b4a6d08e52a8b8e92e5ea --- /dev/null +++ b/packages/SystemUI/res/drawable/recents_low_ram_stack_button_background.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/packages/SystemUI/res/drawable/stat_sys_managed_profile_disable_animation.xml b/packages/SystemUI/res/drawable/stat_sys_managed_profile_disable_animation.xml deleted file mode 100644 index 1e41a31ae130ff9a67151943cdec26e09f92f80a..0000000000000000000000000000000000000000 --- a/packages/SystemUI/res/drawable/stat_sys_managed_profile_disable_animation.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - diff --git a/packages/SystemUI/res/drawable/stat_sys_managed_profile_enable_animation.xml b/packages/SystemUI/res/drawable/stat_sys_managed_profile_enable_animation.xml deleted file mode 100644 index d67c89ac3865a5c7a80d95f000c306fe2dd8d60e..0000000000000000000000000000000000000000 --- a/packages/SystemUI/res/drawable/stat_sys_managed_profile_enable_animation.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - diff --git a/packages/SystemUI/res/drawable/stat_sys_managed_profile_status.xml b/packages/SystemUI/res/drawable/stat_sys_managed_profile_status.xml index d73e2a40007ec6e840840b6f295888c3bb05d9ab..e38b4825c9fd75daf16a6b2d51927ef4e55dbdb4 100644 --- a/packages/SystemUI/res/drawable/stat_sys_managed_profile_status.xml +++ b/packages/SystemUI/res/drawable/stat_sys_managed_profile_status.xml @@ -1,42 +1,12 @@ - - + android:width="23dp" + android:height="18dp" + android:viewportWidth="23.0" + android:viewportHeight="18.0"> + - - + android:pathData="M17.32,5.06h-2.91V3.6c0,-0.81 -0.65,-1.46 -1.46,-1.46h-2.91c-0.81,0 -1.46,0.65 -1.46,1.46v1.46H5.68c-0.81,0 -1.45,0.65 -1.45,1.46l-0.01,8c0,0.81 0.65,1.46 1.46,1.46h11.64c0.81,0 1.46,-0.65 1.46,-1.46v-8C18.78,5.7 18.13,5.06 17.32,5.06zM11.5,11.6c-0.8,0 -1.46,-0.65 -1.46,-1.46c0,-0.8 0.65,-1.46 1.46,-1.46s1.46,0.65 1.46,1.46C12.96,10.95 12.3,11.6 11.5,11.6zM12.96,5.06h-2.91V3.6h2.91V5.06z" + android:fillColor="#FF000000"/> diff --git a/packages/SystemUI/res/drawable/stat_sys_managed_profile_status_off.xml b/packages/SystemUI/res/drawable/stat_sys_managed_profile_status_off.xml index 35602b61b89f085d682e49e079c78f0e68747593..1dedd5d4daefb6acc0f1a6eaa45e1d54a725dbb1 100644 --- a/packages/SystemUI/res/drawable/stat_sys_managed_profile_status_off.xml +++ b/packages/SystemUI/res/drawable/stat_sys_managed_profile_status_off.xml @@ -1,5 +1,5 @@ - - - - - - + android:width="23dp" + android:height="18dp" + android:viewportWidth="23.0" + android:viewportHeight="18.0"> - \ No newline at end of file + android:pathData="M19.4,16.6l-1.1,-1.1L8,5L5.1,2.2L4.2,3.1l2,2H5.7c-0.8,0 -1.4,0.6 -1.4,1.4v8c0,0.8 0.6,1.4 1.4,1.4h11.4l1.5,1.5L19.4,16.6zM18.7,6.5c0,-0.8 -0.6,-1.4 -1.4,-1.4h-2.9V3.6c0,-0.8 -0.6,-1.4 -1.4,-1.4h-3C9.2,2.1 8.6,2.8 8.6,3.6v0.2L18.7,14C18.7,14 18.7,6.5 18.7,6.5zM12.9,5.1H10V3.6h2.9V5.1z"/> + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_0.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_0.xml new file mode 100644 index 0000000000000000000000000000000000000000..5009c6b7ac1083ef5420535825923db8d6a86f4d --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_0.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_1.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..678b90b24914f9166f86cb22115c5389999a316c --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_1.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_2.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_2.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c6df6078aaa6f75a9451297dd34c18f0d18c363 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_2.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_3.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_3.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1eec483cdf4b4664c20eaf4362c9eb6845a3435 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_3.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_4.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_4.xml new file mode 100644 index 0000000000000000000000000000000000000000..17ff65aaa15589efb333a65772ffbdd238c25c4c --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_4.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_5.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_5.xml new file mode 100644 index 0000000000000000000000000000000000000000..aee48dc2637a825bc31c02650562a6e31d9caab6 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_animation_interpolator_5.xml @@ -0,0 +1,4 @@ + + diff --git a/tests/MusicServiceDemo/res/values/colors.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_cross_1_pathdata_interpolator.xml similarity index 71% rename from tests/MusicServiceDemo/res/values/colors.xml rename to packages/SystemUI/res/interpolator/ic_signal_workmode_disable_cross_1_pathdata_interpolator.xml index 44dd05d7377426c63d7d0da064fafedef1ec7819..66cfaffd993644b3dd3e3bda035bd1f94b47a667 100644 --- a/tests/MusicServiceDemo/res/values/colors.xml +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_disable_cross_1_pathdata_interpolator.xml @@ -1,5 +1,6 @@ - - - - #ffffff00 - #ff00ff00 - #ff0000ff - #ffff0000 - + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_0.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_0.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a5fde9fd49ba3b71810335e1a295f55dbacb6f5 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_0.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_1.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f35e5d01470b5f1787e0814a274643ced7f25df --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_1.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_2.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_2.xml new file mode 100644 index 0000000000000000000000000000000000000000..626f9ef9788199e744b0a90d1ce6729ab36e36f7 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_2.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_3.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_3.xml new file mode 100644 index 0000000000000000000000000000000000000000..17ff65aaa15589efb333a65772ffbdd238c25c4c --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_3.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_4.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_4.xml new file mode 100644 index 0000000000000000000000000000000000000000..96bdb484c2f90e2b431c3372d5ef0ec366c5a69a --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_4.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_5.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_5.xml new file mode 100644 index 0000000000000000000000000000000000000000..a91610d617f242812b5c13334de8ef12977fc570 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_animation_interpolator_5.xml @@ -0,0 +1,4 @@ + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_cross_1_pathdata_interpolator.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_cross_1_pathdata_interpolator.xml new file mode 100644 index 0000000000000000000000000000000000000000..a0118d7079515c84585142f638333e2a873e64ec --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_cross_1_pathdata_interpolator.xml @@ -0,0 +1,18 @@ + + + diff --git a/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_mask_pathdata_interpolator.xml b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_mask_pathdata_interpolator.xml new file mode 100644 index 0000000000000000000000000000000000000000..1820bab9e469e345d2e9b65f626314d8714ce484 --- /dev/null +++ b/packages/SystemUI/res/interpolator/ic_signal_workmode_enable_mask_pathdata_interpolator.xml @@ -0,0 +1,18 @@ + + + diff --git a/packages/SystemUI/res/layout/battery_percentage_view.xml b/packages/SystemUI/res/layout/battery_percentage_view.xml index deb494fdefbcb3d5ae8de673d1a79f667972a301..59c0957d98cbf3b14535163be044330221478fe5 100644 --- a/packages/SystemUI/res/layout/battery_percentage_view.xml +++ b/packages/SystemUI/res/layout/battery_percentage_view.xml @@ -26,4 +26,5 @@ android:textColor="?android:attr/textColorPrimary" android:gravity="center_vertical|start" android:paddingEnd="@dimen/battery_level_padding_start" + android:importantForAccessibility="no" /> diff --git a/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml b/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml index bc290129f5459e75ee9edaff7d5cdc72d1526ca4..2f16516a6fea68111cb0a78108e9663ac3e557c0 100644 --- a/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml +++ b/packages/SystemUI/res/layout/car_fullscreen_user_pod.xml @@ -20,10 +20,7 @@ android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/car_fullscreen_user_pod_margin_side" - android:layout_marginRight="@dimen/car_fullscreen_user_pod_margin_side" - android:gravity="center" - android:layout_weight="1" > + android:gravity="center" > diff --git a/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml b/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml index 8c556801cf9b6f42a365aa93e4c04ce593347830..99d010f2ac2b67d796fe2f72e643391c4d73d258 100644 --- a/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml +++ b/packages/SystemUI/res/layout/car_fullscreen_user_pod_container.xml @@ -18,7 +18,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="center"> + android:gravity="center" + android:layout_gravity="center" > diff --git a/packages/SystemUI/res/layout/car_fullscreen_user_switcher.xml b/packages/SystemUI/res/layout/car_fullscreen_user_switcher.xml index c82eddc3a83a45807bdc5369feb03e20709806e9..257e2814bb659d62a77861a04b10b50ee7ccec56 100644 --- a/packages/SystemUI/res/layout/car_fullscreen_user_switcher.xml +++ b/packages/SystemUI/res/layout/car_fullscreen_user_switcher.xml @@ -35,6 +35,10 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + + + + + + + + + + + diff --git a/packages/SystemUI/res/layout/preference_widget_switch.xml b/packages/SystemUI/res/layout/car_qs_panel.xml similarity index 52% rename from packages/SystemUI/res/layout/preference_widget_switch.xml rename to packages/SystemUI/res/layout/car_qs_panel.xml index 49610def599b922d46b4092ceaca3a0714964286..4cb0fd5fecfbe68efc10d1ac36dc8d894ebd3d0e 100644 --- a/packages/SystemUI/res/layout/preference_widget_switch.xml +++ b/packages/SystemUI/res/layout/car_qs_panel.xml @@ -1,6 +1,5 @@ - - - - + android:background="@color/car_qs_background_primary" + android:orientation="vertical" + android:elevation="4dp" + android:theme="@android:style/Theme"> - + + - - + android:layout_marginLeft="@dimen/car_margin" + android:layout_marginRight="@dimen/car_margin" /> diff --git a/packages/SystemUI/res/layout/car_status_bar_header.xml b/packages/SystemUI/res/layout/car_status_bar_header.xml new file mode 100644 index 0000000000000000000000000000000000000000..158907e035415f0d8b61d819250d98c397737b50 --- /dev/null +++ b/packages/SystemUI/res/layout/car_status_bar_header.xml @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/packages/SystemUI/res/layout/global_actions_item.xml b/packages/SystemUI/res/layout/global_actions_item.xml index e3a488c20c3f739aafd88be2d02720c6a1ba9a11..0d735e7fff33c4aaea4b3e88c7a2f99ba8f063e6 100644 --- a/packages/SystemUI/res/layout/global_actions_item.xml +++ b/packages/SystemUI/res/layout/global_actions_item.xml @@ -25,8 +25,8 @@ android:minHeight="92dp" android:gravity="center" android:orientation="vertical" - android:paddingEnd="8dip" - android:paddingStart="8dip"> + android:paddingEnd="0dip" + android:paddingStart="0dip"> + diff --git a/packages/SystemUI/res/layout/navigation_layout.xml b/packages/SystemUI/res/layout/navigation_layout.xml index 53f5dfe1acbeb5e97d59e98c537ad44325b087c8..3e6079451c749128c445e51cfa186301e3fe0fc4 100644 --- a/packages/SystemUI/res/layout/navigation_layout.xml +++ b/packages/SystemUI/res/layout/navigation_layout.xml @@ -21,8 +21,8 @@ android:layout_height="match_parent" android:layout_marginStart="@dimen/rounded_corner_content_padding" android:layout_marginEnd="@dimen/rounded_corner_content_padding" - android:paddingStart="8dp" - android:paddingEnd="8dp"> + android:paddingStart="@dimen/nav_content_padding" + android:paddingEnd="@dimen/nav_content_padding"> + android:layout_marginEnd="2dp" + android:ellipsize="end" + android:maxLines="1"/> diff --git a/packages/SystemUI/res/layout/qs_detail_item.xml b/packages/SystemUI/res/layout/qs_detail_item.xml index 97e82ffb92f4c35b08dda532a012882d4be177b4..0844bb46d53f1eca063cf698033f7b51d5d56ec7 100644 --- a/packages/SystemUI/res/layout/qs_detail_item.xml +++ b/packages/SystemUI/res/layout/qs_detail_item.xml @@ -26,7 +26,7 @@ - - + - + diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml index 87101e4b3d14c0169943ba6af9fa74a5230dd791..5541f3de8e7c87f9b8e4b94b2006ee6b0c801161 100644 --- a/packages/SystemUI/res/layout/qs_panel.xml +++ b/packages/SystemUI/res/layout/qs_panel.xml @@ -32,8 +32,7 @@ - + diff --git a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml index f8b7b8a36c5f43f30fa56c48b3712985c176ac61..e8b418cd902b2cbd54174e55a5fd1c3da65bb01b 100644 --- a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml +++ b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml @@ -18,7 +18,6 @@ - - - - - - - - - + + + + + + + + + + + diff --git a/packages/SystemUI/res/layout/recents_low_ram_stack_action_button.xml b/packages/SystemUI/res/layout/recents_low_ram_stack_action_button.xml new file mode 100644 index 0000000000000000000000000000000000000000..dca891103c4e187461208c59ac6f40bb903434cd --- /dev/null +++ b/packages/SystemUI/res/layout/recents_low_ram_stack_action_button.xml @@ -0,0 +1,34 @@ + + + diff --git a/packages/SystemUI/res/layout/volume_zen_footer.xml b/packages/SystemUI/res/layout/volume_zen_footer.xml index 7ffcb1efb7b38878d8b763502862a107708f68af..df79c5ff5ba4706aac896daab006f4ee374b0624 100644 --- a/packages/SystemUI/res/layout/volume_zen_footer.xml +++ b/packages/SystemUI/res/layout/volume_zen_footer.xml @@ -25,18 +25,15 @@ android:id="@+id/zen_embedded_divider" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_marginBottom="12dp" android:layout_marginTop="8dp" android:background="@color/qs_tile_divider" /> - diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 131214d20750206c2ad5975656a76b355375c4fd..8296a1c50eea06cbbc97f2c661bafe4b43a37cf3 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -64,7 +64,7 @@ "Die rekenaar se RSA-sleutel-vingerafdruk is:\n%1$s" "Laat altyd toe van hierdie rekenaar af" "USB-ontfouting word nie toegelaat nie" - "Die gebruiker wat tans by hierdie toestel aangemeld is, kan nie USB-ontfouting aanskakel nie. Skakel asseblief na \'n administrasiegebruiker oor om hierdie kenmerk te gebruik." + "Die gebruiker wat tans by hierdie toestel aangemeld is, kan nie USB-ontfouting aanskakel nie. Skakel na die primêre gebruiker toe oor om hierdie kenmerk te gebruik." "Zoem om skerm te vul" "Strek om skerm te vul" "Stoor tans skermkiekie..." @@ -353,10 +353,10 @@ "Soek" "Gly op vir %s." "Gly links vir %s." - "Jy sal nie deur geluide en vibrasies gepla word nie, behalwe deur wekkers, herinneringe, geleenthede en bellers wat jy spesifiseer. Jy sal steeds enigiets hoor wat jy kies om te speel, insluitend musiek, video\'s en speletjies." - "Jy sal nie deur geluide en vibrasies gepla word nie, behalwe deur wekkers. Jy sal steeds enigiets hoor wat jy kies om te speel, insluitend musiek, video\'s en speletjies." + "Jy sal nie deur geluide en vibrasies gepla word nie, behalwe deur wekkers, herinneringe, geleenthede en bellers wat jy spesifiseer. Jy sal steeds enigiets hoor wat jy kies om te speel, insluitend musiek, video\'s en speletjies." + "Jy sal nie deur geluide en vibrasies gepla word nie, behalwe deur wekkers. Jy sal steeds enigiets hoor wat jy kies om te speel, insluitend musiek, video\'s en speletjies." "Pasmaak" - "Dit blokkeer ALLE klanke en vibrasies, insluitend van wekkers, musiek, video\'s en speletjies af. Jy sal steeds foonoproepe kan maak." + "Dit blokkeer ALLE klanke en vibrasies, insluitend van wekkers, musiek, video\'s en speletjies af. Jy sal steeds foonoproepe kan maak." "Dit blokkeer ALLE klanke en vibrasies, insluitend van wekkers, musiek, video\'s en speletjies af." "+%d" "Minder dringende kennisgewings hieronder" @@ -456,7 +456,7 @@ "Kom meer te wete" "Jy is gekoppel aan %1$s, wat jou netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor." " " - "Maak VPN-instellings oop" + "Maak VPN-instellings oop" " " "Maak vertroude eiebewyse oop" "Jou administrateur het netwerkloglêers aangeskakel wat verkeer op jou toestel monitor.\n\nKontak jou administrateur vir meer inligting." @@ -556,8 +556,8 @@ "Hierdie program het nie kennisgewingkategorieë nie" "Kennisgewings van hierdie program af kan nie afgeskakel word nie" - 1 uit %d kennisgewingkategorieë van hierdie program - 1 uit %d kennisgewingkategorie van hierdie program + 1 uit %s kennisgewingkategorieë van hierdie program + 1 uit %s kennisgewingkategorie van hierdie program "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minuut "Batterygebruik" - "Batterybespaarder is nie beskikbaar wanneer gelaai word nie" - "Batterybespaarder" + "Batterybespaarder is nie beskikbaar wanneer gelaai word nie" + "Batterybespaarder" "Verminder werkverrigting en agtergronddata" "Knoppie %1$s" "Home" @@ -726,9 +726,9 @@ "Minimeer" "Maak toe" "Sleep af om toe te maak" - "Prent op prent-kieslys" + "Kieslys" "%s is in beeld-in-beeld" - "As jy nie wil hê dat %s hierdie kenmerk gebruik nie, tik om instellings oop te maak en skakel dit af." + "As jy nie wil hê dat %s hierdie kenmerk moet gebruik nie, tik om instellings oop te maak en skakel dit af." "Speel" "Laat wag" "Slaan oor na volgende" @@ -754,6 +754,7 @@ "Kieslys" "%1$s-program" "Opletberigte" + "Battery" "Skermkiekies" "Algemene boodskappe" "Berging" @@ -774,4 +775,5 @@ "Programme wat op die agtergrond loop" "Tik vir besonderhede oor battery- en datagebruik" "Skakel mobiele data af?" + "Instellings kan nie jou antwoord verifieer nie omdat \'n program \'n toestemmingversoek verberg." diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 4e5357dcb96a3f85adbc896db23758bbfb4105f2..324c9ff3b22385d72a4dab0b841883707b303d2e 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -64,7 +64,7 @@ "የኮምፒውተሩ RSA ቁልፍ ጣት አሻራ ይሄ ነው፦\n%1$s" "ሁልጊዜ ከዚህ ኮምፒውተር ፍቀድ" "የዩኤስቢ እርማት አይፈቀድም" - "አሁን ወደዚህ መሣሪያ የገባው ተጠቃሚ የዩ ኤስ ቢ እርማትን ማብራት አይችልም። ይህን ባህሪ ለመጠቀም እባክዎ ወደ የአስተዳዳሪ ተጠቃሚ ይቀይሩ።" + "አሁን ወደዚህ መሣሪያ የገባው ተጠቃሚ የዩኤስቢ እርማትን ማብራት አይችልም። ይህን ባህሪ ለመጠቀም ወደ ዋና ተጠቃሚ ይቀይሩ።" "ማያ እንዲሞላ አጉላ" "ማያ ለመሙለት ሳብ" "ቅጽበታዊ ገጽ እይታ በማስቀመጥ ላይ..." @@ -353,10 +353,10 @@ "ፍለጋ" "ለ%s ወደ ላይ አንሸራትት።" "ለ%s ወደ ግራ አንሸራትት።" - "እርስዎ ከወሰንዋቸው ማንቂያዎች፣ አስታዋሾች፣ ክስተቶች እና ደዋዮች በስተቀር፣ በድምጾች እና ንዝረቶች አይረበሹም። ሙዚቃ፣ ቪዲዮዎች እና ጨዋታዎች ጨምሮ ለመጫወት የሚመርጡትን ማንኛውም ነገር አሁንም ይሰማሉ።" - "ከማንቂያዎች በስተቀር፣ በድምጾች እና ንዝረቶች አይረበሹም። ሙዚቃ፣ ቪዲዮዎች እና ጨዋታዎች ጨምሮ ለመጫወት የሚመርጡትን ማንኛውም ነገር አሁንም ይሰማሉ።" + "እርስዎ ከወሰንዋቸው ማንቂያዎች፣ አስታዋሾች፣ ክስተቶች እና ደዋዮች በስተቀር፣ በድምጾች እና ንዝረቶች አይረበሹም። ሙዚቃ፣ ቪዲዮዎች እና ጨዋታዎች ጨምሮ ለመጫወት የሚመርጡትን ማንኛውም ነገር አሁንም ይሰማሉ።" + "ከማንቂያዎች በስተቀር፣ በድምጾች እና ንዝረቶች አይረበሹም። ሙዚቃ፣ ቪዲዮዎች እና ጨዋታዎች ጨምሮ ለመጫወት የሚመርጡትን ማንኛውም ነገር አሁንም ይሰማሉ።" "አብጅ" - "ይሄ ማንቂያዎችን፣ ሙዚቃን፣ ቪዲዮዎችን እና ጨዋታዎችንም ጨምሮ ሁሉንም ድምጾች እና ንዝረቶች ያጠፋል። አሁንም የድምጽ ጥሪዎችን ማድረግ ይችላሉ።" + "ይሄ ማንቂያዎችን፣ ሙዚቃን፣ ቪዲዮዎችን እና ጨዋታዎችንም ጨምሮ ሁሉንም ድምጾች እና ንዝረቶች ያጠፋል። አሁንም የድምጽ ጥሪዎችን ማድረግ ይችላሉ።" "ይሄ ማንቂያዎችን፣ ሙዚቃን፣ ቪዲዮዎችን እና ጨዋታዎችንም ጨምሮ ሁሉንም ድምጾች እና ንዝረቶች ያጠፋል።" "+%d" "በጣም አስቸካይ ያልሆኑ ማሳወቂያዎች ከታች" @@ -456,7 +456,7 @@ "የበለጠ ለመረዳት" "እርስዎ ኢሜይሎችን፣ መተግበሪያዎችን እና ድር ጣቢያዎችንም ጨምሮ የግል የአውታረ መረብ እንቅስቃሴዎን መከታተል ከሚችለው %1$s ጋር ተገናኝተዋል።" " " - "የVPN ቅንብሮችን ይክፈቱ" + "የቪፒኤን ቅንብሮችን ይክፈቱ" " " "የታመኑ ምስክርነቶችን ክፈት" "የእርስዎ አስተዳዳሪ የአውታረ መረብ ምዝግብ ማስታወሻ መያዝን አብርተዋል፣ ይህም በመሣሪያዎ ላይ ያለውን ትራፊክ ይከታተላል።\n\nተጨማሪ መረጃ ለማግኘት አስተዳዳሪዎን ያነጋግሩ።" @@ -556,8 +556,8 @@ "ይህ መተግበሪያ የማሳወቂያ ምድቦች የሉትም" "ከዚህ መተግበሪያ የሚመጡ ማሳወቂያዎች ሊጠፉ አይችሉም" - 1 ከ%d የማሳወቂያ ምድቦች ከዚህ መተግበሪያ - 1 %d የማሳወቂያ ምድቦች ከዚህ መተግበሪያ + 1 ከ%s የማሳወቂያ ምድቦች ከዚህ መተግበሪያ + 1 %s የማሳወቂያ ምድቦች ከዚህ መተግበሪያ "%1$s%2$s" @@ -585,8 +585,8 @@ %d ደቂቃዎች "የባትሪ አጠቃቀም" - "ኃይል በሚሞላበት ጊዜ ባትሪ ቆጣቢ አይገኝም" - "ባትሪ ቆጣቢ" + "ኃይል በሚሞላበት ጊዜ ባትሪ ቆጣቢ አይገኝም" + "የባትሪ ኃይል ቆጣቢ" "አፈጻጸምን እና የጀርባ ውሂብን ይቀንሳል" "አዝራር %1$s" "መነሻ" @@ -726,9 +726,9 @@ "አሳንስ" "ዝጋ" "ለማሰናበት ወደ ታች ይጎትቱ" - "በስዕል ምናሌ ውስጥ ያለ ስዕል" + "ምናሌ" "%s በስዕል-ላይ-ስዕል ውስጥ ነው" - "%s ይህን ባህሪ እንዲጠቀም ካልፈለጉ ቅንብሮችን ለመክፈት መታ ያድርጉና ያጥፉት።" + "%s ይህን ባህሪ እንዲጠቀም ካልፈለጉ ቅንብሮችን ለመክፈት መታ ያድርጉና ያጥፉት።" "አጫውት" "ባለበት አቁም" "ወደ ቀጣይ ዝለል" @@ -754,6 +754,7 @@ "ምናሌ" "የ%1$s መተግበሪያ" "ማንቂያዎች" + "ባትሪ" "ቅጽበታዊ ገጽ እይታዎች" "አጠቃላይ መልዕክቶች" "ማከማቻ" @@ -774,4 +775,5 @@ "በጀርባ ውስጥ የሚያሄዱ መተግበሪያዎች" "በባትሪ እና ውሂብ አጠቃቀም ላይ ዝርዝሮችን ለማግኘት መታ ያድርጉ" "የተንቀሳቃሽ ስልክ ውሂብ ይጥፋ?" + "አንድ መተግበሪያ የፍቃድ ጥያቄ እያገደ ስለሆነ ቅንብሮች ጥያቄዎን ማረጋገጥ አይችሉም።" diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index b622a8944fabd49ff85449cdd1a62362f34e98f7..f7a0eb10be25ef8bd867234cadbbb95b4e891377 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -68,7 +68,7 @@ "‏الملف المرجعي الرئيسي لـ RSA في هذا الكمبيوتر هو:\n%1$s" "السماح دائمًا من هذا الكمبيوتر" "‏لا يُسمح بتصحيح أخطاء USB" - "‏لا يمكن للمستخدم الذي يسجّل دخوله حاليًا إلى هذا الجهاز تشغيل تصحيح أخطاء USB. لاستخدام هذه الميزة، يمكنك التبديل إلى مستخدم مشرف." + "‏لا يمكن للمستخدم الذي يسجّل دخوله حاليًا إلى هذا الجهاز تشغيل تصحيح أخطاء USB. لاستخدام هذه الميزة، يمكنك التبديل إلى المستخدم الأساسي." "تكبير/تصغير لملء الشاشة" "توسيع بملء الشاشة" "جارٍ حفظ لقطة الشاشة..." @@ -169,7 +169,7 @@ "جارٍ شحن البطارية، %d بالمائة." "إعدادات النظام." "الإشعارات." - "الاطلاع على جميع الإشعارات" + "الاطّلاع على جميع الإشعارات" "محو الإشعار." "‏تم تمكين GPS." "‏الحصول على GPS." @@ -361,10 +361,10 @@ "بحث" "تمرير لأعلى لـ %s." "تمرير لليسار لـ %s." - "لن يتم إزعاجك بالأصوات والاهتزاز، عدا من التنبيهات والتذكيرات والأحداث والمتصلين الذين تحددهم. وسيظل بإمكانك سماع أي عناصر أخرى تختار تشغيلها، بما في ذلك الموسيقى ومقاطع الفيديو والألعاب." - "لن يتم إزعاجك بالأصوات والاهتزاز، عدا من التنبيهات. وسيظل بإمكانك سماع أي عناصر أخرى تختار تشغيلها، بما في ذلك الموسيقى ومقاطع الفيديو والألعاب." + "لن يتم إزعاجك بالأصوات والاهتزاز، باستثناء المُنبِّهات والتذكيرات والأحداث والمتصلين الذين تحددهم. وسيظل بإمكانك سماع أي عناصر أخرى تختار تشغيلها، بما في ذلك الموسيقى ومقاطع الفيديو والألعاب." + "لن يتم إزعاجك بالأصوات والاهتزاز، باستثناء المُنبِّهات. وسيظل بإمكانك سماع أي عناصر أخرى تختار تشغيلها، بما في ذلك الموسيقى ومقاطع الفيديو والألعاب." "تخصيص" - "سيؤدي هذا إلى حظر جميع الأصوات والاهتزازات، بما في ذلك ما يرد من التنبيهات والموسيقى والفيديو والألعاب. إلا أنه سيظل بإمكانك إجراء مكالمات هاتفية." + "سيؤدي هذا إلى منع صدور جميع الأصوات والاهتزازات، بما في ذلك المُنبِّهات والموسيقى ومقاطع الفيديو والألعاب. وسيظل بإمكانك إجراء مكالمات هاتفية." "سيؤدي هذا إلى حظر جميع الأصوات والاهتزازات، بما في ذلك ما يرد من التنبيهات والموسيقى والفيديو والألعاب." "+%d" "الإشعارات الأقل إلحاحًا أدناه" @@ -464,7 +464,7 @@ "مزيد من المعلومات" "لقد اتصلت بتطبيق %1$s، الذي يمكن أن يراقب نشاط الشبكة، بما في ذلك رسائل البريد الإلكتروني والتطبيقات والمواقع الإلكترونية." " " - "‏فتح إعدادات الشبكة الافتراضية الخاصة (VPN)" + "‏فتح إعدادات الشبكة الافتراضية الخاصة (VPN)" " " "فتح بيانات الاعتماد الموثوق بها" "شغَّل المشرف ميزة تسجيل بيانات الشبكة، والتي يتم من خلالها مراقبة حركة البيانات على جهازك.\n\nللحصول على المزيد من المعلومات، اتصل بالمشرف." @@ -480,7 +480,7 @@ "%1$s قيد التشغيل" "سيظل الجهاز مقفلاً إلى أن يتم إلغاء قفله يدويًا" "الحصول على الإشعارات بشكل أسرع" - "الاطلاع عليها قبل إلغاء القفل" + "الاطّلاع عليها قبل إلغاء القفل" "لا، شكرًا" "إعداد" "%1$s. %2$s" @@ -564,12 +564,12 @@ "لا يحتوي هذا التطبيق على فئات إشعار" "لا يمكن إيقاف الإشعارات من هذا التطبيق" - 1 من إجمالي %d فئة إشعار من هذا التطبيق - 1 من إجمالي فئتي إشعار (%d) من هذا التطبيق - 1 من إجمالي %d فئات إشعار من هذا التطبيق - 1 من إجمالي %d فئة إشعار من هذا التطبيق - 1 من إجمالي %d فئة إشعار من هذا التطبيق - 1 من إجمالي %d فئة إشعار من هذا التطبيق + 1 من إجمالي %s فئة إشعار من هذا التطبيق + 1 من إجمالي فئتي إشعار (%s) من هذا التطبيق + 1 من إجمالي %s فئات إشعار من هذا التطبيق + 1 من إجمالي %s فئة إشعار من هذا التطبيق + 1 من إجمالي %s فئة إشعار من هذا التطبيق + 1 من إجمالي %s فئة إشعار من هذا التطبيق "%1$s، %2$s" @@ -609,8 +609,8 @@ دقيقة واحدة "استخدام البطارية" - "وضع توفير شحن البطارية غير متاح أثناء الشحن." - "توفير شحن البطارية" + "توفير شحن البطارية غير متاح أثناء الشحن" + "توفير شحن البطارية" "لخفض مستوى الأداء وبيانات الخلفية" "الزر %1$s" "Home" @@ -750,9 +750,9 @@ "تصغير" "إغلاق" "اسحب لأسفل للإلغاء" - "قائمة صورة داخل صورة" + "القائمة" "%s يظهر في صورة داخل صورة" - "إذا كنت لا تريد أن يستخدم %s هذه الميزة، فانقر لفتح الإعدادات، ثم اختر تعطيلها." + "إذا كنت لا تريد أن يستخدم %s هذه الميزة، فانقر لفتح الإعدادات، ثم أوقِف تشغيل هذه الميزة." "تشغيل" "إيقاف مؤقت" "التخطي إلى التالي" @@ -778,6 +778,7 @@ "القائمة" "تطبيق %1$s" "التنبيهات" + "البطارية" "لقطات الشاشة" "رسائل عامة" "سعة التخزين" @@ -798,4 +799,5 @@ "التطبيقات التي تعمل في الخلفية" "انقر للحصول على تفاصيل حول البطارية واستخدام البيانات" "هل تريد إيقاف تشغيل بيانات الجوال؟" + "لا يمكن للإعدادات التحقق من ردك لأن هناك تطبيقًا يحجب طلب الإذن." diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 3e3d3317a5e960228a5b8862689774ce2396c278..9e49466499733482d2ae4716363342915277b1fe 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -64,7 +64,7 @@ "Kompüterin RSA barmaq izi: \n%1$s" "Bu kompüterdən həmişə icazə verilsin" "USB debaq prosesinə icazə verilmir" - "Hazırda bu cihaza daxil olmuş istifadəçi USB debaq prosesini deaktiv edə bilməz. Bu funksiyanı istifadə etmək üçün Admin istifadəçiyə keçin." + "Hazırda bu cihaza daxil olmuş istifadəçi USB sazlama prosesini aktiv edə bilməz. Bu funksiyadan istifadə etmək üçün əsas istifadəçi hesaba daxil olmalıdır." "Ekranı doldurmaq üçün yaxınlaşdır" "Ekranı doldurmaq üçün uzat" "Skrinşot yadda saxlanılır..." @@ -353,10 +353,10 @@ "Axtar" "%s üçün yuxarı sürüşdürün." "%s üçün sola sürüşdür." - "Seçdiyiniz siqnal, xatırladıcı, tədbir və zənglər istisna olmaqla səslər və vibrasiyalar Sizi narahat etməyəcək. Musiqi, video və oyunlar da daxil olmaqla oxutmaq istədiyiniz hər şeyi eşidəcəksiniz." - "Siqnallar istisna olmaqla səslər və vibrasiyalar Sizi narahat etməyəcək. Musiqi, video və oyunlar da daxil olmaqla oxutmaq istədiyiniz hər şeyi eşidəcəksiniz." + "Seçdiyiniz siqnal, xatırladıcı, tədbir və zənglər istisna olmaqla səslər və vibrasiyalar Sizi narahat etməyəcək. Musiqi, video və oyunlar da daxil olmaqla oxutmaq istədiyiniz hər şeyi eşidəcəksiniz." + "Siqnallar istisna olmaqla səslər və vibrasiyalar Sizi narahat etməyəcək. Musiqi, video və oyunlar da daxil olmaqla oxutmaq istədiyiniz hər şeyi eşidəcəksiniz." "Fərdiləşdirin" - "Bu, zəng, musiqi, video və oyunlar daxil olmaqla BÜTÜN səs və vibrasiyanı bloklayır. Yenə də telefon zəngi edə bilərsiniz." + "Bu, zəng, musiqi, video və oyunlar daxil olmaqla BÜTÜN səs və vibrasiyanı blok edir. Hələ də telefon zəngi edə biləcəksiniz." "Bu, zəng, musiqi, video və oyunlar daxil olmaqla BÜTÜN səs və vibrasiyanı bloklayır." "+%d" "Daha az təcili bildirişlər aşağıdadır" @@ -456,7 +456,7 @@ "Ətraflı məlumat" "%1$s tətbiqinə qoşulmusunuz və o, e-məktublar, tətbiq və veb saytlar daxil olmaqla şəbəkə fəaliyyətinizə nəzarət edə bilər." " (" - "VPN Ayarlarını açın" + "VPN ayarlarını açın" " " "Etibarlı kredensialları açın" "Admin, cihazdakı trafikə nəzarət edən şəbəkə loqlarını aktiv etdi.\n\nƏtraflı məlumat üçün administrator ilə əlaqə saxlayın." @@ -556,8 +556,8 @@ "Bu tətbiqin bildiriş kateqoriyası yoxdur" "Bu tətbiqin bildirişləri deaktiv edilə bilməz" - Bu tətbiqin %d bildiriş kateqoriyasından 1 kanal - Bu tətbiqin %d bildiriş kateqoriyasından 1 kanal + Bu tətbiqin %s bildiriş kateqoriyasından 1 kanal + Bu tətbiqin %s bildiriş kateqoriyasından 1 kanal "%1$s, %2$s" @@ -585,8 +585,8 @@ %d dəqiqə "Batareya istifadəsi" - "Enerji Qənaəti doldurulma zamanı əlçatan deyil" - "Enerji Qənaəti" + "Batareya qənaəti doldurulma zamanı əlçatan deyil" + "Batareya qənaəti" "Performansı azaldır və arxa fon datasını məhdudlaşdırır" "Düymə %1$s" "Əsas səhifə" @@ -726,9 +726,9 @@ "Kiçildin" "Bağlayın" "Rədd etmək üçün aşağı çəkin" - "Şəkil-içində-şəkil menyusu" + "Menyu" "%s şəkil içində şəkildədir" - "%s adlı şəxsin bu funksiyadan istifadə etməyini istəmirsinizsə, ayarları açmaq və deaktiv etmək üçün klikləyin." + "%s tətbiqinin bu funksiyadan istifadə etməyini istəmirsinizsə, ayarları açmaq və deaktiv etmək üçün klikləyin." "Oxudun" "Fasilə verin" "Növbətiyə keçin" @@ -754,6 +754,7 @@ "Menyu" "%1$s tətbiqi" "Siqnallar" + "Batareya" "Skrinşotlar" "Ümumi Mesajlar" "Yaddaş" @@ -774,4 +775,5 @@ "Arxa fonda işləyən tətbiqlər" "Batareya və data istifadəsi haqqında ətraflı məlumat üçün klikləyin" "Mobil data söndürülsün?" + "Tətbiq icazə sorğusunu gizlətdiyi üçün Ayarlar cavabınızı doğrulaya bilməz." diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 42a3aecd01072f89bc086a11c13b1ce46d9faefa..6547f0fe6eece430e728670dbd6ba32bc02d47e3 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -312,6 +312,7 @@ "Još podešavanja" "Gotovo" "Povezan" + "Povezano, nivo baterije je %1$s" "Povezuje se..." "Povezivanje" "Hotspot" @@ -354,9 +355,10 @@ "Pretraga" "Prevucite nagore za %s." "Prevucite ulevo za %s." - "Neće vas uznemiravati zvukovi i vibracije, osim za alarme, podsetnike, događaje i pozivaoce koje izaberete." + "Neće vas uznemiravati zvukovi i vibracije osim za alarme, podsetnike, događaje i pozivaoce koje navedete. I dalje ćete čuti sve što odaberete da pustite, uključujući muziku, video snimke i igre." + "Neće vas uznemiravati zvukovi i vibracije osim za alarme. I dalje ćete čuti sve što odaberete da pustite, uključujući muziku, video snimke i igre." "Prilagodi" - "Ovo blokira SVE zvukove i vibracije uključujući alarme, muziku, video snimke i igre. I dalje ćete moći da upućujete pozive." + "Ovo blokira SVE zvukove i vibracije uključujući alarme, muziku, video snimke i igre. I dalje ćete moći da upućujete pozive." "Ovo blokira SVE zvukove i vibracije uključujući alarme, muziku, video snimke i igre." "+%d" "Manje hitna obaveštenja su u nastavku" @@ -476,7 +478,7 @@ "Ne, hvala" "Aktiviraj" "%1$s. %2$s" - "Prekini odmah" + "Isključi odmah" "Proširi" "Skupi" "Ekran je zakačen" @@ -554,8 +556,7 @@ "Više nećete dobijati ova obaveštenja" "Kategorija obaveštenja: %d" "Ova aplikacija nema kategorije obaveštenja" - - + "Obaveštenja iz ove aplikacije ne mogu da se isključe" 1 od %d kategorije obaveštenja za ovu aplikaciju 1 od %d kategorije obaveštenja za ovu aplikaciju @@ -579,8 +580,16 @@ "opcije za odlaganje obaveštenja" "OPOZOVI" "Odloženo je za %1$s" - - + + %d sat + %d sata + %d sati + + + %d minut + %d minuta + %d minuta + "Potrošnja baterije" "Ušteda baterije nije dostupna tokom punjenja" "Ušteda baterije" @@ -725,7 +734,7 @@ "Prevucite nadole da biste odbili" "Meni Slika u slici" "%s je slika u slici" - "Ako ne želite da %s koristi ovu funkciju, dodirnite da biste otvorili podešavanja i isključili je." + "Ako ne želite da %s koristi ovu funkciju, dodirnite da biste otvorili podešavanja i isključili je." "Pusti" "Pauziraj" "Pređi na sledeće" diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index d48ee4fb0728e171c1d9cffa33be756a74fe2b02..6d6d1b227125d722b28f2a9c3b49a89e2f7a4247 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -316,6 +316,7 @@ "Дадатковыя налады" "Гатова" "Падлучана" + "Падключана, узровень зараду акумулятара: %1$s" "Падлучэнне..." "Мадэм" "Кропка доступу" @@ -358,9 +359,10 @@ "Пошук" "Правядзіце пальцам уверх, каб атрымаць %s." "Правядзіце пальцам улева, каб атрымаць %s." - "Вас не будуць турбаваць гукі і вібрацыя, за выключэннем будзільнікаў, мерапрыемстваў, падзей і выбраных вамі абанентаў." + "Вас не будуць турбаваць гукі і вібрацыя, за выключэннем будзільнікаў, напамінаў, падзей і выбраных вамі абанентаў. Вы будзеце чуць усё, што ўключыце, у тым ліку музыку, відэа і гульні." + "Вас не будуць турбаваць гукі і вібрацыя, за выключэннем будзільнікаў. Вы будзеце чуць усё, што ўключыце, у тым ліку музыку, відэа і гульні." "Дапасаваць" - "Гэта заблакіруе ЎСЕ гукі і вібрацыі, у тым ліку ад будзільнікаў, музыкі, відэа і гульняў. Вы па-ранейшаму зможаце тэлефанаваць." + "Гэта заблакіруе ЎСЕ гукі і вібрацыю, у тым ліку ад будзільнікаў, музыкі, відэа і гульняў. Вы па-ранейшаму зможаце рабіць тэлефонныя выклікі." "Гэта заблакіруе ЎСЕ гукі і вібрацыі, у тым ліку ад будзільнікаў, музыкі, відэа і гульняў." "+%d" "Менш тэрміновыя апавяшчэнні ніжэй" @@ -480,7 +482,7 @@ "Не, дзякуй" "Наладзіць" "%1$s. %2$s" - "Завяршыць зараз" + "Адключыць" "Разгарнуць" "Згарнуць" "Экран замацаваны" @@ -558,8 +560,7 @@ "Вы больш не будзеце атрымліваць гэтыя апавяшчэнні" "Катэгорый апавяшчэнняў: %d" "У гэтай праграме няма катэгорый апавяшчэнняў" - - + "Апавяшчэнні ад гэтай праграмы нельга адключыць" 1 з %d катэгорыі апавяшчэнняў у гэтай праграме 1 з %d катэгорый апавяшчэнняў у гэтай праграме @@ -585,8 +586,18 @@ "параметры адкладвання апавяшчэнняў" "АДРАБІЦЬ" "Адкладзена на %1$s" - - + + %d гадзіна + %d гадзіны + %d гадзін + %d гадзіны + + + %d хвіліна + %d хвіліны + %d хвілін + %d хвіліны + "Выкарыстанне зараду" "Эканомія зараду акумулятара недаступная падчас зарадкі" "Эканомія зараду" @@ -731,7 +742,7 @@ "Перацягніце ўніз, каб адхіліць" "Меню \"Відарыс у відарысе\"" "%s з’яўляецца відарысам у відарысе" - "Калі вы не хочаце, каб праграма %s выкарыстоўвала гэту функцыю, дакраніцеся, каб адкрыць налады і адключыць яе." + "Калі вы не хочаце, каб праграма %s выкарыстоўвала гэту функцыю, дакраніцеся, каб адкрыць налады і адключыць яе." "Прайграць" "Прыпыніць" "Перайсці да наступнага" diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 21d4d12c2a50ecf1cfd65e96d9e52199076fb8a7..c79b527bcbc78ff1646b4a0921fbe114fb8b34b5 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -64,7 +64,7 @@ "Отпечатъкът на RSA ключа на компютъра е:\n%1$s" "Винаги да се разрешава от този компютър" "Отстраняването на грешки през USB не е разрешено" - "Потребителят, който понастоящем е влязъл в това устройство, не може да включи функцията за отстраняване на грешки през USB. За да я използвате, моля, превключете към администратор." + "Потребителят, който понастоящем е влязъл в това устройство, не може да включи функцията за отстраняване на грешки през USB. За да я използвате, превключете към основния потребител." "Мащаб – запълва екрана" "Разпъване – запълва екрана" "Екранната снимка се запазва..." @@ -353,10 +353,10 @@ "Търсене" "Плъзнете нагоре за %s." "Плъзнете наляво за %s." - "Няма да бъдете обезпокоявани от звуци и вибрирания освен от будилници, напомняния, събития и обаждания от посочени от вас контакти. Пак ще чувате всичко, което изберете да се пусне, включително музика, видеоклипове и игри." - "Няма да бъдете обезпокоявани от звуци и вибрирания освен от будилници. Пак ще чувате всичко, което изберете да се пусне, включително музика, видеоклипове и игри." + "Няма да бъдете обезпокоявани от звуци и вибрирания освен от будилници, напомняния, събития и обаждания от посочени от вас контакти. Пак ще чувате всичко, което изберете да се пусне, включително музика, видеоклипове и игри." + "Няма да бъдете обезпокоявани от звуци и вибрирания освен от будилници. Ще чувате обаче всичко, което изберете пуснете, включително музика, видеоклипове и игри." "Персонализиране" - "Този режим блокира ВСИЧКИ звуци и вибрирания, включително от будилници, музика, видеоклипове и игри. Пак ще можете да извършвате телефонни обаждания." + "Този режим блокира ВСИЧКИ звуци и вибрирания, включително от будилници, музика, видеоклипове и игри. Пак ще можете да извършвате телефонни обаждания." "Този режим блокира ВСИЧКИ звуци и вибрирания, включително от будилници, музика, видеоклипове и игри." "+%d" "Ппоказване на по-малко спешните известия по-долу" @@ -456,7 +456,7 @@ "Научете повече" "Установена е връзка с приложението %1$s, което може да наблюдава активността ви в мрежата, вкл. имейли, приложения и уебсайтове." " " - "Отваряне на настройките за VPN" + "Отваряне на настройките за VPN" " " "Отваряне на надеждните идентификационни данни" "Администраторът ви е включил функцията за регистриране на мрежовата активност, която следи трафика на устройството ви.\n\nЗа повече информация се свържете с администратора си." @@ -556,8 +556,8 @@ "За това приложение няма категории на известията" "Известията от това приложение не могат да бъдат изключени" - 1 от %d категории известия от това приложение - 1 от %d категория известия от това приложение + 1 от %s категории известия от това приложение + 1 от %s категория известия от това приложение "„%1$s“, „%2$s“" @@ -585,8 +585,8 @@ %d минута "Ползв. на батерията" - "Режимът за запазване на батерията не е налице при зареждане" - "Режим за запазване на батерията" + "Режимът за запазване на батерията не работи при зареждане" + "Режим за запазване на батерията" "Намалява ефективността и данните на заден план" "Бутон „%1$s“" "Начало" @@ -726,9 +726,9 @@ "Намаляване" "Затваряне" "Преместете надолу с плъзгане, за да отхвърлите" - "Меню за режима „Картина в картината“" + "Меню" "%s е в режима „Картина в картината“" - "Ако не искате %s да използва тази функция, докоснете, за да отворите настройките, и я изключете." + "Ако не искате %s да използва тази функция, докоснете, за да отворите настройките, и я изключете." "Пускане" "Поставяне на пауза" "Към следващия елемент" @@ -754,6 +754,7 @@ "Меню" "Приложение %1$s" "Сигнали" + "Батерия" "Екранни снимки" "Общи съобщения" "Хранилище" @@ -774,4 +775,5 @@ "Приложения, работещи на заден план" "Докоснете за информация относно използването на батерията и преноса на данни" "Да се изключат ли мобилните данни?" + "От Настройки не може да се получи потвърждение за отговора ви, защото заявката за разрешение се прикрива от приложение." diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 206612ff50eb322dff90e8f2059f53b9d67b1945..44b01e8196f7b3918375b7335a204b1df1bcb7be 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -64,7 +64,7 @@ "কম্পিউটারের RSA কী আঙ্গুলের ছাপ হল:\n%1$s" "এই কম্পিউটার থেকে সর্বদা অনুমতি দিন" "USB ডিবাগিং অনুমোদিত নয়" - "ব্যবহারকারী বর্তমানে এই ডিভাইসটিতে প্রবেশ করেছেন তাই USB ডিবাগিং চালু করা যাবে না। এই বৈশিষ্ট্যটি ব্যবহার করতে, অনুগ্রহ করে প্রশাসক ব্যবহারকারীতে পাল্টান।" + "ব্যবহারকারী এখন এই ডিভাইসে সাইন-ইন করেছেন তাই USB ডিবাগিং চালু করা যাবে না। এই বৈশিষ্ট্যটি ব্যবহার করতে, প্রাথমিক ব্যবহারকারীতে পাল্টে নিন।" "স্ক্রীণ পূরণ করতে জুম করুন" "ফুল স্ক্রিন করুন" "স্ক্রিনশট সেভ করা হচ্ছে..." @@ -353,10 +353,10 @@ "খুঁজুন" "%s এর জন্য উপরের দিকে স্লাইড করুন৷" "%s এর জন্য বাঁ দিকে স্লাইড করুন৷" - "অ্যালার্ম, রিমাইন্ডার, ইভেন্ট, এবং আপনার নির্দিষ্ট করে দেওয়া ব্যক্তিদের কল ছাড়া অন্য কোনও আওয়াজ বা ভাইব্রেশন হবে না। তবে সঙ্গীত, ভিডিও, এবং গেমের আওয়াজ শুনতে পাবেন।" - "অ্যালার্ম ছাড়া অন্য কোনও আওয়াজ বা ভাইব্রেশন হবে না। তবে সঙ্গীত, ভিডিও, এবং গেমের আওয়াজ শুনতে পাবেন।" + "অ্যালার্ম, রিমাইন্ডার, ইভেন্ট, এবং আপনার নির্দিষ্ট করে দেওয়া ব্যক্তিদের কল ছাড়া অন্য কোনও আওয়াজ বা ভাইব্রেশন হবে না। তবে সঙ্গীত, ভিডিও, এবং গেম সহ আপনি যা কিছু চালাবেন তার আওয়াজ শুনতে পাবেন।" + "অ্যালার্ম ছাড়া অন্য কোনও আওয়াজ বা ভাইব্রেশন হবে না। তবে সঙ্গীত, ভিডিও, এবং গেম সহ আপনি যা কিছু চালাবেন তার আওয়াজ শুনতে পাবেন।" "কাস্টমাইজ করুন" - "এটি অ্যালার্ম, সংগীত, ভিডিও এবং গেমগুলি থেকে আসা সমস্ত রকমের ধ্বনি এবং কম্পনগুলিকে বন্ধ করে৷ আপনি এখনও ফোন কলগুলি করতে পারবেন৷" + "এটি অ্যালার্ম, সংগীত, ভিডিও এবং গেম থেকে আসা সমস্ত রকমের আওয়াজ এবং ভাইব্রেশনকে ব্লক করে দেয়। তবুও আপনি ফোন করতে পারবেন।" "এটি অ্যালার্ম, সংগীত, ভিডিও এবং গেমগুলি থেকে আসা সমস্ত রকমের ধ্বনি এবং কম্পনগুলিকে বন্ধ করে৷" "+%d" "নিচে অপেক্ষাকৃত কম জরুরী বিজ্ঞপ্তিগুলি" @@ -456,7 +456,7 @@ "আরও জানুন" "আপনি %1$s এ সংযুক্ত হয়েছেন, যা ইমেল, অ্যাপ এবং ওয়েবসাইটগুলি সহ আপনার নেটওয়ার্ক কার্যকলাপ নিরীক্ষণ করবে৷" " " - "VPN সেটিংস খুলুন" + "VPN সেটিংস খুলুন" " " "বিশ্বস্ত শংসাপত্রগুলি খুলুন" "আপনার প্রশাসক নেটওয়ার্ক লগিং চালু করেছেন, যা আপনার ডিভাইসের ট্রাফিক নিরীক্ষণ করে।\n\nআরও তথ্যের জন্য আপনার প্রশাসকের সাথে যোগাযোগ করুন।" @@ -556,8 +556,8 @@ "এই অ্যাপটিতে বিজ্ঞপ্তির বিভাগ নেই" "এই অ্যাপ থেকে আসা বিজ্ঞপ্তি বন্ধ করা যাবে না" - এই অ্যাপের %dটি বিজ্ঞপ্তির বিভাগের মধ্যে ১টি - এই অ্যাপের %dটি বিজ্ঞপ্তির বিভাগের মধ্যে ১টি + এই অ্যাপের %sটি বিজ্ঞপ্তির বিভাগের মধ্যে ১টি + এই অ্যাপের %sটি বিজ্ঞপ্তির বিভাগের মধ্যে ১টি "%1$s, %2$s" @@ -585,8 +585,8 @@ %d মিনিট "ব্যাটারির ব্যবহার" - "চার্জ করার সময় ব্যাটারি সেভার উপলব্ধ নয়" - "ব্যাটারি সেভার" + "চার্জ করার সময় ব্যাটারি সেভার কাজ করে না" + "ব্যাটারি সেভার" "কার্য-সম্পাদনা ও পশ্চাদপট ডেটাকে কমিয়ে দেয়" "%1$s বোতাম" "হোম" @@ -726,9 +726,9 @@ "ছোটো করুন" "বন্ধ করুন" "খারিজ করতে নিচের দিকে টেনে আনুন" - "পিকচার ইন পিকচার মেনু" + "মেনু" "ছবির-মধ্যে-ছবি তে %s আছেন" - "%s কে এই বৈশিষ্ট্যটি ব্যবহার করতে দিতে না চাইলে ট্যাপ করে সেটিংসে গিয়ে সেটি বন্ধ করে দিন।" + "%s কে এই বৈশিষ্ট্যটি ব্যবহার করতে দিতে না চাইলে ট্যাপ করে সেটিংসে গিয়ে সেটি বন্ধ করে দিন।" "চালান" "বিরাম দিন" "এগিয়ে যাওয়ার জন্য এড়িয়ে যান" @@ -754,6 +754,7 @@ "মেনু" "%1$s অ্যাপ" "সতর্কতা" + "ব্যাটারি" "স্ক্রীনশটস" "সাধারণ বার্তাগুলি" "স্টোরেজ" @@ -774,4 +775,5 @@ "পটভূমিতে অ্যাপ চালু আছে" "ব্যাটারি এবং ডেটার ব্যবহারের বিশদ বিবরণের জন্য ট্যাপ করুন" "মোবাইল ডেটা বন্ধ করবেন?" + "একটি অ্যাপ কোনও অনুমোদনের অনুরোধকে ঢেকে দিচ্ছে, তাই সেটিংস থেকে আপনার প্রতিক্রিয়া যাচাই করা যাচ্ছে না।" diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 1d1632ffe7d4b39fed6adaa7c680ac21898eabf9..337b68fed758790cde78cfb85824a1808f391fa8 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -97,7 +97,7 @@ "otvori telefon" "otvori glasovnu pomoć" "otvori kameru" - "Izaberite novi raspored zadataka" + "Odaberite novi raspored zadataka" "Otkaži" "Dugme za uvećavanje u slučaju nekompatibilnosti." "Uvećani prikaz manjeg ekrana na većem ekranu." @@ -312,6 +312,7 @@ "Više postavki" "Gotovo" "Povezano" + "Povezano, baterija %1$s" "Povezivanje..." "Dijeljenje veze" "Pristupna tačka" @@ -354,9 +355,10 @@ "Pretraživanje" "Povucite gore za %s." "Povucite lijevo za %s." - "Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivalaca koje odredite." + "Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivalaca koje odredite. I dalje ćete čuti sve što ste odabrali za reprodukciju, uključujući muziku, videozapise i igre." + "Neće vas ometati zvukovi i vibracije, osim alarma. I dalje ćete čuti sve što izaberete za reprodukciju, uključujući muziku, videozapise i igre." "Prilagodi" - "Ovim se blokiraju SVI zvukovi i vibracije, uključujući alarme, muziku, videozapise i igre. I dalje ćete moći obavljati pozive." + "Ovim se blokiraju SVI zvukovi i vibracije, uključujući alarme, muziku, videozapise i igre. I dalje ćete moći obavljati pozive." "Ovim se blokiraju SVI zvukovi i vibracije, uključujući alarme, muziku, video zapise i igre." "+%d" "Prikaži manje važna obavještenja ispod" @@ -476,7 +478,7 @@ "Ne, hvala" "Postavi" "%1$s. %2$s" - "Završi sada" + "Isključi sada" "Proširi" "Skupi" "Ekran je prikačen" @@ -556,8 +558,7 @@ "Nećete više primati ova obavještenja" "Kategorije obavještenja: %d" "Ova aplikacija nema kategorije obavještenja" - - + "Obavještenja iz ove aplikacije nije moguće isključiti" 1 od %d kategorije obavještenja iz ove aplikacije 1 od %d kategorije obavještenja iz ove aplikacije @@ -581,8 +582,16 @@ "opcije za odgodu obavještenja" "OPOZOVI" "Odgođeno za %1$s" - - + + %d sat + %d sata + %d sati + + + %d minuta + %d minute + %d minuta + "Potrošnja baterije" "Ušteda baterije je isključena prilikom punjenja" "Ušteda baterije" @@ -645,8 +654,8 @@ "Isključeno" "Navigaciona traka" "Raspored" - "Dodatni tip dugmeta lijevo" - "Dodatni tip dugmeta desno" + "Vrsta dodatnog dugmeta lijevo" + "Vrsta dodatnog dugmeta desno" "(zadano)" "Međumemorija" @@ -727,7 +736,7 @@ "Povucite prema dolje da odbacite" "Meni za način rada Slika u slici" "%s je u načinu priakza Slika u slici" - "Ako ne želite da %s koristi ovu funkciju, dodirnite da otvorite postavke i isključite je." + "Ako ne želite da %s koristi ovu funkciju, dodirnite da otvorite postavke i isključite je." "Reproduciraj" "Pauziraj" "Preskoči na sljedeći" diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index dbf89381751c662c5e4c77ac9b69d73409736292..502d93f0078bc91e8a6332b06e612e423f7132d0 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -64,7 +64,7 @@ "L\'empremta digital de la clau de l\'RSA de l\'equip és:\n%1$s" "Dona sempre permís des d\'aquest equip" "No es permet la depuració USB" - "L\'usuari que té iniciada la sessió al dispositiu en aquest moment no pot activar la depuració USB. Per utilitzar aquesta funció, cal canviar a l\'usuari administrador." + "L\'usuari que té iniciada la sessió al dispositiu en aquest moment no pot activar la depuració per USB. Per utilitzar aquesta funció, cal canviar a l\'usuari principal." "Zoom per omplir pantalla" "Estira per omplir pant." "S\'està desant captura de pantalla..." @@ -353,10 +353,10 @@ "Cerca" "Llisca cap amunt per %s." "Llisca cap a l\'esquerra per %s." - "No t\'interromprà cap so ni cap vibració, tret dels de les alarmes, recordatoris, esdeveniments i trucades de les persones que especifiquis. Continuaràs sentint tot allò que decideixis reproduir, com ara música, vídeos i jocs." - "No t\'interromprà cap so ni cap vibració, tret dels de les alarmes. Continuaràs sentint tot allò que decideixis reproduir, com ara música, vídeos i jocs." + "No t\'interromprà cap so ni cap vibració, tret dels de les alarmes, recordatoris, esdeveniments i trucades de les persones que especifiquis. Continuaràs sentint tot allò que decideixis reproduir, com ara música, vídeos i jocs." + "No t\'interromprà cap so ni cap vibració, tret dels de les alarmes. Continuaràs sentint tot allò que decideixis reproduir, com ara música, vídeos i jocs." "Personalitza" - "Es bloquejaran TOTS els sons i totes les vibracions, inclosos els de vídeos, jocs, alarmes i música. Encara podràs fer trucades." + "Es bloquejaran TOTS els sons i totes les vibracions, inclosos els de vídeos, jocs, alarmes i música. Encara podràs fer trucades." "Es bloquejaran TOTS els sons i totes les vibracions, inclosos els de vídeos, jocs, alarmes i música." "+%d" "Notificacions menys urgents a continuació" @@ -407,7 +407,7 @@ "Estalvi de bateria activat" "Redueix el rendiment i l\'ús de les dades en segon pla." "Desactiva l\'estalvi de bateria" - "%s començarà a enregistrar tot el que es mostri a la pantalla." + "%s començarà a gravar tot el que es mostri a la pantalla." "No ho tornis a mostrar" "Esborra-ho tot" "Comença ara" @@ -456,7 +456,7 @@ "Més informació" "Estàs connectat a %1$s, que pot supervisar la teva activitat a la xarxa, com els correus electrònics, les aplicacions i els llocs web." " " - "Obre la configuració de la VPN" + "Obre la configuració de la VPN" " " "Obre les credencials de confiança" "L\'administrador ha activat el registre de xarxa, que supervisa el trànsit del teu dispositiu.\n\nPer obtenir més informació, contacta amb l\'administrador." @@ -556,8 +556,8 @@ "Aquesta aplicació no té categories de notificació" "Les notificacions d\'aquesta aplicació no es poden desactivar" - 1 de %d categories de notificació d\'aquesta aplicació - 1 de %d categoria de notificació d\'aquesta aplicació + 1 de %s categories de notificació d\'aquesta aplicació + 1 de %s categoria de notificació d\'aquesta aplicació "%1$s, %2$s" @@ -584,9 +584,9 @@ %d minuts %d minut - "Ús de la bateria" - "La funció Estalvi de bateria no està disponible durant la càrrega" - "Estalvi de bateria" + "Consum de la bateria" + "La funció Estalvi de bateria no està disponible durant la càrrega" + "Estalvi de bateria" "Redueix el rendiment i les dades en segon pla" "Botó %1$s" "Inici" @@ -726,9 +726,9 @@ "Minimitza" "Tanca" "Arrossega cap avall per ignorar-ho" - "Menú per a Pantalla en pantalla" + "Menú" "%s està en pantalla en pantalla" - "Si no vols que %s utilitzi aquesta funció, toca per obrir la configuració i desactiva-la." + "Si no vols que %s utilitzi aquesta funció, toca per obrir la configuració i desactiva-la." "Reprodueix" "Posa en pausa" "Ves al següent" @@ -754,6 +754,7 @@ "Menú" "Aplicació %1$s" "Alertes" + "Bateria" "Captures de pantalla" "Missatges generals" "Emmagatzematge" @@ -774,4 +775,5 @@ "Aplicacions que s\'estan executant en segon pla" "Toca per obtenir informació sobre l\'ús de dades i de bateria" "Vols desactivar les dades mòbils?" + "Com que hi ha una aplicació que oculta una sol·licitud de permís, no es pot verificar la teva resposta des de la configuració." diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 924883f7d51bfb0e4c881f654ca62483a12a70b1..726e560c199918e6c1414447986d5d32f8f82a1e 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -66,7 +66,7 @@ "Digitální otisk RSA počítače je:\n%1$s" "Vždy povolit z tohoto počítače" "Ladění USB není povoleno" - "Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění USB. Chcete-li tuto funkci používat, přepněte na uživatele s oprávněním administrátora." + "Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění USB. Chcete-li tuto funkci použít, přepněte na primárního uživatele." "Přiblížit na celou obrazovku" "Na celou obrazovku" "Ukládání snímku obrazovky..." @@ -359,10 +359,10 @@ "Vyhledávání" "Přejeďte prstem nahoru: %s" "Přejeďte prstem doleva: %s" - "Nebudou vás rušit zvuky ani vibrace s výjimkou budíků, upozornění, událostí a vybraných volajících. Nadále uslyšíte veškerý obsah, který si sami pustíte (např. hudba, videa nebo hry)." - "Nebudou vás rušit zvuky ani vibrace s výjimkou budíků. Nadále uslyšíte veškerý obsah, který si sami pustíte (např. hudba, videa nebo hry)." + "Nebudou vás rušit zvuky ani vibrace s výjimkou budíků, upozornění, událostí a volajících, které zadáte. Nadále uslyšíte veškerý obsah, který si sami pustíte (např. hudba, videa nebo hry)." + "Nebudou vás rušit zvuky ani vibrace s výjimkou budíků. Nadále uslyšíte veškerý obsah, který si sami pustíte (např. hudba, videa nebo hry)." "Přizpůsobit" - "V tomto režimu budou blokovány VŠECHNY zvuky a vibrace, včetně těch z budíků, hudby, videí a her. Telefonovat budete moci i nadále." + "V tomto režimu budou blokovány VŠECHNY zvuky a vibrace, včetně těch z budíků, hudby, videí a her. Telefonovat budete moci i nadále." "V tomto režimu budou blokovány VŠECHNY zvuky a vibrace, včetně těch z budíků, hudby, videí a her." "+%d" "Méně urgentní oznámení níže" @@ -462,7 +462,7 @@ "Další informace" "Jste připojeni k aplikaci %1$s, která může sledovat vaši aktivitu v síti, včetně e-mailů, aplikací a webů." " " - "Otevřít nastavení VPN" + "Otevřít nastavení VPN" " " "Otevřít důvěryhodná oprávnění" "Administrátor zapnul protokolování sítě, které monitoruje síťový provoz v zařízení.\n\nDalší informace vám poskytne administrátor." @@ -562,10 +562,10 @@ "Tato aplikace nemá kategorie oznámení" "Oznámení této aplikace nelze vypnout" - 1 ze %d kategorií oznámení z této aplikace - 1 z %d kategorie oznámení z této aplikace - 1 z %d kategorií oznámení z této aplikace - 1 z %d kategorie oznámení z této aplikace + 1 ze %s kategorií oznámení z této aplikace + 1 z %s kategorie oznámení z této aplikace + 1 z %s kategorií oznámení z této aplikace + 1 z %s kategorie oznámení z této aplikace "%1$s, %2$s" @@ -599,8 +599,8 @@ %d minuta "Využití baterie" - "Spořič baterie při nabíjení není k dispozici." - "Spořič baterie" + "Spořič baterie při nabíjení není k dispozici" + "Spořič baterie" "Omezuje výkon a data na pozadí" "Tlačítko %1$s" "Home" @@ -650,9 +650,9 @@ "Při zvýšení hlasitosti ukončit režim Nerušit" "Baterie" "Hodiny" - "Náhlavní souprava" + "Sluchátka" "Sluchátka připojena" - "Náhlavní souprava připojena" + "Sluchátka připojena" "Spořič dat" "Spořič dat je zapnutý" "Spořič dat je vypnutý" @@ -740,9 +740,9 @@ "Minimalizovat" "Zavřít" "Nápovědu zavřete přetažením dolů" - "Nabídka režimu obraz v obraze" + "Nabídka" "Aplikace %s je v režimu obraz v obraze" - "Pokud nechcete, aby aplikace %s tuto funkci používala, klepnutím otevřete nastavení a funkci vypněte." + "Pokud nechcete, aby aplikace %s tuto funkci používala, klepnutím otevřete nastavení a funkci vypněte." "Přehrát" "Pozastavit" "Přeskočit na další" @@ -768,6 +768,7 @@ "Nabídka" "Aplikace %1$s" "Upozornění" + "Baterie" "Snímky obrazovek" "Všeobecné zprávy" "Úložiště" @@ -788,4 +789,5 @@ "Aplikace běžící na pozadí" "Klepnutím zobrazíte podrobnosti o využití baterie a dat" "Vypnout mobilní data?" + "Žádost o oprávnění je blokována jinou aplikací. Nastavení proto vaši odpověď nemůže ověřit." diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index b847e6f07aa67561113506dfb6e72194dcabf2ac..1411fe8f087a8cb82332b01152b592173c53968f 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -64,7 +64,7 @@ "Fingeraftrykket for computerens RSA-nøgle er:\n%1$s" "Tillad altid fra denne computer" "USB-fejlretning er ikke tilladt" - "Den bruger, der i øjeblikket er logget ind på denne enhed, kan ikke aktivere USB-fejlretning. Skift til en administratorbruger for at bruge denne funktion." + "Den bruger, der i øjeblikket er logget ind på denne enhed, kan ikke aktivere USB-fejlretning. Skift til den primære bruger for at bruge denne funktion." "Zoom til fuld skærm" "Stræk til fuld skærm" "Gemmer screenshot..." @@ -255,7 +255,7 @@ %s underretning mere i gruppen. %s underretninger mere i gruppen. - "Indstillinger for underretninger" + "Underretningsindstillinger" "Indstillinger for %s" "Skærmen roterer automatisk." "Skærmen er nu låst i liggende retning." @@ -353,10 +353,10 @@ "Søgning" "Glid op for at %s." "Glid til venstre for at %s." - "Du bliver ikke forstyrret af lyde eller vibrationer, undtagen fra alarmer, påmindelser, begivenheder og opkald fra personer, du angiver. Du kan stadig høre alt, du vælger at afspille, bl.a. musik samt lyd i videoer og spil." - "Du bliver ikke forstyrret af lyde eller vibrationer, undtagen fra alarmer. Du kan stadig høre alt, du vælger at afspille, bl.a. musik samt lyd i videoer og spil." + "Du bliver ikke forstyrret af lyde eller vibrationer, undtagen fra alarmer, påmindelser, begivenheder og opkald fra udvalgte personer, du selv angiver. Du kan stadig høre alt, du vælger at afspille, f.eks. musik, videoer og spil." + "Du bliver ikke forstyrret af lyde eller vibrationer, undtagen fra alarmer. Du kan stadig høre alt, du vælger at afspille, f.eks. musik, videoer og spil." "Tilpas" - "Dette blokerer ALLE lyde og vibrationer, bl.a. fra alarmer, musik, videoer og spil. Du vil stadig kunne foretage telefonopkald." + "Dette blokerer ALLE lyde og vibrationer, bl.a. fra alarmer, musik, videoer og spil. Du vil stadig kunne foretage telefonopkald." "Dette blokerer ALLE lyde og vibrationer, bl.a. fra alarmer, musik, videoer og spil." "+%d" "Mindre presserende underretninger nedenfor" @@ -456,7 +456,7 @@ "Få flere oplysninger" "Du har forbindelse til %1$s, som kan overvåge din netværksaktivitet, bl.a. e-mails, apps og websites." " " - "Åbn VPN-indstillinger" + "Åbn VPN-indstillinger" " " "Åbn pålidelige loginoplysninger" "Din administrator har aktiveret netværksregistrering, som overvåger trafik på din enhed.\n\nKontakt din administrator for at få flere oplysninger." @@ -556,8 +556,8 @@ "Denne app har ingen underretningskategorier" "Underretninger fra denne app kan ikke deaktiveres" - 1 ud af %d underretningskategori fra denne app - 1 ud af %d underretningskategorier fra denne app + 1 ud af %s underretningskategori fra denne app + 1 ud af %s underretningskategorier fra denne app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minutter "Batteriforbrug" - "Batterisparefunktionen er ikke tilgængelig under opladning" - "Batterisparefunktion" + "Batterisparefunktionen er ikke tilgængelig under opladning" + "Batterisparefunktion" "Reducerer ydeevne og baggrundsdata" "%1$s-knap" "Home" @@ -726,9 +726,9 @@ "Minimer" "Luk" "Træk nedad for at afvise" - "Menu for integreret billede" + "Menu" "%s vises som integreret billede" - "Hvis du ikke ønsker, at %s skal benytte denne funktion, kan du åbne indstillingerne og deaktivere den." + "Hvis du ikke ønsker, at %s skal benytte denne funktion, kan du åbne indstillingerne og deaktivere den." "Afspil" "Sæt på pause" "Gå videre til næste" @@ -754,6 +754,7 @@ "Menu" "Appen %1$s" "Underretninger" + "Batteri" "Screenshots" "Generelle meddelelser" "Lagerplads" @@ -774,4 +775,5 @@ "Apps, der kører i baggrunden" "Tryk for at se oplysninger om batteri- og dataforbrug" "Vil du deaktivere mobildata?" + "Indstillinger kan ikke bekræfte dit svar, da en app dækker for en anmodning om tilladelse." diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index b0afce8b8da0c99ebc0d29bff074b2a009007f69..46dcf3e7b4cc47b0f2a936a72fba9aac3d57dda1 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -64,7 +64,7 @@ "Der Fingerabdruck des RSA-Schlüssels für diesen Computer lautet: \n%1$s" "Von diesem Computer immer zulassen" "USB-Debugging nicht zulässig" - "Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Wechsle zu einem Administratorkonto, um diese Funktion nutzen zu können." + "Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Um diese Funktion verwenden zu können, wechsle zum primären Nutzer." "Zoom auf Bildschirmgröße" "Auf Bildschirmgröße anpassen" "Screenshot wird gespeichert..." @@ -357,10 +357,10 @@ "Suche" "Zum %s nach oben schieben" "Zum %s nach links schieben" - "Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von dir festgelegten Personen. Du hörst jedoch weiterhin Sound, wenn du Musik und Videos wiedergibst oder Spiele spielst." - "Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe. Du hörst jedoch weiterhin Sound, wenn du Musik und Videos wiedergibst oder Spiele spielst." + "Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe, Erinnerungen, Termine sowie Anrufe von zuvor von dir festgelegten Personen. Du hörst jedoch weiterhin Sound, wenn du dir Musik anhörst, Videos ansiehst oder Spiele spielst." + "Klingeltöne und die Vibration werden deaktiviert, außer für Weckrufe. Du hörst jedoch weiterhin Sound, wenn du dir Musik anhörst, Videos ansiehst oder Spiele spielst." "Anpassen" - "Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele. Anrufe kannst du jedoch weiterhin tätigen." + "Hierdurch werden ALLE Klingeltöne und die Vibration deaktiviert, auch für Weckrufe, Musik, Videos und Spiele. Du kannst aber weiterhin selbst anrufen." "Hierdurch werden alle Klingeltöne und Vibrationsalarme stummgeschaltet, auch für Weckrufe, Musik, Videos und Spiele." "+%d" "Weniger dringende Benachrichtigungen unten" @@ -460,7 +460,7 @@ "Weitere Informationen" "Du bist mit %1$s verbunden. Die VPN-App kann deine Netzwerkaktivitäten (E-Mails, Apps und Websites) erfassen." " " - "VPN-Einstellungen öffnen" + "VPN-Einstellungen öffnen" " " "Vertrauenswürdige Anmeldedaten öffnen" "Dein Administrator hat die Netzwerkprotokollierung aktiviert. Damit wird der Verkehr auf deinem Gerät erfasst.\n\nWeitere Informationen erhältst du von deinem Administrator." @@ -560,8 +560,8 @@ "Diese App hat keine Benachrichtigungskategorien" "Benachrichtigungen von dieser App können nicht deaktiviert werden" - 1 von %d Benachrichtigungskategorien von dieser App - 1 von %d Benachrichtigungskategorie von dieser App + 1 von %s Benachrichtigungskategorien von dieser App + 1 von %s Benachrichtigungskategorie von dieser App "%1$s, %2$s" @@ -589,8 +589,8 @@ %d Minute "Akkunutzung" - "Der Energiesparmodus ist beim Aufladen nicht verfügbar." - "Energiesparmodus" + "Der Energiesparmodus ist beim Aufladen nicht verfügbar" + "Energiesparmodus" "Reduzierung der Leistung und Hintergrunddaten" "Taste %1$s" "Pos1" @@ -730,9 +730,9 @@ "Minimieren" "Schließen" "Zum Schließen nach unten ziehen" - "Menü \"Bild im Bild\"" + "Menü" "%s ist in Bild im Bild" - "Wenn du nicht möchtest, dass %s diese Funktion verwendet, tippe, um die Einstellungen zu öffnen und die Funktion zu deaktivieren." + "Wenn du nicht möchtest, dass %s diese Funktion verwendet, tippe, um die Einstellungen zu öffnen und die Funktion zu deaktivieren." "Wiedergeben" "Pausieren" "Vorwärts springen" @@ -758,6 +758,7 @@ "Menü" "App \"%1$s\"" "Warnmeldungen" + "Akku" "Screenshots" "Nachrichten" "Speicher" @@ -778,4 +779,5 @@ "Apps, die im Hintergrund ausgeführt werden" "Für Details zur Akku- und Datennutzung tippen" "Mobile Daten deaktivieren?" + "Deine Eingabe wird von \"Einstellungen\" nicht erkannt, weil die Berechtigungsanfrage von einer App verdeckt wird." diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 0b7e7ea127e41c8671a6ce7461b39729f29a437c..b2716a6114eee8aaf33e8a9509e834a4b23373fe 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -64,7 +64,7 @@ "Το μοναδικό χαρακτηριστικό του κλειδιού RSA είναι:\n%1$s" "Να επιτρέπεται πάντα από αυτόν τον υπολογιστή" "Δεν επιτρέπεται ο εντοπισμός σφαλμάτων USB" - "Ο χρήστης που είναι συνδεδεμένος αυτήν τη στιγμή σε αυτήν τη συσκευή δεν μπορεί να ενεργοποιήσει τον εντοπισμό σφαλμάτων USB. Για να χρησιμοποιήσετε αυτήν τη λειτουργία, κάντε εναλλαγή στον χρήστη Διαχειριστή." + "Ο χρήστης που είναι συνδεδεμένος αυτήν τη στιγμή σε αυτήν τη συσκευή δεν μπορεί να ενεργοποιήσει τον εντοπισμό σφαλμάτων USB. Για να χρησιμοποιήσετε αυτήν τη λειτουργία, κάντε εναλλαγή στον κύριο χρήστη." "Ζουμ σε πλήρη οθόνη" "Προβoλή σε πλήρη οθ." "Αποθήκ. στιγμιότυπου οθόνης..." @@ -353,10 +353,10 @@ "Αναζήτηση" "Κύλιση προς τα επάνω για %s." "Κύλιση προς τα αριστερά για %s." - "Δεν θα ενοχλείστε από ήχους και δονήσεις, παρά μόνο από ξυπνητήρια, υπενθυμίσεις, συμβάντα και καλούντες που έχετε καθορίσει. Θα εξακολουθείτε να ακούτε όλο το περιεχόμενο που επιλέγετε να αναπαραγάγετε, συμπεριλαμβανομένων μουσικής, βίντεο και παιχνιδιών." - "Δεν θα ενοχλείστε από ήχους και δονήσεις, παρά μόνο από ξυπνητήρια. Θα εξακολουθείτε να ακούτε όλο το περιεχόμενο που επιλέγετε να αναπαραγάγετε, συμπεριλαμβανομένων μουσικής, βίντεο και παιχνιδιών." + "Δεν θα ενοχλείστε από ήχους και δονήσεις, παρά μόνο από ξυπνητήρια, υπενθυμίσεις, συμβάντα και καλούντες που έχετε καθορίσει. Θα εξακολουθείτε να ακούτε όλο το περιεχόμενο που επιλέγετε να αναπαραγάγετε, συμπεριλαμβανομένης της μουσικής, των βίντεο και των παιχνιδιών." + "Δεν θα ενοχλείστε από ήχους και δονήσεις, παρά μόνο από ξυπνητήρια. Θα εξακολουθείτε να ακούτε όλο το περιεχόμενο που επιλέγετε να αναπαραγάγετε, συμπεριλαμβανομένης της μουσικής, των βίντεο και των παιχνιδιών." "Προσαρμογή" - "Αυτή η επιλογή αποκλείει όλους τους ήχους και τις δονήσεις, μεταξύ των οποίων των ξυπνητηριών, της μουσικής, των βίντεο και των παιχνιδιών. Θα εξακολουθείτε να είστε σε θέση να πραγματοποιήσετε τηλεφωνικές κλήσεις." + "Αυτή η επιλογή αποκλείει όλους τους ήχους και τις δονήσεις, όπως είναι οι ήχοι και οι δονήσεις από ξυπνητήρια, μουσική, βίντεο και παιχνίδια. Θα μπορείτε ακόμη να κάνετε τηλεφωνικές κλήσεις." "Αυτή η επιλογή αποκλείει όλους τους ήχους και τις δονήσεις, μεταξύ των οποίων των ξυπνητηριών, της μουσικής, των βίντεο και των παιχνιδιών." "+%d" "Λιγότερο επείγουσες ειδοποιήσεις παρακάτω" @@ -456,7 +456,7 @@ "Μάθετε περισσότερα" "Έχετε συνδεθεί στην εφαρμογή %1$s, η οποία μπορεί να παρακολουθεί τη δραστηριότητα δικτύου σας, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων." " " - "Άνοιγμα Ρυθμίσεων VPN" + "Άνοιγμα Ρυθμίσεων VPN" " " "Άνοιγμα αξιόπιστων διαπιστευτηρίων" "Ο διαχειριστής σας έχει ενεργοποιήσει την καταγραφή δικτύου, η οποία παρακολουθεί την επισκεψιμότητα στη συσκευή σας.\n\nΓια περισσότερες πληροφορίες, επικοινωνήστε με τον διαχειριστή σας." @@ -556,8 +556,8 @@ "Αυτή η εφαρμογή δεν διαθέτει κατηγορίες ειδοποιήσεων" "Οι ειδοποιήσεις από αυτήν την εφαρμογή δεν μπορούν να απενεργοποιηθούν" - 1 από %d κατηγορίες ειδοποιήσεων από αυτή την εφαρμογή - 1 από %d κατηγορία ειδοποιήσεων από αυτή την εφαρμογή + 1 από %s κατηγορίες ειδοποιήσεων από αυτή την εφαρμογή + 1 από %s κατηγορία ειδοποιήσεων από αυτή την εφαρμογή "%1$s, %2$s" @@ -585,8 +585,8 @@ %d λεπτό "Χρήση της μπαταρίας" - "Η εξοικονόμηση μπαταρίας δεν είναι διαθέσιμη κατά τη διάρκεια της φόρτισης" - "Εξοικονόμηση μπαταρίας" + "Η Εξοικονόμηση μπαταρίας δεν είναι διαθέσιμη κατά τη διάρκεια της φόρτισης" + "Εξοικονόμηση μπαταρίας" "Μειώνει την απόδοση και τα δεδομένα παρασκηνίου" "Κουμπί %1$s" "Home" @@ -726,9 +726,9 @@ "Ελαχιστοποίηση" "Κλείσιμο" "Σύρετε προς τα κάτω για παράβλεψη" - "Μενού λειτουργίας Picture in picture" + "Μενού" "Η λειτουργία picture-in-picture είναι ενεργή σε %s." - "Εάν δεν θέλετε να χρησιμοποιείται αυτή η λειτουργία από την εφαρμογή %s, πατήστε για να ανοίξετε τις ρυθμίσεις και απενεργοποιήστε την." + "Εάν δεν θέλετε να χρησιμοποιείται αυτή η λειτουργία από την εφαρμογή %s, πατήστε για να ανοίξετε τις ρυθμίσεις και απενεργοποιήστε την." "Αναπαραγωγή" "Παύση" "Μετάβαση στο επόμενο" @@ -754,6 +754,7 @@ "Μενού" "Εφαρμογή %1$s" "Ειδοποιήσεις" + "Μπαταρία" "Στιγμιότυπα οθόνης" "Γενικά μηνύματα" "Αποθηκευτικός χώρος" @@ -774,4 +775,5 @@ "Εφαρμογές που εκτελούνται στο παρασκήνιο" "Πατήστε για λεπτομέρειες σχετικά με τη χρήση μπαταρίας και δεδομένων" "Απενεργοποίηση δεδομένων κινητής τηλεφωνίας;" + "Επειδή μια εφαρμογή αποκρύπτει ένα αίτημα άδειας, δεν είναι δυνατή η επαλήθευση της απάντησής σας από τις Ρυθμίσεις." diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 4d90d5b3ba5f138d70a6de88e14198140899fc8b..fe17a2d8bc0c3d0d2dfa0b6906ee436f8cc13e7a 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -64,7 +64,7 @@ "The computer\'s RSA key fingerprint is:\n%1$s" "Always allow from this computer" "USB debugging not allowed" - "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, please switch to an Admin user." + "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user." "Zoom to fill screen" "Stretch to fill screen" "Saving screenshot…" @@ -353,10 +353,10 @@ "Search" "Slide up for %s." "Slide left for %s." - "You won’t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers that you specify. You\'ll still hear anything that you choose to play, including music, videos and games." - "You won’t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything that you choose to play, including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers you specify. You\'ll still hear anything you choose to play including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything you choose to play including music, videos and games." "Customise" - "This blocks ALL sounds and vibrations, including from alarms, music, videos and games. You’ll still be able to make phone calls." + "This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. You\'ll still be able to make phone calls." "This blocks ALL sounds and vibrations, including from alarms, music, videos and games." "+%d" "Less urgent notifications below" @@ -456,7 +456,7 @@ "Find out more" "You\'re connected to %1$s, which can monitor your network activity, including emails, apps and websites." " " - "Open VPN Settings" + "Open VPN settings" " " "Open trusted credentials" "Your admin has turned on network logging, which monitors traffic on your device.\n\nFor more information, contact your admin." @@ -556,8 +556,8 @@ "This app doesn\'t have notification categories" "Notifications from this app can\'t be turned off" - 1 out of %d notification categories from this app - 1 out of %d notification category from this app + 1 out of %s notification categories from this app + 1 out of %s notification category from this app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minute "Battery usage" - "Battery Saver not available during charging" - "Battery Saver" + "Battery Saver not available during charging" + "Battery Saver" "Reduces performance and background data" "Button %1$s" "Home" @@ -726,9 +726,9 @@ "Minimise" "Close" "Drag down to dismiss" - "Picture in picture menu" + "Menu" "%s is in picture-in-picture" - "If you don’t want %s to use this feature, tap to open settings and turn it off." + "If you don\'t want %s to use this feature, tap to open settings and turn it off." "Play" "Pause" "Skip to next" @@ -754,6 +754,7 @@ "Menu" "%1$s app" "Alerts" + "Battery" "Screenshots" "General Messages" "Storage" @@ -774,4 +775,5 @@ "Apps running in background" "Tap for details on battery and data usage" "Turn off mobile data?" + "Because an app is obscuring a permission request, Settings can’t verify your response." diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 4d90d5b3ba5f138d70a6de88e14198140899fc8b..fe17a2d8bc0c3d0d2dfa0b6906ee436f8cc13e7a 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -64,7 +64,7 @@ "The computer\'s RSA key fingerprint is:\n%1$s" "Always allow from this computer" "USB debugging not allowed" - "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, please switch to an Admin user." + "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user." "Zoom to fill screen" "Stretch to fill screen" "Saving screenshot…" @@ -353,10 +353,10 @@ "Search" "Slide up for %s." "Slide left for %s." - "You won’t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers that you specify. You\'ll still hear anything that you choose to play, including music, videos and games." - "You won’t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything that you choose to play, including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers you specify. You\'ll still hear anything you choose to play including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything you choose to play including music, videos and games." "Customise" - "This blocks ALL sounds and vibrations, including from alarms, music, videos and games. You’ll still be able to make phone calls." + "This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. You\'ll still be able to make phone calls." "This blocks ALL sounds and vibrations, including from alarms, music, videos and games." "+%d" "Less urgent notifications below" @@ -456,7 +456,7 @@ "Find out more" "You\'re connected to %1$s, which can monitor your network activity, including emails, apps and websites." " " - "Open VPN Settings" + "Open VPN settings" " " "Open trusted credentials" "Your admin has turned on network logging, which monitors traffic on your device.\n\nFor more information, contact your admin." @@ -556,8 +556,8 @@ "This app doesn\'t have notification categories" "Notifications from this app can\'t be turned off" - 1 out of %d notification categories from this app - 1 out of %d notification category from this app + 1 out of %s notification categories from this app + 1 out of %s notification category from this app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minute "Battery usage" - "Battery Saver not available during charging" - "Battery Saver" + "Battery Saver not available during charging" + "Battery Saver" "Reduces performance and background data" "Button %1$s" "Home" @@ -726,9 +726,9 @@ "Minimise" "Close" "Drag down to dismiss" - "Picture in picture menu" + "Menu" "%s is in picture-in-picture" - "If you don’t want %s to use this feature, tap to open settings and turn it off." + "If you don\'t want %s to use this feature, tap to open settings and turn it off." "Play" "Pause" "Skip to next" @@ -754,6 +754,7 @@ "Menu" "%1$s app" "Alerts" + "Battery" "Screenshots" "General Messages" "Storage" @@ -774,4 +775,5 @@ "Apps running in background" "Tap for details on battery and data usage" "Turn off mobile data?" + "Because an app is obscuring a permission request, Settings can’t verify your response." diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 4d90d5b3ba5f138d70a6de88e14198140899fc8b..fe17a2d8bc0c3d0d2dfa0b6906ee436f8cc13e7a 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -64,7 +64,7 @@ "The computer\'s RSA key fingerprint is:\n%1$s" "Always allow from this computer" "USB debugging not allowed" - "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, please switch to an Admin user." + "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user." "Zoom to fill screen" "Stretch to fill screen" "Saving screenshot…" @@ -353,10 +353,10 @@ "Search" "Slide up for %s." "Slide left for %s." - "You won’t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers that you specify. You\'ll still hear anything that you choose to play, including music, videos and games." - "You won’t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything that you choose to play, including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms, reminders, events and callers you specify. You\'ll still hear anything you choose to play including music, videos and games." + "You won\'t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything you choose to play including music, videos and games." "Customise" - "This blocks ALL sounds and vibrations, including from alarms, music, videos and games. You’ll still be able to make phone calls." + "This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. You\'ll still be able to make phone calls." "This blocks ALL sounds and vibrations, including from alarms, music, videos and games." "+%d" "Less urgent notifications below" @@ -456,7 +456,7 @@ "Find out more" "You\'re connected to %1$s, which can monitor your network activity, including emails, apps and websites." " " - "Open VPN Settings" + "Open VPN settings" " " "Open trusted credentials" "Your admin has turned on network logging, which monitors traffic on your device.\n\nFor more information, contact your admin." @@ -556,8 +556,8 @@ "This app doesn\'t have notification categories" "Notifications from this app can\'t be turned off" - 1 out of %d notification categories from this app - 1 out of %d notification category from this app + 1 out of %s notification categories from this app + 1 out of %s notification category from this app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minute "Battery usage" - "Battery Saver not available during charging" - "Battery Saver" + "Battery Saver not available during charging" + "Battery Saver" "Reduces performance and background data" "Button %1$s" "Home" @@ -726,9 +726,9 @@ "Minimise" "Close" "Drag down to dismiss" - "Picture in picture menu" + "Menu" "%s is in picture-in-picture" - "If you don’t want %s to use this feature, tap to open settings and turn it off." + "If you don\'t want %s to use this feature, tap to open settings and turn it off." "Play" "Pause" "Skip to next" @@ -754,6 +754,7 @@ "Menu" "%1$s app" "Alerts" + "Battery" "Screenshots" "General Messages" "Storage" @@ -774,4 +775,5 @@ "Apps running in background" "Tap for details on battery and data usage" "Turn off mobile data?" + "Because an app is obscuring a permission request, Settings can’t verify your response." diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index d6c97b738e16ee6f545de588efccef64fd48e765..8db0a9961453c00315c132cd8b113c6b99b048c7 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -64,7 +64,7 @@ "La huella digital de tu clave RSA es:\n%1$s" "Permitir siempre desde esta computadora" "No tienes permitida la depuración por USB" - "El usuario conectado con este dispositivo en este momento no puede activar la depuración por USB. Para usar esta función, debes cambiar a un usuario administrador." + "El usuario al que accediste en este dispositivo no puede activar la depuración por USB. Para usar esta función, debes cambiar al usuario principal." "Zoom para ocupar la pantalla" "Estirar p/ ocupar la pantalla" "Guardando captura de pantalla" @@ -355,10 +355,10 @@ "Buscar" "Desliza el dedo hacia arriba para %s." "Desliza el dedo hacia la izquierda para %s." - "No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas de los emisores que especifiques. Seguirás escuchando el contenido que reproduzcas, como música, videos y juegos." - "No te molestarán los sonidos ni las vibraciones, excepto las alarmas. Seguirás escuchando el contenido que reproduzcas, como música, videos y juegos." + "No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas de los emisores que especifiques. Podrás escuchar el contenido que reproduzcas, como música, videos y juegos." + "No te molestarán los sonidos ni las vibraciones, excepto las alarmas. Podrás escuchar el contenido que reproduzcas, como música, videos y juegos." "Personalizar" - "Esta acción bloquea TODOS los sonidos y las vibraciones, incluidas las que provienen de alarmas, videos y juegos. Podrás realizar llamadas telefónicas." + "Esta acción bloquea TODOS los sonidos y las vibraciones, incluso las alarmas, los videos y los juegos. Podrás realizar llamadas telefónicas." "Esta acción bloquea TODOS los sonidos y las vibraciones, incluso los que provienen de alarmas, música, videos y juegos." "+%d" "Notificaciones menos urgentes abajo" @@ -458,7 +458,7 @@ "Más información" "Estás conectado a %1$s, que puede controlar la actividad de tu red, incluidos los correos electrónicos, las apps y los sitios web." " " - "Abrir configuración de VPN" + "Abrir configuración de VPN" " " "Abrir credenciales de confianza" "Tu administrador activó el registro de red, que controla el tráfico en tu dispositivo.\n\nComunícate con él para obtener más información." @@ -558,8 +558,8 @@ "Esta app no tiene categorías de notificación" "No es posible desactivar las notificaciones de esta app" - 1 de %d categorías de notificación de esta app - 1 de %d categoría de notificación de esta app + 1 de %s categorías de notificación de esta app + 1 de %s categoría de notificación de esta app "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minuto "Uso de la batería" - "Ahorro de batería no está disponible durante la carga" - "Ahorro de batería" + "El Ahorro de batería no está disponible durante la carga" + "Ahorro de batería" "Reduce el rendimiento y el uso de datos en segundo plano" "Botón %1$s" "Página principal" @@ -728,9 +728,9 @@ "Minimizar" "Cerrar" "Arrastra hacia abajo para descartar" - "Menú de Imagen en imagen" + "Menú" "%s está en modo de imagen en imagen" - "Si no quieres que %s use esta función, presiona para abrir la configuración y desactivarla." + "Si no quieres que %s use esta función, presiona para abrir la configuración y desactivarla." "Reproducir" "Pausar" "Siguiente" @@ -756,6 +756,7 @@ "Menú" "App de %1$s" "Alertas" + "Batería" "Capturas de pantalla" "Mensajes generales" "Almacenamiento" @@ -776,4 +777,5 @@ "Apps que se ejecutan en segundo plano" "Presiona para obtener información sobre el uso de datos y de la batería" "¿Deseas desactivar los datos móviles?" + "Como una app está bloqueando una solicitud de permiso, Configuración no puede verificar tu respuesta." diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 8c65c4a31a37529c85fc952d80c385a94cae5dd4..6eabfc08788cbe15d025efc9ad307e2e5b3ab802 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -64,7 +64,7 @@ "La huella digital de tu clave RSA es:\n%1$s" "Permitir siempre desde este ordenador" "Depuración USB no permitida" - "El usuario que ha iniciado sesión en este dispositivo no puede activar la depuración USB. Para hacerlo, debes utilizar una cuenta de administrador." + "El usuario con el que se ha iniciado sesión en este dispositivo no puede activar la depuración USB. Para utilizar esta función, inicia sesión con la cuenta de usuario principal." "Zoom para ajustar" "Expandir para ajustar" "Guardando captura..." @@ -355,10 +355,10 @@ "Buscar" "Desliza el dedo hacia arriba para %s." "Desliza el dedo hacia la izquierda para %s." - "No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas que especifiques. Seguirás escuchando el contenido que quieras reproducir, como música, vídeos y juegos." - "No te molestarán los sonidos ni las vibraciones, excepto las alarmas. Seguirás escuchando el contenido que quieras reproducir, como música, vídeos y juegos." + "No te molestarán los sonidos ni las vibraciones, excepto las alarmas, los recordatorios, los eventos y las llamadas que especifiques. Seguirás escuchando el contenido que quieras reproducir, como música, vídeos y juegos." + "No te molestarán los sonidos ni las vibraciones, excepto las alarmas. Seguirás escuchando el contenido que quieras reproducir, como música, vídeos y juegos." "Personalizar" - "Este modo permite bloquear TODOS los sonidos y todas las vibraciones (p. ej., los de alarmas, música, vídeos y juegos). Seguirás pudiendo hacer llamadas de teléfono." + "Esta opción bloqueará TODOS los sonidos y todas las vibraciones, por ejemplo, los vídeos, los juegos, las alarmas y la música. Seguirás pudiendo hacer llamadas." "Este modo permite bloquear TODOS los sonidos y todas las vibraciones (p. ej., los de alarmas, música, vídeos y juegos)." "+%d" "Notificaciones menos urgente abajo" @@ -458,7 +458,7 @@ "Más información" "Te has conectado a %1$s, que puede controlar tu actividad de red, como los correos electrónicos, las aplicaciones y los sitios web." " " - "Abrir Ajustes de red VPN" + "Abrir ajustes de VPN" " " "Abrir credenciales de confianza" "Tu administrador ha activado el registro de la red para supervisar el tráfico en tu dispositivo.\n\nPonte en contacto con él para obtener más información." @@ -558,8 +558,8 @@ "Esta aplicación no tiene categorías de notificación" "No se pueden desactivar las notificaciones de esta aplicación" - 1 de %d categorías de notificación de esta aplicación - 1 de %d categoría de notificación de esta aplicación + 1 de %s categorías de notificación de esta aplicación + 1 de %s categoría de notificación de esta aplicación "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minuto "Uso de la batería" - "Ahorro de batería no disponible mientras se carga el dispositivo" - "Ahorro de batería" + "La función Ahorro de batería no está disponible mientras se carga el dispositivo" + "Ahorro de batería" "Reduce el rendimiento y los datos en segundo plano" "Botón %1$s" "Inicio" @@ -728,9 +728,9 @@ "Minimizar" "Cerrar" "Arrastra hacia abajo para ignorar" - "Menú del modo Imagen en imagen" + "Menú" "%s está en imagen en imagen" - "Si no quieres que %s utilice esta función, toca la notificación para abrir los ajustes y desactivarla." + "Si no quieres que %s utilice esta función, toca la notificación para abrir los ajustes y desactivarla." "Reproducir" "Pausar" "Saltar al siguiente" @@ -756,6 +756,7 @@ "Menú" "Aplicación %1$s" "Alertas" + "Batería" "Capturas de pantalla" "Mensajes generales" "Almacenamiento" @@ -776,4 +777,5 @@ "Aplicaciones que se están ejecutando en segundo plano" "Toca para ver información detallada sobre el uso de datos y de la batería" "¿Desactivar los datos móviles?" + "Una aplicación impide ver una solicitud de permiso, por lo que Ajustes no puede verificar tu respuesta." diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 3d3c5dc5facd9687dbe3fc77a897b244e9263b65..2fc49ffffe21cebdf030a444a3676f1a374e195c 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -64,7 +64,7 @@ "Arvuti RSA-võtme sõrmejälg:\n%1$s" "Luba alati sellest arvutist" "USB-silumine pole lubatud" - "Sellesse seadmesse praegu sisse logitud kasutaja ei saa USB-silumist sisse lülitada. Selle funktsiooni kasutamiseks lülitage administraatorile." + "Sellesse seadmesse praegu sisse logitud kasutaja ei saa USB-silumist sisse lülitada. Selle funktsiooni kasutamiseks vahetage peamisele kasutajale." "Suumi ekraani täitmiseks" "Venita ekraani täitmiseks" "Kuvatõmmise salvestamine ..." @@ -355,10 +355,10 @@ "Otsing" "Lohistage üles: %s." "Lohistage vasakule: %s." - "Helid ja värinad ei sega teid. Kuulete siiski enda määratud äratusi, meeldetuletusi, sündmusi ja helistajaid. Samuti kuulete kõike, mille esitamise ise valite, sh muusika, videod ja mängud." - "Helid ja värinad ei sega teid. Kuulete siiski äratusi. Samuti kuulete kõike, mille esitamise ise valite, sh muusika, videod ja mängud." + "Helid ja värinad ei sega teid. Kuulete siiski enda määratud äratusi, meeldetuletusi, sündmusi ja helistajaid. Samuti kuulete kõike, mille esitamise ise valite, sh muusika, videod ja mängud." + "Helid ja värinad ei sega teid. Kuulete siiski äratusi. Samuti kuulete kõike, mille esitamise ise valite, sh muusika, videod ja mängud." "Kohanda" - "See blokeerib KÕIK – sealhulgas alarmide, muusika, videote ja mängude – helid ja värinad. Saate siiski helistada." + "See blokeerib KÕIK helid ja vibratsioonid, sh alarmid, muusika, videod ja mängud. Siiski saate helistada." "See blokeerib KÕIK – sealhulgas alarmide, muusika, videote ja mängude – helid ja vibratsioonid." "+%d" "Vähem kiireloomulised märguanded on allpool" @@ -458,7 +458,7 @@ "Lisateave" "Olete ühendatud rakendusega %1$s, mis saab jälgida teie võrgutegevusi, sh meile, rakendusi ja veebisaite." " " - "Ava VPN-i seaded" + "VPN-i seadete avamine" " " "Ava usaldusväärsed mandaadid" "Teie administraator on sisse lülitanud võrgu logimise funktsiooni, mis jälgib teie seadmes liiklust.\n\nLisateabe saamiseks võtke ühendust administraatoriga." @@ -558,8 +558,8 @@ "Sellel rakendusel ei ole märguannete kategooriaid" "Selle rakenduse märguandeid ei saa välja lülitada" - 1 %d-st märguannete kategooriast sellelt rakenduselt - 1 %d-st märguannete kategooriast sellelt rakenduselt + 1 %s-st märguannete kategooriast sellelt rakenduselt + 1 %s-st märguannete kategooriast sellelt rakenduselt "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minut "Akukasutus" - "Akusäästja pole laadimise ajal saadaval" - "Akusäästja" + "Akusäästja pole laadimise ajal saadaval" + "Akusäästja" "Vähendab jõudlust ja taustaandmeid" "Nupp %1$s" "Avaekraan" @@ -728,9 +728,9 @@ "Minimeeri" "Sule" "Loobumiseks lohistage alla" - "Menüü Pilt pildis" + "Menüü" "%s on režiimis Pilt pildis" - "Kui te ei soovi, et rakendus %s seda funktsiooni kasutaks, puudutage seadete avamiseks ja lülitage see välja." + "Kui te ei soovi, et rakendus %s seda funktsiooni kasutaks, puudutage seadete avamiseks ja lülitage see välja." "Esita" "Peata" "Järgmise juurde" @@ -756,6 +756,7 @@ "Menüü" "Rakendus %1$s" "Teatised" + "Aku" "Ekraanipildid" "Üldised sõnumid" "Salvestusruum" @@ -776,4 +777,5 @@ "Rakendusi käitatakse taustal" "Aku ja andmekasutuse üksikasjade nägemiseks puudutage" "Kas lülitada mobiilne andmeside välja?" + "Seaded ei saa teie vastust kinnitada, sest rakendus varjab loataotlust." diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index ddbf5bc9ecf1f5b1926bf1b88686b8a5af21faf2..cd0e9a81277c7012cd09554ec0ed062539f69032 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -64,7 +64,7 @@ "Ordenagailuaren RSA gakoaren hatz-marka hau da:\n%1$s" "Onartu beti ordenagailu honetatik" "Ez da onartzen USB arazketa" - "Gailu honetan saioa hasita duen erabiltzaileak ezin du USB arazketa aktibatu. Eginbide hori erabiltzeko, aldatu administratzaile-erabiltzailera." + "Gailu honetan saioa hasita duen erabiltzaileak ezin du aktibatu USB arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira." "Handiagotu pantaila betetzeko" "Luzatu pantaila betetzeko" "Pantaila-argazkia gordetzen…" @@ -355,10 +355,10 @@ "Bilatu" "Lerratu gora hau egiteko: %s." "Lerratu ezkerrera hau egiteko: %s." - "Gailuak ez du egingo ez soinurik ez dardararik, baina alarmak, gertaeren abisu-tonuak eta aukeratzen dituzun deitzaileen dei-tonuak joko ditu. Bestalde, zuk erreproduzitutako guztia entzungo duzu, besteak beste, musika, bideoak eta jokoak." - "Gailuak ez du egingo ez soinurik ez dardararik, baina alarmak joko ditu. Hala ere, zuk erreproduzitutako guztia entzun ahal izango duzu, besteak beste, musika, bideoak eta jokoak." + "Gailuak ez du egingo ez soinurik ez dardararik, baina alarmak, gertaera eta abisuen tonuak, eta aukeratzen dituzun deitzaileen dei-tonuak joko ditu. Bestalde, zuk erreproduzitutako guztia entzungo duzu, besteak beste, musika, bideoak eta jokoak." + "Gailuak ez du egingo ez soinurik ez dardararik, baina alarmak joko ditu. Hala ere, zuk erreproduzitutako guztia entzun ahal izango duzu, besteak beste, musika, bideoak eta jokoak." "Pertsonalizatu" - "Soinu eta dardara GUZTIAK blokeatuko dira, besteak beste, alarmak, musika, bideoak eta jokoak. Telefono-deiak egiteko aukera izaten jarraituko duzu." + "Soinu eta dardara GUZTIAK blokeatuko dira, besteak beste, alarmak, musika, bideoak eta jokoak. Telefono-deiak egiteko aukera izaten jarraituko duzu." "Soinu eta dardara GUZTIAK blokeatuko dira, besteak beste, alarmak, musika, bideoak eta jokoak." "+%d" "Horren premiazkoak ez diren jakinarazpenak daude behean" @@ -458,7 +458,7 @@ "Informazio gehiago" "%1$s aplikaziora konektatuta zaude eta hark sareko jarduerak gainbegira ditzake, mezu elektronikoak, aplikazioak eta webguneak barne." " " - "Ireki VPN ezarpenak" + "Ireki VPN ezarpenak" " " "Ireki kredentzial fidagarriak" "Administratzaileak sare-erregistroak aktibatu ditu; horrela, zure gailuko trafikoa gainbegira dezake.\n\nInformazio gehiago lortzeko, jarri administratzailearekin harremanetan." @@ -558,8 +558,8 @@ "Aplikazio honek ez du jakinarazpen-kategoriarik" "Ezin dira desaktibatu aplikazio honen jakinarazpenak" - Aplikazio honen 1/%d jakinarazpen-kategoria - Aplikazio honen 1/%d jakinarazpen-kategoria + Aplikazio honen 1/%s jakinarazpen-kategoria + Aplikazio honen 1/%s jakinarazpen-kategoria "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minutu "Bateriaren erabilera" - "Bateria-aurrezlea ez dago erabilgarri gailua kargatzen ari denean" - "Bateria-aurrezlea" + "Bateria-aurrezlea ez dago erabilgarri gailua kargatzen ari denean" + "Bateria-aurrezlea" "Errendimendua eta atzeko planoko datuen erabilera murrizten ditu" "%1$s botoia" "Hasiera" @@ -728,9 +728,9 @@ "Minimizatu" "Itxi" "Baztertzeko, arrastatu behera" - "Pantaila txiki gainjarriaren menua" + "Menua" "Pantaila txiki gainjarrian dago %s" - "Ez baduzu nahi %s zerbitzuak eginbide hori erabiltzea, sakatu hau ezarpenak ireki eta aukera desaktibatzeko." + "Ez baduzu nahi %s zerbitzuak eginbide hori erabiltzea, sakatu hau ezarpenak ireki eta aukera desaktibatzeko." "Erreproduzitu" "Pausatu" "Saltatu hurrengora" @@ -756,6 +756,7 @@ "Menua" "%1$s aplikazioa" "Abisuak" + "Bateria" "Pantaila-argazkiak" "Mezu orokorrak" "Memoria" @@ -776,4 +777,5 @@ "Aplikazioak exekutatzen ari dira atzeko planoan" "Sakatu bateria eta datuen erabilerari buruzko xehetasunak ikusteko" "Datu-konexioa desaktibatu nahi duzu?" + "Aplikazio bat baimen-eskaera oztopatzen ari denez, ezarpenek ezin dute egiaztatu erantzuna." diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 75495fee8ffacdf49ec34c57f5ad15e5f459a690..b3e1b4ec82399a6f5e27f16942095a50e4b8c339 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -64,7 +64,7 @@ "‏اثر انگشت کلید RSA رایانه: \n%1$s" "همیشه از این رایانه انجام شود" "‏اشکال‌زدایی USB مجاز نیست" - "‏کاربری که درحال‌حاضر در این دستگاه وارد سیستم شده نمی‌تواند اشکال‌زدای USB را روشن کند. برای استفاده از این ویژگی، لطفاً به کاربر «سرپرست» تغییر حالت دهید." + "‏کاربری که درحال حاضر در این دستگاه وارد سیستم شده است نمی‌تواند اشکال‌زدایی USB را روشن کند. برای استفاده از این قابلیت، به کاربر اصلی تغییر وضعیت دهید." "بزرگ‌نمایی برای پر کردن صفحه" "گسترده کردن برای پر کردن صفحه" "در حال ذخیره عکس صفحه‌نمایش..." @@ -353,10 +353,10 @@ "جستجو" "لغزاندن به بالا برای %s." "لغزاندن به چپ برای %s." - "بجز هشدارها، یادآوری‌ها، رویدادها و تماس‌گیرندگانی که خودتان مشخص می‌کنید، هیچ صدا و لرزشی نخواهید داشت. همچنان صدای مواردی را که پخش می‌کنید می‌شنوید از جمله صدای موسیقی، ویدیو و بازی." - "بجز هشدارها، هیچ صدا و لرزشی نخواهید داشت. همچنان صدای مواردی را که پخش می‌کنید می‌شنوید از جمله صدای موسیقی، ویدیو و بازی." + "به‌جز هشدارها، یادآوری‌ها، رویدادها و تماس‌گیرندگانی که خودتان مشخص می‌کنید، هیچ صدا و لرزشی نخواهید داشت. همچنان صدای مواردی را که پخش می‌کنید می‌شنوید (ازجمله صدای موسیقی، ویدیو و بازی)." + "به‌جز هشدارها، هیچ صدا و لرزشی نخواهید داشت. همچنان صدای مواردی را که پخش می‌کنید می‌شنوید (ازجمله صدای موسیقی، ویدیو و بازی)." "سفارشی کردن" - "این کار «همه» صداها و لرزش‌ها از جمله هشدارها، موسیقی، ویدئوها و بازی‌ها را مسدود می‌کند. همچنان می‌توانید تماس تلفنی برقرار کنید." + "این کار «همه» صداها و لرزش‌ها (شامل هشدار، موسیقی، ویدیو و بازی) را مسدود می‌کند. همچنان می‌توانید تماس تلفنی برقرار کنید." "این کار «همه» صداها و لرزش‌ها از جمله هشدارها، موسیقی، ویدئوها و بازی‌ها را مسدود می‌کند." "+%d" "اعلان‌های کمتر فوری در زیر" @@ -456,7 +456,7 @@ "بیشتر بدانید" "به %1$s وصل شده‌اید، که می‌تواند فعالیت شبکه شما را (ازجمله رایانامه‌‌ها، برنامه‌‌ها و وب‌سایت‌ها) کنترل کند." " " - "‏باز کردن تنظیمات VPN" + "‏باز کردن تنظیمات VPN" " " "باز کردن اعتبارنامه مورداعتماد" "سرپرست سیستم شما گزارش‌گیری شبکه را (که بر ترافیک دستگاهتان نظارت می‌کند) روشن کرده است.\n\nبرای اطلاعات بیشتر، با سرپرست خود تماس بگیرید." @@ -556,8 +556,8 @@ "این برنامه دسته اعلان ندارد" "نمی‌توان اعلان‌های این برنامه را خاموش کرد" - ۱ از %d دسته اعلان این برنامه - ۱ از %d دسته اعلان این برنامه + ۱ از %s دسته اعلان این برنامه + ۱ از %s دسته اعلان این برنامه "%1$s، %2$s" @@ -585,8 +585,8 @@ ‏%d دقیقه "مصرف باتری" - "هنگام شارژ شدن، «بهینه‌سازی باتری» در دسترس نیست" - "بهینه‌سازی باتری" + "«بهینه‌سازی باتری» در هنگام شارژ شدن در دسترس نیست" + "بهینه‌سازی باتری" "عملکرد و اطلاعات پس‌زمینه را کاهش می‌دهد" "دکمه %1$s" "ابتدا" @@ -726,9 +726,9 @@ "کوچک کردن" "بستن" "برای نپذیرفتن، به پایین بکشید" - "منوی تصویر در تصویر" + "منو" "%s درحالت تصویر در تصویر است" - "اگر نمی‌خواهید %s از این قابلیت استفاده کند، با ضربه زدن، تنظیمات را باز کنید و قابلیت را خاموش کنید." + "اگر نمی‌خواهید %s از این قابلیت استفاده کند، با ضربه زدن، تنظیمات را باز کنید و آن را خاموش کنید." "پخش" "توقف موقت" "رد شدن به بعدی" @@ -754,6 +754,7 @@ "منو" "%1$s برنامه" "هشدارها" + "باتری" "عکس‌های صفحه‌نمایش" "پیام‌های عمومی" "فضای ذخیره‌سازی" @@ -774,4 +775,5 @@ "برنامه‌هایی که در پس‌زمینه اجرا می‌شوند" "برای جزئیات مربوط به مصرف باتری و داده، ضربه بزنید" "داده شبکه تلفن همراه خاموش شود؟" + "چون برنامه‌ای درحال ایجاد تداخل در درخواست مجوز است، «تنظیمات» نمی‌تواند پاسخ شما را تأیید کند." diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 4ed7f1cf030e25fd0ebe55b71bcecc570d758c5d..d195a4cba38b948d075a17dfba075dd4c5af1200 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -64,14 +64,14 @@ "Tietokoneen RSA-avaintunnistetiedosto on:\n%1$s" "Salli aina tällä tietokoneella" "USB-vianetsintää ei sallita" - "Laitteelle tällä hetkellä kirjautunut käyttäjä ei voi ottaa USB-vianetsintää käyttöön. Vaihda käyttäjäksi järjestelmänvalvoja käyttääksesi tätä ominaisuutta." + "Laitteelle tällä hetkellä kirjautunut käyttäjä ei voi ottaa USB-vianetsintää käyttöön. Vaihda käyttäjäksi ensisijainen käyttäjä, jotta voit käyttää tätä ominaisuutta." "Zoomaa koko näyttöön" "Venytä koko näyttöön" "Tallennetaan kuvakaappausta..." "Tallennetaan kuvakaappausta..." "Kuvakaappausta tallennetaan." "Kuvakaappaus tallennettu" - "Tarkastele kuvakaappausta napauttamalla." + "Tarkastele kuvakaappausta napauttamalla" "Kuvakaappausta ei voitu tallentaa" "Kuvakaappausta tallennettaessa tapahtui virhe." "Kuvakaappauksen tallentaminen epäonnistui, sillä tallennustilaa ei ole riittävästi." @@ -353,10 +353,10 @@ "Haku" "Liu\'uta ylös ja %s." "Liu\'uta vasemmalle ja %s." - "Äänet ja värinät eivät häiritse sinua, paitsi jos ne ovat hälytyksiä, muistutuksia, tapahtumia tai määrittämiäsi soittajia. Kuulet edelleen kaiken valitsemasi sisällön, kuten musiikin, videot ja pelit." - "Äänet ja värinät eivät häiritse sinua, paitsi jos ne ovat hälytyksiä. Kuulet edelleen kaiken valitsemasi sisällön, kuten musiikin, videot ja pelit." + "Äänet ja värinät eivät häiritse sinua, paitsi jos ne ovat hälytyksiä, muistutuksia, tapahtumia tai määrittämiäsi soittajia. Kuulet edelleen kaiken valitsemasi sisällön, kuten musiikin, videot ja pelit." + "Äänet ja värinät eivät häiritse sinua, paitsi jos ne ovat hälytyksiä. Kuulet edelleen kaiken valitsemasi sisällön, kuten musiikin, videot ja pelit." "Muokkaa" - "Tämä estää KAIKKI äänet ja värinät, mukaan lukien hälytysten, musiikin, videoiden ja pelien äänet ja värinät. Voit kuitenkin soittaa puheluita." + "Tämä estää kaikki äänet ja värinät, mukaan lukien hälytysten, musiikin, videoiden ja pelien äänet ja värinät. Voit kuitenkin soittaa puheluita." "Tämä estää KAIKKI äänet ja värinät, mukaan lukien hälytysten, musiikin, videoiden ja pelien äänet ja värinät." "+%d" "Vähemmän kiireelliset ilmoitukset ovat alla" @@ -456,7 +456,7 @@ "Lisätietoja" "Olet yhteydessä sovellukseen %1$s, joka voi valvoa verkkotoimintaasi, esimerkiksi sähköposteja, sovelluksia ja verkkosivustoja." " " - "Avaa VPN-asetukset" + "Avaa VPN-asetukset" " " "Avaa luotetut todennustiedot" "Järjestelmänvalvoja on ottanut käyttöön verkkolokitietojen tallentamisen. Sen avulla seurataan laitteellasi tapahtuvaa liikennettä.\n\nPyydä lisätietoja järjestelmänvalvojalta." @@ -556,8 +556,8 @@ "Tällä sovelluksella ei ole ilmoitusluokkia." "Tämän sovelluksen ilmoituksia ei voi poistaa käytöstä." - Tämä sovellus: 1/%d ilmoitusluokkaa - Tämä sovellus: 1/%d ilmoitusluokkaa + Tämä sovellus: 1/%s ilmoitusluokkaa + Tämä sovellus: 1/%s ilmoitusluokkaa "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minuutti "Akun käyttö" - "Virransäästö ei ole käytettävissä latauksen aikana." - "Virransäästö" + "Virransäästö ei ole käytettävissä latauksen aikana." + "Virransäästö" "Rajoittaa suorituskykyä ja taustatiedonsiirtoa." "Painike %1$s" "Home" @@ -726,9 +726,9 @@ "Pienennä" "Sulje" "Hylkää vetämällä alas." - "Kuva kuvassa ‑valikko" + "Valikko" "%s on kuva kuvassa ‑tilassa" - "Jos et halua, että %s voi käyttää tätä ominaisuutta, avaa asetukset napauttamalla ja poista se käytöstä." + "Jos et halua, että %s voi käyttää tätä ominaisuutta, avaa asetukset napauttamalla ja poista se käytöstä." "Toista" "Keskeytä" "Siirry seuraavaan" @@ -754,6 +754,7 @@ "Valikko" "%1$s sovellus" "Ilmoitukset" + "Akku" "Kuvakaappaukset" "Yleiset viestit" "Tallennustila" @@ -774,4 +775,5 @@ "Sovelluksia käynnissä taustalla" "Katso lisätietoja akun ja datan käytöstä napauttamalla" "Poistetaanko mobiilidata käytöstä?" + "Sovellus peittää käyttöoikeuspyynnön, joten Asetukset ei voi vahvistaa valintaasi." diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 9218f760d1884d57d3f65bca8963d8c0d0dc21ca..4645eb4c02fd50feec6d7d486a12594668978afa 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -64,14 +64,14 @@ "Empreinte numérique de la clé RSA de l\'ordinateur : \n%1$s" "Toujours autoriser sur cet ordinateur" "Débogage USB non autorisé" - "L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, connectez-vous à l\'aide d\'un compte d\'administrateur." + "L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter." "Zoomer pour remplir l\'écran" "Étirer pour remplir l\'écran" "Enregistrement capture écran…" "Enregistrement capture écran…" "Enregistrement de la capture d\'écran en cours…" "Capture d\'écran réussie" - "Touchez pour afficher votre saisie d\'écran." + "Touchez pour afficher votre capture d\'écran." "Impossible de réaliser une capture d\'écran" "Une erreur s\'est produite lors de l\'enregistrement de la saisie d\'écran." "Impossible d\'enregistrer la saisie d\'écran, car l\'espace de stockage est limité." @@ -355,10 +355,10 @@ "Rechercher" "Faire glisser le doigt vers le haut : %s" "Faites glisser votre doigt vers la gauche pour %s." - "Vous ne serez pas dérangé par les sons et les vibrations, sauf pour les alarmes, les rappels, les événements et les appelants. Vous entendrez tout ce que vous choisissez d\'écouter, y compris la musique, les vidéos et les jeux." - "Vous ne serez pas dérangé par les sons et les vibrations, sauf pour les alarmes. Vous entendrez tout ce que vous choisissez d\'écouter, y compris la musique, les vidéos et les jeux." + "Vous ne serez pas dérangé par les sons et les vibrations, sauf pour les alarmes, les rappels, les événements et les appelants que vous sélectionnez. Vous entendrez tout ce que vous choisissez d\'écouter, y compris la musique, les vidéos et les jeux." + "Vous ne serez pas dérangé par les sons et les vibrations, sauf pour les alarmes. Vous entendrez tout ce que vous choisissez d\'écouter, y compris la musique, les vidéos et les jeux." "Personnaliser" - "Cette option permet de bloquer TOUS les sons et vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux. Vous pourrez quand même faire des appels téléphoniques." + "Cette option permet de bloquer TOUS les sons et vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux. Vous pourrez quand même faire des appels téléphoniques." "Cette option permet de bloquer TOUS les sons et vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux." "+%d" "Notifications moins urgentes affichées ci-dessous" @@ -458,7 +458,7 @@ "En savoir plus" "Vous êtes connecté à %1$s, qui peut contrôler votre activité réseau, y compris les courriels, les applications et les sites Web." " " - "Paramètres RPV ouverts" + "Ouvrir les paramètres RPV" " " "Ouvrir les authentifiants de confiance" "Votre administrateur a activé la journalisation réseau, qui surveille le trafic sur votre appareil.\n\nPour en savoir plus, communiquez avec lui." @@ -558,8 +558,8 @@ "Cette application n\'a pas de catégories de notification" "Les notifications de cette application ne peuvent pas être désactivées" - 1 catégorie de notification sur %d provenant de cette application - 1 catégorie de notification sur %d provenant de cette application + 1 catégorie de notification sur %s provenant de cette application + 1 catégorie de notification sur %s provenant de cette application "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minutes "Utilisation de la pile" - "Le mode Économie d\'énergie n\'est pas accessible pendant la charge" - "Économie d\'énergie" + "Le mode Économie d\'énergie n\'est pas accessible pendant la recharge" + "Économie d\'énergie" "Réduit les performances et les données en arrière-plan" "Bouton %1$s" "Accueil" @@ -728,9 +728,9 @@ "Réduire" "Fermer" "Faire glisser vers le bas pour ignorer" - "Menu d\'incrustation d\'image" + "Menu" "%s est en mode d\'incrustation d\'image" - "Si vous ne voulez pas que %s utilise cette fonctionnalité, touchez l\'écran pour ouvrir les paramètres, puis désactivez-la." + "Si vous ne voulez pas que %s utilise cette fonctionnalité, touchez l\'écran pour ouvrir les paramètres, puis désactivez-la." "Lire" "Interrompre" "Passer au suivant" @@ -756,6 +756,7 @@ "Menu" "Application %1$s" "Alertes" + "Pile" "Saisies d\'écran" "Messages généraux" "Stockage" @@ -776,4 +777,5 @@ "Applications qui fonctionnent en arrière-plan" "Touchez pour afficher des détails sur l\'utilisation de la pile et des données" "Désactiver les données cellulaires?" + "Une application obscurcit une demande d\'autorisation, alors Paramètres ne peut pas vérifier votre réponse." diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index b962ca4563033db5ff8b43768293be74acc5630d..e14f8be3c9479a943627768c64307563a4e9880e 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -64,7 +64,7 @@ "Empreinte numérique de la clé RSA de l\'ordinateur : \n%1$s" "Toujours autoriser sur cet ordinateur" "Débogage USB non autorisé" - "L\'utilisateur actuellement connecté à son compte sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, un administrateur doit se connecter." + "L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter." "Zoomer pour remplir l\'écran" "Étirer pour remplir l\'écran" "Enregistrement capture écran…" @@ -355,10 +355,10 @@ "Rechercher" "Faites glisser vers le haut pour %s." "Faites glisser vers la gauche pour %s." - "Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes, des rappels, des événements et des appels des contacts de votre choix. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux." - "Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux." + "Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes, des rappels, des événements et des appels des contacts de votre choix. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux." + "Vous ne serez dérangé par aucun son ni aucune vibration, hormis ceux des alarmes. Le son continuera de fonctionner notamment pour la musique, les vidéos et les jeux." "Personnaliser" - "Cette option permet de bloquer TOUS les sons et les vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux. Vous pourrez toujours passer des appels téléphoniques." + "Cette option permet de bloquer TOUS les sons et les vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux. Vous pourrez encore passer des appels téléphoniques." "Cette option permet de bloquer TOUS les sons et les vibrations, y compris pour les alarmes, la musique, les vidéos et les jeux." "+%d" "Notifications moins urgentes ci-dessous" @@ -458,7 +458,7 @@ "En savoir plus" "Vous êtes connecté à %1$s, qui peut contrôler votre activité sur le réseau, y compris les e-mails, les applications et les sites Web." " " - "Ouvrir les paramètres VPN" + "Ouvrir les paramètres VPN" " " "Ouvrir les certificats de confiance" "Votre administrateur a activé la journalisation réseau, qui surveille le trafic sur votre appareil.\n\nPour en savoir plus, contactez-le." @@ -558,8 +558,8 @@ "Cette application n\'a pas de catégories de notification" "Impossible de désactiver les notifications de cette application" - 1 catégorie de notification sur %d provenant de cette application - 1 catégorie de notification sur %d provenant de cette application + 1 catégorie de notification sur %s provenant de cette application + 1 catégorie de notification sur %s provenant de cette application "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minutes "Utilisation batterie" - "L\'économiseur de batterie n\'est pas disponible lorsque l\'appareil est en charge." - "Économiseur de batterie" + "L\'économiseur de batterie n\'est pas disponible lorsque l\'appareil est en charge" + "Économiseur de batterie" "Limite les performances et les données en arrière-plan." "Bouton %1$s" "Accueil" @@ -728,9 +728,9 @@ "Réduire" "Fermer" "Faire glisser vers le bas pour ignorer" - "Menu Picture-in-picture" + "Menu" "%s est en mode Picture-in-picture" - "Si vous ne voulez pas que l\'application %s utilise cette fonctionnalité, appuyez ici pour ouvrir les paramètres et la désactiver." + "Si vous ne voulez pas que l\'application %s utilise cette fonctionnalité, appuyez ici pour ouvrir les paramètres et la désactiver." "Lecture" "Suspendre" "Passer au contenu suivant" @@ -756,6 +756,7 @@ "Menu" "Application %1$s" "Alertes" + "Batterie" "Captures d\'écran" "Nouveaux messages" "Espace de stockage" @@ -776,4 +777,5 @@ "Applications en cours d\'exécution en arrière-plan" "Appuyer pour obtenir des informations sur l\'utilisation de la batterie et des données" "Désactiver les données mobiles ?" + "L\'application Paramètres ne peut pas valider votre réponse, car une application masque la demande d\'autorisation." diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 64fda6bd48f11ce915581424177d10cb959da603..62d668c95e937eedbf9ae83cb02ebfd955a73087 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -64,7 +64,7 @@ "A impresión dixital da clave de RSA do ordenador é:\n%1$s" "Permitir sempre desde este ordenador" "Non se permite a depuración por USB" - "O usuario coa sesión iniciada actualmente neste dispositivo non pode activar a depuración por USB. Para usar esta función, cambia a un usuario administrador." + "O usuario coa sesión iniciada actualmente neste dispositivo non pode activar a depuración por USB. Para utilizar esta función, cambia ao usuario principal." "Ampliar ata ocupar todo" "Estirar ata ocupar todo" "Gardando captura de pantalla…" @@ -355,10 +355,10 @@ "Buscar" "Pasa o dedo cara arriba para %s." "Pasa o dedo cara a esquerda para %s." - "Non te molestará ningún son nin vibración, agás os procedentes de alarmas, recordatorios, eventos e os emisores de chamada especificados. Seguirás escoitando todo aquilo que decidas reproducir, mesmo a música, os vídeos e os xogos." - "Non te molestará ningún son nin vibración, agás os procedentes de alarmas. Seguirás escoitando todo aquilo que decidas reproducir, mesmo a música, os vídeos e os xogos." + "Non te molestará ningún son nin vibración, agás os procedentes de alarmas, recordatorios, eventos e os emisores de chamada especificados. Seguirás escoitando todo aquilo que decidas reproducir, mesmo a música, os vídeos e os xogos." + "Non te molestará ningún son nin vibración, agás os procedentes de alarmas. Seguirás escoitando todo aquilo que decidas reproducir, mesmo a música, os vídeos e os xogos." "Personalizar" - "Esta acción bloquea TODOS os sons e vibracións, incluídos os das alarmas, música, vídeos e xogos. Aínda podes facer chamadas de teléfono." + "Esta acción bloquea TODOS os sons e vibracións, mesmo os das alarmas, música, vídeos e xogos. Podes seguir facendo chamadas de teléfono." "Esta acción bloquea TODOS os sons e vibracións, incluídos os das alarmas, música, vídeos e xogos." "+%d" "Notificacións menos urxentes abaixo" @@ -458,7 +458,7 @@ "Máis información" "Estás conectado a %1$s, que pode controlar a túa actividade na rede, mesmo os correos electrónicos, as aplicacións e os sitios web." " " - "Abrir configuración da VPN" + "Abrir configuración da VPN" " " "Abrir credenciais de confianza" "O administrador activou o rexistro na rede, que controla o tráfico do teu dispositivo.\n\nPara obter máis información, contacta co administrador." @@ -558,8 +558,8 @@ "Esta aplicación non ten categorías de notificacións" "Non se poden desactivar as notificacións desta aplicación" - 1 de %d categorías de notificacións desta aplicación - 1 de %d categoría de notificación desta aplicación + 1 de %s categorías de notificacións desta aplicación + 1 de %s categoría de notificación desta aplicación "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minuto "Uso de batería" - "A función de aforro da batería non está dispoñible durante a carga" - "Aforro de batería" + "A función Aforro de batería non está dispoñible durante a carga" + "Aforro de batería" "Reduce o rendemento e os datos en segundo plano" "Botón %1$s" "Inicio" @@ -728,9 +728,9 @@ "Minimizar" "Pechar" "Arrastra cara abaixo para ignorar" - "Menú de pantalla superposta" + "Menú" "%s está na pantalla superposta" - "Se non queres que %s utilice esta función, toca para abrir a configuración e desactivala." + "Se non queres que %s utilice esta función, toca a configuración para abrir as opcións e desactivar a función." "Reproducir" "Pausar" "Ir ao seguinte" @@ -756,6 +756,7 @@ "Menú" "Aplicación %1$s" "Alertas" + "Batería" "Capturas de pantalla" "Mensaxes xerais" "Almacenamento" @@ -776,4 +777,5 @@ "Aplicacións que se executan en segundo plano" "Toca para obter información sobre o uso de datos e a batería" "Queres desactivar os datos móbiles?" + "Dado que unha aplicación se superpón sobre unha solicitude de permiso, a configuración non pode verificar a túa resposta." diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 1a8a7f0b8fbb14295dad5ba81464607cb86b9ffb..c04da24dc0a4d37c98a58fe5a948e11062748479 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -64,7 +64,7 @@ "કમ્પ્યુટરની RSA મુખ્ય ફિંગરપ્રિંટ આ છે:\n%1$s" "હંમેશા આ કમ્પ્યુટરથી મંજૂરી આપો" "USB ડીબગિંગની મંજૂરી નથી" - "આ ઉપકરણમાં હાલમાં સાઇન ઇન થયેલ વપરાશકર્તા USB ડીબગિંગ ચાલુ કરી શકતાં નથી. આ સુવિધાનો ઉપયોગ કરવા માટે, એડમિન વપરાશકર્તા પર સ્વિચ કરો." + "હાલમાં આ ઉપકરણમાં સાઇન ઇન થયેલ વપરાશકર્તા USB ડિબગીંગ ચાલુ કરી શકતા નથી. આ સુવિધાનો ઉપયોગ કરવા માટે પ્રાથમિક વપરાશકર્તા પર સ્વિચ કરો." "સ્ક્રીન ભરવા માટે ઝૂમ કરો" "સ્ક્રીન ભરવા માટે ખેંચો" "સ્ક્રીનશોટ સાચવી રહ્યું છે…" @@ -353,10 +353,10 @@ "શોધો" "%s માટે ઉપર સ્લાઇડ કરો." "%s માટે ડાબે સ્લાઇડ કરો." - "અલાર્મ, રિમાઇન્ડર, ઇવેન્ટ અને તમે ઉલ્લેખ કરો તે કૉલર સિવાય તમને ધ્વનિ કે વાઇબ્રેશન દ્વારા ખલેલ પહોંચાડવામાં આવશે નહીં. સંગીત, વીડિઓ અને રમતો સહિત તમે જે કંઈપણ ચલાવવાનું પસંદ કરશો તે સંભળાતું રહેશે." - "તમને ધ્વનિ કે વાઇબ્રેશનો દ્વારા ખલેલ પહોંચાડવામાં આવશે નહીં, સિવાય કે અલાર્મ. તમે સંગીત, વીડિયો અને રમતો સહિત તમે જે કંઈપણ ચલાવવાનું પસંદ કરો તે હજુ પણ સંભળાશે." + "અલાર્મ, રિમાઇન્ડર, ઇવેન્ટ અને તમે ઉલ્લેખ કરો તે કૉલર સિવાય તમને ધ્વનિ કે વાઇબ્રેશન દ્વારા ખલેલ પહોંચાડવામાં આવશે નહીં. સંગીત, વીડિઓ અને રમતો સહિત તમે જે કંઈપણ ચલાવવાનું પસંદ કરશો તે સંભળાતું રહેશે." + "અલાર્મ સિવાય તમને ધ્વનિ કે વાઇબ્રેશન દ્વારા ખલેલ પહોંચાડવામાં આવશે નહીં. સંગીત, વીડિઓ અને રમતો સહિત તમે જે કંઈપણ ચલાવવાનું પસંદ કરશો તે સંભળાતું રહેશે." "કસ્ટમાઇઝ કરો" - "આ એલાર્મ્સ, સંગીત, વિડિઓઝ અને રમતો સહિત તમામ ધ્વનિઓ અને વાઇબ્રેશન્સને અવરોધિત કરે છે. તમે હજુ પણ ફોન કૉલ્સ કરવા માટે સમર્થ હશો." + "આ અલાર્મ, સંગીત, વીડિઓ અને રમતો સહિત બધા ધ્વનિ કે વાઇબ્રેશનને અવરોધિત કરે છે. ફોન કૉલ કરવા માટે તમે હજી પણ સમર્થ રહેશો." "એલાર્મ્સ, સંગીત, વિડિઓઝ અને રમતો સહિત તમામ ધ્વનિઓ અને વાઇબ્રેશન્સને આ અવરોધિત કરે છે." "+%d" "નીચે ઓછી તાકીદની સૂચનાઓ" @@ -456,7 +456,7 @@ "વધુ જાણો" "તમે %1$s સાથે કનેક્ટ થયાં છો, જે ઇમેઇલ્સ, ઍપ્લિકેશનો અને વેબસાઇટ્સ સહિત તમારી નેટવર્ક પ્રવૃત્તિને મૉનિટર કરી શકે છે." " " - "VPN સેટિંગ્સ ખોલો" + "VPNની સેટિંગ્સ ખોલો" " " "વિશ્વસનીય ઓળખપત્ર ખોલો" "તમારા વ્યવસ્થાપકે નેટવર્ક લૉગિંગ ચાલુ કર્યુ છે, જે તમારા ઉપકરણ પર ટ્રાફિકનું નિરીક્ષણ કરે છે.\n\nવધુ માહિતી માટે, તમારા વ્યવસ્થાપકનો સંપર્ક કરો." @@ -556,8 +556,8 @@ "આ ઍપ્લિકેશનમાં સૂચના કૅટેગરી નથી" "આ ઍપ્લિકેશનની સૂચનાઓ બંધ કરી શકાતી નથી" - આ ઍપ્લિકેશનમાંની %d સૂચના કૅટેગરીમાંથી 1 - આ ઍપ્લિકેશનમાંની %d સૂચના કૅટેગરીમાંથી 1 + આ ઍપ્લિકેશનમાંની %s સૂચના કૅટેગરીમાંથી 1 + આ ઍપ્લિકેશનમાંની %s સૂચના કૅટેગરીમાંથી 1 "%1$s, %2$s" @@ -585,8 +585,8 @@ %d મિનિટ "બૅટરી વપરાશ" - "ચાર્જિંગ દરમિયાન બૅટરી સેવર ઉપલબ્ધ નથી" - "બૅટરી સેવર" + "ચાર્જિંગ દરમિયાન બૅટરી સેવર ઉપલબ્ધ હોતું નથી" + "બૅટરી સેવર" "પ્રદર્શન અને બૅકગ્રાઉન્ડ ડેટા ઘટાડે છે" "બટન %1$s" "Home" @@ -726,9 +726,9 @@ "નાનું કરો" "બંધ કરો" "છોડી દેવા માટે નીચે ખેંચો" - "ચિત્રમાં ચિત્ર મેનૂ" + "મેનૂ" "%s ચિત્રમાં-ચિત્રની અંદર છે" - "જો તમે નથી ઇચ્છતા કે %s આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ્સ ખોલવા માટે ટૅપ કરો અને તેને બંધ કરો." + "જો તમે નથી ઈચ્છતા કે %s આ સુવિધાનો ઉપયોગ કરે, તો સેટિંગ્સ ખોલવા માટે ટૅપ કરો અને તે સુવિધાને બંધ કરો." "ચલાવો" "થોભાવો" "આગલા પર જાઓ" @@ -754,6 +754,7 @@ "મેનૂ" "%1$s ઍપ્લિકેશન" "ચેતવણીઓ" + "બૅટરી" "સ્ક્રીનશૉટ" "સામાન્ય સંદેશા" "સ્ટોરેજ" @@ -774,4 +775,5 @@ "પૃષ્ઠભૂમિમાં ચાલી રહેલ ઍપ્લિકેશનો" "બૅટરી અને ડેટા વપરાશ વિશેની વિગતો માટે ટૅપ કરો" "મોબાઇલ ડેટા બંધ કરીએ?" + "એક ઍપ પરવાનગી વિનંતીને અસ્પષ્ટ કરતી હોવાને કારણે, સેટિંગ્સ તમારા પ્રતિસાદને ચકાસી શકતી નથી." diff --git a/packages/SystemUI/res/values-h600dp/dimens_car.xml b/packages/SystemUI/res/values-h600dp/dimens_car.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3e62c8ec9c8156f88cf62499db7b094c9977a1f --- /dev/null +++ b/packages/SystemUI/res/values-h600dp/dimens_car.xml @@ -0,0 +1,20 @@ + + + + 32sp + diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 6ddc813f671dc8a7ef06e42e13cada4abfc1160b..651681fbb99c018dd17f96e2eb98f52daf6b059a 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -44,7 +44,7 @@ "बैटरी बचाएँ" "सेटिंग" "वाई-फ़ाई" - "स्‍क्रीन अपनेआप घुमाएं" + "स्‍क्रीन अपने आप घुमाएं" "म्यूट करें" "स्वत:" "सूचनाएं" @@ -64,7 +64,7 @@ "कंप्यूटर का RSA कुंजी फ़िंगरप्रिंट है:\n%1$s" "इस कंप्यूटर से हमेशा अनुमति दें" "USB डीबगिंग की अनुमति नहीं है" - "अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन किया है वो USB डीबगिंग चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, कृपया किसी एडमिन उपयोगकर्ता में बदलें." + "अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन किया है, वो USB डीबगिंग चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, प्राथमिक उपयोगकर्ता में बदलें." "स्‍क्रीन भरने के लिए ज़ूम करें" "स्‍क्रीन भरने के लिए खींचें" "स्क्रीनशॉट सहेजा जा रहा है..." @@ -334,7 +334,7 @@ "स्क्रीन पिन करना" "सर्च" "%s प्रारंभ नहीं किया जा सका." - "%s को सुरक्षित-मोड में अक्षम किया गया." + "%s को सुरक्षित-मोड में बंद किया गया." "Clear all" "स्क्रीन के दो हिस्से में बंट जाने, स्पिल्ट स्क्रीन, का इस्तेमाल करने के लिए यहां खींचें और छोडें" "क्षैतिज रूप से विभाजित करें" @@ -353,10 +353,10 @@ "सर्च करें" "%s के लिए ऊपर स्‍लाइड करें." "%s के लिए बाएं स्‍लाइड करें." - "आपको अलार्म, रिमाइंडर, इवेंट और चुनिंदा कॉल करने वालों के अलावा किसी और तरह से (आवाज़ करके और थरथरा कर ) परेशान नहीं किया जाएगा. आप फिर भी संगीत, वीडियो और गेम सहित अपना चुना हुआ सब कुछ सुन सकते हैं." - "आपको अलार्म छोड़कर दूसरी ध्‍वनियों और कंपनों से परेशान नहीं किया जाएगा. आपको अभी भी संगीत, वीडियो और गेम सहित वह सब कुछ सुनाई देगा जो आपने चलाने के लिए चुना है." + "आपको अलार्म, रिमाइंडर, इवेंट और चुनिंदा कॉल करने वालों के अलावा किसी और तरह से (आवाज़ करके और थरथरा कर ) परेशान नहीं किया जाएगा. आप फिर भी संगीत, वीडियो और गेम सहित अपना चुना हुआ सब कुछ सुन सकते हैं." + "आपको अलार्म छोड़कर दूसरी आवाज़ों और कंपनों से परेशान नहीं किया जाएगा. आपको अभी भी संगीत, वीडियो और गेम सहित वह सब कुछ सुनाई देगा जो आपने चलाने के लिए चुना है." "अपनी पसंद के मुताबिक बनाएं" - "इससे अलार्म, संगीत, वीडियो और गेम सहित सभी आवाज़ और कंपन (वाइब्रेशन) रोक दिए जाते हैं. आप तब भी फ़ोन काॅल कर सकेंगे." + "इससे अलार्म, संगीत, वीडियो और गेम सहित सभी आवाज़ और कंपन (वाइब्रेशन) रोक दिए जाते हैं. आप तब भी फ़ोन काॅल कर सकेंगे." "इससे अलार्म, संगीत, वीडियो और गेम सहित सभी आवाज़ और कंपन (वाइब्रेशन) रोक दिए जाते हैं." "+%d" "कम अत्यावश्यक सूचनाएं नीचे दी गई हैं" @@ -456,7 +456,7 @@ "ज़्यादा जानें" "आप %1$s से कनेक्‍ट हैं, जो ईमेल, ऐप्लिकेशन और वेबसाइट सहित आपकी नेटवर्क गतिविधि को मॉनिटर कर सकता है." " " - "VPN सेटिंग खोलें" + "VPN सेटिंग खोलें" " " "भरोसेमंद क्रेडेंशियल खोलें" "आपके एडमिन ने नेटवर्क लॉग करना चालू कर दिया है, जो आपके डिवाइस पर ट्रैफ़िक की निगरानी करता है.\n\nअधिक जानकारी के लिए अपने एडमिन से संपर्क करें." @@ -556,8 +556,8 @@ "इस ऐप्लिकेशन में सूचना श्रेणियां नहीं हैं" "इस ऐप की सूचनाएं बंद नहीं की जा सकती" - इस ऐप की %d सूचना श्रेणियों में से 1 श्रेणी - इस ऐप की %d सूचना श्रेणियों में से 1 श्रेणी + इस ऐप की %s सूचना श्रेणियों में से 1 श्रेणी + इस ऐप की %s सूचना श्रेणियों में से 1 श्रेणी "%1$s, %2$s" @@ -585,8 +585,8 @@ %d मिनट "बैटरी उपयोग" - "चार्ज किए जाने के दौरान बैटरी सेवर उपलब्ध नहीं है" - "बैटरी सेवर" + "चार्ज करते समय बैटरी सेवर उपलब्ध नहीं होता" + "बैटरी सेवर" "निष्‍पादन और पृष्ठभूमि डेटा को कम करता है" "बटन %1$s" "Home" @@ -726,9 +726,9 @@ "छोटा करें" "बंद करें" "खारिज करने के लिए नीचे खींचें और छोड़ें" - "पिक्चर में पिक्चर मेन्यू" + "मेन्यू" "%s पिक्चर में पिक्चर के अंदर है" - "अगर आप नहीं चाहते कि %s इस सुविधा का उपयोग करे, तो सेटिंग खोलने और उसे बंद करने के लिए टैप करें." + "अगर आप नहीं चाहते कि %s इस सुविधा का उपयोग करे, तो सेटिंग खोलने के लिए टैप करें और उसे बंद करें ." "चलाएं" "रोकें" "अगले पर जाएं" @@ -754,6 +754,7 @@ "मेन्यू" "%1$s ऐप" "सूचनाएं" + "बैटरी" "स्‍क्रीनशॉट" "सामान्य संदेश" "जगह" @@ -774,4 +775,5 @@ "बैकग्राउंड में चल रहे ऐप्लिकेशन" "बैटरी और डेटा खर्च की जानकारी के लिए छूएं" "मोबाइल डेटा बंद करना चाहते हैं?" + "ऐप की वजह से मंज़ूरी के अनुरोध को समझने में दिक्कत हो रही है, इसलिए सेटिंग से आपके जवाब की पुष्टि नहीं हो पा रही है." diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index c0bfee92735f803fa80b35f69f8a014da985e1d1..adb41b32f2f485488e345537a87ff574e22feb55 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -65,7 +65,7 @@ "Otisak prsta RSA ključa računala je: \n %1$s" "Uvijek dopusti s ovog računala" "Otklanjanje pogrešaka putem USB-a nije dopušteno" - "Korisnik koji je trenutačno prijavljen na ovaj uređaj ne može uključiti otklanjanje pogrešaka putem USB-a. Da biste upotrebljavali tu značajku, prijeđite na korisnika koji je administrator." + "Korisnik koji je trenutačno prijavljen na ovaj uređaj ne može uključiti otklanjanje pogrešaka putem USB-a. Da biste upotrebljavali tu značajku, prijeđite na primarnog korisnika." "Zumiraj i ispuni zaslon" "Rastegni i ispuni zaslon" "Spremanje snimke zaslona..." @@ -355,10 +355,10 @@ "Pretraživanje" "Kliznite prema gore za %s." "Kliznite lijevo za %s." - "Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivatelja koje navedete. I dalje ćete čuti sve što želite reproducirati, uključujući glazbu, videozapise i igre." - "Neće vas ometati zvukovi i vibracije, osim alarma. I dalje ćete čuti sve što želite reproducirati, uključujući glazbu, videozapise i igre." + "Neće vas ometati zvukovi i vibracije, osim alarma, podsjetnika, događaja i pozivatelja koje navedete. I dalje ćete čuti sve što želite reproducirati, uključujući glazbu, videozapise i igre." + "Neće vas ometati zvukovi i vibracije, osim alarma. I dalje ćete čuti sve što želite reproducirati, uključujući glazbu, videozapise i igre." "Prilagodi" - "To blokira SVE zvukove i vibracije, uključujući alarme, glazbu, videozapise i igre. I dalje ćete moći telefonirati." + "To blokira SVE zvukove i vibracije, uključujući alarme, glazbu, videozapise i igre. I dalje ćete moći telefonirati." "To blokira SVE zvukove i vibracije, uključujući alarme, glazbu, videozapise i igre." "+%d" "Manje hitne obavijesti pri dnu" @@ -458,7 +458,7 @@ "Saznajte više" "Povezani ste s aplikacijom %1$s koja može nadzirati vašu aktivnost na mreži, uključujući e-poštu, aplikacije i web-lokacije." " " - "Otvorite postavke VPN-a" + "Otvorite postavke VPN-a" " " "Otvorite pouzdane vjerodajnice" "Administrator je uključio mrežni zapisnik koji prati promet na vašem uređaju.\n\nViše informacija možete saznati od administratora." @@ -558,9 +558,9 @@ "Ova aplikacija nema kategorije obavijesti" "Obavijesti ove aplikacije ne mogu se isključiti" - 1 od %d kategorije obavijesti iz ove aplikacije - 1 od %d kategorije obavijesti iz ove aplikacije - 1 od %d kategorija obavijesti iz ove aplikacije + 1 od %s kategorije obavijesti iz ove aplikacije + 1 od %s kategorije obavijesti iz ove aplikacije + 1 od %s kategorija obavijesti iz ove aplikacije "%1$s, %2$s" @@ -591,8 +591,8 @@ %d minuta "Potrošnja baterije" - "Štednja baterije nije dostupna tijekom punjenja" - "Štednja baterije" + "Štednja baterije nije dostupna tijekom punjenja" + "Štednja baterije" "Smanjuje količinu rada i pozadinske podatke" "Tipka %1$s" "Početak" @@ -732,9 +732,9 @@ "Minimiziraj" "Zatvori" "Povucite prema dolje da biste odbacili" - "Izbornik slike u slici" + "Izbornik" "%s jest na slici u slici" - "Ako ne želite da aplikacija %s upotrebljava tu značajku, dodirnite da biste otvorili postavke i isključili je." + "Ako ne želite da aplikacija %s upotrebljava tu značajku, dodirnite da biste otvorili postavke i isključili je." "Reproduciraj" "Pauziraj" "Preskoči na sljedeće" @@ -760,6 +760,7 @@ "Izbornik" "Aplikacija %1$s" "Upozorenja" + "Baterija" "Snimke zaslona" "Općenite poruke" "Pohrana" @@ -780,4 +781,5 @@ "Izvođenje aplikacija u pozadini" "Dodirnite da biste vidjeli pojedinosti o potrošnji baterije i podatkovnom prometu" "Isključiti mobilne podatke?" + "Budući da aplikacija prekriva zahtjev za dopuštenje, Postavke ne mogu potvrditi vaš odgovor." diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 2aeaecab89b7e62d2adac354d4473ca996ecde19..609992fb9bd132a55191d11f20ef22493035c696 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -64,7 +64,7 @@ "A számítógép RSA kulcs ujjlenyomata:\n%1$s" "Mindig engedélyezze erről a számítógépről" "Az USB hibakeresése nem engedélyezett" - "Az eszközre jelenleg bejelentkezett felhasználó nem kapcsolhatja be az USB hibakeresését. A funkció használatához váltson rendszergazda felhasználóra." + "Az eszközre jelenleg bejelentkezett felhasználó nem engedélyezheti az USB-hibakeresést. A funkció használatához váltson az elsődleges felhasználóra." "Nagyítás a kitöltéshez" "Nyújtás kitöltéshez" "Képernyőkép mentése..." @@ -353,10 +353,10 @@ "Keresés" "A(z) %s művelethez csúsztassa felfelé." "A(z) %s művelethez csúsztassa balra." - "Az Ön által meghatározott ébresztéseken, emlékeztetőkön, eseményeken és hívókon kívül nem fogja Önt más hang vagy rezgés megzavarni. Továbbra is lesz hangjuk azoknak a tartalmaknak, amelyeket Ön elindít, például zenék, videók és játékok." - "Az ébresztéseken kívül nem fogja Önt más hang és rezgés megzavarni. Továbbra is lesz hangjuk azoknak a tartalmaknak, amelyeket Ön elindít, például zenék, videók és játékok." + "Az Ön által meghatározott ébresztéseken, emlékeztetőkön, eseményeken és hívókon kívül nem fogja Önt más hang vagy rezgés megzavarni. Továbbra is lesz hangjuk azoknak a tartalmaknak, amelyeket Ön elindít, például zenék, videók és játékok." + "Az ébresztéseken kívül nem fogja Önt más hang és rezgés megzavarni. Továbbra is lesz hangjuk azoknak a tartalmaknak, amelyeket Ön elindít, például zenék, videók és játékok." "Személyre szabás" - "Ez letiltja az ÖSSZES hanghatást és rezgést, beleértve az ébresztések, zeneszámok, videók és játékok hangjait is. Telefonhívást továbbra is indíthat majd." + "Ez letiltja az ÖSSZES hangot és rezgést, beleértve az ébresztések, zeneszámok, videók és játékok hangjait is. Telefonhívást továbbra is indíthat majd." "Ez letiltja az ÖSSZES hanghatást és rezgést, beleértve az ébresztések, zeneszámok, videók és játékok hangjait is." "+%d" "A kevésbé sürgős értesítések lentebb vannak" @@ -456,7 +456,7 @@ "További információ" "Ön kapcsolódik ehhez: %1$s, amely figyelheti hálózati tevékenységét, köztük a levelezést, az alkalmazás- és webhelyhasználatot." " " - "VPN-beállítások megnyitása" + "VPN-beállítások megnyitása" " " "Megbízható hitelesítési adatok megnyitása" "A rendszergazda bekapcsolta az eszköz forgalmát figyelő hálózati naplózást.\n\nHa további információra van szüksége, forduljon a rendszergazdához." @@ -556,8 +556,8 @@ "Az alkalmazás nem rendelkezik értesítési kategóriákkal" "Az alkalmazástól érkező értesítések nem kapcsolhatók ki" - %d/1 értesítési kategória az alkalmazásból - %d/1 értesítési kategória az alkalmazásból + %s/1 értesítési kategória az alkalmazásból + %s/1 értesítési kategória az alkalmazásból "%1$s, %2$s" @@ -585,8 +585,8 @@ %d perc "Akkumulátorhasználat" - "Az Akkumulátorkímélő módot töltés közben nem lehet használni" - "Akkumulátorkímélő mód" + "Az Akkumulátorkímélő módot töltés közben nem lehet használni" + "Akkumulátorkímélő mód" "Csökkenti a teljesítményt és a háttéradatok használatát" "%1$s gomb" "Kezdőképernyő" @@ -726,9 +726,9 @@ "Kis méret" "Bezárás" "Elvetéshez húzza lefelé" - "Kép a képben menü" + "Menü" "A(z) %s kép a képben funkciót használ" - "Ha nem szeretné, hogy a(z) %s használja ezt a funkciót, koppintson a beállítások megnyitásához, és kapcsolja ki." + "Ha nem szeretné, hogy a(z) %s használja ezt a funkciót, koppintson a beállítások megnyitásához, és kapcsolja ki." "Lejátszás" "Szüneteltetés" "Ugrás a következőre" @@ -754,6 +754,7 @@ "Menü" "%1$s alkalmazás" "Értesítések" + "Akkumulátor" "Képernyőképek" "Általános üzenetek" "Tárhely" @@ -774,4 +775,5 @@ "A háttérben még futnak alkalmazások" "Koppintson az akkumulátor- és adathasználat részleteinek megtekintéséhez" "Kikapcsolja a mobiladatokat?" + "Mivel az egyik alkalmazás eltakarja az engedélykérést, a Beállítások alkalmazás nem tudja ellenőrizni az Ön válaszát." diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 79cef6833a22d0bf8a441e819a3b3bae6b4eb07f..bca615ebe30fbc08793297b72f4c7b6669896f6c 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -64,11 +64,11 @@ "Համակարգչի RSA-ի բանալի մատնահետքն է`\n%1$s" "Միշտ թույլատրել այս համակարգչից" "USB վրիպազերծումը արգելված է" - "Սարքի վրա այս պահին մուտք գործած օգտատերը չի կարող միացնել USB վրիպազերծումը: Այս գործառույթից օգտվելու համար մուտք գործեք ադմինիստրատորի հաշվով:" + "Ընթացիկ հաշվի օգտատերը չի կարող միացնել USB վրիպազերծումը: Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշվով:" "Խոշորացնել` էկրանը լցնելու համար" "Ձգել` էկրանը լցնելու համար" - "Պահում է էկրանի պատկերը…" - "Պահում է էկրանի պատկերը..." + "Էկրանի պատկերը պահվում է…" + "Էկրանի պատկերը պահվում է..." "Էկրանի պատկերը պահվում է:" "Էկրանի պատկերը լուսանկարվել է:" "Հպեք՝ էկրանի պատկերը տեսնելու համար:" @@ -353,10 +353,10 @@ "Որոնել" "Սահեցրեք վերև %s-ի համար:" "Սահեցրեք ձախ` %s-ի համար:" - "Ձայները և թրթռոցները չեն անհանգստացնի ձեզ, բացի ձեր կողմից նշված զարթուցիչները, հիշեցումները, միջոցառումների ծանուցումները և զանգերը։ Դուք կլսեք ձեր ընտրածի նվագարկումը, այդ թվում՝ երաժշտություն, տեսանյութեր և խաղեր:" - "Ձայները և թրթռոցները, բացի զարթուցիչներից, չեն անհանգստացնի ձեզ: Դուք կլսեք ձեր ընտրածի նվագարկումը, այդ թվում՝ երաժշտություն, տեսանյութեր և խաղեր:" + "Ձայները և թրթռոցները չեն անհանգստացնի ձեզ, բացի ձեր կողմից նշված զարթուցիչները, հիշեցումները, միջոցառումների ծանուցումները և զանգերը։ Դուք կլսեք ձեր ընտրածի նվագարկումը, այդ թվում՝ երաժշտություն, տեսանյութեր և խաղեր:" + "Ձայները և թրթռոցները, բացի զարթուցիչներից, չեն անհանգստացնի ձեզ: Դուք կլսեք ձեր ընտրածի նվագարկումը, այդ թվում՝ երաժշտություն, տեսանյութեր և խաղեր:" "Հարմարեցնել" - "Այս գործողությունն արգելափակում է ԲՈԼՈՐ ձայներն ու թրթռոցները, այդ թվում զարթուցիչները, երաժշտությունը, տեսանյութերի և խաղերի ձայները: Դուք կկարողանաք հեռախոսազանգեր անել։" + "Այս գործողությունն արգելափակում է ԲՈԼՈՐ ձայներն ու թրթռոցները, այդ թվում զարթուցիչները, երաժշտությունը, տեսանյութերի և խաղերի ձայները: Դուք կկարողանաք հեռախոսազանգեր անել։" "Այս գործողությունն արգելափակում է ԲՈԼՈՐ ձայներն ու թրթռոցները, այդ թվում նաև զարթուցիչների, երաժշտության, տեսանյութերի և խաղերի ձայներն ու թրթռոցները:" "+%d" "Պակաս հրատապ ծանուցումները ստորև" @@ -456,7 +456,7 @@ "Իմանալ ավելին" "Դուք կապակցված եք %1$s հավելվածին, որը կարող է վերահսկել ձեր ցանցային գործողությունը, այդ թվում նաև էլփոստը, հավելվածները և կայքերը:" " " - "Բացել VPN-ի կարգավորումները" + "Բացել VPN-ի կարգավորումները" " " "Բացել վստահելի հավատարմագրերը" "Ձեր ադմինիստրատորը միացրել է ցանցային իրադարձությունների գրանցումը, որը վերահսկում է ձեր սարքի թրաֆիկը։\n\nԼրացուցիչ տեղեկություններ ստանալու համար դիմեք ձեր ադմինիստրատորին։" @@ -556,8 +556,8 @@ "Այս հավելվածը ծանուցման կատեգորիաներ չունի" "Այս հավելվածի ծանուցումները հնարավոր չէ անջատել" - 1 out of %d notification categories from this app - 1 ալիք` այս հավելվածի %d կատեգորիաներից + 1 out of %s notification categories from this app + 1 ալիք` այս հավելվածի %s կատեգորիաներից "%1$s, %2$s" @@ -585,8 +585,8 @@ %d րոպե "Մարտկոցի օգտագործում" - "Մարտկոցի տնտեսումը լիցքավորման ժամանակ հասանելի չէ" - "Մարտկոցի տնտեսում" + "Մարտկոցի էներգախնայիչը լիցքավորման ժամանակ հասանելի չէ" + "Մարտկոցի էներգախնայիչ" "Նվազեցնում է ծանրաբեռնվածությունը և ֆոնային տվյալները" "%1$s կոճակ" "Գլխավոր էջ" @@ -726,9 +726,9 @@ "Ծալել" "Փակել" "Քաշեք վար՝ փակելու համար" - "«Նկար նկարի մեջ» ռեժիմի ընտրացանկ" + "Ընտրացանկ" "%s-ը «Նկար նկարի մեջ» ռեժիմում է" - "Եթե չեք ցանկանում, որ %s-ն օգտագործի այս գործառույթը, հպեք՝ կարգավորումները բացելու և այն անջատելու համար։" + "Եթե չեք ցանկանում, որ %s-ն օգտագործի այս գործառույթը, հպեք՝ կարգավորումները բացելու և այն անջատելու համար։" "Նվագարկել" "Դադարեցնել" "Անցնել հաջորդին" @@ -754,6 +754,7 @@ "Ընտրացանկ" "%1$s հավելված" "Ծանուցումներ" + "Մարտկոց" "Էկրանի պատկերներ" "Ընդհանուր հաղորդագրություններ" "Տարածք" @@ -774,4 +775,5 @@ "Ֆոնային ռեժիմում աշխատող հավելվածներ" "Հպեք՝ մարտկոցի և թրաֆիկի մանրամասները տեսնելու համար" "Անջատե՞լ բջջային ինտերնետը։" + "Քանի որ ներածումն արգելափակված է ինչ-որ հավելվածի կողմից, Կարգավորումները չեն կարող հաստատել ձեր պատասխանը:" diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index f0c25e15b5d8fa3ba7550d445af17acd529bc1e9..1c0f975e9f25c5d5438f55520546aed55c8bc141 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -64,7 +64,7 @@ "Sidik jari kunci RSA komputer adalah:\n%1$s" "Selalu izinkan dari komputer ini" "Debug USB tidak diizinkan" - "Pengguna yang saat ini masuk ke perangkat ini tidak dapat mengaktifkan debug USB. Untuk menggunakan fitur ini, beralih ke pengguna Admin." + "Pengguna yang sedang login ke perangkat ini tidak dapat mengaktifkan proses debug USB. Beralihlah ke pengguna utama untuk menggunakan fitur ini." "Perbesar utk mengisi layar" "Rentangkn utk mngisi layar" "Menyimpan screenshot..." @@ -234,8 +234,8 @@ "Mode kerja aktif." "Mode kerja dinonaktifkan." "Mode kerja diaktifkan." - "Penghemat Data nonaktif." - "Penghemat Data diaktifkan." + "Penghemat Kuota Internet nonaktif." + "Penghemat Kuota Internet diaktifkan." "Kecerahan tampilan" "Mengisi daya" "Data 2G-3G dijeda" @@ -353,20 +353,20 @@ "Telusuri" "Geser ke atas untuk %s." "Geser ke kiri untuk %s." - "Anda tidak akan terganggu oleh suara dan getaran, kecuali dari alarm, pengingat, acara, dan penelepon yang Anda tentukan. Anda akan tetap mendengar apa pun yang telah dipilih untuk diputar, termasuk musik, video, dan game." - "Anda tidak akan terganggu oleh suara dan getaran, kecuali dari alarm. Anda akan tetap mendengar apa pun yang telah dipilih untuk diputar, termasuk musik, video, dan game." + "Anda tidak akan terganggu oleh suara dan getaran, kecuali dari alarm, pengingat, acara, dan penelepon yang Anda tentukan. Anda akan tetap mendengar apa pun yang telah dipilih untuk diputar, termasuk musik, video, dan game." + "Anda tidak akan terganggu oleh suara dan getaran, kecuali dari alarm. Anda akan tetap mendengar apa pun yang telah dipilih untuk diputar, termasuk musik, video, dan game." "Sesuaikan" - "SEMUA suara dan getaran, termasuk dari alarm, musik, video, dan game akan diblokir. Anda tetap dapat melakukan panggilan telepon." + "SEMUA suara dan getaran, termasuk dari alarm, musik, video, dan game akan diblokir. Anda tetap dapat melakukan panggilan telepon." "SEMUA suara dan getaran, termasuk dari alarm, musik, video, dan game akan diblokir." "+%d" "Notifikasi kurang darurat di bawah" "Tap lagi untuk membuka" - "Gesek ke atas untuk membuka kunci" + "Geser ke atas untuk membuka kunci" "Perangkat ini dikelola oleh organisasi" "Perangkat ini dikelola oleh %s" - "Gesek dari ikon untuk telepon" - "Gesek dari ikon untuk mengaktifkan bantuan suara" - "Gesek dari ikon untuk kamera" + "Geser dari ikon untuk telepon" + "Geser dari ikon untuk bantuan suara" + "Geser dari ikon untuk kamera" "Senyap total. Tindakan ini juga akan mensenyapkan pembaca layar." "Senyap total" "Hanya untuk prioritas" @@ -456,7 +456,7 @@ "Pelajari lebih lanjut" "Anda tersambung ke %1$s, yang dapat memantau aktivitas jaringan, termasuk email, aplikasi, dan situs web." " " - "Buka Setelan VPN" + "Buka setelan VPN" " " "Buka kredensial terpercaya" "Admin telah mengaktifkan pencatatan log jaringan, yang memantau traffic di perangkat.\n\nUntuk informasi selengkapnya, hubungi admin." @@ -502,7 +502,7 @@ "%1$s. Ketuk untuk membisukan. Layanan aksesibilitas mungkin dibisukan." "%1$s. Tap untuk menyetel agar bergetar." "%1$s. Tap untuk menonaktifkan." - "Kontrol volume %s ditampilkan. Gesek ke atas untuk menutup." + "Kontrol volume %s ditampilkan. Geser ke atas untuk menutup." "Kontrol volume disembunyikan" "Penyetel Antarmuka Pengguna Sistem" "Tampilkan persentase baterai yang tersemat" @@ -556,8 +556,8 @@ "Aplikasi ini tidak memiliki kategori notifikasi" "Notifikasi dari aplikasi ini tidak dapat dinonaktifkan" - 1 dari %d kategori notifikasi dari aplikasi ini - 1 dari %d kategori notifikasi dari aplikasi ini + 1 dari %s kategori notifikasi dari aplikasi ini + 1 dari %s kategori notifikasi dari aplikasi ini "%1$s, %2$s" @@ -574,7 +574,7 @@ "%1$s %2$s" "kontrol notifikasi" "opsi tunda notifikasi" - "URUNG" + "URUNGKAN" "Ditunda selama %1$s" %d jam @@ -585,8 +585,8 @@ %d menit "Pemakaian baterai" - "Penghemat Baterai tidak tersedia selama pengisian daya" - "Penghemat Baterai" + "Penghemat baterai tidak tersedia selama mengisi daya" + "Penghemat baterai" "Mengurangi performa dan data latar belakang" "Tombol %1$s" "Home" @@ -639,9 +639,9 @@ "Headset" "Headphone terhubung" "Headset terhubung" - "Penghemat Data" - "Penghemat Data aktif" - "Penghemat Data nonaktif" + "Penghemat Kuota Internet" + "Penghemat Kuota Internet aktif" + "Penghemat Kuota Internet nonaktif" "Aktif" "Nonaktif" "Bilah navigasi" @@ -726,9 +726,9 @@ "Minimalkan" "Tutup" "Seret ke bawah untuk menutup" - "Menu picture in picture" + "Menu" "%s adalah picture-in-picture" - "Jika Anda tidak ingin %s menggunakan fitur ini, tap untuk membuka setelan dan menonaktifkannya." + "Jika Anda tidak ingin %s menggunakan fitur ini, tap untuk membuka setelan dan menonaktifkannya." "Putar" "Jeda" "Lewati ke berikutnya" @@ -754,6 +754,7 @@ "Menu" "Aplikasi %1$s" "Notifikasi" + "Baterai" "Screenshot" "Pesan Umum" "Penyimpanan" @@ -774,4 +775,5 @@ "Aplikasi yang sedang berjalan di latar belakang" "Tap untuk melihat detail penggunaan baterai dan data" "Nonaktifkan data seluler?" + "Karena sebuah aplikasi menghalangi permintaan izin, Setelan tidak dapat memverifikasi respons Anda." diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index b0b77dfecbbef136476fa0f8173659569f8753d9..eefb363320c41da9cbbb6ddd88285e89dbaa61af 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -64,7 +64,7 @@ "Fingrafar RSA-lykils tölvunnar er:\n%1$s" "Leyfa alltaf úr þessari tölvu" "USB-villuleit ekki leyfð" - "Notandinn sem er skráður inn í þetta tæki núna getur ekki kveikt á USB-villuleit. Til þess að nota þennan eiginleika skaltu skipta yfir í notanda með stjórnandaheimildir." + "Notandinn sem er skráður inn í þetta tæki núna getur ekki kveikt á USB-villuleit. Til þess að nota þennan eiginleika skaltu skipta yfir í aðalnotandann." "Fylla skjá með aðdrætti" "Teygja yfir allan skjáinn" "Vistar skjámynd…" @@ -353,10 +353,10 @@ "Leita" "Strjúktu upp til að %s." "Strjúktu til vinstri til að %s." - "Þú verður ekki fyrir truflunum frá hljóðmerkjum og titringi, fyrir utan vekjara, áminningar, viðburði og símtöl frá þeim sem þú leyfir fyrirfram. Þú heyrir áfram í öllu sem þú velur að spila, svo sem tónlist, myndskeiðum og leikjum." - "Þú verður ekki fyrir truflunum frá hljóðmerkjum og titringi, fyrir utan vekjara. Þú heyrir áfram í öllu sem þú velur að spila, svo sem tónlist, myndskeiðum og leikjum." + "Þú verður ekki fyrir truflunum frá hljóðmerkjum og titringi, fyrir utan vekjara, áminningar, viðburði og símtöl frá þeim sem þú leyfir fyrirfram. Þú heyrir áfram í öllu sem þú velur að spila, svo sem tónlist, myndskeiðum og leikjum." + "Þú verður ekki fyrir truflunum frá hljóðmerkjum og titringi, fyrir utan vekjara. Þú heyrir áfram í öllu sem þú velur að spila, svo sem tónlist, myndskeiðum og leikjum." "Sérsníða" - "Þetta lokar á ÖLL hljóðmerki og titring, þ.m.t. frá vekjurum, tónlist, myndskeiðum og leikjum. Þú getur áfram hringt símtöl." + "Þetta lokar á ÖLL hljóðmerki og titring, þ.m.t. frá vekjurum, tónlist, myndskeiðum og leikjum. Þú getur áfram hringt símtöl." "Þetta lokar á ÖLL hljóðmerki og titring, þ.m.t. frá vekjurum, tónlist, myndskeiðum og leikjum." "+%d" "Minna áríðandi tilkynningar fyrir neðan" @@ -456,7 +456,7 @@ "Frekari upplýsingar" "Þú ert með tengingu við %1$s, sem getur fylgst með netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum." " " - "Opna VPN-stillingar" + "Opna VPN-stillingar" " " "Opna traust skilríki" "Kerfisstjóri hefur kveikt á eftirliti netkerfa, sem fylgist með netumferð á tækinu þínu.\n\nHafðu samband við kerfisstjóra til að fá frekari upplýsingar." @@ -556,8 +556,8 @@ "Þetta forrit er ekki með tilkynningaflokka" "Ekki er hægt að slökkva á tilkynningum frá þessu forriti" - 1 af %d tilkynningaflokki frá þessu forriti - 1 af %d tilkynningaflokkum frá þessu forriti + 1 af %s tilkynningaflokki frá þessu forriti + 1 af %s tilkynningaflokkum frá þessu forriti "%1$s, %2$s" @@ -585,8 +585,8 @@ %d mínútur "Rafhlöðunotkun" - "Ekki er hægt að nota rafhlöðusparnað meðan á hleðslu stendur" - "Rafhlöðusparnaður" + "Ekki er hægt að nota rafhlöðusparnað meðan á hleðslu stendur" + "Rafhlöðusparnaður" "Dregur úr afköstum og bakgrunnsgögnum" "Hnappur %1$s" "Home" @@ -726,9 +726,9 @@ "Minnka" "Loka" "Draga niður til að hunsa" - "Valmynd fyrir mynd í mynd" + "Valmynd" "%s er með mynd í mynd" - "Ef þú vilt ekki að %s noti þennan eiginleika skaltu ýta til að opna stillingarnar og slökkva á því." + "Ef þú vilt ekki að %s noti þennan eiginleika skaltu ýta til að opna stillingarnar og slökkva á því." "Spila" "Gera hlé" "Fara á næsta" @@ -754,6 +754,7 @@ "Valmynd" "Forritið %1$s" "Tilkynningar" + "Rafhlaða" "Skjámyndir" "Almenn skilaboð" "Geymslurými" @@ -774,4 +775,5 @@ "Forrit sem keyra í bakgrunni" "Ýttu til að fá upplýsingar um rafhlöðu- og gagnanotkun" "Slökkva á farsímagögnum?" + "Stillingar geta ekki staðfest svarið þitt vegna þess að forrit er að fela heimildarbeiðni." diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 5a52e57c2c1b24ed33e62de9dd699a9fbca87e92..fefc9d306bfafe56e9ca817efa15d8e9fcec16d4 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -64,7 +64,7 @@ "Fingerprint della chiave RSA del computer: \n%1$s" "Consenti sempre da questo computer" "Debug USB non consentito" - "L\'utente che ha eseguito l\'accesso a questo dispositivo non può attivare il debug USB. Per utilizzare questa funzione, passa a un utente amministratore." + "L\'utente che ha eseguito l\'accesso a questo dispositivo non può attivare il debug USB. Per utilizzare questa funzione, passa all\'utente principale." "Zoom per riempire schermo" "Estendi per riemp. schermo" "Salvataggio screenshot..." @@ -355,10 +355,10 @@ "Ricerca" "Su per %s." "A sinistra per %s." - "Non verrai disturbato da suoni e vibrazioni, ad eccezione di sveglie, promemoria, eventi, chiamate da contatti da te specificati ed elementi che hai scelto di continuare a riprodurre, inclusi video, musica e giochi." - "Non verrai disturbato da suoni e vibrazioni, ad eccezione delle sveglie e degli elementi che hai scelto di continuare a riprodurre, inclusi video, musica e giochi." + "Non verrai disturbato da suoni e vibrazioni, ad eccezione di sveglie, promemoria, eventi, chiamate da contatti da te specificati ed elementi che hai scelto di continuare a riprodurre, inclusi video, musica e giochi." + "Non verrai disturbato da suoni e vibrazioni, ad eccezione delle sveglie e degli elementi che hai scelto di continuare a riprodurre, inclusi video, musica e giochi." "Personalizza" - "Verranno bloccati TUTTI i suoni e le vibrazioni, anche di sveglie, musica, video e giochi. Potrai ancora telefonare." + "Verranno bloccati TUTTI i suoni e le vibrazioni, anche di sveglie, musica, video e giochi. Potrai ancora telefonare." "Verranno bloccati TUTTI i suoni e le vibrazioni, anche di sveglie, musica, video e giochi." "+%d" "Notifiche meno urgenti in basso" @@ -458,7 +458,7 @@ "Ulteriori informazioni" "Sei connesso a %1$s, che consente di monitorare le attività di rete, inclusi siti web, email e app." " " - "Apri impostazioni VPN" + "Apri impostazioni VPN" " " "Apri credenziali attendibili" "L\'amministratore ha attivato i log di rete, che consentono di monitorare il traffico sul dispositivo.\n\nPer ulteriori informazioni, contatta l\'amministratore." @@ -481,9 +481,9 @@ "Disattiva ora" "Espandi" "Comprimi" - "La schermata è bloccata" - "La schermata rimane visibile finché non viene disattivato il blocco su schermo. Per disattivarlo, tieni premuto Indietro e Panoramica." - "La schermata rimane visibile finché non viene disattivato il blocco su schermo. Per disattivarlo, tieni premuto Panoramica." + "La schermata è fissata" + "La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Indietro e Panoramica." + "La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Panoramica." "OK" "No, grazie" "Nascondere %1$s?" @@ -558,8 +558,8 @@ "Questa app non ha categorie di notifica" "Le notifiche di quest\'app non possono essere disattivate" - 1 categoria di notifica su %d di questa app - 1 categoria di notifica su %d di questa app + 1 categoria di notifica su %s di questa app + 1 categoria di notifica su %s di questa app "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minuto "Utilizzo batteria" - "Risparmio energetico non disponibile durante la ricarica" - "Risparmio energetico" + "Risparmio energetico non disponibile durante la ricarica" + "Risparmio energetico" "Riduce le prestazioni e i dati in background" "Pulsante %1$s" "Home page" @@ -728,9 +728,9 @@ "Riduci a icona" "Chiudi" "Trascina verso il basso per ignorare" - "Menu Picture in picture" + "Menu" "%s è in Picture in picture" - "Se non desideri che l\'app %s utilizzi questa funzione, tocca per aprire le impostazioni e disattivarla." + "Se non desideri che l\'app %s utilizzi questa funzione, tocca per aprire le impostazioni e disattivarla." "Riproduci" "Metti in pausa" "Passa ai contenuti successivi" @@ -756,6 +756,7 @@ "Menu" "App %1$s" "Avvisi" + "Batteria" "Screenshot" "Messaggi generali" "Spazio di archiviazione" @@ -776,4 +777,5 @@ "App in esecuzione in background" "Tocca per conoscere i dettagli sull\'utilizzo dei dati e della batteria" "Disattivare i dati mobili?" + "Un\'app sta oscurando una richiesta di autorizzazione, pertanto Impostazioni non può verificare la tua risposta." diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index ce40c322376e41071871d374a16f1cd08797e329..c51c0257f6e9a62c3fbd2d44312b7d51f32e80d1 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -66,7 +66,7 @@ "‏טביעת האצבע של מפתח ה-RSA של המחשב היא:\n%1$s" "אפשר תמיד ממחשב זה" "‏לא ניתן לבצע ניפוי באגים ב-USB" - "‏המשתמש הנוכחי שמחובר למערכת במכשיר לא יכול להפעיל ניפוי באגים ב-USB. כדי להשתמש בתכונה זו, יש להיכנס כמנהל מערכת." + "‏למשתמש המחובר לחשבון במכשיר הזה אין אפשרות להפעיל ניפוי באגים ב-USB. כדי להשתמש בתכונה הזו יש לעבור אל המשתמש הראשי." "הגדל תצוגה כדי למלא את המסך" "מתח כדי למלא את המסך" "שומר צילום מסך..." @@ -357,10 +357,10 @@ "חיפוש" "הסט למעלה כדי להציג %s." "הסט שמאלה כדי להציג %s." - "כדי לא להפריע לך, המכשיר לא ירטוט ולא ישמיע שום צליל, חוץ מהתראות, תזכורות, אירועים ושיחות ממתקשרים מסוימים לבחירתך. המצב הזה לא ישפיע על צלילים שהם חלק מתוכן שבחרת להפעיל, כמו מוזיקה, סרטונים ומשחקים." - "כדי לא להפריע לך, המכשיר לא ירטוט ולא ישמיע שום צליל, חוץ מהתראות. המצב הזה לא ישפיע על צלילים שהם חלק מתוכן שבחרת להפעיל, כמו מוזיקה, סרטונים ומשחקים." + "כדי לא להפריע לך, המכשיר לא ירטוט ולא ישמיע שום צליל, חוץ מהתראות, תזכורות, אירועים ושיחות ממתקשרים מסוימים לבחירתך. המצב הזה לא ישפיע על צלילים שהם חלק מתוכן שבחרת להפעיל, כמו מוזיקה, סרטונים ומשחקים." + "כדי לא להפריע לך, המכשיר לא ירטוט ולא ישמיע שום צליל, חוץ מהתראות. המצב הזה לא ישפיע על צלילים שהם חלק מתוכן שבחרת להפעיל, כמו מוזיקה, סרטונים ומשחקים." "התאמה אישית" - "פעולה זו מבטלת את כל הצלילים והרטט, כולל צלילים ורטט שמקורם בהתראות, מוזיקה, סרטונים ומשחקים. בכל מקרה, עדיין אפשר להתקשר." + "פעולה זו מבטלת את כל הצלילים והרטט, כולל צלילים ורטט שמקורם בהתראות, מוזיקה, סרטונים ומשחקים. בכל מקרה, עדיין אפשר להתקשר." "פעולה זו מבטלת את כל הצלילים והרטט, כולל בהתראות, מוזיקה, סרטונים ומשחקים." "+%d" "הודעות בדחיפות נמוכה יותר בהמשך" @@ -460,7 +460,7 @@ "למידע נוסף" "אתה מחובר לאפליקציה %1$s, שיכולה לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים." " " - "‏פתח את הגדרות ה-VPN" + "‏להגדרות ה-VPN" " " "פתח את פרטי הכניסה המהימנים" "מנהל המערכת הפעיל את תכונת רישום התנועה ברשת, שמנטרת את תנועת הנתונים במכשיר.\n\nלמידע נוסף, צור קשר עם מנהל המערכת." @@ -560,10 +560,10 @@ "האפליקציה הזו לא תומכת בקטגוריות של הודעות" "לא ניתן לכבות התראות של האפליקציה הזאת" - קטגוריית הודעות אחת מתוך %d מאפליקציה זו - קטגוריית הודעות אחת מתוך %d מאפליקציה זו - קטגוריית הודעות אחת מתוך %d מאפליקציה זו - קטגוריית הודעות אחת מתוך %d מאפליקציה זו + קטגוריית הודעות אחת מתוך %s מאפליקציה זו + קטגוריית הודעות אחת מתוך %s מאפליקציה זו + קטגוריית הודעות אחת מתוך %s מאפליקציה זו + קטגוריית הודעות אחת מתוך %s מאפליקציה זו "%1$s, %2$s" @@ -597,8 +597,8 @@ דקה "שימוש בסוללה" - "תכונת החיסכון בסוללה אינה זמינה בעת טעינת המכשיר" - "חיסכון בסוללה" + "תכונת החיסכון בסוללה לא זמינה כשהמכשיר בטעינה" + "חיסכון בסוללה" "מפחית את רמת הביצועים ואת נתוני הרקע" "לחצן %1$s" "דף הבית" @@ -738,9 +738,9 @@ "מזער" "סגור" "גרור למטה כדי לסגור" - "תפריט \'תמונה בתוך תמונה\'" + "תפריט" "%s במצב תמונה בתוך תמונה" - "אם אינך רוצה שהתכונה הזו תשמש את %s, הקש כדי לפתוח את ההגדרות ולכבות את התכונה." + "אם אינך רוצה שהתכונה הזו תשמש את %s, יש להקיש כדי לפתוח את ההגדרות ולכבות את התכונה." "הפעל" "השהה" "ברצוני לדלג אל הבא" @@ -766,6 +766,7 @@ "תפריט" "האפליקציה %1$s" "התראות" + "סוללה" "צילומי מסך" "הודעות כלליות" "אחסון" @@ -786,4 +787,5 @@ "אפליקציות שפועלות ברקע" "הקש לקבלת פרטים על צריכה של נתונים וסוללה" "לכבות את חבילת הגלישה?" + "יש אפליקציה שמסתירה את בקשת ההרשאה, ולכן להגדרות אין אפשרות לאמת את התשובה." diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index ebf3121a23bcc2da06bb69f6494d4aff98f696de..e400ffffcd91c262b1f7e7966299564373c1533f 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -64,7 +64,7 @@ "このパソコンのRSAキーのフィンガープリント:\n%1$s" "このパソコンからのUSBデバッグを常に許可する" "USBデバッグは許可されていません" - "この端末に現在ログインしているユーザーはUSBデバッグをONにすることはできません。この機能を使用するには管理者ユーザーに切り替えてください。" + "この端末に現在ログインしているユーザーでは、USB デバッグを ON にすることはできません。この機能を使用するには、メインユーザーに切り替えてください。" "画面サイズに合わせて拡大" "画面サイズに合わせて拡大" "スクリーンショットを保存中..." @@ -355,10 +355,10 @@ "検索します" "上にスライドして%sを行います。" "左にスライドして%sを行います。" - "アラーム、リマインダー、予定、指定した人からの着信以外の音やバイブレーションに煩わされることはありません。音楽、動画、ゲームなど再生対象として選択したコンテンツは引き続き再生されます。" - "アラーム以外の音やバイブレーションに煩わされることはありません。音楽、動画、ゲームなど再生対象として選択したコンテンツは引き続き再生されます。" + "アラーム、リマインダー、予定、指定した人からの着信以外の音やバイブレーションに煩わされることはありません。音楽、動画、ゲームなど再生対象として選択したコンテンツは引き続き再生されます。" + "アラーム以外の音やバイブレーションに煩わされることはありません。音楽、動画、ゲームなど再生対象として選択したコンテンツは引き続き再生されます。" "カスタマイズ" - "アラーム、音楽、動画、ゲームを含むすべての音とバイブレーションがブロックされます。電話をかけることはできます。" + "アラーム、音楽、動画、ゲームを含むすべての音とバイブレーションがブロックされます。電話をかけることはできます。" "アラーム、音楽、動画、ゲームを含むすべての音とバイブレーションがブロックされます。" "+%d" "緊急度の低い通知を下に表示" @@ -458,7 +458,7 @@ "詳細" "「%1$s」に接続しています。このアプリはあなたのネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。" " " - "VPN 設定を開く" + "VPN 設定を開く" " " "信頼できる認証情報を開く" "管理者がネットワーク ログを有効にしているため、この端末のトラフィックは監視されています。\n\n詳しくは管理者にお問い合わせください。" @@ -558,8 +558,8 @@ "このアプリでは通知カテゴリが設定されていません" "このアプリの通知を OFF にすることはできません" - このアプリの通知カテゴリ %d 件中 1 件 - このアプリの通知カテゴリ %d 件中 1 件 + このアプリの通知カテゴリ %s 件中 1 件 + このアプリの通知カテゴリ %s 件中 1 件 "%1$s%2$s" @@ -587,8 +587,8 @@ %d分 "電池の使用状況" - "充電中はバッテリー セーバーは利用できません" - "バッテリー セーバー" + "充電中はバッテリー セーバーは利用できません" + "バッテリー セーバー" "パフォーマンスとバックグラウンド データを制限します" "%1$s ボタン" "Home" @@ -728,9 +728,9 @@ "最小化" "閉じる" "下にドラッグして閉じる" - "ピクチャー イン ピクチャー メニュー" + "メニュー" "%sはピクチャー イン ピクチャーで表示中です" - "%sでこの機能を使用しない場合は、タップして設定を開いて OFF にしてください。" + "%sでこの機能を使用しない場合は、タップして設定を開いて OFF にしてください。" "再生" "一時停止" "次へスキップ" @@ -756,6 +756,7 @@ "メニュー" "%1$s アプリ" "通知" + "電池" "スクリーンショット" "一般メッセージ" "ストレージ" @@ -776,4 +777,5 @@ "バックグラウンドで実行中のアプリ" "タップして電池やデータの使用量を確認" "モバイルデータを OFF にしますか?" + "アプリが許可リクエストを隠しているため、設定側でユーザーの応答を確認できません。" diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 2a1ba7e4c1d192db9503d53811cb4b997aec3907..55a0b5fc7011faaed93bd0ca5de33fd172f116a9 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -64,7 +64,7 @@ "კომპიუტერის RSA გასაღების თითის ანაბეჭდია:\n%1$s" "ყოველთვის დართე ნება ამ კომპიუტერიდან." "USB ხარვეზების გამართვა ნებადართული არაა" - "ამ მოწყობილობაზე ამჟამად შესულ მომხმარებელს არ შეუძლია USB ხარვეზების გამართვის ფუნქციის ჩართვა. ამ ფუნქციის გამოსაყენებლად შედით როგორც ადმინისტრატორი მომხმარებელი." + "ამ მოწყობილობაზე ამჟამად შესულ მომხმარებელს არ შეუძლია USB ხარვეზების გამართვის ფუნქციის ჩართვა. ამ ფუნქციის გამოსაყენებლად, მიუერთდით მთავარ მომხმარებელს." "მასშტაბი შეცვალეთ ეკრანის შესავსებად." "გაწიეთ ეკრანის შესავსებად." "სკრინშოტის შენახვა…" @@ -353,10 +353,10 @@ "ძიება" "გაასრიალეთ ზემოთ %s-თვის." "გაასრიალეთ მარცხნივ %s-თვის." - "თქვენ მიერ მითითებული მაღვიძარების, შეხსენებების, ღონისძიებებისა და ზარების გარდა, არავითარი ხმა და ვიბრაცია არ შეგაწუხებთ. თქვენ მაინც შეგეძლებათ ნებისმიერი სასურველი რამის, მაგალითად, მუსიკის, ვიდეოებისა და თამაშების მოსმენა." - "მაღვიძარების გარდა, არავითარი ხმა და ვიბრაცია არ შეგაწუხებთ. თქვენ მაინც შეგეძლებათ ნებისმიერი სასურველი რამის, მაგალითად, მუსიკის, ვიდეოებისა და თამაშების მოსმენა." + "თქვენ მიერ მითითებული მაღვიძარების, შეხსენებების, მოვლენებისა და ზარების გარდა, არავითარი ხმა და ვიბრაცია არ შეგაწუხებთ. თქვენ მაინც შეძლებთ სასურველი კონტენტის, მაგალითად, მუსიკის, ვიდეოებისა და თამაშების აუდიოს მოსმენა." + "მაღვიძარების გარდა, არავითარი ხმა და ვიბრაცია არ შეგაწუხებთ. თქვენ მაინც შეძლებთ სასურველი კონტენტის, მაგალითად, მუსიკის, ვიდეოებისა და თამაშების აუდიოს მოსმენა." "მორგება" - "ეს ბლოკავს ყველა ხმასა და ვიბრაციას, მათ შორის, მაღვიძარების, მუსიკის, ვიდეოებისა და თამაშების. მიუხედავად ამისა, თქვენ მაინც შეძლებთ სატელეფონო ზარების განხორციელებას." + "ეს ვარიანტი დაბლოკავს ნებისმიერ ხმასა და ვიბრაციას, მათ შორის, მაღვიძარების, მუსიკის, ვიდეოებისა და თამაშების. მიუხედავად ამისა, თქვენ მაინც შეძლებთ სატელეფონო ზარების განხორციელებას." "ეს ბლოკავს ყველა ხმასა და ვიბრაციას, მათ შორის, მაღვიძარების, მუსიკის, ვიდეოებისა და თამაშების." "+%d" "ქვემოთ მითითებულია ნაკლებად სასწრაფო შეტყობინებები" @@ -456,7 +456,7 @@ "შეიტყვეთ მეტი" "თქვენ დაუკავშირდით %1$s-ს, რომელსაც თქვენი ქსელის აქტივობის, მათ შორის, ელფოსტის, აპებისა და ვებსაიტების, მონიტორინგი შეუძლია." " " - "VPN-ის პარამეტრების გახსნა" + "VPN-ის პარამეტრების გახსნა" " " "ავტორიზაციის სანდო მონაცემების გახსნა" "თქვენმა ადმინისტრატორმა ქსელის ჟურნალირება ჩართო, რომელიც თქვენი მოწყობილობის ტრაფიკის მონიტორინგს ახორციელებს.\n\nდამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს." @@ -556,8 +556,8 @@ "ამ აპს შეტყობინებების კატეგორიები არ აქვს" "ამ აპიდან შეტყობინებების გამორთვა ვერ მოხერხდება" - ამ აპის შეტყობინებების %d კატეგორიიდან 1 - ამ აპის შეტყობინებების %d კატეგორიიდან 1 + ამ აპის შეტყობინებების %s კატეგორიიდან 1 + ამ აპის შეტყობინებების %s კატეგორიიდან 1 "%1$s, %2$s" @@ -585,8 +585,8 @@ %d წუთი "ბატარეის მოხმარება" - "ბატარეის დამზოგი დატენვისას მიწვდომელია" - "ბატარეის დამზოგი" + "ბატარეის დამზოგი დატენვისას მიუწვდომელია" + "ბატარეის დამზოგი" "ამცირებს წარმადობას და ფონურ მონაცემებს" "ღილაკი „%1$s“" "Home" @@ -726,9 +726,9 @@ "ჩაკეცვა" "დახურვა" "დასახურად ჩავლებით ჩამოიტანეთ ქვემოთ" - "მენიუ „ეკრანი ეკრანში“" + "მენიუ" "%s იყენებს რეჟიმს „ეკრანი ეკრანში“" - "თუ არ გსურთ, რომ %s ამ ფუნქციას იყენებდეს, აქ შეხებით შეგიძლიათ გახსნათ პარამეტრები და გამორთოთ." + "თუ არ გსურთ, რომ %s ამ ფუნქციას იყენებდეს, აქ შეხებით შეგიძლიათ გახსნათ პარამეტრები და გამორთოთ ის." "დაკვრა" "დაპაუზება" "შემდეგზე გადასვლა" @@ -754,6 +754,7 @@ "მენიუ" "%1$s აპი" "გაფრთხილებები" + "ბატარეა" "ეკრანის ანაბეჭდები" "ზოგადი შეტყობინებები" "მეხსიერება" @@ -774,4 +775,5 @@ "ფონურ რეჟიმში გაშვებული აპები" "შეეხეთ ბატარეისა და მონაცემების მოხმარების შესახებ დეტალური ინფორმაციისთვის" "გსურთ მობილური ინტერნეტის გამორთვა?" + "ვინაიდან აპი ფარავს ნებართვის მოთხოვნას, პარამეტრების მიერ თქვენი პასუხი ვერ დასტურდება." diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 4bc858d4a3f6dd09473abada5052657c48c41b33..8937b7f6b5e80f2989d2bcdf12dc053ce7a5ffc3 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -64,7 +64,7 @@ "Бұл компьютердің RSA перне саусақ таңбасы:\n%1$s" "Осы компьютерден әрқашан рұқсат беру" "USB жөндеу рұқсат етілмеген" - "Осы құрылғыға қазір кірген пайдаланушы USB жөндеу мүмкіндігін қоса алмайды. Бұл мүмкіндікті пайдалану үшін әкімші пайдаланушыға ауысыңыз." + "Бұл құрылғыға жаңа кірген пайдаланушы USB түзетуін іске қосылмайды. Бұл мүмкіндікті пайдалану үшін негізгі пайдаланушыға ауысыңыз." "Экранды толтыру үшін ұлғайту" "Экранды толтыру үшін созу" "Скриншотты сақтауда…" @@ -353,10 +353,10 @@ "Іздеу" "%s үшін жоғары сырғыту." "%s үшін солға сырғыту." - "Дабылдар, еске салғыштар, оқиғалар мен өзіңіз көрсеткен контактілердің қоңырауларынан басқа дыбыстар мен дірілдер мазаламайтын болады. Музыка, бейне және ойындар сияқты ойнатылатын мазмұндардың дыбысы өшірілмейді." - "Дабылдардан басқа ешқандай дыбыстар мен дірілдер мазаламайтын болады. Музыка, бейне және ойындар сияқты ойнатылатын мазмұндардың дыбысы өшірілмейді." + "Дабылдар, еске салғыштар, оқиғалар мен өзіңіз көрсеткен контактілердің қоңырауларынан басқа дыбыстар мен дірілдер мазаламайтын болады. Музыка, бейне және ойындар сияқты ойнатылатын мазмұндарды ести алатын боласыз." + "Дабылдардан басқа ешқандай дыбыстар мен дірілдер мазаламайтын болады. Музыка, бейне және ойындар сияқты ойнатылатын мазмұндарды ести алатын боласыз." "Реттеу" - "БАРЛЫҚ, соның ішінде дабылдардың, музыканың, бейнелердің және ойындардың дыбыстары мен дірілдері өшіріледі. Бірақ телефон қоңыраулары шалына береді." + "Дабыл, музыка, бейнелер мен ойындарды қоса алғанда, барлық дыбыстар мен дірілдер бөгелетін болады. Қоңырау шала беруіңізге болады." "БАРЛЫҚ, соның ішінде дабылдардың, музыканың, бейнелердің және ойындардың дыбыстары мен дірілдері өшіріледі." "+%d" "Шұғылдығы азырақ хабарландырулар төменде" @@ -456,7 +456,7 @@ "Толығырақ" "Желідегі әрекеттерді, соның ішінде электрондық хабарларды, қолданбаларды және вебсайттарды бақылайтын %1$s қолданбасына қосылдыңыз." " " - "VPN параметрлерін ашу" + "VPN параметрлерін ашу" " " "Сенімді тіркелу деректерін ашу" "Әкімші құрылғыдағы трафикті қадағалау үшін желі журналын жүргізуді қосып қойған.\n\nТолығырақ ақпарат алу үшін әкімшімен хабарласыңыз." @@ -556,8 +556,8 @@ "Бұл қолданбада хабарландыру санаттары жоқ" "Бұл қолданбаның хабарландырулары өшірілмейді" - Осы қолданбадан %d ішінен 1 хабарландыру санаты - Осы қолданбадан %d ішінен 1 хабарландыру санаты + Осы қолданбадан %s ішінен 1 хабарландыру санаты + Осы қолданбадан %s ішінен 1 хабарландыру санаты "%1$s, %2$s" @@ -585,8 +585,8 @@ %d минут "Батареяны пайдалану" - "Зарядтау кезінде Батарея үнемдегіш қол жетімді емес" - "Батарея үнемдегіш" + "Зарядтау кезінде \"Battery saver\" функциясы қол жетімді емес" + "Battery saver" "Өнімділікті және фондық деректерді азайтады" "%1$s түймесі" "Home" @@ -726,9 +726,9 @@ "Кішірейту" "Жабу" "Жабу үшін төмен қарай сүйреңіз" - "\"Сурет ішіндегі сурет\" мәзірі" + "Mәзір" "%s \"сурет ішіндегі сурет\" режимінде" - "%s деген пайдаланушының бұл функцияны пайдалануына жол бермеу үшін параметрлерді түртіп ашыңыз да, оларды өшіріңіз." + "%s деген пайдаланушының бұл мүмкіндікті пайдалануын қаламасаңыз, параметрлерді түртіп ашыңыз да, оларды өшіріңіз." "Ойнату" "Кідірту" "Келесіге өту" @@ -754,6 +754,7 @@ "Mәзір" "%1$s қолданбасы" "Дабылдар" + "Батарея" "Скриншоттар" "Жалпы хабарлар" "Жад" @@ -774,4 +775,5 @@ "Фонда жұмыс істеп тұрған қолданбалар" "Батарея мен деректер трафигі туралы білу үшін түртіңіз" "Мобильдік деректер өшірілсін бе?" + "Басқа қолданба рұқсат сұрауын жасырып тұрғандықтан, параметрлер жауабыңызды растай алмайды." diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 52ab1cd6b254212bf56e13fa800703d14c679f0f..f50003c0340ac887ca2ab3f55f01d959fb3aa277 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -64,7 +64,7 @@ "ស្នាម​ម្រាម​ដៃ​ RSA របស់​កុំព្យូទ័រ​គឺ៖ \n%1$s" "អនុញ្ញាត​ជា​និច្ច​សម្រាប់​កុំព្យូទ័រ​នេះ" "មិនអនុញ្ញាតការកែកំហុសតាមរយៈយូអេសប៊ីទេ" - "អ្នកប្រើដែលបានចូលទៅឧបករណ៍នេះនាពេលបច្ចុប្បន្នមិនអាចបើកការកែកំហុសតាមរយៈយូអេសប៊ីបានទេ។ ដើម្បីប្រើលក្ខណៈពិសេសនេះ សូមប្តូរទៅរបៀបអ្នកប្រើជា អ្នកគ្រប់គ្រង។" + "អ្នកប្រើ​ដែលបច្ចុប្បន្ន​បានចូលគណនី​នៅលើឧបករណ៍នេះ​មិនអាចបើកការកែកំហុស USB បានទេ។ ដើម្បីប្រើមុខងារនេះ សូមប្តូរទៅអ្នកប្រើចម្បង។" "ពង្រីក​​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់" "ទាញ​ដើម្បី​ឲ្យ​ពេញ​អេក្រង់" "កំពុង​រក្សាទុក​រូបថត​អេក្រង់…" @@ -353,10 +353,10 @@ "ស្វែងរក" "រុញ​ឡើង​លើ​ដើម្បី %s ។" "រុញ​ទៅ​ឆ្វេង​ដើម្បី %s ។" - "សំឡេង និងរំញ័រមិន​រំខានដល់អ្នកឡើយ លើកលែងតែសំឡេងរោទ៍ ការរំលឹក ព្រឹត្តិការណ៍ និងអ្នកហៅទូរសព្ទដែលអ្នកបញ្ជាក់។ អ្នកនៅតែឮអ្វីគ្រប់យ៉ាងដែលអ្នកជ្រើសរើសឲ្យលេង រួមទាំងតន្រ្តី វីដេអូ និងហ្គេមផងដែរ។" - "សំឡេង និងរំញ័រមិន​រំខានដល់អ្នកឡើយ លើកលែងតែសំឡេងរោទ៍។ អ្នកនៅតែឮអ្វីគ្រប់យ៉ាងដែលអ្នកជ្រើសរើសឲ្យលេង រួមទាំងតន្រ្តី វីដេអូ និងហ្គេមផងដែរ។" + "សំឡេង និងរំញ័រនឹងមិន​រំខានដល់អ្នកឡើយ លើកលែងតែម៉ោងរោទ៍ ការរំលឹក ព្រឹត្តិការណ៍ និងអ្នកហៅទូរសព្ទដែលអ្នកបញ្ជាក់ប៉ុណ្ណោះ។ អ្នកនឹងនៅតែឮសំឡេងសកម្មភាពគ្រប់យ៉ាងដែលអ្នកលេងដដែល រួមទាំងតន្រ្តី វីដេអូ និងហ្គេម។" + "សំឡេង និងរំញ័រនឹងមិន​រំខានដល់អ្នកឡើយ លើកលែងតែម៉ោងរោទ៍ប៉ុណ្ណោះ។ អ្នកនឹងនៅតែឮសំឡេងសកម្មភាពគ្រប់យ៉ាងដែលអ្នកលេងដដែល រួមទាំងតន្រ្តី វីដេអូ និងហ្គេម។" "ប្ដូរតាមបំណង" - "វារារាំងសំឡេង និងរំញ័រទាំងអស់ ដោយរួមបញ្ចូលទាំងសំឡេងរោទ៍ តន្ត្រី វីដេអូ និងហ្គេម។ អ្នកនឹងនៅតែអាចធ្វើការហៅទូរសព្ទបានដដែល។" + "សកម្មភាពនេះ​ទប់ស្កាត់​សំឡេង និងរំញ័រទាំងអស់ រួមទាំងម៉ោងរោទ៍ តន្ត្រី វីដេអូ និងហ្គេមផងដែរ។ អ្នកនឹងនៅតែអាចធ្វើការហៅទូរសព្ទបានដដែល។" "វារារាំងសំឡេង និងរំញ័រទាំងអស់ដែលចេញពីម៉ោងរោទិ៍ តន្ត្រី វីដេអូ និងហ្គេម។" "+%d" "ការ​ជូន​ដំណឹង​​មិន​សូវ​បន្ទាន់​ខាង​ក្រោម" @@ -456,7 +456,7 @@ "ស្វែងយល់បន្ថែម" "អ្នកបានភ្ជាប់ទៅ %1$s ដែលអាចតាមដានសកម្មភាពក្នុងបណ្តាញរបស់អ្នក រួមទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រផងដែរ។" " " - "បើក​ការ​កំណត់​ VPN" + "បើក​ការកំណត់ VPN" " " "បើក​ព័ត៌មាន​សម្គាល់ខ្លួន​ដែល​ទុក​ចិត្ត" "អ្នក​គ្រប់គ្រង​របស់អ្នក​បាន​បើក​ការ​ធ្វើ​កំណត់ហេតុ​បណ្តាញ​ ដែល​នឹង​តាមដាន​ចរាចរណ៍​នៅលើ​ឧបករណ៍​របស់អ្នក។\n\nសម្រាប់​ព័ត៌មាន​បន្ថែម​ សូម​ទាក់ទង​អ្នក​គ្រប់គ្រង​របស់អ្នក។" @@ -556,8 +556,8 @@ "កម្មវិធីនេះ​មិនមាន​ប្រភេទនៃ​ការជូនដំណឹង​ទេ" "ការជូនដំណឹងពី​កម្មវិធីនេះមិនអាចបិទបានទេ" - ប្រភេទនៃការ​ជូនដំណឹង 1 ក្នុង​ចំណោម %d ដែលបានពី​កម្មវិធី​នេះ - ប្រភេទនៃការ​ជូនដំណឹង 1 ក្នុង​ចំណោម %d ដែលបានពី​កម្មវិធី​នេះ + ប្រភេទនៃការ​ជូនដំណឹង 1 ក្នុង​ចំណោម %s ដែលបានពី​កម្មវិធី​នេះ + ប្រភេទនៃការ​ជូនដំណឹង 1 ក្នុង​ចំណោម %s ដែលបានពី​កម្មវិធី​នេះ "%1$s, %2$s" @@ -585,8 +585,8 @@ %d នាទី "ការប្រើប្រាស់ថ្ម" - "កម្មវិធីសន្សំថ្មមិនអាចប្រើបានអំឡុងពេលសាកថ្មទេ" - "កម្មវិធីសន្សំថ្ម" + "កម្មវិធី​សន្សំថ្ម​មិនអាច​ប្រើបាន​អំឡុង​ពេល​សាកថ្ម​ទេ" + "កម្មវិធី​សន្សំ​ថ្ម" "កាត់បន្ថយប្រតិបត្តិការ និងទិន្នន័យផ្ទៃខាងក្រោយ" "ប៊ូតុង %1$s" "Home" @@ -726,9 +726,9 @@ "បង្រួម" "បិទ" "អូស​ចុះក្រោម​ដើម្បី​បដិសេធ" - "ម៉ឺនុយ​រូប​ក្នុងរូប" + "ម៉ឺនុយ" "%s ស្ថិតក្នុងមុខងាររូបក្នុងរូប" - "ប្រសិនបើ​អ្នក​មិន​ចង់​ឲ្យ %s ប្រើ​មុខងារ​នេះ​ទេ សូមចុច​ដើម្បី​បើក​ការកំណត់ រួច​បិទ​វា។" + "ប្រសិនបើ​អ្នក​មិន​ចង់​ឲ្យ %s ប្រើ​មុខងារ​នេះ​ សូមចុច​​បើក​ការកំណត់ រួច​បិទ​វា។" "លេង" "ផ្អាក" "រំលងទៅបន្ទាប់" @@ -754,6 +754,7 @@ "ម៉ឺនុយ" "កម្មវិធី %1$s" "ការ​ជូនដំណឹង" + "ថ្ម" "រូបថត​អេក្រង់" "សារ​ទូទៅ" "ទំហំផ្ទុក" @@ -774,4 +775,5 @@ "កម្មវិធីដែលកំពុងដំណើរការនៅផ្ទៃខាងក្រោយ" "ចុចដើម្បីមើលព័ត៌មានលម្អិតអំពីការប្រើប្រាស់ទិន្នន័យ និងថ្ម" "បិទទិន្នន័យ​ចល័ត?" + "ការកំណត់​មិនអាច​ផ្ទៀងផ្ទាត់​ការឆ្លើយតប​របស់អ្នក​បាន​ទេ ដោយសារ​កម្មវិធី​កំពុង​បាំងសំណើ​សុំការ​អនុញ្ញាត។" diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 1e376fc990384098114e7414b42c4c4f8847b8bd..087da86cff74ddfff9f96b660377aaaff4bc0fd5 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -64,7 +64,7 @@ "ಕಂಪ್ಯೂಟರ್‌ನ RSA ಕೀ ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಹೀಗಿದೆ :\n%1$s" "ಈ ಕಂಪ್ಯೂಟರ್‌ನಿಂದ ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ" "USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ" - "ಈ ಸಾಧನಕ್ಕೆ ಬಳಕೆದಾರರು ಪ್ರಸ್ತುತ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದಾರೆ USB ಡೀಬಗ್ ಮಾಡುವುದನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು, ದಯವಿಟ್ಟು ನಿರ್ವಾಹಕ ಬಳಕೆದಾರರಿಗೆ ಬದಲಾಯಿಸಿ." + "ಬಳಕೆದಾರರು ಪ್ರಸ್ತುತ ಈ ಸಾಧನಕ್ಕೆ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದಾರೆ USB ಡೀಬಗ್ ಮಾಡುವುದನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು, ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರಿಗೆ ಬದಲಾಯಿಸಿ." "ಪರದೆ ತುಂಬಿಸಲು ಝೂಮ್ ಮಾಡು" "ಪರದೆ ತುಂಬಿಸಲು ವಿಸ್ತಾರಗೊಳಿಸು" "ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಉಳಿಸಲಾಗುತ್ತಿದೆ…" @@ -353,10 +353,10 @@ "ಹುಡುಕಿ" "%s ಗಾಗಿ ಮೇಲಕ್ಕೆ ಸ್ಲೈಡ್ ಮಾಡಿ." "%s ಗಾಗಿ ಎಡಕ್ಕೆ ಸ್ಲೈಡ್ ಮಾಡಿ." - "ಅಲಾರಾಂಗಳು, ಜ್ಞಾಪನೆಗಳು, ಈವೆಂಟ್‌ಗಳು ಹಾಗೂ ನೀವು ಸೂಚಿಸಿರುವ ಕರೆದಾರರನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರಾವುದೇ ಸದ್ದುಗಳು ಅಥವಾ ವೈಬ್ರೇಶನ್‌ಗಳು ನಿಮಗೆ ತೊಂದರೆ ನೀಡುವುದಿಲ್ಲ. ಹಾಗಿದ್ದರೂ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಸಂಗೀತ, ವೀಡಿಯೊಗಳು ಮತ್ತು ಆಟಗಳ ಆಡಿಯೊ ನಿಮಗೆ ಕೇಳಿಸುತ್ತದೆ." - "ಅಲಾರಾಂಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಬೇರಾವುದೇ ಸದ್ದುಗಳು ಅಥವಾ ವೈಬ್ರೇಶನ್‌ಗಳು ನಿಮಗೆ ತೊಂದರೆ ನೀಡುವುದಿಲ್ಲ. ಹಾಗಿದ್ದರೂ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಸಂಗೀತ, ವೀಡಿಯೊಗಳು ಮತ್ತು ಆಟಗಳ ಆಡಿಯೊ ನಿಮಗೆ ಕೇಳಿಸುತ್ತದೆ." + "ಅಲಾರಾಂಗಳು, ಜ್ಞಾಪನೆಗಳು, ಈವೆಂಟ್‌ಗಳು ಹಾಗೂ ನೀವು ಸೂಚಿಸಿರುವ ಕರೆದಾರರನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರಾವುದೇ ಸದ್ದುಗಳು ಅಥವಾ ವೈಬ್ರೇಶನ್‌ಗಳು ನಿಮಗೆ ತೊಂದರೆ ನೀಡುವುದಿಲ್ಲ. ಹಾಗಿದ್ದರೂ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಸಂಗೀತ, ವೀಡಿಯೊಗಳು ಮತ್ತು ಆಟಗಳ ಆಡಿಯೊವನ್ನು ನೀವು ಕೇಳಿಸಿಕೊಳ್ಳುತ್ತೀರಿ." + "ಅಲಾರಾಂಗಳನ್ನು ಹೊರತುಪಡಿಸಿ, ಬೇರಾವುದೇ ಸದ್ದುಗಳು ಅಥವಾ ವೈಬ್ರೇಶನ್‌ಗಳು ನಿಮಗೆ ತೊಂದರೆ ನೀಡುವುದಿಲ್ಲ. ಹಾಗಿದ್ದರೂ, ನೀವು ಪ್ಲೇ ಮಾಡುವ ಸಂಗೀತ, ವೀಡಿಯೊಗಳು ಮತ್ತು ಆಟಗಳ ಆಡಿಯೊವನ್ನು ಕೇಳಿಸಿಕೊಳ್ಳುತ್ತೀರಿ." "ಕಸ್ಟಮೈಸ್ ಮಾಡು" - "ಇದು ಅಲಾರಮ್‌ಗಳು, ಸಂಗೀತ, ವೀಡಿಯೊಗಳು, ಮತ್ತು ಗೇಮ್‌ಗಳು ಸೇರಿದಂತೆ ಎಲ್ಲಾ ಧ್ವನಿಗಳು ಮತ್ತು ವೈಬ್ರೇಶನ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ನಿಮಗೆ ಈಗಲೂ ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ." + "ಇದು ಅಲಾರಮ್‌ಗಳು, ಸಂಗೀತ, ವೀಡಿಯೊಗಳು, ಮತ್ತು ಗೇಮ್‌ಗಳು ಸೇರಿದಂತೆ ಎಲ್ಲಾ ಧ್ವನಿಗಳು ಮತ್ತು ವೈಬ್ರೇಶನ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ನಿಮಗೆ ಈಗಲೂ ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ." "ಇದು ಅಲಾರಮ್‌ಗಳು, ಸಂಗೀತ, ವೀಡಿಯೊಗಳು, ಮತ್ತು ಗೇಮ್‌ಗಳು ಸೇರಿದಂತೆ ಎಲ್ಲಾ ಧ್ವನಿಗಳು ಮತ್ತು ವೈಬ್ರೇಶನ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ." "+%d" "ಕೆಳಗೆ ಕಡಿಮೆ ಅವಸರದ ಅಧಿಸೂಚನೆಗಳು" @@ -456,7 +456,7 @@ "ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ" "ನೀವು ಇಮೇಲ್‌ಗಳು, ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ನಿಮ್ಮ ನೆಟ್‌ವರ್ಕ್ ಚಟುವಟಿಕೆಯ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದಾದ, %1$s ಗೆ ನೀವು ಸಂಪರ್ಕಗೊಂಡಿರುವಿರಿ." " " - "VPN ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ" + "VPN ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಿರಿ" " " "ವಿಶ್ವಾಸಾರ್ಹ ರುಜುವಾತುಗಳನ್ನು ತೆರೆಯಿರಿ" "ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ನೆಟ್‌ವರ್ಕ್ ಲಾಗಿಂಗ್ ಆನ್ ಮಾಡಿದ್ದಾರೆ. ಇದು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿನ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ನಿಗಾ ಇರಿಸುತ್ತದೆ.\n\nಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ." @@ -556,8 +556,8 @@ "ಈ ಅಪ್ಲಿಕೇಶನ್ ಅಧಿಸೂಚನೆ ವರ್ಗಗಳನ್ನು ಹೊಂದಿಲ್ಲ" "ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ ಅಧಿಸೂಚನೆಗಳನ್ನು ಆಫ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ" - ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ %d ಅಧಿಸೂಚನೆ ವರ್ಗಗಳಲ್ಲಿ 1 ವರ್ಗ - ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ %d ಅಧಿಸೂಚನೆ ವರ್ಗಗಳಲ್ಲಿ 1 ವರ್ಗ + ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ %s ಅಧಿಸೂಚನೆ ವರ್ಗಗಳಲ್ಲಿ 1 ವರ್ಗ + ಈ ಅಪ್ಲಿಕೇಶನ್‌ನಿಂದ %s ಅಧಿಸೂಚನೆ ವರ್ಗಗಳಲ್ಲಿ 1 ವರ್ಗ "%1$s, %2$s" @@ -585,8 +585,8 @@ %d ನಿಮಿಷಗಳು "ಬ್ಯಾಟರಿ ಬಳಕೆ" - "ಚಾರ್ಜಿಂಗ್ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಟರಿ ಸೇವರ್‌‌ ಲಭ್ಯವಿರುವುದಿಲ್ಲ" - "ಬ್ಯಾಟರಿ ಸೇವರ್‌‌" + "ಚಾರ್ಜಿಂಗ್ ಸಮಯದಲ್ಲಿ ಬ್ಯಾಟರಿ ಸೇವರ್‌‌ ಲಭ್ಯವಿರುವುದಿಲ್ಲ" + "ಬ್ಯಾಟರಿ ಸೇವರ್‌‌" "ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ" "%1$s ಬಟನ್" "Home" @@ -726,9 +726,9 @@ "ಕುಗ್ಗಿಸಿ" "ಮುಚ್ಚಿ" "ವಜಾಗೊಳಿಸಲು ಕೆಳಕ್ಕೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ" - "ಚಿತ್ರದಲ್ಲಿ ಚಿತ್ರ ಮೆನು" + "ಮೆನು" "%s ಚಿತ್ರದಲ್ಲಿನ ಚಿತ್ರದಲ್ಲಿದೆ" - "%s ಈ ವೈಶಿಷ್ಟ್ಯ ಬಳಸುವುದನ್ನು ನೀವು ಬಯಸದಿದ್ದರೆ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆದು, ಅದನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ." + "%s ಈ ವೈಶಿಷ್ಟ್ಯ ಬಳಸುವುದನ್ನು ನೀವು ಬಯಸದಿದ್ದರೆ, ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೆರೆಯಲು ಮತ್ತು ಅದನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ." "ಪ್ಲೇ" "ವಿರಾಮಗೊಳಿಸಿ" "ಮುಂದಕ್ಕೆ ಸ್ಕಿಪ್‌ ಮಾಡಿ" @@ -754,6 +754,7 @@ "ಮೆನು" "%1$s ಅಪ್ಲಿಕೇಶನ್" "ಎಚ್ಚರಿಕೆಗಳು" + "ಬ್ಯಾಟರಿ" "ಸ್ಕ್ರೀನ್‌ಶಾಟ್‌ಗಳು" "ಸಾಮಾನ್ಯ ಸಂದೇಶಗಳು" "ಸಂಗ್ರಹಣೆ" @@ -774,4 +775,5 @@ "ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗುತ್ತಿವೆ" "ಬ್ಯಾಟರಿ,ಡೇಟಾ ಬಳಕೆಯ ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ" "ಮೊಬೈಲ್ ಡೇಟಾ ಆಫ್ ಮಾಡಬೇಕೆ?" + "ಅನುಮತಿ ವಿನಂತಿಯನ್ನು ಅಪ್ಲಿಕೇಶನ್ ಮರೆಮಾಚುತ್ತಿರುವ ಕಾರಣ, ಸೆಟ್ಟಿಂಗ್‌ಗಳಿಗೆ ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ." diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index acc1949df652e04d65fc9b51f9b621472608bf1f..ff3100bcd2f54cf36180f00b53e2dfbaaad4bf78 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -64,7 +64,7 @@ "컴퓨터 RSA 키 지문:\n%1$s" "이 컴퓨터에서 항상 허용" "USB 디버깅이 허용되지 않음" - "현재 이 기기에 로그인한 사용자는 USB 디버깅을 사용할 수 없습니다. 이 기능을 사용하려면 관리자로 전환하세요." + "현재 이 기기에 로그인한 사용자는 USB 디버깅을 사용 설정할 수 없습니다. 이 기능을 사용하려면 기본 사용자로 전환하세요." "전체화면 모드로 확대" "전체화면 모드로 확대" "캡쳐화면 저장 중..." @@ -355,10 +355,10 @@ "검색" "%s하려면 위로 슬라이드" "%s하려면 왼쪽으로 슬라이드" - "알람, 알림, 일정 및 지정한 발신자부터 받은 연락을 제외하고 소리와 진동을 끕니다. 음악, 동영상, 게임 등에서 재생하도록 선택한 소리는 정상적으로 들립니다." - "알람을 제외하고 소리와 진동을 끕니다. 음악, 동영상, 게임 등에서 재생하도록 선택한 소리는 정상적으로 들립니다." + "알람, 알림, 일정 및 지정한 발신자로부터 받은 전화를 제외한 소리와 진동을 끕니다. 음악, 동영상, 게임 등 재생하도록 선택한 소리는 정상적으로 들립니다." + "알람을 제외한 소리와 진동을 끕니다. 음악, 동영상, 게임 등 재생하도록 선택한 소리는 정상적으로 들립니다." "맞춤설정" - "알람, 음악, 동영상, 게임을 포함하여 모든 소리와 진동을 끕니다. 전화는 걸 수 있습니다." + "알람, 음악, 동영상, 게임을 비롯한 모든 소리와 진동을 끕니다. 이 경우에도 전화는 걸 수 있습니다." "알람, 음악, 동영상, 게임을 포함하여 모든 소리와 진동을 끕니다." "+%d" "아래에 덜 급한 알림 표시" @@ -458,7 +458,7 @@ "자세히 알아보기" "%1$s에 연결되었습니다. 이 앱은 이메일, 앱, 웹사이트와 같은 내 네트워크 활동을 모니터링할 수 있습니다." " " - "공개 VPN 설정" + "공개 VPN 설정" " " "신뢰할 수 있는 사용자 인증 정보 열기" "관리자가 기기에서 발생하는 트래픽을 모니터링하는 네트워크 로깅을 사용 설정했습니다.\n\n자세한 정보는 관리자에게 문의하세요." @@ -558,8 +558,8 @@ "이 앱에는 알림 카테고리가 없습니다." "이 앱의 알림을 사용 중지할 수 없습니다." - 이 앱에서 %d개의 알림 카테고리 중 1개가 정의됨 - 이 앱에서 %d개의 알림 카테고리 중 1개가 정의됨 + 이 앱에서 %s개의 알림 카테고리 중 1개가 정의됨 + 이 앱에서 %s개의 알림 카테고리 중 1개가 정의됨 "%1$s, %2$s" @@ -587,8 +587,8 @@ %d분 "배터리 사용량" - "충전하는 동안 배터리 세이버는 사용할 수 없습니다." - "배터리 세이버" + "충전 중에는 배터리 세이버를 사용할 수 없습니다." + "배터리 세이버" "성능 및 백그라운드 데이터를 줄입니다." "%1$s 버튼" "Home" @@ -728,9 +728,9 @@ "최소화" "닫기" "아래로 드래그하여 닫기" - "PIP 메뉴" + "메뉴" "%s에서 PIP 사용 중" - "%s에서 이 기능이 사용되는 것을 원하지 않는 경우 탭하여 설정을 열고 기능을 사용 중지하세요." + "%s에서 이 기능이 사용되는 것을 원하지 않는 경우 탭하여 설정을 열고 기능을 사용 중지하세요." "재생" "일시중지" "다음으로 건너뛰기" @@ -756,6 +756,7 @@ "메뉴" "%1$s 앱" "알림" + "배터리" "스크린샷" "일반 메시지" "저장공간" @@ -776,4 +777,5 @@ "백그라운드에서 실행 중인 앱" "탭하여 배터리 및 데이터 사용량 확인" "모바일 데이터를 사용 중지하시겠습니까?" + "앱이 권한 요청을 가리고 있기 때문에 설정에서 내 응답을 확인할 수 없습니다." diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index f27e97b96be36b82c095c8cb0d652f5d535f85f8..8a4105161531aa093087ac398aea4d8a73378d5d 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -64,7 +64,7 @@ "Компүтердин RSA ачкычынын контролдук суммасы:\n%1$s" "Бул компүтерден дайыма уруксат берилсин" "USB мүчүлүштүктөрүн оңдоого уруксат жок" - "Учурда ушул түзмөккө кирген колдонуучу USB мүчүлүштүктөрүн оңдоо функциясын күйгүзө албайт. Бул функцияны урунуу үчүн, администратордун каттоо эсебине которулуңуз." + "Учурда бул түзмөккө каттоо эсеби менен кирген колдонуучу USB мүчүлүштүктөрүн оңдоо функциясын күйгүзө албай жатат. Бул функцияны колдонуу үчүн негизги колдонуучунун каттоо эсебине которулуңуз." "Экрнд тлтр ү. чен өлч өзг" "Экранды толтуруу ү-н чоюу" "Скриншот сакталууда…" @@ -353,10 +353,10 @@ "Издөө" "%s үчүн жогору жылмыштырыңыз." "%s үчүн солго жылмыштырыңыз." - "Ойготкучтардан, эскертүүлөрдөн, жылнаамадагы иш-чараларды эстеткичтерден жана белгиленген байланыштардын чалууларынан тышкары башка үндөр жана дирилдөөлөр тынчыңызды албайт. Бирок ойнотулуп жаткан музыканы, видеолорду жана оюндарды мурдагыдай эле уга бересиз." - "Ойготкучтардан башка үндөр жана дирилдөөлөр тынчыңызды албайт. Бирок ойнотулуп жаткан музыканы, видеолорду жана оюндарды мурдагыдай эле уга бересиз." + "Ойготкучтардан, эскертүүлөрдөн, жылнаамадагы иш-чараларды эстеткичтерден жана белгиленген байланыштардын чалууларынан тышкары башка үндөр жана дирилдөөлөр тынчыңызды албайт. Бирок ойнотулуп жаткан музыканы, видеолорду жана оюндарды мурдагыдай эле уга бересиз." + "Ойготкучтардан башка үндөр жана дирилдөөлөр тынчыңызды албайт. Бирок ойнотулуп жаткан музыканы, видеолорду жана оюндарды мурдагыдай эле уга бересиз." "Ыңгайлаштыруу" - "Ушуну менен эскертүүлөрдүн, музыканын, видеолордун жана оюндардын үндөрү жана дирилдөөлөрү өчүрүлөт. Бирок телефон менен сүйлөшө бересиз." + "Ушуну менен эскертүүлөрдүн, музыканын, видеолордун жана оюндардын үндөрү жана дирилдөөлөрү өчүрүлөт. Бирок телефон менен сүйлөшө бересиз." "Ушуну менен эскертүүлөрдүн, музыканын, видеолордун жана оюндардын үндөрү жана дирилдөөлөрү өчүрүлөт." "+%d" "Анчейин шашылыш эмес эскертмелер төмөндө" @@ -456,7 +456,7 @@ "Кеңири маалымат" "Электрондук почта, колдонмолор жана вебсайттар сыяктуу тармактагы аракеттериңизди тескей турган %1$s колдонмосуна туташып турасыз." " " - "VPN жөндөөлөрүн ачуу" + "VPN жөндөөлөрүн ачуу" " " "Ишенимдүү эсептик дайындар баракчасын ачыңыз" "Администраторуңуз тармактын таржымалын алууну иштетти, андыктан түзмөгүңүздөгү трафик көзөмөлгө алынды.\n\nКеңири маалымат алуу үчүн администраторуңузга кайрылыңыз." @@ -556,8 +556,8 @@ "Бул колдонмонун эскертме категориялары жок" "Бул колдонмонун эскертмелерин өчүрүүгө болбойт" - Бул колдонмодогу %d эскертме категориянын ичинен 1 категория - Бул колдонмодогу %d эскертме категориянын ичинен 1 категория + Бул колдонмодогу %s эскертме категориянын ичинен 1 категория + Бул колдонмодогу %s эскертме категориянын ичинен 1 категория "%1$s, %2$s" @@ -585,8 +585,8 @@ %d мүнөт "Батарея колдонулушу" - "Батареяны үнөмдөгүч түзмөк кубатталып жатканда иштебейт" - "Батареяны үнөмдөгүч" + "Батареяны үнөмдөгүч түзмөк кубатталып жатканда иштебейт" + "Батареяны үнөмдөгүч" "Иштин майнаптуулугун начарлатып, фондук дайындарды чектейт" "%1$s баскычы" "Башкы бет" @@ -726,9 +726,9 @@ "Кичирейтүү" "Жабуу" "Четке кагуу үчүн төмөн сүйрөңүз" - "Сүрөт ичиндеги сүрөт менюсу" + "Меню" "%s – сүрөт ичиндеги сүрөт" - "Эгер %s колдонмосу бул функцияны пайдаланбасын десеңиз, жөндөөлөрдү ачып туруп, аны өчүрүп коюңуз." + "Эгер %s колдонмосу бул функцияны пайдаланбасын десеңиз, жөндөөлөрдү ачып туруп, аны өчүрүп коюңуз." "Ойнотуу" "Тындыруу" "Кийинкисине өткөрүп жиберүү" @@ -754,6 +754,7 @@ "Меню" "%1$s колдонмосу" "Эскертүүлөр" + "Батарея" "Скриншоттор" "Жалпы билдирүүлөр" "Сактагыч" @@ -774,4 +775,5 @@ "Фондо иштеп жаткан колдонмолор" "Батареянын кубаты жана трафиктин көлөмү жөнүндө билүү үчүн таптап коюңуз" "Мобилдик Интернетти өчүрөсүзбү?" + "Уруксат берүү сурамыңыз көрүнбөй калгандыктан, Жөндөөлөр жообуңузду ырастай албай жатат." diff --git a/packages/SystemUI/res/values-ldrtl/config.xml b/packages/SystemUI/res/values-ldrtl/config.xml index 40604c16be9b42d2dea3f2fbf18581287c803c1d..884c95f57f5138eadee3364447cd9d60023b40b1 100644 --- a/packages/SystemUI/res/values-ldrtl/config.xml +++ b/packages/SystemUI/res/values-ldrtl/config.xml @@ -17,5 +17,5 @@ - "778 54 1258 324" + "778 756 1258 1026" diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 3b792ed2860cc80243a47410b20df85aee334063..941ef71101bda611021645337d43f962d9d1c2ed 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -64,7 +64,7 @@ "ລາຍນິ້ມື RSA ຂອງຄອມພິວເຕີແມ່ນ:\n%1$s" "ອະນຸຍາດຈາກຄອມພິວເຕີນີ້ຕະຫຼອດ" "ບໍ່​ອະ​ນຸ​ຍາດ​ໃຫ້​ມີ​ການ​ແກ້​ໄຂ​ບັນ​ຫາ USB" - "ຜູ້​ໃຊ້ເຂົ້າ​ສູ່​ລະ​ບົບ​ຫາອຸ​ປະ​ກອນ​ນີ້ຢູ່​ໃນ​ເວ​ລາ​ນີ້​ບໍ່​ສາ​ມາດ​ເປີດການ​ແກ້​ໄຂ​ບັນ​ຫາ USB ໄດ້. ເພື່ອ​ໃຊ້ຟີ​ເຈີ​ນີ້, ກະ​ລຸ​ນາຍ້າຍ​ໄປ​ຫາ​ຜູ້​ໃຊ້ຄວບ​ຄຸມ." + "ຜູ້ໃຊ້ທີ່ກຳລັງເຂົ້າສູ່ລະບົບອຸປະກອນຢູ່ໃນຕອນນີ້ບໍ່ສາມາດເປີດໃຊ້ການດີບັກ USB ໄດ້. ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ສະຫຼັບໄປໃຊ້ຜູ້ໃຊ້ຫຼັກ." "ຊູມໃຫ້ເຕັມໜ້າຈໍ" "ປັບໃຫ້ເຕັມໜ້າຈໍ" "ກຳລັງບັນທຶກຮູບໜ້າຈໍ" @@ -353,10 +353,10 @@ "ຊອກຫາ" "ເລື່ອນຂຶ້ນເພື່ອ %s." "ເລື່ອນໄປທາງຊ້າຍເພື່ອ %s." - "ທ່ານຈະບໍ່ໄດ້ຮັບການລົບກວນຈາກສຽງ ຫຼື ການສັ່ງເຕືອນ, ຍົກເວັ້ນໃນເວລາໂມງ, ການແຈ້ງເຕືອນ, ນັດໝາຍ ແລະປະຕິທິນທີ່ທ່ານບຸ . ທ່ານອາດຍັງຄົງໄດ້ຍິນຫາກທ່ານເລືອກຫຼິ້ນເພລງ, ວິດີໂອ ລລະ ເກມ." - "ທ່ານຈະບໍ່ໄດ້ຮັບການລົບກວນຈາກສຽງ ຫຼື ການສັ່ງເຕືອນ, ຍົກເວັ້ນໃນເວລາໂມງປຸກດັງ. ທ່ານອາດຍັງຄົງໄດ້ຍິນຫາກທ່ານເລືອກຫຼິ້ນເພລງ, ວິດີໂອ ລລະ ເກມ." + "ທ່ານຈະບໍ່ໄດ້ຮັບການລົບກວນຈາກສຽງ ແລະ ການສັ່ນເຕືອນ, ຍົກເວັ້ນໃນເວລາໂມງປຸກດັງ, ມີການແຈ້ງເຕືອນ ຫຼື ມີສາຍໂທເຂົ້າຈາກຜູ້ໂທທີ່ທ່ານລະບຸໄວ້. ທ່ານອາດຍັງຄົງໄດ້ຍິນຫາກທ່ານເລືອກຫຼິ້ນເພງ, ວິດີໂອ ແລະ ເກມ." + "ທ່ານຈະບໍ່ໄດ້ຮັບການລົບກວນຈາກສຽງ ແລະ ການສັ່ນເຕືອນ, ຍົກເວັ້ນໃນເວລາໂມງປຸກດັງ. ທ່ານອາດຍັງຄົງໄດ້ຍິນຫາກທ່ານເລືອກຫຼິ້ນເພງ, ວິດີໂອ ແລະ ເກມ." "ປັບແຕ່ງ" - "ນີ້ຈະເປັນການປິດສຽງ ແລະ ການສັ່ນທັງໝົດ ຮວມທັງສຽງໂມງປຸກ, ເພງ, ວິດີໂອ ແລະ ເກມນຳ. ແຕ່ທ່ານຍັງສາມາດໂທລະສັບໄດ້ປົກກະຕິ." + "ນີ້ຈະເປັນການປິດສຽງ ແລະ ການສັ່ນເຕືອນທັງໝົດໄວ້ ຮວມທັງໂມງປຸກ, ເພງ, ວິດີໂອ ແລະ ເກມ. ທ່ານຈະຍັງສາມາດໄດ້ຍິນສຽງໃນເວລາໂທໄດ້ຢູ່." "ອັນ​ນີ້ບ​ລັອກ​ທຸກ​ສຽງ ແລະ​ການ​ສັ່ນ, ລວມ​ທັງ​ຈາກ​ໂມງ​ປຸກ, ເພງ, ວິ​ດີ​ໂອ, ແລະ​ເກມ." "+%d" "ການ​ແຈ້ງເຕືອນ​ທີ່​ສຳຄັນ​ໜ້ອຍ​ກວ່າ​ຢູ່​ດ້ານ​ລຸ່ມ" @@ -456,7 +456,7 @@ "ສຶກສາເພີ່ມເຕີມ" "ທ່ານເຊື່ອມຕໍ່ກັບ %1$s ແລ້ວ, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍ, ຮວມທັງອີເມວ, ແອັບ ແລະ ເວັບໄຊຕ່າງໆໄດ້." " " - "ເປີດການຕັ້ງຄ່າ VPN" + "ເປີດການຕັ້ງຄ່າ VPN" " " "ເປີດຂໍ້ມູນການຮັບຮອງທີ່ເຊື່ອຖືໄດ້" "Your admin has turned on network logging, which monitors traffic on your device.\n\nFor more information, contact your admin." @@ -556,8 +556,8 @@ "ແອັບນີ້ບໍ່ມີໝວດໝູ່ການແຈ້ງເຕືອນ" "ການແຈ້ງເຕືອນຈາກແອັບນີ້ບໍ່ສາມາດປິດໄວ້ໄດ້" - 1 ຈາກທັງໝົດ %d ໝວດໝູ່ການແຈ້ງເຕືອນຈາກແອັບນີ້ - 1 ຈາກທັງໝົດ %d ໝວດໝູ່ການແຈ້ງເຕືອນຈາກແອັບນີ້ + 1 ຈາກທັງໝົດ %s ໝວດໝູ່ການແຈ້ງເຕືອນຈາກແອັບນີ້ + 1 ຈາກທັງໝົດ %s ໝວດໝູ່ການແຈ້ງເຕືອນຈາກແອັບນີ້ "%1$s, %2$s" @@ -585,8 +585,8 @@ %d ນາທີ "ການໃຊ້ແບັດເຕີຣີ" - "ຕົວປະຢັດແບັດເຕີຣີບໍ່ມີໃຫ້ນຳໃຊ້ໃນລະຫວ່າງການສາກ" - "ຕົວປະຢັດ​ແບັດເຕີຣີ" + "ບໍ່ສາມາດໃຊ້ຕົວປະຢັດແບັດເຕີຣີໃນຂະນະທີ່ກຳລັງສາກໄຟໄດ້" + "ຕົວປະຢັດ​ແບັດເຕີຣີ" "ຫຼຸດ​ປະ​ສິ​ທິ​ພາບ​ການໃຊ້ງານ ແລະ ​ຂໍ້​ມູນ​ພື້ນຫຼັງ" "ປຸ່ມ %1$s" "Home" @@ -726,9 +726,9 @@ "ຫຍໍ້" "ປິດ" "ລາກລົງເພື່ອປິດໄວ້" - "ເມນູຊ້ອນຮູບພາບ" + "ເມນູ" "%s ແມ່ນເປັນການສະແດງຜົນຫຼາຍຢ່າງພ້ອມກັນ" - "ຫາກທ່ານບໍ່ຕ້ອງການ %s ໃຫ້ໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ແຕະເພື່ອເປີດການຕັ້ງຄ່າ ແລ້ວປິດມັນໄວ້." + "ຫາກທ່ານບໍ່ຕ້ອງການ %s ໃຫ້ໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ແຕະເພື່ອເປີດການຕັ້ງຄ່າ ແລ້ວປິດມັນໄວ້." "ຫຼິ້ນ" "ຢຸດຊົ່ວຄາວ" "ຂ້າມໄປລາຍການໜ້າ" @@ -754,6 +754,7 @@ "ເມນູ" "ແອັບ %1$s" "ການເຕືອນ" + "ແບັດເຕີຣີ" "ຮູບຖ່າຍໜ້າຈໍ" "ຂໍ້ຄວາມທົ່ວໄປ" "ບ່ອນເກັບຂໍ້ມູນ" @@ -774,4 +775,5 @@ "ແອັບທີ່ກຳລັງເຮັດວຽກໃນພື້ນຫຼັງ" "ແຕະເພື່ອເບິ່ງລາຍລະອຽດການນຳໃຊ້ແບັດເຕີຣີ ແລະ ອິນເຕີເນັດ" "ປິດອິນເຕີເນັດມືຖືໄວ້ບໍ?" + "ເນື່ອງຈາກມີແອັບໃດໜຶ່ງກຳລັງຂັດຂວາງການຂໍອະນຸຍາດ, ການຕັ້ງຄ່າຈຶ່ງບໍ່ສາມາດຢັ້ງຢືນການຕອບຮັບຂອງທ່ານໄດ້." diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index d4c27b4fe0a1ffe296aafe8689575026d21fdf34..ee627d7027d5112e11b915a365f0f4022feb5dcc 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -66,7 +66,7 @@ "Šio kompiuterio RSA rakto kontrolinis kodas yra:\n%1$s" "Visada leisti iš šio kompiuterio" "USB derinimas neleidžiamas" - "Šiuo metu prie įrenginio prisijungęs naudotojas negali įjungti USB derinimo. Norėdami naudoti šią funkciją, perjunkite į pagrindinį administratoriaus naudotoją." + "Šiuo metu prie įrenginio prisijungęs naudotojas negali įjungti USB derinimo. Kad galėtumėte naudoti šią funkciją, perjunkite į pagrindinį naudotoją." "Keisti mast., kad atit. ekr." "Ištempti, kad atit. ekr." "Išsaugoma ekrano kopija..." @@ -357,10 +357,10 @@ "Paieška" "Slyskite aukštyn link %s." "Slyskite į kairę link %s." - "Jūsų netrikdys garsai ir vibravimas, išskyrus nurodytų signalų, priminimų, įvykių ir skambintojų garsus. Vis tiek girdėsite viską, ką pasirinksite leisti, įskaitant muziką, vaizdo įrašus ir žaidimus." - "Jūsų netrikdys garsai ir vibravimas, išskyrus signalus. Vis tiek girdėsite viską, ką pasirinksite leisti, įskaitant muziką, vaizdo įrašus ir žaidimus." + "Jūsų netrikdys garsai ir vibravimas, išskyrus nurodytų signalų, priminimų, įvykių ir skambintojų garsus. Vis tiek girdėsite viską, ką pasirinksite leisti, įskaitant muziką, vaizdo įrašus ir žaidimus." + "Jūsų netrikdys garsai ir vibravimas, išskyrus signalus. Vis tiek girdėsite viską, ką pasirinksite leisti, įskaitant muziką, vaizdo įrašus ir žaidimus." "Tinkinti" - "Taip bus užblokuoti VISI garsai ir vibravimas, įskaitant signalų, muzikos, vaizdo įrašų ir žaidimų garsus ir vibravimą. Vis tiek galėsite skambinti telefonu." + "Taip bus užblokuoti VISI garsai ir vibravimas, įskaitant signalų, muzikos, vaizdo įrašų bei žaidimų garsus ir vibravimą. Vis tiek galėsite skambinti telefonu." "Taip bus užblokuoti VISI garsai ir vibravimas, įskaitant signalų, muzikos, vaizdo įrašų ir žaidimų garsus ir vibravimą." "+%d" "Mažiau skubūs pranešimai toliau" @@ -460,7 +460,7 @@ "Sužinoti daugiau" "Esate prisijungę prie programos „%1$s“, kuri gali stebėti tinklo veiklą, įskaitant el. laiškus, programas ir svetaines." " " - "Atidaryti VPN nustatymus" + "Atidaryti VPN nustatymus" " " "Atidaryti patikimų prisijungimo duomenų puslapį" "Administratorius įjungė tinklo duomenų įrašymą į žurnalą. Įjungus šią funkciją stebimas srautas jūsų įrenginyje.\n\nJei reikia daugiau informacijos, susisiekite su administratoriumi." @@ -560,10 +560,10 @@ "Šioje programoje nėra pranešimų kategorijų" "Šios programos pranešimų negalima išjungti" - 1 iš %d šios programos pranešimų kategorijos - 1 iš %d šios programos pranešimų kategorijų - 1 iš %d šios programos pranešimų kategorijos - 1 iš %d šios programos pranešimų kategorijų + 1 iš %s šios programos pranešimų kategorijos + 1 iš %s šios programos pranešimų kategorijų + 1 iš %s šios programos pranešimų kategorijos + 1 iš %s šios programos pranešimų kategorijų "„%1$s“, „%2$s“" @@ -597,8 +597,8 @@ %d minučių "Akum. energ. vartoj." - "Akumuliatoriaus tausojimo priemonė nepasiekiama įkraunant" - "Akumuliatoriaus tausojimo priemonė" + "Akumuliatoriaus tausojimo priemonė nepasiekiama įkraunant" + "Akumuliatoriaus tausojimo priemonė" "Sumažinamas našumas ir foninių duomenų naudojimas" "Mygtukas %1$s" "Pagrindinis" @@ -738,9 +738,9 @@ "Sumažinti" "Uždaryti" "Nuvilkite žemyn, kad atsisakytumėte" - "Vaizdo vaizde meniu" + "Meniu" "%s rodom. vaizdo vaizde" - "Jei nenorite, kad %s naudotų šią funkciją, palietę atidarykite nustatymus ir išjunkite ją." + "Jei nenorite, kad „%s“ naudotų šią funkciją, palietę atidarykite nustatymus ir išjunkite ją." "Leisti" "Pristabdyti" "Praleisti ir eiti į kitą" @@ -766,6 +766,7 @@ "Meniu" "Programa „%1$s“" "Įspėjimai" + "Akumuliatorius" "Ekrano kopijos" "Bendrieji pranešimai" "Saugykla" @@ -786,4 +787,5 @@ "Programos, veikiančios fone" "Palieskite ir sužinokite išsamios informacijos apie akumuliatoriaus bei duomenų naudojimą" "Išjungti mobiliojo ryšio duomenis?" + "Kadangi programa užstoja leidimo užklausą, nustatymuose negalima patvirtinti jūsų atsakymo." diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 0fac57f39aa494a6f84929010efde5823d6cb2ca..e101ff0f8f6c03c87913874efb61cf46cd402039 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -65,7 +65,7 @@ "Datora RSA atslēgas ciparfails: \n%1$s" "Vienmēr atļaut no šī datora" "USB atkļūdošana nav atļauta" - "Lietotājs, kurš pašlaik ir pierakstījies šajā ierīcē, nevar iespējot USB atkļūdošanu. Lai izmantotu šo funkciju, pārslēdzieties uz lietotāju, kam ir administratora tiesības." + "Lietotājs, kurš pašlaik ir pierakstījies šajā ierīcē, nevar iespējot USB atkļūdošanu. Lai izmantotu šo funkciju, pārslēdzieties uz galveno lietotāju." "Tālumm., lai aizp. ekr." "Stiepiet, lai aizp. ekr." "Saglabā ekrānuzņēmumu…" @@ -355,10 +355,10 @@ "Meklēt" "Velciet uz augšu, lai veiktu šādu darbību: %s." "Velciet pa kreisi, lai veiktu šādu darbību: %s." - "Jūs netraucēs skaņas un vibrācija, izņemot signālus, atgādinājumus, pasākumus un zvanītājus, ko būsiet norādījis. Jūs joprojām dzirdēsiet atskaņošanai izvēlētos vienumus, tostarp mūziku, videoklipus un spēles." - "Jūs netraucēs skaņas un vibrācija, izņemot signālus. Jūs joprojām dzirdēsiet atskaņošanai izvēlētos vienumus, tostarp mūziku, videoklipus un spēles." + "Jūs netraucēs skaņas un vibrācija, izņemot signālus, atgādinājumus, pasākumus un zvanītājus, ko būsiet norādījis. Jūs joprojām dzirdēsiet atskaņošanai izvēlētos vienumus, tostarp mūziku, videoklipus un spēles." + "Jūs netraucēs skaņas un vibrācija, izņemot signālus. Jūs joprojām dzirdēsiet atskaņošanai izvēlētos vienumus, tostarp mūziku, videoklipus un spēles." "Pielāgot" - "Tiks bloķētas VISAS skaņas un vibrosignāli, tostarp modinātāja, mūzikas, videoklipu un spēļu skaņas un signāli. Jūs joprojām varēsiet veikt tālruņa zvanus." + "Tiks bloķētas VISAS skaņas un vibrosignāli, tostarp modinātāja, mūzikas, videoklipu un spēļu skaņas un signāli. Jūs joprojām varēsiet veikt tālruņa zvanus." "Tiks bloķētas VISAS skaņas un vibrosignāli, tostarp modinātāja, mūzikas, videoklipu un spēļu skaņas un signāli." "+%d" "Mazāk steidzami paziņojumi tiek rādīti tālāk" @@ -458,7 +458,7 @@ "Uzzināt vairāk" "Ir izveidots savienojums ar lietotni %1$s, kas var pārraudzīt jūsu darbības tīklā, tostarp e-pasta ziņojumus, lietotnes un vietnes." " " - "Atvērt VPN iestatījumus" + "Atvērt VPN iestatījumus" " " "Atvērt uzticamo akreditācijas datu sadaļu" "Administrators ir ieslēdzis tīkla reģistrēšanu, kuru izmanto, lai pārraudzītu datplūsmu jūsu ierīcē.\n\nLai iegūtu plašāku informāciju, sazinieties ar administratoru." @@ -558,9 +558,9 @@ "Paziņojumu kategorijas šajā lietotnē nav pieejamas." "Paziņojumus no šīs lietotnes nevar izslēgt" - 1 no %d šīs lietotnes paziņojumu kategorijām. - 1 no %d šīs lietotnes paziņojumu kategorijas. - 1 no %d šīs lietotnes paziņojumu kategorijām. + 1 no %s šīs lietotnes paziņojumu kategorijām. + 1 no %s šīs lietotnes paziņojumu kategorijas. + 1 no %s šīs lietotnes paziņojumu kategorijām. "%1$s, %2$s" @@ -591,8 +591,8 @@ %d minūtes "Akumulatora lietojums" - "Akumulatora jaudas taupīšanas režīms uzlādes laikā nav pieejams." - "Akumulatora jaudas taupīšanas režīms" + "Akumulatora jaudas taupīšanas režīms nav pieejams uzlādes laikā." + "Akumulatora jaudas taupīšanas režīms" "Samazina veiktspēju un fona datus." "Poga %1$s" "Sākumvietas taustiņš" @@ -732,9 +732,9 @@ "Minimizēt" "Aizvērt" "Velciet lejup, lai noraidītu" - "Izvēlne attēlam attēlā" + "Izvēlne" "%s ir attēlā attēlā" - "Ja nevēlaties lietotnē %s izmantot šo funkciju, pieskarieties, lai atvērtu iestatījumus un funkciju izslēgtu." + "Ja nevēlaties lietotnē %s izmantot šo funkciju, pieskarieties, lai atvērtu iestatījumus un izslēgtu funkciju." "Atskaņot" "Apturēt" "Pāriet uz nākamo" @@ -760,6 +760,7 @@ "Izvēlne" "%1$s lietotne" "Brīdinājumi" + "Akumulators" "Ekrānuzņēmumi" "Vispārīgi ziņojumi" "Krātuve" @@ -780,4 +781,5 @@ "Lietotnes, kas darbojas fonā" "Pieskarieties, lai skatītu detalizētu informāciju par akumulatora un datu lietojumu" "Vai izslēgt mobilos datus?" + "Lietotne Iestatījumi nevar verificēt jūsu atbildi, jo cita lietotne aizsedz atļaujas pieprasījumu." diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index f2992ad0eced6b4a6b124f1793174bbc6a4d0891..11673fd9be5b3ab41d40af0e077f34002b9cc3ab 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -64,7 +64,7 @@ "Клучниот отпечаток на RSA на компјутерот е:\n%1$s" "Секогаш дозволувај од овој компјутер" "Отстранувањето грешки на USB не е дозволено" - "Корисникот што моментално е најавен на уредов не може да вклучи отстранување грешки на USB. За да ја користите функцијата, префрлете се на корисникот Администратор." + "Корисникот што моментално е најавен на уредов не може да вклучи отстранување грешки на USB. За да ја користите функцијава, префрлете се на примарниот корисник." "Зумирај да се исполни екранот" "Растегни да се исполни екранот" "Сликата на екранот се зачувува..." @@ -353,10 +353,10 @@ "Пребарај" "Лизгај нагоре за %s." "Лизгај налево за %s." - "Нема да ве вознемируваат звуци и вибрации, освен од аларми, потсетници, настани и повикувачи што ќе ги наведете. Сѐ уште ќе слушате сѐ што ќе изберете да пуштите, како музика, видеа и игри." - "Нема да ве вознемируваат звуци и вибрации, освен од аларми. Сѐ уште ќе слушате сѐ што ќе изберете да пуштите, како музика, видеа и игри." + "Нема да ве вознемируваат звуци и вибрации, освен од аларми, потсетници, настани и повикувачи што ќе ги наведете. Сѐ уште ќе слушате сѐ што ќе изберете да пуштите, како музика, видеа и игри." + "Нема да ве вознемируваат звуци и вибрации, освен од аларми. Сѐ уште ќе слушате сѐ што ќе изберете да пуштите, како музика, видеа и игри." "Приспособи" - "Ова ги блокира СИТЕ звуци и вибрации, вклучувајќи ги и оние од алармите, музиката, видеата и игрите. Сѐ уште ќе може да воспоставувате телефонски повици." + "Ова ги блокира СИТЕ звуци и вибрации, заедно со алармите, музиката, видеата и игрите. Сѐ уште ќе може да воспоставувате телефонски повици." "Ова ги блокира СИТЕ звуци и вибрации, вклучувајќи ги и оние од алармите, музиката, видеата и игрите." "+%d" "Долу се помалку итни известувања" @@ -456,7 +456,7 @@ "Дознајте повеќе" "Поврзани сте на %1$s, којашто може да ја следи вашата активност на мрежата, вклучувајќи ги е-пораките, апликациите и веб-сајтовите." " " - "Отворете „Поставки за VPN“" + "Отворете „Поставки за VPN“" " " "Отворете ги доверливите акредитиви" "Вашиот администратор вклучил евиденција на мрежата, што подразбира следење на сообраќајот на вашиот уред.\n\nЗа повеќе информации, контактирајте со администраторот." @@ -556,8 +556,8 @@ "Апликацијава нема катерии известувања" "Известувањата од апликацијава не може да се исклучат" - 1 од %d категорија известувања од апликацијава - 1 од %d категории известувања од апликацијава + 1 од %s категорија известувања од апликацијава + 1 од %s категории известувања од апликацијава "%1$s, %2$s" @@ -585,8 +585,8 @@ %d минути "Користење батерија" - "Штедачот на батерија не е достапен при полнење" - "Штедач на батерија" + "Штедачот на батерија не е достапен при полнење" + "Штедач на батерија" "Ја намалува изведбата и податоците во заднина" "Копче %1$s" "Home-копче" @@ -726,9 +726,9 @@ "Минимизирај" "Затвори" "Повлечете надолу за да отфрлите" - "Мени слика во слика" + "Мени" "%s е во слика во слика" - "Ако не сакате %s да ја користи функцијава, допрете за да ги отворите поставките и исклучете ја." + "Ако не сакате %s да ја користи функцијава, допрете за да ги отворите поставките и да ја исклучите." "Пушти" "Паузирај" "Прескокни до следната" @@ -754,6 +754,7 @@ "Мени" "Апликација %1$s" "Предупредувања" + "Батерија" "Слики од екранот" "Општи пораки" "Капацитет" @@ -774,4 +775,5 @@ "Апликациите се извршуваат во заднина" "Допрете за детали за батеријата и потрошениот сообраќај" "Да се исклучи мобилниот интернет?" + "Бидејќи апликацијата го прикрива барањето за дозвола, „Поставките“ не може да го потврдат вашиот одговор." diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index c50f1435a8f10fd153606adbff9c2f72cedb935e..e30dbcbaaed0ec5acd59ee3667108830bdd45881 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -64,7 +64,7 @@ "ഈ കമ്പ്യൂട്ടറിന്റെ RSA കീ ഫിംഗർപ്രിന്റ് ഇതാണ്:\n%1$s" "ഈ കമ്പ്യൂട്ടറിൽ നിന്ന് എല്ലായ്പ്പോഴും അനുവദിക്കുക" "USB ഡീബഗ്ഗിംഗ് അനുവദനീയമല്ല" - "ഈ ഉപകരണത്തിൽ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന ഉപയോക്താവിന് USB ഡീബഗ്ഗിംഗ് ഓണാക്കാനാകില്ല. ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ, അഡ്‌മിൻ ഉപയോക്താവിലേക്ക് മാറുക." + "ഉപകരണത്തിൽ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്‌തിരിക്കുന്ന ഉപയോക്താവിന് USB ഡീബഗ്ഗിംഗ് ഓണാക്കാനാകില്ല. ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ പ്രാഥമിക ഉപയോക്താവിലേക്ക് മാറുക." "സ്‌ക്രീനിൽ ഉൾക്കൊള്ളിക്കാൻ സൂം ചെയ്യുക" "സ്‌ക്രീനിൽ ഉൾക്കൊള്ളിക്കാൻ വലിച്ചുനീട്ടുക" "സ്‌ക്രീൻഷോട്ട് സംരക്ഷിക്കുന്നു..." @@ -353,10 +353,10 @@ "തിരയൽ" "%s എന്നതിനായി മുകളിലേയ്‌ക്ക് സ്ലൈഡുചെയ്യുക." "%s എന്നതിനായി ഇടത്തേയ്‌ക്ക് സ്ലൈഡുചെയ്യുക." - "നിങ്ങൾ സജ്ജീകരിച്ച അലാറങ്ങൾ, റിമൈൻഡറുകൾ, ഇവന്റുകൾ, കോളർമാർ എന്നിവയിൽ നിന്നുള്ള ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളുമൊഴികെ മറ്റൊന്നും നിങ്ങളെ ശല്യപ്പെടുത്തുകയില്ല. സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയുൾപ്പെടെ പ്ലേ ചെയ്യുന്നതെന്തും നിങ്ങൾക്ക് ‌തുടർന്നും കേൾക്കാൻ കഴിയും." - "അലാറങ്ങളിൽ നിന്നുള്ള ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളുമൊഴികെ മറ്റൊന്നും നിങ്ങളെ ശല്യപ്പെടുത്തുകയില്ല. സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയുൾപ്പെടെ പ്ലേ ചെയ്യുന്നതെന്തും നിങ്ങൾക്ക് ‌തുടർന്നും കേൾക്കാൻ കഴിയും." + "നിങ്ങൾ സജ്ജീകരിച്ച അലാറങ്ങൾ, റിമൈൻഡറുകൾ, ഇവന്റുകൾ, കോളർമാർ എന്നിവയിൽ നിന്നുള്ള ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളുമൊഴികെ മറ്റൊന്നും നിങ്ങളെ ശല്യപ്പെടുത്തുകയില്ല. സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയുൾപ്പെടെ പ്ലേ ചെയ്യുന്നതെന്തും നിങ്ങൾക്ക് ‌തുടർന്നും കേൾക്കാൻ കഴിയും." + "അലാറങ്ങളിൽ നിന്നുള്ള ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളുമൊഴികെ മറ്റൊന്നും നിങ്ങളെ ശല്യപ്പെടുത്തുകയില്ല. സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയുൾപ്പെടെ പ്ലേ ചെയ്യുന്നതെന്തും നിങ്ങൾക്ക് ‌തുടർന്നും കേൾക്കാൻ കഴിയും." "ഇഷ്‌ടാനുസൃതമാക്കുക" - "ഇത് അലാറങ്ങൾ, സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയിൽ നിന്നുൾപ്പെടെ എല്ലാ ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളും തടയുന്നു. നിങ്ങൾക്ക് തുടർന്നും ഫോൺ വിളിക്കാനാകും." + "അലാറങ്ങൾ, സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയിൽ നിന്നുൾപ്പെടെ എല്ലാ ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളും ഇത് തടയുന്നു. നിങ്ങൾക്ക് തുടർന്നും ഫോൺ കോളുകൾ ചെയ്യാനാകും." "ഇത് അലാറങ്ങൾ, സംഗീതം, വീഡിയോകൾ, ഗെയിമുകൾ എന്നിവയിൽ നിന്നുൾപ്പെടെ എല്ലാ ശബ്‌ദങ്ങളും വൈബ്രേഷനുകളും തടയുന്നു." "+%d" "ആവശ്യം കുറഞ്ഞ അറിയിപ്പുകൾ ചുവടെ നൽകിയിരിക്കുന്നു" @@ -456,7 +456,7 @@ "കൂടുതലറിയുക" "നിങ്ങൾ %1$s ആപ്പിലേക്ക് കണക്റ്റുചെയ്‌തിരിക്കുന്നു, ഇമെയിലുകൾ, ആപ്‌സ്, വെബ്‌സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നിങ്ങളുടെ നെറ്റ്‌വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാൻ ഈ ആപ്പിന് കഴിയും." " 5" - "VPN ക്രമീകരണം തുറക്കുക" + "VPN ക്രമീകരണം തുറക്കുക" " 5" "പരിചിത ക്രെഡൻഷ്യലുകൾ തുറക്കുക" "നിങ്ങളുടെ ഉപകരണത്തിലെ ട്രാഫിക്ക് നിരീക്ഷിക്കുന്ന നെറ്റ്‌വർക്ക് ലോഗിംഗ് അഡ്‌മിൻ ഓണാക്കിയിട്ടുണ്ട്.\n\nകൂടുതൽ ‌വിവരങ്ങൾക്ക് അഡ്‌മിനുമായി‌ ബന്ധപ്പെടുക." @@ -556,8 +556,8 @@ "ഈ ആപ്പിന് അറിയിപ്പ് വിഭാഗങ്ങളില്ല" "ഈ ആപ്പിൽ നിന്നുള്ള അറിയിപ്പുകൾ ഓഫാക്കാൻ കഴിയില്ല" - ഈ ആപ്പിൽ നിന്ന് 1 / %d അറിയിപ്പ് വിഭാഗങ്ങൾ - ഈ ആപ്പിൽ നിന്ന് 1 / %d അറിയിപ്പ് വിഭാഗം + ഈ ആപ്പിൽ നിന്ന് 1 / %s അറിയിപ്പ് വിഭാഗങ്ങൾ + ഈ ആപ്പിൽ നിന്ന് 1 / %s അറിയിപ്പ് വിഭാഗം "%1$s, %2$s" @@ -585,8 +585,8 @@ %d മിനിറ്റ് "ബാറ്ററി ഉപയോഗം" - "ചാർജുചെയ്യുന്ന സമയത്ത് ബാറ്ററി ലാഭിക്കൽ നടക്കില്ല" - "ബാറ്ററി ലാഭിക്കൽ" + "ചാർജുചെയ്യുന്ന സമയത്ത് ബാറ്ററി ലാഭിക്കൽ നടക്കില്ല" + "ബാറ്ററി ലാഭിക്കൽ" "പ്രവർത്തനവും പശ്ചാത്തല ഡാറ്റയും കുറയ്‌ക്കുന്നു" "ബട്ടൺ %1$s" "ഹോം" @@ -726,9 +726,9 @@ "ചെറുതാക്കുക‍" "അവസാനിപ്പിക്കുക" "തള്ളിക്കളയാൻ താഴേക്ക് വലിച്ചിടുക" - "\'ചിത്രത്തിനുള്ളിൽ ചിത്രം\' മെനു" + "മെനു" "%s ചിത്രത്തിനുള്ളിലെ ചിത്രത്തിലാണ്" - "%s ഈ ഫീച്ചർ ഉപയോഗിക്കുന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ടാപ്പുചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക." + "%s ഈ ഫീച്ചർ ഉപയോഗിക്കുന്നതിൽ നിങ്ങൾക്ക് താൽപ്പര്യമില്ലെങ്കിൽ, ടാപ്പുചെയ്‌ത് ക്രമീകരണം തുറന്ന് അത് ഓഫാക്കുക." "പ്ലേ ചെയ്യുക" "താൽക്കാലികമായി നിർത്തുക" "അടുത്തതിലേക്ക് പോകുക" @@ -754,6 +754,7 @@ "മെനു" "%1$s ആപ്പ്" "അലേർട്ടുകൾ" + "ബാറ്ററി" "സ്‌ക്രീൻഷോട്ടുകൾ" "പൊതുവായ സന്ദേശങ്ങൾ" "സ്റ്റോറേജ്" @@ -774,4 +775,5 @@ "ആപ്പുകൾ പശ്ചാത്തലത്തിൽ റൺ ചെയ്യുന്നു" "ബാറ്ററി, ഡാറ്റ ഉപയോഗം എന്നിവയുടെ വിശദാംശങ്ങളറിയാൻ ടാപ്പുചെയ്യുക" "മൊബൈൽ ഡാറ്റ ഓഫാക്കണോ?" + "അനുമതി അഭ്യർത്ഥനയെ ഒരു ആപ്പ് മറയ്‌ക്കുന്നതിനാൽ, ക്രമീകരണത്തിന് നിങ്ങളുടെ പ്രതികരണം പരിശോധിച്ചുറപ്പിക്കാനാകില്ല." diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index f59046ad357fc7e941f79c6f63ef35aa0a62818f..8455c5adee808598bb025f274680fa944eedabe7 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -62,7 +62,7 @@ "Компьютерийн RSA түлхүүрийн хурууны хээ :\n%1$s" "Энэ компьютерээс орохыг байнга зөвшөөрөх" "USB алдаа засалт хийх боломжгүй" - "Энэ төхөөрөмжид нэвтэрсэн хэрэглэгч USB алдаа засалтыг асаах боломжгүй байна. Энэ функцийг ашиглахын тулд хэрэглэгчийг админ хэрэглэгч рүү шилжүүлнэ үү." + "Энэ төхөөрөмжид нэвтэрсэн хэрэглэгч USB дебаг хийх онцлогийг асаах боломжгүй байна. Энэ онцлогийг ашиглахын тулд үндсэн хэрэглэгч рүү сэлгэнэ үү." "Дэлгэц дүүргэх бол өсгөнө үү" "Дэлгэц дүүргэх бол татна уу" "Дэлгэцийн агшинг хадгалж байна…" @@ -351,10 +351,10 @@ "Хайх" "%s-г гулсуулах." "%s хийх зүүнлүү гулсуулах." - "Танд сэрүүлэг, сануулга, үйл ажиллагаа, таны сонгосон дуудлага илгээгчээс бусад дуу, чичиргээ саад болохгүй. Та хөгжим, видео, тоглоом зэрэг тоглуулахыг хүссэн бүх зүйлээ сонсох боломжтой хэвээр байна." - "Танд сэрүүлгээс бусад дуу, чичиргээ саад болохгүй. Та хөгжим, видео, тоглоом зэрэг тоглуулахыг хүссэн бүх зүйлээ сонсох боломжтой хэвээр байна." + "Танд сэрүүлэг, сануулга, арга хэмжээ, таны сонгосон дуудлага илгээгчээс бусад дуу, чичиргээ саад болохгүй. Та хөгжим, видео, тоглоом зэрэг тоглуулахыг хүссэн бүх зүйлээ сонсох боломжтой хэвээр байна." + "Танд сэрүүлгээс бусад дуу, чичиргээ саад болохгүй. Та хөгжим, видео, тоглоом зэрэг тоглуулахыг хүссэн бүх зүйлээ сонсох боломжтой хэвээр байна." "Тохируулах" - "Энэ нь сэрүүлэг, хөгжим, видео, тоглоом зэргийг оруулаад зэрэг БҮХ дуу, чичиргээг блоклодог. Та дуудлага хийх боломжтой хэвээр байна." + "Энэ нь сэрүүлэг, хөгжим, видео, тоглоом зэрэг БҮХ дуу, чичиргээг блоклодог. Та дуудлага хийх боломжтой хэвээр байна." "Энэ нь сэрүүлэг, хөгжим, видео, тоглоом зэргийг оруулаад зэрэг БҮХ дуу, чичиргээг блоклодог." "+%d" "Яаралтай биш мэдэгдлүүдийг доор" @@ -454,7 +454,7 @@ "Дэлгэрэнгүй үзэх" "Таны имэйл, апп, вэб хуудас зэрэг сүлжээний үйл ажиллагааг хянах боломжтой %1$s-д холбогдсон байна." " " - "VPN тохиргоог нээх" + "VPN тохиргоог нээх" " " "Итгэмжлэгдсэн мандат үнэмлэхийг нээх" "Таны админ төхөөрөмжийн ачааллыг хянадаг сүлжээний логийг асаасан байна.\n\nДэлгэрэнгүй мэдээлэл авах бол админтайгаа холбогдоно уу." @@ -556,8 +556,8 @@ "Энэ апп-д мэдэгдлийн категори алга" "Энэ аппын мэдэгдлийг унтраах боломжгүй" - Энэ аппын %d мэдэгдлийн категорийн 1 - Энэ аппын %d мэдэгдлийн категорийн 1 + Энэ аппын %s мэдэгдлийн категорийн 1 + Энэ аппын %s мэдэгдлийн категорийн 1 "%1$s, %2$s" @@ -585,8 +585,8 @@ %d минут "Тэжээл ашиглалт" - "Цэнэглэх үед тэжээл хэмнэгч ажиллахгүй" - "Тэжээл хэмнэгч" + "Цэнэглэх үед тэжээл хэмнэгч ажиллахгүй" + "Тэжээл хэмнэгч" "Гүйцэтгэл болон дэвсгэрийн датаг багасгадаг" "%1$s товчлуур" "Нүүр хуудас" @@ -726,9 +726,9 @@ "Багасгах" "Хаах" "Хаахын тулд доош чирэх" - "Дэлгэцэн доторх дэлгэцийн цэс" + "Цэс" "%s дэлгэцэн доторх дэлгэцэд байна" - "Та %s-г энэ онцлогийг ашиглахыг хүсэхгүй байвал тохиргоог нээгээд, үүнийг унтраана уу." + "Та %s-д энэ онцлогийг ашиглуулахыг хүсэхгүй байвал тохиргоог нээгээд, үүнийг унтраана уу." "Тоглуулах" "Түр зогсоох" "Дараагийн медиад очих" @@ -754,6 +754,7 @@ "Цэс" "%1$s апп" "Сануулга" + "Батерей" "Дэлгэцийн зураг дарах" "Энгийн зурвас" "Хадгалах сан" @@ -774,4 +775,5 @@ "Цаана ажиллаж буй апп" "Батерей, дата ашиглалтын талаар дэлгэрэнгүйг харахын тулд товшино уу" "Мобайл датаг унтраах уу?" + "Апп нь зөвшөөрлийн хүсэлтийг танихгүй байгаа тул Тохиргооноос таны хариултыг баталгаажуулах боломжгүй байна." diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 05ed38e19f2fd8b3487fc2a4117b990a4abcedab..34064f3a3c6c869b19323a0991054a8f870c2236 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -64,7 +64,7 @@ "संगणकाची RSA की फिंगरप्रिंट ही आहे:\n%1$s" "या संगणकावरून नेहमी अनुमती द्या" "USB डीबग करण्‍यास अनुमती नाही" - "या डिव्‍हाइसमध्‍ये सध्‍या साइन इन केलेला वापरकर्ता USB डीबग करणे चालू करू शकत नाही. हे वैशिष्ट्य वापरण्‍यासाठी, कृपया एका प्रशासक वापरकर्त्यावर स्विच करा." + "सध्‍या या डीव्हाइसमध्‍ये साइन इन केलेला वापरकर्ता USB डीबग करणे चालू करू शकत नाही. हे वैशिष्‍ट्य वापरण्‍यासाठी, प्राथमिक वापरकर्त्‍यावर स्विच करा." "स्क्रीन भरण्यासाठी झूम करा" "स्क्रीन भरण्यासाठी ताणा" "स्क्रीनशॉट जतन करत आहे…" @@ -137,7 +137,7 @@ "चालू." "बंद." "कनेक्‍ट केले." - "कनेक्ट करीत आहे." + "कनेक्ट करत आहे." "GPRS" "1 X" "HSPA" @@ -168,7 +168,7 @@ "सर्व सूचना पहा" "सूचना साफ करा." "GPS सक्षम केले." - "GPS प्राप्त करीत आहे." + "GPS प्राप्त करत आहे." "TeleTypewriter सक्षम केले." "रिंगर कंपन." "रिंगर मूक." @@ -179,7 +179,7 @@ "%s डिसमिस केला." "अलीकडील सर्व अॅप्लिकेशन डिसमिस झाले." "%s अॅप्लिकेशन माहिती उघडा." - "%s प्रारंभ करीत आहे." + "%s प्रारंभ करत आहे." "%1$s %2$s" "सूचना डिसमिस केल्या." "सूचना शेड." @@ -311,7 +311,7 @@ "पूर्ण झाले" "कनेक्ट केलेले" "कनेक्ट केलेले आहे, बॅटरी %1$s" - "कनेक्ट करीत आहे..." + "कनेक्ट करत आहे..." "टेदरिंग" "हॉटस्पॉट" "सूचना" @@ -353,10 +353,10 @@ "शोध" "%s साठी वर स्लाइड करा." "%s साठी डावीकडे स्लाइड करा." - "अलार्म, रिमाइंडर्स, इव्‍हेंट आणि तुम्ही निश्चित केलेल्या कॉलरचा अपवाद वगळता तुम्हाला कोणत्याही आवाज आणि कंपनांचा व्यत्त्यय आणला जाणार नाही. तसे असले तरीही तुम्ही प्ले करायचे ठरवलेले कोणतेही संगीत, व्हिडिओ आणि गेमचे आवाज चालू ठेवले जातील." - "अलार्मचा अपवाद सोडल्यास तुम्हाला कोणत्याही आवाज आणि कंपनांचा व्यत्यय आणला जाणार नाही. तसे असले तरीही तुम्ही प्ले करायचे ठरवलेले कोणतेही संगीत, व्हिडिओ आणि गेमचे आवाज चालू ठेवले जातील." + "अलार्म, रिमाइंडर, इव्‍हेंट आणि तुम्ही निश्चित केलेल्या कॉलर व्यतिरिक्त तुम्हाला कोणत्याही आवाज आणि कंपनांचा व्यत्त्यय आणला जाणार नाही. तरीही तुम्ही प्ले करायचे ठरवलेले कोणतेही संगीत, व्हिडिओ आणि गेमचे आवाज ऐकू शकतात." + "अलार्म व्यतिरिक्त तुम्हाला कोणत्याही आवाज आणि कंपनांचा व्यत्त्यय आणला जाणार नाही. तरीही तुम्ही प्ले करायचे ठरवलेले कोणतेही संगीत, व्हिडिओ आणि गेमचे आवाज ऐकू शकतात." "सानुकूलित करा" - "हे अलार्म, संगीत, व्हिडिओ आणि गेम यासह, सर्व आवाज आणि कंपने अवरोधित करते. आपण तरीही फोन कॉल करण्यात सक्षम व्हाल." + "हे अलार्म, संगीत, व्हिडिओ आणि गेमसह, सर्व आवाज आणि कंपने ब्लॉक करते. तरीही तुम्ही फोन कॉल करू शकतात." "हे अलार्म, संगीत, व्हिडिओ आणि गेम यासह, सर्व आवाज आणि कंपने अवरोधित करते." "+%d" "खाली कमी तातडीच्या सूचना" @@ -456,7 +456,7 @@ "अधिक जाणून घ्या" "आपण %1$s शी कनेक्‍ट केले आहे, जो ईमेल, अ‍ॅप्स आणि वेबसाइटसह आपल्‍या नेटवर्क क्रियाकलापाचे परीक्षण करू शकतो." " " - "VPN सेटिंग्ज उघडा" + "VPN सेटिंग्ज उघडा" " " "विश्वासू क्रेडेंशियल उघडा" "आपल्या प्रशासकाने नेटवर्क लॉगिंग चालू केले आहे, जे आपल्या डिव्हाइसवरील रहदारीचे निरीक्षण करते.\n\nअधिक माहितीसाठी आपल्या प्रशासकाशी संपर्क साधा." @@ -556,8 +556,8 @@ "या अ‍ॅपला सूचना श्रेण्या नाहीत" "या अ‍ॅपकडून येणार्‍या सूचना बंद ठेवता येणार नाहीत" - या अॅपकडील %d पैकी 1 सूचना श्रेणी - या अॅपकडील %d पैकी 1 सूचना श्रेणी + या अॅपकडील %s पैकी 1 सूचना श्रेणी + या अॅपकडील %s पैकी 1 सूचना श्रेणी "%1$s, %2$s" @@ -585,8 +585,8 @@ %d मिनिटे "बॅटरी वापर" - "चार्ज करताना बॅटरी बचतकर्ता उपलब्ध नाही" - "बॅटरी बचतकर्ता" + "चार्ज करताना बॅटरी सेव्‍हर उपलब्ध नाही" + "बॅटरी सेव्हर" "कामगिरी आणि पार्श्वभूमीवरील डेटा कमी करते" "बटण %1$s" "Home" @@ -726,9 +726,9 @@ "लहान करा" "बंद करा" "डिसमिस करण्यासाठी खाली ड्रॅग करा" - "चित्र मेनूमधील चित्र" + "मेनू" "%s चित्रामध्ये चित्र मध्ये आहे" - "%s ने हे वैशिष्ट्य वापरू नये असे आपल्याला वाटत असल्यास, टॅप करून सेटिंग्ज उघडा आणि ते बंद करा." + "%sने हे वैशिष्ट्य वापरू नये असे तुम्हाला वाटत असल्यास, सेटिंग्ज उघडण्यासाठी टॅप करा आणि ते बंद करा." "प्ले करा" "थांबवा" "डावलून पुढे जा" @@ -754,6 +754,7 @@ "मेनू" "%1$s अ‍ॅप" "सूचना" + "बॅटरी" "स्क्रीनशॉट" "सर्वसाधारण संदेश" "संचय" @@ -774,4 +775,5 @@ "अॅप्‍स बॅकग्राउंडमध्‍ये चालू आहेत" "बॅटरी आणि डेटा वापराच्‍या तपशीलांसाठी टॅप करा" "मोबाइल डेटा बंद करायचा?" + "अ‍ॅप परवानगी विनंती अस्पष्‍ट करत असल्‍याने, सेटिंग्ज तुमचा प्रतिसाद पडताळू शकत नाहीत." diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index b1592d6db2e3769705cc3aa939ce5e70a7ada8af..1a1d337da5b571c15aba9ac82423d2db752c6426 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -64,7 +64,7 @@ "Cap jari kekunci RSA komputer ialah:\n%1$s" "Sentiasa benarkan komputer ini" "Penyahpepijatan USB tidak dibenarkan" - "Pengguna yang sedang dilog masuk ke peranti ini tidak boleh menghidupkan penyahpepijatan USB. Untuk menggunakan ciri ini, sila beralih kepada pengguna Pentadbir." + "Pengguna yang log masuk ke peranti ini pada masa ini tidak boleh menghidupkan penyahpepijatan USB. Untuk menggunakan ciri ini, tukar kepada pengguna utama." "Zum untuk memenuhi skrin" "Regang utk memenuhi skrin" "Menyimpan tangkapan skrin..." @@ -353,10 +353,10 @@ "Carian" "Luncurkan ke atas untuk %s." "Luncurkan ke kiri untuk %s." - "Anda tidak akan diganggu oleh bunyi dan getaran, kecuali daripada penggera, peringatan, acara dan pemanggil yang anda tetapkan. Anda masih mendengar item lain yang anda pilih untuk dimainkan termasuk muzik, video dan permainan." - "Anda tidak akan diganggu oleh bunyi dan getaran, kecuali daripada penggera. Anda masih mendengar item lain yang anda pilih untuk dimainkan termasuk muzik, video dan permainan." + "Anda tidak akan diganggu oleh bunyi dan getaran, kecuali daripada penggera, peringatan, acara dan pemanggil yang anda tetapkan. Anda masih mendengar item lain yang anda pilih untuk dimainkan termasuk muzik, video dan permainan." + "Anda tidak akan diganggu oleh bunyi dan getaran, kecuali daripada penggera. Anda masih mendengar item lain yang anda pilih untuk dimainkan termasuk muzik, video dan permainan." "Peribadikan" - "Mod ini menyekat SEMUA bunyi dan getaran, termasuk daripada penggera, muzik, video dan permainan. Anda masih boleh membuat panggilan telefon." + "Mesej ini menyekat SEMUA bunyi dan getaran, termasuk daripada penggera, muzik, video dan permainan. Anda masih dapat membuat panggilan telefon." "Mod ini menyekat SEMUA bunyi dan getaran, termasuk daripada penggera, muzik, video dan permainan." "+%d" "Pemberitahuan kurang penting di bawah" @@ -456,7 +456,7 @@ "Ketahui lebih lanjut" "Anda disambungkan ke %1$s, yang boleh memantau aktiviti rangkaian anda, termasuk e-mel, apl dan tapak web." " " - "Buka Tetapan VPN" + "Buka tetapan VPN" " " "Buka bukti kelayakan yang dipercayai" "Pentadbir anda telah menghidupkan pengelogan rangkaian yang memantau trafik pada peranti anda.\n\nUntuk mendapatkan maklumat lanjut, hubungi pentadbir anda." @@ -556,8 +556,8 @@ "Apl ini tiada kategori pemberitahuan" "Pemberitahuan daripada apl ini tidak boleh dimatikan" - 1 daripada %d kategori pemberitahuan daripada apl ini - 1 daripada %d kategori pemberitahuan daripada apl ini + 1 daripada %s kategori pemberitahuan daripada apl ini + 1 daripada %s kategori pemberitahuan daripada apl ini "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minit "Penggunaan bateri" - "Penjimat Bateri tidak tersedia semasa mengecas" - "Penjimat Bateri" + "Penjimat bateri tidak tersedia semasa mengecas" + "Penjimat bateri" "Mengurangkan prestasi dan data latar belakang" "Butang %1$s" "Skrin Utama" @@ -726,9 +726,9 @@ "Minimumkan" "Tutup" "Seret ke bawah untuk mengetepikan" - "Menu gambar dalam gambar" + "Menu" "%s terdapat dalam gambar dalam gambar" - "Jika anda tidak mahu %s menggunakan ciri ini, ketik untuk membuka tetapan dan matikan ciri." + "Jika anda tidak mahu %s menggunakan ciri ini, ketik untuk membuka tetapan dan matikan ciri." "Main" "Jeda" "Langkau ke seterusnya" @@ -754,6 +754,7 @@ "Menu" "Apl %1$s" "Makluman" + "Bateri" "Tangkapan skrin" "Mesej Am" "Storan" @@ -774,4 +775,5 @@ "Apl yang berjalan di latar belakang" "Ketik untuk mendapatkan butiran tentang penggunaan kuasa bateri dan data" "Matikan data mudah alih?" + "Oleh sebab apl melindungi permintaan kebenaran, Tetapan tidak dapat mengesahkan jawapan anda." diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index c07969a88fa4398197a58d1fcb510251e5328c5e..6b79e3341997445e9aae4fa35eec5064c2e5f3a1 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -64,7 +64,7 @@ "ဒီကွန်ပျူတာရဲ့ RSA key fingerprint ကတော့:\n%1$s ဖြစ်ပါသည်" "ဒီကွန်ပျူတာမှ အမြဲခွင့်ပြုရန်" "USB အမှားပြင်ဆင်ခြင်း ခွင့်မပြုပါ" - "ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် USB အမှားပြင်ဆင်ခြင်း ဖွင့်၍မရပါ။ ဤအင်္ဂါရပ်ကို အသုံးပြုရန်၊ ကျေးဇူးပြု၍ ကြီးကြပ်သူသို့ပြောင်းပါ။" + "ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် USB အမှားပြင်ဆင်ခြင်းကို ဖွင့်၍မရပါ။ ဤဝန်ဆောင်မှုကို အသုံးပြုရန် အဓိကအသုံးပြုသူအဖြစ်သို့ ပြောင်းပါ။" "ဇူးမ်အပြည့်ဆွဲခြင်း" "ဖန်သားပြင်အပြည့်ဆန့်ခြင်း" "ဖန်သားပြင်ဓါတ်ပုံသိမ်းစဉ်.." @@ -353,10 +353,10 @@ "ရှာဖွေရန်" "%s အတွက် အပေါ်ကို ပွတ်ဆွဲပါ" "%s အတွက် ဖယ်ဘက်ကို ပွတ်ဆွဲပါ" - "နှိုးစက်သံ၊ သတိပေးချက်အသံများ၊ ပွဲစဉ်သတိပေးသံများနှင့် သင်ခွင့်ပြုထားသူများထံမှ ဖုန်းခေါ်မှုများမှလွဲ၍ အခြားအသံများနှင့် တုန်ခါမှုများက သင့်ကို အနှောင့်အယှက်ပြုမည် မဟုတ်ပါ။ သို့သော်လည်း သီချင်း၊ ဗီဒီယိုနှင့် ဂိမ်းများအပါအဝင် သင်ကရွေးချယ်ဖွင့်ထားသည့် အရာတိုင်း၏ အသံကိုမူ ကြားနေရဆဲဖြစ်ပါလိမ့်မည်။" - "နှိုးစက်သံမှလွဲ၍ အခြားအသံများနှင့် တုန်ခါမှုများက သင့်ကို အနှောင့်အယှက်ပြုမည် မဟုတ်ပါ။ သို့သော်လည်း သီချင်း၊ ဗီဒီယိုနှင့် ဂိမ်းများအပါအဝင် သင်ကရွေးချယ်ဖွင့်ထားသည့် အရာတိုင်း၏ အသံကိုမူ ကြားနေရဆဲဖြစ်ပါလိမ့်မည်။" + "နှိုးစက်သံ၊ သတိပေးချက်အသံများ၊ ပွဲစဉ်သတိပေးသံများနှင့် သင်ခွင့်ပြုထားသူများထံမှ ဖုန်းခေါ်မှုများမှလွဲ၍ အခြားအသံများနှင့် တုန်ခါမှုများက သင့်ကို အနှောင့်အယှက်ပြုမည် မဟုတ်ပါ။ သို့သော်လည်း သီချင်း၊ ဗီဒီယိုနှင့် ဂိမ်းများအပါအဝင် သင်ကရွေးချယ်ဖွင့်ထားသည့် အရာတိုင်း၏ အသံကိုမူ ကြားနေရဆဲဖြစ်ပါလိမ့်မည်။" + "နှိုးစက်သံမှလွဲ၍ အခြားအသံများနှင့် တုန်ခါမှုများက သင့်ကို အနှောင့်အယှက်ပြုမည် မဟုတ်ပါ။ သို့သော်လည်း သီချင်း၊ ဗီဒီယိုနှင့် ဂိမ်းများအပါအဝင် သင်ကရွေးချယ်ဖွင့်ထားသည့် အရာတိုင်း၏ အသံကိုမူ ကြားနေရဆဲဖြစ်ပါလိမ့်မည်။" "စိတ်ကြိုက် ပြုလုပ်ရန်" - "ဤအရာမှ နှိုးစက်၊ ဂီတ၊ ဗွီဒီယိုများနှင့် ဂိမ်းများ အပါအဝင်၊ အသံအားလုံးနှင့် တုန်ခါမှုများအား တားဆီးပေးသည်။ ဖုန်းခေါ်ဆိုမှုများ ပြုလုပ်နိုင်ဆဲဖြစ်မည်။" + "၎င်းသည် နှိုးစက်သံ၊ သီချင်း၊ ဗွီဒီယိုများနှင့် ဂိမ်းများ အပါအဝင် အသံများနှင့် တုန်ခါမှုအားလုံးကို တားဆီးပေးသည်။ ဖုန်းခေါ်ဆိုမှုများကိုမူ ပြုလုပ်နိုင်ဆဲဖြစ်ပါလိမ့်မည်။" "နှိုးစက်၊ ဂီတ၊ ဗွီဒီယိုများနှင့် ဂိမ်းများ အပါအဝင်၊ အသံအားလုံးနှင့် တုန်ခါမှုများအား ဤအရာမှ တားဆီးပေး၏။" "+%d" "အရေးပါမှု နည်းသည့် အကြောင်းကြားချက်များ အောက်မှာ" @@ -456,7 +456,7 @@ "ပိုမိုလေ့လာရန်" "အီးမေးလ်၊ အက်ပ်နှင့် ဝဘ်ဆိုက်များအပါအဝင် သင့်ကွန်ရက်လုပ်ဆောင်ချက်ကို စောင့်ကြည့်နိုင်သည့် %1$s သို့ သင်သည် ချိတ်ဆက်ထားပါသည်။" " " - "Open VPN ဆက်တင်များ" + "VPN ဆက်တင်များကို ဖွင့်ရန်" " " "ယုံကြည်စိတ်ချရသော အထောက်အထားများကို ဖွင့်ရန်" "သင့်စီမံခန့်ခွဲသူသည် စက်ပစ္စည်းပေါ်ရှိ ဒေတာအသွားအလာကို စောင့်ကြည့်နိုင်သည့် ကွန်ရက်အတွက် မှတ်တမ်းတင်ခြင်းကို ဖွင့်ထားပါသည်။\n\nနောက်ထပ် အချက်အလက်များအတွက် သင့်စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။" @@ -556,8 +556,8 @@ "ဤအက်ပ်တွင် အကြောင်းကြားချက် အမျိုးအစားများ မရှိပါ" "ဤအက်ပ်မှပို့သော အကြောင်းကြားချက်များကို ပိတ်ထား၍မရပါ" - ဤအက်ပ်ရှိ အကြောင်းကြားချက်အမျိုးအစား %d ခု အနက်မှ ၁ ခု - ဤအက်ပ်ရှိ အကြောင်းကြားချက်အမျိုးအစား %d ခု အနက်မှ ၁ ခု + ဤအက်ပ်ရှိ အကြောင်းကြားချက်အမျိုးအစား %s ခု အနက်မှ ၁ ခု + ဤအက်ပ်ရှိ အကြောင်းကြားချက်အမျိုးအစား %s ခု အနက်မှ ၁ ခု "%1$s%2$s" @@ -585,8 +585,8 @@ %d မိနစ် "ဘက်ထရီ အသုံးပြုမှု" - "အားသွင်းနေချိန်မှာ Battery Saver ကို သုံးမရပါ" - "Battery Saver" + "အားသွင်းနေစဉ် ဘက်ထရီချွေတာမှုစနစ်ကို သုံး၍ မရပါ" + "ဘက်ထရီ ချွေတာမှုစနစ်" "လုပ်ဆောင်မှု နှင့် နောက်ခံ ​ဒေတာကို လျော့နည်းစေပါသည်" "ခလုတ် %1$s" "ပင်မ" @@ -726,9 +726,9 @@ "ချုံ့ရန်" "ပိတ်ရန်" "ပယ်ရန်အတွက် အောက်သို့ ပွတ်ဆွဲပါ" - "တစ်ခုပေါ်တစ်ခု ထပ်၍ ဖွင့်ခြင်းမီနူး" + "မီနူး" "%s သည် တစ်ခုပေါ် တစ်ခုထပ်၍ ဖွင့်ထားသည်" - "%s အား ဤဝန်ဆောင်မှုကို အသုံးမပြုစေလိုလျှင် ဆက်တင်ကိုဖွင့်ရန် တို့ပြီး ၎င်းဝန်ဆောင်မှုကို ပိတ်လိုက်ပါ။" + "%s အား ဤဝန်ဆောင်မှုကို အသုံးမပြုစေလိုလျှင် ဆက်တင်ကိုဖွင့်ရန် တို့ပြီး ၎င်းဝန်ဆောင်မှုကို ပိတ်လိုက်ပါ။" "ဖွင့်ရန်" "ခေတ္တရပ်ရန်" "နောက်တစ်ခုသို့ ကျော်ရန်" @@ -754,6 +754,7 @@ "မီနူး" "%1$s အက်ပ်" "သတိပေးချက်များ" + "ဘက်ထရီ" "မျက်နှာပြင်ဓာတ်ပုံများ" "အထွေထွေ မက်ဆေ့ဂျ်များ" "သိုလှောင်မှုများ" @@ -774,4 +775,5 @@ "နောက်ခံတွင် ပွင့်နေသော အက်ပ်များ" "ဘက်ထရီနှင့် ဒေတာအသုံးပြုမှု အသေးစိတ်ကို ကြည့်ရန် တို့ပါ" "မိုဘိုင်းဒေတာကို ပိတ်လိုပါသလား။" + "အပလီကေးရှင်းတစ်ခုက ခွင့်ပြုချက်တောင်းခံမှုကို ပိတ်ထားသောကြောင့် ဆက်တင်များသည် သင်၏ လုပ်ဆောင်ကို တုံ့ပြန်နိုင်ခြင်းမရှိပါ။" diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 78ec7481a71b0d338826ff4f3dba988fc2fdae33..4dd8c03d5422b183d08f91353907eeccda8fd31c 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -24,7 +24,7 @@ "Fjern fra listen" "Info om appen" "De sist brukte skjermene dine vises her" - "Avvis nylige apper" + "Avvis nylig brukte apper" %d skjermer i oversikten 1 skjerm i oversikten @@ -64,7 +64,7 @@ "Datamaskinens nøkkelfingeravtrykk for RSA er:\n%1$s" "Tillat alltid fra denne datamaskinen" "USB-feilsøking er ikke tillatt" - "Brukeren som for øyeblikket er logget på denne enheten, kan ikke slå på USB-feilsøking. For å bruke denne funksjonen, bytt til en administratorbruker." + "Brukeren som for øyeblikket er logget på denne enheten, kan ikke slå på USB-feilsøking. For å bruke denne funksjonen, bytt til hovedbrukeren." "Zoom for å fylle skjermen" "Strekk for å fylle skjerm" "Lagrer skjermdumpen …" @@ -353,10 +353,10 @@ "Søk" "Dra opp for å %s." "Dra til venstre for å %s." - "Du blir ikke forstyrret av lyder og vibrasjoner, med unntak av alarmer, påminnelser, aktiviteter og oppringere du angir. Du kan fremdeles høre alt du velger å spille av, for eksempel musikk, videoer og spill." - "Du blir ikke forstyrret av lyder og vibrasjoner, med unntak av alarmer. Du kan fremdeles høre alt du velger å spille av, for eksempel musikk, videoer og spill." + "Du blir ikke forstyrret av lyder og vibrasjoner, med unntak av alarmer, påminnelser, aktiviteter og oppringere du angir. Du kan fremdeles høre alt du velger å spille av, for eksempel musikk, videoer og spill." + "Du blir ikke forstyrret av lyder og vibrasjoner, med unntak av alarmer. Du kan fremdeles høre alt du velger å spille av, for eksempel musikk, videoer og spill." "Tilpass" - "Dette blokkerer ALLE lyder og vibrasjoner, inkludert fra alarmer, musikk, videoer og spill. Du kan fremdeles ringe." + "Dette blokkerer ALLE lyder og vibrasjoner, inkludert fra alarmer, musikk, videoer og spill. Du kan fremdeles ringe." "Dette blokkerer ALLE lyder og vibrasjoner, inkludert fra alarmer, musikk, videoer og spill." "+%d" "Mindre presserende varsler nedenfor" @@ -456,7 +456,7 @@ "Finn ut mer" "Enheten er koblet til %1$s, som kan overvåke nettverksaktiviteten din, inkludert e-post, apper og nettsteder." " " - "Åpne VPN-innstillingene" + "Åpne VPN-innstillingene" " " "Åpne pålitelig legitimasjon" "Administratoren din har slått på loggføring av nettverk, som overvåker trafikken på enheten din.\n\nKontakt administratoren for mer informasjon." @@ -556,8 +556,8 @@ "Denne appen har ikke varselkategorier" "Varsler fra denne appen kan ikke slås av" - 1 av %d varselkategorier fra denne appen - 1 av %d varselkategori fra denne appen + 1 av %s varselkategorier fra denne appen + 1 av %s varselkategori fra denne appen "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minutt "Batteribruk" - "Batterisparing er ikke tilgjengelig under lading" - "Batterisparing" + "Batterisparing er ikke tilgjengelig under lading" + "Batterisparing" "Reduserer ytelsen og begrenser bakgrunnsdataene" "%1$s-knappen" "Startskjerm" @@ -726,9 +726,9 @@ "Minimer" "Lukk" "Dra ned for å avvise" - "Bilde-i-bilde-meny" + "Meny" "%s er i bilde-i-bilde" - "Hvis du ikke vil at %s skal bruke denne funksjonen, kan du trykke for å åpne innstillingene og slå den av." + "Hvis du ikke vil at %s skal bruke denne funksjonen, kan du trykke for å åpne innstillingene og slå den av." "Spill av" "Sett på pause" "Hopp til neste" @@ -754,6 +754,7 @@ "Meny" "%1$s-appen" "Varsler" + "Batteri" "Skjermdumper" "Generelle meldinger" "Lagring" @@ -774,4 +775,5 @@ "Apper kjører i bakgrunnen" "Trykk for detaljer om batteri- og databruk" "Vil du slå av mobildata?" + "Fordi en app skjuler tillatelsesforespørselen, kan ikke Innstillinger bekrefte svaret ditt." diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index e37cde6fffd96a228e6dd3fa20b132c3a5b39e5b..b62c48fa2c2541377b1e1b7d27b370fd117bef38 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -64,12 +64,12 @@ "कम्प्युटरको RSA कुञ्जी औंलाछाप:\n%1$s" "यो कम्प्युटरबाट सधैँ अनुमति दिनुहोस्" "USB डिबग गर्न अनुमति छैन" - "हालैमा यस यन्त्रमा साइन इन भएको प्रयोगकर्ताले USB डिबगिङ सक्रिय गर्न सक्दैन। यो सुविधा प्रयोग गर्न, कृपया अर्को प्रबन्ध प्रयोगकर्तामा स्विच गर्नुहोस्।" + "हाल यस यन्त्रमा साइन इन हुनुभएको प्रयोगकर्ताले USB डिबग सक्रिय गर्न सक्नुहुन्न। यो सुविधाको प्रयोग गर्न प्राथमिक प्रयोगकर्तामा बदल्नुहोस्‌।" "स्क्रिन भर्न जुम गर्नुहोस्" "स्क्रिन भर्न तन्काउनुहोस्" "स्क्रिनसट बचत गर्दै…" "स्क्रिनसट बचत गर्दै…" - "स्क्रिनसट बचत हुँदै छ।" + "स्क्रिनसट बचत हुँदैछ।" "स्क्रिनसट क्याप्चर गरियो।" "आफ्नो स्क्रिनसट हेर्न ट्याप गर्नुहोस्।" "स्क्रिनसट क्याप्चर गर्न सकिएन।" @@ -353,10 +353,10 @@ "खोज्नुहोस्" "%sको लागि माथि धिसार्नुहोस्" "स्लाइड %sको लागि बायाँ।" - "तपाईंलाई अलार्म, रिमाइन्डर, कार्यक्रम र तपाईंले निर्दिष्ट गर्नुभएका कलरहरू बाहेकका ध्वनि र कम्पनहरूले बाधा पुऱ्याउने छैनन्। तपाईंले अझै संगीत, भिडियो र खेलहरू लगायत आफूले प्ले गर्न छनौट गरेका जुनसुकै कुरा सुन्न सक्नुहुन्छ।" - "तपाईंलाई अलार्म बाहेकका ध्वनि र कम्पनहरूले बाधा पुऱ्याउने छैनन्। तपाईंले अझै संगीत, भिडियो र खेलहरू लगायत आफूले प्ले गर्न छनौट गरेका जुनसुकै कुरा पनि सुन्न सक्नुहुन्छ।" + "तपाईंलाई अलार्म, रिमाइन्डर, कार्यक्रम र तपाईंले निर्दिष्ट गर्नुभएका कलरहरू बाहेकका ध्वनि र कम्पनहरूले बाधा पुऱ्याउने छैनन्। तपाईंले अझै संगीत, भिडियो र खेलहरू लगायत आफूले प्ले गर्न छनौट गरेका जुनसुकै कुरा सुन्न सक्नुहुनेछ।" + "तपाईंलाई अलार्महरू बाहेकका ध्वनि र कम्पनहरूले बाधा पुऱ्याउने छैनन्। तपाईंले अझै संगीत, भिडियो र खेलहरू लगायत आफूले प्ले गर्न छनौट गरेका जुनसुकै कुरा सुन्न सक्नुहुनेछ।" "आफू अनुकूल बनाउनुहोस्" - "यसले अलार्म, संगीत, भिडियो, र खेलहरू लगायतका सबै ध्वनि र कम्पन रोक्छ। तपाईं अझै पनि फोन कल गर्न सक्षम हुनुहुन्छ।" + "यसले अलार्म, संगीत, भिडियो, र खेलहरू लगायत सबैका ध्वनि र कम्पनहरूमाथि रोक लगाउँछ। तपाईं अझै पनि फोन कलहरू गर्न सक्नुहुनेछ।" "यसले अलार्म, संगीत, भिडियोहरू र खेलहरूसहित सबै ध्वनिहरू र कम्पनहरूलाई रोक्छ।" "+%d" "तल कम जरुरी सूचनाहरू" @@ -456,7 +456,7 @@ "थप जान्नुहोस्" "तपाईं %1$s मा जोडिनुभएको छ जसले इमेल, अनुप्रयोग र वेबसाइटहरू लगायत तपाईंको नेटवर्क सम्बन्धी गतिविधिको अनुगमन गर्न सक्छ।" " " - "VPN सम्बन्धी सेटिङहरू खोल्नुहोस्" + "VPN सम्बन्धी सेटिङहरू खोल्नुहोस्" " " "खुला विश्वसनीय प्रमाणहरू" "तपाईँको प्रशासकले तपाईँको यन्त्रमा ट्राफिकको अनुगमन गर्ने नेटवर्कको लगिङलाई सक्रिय पार्नुभएको छ।\n\nथप जानकारीका लागि आफ्नो प्रशासकलाई सम्पर्क गर्नुहोस्।" @@ -556,8 +556,8 @@ "यस अनुप्रयोगमा सूचना सम्बन्धी कोटीहरू छैनन्" "यस अनुप्रयोगका सूचनाहरूलाई निष्क्रिय पार्न सकिँदैन" - यस अनुप्रयोगका %d सूचना कोटिहरू मध्ये १ - यस अनुप्रयोगको %d सूचना कोटी मध्ये १ + यस अनुप्रयोगका %s सूचना कोटिहरू मध्ये १ + यस अनुप्रयोगको %s सूचना कोटी मध्ये १ "%1$s, %2$s" @@ -585,8 +585,8 @@ %d मिनेट "ब्याट्री उपयोग" - "चार्ज गर्ने समयमा ब्याट्री सेभर उपलब्ध छैन" - "ब्याट्री सेभर" + "चार्ज गर्ने समयमा ब्याट्री सेवर उपलब्ध छैन" + "ब्याट्री सेवर" "कार्यसम्पादन र पृष्ठभूमि डेटा घटाउँछ" "%1$s बटन" "Home" @@ -726,9 +726,9 @@ "सानो बनाउनुहोस्" "बन्द गर्नुहोस्" "खारेज गर्न तल तान्नुहोस्" - "तस्बिर मेनुमा तस्बिर" + "मेनु" "%s Picture-in-picture मा छ" - "तपाईं %s ले यो सुविधा प्रयोग नगरोस् भन्ने चाहनुहुन्छ भने ट्याप गरेर सेटिङहरू खोल्नुहोस् र यसलाई निष्क्रिय पार्नुहोस्।" + "तपाईं %s ले सुविधा प्रयोग नगरोस् भन्ने चाहनुहुन्छ भने ट्याप गरेर सेटिङहरू खोल्नुहोस् र यसलाई निष्क्रिय पार्नुहोस्।" "प्ले गर्नुहोस्" "पज गर्नुहोस्" "अर्कोमा जानुहोस्" @@ -754,6 +754,7 @@ "मेनु" "%1$s अनुप्रयोग" "अलर्टहरू" + "ब्याट्री" "स्क्रिनशटहरू" "सामान्य सन्देशहरू" "भण्डारण" @@ -774,4 +775,5 @@ "पृष्ठभूमिमा चल्ने अनुप्रयोगहरू" "ब्याट्री र डेटाका प्रयोग सम्बन्धी विवरणहरूका लागि ट्याप गर्नुहोस्" "मोबाइल डेटा निष्क्रिय पार्ने हो?" + "कुनै अनुप्रयोगको कारणले अनुमतिसम्बन्धी अनुरोध बुझ्न गाह्रो भइरहेकोले सेटिङहरूले तपाईंको प्रतिक्रिया प्रमाणित गर्न सक्दैनन्।" diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index ee113a79601bd9277dd3c3462e23525cf0ecfbc9..3b31b2d3d6c96d077d24fb55236d9edb7f115001 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -64,7 +64,7 @@ "De vingerafdruk voor de RSA-sleutel van de computer is:\n%1$s" "Altijd toestaan vanaf deze computer" "USB-foutopsporing niet toegestaan" - "De gebruiker die momenteel is ingelogd op dit apparaat, kan USB-foutopsporing niet inschakelen. Als u deze functie wilt gebruiken, schakelt u naar een beheerdersgebruiker." + "De gebruiker die momenteel is ingelogd op dit apparaat, kan USB-foutopsporing niet inschakelen. Als je deze functie wilt gebruiken, schakel je naar de primaire gebruiker." "Zoom om scherm te vullen" "Rek uit v. schermvulling" "Screenshot opslaan..." @@ -353,10 +353,10 @@ "Zoeken" "Veeg omhoog voor %s." "Veeg naar links voor %s." - "Je wordt niet gestoord door geluiden en trillingen, behalve bij alarmen, herinneringen, afspraken en specifieke bellers die je selecteert. Je kunt nog steeds alles horen wat je wilt afspelen, waaronder muziek, video\'s en games." - "Je wordt niet gestoord door geluiden en trillingen, behalve bij alarmen. Je kunt nog steeds alles horen wat je wilt afspelen, waaronder muziek, video\'s en games." + "Je wordt niet gestoord door geluiden en trillingen, behalve bij alarmen, herinneringen, afspraken en specifieke bellers die je selecteert. Je kunt nog steeds alles horen wat je wilt afspelen, waaronder muziek, video\'s en games." + "Je wordt niet gestoord door geluiden en trillingen, behalve bij alarmen. Je kunt nog steeds alles horen wat je wilt afspelen, waaronder muziek, video\'s en games." "Aanpassen" - "Hiermee worden ALLE geluiden en trillingen geblokkeerd, waaronder die voor alarmen, muziek, video\'s en games. U kunt wel nog steeds bellen." + "Hiermee worden ALLE geluiden en trillingen geblokkeerd, waaronder die voor alarmen, muziek, video\'s en games. Je kunt wel nog steeds bellen." "Hiermee worden ALLE geluiden en trillingen geblokkeerd, waaronder die voor alarmen, muziek, video\'s en games." "+%d" "Minder urgente meldingen onderaan" @@ -456,7 +456,7 @@ "Meer informatie" "Je bent verbonden met %1$s, waarmee je netwerkactiviteit (waaronder e-mails, apps en websites) kan worden gecontroleerd." " " - "VPN-instellingen openen" + "VPN-instellingen openen" " " "Vertrouwde gegevens openen" "Je beheerder heeft netwerkregistratie ingeschakeld, waarmee verkeer op je apparaat wordt bijgehouden.\n\nNeem contact op met je beheerder voor meer informatie." @@ -556,8 +556,8 @@ "Deze app heeft geen meldingscategorieën" "Meldingen van deze app kunnen niet worden uitgeschakeld" - 1 van %d meldingscategorieën van deze app - 1 van %d meldingscategorie van deze app + 1 van %s meldingscategorieën van deze app + 1 van %s meldingscategorie van deze app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minuut "Accugebruik" - "Batterijbesparing niet beschikbaar tijdens opladen" - "Batterijbesparing" + "Batterijbesparing niet beschikbaar tijdens opladen" + "Batterijbesparing" "Vermindert de prestaties en achtergrondgegevens" "Knop %1$s" "Home" @@ -726,9 +726,9 @@ "Minimaliseren" "Sluiten" "Sleep omlaag om te sluiten" - "Scherm-in-scherm-menu" + "Menu" "%s is in scherm-in-scherm" - "Als je niet wilt dat %s deze functie gebruikt, tik je om de instellingen te openen en schakel je de functie uit." + "Als je niet wilt dat %s deze functie gebruikt, tik je om de instellingen te openen en schakel je de functie uit." "Afspelen" "Onderbreken" "Doorgaan naar volgende" @@ -754,6 +754,7 @@ "Menu" "%1$s-app" "Meldingen" + "Batterij" "Screenshots" "Algemene berichten" "Opslag" @@ -774,4 +775,5 @@ "Apps uitgevoerd op achtergrond" "Tik voor batterij- en datagebruik" "Mobiele data uitschakelen?" + "Aangezien een app een toestemmingsverzoek afdekt, kan Instellingen je reactie niet verifiëren." diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index bb21a99618eef237dc0a07c6612307bafac18473..c2089a60436bb2a9825f584c9a10385e9295e3bc 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -64,7 +64,7 @@ "ਕੰਪਿਊਟਰ ਦਾ RSA ਕੁੰਜੀ ਫਿੰਗਰਪ੍ਰਿੰਟ \n%1$s" "ਹਮੇਸ਼ਾਂ ਇਸ ਕੰਪਿਊਟਰ ਤੋਂ ਆਗਿਆ ਦਿਓ" "USB ਡਿਬੱਗਿੰਗ ਦੀ ਆਗਿਆ ਨਹੀਂ" - "ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਵਰਤਮਾਨ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕੀਤਾ ਵਰਤੋਂਕਾਰ USB ਡਿਬੱਗਿੰਗ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ। ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਕਿਸੇ ਪ੍ਰਸ਼ਾਸਕ ਵਰਤੋਂਕਾਰ ਵਿੱਚ ਸਵਿੱਚ ਕਰੋ।" + "The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user." "ਸਕ੍ਰੀਨ ਭਰਨ ਲਈ ਜ਼ੂਮ ਕਰੋ" "ਸਕ੍ਰੀਨ ਭਰਨ ਲਈ ਸਟ੍ਰੈਚ ਕਰੋ" "ਸਕ੍ਰੀਨਸ਼ਾਟ ਸੁਰੱਖਿਅਤ ਕਰ ਰਿਹਾ ਹੈ…" @@ -353,10 +353,10 @@ "ਖੋਜੋ" "%s ਲਈ ਉੱਪਰ ਸਲਾਈਡ ਕਰੋ।" "%s ਤੱਕ ਖੱਬੇ ਪਾਸੇ ਸਲਾਈਡ ਕਰੋ।" - "ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਤੁਹਾਨੂੰ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ, ਸਿਵਾਏ ਅਲਾਰਮਾਂ, ਯਾਦ-ਦਹਾਨੀਆਂ, ਵਰਤਾਰਿਆਂ, ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਨਿਰਧਾਰਤ ਕੀਤੇ ਕਾਲਰਾਂ ਦੀ ਸੂਰਤ ਵਿੱਚ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਸੰਗੀਤ, ਵੀਡੀਓ ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ ਆਪਣੀ ਚੋਣ ਅਨੁਸਾਰ ਕੁਝ ਵੀ ਸੁਣ ਸਕਦੇ ਹੋ।" - "ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਤੁਹਾਨੂੰ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ, ਸਿਵਾਏ ਅਲਾਰਮਾਂ ਦੀ ਸੂਰਤ ਵਿੱਚ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਸੰਗੀਤ, ਵੀਡੀਓ ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ ਆਪਣੀ ਚੋਣ ਅਨੁਸਾਰ ਕੁਝ ਵੀ ਸੁਣ ਸਕਦੇ ਹੋ।" + "ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਤੁਹਾਨੂੰ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ, ਸਿਵਾਏ ਅਲਾਰਮਾਂ, ਯਾਦ-ਦਹਾਨੀਆਂ, ਵਰਤਾਰਿਆਂ, ਅਤੇ ਤੁਹਾਡੇ ਵੱਲੋਂ ਨਿਰਧਾਰਤ ਕੀਤੇ ਕਾਲਰਾਂ ਦੀ ਸੂਰਤ ਵਿੱਚ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਸੰਗੀਤ, ਵੀਡੀਓ ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ ਆਪਣੀ ਚੋਣ ਅਨੁਸਾਰ ਕੁਝ ਵੀ ਸੁਣ ਸਕਦੇ ਹੋ।" + "ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਤੁਹਾਨੂੰ ਪਰੇਸ਼ਾਨ ਨਹੀਂ ਕਰਨਗੀਆਂ, ਸਿਵਾਏ ਅਲਾਰਮਾਂ ਦੀ ਸੂਰਤ ਵਿੱਚ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਸੰਗੀਤ, ਵੀਡੀਓ ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ ਆਪਣੀ ਚੋਣ ਅਨੁਸਾਰ ਕੁਝ ਵੀ ਸੁਣ ਸਕਦੇ ਹੋ।" "ਵਿਉਂਤਬੱਧ ਕਰੋ" - "ਇਹ ਅਲਾਰਮ, ਸੰਗੀਤ, ਵੀਡੀਓ, ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ, ਸਾਰੀਆਂ ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟ ਨੂੰ ਬਲਾਕ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਫ਼ੋਨ ਕਾਲ ਕਰਨ ਦੇ ਯੋਗ ਹੋਵੋਂਗੇ।" + "ਇਹ ਅਲਾਰਮ, ਸੰਗੀਤ, ਵੀਡੀਓ, ਅਤੇ ਗੇਮਾਂ ਸਮੇਤ, ਸਾਰੀਆਂ ਧੁਨੀਆਂ ਅਤੇ ਥਰਥਰਾਹਟਾਂ ਨੂੰ ਬਲਾਕ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਫ਼ੋਨ ਕਾਲ ਕਰਨ ਦੇ ਯੋਗ ਹੋਵੋਂਗੇ।" "ਇਹ ਅਲਾਰਮ, ਸੰਗੀਤ, ਵੀਡੀਓਜ਼, ਅਤੇ ਗੇਮਸ ਸਮੇਤ, ਸਾਰੀਆਂ ਧੁਨੀਆਂ ਅਤੇ ਵਾਇਬ੍ਰੇਸ਼ਨ ਨੂੰ ਬਲੌਕ ਕਰਦਾ ਹੈ।" "+%d" "ਹੇਠਾਂ ਘੱਟ ਲਾਜ਼ਮੀ ਸੂਚਨਾਵਾਂ" @@ -456,7 +456,7 @@ "ਹੋਰ ਜਾਣੋ" "ਤੁਸੀਂ %1$s ਨਾਲ ਕਨੈਕਟ ਹੋ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।" " " - "VPN ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ" + "VPN ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ" " " "ਭਰੋਸੇਯੋਗ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਖੋਲ੍ਹੋ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਨੈੱਟਵਰਕ ਲੌਗਿੰਗ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਹੋਇਆ ਹੈ, ਜੋ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਟਰੈਫਿਕ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।" @@ -556,8 +556,8 @@ "ਇਸ ਐਪ ਵਿੱਚ ਸੂਚਨਾ ਸ਼੍ਰੇਣੀਆਂ ਨਹੀਂ ਹਨ" "ਇਸ ਐਪ ਤੋਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" - ਇਸ ਐਪ ਤੋਂ %d ਸੂਚਨਾ ਸ਼੍ਰੇਣੀ ਵਿੱਚੋਂ 1 - ਇਸ ਐਪ ਤੋਂ %d ਸੂਚਨਾ ਸ਼੍ਰੇਣੀ ਵਿੱਚੋਂ 1 + ਇਸ ਐਪ ਤੋਂ %s ਸੂਚਨਾ ਸ਼੍ਰੇਣੀ ਵਿੱਚੋਂ 1 + ਇਸ ਐਪ ਤੋਂ %s ਸੂਚਨਾ ਸ਼੍ਰੇਣੀ ਵਿੱਚੋਂ 1 "%1$s, %2$s" @@ -585,8 +585,8 @@ %d ਮਿੰਟ "ਬੈਟਰੀ ਵਰਤੋਂ" - "ਬੈਟਰੀ ਸੇਵਰ ਚਾਰਜਿੰਗ ਦੌਰਾਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" - "ਬੈਟਰੀ ਸੇਵਰ" + "ਬੈਟਰੀ ਸੇਵਰ ਚਾਰਜਿੰਗ ਦੌਰਾਨ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" + "ਬੈਟਰੀ ਸੇਵਰ" "ਕਾਰਗੁਜ਼ਾਰੀ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਡਾਟੇ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ" "ਬਟਨ %1$s" "Home" @@ -726,9 +726,9 @@ "ਛੋਟਾ ਕਰੋ" "ਬੰਦ ਕਰੋ" "ਖਾਰਜ ਕਰਨ ਲਈ ਹੇਠਾਂ ਘਸੀਟੋ" - "ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ ਮੀਨੂ" + "ਮੀਨੂ" "%s ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ \'ਚ ਹੈ" - "ਜੇਕਰ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ %s ਐਪ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਵਰਤੋਂ ਕਰੇ, ਤਾਂ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹਣ ਲਈ ਟੈਪ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਬੰਦ ਕਰੋ।" + "ਜੇਕਰ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ %s ਐਪ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਵਰਤੋਂ ਕਰੇ, ਤਾਂ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹਣ ਲਈ ਟੈਪ ਕਰੋ ਅਤੇ ਇਸਨੂੰ ਬੰਦ ਕਰੋ।" "ਚਲਾਓ" "ਵਿਰਾਮ ਦਿਓ" "ਅਗਲੇ \'ਤੇ ਜਾਓ" @@ -754,6 +754,7 @@ "ਮੀਨੂ" "%1$s ਐਪ" "ਸੁਚੇਤਨਾਵਾਂ" + "ਬੈਟਰੀ" "ਸਕ੍ਰੀਨਸ਼ਾਟ" "ਆਮ ਸੁਨੇਹੇ" "ਸਟੋਰੇਜ" @@ -774,4 +775,5 @@ "ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲ ਰਹੀਆਂ ਐਪਾਂ" "ਬੈਟਰੀ ਅਤੇ ਡਾਟਾ ਵਰਤੋਂ ਸਬੰਧੀ ਵੇਰਵਿਆਂ ਲਈ ਟੈਪ ਕਰੋ" "ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ ਕਰਨਾ ਹੈ?" + "ਕਿਸੇ ਐਪ ਵੱਲੋਂ ਇਜਾਜ਼ਤ ਬੇਨਤੀ ਨੂੰ ਢਕੇ ਜਾਣ ਕਾਰਨ ਸੈਟਿੰਗਾਂ ਤੁਹਾਡੇ ਜਵਾਬ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ।" diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index acb271047938b020f35898f12cecb30f4ddf587d..14d9c900457aa4ab360bd830b21a1c60bc39625d 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -66,7 +66,7 @@ "Odcisk cyfrowy klucza RSA komputera to:\n%1$s" "Zawsze zezwalaj z tego komputera" "Debugowanie USB jest niedozwolone" - "Użytkownik obecnie zalogowany na tym urządzeniu nie może włączyć debugowania USB. Aby użyć tej funkcji, przełącz się na użytkownika będącego administratorem." + "Użytkownik obecnie zalogowany na tym urządzeniu nie może włączyć debugowania USB. Aby użyć tej funkcji, przełącz się na użytkownika głównego." "Powiększ, aby wypełnić ekran" "Rozciągnij, aby wypełnić ekran" "Zapisywanie zrzutu ekranu..." @@ -244,7 +244,7 @@ "Transmisja danych 4G została wstrzymana" "Mobilna transmisja danych jest wstrzymana" "Transmisja danych została wstrzymana" - "Osiągnięto ustawiony limit danych. Nie korzystasz już z komórkowej transmisji danych.\n\nJeśli włączysz ją ponownie, może zostać naliczona opłata za użycie danych." + "Osiągnięto ustawiony limit danych. Nie korzystasz już z mobilnej transmisji danych.\n\nJeśli włączysz ją ponownie, może zostać naliczona opłata za użycie danych." "Wznów" "Brak internetu" "Wi-Fi: połączono" @@ -357,10 +357,10 @@ "Szukaj" "Przesuń w górę: %s." "Przesuń w lewo: %s." - "Nie będą Cię niepokoić żadne dźwięki ani wibracje z wyjątkiem alarmów, przypomnień, wydarzeń i połączeń od wybranych osób. Będziesz słyszeć wszystkie odtwarzane treści, takie jak muzyka, filmy czy gry." - "Nie będą Cię niepokoić żadne dźwięki ani wibracje z wyjątkiem alarmów. Będziesz słyszeć wszystkie odtwarzane treści, takie jak muzyka, filmy czy gry." + "Nie będą Cię niepokoić żadne dźwięki ani wibracje z wyjątkiem alarmów, przypomnień, wydarzeń i połączeń od wybranych osób. Będziesz słyszeć wszystkie odtwarzane treści, takie jak muzyka, filmy czy gry." + "Nie będą Cię niepokoić żadne dźwięki ani wibracje z wyjątkiem alarmów. Będziesz słyszeć wszystkie odtwarzane treści, takie jak muzyka, filmy czy gry." "Dostosuj" - "To zablokuje WSZYSTKIE dźwięki i wibracje, w tym alarmy, muzykę, filmy i gry. Nadal będzie można wykonywać połączenia." + "To zablokuje WSZYSTKIE dźwięki i wibracje, w tym alarmy, muzykę, filmy i gry. Nadal będzie można wykonywać połączenia." "To zablokuje WSZYSTKIE dźwięki i wibracje – w tym alarmy, muzykę, filmy i gry." "+%d" "Poniżej widać mniej pilne powiadomienia" @@ -460,7 +460,7 @@ "Więcej informacji" "Łączysz się z aplikacją %1$s, która może monitorować Twoją aktywność w sieci, w tym e-maile, aplikacje i strony internetowe." "  " - "Otwórz ustawienia VPN" + "Otwórz ustawienia VPN" " " "Otwórz zaufane dane logowania" "Administrator włączył rejestrowanie sieciowe, które pozwala monitorować ruch na Twoim urządzeniu.\n\nAby dowiedzieć się więcej, skontaktuj się z administratorem." @@ -560,10 +560,10 @@ "Ta aplikacja nie ma kategorii powiadomień" "Powiadomień z tej aplikacji nie można wyłączyć" - 1 z %d kategorii powiadomień z tej aplikacji - 1 z %d kategorii powiadomień z tej aplikacji - 1 z %d kategorii powiadomień z tej aplikacji - 1 z %d kategorii powiadomień z tej aplikacji + 1 z %s kategorii powiadomień z tej aplikacji + 1 z %s kategorii powiadomień z tej aplikacji + 1 z %s kategorii powiadomień z tej aplikacji + 1 z %s kategorii powiadomień z tej aplikacji "%1$s, %2$s" @@ -597,8 +597,8 @@ ]%d minuta "Wykorzystanie baterii" - "Oszczędzanie baterii nie jest dostępne podczas ładowania" - "Oszczędzanie baterii" + "Oszczędzanie baterii nie jest dostępne podczas ładowania" + "Oszczędzanie baterii" "Zmniejsza wydajność i ogranicza dane w tle" "Przycisk %1$s" "Home" @@ -738,9 +738,9 @@ "Minimalizuj" "Zamknij" "Przeciągnij w dół, by zamknąć" - "Menu funkcji Obraz w obrazie" + "Menu" "Aplikacja %s działa w trybie obraz w obrazie" - "Jeśli nie chcesz, by aplikacja %s korzystała z tej funkcji, otwórz ustawienia i ją wyłącz." + "Jeśli nie chcesz, by aplikacja %s korzystała z tej funkcji, otwórz ustawienia i ją wyłącz." "Odtwórz" "Wstrzymaj" "Dalej" @@ -766,6 +766,7 @@ "Menu" "Aplikacja %1$s" "Alerty" + "Bateria" "Zrzuty ekranu" "Wiadomości" "Pamięć wewnętrzna" @@ -786,4 +787,5 @@ "Aplikacje działające w tle" "Kliknij, by wyświetlić szczegóły wykorzystania baterii i użycia danych" "Wyłączyć mobilną transmisję danych?" + "Aplikacja Ustawienia nie może zweryfikować Twojej odpowiedzi, ponieważ inna aplikacja zasłania prośbę o udzielenie uprawnień." diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index ed3f9e466164d90aaa9668c4fc6eda7a4fbeb00b..08f5a38cc3dd297f428b6c51522cbca0a439cc58 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -64,7 +64,7 @@ "A impressão digital da chave RSA deste computador é:\n%1$s" "Sempre permitir a partir deste computador" "Depuração USB não permitida" - "O usuário conectado a este dispositivo no momento não pode ativar a depuração USB. Para usar esse recurso, alterne para o usuário administrador." + "O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"." "Zoom p/ preencher a tela" "Ampliar p/ preencher tela" "Salvando captura de tela..." @@ -355,10 +355,10 @@ "Pesquisar" "Para %s, deslize para cima." "Para %s, deslize para a esquerda." - "Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." - "Você não será perturbado por sons e vibrações, exceto alarmes. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." + "Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." + "Você não será perturbado por sons e vibrações, exceto alarmes. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." "Personalizar" - "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos. Você ainda poderá fazer chamadas telefônicas." + "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos. Você ainda poderá fazer chamadas telefônicas." "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos." "+%d" "Notificações menos urgentes abaixo" @@ -458,7 +458,7 @@ "Saber mais" "Você está conectado a %1$s, que pode monitorar sua atividade na rede, incluindo e-mails, apps e websites." " " - "Abrir configurações de VPN" + "Abrir configurações de VPN" " " "Abrir credenciais confiáveis" "Seu administrador ativou o registro de rede, que monitora o tráfego no seu dispositivo.\n\nPara ver mais informações, entre em contato com o administrador." @@ -558,8 +558,8 @@ "Este app não tem categorias de notificação" "Notificações deste app não podem ser desativadas" - 1 de %d categoria de notificação deste app - 1 de %d categorias de notificação deste app + 1 de %s categoria de notificação deste app + 1 de %s categorias de notificação deste app "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minutos "Uso da bateria" - "A Economia de bateria não fica disponível durante o carregamento" - "Economia de bateria" + "O recurso \"Economia de bateria\" não fica disponível durante o carregamento" + "Economia de bateria" "Reduz o desempenho e os dados em segundo plano" "Botão %1$s" "Home" @@ -728,9 +728,9 @@ "Minimizar" "Fechar" "Arraste para baixo para dispensar" - "Menu Picture-in-picture" + "Menu" "%s está em picture-in-picture" - "Se você não deseja que o %s use este recurso, toque para abrir as configurações e desativá-lo." + "Se você não deseja que o app %s use este recurso, toque para abrir as configurações e desativá-lo." "Reproduzir" "Pausar" "Pular para a próxima" @@ -756,6 +756,7 @@ "Menu" "App %1$s" "Alertas" + "Bateria" "Capturas de tela" "Mensagens gerais" "Armazenamento" @@ -776,4 +777,5 @@ "Apps sendo executados em segundo plano" "Tocar para ver detalhes sobre a bateria e o uso de dados" "Desativar os dados móveis?" + "Como um app está ocultando uma solicitação de permissão, as configurações não podem verificar sua resposta." diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 65bed3c324dbc500306933f84a082b18c9988ca2..4fde682db50a2a0321d4a9042527b698b16731e8 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -64,7 +64,7 @@ "A impressão digital da chave RSA do computador é:\n%1$s" "Permitir sempre a partir deste computador" "Depuração USB não permitida" - "O utilizador com sessão iniciada atualmente neste dispositivo não pode ativar a depuração USB. Para utilizar esta funcionalidade, mude para um utilizador Administrador." + "O utilizador com sessão iniciada atualmente neste dispositivo não pode ativar a depuração USB. Para utilizar esta funcionalidade, mude para o utilizador principal." "Zoom para preencher o ecrã" "Esticar p. caber em ec. int." "A guardar captura de ecrã..." @@ -353,10 +353,10 @@ "Pesquisar" "Deslize para cima para %s ." "Deslize para a esquerda para %s ." - "Não é incomodado por sons e vibrações, exceto de alarmes, lembretes, eventos e autores de chamadas que especificar. Continua a ouvir tudo o que optar por reproduzir, incluindo música, vídeos e jogos." - "Não é incomodado por sons e vibrações, exceto de alarmes. Continua a ouvir tudo o que optar por reproduzir, incluindo música, vídeos e jogos." + "Não é incomodado por sons e vibrações, exceto de alarmes, lembretes, eventos e autores de chamadas que especificar. Continua a ouvir tudo o que optar por reproduzir, incluindo música, vídeos e jogos." + "Não é incomodado por sons e vibrações, exceto de alarmes. Continua a ouvir tudo o que optar por reproduzir, incluindo música, vídeos e jogos." "Personalizar" - "Esta ação bloqueia TODOS os sons e as vibrações, incluindo de alarmes, de músicas, de vídeos e de jogos. Continua a ser possível telefonar." + "Esta ação bloqueia TODOS os sons e as vibrações, incluindo de alarmes, música, vídeos e jogos. Continua a poder telefonar." "Esta ação bloqueia TODOS os sons e as vibrações, incluindo de alarmes, de músicas, de vídeos e de jogos." "+%d" "Notificações menos urgentes abaixo" @@ -439,12 +439,12 @@ "Desativar a VPN" "Desligar VPN" "Ver Políticas" - "O dispositivo é gerido pela %1$s.\n\nO administrador pode monitorizar e gerir definições, acesso empresarial, aplicações, dados associados ao dispositivo e informações de localização do dispositivo.\n\nContacte o administrador para obter mais informações." - "O dispositivo é gerido pela sua entidade.\n\nO administrador pode monitorizar e gerir definições, acesso empresarial, aplicações, dados associados ao dispositivo e informações de localização do dispositivo.\n\nContacte o administrador para obter mais informações." + "O dispositivo é gerido pela %1$s.\n\nO gestor pode monitorizar e gerir definições, acesso empresarial, aplicações, dados associados ao dispositivo e informações de localização do dispositivo.\n\nContacte o gestor para obter mais informações." + "O dispositivo é gerido pela sua entidade.\n\nO gestor pode monitorizar e gerir definições, acesso empresarial, aplicações, dados associados ao dispositivo e informações de localização do dispositivo.\n\nContacte o gestor para obter mais informações." "A sua entidade instalou uma autoridade de certificação neste dispositivo. O tráfego da sua rede segura pode ser monitorizado ou alterado." "A sua entidade instalou uma autoridade de certificação no seu perfil de trabalho. O tráfego da sua rede segura pode ser monitorizado ou alterado." "Está instalada uma autoridade de certificação neste dispositivo. O tráfego da sua rede segura pode ser monitorizado ou alterado." - "O administrador ativou os registos de rede, que monitorizam o tráfego no seu dispositivo." + "O gestor ativou os registos de rede, que monitorizam o tráfego no seu dispositivo." "Está ligado à rede %1$s, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites." "Está ligado às redes %1$s e %2$s, que podem monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites." "O seu perfil de trabalho está ligado à rede %1$s, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites." @@ -456,17 +456,17 @@ "Saiba mais" "Está ligado à rede %1$s, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites." " " - "Abrir as definições de VPN" + "Abrir as definições de VPN" " " "Abrir credenciais fidedignas" - "O seu administrador ativou os registos de rede, que monitorizam o tráfego no seu dispositivo.\n\nPara obter mais informações, contacte o administrador." + "O seu gestor ativou os registos de rede, que monitorizam o tráfego no seu dispositivo.\n\nPara obter mais informações, contacte o gestor." "Concedeu autorização a uma aplicação para configurar uma ligação VPN.\n\nEsta aplicação pode monitorizar a atividade do dispositivo e da rede, incluindo emails, aplicações e Sites." - "O seu perfil de trabalho é gerido por %1$s.\n\nO seu administrador tem a capacidade de monitorizar a sua atividade da rede, incluindo emails, aplicações e Sites.\n\nPara obter mais informações, contacte o administrador.\n\nAlém disso, está ligado a uma VPN, que pode monitorizar a sua atividade da rede." + "O seu perfil de trabalho é gerido por %1$s.\n\nO seu gestor tem a capacidade de monitorizar a sua atividade da rede, incluindo emails, aplicações e Sites.\n\nPara obter mais informações, contacte o gestor.\n\nAlém disso, está ligado a uma VPN, que pode monitorizar a sua atividade da rede." "VPN" "Está associado à aplicação %1$s, que pode monitorizar a sua atividade de rede, incluindo emails, aplicações e Sites." "Está ligado a %1$s, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Sites." "Está ligado ao %1$s, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Sites." - "O seu perfil de trabalho é gerido pela %1$s. O perfil está associado à aplicação %2$s, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nContacte o administrador para obter mais informações." + "O seu perfil de trabalho é gerido pela %1$s. O perfil está associado à aplicação %2$s, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nContacte o gestor para obter mais informações." "O seu perfil de trabalho é gerido pela %1$s. O perfil está associado à aplicação %2$s, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nTambém está associado à aplicação %3$s, que pode monitorizar a atividade da rede pessoal." "Desbloqueado para %1$s" "%1$s em execução" @@ -556,8 +556,8 @@ "Esta aplicação não tem categorias de notificação" "Não é possível desativar as notificações desta aplicação" - 1 de %d categoria de notificação desta aplicação - 1 de %d categorias de notificação desta aplicação + 1 de %s categoria de notificação desta aplicação + 1 de %s categorias de notificação desta aplicação "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minutos "Utiliz. da bateria" - "Poupança de bateria não disponível durante o carregamento" - "Poupança de bateria" + "Poupança de bateria não disponível durante o carregamento" + "Poupança de bateria" "Reduz o desempenho e os dados de segundo plano" "Botão %1$s" "Início" @@ -726,9 +726,9 @@ "Minimizar" "Fechar" "Arrastar para baixo para ignorar" - "Menu de ecrã no ecrã" + "Menu" "A aplicação %s está no modo de ecrã no ecrã" - "Se não pretende que a aplicação %s utilize esta funcionalidade, toque para abrir as definições e desative-a." + "Se não pretende que a aplicação %s utilize esta funcionalidade, toque para abrir as definições e desative-a." "Reproduzir" "Colocar em pausa" "Mudar para o seguinte" @@ -754,6 +754,7 @@ "Menu" "Aplicação %1$s" "Alertas" + "Bateria" "Capturas de ecrã" "Mensagens gerais" "Armazenamento" @@ -774,4 +775,5 @@ "Aplicações em execução em segundo plano" "Toque para obter detalhes acerca da utilização da bateria e dos dados" "Pretende desativar os dados móveis?" + "Uma vez que uma aplicação está a ocultar um pedido de autorização, as Definições não conseguem validar a sua resposta." diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index ed3f9e466164d90aaa9668c4fc6eda7a4fbeb00b..08f5a38cc3dd297f428b6c51522cbca0a439cc58 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -64,7 +64,7 @@ "A impressão digital da chave RSA deste computador é:\n%1$s" "Sempre permitir a partir deste computador" "Depuração USB não permitida" - "O usuário conectado a este dispositivo no momento não pode ativar a depuração USB. Para usar esse recurso, alterne para o usuário administrador." + "O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"." "Zoom p/ preencher a tela" "Ampliar p/ preencher tela" "Salvando captura de tela..." @@ -355,10 +355,10 @@ "Pesquisar" "Para %s, deslize para cima." "Para %s, deslize para a esquerda." - "Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." - "Você não será perturbado por sons e vibrações, exceto alarmes. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." + "Você não será perturbado por sons e vibrações, exceto alarmes, lembretes, eventos e chamadas de pessoas especificadas. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." + "Você não será perturbado por sons e vibrações, exceto alarmes. No entanto, você ouvirá tudo o que decidir reproduzir, como músicas, vídeos e jogos." "Personalizar" - "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos. Você ainda poderá fazer chamadas telefônicas." + "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos. Você ainda poderá fazer chamadas telefônicas." "Isso bloqueia TODOS os sons e vibrações, incluindo alarmes, músicas, vídeos e jogos." "+%d" "Notificações menos urgentes abaixo" @@ -458,7 +458,7 @@ "Saber mais" "Você está conectado a %1$s, que pode monitorar sua atividade na rede, incluindo e-mails, apps e websites." " " - "Abrir configurações de VPN" + "Abrir configurações de VPN" " " "Abrir credenciais confiáveis" "Seu administrador ativou o registro de rede, que monitora o tráfego no seu dispositivo.\n\nPara ver mais informações, entre em contato com o administrador." @@ -558,8 +558,8 @@ "Este app não tem categorias de notificação" "Notificações deste app não podem ser desativadas" - 1 de %d categoria de notificação deste app - 1 de %d categorias de notificação deste app + 1 de %s categoria de notificação deste app + 1 de %s categorias de notificação deste app "%1$s, %2$s" @@ -587,8 +587,8 @@ %d minutos "Uso da bateria" - "A Economia de bateria não fica disponível durante o carregamento" - "Economia de bateria" + "O recurso \"Economia de bateria\" não fica disponível durante o carregamento" + "Economia de bateria" "Reduz o desempenho e os dados em segundo plano" "Botão %1$s" "Home" @@ -728,9 +728,9 @@ "Minimizar" "Fechar" "Arraste para baixo para dispensar" - "Menu Picture-in-picture" + "Menu" "%s está em picture-in-picture" - "Se você não deseja que o %s use este recurso, toque para abrir as configurações e desativá-lo." + "Se você não deseja que o app %s use este recurso, toque para abrir as configurações e desativá-lo." "Reproduzir" "Pausar" "Pular para a próxima" @@ -756,6 +756,7 @@ "Menu" "App %1$s" "Alertas" + "Bateria" "Capturas de tela" "Mensagens gerais" "Armazenamento" @@ -776,4 +777,5 @@ "Apps sendo executados em segundo plano" "Tocar para ver detalhes sobre a bateria e o uso de dados" "Desativar os dados móveis?" + "Como um app está ocultando uma solicitação de permissão, as configurações não podem verificar sua resposta." diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 7e307cd53978fb7f383745bb55d251abea892a7e..4777136633d78c26b6ed951166cc8244633e83b3 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -65,7 +65,7 @@ "Amprenta digitală din cheia RSA a computerului este:\n%1$s" "Permiteți întotdeauna de pe acest computer" "Remedierea erorilor prin USB nu este permisă" - "Utilizatorul conectat momentan pe acest dispozitiv nu poate activa remedierea erorilor prin USB. Pentru a folosi această funcție, comutați la utilizatorul Administrator." + "Utilizatorul conectat momentan pe acest dispozitiv nu poate activa remedierea erorilor prin USB. Pentru a folosi această funcție, comutați la utilizatorul principal." "Zoom pt. a umple ecranul" "Înt. pt. a umple ecranul" "Se salv. captura de ecran..." @@ -357,10 +357,10 @@ "Căutați" "Glisați în sus pentru %s." "Glisați spre stânga pentru %s." - "Se vor anunța prin sunete și vibrații numai alarmele, mementourile, evenimentele și apelanții specificați de dvs. Totuși, veți auzi tot ce alegeți să redați, inclusiv muzică, videoclipuri și jocuri." - "Se vor anunța prin sunete și vibrații numai alarmele. Totuși, veți auzi tot ce alegeți să redați, inclusiv muzică, videoclipuri și jocuri." + "Se vor anunța prin sunete și vibrații numai alarmele, mementourile, evenimentele și apelanții specificați de dvs. Totuși, veți auzi tot ce alegeți să redați, inclusiv muzică, videoclipuri și jocuri." + "Se vor anunța prin sunete și vibrații numai alarmele. Totuși, veți auzi tot ce alegeți să redați, inclusiv muzică, videoclipuri și jocuri." "Personalizați" - "Această opțiune blochează TOATE sunetele și vibrațiile, inclusiv cele ale alarmelor, muzicii, videoclipurilor și jocurilor. Totuși, veți putea iniția apeluri." + "Această opțiune blochează TOATE sunetele și vibrațiile, inclusiv cele ale alarmelor, muzicii, videoclipurilor și jocurilor. Totuși, veți putea iniția apeluri." "Această opțiune blochează TOATE sunetele și vibrațiile, inclusiv cele ale alarmelor, muzicii, videoclipurilor și jocurilor." "+%d" "Notificările mai puțin urgente mai jos" @@ -460,7 +460,7 @@ "Aflați mai multe" "V-ați conectat la aplicația %1$s, care vă poate monitoriza activitatea în rețea, inclusiv e-mailurile, aplicațiile și site-urile accesate." " " - "Deschideți Setări VPN" + "Deschideți Setări VPN" " " "Deschideți datele de conectare de încredere" "Administratorul dvs. a activat înregistrarea în jurnal pentru rețea, funcție ce monitorizează traficul de pe dispozitivul dvs.\n\nPentru mai multe informații, contactați administratorul." @@ -560,9 +560,9 @@ "Această aplicație nu are categorii de notificare" "Notificările din această aplicație nu pot fi dezactivate" - 1 din %d categorii de notificare din această aplicație - 1 din %d de categorii de notificare din această aplicație - 1 din %d categorie de notificare din această aplicație + 1 din %s categorii de notificare din această aplicație + 1 din %s de categorii de notificare din această aplicație + 1 din %s categorie de notificare din această aplicație "%1$s, %2$s" @@ -593,8 +593,8 @@ %d minut "Utilizarea bateriei" - "Economisirea bateriei nu este disponibilă pe durata încărcării" - "Economisirea bateriei" + "Economisirea bateriei nu este disponibilă pe durata încărcării" + "Economisirea energiei" "Reduce performanța și datele de fundal" "Butonul %1$s" "La început" @@ -734,9 +734,9 @@ "Minimizați" "Închideți" "Trageți în jos pentru a închide" - "Meniul picture-in-picture" + "Meniu" "%s este în modul picture-in-picture" - "Dacă nu doriți ca %s să utilizeze această funcție, atingeți pentru a deschide setările și dezactivați-o." + "Dacă nu doriți ca %s să utilizeze această funcție, atingeți pentru a deschide setările și dezactivați-o." "Redați" "Întrerupeți" "Treceți la următorul" @@ -762,6 +762,7 @@ "Meniu" "Aplicația %1$s" "Alerte" + "Baterie" "Capturi de ecran" "Mesaje generale" "Stocare" @@ -782,4 +783,5 @@ "Aplicațiile rulează în fundal" "Atingeți pentru mai multe detalii privind bateria și utilizarea datelor" "Dezactivați datele mobile?" + "Deoarece o aplicație acoperă o solicitare de permisiune, Setările nu vă pot verifica răspunsul." diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 599dacfedae24d56018538e3a6301784ed609113..e73cbe27bde6e0d2f5b0b29a71b4d1a052e4caa0 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -66,7 +66,7 @@ "Цифровой отпечаток ключа RSA:\n%1$s" "Всегда разрешать отладку с этого компьютера" "Отладка по USB запрещена" - "В текущем аккаунте нельзя включить отладку по USB. Перейдите в аккаунт администратора." + "В этом аккаунте нельзя включить отладку по USB. Перейдите в аккаунт основного пользователя." "Подогнать по размерам экрана" "Растянуть на весь экран" "Сохранение..." @@ -202,7 +202,7 @@ "Режим полета включен." "Режим полета отключен." "Режим полета включен." - "Режим \"Не беспокоить\" включен. Будут показаны только важные оповещения." + "Режим \"Не беспокоить\" включен. Будут показаны только важные уведомления." "Не беспокоить, полная тишина." "Не беспокоить – только будильник." "Не беспокоить." @@ -359,13 +359,13 @@ "Поиск" "Проведите вверх, чтобы %s." "Проведите влево, чтобы %s." - "Вас не будут отвлекать звуки и вибрация, за исключением сигналов будильника, напоминаний, уведомлений о мероприятиях и звонков от помеченных контактов. Вы по-прежнему будете слышать включенную вами музыку, видео, игры и т. д." - "Вас не будут отвлекать звуки и вибрация, за исключением сигналов будильника. Вы по-прежнему будете слышать включенную вами музыку, видео, игры и т. д." + "Вас не будут отвлекать звуки и вибрация, за исключением сигналов будильника, напоминаний, уведомлений о мероприятиях и звонков от помеченных контактов. Вы по-прежнему будете слышать включенную вами музыку, видео, игры и т. д." + "Вас не будут отвлекать звуки и вибрация, за исключением сигналов будильника. Вы по-прежнему будете слышать включенную вами музыку, видео, игры и т. д." "Настроить" - "В этом режиме будут отключены вибросигнал и все звуки (в том числе для будильника, музыкального проигрывателя, игр и видео). При этом вы сможете разговаривать по телефону." + "Этот режим заблокирует все звуки и вибрацию, в том числе для будильника, музыки, видео и игр. Вы сможете разговаривать по телефону." "В этом режиме будут отключены вибросигнал и все звуки (в том числе для будильника, музыкального проигрывателя, игр и видео)." "+%d" - "Показать менее важные оповещения" + "Показать менее важные уведомления" "Нажмите ещё раз, чтобы открыть" "Проведите вверх, чтобы разблокировать" "Этим устройством управляет ваша организация" @@ -462,7 +462,7 @@ "Подробнее…" "Запущено приложение \"%1$s\". Оно может отслеживать ваши действия в сети, включая работу с электронной почтой, приложениями и сайтами." " " - "Открыть настройки VPN" + "Открыть настройки VPN" " " "Открыть надежные сертификаты" "Администратор включил ведение сетевого журнала, чтобы отслеживать трафик на вашем устройстве.\n\nДля получения подробной информации обращайтесь к администратору." @@ -558,14 +558,14 @@ "С помощью этой функции вы можете устанавливать уровень важности уведомлений от 0 до 5 для каждого приложения.\n\n""Уровень 5"\n"‒ Помещать уведомления в начало списка.\n‒ Показывать полноэкранные уведомления.\n‒ Показывать всплывающие уведомления.\nУровень 4\n"\n"‒ Не показывать полноэкранные уведомления.\n‒ Показывать всплывающие уведомления.\nУровень 3\n"\n"‒ Не показывать полноэкранные уведомления.\n‒ Не показывать всплывающие уведомления.\nУровень 2\n"\n"‒ Не показывать полноэкранные уведомления.\n‒ Не показывать всплывающие уведомления.\n‒ Не использовать звук и вибрацию.\nУровень 1\n"\n"‒ Не показывать полноэкранные уведомления.\n‒ Не показывать всплывающие уведомления.\n‒ Не использовать звук и вибрацию.\n‒ Не показывать на экране блокировки и в строке состояния.\n‒ Помещать уведомления в конец списка.\nУровень 0\n"\n"‒ Блокировать все уведомления приложения." "Уведомления" "Вы больше не будете получать эти уведомления" - "Категорий оповещений: %d" + "Категорий уведомлений: %d" "В приложении нет категорий уведомлений" "Уведомления этого приложения нельзя отключить" - 1 из %d категории уведомлений этого приложения - 1 из %d категорий уведомлений этого приложения - 1 из %d категорий уведомлений этого приложения - 1 из %d категории уведомлений этого приложения + 1 из %s категории уведомлений этого приложения + 1 из %s категорий уведомлений этого приложения + 1 из %s категорий уведомлений этого приложения + 1 из %s категории уведомлений этого приложения "%1$s, %2$s" @@ -599,8 +599,8 @@ %d минуты "Уровень заряда" - "Режим энергосбережения нельзя включить во время зарядки" - "Режим энергосбережения" + "Режим энергосбережения нельзя включить во время зарядки" + "Режим энергосбережения" "Ограничивает производительность и фоновую передачу данных" "Кнопка %1$s" "Главный экран" @@ -740,9 +740,9 @@ "Свернуть" "Закрыть" "Чтобы закрыть, потяните вниз" - "Меню \"Картинка в картинке\"" + "Меню" "%s находится в режиме \"Картинка в картинке\"" - "Чтобы отключить эту функцию для приложения \"%s\", перейдите в настройки." + "Чтобы отключить эту функцию для приложения \"%s\", перейдите в настройки." "Воспроизвести" "Приостановить" "Перейти к следующему" @@ -768,6 +768,7 @@ "Меню" "Приложение \"%1$s\"" "Уведомления" + "Батарея" "Скриншоты" "Сообщения" "Хранилище" @@ -788,4 +789,5 @@ "Приложения, работающие в фоновом режиме" "Нажмите, чтобы проверить энергопотребление и трафик" "Отключить мобильный Интернет?" + "Невозможно принять ваше согласие, поскольку запрос скрыт другим приложением." diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 2d3ce16eb884609c826c39559e38f10e19b22338..5343bb3e2f40283b6c95ca02716ecedebff9fa7c 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -64,7 +64,7 @@ "මෙම පරිගණකයේ RSA යතුරු ඇඟිලි සටහන වන්නේ:\n%1$s" "සැම විටම මෙම පරිගණකයෙන් ඉඩ ලබා දෙන්න" "USB නිදොස්කරණය වෙත අවසර නැහැ" - "දැනට මෙම උපාංගයට පුරනය වී ඇති පරිශීලකයා හට USB නිදොස්කරණය සක්‍රිය කළ නොහැක. මෙම අංගය භාවිතා කිරීම සඳහා, කරුණාකර පරිපාලක පරිශීලකයෙකු වෙත මාරු වෙන්න." + "දැනට මෙම උපාංගයට පුරා ඇති පරිශීලකයාට USB නිදොස්කරණය ක්‍රියාත්මක කළ නොහැක. මෙම විශේෂාංගය භාවිතා කිරීම සඳහා, මූලික පරිශීලකයා වෙත මාරු වෙන්න." "තිරය පිරවීමට විශාලනය කරන්න" "තිරය පිරවීමට අදින්න" "තිර රුව සුරකිමින්…" @@ -353,10 +353,10 @@ "සෙවීම" "%s සඳහා උඩට සර්පණය කරන්න." "%s සඳහා වමට සර්පණය කරන්න." - "එලාම සිහිකැඳවීම්, සිදුවීම්, සහ ඔබ සඳහන් කළ අමතන්නන් හැර, ශබ්ද සහ කම්පනවලින් ඔබට බාධා නොවනු ඇත. සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු ඔබ වාදනය කිරීමට තෝරන ලද සියලු දේ ඔබට තවම ඇසෙනු ඇත." - "එලාම හැර, ශබ්ද සහ කම්පනවලින් ඔබට බාධා නොවනු ඇත. සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු ඔබ වාදනය කිරීමට තෝරන ලද සියලු දේ ඔබට තවම ඇසෙනු ඇත." + "එලාම සිහිකැඳවීම්, සිදුවීම්, සහ ඔබ සඳහන් කළ අමතන්නන් හැර, ශබ්ද සහ කම්පනවලින් ඔබට බාධා නොවනු ඇත. සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු ඔබ වාදනය කිරීමට තෝරන ලද සියලු දේ ඔබට තවම ඇසෙනු ඇත." + "එලාම හැර, ශබ්ද සහ කම්පනවලින් ඔබට බාධා නොවනු ඇත. සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු ඔබ වාදනය කිරීමට තෝරන ලද සියලු දේ ඔබට තවම ඇසෙනු ඇත." "අභිරුචිකරණය" - "මෙය එලාම්, සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු, සියලු ශබ්ද සහ කම්පන අවහිර කරයි. ඔබට තවමත් දුරකථන ඇමතුම් ගැනීමට හැකියාව ඇත." + "මෙය එලාම්, සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු, සියලු ශබ්ද සහ කම්පන අවහිර කරයි. ඔබට තවම දුරකථන ඇමතුම් ගැනීමට හැකි වනු ඇත." "මෙය එලාම්, සංගීතය, වීඩියෝ, සහ ක්‍රීඩා ඇතුළු, සියලු ශබ්ද සහ කම්පන අවහිර කරයි." "+%d" "හදිසිය අඩු දැනුම් දීම් පහත" @@ -456,7 +456,7 @@ "තව දැන ගන්න" "ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ ජාල ක්‍රියාකාරකම් නිරීක්ෂණය කළ හැකි %1$s, වෙත ඔබ සම්බන්ධ වී ඇත." " " - "VPN සැකසීම් විවෘත කරන්න" + "VPN සැකසීම් විවෘත කරන්න" " " "විශ්වාසි අක්තපත්‍ර විවෘත කරන්න" "ඔබගේ පරිපාලක ඔබගේ උපාංගය මත තදබදය නිරීක්ෂණය කරන, ජාල ඇතුළු වීම ක්‍රියාත්මක කර ඇත.\n\nවැඩිදුර තොරතුරු සඳහා ඔබේ පරිපාලක අමතන්න." @@ -556,8 +556,8 @@ "මෙම යෙදුම හට දැනුම්දීම් ප්‍රවර්ග නොමැත" "මෙම යෙදුම වෙතින් වන දැනුම්දීම් ක්‍රියාවිරහිත කළ නොහැකිය" - මෙම යෙදුමෙන් දැනුම්දීම් ප්‍රවර්ග %dන් 1ක් - මෙම යෙදුමෙන් දැනුම්දීම් ප්‍රවර්ග %dන් 1ක් + මෙම යෙදුමෙන් දැනුම්දීම් ප්‍රවර්ග %sන් 1ක් + මෙම යෙදුමෙන් දැනුම්දීම් ප්‍රවර්ග %sන් 1ක් "%1$s, %2$s" @@ -585,8 +585,8 @@ මිනිත්තු %d "බැටරි භාවිතය" - "ආරෝපණය අතරතුර බැටරි සුරැකුම ලබා ගත නොහැකිය." - "බැටරි සුරැකුම" + "ආරෝපණය අතරතුර බැටරි සුරැකුම ලබා ගත නොහැකිය" + "බැටරිය සුරකින්නා" "ක්‍රියාකාරිත්වය සහ පසුබිම් දත්ත අඩු කරන්න" "%1$s බොත්තම" "Home යතුර" @@ -726,9 +726,9 @@ "කුඩා කරන්න" "වසන්න" "ඉවත ලෑමට පහළට ඇදගෙන යන්න" - "පින්තූරය තුළ පින්තූරය මෙනුව" + "මෙනුව" "%s පින්තූරය-තුළ-පින්තූරය තුළ වේ" - "ඔබට %s මෙම විශේෂාංගය භාවිත කිරීමට අවශ්‍ය නැති නම්, සැකසීම් විවෘත කිරීමට තට්ටු කර එය ක්‍රියාවිරහිත කරන්න." + "ඔබට %s මෙම විශේෂාංගය භාවිත කිරීමට අවශ්‍ය නැති නම්, සැකසීම් විවෘත කිරීමට තට්ටු කර එය ක්‍රියාවිරහිත කරන්න." "ධාවනය කරන්න" "විරාම කරන්න" "ඊළඟ එකට පනින්න" @@ -754,6 +754,7 @@ "මෙනුව" "%1$s යෙදුම" "ඇඟවීම්" + "බැටරිය" "තිර රු" "පොදු පණිවිඩ" "ගබඩාව" @@ -774,4 +775,5 @@ "පසුබිමින් ධාවනය වන යෙදුම්" "බැටරි හා දත්ත භාවිතය පිළිබඳව විස්තර සඳහා තට්ටු කරන්න" "ජංගම දත්ත ක්‍රියාවිරහිත කරන්නද?" + "යෙදුමක් අවසර ඉල්ලීමක් කරන නිසා, සැකසීම්වලට ඔබගේ ප්‍රතිචාරය සත්‍යාපනය කළ නොහැකිය." diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index ca37a634f245996ee19146edc5028467c35ac167..db7ea81a5b0a2f23ab6542384ab1caa711447b5b 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -66,7 +66,7 @@ "Digitálny odtlačok RSA počítača je:\n%1$s" "Vždy povoliť z tohto počítača" "Ladenie cez USB nie je povolené" - "Používateľ, ktorý je práve prihlásený na tomto zariadení, nemôže zapnúť ladenie cez USB. Ak chcete použiť túto funkciu, prepnite na používateľa s oprávneniami správcu." + "Používateľ, ktorý je práve prihlásený v tomto zariadení, nemôže zapnúť ladenie USB. Ak chcete použiť túto funkciu, prepnite na hlavného používateľa." "Priblížiť na celú obrazovku" "Na celú obrazovku" "Prebieha ukladanie snímky obrazovky..." @@ -359,10 +359,10 @@ "Vyhľadávanie" "Prejdite prstom nahor: %s." "Prejdite prstom doľava: %s." - "Nebudú vás vyrušovať zvuky ani vibrácie, iba budíky, pripomenutia, udalosti a volajúci, ktorých určíte. Budete naďalej počuť všetko, čo sa rozhodnete prehrať, ako napríklad hudbu, videá a hry." - "Nebudú vás vyrušovať zvuky ani vibrácie, iba budíky. Budete naďalej počuť všetko, čo sa rozhodnete prehrať, ako napríklad hudbu, videá a hry." + "Nebudú vás vyrušovať zvuky ani vibrácie, iba budíky, pripomenutia, udalosti a volajúci, ktorých určíte. Budete naďalej počuť všetko, čo sa rozhodnete prehrať, ako napríklad hudbu, videá a hry." + "Nebudú vás vyrušovať zvuky ani vibrácie, iba budíky. Budete naďalej počuť všetko, čo sa rozhodnete prehrať, ako napríklad hudbu, videá a hry." "Prispôsobiť" - "Budú zablokované všetky zvuky a vibrácie vrátane budíkov, hudby, videí a hier. Stále však budete môcť telefonovať." + "Zablokujú sa VŠETKY zvuky a vibrácie vrátane budíkov, hudby, videí a hier. Stále však budete môcť telefonovať." "Zablokujú sa tým VŠETKY zvuky a vibrácie vrátane zvukov budíkov, hudby, videí a hier." "+%d" "Menej naliehavé upozornenia sa nachádzajú nižšie" @@ -462,7 +462,7 @@ "Ďalšie informácie" "Ste pripojený/-á k aplikácii %1$s, ktorá môže sledovať vašu aktivitu v sieti vrátane e-mailových správ, aplikácií a webových stránok." " " - "Otvoriť Nastavenia pripojenia VPN" + "Otvoriť nastavenia pripojenia VPN" " " "Otvoriť dôveryhodné poverenia" "Správca aktivoval zapisovanie do denníka siete, ktoré sleduje premávku na vašom zariadení.\n\nĎalšie informácie vám poskytne správca." @@ -562,10 +562,10 @@ "Táto aplikácia nemá kategórie upozornení" "Upozornenia z tejto aplikácie sa nedajú vypnúť" - 1 z %d kategórií upozornení z tejto aplikácie - 1 z %d kategórie upozornení z tejto aplikácie - 1 z %d kategórií upozornení z tejto aplikácie - 1 z %d kategórie upozornení z tejto aplikácie + 1 z %s kategórií upozornení z tejto aplikácie + 1 z %s kategórie upozornení z tejto aplikácie + 1 z %s kategórií upozornení z tejto aplikácie + 1 z %s kategórie upozornení z tejto aplikácie "%1$s, %2$s" @@ -599,8 +599,8 @@ %d minúta "Využitie batérie" - "Počas nabíjania nie je Šetrič batérie k dispozícii" - "Šetrič batérie" + "Počas nabíjania nie je Šetrič batérie k dispozícii" + "Šetrič batérie" "Obmedzí výkonnosť a údaje na pozadí" "Tlačidlo %1$s" "Domov" @@ -740,9 +740,9 @@ "Minimalizovať" "Zavrieť" "Zrušíte presunutím nadol" - "Ponuka režimu obraz v obraze" + "Ponuka" "%s je v režime obraz v obraze" - "Ak nechcete, aby aplikácia %s používala túto funkciu, klepnutím otvorte nastavenia a vypnite ju." + "Ak nechcete, aby aplikácia %s používala túto funkciu, klepnutím otvorte nastavenia a vypnite ju." "Prehrať" "Pozastaviť" "Preskočiť na ďalšie" @@ -768,6 +768,7 @@ "Ponuka" "Aplikácia %1$s" "Upozornenia" + "Batéria" "Snímky obrazovky" "Všeobecné správy" "Úložisko" @@ -788,4 +789,5 @@ "Aplikácie sú spustené na pozadí" "Klepnutím zobrazíte podrobnosti o batérii a spotrebe dát" "Vypnúť mobilné dáta?" + "Nastavenia nemôžu overiť vašu odpoveď, pretože určitá aplikácia blokuje žiadosť o povolenie." diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 16f830e06b65ce746994a9bbc6f3b3820a089212..a50d301b79cd36e689e687ebd6822deac0c2838d 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -66,7 +66,7 @@ "Računalnikov prstni odtis ključa RSA je:\n%1$s" "Vedno dovoli iz tega računalnika" "Odpravljanje napak s povezavo USB ni dovoljeno" - "Uporabnik, trenutno prijavljen v napravo, ne more vklopiti odpravljanja napak s povezavo USB. Če želite uporabljati to funkcijo, preklopite na skrbniškega uporabnika." + "Uporabnik, trenutno prijavljen v napravo, ne more vklopiti odpravljanja napak s povezavo USB. Če želite uporabljati to funkcijo, preklopite na primarnega uporabnika." "Povečava čez cel zaslon" "Raztegnitev čez zaslon" "Shranjev. posnetka zaslona ..." @@ -359,10 +359,10 @@ "Iskanje" "Povlecite navzgor za %s." "Povlecite v levo za %s ." - "Ne bodo vas motili zvoki ali tresenje, razen od alarmov, opomnikov, dogodkov in klicateljev, ki jih določite. Še vedno pa boste slišali vse, kar se boste odločili predvajati, vključno z glasbo, videoposnetki in igrami." - "Ne bodo vas motili zvoki ali tresenje, razen alarmov. Še vedno pa boste slišali vse, kar se boste odločili predvajati, vključno z glasbo, videoposnetki in igrami." + "Ne bodo vas motili zvoki ali vibriranje, razen v primeru alarmov, opomnikov, dogodkov in klicateljev, ki jih določite. Še vedno pa boste slišali vse, kar se boste odločili predvajati, vključno z glasbo, videoposnetki in igrami." + "Ne bodo vas motili zvoki ali vibriranje, razen v primeru alarmov. Še vedno pa boste slišali vse, kar se boste odločili predvajati, vključno z glasbo, videoposnetki in igrami." "Prilagodi" - "S tem so blokirani VSI zvoki in vibriranje – tudi od alarmov, glasbe, videoposnetkov in iger. Še vedno boste lahko opravljali telefonske klice." + "S tem so onemogočeni VSI zvoki in vibriranje – tudi v primeru alarmov, glasbe, videoposnetkov in iger. Še vedno pa boste lahko opravljali telefonske klice." "S tem so blokirani VSI zvoki in vibriranje – tudi od alarmov, glasbe, videoposnetkov in iger." "+%d" "Manj nujna obvestila spodaj" @@ -462,7 +462,7 @@ "Več o tem" "Povezani ste z aplikacijo %1$s, ki lahko nadzira omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti." " " - "Odpri nastavitve omrežja VPN" + "Odpri nastavitve omrežja VPN" " " "Odpri zaupanja vredne poverilnice" "Skrbnik je vklopil beleženje omrežnega prometa, ki nadzoruje promet v napravi.\n\nČe želite več informacij, se obrnite na skrbnika." @@ -562,10 +562,10 @@ "Ta aplikacija nima kategorij obvestil" "Obvestil te aplikacije ni mogoče izklopiti" - 1 od %d kategorije obvestil iz te aplikacije - 1 od %d kategorij obvestil iz te aplikacije - 1 od %d kategorij obvestil iz te aplikacije - 1 od %d kategorij obvestil iz te aplikacije + 1 od %s kategorije obvestil iz te aplikacije + 1 od %s kategorij obvestil iz te aplikacije + 1 od %s kategorij obvestil iz te aplikacije + 1 od %s kategorij obvestil iz te aplikacije "%1$s, %2$s" @@ -599,8 +599,8 @@ %d minut "Poraba akumulatorja" - "Varčevanje z energijo akumulatorja med polnjenjem ni na voljo" - "Varčevanje z energijo akumulatorja" + "Varčevanje z energijo akumulatorja med polnjenjem ni na voljo" + "Varčevanje z energijo akumulatorja" "Omeji zmogljivost delovanja in prenos podatkov v ozadju" "Gumb %1$s" "Začetek" @@ -740,9 +740,9 @@ "Minimiraj" "Zapri" "Povlecite navzdol, da opustite" - "Meni za sliko v sliki" + "Meni" "%s je v načinu slika v sliki" - "Če ne želite, da aplikacija %s uporablja to funkcijo, se dotaknite, da odprete nastavitve, in funkcijo izklopite." + "Če ne želite, da aplikacija %s uporablja to funkcijo, se dotaknite, da odprete nastavitve, in funkcijo izklopite." "Predvajaj" "Začasno ustavi" "Preskoči na naslednjega" @@ -768,6 +768,7 @@ "Meni" "Aplikacija %1$s" "Opozorila" + "Akumulator" "Posnetki zaslona" "Splošna sporočila" "Shramba" @@ -788,4 +789,5 @@ "Aplikacije, ki se izvajajo v ozadju" "Dotaknite se za prikaz podrobnosti porabe akumulatorja in prenosa podatkov" "Želite izklopiti prenos podatkov v mobilnih omrežjih?" + "Ker aplikacija zakriva zahtevo za dovoljenje, z nastavitvami ni mogoče preveriti vašega odziva." diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index f0a7e45f9d7b63865ebecad610de587f065d6cee..e1f25672ed098551e4ec0eefcf1fbe89a13768ab 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -64,7 +64,7 @@ "Shenja e gishtit të tastit \"RSA\" së kompjuterit është:\n%1$s" "Lejo gjithmonë nga ky kompjuter" "Korrigjimi i USB-së nuk lejohet" - "Përdoruesi i identifikuar aktualisht në këtë pajisje nuk mund ta aktivizojë korrigjimin e USB-së. Për ta përdorur këtë funksion, kalo te përdoruesi Administrator." + "Përdoruesi i identifikuar aktualisht në këtë pajisje nuk mund ta aktivizojë korrigjimin e USB-së. Për ta përdorur këtë funksion, kalo te përdoruesi parësor." "Zmadho për të mbushur ekranin" "Shtrije për të mbushur ekranin" "Po ruan pamjen e ekranit..." @@ -353,10 +353,10 @@ "Kërko" "Rrëshqit lart për %s." "Rrëshqit majtas për %s." - "Nuk do të shqetësohesh nga tingujt dhe dridhjet, përveç alarmeve, alarmeve rikujtuese, ngjarjeve dhe telefonuesve që specifikon. Do të vazhdosh të dëgjosh gjithçka që zgjedh të luash duke përfshirë muzikën, videot dhe lojërat." - "Nuk do të shqetësohesh nga tingujt dhe dridhjet, përveç alarmeve. Do të vazhdosh të dëgjosh gjithçka që zgjedh të luash duke përfshirë muzikën, videot dhe lojërat." + "Nuk do të shqetësohesh nga tingujt dhe dridhjet, përveç alarmeve, alarmeve rikujtuese, ngjarjeve dhe telefonuesve që specifikon. Do të vazhdosh të dëgjosh çdo gjë që zgjedh të luash duke përfshirë muzikën, videot dhe lojërat." + "Nuk do të shqetësohesh nga tingujt dhe dridhjet, përveç alarmeve. Do të vazhdosh të dëgjosh çdo gjë që zgjedh të luash duke përfshirë muzikën, videot dhe lojërat." "Personalizo" - "Kjo bllokon TË GJITHË tingujt dhe dridhjet, duke përfshirë edhe nga alarmet, muzika, videot dhe lojërat. Përsëri do të mund të bësh telefonata." + "Kjo bllokon TË GJITHË tingujt dhe dridhjet, duke përfshirë edhe nga alarmet, muzika, videot dhe lojërat. Përsëri do të mund të bësh telefonata." "Kjo bllokon TË GJITHË tingujt dhe dridhjet, duke përfshirë edhe nga alarmet, muzika, videot dhe lojërat." "+%d" "Njoftimet më pak urgjente, më poshtë!" @@ -456,7 +456,7 @@ "Mëso më shumë" "Je i lidhur me aplikacionin %1$s, i cili mund të monitorojë aktivitetin tënd në rrjet, duke përfshirë mail-et, aplikacionet dhe sajtet e uebit." " " - "Hap cilësimet e VPN-së" + "Hap cilësimet e VPN-së" " " "Hap kredencialet e besuara" "Administratori yt ka aktivizuar regjistrimin e rrjetit, i cili monitoron trafikun në pajisjen tënde.\n\nPër më shumë informacione, kontakto me administratorin." @@ -556,8 +556,8 @@ "Ky aplikacion nuk ka kategori njoftimesh" "Njoftimet nga ky aplikacion nuk mund të çaktivizohen" - 1 nga %d kategori njoftimi nga ky aplikacion - 1 nga %d kategori njoftimi nga ky aplikacion + 1 nga %s kategori njoftimi nga ky aplikacion + 1 nga %s kategori njoftimi nga ky aplikacion "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minutë "Përdorimi i baterisë" - "\"Kursyesi i baterisë\" nuk është i disponueshëm gjatë karikimit" - "Kursyesi i baterisë" + "\"Kursyesi i baterisë\" nuk është i disponueshëm gjatë ngarkimit" + "Kursyesi i baterisë" "Pakëson veprimtarinë dhe të dhënat në sfond" "Butoni %1$s" "Kreu" @@ -726,9 +726,9 @@ "Minimizo" "Mbyll" "Zvarrit poshtë për të larguar" - "Menyja e \"Figurës brenda figurës\"" + "Menyja" "%s është në figurë brenda figurës" - "Nëse nuk dëshiron që %s ta përdorë këtë funksion, trokit për të hapur cilësimet dhe për ta çaktivizuar." + "Nëse nuk dëshiron që %s ta përdorë këtë funksion, trokit për të hapur cilësimet dhe për ta çaktivizuar." "Luaj" "Ndërprit" "Kalo te tjetra" @@ -754,6 +754,7 @@ "Menyja" "Aplikacioni %1$s" "Sinjalizimet" + "Bateria" "Pamjet e ekranit" "Mesazhe të përgjithshme" "Hapësira ruajtëse" @@ -774,4 +775,5 @@ "Aplikacionet që ekzekutohen në sfond" "Trokit për detaje mbi baterinë dhe përdorimin e të dhënave" "Të çaktivizohen të dhënat celulare?" + "Duke qenë se një aplikacion po bllokon një kërkesë për leje, \"Cilësimet\" nuk mund të verifikojnë përgjigjen tënde." diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 94a59098dd3f6db8ff8e183d24c000fad2d1f262..b31eb962883cfd2d3801b987dde25b6b7820ac1b 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -65,7 +65,7 @@ "Дигитални отисак RSA кључа овог рачунара је:\n%1$s" "Увек дозволи са овог рачунара" "Отклањање грешака на USB-у није дозвољено" - "Корисник који је тренутно пријављен на овај уређај не може да укључи отклањање грешака на USB-у. Да бисте користили ову функцију, пребаците на корисника са администраторским правима." + "Корисник који је тренутно пријављен на овај уређај не може да укључи отклањање грешака на USB-у. Да бисте користили ову функцију, пребаците на примарног корисника." "Зумирај на целом екрану" "Развуци на цео екран" "Чување снимка екрана..." @@ -355,10 +355,10 @@ "Претрага" "Превуците нагоре за %s." "Превуците улево за %s." - "Неће вас узнемиравати звукови и вибрације осим за аларме, подсетнике, догађаје и позиваоце које наведете. И даље ћете чути све што одаберете да пустите, укључујући музику, видео снимке и игре." - "Неће вас узнемиравати звукови и вибрације осим за аларме. И даље ћете чути све што одаберете да пустите, укључујући музику, видео снимке и игре." + "Неће вас узнемиравати звукови и вибрације осим за аларме, подсетнике, догађаје и позиваоце које наведете. И даље ћете чути све што одаберете да пустите, укључујући музику, видео снимке и игре." + "Неће вас узнемиравати звукови и вибрације осим за аларме. И даље ћете чути све што одаберете да пустите, укључујући музику, видео снимке и игре." "Прилагоди" - "Ово блокира СВЕ звукове и вибрације укључујући аларме, музику, видео снимке и игре. И даље ћете моћи да упућујете позиве." + "Ово блокира СВЕ звукове и вибрације укључујући аларме, музику, видео снимке и игре. И даље ћете моћи да упућујете позиве." "Ово блокира СВЕ звукове и вибрације укључујући аларме, музику, видео снимке и игре." "+%d" "Мање хитна обавештења су у наставку" @@ -458,7 +458,7 @@ "Сазнајте више" "Повезани сте са апликацијом %1$s, која може да надгледа активности на мрежи, укључујући имејлове, апликације и веб-сајтове." " " - "Отворите подешавања VPN-а" + "Отвори подешавања VPN-а" " " "Отворите поуздане акредитиве" "Администратор је укључио евидентирање мреже, које прати саобраћај на уређају.\n\nКонтактирајте администратора за више информација." @@ -558,9 +558,9 @@ "Ова апликација нема категорије обавештења" "Обавештења из ове апликације не могу да се искључе" - 1 од %d категорије обавештења за ову апликацију - 1 од %d категорије обавештења за ову апликацију - 1 од %d категорија обавештења за ову апликацију + 1 од %s категорије обавештења за ову апликацију + 1 од %s категорије обавештења за ову апликацију + 1 од %s категорија обавештења за ову апликацију "%1$s, %2$s" @@ -591,8 +591,8 @@ %d минута "Потрошња батерије" - "Уштеда батерије није доступна током пуњења" - "Уштеда батерије" + "Уштеда батерије није доступна током пуњења" + "Уштеда батерије" "Смањује перформансе и позадинске податке" "Дугме %1$s" "Тастер Почетна" @@ -732,9 +732,9 @@ "Умањи" "Затвори" "Превуците надоле да бисте одбили" - "Мени Слика у слици" + "Мени" "%s је слика у слици" - "Ако не желите да %s користи ову функцију, додирните да бисте отворили подешавања и искључили је." + "Ако не желите да %s користи ову функцију, додирните да бисте отворили подешавања и искључили је." "Пусти" "Паузирај" "Пређи на следеће" @@ -760,6 +760,7 @@ "Мени" "Апликација %1$s" "Обавештења" + "Батерија" "Снимци екрана" "Опште поруке" "Меморијски простор" @@ -780,4 +781,5 @@ "Апликације покренуте у позадини" "Додирните за детаље о батерији и потрошњи података" "Желите да онемогућите мобилне податке?" + "Подешавања не могу да верификују ваш одговор јер апликација скрива захтев за дозволу." diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 839cc4b12e1f238f7d49c024665c8c12fe77c1b9..86b5c0cade9df223258995b165a0327f4cc65a93 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -64,7 +64,7 @@ "Fingeravtrycket för datorns RSA-nyckel är:\n%1$s" "Tillåt alltid på den här datorn" "USB-felsökning är inte tillåtet" - "Användaren som är inloggad på enheten för närvarande kan inte aktivera USB-felsökning. Logga in som administratör om du vill använda den här funktionen." + "Användaren som är inloggad på enheten för närvarande kan inte aktivera USB-felsökning. Byt till den primära användaren om du vill använda den här funktionen." "Zooma för att fylla skärm" "Dra för att fylla skärmen" "Skärmdumpen sparas ..." @@ -353,10 +353,10 @@ "Sök" "Dra uppåt för %s ." "Dra åt vänster för %s ." - "Du blir inte störd av ljud och vibrationer, förutom från alarm, påminnelser, event och specifika samtal. Ljudet är fortfarande på för sådant du väljer att spela upp, till exempel musik, videor och spel." - "Du blir inte störd av ljud och vibrationer, förutom från alarm. Ljudet är fortfarande på för sådant du väljer att spela upp, till exempel musik, videor och spel." + "Du blir inte störd av ljud och vibrationer, förutom från alarm, påminnelser, händelser och specifika samtal. Ljudet är fortfarande på för sådant du väljer att spela upp, till exempel musik, videor och spel." + "Du blir inte störd av ljud och vibrationer, förutom från alarm. Ljudet är fortfarande på för sådant du väljer att spela upp, till exempel musik, videor och spel." "Anpassa" - "Detta blockerar ALLA ljud och vibrationer, inklusive alarm, musik, videor och spel. Du kan fortfarande ringa." + "ALLA ljud och vibrationer blockeras, inklusive alarm, musik, videor och spel. Du kan fortfarande ringa." "Detta blockerar ALLA ljud och vibrationer, inklusive alarm, musik, videor och spel." "+%d" "Mindre brådskande aviseringar nedan" @@ -456,7 +456,7 @@ "Läs mer" "Du är ansluten till %1$s som kan övervaka din aktivitet på nätverket, inklusive e-postmeddelanden, appar och webbplatser." " " - "Öppna VPN-inställningar" + "Öppna VPN-inställningarna" " " "Öppna betrodda användaruppgifter" "Administratören har aktiverat nätverksloggning som övervakar trafik på enheten.\n\nKontakta administratören om du vill veta mer." @@ -556,8 +556,8 @@ "Det finns inga aviseringskategorier i appen" "Det går inte att inaktivera aviseringar från den här appen" - 1 av %d aviseringskategorier från denna app - 1 av %d aviseringskategorier från denna app + 1 av %s aviseringskategorier från denna app + 1 av %s aviseringskategorier från denna app "%1$s, %2$s" @@ -585,8 +585,8 @@ %d minut "Batteriförbrukning" - "Batterisparläget är inte tillgängligt vid laddning" - "Batterisparläge" + "Batterisparläget är inte tillgängligt vid laddning" + "Batterisparläge" "Minskar prestanda och bakgrundsdata" "Knappen %1$s" "Start" @@ -726,9 +726,9 @@ "Minimera" "Stäng" "Tryck och dra nedåt för att avvisa" - "Bild-i-bild-meny" + "Meny" "%s visas i bild-i-bild" - "Om du inte vill att den här funktionen används för %s öppnar du inställningarna genom att trycka. Sedan inaktiverar du funktionen." + "Om du inte vill att den här funktionen används i %s öppnar du inställningarna genom att trycka. Sedan inaktiverar du funktionen." "Spela upp" "Pausa" "Hoppa till nästa" @@ -754,6 +754,7 @@ "Meny" "Appen %1$s" "Varningar" + "Batteri" "Skärmdumpar" "Allmänna meddelanden" "Lagring" @@ -774,4 +775,5 @@ "Appar körs i bakgrunden" "Tryck för information om batteri- och dataanvändning" "Vill du inaktivera mobildatan?" + "Svaret kan inte verifieras av Inställningar eftersom en app skymmer en begäran om behörighet." diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index e54f6ccc2d6a799becf72710696600d7ef382a64..940f14a5c6b25bb3efde35464f76a42e770ad019 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -64,14 +64,14 @@ "Alama ya kidole ya kitufe cha RSA ya kompyuta ni:\n%1$s" "Ruhusu kutoka kwenye kompyuta hii kila wakati" "Utatuzi wa USB hauruhusiwi" - "Mtumiaji aliyeingia katika kifaa hiki kwa sasa hawezi kuwasha utatuzi wa USB. Ili uweze kutumia kipengele hiki, tafadhali badili utumie mtumiaji Msimamizi." + "Mtumiaji aliyeingia katika akaunti kwa kutumia kifaa hiki kwa sasa hawezi kuwasha utatuzi wa USB. Ili utumie kipengele hiki, tumia akaunti ya mtumiaji wa msingi." "Kuza ili kujaza skrini" "Tanua ili kujaza skrini" "Inahifadhi picha ya skrini..." "Inahifadhi picha ya skrini..." "Picha ya skrini inahifadhiwa" "Picha ya skrini imenaswa." - "Gonga ili utazame picha ya skrini uliyohifadhi." + "Gusa ili utazame picha ya skrini uliyohifadhi." "Haikuweza kunasa picha ya skrini" "Hitilafu imetokea wakati wa kuhifadhi picha ya skrini." "Haina nafasi ya kutosha kuhifadhi picha ya skrini." @@ -353,14 +353,14 @@ "Tafuta" "Sogeza juu kwa %s ." "Sogeza kushoto kwa %s ." - "Hutasumbuliwa na sauti na mitetemo, isipokuwa kengele, vikumbusho, matukio na watu wanaokupigia simu ambao umechagua. Bado utasikia chochote utakachochagua kucheza, ikiwa ni pamoja na muziki, video na michezo." - "Hutasumbuliwa na sauti na mitetemo, isipokuwa kengele. Bado utasikia chochote utakachochagua kucheza, ikiwa ni pamoja na muziki, video na michezo." + "Hutasumbuliwa na sauti na mitetemo, isipokuwa kengele, vikumbusho, matukio na simu zinazopigwa na watu uliobainisha. Bado utasikia chochote utakachochagua kucheza, ikiwa ni pamoja na muziki, video na michezo." + "Hutasumbuliwa na sauti na mitetemo, isipokuwa kengele. Bado utasikia chochote utakachochagua kucheza, ikiwa ni pamoja na muziki, video na michezo." "Badilisha upendavyo" - "Hatua hii huzuia sauti na mitetemo YOTE, ikiwa ni pamoja na ile inayotokana na kengele, muziki, video na michezo. Bado utaweza kupiga simu." + "Hatua hii huzuia mitetemo na sauti ZOTE, ikiwa ni pamoja na inayotokana na kengele, muziki video na michezo. Bado utaweza kupiga simu." "Hatua hii huzuia sauti na mitetemo YOTE, ikiwa ni pamoja na ile inayotokana na kengele, muziki, video na michezo." "%d+" "Arifa zisizo za dharura sana ziko hapo chini" - "Gonga tena ili ufungue" + "Gusa tena ili ufungue" "Telezesha kidole ili ufungue" "Kifaa hiki kinasimamiwa na shirika lako" "Kifaa hiki kinadhibitiwa na %s" @@ -456,7 +456,7 @@ "Pata maelezo zaidi" "Umeunganishwa kwenye %1$s, ambayo inaweza kufuatilia shughuli za mtandao wako, ikiwa ni pamoja na barua pepe, programu na tovuti." " " - "Fungua Mipangilio ya VPN" + "Fungua mipangilio ya VPN" " " "Fungua vitambulisho vinavyoaminika" "Msimamizi wako amewasha kumbukumbu ya kuingia mtandaoni ambayo hufuatilia shughuli kwenye kifaa chako.\n\nKwa maelezo zaidi, wasiliana na msimamizi wako." @@ -497,11 +497,11 @@ "Bluetooth" "Masafa ya ishara ya kampuni ya simu" "Zana za walio na matatizo ya kuona au kusikia" - "%1$s. Gonga ili urejeshe." - "%1$s. Gonga ili uweke mtetemo. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia." - "%1$s. Gonga ili ukomeshe. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia." - "%1$s. Gonga ili uweke mtetemo." - "%1$s. Gonga ili usitishe." + "%1$s. Gusa ili urejeshe." + "%1$s. Gusa ili uweke mtetemo. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia." + "%1$s. Gusa ili ukomeshe. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia." + "%1$s. Gusa ili uweke mtetemo." + "%1$s. Gusa ili usitishe." "Inaonyesha %s ya vidhibiti vya sauti. Telezesha kidole juu ili uondoe." "Imeficha vidhibiti vya sauti" "Kirekebishi cha kiolesura cha mfumo" @@ -556,8 +556,8 @@ "Programu hii haina aina za arifa" "Arifa kutoka kwenye programu hii haziwezi kuzimwa" - Aina 1 ya arifa kati ya %d kutoka kwenye kifaa hiki - Aina 1 ya arifa kati ya %d kutoka kwenye kifaa hiki + Aina 1 ya arifa kati ya %s kutoka kwenye kifaa hiki + Aina 1 ya arifa kati ya %s kutoka kwenye kifaa hiki "%1$s, %2$s" @@ -585,8 +585,8 @@ Dakika %d "Matumizi ya betri" - "Kiokoa Betri hakipatikani unapochaji betri" - "Kiokoa Betri" + "Kiokoa betri hakipatikani unapochaji betri" + "Kiokoa betri" "Hupunguza data ya chini chini na utendaji" "Kitufe cha %1$s" "Mwanzo" @@ -697,9 +697,9 @@ "Juu 50%" "Juu 30%" "Skrini nzima ya chini" - "Nafasi ya %1$d, %2$s. Gonga mara mbili ili ubadilishe." - "%1$s. Gonga mara mbili ili uongeze." - "Nafasi ya %1$d. Gonga mara mbili ili uchague." + "Nafasi ya %1$d, %2$s. Gusa mara mbili ili ubadilishe." + "%1$s. Gusa mara mbili ili uongeze." + "Nafasi ya %1$d. Gusa mara mbili ili uchague." "Hamisha %1$s" "Ondoa %1$s" "%1$s imeongezwa kwenye nafasi ya %2$d" @@ -726,9 +726,9 @@ "Punguza" "Funga" "Buruta ili uondoe" - "Menyu ya picha ndani ya picha" + "Menyu" "%s iko katika hali ya picha ndani ya picha nyingine" - "Ikiwa hutaki %s kutumia kipengele hiki, gonga ili ufungue mipangilio na ukizime." + "Ikiwa hutaki %s itumie kipengele hiki, gusa ili ufungue mipangilio na uizime." "Cheza" "Sitisha" "Ruka ufikie inayofuata" @@ -754,6 +754,7 @@ "Menyu" "Programu ya %1$s" "Arifa" + "Betri" "Picha za skrini" "Ujumbe wa Jumla" "Hifadhi" @@ -772,6 +773,7 @@ "Usibadilishe" "Badilisha" "Programu zinatumika chinichini" - "Gonga ili upate maelezo kuhusu betri na matumizi ya data" + "Gusa ili upate maelezo kuhusu betri na matumizi ya data" "Ungependa kuzima data ya mtandao wa simu?" + "Kwa sababu programu nyingine inazuia ombi la ruhusa, hatuwezi kuthibitisha jibu lako katika Mipangilio." diff --git a/packages/SystemUI/res/values-sw372dp/dimens.xml b/packages/SystemUI/res/values-sw372dp/dimens.xml new file mode 100644 index 0000000000000000000000000000000000000000..635185d7f2ad1ee779ed60fd8a6535551dcaef1f --- /dev/null +++ b/packages/SystemUI/res/values-sw372dp/dimens.xml @@ -0,0 +1,21 @@ + + + + 8dp + 8dp + diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 9905244f5050bf9ed02c2430751cf51264482a11..a46facfc931eced82a2922509d43f5df9631b9ed 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -64,7 +64,7 @@ "பின்வருவது கணினியின் RSA விசை கைரேகையாகும்:\n%1$s" "இந்தக் கணினியிலிருந்து எப்போதும் அனுமதி" "USB பிழைத்திருத்தம் அனுமதிக்கப்படவில்லை" - "தற்போது இந்தச் சாதனத்தில் உள்நுழைந்துள்ள பயனரால் USB பிழைத்திருத்தத்தை இயக்க முடியாது. இந்த அம்சத்தைப் பயன்படுத்த, நிர்வாகிப் பயனருக்கு மாறவும்." + "தற்போது இந்தச் சாதனத்தில் உள்நுழைந்துள்ள பயனரால் USB பிழைத்திருத்தத்தை இயக்க முடியாது. இந்த அம்சத்தை இயக்க, முதன்மைப் பயனருக்கு மாறவும்." "திரையை நிரப்ப அளவை மாற்று" "திரையை நிரப்ப இழு" "ஸ்க்ரீன் ஷாட்டைச் சேமிக்கிறது…" @@ -353,10 +353,10 @@ "தேடு" "%s க்கு மேலாக இழுக்கவும்." "%s க்கு இடதுபக்கமாக இழுக்கவும்." - "அலாரங்கள், நினைவூட்டல்கள், நிகழ்வுகள் மற்றும் குறிப்பிட்ட அழைப்பாளர்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்." - "அலாரங்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்." + "அலாரங்கள், நினைவூட்டல்கள், நிகழ்வுகள் மற்றும் குறிப்பிட்ட அழைப்பாளர்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள், கேம்ஸ் போன்றவை) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்." + "அலாரங்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள், கேம்ஸ் போன்றவை) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்." "தனிப்பயனாக்கு" - "இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும். இருப்பினும் நீங்கள் அழைப்புகளைச் செய்யலாம்." + "இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும். எனினும், உங்களால் ஃபோன் அழைப்புகளைச் செய்ய முடியும்." "இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும்." "+%d" "அவசர நிலைக் குறைவான அறிவிப்புகள் கீழே உள்ளன" @@ -456,7 +456,7 @@ "மேலும் அறிக" "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்தப் பயன்பாட்டால் மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்." " " - "VPN அமைப்புகளைத் திற" + "VPN அமைப்புகளைத் திற" " " "நம்பகமான அனுமதிச் சான்றுகளைத் திற" "உங்கள் நிர்வாகி நெட்வொர்க் பதிவெடுத்தலை இயக்கியுள்ளார், இது சாதனத்தில் ட்ராஃபிக்கைக் கண்காணிக்கும்.\n\nமேலும் தகவலுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்." @@ -556,8 +556,8 @@ "இந்தப் பயன்பாட்டில் அறிவிப்பு வகைகள் இல்லை" "இந்தப் பயன்பாட்டிலிருந்து அறிவிப்புகளைப் பெறுவதை முடக்க முடியாது" - இந்தப் பயன்பாடு வழங்கும் %d அறிவிப்பு வகைகளில் ஒரு அறிவிப்பு வகை - இந்தப் பயன்பாடு வழங்கும் %d அறிவிப்பு வகையில் ஒரு அறிவிப்பு வகை + இந்தப் பயன்பாடு வழங்கும் %s அறிவிப்பு வகைகளில் ஒரு அறிவிப்பு வகை + இந்தப் பயன்பாடு வழங்கும் %s அறிவிப்பு வகையில் ஒரு அறிவிப்பு வகை "%1$s, %2$s" @@ -585,8 +585,8 @@ %d நிமிடம் "பேட்டரி பயன்பாடு" - "சார்ஜ் செய்யும் போது பேட்டரி சேமிப்பானைப் பயன்படுத்த முடியாது" - "பேட்டரி சேமிப்பான்" + "சார்ஜ் செய்யும் போது பேட்டரி சேமிப்பானைப் பயன்படுத்த முடியாது" + "பேட்டரி சேமிப்பான்" "செயல்திறனையும் பின்புலத்தில் தரவு செயலாக்கப்படுவதையும் குறைக்கும்" "%1$s பொத்தான்" "ஹோம்" @@ -726,9 +726,9 @@ "சிறிதாக்கு" "மூடு" "நிராகரிக்க, கீழே இழுக்கவும்" - "பிக்ச்சர்-இன்-பிக்ச்சர் மெனு" + "மெனு" "%s தற்போது பிக்ச்சர்-இன்-பிக்ச்சரில் உள்ளது" - "%s இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால், அமைப்புகளைத் திறந்து அதை முடக்க, தட்டவும்." + "%s இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால், அமைப்புகளைத் திறந்து அதை முடக்க, தட்டவும்." "இயக்கு" "இடைநிறுத்து" "அடுத்ததற்குச் செல்" @@ -754,6 +754,7 @@ "மெனு" "%1$s பயன்பாடு" "விழிப்பூட்டல்கள்" + "பேட்டரி" "ஸ்கிரீன் ஷாட்டுகள்" "பொதுச் செய்திகள்" "சேமிப்பிடம்" @@ -774,4 +775,5 @@ "பின்னணியில் இயங்கும் பயன்பாடுகள்" "பேட்டரி மற்றும் தரவு உபயோக விவரங்களைக் காண, தட்டவும்" "மொபைல் டேட்டாவை முடக்கவா?" + "அனுமதிக் கோரிக்கையைப் பயன்பாடு மறைப்பதால், அமைப்புகளால் உங்கள் பதிலைச் சரிபார்க்க முடியாது." diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index f87ee6fd0dcc4c0a630105a61eaa543620c9f731..2c32fab8d3d33f81430acada6028689d03986d01 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -64,7 +64,7 @@ "ఇది కంప్యూటర్ యొక్క RSA కీ వేలిముద్ర:\n%1$s" "ఈ కంప్యూటర్ నుండి ఎల్లప్పుడూ అనుమతించు" "USB డీబగ్గింగ్‌కి అనుమతి లేదు" - "ప్రస్తుతం ఈ పరికరంలో సైన్ ఇన్ చేసిన వినియోగదారు USB డీబగ్గింగ్‌ను ఆన్ చేయలేరు. ఈ లక్షణాన్ని ఉపయోగించడానికి, దయచేసి నిర్వాహక వినియోగదారుగా మారండి." + "ఈ పరికరానికి ప్రస్తుతం సైన్ ఇన్ చేసిన వినియోగదారు USB డీబగ్గింగ్ ఆన్ చేయలేరు. ఈ ఫీచర్ ఉపయోగించడానికి, ప్రాథమిక వినియోగదారుకి మారాలి." "స్క్రీన్‌కు నింపేలా జూమ్ చేయండి" "స్క్రీన్‌కు నింపేలా విస్తరించండి" "స్క్రీన్‌షాట్‌ను సేవ్ చేస్తోంది…" @@ -353,10 +353,10 @@ "శోధించండి" "%s కోసం పైకి స్లైడ్ చేయండి." "%s కోసం ఎడమవైపుకు స్లైడ్ చేయండి." - "మీరు పేర్కొనే అలారాలు, రిమైండర్‌లు, ఈవెంట్‌లు మరియు కాలర్‌ల నుండి మినహా మరే ఇతర ధ్వనులు మరియు వైబ్రేషన్‌లతో మీకు అంతరాయం కలగదు. మీరు ఇప్పటికీ సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా మీరు ప్లే చేయడానికి ఎంచుకున్నవి ఏవైనా వింటారు." - "అలారాలు నుండి మినహా మరే ఇతర ధ్వనులు మరియు వైబ్రేషన్‌లతో మీకు అంతరాయం కలగదు. మీరు ఇప్పటికీ సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా మీరు ప్లే చేయడానికి ఎంచుకున్నవి ఏవైనా వింటారు." + "మీరు పేర్కొనే అలారాలు, రిమైండర్‌లు, ఈవెంట్‌లు మరియు కాలర్‌ల నుండి మినహా మరే ఇతర ధ్వనులు మరియు వైబ్రేషన్‌లతో మీకు అంతరాయం కలగదు. మీరు ఇప్పటికీ సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా మీరు ప్లే చేయడానికి ఎంచుకున్నవి ఏవైనా వింటారు." + "అలారాలు నుండి మినహా మరే ఇతర ధ్వనులు మరియు వైబ్రేషన్‌లతో మీకు అంతరాయం కలగదు. మీరు ఇప్పటికీ సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా మీరు ప్లే చేయడానికి ఎంచుకున్నవి ఏవైనా వింటారు." "అనుకూలీకరించు" - "ఇది అలారాలు, సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా అన్ని ధ్వనులు మరియు వైబ్రేషన్‌లను బ్లాక్ చేస్తుంది. మీరు ఇప్పటికీ ఫోన్ కాల్‌లు చేయగలుగుతారు." + "ఇది అలారాలు, సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా అన్ని ధ్వనులు మరియు వైబ్రేషన్‌లను బ్లాక్ చేస్తుంది. మీరు ఇప్పటికీ ఫోన్ కాల్‌లు చేయగలుగుతారు." "ఇది అలారాలు, సంగీతం, వీడియోలు మరియు గేమ్‌లతో సహా అన్ని ధ్వనులు మరియు వైబ్రేషన్‌లను బ్లాక్ చేస్తుంది." "+%d" "తక్కువ అత్యవసర నోటిఫికేషన్‌లు దిగువన" @@ -456,7 +456,7 @@ "మరింత తెలుసుకోండి" "మీరు %1$sకి కనెక్ట్ చేయబడ్డారు, ఇది ఇమెయిల్‌లు, అనువర్తనాలు మరియు వెబ్‌సైట్‌లతో సహా మీ వ్యక్తిగత నెట్‌వర్క్ కార్యాచరణను పర్యవేక్షించగలదు." " " - "VPN సెట్టింగ్‌లను తెరవండి" + "VPN సెట్టింగ్‌లను తెరవండి" " " "విశ్వసనీయ ఆధారాలను తెరువు" "మీ నిర్వాహకులు మీ పరికరంలోని ట్రాఫిక్‌ని పర్యవేక్షించగల నెట్‌వర్క్ లాగింగ్‌ని ఆన్ చేసారు.\n\nమరింత సమాచారం కావాలంటే, మీ నిర్వాహకులను సంప్రదించండి." @@ -556,8 +556,8 @@ "ఈ అనువర్తనానికి నోటిఫికేషన్ వర్గాలు లేవు" "ఈ యాప్ నుండి వచ్చే నోటిఫికేషన్‌లను ఆఫ్ చేయలేరు" - ఈ యాప్ నుంచి %d నోటిఫికేషన్ వర్గాలలో 1 - ఈ యాప్ నుంచి %d నోటిఫికేషన్ వర్గంలో 1 + ఈ యాప్ నుంచి %s నోటిఫికేషన్ వర్గాలలో 1 + ఈ యాప్ నుంచి %s నోటిఫికేషన్ వర్గంలో 1 "%1$s, %2$s" @@ -585,8 +585,8 @@ %d నిమిషం "బ్యాటరీ వినియోగం" - "ఛార్జ్ అవుతున్న సమయంలో బ్యాటరీ సేవర్ అందుబాటులో ఉండదు" - "బ్యాటరీ సేవర్" + "ఛార్జ్ అవుతున్న సమయంలో బ్యాటరీ సేవర్ అందుబాటులో లేదు" + "బ్యాటరీ సేవర్" "పనితీరుని మరియు నేపథ్య డేటాను తగ్గిస్తుంది" "బటన్ %1$s" "Home" @@ -726,9 +726,9 @@ "కనిష్టీకరించు" "మూసివేయి" "తీసివేయడానికి కిందికి లాగండి" - "చిత్రంలో చిత్రం మెను" + "మెను" "%s చిత్రంలో చిత్రం రూపంలో ఉంది" - "%s ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి నొక్కి, దీన్ని ఆఫ్ చేయండి." + "%s ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్‌లను తెరవడానికి నొక్కి, దీన్ని ఆఫ్ చేయండి." "ప్లే చేయి" "పాజ్ చేయి" "దాటవేసి తర్వాత దానికి వెళ్లు" @@ -754,6 +754,7 @@ "మెను" "%1$s అనురవర్తనం" "హెచ్చరికలు" + "బ్యాటరీ" "స్క్రీన్‌షాట్‌లు" "సాధారణ సందేశాలు" "నిల్వ" @@ -774,4 +775,5 @@ "నేపథ్యంలో అమలు అవుతున్న ఆప్‌లు" "బ్యాటరీ మరియు డేటా వినియోగ వివరాల కోసం నొక్కండి" "మొబైల్ డేటాని ఆఫ్ చేయాలా?" + "అనుమతి అభ్యర్థనకు ఒక యాప్ అడ్డు తగులుతున్నందున సెట్టింగ్‌లు మీ ప్రతిస్పందనను ధృవీకరించలేకపోయాయి." diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 28fc4312666fa59a0f7faafcd727b09bdb7b3b81..ad39feae61a900778ca6abcf16785d37c9d3de41 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -64,7 +64,7 @@ "ลายนิ้วมือหลัก RSA ของคอมพิวเตอร์คือ:\n%1$s" "อนุญาตจากคอมพิวเตอร์เครื่องนี้เสมอ" "ไม่อนุญาตให้แก้ไขข้อบกพร่องผ่าน USB" - "ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์นี้อยู่ในขณะนี้ไม่สามารถเปิดการแก้ปัญหาผ่าน USB ได้ หากต้องการใช้ฟีเจอร์นี้ โปรดเปลี่ยนไปเป็นผู้ใช้ที่เป็นผู้ดูแลระบบ" + "ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์อยู่ในขณะนี้ไม่สามารถเปิดการแก้ไขข้อบกพร่องผ่าน USB ได้ หากต้องการใช้ฟีเจอร์นี้ ให้เปลี่ยนไปเป็นผู้ใช้หลัก" "ขยายจนเต็มหน้าจอ" "ยืดจนเต็มหน้าจอ" "กำลังบันทึกภาพหน้าจอ..." @@ -353,10 +353,10 @@ "ค้นหา" "เลื่อนขึ้นเพื่อ %s" "เลื่อนไปทางซ้ายเพื่อ %s" - "คุณจะไม่ถูกรบกวนจากเสียงและการสั่น ยกเว้นเสียงนาฬิกาปลุก การช่วยเตือน กิจกรรม และผู้โทรที่ระบุไว้ คุณจะยังคงได้ยินสิ่งที่คุณเลือกเล่น เช่น เพลง วิดีโอ และเกม" - "คุณจะไม่ถูกรบกวนจากเสียงและการสั่น ยกเว้นเสียงนาฬิกาปลุก คุณจะยังคงได้ยินสิ่งที่คุณเลือกเล่น เช่น เพลง วิดีโอ และเกม" + "คุณจะไม่ถูกรบกวนจากเสียงและการสั่น ยกเว้นเสียงนาฬิกาปลุก การช่วยเตือน กิจกรรม และผู้โทรที่ระบุไว้ คุณจะยังคงได้ยินสิ่งที่คุณเลือกเล่น เช่น เพลง วิดีโอ และเกม" + "คุณจะไม่ถูกรบกวนจากเสียงและการสั่น ยกเว้นเสียงนาฬิกาปลุก คุณจะยังคงได้ยินสิ่งที่คุณเลือกเล่น เช่น เพลง วิดีโอ และเกม" "กำหนดค่า" - "การใช้โหมดนี้จะบล็อกเสียงและการสั่นทั้งหมด ซึ่งรวมถึงเสียงปลุก เพลง วิดีโอ และเกม คุณจะยังโทรออกได้อยู่" + "การตั้งค่านี้จะบล็อกเสียงและการสั่นทั้งหมด ซึ่งรวมถึงเสียงปลุก เพลง วิดีโอ และเกม คุณจะยังสามารถโทรออกได้อยู่" "การใช้โหมดนี้จะบล็อกเสียงและการสั่นทั้งหมด ซึ่งรวมถึงเสียงปลุก เพลง วิดีโอ และเกม" "+%d" "การแจ้งเตือนที่เร่งด่วนน้อยด้านล่าง" @@ -456,7 +456,7 @@ "เรียนรู้เพิ่มเติม" "คุณเชื่อมต่อกับ %1$s ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายของคุณ รวมถึงอีเมล แอป และเว็บไซต์ได้" " " - "เปิดการตั้งค่า VPN" + "เปิดการตั้งค่า VPN" " " "เปิดข้อมูลรับรองที่เชื่อถือได้" "ผู้ดูแลระบบได้เปิดการทำบันทึกเครือข่าย ซึ่งจะติดตามดูการรับส่งข้อมูลบนอุปกรณ์ของคุณ\n\nโปรดติดต่อผู้ดูแลระบบสำหรับข้อมูลเพิ่มเติม" @@ -556,8 +556,8 @@ "แอปนี้ไม่มีหมวดหมู่การแจ้งเตือน" "ไม่สามารถปิดการแจ้งเตือนจากแอปนี้" - การแจ้งเตือน 1 ใน %d หมวดหมู่จากแอปนี้ - การแจ้งเตือน 1 ใน %d หมวดหมู่จากแอปนี้ + การแจ้งเตือน 1 ใน %s หมวดหมู่จากแอปนี้ + การแจ้งเตือน 1 ใน %s หมวดหมู่จากแอปนี้ "%1$s, %2$s" @@ -585,8 +585,8 @@ %d นาที "การใช้งานแบตเตอรี่" - "ไม่สามารถใช้โหมดประหยัดแบตเตอรี่ระหว่างการชาร์จ" - "โหมดประหยัดแบตเตอรี่" + "ไม่สามารถใช้โหมดประหยัดแบตเตอรี่ระหว่างการชาร์จ" + "โหมดประหยัดแบตเตอรี่" "ลดประสิทธิภาพการทำงานและข้อมูลแบ็กกราวด์" "ปุ่ม %1$s" "Home" @@ -726,9 +726,9 @@ "ย่อเล็กสุด" "ปิด" "ลากลงเพื่อปิด" - "เมนูการแสดงภาพซ้อนภาพ" + "เมนู" "%s ใช้การแสดงภาพซ้อนภาพ" - "หากคุณไม่ต้องการให้ %s ใช้ฟีเจอร์นี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดฟีเจอร์" + "หากคุณไม่ต้องการให้ %s ใช้ฟีเจอร์นี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดฟีเจอร์" "เล่น" "หยุดชั่วคราว" "ข้ามไปรายการถัดไป" @@ -754,6 +754,7 @@ "เมนู" "แอป %1$s" "การแจ้งเตือน" + "แบตเตอรี" "ภาพหน้าจอ" "ข้อความทั่วไป" "พื้นที่เก็บข้อมูล" @@ -774,4 +775,5 @@ "แอปที่กำลังทำงานในเบื้องหลัง" "แตะเพื่อดูรายละเอียดเกี่ยวกับแบตเตอรี่และปริมาณการใช้อินเทอร์เน็ต" "ปิดอินเทอร์เน็ตมือถือไหม" + "เนื่องจากแอปหนึ่งได้บดบังคำขอสิทธิ์ ระบบจึงไม่สามารถยืนยันคำตอบของคุณสำหรับการตั้งค่าได้" diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 8e8c6f6493979ae3b30de3abdb64ae41cf735984..261bccf5ca8b02bf60177793c8bdc7d29e14368a 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -64,7 +64,7 @@ "Ang RSA key fingerprint ng computer ay:\n%1$s" "Palaging payagan mula sa computer na ito" "Hindi pinapayagan ang pagde-debug sa pamamagitan ng USB" - "Hindi maaaring i-on ng user na kasalukuyang naka-sign in sa device na ito ang pagde-debug sa pamamagitan ng USB. Upang magamit ang feature na ito, mangyaring lumipat sa isang user na Admin." + "Hindi mao-on ng user na kasalukuyang naka-sign in sa device na ito ang pag-debug ng USB. Upang magamit ang feature na ito, lumipat sa pangunahing user." "I-zoom upang punan screen" "I-stretch upang mapuno screen" "Sine-save ang screenshot…" @@ -353,10 +353,10 @@ "Maghanap" "Mag-slide pataas para sa %s." "Mag-slide pakaliwa para sa %s." - "Hindi ka maiistorbo ng mga tunog at pag-vibrate, maliban sa mga alarm, paalala, kaganapan, at tumatawag na tutukuyin mo. Maririnig mo pa rin ang anumang pipiliin mong i-play kabilang ang musika, mga video, at mga laro." - "Hindi ka maiistorbo ng mga tunog at pag-vibrate, maliban sa mga alarm. Maririnig mo pa rin ang anumang pipiliin mong i-play kabilang ang musika, mga video, at mga laro." + "Hindi ka maiistorbo ng mga tunog at pag-vibrate, maliban mula sa mga alarm, paalala, kaganapan, at tumatawag na tutukuyin mo. Maririnig mo pa rin ang kahit na anong piliin mong i-play kabilang ang mga musika, video, at laro." + "Hindi ka maiistorbo ng mga tunog at pag-vibrate, maliban sa mga alarm. Maririnig mo pa rin ang anumang pipiliin mong i-play kabilang ang mga musika, video, at laro." "I-customize" - "Bina-block nito ang LAHAT ng tunog at pag-vibrate, kabilang ang mula sa mga alarm, musika, video at laro. Magagawa mo pa ring tumawag." + "Bina-block nito ang LAHAT ng tunog at pag-vibrate, kabilang ang mula sa mga alarm, musika, video, at laro. Makakatawag ka pa rin." "Bina-block nito ang LAHAT ng tunog at pag-vibrate, kabilang ang mula sa mga alarm, musika, video at laro." "+%d" "Nasa ibaba ang mga notification na hindi masyadong mahalaga" @@ -456,7 +456,7 @@ "Matuto pa" "Kumonekta ka sa %1$s, na maaaring sumubaybay sa iyong aktibidad sa network, kasama ang mga email, app at website." " " - "Buksan ang Mga Setting ng VPN" + "Buksan ang mga setting ng VPN" " " "Buksan ang mga pinagkakatiwalaang kredensyal" "Na-on ng iyong admin ang pag-log sa network, na sumusubaybay sa trapiko ng device mo.\n\nPara sa higit pang impormasyon, makipag-ugnayan sa iyong admin." @@ -556,8 +556,8 @@ "Walang kategorya ng notification ang app na ito" "Hindi maaaring i-off ang mga notification mula sa app na ito" - 1 sa %d kategorya ng notification mula sa app na ito - 1 sa %d na kategorya ng notification mula sa app na ito + 1 sa %s kategorya ng notification mula sa app na ito + 1 sa %s na kategorya ng notification mula sa app na ito "%1$s, %2$s" @@ -585,8 +585,8 @@ %d na minuto "Paggamit ng baterya" - "Hindi available ang Pangtipid sa Baterya kapag nagcha-charge" - "Pangtipid sa Baterya" + "Hindi available ang pangtipid sa baterya kapag nagcha-charge" + "Pangtipid sa baterya" "Binabawasan ang performance at data sa background" "Button na %1$s" "Home" @@ -726,9 +726,9 @@ "I-minimize" "Isara" "I-drag pababa upang i-dismiss" - "Menu ng picture in picture" + "Menu" "Nasa picture-in-picture ang %s" - "Kung ayaw mong gamitin ng %s ang feature na ito, i-tap upang buksan ang mga setting at i-off ito." + "Kung ayaw mong magamit ni %s ang feature na ito, i-tap upang buksan ang mga setting at i-off ito." "I-play" "I-pause" "Lumaktaw sa susunod" @@ -754,6 +754,7 @@ "Menu" "%1$s app" "Mga Alerto" + "Baterya" "Mga Screenshot" "Mga Pangkalahatang Mensahe" "Storage" @@ -774,4 +775,5 @@ "Tumatakbo ang mga app sa background" "I-tap para sa mga detalye tungkol sa paggamit ng baterya at data" "I-off ang mobile data?" + "Hindi ma-verify ng Mga Setting ang iyong tugon dahil may app na tumatakip sa isang kahilingan sa pagpapahintulot." diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index a451b90c11532ef72eba79096614411c9a00a466..450a3102c02030920e85033aed607f8c4b62fd0e 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -64,7 +64,7 @@ "Bilgisayarın RSA anahtarı parmak izi:\n%1$s" "Bu bilgisayardan her zaman izin ver" "USB hata ayıklama işlevine izin verilmiyor" - "Şu anda bu cihazda oturum açan kullanıcı, USB hata ayıklamayı açamaz. Bu özelliği kullanabilmek için lütfen Yönetici olan kullanıcıya geçin." + "Bu cihazda geçerli olarak oturum açmış olan kullanıcı, USB hata ayıklama özelliğini açamaz. Bu özelliği kullanmak için birincil kullanıcıya geçin." "Yakınlaştır (ekranı kaplasın)" "Genişlet (ekran kapansın)" "Ekran görüntüsü kaydediliyor..." @@ -353,10 +353,10 @@ "Ara" "%s için yukarı kaydırın." "%s için sola kaydırın." - "Alarmlar, hatırlatıcılar, etkinlikler ve sizin seçtiğiniz arayan kişiler dışında hiçbir ses ve titreşimle rahatsız edilmeyeceksiniz. O sırada çaldığınız, seyrettiğiniz ya da oynadığınız müzik, video ve oyunların sesini duymaya devam edeceksiniz" - "Alarmlar dışında hiçbir ses ve titreşimle rahatsız edilmeyeceksiniz. O sırada çaldığınız, seyrettiğiniz ya da oynadığınız müzik, video ve oyunların sesini duymaya devam edeceksiniz." + "Alarmlar, hatırlatıcılar, etkinlikler ve sizin seçtiğiniz kişilerden gelen çağrılar dışında hiçbir ses ve titreşimle rahatsız edilmeyeceksiniz. O sırada çaldığınız müzik, seyrettiğiniz video ya da oynadığınız oyunların sesini duymaya devam edeceksiniz." + "Alarmlar dışında hiçbir ses ve titreşimle rahatsız edilmeyeceksiniz. O sırada çaldığınız müzik, seyrettiğiniz video ya da oynadığınız oyunların sesini duymaya devam edeceksiniz." "Özelleştir" - "Bu seçenek TÜM sesleri ve titreşimleri engeller. Buna alarmlar, müzik, videolar ve oyunlar dahildir. Telefon aramaları yapmaya devam edebileceksiniz." + "Bu seçenek TÜM sesleri ve titreşimleri engeller. Buna alarmlar, müzik, videolar ve oyunlar dahildir. Telefon aramaları yapmaya devam edebilirsiniz." "Bu seçenek TÜM sesleri ve titreşimleri engeller. Buna alarmlar, müzik, videolar ve oyunlar dahildir." "+%d" "Daha az acil bildirimler aşağıdadır" @@ -456,7 +456,7 @@ "Daha fazla bilgi" "E-postalarınız, uygulamalarınız ve web siteleriniz de dahil olmak üzere ağ etkinliğinizi takip edebilen %1$s ağına bağlısınız." " " - "VPN Ayarlarını aç" + "VPN ayarlarını aç" " " "Güvenilir kimlik bilgilerini aç" "Yöneticiniz,cihazınızdaki trafiği izleyen ağ günlük kaydını açtı.\n\nDaha fazla bilgi için yöneticinizle iletişim kurun." @@ -556,8 +556,8 @@ "Bu uygulamanın bildirim kategorisi yok" "Bu uygulamanın bildirimleri kapatılamaz" - Bu uygulamadaki %d bildirim kategorisinden 1 tanesi - Bu uygulamadaki %d bildirim kategorisinden 1 tanesi + Bu uygulamadaki %s bildirim kategorisinden 1 tanesi + Bu uygulamadaki %s bildirim kategorisinden 1 tanesi "%1$s, %2$s" @@ -585,8 +585,8 @@ %d dakika "Pil kullanımı" - "Şarj sırasında Pil Tasarrufu özelliği kullanılamaz" - "Pil Tasarrufu" + "Şarj sırasında Pil tasarrufu özelliği kullanılamaz" + "Pil tasarrufu" "Performansı ve arka plan verilerini azaltır" "%1$s düğmesi" "Home" @@ -726,9 +726,9 @@ "Simge durumuna getir" "Kapat" "Kapatmak için aşağıya sürükleyin" - "Pencere içinde pencere menüsü" + "Menü" "%s, pencere içinde pencere özelliğini kullanıyor" - "%s uygulamasının bu özelliği kullanmasını istemiyorsanız dokunarak ayarları açın ve özelliği kapatın." + "%s uygulamasının bu özelliği kullanmasını istemiyorsanız dokunarak ayarları açın ve söz konusu özelliği kapatın." "Oynat" "Duraklat" "Sonrakine atla" @@ -754,6 +754,7 @@ "Menü" "%1$s uygulaması" "Uyarılar" + "Pil" "Ekran görüntüleri" "Genel Mesajlar" "Depolama alanı" @@ -774,4 +775,5 @@ "Arka planda çalışan uygulamalar" "Pil ve veri kullanımı ile ilgili ayrıntılar için dokunun" "Mobil veri kapatılsın mı?" + "Bir uygulama bir izin isteğinin anlaşılmasını engellediğinden, Ayarlar, yanıtınızı doğrulayamıyor." diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 140fcca0d13d4f873f45253d0d97616dc70a54d1..cc14af62d85b010611a0d78ed63dbef5468b793c 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -66,7 +66,7 @@ "Цифровий відбиток ключа RSA комп’ютера:\n%1$s" "Завжди дозволяти з цього комп’ютера" "Ви не можете вмикати налагодження USB" - "Користувач поточного облікового запису не може вмикати налагодження USB. Щоб увімкнути цю функцію, увійдіть в обліковий запис адміністратора." + "Користувач поточного облікового запису не може вмикати налагодження USB. Щоб увімкнути цю функцію, увійдіть в обліковий запис основного користувача." "Масштабув. на весь екран" "Розтягнути на весь екран" "Збереження знімка екрана..." @@ -359,10 +359,10 @@ "Пошук" "Проведіть пальцем угору, щоб %s." "Проведіть пальцем ліворуч, щоб %s." - "Ви отримуватиме звукові та вібросигнали лише для вибраних будильників, нагадувань, подій і абонентів. Однак ви чутимете все, що захочете відтворити, зокрема музику, відео й ігри." - "Ви отримуватиме звукові та вібросигнали лише для будильників. Однак ви чутимете все, що захочете відтворити, зокрема музику, відео й ігри." + "Ви отримуватиме звукові та вібросигнали лише для вибраних будильників, нагадувань, подій і абонентів. Однак ви чутимете все, що захочете відтворити, зокрема музику, відео й ігри." + "Ви отримуватиме звукові та вібросигнали лише для будильників. Однак ви чутимете все, що захочете відтворити, зокрема музику, відео й ігри." "Налаштувати" - "Блокуватимуться ВСІ звукові та вібросигнали, зокрема будильники, музика, відео й ігри. Ви зможете телефонувати." + "Блокуватимуться ВСІ звукові та вібросигнали, зокрема будильники, музика, відео й ігри. Однак ви зможете телефонувати." "Блокуватимуться ВСІ звукові та вібросигнали, зокрема будильники, музика, відео й ігри." "+%d" "Менше термінових сповіщень нижче" @@ -462,7 +462,7 @@ "Докладніше" "Під’єднано додаток %1$s, який може відстежувати вашу активність у мережі, як-от доступ до електронної пошти, додатків і веб-сайтів." " " - "Відкрити налаштування мережі VPN" + "Відкрити налаштування мережі VPN" " " "Відкрити надійні облікові дані" "Ваш адміністратор увімкнув реєстрацію в мережі, під час якої на вашому пристрої відстежується трафік.\n\nЩоб дізнатися більше, зв’яжіться з адміністратором." @@ -562,10 +562,10 @@ "У цьому додатку немає категорій сповіщень" "Сповіщення з цього додатка не можна вимкнути" - 1 з %d категорії сповіщень із цього додатка - 1 з %d категорій сповіщень із цього додатка - 1 з %d категорій сповіщень із цього додатка - 1 з %d категорії сповіщень із цього додатка + 1 з %s категорії сповіщень із цього додатка + 1 з %s категорій сповіщень із цього додатка + 1 з %s категорій сповіщень із цього додатка + 1 з %s категорії сповіщень із цього додатка "%1$s, %2$s" @@ -599,8 +599,8 @@ %d хвилини "Використання заряду" - "Режим енергозбереження не можна ввімкнути під час заряджання" - "Режим енергозбереження" + "Режим економії заряду акумулятора не працює під час заряджання" + "Режим економії заряду акумулятора" "Знижується продуктивність і обмежується обмін даними у фоновому режимі" "Кнопка %1$s" "Home" @@ -740,9 +740,9 @@ "Згорнути" "Закрити" "Перетягніть униз, щоб закрити" - "Меню \"Картинка в картинці\"" + "Меню" "У додатку %s є функція \"Картинка в картинці\"" - "Щоб у додатку %s не працювала ця функція, вимкніть її в налаштуваннях." + "Щоб додаток %s не використовував цю функцію, вимкніть її в налаштуваннях." "Відтворити" "Призупинити" "Перейти далі" @@ -768,6 +768,7 @@ "Меню" "Додаток %1$s" "Сповіщення" + "Акумулятор" "Знімки екрана" "Загальні повідомлення" "Пам’ять" @@ -788,4 +789,5 @@ "Додатки, які працюють у фоновому режимі" "Торкніться, щоб перевірити використання акумулятора й трафік" "Вимкнути мобільний трафік?" + "Не вдається підтвердити вашу відповідь у налаштуваннях, оскільки інший додаток заступає запит на дозвіл." diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 0415f878e6931f54991b14d9a64e5575c476e19c..aa2eee4e918f74b4f95eba0c58b9a9aa95abc837 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -64,7 +64,7 @@ "‏کمپیوٹر کے RSA کا کلیدی فنگر پرنٹ ہے:\n%1$s" "اس کمپیوٹر سے ہمیشہ اجازت دیں" "‏USB ڈیبگ کرنے کی اجازت نہیں ہے" - "‏اس آلہ پر فی الحال سائن ان کردہ صارف USB ڈیبگ کرنا آن نہیں کر سکتا۔ اس خصوصیت کو استعمال کرنے کیلئے ایڈمن صارف پر سوئچ کریں۔" + "‏اس آلہ پر فی الحال سائن ان کردہ صارف USB ڈیبگنگ آن نہیں کر سکتا۔ اس خصوصیت کا استعمال کرنے کیلئے، ابتدائی صارف پر سوئچ کریں۔" "پوری سکرین پر زوم کریں" "پوری سکرین پر پھیلائیں" "اسکرین شاٹ محفوظ ہو رہا ہے…" @@ -353,10 +353,10 @@ "تلاش کریں" "%s کیلئے اوپر سلائیڈ کریں۔" "%s کیلئے بائیں سلائیڈ کریں۔" - "الارمز، یاد دہانیوں، ایونٹس اور آپ کے متعین کردہ کالرز کے علاوہ، آپ آوازوں اور وائبریشنز سے ڈسٹرب نہیں ہوں گے۔ موسیقی، ویڈیوز اور گیمز سمیت آپ ابھی بھی ہر وہ چیز سنیں گے جسے چلانے کا آپ انتخاب کرتے ہیں۔" - "الارمز کے علاوہ، آپ آوازوں اور وائبریشنز سے ڈسٹرب نہیں ہوں گے۔ موسیقی، ویڈیوز اور گیمز سمیت آپ ہر وہ چیز سنیں گے جسے چلانے کا آپ انتخاب کرتے ہیں۔" + "الارمز، یاددہانیوں، ایونٹس اور آپ کے متعین کردہ کالرز کے علاوہ، آپ آوازوں اور وائبریشنز سے ڈسٹرب نہیں ہوں گے۔ موسیقی، ویڈیوز اور گیمز سمیت آپ ابھی بھی ہر وہ چیز سنیں گے جسے چلانے کا آپ انتخاب کرتے ہیں۔" + "الارمز کے علاوہ، آپ آوازوں اور وائبریشنز سے ڈسٹرب نہیں ہوں گے۔ موسیقی، ویڈیوز اور گیمز سمیت آپ ہر وہ چیز سنیں گے جسے چلانے کا آپ انتخاب کرتے ہیں۔" "حسب ضرورت بنائیں" - "یہ الارمز، موسیقی، ویڈیوز اور گیمز کی آوازوں اور وائبریشنز سمیت سبھی آوازیں اور وائبریشنز مسدود کر دیتا ہے۔ آپ ابھی بھی فون کالز کر سکیں گے۔" + "یہ الارمز، موسیقی، ویڈیوز اور گیمز کی آوازوں اور وائبریشنز سمیت سبھی آوازیں اور وائبریشنز مسدود کر دیتا ہے۔ آپ ابھی بھی فون کالز کر سکیں گے۔" "یہ الارمز، موسیقی، ویڈیوز اور گیمز کی آوازوں اور وائبریشنز سمیت سبھی آوازیں اور وائبریشنز مسدود کر دیتا ہے۔" "‎+%d‎" "کم اہم اطلاعات ذیل میں ہیں" @@ -456,7 +456,7 @@ "مزید جانیں" "آپ %1$s سے منسلک ہیں جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔" " " - "‏VPN کی ترتیبات کھولیں" + "‏VPN کی ترتیبات کھولیں" " " "بھروسے مند استناد کھولیں" "آپ کے ایڈمن نے نیٹ ورک لاگنگ آن کر دی ہے، جو آپ کے آلہ پر ٹریفک کو مانیٹر کرتی ہے۔\n\nمزید معلومات کیلئے اپنے ایڈمن سے رابطہ کریں۔" @@ -556,8 +556,8 @@ "اس ایپ میں اطلاعاتی زمرے نہیں ہیں" "اس ایپ کی اطلاعات کو آف نہیں کیا جا سکتا" - اس ایپ کے %d اطلاعاتی زمروں میں سے 1 - اس ایپ کے %d اطلاعاتی زمرے میں سے 1 + اس ایپ کے %s اطلاعاتی زمروں میں سے 1 + اس ایپ کے %s اطلاعاتی زمرے میں سے 1 "%1$s، %2$s" @@ -585,8 +585,8 @@ ‏‎%d منٹ "بیٹری کا استعمال" - "چارجنگ کے دوران بیٹری سیور دستیاب نہیں ہے" - "بیٹری سیور" + "چارجنگ کے دوران بیٹری سیور دستیاب نہیں ہے" + "بیٹری سیور" "کارکردگی اور پس منظر کا ڈیٹا کم کر دیتا ہے" "بٹن %1$s" "Home" @@ -726,9 +726,9 @@ "چھوٹی کریں" "بند کریں" "برخاست کرنے کیلئے نیچے گھسیٹیں" - "تصویر کے مینو میں تصویر" + "مینو" "%s تصویر میں تصویر میں ہے" - "اگر آپ نہیں چاہتے ہیں کہ %s اس خصوصیت کا استعمال کرے تو ترتیبات کھولنے کیلئے تھپتھپائیں اور اسے آف کر دیں۔" + "اگر آپ نہیں چاہتے ہیں کہ %s اس خصوصیت کا استعمال کرے تو ترتیبات کھولنے کے لیے تھپتھپا کر اسے آف کرے۔" "چلائیں" "موقوف کریں" "نظرانداز کرکے اگلے پر جائیں" @@ -754,6 +754,7 @@ "مینو" "%1$s ایپ" "الرٹس" + "بیٹری" "اسکرین شاٹس" "عمومی پیغامات" "اسٹوریج" @@ -774,4 +775,5 @@ "ایپس پس منظر میں چل رہی ہیں" "بیٹری اور ڈیٹا استعمال کے بارے میں تفصیلات کے لیے تھپتھپائیں" "موبائل ڈیٹا آف کریں؟" + "چونکہ ایک ایپ اجازت کی درخواست کو مبہم کر رہی ہے، لہذا ترتیبات آپ کے جواب کی توثیق نہیں کر سکتی ہیں۔" diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 383faa4bc6e17b6171114df79af9abedc58fd8b4..11be06486d81aec2fd2f4664f908ed86c63a1d25 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -64,7 +64,7 @@ "Kompyuterning RSA tugmasi barmoq izlari:\n%1$s" "Doimo ushbu kompyuterdan ruxsat berilsin" "USB orqali nosozliklarni tuzatishga ruxsat berilmagan" - "Bu qurilmaga ayni paytda o‘z hisobi bilan kirgan foydalanuvchi USB orqali tuzatish funksiyasini faollashtira olmaydi. Undan foydalanish uchun administrator profiliga o‘ting." + "Ayni paytda ushbu qurilmaga o‘z hisobi bilan kirgan foydalanuvchi USB orqali nosozliklarni tuzatish funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun asosiy foydalanuvchi profiliga o‘ting." "Ekranga moslashtirish" "Ekran hajmida cho‘zish" "Skrinshot saqlanmoqda…" @@ -338,7 +338,7 @@ "“%s” ilovasini ishga tushirib bo‘lmadi." "Xavfsiz rejimda %s ilovasi o‘chirib qo‘yildi." "Hammasini tozalash" - "Ekranni bo‘lish xususiyatidan foydalanish uchun uchun bu yerga torting" + "Ekranni bo‘lish xususiyatidan foydalanish uchun bu yerga torting" "Gorizontal yo‘nalishda bo‘lish" "Vertikal yo‘nalishda bo‘lish" "Boshqa usulda bo‘lish" @@ -355,10 +355,10 @@ "Qidirish" "%s uchun yuqoriga suring." "%s uchun chapga suring." - "Turli ovoz va tebranishlar endi sizni bezovta qilmaydi. Biroq, signallar, eslatmalar, tadbirlar haqidagi bildirishnomalar va siz tanlagan abonentlardan kelgan chaqiruvlar bundan mustasno. Lekin, ijro etiladigan barcha narsalar, jumladan, musiqa, video va o‘yinlar eshitiladi." - "Turli ovoz va tebranishlar endi sizni bezovta qilmaydi. Biroq, signallar bundan mustasno. Lekin, ijro etiladigan barcha narsalar, jumladan, musiqa, video va o‘yinlar eshitiladi." + "Turli ovoz va tebranishlar endi sizni bezovta qilmaydi. Biroq, signallar, eslatmalar, tadbirlar haqidagi bildirishnomalar va siz tanlagan abonentlardan kelgan chaqiruvlar bundan mustasno. Lekin, ijro etiladigan barcha narsalar, jumladan, musiqa, video va o‘yinlar ovozi eshitiladi." + "Turli ovoz va tebranishlar endi sizni bezovta qilmaydi. Biroq, signallar bundan mustasno. Lekin, ijro etiladigan barcha narsalar, jumladan, musiqa, video va o‘yinlar ovozi eshitiladi." "Sozlash" - "Bu BARCHA, jumladan signallar, musiqa, videolar va o‘yinlardan keladigan tovush va tebranishlarni to‘sib qo‘yadi. Siz telefon qo‘ng‘iroqlarini bemalol amalga oshirishingiz mumkin." + "Bu rejimda BARCHA ovoz va tebranishlar, jumladan, signal, musiqa va o‘yinlar ovozi ham o‘chirib qo‘yiladi. Shunday bo‘lsa-da, chaqiruvlarni bemalol amalga oshirishingiz mumkin." "Bu BARCHA, jumladan, signallar, musiqa, videolar va o‘yinlardan keladigan tovush va tebranishlarni to‘sib qo‘yadi." "+%d" "Kam ahamiyatli bildirishnomalarni pastda ko‘rsatish" @@ -458,7 +458,7 @@ "Batafsil" "%1$s ilovasi ishga tushirilgan. U internetdagi harakatlaringiz, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin." " " - "VPN sozlamalarini ochish" + "VPN sozlamalarini ochish" " " "Ishonchli sertifikatlarni ochish" "Administrator qurilmangizdagi trafikni nazorat qiluvchi tarmoq jurnalini yoqdi.\n\nBatafsil ma’lumot olish uchun administratoringizga murojaat qiling." @@ -558,8 +558,8 @@ "Bu ilovada bildirishnomalar turkumi yo‘q" "Bu ilova bildirishnomalarini o‘chirib bo‘lmaydi" - Bu ilovadagi %d ta bildirishnomalar turkumidan 1 tasi - Bu ilovadagi %d ta bildirishnomalar turkumidan 1 tasi + Bu ilovadagi %s ta bildirishnomalar turkumidan 1 tasi + Bu ilovadagi %s ta bildirishnomalar turkumidan 1 tasi "%1$s, %2$s" @@ -587,8 +587,8 @@ %d daqiqa "Batareya sarfi" - "Quvvat tejash rejimidan quvvatlash vaqtida foydalanib bo‘lmaydi" - "Quvvat tejash rejimi" + "Quvvat tejash rejimidan quvvatlash vaqtida foydalanib bo‘lmaydi" + "Quvvat tejash rejimi" "Unumdorlik pasayadi va fonda internetdan foydalanish cheklanadi" "%1$s tugmasi" "Bosh ekran" @@ -728,9 +728,9 @@ "Yig‘ish" "Yopish" "Yopish uchun pastga torting" - "Tasvir ustida tasvir menyusi" + "Menyu" "%s tasvir ustida tasvir rejimida" - "%s ilovasi uchun bu funksiyani sozlamalar orqali o‘chirib qo‘yish mumkin." + "%s ilovasi uchun bu funksiyani sozlamalar orqali faolsizlantirish mumkin." "Ijro" "Pauza" "Keyingisiga o‘tish" @@ -756,6 +756,7 @@ "Menyu" "%1$s ilovasi" "Ogohlantirishlar" + "Batareya" "Skrinshotlar" "Umumiy xabarlar" "Xotira" @@ -776,4 +777,5 @@ "Fonda ishlayotgan ilovalar" "Batareya va trafik sarfi tafsilotlari uchun ustiga bosing" "Mobil internet o‘chirib qo‘yilsinmi?" + "Ilova ruxsatnoma so‘roviga xalaqit qilayotgani tufayli, “Sozlamalar” ilovasi javobingizni tekshira olmaydi." diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 5cce979c08d240295c84d7fb6d5679552c011237..5b5cc61245707917ed8401c4e2c03e9ef57bd9e5 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -64,7 +64,7 @@ "Tệp tham chiếu khóa RSA của máy tính là:\n%1$s" "Luôn cho phép từ máy tính này" "Tính năng gỡ lỗi USB không được phép" - "Người dùng hiện đã đăng nhập vào thiết bị này không thể bật gỡ lỗi USB. Để sử dụng tính năng này, vui lòng chuyển đổi sang người dùng Quản trị." + "Người dùng hiện đã đăng nhập vào thiết bị này không thể bật tính năng gỡ lỗi USB. Để sử dụng tính năng này, hãy chuyển sang người dùng chính." "T.phóng để lấp đầy m.hình" "Giãn ra để lấp đầy m.hình" "Đang lưu ảnh chụp màn hình..." @@ -353,10 +353,10 @@ "Tìm kiếm" "Trượt lên để %s." "Trượt sang trái để %s." - "Bạn sẽ không bị làm phiền bởi âm thanh và tiếng rung, ngoại trừ báo thức, nhắc nhở, sự kiện và người gọi mà bạn chỉ định. Bạn sẽ vẫn nghe thấy mọi thứ bạn chọn phát, bao gồm nhạc, video và trò chơi." - "Bạn sẽ không bị làm phiền bởi âm thanh và tiếng rung, ngoại trừ báo thức. Bạn sẽ vẫn nghe thấy mọi thứ bạn chọn phát, bao gồm nhạc, video và trò chơi." + "Bạn sẽ không bị làm phiền bởi âm thanh và tiếng rung, ngoại trừ báo thức, lời nhắc, sự kiện và người gọi mà bạn chỉ định. Bạn sẽ vẫn nghe thấy mọi thứ bạn chọn phát, bao gồm nhạc, video và trò chơi." + "Bạn sẽ không bị làm phiền bởi âm thanh và tiếng rung, ngoại trừ báo thức. Bạn sẽ vẫn nghe thấy mọi thứ bạn chọn phát, bao gồm nhạc, video và trò chơi." "Tùy chỉnh" - "Chế độ này sẽ chặn TẤT CẢ âm thanh và tiếng rung, bao gồm báo thức, âm nhạc, video và trò chơi. Bạn vẫn có thể gọi điện thoại." + "Chế độ này sẽ chặn TẤT CẢ âm thanh và tiếng rung, bao gồm báo thức, nhạc, video và trò chơi. Bạn vẫn có thể gọi điện thoại." "Chế độ này sẽ chặn TẤT CẢ âm thanh và tiếng rung, bao gồm báo thức, âm nhạc, video và trò chơi." "+%d" "Thông báo ít khẩn cấp hơn bên dưới" @@ -456,7 +456,7 @@ "Tìm hiểu thêm" "Bạn đang kết nối với %1$s. Ứng dụng này có thể giám sát hoạt động mạng của bạn, bao gồm email, ứng dụng và trang web." " " - "Mở cài đặt VPN" + "Mở cài đặt VPN" " " "Mở thông tin xác thực tin cậy" "Quản trị viên đã bật tính năng ghi nhật ký mạng. Tính năng này giám sát lưu lượng truy cập trên thiết bị của bạn.\n\nĐể biết thêm thông tin, hãy liên hệ với quản trị viên của bạn." @@ -558,8 +558,8 @@ "Ứng dụng này không có loại thông báo" "Không thể tắt thông báo từ ứng dụng này" - 1 trên tổng số %d loại thông báo từ ứng dụng này - 1 trên tổng số %d loại thông báo từ ứng dụng này + 1 trên tổng số %s loại thông báo từ ứng dụng này + 1 trên tổng số %s loại thông báo từ ứng dụng này "%1$s, %2$s" @@ -587,8 +587,8 @@ %d phút "Mức sử dụng pin" - "Trình tiết kiệm pin không khả dụng trong khi sạc" - "Trình tiết kiệm pin" + "Không sử dụng được trình tiết kiệm pin trong khi sạc" + "Trình tiết kiệm pin" "Giảm hiệu suất và dữ liệu nền" "Nút %1$s" "Home" @@ -728,9 +728,9 @@ "Thu nhỏ" "Đóng" "Kéo xuống để loại bỏ" - "Menu ảnh trong ảnh" + "Menu" "%s đang ở chế độ ảnh trong ảnh" - "Nếu bạn không muốn %s sử dụng tính năng này, hãy nhấn để mở cài đặt và tắt tính năng này." + "Nếu bạn không muốn %s sử dụng tính năng này, hãy nhấn để mở cài đặt và tắt tính năng này." "Phát" "Tạm dừng" "Chuyển tới mục tiếp theo" @@ -756,6 +756,7 @@ "Menu" "Ứng dụng %1$s" "Cảnh báo" + "Pin" "Ảnh chụp màn hình" "Thông báo chung" "Bộ nhớ" @@ -776,4 +777,5 @@ "Ứng dụng đang chạy trong nền" "Nhấn để biết chi tiết về mức sử dụng dữ liệu và pin" "Tắt dữ liệu di động?" + "Vì ứng dụng đang che khuất yêu cầu cấp quyền nên Cài đặt không thể xác minh câu trả lời của bạn." diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 75dd3d7767b1fc6fde004bc4387d00e4b2e1fee9..38c501beb8c8b397c95a96e0ca9439066e907ca1 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -64,7 +64,7 @@ "这台计算机的 RSA 密钥指纹如下:\n%1$s" "一律允许使用这台计算机进行调试" "不允许使用 USB 调试功能" - "当前登录了此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为管理员用户。" + "目前已登录此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为主要用户的帐号。" "缩放以填满屏幕" "拉伸以填满屏幕" "正在保存屏幕截图..." @@ -353,10 +353,10 @@ "搜索" "向上滑动以%s。" "向左滑动以%s。" - "您将不会受到声音和振动的打扰(闹钟、提醒、活动和所指定来电者的相关提示音除外)。您依然可以听到您选择播放的任何内容(包括音乐、视频和游戏)的相关音效。" - "您将不会受到声音和振动的打扰(闹钟提示音除外)。您依然可以听到您选择播放的任何内容(包括音乐、视频和游戏)的相关音效。" + "您将不会受到声音和振动的打扰(闹钟、提醒、活动和所指定来电者的相关提示音除外)。您依然可以听到您选择播放的任何内容(包括音乐、视频和游戏)的相关音效。" + "您将不会受到声音和振动的打扰(闹钟提示音除外)。您依然可以听到您选择播放的任何内容(包括音乐、视频和游戏)的相关音效。" "自定义" - "这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。您仍然可以拨打电话。" + "这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。您仍然可以拨打电话。" "这会阻止所有声音和振动(包括闹钟、音乐、视频和游戏)打扰您。" "+%d" "不太紧急的通知会显示在下方" @@ -456,7 +456,7 @@ "了解详情" "您已连接到%1$s,该应用可以监控您的网络活动,包括收发电子邮件、使用应用和浏览网站。" " " - "打开 VPN 设置" + "打开 VPN 设置" " " "打开可信凭据列表" "您的管理员已开启网络日志功能,该功能会监控您设备上的流量。\n\n如需更多信息,请与您的管理员联系。" @@ -556,8 +556,8 @@ "此应用没有通知类别" "无法关闭来自此应用的通知" - 此应用指定的 1 个通知类别(共 %d 个) - 此应用指定的 1 个通知类别(共 %d 个) + 此应用指定的 1 个通知类别(共 %s 个) + 此应用指定的 1 个通知类别(共 %s 个) "%1$s%2$s" @@ -585,8 +585,8 @@ %d 分钟 "电池使用情况" - "充电过程中无法使用省电模式" - "省电模式" + "充电过程中无法使用省电模式" + "省电模式" "降低性能并限制后台流量" "%1$s按钮" "Home" @@ -726,9 +726,9 @@ "最小化" "关闭" "向下拖动即可关闭" - "画中画菜单" + "菜单" "%s目前位于“画中画”中" - "如果您不想让%s使用此功能,请点按以打开设置,然后关闭此功能。" + "如果您不想让“%s”使用此功能,请点按以打开设置,然后关闭此功能。" "播放" "暂停" "跳到下一个" @@ -754,6 +754,7 @@ "菜单" "%1$s应用" "提醒" + "电池" "屏幕截图" "常规消息" "存储空间" @@ -774,4 +775,5 @@ "在后台运行的应用" "点按即可详细了解电量和流量消耗情况" "要关闭移动数据网络吗?" + "由于某个应用遮挡了权限请求界面,因此“设置”应用无法验证您的回应。" diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index beffd2281d416f592a0416050ab9a2e36d65fcfa..3a428276ffbfc3878e60268d4f30fd072077ff84 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -64,7 +64,7 @@ "這部電腦的 RSA 密鑰指紋如下:\n%1$s" "一律允許透過這部電腦進行" "不允許 USB 偵錯" - "目前登入到此裝置的使用者無法啟用 USB 偵錯功能。要使用此功能,請切換為管理員使用者。" + "目前登入此裝置的使用者無法啟用 USB 偵錯功能。如要使用此功能,請切換至主要使用者。" "放大為全螢幕" "放大為全螢幕" "正在儲存螢幕擷取畫面..." @@ -355,10 +355,10 @@ "搜尋" "向上滑動即可%s。" "向左滑動即可%s。" - "您不會受音效和震動騷擾 (鬧鐘、提醒、活動,以及您指定的來電者鈴聲除外)。如果您選擇播放特定音樂、影片和遊戲等內容,仍可以聽到相關音訊。" - "您不會受音效和震動騷擾 (鬧鐘除外)。如果您選擇播放特定音樂、影片和遊戲等內容,仍可以聽到相關音訊。" + "您不會受到聲音和震動騷擾 (鬧鐘、提醒、活動和您指定的來電者鈴聲除外)。當您選擇播放音樂、影片和遊戲等,仍可以聽到該內容的聲音。" + "您不會受到聲音和震動騷擾 (鬧鐘除外)。當您選擇播放音樂、影片和遊戲等,仍可以聽到該內容的聲音。" "自訂" - "這會封鎖所有聲音和震動,包括鬧鐘、音樂、影片和遊戲,但您仍可撥打電話。" + "這會封鎖所有聲音和震動 (包括鬧鐘、音樂、影片及遊戲),但您仍可以撥打電話。" "這會封鎖所有聲音和震動,包括鬧鐘、音樂、影片和遊戲。" "還有 %d 則通知" "不太緊急的通知會在下方顯示" @@ -458,7 +458,7 @@ "瞭解詳情" "您已連接至「%1$s」,此應用程式可以監控您的網絡活動,包括電郵、應用程式及網站。" " " - "開啟 VPN 設定" + "開啟 VPN 設定" " " "開啟信任的憑證" "您的管理員已開啟網絡記錄功能,以監控您裝置上的流量。\n\n如需瞭解詳情,請聯絡您的管理員。" @@ -558,8 +558,8 @@ "此應用程式沒有通知類別" "無法關閉此應用程式的通知" - 此應用程式的 1 個通知類別 (共 %d 個) - 此應用程式的 1 個通知類別 (共 %d 個) + 此應用程式的 1 個通知類別 (共 %s 個) + 此應用程式的 1 個通知類別 (共 %s 個) "%1$s%2$s" @@ -587,8 +587,8 @@ %d 分鐘 "電池用量" - "充電時無法使用「省電模式」" - "省電模式" + "充電時無法使用省電模式" + "省電模式" "降低效能並限制背景數據傳輸" "%1$s 鍵" "Home" @@ -728,9 +728,9 @@ "最小化" "關閉" "向下拖曳即可關閉" - "畫中畫選單" + "選單" "「%s」目前在畫中畫模式" - "如果您不想「%s」使用此功能,請輕按以開啟設定,然後停用此功能。" + "如果您不想「%s」使用此功能,請輕按以開啟設定,然後停用此功能。" "播放" "暫停" "跳到下一個" @@ -756,6 +756,7 @@ "選單" "「%1$s」應用程式" "通知" + "電池" "螢幕擷取畫面" "一般訊息" "儲存空間" @@ -776,4 +777,5 @@ "正在背景中執行的應用程式" "輕按即可查看電池和數據用量詳情" "要關閉流動數據嗎?" + "由於某個應用程式已阻擋權限要求畫面,因此「設定」應用程式無法驗證您的回應。" diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index bfbea1527d8df8d6c8b11cd56a8d9a65f1a9c67a..2152ae353e9385375db9efb21a86a7c6a3d38b71 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -64,7 +64,7 @@ "這台電腦的 RSA 金鑰指紋如下:\n%1$s" "一律允許透過這台電腦進行" "無權使用 USB 偵錯功能" - "這部裝置目前的登入者無法啟用 USB 偵錯功能。如要使用這項功能,請切換成管理員使用者。" + "目前登入這個裝置的使用者無法啟用 USB 偵錯功能。如要使用這項功能,請切換到主要使用者。" "放大為全螢幕" "放大為全螢幕" "正在儲存螢幕擷取畫面…" @@ -353,10 +353,10 @@ "搜尋" "向上滑動即可%s。" "向左滑動即可%s。" - "裝置不會發出音效或震動造成干擾,但會保留鬧鐘、提醒、活動和你指定的來電者響鈴。如果你選擇播放特定音樂、影片和遊戲等內容,還是可以聽見相關音訊。" - "裝置不會發出音效或震動造成干擾,但會保留鬧鐘響鈴。如果你選擇播放特定音樂、影片和遊戲等內容,還是可以聽見相關音訊。" + "裝置不會發出音效或震動造成干擾,但是會保留與鬧鐘、提醒、活動和指定來電者有關的設定。如果你選擇播放音樂、影片和遊戲等內容,還是可以聽見相關音訊。" + "裝置不會發出音效或震動造成干擾,但是會保留鬧鐘響鈴。如果你選擇播放音樂、影片和遊戲等內容,還是可以聽見相關音訊。" "自訂" - "這會封鎖「所有」聲音和震動干擾,包括鬧鐘、音樂、影片和遊戲在內,但你仍然可以撥打電話。" + "這會封鎖「所有」音效和震動干擾,包括鬧鐘、音樂、影片和遊戲在內,但你仍然可以撥打電話。" "這會封鎖「所有」聲音和震動干擾,包括鬧鐘、音樂、影片和遊戲在內。" "還有 %d 則通知" "較不緊急的通知會顯示在下方" @@ -456,7 +456,7 @@ "瞭解詳情" "由於你已連結至「%1$s」,你的網路活動 (包括收發電子郵件、使用應用程式及瀏覽網站) 可能會受到這個應用程式監控。" " " - "開啟 VPN 設定" + "開啟 VPN 設定" " " "開啟信任的憑證" "你的管理員已啟用網路紀錄功能,可監控你裝置的流量。\n\n如需詳細資訊,請與你的管理員聯絡。" @@ -556,8 +556,8 @@ "這個應用程式沒有通知類別" "無法關閉這個應用程式發出的通知" - %d 個通知類別中,有 1 個類別是來自這個應用程式 - %d 個通知類別中,有 1 個類別是來自這個應用程式 + %s 個通知類別中,有 1 個類別是來自這個應用程式 + %s 個通知類別中,有 1 個類別是來自這個應用程式 "%1$s%2$s" @@ -585,8 +585,8 @@ %d 分鐘 "電池用量" - "充電時無法使用節約耗電量模式" - "節約耗電量" + "充電時無法使用節約耗電量模式" + "節約耗電量" "降低效能並限制背景資料傳輸" "%1$s 按鈕" "Home 鍵" @@ -726,9 +726,9 @@ "最小化" "關閉" "向下拖曳即可關閉" - "子母畫面選單" + "選單" "「%s」目前在子母畫面中" - "如果你不想讓「%s」使用這項功能,請輕觸開啟設定頁面,然後停用此功能。" + "如果你不想讓「%s」使用這項功能,請輕觸開啟設定頁面,然後停用此功能。" "播放" "暫停" "跳到下一個" @@ -754,6 +754,7 @@ "選單" "「%1$s」應用程式" "快訊" + "電池" "螢幕擷取畫面" "一般訊息" "儲存空間" @@ -774,4 +775,5 @@ "在背景執行的應用程式" "輕觸即可查看電池和數據用量詳情" "要關閉行動數據嗎?" + "由於某個應用程式覆蓋了權限要求畫面,因此「設定」應用程式無法驗證你的回應。" diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index bd54208b1a13d9a698ac0bb920ccb694497f13ad..de61bf568e44c60ac60dbcda1aae18ae49564144 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -64,7 +64,7 @@ "Izigxivizo zeminwe zokhiye we-RSA wekhompyutha ngu:\n%1$s" "Hlala uvumela njalo kusuka kule khompyutha" "Ukususa iphutha kwe-USB akuvunyelwe" - "Umsebenzisi manje ongene ngemvume kule divayisi akakwazi ukuvula ukususa iphutha kwe-USB. Ukuze usebenzise lesi sici, sicela ushintshele kumsebenzisi ongumlawuli." + "Umsebenzisi manje ongene ngemvume kule divayisi entsha akakwazi ukuvula ukulungisa amaphutha ku-USB. Ukuze usebenzise lesi sici, shintshela kumsebenzisi oyinhloko." "Sondeza ukugcwalisa isikrini" "Nweba ukugcwalisa isikrini" "Ilondoloz umfanekiso weskrini..." @@ -353,10 +353,10 @@ "Sesha" "Shelelisela ngenhla ku-%s." "Shelelisela ngakwesokunxele ku-%s." - "Ngeke uphazanyiswe yimisindo nokudlidliza, ngaphandle kwama-alamu, izikhumbuzi, izehlakalo, nabashayi obacacisayo. Usazokuzwa okuthile okhetha ukudlala kufaka phakathi umculo, amavidiyo, namageyimu." - "Ngeke uphazanyiswe yimisindo nokudlidliza, ngaphandle kwama-alamu. Usazokuzwa okuthile okhetha ukudlala kufaka phakathi umculo, amavidiyo, namageyimu." + "Ngeke uphazanyiswe imisindo nokudlidliza, ngaphandle kusukela kuma-alamu, izikhumbuzi, imicimbi, nabafonayo obacacisayo. Usazozwa noma yini okhetha ukuyidlala okufaka umculo, amavidiyo, namageyimu." + "Ngeke uze uphazanyiswe imisindo nokudlidliza, ngaphandle kusukela kuma-alamu. Usazozwa noma yini okhetha ukuyidlala okufaka umculo, amavidiyo, namageyimu." "Enza ngendlela oyifisayo" - "Lokhu kuvimbela YONKE imisindo nokudludliza, kufaka phakathi ama-alamu, umculo, amavidiyo, namageyimu. Usazokwazi ukwenza amkholi wefoni." + "Lokhu kuvimbela YONKE imisindo nokudlidliza, okufaka kusukela kuma-alamu, umculo, amavidiyo, namageyimu. Usazokwazi ukwenza amakholi efoni." "Lokhu kuvimbela YONKE imisindo nokudlidliza, kufaka phakathi kusuka kuma-alamu, umculo, amavidiyo, namageyimu." "+%d" "Izaziso ezingasheshi kakhulu ezingezansi" @@ -456,7 +456,7 @@ "Funda kabanzi" "Uxhumeke ku-%1$s, engaqapha umsebenzi wenethiwekhi yakho, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi." " " - "Vula izilungiselelo ze-VPN" + "Vula izilungiselelo ze-VPN" " " "Vula ukuqinisekisa okuthenjiwe" "Umlawuli wakho uvule ukungena kwenethiwekhi, okuhlola ithrafikhi kudivayisi yakho.\n\nNgolwazi olubanzi xhumana nomlawuli wakho." @@ -556,8 +556,8 @@ "Lolu hlelo lokusebenza alunazo izigaba zesaziso" "Izaziso kusuka kulolu hlelo lokusebenza azikwazi ukuvalwa" - 1 isigaba kwezingu-%d sezaziso kusukela kulolu hlelo lokusebenza - 1 isigaba kwezingu-%d sezaziso kusukela kulolu hlelo lokusebenza + 1 isigaba kwezingu-%s sezaziso kusukela kulolu hlelo lokusebenza + 1 isigaba kwezingu-%s sezaziso kusukela kulolu hlelo lokusebenza "%1$s, %2$s" @@ -585,8 +585,8 @@ %d amaminithi "Ukusetshenziswa kwebhethri" - "Isilondolozi sebhethri asitholakali ngesikhathi sokushaja" - "Isilondolozi sebhethri" + "Isilondolozi sebhethri asitholakali ngesikhathi sokushaja" + "Isilondolozi sebhethri" "Sehlisa ukusebenza nedatha yasemuva" "Inkinobho %1$s" "Ekhaya" @@ -726,9 +726,9 @@ "Nciphisa" "Vala" "Hudulela phansi ukuze ucashise" - "Isithombe ngemenyu yesithombe ngesithombe" + "Imenyu" "U-%s ungaphakathi kwesithombe esiphakathi kwesithombe" - "Uma ungafuni ukuthi i-%s isebenzise lesi sici, thepha ukuze uvule izilungiselelo bese usivale." + "Uma ungafuni i-%s ukuthi isebenzise lesi sici, thepha ukuze uvule izilungiselelo uphinde uyivale." "Dlala" "Misa isikhashana" "Yeqela kokulandelayo" @@ -754,6 +754,7 @@ "Imenyu" "%1$s uhlelo lokusebenza" "Izexwayiso" + "Ibhethri" "Izithombe-skrini" "Imilayezo ejwayelekile" "Isitoreji" @@ -774,4 +775,5 @@ "Izinhlelo zokusebenza zisebenza ngasemuva" "Thepha ngemininingwane ekusetshenzisweni kwebhethri nedatha" "Vala idatha yeselula?" + "Ngoba uhlelo lokusebenza lusitha isicelo semvume, Izilungiselelo azikwazi ukuqinisekisa impendulo yakho." diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml index 745d6015d0ffa8bab7dc4e97672a73483439842f..a923f0b8c332086c562a0e35dff653caca5486bd 100644 --- a/packages/SystemUI/res/values/attrs.xml +++ b/packages/SystemUI/res/values/attrs.xml @@ -34,6 +34,7 @@ + diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index f72f3794e8081ba91a92505d1194c03e77ea6dbb..f244d88b8573f2c33f9de80669341f17423749bd 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -60,6 +60,11 @@ #33FFFFFF + + #CCFFFFFF + + #CC000000 + #ffffffff diff --git a/packages/SystemUI/res/values/colors_car.xml b/packages/SystemUI/res/values/colors_car.xml index 4faf252817ee39b69c17f61a0b1784113b98313d..710b3e03ccf74ea0f68ea90aef7bab25897c85b2 100644 --- a/packages/SystemUI/res/values/colors_car.xml +++ b/packages/SystemUI/res/values/colors_car.xml @@ -17,8 +17,15 @@ */ --> + #263238 #00000000 #80CBC4 - #FAFAFA - #212121 + @color/car_grey_50 + @color/car_grey_900 + @color/car_grey_50 + @color/car_grey_900 + @color/car_grey_50 + + #FAFAFA + #212121 diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index a077fdb6a5ec7dcffde1df68c30a09aee0dc86f6..8a1e0b92e4d7035634b667a44c36ec3fe42400ff 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -347,26 +347,6 @@ true - - true - - - false - - - true - - - true - - - true - true @@ -433,4 +413,23 @@ one bar higher than they actually are --> false + + false + + + true + + + 60 + + + + 15 + 30 + 60 + 120 + diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 94687de68704fc39a36723c26d4f951f80a5ebb6..9901f6ff8fda2acce013d9bc2e663f1f24e04f57 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -192,6 +192,23 @@ 124dp + + 128dp + + + 48dp + + + 40dp + + + 54dp + + + 48dp + 124dp @@ -281,6 +298,7 @@ 16dp 4dp 24dp + 32dp 0dp 20dp 16dp @@ -829,11 +847,15 @@ 16dp 0dp - 8dp + 0dp + 0dp 0.75dp 0.9dp + + 15dp + diff --git a/packages/SystemUI/res/values/dimens_car.xml b/packages/SystemUI/res/values/dimens_car.xml index d5d4e10d12ae0032f37f1d5cb6164b1900a421e8..8853587dba47308008b9935abea30fb2aac35234 100644 --- a/packages/SystemUI/res/values/dimens_car.xml +++ b/packages/SystemUI/res/values/dimens_car.xml @@ -18,10 +18,13 @@ 148dp - 44dp - 24dp + 24dp + 64dp + 24dp + 96dp 192dp 192dp + 264dp 40sp 64dp @@ -35,5 +38,17 @@ 16dp 30dp 80dp - 32sp + @dimen/car_body2_size + + 112dp + 16dp + 16dp + 46dp + 46dp + 56dp + 56dp + 46dp + @dimen/car_body2_size + + 26sp diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml index b27deddb4dd0ab22e8103ee43b74bae1ad603b8e..e5f802944ff342a38e304baa843943da7d025e94 100644 --- a/packages/SystemUI/res/values/ids.xml +++ b/packages/SystemUI/res/values/ids.xml @@ -59,6 +59,7 @@ + @@ -81,10 +82,10 @@ - - - - + + + + diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 6202d130df7d62cf3fc14e7c32de218897a1ea80..7ccb6b0db128ad9674e4862bd22299693120fbef 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -163,7 +163,7 @@ USB debugging not allowed - The user currently signed in to this device can\'t turn on USB debugging. To use this feature, please switch to an Admin user. + The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user. @@ -840,16 +840,16 @@ "Slide left for %s. - You won’t be disturbed by sounds and vibrations, except from alarms, reminders, events, and callers you specify. You'll still hear anything you choose to play including music, videos, and games. + You won\'t be disturbed by sounds and vibrations, except from alarms, reminders, events, and callers you specify. You\'ll still hear anything you choose to play including music, videos, and games. - You won’t be disturbed by sounds and vibrations, except from alarms. You'll still hear anything you choose to play including music, videos, and games. + You won\'t be disturbed by sounds and vibrations, except from alarms. You\'ll still hear anything you choose to play including music, videos, and games. Customize - This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. You’ll still be able to make phone calls. + This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. You\'ll still be able to make phone calls. This blocks ALL sounds and vibrations, including from alarms, music, videos, and games. @@ -1152,7 +1152,7 @@ " " - Open VPN Settings + Open VPN settings " " @@ -1466,8 +1466,8 @@ - 1 out of %d notification category from this app - 1 out of %d notification categories from this app + 1 out of %s notification category from this app + 1 out of %s notification categories from this app - Battery Saver not available during charging + Battery saver not available during charging - Battery Saver + Battery saver Reduces performance and background data @@ -1904,13 +1904,13 @@ Drag down to dismiss - Picture in picture menu + Menu %s is in picture-in-picture - If you don’t want %s to use this feature, tap to open settings and turn it off. + If you don\'t want %s to use this feature, tap to open settings and turn it off. Play @@ -1987,8 +1987,10 @@ %1$s app - + Alerts + + Battery Screenshots @@ -2049,4 +2051,10 @@ Turn off mobile data? + + Because an app is obscuring a permission request, Settings + can’t verify your response. + diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index aacb4aa2b0a8b5d5df9875623fb56f10c36f4650..90c5977e2a6735e56a861ca9d6372fb1b9156e79 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -34,11 +34,13 @@ true true @style/ClearAllButtonDefaultMargins + @color/recents_clear_all_button_bg_dark_color @*android:color/primary_text_material_dark @*android:color/secondary_text_material_dark @@ -443,8 +445,7 @@ @style/TunerPreferenceTheme - \ No newline at end of file diff --git a/proto/src/ipconnectivity.proto b/proto/src/ipconnectivity.proto index 7979302ae24a0293920d055b54e7dc45b3ea95c7..0e39446a81ea722386bcf5a68aee9bb00e70c6b0 100644 --- a/proto/src/ipconnectivity.proto +++ b/proto/src/ipconnectivity.proto @@ -632,6 +632,6 @@ message IpConnectivityLog { // nyc-mr1: not populated, implicitly 1. // nyc-mr2: 2. // oc: 3. - // oc-dr1: 4. + // oc-dr1: 4. (sailfish, marlin, walleye, taimen) optional int32 version = 3; }; diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto index 0e2c46b9e623a9aa7b8ae67be84406c6c241e164..48f3b9ce9fb01104e04d8fdf7ae940b715091e2c 100644 --- a/proto/src/metrics_constants.proto +++ b/proto/src/metrics_constants.proto @@ -33,7 +33,7 @@ message MetricsEvent { // The view became hidden. TYPE_CLOSE = 2; - // The view switched to detail mode (most relevant for quick settings tiles) + // The view switched to detail mode (most relevant for quick settings tiles and notifications) TYPE_DETAIL = 3; // The view or control was activated. @@ -62,6 +62,17 @@ message MetricsEvent { // The action failed TYPE_FAILURE = 11; + + // Type for APP_TRANSITION_REPORTED_DRAWN event: The activity was started without restoring from + // a bundle. + TYPE_TRANSITION_REPORTED_DRAWN_NO_BUNDLE = 12; + + // Type for APP_TRANSITION_REPORTED_DRAWN event: The activity was started with restoring from + // a bundle. + TYPE_TRANSITION_REPORTED_DRAWN_WITH_BUNDLE = 13; + + // The view switched to summary mode (most relevant for notifications) + TYPE_COLLAPSE = 14; } // Types of alerts, as bit field values @@ -150,6 +161,16 @@ message MetricsEvent { CAMERA_EXTERNAL_USED = 2; } + // TextClassifier entity types. + enum TextClassifierEntityType { + TEXT_CLASSIFIER_TYPE_UNKNOWN = 1; + TEXT_CLASSIFIER_TYPE_OTHER = 2; + TEXT_CLASSIFIER_TYPE_EMAIL = 3; + TEXT_CLASSIFIER_TYPE_PHONE = 4; + TEXT_CLASSIFIER_TYPE_ADDRESS = 5; + TEXT_CLASSIFIER_TYPE_URL = 6; + } + // Known visual elements: views or controls. enum View { // Unknown view @@ -3519,6 +3540,7 @@ message MetricsEvent { NOTIFICATION_SNOOZED_CRITERIA = 832; // FIELD - The context (source) from which an action is performed + // For QS, this is a boolean of whether the panel is expanded FIELD_CONTEXT = 833; // ACTION: Settings advanced button is expanded @@ -3558,7 +3580,7 @@ message MetricsEvent { STORAGE_FILES = 841; // FIELD - Rank of the clicked Settings search result - FIELD_SETTINGS_SERACH_RESULT_RANK = 842; + FIELD_SETTINGS_SEARCH_RESULT_RANK = 842; // OPEN: Settings > Apps > Default Apps > Assist > Default assist DEFAULT_ASSIST_PICKER = 843; @@ -3829,7 +3851,7 @@ message MetricsEvent { // Tag of a field for the length of the filter text FIELD_AUTOFILL_FILTERTEXT_LEN = 911; - // An autofill authentification succeeded + // An autofill authentication succeeded // Package: Package of app that was autofilled AUTOFILL_AUTHENTICATED = 912; @@ -4043,6 +4065,7 @@ message MetricsEvent { ASSIST_GESTURE_PRIMED = 998; // ACTION: Assist gesture triggered + // SUBTYPE: 1 is for SCREEN_ON, 2 is for SCREEN_OFF // CATEGORY: GLOBAL_SYSTEM_UI // OS: O DR ASSIST_GESTURE_TRIGGERED = 999; @@ -4051,10 +4074,10 @@ message MetricsEvent { ACTION_SETTINGS_UPDATE_DEFAULT_APP = 1000; // FIELD - Query length when Settings search result is clicked - FIELD_SETTINGS_SERACH_QUERY_LENGTH = 1001; + FIELD_SETTINGS_SEARCH_QUERY_LENGTH = 1001; // FIELD - Number of results when Settings search result is clicked - FIELD_SETTINGS_SERACH_RESULT_COUNT = 1002; + FIELD_SETTINGS_SEARCH_RESULT_COUNT = 1002; // OPEN: Settings > Display > Ambient Display // CATEGORY: SETTINGS @@ -4231,6 +4254,316 @@ message MetricsEvent { // OS: O MR ACTION_MOBILE_NETWORK_DATA_USAGE = 1082; + // FIELD - State of asynchronous ranking when Settings search result is clicked + // CATEGORY: SETTINGS + // OS: O MR + FIELD_SETTINGS_SEARCH_RESULT_ASYNC_RANKING_STATE = 1083; + + // ACTION: Settings > Connected devices > SMS Mirroring + // CATEGORY: SETTINGS + // OS: O MR + ACTION_SETTINGS_SMS_MIRRORING = 1084; + + // ACTION: Chooser picked a ranked target. + // CATEGORY: GLOBAL_SYSTEM_UI + // OS: O MR + ACTION_TARGET_SELECTED = 1085; + + // FIELD - is category used in Chooser: 1. + // Type: int encoded boolean + // CATEGORY: GLOBAL_SYSTEM_UI + // OS: O MR + FIELD_IS_CATEGORY_USED = 1086; + + // FIELD - ranked position of selected target for Chooser. + // CATEGORY: GLOBAL_SYSTEM_UI + // OS: O MR + FIELD_RANKED_POSITION = 1087; + + // OPEN: Settings > Data plan usage + // CATEGORY: SETTINGS + // OS: O MR + DATA_PLAN_USAGE_SUMMARY = 1088; + + // FIELD: The numeric preference value (of type int) when it is changed in Settings + FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE = 1089; + + // ACTION: Logged when the app has notified that it has fully drawn. See + // Activity.reportFullyDrawn(). + APP_TRANSITION_REPORTED_DRAWN = 1090; + + // FIELD: The delay of the activity reporting to be fully drawn measured from the beginning of + // the app transition. + APP_TRANSITION_REPORTED_DRAWN_MS = 1091; + + // OPEN: Settings > Storage > Photos & Videos + // CATEGORY: SETTINGS + // OS: O MR + APPLICATIONS_STORAGE_PHOTOS = 1092; + + // ACTION: Logged when the status bar icons change. + // OS: O MR + STATUS_BAR_ICONS_CHANGED = 1093; + + // FIELD: Bitfield indicating which icons are shown. + // OS: O MR + FIELD_STATUS_ICONS = 1094; + + // FIELD: Number of status icons currently shown. + // OS: O MR + FIELD_NUM_STATUS_ICONS = 1095; + + // ACTION: Logged when user tries to pair a Bluetooth device without name from Settings app + // CATEGORY: SETTINGS + // OS: O MR + ACTION_SETTINGS_BLUETOOTH_PAIR_DEVICES_WITHOUT_NAMES = 1096; + + // FIELD - Whether smart suggestion ranking was enabled or not + // Type: int encoded boolean + // CATEGORY: SETTINGS + // OS: O MR + FIELD_SETTINGS_SMART_SUGGESTIONS_ENABLED = 1097; + + // ACTION: The device boots + ACTION_BOOT = 1098; + + // FIELD: A string value representing some state of the platform, e.g., boot reason + FIELD_PLATFORM_REASON = 1099; + + // CATEGORY: The category for all actions relating to selection session logging. + // OS: O MR + TEXT_SELECTION_SESSION = 1100; + + // ACTION: A selection session started (i.e. the selection handles appeared) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_START = 1101; + + // ACTION: The user modified the selection (e.g. by dragging the handles) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_MODIFY = 1102; + + // ACTION: The user modified the selection by pressing the "select all" button. + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_SELECT_ALL = 1103; + + // ACTION: The user modified the selection by pressing on a word in a multi word selection + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_RESET = 1104; + + // ACTION: Smart selection made a single word prediction + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_SMART_SINGLE = 1105; + + // ACTION: Smart selection made a multi word prediction + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_SMART_MULTI = 1106; + + // ACTION: The app made an automatic selection on the user's behalf (not smart selection) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_AUTO = 1107; + + // ACTION: A selection session ended with the user typing over the text + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_OVERTYPE = 1108; + + // ACTION: A selection session ended with the user copying the text + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_COPY = 1109; + + // ACTION: A selection session ended with the user pasting over the text + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_PASTE = 1110; + + // ACTION: A selection session ended with the user cutting the text + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_CUT = 1111; + + // ACTION: A selection session ended with the user pressing the share button + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_SHARE = 1112; + + // ACTION: A selection session ended with the user pressing the smart share button + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_SMART_SHARE = 1113; + + // ACTION: A selection session ended with the user dragging the text + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_DRAG = 1114; + + // ACTION: A selection session ended with the user abandoning the selection + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_ABANDON = 1115; + + // ACTION: A selection session ended with the user picking an unhandled action bar item + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + ACTION_TEXT_SELECTION_OTHER = 1116; + + // FIELD: Time in milliseconds from the start of the session to this event + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_SINCE_START = 1117; + + // FIELD: time in milliseconds between the last event in the session and this one + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_SINCE_PREVIOUS = 1118; + + // FIELD: a random uid for a selection session (lasting from select start to end) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_SESSION_ID = 1119; + + // FIELD: the sequence number of the event in the session + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_SESSION_INDEX = 1120; + + // FIELD: a concatenation of the widget type and ML model version. + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_VERSION_TAG = 1121; + + // FIELD: text select start offset in words (as defined by the ICU BreakIterator), stored as two + // packed 16bit integers. (start in MSBs, end in LSBs) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_RANGE = 1122; + + // FIELD: smart text selection start offset in words (as defined by the ICU BreakIterator), + // stored as two packed 16bit integers. (start in MSBs, end in LSBs) + // CATEGORY: TEXT_SELECTION_SESSION + // OS: O MR + FIELD_SELECTION_SMART_RANGE = 1123; + + // The value of an autofillable and savable view was reset + // Package: Package of app that was autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Tag FIELD_AUTOFILL_PREVIOUS_LENGTH: the previous length of the value + AUTOFILL_VALUE_RESET = 1124; + + // Tag of AUTOFILL_VALUE_RESET + // OS: O MR + FIELD_AUTOFILL_PREVIOUS_LENGTH = 1125; + + // An autofill dataset authentication succeeded + // Package: Package of app that was autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + AUTOFILL_DATASET_AUTHENTICATED = 1126; + + // An autofill service provided an invalid dataset authentication + // Package: Package of app that was autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + AUTOFILL_INVALID_DATASET_AUTHENTICATION = 1127; + + // An autofill service provided an invalid authentication extra + // Package: Package of app that was autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + AUTOFILL_INVALID_AUTHENTICATION = 1128; + + // An autofill service used a custom description (using RemoteViews) in the Save affordance + // Package: Package of app that is autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service + AUTOFILL_SAVE_CUSTOM_DESCRIPTION = 1129; + + // FIELD - Type of save object passed by the service when the Save UI is shown + // OS: O MR + FIELD_AUTOFILL_SAVE_TYPE = 1130; + + // An autofill service used a custom subtitle (String) in the Save affordance + // Package: Package of app that is autofilled + // OS: O MR + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service + AUTOFILL_SAVE_CUSTOM_SUBTITLE = 1131; + + // User tapped a link in the custom description of the Save affordance provided by an autofill service + // Package: Package of app that is autofilled + // OS: O MR + // Type TYPE_UNKNOWN: The link was not properly set by the service + // Type TYPE_OPEN: The link launched an activity + // Type TYPE_FAILURE: The link could not launc an activity + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service + AUTOFILL_SAVE_LINK_TAPPED = 1132; + + // Result of the validation on save when an autofill service provided a validator + // Package: Package of app that is autofilled + // OS: O MR + // Type TYPE_FAILURE: The validation could not be performed due to an error + // Type TYPE_SUCCESS: The validation passed + // Type TYPE_DISMISS: The validation failed + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Tag FIELD_AUTOFILL_SAVE_TYPE: Type of save object passed by the service + AUTOFILL_SAVE_VALIDATION = 1133; + + // Result of an operation in the autofill save affordance after the user tapped a link in the custom description + // provided by the autofill service + // Package: Package of app that is autofilled + // OS: O MR + // Type TYPE_OPEN: The save affordance was restored + // Type TYPE_DISMISS: The save affordcance was destroyed + // Type TYPE_FAILURE: An invalid opperation was reported by the app's AutofillManager + AUTOFILL_PENDING_SAVE_UI_OPERATION = 1134; + + // Autofill service called API that disables itself + // Package: Package of the autofill service + // OS: O MR + AUTOFILL_SERVICE_DISABLED_SELF = 1135; + + // Counter showing how long it took (in ms) to show the autofill UI after a field was focused + // Tag FIELD_AUTOFILL_SERVICE: Package of service that processed the request + // Package: Package of the autofill service + // OS: O MR + AUTOFILL_UI_LATENCY = 1136; + + // Action: the snooze leave-behind was shown after the user clicked the snooze icon + // OS: O MR + NOTIFICATION_SNOOZE_CLICKED = 1137; + + // Action: user selected a notification snooze duration from the drop down + // OS: O MR + NOTIFICATION_SELECT_SNOOZE = 1138; + + // attached to NOTIFICATION_SNOOZED and NOTIFICATION_SELECT_SNOOZE events + // OS: O MR + FIELD_NOTIFICATION_SNOOZE_DURATION_MS = 1139; + + // attached to NOTIFICATION_SELECT_SNOOZE events to indicate the option selected + // OS: O MR + FIELD_NOTIFICATION_SNOOZE_INDEX = 1140; + + // Action: user tapped undo on the notification snooze leave-behind + // OS: O MR + NOTIFICATION_UNDO_SNOOZE = 1141; + + // Action: user togged the visibility of the notification snooze options drop down + // OS: O MR + NOTIFICATION_SNOOZE_OPTIONS = 1142; + + // ---- End O-MR1 Constants, all O-MR1 constants go above this line ---- + // Add new aosp constants above this line. // END OF AOSP CONSTANTS } diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto index c4dc506b39f50b5dda459c738a911e73ed785a8c..54eba2b332a4150a0ba26f1e7d55fd2db53cfafa 100644 --- a/proto/src/wifi.proto +++ b/proto/src/wifi.proto @@ -312,6 +312,30 @@ message WifiLog { // Counts the number of AllSingleScanLister.onResult calls with a partial (channels) scan result optional int32 partial_all_single_scan_listener_results = 75; + + // Pno scan metrics + optional PnoScanMetrics pno_scan_metrics = 76; + + // Histogram of "Connect to Network" notifications. + // The notification Action should be unset. + repeated ConnectToNetworkNotificationAndActionCount connect_to_network_notification_count = 77; + + // Histogram of "Connect to Network" notification user actions. + repeated ConnectToNetworkNotificationAndActionCount connect_to_network_notification_action_count = 78; + + // The number of SSIDs blacklisted from recommendation by the open network + // notification recommender + optional int32 open_network_recommender_blacklist_size = 79; + + // Is the available network notification feature turned on + optional bool is_wifi_networks_available_notification_on = 80; + + // Count of recommendation updates made by the open network notification + // recommender + optional int32 num_open_network_recommendation_updates = 81; + + // Count of connection attempts that were initiated unsuccessfully + optional int32 num_open_network_connect_message_failed_to_send = 82; } // Information that gets logged for every WiFi connection. @@ -927,3 +951,88 @@ message NumConnectableNetworksBucket { // Number of scan results with num_connectable_networks optional int32 count = 2 [default = 0]; } + +// Pno scan metrics +// Here "Pno Scan" refers to the session of offloaded scans, these metrics count the result of a +// single session, and not the individual scans within that session. +message PnoScanMetrics { + // Total number of attempts to offload pno scans + optional int32 num_pno_scan_attempts = 1; + + // Total number of pno scans failed + optional int32 num_pno_scan_failed = 2; + + // Number of pno scans started successfully over offload + optional int32 num_pno_scan_started_over_offload = 3; + + // Number of pno scans failed over offload + optional int32 num_pno_scan_failed_over_offload = 4; + + // Total number of pno scans that found any network + optional int32 num_pno_found_network_events = 5; +} + +// Number of occurrences for a particular "Connect to Network" Notification or +// notification Action. +message ConnectToNetworkNotificationAndActionCount { + + // "Connect to Network" notifications + enum Notification { + + // Default + NOTIFICATION_UNKNOWN = 0; + + // Initial notification with a recommended network. + NOTIFICATION_RECOMMEND_NETWORK = 1; + + // Notification when connecting to the recommended network. + NOTIFICATION_CONNECTING_TO_NETWORK = 2; + + // Notification when successfully connected to the network. + NOTIFICATION_CONNECTED_TO_NETWORK = 3; + + // Notification when failed to connect to network. + NOTIFICATION_FAILED_TO_CONNECT = 4; + } + + // "Connect to Network" notification actions + enum Action { + + // Default + ACTION_UNKNOWN = 0; + + // User dismissed the "Connect to Network" notification. + ACTION_USER_DISMISSED_NOTIFICATION = 1; + + // User tapped action button to connect to recommended network. + ACTION_CONNECT_TO_NETWORK = 2; + + // User tapped action button to open Wi-Fi Settings. + ACTION_PICK_WIFI_NETWORK = 3; + + // User tapped "Failed to connect" notification to open Wi-Fi Settings. + ACTION_PICK_WIFI_NETWORK_AFTER_CONNECT_FAILURE = 4; + } + + // Recommenders of the "Connect to Network" notification + enum Recommender { + + // Default. + RECOMMENDER_UNKNOWN = 0; + + // Open Network Available recommender. + RECOMMENDER_OPEN = 1; + } + + // Notification Type. + optional Notification notification = 1; + + // Action Type. + optional Action action = 2; + + // Recommender Type. + optional Recommender recommender = 3; + + // Occurrences of this action. + optional int32 count = 4; +} diff --git a/services/Android.mk b/services/Android.mk index b811b0d3b9fc3484b16b1a42934958009f8286da..ed2ba1f819397930ea875b72c9aa471b71349869 100644 --- a/services/Android.mk +++ b/services/Android.mk @@ -7,7 +7,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := services LOCAL_DEX_PREOPT_APP_IMAGE := true LOCAL_DEX_PREOPT_GENERATE_PROFILE := true -LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(LOCAL_PATH)/profile-classes +LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(LOCAL_PATH)/art-profile LOCAL_SRC_FILES := $(call all-java-files-under,java) @@ -43,6 +43,9 @@ LOCAL_STATIC_JAVA_LIBRARIES := $(addprefix services.,$(services)) \ android.hidl.base-V1.0-java \ android.hardware.biometrics.fingerprint-V2.1-java +LOCAL_JAVA_LIBRARIES := \ + android.hidl.manager-V1.0-java + ifeq ($(EMMA_INSTRUMENT_FRAMEWORK),true) LOCAL_EMMA_INSTRUMENT := true endif diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java index 0e42e6d6a83d635604eb097a54897fce95f511f3..7324b82351f6307f8af83687d36390414b50e04c 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityInputFilter.java @@ -17,6 +17,7 @@ package com.android.server.accessibility; import android.content.Context; +import android.os.Handler; import android.os.PowerManager; import android.util.Pools.SimplePool; import android.util.Slog; @@ -30,6 +31,8 @@ import android.view.MotionEvent; import android.view.WindowManagerPolicy; import android.view.accessibility.AccessibilityEvent; +import com.android.server.LocalServices; + /** * This class is an input filter for implementing accessibility features such * as display magnification and explore by touch. @@ -425,7 +428,8 @@ class AccessibilityInputFilter extends InputFilter implements EventStreamTransfo } if ((mEnabledFeatures & FLAG_FEATURE_FILTER_KEY_EVENTS) != 0) { - mKeyboardInterceptor = new KeyboardInterceptor(mAms); + mKeyboardInterceptor = new KeyboardInterceptor(mAms, + LocalServices.getService(WindowManagerPolicy.class)); addFirstEventHandler(mKeyboardInterceptor); } } diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index a58ba09e39374d708b07629e537dae8e70f8748e..83dfccb57ebf36bf702f6fd3cf1f4f94f2b2d8a7 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -19,6 +19,8 @@ package com.android.server.accessibility; import static android.accessibilityservice.AccessibilityServiceInfo.DEFAULT; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS; +import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS; import android.Manifest; import android.accessibilityservice.AccessibilityService; @@ -27,6 +29,7 @@ import android.accessibilityservice.GestureDescription; import android.accessibilityservice.IAccessibilityServiceClient; import android.accessibilityservice.IAccessibilityServiceConnection; import android.annotation.NonNull; +import android.app.ActivityManagerInternal; import android.app.AlertDialog; import android.app.PendingIntent; import android.app.StatusBarManager; @@ -102,6 +105,7 @@ import android.view.accessibility.IAccessibilityManagerClient; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.internal.os.SomeArgs; import com.android.internal.util.DumpUtils; @@ -846,7 +850,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { if (resolvedUserId != mCurrentUserId) { return null; } - if (mSecurityPolicy.findWindowById(windowId) == null) { + if (mSecurityPolicy.findA11yWindowInfoById(windowId) == null) { return null; } IBinder token = mGlobalWindowTokens.get(windowId); @@ -903,7 +907,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } } - boolean notifyKeyEvent(KeyEvent event, int policyFlags) { + @VisibleForTesting + public boolean notifyKeyEvent(KeyEvent event, int policyFlags) { synchronized (mLock) { List boundServices = getCurrentUserStateLocked().mBoundServices; if (boundServices.isEmpty()) { @@ -2392,6 +2397,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { public static final int MSG_SEND_RELEVANT_EVENTS_CHANGED_TO_CLIENTS = 12; public static final int MSG_SEND_ACCESSIBILITY_BUTTON_TO_INPUT_FILTER = 13; public static final int MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER = 14; + public static final int MSG_INIT_SERVICE = 15; public MainHandler(Looper looper) { super(looper); @@ -2490,6 +2496,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { case MSG_SHOW_ACCESSIBILITY_BUTTON_CHOOSER: { showAccessibilityButtonTargetSelection(); } break; + + case MSG_INIT_SERVICE: { + final Service service = (Service) msg.obj; + service.initializeService(); + } break; } } @@ -2945,20 +2956,31 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { if (userState.mBindingServices.contains(mComponentName) || mWasConnectedAndDied) { userState.mBindingServices.remove(mComponentName); mWasConnectedAndDied = false; - try { - mServiceInterface.init(this, mId, mOverlayWindowToken); - onUserStateChangedLocked(userState); - } catch (RemoteException re) { - Slog.w(LOG_TAG, "Error while setting connection for service: " - + service, re); - binderDied(); - } + onUserStateChangedLocked(userState); + // Initialize the service on the main handler after we're done setting up for + // the new configuration (for example, initializing the input filter). + mMainHandler.obtainMessage(MainHandler.MSG_INIT_SERVICE, this).sendToTarget(); } else { binderDied(); } } } + private void initializeService() { + final IAccessibilityServiceClient serviceInterface; + synchronized (mLock) { + serviceInterface = mServiceInterface; + } + if (serviceInterface == null) return; + try { + serviceInterface.init(this, mId, mOverlayWindowToken); + } catch (RemoteException re) { + Slog.w(LOG_TAG, "Error while setting connection for service: " + + serviceInterface, re); + binderDied(); + } + } + private boolean isCalledForCurrentUserLocked() { // We treat calls from a profile as if made by its parent as profiles // share the accessibility state of the parent. The call below @@ -3008,7 +3030,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { if (!permissionGranted) { return null; } - AccessibilityWindowInfo window = mSecurityPolicy.findWindowById(windowId); + AccessibilityWindowInfo window = mSecurityPolicy.findA11yWindowInfoById(windowId); if (window != null) { AccessibilityWindowInfo windowClone = AccessibilityWindowInfo.obtain(window); windowClone.setConnectionId(mId); @@ -3308,8 +3330,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } if (mMotionEventInjector != null) { List steps = gestureSteps.getList(); - mMotionEventInjector.injectEvents(steps, mServiceInterface, sequence); - return; + mMotionEventInjector.injectEvents(steps, mServiceInterface, sequence); + return; } else { Slog.e(LOG_TAG, "MotionEventInjector installation timed out"); } @@ -3330,31 +3352,30 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { throws RemoteException { final int resolvedWindowId; IAccessibilityInteractionConnection connection = null; + IBinder activityToken = null; synchronized (mLock) { if (!isCalledForCurrentUserLocked()) { return false; } resolvedWindowId = resolveAccessibilityWindowIdLocked(accessibilityWindowId); - final boolean permissionGranted = mSecurityPolicy.canGetAccessibilityNodeInfoLocked( - this, resolvedWindowId); - if (!permissionGranted) { + if (!mSecurityPolicy.canGetAccessibilityNodeInfoLocked(this, resolvedWindowId)) { return false; - } else { - connection = getConnectionLocked(resolvedWindowId); - if (connection == null) { - return false; - } - AccessibilityWindowInfo windowInfo = - mSecurityPolicy.findWindowById(resolvedWindowId); - if ((windowInfo != null) && windowInfo.inPictureInPicture()) { - boolean isA11yFocusAction = - (action == AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS) - || (action == - AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS); - if ((mPictureInPictureActionReplacingConnection != null) - && !isA11yFocusAction) { - connection = mPictureInPictureActionReplacingConnection.mConnection; - } + } + connection = getConnectionLocked(resolvedWindowId); + if (connection == null) return false; + final boolean isA11yFocusAction = (action == ACTION_ACCESSIBILITY_FOCUS) + || (action == ACTION_CLEAR_ACCESSIBILITY_FOCUS); + final AccessibilityWindowInfo a11yWindowInfo = + mSecurityPolicy.findA11yWindowInfoById(resolvedWindowId); + if (!isA11yFocusAction) { + final WindowInfo windowInfo = + mSecurityPolicy.findWindowInfoById(resolvedWindowId); + if (windowInfo != null) activityToken = windowInfo.activityToken; + } + if ((a11yWindowInfo != null) && a11yWindowInfo.inPictureInPicture()) { + if ((mPictureInPictureActionReplacingConnection != null) + && !isA11yFocusAction) { + connection = mPictureInPictureActionReplacingConnection.mConnection; } } } @@ -3366,6 +3387,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { mPowerManager.userActivity(SystemClock.uptimeMillis(), PowerManager.USER_ACTIVITY_EVENT_ACCESSIBILITY, 0); + if (activityToken != null) { + LocalServices.getService(ActivityManagerInternal.class) + .setFocusedActivity(activityToken); + } connection.performAccessibilityAction(accessibilityNodeId, action, arguments, interactionId, callback, mFetchFlags, interrogatingPid, interrogatingTid); } catch (RemoteException re) { @@ -3448,18 +3473,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { return region; } MagnificationController magnificationController = getMagnificationController(); - boolean forceRegistration = mSecurityPolicy.canControlMagnification(this); - boolean initiallyRegistered = magnificationController.isRegisteredLocked(); - if (!initiallyRegistered && forceRegistration) { - magnificationController.register(); - } + boolean registeredJustForThisCall = + registerMagnificationIfNeeded(magnificationController); final long identity = Binder.clearCallingIdentity(); try { magnificationController.getMagnificationRegion(region); return region; } finally { Binder.restoreCallingIdentity(identity); - if (!initiallyRegistered && forceRegistration) { + if (registeredJustForThisCall) { magnificationController.unregister(); } } @@ -3473,11 +3495,17 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { return 0.0f; } } + MagnificationController magnificationController = getMagnificationController(); + boolean registeredJustForThisCall = + registerMagnificationIfNeeded(magnificationController); final long identity = Binder.clearCallingIdentity(); try { - return getMagnificationController().getCenterX(); + return magnificationController.getCenterX(); } finally { Binder.restoreCallingIdentity(identity); + if (registeredJustForThisCall) { + magnificationController.unregister(); + } } } @@ -3488,14 +3516,30 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { return 0.0f; } } + MagnificationController magnificationController = getMagnificationController(); + boolean registeredJustForThisCall = + registerMagnificationIfNeeded(magnificationController); final long identity = Binder.clearCallingIdentity(); try { - return getMagnificationController().getCenterY(); + return magnificationController.getCenterY(); } finally { Binder.restoreCallingIdentity(identity); + if (registeredJustForThisCall) { + magnificationController.unregister(); + } } } + private boolean registerMagnificationIfNeeded( + MagnificationController magnificationController) { + if (!magnificationController.isRegisteredLocked() + && mSecurityPolicy.canControlMagnification(this)) { + magnificationController.register(); + return true; + } + return false; + } + @Override public boolean resetMagnification(boolean animate) { synchronized (mLock) { @@ -4070,7 +4114,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { IAccessibilityInteractionConnectionCallback originalCallback, int resolvedWindowId, int interactionId, int interrogatingPid, long interrogatingTid) { - AccessibilityWindowInfo windowInfo = mSecurityPolicy.findWindowById(resolvedWindowId); + AccessibilityWindowInfo windowInfo = + mSecurityPolicy.findA11yWindowInfoById(resolvedWindowId); if ((windowInfo == null) || !windowInfo.inPictureInPicture() || (mPictureInPictureActionReplacingConnection == null)) { return originalCallback; @@ -4191,24 +4236,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { @Override public void onWindowsForAccessibilityChanged(List windows) { synchronized (mLock) { - // Populate the windows to report. - List reportedWindows = new ArrayList<>(); - final int receivedWindowCount = windows.size(); - for (int i = 0; i < receivedWindowCount; i++) { - WindowInfo receivedWindow = windows.get(i); - AccessibilityWindowInfo reportedWindow = populateReportedWindow( - receivedWindow); - if (reportedWindow != null) { - reportedWindows.add(reportedWindow); - } - } - if (DEBUG) { - Slog.i(LOG_TAG, "Windows changed: " + reportedWindows); + Slog.i(LOG_TAG, "Windows changed: " + windows); } // Let the policy update the focused and active windows. - mSecurityPolicy.updateWindowsLocked(reportedWindows); + mSecurityPolicy.updateWindowsLocked(windows); // Someone may be waiting for the windows - advertise it. mLock.notifyAll(); @@ -4430,7 +4463,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { // In Z order public List mWindows; - public SparseArray mWindowsById = new SparseArray<>(); + public SparseArray mA11yWindowInfoById = new SparseArray<>(); + public SparseArray mWindowInfoById = new SparseArray<>(); public int mActiveWindowId = INVALID_WINDOW_ID; public int mFocusedWindowId = INVALID_WINDOW_ID; @@ -4474,14 +4508,14 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { } public void clearWindowsLocked() { - List windows = Collections.emptyList(); + List windows = Collections.emptyList(); final int activeWindowId = mActiveWindowId; updateWindowsLocked(windows); mActiveWindowId = activeWindowId; mWindows = null; } - public void updateWindowsLocked(List windows) { + public void updateWindowsLocked(List windows) { if (mWindows == null) { mWindows = new ArrayList<>(); } @@ -4490,7 +4524,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { for (int i = oldWindowCount - 1; i >= 0; i--) { mWindows.remove(i).recycle(); } - mWindowsById.clear(); + mA11yWindowInfoById.clear(); + + for (int i = 0; i < mWindowInfoById.size(); i++) { + mWindowInfoById.valueAt(i).recycle(); + } + mWindowInfoById.clear(); mFocusedWindowId = INVALID_WINDOW_ID; if (!mTouchInteractionInProgress) { @@ -4507,19 +4546,25 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { final int windowCount = windows.size(); if (windowCount > 0) { for (int i = 0; i < windowCount; i++) { - AccessibilityWindowInfo window = windows.get(i); - final int windowId = window.getId(); - if (window.isFocused()) { - mFocusedWindowId = windowId; - if (!mTouchInteractionInProgress) { - mActiveWindowId = windowId; - window.setActive(true); - } else if (windowId == mActiveWindowId) { - activeWindowGone = false; + WindowInfo windowInfo = windows.get(i); + AccessibilityWindowInfo window = (mWindowsForAccessibilityCallback != null) + ? mWindowsForAccessibilityCallback.populateReportedWindow(windowInfo) + : null; + if (window != null) { + final int windowId = window.getId(); + if (window.isFocused()) { + mFocusedWindowId = windowId; + if (!mTouchInteractionInProgress) { + mActiveWindowId = windowId; + window.setActive(true); + } else if (windowId == mActiveWindowId) { + activeWindowGone = false; + } } + mWindows.add(window); + mA11yWindowInfoById.put(windowId, window); + mWindowInfoById.put(windowId, WindowInfo.obtain(windowInfo)); } - mWindows.add(window); - mWindowsById.put(windowId, window); } if (mTouchInteractionInProgress && activeWindowGone) { @@ -4528,7 +4573,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { // Focused window may change the active one, so set the // active window once we decided which it is. - for (int i = 0; i < windowCount; i++) { + final int accessibilityWindowCount = mWindows.size(); + for (int i = 0; i < accessibilityWindowCount; i++) { AccessibilityWindowInfo window = mWindows.get(i); if (window.getId() == mActiveWindowId) { window.setActive(true); @@ -4831,11 +4877,15 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { if (windowId == mActiveWindowId) { return true; } - return findWindowById(windowId) != null; + return findA11yWindowInfoById(windowId) != null; + } + + private AccessibilityWindowInfo findA11yWindowInfoById(int windowId) { + return mA11yWindowInfoById.get(windowId); } - private AccessibilityWindowInfo findWindowById(int windowId) { - return mWindowsById.get(windowId); + private WindowInfo findWindowInfoById(int windowId) { + return mWindowInfoById.get(windowId); } private AccessibilityWindowInfo getPictureInPictureWindow() { diff --git a/services/accessibility/java/com/android/server/accessibility/KeyboardInterceptor.java b/services/accessibility/java/com/android/server/accessibility/KeyboardInterceptor.java index bbb25af5da4373d87c6555ff6f8299d453a8067e..f00a9540ef7d917551811776b30dfd402c49b5ac 100644 --- a/services/accessibility/java/com/android/server/accessibility/KeyboardInterceptor.java +++ b/services/accessibility/java/com/android/server/accessibility/KeyboardInterceptor.java @@ -16,19 +16,52 @@ package com.android.server.accessibility; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.util.Pools; +import android.util.Slog; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.WindowManagerPolicy; import android.view.accessibility.AccessibilityEvent; /** * Intercepts key events and forwards them to accessibility manager service. */ -public class KeyboardInterceptor implements EventStreamTransformation { +public class KeyboardInterceptor implements EventStreamTransformation, Handler.Callback { + private static final int MESSAGE_PROCESS_QUEUED_EVENTS = 1; + private static final String LOG_TAG = "KeyboardInterceptor"; + + private final AccessibilityManagerService mAms; + private final WindowManagerPolicy mPolicy; + private final Handler mHandler; + private EventStreamTransformation mNext; - private AccessibilityManagerService mAms; + private KeyEventHolder mEventQueueStart; + private KeyEventHolder mEventQueueEnd; + + /** + * @param service The service to notify of key events + * @param policy The policy to check for keys that may affect a11y + */ + public KeyboardInterceptor(AccessibilityManagerService service, WindowManagerPolicy policy) { + mAms = service; + mPolicy = policy; + mHandler = new Handler(this); + } - public KeyboardInterceptor(AccessibilityManagerService service) { + /** + * @param service The service to notify of key events + * @param policy The policy to check for keys that may affect a11y + * @param handler The handler to use. Only used for testing. + */ + public KeyboardInterceptor(AccessibilityManagerService service, WindowManagerPolicy policy, + Handler handler) { + // Can't combine the constructors without making at least mHandler non-final. mAms = service; + mPolicy = policy; + mHandler = handler; } @Override @@ -40,6 +73,19 @@ public class KeyboardInterceptor implements EventStreamTransformation { @Override public void onKeyEvent(KeyEvent event, int policyFlags) { + /* + * Certain keys have system-level behavior that affects accessibility services. + * Let that behavior settle before handling the keys + */ + long eventDelay = getEventDelay(event, policyFlags); + if (eventDelay < 0) { + return; + } + if ((eventDelay > 0) || (mEventQueueStart != null)) { + addEventToQueue(event, policyFlags, eventDelay); + return; + } + mAms.notifyKeyEvent(event, policyFlags); } @@ -65,4 +111,104 @@ public class KeyboardInterceptor implements EventStreamTransformation { @Override public void onDestroy() { } + + @Override + public boolean handleMessage(Message msg) { + if (msg.what != MESSAGE_PROCESS_QUEUED_EVENTS) { + Slog.e(LOG_TAG, "Unexpected message type"); + return false; + } + processQueuedEvents(); + if (mEventQueueStart != null) { + scheduleProcessQueuedEvents(); + } + return true; + } + + private void addEventToQueue(KeyEvent event, int policyFlags, long delay) { + long dispatchTime = SystemClock.uptimeMillis() + delay; + if (mEventQueueStart == null) { + mEventQueueEnd = mEventQueueStart = + KeyEventHolder.obtain(event, policyFlags, dispatchTime); + scheduleProcessQueuedEvents(); + return; + } + final KeyEventHolder holder = KeyEventHolder.obtain(event, policyFlags, dispatchTime); + holder.next = mEventQueueStart; + mEventQueueStart.previous = holder; + mEventQueueStart = holder; + } + + private void scheduleProcessQueuedEvents() { + if (!mHandler.sendEmptyMessageAtTime( + MESSAGE_PROCESS_QUEUED_EVENTS, mEventQueueEnd.dispatchTime)) { + Slog.e(LOG_TAG, "Failed to schedule key event"); + }; + } + + private void processQueuedEvents() { + final long currentTime = SystemClock.uptimeMillis(); + while ((mEventQueueEnd != null) && (mEventQueueEnd.dispatchTime <= currentTime)) { + final long eventDelay = getEventDelay(mEventQueueEnd.event, mEventQueueEnd.policyFlags); + if (eventDelay > 0) { + // Reschedule the event + mEventQueueEnd.dispatchTime = currentTime + eventDelay; + return; + } + // We'll either send or drop the event + if (eventDelay == 0) { + mAms.notifyKeyEvent(mEventQueueEnd.event, mEventQueueEnd.policyFlags); + } + final KeyEventHolder eventToBeRecycled = mEventQueueEnd; + mEventQueueEnd = mEventQueueEnd.previous; + if (mEventQueueEnd != null) { + mEventQueueEnd.next = null; + } + eventToBeRecycled.recycle(); + if (mEventQueueEnd == null) { + mEventQueueStart = null; + } + } + } + + private long getEventDelay(KeyEvent event, int policyFlags) { + int keyCode = event.getKeyCode(); + if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) || (keyCode == KeyEvent.KEYCODE_VOLUME_UP)) { + return mPolicy.interceptKeyBeforeDispatching(null, event, policyFlags); + } + return 0; + } + + private static class KeyEventHolder { + private static final int MAX_POOL_SIZE = 32; + private static final Pools.SimplePool sPool = + new Pools.SimplePool<>(MAX_POOL_SIZE); + + public int policyFlags; + public long dispatchTime; + public KeyEvent event; + public KeyEventHolder next; + public KeyEventHolder previous; + + public static KeyEventHolder obtain(KeyEvent event, int policyFlags, long dispatchTime) { + KeyEventHolder holder = sPool.acquire(); + if (holder == null) { + holder = new KeyEventHolder(); + } + holder.event = KeyEvent.obtain(event); + holder.policyFlags = policyFlags; + holder.dispatchTime = dispatchTime; + return holder; + } + + public void recycle() { + event.recycle(); + event = null; + policyFlags = 0; + dispatchTime = 0; + next = null; + previous = null; + sPool.release(this); + } + } } diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java index 9cc53f02de1c19681ed082c309780bd4f356af36..c9c7adc456973b4f6c3e155fcfde2030cfa5e3df 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetService.java @@ -19,6 +19,7 @@ package com.android.server.appwidget; import android.content.Context; import com.android.server.AppWidgetBackupBridge; +import com.android.server.FgThread; import com.android.server.SystemService; /** @@ -48,7 +49,7 @@ public class AppWidgetService extends SystemService { @Override public void onUnlockUser(int userHandle) { - mImpl.onUserUnlocked(userHandle); + FgThread.getHandler().post(() -> mImpl.onUserUnlocked(userHandle)); } @Override diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 16a927c3c09a6c104d4f492e50f6968f4887ad87..a6aaaa673013c1e8f6b5f027259dc6a64cf3c5dc 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -68,6 +68,7 @@ import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; +import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; @@ -2644,9 +2645,14 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku Slog.w(TAG, "User " + userId + " is no longer unlocked - exiting"); return; } + long time = SystemClock.elapsedRealtime(); synchronized (mLock) { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "appwidget ensure"); ensureGroupStateLoadedLocked(userId); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "appwidget reload"); reloadWidgetsMaskedStateForGroup(mSecurityPolicy.getGroupParent(userId)); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); final int N = mProviders.size(); for (int i = 0; i < N; i++) { @@ -2658,13 +2664,18 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } if (provider.widgets.size() > 0) { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, + "appwidget init " + provider.info.provider.getPackageName()); sendEnableIntentLocked(provider); int[] appWidgetIds = getWidgetIds(provider.widgets); sendUpdateIntentLocked(provider, appWidgetIds); registerForBroadcastsLocked(provider, appWidgetIds); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } } } + Slog.i(TAG, "Async processing of onUserUnlocked u" + userId + " took " + + (SystemClock.elapsedRealtime() - time) + " ms"); } // only call from initialization -- it assumes that the data structures are all empty diff --git a/services/art-profile b/services/art-profile new file mode 100644 index 0000000000000000000000000000000000000000..ae5c909eec597a7ba82ac1261c60d62cea0c29af --- /dev/null +++ b/services/art-profile @@ -0,0 +1,16942 @@ +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->authenticate(JI)I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->cancel()I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->enroll([BII)I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->enumerate()I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getAuthenticatorId()J +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->notifySyspropsChanged()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->ping()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->postEnroll()I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->preEnroll()J +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->remove(II)I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->setActiveGroup(ILjava/lang/String;)I +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->setHALInstrumentation()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->setNotify(Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;)J +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->notifySyspropsChanged()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onAcquired(JII)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onAuthenticated(JIILjava/util/ArrayList;)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onEnrollResult(JIII)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onEnumerate(JIII)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onError(JII)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->onRemoved(JIII)V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->ping()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->setHALInstrumentation()V +HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasHDRDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasSyncFramework()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxFrameBufferAcquiredBuffers()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->maxVirtualDisplaySize()Landroid/hardware/configstore/V1_0/OptionalUInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->notifySyspropsChanged()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->ping()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->presentTimeOffsetFromVSyncNs()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->setHALInstrumentation()V +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->startGraphicsAllocatorService()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useContextPriority()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useHwcForRGBtoYUV()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->useVrFlinger()Landroid/hardware/configstore/V1_0/OptionalBool; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->vsyncSfEventPhaseOffsetNs()Landroid/hardware/configstore/V1_0/OptionalInt64; +HPLandroid/hardware/usb/V1_0/IUsb;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/usb/V1_0/IUsb;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/usb/V1_0/IUsb;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_0/IUsb;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_0/IUsb;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/usb/V1_0/IUsb;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/usb/V1_0/IUsb;->notifySyspropsChanged()V +HPLandroid/hardware/usb/V1_0/IUsb;->ping()V +HPLandroid/hardware/usb/V1_0/IUsb;->queryPortStatus()V +HPLandroid/hardware/usb/V1_0/IUsb;->setCallback(Landroid/hardware/usb/V1_0/IUsbCallback;)V +HPLandroid/hardware/usb/V1_0/IUsb;->setHALInstrumentation()V +HPLandroid/hardware/usb/V1_0/IUsb;->switchRole(Ljava/lang/String;Landroid/hardware/usb/V1_0/PortRole;)V +HPLandroid/hardware/usb/V1_0/IUsb;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/usb/V1_0/IUsbCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/usb/V1_0/IUsbCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/usb/V1_0/IUsbCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_0/IUsbCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_0/IUsbCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/usb/V1_0/IUsbCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/usb/V1_0/IUsbCallback;->notifyPortStatusChange(Ljava/util/ArrayList;I)V +HPLandroid/hardware/usb/V1_0/IUsbCallback;->notifyRoleSwitchStatus(Ljava/lang/String;Landroid/hardware/usb/V1_0/PortRole;I)V +HPLandroid/hardware/usb/V1_0/IUsbCallback;->notifySyspropsChanged()V +HPLandroid/hardware/usb/V1_0/IUsbCallback;->ping()V +HPLandroid/hardware/usb/V1_0/IUsbCallback;->setHALInstrumentation()V +HPLandroid/hardware/usb/V1_0/IUsbCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/usb/V1_1/IUsbCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/usb/V1_1/IUsbCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/usb/V1_1/IUsbCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_1/IUsbCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/usb/V1_1/IUsbCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/usb/V1_1/IUsbCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/usb/V1_1/IUsbCallback;->notifyPortStatusChange_1_1(Ljava/util/ArrayList;I)V +HPLandroid/hardware/usb/V1_1/IUsbCallback;->notifySyspropsChanged()V +HPLandroid/hardware/usb/V1_1/IUsbCallback;->ping()V +HPLandroid/hardware/usb/V1_1/IUsbCallback;->setHALInstrumentation()V +HPLandroid/hardware/usb/V1_1/IUsbCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi$Proxy;->isStarted()Z +HPLandroid/hardware/wifi/V1_0/IWifi$getChipCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V +HPLandroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifi;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifi;->getChip(ILandroid/hardware/wifi/V1_0/IWifi$getChipCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi;->getChipIds(Landroid/hardware/wifi/V1_0/IWifi$getChipIdsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifi;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifi;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifi;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifi;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifi;->isStarted()Z +HPLandroid/hardware/wifi/V1_0/IWifi;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifi;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifi;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifi;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifi;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifi;->start()Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifi;->stop()Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifi;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->()V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombinationLimit;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiChip; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->createApIface(Landroid/hardware/wifi/V1_0/IWifiChip$createApIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->createNanIface(Landroid/hardware/wifi/V1_0/IWifiChip$createNanIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->createP2pIface(Landroid/hardware/wifi/V1_0/IWifiChip$createP2pIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->createRttController(Landroid/hardware/wifi/V1_0/IWifiIface;Landroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->createStaIface(Landroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->enableDebugErrorAlerts(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->forceDumpToDebugRingBuffer(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getApIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getApIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getApIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getAvailableModes(Landroid/hardware/wifi/V1_0/IWifiChip$getAvailableModesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiChip$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getDebugHostWakeReasonStats(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getDebugRingBuffersStatus(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getId(Landroid/hardware/wifi/V1_0/IWifiChip$getIdCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getMode(Landroid/hardware/wifi/V1_0/IWifiChip$getModeCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getNanIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getNanIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getNanIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getP2pIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getP2pIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getP2pIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getStaIface(Ljava/lang/String;Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->getStaIfaceNames(Landroid/hardware/wifi/V1_0/IWifiChip$getStaIfaceNamesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiChip;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiChipEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->removeApIface(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->removeNanIface(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->removeP2pIface(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->removeStaIface(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->requestChipDebugInfo(Landroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->requestDriverDebugDump(Landroid/hardware/wifi/V1_0/IWifiChip$requestDriverDebugDumpCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->requestFirmwareDebugDump(Landroid/hardware/wifi/V1_0/IWifiChip$requestFirmwareDebugDumpCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiChip;->startLoggingToDebugRingBuffer(Ljava/lang/String;III)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->stopLoggingToDebugRingBuffer()Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiChip;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onChipReconfigureFailure(Landroid/hardware/wifi/V1_0/WifiStatus;)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onChipReconfigured(I)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onDebugErrorAlert(ILjava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onDebugRingBufferDataAvailable(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onIfaceAdded(ILjava/lang/String;)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->onIfaceRemoved(ILjava/lang/String;)V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiChipEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->onFailure(Landroid/hardware/wifi/V1_0/WifiStatus;)V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->onStart()V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->onStop()V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiIface$getNameCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiIface;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiIface;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiIface;->getName(Landroid/hardware/wifi/V1_0/IWifiIface$getNameCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->getType(Landroid/hardware/wifi/V1_0/IWifiIface$getTypeCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiIface;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiIface;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiIface;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiIface;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->disableResponder(I)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->enableResponder(ILandroid/hardware/wifi/V1_0/WifiChannelInfo;ILandroid/hardware/wifi/V1_0/RttResponder;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->getBoundIface(Landroid/hardware/wifi/V1_0/IWifiRttController$getBoundIfaceCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiRttController$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->getResponderInfo(Landroid/hardware/wifi/V1_0/IWifiRttController$getResponderInfoCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->rangeCancel(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->rangeRequest(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->setLci(ILandroid/hardware/wifi/V1_0/RttLciInformation;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->setLcr(ILandroid/hardware/wifi/V1_0/RttLcrInformation;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiRttController;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->onResults(ILjava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getLinkLayerStats(Landroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getDebugRxPacketFatesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getDebugTxPacketFatesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiStaIface; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->configureRoaming(Landroid/hardware/wifi/V1_0/StaRoamingConfig;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->disableLinkLayerStatsCollection()Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->enableLinkLayerStatsCollection(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->enableNdOffload(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getApfPacketFilterCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getBackgroundScanCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getDebugRxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugRxPacketFatesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getDebugTxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugTxPacketFatesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getLinkLayerStats(Landroid/hardware/wifi/V1_0/IWifiStaIface$getLinkLayerStatsCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getRoamingCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->getValidFrequenciesForBand(ILandroid/hardware/wifi/V1_0/IWifiStaIface$getValidFrequenciesForBandCallback;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->installApfPacketFilter(ILjava/util/ArrayList;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->setRoamingState(B)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->setScanningMacOui([B)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->startBackgroundScan(ILandroid/hardware/wifi/V1_0/StaBackgroundScanParameters;)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->startDebugPacketFateMonitoring()Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->startRssiMonitoring(III)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->startSendingKeepAlivePackets(ILjava/util/ArrayList;S[B[BI)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->stopBackgroundScan(I)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->stopRssiMonitoring(I)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->stopSendingKeepAlivePackets(I)Landroid/hardware/wifi/V1_0/WifiStatus; +HPLandroid/hardware/wifi/V1_0/IWifiStaIface;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onBackgroundFullScanResult(IILandroid/hardware/wifi/V1_0/StaScanResult;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onBackgroundScanFailure(I)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onBackgroundScanResults(ILjava/util/ArrayList;)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->onRssiThresholdBreached(I[BI)V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->ping()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;->()V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfacePacketStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->()V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerIfaceStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;->()V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerRadioStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->()V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/StaLinkLayerStats;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;->()V +HPLandroid/hardware/wifi/V1_0/WifiDebugPacketFateFrameInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->()V +HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +HPLandroid/hardware/wifi/V1_0/WifiStatus;->()V +HPLandroid/hardware/wifi/V1_0/WifiStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/V1_0/WifiStatus;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getDebugLevel()I +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getInterface(Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$getInterfaceCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->isDebugShowKeysEnabled()Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->isDebugShowTimestampEnabled()Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->listInterfaces(Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$listInterfacesCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->setConcurrencyPriority(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->setDebugParams(IZZ)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$addNetworkCallback;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$getDeviceAddressCallback;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->addBonjourService(Ljava/util/ArrayList;Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->addGroup(ZI)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->addUpnpService(ILjava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->cancelConnect()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->cancelServiceDiscovery(J)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->cancelWps(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->configureExtListen(II)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->connect([BILjava/lang/String;ZZILandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$connectCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->createNfcHandoverRequestMessage(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$createNfcHandoverRequestMessageCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->createNfcHandoverSelectMessage(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$createNfcHandoverSelectMessageCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->enableWfd(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->find(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->flush()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->flushServices()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->getDeviceAddress(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$getDeviceAddressCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->getGroupCapability([BLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$getGroupCapabilityCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->getSsid([BLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$getSsidCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->invite(Ljava/lang/String;[B[B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->provisionDiscovery([BI)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->reinvoke(I[B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->reject([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->removeBonjourService(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->removeGroup(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->removeUpnpService(ILjava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->reportNfcHandoverInitiation(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->reportNfcHandoverResponse(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->requestServiceDiscovery([BLjava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$requestServiceDiscoveryCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->saveConfig()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setDisallowedFrequencies(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setGroupIdle(Ljava/lang/String;I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setListenChannel(II)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setMiracastMode(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setPowerSave(Ljava/lang/String;Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setSsidPostfix(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->setWfdDeviceInfo([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->startWpsPbc(Ljava/lang/String;[B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->startWpsPinDisplay(Ljava/lang/String;[BLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$startWpsPinDisplayCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->startWpsPinKeypad(Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->stopFind()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onDeviceFound([B[B[BLjava/lang/String;SBI[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onDeviceLost([B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onFindStopped()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGoNegotiationCompleted(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGoNegotiationRequest([BS)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGroupFormationFailure(Ljava/lang/String;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGroupFormationSuccess()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGroupRemoved(Ljava/lang/String;Z)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onGroupStarted(Ljava/lang/String;ZLjava/util/ArrayList;I[BLjava/lang/String;[BZ)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onInvitationReceived([B[B[BII)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onInvitationResult([BI)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onNetworkAdded(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onNetworkRemoved(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onProvisionDiscoveryCompleted([BZBSLjava/lang/String;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onServiceDiscoveryResponse([BSLjava/util/ArrayList;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onStaAuthorized([B[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->onStaDeauthorized([B[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$getMacAddressCallback;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addExtRadioWork(Ljava/lang/String;IILandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$addExtRadioWorkCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->addRxFilter(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->cancelWps()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->disconnect()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->enableAutoReconnect(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->getMacAddress(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$getMacAddressCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->initiateAnqpQuery([BLjava/util/ArrayList;Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->initiateHs20IconQuery([BLjava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->initiateTdlsDiscover([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->initiateTdlsSetup([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->initiateTdlsTeardown([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->reassociate()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->reconnect()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->removeExtRadioWork(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->removeRxFilter(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setBtCoexistenceMode(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setBtCoexistenceScanModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setCountryCode([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setExternalSim(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setPowerSave(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->setSuspendModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->startRxFilter()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->startWpsPbc([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->startWpsPinDisplay([BLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$startWpsPinDisplayCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->startWpsPinKeypad(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->startWpsRegistrar([BLjava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->stopRxFilter()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onAnqpQueryDone([BLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback$AnqpData;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback$Hs20AnqpData;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onAssociationRejected([BIZ)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onAuthenticationTimeout([B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onBssidChanged(B[B)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onDisconnected([BZI)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onEapFailure()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onExtRadioWorkStart(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onExtRadioWorkTimeout(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onHs20DeauthImminentNotice([BIILjava/lang/String;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onHs20IconQueryDone([BLjava/lang/String;Ljava/util/ArrayList;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onHs20SubscriptionRemediation([BBLjava/lang/String;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onNetworkAdded(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onNetworkRemoved(I)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onStateChanged(I[BILjava/util/ArrayList;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onWpsEventFail([BSS)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onWpsEventPbcOverlap()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->onWpsEventSuccess()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->disable()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->enable(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getAuthAlg(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getAuthAlgCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getBssid(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getBssidCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapAltSubjectMatch(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapAltSubjectMatchCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapAnonymousIdentity(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapAnonymousIdentityCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapCACert(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapCACertCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapCAPath(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapCAPathCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapClientCert(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapClientCertCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapDomainSuffixMatch(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapDomainSuffixMatchCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapEngine(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapEngineCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapEngineID(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapEngineIDCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapIdentity(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapIdentityCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapMethod(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapMethodCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapPassword(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapPasswordCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapPhase2Method(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapPhase2MethodCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapPrivateKeyId(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapPrivateKeyIdCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getEapSubjectMatch(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getEapSubjectMatchCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getGroupCipher(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getGroupCipherCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getIdStr(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getIdStrCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getKeyMgmt(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getKeyMgmtCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getPairwiseCipher(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getPairwiseCipherCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getProto(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getProtoCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getPsk(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getPskCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getPskPassphrase(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getPskPassphraseCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getRequirePmf(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getRequirePmfCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getScanSsid(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getScanSsidCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getSsid(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getSsidCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getWepKey(ILandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getWepKeyCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getWepTxKeyIdx(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getWepTxKeyIdxCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->getWpsNfcConfigurationToken(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$getWpsNfcConfigurationTokenCallback;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->select()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapIdentityResponse(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapSimGsmAuthFailure()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapSimGsmAuthResponse(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapSimUmtsAuthFailure()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapSimUmtsAuthResponse(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$NetworkResponseEapSimUmtsAuthParams;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->sendNetworkEapSimUmtsAutsResponse([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setAuthAlg(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setBssid([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapAltSubjectMatch(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapAnonymousIdentity(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapCACert(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapCAPath(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapClientCert(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapDomainSuffixMatch(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapEngine(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapEngineID(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapIdentity(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapMethod(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapPassword(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapPhase2Method(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapPrivateKeyId(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setEapSubjectMatch(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setGroupCipher(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setIdStr(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setKeyMgmt(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setPairwiseCipher(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setProactiveKeyCaching(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setProto(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setPsk([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setPskPassphrase(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setRequirePmf(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setScanSsid(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setSsid(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setUpdateIdentifier(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setWepKey(ILjava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->setWepTxKeyIdx(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->asBinder()Landroid/os/IHwBinder; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->getHashChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->interfaceChain()Ljava/util/ArrayList; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->interfaceDescriptor()Ljava/lang/String; +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->notifySyspropsChanged()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->onNetworkEapIdentityRequest()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->onNetworkEapSimGsmAuthRequest(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$NetworkRequestEapSimGsmAuthParams;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->onNetworkEapSimUmtsAuthRequest(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$NetworkRequestEapSimUmtsAuthParams;)V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->ping()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->setHALInstrumentation()V +HPLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;->unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->()V +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +HPLandroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;->readFromParcel(Landroid/os/HwParcel;)V +HPLandroid/net/apf/ApfFilter$Ra;->generateFilterLocked(Landroid/net/apf/ApfGenerator;)J +HPLandroid/net/apf/ApfFilter$Ra;->matches([BI)Z +HPLandroid/net/apf/ApfFilter$Ra;->minLifetime([BI)J +HPLandroid/net/apf/ApfFilter;->beginProgramLocked()Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfFilter;->currentTimeSeconds()J +HPLandroid/net/apf/ApfFilter;->generateArpFilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->generateIPv4FilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->generateIPv6FilterLocked(Landroid/net/apf/ApfGenerator;)V +HPLandroid/net/apf/ApfFilter;->installNewProgramLocked()V +HPLandroid/net/apf/ApfGenerator$Instruction;->(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->(Landroid/net/apf/ApfGenerator;Landroid/net/apf/ApfGenerator$Opcodes;Landroid/net/apf/ApfGenerator$Register;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->calculateImmSize(IZ)B +HPLandroid/net/apf/ApfGenerator$Instruction;->calculateTargetLabelOffset()I +HPLandroid/net/apf/ApfGenerator$Instruction;->generate([B)V +HPLandroid/net/apf/ApfGenerator$Instruction;->generateImmSizeField()B +HPLandroid/net/apf/ApfGenerator$Instruction;->generateInstructionByte()B +HPLandroid/net/apf/ApfGenerator$Instruction;->generatedImmSize()B +HPLandroid/net/apf/ApfGenerator$Instruction;->setCompareBytes([B)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setImm(IZ)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setLabel(Ljava/lang/String;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setSignedImm(I)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setTargetLabel(Ljava/lang/String;)V +HPLandroid/net/apf/ApfGenerator$Instruction;->setUnsignedImm(I)V +HPLandroid/net/apf/ApfGenerator$Instruction;->shrink()Z +HPLandroid/net/apf/ApfGenerator$Instruction;->size()I +HPLandroid/net/apf/ApfGenerator$Instruction;->writeValue(I[BI)I +HPLandroid/net/apf/ApfGenerator;->-get0(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; +HPLandroid/net/apf/ApfGenerator;->-get1(Landroid/net/apf/ApfGenerator;)Ljava/util/HashMap; +HPLandroid/net/apf/ApfGenerator;->-get2(Landroid/net/apf/ApfGenerator;)Landroid/net/apf/ApfGenerator$Instruction; +HPLandroid/net/apf/ApfGenerator;->()V +HPLandroid/net/apf/ApfGenerator;->addInstruction(Landroid/net/apf/ApfGenerator$Instruction;)V +HPLandroid/net/apf/ApfGenerator;->addJump(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfBytesNotEqual(Landroid/net/apf/ApfGenerator$Register;[BLjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0Equals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0GreaterThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0LessThan(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addJumpIfR0NotEquals(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad16(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad32(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoad8(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoadFromMemory(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->addLoadImmediate(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->defineLabel(Ljava/lang/String;)Landroid/net/apf/ApfGenerator; +HPLandroid/net/apf/ApfGenerator;->generate()[B +HPLandroid/net/apf/ApfGenerator;->updateInstructionOffsets()I +HPLandroid/net/dhcp/DhcpAckPacket;->toString()Ljava/lang/String; +HPLandroid/net/dhcp/DhcpPacket;->checksum(Ljava/nio/ByteBuffer;III)I +HPLandroid/net/dhcp/DhcpPacket;->decodeFullPacket(Ljava/nio/ByteBuffer;I)Landroid/net/dhcp/DhcpPacket; +HPLandroid/net/dhcp/DhcpPacket;->fillInPacket(ILjava/net/Inet4Address;Ljava/net/Inet4Address;SSLjava/nio/ByteBuffer;BZ)V +HPLandroid/net/dhcp/DhcpPacket;->intAbs(S)I +HPLandroid/net/dhcp/DhcpPacket;->macToString([B)Ljava/lang/String; +HPLandroid/net/dhcp/DhcpPacket;->readIpAddress(Ljava/nio/ByteBuffer;)Ljava/net/Inet4Address; +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$0()V +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->(BLjava/lang/Object;Ljava/lang/Object;)V +HPLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->run()V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->addLogEntry(Ljava/lang/String;)V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->handlePacket([BI)V +HPLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->lambda$-android_net_ip_ConnectivityPacketTracker$PacketListener_4824(Ljava/lang/String;)V +HPLandroid/net/ip/ConnectivityPacketTracker;->-get0(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/os/Handler; +HPLandroid/net/ip/ConnectivityPacketTracker;->-get1(Landroid/net/ip/ConnectivityPacketTracker;)Landroid/util/LocalLog; +HPLandroid/net/ip/IpManager$LoggingCallbackWrapper;->log(Ljava/lang/String;)V +HPLandroid/net/ip/IpManager$RunningState;->processMessage(Landroid/os/Message;)Z +HPLandroid/net/ip/IpManager;->addAllReachableDnsServers(Landroid/net/LinkProperties;Ljava/lang/Iterable;)V +HPLandroid/net/ip/IpManager;->assembleLinkProperties()Landroid/net/LinkProperties; +HPLandroid/net/ip/IpManager;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +HPLandroid/net/ip/IpManager;->getWhatToString(I)Ljava/lang/String; +HPLandroid/net/ip/IpReachabilityMonitor$Callback;->notifyLost(Ljava/net/InetAddress;Ljava/lang/String;)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->evaluateRtNetlinkNeighborMessage(Landroid/net/netlink/RtNetlinkNeighborMessage;J)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->parseNetlinkMessageBuffer(Ljava/nio/ByteBuffer;J)V +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->recvKernelReply()Ljava/nio/ByteBuffer; +HPLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->run()V +HPLandroid/net/ip/IpReachabilityMonitor;->-get0(Landroid/net/ip/IpReachabilityMonitor;)I +HPLandroid/net/ip/IpReachabilityMonitor;->-get1(Landroid/net/ip/IpReachabilityMonitor;)Ljava/util/Map; +HPLandroid/net/ip/IpReachabilityMonitor;->-get2(Landroid/net/ip/IpReachabilityMonitor;)Ljava/lang/Object; +HPLandroid/net/ip/IpReachabilityMonitor;->-get3(Landroid/net/ip/IpReachabilityMonitor;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->-wrap0(Landroid/net/ip/IpReachabilityMonitor;Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->isOnLink(Ljava/util/List;Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->isWatching(Ljava/net/InetAddress;)Z +HPLandroid/net/ip/IpReachabilityMonitor;->updateLinkProperties(Landroid/net/LinkProperties;)V +HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/metrics/INetdEventListener;->onConnectEvent(IIILjava/lang/String;II)V +HPLandroid/net/metrics/INetdEventListener;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V +HPLandroid/net/metrics/INetdEventListener;->onWakeupEvent(Ljava/lang/String;IIJ)V +HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(I)I +HPLandroid/net/netlink/NetlinkConstants;->alignedLengthOf(S)I +HPLandroid/net/netlink/NetlinkConstants;->hexify([B)Ljava/lang/String; +HPLandroid/net/netlink/NetlinkConstants;->stringForNlMsgType(S)Ljava/lang/String; +HPLandroid/net/netlink/NetlinkMessage;->(Landroid/net/netlink/StructNlMsgHdr;)V +HPLandroid/net/netlink/NetlinkMessage;->getHeader()Landroid/net/netlink/StructNlMsgHdr; +HPLandroid/net/netlink/NetlinkMessage;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/NetlinkMessage; +HPLandroid/net/netlink/NetlinkSocket;->checkTimeout(J)V +HPLandroid/net/netlink/NetlinkSocket;->recvMessage(IJ)Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/NetlinkSocket;->recvMessage(J)Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->(Landroid/net/netlink/StructNlMsgHdr;)V +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->findNextAttrOfType(SLjava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getDestination()Ljava/net/InetAddress; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getLinkLayerAddress()[B +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->getNdHeader()Landroid/net/netlink/StructNdMsg; +HPLandroid/net/netlink/RtNetlinkNeighborMessage;->parse(Landroid/net/netlink/StructNlMsgHdr;Ljava/nio/ByteBuffer;)Landroid/net/netlink/RtNetlinkNeighborMessage; +HPLandroid/net/netlink/StructNdMsg;->()V +HPLandroid/net/netlink/StructNdMsg;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNdMsg;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdMsg; +HPLandroid/net/netlink/StructNdMsg;->stringForNudState(S)Ljava/lang/String; +HPLandroid/net/netlink/StructNdaCacheInfo;->()V +HPLandroid/net/netlink/StructNdaCacheInfo;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNdaCacheInfo;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNdaCacheInfo; +HPLandroid/net/netlink/StructNlAttr;->()V +HPLandroid/net/netlink/StructNlAttr;->getAlignedLength()I +HPLandroid/net/netlink/StructNlAttr;->getValueAsByteBuffer()Ljava/nio/ByteBuffer; +HPLandroid/net/netlink/StructNlAttr;->getValueAsInetAddress()Ljava/net/InetAddress; +HPLandroid/net/netlink/StructNlAttr;->getValueAsInt(I)I +HPLandroid/net/netlink/StructNlAttr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; +HPLandroid/net/netlink/StructNlAttr;->peek(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlAttr; +HPLandroid/net/netlink/StructNlMsgHdr;->()V +HPLandroid/net/netlink/StructNlMsgHdr;->hasAvailableSpace(Ljava/nio/ByteBuffer;)Z +HPLandroid/net/netlink/StructNlMsgHdr;->parse(Ljava/nio/ByteBuffer;)Landroid/net/netlink/StructNlMsgHdr; +HPLandroid/net/util/BlockingSocketReader;->createSocket()Ljava/io/FileDescriptor; +HPLandroid/net/util/BlockingSocketReader;->isRunning()Z +HPLandroid/net/util/BlockingSocketReader;->mainLoop()V +HPLandroid/net/util/ConnectivityPacketSummary;->([B[BI)V +HPLandroid/net/util/ConnectivityPacketSummary;->getIPv4AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->getIPv6AddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->getIpAddressString(Ljava/nio/ByteBuffer;I)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->getMacAddressString(Ljava/nio/ByteBuffer;)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->parseARP(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseEther(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborDiscoveryOptions(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6NeighborMessage(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv4(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseIPv6(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->parseUDP(Ljava/util/StringJoiner;)V +HPLandroid/net/util/ConnectivityPacketSummary;->summarize([B[BI)Ljava/lang/String; +HPLandroid/net/util/ConnectivityPacketSummary;->toString()Ljava/lang/String; +HPLandroid/net/util/NetworkConstants;->asUint(B)I +HPLandroid/net/util/NetworkConstants;->asUint(S)I +HPLandroid/net/util/SharedLog;->isRootLogInstance()Z +HPLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V +HPLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String; +HPLandroid/net/wifi/IClientInterface$Stub$Proxy;->signalPoll()[I +HPLandroid/net/wifi/IClientInterface;->disableSupplicant()Z +HPLandroid/net/wifi/IClientInterface;->enableSupplicant()Z +HPLandroid/net/wifi/IClientInterface;->getInterfaceName()Ljava/lang/String; +HPLandroid/net/wifi/IClientInterface;->getMacAddress()[B +HPLandroid/net/wifi/IClientInterface;->getPacketCounters()[I +HPLandroid/net/wifi/IClientInterface;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl; +HPLandroid/net/wifi/IClientInterface;->requestANQP([BLandroid/net/wifi/IANQPDoneCallback;)Z +HPLandroid/net/wifi/IClientInterface;->signalPoll()[I +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoNetworkFound()V +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanFailed()V +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadFailed(I)V +HPLandroid/net/wifi/IPnoScanEvent;->OnPnoScanOverOffloadStarted()V +HPLandroid/net/wifi/IScanEvent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLandroid/net/wifi/IScanEvent;->OnScanFailed()V +HPLandroid/net/wifi/IScanEvent;->OnScanResultReady()V +HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; +HPLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z +HPLandroid/net/wifi/IWifiScannerImpl;->abortScan()V +HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable2gChannels()[I +HPLandroid/net/wifi/IWifiScannerImpl;->getAvailable5gNonDFSChannels()[I +HPLandroid/net/wifi/IWifiScannerImpl;->getAvailableDFSChannels()[I +HPLandroid/net/wifi/IWifiScannerImpl;->getPnoScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; +HPLandroid/net/wifi/IWifiScannerImpl;->getScanResults()[Lcom/android/server/wifi/wificond/NativeScanResult; +HPLandroid/net/wifi/IWifiScannerImpl;->scan(Lcom/android/server/wifi/wificond/SingleScanSettings;)Z +HPLandroid/net/wifi/IWifiScannerImpl;->startPnoScan(Lcom/android/server/wifi/wificond/PnoSettings;)Z +HPLandroid/net/wifi/IWifiScannerImpl;->stopPnoScan()Z +HPLandroid/net/wifi/IWifiScannerImpl;->subscribePnoScanEvents(Landroid/net/wifi/IPnoScanEvent;)V +HPLandroid/net/wifi/IWifiScannerImpl;->subscribeScanEvents(Landroid/net/wifi/IScanEvent;)V +HPLandroid/net/wifi/IWifiScannerImpl;->unsubscribePnoScanEvents()V +HPLandroid/net/wifi/IWifiScannerImpl;->unsubscribeScanEvents()V +HPLandroid/net/wifi/IWificond;->GetApInterfaces()Ljava/util/List; +HPLandroid/net/wifi/IWificond;->GetClientInterfaces()Ljava/util/List; +HPLandroid/net/wifi/IWificond;->RegisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V +HPLandroid/net/wifi/IWificond;->UnregisterCallback(Landroid/net/wifi/IInterfaceEventCallback;)V +HPLandroid/net/wifi/IWificond;->createApInterface()Landroid/net/wifi/IApInterface; +HPLandroid/net/wifi/IWificond;->createClientInterface()Landroid/net/wifi/IClientInterface; +HPLandroid/net/wifi/IWificond;->tearDownInterfaces()V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$1(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$2(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->(ZIJ)V +HPLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$4;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$2;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo; +HPLcom/android/server/AlarmManagerService$2;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HPLcom/android/server/AlarmManagerService$2;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V +HPLcom/android/server/AlarmManagerService$Alarm;->(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V +HPLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/AlarmManagerService$Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z +HPLcom/android/server/AlarmManagerService$Alarm;->matches(Ljava/lang/String;)Z +HPLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/AlarmManagerService$AlarmThread;->run()V +HPLcom/android/server/AlarmManagerService$Batch;->(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)V +HPLcom/android/server/AlarmManagerService$Batch;->add(Lcom/android/server/AlarmManagerService$Alarm;)Z +HPLcom/android/server/AlarmManagerService$Batch;->canHold(JJ)Z +HPLcom/android/server/AlarmManagerService$Batch;->get(I)Lcom/android/server/AlarmManagerService$Alarm; +HPLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z +HPLcom/android/server/AlarmManagerService$Batch;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z +HPLcom/android/server/AlarmManagerService$Batch;->remove(Ljava/lang/String;)Z +HPLcom/android/server/AlarmManagerService$Batch;->size()I +HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Batch;Lcom/android/server/AlarmManagerService$Batch;)I +HPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight; +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight; +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V +HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V +HPLcom/android/server/AlarmManagerService$InFlight;->(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Landroid/os/WorkSource;ILjava/lang/String;ILjava/lang/String;J)V +HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I +HPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/AlarmManagerService;->-get0(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent; +HPLcom/android/server/AlarmManagerService;->-get3(Lcom/android/server/AlarmManagerService;)I +HPLcom/android/server/AlarmManagerService;->-get4(Lcom/android/server/AlarmManagerService;)I +HPLcom/android/server/AlarmManagerService;->-set0(Lcom/android/server/AlarmManagerService;J)J +HPLcom/android/server/AlarmManagerService;->-set4(Lcom/android/server/AlarmManagerService;I)I +HPLcom/android/server/AlarmManagerService;->-set5(Lcom/android/server/AlarmManagerService;I)I +HPLcom/android/server/AlarmManagerService;->-wrap0(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->-wrap4(Lcom/android/server/AlarmManagerService;J)I +HPLcom/android/server/AlarmManagerService;->-wrap5(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HPLcom/android/server/AlarmManagerService;->-wrap7(Lcom/android/server/AlarmManagerService;)V +HPLcom/android/server/AlarmManagerService;->addBatchLocked(Ljava/util/ArrayList;Lcom/android/server/AlarmManagerService$Batch;)Z +HPLcom/android/server/AlarmManagerService;->attemptCoalesceLocked(JJ)I +HPLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V +HPLcom/android/server/AlarmManagerService;->convertToElapsed(JI)J +HPLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V +HPLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch; +HPLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats; +HPLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J +HPLcom/android/server/AlarmManagerService;->reAddAlarmLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V +HPLcom/android/server/AlarmManagerService;->rebatchAllAlarmsLocked(Z)V +HPLcom/android/server/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V +HPLcom/android/server/AlarmManagerService;->removeLocked(Ljava/lang/String;)V +HPLcom/android/server/AlarmManagerService;->rescheduleKernelAlarmsLocked()V +HPLcom/android/server/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V +HPLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V +HPLcom/android/server/AlarmManagerService;->setImplLocked(Lcom/android/server/AlarmManagerService$Alarm;ZZ)V +HPLcom/android/server/AlarmManagerService;->setLocked(IJ)V +HPLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;IZ)V +HPLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;JJ)Z +HPLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V +HPLcom/android/server/AnyMotionDetector$DeviceIdleCallback;->onAnyMotionResult(I)V +HPLcom/android/server/AppOpsService$3;->getMountMode(ILjava/lang/String;)I +HPLcom/android/server/AppOpsService$3;->hasExternalStorage(ILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->checkOperation(IILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->checkPackage(ILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->checkRestrictionLocked(IIILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->collectOps(Lcom/android/server/AppOpsService$Ops;[I)Ljava/util/ArrayList; +HPLcom/android/server/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V +HPLcom/android/server/AppOpsService;->finishOperationLocked(Lcom/android/server/AppOpsService$Op;)V +HPLcom/android/server/AppOpsService;->getOpLocked(IILjava/lang/String;Z)Lcom/android/server/AppOpsService$Op; +HPLcom/android/server/AppOpsService;->getOpLocked(Lcom/android/server/AppOpsService$Ops;IZ)Lcom/android/server/AppOpsService$Op; +HPLcom/android/server/AppOpsService;->getOpsRawLocked(ILjava/lang/String;Z)Lcom/android/server/AppOpsService$Ops; +HPLcom/android/server/AppOpsService;->getPackagesForOps([I)Ljava/util/List; +HPLcom/android/server/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->isOperationActive(IILjava/lang/String;)Z +HPLcom/android/server/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z +HPLcom/android/server/AppOpsService;->noteOperation(IILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->noteProxyOperation(ILjava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->notifyWatchersOfChange(I)V +HPLcom/android/server/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String; +HPLcom/android/server/AppOpsService;->scheduleWriteLocked()V +HPLcom/android/server/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V +HPLcom/android/server/AppOpsService;->setUidMode(III)V +HPLcom/android/server/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V +HPLcom/android/server/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V +HPLcom/android/server/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;)I +HPLcom/android/server/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V +HPLcom/android/server/AppOpsService;->systemReady()V +HPLcom/android/server/AppOpsService;->verifyIncomingOp(I)V +HPLcom/android/server/AppOpsService;->verifyIncomingUid(I)V +HPLcom/android/server/AppOpsService;->writeState()V +HPLcom/android/server/AttributeCache$Package;->-get0(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray; +HPLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry; +HPLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache; +HPLcom/android/server/BatteryService$9;->(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +HPLcom/android/server/BatteryService$9;->run()V +HPLcom/android/server/BatteryService$BatteryListener;->batteryPropertiesChanged(Landroid/os/BatteryProperties;)V +HPLcom/android/server/BatteryService$Led;->updateLightsLocked()V +HPLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I +HPLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z +HPLcom/android/server/BatteryService$LocalService;->getPlugType()I +HPLcom/android/server/BatteryService$LocalService;->isPowered(I)Z +HPLcom/android/server/BatteryService;->-get3(Lcom/android/server/BatteryService;)Landroid/os/BatteryProperties; +HPLcom/android/server/BatteryService;->-get6(Lcom/android/server/BatteryService;)Ljava/lang/Object; +HPLcom/android/server/BatteryService;->-wrap0(Lcom/android/server/BatteryService;I)Z +HPLcom/android/server/BatteryService;->-wrap4(Lcom/android/server/BatteryService;Landroid/os/BatteryProperties;)V +HPLcom/android/server/BatteryService;->getIconLocked(I)I +HPLcom/android/server/BatteryService;->isPoweredLocked(I)Z +HPLcom/android/server/BatteryService;->processValuesLocked(Z)V +HPLcom/android/server/BatteryService;->sendIntentLocked()V +HPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z +HPLcom/android/server/BatteryService;->update(Landroid/os/BatteryProperties;)V +HPLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z +HPLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z +HPLcom/android/server/ConnectivityService$1;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V +HPLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z +HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V +HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String; +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V +HPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z +HPLcom/android/server/ConnectivityService;->-get4(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap; +HPLcom/android/server/ConnectivityService;->-getcom-android-server-ConnectivityService$UnneededForSwitchesValues()[I +HPLcom/android/server/ConnectivityService;->-wrap32(Lcom/android/server/ConnectivityService;IZJ)V +HPLcom/android/server/ConnectivityService;->-wrap39(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V +HPLcom/android/server/ConnectivityService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/ConnectivityService;->enforceAccessPermission()V +HPLcom/android/server/ConnectivityService;->enforceConnectivityInternalPermission()V +HPLcom/android/server/ConnectivityService;->filterNetworkStateForUid(Landroid/net/NetworkState;IZ)V +HPLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getActiveNetworkInfo()Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo; +HPLcom/android/server/ConnectivityService;->getDefaultNetwork()Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService;->getFilteredNetworkState(IIZ)Landroid/net/NetworkState; +HPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo; +HPLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HPLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities; +HPLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo; +HPLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo; +HPLcom/android/server/ConnectivityService;->getUnfilteredActiveNetworkState(I)Landroid/net/NetworkState; +HPLcom/android/server/ConnectivityService;->getVpnUnderlyingNetworks(I)[Landroid/net/Network; +HPLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +HPLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +HPLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z +HPLcom/android/server/ConnectivityService;->isNetworkWithLinkPropertiesBlocked(Landroid/net/LinkProperties;IZ)Z +HPLcom/android/server/ConnectivityService;->isSystem(I)Z +HPLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest; +HPLcom/android/server/ConnectivityService;->maybeLogBlockedNetworkInfo(Landroid/net/NetworkInfo;I)V +HPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V +HPLcom/android/server/ConnectivityService;->processListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V +HPLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V +HPLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V +HPLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V +HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;I)V +HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V +HPLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z +HPLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V +HPLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V +HPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z +HPLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V +HPLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V +HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/DeviceIdleController;->-get7(Lcom/android/server/DeviceIdleController;)Landroid/os/RemoteCallbackList; +HPLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V +HPLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z +HPLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V +HPLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V +HPLcom/android/server/DeviceIdleController;->setJobsActive(Z)V +HPLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V +HPLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z +HPLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/DropBoxManagerService$EntryFile;->(J)V +HPLcom/android/server/DropBoxManagerService$EntryFile;->(Ljava/io/File;I)V +HPLcom/android/server/DropBoxManagerService$EntryFile;->(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V +HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I +HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I +HPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String; +HPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File; +HPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String; +HPLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z +HPLcom/android/server/DropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V +HPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J +HPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V +HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry; +HPLcom/android/server/DropBoxManagerService;->init()V +HPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z +HPLcom/android/server/DropBoxManagerService;->trimToFit()J +HPLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V +HPLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V +HPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V +HPLcom/android/server/GraphicsStatsService$ActiveBuffer;->(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)V +HPLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Lcom/android/server/GraphicsStatsService$ActiveBuffer; +HPLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar; +HPLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor; +HPLcom/android/server/InputMethodManagerService$ClientState;->toString()Ljava/lang/String; +HPLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +HPLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V +HPLcom/android/server/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V +HPLcom/android/server/InputMethodManagerService$StartInputInfo;->(Landroid/os/IBinder;Ljava/lang/String;IZLandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V +HPLcom/android/server/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->buildInputMethodListLocked(Z)V +HPLcom/android/server/InputMethodManagerService;->calledFromValidUser()Z +HPLcom/android/server/InputMethodManagerService;->calledWithValidToken(Landroid/os/IBinder;)Z +HPLcom/android/server/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V +HPLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype; +HPLcom/android/server/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List; +HPLcom/android/server/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z +HPLcom/android/server/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +HPLcom/android/server/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V +HPLcom/android/server/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/InputMethodManagerService$SessionState;)V +HPLcom/android/server/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;Landroid/os/IBinder;II)V +HPLcom/android/server/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z +HPLcom/android/server/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z +HPLcom/android/server/InputMethodManagerService;->startInput(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputLocked(ILcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/InputMethodManagerService;->unbindCurrentClientLocked(I)V +HPLcom/android/server/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/InputMethodManagerService;->updateSystemUiLocked(Landroid/os/IBinder;II)V +HPLcom/android/server/InputMethodManagerService;->windowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;I)Lcom/android/internal/view/InputBindResult; +HPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z +HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z +HPLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z +HPLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HPLcom/android/server/IntentResolver;->queryIntentFromList(Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;I)Ljava/util/List; +HPLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V +HPLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V +HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V +HPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V +HPLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I +HPLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I +HPLcom/android/server/LocationManagerService$1;->onPackageDisappeared(Ljava/lang/String;I)V +HPLcom/android/server/LocationManagerService$5$1;->(Lcom/android/server/LocationManagerService$5;II)V +HPLcom/android/server/LocationManagerService$5$1;->run()V +HPLcom/android/server/LocationManagerService$5;->onUidImportance(II)V +HPLcom/android/server/LocationManagerService$LocationWorkerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/LocationManagerService$Receiver;->-wrap0(Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService$Receiver;->(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V +HPLcom/android/server/LocationManagerService$Receiver;->callLocationChangedLocked(Landroid/location/Location;)Z +HPLcom/android/server/LocationManagerService$Receiver;->decrementPendingBroadcastsLocked()V +HPLcom/android/server/LocationManagerService$Receiver;->incrementPendingBroadcastsLocked()V +HPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V +HPLcom/android/server/LocationManagerService$UpdateRecord;->(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService;->-get4(Lcom/android/server/LocationManagerService;)Lcom/android/server/LocationManagerService$LocationWorkerHandler; +HPLcom/android/server/LocationManagerService;->-wrap6(Lcom/android/server/LocationManagerService;II)V +HPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->checkCallerIsProvider()V +HPLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUse(ILjava/lang/String;)V +HPLcom/android/server/LocationManagerService;->doesUidHavePackage(ILjava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->getAllProviders()Ljava/util/List; +HPLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I +HPLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I +HPLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location; +HPLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUse(Ljava/lang/String;)I +HPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver; +HPLcom/android/server/LocationManagerService;->handleLocationChanged(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->handleLocationChangedLocked(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->isAllowedByCurrentUserSettingsLocked(Ljava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->isAllowedByUserSettingsLocked(Ljava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->isCurrentProfile(I)Z +HPLcom/android/server/LocationManagerService;->isImportanceForeground(I)Z +HPLcom/android/server/LocationManagerService;->isProviderEnabled(Ljava/lang/String;)Z +HPLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/LocationManagerService$Identity;)Z +HPLcom/android/server/LocationManagerService;->locationCallbackFinished(Landroid/location/ILocationListener;)V +HPLcom/android/server/LocationManagerService;->onUidImportanceChanged(II)V +HPLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V +HPLcom/android/server/LocationManagerService;->reportLocation(Landroid/location/Location;Z)V +HPLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z +HPLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +HPLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I +HPLcom/android/server/LocationManagerService;->shouldBroadcastSafe(Landroid/location/Location;Landroid/location/Location;Lcom/android/server/LocationManagerService$UpdateRecord;J)Z +HPLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;->(ILjava/lang/String;)V +HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V +HPLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent; +HPLcom/android/server/NativeDaemonConnector;->appendEscaped(Ljava/lang/StringBuilder;Ljava/lang/String;)V +HPLcom/android/server/NativeDaemonConnector;->executeForList(JLjava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent; +HPLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/NativeDaemonConnector;->listenToSocket()V +HPLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V +HPLcom/android/server/NativeDaemonConnector;->makeCommand(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;ILjava/lang/String;[Ljava/lang/Object;)V +HPLcom/android/server/NativeDaemonConnector;->uptimeMillisInt()I +HPLcom/android/server/NativeDaemonEvent;->(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V +HPLcom/android/server/NativeDaemonEvent;->getCode()I +HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z +HPLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z +HPLcom/android/server/NativeDaemonEvent;->parseRawEvent(Ljava/lang/String;[Ljava/io/FileDescriptor;)Lcom/android/server/NativeDaemonEvent; +HPLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String; +HPLcom/android/server/NativeDaemonEvent;->unescapeArgs(Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/server/NetworkManagementInternal;->isNetworkRestrictedForUid(I)Z +HPLcom/android/server/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z +HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onCheckHoldWakeLock(I)Z +HPLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z +HPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats; +HPLcom/android/server/NetworkManagementService;->-wrap1(Lcom/android/server/NetworkManagementService;I)Z +HPLcom/android/server/NetworkManagementService;->-wrap6(Lcom/android/server/NetworkManagementService;IIJIZ)V +HPLcom/android/server/NetworkManagementService;->enforceSystemUid()V +HPLcom/android/server/NetworkManagementService;->getFirewallChainState(I)Z +HPLcom/android/server/NetworkManagementService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats; +HPLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray; +HPLcom/android/server/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/NetworkManagementService$NetworkManagementEventCallback;)V +HPLcom/android/server/NetworkManagementService;->isNetworkRestrictedInternal(I)Z +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18910(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_21126(IZJLandroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29429(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V +HPLcom/android/server/NetworkManagementService;->monitor()V +HPLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IIJIZ)V +HPLcom/android/server/NetworkManagementService;->setFirewallUidRule(III)V +HPLcom/android/server/NetworkManagementService;->setFirewallUidRuleLocked(III)V +HPLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V +HPLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V +HPLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z +HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData; +HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String; +HPLcom/android/server/NetworkScoreService;->canCallerRequestScores()Z +HPLcom/android/server/NetworkScoreService;->canCallerScoreNetworks()Z +HPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String; +HPLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z +HPLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z +HPLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V +HPLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z +HPLcom/android/server/NsdService$DaemonConnectionSupplier;->get(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection; +HPLcom/android/server/NsdService$NsdSettings;->isEnabled()Z +HPLcom/android/server/NsdService$NsdSettings;->putEnabledStatus(Z)V +HPLcom/android/server/NsdService$NsdSettings;->registerContentObserver(Landroid/net/Uri;Landroid/database/ContentObserver;)V +HPLcom/android/server/PersistentDataBlockManagerInternal;->getFrpCredentialHandle()[B +HPLcom/android/server/PersistentDataBlockManagerInternal;->setFrpCredentialHandle([B)V +HPLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B +HPLcom/android/server/ServiceWatcher$1;->onPackageUpdateFinished(Ljava/lang/String;I)V +HPLcom/android/server/ServiceWatcher;->bindBestPackageLocked(Ljava/lang/String;Z)Z +HPLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z +HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I +HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z +HPLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I +HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J +HPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume; +HPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo; +HPLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z +HPLcom/android/server/SystemServer;->startOtherServices()V +HPLcom/android/server/SystemServiceManager;->startUser(I)V +HPLcom/android/server/SystemServiceManager;->unlockUser(I)V +HPLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z +HPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V +HPLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V +HPLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V +HPLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V +HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V +HPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V +HPLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V +HPLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V +HPLcom/android/server/TextServicesManagerService;->buildSpellCheckerMapLocked(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V +HPLcom/android/server/TextServicesManagerService;->calledFromValidUser()Z +HPLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerSubtype(Ljava/lang/String;Z)Landroid/view/textservice/SpellCheckerSubtype; +HPLcom/android/server/ThreadPriorityBooster;->boost()V +HPLcom/android/server/ThreadPriorityBooster;->reset()V +HPLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V +HPLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z +HPLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V +HPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V +HPLcom/android/server/UiModeManagerService;->updateLocked(II)V +HPLcom/android/server/VibratorService$Vibration;->-get0(Lcom/android/server/VibratorService$Vibration;)Landroid/os/VibrationEffect; +HPLcom/android/server/VibratorService$Vibration;->-get4(Lcom/android/server/VibratorService$Vibration;)I +HPLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->doCancelVibrateLocked()V +HPLcom/android/server/VibratorService;->doVibratorOff()V +HPLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J +HPLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I +HPLcom/android/server/VibratorService;->reportFinishVibrationLocked()V +HPLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V +HPLcom/android/server/VibratorService;->verifyIncomingUid(I)V +HPLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILandroid/os/IBinder;)V +HPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V +HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I +HPLcom/android/server/Watchdog$HandlerChecker;->run()V +HPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V +HPLcom/android/server/Watchdog$OpenFdMonitor;->monitor()Z +HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I +HPLcom/android/server/Watchdog;->run()V +HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;)Landroid/view/accessibility/IAccessibilityInteractionConnection; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap1(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canDispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canGetAccessibilityNodeInfoLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findA11yWindowInfoById(I)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getActiveWindowId()I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isRetrievalAllowingWindow(I)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->notifyWindowsChanged()V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateActiveAndAccessibilityFocusedWindowLocked(IJII)V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateWindowsLocked(Ljava/util/List;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service$1;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->-wrap3(Lcom/android/server/accessibility/AccessibilityManagerService$Service;ILandroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->canReceiveEventsLocked()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getConnectionLocked(I)Landroid/view/accessibility/IAccessibilityInteractionConnection; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindows()Ljava/util/List; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCalledForCurrentUserLocked()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback; +HPLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdLocked(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->getTypeForWindowManagerWindowType(I)I +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->onWindowsForAccessibilityChanged(Ljava/util/List;)V +HPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->populateReportedWindow(Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get16(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/graphics/Rect; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get20(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get5(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/util/SparseArray; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-get9(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService;I)Landroid/view/MagnificationSpec; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap12(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->-wrap15(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/IBinder;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;I)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J +HPLcom/android/server/accessibility/AccessibilityManagerService;->doesServiceWantEventLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/view/accessibility/AccessibilityEvent;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService;->findWindowIdLocked(Landroid/os/IBinder;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->getCompatibleMagnificationSpecLocked(I)Landroid/view/MagnificationSpec; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List; +HPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +HPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I +HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->isCapturingFingerprintGestures()Z +HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGesture(I)V +HPLcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;->onFingerprintGestureDetectionActiveChanged(Z)V +HPLcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;->onKeyEvent(Landroid/view/KeyEvent;I)Z +HPLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; +HPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription; +HPLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V +HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V +HPLcom/android/server/accounts/AccountManagerService$Session;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V +HPLcom/android/server/accounts/AccountManagerService$Session;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V +HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V +HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z +HPLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V +HPLcom/android/server/accounts/AccountManagerService$Session;->close()V +HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse; +HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V +HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get10(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get8(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get9(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I +HPLcom/android/server/accounts/AccountManagerService;->-get5(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap; +HPLcom/android/server/accounts/AccountManagerService;->-wrap4(Lcom/android/server/accounts/AccountManagerService;I)Z +HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z +HPLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z +HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B +HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V +HPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I +HPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I +HPLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account; +HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V +HPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(I)[Landroid/accounts/AuthenticatorDescription; +HPLcom/android/server/accounts/AccountManagerService;->getCredentialPermissionNotificationId(Landroid/accounts/Account;Ljava/lang/String;I)Lcom/android/server/accounts/AccountManagerService$NotificationId; +HPLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId; +HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray; +HPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts; +HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager; +HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z +HPLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z +HPLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z +HPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;II[Ljava/lang/String;)Z +HPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z +HPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z +HPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z +HPLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z +HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +HPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer; +HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-get0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z +HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J +HPLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map; +HPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;I)V +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getAllServices(I)Ljava/util/Collection; +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo; +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->invalidateCache(I)V +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->setListener(Landroid/content/pm/RegisteredServicesCacheListener;Landroid/os/Handler;)V +HPLcom/android/server/accounts/IAccountAuthenticatorCache;->updateServices(I)V +HPLcom/android/server/accounts/TokenCache$Key;->hashCode()I +HPLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String; +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$1()V +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->(BIIIIIIIILjava/lang/Object;)V +HPLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->run()V +HPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->$m$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/ActiveServices$ServiceLookupResult;->(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;->(Lcom/android/server/am/ActiveServices;)V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;->(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter;)V +HPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z +HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +HPLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z +HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V +HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZ)Ljava/lang/String; +HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;)V +HPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V +HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZZLandroid/util/ArrayMap;)Z +HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord; +HPLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V +HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List; +HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord; +HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap; +HPLcom/android/server/am/ActiveServices;->hasBackgroundServicesLocked(I)Z +HPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z +HPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V +HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo; +HPLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V +HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Z)V +HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z +HPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V +HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IIIZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult; +HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z +HPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V +HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V +HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZ)V +HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZ)Landroid/content/ComponentName; +HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V +HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V +HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V +HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z +HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z +HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V +HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;Z)Z +HPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V +HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z +HPLcom/android/server/am/ActivityManagerService$1;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z +HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +HPLcom/android/server/am/ActivityManagerService$1;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z +HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Landroid/content/IntentFilter; +HPLcom/android/server/am/ActivityManagerService$1;->newArray(I)[Lcom/android/server/am/BroadcastFilter; +HPLcom/android/server/am/ActivityManagerService$1;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HPLcom/android/server/am/ActivityManagerService$1;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter; +HPLcom/android/server/am/ActivityManagerService$20;->run()V +HPLcom/android/server/am/ActivityManagerService$24;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I +HPLcom/android/server/am/ActivityManagerService$24;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/am/ActivityManagerService$2;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$2;->lambda$-com_android_server_am_ActivityManagerService$2_102488(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z +HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V +HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V +HPLcom/android/server/am/ActivityManagerService$AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; +HPLcom/android/server/am/ActivityManagerService$GrantUri;->(ILandroid/net/Uri;Z)V +HPLcom/android/server/am/ActivityManagerService$GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/am/ActivityManagerService$GrantUri; +HPLcom/android/server/am/ActivityManagerService$GraphicsBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z +HPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z +HPLcom/android/server/am/ActivityManagerService$KillHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionFinished()V +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;J)V +HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V +HPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService$MemItem;->(Ljava/lang/String;Ljava/lang/String;JJI)V +HPLcom/android/server/am/ActivityManagerService$MemItem;->(Ljava/lang/String;Ljava/lang/String;JJIZ)V +HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityManagerService;->-get5(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder; +HPLcom/android/server/am/ActivityManagerService;->-wrap2(Lcom/android/server/am/ActivityManagerService;II)V +HPLcom/android/server/am/ActivityManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V +HPLcom/android/server/am/ActivityManagerService;->activityPaused(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->activityResumed(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V +HPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V +HPLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V +HPLcom/android/server/am/ActivityManagerService;->applyOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZJJ)Z +HPLcom/android/server/am/ActivityManagerService;->applyUpdateLockStateLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;)V +HPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;I)Z +HPLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V +HPLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V +HPLcom/android/server/am/ActivityManagerService;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZI)I +HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I +HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue; +HPLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V +HPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I +HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I +HPLcom/android/server/am/ActivityManagerService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;IZ)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked()V +HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;I)Lcom/android/server/am/ActivityManagerService$NeededUriGrants; +HPLcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Lcom/android/server/am/ActivityManagerService$GrantUri;II)I +HPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I +HPLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I +HPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z +HPLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;IZ[Ljava/lang/String;)Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo; +HPLcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)I +HPLcom/android/server/am/ActivityManagerService;->createRecentTaskInfoFromTaskRecord(Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo; +HPLcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z +HPLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V +HPLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V +HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChanged()V +HPLcom/android/server/am/ActivityManagerService;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/ActivityManagerService$UidObserverRegistration;I)V +HPLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;)V +HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V +HPLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZ)V +HPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V +HPLcom/android/server/am/ActivityManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/am/ActivityRecord;I)Z +HPLcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V +HPLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z +HPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V +HPLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle; +HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLocked(ILjava/lang/String;IIZZ)I +HPLcom/android/server/am/ActivityManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet; +HPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder; +HPLcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/ContentProviderHolder; +HPLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo; +HPLcom/android/server/am/ActivityManagerService;->getFocusedStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityManagerService;->getFocusedStackId()I +HPLcom/android/server/am/ActivityManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent; +HPLcom/android/server/am/ActivityManagerService;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; +HPLcom/android/server/am/ActivityManagerService;->getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender; +HPLcom/android/server/am/ActivityManagerService;->getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I +HPLcom/android/server/am/ActivityManagerService;->getLastResumedActivityUserId()I +HPLcom/android/server/am/ActivityManagerService;->getLockTaskModeState()I +HPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V +HPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I +HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V +HPLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal; +HPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; +HPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/am/ActivityManagerService;->getTasks(II)Ljava/util/List; +HPLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I +HPLcom/android/server/am/ActivityManagerService;->grantEphemeralAccessLocked(ILandroid/content/Intent;II)V +HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V +HPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V +HPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->idleUids()V +HPLcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection; +HPLcom/android/server/am/ActivityManagerService;->incrementProcStateSeqAndNotifyAppsLocked()V +HPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z +HPLcom/android/server/am/ActivityManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z +HPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z +HPLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(I)Z +HPLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z +HPLcom/android/server/am/ActivityManagerService;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;Landroid/util/ArraySet;)Z +HPLcom/android/server/am/ActivityManagerService;->isShuttingDownLocked()Z +HPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z +HPLcom/android/server/am/ActivityManagerService;->isSleepingLocked()Z +HPLcom/android/server/am/ActivityManagerService;->isTopOfTask(Landroid/os/IBinder;)Z +HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z +HPLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z +HPLcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z +HPLcom/android/server/am/ActivityManagerService;->killProcessGroup(II)V +HPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V +HPLcom/android/server/am/ActivityManagerService;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->maybeUpdateUsageStatsLocked(Lcom/android/server/am/ProcessRecord;J)V +HPLcom/android/server/am/ActivityManagerService;->monitor()V +HPLcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZI)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;ILjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;ILjava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V +HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/am/ActivityManagerService;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I +HPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V +HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V +HPLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJ)V +HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z +HPLcom/android/server/am/ActivityManagerService;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent; +HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V +HPLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V +HPLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)V +HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V +HPLcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V +HPLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V +HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HPLcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;III)V +HPLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V +HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V +HPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V +HPLcom/android/server/am/ActivityManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V +HPLcom/android/server/am/ActivityManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/ActivityManagerService;->showAskCompatModeDialogLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I +HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IILandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association; +HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord; +HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActivityManagerService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName; +HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;ILandroid/content/ComponentName;)V +HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I +HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z +HPLcom/android/server/am/ActivityManagerService;->stringifyKBSize(J)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->stringifySize(JI)Ljava/lang/String; +HPLcom/android/server/am/ActivityManagerService;->trimApplications()V +HPLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z +HPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z +HPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V +HPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V +HPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V +HPLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZILcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z +HPLcom/android/server/am/ActivityManagerService;->updateGlobalConfiguration(Landroid/content/res/Configuration;ZZIZ)I +HPLcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;JILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I +HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V +HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)Z +HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Z)Z +HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZZ)V +HPLcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent; +HPLcom/android/server/am/ActivityManagerShellCommand;->runStartActivity(Ljava/io/PrintWriter;)I +HPLcom/android/server/am/ActivityMetricsLogger;->allStacksWindowsDrawn()Z +HPLcom/android/server/am/ActivityMetricsLogger;->isAnyTransitionActive()Z +HPLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionMultiEvents()V +HPLcom/android/server/am/ActivityMetricsLogger;->logWindowState()V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyBindApplication(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyStartingWindowDrawn(IJ)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;J)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityMetricsLogger;->notifyWindowsDrawn(IJ)V +HPLcom/android/server/am/ActivityRecord$Token;->-wrap0(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord$Token;->toString()Ljava/lang/String; +HPLcom/android/server/am/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/am/ActivityRecord$Token;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/am/ActivityStackSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V +HPLcom/android/server/am/ActivityRecord;->applyOptionsLocked()V +HPLcom/android/server/am/ActivityRecord;->canShowWhenLocked()Z +HPLcom/android/server/am/ActivityRecord;->canTurnScreenOn()Z +HPLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z +HPLcom/android/server/am/ActivityRecord;->completeResumeLocked()V +HPLcom/android/server/am/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/ActivityRecord;->continueLaunchTickingLocked()Z +HPLcom/android/server/am/ActivityRecord;->createWindowContainer()V +HPLcom/android/server/am/ActivityRecord;->ensureActivityConfigurationLocked(IZ)Z +HPLcom/android/server/am/ActivityRecord;->finishLaunchTickingLocked()V +HPLcom/android/server/am/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;->getDisplayId()I +HPLcom/android/server/am/ActivityRecord;->getParent()Lcom/android/server/am/ConfigurationContainer; +HPLcom/android/server/am/ActivityRecord;->getStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityRecord;->getStackId()I +HPLcom/android/server/am/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityRecord;->getTask()Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityRecord;->handleAlreadyVisible()Z +HPLcom/android/server/am/ActivityRecord;->hasDismissKeyguardWindows()Z +HPLcom/android/server/am/ActivityRecord;->isAssistantActivity()Z +HPLcom/android/server/am/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z +HPLcom/android/server/am/ActivityRecord;->isFocusable()Z +HPLcom/android/server/am/ActivityRecord;->isHomeActivity()Z +HPLcom/android/server/am/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityRecord;->isPersistable()Z +HPLcom/android/server/am/ActivityRecord;->isRecentsActivity()Z +HPLcom/android/server/am/ActivityRecord;->isResolverActivity()Z +HPLcom/android/server/am/ActivityRecord;->okToShowLocked()Z +HPLcom/android/server/am/ActivityRecord;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/am/ActivityRecord;->onStartingWindowDrawn(J)V +HPLcom/android/server/am/ActivityRecord;->onWindowsDrawn(J)V +HPLcom/android/server/am/ActivityRecord;->onWindowsVisible()V +HPLcom/android/server/am/ActivityRecord;->removeOrphanedStartingWindow(Z)V +HPLcom/android/server/am/ActivityRecord;->reportLaunchTimeLocked(J)V +HPLcom/android/server/am/ActivityRecord;->resumeKeyDispatchingLocked()V +HPLcom/android/server/am/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityRecord;->setTask(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/ActivityRecord;->setVisibility(Z)V +HPLcom/android/server/am/ActivityRecord;->setVisible(Z)V +HPLcom/android/server/am/ActivityRecord;->shouldBeVisibleIgnoringKeyguard(Z)Z +HPLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZZ)V +HPLcom/android/server/am/ActivityRecord;->startLaunchTickingLocked()V +HPLcom/android/server/am/ActivityRecord;->stopFreezingScreenLocked(Z)V +HPLcom/android/server/am/ActivityRecord;->supportsPictureInPicture()Z +HPLcom/android/server/am/ActivityRecord;->toString()Ljava/lang/String; +HPLcom/android/server/am/ActivityRecord;->updateOverrideConfiguration()V +HPLcom/android/server/am/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V +HPLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;IZLjava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->addToStopping(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStack;->adjustFocusedActivityStackLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->canShowWithInsecureKeyguard()Z +HPLcom/android/server/am/ActivityStack;->cancelInitializingActivities()V +HPLcom/android/server/am/ActivityStack;->checkKeyguardVisibility(Lcom/android/server/am/ActivityRecord;ZZ)Z +HPLcom/android/server/am/ActivityStack;->checkReadyForSleep()V +HPLcom/android/server/am/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStack;->closeSystemDialogsLocked()V +HPLcom/android/server/am/ActivityStack;->completePauseLocked(ZLcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->destroyActivityLocked(Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)Z +HPLcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V +HPLcom/android/server/am/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStack;->findStackInsertIndex(Z)I +HPLcom/android/server/am/ActivityStack;->findTaskLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult;)V +HPLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z +HPLcom/android/server/am/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/am/ActivityRecord;IZ)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z +HPLcom/android/server/am/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStack;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V +HPLcom/android/server/am/ActivityStack;->getAllTasks()Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStack;->getDisplay()Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStack;->getStackId()I +HPLcom/android/server/am/ActivityStack;->getTasksLocked(Ljava/util/List;IZ)V +HPLcom/android/server/am/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->getTopStackOnDisplay()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/ActivityStack;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStack;->insertTaskAtTop(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->isAssistantStack()Z +HPLcom/android/server/am/ActivityStack;->isAttached()Z +HPLcom/android/server/am/ActivityStack;->isDockedStack()Z +HPLcom/android/server/am/ActivityStack;->isFocusable()Z +HPLcom/android/server/am/ActivityStack;->isHomeOrRecentsStack()Z +HPLcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->isPinnedStack()Z +HPLcom/android/server/am/ActivityStack;->isStackTranslucent(Lcom/android/server/am/ActivityRecord;I)Z +HPLcom/android/server/am/ActivityStack;->logStartActivity(ILcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStack;->makeInvisible(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStack;->numActivities()I +HPLcom/android/server/am/ActivityStack;->rankTaskLayers(I)I +HPLcom/android/server/am/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Ljava/util/ArrayList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->removeTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;I)V +HPLcom/android/server/am/ActivityStack;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->resetAffinityTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;ZZI)I +HPLcom/android/server/am/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStack;->schedulePauseTimeout(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->setLaunchTime(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->setResumedActivityLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->shouldBeVisible(Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStack;->shouldSleepActivities()Z +HPLcom/android/server/am/ActivityStack;->shouldSleepOrShutDownActivities()Z +HPLcom/android/server/am/ActivityStack;->startActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZZLandroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStack;->startLaunchTraces(Ljava/lang/String;)V +HPLcom/android/server/am/ActivityStack;->startPausingLocked(ZZLcom/android/server/am/ActivityRecord;Z)Z +HPLcom/android/server/am/ActivityStack;->stopActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStack;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStack;->topActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topActivityOccludesKeyguard()Z +HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topRunningActivityLocked(Z)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStack;->topTask()Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStack;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V +HPLcom/android/server/am/ActivityStack;->updateBehindFullscreen(ZZLcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/ActivityStack;->updateTaskMovement(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/ActivityStack;->updateTaskReturnToForTopInsertion(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isPrivate()Z +HPLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->isSleeping()Z +HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/am/ActivityRecord;Z)V +HPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/ActivityStackSupervisor;->acquireLaunchWakelock()V +HPLcom/android/server/am/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->allPausedActivitiesComplete()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesComplete()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesIdle()Z +HPLcom/android/server/am/ActivityStackSupervisor;->allResumedActivitiesVisible()Z +HPLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(III)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->cancelInitializingActivities()V +HPLcom/android/server/am/ActivityStackSupervisor;->checkActivityBelongsInStack(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->continueUpdateBounds(I)V +HPLcom/android/server/am/ActivityStackSupervisor;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;IZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->findTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z +HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplay(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStackSupervisor;->getActivityDisplayOrCreateLocked(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +HPLcom/android/server/am/ActivityStackSupervisor;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration; +HPLcom/android/server/am/ActivityStackSupervisor;->getFocusedStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getLastStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getResumedActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->getStack(I)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getStack(IZZ)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(I)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->getStackInfoLocked(Lcom/android/server/am/ActivityStack;)Landroid/app/ActivityManager$StackInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->getStacksOnDefaultDisplay()Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStackSupervisor;->getTasksLocked(ILjava/util/List;IZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;IIIZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFocusedStack(Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFrontOfStackList(Lcom/android/server/am/ActivityStack;Ljava/util/List;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isFrontStackOnDisplay(Lcom/android/server/am/ActivityStack;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isInAnyStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->isStackDockedInEffect(I)Z +HPLcom/android/server/am/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z +HPLcom/android/server/am/ActivityStackSupervisor;->moveFocusableActivityStackToFrontLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->notifyAppTransitionDone()V +HPLcom/android/server/am/ActivityStackSupervisor;->pauseBackStacks(ZLcom/android/server/am/ActivityRecord;Z)Z +HPLcom/android/server/am/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/am/ActivityRecord;ZZ)Ljava/util/ArrayList; +HPLcom/android/server/am/ActivityStackSupervisor;->rankTaskLayersIfNeeded()V +HPLcom/android/server/am/ActivityStackSupervisor;->readyToResume()Z +HPLcom/android/server/am/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z +HPLcom/android/server/am/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked(Lcom/android/server/am/ActivityStack;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleLocked()V +HPLcom/android/server/am/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->sendWaitingVisibleReportLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->setFocusStackUnchecked(Ljava/lang/String;Lcom/android/server/am/ActivityStack;)V +HPLcom/android/server/am/ActivityStackSupervisor;->setLaunchSource(I)V +HPLcom/android/server/am/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/am/ActivityRecord;ZZ)V +HPLcom/android/server/am/ActivityStackSupervisor;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStackSupervisor;->updatePreviousProcessLocked(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStackSupervisor;->updateUIDsPresentOnDisplay()V +HPLcom/android/server/am/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/am/TaskRecord;IILandroid/app/ActivityOptions;)V +HPLcom/android/server/am/ActivityStarter;->computeStackFocus(Lcom/android/server/am/ActivityRecord;ZLandroid/graphics/Rect;ILandroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStarter;->getLaunchStack(Lcom/android/server/am/ActivityRecord;ILcom/android/server/am/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/am/ActivityRecord;IILcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityStack;)V +HPLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/ActivityStarter;->setInitialState(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;ZILcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V +HPLcom/android/server/am/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)I +HPLcom/android/server/am/ActivityStarter;->startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;)I +HPLcom/android/server/am/ActivityStarter;->startActivity(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/ActivityStarter;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILandroid/app/ActivityOptions;ZZ[Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;ZILcom/android/server/am/TaskRecord;Ljava/lang/String;)I +HPLcom/android/server/am/ActivityStarter;->startActivityUnchecked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;[Lcom/android/server/am/ActivityRecord;)I +HPLcom/android/server/am/AppBindRecord;->(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V +HPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V +HPLcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V +HPLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats; +HPLcom/android/server/am/BatteryStatsService;->isOnBattery()Z +HPLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_31479(IIIIIIII)V +HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V +HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V +HPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V +HPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V +HPLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V +HPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V +HPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V +HPLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V +HPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V +HPLcom/android/server/am/BroadcastFilter;->(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V +HPLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V +HPLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V +HPLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z +HPLcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;ZI)V +HPLcom/android/server/am/BroadcastQueue;->enqueueBroadcastHelper(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V +HPLcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z +HPLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z +HPLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +HPLcom/android/server/am/BroadcastQueue;->processCurBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V +HPLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I +HPLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V +HPLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V +HPLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/BroadcastRecord;->(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V +HPLcom/android/server/am/BroadcastRecord;->(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V +HPLcom/android/server/am/BroadcastRecord;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z +HPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord; +HPLcom/android/server/am/BroadcastStats$ActionEntry;->(Ljava/lang/String;)V +HPLcom/android/server/am/BroadcastStats$PackageEntry;->()V +HPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V +HPLcom/android/server/am/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo; +HPLcom/android/server/am/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I +HPLcom/android/server/am/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ConfigurationContainer;->getOverrideConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/am/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V +HPLcom/android/server/am/ConfigurationContainer;->onParentChanged()V +HPLcom/android/server/am/ConnectionRecord;->(Lcom/android/server/am/AppBindRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;)V +HPLcom/android/server/am/ContentProviderConnection;->(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/ContentProviderRecord;->(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V +HPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z +HPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z +HPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder; +HPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle; +HPLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIILjava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJ)V +HPLcom/android/server/am/EventLogTags;->writeAmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmStopActivity(IILjava/lang/String;)V +HPLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V +HPLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V +HPLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V +HPLcom/android/server/am/IntentBindRecord;->(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V +HPLcom/android/server/am/KeyguardController;->beginActivityVisibilityUpdate()V +HPLcom/android/server/am/KeyguardController;->endActivityVisibilityUpdate()V +HPLcom/android/server/am/KeyguardController;->isKeyguardLocked()Z +HPLcom/android/server/am/KeyguardController;->isKeyguardShowing()Z +HPLcom/android/server/am/KeyguardController;->visibilitiesUpdated()V +HPLcom/android/server/am/PendingIntentRecord$Key;->(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V +HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I +HPLcom/android/server/am/PendingIntentRecord;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V +HPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V +HPLcom/android/server/am/PendingIntentRecord;->finalize()V +HPLcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I +HPLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I +HPLcom/android/server/am/ProcessList;->computeNextPssTime(IZZZJ)J +HPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z +HPLcom/android/server/am/ProcessList;->remove(I)V +HPLcom/android/server/am/ProcessList;->setOomAdj(III)V +HPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/am/ProcessRecord;->(Lcom/android/internal/os/BatteryStatsImpl;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V +HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;ILcom/android/server/am/ProcessStatsService;)Z +HPLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V +HPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String; +HPLcom/android/server/am/ProcessRecord;->getSetAdjWithServices()I +HPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V +HPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V +HPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V +HPLcom/android/server/am/ProcessRecord;->modifyRawOomAdj(I)I +HPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V +HPLcom/android/server/am/ProcessRecord;->setPid(I)V +HPLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String; +HPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V +HPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V +HPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I +HPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IILjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState; +HPLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState; +HPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z +HPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z +HPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z +HPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord; +HPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord; +HPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap; +HPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap; +HPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V +HPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V +HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V +HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V +HPLcom/android/server/am/ReceiverList;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V +HPLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/am/ReceiverList;->hashCode()I +HPLcom/android/server/am/RecentTasks;->addLocked(Lcom/android/server/am/TaskRecord;)V +HPLcom/android/server/am/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/am/TaskRecord;)Z +HPLcom/android/server/am/RecentTasks;->syncPersistentTaskIdsLocked()V +HPLcom/android/server/am/RecentTasks;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/RecentTasks;->trimForTaskLocked(Lcom/android/server/am/TaskRecord;Z)I +HPLcom/android/server/am/RecentTasks;->usersWithRecentsLoadedLocked()[I +HPLcom/android/server/am/ServiceRecord$StartItem;->(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/am/ActivityManagerService$NeededUriGrants;I)V +HPLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V +HPLcom/android/server/am/ServiceRecord;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;)V +HPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V +HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZ)Lcom/android/server/am/ServiceRecord$StartItem; +HPLcom/android/server/am/ServiceRecord;->getLastStartId()I +HPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState; +HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z +HPLcom/android/server/am/ServiceRecord;->makeNextStartId()I +HPLcom/android/server/am/ServiceRecord;->postNotification()V +HPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V +HPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord; +HPLcom/android/server/am/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->-wrap0(Lcom/android/server/am/TaskChangeNotificationController;Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V +HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/am/TaskChangeNotificationController;->notifyTaskStackChanged()V +HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->processNextItem()V +HPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->run()V +HPLcom/android/server/am/TaskPersister;->-get0(Lcom/android/server/am/TaskPersister;)J +HPLcom/android/server/am/TaskPersister;->-get1(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/RecentTasks; +HPLcom/android/server/am/TaskPersister;->getUserImagesDir(I)Ljava/io/File; +HPLcom/android/server/am/TaskPersister;->getUserTasksDir(I)Ljava/io/File; +HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V +HPLcom/android/server/am/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V +HPLcom/android/server/am/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List; +HPLcom/android/server/am/TaskPersister;->saveToXml(Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter; +HPLcom/android/server/am/TaskPersister;->wakeup(Lcom/android/server/am/TaskRecord;Z)V +HPLcom/android/server/am/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V +HPLcom/android/server/am/TaskPersister;->writeTaskIdsFiles()V +HPLcom/android/server/am/TaskRecord;->(Lcom/android/server/am/ActivityManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;I)V +HPLcom/android/server/am/TaskRecord;->addActivityAtIndex(ILcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/TaskRecord;->addActivityToTop(Lcom/android/server/am/ActivityRecord;)V +HPLcom/android/server/am/TaskRecord;->createWindowContainer(ZZ)V +HPLcom/android/server/am/TaskRecord;->findEffectiveRootIndex()I +HPLcom/android/server/am/TaskRecord;->freeLastThumbnail()V +HPLcom/android/server/am/TaskRecord;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V +HPLcom/android/server/am/TaskRecord;->getBaseIntent()Landroid/content/Intent; +HPLcom/android/server/am/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect; +HPLcom/android/server/am/TaskRecord;->getStack()Lcom/android/server/am/ActivityStack; +HPLcom/android/server/am/TaskRecord;->getStackId()I +HPLcom/android/server/am/TaskRecord;->getTaskToReturnTo()I +HPLcom/android/server/am/TaskRecord;->getTopActivity()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/am/TaskRecord;->isHomeTask()Z +HPLcom/android/server/am/TaskRecord;->isOverHomeStack()Z +HPLcom/android/server/am/TaskRecord;->isResizeable()Z +HPLcom/android/server/am/TaskRecord;->isResizeable(Z)Z +HPLcom/android/server/am/TaskRecord;->performClearTaskLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/TaskRecord;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/am/ActivityStackSupervisor;)Lcom/android/server/am/TaskRecord; +HPLcom/android/server/am/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/am/TaskRecord;->setFrontOfTask()V +HPLcom/android/server/am/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V +HPLcom/android/server/am/TaskRecord;->supportsSplitScreen()Z +HPLcom/android/server/am/TaskRecord;->topRunningActivityLocked()Lcom/android/server/am/ActivityRecord; +HPLcom/android/server/am/TaskRecord;->touchActiveTime()V +HPLcom/android/server/am/TaskRecord;->updateEffectiveIntent()V +HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z +HPLcom/android/server/am/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/am/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect; +HPLcom/android/server/am/TaskRecord;->updateTaskDescription()V +HPLcom/android/server/am/UidRecord;->(I)V +HPLcom/android/server/am/UidRecord;->reset()V +HPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V +HPLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V +HPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I +HPLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I +HPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService; +HPLcom/android/server/am/UserController;->exists(I)Z +HPLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo; +HPLcom/android/server/am/UserController;->getCurrentUserIdLocked()I +HPLcom/android/server/am/UserController;->getProfileIds(I)Ljava/util/Set; +HPLcom/android/server/am/UserController;->getStartedUserArrayLocked()[I +HPLcom/android/server/am/UserController;->getStartedUserStateLocked(I)Lcom/android/server/am/UserState; +HPLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z +HPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z +HPLcom/android/server/am/UserController;->isUserRunningLocked(II)Z +HPLcom/android/server/am/UserController;->unsafeConvertIncomingUserLocked(I)I +HPLcom/android/server/am/VrController;->onTopProcChangedLocked(Lcom/android/server/am/ProcessRecord;)V +HPLcom/android/server/am/VrController;->onVrModeChanged(Lcom/android/server/am/ActivityRecord;)Z +HPLcom/android/server/am/VrController;->setVrRenderThreadLocked(IIZ)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->(ILandroid/content/ComponentName;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->-get9(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z +HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToFileLocked(Ljava/io/FileOutputStream;I)Z +HPLcom/android/server/audio/AudioEventLogger$Event;->()V +HPLcom/android/server/audio/AudioEventLogger;->log(Lcom/android/server/audio/AudioEventLogger$Event;)V +HPLcom/android/server/audio/AudioService$2;->disableAudioForUid(ZI)V +HPLcom/android/server/audio/AudioService$2;->onUidCachedChanged(IZ)V +HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z +HPLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V +HPLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String; +HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z +HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I +HPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V +HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z +HPLcom/android/server/audio/AudioService;->-get17(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver; +HPLcom/android/server/audio/AudioService;->-get27(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/PlaybackActivityMonitor; +HPLcom/android/server/audio/AudioService;->-get35(Lcom/android/server/audio/AudioService;)Landroid/media/SoundPool; +HPLcom/android/server/audio/AudioService;->-get39(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState; +HPLcom/android/server/audio/AudioService;->-get8(Lcom/android/server/audio/AudioService;)Landroid/os/PowerManager$WakeLock; +HPLcom/android/server/audio/AudioService;->-get9(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler; +HPLcom/android/server/audio/AudioService;->-wrap32(Lcom/android/server/audio/AudioService;Landroid/os/Handler;IIILjava/lang/Object;I)V +HPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V +HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I +HPLcom/android/server/audio/AudioService;->getDevicesForStream(I)I +HPLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I +HPLcom/android/server/audio/AudioService;->playerEvent(II)V +HPLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;IIILjava/lang/Object;I)V +HPLcom/android/server/audio/AudioService;->rescaleIndex(III)I +HPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V +HPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->checkBanPlayer(Landroid/media/AudioPlaybackConfiguration;I)Z +HPLcom/android/server/audio/PlaybackActivityMonitor;->disableAudioForUid(ZI)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange()V +HPLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V +HPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I +HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HPLcom/android/server/autofill/AutofillManagerService;->getServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; +HPLcom/android/server/autofill/AutofillManagerService;->peekServiceForUserLocked(I)Lcom/android/server/autofill/AutofillManagerServiceImpl; +HPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z +HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V +HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V +HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestFailure(Ljava/lang/CharSequence;Ljava/lang/String;)V +HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onSaveRequestSuccess(Ljava/lang/String;)V +HPLcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;->onServiceDied(Lcom/android/server/autofill/RemoteFillService;)V +HPLcom/android/server/autofill/RemoteFillService$PendingRequest;->onTimeout(Lcom/android/server/autofill/RemoteFillService;)V +HPLcom/android/server/autofill/ViewState$Listener;->onFillReady(Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->authenticate(IILandroid/content/IntentSender;Landroid/os/Bundle;)V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->cancelSave()V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->fill(IILandroid/service/autofill/Dataset;)V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestHideFillUi(Landroid/view/autofill/AutofillId;)V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->requestShowFillUi(Landroid/view/autofill/AutofillId;IILandroid/view/autofill/IAutofillWindowPresenter;)V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->save()V +HPLcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;->startIntentSender(Landroid/content/IntentSender;)V +HPLcom/android/server/backup/BackupManagerService$1;->run()V +HPLcom/android/server/backup/BackupManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/backup/BackupManagerService$7;->(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V +HPLcom/android/server/backup/BackupManagerService$7;->run()V +HPLcom/android/server/backup/BackupManagerService$BackupRequest;->(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->-wrap18(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V +HPLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V +HPLcom/android/server/backup/BackupManagerService;->allAgentPackages()Ljava/util/List; +HPLcom/android/server/backup/BackupManagerService;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z +HPLcom/android/server/backup/BackupManagerService;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)Z +HPLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V +HPLcom/android/server/backup/BackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet; +HPLcom/android/server/backup/BackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList; +HPLcom/android/server/backup/BackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->acknowledgeAdbBackupOrRestore(IZLjava/lang/String;Ljava/lang/String;Landroid/app/backup/IFullBackupRestoreObserver;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->adbBackup(Landroid/os/ParcelFileDescriptor;ZZZZZZZZ[Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->adbRestore(Landroid/os/ParcelFileDescriptor;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->agentDisconnected(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->backupNow()V +HPLcom/android/server/backup/BackupManagerServiceInterface;->beginFullBackup(Lcom/android/server/backup/FullBackupJob;)Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->beginRestoreSession(Ljava/lang/String;Ljava/lang/String;)Landroid/app/backup/IRestoreSession; +HPLcom/android/server/backup/BackupManagerServiceInterface;->bindToAgentSynchronous(Landroid/content/pm/ApplicationInfo;I)Landroid/app/IBackupAgent; +HPLcom/android/server/backup/BackupManagerServiceInterface;->cancelBackups()V +HPLcom/android/server/backup/BackupManagerServiceInterface;->clearBackupData(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->dataChanged(Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->endFullBackup()V +HPLcom/android/server/backup/BackupManagerServiceInterface;->fullTransportBackup([Ljava/lang/String;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->generateRandomIntegerToken()I +HPLcom/android/server/backup/BackupManagerServiceInterface;->getAvailableRestoreToken(Ljava/lang/String;)J +HPLcom/android/server/backup/BackupManagerServiceInterface;->getBackupManagerBinder()Landroid/app/backup/IBackupManager; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getConfigurationIntent(Ljava/lang/String;)Landroid/content/Intent; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getCurrentTransport()Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getDataManagementLabel(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getDestinationString(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->getTransportWhitelist()[Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->hasBackupPassword()Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->initializeTransports([Ljava/lang/String;Landroid/app/backup/IBackupObserver;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->isAppEligibleForBackup(Ljava/lang/String;)Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->isBackupEnabled()Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->listAllTransportComponents()[Landroid/content/ComponentName; +HPLcom/android/server/backup/BackupManagerServiceInterface;->listAllTransports()[Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->opComplete(IJ)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->prepareOperationTimeout(IJLcom/android/server/backup/BackupRestoreTask;I)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;I)I +HPLcom/android/server/backup/BackupManagerServiceInterface;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I +HPLcom/android/server/backup/BackupManagerServiceInterface;->restoreAtInstall(Ljava/lang/String;I)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->selectBackupTransport(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/backup/BackupManagerServiceInterface;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->setAutoRestore(Z)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupEnabled(Z)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupPassword(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/backup/BackupManagerServiceInterface;->setBackupProvisioned(Z)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->tearDownAgentAndKill(Landroid/content/pm/ApplicationInfo;)V +HPLcom/android/server/backup/BackupManagerServiceInterface;->waitUntilOperationComplete(I)Z +HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;)V +HPLcom/android/server/backup/KeyValueBackupJob;->schedule(Landroid/content/Context;J)V +HPLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;)Ljava/util/List; +HPLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V +HPLcom/android/server/backup/TransportManager$TransportBoundListener;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z +HPLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V +HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasPrimaryClip(Ljava/lang/String;)Z +HPLcom/android/server/clipboard/ClipboardService;->clipboardAccessAllowed(ILjava/lang/String;I)Z +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V +HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap3()Z +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap4()I +HPLcom/android/server/companion/CompanionDeviceManagerService;->-wrap6(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/Set; +HPLcom/android/server/companion/CompanionDeviceManagerService;->getCallingUserId()I +HPLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile; +HPLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z +HPLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/Set; +HPLcom/android/server/connectivity/NetdEventListenerService;->maybeVerboseLog(Ljava/lang/String;[Ljava/lang/Object;)V +HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V +HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V +HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I +HPLcom/android/server/connectivity/NetworkAgentInfo;->getNetworkState()Landroid/net/NetworkState; +HPLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I +HPLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest; +HPLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z +HPLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V +HPLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V +HPLcom/android/server/connectivity/PermissionMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/connectivity/PermissionMonitor;->hasPermission(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z +HPLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V +HPLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/List;)[I +HPLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V +HPLcom/android/server/connectivity/Vpn;->appliesToUid(I)Z +HPLcom/android/server/connectivity/Vpn;->isBlockingUid(I)Z +HPLcom/android/server/connectivity/Vpn;->isRunningLocked()Z +HPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats; +HPLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/content/ContentService$ObserverCall;->(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZI)V +HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-get0(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I +HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V +HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V +HPLcom/android/server/content/ContentService$ObserverNode;->(Ljava/lang/String;)V +HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V +HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V +HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(ZLandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V +HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V +HPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I +HPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String; +HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z +HPLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V +HPLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I +HPLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I +HPLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z +HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z +HPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;)Ljava/lang/String; +HPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HPLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z +HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager; +HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I +HPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V +HPLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z +HPLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z +HPLcom/android/server/content/ContentService;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIII)V +HPLcom/android/server/content/ContentService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V +HPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V +HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String; +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V +HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V +HPLcom/android/server/content/SyncManager$7;->run()V +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String; +HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I +HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z +HPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V +HPLcom/android/server/content/SyncManager$SyncHandler;->tryEnqueueMessageUntilReadyToRun(Landroid/os/Message;)Z +HPLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V +HPLcom/android/server/content/SyncManager;->-get15(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock; +HPLcom/android/server/content/SyncManager;->-wrap5(Lcom/android/server/content/SyncManager;)Z +HPLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z +HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I +HPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder; +HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List; +HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I +HPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String; +HPLcom/android/server/content/SyncManager;->getSyncAdapterTypes(I)[Landroid/content/SyncAdapterType; +HPLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine; +HPLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z +HPLcom/android/server/content/SyncManager;->printTwoDigitNumber(Ljava/lang/StringBuilder;JCZ)Z +HPLcom/android/server/content/SyncManager;->readDataConnectionState()Z +HPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V +HPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;)V +HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJ)V +HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V +HPLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +HPLcom/android/server/content/SyncManager;->verifyJobScheduler()V +HPLcom/android/server/content/SyncOperation;->(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJ)V +HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;Z)Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V +HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation; +HPLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle; +HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String; +HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String; +HPLcom/android/server/content/SyncStorageEngine$EndPoint;->(Landroid/accounts/Account;Ljava/lang/String;I)V +HPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String; +HPLcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;->onAuthorityRemoved(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +HPLcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;->onSyncRequest(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILandroid/os/Bundle;)V +HPLcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;->onPeriodicSyncAdded(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;JJ)V +HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair; +HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List; +HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List; +HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I +HPLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z +HPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z +HPLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +HPLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +HPLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V +HPLcom/android/server/content/SyncStorageEngine;->reportChange(I)V +HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V +HPLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V +HPLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap3(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; +HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z +HPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName; +HPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z +HPLcom/android/server/display/AutomaticBrightnessController$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getLux(I)F +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getTime(I)J +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V +HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->size()I +HPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/display/AutomaticBrightnessController$Callbacks;->updateBrightness()V +HPLcom/android/server/display/AutomaticBrightnessController;->-get0(Lcom/android/server/display/AutomaticBrightnessController;)Z +HPLcom/android/server/display/AutomaticBrightnessController;->-wrap1(Lcom/android/server/display/AutomaticBrightnessController;JF)V +HPLcom/android/server/display/AutomaticBrightnessController;->-wrap2(Lcom/android/server/display/AutomaticBrightnessController;)V +HPLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V +HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F +HPLcom/android/server/display/AutomaticBrightnessController;->calculateWeight(JJ)F +HPLcom/android/server/display/AutomaticBrightnessController;->configure(ZFZZ)V +HPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V +HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J +HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J +HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V +HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V +HPLcom/android/server/display/AutomaticBrightnessController;->weightIntegral(J)F +HPLcom/android/server/display/DisplayBlanker;->requestDisplayState(II)V +HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I +HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V +HPLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversalInTransactionFromWindowManager()V +HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V +HPLcom/android/server/display/DisplayManagerService;->-get2(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController; +HPLcom/android/server/display/DisplayManagerService;->-wrap16(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap25(Lcom/android/server/display/DisplayManagerService;II)V +HPLcom/android/server/display/DisplayManagerService;->-wrap29(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap30(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService;->-wrap32(Lcom/android/server/display/DisplayManagerService;IZFIZ)V +HPLcom/android/server/display/DisplayManagerService;->-wrap5(Lcom/android/server/display/DisplayManagerService;I)[I +HPLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V +HPLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I +HPLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V +HPLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionFromWindowManagerInternal()V +HPLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V +HPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V +HPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V +HPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V +HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z +HPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V +HPLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z +HPLcom/android/server/display/DisplayPowerController;->updatePowerState()V +HPLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V +HPLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V +HPLcom/android/server/display/DisplayPowerState$3;->run()V +HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V +HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z +HPLcom/android/server/display/DisplayPowerState;->-get1()Z +HPLcom/android/server/display/DisplayPowerState;->-get2(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker; +HPLcom/android/server/display/DisplayPowerState;->-get4(Lcom/android/server/display/DisplayPowerState;)F +HPLcom/android/server/display/DisplayPowerState;->-get6(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator; +HPLcom/android/server/display/DisplayPowerState;->-get7(Lcom/android/server/display/DisplayPowerState;)I +HPLcom/android/server/display/DisplayPowerState;->-get8(Lcom/android/server/display/DisplayPowerState;)I +HPLcom/android/server/display/DisplayPowerState;->-set2(Lcom/android/server/display/DisplayPowerState;Z)Z +HPLcom/android/server/display/DisplayPowerState;->-set3(Lcom/android/server/display/DisplayPowerState;Z)Z +HPLcom/android/server/display/DisplayPowerState;->-wrap0(Lcom/android/server/display/DisplayPowerState;)V +HPLcom/android/server/display/DisplayPowerState;->-wrap1(Lcom/android/server/display/DisplayPowerState;)V +HPLcom/android/server/display/DisplayPowerState;->dismissColorFade()V +HPLcom/android/server/display/DisplayPowerState;->getScreenState()I +HPLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V +HPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V +HPLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V +HPLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V +HPLcom/android/server/display/DisplayTransformManager;->setColorMatrix(I[F)V +HPLcom/android/server/display/LogicalDisplay;->getRequestedModeIdLocked()I +HPLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z +HPLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z +HPLcom/android/server/display/NightDisplayService$3;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->evaluate(F[F[F)[F +HPLcom/android/server/display/RampAnimator$1;->run()V +HPLcom/android/server/display/RampAnimator$Listener;->onAnimationEnd()V +HPLcom/android/server/display/RampAnimator;->-get0(Lcom/android/server/display/RampAnimator;)F +HPLcom/android/server/display/RampAnimator;->-get1(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer; +HPLcom/android/server/display/RampAnimator;->-get2(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-get3(Lcom/android/server/display/RampAnimator;)J +HPLcom/android/server/display/RampAnimator;->-get5(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object; +HPLcom/android/server/display/RampAnimator;->-get6(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty; +HPLcom/android/server/display/RampAnimator;->-get7(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-get8(Lcom/android/server/display/RampAnimator;)I +HPLcom/android/server/display/RampAnimator;->-set0(Lcom/android/server/display/RampAnimator;F)F +HPLcom/android/server/display/RampAnimator;->-set2(Lcom/android/server/display/RampAnimator;I)I +HPLcom/android/server/display/RampAnimator;->-set3(Lcom/android/server/display/RampAnimator;J)J +HPLcom/android/server/display/RampAnimator;->-wrap0(Lcom/android/server/display/RampAnimator;)V +HPLcom/android/server/display/RampAnimator;->animateTo(II)Z +HPLcom/android/server/display/RampAnimator;->postAnimationCallback()V +HPLcom/android/server/dreams/DreamController$Listener;->onDreamStopped(Landroid/os/Binder;)V +HPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z +HPLcom/android/server/dreams/DreamManagerService;->-wrap3(Lcom/android/server/dreams/DreamManagerService;)Z +HPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z +HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V +HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V +HPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z +HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z +HPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V +HPLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->getPointerLayer()I +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->interceptMotionBeforeQueueingNonInteractive(JI)I +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyANR(Lcom/android/server/input/InputApplicationHandle;Lcom/android/server/input/InputWindowHandle;Ljava/lang/String;)J +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyCameraLensCoverSwitchChanged(JZ)V +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyConfigurationChanged()V +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyInputChannelBroken(Lcom/android/server/input/InputWindowHandle;)V +HPLcom/android/server/input/InputManagerService$WindowManagerCallbacks;->notifyLidSwitchChanged(JZ)V +HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->notifyWiredAccessoryChanged(JII)V +HPLcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;->systemReady()V +HPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V +HPLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice; +HPLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I +HPLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String; +HPLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +HPLcom/android/server/input/InputManagerService;->getSwitchState(III)I +HPLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z +HPLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;II)Z +HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J +HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/input/InputManagerService;->monitor()V +HPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Lcom/android/server/input/InputWindowHandle;)V +HPLcom/android/server/input/InputManagerService;->setInputWindows([Lcom/android/server/input/InputWindowHandle;Lcom/android/server/input/InputWindowHandle;)V +HPLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V +HPLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V +HPLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V +HPLcom/android/server/input/InputManagerService;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V +HPLcom/android/server/input/InputWindowHandle;->(Lcom/android/server/input/InputApplicationHandle;Ljava/lang/Object;Landroid/view/IWindow;I)V +HPLcom/android/server/input/InputWindowHandle;->finalize()V +HPLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState; +HPLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V +HPLcom/android/server/job/JobCompletedListener;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V +HPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; +HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry; +HPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J +HPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V +HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;II)V +HPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F +HPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V +HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;I)V +HPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V +HPLcom/android/server/job/JobSchedulerInternal;->addBackingUpUid(I)V +HPLcom/android/server/job/JobSchedulerInternal;->clearAllBackingUpUids()V +HPLcom/android/server/job/JobSchedulerInternal;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; +HPLcom/android/server/job/JobSchedulerInternal;->getSystemScheduledPendingJobs()Ljava/util/List; +HPLcom/android/server/job/JobSchedulerInternal;->removeBackingUpUid(I)V +HPLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V +HPLcom/android/server/job/JobSchedulerService$4;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo; +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I +HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/job/JobSchedulerService$LocalService$1;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List; +HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService;->-wrap0(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->-wrap1(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->-wrap5(Lcom/android/server/job/JobSchedulerService;)V +HPLcom/android/server/job/JobSchedulerService;->-wrap6(Lcom/android/server/job/JobSchedulerService;)V +HPLcom/android/server/job/JobSchedulerService;->addOrderedItem(Ljava/util/ArrayList;Ljava/lang/Object;Ljava/util/Comparator;)V +HPLcom/android/server/job/JobSchedulerService;->adjustJobPriority(ILcom/android/server/job/controllers/JobStatus;)I +HPLcom/android/server/job/JobSchedulerService;->assignJobsToContextsLocked()V +HPLcom/android/server/job/JobSchedulerService;->cancelJob(II)V +HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V +HPLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I +HPLcom/android/server/job/JobSchedulerService;->findJobContextIdFromMap(Lcom/android/server/job/controllers/JobStatus;[Lcom/android/server/job/controllers/JobStatus;)I +HPLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo; +HPLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List; +HPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobSchedulerService;->isCurrentlyActiveLocked(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V +HPLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V +HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V +HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V +HPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I +HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z +HPLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V +HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z +HPLcom/android/server/job/JobSchedulerService;->updateUidState(II)V +HPLcom/android/server/job/JobServiceContext$JobCallback;->(Lcom/android/server/job/JobServiceContext;)V +HPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V +HPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V +HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->clearPreferredUid()V +HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V +HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z +HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem; +HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V +HPLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V +HPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobServiceContext;->getPreferredUid()I +HPLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V +HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V +HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V +HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V +HPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V +HPLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z +HPLcom/android/server/job/JobStore$1$1;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle; +HPLcom/android/server/job/JobStore$1;->run()V +HPLcom/android/server/job/JobStore$1;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/job/JobStore$1;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/JobStore$1;->writeJobsMapImpl(Ljava/util/List;)V +HPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I +HPLcom/android/server/job/JobStore$JobSet;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V +HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V +HPLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Ljava/util/List; +HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;Z)Ljava/util/List; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V +HPLcom/android/server/job/JobStore;->-get1(Lcom/android/server/job/JobStore;)Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; +HPLcom/android/server/job/JobStore;->-wrap1(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair; +HPLcom/android/server/job/JobStore;->countJobsForUid(I)I +HPLcom/android/server/job/JobStore;->forEachJob(Lcom/android/server/job/JobStore$JobStatusFunctor;)V +HPLcom/android/server/job/JobStore;->getJobByUidAndJobId(II)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V +HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z +HPLcom/android/server/job/StateChangedListener;->onControllerStateChanged()V +HPLcom/android/server/job/StateChangedListener;->onDeviceIdleStateChanged(Z)V +HPLcom/android/server/job/StateChangedListener;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V +HPLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;->(ILjava/lang/String;Z)V +HPLcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc;->process(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/AppIdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V +HPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(I)V +HPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/JobStatus;->(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;IJJJJ)V +HPLcom/android/server/job/controllers/JobStatus;->(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z +HPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus; +HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem; +HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V +HPLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String; +HPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J +HPLcom/android/server/job/controllers/JobStatus;->getFlags()I +HPLcom/android/server/job/controllers/JobStatus;->getJob()Landroid/app/job/JobInfo; +HPLcom/android/server/job/controllers/JobStatus;->getJobId()I +HPLcom/android/server/job/controllers/JobStatus;->getLastFailedRunTime()J +HPLcom/android/server/job/controllers/JobStatus;->getLastSuccessfulRunTime()J +HPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J +HPLcom/android/server/job/controllers/JobStatus;->getNumFailures()I +HPLcom/android/server/job/controllers/JobStatus;->getPersistedUtcTimes()Landroid/util/Pair; +HPLcom/android/server/job/controllers/JobStatus;->getPriority()I +HPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName; +HPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String; +HPLcom/android/server/job/controllers/JobStatus;->getSourceTag()Ljava/lang/String; +HPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I +HPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I +HPLcom/android/server/job/controllers/JobStatus;->getUid()I +HPLcom/android/server/job/controllers/JobStatus;->getUserId()I +HPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasDeadlineConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z +HPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z +HPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied()Z +HPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z +HPLcom/android/server/job/controllers/JobStatus;->isReady()Z +HPLcom/android/server/job/controllers/JobStatus;->matches(II)Z +HPLcom/android/server/job/controllers/JobStatus;->needsAnyConnectivity()Z +HPLcom/android/server/job/controllers/JobStatus;->needsMeteredConnectivity()Z +HPLcom/android/server/job/controllers/JobStatus;->needsNonRoamingConnectivity()Z +HPLcom/android/server/job/controllers/JobStatus;->needsUnmeteredConnectivity()Z +HPLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V +HPLcom/android/server/job/controllers/JobStatus;->setAppNotIdleConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IZ)Z +HPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(ZZ)Z +HPLcom/android/server/job/controllers/JobStatus;->setMeteredConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setNotRoamingConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V +HPLcom/android/server/job/controllers/JobStatus;->setUnmeteredConstraintSatisfied(Z)Z +HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Landroid/app/IActivityManager;Ljava/util/ArrayList;)V +HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V +HPLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V +HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V +HPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z +HPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z +HPLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J +HPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +HPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +HPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JI)V +HPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JI)V +HPLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V +HPLcom/android/server/location/ContextHubService;->addAppInstance(IIJI)I +HPLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I +HPLcom/android/server/location/ContextHubService;->onMessageReceipt([I[B)I +HPLcom/android/server/location/CountryDetectorBase;->detectCountry()Landroid/location/Country; +HPLcom/android/server/location/CountryDetectorBase;->stop()V +HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->flush()V +HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->getSize()I +HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->start(JZ)Z +HPLcom/android/server/location/GnssLocationProvider$GnssBatchingProvider;->stop()Z +HPLcom/android/server/location/GnssLocationProvider$GnssMetricsProvider;->getGnssMetricsAsProtoString()Ljava/lang/String; +HPLcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider;->getGnssYearOfHardware()I +HPLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/location/GnssLocationProvider$SetCarrierProperty;->set(I)Z +HPLcom/android/server/location/GnssLocationProvider;->handleUpdateLocation(Landroid/location/Location;)V +HPLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V +HPLcom/android/server/location/GnssLocationProvider;->reportSvStatus()V +HPLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V +HPLcom/android/server/location/GnssLocationProvider;->updateRequirements()V +HPLcom/android/server/location/GnssLocationProvider;->updateStatus(IIII)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;->(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/location/IGnssStatusListener;)V +HPLcom/android/server/location/GnssStatusListenerHelper$4;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;->(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/location/IGnssStatusListener;)V +HPLcom/android/server/location/GnssStatusListenerHelper$5;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V +HPLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V +HPLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z +HPLcom/android/server/location/LocationFudger;->getOrCreate(Landroid/location/Location;)Landroid/location/Location; +HPLcom/android/server/location/LocationProviderProxy;->getName()Ljava/lang/String; +HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V +HPLcom/android/server/location/RemoteListenerHelper$LinkedListener;->getUnderlyingListener()Landroid/os/IInterface; +HPLcom/android/server/location/RemoteListenerHelper$ListenerOperation;->execute(Landroid/os/IInterface;)V +HPLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/location/RemoteListenerHelper;->post(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V +HPLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V +HPLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J +HPLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I +HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object; +HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/locksettings/LockSettingsStorage$Callback;->initialize(Landroid/database/sqlite/SQLiteDatabase;)V +HPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;->onAudioPlaybackStarted(I)V +HPLcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;->onAudioPlayerActiveStateChanged(IZ)V +HPLcom/android/server/media/AudioPlaybackMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;)V +HPLcom/android/server/media/AudioPlaybackMonitor;->isActiveState(Ljava/lang/Integer;)Z +HPLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState; +HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List; +HPLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List; +HPLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord; +HPLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V +HPLcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V +HPLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList; +HPLcom/android/server/media/RemoteDisplayProviderProxy$Callback;->onDisplayStateChanged(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/RemoteDisplayState;)V +HPLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->addProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +HPLcom/android/server/media/RemoteDisplayProviderWatcher$Callback;->removeProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +HPLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V +HPLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V +HPLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V +HPLcom/android/server/net/NetworkIdentitySet;->(Ljava/io/DataInputStream;)V +HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberMetered()Z +HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberRoaming()Z +HPLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String; +HPLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V +HPLcom/android/server/net/NetworkIdentitySet;->writeToStream(Ljava/io/DataOutputStream;)V +HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidNetworkingBlocked(ILjava/lang/String;)Z +HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidRestrictedOnMeteredNetworks(I)Z +HPLcom/android/server/net/NetworkPolicyManagerInternal;->resetUserState(I)V +HPLcom/android/server/net/NetworkPolicyManagerService$14;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidGone(IZ)V +HPLcom/android/server/net/NetworkPolicyManagerService$1;->onUidStateChanged(IIJ)V +HPLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZ)V +HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidNetworkingBlocked(ILjava/lang/String;)Z +HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->addProcStateSeqUL(IJ)V +HPLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->increaseNext(II)I +HPLcom/android/server/net/NetworkPolicyManagerService;->-get2(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet; +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap20(Lcom/android/server/net/NetworkPolicyManagerService;I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap3(Lcom/android/server/net/NetworkPolicyManagerService;IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->-wrap9(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V +HPLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V +HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(IIJ)V +HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlockedInternal(IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForegroundUL(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedBatterySaverUL(IZ)Z +HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I +HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL()V +HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(II)V +HPLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z +HPLcom/android/server/net/NetworkStatsCollection$Key;->(Lcom/android/server/net/NetworkIdentitySet;III)V +HPLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I +HPLcom/android/server/net/NetworkStatsCollection;->findOrCreateHistory(Lcom/android/server/net/NetworkIdentitySet;III)Landroid/net/NetworkStatsHistory; +HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJII)Landroid/net/NetworkStats; +HPLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V +HPLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V +HPLcom/android/server/net/NetworkStatsCollection;->recordData(Lcom/android/server/net/NetworkIdentitySet;IIIJJLandroid/net/NetworkStats$Entry;)V +HPLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V +HPLcom/android/server/net/NetworkStatsCollection;->templateMatches(Landroid/net/NetworkTemplate;Lcom/android/server/net/NetworkIdentitySet;)Z +HPLcom/android/server/net/NetworkStatsCollection;->write(Ljava/io/DataOutputStream;)V +HPLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V +HPLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry; +HPLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V +HPLcom/android/server/net/NetworkStatsRecorder;->recordSnapshotLocked(Landroid/net/NetworkStats;Ljava/util/Map;[Lcom/android/internal/net/VpnInfo;J)V +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getAugmentEnabled()Z +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getDevPersistBytes(J)J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getGlobalAlertBytes(J)J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getPollInterval()J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getSampleEnabled()Z +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getTimeCacheMaxAge()J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidPersistBytes(J)J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getUidTagPersistBytes(J)J +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +HPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings;->getXtPersistBytes(J)J +HPLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V +HPLcom/android/server/net/NetworkStatsService;->performSampleLocked()V +HPLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V +HPLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$0()V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->(BILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->run()V +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->$m$0(I)Z +HPLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->apply(I)Z +HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/CalendarTracker$Callback;->onChanged()V +HPLcom/android/server/notification/ConditionProviders$Callback;->onBootComplete()V +HPLcom/android/server/notification/ConditionProviders$Callback;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V +HPLcom/android/server/notification/ConditionProviders$Callback;->onServiceAdded(Landroid/content/ComponentName;)V +HPLcom/android/server/notification/ConditionProviders$Callback;->onUserSwitched()V +HPLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord; +HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I +HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroup(Ljava/lang/String;)V +HPLcom/android/server/notification/GroupHelper$Callback;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroup(Ljava/lang/String;)V +HPLcom/android/server/notification/GroupHelper$Callback;->removeAutoGroupSummary(ILjava/lang/String;)V +HPLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ManagedServices$Config;->()V +HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z +HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z +HPLcom/android/server/notification/ManagedServices;->-get0(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet; +HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +HPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List; +HPLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V +HPLcom/android/server/notification/ManagedServices;->rebindServices(Z)V +HPLcom/android/server/notification/ManagedServices;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I +HPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/notification/NotificationComparator;->isCall(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z +HPLcom/android/server/notification/NotificationDelegate;->clearEffects()V +HPLcom/android/server/notification/NotificationDelegate;->onClearAll(III)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationActionClick(IILjava/lang/String;I)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationClear(IILjava/lang/String;Ljava/lang/String;II)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationClick(IILjava/lang/String;)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationError(IILjava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V +HPLcom/android/server/notification/NotificationDelegate;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V +HPLcom/android/server/notification/NotificationDelegate;->onPanelHidden()V +HPLcom/android/server/notification/NotificationDelegate;->onPanelRevealed(ZI)V +HPLcom/android/server/notification/NotificationDelegate;->onSetDisabled(I)V +HPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/NotificationManagerInternal;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V +HPLcom/android/server/notification/NotificationManagerInternal;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V +HPLcom/android/server/notification/NotificationManagerService$14;->(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;ILjava/lang/String;IIIIZ)V +HPLcom/android/server/notification/NotificationManagerService$14;->run()V +HPLcom/android/server/notification/NotificationManagerService$15;->run()V +HPLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/notification/NotificationManagerService$7;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V +HPLcom/android/server/notification/NotificationManagerService$7;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannel(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HPLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V +HPLcom/android/server/notification/NotificationManagerService$FlagChecker;->apply(I)Z +HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config; +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_242777(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V +HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;)V +HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V +HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V +HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/notification/NotificationManagerService;->-get18(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners; +HPLcom/android/server/notification/NotificationManagerService;->-get25(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper; +HPLcom/android/server/notification/NotificationManagerService;->-get27(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper; +HPLcom/android/server/notification/NotificationManagerService;->-wrap18(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->-wrap3(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +HPLcom/android/server/notification/NotificationManagerService;->-wrap32(Lcom/android/server/notification/NotificationManagerService;)V +HPLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V +HPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V +HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;Z)Z +HPLcom/android/server/notification/NotificationManagerService;->clamp(III)I +HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V +HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; +HPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord; +HPLcom/android/server/notification/NotificationManagerService;->getNotificationCountLocked(Ljava/lang/String;IILjava/lang/String;)I +HPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V +HPLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V +HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +HPLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I +HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z +HPLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z +HPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z +HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate; +HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z +HPLcom/android/server/notification/NotificationManagerService;->savePolicyFile()V +HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;Z)V +HPLcom/android/server/notification/NotificationRecord;->(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V +HPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V +HPLcom/android/server/notification/NotificationRecord;->applyUserImportance()V +HPLcom/android/server/notification/NotificationRecord;->calculateImportance()I +HPLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light; +HPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z +HPLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I +HPLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel; +HPLcom/android/server/notification/NotificationRecord;->getContactAffinity()F +HPLcom/android/server/notification/NotificationRecord;->getFlags()I +HPLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I +HPLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getImportance()I +HPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence; +HPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker; +HPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification; +HPLcom/android/server/notification/NotificationRecord;->getPackagePriority()I +HPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I +HPLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList; +HPLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J +HPLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList; +HPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I +HPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle; +HPLcom/android/server/notification/NotificationRecord;->getUserExplanation()Ljava/lang/String; +HPLcom/android/server/notification/NotificationRecord;->getUserId()I +HPLcom/android/server/notification/NotificationRecord;->isIntercepted()Z +HPLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z +HPLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V +HPLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V +HPLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V +HPLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V +HPLcom/android/server/notification/NotificationRecord;->setUserImportance(I)V +HPLcom/android/server/notification/NotificationRecord;->setVisibility(ZI)V +HPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V +HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V +HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V +HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; +HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; +HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; +HPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V +HPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V +HPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/RankingConfig;->badgingEnabled(Landroid/os/UserHandle;)Z +HPLcom/android/server/notification/RankingConfig;->canShowBadge(Ljava/lang/String;I)Z +HPLcom/android/server/notification/RankingConfig;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V +HPLcom/android/server/notification/RankingConfig;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V +HPLcom/android/server/notification/RankingConfig;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V +HPLcom/android/server/notification/RankingConfig;->getImportance(Ljava/lang/String;I)I +HPLcom/android/server/notification/RankingConfig;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel; +HPLcom/android/server/notification/RankingConfig;->getNotificationChannelGroups(Ljava/lang/String;I)Ljava/util/Collection; +HPLcom/android/server/notification/RankingConfig;->getNotificationChannelGroups(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/RankingConfig;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/notification/RankingConfig;->permanentlyDeleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V +HPLcom/android/server/notification/RankingConfig;->permanentlyDeleteNotificationChannels(Ljava/lang/String;I)V +HPLcom/android/server/notification/RankingConfig;->setImportance(Ljava/lang/String;II)V +HPLcom/android/server/notification/RankingConfig;->setShowBadge(Ljava/lang/String;IZ)V +HPLcom/android/server/notification/RankingConfig;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;)V +HPLcom/android/server/notification/RankingHandler;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V +HPLcom/android/server/notification/RankingHandler;->requestSort()V +HPLcom/android/server/notification/RankingHelper;->badgingEnabled(Landroid/os/UserHandle;)Z +HPLcom/android/server/notification/RankingHelper;->canShowBadge(Ljava/lang/String;I)Z +HPLcom/android/server/notification/RankingHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V +HPLcom/android/server/notification/RankingHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V +HPLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/RankingHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel; +HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; +HPLcom/android/server/notification/RankingHelper;->getOrCreateRecord(Ljava/lang/String;IIIIZ)Lcom/android/server/notification/RankingHelper$Record; +HPLcom/android/server/notification/RankingHelper;->getRecord(Ljava/lang/String;I)Lcom/android/server/notification/RankingHelper$Record; +HPLcom/android/server/notification/RankingHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V +HPLcom/android/server/notification/RankingHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;Z)V +HPLcom/android/server/notification/RankingHelper;->recordKey(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V +HPLcom/android/server/notification/RankingHelper;->updateConfig()V +HPLcom/android/server/notification/RankingHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/notification/SnoozeHelper$Callback;->repost(ILcom/android/server/notification/NotificationRecord;)V +HPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z +HPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context; +HPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String; +HPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[F)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration; +HPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration; +HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Z)V +HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V +HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V +HPLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->(Ljava/lang/Object;)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$3;->test(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->(I)V +HPLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$4;->test(Ljava/lang/Object;)Z +HPLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HPLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I +HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V +HPLcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;->onOverlaysChanged(Ljava/lang/String;I)V +HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List; +HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +HPLcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z +HPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap9(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String; +HPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +HPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List; +HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19551(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +HPLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_19778(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +HPLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I +HPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream; +HPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream; +HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->accept(Ljava/lang/Object;)V +HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->test(Ljava/lang/Object;)Z +HPLcom/android/server/pm/AbstractStatsBase;->maybeWriteAsync(Ljava/lang/Object;)Z +HPLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I +HPLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V +HPLcom/android/server/pm/CompilerStats$PackageStats;->(Ljava/lang/String;)V +HPLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z +HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V +HPLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->getEphemeralResolveInfoList(Landroid/app/IInstantAppResolver;[ILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/EphemeralResolverConnection;->getInstantAppResolveInfoList([ILjava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/EphemeralResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver; +HPLcom/android/server/pm/EphemeralResolverConnection;->throwIfCalledOnMainThread()V +HPLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V +HPLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Landroid/content/Context;Lcom/android/server/pm/EphemeralResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo; +HPLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$DumpState;)V +HPLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String; +HPLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;ILjava/lang/String;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(I)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isUserEnabled(Landroid/os/UserHandle;)Z +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J +HPLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/PackageParser$Package;)Z +HPLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V +HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)I +HPLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I +HPLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String; +HPLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap3(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V +HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V +HPLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V +HPLcom/android/server/pm/PackageInstallerService;->-get0(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks; +HPLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V +HPLcom/android/server/pm/PackageInstallerSession;->addClientProgress(F)V +HPLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootLocked()V +HPLcom/android/server/pm/PackageInstallerSession;->buildAppIconFile(ILjava/io/File;)Ljava/io/File; +HPLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V +HPLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V +HPLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo; +HPLcom/android/server/pm/PackageInstallerSession;->openWriteInternal(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; +HPLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V +HPLcom/android/server/pm/PackageInstallerSession;->validateInstallLocked(Landroid/content/pm/PackageInfo;)V +HPLcom/android/server/pm/PackageInstallerSession;->write(Lorg/xmlpull/v1/XmlSerializer;Ljava/io/File;)V +HPLcom/android/server/pm/PackageManagerService$20;->getMountMode(ILjava/lang/String;)I +HPLcom/android/server/pm/PackageManagerService$20;->hasExternalStorage(ILjava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$2;->compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I +HPLcom/android/server/pm/PackageManagerService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerService$3;->compare(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I +HPLcom/android/server/pm/PackageManagerService$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerService$6;->run()V +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)Landroid/util/ArrayMap; +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isFilterStopped(Landroid/content/pm/PackageParser$ActivityIntentInfo;I)Z +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->removeActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService$DumpState;->isDumping(I)Z +HPLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleReturnCode()V +HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleServiceError()V +HPLcom/android/server/pm/PackageManagerService$HandlerParams;->handleStartCopy()V +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->cleanUpResourcesLI()V +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->copyApk(Lcom/android/internal/app/IMediaContainerService;Z)I +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doPostDeleteLI(Z)Z +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doPostInstall(II)I +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doPreInstall(I)I +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getCodePath()Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService$InstallArgs;->getResourcePath()Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V +HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->addOneIntentFilterVerification(IIILandroid/content/IntentFilter;Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->receiveVerificationResponse(I)V +HPLcom/android/server/pm/PackageManagerService$IntentFilterVerifier;->startVerifications(I)V +HPLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantEphemeralAccess(ILandroid/content/Intent;II)V +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +HPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ProviderIntentInfo;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)Landroid/util/ArrayMap; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;Ljava/util/List;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)V +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/PackageParser$ServiceIntentInfo;)Z +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/ArrayList;I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->removeService(Landroid/content/pm/PackageParser$Service;)V +HPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->sortResults(Ljava/util/List;)V +HPLcom/android/server/pm/PackageManagerService;->-get7(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry; +HPLcom/android/server/pm/PackageManagerService;->-wrap1(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->-wrap18(Lcom/android/server/pm/PackageManagerService;I)I +HPLcom/android/server/pm/PackageManagerService;->-wrap6(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->-wrap7(Lcom/android/server/pm/PackageManagerService;II)Z +HPLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z +HPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V +HPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I +HPLcom/android/server/pm/PackageManagerService;->checkUidPermission(Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageManagerService;->checkUidSignatures(II)I +HPLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->cleanPackageDataStructuresLILPw(Landroid/content/pm/PackageParser$Package;Z)V +HPLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->dumpCompilerStatsLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->dumpDexoptStateLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->enforceShellRestriction(Ljava/lang/String;II)V +HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;II)Z +HPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z +HPLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->filterSharedLibPackageLPr(Lcom/android/server/pm/PackageSetting;III)Z +HPLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->generatePackageInfo(Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->getApplicationEnabledSetting(Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageManagerService;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/PackageManagerService;->getApplicationInfoInternal(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I +HPLcom/android/server/pm/PackageManagerService;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getNamesForUids([I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet; +HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +HPLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I +HPLcom/android/server/pm/PackageManagerService;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/PackageManagerService;->getPackageInfoInternal(Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; +HPLcom/android/server/pm/PackageManagerService;->getPackageUid(Ljava/lang/String;II)I +HPLcom/android/server/pm/PackageManagerService;->getPackagesForUid(I)[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; +HPLcom/android/server/pm/PackageManagerService;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo; +HPLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I +HPLcom/android/server/pm/PackageManagerService;->getUserManagerInternal()Landroid/os/UserManagerInternal; +HPLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V +HPLcom/android/server/pm/PackageManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->installPackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V +HPLcom/android/server/pm/PackageManagerService;->isCallerSameApp(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->isInstantApp(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->isPackageAvailable(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->notifyPackageUse(Ljava/lang/String;I)V +HPLcom/android/server/pm/PackageManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Lcom/android/server/pm/dex/DexoptOptions;)I +HPLcom/android/server/pm/PackageManagerService;->queryContentProviders(Ljava/lang/String;IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/pm/PackageManagerService;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List; +HPLcom/android/server/pm/PackageManagerService;->reconcileApps(Ljava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->replacePackageLIF(Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +HPLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V +HPLcom/android/server/pm/PackageManagerService;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo; +HPLcom/android/server/pm/PackageManagerService;->resolveExternalPackageNameLPr(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->resolveInternalPackageNameLPr(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->resolveServiceInternal(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo; +HPLcom/android/server/pm/PackageManagerService;->revokeUnusedSharedUserPermissionsLPw(Lcom/android/server/pm/SharedUserSetting;[I)[I +HPLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V +HPLcom/android/server/pm/PackageManagerService;->setEnabledSetting(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V +HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Ljava/lang/String;ZI)V +HPLcom/android/server/pm/PackageManagerService;->updateFlagsForApplication(IILjava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerService;->updateFlagsForPackage(IILjava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZ)I +HPLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V +HPLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V +HPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z +HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Landroid/content/pm/FeatureInfo;Landroid/content/pm/FeatureInfo;)I +HPLcom/android/server/pm/PackageManagerShellCommand$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplit(ILjava/lang/String;JLjava/lang/String;Z)I +HPLcom/android/server/pm/PackageManagerShellCommand;->makeInstallParams()Lcom/android/server/pm/PackageManagerShellCommand$InstallParams; +HPLcom/android/server/pm/PackageManagerShellCommand;->runListFeatures()I +HPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I +HPLcom/android/server/pm/PackageSetting;->isSystem()Z +HPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String; +HPLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z +HPLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I +HPLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I +HPLcom/android/server/pm/PackageSettingBase;->getHidden(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getLastDisabledAppCaller(I)Ljava/lang/String; +HPLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z +HPLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z +HPLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState; +HPLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V +HPLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;I)V +HPLcom/android/server/pm/PermissionsState;->computeGids([I)[I +HPLcom/android/server/pm/PermissionsState;->getPermissions(I)Ljava/util/Set; +HPLcom/android/server/pm/PermissionsState;->getRuntimePermissionStates(I)Ljava/util/List; +HPLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z +HPLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissions(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PermissionsState;)V +HPLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;Z)V +HPLcom/android/server/pm/Settings;->dumpPackagesLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V +HPLcom/android/server/pm/Settings;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;)V +HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Z)V +HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$DumpState;Z)V +HPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I +HPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I +HPLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String; +HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V +HPLcom/android/server/pm/Settings;->setPackageStoppedStateLPw(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZZII)Z +HPLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V +HPLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V +HPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V +HPLcom/android/server/pm/Settings;->writePackageListLPr(I)V +HPLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(I)V +HPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V +HPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V +HPLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z +HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;I)V +HPLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent; +HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Landroid/content/pm/ShortcutInfo; +HPLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z +HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z +HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/ShortcutInfo;Z)V +HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap; +HPLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z +HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V +HPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo; +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String; +HPLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I +HPLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo; +HPLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z +HPLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V +HPLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;II)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;I)V +HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_86800(JLandroid/util/ArraySet;Landroid/content/ComponentName;ILandroid/content/pm/ShortcutInfo;)Z +HPLcom/android/server/pm/ShortcutService;->-wrap0(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V +HPLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V +HPLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher; +HPLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser; +HPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V +HPLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z +HPLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo; +HPLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I +HPLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J +HPLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J +HPLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J +HPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I +HPLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z +HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; +HPLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V +HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z +HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z +HPLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z +HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z +HPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V +HPLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I +HPLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent; +HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J +HPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +HPLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List; +HPLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V +HPLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V +HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V +HPLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->(ILjava/lang/String;)V +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I +HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser; +HPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V +HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher; +HPLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage; +HPLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_8319(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V +HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V +HPLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V +HPLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +HPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z +HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService;->-get9(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseIntArray; +HPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V +HPLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V +HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I +HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray; +HPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo; +HPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List; +HPLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List; +HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I +HPLcom/android/server/pm/UserManagerService;->getUserHandle(I)I +HPLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I +HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z +HPLcom/android/server/pm/UserManagerService;->hasManagedProfile(I)Z +HPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z +HPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z +HPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z +HPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z +HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Landroid/util/AtomicFile;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLP(Ljava/lang/String;I)Landroid/os/Bundle; +HPLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle; +HPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->searchDex(Ljava/lang/String;I)I +HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V +HPLcom/android/server/pm/dex/DexManager;->-get3()I +HPLcom/android/server/pm/dex/DexManager;->-wrap0(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V +HPLcom/android/server/pm/dex/DexManager;->getDexPackage(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Lcom/android/server/pm/dex/DexManager$DexSearchResult; +HPLcom/android/server/pm/dex/DexManager;->getPackageUseInfoOrDefault(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +HPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V +HPLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HPLcom/android/server/pm/dex/DexoptOptions;->(Ljava/lang/String;II)V +HPLcom/android/server/pm/dex/DexoptOptions;->(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexoptOptions;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoader(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoaderChain(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath([Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContexts(Landroid/content/pm/ApplicationInfo;[Ljava/lang/String;)[Ljava/lang/String; +HPLcom/android/server/pm/dex/DexoptUtils;->processContextForDexLoad(Ljava/util/List;Ljava/util/List;)[Ljava/lang/String; +HPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V +HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V +HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps(Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +HPLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V +HPLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;)V +HPLcom/android/server/pm/dex/PackageDexUsage;->write(Ljava/io/Writer;)V +HPLcom/android/server/policy/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z +HPLcom/android/server/policy/BarController$OnBarVisibilityChangedListener;->onBarVisibilityChanged(Z)V +HPLcom/android/server/policy/BarController;->adjustSystemUiVisibilityLw(II)V +HPLcom/android/server/policy/BarController;->applyTranslucentFlagLw(Landroid/view/WindowManagerPolicy$WindowState;II)I +HPLcom/android/server/policy/BarController;->checkHiddenLw()Z +HPLcom/android/server/policy/BarController;->computeStateLw(ZZLandroid/view/WindowManagerPolicy$WindowState;Z)I +HPLcom/android/server/policy/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; +HPLcom/android/server/policy/BarController;->isTransientShowRequested()Z +HPLcom/android/server/policy/BarController;->isTransientShowing()Z +HPLcom/android/server/policy/BarController;->setBarShowingLw(Z)Z +HPLcom/android/server/policy/BarController;->setShowTransparent(Z)V +HPLcom/android/server/policy/BarController;->skipAnimation()Z +HPLcom/android/server/policy/BarController;->updateStateLw(I)Z +HPLcom/android/server/policy/BarController;->updateVisibilityLw(ZII)I +HPLcom/android/server/policy/BarController;->wasRecentlyTranslucent()Z +HPLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z +HPLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z +HPLcom/android/server/policy/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder; +HPLcom/android/server/policy/PhoneWindowManager$14;->onDown()V +HPLcom/android/server/policy/PhoneWindowManager$14;->onUpOrCancel()V +HPLcom/android/server/policy/PhoneWindowManager$21;->(Lcom/android/server/policy/PhoneWindowManager;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/WindowManagerPolicy$WindowState;Z)V +HPLcom/android/server/policy/PhoneWindowManager$21;->run()V +HPLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Landroid/view/WindowManagerPolicy$StartingSurface; +HPLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V +HPLcom/android/server/policy/PhoneWindowManager;->adjustSystemUiVisibilityLw(I)I +HPLcom/android/server/policy/PhoneWindowManager;->adjustWindowParamsLw(Landroid/view/WindowManager$LayoutParams;)V +HPLcom/android/server/policy/PhoneWindowManager;->applyKeyguardPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->applyPostLayoutPolicyLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->applyStableConstraints(IILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->areTranslucentBarsAllowed()Z +HPLcom/android/server/policy/PhoneWindowManager;->beginLayoutLw(ZIIII)V +HPLcom/android/server/policy/PhoneWindowManager;->beginPostLayoutPolicyLw(II)V +HPLcom/android/server/policy/PhoneWindowManager;->calculateRelevantTaskInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;II)V +HPLcom/android/server/policy/PhoneWindowManager;->canBeHiddenByKeyguardLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->canHideNavigationBar()Z +HPLcom/android/server/policy/PhoneWindowManager;->canReceiveInput(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->configureNavBarOpacity(IZZZ)I +HPLcom/android/server/policy/PhoneWindowManager;->drawsSystemBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->finishLayoutLw()V +HPLcom/android/server/policy/PhoneWindowManager;->finishPostLayoutPolicyLw()I +HPLcom/android/server/policy/PhoneWindowManager;->focusChangedLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLcom/android/server/policy/PhoneWindowManager;->forcesDrawStatusBarBackground(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayHeight(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getConfigDisplayWidth(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getContentRectLw(Landroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getInputMethodWindowVisibleHeightLw()I +HPLcom/android/server/policy/PhoneWindowManager;->getInsetHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;IIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarHeight(II)I +HPLcom/android/server/policy/PhoneWindowManager;->getNavigationBarWidth(II)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayHeight(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorDisplayWidth(IIIII)I +HPLcom/android/server/policy/PhoneWindowManager;->getNonDecorInsetsLw(IIILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getStableInsetsLw(IIILandroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal; +HPLcom/android/server/policy/PhoneWindowManager;->getSystemDecorLayerLw()I +HPLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z +HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J +HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/policy/PhoneWindowManager;->isImmersiveMode(I)Z +HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z +HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z +HPLcom/android/server/policy/PhoneWindowManager;->isNavBarForcedShownLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z +HPLcom/android/server/policy/PhoneWindowManager;->isShowingDreamLw()Z +HPLcom/android/server/policy/PhoneWindowManager;->isStatusBarKeyguard()Z +HPLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z +HPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutNavigationBar(IIIIIIILandroid/graphics/Rect;ZZZZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutStatusBar(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->layoutWallpaper(Landroid/view/WindowManagerPolicy$WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/policy/PhoneWindowManager;->layoutWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->navigationBarPosition(III)I +HPLcom/android/server/policy/PhoneWindowManager;->offsetInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V +HPLcom/android/server/policy/PhoneWindowManager;->okToAnimate()Z +HPLcom/android/server/policy/PhoneWindowManager;->performHapticFeedbackLw(Landroid/view/WindowManagerPolicy$WindowState;IZ)Z +HPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V +HPLcom/android/server/policy/PhoneWindowManager;->readLidState()V +HPLcom/android/server/policy/PhoneWindowManager;->selectAnimationLw(Landroid/view/WindowManagerPolicy$WindowState;I)I +HPLcom/android/server/policy/PhoneWindowManager;->setInitialDisplaySize(Landroid/view/Display;III)V +HPLcom/android/server/policy/PhoneWindowManager;->shouldBeHiddenByKeyguard(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/policy/PhoneWindowManager;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z +HPLcom/android/server/policy/PhoneWindowManager;->topAppHidesStatusBar()Z +HPLcom/android/server/policy/PhoneWindowManager;->updateLightNavigationBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLcom/android/server/policy/PhoneWindowManager;->updateLightStatusBarLw(ILandroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)I +HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V +HPLcom/android/server/policy/PhoneWindowManager;->updateSystemBarsLw(Landroid/view/WindowManagerPolicy$WindowState;II)I +HPLcom/android/server/policy/PhoneWindowManager;->updateSystemUiVisibilityLw()I +HPLcom/android/server/policy/PhoneWindowManager;->updateWindowSleepToken()V +HPLcom/android/server/policy/PhoneWindowManager;->userActivity()V +HPLcom/android/server/policy/PolicyControl;->getSystemUiVisibility(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I +HPLcom/android/server/policy/PolicyControl;->getWindowFlags(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I +HPLcom/android/server/policy/StatusBarController$1$1;->(Lcom/android/server/policy/StatusBarController$1;)V +HPLcom/android/server/policy/StatusBarController$1$1;->run()V +HPLcom/android/server/policy/StatusBarController$1$2;->run()V +HPLcom/android/server/policy/StatusBarController$1$4;->(Lcom/android/server/policy/StatusBarController$1;)V +HPLcom/android/server/policy/StatusBarController$1$4;->run()V +HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/policy/StatusBarController$1;->onAppTransitionPendingLocked()V +HPLcom/android/server/policy/StatusBarController;->calculateStatusBarTransitionStartTime(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J +HPLcom/android/server/policy/StatusBarController;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F +HPLcom/android/server/policy/StatusBarController;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation; +HPLcom/android/server/policy/StatusBarController;->setTopAppHidesStatusBar(Z)V +HPLcom/android/server/policy/StatusBarController;->skipAnimation()Z +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDebug()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onDown()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onFling(I)V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onMouseHoverAtBottom()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onMouseHoverAtTop()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onMouseLeaveFromEdge()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromBottom()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromLeft()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromRight()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onSwipeFromTop()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;->onUpOrCancel()V +HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z +HPLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->-get2(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Landroid/widget/OverScroller; +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->findIndex(I)I +HPLcom/android/server/policy/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V +HPLcom/android/server/policy/WakeGestureListener;->onWakeUp()V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->getProposedRotationLocked()I +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onAccuracyChanged(Landroid/hardware/Sensor;I)V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onSensorChanged(Landroid/hardware/SensorEvent;)V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouchEndLocked(J)V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->onTouchStartLocked()V +HPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->resetLocked(Z)V +HPLcom/android/server/policy/WindowOrientationListener;->onProposedRotationChanged(I)V +HPLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V +HPLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V +HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;->onDrawn()V +HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z +HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z +HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z +HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z +HPLcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;->onTrustedChanged()V +HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z +HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z +HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/power/Notifier;->-wrap3(Lcom/android/server/power/Notifier;)V +HPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I +HPLcom/android/server/power/Notifier;->onUserActivity(II)V +HPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/Notifier;->sendUserActivity()V +HPLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V +HPLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z +HPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z +HPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z +HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V +HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V +HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V +HPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V +HPLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V +HPLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V +HPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V +HPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V +HPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V +HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V +HPLcom/android/server/power/PowerManagerService$PowerManagerHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/power/PowerManagerService$UidState;->(I)V +HPLcom/android/server/power/PowerManagerService$WakeLock;->(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V +HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z +HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z +HPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V +HPLcom/android/server/power/PowerManagerService;->-get1(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context; +HPLcom/android/server/power/PowerManagerService;->-wrap0(Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/power/PowerManagerService;->-wrap1(Lcom/android/server/power/PowerManagerService;)Z +HPLcom/android/server/power/PowerManagerService;->-wrap13(Lcom/android/server/power/PowerManagerService;)V +HPLcom/android/server/power/PowerManagerService;->-wrap14(Lcom/android/server/power/PowerManagerService;)V +HPLcom/android/server/power/PowerManagerService;->-wrap2(Lcom/android/server/power/PowerManagerService;)Z +HPLcom/android/server/power/PowerManagerService;->-wrap22(Lcom/android/server/power/PowerManagerService;II)V +HPLcom/android/server/power/PowerManagerService;->-wrap23(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap29(Lcom/android/server/power/PowerManagerService;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap32(Lcom/android/server/power/PowerManagerService;J)V +HPLcom/android/server/power/PowerManagerService;->-wrap36(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V +HPLcom/android/server/power/PowerManagerService;->-wrap7(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V +HPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V +HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V +HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V +HPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V +HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I +HPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V +HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V +HPLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I +HPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(I)I +HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(I)I +HPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()I +HPLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V +HPLcom/android/server/power/PowerManagerService;->handleSandman()V +HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z +HPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z +HPLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z +HPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked()Z +HPLcom/android/server/power/PowerManagerService;->isLowPowerModeInternal()Z +HPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z +HPLcom/android/server/power/PowerManagerService;->isValidAutoBrightnessAdjustment(F)Z +HPLcom/android/server/power/PowerManagerService;->isValidBrightness(I)Z +HPLcom/android/server/power/PowerManagerService;->needDisplaySuspendBlockerLocked()Z +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->powerHintInternal(II)V +HPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V +HPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V +HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V +HPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V +HPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V +HPLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V +HPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z +HPLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z +HPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z +HPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V +HPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V +HPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V +HPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V +HPLcom/android/server/power/PowerManagerService;->updateDisplayPowerStateLocked(I)Z +HPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V +HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updatePowerRequestFromBatterySaverPolicy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V +HPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V +HPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V +HPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V +HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V +HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V +HPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V +HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z +HPLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V +HPLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V +HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z +HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onCustomPrinterIconLoaded(Landroid/print/PrinterId;Landroid/graphics/drawable/Icon;)V +HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersAdded(Ljava/util/List;)V +HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onPrintersRemoved(Ljava/util/List;)V +HPLcom/android/server/print/RemotePrintService$PrintServiceCallbacks;->onServiceDied(Lcom/android/server/print/RemotePrintService;)V +HPLcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks;->onPrintServiceRecommendationsUpdated(Ljava/util/List;)V +HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V +HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V +HPLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V +HPLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List; +HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V +HPLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName; +HPLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; +HPLcom/android/server/search/Searchables;->updateSearchableList()V +HPLcom/android/server/soundtrigger/SoundTriggerInternal;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/soundtrigger/SoundTriggerInternal;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +HPLcom/android/server/soundtrigger/SoundTriggerInternal;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I +HPLcom/android/server/soundtrigger/SoundTriggerInternal;->stopRecognition(ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I +HPLcom/android/server/soundtrigger/SoundTriggerInternal;->unloadKeyphraseModel(I)I +HPLcom/android/server/statusbar/StatusBarManagerInternal;->appTransitionCancelled()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->appTransitionFinished()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->appTransitionPending()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->appTransitionStarting(JJ)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->cancelPreloadRecentApps()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->dismissKeyboardShortcutsMenu()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->hideRecentApps(ZZ)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->onCameraLaunchGestureDetected(I)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->preloadRecentApps()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setCurrentUser(I)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setGlobalActionsListener(Lcom/android/server/statusbar/StatusBarManagerInternal$GlobalActionsListener;)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setTopAppHidesStatusBar(Z)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->setWindowState(II)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showAssistDisclosure()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showGlobalActions()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showPictureInPictureMenu()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showRecentApps(ZZ)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showScreenPinningRequest(I)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->showShutdownUi(ZLjava/lang/String;)Z +HPLcom/android/server/statusbar/StatusBarManagerInternal;->startAssist(Landroid/os/Bundle;)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleKeyboardShortcutsMenu(I)V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleRecentApps()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->toggleSplitScreen()V +HPLcom/android/server/statusbar/StatusBarManagerInternal;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished()V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending()V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(JJ)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$3;->(Lcom/android/server/statusbar/StatusBarManagerService;Z)V +HPLcom/android/server/statusbar/StatusBarManagerService$3;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService$4;->(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/os/IBinder;IIZ)V +HPLcom/android/server/statusbar/StatusBarManagerService$4;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService$5;->(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/statusbar/StatusBarManagerService$5;->run()V +HPLcom/android/server/statusbar/StatusBarManagerService;->-get0(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar; +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap0(Lcom/android/server/statusbar/StatusBarManagerService;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap2(Lcom/android/server/statusbar/StatusBarManagerService;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->-wrap3(Lcom/android/server/statusbar/StatusBarManagerService;Z)V +HPLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V +HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V +HPLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I +HPLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V +HPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V +HPLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V +HPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(Z)V +HPLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List; +HPLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V +HPLcom/android/server/storage/DeviceStorageMonitorInternal;->checkMemory()V +HPLcom/android/server/storage/DeviceStorageMonitorInternal;->getMemoryLowThreshold()J +HPLcom/android/server/storage/DeviceStorageMonitorInternal;->isMemoryLow()Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap0(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->-wrap1(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z +HPLcom/android/server/storage/DeviceStorageMonitorService;->check()V +HPLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z +HPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V +HPLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V +HPLcom/android/server/timezone/ClockHelper;->currentTimestamp()J +HPLcom/android/server/timezone/ConfigHelper;->getCheckTimeAllowedMillis()I +HPLcom/android/server/timezone/ConfigHelper;->getDataAppPackageName()Ljava/lang/String; +HPLcom/android/server/timezone/ConfigHelper;->getFailedCheckRetryCount()I +HPLcom/android/server/timezone/ConfigHelper;->getUpdateAppPackageName()Ljava/lang/String; +HPLcom/android/server/timezone/ConfigHelper;->isTrackingEnabled()Z +HPLcom/android/server/timezone/IntentHelper$Listener;->triggerUpdateIfNeeded(Z)V +HPLcom/android/server/timezone/IntentHelper;->disableReliabilityTriggering()V +HPLcom/android/server/timezone/IntentHelper;->enableReliabilityTriggering()V +HPLcom/android/server/timezone/IntentHelper;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V +HPLcom/android/server/timezone/IntentHelper;->sendTriggerUpdateCheck(Lcom/android/server/timezone/CheckToken;)V +HPLcom/android/server/timezone/PackageManagerHelper;->contentProviderRegistered(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->getInstalledPackageVersion(Ljava/lang/String;)I +HPLcom/android/server/timezone/PackageManagerHelper;->isPrivilegedApp(Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->receiverRegistered(Landroid/content/Intent;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PackageManagerHelper;->usesPermission(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/timezone/PermissionHelper;->checkDumpPermission(Ljava/lang/String;Ljava/io/PrintWriter;)Z +HPLcom/android/server/timezone/PermissionHelper;->enforceCallerHasPermission(Ljava/lang/String;)V +HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z +HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z +HPLcom/android/server/trust/TrustManagerService;->-wrap3(Lcom/android/server/trust/TrustManagerService;I)I +HPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V +HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I +HPLcom/android/server/twilight/TwilightListener;->onTwilightStateChanged(Lcom/android/server/twilight/TwilightState;)V +HPLcom/android/server/twilight/TwilightManager;->getLastTwilightState()Lcom/android/server/twilight/TwilightState; +HPLcom/android/server/twilight/TwilightManager;->registerListener(Lcom/android/server/twilight/TwilightListener;Landroid/os/Handler;)V +HPLcom/android/server/twilight/TwilightManager;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V +HPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V +HPLcom/android/server/twilight/TwilightService;->-get1(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap; +HPLcom/android/server/usage/AppIdleHistory$PackageHistory;->()V +HPLcom/android/server/usage/AppIdleHistory$PackageHistory;->(Lcom/android/server/usage/AppIdleHistory$PackageHistory;)V +HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;J)Lcom/android/server/usage/AppIdleHistory$PackageHistory; +HPLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J +HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap; +HPLcom/android/server/usage/AppIdleHistory;->hasPassedThresholds(Lcom/android/server/usage/AppIdleHistory$PackageHistory;J)Z +HPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z +HPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V +HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IJ)V +HPLcom/android/server/usage/AppIdleHistory;->shiftHistoryToNow(Landroid/util/ArrayMap;J)V +HPLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(I)V +HPLcom/android/server/usage/IntervalStats;->buildEvent(Ljava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents$Event; +HPLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats; +HPLcom/android/server/usage/IntervalStats;->isStatefulEvent(I)Z +HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;JI)V +HPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V +HPLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I +HPLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J +HPLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z +HPLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats; +HPLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J +HPLcom/android/server/usage/UsageStatsService$2;->onUidStateChanged(IIJ)V +HPLcom/android/server/usage/UsageStatsService$BinderService;->hasPermission(Ljava/lang/String;)Z +HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;I)Z +HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z +HPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;II)V +HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V +HPLcom/android/server/usage/UsageStatsService;->-get0()Ljava/io/File; +HPLcom/android/server/usage/UsageStatsService;->-get4(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray; +HPLcom/android/server/usage/UsageStatsService;->-wrap0(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;IIJ)Z +HPLcom/android/server/usage/UsageStatsService;->-wrap2(Lcom/android/server/usage/UsageStatsService;II)Z +HPLcom/android/server/usage/UsageStatsService;->checkAndGetTimeLocked()J +HPLcom/android/server/usage/UsageStatsService;->checkIdleStates(I)Z +HPLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V +HPLcom/android/server/usage/UsageStatsService;->forceIdleState(Ljava/lang/String;IZ)V +HPLcom/android/server/usage/UsageStatsService;->getAppId(Ljava/lang/String;)I +HPLcom/android/server/usage/UsageStatsService;->getIdleUidsForUser(I)[I +HPLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService; +HPLcom/android/server/usage/UsageStatsService;->informListeners(Ljava/lang/String;IZ)V +HPLcom/android/server/usage/UsageStatsService;->isActiveDeviceAdmin(Ljava/lang/String;I)Z +HPLcom/android/server/usage/UsageStatsService;->isActiveNetworkScorer(Ljava/lang/String;)Z +HPLcom/android/server/usage/UsageStatsService;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z +HPLcom/android/server/usage/UsageStatsService;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z +HPLcom/android/server/usage/UsageStatsService;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z +HPLcom/android/server/usage/UsageStatsService;->isDeviceProvisioningPackage(Ljava/lang/String;)Z +HPLcom/android/server/usage/UsageStatsService;->isParoledOrCharging()Z +HPLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZ)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UsageStatsService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V +HPLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z +HPLcom/android/server/usage/UsageStatsXmlV1;->loadEvent(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->loadUsageStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->read(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->write(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeChooserCounts(Lorg/xmlpull/v1/XmlSerializer;Landroid/app/usage/UsageStats;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeConfigStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/ConfigurationStats;Z)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeEvent(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageEvents$Event;)V +HPLcom/android/server/usage/UsageStatsXmlV1;->writeUsageStats(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V +HPLcom/android/server/usage/UserUsageStatsService$3;->(Lcom/android/server/usage/UserUsageStatsService;JJZLandroid/util/ArraySet;)V +HPLcom/android/server/usage/UserUsageStatsService$3;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V +HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onNewUpdate(I)V +HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsReloaded()V +HPLcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;->onStatsUpdated()V +HPLcom/android/server/usage/UserUsageStatsService;->init(J)V +HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V +HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZ)Landroid/app/usage/UsageEvents; +HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List; +HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V +HPLcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;->onOpenInApp(Landroid/hardware/usb/UsbDevice;)V +HPLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->toString()Ljava/lang/String; +HPLcom/android/server/usb/UsbAlsaManager;->alsaFileAdded(Ljava/lang/String;)V +HPLcom/android/server/usb/UsbAlsaManager;->systemReady()V +HPLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V +HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V +HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; +HPLcom/android/server/utils/ManagedApplicationService$BinderChecker;->checkType(Landroid/os/IInterface;)Z +HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionHidden(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V +HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->onSessionShown(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V +HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;->sessionConnectionGone(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V +HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet; +HPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet; +HPLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V +HPLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V +HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingChanged()V +HPLcom/android/server/vr/SettingsObserver$SettingChangeListener;->onSettingRestored(Ljava/lang/String;Ljava/lang/String;I)V +HPLcom/android/server/vr/VrManagerInternal;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +HPLcom/android/server/vr/VrManagerInternal;->getVr2dDisplayId()I +HPLcom/android/server/vr/VrManagerInternal;->hasVrPackage(Landroid/content/ComponentName;I)I +HPLcom/android/server/vr/VrManagerInternal;->isCurrentVrListener(Ljava/lang/String;I)Z +HPLcom/android/server/vr/VrManagerInternal;->onScreenStateChanged(Z)V +HPLcom/android/server/vr/VrManagerInternal;->onSleepStateChanged(Z)V +HPLcom/android/server/vr/VrManagerInternal;->setPersistentVrModeEnabled(Z)V +HPLcom/android/server/vr/VrManagerInternal;->setVr2dDisplayProperties(Landroid/app/Vr2dDisplayProperties;)V +HPLcom/android/server/vr/VrManagerInternal;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V +HPLcom/android/server/vr/VrManagerService$VrState;->(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z +HPLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V +HPLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +HPLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)Z +HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; +HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V +HPLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z +HPLcom/android/server/wallpaper/WallpaperManagerService;->notifyColorListeners(Landroid/app/WallpaperColors;II)V +HPLcom/android/server/webkit/SystemInterface;->enableFallbackLogic(Z)V +HPLcom/android/server/webkit/SystemInterface;->enablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;Z)V +HPLcom/android/server/webkit/SystemInterface;->enablePackageForUser(Ljava/lang/String;ZI)V +HPLcom/android/server/webkit/SystemInterface;->getFactoryPackageVersion(Ljava/lang/String;)I +HPLcom/android/server/webkit/SystemInterface;->getMultiProcessSetting(Landroid/content/Context;)I +HPLcom/android/server/webkit/SystemInterface;->getPackageInfoForProvider(Landroid/webkit/WebViewProviderInfo;)Landroid/content/pm/PackageInfo; +HPLcom/android/server/webkit/SystemInterface;->getPackageInfoForProviderAllUsers(Landroid/content/Context;Landroid/webkit/WebViewProviderInfo;)Ljava/util/List; +HPLcom/android/server/webkit/SystemInterface;->getUserChosenWebViewProvider(Landroid/content/Context;)Ljava/lang/String; +HPLcom/android/server/webkit/SystemInterface;->getWebViewPackages()[Landroid/webkit/WebViewProviderInfo; +HPLcom/android/server/webkit/SystemInterface;->isFallbackLogicEnabled()Z +HPLcom/android/server/webkit/SystemInterface;->isMultiProcessDefaultEnabled()Z +HPLcom/android/server/webkit/SystemInterface;->killPackageDependents(Ljava/lang/String;)V +HPLcom/android/server/webkit/SystemInterface;->notifyZygote(Z)V +HPLcom/android/server/webkit/SystemInterface;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)I +HPLcom/android/server/webkit/SystemInterface;->setMultiProcessSetting(Landroid/content/Context;I)V +HPLcom/android/server/webkit/SystemInterface;->systemIsDebuggable()Z +HPLcom/android/server/webkit/SystemInterface;->uninstallAndDisablePackageForAllUsers(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/server/webkit/SystemInterface;->updateUserSetting(Landroid/content/Context;Ljava/lang/String;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->(Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$11;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->(Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->$m$0()V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +HPLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$17;->run()V +HPLcom/android/server/wifi/AggressiveConnectedScore;->generateScore()I +HPLcom/android/server/wifi/AggressiveConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V +HPLcom/android/server/wifi/BuildProperties;->isEngBuild()Z +HPLcom/android/server/wifi/BuildProperties;->isUserBuild()Z +HPLcom/android/server/wifi/BuildProperties;->isUserdebugBuild()Z +HPLcom/android/server/wifi/CarrierNetworkConfig;->isCarrierNetwork(Ljava/lang/String;)Z +HPLcom/android/server/wifi/Clock;->getElapsedSinceBootMillis()J +HPLcom/android/server/wifi/Clock;->getUptimeSinceBootMillis()J +HPLcom/android/server/wifi/Clock;->getWallClockMillis()J +HPLcom/android/server/wifi/ConfigurationMap;->getByScanResultForCurrentUser(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/ConfigurationMap;->getForCurrentUser(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/ConfigurationMap;->valuesForCurrentUser()Ljava/util/Collection; +HPLcom/android/server/wifi/ConnectedScore;->getMillis()J +HPLcom/android/server/wifi/DummyLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/DummyLogMessage;->flush()V +HPLcom/android/server/wifi/FakeWifiLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->action()V +HPLcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;->onStatusChanged()V +HPLcom/android/server/wifi/HalDeviceManager$Mutable;->()V +HPLcom/android/server/wifi/HalDeviceManager;->getAllChipInfo()[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo; +HPLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypesInternal(Landroid/hardware/wifi/V1_0/IWifiChip;)Ljava/util/Set; +HPLcom/android/server/wifi/LegacyConnectedScore;->calculateScore(Landroid/net/wifi/WifiInfo;)I +HPLcom/android/server/wifi/LegacyConnectedScore;->generateScore()I +HPLcom/android/server/wifi/LegacyConnectedScore;->isHomeNetwork(Landroid/net/wifi/WifiInfo;)Z +HPLcom/android/server/wifi/LegacyConnectedScore;->multiBandScanResults(Landroid/net/wifi/WifiInfo;)Z +HPLcom/android/server/wifi/LegacyConnectedScore;->updateUsingWifiInfo(Landroid/net/wifi/WifiInfo;J)V +HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->(ILjava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(J)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->copyUntilPlaceholder()V +HPLcom/android/server/wifi/LogcatLog$RealLogMessage;->flush()V +HPLcom/android/server/wifi/LogcatLog;->-get0()Z +HPLcom/android/server/wifi/LogcatLog;->info(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/LogcatLog;->makeLogMessage(ILjava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/LogcatLog;->tC(Ljava/lang/String;)V +HPLcom/android/server/wifi/LogcatLog;->trace(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/PropertyService;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/wifi/PropertyService;->getBoolean(Ljava/lang/String;Z)Z +HPLcom/android/server/wifi/PropertyService;->set(Ljava/lang/String;Ljava/lang/String;)V +HPLcom/android/server/wifi/SavedNetworkEvaluator;->calculateBssidScore(Landroid/net/wifi/ScanResult;Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;Ljava/lang/StringBuffer;)I +HPLcom/android/server/wifi/SavedNetworkEvaluator;->evaluateNetworks(Ljava/util/List;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;ZZLjava/util/List;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/SavedNetworkEvaluator;->updateSavedNetworkSelectionStatus()V +HPLcom/android/server/wifi/ScanDetail;->(Landroid/net/wifi/ScanResult;Lcom/android/server/wifi/hotspot2/NetworkDetail;)V +HPLcom/android/server/wifi/ScanDetail;->(Lcom/android/server/wifi/hotspot2/NetworkDetail;Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;IIJ[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;)V +HPLcom/android/server/wifi/ScanDetail;->getBSSIDString()Ljava/lang/String; +HPLcom/android/server/wifi/ScanDetail;->getNetworkDetail()Lcom/android/server/wifi/hotspot2/NetworkDetail; +HPLcom/android/server/wifi/ScanDetail;->getSSID()Ljava/lang/String; +HPLcom/android/server/wifi/ScanDetail;->getScanResult()Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/ScanDetail;->getSeen()J +HPLcom/android/server/wifi/ScanDetail;->setSeen()J +HPLcom/android/server/wifi/ScanDetailCache;->getScanDetail(Ljava/lang/String;)Lcom/android/server/wifi/ScanDetail; +HPLcom/android/server/wifi/ScanDetailCache;->getScanResult(Ljava/lang/String;)Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/ScanDetailCache;->getVisibility(J)Landroid/net/wifi/WifiConfiguration$Visibility; +HPLcom/android/server/wifi/ScanDetailCache;->getVisibilityByRssi(J)Landroid/net/wifi/WifiConfiguration$Visibility; +HPLcom/android/server/wifi/ScanDetailCache;->put(Lcom/android/server/wifi/ScanDetail;)V +HPLcom/android/server/wifi/ScanDetailCache;->values()Ljava/util/Collection; +HPLcom/android/server/wifi/ScanResultMatchInfo;->()V +HPLcom/android/server/wifi/ScanResultMatchInfo;->equals(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/ScanResultMatchInfo;->fromScanResult(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanResultMatchInfo; +HPLcom/android/server/wifi/ScanResultMatchInfo;->hashCode()I +HPLcom/android/server/wifi/ScoredNetworkEvaluator;->updateNetworkScoreCache(Ljava/util/List;)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkAdded(I)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkEnabled(I)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkPermanentlyDisabled(I)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkRemoved(I)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkTemporarilyDisabled(I)V +HPLcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;->onSavedNetworkUpdated(I)V +HPLcom/android/server/wifi/WifiConfigManager;->addToChannelSetForNetworkFromScanDetailCache(Ljava/util/Set;Lcom/android/server/wifi/ScanDetailCache;JJI)Z +HPLcom/android/server/wifi/WifiConfigManager;->attemptNetworkLinking(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConfigManager;->clearNetworkCandidateScanResult(I)Z +HPLcom/android/server/wifi/WifiConfigManager;->createExternalWifiConfiguration(Landroid/net/wifi/WifiConfiguration;Z)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetail(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkForScanDetailAndCache(Lcom/android/server/wifi/ScanDetail;)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks(ZZ)Ljava/util/List; +HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetwork(I)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiConfigManager;->getInternalConfiguredNetworks()Ljava/util/Collection; +HPLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetwork()I +HPLcom/android/server/wifi/WifiConfigManager;->getOrCreateScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanDetailCache; +HPLcom/android/server/wifi/WifiConfigManager;->getScanDetailCacheForNetwork(I)Lcom/android/server/wifi/ScanDetailCache; +HPLcom/android/server/wifi/WifiConfigManager;->maskPasswordsInWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConfigManager;->retrieveHiddenNetworkList()Ljava/util/List; +HPLcom/android/server/wifi/WifiConfigManager;->saveToScanDetailCacheForNetwork(Landroid/net/wifi/WifiConfiguration;Lcom/android/server/wifi/ScanDetail;)V +HPLcom/android/server/wifi/WifiConfigManager;->setNetworkCandidateScanResult(ILandroid/net/wifi/ScanResult;I)Z +HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(I)Z +HPLcom/android/server/wifi/WifiConfigManager;->tryEnableNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigManager;->updateScanDetailCacheFromWifiInfo(Landroid/net/wifi/WifiInfo;)V +HPLcom/android/server/wifi/WifiConfigStore;->serializeData(Z)[B +HPLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;->compareNetworksWithSameStatus(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)I +HPLcom/android/server/wifi/WifiConfigurationUtil;->hasAnyValidWepKey([Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForEapNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForOpenNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForPskNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConfigurationUtil;->isConfigForWepNetwork(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/WifiConnectivityHelper;->isFirmwareRoamingSupported()Z +HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V +HPLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->-get1(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->-get8(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->-get9(Lcom/android/server/wifi/WifiConnectivityManager;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->buildBssidBlacklist()Ljava/util/HashSet; +HPLcom/android/server/wifi/WifiConnectivityManager;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->handleScanResults(Ljava/util/List;Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiConnectivityManager;->setScanChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)Z +HPLcom/android/server/wifi/WifiConnectivityManager;->startSingleScan(Z)V +HPLcom/android/server/wifi/WifiController$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiController$DeviceActiveState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiController$StaEnabledState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiDiagnostics$1;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V +HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Lcom/android/server/wifi/WifiNative$FateReport;Lcom/android/server/wifi/WifiNative$FateReport;)I +HPLcom/android/server/wifi/WifiDiagnostics$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/wifi/WifiDiagnostics$BugReport;->toString()Ljava/lang/String; +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->addLast(Ljava/lang/Object;)V +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->get(I)Ljava/lang/Object; +HPLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->size()I +HPLcom/android/server/wifi/WifiDiagnostics;->captureBugreport(IZ)Lcom/android/server/wifi/WifiDiagnostics$BugReport; +HPLcom/android/server/wifi/WifiDiagnostics;->compressToBase64([B)Ljava/lang/String; +HPLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFatesInternal(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V +HPLcom/android/server/wifi/WifiDiagnostics;->getKernelLog(I)Lcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray; +HPLcom/android/server/wifi/WifiDiagnostics;->getLogcat(I)Ljava/util/ArrayList; +HPLcom/android/server/wifi/WifiDiagnostics;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V +HPLcom/android/server/wifi/WifiLastResortWatchdog;->updateAvailableNetworks(Ljava/util/List;)V +HPLcom/android/server/wifi/WifiLockManager$WifiLock;->(Lcom/android/server/wifi/WifiLockManager;ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)V +HPLcom/android/server/wifi/WifiLockManager$WifiLock;->unlinkDeathRecipient()V +HPLcom/android/server/wifi/WifiLockManager;->acquireWifiLock(ILjava/lang/String;Landroid/os/IBinder;Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/WifiLockManager;->addLock(Lcom/android/server/wifi/WifiLockManager$WifiLock;)Z +HPLcom/android/server/wifi/WifiLockManager;->findLockByBinder(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; +HPLcom/android/server/wifi/WifiLockManager;->releaseLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiLockManager;->releaseWifiLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiLockManager;->removeLock(Landroid/os/IBinder;)Lcom/android/server/wifi/WifiLockManager$WifiLock; +HPLcom/android/server/wifi/WifiMetrics;->countScanResults(Ljava/util/List;)V +HPLcom/android/server/wifi/WifiMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiMetrics;->handlePollResult(Landroid/net/wifi/WifiInfo;)V +HPLcom/android/server/wifi/WifiMetrics;->increment(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementAvailableNetworksHistograms(Ljava/util/List;Z)V +HPLcom/android/server/wifi/WifiMetrics;->incrementBssid(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementRssiPollRssiCount(I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementScanReturnEntry(II)V +HPLcom/android/server/wifi/WifiMetrics;->incrementSsid(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanResults(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementTotalScanSsids(Landroid/util/SparseIntArray;I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementWifiScoreCount(I)V +HPLcom/android/server/wifi/WifiMetrics;->incrementWifiSystemScanStateCount(IZ)V +HPLcom/android/server/wifi/WifiMetrics;->maybeIncrementRssiDeltaCount(I)V +HPLcom/android/server/wifi/WifiMonitor;->isMonitoring(Ljava/lang/String;)Z +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;I)V +HPLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V +HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->startFilteringMulticastPackets()V +HPLcom/android/server/wifi/WifiMulticastLockManager$FilterController;->stopFilteringMulticastPackets()V +HPLcom/android/server/wifi/WifiNative$FateReport;->(BJB[B)V +HPLcom/android/server/wifi/WifiNative$FateReport;->convertDriverTimestampUSecToWallclockMSec(J)J +HPLcom/android/server/wifi/WifiNative$FateReport;->toTableRowString()Ljava/lang/String; +HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiNative$PnoEventHandler;->onPnoScanFailed()V +HPLcom/android/server/wifi/WifiNative$RingBufferStatus;->()V +HPLcom/android/server/wifi/WifiNative$RttEventHandler;->onRttResults([Landroid/net/wifi/RttManager$RttResult;)V +HPLcom/android/server/wifi/WifiNative$SignalPollResult;->()V +HPLcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;->onDeath()V +HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onRingBufferData(Lcom/android/server/wifi/WifiNative$RingBufferStatus;[B)V +HPLcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;->onWifiAlert(I[B)V +HPLcom/android/server/wifi/WifiNative$WifiRssiEventHandler;->onRssiThresholdBreached(B)V +HPLcom/android/server/wifi/WifiNative;->getChannelsForBand(I)[I +HPLcom/android/server/wifi/WifiNative;->getScanResults()Ljava/util/ArrayList; +HPLcom/android/server/wifi/WifiNative;->getWifiLinkLayerStats(Ljava/lang/String;)Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiNative;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; +HPLcom/android/server/wifi/WifiNetworkSelector;->filterScanResults(Ljava/util/List;Ljava/util/HashSet;ZLjava/lang/String;)Ljava/util/List; +HPLcom/android/server/wifi/WifiNetworkSelector;->isCurrentNetworkSufficient(Landroid/net/wifi/WifiInfo;Ljava/util/List;)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->isNetworkSelectionNeeded(Ljava/util/List;Landroid/net/wifi/WifiInfo;ZZ)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->isSignalTooWeak(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/WifiNetworkSelector;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/WifiNetworkSelector;->selectNetwork(Ljava/util/List;Ljava/util/HashSet;Landroid/net/wifi/WifiInfo;ZZZ)Landroid/net/wifi/WifiConfiguration; +HPLcom/android/server/wifi/WifiNetworkSelector;->toScanId(Landroid/net/wifi/ScanResult;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiScoreReport;->calculateAndReportScore(Landroid/net/wifi/WifiInfo;Landroid/net/NetworkAgent;ILcom/android/server/wifi/WifiMetrics;)V +HPLcom/android/server/wifi/WifiScoreReport;->logLinkMetrics(Landroid/net/wifi/WifiInfo;II)V +HPLcom/android/server/wifi/WifiServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HPLcom/android/server/wifi/WifiServiceImpl;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/WifiServiceImpl;->enforceAccessPermission()V +HPLcom/android/server/wifi/WifiServiceImpl;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice; +HPLcom/android/server/wifi/WifiServiceImpl;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->getDhcpInfo()Landroid/net/DhcpInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->getScanResults(Ljava/lang/String;)Ljava/util/List; +HPLcom/android/server/wifi/WifiServiceImpl;->getWifiEnabledState()I +HPLcom/android/server/wifi/WifiServiceImpl;->releaseWifiLock(Landroid/os/IBinder;)Z +HPLcom/android/server/wifi/WifiServiceImpl;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo; +HPLcom/android/server/wifi/WifiServiceImpl;->requestActivityInfo(Landroid/os/ResultReceiver;)V +HPLcom/android/server/wifi/WifiSettingsStore;->getLocationModeSetting(Landroid/content/Context;)I +HPLcom/android/server/wifi/WifiStateMachine$4;->onFullResult(Landroid/net/wifi/ScanResult;)V +HPLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$ConnectedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get0(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get14(Lcom/android/server/wifi/WifiStateMachine;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get29(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent; +HPLcom/android/server/wifi/WifiStateMachine;->-get41(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get46(Lcom/android/server/wifi/WifiStateMachine;)I +HPLcom/android/server/wifi/WifiStateMachine;->-get65(Lcom/android/server/wifi/WifiStateMachine;)Z +HPLcom/android/server/wifi/WifiStateMachine;->-get71(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiStateMachine;->-get74(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMetrics; +HPLcom/android/server/wifi/WifiStateMachine;->-get80(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiScoreReport; +HPLcom/android/server/wifi/WifiStateMachine;->-wrap18(Lcom/android/server/wifi/WifiStateMachine;)V +HPLcom/android/server/wifi/WifiStateMachine;->-wrap30(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;Lcom/android/internal/util/State;)V +HPLcom/android/server/wifi/WifiStateMachine;->fetchRssiLinkSpeedAndFrequencyNative()V +HPLcom/android/server/wifi/WifiStateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiStateMachine;->isDisconnected()Z +HPLcom/android/server/wifi/WifiStateMachine;->logStateAndMessage(Landroid/os/Message;Lcom/android/internal/util/State;)V +HPLcom/android/server/wifi/WifiStateMachine;->recordLogRec(Landroid/os/Message;)Z +HPLcom/android/server/wifi/WifiStateMachine;->setScanResults()V +HPLcom/android/server/wifi/WifiStateMachine;->smToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->smToString(Landroid/os/Message;)Ljava/lang/String; +HPLcom/android/server/wifi/WifiStateMachine;->syncGetWifiState()I +HPLcom/android/server/wifi/WifiStateMachine;->syncRequestConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo; +HPLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/WifiTrafficPoller;->-get3(Lcom/android/server/wifi/WifiTrafficPoller;)I +HPLcom/android/server/wifi/WifiTrafficPoller;->-wrap1(Lcom/android/server/wifi/WifiTrafficPoller;)V +HPLcom/android/server/wifi/WifiTrafficPoller;->notifyOnDataActivity()V +HPLcom/android/server/wifi/WifiVendorHal$1AnswerBox;->(Lcom/android/server/wifi/WifiVendorHal;)V +HPLcom/android/server/wifi/WifiVendorHal$4AnswerBox;->(Lcom/android/server/wifi/WifiVendorHal;)V +HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->lambda$-com_android_server_wifi_WifiVendorHal$ChipEventCallback_98937(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->onDebugRingBufferDataAvailable(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->-get2(Lcom/android/server/wifi/WifiVendorHal;)Landroid/os/Handler; +HPLcom/android/server/wifi/WifiVendorHal;->-get3(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler; +HPLcom/android/server/wifi/WifiVendorHal;->-wrap3(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus; +HPLcom/android/server/wifi/WifiVendorHal;->enter(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +HPLcom/android/server/wifi/WifiVendorHal;->frameworkFromHalLinkLayerStats(Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiVendorHal;->frameworkRingBufferFlagsFromHal(I)I +HPLcom/android/server/wifi/WifiVendorHal;->getChannelsForBand(I)[I +HPLcom/android/server/wifi/WifiVendorHal;->getSupportedFeatureSet()I +HPLcom/android/server/wifi/WifiVendorHal;->getWifiLinkLayerStats()Landroid/net/wifi/WifiLinkLayerStats; +HPLcom/android/server/wifi/WifiVendorHal;->intArrayFromArrayList(Ljava/util/ArrayList;)[I +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_25531(Lcom/android/server/wifi/WifiVendorHal$1AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaLinkLayerStats;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_56256(Lcom/android/server/wifi/WifiVendorHal$4AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_75348([Lcom/android/server/wifi/WifiNative$TxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_77135([Lcom/android/server/wifi/WifiNative$RxFateReport;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +HPLcom/android/server/wifi/WifiVendorHal;->makeWifiBandFromFrameworkBand(I)I +HPLcom/android/server/wifi/WifiVendorHal;->ok(Landroid/hardware/wifi/V1_0/WifiStatus;)Z +HPLcom/android/server/wifi/WifiVendorHal;->ringBufferStatus(Landroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;)Lcom/android/server/wifi/WifiNative$RingBufferStatus; +HPLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromStaCapabilities(I)I +HPLcom/android/server/wifi/WificondControl$ScanEventHandler;->OnScanResultReady()V +HPLcom/android/server/wifi/WificondControl;->getScanResults(I)Ljava/util/ArrayList; +HPLcom/android/server/wifi/WificondControl;->scan(Ljava/util/Set;Ljava/util/Set;)Z +HPLcom/android/server/wifi/WificondControl;->signalPoll()Lcom/android/server/wifi/WifiNative$SignalPollResult; +HPLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->values()[Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->(Ljava/lang/String;[Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/List;I)V +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnqpDomainID()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getBSSIDString()Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq0()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getCenterfreq1()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getChannelWidth()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getDtimInterval()I +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHESSID()J +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getHSRelease()Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getOsuProviders()[B +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->getSSID()Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->is80211McResponderSupport()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isBeaconFrame()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isHiddenBeaconFrame()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->isInterworking()Z +HPLcom/android/server/wifi/hotspot2/NetworkDetail;->toMACString(J)Ljava/lang/String; +HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviderIndex()J +HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->getProviders()Ljava/util/List; +HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->setProviderIndex(J)V +HPLcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;->setProviders(Ljava/util/List;)V +HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onANQPResponse(JLjava/util/Map;)V +HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onIconResponse(JLjava/lang/String;[B)V +HPLcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;->onWnmFrameReceived(Lcom/android/server/wifi/hotspot2/WnmData;)V +HPLcom/android/server/wifi/hotspot2/Utils;->fromHex(CZ)I +HPLcom/android/server/wifi/hotspot2/Utils;->parseMac(Ljava/lang/String;)J +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->(J)V +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->$m$0(I)Ljava/lang/Object; +HPLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->apply(I)Ljava/lang/Object; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->(Lcom/android/server/wifi/scanner/ChannelHelper;)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addBand(I)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannel(I)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Landroid/net/wifi/WifiScanner$ScanSettings;)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->addChannels(Lcom/android/server/wifi/WifiNative$BucketSettings;)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->clear()V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsBand(I)Z +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsChannel(I)Z +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->getChannelSet()Ljava/util/Set; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->getContainingChannelsFromBand(I)Ljava/util/Set; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->getMissingChannelsFromBand(I)Ljava/util/Set; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->getScanFreqs()Ljava/util/Set; +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->isAllChannels()Z +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->isEmpty()Z +HPLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->partiallyContainsBand(I)Z +HPLcom/android/server/wifi/scanner/ChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection; +HPLcom/android/server/wifi/scanner/ChannelHelper;->estimateScanDuration(Landroid/net/wifi/WifiScanner$ScanSettings;)I +HPLcom/android/server/wifi/scanner/ChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec; +HPLcom/android/server/wifi/scanner/ChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/HalChannelHelper;->updateChannels()V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addBand(I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->addChannel(I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsBand(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->containsChannel(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->fillBucketSettings(Lcom/android/server/wifi/WifiNative$BucketSettings;I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->-wrap0(Lcom/android/server/wifi/scanner/KnownBandsChannelHelper;I)I +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->copyChannels([Landroid/net/wifi/WifiScanner$ChannelSpec;I[I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->createChannelCollection()Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getAvailableScanChannels(I)[Landroid/net/wifi/WifiScanner$ChannelSpec; +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->getBandFromChannel(I)I +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->isDfsChannel(I)Z +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->setBandChannels([I[I[I)V +HPLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->settingsContainChannel(Landroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->filterResultsForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;[Landroid/net/wifi/WifiScanner$ScanData;Landroid/net/wifi/WifiScanner$ScanSettings;I)[Landroid/net/wifi/WifiScanner$ScanData; +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->isBucketMaybeScanned(II)Z +HPLcom/android/server/wifi/scanner/ScanScheduleUtil;->shouldReportFullScanResultForSettings(Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/net/wifi/ScanResult;ILandroid/net/wifi/WifiScanner$ScanSettings;I)Z +HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Landroid/net/wifi/ScanResult;Landroid/net/wifi/ScanResult;)I +HPLcom/android/server/wifi/scanner/WifiScannerImpl$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HPLcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->reportEvent(IIILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->toString()Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->reportEvent(IIILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo;->reportEvent(IILjava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->addRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Ljava/lang/Object;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->createMergedWorkSource()Landroid/os/WorkSource; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState-mthref-0(I)[Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->filterCachedScanResultsByAge()[Landroid/net/wifi/ScanResult; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->lambda$-com_android_server_wifi_scanner_WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState_23945(JLandroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->enter()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->exit()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->processMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Ljava/util/List; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onFullScanResult(Landroid/net/wifi/ScanResult;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->onScanStatus(I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportFullScanResult(Landroid/net/wifi/ScanResult;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->reportScanResults(Landroid/net/wifi/WifiScanner$ScanData;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendOpFailedToAllAndClear(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;ILjava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->sendScanResultBroadcast(Z)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->tryToStartNewScan()V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get14(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get15(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get16(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/WifiMetrics; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/ChannelHelper; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/util/ArrayMap; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get6(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/Clock; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->computeWorkSource(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeForLog([Landroid/net/wifi/WifiScanner$ScanData;)Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->describeTo(Ljava/lang/StringBuilder;Landroid/net/wifi/WifiScanner$ScanSettings;)Ljava/lang/String; +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->enforceLocationHardwarePermission(I)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->isWorkSourceValid(Landroid/os/WorkSource;)Z +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->localLog(Ljava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logCallback(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILjava/lang/String;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->logScanRequest(Ljava/lang/String;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/os/WorkSource;Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;)V +HPLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->replySucceeded(Landroid/os/Message;)V +HPLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$Listener;->onPnoScanFailed()V +HPLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;->(J)V +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->handleMessage(Landroid/os/Message;)Z +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->isAllChannelsScanned(Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;)Z +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->pollLatestScanData()V +HPLcom/android/server/wifi/scanner/WificondScannerImpl;->processPendingScans()V +HPLcom/android/server/wifi/util/BitMask;->(I)V +HPLcom/android/server/wifi/util/BitMask;->testAndClear(I)Z +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->appendBuffer([B)Z +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getBuffer(I)[B +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->getNumBuffers()I +HPLcom/android/server/wifi/util/ByteArrayRingBuffer;->pruneToSize(I)V +HPLcom/android/server/wifi/util/FrameParser;->(B[B)V +HPLcom/android/server/wifi/util/FrameParser;->getUnsignedByte(Ljava/nio/ByteBuffer;)S +HPLcom/android/server/wifi/util/FrameParser;->getUnsignedShort(Ljava/nio/ByteBuffer;)I +HPLcom/android/server/wifi/util/FrameParser;->parseEthernetFrame(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/wifi/util/FrameParser;->parseIpv4Packet(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/wifi/util/FrameParser;->parseTcpPacket(Ljava/nio/ByteBuffer;)V +HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$BssLoad;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->cipherToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->from([Landroid/net/wifi/ScanResult$InformationElement;Ljava/util/BitSet;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->generateCapabilitiesString()Ljava/lang/String; +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)Z +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->isWpsElement(Landroid/net/wifi/ScanResult$InformationElement;)Z +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->keyManagementToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnCipher(I)I +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseRsnElement(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaOneElement(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->protocolToString(I)Ljava/lang/String; +HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities;->is80211McRTTResponder()Z +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getCenterFreq0(I)I +HPLcom/android/server/wifi/util/InformationElementUtil$HtOperation;->getChannelWidth()I +HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$Interworking;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$RoamingConsortium;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->getRateFromByte(I)I +HPLcom/android/server/wifi/util/InformationElementUtil$SupportedRates;->isValid()Z +HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap;->isValid()Z +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq0()I +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getCenterFreq1()I +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->getChannelWidth()I +HPLcom/android/server/wifi/util/InformationElementUtil$VhtOperation;->isValid()Z +HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;->()V +HPLcom/android/server/wifi/util/InformationElementUtil$Vsa;->from(Landroid/net/wifi/ScanResult$InformationElement;)V +HPLcom/android/server/wifi/util/InformationElementUtil$WifiMode;->determineMode(IIZZZ)I +HPLcom/android/server/wifi/util/InformationElementUtil;->parseInformationElements([B)[Landroid/net/wifi/ScanResult$InformationElement; +HPLcom/android/server/wifi/util/NativeUtil;->byteArrayFromArrayList(Ljava/util/ArrayList;)[B +HPLcom/android/server/wifi/util/NativeUtil;->byteArrayToArrayList([B)Ljava/util/ArrayList; +HPLcom/android/server/wifi/util/NativeUtil;->macAddressFromByteArray([B)Ljava/lang/String; +HPLcom/android/server/wifi/util/ScanResultUtil;->createQuotedSSID(Ljava/lang/String;)Ljava/lang/String; +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForEapNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForOpenNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForPskNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->isScanResultForWepNetwork(Landroid/net/wifi/ScanResult;)Z +HPLcom/android/server/wifi/util/ScanResultUtil;->toScanDetail(Landroid/net/wifi/ScanResult;)Lcom/android/server/wifi/ScanDetail; +HPLcom/android/server/wifi/util/TelephonyUtil;->getSimMethodForConfig(Landroid/net/wifi/WifiConfiguration;)I +HPLcom/android/server/wifi/util/TelephonyUtil;->isSimConfig(Landroid/net/wifi/WifiConfiguration;)Z +HPLcom/android/server/wifi/util/TelephonyUtil;->isSimEapMethod(I)Z +HPLcom/android/server/wifi/util/WifiAsyncChannel;->getOrInitLog()Lcom/android/server/wifi/WifiLog; +HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/util/WifiAsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message; +HPLcom/android/server/wifi/util/WifiHandler;->getOrInitLog()Lcom/android/server/wifi/WifiLog; +HPLcom/android/server/wifi/util/WifiHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->canAccessScanResults(Ljava/lang/String;II)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkAppOpAllowed(ILjava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallerHasPeersMacAddressPermission(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->checkCallersLocationPermission(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCallerActiveNwScorer(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isCurrentProfile(I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isForegroundApp(Ljava/lang/String;)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyForeground(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLegacyVersion(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isLocationModeEnabled(Ljava/lang/String;)Z +HPLcom/android/server/wifi/util/WifiPermissionsUtil;->isScanAllowedbyApps(Ljava/lang/String;I)Z +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCallingUserId(I)I +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getCurrentUser()I +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getTopPkgName()Ljava/lang/String; +HPLcom/android/server/wifi/util/WifiPermissionsWrapper;->getUidPermission(Ljava/lang/String;I)I +HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/util/Pair; +HPLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeToXmlForConfigStore(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V +HPLcom/android/server/wifi/util/XmlUtil;->readCurrentValue(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; +HPLcom/android/server/wifi/util/XmlUtil;->writeNextValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/Object;)V +HPLcom/android/server/wifi/wificond/ChannelSettings;->()V +HPLcom/android/server/wifi/wificond/ChannelSettings;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/server/wifi/wificond/NativeScanResult; +HPLcom/android/server/wifi/wificond/NativeScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HPLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Ljava/lang/Object; +HPLcom/android/server/wifi/wificond/NativeScanResult;->()V +HPLcom/android/server/wifi/wificond/SingleScanSettings;->writeToParcel(Landroid/os/Parcel;I)V +HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->$m$0(J)V +HPLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->doFrame(J)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$1(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->apply(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$1(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$14(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$17(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$3(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$4(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$5(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$6(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$7(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$8(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$9(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->(BLjava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$12()V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->(BLjava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->run()V +HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$0(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->$m$3(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->test(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$0(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->$m$1(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->apply(Ljava/lang/Object;)Z +HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->$m$0(I)Ljava/io/File; +HPLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->getSystemDirectoryForUser(I)Ljava/io/File; +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->cacheWindows(Ljava/util/List;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->clearAndRecycleWindows(Ljava/util/List;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeWindowBoundsInScreen(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->isReportedWindowType(I)Z +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$-com_android_server_wm_AccessibilityController$WindowsForAccessibilityObserver_59134(Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->obtainPopulatedWindowInfo(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)Landroid/view/WindowInfo; +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindowsNotLocked()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->populateVisibleWindowsOnScreenLocked(Landroid/util/SparseArray;)V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->scheduleComputeChangedWindowsLocked()V +HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z +HPLcom/android/server/wm/AccessibilityController;->-wrap0(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/AccessibilityController;->drawMagnifiedRegionBorderIfNeededLocked()V +HPLcom/android/server/wm/AccessibilityController;->getMagnificationSpecForWindowLocked(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec; +HPLcom/android/server/wm/AccessibilityController;->onRectangleOnScreenRequestedLocked(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AccessibilityController;->onSomeWindowResizedOrMovedLocked()V +HPLcom/android/server/wm/AccessibilityController;->onWindowLayersChangedLocked()V +HPLcom/android/server/wm/AccessibilityController;->populateTransformationMatrixLocked(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->getAppStackClipMode()I +HPLcom/android/server/wm/AppTransition;->getAppTransition()I +HPLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry; +HPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/AppWindowAnimator;Landroid/util/ArraySet;Landroid/util/ArraySet;)I +HPLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z +HPLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z +HPLcom/android/server/wm/AppTransition;->isReady()Z +HPLcom/android/server/wm/AppTransition;->isRunning()Z +HPLcom/android/server/wm/AppTransition;->isTimeout()Z +HPLcom/android/server/wm/AppTransition;->isTransitionSet()Z +HPLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation; +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V +HPLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I +HPLcom/android/server/wm/AppTransition;->prepare()Z +HPLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z +HPLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V +HPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/AppTransition;->setReady()V +HPLcom/android/server/wm/AppTransition;->updateBooster()V +HPLcom/android/server/wm/AppWindowAnimator;->clearAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->clearThumbnail()V +HPLcom/android/server/wm/AppWindowAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J +HPLcom/android/server/wm/AppWindowAnimator;->getStackClip()I +HPLcom/android/server/wm/AppWindowAnimator;->getStartTimeCorrection()J +HPLcom/android/server/wm/AppWindowAnimator;->getTransit()I +HPLcom/android/server/wm/AppWindowAnimator;->isAnimating()Z +HPLcom/android/server/wm/AppWindowAnimator;->isAnimationStarting()Z +HPLcom/android/server/wm/AppWindowAnimator;->setAnimation(Landroid/view/animation/Animation;IIIIZIII)V +HPLcom/android/server/wm/AppWindowAnimator;->setDummyAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->setNullAnimation()V +HPLcom/android/server/wm/AppWindowAnimator;->showAllWindowsLocked()Z +HPLcom/android/server/wm/AppWindowAnimator;->stepAnimation(J)Z +HPLcom/android/server/wm/AppWindowAnimator;->stepAnimationLocked(J)Z +HPLcom/android/server/wm/AppWindowAnimator;->updateLayers()V +HPLcom/android/server/wm/AppWindowContainerController$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/AppWindowContainerController;->(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLcom/android/server/wm/WindowManagerService;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AppWindowContainerController;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z +HPLcom/android/server/wm/AppWindowContainerController;->getOrientation()I +HPLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4735()V +HPLcom/android/server/wm/AppWindowContainerController;->pauseKeyDispatching()V +HPLcom/android/server/wm/AppWindowContainerController;->removeStartingWindow()V +HPLcom/android/server/wm/AppWindowContainerController;->reportStartingWindowDrawn()V +HPLcom/android/server/wm/AppWindowContainerController;->resumeKeyDispatching()V +HPLcom/android/server/wm/AppWindowContainerController;->setVisibility(ZZ)V +HPLcom/android/server/wm/AppWindowContainerController;->stopFreezingScreen(Z)V +HPLcom/android/server/wm/AppWindowToken;->(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;ZLandroid/content/res/Configuration;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AppWindowToken;->allDrawnStatesConsidered()Z +HPLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/AppWindowToken;->canRestoreSurfaces()Z +HPLcom/android/server/wm/AppWindowToken;->checkAppWindowsReadyToShow()V +HPLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V +HPLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V +HPLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V +HPLcom/android/server/wm/AppWindowToken;->clearWasVisibleBeforeClientHidden()V +HPLcom/android/server/wm/AppWindowToken;->containsDismissKeyguardWindow()Z +HPLcom/android/server/wm/AppWindowToken;->containsShowWhenLockedWindow()Z +HPLcom/android/server/wm/AppWindowToken;->destroySavedSurfaces()V +HPLcom/android/server/wm/AppWindowToken;->destroySurfaces()V +HPLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V +HPLcom/android/server/wm/AppWindowToken;->fillsParent()Z +HPLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/AppWindowToken;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/AppWindowToken;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/AppWindowToken;->getAnimLayerAdjustment()I +HPLcom/android/server/wm/AppWindowToken;->getController()Lcom/android/server/wm/AppWindowContainerController; +HPLcom/android/server/wm/AppWindowToken;->getOrientation(I)I +HPLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I +HPLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/AppWindowToken;->getTask()Lcom/android/server/wm/Task; +HPLcom/android/server/wm/AppWindowToken;->hasBounds()Z +HPLcom/android/server/wm/AppWindowToken;->isAnimatingInvisibleWithSavedSurface()Z +HPLcom/android/server/wm/AppWindowToken;->isClientHidden()Z +HPLcom/android/server/wm/AppWindowToken;->isRelaunching()Z +HPLcom/android/server/wm/AppWindowToken;->isVisible()Z +HPLcom/android/server/wm/AppWindowToken;->markSavedSurfaceExiting()V +HPLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V +HPLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V +HPLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V +HPLcom/android/server/wm/AppWindowToken;->onParentSet()V +HPLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V +HPLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V +HPLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V +HPLcom/android/server/wm/AppWindowToken;->restoreSavedSurfaceForInterestingWindows()V +HPLcom/android/server/wm/AppWindowToken;->setAllAppWinAnimators()V +HPLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V +HPLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V +HPLcom/android/server/wm/AppWindowToken;->setVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z +HPLcom/android/server/wm/AppWindowToken;->stepAppWindowsAnimation(J)V +HPLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String; +HPLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V +HPLcom/android/server/wm/AppWindowToken;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V +HPLcom/android/server/wm/AppWindowToken;->windowsAreFocusable()Z +HPLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/graphics/Matrix;)V +HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V +HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationEnd(ZLandroid/graphics/Rect;Z)V +HPLcom/android/server/wm/BoundsAnimationTarget;->onAnimationStart(Z)V +HPLcom/android/server/wm/BoundsAnimationTarget;->setPinnedStackSize(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z +HPLcom/android/server/wm/DimLayer;->adjustAlpha(F)V +HPLcom/android/server/wm/DimLayer;->adjustBounds()V +HPLcom/android/server/wm/DimLayer;->getBoundsForFullscreen(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DimLayer;->getLayer()I +HPLcom/android/server/wm/DimLayer;->getTargetAlpha()F +HPLcom/android/server/wm/DimLayer;->hide()V +HPLcom/android/server/wm/DimLayer;->hide(J)V +HPLcom/android/server/wm/DimLayer;->isAnimating()Z +HPLcom/android/server/wm/DimLayer;->isDimming()Z +HPLcom/android/server/wm/DimLayer;->setAlpha(F)V +HPLcom/android/server/wm/DimLayer;->setBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DimLayer;->setBoundsForFullscreen()V +HPLcom/android/server/wm/DimLayer;->setLayer(I)V +HPLcom/android/server/wm/DimLayer;->show(IFJ)V +HPLcom/android/server/wm/DimLayer;->stepAnimation()Z +HPLcom/android/server/wm/DimLayerController;->animateDimLayers()Z +HPLcom/android/server/wm/DimLayerController;->animateDimLayers(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z +HPLcom/android/server/wm/DimLayerController;->applyDim(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V +HPLcom/android/server/wm/DimLayerController;->getOrCreateDimLayerState(Lcom/android/server/wm/DimLayer$DimLayerUser;)Lcom/android/server/wm/DimLayerController$DimLayerState; +HPLcom/android/server/wm/DimLayerController;->isDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)Z +HPLcom/android/server/wm/DimLayerController;->resetDimming()V +HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded()V +HPLcom/android/server/wm/DimLayerController;->stopDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +HPLcom/android/server/wm/DimLayerController;->updateDimLayer(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +HPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V +HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z +HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->get(I)Lcom/android/server/wm/WindowContainer; +HPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->size()I +HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I +HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_154417(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent$Screenshoter;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllExitingAppTokenWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeExistingAppTokensIfPossible()V +HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->setExitingTokensHasVisible(Z)V +HPLcom/android/server/wm/DisplayContent;->-set2(Lcom/android/server/wm/DisplayContent;I)I +HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIIII)V +HPLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->animateDimLayers()Z +HPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction(Z)Z +HPLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V +HPLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V +HPLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIII)I +HPLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;IZIIIFLandroid/content/res/Configuration;)V +HPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/DisplayContent;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/DisplayContent;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/DisplayContent;->getDisplayId()I +HPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo; +HPLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController; +HPLcom/android/server/wm/DisplayContent;->getDockedStackIgnoringVisibility()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getDockedStackLocked()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getHomeStack()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getLastOrientation()I +HPLcom/android/server/wm/DisplayContent;->getLayerForAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;)I +HPLcom/android/server/wm/DisplayContent;->getLogicalDisplayRect(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->getOrientation()I +HPLcom/android/server/wm/DisplayContent;->getRotation()I +HPLcom/android/server/wm/DisplayContent;->getStackById(I)Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken; +HPLcom/android/server/wm/DisplayContent;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z +HPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z +HPLcom/android/server/wm/DisplayContent;->isStackVisible(I)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_109993(Lcom/android/server/wm/WindowState;Landroid/view/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_113179(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117549(IILcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_130270(IZLandroid/os/IBinder;Landroid/util/MutableBoolean;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_16102(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_18415(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20364(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_20860(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_22915(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_23021(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_26564(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28303(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28588(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_28793(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_92144(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->okToAnimate()Z +HPLcom/android/server/wm/DisplayContent;->okToDisplay()Z +HPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V +HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V +HPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +HPLcom/android/server/wm/DisplayContent;->prepareWindowSurfaces()V +HPLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;III)I +HPLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIII)I +HPLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V +HPLcom/android/server/wm/DisplayContent;->resetAnimationBackgroundAnimator()V +HPLcom/android/server/wm/DisplayContent;->resetDimming()V +HPLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/DisplayContent;->screenshotApplications(Landroid/os/IBinder;IIZFZZLcom/android/server/wm/DisplayContent$Screenshoter;)Ljava/lang/Object; +HPLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V +HPLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;ZI)V +HPLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V +HPLcom/android/server/wm/DisplayContent;->setTouchExcludeRegion(Lcom/android/server/wm/Task;)V +HPLcom/android/server/wm/DisplayContent;->stopDimmingIfNeeded()V +HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo; +HPLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z +HPLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V +HPLcom/android/server/wm/DisplayContent;->updateWallpaperForAnimator(Lcom/android/server/wm/WindowAnimator;)V +HPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator(Lcom/android/server/wm/WindowAnimator;)V +HPLcom/android/server/wm/DockedStackDividerController;->animate(J)Z +HPLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V +HPLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z +HPLcom/android/server/wm/DockedStackDividerController;->isResizing()Z +HPLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V +HPLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V +HPLcom/android/server/wm/DockedStackDividerController;->setResizeDimLayer(ZIF)V +HPLcom/android/server/wm/InputConsumerImpl;->layout(II)V +HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-wrap0(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V +HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V +HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V +HPLcom/android/server/wm/InputMonitor;->-get0(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get1(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get2(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get3(Lcom/android/server/wm/InputMonitor;)Z +HPLcom/android/server/wm/InputMonitor;->-get4(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/input/InputWindowHandle; +HPLcom/android/server/wm/InputMonitor;->-get5(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/InputMonitor;->-get6(Lcom/android/server/wm/InputMonitor;)[Lcom/android/server/input/InputWindowHandle; +HPLcom/android/server/wm/InputMonitor;->-get7(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService; +HPLcom/android/server/wm/InputMonitor;->-get8(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect; +HPLcom/android/server/wm/InputMonitor;->-set0(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set1(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set2(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-set3(Lcom/android/server/wm/InputMonitor;Z)Z +HPLcom/android/server/wm/InputMonitor;->-wrap1(Lcom/android/server/wm/InputMonitor;)V +HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;)V +HPLcom/android/server/wm/InputMonitor;->addInputWindowHandle(Lcom/android/server/input/InputWindowHandle;Lcom/android/server/wm/WindowState;IIZZZ)V +HPLcom/android/server/wm/InputMonitor;->clearInputWindowHandlesLw()V +HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;I)Lcom/android/server/wm/InputConsumerImpl; +HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeDispatching(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)J +HPLcom/android/server/wm/InputMonitor;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I +HPLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V +HPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V +HPLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V +HPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V +HPLcom/android/server/wm/PinnedStackController;->getDefaultBounds()Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect; +HPLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(Z)V +HPLcom/android/server/wm/PinnedStackController;->reloadResources()V +HPLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V +HPLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect; +HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;I)V +HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(ZII)V +HPLcom/android/server/wm/RootWindowContainer;->computeFocusedWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z +HPLcom/android/server/wm/RootWindowContainer;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/RootWindowContainer;->getStackById(I)Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z +HPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()Landroid/util/ArraySet; +HPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z +HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z +HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7116(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_7397(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement(Z)V +HPLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V +HPLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation; +HPLcom/android/server/wm/ScreenRotationAnimation;->hasAnimations()Z +HPLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z +HPLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransformInTransaction(Landroid/graphics/Matrix;F)V +HPLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z +HPLcom/android/server/wm/ScreenRotationAnimation;->updateSurfacesInTransaction()V +HPLcom/android/server/wm/Session;->(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)V +HPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V +HPLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V +HPLcom/android/server/wm/Session;->performHapticFeedback(Landroid/view/IWindow;IZ)Z +HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HPLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V +HPLcom/android/server/wm/StackWindowController;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/StackWindowController;->positionChildAtTop(Lcom/android/server/wm/TaskWindowContainerController;Z)V +HPLcom/android/server/wm/StackWindowListener;->requestResize(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->(Landroid/view/SurfaceSession;Ljava/lang/String;IIIIIILcom/android/server/wm/WindowSurfaceController;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->destroy()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->hide()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setAlpha(F)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setFinalCrop(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayer(I)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setLayerStack(I)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setMatrix(FFFF)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setPosition(FF)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->setWindowCrop(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/SurfaceControlWithBackground;->show()V +HPLcom/android/server/wm/SurfaceControlWithBackground;->updateBackgroundVisibility()V +HPLcom/android/server/wm/Task;->(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;Landroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskWindowContainerController;)V +HPLcom/android/server/wm/Task;->cropWindowsToStackBounds()Z +HPLcom/android/server/wm/Task;->dimFullscreen()Z +HPLcom/android/server/wm/Task;->fillsParent()Z +HPLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I +HPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/Task;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/Task;->getTopVisibleAppToken()Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/Task;->inFreeformWorkspace()Z +HPLcom/android/server/wm/Task;->inPinnedWorkspace()Z +HPLcom/android/server/wm/Task;->isAttachedToDisplay()Z +HPLcom/android/server/wm/Task;->isDragResizing()Z +HPLcom/android/server/wm/Task;->isFloating()Z +HPLcom/android/server/wm/Task;->isFullscreen()Z +HPLcom/android/server/wm/Task;->isHomeTask()Z +HPLcom/android/server/wm/Task;->isResizeable()Z +HPLcom/android/server/wm/Task;->onParentSet()V +HPLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/content/res/Configuration;)I +HPLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/wm/Task;->showForAllUsers()Z +HPLcom/android/server/wm/Task;->useCurrentBounds()Z +HPLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V +HPLcom/android/server/wm/TaskSnapshotController;->-com_android_server_wm_TaskSnapshotController-mthref-0(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V +HPLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot; +HPLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V +HPLcom/android/server/wm/TaskSnapshotPersister$1;->run()V +HPLcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;->getSystemDirectoryForUser(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I +HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V +HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z +HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z +HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->write()V +HPLcom/android/server/wm/TaskSnapshotPersister;->-get1(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object; +HPLcom/android/server/wm/TaskSnapshotPersister;->-get5(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque; +HPLcom/android/server/wm/TaskSnapshotPersister;->-set0(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z +HPLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File; +HPLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V +HPLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V +HPLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface; +HPLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/TaskStack;->computeMinPosition(II)I +HPLcom/android/server/wm/TaskStack;->dimFullscreen()Z +HPLcom/android/server/wm/TaskStack;->fillsParent()Z +HPLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I +HPLcom/android/server/wm/TaskStack;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskStack;->getDimBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskStack;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/TaskStack;->getDisplayInfo()Landroid/view/DisplayInfo; +HPLcom/android/server/wm/TaskStack;->isAdjustedForMinimizedDockedStack()Z +HPLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z +HPLcom/android/server/wm/TaskStack;->isAnimatingForIme()Z +HPLcom/android/server/wm/TaskStack;->isAttachedToDisplay()Z +HPLcom/android/server/wm/TaskStack;->isForceScaled()Z +HPLcom/android/server/wm/TaskStack;->isMinimizedDockAndHomeStackResizable()Z +HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V +HPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V +HPLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V +HPLcom/android/server/wm/TaskStack;->resetAnimationBackgroundAnimator()V +HPLcom/android/server/wm/TaskStack;->setAdjustedBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskStack;->setAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;I)V +HPLcom/android/server/wm/TaskStack;->setTouchExcludeRegion(Lcom/android/server/wm/Task;ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskStack;->shouldIgnoreInput()Z +HPLcom/android/server/wm/TaskStack;->stepAppWindowsAnimation(J)V +HPLcom/android/server/wm/TaskStack;->updateAdjustedBounds()V +HPLcom/android/server/wm/TaskStack;->useCurrentBounds()Z +HPLcom/android/server/wm/TaskTapPointerEventListener;->getDisplayId()I +HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V +HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;I)V +HPLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V +HPLcom/android/server/wm/TaskWindowContainerController;->(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/WindowManagerService;)V +HPLcom/android/server/wm/TaskWindowContainerController;->getBounds(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/TaskWindowContainerController;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V +HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V +HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Lcom/android/server/wm/DisplayContent;Landroid/util/ArraySet;)V +HPLcom/android/server/wm/WallpaperController;->findWallpaperTarget(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperController;->getAnimLayerAdjustment()I +HPLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z +HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->lambda$-com_android_server_wm_WallpaperController_4687(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z +HPLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V +HPLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V +HPLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z +HPLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z +HPLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V +HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(ZI)V +HPLcom/android/server/wm/WindowAnimator;->animate(J)V +HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V +HPLcom/android/server/wm/WindowAnimator;->getDisplayContentsAnimatorLocked(I)Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator; +HPLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I +HPLcom/android/server/wm/WindowAnimator;->getScreenRotationAnimationLocked(I)Lcom/android/server/wm/ScreenRotationAnimation; +HPLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3951(J)V +HPLcom/android/server/wm/WindowAnimator;->orAnimating(Z)V +HPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V +HPLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V +HPLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V +HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z +HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V +HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V +HPLcom/android/server/wm/WindowContainer;->-get0(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool; +HPLcom/android/server/wm/WindowContainer;->()V +HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V +HPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V +HPLcom/android/server/wm/WindowContainer;->checkCompleteDeferredRemoval()Z +HPLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I +HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V +HPLcom/android/server/wm/WindowContainer;->getConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowContainer;->getController()Lcom/android/server/wm/WindowContainerController; +HPLcom/android/server/wm/WindowContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowContainer;->getOrientation()I +HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I +HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer; +HPLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V +HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer; +HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z +HPLcom/android/server/wm/WindowContainer;->isAnimating()Z +HPLcom/android/server/wm/WindowContainer;->isOnTop()Z +HPLcom/android/server/wm/WindowContainer;->isVisible()Z +HPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper; +HPLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V +HPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/WindowContainer;->onMergedOverrideConfigurationChanged()V +HPLcom/android/server/wm/WindowContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V +HPLcom/android/server/wm/WindowContainer;->onParentSet()V +HPLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V +HPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V +HPLcom/android/server/wm/WindowContainer;->removeImmediately()V +HPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V +HPLcom/android/server/wm/WindowContainer;->setController(Lcom/android/server/wm/WindowContainerController;)V +HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V +HPLcom/android/server/wm/WindowContainer;->setVisibleBeforeClientHidden()V +HPLcom/android/server/wm/WindowContainer;->stepAppWindowsAnimation(J)V +HPLcom/android/server/wm/WindowLayersController;->adjustSpecialWindows()V +HPLcom/android/server/wm/WindowLayersController;->assignAnimLayer(Lcom/android/server/wm/WindowState;I)V +HPLcom/android/server/wm/WindowLayersController;->assignWindowLayers(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WindowLayersController;->collectSpecialWindows(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowLayersController;->lambda$-com_android_server_wm_WindowLayersController_3664(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowLayersController;->reset()V +HPLcom/android/server/wm/WindowList;->()V +HPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object; +HPLcom/android/server/wm/WindowManagerService$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V +HPLcom/android/server/wm/WindowManagerService$AppFreezeListener;->onAppFreezeTimeout()V +HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V +HPLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility()V +HPLcom/android/server/wm/WindowManagerService$LocalService;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec; +HPLcom/android/server/wm/WindowManagerService$LocalService;->isDockedDividerResizing()Z +HPLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z +HPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisible(I)Z +HPLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V +HPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +HPLcom/android/server/wm/WindowManagerService;->applyAnimationLocked(Lcom/android/server/wm/AppWindowToken;Landroid/view/WindowManager$LayoutParams;IZZ)Z +HPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V +HPLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z +HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V +HPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction()V +HPLcom/android/server/wm/WindowManagerService;->containsDismissKeyguardWindow(Landroid/os/IBinder;)Z +HPLcom/android/server/wm/WindowManagerService;->containsShowWhenLockedWindow(Landroid/os/IBinder;)Z +HPLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V +HPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/Surface;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I +HPLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V +HPLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V +HPLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I +HPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V +HPLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z +HPLcom/android/server/wm/WindowManagerService;->executeAppTransition()V +HPLcom/android/server/wm/WindowManagerService;->executeEmptyAnimationTransaction()V +HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V +HPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F +HPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/WindowManagerService;->getImeFocusStackLocked()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/WindowManagerService;->getInputMethodWindowLw()Landroid/view/WindowManagerPolicy$WindowState; +HPLcom/android/server/wm/WindowManagerService;->getLidState()I +HPLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->getStackBounds(ILandroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F +HPLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->handleAnimatingStoppedAndTransitionLocked()I +HPLcom/android/server/wm/WindowManagerService;->inputMethodClientHasFocus(Lcom/android/internal/view/IInputMethodClient;)Z +HPLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z +HPLcom/android/server/wm/WindowManagerService;->isKeyguardShowingAndNotOccluded()Z +HPLcom/android/server/wm/WindowManagerService;->isScreenCaptureDisabledLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowManagerService;->isShowingDream()Z +HPLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowManagerService;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V +HPLcom/android/server/wm/WindowManagerService;->monitor()V +HPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V +HPLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V +HPLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V +HPLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HPLcom/android/server/wm/WindowManagerService;->openSurfaceTransaction()V +HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V +HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZIZ)V +HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I +HPLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V +HPLcom/android/server/wm/WindowManagerService;->requestTraversal()V +HPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V +HPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V +HPLcom/android/server/wm/WindowManagerService;->setFocusTaskRegionLocked(Lcom/android/server/wm/AppWindowToken;)V +HPLcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V +HPLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V +HPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V +HPLcom/android/server/wm/WindowManagerService;->setResizeDimLayer(ZIF)V +HPLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(I)V +HPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V +HPLcom/android/server/wm/WindowManagerService;->stopUsingSavedSurfaceLocked()V +HPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;ZZ)Z +HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z +HPLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V +HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(Landroid/content/res/Configuration;Landroid/os/IBinder;I)Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokensLocked(ZI)Z +HPLcom/android/server/wm/WindowManagerService;->updateStatusBarVisibilityLocked(I)Z +HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V +HPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V +HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V +HPLcom/android/server/wm/WindowState$WindowId;->(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowState;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;IILandroid/view/WindowManager$LayoutParams;IIZ)V +HPLcom/android/server/wm/WindowState;->addWinAnimatorToList(Ljava/util/ArrayList;)V +HPLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V +HPLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V +HPLcom/android/server/wm/WindowState;->applyDimLayerIfNeeded()V +HPLcom/android/server/wm/WindowState;->applyGravityAndUpdateFrame(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/WindowState;->calculatePolicyCrop(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->calculateSystemDecorRect(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z +HPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z +HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z +HPLcom/android/server/wm/WindowState;->canReceiveKeys()Z +HPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z +HPLcom/android/server/wm/WindowState;->canRestoreSurface()Z +HPLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V +HPLcom/android/server/wm/WindowState;->clearHasSavedSurface()V +HPLcom/android/server/wm/WindowState;->clearWasVisibleBeforeClientHidden()V +HPLcom/android/server/wm/WindowState;->computeDragResizing()Z +HPLcom/android/server/wm/WindowState;->computeFrameLw(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->cropRegionToStackBoundsIfNeeded(Landroid/graphics/Region;)V +HPLcom/android/server/wm/WindowState;->destroyOrSaveSurfaceUnchecked()V +HPLcom/android/server/wm/WindowState;->destroySavedSurface()V +HPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z +HPLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZI)V +HPLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V +HPLcom/android/server/wm/WindowState;->disposeInputChannel()V +HPLcom/android/server/wm/WindowState;->expandForSurfaceInsets(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->fillsDisplay()Z +HPLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z +HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z +HPLcom/android/server/wm/WindowState;->getAnimLayerAdjustment()I +HPLcom/android/server/wm/WindowState;->getAppToken()Landroid/view/IApplicationToken; +HPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams; +HPLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect; +HPLcom/android/server/wm/WindowState;->getBaseType()I +HPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration; +HPLcom/android/server/wm/WindowState;->getDimLayerUser()Lcom/android/server/wm/DimLayer$DimLayerUser; +HPLcom/android/server/wm/WindowState;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect; +HPLcom/android/server/wm/WindowState;->getDisplayId()I +HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo; +HPLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z +HPLcom/android/server/wm/WindowState;->getHighestAnimLayer()I +HPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutNanos()J +HPLcom/android/server/wm/WindowState;->getMergedConfiguration(Landroid/util/MergedConfiguration;)V +HPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String; +HPLcom/android/server/wm/WindowState;->getNeedsMenuLw(Landroid/view/WindowManagerPolicy$WindowState;)Z +HPLcom/android/server/wm/WindowState;->getOrientationChanging()Z +HPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowState;->getSpecialWindowAnimLayerAdjustment()I +HPLcom/android/server/wm/WindowState;->getStack()Lcom/android/server/wm/TaskStack; +HPLcom/android/server/wm/WindowState;->getStackId()I +HPLcom/android/server/wm/WindowState;->getSurfaceLayer()I +HPLcom/android/server/wm/WindowState;->getSystemUiVisibility()I +HPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task; +HPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V +HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;I)I +HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo; +HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence; +HPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V +HPLcom/android/server/wm/WindowState;->hasContentToDisplay()Z +HPLcom/android/server/wm/WindowState;->hasMoved()Z +HPLcom/android/server/wm/WindowState;->hasSavedSurface()Z +HPLcom/android/server/wm/WindowState;->hideLw(Z)Z +HPLcom/android/server/wm/WindowState;->hideLw(ZZ)Z +HPLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z +HPLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V +HPLcom/android/server/wm/WindowState;->inFreeformWorkspace()Z +HPLcom/android/server/wm/WindowState;->inFullscreenContainer()Z +HPLcom/android/server/wm/WindowState;->inPinnedWorkspace()Z +HPLcom/android/server/wm/WindowState;->isAnimating()Z +HPLcom/android/server/wm/WindowState;->isAnimatingInvisibleWithSavedSurface()Z +HPLcom/android/server/wm/WindowState;->isAnimatingLw()Z +HPLcom/android/server/wm/WindowState;->isAnimatingWithSavedSurface()Z +HPLcom/android/server/wm/WindowState;->isChildWindow()Z +HPLcom/android/server/wm/WindowState;->isConfigChanged()Z +HPLcom/android/server/wm/WindowState;->isDefaultDisplay()Z +HPLcom/android/server/wm/WindowState;->isDimming()Z +HPLcom/android/server/wm/WindowState;->isDisplayedLw()Z +HPLcom/android/server/wm/WindowState;->isDockedResizing()Z +HPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z +HPLcom/android/server/wm/WindowState;->isDragResizing()Z +HPLcom/android/server/wm/WindowState;->isDrawnLw()Z +HPLcom/android/server/wm/WindowState;->isFocused()Z +HPLcom/android/server/wm/WindowState;->isGoneForLayoutLw()Z +HPLcom/android/server/wm/WindowState;->isHiddenFromUserLocked()Z +HPLcom/android/server/wm/WindowState;->isInMultiWindowMode()Z +HPLcom/android/server/wm/WindowState;->isInputMethodWindow()Z +HPLcom/android/server/wm/WindowState;->isInteresting()Z +HPLcom/android/server/wm/WindowState;->isLaidOut()Z +HPLcom/android/server/wm/WindowState;->isLetterboxedAppWindow()Z +HPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z +HPLcom/android/server/wm/WindowState;->isOnScreen()Z +HPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z +HPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z +HPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z +HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizing()Z +HPLcom/android/server/wm/WindowState;->isResizedWhileNotDragResizingReported()Z +HPLcom/android/server/wm/WindowState;->isRtl()Z +HPLcom/android/server/wm/WindowState;->isVisible()Z +HPLcom/android/server/wm/WindowState;->isVisibleLw()Z +HPLcom/android/server/wm/WindowState;->isVisibleNow()Z +HPLcom/android/server/wm/WindowState;->isVisibleOrAdding()Z +HPLcom/android/server/wm/WindowState;->isVoiceInteraction()Z +HPLcom/android/server/wm/WindowState;->isWinVisibleLw()Z +HPLcom/android/server/wm/WindowState;->layoutInParentFrame()Z +HPLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V +HPLcom/android/server/wm/WindowState;->markSavedSurfaceExiting()V +HPLcom/android/server/wm/WindowState;->mightAffectAllDrawn(Z)Z +HPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z +HPLcom/android/server/wm/WindowState;->onExitAnimationDone()V +HPLcom/android/server/wm/WindowState;->onParentSet()V +HPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V +HPLcom/android/server/wm/WindowState;->performShowLocked()Z +HPLcom/android/server/wm/WindowState;->prelayout()V +HPLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V +HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(III)I +HPLcom/android/server/wm/WindowState;->removeIfPossible(Z)V +HPLcom/android/server/wm/WindowState;->removeImmediately()V +HPLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V +HPLcom/android/server/wm/WindowState;->reportResized()V +HPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V +HPLcom/android/server/wm/WindowState;->restoreSavedSurface()Z +HPLcom/android/server/wm/WindowState;->scheduleAnimationIfDimming()V +HPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V +HPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V +HPLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V +HPLcom/android/server/wm/WindowState;->setHasSurface(Z)V +HPLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z +HPLcom/android/server/wm/WindowState;->setReportResizeHints()Z +HPLcom/android/server/wm/WindowState;->setReportedConfiguration(Landroid/util/MergedConfiguration;)V +HPLcom/android/server/wm/WindowState;->setRequestedSize(II)V +HPLcom/android/server/wm/WindowState;->setVisibleBeforeClientHidden()V +HPLcom/android/server/wm/WindowState;->setWindowScale(II)V +HPLcom/android/server/wm/WindowState;->shouldSaveSurface()Z +HPLcom/android/server/wm/WindowState;->showLw(Z)Z +HPLcom/android/server/wm/WindowState;->showLw(ZZ)Z +HPLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z +HPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String; +HPLcom/android/server/wm/WindowState;->transformClipRectFromScreenToSurfaceSpace(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowState;->updateLastInsetValues()V +HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V +HPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V +HPLcom/android/server/wm/WindowState;->usesRelativeZOrdering()Z +HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z +HPLcom/android/server/wm/WindowStateAnimator;->(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowStateAnimator;->adjustCropToStackBounds(Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z +HPLcom/android/server/wm/WindowStateAnimator;->applyCrop(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->calculateCrop(Landroid/graphics/Rect;)Z +HPLcom/android/server/wm/WindowStateAnimator;->calculateFinalCrop(Landroid/graphics/Rect;)Z +HPLcom/android/server/wm/WindowStateAnimator;->calculateSurfaceBounds(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V +HPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z +HPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController; +HPLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->destroySurface()V +HPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V +HPLcom/android/server/wm/WindowStateAnimator;->detachChildren()V +HPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z +HPLcom/android/server/wm/WindowStateAnimator;->getAnimationFrameTime(Landroid/view/animation/Animation;J)J +HPLcom/android/server/wm/WindowStateAnimator;->getLayerStack()I +HPLcom/android/server/wm/WindowStateAnimator;->getMagnificationSpec()Landroid/view/MagnificationSpec; +HPLcom/android/server/wm/WindowStateAnimator;->getShown()Z +HPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z +HPLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V +HPLcom/android/server/wm/WindowStateAnimator;->isAnimationSet()Z +HPLcom/android/server/wm/WindowStateAnimator;->isAnimationStarting()Z +HPLcom/android/server/wm/WindowStateAnimator;->isDummyAnimation()Z +HPLcom/android/server/wm/WindowStateAnimator;->isForceScaled()Z +HPLcom/android/server/wm/WindowStateAnimator;->isWaitingForOpening()Z +HPLcom/android/server/wm/WindowStateAnimator;->isWindowAnimationSet()Z +HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Z)V +HPLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V +HPLcom/android/server/wm/WindowStateAnimator;->resolveStackClip()I +HPLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;JI)V +HPLcom/android/server/wm/WindowStateAnimator;->setSurfaceBoundariesLocked(Z)V +HPLcom/android/server/wm/WindowStateAnimator;->shouldCropToStackBounds()Z +HPLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z +HPLcom/android/server/wm/WindowStateAnimator;->stepAnimation(J)Z +HPLcom/android/server/wm/WindowStateAnimator;->stepAnimationLocked(J)Z +HPLcom/android/server/wm/WindowStateAnimator;->useFinalClipRect()Z +HPLcom/android/server/wm/WindowSurfaceController;->(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V +HPLcom/android/server/wm/WindowSurfaceController;->clearCropInTransaction(Z)V +HPLcom/android/server/wm/WindowSurfaceController;->destroyInTransaction()V +HPLcom/android/server/wm/WindowSurfaceController;->detachChildren()V +HPLcom/android/server/wm/WindowSurfaceController;->getHeight()F +HPLcom/android/server/wm/WindowSurfaceController;->getShown()Z +HPLcom/android/server/wm/WindowSurfaceController;->getSurface(Landroid/view/Surface;)V +HPLcom/android/server/wm/WindowSurfaceController;->getWidth()F +HPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z +HPLcom/android/server/wm/WindowSurfaceController;->hideInTransaction(Ljava/lang/String;)V +HPLcom/android/server/wm/WindowSurfaceController;->hideSurface()V +HPLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z +HPLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V +HPLcom/android/server/wm/WindowSurfaceController;->setFinalCropInTransaction(Landroid/graphics/Rect;)V +HPLcom/android/server/wm/WindowSurfaceController;->setLayer(I)V +HPLcom/android/server/wm/WindowSurfaceController;->setLayerStackInTransaction(I)V +HPLcom/android/server/wm/WindowSurfaceController;->setMatrixInTransaction(FFFFZ)V +HPLcom/android/server/wm/WindowSurfaceController;->setPositionInTransaction(FFZ)V +HPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V +HPLcom/android/server/wm/WindowSurfaceController;->setSizeInTransaction(IIZ)Z +HPLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z +HPLcom/android/server/wm/WindowSurfaceController;->showSurface()Z +HPLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z +HPLcom/android/server/wm/WindowSurfacePlacer;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z +HPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V +HPLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V +HPLcom/android/server/wm/WindowSurfacePlacer;->destroyPendingSurfaces()V +HPLcom/android/server/wm/WindowSurfacePlacer;->handleAppTransitionReadyLocked()I +HPLcom/android/server/wm/WindowSurfacePlacer;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;ZLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V +HPLcom/android/server/wm/WindowSurfacePlacer;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;ZI)Lcom/android/server/wm/AppWindowToken; +HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z +HPLcom/android/server/wm/WindowSurfacePlacer;->lambda$-com_android_server_wm_WindowSurfacePlacer_5337()V +HPLcom/android/server/wm/WindowSurfacePlacer;->maybeUpdateTransitToWallpaper(IZZ)I +HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V +HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V +HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V +HPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V +HPLcom/android/server/wm/WindowSurfacePlacer;->transitionGoodToGo(ILandroid/util/SparseIntArray;)Z +HPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V +HPLcom/android/server/wm/WindowToken;->getAnimLayerAdjustment()I +HPLcom/android/server/wm/WindowToken;->getDisplayContent()Lcom/android/server/wm/DisplayContent; +HPLcom/android/server/wm/WindowToken;->getHighestAnimLayer()I +HPLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState; +HPLcom/android/server/wm/WindowToken;->okToAnimate()Z +HPLcom/android/server/wm/WindowToken;->okToDisplay()Z +HPLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V +HPLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z +HPLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HPLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSLcom/android/server/location/LocationProviderInterface;->disable()V +HSLcom/android/server/location/LocationProviderInterface;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +HSLcom/android/server/location/LocationProviderInterface;->enable()V +HSLcom/android/server/location/LocationProviderInterface;->getName()Ljava/lang/String; +HSLcom/android/server/location/LocationProviderInterface;->getProperties()Lcom/android/internal/location/ProviderProperties; +HSLcom/android/server/location/LocationProviderInterface;->getStatus(Landroid/os/Bundle;)I +HSLcom/android/server/location/LocationProviderInterface;->getStatusUpdateTime()J +HSLcom/android/server/location/LocationProviderInterface;->isEnabled()Z +HSLcom/android/server/location/LocationProviderInterface;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z +HSLcom/android/server/location/LocationProviderInterface;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +HSPLcom/android/server/AppOpsService$Op;->(ILjava/lang/String;I)V +HSPLcom/android/server/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/AppOpsService$UidState; +HSPLcom/android/server/AppOpsService;->readPackage(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/AppOpsService;->readState()V +HSPLcom/android/server/AppOpsService;->readUid(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V +HSPLcom/android/server/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V +HSPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V +HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V +HSPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V +HSPLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList; +HSPLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z +HSPLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V +HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList; +HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet; +HSPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List; +HSPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I +HSPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I +HSPLcom/android/server/RescueParty$Threshold;->getCount()I +HSPLcom/android/server/RescueParty$Threshold;->getStart()J +HSPLcom/android/server/RescueParty$Threshold;->setCount(I)V +HSPLcom/android/server/RescueParty$Threshold;->setStart(J)V +HSPLcom/android/server/SystemServer;->traceBeginAndSlog(Ljava/lang/String;)V +HSPLcom/android/server/SystemServer;->traceEnd()V +HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context; +HSPLcom/android/server/SystemServiceManager;->startBootPhase(I)V +HSPLcom/android/server/SystemServiceManager;->startService(Lcom/android/server/SystemService;)V +HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService; +HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V +HSPLcom/android/server/am/ActivityManagerService$4;->run()V +HSPLcom/android/server/am/BatteryExternalStatsWorker$1;->run()V +HSPLcom/android/server/am/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable; +HSPLcom/android/server/am/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;I)V +HSPLcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl; +HSPLcom/android/server/am/ConfigurationContainer;->()V +HSPLcom/android/server/am/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V +HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J +HSPLcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +HSPLcom/android/server/display/DisplayAdapter$Listener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V +HSPLcom/android/server/display/DisplayAdapter$Listener;->onTraversalRequested()V +HSPLcom/android/server/display/DisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo; +HSPLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder; +HSPLcom/android/server/display/DisplayDevice;->hasStableUniqueId()Z +HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo; +HSPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V +HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->(Lcom/android/server/display/DisplayManagerService;ILandroid/hardware/display/IDisplayManagerCallback;)V +HSPLcom/android/server/display/DisplayManagerService;->-wrap19(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V +HSPLcom/android/server/display/DisplayManagerService;->-wrap3(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo; +HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(II)V +HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo; +HSPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;I)V +HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable; +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZIILandroid/os/IBinder;)V +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(I)V +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-get0(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/lights/Light; +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo; +HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(II)Ljava/lang/Runnable; +HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo; +HSPLcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder; +HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->checkComponentPermission(Ljava/lang/String;IIIZ)I +HSPLcom/android/server/firewall/IntentFirewall$AMSInterface;->getAMSLock()Ljava/lang/Object; +HSPLcom/android/server/lights/Light;->pulse()V +HSPLcom/android/server/lights/Light;->pulse(II)V +HSPLcom/android/server/lights/Light;->setBrightness(I)V +HSPLcom/android/server/lights/Light;->setBrightness(II)V +HSPLcom/android/server/lights/Light;->setColor(I)V +HSPLcom/android/server/lights/Light;->setFlashing(IIII)V +HSPLcom/android/server/lights/Light;->setVrMode(Z)V +HSPLcom/android/server/lights/Light;->turnOff()V +HSPLcom/android/server/lights/LightsManager;->getLight(I)Lcom/android/server/lights/Light; +HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(I)V +HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(II)V +HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V +HSPLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$2()V +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->(BILjava/lang/Object;Ljava/lang/Object;)V +HSPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->run()V +HSPLcom/android/server/pm/BasePermission;->(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/server/pm/BasePermission;->computeGids(I)[I +HSPLcom/android/server/pm/BasePermission;->isRuntimeOnly()Z +HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z +HSPLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J +HSPLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String; +HSPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String; +HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey; +HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V +HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V +HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet; +HSPLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z +HSPLcom/android/server/pm/PackageKeySetData;->()V +HSPLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap; +HSPLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J +HSPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;->(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;->(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator;Ljava/util/Iterator;)V +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->isProtectedAction(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ActivityIntentInfo; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->sortResults(Ljava/util/List;)V +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackagesLocked(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPathsLocked(Ljava/util/Collection;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +HSPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ServiceIntentInfo; +HSPLcom/android/server/pm/PackageManagerService;->-get13()Ljava/util/Comparator; +HSPLcom/android/server/pm/PackageManagerService;->-wrap13(Lcom/android/server/pm/PackageManagerService;I)Z +HSPLcom/android/server/pm/PackageManagerService;->(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)V +HSPLcom/android/server/pm/PackageManagerService;->addSharedLibrariesLPw(Ljava/util/List;[I[[Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZILandroid/util/ArraySet;)Landroid/util/ArraySet; +HSPLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;I)V +HSPLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZII)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;Ljava/io/File;I)V +HSPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;IZ)V +HSPLcom/android/server/pm/PackageManagerService;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I +HSPLcom/android/server/pm/PackageManagerService;->compressedFileExists(Ljava/lang/String;)Z +HSPLcom/android/server/pm/PackageManagerService;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->enforceCrossUserPermission(IIZZLjava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->findPermissionTreeLP(Ljava/lang/String;)Lcom/android/server/pm/BasePermission; +HSPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File; +HSPLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)J +HSPLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo; +HSPLcom/android/server/pm/PackageManagerService;->getSharedLibraryEntryLPr(Ljava/lang/String;I)Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry; +HSPLcom/android/server/pm/PackageManagerService;->getVolumeUuidForPackage(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->grantPermissionsLPw(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;)V +HSPLcom/android/server/pm/PackageManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;Lcom/android/server/pm/PermissionsState;)Z +HSPLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z +HSPLcom/android/server/pm/PackageManagerService;->hasWebURI(Landroid/content/Intent;)Z +HSPLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isEphemeralDisabled()Z +HSPLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isInstantAppAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z +HSPLcom/android/server/pm/PackageManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z +HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z +HSPLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z +HSPLcom/android/server/pm/PackageManagerService;->lambda$-com_android_server_pm_PackageManagerService_140173(Ljava/util/List;I)V +HSPLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z +HSPLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +HSPLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +HSPLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List; +HSPLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V +HSPLcom/android/server/pm/PackageManagerService;->scanPackageDirtyLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->scanPackageLI(Landroid/content/pm/PackageParser$Package;Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V +HSPLcom/android/server/pm/PackageManagerService;->shouldCheckUpgradeKeySetLP(Lcom/android/server/pm/PackageSetting;I)Z +HSPLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList; +HSPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I +HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(IILjava/lang/Object;)I +HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I +HSPLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;I)V +HSPLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z +HSPLcom/android/server/pm/PackageManagerService;->verifySignaturesLP(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getAndCheckValidity(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String; +HSPLcom/android/server/pm/PackageSender;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V +HSPLcom/android/server/pm/PackageSender;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V +HSPLcom/android/server/pm/PackageSetting;->(Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/PackageSetting;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;I[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/PackageSetting;->getPermissionsState()Lcom/android/server/pm/PermissionsState; +HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z +HSPLcom/android/server/pm/PackageSettingBase;->(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V +HSPLcom/android/server/pm/PackageSettingBase;->(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V +HSPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z +HSPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z +HSPLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I +HSPLcom/android/server/pm/PackageSettingBase;->getVirtulalPreload(I)Z +HSPLcom/android/server/pm/PackageSettingBase;->init(Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +HSPLcom/android/server/pm/PackageSettingBase;->modifyUserState(I)Landroid/content/pm/PackageUserState; +HSPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState; +HSPLcom/android/server/pm/PackageSettingBase;->setEnabled(IILjava/lang/String;)V +HSPLcom/android/server/pm/PackageSettingBase;->setTimeStamp(J)V +HSPLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZZZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;III)V +HSPLcom/android/server/pm/PackageSignatures;->()V +HSPLcom/android/server/pm/PackageSignatures;->readXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/ArrayList;)V +HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V +HSPLcom/android/server/pm/ParallelPackageParser$ParseResult;->()V +HSPLcom/android/server/pm/ParallelPackageParser;->lambda$-com_android_server_pm_ParallelPackageParser_3701(Ljava/io/File;I)V +HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; +HSPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V +HSPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult; +HSPLcom/android/server/pm/PermissionsState$PermissionData;->(Lcom/android/server/pm/BasePermission;)V +HSPLcom/android/server/pm/PermissionsState$PermissionData;->(Lcom/android/server/pm/PermissionsState$PermissionData;)V +HSPLcom/android/server/pm/PermissionsState$PermissionData;->computeGids(I)[I +HSPLcom/android/server/pm/PermissionsState$PermissionData;->getFlags(I)I +HSPLcom/android/server/pm/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/PermissionsState$PermissionState; +HSPLcom/android/server/pm/PermissionsState$PermissionData;->grant(I)Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->isCompatibleUserId(I)Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->isDefault()Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->isGranted(I)Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->isInstallPermission()Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->isInstallPermissionKey(I)Z +HSPLcom/android/server/pm/PermissionsState$PermissionData;->updateFlags(III)Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get0(Lcom/android/server/pm/PermissionsState$PermissionState;)I +HSPLcom/android/server/pm/PermissionsState$PermissionState;->-get1(Lcom/android/server/pm/PermissionsState$PermissionState;)Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set0(Lcom/android/server/pm/PermissionsState$PermissionState;I)I +HSPLcom/android/server/pm/PermissionsState$PermissionState;->-set1(Lcom/android/server/pm/PermissionsState$PermissionState;Z)Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;->(Lcom/android/server/pm/PermissionsState$PermissionState;)V +HSPLcom/android/server/pm/PermissionsState$PermissionState;->(Ljava/lang/String;)V +HSPLcom/android/server/pm/PermissionsState$PermissionState;->getFlags()I +HSPLcom/android/server/pm/PermissionsState$PermissionState;->getName()Ljava/lang/String; +HSPLcom/android/server/pm/PermissionsState$PermissionState;->isDefault()Z +HSPLcom/android/server/pm/PermissionsState$PermissionState;->isGranted()Z +HSPLcom/android/server/pm/PermissionsState;->()V +HSPLcom/android/server/pm/PermissionsState;->appendInts([I[I)[I +HSPLcom/android/server/pm/PermissionsState;->computeGids(I)[I +HSPLcom/android/server/pm/PermissionsState;->copyFrom(Lcom/android/server/pm/PermissionsState;)V +HSPLcom/android/server/pm/PermissionsState;->enforceValidUserId(I)V +HSPLcom/android/server/pm/PermissionsState;->ensurePermissionData(Lcom/android/server/pm/BasePermission;)Lcom/android/server/pm/PermissionsState$PermissionData; +HSPLcom/android/server/pm/PermissionsState;->getInstallPermissionStates()Ljava/util/List; +HSPLcom/android/server/pm/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; +HSPLcom/android/server/pm/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List; +HSPLcom/android/server/pm/PermissionsState;->getRuntimePermissionState(Ljava/lang/String;I)Lcom/android/server/pm/PermissionsState$PermissionState; +HSPLcom/android/server/pm/PermissionsState;->grantInstallPermission(Lcom/android/server/pm/BasePermission;)I +HSPLcom/android/server/pm/PermissionsState;->grantPermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z +HSPLcom/android/server/pm/PermissionsState;->hasPermission(Ljava/lang/String;I)Z +HSPLcom/android/server/pm/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z +HSPLcom/android/server/pm/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/BasePermission;)I +HSPLcom/android/server/pm/PermissionsState;->revokePermission(Lcom/android/server/pm/BasePermission;I)I +HSPLcom/android/server/pm/PermissionsState;->setGlobalGids([I)V +HSPLcom/android/server/pm/PermissionsState;->updatePermissionFlags(Lcom/android/server/pm/BasePermission;III)Z +HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +HSPLcom/android/server/pm/PreferredComponent$Callbacks;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z +HSPLcom/android/server/pm/SELinuxMMAC;->assignSeInfoValue(Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/SettingBase;->(II)V +HSPLcom/android/server/pm/SettingBase;->(Lcom/android/server/pm/SettingBase;)V +HSPLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V +HSPLcom/android/server/pm/SettingBase;->getPermissionsState()Lcom/android/server/pm/PermissionsState; +HSPLcom/android/server/pm/SettingBase;->setFlags(I)V +HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)V +HSPLcom/android/server/pm/Settings$KernelPackageState;->()V +HSPLcom/android/server/pm/Settings$KernelPackageState;->(Lcom/android/server/pm/Settings$KernelPackageState;)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V +HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V +HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[I)Lcom/android/server/pm/PackageSetting; +HSPLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V +HSPLcom/android/server/pm/Settings;->addUserIdLPw(ILjava/lang/Object;Ljava/lang/Object;)Z +HSPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List; +HSPLcom/android/server/pm/Settings;->getDefaultBrowserPackageNameLPw(I)Ljava/lang/String; +HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; +HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo; +HSPLcom/android/server/pm/Settings;->getListOfIncompleteInstallPackagesLPr()Ljava/util/ArrayList; +HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting; +HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/server/pm/Settings;->getUserIdLPr(I)Ljava/lang/Object; +HSPLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List; +HSPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V +HSPLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z +HSPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z +HSPLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V +HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet; +HSPLcom/android/server/pm/Settings;->readDisabledSysPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->readInstallPermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PermissionsState;)V +HSPLcom/android/server/pm/Settings;->readInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I +HSPLcom/android/server/pm/Settings;->readLPw(Ljava/util/List;)Z +HSPLcom/android/server/pm/Settings;->readPackageLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(I)V +HSPLcom/android/server/pm/Settings;->readPermissionsLPw(Landroid/util/ArrayMap;Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +HSPLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V +HSPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V +HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V +HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeLPr()V +HSPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writePermissionLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/BasePermission;)V +HSPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +HSPLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V +HSPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V +HSPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[I)V +HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V +HSPLcom/android/server/pm/UserManagerService;->checkManageOrCreateUsersPermission(Ljava/lang/String;)V +HSPLcom/android/server/pm/UserManagerService;->exists(I)Z +HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService; +HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I +HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List; +HSPLcom/android/server/pm/UserManagerService;->hasManageOrCreateUsersPermission()Z +HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo; +HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/Bundle;)V +HSPLcom/android/server/power/BatterySaverPolicy;->getBatterySaverPolicy(IZ)Landroid/os/PowerSaveState; +HSPLcom/android/server/power/PowerManagerService$BinderService;->powerHint(II)V +HSPLcom/android/server/power/PowerManagerService;->-get12(Lcom/android/server/power/PowerManagerService;)Z +HSPLcom/android/server/power/PowerManagerService;->-get9(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object; +HSPLcom/android/server/power/SuspendBlocker;->acquire()V +HSPLcom/android/server/power/SuspendBlocker;->release()V +HSPLcom/android/server/power/SuspendBlocker;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V +HSPLcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;->onEnabledComponentChanged()V +HSPLcom/android/server/wm/AppWindowContainerListener;->keyDispatchingTimedOut(Ljava/lang/String;I)Z +HSPLcom/android/server/wm/AppWindowContainerListener;->onStartingWindowDrawn(J)V +HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsDrawn(J)V +HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsGone()V +HSPLcom/android/server/wm/AppWindowContainerListener;->onWindowsVisible()V +HSPLcom/android/server/wm/TaskWindowContainerListener;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V +HSPLcom/android/server/wm/TaskWindowContainerListener;->requestResize(Landroid/graphics/Rect;I)V +Lcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g; +Lcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo; +Lcom/android/server/AlarmManagerService; +Lcom/android/server/AppOpsService$1; +Lcom/android/server/AppOpsService$Callback; +Lcom/android/server/AppOpsService$Op; +Lcom/android/server/AppOpsService$Ops; +Lcom/android/server/AppOpsService$UidState; +Lcom/android/server/AppOpsService; +Lcom/android/server/ConsumerIrService; +Lcom/android/server/DisplayThread; +Lcom/android/server/FgThread; +Lcom/android/server/GraphicsStatsService; +Lcom/android/server/HardwarePropertiesManagerService; +Lcom/android/server/IntentResolver$1; +Lcom/android/server/IntentResolver; +Lcom/android/server/IoThread; +Lcom/android/server/LockGuard; +Lcom/android/server/PersistentDataBlockService; +Lcom/android/server/RecoverySystemService$BinderService; +Lcom/android/server/RecoverySystemService; +Lcom/android/server/RescueParty$BootThreshold; +Lcom/android/server/RescueParty$Threshold; +Lcom/android/server/RescueParty; +Lcom/android/server/SerialService; +Lcom/android/server/ServiceThread; +Lcom/android/server/SystemServer; +Lcom/android/server/SystemServerInitThreadPool; +Lcom/android/server/SystemService; +Lcom/android/server/SystemServiceManager; +Lcom/android/server/ThreadPriorityBooster$1; +Lcom/android/server/ThreadPriorityBooster; +Lcom/android/server/UiThread; +Lcom/android/server/VibratorService; +Lcom/android/server/Watchdog$BinderThreadMonitor; +Lcom/android/server/Watchdog$HandlerChecker; +Lcom/android/server/Watchdog$Monitor; +Lcom/android/server/Watchdog$OpenFdMonitor; +Lcom/android/server/Watchdog; +Lcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s; +Lcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU; +Lcom/android/server/am/ActiveInstrumentation; +Lcom/android/server/am/ActiveServices$1; +Lcom/android/server/am/ActiveServices; +Lcom/android/server/am/ActivityManagerConstants; +Lcom/android/server/am/ActivityManagerDebugConfig; +Lcom/android/server/am/ActivityManagerService$1; +Lcom/android/server/am/ActivityManagerService$2; +Lcom/android/server/am/ActivityManagerService$3; +Lcom/android/server/am/ActivityManagerService$4; +Lcom/android/server/am/ActivityManagerService$Injector; +Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface; +Lcom/android/server/am/ActivityManagerService$KillHandler; +Lcom/android/server/am/ActivityManagerService$Lifecycle; +Lcom/android/server/am/ActivityManagerService$LocalService; +Lcom/android/server/am/ActivityManagerService$MainHandler; +Lcom/android/server/am/ActivityManagerService$ProcessChangeItem; +Lcom/android/server/am/ActivityManagerService$UiHandler; +Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult; +Lcom/android/server/am/ActivityManagerService; +Lcom/android/server/am/ActivityMetricsLogger; +Lcom/android/server/am/ActivityRecord; +Lcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler; +Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult; +Lcom/android/server/am/ActivityStackSupervisor; +Lcom/android/server/am/ActivityStartInterceptor; +Lcom/android/server/am/ActivityStarter; +Lcom/android/server/am/AppErrorDialog$Data; +Lcom/android/server/am/AppErrorDialog; +Lcom/android/server/am/AppErrorResult; +Lcom/android/server/am/AppErrors$BadProcessInfo; +Lcom/android/server/am/AppErrors; +Lcom/android/server/am/AppNotRespondingDialog; +Lcom/android/server/am/BaseErrorDialog; +Lcom/android/server/am/BatteryExternalStatsWorker$1; +Lcom/android/server/am/BatteryExternalStatsWorker$2; +Lcom/android/server/am/BatteryExternalStatsWorker; +Lcom/android/server/am/BatteryStatsService$1; +Lcom/android/server/am/BatteryStatsService$WakeupReasonThread; +Lcom/android/server/am/BatteryStatsService; +Lcom/android/server/am/BroadcastQueue$BroadcastHandler; +Lcom/android/server/am/BroadcastQueue; +Lcom/android/server/am/BroadcastRecord; +Lcom/android/server/am/CompatModePackages$CompatHandler; +Lcom/android/server/am/CompatModePackages; +Lcom/android/server/am/ConfigurationContainer; +Lcom/android/server/am/InstrumentationReporter; +Lcom/android/server/am/KeyguardController; +Lcom/android/server/am/ProcessList; +Lcom/android/server/am/ProcessRecord; +Lcom/android/server/am/ProcessStatsService$1; +Lcom/android/server/am/ProcessStatsService; +Lcom/android/server/am/ProviderMap; +Lcom/android/server/am/RecentTasks$1; +Lcom/android/server/am/RecentTasks; +Lcom/android/server/am/ServiceRecord; +Lcom/android/server/am/TaskChangeNotificationController$MainHandler; +Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +Lcom/android/server/am/TaskChangeNotificationController; +Lcom/android/server/am/TaskPersister$LazyTaskWriterThread; +Lcom/android/server/am/TaskPersister; +Lcom/android/server/am/TaskRecord; +Lcom/android/server/am/UidRecord$ChangeItem; +Lcom/android/server/am/UserController$Injector; +Lcom/android/server/am/UserController; +Lcom/android/server/am/UserState; +Lcom/android/server/am/VrController$1; +Lcom/android/server/am/VrController; +Lcom/android/server/broadcastradio/BroadcastRadioService; +Lcom/android/server/broadcastradio/Convert; +Lcom/android/server/broadcastradio/Tuner; +Lcom/android/server/broadcastradio/TunerCallback; +Lcom/android/server/connectivity/Vpn; +Lcom/android/server/connectivity/tethering/OffloadHardwareInterface; +Lcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo; +Lcom/android/server/display/DisplayAdapter$1; +Lcom/android/server/display/DisplayAdapter$2; +Lcom/android/server/display/DisplayAdapter$Listener; +Lcom/android/server/display/DisplayAdapter; +Lcom/android/server/display/DisplayDevice; +Lcom/android/server/display/DisplayDeviceInfo; +Lcom/android/server/display/DisplayManagerService$BinderService; +Lcom/android/server/display/DisplayManagerService$CallbackRecord; +Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener; +Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler; +Lcom/android/server/display/DisplayManagerService$Injector; +Lcom/android/server/display/DisplayManagerService$LocalService; +Lcom/android/server/display/DisplayManagerService$SyncRoot; +Lcom/android/server/display/DisplayManagerService; +Lcom/android/server/display/DisplayTransformManager; +Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord; +Lcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver; +Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1; +Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice; +Lcom/android/server/display/LocalDisplayAdapter; +Lcom/android/server/display/LogicalDisplay; +Lcom/android/server/display/PersistentDataStore$DisplayState; +Lcom/android/server/display/PersistentDataStore$StableDeviceValues; +Lcom/android/server/display/PersistentDataStore; +Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory; +Lcom/android/server/display/VirtualDisplayAdapter; +Lcom/android/server/firewall/AndFilter$1; +Lcom/android/server/firewall/AndFilter; +Lcom/android/server/firewall/CategoryFilter$1; +Lcom/android/server/firewall/CategoryFilter; +Lcom/android/server/firewall/Filter; +Lcom/android/server/firewall/FilterFactory; +Lcom/android/server/firewall/FilterList; +Lcom/android/server/firewall/IntentFirewall$AMSInterface; +Lcom/android/server/firewall/IntentFirewall$FirewallHandler; +Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver; +Lcom/android/server/firewall/IntentFirewall$RuleObserver; +Lcom/android/server/firewall/IntentFirewall; +Lcom/android/server/firewall/NotFilter$1; +Lcom/android/server/firewall/NotFilter; +Lcom/android/server/firewall/OrFilter$1; +Lcom/android/server/firewall/OrFilter; +Lcom/android/server/firewall/PortFilter$1; +Lcom/android/server/firewall/PortFilter; +Lcom/android/server/firewall/SenderFilter$1; +Lcom/android/server/firewall/SenderFilter$2; +Lcom/android/server/firewall/SenderFilter$3; +Lcom/android/server/firewall/SenderFilter$4; +Lcom/android/server/firewall/SenderFilter$5; +Lcom/android/server/firewall/SenderFilter; +Lcom/android/server/firewall/SenderPackageFilter$1; +Lcom/android/server/firewall/SenderPackageFilter; +Lcom/android/server/firewall/SenderPermissionFilter$1; +Lcom/android/server/firewall/SenderPermissionFilter; +Lcom/android/server/firewall/StringFilter$10; +Lcom/android/server/firewall/StringFilter$1; +Lcom/android/server/firewall/StringFilter$2; +Lcom/android/server/firewall/StringFilter$3; +Lcom/android/server/firewall/StringFilter$4; +Lcom/android/server/firewall/StringFilter$5; +Lcom/android/server/firewall/StringFilter$6; +Lcom/android/server/firewall/StringFilter$7; +Lcom/android/server/firewall/StringFilter$8; +Lcom/android/server/firewall/StringFilter$9; +Lcom/android/server/firewall/StringFilter$ValueProvider; +Lcom/android/server/firewall/StringFilter; +Lcom/android/server/hdmi/HdmiCecController; +Lcom/android/server/input/InputApplicationHandle; +Lcom/android/server/input/InputManagerService; +Lcom/android/server/input/InputWindowHandle; +Lcom/android/server/lights/Light; +Lcom/android/server/lights/LightsManager; +Lcom/android/server/lights/LightsService$1; +Lcom/android/server/lights/LightsService$2; +Lcom/android/server/lights/LightsService$LightImpl; +Lcom/android/server/lights/LightsService; +Lcom/android/server/location/ContextHubService; +Lcom/android/server/location/GnssLocationProvider; +Lcom/android/server/location/LocationProviderInterface; +Lcom/android/server/locksettings/SyntheticPasswordManager; +Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy; +Lcom/android/server/os/DeviceIdentifiersPolicyService; +Lcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs; +Lcom/android/server/pm/AbstractStatsBase; +Lcom/android/server/pm/BasePermission; +Lcom/android/server/pm/CompilerStats; +Lcom/android/server/pm/CrossProfileIntentResolver; +Lcom/android/server/pm/DefaultPermissionGrantPolicy$1; +Lcom/android/server/pm/DefaultPermissionGrantPolicy; +Lcom/android/server/pm/Installer$1; +Lcom/android/server/pm/Installer$InstallerException; +Lcom/android/server/pm/Installer; +Lcom/android/server/pm/InstantAppRegistry$CookiePersistence; +Lcom/android/server/pm/InstantAppRegistry; +Lcom/android/server/pm/InstructionSets; +Lcom/android/server/pm/KeySetHandle; +Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle; +Lcom/android/server/pm/KeySetManagerService; +Lcom/android/server/pm/PackageDexOptimizer; +Lcom/android/server/pm/PackageInstallerService$1; +Lcom/android/server/pm/PackageInstallerService; +Lcom/android/server/pm/PackageKeySetData; +Lcom/android/server/pm/PackageManagerException; +Lcom/android/server/pm/PackageManagerService$1; +Lcom/android/server/pm/PackageManagerService$2; +Lcom/android/server/pm/PackageManagerService$3; +Lcom/android/server/pm/PackageManagerService$9; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator; +Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver; +Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection; +Lcom/android/server/pm/PackageManagerService$MoveCallbacks; +Lcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners; +Lcom/android/server/pm/PackageManagerService$PackageHandler; +Lcom/android/server/pm/PackageManagerService$PackageParserCallback; +Lcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback; +Lcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts; +Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver; +Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver; +Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry; +Lcom/android/server/pm/PackageManagerService; +Lcom/android/server/pm/PackageManagerServiceCompilerMapping; +Lcom/android/server/pm/PackageSender; +Lcom/android/server/pm/PackageSetting; +Lcom/android/server/pm/PackageSettingBase; +Lcom/android/server/pm/PackageSignatures; +Lcom/android/server/pm/PackageUsage; +Lcom/android/server/pm/ParallelPackageParser$ParseResult; +Lcom/android/server/pm/ParallelPackageParser; +Lcom/android/server/pm/PermissionsState$PermissionData; +Lcom/android/server/pm/PermissionsState$PermissionState; +Lcom/android/server/pm/PermissionsState; +Lcom/android/server/pm/Policy$PolicyBuilder; +Lcom/android/server/pm/Policy; +Lcom/android/server/pm/PolicyComparator; +Lcom/android/server/pm/PreferredActivity; +Lcom/android/server/pm/PreferredComponent$Callbacks; +Lcom/android/server/pm/PreferredComponent; +Lcom/android/server/pm/PreferredIntentResolver; +Lcom/android/server/pm/ProcessLoggingHandler; +Lcom/android/server/pm/ProtectedPackages; +Lcom/android/server/pm/SELinuxMMAC; +Lcom/android/server/pm/SettingBase; +Lcom/android/server/pm/Settings$KernelPackageState; +Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler; +Lcom/android/server/pm/Settings$RuntimePermissionPersistence; +Lcom/android/server/pm/Settings$VersionInfo; +Lcom/android/server/pm/Settings; +Lcom/android/server/pm/SharedUserSetting; +Lcom/android/server/pm/UserDataPreparer; +Lcom/android/server/pm/UserManagerService$1; +Lcom/android/server/pm/UserManagerService$LocalService; +Lcom/android/server/pm/UserManagerService$MainHandler; +Lcom/android/server/pm/UserManagerService$UserData; +Lcom/android/server/pm/UserManagerService; +Lcom/android/server/pm/UserRestrictionsUtils; +Lcom/android/server/pm/dex/DexManager; +Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; +Lcom/android/server/pm/dex/PackageDexUsage; +Lcom/android/server/power/BatterySaverPolicy; +Lcom/android/server/power/PowerManagerService$1; +Lcom/android/server/power/PowerManagerService$2; +Lcom/android/server/power/PowerManagerService$BinderService; +Lcom/android/server/power/PowerManagerService$Constants; +Lcom/android/server/power/PowerManagerService$LocalService; +Lcom/android/server/power/PowerManagerService$PowerManagerHandler; +Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl; +Lcom/android/server/power/PowerManagerService; +Lcom/android/server/power/SuspendBlocker; +Lcom/android/server/storage/AppFuseBridge; +Lcom/android/server/tv/TvInputHal; +Lcom/android/server/tv/UinputBridge; +Lcom/android/server/usb/UsbDeviceManager; +Lcom/android/server/usb/UsbHostManager; +Lcom/android/server/usb/UsbMidiDevice; +Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener; +Lcom/android/server/vr/VrManagerService; +Lcom/android/server/wm/AppWindowContainerListener; +Lcom/android/server/wm/TaskWindowContainerListener; +Lcom/android/server/wm/WindowContainerListener; +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->setActiveGroup(ILjava/lang/String;)I +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->setNotify(Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;)J +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getService()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->()V +PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs; +PLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs; +PLandroid/hardware/configstore/V1_0/OptionalBool;->()V +PLandroid/hardware/configstore/V1_0/OptionalBool;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/configstore/V1_0/OptionalBool;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/oemlock/V1_0/IOemLock;->getService()Landroid/hardware/oemlock/V1_0/IOemLock; +PLandroid/hardware/usb/V1_0/IUsb$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/usb/V1_0/IUsb$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/usb/V1_0/IUsb$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +PLandroid/hardware/usb/V1_0/IUsb$Proxy;->queryPortStatus()V +PLandroid/hardware/usb/V1_0/IUsb$Proxy;->setCallback(Landroid/hardware/usb/V1_0/IUsbCallback;)V +PLandroid/hardware/usb/V1_0/IUsb;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/usb/V1_0/IUsb; +PLandroid/hardware/usb/V1_0/IUsb;->getService()Landroid/hardware/usb/V1_0/IUsb; +PLandroid/hardware/usb/V1_0/PortStatus;->()V +PLandroid/hardware/usb/V1_0/PortStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/usb/V1_1/IUsbCallback$Stub;->()V +PLandroid/hardware/usb/V1_1/IUsbCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/usb/V1_1/IUsbCallback$Stub;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/usb/V1_1/IUsbCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +PLandroid/hardware/usb/V1_1/PortStatus_1_1;->()V +PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/usb/V1_1/PortStatus_1_1;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +PLandroid/hardware/weaver/V1_0/IWeaver;->getService()Landroid/hardware/weaver/V1_0/IWeaver; +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->start()Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifi$Proxy;->stop()Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifi;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifi; +PLandroid/hardware/wifi/V1_0/IWifi;->getService()Landroid/hardware/wifi/V1_0/IWifi; +PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->()V +PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;->()V +PLandroid/hardware/wifi/V1_0/IWifiChip$ChipMode;->()V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->configureChip(I)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createRttController(Landroid/hardware/wifi/V1_0/IWifiIface;Landroid/hardware/wifi/V1_0/IWifiChip$createRttControllerCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->createStaIface(Landroid/hardware/wifi/V1_0/IWifiChip$createStaIfaceCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->enableDebugErrorAlerts(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->forceDumpToDebugRingBuffer(Ljava/lang/String;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugHostWakeReasonStats(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugHostWakeReasonStatsCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->getDebugRingBuffersStatus(Landroid/hardware/wifi/V1_0/IWifiChip$getDebugRingBuffersStatusCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiChipEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->requestChipDebugInfo(Landroid/hardware/wifi/V1_0/IWifiChip$requestChipDebugInfoCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiChip$Proxy;->startLoggingToDebugRingBuffer(Ljava/lang/String;III)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;->()V +PLandroid/hardware/wifi/V1_0/IWifiChipEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/V1_0/IWifiEventCallback$Stub;->()V +PLandroid/hardware/wifi/V1_0/IWifiEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/V1_0/IWifiEventCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +PLandroid/hardware/wifi/V1_0/IWifiRttController$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/V1_0/IWifiRttController$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/V1_0/IWifiRttController$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiRttController;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/V1_0/IWifiRttController; +PLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback$Stub;->()V +PLandroid/hardware/wifi/V1_0/IWifiRttControllerEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->configureRoaming(Landroid/hardware/wifi/V1_0/StaRoamingConfig;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableLinkLayerStatsCollection(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->enableNdOffload(Z)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getApfPacketFilterCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getApfPacketFilterCapabilitiesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getBackgroundScanCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getBackgroundScanCapabilitiesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugRxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugRxPacketFatesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getDebugTxPacketFates(Landroid/hardware/wifi/V1_0/IWifiStaIface$getDebugTxPacketFatesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getName(Landroid/hardware/wifi/V1_0/IWifiIface$getNameCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->getRoamingCapabilities(Landroid/hardware/wifi/V1_0/IWifiStaIface$getRoamingCapabilitiesCallback;)V +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->registerEventCallback(Landroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback;)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->setScanningMacOui([B)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->startDebugPacketFateMonitoring()Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIface$Proxy;->stopRssiMonitoring(I)Landroid/hardware/wifi/V1_0/WifiStatus; +PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;->()V +PLandroid/hardware/wifi/V1_0/IWifiStaIfaceEventCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;->()V +PLandroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->()V +PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;->toString()Ljava/lang/String; +PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->()V +PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/StaRoamingCapabilities;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->()V +PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/StaRoamingConfig;->writeToParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;->()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxIcmpPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;->()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxMulticastPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;->()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonRxPacketDetails;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->()V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;->readFromParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/V1_0/WifiDebugRingBufferStatus;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->()V +PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/V1_0/WifiDebugRxPacketFateReport;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +PLandroid/hardware/wifi/V1_0/WifiDebugTxPacketFateReport;->()V +PLandroid/hardware/wifi/V1_0/WifiStatus;->toString()Ljava/lang/String; +PLandroid/hardware/wifi/V1_0/WifiStatusCode;->toString(I)Ljava/lang/String; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;->()V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;->writeToParcel(Landroid/os/HwParcel;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->getInterface(Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$IfaceInfo;Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$getInterfaceCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->listInterfaces(Landroid/hardware/wifi/supplicant/V1_0/ISupplicant$listInterfacesCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->setConcurrencyPriority(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant$Proxy;->setDebugParams(IZZ)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicant; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicant;->getService()Landroid/hardware/wifi/supplicant/V1_0/ISupplicant; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$Proxy;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$Proxy;->interfaceDescriptor()Ljava/lang/String; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$Proxy;->toString()Ljava/lang/String; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork$Proxy;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->flush()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->flushServices()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->getDeviceAddress(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$getDeviceAddressCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->listNetworks(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$listNetworksCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->saveConfig()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->setSsidPostfix(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->setWpsConfigMethods(S)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->setWpsDeviceName(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface$Proxy;->setWpsDeviceType([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback$Stub;->()V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->addNetwork(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$addNetworkCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->addRxFilter(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->disconnect()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->enableAutoReconnect(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->getMacAddress(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$getMacAddressCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->listNetworks(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface$listNetworksCallback;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexistenceMode(B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setBtCoexistenceScanModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setCountryCode([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setExternalSim(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setSuspendModeEnabled(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsConfigMethods(S)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsDeviceName(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsDeviceType([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsManufacturer(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsModelName(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsModelNumber(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->setWpsSerialNumber(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->startRxFilter()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface$Proxy;->stopRxFilter()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback$Stub;->()V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->(Landroid/os/IHwBinder;)V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->interfaceChain()Ljava/util/ArrayList; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->select()Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setAuthAlg(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setBssid([B)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setGroupCipher(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setIdStr(Ljava/lang/String;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setKeyMgmt(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setPairwiseCipher(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setProto(I)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setRequirePmf(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setScanSsid(Z)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork$Proxy;->setSsid(Ljava/util/ArrayList;)Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork; +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;->()V +PLandroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback$Stub;->asBinder()Landroid/os/IHwBinder; +PLandroid/net/apf/ApfCapabilities;->(III)V +PLandroid/net/apf/ApfCapabilities;->toString()Ljava/lang/String; +PLandroid/net/apf/ApfFilter$ProcessRaResult;->(Ljava/lang/String;I)V +PLandroid/net/apf/ApfFilter$ProcessRaResult;->values()[Landroid/net/apf/ApfFilter$ProcessRaResult; +PLandroid/net/apf/ApfFilter$Ra;->(Landroid/net/apf/ApfFilter;[BI)V +PLandroid/net/apf/ApfFilter$Ra;->IPv6AddresstoString(I)Ljava/lang/String; +PLandroid/net/apf/ApfFilter$Ra;->addNonLifetime(III)I +PLandroid/net/apf/ApfFilter$Ra;->addNonLifetimeU32(I)I +PLandroid/net/apf/ApfFilter$Ra;->currentLifetime()J +PLandroid/net/apf/ApfFilter$Ra;->getLastMatchingPacket()Ljava/lang/String; +PLandroid/net/apf/ApfFilter$Ra;->isExpired()Z +PLandroid/net/apf/ApfFilter$Ra;->prefixOptionToString(Ljava/lang/StringBuffer;I)V +PLandroid/net/apf/ApfFilter$Ra;->rdnssOptionToString(Ljava/lang/StringBuffer;I)V +PLandroid/net/apf/ApfFilter$Ra;->toString()Ljava/lang/String; +PLandroid/net/apf/ApfFilter$ReceiveThread;->-getandroid-net-apf-ApfFilter$ProcessRaResultSwitchesValues()[I +PLandroid/net/apf/ApfFilter$ReceiveThread;->(Landroid/net/apf/ApfFilter;Ljava/io/FileDescriptor;)V +PLandroid/net/apf/ApfFilter$ReceiveThread;->run()V +PLandroid/net/apf/ApfFilter$ReceiveThread;->updateStats(Landroid/net/apf/ApfFilter$ProcessRaResult;)V +PLandroid/net/apf/ApfFilter;->-get1(Landroid/net/apf/ApfFilter;)Landroid/net/metrics/IpConnectivityLog; +PLandroid/net/apf/ApfFilter;->-wrap0(Landroid/net/apf/ApfFilter;)J +PLandroid/net/apf/ApfFilter;->-wrap2(Landroid/net/apf/ApfFilter;Ljava/lang/String;)V +PLandroid/net/apf/ApfFilter;->(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZLandroid/net/metrics/IpConnectivityLog;)V +PLandroid/net/apf/ApfFilter;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLandroid/net/apf/ApfFilter;->findIPv4LinkAddress(Landroid/net/LinkProperties;)Landroid/net/LinkAddress; +PLandroid/net/apf/ApfFilter;->getUniqueNumberLocked()J +PLandroid/net/apf/ApfFilter;->ipv4BroadcastAddress([BI)I +PLandroid/net/apf/ApfFilter;->log(Ljava/lang/String;)V +PLandroid/net/apf/ApfFilter;->logApfProgramEventLocked(J)V +PLandroid/net/apf/ApfFilter;->maybeCreate(Landroid/net/apf/ApfCapabilities;Ljava/net/NetworkInterface;Landroid/net/ip/IpManager$Callback;ZZ)Landroid/net/apf/ApfFilter; +PLandroid/net/apf/ApfFilter;->maybeStartFilter()V +PLandroid/net/apf/ApfFilter;->processRa([BI)Landroid/net/apf/ApfFilter$ProcessRaResult; +PLandroid/net/apf/ApfFilter;->purgeExpiredRasLocked()V +PLandroid/net/apf/ApfFilter;->setLinkProperties(Landroid/net/LinkProperties;)V +PLandroid/net/apf/ApfFilter;->setMulticastFilter(Z)V +PLandroid/net/apf/ApfFilter;->shouldInstallnewProgram()Z +PLandroid/net/apf/ApfGenerator$ExtendedOpcodes;->(Ljava/lang/String;II)V +PLandroid/net/apf/ApfGenerator$Opcodes;->(Ljava/lang/String;II)V +PLandroid/net/apf/ApfGenerator$Register;->(Ljava/lang/String;II)V +PLandroid/net/apf/ApfGenerator;->addAddR1()Landroid/net/apf/ApfGenerator; +PLandroid/net/apf/ApfGenerator;->addAnd(I)Landroid/net/apf/ApfGenerator; +PLandroid/net/apf/ApfGenerator;->addJumpIfR0AnyBitsSet(ILjava/lang/String;)Landroid/net/apf/ApfGenerator; +PLandroid/net/apf/ApfGenerator;->addLoad16Indexed(Landroid/net/apf/ApfGenerator$Register;I)Landroid/net/apf/ApfGenerator; +PLandroid/net/apf/ApfGenerator;->programLengthOverEstimate()I +PLandroid/net/apf/ApfGenerator;->setApfVersion(I)Z +PLandroid/net/dhcp/DhcpAckPacket;->(ISZLjava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;[B)V +PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->enter()V +PLandroid/net/dhcp/DhcpClient$ConfiguringInterfaceState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->exit()V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->logTimeToBoundState()V +PLandroid/net/dhcp/DhcpClient$DhcpBoundState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpHaveLeaseState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$DhcpInitRebootState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpInitState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpInitState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpInitState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V +PLandroid/net/dhcp/DhcpClient$DhcpInitState;->sendPacket()Z +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V +PLandroid/net/dhcp/DhcpClient$DhcpReacquiringState;->sendPacket()Z +PLandroid/net/dhcp/DhcpClient$DhcpRebindingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpRebootingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->packetDestination()Ljava/net/Inet4Address; +PLandroid/net/dhcp/DhcpClient$DhcpRenewingState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->receivePacket(Landroid/net/dhcp/DhcpPacket;)V +PLandroid/net/dhcp/DhcpClient$DhcpRequestingState;->sendPacket()Z +PLandroid/net/dhcp/DhcpClient$DhcpSelectingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$DhcpState;->enter()V +PLandroid/net/dhcp/DhcpClient$DhcpState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$LoggingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$LoggingState;->enter()V +PLandroid/net/dhcp/DhcpClient$LoggingState;->exit()V +PLandroid/net/dhcp/DhcpClient$LoggingState;->getName()Ljava/lang/String; +PLandroid/net/dhcp/DhcpClient$LoggingState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->enter()V +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->exit()V +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->initTimer()V +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->jitterTimer(I)I +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->maybeInitTimeout()V +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$PacketRetransmittingState;->scheduleKick()V +PLandroid/net/dhcp/DhcpClient$ReceiveThread;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$ReceiveThread;->run()V +PLandroid/net/dhcp/DhcpClient$StoppedState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$StoppedState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$WaitBeforeOtherState;->(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient$WaitBeforeOtherState;->enter()V +PLandroid/net/dhcp/DhcpClient$WaitBeforeOtherState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/dhcp/DhcpClient$WaitBeforeRenewalState;->(Landroid/net/dhcp/DhcpClient;Lcom/android/internal/util/State;)V +PLandroid/net/dhcp/DhcpClient$WaitBeforeStartState;->(Landroid/net/dhcp/DhcpClient;Lcom/android/internal/util/State;)V +PLandroid/net/dhcp/DhcpClient;->-get0(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; +PLandroid/net/dhcp/DhcpClient;->-get1(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/StateMachine; +PLandroid/net/dhcp/DhcpClient;->-get10(Landroid/net/dhcp/DhcpClient;)J +PLandroid/net/dhcp/DhcpClient;->-get11(Landroid/net/dhcp/DhcpClient;)J +PLandroid/net/dhcp/DhcpClient;->-get12(Landroid/net/dhcp/DhcpClient;)Landroid/net/DhcpResults; +PLandroid/net/dhcp/DhcpClient;->-get13(Landroid/net/dhcp/DhcpClient;)Ljava/io/FileDescriptor; +PLandroid/net/dhcp/DhcpClient;->-get14(Landroid/net/dhcp/DhcpClient;)Ljava/util/Random; +PLandroid/net/dhcp/DhcpClient;->-get16(Landroid/net/dhcp/DhcpClient;)Landroid/net/dhcp/DhcpClient$ReceiveThread; +PLandroid/net/dhcp/DhcpClient;->-get17(Landroid/net/dhcp/DhcpClient;)Z +PLandroid/net/dhcp/DhcpClient;->-get2(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; +PLandroid/net/dhcp/DhcpClient;->-get20(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/dhcp/DhcpClient;->-get22(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; +PLandroid/net/dhcp/DhcpClient;->-get23(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; +PLandroid/net/dhcp/DhcpClient;->-get4(Landroid/net/dhcp/DhcpClient;)Landroid/net/DhcpResults; +PLandroid/net/dhcp/DhcpClient;->-get7(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/State; +PLandroid/net/dhcp/DhcpClient;->-get9(Landroid/net/dhcp/DhcpClient;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/dhcp/DhcpClient;->-set0(Landroid/net/dhcp/DhcpClient;J)J +PLandroid/net/dhcp/DhcpClient;->-set1(Landroid/net/dhcp/DhcpClient;J)J +PLandroid/net/dhcp/DhcpClient;->-set2(Landroid/net/dhcp/DhcpClient;Landroid/net/DhcpResults;)Landroid/net/DhcpResults; +PLandroid/net/dhcp/DhcpClient;->-set3(Landroid/net/dhcp/DhcpClient;Landroid/net/dhcp/DhcpClient$ReceiveThread;)Landroid/net/dhcp/DhcpClient$ReceiveThread; +PLandroid/net/dhcp/DhcpClient;->-wrap0(Landroid/net/dhcp/DhcpClient;Ljava/net/Inet4Address;)Z +PLandroid/net/dhcp/DhcpClient;->-wrap1(Landroid/net/dhcp/DhcpClient;)Z +PLandroid/net/dhcp/DhcpClient;->-wrap11(Landroid/net/dhcp/DhcpClient;Ljava/lang/String;I)V +PLandroid/net/dhcp/DhcpClient;->-wrap13(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient;->-wrap14(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient;->-wrap2(Landroid/net/dhcp/DhcpClient;)Z +PLandroid/net/dhcp/DhcpClient;->-wrap4(Landroid/net/dhcp/DhcpClient;)Z +PLandroid/net/dhcp/DhcpClient;->-wrap5(Landroid/net/dhcp/DhcpClient;Ljava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;)Z +PLandroid/net/dhcp/DhcpClient;->-wrap6(Landroid/net/dhcp/DhcpClient;Landroid/net/DhcpResults;Ljava/lang/String;)V +PLandroid/net/dhcp/DhcpClient;->-wrap7(Landroid/net/dhcp/DhcpClient;)V +PLandroid/net/dhcp/DhcpClient;->(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Ljava/lang/String;)V +PLandroid/net/dhcp/DhcpClient;->acceptDhcpResults(Landroid/net/DhcpResults;Ljava/lang/String;)V +PLandroid/net/dhcp/DhcpClient;->clearDhcpState()V +PLandroid/net/dhcp/DhcpClient;->connectUdpSock(Ljava/net/Inet4Address;)Z +PLandroid/net/dhcp/DhcpClient;->getSecs()S +PLandroid/net/dhcp/DhcpClient;->initInterface()Z +PLandroid/net/dhcp/DhcpClient;->initPacketSocket()Z +PLandroid/net/dhcp/DhcpClient;->initSockets()Z +PLandroid/net/dhcp/DhcpClient;->initUdpSocket()Z +PLandroid/net/dhcp/DhcpClient;->isValidPacket(Landroid/net/dhcp/DhcpPacket;)Z +PLandroid/net/dhcp/DhcpClient;->logState(Ljava/lang/String;I)V +PLandroid/net/dhcp/DhcpClient;->makeDhcpClient(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Ljava/lang/String;)Landroid/net/dhcp/DhcpClient; +PLandroid/net/dhcp/DhcpClient;->makeWakeupMessage(Ljava/lang/String;I)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/dhcp/DhcpClient;->notifySuccess()V +PLandroid/net/dhcp/DhcpClient;->registerForPreDhcpNotification()V +PLandroid/net/dhcp/DhcpClient;->scheduleLeaseTimers()V +PLandroid/net/dhcp/DhcpClient;->sendDiscoverPacket()Z +PLandroid/net/dhcp/DhcpClient;->sendRequestPacket(Ljava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;)Z +PLandroid/net/dhcp/DhcpClient;->setDhcpLeaseExpiry(Landroid/net/dhcp/DhcpPacket;)V +PLandroid/net/dhcp/DhcpClient;->startNewTransaction()V +PLandroid/net/dhcp/DhcpClient;->transmitPacket(Ljava/nio/ByteBuffer;Ljava/lang/String;ILjava/net/Inet4Address;)Z +PLandroid/net/dhcp/DhcpDiscoverPacket;->(IS[BZ)V +PLandroid/net/dhcp/DhcpDiscoverPacket;->buildPacket(ISS)Ljava/nio/ByteBuffer; +PLandroid/net/dhcp/DhcpDiscoverPacket;->finishPacket(Ljava/nio/ByteBuffer;)V +PLandroid/net/dhcp/DhcpDiscoverPacket;->toString()Ljava/lang/String; +PLandroid/net/dhcp/DhcpOfferPacket;->(ISZLjava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;[B)V +PLandroid/net/dhcp/DhcpOfferPacket;->toString()Ljava/lang/String; +PLandroid/net/dhcp/DhcpPacket;->(ISLjava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;Ljava/net/Inet4Address;[BZ)V +PLandroid/net/dhcp/DhcpPacket;->addCommonClientTlvs(Ljava/nio/ByteBuffer;)V +PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;BB)V +PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;BLjava/lang/Short;)V +PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;BLjava/lang/String;)V +PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;BLjava/net/Inet4Address;)V +PLandroid/net/dhcp/DhcpPacket;->addTlv(Ljava/nio/ByteBuffer;B[B)V +PLandroid/net/dhcp/DhcpPacket;->addTlvEnd(Ljava/nio/ByteBuffer;)V +PLandroid/net/dhcp/DhcpPacket;->buildDiscoverPacket(IIS[BZ[B)Ljava/nio/ByteBuffer; +PLandroid/net/dhcp/DhcpPacket;->buildRequestPacket(IISLjava/net/Inet4Address;Z[BLjava/net/Inet4Address;Ljava/net/Inet4Address;[BLjava/lang/String;)Ljava/nio/ByteBuffer; +PLandroid/net/dhcp/DhcpPacket;->decodeFullPacket([BII)Landroid/net/dhcp/DhcpPacket; +PLandroid/net/dhcp/DhcpPacket;->getClientId()[B +PLandroid/net/dhcp/DhcpPacket;->getClientMac()[B +PLandroid/net/dhcp/DhcpPacket;->getHostname()Ljava/lang/String; +PLandroid/net/dhcp/DhcpPacket;->getLeaseTimeMillis()J +PLandroid/net/dhcp/DhcpPacket;->getTransactionId()I +PLandroid/net/dhcp/DhcpPacket;->getVendorId()Ljava/lang/String; +PLandroid/net/dhcp/DhcpPacket;->isPacketToOrFromClient(SS)Z +PLandroid/net/dhcp/DhcpPacket;->readAsciiString(Ljava/nio/ByteBuffer;IZ)Ljava/lang/String; +PLandroid/net/dhcp/DhcpPacket;->toDhcpResults()Landroid/net/DhcpResults; +PLandroid/net/dhcp/DhcpPacket;->toString()Ljava/lang/String; +PLandroid/net/dhcp/DhcpRequestPacket;->(ISLjava/net/Inet4Address;[BZ)V +PLandroid/net/dhcp/DhcpRequestPacket;->buildPacket(ISS)Ljava/nio/ByteBuffer; +PLandroid/net/dhcp/DhcpRequestPacket;->finishPacket(Ljava/nio/ByteBuffer;)V +PLandroid/net/dhcp/DhcpRequestPacket;->toString()Ljava/lang/String; +PLandroid/net/ip/-$Lambda$EIaFPv5OO8Upo9X60vMtrcUNUEQ;->$m$1()V +PLandroid/net/ip/-$Lambda$Ew7nO2XMmp8bwulVlFTiHphyunQ$2;->(Ljava/lang/Object;)V +PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->(Landroid/net/ip/ConnectivityPacketTracker;I[BI)V +PLandroid/net/ip/ConnectivityPacketTracker$PacketListener;->createSocket()Ljava/io/FileDescriptor; +PLandroid/net/ip/ConnectivityPacketTracker;->(Ljava/net/NetworkInterface;Landroid/util/LocalLog;)V +PLandroid/net/ip/ConnectivityPacketTracker;->start()V +PLandroid/net/ip/IpManager$1;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager$1;->update()V +PLandroid/net/ip/IpManager$2;->(Landroid/net/ip/IpManager;Ljava/lang/String;Lcom/android/server/net/NetlinkTracker$Callback;)V +PLandroid/net/ip/IpManager$2;->interfaceAdded(Ljava/lang/String;)V +PLandroid/net/ip/IpManager$2;->interfaceRemoved(Ljava/lang/String;)V +PLandroid/net/ip/IpManager$2;->lambda$-android_net_ip_IpManager$2_26299(Ljava/lang/String;)V +PLandroid/net/ip/IpManager$2;->logMsg(Ljava/lang/String;)V +PLandroid/net/ip/IpManager$3;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager$Callback;->()V +PLandroid/net/ip/IpManager$InitialConfiguration;->copy(Landroid/net/ip/IpManager$InitialConfiguration;)Landroid/net/ip/IpManager$InitialConfiguration; +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$Callback;)V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->installPacketFilter([B)V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onLinkPropertiesChange(Landroid/net/LinkProperties;)V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onNewDhcpResults(Landroid/net/DhcpResults;)V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onPostDhcpAction()V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onPreDhcpAction()V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->onProvisioningSuccess(Landroid/net/LinkProperties;)V +PLandroid/net/ip/IpManager$LoggingCallbackWrapper;->setNeighborDiscoveryOffload(Z)V +PLandroid/net/ip/IpManager$MessageHandlingLogger;->()V +PLandroid/net/ip/IpManager$MessageHandlingLogger;->(Landroid/net/ip/IpManager$MessageHandlingLogger;)V +PLandroid/net/ip/IpManager$MessageHandlingLogger;->handled(Lcom/android/internal/util/State;Lcom/android/internal/util/IState;)V +PLandroid/net/ip/IpManager$MessageHandlingLogger;->reset()V +PLandroid/net/ip/IpManager$MessageHandlingLogger;->toString()Ljava/lang/String; +PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->()V +PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->build()Landroid/net/ip/IpManager$ProvisioningConfiguration; +PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withApfCapabilities(Landroid/net/apf/ApfCapabilities;)Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; +PLandroid/net/ip/IpManager$ProvisioningConfiguration$Builder;->withPreDhcpAction()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; +PLandroid/net/ip/IpManager$ProvisioningConfiguration;->()V +PLandroid/net/ip/IpManager$ProvisioningConfiguration;->(Landroid/net/ip/IpManager$ProvisioningConfiguration;)V +PLandroid/net/ip/IpManager$ProvisioningConfiguration;->isValid()Z +PLandroid/net/ip/IpManager$ProvisioningConfiguration;->toString()Ljava/lang/String; +PLandroid/net/ip/IpManager$RunningState;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager$RunningState;->createPacketTracker()Landroid/net/ip/ConnectivityPacketTracker; +PLandroid/net/ip/IpManager$RunningState;->ensureDhcpAction()V +PLandroid/net/ip/IpManager$RunningState;->enter()V +PLandroid/net/ip/IpManager$RunningState;->stopDhcpAction()V +PLandroid/net/ip/IpManager$StartedState;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager$StartedState;->enter()V +PLandroid/net/ip/IpManager$StartedState;->readyToProceed()Z +PLandroid/net/ip/IpManager$StoppedState;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager$StoppedState;->enter()V +PLandroid/net/ip/IpManager$StoppedState;->processMessage(Landroid/os/Message;)Z +PLandroid/net/ip/IpManager$StoppingState;->(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager;->-get0(Landroid/net/ip/IpManager;)Landroid/net/apf/ApfFilter; +PLandroid/net/ip/IpManager;->-get1(Landroid/net/ip/IpManager;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-get10(Landroid/net/ip/IpManager;)Landroid/net/util/SharedLog; +PLandroid/net/ip/IpManager;->-get11(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$MessageHandlingLogger; +PLandroid/net/ip/IpManager;->-get12(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->-get13(Landroid/net/ip/IpManager;)Ljava/net/NetworkInterface; +PLandroid/net/ip/IpManager;->-get14(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/ip/IpManager;->-get15(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; +PLandroid/net/ip/IpManager;->-get16(Landroid/net/ip/IpManager;)J +PLandroid/net/ip/IpManager;->-get17(Landroid/net/ip/IpManager;)Lcom/android/internal/util/State; +PLandroid/net/ip/IpManager;->-get2(Landroid/net/ip/IpManager;)Landroid/net/ip/IpManager$ProvisioningConfiguration; +PLandroid/net/ip/IpManager;->-get20(Landroid/net/ip/IpManager;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-get3(Landroid/net/ip/IpManager;)Landroid/util/LocalLog; +PLandroid/net/ip/IpManager;->-get4(Landroid/net/ip/IpManager;)Landroid/content/Context; +PLandroid/net/ip/IpManager;->-get5(Landroid/net/ip/IpManager;)Lcom/android/internal/util/WakeupMessage; +PLandroid/net/ip/IpManager;->-get6(Landroid/net/ip/IpManager;)Landroid/net/dhcp/DhcpClient; +PLandroid/net/ip/IpManager;->-get7(Landroid/net/ip/IpManager;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-get8(Landroid/net/ip/IpManager;)Landroid/net/ip/IpReachabilityMonitor; +PLandroid/net/ip/IpManager;->-get9(Landroid/net/ip/IpManager;)Landroid/net/LinkProperties; +PLandroid/net/ip/IpManager;->-getandroid-net-LinkProperties$ProvisioningChangeSwitchesValues()[I +PLandroid/net/ip/IpManager;->-set0(Landroid/net/ip/IpManager;Landroid/net/apf/ApfFilter;)Landroid/net/apf/ApfFilter; +PLandroid/net/ip/IpManager;->-set1(Landroid/net/ip/IpManager;Landroid/net/ip/IpManager$ProvisioningConfiguration;)Landroid/net/ip/IpManager$ProvisioningConfiguration; +PLandroid/net/ip/IpManager;->-set3(Landroid/net/ip/IpManager;Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo; +PLandroid/net/ip/IpManager;->-set5(Landroid/net/ip/IpManager;Z)Z +PLandroid/net/ip/IpManager;->-set6(Landroid/net/ip/IpManager;J)J +PLandroid/net/ip/IpManager;->-set7(Landroid/net/ip/IpManager;Ljava/lang/String;)Ljava/lang/String; +PLandroid/net/ip/IpManager;->-wrap1(Landroid/net/ip/IpManager;Z)Z +PLandroid/net/ip/IpManager;->-wrap10(Landroid/net/ip/IpManager;Landroid/net/DhcpResults;)V +PLandroid/net/ip/IpManager;->-wrap14(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager;->-wrap15(Landroid/net/ip/IpManager;)V +PLandroid/net/ip/IpManager;->-wrap2(Landroid/net/ip/IpManager;Landroid/net/LinkAddress;)Z +PLandroid/net/ip/IpManager;->-wrap3(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->-wrap4(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->-wrap5(Landroid/net/ip/IpManager;)Z +PLandroid/net/ip/IpManager;->(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;)V +PLandroid/net/ip/IpManager;->(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;Landroid/os/INetworkManagementService;Landroid/net/INetd;)V +PLandroid/net/ip/IpManager;->buildProvisioningConfiguration()Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; +PLandroid/net/ip/IpManager;->compareProvisioning(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange; +PLandroid/net/ip/IpManager;->completedPreDhcpAction()V +PLandroid/net/ip/IpManager;->configureAndStartStateMachine()V +PLandroid/net/ip/IpManager;->confirmConfiguration()V +PLandroid/net/ip/IpManager;->dispatchCallback(Landroid/net/LinkProperties$ProvisioningChange;Landroid/net/LinkProperties;)V +PLandroid/net/ip/IpManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLandroid/net/ip/IpManager;->getNetworkInterface()V +PLandroid/net/ip/IpManager;->handleIPv4Success(Landroid/net/DhcpResults;)V +PLandroid/net/ip/IpManager;->handleLinkPropertiesUpdate(Z)Z +PLandroid/net/ip/IpManager;->isProvisioned(Landroid/net/LinkProperties;Landroid/net/ip/IpManager$InitialConfiguration;)Z +PLandroid/net/ip/IpManager;->recordLogRec(Landroid/os/Message;)Z +PLandroid/net/ip/IpManager;->recordMetric(I)V +PLandroid/net/ip/IpManager;->resetLinkProperties()V +PLandroid/net/ip/IpManager;->setHttpProxy(Landroid/net/ProxyInfo;)V +PLandroid/net/ip/IpManager;->setIPv4Address(Landroid/net/LinkAddress;)Z +PLandroid/net/ip/IpManager;->setIPv6AddrGenModeIfSupported()V +PLandroid/net/ip/IpManager;->setLinkProperties(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange; +PLandroid/net/ip/IpManager;->setMulticastFilter(Z)V +PLandroid/net/ip/IpManager;->setTcpBufferSizes(Ljava/lang/String;)V +PLandroid/net/ip/IpManager;->startIPv4()Z +PLandroid/net/ip/IpManager;->startIPv6()Z +PLandroid/net/ip/IpManager;->startIpReachabilityMonitor()Z +PLandroid/net/ip/IpManager;->startProvisioning(Landroid/net/ip/IpManager$ProvisioningConfiguration;)V +PLandroid/net/ip/IpManager;->startStateMachineUpdaters()V +PLandroid/net/ip/IpManager;->stop()V +PLandroid/net/ip/IpManager;->stopAllIP()V +PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->(Landroid/net/ip/IpReachabilityMonitor;)V +PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->(Landroid/net/ip/IpReachabilityMonitor;Landroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;)V +PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->clearNetlinkSocket()V +PLandroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver;->setupNetlinkSocket()V +PLandroid/net/ip/IpReachabilityMonitor;->-set0(Landroid/net/ip/IpReachabilityMonitor;Z)Z +PLandroid/net/ip/IpReachabilityMonitor;->(Landroid/content/Context;Ljava/lang/String;Landroid/net/util/SharedLog;Landroid/net/ip/IpReachabilityMonitor$Callback;Landroid/net/util/MultinetworkPolicyTracker;)V +PLandroid/net/ip/IpReachabilityMonitor;->getNeighborStateLocked(Ljava/net/InetAddress;)S +PLandroid/net/ip/IpReachabilityMonitor;->probeAll()V +PLandroid/net/metrics/INetdEventListener$Stub;->()V +PLandroid/net/netlink/NetlinkSocket;->(I)V +PLandroid/net/netlink/NetlinkSocket;->bind(Landroid/system/NetlinkSocketAddress;)V +PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->$m$0()V +PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLandroid/net/util/-$Lambda$uAc0-SfvAbf39zjOK01b1lQkeVs;->run()V +PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->$m$0()V +PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->(Ljava/lang/Object;)V +PLandroid/net/util/-$Lambda$uJqW9o1MiZ5yyXhSTG2zE-YhRn0;->run()V +PLandroid/net/util/BlockingSocketReader;->(I)V +PLandroid/net/util/BlockingSocketReader;->lambda$-android_net_util_BlockingSocketReader_2194()V +PLandroid/net/util/BlockingSocketReader;->start()Z +PLandroid/net/util/ConnectivityPacketSummary;->parseDHCPv4(Ljava/util/StringJoiner;)V +PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterAdvertisement(Ljava/util/StringJoiner;)V +PLandroid/net/util/ConnectivityPacketSummary;->parseICMPv6RouterSolicitation(Ljava/util/StringJoiner;)V +PLandroid/net/util/MultinetworkPolicyTracker$1;->(Landroid/net/util/MultinetworkPolicyTracker;)V +PLandroid/net/util/MultinetworkPolicyTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLandroid/net/util/MultinetworkPolicyTracker$SettingObserver;->(Landroid/net/util/MultinetworkPolicyTracker;)V +PLandroid/net/util/MultinetworkPolicyTracker;->(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V +PLandroid/net/util/MultinetworkPolicyTracker;->configMeteredMultipathPreference()I +PLandroid/net/util/MultinetworkPolicyTracker;->configRestrictsAvoidBadWifi()Z +PLandroid/net/util/MultinetworkPolicyTracker;->getAvoidBadWifi()Z +PLandroid/net/util/MultinetworkPolicyTracker;->getAvoidBadWifiSetting()Ljava/lang/String; +PLandroid/net/util/MultinetworkPolicyTracker;->lambda$-android_net_util_MultinetworkPolicyTracker_2908(Ljava/lang/Runnable;)V +PLandroid/net/util/MultinetworkPolicyTracker;->reevaluate()V +PLandroid/net/util/MultinetworkPolicyTracker;->start()V +PLandroid/net/util/MultinetworkPolicyTracker;->updateAvoidBadWifi()Z +PLandroid/net/util/MultinetworkPolicyTracker;->updateMeteredMultipathPreference()V +PLandroid/net/util/NetdService;->get()Landroid/net/INetd; +PLandroid/net/util/NetdService;->get(J)Landroid/net/INetd; +PLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd; +PLandroid/net/util/NetworkConstants;->asByte(I)B +PLandroid/net/util/NetworkConstants;->asString(I)Ljava/lang/String; +PLandroid/net/util/PrefixUtils;->addNonForwardablePrefixes(Ljava/util/Set;)V +PLandroid/net/util/PrefixUtils;->pfx(Ljava/lang/String;)Landroid/net/IpPrefix; +PLandroid/net/util/SharedLog$Category;->(Ljava/lang/String;I)V +PLandroid/net/util/SharedLog;->(ILjava/lang/String;)V +PLandroid/net/util/SharedLog;->(Landroid/util/LocalLog;Ljava/lang/String;Ljava/lang/String;)V +PLandroid/net/util/SharedLog;->(Ljava/lang/String;)V +PLandroid/net/util/SharedLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLandroid/net/util/SharedLog;->forSubComponent(Ljava/lang/String;)Landroid/net/util/SharedLog; +PLandroid/net/util/SharedLog;->mark(Ljava/lang/String;)V +PLandroid/net/util/Stopwatch;->()V +PLandroid/net/util/Stopwatch;->isRunning()Z +PLandroid/net/util/Stopwatch;->isStarted()Z +PLandroid/net/util/Stopwatch;->isStopped()Z +PLandroid/net/util/Stopwatch;->reset()V +PLandroid/net/util/Stopwatch;->start()Landroid/net/util/Stopwatch; +PLandroid/net/util/Stopwatch;->stop()J +PLandroid/net/wifi/IClientInterface$Stub$Proxy;->(Landroid/os/IBinder;)V +PLandroid/net/wifi/IClientInterface$Stub$Proxy;->asBinder()Landroid/os/IBinder; +PLandroid/net/wifi/IClientInterface$Stub$Proxy;->enableSupplicant()Z +PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getInterfaceName()Ljava/lang/String; +PLandroid/net/wifi/IClientInterface$Stub$Proxy;->getWifiScannerImpl()Landroid/net/wifi/IWifiScannerImpl; +PLandroid/net/wifi/IClientInterface$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IClientInterface; +PLandroid/net/wifi/IPnoScanEvent$Stub;->()V +PLandroid/net/wifi/IPnoScanEvent$Stub;->asBinder()Landroid/os/IBinder; +PLandroid/net/wifi/IScanEvent$Stub;->()V +PLandroid/net/wifi/IScanEvent$Stub;->asBinder()Landroid/os/IBinder; +PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->(Landroid/os/IBinder;)V +PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->abortScan()V +PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->asBinder()Landroid/os/IBinder; +PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribePnoScanEvents(Landroid/net/wifi/IPnoScanEvent;)V +PLandroid/net/wifi/IWifiScannerImpl$Stub$Proxy;->subscribeScanEvents(Landroid/net/wifi/IScanEvent;)V +PLandroid/net/wifi/IWifiScannerImpl$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScannerImpl; +PLandroid/net/wifi/IWificond$Stub$Proxy;->(Landroid/os/IBinder;)V +PLandroid/net/wifi/IWificond$Stub$Proxy;->createClientInterface()Landroid/net/wifi/IClientInterface; +PLandroid/net/wifi/IWificond$Stub$Proxy;->tearDownInterfaces()V +PLandroid/net/wifi/IWificond$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWificond; +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$1;->(BLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->(JLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$2;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->(BZLjava/lang/Object;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg$3;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$0(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$1(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$2(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->$m$3(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->(BLjava/lang/Object;)V +PLcom/android/server/-$Lambda$9jO-pgghrn5IhueuFzPwKVTwWXg;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/-$Lambda$AZbCJpvy__SzB8YDjhldiwCtqD8;->$m$0(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection; +PLcom/android/server/-$Lambda$AZbCJpvy__SzB8YDjhldiwCtqD8;->()V +PLcom/android/server/-$Lambda$AZbCJpvy__SzB8YDjhldiwCtqD8;->get(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection; +PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->()V +PLcom/android/server/-$Lambda$Ash-36Gr90yYPZEIENlguvJE7uk;->apply(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$1()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->$m$0()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$1;->run()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$2;->$m$0()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$2;->(Ljava/lang/Object;)V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo$2;->run()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$1()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$2()V +PLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$3()V +PLcom/android/server/-$Lambda$VaVGUZuNs2jqHMhhxPzwNl4zK-M;->$m$3()V +PLcom/android/server/-$Lambda$VaVGUZuNs2jqHMhhxPzwNl4zK-M;->$m$4()V +PLcom/android/server/-$Lambda$VaVGUZuNs2jqHMhhxPzwNl4zK-M;->(BLjava/lang/Object;)V +PLcom/android/server/-$Lambda$VaVGUZuNs2jqHMhhxPzwNl4zK-M;->run()V +PLcom/android/server/-$Lambda$o3e2BPeEiY4LSvdQI9l_B7RsPtQ;->(Ljava/lang/Object;)V +PLcom/android/server/-$Lambda$qXtDhnbBL0MhXoSy7vXxLi-Juu4;->(Ljava/lang/Object;)V +PLcom/android/server/AlarmManagerService$1;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$1;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I +PLcom/android/server/AlarmManagerService$2;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$2;->setTime(J)Z +PLcom/android/server/AlarmManagerService$AlarmHandler;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$AlarmThread;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$BatchTimeOrder;->()V +PLcom/android/server/AlarmManagerService$BroadcastStats;->(ILjava/lang/String;)V +PLcom/android/server/AlarmManagerService$ClockReceiver;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V +PLcom/android/server/AlarmManagerService$Constants;->(Lcom/android/server/AlarmManagerService;Landroid/os/Handler;)V +PLcom/android/server/AlarmManagerService$Constants;->start(Landroid/content/ContentResolver;)V +PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleMinTimeLocked()V +PLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V +PLcom/android/server/AlarmManagerService$Constants;->updateConstants()V +PLcom/android/server/AlarmManagerService$DeliveryTracker;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$FilterStats;->(Lcom/android/server/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V +PLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->()V +PLcom/android/server/AlarmManagerService$InteractiveStateReceiver;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$LocalService;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$LocalService;->setDeviceIdleUserWhitelist([I)V +PLcom/android/server/AlarmManagerService$PriorityClass;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$UidObserver;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService$UidObserver;->onUidIdle(IZ)V +PLcom/android/server/AlarmManagerService$UninstallReceiver;->(Lcom/android/server/AlarmManagerService;)V +PLcom/android/server/AlarmManagerService;->-get1(Lcom/android/server/AlarmManagerService;)I +PLcom/android/server/AlarmManagerService;->-get2(Lcom/android/server/AlarmManagerService;)I +PLcom/android/server/AlarmManagerService;->-set1(Lcom/android/server/AlarmManagerService;I)I +PLcom/android/server/AlarmManagerService;->-set2(Lcom/android/server/AlarmManagerService;I)I +PLcom/android/server/AlarmManagerService;->-wrap1(Lcom/android/server/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats; +PLcom/android/server/AlarmManagerService;->-wrap2(Lcom/android/server/AlarmManagerService;JJ)I +PLcom/android/server/AlarmManagerService;->(Landroid/content/Context;)V +PLcom/android/server/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z +PLcom/android/server/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo; +PLcom/android/server/AlarmManagerService;->onBootPhase(I)V +PLcom/android/server/AlarmManagerService;->onStart()V +PLcom/android/server/AlarmManagerService;->rebatchAllAlarms()V +PLcom/android/server/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;)V +PLcom/android/server/AlarmManagerService;->setDeviceIdleUserWhitelistImpl([I)V +PLcom/android/server/AlarmManagerService;->setTimeZoneImpl(Ljava/lang/String;)V +PLcom/android/server/AnimationThread;->()V +PLcom/android/server/AnimationThread;->ensureThreadLocked()V +PLcom/android/server/AnimationThread;->get()Lcom/android/server/AnimationThread; +PLcom/android/server/AnimationThread;->getHandler()Landroid/os/Handler; +PLcom/android/server/AnyMotionDetector$1;->(Lcom/android/server/AnyMotionDetector;)V +PLcom/android/server/AnyMotionDetector$2;->(Lcom/android/server/AnyMotionDetector;)V +PLcom/android/server/AnyMotionDetector$3;->(Lcom/android/server/AnyMotionDetector;)V +PLcom/android/server/AnyMotionDetector$4;->(Lcom/android/server/AnyMotionDetector;)V +PLcom/android/server/AnyMotionDetector$RunningSignalStats;->()V +PLcom/android/server/AnyMotionDetector$RunningSignalStats;->reset()V +PLcom/android/server/AnyMotionDetector$Vector3;->(JFFF)V +PLcom/android/server/AnyMotionDetector;->(Landroid/os/PowerManager;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)V +PLcom/android/server/AppOpsService$1$1;->(Lcom/android/server/AppOpsService$1;)V +PLcom/android/server/AppOpsService$1$1;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/AppOpsService$1$1;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void; +PLcom/android/server/AppOpsService$1;->run()V +PLcom/android/server/AppOpsService$2;->(Lcom/android/server/AppOpsService;)V +PLcom/android/server/AppOpsService$3;->(Lcom/android/server/AppOpsService;)V +PLcom/android/server/AppOpsService$Callback;->binderDied()V +PLcom/android/server/AppOpsService$Callback;->unlinkToDeath()V +PLcom/android/server/AppOpsService$ClientRestrictionState;->(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V +PLcom/android/server/AppOpsService$ClientRestrictionState;->destroy()V +PLcom/android/server/AppOpsService$ClientRestrictionState;->isDefault()Z +PLcom/android/server/AppOpsService$ClientRestrictionState;->setRestriction(IZ[Ljava/lang/String;I)Z +PLcom/android/server/AppOpsService$ClientState;->(Lcom/android/server/AppOpsService;Landroid/os/IBinder;)V +PLcom/android/server/AppOpsService$ClientState;->binderDied()V +PLcom/android/server/AppOpsService$UidState;->clear()V +PLcom/android/server/AppOpsService$UidState;->isDefault()Z +PLcom/android/server/AppOpsService;->checkSystemUid(Ljava/lang/String;)V +PLcom/android/server/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String; +PLcom/android/server/AppOpsService;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder; +PLcom/android/server/AppOpsService;->scheduleFastWriteLocked()V +PLcom/android/server/AttributeCache$Entry;->(Landroid/content/Context;Landroid/content/res/TypedArray;)V +PLcom/android/server/AttributeCache$Entry;->recycle()V +PLcom/android/server/AttributeCache$Package;->(Landroid/content/Context;)V +PLcom/android/server/AttributeCache;->(Landroid/content/Context;)V +PLcom/android/server/AttributeCache;->init(Landroid/content/Context;)V +PLcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V +PLcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V +PLcom/android/server/BatteryService$2;->(Lcom/android/server/BatteryService;Landroid/os/Handler;)V +PLcom/android/server/BatteryService$5;->(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +PLcom/android/server/BatteryService$5;->run()V +PLcom/android/server/BatteryService$6;->(Lcom/android/server/BatteryService;Landroid/content/Intent;)V +PLcom/android/server/BatteryService$6;->run()V +PLcom/android/server/BatteryService$BatteryListener;->(Lcom/android/server/BatteryService;)V +PLcom/android/server/BatteryService$BatteryListener;->(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BatteryListener;)V +PLcom/android/server/BatteryService$BinderService;->(Lcom/android/server/BatteryService;)V +PLcom/android/server/BatteryService$BinderService;->(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BinderService;)V +PLcom/android/server/BatteryService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/BatteryService$Led;->(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V +PLcom/android/server/BatteryService$LocalService;->(Lcom/android/server/BatteryService;)V +PLcom/android/server/BatteryService$LocalService;->(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$LocalService;)V +PLcom/android/server/BatteryService$Shell;->(Lcom/android/server/BatteryService;)V +PLcom/android/server/BatteryService$Shell;->onCommand(Ljava/lang/String;)I +PLcom/android/server/BatteryService;->-get0()Ljava/lang/String; +PLcom/android/server/BatteryService;->-get2(Lcom/android/server/BatteryService;)Z +PLcom/android/server/BatteryService;->-get4(Lcom/android/server/BatteryService;)Landroid/content/Context; +PLcom/android/server/BatteryService;->-get7(Lcom/android/server/BatteryService;)I +PLcom/android/server/BatteryService;->-get8(Lcom/android/server/BatteryService;)I +PLcom/android/server/BatteryService;->-wrap1(Lcom/android/server/BatteryService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/BatteryService;->(Landroid/content/Context;)V +PLcom/android/server/BatteryService;->dumpInternal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/BatteryService;->onBootPhase(I)V +PLcom/android/server/BatteryService;->onShellCommand(Lcom/android/server/BatteryService$Shell;Ljava/lang/String;)I +PLcom/android/server/BatteryService;->onStart()V +PLcom/android/server/BatteryService;->parseOptions(Lcom/android/server/BatteryService$Shell;)I +PLcom/android/server/BatteryService;->processValuesFromShellLocked(Ljava/io/PrintWriter;I)V +PLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V +PLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V +PLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V +PLcom/android/server/BluetoothManagerService$1;->(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService$1;->onBluetoothStateChange(II)V +PLcom/android/server/BluetoothManagerService$2;->(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService$2;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/BluetoothManagerService$3;->(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V +PLcom/android/server/BluetoothManagerService$4;->(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/BluetoothManagerService$5;->(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V +PLcom/android/server/BluetoothManagerService$ActiveLog;->(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;ZJ)V +PLcom/android/server/BluetoothManagerService$BluetoothHandler;->(Lcom/android/server/BluetoothManagerService;Landroid/os/Looper;)V +PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->(Lcom/android/server/BluetoothManagerService;Lcom/android/server/BluetoothManagerService$BluetoothServiceConnection;)V +PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;)V +PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->binderDied()V +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap0(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->-wrap1(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->(Lcom/android/server/BluetoothManagerService;Landroid/content/Intent;)V +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->addProxy(Landroid/bluetooth/IBluetoothProfileServiceConnection;)V +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->bindService()Z +PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/BluetoothManagerService;->-get0(Lcom/android/server/BluetoothManagerService;)Z +PLcom/android/server/BluetoothManagerService;->-get1(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetooth; +PLcom/android/server/BluetoothManagerService;->-get10(Lcom/android/server/BluetoothManagerService;)Lcom/android/server/BluetoothManagerService$BluetoothHandler; +PLcom/android/server/BluetoothManagerService;->-get11(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map; +PLcom/android/server/BluetoothManagerService;->-get12(Lcom/android/server/BluetoothManagerService;)Z +PLcom/android/server/BluetoothManagerService;->-get15(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList; +PLcom/android/server/BluetoothManagerService;->-get2(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetoothCallback; +PLcom/android/server/BluetoothManagerService;->-get3(Lcom/android/server/BluetoothManagerService;)Ljava/util/concurrent/locks/ReentrantReadWriteLock; +PLcom/android/server/BluetoothManagerService;->-get4(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList; +PLcom/android/server/BluetoothManagerService;->-get7(Lcom/android/server/BluetoothManagerService;)Z +PLcom/android/server/BluetoothManagerService;->-get9(Lcom/android/server/BluetoothManagerService;)I +PLcom/android/server/BluetoothManagerService;->-set0(Lcom/android/server/BluetoothManagerService;Z)Z +PLcom/android/server/BluetoothManagerService;->-set1(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetooth;)Landroid/bluetooth/IBluetooth; +PLcom/android/server/BluetoothManagerService;->-set2(Lcom/android/server/BluetoothManagerService;Landroid/os/IBinder;)Landroid/os/IBinder; +PLcom/android/server/BluetoothManagerService;->-set3(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetoothGatt;)Landroid/bluetooth/IBluetoothGatt; +PLcom/android/server/BluetoothManagerService;->-set4(Lcom/android/server/BluetoothManagerService;Z)Z +PLcom/android/server/BluetoothManagerService;->-set7(Lcom/android/server/BluetoothManagerService;Z)Z +PLcom/android/server/BluetoothManagerService;->-set8(Lcom/android/server/BluetoothManagerService;I)I +PLcom/android/server/BluetoothManagerService;->-wrap11(Lcom/android/server/BluetoothManagerService;Z)V +PLcom/android/server/BluetoothManagerService;->-wrap12(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService;->-wrap16(Lcom/android/server/BluetoothManagerService;)V +PLcom/android/server/BluetoothManagerService;->-wrap19(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/BluetoothManagerService;->-wrap2(Lcom/android/server/BluetoothManagerService;)Z +PLcom/android/server/BluetoothManagerService;->-wrap7(Lcom/android/server/BluetoothManagerService;II)V +PLcom/android/server/BluetoothManagerService;->(Landroid/content/Context;)V +PLcom/android/server/BluetoothManagerService;->addActiveLog(Ljava/lang/String;Z)V +PLcom/android/server/BluetoothManagerService;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z +PLcom/android/server/BluetoothManagerService;->bluetoothStateChangeHandler(II)V +PLcom/android/server/BluetoothManagerService;->checkIfCallerIsForegroundUser()Z +PLcom/android/server/BluetoothManagerService;->doBind(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z +PLcom/android/server/BluetoothManagerService;->getAddress()Ljava/lang/String; +PLcom/android/server/BluetoothManagerService;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt; +PLcom/android/server/BluetoothManagerService;->handleEnable(Z)V +PLcom/android/server/BluetoothManagerService;->handleOnBootPhase()V +PLcom/android/server/BluetoothManagerService;->handleOnUnlockUser(I)V +PLcom/android/server/BluetoothManagerService;->isBleAppPresent()Z +PLcom/android/server/BluetoothManagerService;->isBluetoothDisallowed()Z +PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOn()Z +PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOnBluetooth()Z +PLcom/android/server/BluetoothManagerService;->isNameAndAddressSet()Z +PLcom/android/server/BluetoothManagerService;->loadStoredNameAndAddress()V +PLcom/android/server/BluetoothManagerService;->onBluetoothGattServiceUp()V +PLcom/android/server/BluetoothManagerService;->persistBluetoothSetting(I)V +PLcom/android/server/BluetoothManagerService;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth; +PLcom/android/server/BluetoothManagerService;->registerForBleScanModeChange()V +PLcom/android/server/BluetoothManagerService;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +PLcom/android/server/BluetoothManagerService;->sendBleStateChanged(II)V +PLcom/android/server/BluetoothManagerService;->sendBluetoothServiceUpCallback()V +PLcom/android/server/BluetoothManagerService;->sendBluetoothStateCallback(Z)V +PLcom/android/server/BluetoothManagerService;->sendEnableMsg(ZLjava/lang/String;)V +PLcom/android/server/BluetoothManagerService;->storeNameAndAddress(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/BluetoothManagerService;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V +PLcom/android/server/BluetoothManagerService;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I +PLcom/android/server/BluetoothService;->(Landroid/content/Context;)V +PLcom/android/server/BluetoothService;->onBootPhase(I)V +PLcom/android/server/BluetoothService;->onStart()V +PLcom/android/server/BluetoothService;->onUnlockUser(I)V +PLcom/android/server/CertBlacklister$BlacklistObserver;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentResolver;)V +PLcom/android/server/CertBlacklister;->(Landroid/content/Context;)V +PLcom/android/server/CertBlacklister;->buildPubkeyObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver; +PLcom/android/server/CertBlacklister;->buildSerialObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver; +PLcom/android/server/CertBlacklister;->registerObservers(Landroid/content/ContentResolver;)V +PLcom/android/server/CommonTimeManagementService$1;->(Lcom/android/server/CommonTimeManagementService;)V +PLcom/android/server/CommonTimeManagementService$2;->(Lcom/android/server/CommonTimeManagementService;)V +PLcom/android/server/CommonTimeManagementService$InterfaceScoreRule;->(Ljava/lang/String;B)V +PLcom/android/server/CommonTimeManagementService;->(Landroid/content/Context;)V +PLcom/android/server/CommonTimeManagementService;->systemRunning()V +PLcom/android/server/ConnectivityService$1;->(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService$2;->(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService$2;->onMeteredIfacesChanged([Ljava/lang/String;)V +PLcom/android/server/ConnectivityService$2;->onUidRulesChanged(II)V +PLcom/android/server/ConnectivityService$3;->(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/ConnectivityService$4;->(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/ConnectivityService$InternalHandler;->(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->add(ILcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->addSupportedType(I)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->maybeLogBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;IZ)V +PLcom/android/server/ConnectivityService$LegacyTypeTracker;->naiToString(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/lang/String; +PLcom/android/server/ConnectivityService$NetworkFactoryInfo;->(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V +PLcom/android/server/ConnectivityService$NetworkRequestInfo;->binderDied()V +PLcom/android/server/ConnectivityService$NetworkRequestInfo;->enforceRequestCountLimit()V +PLcom/android/server/ConnectivityService$NetworkRequestInfo;->unlinkDeathRecipient()V +PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V +PLcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;->(Ljava/lang/String;I)V +PLcom/android/server/ConnectivityService$SettingsObserver;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/ConnectivityService$SettingsObserver;->observe(Landroid/net/Uri;I)V +PLcom/android/server/ConnectivityService$UnneededFor;->(Ljava/lang/String;I)V +PLcom/android/server/ConnectivityService$UnneededFor;->values()[Lcom/android/server/ConnectivityService$UnneededFor; +PLcom/android/server/ConnectivityService$ValidationLog;->(Landroid/net/Network;Ljava/lang/String;Landroid/util/LocalLog$ReadOnlyLocalLog;)V +PLcom/android/server/ConnectivityService;->-get1(Lcom/android/server/ConnectivityService;)Landroid/content/Context; +PLcom/android/server/ConnectivityService;->-get5(Lcom/android/server/ConnectivityService;)Landroid/util/SparseArray; +PLcom/android/server/ConnectivityService;->-get6(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager; +PLcom/android/server/ConnectivityService;->-get8(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray; +PLcom/android/server/ConnectivityService;->-wrap0(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)Z +PLcom/android/server/ConnectivityService;->-wrap10(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService;->-wrap12(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V +PLcom/android/server/ConnectivityService;->-wrap13(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->-wrap14(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V +PLcom/android/server/ConnectivityService;->-wrap16(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +PLcom/android/server/ConnectivityService;->-wrap18(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;I)V +PLcom/android/server/ConnectivityService;->-wrap2(I)Z +PLcom/android/server/ConnectivityService;->-wrap20(Lcom/android/server/ConnectivityService;Landroid/net/Network;IZ)V +PLcom/android/server/ConnectivityService;->-wrap25(Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->-wrap29(Lcom/android/server/ConnectivityService;I)V +PLcom/android/server/ConnectivityService;->-wrap31(Lcom/android/server/ConnectivityService;I)V +PLcom/android/server/ConnectivityService;->-wrap33(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V +PLcom/android/server/ConnectivityService;->-wrap34(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->-wrap36(Lcom/android/server/ConnectivityService;ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->-wrap37(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->-wrap38(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V +PLcom/android/server/ConnectivityService;->-wrap4(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V +PLcom/android/server/ConnectivityService;->-wrap7(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V +PLcom/android/server/ConnectivityService;->-wrap8(Lcom/android/server/ConnectivityService;)V +PLcom/android/server/ConnectivityService;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;)V +PLcom/android/server/ConnectivityService;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/net/metrics/IpConnectivityLog;)V +PLcom/android/server/ConnectivityService;->addValidationLogs(Landroid/util/LocalLog$ReadOnlyLocalLog;Landroid/net/Network;Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/ConnectivityService;->avoidBadWifi()Z +PLcom/android/server/ConnectivityService;->canonicalizeProxyInfo(Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo; +PLcom/android/server/ConnectivityService;->createInternetRequestForTransport(ILandroid/net/NetworkRequest$Type;)Landroid/net/NetworkRequest; +PLcom/android/server/ConnectivityService;->createMultinetworkPolicyTracker(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/net/util/MultinetworkPolicyTracker; +PLcom/android/server/ConnectivityService;->createNetworkMonitor(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkRequest;)Lcom/android/server/connectivity/NetworkMonitor; +PLcom/android/server/ConnectivityService;->createVpnInfo(Lcom/android/server/connectivity/Vpn;)Lcom/android/internal/net/VpnInfo; +PLcom/android/server/ConnectivityService;->dumpAvoidBadWifiSettings(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/ConnectivityService;->encodeBool(Z)I +PLcom/android/server/ConnectivityService;->enforceCrossUserPermission(I)V +PLcom/android/server/ConnectivityService;->enforceInternetPermission()V +PLcom/android/server/ConnectivityService;->ensureNetworkRequestHasType(Landroid/net/NetworkRequest;)V +PLcom/android/server/ConnectivityService;->ensureRequestableCapabilities(Landroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->ensureValidNetworkSpecifier(Landroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->flushVmDnsCache()V +PLcom/android/server/ConnectivityService;->getActiveLinkProperties()Landroid/net/LinkProperties; +PLcom/android/server/ConnectivityService;->getAllNetworkInfo()[Landroid/net/NetworkInfo; +PLcom/android/server/ConnectivityService;->getAllNetworkState()[Landroid/net/NetworkState; +PLcom/android/server/ConnectivityService;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities; +PLcom/android/server/ConnectivityService;->getDefaultProxy()Landroid/net/ProxyInfo; +PLcom/android/server/ConnectivityService;->getGlobalProxy()Landroid/net/ProxyInfo; +PLcom/android/server/ConnectivityService;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties; +PLcom/android/server/ConnectivityService;->getLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/LinkProperties; +PLcom/android/server/ConnectivityService;->getNetworkPermission(Landroid/net/NetworkCapabilities;)Ljava/lang/String; +PLcom/android/server/ConnectivityService;->getNriForAppRequest(Landroid/net/NetworkRequest;ILjava/lang/String;)Lcom/android/server/ConnectivityService$NetworkRequestInfo; +PLcom/android/server/ConnectivityService;->getSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/ArrayList; +PLcom/android/server/ConnectivityService;->getSystemProperties()Lcom/android/server/connectivity/MockableSystemProperties; +PLcom/android/server/ConnectivityService;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig; +PLcom/android/server/ConnectivityService;->handleApplyDefaultProxy(Landroid/net/ProxyInfo;)V +PLcom/android/server/ConnectivityService;->handleAsyncChannelHalfConnect(Landroid/os/Message;)V +PLcom/android/server/ConnectivityService;->handleDeprecatedGlobalHttpProxy()V +PLcom/android/server/ConnectivityService;->handleMobileDataAlwaysOn()V +PLcom/android/server/ConnectivityService;->handlePromptUnvalidated(Landroid/net/Network;)V +PLcom/android/server/ConnectivityService;->handleRegisterNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->handleRegisterNetworkFactory(Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V +PLcom/android/server/ConnectivityService;->handleReleaseNetworkRequest(Landroid/net/NetworkRequest;I)V +PLcom/android/server/ConnectivityService;->handleReportNetworkConnectivity(Landroid/net/Network;IZ)V +PLcom/android/server/ConnectivityService;->handleUpdateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V +PLcom/android/server/ConnectivityService;->hasWifiNetworkListenPermission(Landroid/net/NetworkCapabilities;)Z +PLcom/android/server/ConnectivityService;->isDefaultNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Z +PLcom/android/server/ConnectivityService;->isDefaultRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Z +PLcom/android/server/ConnectivityService;->isNetworkSupported(I)Z +PLcom/android/server/ConnectivityService;->isTetheringSupported()Z +PLcom/android/server/ConnectivityService;->isTetheringSupported(Ljava/lang/String;)Z +PLcom/android/server/ConnectivityService;->loadGlobalProxy()V +PLcom/android/server/ConnectivityService;->log(Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->logDefaultNetworkEvent(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->makeDefault(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->makeGeneralIntent(Landroid/net/NetworkInfo;Ljava/lang/String;)Landroid/content/Intent; +PLcom/android/server/ConnectivityService;->makeTethering()Lcom/android/server/connectivity/Tethering; +PLcom/android/server/ConnectivityService;->nextNetworkRequestId()I +PLcom/android/server/ConnectivityService;->notifyIfacesChangedForNetworkStats()V +PLcom/android/server/ConnectivityService;->notifyLockdownVpn(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->notifyNetworkAvailable(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V +PLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;I)V +PLcom/android/server/ConnectivityService;->onUserStart(I)V +PLcom/android/server/ConnectivityService;->onUserUnlocked(I)V +PLcom/android/server/ConnectivityService;->proxyInfoEqual(Landroid/net/ProxyInfo;Landroid/net/ProxyInfo;)Z +PLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I +PLcom/android/server/ConnectivityService;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->registerSettingsCallbacks()V +PLcom/android/server/ConnectivityService;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V +PLcom/android/server/ConnectivityService;->reportNetworkConnectivity(Landroid/net/Network;Z)V +PLcom/android/server/ConnectivityService;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest; +PLcom/android/server/ConnectivityService;->reserveNetId()I +PLcom/android/server/ConnectivityService;->scheduleReleaseNetworkTransitionWakelock()V +PLcom/android/server/ConnectivityService;->scheduleUnvalidatedPrompt(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->sendConnectedBroadcast(Landroid/net/NetworkInfo;)V +PLcom/android/server/ConnectivityService;->sendGeneralBroadcast(Landroid/net/NetworkInfo;Ljava/lang/String;)V +PLcom/android/server/ConnectivityService;->sendInetConditionBroadcast(Landroid/net/NetworkInfo;)V +PLcom/android/server/ConnectivityService;->sendLegacyNetworkBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V +PLcom/android/server/ConnectivityService;->sendStickyBroadcast(Landroid/content/Intent;)V +PLcom/android/server/ConnectivityService;->setDefaultDnsSystemProperties(Ljava/util/Collection;)V +PLcom/android/server/ConnectivityService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V +PLcom/android/server/ConnectivityService;->setNetDnsProperty(ILjava/lang/String;)V +PLcom/android/server/ConnectivityService;->setupDataActivityTracking(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->startAlwaysOnVpn(I)Z +PLcom/android/server/ConnectivityService;->systemReady()V +PLcom/android/server/ConnectivityService;->toBool(I)Z +PLcom/android/server/ConnectivityService;->updateCapabilities(ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->updateDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)V +PLcom/android/server/ConnectivityService;->updateInetCondition(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->updateInterfaces(Landroid/net/LinkProperties;Landroid/net/LinkProperties;ILandroid/net/NetworkCapabilities;)V +PLcom/android/server/ConnectivityService;->updateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V +PLcom/android/server/ConnectivityService;->updateLockdownVpn()Z +PLcom/android/server/ConnectivityService;->updateMtu(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V +PLcom/android/server/ConnectivityService;->updateNetworkInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V +PLcom/android/server/ConnectivityService;->updateProxy(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->updateRoutes(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)Z +PLcom/android/server/ConnectivityService;->updateSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/lang/String;Landroid/net/NetworkRequest;)V +PLcom/android/server/ConnectivityService;->updateTcpBufferSizes(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/ConnectivityService;->wakeupModifyInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;Z)V +PLcom/android/server/ConsumerIrService;->(Landroid/content/Context;)V +PLcom/android/server/ContextHubSystemService;->(Landroid/content/Context;)V +PLcom/android/server/ContextHubSystemService;->lambda$-com_android_server_ContextHubSystemService_1237(Landroid/content/Context;)V +PLcom/android/server/ContextHubSystemService;->onBootPhase(I)V +PLcom/android/server/ContextHubSystemService;->onStart()V +PLcom/android/server/CountryDetectorService$1$1;->(Lcom/android/server/CountryDetectorService$1;Landroid/location/Country;)V +PLcom/android/server/CountryDetectorService$1$1;->run()V +PLcom/android/server/CountryDetectorService$1;->(Lcom/android/server/CountryDetectorService;)V +PLcom/android/server/CountryDetectorService$1;->onCountryDetected(Landroid/location/Country;)V +PLcom/android/server/CountryDetectorService$2;->(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V +PLcom/android/server/CountryDetectorService$2;->run()V +PLcom/android/server/CountryDetectorService$Receiver;->(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V +PLcom/android/server/CountryDetectorService$Receiver;->getListener()Landroid/location/ICountryListener; +PLcom/android/server/CountryDetectorService;->-get0(Lcom/android/server/CountryDetectorService;)Lcom/android/server/location/ComprehensiveCountryDetector; +PLcom/android/server/CountryDetectorService;->-get1(Lcom/android/server/CountryDetectorService;)Landroid/os/Handler; +PLcom/android/server/CountryDetectorService;->(Landroid/content/Context;)V +PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V +PLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V +PLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country; +PLcom/android/server/CountryDetectorService;->initialize()V +PLcom/android/server/CountryDetectorService;->notifyReceivers(Landroid/location/Country;)V +PLcom/android/server/CountryDetectorService;->run()V +PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V +PLcom/android/server/CountryDetectorService;->systemRunning()V +PLcom/android/server/DeviceIdleController$1;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$2;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$3;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$4;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$5;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$6;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$6;->onDisplayChanged(I)V +PLcom/android/server/DeviceIdleController$7;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$8;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$BinderService;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$BinderService;->(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$BinderService;)V +PLcom/android/server/DeviceIdleController$BinderService;->getAppIdTempWhitelist()[I +PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I +PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I +PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z +PLcom/android/server/DeviceIdleController$Constants;->(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V +PLcom/android/server/DeviceIdleController$Constants;->updateConstants()V +PLcom/android/server/DeviceIdleController$LocalService;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIZLjava/lang/String;)V +PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJZLjava/lang/String;)V +PLcom/android/server/DeviceIdleController$LocalService;->getNotificationWhitelistDuration()J +PLcom/android/server/DeviceIdleController$LocalService;->setNetworkPolicyTempWhitelistCallback(Ljava/lang/Runnable;)V +PLcom/android/server/DeviceIdleController$MotionListener;->(Lcom/android/server/DeviceIdleController;)V +PLcom/android/server/DeviceIdleController$MotionListener;->(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$MotionListener;)V +PLcom/android/server/DeviceIdleController$MyHandler;->(Lcom/android/server/DeviceIdleController;Landroid/os/Looper;)V +PLcom/android/server/DeviceIdleController;->-get1(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$Constants; +PLcom/android/server/DeviceIdleController;->(Landroid/content/Context;)V +PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJZLjava/lang/String;)V +PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppInternal(ILjava/lang/String;JIZLjava/lang/String;)V +PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V +PLcom/android/server/DeviceIdleController;->becomeInactiveIfAppropriateLocked()V +PLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I +PLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V +PLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I +PLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I +PLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I +PLcom/android/server/DeviceIdleController;->getSystemDir()Ljava/io/File; +PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistAppInternal(Ljava/lang/String;)Z +PLcom/android/server/DeviceIdleController;->onBootPhase(I)V +PLcom/android/server/DeviceIdleController;->onStart()V +PLcom/android/server/DeviceIdleController;->postTempActiveTimeoutMessage(IJ)V +PLcom/android/server/DeviceIdleController;->readConfigFileLocked()V +PLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked()V +PLcom/android/server/DeviceIdleController;->setNetworkPolicyTempWhitelistCallbackInternal(Ljava/lang/Runnable;)V +PLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V +PLcom/android/server/DeviceIdleController;->updateDisplayLocked()V +PLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZ)V +PLcom/android/server/DeviceIdleController;->updateWhitelistAppIdsLocked()V +PLcom/android/server/DiskStatsService;->(Landroid/content/Context;)V +PLcom/android/server/DockObserver$1;->(Lcom/android/server/DockObserver;Z)V +PLcom/android/server/DockObserver$2;->(Lcom/android/server/DockObserver;)V +PLcom/android/server/DockObserver$BinderService;->(Lcom/android/server/DockObserver;)V +PLcom/android/server/DockObserver$BinderService;->(Lcom/android/server/DockObserver;Lcom/android/server/DockObserver$BinderService;)V +PLcom/android/server/DockObserver;->(Landroid/content/Context;)V +PLcom/android/server/DockObserver;->init()V +PLcom/android/server/DockObserver;->onBootPhase(I)V +PLcom/android/server/DockObserver;->onStart()V +PLcom/android/server/DropBoxManagerService$1$1;->(Lcom/android/server/DropBoxManagerService$1;)V +PLcom/android/server/DropBoxManagerService$1$1;->run()V +PLcom/android/server/DropBoxManagerService$1;->(Lcom/android/server/DropBoxManagerService;)V +PLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/DropBoxManagerService$2;->(Lcom/android/server/DropBoxManagerService;)V +PLcom/android/server/DropBoxManagerService$3;->(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V +PLcom/android/server/DropBoxManagerService$4;->(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V +PLcom/android/server/DropBoxManagerService$4;->onChange(Z)V +PLcom/android/server/DropBoxManagerService$FileList;->()V +PLcom/android/server/DropBoxManagerService$FileList;->(Lcom/android/server/DropBoxManagerService$FileList;)V +PLcom/android/server/DropBoxManagerService;->-get0(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver; +PLcom/android/server/DropBoxManagerService;->-set0(Lcom/android/server/DropBoxManagerService;J)J +PLcom/android/server/DropBoxManagerService;->-wrap0(Lcom/android/server/DropBoxManagerService;)J +PLcom/android/server/DropBoxManagerService;->-wrap1(Lcom/android/server/DropBoxManagerService;)V +PLcom/android/server/DropBoxManagerService;->(Landroid/content/Context;)V +PLcom/android/server/DropBoxManagerService;->(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V +PLcom/android/server/DropBoxManagerService;->onBootPhase(I)V +PLcom/android/server/DropBoxManagerService;->onStart()V +PLcom/android/server/EntropyMixer$1;->(Lcom/android/server/EntropyMixer;)V +PLcom/android/server/EntropyMixer$2;->(Lcom/android/server/EntropyMixer;)V +PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/EntropyMixer;->-wrap2(Lcom/android/server/EntropyMixer;)V +PLcom/android/server/EntropyMixer;->(Landroid/content/Context;)V +PLcom/android/server/EntropyMixer;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/EntropyMixer;->addDeviceSpecificEntropy()V +PLcom/android/server/EntropyMixer;->addHwRandomEntropy()V +PLcom/android/server/EntropyMixer;->getSystemDir()Ljava/lang/String; +PLcom/android/server/EntropyMixer;->loadInitialEntropy()V +PLcom/android/server/EntropyMixer;->scheduleEntropyWriter()V +PLcom/android/server/EntropyMixer;->writeEntropy()V +PLcom/android/server/EventLogTags;->writeNotificationCancel(IILjava/lang/String;ILjava/lang/String;IIIILjava/lang/String;)V +PLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIIILjava/lang/String;)V +PLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V +PLcom/android/server/EventLogTags;->writeNotificationExpansion(Ljava/lang/String;IIIII)V +PLcom/android/server/EventLogTags;->writeNotificationPanelHidden()V +PLcom/android/server/EventLogTags;->writeNotificationPanelRevealed(I)V +PLcom/android/server/EventLogTags;->writeNotificationVisibility(Ljava/lang/String;IIIII)V +PLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V +PLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V +PLcom/android/server/GestureLauncherService$1;->(Lcom/android/server/GestureLauncherService;)V +PLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/GestureLauncherService$2;->(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V +PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;->(Lcom/android/server/GestureLauncherService;)V +PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;->(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;)V +PLcom/android/server/GestureLauncherService$GestureEventListener;->(Lcom/android/server/GestureLauncherService;)V +PLcom/android/server/GestureLauncherService$GestureEventListener;->(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$GestureEventListener;)V +PLcom/android/server/GestureLauncherService;->-get10(Lcom/android/server/GestureLauncherService;)Landroid/content/Context; +PLcom/android/server/GestureLauncherService;->-get13(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver; +PLcom/android/server/GestureLauncherService;->-set5(Lcom/android/server/GestureLauncherService;I)I +PLcom/android/server/GestureLauncherService;->-wrap0(Lcom/android/server/GestureLauncherService;)V +PLcom/android/server/GestureLauncherService;->-wrap1(Lcom/android/server/GestureLauncherService;)V +PLcom/android/server/GestureLauncherService;->(Landroid/content/Context;)V +PLcom/android/server/GestureLauncherService;->(Landroid/content/Context;Lcom/android/internal/logging/MetricsLogger;)V +PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerEnabled(Landroid/content/res/Resources;)Z +PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerSettingEnabled(Landroid/content/Context;I)Z +PLcom/android/server/GestureLauncherService;->isCameraLaunchEnabled(Landroid/content/res/Resources;)Z +PLcom/android/server/GestureLauncherService;->isCameraLaunchSettingEnabled(Landroid/content/Context;I)Z +PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerEnabled(Landroid/content/res/Resources;)Z +PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerSettingEnabled(Landroid/content/Context;I)Z +PLcom/android/server/GestureLauncherService;->isGestureLauncherEnabled(Landroid/content/res/Resources;)Z +PLcom/android/server/GestureLauncherService;->onBootPhase(I)V +PLcom/android/server/GestureLauncherService;->onStart()V +PLcom/android/server/GestureLauncherService;->registerContentObservers()V +PLcom/android/server/GestureLauncherService;->unregisterCameraLaunchGesture()V +PLcom/android/server/GestureLauncherService;->unregisterCameraLiftTrigger()V +PLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled()V +PLcom/android/server/GestureLauncherService;->updateCameraRegistered()V +PLcom/android/server/GraphicsStatsService$1;->(Lcom/android/server/GraphicsStatsService;)V +PLcom/android/server/GraphicsStatsService$1;->handleMessage(Landroid/os/Message;)Z +PLcom/android/server/GraphicsStatsService$ActiveBuffer;->binderDied()V +PLcom/android/server/GraphicsStatsService$ActiveBuffer;->closeAllBuffers()V +PLcom/android/server/GraphicsStatsService$BufferInfo;->(Lcom/android/server/GraphicsStatsService;Ljava/lang/String;IJ)V +PLcom/android/server/GraphicsStatsService$HistoricalBuffer;->(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V +PLcom/android/server/GraphicsStatsService;->-get0(Lcom/android/server/GraphicsStatsService;)I +PLcom/android/server/GraphicsStatsService;->-get1(Lcom/android/server/GraphicsStatsService;)[B +PLcom/android/server/GraphicsStatsService;->-wrap1(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V +PLcom/android/server/GraphicsStatsService;->-wrap2(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V +PLcom/android/server/GraphicsStatsService;->(Landroid/content/Context;)V +PLcom/android/server/GraphicsStatsService;->addToSaveQueue(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V +PLcom/android/server/GraphicsStatsService;->getPfd(Landroid/os/MemoryFile;)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/GraphicsStatsService;->pathForApp(Lcom/android/server/GraphicsStatsService$BufferInfo;)Ljava/io/File; +PLcom/android/server/GraphicsStatsService;->processDied(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V +PLcom/android/server/GraphicsStatsService;->requestBufferForProcessLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;I)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/GraphicsStatsService;->saveBuffer(Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V +PLcom/android/server/GraphicsStatsService;->scheduleRotateLocked()V +PLcom/android/server/HardwarePropertiesManagerService;->(Landroid/content/Context;)V +PLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V +PLcom/android/server/HardwarePropertiesManagerService;->getDeviceTemperatures(Ljava/lang/String;II)[F +PLcom/android/server/InputMethodManagerService$1;->(Lcom/android/server/InputMethodManagerService;)V +PLcom/android/server/InputMethodManagerService$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/InputMethodManagerService$2;->(Lcom/android/server/InputMethodManagerService;)V +PLcom/android/server/InputMethodManagerService$ClientState;->(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V +PLcom/android/server/InputMethodManagerService$HardKeyboardListener;->(Lcom/android/server/InputMethodManagerService;)V +PLcom/android/server/InputMethodManagerService$HardKeyboardListener;->(Lcom/android/server/InputMethodManagerService;Lcom/android/server/InputMethodManagerService$HardKeyboardListener;)V +PLcom/android/server/InputMethodManagerService$ImmsBroadcastReceiver;->(Lcom/android/server/InputMethodManagerService;)V +PLcom/android/server/InputMethodManagerService$ImmsBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/InputMethodManagerService$InputMethodFileManager;->(Ljava/util/HashMap;I)V +PLcom/android/server/InputMethodManagerService$InputMethodFileManager;->addInputMethodSubtypes(Landroid/view/inputmethod/InputMethodInfo;[Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/InputMethodManagerService$InputMethodFileManager;->getAllAdditionalInputMethodSubtypes()Ljava/util/HashMap; +PLcom/android/server/InputMethodManagerService$InputMethodFileManager;->readAdditionalInputMethodSubtypes(Ljava/util/HashMap;Landroid/util/AtomicFile;)V +PLcom/android/server/InputMethodManagerService$InputMethodFileManager;->writeAdditionalInputMethodSubtypes(Ljava/util/HashMap;Landroid/util/AtomicFile;Ljava/util/HashMap;)V +PLcom/android/server/InputMethodManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/InputMethodManagerService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/InputMethodManagerService$Lifecycle;->onStart()V +PLcom/android/server/InputMethodManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/InputMethodManagerService$LocalServiceImpl;->(Landroid/os/Handler;)V +PLcom/android/server/InputMethodManagerService$MethodCallback;->(Lcom/android/server/InputMethodManagerService;Lcom/android/internal/view/IInputMethod;Landroid/view/InputChannel;)V +PLcom/android/server/InputMethodManagerService$MethodCallback;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->(Lcom/android/server/InputMethodManagerService;)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->addKnownImePackageNameLocked(Ljava/lang/String;)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->clearKnownImePackageNamesLocked()V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->clearPackageChangeState()V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->isChangingPackagesOfCurrentUserLocked()Z +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onBeginPackageChanges()V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z +PLcom/android/server/InputMethodManagerService$SessionState;->(Lcom/android/server/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V +PLcom/android/server/InputMethodManagerService$SettingsObserver;->(Lcom/android/server/InputMethodManagerService;Landroid/os/Handler;)V +PLcom/android/server/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V +PLcom/android/server/InputMethodManagerService$StartInputHistory$Entry;->(Lcom/android/server/InputMethodManagerService$StartInputInfo;)V +PLcom/android/server/InputMethodManagerService$StartInputHistory;->()V +PLcom/android/server/InputMethodManagerService$StartInputHistory;->(Lcom/android/server/InputMethodManagerService$StartInputHistory;)V +PLcom/android/server/InputMethodManagerService$StartInputHistory;->getEntrySize()I +PLcom/android/server/InputMethodManagerService;->(Landroid/content/Context;)V +PLcom/android/server/InputMethodManagerService;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;II)V +PLcom/android/server/InputMethodManagerService;->bindCurrentInputMethodService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z +PLcom/android/server/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V +PLcom/android/server/InputMethodManagerService;->clearCurMethodLocked()V +PLcom/android/server/InputMethodManagerService;->finishInput(Lcom/android/internal/view/IInputMethodClient;)V +PLcom/android/server/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/InputMethodManagerService$SessionState;)V +PLcom/android/server/InputMethodManagerService;->getAppShowFlags()I +PLcom/android/server/InputMethodManagerService;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype; +PLcom/android/server/InputMethodManagerService;->getEnabledInputMethodList()Ljava/util/List; +PLcom/android/server/InputMethodManagerService;->getImeShowFlags()I +PLcom/android/server/InputMethodManagerService;->getInputMethodList()Ljava/util/List; +PLcom/android/server/InputMethodManagerService;->getInputMethodWindowVisibleHeight()I +PLcom/android/server/InputMethodManagerService;->hideInputMethodMenu()V +PLcom/android/server/InputMethodManagerService;->hideInputMethodMenuLocked()V +PLcom/android/server/InputMethodManagerService;->hideMySoftInput(Landroid/os/IBinder;I)V +PLcom/android/server/InputMethodManagerService;->isKeyguardLocked()Z +PLcom/android/server/InputMethodManagerService;->notifyInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/InputMethodManagerService;->notifyUserAction(I)V +PLcom/android/server/InputMethodManagerService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/InputMethodManagerService;->onSessionCreated(Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V +PLcom/android/server/InputMethodManagerService;->onUnlockUser(I)V +PLcom/android/server/InputMethodManagerService;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V +PLcom/android/server/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/InputMethodManagerService$ClientState;)V +PLcom/android/server/InputMethodManagerService;->resetDefaultImeLocked(Landroid/content/Context;)V +PLcom/android/server/InputMethodManagerService;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z +PLcom/android/server/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V +PLcom/android/server/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V +PLcom/android/server/InputMethodManagerService;->showCurrentInputLocked(ILandroid/os/ResultReceiver;)Z +PLcom/android/server/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z +PLcom/android/server/InputMethodManagerService;->startInputInnerLocked()Lcom/android/internal/view/InputBindResult; +PLcom/android/server/InputMethodManagerService;->systemRunning(Lcom/android/server/statusbar/StatusBarManagerService;)V +PLcom/android/server/InputMethodManagerService;->unbindCurrentMethodLocked(Z)V +PLcom/android/server/InputMethodManagerService;->updateCurrentProfileIds()V +PLcom/android/server/InputMethodManagerService;->updateFromSettingsLocked(Z)V +PLcom/android/server/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V +PLcom/android/server/InputMethodManagerService;->updateKeyboardFromSettingsLocked()V +PLcom/android/server/IoThread;->get()Lcom/android/server/IoThread; +PLcom/android/server/LocationManagerService$1;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$2;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$3;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$4;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$5;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$6;->(Lcom/android/server/LocationManagerService;Landroid/os/Handler;)V +PLcom/android/server/LocationManagerService$7;->(Lcom/android/server/LocationManagerService;Landroid/os/Handler;)V +PLcom/android/server/LocationManagerService$8;->(Lcom/android/server/LocationManagerService;Landroid/os/Handler;)V +PLcom/android/server/LocationManagerService$9;->(Lcom/android/server/LocationManagerService;)V +PLcom/android/server/LocationManagerService$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/LocationManagerService$Identity;->(IILjava/lang/String;)V +PLcom/android/server/LocationManagerService$LocationWorkerHandler;->(Lcom/android/server/LocationManagerService;Landroid/os/Looper;)V +PLcom/android/server/LocationManagerService$Receiver;->binderDied()V +PLcom/android/server/LocationManagerService$Receiver;->clearPendingBroadcastsLocked()V +PLcom/android/server/LocationManagerService$Receiver;->getListener()Landroid/location/ILocationListener; +PLcom/android/server/LocationManagerService$Receiver;->isListener()Z +PLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(ZZI)Z +PLcom/android/server/LocationManagerService$UpdateRecord;->disposeLocked(Z)V +PLcom/android/server/LocationManagerService;->-get0(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager; +PLcom/android/server/LocationManagerService;->-get1(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager; +PLcom/android/server/LocationManagerService;->-get10(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics; +PLcom/android/server/LocationManagerService;->-get2(Lcom/android/server/LocationManagerService;)Landroid/content/Context; +PLcom/android/server/LocationManagerService;->-get5(Lcom/android/server/LocationManagerService;)Ljava/lang/Object; +PLcom/android/server/LocationManagerService;->-get6(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager; +PLcom/android/server/LocationManagerService;->-get7(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; +PLcom/android/server/LocationManagerService;->-get8(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; +PLcom/android/server/LocationManagerService;->-get9(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap; +PLcom/android/server/LocationManagerService;->-wrap0(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Z +PLcom/android/server/LocationManagerService;->-wrap1(I)Z +PLcom/android/server/LocationManagerService;->-wrap2(Lcom/android/server/LocationManagerService;II)I +PLcom/android/server/LocationManagerService;->-wrap5(Lcom/android/server/LocationManagerService;Landroid/location/Location;Z)V +PLcom/android/server/LocationManagerService;->-wrap7(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$Receiver;)V +PLcom/android/server/LocationManagerService;->-wrap9(Lcom/android/server/LocationManagerService;I)V +PLcom/android/server/LocationManagerService;->(Landroid/content/Context;)V +PLcom/android/server/LocationManagerService;->addProviderLocked(Lcom/android/server/location/LocationProviderInterface;)V +PLcom/android/server/LocationManagerService;->checkDeviceStatsAllowed()V +PLcom/android/server/LocationManagerService;->checkListenerOrIntentLocked(Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver; +PLcom/android/server/LocationManagerService;->checkUpdateAppOpsAllowed()V +PLcom/android/server/LocationManagerService;->createSanitizedRequest(Landroid/location/LocationRequest;I)Landroid/location/LocationRequest; +PLcom/android/server/LocationManagerService;->ensureFallbackFusedProviderPresentLocked(Ljava/util/ArrayList;)V +PLcom/android/server/LocationManagerService;->geocoderIsPresent()Z +PLcom/android/server/LocationManagerService;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +PLcom/android/server/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List; +PLcom/android/server/LocationManagerService;->hasGnssPermissions(Ljava/lang/String;)Z +PLcom/android/server/LocationManagerService;->isMockProvider(Ljava/lang/String;)Z +PLcom/android/server/LocationManagerService;->isUidALocationProvider(I)Z +PLcom/android/server/LocationManagerService;->loadProvidersLocked()V +PLcom/android/server/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z +PLcom/android/server/LocationManagerService;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V +PLcom/android/server/LocationManagerService;->requestLocationUpdatesLocked(Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;IILjava/lang/String;)V +PLcom/android/server/LocationManagerService;->switchUser(I)V +PLcom/android/server/LocationManagerService;->systemRunning()V +PLcom/android/server/LocationManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +PLcom/android/server/LocationManagerService;->updateBackgroundThrottlingWhitelistLocked()V +PLcom/android/server/LocationManagerService;->updateProviderListenersLocked(Ljava/lang/String;Z)V +PLcom/android/server/LocationManagerService;->updateProvidersLocked()V +PLcom/android/server/LocationManagerService;->updateUserProfiles(I)V +PLcom/android/server/MmsServiceBroker$1;->(Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/MmsServiceBroker$2;->(Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/MmsServiceBroker$3;->(Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/MmsServiceBroker$BinderService;->(Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/MmsServiceBroker$BinderService;->(Lcom/android/server/MmsServiceBroker;Lcom/android/server/MmsServiceBroker$BinderService;)V +PLcom/android/server/MmsServiceBroker;->(Landroid/content/Context;)V +PLcom/android/server/MmsServiceBroker;->onStart()V +PLcom/android/server/MmsServiceBroker;->systemRunning()V +PLcom/android/server/MountServiceIdler;->scheduleIdlePass(Landroid/content/Context;)V +PLcom/android/server/MountServiceIdler;->tomorrowMidnight()Ljava/util/Calendar; +PLcom/android/server/NativeDaemonConnector$Command;->-get0(Lcom/android/server/NativeDaemonConnector$Command;)Ljava/util/ArrayList; +PLcom/android/server/NativeDaemonConnector$Command;->-get1(Lcom/android/server/NativeDaemonConnector$Command;)Ljava/lang/String; +PLcom/android/server/NativeDaemonConnector$Command;->(Ljava/lang/String;[Ljava/lang/Object;)V +PLcom/android/server/NativeDaemonConnector$Command;->appendArg(Ljava/lang/Object;)Lcom/android/server/NativeDaemonConnector$Command; +PLcom/android/server/NativeDaemonConnector$ResponseQueue;->(I)V +PLcom/android/server/NativeDaemonConnector$SensitiveArg;->(Ljava/lang/Object;)V +PLcom/android/server/NativeDaemonConnector$SensitiveArg;->toString()Ljava/lang/String; +PLcom/android/server/NativeDaemonConnector;->(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;)V +PLcom/android/server/NativeDaemonConnector;->(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;Landroid/os/Looper;)V +PLcom/android/server/NativeDaemonConnector;->determineSocketAddress()Landroid/net/LocalSocketAddress; +PLcom/android/server/NativeDaemonConnector;->execute(JLjava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent; +PLcom/android/server/NativeDaemonConnector;->execute(Lcom/android/server/NativeDaemonConnector$Command;)Lcom/android/server/NativeDaemonEvent; +PLcom/android/server/NativeDaemonConnector;->execute(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent; +PLcom/android/server/NativeDaemonConnector;->executeForList(Ljava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent; +PLcom/android/server/NativeDaemonConnector;->loge(Ljava/lang/String;)V +PLcom/android/server/NativeDaemonConnector;->monitor()V +PLcom/android/server/NativeDaemonConnector;->run()V +PLcom/android/server/NativeDaemonConnector;->setDebug(Z)V +PLcom/android/server/NativeDaemonConnector;->setWarnIfHeld(Ljava/lang/Object;)V +PLcom/android/server/NativeDaemonEvent;->checkCode(I)V +PLcom/android/server/NativeDaemonEvent;->filterMessageList([Lcom/android/server/NativeDaemonEvent;I)[Ljava/lang/String; +PLcom/android/server/NativeDaemonEvent;->getCmdNumber()I +PLcom/android/server/NativeDaemonEvent;->getMessage()Ljava/lang/String; +PLcom/android/server/NativeDaemonEvent;->getRawEvent()Ljava/lang/String; +PLcom/android/server/NativeDaemonEvent;->isClassClientError()Z +PLcom/android/server/NativeDaemonEvent;->isClassContinue()Z +PLcom/android/server/NativeDaemonEvent;->isClassServerError()Z +PLcom/android/server/NetworkManagementInternal;->()V +PLcom/android/server/NetworkManagementService$1;->(Lcom/android/server/NetworkManagementService;I)V +PLcom/android/server/NetworkManagementService$1;->run()V +PLcom/android/server/NetworkManagementService$IdleTimerParams;->(II)V +PLcom/android/server/NetworkManagementService$LocalService;->(Lcom/android/server/NetworkManagementService;)V +PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->(Lcom/android/server/NetworkManagementService;)V +PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdCallbackReceiver;)V +PLcom/android/server/NetworkManagementService$NetdCallbackReceiver;->onDaemonConnected()V +PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->(Lcom/android/server/NetworkManagementService;)V +PLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;)V +PLcom/android/server/NetworkManagementService;->-get0(Lcom/android/server/NetworkManagementService;)Ljava/util/concurrent/CountDownLatch; +PLcom/android/server/NetworkManagementService;->-get1(Lcom/android/server/NetworkManagementService;)Lcom/android/server/NativeDaemonConnector; +PLcom/android/server/NetworkManagementService;->-set0(Lcom/android/server/NetworkManagementService;Ljava/util/concurrent/CountDownLatch;)Ljava/util/concurrent/CountDownLatch; +PLcom/android/server/NetworkManagementService;->-wrap11(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->-wrap12(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/RouteInfo;)V +PLcom/android/server/NetworkManagementService;->-wrap3(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V +PLcom/android/server/NetworkManagementService;->-wrap4(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V +PLcom/android/server/NetworkManagementService;->-wrap5(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->-wrap7(Lcom/android/server/NetworkManagementService;Ljava/lang/String;J[Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->-wrap8(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Z)V +PLcom/android/server/NetworkManagementService;->-wrap9(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->(Landroid/content/Context;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->addIdleTimer(Ljava/lang/String;II)V +PLcom/android/server/NetworkManagementService;->addInterfaceToNetwork(Ljava/lang/String;I)V +PLcom/android/server/NetworkManagementService;->addRoute(ILandroid/net/RouteInfo;)V +PLcom/android/server/NetworkManagementService;->clearInterfaceAddresses(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->closeSocketsForFirewallChainLocked(ILjava/lang/String;)V +PLcom/android/server/NetworkManagementService;->connectNativeNetdService()V +PLcom/android/server/NetworkManagementService;->create(Landroid/content/Context;)Lcom/android/server/NetworkManagementService; +PLcom/android/server/NetworkManagementService;->create(Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/NetworkManagementService; +PLcom/android/server/NetworkManagementService;->createPhysicalNetwork(ILjava/lang/String;)V +PLcom/android/server/NetworkManagementService;->disableIpv6(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->enableIpv6(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats; +PLcom/android/server/NetworkManagementService;->getFirewallType(I)I +PLcom/android/server/NetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration; +PLcom/android/server/NetworkManagementService;->getNetdService()Landroid/net/INetd; +PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryDev()Landroid/net/NetworkStats; +PLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryXt()Landroid/net/NetworkStats; +PLcom/android/server/NetworkManagementService;->getNetworkStatsUidDetail(I)Landroid/net/NetworkStats; +PLcom/android/server/NetworkManagementService;->isBandwidthControlEnabled()Z +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18114(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18321(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_18706(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29657(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_29911(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30184(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->lambda$-com_android_server_NetworkManagementService_30264(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->listInterfaces()[Ljava/lang/String; +PLcom/android/server/NetworkManagementService;->modifyInterfaceInNetwork(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->modifyRoute(Ljava/lang/String;Ljava/lang/String;Landroid/net/RouteInfo;)V +PLcom/android/server/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V +PLcom/android/server/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V +PLcom/android/server/NetworkManagementService;->notifyInterfaceAdded(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->notifyInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V +PLcom/android/server/NetworkManagementService;->notifyInterfaceRemoved(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->notifyLimitReached(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->notifyRouteChange(Ljava/lang/String;Landroid/net/RouteInfo;)V +PLcom/android/server/NetworkManagementService;->prepareNativeDaemon()V +PLcom/android/server/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V +PLcom/android/server/NetworkManagementService;->registerTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->reportNetworkActive()V +PLcom/android/server/NetworkManagementService;->setDataSaverModeEnabled(Z)Z +PLcom/android/server/NetworkManagementService;->setDefaultNetId(I)V +PLcom/android/server/NetworkManagementService;->setDnsConfigurationForNetwork(I[Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->setFirewallChainEnabled(IZ)V +PLcom/android/server/NetworkManagementService;->setFirewallChainState(IZ)V +PLcom/android/server/NetworkManagementService;->setFirewallEnabled(Z)V +PLcom/android/server/NetworkManagementService;->setFirewallUidRules(I[I[I)V +PLcom/android/server/NetworkManagementService;->setGlobalAlert(J)V +PLcom/android/server/NetworkManagementService;->setIPv6AddrGenMode(Ljava/lang/String;I)V +PLcom/android/server/NetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V +PLcom/android/server/NetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V +PLcom/android/server/NetworkManagementService;->setInterfaceUp(Ljava/lang/String;)V +PLcom/android/server/NetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V +PLcom/android/server/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V +PLcom/android/server/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V +PLcom/android/server/NetworkManagementService;->systemReady()V +PLcom/android/server/NetworkScoreService$1;->(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/NetworkScoreService$2;->(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/NetworkScoreService$3;->(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService$3;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V +PLcom/android/server/NetworkScoreService$3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V +PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->onChange(ZLandroid/net/Uri;)V +PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->(Landroid/content/Context;Ljava/util/List;ILjava/util/function/UnaryOperator;Ljava/util/function/UnaryOperator;)V +PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V +PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->create(Landroid/content/Context;Ljava/util/List;I)Lcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer; +PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->filterScores(Ljava/util/List;I)Ljava/util/List; +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->(Lcom/android/server/NetworkScoreService;Ljava/lang/String;)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->(Lcom/android/server/NetworkScoreService;Ljava/lang/String;Lcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->(Landroid/net/NetworkScorerAppData;)V +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->bind(Landroid/content/Context;)V +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider; +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +PLcom/android/server/NetworkScoreService$ServiceHandler;->(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V +PLcom/android/server/NetworkScoreService$ServiceHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/NetworkScoreService;->-com_android_server_NetworkScoreService-mthref-0(Landroid/net/NetworkScorerAppData;)Lcom/android/server/NetworkScoreService$ScoringServiceConnection; +PLcom/android/server/NetworkScoreService;->-get0()Z +PLcom/android/server/NetworkScoreService;->-get2(Lcom/android/server/NetworkScoreService;)Lcom/android/server/NetworkScorerAppManager; +PLcom/android/server/NetworkScoreService;->-wrap0(Lcom/android/server/NetworkScoreService;Landroid/net/NetworkScorerAppData;)V +PLcom/android/server/NetworkScoreService;->-wrap1(Lcom/android/server/NetworkScoreService;)V +PLcom/android/server/NetworkScoreService;->(Landroid/content/Context;)V +PLcom/android/server/NetworkScoreService;->(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V +PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V +PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V +PLcom/android/server/NetworkScoreService;->clearInternal()V +PLcom/android/server/NetworkScoreService;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider; +PLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection; +PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V +PLcom/android/server/NetworkScoreService;->refreshBinding()V +PLcom/android/server/NetworkScoreService;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V +PLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V +PLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V +PLcom/android/server/NetworkScoreService;->systemReady()V +PLcom/android/server/NetworkScoreService;->systemRunning()V +PLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->()V +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getSecureInt(Landroid/content/Context;Ljava/lang/String;I)I +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z +PLcom/android/server/NetworkScorerAppManager;->(Landroid/content/Context;)V +PLcom/android/server/NetworkScorerAppManager;->(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V +PLcom/android/server/NetworkScorerAppManager;->canAccessLocation(ILjava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->findUseOpenWifiNetworksActivity(Landroid/content/pm/ServiceInfo;)Landroid/content/ComponentName; +PLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData; +PLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List; +PLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String; +PLcom/android/server/NetworkScorerAppManager;->getNetworkAvailableNotificationChannelId(Landroid/content/pm/ServiceInfo;)Ljava/lang/String; +PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I +PLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String; +PLcom/android/server/NetworkScorerAppManager;->getRecommendationServiceLabel(Landroid/content/pm/ServiceInfo;Landroid/content/pm/PackageManager;)Ljava/lang/String; +PLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData; +PLcom/android/server/NetworkScorerAppManager;->hasPermissions(ILjava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->hasScoreNetworksPermission(Ljava/lang/String;)Z +PLcom/android/server/NetworkScorerAppManager;->isLocationModeEnabled()Z +PLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V +PLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V +PLcom/android/server/NetworkScorerAppManager;->updateState()V +PLcom/android/server/NetworkTimeUpdateService$1;->(Lcom/android/server/NetworkTimeUpdateService;)V +PLcom/android/server/NetworkTimeUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/NetworkTimeUpdateService$2;->(Lcom/android/server/NetworkTimeUpdateService;)V +PLcom/android/server/NetworkTimeUpdateService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/NetworkTimeUpdateService$MyHandler;->(Lcom/android/server/NetworkTimeUpdateService;Landroid/os/Looper;)V +PLcom/android/server/NetworkTimeUpdateService$MyHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->(Lcom/android/server/NetworkTimeUpdateService;)V +PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->(Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;)V +PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V +PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;->(Landroid/os/Handler;I)V +PLcom/android/server/NetworkTimeUpdateService$SettingsObserver;->observe(Landroid/content/Context;)V +PLcom/android/server/NetworkTimeUpdateService;->-get1(Lcom/android/server/NetworkTimeUpdateService;)Landroid/os/Handler; +PLcom/android/server/NetworkTimeUpdateService;->-set0(Lcom/android/server/NetworkTimeUpdateService;Landroid/net/Network;)Landroid/net/Network; +PLcom/android/server/NetworkTimeUpdateService;->-set1(Lcom/android/server/NetworkTimeUpdateService;J)J +PLcom/android/server/NetworkTimeUpdateService;->-wrap0(Lcom/android/server/NetworkTimeUpdateService;I)V +PLcom/android/server/NetworkTimeUpdateService;->(Landroid/content/Context;)V +PLcom/android/server/NetworkTimeUpdateService;->isAutomaticTimeRequested()Z +PLcom/android/server/NetworkTimeUpdateService;->onPollNetworkTime(I)V +PLcom/android/server/NetworkTimeUpdateService;->onPollNetworkTimeUnderWakeLock(I)V +PLcom/android/server/NetworkTimeUpdateService;->registerForAlarms()V +PLcom/android/server/NetworkTimeUpdateService;->registerForTelephonyIntents()V +PLcom/android/server/NetworkTimeUpdateService;->resetAlarm(J)V +PLcom/android/server/NetworkTimeUpdateService;->systemRunning()V +PLcom/android/server/NsdService$DaemonConnection;->(Lcom/android/server/NsdService$NativeCallbackReceiver;)V +PLcom/android/server/NsdService$NativeCallbackReceiver;->(Lcom/android/server/NsdService;)V +PLcom/android/server/NsdService$NativeCallbackReceiver;->awaitConnection()V +PLcom/android/server/NsdService$NativeCallbackReceiver;->onDaemonConnected()V +PLcom/android/server/NsdService$NsdSettings$1;->(Landroid/content/ContentResolver;)V +PLcom/android/server/NsdService$NsdSettings$1;->isEnabled()Z +PLcom/android/server/NsdService$NsdSettings$1;->registerContentObserver(Landroid/net/Uri;Landroid/database/ContentObserver;)V +PLcom/android/server/NsdService$NsdSettings;->makeDefault(Landroid/content/Context;)Lcom/android/server/NsdService$NsdSettings; +PLcom/android/server/NsdService$NsdStateMachine$1;->(Lcom/android/server/NsdService$NsdStateMachine;Landroid/os/Handler;)V +PLcom/android/server/NsdService$NsdStateMachine$DefaultState;->(Lcom/android/server/NsdService$NsdStateMachine;)V +PLcom/android/server/NsdService$NsdStateMachine$DisabledState;->(Lcom/android/server/NsdService$NsdStateMachine;)V +PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->(Lcom/android/server/NsdService$NsdStateMachine;)V +PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->enter()V +PLcom/android/server/NsdService$NsdStateMachine;->(Lcom/android/server/NsdService;Ljava/lang/String;Landroid/os/Handler;)V +PLcom/android/server/NsdService$NsdStateMachine;->registerForNsdSetting()V +PLcom/android/server/NsdService;->-com_android_server_NsdService-mthref-0(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection; +PLcom/android/server/NsdService;->-get0(Lcom/android/server/NsdService;)Ljava/util/HashMap; +PLcom/android/server/NsdService;->-get4(Lcom/android/server/NsdService;)Lcom/android/server/NsdService$NsdSettings; +PLcom/android/server/NsdService;->-wrap15(Lcom/android/server/NsdService;Z)V +PLcom/android/server/NsdService;->-wrap2(Lcom/android/server/NsdService;)Z +PLcom/android/server/NsdService;->(Landroid/content/Context;Lcom/android/server/NsdService$NsdSettings;Landroid/os/Handler;Lcom/android/server/NsdService$DaemonConnectionSupplier;)V +PLcom/android/server/NsdService;->create(Landroid/content/Context;)Lcom/android/server/NsdService; +PLcom/android/server/NsdService;->isNsdEnabled()Z +PLcom/android/server/NsdService;->sendNsdStateChangeBroadcast(Z)V +PLcom/android/server/PersistentDataBlockService$1;->(Lcom/android/server/PersistentDataBlockService;)V +PLcom/android/server/PersistentDataBlockService$1;->getFlashLockState()I +PLcom/android/server/PersistentDataBlockService$1;->getMaximumDataBlockSize()J +PLcom/android/server/PersistentDataBlockService$1;->read()[B +PLcom/android/server/PersistentDataBlockService$1;->write([B)I +PLcom/android/server/PersistentDataBlockService$2;->(Lcom/android/server/PersistentDataBlockService;)V +PLcom/android/server/PersistentDataBlockService;->-get2(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/String; +PLcom/android/server/PersistentDataBlockService;->-get4(Lcom/android/server/PersistentDataBlockService;)Z +PLcom/android/server/PersistentDataBlockService;->-get5(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/Object; +PLcom/android/server/PersistentDataBlockService;->-wrap0(Lcom/android/server/PersistentDataBlockService;)Z +PLcom/android/server/PersistentDataBlockService;->-wrap11(Lcom/android/server/PersistentDataBlockService;I)V +PLcom/android/server/PersistentDataBlockService;->-wrap2(Lcom/android/server/PersistentDataBlockService;)Z +PLcom/android/server/PersistentDataBlockService;->-wrap3(Lcom/android/server/PersistentDataBlockService;Ljava/io/DataInputStream;)I +PLcom/android/server/PersistentDataBlockService;->-wrap5(Lcom/android/server/PersistentDataBlockService;)J +PLcom/android/server/PersistentDataBlockService;->-wrap9(Lcom/android/server/PersistentDataBlockService;)V +PLcom/android/server/PersistentDataBlockService;->(Landroid/content/Context;)V +PLcom/android/server/PersistentDataBlockService;->computeAndWriteDigestLocked()Z +PLcom/android/server/PersistentDataBlockService;->doGetMaximumDataBlockSize()J +PLcom/android/server/PersistentDataBlockService;->doGetOemUnlockEnabled()Z +PLcom/android/server/PersistentDataBlockService;->enforceChecksumValidity()Z +PLcom/android/server/PersistentDataBlockService;->enforceOemUnlockReadPermission()V +PLcom/android/server/PersistentDataBlockService;->enforceUid(I)V +PLcom/android/server/PersistentDataBlockService;->formatIfOemUnlockEnabled()V +PLcom/android/server/PersistentDataBlockService;->getAllowedUid(I)I +PLcom/android/server/PersistentDataBlockService;->getBlockDeviceSize()J +PLcom/android/server/PersistentDataBlockService;->getTotalDataSizeLocked(Ljava/io/DataInputStream;)I +PLcom/android/server/PersistentDataBlockService;->lambda$-com_android_server_PersistentDataBlockService_5033()V +PLcom/android/server/PersistentDataBlockService;->onBootPhase(I)V +PLcom/android/server/PersistentDataBlockService;->onStart()V +PLcom/android/server/PinnerService$1;->(Lcom/android/server/PinnerService;)V +PLcom/android/server/PinnerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/PinnerService$BinderService;->(Lcom/android/server/PinnerService;)V +PLcom/android/server/PinnerService$BinderService;->(Lcom/android/server/PinnerService;Lcom/android/server/PinnerService$BinderService;)V +PLcom/android/server/PinnerService$PinnedFile;->(JJLjava/lang/String;)V +PLcom/android/server/PinnerService$PinnerHandler;->(Lcom/android/server/PinnerService;Landroid/os/Looper;)V +PLcom/android/server/PinnerService$PinnerHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/PinnerService;->-wrap0(Lcom/android/server/PinnerService;I)V +PLcom/android/server/PinnerService;->-wrap1(Lcom/android/server/PinnerService;)V +PLcom/android/server/PinnerService;->(Landroid/content/Context;)V +PLcom/android/server/PinnerService;->getCameraInfo(I)Landroid/content/pm/ApplicationInfo; +PLcom/android/server/PinnerService;->handlePinCamera(I)V +PLcom/android/server/PinnerService;->handlePinOnStart()V +PLcom/android/server/PinnerService;->isResolverActivity(Landroid/content/pm/ActivityInfo;)Z +PLcom/android/server/PinnerService;->onStart()V +PLcom/android/server/PinnerService;->pinCamera(I)Z +PLcom/android/server/PinnerService;->pinFile(Ljava/lang/String;JJJ)Lcom/android/server/PinnerService$PinnedFile; +PLcom/android/server/PinnerService;->unpinCameraApp()V +PLcom/android/server/PinnerService;->unpinFile(Lcom/android/server/PinnerService$PinnedFile;)Z +PLcom/android/server/PinnerService;->update(Landroid/util/ArraySet;)V +PLcom/android/server/PruneInstantAppsJobService;->schedule(Landroid/content/Context;)V +PLcom/android/server/RandomBlock;->()V +PLcom/android/server/RandomBlock;->close(Ljava/io/Closeable;)V +PLcom/android/server/RandomBlock;->fromFile(Ljava/lang/String;)Lcom/android/server/RandomBlock; +PLcom/android/server/RandomBlock;->fromStream(Ljava/io/InputStream;)Lcom/android/server/RandomBlock; +PLcom/android/server/RandomBlock;->toDataOut(Ljava/io/DataOutput;)V +PLcom/android/server/RandomBlock;->toFile(Ljava/lang/String;Z)V +PLcom/android/server/RandomBlock;->truncateIfPossible(Ljava/io/RandomAccessFile;)V +PLcom/android/server/RecoverySystemService$BinderService;->checkAndWaitForUncryptService()Z +PLcom/android/server/RecoverySystemService$BinderService;->clearBcb()Z +PLcom/android/server/RecoverySystemService$BinderService;->connectService()Landroid/net/LocalSocket; +PLcom/android/server/RecoverySystemService$BinderService;->setupOrClearBcb(ZLjava/lang/String;)Z +PLcom/android/server/RecoverySystemService;->-get0(Lcom/android/server/RecoverySystemService;)Landroid/content/Context; +PLcom/android/server/RecoverySystemService;->-get1()Ljava/lang/Object; +PLcom/android/server/RescueParty;->executeRescueLevel(Landroid/content/Context;)V +PLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V +PLcom/android/server/SensorNotificationService;->(Landroid/content/Context;)V +PLcom/android/server/SensorNotificationService;->onBootPhase(I)V +PLcom/android/server/SensorNotificationService;->onLocationChanged(Landroid/location/Location;)V +PLcom/android/server/SensorNotificationService;->onStart()V +PLcom/android/server/SensorNotificationService;->useMockedLocation()Z +PLcom/android/server/SerialService;->(Landroid/content/Context;)V +PLcom/android/server/ServiceWatcher$1;->(Lcom/android/server/ServiceWatcher;)V +PLcom/android/server/ServiceWatcher$1;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z +PLcom/android/server/ServiceWatcher$2;->(Lcom/android/server/ServiceWatcher;)V +PLcom/android/server/ServiceWatcher$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/ServiceWatcher;->-get0(Lcom/android/server/ServiceWatcher;)Ljava/lang/String; +PLcom/android/server/ServiceWatcher;->-get1(Lcom/android/server/ServiceWatcher;)Ljava/lang/Object; +PLcom/android/server/ServiceWatcher;->-wrap0(Lcom/android/server/ServiceWatcher;Ljava/lang/String;Z)Z +PLcom/android/server/ServiceWatcher;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/Runnable;Landroid/os/Handler;)V +PLcom/android/server/ServiceWatcher;->bindToPackageLocked(Landroid/content/ComponentName;II)V +PLcom/android/server/ServiceWatcher;->getBestPackageName()Ljava/lang/String; +PLcom/android/server/ServiceWatcher;->getBinder()Landroid/os/IBinder; +PLcom/android/server/ServiceWatcher;->getSignatureSets(Landroid/content/Context;Ljava/util/List;)Ljava/util/ArrayList; +PLcom/android/server/ServiceWatcher;->isServiceMissing()Z +PLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;)Z +PLcom/android/server/ServiceWatcher;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/ServiceWatcher;->onServiceDisconnected(Landroid/content/ComponentName;)V +PLcom/android/server/ServiceWatcher;->start()Z +PLcom/android/server/ServiceWatcher;->switchUser(I)V +PLcom/android/server/ServiceWatcher;->unbindLocked()V +PLcom/android/server/ServiceWatcher;->unlockUser(I)V +PLcom/android/server/StorageManagerService$1;->(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService$Callbacks;->-wrap2(Lcom/android/server/StorageManagerService$Callbacks;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/StorageManagerService$Callbacks;->-wrap5(Lcom/android/server/StorageManagerService$Callbacks;Landroid/os/storage/VolumeInfo;II)V +PLcom/android/server/StorageManagerService$Callbacks;->(Landroid/os/Looper;)V +PLcom/android/server/StorageManagerService$Callbacks;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/StorageManagerService$Callbacks;->invokeCallback(Landroid/os/storage/IStorageEventListener;ILcom/android/internal/os/SomeArgs;)V +PLcom/android/server/StorageManagerService$Callbacks;->notifyStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/StorageManagerService$Callbacks;->notifyVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V +PLcom/android/server/StorageManagerService$Callbacks;->register(Landroid/os/storage/IStorageEventListener;)V +PLcom/android/server/StorageManagerService$DefaultContainerConnection;->(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/StorageManagerService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/StorageManagerService$Lifecycle;->onStart()V +PLcom/android/server/StorageManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/StorageManagerService$ObbActionHandler;->(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V +PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;)V +PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V +PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V +PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/StorageManagerService;->-get0(Lcom/android/server/StorageManagerService;)Lcom/android/server/NativeDaemonConnector; +PLcom/android/server/StorageManagerService;->-get2(Lcom/android/server/StorageManagerService;)Landroid/content/Context; +PLcom/android/server/StorageManagerService;->-wrap0(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)Z +PLcom/android/server/StorageManagerService;->-wrap10(Lcom/android/server/StorageManagerService;I)V +PLcom/android/server/StorageManagerService;->-wrap14(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService;->-wrap15(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService;->-wrap5(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService;->-wrap7(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService;->-wrap8(Lcom/android/server/StorageManagerService;)V +PLcom/android/server/StorageManagerService;->(Landroid/content/Context;)V +PLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V +PLcom/android/server/StorageManagerService;->addUserKeyAuth(II[B[B)V +PLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V +PLcom/android/server/StorageManagerService;->bootCompleted()V +PLcom/android/server/StorageManagerService;->changeEncryptionPassword(ILjava/lang/String;)I +PLcom/android/server/StorageManagerService;->clearPassword()V +PLcom/android/server/StorageManagerService;->copyLocaleFromMountService()V +PLcom/android/server/StorageManagerService;->encodeBytes([B)Lcom/android/server/NativeDaemonConnector$SensitiveArg; +PLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V +PLcom/android/server/StorageManagerService;->escapeNull(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/StorageManagerService;->fixateNewestUserKeyAuth(I)V +PLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String; +PLcom/android/server/StorageManagerService;->getDisks()[Landroid/os/storage/DiskInfo; +PLcom/android/server/StorageManagerService;->getField(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/StorageManagerService;->getPassword()Ljava/lang/String; +PLcom/android/server/StorageManagerService;->getSecureContainerList()[Ljava/lang/String; +PLcom/android/server/StorageManagerService;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord; +PLcom/android/server/StorageManagerService;->handleDaemonConnected()V +PLcom/android/server/StorageManagerService;->handleSystemReady()V +PLcom/android/server/StorageManagerService;->initIfReadyAndConnected()V +PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z +PLcom/android/server/StorageManagerService;->isReady()Z +PLcom/android/server/StorageManagerService;->killMediaProvider(Ljava/util/List;)V +PLcom/android/server/StorageManagerService;->lastMaintenance()J +PLcom/android/server/StorageManagerService;->onCheckHoldWakeLock(I)Z +PLcom/android/server/StorageManagerService;->onDaemonConnected()V +PLcom/android/server/StorageManagerService;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z +PLcom/android/server/StorageManagerService;->onEventLocked(ILjava/lang/String;[Ljava/lang/String;)Z +PLcom/android/server/StorageManagerService;->onUnlockUser(I)V +PLcom/android/server/StorageManagerService;->onVolumeCreatedLocked(Landroid/os/storage/VolumeInfo;)V +PLcom/android/server/StorageManagerService;->onVolumeStateChangedLocked(Landroid/os/storage/VolumeInfo;II)V +PLcom/android/server/StorageManagerService;->prepareUserStorage(Ljava/lang/String;III)V +PLcom/android/server/StorageManagerService;->readSettingsLocked()V +PLcom/android/server/StorageManagerService;->registerListener(Landroid/os/storage/IStorageEventListener;)V +PLcom/android/server/StorageManagerService;->resetIfReadyAndConnected()V +PLcom/android/server/StorageManagerService;->start()V +PLcom/android/server/StorageManagerService;->systemReady()V +PLcom/android/server/StorageManagerService;->unlockUserKey(II[B[B)V +PLcom/android/server/StorageManagerService;->waitForAsecScan()V +PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;)V +PLcom/android/server/StorageManagerService;->waitForLatch(Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;J)V +PLcom/android/server/StorageManagerService;->waitForReady()V +PLcom/android/server/StorageManagerService;->warnOnNotMounted()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_29579()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_34627()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_38931()V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_75718(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/NetworkScoreService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/ConnectivityService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/CommonTimeManagementService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V +PLcom/android/server/SystemServer;->lambda$-com_android_server_SystemServer_76623()V +PLcom/android/server/SystemServer;->startCoreServices()V +PLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/SystemServerInitThreadPool;->shutdown()V +PLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder; +PLcom/android/server/SystemService;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object; +PLcom/android/server/SystemService;->getManager()Lcom/android/server/SystemServiceManager; +PLcom/android/server/SystemService;->isSafeMode()Z +PLcom/android/server/SystemService;->onStartUser(I)V +PLcom/android/server/SystemService;->onUnlockUser(I)V +PLcom/android/server/SystemServiceManager;->isBootCompleted()Z +PLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z +PLcom/android/server/SystemServiceManager;->isSafeMode()Z +PLcom/android/server/SystemServiceManager;->setSafeMode(Z)V +PLcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService; +PLcom/android/server/TelephonyRegistry$1;->(Lcom/android/server/TelephonyRegistry;)V +PLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/TelephonyRegistry$2;->(Lcom/android/server/TelephonyRegistry;)V +PLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/TelephonyRegistry$Record;->()V +PLcom/android/server/TelephonyRegistry$Record;->(Lcom/android/server/TelephonyRegistry$Record;)V +PLcom/android/server/TelephonyRegistry$Record;->matchOnSubscriptionsChangedListener()Z +PLcom/android/server/TelephonyRegistry;->-get0(Lcom/android/server/TelephonyRegistry;)[Landroid/os/Bundle; +PLcom/android/server/TelephonyRegistry;->-get3(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler; +PLcom/android/server/TelephonyRegistry;->(Landroid/content/Context;)V +PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V +PLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V +PLcom/android/server/TelephonyRegistry;->canReadPhoneState(Ljava/lang/String;)Z +PLcom/android/server/TelephonyRegistry;->checkListenerPermission(I)V +PLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z +PLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z +PLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V +PLcom/android/server/TelephonyRegistry;->idMatch(III)Z +PLcom/android/server/TelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V +PLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V +PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V +PLcom/android/server/TelephonyRegistry;->notifyDataActivityForSubscriber(II)V +PLcom/android/server/TelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V +PLcom/android/server/TelephonyRegistry;->notifyOemHookRawEventForSubscriber(I[B)V +PLcom/android/server/TelephonyRegistry;->notifyOtaspChanged(I)V +PLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V +PLcom/android/server/TelephonyRegistry;->notifySubscriptionInfoChanged()V +PLcom/android/server/TelephonyRegistry;->systemRunning()V +PLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z +PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;->(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V +PLcom/android/server/TextServicesManagerService$InternalDeathRecipients;->(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->-get0(Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->(Lcom/android/server/TextServicesManagerService;Ljava/lang/String;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/TextServicesManagerService$InternalServiceConnection;->onServiceConnectedInnerLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/TextServicesManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/TextServicesManagerService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/TextServicesManagerService$Lifecycle;->onStart()V +PLcom/android/server/TextServicesManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/TextServicesManagerService$SessionRequest;->(ILjava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->-get1(Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/server/TextServicesManagerService$InternalServiceConnection; +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$InternalServiceConnection;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->cleanLocked()V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->getISpellCheckerSessionOrQueueLocked(Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onServiceConnectedLocked(Lcom/android/internal/textservice/ISpellCheckerService;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;Lcom/android/server/TextServicesManagerService$SessionRequest;)V +PLcom/android/server/TextServicesManagerService$SpellCheckerBindGroup;->removeListener(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V +PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;->(Lcom/android/server/TextServicesManagerService;)V +PLcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;->(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver;)V +PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->(Lcom/android/server/TextServicesManagerService;)V +PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->(Lcom/android/server/TextServicesManagerService;Lcom/android/server/TextServicesManagerService$TextServicesMonitor;)V +PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->isChangingPackagesOfCurrentUser()Z +PLcom/android/server/TextServicesManagerService$TextServicesMonitor;->onSomePackagesChanged()V +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->(Landroid/content/ContentResolver;IZ)V +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getBoolean(Ljava/lang/String;Z)Z +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getCurrentUserId()I +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getInt(Ljava/lang/String;I)I +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellChecker()Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getSelectedSpellCheckerSubtype(I)I +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->isSpellCheckerEnabled()Z +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->setCurrentProfileIds([I)V +PLcom/android/server/TextServicesManagerService$TextServicesSettings;->switchCurrentUser(IZ)V +PLcom/android/server/TextServicesManagerService;->-get1(Lcom/android/server/TextServicesManagerService;)Landroid/content/Context; +PLcom/android/server/TextServicesManagerService;->-get2(Lcom/android/server/TextServicesManagerService;)Ljava/lang/Object; +PLcom/android/server/TextServicesManagerService;->-get3(Lcom/android/server/TextServicesManagerService;)Lcom/android/server/TextServicesManagerService$TextServicesSettings; +PLcom/android/server/TextServicesManagerService;->-get4(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap; +PLcom/android/server/TextServicesManagerService;->-get5(Lcom/android/server/TextServicesManagerService;)Ljava/util/ArrayList; +PLcom/android/server/TextServicesManagerService;->-get6(Lcom/android/server/TextServicesManagerService;)Ljava/util/HashMap; +PLcom/android/server/TextServicesManagerService;->-wrap1(Landroid/content/Context;Ljava/util/ArrayList;Ljava/util/HashMap;Lcom/android/server/TextServicesManagerService$TextServicesSettings;)V +PLcom/android/server/TextServicesManagerService;->(Landroid/content/Context;)V +PLcom/android/server/TextServicesManagerService;->bindCurrentSpellCheckerService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z +PLcom/android/server/TextServicesManagerService;->findAvailSpellCheckerLocked(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo; +PLcom/android/server/TextServicesManagerService;->finishSpellCheckerService(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V +PLcom/android/server/TextServicesManagerService;->getCurrentSpellChecker(Ljava/lang/String;)Landroid/view/textservice/SpellCheckerInfo; +PLcom/android/server/TextServicesManagerService;->getCurrentSpellCheckerWithoutVerification()Landroid/view/textservice/SpellCheckerInfo; +PLcom/android/server/TextServicesManagerService;->getSpellCheckerService(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V +PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabled()Z +PLcom/android/server/TextServicesManagerService;->isSpellCheckerEnabledLocked()Z +PLcom/android/server/TextServicesManagerService;->onUnlockUser(I)V +PLcom/android/server/TextServicesManagerService;->resetInternalState(I)V +PLcom/android/server/TextServicesManagerService;->startSpellCheckerServiceInnerLocked(Landroid/view/textservice/SpellCheckerInfo;)Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup; +PLcom/android/server/TextServicesManagerService;->systemRunning()V +PLcom/android/server/TextServicesManagerService;->unbindServiceLocked()V +PLcom/android/server/TextServicesManagerService;->updateCurrentProfileIds()V +PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Lcom/android/server/ThreadPriorityBooster$PriorityState; +PLcom/android/server/ThreadPriorityBooster$1;->initialValue()Ljava/lang/Object; +PLcom/android/server/ThreadPriorityBooster$PriorityState;->()V +PLcom/android/server/ThreadPriorityBooster$PriorityState;->(Lcom/android/server/ThreadPriorityBooster$PriorityState;)V +PLcom/android/server/UiModeManagerService$1;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$2;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$3;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$4;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$5;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$6;->(Lcom/android/server/UiModeManagerService;)V +PLcom/android/server/UiModeManagerService$6;->getCurrentModeType()I +PLcom/android/server/UiModeManagerService;->-set0(Lcom/android/server/UiModeManagerService;Z)Z +PLcom/android/server/UiModeManagerService;->(Landroid/content/Context;)V +PLcom/android/server/UiModeManagerService;->lambda$-com_android_server_UiModeManagerService_9177()V +PLcom/android/server/UiModeManagerService;->onBootPhase(I)V +PLcom/android/server/UiModeManagerService;->onStart()V +PLcom/android/server/UiModeManagerService;->registerVrStateListener()V +PLcom/android/server/UiModeManagerService;->sendConfigurationLocked()V +PLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked()V +PLcom/android/server/UpdateLockService$LockWatcher;->(Lcom/android/server/UpdateLockService;Landroid/os/Handler;Ljava/lang/String;)V +PLcom/android/server/UpdateLockService$LockWatcher;->acquired()V +PLcom/android/server/UpdateLockService$LockWatcher;->released()V +PLcom/android/server/UpdateLockService;->(Landroid/content/Context;)V +PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V +PLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V +PLcom/android/server/VibratorService$1;->(Lcom/android/server/VibratorService;)V +PLcom/android/server/VibratorService$1;->run()V +PLcom/android/server/VibratorService$2;->(Lcom/android/server/VibratorService;)V +PLcom/android/server/VibratorService$3;->(Lcom/android/server/VibratorService;)V +PLcom/android/server/VibratorService$4;->(Lcom/android/server/VibratorService;)V +PLcom/android/server/VibratorService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/VibratorService$SettingsObserver;->(Lcom/android/server/VibratorService;Landroid/os/Handler;)V +PLcom/android/server/VibratorService$Vibration;->-get1(Lcom/android/server/VibratorService$Vibration;)Ljava/lang/String; +PLcom/android/server/VibratorService$Vibration;->-get2(Lcom/android/server/VibratorService$Vibration;)J +PLcom/android/server/VibratorService$Vibration;->-get5(Lcom/android/server/VibratorService$Vibration;)I +PLcom/android/server/VibratorService$Vibration;->(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;)V +PLcom/android/server/VibratorService$Vibration;->(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;Lcom/android/server/VibratorService$Vibration;)V +PLcom/android/server/VibratorService$VibrationInfo;->(JLandroid/os/VibrationEffect;IILjava/lang/String;)V +PLcom/android/server/VibratorService;->-wrap3(Lcom/android/server/VibratorService;)V +PLcom/android/server/VibratorService;->(Landroid/content/Context;)V +PLcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V +PLcom/android/server/VibratorService;->createEffect([J)Landroid/os/VibrationEffect; +PLcom/android/server/VibratorService;->doVibratorExists()Z +PLcom/android/server/VibratorService;->getLongIntArray(Landroid/content/res/Resources;I)[J +PLcom/android/server/VibratorService;->hasVibrator()Z +PLcom/android/server/VibratorService;->isAllowedToVibrate(Lcom/android/server/VibratorService$Vibration;)Z +PLcom/android/server/VibratorService;->noteVibratorOffLocked()V +PLcom/android/server/VibratorService;->noteVibratorOnLocked(IJ)V +PLcom/android/server/VibratorService;->onVibrationFinished()V +PLcom/android/server/VibratorService;->systemReady()V +PLcom/android/server/VibratorService;->updateInputDeviceVibratorsLocked()Z +PLcom/android/server/VibratorService;->updateLowPowerModeLocked()Z +PLcom/android/server/VibratorService;->updateVibrators()V +PLcom/android/server/VibratorService;->verifyVibrationEffect(Landroid/os/VibrationEffect;)Z +PLcom/android/server/Watchdog$RebootRequestReceiver;->(Lcom/android/server/Watchdog;)V +PLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V +PLcom/android/server/WiredAccessoryManager$1;->(Lcom/android/server/WiredAccessoryManager;Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V +PLcom/android/server/WiredAccessoryManager$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->(Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;Ljava/lang/String;III)V +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->checkSwitchExists()Z +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->getDevPath()Ljava/lang/String; +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->getSwitchStatePath()Ljava/lang/String; +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;->(Lcom/android/server/WiredAccessoryManager;)V +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;->init()V +PLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;->makeObservedUEventList()Ljava/util/List; +PLcom/android/server/WiredAccessoryManager;->-get0()Ljava/lang/String; +PLcom/android/server/WiredAccessoryManager;->-get2(Lcom/android/server/WiredAccessoryManager;)Ljava/lang/Object; +PLcom/android/server/WiredAccessoryManager;->-get3(Lcom/android/server/WiredAccessoryManager;)Z +PLcom/android/server/WiredAccessoryManager;->-get4(Lcom/android/server/WiredAccessoryManager;)Landroid/os/PowerManager$WakeLock; +PLcom/android/server/WiredAccessoryManager;->-wrap0(Lcom/android/server/WiredAccessoryManager;)V +PLcom/android/server/WiredAccessoryManager;->(Landroid/content/Context;Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/WiredAccessoryManager;->notifyWiredAccessoryChanged(JII)V +PLcom/android/server/WiredAccessoryManager;->onSystemReady()V +PLcom/android/server/WiredAccessoryManager;->switchCodeToString(II)Ljava/lang/String; +PLcom/android/server/WiredAccessoryManager;->systemReady()V +PLcom/android/server/WiredAccessoryManager;->updateLocked(Ljava/lang/String;I)V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw$1;->$m$0()V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw$1;->(ILjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw$1;->run()V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->$m$1(Ljava/lang/Object;)V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->$m$2(Ljava/lang/Object;)V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->(BI)V +PLcom/android/server/accessibility/-$Lambda$kXhldx_ZxidxR4suyNIbZ545MMw;->accept(Ljava/lang/Object;)V +PLcom/android/server/accessibility/AccessibilityManagerService$1;->(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/accessibility/AccessibilityManagerService$1;->onSomePackagesChanged()V +PLcom/android/server/accessibility/AccessibilityManagerService$2;->(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->(Lcom/android/server/accessibility/AccessibilityManagerService;ILandroid/view/accessibility/IAccessibilityInteractionConnection;I)V +PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->linkToDeath()V +PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityConnectionWrapper;->unlinkToDeath()V +PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V +PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->clearAccessibilityFocusNotLocked(I)V +PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked(I)Landroid/view/accessibility/AccessibilityNodeInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->getUserClientsForId(I)Landroid/os/RemoteCallbackList; +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->lambda$-com_android_server_accessibility_AccessibilityManagerService$MainHandler_113532(ILandroid/view/accessibility/IAccessibilityManagerClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;)V +PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap0(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)Landroid/view/WindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;I)I +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->-wrap5(Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canCaptureFingerprintGestures(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->clearWindowsLocked()V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findWindowInfoById(I)Landroid/view/WindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getFocusedWindowId()I +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->hasPermission(Ljava/lang/String;)Z +PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->setAccessibilityFocusedWindowLocked(I)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$1;->(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;->(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$2;->run()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service$InvocationHandler;->(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Landroid/os/Looper;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->(Lcom/android/server/accessibility/AccessibilityManagerService;ILandroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->bindLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->binderDied()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->canRetrieveInteractiveWindowsLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo; +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isCapturingFingerprintGestures()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->isConnectedLocked()Z +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onAdded()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onRemoved()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resetLocked()V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->resolveAccessibilityWindowIdForFindFocusLocked(II)I +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +PLcom/android/server/accessibility/AccessibilityManagerService$Service;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState$1;->(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/os/IBinder$DeathRecipient; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Lcom/android/server/accessibility/AccessibilityManagerService$Service; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-get2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Landroid/accessibilityservice/IAccessibilityServiceClient; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set0(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)I +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set1(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Lcom/android/server/accessibility/AccessibilityManagerService$Service; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set2(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/accessibilityservice/IAccessibilityServiceClient;)Landroid/accessibilityservice/IAccessibilityServiceClient; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->-set3(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/os/IBinder;)Landroid/os/IBinder; +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->(Lcom/android/server/accessibility/AccessibilityManagerService;I)V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->destroyUiAutomationService()V +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getClientState()I +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isUiAutomationSuppressingOtherServices()Z +PLcom/android/server/accessibility/AccessibilityManagerService$UserState;->onSwitchToAnotherUser()V +PLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-get0()I +PLcom/android/server/accessibility/AccessibilityManagerService;->-get1(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/Context; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get10(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get13(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/PowerManager; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get19(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/view/WindowManagerInternal; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get21()Landroid/content/ComponentName; +PLcom/android/server/accessibility/AccessibilityManagerService;->-get22()I +PLcom/android/server/accessibility/AccessibilityManagerService;->-get4(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/os/RemoteCallbackList; +PLcom/android/server/accessibility/AccessibilityManagerService;->-set0(I)I +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap11(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge; +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap13(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState; +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap14(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/KeyEventDispatcher; +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap16(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap18(Lcom/android/server/accessibility/AccessibilityManagerService;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap20(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap23(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap25(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap28(Lcom/android/server/accessibility/AccessibilityManagerService;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap29(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap30(Lcom/android/server/accessibility/AccessibilityManagerService;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap33(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap34(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->-wrap4(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->(Landroid/content/Context;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->addServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Ljava/util/function/Consumer;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->canRequestAndRequestsTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->ensureWindowsAvailableTimed()V +PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Ljava/util/List; +PLcom/android/server/accessibility/AccessibilityManagerService;->getInteractionBridge()Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge; +PLcom/android/server/accessibility/AccessibilityManagerService;->getKeyEventDispatcher()Lcom/android/server/accessibility/KeyEventDispatcher; +PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationController()Lcom/android/server/accessibility/MagnificationController; +PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61763(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$-com_android_server_accessibility_AccessibilityManagerService_61817(ILandroid/view/accessibility/IAccessibilityManagerClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChanged(Z)V +PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChangedLocked(Z)V +PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromSettingLocked(Ljava/lang/String;ILjava/util/Set;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromStringLocked(Ljava/lang/String;Ljava/util/Set;Z)V +PLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V +PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->removeServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$Service;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChange(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->unbindAllServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V +PLcom/android/server/accessibility/AccessibilityManagerService;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSetting(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityFocusBehaviorLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayDaltonizerLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateDisplayInversionLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateSoftKeyboardShowModeLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V +PLcom/android/server/accessibility/AccessibilityManagerService;->userHasListeningMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z +PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyDaltonizerSetting(Landroid/content/Context;I)V +PLcom/android/server/accessibility/DisplayAdjustmentUtils;->applyInversionSetting(Landroid/content/Context;I)V +PLcom/android/server/accessibility/KeyEventDispatcher;->(Landroid/os/Handler;ILjava/lang/Object;Landroid/os/PowerManager;)V +PLcom/android/server/accessibility/KeyEventDispatcher;->flush(Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;)V +PLcom/android/server/accessibility/MagnificationController$1;->(Lcom/android/server/accessibility/MagnificationController;)V +PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;->(Landroid/content/Context;Lcom/android/server/accessibility/MagnificationController;)V +PLcom/android/server/accessibility/MagnificationController$SettingsBridge;->(Landroid/content/ContentResolver;)V +PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;->(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;)V +PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;->(Landroid/content/Context;Ljava/lang/Object;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;)V +PLcom/android/server/accessibility/MagnificationController;->(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V +PLcom/android/server/accessibility/MagnificationController;->(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;Landroid/os/Handler;Landroid/view/WindowManagerInternal;Landroid/animation/ValueAnimator;Lcom/android/server/accessibility/MagnificationController$SettingsBridge;)V +PLcom/android/server/accessibility/MagnificationController;->getIdOfLastServiceToMagnify()I +PLcom/android/server/accessibility/MagnificationController;->isMagnifying()Z +PLcom/android/server/accessibility/MagnificationController;->setUserId(I)V +PLcom/android/server/accessibility/MagnificationController;->unregister()V +PLcom/android/server/accessibility/MagnificationController;->unregisterInternalLocked()V +PLcom/android/server/accounts/-$Lambda$JwXVQhqSYlVkCeKB5Nx7U6RsZlU;->(Ljava/lang/Object;)V +PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->()V +PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->(Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;)V +PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/accounts/AuthenticatorDescription; +PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object; +PLcom/android/server/accounts/AccountAuthenticatorCache;->(Landroid/content/Context;)V +PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object; +PLcom/android/server/accounts/AccountManagerService$1;->(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/accounts/AccountManagerService$2;->(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$3;->(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$3;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/accounts/AccountManagerService$4;->(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$8;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService$8;->run()V +PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->(Lcom/android/server/accounts/AccountManagerService;)V +PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;)V +PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V +PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V +PLcom/android/server/accounts/AccountManagerService$Injector;->(Landroid/content/Context;)V +PLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V +PLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache; +PLcom/android/server/accounts/AccountManagerService$Injector;->getCeDatabaseName(I)Ljava/lang/String; +PLcom/android/server/accounts/AccountManagerService$Injector;->getContext()Landroid/content/Context; +PLcom/android/server/accounts/AccountManagerService$Injector;->getDeDatabaseName(I)Ljava/lang/String; +PLcom/android/server/accounts/AccountManagerService$Injector;->getMessageHandlerLooper()Landroid/os/Looper; +PLcom/android/server/accounts/AccountManagerService$Injector;->getNotificationManager()Landroid/app/INotificationManager; +PLcom/android/server/accounts/AccountManagerService$Injector;->getPreNDatabaseName(I)Ljava/lang/String; +PLcom/android/server/accounts/AccountManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onStart()V +PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/accounts/AccountManagerService$MessageHandler;->(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V +PLcom/android/server/accounts/AccountManagerService$NotificationId;->-get0(Lcom/android/server/accounts/AccountManagerService$NotificationId;)I +PLcom/android/server/accounts/AccountManagerService$NotificationId;->(Ljava/lang/String;I)V +PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->run()V +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Lcom/android/server/accounts/TokenCache; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get2(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get4(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-get6(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set0(Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)I +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-set1(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/database/sqlite/SQLiteStatement;)Landroid/database/sqlite/SQLiteStatement; +PLcom/android/server/accounts/AccountManagerService$UserAccounts;->(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V +PLcom/android/server/accounts/AccountManagerService;->-get1(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList; +PLcom/android/server/accounts/AccountManagerService;->-get2(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache; +PLcom/android/server/accounts/AccountManagerService;->-wrap11(Lcom/android/server/accounts/AccountManagerService;IZ)V +PLcom/android/server/accounts/AccountManagerService;->-wrap13(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V +PLcom/android/server/accounts/AccountManagerService;->-wrap21(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V +PLcom/android/server/accounts/AccountManagerService;->-wrap9(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId; +PLcom/android/server/accounts/AccountManagerService;->(Lcom/android/server/accounts/AccountManagerService$Injector;)V +PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(IZ)V +PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;ILjava/lang/String;Z)V +PLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;IZ)V +PLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V +PLcom/android/server/accounts/AccountManagerService;->checkGetAccountsPermission(Ljava/lang/String;II)Z +PLcom/android/server/accounts/AccountManagerService;->checkReadAccountsPermitted(ILjava/lang/String;ILjava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->checkReadContactsPermission(Ljava/lang/String;II)Z +PLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->dumpUser(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V +PLcom/android/server/accounts/AccountManagerService;->getAccounts([I)[Landroid/accounts/AccountAndUser; +PLcom/android/server/accounts/AccountManagerService;->getAllAccounts()[Landroid/accounts/AccountAndUser; +PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap; +PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription; +PLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String; +PLcom/android/server/accounts/AccountManagerService;->getRunningAccounts()[Landroid/accounts/AccountAndUser; +PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService; +PLcom/android/server/accounts/AccountManagerService;->hasExplicitlyGrantedPermission(Landroid/accounts/Account;Ljava/lang/String;I)Z +PLcom/android/server/accounts/AccountManagerService;->initializeDebugDbSizeAndCompileSqlStatementForLogging(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; +PLcom/android/server/accounts/AccountManagerService;->isAccountVisibleToCaller(Ljava/lang/String;IILjava/lang/String;)Z +PLcom/android/server/accounts/AccountManagerService;->isCrossUser(II)Z +PLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V +PLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V +PLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String; +PLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/accounts/AccountManagerService;->saveCachedToken(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V +PLcom/android/server/accounts/AccountManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V +PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V +PLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V +PLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->(Landroid/content/Context;Ljava/lang/String;)V +PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper; +PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-set0(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)Z +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->(Landroid/content/Context;ILjava/lang/String;)V +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)V +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase; +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase; +PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V +PLcom/android/server/accounts/AccountsDb;->(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Landroid/content/Context;Ljava/io/File;)V +PLcom/android/server/accounts/AccountsDb;->attachCeDatabase(Ljava/io/File;)V +PLcom/android/server/accounts/AccountsDb;->beginTransaction()V +PLcom/android/server/accounts/AccountsDb;->calculateDebugTableInsertionPoint()I +PLcom/android/server/accounts/AccountsDb;->compileSqlStatementForLogging()Landroid/database/sqlite/SQLiteStatement; +PLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb; +PLcom/android/server/accounts/AccountsDb;->deleteAuthToken(Ljava/lang/String;)Z +PLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z +PLcom/android/server/accounts/AccountsDb;->dumpDeAccountsTable(Ljava/io/PrintWriter;)V +PLcom/android/server/accounts/AccountsDb;->endTransaction()V +PLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map; +PLcom/android/server/accounts/AccountsDb;->findAllUidGrants()Ljava/util/List; +PLcom/android/server/accounts/AccountsDb;->findAllVisibilityValues()Ljava/util/Map; +PLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/accounts/Account;)Ljava/util/Map; +PLcom/android/server/accounts/AccountsDb;->findAuthtokenForAllAccounts(Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; +PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List; +PLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J +PLcom/android/server/accounts/AccountsDb;->findMatchingGrantsCountAnyToken(ILandroid/accounts/Account;)J +PLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map; +PLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J +PLcom/android/server/accounts/AccountsDb;->insertExtra(JLjava/lang/String;Ljava/lang/String;)J +PLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V +PLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z +PLcom/android/server/accounts/TokenCache$Key;->(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)V +PLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z +PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->(Lcom/android/server/accounts/TokenCache$TokenLruCache;)V +PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->add(Lcom/android/server/accounts/TokenCache$Key;)V +PLcom/android/server/accounts/TokenCache$TokenLruCache;->()V +PLcom/android/server/accounts/TokenCache$TokenLruCache;->evict(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/accounts/TokenCache$TokenLruCache;->putToken(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)V +PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)I +PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/accounts/TokenCache$Value;->(Ljava/lang/String;J)V +PLcom/android/server/accounts/TokenCache;->()V +PLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V +PLcom/android/server/accounts/TokenCache;->remove(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/am/-$Lambda$-Oweh9FamEB8lkqsrsDtt1mh9YE;->$m$0()V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$10(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$11(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$12(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$13(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$8(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->$m$9(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/-$Lambda$njIALZ9XLXuT-vhmazyQkVX7Z0U;->(B)V +PLcom/android/server/am/ActiveInstrumentation;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActiveInstrumentation;->removeProcess(Lcom/android/server/am/ProcessRecord;)V +PLcom/android/server/am/ActiveServices$ActiveForegroundApp;->()V +PLcom/android/server/am/ActiveServices$ServiceMap;->(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V +PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V +PLcom/android/server/am/ActiveServices;->-get0()Ljava/lang/String; +PLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V +PLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z +PLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V +PLcom/android/server/am/ActiveServices;->getServicesLocked(I)Landroid/util/ArrayMap; +PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V +PLcom/android/server/am/ActiveServices;->serviceProcessGoneLocked(Lcom/android/server/am/ServiceRecord;)V +PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V +PLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;I)V +PLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V +PLcom/android/server/am/ActiveServices;->updateWhitelistManagerLocked(Lcom/android/server/am/ProcessRecord;)V +PLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V +PLcom/android/server/am/ActivityManagerConstants;->updateConstants()V +PLcom/android/server/am/ActivityManagerService$10;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$10;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/ActivityManagerService$11;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService$18;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$18;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/ActivityManagerService$19;->(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/StringBuilder;Landroid/os/DropBoxManager;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService$19;->run()V +PLcom/android/server/am/ActivityManagerService$20;->(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/os/DropBoxManager;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService$21;->(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V +PLcom/android/server/am/ActivityManagerService$21;->run()V +PLcom/android/server/am/ActivityManagerService$22;->(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Landroid/os/DropBoxManager;)V +PLcom/android/server/am/ActivityManagerService$22;->run()V +PLcom/android/server/am/ActivityManagerService$24;->()V +PLcom/android/server/am/ActivityManagerService$28;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$28;->run()V +PLcom/android/server/am/ActivityManagerService$8;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$9;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->(Lcom/android/server/am/ActivityManagerService;II)V +PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->checkCaller()V +PLcom/android/server/am/ActivityManagerService$AppTaskImpl;->setExcludeFromRecents(Z)V +PLcom/android/server/am/ActivityManagerService$CpuBinder;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$DbBinder;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$FontScaleSettingObserver;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$GraphicsBinder;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$ImportanceToken;->(Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I +PLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z +PLcom/android/server/am/ActivityManagerService$LocalService;->notifyAppTransitionCancelled()V +PLcom/android/server/am/ActivityManagerService$LocalService;->notifyDockedStackMinimizedChanged(Z)V +PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V +PLcom/android/server/am/ActivityManagerService$LocalService;->notifyKeyguardTrustedChanged()V +PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleWhitelist([I)V +PLcom/android/server/am/ActivityManagerService$LocalService;->setFocusedActivity(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V +PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V +PLcom/android/server/am/ActivityManagerService$LocalService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I +PLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempWhitelist([IIZ)V +PLcom/android/server/am/ActivityManagerService$MemBinder;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$PendingAssistExtras;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;Landroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;I)V +PLcom/android/server/am/ActivityManagerService$PendingTempWhitelist;->(IJLjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService$PermissionController;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z +PLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService$ProcessChangeItem;->()V +PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V +PLcom/android/server/am/ActivityManagerService$UidObserverRegistration;->(ILjava/lang/String;II)V +PLcom/android/server/am/ActivityManagerService;->-get0()Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService;->-get2(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/KeyguardController; +PLcom/android/server/am/ActivityManagerService;->-get6(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/VrController; +PLcom/android/server/am/ActivityManagerService;->-set0(Lcom/android/server/am/ActivityManagerService;Z)Z +PLcom/android/server/am/ActivityManagerService;->-wrap0(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo; +PLcom/android/server/am/ActivityManagerService;->-wrap3(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/ActivityManagerService;->-wrap5(Lcom/android/server/am/ActivityManagerService;I)V +PLcom/android/server/am/ActivityManagerService;->-wrap6(Lcom/android/server/am/ActivityManagerService;Z)V +PLcom/android/server/am/ActivityManagerService;->-wrap9(Lcom/android/server/am/ActivityManagerService;I)V +PLcom/android/server/am/ActivityManagerService;->acquireSleepToken(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken; +PLcom/android/server/am/ActivityManagerService;->activityDestroyed(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->activityRelaunched(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->activitySlept(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;)Lcom/android/server/am/ProcessRecord; +PLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V +PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;)V +PLcom/android/server/am/ActivityManagerService;->applyUpdateVrModeLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V +PLcom/android/server/am/ActivityManagerService;->batteryPowerChanged(Z)V +PLcom/android/server/am/ActivityManagerService;->batterySendBroadcast(Landroid/content/Intent;)V +PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V +PLcom/android/server/am/ActivityManagerService;->buildAssistBundleLocked(Lcom/android/server/am/ActivityManagerService$PendingAssistExtras;Landroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->canClearIdentity(III)Z +PLcom/android/server/am/ActivityManagerService;->cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V +PLcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IIIILjava/lang/String;)Z +PLcom/android/server/am/ActivityManagerService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z +PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I +PLcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Lcom/android/server/am/ActivityManagerService$GrantUri;II)Z +PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;IZ[Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageTasksLocked(Ljava/lang/String;Ljava/util/Set;I)V +PLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->closeSystemDialogsLocked(Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V +PLcom/android/server/am/ActivityManagerService;->dumpHeap(Ljava/lang/String;IZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z +PLcom/android/server/am/ActivityManagerService;->dumpHeapFinished(Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->enableScreenAfterBoot()V +PLcom/android/server/am/ActivityManagerService;->enqueueAssistContext(ILandroid/content/Intent;Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZILandroid/os/Bundle;JI)Lcom/android/server/am/ActivityManagerService$PendingAssistExtras; +PLcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord; +PLcom/android/server/am/ActivityManagerService;->finishBooting()V +PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V +PLcom/android/server/am/ActivityManagerService;->finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->finishRunningVoiceLocked()V +PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->getActivityDisplayId(Landroid/os/IBinder;)I +PLcom/android/server/am/ActivityManagerService;->getActivityStackId(Landroid/os/IBinder;)I +PLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo; +PLcom/android/server/am/ActivityManagerService;->getAppOpsService()Lcom/android/internal/app/IAppOpsService; +PLcom/android/server/am/ActivityManagerService;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName; +PLcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Ljava/util/HashMap; +PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration; +PLcom/android/server/am/ActivityManagerService;->getContentProviderExternal(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/app/ContentProviderHolder; +PLcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/ContentProviderHolder; +PLcom/android/server/am/ActivityManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo; +PLcom/android/server/am/ActivityManagerService;->getHomeIntent()Landroid/content/Intent; +PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ActivityRecord;)J +PLcom/android/server/am/ActivityManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/am/ProcessRecord;)J +PLcom/android/server/am/ActivityManagerService;->getKsmInfo()[J +PLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V +PLcom/android/server/am/ActivityManagerService;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService;->getRequestedOrientation(Landroid/os/IBinder;)I +PLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I +PLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List; +PLcom/android/server/am/ActivityManagerService;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; +PLcom/android/server/am/ActivityManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I +PLcom/android/server/am/ActivityManagerService;->getUidFromIntent(Landroid/content/Intent;)I +PLcom/android/server/am/ActivityManagerService;->getUidState(I)I +PLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I +PLcom/android/server/am/ActivityManagerService;->grantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/am/UriPermissionOwner;I)V +PLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;)Z +PLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord; +PLcom/android/server/am/ActivityManagerService;->installEncryptionUnawareProviders(I)V +PLcom/android/server/am/ActivityManagerService;->installSystemProviders()V +PLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z +PLcom/android/server/am/ActivityManagerService;->isInLockTaskMode()Z +PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Landroid/os/IBinder;)Z +PLcom/android/server/am/ActivityManagerService;->isInPictureInPictureMode(Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityManagerService;->isKeyguardLocked()Z +PLcom/android/server/am/ActivityManagerService;->isNextTransitionForward()Z +PLcom/android/server/am/ActivityManagerService;->isSleepingOrShuttingDownLocked()Z +PLcom/android/server/am/ActivityManagerService;->keyguardGoingAway(I)V +PLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V +PLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->logAppTooSlow(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->makeIntentSenderCanceledLocked(Lcom/android/server/am/PendingIntentRecord;)V +PLcom/android/server/am/ActivityManagerService;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z +PLcom/android/server/am/ActivityManagerService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder; +PLcom/android/server/am/ActivityManagerService;->notifyEnterAnimationComplete(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->notifyTaskPersisterLocked(Lcom/android/server/am/TaskRecord;Z)V +PLcom/android/server/am/ActivityManagerService;->notifyVrManagerOfSleepState(Z)V +PLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V +PLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V +PLcom/android/server/am/ActivityManagerService;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V +PLcom/android/server/am/ActivityManagerService;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;ZI)I +PLcom/android/server/am/ActivityManagerService;->postFinishBooting(ZZ)V +PLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String; +PLcom/android/server/am/ActivityManagerService;->pushTempWhitelist()V +PLcom/android/server/am/ActivityManagerService;->readGrantedUriPermissionsLocked()V +PLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V +PLcom/android/server/am/ActivityManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +PLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V +PLcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z +PLcom/android/server/am/ActivityManagerService;->removeUriPermissionsForPackageLocked(Ljava/lang/String;IZ)V +PLcom/android/server/am/ActivityManagerService;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V +PLcom/android/server/am/ActivityManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V +PLcom/android/server/am/ActivityManagerService;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V +PLcom/android/server/am/ActivityManagerService;->requestAutofillData(Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;Landroid/os/IBinder;I)Z +PLcom/android/server/am/ActivityManagerService;->requestPssAllProcsLocked(JZZ)V +PLcom/android/server/am/ActivityManagerService;->resolveActivityInfo(Landroid/content/Intent;II)Landroid/content/pm/ActivityInfo; +PLcom/android/server/am/ActivityManagerService;->retrieveSettings()V +PLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V +PLcom/android/server/am/ActivityManagerService;->scheduleStartProfilesLocked()V +PLcom/android/server/am/ActivityManagerService;->sendNotifyVrManagerOfSleepState(Z)V +PLcom/android/server/am/ActivityManagerService;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V +PLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V +PLcom/android/server/am/ActivityManagerService;->setImmersive(Landroid/os/IBinder;Z)V +PLcom/android/server/am/ActivityManagerService;->setLockScreenShown(Z)V +PLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;I)V +PLcom/android/server/am/ActivityManagerService;->setSystemProcess()V +PLcom/android/server/am/ActivityManagerService;->setUidTempWhitelistStateLocked(IZ)V +PLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V +PLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/am/ActivityManagerService;->shouldDisableNonVrUiLocked()Z +PLcom/android/server/am/ActivityManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;)Z +PLcom/android/server/am/ActivityManagerService;->showUnsupportedZoomDialogIfNeededLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I +PLcom/android/server/am/ActivityManagerService;->startActivityAndWait(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)Landroid/app/WaitResult; +PLcom/android/server/am/ActivityManagerService;->startHomeActivityLocked(ILjava/lang/String;)Z +PLcom/android/server/am/ActivityManagerService;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z +PLcom/android/server/am/ActivityManagerService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)I +PLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V +PLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V +PLcom/android/server/am/ActivityManagerService;->startSetupActivityLocked()V +PLcom/android/server/am/ActivityManagerService;->startTimeTrackingFocusedActivityLocked()V +PLcom/android/server/am/ActivityManagerService;->stopAppSwitches()V +PLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Landroid/util/TimingsTraceLog;)V +PLcom/android/server/am/ActivityManagerService;->tempWhitelistUidLocked(IJLjava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V +PLcom/android/server/am/ActivityManagerService;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V +PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLocked(Ljava/util/List;I)V +PLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z +PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z +PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZIZ)Z +PLcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZIZLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)Z +PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)Z +PLcom/android/server/am/ActivityManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZI)Z +PLcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V +PLcom/android/server/am/ActivityManagerService;->updateLockTaskPackages(I[Ljava/lang/String;)V +PLcom/android/server/am/ActivityManagerService;->updateSleepIfNeededLocked()V +PLcom/android/server/am/ActivityManagerShellCommand$1;->(Lcom/android/server/am/ActivityManagerShellCommand;)V +PLcom/android/server/am/ActivityManagerShellCommand$1;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->(Ljava/io/PrintWriter;)V +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V +PLcom/android/server/am/ActivityManagerShellCommand;->-set10(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z +PLcom/android/server/am/ActivityManagerShellCommand;->-set14(Lcom/android/server/am/ActivityManagerShellCommand;Z)Z +PLcom/android/server/am/ActivityManagerShellCommand;->(Lcom/android/server/am/ActivityManagerService;Z)V +PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent; +PLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runDumpHeap(Ljava/io/PrintWriter;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I +PLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get0(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get1(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get2(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get3(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get4(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get5(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get6(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get7(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-get8(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set0(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set1(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;Z)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set2(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set3(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;Z)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set4(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;Z)Z +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set5(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set6(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set7(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->-set8(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;I)I +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->(Lcom/android/server/am/ActivityMetricsLogger;)V +PLcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;->(Lcom/android/server/am/ActivityMetricsLogger;Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)V +PLcom/android/server/am/ActivityMetricsLogger;->calculateCurrentDelay()I +PLcom/android/server/am/ActivityMetricsLogger;->calculateDelay(J)I +PLcom/android/server/am/ActivityMetricsLogger;->getTransitionType(Lcom/android/server/am/ActivityMetricsLogger$StackTransitionInfo;)I +PLcom/android/server/am/ActivityMetricsLogger;->hasStartedActivity(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityMetricsLogger;->logAppTransitionReportedDrawn(Lcom/android/server/am/ActivityRecord;Z)V +PLcom/android/server/am/ActivityMetricsLogger;->notifyActivityLaunching()V +PLcom/android/server/am/ActivityMetricsLogger;->reset(Z)V +PLcom/android/server/am/ActivityRecord$Token;->(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityRecord;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I +PLcom/android/server/am/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityRecord;->addNewIntentLocked(Lcom/android/internal/content/ReferrerIntent;)V +PLcom/android/server/am/ActivityRecord;->addResultLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V +PLcom/android/server/am/ActivityRecord;->allowTaskSnapshot()Z +PLcom/android/server/am/ActivityRecord;->canBeLaunchedOnDisplay(I)Z +PLcom/android/server/am/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityRecord;->checkEnterPictureInPictureAppOpsState()Z +PLcom/android/server/am/ActivityRecord;->clearOptionsLocked()V +PLcom/android/server/am/ActivityRecord;->createImageFilename(JI)Ljava/lang/String; +PLcom/android/server/am/ActivityRecord;->crossesHorizontalSizeThreshold(II)Z +PLcom/android/server/am/ActivityRecord;->crossesSizeThreshold([III)Z +PLcom/android/server/am/ActivityRecord;->crossesVerticalSizeThreshold(II)Z +PLcom/android/server/am/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;Ljava/lang/String;)V +PLcom/android/server/am/ActivityRecord;->getChildCount()I +PLcom/android/server/am/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I +PLcom/android/server/am/ActivityRecord;->getOptionsForTargetActivityLocked()Landroid/app/ActivityOptions; +PLcom/android/server/am/ActivityRecord;->getRequestedOrientation()I +PLcom/android/server/am/ActivityRecord;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I +PLcom/android/server/am/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/am/UriPermissionOwner; +PLcom/android/server/am/ActivityRecord;->getWindowContainerController()Lcom/android/server/wm/AppWindowContainerController; +PLcom/android/server/am/ActivityRecord;->isAlwaysFocusable()Z +PLcom/android/server/am/ActivityRecord;->isFreeform()Z +PLcom/android/server/am/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z +PLcom/android/server/am/ActivityRecord;->isInVrUiMode(Landroid/content/res/Configuration;)Z +PLcom/android/server/am/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z +PLcom/android/server/am/ActivityRecord;->isNoHistory()Z +PLcom/android/server/am/ActivityRecord;->isProcessRunning()Z +PLcom/android/server/am/ActivityRecord;->isResizeOnlyChange(I)Z +PLcom/android/server/am/ActivityRecord;->isResizeable()Z +PLcom/android/server/am/ActivityRecord;->isTopRunningActivity()Z +PLcom/android/server/am/ActivityRecord;->makeFinishingLocked()V +PLcom/android/server/am/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/am/ProcessRecord;)Z +PLcom/android/server/am/ActivityRecord;->notifyAppResumed(Z)V +PLcom/android/server/am/ActivityRecord;->notifyUnknownVisibilityLaunched()V +PLcom/android/server/am/ActivityRecord;->onWindowsGone()V +PLcom/android/server/am/ActivityRecord;->onlyVrUiModeChanged(ILandroid/content/res/Configuration;)Z +PLcom/android/server/am/ActivityRecord;->pauseKeyDispatchingLocked()V +PLcom/android/server/am/ActivityRecord;->relaunchActivityLocked(ZZ)V +PLcom/android/server/am/ActivityRecord;->removeUriPermissionsLocked()V +PLcom/android/server/am/ActivityRecord;->removeWindowContainer()V +PLcom/android/server/am/ActivityRecord;->reportFullyDrawnLocked(Z)V +PLcom/android/server/am/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V +PLcom/android/server/am/ActivityRecord;->screenshotActivityLocked()Landroid/graphics/Bitmap; +PLcom/android/server/am/ActivityRecord;->setDeferHidingClient(Z)V +PLcom/android/server/am/ActivityRecord;->setDisablePreviewScreenshots(Z)V +PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V +PLcom/android/server/am/ActivityRecord;->setLastReportedConfiguration(Landroid/util/MergedConfiguration;)V +PLcom/android/server/am/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V +PLcom/android/server/am/ActivityRecord;->setRequestedOrientation(I)V +PLcom/android/server/am/ActivityRecord;->setSizeConfigurations([I[I[I)V +PLcom/android/server/am/ActivityRecord;->setSleeping(Z)V +PLcom/android/server/am/ActivityRecord;->setSleeping(ZZ)V +PLcom/android/server/am/ActivityRecord;->shouldRelaunchLocked(ILandroid/content/res/Configuration;)Z +PLcom/android/server/am/ActivityRecord;->showStartingWindow(Lcom/android/server/am/ActivityRecord;ZZ)V +PLcom/android/server/am/ActivityRecord;->startFreezingScreenLocked(Lcom/android/server/am/ProcessRecord;I)V +PLcom/android/server/am/ActivityRecord;->supportsResizeableMultiWindow()Z +PLcom/android/server/am/ActivityRecord;->takeFromHistory()V +PLcom/android/server/am/ActivityRecord;->takeOptionsLocked()Landroid/app/ActivityOptions; +PLcom/android/server/am/ActivityRecord;->updateOptionsLocked(Landroid/app/ActivityOptions;)V +PLcom/android/server/am/ActivityRecord;->updateThumbnailLocked(Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V +PLcom/android/server/am/ActivityResult;->(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V +PLcom/android/server/am/ActivityStack$ActivityStackHandler;->(Lcom/android/server/am/ActivityStack;Landroid/os/Looper;)V +PLcom/android/server/am/ActivityStack$ActivityState;->(Ljava/lang/String;I)V +PLcom/android/server/am/ActivityStack$ActivityState;->values()[Lcom/android/server/am/ActivityStack$ActivityState; +PLcom/android/server/am/ActivityStack;->-get0()Ljava/lang/String; +PLcom/android/server/am/ActivityStack;->-getcom-android-server-am-ActivityStack$ActivityStateSwitchesValues()[I +PLcom/android/server/am/ActivityStack;->(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;ILcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/RecentTasks;Z)V +PLcom/android/server/am/ActivityStack;->addRecentActivityLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->addStartingWindowsForVisibleActivities(Z)V +PLcom/android/server/am/ActivityStack;->addTask(Lcom/android/server/am/TaskRecord;ZLjava/lang/String;)V +PLcom/android/server/am/ActivityStack;->awakeFromSleepingLocked()V +PLcom/android/server/am/ActivityStack;->canEnterPipOnTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;)Z +PLcom/android/server/am/ActivityStack;->cleanUpActivityServicesLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->clearLaunchTime(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->containsActivityFromStack(Ljava/util/List;)Z +PLcom/android/server/am/ActivityStack;->createStackWindowController(IZLandroid/graphics/Rect;)Lcom/android/server/wm/StackWindowController; +PLcom/android/server/am/ActivityStack;->createTaskRecord(ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZI)Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/ActivityStack;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;Z)Z +PLcom/android/server/am/ActivityStack;->finishActivityResultsLocked(Lcom/android/server/am/ActivityRecord;ILandroid/content/Intent;)V +PLcom/android/server/am/ActivityStack;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/ActivityStack;->getChildCount()I +PLcom/android/server/am/ActivityStack;->getNextTask(Lcom/android/server/am/TaskRecord;)Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/ActivityStack;->getParent()Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/ActivityStack;->getWindowContainerController()Lcom/android/server/wm/StackWindowController; +PLcom/android/server/am/ActivityStack;->goToSleep()V +PLcom/android/server/am/ActivityStack;->goToSleepIfPossible(Z)Z +PLcom/android/server/am/ActivityStack;->isATopFinishingTask(Lcom/android/server/am/TaskRecord;)Z +PLcom/android/server/am/ActivityStack;->isHomeStack()Z +PLcom/android/server/am/ActivityStack;->isInStackLocked(Lcom/android/server/am/TaskRecord;)Z +PLcom/android/server/am/ActivityStack;->isOnHomeDisplay()Z +PLcom/android/server/am/ActivityStack;->isTaskSwitch(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityStack;->layoutTaskInStack(Lcom/android/server/am/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;)Z +PLcom/android/server/am/ActivityStack;->makeVisibleAndRestartIfNeeded(Lcom/android/server/am/ActivityRecord;IZZLcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityStack;->minimalResumeActivityLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->moveHomeStackTaskToTop()V +PLcom/android/server/am/ActivityStack;->moveTaskToBackLocked(I)Z +PLcom/android/server/am/ActivityStack;->moveToFront(Ljava/lang/String;)V +PLcom/android/server/am/ActivityStack;->notifyActivityDrawnLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->onActivityRemovedFromStack(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStack;->onLockTaskPackagesUpdatedLocked()V +PLcom/android/server/am/ActivityStack;->onParentChanged()V +PLcom/android/server/am/ActivityStack;->postAddTask(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityStack;Z)V +PLcom/android/server/am/ActivityStack;->postAddToDisplay(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Landroid/graphics/Rect;Z)V +PLcom/android/server/am/ActivityStack;->preAddTask(Lcom/android/server/am/TaskRecord;Ljava/lang/String;Z)Lcom/android/server/am/ActivityStack; +PLcom/android/server/am/ActivityStack;->removeActivitiesFromLRUListLocked(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z +PLcom/android/server/am/ActivityStack;->resetTargetTaskIfNeededLocked(Lcom/android/server/am/TaskRecord;Z)Landroid/app/ActivityOptions; +PLcom/android/server/am/ActivityStack;->resumeTopActivityInNextFocusableStack(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Ljava/lang/String;)Z +PLcom/android/server/am/ActivityStack;->sendActivityResultLocked(ILcom/android/server/am/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V +PLcom/android/server/am/ActivityStack;->stopFullyDrawnTraceIfNeeded()V +PLcom/android/server/am/ActivityStack;->updateLRUListLocked(Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityStack;->updateTransitLocked(ILandroid/app/ActivityOptions;)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->(Lcom/android/server/am/ActivityStackSupervisor;I)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->attachStack(Lcom/android/server/am/ActivityStack;I)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getChildCount()I +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->getParent()Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->init(Landroid/view/Display;)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->setIsSleeping(Z)V +PLcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;->shouldSleep()Z +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->-get0(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)I +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->(Lcom/android/server/am/ActivityStackSupervisor;Ljava/lang/String;I)V +PLcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;->release()V +PLcom/android/server/am/ActivityStackSupervisor;->-wrap3(Lcom/android/server/am/ActivityStackSupervisor;I)V +PLcom/android/server/am/ActivityStackSupervisor;->-wrap6(Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V +PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchedLocked(Landroid/os/IBinder;)V +PLcom/android/server/am/ActivityStackSupervisor;->activityRelaunchingLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->activitySleptLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->addStartingWindowsForVisibleActivities(Z)V +PLcom/android/server/am/ActivityStackSupervisor;->anyTaskForIdLocked(I)Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/ActivityStackSupervisor;->applySleepTokensLocked(Z)V +PLcom/android/server/am/ActivityStackSupervisor;->beginDeferResume()V +PLcom/android/server/am/ActivityStackSupervisor;->calculateDefaultMinimalSizeOfResizeableTasks(Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;)V +PLcom/android/server/am/ActivityStackSupervisor;->canPlaceEntityOnDisplay(IZIILandroid/content/pm/ActivityInfo;)Z +PLcom/android/server/am/ActivityStackSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;I)Z +PLcom/android/server/am/ActivityStackSupervisor;->checkFinishBootingLocked()Z +PLcom/android/server/am/ActivityStackSupervisor;->checkReadyForSleepLocked(Z)V +PLcom/android/server/am/ActivityStackSupervisor;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;ZZ)V +PLcom/android/server/am/ActivityStackSupervisor;->cleanupActivity(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->closeSystemDialogsLocked()V +PLcom/android/server/am/ActivityStackSupervisor;->comeOutOfSleepIfNeededLocked()V +PLcom/android/server/am/ActivityStackSupervisor;->createSleepTokenLocked(Ljava/lang/String;I)Landroid/app/ActivityManagerInternal$SleepToken; +PLcom/android/server/am/ActivityStackSupervisor;->createStack(ILcom/android/server/am/ActivityStackSupervisor$ActivityDisplay;Z)Lcom/android/server/am/ActivityStack; +PLcom/android/server/am/ActivityStackSupervisor;->createStackOnDisplay(IIZ)Lcom/android/server/am/ActivityStack; +PLcom/android/server/am/ActivityStackSupervisor;->endDeferResume()V +PLcom/android/server/am/ActivityStackSupervisor;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStackSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;II)I +PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; +PLcom/android/server/am/ActivityStackSupervisor;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/ActivityStackSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIZ)I +PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivity()Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStackSupervisor;->getHomeActivityForUser(I)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStackSupervisor;->getLockTaskModeState()I +PLcom/android/server/am/ActivityStackSupervisor;->getLockedTaskLocked()Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/ActivityStackSupervisor;->getNextTaskIdForUserLocked(I)I +PLcom/android/server/am/ActivityStackSupervisor;->getUserInfo(I)Landroid/content/pm/UserInfo; +PLcom/android/server/am/ActivityStackSupervisor;->goingToSleepLocked()V +PLcom/android/server/am/ActivityStackSupervisor;->handleDisplayChanged(I)V +PLcom/android/server/am/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/am/TaskRecord;III)V +PLcom/android/server/am/ActivityStackSupervisor;->hasAwakeDisplay()Z +PLcom/android/server/am/ActivityStackSupervisor;->invalidateTaskLayers()V +PLcom/android/server/am/ActivityStackSupervisor;->isDisplayAdded(I)Z +PLcom/android/server/am/ActivityStackSupervisor;->isLastLockedTask(Lcom/android/server/am/TaskRecord;)Z +PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;)Z +PLcom/android/server/am/ActivityStackSupervisor;->isLockTaskModeViolation(Lcom/android/server/am/TaskRecord;Z)Z +PLcom/android/server/am/ActivityStackSupervisor;->isLockedTask(Lcom/android/server/am/TaskRecord;)Z +PLcom/android/server/am/ActivityStackSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V +PLcom/android/server/am/ActivityStackSupervisor;->logStackState()V +PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackTaskToTop(Ljava/lang/String;)Z +PLcom/android/server/am/ActivityStackSupervisor;->moveHomeStackToFront(Ljava/lang/String;)V +PLcom/android/server/am/ActivityStackSupervisor;->nextTaskIdForUser(II)I +PLcom/android/server/am/ActivityStackSupervisor;->onDisplayChanged(I)V +PLcom/android/server/am/ActivityStackSupervisor;->onLockTaskPackagesUpdatedLocked()V +PLcom/android/server/am/ActivityStackSupervisor;->putStacksToSleepLocked(ZZ)Z +PLcom/android/server/am/ActivityStackSupervisor;->removeLockedTaskLocked(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTimeouts()V +PLcom/android/server/am/ActivityStackSupervisor;->removeSleepTokenLocked(Lcom/android/server/am/ActivityStackSupervisor$SleepTokenImpl;)V +PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZ)Z +PLcom/android/server/am/ActivityStackSupervisor;->removeTaskByIdLocked(IZZZ)Z +PLcom/android/server/am/ActivityStackSupervisor;->reportActivityLaunchedLocked(ZLcom/android/server/am/ActivityRecord;JJ)V +PLcom/android/server/am/ActivityStackSupervisor;->reportActivityVisibleLocked(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; +PLcom/android/server/am/ActivityStackSupervisor;->restoreRecentTaskLocked(Lcom/android/server/am/TaskRecord;I)Z +PLcom/android/server/am/ActivityStackSupervisor;->resumeFocusedStackTopActivityLocked()Z +PLcom/android/server/am/ActivityStackSupervisor;->resumeHomeStackTask(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;)Z +PLcom/android/server/am/ActivityStackSupervisor;->scheduleResumeTopActivities()V +PLcom/android/server/am/ActivityStackSupervisor;->scheduleSleepTimeout()V +PLcom/android/server/am/ActivityStackSupervisor;->setDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)V +PLcom/android/server/am/ActivityStackSupervisor;->setDockedStackMinimized(Z)V +PLcom/android/server/am/ActivityStackSupervisor;->setNextTaskIdForUserLocked(II)V +PLcom/android/server/am/ActivityStackSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/am/ActivityStackSupervisor;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V +PLcom/android/server/am/ActivityStackSupervisor;->updateUserStackLocked(ILcom/android/server/am/ActivityStack;)V +PLcom/android/server/am/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z +PLcom/android/server/am/ActivityStartInterceptor;->interceptSuspendPackageIfNeed()Z +PLcom/android/server/am/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Ljava/lang/String;I)Landroid/content/Intent; +PLcom/android/server/am/ActivityStartInterceptor;->interceptWorkProfileChallengeIfNeeded()Z +PLcom/android/server/am/ActivityStartInterceptor;->setStates(IIIILjava/lang/String;)V +PLcom/android/server/am/ActivityStarter;->addOrReparentStartingActivity(Lcom/android/server/am/TaskRecord;Ljava/lang/String;)V +PLcom/android/server/am/ActivityStarter;->adjustLaunchFlagsToDocumentMode(Lcom/android/server/am/ActivityRecord;ZZI)I +PLcom/android/server/am/ActivityStarter;->canLaunchIntoFocusedStack(Lcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/ActivityStarter;->clearPendingActivityLaunchesLocked(Ljava/lang/String;)Z +PLcom/android/server/am/ActivityStarter;->computeLaunchingTaskFlags()V +PLcom/android/server/am/ActivityStarter;->computeSourceStack()V +PLcom/android/server/am/ActivityStarter;->doPendingActivityLaunchesLocked(Z)V +PLcom/android/server/am/ActivityStarter;->getOverrideBounds(Lcom/android/server/am/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/am/TaskRecord;)Landroid/graphics/Rect; +PLcom/android/server/am/ActivityStarter;->getReusableIntentActivity()Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/ActivityStarter;->getSourceDisplayId(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)I +PLcom/android/server/am/ActivityStarter;->isDocumentLaunchesIntoExisting(I)Z +PLcom/android/server/am/ActivityStarter;->isValidLaunchStackId(IILcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/ActivityStarter;->reset()V +PLcom/android/server/am/ActivityStarter;->resumeTargetStackIfNeeded()V +PLcom/android/server/am/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V +PLcom/android/server/am/ActivityStarter;->sendPowerHintForLaunchEndIfNeeded()V +PLcom/android/server/am/ActivityStarter;->setTaskFromIntentActivity(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/ActivityStarter;->setTaskFromSourceRecord()I +PLcom/android/server/am/ActivityStarter;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/am/ActivityStarter;->startHomeActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)V +PLcom/android/server/am/ActivityStarter;->updateTaskReturnToType(Lcom/android/server/am/TaskRecord;ILcom/android/server/am/ActivityStack;)V +PLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfigLocked(Ljava/lang/String;)V +PLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(ZII)V +PLcom/android/server/am/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/net/wifi/WifiActivityEnergyInfo;)Landroid/net/wifi/WifiActivityEnergyInfo; +PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future; +PLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future; +PLcom/android/server/am/BatteryStatsService;->addIsolatedUid(II)V +PLcom/android/server/am/BatteryStatsService;->awaitUninterruptibly(Ljava/util/concurrent/Future;)V +PLcom/android/server/am/BatteryStatsService;->doEnableOrDisable(Ljava/io/PrintWriter;I[Ljava/lang/String;Z)I +PLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/am/BatteryStatsService;->getPlatformLowPowerStats()Ljava/lang/String; +PLcom/android/server/am/BatteryStatsService;->getStatistics()[B +PLcom/android/server/am/BatteryStatsService;->getStatisticsStream()Landroid/os/ParcelFileDescriptor; +PLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String; +PLcom/android/server/am/BatteryStatsService;->isCharging()Z +PLcom/android/server/am/BatteryStatsService;->lambda$-com_android_server_am_BatteryStatsService_32467(IIIIIIII)V +PLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V +PLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V +PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V +PLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V +PLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V +PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V +PLcom/android/server/am/BatteryStatsService;->notePackageInstalled(Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V +PLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V +PLcom/android/server/am/BatteryStatsService;->noteResetBleScan()V +PLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V +PLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V +PLcom/android/server/am/BatteryStatsService;->noteStartCamera(I)V +PLcom/android/server/am/BatteryStatsService;->noteStartGps(I)V +PLcom/android/server/am/BatteryStatsService;->noteStartVideo(I)V +PLcom/android/server/am/BatteryStatsService;->noteStopCamera(I)V +PLcom/android/server/am/BatteryStatsService;->noteStopGps(I)V +PLcom/android/server/am/BatteryStatsService;->noteStopVideo(I)V +PLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V +PLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V +PLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V +PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastDisabled(I)V +PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastEnabled(I)V +PLcom/android/server/am/BatteryStatsService;->noteWifiOff()V +PLcom/android/server/am/BatteryStatsService;->noteWifiOn()V +PLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V +PLcom/android/server/am/BatteryStatsService;->noteWifiRunning(Landroid/os/WorkSource;)V +PLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V +PLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V +PLcom/android/server/am/BatteryStatsService;->removeIsolatedUid(II)V +PLcom/android/server/am/BroadcastQueue;->isSignaturePerm([Ljava/lang/String;)Z +PLcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord; +PLcom/android/server/am/BroadcastQueue;->scheduleTempWhitelistLocked(IJLcom/android/server/am/BroadcastRecord;)V +PLcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z +PLcom/android/server/am/BroadcastStats$1;->()V +PLcom/android/server/am/BroadcastStats$ViolationEntry;->()V +PLcom/android/server/am/BroadcastStats;->()V +PLcom/android/server/am/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V +PLcom/android/server/am/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration; +PLcom/android/server/am/ConfigurationContainer;->onOverrideConfigurationChanged(Landroid/content/res/Configuration;)V +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-get0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;)I +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->-set0(Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;I)I +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->(Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;)V +PLcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;->unlinkFromOwnDeathLocked()V +PLcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;)V +PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleInternalLocked(Landroid/os/IBinder;)V +PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z +PLcom/android/server/am/CoreSettingsObserver;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V +PLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V +PLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V +PLcom/android/server/am/DumpHeapProvider;->()V +PLcom/android/server/am/DumpHeapProvider;->onCreate()Z +PLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V +PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V +PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V +PLcom/android/server/am/InstrumentationReporter$MyThread;->(Lcom/android/server/am/InstrumentationReporter;)V +PLcom/android/server/am/InstrumentationReporter$MyThread;->run()V +PLcom/android/server/am/InstrumentationReporter$Report;->(Lcom/android/server/am/InstrumentationReporter;ILandroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V +PLcom/android/server/am/InstrumentationReporter;->report(Lcom/android/server/am/InstrumentationReporter$Report;)V +PLcom/android/server/am/InstrumentationReporter;->reportFinished(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V +PLcom/android/server/am/KeyguardController;->canShowActivityWhileKeyguardShowing(Lcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/KeyguardController;->canShowWhileOccluded(ZZ)Z +PLcom/android/server/am/KeyguardController;->convertTransitFlags(I)I +PLcom/android/server/am/KeyguardController;->dismissDockedStackIfNeeded()V +PLcom/android/server/am/KeyguardController;->handleDismissKeyguard()V +PLcom/android/server/am/KeyguardController;->handleOccludedChanged()V +PLcom/android/server/am/KeyguardController;->keyguardGoingAway(I)V +PLcom/android/server/am/KeyguardController;->setKeyguardGoingAway(Z)V +PLcom/android/server/am/KeyguardController;->setKeyguardShown(Z)V +PLcom/android/server/am/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/am/KeyguardController;->updateKeyguardSleepToken()V +PLcom/android/server/am/NativeCrashListener;->(Lcom/android/server/am/ActivityManagerService;)V +PLcom/android/server/am/NativeCrashListener;->run()V +PLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList; +PLcom/android/server/am/PendingIntentRecord;->setWhitelistDurationLocked(Landroid/os/IBinder;J)V +PLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String; +PLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J +PLcom/android/server/am/ProcessList;->makeOomAdjString(I)Ljava/lang/String; +PLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String; +PLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J +PLcom/android/server/am/ProcessList;->openLmkdSocket()Z +PLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String; +PLcom/android/server/am/ProcessStatsService$2;->(Lcom/android/server/am/ProcessStatsService;)V +PLcom/android/server/am/ProcessStatsService$2;->run()V +PLcom/android/server/am/ProcessStatsService;->addSysMemUsageLocked(JJJJJ)V +PLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/am/ProcessStatsService;->getCommittedFiles(IZZ)Ljava/util/ArrayList; +PLcom/android/server/am/ProcessStatsService;->isMemFactorLowered()Z +PLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/am/ProcessStatsService;->performWriteState()V +PLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLocked()V +PLcom/android/server/am/ProcessStatsService;->writeStateAsyncLocked()V +PLcom/android/server/am/ProcessStatsService;->writeStateLocked(Z)V +PLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V +PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z +PLcom/android/server/am/RecentTasks;->cleanupLocked(I)V +PLcom/android/server/am/RecentTasks;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V +PLcom/android/server/am/RecentTasks;->loadUserRecentsLocked(I)V +PLcom/android/server/am/RecentTasks;->onSystemReadyLocked()V +PLcom/android/server/am/RecentTasks;->processNextAffiliateChainLocked(I)I +PLcom/android/server/am/RecentTasks;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V +PLcom/android/server/am/RecentTasks;->taskIdTakenForUserLocked(II)Z +PLcom/android/server/am/ServiceRecord$1;->(Lcom/android/server/am/ServiceRecord;Landroid/app/Notification;Ljava/lang/String;III)V +PLcom/android/server/am/ServiceRecord$1;->run()V +PLcom/android/server/am/ServiceRecord$2;->(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V +PLcom/android/server/am/ServiceRecord$2;->run()V +PLcom/android/server/am/ServiceRecord;->cancelNotification()V +PLcom/android/server/am/ServiceRecord;->forceClearTracker()V +PLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V +PLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String; +PLcom/android/server/am/ServiceRecord;->updateWhitelistManager()V +PLcom/android/server/am/TaskChangeNotificationController;->-get10(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get11(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get13(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get14(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get15(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get16(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get17(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/ActivityManagerService; +PLcom/android/server/am/TaskChangeNotificationController;->-get18(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/ActivityStackSupervisor; +PLcom/android/server/am/TaskChangeNotificationController;->-get4(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->-get9(Lcom/android/server/am/TaskChangeNotificationController;)Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3225(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3334(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3467(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3582(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3708(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_3878(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_4027(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->lambda$-com_android_server_am_TaskChangeNotificationController_5401(Landroid/app/ITaskStackListener;Landroid/os/Message;)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyActivityRequestedOrientationChanged(II)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskMovedToFront(I)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemovalStarted(I)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskRemoved(I)V +PLcom/android/server/am/TaskChangeNotificationController;->notifyTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/am/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V +PLcom/android/server/am/TaskPersister$1;->(Lcom/android/server/am/TaskPersister;)V +PLcom/android/server/am/TaskPersister$1;->compare(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/TaskRecord;)I +PLcom/android/server/am/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/am/TaskPersister$ImageWriteQueueItem;->(Ljava/lang/String;Landroid/graphics/Bitmap;)V +PLcom/android/server/am/TaskPersister$TaskWriteQueueItem;->(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/TaskPersister$WriteQueueItem;->()V +PLcom/android/server/am/TaskPersister$WriteQueueItem;->(Lcom/android/server/am/TaskPersister$WriteQueueItem;)V +PLcom/android/server/am/TaskPersister;->-get2(Lcom/android/server/am/TaskPersister;)Lcom/android/server/am/ActivityManagerService; +PLcom/android/server/am/TaskPersister;->-set0(Lcom/android/server/am/TaskPersister;J)J +PLcom/android/server/am/TaskPersister;->-wrap0(Ljava/lang/String;)Z +PLcom/android/server/am/TaskPersister;->-wrap1(Lcom/android/server/am/TaskPersister;Lcom/android/server/am/TaskRecord;)Ljava/io/StringWriter; +PLcom/android/server/am/TaskPersister;->-wrap2(Lcom/android/server/am/TaskPersister;Landroid/util/ArraySet;)V +PLcom/android/server/am/TaskPersister;->-wrap3(Lcom/android/server/am/TaskPersister;)V +PLcom/android/server/am/TaskPersister;->createParentDirectory(Ljava/lang/String;)Z +PLcom/android/server/am/TaskPersister;->getImageFromWriteQueue(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/TaskPersister;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File; +PLcom/android/server/am/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray; +PLcom/android/server/am/TaskPersister;->removeThumbnails(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/TaskPersister;->restoreImage(Ljava/lang/String;)Landroid/graphics/Bitmap; +PLcom/android/server/am/TaskPersister;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V +PLcom/android/server/am/TaskPersister;->startPersisting()V +PLcom/android/server/am/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/am/TaskRecord; +PLcom/android/server/am/TaskPersister;->yieldIfQueueTooDeep()V +PLcom/android/server/am/TaskRecord;->(Lcom/android/server/am/ActivityManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIIILjava/lang/String;Ljava/util/ArrayList;JJJZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$TaskThumbnailInfo;IIIIILjava/lang/String;IZZZZII)V +PLcom/android/server/am/TaskRecord;->addStartingWindowsForVisibleActivities(Z)V +PLcom/android/server/am/TaskRecord;->autoRemoveFromRecents()Z +PLcom/android/server/am/TaskRecord;->closeRecentsChain()V +PLcom/android/server/am/TaskRecord;->containsOnlyFullscreenActivities()Z +PLcom/android/server/am/TaskRecord;->disposeThumbnail()V +PLcom/android/server/am/TaskRecord;->findActivityInHistoryLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/TaskRecord;->getChildAt(I)Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/TaskRecord;->getChildCount()I +PLcom/android/server/am/TaskRecord;->getLaunchStackId()I +PLcom/android/server/am/TaskRecord;->getParent()Lcom/android/server/am/ConfigurationContainer; +PLcom/android/server/am/TaskRecord;->getRootActivity()Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/TaskRecord;->getSnapshot(Z)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/am/TaskRecord;->getWindowContainerController()Lcom/android/server/wm/TaskWindowContainerController; +PLcom/android/server/am/TaskRecord;->isApplicationTask()Z +PLcom/android/server/am/TaskRecord;->isAssistantTask()Z +PLcom/android/server/am/TaskRecord;->isClearingToReuseTask()Z +PLcom/android/server/am/TaskRecord;->isLockTaskWhitelistedLocked()Z +PLcom/android/server/am/TaskRecord;->isOverAssistantStack()Z +PLcom/android/server/am/TaskRecord;->isRecentsTask()Z +PLcom/android/server/am/TaskRecord;->isSameIntentFilter(Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/TaskRecord;->okToShowLocked()Z +PLcom/android/server/am/TaskRecord;->onParentChanged()V +PLcom/android/server/am/TaskRecord;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/am/TaskRecord;->onlyHasTaskOverlayActivities(Z)Z +PLcom/android/server/am/TaskRecord;->performClearTaskAtIndexLocked(IZ)V +PLcom/android/server/am/TaskRecord;->performClearTaskForReuseLocked(Lcom/android/server/am/ActivityRecord;I)Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;)Z +PLcom/android/server/am/TaskRecord;->removeActivity(Lcom/android/server/am/ActivityRecord;Z)Z +PLcom/android/server/am/TaskRecord;->removeTaskActivitiesLocked(Z)V +PLcom/android/server/am/TaskRecord;->removeWindowContainer()V +PLcom/android/server/am/TaskRecord;->removedFromRecents()V +PLcom/android/server/am/TaskRecord;->setIntent(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/TaskRecord;->setLockTaskAuth()V +PLcom/android/server/am/TaskRecord;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V +PLcom/android/server/am/TaskRecord;->setNextAffiliate(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/TaskRecord;->setPrevAffiliate(Lcom/android/server/am/TaskRecord;)V +PLcom/android/server/am/TaskRecord;->setStack(Lcom/android/server/am/ActivityStack;)V +PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(I)V +PLcom/android/server/am/TaskRecord;->setTaskToReturnTo(Lcom/android/server/am/ActivityRecord;)V +PLcom/android/server/am/TaskRecord;->setWindowContainerController(Lcom/android/server/wm/TaskWindowContainerController;)V +PLcom/android/server/am/TaskRecord;->toString()Ljava/lang/String; +PLcom/android/server/am/TaskRecord;->topRunningActivityWithStartingWindowLocked()Lcom/android/server/am/ActivityRecord; +PLcom/android/server/am/TaskRecord;->validateBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect; +PLcom/android/server/am/UidRecord$ChangeItem;->()V +PLcom/android/server/am/UidRecord;->toString()Ljava/lang/String; +PLcom/android/server/am/UriPermissionOwner$ExternalToken;->(Lcom/android/server/am/UriPermissionOwner;)V +PLcom/android/server/am/UriPermissionOwner;->(Lcom/android/server/am/ActivityManagerService;Ljava/lang/Object;)V +PLcom/android/server/am/UriPermissionOwner;->getExternalTokenLocked()Landroid/os/Binder; +PLcom/android/server/am/UriPermissionOwner;->removeUriPermissionLocked(Lcom/android/server/am/ActivityManagerService$GrantUri;I)V +PLcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked()V +PLcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked(I)V +PLcom/android/server/am/UserController$2;->(Lcom/android/server/am/UserController;I)V +PLcom/android/server/am/UserController$2;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V +PLcom/android/server/am/UserController$Injector;->broadcastIntentLocked(Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIII)I +PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal; +PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z +PLcom/android/server/am/UserController;->-get0()Ljava/lang/String; +PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V +PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V +PLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V +PLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V +PLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)V +PLcom/android/server/am/UserController;->getStorageManager()Landroid/os/storage/IStorageManager; +PLcom/android/server/am/UserController;->getUsers()[I +PLcom/android/server/am/UserController;->hasUserRestriction(Ljava/lang/String;I)Z +PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z +PLcom/android/server/am/UserController;->onSystemReady()V +PLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V +PLcom/android/server/am/UserController;->sendBootCompletedLocked(Landroid/content/IIntentReceiver;)V +PLcom/android/server/am/UserController;->sendUserSwitchBroadcastsLocked(II)V +PLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z +PLcom/android/server/am/UserController;->startProfilesLocked()V +PLcom/android/server/am/UserController;->unlockUserCleared(I[B[BLandroid/os/IProgressListener;)Z +PLcom/android/server/am/UserController;->updateCurrentProfileIdsLocked()V +PLcom/android/server/am/UserState;->setState(I)V +PLcom/android/server/am/UserState;->setState(II)Z +PLcom/android/server/am/UserState;->stateToString(I)Ljava/lang/String; +PLcom/android/server/am/VrController;->changeVrModeLocked(ZLcom/android/server/am/ProcessRecord;)Z +PLcom/android/server/am/VrController;->clearVrRenderThreadLocked(Z)V +PLcom/android/server/am/VrController;->hasPersistentVrFlagSet()Z +PLcom/android/server/am/VrController;->inVrMode()Z +PLcom/android/server/am/VrController;->onSystemReady()V +PLcom/android/server/am/VrController;->shouldDisableNonVrUiLocked()Z +PLcom/android/server/am/VrController;->updateVrRenderThreadLocked(IZ)I +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->$m$0()V +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->(ILjava/lang/Object;)V +PLcom/android/server/appwidget/-$Lambda$sqLvMpiiaBhtxQ03rM0wbe7Vez0;->run()V +PLcom/android/server/appwidget/AppWidgetService;->(Landroid/content/Context;)V +PLcom/android/server/appwidget/AppWidgetService;->lambda$-com_android_server_appwidget_AppWidgetService_1563(I)V +PLcom/android/server/appwidget/AppWidgetService;->onBootPhase(I)V +PLcom/android/server/appwidget/AppWidgetService;->onStart()V +PLcom/android/server/appwidget/AppWidgetService;->onUnlockUser(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$1;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->()V +PLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->(IILjava/lang/String;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->equals(Ljava/lang/Object;)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->()V +PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByLockedProfileLocked(Z)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByQuietProfileLocked(Z)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedBySuspendedPackageLocked(Z)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->hashCode()I +PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->run()V +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isEnabledGroupProfile(I)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isParentOrProfile(II)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProfileEnabled(I)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderInCallerOrInProfileAndWhitelListed(Ljava/lang/String;I)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get0()Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get1(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/app/AppOpsManager; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-get5(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/lang/Object; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap10(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap11(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap14(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->-wrap4(Lcom/android/server/appwidget/AppWidgetServiceImpl;IZ)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->(Landroid/content/Context;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->addProviderLocked(Landroid/content/pm/ResolveInfo;)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindLoadedWidgetsLocked(Ljava/util/List;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->clearProvidersAndHostsTagsLocked()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetProviderInfo; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->computeMaximumWidgetBitmapMemory()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->getSavedStateFile(I)Landroid/util/AtomicFile; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->getStateFile(I)Ljava/io/File; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetIds(Ljava/util/ArrayList;)[I +PLcom/android/server/appwidget/AppWidgetServiceImpl;->isLocalBinder()Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithUnlockedParent(I)Z +PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupStateLocked([I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupWidgetProvidersLocked([I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupOrAddHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->onConfigurationChanged()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->onStart()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->onUserUnlocked(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->performUpgradeLocked(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->pruneHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->queryIntentReceivers(Landroid/content/Intent;I)Ljava/util/List; +PLcom/android/server/appwidget/AppWidgetServiceImpl;->readProfileStateFromFileLocked(Ljava/io/FileInputStream;ILjava/util/List;)I +PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerBroadcastReceiver()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerOnCrossProfileProvidersChangedListener()V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedStateForGroup(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveGroupStateAsync(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveStateLocked(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyGroupHostsForProvidersChangedLocked(I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->setSafeMode(Z)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->stopListening(Ljava/lang/String;I)V +PLcom/android/server/appwidget/AppWidgetServiceImpl;->tagProvidersAndHosts()V +PLcom/android/server/audio/AudioEventLogger$StringEvent;->(Ljava/lang/String;)V +PLcom/android/server/audio/AudioEventLogger;->(ILjava/lang/String;)V +PLcom/android/server/audio/AudioService$1;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$1;->onError(I)V +PLcom/android/server/audio/AudioService$2;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$2;->onUidGone(IZ)V +PLcom/android/server/audio/AudioService$3;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$3;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V +PLcom/android/server/audio/AudioService$4;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$5;->(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V +PLcom/android/server/audio/AudioService$AudioHandler;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$AudioHandler;->(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)V +PLcom/android/server/audio/AudioService$AudioHandler;->onPersistSafeVolumeState(I)V +PLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V +PLcom/android/server/audio/AudioService$AudioHandler;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V +PLcom/android/server/audio/AudioService$AudioHandler;->setForceUse(IILjava/lang/String;)V +PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;)V +PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/audio/AudioService$AudioServiceInternal;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$AudioServiceInternal;->getRingerModeInternal()I +PLcom/android/server/audio/AudioService$AudioServiceInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V +PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeDelegate(Landroid/media/AudioManagerInternal$RingerModeDelegate;)V +PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeInternal(ILjava/lang/String;)V +PLcom/android/server/audio/AudioService$AudioServiceInternal;->updateRingerModeAffectedStreamsInternal()V +PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;)V +PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/audio/AudioService$AudioSystemThread;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$AudioSystemThread;->run()V +PLcom/android/server/audio/AudioService$ForceControlStreamClient;->(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;)V +PLcom/android/server/audio/AudioService$ForceControlStreamClient;->release()V +PLcom/android/server/audio/AudioService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/audio/AudioService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/audio/AudioService$Lifecycle;->onStart()V +PLcom/android/server/audio/AudioService$MyDisplayStatusCallback;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$MyDisplayStatusCallback;->(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$MyDisplayStatusCallback;)V +PLcom/android/server/audio/AudioService$SetModeDeathHandler;->(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;I)V +PLcom/android/server/audio/AudioService$SetModeDeathHandler;->getBinder()Landroid/os/IBinder; +PLcom/android/server/audio/AudioService$SetModeDeathHandler;->getPid()I +PLcom/android/server/audio/AudioService$SetModeDeathHandler;->setMode(I)V +PLcom/android/server/audio/AudioService$SettingsObserver;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$SoundPoolCallback;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$SoundPoolCallback;->(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$SoundPoolCallback;)V +PLcom/android/server/audio/AudioService$SoundPoolCallback;->onLoadComplete(Landroid/media/SoundPool;II)V +PLcom/android/server/audio/AudioService$SoundPoolCallback;->setSamples([I)V +PLcom/android/server/audio/AudioService$SoundPoolCallback;->status()I +PLcom/android/server/audio/AudioService$SoundPoolListenerThread;->(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService$SoundPoolListenerThread;->run()V +PLcom/android/server/audio/AudioService$VolumeController;->()V +PLcom/android/server/audio/AudioService$VolumeController;->asBinder()Landroid/os/IBinder; +PLcom/android/server/audio/AudioService$VolumeController;->binder(Landroid/media/IVolumeController;)Landroid/os/IBinder; +PLcom/android/server/audio/AudioService$VolumeController;->isSameBinder(Landroid/media/IVolumeController;)Z +PLcom/android/server/audio/AudioService$VolumeController;->loadSettings(Landroid/content/ContentResolver;)V +PLcom/android/server/audio/AudioService$VolumeController;->postDismiss()V +PLcom/android/server/audio/AudioService$VolumeController;->postVolumeChanged(II)V +PLcom/android/server/audio/AudioService$VolumeController;->setController(Landroid/media/IVolumeController;)V +PLcom/android/server/audio/AudioService$VolumeController;->setLayoutDirection(I)V +PLcom/android/server/audio/AudioService$VolumeController;->setVisible(Z)V +PLcom/android/server/audio/AudioService$VolumeController;->suppressAdjustment(IIZ)Z +PLcom/android/server/audio/AudioService$VolumeStreamState;->-get2(Lcom/android/server/audio/AudioService$VolumeStreamState;)I +PLcom/android/server/audio/AudioService$VolumeStreamState;->-get3(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z +PLcom/android/server/audio/AudioService$VolumeStreamState;->-get4(Lcom/android/server/audio/AudioService$VolumeStreamState;)I +PLcom/android/server/audio/AudioService$VolumeStreamState;->-set1(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/audio/AudioService$VolumeStreamState;->-wrap0(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z +PLcom/android/server/audio/AudioService$VolumeStreamState;->(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V +PLcom/android/server/audio/AudioService$VolumeStreamState;->(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$VolumeStreamState;)V +PLcom/android/server/audio/AudioService$VolumeStreamState;->adjustIndex(IILjava/lang/String;)Z +PLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(I)V +PLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V +PLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I +PLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I +PLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(I)I +PLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z +PLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Z)V +PLcom/android/server/audio/AudioService;->-get0()[I +PLcom/android/server/audio/AudioService;->-get1()[I +PLcom/android/server/audio/AudioService;->-get12(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get13(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothHeadset; +PLcom/android/server/audio/AudioService;->-get15(Lcom/android/server/audio/AudioService;)Ljava/lang/Boolean; +PLcom/android/server/audio/AudioService;->-get16(Lcom/android/server/audio/AudioService;)Landroid/util/ArrayMap; +PLcom/android/server/audio/AudioService;->-get2()Ljava/util/List; +PLcom/android/server/audio/AudioService;->-get24(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get25(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl; +PLcom/android/server/audio/AudioService;->-get28(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate; +PLcom/android/server/audio/AudioService;->-get3(Lcom/android/server/audio/AudioService;)[[I +PLcom/android/server/audio/AudioService;->-get30(Lcom/android/server/audio/AudioService;)I +PLcom/android/server/audio/AudioService;->-get31(Lcom/android/server/audio/AudioService;)Ljava/util/ArrayList; +PLcom/android/server/audio/AudioService;->-get33(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-get34(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-get36(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolCallback; +PLcom/android/server/audio/AudioService;->-get37(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread; +PLcom/android/server/audio/AudioService;->-get38(Lcom/android/server/audio/AudioService;)Landroid/os/Looper; +PLcom/android/server/audio/AudioService;->-get4(Lcom/android/server/audio/AudioService;)Landroid/bluetooth/BluetoothA2dp; +PLcom/android/server/audio/AudioService;->-get40(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get41(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get42(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-get45()I +PLcom/android/server/audio/AudioService;->-get5(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-get7(Lcom/android/server/audio/AudioService;)Ljava/lang/Object; +PLcom/android/server/audio/AudioService;->-set0(Lcom/android/server/audio/AudioService;Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/BluetoothA2dp; +PLcom/android/server/audio/AudioService;->-set1(Lcom/android/server/audio/AudioService;[I)[I +PLcom/android/server/audio/AudioService;->-set12(Lcom/android/server/audio/AudioService;Landroid/media/SoundPool;)Landroid/media/SoundPool; +PLcom/android/server/audio/AudioService;->-set13(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$SoundPoolCallback;)Lcom/android/server/audio/AudioService$SoundPoolCallback; +PLcom/android/server/audio/AudioService;->-set14(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$SoundPoolListenerThread;)Lcom/android/server/audio/AudioService$SoundPoolListenerThread; +PLcom/android/server/audio/AudioService;->-set15(Lcom/android/server/audio/AudioService;Landroid/os/Looper;)Landroid/os/Looper; +PLcom/android/server/audio/AudioService;->-set17(Lcom/android/server/audio/AudioService;Z)Z +PLcom/android/server/audio/AudioService;->-set2(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)Lcom/android/server/audio/AudioService$AudioHandler; +PLcom/android/server/audio/AudioService;->-set4(Lcom/android/server/audio/AudioService;Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/BluetoothHeadset; +PLcom/android/server/audio/AudioService;->-set5(Lcom/android/server/audio/AudioService;Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothDevice; +PLcom/android/server/audio/AudioService;->-set9(Lcom/android/server/audio/AudioService;Landroid/media/AudioManagerInternal$RingerModeDelegate;)Landroid/media/AudioManagerInternal$RingerModeDelegate; +PLcom/android/server/audio/AudioService;->-wrap13(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService;->-wrap16(Lcom/android/server/audio/AudioService;Landroid/content/Context;)V +PLcom/android/server/audio/AudioService;->-wrap18(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService;->-wrap2(Lcom/android/server/audio/AudioService;)Z +PLcom/android/server/audio/AudioService;->-wrap20(Lcom/android/server/audio/AudioService;I)V +PLcom/android/server/audio/AudioService;->-wrap23(Lcom/android/server/audio/AudioService;I)V +PLcom/android/server/audio/AudioService;->-wrap25(Lcom/android/server/audio/AudioService;ZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->-wrap33(Lcom/android/server/audio/AudioService;Z)V +PLcom/android/server/audio/AudioService;->-wrap35(Lcom/android/server/audio/AudioService;)V +PLcom/android/server/audio/AudioService;->-wrap36(Lcom/android/server/audio/AudioService;Landroid/content/Intent;)V +PLcom/android/server/audio/AudioService;->-wrap38(Landroid/os/Handler;IIIILjava/lang/Object;I)V +PLcom/android/server/audio/AudioService;->-wrap4(Lcom/android/server/audio/AudioService;I)I +PLcom/android/server/audio/AudioService;->-wrap40(Lcom/android/server/audio/AudioService;IILjava/lang/String;)V +PLcom/android/server/audio/AudioService;->-wrap6(Lcom/android/server/audio/AudioService;III)I +PLcom/android/server/audio/AudioService;->(Landroid/content/Context;)V +PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I +PLcom/android/server/audio/AudioService;->adjustStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/audio/AudioService;->adjustSuggestedStreamVolume(IIILjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/audio/AudioService;->adjustSuggestedStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/audio/AudioService;->broadcastMasterMuteStatus(Z)V +PLcom/android/server/audio/AudioService;->broadcastRingerMode(Ljava/lang/String;I)V +PLcom/android/server/audio/AudioService;->broadcastScoConnectionState(I)V +PLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V +PLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V +PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V +PLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z +PLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V +PLcom/android/server/audio/AudioService;->checkScoAudioState()V +PLcom/android/server/audio/AudioService;->clearAllScoClients(IZ)V +PLcom/android/server/audio/AudioService;->createAudioSystemThread()V +PLcom/android/server/audio/AudioService;->createStreamStates()V +PLcom/android/server/audio/AudioService;->disconnectBluetoothSco(I)V +PLcom/android/server/audio/AudioService;->enforceSafeMediaVolume(Ljava/lang/String;)V +PLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V +PLcom/android/server/audio/AudioService;->ensureValidDirection(I)V +PLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V +PLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V +PLcom/android/server/audio/AudioService;->getActiveStreamType(I)I +PLcom/android/server/audio/AudioService;->getBluetoothHeadset()Z +PLcom/android/server/audio/AudioService;->getCurrentUserId()I +PLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I +PLcom/android/server/audio/AudioService;->getMode()I +PLcom/android/server/audio/AudioService;->getRingerModeExternal()I +PLcom/android/server/audio/AudioService;->getRingerModeInternal()I +PLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer; +PLcom/android/server/audio/AudioService;->getSafeUsbMediaVolumeIndex()I +PLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I +PLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I +PLcom/android/server/audio/AudioService;->getStreamVolume(I)I +PLcom/android/server/audio/AudioService;->getUiSoundsStreamType()I +PLcom/android/server/audio/AudioService;->getVibrateSetting(I)I +PLcom/android/server/audio/AudioService;->handleConfigurationChanged(Landroid/content/Context;)V +PLcom/android/server/audio/AudioService;->initA11yMonitoring()V +PLcom/android/server/audio/AudioService;->isAfMusicActiveRecently(I)Z +PLcom/android/server/audio/AudioService;->isBluetoothScoOn()Z +PLcom/android/server/audio/AudioService;->isCameraSoundForced()Z +PLcom/android/server/audio/AudioService;->isInCommunication()Z +PLcom/android/server/audio/AudioService;->isMuteAdjust(I)Z +PLcom/android/server/audio/AudioService;->isPlatformTelevision()Z +PLcom/android/server/audio/AudioService;->isSpeakerphoneOn()Z +PLcom/android/server/audio/AudioService;->isStreamAffectedByMute(I)Z +PLcom/android/server/audio/AudioService;->isStreamAffectedByRingerMode(I)Z +PLcom/android/server/audio/AudioService;->isStreamMute(I)Z +PLcom/android/server/audio/AudioService;->isStreamMutedByRingerMode(I)Z +PLcom/android/server/audio/AudioService;->isValidRingerMode(I)Z +PLcom/android/server/audio/AudioService;->loadTouchSoundAssetDefaults()V +PLcom/android/server/audio/AudioService;->loadTouchSoundAssets()V +PLcom/android/server/audio/AudioService;->muteRingerModeStreams()V +PLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V +PLcom/android/server/audio/AudioService;->observeDevicesForStreams(I)V +PLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V +PLcom/android/server/audio/AudioService;->onBroadcastScoConnectionState(I)V +PLcom/android/server/audio/AudioService;->onConfigureSafeVolume(ZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->onIndicateSystemReady()V +PLcom/android/server/audio/AudioService;->onSystemReady()V +PLcom/android/server/audio/AudioService;->playSoundEffect(I)V +PLcom/android/server/audio/AudioService;->playSoundEffectVolume(IF)V +PLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V +PLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V +PLcom/android/server/audio/AudioService;->readAudioSettings(Z)V +PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z +PLcom/android/server/audio/AudioService;->readDockAudioSettings(Landroid/content/ContentResolver;)V +PLcom/android/server/audio/AudioService;->readPersistedSettings()V +PLcom/android/server/audio/AudioService;->readUserRestrictions()V +PLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V +PLcom/android/server/audio/AudioService;->releasePlayer(I)V +PLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I +PLcom/android/server/audio/AudioService;->resetBluetoothSco()V +PLcom/android/server/audio/AudioService;->safeMediaVolumeIndex(I)I +PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V +PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V +PLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V +PLcom/android/server/audio/AudioService;->sendVolumeUpdate(IIII)V +PLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V +PLcom/android/server/audio/AudioService;->setBluetoothScoOnInt(ZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->setForceUseInt_SyncDevices(IILjava/lang/String;)V +PLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/audio/AudioService;->setModeInt(ILandroid/os/IBinder;ILjava/lang/String;)I +PLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V +PLcom/android/server/audio/AudioService;->setRingerModeExt(I)V +PLcom/android/server/audio/AudioService;->setRingerModeInt(IZ)V +PLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/String;)V +PLcom/android/server/audio/AudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V +PLcom/android/server/audio/AudioService;->setStreamVolumeInt(IIIZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->setSystemAudioMute(Z)V +PLcom/android/server/audio/AudioService;->setSystemAudioVolume(IIII)V +PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V +PLcom/android/server/audio/AudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V +PLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo; +PLcom/android/server/audio/AudioService;->systemReady()V +PLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I +PLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V +PLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V +PLcom/android/server/audio/AudioService;->updateDefaultVolumes()V +PLcom/android/server/audio/AudioService;->updateFlagsForSystemAudio(I)I +PLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V +PLcom/android/server/audio/AudioService;->updateRingerModeAffectedStreams()Z +PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V +PLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z +PLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V +PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;->(IILjava/lang/String;)V +PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;->(Ljava/lang/String;II)V +PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;->(IIIILjava/lang/String;)V +PLcom/android/server/audio/FocusRequester;->(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;I)V +PLcom/android/server/audio/FocusRequester;->finalize()V +PLcom/android/server/audio/FocusRequester;->getClientUid()I +PLcom/android/server/audio/FocusRequester;->getGainRequest()I +PLcom/android/server/audio/FocusRequester;->getGrantFlags()I +PLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V +PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z +PLcom/android/server/audio/FocusRequester;->isLockedFocusOwner()Z +PLcom/android/server/audio/FocusRequester;->release()V +PLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo; +PLcom/android/server/audio/MediaFocusControl$2;->(Lcom/android/server/audio/MediaFocusControl;Z)V +PLcom/android/server/audio/MediaFocusControl$2;->run()V +PLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;->(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V +PLcom/android/server/audio/MediaFocusControl;->-get0()[I +PLcom/android/server/audio/MediaFocusControl;->-get1()Ljava/lang/Object; +PLcom/android/server/audio/MediaFocusControl;->-get2(Lcom/android/server/audio/MediaFocusControl;)Lcom/android/server/audio/PlayerFocusEnforcer; +PLcom/android/server/audio/MediaFocusControl;->-get5(Lcom/android/server/audio/MediaFocusControl;)Z +PLcom/android/server/audio/MediaFocusControl;->(Landroid/content/Context;Lcom/android/server/audio/PlayerFocusEnforcer;)V +PLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I +PLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z +PLcom/android/server/audio/MediaFocusControl;->discardAudioFocusOwner()V +PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I +PLcom/android/server/audio/MediaFocusControl;->isLockedFocusOwner(Lcom/android/server/audio/FocusRequester;)Z +PLcom/android/server/audio/MediaFocusControl;->notifyExtFocusPolicyFocusRequest_syncAf(Landroid/media/AudioFocusInfo;ILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;)Z +PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V +PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V +PLcom/android/server/audio/MediaFocusControl;->notifyTopOfAudioFocusStack()V +PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/String;ZZ)V +PLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;II)I +PLcom/android/server/audio/MediaFocusControl;->runAudioCheckerForRingOrCallAsync(Z)V +PLcom/android/server/audio/MediaFocusControl;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V +PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;->(ILandroid/media/AudioAttributes;)V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->()V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->(Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;)V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->checkDuck(Landroid/media/AudioPlaybackConfiguration;)V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V +PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V +PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;->(Landroid/media/AudioPlaybackConfiguration;)V +PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->(Landroid/media/IPlaybackConfigDispatcher;Z)V +PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z +PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;->(II)V +PLcom/android/server/audio/PlaybackActivityMonitor;->()V +PLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z +PLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V +PLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V +PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V +PLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V +PLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V +PLcom/android/server/audio/PlaybackActivityMonitor;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V +PLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V +PLcom/android/server/audio/RecordingActivityMonitor;->(Landroid/content/Context;)V +PLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V +PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIII[ILjava/lang/String;)V +PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->$m$0()V +PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->(IILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/autofill/-$Lambda$JYqZriexGNVTrQ5cwTlcgjPSZFY$1;->run()V +PLcom/android/server/autofill/-$Lambda$nIY0QhGOcwXKKmuVD-pf4oRdtr0;->(Ljava/lang/Object;)V +PLcom/android/server/autofill/-$Lambda$tQjSpU6IVjrOfYzILn21rTYl4Vo;->(BLjava/lang/Object;)V +PLcom/android/server/autofill/-$Lambda$vJuxjgWyqc7YDAVrm5huZJMbjMg;->$m$0(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/autofill/-$Lambda$vJuxjgWyqc7YDAVrm5huZJMbjMg;->(Ljava/lang/Object;)V +PLcom/android/server/autofill/-$Lambda$vJuxjgWyqc7YDAVrm5huZJMbjMg;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/autofill/AutofillManagerService$1;->(Lcom/android/server/autofill/AutofillManagerService;)V +PLcom/android/server/autofill/AutofillManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/autofill/AutofillManagerService$2;->(Lcom/android/server/autofill/AutofillManagerService;)V +PLcom/android/server/autofill/AutofillManagerService$2;->getActiveAutofillServicePackageName()Ljava/lang/String; +PLcom/android/server/autofill/AutofillManagerService$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/autofill/AutofillManagerService$2;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/autofill/AutofillManagerService$2;->onSomePackagesChanged()V +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->(Lcom/android/server/autofill/AutofillManagerService;)V +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->addClient(Landroid/view/autofill/IAutoFillManagerClient;I)I +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->finishSession(II)V +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getFillEventHistory()Landroid/service/autofill/FillEventHistory; +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setHasCallback(IIZ)V +PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILjava/lang/String;)I +PLcom/android/server/autofill/AutofillManagerService$LocalService;->(Lcom/android/server/autofill/AutofillManagerService;)V +PLcom/android/server/autofill/AutofillManagerService$LocalService;->(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/server/autofill/AutofillManagerService$LocalService;)V +PLcom/android/server/autofill/AutofillManagerService$LocalService;->onBackKeyPressed()V +PLcom/android/server/autofill/AutofillManagerService$SettingsObserver;->(Lcom/android/server/autofill/AutofillManagerService;Landroid/os/Handler;)V +PLcom/android/server/autofill/AutofillManagerService;->-get0(Lcom/android/server/autofill/AutofillManagerService;)Landroid/content/Context; +PLcom/android/server/autofill/AutofillManagerService;->-get2(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object; +PLcom/android/server/autofill/AutofillManagerService;->-get5(Lcom/android/server/autofill/AutofillManagerService;)Lcom/android/server/autofill/ui/AutoFillUI; +PLcom/android/server/autofill/AutofillManagerService;->-wrap2(Lcom/android/server/autofill/AutofillManagerService;I)V +PLcom/android/server/autofill/AutofillManagerService;->(Landroid/content/Context;)V +PLcom/android/server/autofill/AutofillManagerService;->lambda$-com_android_server_autofill_AutofillManagerService_5890(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/autofill/AutofillManagerService;->onBootPhase(I)V +PLcom/android/server/autofill/AutofillManagerService;->onStart()V +PLcom/android/server/autofill/AutofillManagerService;->onUnlockUser(I)V +PLcom/android/server/autofill/AutofillManagerService;->setDebugLocked(Z)V +PLcom/android/server/autofill/AutofillManagerService;->startTrackingPackageChanges()V +PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked(I)V +PLcom/android/server/autofill/AutofillManagerService;->updateCachedServiceLocked(IZ)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->(Landroid/content/Context;Ljava/lang/Object;Landroid/util/LocalLog;ILcom/android/server/autofill/ui/AutoFillUI;Z)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->addClientLocked(Landroid/view/autofill/IAutoFillManagerClient;)Z +PLcom/android/server/autofill/AutofillManagerServiceImpl;->createSessionByTokenLocked(Landroid/os/IBinder;ILandroid/os/IBinder;ZLjava/lang/String;)Lcom/android/server/autofill/Session; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroySessionsLocked()V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->finishSessionLocked(II)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->getComponentNameFromSettings()Ljava/lang/String; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->getFillEventHistory(I)Landroid/service/autofill/FillEventHistory; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->getServiceComponentName()Landroid/content/ComponentName; +PLcom/android/server/autofill/AutofillManagerServiceImpl;->isEnabled()Z +PLcom/android/server/autofill/AutofillManagerServiceImpl;->isSetupCompletedLocked()Z +PLcom/android/server/autofill/AutofillManagerServiceImpl;->pruneAbandonedSessionsLocked()V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->removeSessionLocked(I)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetLastResponse()V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->sendStateToClients(Z)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->setHasCallback(IIZ)V +PLcom/android/server/autofill/AutofillManagerServiceImpl;->startSessionLocked(Landroid/os/IBinder;ILandroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;ZILjava/lang/String;)I +PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateLocked(Z)V +PLcom/android/server/autofill/Helper;->append(Ljava/lang/StringBuilder;Landroid/os/Bundle;)V +PLcom/android/server/autofill/Helper;->bundleToString(Landroid/os/Bundle;)Ljava/lang/String; +PLcom/android/server/autofill/RemoteFillService$MyHandler$1;->(Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService$MyHandler$1;->executeMessage(Landroid/os/Message;)V +PLcom/android/server/autofill/RemoteFillService$MyHandler;->(Lcom/android/server/autofill/RemoteFillService;Landroid/content/Context;)V +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest$1;->(Lcom/android/server/autofill/RemoteFillService$PendingFillRequest;Landroid/service/autofill/FillRequest;)V +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest$1;->onCancellable(Landroid/os/ICancellationSignal;)V +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest$1;->onSuccess(Landroid/service/autofill/FillResponse;)V +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->-set0(Lcom/android/server/autofill/RemoteFillService$PendingFillRequest;Landroid/os/ICancellationSignal;)Landroid/os/ICancellationSignal; +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->(Landroid/service/autofill/FillRequest;Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->run()V +PLcom/android/server/autofill/RemoteFillService$PendingRequest;->(Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService$PendingRequest;->finish()Z +PLcom/android/server/autofill/RemoteFillService$PendingRequest;->getService()Lcom/android/server/autofill/RemoteFillService; +PLcom/android/server/autofill/RemoteFillService$PendingRequest;->isCancelledLocked()Z +PLcom/android/server/autofill/RemoteFillService$PendingRequest;->isFinal()Z +PLcom/android/server/autofill/RemoteFillService$RemoteServiceConnection;->(Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService$RemoteServiceConnection;->(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$RemoteServiceConnection;)V +PLcom/android/server/autofill/RemoteFillService$RemoteServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/autofill/RemoteFillService;->-get0(Lcom/android/server/autofill/RemoteFillService;)Landroid/service/autofill/IAutoFillService; +PLcom/android/server/autofill/RemoteFillService;->-get1(Lcom/android/server/autofill/RemoteFillService;)Z +PLcom/android/server/autofill/RemoteFillService;->-get2(Lcom/android/server/autofill/RemoteFillService;)Landroid/content/ComponentName; +PLcom/android/server/autofill/RemoteFillService;->-get4(Lcom/android/server/autofill/RemoteFillService;)Z +PLcom/android/server/autofill/RemoteFillService;->-get5(Lcom/android/server/autofill/RemoteFillService;)Lcom/android/internal/os/HandlerCaller; +PLcom/android/server/autofill/RemoteFillService;->-get6(Lcom/android/server/autofill/RemoteFillService;)Lcom/android/server/autofill/RemoteFillService$PendingRequest; +PLcom/android/server/autofill/RemoteFillService;->-set0(Lcom/android/server/autofill/RemoteFillService;Landroid/service/autofill/IAutoFillService;)Landroid/service/autofill/IAutoFillService; +PLcom/android/server/autofill/RemoteFillService;->-set1(Lcom/android/server/autofill/RemoteFillService;Z)Z +PLcom/android/server/autofill/RemoteFillService;->-set2(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)Lcom/android/server/autofill/RemoteFillService$PendingRequest; +PLcom/android/server/autofill/RemoteFillService;->-set3(Lcom/android/server/autofill/RemoteFillService;Z)Z +PLcom/android/server/autofill/RemoteFillService;->-wrap1(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;IILandroid/service/autofill/FillResponse;)V +PLcom/android/server/autofill/RemoteFillService;->-wrap6(Lcom/android/server/autofill/RemoteFillService;)V +PLcom/android/server/autofill/RemoteFillService;->-wrap7(Lcom/android/server/autofill/RemoteFillService;Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V +PLcom/android/server/autofill/RemoteFillService;->(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;)V +PLcom/android/server/autofill/RemoteFillService;->cancelCurrentRequest()I +PLcom/android/server/autofill/RemoteFillService;->cancelScheduledUnbind()V +PLcom/android/server/autofill/RemoteFillService;->destroy()V +PLcom/android/server/autofill/RemoteFillService;->dispatchOnFillRequestSuccess(Lcom/android/server/autofill/RemoteFillService$PendingRequest;IILandroid/service/autofill/FillResponse;)V +PLcom/android/server/autofill/RemoteFillService;->ensureBound()V +PLcom/android/server/autofill/RemoteFillService;->ensureUnbound()V +PLcom/android/server/autofill/RemoteFillService;->handleDestroy()V +PLcom/android/server/autofill/RemoteFillService;->handlePendingRequest(Lcom/android/server/autofill/RemoteFillService$PendingRequest;)V +PLcom/android/server/autofill/RemoteFillService;->handleResponseCallbackCommon(Lcom/android/server/autofill/RemoteFillService$PendingRequest;)Z +PLcom/android/server/autofill/RemoteFillService;->isBound()Z +PLcom/android/server/autofill/RemoteFillService;->lambda$-com_android_server_autofill_RemoteFillService_9957(Lcom/android/server/autofill/RemoteFillService$PendingRequest;ILandroid/service/autofill/FillResponse;I)V +PLcom/android/server/autofill/RemoteFillService;->onFillRequest(Landroid/service/autofill/FillRequest;)V +PLcom/android/server/autofill/RemoteFillService;->scheduleUnbind()V +PLcom/android/server/autofill/Session$1;->(Lcom/android/server/autofill/Session;)V +PLcom/android/server/autofill/Session$1;->send(ILandroid/os/Bundle;)V +PLcom/android/server/autofill/Session;->-get0(Lcom/android/server/autofill/Session;)Landroid/os/Bundle; +PLcom/android/server/autofill/Session;->-get1(Lcom/android/server/autofill/Session;)Ljava/util/ArrayList; +PLcom/android/server/autofill/Session;->-get2(Lcom/android/server/autofill/Session;)Ljava/lang/Object; +PLcom/android/server/autofill/Session;->-get3(Lcom/android/server/autofill/Session;)Lcom/android/server/autofill/RemoteFillService; +PLcom/android/server/autofill/Session;->-set0(Lcom/android/server/autofill/Session;Ljava/util/ArrayList;)Ljava/util/ArrayList; +PLcom/android/server/autofill/Session;->-wrap0(Lcom/android/server/autofill/Session;)V +PLcom/android/server/autofill/Session;->-wrap1(Lcom/android/server/autofill/Session;Landroid/service/autofill/FillContext;I)V +PLcom/android/server/autofill/Session;->(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/ui/AutoFillUI;Landroid/content/Context;Lcom/android/internal/os/HandlerCaller;ILjava/lang/Object;IILandroid/os/IBinder;Landroid/os/IBinder;ZLandroid/content/ComponentName;Ljava/lang/String;)V +PLcom/android/server/autofill/Session;->cancelCurrentRequestLocked()V +PLcom/android/server/autofill/Session;->destroyLocked()Lcom/android/server/autofill/RemoteFillService; +PLcom/android/server/autofill/Session;->fillContextWithAllowedValuesLocked(Landroid/service/autofill/FillContext;I)V +PLcom/android/server/autofill/Session;->getClient()Landroid/view/autofill/IAutoFillManagerClient; +PLcom/android/server/autofill/Session;->getIdsOfAllViewStatesLocked()[Landroid/view/autofill/AutofillId; +PLcom/android/server/autofill/Session;->getUiForShowing()Lcom/android/server/autofill/ui/AutoFillUI; +PLcom/android/server/autofill/Session;->isIgnoredLocked(Landroid/view/autofill/AutofillId;)Z +PLcom/android/server/autofill/Session;->isSaveUiPending()Z +PLcom/android/server/autofill/Session;->notifyUnavailableToClient()V +PLcom/android/server/autofill/Session;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;ILjava/lang/String;)V +PLcom/android/server/autofill/Session;->removeSelf()V +PLcom/android/server/autofill/Session;->removeSelfLocked()V +PLcom/android/server/autofill/Session;->requestNewFillResponseLocked(I)V +PLcom/android/server/autofill/Session;->updateLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V +PLcom/android/server/autofill/ViewState;->(Lcom/android/server/autofill/Session;Landroid/view/autofill/AutofillId;Lcom/android/server/autofill/ViewState$Listener;I)V +PLcom/android/server/autofill/ViewState;->getAutofilledValue()Landroid/view/autofill/AutofillValue; +PLcom/android/server/autofill/ViewState;->getCurrentValue()Landroid/view/autofill/AutofillValue; +PLcom/android/server/autofill/ViewState;->maybeCallOnFillReady(I)V +PLcom/android/server/autofill/ViewState;->setCurrentValue(Landroid/view/autofill/AutofillValue;)V +PLcom/android/server/autofill/ViewState;->setState(I)V +PLcom/android/server/autofill/ViewState;->update(Landroid/view/autofill/AutofillValue;Landroid/graphics/Rect;I)V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->$m$0()V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8$3;->run()V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->$m$0()V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->(BLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/autofill/ui/-$Lambda$CJSLmckRMp4fHqnN2ZN5WFtAFP8;->run()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$0()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$1()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$2()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->$m$3()V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->(BLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/autofill/ui/-$Lambda$TTOM-vgvIOJotO3pKgpKhg7oNlE;->run()V +PLcom/android/server/autofill/ui/AutoFillUI;->(Landroid/content/Context;)V +PLcom/android/server/autofill/ui/AutoFillUI;->clearCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroyAll(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroyAllUiThread(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->destroySaveUiUiThread(ILandroid/view/autofill/IAutoFillManagerClient;)V +PLcom/android/server/autofill/ui/AutoFillUI;->filterFillUi(Ljava/lang/String;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideAll(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideAllUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUi(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->hideSaveUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12395(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_12645(ILandroid/view/autofill/IAutoFillManagerClient;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3226(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_3546(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4552(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/AutoFillUI;->lambda$-com_android_server_autofill_ui_AutoFillUI_4826(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V +PLcom/android/server/autofill/ui/AutoFillUI;->setCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V +PLcom/android/server/autofill/ui/OverlayControl;->(Landroid/content/Context;)V +PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->$m$0()V +PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->(BLjava/lang/Object;)V +PLcom/android/server/backup/-$Lambda$UGPbw6RN8_4TeqlxQ94PEo_ieak;->run()V +PLcom/android/server/backup/BackupManagerService$1;->(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService$2;->(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService$2;->onTransportBound(Lcom/android/internal/backup/IBackupTransport;)Z +PLcom/android/server/backup/BackupManagerService$3;->(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService$4;->(Lcom/android/server/backup/BackupManagerService;J)V +PLcom/android/server/backup/BackupManagerService$4;->run()V +PLcom/android/server/backup/BackupManagerService$8;->(Lcom/android/server/backup/BackupManagerService;Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V +PLcom/android/server/backup/BackupManagerService$8;->onSuccess(Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService$BackupHandler;->(Lcom/android/server/backup/BackupManagerService;Landroid/os/Looper;)V +PLcom/android/server/backup/BackupManagerService$BackupHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;J)V +PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Lcom/android/server/backup/BackupManagerService$FullBackupEntry;)I +PLcom/android/server/backup/BackupManagerService$FullBackupEntry;->compareTo(Ljava/lang/Object;)I +PLcom/android/server/backup/BackupManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/backup/BackupManagerService$Lifecycle;->onStart()V +PLcom/android/server/backup/BackupManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/backup/BackupManagerService$ProvisionedObserver;->(Lcom/android/server/backup/BackupManagerService;Landroid/os/Handler;)V +PLcom/android/server/backup/BackupManagerService$RunBackupReceiver;->(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService$RunBackupReceiver;->(Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService$RunBackupReceiver;)V +PLcom/android/server/backup/BackupManagerService$RunInitializeReceiver;->(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService$RunInitializeReceiver;->(Lcom/android/server/backup/BackupManagerService;Lcom/android/server/backup/BackupManagerService$RunInitializeReceiver;)V +PLcom/android/server/backup/BackupManagerService;->-get3(Lcom/android/server/backup/BackupManagerService;)Landroid/content/pm/PackageManager; +PLcom/android/server/backup/BackupManagerService;->-get6(Lcom/android/server/backup/BackupManagerService;)Lcom/android/server/backup/TransportManager; +PLcom/android/server/backup/BackupManagerService;->-wrap11(I)Z +PLcom/android/server/backup/BackupManagerService;->-wrap17(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->-wrap23(Lcom/android/server/backup/BackupManagerService;Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->-wrap25(Lcom/android/server/backup/BackupManagerService;)V +PLcom/android/server/backup/BackupManagerService;->-wrap5(Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/backup/BackupManagerService;->-wrap9(I)Z +PLcom/android/server/backup/BackupManagerService;->(Landroid/content/Context;Lcom/android/server/backup/Trampoline;)V +PLcom/android/server/backup/BackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/backup/BackupManagerService;->backupSettingMigrated(I)Z +PLcom/android/server/backup/BackupManagerService;->enqueueFullBackup(Ljava/lang/String;J)V +PLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String; +PLcom/android/server/backup/BackupManagerService;->initPackageTracking()V +PLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z +PLcom/android/server/backup/BackupManagerService;->lambda$-com_android_server_backup_BackupManagerService_56585()V +PLcom/android/server/backup/BackupManagerService;->parseLeftoverJournals()V +PLcom/android/server/backup/BackupManagerService;->readBackupEnableState(I)Z +PLcom/android/server/backup/BackupManagerService;->removePackageFromSetLocked(Ljava/util/HashSet;Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->removePackageParticipantsLocked([Ljava/lang/String;I)V +PLcom/android/server/backup/BackupManagerService;->scheduleNextFullBackupJob(J)V +PLcom/android/server/backup/BackupManagerService;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V +PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(Z)V +PLcom/android/server/backup/BackupManagerService;->updateStateForTransport(Ljava/lang/String;)V +PLcom/android/server/backup/BackupManagerService;->writeBackupEnableState(ZI)V +PLcom/android/server/backup/BackupManagerService;->writeFullBackupScheduleAsync()V +PLcom/android/server/backup/FullBackupJob;->schedule(Landroid/content/Context;J)V +PLcom/android/server/backup/KeyValueBackupJob;->cancel(Landroid/content/Context;)V +PLcom/android/server/backup/Trampoline;->(Landroid/content/Context;)V +PLcom/android/server/backup/Trampoline;->createBackupManagerService()Lcom/android/server/backup/BackupManagerServiceInterface; +PLcom/android/server/backup/Trampoline;->createService()Lcom/android/server/backup/BackupManagerServiceInterface; +PLcom/android/server/backup/Trampoline;->getCurrentTransport()Ljava/lang/String; +PLcom/android/server/backup/Trampoline;->getSuppressFile()Ljava/io/File; +PLcom/android/server/backup/Trampoline;->initialize(I)V +PLcom/android/server/backup/Trampoline;->isBackupDisabled()Z +PLcom/android/server/backup/Trampoline;->isBackupEnabled()Z +PLcom/android/server/backup/Trampoline;->isRefactoredServiceEnabled()Z +PLcom/android/server/backup/Trampoline;->selectBackupTransportAsync(Landroid/content/ComponentName;Landroid/app/backup/ISelectBackupTransportCallback;)V +PLcom/android/server/backup/Trampoline;->setBackupEnabled(Z)V +PLcom/android/server/backup/TransportManager$RebindOnTimeoutHandler;->(Lcom/android/server/backup/TransportManager;Landroid/os/Looper;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->-wrap0(Lcom/android/server/backup/TransportManager$TransportConnection;)Lcom/android/internal/backup/IBackupTransport; +PLcom/android/server/backup/TransportManager$TransportConnection;->-wrap2(Lcom/android/server/backup/TransportManager$TransportConnection;Landroid/app/backup/SelectBackupTransportCallback;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->-wrap3(Lcom/android/server/backup/TransportManager$TransportConnection;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->(Lcom/android/server/backup/TransportManager;Landroid/content/ComponentName;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->(Lcom/android/server/backup/TransportManager;Landroid/content/ComponentName;Lcom/android/server/backup/TransportManager$TransportConnection;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->addListener(Landroid/app/backup/SelectBackupTransportCallback;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->bindIfUnbound()V +PLcom/android/server/backup/TransportManager$TransportConnection;->getBinder()Lcom/android/internal/backup/IBackupTransport; +PLcom/android/server/backup/TransportManager$TransportConnection;->getRebindTimeout()J +PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +PLcom/android/server/backup/TransportManager$TransportConnection;->scheduleRebindTimeout(Landroid/content/ComponentName;)V +PLcom/android/server/backup/TransportManager;->-get0(Lcom/android/server/backup/TransportManager;)Ljava/util/Map; +PLcom/android/server/backup/TransportManager;->-get1(Lcom/android/server/backup/TransportManager;)Landroid/content/Context; +PLcom/android/server/backup/TransportManager;->-get2(Lcom/android/server/backup/TransportManager;)Landroid/os/Handler; +PLcom/android/server/backup/TransportManager;->-get3(Lcom/android/server/backup/TransportManager;)Lcom/android/server/backup/TransportManager$TransportBoundListener; +PLcom/android/server/backup/TransportManager;->-get4(Lcom/android/server/backup/TransportManager;)Ljava/lang/Object; +PLcom/android/server/backup/TransportManager;->(Landroid/content/Context;Ljava/util/Set;Ljava/lang/String;Lcom/android/server/backup/TransportManager$TransportBoundListener;Landroid/os/Looper;)V +PLcom/android/server/backup/TransportManager;->bindToAllInternal(Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/backup/TransportManager;->bindToTransport(Landroid/content/ComponentName;Landroid/content/ServiceConnection;)Z +PLcom/android/server/backup/TransportManager;->ensureTransportReady(Landroid/content/ComponentName;Landroid/app/backup/SelectBackupTransportCallback;)V +PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String; +PLcom/android/server/backup/TransportManager;->getTransportBinder(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport; +PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z +PLcom/android/server/backup/TransportManager;->log_verbose(Ljava/lang/String;)V +PLcom/android/server/backup/TransportManager;->onPackageAdded(Ljava/lang/String;)V +PLcom/android/server/backup/TransportManager;->onPackageChanged(Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/backup/TransportManager;->registerAllTransports()V +PLcom/android/server/backup/TransportManager;->selectTransport(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/backup/TransportManager;->tryBindTransport(Landroid/content/ComponentName;)V +PLcom/android/server/camera/CameraServiceProxy$1;->(Lcom/android/server/camera/CameraServiceProxy;)V +PLcom/android/server/camera/CameraServiceProxy$2;->(Lcom/android/server/camera/CameraServiceProxy;)V +PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->(ILjava/lang/String;)V +PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->markCompleted()V +PLcom/android/server/camera/CameraServiceProxy;->-wrap0(I)Ljava/lang/String; +PLcom/android/server/camera/CameraServiceProxy;->-wrap1(I)Ljava/lang/String; +PLcom/android/server/camera/CameraServiceProxy;->-wrap4(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/camera/CameraServiceProxy;->(Landroid/content/Context;)V +PLcom/android/server/camera/CameraServiceProxy;->cameraFacingToString(I)Ljava/lang/String; +PLcom/android/server/camera/CameraServiceProxy;->cameraStateToString(I)Ljava/lang/String; +PLcom/android/server/camera/CameraServiceProxy;->getEnabledUserHandles(I)Ljava/util/Set; +PLcom/android/server/camera/CameraServiceProxy;->notifyMediaserverLocked(ILjava/util/Set;)Z +PLcom/android/server/camera/CameraServiceProxy;->notifyNfcService(Z)V +PLcom/android/server/camera/CameraServiceProxy;->onStart()V +PLcom/android/server/camera/CameraServiceProxy;->onStartUser(I)V +PLcom/android/server/camera/CameraServiceProxy;->switchUserLocked(I)V +PLcom/android/server/camera/CameraServiceProxy;->toArray(Ljava/util/Collection;)[I +PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/camera/CameraStatsJobService;->schedule(Landroid/content/Context;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->(Lcom/android/server/clipboard/ClipboardService;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V +PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/clipboard/ClipboardService$ListenerInfo;->(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;)V +PLcom/android/server/clipboard/ClipboardService$PerUserClipboard;->(Lcom/android/server/clipboard/ClipboardService;I)V +PLcom/android/server/clipboard/ClipboardService;->-wrap0(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;I)Z +PLcom/android/server/clipboard/ClipboardService;->-wrap1(Lcom/android/server/clipboard/ClipboardService;)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; +PLcom/android/server/clipboard/ClipboardService;->(Landroid/content/Context;)V +PLcom/android/server/clipboard/ClipboardService;->getClipboard()Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; +PLcom/android/server/clipboard/ClipboardService;->getClipboard(I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; +PLcom/android/server/clipboard/ClipboardService;->onStart()V +PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->$m$1(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->(B)V +PLcom/android/server/companion/-$Lambda$AGIrYO-M2umJsGqqjbn8lgb57iM;->apply(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/companion/CompanionDeviceManagerService$1;->(Lcom/android/server/companion/CompanionDeviceManagerService;)V +PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->(Lcom/android/server/companion/CompanionDeviceManagerService;)V +PLcom/android/server/companion/CompanionDeviceManagerService;->(Landroid/content/Context;)V +PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$-com_android_server_companion_CompanionDeviceManagerService_22200(Ljava/lang/Integer;)Landroid/util/AtomicFile; +PLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V +PLcom/android/server/companion/CompanionDeviceManagerService;->registerPackageMonitor()V +PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;->$m$0(Ljava/lang/Object;)I +PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;->()V +PLcom/android/server/connectivity/-$Lambda$MsbVMSDQhSjxBVLOF10aov6ySH4;->applyAsInt(Ljava/lang/Object;)I +PLcom/android/server/connectivity/-$Lambda$wTD5_jk703INH0KD5mtMJL_CwnI;->(Ljava/lang/Object;)V +PLcom/android/server/connectivity/DataConnectionStats$1;->(Lcom/android/server/connectivity/DataConnectionStats;)V +PLcom/android/server/connectivity/DataConnectionStats;->(Landroid/content/Context;)V +PLcom/android/server/connectivity/DataConnectionStats;->notePhoneDataConnectionState()V +PLcom/android/server/connectivity/DataConnectionStats;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/connectivity/DataConnectionStats;->startMonitoring()V +PLcom/android/server/connectivity/DataConnectionStats;->updateSimState(Landroid/content/Intent;)V +PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->(Lcom/android/server/connectivity/IpConnectivityMetrics;)V +PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforceConnectivityInternalPermission()V +PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforcePermission(Ljava/lang/String;)V +PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I +PLcom/android/server/connectivity/IpConnectivityMetrics;->-wrap0(Lcom/android/server/connectivity/IpConnectivityMetrics;Landroid/net/ConnectivityMetricsEvent;)I +PLcom/android/server/connectivity/IpConnectivityMetrics;->(Landroid/content/Context;)V +PLcom/android/server/connectivity/IpConnectivityMetrics;->(Landroid/content/Context;Ljava/util/function/ToIntFunction;)V +PLcom/android/server/connectivity/IpConnectivityMetrics;->append(Landroid/net/ConnectivityMetricsEvent;)I +PLcom/android/server/connectivity/IpConnectivityMetrics;->bufferCapacity()I +PLcom/android/server/connectivity/IpConnectivityMetrics;->initBuffer()V +PLcom/android/server/connectivity/IpConnectivityMetrics;->isRateLimited(Landroid/net/ConnectivityMetricsEvent;)Z +PLcom/android/server/connectivity/IpConnectivityMetrics;->lambda$-com_android_server_connectivity_IpConnectivityMetrics_10868(Landroid/content/Context;)I +PLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBuckets()Landroid/util/ArrayMap; +PLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V +PLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V +PLcom/android/server/connectivity/KeepaliveTracker;->(Landroid/os/Handler;)V +PLcom/android/server/connectivity/KeepaliveTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/connectivity/KeepaliveTracker;->handleCheckKeepalivesStillValid(Lcom/android/server/connectivity/NetworkAgentInfo;)V +PLcom/android/server/connectivity/LingerMonitor;->(Landroid/content/Context;Lcom/android/server/connectivity/NetworkNotificationManager;IJ)V +PLcom/android/server/connectivity/LingerMonitor;->makeTransportToNameMap()Ljava/util/HashMap; +PLcom/android/server/connectivity/MockableSystemProperties;->()V +PLcom/android/server/connectivity/MockableSystemProperties;->get(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/connectivity/MockableSystemProperties;->getBoolean(Ljava/lang/String;Z)Z +PLcom/android/server/connectivity/MockableSystemProperties;->getInt(Ljava/lang/String;I)I +PLcom/android/server/connectivity/MockableSystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/connectivity/Nat464Xlat;->requiresClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z +PLcom/android/server/connectivity/NetdEventListenerService;->(Landroid/content/Context;)V +PLcom/android/server/connectivity/NetdEventListenerService;->(Landroid/net/ConnectivityManager;)V +PLcom/android/server/connectivity/NetdEventListenerService;->getTransports(I)J +PLcom/android/server/connectivity/NetdEventListenerService;->makeConnectStats(I)Landroid/net/metrics/ConnectStats; +PLcom/android/server/connectivity/NetdEventListenerService;->makeDnsEvent(I)Landroid/net/metrics/DnsEvent; +PLcom/android/server/connectivity/NetworkAgentInfo;->-getandroid-net-NetworkRequest$TypeSwitchesValues()[I +PLcom/android/server/connectivity/NetworkAgentInfo;->(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkMisc;Landroid/net/NetworkRequest;Lcom/android/server/ConnectivityService;)V +PLcom/android/server/connectivity/NetworkAgentInfo;->addRequest(Landroid/net/NetworkRequest;)Z +PLcom/android/server/connectivity/NetworkAgentInfo;->dumpLingerTimers(Ljava/io/PrintWriter;)V +PLcom/android/server/connectivity/NetworkAgentInfo;->ignoreWifiUnvalidationPenalty()Z +PLcom/android/server/connectivity/NetworkAgentInfo;->maybeStopClat()V +PLcom/android/server/connectivity/NetworkAgentInfo;->name()Ljava/lang/String; +PLcom/android/server/connectivity/NetworkAgentInfo;->numBackgroundNetworkRequests()I +PLcom/android/server/connectivity/NetworkAgentInfo;->removeRequest(I)V +PLcom/android/server/connectivity/NetworkAgentInfo;->toString()Ljava/lang/String; +PLcom/android/server/connectivity/NetworkAgentInfo;->unlingerRequest(Landroid/net/NetworkRequest;)Z +PLcom/android/server/connectivity/NetworkAgentInfo;->updateClat(Landroid/os/INetworkManagementService;)V +PLcom/android/server/connectivity/NetworkAgentInfo;->updateRequestCounts(ZLandroid/net/NetworkRequest;)V +PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;->(Lcom/android/server/connectivity/NetworkMonitor;ZLandroid/net/ProxyInfo;Ljava/net/URL;Ljava/net/URL;Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;->result()Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor$1ProbeThread;->run()V +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult;->(I)V +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult;->(ILjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult;->isPortal()Z +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult;->isSuccessful()Z +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalState;->(Lcom/android/server/connectivity/NetworkMonitor;)V +PLcom/android/server/connectivity/NetworkMonitor$CaptivePortalState;->(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalState;)V +PLcom/android/server/connectivity/NetworkMonitor$DefaultState;->(Lcom/android/server/connectivity/NetworkMonitor;)V +PLcom/android/server/connectivity/NetworkMonitor$DefaultState;->(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$DefaultState;)V +PLcom/android/server/connectivity/NetworkMonitor$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/connectivity/NetworkMonitor$EvaluatingState;->(Lcom/android/server/connectivity/NetworkMonitor;)V +PLcom/android/server/connectivity/NetworkMonitor$EvaluatingState;->(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$EvaluatingState;)V +PLcom/android/server/connectivity/NetworkMonitor$EvaluatingState;->enter()V +PLcom/android/server/connectivity/NetworkMonitor$EvaluatingState;->exit()V +PLcom/android/server/connectivity/NetworkMonitor$EvaluatingState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/connectivity/NetworkMonitor$EvaluationResult;->(Ljava/lang/String;IZ)V +PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;->(Lcom/android/server/connectivity/NetworkMonitor;)V +PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;->(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;)V +PLcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState;->exit()V +PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;->(Landroid/net/Network;)V +PLcom/android/server/connectivity/NetworkMonitor$OneAddressPerFamilyNetwork;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress; +PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;->(Lcom/android/server/connectivity/NetworkMonitor;)V +PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;->(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$ValidatedState;)V +PLcom/android/server/connectivity/NetworkMonitor$ValidatedState;->enter()V +PLcom/android/server/connectivity/NetworkMonitor$ValidationStage;->(Ljava/lang/String;IZ)V +PLcom/android/server/connectivity/NetworkMonitor;->-get10(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get12(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkAgentInfo; +PLcom/android/server/connectivity/NetworkMonitor;->-get13(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get14(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get15(Lcom/android/server/connectivity/NetworkMonitor;)Z +PLcom/android/server/connectivity/NetworkMonitor;->-get16(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State; +PLcom/android/server/connectivity/NetworkMonitor;->-get17(Lcom/android/server/connectivity/NetworkMonitor;)I +PLcom/android/server/connectivity/NetworkMonitor;->-get2(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/os/Handler; +PLcom/android/server/connectivity/NetworkMonitor;->-get4(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/net/NetworkRequest; +PLcom/android/server/connectivity/NetworkMonitor;->-get6(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/internal/util/State; +PLcom/android/server/connectivity/NetworkMonitor;->-get7(Lcom/android/server/connectivity/NetworkMonitor;)Landroid/net/util/Stopwatch; +PLcom/android/server/connectivity/NetworkMonitor;->-set3(Lcom/android/server/connectivity/NetworkMonitor;I)I +PLcom/android/server/connectivity/NetworkMonitor;->-set7(Lcom/android/server/connectivity/NetworkMonitor;I)I +PLcom/android/server/connectivity/NetworkMonitor;->-wrap0(Lcom/android/server/connectivity/NetworkMonitor;Landroid/net/ProxyInfo;Ljava/net/URL;I)Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor;->-wrap1(Lcom/android/server/connectivity/NetworkMonitor;)Lcom/android/server/connectivity/NetworkMonitor$ValidationStage; +PLcom/android/server/connectivity/NetworkMonitor;->-wrap2(Lcom/android/server/connectivity/NetworkMonitor;Lcom/android/server/connectivity/NetworkMonitor$ValidationStage;Lcom/android/server/connectivity/NetworkMonitor$EvaluationResult;)I +PLcom/android/server/connectivity/NetworkMonitor;->-wrap3(Lcom/android/server/connectivity/NetworkMonitor;I)V +PLcom/android/server/connectivity/NetworkMonitor;->-wrap4(Lcom/android/server/connectivity/NetworkMonitor;I)V +PLcom/android/server/connectivity/NetworkMonitor;->(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkRequest;)V +PLcom/android/server/connectivity/NetworkMonitor;->(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkRequest;Landroid/net/metrics/IpConnectivityLog;)V +PLcom/android/server/connectivity/NetworkMonitor;->getCaptivePortalServerHttpUrl(Landroid/content/Context;)Ljava/lang/String; +PLcom/android/server/connectivity/NetworkMonitor;->getCaptivePortalServerHttpsUrl(Landroid/content/Context;)Ljava/lang/String; +PLcom/android/server/connectivity/NetworkMonitor;->getCaptivePortalUserAgent(Landroid/content/Context;)Ljava/lang/String; +PLcom/android/server/connectivity/NetworkMonitor;->getSetting(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/connectivity/NetworkMonitor;->getValidationLogs()Landroid/util/LocalLog$ReadOnlyLocalLog; +PLcom/android/server/connectivity/NetworkMonitor;->isCaptivePortal()Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor;->log(Ljava/lang/String;)V +PLcom/android/server/connectivity/NetworkMonitor;->logNetworkEvent(I)V +PLcom/android/server/connectivity/NetworkMonitor;->logValidationProbe(JII)V +PLcom/android/server/connectivity/NetworkMonitor;->makeCaptivePortalFallbackUrls(Landroid/content/Context;)[Ljava/net/URL; +PLcom/android/server/connectivity/NetworkMonitor;->makeURL(Ljava/lang/String;)Ljava/net/URL; +PLcom/android/server/connectivity/NetworkMonitor;->maybeLogEvaluationResult(I)V +PLcom/android/server/connectivity/NetworkMonitor;->networkEventType(Lcom/android/server/connectivity/NetworkMonitor$ValidationStage;Lcom/android/server/connectivity/NetworkMonitor$EvaluationResult;)I +PLcom/android/server/connectivity/NetworkMonitor;->sendDnsAndHttpProbes(Landroid/net/ProxyInfo;Ljava/net/URL;I)Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor;->sendDnsProbe(Ljava/lang/String;)V +PLcom/android/server/connectivity/NetworkMonitor;->sendHttpProbe(Ljava/net/URL;I)Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor;->sendNetworkConditionsBroadcast(ZZJJ)V +PLcom/android/server/connectivity/NetworkMonitor;->sendParallelHttpProbes(Landroid/net/ProxyInfo;Ljava/net/URL;Ljava/net/URL;)Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; +PLcom/android/server/connectivity/NetworkMonitor;->validationLog(ILjava/lang/Object;Ljava/lang/String;)V +PLcom/android/server/connectivity/NetworkMonitor;->validationLog(Ljava/lang/String;)V +PLcom/android/server/connectivity/NetworkMonitor;->validationStage()Lcom/android/server/connectivity/NetworkMonitor$ValidationStage; +PLcom/android/server/connectivity/NetworkNotificationManager;->(Landroid/content/Context;Landroid/telephony/TelephonyManager;Landroid/app/NotificationManager;)V +PLcom/android/server/connectivity/NetworkNotificationManager;->clearNotification(I)V +PLcom/android/server/connectivity/PacManager$1;->(Lcom/android/server/connectivity/PacManager;)V +PLcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver;->(Lcom/android/server/connectivity/PacManager;)V +PLcom/android/server/connectivity/PacManager;->(Landroid/content/Context;Landroid/os/Handler;I)V +PLcom/android/server/connectivity/PermissionMonitor$1;->(Lcom/android/server/connectivity/PermissionMonitor;)V +PLcom/android/server/connectivity/PermissionMonitor;->-wrap0(Lcom/android/server/connectivity/PermissionMonitor;Ljava/lang/String;I)V +PLcom/android/server/connectivity/PermissionMonitor;->-wrap1(Lcom/android/server/connectivity/PermissionMonitor;I)V +PLcom/android/server/connectivity/PermissionMonitor;->(Landroid/content/Context;Landroid/os/INetworkManagementService;)V +PLcom/android/server/connectivity/PermissionMonitor;->hasRestrictedNetworkPermission(Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/connectivity/PermissionMonitor;->highestPermissionForUid(Ljava/lang/Boolean;Ljava/lang/String;)Ljava/lang/Boolean; +PLcom/android/server/connectivity/PermissionMonitor;->log(Ljava/lang/String;)V +PLcom/android/server/connectivity/PermissionMonitor;->onAppAdded(Ljava/lang/String;I)V +PLcom/android/server/connectivity/PermissionMonitor;->onAppRemoved(I)V +PLcom/android/server/connectivity/Tethering$3;->(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering$3;->updateInterfaceState(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V +PLcom/android/server/connectivity/Tethering$3;->updateLinkProperties(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/Tethering$StateReceiver;->(Lcom/android/server/connectivity/Tethering;)V +PLcom/android/server/connectivity/Tethering$StateReceiver;->(Lcom/android/server/connectivity/Tethering;Lcom/android/server/connectivity/Tethering$StateReceiver;)V +PLcom/android/server/connectivity/Tethering$StateReceiver;->handleConnectivityAction(Landroid/content/Intent;)V +PLcom/android/server/connectivity/Tethering$StateReceiver;->handleUsbAction(Landroid/content/Intent;)V +PLcom/android/server/connectivity/Tethering$StateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$ErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->excludeDownstreamInterface(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes()V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes(Ljava/util/Set;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetDnsForwardersErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingDisabledErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingEnabledErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$StartTetheringErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$StopTetheringErrorState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM$TetherModeAliveState;->(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-get1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;)Ljava/util/ArrayList; +PLcom/android/server/connectivity/Tethering$TetherMasterSM;->-wrap1(Lcom/android/server/connectivity/Tethering$TetherMasterSM;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM;->(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Landroid/os/Looper;)V +PLcom/android/server/connectivity/Tethering$TetherMasterSM;->handleInterfaceServingStateInactive(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/Tethering$TetherState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/Tethering;->-get10(Lcom/android/server/connectivity/Tethering;)Lcom/android/internal/util/StateMachine; +PLcom/android/server/connectivity/Tethering;->-get11(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor; +PLcom/android/server/connectivity/Tethering;->-get3(Lcom/android/server/connectivity/Tethering;)Ljava/util/HashSet; +PLcom/android/server/connectivity/Tethering;->-get4(Lcom/android/server/connectivity/Tethering;)Landroid/net/util/SharedLog; +PLcom/android/server/connectivity/Tethering;->-get6(Lcom/android/server/connectivity/Tethering;)Lcom/android/server/connectivity/tethering/OffloadController; +PLcom/android/server/connectivity/Tethering;->-get7(Lcom/android/server/connectivity/Tethering;)Ljava/lang/Object; +PLcom/android/server/connectivity/Tethering;->-get8(Lcom/android/server/connectivity/Tethering;)Z +PLcom/android/server/connectivity/Tethering;->-set1(Lcom/android/server/connectivity/Tethering;Z)Z +PLcom/android/server/connectivity/Tethering;->-set2(Lcom/android/server/connectivity/Tethering;Z)Z +PLcom/android/server/connectivity/Tethering;->-wrap13(Lcom/android/server/connectivity/Tethering;)V +PLcom/android/server/connectivity/Tethering;->-wrap6(Lcom/android/server/connectivity/Tethering;Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/Tethering;->-wrap8(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V +PLcom/android/server/connectivity/Tethering;->-wrap9(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/Tethering;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/os/Looper;Lcom/android/server/connectivity/MockableSystemProperties;Lcom/android/server/connectivity/tethering/TetheringDependencies;)V +PLcom/android/server/connectivity/Tethering;->argsContain([Ljava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/connectivity/Tethering;->clearTetheredNotification()V +PLcom/android/server/connectivity/Tethering;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->getConnectivityManager()Landroid/net/ConnectivityManager; +PLcom/android/server/connectivity/Tethering;->hasTetherableConfiguration()Z +PLcom/android/server/connectivity/Tethering;->ifaceNameToType(Ljava/lang/String;)I +PLcom/android/server/connectivity/Tethering;->interfaceAdded(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->interfaceLinkStateChanged(Ljava/lang/String;Z)V +PLcom/android/server/connectivity/Tethering;->interfaceRemoved(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->interfaceStatusChanged(Ljava/lang/String;Z)V +PLcom/android/server/connectivity/Tethering;->logMessage(Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/Tethering;->makeControlCallback(Ljava/lang/String;)Lcom/android/server/connectivity/tethering/IControlsTethering; +PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;I)V +PLcom/android/server/connectivity/Tethering;->notifyInterfaceStateChange(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;II)V +PLcom/android/server/connectivity/Tethering;->notifyLinkPropertiesChanged(Ljava/lang/String;Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/Tethering;->sendTetherStateChangedBroadcast()V +PLcom/android/server/connectivity/Tethering;->stopTrackingInterfaceLocked(Ljava/lang/String;)V +PLcom/android/server/connectivity/Tethering;->updateConfiguration()V +PLcom/android/server/connectivity/Tethering;->upstreamWanted()Z +PLcom/android/server/connectivity/Vpn$1;->(Lcom/android/server/connectivity/Vpn;)V +PLcom/android/server/connectivity/Vpn$2;->(Lcom/android/server/connectivity/Vpn;)V +PLcom/android/server/connectivity/Vpn$SystemServices;->(Landroid/content/Context;)V +PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetIntForUser(Ljava/lang/String;II)I +PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetStringForUser(Ljava/lang/String;I)Ljava/lang/String; +PLcom/android/server/connectivity/Vpn;->(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;I)V +PLcom/android/server/connectivity/Vpn;->(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;ILcom/android/server/connectivity/Vpn$SystemServices;)V +PLcom/android/server/connectivity/Vpn;->enforceControlPermission()V +PLcom/android/server/connectivity/Vpn;->enforceControlPermissionOrInternalCaller()V +PLcom/android/server/connectivity/Vpn;->getAlwaysOnPackage()Ljava/lang/String; +PLcom/android/server/connectivity/Vpn;->getAppUid(Ljava/lang/String;I)I +PLcom/android/server/connectivity/Vpn;->getUnderlyingNetworks()[Landroid/net/Network; +PLcom/android/server/connectivity/Vpn;->getVpnConfig()Lcom/android/internal/net/VpnConfig; +PLcom/android/server/connectivity/Vpn;->getVpnInfo()Lcom/android/internal/net/VpnInfo; +PLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z +PLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z +PLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V +PLcom/android/server/connectivity/Vpn;->maybeRegisterPackageChangeReceiverLocked(Ljava/lang/String;)V +PLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z +PLcom/android/server/connectivity/Vpn;->setAlwaysOnPackageInternal(Ljava/lang/String;Z)Z +PLcom/android/server/connectivity/Vpn;->setVpnForcedLocked(Z)V +PLcom/android/server/connectivity/Vpn;->setVpnForcedWithExemptionsLocked(ZLjava/util/List;)V +PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z +PLcom/android/server/connectivity/Vpn;->unregisterPackageChangeReceiverLocked()V +PLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->$m$0()V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->(Ljava/lang/Object;)V +PLcom/android/server/connectivity/tethering/-$Lambda$M3tXj934m-dXV_AxdqUj05-IfpI;->run()V +PLcom/android/server/connectivity/tethering/IControlsTethering;->()V +PLcom/android/server/connectivity/tethering/IControlsTethering;->getStateString(I)Ljava/lang/String; +PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->(Ljava/util/ArrayList;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->findDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator$Downstream; +PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->generateUniqueLocalPrefix()[B +PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->removeActiveDownstream(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->stopIPv6TetheringOn(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->(Lcom/android/server/connectivity/tethering/OffloadController;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->(Lcom/android/server/connectivity/tethering/OffloadController;Lcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;)V +PLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->lambda$-com_android_server_connectivity_tethering_OffloadController$OffloadTetheringStatsProvider_9732()V +PLcom/android/server/connectivity/tethering/OffloadController;->-get0(Lcom/android/server/connectivity/tethering/OffloadController;)Ljava/util/concurrent/ConcurrentHashMap; +PLcom/android/server/connectivity/tethering/OffloadController;->-get1(Lcom/android/server/connectivity/tethering/OffloadController;)Landroid/os/Handler; +PLcom/android/server/connectivity/tethering/OffloadController;->-wrap3(Lcom/android/server/connectivity/tethering/OffloadController;)V +PLcom/android/server/connectivity/tethering/OffloadController;->(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/os/INetworkManagementService;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/OffloadController;->currentUpstreamInterface()Ljava/lang/String; +PLcom/android/server/connectivity/tethering/OffloadController;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/connectivity/tethering/OffloadController;->isOffloadDisabled()Z +PLcom/android/server/connectivity/tethering/OffloadController;->maybeUpdateStats(Ljava/lang/String;)V +PLcom/android/server/connectivity/tethering/OffloadController;->removeDownstreamInterface(Ljava/lang/String;)V +PLcom/android/server/connectivity/tethering/OffloadController;->setLocalPrefixes(Ljava/util/Set;)V +PLcom/android/server/connectivity/tethering/OffloadController;->started()Z +PLcom/android/server/connectivity/tethering/OffloadController;->updateStatsForCurrentUpstream()V +PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;->(Landroid/os/Handler;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;->getDefaultTetherOffloadDisabled()I +PLcom/android/server/connectivity/tethering/SimChangeListener;->(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$BaseServingState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState;->enter()V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$LocalHotspotState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$TetheredState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$UnavailableState;->(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap2(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap4(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->-wrap8(Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->(Ljava/lang/String;Landroid/os/Looper;ILandroid/net/util/SharedLog;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Lcom/android/server/connectivity/tethering/IControlsTethering;)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceName()Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->interfaceType()I +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->lastError()I +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->logMessage(Lcom/android/internal/util/State;I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->resetLinkProperties()V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendInterfaceState(I)V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->sendLinkProperties()V +PLcom/android/server/connectivity/tethering/TetherInterfaceStateMachine;->updateUpstreamIPv6LinkProperties(Landroid/net/LinkProperties;)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->(Landroid/content/Context;Landroid/net/util/SharedLog;)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->checkDunRequired(Landroid/content/Context;)I +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->containsOneOf(Ljava/util/ArrayList;[Ljava/lang/Integer;)Z +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->copy([Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dumpStringArray(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dunCheckString(I)Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getDhcpRanges(Landroid/content/Context;)[Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->getUpstreamIfaceTypes(Landroid/content/Context;I)Ljava/util/Collection; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->isBluetooth(Ljava/lang/String;)Z +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->isUsb(Ljava/lang/String;)Z +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->isWifi(Ljava/lang/String;)Z +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->makeString([Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->matchesDownstreamRegexs(Ljava/lang/String;[Ljava/lang/String;)Z +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->preferredUpstreamNames(Ljava/util/Collection;)[Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->prependIfNotPresent(Ljava/util/ArrayList;I)V +PLcom/android/server/connectivity/tethering/TetheringConfiguration;->toString()Ljava/lang/String; +PLcom/android/server/connectivity/tethering/TetheringDependencies;->()V +PLcom/android/server/connectivity/tethering/TetheringDependencies;->getOffloadHardwareInterface(Landroid/os/Handler;Landroid/net/util/SharedLog;)Lcom/android/server/connectivity/tethering/OffloadHardwareInterface; +PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;I)V +PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->getLocalPrefixes()Ljava/util/Set; +PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->updateMobileRequiresDun(Z)V +PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA$2;->(Ljava/lang/Object;)V +PLcom/android/server/content/-$Lambda$doNli3wDRrwDz12cAoe6lOOQskA;->(B)V +PLcom/android/server/content/ContentService$1;->(Lcom/android/server/content/ContentService;)V +PLcom/android/server/content/ContentService$3;->(Lcom/android/server/content/ContentService;)V +PLcom/android/server/content/ContentService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/content/ContentService$Lifecycle;->onStart()V +PLcom/android/server/content/ContentService$Lifecycle;->onStartUser(I)V +PLcom/android/server/content/ContentService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/content/ContentService;->-get0(Lcom/android/server/content/ContentService;)Landroid/util/SparseArray; +PLcom/android/server/content/ContentService;->-wrap0(Lcom/android/server/content/ContentService;ILjava/lang/String;Landroid/net/Uri;)V +PLcom/android/server/content/ContentService;->(Landroid/content/Context;Z)V +PLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V +PLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V +PLcom/android/server/content/ContentService;->clampPeriod(J)J +PLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; +PLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType; +PLcom/android/server/content/ContentService;->normalizeSyncable(I)I +PLcom/android/server/content/ContentService;->onStartUser(I)V +PLcom/android/server/content/ContentService;->onUnlockUser(I)V +PLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/content/ContentService;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V +PLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V +PLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V +PLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;I)V +PLcom/android/server/content/ContentService;->systemReady()V +PLcom/android/server/content/SyncJobService;->()V +PLcom/android/server/content/SyncJobService;->callJobFinished(IZLjava/lang/String;)V +PLcom/android/server/content/SyncJobService;->onStartCommand(Landroid/content/Intent;II)I +PLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z +PLcom/android/server/content/SyncJobService;->sendMessage(Landroid/os/Message;)V +PLcom/android/server/content/SyncLogger$RotatingFileLogger;->()V +PLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z +PLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V +PLcom/android/server/content/SyncLogger;->()V +PLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger; +PLcom/android/server/content/SyncManager$10;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$11;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$13;->(Lcom/android/server/content/SyncManager;Landroid/content/Intent;)V +PLcom/android/server/content/SyncManager$13;->run()V +PLcom/android/server/content/SyncManager$1;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$2;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/content/SyncManager$3;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$4;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/content/SyncManager$5;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$6;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/content/SyncManager$7;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$8;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$9;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$ActiveSyncContext;->(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V +PLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V +PLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V +PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/content/SyncManager$ScheduleSyncMessagePayload;->(Lcom/android/server/content/SyncOperation;J)V +PLcom/android/server/content/SyncManager$ServiceConnectionData;->(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V +PLcom/android/server/content/SyncManager$SyncFinishedOrCancelledMessagePayload;->(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V +PLcom/android/server/content/SyncManager$SyncHandler;->-wrap0(Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock; +PLcom/android/server/content/SyncManager$SyncHandler;->(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V +PLcom/android/server/content/SyncManager$SyncHandler;->checkIfDeviceReady()V +PLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +PLcom/android/server/content/SyncManager$SyncHandler;->deferActiveSyncH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V +PLcom/android/server/content/SyncManager$SyncHandler;->findActiveSyncContextH(I)Lcom/android/server/content/SyncManager$ActiveSyncContext; +PLcom/android/server/content/SyncManager$SyncHandler;->getSyncWakeLock(Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock; +PLcom/android/server/content/SyncManager$SyncHandler;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;)J +PLcom/android/server/content/SyncManager$SyncHandler;->maybeUpdateSyncPeriodH(Lcom/android/server/content/SyncOperation;JJ)V +PLcom/android/server/content/SyncManager$SyncHandler;->onBootCompleted()V +PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager$SyncHandler;->stopSyncEvent(JLcom/android/server/content/SyncOperation;Ljava/lang/String;IIJ)V +PLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V +PLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +PLcom/android/server/content/SyncManager$SyncTimeTracker;->(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager$SyncTimeTracker;->(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$SyncTimeTracker;)V +PLcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;->(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V +PLcom/android/server/content/SyncManager;->-get1(Lcom/android/server/content/SyncManager;)Lcom/android/internal/app/IBatteryStats; +PLcom/android/server/content/SyncManager;->-get10(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get11(Lcom/android/server/content/SyncManager;)[Landroid/accounts/AccountAndUser; +PLcom/android/server/content/SyncManager;->-get12(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get13(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncManager$SyncHandler; +PLcom/android/server/content/SyncManager;->-get14(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncJobService; +PLcom/android/server/content/SyncManager;->-get16(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine; +PLcom/android/server/content/SyncManager;->-get2(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get3(Lcom/android/server/content/SyncManager;)Landroid/content/Context; +PLcom/android/server/content/SyncManager;->-get4(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get5(Lcom/android/server/content/SyncManager;)Z +PLcom/android/server/content/SyncManager;->-get6(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger; +PLcom/android/server/content/SyncManager;->-get7(Lcom/android/server/content/SyncManager;)Landroid/app/NotificationManager; +PLcom/android/server/content/SyncManager;->-get9(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager; +PLcom/android/server/content/SyncManager;->-set0(Lcom/android/server/content/SyncManager;Z)Z +PLcom/android/server/content/SyncManager;->-set1(Lcom/android/server/content/SyncManager;Z)Z +PLcom/android/server/content/SyncManager;->-set2(Lcom/android/server/content/SyncManager;Z)Z +PLcom/android/server/content/SyncManager;->-set4(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)[Landroid/accounts/AccountAndUser; +PLcom/android/server/content/SyncManager;->-set6(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncJobService;)Lcom/android/server/content/SyncJobService; +PLcom/android/server/content/SyncManager;->-wrap1(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z +PLcom/android/server/content/SyncManager;->-wrap10(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap11(Lcom/android/server/content/SyncManager;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap12(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->-wrap13(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager;->-wrap18(Lcom/android/server/content/SyncManager;I)V +PLcom/android/server/content/SyncManager;->-wrap19(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +PLcom/android/server/content/SyncManager;->-wrap2(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +PLcom/android/server/content/SyncManager;->-wrap24(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V +PLcom/android/server/content/SyncManager;->-wrap25(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V +PLcom/android/server/content/SyncManager;->-wrap26(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +PLcom/android/server/content/SyncManager;->-wrap27(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V +PLcom/android/server/content/SyncManager;->-wrap29(Lcom/android/server/content/SyncManager;)V +PLcom/android/server/content/SyncManager;->-wrap4(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z +PLcom/android/server/content/SyncManager;->-wrap6(Lcom/android/server/content/SyncManager;Landroid/accounts/Account;ILjava/lang/String;)I +PLcom/android/server/content/SyncManager;->-wrap8(Lcom/android/server/content/SyncManager;)Ljava/util/List; +PLcom/android/server/content/SyncManager;->(Landroid/content/Context;Z)V +PLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->cleanupJobs()V +PLcom/android/server/content/SyncManager;->clearAllBackoffs(Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;)I +PLcom/android/server/content/SyncManager;->containsAccountAndUser([Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z +PLcom/android/server/content/SyncManager;->doDatabaseCleanup()V +PLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager; +PLcom/android/server/content/SyncManager;->getJobScheduler()Landroid/app/job/JobScheduler; +PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String; +PLcom/android/server/content/SyncManager;->getTotalBytesTransferredByUid(I)J +PLcom/android/server/content/SyncManager;->getUnusedJobIdH()I +PLcom/android/server/content/SyncManager;->isAdapterDelayed(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z +PLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z +PLcom/android/server/content/SyncManager;->isSyncStillActiveH(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z +PLcom/android/server/content/SyncManager;->onStartUser(I)V +PLcom/android/server/content/SyncManager;->onUnlockUser(I)V +PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V +PLcom/android/server/content/SyncManager;->postMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V +PLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V +PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V +PLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;I)V +PLcom/android/server/content/SyncManager;->sendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V +PLcom/android/server/content/SyncManager;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V +PLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z +PLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V +PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V +PLcom/android/server/content/SyncManager;->whiteListExistingSyncAdaptersIfNeeded()V +PLcom/android/server/content/SyncOperation;->(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;Z)V +PLcom/android/server/content/SyncOperation;->(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;Z)V +PLcom/android/server/content/SyncOperation;->extrasToString(Landroid/os/Bundle;)Ljava/lang/String; +PLcom/android/server/content/SyncOperation;->findPriority()I +PLcom/android/server/content/SyncOperation;->ignoreBackoff()Z +PLcom/android/server/content/SyncOperation;->isConflict(Lcom/android/server/content/SyncOperation;)Z +PLcom/android/server/content/SyncOperation;->isDerivedFromFailedPeriodicSync()Z +PLcom/android/server/content/SyncOperation;->isExpedited()Z +PLcom/android/server/content/SyncOperation;->isIgnoreSettings()Z +PLcom/android/server/content/SyncOperation;->isInitialization()Z +PLcom/android/server/content/SyncOperation;->isNotAllowedOnMetered()Z +PLcom/android/server/content/SyncOperation;->toEventLog(I)[Ljava/lang/Object; +PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->(Landroid/content/Context;)V +PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAccountValid(Landroid/accounts/Account;I)Z +PLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAuthorityValid(Ljava/lang/String;I)Z +PLcom/android/server/content/SyncStorageEngine$AccountInfo;->(Landroid/accounts/AccountAndUser;)V +PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V +PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->defaultInitialisation()V +PLcom/android/server/content/SyncStorageEngine$DayStats;->(I)V +PLcom/android/server/content/SyncStorageEngine$SyncHistoryItem;->()V +PLcom/android/server/content/SyncStorageEngine;->-get0()Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener; +PLcom/android/server/content/SyncStorageEngine;->(Landroid/content/Context;Ljava/io/File;)V +PLcom/android/server/content/SyncStorageEngine;->addActiveSync(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Landroid/content/SyncInfo; +PLcom/android/server/content/SyncStorageEngine;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V +PLcom/android/server/content/SyncStorageEngine;->calculateDefaultFlexTime(J)J +PLcom/android/server/content/SyncStorageEngine;->clearAllBackoffsLocked()V +PLcom/android/server/content/SyncStorageEngine;->createAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +PLcom/android/server/content/SyncStorageEngine;->doDatabaseCleanup([Landroid/accounts/Account;I)V +PLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; +PLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I +PLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J +PLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo; +PLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine; +PLcom/android/server/content/SyncStorageEngine;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;)V +PLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J +PLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V +PLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V +PLcom/android/server/content/SyncStorageEngine;->maybeMigrateSettingsForRenamedAuthorities()Z +PLcom/android/server/content/SyncStorageEngine;->parseListenForTickles(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/content/SyncStorageEngine;->readAndDeleteLegacyAccountInfoLocked()V +PLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V +PLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V +PLcom/android/server/content/SyncStorageEngine;->removeActiveSync(Landroid/content/SyncInfo;I)V +PLcom/android/server/content/SyncStorageEngine;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V +PLcom/android/server/content/SyncStorageEngine;->reportActiveChange()V +PLcom/android/server/content/SyncStorageEngine;->restoreAllPeriodicSyncs()Z +PLcom/android/server/content/SyncStorageEngine;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V +PLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;I)V +PLcom/android/server/content/SyncStorageEngine;->setOnAuthorityRemovedListener(Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;)V +PLcom/android/server/content/SyncStorageEngine;->setOnSyncRequestListener(Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;)V +PLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;)V +PLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;Z)V +PLcom/android/server/content/SyncStorageEngine;->setSyncableStateForEndPoint(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V +PLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z +PLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->$m$0()V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->(ILjava/lang/Object;)V +PLcom/android/server/devicepolicy/-$Lambda$MiCJAIOaMrlZqkmbifs3FkMNjTc;->run()V +PLcom/android/server/devicepolicy/CertificateMonitor$1;->(Lcom/android/server/devicepolicy/CertificateMonitor;)V +PLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/devicepolicy/CertificateMonitor;->-wrap0(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V +PLcom/android/server/devicepolicy/CertificateMonitor;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V +PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List; +PLcom/android/server/devicepolicy/CertificateMonitor;->lambda$-com_android_server_devicepolicy_CertificateMonitor_5174(I)V +PLcom/android/server/devicepolicy/CertificateMonitor;->onCertificateApprovalsChanged(I)V +PLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V +PLcom/android/server/devicepolicy/DeviceAdminServiceController;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V +PLcom/android/server/devicepolicy/DevicePolicyConstants;->(Ljava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyConstants;->loadFromString(Ljava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyConstants; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$2;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$3;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService$4;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;->run()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$8;->run()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->(Landroid/app/admin/DeviceAdminInfo;Z)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUserHandle()Landroid/os/UserHandle; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasParentActiveAdmin()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasUserRestrictions()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writePackageListToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/List;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;->(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->(Landroid/content/Context;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDevicePolicyFilePathForSystemUser()Ljava/lang/String; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIActivityManager()Landroid/app/IActivityManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIWindowManager()Landroid/view/IWindowManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getMyLooper()Landroid/os/Looper; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNotificationManager()Landroid/app/NotificationManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManager()Landroid/content/pm/PackageManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPowerManagerInternal()Landroid/os/PowerManagerInternal; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManager()Landroid/os/UserManager; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->keyChainBindAsUser(Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newOwners()Lcom/android/server/devicepolicy/Owners; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetInt(Ljava/lang/String;I)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->storageManagerIsFileBasedEncryptionEnabled()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStartUser(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap18(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap7(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-wrap8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->(Landroid/content/Context;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrManageUsers()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManageUsers()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceNotManagedProfile(ILjava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(IZ)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerPackage(Ljava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findAdmin(Landroid/content/ComponentName;IZ)Landroid/app/admin/DeviceAdminInfo; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->findOwnerComponentIfNecessaryLocked()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;I)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;IZ)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraRestrictionScopeLocked(IZ)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerComponent(I)Landroid/content/ComponentName; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getScreenCaptureDisabled(Landroid/content/ComponentName;I)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStorageEncryptionStatus(Ljava/lang/String;I)I +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExpirationNotification(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficientForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;IZ)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerWithSystemUid()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLockTaskPermitted(Ljava/lang/String;)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadSettingsLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile; +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultDeviceOwnerUserRestrictionsLocked()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserRestrictionsIfNecessaryLocked()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushUserRestrictions(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCaApprovalsIfNeeded(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportPasswordChanged(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveSettingsLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandForLockscreenPoliciesLocked(Ljava/lang/String;II)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Ljava/lang/String;IILandroid/os/Bundle;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandToSelfAndProfilesLocked(Ljava/lang/String;IILandroid/os/Bundle;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminEnabledBroadcastLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendChangedNotification(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnerSystemPropertyLocked()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateDeviceOwnerLocked()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateLockTaskPackagesLocked(Ljava/util/List;I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordExpirationsLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordValidityCheckpointLocked(I)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateScreenCaptureDisabledInWindowManager(IZ)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validatePasswordOwnerLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V +PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validateQualityConstant(I)V +PLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;->(Lcom/android/server/devicepolicy/Owners;)V +PLcom/android/server/devicepolicy/Owners$FileReadWriter;->(Ljava/io/File;)V +PLcom/android/server/devicepolicy/Owners$FileReadWriter;->readFromFileLocked()V +PLcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;->(Lcom/android/server/devicepolicy/Owners;I)V +PLcom/android/server/devicepolicy/Owners;->(Landroid/os/UserManager;Landroid/os/UserManagerInternal;Landroid/content/pm/PackageManagerInternal;)V +PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName; +PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerFileWithTestOverride()Ljava/io/File; +PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I +PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserRestrictionsNeedsMigration()Z +PLcom/android/server/devicepolicy/Owners;->getLegacyConfigFileWithTestOverride()Ljava/io/File; +PLcom/android/server/devicepolicy/Owners;->getProfileOwnerFileWithTestOverride(I)Ljava/io/File; +PLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set; +PLcom/android/server/devicepolicy/Owners;->getProfileOwnerUserRestrictionsNeedsMigration(I)Z +PLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy; +PLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z +PLcom/android/server/devicepolicy/Owners;->isDeviceOwnerUserId(I)Z +PLcom/android/server/devicepolicy/Owners;->load()V +PLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V +PLcom/android/server/devicepolicy/Owners;->readLegacyOwnerFileLocked(Ljava/io/File;)Z +PLcom/android/server/devicepolicy/SecurityLogMonitor;->(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V +PLcom/android/server/display/AutomaticBrightnessController$1;->(Lcom/android/server/display/AutomaticBrightnessController;)V +PLcom/android/server/display/AutomaticBrightnessController$1;->onAccuracyChanged(Landroid/hardware/Sensor;I)V +PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->(JI)V +PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->clear()V +PLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->(Lcom/android/server/display/AutomaticBrightnessController;Landroid/os/Looper;)V +PLcom/android/server/display/AutomaticBrightnessController;->(Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/util/Spline;IIIFIIJJZIFLcom/android/server/display/HysteresisLevels;)V +PLcom/android/server/display/AutomaticBrightnessController;->adjustLightSensorRate(I)V +PLcom/android/server/display/AutomaticBrightnessController;->clampScreenBrightness(I)I +PLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness()I +PLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V +PLcom/android/server/display/AutomaticBrightnessController;->setLightSensorEnabled(Z)Z +PLcom/android/server/display/AutomaticBrightnessController;->setScreenAutoBrightnessAdjustment(F)Z +PLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(Z)V +PLcom/android/server/display/ColorFade;->(I)V +PLcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer; +PLcom/android/server/display/ColorFade;->dismiss()V +PLcom/android/server/display/DisplayAdapter;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot; +PLcom/android/server/display/DisplayDevice;->performTraversalInTransactionLocked()V +PLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V +PLcom/android/server/display/DisplayDevice;->setLayerStackInTransactionLocked(I)V +PLcom/android/server/display/DisplayDevice;->setProjectionInTransactionLocked(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; +PLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)V +PLcom/android/server/display/DisplayManagerService$LocalService$1;->(Lcom/android/server/display/DisplayManagerService$LocalService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V +PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo; +PLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V +PLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V +PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z +PLcom/android/server/display/DisplayManagerService;->-get0(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context; +PLcom/android/server/display/DisplayManagerService;->-get1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; +PLcom/android/server/display/DisplayManagerService;->-get10(Lcom/android/server/display/DisplayManagerService;)Landroid/view/WindowManagerInternal; +PLcom/android/server/display/DisplayManagerService;->-get3(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; +PLcom/android/server/display/DisplayManagerService;->-get4(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/input/InputManagerInternal; +PLcom/android/server/display/DisplayManagerService;->-get6(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; +PLcom/android/server/display/DisplayManagerService;->-get7(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayViewport; +PLcom/android/server/display/DisplayManagerService;->-get8(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList; +PLcom/android/server/display/DisplayManagerService;->-get9(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList; +PLcom/android/server/display/DisplayManagerService;->-set0(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController; +PLcom/android/server/display/DisplayManagerService;->-wrap1(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus; +PLcom/android/server/display/DisplayManagerService;->-wrap12(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V +PLcom/android/server/display/DisplayManagerService;->-wrap18(Lcom/android/server/display/DisplayManagerService;)V +PLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V +PLcom/android/server/display/DisplayManagerService;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;)V +PLcom/android/server/display/DisplayManagerService;->findLogicalDisplayForDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay; +PLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V +PLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus; +PLcom/android/server/display/DisplayManagerService;->performTraversalInTransactionLocked()V +PLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V +PLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V +PLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V +PLcom/android/server/display/DisplayManagerService;->setViewportLocked(Landroid/hardware/display/DisplayViewport;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V +PLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V +PLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z +PLcom/android/server/display/DisplayManagerService;->stopWifiDisplayScanLocked(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V +PLcom/android/server/display/DisplayManagerService;->systemReady(ZZ)V +PLcom/android/server/display/DisplayManagerService;->windowManagerAndInputReady()V +PLcom/android/server/display/DisplayPowerController$1;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$2;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$2;->onAnimationEnd()V +PLcom/android/server/display/DisplayPowerController$3;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$3;->run()V +PLcom/android/server/display/DisplayPowerController$4;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$4;->run()V +PLcom/android/server/display/DisplayPowerController$5;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$6;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$7;->(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V +PLcom/android/server/display/DisplayPowerController;->-get0(Lcom/android/server/display/DisplayPowerController;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks; +PLcom/android/server/display/DisplayPowerController;->-wrap3(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController;->-wrap6(Lcom/android/server/display/DisplayPowerController;)V +PLcom/android/server/display/DisplayPowerController;->(Landroid/content/Context;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;)V +PLcom/android/server/display/DisplayPowerController;->clampAbsoluteBrightness(I)I +PLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(I)I +PLcom/android/server/display/DisplayPowerController;->createAutoBrightnessSpline([I[I)Landroid/util/Spline; +PLcom/android/server/display/DisplayPowerController;->initialize()V +PLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable()Z +PLcom/android/server/display/DisplayPowerController;->normalizeAbsoluteBrightness(I)F +PLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V +PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V +PLcom/android/server/display/DisplayPowerController;->setProximitySensorEnabled(Z)V +PLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V +PLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z +PLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V +PLcom/android/server/display/DisplayPowerController;->updateBrightness()V +PLcom/android/server/display/DisplayPowerState$1;->(Ljava/lang/String;)V +PLcom/android/server/display/DisplayPowerState$2;->(Ljava/lang/String;)V +PLcom/android/server/display/DisplayPowerState$3;->(Lcom/android/server/display/DisplayPowerState;)V +PLcom/android/server/display/DisplayPowerState$4;->(Lcom/android/server/display/DisplayPowerState;)V +PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->(Lcom/android/server/display/DisplayPowerState;)V +PLcom/android/server/display/DisplayPowerState;->(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;)V +PLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F +PLcom/android/server/display/DisplayPowerState;->getScreenBrightness()I +PLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V +PLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z +PLcom/android/server/display/DisplayTransformManager;->applyColorMatrix([F)V +PLcom/android/server/display/DisplayTransformManager;->computeColorMatrixLocked()[F +PLcom/android/server/display/DisplayTransformManager;->getColorMatrix(I)[F +PLcom/android/server/display/DisplayTransformManager;->setDaltonizerMode(I)V +PLcom/android/server/display/HysteresisLevels;->([I[I[I)V +PLcom/android/server/display/HysteresisLevels;->getBrighteningThreshold(F)F +PLcom/android/server/display/HysteresisLevels;->getDarkeningThreshold(F)F +PLcom/android/server/display/HysteresisLevels;->getReferenceLevel(F[F)F +PLcom/android/server/display/HysteresisLevels;->setArrayFormat([IF)[F +PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeInTransactionLocked(I)Z +PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayModesInTransactionLocked(II)V +PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestModeInTransactionLocked(I)Z +PLcom/android/server/display/LogicalDisplay;->configureDisplayInTransactionLocked(Lcom/android/server/display/DisplayDevice;Z)V +PLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I +PLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V +PLcom/android/server/display/LogicalDisplay;->setHasContentLocked(Z)V +PLcom/android/server/display/NightDisplayService$1;->(Lcom/android/server/display/NightDisplayService;)V +PLcom/android/server/display/NightDisplayService$3;->(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;)V +PLcom/android/server/display/NightDisplayService$4;->(Lcom/android/server/display/NightDisplayService;Lcom/android/server/display/DisplayTransformManager;[F)V +PLcom/android/server/display/NightDisplayService$4;->onAnimationCancel(Landroid/animation/Animator;)V +PLcom/android/server/display/NightDisplayService$4;->onAnimationEnd(Landroid/animation/Animator;)V +PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->()V +PLcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;->(Lcom/android/server/display/NightDisplayService$ColorMatrixEvaluator;)V +PLcom/android/server/display/NightDisplayService;->-set0(Lcom/android/server/display/NightDisplayService;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator; +PLcom/android/server/display/NightDisplayService;->(Landroid/content/Context;)V +PLcom/android/server/display/NightDisplayService;->applyTint(Z)V +PLcom/android/server/display/NightDisplayService;->isUserSetupCompleted(Landroid/content/ContentResolver;I)Z +PLcom/android/server/display/NightDisplayService;->onActivated(Z)V +PLcom/android/server/display/NightDisplayService;->onAutoModeChanged(I)V +PLcom/android/server/display/NightDisplayService;->onBootPhase(I)V +PLcom/android/server/display/NightDisplayService;->onStart()V +PLcom/android/server/display/NightDisplayService;->onStartUser(I)V +PLcom/android/server/display/NightDisplayService;->onUserChanged(I)V +PLcom/android/server/display/NightDisplayService;->setMatrix(I[F)V +PLcom/android/server/display/NightDisplayService;->setUp()V +PLcom/android/server/display/OverlayDisplayAdapter$1$1;->(Lcom/android/server/display/OverlayDisplayAdapter$1;Landroid/os/Handler;)V +PLcom/android/server/display/OverlayDisplayAdapter$1;->(Lcom/android/server/display/OverlayDisplayAdapter;)V +PLcom/android/server/display/OverlayDisplayAdapter$1;->run()V +PLcom/android/server/display/OverlayDisplayAdapter;->-wrap0(Lcom/android/server/display/OverlayDisplayAdapter;)V +PLcom/android/server/display/OverlayDisplayAdapter;->(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Landroid/os/Handler;)V +PLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V +PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V +PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V +PLcom/android/server/display/RampAnimator$1;->(Lcom/android/server/display/RampAnimator;)V +PLcom/android/server/display/RampAnimator;->-get4(Lcom/android/server/display/RampAnimator;)Lcom/android/server/display/RampAnimator$Listener; +PLcom/android/server/display/RampAnimator;->-set1(Lcom/android/server/display/RampAnimator;Z)Z +PLcom/android/server/display/RampAnimator;->(Ljava/lang/Object;Landroid/util/IntProperty;)V +PLcom/android/server/display/RampAnimator;->isAnimating()Z +PLcom/android/server/display/RampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V +PLcom/android/server/dreams/DreamController$1;->(Lcom/android/server/dreams/DreamController;)V +PLcom/android/server/dreams/DreamController$2;->(Lcom/android/server/dreams/DreamController;)V +PLcom/android/server/dreams/DreamController;->(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V +PLcom/android/server/dreams/DreamManagerService$1;->(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService$2;->(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V +PLcom/android/server/dreams/DreamManagerService$3;->(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService$4;->(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/dreams/DreamManagerService$BinderService;->(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService$BinderService;->(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$BinderService;)V +PLcom/android/server/dreams/DreamManagerService$BinderService;->awaken()V +PLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z +PLcom/android/server/dreams/DreamManagerService$DreamHandler;->(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Looper;)V +PLcom/android/server/dreams/DreamManagerService$LocalService;->(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService$LocalService;->(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$LocalService;)V +PLcom/android/server/dreams/DreamManagerService;->-get5(Lcom/android/server/dreams/DreamManagerService;)Ljava/lang/Object; +PLcom/android/server/dreams/DreamManagerService;->-wrap15(Lcom/android/server/dreams/DreamManagerService;Z)V +PLcom/android/server/dreams/DreamManagerService;->-wrap17(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService;->-wrap4(Lcom/android/server/dreams/DreamManagerService;Ljava/lang/String;)V +PLcom/android/server/dreams/DreamManagerService;->-wrap8(Lcom/android/server/dreams/DreamManagerService;)V +PLcom/android/server/dreams/DreamManagerService;->(Landroid/content/Context;)V +PLcom/android/server/dreams/DreamManagerService;->checkPermission(Ljava/lang/String;)V +PLcom/android/server/dreams/DreamManagerService;->getDozeComponent()Landroid/content/ComponentName; +PLcom/android/server/dreams/DreamManagerService;->getDozeComponent(I)Landroid/content/ComponentName; +PLcom/android/server/dreams/DreamManagerService;->getServiceInfo(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo; +PLcom/android/server/dreams/DreamManagerService;->onBootPhase(I)V +PLcom/android/server/dreams/DreamManagerService;->onStart()V +PLcom/android/server/dreams/DreamManagerService;->requestAwakenInternal()V +PLcom/android/server/dreams/DreamManagerService;->stopDreamInternal(Z)V +PLcom/android/server/dreams/DreamManagerService;->stopDreamLocked(Z)V +PLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content/ComponentName;)Z +PLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V +PLcom/android/server/emergency/EmergencyAffordanceService$1;->(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService$2;->(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/emergency/EmergencyAffordanceService$3;->(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService$3;->onSubscriptionsChanged()V +PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V +PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->-get0(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler; +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap0(Lcom/android/server/emergency/EmergencyAffordanceService;)Z +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap1(Lcom/android/server/emergency/EmergencyAffordanceService;)Z +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap3(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap4(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->-wrap5(Lcom/android/server/emergency/EmergencyAffordanceService;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->(Landroid/content/Context;)V +PLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V +PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateCellInfo()Z +PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()Z +PLcom/android/server/emergency/EmergencyAffordanceService;->mccRequiresEmergencyAffordance(I)Z +PLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V +PLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V +PLcom/android/server/emergency/EmergencyAffordanceService;->requestCellScan()V +PLcom/android/server/emergency/EmergencyAffordanceService;->setNetworkNeedsEmergencyAffordance(Z)V +PLcom/android/server/emergency/EmergencyAffordanceService;->setSimNeedsEmergencyAffordance(Z)V +PLcom/android/server/emergency/EmergencyAffordanceService;->simNeededAffordanceBefore()Z +PLcom/android/server/emergency/EmergencyAffordanceService;->startScanning()V +PLcom/android/server/emergency/EmergencyAffordanceService;->stopScanning()V +PLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V +PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;->$m$0()V +PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;->(Ljava/lang/Object;)V +PLcom/android/server/fingerprint/-$Lambda$NsdFXKe2P39OH-qCAY_zqOMIIsg;->run()V +PLcom/android/server/fingerprint/FingerprintService$12;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$1;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$2;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$3;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$4;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$5;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor$1;->(Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor;->(Lcom/android/server/fingerprint/FingerprintService;Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper$9;->(Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper$9;->run()V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;->(Lcom/android/server/fingerprint/FingerprintService;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;->(Lcom/android/server/fingerprint/FingerprintService;Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;->addLockoutResetCallback(Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback;)V +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List; +PLcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper;->isHardwareDetected(JLjava/lang/String;)Z +PLcom/android/server/fingerprint/FingerprintService;->-com_android_server_fingerprint_FingerprintService-mthref-0()V +PLcom/android/server/fingerprint/FingerprintService;->-get12(Lcom/android/server/fingerprint/FingerprintService;)Landroid/os/PowerManager; +PLcom/android/server/fingerprint/FingerprintService;->-get7(Lcom/android/server/fingerprint/FingerprintService;)J +PLcom/android/server/fingerprint/FingerprintService;->-get8(Lcom/android/server/fingerprint/FingerprintService;)Landroid/os/Handler; +PLcom/android/server/fingerprint/FingerprintService;->-wrap0(Lcom/android/server/fingerprint/FingerprintService;Ljava/lang/String;ZIII)Z +PLcom/android/server/fingerprint/FingerprintService;->-wrap2(Lcom/android/server/fingerprint/FingerprintService;Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor;)V +PLcom/android/server/fingerprint/FingerprintService;->(Landroid/content/Context;)V +PLcom/android/server/fingerprint/FingerprintService;->addLockoutResetMonitor(Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor;)V +PLcom/android/server/fingerprint/FingerprintService;->canUseFingerprint(Ljava/lang/String;ZIII)Z +PLcom/android/server/fingerprint/FingerprintService;->checkPermission(Ljava/lang/String;)V +PLcom/android/server/fingerprint/FingerprintService;->doFingerprintCleanup(I)V +PLcom/android/server/fingerprint/FingerprintService;->getEffectiveUserId(I)I +PLcom/android/server/fingerprint/FingerprintService;->getEnrolledFingerprints(I)Ljava/util/List; +PLcom/android/server/fingerprint/FingerprintService;->getFingerprintDaemon()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; +PLcom/android/server/fingerprint/FingerprintService;->getUserOrWorkProfileId(Ljava/lang/String;I)I +PLcom/android/server/fingerprint/FingerprintService;->hasEnrolledFingerprints(I)Z +PLcom/android/server/fingerprint/FingerprintService;->isCurrentUserOrProfile(I)Z +PLcom/android/server/fingerprint/FingerprintService;->isKeyguard(Ljava/lang/String;)Z +PLcom/android/server/fingerprint/FingerprintService;->isWorkProfile(I)Z +PLcom/android/server/fingerprint/FingerprintService;->listenForUserSwitches()V +PLcom/android/server/fingerprint/FingerprintService;->loadAuthenticatorIds()V +PLcom/android/server/fingerprint/FingerprintService;->onStart()V +PLcom/android/server/fingerprint/FingerprintService;->updateActiveGroup(ILjava/lang/String;)V +PLcom/android/server/fingerprint/FingerprintUtils;->()V +PLcom/android/server/fingerprint/FingerprintUtils;->getFingerprintsForUser(Landroid/content/Context;I)Ljava/util/List; +PLcom/android/server/fingerprint/FingerprintUtils;->getInstance()Lcom/android/server/fingerprint/FingerprintUtils; +PLcom/android/server/fingerprint/FingerprintUtils;->getStateForUser(Landroid/content/Context;I)Lcom/android/server/fingerprint/FingerprintsUserState; +PLcom/android/server/fingerprint/FingerprintsUserState$1;->(Lcom/android/server/fingerprint/FingerprintsUserState;)V +PLcom/android/server/fingerprint/FingerprintsUserState;->(Landroid/content/Context;I)V +PLcom/android/server/fingerprint/FingerprintsUserState;->getCopy(Ljava/util/ArrayList;)Ljava/util/ArrayList; +PLcom/android/server/fingerprint/FingerprintsUserState;->getFileForUser(I)Ljava/io/File; +PLcom/android/server/fingerprint/FingerprintsUserState;->getFingerprints()Ljava/util/List; +PLcom/android/server/fingerprint/FingerprintsUserState;->readStateSyncLocked()V +PLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z +PLcom/android/server/input/InputApplicationHandle;->(Ljava/lang/Object;)V +PLcom/android/server/input/InputApplicationHandle;->finalize()V +PLcom/android/server/input/InputManagerService$10;->(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V +PLcom/android/server/input/InputManagerService$11;->(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V +PLcom/android/server/input/InputManagerService$12;->(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V +PLcom/android/server/input/InputManagerService$1;->(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/input/InputManagerService$2;->(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/input/InputManagerService$3;->(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService$5;->(Lcom/android/server/input/InputManagerService;Ljava/util/HashSet;)V +PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V +PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V +PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V +PLcom/android/server/input/InputManagerService$InputManagerHandler;->(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V +PLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/input/InputManagerService$LocalService;->(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService$LocalService;->(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$LocalService;)V +PLcom/android/server/input/InputManagerService$LocalService;->onInputMethodSubtypeChanged(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/input/InputManagerService$LocalService;->setDisplayViewports(Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;Ljava/util/List;)V +PLcom/android/server/input/InputManagerService$LocalService;->setPulseGestureEnabled(Z)V +PLcom/android/server/input/InputManagerService;->-get0(Lcom/android/server/input/InputManagerService;)Ljava/io/File; +PLcom/android/server/input/InputManagerService;->-get1(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/InputManagerService$InputManagerHandler; +PLcom/android/server/input/InputManagerService;->-wrap11(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService;->-wrap13(Lcom/android/server/input/InputManagerService;Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;Ljava/util/List;)V +PLcom/android/server/input/InputManagerService;->-wrap14(Lcom/android/server/input/InputManagerService;)V +PLcom/android/server/input/InputManagerService;->-wrap3(Lcom/android/server/input/InputManagerService;[Landroid/view/InputDevice;)V +PLcom/android/server/input/InputManagerService;->-wrap5(Lcom/android/server/input/InputManagerService;ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/input/InputManagerService;->-wrap9(Lcom/android/server/input/InputManagerService;I)V +PLcom/android/server/input/InputManagerService;->(Landroid/content/Context;)V +PLcom/android/server/input/InputManagerService;->checkInjectEventsPermission(II)Z +PLcom/android/server/input/InputManagerService;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; +PLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I +PLcom/android/server/input/InputManagerService;->getHoverTapSlop()I +PLcom/android/server/input/InputManagerService;->getHoverTapTimeout()I +PLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice; +PLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I +PLcom/android/server/input/InputManagerService;->getKeyRepeatDelay()I +PLcom/android/server/input/InputManagerService;->getKeyRepeatTimeout()I +PLcom/android/server/input/InputManagerService;->getLongPressTimeout()I +PLcom/android/server/input/InputManagerService;->getPointerSpeedSetting()I +PLcom/android/server/input/InputManagerService;->getScanCodeState(III)I +PLcom/android/server/input/InputManagerService;->getShowTouchesSetting(I)I +PLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration; +PLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I +PLcom/android/server/input/InputManagerService;->handleSwitchInputMethodSubtype(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V +PLcom/android/server/input/InputManagerService;->handleSwitchKeyboardLayout(Landroid/hardware/input/InputDeviceIdentifier;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)V +PLcom/android/server/input/InputManagerService;->hasKeys(II[I[Z)Z +PLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;)Landroid/view/InputChannel; +PLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V +PLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V +PLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V +PLcom/android/server/input/InputManagerService;->registerAccessibilityLargePointerSettingObserver()V +PLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V +PLcom/android/server/input/InputManagerService;->registerPointerSpeedSettingObserver()V +PLcom/android/server/input/InputManagerService;->registerShowTouchesSettingObserver()V +PLcom/android/server/input/InputManagerService;->reloadDeviceAliases()V +PLcom/android/server/input/InputManagerService;->reloadKeyboardLayouts()V +PLcom/android/server/input/InputManagerService;->setDisplayViewport(ILandroid/hardware/display/DisplayViewport;)V +PLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Landroid/hardware/display/DisplayViewport;Landroid/hardware/display/DisplayViewport;Ljava/util/List;)V +PLcom/android/server/input/InputManagerService;->setFocusedApplication(Lcom/android/server/input/InputApplicationHandle;)V +PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V +PLcom/android/server/input/InputManagerService;->setPointerSpeedUnchecked(I)V +PLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V +PLcom/android/server/input/InputManagerService;->setWiredAccessoryCallbacks(Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;)V +PLcom/android/server/input/InputManagerService;->start()V +PLcom/android/server/input/InputManagerService;->systemRunning()V +PLcom/android/server/input/InputManagerService;->unregisterInputChannel(Landroid/view/InputChannel;)V +PLcom/android/server/input/InputManagerService;->updateAccessibilityLargePointerFromSettings()V +PLcom/android/server/input/InputManagerService;->updatePointerSpeedFromSettings()V +PLcom/android/server/input/InputManagerService;->updateShowTouchesFromSettings()V +PLcom/android/server/input/PersistentDataStore;->()V +PLcom/android/server/input/PersistentDataStore;->clearState()V +PLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration; +PLcom/android/server/input/PersistentDataStore;->load()V +PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z +PLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V +PLcom/android/server/input/PersistentDataStore;->switchKeyboardLayout(Ljava/lang/String;Lcom/android/internal/inputmethod/InputMethodSubtypeHandle;)Z +PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8$1;->(Ljava/lang/Object;)V +PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->()V +PLcom/android/server/job/-$Lambda$MZyz9fgevtnL7iKUFvjeGfWQ-E8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/job/GrantedUriPermissions;->checkGrantFlags(I)Z +PLcom/android/server/job/JobPackageTracker$DataSet;->()V +PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;JI)V +PLcom/android/server/job/JobPackageTracker$DataSet;->finish(Lcom/android/server/job/JobPackageTracker$DataSet;J)V +PLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V +PLcom/android/server/job/JobPackageTracker$DataSet;->incActiveTop(ILjava/lang/String;J)V +PLcom/android/server/job/JobPackageTracker$PackageEntry;->()V +PLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J +PLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J +PLcom/android/server/job/JobPackageTracker;->()V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->()V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->(Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;)V +PLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->toString()Ljava/lang/String; +PLcom/android/server/job/JobSchedulerService$1;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/job/JobSchedulerService$2;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$2;->onUidGone(IZ)V +PLcom/android/server/job/JobSchedulerService$2;->onUidIdle(IZ)V +PLcom/android/server/job/JobSchedulerService$3;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$4;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$Constants;->(Lcom/android/server/job/JobSchedulerService;Landroid/os/Handler;)V +PLcom/android/server/job/JobSchedulerService$Constants;->start(Landroid/content/ContentResolver;)V +PLcom/android/server/job/JobSchedulerService$Constants;->updateConstants()V +PLcom/android/server/job/JobSchedulerService$JobHandler;->(Lcom/android/server/job/JobSchedulerService;Landroid/os/Looper;)V +PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z +PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobs()Ljava/util/List; +PLcom/android/server/job/JobSchedulerService$LocalService$1;->(Lcom/android/server/job/JobSchedulerService$LocalService;Ljava/util/List;)V +PLcom/android/server/job/JobSchedulerService$LocalService;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; +PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcess()V +PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V +PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcess()V +PLcom/android/server/job/JobSchedulerService;->-wrap2(Lcom/android/server/job/JobSchedulerService;Landroid/content/Intent;)Ljava/lang/String; +PLcom/android/server/job/JobSchedulerService;->-wrap4(Lcom/android/server/job/JobSchedulerService;)V +PLcom/android/server/job/JobSchedulerService;->(Landroid/content/Context;)V +PLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V +PLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUid(Ljava/lang/String;I)V +PLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore; +PLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object; +PLcom/android/server/job/JobSchedulerService;->getPackageName(Landroid/content/Intent;)Ljava/lang/String; +PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus; +PLcom/android/server/job/JobSchedulerService;->lambda$-com_android_server_job_JobSchedulerService_21827(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I +PLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V +PLcom/android/server/job/JobSchedulerService;->noteJobsPending(Ljava/util/List;)V +PLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V +PLcom/android/server/job/JobSchedulerService;->onControllerStateChanged()V +PLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V +PLcom/android/server/job/JobSchedulerService;->onStart()V +PLcom/android/server/job/JobSchedulerService;->onStartUser(I)V +PLcom/android/server/job/JobSchedulerService;->onUnlockUser(I)V +PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStopMessage(IZ)V +PLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z +PLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem; +PLcom/android/server/job/JobServiceContext$JobServiceHandler;->(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V +PLcom/android/server/job/JobServiceContext;->(Landroid/content/Context;Ljava/lang/Object;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Lcom/android/server/job/JobCompletedListener;Landroid/os/Looper;)V +PLcom/android/server/job/JobServiceContext;->(Lcom/android/server/job/JobSchedulerService;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)V +PLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)V +PLcom/android/server/job/JobServiceContext;->cancelExecutingJobLocked(ILjava/lang/String;)V +PLcom/android/server/job/JobServiceContext;->doAcknowledgeStopMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V +PLcom/android/server/job/JobServiceContext;->doCancelLocked(ILjava/lang/String;)V +PLcom/android/server/job/JobServiceContext;->handleCancelLocked(Ljava/lang/String;)V +PLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V +PLcom/android/server/job/JobStore$1$1;->(Lcom/android/server/job/JobStore$1;Ljava/util/List;)V +PLcom/android/server/job/JobStore$1;->(Lcom/android/server/job/JobStore;)V +PLcom/android/server/job/JobStore$JobSet;->()V +PLcom/android/server/job/JobStore$JobSet;->removeJobsOfNonUsers([I)V +PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;Z)V +PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/job/JobStore;->-get0(Lcom/android/server/job/JobStore;)Landroid/util/AtomicFile; +PLcom/android/server/job/JobStore;->-set0(Lcom/android/server/job/JobStore;I)I +PLcom/android/server/job/JobStore;->-wrap0(Landroid/util/Pair;J)Landroid/util/Pair; +PLcom/android/server/job/JobStore;->(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V +PLcom/android/server/job/JobStore;->forEachJob(ILcom/android/server/job/JobStore$JobStatusFunctor;)V +PLcom/android/server/job/JobStore;->getJobsByUid(I)Ljava/util/List; +PLcom/android/server/job/JobStore;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats; +PLcom/android/server/job/JobStore;->initAndGet(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore; +PLcom/android/server/job/JobStore;->jobTimesInflatedValid()Z +PLcom/android/server/job/JobStore;->readJobMapFromDisk(Lcom/android/server/job/JobStore$JobSet;Z)V +PLcom/android/server/job/JobStore;->removeJobsOfNonUsers([I)V +PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->(Lcom/android/server/job/controllers/AppIdleController;)V +PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->(Lcom/android/server/job/controllers/AppIdleController;Lcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;)V +PLcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener;->onParoleStateChanged(Z)V +PLcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc;->(Lcom/android/server/job/controllers/AppIdleController;)V +PLcom/android/server/job/controllers/AppIdleController;->-get0(Lcom/android/server/job/controllers/AppIdleController;)Lcom/android/server/job/JobSchedulerService; +PLcom/android/server/job/controllers/AppIdleController;->-get1(Lcom/android/server/job/controllers/AppIdleController;)Landroid/app/usage/UsageStatsManagerInternal; +PLcom/android/server/job/controllers/AppIdleController;->(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/AppIdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/AppIdleController; +PLcom/android/server/job/controllers/AppIdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +PLcom/android/server/job/controllers/AppIdleController;->setAppIdleParoleOn(Z)V +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->(Lcom/android/server/job/controllers/BatteryController;)V +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isBatteryNotLow()Z +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->isOnStablePower()Z +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceiveInternal(Landroid/content/Intent;)V +PLcom/android/server/job/controllers/BatteryController$ChargingTracker;->startTracking()V +PLcom/android/server/job/controllers/BatteryController;->-wrap0(Lcom/android/server/job/controllers/BatteryController;)V +PLcom/android/server/job/controllers/BatteryController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/BatteryController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/BatteryController; +PLcom/android/server/job/controllers/ConnectivityController$1;->(Lcom/android/server/job/controllers/ConnectivityController;)V +PLcom/android/server/job/controllers/ConnectivityController$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/job/controllers/ConnectivityController$2;->(Lcom/android/server/job/controllers/ConnectivityController;)V +PLcom/android/server/job/controllers/ConnectivityController$2;->onMeteredIfacesChanged([Ljava/lang/String;)V +PLcom/android/server/job/controllers/ConnectivityController$2;->onUidRulesChanged(II)V +PLcom/android/server/job/controllers/ConnectivityController;->-wrap0(Lcom/android/server/job/controllers/ConnectivityController;I)V +PLcom/android/server/job/controllers/ConnectivityController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/ConnectivityController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ConnectivityController; +PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V +PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->detachLocked()V +PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->scheduleLocked()V +PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->trigger()V +PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->unscheduleLocked()V +PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;->(Lcom/android/server/job/controllers/ContentObserverController;Landroid/os/Handler;Landroid/app/job/JobInfo$TriggerContentUri;I)V +PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;->onChange(ZLandroid/net/Uri;)V +PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->(Lcom/android/server/job/controllers/ContentObserverController$JobInstance;)V +PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->run()V +PLcom/android/server/job/controllers/ContentObserverController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/ContentObserverController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/ContentObserverController; +PLcom/android/server/job/controllers/ContentObserverController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +PLcom/android/server/job/controllers/DeviceIdleJobsController$1;->(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V +PLcom/android/server/job/controllers/DeviceIdleJobsController$2;->(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V +PLcom/android/server/job/controllers/DeviceIdleJobsController;->(Lcom/android/server/job/JobSchedulerService;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/DeviceIdleJobsController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/DeviceIdleJobsController; +PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V +PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->(Lcom/android/server/job/controllers/IdleController;)V +PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->isIdle()Z +PLcom/android/server/job/controllers/IdleController$IdlenessTracker;->startTracking()V +PLcom/android/server/job/controllers/IdleController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/IdleController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/IdleController; +PLcom/android/server/job/controllers/IdleController;->initIdleStateTracking()V +PLcom/android/server/job/controllers/JobStatus;->(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;JJJJLandroid/util/Pair;)V +PLcom/android/server/job/controllers/JobStatus;->(Lcom/android/server/job/controllers/JobStatus;JJIJJ)V +PLcom/android/server/job/controllers/JobStatus;->clearPersistedUtcTimes()V +PLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(Landroid/app/IActivityManager;I)Z +PLcom/android/server/job/controllers/JobStatus;->getTag()Ljava/lang/String; +PLcom/android/server/job/controllers/JobStatus;->getTriggerContentMaxDelay()J +PLcom/android/server/job/controllers/JobStatus;->getTriggerContentUpdateDelay()J +PLcom/android/server/job/controllers/JobStatus;->hasExecutingWorkLocked()Z +PLcom/android/server/job/controllers/JobStatus;->hasWorkLocked()Z +PLcom/android/server/job/controllers/JobStatus;->isPreparedLocked()Z +PLcom/android/server/job/controllers/JobStatus;->setBatteryNotLowConstraintSatisfied(Z)Z +PLcom/android/server/job/controllers/JobStatus;->setChargingConstraintSatisfied(Z)Z +PLcom/android/server/job/controllers/JobStatus;->setContentTriggerConstraintSatisfied(Z)Z +PLcom/android/server/job/controllers/JobStatus;->setDeadlineConstraintSatisfied(Z)Z +PLcom/android/server/job/controllers/JobStatus;->setIdleConstraintSatisfied(Z)Z +PLcom/android/server/job/controllers/JobStatus;->ungrantWorkItem(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V +PLcom/android/server/job/controllers/StateController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/StateController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V +PLcom/android/server/job/controllers/StorageController$StorageTracker;->(Lcom/android/server/job/controllers/StorageController;)V +PLcom/android/server/job/controllers/StorageController$StorageTracker;->startTracking()V +PLcom/android/server/job/controllers/StorageController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/StorageController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/StorageController; +PLcom/android/server/job/controllers/TimeController$1;->(Lcom/android/server/job/controllers/TimeController;)V +PLcom/android/server/job/controllers/TimeController$1;->onAlarm()V +PLcom/android/server/job/controllers/TimeController$2;->(Lcom/android/server/job/controllers/TimeController;)V +PLcom/android/server/job/controllers/TimeController$2;->onAlarm()V +PLcom/android/server/job/controllers/TimeController;->-wrap0(Lcom/android/server/job/controllers/TimeController;)V +PLcom/android/server/job/controllers/TimeController;->-wrap1(Lcom/android/server/job/controllers/TimeController;)V +PLcom/android/server/job/controllers/TimeController;->(Lcom/android/server/job/StateChangedListener;Landroid/content/Context;Ljava/lang/Object;)V +PLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z +PLcom/android/server/job/controllers/TimeController;->ensureAlarmServiceLocked()V +PLcom/android/server/job/controllers/TimeController;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/TimeController; +PLcom/android/server/job/controllers/TimeController;->maybeUpdateAlarmsLocked(JJI)V +PLcom/android/server/job/controllers/TimeController;->setDeadlineExpiredAlarmLocked(JI)V +PLcom/android/server/lights/LightsService$LightImpl;->turnOff()V +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$0(I)Z +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$1(I)Z +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$2(I)Z +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$3(I)Z +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->$m$4(I)Z +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->(B)V +PLcom/android/server/location/-$Lambda$LbPzwzo3JyvLa845qcqGRfVQJq4;->set(I)Z +PLcom/android/server/location/ActivityRecognitionProxy$1;->(Lcom/android/server/location/ActivityRecognitionProxy;)V +PLcom/android/server/location/ActivityRecognitionProxy$1;->run()V +PLcom/android/server/location/ActivityRecognitionProxy;->-wrap0(Lcom/android/server/location/ActivityRecognitionProxy;)V +PLcom/android/server/location/ActivityRecognitionProxy;->(Landroid/content/Context;Landroid/os/Handler;ZLandroid/hardware/location/ActivityRecognitionHardware;III)V +PLcom/android/server/location/ActivityRecognitionProxy;->bindProvider()V +PLcom/android/server/location/ActivityRecognitionProxy;->createAndBind(Landroid/content/Context;Landroid/os/Handler;ZLandroid/hardware/location/ActivityRecognitionHardware;III)Lcom/android/server/location/ActivityRecognitionProxy; +PLcom/android/server/location/ComprehensiveCountryDetector$1;->(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V +PLcom/android/server/location/ComprehensiveCountryDetector$2;->(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V +PLcom/android/server/location/ComprehensiveCountryDetector$2;->run()V +PLcom/android/server/location/ComprehensiveCountryDetector$3;->(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector$4;->(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->-set1(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;)Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap0(Lcom/android/server/location/ComprehensiveCountryDetector;ZZ)Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->-wrap2(Lcom/android/server/location/ComprehensiveCountryDetector;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->(Landroid/content/Context;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->addPhoneStateListener()V +PLcom/android/server/location/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->createLocationBasedCountryDetector()Lcom/android/server/location/CountryDetectorBase; +PLcom/android/server/location/ComprehensiveCountryDetector;->detectCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->detectCountry(ZZ)Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->getCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->getLastKnownLocationBasedCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->getLocaleCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->getNetworkBasedCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->getSimBasedCountry()Landroid/location/Country; +PLcom/android/server/location/ComprehensiveCountryDetector;->isAirplaneModeOff()Z +PLcom/android/server/location/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z +PLcom/android/server/location/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z +PLcom/android/server/location/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V +PLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V +PLcom/android/server/location/ComprehensiveCountryDetector;->scheduleLocationRefresh()V +PLcom/android/server/location/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V +PLcom/android/server/location/ComprehensiveCountryDetector;->stopLocationBasedDetector()V +PLcom/android/server/location/ContextHubService;->(Landroid/content/Context;)V +PLcom/android/server/location/ContextHubService;->checkPermissions()V +PLcom/android/server/location/ContextHubService;->getContextHubHandles()[I +PLcom/android/server/location/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo; +PLcom/android/server/location/ContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo; +PLcom/android/server/location/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I +PLcom/android/server/location/ContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I +PLcom/android/server/location/CountryDetectorBase;->(Landroid/content/Context;)V +PLcom/android/server/location/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V +PLcom/android/server/location/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V +PLcom/android/server/location/FlpHardwareProvider;->isSupported()Z +PLcom/android/server/location/GeocoderProxy;->(Landroid/content/Context;IIILandroid/os/Handler;)V +PLcom/android/server/location/GeocoderProxy;->bind()Z +PLcom/android/server/location/GeocoderProxy;->createAndBind(Landroid/content/Context;IIILandroid/os/Handler;)Lcom/android/server/location/GeocoderProxy; +PLcom/android/server/location/GeocoderProxy;->getConnectedPackageName()Ljava/lang/String; +PLcom/android/server/location/GeocoderProxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; +PLcom/android/server/location/GeocoderProxy;->getService()Landroid/location/IGeocodeProvider; +PLcom/android/server/location/GeofenceManager$1;->(Lcom/android/server/location/GeofenceManager;Landroid/os/Handler;)V +PLcom/android/server/location/GeofenceManager$GeofenceHandler;->(Lcom/android/server/location/GeofenceManager;)V +PLcom/android/server/location/GeofenceManager;->(Landroid/content/Context;Lcom/android/server/location/LocationBlacklist;)V +PLcom/android/server/location/GeofenceManager;->updateMinInterval()V +PLcom/android/server/location/GeofenceProxy$1;->(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy$1;->run()V +PLcom/android/server/location/GeofenceProxy$2;->(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/location/GeofenceProxy$3;->(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy$3;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/location/GeofenceProxy;->-get0(Lcom/android/server/location/GeofenceProxy;)Landroid/hardware/location/IGeofenceHardware; +PLcom/android/server/location/GeofenceProxy;->-get1(Lcom/android/server/location/GeofenceProxy;)Landroid/os/Handler; +PLcom/android/server/location/GeofenceProxy;->-get2(Lcom/android/server/location/GeofenceProxy;)Ljava/lang/Object; +PLcom/android/server/location/GeofenceProxy;->-set0(Lcom/android/server/location/GeofenceProxy;Landroid/hardware/location/IGeofenceHardware;)Landroid/hardware/location/IGeofenceHardware; +PLcom/android/server/location/GeofenceProxy;->-wrap0(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy;->-wrap1(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy;->-wrap2(Lcom/android/server/location/GeofenceProxy;)V +PLcom/android/server/location/GeofenceProxy;->(Landroid/content/Context;IIILandroid/os/Handler;Landroid/location/IGpsGeofenceHardware;Landroid/location/IFusedGeofenceHardware;)V +PLcom/android/server/location/GeofenceProxy;->bindGeofenceProvider()Z +PLcom/android/server/location/GeofenceProxy;->bindHardwareGeofence()V +PLcom/android/server/location/GeofenceProxy;->createAndBind(Landroid/content/Context;IIILandroid/os/Handler;Landroid/location/IGpsGeofenceHardware;Landroid/location/IFusedGeofenceHardware;)Lcom/android/server/location/GeofenceProxy; +PLcom/android/server/location/GeofenceProxy;->setFusedGeofenceLocked()V +PLcom/android/server/location/GeofenceProxy;->setGeofenceHardwareInProviderLocked()V +PLcom/android/server/location/GeofenceProxy;->setGpsGeofenceLocked()V +PLcom/android/server/location/GnssLocationProvider$10;->(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V +PLcom/android/server/location/GnssLocationProvider$10;->isAvailableInPlatform()Z +PLcom/android/server/location/GnssLocationProvider$10;->isGpsEnabled()Z +PLcom/android/server/location/GnssLocationProvider$11;->(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V +PLcom/android/server/location/GnssLocationProvider$11;->isAvailableInPlatform()Z +PLcom/android/server/location/GnssLocationProvider$11;->isGpsEnabled()Z +PLcom/android/server/location/GnssLocationProvider$12;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$12;->run()V +PLcom/android/server/location/GnssLocationProvider$16;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$17;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$18;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$1;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$1;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +PLcom/android/server/location/GnssLocationProvider$1;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V +PLcom/android/server/location/GnssLocationProvider$2;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$2;->onAvailable(Landroid/net/Network;)V +PLcom/android/server/location/GnssLocationProvider$3;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$4;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/location/GnssLocationProvider$5;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$5;->onSubscriptionsChanged()V +PLcom/android/server/location/GnssLocationProvider$6;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$6;->isHardwareGeofenceSupported()Z +PLcom/android/server/location/GnssLocationProvider$7;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$8;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25217(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25294(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25366(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25440(I)Z +PLcom/android/server/location/GnssLocationProvider$8;->lambda$-com_android_server_location_GnssLocationProvider$8_25536(I)Z +PLcom/android/server/location/GnssLocationProvider$9;->(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V +PLcom/android/server/location/GnssLocationProvider$9;->isAvailableInPlatform()Z +PLcom/android/server/location/GnssLocationProvider$9;->isGpsEnabled()Z +PLcom/android/server/location/GnssLocationProvider$BackOff;->(JJ)V +PLcom/android/server/location/GnssLocationProvider$BackOff;->reset()V +PLcom/android/server/location/GnssLocationProvider$GpsRequest;->(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$NetworkLocationListener;)V +PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->onLocationChanged(Landroid/location/Location;)V +PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Looper;)V +PLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleInitialize()V +PLcom/android/server/location/GnssLocationProvider;->-get0()Z +PLcom/android/server/location/GnssLocationProvider;->-get1(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/BroadcastReceiver; +PLcom/android/server/location/GnssLocationProvider;->-get10(Lcom/android/server/location/GnssLocationProvider;)I +PLcom/android/server/location/GnssLocationProvider;->-get11(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssStatusListenerHelper; +PLcom/android/server/location/GnssLocationProvider;->-get13(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager$NetworkCallback; +PLcom/android/server/location/GnssLocationProvider;->-get14(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssLocationProvider$BackOff; +PLcom/android/server/location/GnssLocationProvider;->-get15(Lcom/android/server/location/GnssLocationProvider;)Landroid/util/NtpTrustedTime; +PLcom/android/server/location/GnssLocationProvider;->-get16(Lcom/android/server/location/GnssLocationProvider;)Z +PLcom/android/server/location/GnssLocationProvider;->-get17(Lcom/android/server/location/GnssLocationProvider;)Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener; +PLcom/android/server/location/GnssLocationProvider;->-get18(Lcom/android/server/location/GnssLocationProvider;)Ljava/util/Properties; +PLcom/android/server/location/GnssLocationProvider;->-get19(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock; +PLcom/android/server/location/GnssLocationProvider;->-get2(Lcom/android/server/location/GnssLocationProvider;)Landroid/net/ConnectivityManager; +PLcom/android/server/location/GnssLocationProvider;->-get3(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/Context; +PLcom/android/server/location/GnssLocationProvider;->-get4(Lcom/android/server/location/GnssLocationProvider;)I +PLcom/android/server/location/GnssLocationProvider;->-get9(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler; +PLcom/android/server/location/GnssLocationProvider;->-set1(Lcom/android/server/location/GnssLocationProvider;I)I +PLcom/android/server/location/GnssLocationProvider;->-wrap1()Z +PLcom/android/server/location/GnssLocationProvider;->-wrap11(I)Z +PLcom/android/server/location/GnssLocationProvider;->-wrap12(I)Z +PLcom/android/server/location/GnssLocationProvider;->-wrap13(I)Z +PLcom/android/server/location/GnssLocationProvider;->-wrap14(I)Z +PLcom/android/server/location/GnssLocationProvider;->-wrap2()Z +PLcom/android/server/location/GnssLocationProvider;->-wrap22(Lcom/android/server/location/GnssLocationProvider;I)Ljava/lang/String; +PLcom/android/server/location/GnssLocationProvider;->-wrap24(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap25(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap26(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap29(Lcom/android/server/location/GnssLocationProvider;Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap3()Z +PLcom/android/server/location/GnssLocationProvider;->-wrap30(Lcom/android/server/location/GnssLocationProvider;Landroid/location/Location;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap31(Lcom/android/server/location/GnssLocationProvider;Landroid/net/Network;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap34(Lcom/android/server/location/GnssLocationProvider;JJI)V +PLcom/android/server/location/GnssLocationProvider;->-wrap38(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Ljava/util/Properties;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap39(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap4()Z +PLcom/android/server/location/GnssLocationProvider;->-wrap40(Lcom/android/server/location/GnssLocationProvider;IILjava/lang/Object;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap42(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap44(Lcom/android/server/location/GnssLocationProvider;)V +PLcom/android/server/location/GnssLocationProvider;->-wrap9(I)Z +PLcom/android/server/location/GnssLocationProvider;->(Landroid/content/Context;Landroid/location/ILocationManager;Landroid/os/Looper;)V +PLcom/android/server/location/GnssLocationProvider;->enable()V +PLcom/android/server/location/GnssLocationProvider;->enableBatching()V +PLcom/android/server/location/GnssLocationProvider;->getGnssBatchingProvider()Lcom/android/server/location/GnssLocationProvider$GnssBatchingProvider; +PLcom/android/server/location/GnssLocationProvider;->getGnssMeasurementsProvider()Lcom/android/server/location/GnssMeasurementsProvider; +PLcom/android/server/location/GnssLocationProvider;->getGnssMetricsProvider()Lcom/android/server/location/GnssLocationProvider$GnssMetricsProvider; +PLcom/android/server/location/GnssLocationProvider;->getGnssNavigationMessageProvider()Lcom/android/server/location/GnssNavigationMessageProvider; +PLcom/android/server/location/GnssLocationProvider;->getGnssStatusProvider()Landroid/location/IGnssStatusProvider; +PLcom/android/server/location/GnssLocationProvider;->getGnssSystemInfoProvider()Lcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider; +PLcom/android/server/location/GnssLocationProvider;->getGpsGeofenceProxy()Landroid/location/IGpsGeofenceHardware; +PLcom/android/server/location/GnssLocationProvider;->getName()Ljava/lang/String; +PLcom/android/server/location/GnssLocationProvider;->getNetInitiatedListener()Landroid/location/INetInitiatedListener; +PLcom/android/server/location/GnssLocationProvider;->getProperties()Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/location/GnssLocationProvider;->getSelectedApn()Ljava/lang/String; +PLcom/android/server/location/GnssLocationProvider;->getSuplMode(Ljava/util/Properties;ZZ)I +PLcom/android/server/location/GnssLocationProvider;->handleDownloadXtraData()V +PLcom/android/server/location/GnssLocationProvider;->handleEnable()V +PLcom/android/server/location/GnssLocationProvider;->handleInjectNtpTime()V +PLcom/android/server/location/GnssLocationProvider;->handleSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/GnssLocationProvider;->handleUpdateNetworkState(Landroid/net/Network;)V +PLcom/android/server/location/GnssLocationProvider;->hasCapability(I)Z +PLcom/android/server/location/GnssLocationProvider;->isDataNetworkConnected()Z +PLcom/android/server/location/GnssLocationProvider;->isEnabled()Z +PLcom/android/server/location/GnssLocationProvider;->isSupported()Z +PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromFile(Ljava/lang/String;Ljava/util/Properties;)Z +PLcom/android/server/location/GnssLocationProvider;->loadPropertiesFromResource(Landroid/content/Context;Ljava/util/Properties;)V +PLcom/android/server/location/GnssLocationProvider;->messageIdAsString(I)Ljava/lang/String; +PLcom/android/server/location/GnssLocationProvider;->reloadGpsProperties(Landroid/content/Context;Ljava/util/Properties;)V +PLcom/android/server/location/GnssLocationProvider;->reportStatus(I)V +PLcom/android/server/location/GnssLocationProvider;->requestUtcTime()V +PLcom/android/server/location/GnssLocationProvider;->setEngineCapabilities(I)V +PLcom/android/server/location/GnssLocationProvider;->setGnssYearOfHardware(I)V +PLcom/android/server/location/GnssLocationProvider;->setLocationExtras(Landroid/os/Bundle;)V +PLcom/android/server/location/GnssLocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/GnssLocationProvider;->setSuplHostPort(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/location/GnssLocationProvider;->startNavigating(Z)V +PLcom/android/server/location/GnssLocationProvider;->stopNavigating()V +PLcom/android/server/location/GnssLocationProvider;->subscriptionOrSimChanged(Landroid/content/Context;)V +PLcom/android/server/location/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V +PLcom/android/server/location/GnssLocationProvider;->xtraDownloadRequest()V +PLcom/android/server/location/GnssMeasurementsProvider;->(Landroid/os/Handler;)V +PLcom/android/server/location/GnssMeasurementsProvider;->onCapabilitiesUpdated(Z)V +PLcom/android/server/location/GnssMeasurementsProvider;->onGpsEnabledChanged()V +PLcom/android/server/location/GnssNavigationMessageProvider$StatusChangedOperation;->(I)V +PLcom/android/server/location/GnssNavigationMessageProvider;->(Landroid/os/Handler;)V +PLcom/android/server/location/GnssNavigationMessageProvider;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation; +PLcom/android/server/location/GnssNavigationMessageProvider;->onCapabilitiesUpdated(Z)V +PLcom/android/server/location/GnssNavigationMessageProvider;->onGpsEnabledChanged()V +PLcom/android/server/location/GnssStatusListenerHelper$1;->(Lcom/android/server/location/GnssStatusListenerHelper;)V +PLcom/android/server/location/GnssStatusListenerHelper$1;->execute(Landroid/location/IGnssStatusListener;)V +PLcom/android/server/location/GnssStatusListenerHelper$1;->execute(Landroid/os/IInterface;)V +PLcom/android/server/location/GnssStatusListenerHelper$2;->(Lcom/android/server/location/GnssStatusListenerHelper;)V +PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/location/IGnssStatusListener;)V +PLcom/android/server/location/GnssStatusListenerHelper$2;->execute(Landroid/os/IInterface;)V +PLcom/android/server/location/GnssStatusListenerHelper;->(Landroid/os/Handler;)V +PLcom/android/server/location/GnssStatusListenerHelper;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation; +PLcom/android/server/location/GnssStatusListenerHelper;->onStatusChanged(Z)V +PLcom/android/server/location/GnssStatusListenerHelper;->registerWithService()Z +PLcom/android/server/location/GnssStatusListenerHelper;->unregisterFromService()V +PLcom/android/server/location/LocationBasedCountryDetector$1;->(Lcom/android/server/location/LocationBasedCountryDetector;)V +PLcom/android/server/location/LocationBasedCountryDetector$2;->(Lcom/android/server/location/LocationBasedCountryDetector;)V +PLcom/android/server/location/LocationBasedCountryDetector$2;->run()V +PLcom/android/server/location/LocationBasedCountryDetector$3;->(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V +PLcom/android/server/location/LocationBasedCountryDetector$3;->run()V +PLcom/android/server/location/LocationBasedCountryDetector;->-wrap0(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V +PLcom/android/server/location/LocationBasedCountryDetector;->(Landroid/content/Context;)V +PLcom/android/server/location/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country; +PLcom/android/server/location/LocationBasedCountryDetector;->getCountryFromLocation(Landroid/location/Location;)Ljava/lang/String; +PLcom/android/server/location/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List; +PLcom/android/server/location/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location; +PLcom/android/server/location/LocationBasedCountryDetector;->getQueryLocationTimeout()J +PLcom/android/server/location/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z +PLcom/android/server/location/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V +PLcom/android/server/location/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V +PLcom/android/server/location/LocationBasedCountryDetector;->stop()V +PLcom/android/server/location/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V +PLcom/android/server/location/LocationBlacklist;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/location/LocationBlacklist;->getStringArrayLocked(Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/location/LocationBlacklist;->init()V +PLcom/android/server/location/LocationBlacklist;->reloadBlacklist()V +PLcom/android/server/location/LocationBlacklist;->reloadBlacklistLocked()V +PLcom/android/server/location/LocationFudger$1;->(Lcom/android/server/location/LocationFudger;Landroid/os/Handler;)V +PLcom/android/server/location/LocationFudger;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/location/LocationFudger;->addCoarseLocationExtraLocked(Landroid/location/Location;)Landroid/location/Location; +PLcom/android/server/location/LocationFudger;->createCoarseLocked(Landroid/location/Location;)Landroid/location/Location; +PLcom/android/server/location/LocationFudger;->loadCoarseAccuracy()F +PLcom/android/server/location/LocationFudger;->metersToDegreesLatitude(D)D +PLcom/android/server/location/LocationFudger;->metersToDegreesLongitude(DD)D +PLcom/android/server/location/LocationFudger;->nextOffsetLocked()D +PLcom/android/server/location/LocationFudger;->setAccuracyInMetersLocked(F)V +PLcom/android/server/location/LocationFudger;->updateRandomOffsetLocked()V +PLcom/android/server/location/LocationFudger;->wrapLatitude(D)D +PLcom/android/server/location/LocationFudger;->wrapLongitude(D)D +PLcom/android/server/location/LocationProviderProxy$1;->(Lcom/android/server/location/LocationProviderProxy;)V +PLcom/android/server/location/LocationProviderProxy$1;->run()V +PLcom/android/server/location/LocationProviderProxy;->-get0()Z +PLcom/android/server/location/LocationProviderProxy;->-get1(Lcom/android/server/location/LocationProviderProxy;)Z +PLcom/android/server/location/LocationProviderProxy;->-get2(Lcom/android/server/location/LocationProviderProxy;)Ljava/lang/Object; +PLcom/android/server/location/LocationProviderProxy;->-get3(Lcom/android/server/location/LocationProviderProxy;)Lcom/android/internal/location/ProviderRequest; +PLcom/android/server/location/LocationProviderProxy;->-get5(Lcom/android/server/location/LocationProviderProxy;)Landroid/os/WorkSource; +PLcom/android/server/location/LocationProviderProxy;->-set0(Lcom/android/server/location/LocationProviderProxy;Lcom/android/internal/location/ProviderProperties;)Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/location/LocationProviderProxy;->-wrap0(Lcom/android/server/location/LocationProviderProxy;)Lcom/android/internal/location/ILocationProvider; +PLcom/android/server/location/LocationProviderProxy;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)V +PLcom/android/server/location/LocationProviderProxy;->bind()Z +PLcom/android/server/location/LocationProviderProxy;->createAndBind(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)Lcom/android/server/location/LocationProviderProxy; +PLcom/android/server/location/LocationProviderProxy;->enable()V +PLcom/android/server/location/LocationProviderProxy;->getConnectedPackageName()Ljava/lang/String; +PLcom/android/server/location/LocationProviderProxy;->getProperties()Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/location/LocationProviderProxy;->getService()Lcom/android/internal/location/ILocationProvider; +PLcom/android/server/location/LocationProviderProxy;->getStatus(Landroid/os/Bundle;)I +PLcom/android/server/location/LocationProviderProxy;->getStatusUpdateTime()J +PLcom/android/server/location/LocationProviderProxy;->isEnabled()Z +PLcom/android/server/location/LocationProviderProxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->equals(Ljava/lang/Object;)Z +PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->hashCode()I +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->-wrap0(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;J)V +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->-wrap1(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;)V +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->()V +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;)V +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->startRequesting(J)V +PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->stopRequesting()V +PLcom/android/server/location/LocationRequestStatistics;->()V +PLcom/android/server/location/LocationRequestStatistics;->startRequesting(Ljava/lang/String;Ljava/lang/String;J)V +PLcom/android/server/location/LocationRequestStatistics;->stopRequesting(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/location/PassiveProvider;->(Landroid/location/ILocationManager;)V +PLcom/android/server/location/PassiveProvider;->getName()Ljava/lang/String; +PLcom/android/server/location/PassiveProvider;->getProperties()Lcom/android/internal/location/ProviderProperties; +PLcom/android/server/location/PassiveProvider;->getStatus(Landroid/os/Bundle;)I +PLcom/android/server/location/PassiveProvider;->getStatusUpdateTime()J +PLcom/android/server/location/PassiveProvider;->isEnabled()Z +PLcom/android/server/location/PassiveProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V +PLcom/android/server/location/PassiveProvider;->updateLocation(Landroid/location/Location;)V +PLcom/android/server/location/RemoteListenerHelper$1;->(Lcom/android/server/location/RemoteListenerHelper;)V +PLcom/android/server/location/RemoteListenerHelper$1;->run()V +PLcom/android/server/location/RemoteListenerHelper$2;->(Lcom/android/server/location/RemoteListenerHelper;)V +PLcom/android/server/location/RemoteListenerHelper$2;->run()V +PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;)V +PLcom/android/server/location/RemoteListenerHelper$LinkedListener;->binderDied()V +PLcom/android/server/location/RemoteListenerHelper;->-get1(Lcom/android/server/location/RemoteListenerHelper;)Z +PLcom/android/server/location/RemoteListenerHelper;->-get3(Lcom/android/server/location/RemoteListenerHelper;)Ljava/lang/String; +PLcom/android/server/location/RemoteListenerHelper;->-set0(Lcom/android/server/location/RemoteListenerHelper;Z)Z +PLcom/android/server/location/RemoteListenerHelper;->(Landroid/os/Handler;Ljava/lang/String;)V +PLcom/android/server/location/RemoteListenerHelper;->addListener(Landroid/os/IInterface;)Z +PLcom/android/server/location/RemoteListenerHelper;->calculateCurrentResultUnsafe()I +PLcom/android/server/location/RemoteListenerHelper;->removeListener(Landroid/os/IInterface;)V +PLcom/android/server/location/RemoteListenerHelper;->setSupported(Z)V +PLcom/android/server/location/RemoteListenerHelper;->tryRegister()V +PLcom/android/server/location/RemoteListenerHelper;->tryUnregister()V +PLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()V +PLcom/android/server/location/RemoteListenerHelper;->updateResult()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->$m$0()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->(ILjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw$1;->run()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->$m$0()V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->(ILjava/lang/Object;)V +PLcom/android/server/locksettings/-$Lambda$uuAdbltCNvfImff6TxhVt9IC9Qw;->run()V +PLcom/android/server/locksettings/LockSettingsService$1;->(Lcom/android/server/locksettings/LockSettingsService;)V +PLcom/android/server/locksettings/LockSettingsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/locksettings/LockSettingsService$2;->(Lcom/android/server/locksettings/LockSettingsService;I)V +PLcom/android/server/locksettings/LockSettingsService$2;->run()V +PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->(Lcom/android/server/locksettings/LockSettingsService;)V +PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z +PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V +PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V +PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;->(Lcom/android/server/locksettings/LockSettingsService;)V +PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;->(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;)V +PLcom/android/server/locksettings/LockSettingsService$Injector$1;->(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V +PLcom/android/server/locksettings/LockSettingsService$Injector;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsService$Injector;->getActivityManager()Landroid/app/IActivityManager; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getContext()Landroid/content/Context; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getHandler()Landroid/os/Handler; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getKeyStore()Landroid/security/KeyStore; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getNotificationManager()Landroid/app/NotificationManager; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorage()Lcom/android/server/locksettings/LockSettingsStorage; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorageManager()Landroid/os/storage/IStorageManager; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuth()Lcom/android/server/locksettings/LockSettingsStrongAuth; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTracker()Lcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager; +PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager; +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStartUser(I)V +PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->getStrongAuthForUser(I)I +PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->handleStrongAuthRequiredChanged(II)V +PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->register(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V +PLcom/android/server/locksettings/LockSettingsService;->-get0(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context; +PLcom/android/server/locksettings/LockSettingsService;->-get1(Lcom/android/server/locksettings/LockSettingsService;)Landroid/os/UserManager; +PLcom/android/server/locksettings/LockSettingsService;->-wrap0(Lcom/android/server/locksettings/LockSettingsService;I)Z +PLcom/android/server/locksettings/LockSettingsService;->-wrap1(Lcom/android/server/locksettings/LockSettingsService;I)V +PLcom/android/server/locksettings/LockSettingsService;->-wrap2(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V +PLcom/android/server/locksettings/LockSettingsService;->-wrap3(Lcom/android/server/locksettings/LockSettingsService;)V +PLcom/android/server/locksettings/LockSettingsService;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsService;->(Lcom/android/server/locksettings/LockSettingsService$Injector;)V +PLcom/android/server/locksettings/LockSettingsService;->addUserKeyAuth(I[B[B)V +PLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission(I)V +PLcom/android/server/locksettings/LockSettingsService;->checkVoldPassword(I)Z +PLcom/android/server/locksettings/LockSettingsService;->checkWritePermission(I)V +PLcom/android/server/locksettings/LockSettingsService;->clearUserKeyProtection(I)V +PLcom/android/server/locksettings/LockSettingsService;->enforceShell()V +PLcom/android/server/locksettings/LockSettingsService;->ensureProfileKeystoreUnlocked(I)V +PLcom/android/server/locksettings/LockSettingsService;->fixateNewestUserKeyAuth(I)V +PLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z +PLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService; +PLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsService;->getSyntheticPasswordHandleLocked(I)J +PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V +PLcom/android/server/locksettings/LockSettingsService;->isCallerShell()Z +PLcom/android/server/locksettings/LockSettingsService;->isSyntheticPasswordBasedCredentialLocked(I)Z +PLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z +PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_80479(Landroid/app/admin/PasswordMetrics;I)V +PLcom/android/server/locksettings/LockSettingsService;->lambda$-com_android_server_locksettings_LockSettingsService_81027(I)V +PLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(I)V +PLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V +PLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V +PLcom/android/server/locksettings/LockSettingsService;->notifyActivePasswordMetricsAvailable(Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsService;->notifyPasswordChanged(I)V +PLcom/android/server/locksettings/LockSettingsService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V +PLcom/android/server/locksettings/LockSettingsService;->onStartUser(I)V +PLcom/android/server/locksettings/LockSettingsService;->onUnlockUser(I)V +PLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +PLcom/android/server/locksettings/LockSettingsService;->removeKeystoreProfileKey(I)V +PLcom/android/server/locksettings/LockSettingsService;->setBoolean(Ljava/lang/String;ZI)V +PLcom/android/server/locksettings/LockSettingsService;->setKeystorePassword(Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsService;->setLockCredential(Ljava/lang/String;ILjava/lang/String;II)V +PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialInternal(Ljava/lang/String;ILjava/lang/String;II)V +PLcom/android/server/locksettings/LockSettingsService;->setLong(Ljava/lang/String;JI)V +PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabled(IZLjava/lang/String;)V +PLcom/android/server/locksettings/LockSettingsService;->setStringUnchecked(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/locksettings/LockSettingsService;->synchronizeUnifiedWorkChallengeForProfiles(ILjava/util/Map;)V +PLcom/android/server/locksettings/LockSettingsService;->systemReady()V +PLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V +PLcom/android/server/locksettings/LockSettingsShellCommand;->(Landroid/content/Context;Lcom/android/internal/widget/LockPatternUtils;)V +PLcom/android/server/locksettings/LockSettingsShellCommand;->checkCredential()Z +PLcom/android/server/locksettings/LockSettingsShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/locksettings/LockSettingsShellCommand;->parseArgs()V +PLcom/android/server/locksettings/LockSettingsShellCommand;->runClear()V +PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->()V +PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->(Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->-wrap0(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->()V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/lang/String;)Z +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->isFetched(I)Z +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/lang/String;)[B +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFile(Ljava/lang/String;[B)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/lang/String;[BI)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValue(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V +PLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V +PLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;->([BII)V +PLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;->([BIIZ)V +PLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;->createEmptyHash()Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; +PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V +PLcom/android/server/locksettings/LockSettingsStorage;->-get0()Ljava/lang/Object; +PLcom/android/server/locksettings/LockSettingsStorage;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsStorage;->deleteFile(Ljava/lang/String;)V +PLcom/android/server/locksettings/LockSettingsStorage;->getBaseZeroLockPatternFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPasswordFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPatternFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getLockCredentialFilePathForUser(ILjava/lang/String;)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getLockPasswordFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->getLockPatternFilename(I)Ljava/lang/String; +PLcom/android/server/locksettings/LockSettingsStorage;->hasCredential(I)Z +PLcom/android/server/locksettings/LockSettingsStorage;->hasFile(Ljava/lang/String;)Z +PLcom/android/server/locksettings/LockSettingsStorage;->hasPassword(I)Z +PLcom/android/server/locksettings/LockSettingsStorage;->hasPattern(I)Z +PLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V +PLcom/android/server/locksettings/LockSettingsStorage;->readCredentialHash(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; +PLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/lang/String;)[B +PLcom/android/server/locksettings/LockSettingsStorage;->readPasswordHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; +PLcom/android/server/locksettings/LockSettingsStorage;->readPatternHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash; +PLcom/android/server/locksettings/LockSettingsStorage;->removeChildProfileLock(I)V +PLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeCredentialHash(Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;I)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeFile(Ljava/lang/String;[B)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->-wrap0(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->-wrap3(Lcom/android/server/locksettings/LockSettingsStrongAuth;II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->(Landroid/content/Context;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleAddStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuth(II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuthOneUser(II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrackers(II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V +PLcom/android/server/locksettings/LockSettingsStrongAuth;->systemReady()V +PLcom/android/server/locksettings/SyntheticPasswordManager;->(Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/UserManager;)V +PLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverService()Landroid/hardware/weaver/V1_0/IWeaver; +PLcom/android/server/locksettings/SyntheticPasswordManager;->initWeaverService()V +PLcom/android/server/media/AudioPlaybackMonitor;->(Landroid/content/Context;Landroid/media/IAudioService;)V +PLcom/android/server/media/AudioPlaybackMonitor;->cleanUpAudioPlaybackUids(I)V +PLcom/android/server/media/AudioPlaybackMonitor;->getInstance(Landroid/content/Context;Landroid/media/IAudioService;)Lcom/android/server/media/AudioPlaybackMonitor; +PLcom/android/server/media/AudioPlaybackMonitor;->getSortedAudioPlaybackClientUids()Landroid/util/IntArray; +PLcom/android/server/media/AudioPlaybackMonitor;->isPlaybackActive(I)Z +PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlaybackStartedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlaybackStartedListener;)V +PLcom/android/server/media/AudioPlaybackMonitor;->registerOnAudioPlayerActiveStateChangedListener(Lcom/android/server/media/AudioPlaybackMonitor$OnAudioPlayerActiveStateChangedListener;)V +PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->(Lcom/android/server/media/MediaResourceMonitorService;)V +PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->getPackageNamesFromPid(I)[Ljava/lang/String; +PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->notifyResourceGranted(II)V +PLcom/android/server/media/MediaResourceMonitorService;->-get0()Z +PLcom/android/server/media/MediaResourceMonitorService;->(Landroid/content/Context;)V +PLcom/android/server/media/MediaResourceMonitorService;->onStart()V +PLcom/android/server/media/MediaRouterService$1;->(Lcom/android/server/media/MediaRouterService;)V +PLcom/android/server/media/MediaRouterService$1;->onAudioPlayerActiveStateChanged(IZ)V +PLcom/android/server/media/MediaRouterService$2;->(Lcom/android/server/media/MediaRouterService;)V +PLcom/android/server/media/MediaRouterService$2;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V +PLcom/android/server/media/MediaRouterService$3;->(Lcom/android/server/media/MediaRouterService;)V +PLcom/android/server/media/MediaRouterService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/media/MediaRouterService$ClientRecord;->(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;IILjava/lang/String;Z)V +PLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V +PLcom/android/server/media/MediaRouterService$ClientRecord;->dispose()V +PLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState; +PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->appendClientState(Landroid/media/MediaRouterClientState;)V +PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->updateDescriptor(Landroid/media/RemoteDisplayState;)Z +PLcom/android/server/media/MediaRouterService$UserHandler;->(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;)V +PLcom/android/server/media/MediaRouterService$UserHandler;->addProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +PLcom/android/server/media/MediaRouterService$UserHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/media/MediaRouterService$UserHandler;->scheduleUpdateClientState()V +PLcom/android/server/media/MediaRouterService$UserHandler;->start()V +PLcom/android/server/media/MediaRouterService$UserHandler;->updateClientState()V +PLcom/android/server/media/MediaRouterService$UserHandler;->updateDiscoveryRequest()V +PLcom/android/server/media/MediaRouterService$UserRecord;->(Lcom/android/server/media/MediaRouterService;I)V +PLcom/android/server/media/MediaRouterService;->-get0(Lcom/android/server/media/MediaRouterService;)Lcom/android/server/media/AudioPlaybackMonitor; +PLcom/android/server/media/MediaRouterService;->-get1(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context; +PLcom/android/server/media/MediaRouterService;->-get2(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object; +PLcom/android/server/media/MediaRouterService;->-set0(Lcom/android/server/media/MediaRouterService;Z)Z +PLcom/android/server/media/MediaRouterService;->(Landroid/content/Context;)V +PLcom/android/server/media/MediaRouterService;->clientDied(Lcom/android/server/media/MediaRouterService$ClientRecord;)V +PLcom/android/server/media/MediaRouterService;->disposeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;Z)V +PLcom/android/server/media/MediaRouterService;->disposeUserIfNeededLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V +PLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; +PLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState; +PLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V +PLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V +PLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z +PLcom/android/server/media/MediaRouterService;->isPlaybackActiveLocked(Landroid/media/IMediaRouterClient;)Z +PLcom/android/server/media/MediaRouterService;->monitor()V +PLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V +PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V +PLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V +PLcom/android/server/media/MediaRouterService;->restoreRoute(I)V +PLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V +PLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V +PLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V +PLcom/android/server/media/MediaRouterService;->setSelectedRouteLocked(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V +PLcom/android/server/media/MediaRouterService;->switchUser()V +PLcom/android/server/media/MediaRouterService;->systemRunning()V +PLcom/android/server/media/MediaRouterService;->unregisterClientLocked(Landroid/media/IMediaRouterClient;Z)V +PLcom/android/server/media/MediaRouterService;->validatePackageName(ILjava/lang/String;)Z +PLcom/android/server/media/MediaSessionRecord$1;->(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata; +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/ParcelableVolumeInfo; +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +PLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallbackListener(Landroid/media/session/ISessionControllerCallback;)V +PLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;->-get0(Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;)Landroid/media/session/ISessionControllerCallback; +PLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;->(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;I)V +PLcom/android/server/media/MediaSessionRecord$MessageHandler;->(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Looper;)V +PLcom/android/server/media/MediaSessionRecord$MessageHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(I)V +PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(ILjava/lang/Object;)V +PLcom/android/server/media/MediaSessionRecord$SessionCb;->-get0(Lcom/android/server/media/MediaSessionRecord$SessionCb;)Landroid/media/session/ISessionCallback; +PLcom/android/server/media/MediaSessionRecord$SessionCb;->(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionCallback;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord$SessionStub;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->destroy()V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController; +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V +PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V +PLcom/android/server/media/MediaSessionRecord;->-get0()Z +PLcom/android/server/media/MediaSessionRecord;->-get1(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioAttributes; +PLcom/android/server/media/MediaSessionRecord;->-get11(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler; +PLcom/android/server/media/MediaSessionRecord;->-get13(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/Object; +PLcom/android/server/media/MediaSessionRecord;->-get15(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/MediaMetadata; +PLcom/android/server/media/MediaSessionRecord;->-get17(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord;->-get18(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord;->-get2(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioManager; +PLcom/android/server/media/MediaSessionRecord;->-get22(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService; +PLcom/android/server/media/MediaSessionRecord;->-get26(Lcom/android/server/media/MediaSessionRecord;)I +PLcom/android/server/media/MediaSessionRecord;->-get5(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$ControllerStub; +PLcom/android/server/media/MediaSessionRecord;->-get6(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/ArrayList; +PLcom/android/server/media/MediaSessionRecord;->-get8(Lcom/android/server/media/MediaSessionRecord;)Z +PLcom/android/server/media/MediaSessionRecord;->-set0(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes; +PLcom/android/server/media/MediaSessionRecord;->-set10(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/PlaybackState;)Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord;->-set15(Lcom/android/server/media/MediaSessionRecord;I)I +PLcom/android/server/media/MediaSessionRecord;->-set3(Lcom/android/server/media/MediaSessionRecord;J)J +PLcom/android/server/media/MediaSessionRecord;->-set4(Lcom/android/server/media/MediaSessionRecord;Z)Z +PLcom/android/server/media/MediaSessionRecord;->-set5(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent; +PLcom/android/server/media/MediaSessionRecord;->-set7(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent; +PLcom/android/server/media/MediaSessionRecord;->-set8(Lcom/android/server/media/MediaSessionRecord;Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata; +PLcom/android/server/media/MediaSessionRecord;->-wrap0(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord;->-wrap1(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I +PLcom/android/server/media/MediaSessionRecord;->-wrap2(Lcom/android/server/media/MediaSessionRecord;I)Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord;->-wrap5(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord;->-wrap6(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord;->-wrap9(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionRecord;->(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;)V +PLcom/android/server/media/MediaSessionRecord;->binderDied()V +PLcom/android/server/media/MediaSessionRecord;->getCallback()Landroid/media/session/ISessionCallback; +PLcom/android/server/media/MediaSessionRecord;->getControllerBinder()Landroid/media/session/ISessionController; +PLcom/android/server/media/MediaSessionRecord;->getControllerHolderIndexForCb(Landroid/media/session/ISessionControllerCallback;)I +PLcom/android/server/media/MediaSessionRecord;->getFlags()J +PLcom/android/server/media/MediaSessionRecord;->getMediaButtonReceiver()Landroid/app/PendingIntent; +PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord;->getPackageName(I)Ljava/lang/String; +PLcom/android/server/media/MediaSessionRecord;->getPlaybackState()Landroid/media/session/PlaybackState; +PLcom/android/server/media/MediaSessionRecord;->getPlaybackType()I +PLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession; +PLcom/android/server/media/MediaSessionRecord;->getUid()I +PLcom/android/server/media/MediaSessionRecord;->getUserId()I +PLcom/android/server/media/MediaSessionRecord;->isActive()Z +PLcom/android/server/media/MediaSessionRecord;->isPlaybackActive()Z +PLcom/android/server/media/MediaSessionRecord;->onDestroy()V +PLcom/android/server/media/MediaSessionRecord;->pushMetadataUpdate()V +PLcom/android/server/media/MediaSessionRecord;->pushPlaybackStateUpdate()V +PLcom/android/server/media/MediaSessionRecord;->pushSessionDestroyed()V +PLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String; +PLcom/android/server/media/MediaSessionService$1;->(Lcom/android/server/media/MediaSessionService;)V +PLcom/android/server/media/MediaSessionService$1;->onAudioPlaybackStarted(I)V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get0(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/ICallback; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get10(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-get8(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnVolumeKeyLongPressListener; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-set0(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/ICallback;)Landroid/media/session/ICallback; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->-wrap1(Lcom/android/server/media/MediaSessionService$FullUserRecord;)V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->(Lcom/android/server/media/MediaSessionService;I)V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked()V +PLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService$MessageHandler;->(Lcom/android/server/media/MediaSessionService;)V +PLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(I)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl$1;->(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl$2;->(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Lcom/android/server/media/MediaSessionService$FullUserRecord;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl$5;->(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;III)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl$5;->run()V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Landroid/os/Handler;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->(Lcom/android/server/media/MediaSessionService;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;I)Landroid/media/session/ISession; +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchAdjustVolumeLocked(III)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEvent(Landroid/view/KeyEvent;IZ)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEventLocked(Landroid/view/KeyEvent;IZ)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isValidLocalStreamType(I)Z +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setCallback(Landroid/media/session/ICallback;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V +PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->verifySessionsRequest(Landroid/content/ComponentName;III)I +PLcom/android/server/media/MediaSessionService$SessionsListenerRecord;->-get1(Lcom/android/server/media/MediaSessionService$SessionsListenerRecord;)Landroid/media/session/IActiveSessionsListener; +PLcom/android/server/media/MediaSessionService$SessionsListenerRecord;->-get4(Lcom/android/server/media/MediaSessionService$SessionsListenerRecord;)I +PLcom/android/server/media/MediaSessionService$SessionsListenerRecord;->(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;III)V +PLcom/android/server/media/MediaSessionService$SettingsObserver;->-wrap0(Lcom/android/server/media/MediaSessionService$SettingsObserver;)V +PLcom/android/server/media/MediaSessionService$SettingsObserver;->(Lcom/android/server/media/MediaSessionService;)V +PLcom/android/server/media/MediaSessionService$SettingsObserver;->(Lcom/android/server/media/MediaSessionService;Lcom/android/server/media/MediaSessionService$SettingsObserver;)V +PLcom/android/server/media/MediaSessionService$SettingsObserver;->observe()V +PLcom/android/server/media/MediaSessionService;->-get0(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlaybackMonitor; +PLcom/android/server/media/MediaSessionService;->-get1(Lcom/android/server/media/MediaSessionService;)Landroid/media/IAudioService; +PLcom/android/server/media/MediaSessionService;->-get12(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList; +PLcom/android/server/media/MediaSessionService;->-get2(Lcom/android/server/media/MediaSessionService;)Landroid/content/ContentResolver; +PLcom/android/server/media/MediaSessionService;->-get3(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$FullUserRecord; +PLcom/android/server/media/MediaSessionService;->-get5(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService;->-get6(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler; +PLcom/android/server/media/MediaSessionService;->-get9(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object; +PLcom/android/server/media/MediaSessionService;->-set0(Lcom/android/server/media/MediaSessionService;Landroid/media/IRemoteVolumeController;)Landroid/media/IRemoteVolumeController; +PLcom/android/server/media/MediaSessionService;->-wrap0(Lcom/android/server/media/MediaSessionService;)Z +PLcom/android/server/media/MediaSessionService;->-wrap1(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService;->-wrap10(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;II)V +PLcom/android/server/media/MediaSessionService;->-wrap11(Lcom/android/server/media/MediaSessionService;I)V +PLcom/android/server/media/MediaSessionService;->-wrap2(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord; +PLcom/android/server/media/MediaSessionService;->-wrap3(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I +PLcom/android/server/media/MediaSessionService;->-wrap4(Lcom/android/server/media/MediaSessionService;I)Ljava/lang/String; +PLcom/android/server/media/MediaSessionService;->-wrap5(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List; +PLcom/android/server/media/MediaSessionService;->-wrap8(Lcom/android/server/media/MediaSessionService;Landroid/content/ComponentName;III)V +PLcom/android/server/media/MediaSessionService;->-wrap9(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;I)V +PLcom/android/server/media/MediaSessionService;->(Landroid/content/Context;)V +PLcom/android/server/media/MediaSessionService;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService;->createSessionLocked(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionService;->destroySession(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService;->destroySessionLocked(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService;->enforceMediaPermissions(Landroid/content/ComponentName;III)V +PLcom/android/server/media/MediaSessionService;->enforcePackageName(Ljava/lang/String;I)V +PLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V +PLcom/android/server/media/MediaSessionService;->enforceSystemUiPermission(Ljava/lang/String;II)V +PLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I +PLcom/android/server/media/MediaSessionService;->getAudioService()Landroid/media/IAudioService; +PLcom/android/server/media/MediaSessionService;->getCallingPackageName(I)Ljava/lang/String; +PLcom/android/server/media/MediaSessionService;->isCurrentVolumeController(II)Z +PLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z +PLcom/android/server/media/MediaSessionService;->monitor()V +PLcom/android/server/media/MediaSessionService;->onMediaButtonReceiverChanged(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService;->onSessionPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V +PLcom/android/server/media/MediaSessionService;->onStart()V +PLcom/android/server/media/MediaSessionService;->onStartUser(I)V +PLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V +PLcom/android/server/media/MediaSessionService;->sessionDied(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService;->updateSession(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionService;->updateUser()V +PLcom/android/server/media/MediaSessionStack;->(Lcom/android/server/media/AudioPlaybackMonitor;Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;)V +PLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionStack;->clearCache(I)V +PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecord;)Z +PLcom/android/server/media/MediaSessionStack;->containsState(I[I)Z +PLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/ArrayList; +PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionStack;->getDefaultVolumeSession()Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecord; +PLcom/android/server/media/MediaSessionStack;->onPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V +PLcom/android/server/media/MediaSessionStack;->onSessionStateChange(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionStack;->shouldUpdatePriority(II)Z +PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSession(Lcom/android/server/media/MediaSessionRecord;)V +PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V +PLcom/android/server/media/RemoteDisplayProviderProxy$1;->(Lcom/android/server/media/RemoteDisplayProviderProxy;)V +PLcom/android/server/media/RemoteDisplayProviderProxy;->(Landroid/content/Context;Landroid/content/ComponentName;I)V +PLcom/android/server/media/RemoteDisplayProviderProxy;->getDisplayState()Landroid/media/RemoteDisplayState; +PLcom/android/server/media/RemoteDisplayProviderProxy;->getFlattenedComponentName()Ljava/lang/String; +PLcom/android/server/media/RemoteDisplayProviderProxy;->rebindIfDisconnected()V +PLcom/android/server/media/RemoteDisplayProviderProxy;->setCallback(Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;)V +PLcom/android/server/media/RemoteDisplayProviderProxy;->setDiscoveryMode(I)V +PLcom/android/server/media/RemoteDisplayProviderProxy;->setSelectedDisplay(Ljava/lang/String;)V +PLcom/android/server/media/RemoteDisplayProviderProxy;->shouldBind()Z +PLcom/android/server/media/RemoteDisplayProviderProxy;->start()V +PLcom/android/server/media/RemoteDisplayProviderProxy;->unbind()V +PLcom/android/server/media/RemoteDisplayProviderProxy;->updateBinding()V +PLcom/android/server/media/RemoteDisplayProviderWatcher$1;->(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V +PLcom/android/server/media/RemoteDisplayProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/media/RemoteDisplayProviderWatcher$2;->(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V +PLcom/android/server/media/RemoteDisplayProviderWatcher$2;->run()V +PLcom/android/server/media/RemoteDisplayProviderWatcher;->-get0()Z +PLcom/android/server/media/RemoteDisplayProviderWatcher;->-wrap0(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V +PLcom/android/server/media/RemoteDisplayProviderWatcher;->(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V +PLcom/android/server/media/RemoteDisplayProviderWatcher;->findProvider(Ljava/lang/String;Ljava/lang/String;)I +PLcom/android/server/media/RemoteDisplayProviderWatcher;->hasCaptureVideoPermission(Ljava/lang/String;)Z +PLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V +PLcom/android/server/media/RemoteDisplayProviderWatcher;->verifyServiceTrusted(Landroid/content/pm/ServiceInfo;)Z +PLcom/android/server/media/projection/MediaProjectionManagerService$1;->(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->(Lcom/android/server/media/projection/MediaProjectionManagerService;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->()V +PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->add(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;->(Lcom/android/server/media/projection/MediaProjectionManagerService;)V +PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;->(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService;->-get2(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/content/Context; +PLcom/android/server/media/projection/MediaProjectionManagerService;->-wrap0(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/media/projection/MediaProjectionInfo; +PLcom/android/server/media/projection/MediaProjectionManagerService;->-wrap3(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService;->(Landroid/content/Context;)V +PLcom/android/server/media/projection/MediaProjectionManagerService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V +PLcom/android/server/media/projection/MediaProjectionManagerService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo; +PLcom/android/server/media/projection/MediaProjectionManagerService;->linkDeathRecipientLocked(Landroid/media/projection/IMediaProjectionWatcherCallback;Landroid/os/IBinder$DeathRecipient;)V +PLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V +PLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V +PLcom/android/server/midi/MidiService$1;->(Lcom/android/server/midi/MidiService;)V +PLcom/android/server/midi/MidiService$1;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/midi/MidiService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/midi/MidiService$Lifecycle;->onStart()V +PLcom/android/server/midi/MidiService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/midi/MidiService;->-wrap0(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V +PLcom/android/server/midi/MidiService;->-wrap1(Lcom/android/server/midi/MidiService;)V +PLcom/android/server/midi/MidiService;->-wrap3(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V +PLcom/android/server/midi/MidiService;->(Landroid/content/Context;)V +PLcom/android/server/midi/MidiService;->onUnlockUser()V +PLcom/android/server/midi/MidiService;->removePackageDeviceServers(Ljava/lang/String;)V +PLcom/android/server/net/-$Lambda$hlRLCZCUKiWKuPbzPq01UpErk2Y;->$m$0()V +PLcom/android/server/net/-$Lambda$hlRLCZCUKiWKuPbzPq01UpErk2Y;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/net/-$Lambda$hlRLCZCUKiWKuPbzPq01UpErk2Y;->run()V +PLcom/android/server/net/DelayedDiskWrite;->()V +PLcom/android/server/net/IpConfigStore;->()V +PLcom/android/server/net/IpConfigStore;->(Lcom/android/server/net/DelayedDiskWrite;)V +PLcom/android/server/net/IpConfigStore;->loge(Ljava/lang/String;)V +PLcom/android/server/net/IpConfigStore;->readIpAndProxyConfigurations(Ljava/lang/String;)Landroid/util/SparseArray; +PLcom/android/server/net/LockdownVpnTracker;->isEnabled()Z +PLcom/android/server/net/NetworkIdentitySet;->()V +PLcom/android/server/net/NetworkPolicyManagerInternal;->()V +PLcom/android/server/net/NetworkPolicyManagerService$10;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$10;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkPolicyManagerService$11;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$11;->limitReached(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/net/NetworkPolicyManagerService$12;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkPolicyManagerService$13;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$14;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$15;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$16;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$17;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$1;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$2;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$3;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$3;->run()V +PLcom/android/server/net/NetworkPolicyManagerService$4;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkPolicyManagerService$5;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$6;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$7;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkPolicyManagerService$8;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$9;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;)V +PLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onParoleStateChanged(Z)V +PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;)V +PLcom/android/server/net/NetworkPolicyManagerService$ProcStateSeqHistory;->(I)V +PLcom/android/server/net/NetworkPolicyManagerService;->-get0(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context; +PLcom/android/server/net/NetworkPolicyManagerService;->-get1(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/os/RemoteCallbackList; +PLcom/android/server/net/NetworkPolicyManagerService;->-get3(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/net/INetworkStatsService; +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap10(Lcom/android/server/net/NetworkPolicyManagerService;IZ)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap11(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap12(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap17(Lcom/android/server/net/NetworkPolicyManagerService;ILandroid/util/SparseIntArray;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap18(Lcom/android/server/net/NetworkPolicyManagerService;I)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap22(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap23(Lcom/android/server/net/NetworkPolicyManagerService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->-wrap6(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V +PLcom/android/server/net/NetworkPolicyManagerService;->(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;)V +PLcom/android/server/net/NetworkPolicyManagerService;->(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/net/INetworkStatsService;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Landroid/util/TrustedTime;Ljava/io/File;Z)V +PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL()Z +PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL(I)Z +PLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager(Landroid/net/IConnectivityManager;)V +PLcom/android/server/net/NetworkPolicyManagerService;->bindNotificationManager(Landroid/app/INotificationManager;)V +PLcom/android/server/net/NetworkPolicyManagerService;->dispatchMeteredIfacesChanged(Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V +PLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V +PLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL()V +PLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy; +PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackground()Z +PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundByCaller()I +PLcom/android/server/net/NetworkPolicyManagerService;->getSystemDir()Ljava/io/File; +PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I +PLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z +PLcom/android/server/net/NetworkPolicyManagerService;->lambda$-com_android_server_net_NetworkPolicyManagerService_37358(Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/net/NetworkPolicyManagerService;->maybeRefreshTrustedTime()V +PLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch; +PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL()V +PLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V +PLcom/android/server/net/NetworkPolicyManagerService;->onTetheringChanged(Ljava/lang/String;Z)V +PLcom/android/server/net/NetworkPolicyManagerService;->purgePowerSaveTempWhitelistUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V +PLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V +PLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkWhitelist(IZ)V +PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(Z)V +PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRules(ILandroid/util/SparseIntArray;)V +PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesAsync(ILandroid/util/SparseIntArray;I)V +PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V +PLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveTempWhitelistUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveWhitelistUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictionRulesForUidUL(I)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(IZI)V +PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V +PLcom/android/server/net/NetworkPolicyManagerService;->upgradeWifiMeteredOverrideAL()V +PLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V +PLcom/android/server/net/NetworkStatsCollection;->(J)V +PLcom/android/server/net/NetworkStatsCollection;->getTotalBytes()J +PLcom/android/server/net/NetworkStatsCollection;->isDirty()Z +PLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/InputStream;)V +PLcom/android/server/net/NetworkStatsCollection;->recordCollection(Lcom/android/server/net/NetworkStatsCollection;)V +PLcom/android/server/net/NetworkStatsCollection;->reset()V +PLcom/android/server/net/NetworkStatsObservers$1;->(Lcom/android/server/net/NetworkStatsObservers;)V +PLcom/android/server/net/NetworkStatsObservers$1;->handleMessage(Landroid/os/Message;)Z +PLcom/android/server/net/NetworkStatsObservers$StatsContext;->(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/util/ArrayMap;Landroid/util/ArrayMap;[Lcom/android/internal/net/VpnInfo;J)V +PLcom/android/server/net/NetworkStatsObservers;->-wrap2(Lcom/android/server/net/NetworkStatsObservers;Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V +PLcom/android/server/net/NetworkStatsObservers;->()V +PLcom/android/server/net/NetworkStatsObservers;->getHandler()Landroid/os/Handler; +PLcom/android/server/net/NetworkStatsObservers;->getHandlerLooperLocked()Landroid/os/Looper; +PLcom/android/server/net/NetworkStatsObservers;->handleUpdateStats(Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V +PLcom/android/server/net/NetworkStatsObservers;->updateStats(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/util/ArrayMap;Landroid/util/ArrayMap;[Lcom/android/internal/net/VpnInfo;J)V +PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->(Lcom/android/server/net/NetworkStatsCollection;)V +PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->read(Ljava/io/InputStream;)V +PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->reset()V +PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->shouldWrite()Z +PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->write(Ljava/io/OutputStream;)V +PLcom/android/server/net/NetworkStatsRecorder;->(Lcom/android/internal/util/FileRotator;Landroid/net/NetworkStats$NonMonotonicObserver;Landroid/os/DropBoxManager;Ljava/lang/String;JZ)V +PLcom/android/server/net/NetworkStatsRecorder;->getOrLoadCompleteLocked()Lcom/android/server/net/NetworkStatsCollection; +PLcom/android/server/net/NetworkStatsRecorder;->loadLocked(JJ)Lcom/android/server/net/NetworkStatsCollection; +PLcom/android/server/net/NetworkStatsRecorder;->setPersistThreshold(J)V +PLcom/android/server/net/NetworkStatsService$1;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkStatsService$2;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/net/NetworkStatsService$3;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$4;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$5;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$6;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$6;->limitReached(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->(Landroid/content/Context;)V +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getDevConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getDevPersistBytes(J)J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalAlertBytes(J)J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalBoolean(Ljava/lang/String;Z)Z +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalLong(Ljava/lang/String;J)J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getPollInterval()J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getSampleEnabled()Z +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getTimeCacheMaxAge()J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidPersistBytes(J)J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidTagConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidTagPersistBytes(J)J +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getXtConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; +PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getXtPersistBytes(J)J +PLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;->(Lcom/android/server/net/NetworkStatsService;Lcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;)V +PLcom/android/server/net/NetworkStatsService$HandlerCallback;->(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService$HandlerCallback;->handleMessage(Landroid/os/Message;)Z +PLcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;->(JJJ)V +PLcom/android/server/net/NetworkStatsService;->-get0(Lcom/android/server/net/NetworkStatsService;)Landroid/content/Context; +PLcom/android/server/net/NetworkStatsService;->-get1(Lcom/android/server/net/NetworkStatsService;)Landroid/os/Handler; +PLcom/android/server/net/NetworkStatsService;->-wrap3(Lcom/android/server/net/NetworkStatsService;I)V +PLcom/android/server/net/NetworkStatsService;->-wrap4(Lcom/android/server/net/NetworkStatsService;)V +PLcom/android/server/net/NetworkStatsService;->(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/app/AlarmManager;Landroid/os/PowerManager$WakeLock;Landroid/util/TrustedTime;Landroid/telephony/TelephonyManager;Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings;Lcom/android/server/net/NetworkStatsObservers;Ljava/io/File;Ljava/io/File;)V +PLcom/android/server/net/NetworkStatsService;->advisePersistThreshold(J)V +PLcom/android/server/net/NetworkStatsService;->assertBandwidthControlEnabled()V +PLcom/android/server/net/NetworkStatsService;->bindConnectivityManager(Landroid/net/IConnectivityManager;)V +PLcom/android/server/net/NetworkStatsService;->bootstrapStatsLocked()V +PLcom/android/server/net/NetworkStatsService;->buildRecorder(Ljava/lang/String;Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;Z)Lcom/android/server/net/NetworkStatsRecorder; +PLcom/android/server/net/NetworkStatsService;->create(Landroid/content/Context;Landroid/os/INetworkManagementService;)Lcom/android/server/net/NetworkStatsService; +PLcom/android/server/net/NetworkStatsService;->findOrCreateNetworkIdentitySet(Landroid/util/ArrayMap;Ljava/lang/Object;)Lcom/android/server/net/NetworkIdentitySet; +PLcom/android/server/net/NetworkStatsService;->forceUpdateIfaces()V +PLcom/android/server/net/NetworkStatsService;->getDefaultBaseDir()Ljava/io/File; +PLcom/android/server/net/NetworkStatsService;->getDefaultSystemDir()Ljava/io/File; +PLcom/android/server/net/NetworkStatsService;->getMobileIfaces()[Ljava/lang/String; +PLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats; +PLcom/android/server/net/NetworkStatsService;->getNetworkStatsUidDetail()Landroid/net/NetworkStats; +PLcom/android/server/net/NetworkStatsService;->getNetworkStatsXt()Landroid/net/NetworkStats; +PLcom/android/server/net/NetworkStatsService;->incrementOperationCount(III)V +PLcom/android/server/net/NetworkStatsService;->isBandwidthControlEnabled()Z +PLcom/android/server/net/NetworkStatsService;->maybeUpgradeLegacyStatsLocked()V +PLcom/android/server/net/NetworkStatsService;->performPoll(I)V +PLcom/android/server/net/NetworkStatsService;->registerGlobalAlert()V +PLcom/android/server/net/NetworkStatsService;->registerPollAlarmLocked()V +PLcom/android/server/net/NetworkStatsService;->setHandler(Landroid/os/Handler;Landroid/os/Handler$Callback;)V +PLcom/android/server/net/NetworkStatsService;->systemReady()V +PLcom/android/server/net/NetworkStatsService;->updateIfaces()V +PLcom/android/server/net/NetworkStatsService;->updateIfacesLocked()V +PLcom/android/server/net/NetworkStatsService;->updatePersistThresholds()V +PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$2;->$m$1()V +PLcom/android/server/notification/-$Lambda$0oXbfIRCVxclfVVwXaE3J61tRFA$3;->(II)V +PLcom/android/server/notification/AlertRateLimiter;->()V +PLcom/android/server/notification/BadgeExtractor;->()V +PLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/BadgeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/CalendarTracker$1;->(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V +PLcom/android/server/notification/CalendarTracker$CheckEventResult;->()V +PLcom/android/server/notification/CalendarTracker;->(Landroid/content/Context;Landroid/content/Context;)V +PLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult; +PLcom/android/server/notification/CalendarTracker;->getPrimaryCalendars()Landroid/util/ArraySet; +PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V +PLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V +PLcom/android/server/notification/ConditionProviders$ConditionRecord;->(Landroid/net/Uri;Landroid/content/ComponentName;)V +PLcom/android/server/notification/ConditionProviders$ConditionRecord;->(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V +PLcom/android/server/notification/ConditionProviders;->(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V +PLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V +PLcom/android/server/notification/ConditionProviders;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; +PLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V +PLcom/android/server/notification/ConditionProviders;->getSystemProviders()Ljava/lang/Iterable; +PLcom/android/server/notification/ConditionProviders;->isSystemProviderEnabled(Ljava/lang/String;)Z +PLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V +PLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V +PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V +PLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V +PLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V +PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider; +PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/IConditionProvider; +PLcom/android/server/notification/ConditionProviders;->removeDuplicateConditions(Ljava/lang/String;[Landroid/service/notification/Condition;)[Landroid/service/notification/Condition; +PLcom/android/server/notification/ConditionProviders;->safeSet([Ljava/lang/Object;)Landroid/util/ArraySet; +PLcom/android/server/notification/ConditionProviders;->setCallback(Lcom/android/server/notification/ConditionProviders$Callback;)V +PLcom/android/server/notification/ConditionProviders;->subscribeIfNecessary(Landroid/content/ComponentName;Landroid/net/Uri;)Z +PLcom/android/server/notification/ConditionProviders;->subscribeLocked(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V +PLcom/android/server/notification/CountdownConditionProvider$Receiver;->(Lcom/android/server/notification/CountdownConditionProvider;)V +PLcom/android/server/notification/CountdownConditionProvider$Receiver;->(Lcom/android/server/notification/CountdownConditionProvider;Lcom/android/server/notification/CountdownConditionProvider$Receiver;)V +PLcom/android/server/notification/CountdownConditionProvider;->()V +PLcom/android/server/notification/CountdownConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider; +PLcom/android/server/notification/CountdownConditionProvider;->attachBase(Landroid/content/Context;)V +PLcom/android/server/notification/CountdownConditionProvider;->getComponent()Landroid/content/ComponentName; +PLcom/android/server/notification/CountdownConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z +PLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V +PLcom/android/server/notification/CountdownConditionProvider;->onConnected()V +PLcom/android/server/notification/EventConditionProvider$1;->(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider$2;->(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/notification/EventConditionProvider$3;->(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider$3;->run()V +PLcom/android/server/notification/EventConditionProvider$4;->(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider;->-get0()Z +PLcom/android/server/notification/EventConditionProvider;->-wrap0(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider;->-wrap1(Lcom/android/server/notification/EventConditionProvider;)V +PLcom/android/server/notification/EventConditionProvider;->()V +PLcom/android/server/notification/EventConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider; +PLcom/android/server/notification/EventConditionProvider;->attachBase(Landroid/content/Context;)V +PLcom/android/server/notification/EventConditionProvider;->createCondition(Landroid/net/Uri;I)Landroid/service/notification/Condition; +PLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptions()V +PLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptionsW()V +PLcom/android/server/notification/EventConditionProvider;->getComponent()Landroid/content/ComponentName; +PLcom/android/server/notification/EventConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z +PLcom/android/server/notification/EventConditionProvider;->onBootComplete()V +PLcom/android/server/notification/EventConditionProvider;->onConnected()V +PLcom/android/server/notification/EventConditionProvider;->onSubscribe(Landroid/net/Uri;)V +PLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V +PLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V +PLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V +PLcom/android/server/notification/GlobalSortKeyComparator;->()V +PLcom/android/server/notification/GroupHelper;->(Lcom/android/server/notification/GroupHelper$Callback;)V +PLcom/android/server/notification/GroupHelper;->adjustAutogroupingSummary(ILjava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/notification/GroupHelper;->maybeUngroup(Landroid/service/notification/StatusBarNotification;ZI)V +PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V +PLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/ImportanceExtractor;->()V +PLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/ManagedServices$1;->(Lcom/android/server/notification/ManagedServices;Ljava/lang/String;IZI)V +PLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)V +PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getOwner()Lcom/android/server/notification/ManagedServices; +PLcom/android/server/notification/ManagedServices$UserProfiles;->()V +PLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()[I +PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z +PLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V +PLcom/android/server/notification/ManagedServices;->-get1(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList; +PLcom/android/server/notification/ManagedServices;->-get2(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList; +PLcom/android/server/notification/ManagedServices;->-wrap0(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V +PLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZ)V +PLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V +PLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String; +PLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/notification/ManagedServices;->isComponentEnabledForCurrentProfiles(Landroid/content/ComponentName;)Z +PLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet; +PLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V +PLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V +PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V +PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set; +PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Ljava/util/Set; +PLcom/android/server/notification/ManagedServices;->readXml(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V +PLcom/android/server/notification/ManagedServices;->registerService(Landroid/os/IInterface;Landroid/content/ComponentName;I)V +PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V +PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V +PLcom/android/server/notification/ManagedServices;->removeServiceLocked(I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; +PLcom/android/server/notification/ManagedServices;->setComponentState(Landroid/content/ComponentName;Z)V +PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V +PLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V +PLcom/android/server/notification/NotificationAdjustmentExtractor;->()V +PLcom/android/server/notification/NotificationAdjustmentExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationAdjustmentExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/NotificationChannelExtractor;->()V +PLcom/android/server/notification/NotificationChannelExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/NotificationComparator$1;->(Lcom/android/server/notification/NotificationComparator;)V +PLcom/android/server/notification/NotificationComparator;->(Landroid/content/Context;)V +PLcom/android/server/notification/NotificationIntrusivenessExtractor;->()V +PLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/NotificationManagerService$10;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$11;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$11;->removeAutoGroupSummary(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$13;->(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService$13;->run()V +PLcom/android/server/notification/NotificationManagerService$15;->(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$15;->lambda$-com_android_server_notification_NotificationManagerService$15_208265(III)Z +PLcom/android/server/notification/NotificationManagerService$17;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$1;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$1;->clearEffects()V +PLcom/android/server/notification/NotificationManagerService$1;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V +PLcom/android/server/notification/NotificationManagerService$1;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V +PLcom/android/server/notification/NotificationManagerService$1;->onPanelHidden()V +PLcom/android/server/notification/NotificationManagerService$1;->onPanelRevealed(ZI)V +PLcom/android/server/notification/NotificationManagerService$1;->onSetDisabled(I)V +PLcom/android/server/notification/NotificationManagerService$2;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$3;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$4;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$5;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$6;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/notification/NotificationManagerService$7$1;->(Lcom/android/server/notification/NotificationManagerService$7;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V +PLcom/android/server/notification/NotificationManagerService$7$1;->run()V +PLcom/android/server/notification/NotificationManagerService$7;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabled(Ljava/lang/String;)Z +PLcom/android/server/notification/NotificationManagerService$7;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z +PLcom/android/server/notification/NotificationManagerService$7;->cancelAllNotifications(Ljava/lang/String;I)V +PLcom/android/server/notification/NotificationManagerService$7;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enforcePolicyAccess(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enforceSystemOrSystemUI(Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$7;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +PLcom/android/server/notification/NotificationManagerService$7;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +PLcom/android/server/notification/NotificationManagerService$7;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/notification/NotificationManagerService$7;->getEffectsSuppressor()Landroid/content/ComponentName; +PLcom/android/server/notification/NotificationManagerService$7;->getNotificationChannels(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/notification/NotificationManagerService$7;->getZenMode()I +PLcom/android/server/notification/NotificationManagerService$7;->getZenModeConfig()Landroid/service/notification/ZenModeConfig; +PLcom/android/server/notification/NotificationManagerService$7;->getZenRules()Ljava/util/List; +PLcom/android/server/notification/NotificationManagerService$7;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V +PLcom/android/server/notification/NotificationManagerService$7;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V +PLcom/android/server/notification/NotificationManagerService$7;->requestBindListener(Landroid/content/ComponentName;)V +PLcom/android/server/notification/NotificationManagerService$7;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V +PLcom/android/server/notification/NotificationManagerService$7;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification; +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V +PLcom/android/server/notification/NotificationManagerService$7;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$8;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$8;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V +PLcom/android/server/notification/NotificationManagerService$9;->(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService$9;->onConfigChanged()V +PLcom/android/server/notification/NotificationManagerService$Archive;->(I)V +PLcom/android/server/notification/NotificationManagerService$Archive;->record(Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V +PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z +PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;->(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;->run()V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->run()V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap2(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->-wrap4(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface; +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$-com_android_server_notification_NotificationManagerService$NotificationListeners_243589(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Landroid/service/notification/StatusBarNotification;I)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V +PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V +PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;->(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;->run()V +PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V +PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V +PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V +PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V +PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->(Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification; +PLcom/android/server/notification/NotificationManagerService$ToastRecord;->(ILjava/lang/String;Landroid/app/ITransientNotification;ILandroid/os/Binder;)V +PLcom/android/server/notification/NotificationManagerService$TrimCache;->(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V +PLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification; +PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V +PLcom/android/server/notification/NotificationManagerService;->-get1()I +PLcom/android/server/notification/NotificationManagerService;->-get10(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List; +PLcom/android/server/notification/NotificationManagerService;->-get11(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper; +PLcom/android/server/notification/NotificationManagerService;->-get12(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler; +PLcom/android/server/notification/NotificationManagerService;->-get19(Lcom/android/server/notification/NotificationManagerService;)F +PLcom/android/server/notification/NotificationManagerService;->-get2()I +PLcom/android/server/notification/NotificationManagerService;->-get20(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light; +PLcom/android/server/notification/NotificationManagerService;->-get21(Lcom/android/server/notification/NotificationManagerService;)Z +PLcom/android/server/notification/NotificationManagerService;->-get22(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager; +PLcom/android/server/notification/NotificationManagerService;->-get26(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver; +PLcom/android/server/notification/NotificationManagerService;->-get28(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats; +PLcom/android/server/notification/NotificationManagerService;->-get29(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles; +PLcom/android/server/notification/NotificationManagerService;->-get3(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager; +PLcom/android/server/notification/NotificationManagerService;->-get30(Lcom/android/server/notification/NotificationManagerService;)Landroid/view/WindowManagerInternal; +PLcom/android/server/notification/NotificationManagerService;->-get5(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal; +PLcom/android/server/notification/NotificationManagerService;->-get7(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants; +PLcom/android/server/notification/NotificationManagerService;->-get9(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders; +PLcom/android/server/notification/NotificationManagerService;->-set1(Lcom/android/server/notification/NotificationManagerService;Z)Z +PLcom/android/server/notification/NotificationManagerService;->-set2(Lcom/android/server/notification/NotificationManagerService;F)F +PLcom/android/server/notification/NotificationManagerService;->-wrap0(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate; +PLcom/android/server/notification/NotificationManagerService;->-wrap1(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap10(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String; +PLcom/android/server/notification/NotificationManagerService;->-wrap13(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap14(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V +PLcom/android/server/notification/NotificationManagerService;->-wrap15(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap16(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap19(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap2(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap21(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap22(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap23(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap24(Lcom/android/server/notification/NotificationManagerService;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap28(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V +PLcom/android/server/notification/NotificationManagerService;->-wrap34(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V +PLcom/android/server/notification/NotificationManagerService;->-wrap4(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +PLcom/android/server/notification/NotificationManagerService;->-wrap6(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/NotificationManagerService;->(Landroid/content/Context;)V +PLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V +PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V +PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V +PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V +PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrShell()V +PLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;)V +PLcom/android/server/notification/NotificationManagerService;->clearLightsLocked()V +PLcom/android/server/notification/NotificationManagerService;->clearSoundLocked()V +PLcom/android/server/notification/NotificationManagerService;->clearVibrateLocked()V +PLcom/android/server/notification/NotificationManagerService;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String; +PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord; +PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager; +PLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper; +PLcom/android/server/notification/NotificationManagerService;->getLongArray(Landroid/content/res/Resources;II[J)[J +PLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V +PLcom/android/server/notification/NotificationManagerService;->handleTimeout(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V +PLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z +PLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/app/ITransientNotification;)I +PLcom/android/server/notification/NotificationManagerService;->indexOfToastPackageLocked(Ljava/lang/String;)I +PLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;)V +PLcom/android/server/notification/NotificationManagerService;->isBlocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationUsageStats;)Z +PLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(Ljava/lang/String;)Z +PLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z +PLcom/android/server/notification/NotificationManagerService;->keepProcessAliveIfNeededLocked(I)V +PLcom/android/server/notification/NotificationManagerService;->listenForCallState()V +PLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V +PLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V +PLcom/android/server/notification/NotificationManagerService;->onStart()V +PLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;Z)V +PLcom/android/server/notification/NotificationManagerService;->recordCallerLocked(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z +PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z +PLcom/android/server/notification/NotificationManagerService;->removeFromNotificationListsLocked(Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;II)I +PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V +PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationManagerService;->showNextToastLocked()V +PLcom/android/server/notification/NotificationManagerService;->updateLightsLocked()V +PLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes; +PLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J +PLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri; +PLcom/android/server/notification/NotificationRecord;->calculateVibration()[J +PLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationRecord;->getChannelIdLogTag()Ljava/lang/String; +PLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I +PLcom/android/server/notification/NotificationRecord;->getGroupLogTag()Ljava/lang/String; +PLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I +PLcom/android/server/notification/NotificationRecord;->getLight()Lcom/android/server/notification/NotificationRecord$Light; +PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z +PLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z +PLcom/android/server/notification/NotificationRecord;->isSeen()Z +PLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V +PLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z +PLcom/android/server/notification/NotificationRecord;->setSeen()V +PLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V +PLcom/android/server/notification/NotificationRecord;->shortenTag(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/notification/NotificationUsageStats$1;->(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V +PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->(Landroid/content/Context;Ljava/lang/String;)V +PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate(J)F +PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;->(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/os/Looper;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;->(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->-wrap0(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;JILcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->(Landroid/content/Context;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logPosted(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logRemoved(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->pruneIfNecessary(Landroid/database/sqlite/SQLiteDatabase;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationIdentifiers(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V +PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putPosttimeVisibility(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->()V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->finish()V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeExpandedMs()J +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeMs()J +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentPosttimeMs()J +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onExpansionChanged(ZZ)V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onRemoved()V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onVisibilityChanged(Z)V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V +PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateVisiblyExpandedStats()V +PLcom/android/server/notification/NotificationUsageStats;->(Landroid/content/Context;)V +PLcom/android/server/notification/NotificationUsageStats;->getAppEnqueueRate(Ljava/lang/String;)F +PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V +PLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/NotificationUsageStats;->registerRemovedByApp(Lcom/android/server/notification/NotificationRecord;)V +PLcom/android/server/notification/PriorityExtractor;->()V +PLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String; +PLcom/android/server/notification/RankingHelper$Record;->()V +PLcom/android/server/notification/RankingHelper$Record;->(Lcom/android/server/notification/RankingHelper$Record;)V +PLcom/android/server/notification/RankingHelper;->(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;)V +PLcom/android/server/notification/RankingHelper;->clearLockedFields(Landroid/app/NotificationChannel;)V +PLcom/android/server/notification/RankingHelper;->createDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V +PLcom/android/server/notification/RankingHelper;->deleteDefaultChannelIfNeeded(Lcom/android/server/notification/RankingHelper$Record;)V +PLcom/android/server/notification/RankingHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/notification/RankingHelper;->getChannelLog(Landroid/app/NotificationChannel;Ljava/lang/String;)Landroid/metrics/LogMaker; +PLcom/android/server/notification/RankingHelper;->getImportance(Ljava/lang/String;I)I +PLcom/android/server/notification/RankingHelper;->getNotificationChannelGroups(Ljava/lang/String;I)Ljava/util/Collection; +PLcom/android/server/notification/RankingHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/notification/RankingHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/RankingHelper$Record;)Z +PLcom/android/server/notification/RankingHelper;->updateBadgingEnabled()V +PLcom/android/server/notification/RateEstimator;->()V +PLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D +PLcom/android/server/notification/RateEstimator;->getRate(J)F +PLcom/android/server/notification/RateEstimator;->update(J)F +PLcom/android/server/notification/ScheduleCalendar;->()V +PLcom/android/server/notification/ScheduleCalendar;->addDays(JI)J +PLcom/android/server/notification/ScheduleCalendar;->getDayOfWeek(J)I +PLcom/android/server/notification/ScheduleCalendar;->getNextChangeTime(J)J +PLcom/android/server/notification/ScheduleCalendar;->getNextTime(JII)J +PLcom/android/server/notification/ScheduleCalendar;->getTime(JII)J +PLcom/android/server/notification/ScheduleCalendar;->isInSchedule(IJJJ)Z +PLcom/android/server/notification/ScheduleCalendar;->isInSchedule(J)Z +PLcom/android/server/notification/ScheduleCalendar;->maybeSetNextAlarm(JJ)V +PLcom/android/server/notification/ScheduleCalendar;->setSchedule(Landroid/service/notification/ZenModeConfig$ScheduleInfo;)V +PLcom/android/server/notification/ScheduleCalendar;->setTimeZone(Ljava/util/TimeZone;)V +PLcom/android/server/notification/ScheduleCalendar;->updateDays()V +PLcom/android/server/notification/ScheduleConditionProvider$1;->(Lcom/android/server/notification/ScheduleConditionProvider;)V +PLcom/android/server/notification/ScheduleConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/notification/ScheduleConditionProvider;->-wrap0(Lcom/android/server/notification/ScheduleConditionProvider;)V +PLcom/android/server/notification/ScheduleConditionProvider;->()V +PLcom/android/server/notification/ScheduleConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider; +PLcom/android/server/notification/ScheduleConditionProvider;->attachBase(Landroid/content/Context;)V +PLcom/android/server/notification/ScheduleConditionProvider;->createCondition(Landroid/net/Uri;ILjava/lang/String;)Landroid/service/notification/Condition; +PLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptions()V +PLcom/android/server/notification/ScheduleConditionProvider;->getComponent()Landroid/content/ComponentName; +PLcom/android/server/notification/ScheduleConditionProvider;->getNextAlarm()J +PLcom/android/server/notification/ScheduleConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z +PLcom/android/server/notification/ScheduleConditionProvider;->onBootComplete()V +PLcom/android/server/notification/ScheduleConditionProvider;->onConnected()V +PLcom/android/server/notification/ScheduleConditionProvider;->onSubscribe(Landroid/net/Uri;)V +PLcom/android/server/notification/ScheduleConditionProvider;->readSnoozed()V +PLcom/android/server/notification/ScheduleConditionProvider;->removeSnoozed(Landroid/net/Uri;)V +PLcom/android/server/notification/ScheduleConditionProvider;->saveSnoozedLocked()V +PLcom/android/server/notification/ScheduleConditionProvider;->setRegistered(Z)V +PLcom/android/server/notification/ScheduleConditionProvider;->toScheduleCalendar(Landroid/net/Uri;)Lcom/android/server/notification/ScheduleCalendar; +PLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V +PLcom/android/server/notification/SnoozeHelper$1;->(Lcom/android/server/notification/SnoozeHelper;)V +PLcom/android/server/notification/SnoozeHelper;->(Landroid/content/Context;Lcom/android/server/notification/SnoozeHelper$Callback;Lcom/android/server/notification/ManagedServices$UserProfiles;)V +PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z +PLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection; +PLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/notification/SystemConditionProviderService;->()V +PLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String; +PLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String; +PLcom/android/server/notification/ValidateNotificationPeople$1;->(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V +PLcom/android/server/notification/ValidateNotificationPeople;->()V +PLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/VisibilityExtractor;->()V +PLcom/android/server/notification/VisibilityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V +PLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V +PLcom/android/server/notification/ZenLog;->append(ILjava/lang/String;)V +PLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String; +PLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)V +PLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V +PLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V +PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String; +PLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String; +PLcom/android/server/notification/ZenModeConditions;->(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V +PLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Z)V +PLcom/android/server/notification/ZenModeConditions;->onBootComplete()V +PLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V +PLcom/android/server/notification/ZenModeConditions;->onServiceAdded(Landroid/content/ComponentName;)V +PLcom/android/server/notification/ZenModeConditions;->onUserSwitched()V +PLcom/android/server/notification/ZenModeConditions;->updateCondition(Landroid/net/Uri;Landroid/service/notification/Condition;Landroid/service/notification/ZenModeConfig$ZenRule;)Z +PLcom/android/server/notification/ZenModeConditions;->updateSnoozing(Landroid/service/notification/ZenModeConfig$ZenRule;)Z +PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->()V +PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;)V +PLcom/android/server/notification/ZenModeFiltering;->(Landroid/content/Context;)V +PLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/ZenModeFiltering;->isDefaultPhoneApp(Ljava/lang/String;)Z +PLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/service/notification/ZenModeConfig;Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/ZenModeHelper$Callback;->()V +PLcom/android/server/notification/ZenModeHelper$Callback;->onConfigChanged()V +PLcom/android/server/notification/ZenModeHelper$H$ConfigMessageData;->(Lcom/android/server/notification/ZenModeHelper$H;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V +PLcom/android/server/notification/ZenModeHelper$H;->-wrap0(Lcom/android/server/notification/ZenModeHelper$H;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V +PLcom/android/server/notification/ZenModeHelper$H;->-wrap2(Lcom/android/server/notification/ZenModeHelper$H;)V +PLcom/android/server/notification/ZenModeHelper$H;->(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;)V +PLcom/android/server/notification/ZenModeHelper$H;->(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;Lcom/android/server/notification/ZenModeHelper$H;)V +PLcom/android/server/notification/ZenModeHelper$H;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/notification/ZenModeHelper$H;->postApplyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V +PLcom/android/server/notification/ZenModeHelper$H;->postMetricsTimer()V +PLcom/android/server/notification/ZenModeHelper$Metrics;->(Lcom/android/server/notification/ZenModeHelper;)V +PLcom/android/server/notification/ZenModeHelper$Metrics;->(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper$Metrics;)V +PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->(Lcom/android/server/notification/ZenModeHelper;)V +PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper$RingerModeDelegate;)V +PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->getRingerModeAffectedStreams(I)I +PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I +PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Handler;)V +PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->observe()V +PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->update(Landroid/net/Uri;)V +PLcom/android/server/notification/ZenModeHelper;->-get0(Lcom/android/server/notification/ZenModeHelper;)Landroid/content/Context; +PLcom/android/server/notification/ZenModeHelper;->-get3(Lcom/android/server/notification/ZenModeHelper;)I +PLcom/android/server/notification/ZenModeHelper;->-wrap1(Lcom/android/server/notification/ZenModeHelper;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V +PLcom/android/server/notification/ZenModeHelper;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/notification/ConditionProviders;)V +PLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V +PLcom/android/server/notification/ZenModeHelper;->appendDefaultEventRules(Landroid/service/notification/ZenModeConfig;)V +PLcom/android/server/notification/ZenModeHelper;->appendDefaultRules(Landroid/service/notification/ZenModeConfig;)V +PLcom/android/server/notification/ZenModeHelper;->appendDefaultScheduleRules(Landroid/service/notification/ZenModeConfig;)V +PLcom/android/server/notification/ZenModeHelper;->applyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)V +PLcom/android/server/notification/ZenModeHelper;->applyZenToRingerMode()V +PLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z +PLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V +PLcom/android/server/notification/ZenModeHelper;->computeZenMode()I +PLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V +PLcom/android/server/notification/ZenModeHelper;->evaluateZenMode(Ljava/lang/String;Z)Z +PLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/notification/ZenModeConfig; +PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy; +PLcom/android/server/notification/ZenModeHelper;->getZenMode()I +PLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I +PLcom/android/server/notification/ZenModeHelper;->getZenRules()Ljava/util/List; +PLcom/android/server/notification/ZenModeHelper;->initZenMode()V +PLcom/android/server/notification/ZenModeHelper;->isCall(Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V +PLcom/android/server/notification/ZenModeHelper;->onSystemReady()V +PLcom/android/server/notification/ZenModeHelper;->onUserSwitched(I)V +PLcom/android/server/notification/ZenModeHelper;->onUserUnlocked(I)V +PLcom/android/server/notification/ZenModeHelper;->readDefaultConfig(Landroid/content/res/Resources;)Landroid/service/notification/ZenModeConfig; +PLcom/android/server/notification/ZenModeHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;Z)V +PLcom/android/server/notification/ZenModeHelper;->setConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)V +PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;)Z +PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Z)Z +PLcom/android/server/notification/ZenModeHelper;->setDefaultZenRules(Landroid/content/Context;)V +PLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V +PLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z +PLcom/android/server/notification/ZenModeHelper;->updateRingerModeAffectedStreams()V +PLcom/android/server/oemlock/OemLock;->()V +PLcom/android/server/oemlock/OemLockService$1;->(Lcom/android/server/oemlock/OemLockService;)V +PLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/oemlock/OemLockService$2;->(Lcom/android/server/oemlock/OemLockService;)V +PLcom/android/server/oemlock/OemLockService;->(Landroid/content/Context;)V +PLcom/android/server/oemlock/OemLockService;->(Landroid/content/Context;Lcom/android/server/oemlock/OemLock;)V +PLcom/android/server/oemlock/OemLockService;->getOemLock(Landroid/content/Context;)Lcom/android/server/oemlock/OemLock; +PLcom/android/server/oemlock/OemLockService;->onStart()V +PLcom/android/server/oemlock/PersistentDataBlockLock;->(Landroid/content/Context;)V +PLcom/android/server/oemlock/VendorLock;->getOemLockHalService()Landroid/hardware/oemlock/V1_0/IOemLock; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$1;->$m$0()Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$1;->()V +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$1;->get()Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->$m$0(Ljava/lang/Object;)I +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->()V +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk$2;->applyAsInt(Ljava/lang/Object;)I +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$0(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$1(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->$m$2(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->(B)V +PLcom/android/server/om/-$Lambda$VuwDBWerAG9B6xB4Rr4-FeDL3jk;->apply(Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/om/-$Lambda$Whs3NIaASrs6bpQxTTs9leTDPyo;->$m$0()V +PLcom/android/server/om/-$Lambda$Whs3NIaASrs6bpQxTTs9leTDPyo;->$m$1()V +PLcom/android/server/om/-$Lambda$Whs3NIaASrs6bpQxTTs9leTDPyo;->(BLjava/lang/Object;)V +PLcom/android/server/om/-$Lambda$Whs3NIaASrs6bpQxTTs9leTDPyo;->run()V +PLcom/android/server/om/IdmapManager;->(Lcom/android/server/pm/Installer;)V +PLcom/android/server/om/IdmapManager;->createIdmap(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)Z +PLcom/android/server/om/IdmapManager;->getIdmapPath(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/pm/PackageInfo;I)Z +PLcom/android/server/om/OverlayManagerService$1;->(Lcom/android/server/om/OverlayManagerService;)V +PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->(Lcom/android/server/om/OverlayManagerService;)V +PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$OverlayChangeListener;)V +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->()V +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->cachePackageInfo(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)V +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->forgetPackageInfo(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getCachedPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List; +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->(Lcom/android/server/om/OverlayManagerService;)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$PackageReceiver;)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageChanged(Ljava/lang/String;[I)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgraded(Ljava/lang/String;[I)V +PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgrading(Ljava/lang/String;[I)V +PLcom/android/server/om/OverlayManagerService$UserReceiver;->(Lcom/android/server/om/OverlayManagerService;)V +PLcom/android/server/om/OverlayManagerService$UserReceiver;->(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$UserReceiver;)V +PLcom/android/server/om/OverlayManagerService;->-get0(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl; +PLcom/android/server/om/OverlayManagerService;->-get1(Lcom/android/server/om/OverlayManagerService;)Ljava/lang/Object; +PLcom/android/server/om/OverlayManagerService;->-get2(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerService$PackageManagerHelper; +PLcom/android/server/om/OverlayManagerService;->-wrap0(Lcom/android/server/om/OverlayManagerService;Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/om/OverlayManagerService;->(Landroid/content/Context;Lcom/android/server/pm/Installer;)V +PLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()Ljava/util/Set; +PLcom/android/server/om/OverlayManagerService;->initIfNeeded()V +PLcom/android/server/om/OverlayManagerService;->isOverlayPackage(Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_31270()V +PLcom/android/server/om/OverlayManagerService;->lambda$-com_android_server_om_OverlayManagerService_9907()V +PLcom/android/server/om/OverlayManagerService;->onBootPhase(I)V +PLcom/android/server/om/OverlayManagerService;->onStart()V +PLcom/android/server/om/OverlayManagerService;->onSwitchUser(I)V +PLcom/android/server/om/OverlayManagerService;->restoreSettings()V +PLcom/android/server/om/OverlayManagerService;->schedulePersistSettings()V +PLcom/android/server/om/OverlayManagerService;->updateAssets(ILjava/util/List;)V +PLcom/android/server/om/OverlayManagerServiceImpl;->(Lcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Ljava/util/Set;Lcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;)V +PLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)I +PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo; +PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageChanged(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgraded(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageUpgrading(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerServiceImpl;->updateAllOverlaysForTarget(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)Z +PLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Ljava/util/ArrayList; +PLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)Z +PLcom/android/server/om/OverlayManagerSettings$BadKeyException;->(Ljava/lang/String;I)V +PLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V +PLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/internal/util/FastXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V +PLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V +PLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lorg/xmlpull/v1/XmlPullParser;I)Lcom/android/server/om/OverlayManagerSettings$SettingsItem; +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get2(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get4(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get5(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-get6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String; +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo; +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap6(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-wrap7(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZI)V +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo; +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z +PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z +PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo; +PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-1(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo; +PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-2()Landroid/util/ArrayMap; +PLcom/android/server/om/OverlayManagerSettings;->-com_android_server_om_OverlayManagerSettings-mthref-3(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I +PLcom/android/server/om/OverlayManagerSettings;->()V +PLcom/android/server/om/OverlayManagerSettings;->getEnabled(Ljava/lang/String;I)Z +PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap; +PLcom/android/server/om/OverlayManagerSettings;->getState(Ljava/lang/String;I)I +PLcom/android/server/om/OverlayManagerSettings;->getUsers()[I +PLcom/android/server/om/OverlayManagerSettings;->lambda$-com_android_server_om_OverlayManagerSettings_6314(Landroid/content/om/OverlayInfo;)Ljava/lang/String; +PLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V +PLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V +PLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Ljava/lang/String;ILjava/lang/String;)Z +PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String; +PLcom/android/server/os/SchedulingPolicyService;->()V +PLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z +PLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I +PLcom/android/server/pm/-$Lambda$KFbchFEqJgs_hY1HweauKRNA_ds;->(BLjava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY$1;->(BILjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->$m$6(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->(B)V +PLcom/android/server/pm/-$Lambda$akZNYSpRQU-aMo9i0sDNiuGZqwY;->accept(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$0()V +PLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$3()V +PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$1()V +PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$2()V +PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->$m$3()V +PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->(BLjava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$iCTRLJcHnavjRcatPDKSIvElD0U;->run()V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->$m$0()V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->(IJLjava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$2;->run()V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$3;->(IJLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->(IIIIJLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY$4;->accept(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$qKHXTlzWfY0UTc6aCYQ5haVEjEY;->accept(Ljava/lang/Object;)V +PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->$m$5(Ljava/lang/Object;)Z +PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->$m$6(Ljava/lang/Object;)Z +PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->$m$7(Ljava/lang/Object;)Z +PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->(B)V +PLcom/android/server/pm/-$Lambda$s_oh3oeib-Exts1l3lS2Euiarsw;->test(Ljava/lang/Object;)Z +PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->$m$3(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->(B)V +PLcom/android/server/pm/-$Lambda$tZuhGcRRWSq5m9LlSrypurdt-0w;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/pm/AbstractStatsBase$1;->(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/String;Ljava/lang/Object;)V +PLcom/android/server/pm/AbstractStatsBase$1;->run()V +PLcom/android/server/pm/AbstractStatsBase;->-get0(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicBoolean; +PLcom/android/server/pm/AbstractStatsBase;->-get1(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicLong; +PLcom/android/server/pm/AbstractStatsBase;->-wrap0(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/Object;)V +PLcom/android/server/pm/AbstractStatsBase;->writeImpl(Ljava/lang/Object;)V +PLcom/android/server/pm/BackgroundDexOptService$1;->(Lcom/android/server/pm/BackgroundDexOptService;Ljava/lang/String;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V +PLcom/android/server/pm/BackgroundDexOptService$1;->run()V +PLcom/android/server/pm/BackgroundDexOptService;->-wrap1(Lcom/android/server/pm/BackgroundDexOptService;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V +PLcom/android/server/pm/BackgroundDexOptService;->()V +PLcom/android/server/pm/BackgroundDexOptService;->getDowngradeUnusedAppsThresholdInMillis()J +PLcom/android/server/pm/BackgroundDexOptService;->getLowStorageThreshold(Landroid/content/Context;)J +PLcom/android/server/pm/BackgroundDexOptService;->isBackgroundDexoptDisabled()Z +PLcom/android/server/pm/BackgroundDexOptService;->notifyPackageChanged(Ljava/lang/String;)V +PLcom/android/server/pm/BackgroundDexOptService;->notifyPinService(Landroid/util/ArraySet;)V +PLcom/android/server/pm/BackgroundDexOptService;->onStartJob(Landroid/app/job/JobParameters;)Z +PLcom/android/server/pm/BackgroundDexOptService;->runPostBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)Z +PLcom/android/server/pm/BackgroundDexOptService;->schedule(Landroid/content/Context;)V +PLcom/android/server/pm/BasePermission;->isDevelopment()Z +PLcom/android/server/pm/BasePermission;->isRuntime()Z +PLcom/android/server/pm/CompilerStats$PackageStats;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/pm/CompilerStats$PackageStats;->getStoredPathFromCodePath(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/pm/CompilerStats$PackageStats;->setCompileTime(Ljava/lang/String;J)V +PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +PLcom/android/server/pm/DefaultPermissionGrantPolicy$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy$DefaultPermissionGrant;->(Ljava/lang/String;Z)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-get0(Lcom/android/server/pm/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-get1(Lcom/android/server/pm/DefaultPermissionGrantPolicy;)Lcom/android/server/pm/PackageManagerService; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-set0(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/util/ArrayMap;)Landroid/util/ArrayMap; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->-wrap0(Lcom/android/server/pm/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->doesPackageSupportRuntimePermissions(Landroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->getDefaultPermissionFiles()[Ljava/io/File; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->getPackageLPr(Ljava/lang/String;)Landroid/content/pm/PackageParser$Package; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->getSystemPackageLPr(Ljava/lang/String;)Landroid/content/pm/PackageParser$Package; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledImsServicesLPr([Ljava/lang/String;I)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->isSysComponentOrPersistentPlatformSignedPrivAppLPr(Landroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->parse(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->parseExceptions(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->parsePermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/List;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->readDefaultPermissionExceptionsLPw()Landroid/util/ArrayMap; +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->scheduleReadDefaultPermissionExceptions()V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setDialerAppPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setLocationPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setSimCallManagerPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setSmsAppPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V +PLcom/android/server/pm/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProviderLPw(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/EphemeralResolverConnection$ConnectionException;->(I)V +PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1;->(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;)V +PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;Ljava/lang/Object;I)V +PLcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller;->()V +PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->(Lcom/android/server/pm/EphemeralResolverConnection;)V +PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->(Lcom/android/server/pm/EphemeralResolverConnection;Lcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;)V +PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V +PLcom/android/server/pm/EphemeralResolverConnection;->-get0()J +PLcom/android/server/pm/EphemeralResolverConnection;->-get1()Z +PLcom/android/server/pm/EphemeralResolverConnection;->-get2(Lcom/android/server/pm/EphemeralResolverConnection;)I +PLcom/android/server/pm/EphemeralResolverConnection;->-get3(Lcom/android/server/pm/EphemeralResolverConnection;)Ljava/lang/Object; +PLcom/android/server/pm/EphemeralResolverConnection;->-set0(Lcom/android/server/pm/EphemeralResolverConnection;I)I +PLcom/android/server/pm/EphemeralResolverConnection;->-set1(Lcom/android/server/pm/EphemeralResolverConnection;Landroid/app/IInstantAppResolver;)Landroid/app/IInstantAppResolver; +PLcom/android/server/pm/EphemeralResolverConnection;->-wrap0(Lcom/android/server/pm/EphemeralResolverConnection;)V +PLcom/android/server/pm/EphemeralResolverConnection;->(Landroid/content/Context;Landroid/content/ComponentName;Ljava/lang/String;)V +PLcom/android/server/pm/EphemeralResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver; +PLcom/android/server/pm/EphemeralResolverConnection;->binderDied()V +PLcom/android/server/pm/EphemeralResolverConnection;->handleBinderDiedLocked()V +PLcom/android/server/pm/EphemeralResolverConnection;->waitForBindLocked(Ljava/lang/String;)V +PLcom/android/server/pm/Installer$InstallerException;->(Ljava/lang/String;)V +PLcom/android/server/pm/Installer$InstallerException;->from(Ljava/lang/Exception;)Lcom/android/server/pm/Installer$InstallerException; +PLcom/android/server/pm/Installer;->assertValidInstructionSet(Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V +PLcom/android/server/pm/Installer;->clearAppProfiles(Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V +PLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V +PLcom/android/server/pm/Installer;->idmap(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/pm/Installer;->isQuotaSupported(Ljava/lang/String;)Z +PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/pm/Installer;->markBootComplete(Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->rmPackageDir(Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->rmdex(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/Installer;->setAppQuota(Ljava/lang/String;IIJ)V +PLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V +PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationDir(Ljava/lang/String;I)Ljava/io/File; +PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationsDir(I)Ljava/io/File; +PLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z +PLcom/android/server/pm/InstantAppRegistry;->onPackageInstalledLPw(Landroid/content/pm/PackageParser$Package;[I)V +PLcom/android/server/pm/InstantAppRegistry;->parseMetadataFile(Ljava/io/File;)Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState; +PLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(Ljava/lang/String;I)Ljava/io/File; +PLcom/android/server/pm/InstantAppRegistry;->peekOrParseUninstalledInstantAppInfo(Ljava/lang/String;I)Landroid/content/pm/InstantAppInfo; +PLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Ljava/lang/String;I)V +PLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(Ljava/util/function/Predicate;I)V +PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Lcom/android/server/pm/PackageSetting;)[Ljava/lang/String; +PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;->(Landroid/os/UserHandle;Ljava/lang/String;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$-com_android_server_pm_LauncherAppsService$LauncherAppsImpl$MyPackageMonitor_38233(Ljava/lang/String;I)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChanged(Ljava/lang/String;I)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;->(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList; +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-get1(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal; +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-wrap0(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->(Landroid/content/Context;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasShortcutHostPermission(Ljava/lang/String;)Z +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V +PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V +PLcom/android/server/pm/LauncherAppsService;->(Landroid/content/Context;)V +PLcom/android/server/pm/LauncherAppsService;->onStart()V +PLcom/android/server/pm/OtaDexoptService;->(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService; +PLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V +PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptFlags(I)I +PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptNeeded(I)I +PLcom/android/server/pm/PackageDexOptimizer;->createOatDirIfSupported(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/pm/PackageDexOptimizer;->getOatDir(Ljava/io/File;)Ljava/io/File; +PLcom/android/server/pm/PackageDexOptimizer;->printDexoptFlags(I)Ljava/lang/String; +PLcom/android/server/pm/PackageDexOptimizer;->systemReady()V +PLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z +PLcom/android/server/pm/PackageInstallerService$2;->(Lcom/android/server/pm/PackageInstallerService;)V +PLcom/android/server/pm/PackageInstallerService$2;->run()V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap0(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIZ)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->-wrap2(Lcom/android/server/pm/PackageInstallerService$Callbacks;II)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->(Landroid/os/Looper;)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionActiveChanged(IIZ)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionCreated(II)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionFinished(IIZ)V +PLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;I)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V +PLcom/android/server/pm/PackageInstallerService$InternalCallback;->(Lcom/android/server/pm/PackageInstallerService;)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionActiveChanged(Lcom/android/server/pm/PackageInstallerSession;Z)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionFinished(Lcom/android/server/pm/PackageInstallerSession;Z)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionPrepared(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionSealedBlocking(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;->(Landroid/content/Context;Landroid/content/IntentSender;IZI)V +PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageInstallerService;->-get1(Lcom/android/server/pm/PackageInstallerService;)Landroid/os/Handler; +PLcom/android/server/pm/PackageInstallerService;->-get2(Lcom/android/server/pm/PackageInstallerService;)Landroid/util/SparseArray; +PLcom/android/server/pm/PackageInstallerService;->-wrap1(Lcom/android/server/pm/PackageInstallerService;I)Ljava/io/File; +PLcom/android/server/pm/PackageInstallerService;->-wrap2(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerService;->-wrap3(Lcom/android/server/pm/PackageInstallerService;)V +PLcom/android/server/pm/PackageInstallerService;->-wrap4(Lcom/android/server/pm/PackageInstallerService;)V +PLcom/android/server/pm/PackageInstallerService;->(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerService;->allocateSessionIdLocked()I +PLcom/android/server/pm/PackageInstallerService;->buildAppIconFile(I)Ljava/io/File; +PLcom/android/server/pm/PackageInstallerService;->buildStageDir(Ljava/lang/String;IZ)Ljava/io/File; +PLcom/android/server/pm/PackageInstallerService;->buildStagingDir(Ljava/lang/String;Z)Ljava/io/File; +PLcom/android/server/pm/PackageInstallerService;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +PLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/PackageInstallerService;->getSessionCount(Landroid/util/SparseArray;I)I +PLcom/android/server/pm/PackageInstallerService;->isCallingUidOwner(Lcom/android/server/pm/PackageInstallerSession;)Z +PLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageInstallerService;->onSecureContainersAvailable()V +PLcom/android/server/pm/PackageInstallerService;->openSession(I)Landroid/content/pm/IPackageInstallerSession; +PLcom/android/server/pm/PackageInstallerService;->openSessionInternal(I)Landroid/content/pm/IPackageInstallerSession; +PLcom/android/server/pm/PackageInstallerService;->prepareStageDir(Ljava/io/File;)V +PLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V +PLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;Z)V +PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V +PLcom/android/server/pm/PackageInstallerService;->systemReady()V +PLcom/android/server/pm/PackageInstallerService;->writeSessionsAsync()V +PLcom/android/server/pm/PackageInstallerSession$1;->()V +PLcom/android/server/pm/PackageInstallerSession$1;->accept(Ljava/io/File;)Z +PLcom/android/server/pm/PackageInstallerSession$2;->()V +PLcom/android/server/pm/PackageInstallerSession$2;->accept(Ljava/io/File;)Z +PLcom/android/server/pm/PackageInstallerSession$3;->(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerSession$3;->handleMessage(Landroid/os/Message;)Z +PLcom/android/server/pm/PackageInstallerSession$4;->(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerSession$4;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageInstallerSession;->-get0(Lcom/android/server/pm/PackageInstallerSession;)Ljava/lang/Object; +PLcom/android/server/pm/PackageInstallerSession;->-wrap0(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerSession;->-wrap1(Lcom/android/server/pm/PackageInstallerSession;)V +PLcom/android/server/pm/PackageInstallerSession;->-wrap2(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageInstallerSession;->(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;IILjava/lang/String;ILandroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;ZZ)V +PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistentLocked(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V +PLcom/android/server/pm/PackageInstallerSession;->assertNoWriteFileTransfersOpenLocked()V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotCommittedOrDestroyedLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotDestroyedLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealedLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->close()V +PLcom/android/server/pm/PackageInstallerSession;->closeInternal(Z)V +PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V +PLcom/android/server/pm/PackageInstallerSession;->commitLocked()V +PLcom/android/server/pm/PackageInstallerSession;->destroyInternal()V +PLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageInstallerSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries(Ljava/io/File;Ljava/lang/String;)V +PLcom/android/server/pm/PackageInstallerSession;->getInstallerUid()I +PLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerLocked()Z +PLcom/android/server/pm/PackageInstallerSession;->isPrepared()Z +PLcom/android/server/pm/PackageInstallerSession;->isSealed()Z +PLcom/android/server/pm/PackageInstallerSession;->needToAskForPermissionsLocked()Z +PLcom/android/server/pm/PackageInstallerSession;->open()V +PLcom/android/server/pm/PackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/pm/PackageInstallerSession;->resolveStageDirLocked()Ljava/io/File; +PLcom/android/server/pm/PackageInstallerSession;->sealAndValidateLocked(Landroid/content/pm/PackageInfo;)V +PLcom/android/server/pm/PackageInstallerSession;->writeGrantedRuntimePermissionsLocked(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V +PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z +PLcom/android/server/pm/PackageManagerService$19;->(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V +PLcom/android/server/pm/PackageManagerService$19;->onChange(Z)V +PLcom/android/server/pm/PackageManagerService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V +PLcom/android/server/pm/PackageManagerService$20;->(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerService$6;->(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ILandroid/content/IIntentReceiver;)V +PLcom/android/server/pm/PackageManagerService$7;->(Lcom/android/server/pm/PackageManagerService;ILcom/android/server/pm/PackageManagerService$InstallArgs;)V +PLcom/android/server/pm/PackageManagerService$7;->run()V +PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;->(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +PLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; +PLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/pm/PackageManagerService$DumpState;->()V +PLcom/android/server/pm/PackageManagerService$DumpState;->getSharedUser()Lcom/android/server/pm/SharedUserSetting; +PLcom/android/server/pm/PackageManagerService$DumpState;->getTitlePrinted()Z +PLcom/android/server/pm/PackageManagerService$DumpState;->isOptionEnabled(I)Z +PLcom/android/server/pm/PackageManagerService$DumpState;->onTitlePrinted()Z +PLcom/android/server/pm/PackageManagerService$DumpState;->setOptionEnabled(I)V +PLcom/android/server/pm/PackageManagerService$DumpState;->setSharedUser(Lcom/android/server/pm/SharedUserSetting;)V +PLcom/android/server/pm/PackageManagerService$DumpState;->setTitlePrinted(Z)V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUp()Z +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUpResourcesLI()V +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->copyApk(Lcom/android/internal/app/IMediaContainerService;Z)I +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doCopyApk(Lcom/android/internal/app/IMediaContainerService;Z)I +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostDeleteLI(Z)Z +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostInstall(II)I +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPreInstall(I)I +PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->getCodePath()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$HandlerParams;->(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;)V +PLcom/android/server/pm/PackageManagerService$HandlerParams;->getUser()Landroid/os/UserHandle; +PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceCookie(I)Lcom/android/server/pm/PackageManagerService$HandlerParams; +PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceMethod(Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$HandlerParams; +PLcom/android/server/pm/PackageManagerService$HandlerParams;->startCopy()Z +PLcom/android/server/pm/PackageManagerService$IFVerificationParams;->(Landroid/content/pm/PackageParser$Package;ZII)V +PLcom/android/server/pm/PackageManagerService$InstallArgs;->(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;I[[Ljava/security/cert/Certificate;I)V +PLcom/android/server/pm/PackageManagerService$InstallArgs;->isFwdLocked()Z +PLcom/android/server/pm/PackageManagerService$InstallParams;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService$VerificationInfo;Landroid/os/UserHandle;Ljava/lang/String;[Ljava/lang/String;[[Ljava/security/cert/Certificate;I)V +PLcom/android/server/pm/PackageManagerService$InstallParams;->handleReturnCode()V +PLcom/android/server/pm/PackageManagerService$InstallParams;->installLocationPolicy(Landroid/content/pm/PackageInfoLite;)I +PLcom/android/server/pm/PackageManagerService$InstallParams;->isForwardLocked()Z +PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Landroid/content/ComponentName;)V +PLcom/android/server/pm/PackageManagerService$MoveCallbacks;->register(Landroid/content/pm/IPackageMoveObserver;)V +PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->addListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V +PLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->removeListenerLocked(Landroid/content/pm/IOnPermissionsChangeListener;)V +PLcom/android/server/pm/PackageManagerService$OriginInfo;->(Ljava/io/File;Ljava/lang/String;ZZ)V +PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromNothing()Lcom/android/server/pm/PackageManagerService$OriginInfo; +PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromStagedFile(Ljava/io/File;)Lcom/android/server/pm/PackageManagerService$OriginInfo; +PLcom/android/server/pm/PackageManagerService$PackageFreezer;->(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/pm/PackageManagerService$PackageFreezer;->close()V +PLcom/android/server/pm/PackageManagerService$PackageFreezer;->finalize()V +PLcom/android/server/pm/PackageManagerService$PackageHandler;->connectToService()Z +PLcom/android/server/pm/PackageManagerService$PackageHandler;->disconnectService()V +PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->()V +PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setReturnCode(I)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->addIsolatedUid(II)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName; +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSetupWizardPackageName()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;III)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo; +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDialerAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSimCallManagerPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSmsAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSyncAdapterPackagesprovider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->wasPackageEverLaunched(Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageManagerService$PackageManagerNative;->(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerService$PackageManagerNative;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageManagerNative;)V +PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->(Lcom/android/server/pm/PackageSender;)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->populateUsers([ILcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcastInternal(Z)V +PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcasts(Z)V +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->clear()V +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->get(ILjava/lang/String;)Ljava/util/ArrayList; +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->getOrAllocate(I)Landroid/util/ArrayMap; +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->packagesForUserId(I)Landroid/util/ArrayMap; +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->put(ILjava/lang/String;Ljava/util/ArrayList;)V +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->size()I +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdAt(I)I +PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdCount()I +PLcom/android/server/pm/PackageManagerService$PostInstallData;->(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V +PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->-get0(Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)Landroid/util/ArrayMap; +PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->removeProvider(Landroid/content/pm/PackageParser$Provider;)V +PLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->sortResults(Ljava/util/List;)V +PLcom/android/server/pm/PackageManagerService$VerificationInfo;->(Landroid/net/Uri;Landroid/net/Uri;II)V +PLcom/android/server/pm/PackageManagerService;->-get0()Z +PLcom/android/server/pm/PackageManagerService;->-get1()[I +PLcom/android/server/pm/PackageManagerService;->-get3(Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/app/IMediaContainerService; +PLcom/android/server/pm/PackageManagerService;->-get4(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection; +PLcom/android/server/pm/PackageManagerService;->-get6(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageManagerService;->-set0(Lcom/android/server/pm/PackageManagerService;Lcom/android/internal/app/IMediaContainerService;)Lcom/android/internal/app/IMediaContainerService; +PLcom/android/server/pm/PackageManagerService;->-set1(Lcom/android/server/pm/PackageManagerService;Z)Z +PLcom/android/server/pm/PackageManagerService;->-wrap11(Landroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->-wrap12(Lcom/android/server/pm/PackageManagerService;III)Z +PLcom/android/server/pm/PackageManagerService;->-wrap15(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs; +PLcom/android/server/pm/PackageManagerService;->-wrap19(Lcom/android/server/pm/PackageManagerService;Ljava/io/File;Ljava/lang/String;)Ljava/io/File; +PLcom/android/server/pm/PackageManagerService;->-wrap23(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService;->-wrap3(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/PackageManagerService;->-wrap32(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V +PLcom/android/server/pm/PackageManagerService;->-wrap33(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V +PLcom/android/server/pm/PackageManagerService;->-wrap34(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->-wrap4(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IIII)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/PackageManagerService;->-wrap40(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V +PLcom/android/server/pm/PackageManagerService;->-wrap46(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;I)V +PLcom/android/server/pm/PackageManagerService;->-wrap5(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo; +PLcom/android/server/pm/PackageManagerService;->-wrap51(Lcom/android/server/pm/PackageManagerService;IIZLandroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +PLcom/android/server/pm/PackageManagerService;->adjustPermissionProtectionFlagsLPr(ILjava/lang/String;I)I +PLcom/android/server/pm/PackageManagerService;->apkHasCode(Ljava/lang/String;)Z +PLcom/android/server/pm/PackageManagerService;->applyPostContentProviderResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService;->arrayToString([I)Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->assertCodePolicy(Landroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->checkPackageFrozen(Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->clearAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V +PLcom/android/server/pm/PackageManagerService;->clearAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V +PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLIF(Landroid/content/pm/PackageParser$Package;I)V +PLcom/android/server/pm/PackageManagerService;->clearAppProfilesLeafLIF(Landroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->createInstallArgs(Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs; +PLcom/android/server/pm/PackageManagerService;->createInstallArgsForExisting(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$InstallArgs; +PLcom/android/server/pm/PackageManagerService;->deleteInstalledPackageLIF(Lcom/android/server/pm/PackageSetting;ZI[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->deletePackageLIF(Ljava/lang/String;Landroid/os/UserHandle;Z[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->derivePackageAbi(Landroid/content/pm/PackageParser$Package;Ljava/io/File;Ljava/lang/String;ZLjava/io/File;)V +PLcom/android/server/pm/PackageManagerService;->disableSystemPackageLPw(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->enableSystemUserPackages()V +PLcom/android/server/pm/PackageManagerService;->enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/BasePermission;)V +PLcom/android/server/pm/PackageManagerService;->enforceGrantRevokeRuntimePermissionPermissions(Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->enforceSystemOrPhoneCaller(Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->enforceSystemOrRoot(Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->extrasForInstallResult(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Landroid/os/Bundle; +PLcom/android/server/pm/PackageManagerService;->findPersistentPreferredActivityLP(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;ZI)Landroid/content/pm/ResolveInfo; +PLcom/android/server/pm/PackageManagerService;->findPreferredActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;IZZZI)Landroid/content/pm/ResolveInfo; +PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;Ljava/util/Set;)V +PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrariesRecursive(Ljava/util/ArrayList;[ILjava/util/ArrayList;Ljava/util/Set;)V +PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibrary(Ljava/lang/String;I)Landroid/content/pm/PackageParser$Package; +PLcom/android/server/pm/PackageManagerService;->fixUpInstallReason(Ljava/lang/String;II)I +PLcom/android/server/pm/PackageManagerService;->freeStorage(Ljava/lang/String;JI)V +PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; +PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; +PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer; +PLcom/android/server/pm/PackageManagerService;->generateApplicationInfoFromSettingsLPw(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo; +PLcom/android/server/pm/PackageManagerService;->generatePermissionInfo(Lcom/android/server/pm/BasePermission;I)Landroid/content/pm/PermissionInfo; +PLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUser(Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageManagerService;->getChangedPackages(II)Landroid/content/pm/ChangedPackages; +PLcom/android/server/pm/PackageManagerService;->getCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats; +PLcom/android/server/pm/PackageManagerService;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName; +PLcom/android/server/pm/PackageManagerService;->getHomeIntent()Landroid/content/Intent; +PLcom/android/server/pm/PackageManagerService;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverLPr()Landroid/util/Pair; +PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Landroid/content/ComponentName;)Landroid/content/ComponentName; +PLcom/android/server/pm/PackageManagerService;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo; +PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr()Landroid/content/ComponentName; +PLcom/android/server/pm/PackageManagerService;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; +PLcom/android/server/pm/PackageManagerService;->getParentOrChildPackageChangedSharedUser(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I +PLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; +PLcom/android/server/pm/PackageManagerService;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/PackageManagerService;->getPreviousCodePaths(Ljava/lang/String;)Ljava/util/List; +PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifierLPr()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibraryLPr(Ljava/lang/String;I)Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String; +PLcom/android/server/pm/PackageManagerService;->getSettingsProblemFile()Ljava/io/File; +PLcom/android/server/pm/PackageManagerService;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/PackageManagerService;->getUnknownSourcesSettings()I +PLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V +PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissions(Landroid/content/pm/PackageParser$Package;[I[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->grantRequestedRuntimePermissionsForUser(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;IZ)V +PLcom/android/server/pm/PackageManagerService;->hasDomainURLs(Landroid/content/pm/PackageParser$Package;)Z +PLcom/android/server/pm/PackageManagerService;->hasSystemUidErrors()Z +PLcom/android/server/pm/PackageManagerService;->installForwardLocked(I)Z +PLcom/android/server/pm/PackageManagerService;->installOnExternalAsec(I)Z +PLcom/android/server/pm/PackageManagerService;->installPackageTracedLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V +PLcom/android/server/pm/PackageManagerService;->installStage(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Landroid/content/pm/IPackageInstallObserver2;Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;ILandroid/os/UserHandle;[[Ljava/security/cert/Certificate;)V +PLcom/android/server/pm/PackageManagerService;->isExternalMediaAvailable()Z +PLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z +PLcom/android/server/pm/PackageManagerService;->isMultiArch(Landroid/content/pm/ApplicationInfo;)Z +PLcom/android/server/pm/PackageManagerService;->isOnlyCoreApps()Z +PLcom/android/server/pm/PackageManagerService;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageManagerService;->isSafeMode()Z +PLcom/android/server/pm/PackageManagerService;->isStorageLow()Z +PLcom/android/server/pm/PackageManagerService;->isUpgrade()Z +PLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z +PLcom/android/server/pm/PackageManagerService;->isVerificationEnabled(III)Z +PLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->loadMediaPackages(Landroid/util/ArrayMap;[IZ)V +PLcom/android/server/pm/PackageManagerService;->maybeThrowExceptionForMultiArchCopy(Ljava/lang/String;I)V +PLcom/android/server/pm/PackageManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V +PLcom/android/server/pm/PackageManagerService;->packageFlagsToInstallFlags(Lcom/android/server/pm/PackageSetting;)I +PLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V +PLcom/android/server/pm/PackageManagerService;->prepareAppDataAfterInstallLIF(Landroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->processPendingInstall(Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V +PLcom/android/server/pm/PackageManagerService;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/PackageManagerService;->reconcileAppsData(IIZ)V +PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V +PLcom/android/server/pm/PackageManagerService;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V +PLcom/android/server/pm/PackageManagerService;->removeCodePathLI(Ljava/io/File;)V +PLcom/android/server/pm/PackageManagerService;->removeDexFiles(Ljava/util/List;[Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V +PLcom/android/server/pm/PackageManagerService;->removePackageDataLIF(Lcom/android/server/pm/PackageSetting;[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;IZ)V +PLcom/android/server/pm/PackageManagerService;->removePackageLI(Landroid/content/pm/PackageParser$Package;Z)V +PLcom/android/server/pm/PackageManagerService;->removePackageLI(Lcom/android/server/pm/PackageSetting;Z)V +PLcom/android/server/pm/PackageManagerService;->replaceNonSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +PLcom/android/server/pm/PackageManagerService;->replaceSystemPackageLIF(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;IILandroid/os/UserHandle;[ILjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;I)V +PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I +PLcom/android/server/pm/PackageManagerService;->scanAvailableAsecs()V +PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package; +PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(I)V +PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I)V +PLcom/android/server/pm/PackageManagerService;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V +PLcom/android/server/pm/PackageManagerService;->sendPackageChangedBroadcast(Ljava/lang/String;ZLjava/util/ArrayList;I)V +PLcom/android/server/pm/PackageManagerService;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->setInstallAndUpdateTime(Landroid/content/pm/PackageParser$Package;JJ)V +PLcom/android/server/pm/PackageManagerService;->setInstantAppForUser(Lcom/android/server/pm/PackageSetting;IZZ)V +PLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V +PLcom/android/server/pm/PackageManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageManagerService;->startCleaningPackages()V +PLcom/android/server/pm/PackageManagerService;->startIntentFilterVerifications(IZLandroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/PackageManagerService;->systemReady()V +PLcom/android/server/pm/PackageManagerService;->updateExternalMediaStatusInner(ZZZ)V +PLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerService;->updateIntentForResolve(Landroid/content/Intent;)Landroid/content/Intent; +PLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V +PLcom/android/server/pm/PackageManagerService;->updatePermissionsLPw(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;I)V +PLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V +PLcom/android/server/pm/PackageManagerService;->updateSettingsLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V +PLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()V +PLcom/android/server/pm/PackageManagerShellCommand$1;->(Lcom/android/server/pm/PackageManagerShellCommand;)V +PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;->()V +PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;->(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->-get0(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)Ljava/util/concurrent/SynchronousQueue; +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->()V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender; +PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getResult()Landroid/content/Intent; +PLcom/android/server/pm/PackageManagerShellCommand;->(Lcom/android/server/pm/PackageManagerService;)V +PLcom/android/server/pm/PackageManagerShellCommand;->doCommitSession(IZ)I +PLcom/android/server/pm/PackageManagerShellCommand;->doCreateSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I +PLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I +PLcom/android/server/pm/PackageManagerShellCommand;->runInstall()I +PLcom/android/server/pm/PackageManagerShellCommand;->runList()I +PLcom/android/server/pm/PackageManagerShellCommand;->setParamsSize(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;Ljava/lang/String;)V +PLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(ILjava/lang/String;)I +PLcom/android/server/pm/PackageSetting;->isForwardLocked()Z +PLcom/android/server/pm/PackageSetting;->isSharedUser()Z +PLcom/android/server/pm/PackageSettingBase;->disableComponentLPw(Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageSettingBase;->getCeDataInode(I)J +PLcom/android/server/pm/PackageSettingBase;->getDisabledComponents(I)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageSettingBase;->getEnabledComponents(I)Landroid/util/ArraySet; +PLcom/android/server/pm/PackageSettingBase;->getInstallReason(I)I +PLcom/android/server/pm/PackageSettingBase;->getOverlayPaths(I)[Ljava/lang/String; +PLcom/android/server/pm/PackageSettingBase;->queryInstalledUsers([IZ)[I +PLcom/android/server/pm/PackageSettingBase;->restoreComponentLPw(Ljava/lang/String;I)Z +PLcom/android/server/pm/PackageSettingBase;->setInstallReason(II)V +PLcom/android/server/pm/PackageSettingBase;->setInstallStatus(I)V +PLcom/android/server/pm/PackageSettingBase;->setInstalled(ZI)V +PLcom/android/server/pm/PackageSettingBase;->setInstallerPackageName(Ljava/lang/String;)V +PLcom/android/server/pm/PackageSettingBase;->setStopped(ZI)V +PLcom/android/server/pm/PackageSettingBase;->setUpdateAvailable(Z)V +PLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String; +PLcom/android/server/pm/PermissionsState;->(Lcom/android/server/pm/PermissionsState;)V +PLcom/android/server/pm/PermissionsState;->getInstallPermissionState(Ljava/lang/String;)Lcom/android/server/pm/PermissionsState$PermissionState; +PLcom/android/server/pm/PermissionsState;->getPermissionFlags(Ljava/lang/String;I)I +PLcom/android/server/pm/PermissionsState;->reset()V +PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z +PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z +PLcom/android/server/pm/ProcessLoggingHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/pm/ProcessLoggingHandler;->invalidateProcessLoggingBaseApkHash(Ljava/lang/String;)V +PLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z +PLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z +PLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(Ljava/lang/String;)Z +PLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V +PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->areDefaultRuntimPermissionsGrantedLPr(I)Z +PLcom/android/server/pm/Settings$VersionInfo;->forceCurrent()V +PLcom/android/server/pm/Settings;->-get0(Lcom/android/server/pm/Settings;)Landroid/util/SparseArray; +PLcom/android/server/pm/Settings;->areDefaultRuntimePermissionsGrantedLPr(I)Z +PLcom/android/server/pm/Settings;->disableSystemPackageLPw(Ljava/lang/String;Z)Z +PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V +PLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Landroid/content/pm/PackageParser$Package;)V +PLcom/android/server/pm/Settings;->getBlockUninstallLPr(ILjava/lang/String;)Z +PLcom/android/server/pm/Settings;->getInstallerPackageNameLPr(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/pm/Settings;->replacePackageLPw(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/Settings;->replaceUserIdLPw(ILjava/lang/Object;)V +PLcom/android/server/pm/Settings;->setInstallStatus(Ljava/lang/String;I)V +PLcom/android/server/pm/Settings;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/Settings;->wasPackageEverLaunchedLPr(Ljava/lang/String;I)Z +PLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V +PLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V +PLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lorg/xmlpull/v1/XmlSerializer;I)V +PLcom/android/server/pm/Settings;->writePackageListLPr()V +PLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V +PLcom/android/server/pm/SharedUserSetting;->removePackage(Lcom/android/server/pm/PackageSetting;)V +PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String; +PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;->(Landroid/content/pm/ShortcutInfo;[B)V +PLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;->(Landroid/content/pm/ShortcutInfo;[BLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;)V +PLcom/android/server/pm/ShortcutBitmapSaver;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_4411(Ljava/util/concurrent/CountDownLatch;)V +PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$-com_android_server_pm_ShortcutBitmapSaver_7645()V +PLcom/android/server/pm/ShortcutBitmapSaver;->processPendingItems()Z +PLcom/android/server/pm/ShortcutBitmapSaver;->removeIcon(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutBitmapSaver;->saveBitmapLocked(Landroid/content/pm/ShortcutInfo;ILandroid/graphics/Bitmap$CompressFormat;I)V +PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z +PLcom/android/server/pm/ShortcutDumpFiles;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutLauncher;->(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;I)V +PLcom/android/server/pm/ShortcutLauncher;->(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;ILcom/android/server/pm/ShortcutPackageInfo;)V +PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet; +PLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V +PLcom/android/server/pm/ShortcutPackage;->(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V +PLcom/android/server/pm/ShortcutPackage;->(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V +PLcom/android/server/pm/ShortcutPackage;->addOrUpdateDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutPackage;->addShortcutInner(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutPackage;->clearAllImplicitRanks()V +PLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts()V +PLcom/android/server/pm/ShortcutPackage;->deleteDynamicWithId(Ljava/lang/String;)Z +PLcom/android/server/pm/ShortcutPackage;->deleteOrDisableWithId(Ljava/lang/String;ZZ)Landroid/content/pm/ShortcutInfo; +PLcom/android/server/pm/ShortcutPackage;->deleteShortcutInner(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo; +PLcom/android/server/pm/ShortcutPackage;->disableWithId(Ljava/lang/String;Ljava/lang/String;IZ)V +PLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(Ljava/util/List;I)V +PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;)V +PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;)V +PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;)V +PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;I)V +PLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo; +PLcom/android/server/pm/ShortcutPackage;->getApiCallCount()I +PLcom/android/server/pm/ShortcutPackage;->getFileName(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I +PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources; +PLcom/android/server/pm/ShortcutPackage;->getUsedBitmapFiles()Landroid/util/ArraySet; +PLcom/android/server/pm/ShortcutPackage;->incrementCountForActivity(Landroid/util/ArrayMap;Landroid/content/ComponentName;I)V +PLcom/android/server/pm/ShortcutPackage;->lambda$-com_android_server_pm_ShortcutPackage_41443(Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;)I +PLcom/android/server/pm/ShortcutPackage;->pushOutExcessShortcuts()Z +PLcom/android/server/pm/ShortcutPackage;->removeOrphans()V +PLcom/android/server/pm/ShortcutPackage;->resetRateLimiting()V +PLcom/android/server/pm/ShortcutPackage;->tryApiCall()Z +PLcom/android/server/pm/ShortcutPackageInfo;->(IJLjava/util/ArrayList;Z)V +PLcom/android/server/pm/ShortcutPackageInfo;->getLastUpdateTime()J +PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()I +PLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V +PLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo; +PLcom/android/server/pm/ShortcutPackageInfo;->updateVersionInfo(Landroid/content/pm/PackageInfo;)V +PLcom/android/server/pm/ShortcutPackageItem;->(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V +PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser; +PLcom/android/server/pm/ShortcutParser;->createShortcutFromManifest(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;IIIIIZ)Landroid/content/pm/ShortcutInfo; +PLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)Ljava/util/List; +PLcom/android/server/pm/ShortcutRequestPinProcessor;->(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V +PLcom/android/server/pm/ShortcutRequestPinProcessor;->getRequestPinConfirmationActivity(II)Landroid/util/Pair; +PLcom/android/server/pm/ShortcutRequestPinProcessor;->isRequestPinItemSupported(II)Z +PLcom/android/server/pm/ShortcutService$1;->()V +PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z +PLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z +PLcom/android/server/pm/ShortcutService$2;->()V +PLcom/android/server/pm/ShortcutService$3;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutService$3;->onUidGone(IZ)V +PLcom/android/server/pm/ShortcutService$4;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutService$5;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;->(Ljava/io/File;)V +PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;->getFile()Ljava/io/File; +PLcom/android/server/pm/ShortcutService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/pm/ShortcutService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/pm/ShortcutService$Lifecycle;->onStart()V +PLcom/android/server/pm/ShortcutService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/pm/ShortcutService$LocalService;->(Lcom/android/server/pm/ShortcutService;)V +PLcom/android/server/pm/ShortcutService$LocalService;->(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$LocalService;)V +PLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V +PLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;)Z +PLcom/android/server/pm/ShortcutService$LocalService;->lambda$-com_android_server_pm_ShortcutService$LocalService_85684(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;ILcom/android/server/pm/ShortcutPackage;)V +PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-0()V +PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-1(Landroid/content/pm/ShortcutInfo;)Z +PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-2(Landroid/content/pm/ShortcutInfo;)Z +PLcom/android/server/pm/ShortcutService;->-com_android_server_pm_ShortcutService-mthref-3(Landroid/content/pm/ShortcutInfo;)Z +PLcom/android/server/pm/ShortcutService;->-get1(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList; +PLcom/android/server/pm/ShortcutService;->-get2(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object; +PLcom/android/server/pm/ShortcutService;->-wrap2(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List; +PLcom/android/server/pm/ShortcutService;->-wrap5(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->-wrap8(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->(Landroid/content/Context;)V +PLcom/android/server/pm/ShortcutService;->(Landroid/content/Context;Landroid/os/Looper;Z)V +PLcom/android/server/pm/ShortcutService;->assignImplicitRanks(Ljava/util/List;)V +PLcom/android/server/pm/ShortcutService;->checkPackageChanges(I)V +PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapDirectoriesLocked(I)V +PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapFilesLocked(ILcom/android/server/pm/ShortcutUser;Ljava/lang/String;Ljava/io/File;)V +PLcom/android/server/pm/ShortcutService;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V +PLcom/android/server/pm/ShortcutService;->enableShortcuts(Ljava/lang/String;Ljava/util/List;I)V +PLcom/android/server/pm/ShortcutService;->enforceMaxActivityShortcuts(I)V +PLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V +PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;Z)V +PLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/ShortcutService;->getBaseStateFile()Landroid/util/AtomicFile; +PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Landroid/content/ComponentName; +PLcom/android/server/pm/ShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List; +PLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J +PLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent; +PLcom/android/server/pm/ShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/ShortcutService;->getMaxActivityShortcuts()I +PLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I +PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I +PLcom/android/server/pm/ShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/ShortcutService;->getShortcutsWithQueryLocked(Ljava/lang/String;IILjava/util/function/Predicate;)Landroid/content/pm/ParceledListSlice; +PLcom/android/server/pm/ShortcutService;->getUidLastForegroundElapsedTimeLocked(I)J +PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File; +PLcom/android/server/pm/ShortcutService;->getUserFile(I)Ljava/io/File; +PLcom/android/server/pm/ShortcutService;->handlePackageChanged(Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->handlePackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V +PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;I)Z +PLcom/android/server/pm/ShortcutService;->initialize()V +PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String; +PLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I +PLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String; +PLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List; +PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List; +PLcom/android/server/pm/ShortcutService;->injectGetPinConfirmationActivity(Ljava/lang/String;II)Landroid/content/ComponentName; +PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources; +PLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z +PLcom/android/server/pm/ShortcutService;->injectIsMainActivity(Landroid/content/ComponentName;I)Z +PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z +PLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V +PLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V +PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V +PLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String; +PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z +PLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File; +PLcom/android/server/pm/ShortcutService;->injectUserDataPath(I)Ljava/io/File; +PLcom/android/server/pm/ShortcutService;->injectValidateIconResPackage(Landroid/content/pm/ShortcutInfo;Landroid/graphics/drawable/Icon;)V +PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; +PLcom/android/server/pm/ShortcutService;->isCallerSystem()Z +PLcom/android/server/pm/ShortcutService;->isClockValid(J)Z +PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z +PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z +PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z +PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ActivityInfo;)Landroid/content/pm/ActivityInfo; +PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo; +PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/PackageInfo;)Landroid/content/pm/PackageInfo; +PLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z +PLcom/android/server/pm/ShortcutService;->isRequestPinItemSupported(II)Z +PLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_101474(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_21406(JI)V +PLcom/android/server/pm/ShortcutService;->lambda$-com_android_server_pm_ShortcutService_54763(ILjava/lang/String;)V +PLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V +PLcom/android/server/pm/ShortcutService;->loadConfigurationLocked()V +PLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser; +PLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser; +PLcom/android/server/pm/ShortcutService;->notifyListeners(Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->onBootPhase(I)V +PLcom/android/server/pm/ShortcutService;->openIconFileForWrite(ILandroid/content/pm/ShortcutInfo;)Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath; +PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z +PLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName; +PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent; +PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V +PLcom/android/server/pm/ShortcutService;->removeIconLocked(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V +PLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V +PLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Landroid/content/pm/ShortcutInfo;)V +PLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(ILjava/io/OutputStream;Z)V +PLcom/android/server/pm/ShortcutService;->saveUserLocked(I)V +PLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V +PLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V +PLcom/android/server/pm/ShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +PLcom/android/server/pm/ShortcutService;->shrinkBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap; +PLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z +PLcom/android/server/pm/ShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z +PLcom/android/server/pm/ShortcutService;->updateTimesLocked()V +PLcom/android/server/pm/ShortcutService;->verifyStates()V +PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V +PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/ShortcutUser$PackageWithUser;->equals(Ljava/lang/Object;)Z +PLcom/android/server/pm/ShortcutUser;->(Lcom/android/server/pm/ShortcutService;I)V +PLcom/android/server/pm/ShortcutUser;->attemptToRestoreIfNeededAndSave(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V +PLcom/android/server/pm/ShortcutUser;->clearLauncher()V +PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V +PLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V +PLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V +PLcom/android/server/pm/ShortcutUser;->forPackageItem(Ljava/lang/String;ILjava/util/function/Consumer;)V +PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Landroid/content/ComponentName; +PLcom/android/server/pm/ShortcutUser;->getKnownLocales()Ljava/lang/String; +PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String; +PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J +PLcom/android/server/pm/ShortcutUser;->getLastKnownLauncher()Landroid/content/ComponentName; +PLcom/android/server/pm/ShortcutUser;->getUserId()I +PLcom/android/server/pm/ShortcutUser;->hasPackage(Ljava/lang/String;)Z +PLcom/android/server/pm/ShortcutUser;->lambda$-com_android_server_pm_ShortcutUser_11105(Lcom/android/server/pm/ShortcutPackageItem;)V +PLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser; +PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V +PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V +PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V +PLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;)V +PLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;Z)V +PLcom/android/server/pm/UserDataPreparer;->enforceSerialNumber(Ljava/io/File;I)V +PLcom/android/server/pm/UserDataPreparer;->getDataSystemCeDirectory(I)Ljava/io/File; +PLcom/android/server/pm/UserDataPreparer;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File; +PLcom/android/server/pm/UserDataPreparer;->getSerialNumber(Ljava/io/File;)I +PLcom/android/server/pm/UserDataPreparer;->isFileEncryptedEmulatedOnly()Z +PLcom/android/server/pm/UserDataPreparer;->prepareUserData(III)V +PLcom/android/server/pm/UserDataPreparer;->prepareUserDataLI(Ljava/lang/String;IIIZ)V +PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;)V +PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V +PLcom/android/server/pm/UserManagerService$2;->(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V +PLcom/android/server/pm/UserManagerService$2;->run()V +PLcom/android/server/pm/UserManagerService$3;->(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/pm/UserManagerService$3;->run()V +PLcom/android/server/pm/UserManagerService$LifeCycle;->(Landroid/content/Context;)V +PLcom/android/server/pm/UserManagerService$LifeCycle;->onBootPhase(I)V +PLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V +PLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V +PLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I +PLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z +PLcom/android/server/pm/UserManagerService$LocalService;->setDeviceManaged(Z)V +PLcom/android/server/pm/UserManagerService$LocalService;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;ZI)V +PLcom/android/server/pm/UserManagerService$LocalService;->setUserManaged(IZ)V +PLcom/android/server/pm/UserManagerService$LocalService;->setUserState(II)V +PLcom/android/server/pm/UserManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/pm/UserManagerService;->-get0(Lcom/android/server/pm/UserManagerService;)Lcom/android/internal/app/IAppOpsService; +PLcom/android/server/pm/UserManagerService;->-get10(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object; +PLcom/android/server/pm/UserManagerService;->-get2(Lcom/android/server/pm/UserManagerService;)Landroid/content/Context; +PLcom/android/server/pm/UserManagerService;->-get4(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseBooleanArray; +PLcom/android/server/pm/UserManagerService;->-get5(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object; +PLcom/android/server/pm/UserManagerService;->-get7()Landroid/os/IBinder; +PLcom/android/server/pm/UserManagerService;->-get8(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList; +PLcom/android/server/pm/UserManagerService;->-set1(Lcom/android/server/pm/UserManagerService;Z)Z +PLcom/android/server/pm/UserManagerService;->-wrap11(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V +PLcom/android/server/pm/UserManagerService;->-wrap4(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData; +PLcom/android/server/pm/UserManagerService;->-wrap9(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;ZI)V +PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V +PLcom/android/server/pm/UserManagerService;->checkManageUserAndAcrossUsersFullPermission(Ljava/lang/String;)V +PLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V +PLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle; +PLcom/android/server/pm/UserManagerService;->findCurrentGuestUser()Landroid/content/pm/UserInfo; +PLcom/android/server/pm/UserManagerService;->getCredentialOwnerProfile(I)I +PLcom/android/server/pm/UserManagerService;->getUserAccount(I)Ljava/lang/String; +PLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData; +PLcom/android/server/pm/UserManagerService;->getUserIcon(I)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List; +PLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z +PLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z +PLcom/android/server/pm/UserManagerService;->isManagedProfile(I)Z +PLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z +PLcom/android/server/pm/UserManagerService;->isRestricted()Z +PLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V +PLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V +PLcom/android/server/pm/UserManagerService;->propagateUserRestrictionsLR(ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V +PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(Lcom/android/server/pm/UserManagerService$UserData;)V +PLcom/android/server/pm/UserManagerService;->setDevicePolicyUserRestrictionsInner(ILandroid/os/Bundle;ZI)V +PLcom/android/server/pm/UserManagerService;->setUserRestriction(Ljava/lang/String;ZI)V +PLcom/android/server/pm/UserManagerService;->systemReady()V +PLcom/android/server/pm/UserManagerService;->updateRestrictionsIfNeededLR(ILandroid/os/Bundle;Landroid/util/SparseArray;)Z +PLcom/android/server/pm/UserManagerService;->updateUserRestrictionsInternalLR(Landroid/os/Bundle;I)V +PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;)V +PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V +PLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestrictions(Landroid/content/Context;ILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z +PLcom/android/server/pm/UserRestrictionsUtils;->isEmpty(Landroid/os/Bundle;)Z +PLcom/android/server/pm/UserRestrictionsUtils;->mergeAll(Landroid/util/SparseArray;)Landroid/os/Bundle; +PLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle; +PLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z +PLcom/android/server/pm/UserRestrictionsUtils;->sortToGlobalAndLocal(Landroid/os/Bundle;ZILandroid/os/Bundle;Landroid/os/Bundle;)V +PLcom/android/server/pm/UserRestrictionsUtils;->writeRestrictions(Lorg/xmlpull/v1/XmlSerializer;Landroid/os/Bundle;Ljava/lang/String;)V +PLcom/android/server/pm/dex/DexManager$DexSearchResult;->-get0(Lcom/android/server/pm/dex/DexManager$DexSearchResult;)I +PLcom/android/server/pm/dex/DexManager$DexSearchResult;->-get1(Lcom/android/server/pm/dex/DexManager$DexSearchResult;)Ljava/lang/String; +PLcom/android/server/pm/dex/DexManager$DexSearchResult;->(Lcom/android/server/pm/dex/DexManager;Ljava/lang/String;I)V +PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->-get0(Lcom/android/server/pm/dex/DexManager$PackageCodeLocations;)Ljava/lang/String; +PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->(Landroid/content/pm/ApplicationInfo;I)V +PLcom/android/server/pm/dex/DexManager;->-get0()I +PLcom/android/server/pm/dex/DexManager;->-get1()I +PLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V +PLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V +PLcom/android/server/pm/dex/DexManager;->notifyPackageUpdated(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V +PLcom/android/server/pm/dex/DexoptOptions;->getCompilerFilter()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->getPackageName()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->getSplitName()Ljava/lang/String; +PLcom/android/server/pm/dex/DexoptOptions;->isBootComplete()Z +PLcom/android/server/pm/dex/DexoptOptions;->isCheckForProfileUpdates()Z +PLcom/android/server/pm/dex/DexoptOptions;->isDexoptAsSharedLibrary()Z +PLcom/android/server/pm/dex/DexoptOptions;->isDowngrade()Z +PLcom/android/server/pm/dex/DexoptOptions;->isForce()Z +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-get3(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->(ZILjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getClassLoaderContext()Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoaderIsas()Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoadingPackages()Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isUsedByOtherApps()Z +PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->merge(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get1(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-get2(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->-wrap0(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->clearCodePathUsedByOtherApps()Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getDexUseInfoMap()Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getLoadingPackages(Ljava/lang/String;)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isAnyCodePathUsedByOtherApps()Z +PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->mergeCodePathUsedByOtherApps(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->clearUsedByOtherApps(Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->clonePackageUseInfoMap()Ljava/util/Map; +PLcom/android/server/pm/dex/PackageDexUsage;->isSupportedVersion(I)Z +PLcom/android/server/pm/dex/PackageDexUsage;->maybeAddLoadingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadClassLoaderContext(Ljava/io/BufferedReader;I)Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage;->maybeReadLoadingPackages(Ljava/io/BufferedReader;I)Ljava/util/Set; +PLcom/android/server/pm/dex/PackageDexUsage;->maybeWriteAsync()V +PLcom/android/server/pm/dex/PackageDexUsage;->read()V +PLcom/android/server/pm/dex/PackageDexUsage;->readBoolean(Ljava/lang/String;)Z +PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V +PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V +PLcom/android/server/pm/dex/PackageDexUsage;->writeBoolean(Z)Ljava/lang/String; +PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Object;)V +PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Void;)V +PLcom/android/server/policy/-$Lambda$pV_TcBBXJOcgD8CpVRVZuDc_ff8;->(BLjava/lang/Object;)V +PLcom/android/server/policy/AccessibilityShortcutController$1;->(Lcom/android/server/policy/AccessibilityShortcutController;Landroid/os/Handler;)V +PLcom/android/server/policy/AccessibilityShortcutController$FrameworkObjectProvider;->()V +PLcom/android/server/policy/AccessibilityShortcutController;->(Landroid/content/Context;Landroid/os/Handler;I)V +PLcom/android/server/policy/AccessibilityShortcutController;->getTargetServiceComponentNameString(Landroid/content/Context;I)Ljava/lang/String; +PLcom/android/server/policy/AccessibilityShortcutController;->onSettingsChanged()V +PLcom/android/server/policy/AccessibilityShortcutController;->setCurrentUser(I)V +PLcom/android/server/policy/BarController$1;->(Lcom/android/server/policy/BarController;I)V +PLcom/android/server/policy/BarController$1;->run()V +PLcom/android/server/policy/BarController$BarHandler;->(Lcom/android/server/policy/BarController;)V +PLcom/android/server/policy/BarController$BarHandler;->(Lcom/android/server/policy/BarController;Lcom/android/server/policy/BarController$BarHandler;)V +PLcom/android/server/policy/BarController$BarHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/policy/BarController;->-get0(Lcom/android/server/policy/BarController;)I +PLcom/android/server/policy/BarController;->-get1(Lcom/android/server/policy/BarController;)Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener; +PLcom/android/server/policy/BarController;->(Ljava/lang/String;IIIIII)V +PLcom/android/server/policy/BarController;->checkShowTransientBarLw()Z +PLcom/android/server/policy/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/policy/BarController$OnBarVisibilityChangedListener;Z)V +PLcom/android/server/policy/BarController;->setWindow(Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/GlobalKeyManager;->(Landroid/content/Context;)V +PLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V +PLcom/android/server/policy/IconUtilities;->(Landroid/content/Context;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$1;->(Lcom/android/server/policy/ImmersiveModeConfirmation;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$2;->(Lcom/android/server/policy/ImmersiveModeConfirmation;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$H;->(Lcom/android/server/policy/ImmersiveModeConfirmation;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$H;->(Lcom/android/server/policy/ImmersiveModeConfirmation;Lcom/android/server/policy/ImmersiveModeConfirmation$H;)V +PLcom/android/server/policy/ImmersiveModeConfirmation$H;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->-wrap0(Lcom/android/server/policy/ImmersiveModeConfirmation;)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->(Landroid/content/Context;)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->getNavBarExitDuration()J +PLcom/android/server/policy/ImmersiveModeConfirmation;->handleHide()V +PLcom/android/server/policy/ImmersiveModeConfirmation;->immersiveModeChangedLw(Ljava/lang/String;ZZZ)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->loadSetting(I)V +PLcom/android/server/policy/ImmersiveModeConfirmation;->systemReady()V +PLcom/android/server/policy/LogDecelerateInterpolator;->(II)V +PLcom/android/server/policy/LogDecelerateInterpolator;->computeLog(FII)F +PLcom/android/server/policy/LogDecelerateInterpolator;->getInterpolation(F)F +PLcom/android/server/policy/PhoneWindowManager$10;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$11;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$12;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/policy/PhoneWindowManager$13;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$14;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$14;->onFling(I)V +PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromLeft()V +PLcom/android/server/policy/PhoneWindowManager$14;->onSwipeFromTop()V +PLcom/android/server/policy/PhoneWindowManager$15;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionCancelledLocked(I)V +PLcom/android/server/policy/PhoneWindowManager$15;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I +PLcom/android/server/policy/PhoneWindowManager$16;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$16;->onTrustedChanged()V +PLcom/android/server/policy/PhoneWindowManager$19;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$19;->run()V +PLcom/android/server/policy/PhoneWindowManager$1;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$1;->run()V +PLcom/android/server/policy/PhoneWindowManager$2;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$2;->onDrawn()V +PLcom/android/server/policy/PhoneWindowManager$3;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$4;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$5;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$5;->onBarVisibilityChanged(Z)V +PLcom/android/server/policy/PhoneWindowManager$6;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$7;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$8;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$9;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$MyOrientationListener$1;->(Lcom/android/server/policy/PhoneWindowManager$MyOrientationListener;)V +PLcom/android/server/policy/PhoneWindowManager$MyOrientationListener$1;->run()V +PLcom/android/server/policy/PhoneWindowManager$MyOrientationListener;->(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/policy/PhoneWindowManager$MyOrientationListener;->onProposedRotationChanged(I)V +PLcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;->(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->(Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;)V +PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;->(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;->(Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;)V +PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Handler;)V +PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->observe()V +PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap12(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap14(Lcom/android/server/policy/PhoneWindowManager;)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap20(Lcom/android/server/policy/PhoneWindowManager;Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap21(Lcom/android/server/policy/PhoneWindowManager;I)V +PLcom/android/server/policy/PhoneWindowManager;->-wrap3(Lcom/android/server/policy/PhoneWindowManager;ILandroid/view/animation/Animation;)I +PLcom/android/server/policy/PhoneWindowManager;->-wrap4(Lcom/android/server/policy/PhoneWindowManager;)I +PLcom/android/server/policy/PhoneWindowManager;->()V +PLcom/android/server/policy/PhoneWindowManager;->addSplashscreenContent(Lcom/android/internal/policy/PhoneWindow;Landroid/content/Context;)V +PLcom/android/server/policy/PhoneWindowManager;->allowAppAnimationsLw()Z +PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V +PLcom/android/server/policy/PhoneWindowManager;->awakenDreams()V +PLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V +PLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z +PLcom/android/server/policy/PhoneWindowManager;->cancelPendingAccessibilityShortcutAction()V +PLcom/android/server/policy/PhoneWindowManager;->cancelPendingBackKeyAction()V +PLcom/android/server/policy/PhoneWindowManager;->cancelPendingPowerKeyAction()V +PLcom/android/server/policy/PhoneWindowManager;->cancelPendingScreenshotChordAction()V +PLcom/android/server/policy/PhoneWindowManager;->cancelPreloadRecentApps()V +PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(Landroid/view/WindowManager$LayoutParams;[I)I +PLcom/android/server/policy/PhoneWindowManager;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z +PLcom/android/server/policy/PhoneWindowManager;->createHiddenByKeyguardExit(ZZ)Landroid/view/animation/Animation; +PLcom/android/server/policy/PhoneWindowManager;->createHomeDockIntent()Landroid/content/Intent; +PLcom/android/server/policy/PhoneWindowManager;->dispatchUnhandledKey(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; +PLcom/android/server/policy/PhoneWindowManager;->enableKeyguard(Z)V +PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V +PLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V +PLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V +PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn()V +PLcom/android/server/policy/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService; +PLcom/android/server/policy/PhoneWindowManager;->getDisplayContext(Landroid/content/Context;I)Landroid/content/Context; +PLcom/android/server/policy/PhoneWindowManager;->getDreamManager()Landroid/service/dreams/IDreamManager; +PLcom/android/server/policy/PhoneWindowManager;->getHdmiControl()Lcom/android/server/policy/PhoneWindowManager$HdmiControl; +PLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J +PLcom/android/server/policy/PhoneWindowManager;->getLongIntArray(Landroid/content/res/Resources;I)[J +PLcom/android/server/policy/PhoneWindowManager;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService; +PLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager; +PLcom/android/server/policy/PhoneWindowManager;->getUserRotationMode()I +PLcom/android/server/policy/PhoneWindowManager;->getVibrationEffect(I)Landroid/os/VibrationEffect; +PLcom/android/server/policy/PhoneWindowManager;->handleShortPressOnHome()V +PLcom/android/server/policy/PhoneWindowManager;->handleStartTransitionForKeyguardLw(ILandroid/view/animation/Animation;)I +PLcom/android/server/policy/PhoneWindowManager;->hasLongPressOnBackBehavior()Z +PLcom/android/server/policy/PhoneWindowManager;->hasNavigationBar()Z +PLcom/android/server/policy/PhoneWindowManager;->hasPanicPressOnBackBehavior()Z +PLcom/android/server/policy/PhoneWindowManager;->init(Landroid/content/Context;Landroid/view/IWindowManager;Landroid/view/WindowManagerPolicy$WindowManagerFuncs;)V +PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V +PLcom/android/server/policy/PhoneWindowManager;->interceptAccessibilityShortcutChord()V +PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyDown()V +PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyUp(Landroid/view/KeyEvent;)Z +PLcom/android/server/policy/PhoneWindowManager;->interceptScreenshotChord()V +PLcom/android/server/policy/PhoneWindowManager;->isAnyPortrait(I)Z +PLcom/android/server/policy/PhoneWindowManager;->isDefaultOrientationForced()Z +PLcom/android/server/policy/PhoneWindowManager;->isKeyguardDrawnLw()Z +PLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z +PLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z +PLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z +PLcom/android/server/policy/PhoneWindowManager;->isLandscapeOrSeascape(I)Z +PLcom/android/server/policy/PhoneWindowManager;->isNavBarEmpty(I)Z +PLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z +PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStartedLw()V +PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStoppedLw()V +PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey()V +PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(ZZ)V +PLcom/android/server/policy/PhoneWindowManager;->needSensorRunningLp()Z +PLcom/android/server/policy/PhoneWindowManager;->onConfigurationChanged()V +PLcom/android/server/policy/PhoneWindowManager;->onKeyguardOccludedChangedLw(Z)V +PLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V +PLcom/android/server/policy/PhoneWindowManager;->prepareAddWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManager$LayoutParams;)I +PLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V +PLcom/android/server/policy/PhoneWindowManager;->readRotation(I)I +PLcom/android/server/policy/PhoneWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +PLcom/android/server/policy/PhoneWindowManager;->removeWindowLw(Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/PhoneWindowManager;->reportScreenStateToVrManager(Z)V +PLcom/android/server/policy/PhoneWindowManager;->requestTransientBars(Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/PhoneWindowManager;->rotationForOrientationLw(II)I +PLcom/android/server/policy/PhoneWindowManager;->rotationHasCompatibleMetricsLw(II)Z +PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn()V +PLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(Landroid/view/WindowManagerPolicy$ScreenOnListener;)V +PLcom/android/server/policy/PhoneWindowManager;->selectRotationAnimationLw([I)V +PLcom/android/server/policy/PhoneWindowManager;->sendCloseSystemWindows(Ljava/lang/String;)V +PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBar(I)V +PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBarAsync(I)V +PLcom/android/server/policy/PhoneWindowManager;->setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/policy/PhoneWindowManager;->setCurrentOrientationLw(I)V +PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V +PLcom/android/server/policy/PhoneWindowManager;->setDisplayOverscan(Landroid/view/Display;IIII)V +PLcom/android/server/policy/PhoneWindowManager;->setHdmiPlugged(Z)V +PLcom/android/server/policy/PhoneWindowManager;->setKeyguardOccludedLw(ZZ)Z +PLcom/android/server/policy/PhoneWindowManager;->setLastInputMethodWindowLw(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/WindowManagerPolicy$WindowState;)V +PLcom/android/server/policy/PhoneWindowManager;->setRotationLw(I)V +PLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V +PLcom/android/server/policy/PhoneWindowManager;->setUserRotationMode(II)V +PLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z +PLcom/android/server/policy/PhoneWindowManager;->shouldRotateSeamlessly(II)Z +PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +PLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(ZZ)V +PLcom/android/server/policy/PhoneWindowManager;->startKeyguardExitAnimation(JJ)V +PLcom/android/server/policy/PhoneWindowManager;->startedWakingUp()V +PLcom/android/server/policy/PhoneWindowManager;->systemBooted()V +PLcom/android/server/policy/PhoneWindowManager;->systemReady()V +PLcom/android/server/policy/PhoneWindowManager;->updateOrientationListenerLp()V +PLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V +PLcom/android/server/policy/PhoneWindowManager;->updateRotation(ZZ)V +PLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(Z)V +PLcom/android/server/policy/PhoneWindowManager;->updateSettings()V +PLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V +PLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V +PLcom/android/server/policy/PhoneWindowManager;->validateRotationAnimationLw(IIZ)Z +PLcom/android/server/policy/PolicyControl;->adjustClearableFlags(Landroid/view/WindowManagerPolicy$WindowState;I)I +PLcom/android/server/policy/PolicyControl;->disableImmersiveConfirmation(Ljava/lang/String;)Z +PLcom/android/server/policy/PolicyControl;->reloadFromSetting(Landroid/content/Context;)V +PLcom/android/server/policy/PolicyControl;->setFilters(Ljava/lang/String;)V +PLcom/android/server/policy/ShortcutManager$ShortcutInfo;->(Ljava/lang/String;Landroid/content/Intent;)V +PLcom/android/server/policy/ShortcutManager;->(Landroid/content/Context;)V +PLcom/android/server/policy/ShortcutManager;->loadShortcuts()V +PLcom/android/server/policy/SplashScreenSurface;->(Landroid/view/View;Landroid/os/IBinder;)V +PLcom/android/server/policy/SplashScreenSurface;->remove()V +PLcom/android/server/policy/StatusBarController$1$2;->(Lcom/android/server/policy/StatusBarController$1;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)V +PLcom/android/server/policy/StatusBarController$1$3;->(Lcom/android/server/policy/StatusBarController$1;)V +PLcom/android/server/policy/StatusBarController$1$3;->run()V +PLcom/android/server/policy/StatusBarController$1;->(Lcom/android/server/policy/StatusBarController;)V +PLcom/android/server/policy/StatusBarController$1;->onAppTransitionCancelledLocked(I)V +PLcom/android/server/policy/StatusBarController$1;->onAppTransitionStartingLocked(ILandroid/os/IBinder;Landroid/os/IBinder;Landroid/view/animation/Animation;Landroid/view/animation/Animation;)I +PLcom/android/server/policy/StatusBarController;->-wrap0(Landroid/view/animation/Animation;Landroid/view/animation/Animation;)J +PLcom/android/server/policy/StatusBarController;->()V +PLcom/android/server/policy/StatusBarController;->getAppTransitionListener()Landroid/view/WindowManagerInternal$AppTransitionListener; +PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->(Lcom/android/server/policy/SystemGesturesPointerEventListener;)V +PLcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;->(Lcom/android/server/policy/SystemGesturesPointerEventListener;Lcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector;)V +PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get0(Lcom/android/server/policy/SystemGesturesPointerEventListener;)Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks; +PLcom/android/server/policy/SystemGesturesPointerEventListener;->-get1(Lcom/android/server/policy/SystemGesturesPointerEventListener;)J +PLcom/android/server/policy/SystemGesturesPointerEventListener;->-set0(Lcom/android/server/policy/SystemGesturesPointerEventListener;J)J +PLcom/android/server/policy/SystemGesturesPointerEventListener;->(Landroid/content/Context;Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks;)V +PLcom/android/server/policy/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; +PLcom/android/server/policy/SystemGesturesPointerEventListener;->systemReady()V +PLcom/android/server/policy/WakeGestureListener$1;->(Lcom/android/server/policy/WakeGestureListener;)V +PLcom/android/server/policy/WakeGestureListener$2;->(Lcom/android/server/policy/WakeGestureListener;)V +PLcom/android/server/policy/WakeGestureListener;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/policy/WakeGestureListener;->cancelWakeUpTrigger()V +PLcom/android/server/policy/WakeGestureListener;->isSupported()Z +PLcom/android/server/policy/WindowOrientationListener$OrientationJudge;->(Lcom/android/server/policy/WindowOrientationListener;)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge$1;->(Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->(Lcom/android/server/policy/WindowOrientationListener;)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->evaluateRotationChangeLocked()I +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->getProposedRotationLocked()I +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->isDesiredRotationAcceptableLocked(J)Z +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onAccuracyChanged(Landroid/hardware/Sensor;I)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onSensorChanged(Landroid/hardware/SensorEvent;)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchEndLocked(J)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchStartLocked()V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->resetLocked(Z)V +PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->unscheduleRotationEvaluationLocked()V +PLcom/android/server/policy/WindowOrientationListener;->-get3(Lcom/android/server/policy/WindowOrientationListener;)Ljava/lang/Object; +PLcom/android/server/policy/WindowOrientationListener;->(Landroid/content/Context;Landroid/os/Handler;)V +PLcom/android/server/policy/WindowOrientationListener;->(Landroid/content/Context;Landroid/os/Handler;I)V +PLcom/android/server/policy/WindowOrientationListener;->canDetectOrientation()Z +PLcom/android/server/policy/WindowOrientationListener;->enable(Z)V +PLcom/android/server/policy/WindowOrientationListener;->getProposedRotation()I +PLcom/android/server/policy/WindowOrientationListener;->setCurrentRotation(I)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;->(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;->onDrawn()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->reset()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-get0(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback; +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-get1(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Landroid/content/Context; +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-get2(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener; +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-get4(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState; +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-set0(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener; +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->(Landroid/content/Context;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->bindService(Landroid/content/Context;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasLockscreenWallpaper()Z +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onBootCompleted()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOn(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setKeyguardEnabled(Z)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setOccluded(ZZ)V +PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->startKeyguardExitAnimation(JJ)V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isSecure(I)Z +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onBootCompleted()V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp()V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V +PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->startKeyguardExitAnimation(JJ)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onHasLockscreenWallpaperChanged(Z)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(Z)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onSimSecureStateChanged(Z)V +PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onTrustedChanged(Z)V +PLcom/android/server/power/BatterySaverPolicy;->onChange(ZLandroid/net/Uri;)V +PLcom/android/server/power/BatterySaverPolicy;->start(Landroid/content/ContentResolver;)V +PLcom/android/server/power/BatterySaverPolicy;->updateConstants(Ljava/lang/String;)V +PLcom/android/server/power/Notifier$1;->(Lcom/android/server/power/Notifier;)V +PLcom/android/server/power/Notifier$2;->(Lcom/android/server/power/Notifier;)V +PLcom/android/server/power/Notifier$3;->(Lcom/android/server/power/Notifier;)V +PLcom/android/server/power/Notifier$NotifierHandler;->(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V +PLcom/android/server/power/Notifier;->(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/internal/app/IAppOpsService;Lcom/android/server/power/SuspendBlocker;Landroid/view/WindowManagerPolicy;)V +PLcom/android/server/power/Notifier;->onLongPartialWakeLockFinish(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V +PLcom/android/server/power/Notifier;->onLongPartialWakeLockStart(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V +PLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker()V +PLcom/android/server/power/PowerManagerService$1;->onStateChanged()V +PLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker()V +PLcom/android/server/power/PowerManagerService$BatteryReceiver;->(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService$BatteryReceiver;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BatteryReceiver;)V +PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I +PLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z +PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z +PLcom/android/server/power/PowerManagerService$BinderService;->setStayOnSetting(I)V +PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JLjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V +PLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V +PLcom/android/server/power/PowerManagerService$DockReceiver;->(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService$DockReceiver;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DockReceiver;)V +PLcom/android/server/power/PowerManagerService$DreamReceiver;->(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService$DreamReceiver;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamReceiver;)V +PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V +PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V +PLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(I)V +PLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V +PLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V +PLcom/android/server/power/PowerManagerService$SettingsObserver;->(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V +PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V +PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;)V +PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/power/PowerManagerService;->-get2(Lcom/android/server/power/PowerManagerService;)Z +PLcom/android/server/power/PowerManagerService;->-get3(Lcom/android/server/power/PowerManagerService;)Z +PLcom/android/server/power/PowerManagerService;->-get4(Lcom/android/server/power/PowerManagerService;)I +PLcom/android/server/power/PowerManagerService;->-get5(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker; +PLcom/android/server/power/PowerManagerService;->-set0(Lcom/android/server/power/PowerManagerService;I)I +PLcom/android/server/power/PowerManagerService;->-wrap16(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService;->-wrap17(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService;->-wrap21(Ljava/lang/String;)V +PLcom/android/server/power/PowerManagerService;->-wrap27(Lcom/android/server/power/PowerManagerService;Z)V +PLcom/android/server/power/PowerManagerService;->-wrap35(Lcom/android/server/power/PowerManagerService;)V +PLcom/android/server/power/PowerManagerService;->-wrap37(Lcom/android/server/power/PowerManagerService;JIII)V +PLcom/android/server/power/PowerManagerService;->-wrap38(Lcom/android/server/power/PowerManagerService;JLjava/lang/String;ILjava/lang/String;I)V +PLcom/android/server/power/PowerManagerService;->-wrap4(Lcom/android/server/power/PowerManagerService;I)Z +PLcom/android/server/power/PowerManagerService;->getCurrentBrightnessSettingLocked()I +PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal(Ljava/io/File;)I +PLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V +PLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V +PLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V +PLcom/android/server/power/PowerManagerService;->incrementBootCount()V +PLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z +PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z +PLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z +PLcom/android/server/power/PowerManagerService;->monitor()V +PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongStartedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V +PLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V +PLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V +PLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V +PLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V +PLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(I)V +PLcom/android/server/power/PowerManagerService;->setStayOnSettingInternal(I)V +PLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z +PLcom/android/server/power/PowerManagerService;->systemReady(Lcom/android/internal/app/IAppOpsService;)V +PLcom/android/server/power/PowerManagerService;->updateLowPowerModeLocked()V +PLcom/android/server/power/PowerManagerService;->updateSettingsLocked()V +PLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V +PLcom/android/server/power/PowerManagerService;->wakeUpInternal(JLjava/lang/String;ILjava/lang/String;I)V +PLcom/android/server/power/PowerManagerService;->wakeUpNoUpdateLocked(JLjava/lang/String;ILjava/lang/String;I)Z +PLcom/android/server/power/WirelessChargerDetector$1;->(Lcom/android/server/power/WirelessChargerDetector;)V +PLcom/android/server/power/WirelessChargerDetector$2;->(Lcom/android/server/power/WirelessChargerDetector;)V +PLcom/android/server/power/WirelessChargerDetector;->(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)V +PLcom/android/server/power/WirelessChargerDetector;->update(ZII)Z +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$1;->(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;Landroid/os/Handler;Landroid/net/Uri;)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hadPrintService(Lcom/android/server/print/UserState;Ljava/lang/String;)Z +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hasPrintService(Ljava/lang/String;)Z +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->run()V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->-get0(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Landroid/content/Context; +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->-get1(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Ljava/lang/Object; +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->-get2(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Landroid/os/UserManager; +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->-wrap0(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;IZZ)Lcom/android/server/print/UserState; +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->-wrap2(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->(Lcom/android/server/print/PrintManagerService;Landroid/content/Context;)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getOrCreateUserStateLocked(IZZ)Lcom/android/server/print/UserState; +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->handleUserUnlocked(I)V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->registerBroadcastReceivers()V +PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->registerContentObservers()V +PLcom/android/server/print/PrintManagerService;->(Landroid/content/Context;)V +PLcom/android/server/print/PrintManagerService;->onStart()V +PLcom/android/server/print/PrintManagerService;->onUnlockUser(I)V +PLcom/android/server/print/RemotePrintService$MyHandler;->(Lcom/android/server/print/RemotePrintService;Landroid/os/Looper;)V +PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->(Lcom/android/server/print/RemotePrintService;)V +PLcom/android/server/print/RemotePrintService$RemoteServiceConneciton;->(Lcom/android/server/print/RemotePrintService;)V +PLcom/android/server/print/RemotePrintService$RemoteServiceConneciton;->(Lcom/android/server/print/RemotePrintService;Lcom/android/server/print/RemotePrintService$RemoteServiceConneciton;)V +PLcom/android/server/print/RemotePrintService;->(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/print/RemotePrintSpooler;Lcom/android/server/print/RemotePrintService$PrintServiceCallbacks;)V +PLcom/android/server/print/RemotePrintService;->getComponentName()Landroid/content/ComponentName; +PLcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks;->()V +PLcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks;->(Lcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks;)V +PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;)V +PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller;)V +PLcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;)V +PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;)V +PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;->(Lcom/android/server/print/RemotePrintSpooler;)V +PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;->(Lcom/android/server/print/RemotePrintSpooler;Lcom/android/server/print/RemotePrintSpooler$MyServiceConnection;)V +PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller;)V +PLcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->(Lcom/android/server/print/RemotePrintSpooler;)V +PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->onAllPrintJobsHandled()V +PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;)V +PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;->()V +PLcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller$1;->(Lcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller;)V +PLcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller;->()V +PLcom/android/server/print/RemotePrintSpooler;->-get1(Lcom/android/server/print/RemotePrintSpooler;)Ljava/lang/Object; +PLcom/android/server/print/RemotePrintSpooler;->-set0(Lcom/android/server/print/RemotePrintSpooler;Landroid/print/IPrintSpooler;)Landroid/print/IPrintSpooler; +PLcom/android/server/print/RemotePrintSpooler;->-wrap1(Lcom/android/server/print/RemotePrintSpooler;)V +PLcom/android/server/print/RemotePrintSpooler;->-wrap3(Lcom/android/server/print/RemotePrintSpooler;)V +PLcom/android/server/print/RemotePrintSpooler;->(Landroid/content/Context;IZLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;)V +PLcom/android/server/print/RemotePrintSpooler;->bindLocked()V +PLcom/android/server/print/RemotePrintSpooler;->clearClientLocked()V +PLcom/android/server/print/RemotePrintSpooler;->getRemoteInstanceLazy()Landroid/print/IPrintSpooler; +PLcom/android/server/print/RemotePrintSpooler;->increasePriority()V +PLcom/android/server/print/RemotePrintSpooler;->onAllPrintJobsHandled()V +PLcom/android/server/print/RemotePrintSpooler;->pruneApprovedPrintServices(Ljava/util/List;)V +PLcom/android/server/print/RemotePrintSpooler;->removeObsoletePrintJobs()V +PLcom/android/server/print/RemotePrintSpooler;->setClientLocked()V +PLcom/android/server/print/RemotePrintSpooler;->throwIfCalledOnMainThread()V +PLcom/android/server/print/RemotePrintSpooler;->throwIfDestroyedLocked()V +PLcom/android/server/print/RemotePrintSpooler;->unbindLocked()V +PLcom/android/server/print/UserState$PrintJobForAppCache;->(Lcom/android/server/print/UserState;)V +PLcom/android/server/print/UserState$PrintJobForAppCache;->(Lcom/android/server/print/UserState;Lcom/android/server/print/UserState$PrintJobForAppCache;)V +PLcom/android/server/print/UserState$UserStateHandler;->(Lcom/android/server/print/UserState;Landroid/os/Looper;)V +PLcom/android/server/print/UserState$UserStateHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/print/UserState;->-wrap3(Lcom/android/server/print/UserState;)V +PLcom/android/server/print/UserState;->(Landroid/content/Context;ILjava/lang/Object;Z)V +PLcom/android/server/print/UserState;->addServiceLocked(Lcom/android/server/print/RemotePrintService;)V +PLcom/android/server/print/UserState;->getInstalledComponents()Ljava/util/ArrayList; +PLcom/android/server/print/UserState;->handleDispatchPrintServicesChanged()V +PLcom/android/server/print/UserState;->increasePriority()V +PLcom/android/server/print/UserState;->onConfigurationChangedLocked()V +PLcom/android/server/print/UserState;->onPrintServicesChanged()V +PLcom/android/server/print/UserState;->prunePrintServices()V +PLcom/android/server/print/UserState;->readConfigurationLocked()V +PLcom/android/server/print/UserState;->readDisabledPrintServicesLocked()V +PLcom/android/server/print/UserState;->readInstalledPrintServicesLocked()V +PLcom/android/server/print/UserState;->readPrintServicesFromSettingLocked(Ljava/lang/String;Ljava/util/Set;)V +PLcom/android/server/print/UserState;->removeObsoletePrintJobs()V +PLcom/android/server/print/UserState;->throwIfDestroyedLocked()V +PLcom/android/server/print/UserState;->updateIfNeededLocked()V +PLcom/android/server/print/UserState;->upgradePersistentStateIfNeeded()V +PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->(Lcom/android/server/restrictions/RestrictionsManagerService;Landroid/content/Context;)V +PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle; +PLcom/android/server/restrictions/RestrictionsManagerService;->-wrap0(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder; +PLcom/android/server/restrictions/RestrictionsManagerService;->(Landroid/content/Context;)V +PLcom/android/server/restrictions/RestrictionsManagerService;->onStart()V +PLcom/android/server/search/SearchManagerService$GlobalSearchProviderObserver;->(Lcom/android/server/search/SearchManagerService;Landroid/content/ContentResolver;)V +PLcom/android/server/search/SearchManagerService$Lifecycle$1;->(Lcom/android/server/search/SearchManagerService$Lifecycle;I)V +PLcom/android/server/search/SearchManagerService$Lifecycle$1;->run()V +PLcom/android/server/search/SearchManagerService$Lifecycle;->-get0(Lcom/android/server/search/SearchManagerService$Lifecycle;)Lcom/android/server/search/SearchManagerService; +PLcom/android/server/search/SearchManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/search/SearchManagerService$Lifecycle;->onStart()V +PLcom/android/server/search/SearchManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->(Lcom/android/server/search/SearchManagerService;)V +PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onSomePackagesChanged()V +PLcom/android/server/search/SearchManagerService;->-get0(Lcom/android/server/search/SearchManagerService;)Landroid/content/Context; +PLcom/android/server/search/SearchManagerService;->-get1(Lcom/android/server/search/SearchManagerService;)Landroid/util/SparseArray; +PLcom/android/server/search/SearchManagerService;->-wrap1(Lcom/android/server/search/SearchManagerService;I)V +PLcom/android/server/search/SearchManagerService;->(Landroid/content/Context;)V +PLcom/android/server/search/SearchManagerService;->getSearchables(IZ)Lcom/android/server/search/Searchables; +PLcom/android/server/search/SearchManagerService;->onUnlockUser(I)V +PLcom/android/server/search/Searchables$1;->()V +PLcom/android/server/search/Searchables;->(Landroid/content/Context;I)V +PLcom/android/server/search/Searchables;->findGlobalSearchActivities()Ljava/util/List; +PLcom/android/server/search/Searchables;->findGlobalSearchActivity(Ljava/util/List;)Landroid/content/ComponentName; +PLcom/android/server/search/Searchables;->getDefaultGlobalSearchProvider(Ljava/util/List;)Landroid/content/ComponentName; +PLcom/android/server/search/Searchables;->getGlobalSearchProviderSetting()Ljava/lang/String; +PLcom/android/server/security/KeyAttestationApplicationIdProviderService;->(Landroid/content/Context;)V +PLcom/android/server/security/KeyChainSystemService$1;->(Lcom/android/server/security/KeyChainSystemService;)V +PLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/security/KeyChainSystemService;->-wrap0(Lcom/android/server/security/KeyChainSystemService;Landroid/content/Intent;Landroid/os/UserHandle;)V +PLcom/android/server/security/KeyChainSystemService;->(Landroid/content/Context;)V +PLcom/android/server/security/KeyChainSystemService;->onStart()V +PLcom/android/server/security/KeyChainSystemService;->startServiceInBackgroundAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V +PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->(Landroid/content/Context;)V +PLcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;->(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V +PLcom/android/server/soundtrigger/SoundTriggerHelper;->(Landroid/content/Context;)V +PLcom/android/server/soundtrigger/SoundTriggerHelper;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +PLcom/android/server/soundtrigger/SoundTriggerInternal;->()V +PLcom/android/server/soundtrigger/SoundTriggerService$1;->(Lcom/android/server/soundtrigger/SoundTriggerService;)V +PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/content/Context;)V +PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->isInitialized()Z +PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->setSoundTriggerHelper(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V +PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->(Lcom/android/server/soundtrigger/SoundTriggerService;)V +PLcom/android/server/soundtrigger/SoundTriggerService;->(Landroid/content/Context;)V +PLcom/android/server/soundtrigger/SoundTriggerService;->initSoundTriggerHelper()V +PLcom/android/server/soundtrigger/SoundTriggerService;->onBootPhase(I)V +PLcom/android/server/soundtrigger/SoundTriggerService;->onStart()V +PLcom/android/server/soundtrigger/SoundTriggerService;->onStartUser(I)V +PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;->$m$0()V +PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;->(Ljava/lang/Object;)V +PLcom/android/server/statusbar/-$Lambda$-TUoAzP8agiJJX9P4eGDtNXdVZ4$1;->run()V +PLcom/android/server/statusbar/StatusBarManagerService$1;->(Lcom/android/server/statusbar/StatusBarManagerService;)V +PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionCancelled()V +PLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V +PLcom/android/server/statusbar/StatusBarManagerService$1;->setWindowState(II)V +PLcom/android/server/statusbar/StatusBarManagerService$2;->(Lcom/android/server/statusbar/StatusBarManagerService;I)V +PLcom/android/server/statusbar/StatusBarManagerService$2;->run()V +PLcom/android/server/statusbar/StatusBarManagerService$6;->(Lcom/android/server/statusbar/StatusBarManagerService;)V +PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->(Lcom/android/server/statusbar/StatusBarManagerService;)V +PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$DisableRecord;)V +PLcom/android/server/statusbar/StatusBarManagerService;->-get3(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/notification/NotificationDelegate; +PLcom/android/server/statusbar/StatusBarManagerService;->-set3(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)Lcom/android/server/notification/NotificationDelegate; +PLcom/android/server/statusbar/StatusBarManagerService;->(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/statusbar/StatusBarManagerService;->clearNotificationEffects()V +PLcom/android/server/statusbar/StatusBarManagerService;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/statusbar/StatusBarManagerService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V +PLcom/android/server/statusbar/StatusBarManagerService;->enforceExpandStatusBar()V +PLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(I)V +PLcom/android/server/statusbar/StatusBarManagerService;->lambda$-com_android_server_statusbar_StatusBarManagerService_24751()V +PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V +PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V +PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V +PLcom/android/server/statusbar/StatusBarManagerService;->onPanelHidden()V +PLcom/android/server/statusbar/StatusBarManagerService;->onPanelRevealed(ZI)V +PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V +PLcom/android/server/storage/CacheQuotaStrategy$1$1;->(Lcom/android/server/storage/CacheQuotaStrategy$1;Landroid/os/IBinder;)V +PLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V +PLcom/android/server/storage/CacheQuotaStrategy$1;->(Lcom/android/server/storage/CacheQuotaStrategy;)V +PLcom/android/server/storage/CacheQuotaStrategy$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/storage/CacheQuotaStrategy;->-get0(Lcom/android/server/storage/CacheQuotaStrategy;)Ljava/lang/Object; +PLcom/android/server/storage/CacheQuotaStrategy;->-get1(Lcom/android/server/storage/CacheQuotaStrategy;)Landroid/app/usage/ICacheQuotaService; +PLcom/android/server/storage/CacheQuotaStrategy;->-set0(Lcom/android/server/storage/CacheQuotaStrategy;Landroid/app/usage/ICacheQuotaService;)Landroid/app/usage/ICacheQuotaService; +PLcom/android/server/storage/CacheQuotaStrategy;->-wrap0(Lcom/android/server/storage/CacheQuotaStrategy;)Ljava/util/List; +PLcom/android/server/storage/CacheQuotaStrategy;->(Landroid/content/Context;Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/pm/Installer;Landroid/util/ArrayMap;)V +PLcom/android/server/storage/CacheQuotaStrategy;->createServiceConnection()V +PLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V +PLcom/android/server/storage/CacheQuotaStrategy;->getRequestFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/usage/CacheQuotaHint; +PLcom/android/server/storage/CacheQuotaStrategy;->getServiceComponentName()Landroid/content/ComponentName; +PLcom/android/server/storage/CacheQuotaStrategy;->insertIntoQuotaMap(Ljava/lang/String;IIJ)V +PLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V +PLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair; +PLcom/android/server/storage/CacheQuotaStrategy;->recalculateQuotas()V +PLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;J)V +PLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J +PLcom/android/server/storage/CacheQuotaStrategy;->writeXmlToFile(Ljava/util/List;)V +PLcom/android/server/storage/DeviceStorageMonitorService$1;->(Lcom/android/server/storage/DeviceStorageMonitorService;)V +PLcom/android/server/storage/DeviceStorageMonitorService$1;->getMemoryLowThreshold()J +PLcom/android/server/storage/DeviceStorageMonitorService$1;->isMemoryLow()Z +PLcom/android/server/storage/DeviceStorageMonitorService$2;->(Lcom/android/server/storage/DeviceStorageMonitorService;)V +PLcom/android/server/storage/DeviceStorageMonitorService$3;->(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V +PLcom/android/server/storage/DeviceStorageMonitorService$3;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;->()V +PLcom/android/server/storage/DeviceStorageMonitorService$State;->()V +PLcom/android/server/storage/DeviceStorageMonitorService$State;->(Lcom/android/server/storage/DeviceStorageMonitorService$State;)V +PLcom/android/server/storage/DeviceStorageMonitorService;->-wrap0(Lcom/android/server/storage/DeviceStorageMonitorService;)V +PLcom/android/server/storage/DeviceStorageMonitorService;->(Landroid/content/Context;)V +PLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State; +PLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V +PLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V +PLcom/android/server/telecom/TelecomLoaderService$1;->(Lcom/android/server/telecom/TelecomLoaderService;)V +PLcom/android/server/telecom/TelecomLoaderService$2;->(Lcom/android/server/telecom/TelecomLoaderService;)V +PLcom/android/server/telecom/TelecomLoaderService$3;->(Lcom/android/server/telecom/TelecomLoaderService;)V +PLcom/android/server/telecom/TelecomLoaderService$4;->(Lcom/android/server/telecom/TelecomLoaderService;Landroid/os/Handler;Landroid/net/Uri;Landroid/content/pm/PackageManagerInternal;Landroid/net/Uri;)V +PLcom/android/server/telecom/TelecomLoaderService$5;->(Lcom/android/server/telecom/TelecomLoaderService;Landroid/content/pm/PackageManagerInternal;)V +PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1;->(Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V +PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->(Lcom/android/server/telecom/TelecomLoaderService;)V +PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V +PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/telecom/TelecomLoaderService;->-get0(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/content/Context; +PLcom/android/server/telecom/TelecomLoaderService;->-get1(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray; +PLcom/android/server/telecom/TelecomLoaderService;->-get2(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray; +PLcom/android/server/telecom/TelecomLoaderService;->-get3(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray; +PLcom/android/server/telecom/TelecomLoaderService;->-get4(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object; +PLcom/android/server/telecom/TelecomLoaderService;->(Landroid/content/Context;)V +PLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V +PLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V +PLcom/android/server/telecom/TelecomLoaderService;->onStart()V +PLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V +PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V +PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V +PLcom/android/server/timezone/IntentHelperImpl$Receiver;->(Lcom/android/server/timezone/IntentHelper$Listener;Z)V +PLcom/android/server/timezone/IntentHelperImpl$Receiver;->(Lcom/android/server/timezone/IntentHelper$Listener;ZLcom/android/server/timezone/IntentHelperImpl$Receiver;)V +PLcom/android/server/timezone/IntentHelperImpl;->(Landroid/content/Context;)V +PLcom/android/server/timezone/IntentHelperImpl;->enableReliabilityTriggering()V +PLcom/android/server/timezone/IntentHelperImpl;->initialize(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/timezone/IntentHelper$Listener;)V +PLcom/android/server/timezone/PackageStatusStorage;->(Ljava/io/File;)V +PLcom/android/server/timezone/PackageTracker;->(Lcom/android/server/timezone/ClockHelper;Lcom/android/server/timezone/ConfigHelper;Lcom/android/server/timezone/PackageManagerHelper;Lcom/android/server/timezone/PackageStatusStorage;Lcom/android/server/timezone/IntentHelper;)V +PLcom/android/server/timezone/PackageTracker;->create(Landroid/content/Context;)Lcom/android/server/timezone/PackageTracker; +PLcom/android/server/timezone/PackageTracker;->start()V +PLcom/android/server/timezone/PackageTracker;->throwIfDeviceSettingsOrAppsAreBad()V +PLcom/android/server/timezone/PackageTracker;->throwRuntimeExceptionIfNullOrEmpty(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/timezone/PackageTrackerHelperImpl;->(Landroid/content/Context;)V +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getCheckTimeAllowedMillis()I +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getDataAppPackageName()Ljava/lang/String; +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getFailedCheckRetryCount()I +PLcom/android/server/timezone/PackageTrackerHelperImpl;->getUpdateAppPackageName()Ljava/lang/String; +PLcom/android/server/timezone/PackageTrackerHelperImpl;->isPrivilegedApp(Ljava/lang/String;)Z +PLcom/android/server/timezone/PackageTrackerHelperImpl;->isTrackingEnabled()Z +PLcom/android/server/timezone/RulesManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/timezone/RulesManagerService$Lifecycle;->onStart()V +PLcom/android/server/timezone/RulesManagerService;->-wrap0(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService; +PLcom/android/server/timezone/RulesManagerService;->(Lcom/android/server/timezone/PermissionHelper;Ljava/util/concurrent/Executor;Lcom/android/server/timezone/PackageTracker;Lcom/android/timezone/distro/installer/TimeZoneDistroInstaller;)V +PLcom/android/server/timezone/RulesManagerService;->create(Landroid/content/Context;)Lcom/android/server/timezone/RulesManagerService; +PLcom/android/server/timezone/RulesManagerService;->start()V +PLcom/android/server/timezone/RulesManagerServiceHelperImpl;->(Landroid/content/Context;)V +PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->$m$0()V +PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->()V +PLcom/android/server/trust/-$Lambda$RuWUhZ3VT8Cf-F-WFFkHRfck9sI;->run()V +PLcom/android/server/trust/TrustArchive;->()V +PLcom/android/server/trust/TrustManagerService$1;->(Lcom/android/server/trust/TrustManagerService;)V +PLcom/android/server/trust/TrustManagerService$1;->clearAllFingerprints()V +PLcom/android/server/trust/TrustManagerService$1;->enforceListenerPermission()V +PLcom/android/server/trust/TrustManagerService$1;->enforceReportPermission()V +PLcom/android/server/trust/TrustManagerService$1;->isTrustUsuallyManaged(I)Z +PLcom/android/server/trust/TrustManagerService$1;->lambda$-com_android_server_trust_TrustManagerService$1_33892()V +PLcom/android/server/trust/TrustManagerService$1;->registerTrustListener(Landroid/app/trust/ITrustListener;)V +PLcom/android/server/trust/TrustManagerService$1;->reportEnabledTrustAgentsChanged(I)V +PLcom/android/server/trust/TrustManagerService$1;->reportKeyguardShowingChanged()V +PLcom/android/server/trust/TrustManagerService$2;->(Lcom/android/server/trust/TrustManagerService;)V +PLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/trust/TrustManagerService$3;->(Lcom/android/server/trust/TrustManagerService;)V +PLcom/android/server/trust/TrustManagerService$3;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z +PLcom/android/server/trust/TrustManagerService$3;->onPackageDisappeared(Ljava/lang/String;I)V +PLcom/android/server/trust/TrustManagerService$3;->onSomePackagesChanged()V +PLcom/android/server/trust/TrustManagerService$Receiver;->(Lcom/android/server/trust/TrustManagerService;)V +PLcom/android/server/trust/TrustManagerService$Receiver;->(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$Receiver;)V +PLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V +PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;)V +PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V +PLcom/android/server/trust/TrustManagerService;->-get1(Lcom/android/server/trust/TrustManagerService;)Landroid/content/Context; +PLcom/android/server/trust/TrustManagerService;->-get11(Lcom/android/server/trust/TrustManagerService;)Landroid/util/SparseBooleanArray; +PLcom/android/server/trust/TrustManagerService;->-get2(Lcom/android/server/trust/TrustManagerService;)I +PLcom/android/server/trust/TrustManagerService;->-get4(Lcom/android/server/trust/TrustManagerService;)Landroid/os/Handler; +PLcom/android/server/trust/TrustManagerService;->-get5(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils; +PLcom/android/server/trust/TrustManagerService;->-wrap2(Lcom/android/server/trust/TrustManagerService;I)Z +PLcom/android/server/trust/TrustManagerService;->-wrap4(Lcom/android/server/trust/TrustManagerService;Landroid/app/trust/ITrustListener;)V +PLcom/android/server/trust/TrustManagerService;->-wrap8(Lcom/android/server/trust/TrustManagerService;I)V +PLcom/android/server/trust/TrustManagerService;->-wrap9(Lcom/android/server/trust/TrustManagerService;Ljava/lang/String;)V +PLcom/android/server/trust/TrustManagerService;->(Landroid/content/Context;)V +PLcom/android/server/trust/TrustManagerService;->addListener(Landroid/app/trust/ITrustListener;)V +PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z +PLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z +PLcom/android/server/trust/TrustManagerService;->dispatchDeviceLocked(IZ)V +PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZII)V +PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V +PLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z +PLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z +PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(Lcom/android/internal/widget/LockPatternUtils;I)V +PLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V +PLcom/android/server/trust/TrustManagerService;->onStart()V +PLcom/android/server/trust/TrustManagerService;->onStartUser(I)V +PLcom/android/server/trust/TrustManagerService;->onUnlockUser(I)V +PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V +PLcom/android/server/trust/TrustManagerService;->removeAgentsOfPackage(Ljava/lang/String;)V +PLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V +PLcom/android/server/trust/TrustManagerService;->updateDevicePolicyFeatures()V +PLcom/android/server/trust/TrustManagerService;->updateTrust(II)V +PLcom/android/server/trust/TrustManagerService;->updateTrustAll()V +PLcom/android/server/twilight/TwilightService$1;->(Lcom/android/server/twilight/TwilightService;)V +PLcom/android/server/twilight/TwilightService$1;->getLastTwilightState()Lcom/android/server/twilight/TwilightState; +PLcom/android/server/twilight/TwilightService;->(Landroid/content/Context;)V +PLcom/android/server/twilight/TwilightService;->onBootPhase(I)V +PLcom/android/server/twilight/TwilightService;->onStart()V +PLcom/android/server/usage/AppIdleHistory;->(J)V +PLcom/android/server/usage/AppIdleHistory;->(Ljava/io/File;J)V +PLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J +PLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File; +PLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File; +PLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V +PLcom/android/server/usage/AppIdleHistory;->setIdle(Ljava/lang/String;IZJ)V +PLcom/android/server/usage/AppIdleHistory;->setThresholds(JJ)V +PLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V +PLcom/android/server/usage/AppIdleHistory;->writeAppIdleDurations()V +PLcom/android/server/usage/AppIdleHistory;->writeScreenOnTime()V +PLcom/android/server/usage/IntervalStats;->()V +PLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats; +PLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V +PLcom/android/server/usage/StorageStatsService$1;->(Lcom/android/server/usage/StorageStatsService;)V +PLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V +PLcom/android/server/usage/StorageStatsService$H;->(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V +PLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy; +PLcom/android/server/usage/StorageStatsService$H;->recalculateQuotas(Lcom/android/server/storage/CacheQuotaStrategy;)V +PLcom/android/server/usage/StorageStatsService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V +PLcom/android/server/usage/StorageStatsService;->-get0(Lcom/android/server/usage/StorageStatsService;)Landroid/util/ArrayMap; +PLcom/android/server/usage/StorageStatsService;->-get1(Lcom/android/server/usage/StorageStatsService;)Landroid/content/Context; +PLcom/android/server/usage/StorageStatsService;->-get2(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer; +PLcom/android/server/usage/StorageStatsService;->-wrap0(Lcom/android/server/usage/StorageStatsService;)V +PLcom/android/server/usage/StorageStatsService;->(Landroid/content/Context;)V +PLcom/android/server/usage/StorageStatsService;->getDefaultFlags()I +PLcom/android/server/usage/StorageStatsService;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J +PLcom/android/server/usage/StorageStatsService;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J +PLcom/android/server/usage/StorageStatsService;->invalidateMounts()V +PLcom/android/server/usage/StorageStatsService;->notifySignificantDelta()V +PLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats; +PLcom/android/server/usage/UnixCalendar;->(J)V +PLcom/android/server/usage/UnixCalendar;->addDays(I)V +PLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V +PLcom/android/server/usage/UsageStatsDatabase$1;->(Lcom/android/server/usage/UsageStatsDatabase;)V +PLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z +PLcom/android/server/usage/UsageStatsDatabase;->(Ljava/io/File;)V +PLcom/android/server/usage/UsageStatsDatabase;->checkVersionAndBuildLocked()V +PLcom/android/server/usage/UsageStatsDatabase;->findBestFitBucket(JJ)I +PLcom/android/server/usage/UsageStatsDatabase;->getBuildFingerprint()Ljava/lang/String; +PLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/android/server/usage/IntervalStats; +PLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V +PLcom/android/server/usage/UsageStatsDatabase;->init(J)V +PLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z +PLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List; +PLcom/android/server/usage/UsageStatsService$1;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$1;->onDisplayChanged(I)V +PLcom/android/server/usage/UsageStatsService$2;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$2;->onUidGone(IZ)V +PLcom/android/server/usage/UsageStatsService$BinderService;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$BinderService;->(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$BinderService;)V +PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$DeviceStateReceiver;->(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$DeviceStateReceiver;)V +PLcom/android/server/usage/UsageStatsService$H;->(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V +PLcom/android/server/usage/UsageStatsService$LocalService;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$LocalService;->(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$LocalService;)V +PLcom/android/server/usage/UsageStatsService$LocalService;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V +PLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I)[I +PLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdleParoleOn()Z +PLcom/android/server/usage/UsageStatsService$LocalService;->queryUsageStatsForUser(IIJJZ)Ljava/util/List; +PLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V +PLcom/android/server/usage/UsageStatsService$LocalService;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V +PLcom/android/server/usage/UsageStatsService$PackageReceiver;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$PackageReceiver;->(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$PackageReceiver;)V +PLcom/android/server/usage/UsageStatsService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/usage/UsageStatsService$SettingsObserver;->(Lcom/android/server/usage/UsageStatsService;Landroid/os/Handler;)V +PLcom/android/server/usage/UsageStatsService$SettingsObserver;->registerObserver()V +PLcom/android/server/usage/UsageStatsService$SettingsObserver;->updateSettings()V +PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->(Lcom/android/server/usage/UsageStatsService;)V +PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UserActionsReceiver;)V +PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/usage/UsageStatsService;->-get1(Lcom/android/server/usage/UsageStatsService;)Lcom/android/server/usage/AppIdleHistory; +PLcom/android/server/usage/UsageStatsService;->-get2(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object; +PLcom/android/server/usage/UsageStatsService;->-wrap1(Lcom/android/server/usage/UsageStatsService;)Z +PLcom/android/server/usage/UsageStatsService;->(Landroid/content/Context;)V +PLcom/android/server/usage/UsageStatsService;->addListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V +PLcom/android/server/usage/UsageStatsService;->cleanUpRemovedUsersLocked()V +PLcom/android/server/usage/UsageStatsService;->clearCarrierPrivilegedApps()V +PLcom/android/server/usage/UsageStatsService;->fetchCarrierPrivilegedAppsLA()V +PLcom/android/server/usage/UsageStatsService;->flushToDisk()V +PLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V +PLcom/android/server/usage/UsageStatsService;->informParoleStateChanged()V +PLcom/android/server/usage/UsageStatsService;->isCarrierApp(Ljava/lang/String;)Z +PLcom/android/server/usage/UsageStatsService;->isDisplayOn()Z +PLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V +PLcom/android/server/usage/UsageStatsService;->onStart()V +PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V +PLcom/android/server/usage/UsageStatsService;->postCheckIdleStates(I)V +PLcom/android/server/usage/UsageStatsService;->postParoleStateChanged()V +PLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List; +PLcom/android/server/usage/UsageStatsService;->setAppIdleAsync(Ljava/lang/String;ZI)V +PLcom/android/server/usage/UsageStatsService;->setChargingState(Z)V +PLcom/android/server/usage/UsageStatsService;->validRange(JJJ)Z +PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Landroid/util/AtomicFile;)J +PLcom/android/server/usage/UsageStatsXml;->parseBeginTime(Ljava/io/File;)J +PLcom/android/server/usage/UsageStatsXml;->read(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXml;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXml;->write(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXml;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UsageStatsXmlV1;->loadConfigStats(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/IntervalStats;)V +PLcom/android/server/usage/UserUsageStatsService$1;->()V +PLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V +PLcom/android/server/usage/UserUsageStatsService$2;->()V +PLcom/android/server/usage/UserUsageStatsService;->(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V +PLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V +PLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List; +PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->$m$0()V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/usb/-$Lambda$A9zkc-u4LaET6cVKd0uc6IuE4_s;->run()V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->$m$0()V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->(BLjava/lang/Object;)V +PLcom/android/server/usb/-$Lambda$ATEm4_U2eaRn21cN0eCfdiUt5-k;->run()V +PLcom/android/server/usb/-$Lambda$FKfu8uuaZxaSOkvg1oeLD5zHuwk;->(Ljava/lang/Object;)V +PLcom/android/server/usb/MtpNotificationManager$Receiver;->(Lcom/android/server/usb/MtpNotificationManager;)V +PLcom/android/server/usb/MtpNotificationManager$Receiver;->(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$Receiver;)V +PLcom/android/server/usb/MtpNotificationManager;->(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V +PLcom/android/server/usb/UsbAlsaManager$1;->(Lcom/android/server/usb/UsbAlsaManager;Ljava/lang/String;I)V +PLcom/android/server/usb/UsbAlsaManager$AlsaDevice;->(Lcom/android/server/usb/UsbAlsaManager;III)V +PLcom/android/server/usb/UsbAlsaManager;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;->(Lcom/android/server/usb/UsbDebuggingManager;Landroid/os/Looper;)V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;->(Lcom/android/server/usb/UsbDebuggingManager;)V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;->listenToSocket()V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;->openSocketLocked()V +PLcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;->run()V +PLcom/android/server/usb/UsbDebuggingManager;->-get0(Lcom/android/server/usb/UsbDebuggingManager;)Z +PLcom/android/server/usb/UsbDebuggingManager;->-get3(Lcom/android/server/usb/UsbDebuggingManager;)Lcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread; +PLcom/android/server/usb/UsbDebuggingManager;->-set0(Lcom/android/server/usb/UsbDebuggingManager;Z)Z +PLcom/android/server/usb/UsbDebuggingManager;->-set2(Lcom/android/server/usb/UsbDebuggingManager;Lcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread;)Lcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread; +PLcom/android/server/usb/UsbDebuggingManager;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbDebuggingManager;->setAdbEnabled(Z)V +PLcom/android/server/usb/UsbDeviceManager$1;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$1;->onUEvent(Landroid/os/UEventObserver$UEvent;)V +PLcom/android/server/usb/UsbDeviceManager$2;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/usb/UsbDeviceManager$3;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$4;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$5;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$AdbSettingsObserver;->(Lcom/android/server/usb/UsbDeviceManager;)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->(Lcom/android/server/usb/UsbDeviceManager;Landroid/os/Looper;)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->applyAdbFunction(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getDefaultFunctions()Ljava/lang/String; +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isNormalBoot()Z +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setEnabledFunctions(Ljava/lang/String;ZZ)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->trySetEnabledFunctions(Ljava/lang/String;Z)Z +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAudioSourceFunction()V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateHostState(Landroid/hardware/usb/UsbPort;Landroid/hardware/usb/UsbPortStatus;)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V +PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(Z)V +PLcom/android/server/usb/UsbDeviceManager;->-get1(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get10(Lcom/android/server/usb/UsbDeviceManager;)I +PLcom/android/server/usb/UsbDeviceManager;->-get11(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get12(Lcom/android/server/usb/UsbDeviceManager;)Landroid/app/NotificationManager; +PLcom/android/server/usb/UsbDeviceManager;->-get13(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get15(Lcom/android/server/usb/UsbDeviceManager;)Landroid/os/UEventObserver; +PLcom/android/server/usb/UsbDeviceManager;->-get16(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbAlsaManager; +PLcom/android/server/usb/UsbDeviceManager;->-get17(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get2(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get3(Lcom/android/server/usb/UsbDeviceManager;)Z +PLcom/android/server/usb/UsbDeviceManager;->-get4(Lcom/android/server/usb/UsbDeviceManager;)Landroid/content/Intent; +PLcom/android/server/usb/UsbDeviceManager;->-get5(Lcom/android/server/usb/UsbDeviceManager;)Landroid/content/ContentResolver; +PLcom/android/server/usb/UsbDeviceManager;->-get6(Lcom/android/server/usb/UsbDeviceManager;)Landroid/content/Context; +PLcom/android/server/usb/UsbDeviceManager;->-get7(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbDebuggingManager; +PLcom/android/server/usb/UsbDeviceManager;->-get8(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbDeviceManager$UsbHandler; +PLcom/android/server/usb/UsbDeviceManager;->-get9(Lcom/android/server/usb/UsbDeviceManager;)I +PLcom/android/server/usb/UsbDeviceManager;->-set1(Lcom/android/server/usb/UsbDeviceManager;Z)Z +PLcom/android/server/usb/UsbDeviceManager;->-set3(Lcom/android/server/usb/UsbDeviceManager;Z)Z +PLcom/android/server/usb/UsbDeviceManager;->-set4(Lcom/android/server/usb/UsbDeviceManager;Landroid/content/Intent;)Landroid/content/Intent; +PLcom/android/server/usb/UsbDeviceManager;->-set8(Lcom/android/server/usb/UsbDeviceManager;Z)Z +PLcom/android/server/usb/UsbDeviceManager;->-wrap1(Lcom/android/server/usb/UsbDeviceManager;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/usb/UsbDeviceManager;->(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V +PLcom/android/server/usb/UsbDeviceManager;->applyOemOverrideFunction(Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/usb/UsbDeviceManager;->bootCompleted()V +PLcom/android/server/usb/UsbDeviceManager;->getPersistProp(Z)Ljava/lang/String; +PLcom/android/server/usb/UsbDeviceManager;->initRndisAddress()V +PLcom/android/server/usb/UsbDeviceManager;->isTv()Z +PLcom/android/server/usb/UsbDeviceManager;->readOemUsbOverrideConfig()V +PLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V +PLcom/android/server/usb/UsbDeviceManager;->systemReady()V +PLcom/android/server/usb/UsbDeviceManager;->updateUserRestrictions()V +PLcom/android/server/usb/UsbHostManager;->-com_android_server_usb_UsbHostManager-mthref-0()V +PLcom/android/server/usb/UsbHostManager;->(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V +PLcom/android/server/usb/UsbHostManager;->getDeviceList(Landroid/os/Bundle;)V +PLcom/android/server/usb/UsbHostManager;->setCurrentUserSettings(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V +PLcom/android/server/usb/UsbHostManager;->setUsbDeviceConnectionHandler(Landroid/content/ComponentName;)V +PLcom/android/server/usb/UsbHostManager;->systemReady()V +PLcom/android/server/usb/UsbPortManager$1;->(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V +PLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/usb/UsbPortManager$DeathRecipient;->(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager$HALCallback;->(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usb/UsbPortManager;)V +PLcom/android/server/usb/UsbPortManager$HALCallback;->notifyPortStatusChange_1_1(Ljava/util/ArrayList;I)V +PLcom/android/server/usb/UsbPortManager$PortInfo;->(Ljava/lang/String;I)V +PLcom/android/server/usb/UsbPortManager$PortInfo;->setStatus(IZIZIZI)Z +PLcom/android/server/usb/UsbPortManager$PortInfo;->toString()Ljava/lang/String; +PLcom/android/server/usb/UsbPortManager$RawPortInfo$1;->()V +PLcom/android/server/usb/UsbPortManager$RawPortInfo;->(Ljava/lang/String;IIZIZIZ)V +PLcom/android/server/usb/UsbPortManager$ServiceNotification;->(Lcom/android/server/usb/UsbPortManager;)V +PLcom/android/server/usb/UsbPortManager$ServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/usb/UsbPortManager;->-get0(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler; +PLcom/android/server/usb/UsbPortManager;->-get1(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object; +PLcom/android/server/usb/UsbPortManager;->-get2(Lcom/android/server/usb/UsbPortManager;)Z +PLcom/android/server/usb/UsbPortManager;->-wrap0(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->-wrap1(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V +PLcom/android/server/usb/UsbPortManager;->-wrap2(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V +PLcom/android/server/usb/UsbPortManager;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbPortManager;->addOrUpdatePortLocked(Ljava/lang/String;IIZIZIZLcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->connectToProxy(Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->handlePortAddedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->handlePortChangedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V +PLcom/android/server/usb/UsbPortManager;->lambda$-com_android_server_usb_UsbPortManager_30586(Landroid/content/Intent;)V +PLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V +PLcom/android/server/usb/UsbPortManager;->sendPortChangedBroadcastLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;)V +PLcom/android/server/usb/UsbPortManager;->systemReady()V +PLcom/android/server/usb/UsbPortManager;->updatePortsLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V +PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V +PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;)V +PLcom/android/server/usb/UsbProfileGroupSettingsManager;->(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;)V +PLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V +PLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V +PLcom/android/server/usb/UsbService$1;->(Lcom/android/server/usb/UsbService;)V +PLcom/android/server/usb/UsbService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/usb/UsbService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/usb/UsbService$Lifecycle;->onStart()V +PLcom/android/server/usb/UsbService;->-get0(Lcom/android/server/usb/UsbService;)Lcom/android/server/usb/UsbDeviceManager; +PLcom/android/server/usb/UsbService;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbService;->bootCompleted()V +PLcom/android/server/usb/UsbService;->getDeviceList(Landroid/os/Bundle;)V +PLcom/android/server/usb/UsbService;->onSwitchUser(I)V +PLcom/android/server/usb/UsbService;->systemReady()V +PLcom/android/server/usb/UsbSettingsManager;->(Landroid/content/Context;)V +PLcom/android/server/usb/UsbSettingsManager;->getSettingsForProfileGroup(Landroid/os/UserHandle;)Lcom/android/server/usb/UsbProfileGroupSettingsManager; +PLcom/android/server/voiceinteraction/DatabaseHelper;->(Landroid/content/Context;)V +PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(IILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;->onSomePackagesChanged()V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->-get0(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)I +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->activeServiceSupportsAssist()Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->activeServiceSupportsLaunchFromKeyguard()Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceCallingPermission(Ljava/lang/String;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getActiveServiceComponentName()Landroid/content/ComponentName; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurAssistant(I)Landroid/content/ComponentName; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurInteractor(I)Landroid/content/ComponentName; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurRecognizer(I)Landroid/content/ComponentName; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getDspModuleProperties(Landroid/service/voice/IVoiceInteractionService;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getForceVoiceInteractionServicePackage(Landroid/content/res/Resources;)Ljava/lang/String; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUser(I)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->isEnrolledForKeyphrase(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;)Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onLockscreenShown()V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->unloadAllKeyphraseModels()V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-get1(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Landroid/os/RemoteCallbackList; +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->(Landroid/content/Context;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onBootPhase(I)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStart()V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStartUser(I)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUnlockUser(I)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V +PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startLocked()V +PLcom/android/server/vr/EnabledComponentsObserver$1;->(Lcom/android/server/vr/EnabledComponentsObserver;)V +PLcom/android/server/vr/EnabledComponentsObserver$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageDisappeared(Ljava/lang/String;I)V +PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/vr/EnabledComponentsObserver$1;->onSomePackagesChanged()V +PLcom/android/server/vr/EnabledComponentsObserver;->(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)V +PLcom/android/server/vr/EnabledComponentsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)Lcom/android/server/vr/EnabledComponentsObserver; +PLcom/android/server/vr/EnabledComponentsObserver;->getCurrentProfileIds()[I +PLcom/android/server/vr/EnabledComponentsObserver;->getEnabled(I)Landroid/util/ArraySet; +PLcom/android/server/vr/EnabledComponentsObserver;->isValid(Landroid/content/ComponentName;I)I +PLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesForUser(I)Landroid/util/ArraySet; +PLcom/android/server/vr/EnabledComponentsObserver;->onPackagesChanged()V +PLcom/android/server/vr/EnabledComponentsObserver;->onUsersChanged()V +PLcom/android/server/vr/SettingsObserver$1;->(Lcom/android/server/vr/SettingsObserver;Ljava/lang/String;)V +PLcom/android/server/vr/SettingsObserver$2;->(Lcom/android/server/vr/SettingsObserver;Landroid/os/Handler;Landroid/net/Uri;)V +PLcom/android/server/vr/SettingsObserver;->(Landroid/content/Context;Landroid/os/Handler;Landroid/net/Uri;Ljava/lang/String;)V +PLcom/android/server/vr/SettingsObserver;->addListener(Lcom/android/server/vr/SettingsObserver$SettingChangeListener;)V +PLcom/android/server/vr/SettingsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;)Lcom/android/server/vr/SettingsObserver; +PLcom/android/server/vr/Vr2dDisplay$1;->(Lcom/android/server/vr/Vr2dDisplay;)V +PLcom/android/server/vr/Vr2dDisplay;->(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Landroid/view/WindowManagerInternal;Landroid/service/vr/IVrManager;)V +PLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;Z)V +PLcom/android/server/vr/Vr2dDisplay;->startDebugOnlyBroadcastReceiver(Landroid/content/Context;)V +PLcom/android/server/vr/Vr2dDisplay;->startVrModeListener()V +PLcom/android/server/vr/VrManagerInternal;->()V +PLcom/android/server/vr/VrManagerService$1;->(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$2;->()V +PLcom/android/server/vr/VrManagerService$3;->(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$3;->getVrModeState()Z +PLcom/android/server/vr/VrManagerService$3;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$3;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$3;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$4;->(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/vr/VrManagerService$LocalService;->(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$LocalService;->(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$LocalService;)V +PLcom/android/server/vr/VrManagerService$LocalService;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService$LocalService;->isCurrentVrListener(Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService$LocalService;->onScreenStateChanged(Z)V +PLcom/android/server/vr/VrManagerService$LocalService;->onSleepStateChanged(Z)V +PLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +PLcom/android/server/vr/VrManagerService$NotificationAccessManager;->(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService$NotificationAccessManager;->(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$NotificationAccessManager;)V +PLcom/android/server/vr/VrManagerService;->-wrap1(Lcom/android/server/vr/VrManagerService;)Z +PLcom/android/server/vr/VrManagerService;->-wrap10(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->-wrap11(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->-wrap12(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V +PLcom/android/server/vr/VrManagerService;->-wrap14(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->-wrap19(Lcom/android/server/vr/VrManagerService;Z)V +PLcom/android/server/vr/VrManagerService;->-wrap2(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService;->-wrap20(Lcom/android/server/vr/VrManagerService;Z)V +PLcom/android/server/vr/VrManagerService;->-wrap21(Lcom/android/server/vr/VrManagerService;)V +PLcom/android/server/vr/VrManagerService;->-wrap22(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V +PLcom/android/server/vr/VrManagerService;->-wrap5(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->-wrap6(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->-wrap9(Lcom/android/server/vr/VrManagerService;[Ljava/lang/String;)V +PLcom/android/server/vr/VrManagerService;->(Landroid/content/Context;)V +PLcom/android/server/vr/VrManagerService;->addPersistentStateCallback(Landroid/service/vr/IPersistentVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->addStateCallback(Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked()V +PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked(Z)V +PLcom/android/server/vr/VrManagerService;->enforceCallerPermissionAnyOf([Ljava/lang/String;)V +PLcom/android/server/vr/VrManagerService;->getVrMode()Z +PLcom/android/server/vr/VrManagerService;->grantCoarseLocationPermissionIfNeeded(Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->grantNotificationListenerAccess(Ljava/lang/String;I)V +PLcom/android/server/vr/VrManagerService;->grantNotificationPolicyAccess(Ljava/lang/String;)V +PLcom/android/server/vr/VrManagerService;->isCurrentVrListener(Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService;->isPermissionUserUpdated(Ljava/lang/String;Ljava/lang/String;I)Z +PLcom/android/server/vr/VrManagerService;->onBootPhase(I)V +PLcom/android/server/vr/VrManagerService;->onStart()V +PLcom/android/server/vr/VrManagerService;->onStartUser(I)V +PLcom/android/server/vr/VrManagerService;->removeStateCallback(Landroid/service/vr/IVrStateCallbacks;)V +PLcom/android/server/vr/VrManagerService;->setScreenOn(Z)V +PLcom/android/server/vr/VrManagerService;->setSleepState(Z)V +PLcom/android/server/vr/VrManagerService;->setUserUnlocked()V +PLcom/android/server/vr/VrManagerService;->updateVrModeAllowedLocked()V +PLcom/android/server/wallpaper/-$Lambda$ZWcNEw3ZwVVSi_pP2mGGLvztkS0;->(BLjava/lang/Object;)V +PLcom/android/server/wallpaper/WallpaperManagerService$1;->(Lcom/android/server/wallpaper/WallpaperManagerService;)V +PLcom/android/server/wallpaper/WallpaperManagerService$2;->(Lcom/android/server/wallpaper/WallpaperManagerService;)V +PLcom/android/server/wallpaper/WallpaperManagerService$3;->(Lcom/android/server/wallpaper/WallpaperManagerService;)V +PLcom/android/server/wallpaper/WallpaperManagerService$4;->(Lcom/android/server/wallpaper/WallpaperManagerService;I)V +PLcom/android/server/wallpaper/WallpaperManagerService$4;->run()V +PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->(Landroid/content/Context;)V +PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onBootPhase(I)V +PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V +PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUnlockUser(I)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->(Lcom/android/server/wallpaper/WallpaperManagerService;)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V +PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->(ILjava/lang/String;Ljava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->cropExists()Z +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->sourceExists()Z +PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap0(I)Ljava/io/File; +PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap4(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->-wrap5(Lcom/android/server/wallpaper/WallpaperManagerService;I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->(Landroid/content/Context;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)Z +PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z +PLcom/android/server/wallpaper/WallpaperManagerService;->enforceCallingOrSelfPermissionAndAppOp(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->getAttributeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +PLcom/android/server/wallpaper/WallpaperManagerService;->getHeightHint()I +PLcom/android/server/wallpaper/WallpaperManagerService;->getMaximumSizeDimension()I +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(II)Landroid/app/WallpaperColors; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperDir(I)Ljava/io/File; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfo(I)Landroid/app/WallpaperInfo; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; +PLcom/android/server/wallpaper/WallpaperManagerService;->getWidthHint()I +PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z +PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZ)V +PLcom/android/server/wallpaper/WallpaperManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile; +PLcom/android/server/wallpaper/WallpaperManagerService;->migrateFromOld()V +PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->parseWallpaperAttributes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Z)V +PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z +PLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)V +PLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V +PLcom/android/server/wallpaper/WallpaperManagerService;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;I)V +PLcom/android/server/wallpaper/WallpaperManagerService;->writeWallpaperAttributes(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V +PLcom/android/server/webkit/SystemImpl$LazyHolder;->-get0()Lcom/android/server/webkit/SystemImpl; +PLcom/android/server/webkit/SystemImpl;->()V +PLcom/android/server/webkit/SystemImpl;->(Lcom/android/server/webkit/SystemImpl;)V +PLcom/android/server/webkit/SystemImpl;->getFactoryPackageVersion(Ljava/lang/String;)I +PLcom/android/server/webkit/SystemImpl;->getInstance()Lcom/android/server/webkit/SystemImpl; +PLcom/android/server/webkit/SystemImpl;->getMultiProcessSetting(Landroid/content/Context;)I +PLcom/android/server/webkit/SystemImpl;->getPackageInfoForProvider(Landroid/webkit/WebViewProviderInfo;)Landroid/content/pm/PackageInfo; +PLcom/android/server/webkit/SystemImpl;->getPackageInfoForProviderAllUsers(Landroid/content/Context;Landroid/webkit/WebViewProviderInfo;)Ljava/util/List; +PLcom/android/server/webkit/SystemImpl;->getUserChosenWebViewProvider(Landroid/content/Context;)Ljava/lang/String; +PLcom/android/server/webkit/SystemImpl;->getWebViewPackages()[Landroid/webkit/WebViewProviderInfo; +PLcom/android/server/webkit/SystemImpl;->isFallbackLogicEnabled()Z +PLcom/android/server/webkit/SystemImpl;->isMultiProcessDefaultEnabled()Z +PLcom/android/server/webkit/SystemImpl;->notifyZygote(Z)V +PLcom/android/server/webkit/SystemImpl;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)I +PLcom/android/server/webkit/SystemImpl;->readSignatures(Landroid/content/res/XmlResourceParser;)[Ljava/lang/String; +PLcom/android/server/webkit/SystemImpl;->systemIsDebuggable()Z +PLcom/android/server/webkit/SystemImpl;->updateUserSetting(Landroid/content/Context;Ljava/lang/String;)V +PLcom/android/server/webkit/WebViewUpdateService$1;->(Lcom/android/server/webkit/WebViewUpdateService;)V +PLcom/android/server/webkit/WebViewUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/webkit/WebViewUpdateService$BinderService;->(Lcom/android/server/webkit/WebViewUpdateService;)V +PLcom/android/server/webkit/WebViewUpdateService$BinderService;->(Lcom/android/server/webkit/WebViewUpdateService;Lcom/android/server/webkit/WebViewUpdateService$BinderService;)V +PLcom/android/server/webkit/WebViewUpdateService$BinderService;->isMultiProcessEnabled()Z +PLcom/android/server/webkit/WebViewUpdateService$BinderService;->notifyRelroCreationCompleted()V +PLcom/android/server/webkit/WebViewUpdateService$BinderService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; +PLcom/android/server/webkit/WebViewUpdateService;->-get0(Lcom/android/server/webkit/WebViewUpdateService;)Lcom/android/server/webkit/WebViewUpdateServiceImpl; +PLcom/android/server/webkit/WebViewUpdateService;->-wrap0(Landroid/content/Intent;)Ljava/lang/String; +PLcom/android/server/webkit/WebViewUpdateService;->(Landroid/content/Context;)V +PLcom/android/server/webkit/WebViewUpdateService;->onStart()V +PLcom/android/server/webkit/WebViewUpdateService;->packageNameFromIntent(Landroid/content/Intent;)Ljava/lang/String; +PLcom/android/server/webkit/WebViewUpdateService;->prepareWebViewInSystemServer()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->existsValidNonFallbackProvider([Landroid/webkit/WebViewProviderInfo;)Z +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->getFallbackProvider([Landroid/webkit/WebViewProviderInfo;)Landroid/webkit/WebViewProviderInfo; +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->getWebViewPackages()[Landroid/webkit/WebViewProviderInfo; +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleNewUser(I)V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isDisabledForAllUsers(Ljava/util/List;)Z +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isMultiProcessEnabled()Z +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->notifyRelroCreationCompleted()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->packageStateChanged(Ljava/lang/String;II)V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->prepareWebViewInSystemServer()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackState([Landroid/webkit/WebViewProviderInfo;)V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnBoot()V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnPackageChange(Ljava/lang/String;I)V +PLcom/android/server/webkit/WebViewUpdateServiceImpl;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; +PLcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;->(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)V +PLcom/android/server/webkit/WebViewUpdater;->(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V +PLcom/android/server/webkit/WebViewUpdater;->checkIfRelrosDoneLocked()V +PLcom/android/server/webkit/WebViewUpdater;->findPreferredWebViewPackage()Landroid/content/pm/PackageInfo; +PLcom/android/server/webkit/WebViewUpdater;->getMinimumVersionCode()I +PLcom/android/server/webkit/WebViewUpdater;->getValidWebViewPackagesAndInfos()[Lcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo; +PLcom/android/server/webkit/WebViewUpdater;->isInstalledAndEnabledForAllUsers(Ljava/util/List;)Z +PLcom/android/server/webkit/WebViewUpdater;->isValidProvider(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)Z +PLcom/android/server/webkit/WebViewUpdater;->notifyRelroCreationCompleted()V +PLcom/android/server/webkit/WebViewUpdater;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)V +PLcom/android/server/webkit/WebViewUpdater;->packageStateChanged(Ljava/lang/String;I)V +PLcom/android/server/webkit/WebViewUpdater;->prepareWebViewInSystemServer()V +PLcom/android/server/webkit/WebViewUpdater;->providerHasValidSignature(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;Lcom/android/server/webkit/SystemInterface;)Z +PLcom/android/server/webkit/WebViewUpdater;->validityResult(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)I +PLcom/android/server/webkit/WebViewUpdater;->versionCodeGE(II)Z +PLcom/android/server/webkit/WebViewUpdater;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse; +PLcom/android/server/webkit/WebViewUpdater;->webViewIsReadyLocked()Z +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$14;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$16;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$2;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$4;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$-8OLNNnyamdUDQS-yMRzScsmdRA;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->$m$0()V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->(ILjava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$RPzhR64WIMgTSfYC8KVwFhmhzoc;->binderDied()V +PLcom/android/server/wifi/-$Lambda$YuIVlKWZZmb4gGMvJqVJEVQ4abs;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$1;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$2;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$2;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$2;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$4;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$4;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$4;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$5;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$5;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8$5;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$fnayIWgoPf1mYwUZ1jv9XAubNu8;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/-$Lambda$lKwQPnSIRFCOpiR3PrChpeYqVrQ;->(BLjava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$10;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$10;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$10;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$12;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$12;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$12;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$13;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$13;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$13;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$14;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$14;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$14;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$15;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$15;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$15;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$19;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$19;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$19;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$1;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$1;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$1;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$3;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$3;->(BLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$3;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$4;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$4;->(BLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$4;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$8;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$8;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$8;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$9;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$9;->(Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k$9;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->$m$0(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/-$Lambda$zRsSIzbfvkJSErD1TWUPvfb3F7k;->onValues(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +PLcom/android/server/wifi/AggressiveConnectedScore;->(Landroid/content/Context;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/AggressiveConnectedScore;->reset()V +PLcom/android/server/wifi/BackupManagerProxy;->()V +PLcom/android/server/wifi/BaseWifiDiagnostics;->(Lcom/android/server/wifi/WifiNative;)V +PLcom/android/server/wifi/BaseWifiDiagnostics;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/ByteBufferReader;->readInteger(Ljava/nio/ByteBuffer;Ljava/nio/ByteOrder;I)J +PLcom/android/server/wifi/CarrierNetworkConfig$1;->(Lcom/android/server/wifi/CarrierNetworkConfig;)V +PLcom/android/server/wifi/CarrierNetworkConfig;->(Landroid/content/Context;)V +PLcom/android/server/wifi/CarrierNetworkConfig;->updateNetworkConfig(Landroid/content/Context;)V +PLcom/android/server/wifi/Clock;->()V +PLcom/android/server/wifi/ConfigurationMap;->(Landroid/os/UserManager;)V +PLcom/android/server/wifi/ConfigurationMap;->clear()V +PLcom/android/server/wifi/ConfigurationMap;->put(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/ConfigurationMap;->sizeForAllUsers()I +PLcom/android/server/wifi/ConfigurationMap;->valuesForAllUsers()Ljava/util/Collection; +PLcom/android/server/wifi/ConnectedScore;->(Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->()V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->getName()Ljava/lang/String; +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->getSsidList()Ljava/util/Set; +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->resetData(Z)V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->serializeData(Lorg/xmlpull/v1/XmlSerializer;Z)V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->setSsidList(Ljava/util/Set;)V +PLcom/android/server/wifi/DeletedEphemeralSsidsStoreData;->supportShareData()Z +PLcom/android/server/wifi/DummyLogMessage;->()V +PLcom/android/server/wifi/DummyLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +PLcom/android/server/wifi/DummyLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage; +PLcom/android/server/wifi/FakeWifiLog;->()V +PLcom/android/server/wifi/FakeWifiLog;->i(Ljava/lang/String;)V +PLcom/android/server/wifi/FrameworkFacade;->()V +PLcom/android/server/wifi/FrameworkFacade;->getBatteryService()Lcom/android/internal/app/IBatteryStats; +PLcom/android/server/wifi/FrameworkFacade;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; +PLcom/android/server/wifi/FrameworkFacade;->getIntegerSetting(Landroid/content/Context;Ljava/lang/String;I)I +PLcom/android/server/wifi/FrameworkFacade;->getLongSetting(Landroid/content/Context;Ljava/lang/String;J)J +PLcom/android/server/wifi/FrameworkFacade;->getRxPackets(Ljava/lang/String;)J +PLcom/android/server/wifi/FrameworkFacade;->getService(Ljava/lang/String;)Landroid/os/IBinder; +PLcom/android/server/wifi/FrameworkFacade;->getStringSetting(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/FrameworkFacade;->getTxPackets(Ljava/lang/String;)J +PLcom/android/server/wifi/FrameworkFacade;->inStorageManagerCryptKeeperBounce()Z +PLcom/android/server/wifi/FrameworkFacade;->makeIpManager(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpManager$Callback;)Landroid/net/ip/IpManager; +PLcom/android/server/wifi/FrameworkFacade;->makeSupplicantStateTracker(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Landroid/os/Handler;)Lcom/android/server/wifi/SupplicantStateTracker; +PLcom/android/server/wifi/FrameworkFacade;->makeWifiAsyncChannel(Ljava/lang/String;)Lcom/android/server/wifi/util/WifiAsyncChannel; +PLcom/android/server/wifi/FrameworkFacade;->registerContentObserver(Landroid/content/Context;Landroid/net/Uri;ZLandroid/database/ContentObserver;)V +PLcom/android/server/wifi/HalDeviceManager$1;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$1;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/wifi/HalDeviceManager$IfaceCreationData;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$IfaceCreationData;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;)V +PLcom/android/server/wifi/HalDeviceManager$InterfaceCacheEntry;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$InterfaceCacheEntry;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$InterfaceCacheEntry;)V +PLcom/android/server/wifi/HalDeviceManager$ListenerProxy$1;->(Lcom/android/server/wifi/HalDeviceManager$ListenerProxy;Landroid/os/Looper;Ljava/lang/String;)V +PLcom/android/server/wifi/HalDeviceManager$ListenerProxy$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->(Lcom/android/server/wifi/HalDeviceManager;Ljava/lang/Object;Landroid/os/Looper;Ljava/lang/String;)V +PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->hashCode()I +PLcom/android/server/wifi/HalDeviceManager$ListenerProxy;->trigger()V +PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V +PLcom/android/server/wifi/HalDeviceManager$ManagerStatusListenerProxy;->action()V +PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$WifiChipInfo;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V +PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiEventCallback;)V +PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->onStart()V +PLcom/android/server/wifi/HalDeviceManager$WifiEventCallback;->onStop()V +PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;->(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;->(Lcom/android/server/wifi/HalDeviceManager;Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;)V +PLcom/android/server/wifi/HalDeviceManager;->-get0()[I +PLcom/android/server/wifi/HalDeviceManager;->-get1(Lcom/android/server/wifi/HalDeviceManager;)Ljava/lang/Object; +PLcom/android/server/wifi/HalDeviceManager;->-wrap1(Lcom/android/server/wifi/HalDeviceManager;)V +PLcom/android/server/wifi/HalDeviceManager;->()V +PLcom/android/server/wifi/HalDeviceManager;->canIfaceComboSupportRequest(Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;Landroid/hardware/wifi/V1_0/IWifiChip$ChipMode;[II)Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData; +PLcom/android/server/wifi/HalDeviceManager;->compareIfaceCreationData(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;)Z +PLcom/android/server/wifi/HalDeviceManager;->createIface(ILcom/android/server/wifi/HalDeviceManager$InterfaceDestroyedListener;Landroid/os/Looper;)Landroid/hardware/wifi/V1_0/IWifiIface; +PLcom/android/server/wifi/HalDeviceManager;->createIfaceIfPossible([Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;ILcom/android/server/wifi/HalDeviceManager$InterfaceDestroyedListener;Landroid/os/Looper;)Landroid/hardware/wifi/V1_0/IWifiIface; +PLcom/android/server/wifi/HalDeviceManager;->createRttController(Landroid/hardware/wifi/V1_0/IWifiIface;)Landroid/hardware/wifi/V1_0/IWifiRttController; +PLcom/android/server/wifi/HalDeviceManager;->createStaIface(Lcom/android/server/wifi/HalDeviceManager$InterfaceDestroyedListener;Landroid/os/Looper;)Landroid/hardware/wifi/V1_0/IWifiStaIface; +PLcom/android/server/wifi/HalDeviceManager;->dispatchAllDestroyedListeners()V +PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListeners()Z +PLcom/android/server/wifi/HalDeviceManager;->dispatchAvailableForRequestListenersForType(I[Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)V +PLcom/android/server/wifi/HalDeviceManager;->executeChipReconfiguration(Lcom/android/server/wifi/HalDeviceManager$IfaceCreationData;I)Landroid/hardware/wifi/V1_0/IWifiIface; +PLcom/android/server/wifi/HalDeviceManager;->expandIfaceCombos(Landroid/hardware/wifi/V1_0/IWifiChip$ChipIfaceCombination;)[[I +PLcom/android/server/wifi/HalDeviceManager;->getChip(Landroid/hardware/wifi/V1_0/IWifiIface;)Landroid/hardware/wifi/V1_0/IWifiChip; +PLcom/android/server/wifi/HalDeviceManager;->getName(Landroid/hardware/wifi/V1_0/IWifiIface;)Ljava/lang/String; +PLcom/android/server/wifi/HalDeviceManager;->getServiceManagerMockable()Landroid/hidl/manager/V1_0/IServiceManager; +PLcom/android/server/wifi/HalDeviceManager;->getSupportedIfaceTypes()Ljava/util/Set; +PLcom/android/server/wifi/HalDeviceManager;->getWifiServiceMockable()Landroid/hardware/wifi/V1_0/IWifi; +PLcom/android/server/wifi/HalDeviceManager;->initIServiceManagerIfNecessary()V +PLcom/android/server/wifi/HalDeviceManager;->initIWifiChipDebugListeners()V +PLcom/android/server/wifi/HalDeviceManager;->initIWifiIfNecessary()V +PLcom/android/server/wifi/HalDeviceManager;->initialize()V +PLcom/android/server/wifi/HalDeviceManager;->initializeInternal()V +PLcom/android/server/wifi/HalDeviceManager;->isReady()Z +PLcom/android/server/wifi/HalDeviceManager;->isStarted()Z +PLcom/android/server/wifi/HalDeviceManager;->isSupported()Z +PLcom/android/server/wifi/HalDeviceManager;->isSupportedInternal()Z +PLcom/android/server/wifi/HalDeviceManager;->isWifiStarted()Z +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_13579(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/lang/String;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_16055(Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiRttController;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_32182(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33181(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_33847(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_34628(Landroid/util/MutableBoolean;Landroid/util/MutableBoolean;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_35566(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_36395(Landroid/util/MutableBoolean;Ljava/lang/String;[Lcom/android/server/wifi/HalDeviceManager$WifiIfaceInfo;Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_37371(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_39171(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_40977(Landroid/util/MutableBoolean;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/HalDeviceManager;->lambda$-com_android_server_wifi_HalDeviceManager_68871(Lcom/android/server/wifi/HalDeviceManager$Mutable;Lcom/android/server/wifi/HalDeviceManager$Mutable;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiStaIface;)V +PLcom/android/server/wifi/HalDeviceManager;->managerStatusListenerDispatch()V +PLcom/android/server/wifi/HalDeviceManager;->registerStatusListener(Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener;Landroid/os/Looper;)V +PLcom/android/server/wifi/HalDeviceManager;->start()Z +PLcom/android/server/wifi/HalDeviceManager;->startWifi()Z +PLcom/android/server/wifi/HalDeviceManager;->stopWifi()V +PLcom/android/server/wifi/HalDeviceManager;->teardownInternal()V +PLcom/android/server/wifi/HalDeviceManager;->validateInterfaceCache([Lcom/android/server/wifi/HalDeviceManager$WifiChipInfo;)Z +PLcom/android/server/wifi/LastMileLogger;->(Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/LastMileLogger;->(Lcom/android/server/wifi/WifiInjector;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/wifi/LastMileLogger;->disableTracing()V +PLcom/android/server/wifi/LastMileLogger;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/LastMileLogger;->dumpInternal(Ljava/io/PrintWriter;Ljava/lang/String;[B)V +PLcom/android/server/wifi/LastMileLogger;->enableTracing()V +PLcom/android/server/wifi/LastMileLogger;->ensureFailSafeIsArmed()Z +PLcom/android/server/wifi/LastMileLogger;->readTrace()[B +PLcom/android/server/wifi/LastMileLogger;->reportConnectionEvent(JB)V +PLcom/android/server/wifi/LegacyConnectedScore;->(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/LegacyConnectedScore;->reset()V +PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +PLcom/android/server/wifi/LogcatLog$RealLogMessage;->c(Z)Lcom/android/server/wifi/WifiLog$LogMessage; +PLcom/android/server/wifi/LogcatLog;->(Ljava/lang/String;)V +PLcom/android/server/wifi/LogcatLog;->enableVerboseLogging(I)V +PLcom/android/server/wifi/LogcatLog;->err(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog$LogMessage; +PLcom/android/server/wifi/LogcatLog;->i(Ljava/lang/String;)V +PLcom/android/server/wifi/LogcatLog;->wC(Ljava/lang/String;)V +PLcom/android/server/wifi/NetworkListStoreData;->()V +PLcom/android/server/wifi/NetworkListStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V +PLcom/android/server/wifi/NetworkListStoreData;->getName()Ljava/lang/String; +PLcom/android/server/wifi/NetworkListStoreData;->getSharedConfigurations()Ljava/util/List; +PLcom/android/server/wifi/NetworkListStoreData;->getUserConfigurations()Ljava/util/List; +PLcom/android/server/wifi/NetworkListStoreData;->parseNetwork(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/NetworkListStoreData;->parseNetworkList(Lorg/xmlpull/v1/XmlPullParser;I)Ljava/util/List; +PLcom/android/server/wifi/NetworkListStoreData;->resetData(Z)V +PLcom/android/server/wifi/NetworkListStoreData;->serializeData(Lorg/xmlpull/v1/XmlSerializer;Z)V +PLcom/android/server/wifi/NetworkListStoreData;->serializeNetwork(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/NetworkListStoreData;->serializeNetworkList(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +PLcom/android/server/wifi/NetworkListStoreData;->setSharedConfigurations(Ljava/util/List;)V +PLcom/android/server/wifi/NetworkListStoreData;->setUserConfigurations(Ljava/util/List;)V +PLcom/android/server/wifi/NetworkListStoreData;->supportShareData()Z +PLcom/android/server/wifi/OpenNetworkNotificationBuilder;->(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/OpenNetworkNotifier$1;->(Lcom/android/server/wifi/OpenNetworkNotifier;)V +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->(Lcom/android/server/wifi/OpenNetworkNotifier;Landroid/os/Handler;)V +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->getValue()Z +PLcom/android/server/wifi/OpenNetworkNotifier$NotificationEnabledSettingObserver;->register()V +PLcom/android/server/wifi/OpenNetworkNotifier;->-get0(Lcom/android/server/wifi/OpenNetworkNotifier;)Landroid/content/Context; +PLcom/android/server/wifi/OpenNetworkNotifier;->-get1(Lcom/android/server/wifi/OpenNetworkNotifier;)Lcom/android/server/wifi/FrameworkFacade; +PLcom/android/server/wifi/OpenNetworkNotifier;->-set0(Lcom/android/server/wifi/OpenNetworkNotifier;Z)Z +PLcom/android/server/wifi/OpenNetworkNotifier;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/OpenNetworkRecommender;)V +PLcom/android/server/wifi/OpenNetworkNotifier;->clearPendingNotification(Z)V +PLcom/android/server/wifi/OpenNetworkNotifier;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/OpenNetworkNotifier;->handleScreenStateChanged(Z)V +PLcom/android/server/wifi/OpenNetworkRecommender;->()V +PLcom/android/server/wifi/RttService$RttServiceImpl$1;->(Lcom/android/server/wifi/RttService$RttServiceImpl;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$2;->(Lcom/android/server/wifi/RttService$RttServiceImpl;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->getDescription(I)Ljava/lang/String; +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;->(Lcom/android/server/wifi/RttService$RttServiceImpl;Lcom/android/internal/util/AsyncChannel;ILjava/lang/String;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo;->cleanup()V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;->(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/IBinder;Landroid/os/Messenger;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttDeathListener;->binderDied()V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;->(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;->(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;->enter()V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$InitiatorEnabledState;->(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$ResponderEnabledState;->(Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;)V +PLcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine;->(Lcom/android/server/wifi/RttService$RttServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get0(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/SparseArray; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get1(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/util/ArrayMap; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get2(Lcom/android/server/wifi/RttService$RttServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get3(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/lang/Object; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get4(Lcom/android/server/wifi/RttService$RttServiceImpl;)Ljava/util/Queue; +PLcom/android/server/wifi/RttService$RttServiceImpl;->-get5(Lcom/android/server/wifi/RttService$RttServiceImpl;)Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine; +PLcom/android/server/wifi/RttService$RttServiceImpl;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/RttService$RttServiceImpl;->getMessenger(Landroid/os/IBinder;[I)Landroid/os/Messenger; +PLcom/android/server/wifi/RttService$RttServiceImpl;->lambda$-com_android_server_wifi_RttService$RttServiceImpl_1874(I)V +PLcom/android/server/wifi/RttService$RttServiceImpl;->startService()V +PLcom/android/server/wifi/RttService;->(Landroid/content/Context;)V +PLcom/android/server/wifi/RttService;->onBootPhase(I)V +PLcom/android/server/wifi/RttService;->onStart()V +PLcom/android/server/wifi/SIMAccessor;->(Landroid/content/Context;)V +PLcom/android/server/wifi/SavedNetworkEvaluator;->(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;Lcom/android/server/wifi/WifiConnectivityHelper;)V +PLcom/android/server/wifi/SavedNetworkEvaluator;->getName()Ljava/lang/String; +PLcom/android/server/wifi/SavedNetworkEvaluator;->localLog(Ljava/lang/String;)V +PLcom/android/server/wifi/SavedNetworkEvaluator;->update(Ljava/util/List;)V +PLcom/android/server/wifi/ScanDetailCache;->(Landroid/net/wifi/WifiConfiguration;II)V +PLcom/android/server/wifi/ScanDetailCache;->size()I +PLcom/android/server/wifi/ScanResultMatchInfo;->fromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/ScanResultMatchInfo; +PLcom/android/server/wifi/ScoredNetworkEvaluator$1;->(Lcom/android/server/wifi/ScoredNetworkEvaluator;Landroid/os/Handler;Lcom/android/server/wifi/FrameworkFacade;Landroid/content/Context;)V +PLcom/android/server/wifi/ScoredNetworkEvaluator$1;->onChange(Z)V +PLcom/android/server/wifi/ScoredNetworkEvaluator;->-set0(Lcom/android/server/wifi/ScoredNetworkEvaluator;Z)Z +PLcom/android/server/wifi/ScoredNetworkEvaluator;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;Landroid/net/wifi/WifiNetworkScoreCache;)V +PLcom/android/server/wifi/ScoredNetworkEvaluator;->update(Ljava/util/List;)V +PLcom/android/server/wifi/SelfRecovery;->(Lcom/android/server/wifi/WifiController;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/StateChangeResult;->(ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V +PLcom/android/server/wifi/StateChangeResult;->toString()Ljava/lang/String; +PLcom/android/server/wifi/StateMachineDeathRecipient;->(Lcom/android/internal/util/StateMachine;I)V +PLcom/android/server/wifi/StateMachineDeathRecipient;->linkToDeath(Landroid/os/IBinder;)Z +PLcom/android/server/wifi/StateMachineDeathRecipient;->unlinkToDeath()V +PLcom/android/server/wifi/SupplicantStaIfaceHal$1;->(Lcom/android/server/wifi/SupplicantStaIfaceHal;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$1;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;->()V +PLcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;->(Lcom/android/server/wifi/SupplicantStaIfaceHal;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;->(Lcom/android/server/wifi/SupplicantStaIfaceHal;Lcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;->onBssidChanged(B[B)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;->onNetworkAdded(I)V +PLcom/android/server/wifi/SupplicantStaIfaceHal$SupplicantStaIfaceHalCallback;->onStateChanged(I[BILjava/util/ArrayList;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-get0(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Ljava/lang/String; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-get1(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Ljava/lang/Object; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-get2(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-get3(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Lcom/android/server/wifi/WifiMonitor; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap0(I)Landroid/net/wifi/SupplicantState; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap1(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap2(Lcom/android/server/wifi/SupplicantStaIfaceHal;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap3(Lcom/android/server/wifi/SupplicantStaIfaceHal;)I +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap4(Lcom/android/server/wifi/SupplicantStaIfaceHal;Ljava/lang/String;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->-wrap5(Lcom/android/server/wifi/SupplicantStaIfaceHal;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->(Landroid/content/Context;Lcom/android/server/wifi/WifiMonitor;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->addNetwork()Lcom/android/server/wifi/SupplicantStaNetworkHal; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->addNetworkAndSaveConfig(Landroid/net/wifi/WifiConfiguration;)Landroid/util/Pair; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->addRxFilter(B)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->addRxFilter(I)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->checkStatusAndLogFailure(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->checkSupplicantAndLogFailure(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->checkSupplicantStaIfaceAndLogFailure(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->disconnect()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->enableAutoReconnect(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getCurrentNetworkId()I +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getMacAddress()Ljava/lang/String; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getServiceManagerMockable()Landroid/hidl/manager/V1_0/IServiceManager; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getStaIfaceMockable(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIface; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getStaNetworkMockable(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;)Lcom/android/server/wifi/SupplicantStaNetworkHal; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->getSupplicantMockable()Landroid/hardware/wifi/supplicant/V1_0/ISupplicant; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->initSupplicantService()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->initSupplicantStaIface()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->initialize()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationComplete()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->isInitializationStarted()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_11878(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_12989(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_28917(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantNetwork;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_33278(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->lambda$-com_android_server_wifi_SupplicantStaIfaceHal_50243(Lcom/android/server/wifi/SupplicantStaIfaceHal$Mutable;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToServiceManagerDeath()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantDeath()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->linkToSupplicantStaIfaceDeath()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->listNetworks()Ljava/util/ArrayList; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->logCallback(Ljava/lang/String;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->logd(Ljava/lang/String;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->logi(Ljava/lang/String;)V +PLcom/android/server/wifi/SupplicantStaIfaceHal;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaIfaceCallback;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->removeAllNetworks()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setBtCoexistenceMode(B)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setBtCoexistenceMode(I)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setBtCoexistenceScanModeEnabled(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setConcurrencyPriority(I)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setConcurrencyPriority(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setCountryCode(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setCountryCode([B)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setCurrentNetworkBssid(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setDebugParams(IZZ)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setExternalSim(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setLogLevel(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setPowerSave(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setSuspendModeEnabled(Z)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsConfigMethods(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsConfigMethods(S)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsDeviceName(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsDeviceType(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsDeviceType([B)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsManufacturer(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsModelName(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsModelNumber(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->setWpsSerialNumber(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->startRxFilter()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->stopRxFilter()Z +PLcom/android/server/wifi/SupplicantStaIfaceHal;->stringToWpsConfigMethod(Ljava/lang/String;)S +PLcom/android/server/wifi/SupplicantStaIfaceHal;->supplicantHidlStateToFrameworkState(I)Landroid/net/wifi/SupplicantState; +PLcom/android/server/wifi/SupplicantStaIfaceHal;->supplicantServiceDiedHandler()V +PLcom/android/server/wifi/SupplicantStaNetworkHal$SupplicantStaNetworkHalCallback;->(Lcom/android/server/wifi/SupplicantStaNetworkHal;ILjava/lang/String;)V +PLcom/android/server/wifi/SupplicantStaNetworkHal;->(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetwork;Ljava/lang/String;Landroid/content/Context;Lcom/android/server/wifi/WifiMonitor;)V +PLcom/android/server/wifi/SupplicantStaNetworkHal;->addFastTransitionFlags(Ljava/util/BitSet;)Ljava/util/BitSet; +PLcom/android/server/wifi/SupplicantStaNetworkHal;->checkISupplicantStaNetworkAndLogFailure(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->checkStatusAndLogFailure(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->createNetworkExtra(Ljava/util/Map;)Ljava/lang/String; +PLcom/android/server/wifi/SupplicantStaNetworkHal;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/SupplicantStaNetworkHal;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantStaNetworkCallback;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->saveWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->select()Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setAuthAlg(I)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setBssid(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setBssid([B)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setGroupCipher(I)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setIdStr(Ljava/lang/String;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setKeyMgmt(I)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setPairwiseCipher(I)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setProto(I)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setRequirePmf(Z)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setScanSsid(Z)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->setSsid(Ljava/util/ArrayList;)Z +PLcom/android/server/wifi/SupplicantStaNetworkHal;->wifiConfigurationToSupplicantAuthAlgMask(Ljava/util/BitSet;)I +PLcom/android/server/wifi/SupplicantStaNetworkHal;->wifiConfigurationToSupplicantGroupCipherMask(Ljava/util/BitSet;)I +PLcom/android/server/wifi/SupplicantStaNetworkHal;->wifiConfigurationToSupplicantKeyMgmtMask(Ljava/util/BitSet;)I +PLcom/android/server/wifi/SupplicantStaNetworkHal;->wifiConfigurationToSupplicantPairwiseCipherMask(Ljava/util/BitSet;)I +PLcom/android/server/wifi/SupplicantStaNetworkHal;->wifiConfigurationToSupplicantProtoMask(Ljava/util/BitSet;)I +PLcom/android/server/wifi/SupplicantStateTracker$CompletedState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$CompletedState;->enter()V +PLcom/android/server/wifi/SupplicantStateTracker$ConnectionActiveState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$ConnectionActiveState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/SupplicantStateTracker$DefaultState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$DefaultState;->enter()V +PLcom/android/server/wifi/SupplicantStateTracker$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/SupplicantStateTracker$DisconnectedState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$DormantState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$HandshakeState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$HandshakeState;->enter()V +PLcom/android/server/wifi/SupplicantStateTracker$HandshakeState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/SupplicantStateTracker$InactiveState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$ScanState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$UninitializedState;->(Lcom/android/server/wifi/SupplicantStateTracker;)V +PLcom/android/server/wifi/SupplicantStateTracker$UninitializedState;->enter()V +PLcom/android/server/wifi/SupplicantStateTracker;->-get0()Z +PLcom/android/server/wifi/SupplicantStateTracker;->-get1(Lcom/android/server/wifi/SupplicantStateTracker;)Z +PLcom/android/server/wifi/SupplicantStateTracker;->-get2(Lcom/android/server/wifi/SupplicantStateTracker;)I +PLcom/android/server/wifi/SupplicantStateTracker;->-get3(Lcom/android/server/wifi/SupplicantStateTracker;)Z +PLcom/android/server/wifi/SupplicantStateTracker;->-get4(Lcom/android/server/wifi/SupplicantStateTracker;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/SupplicantStateTracker;->-getandroid-net-wifi-SupplicantStateSwitchesValues()[I +PLcom/android/server/wifi/SupplicantStateTracker;->-set0(Lcom/android/server/wifi/SupplicantStateTracker;Z)Z +PLcom/android/server/wifi/SupplicantStateTracker;->-set1(Lcom/android/server/wifi/SupplicantStateTracker;I)I +PLcom/android/server/wifi/SupplicantStateTracker;->-wrap2(Lcom/android/server/wifi/SupplicantStateTracker;Landroid/net/wifi/SupplicantState;ZI)V +PLcom/android/server/wifi/SupplicantStateTracker;->-wrap3(Lcom/android/server/wifi/SupplicantStateTracker;Lcom/android/server/wifi/StateChangeResult;)V +PLcom/android/server/wifi/SupplicantStateTracker;->(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Handler;)V +PLcom/android/server/wifi/SupplicantStateTracker;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/SupplicantStateTracker;->enableVerboseLogging(I)V +PLcom/android/server/wifi/SupplicantStateTracker;->getSupplicantStateName()Ljava/lang/String; +PLcom/android/server/wifi/SupplicantStateTracker;->sendSupplicantStateChangedBroadcast(Landroid/net/wifi/SupplicantState;ZI)V +PLcom/android/server/wifi/SupplicantStateTracker;->transitionOnSupplicantStateChange(Lcom/android/server/wifi/StateChangeResult;)V +PLcom/android/server/wifi/SystemBuildProperties;->()V +PLcom/android/server/wifi/SystemBuildProperties;->isUserBuild()Z +PLcom/android/server/wifi/SystemPropertyService;->()V +PLcom/android/server/wifi/SystemPropertyService;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/SystemPropertyService;->getBoolean(Ljava/lang/String;Z)Z +PLcom/android/server/wifi/SystemPropertyService;->set(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiApConfigStore;->(Landroid/content/Context;Lcom/android/server/wifi/BackupManagerProxy;)V +PLcom/android/server/wifi/WifiApConfigStore;->(Landroid/content/Context;Lcom/android/server/wifi/BackupManagerProxy;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiApConfigStore;->loadApConfiguration(Ljava/lang/String;)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiBackupRestore;->(Lcom/android/server/wifi/util/WifiPermissionsUtil;)V +PLcom/android/server/wifi/WifiBackupRestore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiBackupRestore;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiCertManager;->(Landroid/content/Context;)V +PLcom/android/server/wifi/WifiCertManager;->(Landroid/content/Context;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiCertManager;->readConfigFile()[B +PLcom/android/server/wifi/WifiConfigManager$1;->()V +PLcom/android/server/wifi/WifiConfigManager;->(Landroid/content/Context;Lcom/android/server/wifi/Clock;Landroid/os/UserManager;Landroid/telephony/TelephonyManager;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiConfigStoreLegacy;Lcom/android/server/wifi/util/WifiPermissionsUtil;Lcom/android/server/wifi/util/WifiPermissionsWrapper;Lcom/android/server/wifi/NetworkListStoreData;Lcom/android/server/wifi/DeletedEphemeralSsidsStoreData;)V +PLcom/android/server/wifi/WifiConfigManager;->clearInternalData()V +PLcom/android/server/wifi/WifiConfigManager;->clearLastSelectedNetwork()V +PLcom/android/server/wifi/WifiConfigManager;->clearRecentFailureReason(I)V +PLcom/android/server/wifi/WifiConfigManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiConfigManager;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiConfigManager;->fetchChannelSetForNetworkForPartialScan(IJI)Ljava/util/Set; +PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworkWithPassword(I)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiConfigManager;->getConfiguredNetworks()Ljava/util/List; +PLcom/android/server/wifi/WifiConfigManager;->getLastSelectedNetworkConfigKey()Ljava/lang/String; +PLcom/android/server/wifi/WifiConfigManager;->getSavedNetworks()Ljava/util/List; +PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlock(I)V +PLcom/android/server/wifi/WifiConfigManager;->handleUserUnlockOrSwitch(I)V +PLcom/android/server/wifi/WifiConfigManager;->loadFromStore()Z +PLcom/android/server/wifi/WifiConfigManager;->loadFromUserStoreAfterUnlockOrSwitch(I)Z +PLcom/android/server/wifi/WifiConfigManager;->loadInternalData(Ljava/util/List;Ljava/util/List;Ljava/util/Set;)V +PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromSharedStore(Ljava/util/List;)V +PLcom/android/server/wifi/WifiConfigManager;->loadInternalDataFromUserStore(Ljava/util/List;Ljava/util/Set;)V +PLcom/android/server/wifi/WifiConfigManager;->migrateFromLegacyStore()Z +PLcom/android/server/wifi/WifiConfigManager;->needsUnlockedKeyStore()Z +PLcom/android/server/wifi/WifiConfigManager;->resetSimNetworks(Z)V +PLcom/android/server/wifi/WifiConfigManager;->saveToStore(Z)Z +PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworkChangedBroadcast(Landroid/net/wifi/WifiConfiguration;I)V +PLcom/android/server/wifi/WifiConfigManager;->sendConfiguredNetworksChangedBroadcast()V +PLcom/android/server/wifi/WifiConfigManager;->setNetworkStatus(Landroid/net/wifi/WifiConfiguration;I)V +PLcom/android/server/wifi/WifiConfigManager;->setNetworkValidatedInternetAccess(IZ)Z +PLcom/android/server/wifi/WifiConfigManager;->setOnSavedNetworkUpdateListener(Lcom/android/server/wifi/WifiConfigManager$OnSavedNetworkUpdateListener;)V +PLcom/android/server/wifi/WifiConfigManager;->updateNetworkAfterConnect(I)Z +PLcom/android/server/wifi/WifiConfigStore$1;->(Lcom/android/server/wifi/WifiConfigStore;)V +PLcom/android/server/wifi/WifiConfigStore$1;->onAlarm()V +PLcom/android/server/wifi/WifiConfigStore$StoreFile;->(Ljava/io/File;)V +PLcom/android/server/wifi/WifiConfigStore$StoreFile;->exists()Z +PLcom/android/server/wifi/WifiConfigStore$StoreFile;->readRawData()[B +PLcom/android/server/wifi/WifiConfigStore$StoreFile;->storeRawDataToWrite([B)V +PLcom/android/server/wifi/WifiConfigStore$StoreFile;->writeBufferedRawData()V +PLcom/android/server/wifi/WifiConfigStore;->-wrap0(Lcom/android/server/wifi/WifiConfigStore;)V +PLcom/android/server/wifi/WifiConfigStore;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/WifiConfigStore$StoreFile;)V +PLcom/android/server/wifi/WifiConfigStore;->areStoresPresent()Z +PLcom/android/server/wifi/WifiConfigStore;->createFile(Ljava/io/File;)Lcom/android/server/wifi/WifiConfigStore$StoreFile; +PLcom/android/server/wifi/WifiConfigStore;->createSharedFile()Lcom/android/server/wifi/WifiConfigStore$StoreFile; +PLcom/android/server/wifi/WifiConfigStore;->createUserFile(I)Lcom/android/server/wifi/WifiConfigStore$StoreFile; +PLcom/android/server/wifi/WifiConfigStore;->deserializeData([BZ)V +PLcom/android/server/wifi/WifiConfigStore;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/WifiConfigStore;->parseDocumentStartAndVersionFromXml(Lorg/xmlpull/v1/XmlPullParser;)I +PLcom/android/server/wifi/WifiConfigStore;->read()V +PLcom/android/server/wifi/WifiConfigStore;->registerStoreData(Lcom/android/server/wifi/WifiConfigStore$StoreData;)Z +PLcom/android/server/wifi/WifiConfigStore;->resetStoreData(Z)V +PLcom/android/server/wifi/WifiConfigStore;->startBufferedWriteAlarm()V +PLcom/android/server/wifi/WifiConfigStore;->stopBufferedWriteAlarm()V +PLcom/android/server/wifi/WifiConfigStore;->switchUserStoreAndRead(Lcom/android/server/wifi/WifiConfigStore$StoreFile;)V +PLcom/android/server/wifi/WifiConfigStore;->write(Z)V +PLcom/android/server/wifi/WifiConfigStore;->writeBufferedData()V +PLcom/android/server/wifi/WifiConfigStoreLegacy;->(Lcom/android/server/wifi/WifiNetworkHistory;Lcom/android/server/wifi/WifiNative;Lcom/android/server/net/IpConfigStore;Lcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;)V +PLcom/android/server/wifi/WifiConfigStoreLegacy;->areStoresPresent()Z +PLcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator;->()V +PLcom/android/server/wifi/WifiConfigurationUtil;->isSameNetwork(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiConfiguration;)Z +PLcom/android/server/wifi/WifiConfigurationUtil;->isVisibleToAnyProfile(Landroid/net/wifi/WifiConfiguration;Ljava/util/List;)Z +PLcom/android/server/wifi/WifiConnectivityHelper;->(Lcom/android/server/wifi/WifiNative;)V +PLcom/android/server/wifi/WifiConnectivityHelper;->getFirmwareRoamingInfo()Z +PLcom/android/server/wifi/WifiConnectivityHelper;->getMaxNumBlacklistBssid()I +PLcom/android/server/wifi/WifiConnectivityHelper;->setFirmwareRoamingConfiguration(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +PLcom/android/server/wifi/WifiConnectivityManager$1;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$2;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$2;->onAlarm()V +PLcom/android/server/wifi/WifiConnectivityManager$3;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$3;->onAlarm()V +PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;)V +PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->clearScanDetails()V +PLcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener;->onSuccess()V +PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;->(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$OnSavedNetworkUpdateListener;)V +PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;->(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;->(Lcom/android/server/wifi/WifiConnectivityManager;Lcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;)V +PLcom/android/server/wifi/WifiConnectivityManager$PnoScanListener;->resetLowRssiNetworkRetryDelay()V +PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->(Lcom/android/server/wifi/WifiConnectivityManager;Z)V +PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V +PLcom/android/server/wifi/WifiConnectivityManager$SingleScanListener;->onSuccess()V +PLcom/android/server/wifi/WifiConnectivityManager;->-get10(Lcom/android/server/wifi/WifiConnectivityManager;)Lcom/android/server/wifi/WifiMetrics; +PLcom/android/server/wifi/WifiConnectivityManager;->-get2(Lcom/android/server/wifi/WifiConnectivityManager;)Z +PLcom/android/server/wifi/WifiConnectivityManager;->-get7(Lcom/android/server/wifi/WifiConnectivityManager;)Z +PLcom/android/server/wifi/WifiConnectivityManager;->-wrap0(Lcom/android/server/wifi/WifiConnectivityManager;Ljava/util/List;Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiConnectivityManager;->-wrap2(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager;->-wrap7(Lcom/android/server/wifi/WifiConnectivityManager;)V +PLcom/android/server/wifi/WifiConnectivityManager;->(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;Lcom/android/server/wifi/WifiConfigManager;Landroid/net/wifi/WifiInfo;Lcom/android/server/wifi/WifiNetworkSelector;Lcom/android/server/wifi/WifiConnectivityHelper;Lcom/android/server/wifi/WifiLastResortWatchdog;Lcom/android/server/wifi/OpenNetworkNotifier;Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;ZLcom/android/server/wifi/FrameworkFacade;Lcom/android/server/wifi/SavedNetworkEvaluator;Lcom/android/server/wifi/ScoredNetworkEvaluator;Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;)V +PLcom/android/server/wifi/WifiConnectivityManager;->cancelPeriodicScanTimer()V +PLcom/android/server/wifi/WifiConnectivityManager;->clearBssidBlacklist()V +PLcom/android/server/wifi/WifiConnectivityManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiConnectivityManager;->enable(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->getScanBand(Z)I +PLcom/android/server/wifi/WifiConnectivityManager;->handleConnectionStateChanged(I)V +PLcom/android/server/wifi/WifiConnectivityManager;->handleScreenStateChanged(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->noteConnectionAttempt(Ljava/lang/Long;)V +PLcom/android/server/wifi/WifiConnectivityManager;->periodicScanTimerHandler()V +PLcom/android/server/wifi/WifiConnectivityManager;->refreshBssidBlacklist()V +PLcom/android/server/wifi/WifiConnectivityManager;->resetLastPeriodicSingleScanTimeStamp()V +PLcom/android/server/wifi/WifiConnectivityManager;->schedulePeriodicScanTimer(I)V +PLcom/android/server/wifi/WifiConnectivityManager;->scheduleWatchdogTimer()V +PLcom/android/server/wifi/WifiConnectivityManager;->setUntrustedConnectionAllowed(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->setWifiEnabled(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->start()V +PLcom/android/server/wifi/WifiConnectivityManager;->startConnectivityScan(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicScan(Z)V +PLcom/android/server/wifi/WifiConnectivityManager;->startPeriodicSingleScan()V +PLcom/android/server/wifi/WifiConnectivityManager;->stateToString(I)Ljava/lang/String; +PLcom/android/server/wifi/WifiConnectivityManager;->stop()V +PLcom/android/server/wifi/WifiConnectivityManager;->stopConnectivityScan()V +PLcom/android/server/wifi/WifiConnectivityManager;->stopPnoScan()V +PLcom/android/server/wifi/WifiConnectivityManager;->trackBssid(Ljava/lang/String;ZI)Z +PLcom/android/server/wifi/WifiConnectivityManager;->updateBssidBlacklist(Ljava/lang/String;ZI)Z +PLcom/android/server/wifi/WifiConnectivityManager;->updateFirmwareRoamingConfiguration()V +PLcom/android/server/wifi/WifiConnectivityManager;->updateRunningState()V +PLcom/android/server/wifi/WifiConnectivityManager;->watchdogHandler()V +PLcom/android/server/wifi/WifiController$1;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/WifiController$2;->(Lcom/android/server/wifi/WifiController;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiController$3;->(Lcom/android/server/wifi/WifiController;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiController$4;->(Lcom/android/server/wifi/WifiController;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiController$ApEnabledState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$ApStaDisabledState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$DefaultState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$DeviceActiveState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$DeviceActiveState;->enter()V +PLcom/android/server/wifi/WifiController$DeviceInactiveState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$EcmState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$FullHighPerfLockHeldState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$FullLockHeldState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$NoLockHeldState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$ScanOnlyLockHeldState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->doDeferEnable(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->enter()V +PLcom/android/server/wifi/WifiController$StaDisabledWithScanState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiController$StaEnabledState;->(Lcom/android/server/wifi/WifiController;)V +PLcom/android/server/wifi/WifiController$StaEnabledState;->enter()V +PLcom/android/server/wifi/WifiController;->-get12(Lcom/android/server/wifi/WifiController;)J +PLcom/android/server/wifi/WifiController;->-get13(Lcom/android/server/wifi/WifiController;)Z +PLcom/android/server/wifi/WifiController;->-get14(Lcom/android/server/wifi/WifiController;)Lcom/android/server/wifi/WifiSettingsStore; +PLcom/android/server/wifi/WifiController;->-get16(Lcom/android/server/wifi/WifiController;)Lcom/android/server/wifi/WifiStateMachine; +PLcom/android/server/wifi/WifiController;->-get4(Lcom/android/server/wifi/WifiController;)Lcom/android/server/wifi/WifiController$DeviceActiveState; +PLcom/android/server/wifi/WifiController;->-get5(Lcom/android/server/wifi/WifiController;)Z +PLcom/android/server/wifi/WifiController;->-get8(Lcom/android/server/wifi/WifiController;)Z +PLcom/android/server/wifi/WifiController;->-set1(Lcom/android/server/wifi/WifiController;Z)Z +PLcom/android/server/wifi/WifiController;->-set2(Lcom/android/server/wifi/WifiController;I)I +PLcom/android/server/wifi/WifiController;->-wrap2(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiController;->-wrap3(Lcom/android/server/wifi/WifiController;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiController;->(Landroid/content/Context;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiSettingsStore;Lcom/android/server/wifi/WifiLockManager;Landroid/os/Looper;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/WifiController;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiController;->initializeAndRegisterForSettingsChange(Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiController;->readStayAwakeConditions()V +PLcom/android/server/wifi/WifiController;->readWifiIdleTime()V +PLcom/android/server/wifi/WifiController;->readWifiReEnableDelay()V +PLcom/android/server/wifi/WifiController;->readWifiSleepPolicy()V +PLcom/android/server/wifi/WifiController;->registerForStayAwakeModeChange(Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiController;->registerForWifiIdleTimeChange(Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiController;->registerForWifiSleepPolicyChange(Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiCountryCode;->(Lcom/android/server/wifi/WifiNative;Ljava/lang/String;Z)V +PLcom/android/server/wifi/WifiCountryCode;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiCountryCode;->getCountryCodeSentToDriver()Ljava/lang/String; +PLcom/android/server/wifi/WifiCountryCode;->pickCountryCode()Ljava/lang/String; +PLcom/android/server/wifi/WifiCountryCode;->setCountryCodeNative(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiCountryCode;->setReadyForChange(Z)V +PLcom/android/server/wifi/WifiCountryCode;->simCardRemoved()V +PLcom/android/server/wifi/WifiCountryCode;->updateCountryCode()V +PLcom/android/server/wifi/WifiDiagnostics$1;->(Lcom/android/server/wifi/WifiDiagnostics;)V +PLcom/android/server/wifi/WifiDiagnostics$2;->(Lcom/android/server/wifi/WifiDiagnostics;)V +PLcom/android/server/wifi/WifiDiagnostics$BugReport;->(Lcom/android/server/wifi/WifiDiagnostics;)V +PLcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray;->(Lcom/android/server/wifi/WifiDiagnostics;I)V +PLcom/android/server/wifi/WifiDiagnostics;->-wrap0(Lcom/android/server/wifi/WifiDiagnostics;[B)Ljava/lang/String; +PLcom/android/server/wifi/WifiDiagnostics;->(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/BuildProperties;Lcom/android/server/wifi/LastMileLogger;)V +PLcom/android/server/wifi/WifiDiagnostics;->captureBugReportData(I)V +PLcom/android/server/wifi/WifiDiagnostics;->clearVerboseLogs()V +PLcom/android/server/wifi/WifiDiagnostics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiDiagnostics;->dumpPacketFates(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/WifiDiagnostics;->enableVerboseLoggingForDogfood()Z +PLcom/android/server/wifi/WifiDiagnostics;->fetchPacketFates()Ljava/util/ArrayList; +PLcom/android/server/wifi/WifiDiagnostics;->fetchRingBuffers()Z +PLcom/android/server/wifi/WifiDiagnostics;->isVerboseLoggingEnabled()Z +PLcom/android/server/wifi/WifiDiagnostics;->reportConnectionEvent(JB)V +PLcom/android/server/wifi/WifiDiagnostics;->resizeRingBuffers()V +PLcom/android/server/wifi/WifiDiagnostics;->startLogging(Z)V +PLcom/android/server/wifi/WifiDiagnostics;->startLoggingAllExceptPerPacketBuffers()Z +PLcom/android/server/wifi/WifiDiagnostics;->startLoggingRingBuffer(Lcom/android/server/wifi/WifiNative$RingBufferStatus;)Z +PLcom/android/server/wifi/WifiDiagnostics;->stopLoggingAllBuffers()Z +PLcom/android/server/wifi/WifiDiagnostics;->stopLoggingRingBuffer(Lcom/android/server/wifi/WifiNative$RingBufferStatus;)Z +PLcom/android/server/wifi/WifiInjector;->(Landroid/content/Context;)V +PLcom/android/server/wifi/WifiInjector;->getBuildProperties()Lcom/android/server/wifi/BuildProperties; +PLcom/android/server/wifi/WifiInjector;->getClock()Lcom/android/server/wifi/Clock; +PLcom/android/server/wifi/WifiInjector;->getFrameworkFacade()Lcom/android/server/wifi/FrameworkFacade; +PLcom/android/server/wifi/WifiInjector;->getInstance()Lcom/android/server/wifi/WifiInjector; +PLcom/android/server/wifi/WifiInjector;->getJavaRuntime()Ljava/lang/Runtime; +PLcom/android/server/wifi/WifiInjector;->getPasspointManager()Lcom/android/server/wifi/hotspot2/PasspointManager; +PLcom/android/server/wifi/WifiInjector;->getPropertyService()Lcom/android/server/wifi/PropertyService; +PLcom/android/server/wifi/WifiInjector;->getUserManager()Landroid/os/UserManager; +PLcom/android/server/wifi/WifiInjector;->getWifiApConfigStore()Lcom/android/server/wifi/WifiApConfigStore; +PLcom/android/server/wifi/WifiInjector;->getWifiBackupRestore()Lcom/android/server/wifi/WifiBackupRestore; +PLcom/android/server/wifi/WifiInjector;->getWifiCertManager()Lcom/android/server/wifi/WifiCertManager; +PLcom/android/server/wifi/WifiInjector;->getWifiConfigManager()Lcom/android/server/wifi/WifiConfigManager; +PLcom/android/server/wifi/WifiInjector;->getWifiController()Lcom/android/server/wifi/WifiController; +PLcom/android/server/wifi/WifiInjector;->getWifiCountryCode()Lcom/android/server/wifi/WifiCountryCode; +PLcom/android/server/wifi/WifiInjector;->getWifiLastResortWatchdog()Lcom/android/server/wifi/WifiLastResortWatchdog; +PLcom/android/server/wifi/WifiInjector;->getWifiLockManager()Lcom/android/server/wifi/WifiLockManager; +PLcom/android/server/wifi/WifiInjector;->getWifiMetrics()Lcom/android/server/wifi/WifiMetrics; +PLcom/android/server/wifi/WifiInjector;->getWifiMonitor()Lcom/android/server/wifi/WifiMonitor; +PLcom/android/server/wifi/WifiInjector;->getWifiMulticastLockManager()Lcom/android/server/wifi/WifiMulticastLockManager; +PLcom/android/server/wifi/WifiInjector;->getWifiNative()Lcom/android/server/wifi/WifiNative; +PLcom/android/server/wifi/WifiInjector;->getWifiP2pMonitor()Lcom/android/server/wifi/p2p/WifiP2pMonitor; +PLcom/android/server/wifi/WifiInjector;->getWifiP2pNative()Lcom/android/server/wifi/p2p/WifiP2pNative; +PLcom/android/server/wifi/WifiInjector;->getWifiPermissionsUtil()Lcom/android/server/wifi/util/WifiPermissionsUtil; +PLcom/android/server/wifi/WifiInjector;->getWifiScanner()Landroid/net/wifi/WifiScanner; +PLcom/android/server/wifi/WifiInjector;->getWifiServiceHandlerThread()Landroid/os/HandlerThread; +PLcom/android/server/wifi/WifiInjector;->getWifiSettingsStore()Lcom/android/server/wifi/WifiSettingsStore; +PLcom/android/server/wifi/WifiInjector;->getWifiStateMachine()Lcom/android/server/wifi/WifiStateMachine; +PLcom/android/server/wifi/WifiInjector;->getWifiStateTracker()Lcom/android/server/wifi/WifiStateTracker; +PLcom/android/server/wifi/WifiInjector;->getWifiTrafficPoller()Lcom/android/server/wifi/WifiTrafficPoller; +PLcom/android/server/wifi/WifiInjector;->makeLog(Ljava/lang/String;)Lcom/android/server/wifi/WifiLog; +PLcom/android/server/wifi/WifiInjector;->makeWifiConnectivityManager(Landroid/net/wifi/WifiInfo;Z)Lcom/android/server/wifi/WifiConnectivityManager; +PLcom/android/server/wifi/WifiInjector;->makeWifiDiagnostics(Lcom/android/server/wifi/WifiNative;)Lcom/android/server/wifi/BaseWifiDiagnostics; +PLcom/android/server/wifi/WifiInjector;->makeWificond()Landroid/net/wifi/IWificond; +PLcom/android/server/wifi/WifiKeyStore;->(Landroid/security/KeyStore;)V +PLcom/android/server/wifi/WifiKeyStore;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/WifiLastResortWatchdog$AvailableNetworkFailureCount;->(Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiLastResortWatchdog$AvailableNetworkFailureCount;->resetCounts()V +PLcom/android/server/wifi/WifiLastResortWatchdog;->(Lcom/android/server/wifi/SelfRecovery;Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/WifiLastResortWatchdog;->clearAllFailureCounts()V +PLcom/android/server/wifi/WifiLastResortWatchdog;->connectedStateTransition(Z)V +PLcom/android/server/wifi/WifiLastResortWatchdog;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiLastResortWatchdog;->setWatchdogTriggerEnabled(Z)V +PLcom/android/server/wifi/WifiLockManager$WifiLock;->getBinder()Landroid/os/IBinder; +PLcom/android/server/wifi/WifiLockManager;->(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;)V +PLcom/android/server/wifi/WifiLockManager;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/WifiLockManager;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiLockManager;->isValidLockMode(I)Z +PLcom/android/server/wifi/WifiMetrics$1;->(Lcom/android/server/wifi/WifiMetrics;Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiMetrics$1;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-get1(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-get2(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)J +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-get3(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)J +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set0(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set1(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set2(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;J)J +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set3(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;J)J +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set4(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;Z)Z +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->-set5(Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;I)I +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->(Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->(Lcom/android/server/wifi/WifiMetrics;Lcom/android/server/wifi/WifiMetrics$ConnectionEvent;)V +PLcom/android/server/wifi/WifiMetrics$ConnectionEvent;->toString()Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->-get0(Lcom/android/server/wifi/WifiMetrics$RouterFingerPrint;)Lcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint; +PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->(Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->toString()Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics$RouterFingerPrint;->updateFromWifiConfiguration(Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiMetrics;->-get0(Lcom/android/server/wifi/WifiMetrics;)Lcom/android/server/wifi/WifiMetrics$ConnectionEvent; +PLcom/android/server/wifi/WifiMetrics;->-get1(Lcom/android/server/wifi/WifiMetrics;)Ljava/lang/Object; +PLcom/android/server/wifi/WifiMetrics;->-getandroid-net-wifi-SupplicantStateSwitchesValues()[I +PLcom/android/server/wifi/WifiMetrics;->-wrap0(Lcom/android/server/wifi/WifiMetrics;Landroid/os/Message;)V +PLcom/android/server/wifi/WifiMetrics;->-wrap1(Lcom/android/server/wifi/WifiMetrics;Landroid/net/wifi/ScanResult;)V +PLcom/android/server/wifi/WifiMetrics;->(Lcom/android/server/wifi/Clock;Landroid/os/Looper;Lcom/android/server/wifi/aware/WifiAwareMetrics;)V +PLcom/android/server/wifi/WifiMetrics;->addStaEvent(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)V +PLcom/android/server/wifi/WifiMetrics;->bitSetToInt(Ljava/util/BitSet;)I +PLcom/android/server/wifi/WifiMetrics;->configInfoToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics;->createConfigInfo(Landroid/net/wifi/WifiConfiguration;)Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo; +PLcom/android/server/wifi/WifiMetrics;->endConnectionEvent(II)V +PLcom/android/server/wifi/WifiMetrics;->getHandler()Landroid/os/Handler; +PLcom/android/server/wifi/WifiMetrics;->getScanReturnEntry(I)I +PLcom/android/server/wifi/WifiMetrics;->getSystemStateCount(IZ)I +PLcom/android/server/wifi/WifiMetrics;->incrementNonEmptyScanResultCount()V +PLcom/android/server/wifi/WifiMetrics;->incrementOneshotScanCount()V +PLcom/android/server/wifi/WifiMetrics;->logStaEvent(I)V +PLcom/android/server/wifi/WifiMetrics;->logStaEvent(IILandroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiMetrics;->logStaEvent(ILandroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiMetrics;->processMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/WifiMetrics;->setConnectionScanDetail(Lcom/android/server/wifi/ScanDetail;)V +PLcom/android/server/wifi/WifiMetrics;->setPasspointManager(Lcom/android/server/wifi/hotspot2/PasspointManager;)V +PLcom/android/server/wifi/WifiMetrics;->setScreenState(Z)V +PLcom/android/server/wifi/WifiMetrics;->setWifiConfigManager(Lcom/android/server/wifi/WifiConfigManager;)V +PLcom/android/server/wifi/WifiMetrics;->setWifiNetworkSelector(Lcom/android/server/wifi/WifiNetworkSelector;)V +PLcom/android/server/wifi/WifiMetrics;->setWifiState(I)V +PLcom/android/server/wifi/WifiMetrics;->staEventToString(Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics;->startConnectionEvent(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V +PLcom/android/server/wifi/WifiMetrics;->supplicantStateChangesBitmaskToString(I)Ljava/lang/String; +PLcom/android/server/wifi/WifiMetrics;->supplicantStateToBit(Landroid/net/wifi/SupplicantState;)I +PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromNetworkDetail(Lcom/android/server/wifi/hotspot2/NetworkDetail;)V +PLcom/android/server/wifi/WifiMetrics;->updateMetricsFromScanResult(Landroid/net/wifi/ScanResult;)V +PLcom/android/server/wifi/WifiMetrics;->updateSavedNetworks(Ljava/util/List;)V +PLcom/android/server/wifi/WifiMetrics;->updateSavedPasspointProfiles(II)V +PLcom/android/server/wifi/WifiMonitor;->(Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastAssociatedBssidEvent(Ljava/lang/String;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastNetworkConnectionEvent(Ljava/lang/String;ILjava/lang/String;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastScanResultEvent(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantConnectionEvent(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantDisconnectionEvent(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMonitor;->broadcastSupplicantStateChangeEvent(Ljava/lang/String;ILandroid/net/wifi/WifiSsid;Ljava/lang/String;Landroid/net/wifi/SupplicantState;)V +PLcom/android/server/wifi/WifiMonitor;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiMonitor;->ensureConnectedLocked()Z +PLcom/android/server/wifi/WifiMonitor;->registerHandler(Ljava/lang/String;ILandroid/os/Handler;)V +PLcom/android/server/wifi/WifiMonitor;->sendMessage(Ljava/lang/String;IIILjava/lang/Object;)V +PLcom/android/server/wifi/WifiMonitor;->setMonitoring(Ljava/lang/String;Z)V +PLcom/android/server/wifi/WifiMonitor;->setMonitoringNone()V +PLcom/android/server/wifi/WifiMonitor;->startMonitoring(Ljava/lang/String;Z)V +PLcom/android/server/wifi/WifiMonitor;->stopAllMonitoring()V +PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->(Lcom/android/server/wifi/WifiMulticastLockManager;Ljava/lang/String;Landroid/os/IBinder;)V +PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->getUid()I +PLcom/android/server/wifi/WifiMulticastLockManager$Multicaster;->unlinkDeathRecipient()V +PLcom/android/server/wifi/WifiMulticastLockManager;->(Lcom/android/server/wifi/WifiMulticastLockManager$FilterController;Lcom/android/internal/app/IBatteryStats;)V +PLcom/android/server/wifi/WifiMulticastLockManager;->acquireLock(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiMulticastLockManager;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/WifiMulticastLockManager;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiMulticastLockManager;->releaseLock()V +PLcom/android/server/wifi/WifiMulticastLockManager;->removeMulticasterLocked(II)V +PLcom/android/server/wifi/WifiNative$BucketSettings;->()V +PLcom/android/server/wifi/WifiNative$ChannelSettings;->()V +PLcom/android/server/wifi/WifiNative$FateReport;->getTableHeader()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$RoamingCapabilities;->()V +PLcom/android/server/wifi/WifiNative$RoamingConfig;->()V +PLcom/android/server/wifi/WifiNative$RxFateReport;->(BJB[B)V +PLcom/android/server/wifi/WifiNative$RxFateReport;->directionToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$RxFateReport;->fateToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$RxFateReport;->toTableRowString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$ScanCapabilities;->()V +PLcom/android/server/wifi/WifiNative$ScanSettings;->()V +PLcom/android/server/wifi/WifiNative$TxFateReport;->(BJB[B)V +PLcom/android/server/wifi/WifiNative$TxFateReport;->directionToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$TxFateReport;->fateToString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative$TxFateReport;->toTableRowString()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->(Ljava/lang/String;Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/SupplicantStaIfaceHal;Lcom/android/server/wifi/WificondControl;)V +PLcom/android/server/wifi/WifiNative;->configureNeighborDiscoveryOffload(Z)Z +PLcom/android/server/wifi/WifiNative;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z +PLcom/android/server/wifi/WifiNative;->connectToNetwork(Landroid/net/wifi/WifiConfiguration;)Z +PLcom/android/server/wifi/WifiNative;->connectToSupplicant()Z +PLcom/android/server/wifi/WifiNative;->disconnect()Z +PLcom/android/server/wifi/WifiNative;->enableStaAutoReconnect(Z)Z +PLcom/android/server/wifi/WifiNative;->enableSupplicant()Z +PLcom/android/server/wifi/WifiNative;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiNative;->getApfCapabilities()Landroid/net/apf/ApfCapabilities; +PLcom/android/server/wifi/WifiNative;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z +PLcom/android/server/wifi/WifiNative;->getDriverVersion()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->getFirmwareVersion()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->getFrameworkNetworkId(I)I +PLcom/android/server/wifi/WifiNative;->getInterfaceName()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->getMacAddress()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->getRingBufferData(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus; +PLcom/android/server/wifi/WifiNative;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z +PLcom/android/server/wifi/WifiNative;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z +PLcom/android/server/wifi/WifiNative;->getSupportedFeatureSet()I +PLcom/android/server/wifi/WifiNative;->getSupportedLoggerFeatureSet()I +PLcom/android/server/wifi/WifiNative;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z +PLcom/android/server/wifi/WifiNative;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts; +PLcom/android/server/wifi/WifiNative;->initializeVendorHal(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z +PLcom/android/server/wifi/WifiNative;->installPacketFilter([B)Z +PLcom/android/server/wifi/WifiNative;->readKernelLog()Ljava/lang/String; +PLcom/android/server/wifi/WifiNative;->removeAllNetworks()Z +PLcom/android/server/wifi/WifiNative;->scan(Ljava/util/Set;Ljava/util/Set;)Z +PLcom/android/server/wifi/WifiNative;->setBluetoothCoexistenceMode(I)Z +PLcom/android/server/wifi/WifiNative;->setBluetoothCoexistenceScanMode(Z)Z +PLcom/android/server/wifi/WifiNative;->setConcurrencyPriority(Z)Z +PLcom/android/server/wifi/WifiNative;->setConfigMethods(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setConfiguredNetworkBSSID(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setCountryCode(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setDeviceName(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setDeviceType(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setExternalSim(Z)Z +PLcom/android/server/wifi/WifiNative;->setLoggingEventHandler(Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;)Z +PLcom/android/server/wifi/WifiNative;->setManufacturer(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setModelName(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setModelNumber(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setPowerSave(Z)V +PLcom/android/server/wifi/WifiNative;->setScanningMacOui([B)Z +PLcom/android/server/wifi/WifiNative;->setSerialNumber(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->setSupplicantLogLevel(Z)V +PLcom/android/server/wifi/WifiNative;->setSuspendOptimizations(Z)Z +PLcom/android/server/wifi/WifiNative;->setupForClientMode()Landroid/util/Pair; +PLcom/android/server/wifi/WifiNative;->startHalIfNecessary(Z)Z +PLcom/android/server/wifi/WifiNative;->startLoggingRingBuffer(IIIILjava/lang/String;)Z +PLcom/android/server/wifi/WifiNative;->startPktFateMonitoring()Z +PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV4Packets()Z +PLcom/android/server/wifi/WifiNative;->stopFilteringMulticastV6Packets()Z +PLcom/android/server/wifi/WifiNative;->stopHalIfNecessary()V +PLcom/android/server/wifi/WifiNative;->stopRssiMonitoring()I +PLcom/android/server/wifi/WifiNative;->tearDown()V +PLcom/android/server/wifi/WifiNetworkHistory;->(Landroid/content/Context;Lcom/android/server/net/DelayedDiskWrite;)V +PLcom/android/server/wifi/WifiNetworkSelector;->(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;Landroid/util/LocalLog;)V +PLcom/android/server/wifi/WifiNetworkSelector;->getConnectableScanDetails()Ljava/util/List; +PLcom/android/server/wifi/WifiNetworkSelector;->overrideCandidateWithUserConnectChoice(Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiNetworkSelector;->registerNetworkEvaluator(Lcom/android/server/wifi/WifiNetworkSelector$NetworkEvaluator;I)Z +PLcom/android/server/wifi/WifiNetworkSelector;->toNetworkString(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String; +PLcom/android/server/wifi/WifiScoreReport;->(Landroid/content/Context;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/WifiScoreReport;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiScoreReport;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/WifiScoreReport;->reset()V +PLcom/android/server/wifi/WifiService;->(Landroid/content/Context;)V +PLcom/android/server/wifi/WifiService;->onBootPhase(I)V +PLcom/android/server/wifi/WifiService;->onStart()V +PLcom/android/server/wifi/WifiService;->onUnlockUser(I)V +PLcom/android/server/wifi/WifiServiceImpl$1;->(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$2;->(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/WifiServiceImpl$3;->(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/WifiServiceImpl$4;->(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$5;->(Lcom/android/server/wifi/WifiServiceImpl;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiServiceImpl$6;->(Lcom/android/server/wifi/WifiServiceImpl;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiServiceImpl$7;->(Lcom/android/server/wifi/WifiServiceImpl;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiServiceImpl$8;->(Lcom/android/server/wifi/WifiServiceImpl;)V +PLcom/android/server/wifi/WifiServiceImpl$ClientHandler;->(Lcom/android/server/wifi/WifiServiceImpl;Ljava/lang/String;Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiServiceImpl$ClientHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/WifiServiceImpl$WifiStateMachineHandler;->(Lcom/android/server/wifi/WifiServiceImpl;Ljava/lang/String;Landroid/os/Looper;Lcom/android/internal/util/AsyncChannel;)V +PLcom/android/server/wifi/WifiServiceImpl$WifiStateMachineHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wifi/WifiServiceImpl;->-get0(Lcom/android/server/wifi/WifiServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/WifiServiceImpl;->-get1(Lcom/android/server/wifi/WifiServiceImpl;)Lcom/android/server/wifi/WifiCountryCode; +PLcom/android/server/wifi/WifiServiceImpl;->-get2(Lcom/android/server/wifi/WifiServiceImpl;)Lcom/android/server/wifi/FrameworkFacade; +PLcom/android/server/wifi/WifiServiceImpl;->-get3(Lcom/android/server/wifi/WifiServiceImpl;)Lcom/android/server/wifi/WifiTrafficPoller; +PLcom/android/server/wifi/WifiServiceImpl;->-get4(Lcom/android/server/wifi/WifiServiceImpl;)Lcom/android/server/wifi/WifiController; +PLcom/android/server/wifi/WifiServiceImpl;->-set0(Lcom/android/server/wifi/WifiServiceImpl;Lcom/android/internal/util/AsyncChannel;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/WifiServiceImpl;->(Landroid/content/Context;Lcom/android/server/wifi/WifiInjector;Lcom/android/internal/util/AsyncChannel;)V +PLcom/android/server/wifi/WifiServiceImpl;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiServiceImpl;->checkAndStartWifi()V +PLcom/android/server/wifi/WifiServiceImpl;->checkNetworkSettingsPermission(II)Z +PLcom/android/server/wifi/WifiServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiServiceImpl;->enableVerboseLoggingInternal(I)V +PLcom/android/server/wifi/WifiServiceImpl;->enforceChangePermission()V +PLcom/android/server/wifi/WifiServiceImpl;->enforceMulticastChangePermission()V +PLcom/android/server/wifi/WifiServiceImpl;->getSupportedFeatures()I +PLcom/android/server/wifi/WifiServiceImpl;->getVerboseLoggingLevel()I +PLcom/android/server/wifi/WifiServiceImpl;->getWifiApEnabledState()I +PLcom/android/server/wifi/WifiServiceImpl;->getWifiServiceMessenger()Landroid/os/Messenger; +PLcom/android/server/wifi/WifiServiceImpl;->handleUserUnlock(I)V +PLcom/android/server/wifi/WifiServiceImpl;->isRequestFromBackground(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiServiceImpl;->isScanAlwaysAvailable()Z +PLcom/android/server/wifi/WifiServiceImpl;->registerForBackgroundThrottleChanges()V +PLcom/android/server/wifi/WifiServiceImpl;->registerForBroadcasts()V +PLcom/android/server/wifi/WifiServiceImpl;->registerForPackageOrUserRemoval()V +PLcom/android/server/wifi/WifiServiceImpl;->registerForScanModeChange()V +PLcom/android/server/wifi/WifiServiceImpl;->releaseMulticastLock()V +PLcom/android/server/wifi/WifiServiceImpl;->setWifiEnabled(Ljava/lang/String;Z)Z +PLcom/android/server/wifi/WifiServiceImpl;->startScan(Landroid/net/wifi/ScanSettings;Landroid/os/WorkSource;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottleInterval()V +PLcom/android/server/wifi/WifiServiceImpl;->updateBackgroundThrottlingWhitelist()V +PLcom/android/server/wifi/WifiSettingsStore;->(Landroid/content/Context;)V +PLcom/android/server/wifi/WifiSettingsStore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiSettingsStore;->getPersistedAirplaneModeOn()Z +PLcom/android/server/wifi/WifiSettingsStore;->getPersistedScanAlwaysAvailable()Z +PLcom/android/server/wifi/WifiSettingsStore;->getPersistedWifiState()I +PLcom/android/server/wifi/WifiSettingsStore;->getWifiSavedState()I +PLcom/android/server/wifi/WifiSettingsStore;->handleAirplaneModeToggled()Z +PLcom/android/server/wifi/WifiSettingsStore;->handleWifiToggled(Z)Z +PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneModeOn()Z +PLcom/android/server/wifi/WifiSettingsStore;->isAirplaneSensitive()Z +PLcom/android/server/wifi/WifiSettingsStore;->isScanAlwaysAvailable()Z +PLcom/android/server/wifi/WifiSettingsStore;->isWifiToggleEnabled()Z +PLcom/android/server/wifi/WifiSettingsStore;->persistWifiState(I)V +PLcom/android/server/wifi/WifiSettingsStore;->testAndClearWifiSavedState()Z +PLcom/android/server/wifi/WifiStateMachine$1;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$2;->(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Handler;)V +PLcom/android/server/wifi/WifiStateMachine$3;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/WifiStateMachine$4;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$4;->onResults([Landroid/net/wifi/WifiScanner$ScanData;)V +PLcom/android/server/wifi/WifiStateMachine$4;->onSuccess()V +PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$ConnectModeState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$ConnectedState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$DefaultState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->exit()V +PLcom/android/server/wifi/WifiStateMachine$DisconnectedState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiStateMachine$DisconnectingState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$InitialState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$InitialState;->cleanup()V +PLcom/android/server/wifi/WifiStateMachine$InitialState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$InitialState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->installPacketFilter([B)V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onLinkPropertiesChange(Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onNewDhcpResults(Landroid/net/DhcpResults;)V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onPostDhcpAction()V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onPreDhcpAction()V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->onProvisioningSuccess(Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine$IpManagerCallback;->setNeighborDiscoveryOffload(Z)V +PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$L2ConnectedState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$ObtainingIpState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiStateMachine$RoamingState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$ScanModeState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$ScanModeState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$ScanModeState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiStateMachine$SoftApState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$SupplicantStartedState;->enter()V +PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->initializeWpsDetails()V +PLcom/android/server/wifi/WifiStateMachine$SupplicantStartingState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/WifiStateMachine$SupplicantStoppingState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V +PLcom/android/server/wifi/WifiStateMachine$WaitForP2pDisableState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->networkStatus(ILjava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;->setSignalStrengthThresholds([I)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V +PLcom/android/server/wifi/WifiStateMachine$WifiPhoneStateListener;->(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiStateMachine$WpsRunningState;->(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-get10(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/StateMachineDeathRecipient; +PLcom/android/server/wifi/WifiStateMachine;->-get11(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get17(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get18(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get2(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get21(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get22(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/ip/IpManager; +PLcom/android/server/wifi/WifiStateMachine;->-get24(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get25(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get27(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get28(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/LinkProperties; +PLcom/android/server/wifi/WifiStateMachine;->-get3(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/Queue; +PLcom/android/server/wifi/WifiStateMachine;->-get30(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkCapabilities; +PLcom/android/server/wifi/WifiStateMachine;->-get31(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkInfo; +PLcom/android/server/wifi/WifiStateMachine;->-get32(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/NetworkMisc; +PLcom/android/server/wifi/WifiStateMachine;->-get33(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get34(Lcom/android/server/wifi/WifiStateMachine;)Landroid/os/INetworkManagementService; +PLcom/android/server/wifi/WifiStateMachine;->-get35(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get36(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get37(Lcom/android/server/wifi/WifiStateMachine;)Ljava/util/concurrent/atomic/AtomicBoolean; +PLcom/android/server/wifi/WifiStateMachine;->-get38(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get4(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/IClientInterface; +PLcom/android/server/wifi/WifiStateMachine;->-get40(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get42(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get43(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/PropertyService; +PLcom/android/server/wifi/WifiStateMachine;->-get47(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get48(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get5(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/Clock; +PLcom/android/server/wifi/WifiStateMachine;->-get51(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get52(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get53(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/SupplicantStateTracker; +PLcom/android/server/wifi/WifiStateMachine;->-get55(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get57(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get58(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get59(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-get6(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/State; +PLcom/android/server/wifi/WifiStateMachine;->-get60(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get62(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get64(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler; +PLcom/android/server/wifi/WifiStateMachine;->-get67(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConfigManager; +PLcom/android/server/wifi/WifiStateMachine;->-get69(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiConnectivityManager; +PLcom/android/server/wifi/WifiStateMachine;->-get7(Lcom/android/server/wifi/WifiStateMachine;)I +PLcom/android/server/wifi/WifiStateMachine;->-get70(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/BaseWifiDiagnostics; +PLcom/android/server/wifi/WifiStateMachine;->-get72(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiInjector; +PLcom/android/server/wifi/WifiStateMachine;->-get75(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiMonitor; +PLcom/android/server/wifi/WifiStateMachine;->-get76(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiNative; +PLcom/android/server/wifi/WifiStateMachine;->-get77(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/WifiStateMachine;->-get78(Lcom/android/server/wifi/WifiStateMachine;)Ljava/lang/Object; +PLcom/android/server/wifi/WifiStateMachine;->-get79(Lcom/android/server/wifi/WifiStateMachine;)Landroid/net/wifi/WifiScanner; +PLcom/android/server/wifi/WifiStateMachine;->-get8(Lcom/android/server/wifi/WifiStateMachine;)Landroid/content/Context; +PLcom/android/server/wifi/WifiStateMachine;->-get81(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiStateTracker; +PLcom/android/server/wifi/WifiStateMachine;->-get85(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-get9(Lcom/android/server/wifi/WifiStateMachine;)Lcom/android/server/wifi/WifiCountryCode; +PLcom/android/server/wifi/WifiStateMachine;->-set1(Lcom/android/server/wifi/WifiStateMachine;J)J +PLcom/android/server/wifi/WifiStateMachine;->-set10(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-set11(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-set12(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-set13(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->-set14(Lcom/android/server/wifi/WifiStateMachine;J)J +PLcom/android/server/wifi/WifiStateMachine;->-set15(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set16(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set17(Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent;)Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent; +PLcom/android/server/wifi/WifiStateMachine;->-set18(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set19(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set21(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set24(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set25(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set29(Lcom/android/server/wifi/WifiStateMachine;Lcom/android/server/wifi/WifiConnectivityManager;)Lcom/android/server/wifi/WifiConnectivityManager; +PLcom/android/server/wifi/WifiStateMachine;->-set3(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/IClientInterface;)Landroid/net/wifi/IClientInterface; +PLcom/android/server/wifi/WifiStateMachine;->-set30(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiScanner;)Landroid/net/wifi/WifiScanner; +PLcom/android/server/wifi/WifiStateMachine;->-set31(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set32(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;)Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiStateMachine;->-set4(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-set5(Lcom/android/server/wifi/WifiStateMachine;J)J +PLcom/android/server/wifi/WifiStateMachine;->-set7(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-set8(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-set9(Lcom/android/server/wifi/WifiStateMachine;Z)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap0(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)Landroid/net/wifi/SupplicantState; +PLcom/android/server/wifi/WifiStateMachine;->-wrap10(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap11(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap12(Lcom/android/server/wifi/WifiStateMachine;I)I +PLcom/android/server/wifi/WifiStateMachine;->-wrap19(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap21(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/DhcpResults;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap25(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap27(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap33(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap35(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;II)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap36(Lcom/android/server/wifi/WifiStateMachine;Landroid/os/Message;ILjava/lang/Object;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap37(Lcom/android/server/wifi/WifiStateMachine;II)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap38(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap39(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap40(Lcom/android/server/wifi/WifiStateMachine;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap42(Lcom/android/server/wifi/WifiStateMachine;Z)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap43(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap45(Lcom/android/server/wifi/WifiStateMachine;IZ)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap47(Lcom/android/server/wifi/WifiStateMachine;I)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap48(Lcom/android/server/wifi/WifiStateMachine;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap49(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine;->-wrap5(Lcom/android/server/wifi/WifiStateMachine;)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap8(Lcom/android/server/wifi/WifiStateMachine;I)Z +PLcom/android/server/wifi/WifiStateMachine;->-wrap9(Lcom/android/server/wifi/WifiStateMachine;Landroid/net/NetworkInfo$DetailedState;)Z +PLcom/android/server/wifi/WifiStateMachine;->(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;Landroid/os/Looper;Landroid/os/UserManager;Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/BackupManagerProxy;Lcom/android/server/wifi/WifiCountryCode;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WrongPasswordNotifier;)V +PLcom/android/server/wifi/WifiStateMachine;->checkAndSetConnectivityInstance()V +PLcom/android/server/wifi/WifiStateMachine;->clearANQPCache()V +PLcom/android/server/wifi/WifiStateMachine;->clearTargetBssid(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiStateMachine;->configureVerboseHalLogging(Z)V +PLcom/android/server/wifi/WifiStateMachine;->doNetworkStatus(I)V +PLcom/android/server/wifi/WifiStateMachine;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->dumpIpManager(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->enableRssiPolling(Z)V +PLcom/android/server/wifi/WifiStateMachine;->enableVerboseLogging(I)V +PLcom/android/server/wifi/WifiStateMachine;->getAdditionalWifiServiceInterfaces()V +PLcom/android/server/wifi/WifiStateMachine;->getCurrentScanResult()Landroid/net/wifi/ScanResult; +PLcom/android/server/wifi/WifiStateMachine;->getCurrentWifiConfiguration()Landroid/net/wifi/WifiConfiguration; +PLcom/android/server/wifi/WifiStateMachine;->getLinkPropertiesSummary(Landroid/net/LinkProperties;)Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->getNetworkDetailedState()Landroid/net/NetworkInfo$DetailedState; +PLcom/android/server/wifi/WifiStateMachine;->getWifiScoreReport()Lcom/android/server/wifi/WifiScoreReport; +PLcom/android/server/wifi/WifiStateMachine;->handleIPv4Success(Landroid/net/DhcpResults;)V +PLcom/android/server/wifi/WifiStateMachine;->handlePostDhcpSetup()V +PLcom/android/server/wifi/WifiStateMachine;->handlePreDhcpSetup()V +PLcom/android/server/wifi/WifiStateMachine;->handleScanRequest(Landroid/os/Message;)V +PLcom/android/server/wifi/WifiStateMachine;->handleScreenStateChanged(Z)V +PLcom/android/server/wifi/WifiStateMachine;->handleSuccessfulIpConfiguration()V +PLcom/android/server/wifi/WifiStateMachine;->handleSupplicantStateChange(Landroid/os/Message;)Landroid/net/wifi/SupplicantState; +PLcom/android/server/wifi/WifiStateMachine;->handleUserUnlock(I)V +PLcom/android/server/wifi/WifiStateMachine;->hasConnectionRequests()Z +PLcom/android/server/wifi/WifiStateMachine;->isConnected()Z +PLcom/android/server/wifi/WifiStateMachine;->isLinkDebouncing()Z +PLcom/android/server/wifi/WifiStateMachine;->isSupplicantTransientState()Z +PLcom/android/server/wifi/WifiStateMachine;->log(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->logd(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->lookupFrameworkNetworkId(I)I +PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterNetworkFactory()V +PLcom/android/server/wifi/WifiStateMachine;->maybeRegisterPhoneListener()V +PLcom/android/server/wifi/WifiStateMachine;->obtainMessageWithWhatAndArg2(Landroid/os/Message;I)Landroid/os/Message; +PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(I)Z +PLcom/android/server/wifi/WifiStateMachine;->p2pSendMessage(II)Z +PLcom/android/server/wifi/WifiStateMachine;->registerConnected()V +PLcom/android/server/wifi/WifiStateMachine;->reloadTlsNetworksAndReconnect()V +PLcom/android/server/wifi/WifiStateMachine;->replyToMessage(Landroid/os/Message;II)V +PLcom/android/server/wifi/WifiStateMachine;->replyToMessage(Landroid/os/Message;ILjava/lang/Object;)V +PLcom/android/server/wifi/WifiStateMachine;->reportConnectionAttemptEnd(II)V +PLcom/android/server/wifi/WifiStateMachine;->reportConnectionAttemptStart(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;I)V +PLcom/android/server/wifi/WifiStateMachine;->reportOnTime()Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->resetSimAuthNetworks(Z)V +PLcom/android/server/wifi/WifiStateMachine;->sendConnectedState()V +PLcom/android/server/wifi/WifiStateMachine;->sendLinkConfigurationChangedBroadcast()V +PLcom/android/server/wifi/WifiStateMachine;->sendNetworkStateChangeBroadcast(Ljava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->sendRssiChangeBroadcast(I)V +PLcom/android/server/wifi/WifiStateMachine;->sendSupplicantConnectionChangedBroadcast(Z)V +PLcom/android/server/wifi/WifiStateMachine;->setHighPerfModeEnabled(Z)V +PLcom/android/server/wifi/WifiStateMachine;->setNetworkDetailedState(Landroid/net/NetworkInfo$DetailedState;)Z +PLcom/android/server/wifi/WifiStateMachine;->setOperationalMode(I)V +PLcom/android/server/wifi/WifiStateMachine;->setRandomMacOui()Z +PLcom/android/server/wifi/WifiStateMachine;->setSupplicantLogLevel()V +PLcom/android/server/wifi/WifiStateMachine;->setSupplicantRunning(Z)V +PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizations(IZ)V +PLcom/android/server/wifi/WifiStateMachine;->setSuspendOptimizationsNative(IZ)V +PLcom/android/server/wifi/WifiStateMachine;->setTargetBssid(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiStateMachine;->setWifiState(I)V +PLcom/android/server/wifi/WifiStateMachine;->shouldEvaluateWhetherToSendExplicitlySelected(Landroid/net/wifi/WifiConfiguration;)Z +PLcom/android/server/wifi/WifiStateMachine;->startConnectToNetwork(ILjava/lang/String;)V +PLcom/android/server/wifi/WifiStateMachine;->startFilteringMulticastPackets()V +PLcom/android/server/wifi/WifiStateMachine;->startScan(IILandroid/net/wifi/ScanSettings;Landroid/os/WorkSource;)V +PLcom/android/server/wifi/WifiStateMachine;->startScanNative(Ljava/util/Set;Ljava/util/List;Landroid/os/WorkSource;)Z +PLcom/android/server/wifi/WifiStateMachine;->stopFilteringMulticastPackets()V +PLcom/android/server/wifi/WifiStateMachine;->stopIpManager()V +PLcom/android/server/wifi/WifiStateMachine;->stopRssiMonitoringOffload()I +PLcom/android/server/wifi/WifiStateMachine;->syncGetConfiguredNetworks(ILcom/android/internal/util/AsyncChannel;)Ljava/util/List; +PLcom/android/server/wifi/WifiStateMachine;->syncGetDhcpResults()Landroid/net/DhcpResults; +PLcom/android/server/wifi/WifiStateMachine;->syncGetLinkLayerStats(Lcom/android/internal/util/AsyncChannel;)Landroid/net/wifi/WifiLinkLayerStats; +PLcom/android/server/wifi/WifiStateMachine;->syncGetSupportedFeatures(Lcom/android/internal/util/AsyncChannel;)I +PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiApState()I +PLcom/android/server/wifi/WifiStateMachine;->syncGetWifiStateByName()Ljava/lang/String; +PLcom/android/server/wifi/WifiStateMachine;->syncInitialize(Lcom/android/internal/util/AsyncChannel;)Z +PLcom/android/server/wifi/WifiStateMachine;->updateBatteryWorkSource(Landroid/os/WorkSource;)V +PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities()V +PLcom/android/server/wifi/WifiStateMachine;->updateCapabilities(Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/WifiStateMachine;->updateLinkProperties(Landroid/net/LinkProperties;)V +PLcom/android/server/wifi/WifiStateMachine;->updateWifiMetrics()V +PLcom/android/server/wifi/WifiStateTracker;->(Lcom/android/internal/app/IBatteryStats;)V +PLcom/android/server/wifi/WifiStateTracker;->informWifiStateBatteryStats(I)V +PLcom/android/server/wifi/WifiStateTracker;->updateState(I)V +PLcom/android/server/wifi/WifiTrafficPoller$1;->(Lcom/android/server/wifi/WifiTrafficPoller;)V +PLcom/android/server/wifi/WifiTrafficPoller$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/WifiTrafficPoller$TrafficHandler;->(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiTrafficPoller;->-get0(Lcom/android/server/wifi/WifiTrafficPoller;)Ljava/util/List; +PLcom/android/server/wifi/WifiTrafficPoller;->-get1(Lcom/android/server/wifi/WifiTrafficPoller;)Z +PLcom/android/server/wifi/WifiTrafficPoller;->-get4(Lcom/android/server/wifi/WifiTrafficPoller;)Z +PLcom/android/server/wifi/WifiTrafficPoller;->-set0(Lcom/android/server/wifi/WifiTrafficPoller;Z)Z +PLcom/android/server/wifi/WifiTrafficPoller;->-set1(Lcom/android/server/wifi/WifiTrafficPoller;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo; +PLcom/android/server/wifi/WifiTrafficPoller;->-set2(Lcom/android/server/wifi/WifiTrafficPoller;I)I +PLcom/android/server/wifi/WifiTrafficPoller;->-wrap0(Lcom/android/server/wifi/WifiTrafficPoller;)V +PLcom/android/server/wifi/WifiTrafficPoller;->(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;)V +PLcom/android/server/wifi/WifiTrafficPoller;->addClient(Landroid/os/Messenger;)V +PLcom/android/server/wifi/WifiTrafficPoller;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/WifiTrafficPoller;->evaluateTrafficStatsPolling()V +PLcom/android/server/wifi/WifiVendorHal$5AnswerBox;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$6AnswerBox;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$9AnswerBox;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$ChipEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$ChipEventCallback;)V +PLcom/android/server/wifi/WifiVendorHal$HalDeviceManagerStatusListener;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$HalDeviceManagerStatusListener;->onStatusChanged()V +PLcom/android/server/wifi/WifiVendorHal$RttEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$RttEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$RttEventCallback;)V +PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;)V +PLcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;->(Lcom/android/server/wifi/WifiVendorHal;Lcom/android/server/wifi/WifiVendorHal$StaIfaceEventCallback;)V +PLcom/android/server/wifi/WifiVendorHal;->-get1(Lcom/android/server/wifi/WifiVendorHal;)Lcom/android/server/wifi/HalDeviceManager; +PLcom/android/server/wifi/WifiVendorHal;->-get7()Landroid/net/apf/ApfCapabilities; +PLcom/android/server/wifi/WifiVendorHal;->(Lcom/android/server/wifi/HalDeviceManager;Landroid/os/Looper;)V +PLcom/android/server/wifi/WifiVendorHal;->boolResult(Z)Z +PLcom/android/server/wifi/WifiVendorHal;->configureNeighborDiscoveryOffload(Z)Z +PLcom/android/server/wifi/WifiVendorHal;->configureRoaming(Lcom/android/server/wifi/WifiNative$RoamingConfig;)Z +PLcom/android/server/wifi/WifiVendorHal;->enableLinkLayerStats()V +PLcom/android/server/wifi/WifiVendorHal;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/WifiVendorHal;->getApfCapabilities()Landroid/net/apf/ApfCapabilities; +PLcom/android/server/wifi/WifiVendorHal;->getBgScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z +PLcom/android/server/wifi/WifiVendorHal;->getDriverVersion()Ljava/lang/String; +PLcom/android/server/wifi/WifiVendorHal;->getFirmwareVersion()Ljava/lang/String; +PLcom/android/server/wifi/WifiVendorHal;->getRingBufferData(Ljava/lang/String;)Z +PLcom/android/server/wifi/WifiVendorHal;->getRingBufferStatus()[Lcom/android/server/wifi/WifiNative$RingBufferStatus; +PLcom/android/server/wifi/WifiVendorHal;->getRoamingCapabilities(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;)Z +PLcom/android/server/wifi/WifiVendorHal;->getRxPktFates([Lcom/android/server/wifi/WifiNative$RxFateReport;)Z +PLcom/android/server/wifi/WifiVendorHal;->getSupportedLoggerFeatureSet()I +PLcom/android/server/wifi/WifiVendorHal;->getTxPktFates([Lcom/android/server/wifi/WifiNative$TxFateReport;)Z +PLcom/android/server/wifi/WifiVendorHal;->getWlanWakeReasonCount()Landroid/net/wifi/WifiWakeReasonAndCounts; +PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkPktFateFrameType(I)B +PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkRxPktFate(I)B +PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkTxPktFate(I)B +PLcom/android/server/wifi/WifiVendorHal;->halToFrameworkWakeReasons(Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)Landroid/net/wifi/WifiWakeReasonAndCounts; +PLcom/android/server/wifi/WifiVendorHal;->initialize(Lcom/android/server/wifi/WifiNative$VendorHalDeathEventHandler;)Z +PLcom/android/server/wifi/WifiVendorHal;->installPacketFilter([B)Z +PLcom/android/server/wifi/WifiVendorHal;->intsFromArrayList(Ljava/util/ArrayList;)[I +PLcom/android/server/wifi/WifiVendorHal;->isVendorHalSupported()Z +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_15968(Lcom/android/server/wifi/WifiNative$ScanCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaBackgroundScanCapabilities;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33324(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_33628(Landroid/util/MutableInt;Landroid/hardware/wifi/V1_0/WifiStatus;I)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_58656(Lcom/android/server/wifi/WifiVendorHal$5AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaApfPacketFilterCapabilities;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_65573(Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/IWifiChip$ChipDebugInfo;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_68516(Lcom/android/server/wifi/WifiVendorHal$6AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_84576(Lcom/android/server/wifi/WifiVendorHal$9AnswerBox;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/WifiDebugHostWakeReasonStats;)V +PLcom/android/server/wifi/WifiVendorHal;->lambda$-com_android_server_wifi_WifiVendorHal_86203(Lcom/android/server/wifi/WifiNative$RoamingCapabilities;Landroid/util/MutableBoolean;Landroid/hardware/wifi/V1_0/WifiStatus;Landroid/hardware/wifi/V1_0/StaRoamingCapabilities;)V +PLcom/android/server/wifi/WifiVendorHal;->makeRingBufferStatusArray(Ljava/util/ArrayList;)[Lcom/android/server/wifi/WifiNative$RingBufferStatus; +PLcom/android/server/wifi/WifiVendorHal;->niceMethodName([Ljava/lang/StackTraceElement;I)Ljava/lang/String; +PLcom/android/server/wifi/WifiVendorHal;->registerChipCallback()Z +PLcom/android/server/wifi/WifiVendorHal;->registerRttEventCallback()Z +PLcom/android/server/wifi/WifiVendorHal;->registerStaIfaceCallback()Z +PLcom/android/server/wifi/WifiVendorHal;->requestChipDebugInfo()V +PLcom/android/server/wifi/WifiVendorHal;->setLoggingEventHandler(Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler;)Z +PLcom/android/server/wifi/WifiVendorHal;->setScanningMacOui([B)Z +PLcom/android/server/wifi/WifiVendorHal;->startLoggingRingBuffer(IIIILjava/lang/String;)Z +PLcom/android/server/wifi/WifiVendorHal;->startPktFateMonitoring()Z +PLcom/android/server/wifi/WifiVendorHal;->startVendorHal(Z)Z +PLcom/android/server/wifi/WifiVendorHal;->stopRssiMonitoring()I +PLcom/android/server/wifi/WifiVendorHal;->wifiFeatureMaskFromChipCapabilities(I)I +PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;->(Lcom/android/server/wifi/WificondControl;)V +PLcom/android/server/wifi/WificondControl$PnoScanEventHandler;->(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$PnoScanEventHandler;)V +PLcom/android/server/wifi/WificondControl$ScanEventHandler;->(Lcom/android/server/wifi/WificondControl;)V +PLcom/android/server/wifi/WificondControl$ScanEventHandler;->(Lcom/android/server/wifi/WificondControl;Lcom/android/server/wifi/WificondControl$ScanEventHandler;)V +PLcom/android/server/wifi/WificondControl;->-get0(Lcom/android/server/wifi/WificondControl;)Ljava/lang/String; +PLcom/android/server/wifi/WificondControl;->-get1(Lcom/android/server/wifi/WificondControl;)Lcom/android/server/wifi/WifiMonitor; +PLcom/android/server/wifi/WificondControl;->(Lcom/android/server/wifi/WifiInjector;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/CarrierNetworkConfig;)V +PLcom/android/server/wifi/WificondControl;->abortScan()V +PLcom/android/server/wifi/WificondControl;->enableSupplicant()Z +PLcom/android/server/wifi/WificondControl;->enableVerboseLogging(Z)V +PLcom/android/server/wifi/WificondControl;->setupDriverForClientMode()Landroid/net/wifi/IClientInterface; +PLcom/android/server/wifi/WificondControl;->tearDownInterfaces()Z +PLcom/android/server/wifi/WrongPasswordNotifier;->(Landroid/content/Context;Lcom/android/server/wifi/FrameworkFacade;)V +PLcom/android/server/wifi/WrongPasswordNotifier;->onNewConnectionAttempt()V +PLcom/android/server/wifi/aware/WifiAwareMetrics$HistParms;->(IIIII)V +PLcom/android/server/wifi/aware/WifiAwareMetrics;->(Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/aware/WifiAwareMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V +PLcom/android/server/wifi/hotspot2/ANQPRequestManager;->(Lcom/android/server/wifi/hotspot2/PasspointEventHandler;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/hotspot2/AnqpCache;->(Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/hotspot2/AnqpCache;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/hotspot2/CertificateVerifier;->()V +PLcom/android/server/wifi/hotspot2/LegacyPasspointConfigParser;->()V +PLcom/android/server/wifi/hotspot2/NetworkDetail$Ant;->(Ljava/lang/String;I)V +PLcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease;->(Ljava/lang/String;I)V +PLcom/android/server/wifi/hotspot2/NetworkDetail;->getAnt()Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; +PLcom/android/server/wifi/hotspot2/NetworkDetail;->getWifiMode()I +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeData(Lorg/xmlpull/v1/XmlPullParser;IZ)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeProviderList(Lorg/xmlpull/v1/XmlPullParser;I)Ljava/util/List; +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeShareData(Lorg/xmlpull/v1/XmlPullParser;I)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->deserializeUserData(Lorg/xmlpull/v1/XmlPullParser;I)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->getName()Ljava/lang/String; +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->resetData(Z)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->resetShareData()V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->resetUserData()V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->serializeData(Lorg/xmlpull/v1/XmlSerializer;Z)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->serializeProviderList(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->serializeShareData(Lorg/xmlpull/v1/XmlSerializer;)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->serializeUserData(Lorg/xmlpull/v1/XmlSerializer;)V +PLcom/android/server/wifi/hotspot2/PasspointConfigStoreData;->supportShareData()Z +PLcom/android/server/wifi/hotspot2/PasspointEventHandler;->(Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;)V +PLcom/android/server/wifi/hotspot2/PasspointManager$CallbackHandler;->(Lcom/android/server/wifi/hotspot2/PasspointManager;Landroid/content/Context;)V +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->(Lcom/android/server/wifi/hotspot2/PasspointManager;)V +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->(Lcom/android/server/wifi/hotspot2/PasspointManager;Lcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;)V +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->getProviderIndex()J +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->getProviders()Ljava/util/List; +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->setProviderIndex(J)V +PLcom/android/server/wifi/hotspot2/PasspointManager$DataSourceHandler;->setProviders(Ljava/util/List;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;->-get2(Lcom/android/server/wifi/hotspot2/PasspointManager;)J +PLcom/android/server/wifi/hotspot2/PasspointManager;->-get3(Lcom/android/server/wifi/hotspot2/PasspointManager;)Ljava/util/Map; +PLcom/android/server/wifi/hotspot2/PasspointManager;->-set0(Lcom/android/server/wifi/hotspot2/PasspointManager;J)J +PLcom/android/server/wifi/hotspot2/PasspointManager;->(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/Clock;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointObjectFactory;Lcom/android/server/wifi/WifiConfigManager;Lcom/android/server/wifi/WifiConfigStore;Lcom/android/server/wifi/WifiMetrics;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;->dump(Ljava/io/PrintWriter;)V +PLcom/android/server/wifi/hotspot2/PasspointManager;->updateMetrics()V +PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;->(Lcom/android/server/wifi/hotspot2/PasspointManager;Lcom/android/server/wifi/WifiConfigManager;Landroid/util/LocalLog;)V +PLcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator;->update(Ljava/util/List;)V +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->()V +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeANQPRequestManager(Lcom/android/server/wifi/hotspot2/PasspointEventHandler;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/hotspot2/ANQPRequestManager; +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeAnqpCache(Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/hotspot2/AnqpCache; +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makeCertificateVerifier()Lcom/android/server/wifi/hotspot2/CertificateVerifier; +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointConfigStoreData(Lcom/android/server/wifi/WifiKeyStore;Lcom/android/server/wifi/SIMAccessor;Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData$DataSource;)Lcom/android/server/wifi/hotspot2/PasspointConfigStoreData; +PLcom/android/server/wifi/hotspot2/PasspointObjectFactory;->makePasspointEventHandler(Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks;)Lcom/android/server/wifi/hotspot2/PasspointEventHandler; +PLcom/android/server/wifi/hotspot2/Utils;->hs2LogTag(Ljava/lang/Class;)Ljava/lang/String; +PLcom/android/server/wifi/hotspot2/Utils;->toHMS(J)Ljava/lang/String; +PLcom/android/server/wifi/hotspot2/anqp/Constants$ANQPElementType;->(Ljava/lang/String;I)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$19;->(BLjava/lang/Object;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$1;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$1;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$1;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$2;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$2;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$2;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$5;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$5;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$5;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$9;->$m$0(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$9;->(Ljava/lang/Object;)V +PLcom/android/server/wifi/p2p/-$Lambda$gT4KmMIiMXRpxldJVwXfElmESAo$9;->onValues(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceCallback;->(Ljava/lang/String;Lcom/android/server/wifi/p2p/WifiP2pMonitor;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$1;->(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$1;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;->(Ljava/lang/String;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;->getResult()Ljava/lang/Object; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;->isSuccess()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;->setResult(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;->setResult(Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/lang/Object;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->-get0(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;)Ljava/lang/Object; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->-wrap0(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->-wrap1(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->(Lcom/android/server/wifi/p2p/WifiP2pMonitor;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->checkSupplicantP2pIfaceAndLogFailure(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->flush()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->getDeviceAddress()Ljava/lang/String; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->getP2pIfaceMockable(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIface; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->getServiceManagerMockable()Landroid/hidl/manager/V1_0/IServiceManager; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->getSupplicantMockable()Landroid/hardware/wifi/supplicant/V1_0/ISupplicant; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->initSupplicantP2pIface()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->initSupplicantService()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->initialize()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationComplete()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->isInitializationStarted()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_10685(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Landroid/hardware/wifi/supplicant/V1_0/ISupplicantIface;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_35007(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;[B)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_67534(Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal$SupplicantResult;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->lambda$-com_android_server_wifi_p2p_SupplicantP2pIfaceHal_9579(Ljava/util/ArrayList;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;Ljava/util/ArrayList;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToServiceManagerDeath()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToSupplicantDeath()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->linkToSupplicantP2pIfaceDeath()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->listNetworks()Ljava/util/List; +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->loadGroups(Landroid/net/wifi/p2p/WifiP2pGroupList;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->logCompletion(Ljava/lang/String;Landroid/hardware/wifi/supplicant/V1_0/SupplicantStatus;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->logd(Ljava/lang/String;)V +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->registerCallback(Landroid/hardware/wifi/supplicant/V1_0/ISupplicantP2pIfaceCallback;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->saveConfig()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->serviceFlush()Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->setSsidPostfix(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->setWpsConfigMethods(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->setWpsDeviceName(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->setWpsDeviceType(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;->stringToWpsConfigMethod(Ljava/lang/String;)S +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->(Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->broadcastSupplicantConnectionEvent(Ljava/lang/String;)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->ensureConnectedLocked()Z +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->isMonitoring(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->registerHandler(Ljava/lang/String;ILandroid/os/Handler;)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->sendMessage(Landroid/os/Handler;Landroid/os/Message;)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->sendMessage(Ljava/lang/String;I)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->sendMessage(Ljava/lang/String;Landroid/os/Message;)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->setMonitoring(Ljava/lang/String;Z)V +PLcom/android/server/wifi/p2p/WifiP2pMonitor;->startMonitoring(Ljava/lang/String;)V +PLcom/android/server/wifi/p2p/WifiP2pNative;->(Ljava/lang/String;Lcom/android/server/wifi/p2p/SupplicantP2pIfaceHal;)V +PLcom/android/server/wifi/p2p/WifiP2pNative;->connectToSupplicant()Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->getInterfaceName()Ljava/lang/String; +PLcom/android/server/wifi/p2p/WifiP2pNative;->p2pFlush()Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->p2pGetDeviceAddress()Ljava/lang/String; +PLcom/android/server/wifi/p2p/WifiP2pNative;->p2pListNetworks(Landroid/net/wifi/p2p/WifiP2pGroupList;)Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->p2pServiceFlush()Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->saveConfig()Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->setConfigMethods(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->setP2pDeviceName(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->setP2pDeviceType(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/WifiP2pNative;->setP2pSsidPostfix(Ljava/lang/String;)Z +PLcom/android/server/wifi/p2p/WifiP2pService;->(Landroid/content/Context;)V +PLcom/android/server/wifi/p2p/WifiP2pService;->onBootPhase(I)V +PLcom/android/server/wifi/p2p/WifiP2pService;->onStart()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$ClientHandler;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Ljava/lang/String;Landroid/os/Looper;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$1;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$DefaultState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$FrequencyConflictState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupCreatedState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupCreatingState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupNegotiationState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$InactiveState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$InactiveState;->enter()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$InactiveState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$OngoingGroupRemovalState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisabledState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisabledState;->enter()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisabledState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisablingState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnabledState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnabledState;->enter()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnabledState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnablingState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnablingState;->enter()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnablingState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pNotSupportedState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$ProvisionDiscoveryState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingInviteRequestState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingJoinState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingNegotiationRequestState;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-get10(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnablingState; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-get14(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)Landroid/net/wifi/p2p/WifiP2pConfig; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-get18(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)Lcom/android/server/wifi/p2p/WifiP2pMonitor; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-get19(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)Lcom/android/server/wifi/p2p/WifiP2pNative; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-get6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$InactiveState; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-wrap15(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-wrap26(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->-wrap29(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;Z)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Ljava/lang/String;Landroid/os/Looper;Z)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->getPersistedDeviceName()Ljava/lang/String; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->initializeP2pSettings()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendP2pConnectionChangedBroadcast()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendP2pPersistentGroupsChangedBroadcast()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendP2pStateChangedBroadcast(Z)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->sendThisDeviceChangedBroadcast()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updatePersistentNetworks(Z)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine;->updateThisDevice(I)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get0()Ljava/lang/Boolean; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get15(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/wifi/p2p/WifiP2pDevice; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get16(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Ljava/util/HashMap; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get3(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get5(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-get9(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;)Landroid/net/NetworkInfo; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set2(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Z)Z +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set6(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Ljava/lang/String;)Ljava/lang/String; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set7(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;B)B +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->-set9(Lcom/android/server/wifi/p2p/WifiP2pServiceImpl;Lcom/android/internal/util/AsyncChannel;)Lcom/android/internal/util/AsyncChannel; +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->(Landroid/content/Context;)V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->checkConnectivityInternalPermission()I +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->connectivityServiceReady()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceAccessPermission()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceChangePermission()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->enforceConnectivityInternalOrLocationHardwarePermission()V +PLcom/android/server/wifi/p2p/WifiP2pServiceImpl;->getP2pStateMachineMessenger()Landroid/os/Messenger; +PLcom/android/server/wifi/scanner/-$Lambda$ckIrrmbHBOVG4LZY2cRLHtMBPV4;->()V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList$1;->(Lcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;)V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList;->(Lcom/android/server/wifi/scanner/BackgroundScanScheduler;)V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->-get2()[I +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->(Lcom/android/server/wifi/scanner/ChannelHelper;)V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->createSchedule(Ljava/util/List;I)V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxApPerScan()I +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxBatch()I +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->getMaxChannelsPerBucket()I +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxApPerScan(I)V +PLcom/android/server/wifi/scanner/BackgroundScanScheduler;->setMaxBuckets(I)V +PLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;->containsSettings(Landroid/net/wifi/WifiScanner$ScanSettings;)Z +PLcom/android/server/wifi/scanner/ChannelHelper;->()V +PLcom/android/server/wifi/scanner/HalChannelHelper;->(Lcom/android/server/wifi/WifiNative;)V +PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getChannelHelper()Lcom/android/server/wifi/scanner/ChannelHelper; +PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData; +PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->getScanCapabilities(Lcom/android/server/wifi/WifiNative$ScanCapabilities;)Z +PLcom/android/server/wifi/scanner/HalWifiScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z +PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->getScanFreqs()Ljava/util/Set; +PLcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection;->isEmpty()Z +PLcom/android/server/wifi/scanner/KnownBandsChannelHelper;->()V +PLcom/android/server/wifi/scanner/WifiScannerImpl$1;->()V +PLcom/android/server/wifi/scanner/WifiScannerImpl$1;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)Lcom/android/server/wifi/scanner/WifiScannerImpl; +PLcom/android/server/wifi/scanner/WifiScannerImpl$2;->()V +PLcom/android/server/wifi/scanner/WifiScannerImpl;->()V +PLcom/android/server/wifi/scanner/WifiScanningService;->(Landroid/content/Context;)V +PLcom/android/server/wifi/scanner/WifiScanningService;->onBootPhase(I)V +PLcom/android/server/wifi/scanner/WifiScanningService;->onStart()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;Landroid/os/Looper;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->getUid()I +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;->register()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;ILandroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$PausedState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$StartedState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$StartedState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$StartedState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$DefaultState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$DefaultState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$HwPnoScanState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$SingleScanState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$StartedState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$StartedState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$SwPnoScanState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$DefaultState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$StartedState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState;->enter()V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get4(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-get5(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->-set0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;Lcom/android/server/wifi/WifiNative$ScanSettings;)Lcom/android/server/wifi/WifiNative$ScanSettings; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Landroid/os/Looper;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->activeScanSatisfies(Landroid/net/wifi/WifiScanner$ScanSettings;)Z +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine;->validateScanRequest(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;ILandroid/net/wifi/WifiScanner$ScanSettings;Landroid/os/WorkSource;)Z +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/BackgroundScanScheduler; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get10(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get12(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get13(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/internal/app/IBatteryStats; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get7(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/content/Context; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get8(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Lcom/android/server/wifi/FrameworkFacade; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-get9(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;)Landroid/os/Looper; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/BackgroundScanScheduler;)Lcom/android/server/wifi/scanner/BackgroundScanScheduler; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set1(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/ChannelHelper;)Lcom/android/server/wifi/scanner/ChannelHelper; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-set3(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScannerImpl;)Lcom/android/server/wifi/scanner/WifiScannerImpl; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap0(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo;Landroid/os/WorkSource;)Landroid/os/WorkSource; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->-wrap2(Lcom/android/server/wifi/scanner/WifiScanningServiceImpl;Ljava/lang/String;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->getMessenger()Landroid/os/Messenger; +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->loge(Ljava/lang/String;)V +PLcom/android/server/wifi/scanner/WifiScanningServiceImpl;->startService()V +PLcom/android/server/wifi/scanner/WificondScannerImpl$1;->(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$2;->(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$3;->(Lcom/android/server/wifi/scanner/WificondScannerImpl;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer$1;->(Lcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->(Lcom/android/server/wifi/WifiNative;Landroid/app/AlarmManager;Landroid/os/Handler;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->forceStopPnoScan()V +PLcom/android/server/wifi/scanner/WificondScannerImpl$HwPnoDebouncer;->stopPnoScanInternal()Z +PLcom/android/server/wifi/scanner/WificondScannerImpl$LastScanSettings;->setSingleScan(ZLcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl$ScanBuffer;->(I)V +PLcom/android/server/wifi/scanner/WificondScannerImpl;->(Landroid/content/Context;Lcom/android/server/wifi/WifiNative;Lcom/android/server/wifi/WifiMonitor;Lcom/android/server/wifi/scanner/ChannelHelper;Landroid/os/Looper;Lcom/android/server/wifi/Clock;)V +PLcom/android/server/wifi/scanner/WificondScannerImpl;->getLatestSingleScanResults()Landroid/net/wifi/WifiScanner$ScanData; +PLcom/android/server/wifi/scanner/WificondScannerImpl;->isHwPnoScanRequired()Z +PLcom/android/server/wifi/scanner/WificondScannerImpl;->pauseHwPnoScan()V +PLcom/android/server/wifi/scanner/WificondScannerImpl;->startSingleScan(Lcom/android/server/wifi/WifiNative$ScanSettings;Lcom/android/server/wifi/WifiNative$ScanEventHandler;)Z +PLcom/android/server/wifi/util/ByteArrayRingBuffer;->(I)V +PLcom/android/server/wifi/util/ByteArrayRingBuffer;->resize(I)V +PLcom/android/server/wifi/util/FrameParser;->decodeDhcpMessageType(S)Ljava/lang/String; +PLcom/android/server/wifi/util/FrameParser;->decodeIeee80211StatusCode(S)Ljava/lang/String; +PLcom/android/server/wifi/util/FrameParser;->parseArpPacket(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseAssociationResponse(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseAuthenticationFrame(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseDhcpPacket(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseIcmpV6Packet(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlSubtype(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlType(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIeee80211FrameCtrlVersion(B)B +PLcom/android/server/wifi/util/FrameParser;->parseIpv6Packet(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseManagementFrame(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/FrameParser;->parseUdpPacket(Ljava/nio/ByteBuffer;)V +PLcom/android/server/wifi/util/InformationElementUtil$Capabilities;->parseWpaCipher(I)I +PLcom/android/server/wifi/util/NativeUtil;->decodeSsid(Ljava/lang/String;)Ljava/util/ArrayList; +PLcom/android/server/wifi/util/NativeUtil;->hexOrQuotedStringToBytes(Ljava/lang/String;)Ljava/util/ArrayList; +PLcom/android/server/wifi/util/NativeUtil;->hexStringToByteArray(Ljava/lang/String;)[B +PLcom/android/server/wifi/util/NativeUtil;->macAddressToByteArray(Ljava/lang/String;)[B +PLcom/android/server/wifi/util/NativeUtil;->stringToByteArray(Ljava/lang/String;)[B +PLcom/android/server/wifi/util/NativeUtil;->stringToByteArrayList(Ljava/lang/String;)Ljava/util/ArrayList; +PLcom/android/server/wifi/util/WifiAsyncChannel;->(Ljava/lang/String;)V +PLcom/android/server/wifi/util/WifiAsyncChannel;->replyToMessage(Landroid/os/Message;Landroid/os/Message;)V +PLcom/android/server/wifi/util/WifiHandler;->(Ljava/lang/String;Landroid/os/Looper;)V +PLcom/android/server/wifi/util/WifiPermissionsUtil;->(Lcom/android/server/wifi/util/WifiPermissionsWrapper;Landroid/content/Context;Lcom/android/server/wifi/WifiSettingsStore;Landroid/os/UserManager;Landroid/net/NetworkScoreManager;Lcom/android/server/wifi/WifiInjector;)V +PLcom/android/server/wifi/util/WifiPermissionsWrapper;->(Landroid/content/Context;)V +PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$IpAssignmentSwitchesValues()[I +PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->-getandroid-net-IpConfiguration$ProxySettingsSwitchesValues()[I +PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/IpConfiguration; +PLcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/IpConfiguration;)V +PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->parseFromXml(Lorg/xmlpull/v1/XmlPullParser;I)Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; +PLcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V +PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->populateWepKeysFromXmlValue(Ljava/lang/Object;[Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeCommonElementsToXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/net/wifi/WifiConfiguration;)V +PLcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil;->writeWepKeysToXml(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil;->gotoDocumentStart(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil;->gotoEndTag(Lorg/xmlpull/v1/XmlPullParser;)V +PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionOrEnd(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;I)Z +PLcom/android/server/wifi/util/XmlUtil;->gotoNextSectionWithNameOrEnd(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)Z +PLcom/android/server/wifi/util/XmlUtil;->isNextSectionEnd(Lorg/xmlpull/v1/XmlPullParser;I)Z +PLcom/android/server/wifi/util/XmlUtil;->readNextValueWithName(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object; +PLcom/android/server/wifi/util/XmlUtil;->writeDocumentEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil;->writeDocumentStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionEnd(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V +PLcom/android/server/wifi/util/XmlUtil;->writeNextSectionStart(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V +PLcom/android/server/wifi/wificond/ChannelSettings$1;->()V +PLcom/android/server/wifi/wificond/NativeScanResult$1;->()V +PLcom/android/server/wifi/wificond/NativeScanResult$1;->newArray(I)[Lcom/android/server/wifi/wificond/NativeScanResult; +PLcom/android/server/wifi/wificond/SingleScanSettings$1;->()V +PLcom/android/server/wifi/wificond/SingleScanSettings;->()V +PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->(BZZLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$AUkchKtIxrbCkLkg2ILGagAqXvc;->accept(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$JE-Xd_mgkfFanNxg9Cy6vl62umY;->$m$0()V +PLcom/android/server/wm/-$Lambda$JE-Xd_mgkfFanNxg9Cy6vl62umY;->(ILjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$JE-Xd_mgkfFanNxg9Cy6vl62umY;->run()V +PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$0(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->$m$1(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->(BLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$LEqle-ue9vesHjZva-SwvAvwBx8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +PLcom/android/server/wm/-$Lambda$OQfQhd_xsxt9hoLAjIbVfOwa-jY;->(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$2(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->$m$3(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$1;->(B)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$3;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$4;->(BII)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->(ZLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$6;->accept(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI$7;->(ZZILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->$m$1(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->(B)V +PLcom/android/server/wm/-$Lambda$OzPvdnGprtQoLZLCvw2GU8IaGyI;->screenshot(Landroid/graphics/Rect;IIIIZI)Ljava/lang/Object; +PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$13(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$YIZfR4m-B8z_tYbP2x4OJ3o7OYE;->$m$2(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$11()V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$2()V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$3()V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$4()V +PLcom/android/server/wm/-$Lambda$aEpJ2RCAIjecjyIIYTv6ricEwh4;->$m$5()V +PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->(ZI)V +PLcom/android/server/wm/-$Lambda$cHAc_wCK_9-nlRTF5Ggz5ZbNDr0$2;->accept(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->$m$0()V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->(ZZZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$eBBEuGZ8VbEXJy0r5EYYbvnl-8w$1;->run()V +PLcom/android/server/wm/-$Lambda$hCYoJeHmvymNpgtwuNPQ6z-HGjQ;->(B)V +PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->$m$0(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->()V +PLcom/android/server/wm/-$Lambda$lByfYr6ieFYh5pmaqCgCKVVzuwA;->apply(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->$m$1(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM$1;->(BLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$lpBUCbECLvWBIi8CcvaEY5AB7jM;->(BLjava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->$m$0(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->(BLjava/lang/Object;Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$qRW_P-TWddDPPnAT8S1SNpM72ho;->accept(Ljava/lang/Object;)V +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->$m$0(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->(BI)V +PLcom/android/server/wm/-$Lambda$tS7nL17Ous75692M4rHLEZu640I;->test(Ljava/lang/Object;)Z +PLcom/android/server/wm/-$Lambda$v2Yn08uofw54W8n_7KsmBjqR0Z8;->()V +PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V +PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->(Lcom/android/server/wm/WindowManagerService;Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V +PLcom/android/server/wm/AccessibilityController;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/AccessibilityController;->hasCallbacksLocked()Z +PLcom/android/server/wm/AccessibilityController;->onAppWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V +PLcom/android/server/wm/AccessibilityController;->onRotationChangedLocked(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/AccessibilityController;->onWindowFocusChangedNotLocked()V +PLcom/android/server/wm/AccessibilityController;->onWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V +PLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNotLocked()V +PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V +PLcom/android/server/wm/AppTokenList;->()V +PLcom/android/server/wm/AppTransition$1;->(Lcom/android/server/wm/AppTransition;)V +PLcom/android/server/wm/AppTransition$2;->(Lcom/android/server/wm/AppTransition;)V +PLcom/android/server/wm/AppTransition;->(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/AppTransition;->calculateClipRevealTransitionDuration(ZFFLandroid/graphics/Rect;)J +PLcom/android/server/wm/AppTransition;->canSkipFirstFrame()Z +PLcom/android/server/wm/AppTransition;->clear()V +PLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V +PLcom/android/server/wm/AppTransition;->freeze()V +PLcom/android/server/wm/AppTransition;->getCachedAnimations(Ljava/lang/String;I)Lcom/android/server/AttributeCache$Entry; +PLcom/android/server/wm/AppTransition;->getDefaultNextAppTransitionStartRect(Landroid/graphics/Rect;)V +PLcom/android/server/wm/AppTransition;->getTransitFlags()I +PLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z +PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailDown()Z +PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailUp()Z +PLcom/android/server/wm/AppTransition;->isTransitionEqual(I)Z +PLcom/android/server/wm/AppTransition;->loadAnimationRes(Ljava/lang/String;I)Landroid/view/animation/Animation; +PLcom/android/server/wm/AppTransition;->loadKeyguardExitAnimation(I)Landroid/view/animation/Animation; +PLcom/android/server/wm/AppTransition;->notifyAppTransitionCancelledLocked(I)V +PLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V +PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionClipReveal(IIII)V +PLcom/android/server/wm/AppTransition;->postAnimationCallback()V +PLcom/android/server/wm/AppTransition;->putDefaultNextAppTransitionCoordinates(IIIILandroid/graphics/GraphicBuffer;)V +PLcom/android/server/wm/AppTransition;->registerListenerLocked(Landroid/view/WindowManagerInternal$AppTransitionListener;)V +PLcom/android/server/wm/AppTransition;->setAppTransition(II)V +PLcom/android/server/wm/AppTransition;->setIdle()V +PLcom/android/server/wm/AppWindowAnimator$DummyAnimation;->()V +PLcom/android/server/wm/AppWindowAnimator;->(Lcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/AppWindowAnimator;->getTransitFlags()I +PLcom/android/server/wm/AppWindowAnimator;->transferCurrentAnimation(Lcom/android/server/wm/AppWindowAnimator;Lcom/android/server/wm/WindowStateAnimator;)V +PLcom/android/server/wm/AppWindowContainerController$H;->(Lcom/android/server/wm/AppWindowContainerController;Landroid/os/Looper;)V +PLcom/android/server/wm/AppWindowContainerController;->(Lcom/android/server/wm/TaskWindowContainerController;Landroid/view/IApplicationToken;Lcom/android/server/wm/AppWindowContainerListener;IIZZIZZZIIJLandroid/content/res/Configuration;Landroid/graphics/Rect;)V +PLcom/android/server/wm/AppWindowContainerController;->createAppWindow(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)Lcom/android/server/wm/AppWindowToken; +PLcom/android/server/wm/AppWindowContainerController;->createSnapshot(Landroid/app/ActivityManager$TaskSnapshot;)Z +PLcom/android/server/wm/AppWindowContainerController;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_31112(Landroid/view/WindowManagerPolicy$StartingSurface;)V +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4155()V +PLcom/android/server/wm/AppWindowContainerController;->lambda$-com_android_server_wm_AppWindowContainerController_4446()V +PLcom/android/server/wm/AppWindowContainerController;->notifyAppResumed(Z)V +PLcom/android/server/wm/AppWindowContainerController;->notifyAppStopped()V +PLcom/android/server/wm/AppWindowContainerController;->notifyUnknownVisibilityLaunched()V +PLcom/android/server/wm/AppWindowContainerController;->removeContainer(I)V +PLcom/android/server/wm/AppWindowContainerController;->reportWindowsDrawn()V +PLcom/android/server/wm/AppWindowContainerController;->reportWindowsGone()V +PLcom/android/server/wm/AppWindowContainerController;->reportWindowsVisible()V +PLcom/android/server/wm/AppWindowContainerController;->scheduleAddStartingWindow()V +PLcom/android/server/wm/AppWindowContainerController;->setDisablePreviewScreenshots(Z)V +PLcom/android/server/wm/AppWindowContainerController;->setOrientation(IILandroid/content/res/Configuration;Z)Landroid/content/res/Configuration; +PLcom/android/server/wm/AppWindowContainerController;->snapshotOrientationSameAsTask(Landroid/app/ActivityManager$TaskSnapshot;)Z +PLcom/android/server/wm/AppWindowContainerController;->startFreezingScreen(I)V +PLcom/android/server/wm/AppWindowToken;->-com_android_server_wm_AppWindowToken-mthref-0(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/AppWindowToken;->(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/AppWindowContainerController;Landroid/content/res/Configuration;Landroid/graphics/Rect;)V +PLcom/android/server/wm/AppWindowToken;->canTurnScreenOn()Z +PLcom/android/server/wm/AppWindowToken;->clearRelaunching()V +PLcom/android/server/wm/AppWindowToken;->finishRelaunching()V +PLcom/android/server/wm/AppWindowToken;->getHighestAnimLayerWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/AppWindowToken;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/AppWindowToken;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/AppWindowToken;->isLastWindow(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/AppWindowToken;->lambda$-com_android_server_wm_AppWindowToken_68187(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/AppWindowToken;->notifyAppResumed(Z)V +PLcom/android/server/wm/AppWindowToken;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowContainer;)V +PLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/AppWindowToken;->removeIfPossible()V +PLcom/android/server/wm/AppWindowToken;->removeImmediately()V +PLcom/android/server/wm/AppWindowToken;->setCanTurnScreenOn(Z)V +PLcom/android/server/wm/AppWindowToken;->setDisablePreviewScreenshots(Z)V +PLcom/android/server/wm/AppWindowToken;->shouldFreezeBounds()Z +PLcom/android/server/wm/AppWindowToken;->shouldUseAppThemeSnapshot()Z +PLcom/android/server/wm/AppWindowToken;->startFreezingScreen()V +PLcom/android/server/wm/AppWindowToken;->startRelaunching()V +PLcom/android/server/wm/AppWindowToken;->stopFreezingScreen(ZZ)V +PLcom/android/server/wm/AppWindowToken;->transferStartingWindow(Landroid/os/IBinder;)Z +PLcom/android/server/wm/AppWindowToken;->unfreezeBounds()V +PLcom/android/server/wm/AppWindowToken;->waitingForReplacement()Z +PLcom/android/server/wm/BlackFrame$BlackSurface;->(Lcom/android/server/wm/BlackFrame;Landroid/view/SurfaceSession;IIIIII)V +PLcom/android/server/wm/BlackFrame;->(Landroid/view/SurfaceSession;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZ)V +PLcom/android/server/wm/BlackFrame;->kill()V +PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->(Lcom/android/server/wm/BoundsAnimationController;)V +PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;)V +PLcom/android/server/wm/BoundsAnimationController;->-get2(Lcom/android/server/wm/BoundsAnimationController;)Z +PLcom/android/server/wm/BoundsAnimationController;->(Landroid/content/Context;Lcom/android/server/wm/AppTransition;Landroid/os/Handler;Landroid/animation/AnimationHandler;)V +PLcom/android/server/wm/DimLayer;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DimLayer$DimLayerUser;ILjava/lang/String;)V +PLcom/android/server/wm/DimLayer;->adjustLayer(I)V +PLcom/android/server/wm/DimLayer;->constructSurface(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/DimLayer;->durationEndsEarlier(J)Z +PLcom/android/server/wm/DimLayer;->show()V +PLcom/android/server/wm/DimLayerController$DimLayerState;->()V +PLcom/android/server/wm/DimLayerController$DimLayerState;->(Lcom/android/server/wm/DimLayerController$DimLayerState;)V +PLcom/android/server/wm/DimLayerController;->(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/DimLayerController;->applyDimBehind(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;)V +PLcom/android/server/wm/DimLayerController;->getContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)Z +PLcom/android/server/wm/DimLayerController;->getDimLayerTag(Lcom/android/server/wm/DimLayer$DimLayerUser;)Ljava/lang/String; +PLcom/android/server/wm/DimLayerController;->isDimming()Z +PLcom/android/server/wm/DimLayerController;->removeDimLayerUser(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +PLcom/android/server/wm/DimLayerController;->setContinueDimming(Lcom/android/server/wm/DimLayer$DimLayerUser;)V +PLcom/android/server/wm/DimLayerController;->startDimmingIfNeeded(Lcom/android/server/wm/DimLayer$DimLayerUser;Lcom/android/server/wm/WindowStateAnimator;Z)V +PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->()V +PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->(Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;)V +PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->()V +PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;)V +PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->addChild(Lcom/android/server/wm/WindowToken;)V +PLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$-com_android_server_wm_DisplayContent$NonAppWindowContainers_153978(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I +PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;->()V +PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;->(Lcom/android/server/wm/DisplayContent$ScreenshotApplicationState;)V +PLcom/android/server/wm/DisplayContent$ScreenshotApplicationState;->reset(Z)V +PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->()V +PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->reset()V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayContent$TaskStackContainers;)V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addChild(Lcom/android/server/wm/TaskStack;Z)V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->addStackToDisplay(Lcom/android/server/wm/TaskStack;Z)V +PLcom/android/server/wm/DisplayContent$TaskStackContainers;->isOnTop()Z +PLcom/android/server/wm/DisplayContent;->-com_android_server_wm_DisplayContent-mthref-1(Landroid/graphics/Rect;IIIIZI)Landroid/graphics/GraphicBuffer; +PLcom/android/server/wm/DisplayContent;->-get0(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/TaskStack; +PLcom/android/server/wm/DisplayContent;->-get1(Lcom/android/server/wm/DisplayContent;)I +PLcom/android/server/wm/DisplayContent;->-set0(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TaskStack;)Lcom/android/server/wm/TaskStack; +PLcom/android/server/wm/DisplayContent;->-set1(Lcom/android/server/wm/DisplayContent;I)I +PLcom/android/server/wm/DisplayContent;->(Landroid/view/Display;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowLayersController;Lcom/android/server/wm/WallpaperController;)V +PLcom/android/server/wm/DisplayContent;->addStackToDisplay(IZ)Lcom/android/server/wm/TaskStack; +PLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V +PLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z +PLcom/android/server/wm/DisplayContent;->checkWaitingForWindows()Z +PLcom/android/server/wm/DisplayContent;->convertCropForSurfaceFlinger(Landroid/graphics/Rect;III)V +PLcom/android/server/wm/DisplayContent;->deltaRotation(II)I +PLcom/android/server/wm/DisplayContent;->findTaskForResizePoint(II)Lcom/android/server/wm/Task; +PLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display; +PLcom/android/server/wm/DisplayContent;->getDisplayMetrics()Landroid/util/DisplayMetrics; +PLcom/android/server/wm/DisplayContent;->getPinnedStackController()Lcom/android/server/wm/PinnedStackController; +PLcom/android/server/wm/DisplayContent;->hasAccess(I)Z +PLcom/android/server/wm/DisplayContent;->hasSecureWindowOnScreen()Z +PLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V +PLcom/android/server/wm/DisplayContent;->isDimming()Z +PLcom/android/server/wm/DisplayContent;->isReady()Z +PLcom/android/server/wm/DisplayContent;->isRemovalDeferred()Z +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_112613(Landroid/view/WindowManagerPolicy;ZZLcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_117363(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_118481(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_119045(Landroid/view/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_44157(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_49307(ZLcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DisplayContent;->lambda$-com_android_server_wm_DisplayContent_99578(ILcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V +PLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V +PLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V +PLcom/android/server/wm/DisplayContent;->onWindowFreezeTimeout()V +PLcom/android/server/wm/DisplayContent;->prepareFreezingTaskBounds()V +PLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V +PLcom/android/server/wm/DisplayContent;->removeAppToken(Landroid/os/IBinder;)V +PLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken; +PLcom/android/server/wm/DisplayContent;->screenshotApplicationsToBuffer(Landroid/os/IBinder;IIZFZZ)Landroid/graphics/GraphicBuffer; +PLcom/android/server/wm/DisplayContent;->setInputMethodAnimLayerAdjustment(I)V +PLcom/android/server/wm/DisplayContent;->setLastOrientation(I)V +PLcom/android/server/wm/DisplayContent;->startKeyguardExitOnNonAppWindows(ZZ)V +PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(III)V +PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded()V +PLcom/android/server/wm/DisplayContent;->updateDisplayInfo()V +PLcom/android/server/wm/DisplayContent;->updateStackBoundsAfterConfigChange(Ljava/util/List;)V +PLcom/android/server/wm/DisplayContent;->waitForAllWindowsDrawn()V +PLcom/android/server/wm/DisplaySettings;->()V +PLcom/android/server/wm/DisplaySettings;->getOverscanLocked(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;)V +PLcom/android/server/wm/DisplaySettings;->readSettingsLocked()V +PLcom/android/server/wm/DockedStackDividerController;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/DockedStackDividerController;->checkMinimizeChanged(Z)V +PLcom/android/server/wm/DockedStackDividerController;->getContentWidth()I +PLcom/android/server/wm/DockedStackDividerController;->getImeHeightAdjustedFor()I +PLcom/android/server/wm/DockedStackDividerController;->isHomeStackResizable()Z +PLcom/android/server/wm/DockedStackDividerController;->isImeHideRequested()Z +PLcom/android/server/wm/DockedStackDividerController;->loadDimens()V +PLcom/android/server/wm/DockedStackDividerController;->notifyAdjustedForImeChanged(ZJ)V +PLcom/android/server/wm/DockedStackDividerController;->notifyAppTransitionStarting(Landroid/util/ArraySet;I)V +PLcom/android/server/wm/DockedStackDividerController;->notifyAppVisibilityChanged()V +PLcom/android/server/wm/DockedStackDividerController;->notifyDockedDividerVisibilityChanged(Z)V +PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackExistsChanged(Z)V +PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackMinimizedChanged(ZZZ)V +PLcom/android/server/wm/DockedStackDividerController;->onConfigurationChanged()V +PLcom/android/server/wm/DockedStackDividerController;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V +PLcom/android/server/wm/DockedStackDividerController;->resetImeHideRequested()V +PLcom/android/server/wm/DockedStackDividerController;->setMinimizedDockedStack(ZZ)V +PLcom/android/server/wm/DockedStackDividerController;->setTouchRegion(Landroid/graphics/Rect;)V +PLcom/android/server/wm/DockedStackDividerController;->setWindow(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/DockedStackDividerController;->wasVisible()Z +PLcom/android/server/wm/InputConsumerImpl;->(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;Landroid/view/InputChannel;)V +PLcom/android/server/wm/InputConsumerImpl;->getLayerLw(I)I +PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->(Lcom/android/server/wm/InputMonitor;)V +PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;)V +PLcom/android/server/wm/InputMonitor;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/InputMonitor;->addInputConsumer(Ljava/lang/String;Lcom/android/server/wm/InputConsumerImpl;)V +PLcom/android/server/wm/InputMonitor;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V +PLcom/android/server/wm/InputMonitor;->destroyInputConsumer(Ljava/lang/String;)Z +PLcom/android/server/wm/InputMonitor;->dispatchUnhandledKey(Lcom/android/server/input/InputWindowHandle;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent; +PLcom/android/server/wm/InputMonitor;->disposeInputConsumer(Lcom/android/server/wm/InputConsumerImpl;)Z +PLcom/android/server/wm/InputMonitor;->freezeInputDispatchingLw()V +PLcom/android/server/wm/InputMonitor;->notifyConfigurationChanged()V +PLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V +PLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V +PLcom/android/server/wm/InputMonitor;->setEventDispatchingLw(Z)V +PLcom/android/server/wm/InputMonitor;->thawInputDispatchingLw()V +PLcom/android/server/wm/InputMonitor;->updateInputDispatchModeLw()V +PLcom/android/server/wm/InputMonitor;->waitForInputDevicesReady(J)Z +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->(Lcom/android/server/wm/KeyguardDisableHandler;Landroid/os/Handler;)V +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->acquired()V +PLcom/android/server/wm/KeyguardDisableHandler$KeyguardTokenWatcher;->updateAllowState()V +PLcom/android/server/wm/KeyguardDisableHandler;->-get0()Ljava/lang/String; +PLcom/android/server/wm/KeyguardDisableHandler;->-get1(Lcom/android/server/wm/KeyguardDisableHandler;)I +PLcom/android/server/wm/KeyguardDisableHandler;->-set0(Lcom/android/server/wm/KeyguardDisableHandler;I)I +PLcom/android/server/wm/KeyguardDisableHandler;->(Landroid/content/Context;Landroid/view/WindowManagerPolicy;)V +PLcom/android/server/wm/KeyguardDisableHandler;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->(Lcom/android/server/wm/PinnedStackController;)V +PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;)V +PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->lambda$-com_android_server_wm_PinnedStackController$PinnedStackControllerCallback_4973(I)V +PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->setMinEdgeSize(I)V +PLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;->(Lcom/android/server/wm/PinnedStackController;)V +PLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;->(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;)V +PLcom/android/server/wm/PinnedStackController;->-get0(Lcom/android/server/wm/PinnedStackController;)I +PLcom/android/server/wm/PinnedStackController;->-get2(Lcom/android/server/wm/PinnedStackController;)Landroid/os/Handler; +PLcom/android/server/wm/PinnedStackController;->-set0(Lcom/android/server/wm/PinnedStackController;I)I +PLcom/android/server/wm/PinnedStackController;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/PinnedStackController;->dpToPx(FLandroid/util/DisplayMetrics;)I +PLcom/android/server/wm/PinnedStackController;->isValidPictureInPictureAspectRatio(F)Z +PLcom/android/server/wm/PinnedStackController;->notifyActionsChanged(Ljava/util/List;)V +PLcom/android/server/wm/PinnedStackController;->notifyImeVisibilityChanged(ZI)V +PLcom/android/server/wm/PinnedStackController;->notifyMinimizeChanged(Z)V +PLcom/android/server/wm/PinnedStackController;->onConfigurationChanged()V +PLcom/android/server/wm/PinnedStackController;->onDisplayInfoChanged()V +PLcom/android/server/wm/PinnedStackController;->registerPinnedStackListener(Landroid/view/IPinnedStackListener;)V +PLcom/android/server/wm/PointerEventDispatcher;->(Landroid/view/InputChannel;)V +PLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V +PLcom/android/server/wm/RootWindowContainer$MyHandler;->(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V +PLcom/android/server/wm/RootWindowContainer;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs(Ljava/lang/String;)V +PLcom/android/server/wm/RootWindowContainer;->createDisplayContent(Landroid/view/Display;)Lcom/android/server/wm/DisplayContent; +PLcom/android/server/wm/RootWindowContainer;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V +PLcom/android/server/wm/RootWindowContainer;->lambda$-com_android_server_wm_RootWindowContainer_17861(IZLcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/RootWindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V +PLcom/android/server/wm/RootWindowContainer;->prepareFreezingTaskBounds()V +PLcom/android/server/wm/RootWindowContainer;->setDisplayOverrideConfigurationIfNeeded(Landroid/content/res/Configuration;I)[I +PLcom/android/server/wm/RootWindowContainer;->setGlobalConfigurationIfNeeded(Landroid/content/res/Configuration;)[I +PLcom/android/server/wm/RootWindowContainer;->setSecureSurfaceState(IZ)V +PLcom/android/server/wm/RootWindowContainer;->toBrightnessOverride(F)I +PLcom/android/server/wm/RootWindowContainer;->updateStackBoundsAfterConfigChange()[I +PLcom/android/server/wm/ScreenRotationAnimation;->(Landroid/content/Context;Lcom/android/server/wm/DisplayContent;Landroid/view/SurfaceSession;ZZZLcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/ScreenRotationAnimation;->createRotationMatrix(IIILandroid/graphics/Matrix;)V +PLcom/android/server/wm/ScreenRotationAnimation;->dismiss(Landroid/view/SurfaceSession;JFIIII)Z +PLcom/android/server/wm/ScreenRotationAnimation;->hasScreenshot()Z +PLcom/android/server/wm/ScreenRotationAnimation;->isRotating()Z +PLcom/android/server/wm/ScreenRotationAnimation;->kill()V +PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(I)V +PLcom/android/server/wm/ScreenRotationAnimation;->setRotationInTransaction(ILandroid/view/SurfaceSession;JFII)Z +PLcom/android/server/wm/ScreenRotationAnimation;->startAnimation(Landroid/view/SurfaceSession;JFIIZII)Z +PLcom/android/server/wm/ScreenRotationAnimation;->stepAnimationLocked(J)Z +PLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/InputChannel;)I +PLcom/android/server/wm/Session;->binderDied()V +PLcom/android/server/wm/Session;->cancelAlertWindowNotification()V +PLcom/android/server/wm/Session;->getInTouchMode()Z +PLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; +PLcom/android/server/wm/Session;->killSessionLocked()V +PLcom/android/server/wm/Session;->remove(Landroid/view/IWindow;)V +PLcom/android/server/wm/Session;->setHasOverlayUi(Z)V +PLcom/android/server/wm/Session;->setInTouchMode(Z)V +PLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V +PLcom/android/server/wm/Session;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V +PLcom/android/server/wm/Session;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V +PLcom/android/server/wm/Session;->windowRemovedLocked()V +PLcom/android/server/wm/SnapshotStartingData;->(Lcom/android/server/wm/WindowManagerService;Landroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Landroid/view/WindowManagerPolicy$StartingSurface; +PLcom/android/server/wm/SplashScreenStartingData;->(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;)V +PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Landroid/view/WindowManagerPolicy$StartingSurface; +PLcom/android/server/wm/StackWindowController$H;->(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V +PLcom/android/server/wm/StackWindowController;->(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;)V +PLcom/android/server/wm/StackWindowController;->(ILcom/android/server/wm/StackWindowListener;IZLandroid/graphics/Rect;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/StackWindowController;->getRawBounds(Landroid/graphics/Rect;)V +PLcom/android/server/wm/StackWindowController;->positionChildAtBottom(Lcom/android/server/wm/TaskWindowContainerController;)V +PLcom/android/server/wm/StartingData;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setOpaque(Z)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setSize(II)V +PLcom/android/server/wm/SurfaceControlWithBackground;->setTransparentRegionHint(Landroid/graphics/Region;)V +PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/AppWindowToken;I)V +PLcom/android/server/wm/Task;->forceWindowsScaleable(Z)V +PLcom/android/server/wm/Task;->getController()Lcom/android/server/wm/TaskWindowContainerController; +PLcom/android/server/wm/Task;->getLayerForDim(Lcom/android/server/wm/WindowStateAnimator;II)I +PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription; +PLcom/android/server/wm/Task;->getTopFullscreenAppToken()Lcom/android/server/wm/AppWindowToken; +PLcom/android/server/wm/Task;->hasWindowsAlive()Z +PLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/AppWindowToken;Z)V +PLcom/android/server/wm/Task;->prepareFreezingBounds()V +PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V +PLcom/android/server/wm/Task;->removeIfPossible()V +PLcom/android/server/wm/Task;->removeImmediately()V +PLcom/android/server/wm/Task;->setSendingToBottom(Z)V +PLcom/android/server/wm/Task;->shouldDeferRemoval()Z +PLcom/android/server/wm/Task;->updateDisplayInfo(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/TaskSnapshotCache$CacheEntry;->(Landroid/app/ActivityManager$TaskSnapshot;Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/TaskSnapshotCache;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotLoader;)V +PLcom/android/server/wm/TaskSnapshotCache;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/TaskSnapshotCache;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/TaskSnapshotCache;->onTaskRemoved(I)V +PLcom/android/server/wm/TaskSnapshotCache;->removeRunningEntry(I)V +PLcom/android/server/wm/TaskSnapshotCache;->tryRestoreFromDisk(IIZ)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/wm/TaskSnapshotController;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/TaskSnapshotController;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Landroid/view/WindowManagerPolicy$StartingSurface; +PLcom/android/server/wm/TaskSnapshotController;->drawAppThemeSnapshot(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/wm/TaskSnapshotController;->getSnapshotMode(Lcom/android/server/wm/Task;)I +PLcom/android/server/wm/TaskSnapshotController;->minRect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect; +PLcom/android/server/wm/TaskSnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/AppWindowToken;Z)V +PLcom/android/server/wm/TaskSnapshotController;->notifyTaskRemovedFromRecents(II)V +PLcom/android/server/wm/TaskSnapshotController;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/TaskSnapshotController;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/TaskSnapshotController;->onTransitionStarting()V +PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V +PLcom/android/server/wm/TaskSnapshotController;->shouldDisableSnapshots()Z +PLcom/android/server/wm/TaskSnapshotController;->systemReady()V +PLcom/android/server/wm/TaskSnapshotLoader;->(Lcom/android/server/wm/TaskSnapshotPersister;)V +PLcom/android/server/wm/TaskSnapshotLoader;->loadTask(IIZ)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/wm/TaskSnapshotPersister$1;->(Lcom/android/server/wm/TaskSnapshotPersister;Ljava/lang/String;)V +PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->(Lcom/android/server/wm/TaskSnapshotPersister;II)V +PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->write()V +PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[I)V +PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->(Lcom/android/server/wm/TaskSnapshotPersister;IILandroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onDequeuedLocked()V +PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onQueuedLocked()V +PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->write()V +PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->(Lcom/android/server/wm/TaskSnapshotPersister;)V +PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->(Lcom/android/server/wm/TaskSnapshotPersister;Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V +PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onDequeuedLocked()V +PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onQueuedLocked()V +PLcom/android/server/wm/TaskSnapshotPersister;->-get2(Lcom/android/server/wm/TaskSnapshotPersister;)Z +PLcom/android/server/wm/TaskSnapshotPersister;->-get3(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet; +PLcom/android/server/wm/TaskSnapshotPersister;->-get4(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque; +PLcom/android/server/wm/TaskSnapshotPersister;->-wrap0(Lcom/android/server/wm/TaskSnapshotPersister;I)Z +PLcom/android/server/wm/TaskSnapshotPersister;->-wrap1(Lcom/android/server/wm/TaskSnapshotPersister;I)Ljava/io/File; +PLcom/android/server/wm/TaskSnapshotPersister;->-wrap2(Lcom/android/server/wm/TaskSnapshotPersister;II)V +PLcom/android/server/wm/TaskSnapshotPersister;->(Lcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;)V +PLcom/android/server/wm/TaskSnapshotPersister;->createDirectory(I)Z +PLcom/android/server/wm/TaskSnapshotPersister;->deleteSnapshot(II)V +PLcom/android/server/wm/TaskSnapshotPersister;->ensureStoreQueueDepthLocked()V +PLcom/android/server/wm/TaskSnapshotPersister;->onTaskRemovedFromRecents(II)V +PLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V +PLcom/android/server/wm/TaskSnapshotPersister;->start()V +PLcom/android/server/wm/TaskSnapshotSurface$1;->(Landroid/os/Looper;)V +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->(IIIII)V +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawDecors(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawNavigationBarBackground(Landroid/graphics/Canvas;)V +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawStatusBarBackground(Landroid/graphics/Canvas;Landroid/graphics/Rect;I)V +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->getStatusBarColorViewHeight()I +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->isNavigationBarColorViewVisible()Z +PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->setInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/wm/TaskSnapshotSurface$Window;->()V +PLcom/android/server/wm/TaskSnapshotSurface$Window;->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;ZZI)V +PLcom/android/server/wm/TaskSnapshotSurface$Window;->setOuter(Lcom/android/server/wm/TaskSnapshotSurface;)V +PLcom/android/server/wm/TaskSnapshotSurface;->-get1(Lcom/android/server/wm/TaskSnapshotSurface;)I +PLcom/android/server/wm/TaskSnapshotSurface;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotSurface$Window;Landroid/view/Surface;Landroid/app/ActivityManager$TaskSnapshot;Ljava/lang/CharSequence;IIIIIILandroid/graphics/Rect;I)V +PLcom/android/server/wm/TaskSnapshotSurface;->drawSizeMatchSnapshot(Landroid/graphics/GraphicBuffer;)V +PLcom/android/server/wm/TaskSnapshotSurface;->drawSnapshot()V +PLcom/android/server/wm/TaskSnapshotSurface;->remove()V +PLcom/android/server/wm/TaskSnapshotSurface;->reportDrawn()V +PLcom/android/server/wm/TaskSnapshotSurface;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V +PLcom/android/server/wm/TaskStack;->(Lcom/android/server/wm/WindowManagerService;I)V +PLcom/android/server/wm/TaskStack;->addTask(Lcom/android/server/wm/Task;IZZ)V +PLcom/android/server/wm/TaskStack;->findHomeTask()Lcom/android/server/wm/Task; +PLcom/android/server/wm/TaskStack;->getRawFullscreen()Z +PLcom/android/server/wm/TaskStack;->hasMovementAnimations()Z +PLcom/android/server/wm/TaskStack;->isAdjustedForIme()Z +PLcom/android/server/wm/TaskStack;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/TaskStack;->prepareFreezingTaskBounds()V +PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/Task;)V +PLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/WindowContainer;)V +PLcom/android/server/wm/TaskStack;->setBounds(Landroid/graphics/Rect;)Z +PLcom/android/server/wm/TaskStack;->toShortString()Ljava/lang/String; +PLcom/android/server/wm/TaskStack;->updateBoundsAfterConfigChange()Z +PLcom/android/server/wm/TaskStack;->updateDisplayInfo(Landroid/graphics/Rect;)V +PLcom/android/server/wm/TaskTapPointerEventListener;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/TaskWindowContainerController$H;->(Ljava/lang/ref/WeakReference;Landroid/os/Looper;)V +PLcom/android/server/wm/TaskWindowContainerController$H;->handleMessage(Landroid/os/Message;)V +PLcom/android/server/wm/TaskWindowContainerController;->(ILcom/android/server/wm/TaskWindowContainerListener;Lcom/android/server/wm/StackWindowController;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZZZLandroid/app/ActivityManager$TaskDescription;)V +PLcom/android/server/wm/TaskWindowContainerController;->createTask(ILcom/android/server/wm/TaskStack;ILandroid/graphics/Rect;Landroid/content/res/Configuration;IZZLandroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task; +PLcom/android/server/wm/TaskWindowContainerController;->positionChildAt(Lcom/android/server/wm/AppWindowContainerController;I)V +PLcom/android/server/wm/TaskWindowContainerController;->removeContainer()V +PLcom/android/server/wm/TaskWindowContainerController;->reportSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V +PLcom/android/server/wm/UnknownAppVisibilityController;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z +PLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/UnknownAppVisibilityController;->clear()V +PLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/UnknownAppVisibilityController;->notifyLaunched(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->()V +PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V +PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopWallpaper(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setUseTopWallpaperAsTarget(Z)V +PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/WallpaperController;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V +PLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V +PLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeeded()V +PLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z +PLcom/android/server/wm/WallpaperController;->setWindowWallpaperPosition(Lcom/android/server/wm/WindowState;FFFF)V +PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V +PLcom/android/server/wm/WallpaperVisibilityListeners;->()V +PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V +PLcom/android/server/wm/WallpaperWindowToken;->(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;Z)V +PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(IIZ)V +PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;->(Lcom/android/server/wm/WindowAnimator;)V +PLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;->(Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;)V +PLcom/android/server/wm/WindowAnimator;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowAnimator;->addDisplayLocked(I)V +PLcom/android/server/wm/WindowAnimator;->isAnimating()Z +PLcom/android/server/wm/WindowAnimator;->isAnimationScheduled()Z +PLcom/android/server/wm/WindowAnimator;->lambda$-com_android_server_wm_WindowAnimator_3844()V +PLcom/android/server/wm/WindowAnimator;->requestRemovalOfReplacedWindows(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/WindowAnimator;->setScreenRotationAnimationLocked(ILcom/android/server/wm/ScreenRotationAnimation;)V +PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->(Lcom/android/server/wm/WindowContainer;)V +PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;)V +PLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V +PLcom/android/server/wm/WindowContainer;->getOverrideConfiguration()Landroid/content/res/Configuration; +PLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V +PLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/WindowContainer;->removeIfPossible()V +PLcom/android/server/wm/WindowContainer;->setOrientation(I)V +PLcom/android/server/wm/WindowContainerController;->(Lcom/android/server/wm/WindowContainerListener;Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowContainerController;->removeContainer()V +PLcom/android/server/wm/WindowContainerController;->setContainer(Lcom/android/server/wm/WindowContainer;)V +PLcom/android/server/wm/WindowHashMap;->()V +PLcom/android/server/wm/WindowLayersController;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowLayersController;->assignAndIncreaseLayerIfNeeded(Lcom/android/server/wm/WindowState;I)I +PLcom/android/server/wm/WindowList;->addFirst(Ljava/lang/Object;)V +PLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object; +PLcom/android/server/wm/WindowManagerService$1;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +PLcom/android/server/wm/WindowManagerService$2;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$2;->onAppTransitionCancelledLocked(I)V +PLcom/android/server/wm/WindowManagerService$3;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$3;->run()V +PLcom/android/server/wm/WindowManagerService$4;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$5;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$7;->(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V +PLcom/android/server/wm/WindowManagerService$H;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$LocalService;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;II)V +PLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowToken()Landroid/os/IBinder; +PLcom/android/server/wm/WindowManagerService$LocalService;->getInputMethodWindowVisibleHeight()I +PLcom/android/server/wm/WindowManagerService$LocalService;->isHardKeyboardAvailable()Z +PLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardGoingAway()Z +PLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Landroid/view/WindowManagerInternal$AppTransitionListener;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZI)V +PLcom/android/server/wm/WindowManagerService$LocalService;->requestTraversalFromDisplayManager()V +PLcom/android/server/wm/WindowManagerService$LocalService;->setOnHardKeyboardStatusChangeListener(Landroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZLandroid/os/IBinder;)V +PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Ljava/lang/Runnable;J)V +PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->()V +PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->(Lcom/android/server/wm/WindowManagerService$MousePositionTracker;)V +PLcom/android/server/wm/WindowManagerService$RotationWatcher;->(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRotationWatcher;Landroid/os/IBinder$DeathRecipient;I)V +PLcom/android/server/wm/WindowManagerService$SettingsObserver;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService;->-get2(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/KeyguardDisableHandler; +PLcom/android/server/wm/WindowManagerService;->-wrap0(Lcom/android/server/wm/WindowManagerService;)Z +PLcom/android/server/wm/WindowManagerService;->-wrap1(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/WindowManagerService;->-wrap4(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService;->-wrap6(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowManagerService;->(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V +PLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;II)V +PLcom/android/server/wm/WindowManagerService;->canDispatchPointerEvents()Z +PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z +PLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V +PLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration; +PLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration; +PLcom/android/server/wm/WindowManagerService;->configureDisplayPolicyLocked(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/WindowManagerService;->createDisplayContentLocked(Landroid/view/Display;)V +PLcom/android/server/wm/WindowManagerService;->createInputConsumer(Ljava/lang/String;Landroid/view/InputChannel;)V +PLcom/android/server/wm/WindowManagerService;->createWatermarkInTransaction()V +PLcom/android/server/wm/WindowManagerService;->destroyInputConsumer(Ljava/lang/String;)Z +PLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z +PLcom/android/server/wm/WindowManagerService;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;)V +PLcom/android/server/wm/WindowManagerService;->displayReady()V +PLcom/android/server/wm/WindowManagerService;->displayReady(I)V +PLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z +PLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V +PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V +PLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V +PLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I +PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I +PLcom/android/server/wm/WindowManagerService;->getDisplaysInFocusOrder(Landroid/util/SparseIntArray;)V +PLcom/android/server/wm/WindowManagerService;->getDockedStackSide()I +PLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I +PLcom/android/server/wm/WindowManagerService;->getInitialDisplaySize(ILandroid/graphics/Point;)V +PLcom/android/server/wm/WindowManagerService;->getInputMonitor()Lcom/android/server/wm/InputMonitor; +PLcom/android/server/wm/WindowManagerService;->getInstance()Lcom/android/server/wm/WindowManagerService; +PLcom/android/server/wm/WindowManagerService;->getPendingAppTransition()I +PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZ)Landroid/app/ActivityManager$TaskSnapshot; +PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F +PLcom/android/server/wm/WindowManagerService;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId; +PLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object; +PLcom/android/server/wm/WindowManagerService;->hasNavigationBar()Z +PLcom/android/server/wm/WindowManagerService;->hasWideColorGamutSupport()Z +PLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V +PLcom/android/server/wm/WindowManagerService;->inKeyguardRestrictedInputMode()Z +PLcom/android/server/wm/WindowManagerService;->initPolicy()V +PLcom/android/server/wm/WindowManagerService;->isKeyguardSecure()Z +PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z +PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z +PLcom/android/server/wm/WindowManagerService;->lambda$-com_android_server_wm_WindowManagerService_42198(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)V +PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZZLandroid/view/WindowManagerPolicy;)Lcom/android/server/wm/WindowManagerService; +PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunching(Landroid/os/IBinder;)V +PLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchingFinished(Landroid/os/IBinder;)V +PLcom/android/server/wm/WindowManagerService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;)V +PLcom/android/server/wm/WindowManagerService;->notifyKeyguardTrustedChanged()V +PLcom/android/server/wm/WindowManagerService;->notifyTaskRemovedFromRecents(II)V +PLcom/android/server/wm/WindowManagerService;->onDisplayChanged(I)V +PLcom/android/server/wm/WindowManagerService;->onKeyguardOccludedChanged(Z)V +PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V +PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;)Landroid/view/IWindowSession; +PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V +PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionClipReveal(IIII)V +PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V +PLcom/android/server/wm/WindowManagerService;->performEnableScreen()V +PLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/AppWindowToken;)V +PLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/AppWindowToken;)Z +PLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z +PLcom/android/server/wm/WindowManagerService;->readForcedDisplayPropertiesLocked(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/WindowManagerService;->reconfigureDisplayLocked(Lcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/WindowManagerService;->registerAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V +PLcom/android/server/wm/WindowManagerService;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V +PLcom/android/server/wm/WindowManagerService;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V +PLcom/android/server/wm/WindowManagerService;->registerPointerEventListener(Landroid/view/WindowManagerPolicy$PointerEventListener;)V +PLcom/android/server/wm/WindowManagerService;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V +PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z +PLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V +PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V +PLcom/android/server/wm/WindowManagerService;->sendNewConfiguration(I)V +PLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V +PLcom/android/server/wm/WindowManagerService;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V +PLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V +PLcom/android/server/wm/WindowManagerService;->setForceResizableTasks(Z)V +PLcom/android/server/wm/WindowManagerService;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/WindowManagerService;->setKeyguardGoingAway(Z)V +PLcom/android/server/wm/WindowManagerService;->setNewDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)[I +PLcom/android/server/wm/WindowManagerService;->setScreenCaptureDisabled(IZ)V +PLcom/android/server/wm/WindowManagerService;->setSupportsPictureInPicture(Z)V +PLcom/android/server/wm/WindowManagerService;->setTransparentRegionWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Region;)V +PLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V +PLcom/android/server/wm/WindowManagerService;->startFreezingDisplayLocked(ZIILcom/android/server/wm/DisplayContent;)V +PLcom/android/server/wm/WindowManagerService;->systemReady()V +PLcom/android/server/wm/WindowManagerService;->thawRotation()V +PLcom/android/server/wm/WindowManagerService;->unregisterAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V +PLcom/android/server/wm/WindowManagerService;->updateCircularDisplayMaskIfNeeded()V +PLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V +PLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V +PLcom/android/server/wm/WindowManagerService;->watchRotation(Landroid/view/IRotationWatcher;I)I +PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->()V +PLcom/android/server/wm/WindowState$1;->()V +PLcom/android/server/wm/WindowState$DeathRecipient;->(Lcom/android/server/wm/WindowState;)V +PLcom/android/server/wm/WindowState$DeathRecipient;->(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$DeathRecipient;)V +PLcom/android/server/wm/WindowState$DeathRecipient;->binderDied()V +PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->()V +PLcom/android/server/wm/WindowState$WindowId;->(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$WindowId;)V +PLcom/android/server/wm/WindowState;->-wrap1(Lcom/android/server/wm/WindowState;Z)V +PLcom/android/server/wm/WindowState;->attach()V +PLcom/android/server/wm/WindowState;->clearAnimatingFlags()Z +PLcom/android/server/wm/WindowState;->clearAnimatingWithSavedSurface()Z +PLcom/android/server/wm/WindowState;->forAllWindowBottomToTop(Lcom/android/internal/util/ToBooleanFunction;)Z +PLcom/android/server/wm/WindowState;->getContentFrameLw()Landroid/graphics/Rect; +PLcom/android/server/wm/WindowState;->getFrameLw()Landroid/graphics/Rect; +PLcom/android/server/wm/WindowState;->getGivenContentInsetsLw()Landroid/graphics/Rect; +PLcom/android/server/wm/WindowState;->getGivenInsetsPendingLw()Z +PLcom/android/server/wm/WindowState;->getGivenVisibleInsetsLw()Landroid/graphics/Rect; +PLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String; +PLcom/android/server/wm/WindowState;->getOwningUid()I +PLcom/android/server/wm/WindowState;->getReplacingWindow()Lcom/android/server/wm/WindowState; +PLcom/android/server/wm/WindowState;->getRotationAnimationHint()I +PLcom/android/server/wm/WindowState;->getVisibleFrameLw()Landroid/graphics/Rect; +PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z +PLcom/android/server/wm/WindowState;->hasDrawnLw()Z +PLcom/android/server/wm/WindowState;->hasVisibleNotDrawnWallpaper()Z +PLcom/android/server/wm/WindowState;->hidePermanentlyLw()V +PLcom/android/server/wm/WindowState;->isClosing()Z +PLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z +PLcom/android/server/wm/WindowState;->isWindowAnimationSet()Z +PLcom/android/server/wm/WindowState;->onSetAppExiting()Z +PLcom/android/server/wm/WindowState;->onStartFreezingScreen()V +PLcom/android/server/wm/WindowState;->onStopFreezingScreen()Z +PLcom/android/server/wm/WindowState;->orientationChangeTimedOut()V +PLcom/android/server/wm/WindowState;->removeIfPossible()V +PLcom/android/server/wm/WindowState;->setDragResizing()V +PLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V +PLcom/android/server/wm/WindowState;->setOrientationChanging(Z)V +PLcom/android/server/wm/WindowState;->setResizedWhileNotDragResizing(Z)V +PLcom/android/server/wm/WindowState;->setShowToOwnerOnlyLocked(Z)V +PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V +PLcom/android/server/wm/WindowState;->shouldKeepVisibleDeadAppWindow()Z +PLcom/android/server/wm/WindowState;->waitingForReplacement()Z +PLcom/android/server/wm/WindowStateAnimator;->clearAnimation()V +PLcom/android/server/wm/WindowStateAnimator;->destroyDeferredSurfaceLocked()V +PLcom/android/server/wm/WindowStateAnimator;->markPreservedSurfaceForDestroy()V +PLcom/android/server/wm/WindowStateAnimator;->setAnimation(Landroid/view/animation/Animation;)V +PLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V +PLcom/android/server/wm/WindowStateAnimator;->setTransparentRegionHintLocked(Landroid/graphics/Region;)V +PLcom/android/server/wm/WindowStateAnimator;->tryChangeFormatInPlaceLocked()Z +PLcom/android/server/wm/WindowSurfaceController;->getLayer()I +PLcom/android/server/wm/WindowSurfaceController;->setOpaque(Z)V +PLcom/android/server/wm/WindowSurfaceController;->setTransparentRegionHint(Landroid/graphics/Region;)V +PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;->()V +PLcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;->(Lcom/android/server/wm/WindowSurfacePlacer$LayerAndToken;)V +PLcom/android/server/wm/WindowSurfacePlacer;->(Lcom/android/server/wm/WindowManagerService;)V +PLcom/android/server/wm/WindowSurfacePlacer;->handleNonAppWindowsInTransition(II)V +PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z +PLcom/android/server/wm/WindowSurfacePlacer;->processApplicationsAnimatingInPlace(I)V +PLcom/android/server/wm/WindowToken;->(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V +PLcom/android/server/wm/WindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken; +PLcom/android/server/wm/WindowToken;->isEmpty()Z +PLcom/android/server/wm/WindowToken;->lambda$-com_android_server_wm_WindowToken_3278(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I +PLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V +PLcom/android/server/wm/WindowToken;->removeImmediately()V +PLcom/android/server/wm/WindowToken;->setExiting()V +PLcom/android/server/wm/animation/ClipRectLRAnimation;->(IIII)V +PLcom/android/server/wm/animation/ClipRectTBAnimation;->(IIIIIILandroid/view/animation/Interpolator;)V +PLcom/android/timezone/distro/installer/TimeZoneDistroInstaller;->(Ljava/lang/String;Ljava/io/File;Ljava/io/File;)V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->$m$2()V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->(BLjava/lang/Object;Ljava/lang/Object;)V +SPLcom/android/server/-$Lambda$Ganck_s9Kl5o2K6eVDoQTKLc-6g;->run()V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->$m$0()V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->(B)V +SPLcom/android/server/-$Lambda$T7cKu_OKm_Fk2kBNthmo_uUJTSo;->run()V +SPLcom/android/server/AppOpsService$1;->(Lcom/android/server/AppOpsService;)V +SPLcom/android/server/AppOpsService$Callback;->(Lcom/android/server/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;)V +SPLcom/android/server/AppOpsService$Ops;->(Ljava/lang/String;Lcom/android/server/AppOpsService$UidState;Z)V +SPLcom/android/server/AppOpsService$UidState;->(I)V +SPLcom/android/server/AppOpsService;->(Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/AppOpsService;->publish(Landroid/content/Context;)V +SPLcom/android/server/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/DisplayThread;->()V +SPLcom/android/server/DisplayThread;->ensureThreadLocked()V +SPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread; +SPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/FgThread;->()V +SPLcom/android/server/FgThread;->ensureThreadLocked()V +SPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread; +SPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/IntentResolver$1;->()V +SPLcom/android/server/IntentResolver;->()V +SPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set; +SPLcom/android/server/IoThread;->()V +SPLcom/android/server/IoThread;->ensureThreadLocked()V +SPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object; +SPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object; +SPLcom/android/server/RecoverySystemService$BinderService;->(Lcom/android/server/RecoverySystemService;)V +SPLcom/android/server/RecoverySystemService$BinderService;->(Lcom/android/server/RecoverySystemService;Lcom/android/server/RecoverySystemService$BinderService;)V +SPLcom/android/server/RecoverySystemService;->(Landroid/content/Context;)V +SPLcom/android/server/RecoverySystemService;->onStart()V +SPLcom/android/server/RescueParty$BootThreshold;->()V +SPLcom/android/server/RescueParty$Threshold;->(IIJ)V +SPLcom/android/server/RescueParty;->isDisabled()Z +SPLcom/android/server/RescueParty;->isUsbActive()Z +SPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V +SPLcom/android/server/ServiceThread;->(Ljava/lang/String;IZ)V +SPLcom/android/server/ServiceThread;->run()V +SPLcom/android/server/SystemServer;->-com_android_server_SystemServer-mthref-0()V +SPLcom/android/server/SystemServer;->()V +SPLcom/android/server/SystemServer;->createSystemContext()V +SPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V +SPLcom/android/server/SystemServer;->performPendingShutdown()V +SPLcom/android/server/SystemServer;->run()V +SPLcom/android/server/SystemServer;->startBootstrapServices()V +SPLcom/android/server/SystemServerInitThreadPool;->()V +SPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool; +SPLcom/android/server/SystemServerInitThreadPool;->lambda$-com_android_server_SystemServerInitThreadPool_2249(Ljava/lang/String;Ljava/lang/Runnable;)V +SPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future; +SPLcom/android/server/SystemService;->(Landroid/content/Context;)V +SPLcom/android/server/SystemService;->onBootPhase(I)V +SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V +SPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V +SPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V +SPLcom/android/server/SystemServiceManager;->(Landroid/content/Context;)V +SPLcom/android/server/SystemServiceManager;->setRuntimeRestarted(Z)V +SPLcom/android/server/ThreadPriorityBooster$1;->(Lcom/android/server/ThreadPriorityBooster;)V +SPLcom/android/server/ThreadPriorityBooster;->(II)V +SPLcom/android/server/UiThread;->()V +SPLcom/android/server/UiThread;->ensureThreadLocked()V +SPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread; +SPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler; +SPLcom/android/server/UiThread;->run()V +SPLcom/android/server/Watchdog$BinderThreadMonitor;->()V +SPLcom/android/server/Watchdog$BinderThreadMonitor;->(Lcom/android/server/Watchdog$BinderThreadMonitor;)V +SPLcom/android/server/Watchdog$HandlerChecker;->(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V +SPLcom/android/server/Watchdog$HandlerChecker;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V +SPLcom/android/server/Watchdog$OpenFdMonitor;->(Ljava/io/File;Ljava/io/File;)V +SPLcom/android/server/Watchdog$OpenFdMonitor;->create()Lcom/android/server/Watchdog$OpenFdMonitor; +SPLcom/android/server/Watchdog;->()V +SPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V +SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V +SPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V +SPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog; +SPLcom/android/server/am/-$Lambda$FqYE94sGA9-gF3KGIicLxzMb89s;->(B)V +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->$m$0(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->()V +SPLcom/android/server/am/-$Lambda$pTkujrAbcljW_zZtzXt4TxsgOZU;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/ActiveServices$1;->(Lcom/android/server/am/ActiveServices;)V +SPLcom/android/server/am/ActiveServices;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerConstants;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V +SPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I +SPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V +SPLcom/android/server/am/ActivityManagerService$1;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$2;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$3;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$4;->(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V +SPLcom/android/server/am/ActivityManagerService$Injector;->()V +SPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/AppOpsService; +SPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler; +SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object; +SPLcom/android/server/am/ActivityManagerService$KillHandler;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$Lifecycle;->(Landroid/content/Context;)V +SPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService; +SPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V +SPLcom/android/server/am/ActivityManagerService$LocalService;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$MainHandler;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityManagerService$UiHandler;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;->()V +SPLcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;->(Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult;)V +SPLcom/android/server/am/ActivityManagerService;->-wrap10(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/ActivityManagerService;->(Landroid/content/Context;)V +SPLcom/android/server/am/ActivityManagerService;->createStackSupervisor()Lcom/android/server/am/ActivityStackSupervisor; +SPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V +SPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V +SPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V +SPLcom/android/server/am/ActivityManagerService;->start()V +SPLcom/android/server/am/ActivityMetricsLogger;->(Lcom/android/server/am/ActivityStackSupervisor;Landroid/content/Context;)V +SPLcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler;->(Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityStackSupervisor$FindTaskResult;->()V +SPLcom/android/server/am/ActivityStackSupervisor;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V +SPLcom/android/server/am/ActivityStackSupervisor;->getChildCount()I +SPLcom/android/server/am/ActivityStackSupervisor;->initPowerManagement()V +SPLcom/android/server/am/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/am/RecentTasks;)V +SPLcom/android/server/am/ActivityStartInterceptor;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/ActivityStarter;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/AppErrors;->(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$1;->(Lcom/android/server/am/BatteryExternalStatsWorker;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$2;->(Lcom/android/server/am/BatteryExternalStatsWorker;)V +SPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get0(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get1(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get2(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get3(Lcom/android/server/am/BatteryExternalStatsWorker;)I +SPLcom/android/server/am/BatteryExternalStatsWorker;->-get4(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set1(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/am/BatteryExternalStatsWorker;->-set2(Lcom/android/server/am/BatteryExternalStatsWorker;I)I +SPLcom/android/server/am/BatteryExternalStatsWorker;->-wrap0(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;I)V +SPLcom/android/server/am/BatteryExternalStatsWorker;->(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V +SPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$-com_android_server_am_BatteryExternalStatsWorker_2654(Ljava/lang/Runnable;)Ljava/lang/Thread; +SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future; +SPLcom/android/server/am/BatteryStatsService$1;->(Lcom/android/server/am/BatteryStatsService;)V +SPLcom/android/server/am/BatteryStatsService$1;->getUserIds()[I +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->(Lcom/android/server/am/BatteryStatsService;)V +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V +SPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String; +SPLcom/android/server/am/BatteryStatsService;->-wrap0(Ljava/nio/ByteBuffer;)I +SPLcom/android/server/am/BatteryStatsService;->(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V +SPLcom/android/server/am/BatteryStatsService;->publish()V +SPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V +SPLcom/android/server/am/BroadcastQueue$BroadcastHandler;->(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V +SPLcom/android/server/am/BroadcastQueue;->(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;JZ)V +SPLcom/android/server/am/CompatModePackages$CompatHandler;->(Lcom/android/server/am/CompatModePackages;Landroid/os/Looper;)V +SPLcom/android/server/am/CompatModePackages;->(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;Landroid/os/Handler;)V +SPLcom/android/server/am/InstrumentationReporter;->()V +SPLcom/android/server/am/KeyguardController;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/ProcessList;->()V +SPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V +SPLcom/android/server/am/ProcessStatsService$1;->(Lcom/android/server/am/ProcessStatsService;)V +SPLcom/android/server/am/ProcessStatsService;->(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V +SPLcom/android/server/am/ProcessStatsService;->updateFile()V +SPLcom/android/server/am/ProviderMap;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/RecentTasks$1;->()V +SPLcom/android/server/am/RecentTasks;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;)V +SPLcom/android/server/am/TaskChangeNotificationController$MainHandler;->(Lcom/android/server/am/TaskChangeNotificationController;Landroid/os/Looper;)V +SPLcom/android/server/am/TaskChangeNotificationController;->(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityStackSupervisor;Landroid/os/Handler;)V +SPLcom/android/server/am/TaskPersister$LazyTaskWriterThread;->(Lcom/android/server/am/TaskPersister;Ljava/lang/String;)V +SPLcom/android/server/am/TaskPersister;->(Ljava/io/File;Lcom/android/server/am/ActivityStackSupervisor;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/RecentTasks;)V +SPLcom/android/server/am/UserController$Injector;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context; +SPLcom/android/server/am/UserController$Injector;->getHandler()Landroid/os/Handler; +SPLcom/android/server/am/UserController$Injector;->getLock()Ljava/lang/Object; +SPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils; +SPLcom/android/server/am/UserController;->(Lcom/android/server/am/ActivityManagerService;)V +SPLcom/android/server/am/UserController;->(Lcom/android/server/am/UserController$Injector;)V +SPLcom/android/server/am/UserController;->updateStartedUserArrayLocked()V +SPLcom/android/server/am/UserState;->(Landroid/os/UserHandle;)V +SPLcom/android/server/am/VrController$1;->(Lcom/android/server/am/VrController;)V +SPLcom/android/server/am/VrController;->(Ljava/lang/Object;)V +SPLcom/android/server/display/-$Lambda$pe87L53A2dvYIZSUUR6Usyk2Zwo;->()V +SPLcom/android/server/display/DisplayAdapter$1;->(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayAdapter$1;->run()V +SPLcom/android/server/display/DisplayAdapter$2;->(Lcom/android/server/display/DisplayAdapter;)V +SPLcom/android/server/display/DisplayAdapter$2;->run()V +SPLcom/android/server/display/DisplayAdapter;->-get0(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener; +SPLcom/android/server/display/DisplayAdapter;->(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;)V +SPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode; +SPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context; +SPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler; +SPLcom/android/server/display/DisplayAdapter;->registerLocked()V +SPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V +SPLcom/android/server/display/DisplayDevice;->(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V +SPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;->()V +SPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I +SPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z +SPLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z +SPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String; +SPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String; +SPLcom/android/server/display/DisplayManagerService$BinderService;->(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V +SPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()V +SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V +SPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V +SPLcom/android/server/display/DisplayManagerService$Injector;->()V +SPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J +SPLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)Lcom/android/server/display/VirtualDisplayAdapter; +SPLcom/android/server/display/DisplayManagerService$LocalService;->(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService$LocalService;->(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LocalService;)V +SPLcom/android/server/display/DisplayManagerService$SyncRoot;->()V +SPLcom/android/server/display/DisplayManagerService;->-get5(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot; +SPLcom/android/server/display/DisplayManagerService;->-wrap13(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap14(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap20(Lcom/android/server/display/DisplayManagerService;)V +SPLcom/android/server/display/DisplayManagerService;->-wrap28(Lcom/android/server/display/DisplayManagerService;Z)V +SPLcom/android/server/display/DisplayManagerService;->-wrap8(Lcom/android/server/display/DisplayManagerService;II)V +SPLcom/android/server/display/DisplayManagerService;->(Landroid/content/Context;)V +SPLcom/android/server/display/DisplayManagerService;->(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V +SPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay; +SPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I +SPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I +SPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V +SPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V +SPLcom/android/server/display/DisplayManagerService;->onStart()V +SPLcom/android/server/display/DisplayManagerService;->recordStableDisplayStatsIfNeededLocked(Lcom/android/server/display/LogicalDisplay;)V +SPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapters()V +SPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V +SPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V +SPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V +SPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z +SPLcom/android/server/display/DisplayTransformManager;->()V +SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V +SPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z +SPLcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver;->(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;I[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord; +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V +SPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[II)Z +SPLcom/android/server/display/LocalDisplayAdapter;->(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V +SPLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I +SPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V +SPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(I)V +SPLcom/android/server/display/LogicalDisplay;->(IILcom/android/server/display/DisplayDevice;)V +SPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice; +SPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z +SPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V +SPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->-wrap0(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->()V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lorg/xmlpull/v1/XmlPullParser;)I +SPLcom/android/server/display/PersistentDataStore;->()V +SPLcom/android/server/display/PersistentDataStore;->clearState()V +SPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I +SPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState; +SPLcom/android/server/display/PersistentDataStore;->getStableDisplaySize()Landroid/graphics/Point; +SPLcom/android/server/display/PersistentDataStore;->load()V +SPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V +SPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/display/VirtualDisplayAdapter;->(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;)V +SPLcom/android/server/display/VirtualDisplayAdapter;->(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;)V +SPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V +SPLcom/android/server/firewall/AndFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/CategoryFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/FilterFactory;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String; +SPLcom/android/server/firewall/IntentFirewall$FirewallHandler;->(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V +SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->()V +SPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V +SPLcom/android/server/firewall/IntentFirewall$RuleObserver;->(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V +SPLcom/android/server/firewall/IntentFirewall;->(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V +SPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File; +SPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V +SPLcom/android/server/firewall/NotFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/OrFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/PortFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderFilter$2;->()V +SPLcom/android/server/firewall/SenderFilter$3;->()V +SPLcom/android/server/firewall/SenderFilter$4;->()V +SPLcom/android/server/firewall/SenderFilter$5;->()V +SPLcom/android/server/firewall/SenderPackageFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/SenderPermissionFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$10;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$1;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$2;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$3;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$4;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$5;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$6;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$7;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$8;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$9;->(Ljava/lang/String;)V +SPLcom/android/server/firewall/StringFilter$ValueProvider;->(Ljava/lang/String;)V +SPLcom/android/server/lights/Light;->()V +SPLcom/android/server/lights/LightsManager;->()V +SPLcom/android/server/lights/LightsService$1;->(Lcom/android/server/lights/LightsService;)V +SPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/Light; +SPLcom/android/server/lights/LightsService$2;->(Lcom/android/server/lights/LightsService;)V +SPLcom/android/server/lights/LightsService$LightImpl;->(Lcom/android/server/lights/LightsService;I)V +SPLcom/android/server/lights/LightsService$LightImpl;->(Lcom/android/server/lights/LightsService;ILcom/android/server/lights/LightsService$LightImpl;)V +SPLcom/android/server/lights/LightsService;->(Landroid/content/Context;)V +SPLcom/android/server/lights/LightsService;->onBootPhase(I)V +SPLcom/android/server/lights/LightsService;->onStart()V +SPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->(Landroid/content/Context;)V +SPLcom/android/server/os/DeviceIdentifiersPolicyService;->(Landroid/content/Context;)V +SPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V +SPLcom/android/server/pm/-$Lambda$i1ZZeLvwPPAZVBl_nnQ0C2t5oMs;->$m$1()V +SPLcom/android/server/pm/AbstractStatsBase;->(Ljava/lang/String;Ljava/lang/String;Z)V +SPLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile; +SPLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V +SPLcom/android/server/pm/BasePermission;->setGids([IZ)V +SPLcom/android/server/pm/CompilerStats;->()V +SPLcom/android/server/pm/CompilerStats;->read()V +SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V +SPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V +SPLcom/android/server/pm/DefaultPermissionGrantPolicy$1;->(Lcom/android/server/pm/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V +SPLcom/android/server/pm/DefaultPermissionGrantPolicy;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/Installer$1;->(Lcom/android/server/pm/Installer;)V +SPLcom/android/server/pm/Installer;->(Landroid/content/Context;)V +SPLcom/android/server/pm/Installer;->(Landroid/content/Context;Z)V +SPLcom/android/server/pm/Installer;->connect()V +SPLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V +SPLcom/android/server/pm/Installer;->invalidateMounts()V +SPLcom/android/server/pm/Installer;->onStart()V +SPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;->(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V +SPLcom/android/server/pm/InstantAppRegistry;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/KeySetHandle;->(JI)V +SPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I +SPLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;)V +SPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V +SPLcom/android/server/pm/KeySetManagerService;->(Landroid/util/ArrayMap;)V +SPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V +SPLcom/android/server/pm/PackageDexOptimizer;->(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V +SPLcom/android/server/pm/PackageInstallerService$1;->()V +SPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V +SPLcom/android/server/pm/PackageManagerException;->(ILjava/lang/String;)V +SPLcom/android/server/pm/PackageManagerService$1;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$2;->()V +SPLcom/android/server/pm/PackageManagerService$3;->()V +SPLcom/android/server/pm/PackageManagerService$9;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;->(Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator; +SPLcom/android/server/pm/PackageManagerService$ActivityIntentResolver;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$DefaultContainerConnection;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$MoveCallbacks;->(Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->(Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$PackageHandler;->(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V +SPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V +SPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->()V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +SPLcom/android/server/pm/PackageManagerService$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/PackageParser$ProviderIntentInfo; +SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->(Lcom/android/server/pm/PackageManagerService;)V +SPLcom/android/server/pm/PackageManagerService$ServiceIntentResolver;->(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver;)V +SPLcom/android/server/pm/PackageManagerService$SharedLibraryEntry;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)V +SPLcom/android/server/pm/PackageManagerService;->-get12(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List; +SPLcom/android/server/pm/PackageManagerService;->-get2()Ljava/util/Set; +SPLcom/android/server/pm/PackageManagerService;->-get5(Lcom/android/server/pm/PackageManagerService;)Z +SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/util/ArraySet;Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry;Landroid/content/pm/PackageParser$Package;)V +SPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPw(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;I)Z +SPLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->checkDefaultBrowser()V +SPLcom/android/server/pm/PackageManagerService;->decompressSystemApplications(Ljava/util/List;I)V +SPLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V +SPLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V +SPLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String; +SPLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z +SPLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/io/File;)Z +SPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService; +SPLcom/android/server/pm/PackageManagerService;->preparePackageParserCache(Z)Ljava/io/File; +SPLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V +SPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V +SPLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V +SPLcom/android/server/pm/PackageSetting;->getSharedUserId()I +SPLcom/android/server/pm/PackageSettingBase;->getInstallStatus()I +SPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V +SPLcom/android/server/pm/PackageUsage;->()V +SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V +SPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V +SPLcom/android/server/pm/ParallelPackageParser;->([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V +SPLcom/android/server/pm/ParallelPackageParser;->close()V +SPLcom/android/server/pm/PermissionsState$PermissionData;->revoke(I)Z +SPLcom/android/server/pm/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get0(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set; +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get1(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map; +SPLcom/android/server/pm/Policy$PolicyBuilder;->-get2(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String; +SPLcom/android/server/pm/Policy$PolicyBuilder;->()V +SPLcom/android/server/pm/Policy$PolicyBuilder;->addInnerPackageMapOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy; +SPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder; +SPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z +SPLcom/android/server/pm/Policy;->-get0(Lcom/android/server/pm/Policy;)Ljava/util/Set; +SPLcom/android/server/pm/Policy;->-get1(Lcom/android/server/pm/Policy;)Ljava/util/Map; +SPLcom/android/server/pm/Policy;->-get2(Lcom/android/server/pm/Policy;)Ljava/lang/String; +SPLcom/android/server/pm/Policy;->(Lcom/android/server/pm/Policy$PolicyBuilder;)V +SPLcom/android/server/pm/Policy;->(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy;)V +SPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set; +SPLcom/android/server/pm/Policy;->hasInnerPackages()Z +SPLcom/android/server/pm/PolicyComparator;->()V +SPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I +SPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +SPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z +SPLcom/android/server/pm/PreferredActivity;->(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z +SPLcom/android/server/pm/PreferredComponent;->(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String; +SPLcom/android/server/pm/PreferredIntentResolver;->()V +SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter; +SPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity; +SPLcom/android/server/pm/ProcessLoggingHandler;->()V +SPLcom/android/server/pm/ProtectedPackages;->(Landroid/content/Context;)V +SPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z +SPLcom/android/server/pm/SELinuxMMAC;->readPackageOrThrow(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/Policy$PolicyBuilder;)V +SPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V +SPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy; +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-wrap1(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V +SPLcom/android/server/pm/Settings$VersionInfo;->()V +SPLcom/android/server/pm/Settings;->-wrap0(Lcom/android/server/pm/Settings;I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->(Ljava/io/File;Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings;->(Ljava/lang/Object;)V +SPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting; +SPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver; +SPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo; +SPLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection; +SPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting; +SPLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File; +SPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readDomainVerificationLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSettingBase;)V +SPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V +SPLcom/android/server/pm/SharedUserSetting;->(Ljava/lang/String;II)V +SPLcom/android/server/pm/UserDataPreparer;->(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V +SPLcom/android/server/pm/UserManagerService$1;->(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$LocalService;->(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$LocalService;->(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService;)V +SPLcom/android/server/pm/UserManagerService$MainHandler;->(Lcom/android/server/pm/UserManagerService;)V +SPLcom/android/server/pm/UserManagerService$UserData;->()V +SPLcom/android/server/pm/UserManagerService;->(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V +SPLcom/android/server/pm/UserManagerService;->(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;)V +SPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V +SPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I +SPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J +SPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData; +SPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData; +SPLcom/android/server/pm/UserManagerService;->readUserListLP()V +SPLcom/android/server/pm/UserManagerService;->updateUserIds()V +SPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V +SPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set; +SPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle; +SPLcom/android/server/pm/dex/DexManager;->(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V +SPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->()V +SPLcom/android/server/pm/dex/PackageDexUsage;->()V +SPLcom/android/server/power/BatterySaverPolicy;->(Landroid/os/Handler;)V +SPLcom/android/server/power/PowerManagerService$1;->(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$2;->(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$BinderService;->(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$BinderService;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$BinderService;)V +SPLcom/android/server/power/PowerManagerService$Constants;->(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V +SPLcom/android/server/power/PowerManagerService$LocalService;->(Lcom/android/server/power/PowerManagerService;)V +SPLcom/android/server/power/PowerManagerService$LocalService;->(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$LocalService;)V +SPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState; +SPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V +SPLcom/android/server/power/PowerManagerService$PowerManagerHandler;->(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V +SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V +SPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V +SPLcom/android/server/power/PowerManagerService;->-get0(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/BatterySaverPolicy; +SPLcom/android/server/power/PowerManagerService;->-get10(Lcom/android/server/power/PowerManagerService;)Z +SPLcom/android/server/power/PowerManagerService;->-get11(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList; +SPLcom/android/server/power/PowerManagerService;->-wrap20(Ljava/lang/String;)V +SPLcom/android/server/power/PowerManagerService;->(Landroid/content/Context;)V +SPLcom/android/server/power/PowerManagerService;->createSuspendBlockerLocked(Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker; +SPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V +SPLcom/android/server/power/PowerManagerService;->onStart()V diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java index e37347a29f1267a59a0e16abc5500191bdf0b1b9..d2c7f5a02fdf126a7b27ae33445497ca744b3483 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java @@ -115,11 +115,24 @@ public final class AutofillManagerService extends SystemService { private final SparseBooleanArray mDisabledUsers = new SparseBooleanArray(); private final LocalLog mRequestsHistory = new LocalLog(20); + private final LocalLog mUiLatencyHistory = new LocalLog(20); private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { + if (sDebug) Slog.d(TAG, "Close system dialogs"); + + // TODO(b/64940307): we need to destroy all sessions that are finished but showing + // Save UI because there is no way to show the Save UI back when the activity + // beneath it is brought back to top. Ideally, we should just hide the UI and + // bring it back when the activity resumes. + synchronized (mLock) { + for (int i = 0; i < mServicesCache.size(); i++) { + mServicesCache.valueAt(i).destroyFinishedSessionsLocked(); + } + } + mUi.hideAll(null); } } @@ -294,7 +307,7 @@ public final class AutofillManagerService extends SystemService { AutofillManagerServiceImpl service = mServicesCache.get(resolvedUserId); if (service == null) { service = new AutofillManagerServiceImpl(mContext, mLock, mRequestsHistory, - resolvedUserId, mUi, mDisabledUsers.get(resolvedUserId)); + mUiLatencyHistory, resolvedUserId, mUi, mDisabledUsers.get(resolvedUserId)); mServicesCache.put(userId, service); } return service; @@ -464,6 +477,7 @@ public final class AutofillManagerService extends SystemService { private void updateCachedServiceLocked(int userId, boolean disabled) { AutofillManagerServiceImpl service = getServiceForUserLocked(userId); if (service != null) { + service.destroySessionsLocked(); service.updateLocked(disabled); if (!service.isEnabled()) { removeCachedServiceLocked(userId); @@ -659,7 +673,22 @@ public final class AutofillManagerService extends SystemService { synchronized (mLock) { final AutofillManagerServiceImpl service = peekServiceForUserLocked(userId); if (service == null) return false; - return Objects.equals(packageName, service.getPackageName()); + return Objects.equals(packageName, service.getServicePackageName()); + } + } + + @Override + public void onPendingSaveUi(int operation, IBinder token) { + Preconditions.checkNotNull(token, "token"); + Preconditions.checkArgument(operation == AutofillManager.PENDING_UI_OPERATION_CANCEL + || operation == AutofillManager.PENDING_UI_OPERATION_RESTORE, + "invalid operation: %d", operation); + synchronized (mLock) { + final AutofillManagerServiceImpl service = peekServiceForUserLocked( + UserHandle.getCallingUserId()); + if (service != null) { + service.onPendingSaveUi(operation, token); + } } } @@ -718,6 +747,8 @@ public final class AutofillManagerService extends SystemService { if (showHistory) { pw.println("Requests history:"); mRequestsHistory.reverseDump(fd, pw, args); + pw.println("UI latency history:"); + mUiLatencyHistory.reverseDump(fd, pw, args); } } finally { setDebugLocked(oldDebug); diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 5c63b90bd53554de0730b8801c3d261b774b5a6d..993c65b8567caf461a05822d97a7d2805eda91bc 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -34,6 +34,8 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.metrics.LogMaker; import android.os.AsyncTask; import android.os.Binder; import android.os.Bundle; @@ -41,7 +43,6 @@ import android.os.IBinder; import android.os.Looper; import android.os.RemoteCallbackList; import android.os.RemoteException; -import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.service.autofill.AutofillService; @@ -52,15 +53,19 @@ import android.service.autofill.FillResponse; import android.service.autofill.IAutoFillService; import android.text.TextUtils; import android.util.ArraySet; +import android.util.DebugUtils; import android.util.LocalLog; import android.util.Slog; import android.util.SparseArray; import android.view.autofill.AutofillId; +import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; import android.view.autofill.IAutoFillManagerClient; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.HandlerCaller; import com.android.server.autofill.ui.AutoFillUI; @@ -87,6 +92,7 @@ final class AutofillManagerServiceImpl { private final Context mContext; private final Object mLock; private final AutoFillUI mUi; + private final MetricsLogger mMetricsLogger = new MetricsLogger(); private RemoteCallbackList mClients; private AutofillServiceInfo mInfo; @@ -94,6 +100,8 @@ final class AutofillManagerServiceImpl { private static final Random sRandom = new Random(); private final LocalLog mRequestsHistory; + private final LocalLog mUiLatencyHistory; + /** * Whether service was disabled for user due to {@link UserManager} restrictions. */ @@ -135,17 +143,19 @@ final class AutofillManagerServiceImpl { private long mLastPrune = 0; AutofillManagerServiceImpl(Context context, Object lock, LocalLog requestsHistory, - int userId, AutoFillUI ui, boolean disabled) { + LocalLog uiLatencyHistory, int userId, AutoFillUI ui, boolean disabled) { mContext = context; mLock = lock; mRequestsHistory = requestsHistory; + mUiLatencyHistory = uiLatencyHistory; mUserId = userId; mUi = ui; updateLocked(disabled); } + @Nullable CharSequence getServiceName() { - final String packageName = getPackageName(); + final String packageName = getServicePackageName(); if (packageName == null) { return null; } @@ -160,7 +170,8 @@ final class AutofillManagerServiceImpl { } } - String getPackageName() { + @Nullable + String getServicePackageName() { final ComponentName serviceComponent = getServiceComponentName(); if (serviceComponent != null) { return serviceComponent.getPackageName(); @@ -214,8 +225,10 @@ final class AutofillManagerServiceImpl { if (serviceInfo != null) { mInfo = new AutofillServiceInfo(mContext.getPackageManager(), serviceComponent, mUserId); + if (sDebug) Slog.d(TAG, "Set component for user " + mUserId + " as " + mInfo); } else { mInfo = null; + if (sDebug) Slog.d(TAG, "Reset component for user " + mUserId); } final boolean isEnabled = isEnabled(); if (wasEnabled != isEnabled) { @@ -233,26 +246,6 @@ final class AutofillManagerServiceImpl { } } - /** - * Used by {@link AutofillManagerServiceShellCommand} to request save for the current top app. - */ - void requestSaveForUserLocked(IBinder activityToken) { - if (!isEnabled()) { - return; - } - - final int numSessions = mSessions.size(); - for (int i = 0; i < numSessions; i++) { - final Session session = mSessions.valueAt(i); - if (session.getActivityTokenLocked().equals(activityToken)) { - session.callSaveLocked(); - return; - } - } - - Slog.w(TAG, "requestSaveForUserLocked(): no session for " + activityToken); - } - boolean addClientLocked(IAutoFillManagerClient client) { if (mClients == null) { mClients = new RemoteCallbackList<>(); @@ -296,6 +289,7 @@ final class AutofillManagerServiceImpl { if (!isEnabled()) { return 0; } + if (sVerbose) Slog.v(TAG, "startSession(): token=" + activityToken + ", flags=" + flags); // Occasionally clean up abandoned sessions pruneAbandonedSessionsLocked(); @@ -366,17 +360,31 @@ final class AutofillManagerServiceImpl { } void disableOwnedAutofillServicesLocked(int uid) { - if (mInfo == null || mInfo.getServiceInfo().applicationInfo.uid != uid) { + Slog.i(TAG, "disableOwnedServices(" + uid + "): " + mInfo); + if (mInfo == null) return; + + final ServiceInfo serviceInfo = mInfo.getServiceInfo(); + if (serviceInfo.applicationInfo.uid != uid) { + Slog.w(TAG, "disableOwnedServices(): ignored when called by UID " + uid + + " instead of " + serviceInfo.applicationInfo.uid + + " for service " + mInfo); return; } + + final long identity = Binder.clearCallingIdentity(); try { final String autoFillService = getComponentNameFromSettings(); - if (mInfo.getServiceInfo().getComponentName().equals( - ComponentName.unflattenFromString(autoFillService))) { + final ComponentName componentName = serviceInfo.getComponentName(); + if (componentName.equals(ComponentName.unflattenFromString(autoFillService))) { + mMetricsLogger.action(MetricsEvent.AUTOFILL_SERVICE_DISABLED_SELF, + componentName.getPackageName()); Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE, null, mUserId); destroySessionsLocked(); + } else { + Slog.w(TAG, "disableOwnedServices(): ignored because current service (" + + serviceInfo + ") does not match Settings (" + autoFillService + ")"); } } finally { Binder.restoreCallingIdentity(identity); @@ -400,7 +408,7 @@ final class AutofillManagerServiceImpl { final Session newSession = new Session(this, mUi, mContext, mHandlerCaller, mUserId, mLock, sessionId, uid, activityToken, appCallbackToken, hasCallback, - mInfo.getServiceInfo().getComponentName(), packageName); + mUiLatencyHistory, mInfo.getServiceInfo().getComponentName(), packageName); mSessions.put(newSession.id, newSession); return newSession; @@ -467,6 +475,25 @@ final class AutofillManagerServiceImpl { } } + void onPendingSaveUi(int operation, @NonNull IBinder token) { + if (sVerbose) Slog.v(TAG, "onPendingSaveUi(" + operation + "): " + token); + synchronized (mLock) { + final int sessionCount = mSessions.size(); + for (int i = sessionCount - 1; i >= 0; i--) { + final Session session = mSessions.valueAt(i); + if (session.isSaveUiPendingForTokenLocked(token)) { + session.onPendingSaveUi(operation, token); + return; + } + } + } + if (sDebug) { + Slog.d(TAG, "No pending Save UI for token " + token + " and operation " + + DebugUtils.flagsToString(AutofillManager.class, "PENDING_UI_OPERATION_", + operation)); + } + } + void destroyLocked() { if (sVerbose) Slog.v(TAG, "destroyLocked()"); @@ -490,10 +517,16 @@ final class AutofillManagerServiceImpl { } } + @NonNull CharSequence getServiceLabel() { return mInfo.getServiceInfo().loadLabel(mContext.getPackageManager()); } + @NonNull + Drawable getServiceIcon() { + return mInfo.getServiceInfo().loadIcon(mContext.getPackageManager()); + } + /** * Initializes the last fill selection after an autofill service returned a new * {@link FillResponse}. @@ -542,9 +575,9 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill selection when an dataset authentication was selected. */ - void setDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId) { + void logDatasetAuthenticationSelected(@Nullable String selectedDataset, int sessionId) { synchronized (mLock) { - if (isValidEventLocked("setDatasetAuthenticationSelected()", sessionId)) { + if (isValidEventLocked("logDatasetAuthenticationSelected()", sessionId)) { mEventHistory.addEvent( new Event(Event.TYPE_DATASET_AUTHENTICATION_SELECTED, selectedDataset)); } @@ -554,9 +587,9 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill selection when an save Ui is shown. */ - void setSaveShown(int sessionId) { + void logSaveShown(int sessionId) { synchronized (mLock) { - if (isValidEventLocked("setSaveShown()", sessionId)) { + if (isValidEventLocked("logSaveShown()", sessionId)) { mEventHistory.addEvent(new Event(Event.TYPE_SAVE_SHOWN, null)); } } @@ -565,7 +598,7 @@ final class AutofillManagerServiceImpl { /** * Updates the last fill response when a dataset was selected. */ - void setDatasetSelected(@Nullable String selectedDataset, int sessionId) { + void logDatasetSelected(@Nullable String selectedDataset, int sessionId) { synchronized (mLock) { if (isValidEventLocked("setDatasetSelected()", sessionId)) { mEventHistory.addEvent(new Event(Event.TYPE_DATASET_SELECTED, selectedDataset)); @@ -635,8 +668,24 @@ final class AutofillManagerServiceImpl { } void destroySessionsLocked() { + if (mSessions.size() == 0) { + mUi.destroyAll(null, null, false); + return; + } while (mSessions.size() > 0) { - mSessions.valueAt(0).removeSelfLocked(); + mSessions.valueAt(0).forceRemoveSelfLocked(); + } + } + + // TODO(b/64940307): remove this method if SaveUI is refactored to be attached on activities + void destroyFinishedSessionsLocked() { + final int sessionCount = mSessions.size(); + for (int i = sessionCount - 1; i >= 0; i--) { + final Session session = mSessions.valueAt(i); + if (session.isSavingLocked()) { + if (sDebug) Slog.d(TAG, "destroyFinishedSessionsLocked(): " + session.id); + session.forceRemoveSelfLocked(); + } } } diff --git a/services/autofill/java/com/android/server/autofill/Helper.java b/services/autofill/java/com/android/server/autofill/Helper.java index 86e32e041a9614e834f02f630ac0e3cd8f469c0b..236fbfd94f5398b57d01300969194c4c4b2390ad 100644 --- a/services/autofill/java/com/android/server/autofill/Helper.java +++ b/services/autofill/java/com/android/server/autofill/Helper.java @@ -16,11 +16,19 @@ package com.android.server.autofill; +import android.annotation.NonNull; import android.annotation.Nullable; +import android.metrics.LogMaker; import android.os.Bundle; +import android.service.autofill.Dataset; +import android.util.ArrayMap; import android.util.ArraySet; import android.view.autofill.AutofillId; +import android.view.autofill.AutofillValue; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; + +import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; import java.util.Set; @@ -82,4 +90,26 @@ public final class Helper { } return array; } + + @NonNull + static ArrayMap getFields(@NonNull Dataset dataset) { + final ArrayList ids = dataset.getFieldIds(); + final ArrayList values = dataset.getFieldValues(); + final int size = ids == null ? 0 : ids.size(); + final ArrayMap fields = new ArrayMap<>(size); + for (int i = 0; i < size; i++) { + fields.put(ids.get(i), values.get(i)); + } + return fields; + } + + @NonNull + public static LogMaker newLogMaker(int category, String packageName, + String servicePackageName) { + final LogMaker log = new LogMaker(category).setPackageName(packageName); + if (servicePackageName != null) { + log.addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + } + return log; + } } diff --git a/services/autofill/java/com/android/server/autofill/RemoteFillService.java b/services/autofill/java/com/android/server/autofill/RemoteFillService.java index aebe92e1687ddcf4b10141ddf396e8bfe0e33796..af55807ff1f04a682810faf30501a332df6367a9 100644 --- a/services/autofill/java/com/android/server/autofill/RemoteFillService.java +++ b/services/autofill/java/com/android/server/autofill/RemoteFillService.java @@ -290,7 +290,7 @@ final class RemoteFillService implements DeathRecipient { } private void dispatchOnFillRequestFailure(PendingRequest pendingRequest, - CharSequence message) { + @Nullable CharSequence message) { mHandler.getHandler().post(() -> { if (handleResponseCallbackCommon(pendingRequest)) { mCallbacks.onFillRequestFailure(message, mComponentName.getPackageName()); @@ -298,6 +298,16 @@ final class RemoteFillService implements DeathRecipient { }); } + private void dispatchOnFillTimeout(@NonNull ICancellationSignal cancellationSignal) { + mHandler.getHandler().post(() -> { + try { + cancellationSignal.cancel(); + } catch (RemoteException e) { + Slog.w(LOG_TAG, "Error calling cancellation signal: " + e); + } + }); + } + private void dispatchOnSaveRequestSuccess(PendingRequest pendingRequest) { mHandler.getHandler().post(() -> { if (handleResponseCallbackCommon(pendingRequest)) { @@ -307,7 +317,7 @@ final class RemoteFillService implements DeathRecipient { } private void dispatchOnSaveRequestFailure(PendingRequest pendingRequest, - CharSequence message) { + @Nullable CharSequence message) { mHandler.getHandler().post(() -> { if (handleResponseCallbackCommon(pendingRequest)) { mCallbacks.onSaveRequestFailure(message, mComponentName.getPackageName()); @@ -377,8 +387,10 @@ final class RemoteFillService implements DeathRecipient { @Override public void executeMessage(Message message) { if (mDestroyed) { - Slog.w(LOG_TAG, "Not handling " + message + " as service for " - + mComponentName + " is already destroyed"); + if (sVerbose) { + Slog.v(LOG_TAG, "Not handling " + message + " as service for " + + mComponentName + " is already destroyed"); + } return; } switch (message.what) { @@ -430,7 +442,9 @@ final class RemoteFillService implements DeathRecipient { Slog.w(LOG_TAG, getClass().getSimpleName() + " timed out"); final RemoteFillService remoteService = mWeakService.get(); if (remoteService != null) { - fail(remoteService); + Slog.w(LOG_TAG, getClass().getSimpleName() + " timed out after " + + TIMEOUT_REMOTE_REQUEST_MILLIS + " ms"); + onTimeout(remoteService); } }; mServiceHandler.postAtTime(mTimeoutTrigger, @@ -483,7 +497,7 @@ final class RemoteFillService implements DeathRecipient { * Called by the self-destructure timeout when the AutofilllService didn't reply to the * request on time. */ - abstract void fail(RemoteFillService remoteService); + abstract void onTimeout(RemoteFillService remoteService); /** * @return whether this request leads to a final state where no @@ -547,12 +561,27 @@ final class RemoteFillService implements DeathRecipient { } @Override - void fail(RemoteFillService remoteService) { + void onTimeout(RemoteFillService remoteService) { + // NOTE: Must make these 2 calls asynchronously, because the cancellation signal is + // handled by the service, which could block. + final ICancellationSignal cancellation; + synchronized (mLock) { + cancellation = mCancellation; + } + if (cancellation != null) { + remoteService.dispatchOnFillTimeout(cancellation); + } remoteService.dispatchOnFillRequestFailure(PendingFillRequest.this, null); } @Override public void run() { + synchronized (mLock) { + if (isCancelledLocked()) { + if (sDebug) Slog.d(LOG_TAG, "run() called after canceled: " + mRequest); + return; + } + } final RemoteFillService remoteService = getService(); if (remoteService != null) { try { @@ -569,7 +598,10 @@ final class RemoteFillService implements DeathRecipient { public boolean cancel() { if (!super.cancel()) return false; - final ICancellationSignal cancellation = mCancellation; + final ICancellationSignal cancellation; + synchronized (mLock) { + cancellation = mCancellation; + } if (cancellation != null) { try { cancellation.cancel(); @@ -615,7 +647,7 @@ final class RemoteFillService implements DeathRecipient { } @Override - void fail(RemoteFillService remoteService) { + void onTimeout(RemoteFillService remoteService) { remoteService.dispatchOnSaveRequestFailure(PendingSaveRequest.this, null); } @@ -628,7 +660,7 @@ final class RemoteFillService implements DeathRecipient { } catch (RemoteException e) { Slog.e(LOG_TAG, "Error calling on save request", e); - remoteService.dispatchOnFillRequestFailure(PendingSaveRequest.this, null); + remoteService.dispatchOnSaveRequestFailure(PendingSaveRequest.this, null); } } } diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 6bc9c9c611c901b88b88d13daf7aaebe5788bc3e..905db6734a73894b08650d7e6387014f98f27f57 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -50,17 +50,22 @@ import android.os.Bundle; import android.os.IBinder; import android.os.Parcelable; import android.os.RemoteException; +import android.os.SystemClock; import android.service.autofill.AutofillService; import android.service.autofill.Dataset; import android.service.autofill.FillContext; import android.service.autofill.FillRequest; import android.service.autofill.FillResponse; +import android.service.autofill.InternalValidator; import android.service.autofill.SaveInfo; import android.service.autofill.SaveRequest; +import android.service.autofill.ValueFinder; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.LocalLog; import android.util.Slog; import android.util.SparseArray; +import android.util.TimeUtils; import android.view.autofill.AutofillId; import android.view.autofill.AutofillManager; import android.view.autofill.AutofillValue; @@ -75,9 +80,11 @@ import com.android.internal.os.HandlerCaller; import com.android.internal.os.IResultReceiver; import com.android.internal.util.ArrayUtils; import com.android.server.autofill.ui.AutoFillUI; +import com.android.server.autofill.ui.PendingUi; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; @@ -161,10 +168,30 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState @GuardedBy("mLock") private boolean mDestroyed; - /** Whether the session is currently saving */ + /** Whether the session is currently saving. */ @GuardedBy("mLock") private boolean mIsSaving; + /** + * Helper used to handle state of Save UI when it must be hiding to show a custom description + * link and later recovered. + */ + @GuardedBy("mLock") + private PendingUi mPendingSaveUi; + + /** + * When the session started (using elapsed time since boot). + */ + private final long mStartTime; + + /** + * When the UI was shown for the first time (using elapsed time since boot). + */ + @GuardedBy("mLock") + private long mUiShownTime; + + @GuardedBy("mLock") + private final LocalLog mUiLatencyHistory; /** * Receiver of assist data from the app's {@link Activity}. @@ -214,7 +241,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final int numContexts = mContexts.size(); for (int i = 0; i < numContexts; i++) { - fillContextWithAllowedValues(mContexts.get(i), flags); + fillContextWithAllowedValuesLocked(mContexts.get(i), flags); } // Dispatch a snapshot of the current contexts list since it may change @@ -232,7 +259,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState /** * Returns the ids of all entries in {@link #mViewStates} in the same order. */ - private AutofillId[] getIdsOfAllViewStates() { + private AutofillId[] getIdsOfAllViewStatesLocked() { final int numViewState = mViewStates.size(); final AutofillId[] ids = new AutofillId[numViewState]; for (int i = 0; i < numViewState; i++) { @@ -242,6 +269,43 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return ids; } + /** + * Gets the value of a field, using either the {@code viewStates} or the {@code mContexts}, or + * {@code null} when not found on either of them. + */ + @Nullable + private String getValueAsString(@NonNull AutofillId id) { + AutofillValue value = null; + synchronized (mLock) { + final ViewState state = mViewStates.get(id); + if (state == null) { + if (sDebug) Slog.d(TAG, "getValue(): no view state for " + id); + return null; + } + value = state.getCurrentValue(); + if (value == null) { + if (sDebug) Slog.d(TAG, "getValue(): no current value for " + id); + value = getValueFromContextsLocked(id); + } + } + if (value != null) { + if (value.isText()) { + return value.getTextValue().toString(); + } + if (value.isList()) { + final CharSequence[] options = getAutofillOptionsFromContextsLocked(id); + if (options != null) { + final int index = value.getListValue(); + final CharSequence option = options[index]; + return option != null ? option.toString() : null; + } else { + Slog.w(TAG, "getValueAsString(): no autofill options for id " + id); + } + } + } + return null; + } + /** * Updates values of the nodes in the context's structure so that: * - proper node is focused @@ -251,8 +315,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * @param fillContext The context to be filled * @param flags The flags that started the session */ - private void fillContextWithAllowedValues(@NonNull FillContext fillContext, int flags) { - final ViewNode[] nodes = fillContext.findViewNodesByAutofillIds(getIdsOfAllViewStates()); + private void fillContextWithAllowedValuesLocked(@NonNull FillContext fillContext, int flags) { + final ViewNode[] nodes = fillContext + .findViewNodesByAutofillIds(getIdsOfAllViewStatesLocked()); final int numViewState = mViewStates.size(); for (int i = 0; i < numViewState; i++) { @@ -291,21 +356,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Cancels the last request sent to the {@link #mRemoteFillService}. */ private void cancelCurrentRequestLocked() { - int canceledRequest = mRemoteFillService.cancelCurrentRequest(); + final int canceledRequest = mRemoteFillService.cancelCurrentRequest(); // Remove the FillContext as there will never be a response for the service if (canceledRequest != INVALID_REQUEST_ID && mContexts != null) { - int numContexts = mContexts.size(); + final int numContexts = mContexts.size(); // It is most likely the last context, hence search backwards for (int i = numContexts - 1; i >= 0; i--) { if (mContexts.get(i).getRequestId() == canceledRequest) { + if (sDebug) Slog.d(TAG, "cancelCurrentRequest(): id = " + canceledRequest); mContexts.remove(i); break; } } } - } /** @@ -349,10 +414,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState Session(@NonNull AutofillManagerServiceImpl service, @NonNull AutoFillUI ui, @NonNull Context context, @NonNull HandlerCaller handlerCaller, int userId, @NonNull Object lock, int sessionId, int uid, @NonNull IBinder activityToken, - @NonNull IBinder client, boolean hasCallback, + @NonNull IBinder client, boolean hasCallback, @NonNull LocalLog uiLatencyHistory, @NonNull ComponentName componentName, @NonNull String packageName) { id = sessionId; this.uid = uid; + mStartTime = SystemClock.elapsedRealtime(); mService = service; mLock = lock; mUi = ui; @@ -360,10 +426,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mRemoteFillService = new RemoteFillService(context, componentName, userId, this); mActivityToken = activityToken; mHasCallback = hasCallback; + mUiLatencyHistory = uiLatencyHistory; mPackageName = packageName; mClient = IAutoFillManagerClient.Stub.asInterface(client); - mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_STARTED, mPackageName); + writeLog(MetricsEvent.AUTOFILL_SESSION_STARTED); } /** @@ -408,14 +475,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } if (response == null) { - if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null"); - if ((requestFlags & FLAG_MANUAL_REQUEST) != 0) { - getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this); - } - mService.resetLastResponse(); - // Nothing to be done, but need to notify client. - notifyUnavailableToClient(); - removeSelf(); + processNullResponseLocked(requestFlags); return; } @@ -424,19 +484,16 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if ((response.getDatasets() == null || response.getDatasets().isEmpty()) && response.getAuthentication() == null) { // Response is "empty" from an UI point of view, need to notify client. - notifyUnavailableToClient(); + notifyUnavailableToClient(false); } synchronized (mLock) { processResponseLocked(response, requestFlags); } - final LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST)) + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName) .setType(MetricsEvent.TYPE_SUCCESS) - .setPackageName(mPackageName) .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, - response.getDatasets() == null ? 0 : response.getDatasets().size()) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, - servicePackageName); + response.getDatasets() == null ? 0 : response.getDatasets().size()); mMetricsLogger.write(log); } @@ -452,10 +509,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } mService.resetLastResponse(); } - LogMaker log = (new LogMaker(MetricsEvent.AUTOFILL_REQUEST)) - .setType(MetricsEvent.TYPE_FAILURE) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_FAILURE); mMetricsLogger.write(log); getUiForShowing().showError(message, this); @@ -474,11 +529,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - LogMaker log = (new LogMaker( - MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST)) - .setType(MetricsEvent.TYPE_SUCCESS) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_SUCCESS); mMetricsLogger.write(log); // Nothing left to do... @@ -498,11 +550,8 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - LogMaker log = (new LogMaker( - MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST)) - .setType(MetricsEvent.TYPE_FAILURE) - .setPackageName(mPackageName) - .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, servicePackageName); + LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_DATA_SAVE_REQUEST, servicePackageName) + .setType(MetricsEvent.TYPE_FAILURE); mMetricsLogger.write(log); getUiForShowing().showError(message, this); @@ -536,19 +585,23 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // FillServiceCallbacks @Override public void authenticate(int requestId, int datasetIndex, IntentSender intent, Bundle extras) { + if (sDebug) { + Slog.d(TAG, "authenticate(): requestId=" + requestId + "; datasetIdx=" + datasetIndex + + "; intentSender=" + intent); + } final Intent fillInIntent; synchronized (mLock) { - synchronized (mLock) { - if (mDestroyed) { - Slog.w(TAG, "Call to Session#authenticate() rejected - session: " - + id + " destroyed"); - return; - } + if (mDestroyed) { + Slog.w(TAG, "Call to Session#authenticate() rejected - session: " + + id + " destroyed"); + return; + } + fillInIntent = createAuthFillInIntentLocked(requestId, extras); + if (fillInIntent == null) { + forceRemoveSelfLocked(); + return; } - fillInIntent = createAuthFillInIntent( - getFillContextByRequestIdLocked(requestId).getStructure(), extras); } - mService.setAuthenticationSelected(id); final int authenticationId = AutofillManager.makeAuthenticationId(requestId, datasetIndex); @@ -572,7 +625,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return; } } - mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset)); + mHandlerCaller.getHandler().post(() -> autoFill(requestId, datasetIndex, dataset, true)); } // AutoFillUiCallback @@ -660,7 +713,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mHandlerCaller.getHandler().post(() -> { try { synchronized (mLock) { - mClient.startIntentSender(intentSender); + mClient.startIntentSender(intentSender, null); } } catch (RemoteException e) { Slog.e(TAG, "Error launching auth intent", e); @@ -674,7 +727,13 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + id + " destroyed"); return; } - + if (mResponses == null) { + // Typically happens when app explicitly called cancel() while the service was showing + // the auth UI. + Slog.w(TAG, "setAuthenticationResultLocked(" + authenticationId + "): no responses"); + removeSelf(); + return; + } final int requestId = AutofillManager.getRequestIdFromAuthenticationId(authenticationId); final FillResponse authenticatedResponse = mResponses.get(requestId); if (authenticatedResponse == null || data == null) { @@ -694,16 +753,25 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } final Parcelable result = data.getParcelable(AutofillManager.EXTRA_AUTHENTICATION_RESULT); + if (sDebug) Slog.d(TAG, "setAuthenticationResultLocked(): result=" + result); if (result instanceof FillResponse) { - final FillResponse response = (FillResponse) result; - mMetricsLogger.action(MetricsEvent.AUTOFILL_AUTHENTICATED, mPackageName); - replaceResponseLocked(authenticatedResponse, response); + writeLog(MetricsEvent.AUTOFILL_AUTHENTICATED); + replaceResponseLocked(authenticatedResponse, (FillResponse) result); } else if (result instanceof Dataset) { if (datasetIdx != AutofillManager.AUTHENTICATION_ID_DATASET_ID_UNDEFINED) { + writeLog(MetricsEvent.AUTOFILL_DATASET_AUTHENTICATED); final Dataset dataset = (Dataset) result; authenticatedResponse.getDatasets().set(datasetIdx, dataset); - autoFill(requestId, datasetIdx, dataset); + autoFill(requestId, datasetIdx, dataset, false); + } else { + writeLog(MetricsEvent.AUTOFILL_INVALID_DATASET_AUTHENTICATION); + } + } else { + if (result != null) { + Slog.w(TAG, "service returned invalid auth type: " + result); } + writeLog(MetricsEvent.AUTOFILL_INVALID_AUTHENTICATION); + processNullResponseLocked(0); } } @@ -716,98 +784,120 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState mHasCallback = hasIt; } - /** - * Shows the save UI, when session can be saved. - * - * @return {@code true} if session is done, or {@code false} if it's pending user action. - */ - public boolean showSaveLocked() { - if (mDestroyed) { - Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: " - + id + " destroyed"); - return false; - } + @Nullable + private FillResponse getLastResponseLocked(@Nullable String logPrefix) { if (mContexts == null) { - Slog.d(TAG, "showSaveLocked(): no contexts"); - return true; + if (sDebug && logPrefix != null) Slog.d(TAG, logPrefix + ": no contexts"); + return null; } if (mResponses == null) { // Happens when the activity / session was finished before the service replied, or // when the service cannot autofill it (and returned a null response). - if (sVerbose) { - Slog.v(TAG, "showSaveLocked(): no responses on session"); + if (sVerbose && logPrefix != null) { + Slog.v(TAG, logPrefix + ": no responses on session"); } - return true; + return null; } - final int lastResponseIdx = getLastResponseIndex(); + final int lastResponseIdx = getLastResponseIndexLocked(); if (lastResponseIdx < 0) { - Slog.w(TAG, "showSaveLocked(): did not get last response. mResponses=" + mResponses - + ", mViewStates=" + mViewStates); - return true; + if (logPrefix != null) { + Slog.w(TAG, logPrefix + ": did not get last response. mResponses=" + mResponses + + ", mViewStates=" + mViewStates); + } + return null; } final FillResponse response = mResponses.valueAt(lastResponseIdx); - final SaveInfo saveInfo = response.getSaveInfo(); - if (sVerbose) { - Slog.v(TAG, "showSaveLocked(): mResponses=" + mResponses + ", mContexts=" + mContexts + if (sVerbose && logPrefix != null) { + Slog.v(TAG, logPrefix + ": mResponses=" + mResponses + ", mContexts=" + mContexts + ", mViewStates=" + mViewStates); } + return response; + } + + @Nullable + private SaveInfo getSaveInfoLocked() { + final FillResponse response = getLastResponseLocked(null); + return response == null ? null : response.getSaveInfo(); + } + + /** + * Shows the save UI, when session can be saved. + * + * @return {@code true} if session is done, or {@code false} if it's pending user action. + */ + public boolean showSaveLocked() { + if (mDestroyed) { + Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: " + + id + " destroyed"); + return false; + } + final FillResponse response = getLastResponseLocked("showSaveLocked()"); + final SaveInfo saveInfo = response == null ? null : response.getSaveInfo(); /* * The Save dialog is only shown if all conditions below are met: * - * - saveInfo is not null - * - autofillValue of all required ids is not null + * - saveInfo is not null. + * - autofillValue of all required ids is not null. * - autofillValue of at least one id (required or optional) has changed. + * - there is no Dataset in the last FillResponse whose values of all dataset fields matches + * the current values of all fields in the screen. */ - if (saveInfo == null) { return true; } - final AutofillId[] requiredIds = saveInfo.getRequiredIds(); - if (requiredIds == null || requiredIds.length == 0) { - Slog.w(TAG, "showSaveLocked(): no required ids on saveInfo"); - return true; - } + // Cache used to make sure changed fields do not belong to a dataset. + final ArrayMap currentValues = new ArrayMap<>(); + final ArraySet allIds = new ArraySet<>(); + final AutofillId[] requiredIds = saveInfo.getRequiredIds(); boolean allRequiredAreNotEmpty = true; boolean atLeastOneChanged = false; - for (int i = 0; i < requiredIds.length; i++) { - final AutofillId id = requiredIds[i]; - final ViewState viewState = mViewStates.get(id); - if (viewState == null) { - Slog.w(TAG, "showSaveLocked(): no ViewState for required " + id); - allRequiredAreNotEmpty = false; - break; - } - - AutofillValue value = viewState.getCurrentValue(); - if (value == null || value.isEmpty()) { - final AutofillValue initialValue = getValueFromContexts(id); - if (initialValue != null) { - if (sDebug) { - Slog.d(TAG, "Value of required field " + id + " didn't change; " - + "using initial value (" + initialValue + ") instead"); - } - value = initialValue; - } else { - if (sDebug) { - Slog.d(TAG, "showSaveLocked(): empty value for required " + id ); - } + if (requiredIds != null) { + for (int i = 0; i < requiredIds.length; i++) { + final AutofillId id = requiredIds[i]; + if (id == null) { + Slog.w(TAG, "null autofill id on " + Arrays.toString(requiredIds)); + continue; + } + allIds.add(id); + final ViewState viewState = mViewStates.get(id); + if (viewState == null) { + Slog.w(TAG, "showSaveLocked(): no ViewState for required " + id); allRequiredAreNotEmpty = false; break; } - } - final AutofillValue filledValue = viewState.getAutofilledValue(); - if (!value.equals(filledValue)) { - if (sDebug) { - Slog.d(TAG, "showSaveLocked(): found a change on required " + id + ": " - + filledValue + " => " + value); + AutofillValue value = viewState.getCurrentValue(); + if (value == null || value.isEmpty()) { + final AutofillValue initialValue = getValueFromContextsLocked(id); + if (initialValue != null) { + if (sDebug) { + Slog.d(TAG, "Value of required field " + id + " didn't change; " + + "using initial value (" + initialValue + ") instead"); + } + value = initialValue; + } else { + if (sDebug) { + Slog.d(TAG, "empty value for required " + id ); + } + allRequiredAreNotEmpty = false; + break; + } + } + currentValues.put(id, value); + final AutofillValue filledValue = viewState.getAutofilledValue(); + + if (!value.equals(filledValue)) { + if (sDebug) { + Slog.d(TAG, "found a change on required " + id + ": " + filledValue + + " => " + value); + } + atLeastOneChanged = true; } - atLeastOneChanged = true; } } @@ -817,31 +907,116 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // No change on required ids yet, look for changes on optional ids. for (int i = 0; i < optionalIds.length; i++) { final AutofillId id = optionalIds[i]; + allIds.add(id); final ViewState viewState = mViewStates.get(id); if (viewState == null) { - Slog.w(TAG, "showSaveLocked(): no ViewState for optional " + id); + Slog.w(TAG, "no ViewState for optional " + id); continue; } if ((viewState.getState() & ViewState.STATE_CHANGED) != 0) { final AutofillValue currentValue = viewState.getCurrentValue(); + currentValues.put(id, currentValue); final AutofillValue filledValue = viewState.getAutofilledValue(); if (currentValue != null && !currentValue.equals(filledValue)) { if (sDebug) { - Slog.d(TAG, "finishSessionLocked(): found a change on optional " - + id + ": " + filledValue + " => " + currentValue); + Slog.d(TAG, "found a change on optional " + id + ": " + filledValue + + " => " + currentValue); } atLeastOneChanged = true; break; } + } else { + // Update current values cache based on initial value + final AutofillValue initialValue = getValueFromContextsLocked(id); + if (sDebug) { + Slog.d(TAG, "no current value for " + id + "; initial value is " + + initialValue); + } + if (initialValue != null) { + currentValues.put(id, initialValue); + } } } } if (atLeastOneChanged) { - if (sDebug) Slog.d(TAG, "at least one field changed - showing save UI"); - mService.setSaveShown(id); - getUiForShowing().showSaveUi(mService.getServiceLabel(), saveInfo, mPackageName, - this); + if (sDebug) { + Slog.d(TAG, "at least one field changed, validate fields for save UI"); + } + final ValueFinder valueFinder = (id) -> {return getValueAsString(id);}; + + final InternalValidator validator = saveInfo.getValidator(); + if (validator != null) { + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_SAVE_VALIDATION); + boolean isValid; + try { + isValid = validator.isValid(valueFinder); + log.setType(isValid + ? MetricsEvent.TYPE_SUCCESS + : MetricsEvent.TYPE_DISMISS); + } catch (Exception e) { + Slog.e(TAG, "Not showing save UI because validation failed:", e); + log.setType(MetricsEvent.TYPE_FAILURE); + mMetricsLogger.write(log); + return true; + } + + mMetricsLogger.write(log); + if (!isValid) { + Slog.i(TAG, "not showing save UI because fields failed validation"); + return true; + } + } + // Make sure the service doesn't have the fields already by checking the datasets + // content. + final List datasets = response.getDatasets(); + if (datasets != null) { + datasets_loop: for (int i = 0; i < datasets.size(); i++) { + final Dataset dataset = datasets.get(i); + final ArrayMap datasetValues = + Helper.getFields(dataset); + if (sVerbose) { + Slog.v(TAG, "Checking if saved fields match contents of dataset #" + i + + ": " + dataset + "; allIds=" + allIds); + } + for (int j = 0; j < allIds.size(); j++) { + final AutofillId id = allIds.valueAt(j); + final AutofillValue currentValue = currentValues.get(id); + if (currentValue == null) { + if (sDebug) { + Slog.d(TAG, "dataset has value for field that is null: " + id); + } + continue datasets_loop; + } + final AutofillValue datasetValue = datasetValues.get(id); + if (!currentValue.equals(datasetValue)) { + if (sDebug) Slog.d(TAG, "found a change on id " + id); + continue datasets_loop; + } + if (sVerbose) Slog.v(TAG, "no changes for id " + id); + } + if (sDebug) { + Slog.d(TAG, "ignoring Save UI because all fields match contents of " + + "dataset #" + i + ": " + dataset); + } + return true; + } + } + + if (sDebug) Slog.d(TAG, "Good news, everyone! All checks passed, show save UI!"); + mService.logSaveShown(id); + final IAutoFillManagerClient client = getClient(); + mPendingSaveUi = new PendingUi(mActivityToken, id, client); + getUiForShowing().showSaveUi(mService.getServiceLabel(), mService.getServiceIcon(), + mService.getServicePackageName(), saveInfo, valueFinder, mPackageName, this, + mPendingSaveUi); + if (client != null) { + try { + client.setSaveUiState(id, true); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to set save UI state to shown: " + e); + } + } mIsSaving = true; return false; } @@ -866,23 +1041,39 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Gets the latest non-empty value for the given id in the autofill contexts. */ @Nullable - private AutofillValue getValueFromContexts(AutofillId id) { - AutofillValue value = null; + private AutofillValue getValueFromContextsLocked(AutofillId id) { final int numContexts = mContexts.size(); - for (int i = 0; i < numContexts; i++) { + for (int i = numContexts - 1; i >= 0; i--) { final FillContext context = mContexts.get(i); final ViewNode node = context.findViewNodeByAutofillId(id); if (node != null) { - final AutofillValue candidate = node.getAutofillValue(); + final AutofillValue value = node.getAutofillValue(); if (sDebug) { - Slog.d(TAG, "getValueFromContexts(" + id + ") at " + i + ": " + candidate); + Slog.d(TAG, "getValueFromContexts(" + id + ") at " + i + ": " + value); } - if (candidate != null && !candidate.isEmpty()) { - value = candidate; + if (value != null && !value.isEmpty()) { + return value; } } } - return value; + return null; + } + + /** + * Gets the latest autofill options for the given id in the autofill contexts. + */ + @Nullable + private CharSequence[] getAutofillOptionsFromContextsLocked(AutofillId id) { + final int numContexts = mContexts.size(); + + for (int i = numContexts - 1; i >= 0; i--) { + final FillContext context = mContexts.get(i); + final ViewNode node = context.findViewNodeByAutofillId(id); + if (node != null && node.getAutofillOptions() != null) { + return node.getAutofillOptions(); + } + } + return null; } /** @@ -897,12 +1088,18 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (sVerbose) Slog.v(TAG, "callSaveLocked(): mViewStates=" + mViewStates); + if (mContexts == null) { + Slog.w(TAG, "callSaveLocked(): no contexts"); + return; + } + final int numContexts = mContexts.size(); for (int contextNum = 0; contextNum < numContexts; contextNum++) { final FillContext context = mContexts.get(contextNum); - final ViewNode[] nodes = context.findViewNodesByAutofillIds(getIdsOfAllViewStates()); + final ViewNode[] nodes = + context.findViewNodesByAutofillIds(getIdsOfAllViewStatesLocked()); if (sVerbose) Slog.v(TAG, "callSaveLocked(): updating " + context); @@ -1016,7 +1213,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - final ArrayList datasets = response.getDatasets(); + final List datasets = response.getDatasets(); if (datasets != null) { final int numDatasets = datasets.size(); @@ -1077,6 +1274,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState break; case ACTION_VALUE_CHANGED: if (value != null && !value.equals(viewState.getCurrentValue())) { + if (value.isEmpty() + && viewState.getCurrentValue() != null + && viewState.getCurrentValue().isText() + && viewState.getCurrentValue().getTextValue() != null + && getSaveInfoLocked() != null) { + final int length = viewState.getCurrentValue().getTextValue().length(); + if (sDebug) { + Slog.d(TAG, "updateLocked(" + id + "): resetting value that was " + + length + " chars long"); + } + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_VALUE_RESET) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_PREVIOUS_LENGTH, length); + mMetricsLogger.write(log); + } + // Always update the internal state. viewState.setCurrentValue(value); @@ -1105,7 +1317,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Remove the UI if the ViewState has changed. if (mCurrentViewId != viewState.id) { - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); mCurrentViewId = viewState.id; } @@ -1115,7 +1327,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState case ACTION_VIEW_EXITED: if (mCurrentViewId == viewState.id) { if (sVerbose) Slog.d(TAG, "Exiting view " + id); - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); mCurrentViewId = null; } break; @@ -1152,7 +1364,33 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState filterText = value.getTextValue().toString(); } - getUiForShowing().showFillUi(filledId, response, filterText, mPackageName, this); + getUiForShowing().showFillUi(filledId, response, filterText, + mService.getServicePackageName(), mPackageName, this); + + synchronized (mLock) { + if (mUiShownTime == 0) { + // Log first time UI is shown. + mUiShownTime = SystemClock.elapsedRealtime(); + final long duration = mUiShownTime - mStartTime; + if (sDebug) { + final StringBuilder msg = new StringBuilder("1st UI for ") + .append(mActivityToken) + .append(" shown in "); + TimeUtils.formatDuration(duration, msg); + Slog.d(TAG, msg.toString()); + } + final StringBuilder historyLog = new StringBuilder("id=").append(id) + .append(" app=").append(mActivityToken) + .append(" svc=").append(mService.getServicePackageName()) + .append(" latency="); + TimeUtils.formatDuration(duration, historyLog); + mUiLatencyHistory.log(historyLog.toString()); + + final LogMaker metricsLog = newLogMaker(MetricsEvent.AUTOFILL_UI_LATENCY) + .setCounterValue((int) duration); + mMetricsLogger.write(metricsLog); + } + } } boolean isDestroyed() { @@ -1167,11 +1405,15 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private void notifyUnavailableToClient() { + private void notifyUnavailableToClient(boolean sessionFinished) { synchronized (mLock) { - if (!mHasCallback || mCurrentViewId == null) return; + if (mCurrentViewId == null) return; try { - mClient.notifyNoFillUi(id, mCurrentViewId); + if (mHasCallback) { + mClient.notifyNoFillUi(id, mCurrentViewId, sessionFinished); + } else if (sessionFinished) { + mClient.setSessionFinished(AutofillManager.STATE_FINISHED); + } } catch (RemoteException e) { Slog.e(TAG, "Error notifying client no fill UI: id=" + mCurrentViewId, e); } @@ -1185,7 +1427,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Only track the views of the last response as only those are reported back to the // service, see #showSaveLocked - final FillResponse response = mResponses.valueAt(getLastResponseIndex()); + final FillResponse response = mResponses.valueAt(getLastResponseIndexLocked()); ArraySet trackedViews = null; boolean saveOnAllViewsInvisible = false; @@ -1212,7 +1454,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState // Must also track that are part of datasets, otherwise the FillUI won't be hidden when // they go away (if they're not savable). - final ArrayList datasets = response.getDatasets(); + final List datasets = response.getDatasets(); ArraySet fillableIds = null; if (datasets != null) { for (int i = 0; i < datasets.size(); i++) { @@ -1252,10 +1494,21 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState processResponseLocked(newResponse, 0); } + private void processNullResponseLocked(int flags) { + if (sVerbose) Slog.v(TAG, "canceling session " + id + " when server returned null"); + if ((flags & FLAG_MANUAL_REQUEST) != 0) { + getUiForShowing().showError(R.string.autofill_error_cannot_autofill, this); + } + mService.resetLastResponse(); + // Nothing to be done, but need to notify client. + notifyUnavailableToClient(true); + removeSelf(); + } + private void processResponseLocked(@NonNull FillResponse newResponse, int flags) { // Make sure we are hiding the UI which will be shown // only if handling the current response requires it. - hideAllUiIfOwnedByMe(); + mUi.hideAll(this); final int requestId = newResponse.getRequestId(); if (sVerbose) { @@ -1285,7 +1538,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * Sets the state of all views in the given response. */ private void setViewStatesLocked(FillResponse response, int state, boolean clearResponse) { - final ArrayList datasets = response.getDatasets(); + final List datasets = response.getDatasets(); if (datasets != null) { for (int i = 0; i < datasets.size(); i++) { final Dataset dataset = datasets.get(i); @@ -1308,8 +1561,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState final SaveInfo saveInfo = response.getSaveInfo(); if (saveInfo != null) { final AutofillId[] requiredIds = saveInfo.getRequiredIds(); - for (AutofillId id : requiredIds) { - createOrUpdateViewStateLocked(id, state, null); + if (requiredIds != null) { + for (AutofillId id : requiredIds) { + createOrUpdateViewStateLocked(id, state, null); + } } final AutofillId[] optionalIds = saveInfo.getOptionalIds(); if (optionalIds != null) { @@ -1364,7 +1619,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return viewState; } - void autoFill(int requestId, int datasetIndex, Dataset dataset) { + void autoFill(int requestId, int datasetIndex, Dataset dataset, boolean generateEvent) { + if (sDebug) { + Slog.d(TAG, "autoFill(): requestId=" + requestId + "; datasetIdx=" + datasetIndex + + "; dataset=" + dataset); + } synchronized (mLock) { if (mDestroyed) { Slog.w(TAG, "Call to Session#autoFill() rejected - session: " @@ -1373,21 +1632,26 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } // Autofill it directly... if (dataset.getAuthentication() == null) { - mService.setDatasetSelected(dataset.getId(), id); + if (generateEvent) { + mService.logDatasetSelected(dataset.getId(), id); + } autoFillApp(dataset); return; } // ...or handle authentication. - mService.setDatasetAuthenticationSelected(dataset.getId(), id); + mService.logDatasetAuthenticationSelected(dataset.getId(), id); setViewStatesLocked(null, dataset, ViewState.STATE_WAITING_DATASET_AUTH, false); - final Intent fillInIntent = createAuthFillInIntent( - getFillContextByRequestIdLocked(requestId).getStructure(), mClientState); - + final Intent fillInIntent = createAuthFillInIntentLocked(requestId, mClientState); + if (fillInIntent == null) { + forceRemoveSelfLocked(); + return; + } final int authenticationId = AutofillManager.makeAuthenticationId(requestId, datasetIndex); startAuthentication(authenticationId, dataset.getAuthentication(), fillInIntent); + } } @@ -1397,9 +1661,18 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private Intent createAuthFillInIntent(AssistStructure structure, Bundle extras) { + // TODO: this should never be null, but we got at least one occurrence, probably due to a race. + @Nullable + private Intent createAuthFillInIntentLocked(int requestId, Bundle extras) { final Intent fillInIntent = new Intent(); - fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, structure); + + final FillContext context = getFillContextByRequestIdLocked(requestId); + if (context == null) { + Slog.wtf(TAG, "createAuthFillInIntentLocked(): no FillContext. requestId=" + requestId + + "; mContexts= " + mContexts); + return null; + } + fillInIntent.putExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE, context.getStructure()); fillInIntent.putExtra(AutofillManager.EXTRA_CLIENT_STATE, extras); return fillInIntent; } @@ -1426,6 +1699,14 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState pw.print(prefix); pw.print("uid: "); pw.println(uid); pw.print(prefix); pw.print("mPackagename: "); pw.println(mPackageName); pw.print(prefix); pw.print("mActivityToken: "); pw.println(mActivityToken); + pw.print(prefix); pw.print("mStartTime: "); pw.println(mStartTime); + pw.print(prefix); pw.print("Time to show UI: "); + if (mUiShownTime == 0) { + pw.println("N/A"); + } else { + TimeUtils.formatDuration(mUiShownTime - mStartTime, pw); + pw.println(); + } pw.print(prefix); pw.print("mResponses: "); if (mResponses == null) { pw.println("null"); @@ -1440,6 +1721,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState pw.print(prefix); pw.print("mViewStates size: "); pw.println(mViewStates.size()); pw.print(prefix); pw.print("mDestroyed: "); pw.println(mDestroyed); pw.print(prefix); pw.print("mIsSaving: "); pw.println(mIsSaving); + pw.print(prefix); pw.print("mPendingSaveUi: "); pw.println(mPendingSaveUi); for (Map.Entry entry : mViewStates.entrySet()) { pw.print(prefix); pw.print("State for id "); pw.println(entry.getKey()); entry.getValue().dump(prefix2, pw); @@ -1501,7 +1783,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } if (!ids.isEmpty()) { if (waitingDatasetAuth) { - hideFillUiIfOwnedByMe(); + mUi.hideFillUi(this); } if (sDebug) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset); @@ -1521,38 +1803,73 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } + /** + * Cleans up this session. + * + *

        Typically called in 2 scenarios: + * + *

          + *
        • When the session naturally finishes (i.e., from {@link #removeSelfLocked()}. + *
        • When the service hosting the session is finished (for example, because the user + * disabled it). + *
        + */ RemoteFillService destroyLocked() { if (mDestroyed) { return null; } - hideAllUiIfOwnedByMe(); + mUi.destroyAll(mPendingSaveUi, this, true); mUi.clearCallback(this); mDestroyed = true; - mMetricsLogger.action(MetricsEvent.AUTOFILL_SESSION_FINISHED, mPackageName); + writeLog(MetricsEvent.AUTOFILL_SESSION_FINISHED); return mRemoteFillService; } - private void hideAllUiIfOwnedByMe() { - mUi.hideAll(this); - } - - private void hideFillUiIfOwnedByMe() { - mUi.hideFillUi(this); + /** + * Cleans up this session and remove it from the service always, even if it does have a pending + * Save UI. + */ + void forceRemoveSelfLocked() { + if (sVerbose) Slog.v(TAG, "forceRemoveSelfLocked(): " + mPendingSaveUi); + + final boolean isPendingSaveUi = isSaveUiPendingLocked(); + mPendingSaveUi = null; + removeSelfLocked(); + mUi.destroyAll(mPendingSaveUi, this, false); + if (!isPendingSaveUi) { + try { + mClient.setSessionFinished(AutofillManager.STATE_UNKNOWN); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to finish session", e); + } + } } + /** + * Thread-safe version of {@link #removeSelfLocked()}. + */ private void removeSelf() { synchronized (mLock) { removeSelfLocked(); } } + /** + * Cleans up this session and remove it from the service, but but only if it does not have a + * pending Save UI. + */ void removeSelfLocked() { - if (sVerbose) Slog.v(TAG, "removeSelfLocked()"); + if (sVerbose) Slog.v(TAG, "removeSelfLocked(): " + mPendingSaveUi); if (mDestroyed) { Slog.w(TAG, "Call to Session#removeSelfLocked() rejected - session: " + id + " destroyed"); return; } + if (isSaveUiPendingLocked()) { + Slog.i(TAG, "removeSelfLocked() ignored, waiting for pending save ui"); + return; + } + final RemoteFillService remoteFillService = destroyLocked(); mService.removeSessionLocked(id); if (remoteFillService != null) { @@ -1560,19 +1877,53 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } - private int getLastResponseIndex() { + void onPendingSaveUi(int operation, @NonNull IBinder token) { + getUiForShowing().onPendingSaveUi(operation, token); + } + + /** + * Checks whether this session is hiding the Save UI to handle a custom description link for + * a specific {@code token} created by + * {@link PendingUi#PendingUi(IBinder, int, IAutoFillManagerClient)}. + */ + boolean isSaveUiPendingForTokenLocked(@NonNull IBinder token) { + return isSaveUiPendingLocked() && token.equals(mPendingSaveUi.getToken()); + } + + /** + * Checks whether this session is hiding the Save UI to handle a custom description link. + */ + private boolean isSaveUiPendingLocked() { + return mPendingSaveUi != null && mPendingSaveUi.getState() == PendingUi.STATE_PENDING; + } + + private int getLastResponseIndexLocked() { // The response ids are monotonically increasing so // we just find the largest id which is the last. We // do not rely on the internal ordering in sparse // array to avoid - wow this stopped working!? int lastResponseIdx = -1; int lastResponseId = -1; - final int responseCount = mResponses.size(); - for (int i = 0; i < responseCount; i++) { - if (mResponses.keyAt(i) > lastResponseId) { - lastResponseIdx = i; + if (mResponses != null) { + final int responseCount = mResponses.size(); + for (int i = 0; i < responseCount; i++) { + if (mResponses.keyAt(i) > lastResponseId) { + lastResponseIdx = i; + } } } return lastResponseIdx; } + + private LogMaker newLogMaker(int category) { + return newLogMaker(category, mService.getServicePackageName()); + } + + private LogMaker newLogMaker(int category, String servicePackageName) { + return Helper.newLogMaker(category, mPackageName, servicePackageName); + } + + private void writeLog(int category) { + mMetricsLogger.write(newLogMaker(category)); + } } diff --git a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java index 4f90019d32b612ed24d386aa36e9c77159f3ea1b..36b95fc02ed8354c0fd278944769f11c1752e653 100644 --- a/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java +++ b/services/autofill/java/com/android/server/autofill/ui/AutoFillUI.java @@ -22,12 +22,16 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.content.IntentSender; +import android.graphics.drawable.Drawable; import android.metrics.LogMaker; import android.os.Bundle; import android.os.Handler; +import android.os.IBinder; +import android.os.RemoteException; import android.service.autofill.Dataset; import android.service.autofill.FillResponse; import android.service.autofill.SaveInfo; +import android.service.autofill.ValueFinder; import android.text.TextUtils; import android.util.Slog; import android.view.autofill.AutofillId; @@ -36,8 +40,9 @@ import android.view.autofill.IAutofillWindowPresenter; import android.widget.Toast; import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.nano.MetricsProto; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.UiThread; +import com.android.server.autofill.Helper; import java.io.PrintWriter; @@ -142,7 +147,6 @@ public final class AutoFillUI { if (callback != mCallback) { return; } - hideSaveUiUiThread(callback); if (mFillUi != null) { mFillUi.setFilterText(filterText); } @@ -155,20 +159,22 @@ public final class AutoFillUI { * @param focusedId the currently focused field * @param response the current fill response * @param filterText text of the view to be filled + * @param servicePackageName package name of the autofill service filling the activity * @param packageName package name of the activity that is filled * @param callback Identifier for the caller */ public void showFillUi(@NonNull AutofillId focusedId, @NonNull FillResponse response, - @Nullable String filterText, @NonNull String packageName, - @NonNull AutoFillUiCallback callback) { + @Nullable String filterText, @Nullable String servicePackageName, + @NonNull String packageName, @NonNull AutoFillUiCallback callback) { if (sDebug) { - Slog.d(TAG, "showFillUi(): id=" + focusedId + ", filter=" + filterText); + final int size = filterText == null ? 0 : filterText.length(); + Slog.d(TAG, "showFillUi(): id=" + focusedId + ", filter=" + size + " chars"); } - final LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_FILL_UI)) - .setPackageName(packageName) - .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN, + final LogMaker log = + Helper.newLogMaker(MetricsEvent.AUTOFILL_FILL_UI, packageName, servicePackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_FILTERTEXT_LEN, filterText == null ? 0 : filterText.length()) - .addTaggedData(MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_DATASETS, response.getDatasets() == null ? 0 : response.getDatasets().size()); mHandler.post(() -> { @@ -180,7 +186,7 @@ public final class AutoFillUI { filterText, mOverlayControl, new FillUi.Callback() { @Override public void onResponsePicked(FillResponse response) { - log.setType(MetricsProto.MetricsEvent.TYPE_DETAIL); + log.setType(MetricsEvent.TYPE_DETAIL); hideFillUiUiThread(callback); if (mCallback != null) { mCallback.authenticate(response.getRequestId(), @@ -191,7 +197,7 @@ public final class AutoFillUI { @Override public void onDatasetPicked(Dataset dataset) { - log.setType(MetricsProto.MetricsEvent.TYPE_ACTION); + log.setType(MetricsEvent.TYPE_ACTION); hideFillUiUiThread(callback); if (mCallback != null) { final int datasetIndex = response.getDatasets().indexOf(dataset); @@ -201,14 +207,14 @@ public final class AutoFillUI { @Override public void onCanceled() { - log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS); + log.setType(MetricsEvent.TYPE_DISMISS); hideFillUiUiThread(callback); } @Override public void onDestroy() { - if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) { - log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE); + if (log.getType() == MetricsEvent.TYPE_UNKNOWN) { + log.setType(MetricsEvent.TYPE_CLOSE); } mMetricsLogger.write(log); } @@ -241,37 +247,41 @@ public final class AutoFillUI { /** * Shows the UI asking the user to save for autofill. */ - public void showSaveUi(@NonNull CharSequence providerLabel, @NonNull SaveInfo info, - @NonNull String packageName, @NonNull AutoFillUiCallback callback) { + public void showSaveUi(@NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon, + @Nullable String servicePackageName, @NonNull SaveInfo info, + @NonNull ValueFinder valueFinder, @NonNull String packageName, + @NonNull AutoFillUiCallback callback, @NonNull PendingUi pendingSaveUi) { if (sVerbose) Slog.v(TAG, "showSaveUi() for " + packageName + ": " + info); int numIds = 0; numIds += info.getRequiredIds() == null ? 0 : info.getRequiredIds().length; numIds += info.getOptionalIds() == null ? 0 : info.getOptionalIds().length; - LogMaker log = (new LogMaker(MetricsProto.MetricsEvent.AUTOFILL_SAVE_UI)) - .setPackageName(packageName).addTaggedData( - MetricsProto.MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds); + final LogMaker log = + Helper.newLogMaker(MetricsEvent.AUTOFILL_SAVE_UI, packageName, servicePackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_NUM_IDS, numIds); mHandler.post(() -> { if (callback != mCallback) { return; } hideAllUiThread(callback); - mSaveUi = new SaveUi(mContext, providerLabel, info, - mOverlayControl, new SaveUi.OnSaveListener() { + mSaveUi = new SaveUi(mContext, pendingSaveUi, serviceLabel, serviceIcon, + servicePackageName, packageName, info, valueFinder, mOverlayControl, + new SaveUi.OnSaveListener() { @Override public void onSave() { - log.setType(MetricsProto.MetricsEvent.TYPE_ACTION); - hideSaveUiUiThread(callback); + log.setType(MetricsEvent.TYPE_ACTION); + hideSaveUiUiThread(mCallback); if (mCallback != null) { mCallback.save(); } + destroySaveUiUiThread(pendingSaveUi, true); } @Override public void onCancel(IntentSender listener) { - log.setType(MetricsProto.MetricsEvent.TYPE_DISMISS); - hideSaveUiUiThread(callback); + log.setType(MetricsEvent.TYPE_DISMISS); + hideSaveUiUiThread(mCallback); if (listener != null) { try { listener.sendIntent(mContext, 0, null, null, null); @@ -283,12 +293,13 @@ public final class AutoFillUI { if (mCallback != null) { mCallback.cancelSave(); } + destroySaveUiUiThread(pendingSaveUi, true); } @Override public void onDestroy() { - if (log.getType() == MetricsProto.MetricsEvent.TYPE_UNKNOWN) { - log.setType(MetricsProto.MetricsEvent.TYPE_CLOSE); + if (log.getType() == MetricsEvent.TYPE_UNKNOWN) { + log.setType(MetricsEvent.TYPE_CLOSE); if (mCallback != null) { mCallback.cancelSave(); @@ -300,6 +311,19 @@ public final class AutoFillUI { }); } + /** + * Executes an operation in the pending save UI, if any. + */ + public void onPendingSaveUi(int operation, @NonNull IBinder token) { + mHandler.post(() -> { + if (mSaveUi != null) { + mSaveUi.onPendingUi(operation, token); + } else { + Slog.w(TAG, "onPendingSaveUi(" + operation + "): no save ui"); + } + }); + } + /** * Hides all UI affordances. */ @@ -307,6 +331,14 @@ public final class AutoFillUI { mHandler.post(() -> hideAllUiThread(callback)); } + /** + * Destroy all UI affordances. + */ + public void destroyAll(@Nullable PendingUi pendingSaveUi, + @Nullable AutoFillUiCallback callback, boolean notifyClient) { + mHandler.post(() -> destroyAllUiThread(pendingSaveUi, callback, notifyClient)); + } + public void dump(PrintWriter pw) { pw.println("Autofill UI"); final String prefix = " "; @@ -334,20 +366,58 @@ public final class AutoFillUI { } @android.annotation.UiThread - private void hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) { + @Nullable + private PendingUi hideSaveUiUiThread(@Nullable AutoFillUiCallback callback) { if (sVerbose) { Slog.v(TAG, "hideSaveUiUiThread(): mSaveUi=" + mSaveUi + ", callback=" + callback + ", mCallback=" + mCallback); } if (mSaveUi != null && (callback == null || callback == mCallback)) { - mSaveUi.destroy(); - mSaveUi = null; + return mSaveUi.hide(); } + return null; + } + + @android.annotation.UiThread + private void destroySaveUiUiThread(@Nullable PendingUi pendingSaveUi, boolean notifyClient) { + if (mSaveUi == null) { + // Calling destroySaveUiUiThread() twice is normal - it usually happens when the + // first call is made after the SaveUI is hidden and the second when the session is + // finished. + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): already destroyed"); + return; + } + + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): " + pendingSaveUi); + mSaveUi.destroy(); + mSaveUi = null; + if (pendingSaveUi != null && notifyClient) { + try { + if (sDebug) Slog.d(TAG, "destroySaveUiUiThread(): notifying client"); + pendingSaveUi.client.setSaveUiState(pendingSaveUi.id, false); + } catch (RemoteException e) { + Slog.e(TAG, "Error notifying client to set save UI state to hidden: " + e); + } + } + } + + @android.annotation.UiThread + private void destroyAllUiThread(@Nullable PendingUi pendingSaveUi, + @Nullable AutoFillUiCallback callback, boolean notifyClient) { + hideFillUiUiThread(callback); + destroySaveUiUiThread(pendingSaveUi, notifyClient); } @android.annotation.UiThread private void hideAllUiThread(@Nullable AutoFillUiCallback callback) { hideFillUiUiThread(callback); - hideSaveUiUiThread(callback); + final PendingUi pendingSaveUi = hideSaveUiUiThread(callback); + if (pendingSaveUi != null && pendingSaveUi.getState() == PendingUi.STATE_FINISHED) { + if (sDebug) { + Slog.d(TAG, "hideAllUiThread(): " + + "destroying Save UI because pending restoration is finished"); + } + destroySaveUiUiThread(pendingSaveUi, true); + } } } diff --git a/services/autofill/java/com/android/server/autofill/ui/CustomScrollView.java b/services/autofill/java/com/android/server/autofill/ui/CustomScrollView.java new file mode 100644 index 0000000000000000000000000000000000000000..e68263a514157d5ced780c91ac925b7e6aabf996 --- /dev/null +++ b/services/autofill/java/com/android/server/autofill/ui/CustomScrollView.java @@ -0,0 +1,91 @@ +/* + * 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.autofill.ui; + +import static com.android.server.autofill.Helper.sDebug; + +import android.content.Context; +import android.graphics.Point; +import android.util.AttributeSet; +import android.util.Slog; +import android.util.TypedValue; +import android.view.View; +import android.widget.ScrollView; + +import com.android.internal.R; + +/** + * Custom scroll view that stretches to a maximum height. + */ +public class CustomScrollView extends ScrollView { + + private static final String TAG = "CustomScrollView"; + + private int mWidth = -1; + private int mHeight = -1; + + public CustomScrollView(Context context) { + super(context); + } + + public CustomScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + if (getChildCount() == 0) { + // Should not happen + Slog.e(TAG, "no children"); + return; + } + + calculateDimensions(); + setMeasuredDimension(mWidth, mHeight); + } + + private void calculateDimensions() { + if (mWidth != -1) return; + + final TypedValue typedValue = new TypedValue(); + final Point point = new Point(); + final Context context = getContext(); + context.getDisplay().getSize(point); + context.getTheme().resolveAttribute(R.attr.autofillSaveCustomSubtitleMaxHeight, + typedValue, true); + final View child = getChildAt(0); + final int childHeight = child.getMeasuredHeight(); + final int maxHeight = (int) typedValue.getFraction(point.y, point.y); + + mWidth = point.x; + mHeight = Math.min(childHeight, maxHeight); + if (sDebug) { + Slog.d(TAG, "calculateDimensions(): maxHeight=" + maxHeight + + ", childHeight=" + childHeight + ", w=" + mWidth + ", h=" + mHeight); + } + } +} 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 51a239f62be5893defb2fd0be7b35c4ca59fd3fa..371e74d6f04ee6a50d4c2d87e7b82049046aff82 100644 --- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java @@ -204,7 +204,10 @@ final class FillUi { return; } if (count <= 0) { - if (sDebug) Slog.d(TAG, "No dataset matches filter: " + mFilterText); + if (sDebug) { + final int size = mFilterText == null ? 0 : mFilterText.length(); + Slog.d(TAG, "No dataset matches filter with " + size + " chars"); + } mCallback.requestHideFillUi(); } else { if (updateContentSize()) { @@ -226,6 +229,13 @@ final class FillUi { public void setFilterText(@Nullable String filterText) { throwIfDestroyed(); if (mAdapter == null) { + // ViewState doesn't not support filtering - typically when it's for an authenticated + // FillResponse. + if (TextUtils.isEmpty(filterText)) { + mCallback.requestShowFillUi(mContentWidth, mContentHeight, mWindowPresenter); + } else { + mCallback.requestHideFillUi(); + } return; } @@ -507,8 +517,9 @@ final class FillUi { final ViewItem item = mAllItems.get(i); final String value = item.getValue(); // No value, i.e. null, matches any filter - if (value == null - || value.toLowerCase().startsWith(constraintLowerCase)) { + if ((value == null && item.mDataset.getAuthentication() == null) + || (value != null + && value.toLowerCase().startsWith(constraintLowerCase))) { filteredItems.add(item); } } @@ -522,9 +533,11 @@ final class FillUi { final boolean resultCountChanged; final int oldItemCount = mFilteredItems.size(); mFilteredItems.clear(); - @SuppressWarnings("unchecked") - final List items = (List) results.values; - mFilteredItems.addAll(items); + if (results.count > 0) { + @SuppressWarnings("unchecked") + final List items = (List) results.values; + mFilteredItems.addAll(items); + } resultCountChanged = (oldItemCount != mFilteredItems.size()); if (resultCountChanged) { announceSearchResultIfNeeded(); diff --git a/services/autofill/java/com/android/server/autofill/ui/OverlayControl.java b/services/autofill/java/com/android/server/autofill/ui/OverlayControl.java index fe0611eef0a2cd3916a3be53e18a4e75d6bdfe5c..49f4b538448e67148cafcec6cf209d5328923fae 100644 --- a/services/autofill/java/com/android/server/autofill/ui/OverlayControl.java +++ b/services/autofill/java/com/android/server/autofill/ui/OverlayControl.java @@ -21,6 +21,7 @@ import android.app.AppOpsManager; import android.content.Context; import android.os.Binder; import android.os.IBinder; +import android.os.UserHandle; /** * This class controls showing/hiding overlays. We don't @@ -47,10 +48,10 @@ class OverlayControl { private void setOverlayAllowed(boolean allowed) { if (mAppOpsManager != null) { - mAppOpsManager.setUserRestriction( - AppOpsManager.OP_SYSTEM_ALERT_WINDOW, !allowed, mToken); - mAppOpsManager.setUserRestriction( - AppOpsManager.OP_TOAST_WINDOW, !allowed, mToken); + mAppOpsManager.setUserRestrictionForUser(AppOpsManager.OP_SYSTEM_ALERT_WINDOW, !allowed, + mToken, null, UserHandle.USER_ALL); + mAppOpsManager.setUserRestrictionForUser(AppOpsManager.OP_TOAST_WINDOW, !allowed, + mToken, null, UserHandle.USER_ALL); } } } diff --git a/services/autofill/java/com/android/server/autofill/ui/PendingUi.java b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java new file mode 100644 index 0000000000000000000000000000000000000000..0851d3bf12de2e12d13fcf71dc369daafa38000a --- /dev/null +++ b/services/autofill/java/com/android/server/autofill/ui/PendingUi.java @@ -0,0 +1,87 @@ +/* + * 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.autofill.ui; + +import android.annotation.NonNull; +import android.os.IBinder; +import android.util.DebugUtils; +import android.view.autofill.IAutoFillManagerClient; + +/** + * Helper class used to handle a pending Autofill affordance such as the Save UI. + * + *

        This class is not thread safe. + */ +// NOTE: this class could be an interface implemented by Session, but that would make it harder +// to move the Autofill UI logic to a different process. +public final class PendingUi { + + public static final int STATE_CREATED = 1; + public static final int STATE_PENDING = 2; + public static final int STATE_FINISHED = 4; + + private final IBinder mToken; + private int mState; + public final int id; + public final IAutoFillManagerClient client; + + /** + * Default constructor. + * + * @param token token used to identify this pending UI. + */ + public PendingUi(@NonNull IBinder token, int id, @NonNull IAutoFillManagerClient client) { + mToken = token; + mState = STATE_CREATED; + this.id = id; + this.client = client; + } + + /** + * Gets the token used to identify this pending UI. + */ + @NonNull + public IBinder getToken() { + return mToken; + } + + /** + * Sets the current lifecycle state. + */ + public void setState(int state) { + mState = state; + } + + /** + * Gets the current lifecycle state. + */ + public int getState() { + return mState; + } + + /** + * Determines whether the given token matches the token used to identify this pending UI. + */ + public boolean matches(IBinder token) { + return mToken.equals(token); + } + + @Override + public String toString() { + return "PendingUi: [token=" + mToken + ", id=" + id + ", state=" + + DebugUtils.flagsToString(PendingUi.class, "STATE_", mState) + "]"; + } +} 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 c9e2a928dee0cb686da22434c824cd742b47fbff..d48f23caedaaf561051788da905c0811530fb9f8 100644 --- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java +++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java @@ -20,22 +20,40 @@ import static com.android.server.autofill.Helper.sDebug; import static com.android.server.autofill.Helper.sVerbose; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.Dialog; +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.content.IntentSender; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.metrics.LogMaker; import android.os.Handler; +import android.os.IBinder; +import android.os.RemoteException; +import android.service.autofill.CustomDescription; import android.service.autofill.SaveInfo; +import android.service.autofill.ValueFinder; import android.text.Html; import android.util.ArraySet; import android.util.Slog; import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; +import android.view.autofill.AutofillManager; +import android.widget.ImageView; +import android.widget.RemoteViews; +import android.widget.ScrollView; import android.widget.TextView; -import android.view.LayoutInflater; -import android.view.View; import com.android.internal.R; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.server.UiThread; import java.io.PrintWriter; @@ -94,6 +112,7 @@ final class SaveUi { } private final Handler mHandler = UiThread.getHandler(); + private final MetricsLogger mMetricsLogger = new MetricsLogger(); private final @NonNull Dialog mDialog; @@ -103,18 +122,27 @@ final class SaveUi { private final CharSequence mTitle; private final CharSequence mSubTitle; + private final PendingUi mPendingUi; + private final String mServicePackageName; + private final String mPackageName; private boolean mDestroyed; - SaveUi(@NonNull Context context, @NonNull CharSequence providerLabel, @NonNull SaveInfo info, + SaveUi(@NonNull Context context, @NonNull PendingUi pendingUi, + @NonNull CharSequence serviceLabel, @NonNull Drawable serviceIcon, + @Nullable String servicePackageName, @NonNull String packageName, + @NonNull SaveInfo info, @NonNull ValueFinder valueFinder, @NonNull OverlayControl overlayControl, @NonNull OnSaveListener listener) { + mPendingUi= pendingUi; mListener = new OneTimeListener(listener); mOverlayControl = overlayControl; + mServicePackageName = servicePackageName; + mPackageName = packageName; final LayoutInflater inflater = LayoutInflater.from(context); final View view = inflater.inflate(R.layout.autofill_save, null); - final TextView titleView = (TextView) view.findViewById(R.id.autofill_save_title); + final TextView titleView = view.findViewById(R.id.autofill_save_title); final ArraySet types = new ArraySet<>(3); final int type = info.getType(); @@ -138,32 +166,95 @@ final class SaveUi { switch (types.size()) { case 1: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_type, - types.valueAt(0), providerLabel), 0); + types.valueAt(0), serviceLabel), 0); break; case 2: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_2types, - types.valueAt(0), types.valueAt(1), providerLabel), 0); + types.valueAt(0), types.valueAt(1), serviceLabel), 0); break; case 3: mTitle = Html.fromHtml(context.getString(R.string.autofill_save_title_with_3types, - types.valueAt(0), types.valueAt(1), types.valueAt(2), providerLabel), 0); + types.valueAt(0), types.valueAt(1), types.valueAt(2), serviceLabel), 0); break; default: // Use generic if more than 3 or invalid type (size 0). mTitle = Html.fromHtml( - context.getString(R.string.autofill_save_title, providerLabel), 0); + context.getString(R.string.autofill_save_title, serviceLabel), 0); } - titleView.setText(mTitle); - mSubTitle = info.getDescription(); - if (mSubTitle != null) { - final TextView subTitleView = (TextView) view.findViewById(R.id.autofill_save_subtitle); - subTitleView.setText(mSubTitle); - subTitleView.setVisibility(View.VISIBLE); - } - if (sDebug) { - Slog.d(TAG, "on constructor: title=" + mTitle + ", subTitle=" + mSubTitle); + setServiceIcon(context, view, serviceIcon); + + ScrollView subtitleContainer = null; + final CustomDescription customDescription = info.getCustomDescription(); + if (customDescription != null) { + writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_DESCRIPTION, type); + + mSubTitle = null; + if (sDebug) Slog.d(TAG, "Using custom description"); + + final RemoteViews presentation = customDescription.getPresentation(valueFinder); + if (presentation != null) { + final RemoteViews.OnClickHandler handler = new RemoteViews.OnClickHandler() { + @Override + public boolean onClickHandler(View view, PendingIntent pendingIntent, + Intent intent) { + final LogMaker log = + newLogMaker(MetricsEvent.AUTOFILL_SAVE_LINK_TAPPED, type); + // We need to hide the Save UI before launching the pending intent, and + // restore back it once the activity is finished, and that's achieved by + // adding a custom extra in the activity intent. + final boolean isValid = isValidLink(pendingIntent, intent); + if (!isValid) { + log.setType(MetricsEvent.TYPE_UNKNOWN); + mMetricsLogger.write(log); + return false; + } + if (sVerbose) Slog.v(TAG, "Intercepting custom description intent"); + final IBinder token = mPendingUi.getToken(); + intent.putExtra(AutofillManager.EXTRA_RESTORE_SESSION_TOKEN, token); + try { + pendingUi.client.startIntentSender(pendingIntent.getIntentSender(), + intent); + mPendingUi.setState(PendingUi.STATE_PENDING); + if (sDebug) Slog.d(TAG, "hiding UI until restored with token " + token); + hide(); + log.setType(MetricsEvent.TYPE_OPEN); + mMetricsLogger.write(log); + return true; + } catch (RemoteException e) { + Slog.w(TAG, "error triggering pending intent: " + intent); + log.setType(MetricsEvent.TYPE_FAILURE); + mMetricsLogger.write(log); + return false; + } + } + }; + + try { + final View customSubtitleView = presentation.apply(context, null, handler); + subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle); + subtitleContainer.addView(customSubtitleView); + subtitleContainer.setVisibility(View.VISIBLE); + } catch (Exception e) { + Slog.e(TAG, "Could not inflate custom description. ", e); + } + } else { + Slog.w(TAG, "could not create remote presentation for custom title"); + } + } else { + mSubTitle = info.getDescription(); + if (mSubTitle != null) { + writeLog(MetricsEvent.AUTOFILL_SAVE_CUSTOM_SUBTITLE, type); + subtitleContainer = view.findViewById(R.id.autofill_save_custom_subtitle); + final TextView subtitleView = new TextView(context); + subtitleView.setText(mSubTitle); + subtitleContainer.addView(subtitleView, + new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT)); + subtitleContainer.setVisibility(View.VISIBLE); + } + if (sDebug) Slog.d(TAG, "on constructor: title=" + mTitle + ", subTitle=" + mSubTitle); } final TextView noButton = view.findViewById(R.id.autofill_save_no); @@ -172,19 +263,18 @@ final class SaveUi { } else { noButton.setText(R.string.autofill_save_no); } - View.OnClickListener cancelListener = - (v) -> mListener.onCancel(info.getNegativeActionListener()); - noButton.setOnClickListener(cancelListener); + noButton.setOnClickListener((v) -> mListener.onCancel(info.getNegativeActionListener())); final View yesButton = view.findViewById(R.id.autofill_save_yes); yesButton.setOnClickListener((v) -> mListener.onSave()); - final View closeButton = view.findViewById(R.id.autofill_save_close); - closeButton.setOnClickListener(cancelListener); - mDialog = new Dialog(context, R.style.Theme_DeviceDefault_Light_Panel); mDialog.setContentView(view); + // Dialog can be dismissed when touched outside, but the negative listener should not be + // notified (hence the null argument). + mDialog.setOnDismissListener((d) -> mListener.onCancel(null)); + final Window window = mDialog.getWindow(); window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); window.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE @@ -198,10 +288,116 @@ final class SaveUi { final WindowManager.LayoutParams params = window.getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.accessibilityTitle = context.getString(R.string.autofill_save_accessibility_title); + params.windowAnimations = R.style.AutofillSaveAnimation; + show(); + } + + private void setServiceIcon(Context context, View view, Drawable serviceIcon) { + final ImageView iconView = view.findViewById(R.id.autofill_save_icon); + final Resources res = context.getResources(); + + final int maxWidth = res.getDimensionPixelSize(R.dimen.autofill_save_icon_max_size); + final int maxHeight = maxWidth; + final int actualWidth = serviceIcon.getMinimumWidth(); + final int actualHeight = serviceIcon.getMinimumHeight(); + + if (actualWidth <= maxWidth && actualHeight <= maxHeight) { + if (sDebug) { + Slog.d(TAG, "Adding service icon " + + "(" + actualWidth + "x" + actualHeight + ") as it's less than maximum " + + "(" + maxWidth + "x" + maxHeight + ")."); + } + iconView.setImageDrawable(serviceIcon); + } else { + Slog.w(TAG, "Not adding service icon of size " + + "(" + actualWidth + "x" + actualHeight + ") because maximum is " + + "(" + maxWidth + "x" + maxHeight + ")."); + ((ViewGroup)iconView.getParent()).removeView(iconView); + } + } + + private static boolean isValidLink(PendingIntent pendingIntent, Intent intent) { + if (pendingIntent == null) { + Slog.w(TAG, "isValidLink(): custom description without pending intent"); + return false; + } + if (!pendingIntent.isActivity()) { + Slog.w(TAG, "isValidLink(): pending intent not for activity"); + return false; + } + if (intent == null) { + Slog.w(TAG, "isValidLink(): no intent"); + return false; + } + return true; + } + + private LogMaker newLogMaker(int category, int saveType) { + return newLogMaker(category) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SAVE_TYPE, saveType); + } + + private LogMaker newLogMaker(int category) { + return new LogMaker(category) + .setPackageName(mPackageName) + .addTaggedData(MetricsEvent.FIELD_AUTOFILL_SERVICE, mServicePackageName); + } + + private void writeLog(int category, int saveType) { + mMetricsLogger.write(newLogMaker(category, saveType)); + } + + /** + * Update the pending UI, if any. + * + * @param operation how to update it. + * @param token token associated with the pending UI - if it doesn't match the pending token, + * the operation will be ignored. + */ + void onPendingUi(int operation, @NonNull IBinder token) { + if (!mPendingUi.matches(token)) { + Slog.w(TAG, "restore(" + operation + "): got token " + token + " instead of " + + mPendingUi.getToken()); + return; + } + final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_PENDING_SAVE_UI_OPERATION); + try { + switch (operation) { + case AutofillManager.PENDING_UI_OPERATION_RESTORE: + if (sDebug) Slog.d(TAG, "Restoring save dialog for " + token); + log.setType(MetricsEvent.TYPE_OPEN); + show(); + break; + case AutofillManager.PENDING_UI_OPERATION_CANCEL: + log.setType(MetricsEvent.TYPE_DISMISS); + if (sDebug) Slog.d(TAG, "Cancelling pending save dialog for " + token); + hide(); + break; + default: + log.setType(MetricsEvent.TYPE_FAILURE); + Slog.w(TAG, "restore(): invalid operation " + operation); + } + } finally { + mMetricsLogger.write(log); + } + mPendingUi.setState(PendingUi.STATE_FINISHED); + } + + private void show() { Slog.i(TAG, "Showing save dialog: " + mTitle); mDialog.show(); mOverlayControl.hideOverlays(); + } + + PendingUi hide() { + if (sVerbose) Slog.v(TAG, "Hiding save dialog."); + try { + mDialog.hide(); + } finally { + mOverlayControl.showOverlays(); + } + return mPendingUi; } void destroy() { @@ -210,7 +406,6 @@ final class SaveUi { throwIfDestroyed(); mListener.onDestroy(); mHandler.removeCallbacksAndMessages(mListener); - if (sVerbose) Slog.v(TAG, "destroy(): dismissing dialog"); mDialog.dismiss(); mDestroyed = true; } finally { @@ -232,6 +427,9 @@ final class SaveUi { void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("title: "); pw.println(mTitle); pw.print(prefix); pw.print("subtitle: "); pw.println(mSubTitle); + pw.print(prefix); pw.print("pendingUi: "); pw.println(mPendingUi); + pw.print(prefix); pw.print("service: "); pw.println(mServicePackageName); + pw.print(prefix); pw.print("app: "); pw.println(mPackageName); final View view = mDialog.getWindow().getDecorView(); final int[] loc = view.getLocationOnScreen(); diff --git a/services/backup/java/com/android/server/backup/BackupManagerService.java b/services/backup/java/com/android/server/backup/BackupManagerService.java index 1bb147c78f3bd25d1294c9017773b016e55d4931..0dd518141cf6377756ac196433d3eedf8c379198 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerService.java +++ b/services/backup/java/com/android/server/backup/BackupManagerService.java @@ -98,6 +98,7 @@ import android.os.RemoteException; import android.os.SELinux; import android.os.ServiceManager; import android.os.SystemClock; +import android.os.Trace; import android.os.UserHandle; import android.os.WorkSource; import android.os.storage.IStorageManager; @@ -106,6 +107,7 @@ import android.provider.Settings; import android.system.ErrnoException; import android.system.Os; import android.text.TextUtils; +import android.util.ArraySet; import android.util.AtomicFile; import android.util.EventLog; import android.util.Log; @@ -117,6 +119,7 @@ import android.util.StringBuilderPrinter; import com.android.internal.annotations.GuardedBy; import com.android.internal.backup.IBackupTransport; import com.android.internal.backup.IObbBackupService; +import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.server.AppWidgetBackupBridge; import com.android.server.EventLogTags; @@ -259,7 +262,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { private static final int MSG_RUN_ADB_BACKUP = 2; private static final int MSG_RUN_RESTORE = 3; private static final int MSG_RUN_CLEAR = 4; - private static final int MSG_RUN_INITIALIZE = 5; private static final int MSG_RUN_GET_RESTORE_SETS = 6; private static final int MSG_RESTORE_SESSION_TIMEOUT = 8; private static final int MSG_FULL_CONFIRMATION_TIMEOUT = 9; @@ -397,9 +399,12 @@ public class BackupManagerService implements BackupManagerServiceInterface { @Override public void onUnlockUser(int userId) { if (userId == UserHandle.USER_SYSTEM) { + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup init"); sInstance.initialize(userId); + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); // Migrate legacy setting + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup migrate"); if (!backupSettingMigrated(userId)) { if (DEBUG) { Slog.i(TAG, "Backup enable apparently not migrated"); @@ -420,12 +425,15 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); + Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "backup enable"); try { sInstance.setBackupEnabled(readBackupEnableState(userId)); } catch (RemoteException e) { // can't happen; it's a local object } + Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } } } @@ -734,7 +742,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { // Persistently track the need to do a full init static final String INIT_SENTINEL_FILE_NAME = "_need_init_"; - HashSet mPendingInits = new HashSet(); // transport names + ArraySet mPendingInits = new ArraySet(); // transport names // Round-robin queue for scheduling full backup passes static final int SCHEDULE_FILE_VERSION = 1; // current version of the schedule file @@ -1045,20 +1053,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { break; } - case MSG_RUN_INITIALIZE: - { - HashSet queue; - - // Snapshot the pending-init queue and work on that - synchronized (mQueueLock) { - queue = new HashSet(mPendingInits); - mPendingInits.clear(); - } - - (new PerformInitializeTask(queue)).run(); - break; - } - case MSG_RETRY_INIT: { synchronized (mQueueLock) { @@ -1321,8 +1315,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { mRunBackupIntent = PendingIntent.getBroadcast(context, MSG_RUN_BACKUP, backupIntent, 0); Intent initIntent = new Intent(RUN_INITIALIZE_ACTION); - backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); - mRunInitIntent = PendingIntent.getBroadcast(context, MSG_RUN_INITIALIZE, initIntent, 0); + initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0); // Set up the backup-request journaling mJournalDir = new File(mBaseStateDir, "pending"); @@ -1409,15 +1403,15 @@ public class BackupManagerService implements BackupManagerServiceInterface { private class RunInitializeReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (RUN_INITIALIZE_ACTION.equals(intent.getAction())) { + // Snapshot the pending-init queue and work on that synchronized (mQueueLock) { - if (DEBUG) Slog.v(TAG, "Running a device init"); + String[] queue = mPendingInits.toArray(new String[mPendingInits.size()]); + mPendingInits.clear(); // Acquire the wakelock and pass it to the init thread. it will // be released once init concludes. mWakelock.acquire(); - - Message msg = mBackupHandler.obtainMessage(MSG_RUN_INITIALIZE); - mBackupHandler.sendMessage(msg); + mBackupHandler.post(new PerformInitializeTask(queue, null)); } } } @@ -1455,52 +1449,23 @@ public class BackupManagerService implements BackupManagerServiceInterface { // rebooted in the middle of an operation that was removing something from // this log, we sanity-check its contents here and reconstruct it. mEverStored = new File(mBaseStateDir, "processed"); - File tempProcessedFile = new File(mBaseStateDir, "processed.new"); - - // If we were in the middle of removing something from the ever-backed-up - // file, there might be a transient "processed.new" file still present. - // Ignore it -- we'll validate "processed" against the current package set. - if (tempProcessedFile.exists()) { - tempProcessedFile.delete(); - } // If there are previous contents, parse them out then start a new // file to continue the recordkeeping. if (mEverStored.exists()) { - DataOutputStream temp = null; - DataInputStream in = null; - - try { - temp = new DataOutputStream(new BufferedOutputStream(new FileOutputStream( - tempProcessedFile))); - in = new DataInputStream(new BufferedInputStream(new FileInputStream(mEverStored))); + try (DataInputStream in = new DataInputStream( + new BufferedInputStream(new FileInputStream(mEverStored)))) { // Loop until we hit EOF while (true) { String pkg = in.readUTF(); - try { - // is this package still present? - mPackageManager.getPackageInfo(pkg, 0); - // if we get here then yes it is; remember it - mEverStoredApps.add(pkg); - temp.writeUTF(pkg); - if (MORE_DEBUG) Slog.v(TAG, " + " + pkg); - } catch (NameNotFoundException e) { - // nope, this package was uninstalled; don't include it - if (MORE_DEBUG) Slog.v(TAG, " - " + pkg); - } + mEverStoredApps.add(pkg); + if (MORE_DEBUG) Slog.v(TAG, " + " + pkg); } } catch (EOFException e) { - // Once we've rewritten the backup history log, atomically replace the - // old one with the new one then reopen the file for continuing use. - if (!tempProcessedFile.renameTo(mEverStored)) { - Slog.e(TAG, "Error renaming " + tempProcessedFile + " to " + mEverStored); - } + // Done } catch (IOException e) { Slog.e(TAG, "Error in processed file", e); - } finally { - try { if (temp != null) temp.close(); } catch (IOException e) {} - try { if (in != null) in.close(); } catch (IOException e) {} } } @@ -2018,7 +1983,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { if (uri == null) { return; } - String pkgName = uri.getSchemeSpecificPart(); + final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[] { pkgName }; } @@ -2026,7 +1991,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { // At package-changed we only care about looking at new transport states if (changed) { - String[] components = + final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { @@ -2036,7 +2001,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } - mTransportManager.onPackageChanged(pkgName, components); + mBackupHandler.post( + () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } @@ -2068,7 +2034,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); - for (String packageName : pkgList) { + for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (appGetsFullBackup(app) @@ -2085,7 +2051,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { writeFullBackupScheduleAsync(); } - mTransportManager.onPackageAdded(packageName); + mBackupHandler.post( + () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it @@ -2109,8 +2076,9 @@ public class BackupManagerService implements BackupManagerServiceInterface { removePackageParticipantsLocked(pkgList, uid); } } - for (String pkgName : pkgList) { - mTransportManager.onPackageRemoved(pkgName); + for (final String pkgName : pkgList) { + mBackupHandler.post( + () -> mTransportManager.onPackageRemoved(pkgName)); } } } @@ -2247,44 +2215,6 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } - // Remove our awareness of having ever backed up the given package - void removeEverBackedUp(String packageName) { - if (DEBUG) Slog.v(TAG, "Removing backed-up knowledge of " + packageName); - if (MORE_DEBUG) Slog.v(TAG, "New set:"); - - synchronized (mEverStoredApps) { - // Rewrite the file and rename to overwrite. If we reboot in the middle, - // we'll recognize on initialization time that the package no longer - // exists and fix it up then. - File tempKnownFile = new File(mBaseStateDir, "processed.new"); - RandomAccessFile known = null; - try { - known = new RandomAccessFile(tempKnownFile, "rws"); - mEverStoredApps.remove(packageName); - for (String s : mEverStoredApps) { - known.writeUTF(s); - if (MORE_DEBUG) Slog.v(TAG, " " + s); - } - known.close(); - known = null; - if (!tempKnownFile.renameTo(mEverStored)) { - throw new IOException("Can't rename " + tempKnownFile + " to " + mEverStored); - } - } catch (IOException e) { - // Bad: we couldn't create the new copy. For safety's sake we - // abandon the whole process and remove all what's-backed-up - // state entirely, meaning we'll force a backup pass for every - // participant on the next boot or [re]install. - Slog.w(TAG, "Error rewriting " + mEverStored, e); - mEverStoredApps.clear(); - tempKnownFile.delete(); - mEverStored.delete(); - } finally { - try { if (known != null) known.close(); } catch (IOException e) {} - } - } - } - // Persistently record the current and ancestral backup tokens as well // as the set of packages with data [supposedly] available in the // ancestral dataset. @@ -2458,6 +2388,17 @@ public class BackupManagerService implements BackupManagerServiceInterface { throw new IllegalArgumentException("No packages are provided for backup"); } + if (!mEnabled || !mProvisioned) { + Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" +mProvisioned); + sendBackupFinished(observer, BackupManager.ERROR_BACKUP_NOT_ALLOWED); + final int logTag = mProvisioned + ? BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED + : BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; + monitor = monitorEvent(monitor, logTag, null, + BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); + return BackupManager.ERROR_BACKUP_NOT_ALLOWED; + } + IBackupTransport transport = mTransportManager.getCurrentTransportBinder(); if (transport == null) { sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED); @@ -4597,7 +4538,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { } mOutputFile.close(); } catch (IOException e) { - /* nothing we can do about this */ + Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage()); } synchronized (mLatch) { mLatch.set(true); @@ -4845,7 +4786,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { + " provisioned=" + mProvisioned + "; ignoring"); } int monitoringEvent; - if (!mEnabled) { + if (mProvisioned) { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED; } else { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; @@ -7575,7 +7516,9 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF // All set; now set up the IPC and launch the agent setUpPipes(); mAgent = bindToAgentSynchronous(mTargetApp, - ApplicationThreadConstants.BACKUP_MODE_RESTORE_FULL); + FullBackup.KEY_VALUE_DATA_TOKEN.equals(info.domain) + ? ApplicationThreadConstants.BACKUP_MODE_INCREMENTAL + : ApplicationThreadConstants.BACKUP_MODE_RESTORE_FULL); mAgentPackage = pkg; } catch (IOException e) { // fall through to error handling @@ -8477,7 +8420,19 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF // ----- Restore handling ----- - // Old style: directly match the stored vs on device signature blocks + /** + * Returns whether the signatures stored {@param storedSigs}, coming from the source apk, match + * the signatures of the apk installed on the device, the target apk. If the target resides in + * the system partition we return true. Otherwise it's considered a match if both conditions + * hold: + * + *

          + *
        • Source and target have at least one signature each + *
        • Target contains all signatures in source + *
        + * + * Note that if {@param target} is null we return false. + */ static boolean signaturesMatch(Signature[] storedSigs, PackageInfo target) { if (target == null) { return false; @@ -8489,26 +8444,24 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF // partition will be signed with the device's platform certificate, so on // different phones the same system app will have different signatures.) if ((target.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { - if (MORE_DEBUG) Slog.v(TAG, "System app " + target.packageName + " - skipping sig check"); + if (MORE_DEBUG) { + Slog.v(TAG, "System app " + target.packageName + " - skipping sig check"); + } return true; } - // Allow unsigned apps, but not signed on one device and unsigned on the other - // !!! TODO: is this the right policy? Signature[] deviceSigs = target.signatures; - if (MORE_DEBUG) Slog.v(TAG, "signaturesMatch(): stored=" + storedSigs - + " device=" + deviceSigs); - if ((storedSigs == null || storedSigs.length == 0) - && (deviceSigs == null || deviceSigs.length == 0)) { - return true; + if (MORE_DEBUG) { + Slog.v(TAG, "signaturesMatch(): stored=" + storedSigs + " device=" + deviceSigs); } - if (storedSigs == null || deviceSigs == null) { + + // Don't allow unsigned apps on either end + if (ArrayUtils.isEmpty(storedSigs) || ArrayUtils.isEmpty(deviceSigs)) { return false; } - // !!! TODO: this demands that every stored signature match one - // that is present on device, and does not demand the converse. - // Is this this right policy? + // Signatures can be added over time, so the target-device apk needs to contain all the + // source-device apk signatures, but not necessarily the other way around. int nStored = storedSigs.length; int nDevice = deviceSigs.length; @@ -9779,13 +9732,37 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF } class PerformInitializeTask implements Runnable { - HashSet mQueue; + String[] mQueue; + IBackupObserver mObserver; - PerformInitializeTask(HashSet transportNames) { + PerformInitializeTask(String[] transportNames, IBackupObserver observer) { mQueue = transportNames; + mObserver = observer; + } + + private void notifyResult(String target, int status) { + try { + if (mObserver != null) { + mObserver.onResult(target, status); + } + } catch (RemoteException ignored) { + mObserver = null; // don't try again + } + } + + private void notifyFinished(int status) { + try { + if (mObserver != null) { + mObserver.backupFinished(status); + } + } catch (RemoteException ignored) { + mObserver = null; + } } public void run() { + // mWakelock is *acquired* when execution begins here + int result = BackupTransport.TRANSPORT_OK; try { for (String transportName : mQueue) { IBackupTransport transport = @@ -9814,6 +9791,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF synchronized (mQueueLock) { recordInitPendingLocked(false, transportName); } + notifyResult(transportName, BackupTransport.TRANSPORT_OK); } else { // If this didn't work, requeue this one and try again // after a suitable interval @@ -9822,6 +9800,9 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF synchronized (mQueueLock) { recordInitPendingLocked(true, transportName); } + notifyResult(transportName, status); + result = status; + // do this via another alarm to make sure of the wakelock states long delay = transport.requestBackupTime(); Slog.w(TAG, "Init failed on " + transportName + " resched in " + delay); @@ -9831,8 +9812,10 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF } } catch (Exception e) { Slog.e(TAG, "Unexpected error performing init", e); + result = BackupTransport.TRANSPORT_ERROR; } finally { // Done; release the wakelock + notifyFinished(result); mWakelock.release(); } } @@ -9950,6 +9933,23 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF }); } + // Run an initialize operation for the given transport + @Override + public void initializeTransports(String[] transportNames, IBackupObserver observer) { + mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "initializeTransport"); + if (MORE_DEBUG) { + Slog.v(TAG, "initializeTransports() of " + transportNames); + } + + final long oldId = Binder.clearCallingIdentity(); + try { + mWakelock.acquire(); + mBackupHandler.post(new PerformInitializeTask(transportNames, observer)); + } finally { + Binder.restoreCallingIdentity(oldId); + } + } + // Clear the given package's backup data from the current transport @Override public void clearBackupData(String transportName, String packageName) { @@ -10115,7 +10115,7 @@ if (MORE_DEBUG) Slog.v(TAG, " + got " + nRead + "; now wanting " + (size - soF try { fd.close(); } catch (IOException e) { - // just eat it + Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage()); } Binder.restoreCallingIdentity(oldId); Slog.d(TAG, "Adb backup processing complete."); diff --git a/services/backup/java/com/android/server/backup/BackupManagerServiceInterface.java b/services/backup/java/com/android/server/backup/BackupManagerServiceInterface.java index e41549431b563130b2e6e16f1ed12db545c75cf0..5dfa6302093e6ddaf026a758ed094a7780749ad7 100644 --- a/services/backup/java/com/android/server/backup/BackupManagerServiceInterface.java +++ b/services/backup/java/com/android/server/backup/BackupManagerServiceInterface.java @@ -77,6 +77,9 @@ public interface BackupManagerServiceInterface { void dataChanged(String packageName); + // Initialize the given transport + void initializeTransports(String[] transportName, IBackupObserver observer); + // Clear the given package's backup data from the current transport void clearBackupData(String transportName, String packageName); diff --git a/services/backup/java/com/android/server/backup/BackupPasswordManager.java b/services/backup/java/com/android/server/backup/BackupPasswordManager.java new file mode 100644 index 0000000000000000000000000000000000000000..ee7651b0a087eea50274316d40a0b87a3c03bafd --- /dev/null +++ b/services/backup/java/com/android/server/backup/BackupPasswordManager.java @@ -0,0 +1,307 @@ +/* + * 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.backup; + +import android.content.Context; +import android.util.Slog; + +import com.android.server.backup.utils.DataStreamFileCodec; +import com.android.server.backup.utils.DataStreamCodec; +import com.android.server.backup.utils.PasswordUtils; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.IOException; +import java.security.SecureRandom; + +/** + * Manages persisting and verifying backup passwords. + * + *

        Does not persist the password itself, but persists a PBKDF2 hash with a randomly chosen (also + * persisted) salt. Validation is performed by running the challenge text through the same + * PBKDF2 cycle with the persisted salt, and checking the hashes match. + * + * @see PasswordUtils for the hashing algorithm. + */ +public final class BackupPasswordManager { + private static final String TAG = "BackupPasswordManager"; + private static final boolean DEBUG = false; + + private static final int BACKUP_PW_FILE_VERSION = 2; + private static final int DEFAULT_PW_FILE_VERSION = 1; + + private static final String PASSWORD_VERSION_FILE_NAME = "pwversion"; + private static final String PASSWORD_HASH_FILE_NAME = "pwhash"; + + // See https://android-developers.googleblog.com/2013/12/changes-to-secretkeyfactory-api-in.html + public static final String PBKDF_CURRENT = "PBKDF2WithHmacSHA1"; + public static final String PBKDF_FALLBACK = "PBKDF2WithHmacSHA1And8bit"; + + private final SecureRandom mRng; + private final Context mContext; + private final File mBaseStateDir; + + private String mPasswordHash; + private int mPasswordVersion; + private byte[] mPasswordSalt; + + /** + * Creates an instance enforcing permissions using the {@code context} and persisting password + * data within the {@code baseStateDir}. + * + * @param context The context, for enforcing permissions around setting the password. + * @param baseStateDir A directory within which to persist password data. + * @param secureRandom Random number generator with which to generate password salts. + */ + BackupPasswordManager(Context context, File baseStateDir, SecureRandom secureRandom) { + mContext = context; + mRng = secureRandom; + mBaseStateDir = baseStateDir; + loadStateFromFilesystem(); + } + + /** + * Returns {@code true} if a password for backup is set. + * + * @throws SecurityException If caller does not have {@link android.Manifest.permission#BACKUP} + * permission. + */ + boolean hasBackupPassword() { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, + "hasBackupPassword"); + return mPasswordHash != null && mPasswordHash.length() > 0; + } + + /** + * Returns {@code true} if {@code password} matches the persisted password. + * + * @throws SecurityException If caller does not have {@link android.Manifest.permission#BACKUP} + * permission. + */ + boolean backupPasswordMatches(String password) { + if (hasBackupPassword() && !passwordMatchesSaved(password)) { + if (DEBUG) Slog.w(TAG, "Backup password mismatch; aborting"); + return false; + } + return true; + } + + /** + * Sets the new password, given a correct current password. + * + * @throws SecurityException If caller does not have {@link android.Manifest.permission#BACKUP} + * permission. + * @return {@code true} if has permission to set the password, {@code currentPassword} + * matches the currently persisted password, and is able to persist {@code newPassword}. + */ + boolean setBackupPassword(String currentPassword, String newPassword) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, + "setBackupPassword"); + + if (!passwordMatchesSaved(currentPassword)) { + return false; + } + + // Snap up to latest password file version. + try { + getPasswordVersionFileCodec().serialize(BACKUP_PW_FILE_VERSION); + mPasswordVersion = BACKUP_PW_FILE_VERSION; + } catch (IOException e) { + Slog.e(TAG, "Unable to write backup pw version; password not changed"); + return false; + } + + if (newPassword == null || newPassword.isEmpty()) { + return clearPassword(); + } + + try { + byte[] salt = randomSalt(); + String newPwHash = PasswordUtils.buildPasswordHash( + PBKDF_CURRENT, newPassword, salt, PasswordUtils.PBKDF2_HASH_ROUNDS); + + getPasswordHashFileCodec().serialize(new BackupPasswordHash(newPwHash, salt)); + mPasswordHash = newPwHash; + mPasswordSalt = salt; + return true; + } catch (IOException e) { + Slog.e(TAG, "Unable to set backup password"); + } + return false; + } + + /** + * Returns {@code true} if should try salting using the older PBKDF algorithm. + * + *

        This is {@code true} for v1 files. + */ + private boolean usePbkdf2Fallback() { + return mPasswordVersion < BACKUP_PW_FILE_VERSION; + } + + /** + * Deletes the current backup password. + * + * @return {@code true} if successful. + */ + private boolean clearPassword() { + File passwordHashFile = getPasswordHashFile(); + if (passwordHashFile.exists() && !passwordHashFile.delete()) { + Slog.e(TAG, "Unable to clear backup password"); + return false; + } + + mPasswordHash = null; + mPasswordSalt = null; + return true; + } + + /** + * Sets the password hash, salt, and version in the object from what has been persisted to the + * filesystem. + */ + private void loadStateFromFilesystem() { + try { + mPasswordVersion = getPasswordVersionFileCodec().deserialize(); + } catch (IOException e) { + Slog.e(TAG, "Unable to read backup pw version"); + mPasswordVersion = DEFAULT_PW_FILE_VERSION; + } + + try { + BackupPasswordHash hash = getPasswordHashFileCodec().deserialize(); + mPasswordHash = hash.hash; + mPasswordSalt = hash.salt; + } catch (IOException e) { + Slog.e(TAG, "Unable to read saved backup pw hash"); + } + } + + /** + * Whether the candidate password matches the current password. If the persisted password is an + * older version, attempts hashing using the older algorithm. + * + * @param candidatePassword The password to try. + * @return {@code true} if the passwords match. + */ + private boolean passwordMatchesSaved(String candidatePassword) { + return passwordMatchesSaved(PBKDF_CURRENT, candidatePassword) + || (usePbkdf2Fallback() && passwordMatchesSaved(PBKDF_FALLBACK, candidatePassword)); + } + + /** + * Returns {@code true} if the candidate password is correct. + * + * @param algorithm The algorithm used to hash passwords. + * @param candidatePassword The candidate password to compare to the current password. + * @return {@code true} if the candidate password matched the saved password. + */ + private boolean passwordMatchesSaved(String algorithm, String candidatePassword) { + if (mPasswordHash == null) { + return candidatePassword == null || candidatePassword.equals(""); + } else if (candidatePassword == null || candidatePassword.length() == 0) { + // The current password is not zero-length, but the candidate password is. + return false; + } else { + String candidatePasswordHash = PasswordUtils.buildPasswordHash( + algorithm, candidatePassword, mPasswordSalt, PasswordUtils.PBKDF2_HASH_ROUNDS); + return mPasswordHash.equalsIgnoreCase(candidatePasswordHash); + } + } + + private byte[] randomSalt() { + int bitsPerByte = 8; + byte[] array = new byte[PasswordUtils.PBKDF2_SALT_SIZE / bitsPerByte]; + mRng.nextBytes(array); + return array; + } + + private DataStreamFileCodec getPasswordVersionFileCodec() { + return new DataStreamFileCodec<>( + new File(mBaseStateDir, PASSWORD_VERSION_FILE_NAME), + new PasswordVersionFileCodec()); + } + + private DataStreamFileCodec getPasswordHashFileCodec() { + return new DataStreamFileCodec<>(getPasswordHashFile(), new PasswordHashFileCodec()); + } + + private File getPasswordHashFile() { + return new File(mBaseStateDir, PASSWORD_HASH_FILE_NAME); + } + + /** + * Container class for a PBKDF hash and the salt used to create the hash. + */ + private static final class BackupPasswordHash { + public String hash; + public byte[] salt; + + BackupPasswordHash(String hash, byte[] salt) { + this.hash = hash; + this.salt = salt; + } + } + + /** + * The password version file contains a single 32-bit integer. + */ + private static final class PasswordVersionFileCodec implements + DataStreamCodec { + @Override + public void serialize(Integer integer, DataOutputStream dataOutputStream) + throws IOException { + dataOutputStream.write(integer); + } + + @Override + public Integer deserialize(DataInputStream dataInputStream) throws IOException { + return dataInputStream.readInt(); + } + } + + /** + * The passwords hash file contains + * + *

          + *
        • A 32-bit integer representing the number of bytes in the salt; + *
        • The salt bytes; + *
        • A UTF-8 string of the hash. + *
        + */ + private static final class PasswordHashFileCodec implements + DataStreamCodec { + @Override + public void serialize(BackupPasswordHash backupPasswordHash, + DataOutputStream dataOutputStream) throws IOException { + dataOutputStream.writeInt(backupPasswordHash.salt.length); + dataOutputStream.write(backupPasswordHash.salt); + dataOutputStream.writeUTF(backupPasswordHash.hash); + } + + @Override + public BackupPasswordHash deserialize( + DataInputStream dataInputStream) throws IOException { + int saltLen = dataInputStream.readInt(); + byte[] salt = new byte[saltLen]; + dataInputStream.readFully(salt); + String hash = dataInputStream.readUTF(); + return new BackupPasswordHash(hash, salt); + } + } +} diff --git a/services/backup/java/com/android/server/backup/DataChangedJournal.java b/services/backup/java/com/android/server/backup/DataChangedJournal.java new file mode 100644 index 0000000000000000000000000000000000000000..9360c85aed334a77d8c06b97302cdbbca1eb9c85 --- /dev/null +++ b/services/backup/java/com/android/server/backup/DataChangedJournal.java @@ -0,0 +1,142 @@ +/* + * 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.backup; + +import android.annotation.Nullable; + +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.RandomAccessFile; +import java.util.ArrayList; + +/** + * A journal of packages that have indicated that their data has changed (and therefore should be + * backed up in the next scheduled K/V backup pass). + * + *

        This information is persisted to the filesystem so that it is not lost in the event of a + * reboot. + */ +public final class DataChangedJournal { + private static final String FILE_NAME_PREFIX = "journal"; + + /** + * Journals tend to be on the order of a few kilobytes, hence setting the buffer size to 8kb. + */ + private static final int BUFFER_SIZE_BYTES = 8 * 1024; + + private final File mFile; + + /** + * Constructs an instance that reads from and writes to the given file. + */ + DataChangedJournal(File file) { + mFile = file; + } + + /** + * Adds the given package to the journal. + * + * @param packageName The name of the package whose data has changed. + * @throws IOException if there is an IO error writing to the journal file. + */ + public void addPackage(String packageName) throws IOException { + try (RandomAccessFile out = new RandomAccessFile(mFile, "rws")) { + out.seek(out.length()); + out.writeUTF(packageName); + } + } + + /** + * Invokes {@link Consumer#accept(String)} with every package name in the journal file. + * + * @param consumer The callback. + * @throws IOException If there is an IO error reading from the file. + */ + public void forEach(Consumer consumer) throws IOException { + try ( + BufferedInputStream bufferedInputStream = new BufferedInputStream( + new FileInputStream(mFile), BUFFER_SIZE_BYTES); + DataInputStream dataInputStream = new DataInputStream(bufferedInputStream) + ) { + while (dataInputStream.available() > 0) { + String packageName = dataInputStream.readUTF(); + consumer.accept(packageName); + } + } + } + + /** + * Deletes the journal from the filesystem. + * + * @return {@code true} if successfully deleted journal. + */ + public boolean delete() { + return mFile.delete(); + } + + @Override + public boolean equals(@Nullable Object object) { + if (object instanceof DataChangedJournal) { + DataChangedJournal that = (DataChangedJournal) object; + try { + return this.mFile.getCanonicalPath().equals(that.mFile.getCanonicalPath()); + } catch (IOException exception) { + return false; + } + } + return false; + } + + @Override + public String toString() { + return mFile.toString(); + } + + /** + * Consumer for iterating over package names in the journal. + */ + @FunctionalInterface + public interface Consumer { + void accept(String packageName); + } + + /** + * Creates a new journal with a random file name in the given journal directory. + * + * @param journalDirectory The directory where journals are kept. + * @return The journal. + * @throws IOException if there is an IO error creating the file. + */ + static DataChangedJournal newJournal(File journalDirectory) throws IOException { + return new DataChangedJournal( + File.createTempFile(FILE_NAME_PREFIX, null, journalDirectory)); + } + + /** + * Returns a list of journals in the given journal directory. + */ + static ArrayList listJournals(File journalDirectory) { + ArrayList journals = new ArrayList<>(); + for (File file : journalDirectory.listFiles()) { + journals.add(new DataChangedJournal(file)); + } + return journals; + } +} diff --git a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java index b57c0bc964b42960a41d60fb3cd02bb4570c1245..23abd934334bb398c2e86f68d3668d28c2cd2ae7 100644 --- a/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +++ b/services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java @@ -17,7 +17,6 @@ package com.android.server.backup; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_BACKUP_IN_FOREGROUND; - import static com.android.server.backup.internal.BackupHandler.MSG_BACKUP_OPERATION_TIMEOUT; import static com.android.server.backup.internal.BackupHandler.MSG_FULL_CONFIRMATION_TIMEOUT; import static com.android.server.backup.internal.BackupHandler.MSG_OP_COMPLETE; @@ -30,10 +29,10 @@ import static com.android.server.backup.internal.BackupHandler.MSG_RUN_ADB_BACKU import static com.android.server.backup.internal.BackupHandler.MSG_RUN_ADB_RESTORE; import static com.android.server.backup.internal.BackupHandler.MSG_RUN_BACKUP; import static com.android.server.backup.internal.BackupHandler.MSG_RUN_CLEAR; -import static com.android.server.backup.internal.BackupHandler.MSG_RUN_INITIALIZE; import static com.android.server.backup.internal.BackupHandler.MSG_RUN_RESTORE; import static com.android.server.backup.internal.BackupHandler.MSG_SCHEDULE_BACKUP_PACKAGE; +import android.annotation.Nullable; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AppGlobals; @@ -83,6 +82,7 @@ import android.os.storage.IStorageManager; import android.os.storage.StorageManager; import android.provider.Settings; import android.text.TextUtils; +import android.util.ArraySet; import android.util.AtomicFile; import android.util.EventLog; import android.util.Pair; @@ -102,6 +102,7 @@ import com.android.server.backup.internal.BackupHandler; import com.android.server.backup.internal.BackupRequest; import com.android.server.backup.internal.ClearDataObserver; import com.android.server.backup.internal.Operation; +import com.android.server.backup.internal.PerformInitializeTask; import com.android.server.backup.internal.ProvisionedObserver; import com.android.server.backup.internal.RunBackupReceiver; import com.android.server.backup.internal.RunInitializeReceiver; @@ -117,13 +118,12 @@ import com.android.server.backup.restore.PerformUnifiedRestoreTask; import com.android.server.backup.utils.AppBackupUtils; import com.android.server.backup.utils.BackupManagerMonitorUtils; import com.android.server.backup.utils.BackupObserverUtils; -import com.android.server.backup.utils.PasswordUtils; +import com.android.server.backup.utils.SparseArrayUtils; import com.android.server.power.BatterySaverPolicy.ServiceType; -import libcore.io.IoUtils; +import com.google.android.collect.Sets; import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -135,13 +135,13 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -168,10 +168,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // with U+FF00 or higher for system use). public static final String KEY_WIDGET_STATE = "\uffed\uffedwidget"; - // Historical and current algorithm names - public static final String PBKDF_CURRENT = "PBKDF2WithHmacSHA1"; - public static final String PBKDF_FALLBACK = "PBKDF2WithHmacSHA1And8bit"; - // Name and current contents version of the full-backup manifest file // // Manifest version history: @@ -189,7 +185,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // 5 : added support for key-value packages public static final int BACKUP_FILE_VERSION = 5; public static final String BACKUP_FILE_HEADER_MAGIC = "ANDROID BACKUP\n"; - private static final int BACKUP_PW_FILE_VERSION = 2; public static final String BACKUP_METADATA_FILENAME = "_meta"; public static final int BACKUP_METADATA_VERSION = 1; public static final int BACKUP_WIDGET_METADATA_TOKEN = 0x01FFED01; @@ -282,6 +277,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter private final Object mClearDataLock = new Object(); private volatile boolean mClearingData; + private final BackupPasswordManager mBackupPasswordManager; + @GuardedBy("mPendingRestores") private boolean mIsRestoreInProgress; @GuardedBy("mPendingRestores") @@ -481,11 +478,11 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mDataDir = dataDir; } - public File getJournal() { + public DataChangedJournal getJournal() { return mJournal; } - public void setJournal(File journal) { + public void setJournal(@Nullable DataChangedJournal journal) { mJournal = journal; } @@ -517,12 +514,12 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mCurrentToken = currentToken; } - public HashSet getPendingInits() { + public ArraySet getPendingInits() { return mPendingInits; } - public void setPendingInits(HashSet pendingInits) { - mPendingInits = pendingInits; + public void clearPendingInits() { + mPendingInits.clear(); } public PerformFullTransportBackupTask getRunningFullBackupTask() { @@ -629,20 +626,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter private File mBaseStateDir; private File mDataDir; private File mJournalDir; - private File mJournal; - - // Backup password, if any, and the file where it's saved. What is stored is not the - // password text itself; it's the result of a PBKDF2 hash with a randomly chosen (but - // persisted) salt. Validation is performed by running the challenge text through the - // same PBKDF2 cycle with the persisted salt; if the resulting derived key string matches - // the saved hash string, then the challenge text matches the originally supplied - // password text. + @Nullable private DataChangedJournal mJournal; + private final SecureRandom mRng = new SecureRandom(); - private String mPasswordHash; - private File mPasswordHashFile; - private int mPasswordVersion; - private File mPasswordVersionFile; - private byte[] mPasswordSalt; // Keep a log of all the apps we've ever backed up, and what the // dataset tokens are for both the current backup dataset and @@ -659,7 +645,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Persistently track the need to do a full init private static final String INIT_SENTINEL_FILE_NAME = "_need_init_"; - private HashSet mPendingInits = new HashSet<>(); // transport names + private ArraySet mPendingInits = new ArraySet<>(); // transport names // Round-robin queue for scheduling full backup passes private static final int SCHEDULE_FILE_VERSION = 1; // current version of the schedule file @@ -744,52 +730,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // This dir on /cache is managed directly in init.rc mDataDir = new File(Environment.getDownloadCacheDirectory(), "backup_stage"); - mPasswordVersion = 1; // unless we hear otherwise - mPasswordVersionFile = new File(mBaseStateDir, "pwversion"); - if (mPasswordVersionFile.exists()) { - FileInputStream fin = null; - DataInputStream in = null; - try { - fin = new FileInputStream(mPasswordVersionFile); - in = new DataInputStream(fin); - mPasswordVersion = in.readInt(); - } catch (IOException e) { - Slog.e(TAG, "Unable to read backup pw version"); - } finally { - try { - if (in != null) in.close(); - if (fin != null) fin.close(); - } catch (IOException e) { - Slog.w(TAG, "Error closing pw version files"); - } - } - } - - mPasswordHashFile = new File(mBaseStateDir, "pwhash"); - if (mPasswordHashFile.exists()) { - FileInputStream fin = null; - DataInputStream in = null; - try { - fin = new FileInputStream(mPasswordHashFile); - in = new DataInputStream(new BufferedInputStream(fin)); - // integer length of the salt array, followed by the salt, - // then the hex pw hash string - int saltLen = in.readInt(); - byte[] salt = new byte[saltLen]; - in.readFully(salt); - mPasswordHash = in.readUTF(); - mPasswordSalt = salt; - } catch (IOException e) { - Slog.e(TAG, "Unable to read saved backup pw hash"); - } finally { - try { - if (in != null) in.close(); - if (fin != null) fin.close(); - } catch (IOException e) { - Slog.w(TAG, "Unable to close streams"); - } - } - } + mBackupPasswordManager = new BackupPasswordManager(mContext, mBaseStateDir, mRng); // Alarm receivers for scheduled backups & initialization operations mRunBackupReceiver = new RunBackupReceiver(this); @@ -806,11 +747,11 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter Intent backupIntent = new Intent(RUN_BACKUP_ACTION); backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); - mRunBackupIntent = PendingIntent.getBroadcast(context, MSG_RUN_BACKUP, backupIntent, 0); + mRunBackupIntent = PendingIntent.getBroadcast(context, 0, backupIntent, 0); Intent initIntent = new Intent(RUN_INITIALIZE_ACTION); - backupIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); - mRunInitIntent = PendingIntent.getBroadcast(context, MSG_RUN_INITIALIZE, initIntent, 0); + initIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); + mRunInitIntent = PendingIntent.getBroadcast(context, 0, initIntent, 0); // Set up the backup-request journaling mJournalDir = new File(mBaseStateDir, "pending"); @@ -858,8 +799,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // Remember our ancestral dataset mTokenFile = new File(mBaseStateDir, "ancestral"); - try { - RandomAccessFile tf = new RandomAccessFile(mTokenFile, "r"); + try (RandomAccessFile tf = new RandomAccessFile(mTokenFile, "r")) { int version = tf.readInt(); if (version == CURRENT_ANCESTRAL_RECORD_VERSION) { mAncestralToken = tf.readLong(); @@ -874,7 +814,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } } - tf.close(); } catch (FileNotFoundException fnf) { // Probably innocuous Slog.v(TAG, "No ancestral data"); @@ -898,13 +837,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // If there are previous contents, parse them out then start a new // file to continue the recordkeeping. if (mEverStored.exists()) { - RandomAccessFile temp = null; - RandomAccessFile in = null; - - try { - temp = new RandomAccessFile(tempProcessedFile, "rws"); - in = new RandomAccessFile(mEverStored, "r"); - + try (RandomAccessFile temp = new RandomAccessFile(tempProcessedFile, "rws"); + RandomAccessFile in = new RandomAccessFile(mEverStored, "r")) { // Loop until we hit EOF while (true) { String pkg = in.readUTF(); @@ -928,15 +862,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } catch (IOException e) { Slog.e(TAG, "Error in processed file", e); - } finally { - try { - if (temp != null) temp.close(); - } catch (IOException e) { - } - try { - if (in != null) in.close(); - } catch (IOException e) { - } } } @@ -967,14 +892,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter PackageManagerBackupAgent.getStorableApplications(mPackageManager); if (mFullBackupScheduleFile.exists()) { - FileInputStream fstream = null; - BufferedInputStream bufStream = null; - DataInputStream in = null; - try { - fstream = new FileInputStream(mFullBackupScheduleFile); - bufStream = new BufferedInputStream(fstream); - in = new DataInputStream(bufStream); - + try (FileInputStream fstream = new FileInputStream(mFullBackupScheduleFile); + BufferedInputStream bufStream = new BufferedInputStream(fstream); + DataInputStream in = new DataInputStream(bufStream)) { int version = in.readInt(); if (version != SCHEDULE_FILE_VERSION) { Slog.e(TAG, "Unknown backup schedule version " + version); @@ -1035,10 +955,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter Slog.e(TAG, "Unable to read backup schedule", e); mFullBackupScheduleFile.delete(); schedule = null; - } finally { - IoUtils.closeQuietly(in); - IoUtils.closeQuietly(bufStream); - IoUtils.closeQuietly(fstream); } } @@ -1104,35 +1020,17 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } private void parseLeftoverJournals() { - for (File f : mJournalDir.listFiles()) { - if (mJournal == null || f.compareTo(mJournal) != 0) { - // This isn't the current journal, so it must be a leftover. Read - // out the package names mentioned there and schedule them for - // backup. - DataInputStream in = null; + ArrayList journals = DataChangedJournal.listJournals(mJournalDir); + for (DataChangedJournal journal : journals) { + if (!journal.equals(mJournal)) { try { - Slog.i(TAG, "Found stale backup journal, scheduling"); - // Journals will tend to be on the order of a few kilobytes(around 4k), hence, - // setting the buffer size to 8192. - InputStream bufferedInputStream = new BufferedInputStream( - new FileInputStream(f), 8192); - in = new DataInputStream(bufferedInputStream); - while (true) { - String packageName = in.readUTF(); + journal.forEach(packageName -> { + Slog.i(TAG, "Found stale backup journal, scheduling"); if (MORE_DEBUG) Slog.i(TAG, " " + packageName); dataChangedImpl(packageName); - } - } catch (EOFException e) { - // no more data; we're done - } catch (Exception e) { - Slog.e(TAG, "Can't read " + f, e); - } finally { - // close/delete the file - try { - if (in != null) in.close(); - } catch (IOException e) { - } - f.delete(); + }); + } catch (IOException e) { + Slog.e(TAG, "Can't read " + journal, e); } } } @@ -1145,128 +1043,18 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter return array; } - private boolean passwordMatchesSaved(String algorithm, String candidatePw, int rounds) { - if (mPasswordHash == null) { - // no current password case -- require that 'currentPw' be null or empty - if (candidatePw == null || "".equals(candidatePw)) { - return true; - } // else the non-empty candidate does not match the empty stored pw - } else { - // hash the stated current pw and compare to the stored one - if (candidatePw != null && candidatePw.length() > 0) { - String currentPwHash = PasswordUtils.buildPasswordHash(algorithm, candidatePw, - mPasswordSalt, - rounds); - if (mPasswordHash.equalsIgnoreCase(currentPwHash)) { - // candidate hash matches the stored hash -- the password matches - return true; - } - } // else the stored pw is nonempty but the candidate is empty; no match - } - return false; - } - @Override public boolean setBackupPassword(String currentPw, String newPw) { - mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, - "setBackupPassword"); - - // When processing v1 passwords we may need to try two different PBKDF2 checksum regimes - final boolean pbkdf2Fallback = (mPasswordVersion < BACKUP_PW_FILE_VERSION); - - // If the supplied pw doesn't hash to the the saved one, fail. The password - // might be caught in the legacy crypto mismatch; verify that too. - if (!passwordMatchesSaved(PBKDF_CURRENT, currentPw, PasswordUtils.PBKDF2_HASH_ROUNDS) - && !(pbkdf2Fallback && passwordMatchesSaved(PBKDF_FALLBACK, - currentPw, PasswordUtils.PBKDF2_HASH_ROUNDS))) { - return false; - } - - // Snap up to current on the pw file version - mPasswordVersion = BACKUP_PW_FILE_VERSION; - FileOutputStream pwFout = null; - DataOutputStream pwOut = null; - try { - pwFout = new FileOutputStream(mPasswordVersionFile); - pwOut = new DataOutputStream(pwFout); - pwOut.writeInt(mPasswordVersion); - } catch (IOException e) { - Slog.e(TAG, "Unable to write backup pw version; password not changed"); - return false; - } finally { - try { - if (pwOut != null) pwOut.close(); - if (pwFout != null) pwFout.close(); - } catch (IOException e) { - Slog.w(TAG, "Unable to close pw version record"); - } - } - - // Clearing the password is okay - if (newPw == null || newPw.isEmpty()) { - if (mPasswordHashFile.exists()) { - if (!mPasswordHashFile.delete()) { - // Unable to delete the old pw file, so fail - Slog.e(TAG, "Unable to clear backup password"); - return false; - } - } - mPasswordHash = null; - mPasswordSalt = null; - return true; - } - - try { - // Okay, build the hash of the new backup password - byte[] salt = randomBytes(PasswordUtils.PBKDF2_SALT_SIZE); - String newPwHash = PasswordUtils.buildPasswordHash(PBKDF_CURRENT, newPw, salt, - PasswordUtils.PBKDF2_HASH_ROUNDS); - - OutputStream pwf = null, buffer = null; - DataOutputStream out = null; - try { - pwf = new FileOutputStream(mPasswordHashFile); - buffer = new BufferedOutputStream(pwf); - out = new DataOutputStream(buffer); - // integer length of the salt array, followed by the salt, - // then the hex pw hash string - out.writeInt(salt.length); - out.write(salt); - out.writeUTF(newPwHash); - out.flush(); - mPasswordHash = newPwHash; - mPasswordSalt = salt; - return true; - } finally { - if (out != null) out.close(); - if (buffer != null) buffer.close(); - if (pwf != null) pwf.close(); - } - } catch (IOException e) { - Slog.e(TAG, "Unable to set backup password"); - } - return false; + return mBackupPasswordManager.setBackupPassword(currentPw, newPw); } @Override public boolean hasBackupPassword() { - mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP, - "hasBackupPassword"); - - return mPasswordHash != null && mPasswordHash.length() > 0; + return mBackupPasswordManager.hasBackupPassword(); } public boolean backupPasswordMatches(String currentPw) { - if (hasBackupPassword()) { - final boolean pbkdf2Fallback = (mPasswordVersion < BACKUP_PW_FILE_VERSION); - if (!passwordMatchesSaved(PBKDF_CURRENT, currentPw, PasswordUtils.PBKDF2_HASH_ROUNDS) - && !(pbkdf2Fallback && passwordMatchesSaved(PBKDF_FALLBACK, - currentPw, PasswordUtils.PBKDF2_HASH_ROUNDS))) { - if (DEBUG) Slog.w(TAG, "Backup password mismatch; aborting"); - return false; - } - } - return true; + return mBackupPasswordManager.backupPasswordMatches(currentPw); } // Maintain persistent state around whether need to do an initialize operation. @@ -1409,7 +1197,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter if (uri == null) { return; } - String pkgName = uri.getSchemeSpecificPart(); + final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[]{pkgName}; } @@ -1417,7 +1205,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // At package-changed we only care about looking at new transport states if (changed) { - String[] components = + final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { @@ -1427,7 +1215,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } - mTransportManager.onPackageChanged(pkgName, components); + mBackupHandler.post( + () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } @@ -1459,7 +1248,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); - for (String packageName : pkgList) { + for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (AppBackupUtils.appGetsFullBackup(app) @@ -1477,7 +1266,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter writeFullBackupScheduleAsync(); } - mTransportManager.onPackageAdded(packageName); + mBackupHandler.post( + () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it @@ -1501,8 +1291,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter removePackageParticipantsLocked(pkgList, uid); } } - for (String pkgName : pkgList) { - mTransportManager.onPackageRemoved(pkgName); + for (final String pkgName : pkgList) { + mBackupHandler.post( + () -> mTransportManager.onPackageRemoved(pkgName)); } } } @@ -1627,18 +1418,11 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter synchronized (mEverStoredApps) { if (!mEverStoredApps.add(packageName)) return; - RandomAccessFile out = null; - try { - out = new RandomAccessFile(mEverStored, "rws"); + try (RandomAccessFile out = new RandomAccessFile(mEverStored, "rws")) { out.seek(out.length()); out.writeUTF(packageName); } catch (IOException e) { Slog.e(TAG, "Can't log backup of " + packageName + " to " + mEverStored); - } finally { - try { - if (out != null) out.close(); - } catch (IOException e) { - } } } } @@ -1653,16 +1437,13 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // we'll recognize on initialization time that the package no longer // exists and fix it up then. File tempKnownFile = new File(mBaseStateDir, "processed.new"); - RandomAccessFile known = null; - try { - known = new RandomAccessFile(tempKnownFile, "rws"); + try (RandomAccessFile known = new RandomAccessFile(tempKnownFile, "rws")) { mEverStoredApps.remove(packageName); for (String s : mEverStoredApps) { known.writeUTF(s); if (MORE_DEBUG) Slog.v(TAG, " " + s); } known.close(); - known = null; if (!tempKnownFile.renameTo(mEverStored)) { throw new IOException("Can't rename " + tempKnownFile + " to " + mEverStored); } @@ -1675,11 +1456,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter mEverStoredApps.clear(); tempKnownFile.delete(); mEverStored.delete(); - } finally { - try { - if (known != null) known.close(); - } catch (IOException e) { - } } } } @@ -1688,9 +1464,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // as the set of packages with data [supposedly] available in the // ancestral dataset. public void writeRestoreTokens() { - try { - RandomAccessFile af = new RandomAccessFile(mTokenFile, "rwd"); - + try (RandomAccessFile af = new RandomAccessFile(mTokenFile, "rwd")) { // First, the version number of this record, for futureproofing af.writeInt(CURRENT_ANCESTRAL_RECORD_VERSION); @@ -1709,7 +1483,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter if (MORE_DEBUG) Slog.v(TAG, " " + pkgName); } } - af.close(); } catch (IOException e) { Slog.w(TAG, "Unable to write token file:", e); } @@ -1851,6 +1624,17 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter throw new IllegalArgumentException("No packages are provided for backup"); } + if (!mEnabled || !mProvisioned) { + Slog.i(TAG, "Backup requested but e=" + mEnabled + " p=" +mProvisioned); + BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_BACKUP_NOT_ALLOWED); + final int logTag = mProvisioned + ? BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED + : BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; + monitor = BackupManagerMonitorUtils.monitorEvent(monitor, logTag, null, + BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); + return BackupManager.ERROR_BACKUP_NOT_ALLOWED; + } + IBackupTransport transport = mTransportManager.getCurrentTransportBinder(); if (transport == null) { BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED); @@ -2477,38 +2261,22 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // a caller with full permission can ask to back up any participating app - HashSet targets = new HashSet<>(); if (PACKAGE_MANAGER_SENTINEL.equals(packageName)) { - targets.add(PACKAGE_MANAGER_SENTINEL); + return Sets.newHashSet(PACKAGE_MANAGER_SENTINEL); } else { synchronized (mBackupParticipants) { - int N = mBackupParticipants.size(); - for (int i = 0; i < N; i++) { - HashSet s = mBackupParticipants.valueAt(i); - if (s != null) { - targets.addAll(s); - } - } + return SparseArrayUtils.union(mBackupParticipants); } } - return targets; } private void writeToJournalLocked(String str) { - RandomAccessFile out = null; try { - if (mJournal == null) mJournal = File.createTempFile("journal", null, mJournalDir); - out = new RandomAccessFile(mJournal, "rws"); - out.seek(out.length()); - out.writeUTF(str); + if (mJournal == null) mJournal = DataChangedJournal.newJournal(mJournalDir); + mJournal.addPackage(str); } catch (IOException e) { Slog.e(TAG, "Can't write " + str + " to backup journal", e); mJournal = null; - } finally { - try { - if (out != null) out.close(); - } catch (IOException e) { - } } } @@ -2544,6 +2312,23 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter }); } + // Run an initialize operation for the given transport + @Override + public void initializeTransports(String[] transportNames, IBackupObserver observer) { + mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "initializeTransport"); + if (MORE_DEBUG || true) { + Slog.v(TAG, "initializeTransport(): " + Arrays.asList(transportNames)); + } + + final long oldId = Binder.clearCallingIdentity(); + try { + mWakelock.acquire(); + mBackupHandler.post(new PerformInitializeTask(this, transportNames, observer)); + } finally { + Binder.restoreCallingIdentity(oldId); + } + } + // Clear the given package's backup data from the current transport @Override public void clearBackupData(String transportName, String packageName) { @@ -2566,14 +2351,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // a caller with full permission can ask to back up any participating app // !!! TODO: allow data-clear of ANY app? if (MORE_DEBUG) Slog.v(TAG, "Privileged caller, allowing clear of other apps"); - apps = new HashSet<>(); - int N = mBackupParticipants.size(); - for (int i = 0; i < N; i++) { - HashSet s = mBackupParticipants.valueAt(i); - if (s != null) { - apps.addAll(s); - } - } + apps = SparseArrayUtils.union(mBackupParticipants); } // Is the given app an available participant? @@ -2711,7 +2489,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter try { fd.close(); } catch (IOException e) { - // just eat it + Slog.e(TAG, "IO error closing output for adb backup: " + e.getMessage()); } Binder.restoreCallingIdentity(oldId); Slog.d(TAG, "Adb backup processing complete."); @@ -2949,9 +2727,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter File base = new File(Environment.getDataDirectory(), "backup"); File enableFile = new File(base, BACKUP_ENABLE_FILE); File stage = new File(base, BACKUP_ENABLE_FILE + "-stage"); - FileOutputStream fout = null; - try { - fout = new FileOutputStream(stage); + try (FileOutputStream fout = new FileOutputStream(stage)) { fout.write(enable ? 1 : 0); fout.close(); stage.renameTo(enableFile); @@ -2967,8 +2743,6 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter Settings.Secure.BACKUP_ENABLED, null, userId); enableFile.delete(); stage.delete(); - } finally { - IoUtils.closeQuietly(fout); } } diff --git a/services/backup/java/com/android/server/backup/Trampoline.java b/services/backup/java/com/android/server/backup/Trampoline.java index 9e7a29e036fc240c477937eb87558fa6d6fac73a..fcd929a7aeed55dd684e54e1c07cd0f205dda18d 100644 --- a/services/backup/java/com/android/server/backup/Trampoline.java +++ b/services/backup/java/com/android/server/backup/Trampoline.java @@ -198,6 +198,15 @@ public class Trampoline extends IBackupManager.Stub { } } + @Override + public void initializeTransports(String[] transportNames, IBackupObserver observer) + throws RemoteException { + BackupManagerServiceInterface svc = mService; + if (svc != null) { + svc.initializeTransports(transportNames, observer); + } + } + @Override public void clearBackupData(String transportName, String packageName) throws RemoteException { diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java index fb2982eb0baaac34b124d50fb1b9c2b69464a043..dab218db51b2c5a3722eb5de007706a117e89bff 100644 --- a/services/backup/java/com/android/server/backup/TransportManager.java +++ b/services/backup/java/com/android/server/backup/TransportManager.java @@ -316,9 +316,9 @@ public class TransportManager { private class TransportConnection implements ServiceConnection { // Hold mTransportsLock to access these fields so as to provide a consistent view of them. - private IBackupTransport mBinder; + private volatile IBackupTransport mBinder; private final List mListeners = new ArrayList<>(); - private String mTransportName; + private volatile String mTransportName; private final ComponentName mTransportComponent; @@ -401,25 +401,24 @@ public class TransportManager { + rebindTimeout + "ms"); } + // Intentionally not synchronized -- the variable is volatile and changes to its value + // are inside synchronized blocks, providing a memory sync barrier; and this method + // does not touch any other state protected by that lock. private IBackupTransport getBinder() { - synchronized (mTransportLock) { - return mBinder; - } + return mBinder; } + // Intentionally not synchronized; same as getBinder() private String getName() { - synchronized (mTransportLock) { - return mTransportName; - } + return mTransportName; } + // Intentionally not synchronized; same as getBinder() private void bindIfUnbound() { - synchronized (mTransportLock) { - if (mBinder == null) { - Slog.d(TAG, - "Rebinding to transport " + mTransportComponent.flattenToShortString()); - bindToTransport(mTransportComponent, this); - } + if (mBinder == null) { + Slog.d(TAG, + "Rebinding to transport " + mTransportComponent.flattenToShortString()); + bindToTransport(mTransportComponent, this); } } diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java index 007d9309c188856c02f4032eac8139db28360ffd..4085f63afa8c1d74bea22522a4141a3af4de3636 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java @@ -16,11 +16,11 @@ package com.android.server.backup.fullbackup; +import static com.android.server.backup.BackupPasswordManager.PBKDF_CURRENT; import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_FILE_HEADER_MAGIC; import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_FILE_VERSION; import static com.android.server.backup.RefactoredBackupManagerService.DEBUG; import static com.android.server.backup.RefactoredBackupManagerService.MORE_DEBUG; -import static com.android.server.backup.RefactoredBackupManagerService.PBKDF_CURRENT; import static com.android.server.backup.RefactoredBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE; import static com.android.server.backup.RefactoredBackupManagerService.TAG; @@ -459,7 +459,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor } mOutputFile.close(); } catch (IOException e) { - /* nothing we can do about this */ + Slog.e(TAG, "IO error closing adb backup file: " + e.getMessage()); } synchronized (mLatch) { mLatch.set(true); diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java index 0f1e48579a9208707844a57b1c6ffd1eb1be20e7..bc7c1174d17fc09aea45b4f7bbe5ee9d7e6fc86c 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java @@ -277,7 +277,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba + "; ignoring"); } int monitoringEvent; - if (!backupManagerService.isEnabled()) { + if (backupManagerService.isProvisioned()) { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED; } else { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; 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 886d1f8043c6f16873cc22f67dc1001f01a00813..8f823004d9930ed48d0934009bc9d7356dbb7a50 100644 --- a/services/backup/java/com/android/server/backup/internal/BackupHandler.java +++ b/services/backup/java/com/android/server/backup/internal/BackupHandler.java @@ -36,6 +36,7 @@ import android.util.Slog; import com.android.internal.backup.IBackupTransport; import com.android.server.EventLogTags; import com.android.server.backup.BackupRestoreTask; +import com.android.server.backup.DataChangedJournal; import com.android.server.backup.RefactoredBackupManagerService; import com.android.server.backup.fullbackup.PerformAdbBackupTask; import com.android.server.backup.fullbackup.PerformFullTransportBackupTask; @@ -64,7 +65,6 @@ public class BackupHandler extends Handler { public static final int MSG_RUN_ADB_BACKUP = 2; public static final int MSG_RUN_RESTORE = 3; public static final int MSG_RUN_CLEAR = 4; - public static final int MSG_RUN_INITIALIZE = 5; public static final int MSG_RUN_GET_RESTORE_SETS = 6; public static final int MSG_RESTORE_SESSION_TIMEOUT = 8; public static final int MSG_FULL_CONFIRMATION_TIMEOUT = 9; @@ -108,7 +108,7 @@ public class BackupHandler extends Handler { // snapshot the pending-backup set and work on that ArrayList queue = new ArrayList<>(); - File oldJournal = backupManagerService.getJournal(); + DataChangedJournal oldJournal = backupManagerService.getJournal(); synchronized (backupManagerService.getQueueLock()) { // Do we have any work to do? Construct the work queue // then release the synchronization lock to actually run @@ -265,19 +265,6 @@ public class BackupHandler extends Handler { break; } - case MSG_RUN_INITIALIZE: { - HashSet queue; - - // Snapshot the pending-init queue and work on that - synchronized (backupManagerService.getQueueLock()) { - queue = new HashSet<>(backupManagerService.getPendingInits()); - backupManagerService.getPendingInits().clear(); - } - - (new PerformInitializeTask(backupManagerService, queue)).run(); - break; - } - case MSG_RETRY_INIT: { synchronized (backupManagerService.getQueueLock()) { backupManagerService.recordInitPendingLocked(msg.arg1 != 0, (String) msg.obj); diff --git a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java index a996e2d96492276af4c5c07cb92a23f91a8baca1..5d4fcf4c16d92239dad3fb8c7a44478be683a1c6 100644 --- a/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java +++ b/services/backup/java/com/android/server/backup/internal/PerformBackupTask.java @@ -28,6 +28,7 @@ import static com.android.server.backup.RefactoredBackupManagerService.TIMEOUT_B import static com.android.server.backup.internal.BackupHandler.MSG_BACKUP_OPERATION_TIMEOUT; import static com.android.server.backup.internal.BackupHandler.MSG_BACKUP_RESTORE_STEP; +import android.annotation.Nullable; import android.app.ApplicationThreadConstants; import android.app.IBackupAgent; import android.app.backup.BackupDataInput; @@ -57,6 +58,7 @@ import com.android.internal.backup.IBackupTransport; import com.android.server.AppWidgetBackupBridge; import com.android.server.EventLogTags; import com.android.server.backup.BackupRestoreTask; +import com.android.server.backup.DataChangedJournal; import com.android.server.backup.KeyValueBackupJob; import com.android.server.backup.PackageManagerBackupAgent; import com.android.server.backup.RefactoredBackupManagerService; @@ -114,7 +116,7 @@ public class PerformBackupTask implements BackupRestoreTask { ArrayList mQueue; ArrayList mOriginalQueue; File mStateDir; - File mJournal; + @Nullable DataChangedJournal mJournal; BackupState mCurrentState; List mPendingFullBackups; IBackupObserver mObserver; @@ -142,9 +144,9 @@ public class PerformBackupTask implements BackupRestoreTask { public PerformBackupTask(RefactoredBackupManagerService backupManagerService, IBackupTransport transport, String dirName, - ArrayList queue, File journal, IBackupObserver observer, - IBackupManagerMonitor monitor, List pendingFullBackups, - boolean userInitiated, boolean nonIncremental) { + ArrayList queue, @Nullable DataChangedJournal journal, + IBackupObserver observer, IBackupManagerMonitor monitor, + List pendingFullBackups, boolean userInitiated, boolean nonIncremental) { this.backupManagerService = backupManagerService; mTransport = transport; mOriginalQueue = queue; diff --git a/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java b/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java index 5a75b664628bf58eded901040a8e371cd1cf2ce5..939b1ae11b95483ea98b40254658c0bace0a5f8d 100644 --- a/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java +++ b/services/backup/java/com/android/server/backup/internal/PerformInitializeTask.java @@ -20,6 +20,8 @@ import static com.android.server.backup.RefactoredBackupManagerService.TAG; import android.app.AlarmManager; import android.app.backup.BackupTransport; +import android.app.backup.IBackupObserver; +import android.os.RemoteException; import android.os.SystemClock; import android.util.EventLog; import android.util.Slog; @@ -29,20 +31,43 @@ import com.android.server.EventLogTags; import com.android.server.backup.RefactoredBackupManagerService; import java.io.File; -import java.util.HashSet; public class PerformInitializeTask implements Runnable { private RefactoredBackupManagerService backupManagerService; - HashSet mQueue; + String[] mQueue; + IBackupObserver mObserver; - PerformInitializeTask(RefactoredBackupManagerService backupManagerService, - HashSet transportNames) { + public PerformInitializeTask(RefactoredBackupManagerService backupManagerService, + String[] transportNames, IBackupObserver observer) { this.backupManagerService = backupManagerService; mQueue = transportNames; + mObserver = observer; + } + + private void notifyResult(String target, int status) { + try { + if (mObserver != null) { + mObserver.onResult(target, status); + } + } catch (RemoteException ignored) { + mObserver = null; // don't try again + } + } + + private void notifyFinished(int status) { + try { + if (mObserver != null) { + mObserver.backupFinished(status); + } + } catch (RemoteException ignored) { + mObserver = null; + } } public void run() { + // mWakelock is *acquired* when execution begins here + int result = BackupTransport.TRANSPORT_OK; try { for (String transportName : mQueue) { IBackupTransport transport = @@ -74,6 +99,7 @@ public class PerformInitializeTask implements Runnable { synchronized (backupManagerService.getQueueLock()) { backupManagerService.recordInitPendingLocked(false, transportName); } + notifyResult(transportName, BackupTransport.TRANSPORT_OK); } else { // If this didn't work, requeue this one and try again // after a suitable interval @@ -82,6 +108,9 @@ public class PerformInitializeTask implements Runnable { synchronized (backupManagerService.getQueueLock()) { backupManagerService.recordInitPendingLocked(true, transportName); } + notifyResult(transportName, status); + result = status; + // do this via another alarm to make sure of the wakelock states long delay = transport.requestBackupTime(); Slog.w(TAG, "Init failed on " + transportName + " resched in " + delay); @@ -92,8 +121,10 @@ public class PerformInitializeTask implements Runnable { } } catch (Exception e) { Slog.e(TAG, "Unexpected error performing init", e); + result = BackupTransport.TRANSPORT_ERROR; } finally { // Done; release the wakelock + notifyFinished(result); backupManagerService.getWakelock().release(); } } diff --git a/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java b/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java index 1621a9149d91061c1b63c07e75372422cfcaafe9..a6897d0e767147f014987214ee5e01a75e740206 100644 --- a/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java +++ b/services/backup/java/com/android/server/backup/internal/RunInitializeReceiver.java @@ -19,12 +19,10 @@ package com.android.server.backup.internal; import static com.android.server.backup.RefactoredBackupManagerService.DEBUG; import static com.android.server.backup.RefactoredBackupManagerService.RUN_INITIALIZE_ACTION; import static com.android.server.backup.RefactoredBackupManagerService.TAG; -import static com.android.server.backup.internal.BackupHandler.MSG_RUN_INITIALIZE; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.os.Message; import android.util.Slog; import com.android.server.backup.RefactoredBackupManagerService; @@ -44,13 +42,15 @@ public class RunInitializeReceiver extends BroadcastReceiver { Slog.v(TAG, "Running a device init"); } + String[] pendingInits = (String[]) backupManagerService.getPendingInits().toArray(); + backupManagerService.clearPendingInits(); + PerformInitializeTask initTask = new PerformInitializeTask(backupManagerService, + pendingInits, null); + // Acquire the wakelock and pass it to the init thread. it will // be released once init concludes. backupManagerService.getWakelock().acquire(); - - Message msg = backupManagerService.getBackupHandler().obtainMessage( - MSG_RUN_INITIALIZE); - backupManagerService.getBackupHandler().sendMessage(msg); + backupManagerService.getBackupHandler().post(initTask); } } } diff --git a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java index d5c62af05aac13e8ad579a0517afdd554bf8d12c..62ae065be1ac54923b3bd9dc52bb11b2cc24cdf8 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformAdbRestoreTask.java @@ -16,6 +16,8 @@ package com.android.server.backup.restore; +import static com.android.server.backup.BackupPasswordManager.PBKDF_CURRENT; +import static com.android.server.backup.BackupPasswordManager.PBKDF_FALLBACK; import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_FILE_HEADER_MAGIC; import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_FILE_VERSION; import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_MANIFEST_FILENAME; @@ -23,8 +25,6 @@ import static com.android.server.backup.RefactoredBackupManagerService.BACKUP_ME import static com.android.server.backup.RefactoredBackupManagerService.DEBUG; import static com.android.server.backup.RefactoredBackupManagerService.MORE_DEBUG; import static com.android.server.backup.RefactoredBackupManagerService.OP_TYPE_RESTORE_WAIT; -import static com.android.server.backup.RefactoredBackupManagerService.PBKDF_CURRENT; -import static com.android.server.backup.RefactoredBackupManagerService.PBKDF_FALLBACK; import static com.android.server.backup.RefactoredBackupManagerService.SETTINGS_PACKAGE; import static com.android.server.backup.RefactoredBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE; import static com.android.server.backup.RefactoredBackupManagerService.TAG; @@ -610,7 +610,9 @@ public class PerformAdbRestoreTask implements Runnable { // All set; now set up the IPC and launch the agent setUpPipes(); mAgent = mBackupManagerService.bindToAgentSynchronous(mTargetApp, - ApplicationThreadConstants.BACKUP_MODE_RESTORE_FULL); + FullBackup.KEY_VALUE_DATA_TOKEN.equals(info.domain) + ? ApplicationThreadConstants.BACKUP_MODE_INCREMENTAL + : ApplicationThreadConstants.BACKUP_MODE_RESTORE_FULL); mAgentPackage = pkg; } catch (IOException e) { // fall through to error handling diff --git a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java index c033d98e38966f249799c378a23e360279b89188..4abf18add4694f81f3858a165452edbc2d469e85 100644 --- a/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java +++ b/services/backup/java/com/android/server/backup/utils/AppBackupUtils.java @@ -26,6 +26,8 @@ import android.content.pm.Signature; import android.os.Process; import android.util.Slog; +import com.android.internal.util.ArrayUtils; + /** * Utility methods wrapping operations on ApplicationInfo and PackageInfo. */ @@ -91,9 +93,18 @@ public class AppBackupUtils { } /** - * Old style: directly match the stored vs on device signature blocks. + * Returns whether the signatures stored {@param storedSigs}, coming from the source apk, match + * the signatures of the apk installed on the device, the target apk. If the target resides in + * the system partition we return true. Otherwise it's considered a match if both conditions + * hold: + * + *

          + *
        • Source and target have at least one signature each + *
        • Target contains all signatures in source + *
        + * + * Note that if {@param target} is null we return false. */ - // TODO(b/37977154): Resolve questionable policies. public static boolean signaturesMatch(Signature[] storedSigs, PackageInfo target) { if (target == null) { return false; @@ -111,24 +122,18 @@ public class AppBackupUtils { return true; } - // Allow unsigned apps, but not signed on one device and unsigned on the other - // TODO(b/37977154): is this the right policy? Signature[] deviceSigs = target.signatures; if (MORE_DEBUG) { Slog.v(TAG, "signaturesMatch(): stored=" + storedSigs + " device=" + deviceSigs); } - if ((storedSigs == null || storedSigs.length == 0) - && (deviceSigs == null || deviceSigs.length == 0)) { - return true; - } - // TODO(b/37977154): This allows empty stored signature, is this right? - if (storedSigs == null || deviceSigs == null) { + + // Don't allow unsigned apps on either end + if (ArrayUtils.isEmpty(storedSigs) || ArrayUtils.isEmpty(deviceSigs)) { return false; } - // TODO(b/37977154): this demands that every stored signature match one - // that is present on device, and does not demand the converse. - // Is this this right policy? + // Signatures can be added over time, so the target-device apk needs to contain all the + // source-device apk signatures, but not necessarily the other way around. int nStored = storedSigs.length; int nDevice = deviceSigs.length; diff --git a/services/backup/java/com/android/server/backup/utils/DataStreamCodec.java b/services/backup/java/com/android/server/backup/utils/DataStreamCodec.java new file mode 100644 index 0000000000000000000000000000000000000000..b1e226d5999c964617bda800123c3a6bcf29c9f0 --- /dev/null +++ b/services/backup/java/com/android/server/backup/utils/DataStreamCodec.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.server.backup.utils; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * Implements how to serialize a {@code T} to a {@link DataOutputStream} and how to deserialize a + * {@code T} from a {@link DataInputStream}. + * + * @param Type of object to be serialized / deserialized. + */ +public interface DataStreamCodec { + /** + * Serializes {@code t} to {@code dataOutputStream}. + */ + void serialize(T t, DataOutputStream dataOutputStream) throws IOException; + + /** + * Deserializes {@code t} from {@code dataInputStream}. + */ + T deserialize(DataInputStream dataInputStream) throws IOException; +} + diff --git a/services/backup/java/com/android/server/backup/utils/DataStreamFileCodec.java b/services/backup/java/com/android/server/backup/utils/DataStreamFileCodec.java new file mode 100644 index 0000000000000000000000000000000000000000..7753b0370279c8d71c16790c32b08b45198764d7 --- /dev/null +++ b/services/backup/java/com/android/server/backup/utils/DataStreamFileCodec.java @@ -0,0 +1,78 @@ +/* + * 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.backup.utils; + +import java.io.BufferedOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Provides an interface for serializing an object to a file and deserializing it back again. + * + *

        Serialization logic is implemented as a {@link DataStreamCodec}. + * + * @param The type of object to serialize / deserialize. + */ +public final class DataStreamFileCodec { + private final File mFile; + private final DataStreamCodec mCodec; + + /** + * Constructs an instance to serialize to or deserialize from the given file, with the given + * serialization / deserialization strategy. + */ + public DataStreamFileCodec(File file, DataStreamCodec codec) { + mFile = file; + mCodec = codec; + } + + /** + * Deserializes a {@code T} from the file, automatically closing input streams. + * + * @return The deserialized object. + * @throws IOException if an IO error occurred. + */ + public T deserialize() throws IOException { + try ( + FileInputStream fileInputStream = new FileInputStream(mFile); + DataInputStream dataInputStream = new DataInputStream(fileInputStream) + ) { + return mCodec.deserialize(dataInputStream); + } + } + + /** + * Serializes {@code t} to the file, automatically flushing and closing output streams. + * + * @param t The object to serialize. + * @throws IOException if an IO error occurs. + */ + public void serialize(T t) throws IOException { + try ( + FileOutputStream fileOutputStream = new FileOutputStream(mFile); + BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); + DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream) + ) { + mCodec.serialize(t, dataOutputStream); + dataOutputStream.flush(); + } + } +} diff --git a/services/backup/java/com/android/server/backup/utils/PasswordUtils.java b/services/backup/java/com/android/server/backup/utils/PasswordUtils.java index 12fc927315c241f6402d0badcccfc13f1d591df4..9c5e28393a5321950dfdc1e94974af38ccd186ce 100644 --- a/services/backup/java/com/android/server/backup/utils/PasswordUtils.java +++ b/services/backup/java/com/android/server/backup/utils/PasswordUtils.java @@ -123,8 +123,7 @@ public class PasswordUtils { int rounds) { try { SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(algorithm); - KeySpec - ks = new PBEKeySpec(pwArray, salt, rounds, PBKDF2_KEY_SIZE); + KeySpec ks = new PBEKeySpec(pwArray, salt, rounds, PBKDF2_KEY_SIZE); return keyFactory.generateSecret(ks); } catch (InvalidKeySpecException e) { Slog.e(TAG, "Invalid key spec for PBKDF2!"); diff --git a/services/backup/java/com/android/server/backup/utils/SparseArrayUtils.java b/services/backup/java/com/android/server/backup/utils/SparseArrayUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..954d714f6d606adb0217f05a853fc24bea9fbed7 --- /dev/null +++ b/services/backup/java/com/android/server/backup/utils/SparseArrayUtils.java @@ -0,0 +1,49 @@ +/* + * 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.backup.utils; + +import android.util.SparseArray; + +import java.util.HashSet; + +/** + * Helper functions for manipulating instances of {@link SparseArray}. + */ +public final class SparseArrayUtils { + // Statics only + private SparseArrayUtils() {} + + /** + * Given a {@link SparseArray}, returns a new {@link HashSet} containing every element + * from every set in the array. + * + * @param sets The array of sets from which to take the union. + * @param The type of element contained in the set. + * @return The complete set. + */ + public static HashSet union(SparseArray> sets) { + HashSet unionSet = new HashSet<>(); + int n = sets.size(); + for (int i = 0; i < n; i++) { + HashSet ithSet = sets.valueAt(i); + if (ithSet != null) { + unionSet.addAll(ithSet); + } + } + return unionSet; + } +} diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index f47b0d3c6e73783941426a28bc9e5d41464236cd..f2f01cfa19b0c67f92aabed9d6dc40c775de651a 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -57,6 +57,7 @@ import android.os.UserHandle; import android.provider.Settings; import android.provider.SettingsStringUtil.ComponentNameSet; import android.text.BidiFormatter; +import android.util.ArraySet; import android.util.AtomicFile; import android.util.ExceptionUtils; import android.util.Log; @@ -83,6 +84,7 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.function.Function; @@ -247,9 +249,9 @@ public class CompanionDeviceManagerService extends SystemService implements Bind throws RemoteException { checkCallerIsSystemOr(callingPackage, userId); checkUsesFeature(callingPackage, getCallingUserId()); - return CollectionUtils.map( + return new ArrayList<>(CollectionUtils.map( readAllAssociations(userId, callingPackage), - a -> a.deviceAddress); + a -> a.deviceAddress)); } //TODO also revoke notification access @@ -495,20 +497,20 @@ public class CompanionDeviceManagerService extends SystemService implements Bind new Association(userId, deviceAddress, priviledgedPackage))); } - private void updateAssociations(Function, List> update) { + private void updateAssociations(Function, Set> update) { updateAssociations(update, getCallingUserId()); } - private void updateAssociations(Function, List> update, + private void updateAssociations(Function, Set> update, int userId) { final AtomicFile file = getStorageFileForUser(userId); synchronized (file) { - List associations = readAllAssociations(userId); - final List old = CollectionUtils.copyOf(associations); + Set associations = readAllAssociations(userId); + final Set old = CollectionUtils.copyOf(associations); associations = update.apply(associations); if (size(old) == size(associations)) return; - List finalAssociations = associations; + Set finalAssociations = associations; file.write((out) -> { XmlSerializer xml = Xml.newSerializer(); try { @@ -517,13 +519,12 @@ public class CompanionDeviceManagerService extends SystemService implements Bind xml.startDocument(null, true); xml.startTag(null, XML_TAG_ASSOCIATIONS); - for (int i = 0; i < size(finalAssociations); i++) { - Association association = finalAssociations.get(i); + CollectionUtils.forEach(finalAssociations, association -> { xml.startTag(null, XML_TAG_ASSOCIATION) - .attribute(null, XML_ATTR_PACKAGE, association.companionAppPackage) - .attribute(null, XML_ATTR_DEVICE, association.deviceAddress) - .endTag(null, XML_TAG_ASSOCIATION); - } + .attribute(null, XML_ATTR_PACKAGE, association.companionAppPackage) + .attribute(null, XML_ATTR_DEVICE, association.deviceAddress) + .endTag(null, XML_TAG_ASSOCIATION); + }); xml.endTag(null, XML_TAG_ASSOCIATIONS); xml.endDocument(); @@ -545,17 +546,17 @@ public class CompanionDeviceManagerService extends SystemService implements Bind } @Nullable - private ArrayList readAllAssociations(int userId) { + private Set readAllAssociations(int userId) { return readAllAssociations(userId, null); } @Nullable - private ArrayList readAllAssociations(int userId, @Nullable String packageFilter) { + private Set readAllAssociations(int userId, @Nullable String packageFilter) { final AtomicFile file = getStorageFileForUser(userId); if (!file.getBaseFile().exists()) return null; - ArrayList result = null; + ArraySet result = null; final XmlPullParser parser = Xml.newPullParser(); synchronized (file) { try (FileInputStream in = file.openRead()) { @@ -627,12 +628,10 @@ public class CompanionDeviceManagerService extends SystemService implements Bind public int onCommand(String cmd) { switch (cmd) { case "list": { - ArrayList associations = readAllAssociations(getNextArgInt()); - for (int i = 0; i < size(associations); i++) { - Association a = associations.get(i); - getOutPrintWriter() - .println(a.companionAppPackage + " " + a.deviceAddress); - } + CollectionUtils.forEach( + readAllAssociations(getNextArgInt()), + a -> getOutPrintWriter() + .println(a.companionAppPackage + " " + a.deviceAddress)); } break; case "associate": { diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java index a15992d3faf8ce5166eca28eaf549f7818df6f59..d1cf0255b18c87e816ef5f837a6ec941495f3173 100644 --- a/services/core/java/com/android/server/AlarmManagerService.java +++ b/services/core/java/com/android/server/AlarmManagerService.java @@ -32,7 +32,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PermissionInfo; @@ -85,6 +84,7 @@ import static android.app.AlarmManager.RTC; import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP; import static android.app.AlarmManager.ELAPSED_REALTIME; +import com.android.internal.annotations.GuardedBy; import com.android.internal.util.DumpUtils; import com.android.internal.util.LocalLog; @@ -850,6 +850,7 @@ class AlarmManagerService extends SystemService { static final class InFlight { final PendingIntent mPendingIntent; + final long mWhenElapsed; final IBinder mListener; final WorkSource mWorkSource; final int mUid; @@ -862,6 +863,7 @@ class AlarmManagerService extends SystemService { WorkSource workSource, int uid, String alarmPkg, int alarmType, String tag, long nowELAPSED) { mPendingIntent = pendingIntent; + mWhenElapsed = nowELAPSED; mListener = listener != null ? listener.asBinder() : null; mWorkSource = workSource; mUid = uid; @@ -883,6 +885,7 @@ class AlarmManagerService extends SystemService { public String toString() { return "InFlight{" + "pendingIntent=" + mPendingIntent + + ", when=" + mWhenElapsed + ", workSource=" + mWorkSource + ", uid=" + mUid + ", tag=" + mTag @@ -1567,6 +1570,10 @@ class AlarmManagerService extends SystemService { pw.println(); pw.print(" Broadcast ref count: "); pw.println(mBroadcastRefCount); + pw.print(" PendingIntent send count: "); pw.println(mSendCount); + pw.print(" PendingIntent finish count: "); pw.println(mSendFinishCount); + pw.print(" Listener send count: "); pw.println(mListenerCount); + pw.print(" Listener finish count: "); pw.println(mListenerFinishCount); pw.println(); if (mInFlight.size() > 0) { @@ -2893,11 +2900,10 @@ class AlarmManagerService extends SystemService { } final class UidObserver extends IUidObserver.Stub { - @Override public void onUidStateChanged(int uid, int procState, - long procStateSeq) throws RemoteException { + @Override public void onUidStateChanged(int uid, int procState, long procStateSeq) { } - @Override public void onUidGone(int uid, boolean disabled) throws RemoteException { + @Override public void onUidGone(int uid, boolean disabled) { if (disabled) { synchronized (mLock) { removeForStoppedLocked(uid); @@ -2905,16 +2911,19 @@ class AlarmManagerService extends SystemService { } } - @Override public void onUidActive(int uid) throws RemoteException { + @Override public void onUidActive(int uid) { } - @Override public void onUidIdle(int uid, boolean disabled) throws RemoteException { + @Override public void onUidIdle(int uid, boolean disabled) { if (disabled) { synchronized (mLock) { removeForStoppedLocked(uid); } } } + + @Override public void onUidCachedChanged(int uid, boolean cached) { + } }; private final BroadcastStats getStatsLocked(PendingIntent pi) { @@ -2937,7 +2946,22 @@ class AlarmManagerService extends SystemService { return bs; } + /** + * Canonical count of (operation.send() - onSendFinished()) and + * listener send/complete/timeout invocations. + * Guarded by the usual lock. + */ + @GuardedBy("mLock") + private int mSendCount = 0; + @GuardedBy("mLock") + private int mSendFinishCount = 0; + @GuardedBy("mLock") + private int mListenerCount = 0; + @GuardedBy("mLock") + private int mListenerFinishCount = 0; + class DeliveryTracker extends IAlarmCompleteListener.Stub implements PendingIntent.OnFinished { + private InFlight removeLocked(PendingIntent pi, Intent intent) { for (int i = 0; i < mInFlight.size(); i++) { if (mInFlight.get(i).mPendingIntent == pi) { @@ -3024,7 +3048,7 @@ class AlarmManagerService extends SystemService { @Override public void alarmComplete(IBinder who) { if (who == null) { - Slog.w(TAG, "Invalid alarmComplete: uid=" + Binder.getCallingUid() + mLog.w("Invalid alarmComplete: uid=" + Binder.getCallingUid() + " pid=" + Binder.getCallingPid()); return; } @@ -3039,6 +3063,7 @@ class AlarmManagerService extends SystemService { Slog.i(TAG, "alarmComplete() from " + who); } updateTrackingLocked(inflight); + mListenerFinishCount++; } else { // Delivery timed out, and the timeout handling already took care of // updating our tracking here, so we needn't do anything further. @@ -3059,6 +3084,7 @@ class AlarmManagerService extends SystemService { public void onSendFinished(PendingIntent pi, Intent intent, int resultCode, String resultData, Bundle resultExtras) { synchronized (mLock) { + mSendFinishCount++; updateTrackingLocked(removeLocked(pi, intent)); } } @@ -3075,10 +3101,12 @@ class AlarmManagerService extends SystemService { Slog.i(TAG, "Alarm listener " + who + " timed out in delivery"); } updateTrackingLocked(inflight); + mListenerFinishCount++; } else { if (DEBUG_LISTENER_CALLBACK) { Slog.i(TAG, "Spurious timeout of listener " + who); } + mLog.w("Spurious timeout of listener " + who); } } } @@ -3089,6 +3117,7 @@ class AlarmManagerService extends SystemService { public void deliverLocked(Alarm alarm, long nowELAPSED, boolean allowWhileIdle) { if (alarm.operation != null) { // PendingIntent alarm + mSendCount++; try { alarm.operation.send(getContext(), 0, mBackgroundIntent.putExtra( @@ -3105,10 +3134,12 @@ class AlarmManagerService extends SystemService { // 'finished' callback won't be invoked. We also don't need // to do any wakelock or stats tracking, so we have nothing // left to do here but go on to the next thing. + mSendFinishCount++; return; } } else { // Direct listener callback alarm + mListenerCount++; try { if (DEBUG_LISTENER_CALLBACK) { Slog.v(TAG, "Alarm to uid=" + alarm.uid @@ -3128,6 +3159,7 @@ class AlarmManagerService extends SystemService { // alarm was not possible, so we have no wakelock or timeout or // stats management to do. It threw before we posted the delayed // timeout message, so we're done here. + mListenerFinishCount++; return; } } diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index c8e6e2efb2403ec265a9408705aa678380ec4796..29f8a1130792f5dd3329f5276be038b16faf1994 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -16,22 +16,6 @@ package com.android.server; -import java.io.File; -import java.io.FileDescriptor; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - import android.Manifest; import android.app.ActivityManager; import android.app.ActivityThread; @@ -42,6 +26,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; +import android.content.pm.UserInfo; import android.media.AudioAttributes; import android.os.AsyncTask; import android.os.Binder; @@ -55,6 +40,7 @@ import android.os.ServiceManager; import android.os.ShellCallback; import android.os.ShellCommand; import android.os.UserHandle; +import android.os.UserManager; import android.os.storage.StorageManagerInternal; import android.util.ArrayMap; import android.util.ArraySet; @@ -66,8 +52,8 @@ import android.util.SparseIntArray; import android.util.TimeUtils; import android.util.Xml; -import com.android.internal.app.IAppOpsService; import com.android.internal.app.IAppOpsCallback; +import com.android.internal.app.IAppOpsService; import com.android.internal.os.Zygote; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; @@ -76,10 +62,27 @@ import com.android.internal.util.Preconditions; import com.android.internal.util.XmlUtils; import libcore.util.EmptyArray; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; +import java.io.File; +import java.io.FileDescriptor; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + public class AppOpsService extends IAppOpsService.Stub { static final String TAG = "AppOps"; static final boolean DEBUG = false; @@ -2526,38 +2529,56 @@ public class AppOpsService extends IAppOpsService.Stub { perUserRestrictions = new SparseArray<>(); } - if (perUserRestrictions != null) { - boolean[] userRestrictions = perUserRestrictions.get(userId); - if (userRestrictions == null && restricted) { - userRestrictions = new boolean[AppOpsManager._NUM_OP]; - perUserRestrictions.put(userId, userRestrictions); - } - if (userRestrictions != null && userRestrictions[code] != restricted) { - userRestrictions[code] = restricted; - if (!restricted && isDefault(userRestrictions)) { - perUserRestrictions.remove(userId); - userRestrictions = null; - } - changed = true; + int[] users; + if (userId == UserHandle.USER_ALL) { + List liveUsers = UserManager.get(mContext).getUsers(false); + + users = new int[liveUsers.size()]; + for (int i = 0; i < liveUsers.size(); i++) { + users[i] = liveUsers.get(i).id; } + } else { + users = new int[]{userId}; + } - if (userRestrictions != null) { - final boolean noExcludedPackages = ArrayUtils.isEmpty(excludedPackages); - if (perUserExcludedPackages == null && !noExcludedPackages) { - perUserExcludedPackages = new SparseArray<>(); + if (perUserRestrictions != null) { + int numUsers = users.length; + + for (int i = 0; i < numUsers; i++) { + int thisUserId = users[i]; + + boolean[] userRestrictions = perUserRestrictions.get(thisUserId); + if (userRestrictions == null && restricted) { + userRestrictions = new boolean[AppOpsManager._NUM_OP]; + perUserRestrictions.put(thisUserId, userRestrictions); } - if (perUserExcludedPackages != null && !Arrays.equals(excludedPackages, - perUserExcludedPackages.get(userId))) { - if (noExcludedPackages) { - perUserExcludedPackages.remove(userId); - if (perUserExcludedPackages.size() <= 0) { - perUserExcludedPackages = null; - } - } else { - perUserExcludedPackages.put(userId, excludedPackages); + if (userRestrictions != null && userRestrictions[code] != restricted) { + userRestrictions[code] = restricted; + if (!restricted && isDefault(userRestrictions)) { + perUserRestrictions.remove(thisUserId); + userRestrictions = null; } changed = true; } + + if (userRestrictions != null) { + final boolean noExcludedPackages = ArrayUtils.isEmpty(excludedPackages); + if (perUserExcludedPackages == null && !noExcludedPackages) { + perUserExcludedPackages = new SparseArray<>(); + } + if (perUserExcludedPackages != null && !Arrays.equals(excludedPackages, + perUserExcludedPackages.get(thisUserId))) { + if (noExcludedPackages) { + perUserExcludedPackages.remove(thisUserId); + if (perUserExcludedPackages.size() <= 0) { + perUserExcludedPackages = null; + } + } else { + perUserExcludedPackages.put(thisUserId, excludedPackages); + } + changed = true; + } + } } } diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index e168dd80d64414fac108de993e4f038f250dda21..5228498ba883aebf49d71137234c736ac6ba4066 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -44,7 +44,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.pm.PackageManager; import android.content.res.Configuration; import android.database.ContentObserver; import android.net.ConnectivityManager; @@ -129,7 +128,6 @@ import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.MessageUtils; import com.android.internal.util.WakeupMessage; import com.android.internal.util.XmlUtils; -import com.android.server.LocalServices; import com.android.server.am.BatteryStatsService; import com.android.server.connectivity.DataConnectionStats; import com.android.server.connectivity.IpConnectivityMetrics; @@ -1056,8 +1054,7 @@ public class ConnectivityService extends IConnectivityManager.Stub /** * Apply any relevant filters to {@link NetworkState} for the given UID. For * example, this may mark the network as {@link DetailedState#BLOCKED} based - * on {@link #isNetworkWithLinkPropertiesBlocked}, or - * {@link NetworkInfo#isMetered()} based on network policies. + * on {@link #isNetworkWithLinkPropertiesBlocked}. */ private void filterNetworkStateForUid(NetworkState state, int uid, boolean ignoreBlocked) { if (state == null || state.networkInfo == null || state.linkProperties == null) return; @@ -1068,15 +1065,6 @@ public class ConnectivityService extends IConnectivityManager.Stub if (mLockdownTracker != null) { mLockdownTracker.augmentNetworkInfo(state.networkInfo); } - - // TODO: apply metered state closer to NetworkAgentInfo - final long token = Binder.clearCallingIdentity(); - try { - state.networkInfo.setMetered(mPolicyManager.isNetworkMetered(state)); - } catch (RemoteException e) { - } finally { - Binder.restoreCallingIdentity(token); - } } /** @@ -1346,30 +1334,24 @@ public class ConnectivityService extends IConnectivityManager.Stub } @Override + @Deprecated public NetworkQuotaInfo getActiveNetworkQuotaInfo() { - enforceAccessPermission(); - final int uid = Binder.getCallingUid(); - final long token = Binder.clearCallingIdentity(); - try { - final NetworkState state = getUnfilteredActiveNetworkState(uid); - if (state.networkInfo != null) { - try { - return mPolicyManager.getNetworkQuotaInfo(state); - } catch (RemoteException e) { - } - } - return null; - } finally { - Binder.restoreCallingIdentity(token); - } + Log.w(TAG, "Shame on UID " + Binder.getCallingUid() + + " for calling the hidden API getNetworkQuotaInfo(). Shame!"); + return new NetworkQuotaInfo(); } @Override public boolean isActiveNetworkMetered() { enforceAccessPermission(); - final NetworkInfo info = getActiveNetworkInfo(); - return (info != null) ? info.isMetered() : false; + final NetworkCapabilities caps = getNetworkCapabilities(getActiveNetwork()); + if (caps != null) { + return !caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); + } else { + // Always return the most conservative value + return true; + } } private INetworkManagementEventObserver mDataActivityObserver = new BaseNetworkObserver() { @@ -2790,7 +2772,8 @@ public class ConnectivityService extends IConnectivityManager.Stub enforceAccessPermission(); NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network); - if (nai != null && !nai.networkInfo.isMetered()) { + if (nai != null && nai.networkCapabilities + .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)) { return ConnectivityManager.MULTIPATH_PREFERENCE_UNMETERED; } diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java index 8be859f094582c07011cb44a1d7674908ca0f36e..05c75042f0fae6bf76f57e5f13ec65717b4be1f0 100644 --- a/services/core/java/com/android/server/DeviceIdleController.java +++ b/services/core/java/com/android/server/DeviceIdleController.java @@ -35,7 +35,6 @@ import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.TriggerEvent; import android.hardware.TriggerEventListener; -import android.hardware.display.DisplayManager; import android.location.LocationRequest; import android.location.Location; import android.location.LocationListener; @@ -76,7 +75,6 @@ import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.TimeUtils; import android.util.Xml; -import android.view.Display; import com.android.internal.app.IBatteryStats; import com.android.internal.os.AtomicFile; @@ -122,14 +120,12 @@ public class DeviceIdleController extends SystemService private ConnectivityService mConnectivityService; private AlarmManagerService.LocalService mLocalAlarmManager; private INetworkPolicyManager mNetworkPolicyManager; - private DisplayManager mDisplayManager; private SensorManager mSensorManager; private Sensor mMotionSensor; private LocationManager mLocationManager; private LocationRequest mLocationRequest; private Intent mIdleIntent; private Intent mLightIdleIntent; - private Display mCurDisplay; private AnyMotionDetector mAnyMotionDetector; private boolean mLightEnabled; private boolean mDeepEnabled; @@ -404,19 +400,11 @@ public class DeviceIdleController extends SystemService } }; - private final DisplayManager.DisplayListener mDisplayListener - = new DisplayManager.DisplayListener() { - @Override public void onDisplayAdded(int displayId) { - } - - @Override public void onDisplayRemoved(int displayId) { - } - - @Override public void onDisplayChanged(int displayId) { - if (displayId == Display.DEFAULT_DISPLAY) { - synchronized (DeviceIdleController.this) { - updateDisplayLocked(); - } + private final BroadcastReceiver mInteractivityReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + synchronized (DeviceIdleController.this) { + updateInteractivityLocked(); } } }; @@ -1411,8 +1399,6 @@ public class DeviceIdleController extends SystemService mLocalAlarmManager = getLocalService(AlarmManagerService.LocalService.class); mNetworkPolicyManager = INetworkPolicyManager.Stub.asInterface( ServiceManager.getService(Context.NETWORK_POLICY_SERVICE)); - mDisplayManager = (DisplayManager) getContext().getSystemService( - Context.DISPLAY_SERVICE); mSensorManager = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE); int sigMotionSensorId = getContext().getResources().getInteger( com.android.internal.R.integer.config_autoPowerModeAnyMotionSensor); @@ -1467,11 +1453,16 @@ public class DeviceIdleController extends SystemService filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getContext().registerReceiver(mReceiver, filter); + filter = new IntentFilter(); + filter.addAction(Intent.ACTION_SCREEN_OFF); + filter.addAction(Intent.ACTION_SCREEN_ON); + getContext().registerReceiver(mInteractivityReceiver, filter); + mLocalActivityManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray); mLocalPowerManager.setDeviceIdleWhitelist(mPowerSaveWhitelistAllAppIdArray); mLocalAlarmManager.setDeviceIdleUserWhitelist(mPowerSaveWhitelistUserAppIdArray); - mDisplayManager.registerDisplayListener(mDisplayListener, null); - updateDisplayLocked(); + + updateInteractivityLocked(); } updateConnectivityState(null); } @@ -1837,13 +1828,12 @@ public class DeviceIdleController extends SystemService } } - void updateDisplayLocked() { - mCurDisplay = mDisplayManager.getDisplay(Display.DEFAULT_DISPLAY); - // We consider any situation where the display is showing something to be it on, - // because if there is anything shown we are going to be updating it at some - // frequency so can't be allowed to go into deep sleeps. - boolean screenOn = mCurDisplay.getState() == Display.STATE_ON; - if (DEBUG) Slog.d(TAG, "updateDisplayLocked: screenOn=" + screenOn); + void updateInteractivityLocked() { + // The interactivity state from the power manager tells us whether the display is + // in a state that we need to keep things running so they will update at a normal + // frequency. + boolean screenOn = mPowerManager.isInteractive(); + if (DEBUG) Slog.d(TAG, "updateInteractivityLocked: screenOn=" + screenOn); if (!screenOn && mScreenOn) { mScreenOn = false; if (!mForceIdle) { @@ -3095,7 +3085,6 @@ public class DeviceIdleController extends SystemService pw.print(" mDeepEnabled="); pw.println(mDeepEnabled); pw.print(" mForceIdle="); pw.println(mForceIdle); pw.print(" mMotionSensor="); pw.println(mMotionSensor); - pw.print(" mCurDisplay="); pw.println(mCurDisplay); pw.print(" mScreenOn="); pw.println(mScreenOn); pw.print(" mNetworkConnected="); pw.println(mNetworkConnected); pw.print(" mCharging="); pw.println(mCharging); diff --git a/services/core/java/com/android/server/DropBoxManagerService.java b/services/core/java/com/android/server/DropBoxManagerService.java index e1756d1bf1980b7c4681612b0d186a5a072829dd..887de74f1cf9a7558bad19421f0c6fe50a121165 100644 --- a/services/core/java/com/android/server/DropBoxManagerService.java +++ b/services/core/java/com/android/server/DropBoxManagerService.java @@ -16,6 +16,7 @@ package com.android.server; +import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -29,18 +30,23 @@ import android.os.Debug; import android.os.DropBoxManager; import android.os.FileUtils; import android.os.Handler; +import android.os.Looper; import android.os.Message; import android.os.StatFs; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; +import android.text.TextUtils; import android.text.format.Time; +import android.util.ArrayMap; import android.util.Slog; import libcore.io.IoUtils; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.IDropBoxManagerService; import com.android.internal.util.DumpUtils; +import com.android.internal.util.ObjectUtils; import java.io.BufferedOutputStream; import java.io.File; @@ -52,7 +58,7 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.util.ArrayList; -import java.util.HashMap; +import java.util.Objects; import java.util.SortedSet; import java.util.TreeSet; import java.util.zip.GZIPOutputStream; @@ -65,6 +71,7 @@ public final class DropBoxManagerService extends SystemService { private static final String TAG = "DropBoxManagerService"; private static final int DEFAULT_AGE_SECONDS = 3 * 86400; private static final int DEFAULT_MAX_FILES = 1000; + private static final int DEFAULT_MAX_FILES_LOWRAM = 300; private static final int DEFAULT_QUOTA_KB = 5 * 1024; private static final int DEFAULT_QUOTA_PERCENT = 10; private static final int DEFAULT_RESERVE_PERCENT = 10; @@ -87,7 +94,7 @@ public final class DropBoxManagerService extends SystemService { // Accounting of all currently written log files (set in init()). private FileList mAllFiles = null; - private HashMap mFilesByTag = null; + private ArrayMap mFilesByTag = null; // Various bits of disk information @@ -101,6 +108,8 @@ public final class DropBoxManagerService extends SystemService { // Provide a way to perform sendBroadcast asynchronously to avoid deadlocks. private final Handler mHandler; + private int mMaxFiles = -1; // -1 means uninitialized. + /** Receives events that might indicate a need to clean up files. */ private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -153,7 +162,7 @@ public final class DropBoxManagerService extends SystemService { * @param context to use for receiving free space & gservices intents */ public DropBoxManagerService(final Context context) { - this(context, new File("/data/system/dropbox")); + this(context, new File("/data/system/dropbox"), FgThread.get().getLooper()); } /** @@ -163,11 +172,12 @@ public final class DropBoxManagerService extends SystemService { * @param context to use for receiving free space & gservices intents * @param path to store drop box entries in */ - public DropBoxManagerService(final Context context, File path) { + @VisibleForTesting + public DropBoxManagerService(final Context context, File path, Looper looper) { super(context); mDropBoxDir = path; mContentResolver = getContext().getContentResolver(); - mHandler = new Handler() { + mHandler = new Handler(looper) { @Override public void handleMessage(Message msg) { if (msg.what == MSG_SEND_BROADCAST) { @@ -338,11 +348,12 @@ public final class DropBoxManagerService extends SystemService { if ((entry.flags & DropBoxManager.IS_EMPTY) != 0) { return new DropBoxManager.Entry(entry.tag, entry.timestampMillis); } + final File file = entry.getFile(mDropBoxDir); try { return new DropBoxManager.Entry( - entry.tag, entry.timestampMillis, entry.file, entry.flags); + entry.tag, entry.timestampMillis, file, entry.flags); } catch (IOException e) { - Slog.e(TAG, "Can't read: " + entry.file, e); + Slog.wtf(TAG, "Can't read: " + file, e); // Continue to next file } } @@ -387,6 +398,7 @@ public final class DropBoxManagerService extends SystemService { } out.append("Drop box contents: ").append(mAllFiles.contents.size()).append(" entries\n"); + out.append("Max entries: ").append(mMaxFiles).append("\n"); if (!searchArgs.isEmpty()) { out.append("Searching for:"); @@ -410,7 +422,9 @@ public final class DropBoxManagerService extends SystemService { numFound++; if (doPrint) out.append("========================================\n"); out.append(date).append(" ").append(entry.tag == null ? "(no tag)" : entry.tag); - if (entry.file == null) { + + final File file = entry.getFile(mDropBoxDir); + if (file == null) { out.append(" (no file)\n"); continue; } else if ((entry.flags & DropBoxManager.IS_EMPTY) != 0) { @@ -420,12 +434,12 @@ public final class DropBoxManagerService extends SystemService { out.append(" ("); if ((entry.flags & DropBoxManager.IS_GZIPPED) != 0) out.append("compressed "); out.append((entry.flags & DropBoxManager.IS_TEXT) != 0 ? "text" : "data"); - out.append(", ").append(entry.file.length()).append(" bytes)\n"); + out.append(", ").append(file.length()).append(" bytes)\n"); } if (doFile || (doPrint && (entry.flags & DropBoxManager.IS_TEXT) == 0)) { if (!doPrint) out.append(" "); - out.append(entry.file.getPath()).append("\n"); + out.append(file.getPath()).append("\n"); } if ((entry.flags & DropBoxManager.IS_TEXT) != 0 && (doPrint || !doFile)) { @@ -433,7 +447,7 @@ public final class DropBoxManagerService extends SystemService { InputStreamReader isr = null; try { dbe = new DropBoxManager.Entry( - entry.tag, entry.timestampMillis, entry.file, entry.flags); + entry.tag, entry.timestampMillis, file, entry.flags); if (doPrint) { isr = new InputStreamReader(dbe.getInputStream()); @@ -466,7 +480,7 @@ public final class DropBoxManagerService extends SystemService { } } catch (IOException e) { out.append("*** ").append(e.toString()).append("\n"); - Slog.e(TAG, "Can't read: " + entry.file, e); + Slog.e(TAG, "Can't read: " + file, e); } finally { if (dbe != null) dbe.close(); if (isr != null) { @@ -509,29 +523,37 @@ public final class DropBoxManagerService extends SystemService { } } - /** Metadata describing an on-disk log file. */ - private static final class EntryFile implements Comparable { + /** + * Metadata describing an on-disk log file. + * + * Note its instances do no have knowledge on what directory they're stored, just to save + * 4/8 bytes per instance. Instead, {@link #getFile} takes a directory so it can build a + * fullpath. + */ + @VisibleForTesting + static final class EntryFile implements Comparable { public final String tag; public final long timestampMillis; public final int flags; - public final File file; public final int blocks; /** Sorts earlier EntryFile instances before later ones. */ public final int compareTo(EntryFile o) { - if (timestampMillis < o.timestampMillis) return -1; - if (timestampMillis > o.timestampMillis) return 1; - if (file != null && o.file != null) return file.compareTo(o.file); - if (o.file != null) return -1; - if (file != null) return 1; - if (this == o) return 0; - if (hashCode() < o.hashCode()) return -1; - if (hashCode() > o.hashCode()) return 1; - return 0; + int comp = Long.compare(timestampMillis, o.timestampMillis); + if (comp != 0) return comp; + + comp = ObjectUtils.compare(tag, o.tag); + if (comp != 0) return comp; + + comp = Integer.compare(flags, o.flags); + if (comp != 0) return comp; + + return Integer.compare(hashCode(), o.hashCode()); } /** * Moves an existing temporary file to a new log filename. + * * @param temp file to rename * @param dir to store file in * @param tag to use for new log file name @@ -544,76 +566,94 @@ public final class DropBoxManagerService extends SystemService { int flags, int blockSize) throws IOException { if ((flags & DropBoxManager.IS_EMPTY) != 0) throw new IllegalArgumentException(); - this.tag = tag; + this.tag = TextUtils.safeIntern(tag); this.timestampMillis = timestampMillis; this.flags = flags; - this.file = new File(dir, Uri.encode(tag) + "@" + timestampMillis + - ((flags & DropBoxManager.IS_TEXT) != 0 ? ".txt" : ".dat") + - ((flags & DropBoxManager.IS_GZIPPED) != 0 ? ".gz" : "")); - if (!temp.renameTo(this.file)) { - throw new IOException("Can't rename " + temp + " to " + this.file); + final File file = this.getFile(dir); + if (!temp.renameTo(file)) { + throw new IOException("Can't rename " + temp + " to " + file); } - this.blocks = (int) ((this.file.length() + blockSize - 1) / blockSize); + this.blocks = (int) ((file.length() + blockSize - 1) / blockSize); } /** * Creates a zero-length tombstone for a file whose contents were lost. + * * @param dir to store file in * @param tag to use for new log file name * @param timestampMillis of log entry * @throws IOException if the file can't be created. */ public EntryFile(File dir, String tag, long timestampMillis) throws IOException { - this.tag = tag; + this.tag = TextUtils.safeIntern(tag); this.timestampMillis = timestampMillis; this.flags = DropBoxManager.IS_EMPTY; - this.file = new File(dir, Uri.encode(tag) + "@" + timestampMillis + ".lost"); this.blocks = 0; - new FileOutputStream(this.file).close(); + new FileOutputStream(getFile(dir)).close(); } /** * Extracts metadata from an existing on-disk log filename. + * + * Note when a filename is not recognizable, it will create an instance that + * {@link #hasFile()} would return false on, and also remove the file. + * * @param file name of existing log file * @param blockSize to use for space accounting */ public EntryFile(File file, int blockSize) { - this.file = file; - this.blocks = (int) ((this.file.length() + blockSize - 1) / blockSize); + + boolean parseFailure = false; String name = file.getName(); - int at = name.lastIndexOf('@'); + int flags = 0; + String tag = null; + long millis = 0; + + final int at = name.lastIndexOf('@'); if (at < 0) { - this.tag = null; - this.timestampMillis = 0; - this.flags = DropBoxManager.IS_EMPTY; - return; + parseFailure = true; + } else { + tag = Uri.decode(name.substring(0, at)); + if (name.endsWith(".gz")) { + flags |= DropBoxManager.IS_GZIPPED; + name = name.substring(0, name.length() - 3); + } + if (name.endsWith(".lost")) { + flags |= DropBoxManager.IS_EMPTY; + name = name.substring(at + 1, name.length() - 5); + } else if (name.endsWith(".txt")) { + flags |= DropBoxManager.IS_TEXT; + name = name.substring(at + 1, name.length() - 4); + } else if (name.endsWith(".dat")) { + name = name.substring(at + 1, name.length() - 4); + } else { + parseFailure = true; + } + if (!parseFailure) { + try { + millis = Long.parseLong(name); + } catch (NumberFormatException e) { + parseFailure = true; + } + } } + if (parseFailure) { + Slog.wtf(TAG, "Invalid filename: " + file); - int flags = 0; - this.tag = Uri.decode(name.substring(0, at)); - if (name.endsWith(".gz")) { - flags |= DropBoxManager.IS_GZIPPED; - name = name.substring(0, name.length() - 3); - } - if (name.endsWith(".lost")) { - flags |= DropBoxManager.IS_EMPTY; - name = name.substring(at + 1, name.length() - 5); - } else if (name.endsWith(".txt")) { - flags |= DropBoxManager.IS_TEXT; - name = name.substring(at + 1, name.length() - 4); - } else if (name.endsWith(".dat")) { - name = name.substring(at + 1, name.length() - 4); - } else { + // Remove the file and return an empty instance. + file.delete(); + this.tag = null; this.flags = DropBoxManager.IS_EMPTY; this.timestampMillis = 0; + this.blocks = 0; return; } - this.flags = flags; - long millis; - try { millis = Long.parseLong(name); } catch (NumberFormatException e) { millis = 0; } + this.blocks = (int) ((file.length() + blockSize - 1) / blockSize); + this.tag = TextUtils.safeIntern(tag); + this.flags = flags; this.timestampMillis = millis; } @@ -625,9 +665,50 @@ public final class DropBoxManagerService extends SystemService { this.tag = null; this.timestampMillis = millis; this.flags = DropBoxManager.IS_EMPTY; - this.file = null; this.blocks = 0; } + + /** + * @return whether an entry actually has a backing file, or it's an empty "tombstone" + * entry. + */ + public boolean hasFile() { + return tag != null; + } + + /** @return File extension for the flags. */ + private String getExtension() { + if ((flags & DropBoxManager.IS_EMPTY) != 0) { + return ".lost"; + } + return ((flags & DropBoxManager.IS_TEXT) != 0 ? ".txt" : ".dat") + + ((flags & DropBoxManager.IS_GZIPPED) != 0 ? ".gz" : ""); + } + + /** + * @return filename for this entry without the pathname. + */ + public String getFilename() { + return hasFile() ? Uri.encode(tag) + "@" + timestampMillis + getExtension() : null; + } + + /** + * Get a full-path {@link File} representing this entry. + * @param dir Parent directly. The caller needs to pass it because {@link EntryFile}s don't + * know in which directory they're stored. + */ + public File getFile(File dir) { + return hasFile() ? new File(dir, getFilename()) : null; + } + + /** + * If an entry has a backing file, remove it. + */ + public void deleteFile(File dir) { + if (hasFile()) { + getFile(dir).delete(); + } + } } /////////////////////////////////////////////////////////////////////////// @@ -651,7 +732,7 @@ public final class DropBoxManagerService extends SystemService { if (files == null) throw new IOException("Can't list files: " + mDropBoxDir); mAllFiles = new FileList(); - mFilesByTag = new HashMap(); + mFilesByTag = new ArrayMap<>(); // Scan pre-existing files. for (File file : files) { @@ -662,16 +743,12 @@ public final class DropBoxManagerService extends SystemService { } EntryFile entry = new EntryFile(file, mBlockSize); - if (entry.tag == null) { - Slog.w(TAG, "Unrecognized file: " + file); - continue; - } else if (entry.timestampMillis == 0) { - Slog.w(TAG, "Invalid filename: " + file); - file.delete(); - continue; - } - enrollEntry(entry); + if (entry.hasFile()) { + // Enroll only when the filename is valid. Otherwise the above constructor + // has removed the file already. + enrollEntry(entry); + } } } } @@ -684,11 +761,11 @@ public final class DropBoxManagerService extends SystemService { // mFilesByTag is used for trimming, so don't list empty files. // (Zero-length/lost files are trimmed by date from mAllFiles.) - if (entry.tag != null && entry.file != null && entry.blocks > 0) { + if (entry.hasFile() && entry.blocks > 0) { FileList tagFiles = mFilesByTag.get(entry.tag); if (tagFiles == null) { tagFiles = new FileList(); - mFilesByTag.put(entry.tag, tagFiles); + mFilesByTag.put(TextUtils.safeIntern(entry.tag), tagFiles); } tagFiles.contents.add(entry); tagFiles.blocks += entry.blocks; @@ -722,8 +799,8 @@ public final class DropBoxManagerService extends SystemService { tagFiles.blocks -= late.blocks; } if ((late.flags & DropBoxManager.IS_EMPTY) == 0) { - enrollEntry(new EntryFile( - late.file, mDropBoxDir, late.tag, t++, late.flags, mBlockSize)); + enrollEntry(new EntryFile(late.getFile(mDropBoxDir), mDropBoxDir, + late.tag, t++, late.flags, mBlockSize)); } else { enrollEntry(new EntryFile(mDropBoxDir, late.tag, t++)); } @@ -747,17 +824,21 @@ public final class DropBoxManagerService extends SystemService { int ageSeconds = Settings.Global.getInt(mContentResolver, Settings.Global.DROPBOX_AGE_SECONDS, DEFAULT_AGE_SECONDS); - int maxFiles = Settings.Global.getInt(mContentResolver, - Settings.Global.DROPBOX_MAX_FILES, DEFAULT_MAX_FILES); + mMaxFiles = Settings.Global.getInt(mContentResolver, + Settings.Global.DROPBOX_MAX_FILES, + (ActivityManager.isLowRamDeviceStatic() + ? DEFAULT_MAX_FILES_LOWRAM : DEFAULT_MAX_FILES)); long cutoffMillis = System.currentTimeMillis() - ageSeconds * 1000; while (!mAllFiles.contents.isEmpty()) { EntryFile entry = mAllFiles.contents.first(); - if (entry.timestampMillis > cutoffMillis && mAllFiles.contents.size() < maxFiles) break; + if (entry.timestampMillis > cutoffMillis && mAllFiles.contents.size() < mMaxFiles) { + break; + } FileList tag = mFilesByTag.get(entry.tag); if (tag != null && tag.contents.remove(entry)) tag.blocks -= entry.blocks; if (mAllFiles.contents.remove(entry)) mAllFiles.blocks -= entry.blocks; - if (entry.file != null) entry.file.delete(); + entry.deleteFile(mDropBoxDir); } // Compute overall quota (a fraction of available free space) in blocks. @@ -823,7 +904,7 @@ public final class DropBoxManagerService extends SystemService { if (mAllFiles.contents.remove(entry)) mAllFiles.blocks -= entry.blocks; try { - if (entry.file != null) entry.file.delete(); + entry.deleteFile(mDropBoxDir); enrollEntry(new EntryFile(mDropBoxDir, entry.tag, entry.timestampMillis)); } catch (IOException e) { Slog.e(TAG, "Can't write tombstone file", e); diff --git a/services/core/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags index b516a91715d53d16fdbf2e97a1fd1ba295a51564..d3ce306aa24274c097b2f3f4fccd9f51a452afa3 100644 --- a/services/core/java/com/android/server/EventLogTags.logtags +++ b/services/core/java/com/android/server/EventLogTags.logtags @@ -71,7 +71,7 @@ option java_package com.android.server # when a notification action button has been clicked 27521 notification_action_clicked (key|3),(action_index|1),(lifespan|1),(freshness|1),(exposure|1) # when a notification has been canceled -27530 notification_canceled (key|3),(reason|1),(lifespan|1),(freshness|1),(exposure|1) +27530 notification_canceled (key|3),(reason|1),(lifespan|1),(freshness|1),(exposure|1),(listener|3) # replaces 27510 with a row per notification 27531 notification_visibility (key|3),(visibile|1),(lifespan|1),(freshness|1),(exposure|1),(rank|1) # a notification emited noise, vibration, or light diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java index 6339c9e47b1e9c3986aeae8440f0b7df26c6fc1e..3ee798b18fd95d97e9a848d240c390466180cc29 100644 --- a/services/core/java/com/android/server/InputMethodManagerService.java +++ b/services/core/java/com/android/server/InputMethodManagerService.java @@ -50,6 +50,7 @@ import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; import android.annotation.BinderThread; +import android.annotation.ColorInt; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -213,8 +214,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Context.BIND_AUTO_CREATE | Context.BIND_NOT_VISIBLE | Context.BIND_NOT_FOREGROUND - | Context.BIND_IMPORTANT_BACKGROUND - | Context.BIND_SHOWING_UI; + | Context.BIND_IMPORTANT_BACKGROUND; /** * Binding flags used only while the {@link InputMethodService} is showing window. @@ -222,7 +222,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub private static final int IME_VISIBLE_BIND_FLAGS = Context.BIND_AUTO_CREATE | Context.BIND_TREAT_LIKE_ACTIVITY - | Context.BIND_FOREGROUND_SERVICE; + | Context.BIND_FOREGROUND_SERVICE + | Context.BIND_SHOWING_UI; @Retention(SOURCE) @IntDef({HardKeyboardBehavior.WIRELESS_AFFORDANCE, HardKeyboardBehavior.WIRED_AFFORDANCE}) @@ -231,6 +232,13 @@ public class InputMethodManagerService extends IInputMethodManager.Stub int WIRED_AFFORDANCE = 1; } + /** + * A protected broadcast intent action for internal use for {@link PendingIntent} in + * the notification. + */ + private static final String ACTION_SHOW_INPUT_METHOD_PICKER = + "com.android.server.InputMethodManagerService.SHOW_INPUT_METHOD_PICKER"; + final Context mContext; final Resources mRes; final Handler mHandler; @@ -836,6 +844,16 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) { onActionLocaleChanged(); + } else if (ACTION_SHOW_INPUT_METHOD_PICKER.equals(action)) { + // ACTION_SHOW_INPUT_METHOD_PICKER action is a protected-broadcast and it is + // guaranteed to be send only from the system, so that there is no need for extra + // security check such as + // {@link #canShowInputMethodPickerLocked(IInputMethodClient)}. + mHandler.obtainMessage( + MSG_SHOW_IM_SUBTYPE_PICKER, + InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES, + 0 /* arg2 */) + .sendToTarget(); } else { Slog.w(TAG, "Unexpected intent " + intent); } @@ -1285,6 +1303,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Bundle extras = new Bundle(); extras.putBoolean(Notification.EXTRA_ALLOW_DURING_SETUP, true); + @ColorInt final int accentColor = mContext.getColor( + com.android.internal.R.color.system_notification_accent_color); mImeSwitcherNotification = new Notification.Builder(mContext, SystemNotificationChannels.VIRTUAL_KEYBOARD) .setSmallIcon(com.android.internal.R.drawable.ic_notification_ime_default) @@ -1292,9 +1312,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub .setOngoing(true) .addExtras(extras) .setCategory(Notification.CATEGORY_SYSTEM) - .setColor(com.android.internal.R.color.system_notification_accent_color); + .setColor(accentColor); - Intent intent = new Intent(Settings.ACTION_SHOW_INPUT_METHOD_PICKER); + Intent intent = new Intent(ACTION_SHOW_INPUT_METHOD_PICKER) + .setPackage(mContext.getPackageName()); mImeSwitchPendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0); mShowOngoingImeSwitcherForPhones = false; @@ -1445,6 +1466,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub broadcastFilter.addAction(Intent.ACTION_USER_REMOVED); broadcastFilter.addAction(Intent.ACTION_SETTING_RESTORED); broadcastFilter.addAction(Intent.ACTION_LOCALE_CHANGED); + broadcastFilter.addAction(ACTION_SHOW_INPUT_METHOD_PICKER); mContext.registerReceiver(new ImmsBroadcastReceiver(), broadcastFilter); final String defaultImiId = mSettings.getSelectedInputMethod(); @@ -2791,6 +2813,27 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return res; } + private boolean canShowInputMethodPickerLocked(IInputMethodClient client) { + final int uid = Binder.getCallingUid(); + if (UserHandle.getAppId(uid) == Process.SYSTEM_UID) { + return true; + } else if (mCurClient != null && client != null + && mCurClient.client.asBinder() == client.asBinder()) { + return true; + } else if (mCurIntent != null && InputMethodUtils.checkIfPackageBelongsToUid( + mAppOpsManager, + uid, + mCurIntent.getComponent().getPackageName())) { + return true; + } else if (mContext.checkCallingPermission( + android.Manifest.permission.WRITE_SECURE_SETTINGS) + == PackageManager.PERMISSION_GRANTED) { + return true; + } + + return false; + } + @Override public void showInputMethodPickerFromClient( IInputMethodClient client, int auxiliarySubtypeMode) { @@ -2798,10 +2841,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub return; } synchronized (mMethodMap) { - if (mCurClient == null || client == null - || mCurClient.client.asBinder() != client.asBinder()) { + if(!canShowInputMethodPickerLocked(client)) { Slog.w(TAG, "Ignoring showInputMethodPickerFromClient of uid " + Binder.getCallingUid() + ": " + client); + return; } // Always call subtype picker, because subtype picker is a superset of input method diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index a4e673d975e449c8368185c3101ee1ecb14e1f0c..966e553a6396c478824aad6c0d6bd94b5ed6c368 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -325,58 +325,13 @@ public class LocationManagerService extends ILocationManager.Stub { ActivityManager.OnUidImportanceListener uidImportanceListener = new ActivityManager.OnUidImportanceListener() { @Override - public void onUidImportance(int uid, int importance) { - boolean foreground = isImportanceForeground(importance); - HashSet affectedProviders = new HashSet<>(mRecordsByProvider.size()); - synchronized (mLock) { - for (Entry> entry - : mRecordsByProvider.entrySet()) { - String provider = entry.getKey(); - for (UpdateRecord record : entry.getValue()) { - if (record.mReceiver.mIdentity.mUid == uid - && record.mIsForegroundUid != foreground) { - if (D) Log.d(TAG, "request from uid " + uid + " is now " - + (foreground ? "foreground" : "background)")); - record.mIsForegroundUid = foreground; - - if (!isThrottlingExemptLocked(record.mReceiver.mIdentity)) { - affectedProviders.add(provider); - } - } - } - } - for (String provider : affectedProviders) { - applyRequirementsLocked(provider); - } - - for (Entry entry - : mGnssMeasurementsListeners.entrySet()) { - if (entry.getValue().mUid == uid) { - if (D) Log.d(TAG, "gnss measurements listener from uid " + uid - + " is now " + (foreground ? "foreground" : "background)")); - if (foreground || isThrottlingExemptLocked(entry.getValue())) { - mGnssMeasurementsProvider.addListener(entry.getKey()); - } else { - mGnssMeasurementsProvider.removeListener(entry.getKey()); - } - } - } - - for (Entry entry - : mGnssNavigationMessageListeners.entrySet()) { - if (entry.getValue().mUid == uid) { - if (D) Log.d(TAG, "gnss navigation message listener from uid " - + uid + " is now " - + (foreground ? "foreground" : "background)")); - if (foreground || isThrottlingExemptLocked(entry.getValue())) { - mGnssNavigationMessageProvider.addListener(entry.getKey()); - } else { - mGnssNavigationMessageProvider.removeListener(entry.getKey()); - } - } + public void onUidImportance(final int uid, final int importance) { + mLocationHandler.post(new Runnable() { + @Override + public void run() { + onUidImportanceChanged(uid, importance); } - } - + }); } }; mActivityManager.addOnUidImportanceListener(uidImportanceListener, @@ -456,6 +411,59 @@ public class LocationManagerService extends ILocationManager.Stub { }, UserHandle.ALL, intentFilter, null, mLocationHandler); } + private void onUidImportanceChanged(int uid, int importance) { + boolean foreground = isImportanceForeground(importance); + HashSet affectedProviders = new HashSet<>(mRecordsByProvider.size()); + synchronized (mLock) { + for (Entry> entry + : mRecordsByProvider.entrySet()) { + String provider = entry.getKey(); + for (UpdateRecord record : entry.getValue()) { + if (record.mReceiver.mIdentity.mUid == uid + && record.mIsForegroundUid != foreground) { + if (D) Log.d(TAG, "request from uid " + uid + " is now " + + (foreground ? "foreground" : "background)")); + record.mIsForegroundUid = foreground; + + if (!isThrottlingExemptLocked(record.mReceiver.mIdentity)) { + affectedProviders.add(provider); + } + } + } + } + for (String provider : affectedProviders) { + applyRequirementsLocked(provider); + } + + for (Entry entry + : mGnssMeasurementsListeners.entrySet()) { + if (entry.getValue().mUid == uid) { + if (D) Log.d(TAG, "gnss measurements listener from uid " + uid + + " is now " + (foreground ? "foreground" : "background)")); + if (foreground || isThrottlingExemptLocked(entry.getValue())) { + mGnssMeasurementsProvider.addListener(entry.getKey()); + } else { + mGnssMeasurementsProvider.removeListener(entry.getKey()); + } + } + } + + for (Entry entry + : mGnssNavigationMessageListeners.entrySet()) { + if (entry.getValue().mUid == uid) { + if (D) Log.d(TAG, "gnss navigation message listener from uid " + + uid + " is now " + + (foreground ? "foreground" : "background)")); + if (foreground || isThrottlingExemptLocked(entry.getValue())) { + mGnssNavigationMessageProvider.addListener(entry.getKey()); + } else { + mGnssNavigationMessageProvider.removeListener(entry.getKey()); + } + } + } + } + } + private static boolean isImportanceForeground(int importance) { return importance <= FOREGROUND_IMPORTANCE_CUTOFF; } diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 7c73818a70fa3923dcea0e9d0386979164b66205..8a15ded2960f69db789c21f10a5fd5ecb7521f8c 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -2750,6 +2750,42 @@ public class NetworkManagementService extends INetworkManagementService.Stub return failures; } + @Override + public boolean isNetworkRestricted(int uid) { + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + return isNetworkRestrictedInternal(uid); + } + + private boolean isNetworkRestrictedInternal(int uid) { + synchronized (mRulesLock) { + if (getFirewallChainState(FIREWALL_CHAIN_STANDBY) + && mUidFirewallStandbyRules.get(uid) == FIREWALL_RULE_DENY) { + if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of app standby mode"); + return true; + } + if (getFirewallChainState(FIREWALL_CHAIN_DOZABLE) + && mUidFirewallDozableRules.get(uid) != FIREWALL_RULE_ALLOW) { + if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of device idle mode"); + return true; + } + if (getFirewallChainState(FIREWALL_CHAIN_POWERSAVE) + && mUidFirewallPowerSaveRules.get(uid) != FIREWALL_RULE_ALLOW) { + if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of power saver mode"); + return true; + } + if (mUidRejectOnMetered.get(uid)) { + if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of no metered data" + + " in the background"); + return true; + } + if (mDataSaverMode && !mUidAllowOnMetered.get(uid)) { + if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of data saver mode"); + return true; + } + return false; + } + } + private void setFirewallChainState(int chain, boolean state) { synchronized (mRulesLock) { mFirewallChainStates.put(chain, state); @@ -2766,33 +2802,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub class LocalService extends NetworkManagementInternal { @Override public boolean isNetworkRestrictedForUid(int uid) { - synchronized (mRulesLock) { - if (getFirewallChainState(FIREWALL_CHAIN_STANDBY) - && mUidFirewallStandbyRules.get(uid) == FIREWALL_RULE_DENY) { - if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of app standby mode"); - return true; - } - if (getFirewallChainState(FIREWALL_CHAIN_DOZABLE) - && mUidFirewallDozableRules.get(uid) != FIREWALL_RULE_ALLOW) { - if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of device idle mode"); - return true; - } - if (getFirewallChainState(FIREWALL_CHAIN_POWERSAVE) - && mUidFirewallPowerSaveRules.get(uid) != FIREWALL_RULE_ALLOW) { - if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of power saver mode"); - return true; - } - if (mUidRejectOnMetered.get(uid)) { - if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of no metered data" - + " in the background"); - return true; - } - if (mDataSaverMode && !mUidAllowOnMetered.get(uid)) { - if (DBG) Slog.d(TAG, "Uid " + uid + " restricted because of data saver mode"); - return true; - } - return false; - } + return isNetworkRestrictedInternal(uid); } } diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java index fdc0bba09a5257797ee32f5126c3e7df17ded60b..e438620faeb7767266a53d402358cd56afa91db8 100644 --- a/services/core/java/com/android/server/NetworkScoreService.java +++ b/services/core/java/com/android/server/NetworkScoreService.java @@ -27,6 +27,7 @@ import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.database.ContentObserver; +import android.location.LocationManager; import android.net.INetworkRecommendationProvider; import android.net.INetworkScoreCache; import android.net.INetworkScoreService; @@ -113,6 +114,16 @@ public class NetworkScoreService extends INetworkScoreService.Stub { } }; + private BroadcastReceiver mLocationModeReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final String action = intent.getAction(); + if (LocationManager.MODE_CHANGED_ACTION.equals(action)) { + refreshBinding(); + } + } + }; + /** * Clears scores when the active scorer package is no longer valid and * manages the service connection. @@ -241,6 +252,10 @@ public class NetworkScoreService extends INetworkScoreService.Stub { mUserIntentReceiver, UserHandle.SYSTEM, filter, null /* broadcastPermission*/, null /* scheduler */); mHandler = new ServiceHandler(looper); + IntentFilter locationModeFilter = new IntentFilter(LocationManager.MODE_CHANGED_ACTION); + mContext.registerReceiverAsUser( + mLocationModeReceiver, UserHandle.SYSTEM, locationModeFilter, + null /* broadcastPermission*/, mHandler); mContentObserver = new DispatchingContentObserver(context, mHandler); mServiceConnProducer = serviceConnProducer; } @@ -625,13 +640,13 @@ public class NetworkScoreService extends INetworkScoreService.Stub { } } - private boolean callerCanRequestScores() { + private boolean canCallerRequestScores() { // REQUEST_NETWORK_SCORES is a signature only permission. return mContext.checkCallingOrSelfPermission(permission.REQUEST_NETWORK_SCORES) == PackageManager.PERMISSION_GRANTED; } - private boolean callerCanScoreNetworks() { + private boolean canCallerScoreNetworks() { return mContext.checkCallingOrSelfPermission(permission.SCORE_NETWORKS) == PackageManager.PERMISSION_GRANTED; } @@ -639,7 +654,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public boolean clearScores() { // Only the active scorer or the system should be allowed to flush all scores. - if (isCallerActiveScorer(getCallingUid()) || callerCanRequestScores()) { + if (isCallerActiveScorer(getCallingUid()) || canCallerRequestScores()) { final long token = Binder.clearCallingIdentity(); try { clearInternal(); @@ -656,7 +671,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public boolean setActiveScorer(String packageName) { // Only the system can set the active scorer - if (!isCallerSystemProcess(getCallingUid()) && !callerCanScoreNetworks()) { + if (!isCallerSystemProcess(getCallingUid()) && !canCallerScoreNetworks()) { throw new SecurityException( "Caller is neither the system process or a network scorer."); } @@ -690,11 +705,17 @@ public class NetworkScoreService extends INetworkScoreService.Stub { */ @Override public String getActiveScorerPackage() { - synchronized (mServiceConnectionLock) { - if (mServiceConnection != null) { - return mServiceConnection.getPackageName(); + if (canCallerRequestScores() || canCallerScoreNetworks()) { + synchronized (mServiceConnectionLock) { + if (mServiceConnection != null) { + return mServiceConnection.getPackageName(); + } } + } else { + throw new SecurityException( + "Caller is not a network scorer/requester."); } + return null; } @@ -704,7 +725,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public NetworkScorerAppData getActiveScorer() { // Only the system can access this data. - if (isCallerSystemProcess(getCallingUid()) || callerCanRequestScores()) { + if (isCallerSystemProcess(getCallingUid()) || canCallerRequestScores()) { synchronized (mServiceConnectionLock) { if (mServiceConnection != null) { return mServiceConnection.getAppData(); @@ -725,7 +746,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public List getAllValidScorers() { // Only the system can access this data. - if (!isCallerSystemProcess(getCallingUid()) && !callerCanRequestScores()) { + if (!isCallerSystemProcess(getCallingUid()) && !canCallerRequestScores()) { throw new SecurityException( "Caller is neither the system process nor a score requester."); } @@ -736,7 +757,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public void disableScoring() { // Only the active scorer or the system should be allowed to disable scoring. - if (!isCallerActiveScorer(getCallingUid()) && !callerCanRequestScores()) { + if (!isCallerActiveScorer(getCallingUid()) && !canCallerRequestScores()) { throw new SecurityException( "Caller is neither the active scorer nor the scorer manager."); } diff --git a/services/core/java/com/android/server/NetworkScorerAppManager.java b/services/core/java/com/android/server/NetworkScorerAppManager.java index 42777bf33bd38646c873000aa17420659534e796..bfd4247abf40f1510622c06f7f6d6927fa998c27 100644 --- a/services/core/java/com/android/server/NetworkScorerAppManager.java +++ b/services/core/java/com/android/server/NetworkScorerAppManager.java @@ -18,6 +18,7 @@ package com.android.server; import android.Manifest.permission; import android.annotation.Nullable; +import android.app.AppOpsManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -79,7 +80,7 @@ public class NetworkScorerAppManager { List appDataList = new ArrayList<>(); for (int i = 0; i < resolveInfos.size(); i++) { final ServiceInfo serviceInfo = resolveInfos.get(i).serviceInfo; - if (hasPermissions(serviceInfo.packageName)) { + if (hasPermissions(serviceInfo.applicationInfo.uid, serviceInfo.packageName)) { if (VERBOSE) { Log.v(TAG, serviceInfo.packageName + " is a valid scorer/recommender."); } @@ -197,12 +198,33 @@ public class NetworkScorerAppManager { return null; } - private boolean hasPermissions(String packageName) { + private boolean hasPermissions(final int uid, final String packageName) { + return hasScoreNetworksPermission(packageName) + && canAccessLocation(uid, packageName); + } + + private boolean hasScoreNetworksPermission(String packageName) { final PackageManager pm = mContext.getPackageManager(); return pm.checkPermission(permission.SCORE_NETWORKS, packageName) == PackageManager.PERMISSION_GRANTED; } + private boolean canAccessLocation(int uid, String packageName) { + final PackageManager pm = mContext.getPackageManager(); + final AppOpsManager appOpsManager = + (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE); + return isLocationModeEnabled() + && pm.checkPermission(permission.ACCESS_COARSE_LOCATION, packageName) + == PackageManager.PERMISSION_GRANTED + && appOpsManager.noteOp(AppOpsManager.OP_COARSE_LOCATION, uid, packageName) + == AppOpsManager.MODE_ALLOWED; + } + + private boolean isLocationModeEnabled() { + return mSettingsFacade.getSecureInt(mContext, Settings.Secure.LOCATION_MODE, + Settings.Secure.LOCATION_MODE_OFF) != Settings.Secure.LOCATION_MODE_OFF; + } + /** * Set the specified package as the default scorer application. * @@ -270,23 +292,20 @@ public class NetworkScorerAppManager { return; } - // the active scorer isn't valid, revert to the default if it's different + int newEnabledSetting = NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF; + // the active scorer isn't valid, revert to the default if it's different and valid final String defaultPackageName = getDefaultPackageSetting(); - if (!TextUtils.equals(currentPackageName, defaultPackageName)) { - setNetworkRecommendationsPackage(defaultPackageName); + if (!TextUtils.equals(currentPackageName, defaultPackageName) + && getScorer(defaultPackageName) != null) { if (DEBUG) { - Log.d(TAG, "Defaulted the network recommendations app to: " + defaultPackageName); - } - if (getScorer(defaultPackageName) != null) { // the default is valid - if (DEBUG) Log.d(TAG, defaultPackageName + " is now the active scorer."); - setNetworkRecommendationsEnabledSetting( - NetworkScoreManager.RECOMMENDATIONS_ENABLED_ON); - } else { // the default isn't valid either, we're disabled at this point - if (DEBUG) Log.d(TAG, defaultPackageName + " is not an active scorer."); - setNetworkRecommendationsEnabledSetting( - NetworkScoreManager.RECOMMENDATIONS_ENABLED_OFF); + Log.d(TAG, "Defaulting the network recommendations app to: " + + defaultPackageName); } + setNetworkRecommendationsPackage(defaultPackageName); + newEnabledSetting = NetworkScoreManager.RECOMMENDATIONS_ENABLED_ON; } + + setNetworkRecommendationsEnabledSetting(newEnabledSetting); } /** @@ -352,6 +371,9 @@ public class NetworkScorerAppManager { private void setNetworkRecommendationsPackage(String packageName) { mSettingsFacade.putString(mContext, Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE, packageName); + if (VERBOSE) { + Log.d(TAG, Settings.Global.NETWORK_RECOMMENDATIONS_PACKAGE + " set to " + packageName); + } } private int getNetworkRecommendationsEnabledSetting() { @@ -361,6 +383,9 @@ public class NetworkScorerAppManager { private void setNetworkRecommendationsEnabledSetting(int value) { mSettingsFacade.putInt(mContext, Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, value); + if (VERBOSE) { + Log.d(TAG, Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED + " set to " + value); + } } /** @@ -382,5 +407,9 @@ public class NetworkScorerAppManager { public int getInt(Context context, String name, int defaultValue) { return Settings.Global.getInt(context.getContentResolver(), name, defaultValue); } + + public int getSecureInt(Context context, String name, int defaultValue) { + return Settings.Secure.getInt(context.getContentResolver(), name, defaultValue); + } } } diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java index 1d4c3db0749ca167a11753e0d12786bbc96edf60..c32a2d10b0bc128ea1e1318f31af7c38f080fa4a 100644 --- a/services/core/java/com/android/server/PersistentDataBlockService.java +++ b/services/core/java/com/android/server/PersistentDataBlockService.java @@ -380,6 +380,12 @@ public class PersistentDataBlockService extends SystemService { } } + private long doGetMaximumDataBlockSize() { + long actualSize = getBlockDeviceSize() - HEADER_SIZE - DIGEST_SIZE_BYTES + - FRP_CREDENTIAL_RESERVED_SIZE - 1; + return actualSize <= MAX_DATA_BLOCK_SIZE ? actualSize : MAX_DATA_BLOCK_SIZE; + } + private native long nativeGetBlockDeviceSize(String path); private native int nativeWipe(String path); @@ -389,7 +395,7 @@ public class PersistentDataBlockService extends SystemService { enforceUid(Binder.getCallingUid()); // Need to ensure we don't write over the last byte - long maxBlockSize = getMaximumDataBlockSize(); + long maxBlockSize = doGetMaximumDataBlockSize(); if (data.length > maxBlockSize) { // partition is ~500k so shouldn't be a problem to downcast return (int) -maxBlockSize; @@ -569,9 +575,8 @@ public class PersistentDataBlockService extends SystemService { @Override public long getMaximumDataBlockSize() { - long actualSize = getBlockDeviceSize() - HEADER_SIZE - DIGEST_SIZE_BYTES - - FRP_CREDENTIAL_RESERVED_SIZE - 1; - return actualSize <= MAX_DATA_BLOCK_SIZE ? actualSize : MAX_DATA_BLOCK_SIZE; + enforceUid(Binder.getCallingUid()); + return doGetMaximumDataBlockSize(); } @Override diff --git a/services/core/java/com/android/server/RescueParty.java b/services/core/java/com/android/server/RescueParty.java index 3b36c3c0d2bc4675f83581094a88c436f8d12a65..1924a861e002a8ab9f2ab6ab7420a41e25698cf5 100644 --- a/services/core/java/com/android/server/RescueParty.java +++ b/services/core/java/com/android/server/RescueParty.java @@ -55,6 +55,7 @@ public class RescueParty { private static final String PROP_RESCUE_LEVEL = "sys.rescue_level"; private static final String PROP_RESCUE_BOOT_COUNT = "sys.rescue_boot_count"; private static final String PROP_RESCUE_BOOT_START = "sys.rescue_boot_start"; + private static final String PROP_VIRTUAL_DEVICE = "ro.hardware.virtual_device"; private static final int LEVEL_NONE = 0; private static final int LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS = 1; @@ -336,6 +337,10 @@ public class RescueParty { * a good proxy for someone doing local development work. */ private static boolean isUsbActive() { + if (SystemProperties.getBoolean(PROP_VIRTUAL_DEVICE, false)) { + Slog.v(TAG, "Assuming virtual device is connected over USB"); + return true; + } try { final String state = FileUtils .readTextFile(new File("/sys/class/android_usb/android0/state"), 128, ""); diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 383cc8b3170da361dc62c8f51cc065509d40b086..1ca0112cb4f321bee765ddb05bbd165c6dab54c1 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -108,6 +108,7 @@ import com.android.internal.util.Preconditions; import com.android.internal.widget.LockPatternUtils; import com.android.server.NativeDaemonConnector.Command; import com.android.server.NativeDaemonConnector.SensitiveArg; +import com.android.server.pm.PackageManagerException; import com.android.server.pm.PackageManagerService; import com.android.server.storage.AppFuseBridge; @@ -1078,7 +1079,8 @@ class StorageManagerService extends IStorageManager.Stub flags |= DiskInfo.FLAG_ADOPTABLE; } // Adoptable storage isn't currently supported on FBE devices - if (StorageManager.isFileEncryptedNativeOnly()) { + if (StorageManager.isFileEncryptedNativeOnly() + && !SystemProperties.getBoolean(StorageManager.PROP_ADOPTABLE_FBE, false)) { flags &= ~DiskInfo.FLAG_ADOPTABLE; } mDisks.put(id, new DiskInfo(id, flags)); @@ -2045,7 +2047,8 @@ class StorageManagerService extends IStorageManager.Stub } if ((mask & StorageManager.DEBUG_FORCE_ADOPTABLE) != 0) { - if (StorageManager.isFileEncryptedNativeOnly()) { + if (StorageManager.isFileEncryptedNativeOnly() + && !SystemProperties.getBoolean(StorageManager.PROP_ADOPTABLE_FBE, false)) { throw new IllegalStateException( "Adoptable storage not available on device with native FBE"); } @@ -2121,6 +2124,17 @@ class StorageManagerService extends IStorageManager.Stub mMoveCallback = callback; mMoveTargetUuid = volumeUuid; + // We need all the users unlocked to move their primary storage + final List users = mContext.getSystemService(UserManager.class).getUsers(); + for (UserInfo user : users) { + if (StorageManager.isFileEncryptedNativeOrEmulated() + && !isUserKeyUnlocked(user.id)) { + Slog.w(TAG, "Failing move due to locked user " + user.id); + onMoveStatusLocked(PackageManager.MOVE_FAILED_LOCKED_USER); + return; + } + } + // When moving to/from primary physical volume, we probably just nuked // the current storage location, so we have nothing to move. if (Objects.equals(StorageManager.UUID_PRIMARY_PHYSICAL, mPrimaryStorageUuid) diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java index 9068745c1ef355f9e6cfcbb27c3f7f9009e991d9..845442eb20fc0166fe56ef819a9927f3aceca62f 100644 --- a/services/core/java/com/android/server/TextServicesManagerService.java +++ b/services/core/java/com/android/server/TextServicesManagerService.java @@ -49,6 +49,7 @@ import android.os.Binder; import android.os.Bundle; import android.os.IBinder; import android.os.Process; +import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; @@ -84,6 +85,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { private final TextServicesSettings mSettings; @NonNull private final UserManager mUserManager; + private final Object mLock = new Object(); public static final class Lifecycle extends SystemService { private TextServicesManagerService mService; @@ -123,7 +125,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } void systemRunning() { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { if (!mSystemReady) { mSystemReady = true; resetInternalState(mSettings.getCurrentUserId()); @@ -132,13 +134,13 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } void onSwitchUser(@UserIdInt int userId) { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { resetInternalState(userId); } } void onUnlockUser(@UserIdInt int userId) { - synchronized(mSpellCheckerMap) { + synchronized (mLock) { final int currentUserId = mSettings.getCurrentUserId(); if (userId != currentUserId) { return; @@ -184,13 +186,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { buildSpellCheckerMapLocked(mContext, mSpellCheckerList, mSpellCheckerMap, mSettings); SpellCheckerInfo sci = getCurrentSpellChecker(null); if (sci == null) { - sci = findAvailSpellCheckerLocked(null); - if (sci != null) { - // Set the current spell checker if there is one or more spell checkers - // available. In this case, "sci" is the first one in the available spell - // checkers. - setCurrentSpellCheckerLocked(sci.getId()); - } + sci = findAvailSystemSpellCheckerLocked(null); + // Set the current spell checker if there is one or more system spell checkers + // available. In this case, "sci" is the first one in the available spell + // checkers. + setCurrentSpellCheckerLocked(sci); } } @@ -214,23 +214,33 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (!isChangingPackagesOfCurrentUser()) { return; } - synchronized (mSpellCheckerMap) { - buildSpellCheckerMapLocked( - mContext, mSpellCheckerList, mSpellCheckerMap, mSettings); + synchronized (mLock) { // TODO: Update for each locale SpellCheckerInfo sci = getCurrentSpellChecker(null); - // If no spell checker is enabled, just return. The user should explicitly + buildSpellCheckerMapLocked( + mContext, mSpellCheckerList, mSpellCheckerMap, mSettings); + // If spell checker is disabled, just return. The user should explicitly // enable the spell checker. - if (sci == null) return; - final String packageName = sci.getPackageName(); - final int change = isPackageDisappearing(packageName); - if (// Package disappearing - change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE - // Package modified - || isPackageModified(packageName)) { - sci = findAvailSpellCheckerLocked(packageName); - if (sci != null) { - setCurrentSpellCheckerLocked(sci.getId()); + if (!isSpellCheckerEnabledLocked()) return; + + if (sci == null) { + sci = findAvailSystemSpellCheckerLocked(null); + // Set the current spell checker if there is one or more system spell checkers + // available. In this case, "sci" is the first one in the available spell + // checkers. + setCurrentSpellCheckerLocked(sci); + } else { + final String packageName = sci.getPackageName(); + final int change = isPackageDisappearing(packageName); + if (// Package disappearing + change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE + // Package modified + || isPackageModified(packageName)) { + SpellCheckerInfo availSci = findAvailSystemSpellCheckerLocked(packageName); + // Set the spell checker settings if different than before + if (availSci != null && !availSci.getId().equals(sci.getId())) { + setCurrentSpellCheckerLocked(availSci); + } } } } @@ -367,23 +377,31 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { private void unbindServiceLocked() { for (SpellCheckerBindGroup scbg : mSpellCheckerBindGroups.values()) { - scbg.removeAll(); + scbg.removeAllLocked(); } mSpellCheckerBindGroups.clear(); } - private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage) { - final int spellCheckersCount = mSpellCheckerList.size(); + private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage) { + // Filter the spell checker list to remove spell checker services that are not pre-installed + ArrayList spellCheckerList = new ArrayList<>(); + for (SpellCheckerInfo sci : mSpellCheckerList) { + if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + spellCheckerList.add(sci); + } + } + + final int spellCheckersCount = spellCheckerList.size(); if (spellCheckersCount == 0) { Slog.w(TAG, "no available spell checker services found"); return null; } if (prefPackage != null) { for (int i = 0; i < spellCheckersCount; ++i) { - final SpellCheckerInfo sci = mSpellCheckerList.get(i); + final SpellCheckerInfo sci = spellCheckerList.get(i); if (prefPackage.equals(sci.getPackageName())) { if (DBG) { - Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName()); + Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName()); } return sci; } @@ -397,7 +415,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final ArrayList suitableLocales = InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal); if (DBG) { - Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales=" + Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales=" + Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()]))); } final int localeCount = suitableLocales.size(); @@ -405,7 +423,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final Locale locale = suitableLocales.get(localeIndex); for (int spellCheckersIndex = 0; spellCheckersIndex < spellCheckersCount; ++spellCheckersIndex) { - final SpellCheckerInfo info = mSpellCheckerList.get(spellCheckersIndex); + final SpellCheckerInfo info = spellCheckerList.get(spellCheckersIndex); final int subtypeCount = info.getSubtypeCount(); for (int subtypeIndex = 0; subtypeIndex < subtypeCount; ++subtypeIndex) { final SpellCheckerSubtype subtype = info.getSubtypeAt(subtypeIndex); @@ -424,7 +442,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (spellCheckersCount > 1) { Slog.w(TAG, "more than one spell checker service found, picking first"); } - return mSpellCheckerList.get(0); + return spellCheckerList.get(0); } // TODO: Save SpellCheckerService by supported languages. Currently only one spell @@ -439,7 +457,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } private SpellCheckerInfo getCurrentSpellCheckerWithoutVerification() { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { final String curSpellCheckerId = mSettings.getSelectedSpellChecker(); if (DBG) { Slog.w(TAG, "getCurrentSpellChecker: " + curSpellCheckerId); @@ -463,7 +481,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { final int subtypeHashCode; final SpellCheckerInfo sci; final Locale systemLocale; - synchronized (mSpellCheckerMap) { + synchronized (mLock) { subtypeHashCode = mSettings.getSelectedSpellCheckerSubtype(SpellCheckerSubtype.SUBTYPE_ID_NONE); if (DBG) { @@ -545,7 +563,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.e(TAG, "getSpellCheckerService: Invalid input."); return; } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { if (!mSpellCheckerMap.containsKey(sciId)) { return; } @@ -577,7 +595,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (!calledFromValidUser()) { return false; } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { return isSpellCheckerEnabledLocked(); } } @@ -595,7 +613,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.w(TAG, "bind service: " + info.getId()); } if (!bindCurrentSpellCheckerService(serviceIntent, connection, - Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE)) { + Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT_BACKGROUND)) { Slog.e(TAG, "Failed to get a spell checker service."); return null; } @@ -627,7 +645,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { if (DBG) { Slog.d(TAG, "FinishSpellCheckerService"); } - synchronized(mSpellCheckerMap) { + synchronized (mLock) { final ArrayList removeList = new ArrayList<>(); for (SpellCheckerBindGroup group : mSpellCheckerBindGroups.values()) { if (group == null) continue; @@ -641,71 +659,14 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } } - @Override - public void setCurrentSpellChecker(String locale, String sciId) { - if (!calledFromValidUser()) { - return; - } - synchronized(mSpellCheckerMap) { - if (mContext.checkCallingOrSelfPermission( - android.Manifest.permission.WRITE_SECURE_SETTINGS) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException( - "Requires permission " - + android.Manifest.permission.WRITE_SECURE_SETTINGS); - } - setCurrentSpellCheckerLocked(sciId); - } - } - - @Override - public void setCurrentSpellCheckerSubtype(String locale, int hashCode) { - if (!calledFromValidUser()) { - return; - } - synchronized(mSpellCheckerMap) { - if (mContext.checkCallingOrSelfPermission( - android.Manifest.permission.WRITE_SECURE_SETTINGS) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException( - "Requires permission " - + android.Manifest.permission.WRITE_SECURE_SETTINGS); - } - setCurrentSpellCheckerSubtypeLocked(hashCode); - } - } - - @Override - public void setSpellCheckerEnabled(boolean enabled) { - if (!calledFromValidUser()) { - return; - } - synchronized(mSpellCheckerMap) { - if (mContext.checkCallingOrSelfPermission( - android.Manifest.permission.WRITE_SECURE_SETTINGS) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException( - "Requires permission " - + android.Manifest.permission.WRITE_SECURE_SETTINGS); - } - setSpellCheckerEnabledLocked(enabled); - } - } - - private void setCurrentSpellCheckerLocked(String sciId) { + private void setCurrentSpellCheckerLocked(@Nullable SpellCheckerInfo sci) { + final String sciId = (sci != null) ? sci.getId() : ""; if (DBG) { Slog.w(TAG, "setCurrentSpellChecker: " + sciId); } - if (TextUtils.isEmpty(sciId) || !mSpellCheckerMap.containsKey(sciId)) return; - final SpellCheckerInfo currentSci = getCurrentSpellChecker(null); - if (currentSci != null && currentSci.getId().equals(sciId)) { - // Do nothing if the current spell checker is same as new spell checker. - return; - } final long ident = Binder.clearCallingIdentity(); try { mSettings.putSelectedSpellChecker(sciId); - setCurrentSpellCheckerSubtypeLocked(0); } finally { Binder.restoreCallingIdentity(ident); } @@ -731,18 +692,6 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } } - private void setSpellCheckerEnabledLocked(boolean enabled) { - if (DBG) { - Slog.w(TAG, "setSpellCheckerEnabled: " + enabled); - } - final long ident = Binder.clearCallingIdentity(); - try { - mSettings.setSpellCheckerEnabled(enabled); - } finally { - Binder.restoreCallingIdentity(ident); - } - } - private boolean isSpellCheckerEnabledLocked() { final long ident = Binder.clearCallingIdentity(); try { @@ -760,7 +709,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; - synchronized(mSpellCheckerMap) { + synchronized (mLock) { pw.println("Current Text Services Manager state:"); pw.println(" Spell Checkers:"); int spellCheckerIndex = 0; @@ -797,12 +746,13 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { pw.println( " " + "mScLocale=" + req.mLocale + " mUid=" + req.mUserId); } - final int N = grp.mListeners.size(); + final int N = grp.mListeners.getRegisteredCallbackCount(); for (int i = 0; i < N; i++) { - final InternalDeathRecipient listener = grp.mListeners.get(i); + final ISpellCheckerSessionListener mScListener = + grp.mListeners.getRegisteredCallbackItem(i); pw.println(" " + "Listener #" + i + ":"); - pw.println(" " + "mScListener=" + listener.mScListener); - pw.println(" " + "mGroup=" + listener.mGroup); + pw.println(" " + "mScListener=" + mScListener); + pw.println(" " + "mGroup=" + grp); } } pw.println(""); @@ -840,7 +790,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { private final class SpellCheckerBindGroup { private final String TAG = SpellCheckerBindGroup.class.getSimpleName(); private final InternalServiceConnection mInternalConnection; - private final ArrayList mListeners = new ArrayList<>(); + private final InternalDeathRecipients mListeners; private boolean mUnbindCalled; private ISpellCheckerService mSpellChecker; private boolean mConnected; @@ -849,47 +799,52 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { public SpellCheckerBindGroup(InternalServiceConnection connection) { mInternalConnection = connection; + mListeners = new InternalDeathRecipients(this); } - public void onServiceConnected(ISpellCheckerService spellChecker) { + public void onServiceConnectedLocked(ISpellCheckerService spellChecker) { if (DBG) { - Slog.d(TAG, "onServiceConnected"); + Slog.d(TAG, "onServiceConnectedLocked"); } - synchronized(mSpellCheckerMap) { - mSpellChecker = spellChecker; - mConnected = true; - // Dispatch pending getISpellCheckerSession requests. - mPendingSessionRequests.forEach(this::getISpellCheckerSessionLocked); + if (mUnbindCalled) { + return; + } + mSpellChecker = spellChecker; + mConnected = true; + // Dispatch pending getISpellCheckerSession requests. + try { + final int size = mPendingSessionRequests.size(); + for (int i = 0; i < size; ++i) { + final SessionRequest request = mPendingSessionRequests.get(i); + mSpellChecker.getISpellCheckerSession( + request.mLocale, request.mScListener, request.mBundle, + new ISpellCheckerServiceCallbackBinder(this, request)); + mOnGoingSessionRequests.add(request); + } mPendingSessionRequests.clear(); + } catch(RemoteException e) { + // The target spell checker service is not available. Better to reset the state. + removeAllLocked(); } + cleanLocked(); + } + + public void onServiceDisconnectedLocked() { + if (DBG) { + Slog.d(TAG, "onServiceDisconnectedLocked"); + } + + mSpellChecker = null; + mConnected = false; } public void removeListener(ISpellCheckerSessionListener listener) { if (DBG) { Slog.w(TAG, "remove listener: " + listener.hashCode()); } - synchronized(mSpellCheckerMap) { - final int size = mListeners.size(); - final ArrayList removeList = new ArrayList<>(); - for (int i = 0; i < size; ++i) { - final InternalDeathRecipient tempRecipient = mListeners.get(i); - if(tempRecipient.hasSpellCheckerListener(listener)) { - if (DBG) { - Slog.w(TAG, "found existing listener."); - } - removeList.add(tempRecipient); - } - } - final int removeSize = removeList.size(); - for (int i = 0; i < removeSize; ++i) { - if (DBG) { - Slog.w(TAG, "Remove " + removeList.get(i)); - } - final InternalDeathRecipient idr = removeList.get(i); - idr.mScListener.asBinder().unlinkToDeath(idr, 0); - mListeners.remove(idr); - } + synchronized (mLock) { + mListeners.unregister(listener); cleanLocked(); } } @@ -903,7 +858,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { return; } // If there are no more active listeners, clean up. Only do this once. - if (!mListeners.isEmpty()) { + if (mListeners.getRegisteredCallbackCount() > 0) { return; } if (!mPendingSessionRequests.isEmpty()) { @@ -924,19 +879,15 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { mUnbindCalled = true; } - public void removeAll() { + public void removeAllLocked() { Slog.e(TAG, "Remove the spell checker bind unexpectedly."); - synchronized(mSpellCheckerMap) { - final int size = mListeners.size(); - for (int i = 0; i < size; ++i) { - final InternalDeathRecipient idr = mListeners.get(i); - idr.mScListener.asBinder().unlinkToDeath(idr, 0); - } - mListeners.clear(); - mPendingSessionRequests.clear(); - mOnGoingSessionRequests.clear(); - cleanLocked(); + final int size = mListeners.getRegisteredCallbackCount(); + for (int i = size - 1; i >= 0; --i) { + mListeners.unregister(mListeners.getRegisteredCallbackItem(i)); } + mPendingSessionRequests.clear(); + mOnGoingSessionRequests.clear(); + cleanLocked(); } public void getISpellCheckerSessionOrQueueLocked(@NonNull SessionRequest request) { @@ -947,13 +898,6 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { mPendingSessionRequests.add(request); return; } - getISpellCheckerSessionLocked(request); - } - - private void getISpellCheckerSessionLocked(@NonNull SessionRequest request) { - if (mUnbindCalled) { - return; - } try { mSpellChecker.getISpellCheckerSession( request.mLocale, request.mScListener, request.mBundle, @@ -961,24 +905,21 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { mOnGoingSessionRequests.add(request); } catch(RemoteException e) { // The target spell checker service is not available. Better to reset the state. - removeAll(); + removeAllLocked(); } cleanLocked(); } void onSessionCreated(@Nullable final ISpellCheckerSession newSession, @NonNull final SessionRequest request) { - synchronized (mSpellCheckerMap) { + synchronized (mLock) { if (mUnbindCalled) { return; } if (mOnGoingSessionRequests.remove(request)) { - final InternalDeathRecipient recipient = - new InternalDeathRecipient(this, request.mScListener); try { request.mTsListener.onServiceConnected(newSession); - request.mScListener.asBinder().linkToDeath(recipient, 0); - mListeners.add(recipient); + mListeners.register(request.mScListener); } catch (RemoteException e) { // Technically this can happen if the spell checker client app is already // dead. We can just forget about this request; the request is already @@ -999,51 +940,52 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { @Override public void onServiceConnected(ComponentName name, IBinder service) { - synchronized(mSpellCheckerMap) { + synchronized (mLock) { onServiceConnectedInnerLocked(name, service); } } private void onServiceConnectedInnerLocked(ComponentName name, IBinder service) { if (DBG) { - Slog.w(TAG, "onServiceConnected: " + name); + Slog.w(TAG, "onServiceConnectedInnerLocked: " + name); } final ISpellCheckerService spellChecker = ISpellCheckerService.Stub.asInterface(service); final SpellCheckerBindGroup group = mSpellCheckerBindGroups.get(mSciId); if (group != null && this == group.mInternalConnection) { - group.onServiceConnected(spellChecker); + group.onServiceConnectedLocked(spellChecker); } } @Override public void onServiceDisconnected(ComponentName name) { - synchronized(mSpellCheckerMap) { - final SpellCheckerBindGroup group = mSpellCheckerBindGroups.get(mSciId); - if (group != null && this == group.mInternalConnection) { - mSpellCheckerBindGroups.remove(mSciId); - } + synchronized (mLock) { + onServiceDisconnectedInnerLocked(name); + } + } + + private void onServiceDisconnectedInnerLocked(ComponentName name) { + if (DBG) { + Slog.w(TAG, "onServiceDisconnectedInnerLocked: " + name); + } + final SpellCheckerBindGroup group = mSpellCheckerBindGroups.get(mSciId); + if (group != null && this == group.mInternalConnection) { + group.onServiceDisconnectedLocked(); } } } - private static final class InternalDeathRecipient implements IBinder.DeathRecipient { - public final ISpellCheckerSessionListener mScListener; + private static final class InternalDeathRecipients extends + RemoteCallbackList { private final SpellCheckerBindGroup mGroup; - public InternalDeathRecipient(SpellCheckerBindGroup group, - ISpellCheckerSessionListener scListener) { - mScListener = scListener; + public InternalDeathRecipients(SpellCheckerBindGroup group) { mGroup = group; } - public boolean hasSpellCheckerListener(ISpellCheckerSessionListener listener) { - return listener.asBinder().equals(mScListener.asBinder()); - } - @Override - public void binderDied() { - mGroup.removeListener(mScListener); + public void onCallbackDied(ISpellCheckerSessionListener listener) { + mGroup.removeListener(listener); } } @@ -1144,10 +1086,6 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { return Settings.Secure.getIntForUser(mResolver, key, defaultValue, mCurrentUserId); } - private void putBoolean(final String key, final boolean value) { - putInt(key, value ? 1 : 0); - } - private boolean getBoolean(final String key, final boolean defaultValue) { return getInt(key, defaultValue ? 1 : 0) == 1; } @@ -1174,23 +1112,13 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { } public void putSelectedSpellChecker(@Nullable String sciId) { - if (TextUtils.isEmpty(sciId)) { - // OK to coalesce to null, since getSelectedSpellChecker() can take care of the - // empty data scenario. - putString(Settings.Secure.SELECTED_SPELL_CHECKER, null); - } else { - putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId); - } + putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId); } public void putSelectedSpellCheckerSubtype(int hashCode) { putInt(Settings.Secure.SELECTED_SPELL_CHECKER_SUBTYPE, hashCode); } - public void setSpellCheckerEnabled(boolean enabled) { - putBoolean(Settings.Secure.SPELL_CHECKER_ENABLED, enabled); - } - @NonNull public String getSelectedSpellChecker() { return getString(Settings.Secure.SELECTED_SPELL_CHECKER, ""); diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java index 473384081656baf78c55b3f5eb1d8eee364ffcf3..8b79b9ddfef22b8fe59d669dd306a4d91430b011 100644 --- a/services/core/java/com/android/server/VibratorService.java +++ b/services/core/java/com/android/server/VibratorService.java @@ -373,12 +373,24 @@ public class VibratorService extends IVibratorService.Stub if (mCurrentVibration.hasLongerTimeout(newOneShot.getTiming()) && newOneShot.getAmplitude() == currentOneShot.getAmplitude()) { if (DEBUG) { - Slog.e(TAG, "Ignoring incoming vibration in favor of current vibration"); + Slog.d(TAG, "Ignoring incoming vibration in favor of current vibration"); } return; } } + // If the current vibration is repeating and the incoming one is non-repeating, then ignore + // the non-repeating vibration. This is so that we don't cancel vibrations that are meant + // to grab the attention of the user, like ringtones and alarms, in favor of one-shot + // vibrations that are likely quite short. + if (!isRepeatingVibration(effect) + && mCurrentVibration != null && isRepeatingVibration(mCurrentVibration.mEffect)) { + if (DEBUG) { + Slog.d(TAG, "Ignoring incoming vibration in favor of alarm vibration"); + } + return; + } + Vibration vib = new Vibration(token, effect, usageHint, uid, opPkg); // Only link against waveforms since they potentially don't have a finish if @@ -404,6 +416,16 @@ public class VibratorService extends IVibratorService.Stub } } + private static boolean isRepeatingVibration(VibrationEffect effect) { + if (effect instanceof VibrationEffect.Waveform) { + final VibrationEffect.Waveform waveform = (VibrationEffect.Waveform) effect; + if (waveform.getRepeatIndex() >= 0) { + return true; + } + } + return false; + } + private void addToPreviousVibrationsLocked(Vibration vib) { if (mPreviousVibrations.size() > mPreviousVibrationsLimit) { mPreviousVibrations.removeFirst(); @@ -728,6 +750,9 @@ public class VibratorService extends IVibratorService.Stub return timeout; } } + if (!prebaked.shouldFallback()) { + return 0; + } final int id = prebaked.getId(); if (id < 0 || id >= mFallbackEffects.length || mFallbackEffects[id] == null) { Slog.w(TAG, "Failed to play prebaked effect, no fallback"); diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java index 6a81d3211c9d8619c139e508d074dc11c3810465..8d46d1e272354d48ad6e41098f3b55450efc4fdb 100644 --- a/services/core/java/com/android/server/Watchdog.java +++ b/services/core/java/com/android/server/Watchdog.java @@ -18,7 +18,11 @@ package com.android.server; import android.app.IActivityController; import android.os.Binder; +import android.os.Build; import android.os.RemoteException; +import android.system.ErrnoException; +import android.system.OsConstants; +import android.system.StructRlimit; import com.android.internal.os.ZygoteConnectionConstants; import com.android.server.am.ActivityManagerService; @@ -45,6 +49,7 @@ import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -107,6 +112,7 @@ public class Watchdog extends Thread { int mPhonePid; IActivityController mController; boolean mAllowRestart = true; + final OpenFdMonitor mOpenFdMonitor; /** * Used for checking status of handle threads and scheduling monitor callbacks. @@ -269,6 +275,8 @@ public class Watchdog extends Thread { // Initialize monitor for Binder threads. addMonitor(new BinderThreadMonitor()); + mOpenFdMonitor = OpenFdMonitor.create(); + // See the notes on DEFAULT_TIMEOUT. assert DB || DEFAULT_TIMEOUT > ZygoteConnectionConstants.WRAPPED_PID_TIMEOUT_MILLIS; @@ -358,7 +366,7 @@ public class Watchdog extends Thread { return checkers; } - private String describeCheckersLocked(ArrayList checkers) { + private String describeCheckersLocked(List checkers) { StringBuilder builder = new StringBuilder(128); for (int i=0; i 0) { @@ -410,7 +418,7 @@ public class Watchdog extends Thread { public void run() { boolean waitedHalf = false; while (true) { - final ArrayList blockedCheckers; + final List blockedCheckers; final String subject; final boolean allowRestart; int debuggerWasConnected = 0; @@ -447,30 +455,40 @@ public class Watchdog extends Thread { timeout = CHECK_INTERVAL - (SystemClock.uptimeMillis() - start); } - final int waitState = evaluateCheckerCompletionLocked(); - if (waitState == COMPLETED) { - // The monitors have returned; reset - waitedHalf = false; - continue; - } else if (waitState == WAITING) { - // still waiting but within their configured intervals; back off and recheck - continue; - } else if (waitState == WAITED_HALF) { - if (!waitedHalf) { - // We've waited half the deadlock-detection interval. Pull a stack - // trace and wait another half. - ArrayList pids = new ArrayList(); - pids.add(Process.myPid()); - ActivityManagerService.dumpStackTraces(true, pids, null, null, - getInterestingNativePids()); - waitedHalf = true; - } - continue; + boolean fdLimitTriggered = false; + if (mOpenFdMonitor != null) { + fdLimitTriggered = mOpenFdMonitor.monitor(); } - // something is overdue! - blockedCheckers = getBlockedCheckersLocked(); - subject = describeCheckersLocked(blockedCheckers); + if (!fdLimitTriggered) { + final int waitState = evaluateCheckerCompletionLocked(); + if (waitState == COMPLETED) { + // The monitors have returned; reset + waitedHalf = false; + continue; + } else if (waitState == WAITING) { + // still waiting but within their configured intervals; back off and recheck + continue; + } else if (waitState == WAITED_HALF) { + if (!waitedHalf) { + // We've waited half the deadlock-detection interval. Pull a stack + // trace and wait another half. + ArrayList pids = new ArrayList(); + pids.add(Process.myPid()); + ActivityManagerService.dumpStackTraces(true, pids, null, null, + getInterestingNativePids()); + waitedHalf = true; + } + continue; + } + + // something is overdue! + blockedCheckers = getBlockedCheckersLocked(); + subject = describeCheckersLocked(blockedCheckers); + } else { + blockedCheckers = Collections.emptyList(); + subject = "Open FD high water mark reached"; + } allowRestart = mAllowRestart; } @@ -584,4 +602,87 @@ public class Watchdog extends Thread { } private native void native_dumpKernelStacks(String tracesPath); + + public static final class OpenFdMonitor { + /** + * Number of FDs below the soft limit that we trigger a runtime restart at. This was + * chosen arbitrarily, but will need to be at least 6 in order to have a sufficient number + * of FDs in reserve to complete a dump. + */ + private static final int FD_HIGH_WATER_MARK = 12; + + private final File mDumpDir; + private final File mFdHighWaterMark; + + public static OpenFdMonitor create() { + // Only run the FD monitor on debuggable builds (such as userdebug and eng builds). + if (!Build.IS_DEBUGGABLE) { + return null; + } + + // Don't run the FD monitor on builds that have a global ANR trace file. We're using + // the ANR trace directory as a quick hack in order to get these traces in bugreports + // and we wouldn't want to overwrite something important. + final String dumpDirStr = SystemProperties.get("dalvik.vm.stack-trace-dir", ""); + if (dumpDirStr.isEmpty()) { + return null; + } + + final StructRlimit rlimit; + try { + rlimit = android.system.Os.getrlimit(OsConstants.RLIMIT_NOFILE); + } catch (ErrnoException errno) { + Slog.w(TAG, "Error thrown from getrlimit(RLIMIT_NOFILE)", errno); + return null; + } + + // The assumption we're making here is that FD numbers are allocated (more or less) + // sequentially, which is currently (and historically) true since open is currently + // specified to always return the lowest-numbered non-open file descriptor for the + // current process. + // + // We do this to avoid having to enumerate the contents of /proc/self/fd in order to + // count the number of descriptors open in the process. + final File fdThreshold = new File("/proc/self/fd/" + (rlimit.rlim_cur - FD_HIGH_WATER_MARK)); + return new OpenFdMonitor(new File(dumpDirStr), fdThreshold); + } + + OpenFdMonitor(File dumpDir, File fdThreshold) { + mDumpDir = dumpDir; + mFdHighWaterMark = fdThreshold; + } + + private void dumpOpenDescriptors() { + try { + File dumpFile = File.createTempFile("anr_fd_", "", mDumpDir); + java.lang.Process proc = new ProcessBuilder() + .command("/system/bin/lsof", "-p", String.valueOf(Process.myPid())) + .redirectErrorStream(true) + .redirectOutput(dumpFile) + .start(); + + int returnCode = proc.waitFor(); + if (returnCode != 0) { + Slog.w(TAG, "Unable to dump open descriptors, lsof return code: " + + returnCode); + dumpFile.delete(); + } + } catch (IOException | InterruptedException ex) { + Slog.w(TAG, "Unable to dump open descriptors: " + ex); + } + } + + /** + * @return {@code true} if the high water mark was breached and a dump was written, + * {@code false} otherwise. + */ + public boolean monitor() { + if (mFdHighWaterMark.exists()) { + dumpOpenDescriptors(); + return true; + } + + return false; + } + } } diff --git a/services/core/java/com/android/server/accounts/AccountManagerBackupHelper.java b/services/core/java/com/android/server/accounts/AccountManagerBackupHelper.java index 6380da5e2af86e3124c4ea3e39787ba22b7064ec..1c77a7f451b42ee87388d56b61b304c875471497 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerBackupHelper.java +++ b/services/core/java/com/android/server/accounts/AccountManagerBackupHelper.java @@ -23,6 +23,7 @@ import android.annotation.IntRange; import android.annotation.NonNull; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.Signature; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.UserHandle; @@ -30,6 +31,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.PackageUtils; import android.util.Pair; +import android.util.Slog; import android.util.Xml; import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; @@ -126,9 +128,18 @@ public final class AccountManagerBackupHelper { } catch (PackageManager.NameNotFoundException e) { return false; } - String currentCertDigest = PackageUtils.computeCertSha256Digest( - packageInfo.signatures[0]); - if (!certDigest.equals(currentCertDigest)) { + + // Before we used only the first signature to compute the SHA 256 but some + // apps could be singed by multiple certs and the cert order is undefined. + // We prefer the modern computation procedure where all certs are taken + // into account but also allow the value from the old computation to allow + // restoring backed up grants on an older platform version. + final String[] signaturesSha256Digests = PackageUtils.computeSignaturesSha256Digests( + packageInfo.signatures); + final String signaturesSha256Digest = PackageUtils.computeSignaturesSha256Digest( + signaturesSha256Digests); + if (!certDigest.equals(signaturesSha256Digest) && (packageInfo.signatures.length <= 1 + || !certDigest.equals(signaturesSha256Digests[0]))) { return false; } final int uid = packageInfo.applicationInfo.uid; @@ -169,8 +180,17 @@ public final class AccountManagerBackupHelper { } for (String packageName : packageNames) { - String digest = PackageUtils.computePackageCertSha256Digest( - packageManager, packageName, userId); + final PackageInfo packageInfo; + try { + packageInfo = packageManager.getPackageInfoAsUser(packageName, + PackageManager.GET_SIGNATURES, userId); + } catch (PackageManager.NameNotFoundException e) { + Slog.i(TAG, "Skipping backup of account access grant for" + + " non-existing package: " + packageName); + continue; + } + final String digest = PackageUtils.computeSignaturesSha256Digest( + packageInfo.signatures); if (digest != null) { serializer.startTag(null, TAG_PERMISSION); serializer.attribute(null, ATTR_ACCOUNT_SHA_256, diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 86ce12eee32bd2fdbc960469f4a0573d87b452e5..2fe8f2a1d42870ec2d1e641d610526afb098dcae 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -162,7 +162,8 @@ public class AccountManagerService @Override public void onStopUser(int userHandle) { - mService.onStopUser(userHandle); + Slog.i(TAG, "onStopUser " + userHandle); + mService.purgeUserData(userHandle); } } @@ -314,6 +315,21 @@ public class AccountManagerService injector.addLocalService(new AccountManagerInternalImpl()); + IntentFilter userFilter = new IntentFilter(); + userFilter.addAction(Intent.ACTION_USER_REMOVED); + mContext.registerReceiverAsUser(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (Intent.ACTION_USER_REMOVED.equals(action)) { + int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); + if (userId < 1) return; + Slog.i(TAG, "User " + userId + " removed"); + purgeUserData(userId); + } + } + }, UserHandle.ALL, userFilter, null, null); + // Need to cancel account request notifications if the update/install can access the account new PackageMonitor() { @Override @@ -1360,9 +1376,7 @@ public class AccountManagerService } } - - private void onStopUser(int userId) { - Log.i(TAG, "onStopUser " + userId); + private void purgeUserData(int userId) { UserAccounts accounts; synchronized (mUsers) { accounts = mUsers.get(userId); @@ -4444,11 +4458,12 @@ public class AccountManagerService } private void startChooseAccountActivityWithAccounts( - IAccountManagerResponse response, Account[] accounts) { + IAccountManagerResponse response, Account[] accounts, String callingPackage) { Intent intent = new Intent(mContext, ChooseAccountActivity.class); intent.putExtra(AccountManager.KEY_ACCOUNTS, accounts); intent.putExtra(AccountManager.KEY_ACCOUNT_MANAGER_RESPONSE, new AccountManagerResponse(response)); + intent.putExtra(AccountManager.KEY_ANDROID_PACKAGE_NAME, callingPackage); mContext.startActivityAsUser(intent, UserHandle.of(UserHandle.getCallingUserId())); } @@ -4459,7 +4474,7 @@ public class AccountManagerService String callingPackage) { if (needToStartChooseAccountActivity(accounts, callingPackage)) { - startChooseAccountActivityWithAccounts(response, accounts); + startChooseAccountActivityWithAccounts(response, accounts, callingPackage); return; } if (accounts.length == 1) { @@ -4702,6 +4717,10 @@ public class AccountManagerService protected void checkKeyIntent( int authUid, Intent intent) throws SecurityException { + intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_READ_URI_PERMISSION + | Intent.FLAG_GRANT_WRITE_URI_PERMISSION + | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION + | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION)); long bid = Binder.clearCallingIdentity(); try { PackageManager pm = mContext.getPackageManager(); @@ -5167,6 +5186,28 @@ public class AccountManagerService fout.println(); mAuthenticatorCache.dump(fd, fout, args, userAccounts.userId); + + boolean isUserUnlocked; + synchronized (mUsers) { + isUserUnlocked = isLocalUnlockedUser(userAccounts.userId); + } + // Following logs are printed only when user is unlocked. + if (!isUserUnlocked) { + return; + } + fout.println(); + synchronized (userAccounts.dbLock) { + Map> allVisibilityValues = + userAccounts.accountsDb.findAllVisibilityValues(); + fout.println("Account visibility:"); + for (Account account : allVisibilityValues.keySet()) { + fout.println(" " + account.name); + Map visibilities = allVisibilityValues.get(account); + for (Entry entry : visibilities.entrySet()) { + fout.println(" " + entry.getKey() + ", " + entry.getValue()); + } + } + } } } @@ -5250,7 +5291,7 @@ public class AccountManagerService == PackageManager.PERMISSION_GRANTED) { // Checks runtime permission revocation. final int opCode = AppOpsManager.permissionToOpCode(perm); - if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp( + if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow( opCode, uid, packageName) == AppOpsManager.MODE_ALLOWED) { return true; } @@ -5271,7 +5312,7 @@ public class AccountManagerService Log.v(TAG, " caller uid " + callingUid + " has " + perm); } final int opCode = AppOpsManager.permissionToOpCode(perm); - if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOp( + if (opCode == AppOpsManager.OP_NONE || mAppOpsManager.noteOpNoThrow( opCode, callingUid, opPackageName) == AppOpsManager.MODE_ALLOWED) { return true; } @@ -5918,11 +5959,9 @@ public class AccountManagerService String tokenType, String callingPackage, byte[] pkgSigDigest) { - synchronized (accounts.dbLock) { - synchronized (accounts.cacheLock) { - return accounts.accountTokenCaches.get( - account, tokenType, callingPackage, pkgSigDigest); - } + synchronized (accounts.cacheLock) { + return accounts.accountTokenCaches.get( + account, tokenType, callingPackage, pkgSigDigest); } } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 756e2748b8cb55311b3937ce530b51308c6c366f..90ad8a5d01311325a1bf472a6615773afbc296a0 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1926,6 +1926,9 @@ public final class ActiveServices { if (r.restartDelay == 0) { r.restartCount++; r.restartDelay = minDuration; + } else if (r.crashCount > 1) { + r.restartDelay = mAm.mConstants.BOUND_SERVICE_CRASH_RESTART_DURATION + * (r.crashCount - 1); } else { // If it has been a "reasonably long time" since the service // was started, then reset our restart duration back to @@ -2159,6 +2162,15 @@ public final class ActiveServices { } } + if (r.fgRequired) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.v(TAG, "Whitelisting " + UserHandle.formatUid(r.appInfo.uid) + + " for fg-service launch"); + } + mAm.tempWhitelistUidLocked(r.appInfo.uid, + SERVICE_START_FOREGROUND_TIMEOUT, "fg-service-launch"); + } + if (!mPendingServices.contains(r)) { mPendingServices.add(r); } @@ -3129,8 +3141,9 @@ public final class ActiveServices { // Any services running in the application may need to be placed // back in the pending list. - if (allowRestart && sr.crashCount >= 2 && (sr.serviceInfo.applicationInfo.flags - &ApplicationInfo.FLAG_PERSISTENT) == 0) { + if (allowRestart && sr.crashCount >= mAm.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY + && (sr.serviceInfo.applicationInfo.flags + &ApplicationInfo.FLAG_PERSISTENT) == 0) { Slog.w(TAG, "Service crashed " + sr.crashCount + " times, stopping: " + sr); EventLog.writeEvent(EventLogTags.AM_SERVICE_CRASHED_TOO_MUCH, diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 6c3fe915f386dd683df126f0d74454795c3b4995..b52db872f9786cec1eba2fafa5a916bae0e77510 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -32,6 +32,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_POWER_QUICK * Settings constants that can modify the activity manager's behavior. */ final class ActivityManagerConstants extends ContentObserver { + // Key names stored in the settings value. private static final String KEY_MAX_CACHED_PROCESSES = "max_cached_processes"; private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; @@ -48,9 +49,11 @@ final class ActivityManagerConstants extends ContentObserver { private static final String KEY_GC_MIN_INTERVAL = "gc_min_interval"; private static final String KEY_FULL_PSS_MIN_INTERVAL = "full_pss_min_interval"; private static final String KEY_FULL_PSS_LOWERED_INTERVAL = "full_pss_lowered_interval"; - private static final String KEY_POWER_CHECK_DELAY = "power_check_delay"; - private static final String KEY_WAKE_LOCK_MIN_CHECK_DURATION = "wake_lock_min_check_duration"; - private static final String KEY_CPU_MIN_CHECK_DURATION = "cpu_min_check_duration"; + private static final String KEY_POWER_CHECK_INTERVAL = "power_check_interval"; + private static final String KEY_POWER_CHECK_MAX_CPU_1 = "power_check_max_cpu_1"; + private static final String KEY_POWER_CHECK_MAX_CPU_2 = "power_check_max_cpu_2"; + private static final String KEY_POWER_CHECK_MAX_CPU_3 = "power_check_max_cpu_3"; + private static final String KEY_POWER_CHECK_MAX_CPU_4 = "power_check_max_cpu_4"; private static final String KEY_SERVICE_USAGE_INTERACTION_TIME = "service_usage_interaction_time"; private static final String KEY_USAGE_STATS_INTERACTION_INTERVAL @@ -61,6 +64,8 @@ final class ActivityManagerConstants extends ContentObserver { static final String KEY_SERVICE_MIN_RESTART_TIME_BETWEEN = "service_min_restart_time_between"; static final String KEY_MAX_SERVICE_INACTIVITY = "service_max_inactivity"; static final String KEY_BG_START_TIMEOUT = "service_bg_start_timeout"; + static final String KEY_BOUND_SERVICE_CRASH_RESTART_DURATION = "service_crash_restart_duration"; + static final String KEY_BOUND_SERVICE_CRASH_MAX_RETRY = "service_crash_max_retry"; private static final int DEFAULT_MAX_CACHED_PROCESSES = 32; private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000; @@ -73,11 +78,11 @@ final class ActivityManagerConstants extends ContentObserver { private static final long DEFAULT_GC_MIN_INTERVAL = 60*1000; private static final long DEFAULT_FULL_PSS_MIN_INTERVAL = 10*60*1000; private static final long DEFAULT_FULL_PSS_LOWERED_INTERVAL = 2*60*1000; - private static final long DEFAULT_POWER_CHECK_DELAY = (DEBUG_POWER_QUICK ? 2 : 15) * 60*1000; - private static final long DEFAULT_WAKE_LOCK_MIN_CHECK_DURATION - = (DEBUG_POWER_QUICK ? 1 : 5) * 60*1000; - private static final long DEFAULT_CPU_MIN_CHECK_DURATION - = (DEBUG_POWER_QUICK ? 1 : 5) * 60*1000; + private static final long DEFAULT_POWER_CHECK_INTERVAL = (DEBUG_POWER_QUICK ? 1 : 5) * 60*1000; + private static final int DEFAULT_POWER_CHECK_MAX_CPU_1 = 25; + private static final int DEFAULT_POWER_CHECK_MAX_CPU_2 = 25; + private static final int DEFAULT_POWER_CHECK_MAX_CPU_3 = 10; + private static final int DEFAULT_POWER_CHECK_MAX_CPU_4 = 2; private static final long DEFAULT_SERVICE_USAGE_INTERACTION_TIME = 30*60*1000; private static final long DEFAULT_USAGE_STATS_INTERACTION_INTERVAL = 24*60*60*1000L; private static final long DEFAULT_SERVICE_RESTART_DURATION = 1*1000; @@ -86,6 +91,9 @@ final class ActivityManagerConstants extends ContentObserver { private static final long DEFAULT_SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000; private static final long DEFAULT_MAX_SERVICE_INACTIVITY = 30*60*1000; private static final long DEFAULT_BG_START_TIMEOUT = 15*1000; + private static final long DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION = 30*60_000; + private static final int DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY = 16; + // Maximum number of cached processes we will allow. public int MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES; @@ -133,16 +141,26 @@ final class ActivityManagerConstants extends ContentObserver { // when the request is due to the memory state being lowered. long FULL_PSS_LOWERED_INTERVAL = DEFAULT_FULL_PSS_LOWERED_INTERVAL; - // The rate at which we check for apps using excessive power -- 15 mins. - long POWER_CHECK_DELAY = DEFAULT_POWER_CHECK_DELAY; - - // The minimum sample duration we will allow before deciding we have - // enough data on wake locks to start killing things. - long WAKE_LOCK_MIN_CHECK_DURATION = DEFAULT_WAKE_LOCK_MIN_CHECK_DURATION; - // The minimum sample duration we will allow before deciding we have // enough data on CPU usage to start killing things. - long CPU_MIN_CHECK_DURATION = DEFAULT_CPU_MIN_CHECK_DURATION; + long POWER_CHECK_INTERVAL = DEFAULT_POWER_CHECK_INTERVAL; + + // The maximum CPU (as a percentage) a process is allowed to use over the first + // power check interval that it is cached. + int POWER_CHECK_MAX_CPU_1 = DEFAULT_POWER_CHECK_MAX_CPU_1; + + // The maximum CPU (as a percentage) a process is allowed to use over the second + // power check interval that it is cached. The home app will never check for less + // CPU than this (it will not test against the 3 or 4 levels). + int POWER_CHECK_MAX_CPU_2 = DEFAULT_POWER_CHECK_MAX_CPU_2; + + // The maximum CPU (as a percentage) a process is allowed to use over the third + // power check interval that it is cached. + int POWER_CHECK_MAX_CPU_3 = DEFAULT_POWER_CHECK_MAX_CPU_3; + + // The maximum CPU (as a percentage) a process is allowed to use over the fourth + // power check interval that it is cached. + int POWER_CHECK_MAX_CPU_4 = DEFAULT_POWER_CHECK_MAX_CPU_4; // This is the amount of time an app needs to be running a foreground service before // we will consider it to be doing interaction for usage stats. @@ -178,6 +196,12 @@ final class ActivityManagerConstants extends ContentObserver { // allowing the next pending start to run. public long BG_START_TIMEOUT = DEFAULT_BG_START_TIMEOUT; + // Initial backoff delay for retrying bound foreground services + public long BOUND_SERVICE_CRASH_RESTART_DURATION = DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION; + + // Maximum number of retries for bound foreground services that crash soon after start + public long BOUND_SERVICE_MAX_CRASH_RETRY = DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY; + private final ActivityManagerService mService; private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -270,12 +294,16 @@ final class ActivityManagerConstants extends ContentObserver { DEFAULT_FULL_PSS_MIN_INTERVAL); FULL_PSS_LOWERED_INTERVAL = mParser.getLong(KEY_FULL_PSS_LOWERED_INTERVAL, DEFAULT_FULL_PSS_LOWERED_INTERVAL); - POWER_CHECK_DELAY = mParser.getLong(KEY_POWER_CHECK_DELAY, - DEFAULT_POWER_CHECK_DELAY); - WAKE_LOCK_MIN_CHECK_DURATION = mParser.getLong(KEY_WAKE_LOCK_MIN_CHECK_DURATION, - DEFAULT_WAKE_LOCK_MIN_CHECK_DURATION); - CPU_MIN_CHECK_DURATION = mParser.getLong(KEY_CPU_MIN_CHECK_DURATION, - DEFAULT_CPU_MIN_CHECK_DURATION); + POWER_CHECK_INTERVAL = mParser.getLong(KEY_POWER_CHECK_INTERVAL, + DEFAULT_POWER_CHECK_INTERVAL); + POWER_CHECK_MAX_CPU_1 = mParser.getInt(KEY_POWER_CHECK_MAX_CPU_1, + DEFAULT_POWER_CHECK_MAX_CPU_1); + POWER_CHECK_MAX_CPU_2 = mParser.getInt(KEY_POWER_CHECK_MAX_CPU_2, + DEFAULT_POWER_CHECK_MAX_CPU_2); + POWER_CHECK_MAX_CPU_3 = mParser.getInt(KEY_POWER_CHECK_MAX_CPU_3, + DEFAULT_POWER_CHECK_MAX_CPU_3); + POWER_CHECK_MAX_CPU_4 = mParser.getInt(KEY_POWER_CHECK_MAX_CPU_4, + DEFAULT_POWER_CHECK_MAX_CPU_4); SERVICE_USAGE_INTERACTION_TIME = mParser.getLong(KEY_SERVICE_USAGE_INTERACTION_TIME, DEFAULT_SERVICE_USAGE_INTERACTION_TIME); USAGE_STATS_INTERACTION_INTERVAL = mParser.getLong(KEY_USAGE_STATS_INTERACTION_INTERVAL, @@ -292,6 +320,12 @@ final class ActivityManagerConstants extends ContentObserver { DEFAULT_MAX_SERVICE_INACTIVITY); BG_START_TIMEOUT = mParser.getLong(KEY_BG_START_TIMEOUT, DEFAULT_BG_START_TIMEOUT); + BOUND_SERVICE_CRASH_RESTART_DURATION = mParser.getLong( + KEY_BOUND_SERVICE_CRASH_RESTART_DURATION, + DEFAULT_BOUND_SERVICE_CRASH_RESTART_DURATION); + BOUND_SERVICE_MAX_CRASH_RETRY = mParser.getInt(KEY_BOUND_SERVICE_CRASH_MAX_RETRY, + DEFAULT_BOUND_SERVICE_CRASH_MAX_RETRY); + updateMaxCachedProcesses(); } } @@ -335,12 +369,16 @@ final class ActivityManagerConstants extends ContentObserver { pw.println(FULL_PSS_MIN_INTERVAL); pw.print(" "); pw.print(KEY_FULL_PSS_LOWERED_INTERVAL); pw.print("="); pw.println(FULL_PSS_LOWERED_INTERVAL); - pw.print(" "); pw.print(KEY_POWER_CHECK_DELAY); pw.print("="); - pw.println(POWER_CHECK_DELAY); - pw.print(" "); pw.print(KEY_WAKE_LOCK_MIN_CHECK_DURATION); pw.print("="); - pw.println(WAKE_LOCK_MIN_CHECK_DURATION); - pw.print(" "); pw.print(KEY_CPU_MIN_CHECK_DURATION); pw.print("="); - pw.println(CPU_MIN_CHECK_DURATION); + pw.print(" "); pw.print(KEY_POWER_CHECK_INTERVAL); pw.print("="); + pw.println(POWER_CHECK_INTERVAL); + pw.print(" "); pw.print(KEY_POWER_CHECK_MAX_CPU_1); pw.print("="); + pw.println(POWER_CHECK_MAX_CPU_1); + pw.print(" "); pw.print(KEY_POWER_CHECK_MAX_CPU_2); pw.print("="); + pw.println(POWER_CHECK_MAX_CPU_2); + pw.print(" "); pw.print(KEY_POWER_CHECK_MAX_CPU_3); pw.print("="); + pw.println(POWER_CHECK_MAX_CPU_3); + pw.print(" "); pw.print(KEY_POWER_CHECK_MAX_CPU_4); pw.print("="); + pw.println(POWER_CHECK_MAX_CPU_4); pw.print(" "); pw.print(KEY_SERVICE_USAGE_INTERACTION_TIME); pw.print("="); pw.println(SERVICE_USAGE_INTERACTION_TIME); pw.print(" "); pw.print(KEY_USAGE_STATS_INTERACTION_INTERVAL); pw.print("="); diff --git a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java index f440100b76218c757aff3cac7ab7c84ded0d4958..3a9bf1258d127950ec5fb6ad736d59f448f556e9 100644 --- a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java +++ b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java @@ -91,7 +91,6 @@ class ActivityManagerDebugConfig { static final boolean DEBUG_URI_PERMISSION = DEBUG_ALL || false; static final boolean DEBUG_USER_LEAVING = DEBUG_ALL || false; static final boolean DEBUG_VISIBILITY = DEBUG_ALL || false; - static final boolean DEBUG_VISIBLE_BEHIND = DEBUG_ALL_ACTIVITIES || false; static final boolean DEBUG_USAGE_STATS = DEBUG_ALL || false; static final boolean DEBUG_PERMISSIONS_REVIEW = DEBUG_ALL || false; static final boolean DEBUG_WHITELISTS = DEBUG_ALL || false; diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 70c08c929fe3f871572f9c0e478f54456ac48ffd..dce0c38522383eb668b4ca71fb85c639c500f37a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -28,6 +28,7 @@ import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT; import static android.app.ActivityManager.RESIZE_MODE_PRESERVE_WINDOW; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; +import static android.app.ActivityManager.StackId.FIRST_DYNAMIC_STACK_ID; import static android.app.ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; @@ -95,6 +96,7 @@ import static android.provider.Settings.Global.NETWORK_ACCESS_TIMEOUT_MS; import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER; import static android.provider.Settings.System.FONT_SCALE; import static android.service.voice.VoiceInteractionSession.SHOW_SOURCE_APPLICATION; +import static android.text.format.DateUtils.DAY_IN_MILLIS; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static com.android.internal.util.XmlUtils.readBooleanAttribute; @@ -135,7 +137,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_UID_OBSERVE import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_URI_PERMISSION; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_USAGE_STATS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBILITY; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBLE_BEHIND; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_WHITELISTS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_BACKUP; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_BROADCAST; @@ -164,7 +165,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILIT import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBLE_BEHIND; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.am.ActivityStackSupervisor.ActivityContainer.FORCE_NEW_TASK_FLAGS; import static com.android.server.am.ActivityStackSupervisor.CREATE_IF_NEEDED; import static com.android.server.am.ActivityStackSupervisor.DEFER_RESUME; import static com.android.server.am.ActivityStackSupervisor.MATCH_TASK_IN_STACKS_ONLY; @@ -211,8 +211,6 @@ import android.app.ApplicationThreadConstants; import android.app.BroadcastOptions; import android.app.ContentProviderHolder; import android.app.Dialog; -import android.app.IActivityContainer; -import android.app.IActivityContainerCallback; import android.app.IActivityController; import android.app.IActivityManager; import android.app.IAppTask; @@ -255,7 +253,6 @@ import android.content.IIntentReceiver; import android.content.IIntentSender; import android.content.Intent; import android.content.IntentFilter; -import android.content.IntentSender; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ConfigurationInfo; @@ -342,7 +339,7 @@ import android.text.style.SuggestionSpan; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AtomicFile; -import android.util.BootTimingsTraceLog; +import android.util.TimingsTraceLog; import android.util.DebugUtils; import android.util.DisplayMetrics; import android.util.EventLog; @@ -415,6 +412,7 @@ import com.android.server.vr.VrManagerInternal; import com.android.server.wm.PinnedStackWindowController; import com.android.server.wm.WindowManagerService; +import java.text.SimpleDateFormat; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; @@ -468,7 +466,6 @@ public class ActivityManagerService extends IActivityManager.Stub private static final String TAG_CONFIGURATION = TAG + POSTFIX_CONFIGURATION; private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS; private static final String TAG_IMMERSIVE = TAG + POSTFIX_IMMERSIVE; - private static final String TAG_LOCKSCREEN = TAG + POSTFIX_LOCKSCREEN; private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK; private static final String TAG_LRU = TAG + POSTFIX_LRU; private static final String TAG_MU = TAG + POSTFIX_MU; @@ -486,7 +483,6 @@ public class ActivityManagerService extends IActivityManager.Stub private static final String TAG_UID_OBSERVERS = TAG + POSTFIX_UID_OBSERVERS; private static final String TAG_URI_PERMISSION = TAG + POSTFIX_URI_PERMISSION; private static final String TAG_VISIBILITY = TAG + POSTFIX_VISIBILITY; - private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND; // Mock "pretend we're idle now" broadcast action to the job scheduler; declared // here so that while the job scheduler can depend on AMS, the other way around @@ -508,8 +504,6 @@ public class ActivityManagerService extends IActivityManager.Stub static final String SYSTEM_DEBUGGABLE = "ro.debuggable"; - static final boolean IS_USER_BUILD = "user".equals(Build.TYPE); - // Amount of time after a call to stopAppSwitches() during which we will // prevent further untrusted switches from happening. static final long APP_SWITCH_DELAY_TIME = 5*1000; @@ -719,7 +713,7 @@ public class ActivityManagerService extends IActivityManager.Stub public boolean canShowErrorDialogs() { return mShowDialogs && !mSleeping && !mShuttingDown - && !mKeyguardController.isKeyguardShowing() + && !mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY) && !(UserManager.isDeviceInDemoMode(mContext) && mUserController.getCurrentUser().isDemo()); } @@ -1321,11 +1315,6 @@ public class ActivityManagerService extends IActivityManager.Stub */ boolean mDidAppSwitch; - /** - * Last time (in realtime) at which we checked for power usage. - */ - long mLastPowerCheckRealtime; - /** * Last time (in uptime) at which we checked for power usage. */ @@ -1356,7 +1345,7 @@ public class ActivityManagerService extends IActivityManager.Stub * Set while we are running a voice interaction. This overrides * sleeping while it is active. */ - private IVoiceInteractionSession mRunningVoice; + IVoiceInteractionSession mRunningVoice; /** * For some direct access we need to power manager. @@ -1375,13 +1364,6 @@ public class ActivityManagerService extends IActivityManager.Stub */ private int mWakefulness = PowerManagerInternal.WAKEFULNESS_AWAKE; - /** - * A list of tokens that cause the top activity to be put to sleep. - * They are used by components that may hide and block interaction with underlying - * activities. - */ - final ArrayList mSleepTokens = new ArrayList(); - /** * Set if we are shutting down the system, similar to sleeping. */ @@ -1489,7 +1471,7 @@ public class ActivityManagerService extends IActivityManager.Stub * Flag that indicates if multi-window is enabled. * * For any particular form of multi-window to be enabled, generic multi-window must be enabled - * in {@link com.android.internal.R.bool.config_supportsMultiWindow} config or + * in {@link com.android.internal.R.bool#config_supportsMultiWindow} config or * {@link Settings.Global#DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES} development option set. * At least one of the forms of multi-window must be enabled in order for this flag to be * initialized to 'true'. @@ -1509,11 +1491,7 @@ public class ActivityManagerService extends IActivityManager.Stub boolean mControllerIsAMonkey = false; String mProfileApp = null; ProcessRecord mProfileProc = null; - String mProfileFile; - ParcelFileDescriptor mProfileFd; - int mSamplingInterval = 0; - boolean mAutoStopProfiler = false; - boolean mStreamingOutput = false; + ProfilerInfo mProfilerInfo = null; int mProfileType = 0; final ProcessMap> mMemWatchProcesses = new ProcessMap<>(); String mMemWatchDumpProcName; @@ -1582,6 +1560,13 @@ public class ActivityManagerService extends IActivityManager.Stub final ArrayList mPendingUidChanges = new ArrayList<>(); final ArrayList mAvailUidChanges = new ArrayList<>(); + OomAdjObserver mCurOomAdjObserver; + int mCurOomAdjUid; + + interface OomAdjObserver { + void onOomAdjMessage(String msg); + } + /** * Runtime CPU use collection thread. This object's lock is used to * perform synchronization with the thread (notifying it to run). @@ -1660,7 +1645,7 @@ public class ActivityManagerService extends IActivityManager.Stub static final int POST_HEAVY_NOTIFICATION_MSG = 24; static final int CANCEL_HEAVY_NOTIFICATION_MSG = 25; static final int SHOW_STRICT_MODE_VIOLATION_UI_MSG = 26; - static final int CHECK_EXCESSIVE_WAKE_LOCKS_MSG = 27; + static final int CHECK_EXCESSIVE_POWER_USE_MSG = 27; static final int CLEAR_DNS_CACHE_MSG = 28; static final int UPDATE_HTTP_PROXY_MSG = 29; static final int SHOW_COMPAT_MODE_DIALOG_UI_MSG = 30; @@ -1703,7 +1688,9 @@ public class ActivityManagerService extends IActivityManager.Stub static final int DISPATCH_PENDING_INTENT_CANCEL_MSG = 67; static final int PUSH_TEMP_WHITELIST_UI_MSG = 68; static final int SERVICE_FOREGROUND_CRASH_MSG = 69; + static final int DISPATCH_OOM_ADJ_OBSERVER_MSG = 70; static final int START_USER_SWITCH_FG_MSG = 712; + static final int NOTIFY_VR_KEYGUARD_MSG = 74; static final int FIRST_ACTIVITY_STACK_MSG = 100; static final int FIRST_BROADCAST_QUEUE_MSG = 200; @@ -1745,6 +1732,8 @@ public class ActivityManagerService extends IActivityManager.Stub final boolean mPermissionReviewRequired; + private static String sTheRealBuildSerial = Build.UNKNOWN; + /** * Current global configuration information. Contains general settings for the entire system, * also corresponds to the merged configuration of the default display. @@ -1936,6 +1925,9 @@ public class ActivityManagerService extends IActivityManager.Stub case DISPATCH_UIDS_CHANGED_UI_MSG: { dispatchUidsChanged(); } break; + case DISPATCH_OOM_ADJ_OBSERVER_MSG: { + dispatchOomAdjObserver((String)msg.obj); + } break; case PUSH_TEMP_WHITELIST_UI_MSG: { pushTempWhitelist(); } break; @@ -2125,12 +2117,12 @@ public class ActivityManagerService extends IActivityManager.Stub } catch (RemoteException e) { } } break; - case CHECK_EXCESSIVE_WAKE_LOCKS_MSG: { + case CHECK_EXCESSIVE_POWER_USE_MSG: { synchronized (ActivityManagerService.this) { - checkExcessivePowerUsageLocked(true); - removeMessages(CHECK_EXCESSIVE_WAKE_LOCKS_MSG); - Message nmsg = obtainMessage(CHECK_EXCESSIVE_WAKE_LOCKS_MSG); - sendMessageDelayed(nmsg, mConstants.POWER_CHECK_DELAY); + checkExcessivePowerUsageLocked(); + removeMessages(CHECK_EXCESSIVE_POWER_USE_MSG); + Message nmsg = obtainMessage(CHECK_EXCESSIVE_POWER_USE_MSG); + sendMessageDelayed(nmsg, mConstants.POWER_CHECK_INTERVAL); } } break; case REPORT_MEM_USAGE_MSG: { @@ -2423,6 +2415,9 @@ public class ActivityManagerService extends IActivityManager.Stub case NOTIFY_VR_SLEEPING_MSG: { notifyVrManagerOfSleepState(msg.arg1 != 0); } break; + case NOTIFY_VR_KEYGUARD_MSG: { + notifyVrManagerOfKeyguardState(msg.arg1 != 0); + } break; case HANDLE_TRUST_STORAGE_UPDATE_MSG: { synchronized (ActivityManagerService.this) { for (int i = mLruProcesses.size() - 1 ; i >= 0 ; i--) { @@ -2662,6 +2657,11 @@ public class ActivityManagerService extends IActivityManager.Stub mService.start(); } + @Override + public void onCleanupUser(int userId) { + mService.mBatteryStatsService.onCleanupUser(userId); + } + public ActivityManagerService getService() { return mService; } @@ -2745,7 +2745,7 @@ public class ActivityManagerService extends IActivityManager.Stub File dataDir = Environment.getDataDirectory(); File systemDir = new File(dataDir, "system"); systemDir.mkdirs(); - mBatteryStatsService = new BatteryStatsService(systemDir, mHandler); + mBatteryStatsService = new BatteryStatsService(systemContext, systemDir, mHandler); mBatteryStatsService.getActiveStatistics().readLocked(); mBatteryStatsService.scheduleWriteToDisk(); mOnBattery = DEBUG_POWER ? true @@ -2848,7 +2848,7 @@ public class ActivityManagerService extends IActivityManager.Stub removeAllProcessGroups(); mProcessCpuThread.start(); - mBatteryStatsService.publish(mContext); + mBatteryStatsService.publish(); mAppOpsService.publish(mContext); Slog.d("AppOps", "AppOpsService published"); LocalServices.addService(ActivityManagerInternal.class, new LocalService()); @@ -3005,6 +3005,9 @@ public class ActivityManagerService extends IActivityManager.Stub } ps.addCpuTimeLocked(st.rel_utime, st.rel_stime); pr.curCpuTime += st.rel_utime + st.rel_stime; + if (pr.lastCpuTime == 0) { + pr.lastCpuTime = pr.curCpuTime; + } } else { BatteryStatsImpl.Uid.Proc ps = st.batteryStats; if (ps == null || !ps.isActive()) { @@ -3241,6 +3244,18 @@ public class ActivityManagerService extends IActivityManager.Stub } final void applyUpdateVrModeLocked(ActivityRecord r) { + // VR apps are expected to run in a main display. If an app is turning on VR for + // itself, but lives in a dynamic stack, then make sure that it is moved to the main + // fullscreen stack before enabling VR Mode. + // TODO: The goal of this code is to keep the VR app on the main display. When the + // stack implementation changes in the future, keep in mind that the use of the fullscreen + // stack is a means to move the activity to the main display and a moveActivityToDisplay() + // option would be a better choice here. + if (r.requestedVrComponent != null && r.getStackId() >= FIRST_DYNAMIC_STACK_ID) { + Slog.i(TAG, "Moving " + r.shortComponentName + " from stack " + r.getStackId() + + " to main stack for VR"); + moveTaskToStack(r.getTask().taskId, FULLSCREEN_WORKSPACE_STACK_ID, true /* toTop */); + } mHandler.sendMessage( mHandler.obtainMessage(VR_MODE_CHANGE_MSG, 0, 0, r)); } @@ -3258,6 +3273,19 @@ public class ActivityManagerService extends IActivityManager.Stub vrService.onSleepStateChanged(isSleeping); } + private void sendNotifyVrManagerOfKeyguardState(boolean isShowing) { + mHandler.sendMessage( + mHandler.obtainMessage(NOTIFY_VR_KEYGUARD_MSG, isShowing ? 1 : 0, 0)); + } + + private void notifyVrManagerOfKeyguardState(boolean isShowing) { + final VrManagerInternal vrService = LocalServices.getService(VrManagerInternal.class); + if (vrService == null) { + return; + } + vrService.onKeyguardStateChanged(isShowing); + } + final void showAskCompatModeDialogLocked(ActivityRecord r) { Message msg = Message.obtain(); msg.what = SHOW_COMPAT_MODE_DIALOG_UI_MSG; @@ -3577,10 +3605,8 @@ public class ActivityManagerService extends IActivityManager.Stub } void notifyPackageUse(String packageName, int reason) { - IPackageManager pm = AppGlobals.getPackageManager(); - try { - pm.notifyPackageUse(packageName, reason); - } catch (RemoteException e) { + synchronized(this) { + getPackageManagerInternalLocked().notifyPackageUse(packageName, reason); } } @@ -3861,7 +3887,7 @@ public class ActivityManagerService extends IActivityManager.Stub } if (app.info.isPrivilegedApp() && - SystemProperties.getBoolean("pm.dexopt.priv-apps-oob", false)) { + !SystemProperties.getBoolean("pm.dexopt.priv-apps", true)) { runtimeFlags |= Zygote.DISABLE_VERIFIER; runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES; } @@ -4135,8 +4161,7 @@ public class ActivityManagerService extends IActivityManager.Stub ri.activityInfo.packageName, ri.activityInfo.name)); mActivityStarter.startActivityLocked(null, intent, null /*ephemeralIntent*/, null, ri.activityInfo, null /*rInfo*/, null, null, null, null, 0, 0, 0, - null, 0, 0, 0, null, false, false, null, null, null, - "startSetupActivity"); + null, 0, 0, 0, null, false, false, null, null, "startSetupActivity"); } } } @@ -4359,8 +4384,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (VALIDATE_UID_STATES && mUidObservers.getRegisteredCallbackCount() > 0) { for (int j = 0; j < N; ++j) { final UidRecord.ChangeItem item = mActiveUidChanges[j]; - if (item.change == UidRecord.CHANGE_GONE - || item.change == UidRecord.CHANGE_GONE_IDLE) { + if ((item.change & UidRecord.CHANGE_GONE) != 0) { mValidateUids.remove(item.uid); } else { UidRecord validateUid = mValidateUids.get(item.uid); @@ -4368,9 +4392,9 @@ public class ActivityManagerService extends IActivityManager.Stub validateUid = new UidRecord(item.uid); mValidateUids.put(item.uid, validateUid); } - if (item.change == UidRecord.CHANGE_IDLE) { + if ((item.change & UidRecord.CHANGE_IDLE) != 0) { validateUid.idle = true; - } else if (item.change == UidRecord.CHANGE_ACTIVE) { + } else if ((item.change & UidRecord.CHANGE_ACTIVE) != 0) { validateUid.idle = false; } validateUid.curProcState = validateUid.setProcState = item.processState; @@ -4395,22 +4419,37 @@ public class ActivityManagerService extends IActivityManager.Stub for (int j = 0; j < changesSize; j++) { UidRecord.ChangeItem item = mActiveUidChanges[j]; final int change = item.change; - if (change == UidRecord.CHANGE_IDLE - || change == UidRecord.CHANGE_GONE_IDLE) { + if (change == UidRecord.CHANGE_PROCSTATE && + (reg.which & ActivityManager.UID_OBSERVER_PROCSTATE) == 0) { + // No-op common case: no significant change, the observer is not + // interested in all proc state changes. + continue; + } + if ((change & UidRecord.CHANGE_IDLE) != 0) { if ((reg.which & ActivityManager.UID_OBSERVER_IDLE) != 0) { if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, "UID idle uid=" + item.uid); observer.onUidIdle(item.uid, item.ephemeral); } - } else if (change == UidRecord.CHANGE_ACTIVE) { + } else if ((change & UidRecord.CHANGE_ACTIVE) != 0) { if ((reg.which & ActivityManager.UID_OBSERVER_ACTIVE) != 0) { if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, "UID active uid=" + item.uid); observer.onUidActive(item.uid); } } - if (change == UidRecord.CHANGE_GONE - || change == UidRecord.CHANGE_GONE_IDLE) { + if ((reg.which & ActivityManager.UID_OBSERVER_CACHED) != 0) { + if ((change & UidRecord.CHANGE_CACHED) != 0) { + if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, + "UID cached uid=" + item.uid); + observer.onUidCachedChanged(item.uid, true); + } else if ((change & UidRecord.CHANGE_UNCACHED) != 0) { + if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, + "UID active uid=" + item.uid); + observer.onUidCachedChanged(item.uid, false); + } + } + if ((change & UidRecord.CHANGE_GONE) != 0) { if ((reg.which & ActivityManager.UID_OBSERVER_GONE) != 0) { if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, "UID gone uid=" + item.uid); @@ -4451,6 +4490,38 @@ public class ActivityManagerService extends IActivityManager.Stub } } + void dispatchOomAdjObserver(String msg) { + OomAdjObserver observer; + synchronized (this) { + observer = mCurOomAdjObserver; + } + + if (observer != null) { + observer.onOomAdjMessage(msg); + } + } + + void setOomAdjObserver(int uid, OomAdjObserver observer) { + synchronized (this) { + mCurOomAdjUid = uid; + mCurOomAdjObserver = observer; + } + } + + void clearOomAdjObserver() { + synchronized (this) { + mCurOomAdjUid = -1; + mCurOomAdjObserver = null; + } + } + + void reportOomAdjMessageLocked(String tag, String msg) { + Slog.d(tag, msg); + if (mCurOomAdjObserver != null) { + mUiHandler.obtainMessage(DISPATCH_OOM_ADJ_OBSERVER_MSG, msg).sendToTarget(); + } + } + @Override public final int startActivity(IApplicationThread caller, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, @@ -4460,26 +4531,6 @@ public class ActivityManagerService extends IActivityManager.Stub UserHandle.getCallingUserId()); } - final int startActivity(Intent intent, ActivityStackSupervisor.ActivityContainer container) { - enforceNotIsolatedCaller("ActivityContainer.startActivity"); - final int userId = mUserController.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), mStackSupervisor.mCurrentUser, false, - ActivityManagerService.ALLOW_FULL_ONLY, "ActivityContainer", null); - - // TODO: Switch to user app stacks here. - String mimeType = intent.getType(); - final Uri data = intent.getData(); - if (mimeType == null && data != null && "content".equals(data.getScheme())) { - mimeType = getProviderMimeType(data, userId); - } - container.checkEmbeddedAllowedInner(userId, intent, mimeType); - - intent.addFlags(FORCE_NEW_TASK_FLAGS); - return mActivityStarter.startActivityMayWait(null, -1, null, intent, mimeType, null, null, - null, null, 0, 0, null, null, null, null, false, userId, container, null, - "startActivity"); - } - @Override public final int startActivityAsUser(IApplicationThread caller, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, @@ -4490,8 +4541,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, - profilerInfo, null, null, bOptions, false, userId, null, null, - "startActivityAsUser"); + profilerInfo, null, null, bOptions, false, userId, null, "startActivityAsUser"); } @Override @@ -4554,7 +4604,7 @@ public class ActivityManagerService extends IActivityManager.Stub try { int ret = mActivityStarter.startActivityMayWait(null, targetUid, targetPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, null, - null, null, bOptions, ignoreTargetSecurity, userId, null, null, + null, null, bOptions, ignoreTargetSecurity, userId, null, "startActivityAsCaller"); return ret; } catch (SecurityException e) { @@ -4584,7 +4634,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, profilerInfo, res, null, - bOptions, false, userId, null, null, "startActivityAndWait"); + bOptions, false, userId, null, "startActivityAndWait"); return res; } @@ -4598,7 +4648,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. int ret = mActivityStarter.startActivityMayWait(caller, -1, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, - null, null, config, bOptions, false, userId, null, null, "startActivityWithConfig"); + null, null, config, bOptions, false, userId, null, "startActivityWithConfig"); return ret; } @@ -4629,7 +4679,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } int ret = pir.sendInner(0, fillInIntent, resolvedType, whitelistToken, null, null, - resultTo, resultWho, requestCode, flagsMask, flagsValues, bOptions, null); + resultTo, resultWho, requestCode, flagsMask, flagsValues, bOptions); return ret; } @@ -4655,7 +4705,7 @@ public class ActivityManagerService extends IActivityManager.Stub // TODO: Switch to user app stacks here. return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, session, interactor, null, null, 0, startFlags, profilerInfo, null, - null, bOptions, false, userId, null, null, "startVoiceActivity"); + null, bOptions, false, userId, null, "startVoiceActivity"); } @Override @@ -4674,7 +4724,7 @@ public class ActivityManagerService extends IActivityManager.Stub ALLOW_FULL_ONLY, "startAssistantActivity", null); return mActivityStarter.startActivityMayWait(null, callingUid, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, null, bOptions, false, - userId, null, null, "startAssistantActivity"); + userId, null, "startAssistantActivity"); } @Override @@ -4847,7 +4897,7 @@ public class ActivityManagerService extends IActivityManager.Stub null /*ephemeralIntent*/, r.resolvedType, aInfo, null /*rInfo*/, null, null, resultTo != null ? resultTo.appToken : null, resultWho, requestCode, -1, r.launchedFromUid, r.launchedFromPackage, -1, r.launchedFromUid, 0, options, - false, false, null, null, null, "startNextMatchingActivity"); + false, false, null, null, "startNextMatchingActivity"); Binder.restoreCallingIdentity(origId); r.finishing = wasFinishing; @@ -4879,16 +4929,15 @@ public class ActivityManagerService extends IActivityManager.Stub final int startActivityInPackage(int uid, String callingPackage, Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode, int startFlags, Bundle bOptions, int userId, - IActivityContainer container, TaskRecord inTask, String reason) { + TaskRecord inTask, String reason) { userId = mUserController.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, false, ALLOW_FULL_ONLY, "startActivityInPackage", null); // TODO: Switch to user app stacks here. - int ret = mActivityStarter.startActivityMayWait(null, uid, callingPackage, intent, + return mActivityStarter.startActivityMayWait(null, uid, callingPackage, intent, resolvedType, null, null, resultTo, resultWho, requestCode, startFlags, - null, null, null, bOptions, false, userId, container, inTask, reason); - return ret; + null, null, null, bOptions, false, userId, inTask, reason); } @Override @@ -4919,13 +4968,13 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public void reportActivityFullyDrawn(IBinder token) { + public void reportActivityFullyDrawn(IBinder token, boolean restoredFromBundle) { synchronized (this) { ActivityRecord r = ActivityRecord.isInStackLocked(token); if (r == null) { return; } - r.reportFullyDrawnLocked(); + r.reportFullyDrawnLocked(restoredFromBundle); } } @@ -5485,8 +5534,8 @@ public class ActivityManagerService extends IActivityManager.Stub boolean useTombstonedForJavaTraces = false; File tracesFile; - final String tracesDir = SystemProperties.get("dalvik.vm.stack-trace-dir", ""); - if (tracesDir.isEmpty()) { + final String tracesDirProp = SystemProperties.get("dalvik.vm.stack-trace-dir", ""); + if (tracesDirProp.isEmpty()) { // When dalvik.vm.stack-trace-dir is not set, we are using the "old" trace // dumping scheme. All traces are written to a global trace file (usually // "/data/anr/traces.txt") so the code below must take care to unlink and recreate @@ -5514,18 +5563,17 @@ public class ActivityManagerService extends IActivityManager.Stub return null; } } else { + File tracesDir = new File(tracesDirProp); // When dalvik.vm.stack-trace-dir is set, we use the "new" trace dumping scheme. // Each set of ANR traces is written to a separate file and dumpstate will process // all such files and add them to a captured bug report if they're recent enough. - // + maybePruneOldTraces(tracesDir); + // NOTE: We should consider creating the file in native code atomically once we've // gotten rid of the old scheme of dumping and lot of the code that deals with paths // can be removed. - try { - tracesFile = File.createTempFile("anr_", "", new File(tracesDir)); - FileUtils.setPermissions(tracesFile.getAbsolutePath(), 0600, -1, -1); // -rw------- - } catch (IOException ioe) { - Slog.w(TAG, "Unable to create ANR traces file: ", ioe); + tracesFile = createAnrDumpFile(tracesDir); + if (tracesFile == null) { return null; } @@ -5537,6 +5585,53 @@ public class ActivityManagerService extends IActivityManager.Stub return tracesFile; } + @GuardedBy("ActivityManagerService.class") + private static SimpleDateFormat sAnrFileDateFormat; + + private static synchronized File createAnrDumpFile(File tracesDir) { + if (sAnrFileDateFormat == null) { + sAnrFileDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS"); + } + + final String formattedDate = sAnrFileDateFormat.format(new Date()); + final File anrFile = new File(tracesDir, "anr_" + formattedDate); + + try { + if (anrFile.createNewFile()) { + FileUtils.setPermissions(anrFile.getAbsolutePath(), 0600, -1, -1); // -rw------- + return anrFile; + } else { + Slog.w(TAG, "Unable to create ANR dump file: createNewFile failed"); + } + } catch (IOException ioe) { + Slog.w(TAG, "Exception creating ANR dump file:", ioe); + } + + return null; + } + + /** + * Prune all trace files that are more than a day old. + * + * NOTE: It might make sense to move this functionality to tombstoned eventually, along with a + * shift away from anr_XX and tombstone_XX to a more descriptive name. We do it here for now + * since it's the system_server that creates trace files for most ANRs. + */ + private static void maybePruneOldTraces(File tracesDir) { + final long now = System.currentTimeMillis(); + final File[] traceFiles = tracesDir.listFiles(); + + if (traceFiles != null) { + for (File file : traceFiles) { + if ((now - file.lastModified()) > DAY_IN_MILLIS) { + if (!file.delete()) { + Slog.w(TAG, "Unable to prune stale trace file: " + file); + } + } + } + } + } + /** * Legacy code, do not use. Existing users will be deleted. * @@ -5721,7 +5816,7 @@ public class ActivityManagerService extends IActivityManager.Stub } final void logAppTooSlow(ProcessRecord app, long startTime, String msg) { - if (true || IS_USER_BUILD) { + if (true || Build.IS_USER) { return; } String tracesPath = SystemProperties.get("dalvik.vm.stack-trace-file", null); @@ -5819,26 +5914,53 @@ public class ActivityManagerService extends IActivityManager.Stub enforceNotIsolatedCaller("clearApplicationUserData"); int uid = Binder.getCallingUid(); int pid = Binder.getCallingPid(); - userId = mUserController.handleIncomingUser(pid, uid, userId, false, + final int resolvedUserId = mUserController.handleIncomingUser(pid, uid, userId, false, ALLOW_FULL_ONLY, "clearApplicationUserData", null); + final ApplicationInfo appInfo; + final boolean isInstantApp; long callingId = Binder.clearCallingIdentity(); try { IPackageManager pm = AppGlobals.getPackageManager(); - int pkgUid = -1; synchronized(this) { + // Instant packages are not protected if (getPackageManagerInternalLocked().isPackageDataProtected( - userId, packageName)) { + resolvedUserId, packageName)) { throw new SecurityException( "Cannot clear data for a protected package: " + packageName); } + ApplicationInfo applicationInfo = null; try { - pkgUid = pm.getPackageUid(packageName, MATCH_UNINSTALLED_PACKAGES, userId); + applicationInfo = pm.getApplicationInfo(packageName, + MATCH_UNINSTALLED_PACKAGES, resolvedUserId); } catch (RemoteException e) { + /* ignore */ } - if (pkgUid == -1) { + appInfo = applicationInfo; + + final boolean clearingOwnUidData = appInfo != null && appInfo.uid == uid; + + if (!clearingOwnUidData && checkComponentPermission(permission.CLEAR_APP_USER_DATA, + pid, uid, -1, true) != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("PID " + pid + " does not have permission " + + android.Manifest.permission.CLEAR_APP_USER_DATA + " to clear data" + + " of package " + packageName); + } + + final boolean hasInstantMetadata = getPackageManagerInternalLocked() + .hasInstantApplicationMetadata(packageName, resolvedUserId); + final boolean isUninstalledAppWithoutInstantMetadata = + (appInfo == null && !hasInstantMetadata); + isInstantApp = (appInfo != null && appInfo.isInstantApp()) + || hasInstantMetadata; + final boolean canAccessInstantApps = checkComponentPermission( + permission.ACCESS_INSTANT_APPS, pid, uid, -1, true) + == PackageManager.PERMISSION_GRANTED; + + if (isUninstalledAppWithoutInstantMetadata || (isInstantApp + && !canAccessInstantApps)) { Slog.w(TAG, "Invalid packageName: " + packageName); if (observer != null) { try { @@ -5849,45 +5971,45 @@ public class ActivityManagerService extends IActivityManager.Stub } return false; } - if (uid == pkgUid || checkComponentPermission( - android.Manifest.permission.CLEAR_APP_USER_DATA, - pid, uid, -1, true) - == PackageManager.PERMISSION_GRANTED) { - forceStopPackageLocked(packageName, pkgUid, "clear data"); - } else { - throw new SecurityException("PID " + pid + " does not have permission " - + android.Manifest.permission.CLEAR_APP_USER_DATA + " to clear data" - + " of package " + packageName); - } - // Remove all tasks match the cleared application package and user - for (int i = mRecentTasks.size() - 1; i >= 0; i--) { - final TaskRecord tr = mRecentTasks.get(i); - final String taskPackageName = - tr.getBaseIntent().getComponent().getPackageName(); - if (tr.userId != userId) continue; - if (!taskPackageName.equals(packageName)) continue; - mStackSupervisor.removeTaskByIdLocked(tr.taskId, false, REMOVE_FROM_RECENTS); + if (appInfo != null) { + forceStopPackageLocked(packageName, appInfo.uid, "clear data"); + // Remove all tasks match the cleared application package and user + for (int i = mRecentTasks.size() - 1; i >= 0; i--) { + final TaskRecord tr = mRecentTasks.get(i); + final String taskPackageName = + tr.getBaseIntent().getComponent().getPackageName(); + if (tr.userId != resolvedUserId) continue; + if (!taskPackageName.equals(packageName)) continue; + mStackSupervisor.removeTaskByIdLocked(tr.taskId, false, + REMOVE_FROM_RECENTS); + } } } - final int pkgUidF = pkgUid; - final int userIdF = userId; final IPackageDataObserver localObserver = new IPackageDataObserver.Stub() { @Override public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException { - synchronized (ActivityManagerService.this) { - finishForceStopPackageLocked(packageName, pkgUidF); + if (appInfo != null) { + synchronized (ActivityManagerService.this) { + finishForceStopPackageLocked(packageName, appInfo.uid); + } } - final Intent intent = new Intent(Intent.ACTION_PACKAGE_DATA_CLEARED, Uri.fromParts("package", packageName, null)); intent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); - intent.putExtra(Intent.EXTRA_UID, pkgUidF); - intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(pkgUidF)); - broadcastIntentInPackage("android", SYSTEM_UID, intent, - null, null, 0, null, null, null, null, false, false, userIdF); + intent.putExtra(Intent.EXTRA_UID, (appInfo != null) ? appInfo.uid : -1); + intent.putExtra(Intent.EXTRA_USER_HANDLE, resolvedUserId); + if (isInstantApp) { + intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName); + broadcastIntentInPackage("android", SYSTEM_UID, intent, null, null, 0, + null, null, permission.ACCESS_INSTANT_APPS, null, false, false, + resolvedUserId); + } else { + broadcastIntentInPackage("android", SYSTEM_UID, intent, null, null, 0, + null, null, null, null, false, false, resolvedUserId); + } if (observer != null) { observer.onRemoveCompleted(packageName, succeeded); @@ -5897,16 +6019,18 @@ public class ActivityManagerService extends IActivityManager.Stub try { // Clear application user data - pm.clearApplicationUserData(packageName, localObserver, userId); + pm.clearApplicationUserData(packageName, localObserver, resolvedUserId); - synchronized(this) { - // Remove all permissions granted from/to this package - removeUriPermissionsForPackageLocked(packageName, userId, true); - } + if (appInfo != null) { + synchronized (this) { + // Remove all permissions granted from/to this package + removeUriPermissionsForPackageLocked(packageName, resolvedUserId, true); + } - // Reset notification settings. - INotificationManager inm = NotificationManager.getService(); - inm.clearData(packageName, pkgUidF, uid == pkgUidF); + // Reset notification settings. + INotificationManager inm = NotificationManager.getService(); + inm.clearData(packageName, appInfo.uid, uid == appInfo.uid); + } } catch (RemoteException e) { } } finally { @@ -6670,7 +6794,6 @@ public class ActivityManagerService extends IActivityManager.Stub mActiveUids.put(proc.uid, uidRec); EventLogTags.writeAmUidRunning(uidRec.uid); noteUidProcessState(uidRec.uid, uidRec.curProcState); - enqueueUidChangeLocked(uidRec, -1, UidRecord.CHANGE_ACTIVE); } proc.uidRecord = uidRec; @@ -6710,10 +6833,6 @@ public class ActivityManagerService extends IActivityManager.Stub mHandler.removeMessages(PROC_START_TIMEOUT_MSG, app); } mBatteryStatsService.noteProcessFinish(app.processName, app.info.uid); - if (app.isolated) { - mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid); - getPackageManagerInternalLocked().removeIsolatedUid(app.uid); - } boolean willRestart = false; if (app.persistent && !app.isolated) { if (!callerWillRestart) { @@ -6723,6 +6842,10 @@ public class ActivityManagerService extends IActivityManager.Stub } } app.kill(reason, true); + if (app.isolated) { + mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid); + getPackageManagerInternalLocked().removeIsolatedUid(app.uid); + } handleAppDiedLocked(app, willRestart, allowRestart); if (willRestart) { removeLruProcessLocked(app); @@ -6762,14 +6885,14 @@ public class ActivityManagerService extends IActivityManager.Stub mHeavyWeightProcess = null; } mBatteryStatsService.noteProcessFinish(app.processName, app.info.uid); - if (app.isolated) { - mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid); - } // Take care of any launching providers waiting for this process. cleanupAppInLaunchingProvidersLocked(app, true); // Take care of any services that are waiting for the process. mServices.processStartTimedOutLocked(app); app.kill("start timeout", true); + if (app.isolated) { + mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid); + } removeLruProcessLocked(app); if (mBackupTarget != null && mBackupTarget.app.pid == pid) { Slog.w(TAG, "Unattached app died before backup, skipping"); @@ -6902,19 +7025,19 @@ public class ActivityManagerService extends IActivityManager.Stub mWaitForDebugger = mOrigWaitForDebugger; } } - String profileFile = app.instr != null ? app.instr.mProfileFile : null; - ParcelFileDescriptor profileFd = null; - int samplingInterval = 0; - boolean profileAutoStop = false; - boolean profileStreamingOutput = false; + + ProfilerInfo profilerInfo = null; + String agent = null; if (mProfileApp != null && mProfileApp.equals(processName)) { mProfileProc = app; - profileFile = mProfileFile; - profileFd = mProfileFd; - samplingInterval = mSamplingInterval; - profileAutoStop = mAutoStopProfiler; - profileStreamingOutput = mStreamingOutput; + profilerInfo = (mProfilerInfo != null && mProfilerInfo.profileFile != null) ? + new ProfilerInfo(mProfilerInfo) : null; + agent = mProfilerInfo != null ? mProfilerInfo.agent : null; + } else if (app.instr != null && app.instr.mProfileFile != null) { + profilerInfo = new ProfilerInfo(app.instr.mProfileFile, null, 0, false, false, + null); } + boolean enableTrackAllocation = false; if (mTrackAllocationApp != null && mTrackAllocationApp.equals(processName)) { enableTrackAllocation = true; @@ -6938,22 +7061,16 @@ public class ActivityManagerService extends IActivityManager.Stub + processName + " with config " + getGlobalConfiguration()); ApplicationInfo appInfo = app.instr != null ? app.instr.mTargetInfo : app.info; app.compat = compatibilityInfoForPackageLocked(appInfo); - if (profileFd != null) { - profileFd = profileFd.dup(); + + if (profilerInfo != null && profilerInfo.profileFd != null) { + profilerInfo.profileFd = profilerInfo.profileFd.dup(); } - ProfilerInfo profilerInfo = profileFile == null ? null - : new ProfilerInfo(profileFile, profileFd, samplingInterval, profileAutoStop, - profileStreamingOutput); // We deprecated Build.SERIAL and it is not accessible to // apps that target the v2 security sandbox. Since access to // the serial is now behind a permission we push down the value. - String buildSerial = Build.UNKNOWN; - if (appInfo.targetSandboxVersion != 2) { - buildSerial = IDeviceIdentifiersPolicyService.Stub.asInterface( - ServiceManager.getService(Context.DEVICE_IDENTIFIERS_SERVICE)) - .getSerial(); - } + String buildSerial = appInfo.targetSandboxVersion < 2 + ? sTheRealBuildSerial : Build.UNKNOWN; // Check if this is a secondary process that should be incorporated into some // currently active instrumentation. (Note we do this AFTER all of the profiling @@ -6983,6 +7100,12 @@ public class ActivityManagerService extends IActivityManager.Stub } } + // If we were asked to attach an agent on startup, do so now, before we're binding + // application code. + if (agent != null) { + thread.attachAgent(agent); + } + checkTime(startTime, "attachApplicationLocked: immediately before bindApplication"); mStackSupervisor.mActivityMetricsLogger.notifyBindApplication(app); if (app.instr != null) { @@ -7118,11 +7241,7 @@ public class ActivityManagerService extends IActivityManager.Stub mStackSupervisor.activityIdleInternalLocked(token, false /* fromTimeout */, false /* processPausingActivities */, config); if (stopProfiling) { - if ((mProfileProc == r.app) && (mProfileFd != null)) { - try { - mProfileFd.close(); - } catch (IOException e) { - } + if ((mProfileProc == r.app) && mProfilerInfo != null) { clearProfilerLocked(); } } @@ -7251,8 +7370,8 @@ public class ActivityManagerService extends IActivityManager.Stub if (mFactoryTest != FactoryTest.FACTORY_TEST_LOW_LEVEL) { // Start looking for apps that are abusing wake locks. - Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_WAKE_LOCKS_MSG); - mHandler.sendMessageDelayed(nmsg, mConstants.POWER_CHECK_DELAY); + Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_POWER_USE_MSG); + mHandler.sendMessageDelayed(nmsg, mConstants.POWER_CHECK_INTERVAL); // Tell anyone interested that we are done booting! SystemProperties.set("sys.boot_completed", "1"); @@ -7395,21 +7514,6 @@ public class ActivityManagerService extends IActivityManager.Stub } } - @Override - public final void backgroundResourcesReleased(IBinder token) { - final long origId = Binder.clearCallingIdentity(); - try { - synchronized (this) { - ActivityStack stack = ActivityRecord.getStackLocked(token); - if (stack != null) { - stack.backgroundResourcesReleased(); - } - } - } finally { - Binder.restoreCallingIdentity(origId); - } - } - @Override public final void notifyLaunchTaskBehindComplete(IBinder token) { mStackSupervisor.scheduleLaunchTaskBehindComplete(token); @@ -8007,7 +8111,7 @@ public class ActivityManagerService extends IActivityManager.Stub // Activity supports picture-in-picture, now check that we can enter PiP at this // point, if it is if (!r.checkEnterPictureInPictureState("enterPictureInPictureMode", - false /* noThrow */, false /* beforeStopping */)) { + false /* beforeStopping */)) { return false; } @@ -8025,7 +8129,7 @@ public class ActivityManagerService extends IActivityManager.Stub stack.setPictureInPictureActions(actions); MetricsLogger.action(mContext, MetricsEvent.ACTION_PICTURE_IN_PICTURE_ENTERED, - r.supportsPictureInPictureWhilePausing); + r.supportsEnterPipOnTaskSwitch); logPictureInPictureArgs(params); }; @@ -8710,6 +8814,19 @@ public class ActivityManagerService extends IActivityManager.Stub return -1; } + // Bail early if system is trying to hand out permissions directly; it + // must always grant permissions on behalf of someone explicit. + final int callingAppId = UserHandle.getAppId(callingUid); + if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) { + if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) { + // Exempted authority for cropping user photos in Settings app + } else { + Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission" + + " grant to " + grantUri + "; use startActivityAsCaller() instead"); + return -1; + } + } + final String authority = grantUri.uri.getAuthority(); final ProviderInfo pi = getProviderInfoLocked(authority, grantUri.sourceUserId, MATCH_DEBUG_TRIAGED_MISSING); @@ -8805,16 +8922,6 @@ public class ActivityManagerService extends IActivityManager.Stub // Third... does the caller itself have permission to access // this uri? - final int callingAppId = UserHandle.getAppId(callingUid); - if ((callingAppId == SYSTEM_UID) || (callingAppId == ROOT_UID)) { - if ("com.android.settings.files".equals(grantUri.uri.getAuthority())) { - // Exempted authority for cropping user photos in Settings app - } else { - Slog.w(TAG, "For security reasons, the system cannot issue a Uri permission" - + " grant to " + grantUri + "; use startActivityAsCaller() instead"); - return -1; - } - } if (!checkHoldingPermissionsLocked(pm, pi, grantUri, callingUid, modeFlags)) { // Require they hold a strong enough Uri permission if (!checkUriPermissionLocked(grantUri, callingUid, modeFlags)) { @@ -10449,44 +10556,25 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public IActivityContainer createVirtualActivityContainer(IBinder parentActivityToken, - IActivityContainerCallback callback) throws RemoteException { - enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "createActivityContainer()"); - synchronized (this) { - if (parentActivityToken == null) { - throw new IllegalArgumentException("parent token must not be null"); - } - ActivityRecord r = ActivityRecord.forTokenLocked(parentActivityToken); - if (r == null) { - return null; - } - if (callback == null) { - throw new IllegalArgumentException("callback must not be null"); - } - return mStackSupervisor.createVirtualActivityContainer(r, callback); - } - } - - @Override - public IActivityContainer createStackOnDisplay(int displayId) throws RemoteException { + public int createStackOnDisplay(int displayId) throws RemoteException { enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "createStackOnDisplay()"); synchronized (this) { final int stackId = mStackSupervisor.getNextStackId(); final ActivityStack stack = mStackSupervisor.createStackOnDisplay(stackId, displayId, true /*onTop*/); if (stack == null) { - return null; + return INVALID_STACK_ID; } - return stack.mActivityContainer; + return stack.mStackId; } } @Override public int getActivityDisplayId(IBinder activityToken) throws RemoteException { synchronized (this) { - ActivityStack stack = ActivityRecord.getStackLocked(activityToken); - if (stack != null && stack.mActivityContainer.isAttachedLocked()) { - return stack.mActivityContainer.getDisplayId(); + final ActivityStack stack = ActivityRecord.getStackLocked(activityToken); + if (stack != null && stack.mDisplayId != INVALID_DISPLAY) { + return stack.mDisplayId; } return DEFAULT_DISPLAY; } @@ -12402,8 +12490,15 @@ public class ActivityManagerService extends IActivityManager.Stub void onWakefulnessChanged(int wakefulness) { synchronized(this) { + boolean wasAwake = mWakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE; + boolean isAwake = wakefulness == PowerManagerInternal.WAKEFULNESS_AWAKE; mWakefulness = wakefulness; - updateSleepIfNeededLocked(); + + if (wasAwake != isAwake) { + // Also update state in a special way for running foreground services UI. + mServices.updateScreenStateLocked(isAwake); + sendNotifyVrManagerOfSleepState(!isAwake); + } } } @@ -12423,14 +12518,23 @@ public class ActivityManagerService extends IActivityManager.Stub } void updateSleepIfNeededLocked() { - final boolean shouldSleep = shouldSleepLocked(); - if (mSleeping && !shouldSleep) { - mSleeping = false; - startTimeTrackingFocusedActivityLocked(); - mTopProcessState = ActivityManager.PROCESS_STATE_TOP; - mStackSupervisor.comeOutOfSleepIfNeededLocked(); - sendNotifyVrManagerOfSleepState(false); - updateOomAdjLocked(); + final boolean shouldSleep = !mStackSupervisor.hasAwakeDisplay(); + final boolean wasSleeping = mSleeping; + + if (!shouldSleep) { + // If wasSleeping is true, we need to wake up activity manager state from when + // we started sleeping. In either case, we need to apply the sleep tokens, which + // will wake up stacks or put them to sleep as appropriate. + if (wasSleeping) { + mSleeping = false; + startTimeTrackingFocusedActivityLocked(); + mTopProcessState = ActivityManager.PROCESS_STATE_TOP; + mStackSupervisor.comeOutOfSleepIfNeededLocked(); + } + mStackSupervisor.applySleepTokensLocked(true /* applyToStacks */); + if (wasSleeping) { + updateOomAdjLocked(); + } } else if (!mSleeping && shouldSleep) { mSleeping = true; if (mCurAppTimeTracker != null) { @@ -12438,48 +12542,7 @@ public class ActivityManagerService extends IActivityManager.Stub } mTopProcessState = ActivityManager.PROCESS_STATE_TOP_SLEEPING; mStackSupervisor.goingToSleepLocked(); - sendNotifyVrManagerOfSleepState(true); updateOomAdjLocked(); - - // Initialize the wake times of all processes. - checkExcessivePowerUsageLocked(false); - mHandler.removeMessages(CHECK_EXCESSIVE_WAKE_LOCKS_MSG); - Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_WAKE_LOCKS_MSG); - mHandler.sendMessageDelayed(nmsg, mConstants.POWER_CHECK_DELAY); - } - - // Also update state in a special way for running foreground services UI. - switch (mWakefulness) { - case PowerManagerInternal.WAKEFULNESS_ASLEEP: - case PowerManagerInternal.WAKEFULNESS_DREAMING: - case PowerManagerInternal.WAKEFULNESS_DOZING: - mServices.updateScreenStateLocked(false); - break; - case PowerManagerInternal.WAKEFULNESS_AWAKE: - default: - mServices.updateScreenStateLocked(true); - break; - } - } - - private boolean shouldSleepLocked() { - // Resume applications while running a voice interactor. - if (mRunningVoice != null) { - return false; - } - - // TODO: Transform the lock screen state into a sleep token instead. - switch (mWakefulness) { - case PowerManagerInternal.WAKEFULNESS_AWAKE: - case PowerManagerInternal.WAKEFULNESS_DREAMING: - // Pause applications whenever the lock screen is shown or any sleep - // tokens have been acquired. - return mKeyguardController.isKeyguardShowing() || !mSleepTokens.isEmpty(); - case PowerManagerInternal.WAKEFULNESS_DOZING: - case PowerManagerInternal.WAKEFULNESS_ASLEEP: - default: - // If we're asleep then pause applications unconditionally. - return true; } } @@ -12521,6 +12584,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized(this) { mShuttingDown = true; + mStackSupervisor.prepareForShutdownLocked(); updateEventDispatchingLocked(); timedout = mStackSupervisor.shutdownLocked(timeout); } @@ -12571,7 +12635,7 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public void setLockScreenShown(boolean showing) { + public void setLockScreenShown(boolean showing, int secondaryDisplayShowing) { if (checkCallingPermission(android.Manifest.permission.DEVICE_POWER) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Requires permission " @@ -12581,11 +12645,12 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized(this) { long ident = Binder.clearCallingIdentity(); try { - mKeyguardController.setKeyguardShown(showing); + mKeyguardController.setKeyguardShown(showing, secondaryDisplayShowing); } finally { Binder.restoreCallingIdentity(ident); } } + sendNotifyVrManagerOfKeyguardState(showing); } @Override @@ -12749,18 +12814,16 @@ public class ActivityManagerService extends IActivityManager.Stub } } mProfileApp = processName; - mProfileFile = profilerInfo.profileFile; - if (mProfileFd != null) { - try { - mProfileFd.close(); - } catch (IOException e) { + + if (mProfilerInfo != null) { + if (mProfilerInfo.profileFd != null) { + try { + mProfilerInfo.profileFd.close(); + } catch (IOException e) { + } } - mProfileFd = null; } - mProfileFd = profilerInfo.profileFd; - mSamplingInterval = profilerInfo.samplingInterval; - mAutoStopProfiler = profilerInfo.autoStopProfiler; - mStreamingOutput = profilerInfo.streamingOutput; + mProfilerInfo = new ProfilerInfo(profilerInfo); mProfileType = 0; } } @@ -12860,6 +12923,10 @@ public class ActivityManagerService extends IActivityManager.Stub throw new IllegalArgumentException("Provided bugreport type is not correct, value: " + bugreportType); } + // Always log caller, even if it does not have permission to dump. + String type = extraOptions == null ? "bugreport" : extraOptions; + Slog.i(TAG, type + " requested by UID " + Binder.getCallingUid()); + enforceCallingPermission(android.Manifest.permission.DUMP, "requestBugReport"); if (extraOptions != null) { SystemProperties.set("dumpstate.options", extraOptions); @@ -13104,6 +13171,10 @@ public class ActivityManagerService extends IActivityManager.Stub + " couldn't be found"); return null; } + if (activity.app == null || activity.app.thread == null) { + Slog.w(TAG, "enqueueAssistContext failed: no process for " + activity); + return null; + } } PendingAssistExtras pae; @@ -13185,7 +13256,6 @@ public class ActivityManagerService extends IActivityManager.Stub return; } } - // We are now ready to launch the assist activity. IResultReceiver sendReceiver = null; Bundle sendBundle = null; @@ -13215,17 +13285,24 @@ public class ActivityManagerService extends IActivityManager.Stub return; } - long ident = Binder.clearCallingIdentity(); + final long ident = Binder.clearCallingIdentity(); try { - pae.intent.replaceExtras(pae.extras); - pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_SINGLE_TOP - | Intent.FLAG_ACTIVITY_CLEAR_TOP); - closeSystemDialogs("assist"); - try { - mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle)); - } catch (ActivityNotFoundException e) { - Slog.w(TAG, "No activity to handle assist action.", e); + if (TextUtils.equals(pae.intent.getAction(), + android.service.voice.VoiceInteractionService.SERVICE_INTERFACE)) { + pae.intent.putExtras(pae.extras); + mContext.startServiceAsUser(pae.intent, new UserHandle(pae.userHandle)); + } else { + pae.intent.replaceExtras(pae.extras); + pae.intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_SINGLE_TOP + | Intent.FLAG_ACTIVITY_CLEAR_TOP); + closeSystemDialogs("assist"); + + try { + mContext.startActivityAsUser(pae.intent, new UserHandle(pae.userHandle)); + } catch (ActivityNotFoundException e) { + Slog.w(TAG, "No activity to handle assist action.", e); + } } } finally { Binder.restoreCallingIdentity(ident); @@ -13298,7 +13375,6 @@ public class ActivityManagerService extends IActivityManager.Stub } final boolean translucentChanged = r.changeWindowTranslucency(true); if (translucentChanged) { - r.getStack().releaseBackgroundResources(r); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); } mWindowManager.setAppFullscreen(token, true); @@ -13337,38 +13413,6 @@ public class ActivityManagerService extends IActivityManager.Stub } } - @Override - public boolean requestVisibleBehind(IBinder token, boolean visible) { - final long origId = Binder.clearCallingIdentity(); - try { - synchronized (this) { - final ActivityRecord r = ActivityRecord.isInStackLocked(token); - if (r != null) { - return mStackSupervisor.requestVisibleBehindLocked(r, visible); - } - } - return false; - } finally { - Binder.restoreCallingIdentity(origId); - } - } - - @Override - public boolean isBackgroundVisibleBehind(IBinder token) { - final long origId = Binder.clearCallingIdentity(); - try { - synchronized (this) { - final ActivityStack stack = ActivityRecord.getStackLocked(token); - final boolean visible = stack == null ? false : stack.hasVisibleBehindActivity(); - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, - "isBackgroundVisibleBehind: stack=" + stack + " visible=" + visible); - return visible; - } - } finally { - Binder.restoreCallingIdentity(origId); - } - } - @Override public Bundle getActivityOptions(IBinder token) { final long origId = Binder.clearCallingIdentity(); @@ -13376,7 +13420,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { final ActivityRecord r = ActivityRecord.isInStackLocked(token); if (r != null) { - final ActivityOptions activityOptions = r.pendingOptions; + final ActivityOptions activityOptions = r.takeOptionsLocked(); return activityOptions == null ? null : activityOptions.toBundle(); } return null; @@ -13449,7 +13493,7 @@ public class ActivityManagerService extends IActivityManager.Stub /** * Schedule the given thread a normal scheduling priority. * - * @param newTid the tid of the thread to adjust the scheduling of. + * @param tid the tid of the thread to adjust the scheduling of. * @param suppressLogs {@code true} if any error logging should be disabled. * * @return {@code true} if this succeeded. @@ -13462,6 +13506,10 @@ public class ActivityManagerService extends IActivityManager.Stub if (!suppressLogs) { Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e); } + } catch (SecurityException e) { + if (!suppressLogs) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); + } } return false; } @@ -13469,7 +13517,7 @@ public class ActivityManagerService extends IActivityManager.Stub /** * Schedule the given thread an FIFO scheduling priority. * - * @param newTid the tid of the thread to adjust the scheduling of. + * @param tid the tid of the thread to adjust the scheduling of. * @param suppressLogs {@code true} if any error logging should be disabled. * * @return {@code true} if this succeeded. @@ -13482,6 +13530,10 @@ public class ActivityManagerService extends IActivityManager.Stub if (!suppressLogs) { Slog.w(TAG, "Failed to set scheduling policy, thread does not exist:\n" + e); } + } catch (SecurityException e) { + if (!suppressLogs) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); + } } return false; } @@ -14019,10 +14071,10 @@ public class ActivityManagerService extends IActivityManager.Stub mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT) || Settings.Global.getInt( resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0; - final boolean supportsPictureInPicture = - mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); final boolean supportsMultiWindow = ActivityManager.supportsMultiWindow(mContext); + final boolean supportsPictureInPicture = supportsMultiWindow && + mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); final boolean supportsSplitScreenMultiWindow = ActivityManager.supportsSplitScreenMultiWindow(mContext); final boolean supportsMultiDisplay = mContext.getPackageManager() @@ -14103,7 +14155,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } - public void systemReady(final Runnable goingCallback, BootTimingsTraceLog traceLog) { + public void systemReady(final Runnable goingCallback, TimingsTraceLog traceLog) { traceLog.traceBegin("PhaseActivityManagerReady"); synchronized(this) { if (mSystemReady) { @@ -14126,6 +14178,12 @@ public class ActivityManagerService extends IActivityManager.Stub mSystemReady = true; } + try { + sTheRealBuildSerial = IDeviceIdentifiersPolicyService.Stub.asInterface( + ServiceManager.getService(Context.DEVICE_IDENTIFIERS_SERVICE)) + .getSerial(); + } catch (RemoteException e) {} + ArrayList procsToKill = null; synchronized(mPidsSelfLocked) { for (int i=mPidsSelfLocked.size()-1; i>=0; i--) { @@ -14532,7 +14590,7 @@ public class ActivityManagerService extends IActivityManager.Stub final ProcessRecord r = handleApplicationWtfInner(callingUid, callingPid, app, tag, crashInfo); - final boolean isFatal = "eng".equals(Build.TYPE) || Settings.Global + final boolean isFatal = Build.IS_ENG || Settings.Global .getInt(mContext.getContentResolver(), Settings.Global.WTF_IS_FATAL, 0) != 0; final boolean isSystem = (r == null) || r.persistent; @@ -14628,6 +14686,9 @@ public class ActivityManagerService extends IActivityManager.Stub } sb.append("\n"); } + if (process.info.isInstantApp()) { + sb.append("Instant-App: true\n"); + } } } @@ -14964,6 +15025,14 @@ public class ActivityManagerService extends IActivityManager.Stub this, in, out, err, args, callback, resultReceiver); } + SleepToken acquireSleepToken(String tag, int displayId) { + synchronized (this) { + final SleepToken token = mStackSupervisor.createSleepTokenLocked(tag, displayId); + updateSleepIfNeededLocked(); + return token; + } + } + @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return; @@ -15028,7 +15097,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } else if ("starter".equals(cmd)) { synchronized (this) { - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); } } else if ("recents".equals(cmd) || "r".equals(cmd)) { synchronized (this) { @@ -15263,7 +15332,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); @@ -15333,7 +15402,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); } - dumpActivityStarterLocked(pw); + dumpActivityStarterLocked(pw, dumpPackage); pw.println(); if (dumpAll) { pw.println("-------------------------------------------------------------------------------"); @@ -15357,7 +15426,7 @@ public class ActivityManagerService extends IActivityManager.Stub } private void dumpLastANRLocked(PrintWriter pw) { - pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity lastanr)"); + pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)"); if (mLastANRState == null) { pw.println(" "); } else { @@ -15365,9 +15434,9 @@ public class ActivityManagerService extends IActivityManager.Stub } } - private void dumpActivityStarterLocked(PrintWriter pw) { - pw.println("ACTIVITY MANAGER ACTIVITIES (dumpsys activity starter)"); - mActivityStarter.dump(pw, ""); + private void dumpActivityStarterLocked(PrintWriter pw, String dumpPackage) { + pw.println("ACTIVITY MANAGER STARTER (dumpsys activity starter)"); + mActivityStarter.dump(pw, "", dumpPackage); } void dumpActivitiesLocked(FileDescriptor fd, PrintWriter pw, String[] args, @@ -15860,7 +15929,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpPackage == null) { pw.println(" mWakefulness=" + PowerManagerInternal.wakefulnessToString(mWakefulness)); - pw.println(" mSleepTokens=" + mSleepTokens); + pw.println(" mSleepTokens=" + mStackSupervisor.mSleepTokens); pw.println(" mSleeping=" + mSleeping); pw.println(" mShuttingDown=" + mShuttingDown + " mTestPssMode=" + mTestPssMode); if (mRunningVoice != null) { @@ -15922,18 +15991,22 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(" mTrackAllocationApp=" + mTrackAllocationApp); } } - if (mProfileApp != null || mProfileProc != null || mProfileFile != null - || mProfileFd != null) { + if (mProfileApp != null || mProfileProc != null || (mProfilerInfo != null && + (mProfilerInfo.profileFile != null || mProfilerInfo.profileFd != null))) { if (dumpPackage == null || dumpPackage.equals(mProfileApp)) { if (needSep) { pw.println(); needSep = false; } pw.println(" mProfileApp=" + mProfileApp + " mProfileProc=" + mProfileProc); - pw.println(" mProfileFile=" + mProfileFile + " mProfileFd=" + mProfileFd); - pw.println(" mSamplingInterval=" + mSamplingInterval + " mAutoStopProfiler=" - + mAutoStopProfiler + " mStreamingOutput=" + mStreamingOutput); - pw.println(" mProfileType=" + mProfileType); + if (mProfilerInfo != null) { + pw.println(" mProfileFile=" + mProfilerInfo.profileFile + " mProfileFd=" + + mProfilerInfo.profileFd); + pw.println(" mSamplingInterval=" + mProfilerInfo.samplingInterval + + " mAutoStopProfiler=" + mProfilerInfo.autoStopProfiler + + " mStreamingOutput=" + mProfilerInfo.streamingOutput); + pw.println(" mProfileType=" + mProfileType); + } } } if (mNativeDebuggingApp != null) { @@ -15962,9 +16035,6 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(" mBooting=" + mBooting + " mCallFinishBooting=" + mCallFinishBooting + " mBootAnimationComplete=" + mBootAnimationComplete); - pw.print(" mLastPowerCheckRealtime="); - TimeUtils.formatDuration(mLastPowerCheckRealtime, pw); - pw.println(""); pw.print(" mLastPowerCheckUptime="); TimeUtils.formatDuration(mLastPowerCheckUptime, pw); pw.println(""); @@ -16619,8 +16689,6 @@ public class ActivityManagerService extends IActivityManager.Stub Collections.sort(list, comparator); - final long curRealtime = SystemClock.elapsedRealtime(); - final long realtimeSince = curRealtime - service.mLastPowerCheckRealtime; final long curUptime = SystemClock.uptimeMillis(); final long uptimeSince = curUptime - service.mLastPowerCheckUptime; @@ -16717,24 +16785,6 @@ public class ActivityManagerService extends IActivityManager.Stub pw.print(" hasAboveClient="); pw.println(r.hasAboveClient); if (r.setProcState >= ActivityManager.PROCESS_STATE_SERVICE) { - if (r.lastWakeTime != 0) { - long wtime; - BatteryStatsImpl stats = service.mBatteryStatsService.getActiveStatistics(); - synchronized (stats) { - wtime = stats.getProcessWakeTime(r.info.uid, - r.pid, curRealtime); - } - long timeUsed = wtime - r.lastWakeTime; - pw.print(prefix); - pw.print(" "); - pw.print("keep awake over "); - TimeUtils.formatDuration(realtimeSince, pw); - pw.print(" used "); - TimeUtils.formatDuration(timeUsed, pw); - pw.print(" ("); - pw.print((timeUsed*100)/realtimeSince); - pw.println("%)"); - } if (r.lastCpuTime != 0) { long timeUsed = r.curCpuTime - r.lastCpuTime; pw.print(prefix); @@ -17257,12 +17307,12 @@ public class ActivityManagerService extends IActivityManager.Stub } } catch (IOException e) { if (!isCheckinRequest) { - pw.println("Got IoException!"); + pw.println("Got IoException! " + e); pw.flush(); } } catch (RemoteException e) { if (!isCheckinRequest) { - pw.println("Got RemoteException!"); + pw.println("Got RemoteException! " + e); pw.flush(); } } @@ -20620,7 +20670,7 @@ public class ActivityManagerService extends IActivityManager.Stub && config.navigation == Configuration.NAVIGATION_NONAV); int modeType = config.uiMode & Configuration.UI_MODE_TYPE_MASK; final boolean uiModeSupportsDialogs = (modeType != Configuration.UI_MODE_TYPE_CAR - && !(modeType == Configuration.UI_MODE_TYPE_WATCH && "user".equals(Build.TYPE)) + && !(modeType == Configuration.UI_MODE_TYPE_WATCH && Build.IS_USER) && modeType != Configuration.UI_MODE_TYPE_TELEVISION && modeType != Configuration.UI_MODE_TYPE_VR_HEADSET); return inputMethodExists && uiModeSupportsDialogs; @@ -21675,7 +21725,9 @@ public class ActivityManagerService extends IActivityManager.Stub if (DEBUG_PSS) Slog.d(TAG_PSS, "Requesting dump heap from " + myProc + " to " + heapdumpFile); - thread.dumpHeap(true, heapdumpFile.toString(), fd); + thread.dumpHeap(/* managed= */ true, + /* mallocInfo= */ false, /* runGc= */ false, + heapdumpFile.toString(), fd); } catch (RemoteException e) { } } @@ -21891,58 +21943,28 @@ public class ActivityManagerService extends IActivityManager.Stub } } - final void checkExcessivePowerUsageLocked(boolean doKills) { + final void checkExcessivePowerUsageLocked() { updateCpuStatsNow(); BatteryStatsImpl stats = mBatteryStatsService.getActiveStatistics(); - boolean doWakeKills = doKills; - boolean doCpuKills = doKills; - if (mLastPowerCheckRealtime == 0) { - doWakeKills = false; - } + boolean doCpuKills = true; if (mLastPowerCheckUptime == 0) { doCpuKills = false; } - if (stats.isScreenOn()) { - doWakeKills = false; - } - final long curRealtime = SystemClock.elapsedRealtime(); - final long realtimeSince = curRealtime - mLastPowerCheckRealtime; final long curUptime = SystemClock.uptimeMillis(); final long uptimeSince = curUptime - mLastPowerCheckUptime; - mLastPowerCheckRealtime = curRealtime; mLastPowerCheckUptime = curUptime; - if (realtimeSince < mConstants.WAKE_LOCK_MIN_CHECK_DURATION) { - doWakeKills = false; - } - if (uptimeSince < mConstants.CPU_MIN_CHECK_DURATION) { - doCpuKills = false; - } int i = mLruProcesses.size(); while (i > 0) { i--; ProcessRecord app = mLruProcesses.get(i); if (app.setProcState >= ActivityManager.PROCESS_STATE_HOME) { - long wtime; - synchronized (stats) { - wtime = stats.getProcessWakeTime(app.info.uid, - app.pid, curRealtime); + if (app.lastCpuTime <= 0) { + continue; } - long wtimeUsed = wtime - app.lastWakeTime; long cputimeUsed = app.curCpuTime - app.lastCpuTime; if (DEBUG_POWER) { StringBuilder sb = new StringBuilder(128); - sb.append("Wake for "); - app.toShortString(sb); - sb.append(": over "); - TimeUtils.formatDuration(realtimeSince, sb); - sb.append(" used "); - TimeUtils.formatDuration(wtimeUsed, sb); - sb.append(" ("); - sb.append((wtimeUsed*100)/realtimeSince); - sb.append("%)"); - Slog.i(TAG_POWER, sb.toString()); - sb.setLength(0); sb.append("CPU for "); app.toShortString(sb); sb.append(": over "); @@ -21954,29 +21976,33 @@ public class ActivityManagerService extends IActivityManager.Stub sb.append("%)"); Slog.i(TAG_POWER, sb.toString()); } - // If a process has held a wake lock for more - // than 50% of the time during this period, - // that sounds bad. Kill! - if (doWakeKills && realtimeSince > 0 - && ((wtimeUsed*100)/realtimeSince) >= 50) { - synchronized (stats) { - stats.reportExcessiveWakeLocked(app.info.uid, app.processName, - realtimeSince, wtimeUsed); + // If the process has used too much CPU over the last duration, the + // user probably doesn't want this, so kill! + if (doCpuKills && uptimeSince > 0) { + // What is the limit for this process? + int cpuLimit; + long checkDur = curUptime - app.whenUnimportant; + if (checkDur <= mConstants.POWER_CHECK_INTERVAL) { + cpuLimit = mConstants.POWER_CHECK_MAX_CPU_1; + } else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*2) + || app.setProcState <= ActivityManager.PROCESS_STATE_HOME) { + cpuLimit = mConstants.POWER_CHECK_MAX_CPU_2; + } else if (checkDur <= (mConstants.POWER_CHECK_INTERVAL*3)) { + cpuLimit = mConstants.POWER_CHECK_MAX_CPU_3; + } else { + cpuLimit = mConstants.POWER_CHECK_MAX_CPU_4; } - app.kill("excessive wake held " + wtimeUsed + " during " + realtimeSince, true); - app.baseProcessTracker.reportExcessiveWake(app.pkgList); - } else if (doCpuKills && uptimeSince > 0 - && ((cputimeUsed*100)/uptimeSince) >= 25) { - synchronized (stats) { - stats.reportExcessiveCpuLocked(app.info.uid, app.processName, - uptimeSince, cputimeUsed); + if (((cputimeUsed*100)/uptimeSince) >= cpuLimit) { + synchronized (stats) { + stats.reportExcessiveCpuLocked(app.info.uid, app.processName, + uptimeSince, cputimeUsed); + } + app.kill("excessive cpu " + cputimeUsed + " during " + uptimeSince + + " dur=" + checkDur + " limit=" + cpuLimit, true); + app.baseProcessTracker.reportExcessiveCpu(app.pkgList); } - app.kill("excessive cpu " + cputimeUsed + " during " + uptimeSince, true); - app.baseProcessTracker.reportExcessiveCpu(app.pkgList); - } else { - app.lastWakeTime = wtime; - app.lastCpuTime = app.curCpuTime; } + app.lastCpuTime = app.curCpuTime; } } } @@ -21992,10 +22018,12 @@ public class ActivityManagerService extends IActivityManager.Stub int changes = 0; if (app.curAdj != app.setAdj) { - ProcessList.setOomAdj(app.pid, app.info.uid, app.curAdj); - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Set " + app.pid + " " + app.processName + " adj " + app.curAdj + ": " - + app.adjType); + ProcessList.setOomAdj(app.pid, app.uid, app.curAdj); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.info.uid) { + String msg = "Set " + app.pid + " " + app.processName + " adj " + + app.curAdj + ": " + app.adjType; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } app.setAdj = app.curAdj; app.verifiedAdj = ProcessList.INVALID_ADJ; } @@ -22003,9 +22031,11 @@ public class ActivityManagerService extends IActivityManager.Stub if (app.setSchedGroup != app.curSchedGroup) { int oldSchedGroup = app.setSchedGroup; app.setSchedGroup = app.curSchedGroup; - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Setting sched group of " + app.processName - + " to " + app.curSchedGroup); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) { + String msg = "Setting sched group of " + app.processName + + " to " + app.curSchedGroup; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } if (app.waitingToKill != null && app.curReceivers.isEmpty() && app.setSchedGroup == ProcessList.SCHED_GROUP_BACKGROUND) { app.kill(app.waitingToKill, true); @@ -22064,13 +22094,21 @@ public class ActivityManagerService extends IActivityManager.Stub app.curSchedGroup != ProcessList.SCHED_GROUP_TOP_APP) { mVrController.onTopProcChangedLocked(app); if (mUseFifoUiScheduling) { - // Reset UI pipeline to SCHED_OTHER - setThreadScheduler(app.pid, SCHED_OTHER, 0); - setThreadPriority(app.pid, app.savedPriority); - if (app.renderThreadTid != 0) { - setThreadScheduler(app.renderThreadTid, - SCHED_OTHER, 0); - setThreadPriority(app.renderThreadTid, -4); + try { + // Reset UI pipeline to SCHED_OTHER + setThreadScheduler(app.pid, SCHED_OTHER, 0); + setThreadPriority(app.pid, app.savedPriority); + if (app.renderThreadTid != 0) { + setThreadScheduler(app.renderThreadTid, + SCHED_OTHER, 0); + setThreadPriority(app.renderThreadTid, -4); + } + } catch (IllegalArgumentException e) { + Slog.w(TAG, + "Failed to set scheduling policy, thread does not exist:\n" + + e); + } catch (SecurityException e) { + Slog.w(TAG, "Failed to set scheduling policy, not allowed:\n" + e); } } else { // Reset priority for top app UI and render threads @@ -22142,23 +22180,20 @@ public class ActivityManagerService extends IActivityManager.Stub "Not requesting PSS of " + app + ": next=" + (app.nextPssTime-now)); } if (app.setProcState != app.curProcState) { - if (DEBUG_SWITCH || DEBUG_OOM_ADJ) Slog.v(TAG_OOM_ADJ, - "Proc state change of " + app.processName - + " to " + app.curProcState); + if (DEBUG_SWITCH || DEBUG_OOM_ADJ || mCurOomAdjUid == app.uid) { + String msg = "Proc state change of " + app.processName + + " to " + app.curProcState; + reportOomAdjMessageLocked(TAG_OOM_ADJ, msg); + } boolean setImportant = app.setProcState < ActivityManager.PROCESS_STATE_SERVICE; boolean curImportant = app.curProcState < ActivityManager.PROCESS_STATE_SERVICE; if (setImportant && !curImportant) { // This app is no longer something we consider important enough to allow to // use arbitrary amounts of battery power. Note - // its current wake lock time to later know to kill it if + // its current CPU time to later know to kill it if // it is not behaving well. - BatteryStatsImpl stats = mBatteryStatsService.getActiveStatistics(); - synchronized (stats) { - app.lastWakeTime = stats.getProcessWakeTime(app.info.uid, - app.pid, nowElapsed); - } - app.lastCpuTime = app.curCpuTime; - + app.whenUnimportant = now; + app.lastCpuTime = 0; } // Inform UsageStats of important process state change // Must be called before updating setProcState @@ -22259,10 +22294,10 @@ public class ActivityManagerService extends IActivityManager.Stub } if (uidRec != null) { uidRec.pendingChange = pendingChange; - if (change == UidRecord.CHANGE_GONE && !uidRec.idle) { + if ((change & UidRecord.CHANGE_GONE) != 0 && !uidRec.idle) { // If this uid is going away, and we haven't yet reported it is gone, // then do so now. - change = UidRecord.CHANGE_GONE_IDLE; + change |= UidRecord.CHANGE_IDLE; } } else if (uid < 0) { throw new IllegalArgumentException("No UidRecord or uid"); @@ -22272,8 +22307,26 @@ public class ActivityManagerService extends IActivityManager.Stub mPendingUidChanges.add(pendingChange); } else { pendingChange = uidRec.pendingChange; - if (change == UidRecord.CHANGE_GONE && pendingChange.change == UidRecord.CHANGE_IDLE) { - change = UidRecord.CHANGE_GONE_IDLE; + // If there is no change in idle or active state, then keep whatever was pending. + if ((change & (UidRecord.CHANGE_IDLE | UidRecord.CHANGE_ACTIVE)) == 0) { + change |= (pendingChange.change & (UidRecord.CHANGE_IDLE + | UidRecord.CHANGE_ACTIVE)); + } + // If there is no change in cached or uncached state, then keep whatever was pending. + if ((change & (UidRecord.CHANGE_CACHED | UidRecord.CHANGE_UNCACHED)) == 0) { + change |= (pendingChange.change & (UidRecord.CHANGE_CACHED + | UidRecord.CHANGE_UNCACHED)); + } + // If this is a report of the UID being gone, then we shouldn't keep any previous + // report of it being active or cached. (That is, a gone uid is never active, + // and never cached.) + if ((change & UidRecord.CHANGE_GONE) != 0) { + change &= ~(UidRecord.CHANGE_ACTIVE | UidRecord.CHANGE_CACHED); + if (!uidRec.idle) { + // If this uid is going away, and we haven't yet reported it is gone, + // then do so now. + change |= UidRecord.CHANGE_IDLE; + } } } pendingChange.change = change; @@ -22282,27 +22335,26 @@ public class ActivityManagerService extends IActivityManager.Stub pendingChange.ephemeral = uidRec != null ? uidRec.ephemeral : isEphemeralLocked(uid); pendingChange.procStateSeq = uidRec != null ? uidRec.curProcStateSeq : 0; if (uidRec != null) { + uidRec.lastReportedChange = change; uidRec.updateLastDispatchedProcStateSeq(change); } // Directly update the power manager, since we sit on top of it and it is critical // it be kept in sync (so wake locks will be held as soon as appropriate). if (mLocalPowerManager != null) { - switch (change) { - case UidRecord.CHANGE_GONE: - case UidRecord.CHANGE_GONE_IDLE: - mLocalPowerManager.uidGone(pendingChange.uid); - break; - case UidRecord.CHANGE_IDLE: - mLocalPowerManager.uidIdle(pendingChange.uid); - break; - case UidRecord.CHANGE_ACTIVE: - mLocalPowerManager.uidActive(pendingChange.uid); - break; - default: - mLocalPowerManager.updateUidProcState(pendingChange.uid, - pendingChange.processState); - break; + // TO DO: dispatch cached/uncached changes here, so we don't need to report + // all proc state changes. + if ((change & UidRecord.CHANGE_ACTIVE) != 0) { + mLocalPowerManager.uidActive(pendingChange.uid); + } + if ((change & UidRecord.CHANGE_IDLE) != 0) { + mLocalPowerManager.uidIdle(pendingChange.uid); + } + if ((change & UidRecord.CHANGE_GONE) != 0) { + mLocalPowerManager.uidGone(pendingChange.uid); + } else { + mLocalPowerManager.updateUidProcState(pendingChange.uid, + pendingChange.processState); } } } @@ -22857,6 +22909,8 @@ public class ActivityManagerService extends IActivityManager.Stub requestPssAllProcsLocked(now, false, mProcessStats.isMemFactorLowered()); } + ArrayList becameIdle = null; + // Update from any uid changes. if (mLocalPowerManager != null) { mLocalPowerManager.startUidChanges(); @@ -22864,8 +22918,9 @@ public class ActivityManagerService extends IActivityManager.Stub for (int i=mActiveUids.size()-1; i>=0; i--) { final UidRecord uidRec = mActiveUids.valueAt(i); int uidChange = UidRecord.CHANGE_PROCSTATE; - if (uidRec.setProcState != uidRec.curProcState - || uidRec.setWhitelist != uidRec.curWhitelist) { + if (uidRec.curProcState != ActivityManager.PROCESS_STATE_NONEXISTENT + && (uidRec.setProcState != uidRec.curProcState + || uidRec.setWhitelist != uidRec.curWhitelist)) { if (DEBUG_UID_OBSERVERS) Slog.i(TAG_UID_OBSERVERS, "Changes in " + uidRec + ": proc state from " + uidRec.setProcState + " to " + uidRec.curProcState + ", whitelist from " + uidRec.setWhitelist @@ -22886,6 +22941,13 @@ public class ActivityManagerService extends IActivityManager.Stub mConstants.BACKGROUND_SETTLE_TIME); } } + if (uidRec.idle && !uidRec.setIdle) { + uidChange = UidRecord.CHANGE_IDLE; + if (becameIdle == null) { + becameIdle = new ArrayList<>(); + } + becameIdle.add(uidRec); + } } else { if (uidRec.idle) { uidChange = UidRecord.CHANGE_ACTIVE; @@ -22894,8 +22956,17 @@ public class ActivityManagerService extends IActivityManager.Stub } uidRec.lastBackgroundTime = 0; } + final boolean wasCached = uidRec.setProcState + > ActivityManager.PROCESS_STATE_RECEIVER; + final boolean isCached = uidRec.curProcState + > ActivityManager.PROCESS_STATE_RECEIVER; + if (wasCached != isCached || + uidRec.setProcState == ActivityManager.PROCESS_STATE_NONEXISTENT) { + uidChange |= isCached ? UidRecord.CHANGE_CACHED : UidRecord.CHANGE_UNCACHED; + } uidRec.setProcState = uidRec.curProcState; uidRec.setWhitelist = uidRec.curWhitelist; + uidRec.setIdle = uidRec.idle; enqueueUidChangeLocked(uidRec, -1, uidChange); noteUidProcessState(uidRec.uid, uidRec.curProcState); if (uidRec.foregroundServices) { @@ -22907,6 +22978,14 @@ public class ActivityManagerService extends IActivityManager.Stub mLocalPowerManager.finishUidChanges(); } + if (becameIdle != null) { + // If we have any new uids that became idle this time, we need to make sure + // they aren't left with running services. + for (int i = becameIdle.size() - 1; i >= 0; i--) { + mServices.stopInBackgroundLocked(becameIdle.get(i).uid); + } + } + if (mProcessStats.shouldWriteNowLocked(now)) { mHandler.post(new Runnable() { @Override public void run() { @@ -22970,6 +23049,7 @@ public class ActivityManagerService extends IActivityManager.Stub userId == UserHandle.getUserId(uidRec.uid)) { EventLogTags.writeAmUidIdle(uidRec.uid); uidRec.idle = true; + uidRec.setIdle = true; Slog.w(TAG, "Idling uid " + UserHandle.formatUid(uidRec.uid) + " from package " + packageName + " user " + userId); doStopUidLocked(uidRec.uid, uidRec); @@ -23005,6 +23085,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (bgTime <= maxBgTime) { EventLogTags.writeAmUidIdle(uidRec.uid); uidRec.idle = true; + uidRec.setIdle = true; doStopUidLocked(uidRec.uid, uidRec); } else { if (nextTime == 0 || nextTime > bgTime) { @@ -23324,19 +23405,15 @@ public class ActivityManagerService extends IActivityManager.Stub } private void clearProfilerLocked() { - if (mProfileFd != null) { + if (mProfilerInfo !=null && mProfilerInfo.profileFd != null) { try { - mProfileFd.close(); + mProfilerInfo.profileFd.close(); } catch (IOException e) { } } mProfileApp = null; mProfileProc = null; - mProfileFile = null; - mProfileType = 0; - mAutoStopProfiler = false; - mStreamingOutput = false; - mSamplingInterval = 0; + mProfilerInfo = null; } public boolean profileControl(String process, int userId, boolean start, @@ -23380,10 +23457,10 @@ public class ActivityManagerService extends IActivityManager.Stub proc.thread.profilerControl(start, profilerInfo, profileType); fd = null; try { - mProfileFd.close(); + mProfilerInfo.profileFd.close(); } catch (IOException e) { } - mProfileFd = null; + mProfilerInfo.profileFd = null; } else { stopProfilerLocked(proc, profileType); if (profilerInfo != null && profilerInfo.profileFd != null) { @@ -23441,8 +23518,8 @@ public class ActivityManagerService extends IActivityManager.Stub return proc; } - public boolean dumpHeap(String process, int userId, boolean managed, - String path, ParcelFileDescriptor fd) throws RemoteException { + public boolean dumpHeap(String process, int userId, boolean managed, boolean mallocInfo, + boolean runGc, String path, ParcelFileDescriptor fd) throws RemoteException { try { synchronized (this) { @@ -23470,7 +23547,7 @@ public class ActivityManagerService extends IActivityManager.Stub } } - proc.thread.dumpHeap(managed, path, fd); + proc.thread.dumpHeap(managed, mallocInfo, runGc, path, fd); fd = null; return true; } @@ -23840,15 +23917,9 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override - public SleepToken acquireSleepToken(String tag) { + public SleepToken acquireSleepToken(String tag, int displayId) { Preconditions.checkNotNull(tag); - - synchronized (ActivityManagerService.this) { - SleepTokenImpl token = new SleepTokenImpl(tag); - mSleepTokens.add(token); - updateSleepIfNeededLocked(); - return token; - } + return ActivityManagerService.this.acquireSleepToken(tag, displayId); } @Override @@ -23864,6 +23935,7 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (ActivityManagerService.this) { ActivityManagerService.this.onUserStoppedLocked(userId); } + mBatteryStatsService.onUserRemoved(userId); } @Override @@ -24044,7 +24116,7 @@ public class ActivityManagerService extends IActivityManager.Stub @Override public void notifyKeyguardTrustedChanged() { synchronized (ActivityManagerService.this) { - if (mKeyguardController.isKeyguardShowing()) { + if (mKeyguardController.isKeyguardShowing(DEFAULT_DISPLAY)) { mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); } } @@ -24152,7 +24224,7 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(" Reason: " + reason); } pw.println(); - mActivityStarter.dump(pw, " "); + mActivityStarter.dump(pw, " ", null); pw.println(); pw.println("-------------------------------------------------------------------------------"); dumpActivitiesLocked(null /* fd */, pw, null /* args */, 0 /* opti */, @@ -24171,6 +24243,21 @@ public class ActivityManagerService extends IActivityManager.Stub mLastANRState = null; } } + + @Override + public void setFocusedActivity(IBinder token) { + synchronized (ActivityManagerService.this) { + final ActivityRecord r = ActivityRecord.forTokenLocked(token); + if (r == null) { + throw new IllegalArgumentException( + "setFocusedActivity: No activity record matching token=" + token); + } + if (mStackSupervisor.moveFocusableActivityStackToFrontLocked( + r, "setFocusedActivity")) { + mStackSupervisor.resumeFocusedStackTopActivityLocked(); + } + } + } } /** @@ -24229,7 +24316,7 @@ public class ActivityManagerService extends IActivityManager.Stub record.networkStateLock.wait(mWaitForNetworkTimeoutMs); record.waitingForNetwork = false; final long totalTime = SystemClock.uptimeMillis() - startTime; - if (totalTime >= mWaitForNetworkTimeoutMs) { + if (totalTime >= mWaitForNetworkTimeoutMs || DEBUG_NETWORK) { Slog.wtf(TAG_NETWORK, "Total time waited for network rules to get updated: " + totalTime + ". Uid: " + callingUid + " procStateSeq: " + procStateSeq + " UidRec: " + record @@ -24284,30 +24371,6 @@ public class ActivityManagerService extends IActivityManager.Stub } } - private final class SleepTokenImpl extends SleepToken { - private final String mTag; - private final long mAcquireTime; - - public SleepTokenImpl(String tag) { - mTag = tag; - mAcquireTime = SystemClock.uptimeMillis(); - } - - @Override - public void release() { - synchronized (ActivityManagerService.this) { - if (mSleepTokens.remove(this)) { - updateSleepIfNeededLocked(); - } - } - } - - @Override - public String toString() { - return "{\"" + mTag + "\", acquire at " + TimeUtils.formatUptime(mAcquireTime) + "}"; - } - } - /** * An implementation of IAppTask, that allows an app to manage its own tasks via * {@link android.app.ActivityManager.AppTask}. We keep track of the callingUid to ensure that @@ -24399,7 +24462,7 @@ public class ActivityManagerService extends IActivityManager.Stub } return mActivityStarter.startActivityMayWait(appThread, -1, callingPackage, intent, resolvedType, null, null, null, null, 0, 0, null, null, - null, bOptions, false, callingUser, null, tr, "AppTaskImpl"); + null, bOptions, false, callingUser, tr, "AppTaskImpl"); } @Override @@ -24509,7 +24572,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (updateFrameworkRes || packagesToUpdate.contains(packageName)) { try { final ApplicationInfo ai = AppGlobals.getPackageManager() - .getApplicationInfo(packageName, 0 /*flags*/, app.userId); + .getApplicationInfo(packageName, STOCK_PM_FLAGS, app.userId); if (ai != null) { app.thread.scheduleApplicationInfoChanged(ai); } @@ -24577,4 +24640,37 @@ public class ActivityManagerService extends IActivityManager.Stub return mNmi != null; } } + + @Override + public void setShowWhenLocked(IBinder token, boolean showWhenLocked) + throws RemoteException { + synchronized (this) { + final ActivityRecord r = ActivityRecord.isInStackLocked(token); + if (r == null) { + return; + } + final long origId = Binder.clearCallingIdentity(); + try { + r.setShowWhenLocked(showWhenLocked); + } finally { + Binder.restoreCallingIdentity(origId); + } + } + } + + @Override + public void setTurnScreenOn(IBinder token, boolean turnScreenOn) throws RemoteException { + synchronized (this) { + final ActivityRecord r = ActivityRecord.isInStackLocked(token); + if (r == null) { + return; + } + final long origId = Binder.clearCallingIdentity(); + try { + r.setTurnScreenOn(turnScreenOn); + } finally { + Binder.restoreCallingIdentity(origId); + } + } + } } diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java index d7683047143a6270fd7c18de5b5a53fadc4dbe59..8488e526eba9b51f76fcafd00d32b380a2a70b7d 100644 --- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java +++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java @@ -19,10 +19,10 @@ package com.android.server.am; import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.AppGlobals; -import android.app.IActivityContainer; import android.app.IActivityController; import android.app.IActivityManager; import android.app.IStopUserCallback; +import android.app.IUidObserver; import android.app.ProfilerInfo; import android.app.WaitResult; import android.app.usage.ConfigurationStats; @@ -55,7 +55,6 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.DebugUtils; import android.util.DisplayMetrics; -import android.view.IWindowManager; import com.android.internal.util.HexDump; import com.android.internal.util.Preconditions; @@ -114,6 +113,7 @@ final class ActivityManagerShellCommand extends ShellCommand { private int mSamplingInterval; private boolean mAutoStop; private boolean mStreaming; // Streaming the profiling output to a file. + private String mAgent; // Agent to attach on startup. private int mDisplayId; private int mStackId; private int mTaskId; @@ -183,6 +183,8 @@ final class ActivityManagerShellCommand extends ShellCommand { return runMakeIdle(pw); case "monitor": return runMonitor(pw); + case "watch-uids": + return runWatchUids(pw); case "hang": return runHang(pw); case "restart": @@ -292,6 +294,8 @@ final class ActivityManagerShellCommand extends ShellCommand { mSamplingInterval = Integer.parseInt(getNextArgRequired()); } else if (opt.equals("--streaming")) { mStreaming = true; + } else if (opt.equals("--attach-agent")) { + mAgent = getNextArgRequired(); } else if (opt.equals("-R")) { mRepeat = Integer.parseInt(getNextArgRequired()); } else if (opt.equals("-S")) { @@ -368,13 +372,16 @@ final class ActivityManagerShellCommand extends ShellCommand { ProfilerInfo profilerInfo = null; - if (mProfileFile != null) { - ParcelFileDescriptor fd = openOutputFileForSystem(mProfileFile); - if (fd == null) { - return 1; + if (mProfileFile != null || mAgent != null) { + ParcelFileDescriptor fd = null; + if (mProfileFile != null) { + fd = openOutputFileForSystem(mProfileFile); + if (fd == null) { + return 1; + } } profilerInfo = new ProfilerInfo(mProfileFile, fd, mSamplingInterval, mAutoStop, - mStreaming); + mStreaming, mAgent); } pw.println("Starting: " + intent); @@ -747,7 +754,8 @@ final class ActivityManagerShellCommand extends ShellCommand { if (fd == null) { return -1; } - profilerInfo = new ProfilerInfo(profileFile, fd, mSamplingInterval, false, mStreaming); + profilerInfo = new ProfilerInfo(profileFile, fd, mSamplingInterval, false, mStreaming, + null); } try { @@ -777,7 +785,9 @@ final class ActivityManagerShellCommand extends ShellCommand { int runDumpHeap(PrintWriter pw) throws RemoteException { final PrintWriter err = getErrPrintWriter(); boolean managed = true; + boolean mallocInfo = false; int userId = UserHandle.USER_CURRENT; + boolean runGc = false; String opt; while ((opt=getNextOption()) != null) { @@ -789,6 +799,11 @@ final class ActivityManagerShellCommand extends ShellCommand { } } else if (opt.equals("-n")) { managed = false; + } else if (opt.equals("-g")) { + runGc = true; + } else if (opt.equals("-m")) { + managed = false; + mallocInfo = true; } else { err.println("Error: Unknown option: " + opt); return -1; @@ -804,7 +819,7 @@ final class ActivityManagerShellCommand extends ShellCommand { return -1; } - if (!mInterface.dumpHeap(process, userId, managed, heapFile, fd)) { + if (!mInterface.dumpHeap(process, userId, managed, mallocInfo, runGc, heapFile, fd)) { err.println("HEAP DUMP FAILED on process " + process); return -1; } @@ -1280,6 +1295,167 @@ final class ActivityManagerShellCommand extends ShellCommand { return 0; } + static final class MyUidObserver extends IUidObserver.Stub + implements ActivityManagerService.OomAdjObserver { + final IActivityManager mInterface; + final ActivityManagerService mInternal; + final PrintWriter mPw; + final InputStream mInput; + final int mUid; + + static final int STATE_NORMAL = 0; + + int mState; + + MyUidObserver(ActivityManagerService service, PrintWriter pw, InputStream input, int uid) { + mInterface = service; + mInternal = service; + mPw = pw; + mInput = input; + mUid = uid; + } + + @Override + public void onUidStateChanged(int uid, int procState, long procStateSeq) throws RemoteException { + synchronized (this) { + mPw.print(uid); + mPw.print(" procstate "); + mPw.print(ProcessList.makeProcStateString(procState)); + mPw.print(" seq "); + mPw.println(procStateSeq); + mPw.flush(); + } + } + + @Override + public void onUidGone(int uid, boolean disabled) throws RemoteException { + synchronized (this) { + mPw.print(uid); + mPw.print(" gone"); + if (disabled) { + mPw.print(" disabled"); + } + mPw.println(); + mPw.flush(); + } + } + + @Override + public void onUidActive(int uid) throws RemoteException { + synchronized (this) { + mPw.print(uid); + mPw.println(" active"); + mPw.flush(); + } + } + + @Override + public void onUidIdle(int uid, boolean disabled) throws RemoteException { + synchronized (this) { + mPw.print(uid); + mPw.print(" idle"); + if (disabled) { + mPw.print(" disabled"); + } + mPw.println(); + mPw.flush(); + } + } + + @Override + public void onUidCachedChanged(int uid, boolean cached) throws RemoteException { + synchronized (this) { + mPw.print(uid); + mPw.println(cached ? " cached" : " uncached"); + mPw.flush(); + } + } + + @Override + public void onOomAdjMessage(String msg) { + synchronized (this) { + mPw.print("# "); + mPw.println(msg); + mPw.flush(); + } + } + + void printMessageForState() { + switch (mState) { + case STATE_NORMAL: + mPw.println("Watching uid states... available commands:"); + break; + } + mPw.println("(q)uit: finish watching"); + } + + void run() throws RemoteException { + try { + printMessageForState(); + mPw.flush(); + + mInterface.registerUidObserver(this, ActivityManager.UID_OBSERVER_ACTIVE + | ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_PROCSTATE + | ActivityManager.UID_OBSERVER_IDLE | ActivityManager.UID_OBSERVER_CACHED, + ActivityManager.PROCESS_STATE_UNKNOWN, null); + if (mUid >= 0) { + mInternal.setOomAdjObserver(mUid, this); + } + mState = STATE_NORMAL; + + InputStreamReader converter = new InputStreamReader(mInput); + BufferedReader in = new BufferedReader(converter); + String line; + + while ((line = in.readLine()) != null) { + boolean addNewline = true; + if (line.length() <= 0) { + addNewline = false; + } else if ("q".equals(line) || "quit".equals(line)) { + break; + } else { + mPw.println("Invalid command: " + line); + } + + synchronized (this) { + if (addNewline) { + mPw.println(""); + } + printMessageForState(); + mPw.flush(); + } + } + + } catch (IOException e) { + e.printStackTrace(mPw); + mPw.flush(); + } finally { + if (mUid >= 0) { + mInternal.clearOomAdjObserver(); + } + mInterface.unregisterUidObserver(this); + } + } + } + + int runWatchUids(PrintWriter pw) throws RemoteException { + String opt; + int uid = -1; + while ((opt=getNextOption()) != null) { + if (opt.equals("--oom")) { + uid = Integer.parseInt(getNextArgRequired()); + } else { + getErrPrintWriter().println("Error: Unknown option: " + opt); + return -1; + + } + } + + MyUidObserver controller = new MyUidObserver(mInternal, pw, getRawInputStream(), uid); + controller.run(); + return 0; + } + int runHang(PrintWriter pw) throws RemoteException { String opt; boolean allowRestart = false; @@ -1707,8 +1883,12 @@ final class ActivityManagerShellCommand extends ShellCommand { level = ComponentCallbacks2.TRIM_MEMORY_COMPLETE; break; default: - getErrPrintWriter().println("Error: Unknown level option: " + levelArg); - return -1; + try { + level = Integer.parseInt(levelArg); + } catch (NumberFormatException e) { + getErrPrintWriter().println("Error: Unknown level option: " + levelArg); + return -1; + } } if (!mInterface.setProcessMemoryTrimLevel(proc, userId, level)) { getErrPrintWriter().println("Unknown error: failed to set trim level"); @@ -1807,9 +1987,17 @@ final class ActivityManagerShellCommand extends ShellCommand { throw new RuntimeException(e.getMessage(), e); } - IActivityContainer container = mInterface.createStackOnDisplay(displayId); - if (container != null) { - container.startActivity(intent); + final int stackId = mInterface.createStackOnDisplay(displayId); + if (stackId != INVALID_STACK_ID) { + // TODO: Need proper support if this is used by test... +// container.startActivity(intent); +// ActivityOptions options = ActivityOptions.makeBasic(); +// options.setLaunchDisplayId(displayId); +// options.setLaunchStackId(stackId); +// mInterface.startAct +// mInterface.startActivityAsUser(null, null, intent, mimeType, +// null, null, 0, mStartFlags, profilerInfo, +// options != null ? options.toBundle() : null, mUserId); } return 0; } @@ -2490,6 +2678,7 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --streaming: stream the profiling output to the specified file"); pw.println(" (use with --start-profiler)"); pw.println(" -P : like above, but profiling stops when app goes idle"); + pw.println(" --attach-agent : attach the given agent before binding"); pw.println(" -R: repeat the activity launch times. Prior to each repeat,"); pw.println(" the top activity will be finished."); pw.println(" -S: force stop the target app before starting the activity"); @@ -2547,10 +2736,11 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" --sampling INTERVAL: use sample profiling with INTERVAL microseconds"); pw.println(" between samples"); pw.println(" --streaming: stream the profiling output to the specified file"); - pw.println(" dumpheap [--user current] [-n] "); + pw.println(" dumpheap [--user current] [-n] [-g] "); pw.println(" Dump the heap of a process. The given argument may"); pw.println(" be either a process name or pid. Options are:"); pw.println(" -n: dump native heap instead of managed heap"); + pw.println(" -g: force GC before dumping the heap"); pw.println(" --user | current: When supplying a process name,"); pw.println(" specify user of process to dump; uses current user if not specified."); pw.println(" set-debug-app [-w] [--persistent] "); @@ -2583,6 +2773,9 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" monitor [--gdb ]"); pw.println(" Start monitoring for crashes or ANRs."); pw.println(" --gdb: start gdbserv on the given port at crash/ANR"); + pw.println(" watch-uids [--oom "); + pw.println(" Start watching for and reporting uid state changes."); + pw.println(" --oom: specify a uid for which to report detailed change messages."); pw.println(" hang [--allow-restart]"); pw.println(" Hang the system."); pw.println(" --allow-restart: allow watchdog to perform normal system restart"); @@ -2641,7 +2834,7 @@ final class ActivityManagerShellCommand extends ShellCommand { pw.println(" Returns the inactive state of an app."); pw.println(" send-trim-memory [--user ] "); pw.println(" [HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]"); - pw.println(" Send a memory trim event to a ."); + pw.println(" Send a memory trim event to a . May also supply a raw trim int level."); pw.println(" display [COMMAND] [...]: sub-commands for operating on displays."); pw.println(" move-stack "); pw.println(" Move from its current display to ."); diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 98815d7e18c7c8307d19a6e70df877b28e89a585..f396e9ef44a5d8d5d00a695d5147dcb4fe3309b2 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -15,12 +15,17 @@ import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TR import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_DELAY_MS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_DEVICE_UPTIME_SECONDS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_IS_EPHEMERAL; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_PROCESS_RUNNING; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_REPORTED_DRAWN; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_REPORTED_DRAWN_MS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_STARTING_WINDOW_DELAY_MS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.APP_TRANSITION_WINDOWS_DRAWN_DELAY_MS; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_CLASS_NAME; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_INSTANT_APP_LAUNCH_TOKEN; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_COLD_LAUNCH; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_TRANSITION_HOT_LAUNCH; +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.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; @@ -67,12 +72,14 @@ class ActivityMetricsLogger { private final MetricsLogger mMetricsLogger = new MetricsLogger(); private long mCurrentTransitionStartTime = INVALID_START_TIME; + private long mLastTransitionStartTime = INVALID_START_TIME; private int mCurrentTransitionDeviceUptime; private int mCurrentTransitionDelayMs; private boolean mLoggedTransitionStarting; private final SparseArray mStackTransitionInfo = new SparseArray<>(); + private final SparseArray mLastStackTransitionInfo = new SparseArray<>(); private final class StackTransitionInfo { private ActivityRecord launchedActivity; @@ -136,6 +143,7 @@ class ActivityMetricsLogger { void notifyActivityLaunching() { if (!isAnyTransitionActive()) { mCurrentTransitionStartTime = SystemClock.uptimeMillis(); + mLastTransitionStartTime = mCurrentTransitionStartTime; } } @@ -223,7 +231,8 @@ class ActivityMetricsLogger { newInfo.launchedActivity = launchedActivity; newInfo.currentTransitionProcessRunning = processRunning; newInfo.startResult = resultCode; - mStackTransitionInfo.append(stackId, newInfo); + mStackTransitionInfo.put(stackId, newInfo); + mLastStackTransitionInfo.put(stackId, newInfo); mCurrentTransitionDeviceUptime = (int) (SystemClock.uptimeMillis() / 1000); } @@ -361,7 +370,7 @@ class ActivityMetricsLogger { builder.setType(type); builder.addTaggedData(FIELD_CLASS_NAME, info.launchedActivity.info.name); final boolean isInstantApp = info.launchedActivity.info.applicationInfo.isInstantApp(); - if (isInstantApp && info.launchedActivity.launchedFromPackage != null) { + if (info.launchedActivity.launchedFromPackage != null) { builder.addTaggedData(APP_TRANSITION_CALLING_PACKAGE_NAME, info.launchedActivity.launchedFromPackage); } @@ -388,6 +397,24 @@ class ActivityMetricsLogger { } } + void logAppTransitionReportedDrawn(ActivityRecord r, boolean restoredFromBundle) { + final StackTransitionInfo info = mLastStackTransitionInfo.get(r.getStackId()); + if (info == null) { + return; + } + final LogMaker builder = new LogMaker(APP_TRANSITION_REPORTED_DRAWN); + builder.setPackageName(r.packageName); + builder.addTaggedData(FIELD_CLASS_NAME, r.info.name); + builder.addTaggedData(APP_TRANSITION_REPORTED_DRAWN_MS, + SystemClock.uptimeMillis() - mLastTransitionStartTime); + 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); + mMetricsLogger.write(builder); + } + private int getTransitionType(StackTransitionInfo info) { if (info.currentTransitionProcessRunning) { if (info.startResult == START_SUCCESS) { diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 253bdc5d4e8917ae734b71b8e222f1929bd765c5..4d98f19f79b99b02b1680da66d30b50b72b478b2 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -47,11 +47,13 @@ import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE; import static android.content.pm.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE; import static android.content.pm.ActivityInfo.CONFIG_UI_MODE; import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE; +import static android.content.pm.ActivityInfo.FLAG_SHOW_WHEN_LOCKED; import static android.content.pm.ActivityInfo.FLAG_EXCLUDE_FROM_RECENTS; import static android.content.pm.ActivityInfo.FLAG_IMMERSIVE; import static android.content.pm.ActivityInfo.FLAG_MULTIPROCESS; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; import static android.content.pm.ActivityInfo.FLAG_STATE_NOT_NEEDED; +import static android.content.pm.ActivityInfo.FLAG_TURN_SCREEN_ON; import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE; import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE; import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK; @@ -72,6 +74,7 @@ import static android.content.res.Configuration.UI_MODE_TYPE_MASK; import static android.content.res.Configuration.UI_MODE_TYPE_VR_HEADSET; import static android.os.Build.VERSION_CODES.HONEYCOMB; import static android.os.Build.VERSION_CODES.O; +import static android.os.Build.VERSION_CODES.O_MR1; import static android.os.Process.SYSTEM_UID; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static android.view.WindowManagerPolicy.NAV_BAR_LEFT; @@ -92,7 +95,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAIL import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILITY; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; -import static com.android.server.am.ActivityManagerService.IS_USER_BUILD; import static com.android.server.am.ActivityManagerService.TAKE_FULLSCREEN_SCREENSHOTS; import static com.android.server.am.ActivityStack.ActivityState.DESTROYED; import static com.android.server.am.ActivityStack.ActivityState.DESTROYING; @@ -133,6 +135,7 @@ import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.GraphicBuffer; import android.graphics.Rect; +import android.os.Build; import android.os.Bundle; import android.os.Debug; import android.os.IBinder; @@ -143,6 +146,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; +import android.os.storage.StorageManager; import android.service.voice.IVoiceInteractionSession; import android.util.EventLog; import android.util.Log; @@ -161,7 +165,6 @@ import com.android.internal.util.XmlUtils; import com.android.server.AttributeCache; import com.android.server.AttributeCache.Entry; import com.android.server.am.ActivityStack.ActivityState; -import com.android.server.am.ActivityStackSupervisor.ActivityContainer; import com.android.server.wm.AppWindowContainerController; import com.android.server.wm.AppWindowContainerListener; import com.android.server.wm.TaskWindowContainerController; @@ -295,15 +298,13 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo boolean frozenBeforeDestroy;// has been frozen but not yet destroyed. boolean immersive; // immersive mode (don't interrupt if possible) boolean forceNewConfig; // force re-create with new config next time - boolean supportsPictureInPictureWhilePausing; // This flag is set by the system to indicate - // that the activity can enter picture in picture while pausing (ie. only when another - // task is brought to front or started) + boolean supportsEnterPipOnTaskSwitch; // This flag is set by the system to indicate that the + // activity can enter picture in picture while pausing (only when switching to another task) PictureInPictureParams pictureInPictureArgs = new PictureInPictureParams.Builder().build(); // The PiP params used when deferring the entering of picture-in-picture. int launchCount; // count of launches since last state long lastLaunchTime; // time of last launch of this activity ComponentName requestedVrComponent; // the requested component for handling VR mode. - ArrayList mChildContainers = new ArrayList<>(); String stringName; // for caching of toString(). @@ -317,7 +318,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo boolean mTaskOverlay = false; // Task is always on-top of other activities in the task. boolean mUpdateTaskThumbnailWhenHidden; - ActivityContainer mInitialActivityContainer; TaskDescription taskDescription; // the recents information for this activity boolean mLaunchTaskBehind; // this activity is actively being launched with @@ -346,6 +346,9 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo // handle calculating override configuration from the bounds. private final Rect mBounds = new Rect(); + private boolean mShowWhenLocked; + private boolean mTurnScreenOn; + /** * Temp configs used in {@link #ensureActivityConfigurationLocked(int, boolean)} */ @@ -425,11 +428,11 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo pw.print("\""); pw.print(" primaryColor="); pw.println(Integer.toHexString(taskDescription.getPrimaryColor())); - pw.print(prefix + " backgroundColor="); + pw.print(prefix); pw.print(" backgroundColor="); pw.println(Integer.toHexString(taskDescription.getBackgroundColor())); - pw.print(prefix + " statusBarColor="); + pw.print(prefix); pw.print(" statusBarColor="); pw.println(Integer.toHexString(taskDescription.getStatusBarColor())); - pw.print(prefix + " navigationBarColor="); + pw.print(prefix); pw.print(" navigationBarColor="); pw.println(Integer.toHexString(taskDescription.getNavigationBarColor())); } if (iconFilename == null && taskDescription.getIcon() != null) { @@ -541,8 +544,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo + " mLastReportedPictureInPictureMode=" + mLastReportedPictureInPictureMode); if (info.supportsPictureInPicture()) { pw.println(prefix + "supportsPictureInPicture=" + info.supportsPictureInPicture()); - pw.println(prefix + "supportsPictureInPictureWhilePausing: " - + supportsPictureInPictureWhilePausing); + pw.println(prefix + "supportsEnterPipOnTaskSwitch: " + + supportsEnterPipOnTaskSwitch); } if (info.maxAspectRatio != 0) { pw.println(prefix + "maxAspectRatio=" + info.maxAspectRatio); @@ -656,14 +659,14 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } } - void updatePictureInPictureMode(Rect targetStackBounds) { + void updatePictureInPictureMode(Rect targetStackBounds, boolean forceUpdate) { if (task == null || task.getStack() == null || app == null || app.thread == null) { return; } final boolean inPictureInPictureMode = (task.getStackId() == PINNED_STACK_ID) && (targetStackBounds != null); - if (inPictureInPictureMode != mLastReportedPictureInPictureMode) { + if (inPictureInPictureMode != mLastReportedPictureInPictureMode || forceUpdate) { // Picture-in-picture mode changes also trigger a multi-window mode change as well, so // update that here in order mLastReportedPictureInPictureMode = inPictureInPictureMode; @@ -678,8 +681,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo private void schedulePictureInPictureModeChanged(Configuration overrideConfig) { try { app.thread.schedulePictureInPictureModeChanged(appToken, - mLastReportedPictureInPictureMode, - overrideConfig); + mLastReportedPictureInPictureMode, overrideConfig); } catch (Exception e) { // If process died, no one cares. } @@ -792,8 +794,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo ActivityInfo aInfo, Configuration _configuration, ActivityRecord _resultTo, String _resultWho, int _reqCode, boolean _componentSpecified, boolean _rootVoiceInteraction, - ActivityStackSupervisor supervisor, - ActivityContainer container, ActivityOptions options, ActivityRecord sourceRecord) { + ActivityStackSupervisor supervisor, ActivityOptions options, + ActivityRecord sourceRecord) { service = _service; appToken = new Token(this); info = aInfo; @@ -824,7 +826,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo idle = false; hasBeenLaunched = false; mStackSupervisor = supervisor; - mInitialActivityContainer = container; mRotationAnimationHint = aInfo.rotationAnimation; @@ -896,15 +897,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo Entry ent = AttributeCache.instance().get(packageName, realTheme, com.android.internal.R.styleable.Window, userId); - final boolean translucent = ent != null && (ent.array.getBoolean( - com.android.internal.R.styleable.Window_windowIsTranslucent, false) - || (!ent.array.hasValue( - com.android.internal.R.styleable.Window_windowIsTranslucent) - && ent.array.getBoolean( - com.android.internal.R.styleable.Window_windowSwipeToDismiss, - false))); - fullscreen = ent != null && !ent.array.getBoolean( - com.android.internal.R.styleable.Window_windowIsFloating, false) && !translucent; + fullscreen = ent != null && !ActivityInfo.isTranslucentOrFloating(ent.array); noDisplay = ent != null && ent.array.getBoolean( com.android.internal.R.styleable.Window_windowNoDisplay, false); @@ -914,6 +907,9 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo requestedVrComponent = (aInfo.requestedVrComponent == null) ? null : ComponentName.unflattenFromString(aInfo.requestedVrComponent); + + mShowWhenLocked = (aInfo.flags & FLAG_SHOW_WHEN_LOCKED) != 0; + mTurnScreenOn = (aInfo.flags & FLAG_TURN_SCREEN_ON) != 0; } AppWindowContainerController getWindowContainerController() { @@ -950,8 +946,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo // the user leaves that mode. mLastReportedMultiWindowMode = !task.mFullscreen; mLastReportedPictureInPictureMode = (task.getStackId() == PINNED_STACK_ID); - - onOverrideConfigurationSent(); } void removeWindowContainer() { @@ -1182,18 +1176,24 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * can be put a secondary screen. */ boolean canBeLaunchedOnDisplay(int displayId) { + final TaskRecord task = getTask(); + + // The resizeability of an Activity's parent task takes precendence over the ActivityInfo. + // This allows for a non resizable activity to be launched into a resizeable task. + final boolean resizeable = + task != null ? task.isResizeable() : supportsResizeableMultiWindow(); + return service.mStackSupervisor.canPlaceEntityOnDisplay(displayId, - supportsResizeableMultiWindow()); + resizeable, launchedFromPid, launchedFromUid, info); } /** * @param beforeStopping Whether this check is for an auto-enter-pip operation, that is to say * the activity has requested to enter PiP when it would otherwise be stopped. * - * @return whether this activity is currently allowed to enter PIP, throwing an exception if - * the activity is not currently visible and {@param noThrow} is not set. + * @return whether this activity is currently allowed to enter PIP. */ - boolean checkEnterPictureInPictureState(String caller, boolean noThrow, boolean beforeStopping) { + boolean checkEnterPictureInPictureState(String caller, boolean beforeStopping) { if (!supportsPictureInPicture()) { return false; } @@ -1225,29 +1225,23 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo // When visible, allow entering PiP if the app is not locked. If it is over the // keyguard, then we will prompt to unlock in the caller before entering PiP. return !isCurrentAppLocked && - (supportsPictureInPictureWhilePausing || !beforeStopping); + (supportsEnterPipOnTaskSwitch || !beforeStopping); case PAUSING: case PAUSED: // When pausing, then only allow enter PiP as in the resume state, and in addition, // require that there is not an existing PiP activity and that the current system // state supports entering PiP return isNotLockedOrOnKeyguard && !hasPinnedStack - && supportsPictureInPictureWhilePausing; + && supportsEnterPipOnTaskSwitch; case STOPPING: // When stopping in a valid state, then only allow enter PiP as in the pause state. // Otherwise, fall through to throw an exception if the caller is trying to enter // PiP in an invalid stopping state. - if (supportsPictureInPictureWhilePausing) { + if (supportsEnterPipOnTaskSwitch) { return isNotLockedOrOnKeyguard && !hasPinnedStack; } default: - if (noThrow) { - return false; - } else { - throw new IllegalStateException(caller - + ": Current activity is not visible (state=" + state.name() + ") " - + "r=" + this); - } + return false; } } @@ -1268,13 +1262,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return (info.flags & FLAG_ALWAYS_FOCUSABLE) != 0; } - /** - * @return true if the activity contains windows that have - * {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} set - */ - boolean hasShowWhenLockedWindows() { - return service.mWindowManager.containsShowWhenLockedWindow(appToken); - } /** * @return true if the activity contains windows that have @@ -1285,20 +1272,16 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } void makeFinishingLocked() { - if (!finishing) { - final ActivityStack stack = getStack(); - if (stack != null && this == stack.getVisibleBehindActivity()) { - // A finishing activity should not remain as visible in the background - mStackSupervisor.requestVisibleBehindLocked(this, false); - } - finishing = true; - if (stopped) { - clearOptionsLocked(); - } + if (finishing) { + return; + } + finishing = true; + if (stopped) { + clearOptionsLocked(); + } - if (service != null) { - service.mTaskChangeNotificationController.notifyTaskStackChanged(); - } + if (service != null) { + service.mTaskChangeNotificationController.notifyTaskStackChanged(); } } @@ -1356,10 +1339,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo final ReferrerIntent rintent = new ReferrerIntent(intent, referrer); boolean unsent = true; final ActivityStack stack = getStack(); - final boolean isTopActivityInStack = - stack != null && stack.topRunningActivityLocked() == this; - final boolean isTopActivityWhileSleeping = - service.isSleepingLocked() && isTopActivityInStack; + final boolean isTopActivityWhileSleeping = isTopRunningActivity() + && (stack != null ? stack.shouldSleepActivities() : service.isSleepingLocked()); // We want to immediately deliver the intent to the activity if: // - It is currently resumed or paused. i.e. it is currently visible to the user and we want @@ -1609,11 +1590,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo mUpdateTaskThumbnailWhenHidden = false; } setVisibility(visible); - final ArrayList containers = mChildContainers; - for (int containerNdx = containers.size() - 1; containerNdx >= 0; --containerNdx) { - final ActivityContainer container = containers.get(containerNdx); - container.setVisible(visible); - } mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = true; } @@ -1622,7 +1598,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } void notifyUnknownVisibilityLaunched() { - mWindowContainerController.notifyUnknownVisibilityLaunched(); + + // No display activities never add a window, so there is no point in waiting them for + // relayout. + if (!noDisplay) { + mWindowContainerController.notifyUnknownVisibilityLaunched(); + } } /** @@ -1631,20 +1612,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * * @see {@link ActivityStack#checkKeyguardVisibility} */ - boolean shouldBeVisibleIgnoringKeyguard(boolean behindTranslucentActivity, - boolean stackVisibleBehind, ActivityRecord visibleBehind, - boolean behindFullscreenActivity) { + boolean shouldBeVisibleIgnoringKeyguard(boolean behindFullscreenActivity) { if (!okToShowLocked()) { return false; } - // mLaunchingBehind: Activities launching behind are at the back of the task stack - // but must be drawn initially for the animation as though they were visible. - final boolean activityVisibleBehind = - (behindTranslucentActivity || stackVisibleBehind) && visibleBehind == this; - - boolean isVisible = - !behindFullscreenActivity || mLaunchTaskBehind || activityVisibleBehind; + boolean isVisible = !behindFullscreenActivity || mLaunchTaskBehind; if (service.mSupportsLeanbackOnly && isVisible && isRecentsActivity()) { // On devices that support leanback only (Android TV), Recents activity can only be @@ -1714,7 +1687,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo */ void completeResumeLocked() { final boolean wasVisible = visible; - visible = true; + setVisible(true); if (!wasVisible) { // Visibility has changed, so take a note of it so we call the TaskStackChangedListener mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = true; @@ -1756,11 +1729,14 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo returningOptions = null; - if (stack.getVisibleBehindActivity() == this) { - // When resuming an activity, require it to call requestVisibleBehind() again. - stack.setVisibleBehindActivity(null /* ActivityRecord */); + if (canTurnScreenOn()) { + mStackSupervisor.wakeUp("turnScreenOnFlag"); + } else { + // If the screen is going to turn on because the caller explicitly requested it and + // the keyguard is not showing don't attempt to sleep. Otherwise the Activity will + // pause and then resume again later, which will result in a double life-cycle event. + stack.checkReadyForSleep(); } - mStackSupervisor.checkReadyForSleepLocked(); } final void activityStoppedLocked(Bundle newIcicle, PersistableBundle newPersistentState, @@ -1793,9 +1769,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo mWindowContainerController.notifyAppStopped(); - if (stack.getVisibleBehindActivity() == this) { - mStackSupervisor.requestVisibleBehindLocked(this, false /* visible */); - } if (finishing) { clearOptionsLocked(); } else { @@ -1810,7 +1783,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } void startLaunchTickingLocked() { - if (IS_USER_BUILD) { + if (Build.IS_USER) { return; } if (launchTickTime == 0) { @@ -1866,7 +1839,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } } - public void reportFullyDrawnLocked() { + public void reportFullyDrawnLocked(boolean restoredFromBundle) { final long curTime = SystemClock.uptimeMillis(); if (displayStartTime != 0) { reportLaunchTimeLocked(curTime); @@ -1899,6 +1872,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } stack.mFullyDrawnStartTime = 0; } + mStackSupervisor.mActivityMetricsLogger.logAppTransitionReportedDrawn(this, + restoredFromBundle); fullyDrawnStartTime = 0; } @@ -2042,9 +2017,16 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo /** Checks whether the activity should be shown for current user. */ public boolean okToShowLocked() { + // We cannot show activities when the device is locked and the application is not + // encryption aware. + if (!StorageManager.isUserKeyUnlocked(userId) + && !info.applicationInfo.isEncryptionAware()) { + return false; + } + return (info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0 || (mStackSupervisor.isCurrentProfileLocked(userId) - && !service.mUserController.isUserStoppingOrShuttingDownLocked(userId)); + && service.mUserController.isUserRunningLocked(userId, 0 /* flags */)); } /** @@ -2202,6 +2184,11 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo } void setRequestedOrientation(int requestedOrientation) { + if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen + && appInfo.targetSdkVersion >= O_MR1) { + throw new IllegalStateException("Only fullscreen activities can request orientation"); + } + final int displayId = getDisplayId(); final Configuration displayConfig = mStackSupervisor.getDisplayOverrideConfiguration(displayId); @@ -2236,15 +2223,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo * a new merged configuration is sent to the client for this activity. */ void setLastReportedConfiguration(@NonNull MergedConfiguration config) { - mLastReportedConfiguration.setTo(config); + setLastReportedConfiguration(config.getGlobalConfiguration(), + config.getOverrideConfiguration()); } - /** Call when override config was sent to the Window Manager to update internal records. */ - // TODO(b/36505427): Why do we set last reported based on sending the config to WM? Seems like - // we should only set this when we actually report to the activity which is what the method - // setLastReportedMergedOverrideConfiguration() does. Investigate if this is really needed. - void onOverrideConfigurationSent() { - mLastReportedConfiguration.setOverrideConfiguration(getMergedOverrideConfiguration()); + void setLastReportedConfiguration(Configuration global, Configuration override) { + mLastReportedConfiguration.setConfiguration(global, override); } @Override @@ -2258,9 +2242,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return; } mWindowContainerController.onOverrideConfigurationChanged(newConfig, mBounds); - // TODO(b/36505427): Can we consolidate the call points of onOverrideConfigurationSent() - // to just use this method instead? - onOverrideConfigurationSent(); } // TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer. @@ -2268,26 +2249,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo mTmpConfig.unset(); computeBounds(mTmpBounds); if (mTmpBounds.equals(mBounds)) { - final ActivityStack stack = getStack(); - if (!mBounds.isEmpty() || task == null || stack == null || !task.mFullscreen) { - // We don't want to influence the override configuration here if our task is in - // multi-window mode or there is a bounds specified to calculate the override - // config. In both of this cases the app should be compatible with whatever the - // current configuration is or will be. - return; - } - - // Currently limited to the top activity for now to avoid situations where non-top - // visible activity and top might have conflicting requests putting the non-top activity - // windows in an odd state. - final ActivityRecord top = mStackSupervisor.topRunningActivityLocked(); - final Configuration parentConfig = getParent().getConfiguration(); - if (top != this || isConfigurationCompatible(parentConfig)) { - onOverrideConfigurationChanged(mTmpConfig); - } else if (isConfigurationCompatible( - mLastReportedConfiguration.getMergedConfiguration())) { - onOverrideConfigurationChanged(mLastReportedConfiguration.getMergedConfiguration()); - } return; } @@ -2447,8 +2408,8 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo // Update last reported values. final Configuration newMergedOverrideConfig = getMergedOverrideConfiguration(); - mLastReportedConfiguration.setConfiguration(service.getGlobalConfiguration(), - newMergedOverrideConfig); + + setLastReportedConfiguration(service.getGlobalConfiguration(), newMergedOverrideConfig); if (changes == 0 && !forceNewConfig) { if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, @@ -2629,8 +2590,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo startFreezingScreenLocked(app, 0); - mStackSupervisor.removeChildActivityContainers(this); - try { if (DEBUG_SWITCH || DEBUG_STATES) Slog.i(TAG_SWITCH, "Moving to " + (andResume ? "RESUMED" : "PAUSED") + " Relaunching " + this @@ -2809,7 +2768,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo 0 /* launchedFromPid */, launchedFromUid, launchedFromPackage, intent, resolvedType, aInfo, service.getConfiguration(), null /* resultTo */, null /* resultWho */, 0 /* reqCode */, componentSpecified, false /* rootVoiceInteraction */, - stackSupervisor, null /* container */, null /* options */, null /* sourceRecord */); + stackSupervisor, null /* options */, null /* sourceRecord */); r.persistentState = persistentState; r.taskDescription = taskDescription; @@ -2836,6 +2795,44 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo return info.applicationInfo.uid; } + void setShowWhenLocked(boolean showWhenLocked) { + mShowWhenLocked = showWhenLocked; + } + + /** + * @return true if the activity contains windows that have + * {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} set or if the activity has set + * {@link #mShowWhenLocked}. + */ + boolean canShowWhenLocked() { + return mShowWhenLocked || service.mWindowManager.containsShowWhenLockedWindow(appToken); + } + + void setTurnScreenOn(boolean turnScreenOn) { + mTurnScreenOn = turnScreenOn; + } + + /** + * Determines whether this ActivityRecord can turn the screen on. It checks whether the flag + * {@link #mTurnScreenOn} is set and checks whether the ActivityRecord should be visible + * depending on Keyguard state + * + * @return true if the screen can be turned on, false otherwise. + */ + boolean canTurnScreenOn() { + final ActivityStack stack = getStack(); + return mTurnScreenOn && stack != null && + stack.checkKeyguardVisibility(this, true /* shouldBeVisible */, true /* isTop */); + } + + boolean getTurnScreenOnFlag() { + return mTurnScreenOn; + } + + boolean isTopRunningActivity() { + return mStackSupervisor.topRunningActivityLocked() == this; + } + @Override public String toString() { if (stringName != null) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 3620ddb74babdca1d25c8e85b7c1f86415f9d279..199860597f9a1039d0a3d643332ad44bca17e3d6 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -30,6 +30,7 @@ import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD; +import static android.view.Display.INVALID_DISPLAY; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_APP; @@ -64,6 +65,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBILIT import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityRecord.APPLICATION_ACTIVITY_TYPE; +import static com.android.server.am.ActivityStack.ActivityState.PAUSED; import static com.android.server.am.ActivityRecord.ASSISTANT_ACTIVITY_TYPE; import static com.android.server.am.ActivityRecord.HOME_ACTIVITY_TYPE; import static com.android.server.am.ActivityStack.ActivityState.STOPPED; @@ -124,7 +126,6 @@ import com.android.internal.app.IVoiceInteractor; import com.android.internal.os.BatteryStatsImpl; import com.android.server.Watchdog; import com.android.server.am.ActivityManagerService.ItemMatcher; -import com.android.server.am.ActivityStackSupervisor.ActivityContainer; import com.android.server.wm.StackWindowController; import com.android.server.wm.StackWindowListener; import com.android.server.wm.WindowManagerService; @@ -205,7 +206,7 @@ class ActivityStack extends ConfigurationContai @Override protected ConfigurationContainer getParent() { - return mActivityContainer.mActivityDisplay; + return getDisplay(); } @Override @@ -230,9 +231,6 @@ class ActivityStack extends ConfigurationContai static final int STACK_INVISIBLE = 0; // Stack is considered visible static final int STACK_VISIBLE = 1; - // Stack is considered visible, but only becuase it has activity that is visible behind other - // activities and there is a specific combination of stacks. - static final int STACK_VISIBLE_ACTIVITY_BEHIND = 2; @VisibleForTesting /* The various modes for the method {@link #removeTask}. */ @@ -339,8 +337,8 @@ class ActivityStack extends ConfigurationContai int mCurrentUser; final int mStackId; - final ActivityContainer mActivityContainer; /** The other stacks, in order, on the attached display. Updated at attach/detach time. */ + // TODO: This list doesn't belong here... ArrayList mStacks; /** The attached Display's unique identifier, or -1 if detached */ int mDisplayId; @@ -365,8 +363,6 @@ class ActivityStack extends ConfigurationContai static final int STOP_TIMEOUT_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 4; static final int DESTROY_ACTIVITIES_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 5; static final int TRANSLUCENT_TIMEOUT_MSG = ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 6; - static final int RELEASE_BACKGROUND_RESOURCES_TIMEOUT_MSG = - ActivityManagerService.FIRST_ACTIVITY_STACK_MSG + 7; private static class ScheduleDestroyArgs { final ProcessRecord mOwner; @@ -440,15 +436,6 @@ class ActivityStack extends ConfigurationContai notifyActivityDrawnLocked(null); } } break; - case RELEASE_BACKGROUND_RESOURCES_TIMEOUT_MSG: { - synchronized (mService) { - final ActivityRecord r = getVisibleBehindActivity(); - Slog.e(TAG, "Timeout waiting for cancelVisibleBehind player=" + r); - if (r != null) { - mService.killAppAtUsersRequest(r.app, null); - } - } - } break; } } } @@ -461,24 +448,21 @@ class ActivityStack extends ConfigurationContai return count; } - ActivityStack(ActivityStackSupervisor.ActivityContainer activityContainer, - RecentTasks recentTasks, boolean onTop) { - mActivityContainer = activityContainer; - mStackSupervisor = activityContainer.getOuter(); - mService = mStackSupervisor.mService; + ActivityStack(ActivityStackSupervisor.ActivityDisplay display, int stackId, + ActivityStackSupervisor supervisor, RecentTasks recentTasks, boolean onTop) { + mStackSupervisor = supervisor; + mService = supervisor.mService; mHandler = new ActivityStackHandler(mService.mHandler.getLooper()); mWindowManager = mService.mWindowManager; - mStackId = activityContainer.mStackId; + mStackId = stackId; mCurrentUser = mService.mUserController.getCurrentUserIdLocked(); mRecentTasks = recentTasks; mTaskPositioner = mStackId == FREEFORM_WORKSPACE_STACK_ID ? new LaunchingTaskPositioner() : null; - final ActivityStackSupervisor.ActivityDisplay display = mActivityContainer.mActivityDisplay; mTmpRect2.setEmpty(); mWindowContainerController = createStackWindowController(display.mDisplayId, onTop, mTmpRect2); - activityContainer.mStack = this; - mStackSupervisor.mActivityContainers.put(mStackId, activityContainer); + mStackSupervisor.mStacks.put(mStackId, this); postAddToDisplay(display, mTmpRect2.isEmpty() ? null : mTmpRect2, onTop); } @@ -535,7 +519,11 @@ class ActivityStack extends ConfigurationContai * either destroyed completely or re-parented. */ private void removeFromDisplay() { - mDisplayId = Display.INVALID_DISPLAY; + final ActivityStackSupervisor.ActivityDisplay display = getDisplay(); + if (display != null) { + display.detachStack(this); + } + mDisplayId = INVALID_DISPLAY; mStacks = null; if (mTaskPositioner != null) { mTaskPositioner.reset(); @@ -551,14 +539,18 @@ class ActivityStack extends ConfigurationContai /** Removes the stack completely. Also calls WindowManager to do the same on its side. */ void remove() { removeFromDisplay(); - mStackSupervisor.deleteActivityContainerRecord(mStackId); + mStackSupervisor.mStacks.remove(mStackId); mWindowContainerController.removeContainer(); mWindowContainerController = null; onParentChanged(); } + ActivityStackSupervisor.ActivityDisplay getDisplay() { + return mStackSupervisor.getActivityDisplay(mDisplayId); + } + void getDisplaySize(Point out) { - mActivityContainer.mActivityDisplay.mDisplay.getSize(out); + getDisplay().mDisplay.getSize(out); } /** @@ -850,8 +842,7 @@ class ActivityStack extends ConfigurationContai } final boolean isOnHomeDisplay() { - return isAttached() && - mActivityContainer.mActivityDisplay.mDisplayId == DEFAULT_DISPLAY; + return isAttached() && mDisplayId == DEFAULT_DISPLAY; } void moveToFront(String reason) { @@ -963,7 +954,9 @@ class ActivityStack extends ConfigurationContai if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": different user"); continue; } - final ActivityRecord r = task.getTopActivity(); + + // Overlays should not be considered as the task's logical top activity. + final ActivityRecord r = task.getTopActivity(false /* includeOverlays */); if (r == null || r.finishing || r.userId != userId || r.launchMode == ActivityInfo.LAUNCH_SINGLE_INSTANCE) { if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r); @@ -1180,10 +1173,26 @@ class ActivityStack extends ConfigurationContai } } + void checkReadyForSleep() { + if (shouldSleepActivities() && goToSleepIfPossible(false /* shuttingDown */)) { + mStackSupervisor.checkReadyForSleepLocked(true /* allowDelay */); + } + } + /** - * @return true if something must be done before going to sleep. + * Tries to put the activities in the stack to sleep. + * + * If the stack is not in a state where its activities can be put to sleep, this function will + * start any necessary actions to move the stack into such a state. It is expected that this + * function get called again when those actions complete. + * + * @param shuttingDown true when the called because the device is shutting down. + * @return true if the stack finished going to sleep, false if the stack only started the + * process of going to sleep (checkReadyForSleep will be called when that process finishes). */ - boolean checkReadyForSleepLocked() { + boolean goToSleepIfPossible(boolean shuttingDown) { + boolean shouldSleep = true; + if (mResumedActivity != null) { // Still have something resumed; can't sleep until it is paused. if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep needs to pause " + mResumedActivity); @@ -1193,32 +1202,44 @@ class ActivityStack extends ConfigurationContai // If we are in the middle of resuming the top activity in // {@link #resumeTopActivityUncheckedLocked}, mResumedActivity will be set but not // resumed yet. We must not proceed pausing the activity here. This method will be - // called again if necessary as part of + // called again if necessary as part of {@link #checkReadyForSleep} or // {@link ActivityStackSupervisor#checkReadyForSleepLocked}. if (mStackSupervisor.inResumeTopActivity) { if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "In the middle of resuming top activity " + mResumedActivity); - return true; + } else { + startPausingLocked(false, true, null, false); } - - startPausingLocked(false, true, null, false); - return true; - } - if (mPausingActivity != null) { + shouldSleep = false ; + } else if (mPausingActivity != null) { // Still waiting for something to pause; can't sleep yet. if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still waiting to pause " + mPausingActivity); - return true; + shouldSleep = false; } - if (hasVisibleBehindActivity()) { - // Stop visible behind activity before going to sleep. - final ActivityRecord r = getVisibleBehindActivity(); - mStackSupervisor.mStoppingActivities.add(r); - if (DEBUG_STATES) Slog.v(TAG_STATES, "Sleep still waiting to stop visible behind " + r); - return true; + if (!shuttingDown) { + if (containsActivityFromStack(mStackSupervisor.mStoppingActivities)) { + // Still need to tell some activities to stop; can't sleep yet. + if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still need to stop " + + mStackSupervisor.mStoppingActivities.size() + " activities"); + + mStackSupervisor.scheduleIdleLocked(); + shouldSleep = false; + } + + if (containsActivityFromStack(mStackSupervisor.mGoingToSleepActivities)) { + // Still need to tell some activities to sleep; can't sleep yet. + if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still need to sleep " + + mStackSupervisor.mGoingToSleepActivities.size() + " activities"); + shouldSleep = false; + } } - return false; + if (shouldSleep) { + goToSleep(); + } + + return shouldSleep; } void goToSleep() { @@ -1238,6 +1259,15 @@ class ActivityStack extends ConfigurationContai } } + private boolean containsActivityFromStack(List rs) { + for (ActivityRecord r : rs) { + if (r.getStack() == this) { + return true; + } + } + return false; + } + /** * Schedule a pause timeout in case the app doesn't respond. We don't give it much time because * this directly impacts the responsiveness seen by the user. @@ -1270,7 +1300,7 @@ class ActivityStack extends ConfigurationContai if (mPausingActivity != null) { Slog.wtf(TAG, "Going to pause when pause is already pending for " + mPausingActivity + " state=" + mPausingActivity.state); - if (!mService.isSleepingLocked()) { + if (!shouldSleepActivities()) { // Avoid recursion among check for sleep and complete pause during sleeping. // Because activity will be paused immediately after resume, just let pause // be completed by the order of activity paused from clients. @@ -1287,12 +1317,6 @@ class ActivityStack extends ConfigurationContai return false; } - if (mActivityContainer.mParentActivity == null) { - // Top level stack, not a child. Look for child stacks. - mStackSupervisor.pauseChildStacks(prev, userLeaving, uiSleeping, resuming, - pauseImmediately); - } - if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to PAUSING: " + prev); else if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Start pausing: " + prev); mResumedActivity = null; @@ -1436,8 +1460,7 @@ class ActivityStack extends ConfigurationContai // We can't clobber it, because the stop confirmation will not be handled. // We don't need to schedule another stop, we only need to let it happen. prev.state = STOPPING; - } else if ((!prev.visible && !hasVisibleBehindActivity()) - || mService.isSleepingOrShuttingDownLocked()) { + } else if (!prev.visible || shouldSleepOrShutDownActivities()) { // Clear out any deferred client hide we might currently have. prev.setDeferHidingClient(false); // If we were visible then resumeTopActivities will release resources before @@ -1459,10 +1482,10 @@ class ActivityStack extends ConfigurationContai if (resumeNext) { final ActivityStack topStack = mStackSupervisor.getFocusedStack(); - if (!mService.isSleepingOrShuttingDownLocked()) { + if (!topStack.shouldSleepOrShutDownActivities()) { mStackSupervisor.resumeFocusedStackTopActivityLocked(topStack, prev, null); } else { - mStackSupervisor.checkReadyForSleepLocked(); + checkReadyForSleep(); ActivityRecord top = topStack.topRunningActivityLocked(); if (top == null || (prev != null && top != prev)) { // If there are no more activities available to run, do resume anyway to start @@ -1528,7 +1551,7 @@ class ActivityStack extends ConfigurationContai mStackSupervisor.scheduleIdleTimeoutLocked(r); } } else { - mStackSupervisor.checkReadyForSleepLocked(); + checkReadyForSleep(); } } @@ -1642,8 +1665,8 @@ class ActivityStack extends ConfigurationContai } /** - * Returns what the stack visibility should be: {@link #STACK_INVISIBLE}, {@link #STACK_VISIBLE} - * or {@link #STACK_VISIBLE_ACTIVITY_BEHIND}. + * Returns what the stack visibility should be: {@link #STACK_INVISIBLE} or + * {@link #STACK_VISIBLE}. * * @param starting The currently starting activity or null if there is none. */ @@ -1668,14 +1691,6 @@ class ActivityStack extends ConfigurationContai final ActivityStack topStack = getTopStackOnDisplay(); final int topStackId = topStack.mStackId; - if (StackId.isBackdropToTranslucentActivity(mStackId) - && hasVisibleBehindActivity() && StackId.isHomeOrRecentsStack(topStackId) - && (topStack.topActivity() == null || !topStack.topActivity().fullscreen)) { - // The fullscreen or assistant stack should be visible if it has a visible behind - // activity behind the home or recents stack that is translucent. - return STACK_VISIBLE_ACTIVITY_BEHIND; - } - if (mStackId == DOCKED_STACK_ID) { // If the assistant stack is focused and translucent, then the docked stack is always // visible @@ -1800,12 +1815,10 @@ class ActivityStack extends ConfigurationContai boolean aboveTop = top != null; final int stackVisibility = shouldBeVisible(starting); final boolean stackInvisible = stackVisibility != STACK_VISIBLE; - final boolean stackVisibleBehind = stackVisibility == STACK_VISIBLE_ACTIVITY_BEHIND; boolean behindFullscreenActivity = stackInvisible; boolean resumeNextActivity = mStackSupervisor.isFocusedStack(this) && (isInStackLocked(starting) == null); boolean behindTranslucentActivity = false; - final ActivityRecord visibleBehind = getVisibleBehindActivity(); for (int taskNdx = mTaskHistory.size() - 1; taskNdx >= 0; --taskNdx) { final TaskRecord task = mTaskHistory.get(taskNdx); final ArrayList activities = task.mActivities; @@ -1830,7 +1843,6 @@ class ActivityStack extends ConfigurationContai // Check whether activity should be visible without Keyguard influence final boolean visibleIgnoringKeyguard = r.shouldBeVisibleIgnoringKeyguard( - behindTranslucentActivity, stackVisibleBehind, visibleBehind, behindFullscreenActivity); r.visibleIgnoringKeyguard = visibleIgnoringKeyguard; @@ -1882,7 +1894,7 @@ class ActivityStack extends ConfigurationContai + stackInvisible + " behindFullscreenActivity=" + behindFullscreenActivity + " mLaunchTaskBehind=" + r.mLaunchTaskBehind); - makeInvisible(r, visibleBehind); + makeInvisible(r); } } if (mStackId == FREEFORM_WORKSPACE_STACK_ID) { @@ -1969,9 +1981,10 @@ class ActivityStack extends ConfigurationContai boolean checkKeyguardVisibility(ActivityRecord r, boolean shouldBeVisible, boolean isTop) { final boolean isInPinnedStack = r.getStack().getStackId() == PINNED_STACK_ID; - final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing(); + final boolean keyguardShowing = mStackSupervisor.mKeyguardController.isKeyguardShowing( + mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY); final boolean keyguardLocked = mStackSupervisor.mKeyguardController.isKeyguardLocked(); - final boolean showWhenLocked = r.hasShowWhenLockedWindows() && !isInPinnedStack; + final boolean showWhenLocked = r.canShowWhenLocked() && !isInPinnedStack; final boolean dismissKeyguard = r.hasDismissKeyguardWindows(); if (shouldBeVisible) { if (dismissKeyguard && mTopDismissingKeyguardActivity == null) { @@ -2009,8 +2022,7 @@ class ActivityStack extends ConfigurationContai * {@link Display#FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD} applied. */ private boolean canShowWithInsecureKeyguard() { - final ActivityStackSupervisor.ActivityDisplay activityDisplay - = mActivityContainer.mActivityDisplay; + final ActivityStackSupervisor.ActivityDisplay activityDisplay = getDisplay(); if (activityDisplay == null) { throw new IllegalStateException("Stack is not attached to any display, stackId=" + mStackId); @@ -2057,7 +2069,8 @@ class ActivityStack extends ConfigurationContai return false; } - private void makeInvisible(ActivityRecord r, ActivityRecord visibleBehind) { + // TODO: Should probably be moved into ActivityRecord. + private void makeInvisible(ActivityRecord r) { if (!r.visible) { if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Already invisible: " + r); return; @@ -2067,11 +2080,16 @@ class ActivityStack extends ConfigurationContai if (DEBUG_VISIBILITY) Slog.v(TAG_VISIBILITY, "Making invisible: " + r + " " + r.state); try { final boolean canEnterPictureInPicture = r.checkEnterPictureInPictureState( - "makeInvisible", true /* noThrow */, true /* beforeStopping */); - // Defer telling the client it is hidden if it can enter Pip and isn't current stopped - // or stopping. This gives it a chance to enter Pip in onPause(). + "makeInvisible", true /* beforeStopping */); + // Defer telling the client it is hidden if it can enter Pip and isn't current paused, + // stopped or stopping. This gives it a chance to enter Pip in onPause(). + // TODO: There is still a question surrounding activities in multi-window mode that want + // to enter Pip after they are paused, but are still visible. I they should be okay to + // enter Pip in those cases, but not "auto-Pip" which is what this condition covers and + // the current contract for "auto-Pip" is that the app should enter it before onPause + // returns. Just need to confirm this reasoning makes sense. final boolean deferHidingClient = canEnterPictureInPicture - && r.state != STOPPING && r.state != STOPPED; + && r.state != STOPPING && r.state != STOPPED && r.state != PAUSED; r.setDeferHidingClient(deferHidingClient); r.setVisible(false); @@ -2086,21 +2104,15 @@ class ActivityStack extends ConfigurationContai // Reset the flag indicating that an app can enter picture-in-picture once the // activity is hidden - r.supportsPictureInPictureWhilePausing = false; + r.supportsEnterPipOnTaskSwitch = false; break; case INITIALIZING: case RESUMED: case PAUSING: case PAUSED: - // This case created for transitioning activities from - // translucent to opaque {@link Activity#convertToOpaque}. - if (visibleBehind == r) { - releaseBackgroundResources(r); - } else { - addToStopping(r, true /* scheduleIdle */, - canEnterPictureInPicture /* idleDelayed */); - } + addToStopping(r, true /* scheduleIdle */, + canEnterPictureInPicture /* idleDelayed */); break; default: @@ -2157,7 +2169,6 @@ class ActivityStack extends ConfigurationContai * occurred and the activity will be notified immediately. */ void notifyActivityDrawnLocked(ActivityRecord r) { - mActivityContainer.setDrawn(); if ((r == null) || (mUndrawnActivitiesBelowTopTranslucent.remove(r) && mUndrawnActivitiesBelowTopTranslucent.isEmpty())) { @@ -2245,12 +2256,18 @@ class ActivityStack extends ConfigurationContai } finally { mStackSupervisor.inResumeTopActivity = false; } + // When resuming the top activity, it may be necessary to pause the top activity (for // example, returning to the lock screen. We suppress the normal pause logic in // {@link #resumeTopActivityUncheckedLocked}, since the top activity is resumed at the end. // We call the {@link ActivityStackSupervisor#checkReadyForSleepLocked} again here to ensure - // any necessary pause logic occurs. - mStackSupervisor.checkReadyForSleepLocked(); + // any necessary pause logic occurs. In the case where the Activity will be shown regardless + // of the lock screen, the call to {@link ActivityStackSupervisor#checkReadyForSleepLocked} + // is skipped. + final ActivityRecord next = topRunningActivityLocked(true /* focusableOnly */); + if (next == null || !next.canTurnScreenOn()) { + checkReadyForSleep(); + } return result; } @@ -2279,12 +2296,8 @@ class ActivityStack extends ConfigurationContai final boolean hasRunningActivity = next != null; - final ActivityRecord parent = mActivityContainer.mParentActivity; - final boolean isParentNotResumed = parent != null && parent.state != ActivityState.RESUMED; - if (hasRunningActivity - && (isParentNotResumed || !mActivityContainer.isAttachedLocked())) { - // Do not resume this stack if its parent is not resumed. - // TODO: If in a loop, make sure that parent stack resumeTopActivity is called 1st. + // TODO: Maybe this entire condition can get removed? + if (hasRunningActivity && getDisplay() == null) { return false; } @@ -2338,7 +2351,7 @@ class ActivityStack extends ConfigurationContai // If we are sleeping, and there is no resumed activity, and the top // activity is paused, well that is the state we want. - if (mService.isSleepingOrShuttingDownLocked() + if (shouldSleepOrShutDownActivities() && mLastPausedActivity == next && mStackSupervisor.allPausedActivitiesComplete()) { // Make sure we have executed any pending transitions, since there @@ -2386,7 +2399,7 @@ class ActivityStack extends ConfigurationContai // represent the last resumed activity. However, the last focus stack does if it isn't null. final ActivityRecord lastResumed = lastFocusedStack.mResumedActivity; lastResumedCanPip = lastResumed != null && lastResumed.checkEnterPictureInPictureState( - "resumeTopActivity", true /* noThrow */, userLeaving /* beforeStopping */); + "resumeTopActivity", userLeaving /* beforeStopping */); } // If the flag RESUME_WHILE_PAUSING is set, then continue to schedule the previous activity // to be paused, while at the same time resuming the new resume activity only if the @@ -2430,7 +2443,7 @@ class ActivityStack extends ConfigurationContai // If the most recent activity was noHistory but was only stopped rather // than stopped+finished because the device went to sleep, we need to make // sure to finish it as we're making a new activity topmost. - if (mService.isSleepingLocked() && mLastNoHistoryActivity != null && + if (shouldSleepActivities() && mLastNoHistoryActivity != null && !mLastNoHistoryActivity.finishing) { if (DEBUG_STATES) Slog.d(TAG_STATES, "no-history finish of " + mLastNoHistoryActivity + " on new resume"); @@ -2550,118 +2563,139 @@ class ActivityStack extends ConfigurationContai || (lastStack.mLastPausedActivity != null && !lastStack.mLastPausedActivity.fullscreen)); - // This activity is now becoming visible. - if (!next.visible || next.stopped || lastActivityTranslucent) { - next.setVisibility(true); - } + // The contained logic must be synchronized, since we are both changing the visibility + // and updating the {@link Configuration}. {@link ActivityRecord#setVisibility} will + // ultimately cause the client code to schedule a layout. Since layouts retrieve the + // current {@link Configuration}, we must ensure that the below code updates it before + // the layout can occur. + synchronized(mWindowManager.getWindowManagerLock()) { + // This activity is now becoming visible. + if (!next.visible || next.stopped || lastActivityTranslucent) { + next.setVisibility(true); + } - // schedule launch ticks to collect information about slow apps. - next.startLaunchTickingLocked(); + // schedule launch ticks to collect information about slow apps. + next.startLaunchTickingLocked(); - ActivityRecord lastResumedActivity = - lastStack == null ? null :lastStack.mResumedActivity; - ActivityState lastState = next.state; + ActivityRecord lastResumedActivity = + lastStack == null ? null :lastStack.mResumedActivity; + ActivityState lastState = next.state; - mService.updateCpuStats(); + mService.updateCpuStats(); - if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to RESUMED: " + next + " (in existing)"); + if (DEBUG_STATES) Slog.v(TAG_STATES, "Moving to RESUMED: " + next + + " (in existing)"); - setResumedActivityLocked(next, "resumeTopActivityInnerLocked"); + setResumedActivityLocked(next, "resumeTopActivityInnerLocked"); - mService.updateLruProcessLocked(next.app, true, null); - updateLRUListLocked(next); - mService.updateOomAdjLocked(); + mService.updateLruProcessLocked(next.app, true, null); + updateLRUListLocked(next); + mService.updateOomAdjLocked(); - // Have the window manager re-evaluate the orientation of - // the screen based on the new activity order. - boolean notUpdated = true; - if (mStackSupervisor.isFocusedStack(this)) { - final Configuration config = mWindowManager.updateOrientationFromAppTokens( - mStackSupervisor.getDisplayOverrideConfiguration(mDisplayId), - next.mayFreezeScreenLocked(next.app) ? next.appToken : null, mDisplayId); - if (config != null) { - next.frozenBeforeDestroy = true; - } - notUpdated = !mService.updateDisplayOverrideConfigurationLocked(config, next, - false /* deferResume */, mDisplayId); - } - - if (notUpdated) { - // The configuration update wasn't able to keep the existing - // instance of the activity, and instead started a new one. - // We should be all done, but let's just make sure our activity - // is still at the top and schedule another run if something - // weird happened. - ActivityRecord nextNext = topRunningActivityLocked(); - if (DEBUG_SWITCH || DEBUG_STATES) Slog.i(TAG_STATES, - "Activity config changed during resume: " + next - + ", new next: " + nextNext); - if (nextNext != next) { - // Do over! - mStackSupervisor.scheduleResumeTopActivities(); - } - if (!next.visible || next.stopped) { - next.setVisibility(true); - } - next.completeResumeLocked(); - if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); - return true; - } + // Have the window manager re-evaluate the orientation of + // the screen based on the new activity order. + boolean notUpdated = true; - try { - // Deliver all pending results. - ArrayList a = next.results; - if (a != null) { - final int N = a.size(); - if (!next.finishing && N > 0) { - if (DEBUG_RESULTS) Slog.v(TAG_RESULTS, - "Delivering results to " + next + ": " + a); - next.app.thread.scheduleSendResult(next.appToken, a); + if (mStackSupervisor.isFocusedStack(this)) { + + // We have special rotation behavior when Keyguard is locked. Make sure all + // activity visibilities are set correctly as well as the transition is updated + // if needed to get the correct rotation behavior. + // TODO: Remove this once visibilities are set correctly immediately when + // starting an activity. + if (mStackSupervisor.mKeyguardController.isKeyguardLocked()) { + mStackSupervisor.ensureActivitiesVisibleLocked(null /* starting */, + 0 /* configChanges */, false /* preserveWindows */); } + final Configuration config = mWindowManager.updateOrientationFromAppTokens( + mStackSupervisor.getDisplayOverrideConfiguration(mDisplayId), + next.mayFreezeScreenLocked(next.app) ? next.appToken : null, + mDisplayId); + if (config != null) { + next.frozenBeforeDestroy = true; + } + notUpdated = !mService.updateDisplayOverrideConfigurationLocked(config, next, + false /* deferResume */, mDisplayId); } - if (next.newIntents != null) { - next.app.thread.scheduleNewIntent( - next.newIntents, next.appToken, false /* andPause */); + if (notUpdated) { + // The configuration update wasn't able to keep the existing + // instance of the activity, and instead started a new one. + // We should be all done, but let's just make sure our activity + // is still at the top and schedule another run if something + // weird happened. + ActivityRecord nextNext = topRunningActivityLocked(); + if (DEBUG_SWITCH || DEBUG_STATES) Slog.i(TAG_STATES, + "Activity config changed during resume: " + next + + ", new next: " + nextNext); + if (nextNext != next) { + // Do over! + mStackSupervisor.scheduleResumeTopActivities(); + } + if (!next.visible || next.stopped) { + next.setVisibility(true); + } + next.completeResumeLocked(); + if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); + return true; } - // Well the app will no longer be stopped. - // Clear app token stopped state in window manager if needed. - next.notifyAppResumed(next.stopped); - - EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY, next.userId, - System.identityHashCode(next), next.getTask().taskId, - next.shortComponentName); + try { + // Deliver all pending results. + ArrayList a = next.results; + if (a != null) { + final int N = a.size(); + if (!next.finishing && N > 0) { + if (DEBUG_RESULTS) Slog.v(TAG_RESULTS, + "Delivering results to " + next + ": " + a); + next.app.thread.scheduleSendResult(next.appToken, a); + } + } - next.sleeping = false; - mService.showUnsupportedZoomDialogIfNeededLocked(next); - mService.showAskCompatModeDialogLocked(next); - next.app.pendingUiClean = true; - next.app.forceProcessStateUpTo(mService.mTopProcessState); - next.clearOptionsLocked(); - next.app.thread.scheduleResumeActivity(next.appToken, next.app.repProcState, - mService.isNextTransitionForward(), resumeAnimOptions); + if (next.newIntents != null) { + next.app.thread.scheduleNewIntent( + next.newIntents, next.appToken, false /* andPause */); + } - if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Resumed " + next); - } catch (Exception e) { - // Whoops, need to restart this activity! - if (DEBUG_STATES) Slog.v(TAG_STATES, "Resume failed; resetting state to " - + lastState + ": " + next); - next.state = lastState; - if (lastStack != null) { - lastStack.mResumedActivity = lastResumedActivity; - } - Slog.i(TAG, "Restarting because process died: " + next); - if (!next.hasBeenLaunched) { - next.hasBeenLaunched = true; - } else if (SHOW_APP_STARTING_PREVIEW && lastStack != null && - mStackSupervisor.isFrontStackOnDisplay(lastStack)) { - next.showStartingWindow(null /* prev */, false /* newTask */, - false /* taskSwitch */); + // Well the app will no longer be stopped. + // Clear app token stopped state in window manager if needed. + next.notifyAppResumed(next.stopped); + + EventLog.writeEvent(EventLogTags.AM_RESUME_ACTIVITY, next.userId, + System.identityHashCode(next), next.getTask().taskId, + next.shortComponentName); + + next.sleeping = false; + mService.showUnsupportedZoomDialogIfNeededLocked(next); + mService.showAskCompatModeDialogLocked(next); + next.app.pendingUiClean = true; + next.app.forceProcessStateUpTo(mService.mTopProcessState); + next.clearOptionsLocked(); + next.app.thread.scheduleResumeActivity(next.appToken, next.app.repProcState, + mService.isNextTransitionForward(), resumeAnimOptions); + + if (DEBUG_STATES) Slog.d(TAG_STATES, "resumeTopActivityLocked: Resumed " + + next); + } catch (Exception e) { + // Whoops, need to restart this activity! + if (DEBUG_STATES) Slog.v(TAG_STATES, "Resume failed; resetting state to " + + lastState + ": " + next); + next.state = lastState; + if (lastStack != null) { + lastStack.mResumedActivity = lastResumedActivity; + } + Slog.i(TAG, "Restarting because process died: " + next); + if (!next.hasBeenLaunched) { + next.hasBeenLaunched = true; + } else if (SHOW_APP_STARTING_PREVIEW && lastStack != null && + mStackSupervisor.isFrontStackOnDisplay(lastStack)) { + next.showStartingWindow(null /* prev */, false /* newTask */, + false /* taskSwitch */); + } + mStackSupervisor.startSpecificActivityLocked(next, true, false); + if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); + return true; } - mStackSupervisor.startSpecificActivityLocked(next, true, false); - if (DEBUG_STACK) mStackSupervisor.validateTopActivitiesLocked(); - return true; } // From this point on, if something goes wrong there is no way @@ -2913,11 +2947,9 @@ class ActivityStack extends ConfigurationContai // supporting picture-in-picture while pausing only if the starting activity // would not be considered an overlay on top of the current activity // (eg. not fullscreen, or the assistant) - if (focusedTopActivity != null - && focusedTopActivity.getStackId() != PINNED_STACK_ID - && r.getStackId() != ASSISTANT_STACK_ID - && r.fullscreen) { - focusedTopActivity.supportsPictureInPictureWhilePausing = true; + if (canEnterPipOnTaskSwitch(focusedTopActivity, + null /* toFrontTask */, r, options)) { + focusedTopActivity.supportsEnterPipOnTaskSwitch = true; } transit = TRANSIT_TASK_OPEN; } @@ -2972,6 +3004,30 @@ class ActivityStack extends ConfigurationContai } } + /** + * @return Whether the switch to another task can trigger the currently running activity to + * enter PiP while it is pausing (if supported). Only one of {@param toFrontTask} or + * {@param toFrontActivity} should be set. + */ + private boolean canEnterPipOnTaskSwitch(ActivityRecord pipCandidate, + TaskRecord toFrontTask, ActivityRecord toFrontActivity, ActivityOptions opts) { + if (opts != null && opts.disallowEnterPictureInPictureWhileLaunching()) { + // Ensure the caller has requested not to trigger auto-enter PiP + return false; + } + if (pipCandidate == null || pipCandidate.getStackId() == PINNED_STACK_ID) { + // Ensure that we do not trigger entering PiP an activity on the pinned stack + return false; + } + final int targetStackId = toFrontTask != null ? toFrontTask.getStackId() + : toFrontActivity.getStackId(); + if (targetStackId == ASSISTANT_STACK_ID) { + // Ensure the task/activity being brought forward is not the assistant + return false; + } + return true; + } + private boolean isTaskSwitch(ActivityRecord r, ActivityRecord topFocusedActivity) { return topFocusedActivity != null && r.getTask() != topFocusedActivity.getTask(); @@ -3442,7 +3498,7 @@ class ActivityStack extends ConfigurationContai if ((r.intent.getFlags()&Intent.FLAG_ACTIVITY_NO_HISTORY) != 0 || (r.info.flags&ActivityInfo.FLAG_NO_HISTORY) != 0) { if (!r.finishing) { - if (!mService.isSleepingLocked()) { + if (!shouldSleepActivities()) { if (DEBUG_STATES) Slog.d(TAG_STATES, "no-history finish of " + r); if (requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null, "stop-no-history", false)) { @@ -3474,7 +3530,7 @@ class ActivityStack extends ConfigurationContai EventLogTags.writeAmStopActivity( r.userId, System.identityHashCode(r), r.shortComponentName); r.app.thread.scheduleStopActivity(r.appToken, r.visible, r.configChangeFlags); - if (mService.isSleepingOrShuttingDownLocked()) { + if (shouldSleepOrShutDownActivities()) { r.setSleeping(true); } Message msg = mHandler.obtainMessage(STOP_TIMEOUT_MSG, r); @@ -3861,7 +3917,7 @@ class ActivityStack extends ConfigurationContai } } if (noActivitiesInStack) { - mActivityContainer.onTaskListEmptyLocked(); + remove(); } } @@ -3972,7 +4028,7 @@ class ActivityStack extends ConfigurationContai destIntent, null /*ephemeralIntent*/, null, aInfo, null /*rInfo*/, null, null, parent.appToken, null, 0, -1, parent.launchedFromUid, parent.launchedFromPackage, -1, parent.launchedFromUid, 0, null, - false, true, null, null, null, "navigateUpTo"); + false, true, null, null, "navigateUpTo"); foundParentInTask = res == ActivityManager.START_SUCCESS; } catch (RemoteException e) { foundParentInTask = false; @@ -4043,10 +4099,6 @@ class ActivityStack extends ConfigurationContai // Get rid of any pending idle timeouts. removeTimeoutsForActivityLocked(r); - if (getVisibleBehindActivity() == r) { - mStackSupervisor.requestVisibleBehindLocked(r, false); - } - // Clean-up activities are no longer relaunching (e.g. app process died). Notify window // manager so it can update its bookkeeping. mWindowManager.notifyAppRelaunchesCleared(r.appToken); @@ -4061,7 +4113,6 @@ class ActivityStack extends ConfigurationContai } private void removeActivityFromHistoryLocked(ActivityRecord r, String reason) { - mStackSupervisor.removeChildActivityContainers(r); finishActivityResultsLocked(r, Activity.RESULT_CANCELED, null); r.makeFinishingLocked(); if (DEBUG_ADD_REMOVE) Slog.i(TAG_ADD_REMOVE, @@ -4350,56 +4401,6 @@ class ActivityStack extends ConfigurationContai } } - void releaseBackgroundResources(ActivityRecord r) { - if (hasVisibleBehindActivity() && - !mHandler.hasMessages(RELEASE_BACKGROUND_RESOURCES_TIMEOUT_MSG)) { - if (r == topRunningActivityLocked() - && shouldBeVisible(null) == STACK_VISIBLE) { - // Don't release the top activity if it has requested to run behind the next - // activity and the stack is currently visible. - return; - } - if (DEBUG_STATES) Slog.d(TAG_STATES, "releaseBackgroundResources activtyDisplay=" + - mActivityContainer.mActivityDisplay + " visibleBehind=" + r + " app=" + r.app + - " thread=" + r.app.thread); - if (r != null && r.app != null && r.app.thread != null) { - try { - r.app.thread.scheduleCancelVisibleBehind(r.appToken); - } catch (RemoteException e) { - } - mHandler.sendEmptyMessageDelayed(RELEASE_BACKGROUND_RESOURCES_TIMEOUT_MSG, 500); - } else { - Slog.e(TAG, "releaseBackgroundResources: activity " + r + " no longer running"); - backgroundResourcesReleased(); - } - } - } - - final void backgroundResourcesReleased() { - mHandler.removeMessages(RELEASE_BACKGROUND_RESOURCES_TIMEOUT_MSG); - final ActivityRecord r = getVisibleBehindActivity(); - if (r != null) { - mStackSupervisor.mStoppingActivities.add(r); - setVisibleBehindActivity(null); - mStackSupervisor.scheduleIdleTimeoutLocked(null); - } - mStackSupervisor.resumeFocusedStackTopActivityLocked(); - } - - boolean hasVisibleBehindActivity() { - return isAttached() && mActivityContainer.mActivityDisplay.hasVisibleBehindActivity(); - } - - void setVisibleBehindActivity(ActivityRecord r) { - if (isAttached()) { - mActivityContainer.mActivityDisplay.setVisibleBehindActivity(r); - } - } - - ActivityRecord getVisibleBehindActivity() { - return isAttached() ? mActivityContainer.mActivityDisplay.mVisibleBehindActivity : null; - } - private void removeHistoryRecordsForAppLocked(ArrayList list, ProcessRecord app, String listName) { int i = list.size(); @@ -4602,9 +4603,9 @@ class ActivityStack extends ConfigurationContai // If a new task is moved to the front, then mark the existing top activity as supporting // picture-in-picture while paused only if the task would not be considered an oerlay on top // of the current activity (eg. not fullscreen, or the assistant) - if (topActivity != null && topActivity.getStackId() != PINNED_STACK_ID - && tr.getStackId() != ASSISTANT_STACK_ID && tr.containsOnlyFullscreenActivities()) { - topActivity.supportsPictureInPictureWhilePausing = true; + if (canEnterPipOnTaskSwitch(topActivity, tr, null /* toFrontActivity */, + options)) { + topActivity.supportsEnterPipOnTaskSwitch = true; } mStackSupervisor.resumeFocusedStackTopActivityLocked(); @@ -4663,28 +4664,6 @@ class ActivityStack extends ConfigurationContai if (DEBUG_TRANSITION) Slog.v(TAG_TRANSITION, "Prepare to back transition: task=" + taskId); - if (mStackId == HOME_STACK_ID && topTask().isHomeTask()) { - // For the case where we are moving the home task back and there is an activity visible - // behind it on the fullscreen or assistant stack, we want to move the focus to the - // visible behind activity to maintain order with what the user is seeing. - ActivityRecord visibleBehind = null; - final ActivityStack fullscreenStack = - mStackSupervisor.getStack(FULLSCREEN_WORKSPACE_STACK_ID); - final ActivityStack assistantStack = - mStackSupervisor.getStack(ASSISTANT_STACK_ID); - if (fullscreenStack != null && fullscreenStack.hasVisibleBehindActivity()) { - visibleBehind = fullscreenStack.getVisibleBehindActivity(); - } else if (assistantStack != null && assistantStack.hasVisibleBehindActivity()) { - visibleBehind = assistantStack.getVisibleBehindActivity(); - } - if (visibleBehind != null) { - mStackSupervisor.moveFocusableActivityStackToFrontLocked(visibleBehind, - "moveTaskToBack"); - mStackSupervisor.resumeFocusedStackTopActivityLocked(); - return true; - } - } - boolean prevIsHome = false; // If true, we should resume the home activity next if the task we are moving to the @@ -4748,7 +4727,7 @@ class ActivityStack extends ConfigurationContai * focus may be on another display. */ private ActivityStack getTopStackOnDisplay() { - final ArrayList stacks = mActivityContainer.mActivityDisplay.mStacks; + final ArrayList stacks = getDisplay().mStacks; return stacks.isEmpty() ? null : stacks.get(stacks.size() - 1); } @@ -5225,7 +5204,7 @@ class ActivityStack extends ConfigurationContai mStacks.add(0, this); } if (!isHomeOrRecentsStack()) { - mActivityContainer.onTaskListEmptyLocked(); + remove(); } } @@ -5244,8 +5223,8 @@ class ActivityStack extends ConfigurationContai voiceInteractor, type); // add the task to stack first, mTaskPositioner might need the stack association addTask(task, toTop, "createTaskRecord"); - final boolean isLockscreenShown = - mService.mStackSupervisor.mKeyguardController.isKeyguardShowing(); + final boolean isLockscreenShown = mService.mStackSupervisor.mKeyguardController + .isKeyguardShowing(mDisplayId != INVALID_DISPLAY ? mDisplayId : DEFAULT_DISPLAY); if (!layoutTaskInStack(task, info.windowLayout) && mBounds != null && task.isResizeable() && !isLockscreenShown) { task.updateOverrideConfiguration(mBounds); @@ -5397,4 +5376,13 @@ class ActivityStack extends ConfigurationContai mNoAnimActivities.clear(); ActivityOptions.abort(options); } + + boolean shouldSleepActivities() { + final ActivityStackSupervisor.ActivityDisplay display = getDisplay(); + return display != null ? display.isSleeping() : mService.isSleepingLocked(); + } + + boolean shouldSleepOrShutDownActivities() { + return shouldSleepActivities() || mService.isShuttingDownLocked(); + } } diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index ce86624dfe4e813a01c53e9e6ba49bfe116c3b22..b2dc3e6a8b69833ccb6ad87e4e1f3bb7236d3d6b 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -16,8 +16,8 @@ package com.android.server.am; +import static android.Manifest.permission.ACTIVITY_EMBEDDING; import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW; -import static android.Manifest.permission.MANAGE_ACTIVITY_STACKS; import static android.Manifest.permission.START_ANY_ACTIVITY; import static android.Manifest.permission.START_TASKS_FROM_RECENTS; import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; @@ -36,10 +36,10 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.app.ActivityManager.StackId.RECENTS_STACK_ID; import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SECONDARY_DISPLAY; import static android.app.ITaskStackListener.FORCED_RESIZEABLE_REASON_SPLIT_SCREEN; -import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; -import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; +import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Process.SYSTEM_UID; +import static android.os.PowerManager.PARTIAL_WAKE_LOCK; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.FLAG_PRIVATE; @@ -49,7 +49,6 @@ import static android.view.Display.TYPE_VIRTUAL; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_PICTURE_IN_PICTURE_EXPANDED_TO_FULLSCREEN; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONTAINERS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOCUS; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_IDLE; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_LOCKTASK; @@ -60,8 +59,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_STACK; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_STATES; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_TASKS; -import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_VISIBLE_BEHIND; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_CONTAINERS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_FOCUS; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_IDLE; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_LOCKTASK; @@ -72,7 +69,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STACK; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH; import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_TASKS; -import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_VISIBLE_BEHIND; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.ActivityManagerService.ANIMATE; @@ -110,9 +106,9 @@ import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityManager.StackId; import android.app.ActivityManager.StackInfo; +import android.app.ActivityManagerInternal.SleepToken; import android.app.ActivityOptions; import android.app.AppOpsManager; -import android.app.IActivityContainerCallback; import android.app.ProfilerInfo; import android.app.ResultInfo; import android.app.StatusBarManager; @@ -120,7 +116,6 @@ import android.app.WaitResult; import android.app.admin.IDevicePolicyManager; import android.content.ComponentName; import android.content.Context; -import android.content.IIntentSender; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; @@ -132,10 +127,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; -import android.hardware.display.DisplayManagerGlobal; import android.hardware.display.DisplayManagerInternal; -import android.hardware.display.VirtualDisplay; -import android.hardware.input.InputManager; import android.hardware.input.InputManagerInternal; import android.os.Binder; import android.os.Bundle; @@ -144,14 +136,12 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; -import android.os.ParcelFileDescriptor; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.Trace; -import android.os.TransactionTooLargeException; import android.os.UserHandle; import android.os.UserManager; import android.os.WorkSource; @@ -167,10 +157,10 @@ import android.util.MergedConfiguration; import android.util.Slog; import android.util.SparseArray; import android.util.SparseIntArray; +import android.util.TimeUtils; import android.view.Display; -import android.view.InputEvent; -import android.view.Surface; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.ReferrerIntent; import com.android.internal.logging.MetricsLogger; import com.android.internal.os.TransferPipe; @@ -189,12 +179,12 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Set; public class ActivityStackSupervisor extends ConfigurationContainer implements DisplayListener { private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityStackSupervisor" : TAG_AM; - private static final String TAG_CONTAINERS = TAG + POSTFIX_CONTAINERS; private static final String TAG_FOCUS = TAG + POSTFIX_FOCUS; private static final String TAG_IDLE = TAG + POSTFIX_IDLE; private static final String TAG_LOCKTASK = TAG + POSTFIX_LOCKTASK; @@ -205,7 +195,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D private static final String TAG_STATES = TAG + POSTFIX_STATES; private static final String TAG_SWITCH = TAG + POSTFIX_SWITCH; static final String TAG_TASKS = TAG + POSTFIX_TASKS; - private static final String TAG_VISIBLE_BEHIND = TAG + POSTFIX_VISIBLE_BEHIND; /** How long we wait until giving up on the last activity telling us it is idle. */ static final int IDLE_TIMEOUT = 10 * 1000; @@ -224,10 +213,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D static final int HANDLE_DISPLAY_ADDED = FIRST_SUPERVISOR_STACK_MSG + 5; static final int HANDLE_DISPLAY_CHANGED = FIRST_SUPERVISOR_STACK_MSG + 6; static final int HANDLE_DISPLAY_REMOVED = FIRST_SUPERVISOR_STACK_MSG + 7; - static final int CONTAINER_CALLBACK_VISIBILITY = FIRST_SUPERVISOR_STACK_MSG + 8; static final int LOCK_TASK_START_MSG = FIRST_SUPERVISOR_STACK_MSG + 9; static final int LOCK_TASK_END_MSG = FIRST_SUPERVISOR_STACK_MSG + 10; - static final int CONTAINER_CALLBACK_TASK_LIST_EMPTY = FIRST_SUPERVISOR_STACK_MSG + 11; static final int LAUNCH_TASK_BEHIND_COMPLETE = FIRST_SUPERVISOR_STACK_MSG + 12; static final int SHOW_LOCK_TASK_ESCAPE_MESSAGE_MSG = FIRST_SUPERVISOR_STACK_MSG + 13; static final int REPORT_MULTI_WINDOW_MODE_CHANGED_MSG = FIRST_SUPERVISOR_STACK_MSG + 14; @@ -391,9 +378,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D * is being brought in front of us. */ boolean mUserLeaving = false; - /** Set when we have taken too long waiting to go to sleep. */ - boolean mSleepTimeout = false; - /** * We don't want to allow the device to go to sleep while in the process * of launching an activity. This is primarily to allow alarm intent @@ -409,12 +393,19 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D */ PowerManager.WakeLock mGoingToSleep; + /** + * A list of tokens that cause the top activity to be put to sleep. + * They are used by components that may hide and block interaction with underlying + * activities. + */ + final ArrayList mSleepTokens = new ArrayList(); + /** Stack id of the front stack when user switched, indexed by userId. */ SparseIntArray mUserStackInFront = new SparseIntArray(2); // TODO: Add listener for removal of references. /** Mapping from (ActivityStack/TaskStack).mStackId to their current state */ - SparseArray mActivityContainers = new SparseArray<>(); + SparseArray mStacks = new SparseArray<>(); // TODO: There should be an ActivityDisplayController coordinating am/wm interaction. /** Mapping from displayId to display current state */ @@ -493,9 +484,27 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } /** Check if placing task or activity on specified display is allowed. */ - boolean canPlaceEntityOnDisplay(int displayId, boolean resizeable) { - return displayId == DEFAULT_DISPLAY || (mService.mSupportsMultiDisplay - && (resizeable || displayConfigMatchesGlobal(displayId))); + boolean canPlaceEntityOnDisplay(int displayId, boolean resizeable, int callingPid, + int callingUid, ActivityInfo activityInfo) { + if (displayId == DEFAULT_DISPLAY) { + // No restrictions for the default display. + return true; + } + if (!mService.mSupportsMultiDisplay) { + // Can't launch on secondary displays if feature is not supported. + return false; + } + if (!resizeable && !displayConfigMatchesGlobal(displayId)) { + // Can't apply wrong configuration to non-resizeable activities. + return false; + } + if (!isCallerAllowedToLaunchOnDisplay(callingPid, callingUid, displayId, activityInfo)) { + // Can't place activities to a display that has restricted launch rules. + // In this case the request should be made by explicitly adding target display id and + // by caller with corresponding permissions. See #isCallerAllowedToLaunchOnDisplay(). + return false; + } + return true; } /** @@ -559,6 +568,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D final KeyguardController mKeyguardController; + private PowerManager mPowerManager; + private int mDeferResumeCount; + /** * Description of a request to start a new activity, which has been held * due to app switches being disabled. @@ -607,9 +619,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D * initialized. So we initialize our wakelocks afterwards. */ void initPowerManagement() { - PowerManager pm = (PowerManager)mService.mContext.getSystemService(Context.POWER_SERVICE); - mGoingToSleep = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ActivityManager-Sleep"); - mLaunchingActivity = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "*launch*"); + mPowerManager = (PowerManager)mService.mContext.getSystemService(Context.POWER_SERVICE); + mGoingToSleep = mPowerManager + .newWakeLock(PARTIAL_WAKE_LOCK, "ActivityManager-Sleep"); + mLaunchingActivity = mPowerManager.newWakeLock(PARTIAL_WAKE_LOCK, "*launch*"); mLaunchingActivity.setReferenceCounted(false); } @@ -678,31 +691,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } boolean isFocusedStack(ActivityStack stack) { - if (stack == null) { - return false; - } - - final ActivityRecord parent = stack.mActivityContainer.mParentActivity; - if (parent != null) { - stack = parent.getStack(); - } - return stack == mFocusedStack; + return stack != null && stack == mFocusedStack; } /** The top most stack on its display. */ boolean isFrontStackOnDisplay(ActivityStack stack) { - return isFrontOfStackList(stack, stack.mActivityContainer.mActivityDisplay.mStacks); + return isFrontOfStackList(stack, stack.getDisplay().mStacks); } private boolean isFrontOfStackList(ActivityStack stack, List stackList) { - if (stack == null) { - return false; - } - - final ActivityRecord parent = stack.mActivityContainer.mParentActivity; - if (parent != null) { - stack = parent.getStack(); - } return stack == stackList.get((stackList.size() - 1)); } @@ -1099,21 +1096,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return pausing; } - void pauseChildStacks(ActivityRecord parent, boolean userLeaving, boolean uiSleeping, - ActivityRecord resuming, boolean dontWait) { - // TODO: Put all stacks in supervisor and iterate through them instead. - for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { - ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; - for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - final ActivityStack stack = stacks.get(stackNdx); - if (stack.mResumedActivity != null && - stack.mActivityContainer.mParentActivity == parent) { - stack.startPausingLocked(userLeaving, uiSleeping, resuming, dontWait); - } - } - } - } - void cancelInitializingActivities() { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; @@ -1341,184 +1323,188 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return false; } - r.startFreezingScreenLocked(app, 0); - if (r.getStack().checkKeyguardVisibility(r, true /* shouldBeVisible */, true /* isTop */)) { - // We only set the visibility to true if the activity is allowed to be visible based on - // keyguard state. This avoids setting this into motion in window manager that is later - // cancelled due to later calls to ensure visible activities that set visibility back to - // false. - r.setVisibility(true); - } + final TaskRecord task = r.getTask(); + final ActivityStack stack = task.getStack(); - // schedule launch ticks to collect information about slow apps. - r.startLaunchTickingLocked(); + beginDeferResume(); - // Have the window manager re-evaluate the orientation of the screen based on the new - // activity order. Note that as a result of this, it can call back into the activity - // manager with a new orientation. We don't care about that, because the activity is not - // currently running so we are just restarting it anyway. - if (checkConfig) { - final int displayId = r.getDisplayId(); - final Configuration config = mWindowManager.updateOrientationFromAppTokens( - getDisplayOverrideConfiguration(displayId), - r.mayFreezeScreenLocked(app) ? r.appToken : null, displayId); - // Deferring resume here because we're going to launch new activity shortly. - // We don't want to perform a redundant launch of the same record while ensuring - // configurations and trying to resume top activity of focused stack. - mService.updateDisplayOverrideConfigurationLocked(config, r, true /* deferResume */, - displayId); - } + try { + r.startFreezingScreenLocked(app, 0); - if (mKeyguardController.isKeyguardLocked()) { - r.notifyUnknownVisibilityLaunched(); - } - final int applicationInfoUid = - (r.info.applicationInfo != null) ? r.info.applicationInfo.uid : -1; - if ((r.userId != app.userId) || (r.appInfo.uid != applicationInfoUid)) { - Slog.wtf(TAG, - "User ID for activity changing for " + r - + " appInfo.uid=" + r.appInfo.uid - + " info.ai.uid=" + applicationInfoUid - + " old=" + r.app + " new=" + app); - } + // schedule launch ticks to collect information about slow apps. + r.startLaunchTickingLocked(); - r.app = app; - app.waitingToKill = null; - r.launchCount++; - r.lastLaunchTime = SystemClock.uptimeMillis(); + r.app = app; - if (DEBUG_ALL) Slog.v(TAG, "Launching: " + r); + if (mKeyguardController.isKeyguardLocked()) { + r.notifyUnknownVisibilityLaunched(); + } - int idx = app.activities.indexOf(r); - if (idx < 0) { - app.activities.add(r); - } - mService.updateLruProcessLocked(app, true, null); - mService.updateOomAdjLocked(); + // Have the window manager re-evaluate the orientation of the screen based on the new + // activity order. Note that as a result of this, it can call back into the activity + // manager with a new orientation. We don't care about that, because the activity is + // not currently running so we are just restarting it anyway. + if (checkConfig) { + final int displayId = r.getDisplayId(); + final Configuration config = mWindowManager.updateOrientationFromAppTokens( + getDisplayOverrideConfiguration(displayId), + r.mayFreezeScreenLocked(app) ? r.appToken : null, displayId); + // Deferring resume here because we're going to launch new activity shortly. + // We don't want to perform a redundant launch of the same record while ensuring + // configurations and trying to resume top activity of focused stack. + mService.updateDisplayOverrideConfigurationLocked(config, r, true /* deferResume */, + displayId); + } - final TaskRecord task = r.getTask(); - if (task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE || - task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE_PRIV) { - setLockTaskModeLocked(task, LOCK_TASK_MODE_LOCKED, "mLockTaskAuth==LAUNCHABLE", false); - } + if (r.getStack().checkKeyguardVisibility(r, true /* shouldBeVisible */, + true /* isTop */)) { + // We only set the visibility to true if the activity is allowed to be visible + // based on + // keyguard state. This avoids setting this into motion in window manager that is + // later cancelled due to later calls to ensure visible activities that set + // visibility back to false. + r.setVisibility(true); + } - final ActivityStack stack = task.getStack(); - try { - if (app.thread == null) { - throw new RemoteException(); - } - List results = null; - List newIntents = null; - if (andResume) { - // We don't need to deliver new intents and/or set results if activity is going - // to pause immediately after launch. - results = r.results; - newIntents = r.newIntents; - } - if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, - "Launching: " + r + " icicle=" + r.icicle + " with results=" + results - + " newIntents=" + newIntents + " andResume=" + andResume); - EventLog.writeEvent(EventLogTags.AM_RESTART_ACTIVITY, r.userId, - System.identityHashCode(r), task.taskId, r.shortComponentName); - if (r.isHomeActivity()) { - // Home process is the root process of the task. - mService.mHomeProcess = task.mActivities.get(0).app; - } - mService.notifyPackageUse(r.intent.getComponent().getPackageName(), - PackageManager.NOTIFY_PACKAGE_USE_ACTIVITY); - r.sleeping = false; - r.forceNewConfig = false; - mService.showUnsupportedZoomDialogIfNeededLocked(r); - mService.showAskCompatModeDialogLocked(r); - r.compat = mService.compatibilityInfoForPackageLocked(r.info.applicationInfo); - ProfilerInfo profilerInfo = null; - if (mService.mProfileApp != null && mService.mProfileApp.equals(app.processName)) { - if (mService.mProfileProc == null || mService.mProfileProc == app) { - mService.mProfileProc = app; - final String profileFile = mService.mProfileFile; - if (profileFile != null) { - ParcelFileDescriptor profileFd = mService.mProfileFd; - if (profileFd != null) { - try { - profileFd = profileFd.dup(); - } catch (IOException e) { - if (profileFd != null) { - try { - profileFd.close(); - } catch (IOException o) { - } - profileFd = null; + final int applicationInfoUid = + (r.info.applicationInfo != null) ? r.info.applicationInfo.uid : -1; + if ((r.userId != app.userId) || (r.appInfo.uid != applicationInfoUid)) { + Slog.wtf(TAG, + "User ID for activity changing for " + r + + " appInfo.uid=" + r.appInfo.uid + + " info.ai.uid=" + applicationInfoUid + + " old=" + r.app + " new=" + app); + } + + app.waitingToKill = null; + r.launchCount++; + r.lastLaunchTime = SystemClock.uptimeMillis(); + + if (DEBUG_ALL) Slog.v(TAG, "Launching: " + r); + + int idx = app.activities.indexOf(r); + if (idx < 0) { + app.activities.add(r); + } + mService.updateLruProcessLocked(app, true, null); + mService.updateOomAdjLocked(); + + if (task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE || + task.mLockTaskAuth == LOCK_TASK_AUTH_LAUNCHABLE_PRIV) { + setLockTaskModeLocked(task, LOCK_TASK_MODE_LOCKED, "mLockTaskAuth==LAUNCHABLE", + false); + } + + try { + if (app.thread == null) { + throw new RemoteException(); + } + List results = null; + List newIntents = null; + if (andResume) { + // We don't need to deliver new intents and/or set results if activity is going + // to pause immediately after launch. + results = r.results; + newIntents = r.newIntents; + } + if (DEBUG_SWITCH) Slog.v(TAG_SWITCH, + "Launching: " + r + " icicle=" + r.icicle + " with results=" + results + + " newIntents=" + newIntents + " andResume=" + andResume); + EventLog.writeEvent(EventLogTags.AM_RESTART_ACTIVITY, r.userId, + System.identityHashCode(r), task.taskId, r.shortComponentName); + if (r.isHomeActivity()) { + // Home process is the root process of the task. + mService.mHomeProcess = task.mActivities.get(0).app; + } + mService.notifyPackageUse(r.intent.getComponent().getPackageName(), + PackageManager.NOTIFY_PACKAGE_USE_ACTIVITY); + r.sleeping = false; + r.forceNewConfig = false; + mService.showUnsupportedZoomDialogIfNeededLocked(r); + mService.showAskCompatModeDialogLocked(r); + r.compat = mService.compatibilityInfoForPackageLocked(r.info.applicationInfo); + ProfilerInfo profilerInfo = null; + if (mService.mProfileApp != null && mService.mProfileApp.equals(app.processName)) { + if (mService.mProfileProc == null || mService.mProfileProc == app) { + mService.mProfileProc = app; + ProfilerInfo profilerInfoSvc = mService.mProfilerInfo; + if (profilerInfoSvc != null && profilerInfoSvc.profileFile != null) { + if (profilerInfoSvc.profileFd != null) { + try { + profilerInfoSvc.profileFd = profilerInfoSvc.profileFd.dup(); + } catch (IOException e) { + profilerInfoSvc.closeFd(); } } - } - profilerInfo = new ProfilerInfo(profileFile, profileFd, - mService.mSamplingInterval, mService.mAutoStopProfiler, - mService.mStreamingOutput); + profilerInfo = new ProfilerInfo(profilerInfoSvc); + } } } - } - app.hasShownUi = true; - app.pendingUiClean = true; - app.forceProcessStateUpTo(mService.mTopProcessState); - // Because we could be starting an Activity in the system process this may not go across - // a Binder interface which would create a new Configuration. Consequently we have to - // always create a new Configuration here. - - final MergedConfiguration mergedConfiguration = new MergedConfiguration( - mService.getGlobalConfiguration(), r.getMergedOverrideConfiguration()); - r.setLastReportedConfiguration(mergedConfiguration); - - logIfTransactionTooLarge(r.intent, r.icicle); - app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken, - System.identityHashCode(r), r.info, - // TODO: Have this take the merged configuration instead of separate global and - // override configs. - mergedConfiguration.getGlobalConfiguration(), - mergedConfiguration.getOverrideConfiguration(), r.compat, - r.launchedFromPackage, task.voiceInteractor, app.repProcState, r.icicle, - r.persistentState, results, newIntents, !andResume, - mService.isNextTransitionForward(), profilerInfo); - - if ((app.info.privateFlags&ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0) { - // This may be a heavy-weight process! Note that the package - // manager will ensure that only activity can run in the main - // process of the .apk, which is the only thing that will be - // considered heavy-weight. - if (app.processName.equals(app.info.packageName)) { - if (mService.mHeavyWeightProcess != null - && mService.mHeavyWeightProcess != app) { - Slog.w(TAG, "Starting new heavy weight process " + app - + " when already running " - + mService.mHeavyWeightProcess); + app.hasShownUi = true; + app.pendingUiClean = true; + app.forceProcessStateUpTo(mService.mTopProcessState); + // Because we could be starting an Activity in the system process this may not go + // across a Binder interface which would create a new Configuration. Consequently + // we have to always create a new Configuration here. + + final MergedConfiguration mergedConfiguration = new MergedConfiguration( + mService.getGlobalConfiguration(), r.getMergedOverrideConfiguration()); + r.setLastReportedConfiguration(mergedConfiguration); + + logIfTransactionTooLarge(r.intent, r.icicle); + app.thread.scheduleLaunchActivity(new Intent(r.intent), r.appToken, + System.identityHashCode(r), r.info, + // TODO: Have this take the merged configuration instead of separate global + // and override configs. + mergedConfiguration.getGlobalConfiguration(), + mergedConfiguration.getOverrideConfiguration(), r.compat, + r.launchedFromPackage, task.voiceInteractor, app.repProcState, r.icicle, + r.persistentState, results, newIntents, !andResume, + mService.isNextTransitionForward(), profilerInfo); + + if ((app.info.privateFlags & ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0) { + // This may be a heavy-weight process! Note that the package + // manager will ensure that only activity can run in the main + // process of the .apk, which is the only thing that will be + // considered heavy-weight. + if (app.processName.equals(app.info.packageName)) { + if (mService.mHeavyWeightProcess != null + && mService.mHeavyWeightProcess != app) { + Slog.w(TAG, "Starting new heavy weight process " + app + + " when already running " + + mService.mHeavyWeightProcess); + } + mService.mHeavyWeightProcess = app; + Message msg = mService.mHandler.obtainMessage( + ActivityManagerService.POST_HEAVY_NOTIFICATION_MSG); + msg.obj = r; + mService.mHandler.sendMessage(msg); } - mService.mHeavyWeightProcess = app; - Message msg = mService.mHandler.obtainMessage( - ActivityManagerService.POST_HEAVY_NOTIFICATION_MSG); - msg.obj = r; - mService.mHandler.sendMessage(msg); } - } - } catch (RemoteException e) { - if (r.launchFailed) { - // This is the second time we failed -- finish activity - // and give up. - Slog.e(TAG, "Second failure launching " - + r.intent.getComponent().flattenToShortString() - + ", giving up", e); - mService.appDiedLocked(app); - stack.requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null, - "2nd-crash", false); - return false; - } + } catch (RemoteException e) { + if (r.launchFailed) { + // This is the second time we failed -- finish activity + // and give up. + Slog.e(TAG, "Second failure launching " + + r.intent.getComponent().flattenToShortString() + + ", giving up", e); + mService.appDiedLocked(app); + stack.requestFinishActivityLocked(r.appToken, Activity.RESULT_CANCELED, null, + "2nd-crash", false); + return false; + } - // This is the first time we failed -- restart process and - // retry. - r.launchFailed = true; - app.activities.remove(r); - throw e; + // This is the first time we failed -- restart process and + // retry. + r.launchFailed = true; + app.activities.remove(r); + throw e; + } + } finally { + endDeferResume(); } r.launchFailed = false; @@ -1526,7 +1512,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D Slog.w(TAG, "Activity " + r + " being launched, but already in LRU list"); } - if (andResume) { + if (andResume && readyToResume()) { // As part of the process of launching, ActivityThread also performs // a resume. stack.minimalResumeActivityLocked(r); @@ -1666,7 +1652,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (options.getLaunchTaskId() != INVALID_STACK_ID) { final int startInTaskPerm = mService.checkPermission(START_TASKS_FROM_RECENTS, callingPid, callingUid); - if (startInTaskPerm != PERMISSION_GRANTED) { + if (startInTaskPerm == PERMISSION_DENIED) { final String msg = "Permission Denial: starting " + intent.toString() + " from " + callerApp + " (pid=" + callingPid + ", uid=" + callingUid + ") with launchTaskId=" @@ -1678,8 +1664,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Check if someone tries to launch an activity on a private display with a different // owner. final int launchDisplayId = options.getLaunchDisplayId(); - if (launchDisplayId != INVALID_DISPLAY - && !isCallerAllowedToLaunchOnDisplay(callingPid, callingUid, launchDisplayId)) { + if (launchDisplayId != INVALID_DISPLAY && !isCallerAllowedToLaunchOnDisplay(callingPid, + callingUid, launchDisplayId, aInfo)) { final String msg = "Permission Denial: starting " + intent.toString() + " from " + callerApp + " (pid=" + callingPid + ", uid=" + callingUid + ") with launchDisplayId=" @@ -1693,17 +1679,24 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } /** Check if caller is allowed to launch activities on specified display. */ - boolean isCallerAllowedToLaunchOnDisplay(int callingPid, int callingUid, int launchDisplayId) { + boolean isCallerAllowedToLaunchOnDisplay(int callingPid, int callingUid, int launchDisplayId, + ActivityInfo aInfo) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check: displayId=" + launchDisplayId + " callingPid=" + callingPid + " callingUid=" + callingUid); + if (callingPid == -1 && callingUid == -1) { + if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check: no caller info, skip check"); + return true; + } + final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(launchDisplayId); if (activityDisplay == null) { Slog.w(TAG, "Launch on display check: display not found"); return false; } - // Check if the caller can manage activity stacks. + // Check if the caller has enough privileges to embed activities and launch to private + // displays. final int startAnyPerm = mService.checkPermission(INTERNAL_SYSTEM_WINDOW, callingPid, callingUid); if (startAnyPerm == PERMISSION_GRANTED) { @@ -1712,13 +1705,26 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return true; } - if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL - && activityDisplay.mDisplay.getOwnerUid() != SYSTEM_UID) { + // Check if caller is already present on display + final boolean uidPresentOnDisplay = activityDisplay.isUidPresent(callingUid); + + final int displayOwnerUid = activityDisplay.mDisplay.getOwnerUid(); + if (activityDisplay.mDisplay.getType() == TYPE_VIRTUAL && displayOwnerUid != SYSTEM_UID + && displayOwnerUid != aInfo.applicationInfo.uid) { // Limit launching on virtual displays, because their contents can be read from Surface // by apps that created them. - if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" - + " disallow launch on virtual display for not-embedded activity"); - return false; + if ((aInfo.flags & ActivityInfo.FLAG_ALLOW_EMBEDDED) == 0) { + if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + + " disallow launch on virtual display for not-embedded activity."); + return false; + } + // Check if the caller is allowed to embed activities from other apps. + if (mService.checkPermission(ACTIVITY_EMBEDDING, callingPid, callingUid) + == PERMISSION_DENIED && !uidPresentOnDisplay) { + if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + + " disallow activity embedding without permission."); + return false; + } } if (!activityDisplay.isPrivate()) { @@ -1729,14 +1735,13 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } // Check if the caller is the owner of the display. - if (activityDisplay.mDisplay.getOwnerUid() == callingUid) { + if (displayOwnerUid == callingUid) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + " allow launch for owner of the display"); return true; } - // Check if caller is present on display - if (activityDisplay.isUidPresent(callingUid)) { + if (uidPresentOnDisplay) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:" + " allow launch for caller present on the display"); return true; @@ -1774,7 +1779,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D String callingPackage, int callingPid, int callingUid, boolean ignoreTargetSecurity) { if (!ignoreTargetSecurity && mService.checkComponentPermission(activityInfo.permission, callingPid, callingUid, activityInfo.applicationInfo.uid, activityInfo.exported) - == PackageManager.PERMISSION_DENIED) { + == PERMISSION_DENIED) { return ACTIVITY_RESTRICTION_PERMISSION; } @@ -1821,8 +1826,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return ACTIVITY_RESTRICTION_NONE; } - if (mService.checkPermission(permission, callingPid, callingUid) == - PackageManager.PERMISSION_DENIED) { + if (mService.checkPermission(permission, callingPid, callingUid) == PERMISSION_DENIED) { return ACTIVITY_RESTRICTION_PERMISSION; } @@ -2080,9 +2084,15 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D boolean resumeFocusedStackTopActivityLocked( ActivityStack targetStack, ActivityRecord target, ActivityOptions targetOptions) { + + if (!readyToResume()) { + return false; + } + if (targetStack != null && isFocusedStack(targetStack)) { return targetStack.resumeTopActivityUncheckedLocked(target, targetOptions); } + final ActivityRecord r = mFocusedStack.topRunningActivityLocked(); if (r == null || r.state != RESUMED) { mFocusedStack.resumeTopActivityUncheckedLocked(null, null); @@ -2090,6 +2100,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Kick off any lingering app transitions form the MoveTaskToFront operation. mFocusedStack.executeAppTransition(targetOptions); } + return false; } @@ -2202,9 +2213,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D protected T getStack(int stackId, boolean createStaticStackIfNeeded, boolean createOnTop) { - final ActivityContainer activityContainer = mActivityContainers.get(stackId); - if (activityContainer != null) { - return (T) activityContainer.mStack; + final ActivityStack stack = mStacks.get(stackId); + if (stack != null) { + return (T) stack; } if (!createStaticStackIfNeeded || !StackId.isStaticStack(stackId)) { return null; @@ -2347,33 +2358,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D (StackId.isResizeableByDockedStack(stackId) && getStack(DOCKED_STACK_ID) != null); } - ActivityContainer createVirtualActivityContainer(ActivityRecord parentActivity, - IActivityContainerCallback callback) { - ActivityContainer activityContainer = - new VirtualActivityContainer(parentActivity, callback); - mActivityContainers.put(activityContainer.mStackId, activityContainer); - if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, - "createActivityContainer: " + activityContainer); - parentActivity.mChildContainers.add(activityContainer); - return activityContainer; - } - - void removeChildActivityContainers(ActivityRecord parentActivity) { - final ArrayList childStacks = parentActivity.mChildContainers; - for (int containerNdx = childStacks.size() - 1; containerNdx >= 0; --containerNdx) { - ActivityContainer container = childStacks.remove(containerNdx); - if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, "removeChildActivityContainers: removing " - + container); - container.release(); - } - } - - void deleteActivityContainerRecord(int stackId) { - if (DEBUG_CONTAINERS) Slog.d(TAG_CONTAINERS, - "deleteActivityContainerRecord: callers=" + Debug.getCallers(4)); - mActivityContainers.remove(stackId); - } - void resizeStackLocked(int stackId, Rect bounds, Rect tempTaskBounds, Rect tempTaskInsetBounds, boolean preserveWindows, boolean allowResizeInDockedMode, boolean deferResume) { if (stackId == DOCKED_STACK_ID) { @@ -2638,12 +2622,18 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (activityDisplay == null) { return null; } + return createStack(stackId, activityDisplay, onTop); - final ActivityContainer activityContainer = - new ActivityContainer(stackId, activityDisplay, onTop); - return activityContainer.mStack; } + ActivityStack createStack(int stackId, ActivityDisplay display, boolean onTop) { + switch (stackId) { + case PINNED_STACK_ID: + return new PinnedActivityStack(display, stackId, this, mRecentTasks, onTop); + default: + return new ActivityStack(display, stackId, this, mRecentTasks, onTop); + } + } void removeStackInSurfaceTransaction(int stackId) { final ActivityStack stack = getStack(stackId); @@ -2871,23 +2861,24 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D throw new IllegalArgumentException("moveStackToDisplayLocked: Unknown displayId=" + displayId); } - final ActivityContainer activityContainer = mActivityContainers.get(stackId); - if (activityContainer != null) { - if (activityContainer.isAttachedLocked()) { - if (activityContainer.getDisplayId() == displayId) { - throw new IllegalArgumentException("Trying to move stackId=" + stackId - + " to its current displayId=" + displayId); - } - - activityContainer.moveToDisplayLocked(activityDisplay, onTop); - } else { - throw new IllegalStateException("moveStackToDisplayLocked: Stack with stackId=" - + stackId + " is not attached to any display."); - } - } else { + final ActivityStack stack = mStacks.get(stackId); + if (stack == null) { throw new IllegalArgumentException("moveStackToDisplayLocked: Unknown stackId=" + stackId); } + + final ActivityDisplay currentDisplay = stack.getDisplay(); + if (currentDisplay == null) { + throw new IllegalStateException("moveStackToDisplayLocked: Stack with stack=" + stack + + " is not attached to any display."); + } + + if (currentDisplay.mDisplayId == displayId) { + throw new IllegalArgumentException("Trying to move stack=" + stack + + " to its current displayId=" + displayId); + } + + stack.reparent(activityDisplay, onTop); // TODO(multi-display): resize stacks properly if moved from split-screen. } @@ -2915,7 +2906,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Ensure that we're not moving a task to a dynamic stack if device doesn't support // multi-display. // TODO(multi-display): Support non-dynamic stacks on secondary displays. - // TODO: Check ActivityView after fixing b/35349678. if (StackId.isDynamicStack(stackId) && !mService.mSupportsMultiDisplay) { throw new IllegalArgumentException("Device doesn't support multi-display, can not" + " reparent task=" + task + " to stackId=" + stackId); @@ -2989,13 +2979,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D try { final TaskRecord task = r.getTask(); - - if (r == task.getStack().getVisibleBehindActivity()) { - // An activity can't be pinned and visible behind at the same time. Go ahead and - // release it from been visible behind before pinning. - requestVisibleBehindLocked(r, false); - } - // Resize the pinned stack to match the current size of the task the activity we are // going to be moving is currently contained in. We do this to have the right starting // animation bounds for the pinned stack to the desired bounds the caller wants. @@ -3010,7 +2993,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // while pausing because that changes the focused stack and may prevent the new // starting activity from resuming. if (moveHomeStackToFront && task.getTaskToReturnTo() == HOME_ACTIVITY_TYPE - && (r.state == RESUMED || !r.supportsPictureInPictureWhilePausing)) { + && (r.state == RESUMED || !r.supportsEnterPipOnTaskSwitch)) { // Move the home stack forward if the task we just moved to the pinned stack // was launched from home so home should be visible behind it. moveHomeStackToFront(reason); @@ -3039,7 +3022,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D // Reset the state that indicates it can enter PiP while pausing after we've moved it // to the pinned stack - r.supportsPictureInPictureWhilePausing = false; + r.supportsEnterPipOnTaskSwitch = false; } finally { mWindowManager.continueSurfaceLayout(); } @@ -3059,7 +3042,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); resumeFocusedStackTopActivityLocked(); - mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName, + mService.mTaskChangeNotificationController.notifyActivityPinned(r.packageName, r.userId, r.getTask().taskId); } @@ -3106,11 +3089,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D + stack); continue; } - if (!stack.mActivityContainer.isEligibleForNewTasks()) { - if (DEBUG_TASKS) Slog.d(TAG_TASKS, - "Skipping stack: (new task not allowed) " + stack); - continue; - } stack.findTaskLocked(r, mTmpFindTaskResult); // 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 @@ -3164,6 +3142,16 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return null; } + boolean hasAwakeDisplay() { + for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { + final ActivityDisplay display = mActivityDisplays.valueAt(displayNdx); + if (!display.shouldSleep()) { + return true; + } + } + return false; + } + void goingToSleepLocked() { scheduleSleepTimeout(); if (!mGoingToSleep.isHeld()) { @@ -3176,7 +3164,16 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mService.mHandler.removeMessages(LAUNCH_TIMEOUT_MSG); } } - checkReadyForSleepLocked(); + + applySleepTokensLocked(false /* applyToStacks */); + + checkReadyForSleepLocked(true /* allowDelay */); + } + + void prepareForShutdownLocked() { + for (int i = 0; i < mActivityDisplays.size(); i++) { + createSleepTokenLocked("shutdown", mActivityDisplays.keyAt(i)); + } } boolean shutdownLocked(int timeout) { @@ -3185,14 +3182,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D boolean timedout = false; final long endTime = System.currentTimeMillis() + timeout; while (true) { - boolean cantShutdown = false; - for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { - final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; - for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - cantShutdown |= stacks.get(stackNdx).checkReadyForSleepLocked(); - } - } - if (cantShutdown) { + if (!putStacksToSleepLocked(true /* allowDelay */, true /* shuttingDown */)) { long timeRemaining = endTime - System.currentTimeMillis(); if (timeRemaining > 0) { try { @@ -3210,8 +3200,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } // Force checkReadyForSleep to complete. - mSleepTimeout = true; - checkReadyForSleepLocked(); + checkReadyForSleepLocked(false /* allowDelay */); return timedout; } @@ -3221,69 +3210,72 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (mGoingToSleep.isHeld()) { mGoingToSleep.release(); } + } + + void applySleepTokensLocked(boolean applyToStacks) { for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { - final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; + // Set the sleeping state of the display. + final ActivityDisplay display = mActivityDisplays.valueAt(displayNdx); + final boolean displayShouldSleep = display.shouldSleep(); + if (displayShouldSleep == display.isSleeping()) { + continue; + } + display.setIsSleeping(displayShouldSleep); + + if (!applyToStacks) { + continue; + } + + // Set the sleeping state of the stacks on the display. + final ArrayList stacks = display.mStacks; for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { final ActivityStack stack = stacks.get(stackNdx); - stack.awakeFromSleepingLocked(); - if (isFocusedStack(stack)) { - resumeFocusedStackTopActivityLocked(); + if (displayShouldSleep) { + stack.goToSleepIfPossible(false /* shuttingDown */); + } else { + stack.awakeFromSleepingLocked(); + if (isFocusedStack(stack)) { + resumeFocusedStackTopActivityLocked(); + } + } + } + + if (displayShouldSleep || mGoingToSleepActivities.isEmpty()) { + continue; + } + // The display is awake now, so clean up the going to sleep list. + for (Iterator it = mGoingToSleepActivities.iterator(); it.hasNext(); ) { + final ActivityRecord r = it.next(); + if (r.getDisplayId() == display.mDisplayId) { + it.remove(); } } } - mGoingToSleepActivities.clear(); } void activitySleptLocked(ActivityRecord r) { mGoingToSleepActivities.remove(r); - checkReadyForSleepLocked(); + final ActivityStack s = r.getStack(); + if (s != null) { + s.checkReadyForSleep(); + } else { + checkReadyForSleepLocked(true); + } } - void checkReadyForSleepLocked() { + void checkReadyForSleepLocked(boolean allowDelay) { if (!mService.isSleepingOrShuttingDownLocked()) { // Do not care. return; } - if (!mSleepTimeout) { - boolean dontSleep = false; - for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { - final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; - for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - dontSleep |= stacks.get(stackNdx).checkReadyForSleepLocked(); - } - } - - if (mStoppingActivities.size() > 0) { - // Still need to tell some activities to stop; can't sleep yet. - if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still need to stop " - + mStoppingActivities.size() + " activities"); - scheduleIdleLocked(); - dontSleep = true; - } - - if (mGoingToSleepActivities.size() > 0) { - // Still need to tell some activities to sleep; can't sleep yet. - if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still need to sleep " - + mGoingToSleepActivities.size() + " activities"); - dontSleep = true; - } - - if (dontSleep) { - return; - } + if (!putStacksToSleepLocked(allowDelay, false /* shuttingDown */)) { + return; } // Send launch end powerhint before going sleep mService.mActivityStarter.sendPowerHintForLaunchEndIfNeeded(); - for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { - final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; - for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { - stacks.get(stackNdx).goToSleep(); - } - } - removeSleepTimeouts(); if (mGoingToSleep.isHeld()) { @@ -3294,7 +3286,27 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } } + // Tries to put all activity stacks to sleep. Returns true if all stacks were + // successfully put to sleep. + private boolean putStacksToSleepLocked(boolean allowDelay, boolean shuttingDown) { + boolean allSleep = true; + for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) { + final ArrayList stacks = mActivityDisplays.valueAt(displayNdx).mStacks; + for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) { + if (allowDelay) { + allSleep &= stacks.get(stackNdx).goToSleepIfPossible(shuttingDown); + } else { + stacks.get(stackNdx).goToSleep(); + } + } + } + return allSleep; + } + boolean reportResumedActivityLocked(ActivityRecord r) { + // A resumed activity cannot be stopping. remove from list + mStoppingActivities.remove(r); + final ActivityStack stack = r.getStack(); if (isFocusedStack(stack)) { mService.updateUsageStats(r, true); @@ -3318,70 +3330,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } } - boolean requestVisibleBehindLocked(ActivityRecord r, boolean visible) { - final ActivityStack stack = r.getStack(); - if (stack == null) { - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, - "requestVisibleBehind: r=" + r + " visible=" + visible + " stack is null"); - return false; - } - - if (visible && !StackId.activitiesCanRequestVisibleBehind(stack.mStackId)) { - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, "requestVisibleBehind: r=" + r - + " visible=" + visible + " stackId=" + stack.mStackId - + " can't contain visible behind activities"); - return false; - } - - final boolean isVisible = stack.hasVisibleBehindActivity(); - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, - "requestVisibleBehind r=" + r + " visible=" + visible + " isVisible=" + isVisible); - - final ActivityRecord top = topRunningActivityLocked(); - if (top == null || top == r || (visible == isVisible)) { - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, "requestVisibleBehind: quick return"); - stack.setVisibleBehindActivity(visible ? r : null); - return true; - } - - // A non-top activity is reporting a visibility change. - if (visible && top.fullscreen) { - // Let the caller know that it can't be seen. - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, - "requestVisibleBehind: returning top.fullscreen=" + top.fullscreen - + " top.state=" + top.state + " top.app=" + top.app + " top.app.thread=" - + top.app.thread); - return false; - } else if (!visible && stack.getVisibleBehindActivity() != r) { - // Only the activity set as currently visible behind should actively reset its - // visible behind state. - if (DEBUG_VISIBLE_BEHIND) Slog.d(TAG_VISIBLE_BEHIND, - "requestVisibleBehind: returning visible=" + visible - + " stack.getVisibleBehindActivity()=" + stack.getVisibleBehindActivity() - + " r=" + r); - return false; - } - - stack.setVisibleBehindActivity(visible ? r : null); - if (!visible) { - // If there is a translucent home activity, we need to force it stop being translucent, - // because we can't depend on the application to necessarily perform that operation. - // Check out b/14469711 for details. - final ActivityRecord next = stack.findNextTranslucentActivity(r); - if (next != null && next.isHomeActivity()) { - mService.convertFromTranslucent(next.appToken); - } - } - if (top.app != null && top.app.thread != null) { - // Notify the top app of the change. - try { - top.app.thread.scheduleBackgroundVisibleBehindChanged(top.appToken, visible); - } catch (RemoteException e) { - } - } - return true; - } - // Called when WindowManager has finished animating the launchingBehind activity to the back. private void handleLaunchTaskBehindCompleteLocked(ActivityRecord r) { final TaskRecord task = r.getTask(); @@ -3618,21 +3566,27 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D s.setVisibility(false); } } - if ((!waitingVisible || mService.isSleepingOrShuttingDownLocked()) && remove) { - if (!processPausingActivities && s.state == PAUSING) { - // Defer processing pausing activities in this iteration and reschedule - // a delayed idle to reprocess it again - removeTimeoutsForActivityLocked(idleActivity); - scheduleIdleTimeoutLocked(idleActivity); - continue; - } + if (remove) { + final ActivityStack stack = s.getStack(); + final boolean shouldSleepOrShutDown = stack != null + ? stack.shouldSleepOrShutDownActivities() + : mService.isSleepingOrShuttingDownLocked(); + if (!waitingVisible || shouldSleepOrShutDown) { + if (!processPausingActivities && s.state == PAUSING) { + // Defer processing pausing activities in this iteration and reschedule + // a delayed idle to reprocess it again + removeTimeoutsForActivityLocked(idleActivity); + scheduleIdleTimeoutLocked(idleActivity); + continue; + } - if (DEBUG_STATES) Slog.v(TAG, "Ready to stop: " + s); - if (stops == null) { - stops = new ArrayList<>(); + if (DEBUG_STATES) Slog.v(TAG, "Ready to stop: " + s); + if (stops == null) { + stops = new ArrayList<>(); + } + stops.add(s); + mStoppingActivities.remove(activityNdx); } - stops.add(s); - mStoppingActivities.remove(activityNdx); } } @@ -3685,11 +3639,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D public void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mFocusedStack=" + mFocusedStack); pw.print(" mLastFocusedStack="); pw.println(mLastFocusedStack); - pw.print(prefix); pw.println("mSleepTimeout=" + mSleepTimeout); pw.print(prefix); pw.println("mCurTaskIdForUser=" + mCurTaskIdForUser); pw.print(prefix); pw.println("mUserStackInFront=" + mUserStackInFront); - pw.print(prefix); pw.println("mActivityContainers=" + mActivityContainers); + pw.print(prefix); pw.println("mStacks=" + mStacks); pw.print(prefix); pw.print("mLockTaskModeState=" + lockTaskModeToString()); final SparseArray packages = mService.mLockTaskPackages; if (packages.size() > 0) { @@ -3782,6 +3735,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D stackHeader.append("\n"); stackHeader.append(" mFullscreen=" + stack.mFullscreen); stackHeader.append("\n"); + stackHeader.append(" isSleeping=" + stack.shouldSleepActivities()); + stackHeader.append("\n"); stackHeader.append(" mBounds=" + stack.mBounds); final boolean printedStackHeader = stack.dumpActivitiesLocked(fd, pw, dumpAll, @@ -3833,8 +3788,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D " Activities waiting for another to become visible:", null); printed |= dumpHistoryList(fd, pw, mGoingToSleepActivities, " ", "Sleep", false, !dumpAll, false, dumpPackage, true, " Activities waiting to sleep:", null); - printed |= dumpHistoryList(fd, pw, mGoingToSleepActivities, " ", "Sleep", false, !dumpAll, - false, dumpPackage, true, " Activities waiting to sleep:", null); return printed; } @@ -3945,7 +3898,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } void removeSleepTimeouts() { - mSleepTimeout = false; mHandler.removeMessages(SLEEP_TIMEOUT_MSG); } @@ -3983,6 +3935,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return getActivityDisplayOrCreateLocked(displayId) != null; } + ActivityDisplay getActivityDisplay(int displayId) { + return mActivityDisplays.get(displayId); + } + /** * Get an existing instance of {@link ActivityDisplay} or create new if there is a * corresponding record in display manager. @@ -4043,6 +3999,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D moveTasksToFullscreenStackLocked(stack.getStackId(), true /* onTop */); } } + + releaseSleepTokens(activityDisplay); + mActivityDisplays.remove(displayId); mWindowManager.onDisplayRemoved(displayId); } @@ -4053,12 +4012,60 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D synchronized (mService) { ActivityDisplay activityDisplay = mActivityDisplays.get(displayId); if (activityDisplay != null) { + // The window policy is responsible for stopping activities on the default display + if (displayId != Display.DEFAULT_DISPLAY) { + int displayState = activityDisplay.mDisplay.getState(); + if (displayState == Display.STATE_OFF && activityDisplay.mOffToken == null) { + activityDisplay.mOffToken = + mService.acquireSleepToken("Display-off", displayId); + } else if (displayState == Display.STATE_ON + && activityDisplay.mOffToken != null) { + activityDisplay.mOffToken.release(); + activityDisplay.mOffToken = null; + } + } // TODO: Update the bounds. } mWindowManager.onDisplayChanged(displayId); } } + SleepToken createSleepTokenLocked(String tag, int displayId) { + ActivityDisplay display = mActivityDisplays.get(displayId); + if (display == null) { + throw new IllegalArgumentException("Invalid display: " + displayId); + } + + final SleepTokenImpl token = new SleepTokenImpl(tag, displayId); + mSleepTokens.add(token); + display.mAllSleepTokens.add(token); + return token; + } + + private void removeSleepTokenLocked(SleepTokenImpl token) { + mSleepTokens.remove(token); + + ActivityDisplay display = mActivityDisplays.get(token.mDisplayId); + if (display != null) { + display.mAllSleepTokens.remove(token); + if (display.mAllSleepTokens.isEmpty()) { + mService.updateSleepIfNeededLocked(); + } + } + } + + private void releaseSleepTokens(ActivityDisplay display) { + if (display.mAllSleepTokens.isEmpty()) { + return; + } + for (SleepTokenImpl token : display.mAllSleepTokens) { + mSleepTokens.remove(token); + } + display.mAllSleepTokens.clear(); + + mService.updateSleepIfNeededLocked(); + } + private StackInfo getStackInfoLocked(ActivityStack stack) { final int displayId = stack.mDisplayId; final ActivityDisplay display = mActivityDisplays.get(displayId); @@ -4364,9 +4371,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D void activityRelaunchedLocked(IBinder token) { mWindowManager.notifyAppRelaunchingFinished(token); - if (mService.isSleepingOrShuttingDownLocked()) { - final ActivityRecord r = ActivityRecord.isInStackLocked(token); - if (r != null) { + final ActivityRecord r = ActivityRecord.isInStackLocked(token); + if (r != null) { + if (r.getStack().shouldSleepOrShutDownActivities()) { r.setSleeping(true, true); } } @@ -4406,31 +4413,29 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return; } - scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds, false /* immediate */); + scheduleUpdatePictureInPictureModeIfNeeded(task, stack.mBounds); } - void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds, - boolean immediate) { - - if (immediate) { - mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG); - for (int i = task.mActivities.size() - 1; i >= 0; i--) { - final ActivityRecord r = task.mActivities.get(i); - if (r.app != null && r.app.thread != null) { - r.updatePictureInPictureMode(targetStackBounds); - } - } - } else { - for (int i = task.mActivities.size() - 1; i >= 0; i--) { - final ActivityRecord r = task.mActivities.get(i); - if (r.app != null && r.app.thread != null) { - mPipModeChangedActivities.add(r); - } + void scheduleUpdatePictureInPictureModeIfNeeded(TaskRecord task, Rect targetStackBounds) { + for (int i = task.mActivities.size() - 1; i >= 0; i--) { + final ActivityRecord r = task.mActivities.get(i); + if (r.app != null && r.app.thread != null) { + mPipModeChangedActivities.add(r); } - mPipModeChangedTargetStackBounds = targetStackBounds; + } + mPipModeChangedTargetStackBounds = targetStackBounds; + + if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { + mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); + } + } - if (!mHandler.hasMessages(REPORT_PIP_MODE_CHANGED_MSG)) { - mHandler.sendEmptyMessage(REPORT_PIP_MODE_CHANGED_MSG); + void updatePictureInPictureMode(TaskRecord task, Rect targetStackBounds, boolean forceUpdate) { + mHandler.removeMessages(REPORT_PIP_MODE_CHANGED_MSG); + for (int i = task.mActivities.size() - 1; i >= 0; i--) { + final ActivityRecord r = task.mActivities.get(i); + if (r.app != null && r.app.thread != null) { + r.updatePictureInPictureMode(targetStackBounds, forceUpdate); } } } @@ -4439,6 +4444,31 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mIsDockMinimized = minimized; } + void wakeUp(String reason) { + mPowerManager.wakeUp(SystemClock.uptimeMillis(), "android.server.am:TURN_ON:" + reason); + } + + /** + * Begin deferring resume to avoid duplicate resumes in one pass. + */ + private void beginDeferResume() { + mDeferResumeCount++; + } + + /** + * End deferring resume and determine if resume can be called. + */ + private void endDeferResume() { + mDeferResumeCount--; + } + + /** + * @return True if resume can be called. + */ + private boolean readyToResume() { + return mDeferResumeCount == 0; + } + private final class ActivityStackSupervisorHandler extends Handler { public ActivityStackSupervisorHandler(Looper looper) { @@ -4467,7 +4497,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D synchronized (mService) { for (int i = mPipModeChangedActivities.size() - 1; i >= 0; i--) { final ActivityRecord r = mPipModeChangedActivities.remove(i); - r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds); + r.updatePictureInPictureMode(mPipModeChangedTargetStackBounds, + false /* forceUpdate */); } } } break; @@ -4493,8 +4524,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D synchronized (mService) { if (mService.isSleepingOrShuttingDownLocked()) { Slog.w(TAG, "Sleep timeout! Sleeping now."); - mSleepTimeout = true; - checkReadyForSleepLocked(); + checkReadyForSleepLocked(false /* allowDelay */); } } } break; @@ -4519,16 +4549,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D case HANDLE_DISPLAY_REMOVED: { handleDisplayRemoved(msg.arg1); } break; - case CONTAINER_CALLBACK_VISIBILITY: { - final ActivityContainer container = (ActivityContainer) msg.obj; - final IActivityContainerCallback callback = container.mCallback; - if (callback != null) { - try { - callback.setVisible(container.asBinder(), msg.arg1 == 1); - } catch (RemoteException e) { - } - } - } break; case LOCK_TASK_START_MSG: { // When lock task starts, we disable the status bars. try { @@ -4577,9 +4597,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } mLockTaskNotify.show(false); try { - boolean shouldLockKeyguard = Settings.Secure.getInt( + boolean shouldLockKeyguard = Settings.Secure.getIntForUser( mService.mContext.getContentResolver(), - Settings.Secure.LOCK_TO_APP_EXIT_LOCKED) != 0; + Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, + UserHandle.USER_CURRENT) != 0; if (mLockTaskModeState == LOCK_TASK_MODE_PINNED && shouldLockKeyguard) { mWindowManager.lockNow(null); mWindowManager.dismissKeyguard(null /* callback */); @@ -4601,16 +4622,6 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } mLockTaskNotify.showToast(LOCK_TASK_MODE_PINNED); } break; - case CONTAINER_CALLBACK_TASK_LIST_EMPTY: { - final ActivityContainer container = (ActivityContainer) msg.obj; - final IActivityContainerCallback callback = container.mCallback; - if (callback != null) { - try { - callback.onAllActivitiesComplete(container.asBinder()); - } catch (RemoteException e) { - } - } - } break; case LAUNCH_TASK_BEHIND_COMPLETE: { synchronized (mService) { ActivityRecord r = ActivityRecord.forTokenLocked((IBinder) msg.obj); @@ -4624,340 +4635,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D } } - class ActivityContainer extends android.app.IActivityContainer.Stub { - final static int FORCE_NEW_TASK_FLAGS = FLAG_ACTIVITY_NEW_TASK | - FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION; - final int mStackId; - IActivityContainerCallback mCallback = null; - ActivityStack mStack; - ActivityRecord mParentActivity = null; - String mIdString; - - boolean mVisible = true; - - /** Display this ActivityStack is currently on. Null if not attached to a Display. */ - ActivityDisplay mActivityDisplay; - - final static int CONTAINER_STATE_HAS_SURFACE = 0; - final static int CONTAINER_STATE_NO_SURFACE = 1; - final static int CONTAINER_STATE_FINISHING = 2; - int mContainerState = CONTAINER_STATE_HAS_SURFACE; - - ActivityContainer(int stackId, ActivityDisplay activityDisplay, boolean onTop) { - synchronized (mService) { - mStackId = stackId; - mActivityDisplay = activityDisplay; - mIdString = "ActivtyContainer{" + mStackId + "}"; - - createStack(stackId, onTop); - if (DEBUG_STACK) Slog.d(TAG_STACK, "Creating " + this); - } - } - - protected void createStack(int stackId, boolean onTop) { - switch (stackId) { - case PINNED_STACK_ID: - new PinnedActivityStack(this, mRecentTasks, onTop); - break; - default: - new ActivityStack(this, mRecentTasks, onTop); - break; - } - } - - /** - * Adds the stack to specified display. Also calls WindowManager to do the same from - * {@link ActivityStack#reparent(ActivityDisplay, boolean)}. - * @param activityDisplay The display to add the stack to. - */ - void addToDisplayLocked(ActivityDisplay activityDisplay) { - if (DEBUG_STACK) Slog.d(TAG_STACK, "addToDisplayLocked: " + this - + " to display=" + activityDisplay); - if (mActivityDisplay != null) { - throw new IllegalStateException("ActivityContainer is already attached, " + - "displayId=" + mActivityDisplay.mDisplayId); - } - mActivityDisplay = activityDisplay; - mStack.reparent(activityDisplay, true /* onTop */); - } - - @Override - public void addToDisplay(int displayId) { - synchronized (mService) { - final ActivityDisplay activityDisplay = getActivityDisplayOrCreateLocked(displayId); - if (activityDisplay == null) { - return; - } - addToDisplayLocked(activityDisplay); - } - } - - @Override - public int getDisplayId() { - synchronized (mService) { - if (mActivityDisplay != null) { - return mActivityDisplay.mDisplayId; - } - } - return -1; - } - - @Override - public int getStackId() { - synchronized (mService) { - return mStackId; - } - } - - @Override - public boolean injectEvent(InputEvent event) { - final long origId = Binder.clearCallingIdentity(); - try { - synchronized (mService) { - if (mActivityDisplay != null) { - return mInputManagerInternal.injectInputEvent(event, - mActivityDisplay.mDisplayId, - InputManager.INJECT_INPUT_EVENT_MODE_ASYNC); - } - } - return false; - } finally { - Binder.restoreCallingIdentity(origId); - } - } - - @Override - public void release() { - synchronized (mService) { - if (mContainerState == CONTAINER_STATE_FINISHING) { - return; - } - mContainerState = CONTAINER_STATE_FINISHING; - - long origId = Binder.clearCallingIdentity(); - try { - mStack.finishAllActivitiesLocked(false); - mService.mActivityStarter.removePendingActivityLaunchesLocked(mStack); - } finally { - Binder.restoreCallingIdentity(origId); - } - } - } - - /** - * Remove the stack completely. Must be called only when there are no tasks left in it, - * as this method does not finish running activities. - */ - void removeLocked() { - if (DEBUG_STACK) Slog.d(TAG_STACK, "removeLocked: " + this + " from display=" - + mActivityDisplay + " Callers=" + Debug.getCallers(2)); - if (mActivityDisplay != null) { - removeFromDisplayLocked(); - } - mStack.remove(); - } - - /** - * Remove the stack from its current {@link ActivityDisplay}, so it can be either destroyed - * completely or re-parented. - */ - private void removeFromDisplayLocked() { - if (DEBUG_STACK) Slog.d(TAG_STACK, "removeFromDisplayLocked: " + this - + " current displayId=" + mActivityDisplay.mDisplayId); - - mActivityDisplay.detachStack(mStack); - mActivityDisplay = null; - } - - /** - * Move the stack to specified display. - * @param activityDisplay Target display to move the stack to. - * @param onTop Indicates whether container should be place on top or on bottom. - */ - void moveToDisplayLocked(ActivityDisplay activityDisplay, boolean onTop) { - if (DEBUG_STACK) Slog.d(TAG_STACK, "moveToDisplayLocked: " + this + " from display=" - + mActivityDisplay + " to display=" + activityDisplay - + " Callers=" + Debug.getCallers(2)); - - removeFromDisplayLocked(); - - mActivityDisplay = activityDisplay; - mStack.reparent(activityDisplay, onTop); - } - - @Override - public final int startActivity(Intent intent) { - return mService.startActivity(intent, this); - } - - @Override - public final int startActivityIntentSender(IIntentSender intentSender) - throws TransactionTooLargeException { - mService.enforceNotIsolatedCaller("ActivityContainer.startActivityIntentSender"); - - if (!(intentSender instanceof PendingIntentRecord)) { - throw new IllegalArgumentException("Bad PendingIntent object"); - } - - final int userId = mService.mUserController.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), mCurrentUser, false, - ActivityManagerService.ALLOW_FULL_ONLY, "ActivityContainer", null); - - final PendingIntentRecord pendingIntent = (PendingIntentRecord) intentSender; - checkEmbeddedAllowedInner(userId, pendingIntent.key.requestIntent, - pendingIntent.key.requestResolvedType); - - return pendingIntent.sendInner(0, null, null, null, null, null, null, null, 0, - FORCE_NEW_TASK_FLAGS, FORCE_NEW_TASK_FLAGS, null, this); - } - - void checkEmbeddedAllowedInner(int userId, Intent intent, String resolvedType) { - ActivityInfo aInfo = resolveActivity(intent, resolvedType, 0, null, userId); - if (aInfo != null && (aInfo.flags & ActivityInfo.FLAG_ALLOW_EMBEDDED) == 0) { - throw new SecurityException( - "Attempt to embed activity that has not set allowEmbedded=\"true\""); - } - } - - @Override - public IBinder asBinder() { - return this; - } - - @Override - public void setSurface(Surface surface, int width, int height, int density) { - mService.enforceNotIsolatedCaller("ActivityContainer.attachToSurface"); - } - - ActivityStackSupervisor getOuter() { - return ActivityStackSupervisor.this; - } - - boolean isAttachedLocked() { - return mActivityDisplay != null; - } - - // TODO: Make sure every change to ActivityRecord.visible results in a call to this. - void setVisible(boolean visible) { - if (mVisible != visible) { - mVisible = visible; - if (mCallback != null) { - mHandler.obtainMessage(CONTAINER_CALLBACK_VISIBILITY, visible ? 1 : 0, - 0 /* unused */, this).sendToTarget(); - } - } - } - - void setDrawn() { - } - - // You can always start a new task on a regular ActivityStack. - boolean isEligibleForNewTasks() { - return true; - } - - void onTaskListEmptyLocked() { - removeLocked(); - mHandler.obtainMessage(CONTAINER_CALLBACK_TASK_LIST_EMPTY, this).sendToTarget(); - } - - @Override - public String toString() { - return mIdString + (mActivityDisplay == null ? "N" : "A"); - } - } - - private class VirtualActivityContainer extends ActivityContainer { - Surface mSurface; - boolean mDrawn = false; - - VirtualActivityContainer(ActivityRecord parent, IActivityContainerCallback callback) { - super(getNextStackId(), parent.getStack().mActivityContainer.mActivityDisplay, - true /* onTop */); - mParentActivity = parent; - mCallback = callback; - mContainerState = CONTAINER_STATE_NO_SURFACE; - mIdString = "VirtualActivityContainer{" + mStackId + ", parent=" + mParentActivity + "}"; - } - - @Override - public void setSurface(Surface surface, int width, int height, int density) { - super.setSurface(surface, width, height, density); - - synchronized (mService) { - final long origId = Binder.clearCallingIdentity(); - try { - setSurfaceLocked(surface, width, height, density); - } finally { - Binder.restoreCallingIdentity(origId); - } - } - } - - private void setSurfaceLocked(Surface surface, int width, int height, int density) { - if (mContainerState == CONTAINER_STATE_FINISHING) { - return; - } - VirtualActivityDisplay virtualActivityDisplay = - (VirtualActivityDisplay) mActivityDisplay; - if (virtualActivityDisplay == null) { - virtualActivityDisplay = - new VirtualActivityDisplay(width, height, density); - mActivityDisplay = virtualActivityDisplay; - mActivityDisplays.put(virtualActivityDisplay.mDisplayId, virtualActivityDisplay); - addToDisplayLocked(virtualActivityDisplay); - } - - if (mSurface != null) { - mSurface.release(); - } - - mSurface = surface; - if (surface != null) { - resumeFocusedStackTopActivityLocked(); - } else { - mContainerState = CONTAINER_STATE_NO_SURFACE; - ((VirtualActivityDisplay) mActivityDisplay).setSurface(null); - if (mStack.mPausingActivity == null && mStack.mResumedActivity != null) { - mStack.startPausingLocked(false, true, null, false); - } - } - - setSurfaceIfReadyLocked(); - - if (DEBUG_STACK) Slog.d(TAG_STACK, - "setSurface: " + this + " to display=" + virtualActivityDisplay); - } - - @Override - boolean isAttachedLocked() { - return mSurface != null && super.isAttachedLocked(); - } - - @Override - void setDrawn() { - synchronized (mService) { - mDrawn = true; - setSurfaceIfReadyLocked(); - } - } - - // Never start a new task on an ActivityView if it isn't explicitly specified. - @Override - boolean isEligibleForNewTasks() { - return false; - } - - private void setSurfaceIfReadyLocked() { - if (DEBUG_STACK) Slog.v(TAG_STACK, "setSurfaceIfReadyLocked: mDrawn=" + mDrawn + - " mContainerState=" + mContainerState + " mSurface=" + mSurface); - if (mDrawn && mSurface != null && mContainerState == CONTAINER_STATE_NO_SURFACE) { - ((VirtualActivityDisplay) mActivityDisplay).setSurface(mSurface); - mContainerState = CONTAINER_STATE_HAS_SURFACE; - } - } - } - + // TODO: Move to its own file. /** Exactly one of these classes per Display in the system. Capable of holding zero or more * attached {@link ActivityStack}s */ class ActivityDisplay extends ConfigurationContainer { @@ -4969,12 +4647,19 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D * stacks, bottommost behind. Accessed directly by ActivityManager package classes */ final ArrayList mStacks = new ArrayList<>(); - ActivityRecord mVisibleBehindActivity; - /** Array of all UIDs that are present on the display. */ private IntArray mDisplayAccessUIDs = new IntArray(); + /** All tokens used to put activities on this stack to sleep (including mOffToken) */ + final ArrayList mAllSleepTokens = new ArrayList<>(); + /** The token acquired by ActivityStackSupervisor to put stacks on the display to sleep */ + SleepToken mOffToken; + + private boolean mSleeping; + + @VisibleForTesting ActivityDisplay() { + mActivityDisplays.put(mDisplayId, this); } // After instantiation, check that mDisplay is not null before using this. The alternative @@ -4996,20 +4681,14 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D if (DEBUG_STACK) Slog.v(TAG_STACK, "attachStack: attaching " + stack + " to displayId=" + mDisplayId + " position=" + position); mStacks.add(position, stack); + mService.updateSleepIfNeededLocked(); } void detachStack(ActivityStack stack) { if (DEBUG_STACK) Slog.v(TAG_STACK, "detachStack: detaching " + stack + " from displayId=" + mDisplayId); mStacks.remove(stack); - } - - void setVisibleBehindActivity(ActivityRecord r) { - mVisibleBehindActivity = r; - } - - boolean hasVisibleBehindActivity() { - return mVisibleBehindActivity != null; + mService.updateSleepIfNeededLocked(); } @Override @@ -5057,42 +4736,18 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D boolean shouldDestroyContentOnRemove() { return mDisplay.getRemoveMode() == REMOVE_MODE_DESTROY_CONTENT; } - } - - class VirtualActivityDisplay extends ActivityDisplay { - VirtualDisplay mVirtualDisplay; - - VirtualActivityDisplay(int width, int height, int density) { - DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance(); - mVirtualDisplay = dm.createVirtualDisplay(mService.mContext, null /* projection */, - VIRTUAL_DISPLAY_BASE_NAME, width, height, density, null /* surface */, - DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC | - DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY, null /* callback */, - null /* handler */, null /* uniqueId */); - - init(mVirtualDisplay.getDisplay()); - - mWindowManager.onDisplayAdded(mDisplayId); - } - void setSurface(Surface surface) { - if (mVirtualDisplay != null) { - mVirtualDisplay.setSurface(surface); - } + boolean shouldSleep() { + return (mStacks.isEmpty() || !mAllSleepTokens.isEmpty()) + && (mService.mRunningVoice == null); } - @Override - void detachStack(ActivityStack stack) { - super.detachStack(stack); - if (mVirtualDisplay != null) { - mVirtualDisplay.release(); - mVirtualDisplay = null; - } + boolean isSleeping() { + return mSleeping; } - @Override - public String toString() { - return "VirtualActivityDisplay={" + mDisplayId + "}"; + void setIsSleeping(boolean asleep) { + mSleeping = asleep; } } @@ -5205,7 +4860,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); userId = task.userId; int result = mService.startActivityInPackage(callingUid, callingPackage, intent, null, - null, null, 0, 0, bOptions, userId, null, task, "startActivityFromRecents"); + null, null, 0, 0, bOptions, userId, task, "startActivityFromRecents"); if (launchStackId == DOCKED_STACK_ID) { setResizingDuringAnimation(task); } @@ -5275,4 +4930,30 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mResult.dump(pw, prefix); } } + + private final class SleepTokenImpl extends SleepToken { + private final String mTag; + private final long mAcquireTime; + private final int mDisplayId; + + public SleepTokenImpl(String tag, int displayId) { + mTag = tag; + mDisplayId = displayId; + mAcquireTime = SystemClock.uptimeMillis(); + } + + @Override + public void release() { + synchronized (mService) { + removeSleepTokenLocked(this); + } + } + + @Override + public String toString() { + return "{\"" + mTag + "\", display " + mDisplayId + + ", acquire at " + TimeUtils.formatUptime(mAcquireTime) + "}"; + } + } + } diff --git a/services/core/java/com/android/server/am/ActivityStarter.java b/services/core/java/com/android/server/am/ActivityStarter.java index 76f65e28c2d168b5141a0f766f30a9da9e661f0c..7575f71e90b67b84de1304cf4b84db5ef6b894ea 100644 --- a/services/core/java/com/android/server/am/ActivityStarter.java +++ b/services/core/java/com/android/server/am/ActivityStarter.java @@ -90,12 +90,10 @@ import android.annotation.NonNull; import android.app.ActivityManager; import android.app.ActivityOptions; import android.app.AppGlobals; -import android.app.IActivityContainer; import android.app.IApplicationThread; import android.app.PendingIntent; import android.app.ProfilerInfo; import android.app.WaitResult; -import android.content.ComponentName; import android.content.IIntentSender; import android.content.Intent; import android.content.IntentSender; @@ -188,6 +186,12 @@ class ActivityStarter { private boolean mAvoidMoveToFront; private boolean mPowerHintSent; + // We must track when we deliver the new intent since multiple code paths invoke + // {@link #deliverNewIntent}. This is due to early returns in the code path. This flag is used + // inside {@link #deliverNewIntent} to suppress duplicate requests and ensure the intent is + // delivered at most once. + private boolean mIntentDelivered; + private IVoiceInteractionSession mVoiceSession; private IVoiceInteractor mVoiceInteractor; @@ -245,6 +249,8 @@ class ActivityStarter { mVoiceInteractor = null; mUsingVr2dDisplay = false; + + mIntentDelivered = false; } ActivityStarter(ActivityManagerService service, ActivityStackSupervisor supervisor) { @@ -260,8 +266,7 @@ class ActivityStarter { IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, String callingPackage, int realCallingPid, int realCallingUid, int startFlags, ActivityOptions options, boolean ignoreTargetSecurity, boolean componentSpecified, - ActivityRecord[] outActivity, ActivityStackSupervisor.ActivityContainer container, - TaskRecord inTask, String reason) { + ActivityRecord[] outActivity, TaskRecord inTask, String reason) { if (TextUtils.isEmpty(reason)) { throw new IllegalArgumentException("Need to specify a reason."); @@ -274,7 +279,7 @@ class ActivityStarter { aInfo, rInfo, voiceSession, voiceInteractor, resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, options, ignoreTargetSecurity, componentSpecified, mLastStartActivityRecord, - container, inTask); + inTask); if (outActivity != null) { // mLastStartActivityRecord[0] is set in the call to startActivity above. @@ -292,8 +297,7 @@ class ActivityStarter { IBinder resultTo, String resultWho, int requestCode, int callingPid, int callingUid, String callingPackage, int realCallingPid, int realCallingUid, int startFlags, ActivityOptions options, boolean ignoreTargetSecurity, boolean componentSpecified, - ActivityRecord[] outActivity, ActivityStackSupervisor.ActivityContainer container, - TaskRecord inTask) { + ActivityRecord[] outActivity, TaskRecord inTask) { int err = ActivityManager.START_SUCCESS; // Pull the optional Ephemeral Installer-only bundle out of the options early. final Bundle verificationBundle @@ -505,10 +509,8 @@ class ActivityStarter { if (DEBUG_PERMISSIONS_REVIEW) { Slog.i(TAG, "START u" + userId + " {" + intent.toShortString(true, true, true, false) + "} from uid " + callingUid + " on display " - + (container == null ? (mSupervisor.mFocusedStack == null ? - DEFAULT_DISPLAY : mSupervisor.mFocusedStack.mDisplayId) : - (container.mActivityDisplay == null ? DEFAULT_DISPLAY : - container.mActivityDisplay.mDisplayId))); + + (mSupervisor.mFocusedStack == null + ? DEFAULT_DISPLAY : mSupervisor.mFocusedStack.mDisplayId)); } } } @@ -530,7 +532,7 @@ class ActivityStarter { ActivityRecord r = new ActivityRecord(mService, callerApp, callingPid, callingUid, callingPackage, intent, resolvedType, aInfo, mService.getGlobalConfiguration(), resultRecord, resultWho, requestCode, componentSpecified, voiceSession != null, - mSupervisor, container, options, sourceRecord); + mSupervisor, options, sourceRecord); if (outActivity != null) { outActivity[0] = r; } @@ -587,8 +589,8 @@ class ActivityStarter { Intent.ACTION_INSTALL_INSTANT_APP_PACKAGE, originalIntent, auxiliaryResponse.failureIntent, callingPackage, verificationBundle, resolvedType, userId, auxiliaryResponse.packageName, auxiliaryResponse.splitName, - auxiliaryResponse.versionCode, auxiliaryResponse.token, - auxiliaryResponse.needsPhaseTwo); + auxiliaryResponse.installFailureActivity, auxiliaryResponse.versionCode, + auxiliaryResponse.token, auxiliaryResponse.needsPhaseTwo); } void postStartActivityProcessing( @@ -649,7 +651,7 @@ class ActivityStarter { null /*callingPackage*/, 0 /*realCallingPid*/, 0 /*realCallingUid*/, 0 /*startFlags*/, null /*options*/, false /*ignoreTargetSecurity*/, false /*componentSpecified*/, mLastHomeActivityStartRecord /*outActivity*/, - null /*container*/, null /*inTask*/, "startHomeActivity: " + reason); + null /*inTask*/, "startHomeActivity: " + reason); if (mSupervisor.inResumeTopActivity) { // If we are in resume section already, home activity will be initialized, but not // resumed (to avoid recursive resume) and will stay that way until something pokes it @@ -674,7 +676,7 @@ class ActivityStarter { IBinder resultTo, String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo, WaitResult outResult, Configuration globalConfig, Bundle bOptions, boolean ignoreTargetSecurity, int userId, - IActivityContainer iContainer, TaskRecord inTask, String reason) { + TaskRecord inTask, String reason) { // Refuse possible leaked file descriptors if (intent != null && intent.hasFileDescriptors()) { throw new IllegalArgumentException("File descriptors passed in Intent"); @@ -727,14 +729,7 @@ class ActivityStarter { ActivityInfo aInfo = mSupervisor.resolveActivity(intent, rInfo, startFlags, profilerInfo); ActivityOptions options = ActivityOptions.fromBundle(bOptions); - ActivityStackSupervisor.ActivityContainer container = - (ActivityStackSupervisor.ActivityContainer)iContainer; synchronized (mService) { - if (container != null && container.mParentActivity != null && - container.mParentActivity.state != RESUMED) { - // Cannot start a child activity if the parent is not resumed. - return ActivityManager.START_CANCELED; - } final int realCallingPid = Binder.getCallingPid(); final int realCallingUid = Binder.getCallingUid(); int callingPid; @@ -747,12 +742,7 @@ class ActivityStarter { callingPid = callingUid = -1; } - final ActivityStack stack; - if (container == null || container.mStack.isOnHomeDisplay()) { - stack = mSupervisor.mFocusedStack; - } else { - stack = container.mStack; - } + final ActivityStack stack = mSupervisor.mFocusedStack; stack.mConfigWillChange = globalConfig != null && mService.getGlobalConfiguration().diff(globalConfig) != 0; if (DEBUG_CONFIGURATION) Slog.v(TAG_CONFIGURATION, @@ -828,8 +818,8 @@ class ActivityStarter { aInfo, rInfo, voiceSession, voiceInteractor, resultTo, resultWho, requestCode, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, startFlags, - options, ignoreTargetSecurity, componentSpecified, outRecord, container, - inTask, reason); + options, ignoreTargetSecurity, componentSpecified, outRecord, inTask, + reason); Binder.restoreCallingIdentity(origId); @@ -954,7 +944,7 @@ class ActivityStarter { resolvedTypes[i], aInfo, null /*rInfo*/, null, null, resultTo, null, -1, callingPid, callingUid, callingPackage, realCallingPid, realCallingUid, 0, - options, false, componentSpecified, outActivity, null, null, reason); + options, false, componentSpecified, outActivity, null, reason); if (res < 0) { return res; } @@ -1092,9 +1082,7 @@ class ActivityStarter { // so make sure the task now has the identity of the new intent. top.getTask().setIntent(mStartActivity); } - ActivityStack.logStartActivity(AM_NEW_INTENT, mStartActivity, top.getTask()); - top.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, - mStartActivity.launchedFromPackage); + deliverNewIntent(top); } } @@ -1156,7 +1144,6 @@ class ActivityStarter { && ((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0 || mLaunchSingleTop || mLaunchSingleTask); if (dontStart) { - ActivityStack.logStartActivity(AM_NEW_INTENT, top, top.getTask()); // For paranoia, make sure we have correctly resumed the top activity. topStack.mLastPausedActivity = null; if (mDoResume) { @@ -1168,8 +1155,8 @@ class ActivityStarter { // anything if that is the case, so this is it! return START_RETURN_INTENT_TO_CALLER; } - top.deliverNewIntentLocked( - mCallingUid, mStartActivity.intent, mStartActivity.launchedFromPackage); + + deliverNewIntent(top); // Don't use mStartActivity.task to show the toast. We're not starting a new activity // but reusing 'top'. Fields in mStartActivity may not be fully initialized. @@ -1754,13 +1741,10 @@ class ActivityStarter { // desires. if (((mLaunchFlags & FLAG_ACTIVITY_SINGLE_TOP) != 0 || mLaunchSingleTop) && intentActivity.realActivity.equals(mStartActivity.realActivity)) { - ActivityStack.logStartActivity(AM_NEW_INTENT, mStartActivity, - intentActivity.getTask()); if (intentActivity.frontOfTask) { intentActivity.getTask().setIntent(mStartActivity); } - intentActivity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, - mStartActivity.launchedFromPackage); + deliverNewIntent(intentActivity); } else if (!intentActivity.getTask().isSameIntentFilter(mStartActivity)) { // In this case we are launching the root activity of the task, but with a // different intent. We should start a new instance on top. @@ -1845,6 +1829,17 @@ class ActivityStarter { return START_SUCCESS; } + private void deliverNewIntent(ActivityRecord activity) { + if (mIntentDelivered) { + return; + } + + ActivityStack.logStartActivity(AM_NEW_INTENT, activity, activity.getTask()); + activity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, + mStartActivity.launchedFromPackage); + mIntentDelivered = true; + } + private int setTaskFromSourceRecord() { if (mSupervisor.isLockTaskModeViolation(mSourceRecord.getTask())) { Slog.e(TAG, "Attempted Lock Task Mode violation mStartActivity=" + mStartActivity); @@ -1853,13 +1848,30 @@ class ActivityStarter { final TaskRecord sourceTask = mSourceRecord.getTask(); final ActivityStack sourceStack = mSourceRecord.getStack(); - // We only want to allow changing stack if the target task is not the top one, - // otherwise we would move the launching task to the other side, rather than show - // two side by side. - final boolean moveStackAllowed = sourceStack.topTask() != sourceTask; + // We only want to allow changing stack in two cases: + // 1. If the target task is not the top one. Otherwise we would move the launching task to + // the other side, rather than show two side by side. + // 2. If activity is not allowed on target display. + final int targetDisplayId = mTargetStack != null ? mTargetStack.mDisplayId + : sourceStack.mDisplayId; + final boolean moveStackAllowed = sourceStack.topTask() != sourceTask + || !mStartActivity.canBeLaunchedOnDisplay(targetDisplayId); if (moveStackAllowed) { mTargetStack = getLaunchStack(mStartActivity, mLaunchFlags, mStartActivity.getTask(), mOptions); + // If target stack is not found now - we can't just rely on the source stack, as it may + // be not suitable. Let's check other displays. + if (mTargetStack == null && targetDisplayId != sourceStack.mDisplayId) { + // Can't use target display, lets find a stack on the source display. + mTargetStack = mService.mStackSupervisor.getValidLaunchStackOnDisplay( + sourceStack.mDisplayId, mStartActivity); + } + if (mTargetStack == null) { + // There are no suitable stacks on the target and source display(s). Look on all + // displays. + mTargetStack = mService.mStackSupervisor.getNextValidLaunchStackLocked( + mStartActivity, -1 /* currentFocus */); + } } if (mTargetStack == null) { @@ -1884,7 +1896,7 @@ class ActivityStarter { mKeepCurTransition = true; if (top != null) { ActivityStack.logStartActivity(AM_NEW_INTENT, mStartActivity, top.getTask()); - top.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, mStartActivity.launchedFromPackage); + deliverNewIntent(top); // For paranoia, make sure we have correctly resumed the top activity. mTargetStack.mLastPausedActivity = null; if (mDoResume) { @@ -1903,7 +1915,7 @@ class ActivityStarter { task.moveActivityToFrontLocked(top); top.updateOptionsLocked(mOptions); ActivityStack.logStartActivity(AM_NEW_INTENT, mStartActivity, task); - top.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, mStartActivity.launchedFromPackage); + deliverNewIntent(top); mTargetStack.mLastPausedActivity = null; if (mDoResume) { mSupervisor.resumeFocusedStackTopActivityLocked(); @@ -1939,14 +1951,12 @@ class ActivityStarter { || mLaunchSingleTop || mLaunchSingleTask) { mTargetStack.moveTaskToFrontLocked(mInTask, mNoAnimation, mOptions, mStartActivity.appTimeTracker, "inTaskToFront"); - ActivityStack.logStartActivity(AM_NEW_INTENT, top, top.getTask()); if ((mStartFlags & START_FLAG_ONLY_IF_NEEDED) != 0) { // We don't need to start a new activity, and the client said not to do // anything if that is the case, so this is it! return START_RETURN_INTENT_TO_CALLER; } - top.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, - mStartActivity.launchedFromPackage); + deliverNewIntent(top); return START_DELIVERED_TO_TOP; } } @@ -2071,13 +2081,6 @@ class ActivityStarter { return currentStack; } - final ActivityStackSupervisor.ActivityContainer container = r.mInitialActivityContainer; - if (container != null) { - // The first time put it on the desired stack, after this put on task stack. - r.mInitialActivityContainer = null; - return container.mStack; - } - if (canLaunchIntoFocusedStack(r, newTask)) { if (DEBUG_FOCUS || DEBUG_STACK) Slog.d(TAG_FOCUS, "computeStackFocus: Have a focused stack=" + mSupervisor.mFocusedStack); @@ -2142,13 +2145,11 @@ class ActivityStarter { default: // Dynamic stacks behave similarly to the fullscreen stack and can contain any // resizeable task. - // TODO: Check ActivityView after fixing b/35349678. canUseFocusedStack = isDynamicStack(focusedStackId) && r.canBeLaunchedOnDisplay(focusedStack.mDisplayId); } - return canUseFocusedStack - && (!newTask || focusedStack.mActivityContainer.isEligibleForNewTasks()) + return canUseFocusedStack && !newTask // We strongly prefer to launch activities on the same display as their source. && (mSourceDisplayId == focusedStack.mDisplayId); } @@ -2214,9 +2215,7 @@ class ActivityStarter { // The parent activity doesn't want to launch the activity on top of itself, but // instead tries to put it onto other side in side-by-side mode. - final ActivityStack parentStack = task != null ? task.getStack() - : r.mInitialActivityContainer != null ? r.mInitialActivityContainer.mStack - : mSupervisor.mFocusedStack; + final ActivityStack parentStack = task != null ? task.getStack(): mSupervisor.mFocusedStack; if (parentStack != mSupervisor.mFocusedStack) { // If task's parent stack is not focused - use it during adjacent launch. @@ -2267,7 +2266,6 @@ class ActivityStarter { case ASSISTANT_STACK_ID: return r.isAssistantActivity(); default: - // TODO: Check ActivityView after fixing b/35349678. if (StackId.isDynamicStack(stackId)) { return r.canBeLaunchedOnDisplay(displayId); } @@ -2319,40 +2317,76 @@ class ActivityStarter { return didSomething; } - void dump(PrintWriter pw, String prefix) { - pw.println(prefix + "ActivityStarter:"); + void dump(PrintWriter pw, String prefix, String dumpPackage) { prefix = prefix + " "; - pw.println(prefix + "mCurrentUser=" + mSupervisor.mCurrentUser); - pw.println(prefix + "mLastStartReason=" + mLastStartReason); - pw.println(prefix + "mLastStartActivityTimeMs=" - + DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); - pw.println(prefix + "mLastStartActivityResult=" + mLastStartActivityResult); + if (dumpPackage != null) { + if ((mLastStartActivityRecord[0] == null || + !dumpPackage.equals(mLastHomeActivityStartRecord[0].packageName)) && + (mLastHomeActivityStartRecord[0] == null || + !dumpPackage.equals(mLastHomeActivityStartRecord[0].packageName)) && + (mStartActivity == null || !dumpPackage.equals(mStartActivity.packageName))) { + pw.print(prefix); + pw.println("(nothing)"); + return; + } + } + + pw.print(prefix); + pw.print("mCurrentUser="); + pw.println(mSupervisor.mCurrentUser); + pw.print(prefix); + pw.print("mLastStartReason="); + pw.println(mLastStartReason); + pw.print(prefix); + pw.print("mLastStartActivityTimeMs="); + pw.println(DateFormat.getDateTimeInstance().format(new Date(mLastStartActivityTimeMs))); + pw.print(prefix); + pw.print("mLastStartActivityResult="); + pw.println(mLastStartActivityResult); ActivityRecord r = mLastStartActivityRecord[0]; if (r != null) { - pw.println(prefix + "mLastStartActivityRecord:"); - r.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mLastStartActivityRecord:"); + r.dump(pw, prefix + " "); } - pw.println(prefix + "mLastHomeActivityStartResult=" + mLastHomeActivityStartResult); + pw.print(prefix); + pw.print("mLastHomeActivityStartResult="); + pw.println(mLastHomeActivityStartResult); r = mLastHomeActivityStartRecord[0]; if (r != null) { - pw.println(prefix + "mLastHomeActivityStartRecord:"); - r.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mLastHomeActivityStartRecord:"); + r.dump(pw, prefix + " "); } if (mStartActivity != null) { - pw.println(prefix + "mStartActivity:"); - mStartActivity.dump(pw, prefix + " "); + pw.print(prefix); + pw.println("mStartActivity:"); + mStartActivity.dump(pw, prefix + " "); } if (mIntent != null) { - pw.println(prefix + "mIntent=" + mIntent); + pw.print(prefix); + pw.print("mIntent="); + pw.println(mIntent); } if (mOptions != null) { - pw.println(prefix + "mOptions=" + mOptions); - } - pw.println(prefix + "mLaunchSingleTop=" + mLaunchSingleTop - + " mLaunchSingleInstance=" + mLaunchSingleInstance - + " mLaunchSingleTask=" + mLaunchSingleTask - + " mLaunchFlags=0x" + Integer.toHexString(mLaunchFlags) - + " mDoResume=" + mDoResume + " mAddingToTask=" + mAddingToTask); + pw.print(prefix); + pw.print("mOptions="); + pw.println(mOptions); + } + pw.print(prefix); + pw.print("mLaunchSingleTop="); + pw.print(mLaunchSingleTop); + pw.print(" mLaunchSingleInstance="); + pw.print(mLaunchSingleInstance); + pw.print(" mLaunchSingleTask="); + pw.println(mLaunchSingleTask); + pw.print(prefix); + pw.print("mLaunchFlags=0x"); + pw.print(Integer.toHexString(mLaunchFlags)); + pw.print(" mDoResume="); + pw.print(mDoResume); + pw.print(" mAddingToTask="); + pw.println(mAddingToTask); } } diff --git a/services/core/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java index c9c1d005a85a59e4204498e156948862570ffeb6..541226682bac3a8aeb23b8ef51eceeb99f30cf8f 100644 --- a/services/core/java/com/android/server/am/AppErrorDialog.java +++ b/services/core/java/com/android/server/am/AppErrorDialog.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.Resources; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -32,8 +33,6 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; -import static com.android.server.am.ActivityManagerService.IS_USER_BUILD; - final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListener { private final ActivityManagerService mService; @@ -41,7 +40,6 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen private final ProcessRecord mProc; private final boolean mRepeating; private final boolean mIsRestartable; - private CharSequence mName; static int CANT_SHOW = -1; @@ -111,20 +109,19 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen LayoutInflater.from(context).inflate( com.android.internal.R.layout.app_error_dialog, frame, true); - boolean hasRestart = !mRepeating && mIsRestartable; final boolean hasReceiver = mProc.errorReportReceiver != null; final TextView restart = findViewById(com.android.internal.R.id.aerr_restart); restart.setOnClickListener(this); - restart.setVisibility(hasRestart ? View.VISIBLE : View.GONE); + restart.setVisibility(mIsRestartable ? View.VISIBLE : View.GONE); final TextView report = findViewById(com.android.internal.R.id.aerr_report); report.setOnClickListener(this); report.setVisibility(hasReceiver ? View.VISIBLE : View.GONE); final TextView close = findViewById(com.android.internal.R.id.aerr_close); - close.setVisibility(!hasRestart ? View.VISIBLE : View.GONE); + close.setVisibility(mRepeating ? View.VISIBLE : View.GONE); close.setOnClickListener(this); - boolean showMute = !IS_USER_BUILD && Settings.Global.getInt(context.getContentResolver(), + boolean showMute = !Build.IS_USER && Settings.Global.getInt(context.getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; final TextView mute = findViewById(com.android.internal.R.id.aerr_mute); mute.setOnClickListener(this); diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java index 0d1c579f2b818d41191e6957efbd55751922a385..a842724c31778b180b25b72c61135e416d5dee7e 100644 --- a/services/core/java/com/android/server/am/AppErrors.java +++ b/services/core/java/com/android/server/am/AppErrors.java @@ -55,7 +55,6 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Set; import static com.android.server.Watchdog.NATIVE_STACKS_OF_INTEREST; @@ -409,10 +408,9 @@ class AppErrors { final Set cats = task.intent.getCategories(); if (cats != null && cats.contains(Intent.CATEGORY_LAUNCHER)) { mService.startActivityInPackage(task.mCallingUid, - task.mCallingPackage, task.intent, - null, null, null, 0, 0, - ActivityOptions.makeBasic().toBundle(), - task.userId, null, null, "AppErrors"); + task.mCallingPackage, task.intent, null, null, null, 0, 0, + ActivityOptions.makeBasic().toBundle(), task.userId, null, + "AppErrors"); } } } @@ -594,20 +592,46 @@ class AppErrors { boolean handleAppCrashLocked(ProcessRecord app, String reason, String shortMsg, String longMsg, String stackTrace, AppErrorDialog.Data data) { - long now = SystemClock.uptimeMillis(); - boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(), + final long now = SystemClock.uptimeMillis(); + final boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0; + final boolean procIsBoundForeground = + (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); + Long crashTime; Long crashTimePersistent; + boolean tryAgain = false; + if (!app.isolated) { crashTime = mProcessCrashTimes.get(app.info.processName, app.uid); crashTimePersistent = mProcessCrashTimesPersistent.get(app.info.processName, app.uid); } else { crashTime = crashTimePersistent = null; } - if (crashTime != null && now < crashTime+ProcessList.MIN_CRASH_INTERVAL) { - // This process loses! + + // Bump up the crash count of any services currently running in the proc. + for (int i = app.services.size() - 1; i >= 0; i--) { + // Any services running in the application need to be placed + // back in the pending list. + ServiceRecord sr = app.services.valueAt(i); + // If the service was restarted a while ago, then reset crash count, else increment it. + if (now > sr.restartTime + ProcessList.MIN_CRASH_INTERVAL) { + sr.crashCount = 1; + } else { + sr.crashCount++; + } + // Allow restarting for started or bound foreground services that are crashing. + // This includes wallpapers. + if (sr.crashCount < mService.mConstants.BOUND_SERVICE_MAX_CRASH_RETRY + && (sr.isForeground || procIsBoundForeground)) { + tryAgain = true; + } + } + + if (crashTime != null && now < crashTime + ProcessList.MIN_CRASH_INTERVAL) { + // The process crashed again very quickly. If it was a bound foreground service, let's + // try to restart again in a while, otherwise the process loses! Slog.w(TAG, "Process " + app.info.processName + " has crashed too many times: killing!"); EventLog.writeEvent(EventLogTags.AM_PROCESS_CRASHED_TOO_MUCH, @@ -632,7 +656,7 @@ class AppErrors { // Don't let services in this process be restarted and potentially // annoy the user repeatedly. Unless it is persistent, since those // processes run critical code. - mService.removeProcessLocked(app, false, false, "crash"); + mService.removeProcessLocked(app, false, tryAgain, "crash"); mService.mStackSupervisor.resumeFocusedStackTopActivityLocked(); if (!showBackground) { return false; @@ -651,21 +675,8 @@ class AppErrors { } } - boolean procIsBoundForeground = - (app.curProcState == ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE); - // Bump up the crash count of any services currently running in the proc. - for (int i=app.services.size()-1; i>=0; i--) { - // Any services running in the application need to be placed - // back in the pending list. - ServiceRecord sr = app.services.valueAt(i); - sr.crashCount++; - - // Allow restarting for started or bound foreground services that are crashing the - // first time. This includes wallpapers. - if ((data != null) && (sr.crashCount <= 1) - && (sr.isForeground || procIsBoundForeground)) { - data.isRestartableForService = true; - } + if (data != null && tryAgain) { + data.isRestartableForService = true; } // If the crashing process is what we consider to be the "home process" and it has been @@ -691,7 +702,7 @@ class AppErrors { if (!app.isolated) { // XXX Can't keep track of crash times for isolated processes, - // because they don't have a perisistent identity. + // because they don't have a persistent identity. mProcessCrashTimes.put(app.info.processName, app.uid, now); mProcessCrashTimesPersistent.put(app.info.processName, app.uid, now); } diff --git a/services/core/java/com/android/server/am/AppNotRespondingDialog.java b/services/core/java/com/android/server/am/AppNotRespondingDialog.java index a3a67784fadc0991c9866a7eb62578ee5cf96c3a..d9c6a3023903c40560e5fb92b9c317a491851531 100644 --- a/services/core/java/com/android/server/am/AppNotRespondingDialog.java +++ b/services/core/java/com/android/server/am/AppNotRespondingDialog.java @@ -35,8 +35,6 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; -import static com.android.server.am.ActivityManagerService.IS_USER_BUILD; - final class AppNotRespondingDialog extends BaseErrorDialog implements View.OnClickListener { private static final String TAG = "AppNotRespondingDialog"; diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java new file mode 100644 index 0000000000000000000000000000000000000000..8af1f3eae0defcdb7add030276259c4e64650f90 --- /dev/null +++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java @@ -0,0 +1,403 @@ +/* + * 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.am; + +import android.annotation.Nullable; +import android.bluetooth.BluetoothActivityEnergyInfo; +import android.bluetooth.BluetoothAdapter; +import android.content.Context; +import android.net.wifi.IWifiManager; +import android.net.wifi.WifiActivityEnergyInfo; +import android.os.BatteryStats; +import android.os.Parcelable; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.SynchronousResultReceiver; +import android.os.SystemClock; +import android.telephony.ModemActivityInfo; +import android.telephony.TelephonyManager; +import android.util.IntArray; +import android.util.Slog; +import android.util.TimeUtils; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.os.BatteryStatsImpl; + +import libcore.util.EmptyArray; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeoutException; + +/** + * A Worker that fetches data from external sources (WiFi controller, bluetooth chipset) on a + * dedicated thread and updates BatteryStatsImpl with that information. + * + * As much work as possible is done without holding the BatteryStatsImpl lock, and only the + * readily available data is pushed into BatteryStatsImpl with the lock held. + */ +class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { + private static final String TAG = "BatteryExternalStatsWorker"; + private static final boolean DEBUG = false; + + /** + * How long to wait on an individual subsystem to return its stats. + */ + private static final long EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS = 2000; + + // There is some accuracy error in wifi reports so allow some slop in the results. + private static final long MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS = 750; + + private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor( + (ThreadFactory) r -> { + Thread t = new Thread(r, "batterystats-worker"); + t.setPriority(Thread.NORM_PRIORITY); + return t; + }); + + private final Context mContext; + private final BatteryStatsImpl mStats; + + @GuardedBy("this") + private int mUpdateFlags = 0; + + @GuardedBy("this") + private Future mCurrentFuture = null; + + @GuardedBy("this") + private String mCurrentReason = null; + + @GuardedBy("this") + private final IntArray mUidsToRemove = new IntArray(); + + private final Object mWorkerLock = new Object(); + + @GuardedBy("mWorkerLock") + private IWifiManager mWifiManager = null; + + @GuardedBy("mWorkerLock") + private TelephonyManager mTelephony = null; + + // WiFi keeps an accumulated total of stats, unlike Bluetooth. + // 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); + + BatteryExternalStatsWorker(Context context, BatteryStatsImpl stats) { + mContext = context; + mStats = stats; + } + + @Override + public synchronized Future scheduleSync(String reason, int flags) { + return scheduleSyncLocked(reason, flags); + } + + @Override + public synchronized Future scheduleCpuSyncDueToRemovedUid(int uid) { + mUidsToRemove.add(uid); + return scheduleSyncLocked("remove-uid", UPDATE_CPU); + } + + public synchronized Future scheduleWrite() { + if (mExecutorService.isShutdown()) { + return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown")); + } + + scheduleSyncLocked("write", UPDATE_ALL); + // Since we use a single threaded executor, we can assume the next scheduled task's + // Future finishes after the sync. + return mExecutorService.submit(mWriteTask); + } + + /** + * Schedules a task to run on the BatteryExternalStatsWorker thread. If scheduling more work + * within the task, never wait on the resulting Future. This will result in a deadlock. + */ + public synchronized void scheduleRunnable(Runnable runnable) { + if (!mExecutorService.isShutdown()) { + mExecutorService.submit(runnable); + } + } + + public void shutdown() { + mExecutorService.shutdownNow(); + } + + private Future scheduleSyncLocked(String reason, int flags) { + if (mExecutorService.isShutdown()) { + return CompletableFuture.failedFuture(new IllegalStateException("worker shutdown")); + } + + if (mCurrentFuture == null) { + mUpdateFlags = flags; + mCurrentReason = reason; + mCurrentFuture = mExecutorService.submit(mSyncTask); + } + mUpdateFlags |= flags; + return mCurrentFuture; + } + + private final Runnable mSyncTask = new Runnable() { + @Override + public void run() { + // Capture a snapshot of the state we are meant to process. + final int updateFlags; + final String reason; + final int[] uidsToRemove; + synchronized (BatteryExternalStatsWorker.this) { + updateFlags = mUpdateFlags; + reason = mCurrentReason; + uidsToRemove = mUidsToRemove.size() > 0 ? mUidsToRemove.toArray() : EmptyArray.INT; + mUpdateFlags = 0; + mCurrentReason = null; + mUidsToRemove.clear(); + mCurrentFuture = null; + } + + synchronized (mWorkerLock) { + if (DEBUG) { + Slog.d(TAG, "begin updateExternalStatsSync reason=" + reason); + } + try { + updateExternalStatsLocked(reason, updateFlags); + } finally { + if (DEBUG) { + Slog.d(TAG, "end updateExternalStatsSync"); + } + } + } + + // Clean up any UIDs if necessary. + synchronized (mStats) { + for (int uid : uidsToRemove) { + mStats.removeIsolatedUidLocked(uid); + } + } + } + }; + + private final Runnable mWriteTask = new Runnable() { + @Override + public void run() { + synchronized (mStats) { + mStats.writeAsyncLocked(); + } + } + }; + + private void updateExternalStatsLocked(final String reason, int updateFlags) { + // We will request data from external processes asynchronously, and wait on a timeout. + SynchronousResultReceiver wifiReceiver = null; + SynchronousResultReceiver bluetoothReceiver = null; + SynchronousResultReceiver modemReceiver = null; + + if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI) != 0) { + // We were asked to fetch WiFi data. + if (mWifiManager == null) { + mWifiManager = IWifiManager.Stub.asInterface(ServiceManager.getService( + Context.WIFI_SERVICE)); + } + + if (mWifiManager != null) { + try { + wifiReceiver = new SynchronousResultReceiver("wifi"); + mWifiManager.requestActivityInfo(wifiReceiver); + } catch (RemoteException e) { + // Oh well. + } + } + } + + if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_BT) != 0) { + // We were asked to fetch Bluetooth data. + final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); + if (adapter != null) { + bluetoothReceiver = new SynchronousResultReceiver("bluetooth"); + adapter.requestControllerActivityEnergyInfo(bluetoothReceiver); + } + } + + if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_RADIO) != 0) { + // We were asked to fetch Telephony data. + if (mTelephony == null) { + mTelephony = TelephonyManager.from(mContext); + } + + if (mTelephony != null) { + modemReceiver = new SynchronousResultReceiver("telephony"); + mTelephony.requestModemActivityInfo(modemReceiver); + } + } + + final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver); + final BluetoothActivityEnergyInfo bluetoothInfo = awaitControllerInfo(bluetoothReceiver); + final ModemActivityInfo modemInfo = awaitControllerInfo(modemReceiver); + + synchronized (mStats) { + mStats.addHistoryEventLocked( + SystemClock.elapsedRealtime(), + SystemClock.uptimeMillis(), + BatteryStats.HistoryItem.EVENT_COLLECT_EXTERNAL_STATS, + reason, 0); + + if ((updateFlags & UPDATE_CPU) != 0) { + mStats.updateCpuTimeLocked(true /* updateCpuFreqData */); + mStats.updateKernelWakelocksLocked(); + mStats.updateKernelMemoryBandwidthLocked(); + } + + if ((updateFlags & UPDATE_RPM) != 0) { + mStats.updateRpmStatsLocked(); + } + + if (bluetoothInfo != null) { + if (bluetoothInfo.isValid()) { + mStats.updateBluetoothStateLocked(bluetoothInfo); + } else { + Slog.e(TAG, "bluetooth info is invalid: " + bluetoothInfo); + } + } + } + + // WiFi and Modem state are updated without the mStats lock held, because they + // do some network stats retrieval before internally grabbing the mStats lock. + + if (wifiInfo != null) { + if (wifiInfo.isValid()) { + mStats.updateWifiState(extractDeltaLocked(wifiInfo)); + } else { + Slog.e(TAG, "wifi info is invalid: " + wifiInfo); + } + } + + if (modemInfo != null) { + if (modemInfo.isValid()) { + mStats.updateMobileRadioState(modemInfo); + } else { + Slog.e(TAG, "modem info is invalid: " + modemInfo); + } + } + } + + /** + * Helper method to extract the Parcelable controller info from a + * SynchronousResultReceiver. + */ + private static T awaitControllerInfo( + @Nullable SynchronousResultReceiver receiver) { + if (receiver == null) { + return null; + } + + try { + final SynchronousResultReceiver.Result result = + receiver.awaitResult(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS); + if (result.bundle != null) { + // This is the final destination for the Bundle. + result.bundle.setDefusable(true); + + final T data = result.bundle.getParcelable( + BatteryStats.RESULT_RECEIVER_CONTROLLER_KEY); + if (data != null) { + return data; + } + } + Slog.e(TAG, "no controller energy info supplied for " + receiver.getName()); + } catch (TimeoutException e) { + Slog.w(TAG, "timeout reading " + receiver.getName() + " stats"); + } + return null; + } + + private WifiActivityEnergyInfo extractDeltaLocked(WifiActivityEnergyInfo latest) { + final long timePeriodMs = latest.mTimestamp - mLastInfo.mTimestamp; + final long lastIdleMs = mLastInfo.mControllerIdleTimeMs; + final long lastTxMs = mLastInfo.mControllerTxTimeMs; + final long lastRxMs = mLastInfo.mControllerRxTimeMs; + final long lastEnergy = mLastInfo.mControllerEnergyUsed; + + // 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(); + + final long txTimeMs = latest.mControllerTxTimeMs - lastTxMs; + final long rxTimeMs = latest.mControllerRxTimeMs - lastRxMs; + final long idleTimeMs = latest.mControllerIdleTimeMs - lastIdleMs; + + if (txTimeMs < 0 || rxTimeMs < 0) { + // The stats were reset by the WiFi system (which is why our delta is negative). + // Returns the unaltered stats. + delta.mControllerEnergyUsed = latest.mControllerEnergyUsed; + delta.mControllerRxTimeMs = latest.mControllerRxTimeMs; + delta.mControllerTxTimeMs = latest.mControllerTxTimeMs; + delta.mControllerIdleTimeMs = latest.mControllerIdleTimeMs; + Slog.v(TAG, "WiFi energy data was reset, new WiFi energy data is " + delta); + } else { + final long totalActiveTimeMs = txTimeMs + rxTimeMs; + long maxExpectedIdleTimeMs; + if (totalActiveTimeMs > timePeriodMs) { + // Cap the max idle time at zero since the active time consumed the whole time + maxExpectedIdleTimeMs = 0; + if (totalActiveTimeMs > timePeriodMs + MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS) { + StringBuilder sb = new StringBuilder(); + sb.append("Total Active time "); + TimeUtils.formatDuration(totalActiveTimeMs, sb); + sb.append(" is longer than sample period "); + TimeUtils.formatDuration(timePeriodMs, sb); + sb.append(".\n"); + sb.append("Previous WiFi snapshot: ").append("idle="); + TimeUtils.formatDuration(lastIdleMs, sb); + sb.append(" rx="); + TimeUtils.formatDuration(lastRxMs, sb); + sb.append(" tx="); + TimeUtils.formatDuration(lastTxMs, sb); + sb.append(" e=").append(lastEnergy); + sb.append("\n"); + sb.append("Current WiFi snapshot: ").append("idle="); + TimeUtils.formatDuration(latest.mControllerIdleTimeMs, sb); + sb.append(" rx="); + TimeUtils.formatDuration(latest.mControllerRxTimeMs, sb); + sb.append(" tx="); + TimeUtils.formatDuration(latest.mControllerTxTimeMs, sb); + sb.append(" e=").append(latest.mControllerEnergyUsed); + Slog.wtf(TAG, sb.toString()); + } + } else { + maxExpectedIdleTimeMs = timePeriodMs - totalActiveTimeMs; + } + // These times seem to be the most reliable. + delta.mControllerTxTimeMs = txTimeMs; + delta.mControllerRxTimeMs = rxTimeMs; + // 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); + } + + mLastInfo = latest; + return delta; + } +} diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 65697e9d7143abad7b96c10cf4f6e1f8e1ce8f51..fae215f45c1a1dd231ec0f19484ffb77ed685071 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -16,36 +16,25 @@ package com.android.server.am; -import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_CPU; -import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_RADIO; -import static com.android.internal.os.BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI; - -import android.annotation.Nullable; import android.bluetooth.BluetoothActivityEnergyInfo; -import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.net.wifi.IWifiManager; import android.net.wifi.WifiActivityEnergyInfo; import android.os.PowerSaveState; import android.os.BatteryStats; import android.os.Binder; import android.os.Handler; import android.os.IBinder; -import android.os.Looper; -import android.os.Message; import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.ParcelFormatException; -import android.os.Parcelable; import android.os.PowerManagerInternal; import android.os.Process; -import android.os.RemoteException; import android.os.ServiceManager; -import android.os.SynchronousResultReceiver; import android.os.SystemClock; import android.os.UserHandle; +import android.os.UserManagerInternal; import android.os.WorkSource; import android.os.health.HealthStatsParceler; import android.os.health.HealthStatsWriter; @@ -54,18 +43,15 @@ import android.telephony.DataConnectionRealTimeInfo; import android.telephony.ModemActivityInfo; import android.telephony.SignalStrength; import android.telephony.TelephonyManager; -import android.util.IntArray; import android.util.Slog; -import android.util.TimeUtils; -import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IBatteryStats; import com.android.internal.os.BatteryStatsHelper; import com.android.internal.os.BatteryStatsImpl; import com.android.internal.os.PowerProfile; +import com.android.internal.os.RpmStats; import com.android.internal.util.DumpUtils; import com.android.server.LocalServices; -import com.android.server.ServiceThread; import com.android.server.power.BatterySaverPolicy.ServiceType; import java.io.File; @@ -79,7 +65,8 @@ import java.nio.charset.CodingErrorAction; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; -import java.util.concurrent.TimeoutException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; /** * All information we are collecting about things that can happen that impact @@ -91,102 +78,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub static final String TAG = "BatteryStatsService"; static final boolean DBG = false; - /** - * How long to wait on an individual subsystem to return its stats. - */ - private static final long EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS = 2000; - - // There is some accuracy error in wifi reports so allow some slop in the results. - private static final long MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS = 750; - private static IBatteryStats sService; final BatteryStatsImpl mStats; - private final BatteryStatsHandler mHandler; - private Context mContext; - private IWifiManager mWifiManager; - private TelephonyManager mTelephony; - - // Lock acquired when extracting data from external sources. - private final Object mExternalStatsLock = new Object(); - - // WiFi keeps an accumulated total of stats, unlike Bluetooth. - // Keep the last WiFi stats so we can compute a delta. - @GuardedBy("mExternalStatsLock") - private WifiActivityEnergyInfo mLastInfo = - new WifiActivityEnergyInfo(0, 0, 0, new long[]{0}, 0, 0, 0); - - class BatteryStatsHandler extends Handler implements BatteryStatsImpl.ExternalStatsSync { - public static final int MSG_SYNC_EXTERNAL_STATS = 1; - public static final int MSG_WRITE_TO_DISK = 2; - - private int mUpdateFlags = 0; - private IntArray mUidsToRemove = new IntArray(); - - public BatteryStatsHandler(Looper looper) { - super(looper); - } - - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_SYNC_EXTERNAL_STATS: - final int updateFlags; - synchronized (this) { - removeMessages(MSG_SYNC_EXTERNAL_STATS); - updateFlags = mUpdateFlags; - mUpdateFlags = 0; - } - updateExternalStatsSync((String)msg.obj, updateFlags); - - // other parts of the system could be calling into us - // from mStats in order to report of changes. We must grab the mStats - // lock before grabbing our own or we'll end up in a deadlock. - synchronized (mStats) { - synchronized (this) { - final int numUidsToRemove = mUidsToRemove.size(); - for (int i = 0; i < numUidsToRemove; i++) { - mStats.removeIsolatedUidLocked(mUidsToRemove.get(i)); - } - } - mUidsToRemove.clear(); - } - break; - - case MSG_WRITE_TO_DISK: - updateExternalStatsSync("write", UPDATE_ALL); - if (DBG) Slog.d(TAG, "begin writeAsyncLocked"); - synchronized (mStats) { - mStats.writeAsyncLocked(); - } - if (DBG) Slog.d(TAG, "end writeAsyncLocked"); - break; - } - } - - @Override - public void scheduleSync(String reason, int updateFlags) { - synchronized (this) { - scheduleSyncLocked(reason, updateFlags); - } - } - - @Override - public void scheduleCpuSyncDueToRemovedUid(int uid) { - synchronized (this) { - scheduleSyncLocked("remove-uid", UPDATE_CPU); - mUidsToRemove.add(uid); - } - } - - private void scheduleSyncLocked(String reason, int updateFlags) { - if (mUpdateFlags == 0) { - sendMessage(Message.obtain(this, MSG_SYNC_EXTERNAL_STATS, reason)); - } - mUpdateFlags |= updateFlags; - } - } + private final BatteryStatsImpl.UserInfoProvider mUserManagerUserInfoProvider; + private final Context mContext; + private final BatteryExternalStatsWorker mWorker; + private native void getLowPowerStats(RpmStats rpmStats); private native int getPlatformLowPowerStats(ByteBuffer outBuffer); private native int getSubsystemLowPowerStats(ByteBuffer outBuffer); private CharsetDecoder mDecoderStat = StandardCharsets.UTF_8 @@ -198,6 +97,19 @@ public final class BatteryStatsService extends IBatteryStats.Stub private CharBuffer mUtf16BufferStat = CharBuffer.allocate(MAX_LOW_POWER_STATS_SIZE); private static final int MAX_LOW_POWER_STATS_SIZE = 512; + /** + * Replaces the information in the given rpmStats with up-to-date information. + */ + @Override + public void fillLowPowerStats(RpmStats rpmStats) { + if (DBG) Slog.d(TAG, "begin getLowPowerStats"); + try { + getLowPowerStats(rpmStats); + } finally { + if (DBG) Slog.d(TAG, "end getLowPowerStats"); + } + } + @Override public String getPlatformLowPowerStats() { if (DBG) Slog.d(TAG, "begin getPlatformLowPowerStats"); @@ -222,7 +134,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public String getSubsystemLowPowerStats() { - Slog.d(TAG, "begin getSubsystemLowPowerStats"); + if (DBG) Slog.d(TAG, "begin getSubsystemLowPowerStats"); try { mUtf8BufferStat.clear(); mUtf16BufferStat.clear(); @@ -238,33 +150,48 @@ public final class BatteryStatsService extends IBatteryStats.Stub mUtf16BufferStat.flip(); return mUtf16BufferStat.toString(); } finally { - Slog.d(TAG, "end getSubsystemLowPowerStats"); + if (DBG) Slog.d(TAG, "end getSubsystemLowPowerStats"); } } - BatteryStatsService(File systemDir, Handler handler) { - // Our handler here will be accessing the disk, use a different thread than - // what the ActivityManagerService gave us (no I/O on that one!). - final ServiceThread thread = new ServiceThread("batterystats-sync", - Process.THREAD_PRIORITY_DEFAULT, true); - thread.start(); - mHandler = new BatteryStatsHandler(thread.getLooper()); - + BatteryStatsService(Context context, File systemDir, Handler handler) { // BatteryStatsImpl expects the ActivityManagerService handler, so pass that one through. - mStats = new BatteryStatsImpl(systemDir, handler, mHandler, this); + mContext = context; + mUserManagerUserInfoProvider = new BatteryStatsImpl.UserInfoProvider() { + private UserManagerInternal umi; + @Override + public int[] getUserIds() { + if (umi == null) { + umi = LocalServices.getService(UserManagerInternal.class); + } + return (umi != null) ? umi.getUserIds() : null; + } + }; + mStats = new BatteryStatsImpl(systemDir, handler, this, mUserManagerUserInfoProvider); + mWorker = new BatteryExternalStatsWorker(context, mStats); + mStats.setExternalStatsSyncLocked(mWorker); + mStats.setRadioScanningTimeoutLocked(mContext.getResources().getInteger( + com.android.internal.R.integer.config_radioScanningTimeout) * 1000L); + mStats.setPowerProfileLocked(new PowerProfile(context)); } - public void publish(Context context) { - mContext = context; - synchronized (mStats) { - mStats.setRadioScanningTimeoutLocked(mContext.getResources().getInteger( - com.android.internal.R.integer.config_radioScanningTimeout) - * 1000L); - mStats.setPowerProfileLocked(new PowerProfile(context)); - } + public void publish() { ServiceManager.addService(BatteryStats.SERVICE_NAME, asBinder()); } + private static void awaitUninterruptibly(Future future) { + while (true) { + try { + future.get(); + return; + } catch (ExecutionException e) { + return; + } catch (InterruptedException e) { + // Keep looping + } + } + } + /** * At the time when the constructor runs, the power manager has not yet been * initialized. So we initialize the low power observer later. @@ -283,13 +210,14 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void shutdown() { Slog.w("BatteryStats", "Writing battery stats before shutdown..."); - updateExternalStatsSync("shutdown", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("shutdown", BatteryExternalStatsWorker.UPDATE_ALL)); + synchronized (mStats) { mStats.shutdownLocked(); } // Shutdown the thread we made. - mHandler.getLooper().quit(); + mWorker.shutdown(); } public static IBatteryStats getService() { @@ -327,7 +255,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub * object to update with the latest info, then write to disk. */ public void scheduleWriteToDisk() { - mHandler.sendEmptyMessage(BatteryStatsHandler.MSG_WRITE_TO_DISK); + mWorker.scheduleWrite(); } // These are for direct use by the activity manager... @@ -341,6 +269,18 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } + void onCleanupUser(int userId) { + synchronized (mStats) { + mStats.onCleanupUserLocked(userId); + } + } + + void onUserRemoved(int userId) { + synchronized (mStats) { + mStats.onUserRemovedLocked(userId); + } + } + void addIsolatedUid(int isolatedUid, int appUid) { synchronized (mStats) { mStats.addIsolatedUidLocked(isolatedUid, appUid); @@ -391,7 +331,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub //Slog.i("foo", "SENDING BATTERY INFO:"); //mStats.dumpLocked(new LogPrinter(Log.INFO, "foo", Log.LOG_ID_SYSTEM)); Parcel out = Parcel.obtain(); - updateExternalStatsSync("get-stats", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("get-stats", BatteryExternalStatsWorker.UPDATE_ALL)); synchronized (mStats) { mStats.writeToParcel(out, 0); } @@ -406,7 +346,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub //Slog.i("foo", "SENDING BATTERY INFO:"); //mStats.dumpLocked(new LogPrinter(Log.INFO, "foo", Log.LOG_ID_SYSTEM)); Parcel out = Parcel.obtain(); - updateExternalStatsSync("get-stats", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("get-stats", BatteryExternalStatsWorker.UPDATE_ALL)); synchronized (mStats) { mStats.writeToParcel(out, 0); } @@ -468,10 +408,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } - public void noteJobFinish(String name, int uid) { + public void noteJobFinish(String name, int uid, int stopReason) { enforceCallingPermission(); synchronized (mStats) { - mStats.noteJobFinishLocked(name, uid); + mStats.noteJobFinishLocked(name, uid, stopReason); } } @@ -635,13 +575,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void noteMobileRadioPowerState(int powerState, long timestampNs, int uid) { enforceCallingPermission(); - boolean update; + final boolean update; synchronized (mStats) { update = mStats.noteMobileRadioPowerStateLocked(powerState, timestampNs, uid); } if (update) { - mHandler.scheduleSync("modem-data", UPDATE_RADIO); + mWorker.scheduleSync("modem-data", BatteryExternalStatsWorker.UPDATE_RADIO); } } @@ -792,8 +732,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub final String type = (powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH || powerState == DataConnectionRealTimeInfo.DC_POWER_STATE_MEDIUM) ? "active" : "inactive"; - mHandler.scheduleSync("wifi-data: " + type, - UPDATE_WIFI); + mWorker.scheduleSync("wifi-data: " + type, BatteryExternalStatsWorker.UPDATE_WIFI); } mStats.noteWifiRadioPowerState(powerState, tsNanos, uid); } @@ -951,7 +890,11 @@ public final class BatteryStatsService extends IBatteryStats.Stub @Override public void noteNetworkStatsEnabled() { enforceCallingPermission(); - mHandler.scheduleSync("network-stats-enabled", UPDATE_RADIO | UPDATE_WIFI); + // During device boot, qtaguid isn't enabled until after the inital + // loading of battery stats. Now that they're enabled, take our initial + // snapshot for future delta calculation. + mWorker.scheduleSync("network-stats-enabled", + BatteryExternalStatsWorker.UPDATE_RADIO | BatteryExternalStatsWorker.UPDATE_WIFI); } @Override @@ -1028,9 +971,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub return; } - synchronized (mStats) { - mStats.updateBluetoothStateLocked(info); - } + mStats.updateBluetoothStateLocked(info); } @Override @@ -1057,28 +998,29 @@ public final class BatteryStatsService extends IBatteryStats.Stub // BatteryService calls us here and we may update external state. It would be wrong // to block such a low level service like BatteryService on external stats like WiFi. - mHandler.post(new Runnable() { - @Override - public void run() { - synchronized (mStats) { - final boolean onBattery = plugType == BatteryStatsImpl.BATTERY_PLUGGED_NONE; - if (mStats.isOnBattery() == onBattery) { - // The battery state has not changed, so we don't need to sync external - // stats immediately. - mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt, - chargeUAh, chargeFullUAh); - return; - } + mWorker.scheduleRunnable(() -> { + synchronized (mStats) { + final boolean onBattery = plugType == BatteryStatsImpl.BATTERY_PLUGGED_NONE; + if (mStats.isOnBattery() == onBattery) { + // The battery state has not changed, so we don't need to sync external + // stats immediately. + mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt, + chargeUAh, chargeFullUAh); + return; } + } - // Sync external stats first as the battery has changed states. If we don't sync - // immediately here, we may not collect the relevant data later. - updateExternalStatsSync("battery-state", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + // Sync external stats first as the battery has changed states. If we don't sync + // before changing the state, we may not collect the relevant data later. + // Order here is guaranteed since we're scheduling from the same thread and we are + // using a single threaded executor. + mWorker.scheduleSync("battery-state", BatteryExternalStatsWorker.UPDATE_ALL); + mWorker.scheduleRunnable(() -> { synchronized (mStats) { mStats.setBatteryStateLocked(status, health, plugType, level, temp, volt, chargeUAh, chargeFullUAh); } - } + }); }); } @@ -1260,9 +1202,10 @@ public final class BatteryStatsService extends IBatteryStats.Stub pw.println("Battery stats reset."); noOutput = true; } - updateExternalStatsSync("dump", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + mWorker.scheduleSync("dump", BatteryExternalStatsWorker.UPDATE_ALL); } else if ("--write".equals(arg)) { - updateExternalStatsSync("dump", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("dump", + BatteryExternalStatsWorker.UPDATE_ALL)); synchronized (mStats) { mStats.writeSyncLocked(); pw.println("Battery stats written."); @@ -1326,7 +1269,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub flags |= BatteryStats.DUMP_DEVICE_WIFI_ONLY; } // Fetch data from external sources and update the BatteryStatsImpl object with them. - updateExternalStatsSync("dump", BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("dump", BatteryExternalStatsWorker.UPDATE_ALL)); } finally { Binder.restoreCallingIdentity(ident); } @@ -1356,7 +1299,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub in.unmarshall(raw, 0, raw.length); in.setDataPosition(0); BatteryStatsImpl checkinStats = new BatteryStatsImpl( - null, mStats.mHandler, null); + null, mStats.mHandler, null, mUserManagerUserInfoProvider); checkinStats.readSummaryFromParcel(in); in.recycle(); checkinStats.dumpCheckinLocked(mContext, pw, apps, flags, @@ -1391,229 +1334,6 @@ public final class BatteryStatsService extends IBatteryStats.Stub } } - private WifiActivityEnergyInfo extractDelta(WifiActivityEnergyInfo latest) { - final long timePeriodMs = latest.mTimestamp - mLastInfo.mTimestamp; - final long lastIdleMs = mLastInfo.mControllerIdleTimeMs; - final long lastTxMs = mLastInfo.mControllerTxTimeMs; - final long lastRxMs = mLastInfo.mControllerRxTimeMs; - final long lastEnergy = mLastInfo.mControllerEnergyUsed; - - // 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(); - - final long txTimeMs = latest.mControllerTxTimeMs - lastTxMs; - final long rxTimeMs = latest.mControllerRxTimeMs - lastRxMs; - final long idleTimeMs = latest.mControllerIdleTimeMs - lastIdleMs; - - if (txTimeMs < 0 || rxTimeMs < 0) { - // The stats were reset by the WiFi system (which is why our delta is negative). - // Returns the unaltered stats. - delta.mControllerEnergyUsed = latest.mControllerEnergyUsed; - delta.mControllerRxTimeMs = latest.mControllerRxTimeMs; - delta.mControllerTxTimeMs = latest.mControllerTxTimeMs; - delta.mControllerIdleTimeMs = latest.mControllerIdleTimeMs; - Slog.v(TAG, "WiFi energy data was reset, new WiFi energy data is " + delta); - } else { - final long totalActiveTimeMs = txTimeMs + rxTimeMs; - long maxExpectedIdleTimeMs; - if (totalActiveTimeMs > timePeriodMs) { - // Cap the max idle time at zero since the active time consumed the whole time - maxExpectedIdleTimeMs = 0; - if (totalActiveTimeMs > timePeriodMs + MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS) { - StringBuilder sb = new StringBuilder(); - sb.append("Total Active time "); - TimeUtils.formatDuration(totalActiveTimeMs, sb); - sb.append(" is longer than sample period "); - TimeUtils.formatDuration(timePeriodMs, sb); - sb.append(".\n"); - sb.append("Previous WiFi snapshot: ").append("idle="); - TimeUtils.formatDuration(lastIdleMs, sb); - sb.append(" rx="); - TimeUtils.formatDuration(lastRxMs, sb); - sb.append(" tx="); - TimeUtils.formatDuration(lastTxMs, sb); - sb.append(" e=").append(lastEnergy); - sb.append("\n"); - sb.append("Current WiFi snapshot: ").append("idle="); - TimeUtils.formatDuration(latest.mControllerIdleTimeMs, sb); - sb.append(" rx="); - TimeUtils.formatDuration(latest.mControllerRxTimeMs, sb); - sb.append(" tx="); - TimeUtils.formatDuration(latest.mControllerTxTimeMs, sb); - sb.append(" e=").append(latest.mControllerEnergyUsed); - Slog.wtf(TAG, sb.toString()); - } - } else { - maxExpectedIdleTimeMs = timePeriodMs - totalActiveTimeMs; - } - // These times seem to be the most reliable. - delta.mControllerTxTimeMs = txTimeMs; - delta.mControllerRxTimeMs = rxTimeMs; - // 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); - } - - mLastInfo = latest; - return delta; - } - - /** - * Helper method to extract the Parcelable controller info from a - * SynchronousResultReceiver. - */ - private static T awaitControllerInfo( - @Nullable SynchronousResultReceiver receiver) throws TimeoutException { - if (receiver == null) { - return null; - } - - final SynchronousResultReceiver.Result result = - receiver.awaitResult(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS); - if (result.bundle != null) { - // This is the final destination for the Bundle. - result.bundle.setDefusable(true); - - final T data = result.bundle.getParcelable(BatteryStats.RESULT_RECEIVER_CONTROLLER_KEY); - if (data != null) { - return data; - } - } - Slog.e(TAG, "no controller energy info supplied"); - return null; - } - - /** - * Fetches data from external sources (WiFi controller, bluetooth chipset) and updates - * batterystats with that information. - * - * We first grab a lock specific to this method, then once all the data has been collected, - * we grab the mStats lock and update the data. - * - * @param reason The reason why this collection was requested. Useful for debugging. - * @param updateFlags Which external stats to update. Can be a combination of - * {@link BatteryStatsImpl.ExternalStatsSync#UPDATE_CPU}, - * {@link BatteryStatsImpl.ExternalStatsSync#UPDATE_RADIO}, - * {@link BatteryStatsImpl.ExternalStatsSync#UPDATE_WIFI}, - * and {@link BatteryStatsImpl.ExternalStatsSync#UPDATE_BT}. - */ - void updateExternalStatsSync(final String reason, int updateFlags) { - SynchronousResultReceiver wifiReceiver = null; - SynchronousResultReceiver bluetoothReceiver = null; - SynchronousResultReceiver modemReceiver = null; - - if (DBG) Slog.d(TAG, "begin updateExternalStatsSync reason=" + reason); - synchronized (mExternalStatsLock) { - if (mContext == null) { - // Don't do any work yet. - if (DBG) Slog.d(TAG, "end updateExternalStatsSync"); - return; - } - - if ((updateFlags & UPDATE_WIFI) != 0) { - if (mWifiManager == null) { - mWifiManager = IWifiManager.Stub.asInterface( - ServiceManager.getService(Context.WIFI_SERVICE)); - } - - if (mWifiManager != null) { - try { - wifiReceiver = new SynchronousResultReceiver(); - mWifiManager.requestActivityInfo(wifiReceiver); - } catch (RemoteException e) { - // Oh well. - } - } - } - - if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_BT) != 0) { - final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); - if (adapter != null) { - bluetoothReceiver = new SynchronousResultReceiver(); - adapter.requestControllerActivityEnergyInfo(bluetoothReceiver); - } - } - - if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_RADIO) != 0) { - if (mTelephony == null) { - mTelephony = TelephonyManager.from(mContext); - } - - if (mTelephony != null) { - modemReceiver = new SynchronousResultReceiver(); - mTelephony.requestModemActivityInfo(modemReceiver); - } - } - - WifiActivityEnergyInfo wifiInfo = null; - BluetoothActivityEnergyInfo bluetoothInfo = null; - ModemActivityInfo modemInfo = null; - try { - wifiInfo = awaitControllerInfo(wifiReceiver); - } catch (TimeoutException e) { - Slog.w(TAG, "Timeout reading wifi stats"); - } - - try { - bluetoothInfo = awaitControllerInfo(bluetoothReceiver); - } catch (TimeoutException e) { - Slog.w(TAG, "Timeout reading bt stats"); - } - - try { - modemInfo = awaitControllerInfo(modemReceiver); - } catch (TimeoutException e) { - Slog.w(TAG, "Timeout reading modem stats"); - } - - synchronized (mStats) { - mStats.addHistoryEventLocked( - SystemClock.elapsedRealtime(), - SystemClock.uptimeMillis(), - BatteryStats.HistoryItem.EVENT_COLLECT_EXTERNAL_STATS, - reason, 0); - - if ((updateFlags & UPDATE_CPU) != 0) { - mStats.updateCpuTimeLocked(true /* updateCpuFreqData */); - } - mStats.updateKernelWakelocksLocked(); - mStats.updateKernelMemoryBandwidthLocked(); - - if (bluetoothInfo != null) { - if (bluetoothInfo.isValid()) { - mStats.updateBluetoothStateLocked(bluetoothInfo); - } else { - Slog.e(TAG, "bluetooth info is invalid: " + bluetoothInfo); - } - } - } - - if (wifiInfo != null) { - if (wifiInfo.isValid()) { - mStats.updateWifiState(extractDelta(wifiInfo)); - } else { - Slog.e(TAG, "wifi info is invalid: " + wifiInfo); - } - } - - if (modemInfo != null) { - if (modemInfo.isValid()) { - mStats.updateMobileRadioState(modemInfo); - } else { - Slog.e(TAG, "modem info is invalid: " + modemInfo); - } - } - } - if (DBG) Slog.d(TAG, "end updateExternalStatsSync"); - } - /** * Gets a snapshot of the system health for a particular uid. */ @@ -1625,8 +1345,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub } long ident = Binder.clearCallingIdentity(); try { - updateExternalStatsSync("get-health-stats-for-uid", - BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("get-health-stats-for-uids", + BatteryExternalStatsWorker.UPDATE_ALL)); synchronized (mStats) { return getHealthStatsForUidLocked(requestUid); } @@ -1650,8 +1370,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub long ident = Binder.clearCallingIdentity(); int i=-1; try { - updateExternalStatsSync("get-health-stats-for-uids", - BatteryStatsImpl.ExternalStatsSync.UPDATE_ALL); + awaitUninterruptibly(mWorker.scheduleSync("get-health-stats-for-uids", + BatteryExternalStatsWorker.UPDATE_ALL)); synchronized (mStats) { final int N = requestUids.length; final HealthStatsParceler[] results = new HealthStatsParceler[N]; diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index da196e2c7902f6b8c30179c72cdf88363c0469c2..d83545491d2d23ad77cf1297f58e8775672fe451 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -1445,20 +1445,19 @@ public final class BroadcastQueue { r.receiverTime = now; r.anrCount++; - // Current receiver has passed its expiration date. - if (r.nextReceiver <= 0) { - Slog.w(TAG, "Timeout on receiver with nextReceiver <= 0"); - return; - } - ProcessRecord app = null; String anrMessage = null; - Object curReceiver = r.receivers.get(r.nextReceiver-1); - r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT; - Slog.w(TAG, "Receiver during timeout: " + curReceiver); + Object curReceiver; + if (r.nextReceiver > 0) { + curReceiver = r.receivers.get(r.nextReceiver-1); + r.delivery[r.nextReceiver-1] = BroadcastRecord.DELIVERY_TIMEOUT; + } else { + curReceiver = r.curReceiver; + } + Slog.w(TAG, "Receiver during timeout of " + r + " : " + curReceiver); logBroadcastReceiverDiscardLocked(r); - if (curReceiver instanceof BroadcastFilter) { + if (curReceiver != null && curReceiver instanceof BroadcastFilter) { BroadcastFilter bf = (BroadcastFilter)curReceiver; if (bf.receiverList.pid != 0 && bf.receiverList.pid != ActivityManagerService.MY_PID) { @@ -1498,25 +1497,29 @@ public final class BroadcastQueue { else return x; } - private final void addBroadcastToHistoryLocked(BroadcastRecord r) { - if (r.callingUid < 0) { + private final void addBroadcastToHistoryLocked(BroadcastRecord original) { + if (original.callingUid < 0) { // This was from a registerReceiver() call; ignore it. return; } - r.finishTime = SystemClock.uptimeMillis(); + original.finishTime = SystemClock.uptimeMillis(); if (Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER)) { Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, - createBroadcastTraceTitle(r, BroadcastRecord.DELIVERY_DELIVERED), - System.identityHashCode(r)); + createBroadcastTraceTitle(original, BroadcastRecord.DELIVERY_DELIVERED), + System.identityHashCode(original)); } - mBroadcastHistory[mHistoryNext] = r; + // Note sometimes (only for sticky broadcasts?) we reuse BroadcastRecords, + // So don't change the incoming record directly. + final BroadcastRecord historyRecord = original.maybeStripForHistory(); + + mBroadcastHistory[mHistoryNext] = historyRecord; mHistoryNext = ringAdvance(mHistoryNext, 1, MAX_BROADCAST_HISTORY); - mBroadcastSummaryHistory[mSummaryHistoryNext] = r.intent; - mSummaryHistoryEnqueueTime[mSummaryHistoryNext] = r.enqueueClockTime; - mSummaryHistoryDispatchTime[mSummaryHistoryNext] = r.dispatchClockTime; + mBroadcastSummaryHistory[mSummaryHistoryNext] = historyRecord.intent; + mSummaryHistoryEnqueueTime[mSummaryHistoryNext] = historyRecord.enqueueClockTime; + mSummaryHistoryDispatchTime[mSummaryHistoryNext] = historyRecord.dispatchClockTime; mSummaryHistoryFinishTime[mSummaryHistoryNext] = System.currentTimeMillis(); mSummaryHistoryNext = ringAdvance(mSummaryHistoryNext, 1, MAX_BROADCAST_SUMMARY_HISTORY); } diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java index 7764be794c19600d0f607fa9a8543a6e1f11d0df..6bc0744fe9a4af20df2ba817a1101cca5335aacd 100644 --- a/services/core/java/com/android/server/am/BroadcastRecord.java +++ b/services/core/java/com/android/server/am/BroadcastRecord.java @@ -248,6 +248,55 @@ final class BroadcastRecord extends Binder { state = IDLE; } + /** + * Copy constructor which takes a different intent. + * Only used by {@link #maybeStripForHistory}. + */ + private BroadcastRecord(BroadcastRecord from, Intent newIntent) { + intent = newIntent; + targetComp = newIntent.getComponent(); + + callerApp = from.callerApp; + callerPackage = from.callerPackage; + callingPid = from.callingPid; + callingUid = from.callingUid; + callerInstantApp = from.callerInstantApp; + ordered = from.ordered; + sticky = from.sticky; + initialSticky = from.initialSticky; + userId = from.userId; + resolvedType = from.resolvedType; + requiredPermissions = from.requiredPermissions; + appOp = from.appOp; + options = from.options; + receivers = from.receivers; + delivery = from.delivery; + resultTo = from.resultTo; + enqueueClockTime = from.enqueueClockTime; + dispatchTime = from.dispatchTime; + dispatchClockTime = from.dispatchClockTime; + receiverTime = from.receiverTime; + finishTime = from.finishTime; + resultCode = from.resultCode; + resultData = from.resultData; + resultExtras = from.resultExtras; + resultAbort = from.resultAbort; + nextReceiver = from.nextReceiver; + receiver = from.receiver; + state = from.state; + anrCount = from.anrCount; + manifestCount = from.manifestCount; + manifestSkipCount = from.manifestSkipCount; + queue = from.queue; + } + + public BroadcastRecord maybeStripForHistory() { + if (!intent.canStripForHistory()) { + return this; + } + return new BroadcastRecord(this, intent.maybeStripForHistory()); + } + boolean cleanupDisabledPackageReceiversLocked( String packageName, Set filterByClasses, int userId, boolean doit) { if ((userId != UserHandle.USER_ALL && this.userId != userId) || receivers == null) { diff --git a/services/core/java/com/android/server/am/KeyguardController.java b/services/core/java/com/android/server/am/KeyguardController.java index d10f9fb44f2ae6dcef05be18f9f2f64d5de33e56..85961135d84f1a664b7c706e1508b13500e47f57 100644 --- a/services/core/java/com/android/server/am/KeyguardController.java +++ b/services/core/java/com/android/server/am/KeyguardController.java @@ -18,6 +18,8 @@ package com.android.server.am; import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; +import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_NO_WINDOW_ANIMATIONS; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE; import static android.view.WindowManagerPolicy.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER; @@ -30,9 +32,9 @@ import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AW import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_GOING_AWAY; import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_OCCLUDE; import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_UNOCCLUDE; -import static com.android.server.wm.AppTransition.TRANSIT_NONE; import static com.android.server.wm.AppTransition.TRANSIT_UNSET; +import android.app.ActivityManagerInternal.SleepToken; import android.os.IBinder; import android.os.RemoteException; import android.os.Trace; @@ -64,6 +66,8 @@ class KeyguardController { private ActivityRecord mDismissingKeyguardActivity; private int mBeforeUnoccludeTransit; private int mVisibilityTransactionDepth; + private SleepToken mSleepToken; + private int mSecondaryDisplayShowing = INVALID_DISPLAY; KeyguardController(ActivityManagerService service, ActivityStackSupervisor stackSupervisor) { @@ -76,10 +80,12 @@ class KeyguardController { } /** - * @return true if Keyguard is showing, not going away, and not being occluded, false otherwise + * @return true if Keyguard is showing, not going away, and not being occluded on the given + * display, false otherwise */ - boolean isKeyguardShowing() { - return mKeyguardShowing && !mKeyguardGoingAway && !mOccluded; + boolean isKeyguardShowing(int displayId) { + return mKeyguardShowing && !mKeyguardGoingAway && + (displayId == DEFAULT_DISPLAY ? !mOccluded : displayId == mSecondaryDisplayShowing); } /** @@ -92,18 +98,22 @@ class KeyguardController { /** * Update the Keyguard showing state. */ - void setKeyguardShown(boolean showing) { - if (showing == mKeyguardShowing) { + void setKeyguardShown(boolean showing, int secondaryDisplayShowing) { + boolean showingChanged = showing != mKeyguardShowing; + if (!showingChanged && secondaryDisplayShowing == mSecondaryDisplayShowing) { return; } mKeyguardShowing = showing; - dismissDockedStackIfNeeded(); - if (showing) { - setKeyguardGoingAway(false); - mDismissalRequested = false; + mSecondaryDisplayShowing = secondaryDisplayShowing; + if (showingChanged) { + dismissDockedStackIfNeeded(); + if (showing) { + setKeyguardGoingAway(false); + mDismissalRequested = false; + } } mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); - mService.updateSleepIfNeededLocked(); + updateKeyguardSleepToken(); } /** @@ -123,7 +133,7 @@ class KeyguardController { mWindowManager.prepareAppTransition(TRANSIT_KEYGUARD_GOING_AWAY, false /* alwaysKeepCurrent */, convertTransitFlags(flags), false /* forceOverride */); - mService.updateSleepIfNeededLocked(); + updateKeyguardSleepToken(); // Some stack visibility might change (e.g. docked stack) mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); @@ -145,6 +155,13 @@ class KeyguardController { return; } Slog.i(TAG, "Activity requesting to dismiss Keyguard: " + activityRecord); + + // If the client has requested to dismiss the keyguard and the Activity has the flag to + // turn the screen on, wakeup the screen if it's the top Activity. + if (activityRecord.getTurnScreenOnFlag() && activityRecord.isTopRunningActivity()) { + mStackSupervisor.wakeUp("dismissKeyguard"); + } + mWindowManager.dismissKeyguard(callback); } @@ -257,7 +274,7 @@ class KeyguardController { try { mWindowManager.prepareAppTransition(resolveOccludeTransit(), false /* alwaysKeepCurrent */, 0 /* flags */, true /* forceOverride */); - mService.updateSleepIfNeededLocked(); + updateKeyguardSleepToken(); mStackSupervisor.ensureActivitiesVisibleLocked(null, 0, !PRESERVE_WINDOWS); mWindowManager.executeAppTransition(); } finally { @@ -327,6 +344,15 @@ class KeyguardController { } } + private void updateKeyguardSleepToken() { + if (mSleepToken == null && isKeyguardShowing(DEFAULT_DISPLAY)) { + mSleepToken = mService.acquireSleepToken("Keyguard", DEFAULT_DISPLAY); + } else if (mSleepToken != null && !isKeyguardShowing(DEFAULT_DISPLAY)) { + mSleepToken.release(); + mSleepToken = null; + } + } + void dump(PrintWriter pw, String prefix) { pw.println(prefix + "KeyguardController:"); pw.println(prefix + " mKeyguardShowing=" + mKeyguardShowing); diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java index cad5dcf6b5653353b874c6bf139922a0e41da5df..ee593866da6823d92061e1dc102506e36ea6a645 100644 --- a/services/core/java/com/android/server/am/PendingIntentRecord.java +++ b/services/core/java/com/android/server/am/PendingIntentRecord.java @@ -20,7 +20,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import android.app.ActivityManager; -import android.app.IActivityContainer; import android.content.IIntentSender; import android.content.IIntentReceiver; import android.app.PendingIntent; @@ -37,7 +36,6 @@ import android.util.Slog; import android.util.TimeUtils; import com.android.internal.os.IResultReceiver; -import com.android.server.am.ActivityStackSupervisor.ActivityContainer; import java.io.PrintWriter; import java.lang.ref.WeakReference; @@ -234,30 +232,23 @@ final class PendingIntentRecord extends IIntentSender.Stub { public void send(int code, Intent intent, String resolvedType, IBinder whitelistToken, IIntentReceiver finishedReceiver, String requiredPermission, Bundle options) { sendInner(code, intent, resolvedType, whitelistToken, finishedReceiver, - requiredPermission, null, null, 0, 0, 0, options, null); + requiredPermission, null, null, 0, 0, 0, options); } public int sendWithResult(int code, Intent intent, String resolvedType, IBinder whitelistToken, IIntentReceiver finishedReceiver, String requiredPermission, Bundle options) { return sendInner(code, intent, resolvedType, whitelistToken, finishedReceiver, - requiredPermission, null, null, 0, 0, 0, options, null); + requiredPermission, null, null, 0, 0, 0, options); } int sendInner(int code, Intent intent, String resolvedType, IBinder whitelistToken, IIntentReceiver finishedReceiver, String requiredPermission, IBinder resultTo, String resultWho, int requestCode, - int flagsMask, int flagsValues, Bundle options, IActivityContainer container) { + int flagsMask, int flagsValues, Bundle options) { if (intent != null) intent.setDefusable(true); if (options != null) options.setDefusable(true); synchronized (owner) { - final ActivityContainer activityContainer = (ActivityContainer)container; - if (activityContainer != null && activityContainer.mParentActivity != null && - activityContainer.mParentActivity.state - != ActivityStack.ActivityState.RESUMED) { - // Cannot start a child activity if the parent is not resumed. - return ActivityManager.START_CANCELED; - } if (!canceled) { sent = true; if ((key.flags&PendingIntent.FLAG_ONE_SHOT) != 0) { @@ -346,7 +337,7 @@ final class PendingIntentRecord extends IIntentSender.Stub { } else { owner.startActivityInPackage(uid, key.packageName, finalIntent, resolvedType, resultTo, resultWho, requestCode, 0, - options, userId, container, null, "PendingIntentRecord"); + options, userId, null, "PendingIntentRecord"); } } catch (RuntimeException e) { Slog.w(TAG, "Unable to send startActivity intent", e); diff --git a/services/core/java/com/android/server/am/PinnedActivityStack.java b/services/core/java/com/android/server/am/PinnedActivityStack.java index 2010c24000e83ff48c2ff18e82fcaa38149b0904..a601ee1c0c89c8c2833e41d158956908a008dcf0 100644 --- a/services/core/java/com/android/server/am/PinnedActivityStack.java +++ b/services/core/java/com/android/server/am/PinnedActivityStack.java @@ -20,7 +20,6 @@ import android.app.RemoteAction; import android.content.res.Configuration; import android.graphics.Rect; -import com.android.server.am.ActivityStackSupervisor.ActivityContainer; import com.android.server.wm.PinnedStackWindowController; import com.android.server.wm.PinnedStackWindowListener; @@ -33,9 +32,9 @@ import java.util.List; class PinnedActivityStack extends ActivityStack implements PinnedStackWindowListener { - PinnedActivityStack(ActivityContainer activityContainer, - RecentTasks recentTasks, boolean onTop) { - super(activityContainer, recentTasks, onTop); + PinnedActivityStack(ActivityStackSupervisor.ActivityDisplay display, int stackId, + ActivityStackSupervisor supervisor, RecentTasks recentTasks, boolean onTop) { + super(display, stackId, supervisor, recentTasks, onTop); } @Override @@ -92,15 +91,16 @@ class PinnedActivityStack extends ActivityStack return mWindowContainerController.deferScheduleMultiWindowModeChanged(); } - public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds) { + public void updatePictureInPictureModeForPinnedStackAnimation(Rect targetStackBounds, + boolean forceUpdate) { // It is guaranteed that the activities requiring the update will be in the pinned stack at // this point (either reparented before the animation into PiP, or before reparenting after // the animation out of PiP) synchronized(this) { ArrayList tasks = getAllTasks(); for (int i = 0; i < tasks.size(); i++ ) { - mStackSupervisor.scheduleUpdatePictureInPictureModeIfNeeded(tasks.get(i), - targetStackBounds, true /* immediate */); + mStackSupervisor.updatePictureInPictureMode(tasks.get(i), targetStackBounds, + forceUpdate); } } } diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index 53c7f845f2f09b51a311f4f85be5381433f9ba8f..411e973de032a3a9c77f392049da9ea3d95e8d05 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -143,7 +143,7 @@ final class ProcessRecord { ActiveInstrumentation instr;// Set to currently active instrumentation running in process boolean usingWrapper; // Set to true when process was launched with a wrapper attached final ArraySet curReceivers = new ArraySet();// receivers currently running in the app - long lastWakeTime; // How long proc held wake lock at last check + long whenUnimportant; // When (uptime) the process last became unimportant long lastCpuTime; // How long proc has run CPU at last check long curCpuTime; // How long proc has run CPU most recently long lastRequestedGc; // When we last asked the app to do a gc @@ -204,7 +204,7 @@ final class ProcessRecord { boolean whitelistManager; void dump(PrintWriter pw, String prefix) { - final long now = SystemClock.uptimeMillis(); + final long nowUptime = SystemClock.uptimeMillis(); pw.print(prefix); pw.print("user #"); pw.print(userId); pw.print(" uid="); pw.print(info.uid); @@ -254,11 +254,11 @@ final class ProcessRecord { pw.print(prefix); pw.print("pid="); pw.print(pid); pw.print(" starting="); pw.println(starting); pw.print(prefix); pw.print("lastActivityTime="); - TimeUtils.formatDuration(lastActivityTime, now, pw); + TimeUtils.formatDuration(lastActivityTime, nowUptime, pw); pw.print(" lastPssTime="); - TimeUtils.formatDuration(lastPssTime, now, pw); + TimeUtils.formatDuration(lastPssTime, nowUptime, pw); pw.print(" nextPssTime="); - TimeUtils.formatDuration(nextPssTime, now, pw); + TimeUtils.formatDuration(nextPssTime, nowUptime, pw); pw.println(); pw.print(prefix); pw.print("adjSeq="); pw.print(adjSeq); pw.print(" lruSeq="); pw.print(lruSeq); @@ -294,7 +294,7 @@ final class ProcessRecord { pw.print(" pssProcState="); pw.print(pssProcState); pw.print(" setProcState="); pw.print(setProcState); pw.print(" lastStateTime="); - TimeUtils.formatDuration(lastStateTime, now, pw); + TimeUtils.formatDuration(lastStateTime, nowUptime, pw); pw.println(); if (hasShownUi || pendingUiClean || hasAboveClient || treatLikeActivity) { pw.print(prefix); pw.print("hasShownUi="); pw.print(hasShownUi); @@ -334,29 +334,26 @@ final class ProcessRecord { } if (lastProviderTime > 0) { pw.print(prefix); pw.print("lastProviderTime="); - TimeUtils.formatDuration(lastProviderTime, now, pw); + TimeUtils.formatDuration(lastProviderTime, nowUptime, pw); pw.println(); } if (hasStartedServices) { pw.print(prefix); pw.print("hasStartedServices="); pw.println(hasStartedServices); } - if (setProcState >= ActivityManager.PROCESS_STATE_SERVICE) { - long wtime; - synchronized (mBatteryStats) { - wtime = mBatteryStats.getProcessWakeTime(info.uid, - pid, SystemClock.elapsedRealtime()); - } - pw.print(prefix); pw.print("lastWakeTime="); pw.print(lastWakeTime); - pw.print(" timeUsed="); - TimeUtils.formatDuration(wtime-lastWakeTime, pw); pw.println(""); + if (setProcState > ActivityManager.PROCESS_STATE_SERVICE) { pw.print(prefix); pw.print("lastCpuTime="); pw.print(lastCpuTime); - pw.print(" timeUsed="); - TimeUtils.formatDuration(curCpuTime-lastCpuTime, pw); pw.println(""); + if (lastCpuTime > 0) { + pw.print(" timeUsed="); + TimeUtils.formatDuration(curCpuTime - lastCpuTime, pw); + } + pw.print(" whenUnimportant="); + TimeUtils.formatDuration(whenUnimportant - nowUptime, pw); + pw.println(); } pw.print(prefix); pw.print("lastRequestedGc="); - TimeUtils.formatDuration(lastRequestedGc, now, pw); + TimeUtils.formatDuration(lastRequestedGc, nowUptime, pw); pw.print(" lastLowMemory="); - TimeUtils.formatDuration(lastLowMemory, now, pw); + TimeUtils.formatDuration(lastLowMemory, nowUptime, pw); pw.print(" reportLowMemory="); pw.println(reportLowMemory); if (killed || killedByAm || waitingToKill != null) { pw.print(prefix); pw.print("killed="); pw.print(killed); diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 027dc0862e9de49a77d225386446a6938b9dee44..16995e50fdbf9c2f050c34ee4075f02b7d817286 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -33,6 +33,7 @@ import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.net.Uri; import android.os.Binder; +import android.os.Build; import android.os.IBinder; import android.os.RemoteException; import android.os.SystemClock; @@ -517,6 +518,22 @@ final class ServiceRecord extends Binder { } catch (PackageManager.NameNotFoundException e) { } } + if (nm.getNotificationChannel(localPackageName, appUid, + localForegroundNoti.getChannelId()) == null) { + int targetSdkVersion = Build.VERSION_CODES.O_MR1; + try { + final ApplicationInfo applicationInfo = + ams.mContext.getPackageManager().getApplicationInfoAsUser( + appInfo.packageName, 0, userId); + targetSdkVersion = applicationInfo.targetSdkVersion; + } catch (PackageManager.NameNotFoundException e) { + } + if (targetSdkVersion >= Build.VERSION_CODES.O_MR1) { + throw new RuntimeException( + "invalid channel for service notification: " + + foregroundNoti); + } + } if (localForegroundNoti.getSmallIcon() == null) { // Notifications whose icon is 0 are defined to not show // a notification, silently ignoring it. We don't want to diff --git a/services/core/java/com/android/server/am/TaskChangeNotificationController.java b/services/core/java/com/android/server/am/TaskChangeNotificationController.java index 82971696d670507667f2ac9e2fb0c79073914007..6a986bb8a68430e255143cce6ef2a87eb1071654 100644 --- a/services/core/java/com/android/server/am/TaskChangeNotificationController.java +++ b/services/core/java/com/android/server/am/TaskChangeNotificationController.java @@ -95,7 +95,7 @@ class TaskChangeNotificationController { }; private final TaskStackConsumer mNotifyActivityPinned = (l, m) -> { - l.onActivityPinned((String) m.obj, m.arg1); + l.onActivityPinned((String) m.obj, m.arg1, m.arg2); }; private final TaskStackConsumer mNotifyActivityUnpinned = (l, m) -> { @@ -278,10 +278,10 @@ class TaskChangeNotificationController { } /** Notifies all listeners when an Activity is pinned. */ - void notifyActivityPinned(String packageName, int taskId) { + void notifyActivityPinned(String packageName, int userId, int taskId) { mHandler.removeMessages(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG); final Message msg = mHandler.obtainMessage(NOTIFY_ACTIVITY_PINNED_LISTENERS_MSG, - taskId, 0, packageName); + userId, taskId, packageName); forAllLocalListeners(mNotifyActivityPinned, msg); msg.sendToTarget(); } diff --git a/services/core/java/com/android/server/am/TaskPersister.java b/services/core/java/com/android/server/am/TaskPersister.java index e56b09d891c13e6792fb3e3bbcb18aff91faf640..74c4826f583b7087b902ecb85200898a9d927fd6 100644 --- a/services/core/java/com/android/server/am/TaskPersister.java +++ b/services/core/java/com/android/server/am/TaskPersister.java @@ -679,100 +679,109 @@ public class TaskPersister { } writeTaskIdsFiles(); - // If mNextWriteTime, then don't delay between each call to saveToXml(). - final WriteQueueItem item; - synchronized (TaskPersister.this) { - if (mNextWriteTime != FLUSH_QUEUE) { - // The next write we don't have to wait so long. - mNextWriteTime = SystemClock.uptimeMillis() + INTER_WRITE_DELAY_MS; - if (DEBUG) Slog.d(TAG, "Next write time may be in " + - INTER_WRITE_DELAY_MS + " msec. (" + mNextWriteTime + ")"); - } - - while (mWriteQueue.isEmpty()) { - if (mNextWriteTime != 0) { - mNextWriteTime = 0; // idle. - TaskPersister.this.notifyAll(); // wake up flush() if needed. - } - try { - if (DEBUG) Slog.d(TAG, "LazyTaskWriter: waiting indefinitely."); - TaskPersister.this.wait(); - } catch (InterruptedException e) { - } - // Invariant: mNextWriteTime is either FLUSH_QUEUE or PRE_WRITE_DELAY_MS - // from now. - } - item = mWriteQueue.remove(0); - - long now = SystemClock.uptimeMillis(); - if (DEBUG) Slog.d(TAG, "LazyTaskWriter: now=" + now + " mNextWriteTime=" + - mNextWriteTime + " mWriteQueue.size=" + mWriteQueue.size()); - while (now < mNextWriteTime) { - try { - if (DEBUG) Slog.d(TAG, "LazyTaskWriter: waiting " + - (mNextWriteTime - now)); - TaskPersister.this.wait(mNextWriteTime - now); - } catch (InterruptedException e) { - } - now = SystemClock.uptimeMillis(); - } + processNextItem(); + } + } - // Got something to do. + private void processNextItem() { + // This part is extracted into a method so that the GC can clearly see the end of the + // scope of the variable 'item'. If this part was in the loop above, the last item + // it processed would always "leak". + // See https://b.corp.google.com/issues/64438652#comment7 + + // If mNextWriteTime, then don't delay between each call to saveToXml(). + final WriteQueueItem item; + synchronized (TaskPersister.this) { + if (mNextWriteTime != FLUSH_QUEUE) { + // The next write we don't have to wait so long. + mNextWriteTime = SystemClock.uptimeMillis() + INTER_WRITE_DELAY_MS; + if (DEBUG) Slog.d(TAG, "Next write time may be in " + + INTER_WRITE_DELAY_MS + " msec. (" + mNextWriteTime + ")"); } - if (item instanceof ImageWriteQueueItem) { - ImageWriteQueueItem imageWriteQueueItem = (ImageWriteQueueItem) item; - final String filePath = imageWriteQueueItem.mFilePath; - if (!createParentDirectory(filePath)) { - Slog.e(TAG, "Error while creating images directory for file: " + filePath); - continue; + while (mWriteQueue.isEmpty()) { + if (mNextWriteTime != 0) { + mNextWriteTime = 0; // idle. + TaskPersister.this.notifyAll(); // wake up flush() if needed. } - final Bitmap bitmap = imageWriteQueueItem.mImage; - if (DEBUG) Slog.d(TAG, "writing bitmap: filename=" + filePath); - FileOutputStream imageFile = null; try { - imageFile = new FileOutputStream(new File(filePath)); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, imageFile); - } catch (Exception e) { - Slog.e(TAG, "saveImage: unable to save " + filePath, e); - } finally { - IoUtils.closeQuietly(imageFile); + if (DEBUG) Slog.d(TAG, "LazyTaskWriter: waiting indefinitely."); + TaskPersister.this.wait(); + } catch (InterruptedException e) { } - } else if (item instanceof TaskWriteQueueItem) { - // Write out one task. - StringWriter stringWriter = null; - TaskRecord task = ((TaskWriteQueueItem) item).mTask; - if (DEBUG) Slog.d(TAG, "Writing task=" + task); - synchronized (mService) { - if (task.inRecents) { - // Still there. - try { - if (DEBUG) Slog.d(TAG, "Saving task=" + task); - stringWriter = saveToXml(task); - } catch (IOException e) { - } catch (XmlPullParserException e) { - } - } + // Invariant: mNextWriteTime is either FLUSH_QUEUE or PRE_WRITE_DELAY_MS + // from now. + } + item = mWriteQueue.remove(0); + + long now = SystemClock.uptimeMillis(); + if (DEBUG) Slog.d(TAG, "LazyTaskWriter: now=" + now + " mNextWriteTime=" + + mNextWriteTime + " mWriteQueue.size=" + mWriteQueue.size()); + while (now < mNextWriteTime) { + try { + if (DEBUG) Slog.d(TAG, "LazyTaskWriter: waiting " + + (mNextWriteTime - now)); + TaskPersister.this.wait(mNextWriteTime - now); + } catch (InterruptedException e) { } - if (stringWriter != null) { - // Write out xml file while not holding mService lock. - FileOutputStream file = null; - AtomicFile atomicFile = null; + now = SystemClock.uptimeMillis(); + } + + // Got something to do. + } + + if (item instanceof ImageWriteQueueItem) { + ImageWriteQueueItem imageWriteQueueItem = (ImageWriteQueueItem) item; + final String filePath = imageWriteQueueItem.mFilePath; + if (!createParentDirectory(filePath)) { + Slog.e(TAG, "Error while creating images directory for file: " + filePath); + return; + } + final Bitmap bitmap = imageWriteQueueItem.mImage; + if (DEBUG) Slog.d(TAG, "writing bitmap: filename=" + filePath); + FileOutputStream imageFile = null; + try { + imageFile = new FileOutputStream(new File(filePath)); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, imageFile); + } catch (Exception e) { + Slog.e(TAG, "saveImage: unable to save " + filePath, e); + } finally { + IoUtils.closeQuietly(imageFile); + } + } else if (item instanceof TaskWriteQueueItem) { + // Write out one task. + StringWriter stringWriter = null; + TaskRecord task = ((TaskWriteQueueItem) item).mTask; + if (DEBUG) Slog.d(TAG, "Writing task=" + task); + synchronized (mService) { + if (task.inRecents) { + // Still there. try { - atomicFile = new AtomicFile(new File( - getUserTasksDir(task.userId), - String.valueOf(task.taskId) + TASK_FILENAME_SUFFIX)); - file = atomicFile.startWrite(); - file.write(stringWriter.toString().getBytes()); - file.write('\n'); - atomicFile.finishWrite(file); + if (DEBUG) Slog.d(TAG, "Saving task=" + task); + stringWriter = saveToXml(task); } catch (IOException e) { - if (file != null) { - atomicFile.failWrite(file); - } - Slog.e(TAG, - "Unable to open " + atomicFile + " for persisting. " + e); + } catch (XmlPullParserException e) { + } + } + } + if (stringWriter != null) { + // Write out xml file while not holding mService lock. + FileOutputStream file = null; + AtomicFile atomicFile = null; + try { + atomicFile = new AtomicFile(new File( + getUserTasksDir(task.userId), + String.valueOf(task.taskId) + TASK_FILENAME_SUFFIX)); + file = atomicFile.startWrite(); + file.write(stringWriter.toString().getBytes()); + file.write('\n'); + atomicFile.finishWrite(file); + } catch (IOException e) { + if (file != null) { + atomicFile.failWrite(file); } + Slog.e(TAG, + "Unable to open " + atomicFile + " for persisting. " + e); } } } diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index c009ddeb8d5f57305a73f9bf719035c6356a9991..eadc8a6eadba2f8b9292bc4cdf81468c73d36e9c 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -96,6 +96,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRIVILEGED; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; +import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import static android.view.Display.DEFAULT_DISPLAY; @@ -1045,8 +1046,7 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta } // We need to provide the current orientation of the display on which this task resides, // not the orientation of the task. - final int orientation = - getStack().mActivityContainer.mActivityDisplay.getConfiguration().orientation; + final int orientation = getStack().getDisplay().getConfiguration().orientation; return setLastThumbnailLocked(thumbnail, taskWidth, taskHeight, orientation); } @@ -1112,19 +1112,6 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta return intent != null ? intent : affinityIntent; } - /** - * @return Whether there are only fullscreen activities in this task. - */ - boolean containsOnlyFullscreenActivities() { - for (int i = 0; i < mActivities.size(); i++) { - final ActivityRecord r = mActivities.get(i); - if (!r.finishing && !r.fullscreen) { - return false; - } - } - return true; - } - /** Returns the first non-finishing activity from the root. */ ActivityRecord getRootActivity() { for (int i = 0; i < mActivities.size(); i++) { @@ -1138,9 +1125,13 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta } ActivityRecord getTopActivity() { + return getTopActivity(true /* includeOverlays */); + } + + ActivityRecord getTopActivity(boolean includeOverlays) { for (int i = mActivities.size() - 1; i >= 0; --i) { final ActivityRecord r = mActivities.get(i); - if (r.finishing) { + if (r.finishing || (!includeOverlays && r.mTaskOverlay)) { continue; } return r; @@ -1294,7 +1285,6 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta // created controller for the activity we are starting yet. mWindowContainerController.positionChildAt(appController, index); } - r.onOverrideConfigurationSent(); // Make sure the list of display UID whitelists is updated // now that this record is in a new task. @@ -1581,8 +1571,9 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta // A task can not be docked even if it is considered resizeable because it only supports // picture-in-picture mode but has a non-resizeable resizeMode return mService.mSupportsSplitScreenMultiWindow - && isResizeable(false /* checkSupportsPip */) - && !ActivityInfo.isPreserveOrientationMode(mResizeMode); + && (mService.mForceResizableActivities + || (isResizeable(false /* checkSupportsPip */) + && !ActivityInfo.isPreserveOrientationMode(mResizeMode))); } /** @@ -1593,7 +1584,8 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta */ boolean canBeLaunchedOnDisplay(int displayId) { return mService.mStackSupervisor.canPlaceEntityOnDisplay(displayId, - isResizeable(false /* checkSupportsPip */)); + isResizeable(false /* checkSupportsPip */), -1 /* don't check PID */, + -1 /* don't check UID */, null /* activityInfo */); } /** diff --git a/services/core/java/com/android/server/am/UidRecord.java b/services/core/java/com/android/server/am/UidRecord.java index c411bcec454001c096ea0a722ee782cd2499b58e..8efcb4f2990f4ac146f88131740f36f5ea839923 100644 --- a/services/core/java/com/android/server/am/UidRecord.java +++ b/services/core/java/com/android/server/am/UidRecord.java @@ -39,6 +39,7 @@ public final class UidRecord { boolean curWhitelist; boolean setWhitelist; boolean idle; + boolean setIdle; int numProcs; /** @@ -79,10 +80,11 @@ public final class UidRecord { final Object networkStateLock = new Object(); static final int CHANGE_PROCSTATE = 0; - static final int CHANGE_GONE = 1; - static final int CHANGE_GONE_IDLE = 2; - static final int CHANGE_IDLE = 3; - static final int CHANGE_ACTIVE = 4; + static final int CHANGE_GONE = 1<<0; + static final int CHANGE_IDLE = 1<<1; + static final int CHANGE_ACTIVE = 1<<2; + static final int CHANGE_CACHED = 1<<3; + static final int CHANGE_UNCACHED = 1<<4; static final class ChangeItem { UidRecord uidRecord; @@ -94,6 +96,7 @@ public final class UidRecord { } ChangeItem pendingChange; + int lastReportedChange; public UidRecord(int _uid) { uid = _uid; @@ -112,12 +115,12 @@ public final class UidRecord { } /** - * If the change being dispatched is neither CHANGE_GONE nor CHANGE_GONE_IDLE (not interested in + * If the change being dispatched is not CHANGE_GONE (not interested in * these changes), then update the {@link #lastDispatchedProcStateSeq} with * {@link #curProcStateSeq}. */ public void updateLastDispatchedProcStateSeq(int changeToDispatch) { - if (changeToDispatch != CHANGE_GONE && changeToDispatch != CHANGE_GONE_IDLE) { + if ((changeToDispatch & CHANGE_GONE) == 0) { lastDispatchedProcStateSeq = curProcStateSeq; } } @@ -146,6 +149,41 @@ public final class UidRecord { if (idle) { sb.append(" idle"); } + if (lastReportedChange != 0) { + sb.append(" change:"); + boolean printed = false; + if ((lastReportedChange & CHANGE_GONE) != 0) { + printed = true; + sb.append("gone"); + } + if ((lastReportedChange & CHANGE_IDLE) != 0) { + if (printed) { + sb.append("|"); + } + printed = true; + sb.append("idle"); + } + if ((lastReportedChange & CHANGE_ACTIVE) != 0) { + if (printed) { + sb.append("|"); + } + printed = true; + sb.append("active"); + } + if ((lastReportedChange & CHANGE_CACHED) != 0) { + if (printed) { + sb.append("|"); + } + printed = true; + sb.append("cached"); + } + if ((lastReportedChange & CHANGE_UNCACHED) != 0) { + if (printed) { + sb.append("|"); + } + sb.append("uncached"); + } + } sb.append(" procs:"); sb.append(numProcs); sb.append(" seq("); diff --git a/services/core/java/com/android/server/am/UriPermission.java b/services/core/java/com/android/server/am/UriPermission.java index 0aa54d910ea7161464a9b17d71d7127a5bcc996a..90577e33f5ae7afaac7146fb52f78d9c1271c467 100644 --- a/services/core/java/com/android/server/am/UriPermission.java +++ b/services/core/java/com/android/server/am/UriPermission.java @@ -17,6 +17,7 @@ package com.android.server.am; import android.content.Intent; +import android.os.Binder; import android.os.UserHandle; import android.util.ArraySet; import android.util.Log; @@ -101,7 +102,8 @@ final class UriPermission { Slog.d(TAG, "Permission for " + targetPkg + " to " + uri + " is changing from 0x" + Integer.toHexString(oldModeFlags) + " to 0x" - + Integer.toHexString(modeFlags), + + Integer.toHexString(modeFlags) + " via calling UID " + + Binder.getCallingUid() + " PID " + Binder.getCallingPid(), new Throwable()); } } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index f720cd51cd86bb6cbe2a81581381abf5370aa845..9c8ba5a15b9557db08601b3acca9ae7fcbab8c62 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -671,12 +671,6 @@ final class UserController { } if (stopped) { - // Evict the user's credential encryption key - try { - getStorageManager().lockUserKey(userId); - } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); - } mInjector.systemServiceManagerCleanupUser(userId); synchronized (mLock) { mInjector.getActivityStackSupervisor().removeUserLocked(userId); @@ -685,6 +679,12 @@ final class UserController { if (getUserInfo(userId).isEphemeral()) { mInjector.getUserManager().removeUser(userId); } + // Evict the user's credential encryption key. + try { + getStorageManager().lockUserKey(userId); + } catch (RemoteException re) { + throw re.rethrowAsRuntimeException(); + } } } @@ -1447,15 +1447,6 @@ final class UserController { return mStartedUserArray; } - boolean isUserStoppingOrShuttingDownLocked(int userId) { - UserState state = getStartedUserStateLocked(userId); - if (state == null) { - return false; - } - return state.state == UserState.STATE_STOPPING - || state.state == UserState.STATE_SHUTDOWN; - } - boolean isUserRunningLocked(int userId, int flags) { UserState state = getStartedUserStateLocked(userId); if (state == null) { @@ -1478,6 +1469,10 @@ final class UserController { case UserState.STATE_RUNNING_UNLOCKING: case UserState.STATE_RUNNING_UNLOCKED: return true; + // In the stopping/shutdown state return unlock state of the user key + case UserState.STATE_STOPPING: + case UserState.STATE_SHUTDOWN: + return StorageManager.isUserKeyUnlocked(userId); default: return false; } @@ -1486,13 +1481,16 @@ final class UserController { switch (state.state) { case UserState.STATE_RUNNING_UNLOCKED: return true; + // In the stopping/shutdown state return unlock state of the user key + case UserState.STATE_STOPPING: + case UserState.STATE_SHUTDOWN: + return StorageManager.isUserKeyUnlocked(userId); default: return false; } } - // One way or another, we're running! - return true; + return state.state != UserState.STATE_STOPPING && state.state != UserState.STATE_SHUTDOWN; } UserInfo getCurrentUser() { diff --git a/services/core/java/com/android/server/am/UserState.java b/services/core/java/com/android/server/am/UserState.java index b89586dc59dcbb321e695cd50c4fc20d66f82be6..2e27387a6a090c7a359415dab639cf33efc8e403 100644 --- a/services/core/java/com/android/server/am/UserState.java +++ b/services/core/java/com/android/server/am/UserState.java @@ -20,6 +20,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import android.app.IStopUserCallback; +import android.os.Trace; import android.os.UserHandle; import android.util.ArrayMap; import android.util.Slog; @@ -81,9 +82,18 @@ public final class UserState { if (newState == state) { return; } - Slog.i(TAG, "User " + mHandle.getIdentifier() + " state changed from " + final int userId = mHandle.getIdentifier(); + if (state != STATE_BOOTING) { + Trace.asyncTraceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, + stateToString(state) + " " + userId, userId); + } + if (newState != STATE_SHUTDOWN) { + Trace.asyncTraceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, + stateToString(newState) + " " + userId, userId); + } + Slog.i(TAG, "User " + userId + " state changed from " + stateToString(state) + " to " + stateToString(newState)); - EventLogTags.writeAmUserStateChanged(mHandle.getIdentifier(), newState); + EventLogTags.writeAmUserStateChanged(userId, newState); lastState = state; state = newState; } diff --git a/services/core/java/com/android/server/audio/AudioEventLogger.java b/services/core/java/com/android/server/audio/AudioEventLogger.java new file mode 100644 index 0000000000000000000000000000000000000000..9ebd75bd0f6484714fc52b945a0764a890487048 --- /dev/null +++ b/services/core/java/com/android/server/audio/AudioEventLogger.java @@ -0,0 +1,115 @@ +/* + * 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.audio; + +import android.util.Log; + +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.LinkedList; + +public class AudioEventLogger { + + // ring buffer of events to log. + private final LinkedList mEvents; + + private final String mTitle; + + // the maximum number of events to keep in log + private final int mMemSize; + + public static abstract class Event { + // formatter for timestamps + private final static SimpleDateFormat sFormat = new SimpleDateFormat("MM-dd HH:mm:ss:SSS"); + + private final long mTimestamp; + + Event() { + mTimestamp = System.currentTimeMillis(); + } + + public String toString() { + return (new StringBuilder(sFormat.format(new Date(mTimestamp)))) + .append(" ").append(eventToString()).toString(); + } + + /** + * Causes the string message for the event to appear in the logcat. + * Here is an example of how to create a new event (a StringEvent), adding it to the logger + * (an instance of AudioEventLogger) while also making it show in the logcat: + *

        +         *     myLogger.log(
        +         *         (new StringEvent("something for logcat and logger")).printLog(MyClass.TAG) );
        +         * 
        + * @param tag the tag for the android.util.Log.v + * @return the same instance of the event + */ + public Event printLog(String tag) { + Log.i(tag, eventToString()); + return this; + } + + /** + * Convert event to String. + * This method is only called when the logger history is about to the dumped, + * so this method is where expensive String conversions should be made, not when the Event + * subclass is created. + * Timestamp information will be automatically added, do not include it. + * @return a string representation of the event that occurred. + */ + abstract public String eventToString(); + } + + public static class StringEvent extends Event { + private final String mMsg; + + public StringEvent(String msg) { + mMsg = msg; + } + + @Override + public String eventToString() { + return mMsg; + } + } + + /** + * Constructor for logger. + * @param size the maximum number of events to keep in log + * @param title the string displayed before the recorded log + */ + public AudioEventLogger(int size, String title) { + mEvents = new LinkedList(); + mMemSize = size; + mTitle = title; + } + + public synchronized void log(Event evt) { + if (mEvents.size() >= mMemSize) { + mEvents.removeFirst(); + } + mEvents.add(evt); + } + + public synchronized void dump(PrintWriter pw) { + pw.println("Audio event log: " + mTitle); + for (Event evt : mEvents) { + pw.println(evt.toString()); + } + } +} diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 0326299f4eface7afa8346ffbe6a753d1ea4255b..5eb2a8d2066fdf4e95f696e5e05575d3ee717cda 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -16,6 +16,11 @@ package com.android.server.audio; +import com.android.server.audio.AudioServiceEvents.ForceUseEvent; +import com.android.server.audio.AudioServiceEvents.PhoneStateEvent; +import com.android.server.audio.AudioServiceEvents.VolumeEvent; +import com.android.server.audio.AudioServiceEvents.WiredDevConnectEvent; + import static android.Manifest.permission.REMOTE_AUDIO_PLAYBACK; import static android.media.AudioManager.RINGER_MODE_NORMAL; import static android.media.AudioManager.RINGER_MODE_SILENT; @@ -28,6 +33,7 @@ import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.AppGlobals; import android.app.AppOpsManager; +import android.app.IUidObserver; import android.app.NotificationManager; import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothAdapter; @@ -455,6 +461,8 @@ public class AudioService extends IAudioService.Stub // Forced device usage for communications private int mForcedUseForComm; + private int mForcedUseForCommExt; // External state returned by getters: always consistent + // with requests by setters // List of binder death handlers for setMode() client processes. // The last process to have called setMode() is at the top of the list. @@ -624,6 +632,32 @@ public class AudioService extends IAudioService.Stub } } + final private IUidObserver mUidObserver = new IUidObserver.Stub() { + @Override public void onUidStateChanged(int uid, int procState, long procStateSeq) { + } + + @Override public void onUidGone(int uid, boolean disabled) { + // Once the uid is no longer running, no need to keep trying to disable its audio. + disableAudioForUid(false, uid); + } + + @Override public void onUidActive(int uid) throws RemoteException { + } + + @Override public void onUidIdle(int uid, boolean disabled) { + } + + @Override public void onUidCachedChanged(int uid, boolean cached) { + disableAudioForUid(cached, uid); + } + + private void disableAudioForUid(boolean disable, int uid) { + queueMsgUnderWakeLock(mAudioHandler, MSG_DISABLE_AUDIO_FOR_UID, + disable ? 1 : 0 /* arg1 */, uid /* arg2 */, + null /* obj */, 0 /* delay */); + } + }; + /////////////////////////////////////////////////////////////////////////// // Construction /////////////////////////////////////////////////////////////////////////// @@ -691,7 +725,7 @@ public class AudioService extends IAudioService.Stub AudioSystem.FOR_SYSTEM, cameraSoundForced ? AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE, - null, + new String("AudioService ctor"), 0); mSafeMediaVolumeState = new Integer(Settings.Global.getInt(mContentResolver, @@ -717,8 +751,13 @@ public class AudioService extends IAudioService.Stub // relies on audio policy having correct ranges for volume indexes. mSafeUsbMediaVolumeIndex = getSafeUsbMediaVolumeIndex(); + mPlaybackMonitor = + new PlaybackActivityMonitor(context, MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM]); + mMediaFocusControl = new MediaFocusControl(mContext, mPlaybackMonitor); + mRecordMonitor = new RecordingActivityMonitor(mContext); + readAndSetLowRamDevice(); // Call setRingerModeInt() to apply correct mute @@ -767,6 +806,24 @@ public class AudioService extends IAudioService.Stub public void systemReady() { sendMsg(mAudioHandler, MSG_SYSTEM_READY, SENDMSG_QUEUE, 0, 0, null, 0); + if (false) { + // This is turned off for now, because it is racy and thus causes apps to break. + // Currently banning a uid means that if an app tries to start playing an audio + // stream, that will be preventing, and unbanning it will not allow that stream + // to resume. However these changes in uid state are racy with what the app is doing, + // so that after taking a process out of the cached state we can't guarantee that + // we will unban the uid before the app actually tries to start playing audio. + // (To do that, the activity manager would need to wait until it knows for sure + // that the ban has been removed, before telling the app to do whatever it is + // supposed to do that caused it to go out of the cached state.) + try { + ActivityManager.getService().registerUidObserver(mUidObserver, + ActivityManager.UID_OBSERVER_CACHED | ActivityManager.UID_OBSERVER_GONE, + ActivityManager.PROCESS_STATE_UNKNOWN, null); + } catch (RemoteException e) { + // ignored; both services live in system_server + } + } } public void onSystemReady() { @@ -860,13 +917,23 @@ public class AudioService extends IAudioService.Stub } } // Restore call state - AudioSystem.setPhoneState(mMode); + if (AudioSystem.setPhoneState(mMode) == AudioSystem.AUDIO_STATUS_OK) { + mModeLogger.log(new AudioEventLogger.StringEvent( + "onAudioServerDied causes setPhoneState(" + AudioSystem.modeToString(mMode) + ")")); + } - // Restore forced usage for communcations and record + // Restore forced usage for communications and record + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_COMMUNICATION, mForcedUseForComm, + "onAudioServerDied")); AudioSystem.setForceUse(AudioSystem.FOR_COMMUNICATION, mForcedUseForComm); + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_RECORD, mForcedUseForComm, + "onAudioServerDied")); AudioSystem.setForceUse(AudioSystem.FOR_RECORD, mForcedUseForComm); - AudioSystem.setForceUse(AudioSystem.FOR_SYSTEM, mCameraSoundForced ? - AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE); + final int forSys = mCameraSoundForced ? + AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE; + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_SYSTEM, forSys, + "onAudioServerDied")); + AudioSystem.setForceUse(AudioSystem.FOR_SYSTEM, forSys); // Restore stream volumes int numStreamTypes = AudioSystem.getNumStreamTypes(); @@ -893,16 +960,20 @@ public class AudioService extends IAudioService.Stub } synchronized (mBluetoothA2dpEnabledLock) { - AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, - mBluetoothA2dpEnabled ? - AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP); + final int forMed = mBluetoothA2dpEnabled ? + AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP; + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_MEDIA, forMed, + "onAudioServerDied")); + AudioSystem.setForceUse(AudioSystem.FOR_MEDIA, forMed); } synchronized (mSettingsLock) { - AudioSystem.setForceUse(AudioSystem.FOR_DOCK, - mDockAudioMediaEnabled ? - AudioSystem.FORCE_ANALOG_DOCK : AudioSystem.FORCE_NONE); - sendEncodedSurroundMode(mContentResolver); + final int forDock = mDockAudioMediaEnabled ? + AudioSystem.FORCE_ANALOG_DOCK : AudioSystem.FORCE_NONE; + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_DOCK, forDock, + "onAudioServerDied")); + AudioSystem.setForceUse(AudioSystem.FOR_DOCK, forDock); + sendEncodedSurroundMode(mContentResolver, "onAudioServerDied"); } if (mHdmiManager != null) { synchronized (mHdmiManager) { @@ -1095,7 +1166,7 @@ public class AudioService extends IAudioService.Stub AudioSystem.FOR_DOCK, mDockAudioMediaEnabled ? AudioSystem.FORCE_ANALOG_DOCK : AudioSystem.FORCE_NONE, - null, + new String("readDockAudioSettings"), 0); } @@ -1110,15 +1181,15 @@ public class AudioService extends IAudioService.Stub AudioSystem.setMasterMono(masterMono); } - private void sendEncodedSurroundMode(ContentResolver cr) + private void sendEncodedSurroundMode(ContentResolver cr, String eventSource) { int encodedSurroundMode = Settings.Global.getInt( cr, Settings.Global.ENCODED_SURROUND_OUTPUT, Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO); - sendEncodedSurroundMode(encodedSurroundMode); + sendEncodedSurroundMode(encodedSurroundMode, eventSource); } - private void sendEncodedSurroundMode(int encodedSurroundMode) + private void sendEncodedSurroundMode(int encodedSurroundMode, String eventSource) { // initialize to guaranteed bad value int forceSetting = AudioSystem.NUM_FORCE_CONFIG; @@ -1143,7 +1214,7 @@ public class AudioService extends IAudioService.Stub SENDMSG_QUEUE, AudioSystem.FOR_ENCODED_SURROUND, forceSetting, - null, + eventSource, 0); } } @@ -1189,7 +1260,7 @@ public class AudioService extends IAudioService.Stub updateRingerModeAffectedStreams(); readDockAudioSettings(cr); - sendEncodedSurroundMode(cr); + sendEncodedSurroundMode(cr, "readPersistedSettings"); } mMuteAffectedStreams = System.getIntForUser(cr, @@ -1260,6 +1331,9 @@ public class AudioService extends IAudioService.Stub + ", flags=" + flags + ", caller=" + caller + ", volControlStream=" + mVolumeControlStream + ", userSelect=" + mUserSelectedVolumeControlStream); + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_SUGG_VOL, suggestedStreamType, + direction/*val1*/, flags/*val2*/, new StringBuilder(callingPackage) + .append("/").append(caller).append(" uid:").append(uid).toString())); final int streamType; if (mUserSelectedVolumeControlStream) { // implies mVolumeControlStream != -1 streamType = mVolumeControlStream; @@ -1309,6 +1383,8 @@ public class AudioService extends IAudioService.Stub + "CHANGE_ACCESSIBILITY_VOLUME / callingPackage=" + callingPackage); return; } + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_STREAM_VOL, streamType, + direction/*val1*/, flags/*val2*/, callingPackage)); adjustStreamVolume(streamType, direction, flags, callingPackage, callingPackage, Binder.getCallingUid()); } @@ -1625,6 +1701,8 @@ public class AudioService extends IAudioService.Stub + " CHANGE_ACCESSIBILITY_VOLUME callingPackage=" + callingPackage); return; } + mVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType, + index/*val1*/, flags/*val2*/, callingPackage)); setStreamVolume(streamType, index, flags, callingPackage, callingPackage, Binder.getCallingUid()); } @@ -1933,6 +2011,7 @@ public class AudioService extends IAudioService.Stub streamType = getActiveStreamType(streamType); } synchronized (VolumeStreamState.class) { + ensureValidStreamType(streamType); return mStreamStates[streamType].mIsMuted; } } @@ -2470,13 +2549,15 @@ public class AudioService extends IAudioService.Stub } } int status = AudioSystem.AUDIO_STATUS_OK; + int actualMode; do { + actualMode = mode; if (mode == AudioSystem.MODE_NORMAL) { // get new mode from client at top the list if any if (!mSetModeDeathHandlers.isEmpty()) { hdlr = mSetModeDeathHandlers.get(0); cb = hdlr.getBinder(); - mode = hdlr.getMode(); + actualMode = hdlr.getMode(); if (DEBUG_MODE) { Log.w(TAG, " using mode=" + mode + " instead due to death hdlr at pid=" + hdlr.mPid); @@ -2500,11 +2581,11 @@ public class AudioService extends IAudioService.Stub hdlr.setMode(mode); } - if (mode != mMode) { - status = AudioSystem.setPhoneState(mode); + if (actualMode != mMode) { + status = AudioSystem.setPhoneState(actualMode); if (status == AudioSystem.AUDIO_STATUS_OK) { - if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + mode); } - mMode = mode; + if (DEBUG_MODE) { Log.v(TAG, " mode successfully set to " + actualMode); } + mMode = actualMode; } else { if (hdlr != null) { mSetModeDeathHandlers.remove(hdlr); @@ -2520,13 +2601,16 @@ public class AudioService extends IAudioService.Stub } while (status != AudioSystem.AUDIO_STATUS_OK && !mSetModeDeathHandlers.isEmpty()); if (status == AudioSystem.AUDIO_STATUS_OK) { - if (mode != AudioSystem.MODE_NORMAL) { + if (actualMode != AudioSystem.MODE_NORMAL) { if (mSetModeDeathHandlers.isEmpty()) { Log.e(TAG, "setMode() different from MODE_NORMAL with empty mode client stack"); } else { newModeOwnerPid = mSetModeDeathHandlers.get(0).getPid(); } } + // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL + mModeLogger.log( + new PhoneStateEvent(caller, pid, mode, newModeOwnerPid, actualMode)); int streamType = getActiveStreamType(AudioManager.USE_DEFAULT_STREAM_TYPE); int device = getDeviceForStream(streamType); int index = mStreamStates[mStreamVolumeAlias[streamType]].getIndex(device); @@ -2799,24 +2883,30 @@ public class AudioService extends IAudioService.Stub if (!checkAudioSettingsPermission("setSpeakerphoneOn()")) { return; } + // for logging only + final String eventSource = new StringBuilder("setSpeakerphoneOn(").append(on) + .append(") from u/pid:").append(Binder.getCallingUid()).append("/") + .append(Binder.getCallingPid()).toString(); if (on) { if (mForcedUseForComm == AudioSystem.FORCE_BT_SCO) { sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE, - AudioSystem.FOR_RECORD, AudioSystem.FORCE_NONE, null, 0); + AudioSystem.FOR_RECORD, AudioSystem.FORCE_NONE, + eventSource, 0); } mForcedUseForComm = AudioSystem.FORCE_SPEAKER; } else if (mForcedUseForComm == AudioSystem.FORCE_SPEAKER){ mForcedUseForComm = AudioSystem.FORCE_NONE; } + mForcedUseForCommExt = mForcedUseForComm; sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE, - AudioSystem.FOR_COMMUNICATION, mForcedUseForComm, null, 0); + AudioSystem.FOR_COMMUNICATION, mForcedUseForComm, eventSource, 0); } /** @see AudioManager#isSpeakerphoneOn() */ public boolean isSpeakerphoneOn() { - return (mForcedUseForComm == AudioSystem.FORCE_SPEAKER); + return (mForcedUseForCommExt == AudioSystem.FORCE_SPEAKER); } /** @see AudioManager#setBluetoothScoOn(boolean) */ @@ -2824,35 +2914,61 @@ public class AudioService extends IAudioService.Stub if (!checkAudioSettingsPermission("setBluetoothScoOn()")) { return; } - setBluetoothScoOnInt(on); + + // Only enable calls from system components + if (Binder.getCallingUid() >= FIRST_APPLICATION_UID) { + mForcedUseForCommExt = on ? AudioSystem.FORCE_BT_SCO : AudioSystem.FORCE_NONE; + return; + } + + // for logging only + final String eventSource = new StringBuilder("setBluetoothScoOn(").append(on) + .append(") from u/pid:").append(Binder.getCallingUid()).append("/") + .append(Binder.getCallingPid()).toString(); + setBluetoothScoOnInt(on, eventSource); } - public void setBluetoothScoOnInt(boolean on) { + public void setBluetoothScoOnInt(boolean on, String eventSource) { if (on) { + // do not accept SCO ON if SCO audio is not connected + synchronized(mScoClients) { + if ((mBluetoothHeadset != null) && + (mBluetoothHeadset.getAudioState(mBluetoothHeadsetDevice) + != BluetoothHeadset.STATE_AUDIO_CONNECTED)) { + mForcedUseForCommExt = AudioSystem.FORCE_BT_SCO; + return; + } + } mForcedUseForComm = AudioSystem.FORCE_BT_SCO; } else if (mForcedUseForComm == AudioSystem.FORCE_BT_SCO) { mForcedUseForComm = AudioSystem.FORCE_NONE; } - + mForcedUseForCommExt = mForcedUseForComm; + AudioSystem.setParameters("BT_SCO="+ (on ? "on" : "off")); sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE, - AudioSystem.FOR_COMMUNICATION, mForcedUseForComm, null, 0); + AudioSystem.FOR_COMMUNICATION, mForcedUseForComm, eventSource, 0); sendMsg(mAudioHandler, MSG_SET_FORCE_USE, SENDMSG_QUEUE, - AudioSystem.FOR_RECORD, mForcedUseForComm, null, 0); + AudioSystem.FOR_RECORD, mForcedUseForComm, eventSource, 0); } /** @see AudioManager#isBluetoothScoOn() */ public boolean isBluetoothScoOn() { - return (mForcedUseForComm == AudioSystem.FORCE_BT_SCO); + return (mForcedUseForCommExt == AudioSystem.FORCE_BT_SCO); } /** @see AudioManager#setBluetoothA2dpOn(boolean) */ public void setBluetoothA2dpOn(boolean on) { + // for logging only + final String eventSource = new StringBuilder("setBluetoothA2dpOn(").append(on) + .append(") from u/pid:").append(Binder.getCallingUid()).append("/") + .append(Binder.getCallingPid()).toString(); + synchronized (mBluetoothA2dpEnabledLock) { mBluetoothA2dpEnabled = on; sendMsg(mAudioHandler, MSG_SET_FORCE_BT_A2DP_USE, SENDMSG_QUEUE, AudioSystem.FOR_MEDIA, mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP, - null, 0); + eventSource, 0); } } @@ -3189,7 +3305,7 @@ public class AudioService extends IAudioService.Stub broadcastScoConnectionState(AudioManager.SCO_AUDIO_STATE_DISCONNECTED); } AudioSystem.setParameters("A2dpSuspended=false"); - setBluetoothScoOnInt(false); + setBluetoothScoOnInt(false, "resetBluetoothSco"); } private void broadcastScoConnectionState(int state) { @@ -3951,7 +4067,7 @@ public class AudioService extends IAudioService.Stub /* * A class just for packaging up a set of connection parameters. */ - private class WiredDeviceConnectionState { + class WiredDeviceConnectionState { public final int mType; public final int mState; public final String mAddress; @@ -4045,7 +4161,8 @@ public class AudioService extends IAudioService.Stub newDevice, AudioSystem.getOutputDeviceName(newDevice))); } synchronized (mConnectedDevices) { - if ((newDevice & DEVICE_MEDIA_UNMUTED_ON_PLUG) != 0 + if (mNm.getZenMode() != Settings.Global.ZEN_MODE_NO_INTERRUPTIONS + && (newDevice & DEVICE_MEDIA_UNMUTED_ON_PLUG) != 0 && mStreamStates[AudioSystem.STREAM_MUSIC].mIsMuted && mStreamStates[AudioSystem.STREAM_MUSIC].getIndex(newDevice) != 0 && (newDevice & AudioSystem.getDevicesForStream(AudioSystem.STREAM_MUSIC)) != 0) @@ -4800,9 +4917,9 @@ public class AudioService extends IAudioService.Stub } } - private void setForceUse(int usage, int config) { + private void setForceUse(int usage, int config, String eventSource) { synchronized (mConnectedDevices) { - setForceUseInt_SyncDevices(usage, config); + setForceUseInt_SyncDevices(usage, config, eventSource); } } @@ -4868,7 +4985,7 @@ public class AudioService extends IAudioService.Stub case MSG_SET_FORCE_USE: case MSG_SET_FORCE_BT_A2DP_USE: - setForceUse(msg.arg1, msg.arg2); + setForceUse(msg.arg1, msg.arg2, (String) msg.obj); break; case MSG_BT_HEADSET_CNCT_FAILED: @@ -4878,6 +4995,7 @@ public class AudioService extends IAudioService.Stub case MSG_SET_WIRED_DEVICE_CONNECTION_STATE: { WiredDeviceConnectionState connectState = (WiredDeviceConnectionState)msg.obj; + mWiredDevLogger.log(new WiredDevConnectEvent(connectState)); onSetWiredDeviceConnectionState(connectState.mType, connectState.mState, connectState.mAddress, connectState.mName, connectState.mCaller); mAudioEventWakeLock.release(); @@ -5025,7 +5143,7 @@ public class AudioService extends IAudioService.Stub // Did it change? if (mEncodedSurroundMode != newSurroundMode) { // Send to AudioPolicyManager - sendEncodedSurroundMode(newSurroundMode); + sendEncodedSurroundMode(newSurroundMode, "SettingsObserver"); synchronized(mConnectedDevices) { // Is HDMI connected? String key = makeDeviceListKey(AudioSystem.DEVICE_OUT_HDMI, ""); @@ -5046,13 +5164,13 @@ public class AudioService extends IAudioService.Stub } // must be called synchronized on mConnectedDevices - private void makeA2dpDeviceAvailable(String address, String name) { + private void makeA2dpDeviceAvailable(String address, String name, String eventSource) { // enable A2DP before notifying A2DP connection to avoid unnecessary processing in // audio policy manager VolumeStreamState streamState = mStreamStates[AudioSystem.STREAM_MUSIC]; sendMsg(mAudioHandler, MSG_SET_DEVICE_VOLUME, SENDMSG_QUEUE, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, 0, streamState, 0); - setBluetoothA2dpOnInt(true); + setBluetoothA2dpOnInt(true, eventSource); AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, AudioSystem.DEVICE_STATE_AVAILABLE, address, name); // Reset A2DP suspend state each time a new sink is connected @@ -5181,7 +5299,8 @@ public class AudioService extends IAudioService.Stub makeA2dpDeviceUnavailableNow(mDockAddress); } } - makeA2dpDeviceAvailable(address, btDevice.getName()); + makeA2dpDeviceAvailable(address, btDevice.getName(), + "onSetA2dpSinkConnectionState"); synchronized (mCurAudioRoutes) { String name = btDevice.getAliasName(); if (!TextUtils.equals(mCurAudioRoutes.bluetoothName, name)) { @@ -5468,7 +5587,7 @@ public class AudioService extends IAudioService.Stub synchronized (mConnectedDevices) { if ((state == 0) && ((device & DEVICE_OVERRIDE_A2DP_ROUTE_ON_PLUG) != 0)) { - setBluetoothA2dpOnInt(true); + setBluetoothA2dpOnInt(true, "onSetWiredDeviceConnectionState state 0"); } if (!handleDeviceConnection(state == 1, device, address, deviceName)) { @@ -5477,7 +5596,7 @@ public class AudioService extends IAudioService.Stub } if (state != 0) { if ((device & DEVICE_OVERRIDE_A2DP_ROUTE_ON_PLUG) != 0) { - setBluetoothA2dpOnInt(false); + setBluetoothA2dpOnInt(false, "onSetWiredDeviceConnectionState state not 0"); } if ((device & mSafeMediaVolumeDevices) != 0) { sendMsg(mAudioHandler, @@ -5600,6 +5719,8 @@ public class AudioService extends IAudioService.Stub if (!((dockState == Intent.EXTRA_DOCK_STATE_LE_DESK) || ((dockState == Intent.EXTRA_DOCK_STATE_UNDOCKED) && (mDockState == Intent.EXTRA_DOCK_STATE_LE_DESK)))) { + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_DOCK, config, + "ACTION_DOCK_EVENT intent")); AudioSystem.setForceUse(AudioSystem.FOR_DOCK, config); } mDockState = dockState; @@ -5930,7 +6051,7 @@ public class AudioService extends IAudioService.Stub AudioSystem.FOR_SYSTEM, cameraSoundForced ? AudioSystem.FORCE_SYSTEM_ENFORCED : AudioSystem.FORCE_NONE, - null, + new String("handleConfigurationChanged"), 0); sendMsg(mAudioHandler, @@ -5973,21 +6094,23 @@ public class AudioService extends IAudioService.Stub // Handles request to override default use of A2DP for media. // Must be called synchronized on mConnectedDevices - public void setBluetoothA2dpOnInt(boolean on) { + public void setBluetoothA2dpOnInt(boolean on, String eventSource) { synchronized (mBluetoothA2dpEnabledLock) { mBluetoothA2dpEnabled = on; mAudioHandler.removeMessages(MSG_SET_FORCE_BT_A2DP_USE); setForceUseInt_SyncDevices(AudioSystem.FOR_MEDIA, - mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP); + mBluetoothA2dpEnabled ? AudioSystem.FORCE_NONE : AudioSystem.FORCE_NO_BT_A2DP, + eventSource); } } // Must be called synchronized on mConnectedDevices - private void setForceUseInt_SyncDevices(int usage, int config) { + private void setForceUseInt_SyncDevices(int usage, int config, String eventSource) { if (usage == AudioSystem.FOR_MEDIA) { sendMsg(mAudioHandler, MSG_REPORT_NEW_ROUTES, SENDMSG_NOOP, 0, 0, null, 0); } + mForceUseLogger.log(new ForceUseEvent(usage, config, eventSource)); AudioSystem.setForceUse(usage, config); } @@ -6039,12 +6162,12 @@ public class AudioService extends IAudioService.Stub private int mSafeMediaVolumeIndex; // mSafeUsbMediaVolumeIndex is used for USB Headsets and is the music volume UI index // corresponding to a gain of -30 dBFS in audio flinger mixer. - // We remove -15 dBs from the theoretical -15dB to account for the EQ boost when bands are set - // to max gain. + // We remove -22 dBs from the theoretical -15dB to account for the EQ + bass boost + // amplification when both effects are on with all band gains at maximum. // This level corresponds to a loudness of 85 dB SPL for the warning to be displayed when // the headset is compliant to EN 60950 with a max loudness of 100dB SPL. private int mSafeUsbMediaVolumeIndex; - private static final float SAFE_VOLUME_GAIN_DBFS = -30.0f; + private static final float SAFE_VOLUME_GAIN_DBFS = -37.0f; // mSafeMediaVolumeDevices lists the devices for which safe media volume is enforced, private final int mSafeMediaVolumeDevices = AudioSystem.DEVICE_OUT_WIRED_HEADSET | AudioSystem.DEVICE_OUT_WIRED_HEADPHONE | @@ -6192,9 +6315,11 @@ public class AudioService extends IAudioService.Stub synchronized (mHdmiTvClient) { if (mHdmiSystemAudioSupported != on) { mHdmiSystemAudioSupported = on; - AudioSystem.setForceUse(AudioSystem.FOR_HDMI_SYSTEM_AUDIO, - on ? AudioSystem.FORCE_HDMI_SYSTEM_AUDIO_ENFORCED : - AudioSystem.FORCE_NONE); + final int config = on ? AudioSystem.FORCE_HDMI_SYSTEM_AUDIO_ENFORCED : + AudioSystem.FORCE_NONE; + mForceUseLogger.log(new ForceUseEvent(AudioSystem.FOR_HDMI_SYSTEM_AUDIO, + config, "setHdmiSystemAudioSupported")); + AudioSystem.setForceUse(AudioSystem.FOR_HDMI_SYSTEM_AUDIO, config); } device = getDevicesForStream(AudioSystem.STREAM_MUSIC); } @@ -6292,6 +6417,29 @@ public class AudioService extends IAudioService.Stub } } + //========================================================================================== + // AudioService logging and dumpsys + //========================================================================================== + final int LOG_NB_EVENTS_PHONE_STATE = 20; + final int LOG_NB_EVENTS_WIRED_DEV_CONNECTION = 30; + final int LOG_NB_EVENTS_FORCE_USE = 20; + final int LOG_NB_EVENTS_VOLUME = 40; + + final private AudioEventLogger mModeLogger = new AudioEventLogger(LOG_NB_EVENTS_PHONE_STATE, + "phone state (logged after successfull call to AudioSystem.setPhoneState(int))"); + + final private AudioEventLogger mWiredDevLogger = new AudioEventLogger( + LOG_NB_EVENTS_WIRED_DEV_CONNECTION, + "wired device connection (logged before onSetWiredDeviceConnectionState() is executed)" + ); + + final private AudioEventLogger mForceUseLogger = new AudioEventLogger( + LOG_NB_EVENTS_FORCE_USE, + "force use (logged before setForceUse() is executed)"); + + final private AudioEventLogger mVolumeLogger = new AudioEventLogger(LOG_NB_EVENTS_VOLUME, + "volume changes (logged when command received by AudioService)"); + private static final String[] RINGER_MODE_NAMES = new String[] { "SILENT", "VIBRATE", @@ -6360,6 +6508,18 @@ public class AudioService extends IAudioService.Stub dumpAudioPolicies(pw); mPlaybackMonitor.dump(pw); + + mRecordMonitor.dump(pw); + + pw.println("\n"); + pw.println("\nEvent logs:"); + mModeLogger.dump(pw); + pw.println("\n"); + mWiredDevLogger.dump(pw); + pw.println("\n"); + mForceUseLogger.dump(pw); + pw.println("\n"); + mVolumeLogger.dump(pw); } private static String safeMediaVolumeStateToString(Integer state) { @@ -6642,13 +6802,6 @@ public class AudioService extends IAudioService.Stub } } } - - @Override - public void disableAudioForUid(boolean disable, int uid) { - queueMsgUnderWakeLock(mAudioHandler, MSG_DISABLE_AUDIO_FOR_UID, - disable ? 1 : 0 /* arg1 */, uid /* arg2 */, - null /* obj */, 0 /* delay */); - } } //========================================================================================== @@ -6788,10 +6941,13 @@ public class AudioService extends IAudioService.Stub //====================== // Audio policy callbacks from AudioSystem for recording configuration updates //====================== - private final RecordingActivityMonitor mRecordMonitor = new RecordingActivityMonitor(); + private final RecordingActivityMonitor mRecordMonitor; public void registerRecordingCallback(IRecordingConfigDispatcher rcdb) { - mRecordMonitor.registerRecordingCallback(rcdb); + final boolean isPrivileged = + (PackageManager.PERMISSION_GRANTED == mContext.checkCallingPermission( + android.Manifest.permission.MODIFY_AUDIO_ROUTING)); + mRecordMonitor.registerRecordingCallback(rcdb, isPrivileged); } public void unregisterRecordingCallback(IRecordingConfigDispatcher rcdb) { @@ -6799,7 +6955,10 @@ public class AudioService extends IAudioService.Stub } public List getActiveRecordingConfigurations() { - return mRecordMonitor.getActiveRecordingConfigurations(); + final boolean isPrivileged = + (PackageManager.PERMISSION_GRANTED == mContext.checkCallingPermission( + android.Manifest.permission.MODIFY_AUDIO_ROUTING)); + return mRecordMonitor.getActiveRecordingConfigurations(isPrivileged); } public void disableRingtoneSync(final int userId) { @@ -6821,7 +6980,7 @@ public class AudioService extends IAudioService.Stub //====================== // Audio playback notification //====================== - private final PlaybackActivityMonitor mPlaybackMonitor = new PlaybackActivityMonitor(); + private final PlaybackActivityMonitor mPlaybackMonitor; public void registerPlaybackCallback(IPlaybackConfigDispatcher pcdb) { final boolean isPrivileged = @@ -6853,6 +7012,10 @@ public class AudioService extends IAudioService.Stub mPlaybackMonitor.playerEvent(piid, event, Binder.getCallingUid()); } + public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio) { + mPlaybackMonitor.playerHasOpPlayAudio(piid, hasOpPlayAudio, Binder.getCallingUid()); + } + public void releasePlayer(int piid) { mPlaybackMonitor.releasePlayer(piid, Binder.getCallingUid()); } diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java new file mode 100644 index 0000000000000000000000000000000000000000..9d9e35bdf2b2203bba68be6ef96c7e279101d828 --- /dev/null +++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java @@ -0,0 +1,138 @@ +/* + * 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.audio; + +import android.media.AudioManager; +import android.media.AudioSystem; + +import com.android.server.audio.AudioService.WiredDeviceConnectionState; + + +public class AudioServiceEvents { + + final static class PhoneStateEvent extends AudioEventLogger.Event { + final String mPackage; + final int mOwnerPid; + final int mRequesterPid; + final int mRequestedMode; + final int mActualMode; + + PhoneStateEvent(String callingPackage, int requesterPid, int requestedMode, + int ownerPid, int actualMode) { + mPackage = callingPackage; + mRequesterPid = requesterPid; + mRequestedMode = requestedMode; + mOwnerPid = ownerPid; + mActualMode = actualMode; + } + + @Override + public String eventToString() { + return new StringBuilder("setMode(").append(AudioSystem.modeToString(mRequestedMode)) + .append(") from package=").append(mPackage) + .append(" pid=").append(mRequesterPid) + .append(" selected mode=").append(AudioSystem.modeToString(mActualMode)) + .append(" by pid=").append(mOwnerPid).toString(); + } + } + + final static class WiredDevConnectEvent extends AudioEventLogger.Event { + final WiredDeviceConnectionState mState; + + WiredDevConnectEvent(WiredDeviceConnectionState state) { + mState = state; + } + + @Override + public String eventToString() { + return new StringBuilder("setWiredDeviceConnectionState(") + .append(" type:").append(Integer.toHexString(mState.mType)) + .append(" state:").append(AudioSystem.deviceStateToString(mState.mState)) + .append(" addr:").append(mState.mAddress) + .append(" name:").append(mState.mName) + .append(") from ").append(mState.mCaller).toString(); + } + } + + final static class ForceUseEvent extends AudioEventLogger.Event { + final int mUsage; + final int mConfig; + final String mReason; + + ForceUseEvent(int usage, int config, String reason) { + mUsage = usage; + mConfig = config; + mReason = reason; + } + + @Override + public String eventToString() { + return new StringBuilder("setForceUse(") + .append(AudioSystem.forceUseUsageToString(mUsage)) + .append(", ").append(AudioSystem.forceUseConfigToString(mConfig)) + .append(") due to ").append(mReason).toString(); + } + } + + final static class VolumeEvent extends AudioEventLogger.Event { + final static int VOL_ADJUST_SUGG_VOL = 0; + final static int VOL_ADJUST_STREAM_VOL = 1; + final static int VOL_SET_STREAM_VOL = 2; + + final int mOp; + final int mStream; + final int mVal1; + final int mVal2; + final String mCaller; + + VolumeEvent(int op, int stream, int val1, int val2, String caller) { + mOp = op; + mStream = stream; + mVal1 = val1; + mVal2 = val2; + mCaller = caller; + } + + @Override + public String eventToString() { + switch (mOp) { + case VOL_ADJUST_SUGG_VOL: + return new StringBuilder("adjustSuggestedStreamVolume(sugg:") + .append(AudioSystem.streamToString(mStream)) + .append(" dir:").append(AudioManager.adjustToString(mVal1)) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + case VOL_ADJUST_STREAM_VOL: + return new StringBuilder("adjustStreamVolume(stream:") + .append(AudioSystem.streamToString(mStream)) + .append(" dir:").append(AudioManager.adjustToString(mVal1)) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + case VOL_SET_STREAM_VOL: + return new StringBuilder("setStreamVolume(stream:") + .append(AudioSystem.streamToString(mStream)) + .append(" index:").append(mVal1) + .append(" flags:0x").append(Integer.toHexString(mVal2)) + .append(") from ").append(mCaller) + .toString(); + default: return new StringBuilder("FIXME invalid op:").append(mOp).toString(); + } + } + } +} diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java index 7d742ffda9670755cc48ab54eaa824adaa9b650e..c5f563c7a43c1f0c0f91c919b2b33aaf1cc06188 100644 --- a/services/core/java/com/android/server/audio/MediaFocusControl.java +++ b/services/core/java/com/android/server/audio/MediaFocusControl.java @@ -89,6 +89,9 @@ public class MediaFocusControl implements PlayerFocusEnforcer { pw.println("\nMediaFocusControl dump time: " + DateFormat.getTimeInstance().format(new Date())); dumpFocusStack(pw); + pw.println("\n"); + // log + mEventLogger.dump(pw); } //================================================================= @@ -119,6 +122,14 @@ public class MediaFocusControl implements PlayerFocusEnforcer { private final static Object mAudioFocusLock = new Object(); + /** + * Arbitrary maximum size of audio focus stack to prevent apps OOM'ing this process. + */ + private static final int MAX_STACK_SIZE = 100; + + private static final AudioEventLogger mEventLogger = new AudioEventLogger(50, + "focus commands as seen by MediaFocusControl"); + /** * Discard the current audio focus owner. * Notify top of audio focus stack that it lost focus (regardless of possibility to reassign @@ -643,11 +654,14 @@ public class MediaFocusControl implements PlayerFocusEnforcer { protected int requestAudioFocus(AudioAttributes aa, int focusChangeHint, IBinder cb, IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags, int sdk) { - Log.i(TAG, " AudioFocus requestAudioFocus() from uid/pid " + Binder.getCallingUid() - + "/" + Binder.getCallingPid() - + " clientId=" + clientId - + " req=" + focusChangeHint - + " flags=0x" + Integer.toHexString(flags)); + mEventLogger.log((new AudioEventLogger.StringEvent( + "requestAudioFocus() from uid/pid " + Binder.getCallingUid() + + "/" + Binder.getCallingPid() + + " clientId=" + clientId + " callingPack=" + callingPackageName + + " req=" + focusChangeHint + + " flags=0x" + Integer.toHexString(flags) + + " sdk=" + sdk)) + .printLog(TAG)); // we need a valid binder callback for clients if (!cb.pingBinder()) { Log.e(TAG, " AudioFocus DOA client for requestAudioFocus(), aborting."); @@ -660,6 +674,11 @@ public class MediaFocusControl implements PlayerFocusEnforcer { } synchronized(mAudioFocusLock) { + if (mFocusStack.size() > MAX_STACK_SIZE) { + Log.e(TAG, "Max AudioFocus stack size reached, failing requestAudioFocus()"); + return AudioManager.AUDIOFOCUS_REQUEST_FAILED; + } + boolean enteringRingOrCall = !mRingOrCallActive & (AudioSystem.IN_VOICE_COMM_FOCUS_ID.compareTo(clientId) == 0); if (enteringRingOrCall) { mRingOrCallActive = true; } @@ -770,10 +789,12 @@ public class MediaFocusControl implements PlayerFocusEnforcer { * */ protected int abandonAudioFocus(IAudioFocusDispatcher fl, String clientId, AudioAttributes aa, String callingPackageName) { - // AudioAttributes are currently ignored, to be used for zones - Log.i(TAG, " AudioFocus abandonAudioFocus() from uid/pid " + Binder.getCallingUid() - + "/" + Binder.getCallingPid() - + " clientId=" + clientId); + // AudioAttributes are currently ignored, to be used for zones / a11y + mEventLogger.log((new AudioEventLogger.StringEvent( + "abandonAudioFocus() from uid/pid " + Binder.getCallingUid() + + "/" + Binder.getCallingPid() + + " clientId=" + clientId)) + .printLog(TAG)); try { // this will take care of notifying the new focus owner if needed synchronized(mAudioFocusLock) { diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java index 663559f59eec639e22cb2f6de45af205d8457cab..494317334f439d46a501ae0ae1af71e60cda9d51 100644 --- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java +++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java @@ -17,6 +17,8 @@ package com.android.server.audio; import android.annotation.NonNull; +import android.content.Context; +import android.content.pm.PackageManager; import android.media.AudioAttributes; import android.media.AudioManager; import android.media.AudioPlaybackConfiguration; @@ -34,6 +36,7 @@ import com.android.internal.util.ArrayUtils; import java.io.PrintWriter; import java.text.DateFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -89,7 +92,14 @@ public final class PlaybackActivityMonitor private final HashMap mPlayers = new HashMap(); - PlaybackActivityMonitor() { + private final Context mContext; + private int mSavedAlarmVolume = -1; + private final int mMaxAlarmVolume; + private int mPrivilegedAlarmActiveCount = 0; + + PlaybackActivityMonitor(Context context, int maxAlarmVolume) { + mContext = context; + mMaxAlarmVolume = maxAlarmVolume; PlayMonitorClient.sListenerDeathMonitor = this; AudioPlaybackConfiguration.sPlayerDeathMonitor = this; } @@ -103,6 +113,9 @@ public final class PlaybackActivityMonitor final int index = mBannedUids.indexOf(new Integer(uid)); if (index >= 0) { if (!disable) { + if (DEBUG) { // hidden behind DEBUG, too noisy otherwise + sEventLogger.log(new AudioEventLogger.StringEvent("unbanning uid:" + uid)); + } mBannedUids.remove(index); // nothing else to do, future playback requests from this uid are ok } // no else to handle, uid already present, so disabling again is no-op @@ -111,6 +124,9 @@ public final class PlaybackActivityMonitor for (AudioPlaybackConfiguration apc : mPlayers.values()) { checkBanPlayer(apc, uid); } + if (DEBUG) { // hidden behind DEBUG, too noisy otherwise + sEventLogger.log(new AudioEventLogger.StringEvent("banning uid:" + uid)); + } mBannedUids.add(new Integer(uid)); } // no else to handle, uid already not in list, so enabling again is no-op } @@ -144,6 +160,7 @@ public final class PlaybackActivityMonitor new AudioPlaybackConfiguration(pic, newPiid, Binder.getCallingUid(), Binder.getCallingPid()); apc.init(); + sEventLogger.log(new NewPlayerEvent(apc)); synchronized(mPlayerLock) { mPlayers.put(newPiid, apc); } @@ -155,6 +172,7 @@ public final class PlaybackActivityMonitor synchronized(mPlayerLock) { final AudioPlaybackConfiguration apc = mPlayers.get(new Integer(piid)); if (checkConfigurationCaller(piid, apc, binderUid)) { + sEventLogger.log(new AudioAttrEvent(piid, attr)); change = apc.handleAudioAttributesEvent(attr); } else { Log.e(TAG, "Error updating audio attributes"); @@ -162,7 +180,43 @@ public final class PlaybackActivityMonitor } } if (change) { - dispatchPlaybackChange(); + dispatchPlaybackChange(false); + } + } + + private static final int FLAGS_FOR_SILENCE_OVERRIDE = + AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY | + AudioAttributes.FLAG_BYPASS_MUTE; + + private void checkVolumeForPrivilegedAlarm(AudioPlaybackConfiguration apc, int event) { + if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED || + apc.getPlayerState() == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) { + if ((apc.getAudioAttributes().getAllFlags() & FLAGS_FOR_SILENCE_OVERRIDE) + == FLAGS_FOR_SILENCE_OVERRIDE && + apc.getAudioAttributes().getUsage() == AudioAttributes.USAGE_ALARM && + mContext.checkPermission(android.Manifest.permission.MODIFY_PHONE_STATE, + apc.getClientPid(), apc.getClientUid()) == + PackageManager.PERMISSION_GRANTED) { + if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED && + apc.getPlayerState() != AudioPlaybackConfiguration.PLAYER_STATE_STARTED) { + if (mPrivilegedAlarmActiveCount++ == 0) { + mSavedAlarmVolume = AudioSystem.getStreamVolumeIndex( + AudioSystem.STREAM_ALARM, AudioSystem.DEVICE_OUT_SPEAKER); + AudioSystem.setStreamVolumeIndex(AudioSystem.STREAM_ALARM, + mMaxAlarmVolume, AudioSystem.DEVICE_OUT_SPEAKER); + } + } else if (event != AudioPlaybackConfiguration.PLAYER_STATE_STARTED && + apc.getPlayerState() == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) { + if (--mPrivilegedAlarmActiveCount == 0) { + if (AudioSystem.getStreamVolumeIndex( + AudioSystem.STREAM_ALARM, AudioSystem.DEVICE_OUT_SPEAKER) == + mMaxAlarmVolume) { + AudioSystem.setStreamVolumeIndex(AudioSystem.STREAM_ALARM, + mSavedAlarmVolume, AudioSystem.DEVICE_OUT_SPEAKER); + } + } + } + } } } @@ -174,10 +228,13 @@ public final class PlaybackActivityMonitor if (apc == null) { return; } + sEventLogger.log(new PlayerEvent(piid, event)); if (event == AudioPlaybackConfiguration.PLAYER_STATE_STARTED) { for (Integer uidInteger: mBannedUids) { if (checkBanPlayer(apc, uidInteger.intValue())) { // player was banned, do not update its state + sEventLogger.log(new AudioEventLogger.StringEvent( + "not starting piid:" + piid + " ,is banned")); return; } } @@ -188,6 +245,7 @@ public final class PlaybackActivityMonitor } if (checkConfigurationCaller(piid, apc, binderUid)) { //TODO add generation counter to only update to the latest state + checkVolumeForPrivilegedAlarm(apc, event); change = apc.handleStateEvent(event); } else { Log.e(TAG, "Error handling event " + event); @@ -198,17 +256,26 @@ public final class PlaybackActivityMonitor } } if (change) { - dispatchPlaybackChange(); + dispatchPlaybackChange(event == AudioPlaybackConfiguration.PLAYER_STATE_RELEASED); } } + public void playerHasOpPlayAudio(int piid, boolean hasOpPlayAudio, int binderUid) { + // no check on UID yet because this is only for logging at the moment + sEventLogger.log(new PlayerOpPlayAudioEvent(piid, hasOpPlayAudio, binderUid)); + } + public void releasePlayer(int piid, int binderUid) { if (DEBUG) { Log.v(TAG, "releasePlayer() for piid=" + piid); } synchronized(mPlayerLock) { final AudioPlaybackConfiguration apc = mPlayers.get(new Integer(piid)); if (checkConfigurationCaller(piid, apc, binderUid)) { + sEventLogger.log(new AudioEventLogger.StringEvent( + "releasing player piid:" + piid)); mPlayers.remove(new Integer(piid)); mDuckingManager.removeReleased(apc); + checkVolumeForPrivilegedAlarm(apc, AudioPlaybackConfiguration.PLAYER_STATE_RELEASED); + apc.handleStateEvent(AudioPlaybackConfiguration.PLAYER_STATE_RELEASED); } } } @@ -224,11 +291,26 @@ public final class PlaybackActivityMonitor pw.println("\nPlaybackActivityMonitor dump time: " + DateFormat.getTimeInstance().format(new Date())); synchronized(mPlayerLock) { - for (AudioPlaybackConfiguration conf : mPlayers.values()) { - conf.dump(pw); + pw.println("\n playback listeners:"); + synchronized(mClients) { + for (PlayMonitorClient pmc : mClients) { + pw.print(" " + (pmc.mIsPrivileged ? "(S)" : "(P)") + + pmc.toString()); + } + } + pw.println("\n"); + // all players + pw.println("\n players:"); + final List piidIntList = new ArrayList(mPlayers.keySet()); + Collections.sort(piidIntList); + for (Integer piidInt : piidIntList) { + final AudioPlaybackConfiguration apc = mPlayers.get(piidInt); + if (apc != null) { + apc.dump(pw); + } } // ducked players - pw.println("\n ducked players:"); + pw.println("\n ducked players piids:"); mDuckingManager.dump(pw); // players muted due to the device ringing or being in a call pw.print("\n muted player piids:"); @@ -241,7 +323,9 @@ public final class PlaybackActivityMonitor for (int uid : mBannedUids) { pw.print(" " + uid); } - pw.println(); + pw.println("\n"); + // log + sEventLogger.dump(pw); } } @@ -264,7 +348,11 @@ public final class PlaybackActivityMonitor return true; } - private void dispatchPlaybackChange() { + /** + * Sends new list after update of playback configurations + * @param iplayerReleased indicates if the change was due to a player being released + */ + private void dispatchPlaybackChange(boolean iplayerReleased) { synchronized (mClients) { // typical use case, nobody is listening, don't do any work if (mClients.isEmpty()) { @@ -295,9 +383,12 @@ public final class PlaybackActivityMonitor // do not spam the logs if there are problems communicating with this client if (pmc.mErrorCount < PlayMonitorClient.MAX_ERRORS) { if (pmc.mIsPrivileged) { - pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem); + pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsSystem, + iplayerReleased); } else { - pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic); + // non-system clients don't have the control interface IPlayer, so + // they don't need to flush commands when a player was released + pmc.mDispatcherCb.dispatchPlaybackConfigChange(configsPublic, false); } } } catch (RemoteException e) { @@ -412,7 +503,8 @@ public final class PlaybackActivityMonitor } if (mute) { try { - Log.v(TAG, "call: muting player" + piid + " uid:" + apc.getClientUid()); + sEventLogger.log((new AudioEventLogger.StringEvent("call: muting piid:" + + piid + " uid:" + apc.getClientUid())).printLog(TAG)); apc.getPlayerProxy().setVolume(0.0f); mMutedPlayers.add(new Integer(piid)); } catch (Exception e) { @@ -436,7 +528,8 @@ public final class PlaybackActivityMonitor final AudioPlaybackConfiguration apc = mPlayers.get(piid); if (apc != null) { try { - Log.v(TAG, "call: unmuting player" + piid + " uid:" + apc.getClientUid()); + sEventLogger.log(new AudioEventLogger.StringEvent("call: unmuting piid:" + + piid).printLog(TAG)); apc.getPlayerProxy().setVolume(1.0f); } catch (Exception e) { Log.e(TAG, "call: error unmuting player " + piid + " uid:" @@ -625,8 +718,7 @@ public final class PlaybackActivityMonitor return; } try { - Log.v(TAG, "ducking (skipRamp=" + skipRamp + ") player piid:" - + apc.getPlayerInterfaceId() + " uid:" + mUid); + sEventLogger.log((new DuckEvent(apc, skipRamp)).printLog(TAG)); apc.getPlayerProxy().applyVolumeShaper( DUCK_VSHAPE, skipRamp ? PLAY_SKIP_RAMP : PLAY_CREATE_IF_NEEDED); @@ -641,7 +733,8 @@ public final class PlaybackActivityMonitor final AudioPlaybackConfiguration apc = players.get(piid); if (apc != null) { try { - Log.v(TAG, "unducking player " + piid + " uid:" + mUid); + sEventLogger.log((new AudioEventLogger.StringEvent("unducking piid:" + + piid)).printLog(TAG)); apc.getPlayerProxy().applyVolumeShaper( DUCK_ID, VolumeShaper.Operation.REVERSE); @@ -664,4 +757,106 @@ public final class PlaybackActivityMonitor } } } + + //================================================================= + // For logging + private final static class PlayerEvent extends AudioEventLogger.Event { + // only keeping the player interface ID as it uniquely identifies the player in the event + final int mPlayerIId; + final int mState; + + PlayerEvent(int piid, int state) { + mPlayerIId = piid; + mState = state; + } + + @Override + public String eventToString() { + return new StringBuilder("player piid:").append(mPlayerIId).append(" state:") + .append(AudioPlaybackConfiguration.toLogFriendlyPlayerState(mState)).toString(); + } + } + + private final static class PlayerOpPlayAudioEvent extends AudioEventLogger.Event { + // only keeping the player interface ID as it uniquely identifies the player in the event + final int mPlayerIId; + final boolean mHasOp; + final int mUid; + + PlayerOpPlayAudioEvent(int piid, boolean hasOp, int uid) { + mPlayerIId = piid; + mHasOp = hasOp; + mUid = uid; + } + + @Override + public String eventToString() { + return new StringBuilder("player piid:").append(mPlayerIId) + .append(" has OP_PLAY_AUDIO:").append(mHasOp) + .append(" in uid:").append(mUid).toString(); + } + } + + private final static class NewPlayerEvent extends AudioEventLogger.Event { + private final int mPlayerIId; + private final int mPlayerType; + private final int mClientUid; + private final int mClientPid; + private final AudioAttributes mPlayerAttr; + + NewPlayerEvent(AudioPlaybackConfiguration apc) { + mPlayerIId = apc.getPlayerInterfaceId(); + mPlayerType = apc.getPlayerType(); + mClientUid = apc.getClientUid(); + mClientPid = apc.getClientPid(); + mPlayerAttr = apc.getAudioAttributes(); + } + + @Override + public String eventToString() { + return new String("new player piid:" + mPlayerIId + " uid/pid:" + mClientUid + "/" + + mClientPid + " type:" + + AudioPlaybackConfiguration.toLogFriendlyPlayerType(mPlayerType) + + " attr:" + mPlayerAttr); + } + } + + private static final class DuckEvent extends AudioEventLogger.Event { + private final int mPlayerIId; + private final boolean mSkipRamp; + private final int mClientUid; + private final int mClientPid; + + DuckEvent(@NonNull AudioPlaybackConfiguration apc, boolean skipRamp) { + mPlayerIId = apc.getPlayerInterfaceId(); + mSkipRamp = skipRamp; + mClientUid = apc.getClientUid(); + mClientPid = apc.getClientPid(); + } + + @Override + public String eventToString() { + return new StringBuilder("ducking player piid:").append(mPlayerIId) + .append(" uid/pid:").append(mClientUid).append("/").append(mClientPid) + .append(" skip ramp:").append(mSkipRamp).toString(); + } + } + + private static final class AudioAttrEvent extends AudioEventLogger.Event { + private final int mPlayerIId; + private final AudioAttributes mPlayerAttr; + + AudioAttrEvent(int piid, AudioAttributes attr) { + mPlayerIId = piid; + mPlayerAttr = attr; + } + + @Override + public String eventToString() { + return new String("player piid:" + mPlayerIId + " new AudioAttributes:" + mPlayerAttr); + } + } + + private static final AudioEventLogger sEventLogger = new AudioEventLogger(100, + "playback activity as reported through PlayerBase"); } diff --git a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java index 57d55de8d00200c7703ee2c6e619a7cc3b45c848..34309b62d2f7fbcc2467b8866fd4a2abf50076a7 100644 --- a/services/core/java/com/android/server/audio/RecordingActivityMonitor.java +++ b/services/core/java/com/android/server/audio/RecordingActivityMonitor.java @@ -16,8 +16,11 @@ package com.android.server.audio; +import android.content.Context; +import android.content.pm.PackageManager; import android.media.AudioFormat; import android.media.AudioManager; +import android.media.AudioPlaybackConfiguration; import android.media.AudioRecordingConfiguration; import android.media.AudioSystem; import android.media.IRecordingConfigDispatcher; @@ -26,7 +29,10 @@ import android.os.IBinder; import android.os.RemoteException; import android.util.Log; +import java.io.PrintWriter; +import java.text.DateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -39,31 +45,47 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin public final static String TAG = "AudioService.RecordingActivityMonitor"; private ArrayList mClients = new ArrayList(); + // a public client is one that needs an anonymized version of the playback configurations, we + // keep track of whether there is at least one to know when we need to create the list of + // playback configurations that do not contain uid/package name information. + private boolean mHasPublicClients = false; private HashMap mRecordConfigs = new HashMap(); - RecordingActivityMonitor() { + private final PackageManager mPackMan; + + RecordingActivityMonitor(Context ctxt) { RecMonitorClient.sMonitor = this; + mPackMan = ctxt.getPackageManager(); } /** * Implementation of android.media.AudioSystem.AudioRecordingCallback */ - public void onRecordingConfigurationChanged(int event, int session, int source, - int[] recordingInfo) { + public void onRecordingConfigurationChanged(int event, int uid, int session, int source, + int[] recordingInfo, String packName) { if (MediaRecorder.isSystemOnlyAudioSource(source)) { return; } - final List configs = - updateSnapshot(event, session, source, recordingInfo); - if (configs != null){ - synchronized(mClients) { + final List configsSystem = + updateSnapshot(event, uid, session, source, recordingInfo); + if (configsSystem != null){ + synchronized (mClients) { + // list of recording configurations for "public consumption". It is only computed if + // there are non-system recording activity listeners. + final List configsPublic = mHasPublicClients ? + anonymizeForPublicConsumption(configsSystem) : + new ArrayList(); final Iterator clientIterator = mClients.iterator(); while (clientIterator.hasNext()) { + final RecMonitorClient rmc = clientIterator.next(); try { - clientIterator.next().mDispatcherCb.dispatchRecordingConfigChange( - configs); + if (rmc.mIsPrivileged) { + rmc.mDispatcherCb.dispatchRecordingConfigChange(configsSystem); + } else { + rmc.mDispatcherCb.dispatchRecordingConfigChange(configsPublic); + } } catch (RemoteException e) { Log.w(TAG, "Could not call dispatchRecordingConfigChange() on client", e); } @@ -72,17 +94,42 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin } } + protected void dump(PrintWriter pw) { + // players + pw.println("\nRecordActivityMonitor dump time: " + + DateFormat.getTimeInstance().format(new Date())); + synchronized(mRecordConfigs) { + for (AudioRecordingConfiguration conf : mRecordConfigs.values()) { + conf.dump(pw); + } + } + } + + private ArrayList anonymizeForPublicConsumption( + List sysConfigs) { + ArrayList publicConfigs = + new ArrayList(); + // only add active anonymized configurations, + for (AudioRecordingConfiguration config : sysConfigs) { + publicConfigs.add(AudioRecordingConfiguration.anonymizedCopy(config)); + } + return publicConfigs; + } + void initMonitor() { AudioSystem.setRecordingCallback(this); } - void registerRecordingCallback(IRecordingConfigDispatcher rcdb) { + void registerRecordingCallback(IRecordingConfigDispatcher rcdb, boolean isPrivileged) { if (rcdb == null) { return; } - synchronized(mClients) { - final RecMonitorClient rmc = new RecMonitorClient(rcdb); + synchronized (mClients) { + final RecMonitorClient rmc = new RecMonitorClient(rcdb, isPrivileged); if (rmc.init()) { + if (!isPrivileged) { + mHasPublicClients = true; + } mClients.add(rmc); } } @@ -92,22 +139,34 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin if (rcdb == null) { return; } - synchronized(mClients) { + synchronized (mClients) { final Iterator clientIterator = mClients.iterator(); + boolean hasPublicClients = false; while (clientIterator.hasNext()) { RecMonitorClient rmc = clientIterator.next(); if (rcdb.equals(rmc.mDispatcherCb)) { rmc.release(); clientIterator.remove(); - break; + } else { + if (!rmc.mIsPrivileged) { + hasPublicClients = true; + } } } + mHasPublicClients = hasPublicClients; } } - List getActiveRecordingConfigurations() { + List getActiveRecordingConfigurations(boolean isPrivileged) { synchronized(mRecordConfigs) { - return new ArrayList(mRecordConfigs.values()); + if (isPrivileged) { + return new ArrayList(mRecordConfigs.values()); + } else { + final List configsPublic = + anonymizeForPublicConsumption( + new ArrayList(mRecordConfigs.values())); + return configsPublic; + } } } @@ -122,8 +181,8 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin * @return null if the list of active recording sessions has not been modified, a list * with the current active configurations otherwise. */ - private List updateSnapshot(int event, int session, int source, - int[] recordingInfo) { + private List updateSnapshot(int event, int uid, int session, + int source, int[] recordingInfo) { final boolean configChanged; final ArrayList configs; synchronized(mRecordConfigs) { @@ -147,10 +206,19 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin .build(); final int patchHandle = recordingInfo[6]; final Integer sessionKey = new Integer(session); + + final String[] packages = mPackMan.getPackagesForUid(uid); + final String packageName; + if (packages != null && packages.length > 0) { + packageName = packages[0]; + } else { + packageName = ""; + } + final AudioRecordingConfiguration updatedConfig = + new AudioRecordingConfiguration(uid, session, source, + clientFormat, deviceFormat, patchHandle, packageName); + if (mRecordConfigs.containsKey(sessionKey)) { - final AudioRecordingConfiguration updatedConfig = - new AudioRecordingConfiguration(session, source, - clientFormat, deviceFormat, patchHandle); if (updatedConfig.equals(mRecordConfigs.get(sessionKey))) { configChanged = false; } else { @@ -160,9 +228,7 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin configChanged = true; } } else { - mRecordConfigs.put(sessionKey, - new AudioRecordingConfiguration(session, source, - clientFormat, deviceFormat, patchHandle)); + mRecordConfigs.put(sessionKey, updatedConfig); configChanged = true; } break; @@ -189,9 +255,11 @@ public final class RecordingActivityMonitor implements AudioSystem.AudioRecordin static RecordingActivityMonitor sMonitor; final IRecordingConfigDispatcher mDispatcherCb; + final boolean mIsPrivileged; - RecMonitorClient(IRecordingConfigDispatcher rcdb) { + RecMonitorClient(IRecordingConfigDispatcher rcdb, boolean isPrivileged) { mDispatcherCb = rcdb; + mIsPrivileged = isPrivileged; } public void binderDied() { diff --git a/services/core/java/com/android/server/radio/RadioService.java b/services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java similarity index 58% rename from services/core/java/com/android/server/radio/RadioService.java rename to services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java index 34bbffd16cf6f43b47b2677cea59680c463070ae..8fdbcf6c657b17e91a0d68472338a986ee0e680d 100644 --- a/services/core/java/com/android/server/radio/RadioService.java +++ b/services/core/java/com/android/server/broadcastradio/BroadcastRadioService.java @@ -14,22 +14,23 @@ * limitations under the License. */ -package com.android.server.radio; +package com.android.server.broadcastradio; +import android.Manifest; import android.content.Context; +import android.content.pm.PackageManager; import android.hardware.radio.IRadioService; import android.hardware.radio.ITuner; import android.hardware.radio.ITunerCallback; import android.hardware.radio.RadioManager; -import android.util.Slog; +import android.os.ParcelableException; import com.android.server.SystemService; -public class RadioService extends SystemService { - // TODO(b/36863239): rename to RadioService when native service goes away - private static final String TAG = "RadioServiceJava"; +import java.util.List; - private final RadioServiceImpl mServiceImpl = new RadioServiceImpl(); +public class BroadcastRadioService extends SystemService { + private final ServiceImpl mServiceImpl = new ServiceImpl(); /** * This field is used by native code, do not access or modify. @@ -37,8 +38,9 @@ public class RadioService extends SystemService { private final long mNativeContext = nativeInit(); private final Object mLock = new Object(); + private List mModules = null; - public RadioService(Context context) { + public BroadcastRadioService(Context context) { super(context); } @@ -50,24 +52,47 @@ public class RadioService extends SystemService { private native long nativeInit(); private native void nativeFinalize(long nativeContext); + private native List nativeLoadModules(long nativeContext); private native Tuner nativeOpenTuner(long nativeContext, int moduleId, RadioManager.BandConfig config, boolean withAudio, ITunerCallback callback); @Override public void onStart() { publishBinderService(Context.RADIO_SERVICE, mServiceImpl); - Slog.v(TAG, "RadioService started"); } - private class RadioServiceImpl extends IRadioService.Stub { + private class ServiceImpl extends IRadioService.Stub { + private void enforcePolicyAccess() { + if (PackageManager.PERMISSION_GRANTED != getContext().checkCallingPermission( + Manifest.permission.ACCESS_BROADCAST_RADIO)) { + throw new SecurityException("ACCESS_BROADCAST_RADIO permission not granted"); + } + } + + @Override + public List listModules() { + enforcePolicyAccess(); + synchronized (mLock) { + if (mModules != null) return mModules; + + mModules = nativeLoadModules(mNativeContext); + if (mModules == null) { + throw new ParcelableException(new NullPointerException( + "couldn't load radio modules")); + } + + return mModules; + } + } + @Override public ITuner openTuner(int moduleId, RadioManager.BandConfig bandConfig, boolean withAudio, ITunerCallback callback) { + enforcePolicyAccess(); if (callback == null) { throw new IllegalArgumentException("Callback must not be empty"); } synchronized (mLock) { - // TODO(b/36863239): add death monitoring for binder return nativeOpenTuner(mNativeContext, moduleId, bandConfig, withAudio, callback); } } diff --git a/services/core/java/com/android/server/broadcastradio/Convert.java b/services/core/java/com/android/server/broadcastradio/Convert.java new file mode 100644 index 0000000000000000000000000000000000000000..125554fc3025b77f9ab0b8e8e872fa3dd9259056 --- /dev/null +++ b/services/core/java/com/android/server/broadcastradio/Convert.java @@ -0,0 +1,59 @@ +/** + * 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.broadcastradio; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.util.Slog; + +import java.util.Map; +import java.util.Set; + +class Convert { + private static final String TAG = "BroadcastRadioService.Convert"; + + /** + * Converts string map to an array that's easily accessible by native code. + * + * Calling this java method once is more efficient than converting map object on the native + * side, which requires several separate java calls for each element. + * + * @param map map to convert. + * @returns array (sized the same as map) of two-element string arrays + * (first element is the key, second is value). + */ + static @NonNull String[][] stringMapToNative(@Nullable Map map) { + if (map == null) { + Slog.v(TAG, "map is null, returning zero-elements array"); + return new String[0][0]; + } + + Set> entries = map.entrySet(); + int len = entries.size(); + String[][] arr = new String[len][2]; + + int i = 0; + for (Map.Entry entry : entries) { + arr[i][0] = entry.getKey(); + arr[i][1] = entry.getValue(); + i++; + } + + Slog.v(TAG, "converted " + i + " element(s)"); + return arr; + } +} diff --git a/services/core/java/com/android/server/radio/Tuner.java b/services/core/java/com/android/server/broadcastradio/Tuner.java similarity index 70% rename from services/core/java/com/android/server/radio/Tuner.java rename to services/core/java/com/android/server/broadcastradio/Tuner.java index 9915c34fb58238b681a0bd1d7f50ffea8ed8c1bb..e6ae320cf38d6503e23699850df0247661151d73 100644 --- a/services/core/java/com/android/server/radio/Tuner.java +++ b/services/core/java/com/android/server/broadcastradio/Tuner.java @@ -14,37 +14,53 @@ * limitations under the License. */ -package com.android.server.radio; +package com.android.server.broadcastradio; import android.annotation.NonNull; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.hardware.radio.ITuner; import android.hardware.radio.ITunerCallback; +import android.hardware.radio.ProgramSelector; import android.hardware.radio.RadioManager; +import android.os.IBinder; +import android.os.RemoteException; import android.util.Slog; import java.util.List; +import java.util.Map; class Tuner extends ITuner.Stub { - // TODO(b/36863239): rename to RadioService.Tuner when native service goes away - private static final String TAG = "RadioServiceJava.Tuner"; + private static final String TAG = "BroadcastRadioService.Tuner"; /** * This field is used by native code, do not access or modify. */ private final long mNativeContext; - @NonNull private final TunerCallback mTunerCallback; private final Object mLock = new Object(); + @NonNull private final TunerCallback mTunerCallback; + @NonNull private final ITunerCallback mClientCallback; + @NonNull private final IBinder.DeathRecipient mDeathRecipient; + private boolean mIsClosed = false; private boolean mIsMuted = false; - private int mRegion; // TODO(b/36863239): find better solution to manage regions + private int mRegion; // TODO(b/62710330): find better solution to handle regions private final boolean mWithAudio; - Tuner(@NonNull ITunerCallback clientCallback, int halRev, int region, boolean withAudio) { + Tuner(@NonNull ITunerCallback clientCallback, int halRev, + int region, boolean withAudio, int band) { + mClientCallback = clientCallback; mTunerCallback = new TunerCallback(this, clientCallback, halRev); mRegion = region; mWithAudio = withAudio; - mNativeContext = nativeInit(halRev); + mNativeContext = nativeInit(halRev, withAudio, band); + mDeathRecipient = this::close; + try { + mClientCallback.asBinder().linkToDeath(mDeathRecipient, 0); + } catch (RemoteException ex) { + close(); + } } @Override @@ -53,7 +69,7 @@ class Tuner extends ITuner.Stub { super.finalize(); } - private native long nativeInit(int halRev); + private native long nativeInit(int halRev, boolean withAudio, int band); private native void nativeFinalize(long nativeContext); private native void nativeClose(long nativeContext); @@ -61,15 +77,21 @@ class Tuner extends ITuner.Stub { @NonNull RadioManager.BandConfig config); private native RadioManager.BandConfig nativeGetConfiguration(long nativeContext, int region); + private native void nativeSetMuted(long nativeContext, boolean mute); + private native void nativeStep(long nativeContext, boolean directionDown, boolean skipSubChannel); private native void nativeScan(long nativeContext, boolean directionDown, boolean skipSubChannel); - private native void nativeTune(long nativeContext, int channel, int subChannel); + private native void nativeTune(long nativeContext, @NonNull ProgramSelector selector); private native void nativeCancel(long nativeContext); + private native void nativeCancelAnnouncement(long nativeContext); + private native RadioManager.ProgramInfo nativeGetProgramInformation(long nativeContext); private native boolean nativeStartBackgroundScan(long nativeContext); private native List nativeGetProgramList(long nativeContext, - String filter); + Map vendorFilter); + + private native byte[] nativeGetImage(long nativeContext, int id); private native boolean nativeIsAnalogForced(long nativeContext); private native void nativeSetAnalogForced(long nativeContext, boolean isForced); @@ -80,12 +102,18 @@ class Tuner extends ITuner.Stub { public void close() { synchronized (mLock) { if (mIsClosed) return; + mIsClosed = true; mTunerCallback.detach(); + mClientCallback.asBinder().unlinkToDeath(mDeathRecipient, 0); nativeClose(mNativeContext); - mIsClosed = true; } } + @Override + public boolean isClosed() { + return mIsClosed; + } + private void checkNotClosedLocked() { if (mIsClosed) { throw new IllegalStateException("Tuner is closed, no further operations are allowed"); @@ -122,8 +150,7 @@ class Tuner extends ITuner.Stub { if (mIsMuted == mute) return; mIsMuted = mute; - // TODO(b/34348946): notifify audio policy manager of media activity on radio audio - // device. This task is pulled directly from previous implementation of native service. + nativeSetMuted(mNativeContext, mute); } } @@ -156,10 +183,14 @@ class Tuner extends ITuner.Stub { } @Override - public void tune(int channel, int subChannel) { + public void tune(ProgramSelector selector) { + if (selector == null) { + throw new IllegalArgumentException("The argument must not be a null pointer"); + } + Slog.i(TAG, "Tuning to " + selector); synchronized (mLock) { checkNotClosedLocked(); - nativeTune(mNativeContext, channel, subChannel); + nativeTune(mNativeContext, selector); } } @@ -171,6 +202,14 @@ class Tuner extends ITuner.Stub { } } + @Override + public void cancelAnnouncement() { + synchronized (mLock) { + checkNotClosedLocked(); + nativeCancelAnnouncement(mNativeContext); + } + } + @Override public RadioManager.ProgramInfo getProgramInformation() { synchronized (mLock) { @@ -179,6 +218,23 @@ class Tuner extends ITuner.Stub { } } + @Override + public Bitmap getImage(int id) { + if (id == 0) { + throw new IllegalArgumentException("Image ID is missing"); + } + + byte[] rawImage; + synchronized (mLock) { + rawImage = nativeGetImage(mNativeContext, id); + } + if (rawImage == null || rawImage.length == 0) { + return null; + } + + return BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length); + } + @Override public boolean startBackgroundScan() { synchronized (mLock) { @@ -188,10 +244,11 @@ class Tuner extends ITuner.Stub { } @Override - public List getProgramList(String filter) { + public List getProgramList(Map vendorFilter) { + Map sFilter = vendorFilter; synchronized (mLock) { checkNotClosedLocked(); - List list = nativeGetProgramList(mNativeContext, filter); + List list = nativeGetProgramList(mNativeContext, sFilter); if (list == null) { throw new IllegalStateException("Program list is not ready"); } diff --git a/services/core/java/com/android/server/radio/TunerCallback.java b/services/core/java/com/android/server/broadcastradio/TunerCallback.java similarity index 60% rename from services/core/java/com/android/server/radio/TunerCallback.java rename to services/core/java/com/android/server/broadcastradio/TunerCallback.java index fcc874b0ce9391c899cc532cbf3aef78a8b9091f..a87ae8d65bf84e7af80c0b61571992620e906cb5 100644 --- a/services/core/java/com/android/server/radio/TunerCallback.java +++ b/services/core/java/com/android/server/broadcastradio/TunerCallback.java @@ -14,20 +14,20 @@ * limitations under the License. */ -package com.android.server.radio; +package com.android.server.broadcastradio; import android.annotation.NonNull; import android.hardware.radio.ITuner; import android.hardware.radio.ITunerCallback; import android.hardware.radio.RadioManager; +import android.hardware.radio.RadioMetadata; import android.hardware.radio.RadioTuner; import android.os.IBinder; import android.os.RemoteException; import android.util.Slog; class TunerCallback implements ITunerCallback { - // TODO(b/36863239): rename to RadioService.TunerCallback when native service goes away - private static final String TAG = "RadioServiceJava.TunerCallback"; + private static final String TAG = "BroadcastRadioService.TunerCallback"; /** * This field is used by native code, do not access or modify. @@ -57,6 +57,18 @@ class TunerCallback implements ITunerCallback { nativeDetach(mNativeContext); } + private interface RunnableThrowingRemoteException { + void run() throws RemoteException; + } + + private void dispatch(RunnableThrowingRemoteException func) { + try { + func.run(); + } catch (RemoteException e) { + Slog.e(TAG, "client died", e); + } + } + // called from native side private void handleHwFailure() { onError(RadioTuner.ERROR_HARDWARE_FAILURE); @@ -65,29 +77,47 @@ class TunerCallback implements ITunerCallback { @Override public void onError(int status) { - try { - mClientCallback.onError(status); - } catch (RemoteException e) { - Slog.e(TAG, "client died", e); - } + dispatch(() -> mClientCallback.onError(status)); } @Override public void onConfigurationChanged(RadioManager.BandConfig config) { - try { - mClientCallback.onConfigurationChanged(config); - } catch (RemoteException e) { - Slog.e(TAG, "client died", e); - } + dispatch(() -> mClientCallback.onConfigurationChanged(config)); } @Override - public void onProgramInfoChanged(RadioManager.ProgramInfo info) { - try { - mClientCallback.onProgramInfoChanged(info); - } catch (RemoteException e) { - Slog.e(TAG, "client died", e); - } + public void onCurrentProgramInfoChanged(RadioManager.ProgramInfo info) { + dispatch(() -> mClientCallback.onCurrentProgramInfoChanged(info)); + } + + @Override + public void onTrafficAnnouncement(boolean active) { + dispatch(() -> mClientCallback.onTrafficAnnouncement(active)); + } + + @Override + public void onEmergencyAnnouncement(boolean active) { + dispatch(() -> mClientCallback.onEmergencyAnnouncement(active)); + } + + @Override + public void onAntennaState(boolean connected) { + dispatch(() -> mClientCallback.onAntennaState(connected)); + } + + @Override + public void onBackgroundScanAvailabilityChange(boolean isAvailable) { + dispatch(() -> mClientCallback.onBackgroundScanAvailabilityChange(isAvailable)); + } + + @Override + public void onBackgroundScanComplete() { + dispatch(() -> mClientCallback.onBackgroundScanComplete()); + } + + @Override + public void onProgramListChanged() { + dispatch(() -> mClientCallback.onProgramListChanged()); } @Override diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java index db72c5e4cbab617d24aa7e00b68e6a8e1056ca50..0c9d70a95ab914457974315a15eeb8dd825fa388 100644 --- a/services/core/java/com/android/server/clipboard/ClipboardService.java +++ b/services/core/java/com/android/server/clipboard/ClipboardService.java @@ -20,6 +20,7 @@ import android.app.ActivityManager; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.IActivityManager; +import android.app.KeyguardManager; import android.content.ClipData; import android.content.ClipDescription; import android.content.ContentProvider; @@ -304,7 +305,7 @@ public class ClipboardService extends SystemService { public ClipData getPrimaryClip(String pkg) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, pkg, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return null; } addActiveOwnerLocked(Binder.getCallingUid(), pkg); @@ -316,7 +317,7 @@ public class ClipboardService extends SystemService { public ClipDescription getPrimaryClipDescription(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return null; } PerUserClipboard clipboard = getClipboard(); @@ -328,7 +329,7 @@ public class ClipboardService extends SystemService { public boolean hasPrimaryClip(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return false; } return getClipboard().primaryClip != null; @@ -355,7 +356,7 @@ public class ClipboardService extends SystemService { public boolean hasClipboardText(String callingPackage) { synchronized (this) { if (!clipboardAccessAllowed(AppOpsManager.OP_READ_CLIPBOARD, callingPackage, - Binder.getCallingUid())) { + Binder.getCallingUid()) || isDeviceLocked()) { return false; } PerUserClipboard clipboard = getClipboard(); @@ -433,6 +434,18 @@ public class ClipboardService extends SystemService { } } + private boolean isDeviceLocked() { + int callingUserId = UserHandle.getCallingUserId(); + final long token = Binder.clearCallingIdentity(); + try { + final KeyguardManager keyguardManager = getContext().getSystemService( + KeyguardManager.class); + return keyguardManager != null && keyguardManager.isDeviceLocked(callingUserId); + } finally { + Binder.restoreCallingIdentity(token); + } + } + private final void checkUriOwnerLocked(Uri uri, int uid) { if (!"content".equals(uri.getScheme())) { return; diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java index f8c6582729f09488d3683818462d624a05853290..76195c4ac7d483b7c66c11b357ea688433b11c4e 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java @@ -42,7 +42,7 @@ public class OffloadHardwareInterface { // Change this value to control whether tether offload is enabled or // disabled by default in the absence of an explicit Settings value. // See accompanying unittest to distinguish 0 from non-0 values. - private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 1; + private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 0; private static final String NO_INTERFACE_NAME = ""; private static final String NO_IPV4_ADDRESS = ""; private static final String NO_IPV4_GATEWAY = ""; diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java index ad74ff88e80faeaa5608ca2cffa4a834c715cf05..6e1c21eea15abef500167373a33a22543a3236cd 100644 --- a/services/core/java/com/android/server/content/ContentService.java +++ b/services/core/java/com/android/server/content/ContentService.java @@ -646,6 +646,7 @@ public final class ContentService extends IContentService.Stub { SyncManager syncManager = getSyncManager(); if (syncManager == null) return; int userId = UserHandle.getCallingUserId(); + final int callingUid = Binder.getCallingUid(); long identityToken = clearCallingIdentity(); try { @@ -658,7 +659,8 @@ public final class ContentService extends IContentService.Stub { // Remove periodic sync. mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SYNC_SETTINGS, "no permission to write the sync settings"); - getSyncManager().removePeriodicSync(info, extras); + getSyncManager().removePeriodicSync(info, extras, + "cancelRequest() by uid=" + callingUid); } // Cancel active syncs and clear pending syncs from the queue. syncManager.cancelScheduledSyncOperation(info, extras); @@ -814,13 +816,15 @@ public final class ContentService extends IContentService.Stub { mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SYNC_SETTINGS, "no permission to write the sync settings"); + final int callingUid = Binder.getCallingUid(); + int userId = UserHandle.getCallingUserId(); long identityToken = clearCallingIdentity(); try { getSyncManager() .removePeriodicSync( new SyncStorageEngine.EndPoint(account, authority, userId), - extras); + extras, "removePeriodicSync() by uid=" + callingUid); } finally { restoreCallingIdentity(identityToken); } diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index a9c0cb0fb661fddb2aed3fd0789a77bd9b44be0d..205e8283cc55ad25605985ded316d60978909e18 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -59,6 +59,7 @@ import android.net.NetworkInfo; import android.net.TrafficStats; import android.os.BatteryStats; import android.os.Binder; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -98,6 +99,7 @@ import com.android.server.backup.AccountSyncSettingsBackupHelper; import com.android.server.content.SyncStorageEngine.AuthorityInfo; import com.android.server.content.SyncStorageEngine.EndPoint; import com.android.server.content.SyncStorageEngine.OnSyncRequestListener; +import com.android.server.job.JobSchedulerInternal.JobStorePersistStats; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -141,6 +143,9 @@ public class SyncManager { private static final boolean DEBUG_ACCOUNT_ACCESS = false; + // Only do the check on a debuggable build. + private static final boolean ENABLE_SUSPICIOUS_CHECK = Build.IS_DEBUGGABLE; + /** Delay a sync due to local changes this long. In milliseconds */ private static final long LOCAL_SYNC_DELAY; @@ -400,12 +405,21 @@ public class SyncManager { return (networkInfo != null) && networkInfo.isConnected(); } + private String getJobStats() { + JobSchedulerInternal js = LocalServices.getService(JobSchedulerInternal.class); + return "JobStats: " + + ((js == null) ? "(JobSchedulerInternal==null)" + : js.getPersistStats().toString()); + } + private BroadcastReceiver mShutdownIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Log.w(TAG, "Writing sync state before shutdown..."); getSyncStorageEngine().writeAllState(); + + mLogger.log(getJobStats()); mLogger.log("Shutting down."); } }; @@ -463,7 +477,7 @@ public class SyncManager { } if (opx.key.equals(opy.key)) { mLogger.log("Removing duplicate sync: ", opy); - mJobScheduler.cancel(opy.jobId); + cancelJob(opy, "cleanupJobs() x=" + opx + " y=" + opy); } } } @@ -501,15 +515,19 @@ public class SyncManager { } } } - if (mLogger.enabled()) { - mLogger.log("Connected to JobScheduler: " - + numPersistedPeriodicSyncs + " periodic syncs " - + numPersistedOneshotSyncs + " oneshot syncs."); - } + final String summary = "Loaded persisted syncs: " + + numPersistedPeriodicSyncs + " periodic syncs, " + + numPersistedOneshotSyncs + " oneshot syncs, " + + (pendingJobs.size()) + " total system server jobs, " + + getJobStats(); + Slog.i(TAG, summary); + mLogger.log(summary); + cleanupJobs(); - if ((numPersistedPeriodicSyncs == 0) && likelyHasPeriodicSyncs()) { - Slog.wtf(TAG, "Device booted with no persisted periodic syncs."); + if (ENABLE_SUSPICIOUS_CHECK && + (numPersistedPeriodicSyncs == 0) && likelyHasPeriodicSyncs()) { + Slog.wtf(TAG, "Device booted with no persisted periodic syncs: " + summary); } } finally { Binder.restoreCallingIdentity(token); @@ -521,7 +539,10 @@ public class SyncManager { */ private boolean likelyHasPeriodicSyncs() { try { - return AccountManager.get(mContext).getAccountsByType("com.google").length > 0; + // Each sync adapter has a daily periodic sync by default, but sync adapters can remove + // them by themselves. So here, we use an arbitrary threshold. If there are more than + // this many sync endpoints, surely one of them should have a periodic sync... + return mSyncStorageEngine.getAuthorityCount() >= 6; } catch (Throwable th) { // Just in case. } @@ -566,7 +587,7 @@ public class SyncManager { mSyncStorageEngine.setOnAuthorityRemovedListener(new SyncStorageEngine.OnAuthorityRemovedListener() { @Override public void onAuthorityRemoved(EndPoint removedAuthority) { - removeSyncsForAuthority(removedAuthority); + removeSyncsForAuthority(removedAuthority, "onAuthorityRemoved"); } }); @@ -710,7 +731,7 @@ public class SyncManager { // the account (they run before) which is the genie is out of the bottle. whiteListExistingSyncAdaptersIfNeeded(); - mLogger.log("Sync manager initialized."); + mLogger.log("Sync manager initialized: " + Build.FINGERPRINT); } public void onStartUser(int userHandle) { @@ -1118,14 +1139,14 @@ public class SyncManager { } } - private void removeSyncsForAuthority(EndPoint info) { + private void removeSyncsForAuthority(EndPoint info, String why) { mLogger.log("removeSyncsForAuthority: ", info); verifyJobScheduler(); List ops = getAllPendingSyncs(); for (SyncOperation op: ops) { if (op.target.matchesSpec(info)) { mLogger.log("canceling: ", op); - getJobScheduler().cancel(op.jobId); + cancelJob(op, why); } } } @@ -1133,8 +1154,9 @@ public class SyncManager { /** * Remove a specific periodic sync identified by its target and extras. */ - public void removePeriodicSync(EndPoint target, Bundle extras) { - Message m = mSyncHandler.obtainMessage(mSyncHandler.MESSAGE_REMOVE_PERIODIC_SYNC, target); + public void removePeriodicSync(EndPoint target, Bundle extras, String why) { + Message m = mSyncHandler.obtainMessage(mSyncHandler.MESSAGE_REMOVE_PERIODIC_SYNC, + Pair.create(target, why)); m.setData(extras); m.sendToTarget(); } @@ -1359,7 +1381,7 @@ public class SyncManager { for (SyncOperation op: ops) { if (!op.isPeriodic && op.target.matchesSpec(target)) { count++; - getJobScheduler().cancel(op.jobId); + cancelJob(op, why); postScheduleSyncMessage(op, 0 /* min delay */); } } @@ -1484,7 +1506,7 @@ public class SyncManager { if (isLoggable) { Slog.v(TAG, "Cancelling duplicate sync " + op); } - getJobScheduler().cancel(op.jobId); + cancelJob(op, "scheduleSyncOperationH-duplicate"); } } } @@ -1544,7 +1566,7 @@ public class SyncManager { List ops = getAllPendingSyncs(); for (SyncOperation op: ops) { if (!op.isPeriodic && op.target.matchesSpec(info)) { - getJobScheduler().cancel(op.jobId); + cancelJob(op, "clearScheduledSyncOperations"); getSyncStorageEngine().markPending(op.target, false); } } @@ -1562,7 +1584,7 @@ public class SyncManager { for (SyncOperation op: ops) { if (!op.isPeriodic && op.target.matchesSpec(info) && syncExtrasEquals(extras, op.extras, false)) { - getJobScheduler().cancel(op.jobId); + cancelJob(op, "cancelScheduledSyncOperation"); } } setAuthorityPendingState(info); @@ -1678,7 +1700,7 @@ public class SyncManager { List ops = getAllPendingSyncs(); for (SyncOperation op: ops) { if (op.target.userId == userId) { - getJobScheduler().cancel(op.jobId); + cancelJob(op, "user removed u" + userId); } } } @@ -2710,7 +2732,8 @@ public class SyncManager { data.flex, data.extras); break; case MESSAGE_REMOVE_PERIODIC_SYNC: - removePeriodicSyncH((EndPoint)msg.obj, msg.getData()); + Pair args = (Pair) (msg.obj); + removePeriodicSyncH(args.first, msg.getData(), args.second); break; case SyncHandler.MESSAGE_CANCEL: @@ -2848,7 +2871,7 @@ public class SyncManager { // mSyncJobService.callJobFinished is async, so cancel the job to ensure we don't // find the this job in the pending jobs list while looking for duplicates // before scheduling it at a later time. - getJobScheduler().cancel(op.jobId); + cancelJob(op, "deferSyncH()"); scheduleSyncOperationH(op, delay); } } @@ -2998,7 +3021,7 @@ public class SyncManager { for (SyncOperation op: ops) { if (!containsAccountAndUser(allAccounts, op.target.account, op.target.userId)) { mLogger.log("canceling: ", op); - getJobScheduler().cancel(op.jobId); + cancelJob(op, "updateRunningAccountsH()"); } } @@ -3105,7 +3128,7 @@ public class SyncManager { /** * Remove this periodic sync operation and all one-off operations initiated by it. */ - private void removePeriodicSyncInternalH(SyncOperation syncOperation) { + private void removePeriodicSyncInternalH(SyncOperation syncOperation, String why) { // Remove this periodic sync and all one-off syncs initiated by it. List ops = getAllPendingSyncs(); for (SyncOperation op: ops) { @@ -3117,18 +3140,18 @@ public class SyncManager { runSyncFinishedOrCanceledH(null, asc); } mLogger.log("removePeriodicSyncInternalH-canceling: ", op); - getJobScheduler().cancel(op.jobId); + cancelJob(op, why); } } } - private void removePeriodicSyncH(EndPoint target, Bundle extras) { + private void removePeriodicSyncH(EndPoint target, Bundle extras, String why) { verifyJobScheduler(); List ops = getAllPendingSyncs(); for (SyncOperation op: ops) { if (op.isPeriodic && op.target.matchesSpec(target) && syncExtrasEquals(op.extras, extras, true /* includeSyncSettings */)) { - removePeriodicSyncInternalH(op); + removePeriodicSyncInternalH(op, why); } } } @@ -3369,7 +3392,7 @@ public class SyncManager { // Note this part is probably okay to do before closeActiveSyncContext()... // But moved here to restore OC-dev's behavior. See b/64597061. if (!syncOperation.isPeriodic) { - getJobScheduler().cancel(syncOperation.jobId); + cancelJob(syncOperation, "runSyncFinishedOrCanceledH()-finished"); } if (!syncResult.hasError()) { @@ -3410,7 +3433,7 @@ public class SyncManager { } if (!syncOperation.isPeriodic) { - getJobScheduler().cancel(syncOperation.jobId); + cancelJob(syncOperation, "runSyncFinishedOrCanceledH()-canceled"); } if (activeSyncContext.mSyncAdapter != null) { @@ -3747,4 +3770,20 @@ public class SyncManager { return mContext; } } + + private void cancelJob(SyncOperation op, String why) { + if (op == null) { + Slog.wtf(TAG, "Null sync operation detected."); + return; + } + if (op.isPeriodic) { + mLogger.log("Removing periodic sync ", op, " for ", why); + } + getJobScheduler().cancel(op.jobId); + } + + private void wtfWithLog(String message) { + Slog.wtf(TAG, message); + mLogger.log("WTF: ", message); + } } diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java index 7b277c06328e77f606785d81f34af4bb07991865..3591871f5386c979e865f9c5d575bd4360fcbe48 100644 --- a/services/core/java/com/android/server/content/SyncStorageEngine.java +++ b/services/core/java/com/android/server/content/SyncStorageEngine.java @@ -911,6 +911,12 @@ public class SyncStorageEngine extends Handler { } } + public int getAuthorityCount() { + synchronized (mAuthorities) { + return mAuthorities.size(); + } + } + public AuthorityInfo getAuthority(int authorityId) { synchronized (mAuthorities) { return mAuthorities.get(authorityId); diff --git a/services/core/java/com/android/server/display/DisplayDeviceInfo.java b/services/core/java/com/android/server/display/DisplayDeviceInfo.java index ef6de4c1ee51fc9005e249c66d5c76864b883446..fddb81ba2af7f9b7df1cada829d296e281aa7433 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceInfo.java +++ b/services/core/java/com/android/server/display/DisplayDeviceInfo.java @@ -97,6 +97,12 @@ final class DisplayDeviceInfo { */ public static final int FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD = 1 << 9; + /** + * Flag: This display will destroy its content on removal. + * @hide + */ + public static final int FLAG_DESTROY_CONTENT_ON_REMOVAL = 1 << 10; + /** * Touch attachment: Display does not receive touch. */ diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 8269042da24a7eefe2b93e83b94736db34ba6e36..d0a1d9e631419ce613225656652057244236e51f 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -31,6 +31,8 @@ import android.Manifest; import android.annotation.NonNull; import android.content.Context; import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.graphics.Point; import android.hardware.SensorManager; import android.hardware.display.DisplayManagerGlobal; import android.hardware.display.DisplayManagerInternal; @@ -211,6 +213,12 @@ public final class DisplayManagerService extends SystemService { // The virtual display adapter, or null if not registered. private VirtualDisplayAdapter mVirtualDisplayAdapter; + // The stable device screen height and width. These are not tied to a specific display, even + // the default display, because they need to be stable over the course of the device's entire + // life, even if the default display changes (e.g. a new monitor is plugged into a PC-like + // device). + private Point mStableDisplaySize = new Point(); + // Viewports of the default display and the display that should receive touch // input from an external source. Used by the input system. private final DisplayViewport mDefaultViewport = new DisplayViewport(); @@ -284,7 +292,10 @@ public final class DisplayManagerService extends SystemService { // adapter is up so that we have it's configuration. We could load it lazily, but since // we're going to have to read it in eventually we may as well do it here rather than after // we've waited for the display to register itself with us. - mPersistentDataStore.loadIfNeeded(); + synchronized(mSyncRoot) { + mPersistentDataStore.loadIfNeeded(); + loadStableDisplayValuesLocked(); + } mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTERS); publishBinderService(Context.DISPLAY_SERVICE, new BinderService(), @@ -346,6 +357,34 @@ public final class DisplayManagerService extends SystemService { return mHandler; } + private void loadStableDisplayValuesLocked() { + final Point size = mPersistentDataStore.getStableDisplaySize(); + if (size.x > 0 && size.y > 0) { + // Just set these values directly so we don't write the display persistent data again + // unnecessarily + mStableDisplaySize.set(size.x, size.y); + } else { + final Resources res = mContext.getResources(); + final int width = res.getInteger( + com.android.internal.R.integer.config_stableDeviceDisplayWidth); + final int height = res.getInteger( + com.android.internal.R.integer.config_stableDeviceDisplayHeight); + if (width > 0 && height > 0) { + setStableDisplaySizeLocked(width, height); + } + } + } + + private Point getStableDisplaySizeInternal() { + Point r = new Point(); + synchronized (mSyncRoot) { + if (mStableDisplaySize.x > 0 && mStableDisplaySize.y > 0) { + r.set(mStableDisplaySize.x, mStableDisplaySize.y); + } + } + return r; + } + private void registerDisplayTransactionListenerInternal( DisplayTransactionListener listener) { // List is self-synchronized copy-on-write. @@ -770,18 +809,6 @@ public final class DisplayManagerService extends SystemService { if (work != null) { work.run(); } - if (display != null && display.getPrimaryDisplayDeviceLocked() == device) { - int colorMode = mPersistentDataStore.getColorMode(device); - if (colorMode == Display.COLOR_MODE_INVALID) { - if ((device.getDisplayDeviceInfoLocked().flags - & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) { - colorMode = mDefaultDisplayDefaultColorMode; - } else { - colorMode = Display.COLOR_MODE_DEFAULT; - } - } - display.setRequestedColorModeLocked(colorMode); - } scheduleTraversalLocked(false); } @@ -886,6 +913,11 @@ public final class DisplayManagerService extends SystemService { return null; } + configureColorModeLocked(display, device); + if (isDefault) { + recordStableDisplayStatsIfNeededLocked(display); + } + mLogicalDisplays.put(displayId, display); // Wake up waitForDefaultDisplay. @@ -907,6 +939,40 @@ public final class DisplayManagerService extends SystemService { return displayId; } + private void configureColorModeLocked(LogicalDisplay display, DisplayDevice device) { + if (display.getPrimaryDisplayDeviceLocked() == device) { + int colorMode = mPersistentDataStore.getColorMode(device); + if (colorMode == Display.COLOR_MODE_INVALID) { + if ((device.getDisplayDeviceInfoLocked().flags + & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) { + colorMode = mDefaultDisplayDefaultColorMode; + } else { + colorMode = Display.COLOR_MODE_DEFAULT; + } + } + display.setRequestedColorModeLocked(colorMode); + } + } + + // If we've never recorded stable device stats for this device before and they aren't + // explicitly configured, go ahead and record the stable device stats now based on the status + // of the default display at first boot. + private void recordStableDisplayStatsIfNeededLocked(LogicalDisplay d) { + if (mStableDisplaySize.x <= 0 && mStableDisplaySize.y <= 0) { + DisplayInfo info = d.getDisplayInfoLocked(); + setStableDisplaySizeLocked(info.getNaturalWidth(), info.getNaturalHeight()); + } + } + + private void setStableDisplaySizeLocked(int width, int height) { + mStableDisplaySize = new Point(width, height); + try { + mPersistentDataStore.setStableDisplaySize(mStableDisplaySize); + } finally { + mPersistentDataStore.saveIfNeeded(); + } + } + // Updates all existing logical displays given the current set of display devices. // Removes invalid logical displays. // Sends notifications if needed. @@ -1166,6 +1232,8 @@ public final class DisplayManagerService extends SystemService { pw.println(" mDefaultDisplayDefaultColorMode=" + mDefaultDisplayDefaultColorMode); pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode); pw.println(" mWifiDisplayScanRequestCount=" + mWifiDisplayScanRequestCount); + pw.println(" mStableDisplaySize=" + mStableDisplaySize); + IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); ipw.increaseIndent(); @@ -1378,6 +1446,19 @@ public final class DisplayManagerService extends SystemService { } } + /** + * Returns the stable device display size, in pixels. + */ + @Override // Binder call + public Point getStableDisplaySize() { + final long token = Binder.clearCallingIdentity(); + try { + return getStableDisplaySizeInternal(); + } finally { + Binder.restoreCallingIdentity(token); + } + } + @Override // Binder call public void registerCallback(IDisplayManagerCallback callback) { if (callback == null) { diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 6e6e7d112d83e34028cfa1c8c10be1a905916cf1..f8e58362e7ae80836d0c9f23362612c022d8f65f 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -16,6 +16,7 @@ package com.android.server.display; +import android.app.ActivityManager; import com.android.internal.app.IBatteryStats; import com.android.server.LocalServices; import com.android.server.am.BatteryStatsService; @@ -161,6 +162,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // True if should use light sensor to automatically determine doze screen brightness. private final boolean mAllowAutoBrightnessWhileDozingConfig; + // Whether or not the color fade on screen on / off is enabled. + private final boolean mColorFadeEnabled; + // True if we should fade the screen while turning it off, false if we should play // a stylish color fade animation instead. private boolean mColorFadeFadesConfig; @@ -419,6 +423,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mScreenBrightnessRangeMinimum = screenBrightnessRangeMinimum; + + mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic(); mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); @@ -515,17 +521,19 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Initialize the power state object for the default display. // In the future, we might manage multiple displays independently. mPowerState = new DisplayPowerState(mBlanker, - new ColorFade(Display.DEFAULT_DISPLAY)); + mColorFadeEnabled ? new ColorFade(Display.DEFAULT_DISPLAY) : null); - mColorFadeOnAnimator = ObjectAnimator.ofFloat( - mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); - mColorFadeOnAnimator.setDuration(COLOR_FADE_ON_ANIMATION_DURATION_MILLIS); - mColorFadeOnAnimator.addListener(mAnimatorListener); + if (mColorFadeEnabled) { + mColorFadeOnAnimator = ObjectAnimator.ofFloat( + mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); + mColorFadeOnAnimator.setDuration(COLOR_FADE_ON_ANIMATION_DURATION_MILLIS); + mColorFadeOnAnimator.addListener(mAnimatorListener); - mColorFadeOffAnimator = ObjectAnimator.ofFloat( - mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 1.0f, 0.0f); - mColorFadeOffAnimator.setDuration(COLOR_FADE_OFF_ANIMATION_DURATION_MILLIS); - mColorFadeOffAnimator.addListener(mAnimatorListener); + mColorFadeOffAnimator = ObjectAnimator.ofFloat( + mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 1.0f, 0.0f); + mColorFadeOffAnimator.setDuration(COLOR_FADE_OFF_ANIMATION_DURATION_MILLIS); + mColorFadeOffAnimator.addListener(mAnimatorListener); + } mScreenBrightnessRampAnimator = new RampAnimator( mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS); @@ -802,9 +810,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Note that we do not wait for the brightness ramp animation to complete before // reporting the display is ready because we only need to ensure the screen is in the // right power state even as it continues to converge on the desired brightness. - final boolean ready = mPendingScreenOnUnblocker == null - && !mColorFadeOnAnimator.isStarted() - && !mColorFadeOffAnimator.isStarted() + final boolean ready = mPendingScreenOnUnblocker == null && + (!mColorFadeEnabled || + (!mColorFadeOnAnimator.isStarted() && !mColorFadeOffAnimator.isStarted())) && mPowerState.waitUntilClean(mCleanListener); final boolean finished = ready && !mScreenBrightnessRampAnimator.isAnimating(); @@ -976,6 +984,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call Slog.d(TAG, "Animating brightness: target=" + target +", rate=" + rate); } if (mScreenBrightnessRampAnimator.animateTo(target, rate)) { + Trace.traceCounter(Trace.TRACE_TAG_POWER, "TargetScreenBrightness", target); try { mBatteryStats.noteScreenBrightness(target); } catch (RemoteException ex) { @@ -986,8 +995,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private void animateScreenStateChange(int target, boolean performScreenOffTransition) { // If there is already an animation in progress, don't interfere with it. - if (mColorFadeOnAnimator.isStarted() - || mColorFadeOffAnimator.isStarted()) { + if (mColorFadeEnabled && + (mColorFadeOnAnimator.isStarted() || mColorFadeOffAnimator.isStarted())) { if (target != Display.STATE_ON) { return; } @@ -1002,7 +1011,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // contents of the screen. mPowerState.prepareColorFade(mContext, mColorFadeFadesConfig ? ColorFade.MODE_FADE : ColorFade.MODE_WARM_UP); - mColorFadeOffAnimator.end(); + if (mColorFadeOffAnimator != null) { + mColorFadeOffAnimator.end(); + } // Some display hardware will blank itself on the transition between doze and non-doze // but still on display states. In this case we want to report to policy that the // display has turned off so it can prepare the appropriate power on animation, but we @@ -1027,7 +1038,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (!setScreenState(Display.STATE_ON)) { return; // screen on blocked } - if (USE_COLOR_FADE_ON_ANIMATION && mPowerRequest.isBrightOrDim()) { + if (USE_COLOR_FADE_ON_ANIMATION && mColorFadeEnabled && mPowerRequest.isBrightOrDim()) { // Perform screen on animation. if (mPowerState.getColorFadeLevel() == 1.0f) { mPowerState.dismissColorFade(); @@ -1103,6 +1114,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } else { // Want screen off. mPendingScreenOff = true; + if (!mColorFadeEnabled) { + mPowerState.setColorFadeLevel(0.0f); + } + if (mPowerState.getColorFadeLevel() == 0.0f) { // Turn the screen off. // A black surface is already hiding the contents of the screen. diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java index efa4a1d4f501d3ffb96a75c6bcfda70a1050e296..763f56ff918f7d7cd28141a59b6a7aca6ee1daa1 100644 --- a/services/core/java/com/android/server/display/DisplayPowerState.java +++ b/services/core/java/com/android/server/display/DisplayPowerState.java @@ -176,7 +176,7 @@ final class DisplayPowerState { * @return True if the electron beam was prepared. */ public boolean prepareColorFade(Context context, int mode) { - if (!mColorFade.prepare(context, mode)) { + if (mColorFade == null || !mColorFade.prepare(context, mode)) { mColorFadePrepared = false; mColorFadeReady = true; return false; @@ -193,7 +193,7 @@ final class DisplayPowerState { */ public void dismissColorFade() { Trace.traceCounter(Trace.TRACE_TAG_POWER, COUNTER_COLOR_FADE, 100); - mColorFade.dismiss(); + if (mColorFade != null) mColorFade.dismiss(); mColorFadePrepared = false; mColorFadeReady = true; } @@ -202,7 +202,7 @@ final class DisplayPowerState { * Dismisses the color fade resources. */ public void dismissColorFadeResources() { - mColorFade.dismissResources(); + if (mColorFade != null) mColorFade.dismissResources(); } /** @@ -272,7 +272,7 @@ final class DisplayPowerState { pw.println(" mColorFadeDrawPending=" + mColorFadeDrawPending); mPhotonicModulator.dump(pw); - mColorFade.dump(pw); + if (mColorFade != null) mColorFade.dump(pw); } private void scheduleScreenUpdate() { diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index ce5f430c148f160895b03e97917b410235b22797..d61a418c30a25c9cfcb8a011b5d04c1c027cc774 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -473,17 +473,18 @@ final class LocalDisplayAdapter extends DisplayAdapter { } // If the state change was from or to VR, then we need to tell the light - // so that it can apply appropriate VR brightness settings. This should - // happen prior to changing the brightness but also if there is no - // brightness change at all. + // so that it can apply appropriate VR brightness settings. Also, update the + // brightness so the state is propogated to light. + boolean vrModeChange = false; if ((state == Display.STATE_VR || currentState == Display.STATE_VR) && currentState != state) { setVrMode(state == Display.STATE_VR); + vrModeChange = true; } // Apply brightness changes given that we are in a non-suspended state. - if (brightnessChanged) { + if (brightnessChanged || vrModeChange) { setDisplayBrightness(brightness); } @@ -532,7 +533,7 @@ final class LocalDisplayAdapter extends DisplayAdapter { try { mBacklight.setBrightness(brightness); Trace.traceCounter(Trace.TRACE_TAG_POWER, - "DisplayBrightness", brightness); + "ScreenBrightness", brightness); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } diff --git a/services/core/java/com/android/server/display/LogicalDisplay.java b/services/core/java/com/android/server/display/LogicalDisplay.java index addad0b413a38c7ab0f5189e01c90a5a0ec57f16..78a540790db64510ca4e87b7f2fed293c07f3948 100644 --- a/services/core/java/com/android/server/display/LogicalDisplay.java +++ b/services/core/java/com/android/server/display/LogicalDisplay.java @@ -238,6 +238,9 @@ final class LogicalDisplay { // For private displays by default content is destroyed on removal. mBaseDisplayInfo.removeMode = Display.REMOVE_MODE_DESTROY_CONTENT; } + if ((deviceInfo.flags & DisplayDeviceInfo.FLAG_DESTROY_CONTENT_ON_REMOVAL) != 0) { + mBaseDisplayInfo.removeMode = Display.REMOVE_MODE_DESTROY_CONTENT; + } if ((deviceInfo.flags & DisplayDeviceInfo.FLAG_PRESENTATION) != 0) { mBaseDisplayInfo.flags |= Display.FLAG_PRESENTATION; } diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java index 026921deea558f4a7e9ce8d8b35c262412729f14..eec2c99bac5b202935d52406d548d4c462efdd1b 100644 --- a/services/core/java/com/android/server/display/NightDisplayService.java +++ b/services/core/java/com/android/server/display/NightDisplayService.java @@ -48,10 +48,14 @@ import com.android.server.twilight.TwilightListener; import com.android.server.twilight.TwilightManager; import com.android.server.twilight.TwilightState; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.Calendar; import java.util.TimeZone; +import com.android.internal.R; + import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY; /** @@ -110,19 +114,7 @@ public final class NightDisplayService extends SystemService private float[] mMatrixNight = new float[16]; - /** - * The 3x3 color transformation matrix is formatted like so: - * - * - * - * - *
        R: a coefficientG: a coefficientB: a coefficient
        R: b coefficientG: b coefficientB: b coefficient
        R: y-interceptG: y-interceptB: y-intercept
        - */ - private static final float[] mColorTempCoefficients = new float[] { - 0.0f, -0.000000014365268757f, -0.000000000910931179f, - 0.0f, 0.000255092801250106f, 0.000207598323269139f, - 1.0f, -0.064156942434907716f, -0.349361641294833436f - }; + private final float[] mColorTempCoefficients = new float[9]; private int mCurrentUser = UserHandle.USER_NULL; private ContentObserver mUserSetupObserver; @@ -136,6 +128,12 @@ public final class NightDisplayService extends SystemService public NightDisplayService(Context context) { super(context); mHandler = new Handler(Looper.getMainLooper()); + + final String[] coefficients = context.getResources().getStringArray( + R.array.config_nightDisplayColorTemperatureCoefficients); + for (int i = 0; i < 9 && i < coefficients.length; i++) { + mColorTempCoefficients[i] = Float.parseFloat(coefficients[i]); + } } @Override @@ -312,7 +310,7 @@ public final class NightDisplayService extends SystemService } @Override - public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) { + public void onCustomStartTimeChanged(LocalTime startTime) { Slog.d(TAG, "onCustomStartTimeChanged: startTime=" + startTime); if (mAutoMode != null) { @@ -321,7 +319,7 @@ public final class NightDisplayService extends SystemService } @Override - public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) { + public void onCustomEndTimeChanged(LocalTime endTime) { Slog.d(TAG, "onCustomEndTimeChanged: endTime=" + endTime); if (mAutoMode != null) { @@ -410,16 +408,46 @@ public final class NightDisplayService extends SystemService final float squareTemperature = colorTemperature * colorTemperature; final float red = squareTemperature * mColorTempCoefficients[0] - + colorTemperature * mColorTempCoefficients[3] + mColorTempCoefficients[6]; - final float green = squareTemperature * mColorTempCoefficients[1] - + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[7]; - final float blue = squareTemperature * mColorTempCoefficients[2] - + colorTemperature * mColorTempCoefficients[5] + mColorTempCoefficients[8]; + + colorTemperature * mColorTempCoefficients[1] + mColorTempCoefficients[2]; + final float green = squareTemperature * mColorTempCoefficients[3] + + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[5]; + final float blue = squareTemperature * mColorTempCoefficients[6] + + colorTemperature * mColorTempCoefficients[7] + mColorTempCoefficients[8]; outTemp[0] = red; outTemp[5] = green; outTemp[10] = blue; } + /** + * Returns the first date time corresponding to the local time that occurs before the + * provided date time. + * + * @param compareTime the LocalDateTime to compare against + * @return the prior LocalDateTime corresponding to this local time + */ + public static LocalDateTime getDateTimeBefore(LocalTime localTime, LocalDateTime compareTime) { + final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(), + compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute()); + + // Check if the local time has passed, if so return the same time yesterday. + return ldt.isAfter(compareTime) ? ldt.minusDays(1) : ldt; + } + + /** + * Returns the first date time corresponding to this local time that occurs after the + * provided date time. + * + * @param compareTime the LocalDateTime to compare against + * @return the next LocalDateTime corresponding to this local time + */ + public static LocalDateTime getDateTimeAfter(LocalTime localTime, LocalDateTime compareTime) { + final LocalDateTime ldt = LocalDateTime.of(compareTime.getYear(), compareTime.getMonth(), + compareTime.getDayOfMonth(), localTime.getHour(), localTime.getMinute()); + + // Check if the local time has passed, if so return the same time tomorrow. + return ldt.isBefore(compareTime) ? ldt.plusDays(1) : ldt; + } + private abstract class AutoMode implements NightDisplayController.Callback { public abstract void onStart(); @@ -431,10 +459,10 @@ public final class NightDisplayService extends SystemService private final AlarmManager mAlarmManager; private final BroadcastReceiver mTimeChangedReceiver; - private NightDisplayController.LocalTime mStartTime; - private NightDisplayController.LocalTime mEndTime; + private LocalTime mStartTime; + private LocalTime mEndTime; - private Calendar mLastActivatedTime; + private LocalDateTime mLastActivatedTime; CustomAutoMode() { mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); @@ -447,31 +475,15 @@ public final class NightDisplayService extends SystemService } private void updateActivated() { - final Calendar now = Calendar.getInstance(); - final Calendar startTime = mStartTime.getDateTimeBefore(now); - final Calendar endTime = mEndTime.getDateTimeAfter(startTime); + final LocalDateTime now = LocalDateTime.now(); + final LocalDateTime start = getDateTimeBefore(mStartTime, now); + final LocalDateTime end = getDateTimeAfter(mEndTime, start); + boolean activate = now.isBefore(end); - boolean activate = now.before(endTime); if (mLastActivatedTime != null) { - // Convert mLastActivatedTime to the current timezone if needed. - final TimeZone currentTimeZone = now.getTimeZone(); - if (!currentTimeZone.equals(mLastActivatedTime.getTimeZone())) { - final int year = mLastActivatedTime.get(Calendar.YEAR); - final int dayOfYear = mLastActivatedTime.get(Calendar.DAY_OF_YEAR); - final int hourOfDay = mLastActivatedTime.get(Calendar.HOUR_OF_DAY); - final int minute = mLastActivatedTime.get(Calendar.MINUTE); - - mLastActivatedTime.setTimeZone(currentTimeZone); - mLastActivatedTime.set(Calendar.YEAR, year); - mLastActivatedTime.set(Calendar.DAY_OF_YEAR, dayOfYear); - mLastActivatedTime.set(Calendar.HOUR_OF_DAY, hourOfDay); - mLastActivatedTime.set(Calendar.MINUTE, minute); - } - // Maintain the existing activated state if within the current period. - if (mLastActivatedTime.before(now) - && mLastActivatedTime.after(startTime) - && (mLastActivatedTime.after(endTime) || now.before(endTime))) { + if (mLastActivatedTime.isBefore(now) && mLastActivatedTime.isAfter(start) + && (mLastActivatedTime.isAfter(end) || now.isBefore(end))) { activate = mController.isActivated(); } } @@ -479,14 +491,16 @@ public final class NightDisplayService extends SystemService if (mIsActivated == null || mIsActivated != activate) { mController.setActivated(activate); } + updateNextAlarm(mIsActivated, now); } - private void updateNextAlarm(@Nullable Boolean activated, @NonNull Calendar now) { + private void updateNextAlarm(@Nullable Boolean activated, @NonNull LocalDateTime now) { if (activated != null) { - final Calendar next = activated ? mEndTime.getDateTimeAfter(now) - : mStartTime.getDateTimeAfter(now); - mAlarmManager.setExact(AlarmManager.RTC, next.getTimeInMillis(), TAG, this, null); + final LocalDateTime next = activated ? getDateTimeAfter(mEndTime, now) + : getDateTimeAfter(mStartTime, now); + final long millis = next.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); + mAlarmManager.setExact(AlarmManager.RTC, millis, TAG, this, null); } } @@ -516,18 +530,18 @@ public final class NightDisplayService extends SystemService @Override public void onActivated(boolean activated) { mLastActivatedTime = mController.getLastActivatedTime(); - updateNextAlarm(activated, Calendar.getInstance()); + updateNextAlarm(activated, LocalDateTime.now()); } @Override - public void onCustomStartTimeChanged(NightDisplayController.LocalTime startTime) { + public void onCustomStartTimeChanged(LocalTime startTime) { mStartTime = startTime; mLastActivatedTime = null; updateActivated(); } @Override - public void onCustomEndTimeChanged(NightDisplayController.LocalTime endTime) { + public void onCustomEndTimeChanged(LocalTime endTime) { mEndTime = endTime; mLastActivatedTime = null; updateActivated(); @@ -556,15 +570,14 @@ public final class NightDisplayService extends SystemService } boolean activate = state.isNight(); - final Calendar lastActivatedTime = mController.getLastActivatedTime(); + final LocalDateTime lastActivatedTime = mController.getLastActivatedTime(); if (lastActivatedTime != null) { - final Calendar now = Calendar.getInstance(); - final Calendar sunrise = state.sunrise(); - final Calendar sunset = state.sunset(); - + final LocalDateTime now = LocalDateTime.now(); + final LocalDateTime sunrise = state.sunrise(); + final LocalDateTime sunset = state.sunset(); // Maintain the existing activated state if within the current period. - if (lastActivatedTime.before(now) - && (lastActivatedTime.after(sunrise) ^ lastActivatedTime.after(sunset))) { + if (lastActivatedTime.isBefore(now) && (lastActivatedTime.isBefore(sunrise) + ^ lastActivatedTime.isBefore(sunset))) { activate = mController.isActivated(); } } diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java index 47701b99860afe9f91d1e0c19f9c5296dc7ae887..34c8e22a9f1e0eff3084ef37d307f8141c813cd6 100644 --- a/services/core/java/com/android/server/display/PersistentDataStore.java +++ b/services/core/java/com/android/server/display/PersistentDataStore.java @@ -23,6 +23,7 @@ import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; +import android.graphics.Point; import android.hardware.display.WifiDisplay; import android.util.AtomicFile; import android.util.Slog; @@ -60,6 +61,10 @@ import libcore.util.Objects; * <color-mode>0</color-mode> * </display> * </display-states> + * <stable-device-values> + * <stable-display-height>1920<stable-display-height> + * <stable-display-width>1080<stable-display-width> + * </stable-device-values> * </display-manager-state> * * @@ -75,6 +80,9 @@ final class PersistentDataStore { private final HashMap mDisplayStates = new HashMap(); + // Display values which should be stable across the device's lifetime. + private final StableDeviceValues mStableDeviceValues = new StableDeviceValues(); + // The atomic file used to safely read or write the file. private final AtomicFile mAtomicFile; @@ -162,6 +170,7 @@ final class PersistentDataStore { } public boolean forgetWifiDisplay(String deviceAddress) { + loadIfNeeded(); int index = findRememberedWifiDisplay(deviceAddress); if (index >= 0) { mRememberedWifiDisplays.remove(index); @@ -204,6 +213,18 @@ final class PersistentDataStore { return false; } + public Point getStableDisplaySize() { + loadIfNeeded(); + return mStableDeviceValues.getDisplaySize(); + } + + public void setStableDisplaySize(Point size) { + loadIfNeeded(); + if (mStableDeviceValues.setDisplaySize(size)) { + setDirty(); + } + } + private DisplayState getDisplayState(String uniqueId, boolean createIfAbsent) { loadIfNeeded(); DisplayState state = mDisplayStates.get(uniqueId); @@ -290,6 +311,9 @@ final class PersistentDataStore { if (parser.getName().equals("display-states")) { loadDisplaysFromXml(parser); } + if (parser.getName().equals("stable-device-values")) { + mStableDeviceValues.loadFromXml(parser); + } } } @@ -363,6 +387,9 @@ final class PersistentDataStore { serializer.endTag(null, "display"); } serializer.endTag(null, "display-states"); + serializer.startTag(null, "stable-device-values"); + mStableDeviceValues.saveToXml(serializer); + serializer.endTag(null, "stable-device-values"); serializer.endTag(null, "display-manager-state"); serializer.endDocument(); } @@ -382,6 +409,8 @@ final class PersistentDataStore { pw.println(" " + i++ + ": " + entry.getKey()); entry.getValue().dump(pw, " "); } + pw.println(" StableDeviceValues:"); + mStableDeviceValues.dump(pw, " "); } private static final class DisplayState { @@ -417,8 +446,66 @@ final class PersistentDataStore { serializer.endTag(null, "color-mode"); } - private void dump(final PrintWriter pw, final String prefix) { + public void dump(final PrintWriter pw, final String prefix) { pw.println(prefix + "ColorMode=" + mColorMode); } } + + private static final class StableDeviceValues { + private int mWidth; + private int mHeight; + + private Point getDisplaySize() { + return new Point(mWidth, mHeight); + } + + public boolean setDisplaySize(Point r) { + if (mWidth != r.x || mHeight != r.y) { + mWidth = r.x; + mHeight = r.y; + return true; + } + return false; + } + + public void loadFromXml(XmlPullParser parser) throws IOException, XmlPullParserException { + final int outerDepth = parser.getDepth(); + while (XmlUtils.nextElementWithin(parser, outerDepth)) { + switch (parser.getName()) { + case "stable-display-width": + mWidth = loadIntValue(parser); + break; + case "stable-display-height": + mHeight = loadIntValue(parser); + break; + } + } + } + + private static int loadIntValue(XmlPullParser parser) + throws IOException, XmlPullParserException { + try { + String value = parser.nextText(); + return Integer.parseInt(value); + } catch (NumberFormatException nfe) { + return 0; + } + } + + public void saveToXml(XmlSerializer serializer) throws IOException { + if (mWidth > 0 && mHeight > 0) { + serializer.startTag(null, "stable-display-width"); + serializer.text(Integer.toString(mWidth)); + serializer.endTag(null, "stable-display-width"); + serializer.startTag(null, "stable-display-height"); + serializer.text(Integer.toString(mHeight)); + serializer.endTag(null, "stable-display-height"); + } + } + + public void dump(final PrintWriter pw, final String prefix) { + pw.println(prefix + "StableDisplayWidth=" + mWidth); + pw.println(prefix + "StableDisplayHeight=" + mHeight); + } + } } diff --git a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java index d6ab88813f4d2aa5fc0957815a166e3389d5ebd3..f86d57634bff0aff84ad1b11c80b63a4a49f6828 100644 --- a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java +++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java @@ -24,6 +24,8 @@ import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLI import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT; +import static android.hardware.display.DisplayManager + .VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL; import android.content.Context; import android.hardware.display.IVirtualDisplayCallback; @@ -363,6 +365,9 @@ public class VirtualDisplayAdapter extends DisplayAdapter { if ((mFlags & VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT) != 0) { mInfo.flags |= DisplayDeviceInfo.FLAG_ROTATES_WITH_CONTENT; } + if ((mFlags & VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL) != 0) { + mInfo.flags |= DisplayDeviceInfo.FLAG_DESTROY_CONTENT_ON_REMOVAL; + } mInfo.type = Display.TYPE_VIRTUAL; mInfo.touch = ((mFlags & VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH) == 0) ? diff --git a/services/core/java/com/android/server/fingerprint/EnumerateClient.java b/services/core/java/com/android/server/fingerprint/EnumerateClient.java index 12827d01b34d86a854be10a59f192333a1c531ec..b6bbd1b7e0ad6ce37e94e6a704ad1c30241890f0 100644 --- a/services/core/java/com/android/server/fingerprint/EnumerateClient.java +++ b/services/core/java/com/android/server/fingerprint/EnumerateClient.java @@ -95,7 +95,7 @@ public abstract class EnumerateClient extends ClientMonitor { } catch (RemoteException e) { Slog.w(TAG, "Failed to notify enumerated:", e); } - return fingerId == 0; // done when id hits 0 + return remaining == 0; } @Override diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index 6cc7071510b46afb91f901a48e1f160c7908da41..b1c165ef048d9359a337af7b4459d285fdc4c6f2 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -921,7 +921,9 @@ public class FingerprintService extends SystemService implements IHwBinder.Death @Override public void sendResult(Bundle data) throws RemoteException { - mWakeLock.release(); + if (mWakeLock.isHeld()) { + mWakeLock.release(); + } } }); } catch (DeadObjectException e) { @@ -1079,18 +1081,19 @@ public class FingerprintService extends SystemService implements IHwBinder.Death final IFingerprintServiceReceiver receiver, final int flags, final String opPackageName) { final int callingUid = Binder.getCallingUid(); + final int callingPid = Binder.getCallingPid(); final int callingUserId = UserHandle.getCallingUserId(); - final int pid = Binder.getCallingPid(); final boolean restricted = isRestricted(); + + if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, callingUid, callingPid, + callingUserId)) { + if (DEBUG) Slog.v(TAG, "authenticate(): reject " + opPackageName); + return; + } + mHandler.post(new Runnable() { @Override public void run() { - if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, - callingUid, pid, callingUserId)) { - if (DEBUG) Slog.v(TAG, "authenticate(): reject " + opPackageName); - return; - } - MetricsLogger.histogram(mContext, "fingerprint_token", opId != 0L ? 1 : 0); // Get performance stats object for this user. @@ -1111,29 +1114,31 @@ public class FingerprintService extends SystemService implements IHwBinder.Death @Override // Binder call public void cancelAuthentication(final IBinder token, final String opPackageName) { - final int uid = Binder.getCallingUid(); - final int pid = Binder.getCallingPid(); + final int callingUid = Binder.getCallingUid(); + final int callingPid = Binder.getCallingPid(); final int callingUserId = UserHandle.getCallingUserId(); + + if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, callingUid, callingPid, + callingUserId)) { + if (DEBUG) Slog.v(TAG, "cancelAuthentication(): reject " + opPackageName); + return; + } + mHandler.post(new Runnable() { @Override public void run() { - if (!canUseFingerprint(opPackageName, true /* foregroundOnly */, uid, pid, - callingUserId)) { - if (DEBUG) Slog.v(TAG, "cancelAuthentication(): reject " + opPackageName); - } else { - ClientMonitor client = mCurrentClient; - if (client instanceof AuthenticationClient) { - if (client.getToken() == token) { - if (DEBUG) Slog.v(TAG, "stop client " + client.getOwnerString()); - client.stop(client.getToken() == token); - } else { - if (DEBUG) Slog.v(TAG, "can't stop client " - + client.getOwnerString() + " since tokens don't match"); - } - } else if (client != null) { - if (DEBUG) Slog.v(TAG, "can't cancel non-authenticating client " - + client.getOwnerString()); + ClientMonitor client = mCurrentClient; + if (client instanceof AuthenticationClient) { + if (client.getToken() == token) { + if (DEBUG) Slog.v(TAG, "stop client " + client.getOwnerString()); + client.stop(client.getToken() == token); + } else { + if (DEBUG) Slog.v(TAG, "can't stop client " + + client.getOwnerString() + " since tokens don't match"); } + } else if (client != null) { + if (DEBUG) Slog.v(TAG, "can't cancel non-authenticating client " + + client.getOwnerString()); } } }); diff --git a/services/core/java/com/android/server/fingerprint/InternalEnumerateClient.java b/services/core/java/com/android/server/fingerprint/InternalEnumerateClient.java index f4d2596c85bf28538cc3f88fe81bfb59f4af6c80..88d9ef43e02ff6877eb31f3d1f7a9bec9c9a4c7c 100644 --- a/services/core/java/com/android/server/fingerprint/InternalEnumerateClient.java +++ b/services/core/java/com/android/server/fingerprint/InternalEnumerateClient.java @@ -88,7 +88,7 @@ public abstract class InternalEnumerateClient extends EnumerateClient { doFingerprintCleanup(); } - return fingerId == 0; // done when id hits 0 + return remaining == 0; } } diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index a50ec49f644bb7a95aac06e7e2361748ee7b7951..81bccdc7dfaa4f052ebaffaecafe638435ff26c0 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -851,6 +851,7 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { mSystemAudioActivated = on; mService.announceSystemAudioModeChange(on); } + startArcAction(on); } } diff --git a/services/core/java/com/android/server/hdmi/HdmiLogger.java b/services/core/java/com/android/server/hdmi/HdmiLogger.java index 537df815e3a2e2d0d55ae75e6595b91897c28b65..ebe52c0dfbf0494fe8a23998020802c56ec23381 100644 --- a/services/core/java/com/android/server/hdmi/HdmiLogger.java +++ b/services/core/java/com/android/server/hdmi/HdmiLogger.java @@ -44,7 +44,6 @@ final class HdmiLogger { private static final long ERROR_LOG_DURATTION_MILLIS = 20 * 1000; // 20s private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - private static final boolean IS_USER_BUILD = "user".equals(Build.TYPE); private static final ThreadLocal sLogger = new ThreadLocal<>(); diff --git a/services/core/java/com/android/server/input/InputForwarder.java b/services/core/java/com/android/server/input/InputForwarder.java new file mode 100644 index 0000000000000000000000000000000000000000..bebbc93e9ea59832f87009a6e1ed389706eac64c --- /dev/null +++ b/services/core/java/com/android/server/input/InputForwarder.java @@ -0,0 +1,46 @@ +/* + * 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.input; + +import android.app.IInputForwarder; +import android.hardware.input.InputManagerInternal; +import android.view.InputEvent; +import android.os.Binder; + +import com.android.server.LocalServices; + +import static android.hardware.input.InputManager.INJECT_INPUT_EVENT_MODE_ASYNC; + +/** + * Basic implementation of {@link IInputForwarder}. + */ +class InputForwarder extends IInputForwarder.Stub { + + private final InputManagerInternal mInputManagerInternal; + private final int mDisplayId; + + InputForwarder(int displayId) { + mDisplayId = displayId; + mInputManagerInternal = LocalServices.getService(InputManagerInternal.class); + } + + @Override + public boolean forwardEvent(InputEvent event) { + return mInputManagerInternal.injectInputEvent(event, mDisplayId, + INJECT_INPUT_EVENT_MODE_ASYNC); + } +} \ No newline at end of file diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index 717efbf714db2bb58b44733bb714c14f443457ac..fa9b1078e8ad375847aadee67ba9949d448d9d9e 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -37,6 +37,7 @@ import com.android.server.Watchdog; import org.xmlpull.v1.XmlPullParser; import android.Manifest; +import android.app.IInputForwarder; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -57,6 +58,7 @@ import android.content.res.Resources.NotFoundException; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.ContentObserver; +import android.hardware.display.DisplayManager; import android.hardware.display.DisplayViewport; import android.hardware.input.IInputDevicesChangedListener; import android.hardware.input.IInputManager; @@ -85,6 +87,7 @@ import android.text.TextUtils; import android.util.Slog; import android.util.SparseArray; import android.util.Xml; +import android.view.Display; import android.view.IInputFilter; import android.view.IInputFilterHost; import android.view.IWindow; @@ -1862,6 +1865,29 @@ public class InputManagerService extends IInputManager.Stub nativeMonitor(mPtr); } + // Binder call + @Override + public IInputForwarder createInputForwarder(int displayId) throws RemoteException { + if (!checkCallingPermission(android.Manifest.permission.INJECT_EVENTS, + "createInputForwarder()")) { + throw new SecurityException("Requires INJECT_EVENTS permission"); + } + final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); + final Display display = displayManager.getDisplay(displayId); + if (display == null) { + throw new IllegalArgumentException( + "Can't create input forwarder for non-existent displayId: " + displayId); + } + final int callingUid = Binder.getCallingUid(); + final int displayOwnerUid = display.getOwnerUid(); + if (callingUid != displayOwnerUid) { + throw new SecurityException( + "Only owner of the display can forward input events to it."); + } + + return new InputForwarder(displayId); + } + // Native callback. private void notifyConfigurationChanged(long whenNanos) { mWindowManagerCallbacks.notifyConfigurationChanged(); diff --git a/services/core/java/com/android/server/job/JobPackageTracker.java b/services/core/java/com/android/server/job/JobPackageTracker.java index ba922959213c8d71f11a42b28c7eba43774bf560..025ff0b08341ebf2830e051da3d6678a5c6bc42f 100644 --- a/services/core/java/com/android/server/job/JobPackageTracker.java +++ b/services/core/java/com/android/server/job/JobPackageTracker.java @@ -17,11 +17,13 @@ package com.android.server.job; import android.app.job.JobInfo; +import android.app.job.JobParameters; import android.os.SystemClock; import android.os.UserHandle; import android.text.format.DateFormat; import android.util.ArrayMap; import android.util.SparseArray; +import android.util.SparseIntArray; import android.util.TimeUtils; import com.android.internal.util.RingBufferIndices; import com.android.server.job.controllers.JobStatus; @@ -36,6 +38,9 @@ public final class JobPackageTracker { private static final int EVENT_BUFFER_SIZE = 100; + public static final int EVENT_CMD_MASK = 0xff; + public static final int EVENT_STOP_REASON_SHIFT = 8; + public static final int EVENT_STOP_REASON_MASK = 0xff << EVENT_STOP_REASON_SHIFT; public static final int EVENT_NULL = 0; public static final int EVENT_START_JOB = 1; public static final int EVENT_STOP_JOB = 2; @@ -49,9 +54,9 @@ public final class JobPackageTracker { private final String[] mEventTags = new String[EVENT_BUFFER_SIZE]; private final int[] mEventJobIds = new int[EVENT_BUFFER_SIZE]; - public void addEvent(int cmd, int uid, String tag, int jobId) { + public void addEvent(int cmd, int uid, String tag, int jobId, int stopReason) { int index = mEventIndices.add(); - mEventCmds[index] = cmd; + mEventCmds[index] = cmd | ((stopReason<= 0; k--) { + int type = pe.stopReasons.keyAt(k); + outPe.stopReasons.put(type, outPe.stopReasons.get(type, 0) + + pe.stopReasons.valueAt(k)); + } } } if (mMaxTotalActive > out.mMaxTotalActive) { @@ -312,7 +327,8 @@ public final class JobPackageTracker { pw.print(prefix); pw.print(" "); UserHandle.formatUid(pw, uid); pw.print(" / "); pw.print(uidMap.keyAt(j)); - pw.print(":"); + pw.println(":"); + pw.print(prefix); pw.print(" "); printDuration(pw, period, pe.getPendingTime(now), pe.pendingCount, "pending"); printDuration(pw, period, pe.getActiveTime(now), pe.activeCount, "active"); printDuration(pw, period, pe.getActiveTopTime(now), pe.activeTopCount, @@ -327,6 +343,18 @@ public final class JobPackageTracker { pw.print(" (active-top)"); } pw.println(); + if (pe.stopReasons.size() > 0) { + pw.print(prefix); pw.print(" "); + for (int k = 0; k < pe.stopReasons.size(); k++) { + if (k > 0) { + pw.print(", "); + } + pw.print(pe.stopReasons.valueAt(k)); + pw.print("x "); + pw.print(JobParameters.getReasonName(pe.stopReasons.keyAt(k))); + } + pw.println(); + } } } pw.print(prefix); pw.print(" Max concurrency: "); @@ -370,19 +398,20 @@ public final class JobPackageTracker { mCurDataSet.incActive(job.getSourceUid(), job.getSourcePackageName(), now); } addEvent(job.getJob().isPeriodic() ? EVENT_START_PERIODIC_JOB : EVENT_START_JOB, - job.getSourceUid(), job.getBatteryName(), job.getJobId()); + job.getSourceUid(), job.getBatteryName(), job.getJobId(), 0); } - public void noteInactive(JobStatus job) { + public void noteInactive(JobStatus job, int stopReason) { final long now = SystemClock.uptimeMillis(); if (job.lastEvaluatedPriority >= JobInfo.PRIORITY_TOP_APP) { - mCurDataSet.decActiveTop(job.getSourceUid(), job.getSourcePackageName(), now); + mCurDataSet.decActiveTop(job.getSourceUid(), job.getSourcePackageName(), now, + stopReason); } else { - mCurDataSet.decActive(job.getSourceUid(), job.getSourcePackageName(), now); + mCurDataSet.decActive(job.getSourceUid(), job.getSourcePackageName(), now, stopReason); } rebatchIfNeeded(now); addEvent(job.getJob().isPeriodic() ? EVENT_STOP_JOB : EVENT_STOP_PERIODIC_JOB, - job.getSourceUid(), job.getBatteryName(), job.getJobId()); + job.getSourceUid(), job.getBatteryName(), job.getJobId(), stopReason); } public void noteConcurrency(int totalActive, int fgActive) { @@ -448,12 +477,12 @@ public final class JobPackageTracker { if (filterUid != -1 && filterUid != UserHandle.getAppId(uid)) { continue; } - final int cmd = mEventCmds[index]; + final int cmd = mEventCmds[index] & EVENT_CMD_MASK; if (cmd == EVENT_NULL) { continue; } final String label; - switch (mEventCmds[index]) { + switch (cmd) { case EVENT_START_JOB: label = " START"; break; case EVENT_STOP_JOB: label = " STOP"; break; case EVENT_START_PERIODIC_JOB: label = "START-P"; break; @@ -469,7 +498,13 @@ public final class JobPackageTracker { pw.print("/"); pw.print(mEventJobIds[index]); pw.print(" "); - pw.println(mEventTags[index]); + pw.print(mEventTags[index]); + if (cmd == EVENT_STOP_JOB || cmd == EVENT_STOP_PERIODIC_JOB) { + pw.print(" "); + pw.print(JobParameters.getReasonName((mEventCmds[index] & EVENT_STOP_REASON_MASK) + >> EVENT_STOP_REASON_SHIFT)); + } + pw.println(); } return true; } diff --git a/services/core/java/com/android/server/job/JobSchedulerInternal.java b/services/core/java/com/android/server/job/JobSchedulerInternal.java index bc6bd501176c0b37074d77939958a01c684e40a9..095526dc52fcb2778aadc9c13342ad05f1ecf058 100644 --- a/services/core/java/com/android/server/job/JobSchedulerInternal.java +++ b/services/core/java/com/android/server/job/JobSchedulerInternal.java @@ -37,4 +37,45 @@ public interface JobSchedulerInternal { void addBackingUpUid(int uid); void removeBackingUpUid(int uid); void clearAllBackingUpUids(); + + JobStorePersistStats getPersistStats(); + + /** + * Stats about the first load after boot and the most recent save. + * STOPSHIP Remove it and the relevant code once b/64536115 is fixed. + */ + public class JobStorePersistStats { + public int countAllJobsLoaded = -1; + public int countSystemServerJobsLoaded = -1; + public int countSystemSyncManagerJobsLoaded = -1; + + public int countAllJobsSaved = -1; + public int countSystemServerJobsSaved = -1; + public int countSystemSyncManagerJobsSaved = -1; + + public JobStorePersistStats() { + } + + public JobStorePersistStats(JobStorePersistStats source) { + countAllJobsLoaded = source.countAllJobsLoaded; + countSystemServerJobsLoaded = source.countSystemServerJobsLoaded; + countSystemSyncManagerJobsLoaded = source.countSystemSyncManagerJobsLoaded; + + countAllJobsSaved = source.countAllJobsSaved; + countSystemServerJobsSaved = source.countSystemServerJobsSaved; + countSystemSyncManagerJobsSaved = source.countSystemSyncManagerJobsSaved; + } + + @Override + public String toString() { + return "FirstLoad: " + + countAllJobsLoaded + "/" + + countSystemServerJobsLoaded + "/" + + countSystemSyncManagerJobsLoaded + + " LastSave: " + + countAllJobsSaved + "/" + + countSystemServerJobsSaved + "/" + + countSystemSyncManagerJobsSaved; + } + } } diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index af515256d48c8e711ca80c13a33f0722ff562f52..4dab32c03a76646f8b1b0168de53246712649fad 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -76,6 +76,7 @@ import com.android.internal.app.procstats.ProcessStats; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.server.DeviceIdleController; +import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.job.JobStore.JobStatusFunctor; import com.android.server.job.controllers.AppIdleController; @@ -601,12 +602,11 @@ public final class JobSchedulerService extends com.android.server.SystemService } final private IUidObserver mUidObserver = new IUidObserver.Stub() { - @Override public void onUidStateChanged(int uid, int procState, - long procStateSeq) throws RemoteException { + @Override public void onUidStateChanged(int uid, int procState, long procStateSeq) { updateUidState(uid, procState); } - @Override public void onUidGone(int uid, boolean disabled) throws RemoteException { + @Override public void onUidGone(int uid, boolean disabled) { updateUidState(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY); if (disabled) { cancelJobsForUid(uid, "uid gone"); @@ -616,11 +616,14 @@ public final class JobSchedulerService extends com.android.server.SystemService @Override public void onUidActive(int uid) throws RemoteException { } - @Override public void onUidIdle(int uid, boolean disabled) throws RemoteException { + @Override public void onUidIdle(int uid, boolean disabled) { if (disabled) { cancelJobsForUid(uid, "app uid idle"); } } + + @Override public void onUidCachedChanged(int uid, boolean cached) { + } }; public Object getLock() { @@ -923,8 +926,57 @@ public final class JobSchedulerService extends com.android.server.SystemService mControllers.add(AppIdleController.get(this)); mControllers.add(ContentObserverController.get(this)); mControllers.add(DeviceIdleJobsController.get(this)); + + // If the job store determined that it can't yet reschedule persisted jobs, + // we need to start watching the clock. + if (!mJobs.jobTimesInflatedValid()) { + Slog.w(TAG, "!!! RTC not yet good; tracking time updates for job scheduling"); + context.registerReceiver(mTimeSetReceiver, new IntentFilter(Intent.ACTION_TIME_CHANGED)); + } } + private final BroadcastReceiver mTimeSetReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_TIME_CHANGED.equals(intent.getAction())) { + // When we reach clock sanity, recalculate the temporal windows + // of all affected jobs. + if (mJobs.clockNowValidToInflate(System.currentTimeMillis())) { + Slog.i(TAG, "RTC now valid; recalculating persisted job windows"); + + // We've done our job now, so stop watching the time. + context.unregisterReceiver(this); + + // And kick off the work to update the affected jobs, using a secondary + // thread instead of chugging away here on the main looper thread. + FgThread.getHandler().post(mJobTimeUpdater); + } + } + } + }; + + private final Runnable mJobTimeUpdater = () -> { + final ArrayList toRemove = new ArrayList<>(); + final ArrayList toAdd = new ArrayList<>(); + synchronized (mLock) { + // Note: we intentionally both look up the existing affected jobs and replace them + // with recalculated ones inside the same lock lifetime. + getJobStore().getRtcCorrectedJobsLocked(toAdd, toRemove); + + // Now, at each position [i], we have both the existing JobStatus + // and the one that replaces it. + final int N = toAdd.size(); + for (int i = 0; i < N; i++) { + final JobStatus oldJob = toRemove.get(i); + final JobStatus newJob = toAdd.get(i); + if (DEBUG) { + Slog.v(TAG, " replacing " + oldJob + " with " + newJob); + } + cancelJobImplLocked(oldJob, newJob, "deferred rtc calculation"); + } + } + }; + @Override public void onStart() { publishLocalService(JobSchedulerInternal.class, new LocalService()); @@ -1789,6 +1841,13 @@ public final class JobSchedulerService extends com.android.server.SystemService } } } + + @Override + public JobStorePersistStats getPersistStats() { + synchronized (mLock) { + return new JobStorePersistStats(mJobs.getPersistStats()); + } + } } /** @@ -1969,7 +2028,6 @@ public final class JobSchedulerService extends com.android.server.SystemService @Override public void cancelAll() throws RemoteException { final int uid = Binder.getCallingUid(); - long ident = Binder.clearCallingIdentity(); try { JobSchedulerService.this.cancelJobsForUid(uid, "cancelAll() called by app"); @@ -2058,7 +2116,15 @@ public final class JobSchedulerService extends com.android.server.SystemService synchronized (mLock) { boolean foundSome = false; for (int i=0; i"<null>" if there is no job running. + */ + private String getRunningJobNameLocked() { + return mRunningJob != null ? mRunningJob.toShortString() : ""; + } + /** Called externally when a job that was scheduled for execution should be cancelled. */ void cancelExecutingJobLocked(int reason, String debugReason) { doCancelLocked(reason, debugReason); @@ -518,7 +529,7 @@ public final class JobServiceContext implements ServiceConnection { /** Start the job on the service. */ private void handleServiceBoundLocked() { if (DEBUG) { - Slog.d(TAG, "handleServiceBound for " + mRunningJob.toShortString()); + Slog.d(TAG, "handleServiceBound for " + getRunningJobNameLocked()); } if (mVerb != VERB_BINDING) { Slog.e(TAG, "Sending onStartJob for a job that isn't pending. " @@ -635,36 +646,34 @@ public final class JobServiceContext implements ServiceConnection { private void handleOpTimeoutLocked() { switch (mVerb) { case VERB_BINDING: - Slog.w(TAG, "Time-out while trying to bind " + mRunningJob.toShortString() + - ", dropping."); + Slog.w(TAG, "Time-out while trying to bind " + getRunningJobNameLocked() + + ", dropping."); closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while binding"); break; case VERB_STARTING: // Client unresponsive - wedged or failed to respond in time. We don't really // know what happened so let's log it and notify the JobScheduler // FINISHED/NO-RETRY. - Slog.w(TAG, "No response from client for onStartJob " + - mRunningJob != null ? mRunningJob.toShortString() : ""); + Slog.w(TAG, "No response from client for onStartJob " + + getRunningJobNameLocked()); closeAndCleanupJobLocked(false /* needsReschedule */, "timed out while starting"); break; case VERB_STOPPING: // At least we got somewhere, so fail but ask the JobScheduler to reschedule. - Slog.w(TAG, "No response from client for onStopJob " + - mRunningJob != null ? mRunningJob.toShortString() : ""); + Slog.w(TAG, "No response from client for onStopJob " + + getRunningJobNameLocked()); closeAndCleanupJobLocked(true /* needsReschedule */, "timed out while stopping"); break; case VERB_EXECUTING: // Not an error - client ran out of time. Slog.i(TAG, "Client timed out while executing (no jobFinished received), " + - "sending onStop: " + - mRunningJob != null ? mRunningJob.toShortString() : ""); + "sending onStop: " + getRunningJobNameLocked()); mParams.setStopReason(JobParameters.REASON_TIMEOUT); sendStopMessageLocked("timeout while executing"); break; default: - Slog.e(TAG, "Handling timeout for an invalid job state: " + - mRunningJob != null ? mRunningJob.toShortString() : "" - + ", dropping."); + Slog.e(TAG, "Handling timeout for an invalid job state: " + + getRunningJobNameLocked() + ", dropping."); closeAndCleanupJobLocked(false /* needsReschedule */, "invalid timeout"); } } @@ -681,6 +690,7 @@ public final class JobServiceContext implements ServiceConnection { return; } try { + applyStoppedReasonLocked(reason); mVerb = VERB_STOPPING; scheduleOpTimeOutLocked(); service.stopJob(mParams); @@ -704,10 +714,10 @@ public final class JobServiceContext implements ServiceConnection { } applyStoppedReasonLocked(reason); completedJob = mRunningJob; - mJobPackageTracker.noteInactive(completedJob); + mJobPackageTracker.noteInactive(completedJob, mParams.getStopReason()); try { mBatteryStats.noteJobFinish(mRunningJob.getBatteryName(), - mRunningJob.getSourceUid()); + mRunningJob.getSourceUid(), mParams.getStopReason()); } catch (RemoteException e) { // Whatever. } diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java index 84810bebf1f197e59e66a759a04bfa6f4f0b7dbb..aa9f77c839e535ae469851473e706f2ac2bf8181 100644 --- a/services/core/java/com/android/server/job/JobStore.java +++ b/services/core/java/com/android/server/job/JobStore.java @@ -24,6 +24,7 @@ import android.content.Context; import android.os.Environment; import android.os.Handler; import android.os.PersistableBundle; +import android.os.Process; import android.os.SystemClock; import android.os.UserHandle; import android.text.format.DateUtils; @@ -38,6 +39,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastXmlSerializer; import com.android.server.IoThread; +import com.android.server.job.JobSchedulerInternal.JobStorePersistStats; import com.android.server.job.controllers.JobStatus; import java.io.ByteArrayOutputStream; @@ -72,10 +74,15 @@ public final class JobStore { /** Threshold to adjust how often we want to write to the db. */ private static final int MAX_OPS_BEFORE_WRITE = 1; + final Object mLock; final JobSet mJobSet; // per-caller-uid tracking final Context mContext; + // Bookkeeping around incorrect boot-time system clock + private final long mXmlTimestamp; + private boolean mRtcGood; + private int mDirtyOperations; private static final Object sSingletonLock = new Object(); @@ -84,6 +91,8 @@ public final class JobStore { private final Handler mIoHandler = IoThread.getHandler(); private static JobStore sSingleton; + private JobStorePersistStats mPersistInfo = new JobStorePersistStats(); + /** Used by the {@link JobSchedulerService} to instantiate the JobStore. */ static JobStore initAndGet(JobSchedulerService jobManagerService) { synchronized (sSingletonLock) { @@ -120,7 +129,52 @@ public final class JobStore { mJobSet = new JobSet(); - readJobMapFromDisk(mJobSet); + // If the current RTC is earlier than the timestamp on our persisted jobs file, + // we suspect that the RTC is uninitialized and so we cannot draw conclusions + // about persisted job scheduling. + // + // Note that if the persisted jobs file does not exist, we proceed with the + // assumption that the RTC is good. This is less work and is safe: if the + // clock updates to sanity then we'll be saving the persisted jobs file in that + // correct state, which is normal; or we'll wind up writing the jobs file with + // an incorrect historical timestamp. That's fine; at worst we'll reboot with + // a *correct* timestamp, see a bunch of overdue jobs, and run them; then + // settle into normal operation. + mXmlTimestamp = mJobsFile.getLastModifiedTime(); + mRtcGood = (System.currentTimeMillis() > mXmlTimestamp); + + readJobMapFromDisk(mJobSet, mRtcGood); + } + + public boolean jobTimesInflatedValid() { + return mRtcGood; + } + + public boolean clockNowValidToInflate(long now) { + return now >= mXmlTimestamp; + } + + /** + * Find all the jobs that were affected by RTC clock uncertainty at boot time. Returns + * parallel lists of the existing JobStatus objects and of new, equivalent JobStatus instances + * with now-corrected time bounds. + */ + public void getRtcCorrectedJobsLocked(final ArrayList toAdd, + final ArrayList toRemove) { + final long elapsedNow = SystemClock.elapsedRealtime(); + + // Find the jobs that need to be fixed up, collecting them for post-iteration + // replacement with their new versions + forEachJob(job -> { + final Pair utcTimes = job.getPersistedUtcTimes(); + if (utcTimes != null) { + Pair elapsedRuntimes = + convertRtcBoundsToElapsed(utcTimes, elapsedNow); + toAdd.add(new JobStatus(job, elapsedRuntimes.first, elapsedRuntimes.second, + 0, job.getLastSuccessfulRunTime(), job.getLastFailedRunTime())); + toRemove.add(job); + } + }); } /** @@ -149,6 +203,10 @@ public final class JobStore { return mJobSet.size(); } + public JobStorePersistStats getPersistStats() { + return mPersistInfo; + } + public int countJobsForUid(int uid) { return mJobSet.countJobsForUid(uid); } @@ -241,8 +299,6 @@ public final class JobStore { /** * Every time the state changes we write all the jobs in one swath, instead of trying to * track incremental changes. - * @return Whether the operation was successful. This will only fail for e.g. if the system is - * low on storage. If this happens, we continue as normal */ private void maybeWriteStatusToDiskAsync() { mDirtyOperations++; @@ -250,20 +306,21 @@ public final class JobStore { if (DEBUG) { Slog.v(TAG, "Writing jobs to disk."); } - mIoHandler.post(new WriteJobsMapToDiskRunnable()); + mIoHandler.removeCallbacks(mWriteRunnable); + mIoHandler.post(mWriteRunnable); } } @VisibleForTesting - public void readJobMapFromDisk(JobSet jobSet) { - new ReadJobMapFromDiskRunnable(jobSet).run(); + public void readJobMapFromDisk(JobSet jobSet, boolean rtcGood) { + new ReadJobMapFromDiskRunnable(jobSet, rtcGood).run(); } /** * Runnable that writes {@link #mJobSet} out to xml. * NOTE: This Runnable locks on mLock */ - private final class WriteJobsMapToDiskRunnable implements Runnable { + private final Runnable mWriteRunnable = new Runnable() { @Override public void run() { final long startElapsed = SystemClock.elapsedRealtime(); @@ -280,13 +337,16 @@ public final class JobStore { }); } writeJobsMapImpl(storeCopy); - if (JobSchedulerService.DEBUG) { + if (DEBUG) { Slog.v(TAG, "Finished writing, took " + (SystemClock.elapsedRealtime() - startElapsed) + "ms"); } } private void writeJobsMapImpl(List jobList) { + int numJobs = 0; + int numSystemJobs = 0; + int numSyncJobs = 0; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); XmlSerializer out = new FastXmlSerializer(); @@ -307,11 +367,19 @@ public final class JobStore { writeExecutionCriteriaToXml(out, jobStatus); writeBundleToXml(jobStatus.getJob().getExtras(), out); out.endTag(null, "job"); + + numJobs++; + if (jobStatus.getUid() == Process.SYSTEM_UID) { + numSystemJobs++; + if (isSyncJob(jobStatus)) { + numSyncJobs++; + } + } } out.endTag(null, "job-info"); out.endDocument(); - // Write out to disk in one fell sweep. + // Write out to disk in one fell swoop. FileOutputStream fos = mJobsFile.startWrite(); fos.write(baos.toByteArray()); mJobsFile.finishWrite(fos); @@ -324,6 +392,10 @@ public final class JobStore { if (DEBUG) { Slog.d(TAG, "Error persisting bundle.", e); } + } finally { + mPersistInfo.countAllJobsSaved = numJobs; + mPersistInfo.countSystemServerJobsSaved = numSystemJobs; + mPersistInfo.countSystemSyncManagerJobsSaved = numSyncJobs; } } @@ -417,15 +489,27 @@ public final class JobStore { out.startTag(null, XML_TAG_ONEOFF); } + // If we still have the persisted times, we need to record those directly because + // we haven't yet been able to calculate the usual elapsed-timebase bounds + // correctly due to wall-clock uncertainty. + Pair utcJobTimes = jobStatus.getPersistedUtcTimes(); + if (DEBUG && utcJobTimes != null) { + Slog.i(TAG, "storing original UTC timestamps for " + jobStatus); + } + + final long nowRTC = System.currentTimeMillis(); + final long nowElapsed = SystemClock.elapsedRealtime(); if (jobStatus.hasDeadlineConstraint()) { // Wall clock deadline. - final long deadlineWallclock = System.currentTimeMillis() + - (jobStatus.getLatestRunTimeElapsed() - SystemClock.elapsedRealtime()); + final long deadlineWallclock = (utcJobTimes == null) + ? nowRTC + (jobStatus.getLatestRunTimeElapsed() - nowElapsed) + : utcJobTimes.second; out.attribute(null, "deadline", Long.toString(deadlineWallclock)); } if (jobStatus.hasTimingDelayConstraint()) { - final long delayWallclock = System.currentTimeMillis() + - (jobStatus.getEarliestRunTime() - SystemClock.elapsedRealtime()); + final long delayWallclock = (utcJobTimes == null) + ? nowRTC + (jobStatus.getEarliestRunTime() - nowElapsed) + : utcJobTimes.first; out.attribute(null, "delay", Long.toString(delayWallclock)); } @@ -443,6 +527,30 @@ public final class JobStore { out.endTag(null, XML_TAG_ONEOFF); } } + }; + + /** + * Translate the supplied RTC times to the elapsed timebase, with clamping appropriate + * to interpreting them as a job's delay + deadline times for alarm-setting purposes. + * @param rtcTimes a Pair in which {@code first} is the "delay" earliest + * allowable runtime for the job, and {@code second} is the "deadline" time at which + * the job becomes overdue. + */ + private static Pair convertRtcBoundsToElapsed(Pair rtcTimes, + long nowElapsed) { + final long nowWallclock = System.currentTimeMillis(); + final long earliest = (rtcTimes.first > JobStatus.NO_EARLIEST_RUNTIME) + ? nowElapsed + Math.max(rtcTimes.first - nowWallclock, 0) + : JobStatus.NO_EARLIEST_RUNTIME; + final long latest = (rtcTimes.second < JobStatus.NO_LATEST_RUNTIME) + ? nowElapsed + Math.max(rtcTimes.second - nowWallclock, 0) + : JobStatus.NO_LATEST_RUNTIME; + return Pair.create(earliest, latest); + } + + private static boolean isSyncJob(JobStatus status) { + return com.android.server.content.SyncJobService.class.getName() + .equals(status.getServiceComponent().getClassName()); } /** @@ -451,22 +559,27 @@ public final class JobStore { */ private final class ReadJobMapFromDiskRunnable implements Runnable { private final JobSet jobSet; + private final boolean rtcGood; /** * @param jobSet Reference to the (empty) set of JobStatus objects that back the JobStore, * so that after disk read we can populate it directly. */ - ReadJobMapFromDiskRunnable(JobSet jobSet) { + ReadJobMapFromDiskRunnable(JobSet jobSet, boolean rtcIsGood) { this.jobSet = jobSet; + this.rtcGood = rtcIsGood; } @Override public void run() { + int numJobs = 0; + int numSystemJobs = 0; + int numSyncJobs = 0; try { List jobs; FileInputStream fis = mJobsFile.openRead(); synchronized (mLock) { - jobs = readJobMapImpl(fis); + jobs = readJobMapImpl(fis, rtcGood); if (jobs != null) { long now = SystemClock.elapsedRealtime(); IActivityManager am = ActivityManager.getService(); @@ -475,26 +588,35 @@ public final class JobStore { js.prepareLocked(am); js.enqueueTime = now; this.jobSet.add(js); + + numJobs++; + if (js.getUid() == Process.SYSTEM_UID) { + numSystemJobs++; + if (isSyncJob(js)) { + numSyncJobs++; + } + } } } } fis.close(); } catch (FileNotFoundException e) { - if (JobSchedulerService.DEBUG) { + if (DEBUG) { Slog.d(TAG, "Could not find jobs file, probably there was nothing to load."); } - } catch (XmlPullParserException e) { - if (JobSchedulerService.DEBUG) { - Slog.d(TAG, "Error parsing xml.", e); - } - } catch (IOException e) { - if (JobSchedulerService.DEBUG) { - Slog.d(TAG, "Error parsing xml.", e); + } catch (XmlPullParserException | IOException e) { + Slog.wtf(TAG, "Error jobstore xml.", e); + } finally { + if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once. + mPersistInfo.countAllJobsLoaded = numJobs; + mPersistInfo.countSystemServerJobsLoaded = numSystemJobs; + mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs; } } + Slog.i(TAG, "Read " + numJobs + " jobs"); } - private List readJobMapImpl(FileInputStream fis) + private List readJobMapImpl(FileInputStream fis, boolean rtcIsGood) throws XmlPullParserException, IOException { XmlPullParser parser = Xml.newPullParser(); parser.setInput(fis, StandardCharsets.UTF_8.name()); @@ -533,7 +655,7 @@ public final class JobStore { tagName = parser.getName(); // Start reading job. if ("job".equals(tagName)) { - JobStatus persistedJob = restoreJobFromXml(parser); + JobStatus persistedJob = restoreJobFromXml(rtcIsGood, parser); if (persistedJob != null) { if (DEBUG) { Slog.d(TAG, "Read out " + persistedJob); @@ -556,8 +678,8 @@ public final class JobStore { * will take the parser into the body of the job tag. * @return Newly instantiated job holding all the information we just read out of the xml tag. */ - private JobStatus restoreJobFromXml(XmlPullParser parser) throws XmlPullParserException, - IOException { + private JobStatus restoreJobFromXml(boolean rtcIsGood, XmlPullParser parser) + throws XmlPullParserException, IOException { JobInfo.Builder jobBuilder; int uid, sourceUserId; long lastSuccessfulRunTime; @@ -621,10 +743,10 @@ public final class JobStore { return null; } - // Tuple of (earliest runtime, latest runtime) in elapsed realtime after disk load. - Pair elapsedRuntimes; + // Tuple of (earliest runtime, latest runtime) in UTC. + final Pair rtcRuntimes; try { - elapsedRuntimes = buildExecutionTimesFromXml(parser); + rtcRuntimes = buildRtcExecutionTimesFromXml(parser); } catch (NumberFormatException e) { if (DEBUG) { Slog.d(TAG, "Error parsing execution time parameters, skipping."); @@ -633,6 +755,8 @@ public final class JobStore { } final long elapsedNow = SystemClock.elapsedRealtime(); + Pair elapsedRuntimes = convertRtcBoundsToElapsed(rtcRuntimes, elapsedNow); + if (XML_TAG_PERIODIC.equals(parser.getName())) { try { String val = parser.getAttributeValue(null, "period"); @@ -722,7 +846,8 @@ public final class JobStore { JobStatus js = new JobStatus( jobBuilder.build(), uid, sourcePackageName, sourceUserId, sourceTag, elapsedRuntimes.first, elapsedRuntimes.second, - lastSuccessfulRunTime, lastFailedRunTime); + lastSuccessfulRunTime, lastFailedRunTime, + (rtcIsGood) ? null : rtcRuntimes); return js; } @@ -777,6 +902,32 @@ public final class JobStore { } } + /** + * Extract a job's earliest/latest run time data from XML. These are returned in + * unadjusted UTC wall clock time, because we do not yet know whether the system + * clock is reliable for purposes of calculating deltas from 'now'. + * + * @param parser + * @return A Pair of timestamps in UTC wall-clock time. The first is the earliest + * time at which the job is to become runnable, and the second is the deadline at + * which it becomes overdue to execute. + * @throws NumberFormatException + */ + private Pair buildRtcExecutionTimesFromXml(XmlPullParser parser) + throws NumberFormatException { + String val; + // Pull out execution time data. + val = parser.getAttributeValue(null, "delay"); + final long earliestRunTimeRtc = (val != null) + ? Long.parseLong(val) + : JobStatus.NO_EARLIEST_RUNTIME; + val = parser.getAttributeValue(null, "deadline"); + final long latestRunTimeRtc = (val != null) + ? Long.parseLong(val) + : JobStatus.NO_LATEST_RUNTIME; + return Pair.create(earliestRunTimeRtc, latestRunTimeRtc); + } + /** * Convenience function to read out and convert deadline and delay from xml into elapsed real * time. diff --git a/services/core/java/com/android/server/job/controllers/ConnectivityController.java b/services/core/java/com/android/server/job/controllers/ConnectivityController.java index 17c89282f2807c409437607b1b59783637b805eb..78367fe97a5401d2ceda73258534e7fd07330940 100644 --- a/services/core/java/com/android/server/job/controllers/ConnectivityController.java +++ b/services/core/java/com/android/server/job/controllers/ConnectivityController.java @@ -85,7 +85,7 @@ public final class ConnectivityController extends StateController implements @Override public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) { if (jobStatus.hasConnectivityConstraint()) { - updateConstraintsSatisfied(jobStatus, null); + updateConstraintsSatisfied(jobStatus); mTrackedJobs.add(jobStatus); jobStatus.setTrackingController(JobStatus.TRACKING_CONNECTIVITY); } @@ -99,23 +99,25 @@ public final class ConnectivityController extends StateController implements } } - private boolean updateConstraintsSatisfied(JobStatus jobStatus, - NetworkCapabilities capabilities) { + private boolean updateConstraintsSatisfied(JobStatus jobStatus) { final int jobUid = jobStatus.getSourceUid(); final boolean ignoreBlocked = (jobStatus.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0; final NetworkInfo info = mConnManager.getActiveNetworkInfoForUid(jobUid, ignoreBlocked); - if (capabilities == null) { - final Network network = mConnManager.getActiveNetworkForUid(jobUid, ignoreBlocked); - capabilities = mConnManager.getNetworkCapabilities(network); - } + final Network network = mConnManager.getActiveNetworkForUid(jobUid, ignoreBlocked); + final NetworkCapabilities capabilities = (network != null) + ? mConnManager.getNetworkCapabilities(network) : null; - final boolean validated = capabilities != null + final boolean validated = (capabilities != null) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); - final boolean connected = info != null && info.isConnected(); + final boolean connected = (info != null) && info.isConnected(); final boolean connectionUsable = connected && validated; - final boolean metered = connected && info.isMetered(); - final boolean unmetered = connected && !info.isMetered(); - final boolean notRoaming = connected && !info.isRoaming(); + + final boolean metered = connected && (capabilities != null) + && !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); + final boolean unmetered = connected && (capabilities != null) + && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); + final boolean notRoaming = connected && (info != null) + && !info.isRoaming(); boolean changed = false; changed |= jobStatus.setConnectivityConstraintSatisfied(connectionUsable); @@ -148,13 +150,13 @@ public final class ConnectivityController extends StateController implements * @param uid only update jobs belonging to this UID, or {@code -1} to * update all tracked jobs. */ - private void updateTrackedJobs(int uid, NetworkCapabilities capabilities) { + private void updateTrackedJobs(int uid) { synchronized (mLock) { boolean changed = false; for (int i = mTrackedJobs.size()-1; i >= 0; i--) { final JobStatus js = mTrackedJobs.valueAt(i); if (uid == -1 || uid == js.getSourceUid()) { - changed |= updateConstraintsSatisfied(js, capabilities); + changed |= updateConstraintsSatisfied(js); } } if (changed) { @@ -187,7 +189,7 @@ public final class ConnectivityController extends StateController implements if (DEBUG) { Slog.v(TAG, "onCapabilitiesChanged() : " + networkCapabilities); } - updateTrackedJobs(-1, networkCapabilities); + updateTrackedJobs(-1); } @Override @@ -195,7 +197,7 @@ public final class ConnectivityController extends StateController implements if (DEBUG) { Slog.v(TAG, "Network lost"); } - updateTrackedJobs(-1, null); + updateTrackedJobs(-1); } }; @@ -205,7 +207,7 @@ public final class ConnectivityController extends StateController implements if (DEBUG) { Slog.v(TAG, "Uid rules changed for " + uid); } - updateTrackedJobs(uid, null); + updateTrackedJobs(uid); } @Override @@ -218,7 +220,7 @@ public final class ConnectivityController extends StateController implements if (DEBUG) { Slog.v(TAG, "Background restriction change to " + restrictBackground); } - updateTrackedJobs(-1, null); + updateTrackedJobs(-1); } @Override @@ -226,7 +228,7 @@ public final class ConnectivityController extends StateController implements if (DEBUG) { Slog.v(TAG, "Uid policy changed for " + uid); } - updateTrackedJobs(uid, null); + updateTrackedJobs(uid); } }; diff --git a/services/core/java/com/android/server/job/controllers/JobStatus.java b/services/core/java/com/android/server/job/controllers/JobStatus.java index 9658da7a5de0a5e610c30814d3e6876f2be64973..303b0007e1f78a6151e0d6b14a3b248ce91aba49 100644 --- a/services/core/java/com/android/server/job/controllers/JobStatus.java +++ b/services/core/java/com/android/server/job/controllers/JobStatus.java @@ -28,10 +28,12 @@ import android.os.SystemClock; import android.os.UserHandle; import android.text.format.Time; import android.util.ArraySet; +import android.util.Pair; import android.util.Slog; import android.util.TimeUtils; import com.android.server.job.GrantedUriPermissions; +import com.android.server.job.JobSchedulerService; import java.io.PrintWriter; import java.util.ArrayList; @@ -50,6 +52,7 @@ import java.util.Arrays; */ public final class JobStatus { static final String TAG = "JobSchedulerService"; + static final boolean DEBUG = JobSchedulerService.DEBUG; public static final long NO_LATEST_RUNTIME = Long.MAX_VALUE; public static final long NO_EARLIEST_RUNTIME = 0L; @@ -195,6 +198,18 @@ public final class JobStatus { */ private long mLastFailedRunTime; + /** + * Transient: when a job is inflated from disk before we have a reliable RTC clock time, + * we retain the canonical (delay, deadline) scheduling tuple read out of the persistent + * store in UTC so that we can fix up the job's scheduling criteria once we get a good + * wall-clock time. If we have to persist the job again before the clock has been updated, + * we record these times again rather than calculating based on the earliest/latest elapsed + * time base figures. + * + * 'first' is the earliest/delay time, and 'second' is the latest/deadline time. + */ + private Pair mPersistedUtcTimes; + /** * For use only by ContentObserverController: state it is maintaining about content URIs * being observed. @@ -280,13 +295,20 @@ public final class JobStatus { mLastFailedRunTime = lastFailedRunTime; } - /** Copy constructor. */ + /** Copy constructor: used specifically when cloning JobStatus objects for persistence, + * so we preserve RTC window bounds if the source object has them. */ public JobStatus(JobStatus jobStatus) { this(jobStatus.getJob(), jobStatus.getUid(), jobStatus.getSourcePackageName(), jobStatus.getSourceUserId(), jobStatus.getSourceTag(), jobStatus.getNumFailures(), jobStatus.getEarliestRunTime(), jobStatus.getLatestRunTimeElapsed(), jobStatus.getLastSuccessfulRunTime(), jobStatus.getLastFailedRunTime()); + mPersistedUtcTimes = jobStatus.mPersistedUtcTimes; + if (jobStatus.mPersistedUtcTimes != null) { + if (DEBUG) { + Slog.i(TAG, "Cloning job with persisted run times", new RuntimeException("here")); + } + } } /** @@ -298,10 +320,22 @@ public final class JobStatus { */ public JobStatus(JobInfo job, int callingUid, String sourcePackageName, int sourceUserId, String sourceTag, long earliestRunTimeElapsedMillis, long latestRunTimeElapsedMillis, - long lastSuccessfulRunTime, long lastFailedRunTime) { + long lastSuccessfulRunTime, long lastFailedRunTime, + Pair persistedExecutionTimesUTC) { this(job, callingUid, sourcePackageName, sourceUserId, sourceTag, 0, earliestRunTimeElapsedMillis, latestRunTimeElapsedMillis, lastSuccessfulRunTime, lastFailedRunTime); + + // Only during initial inflation do we record the UTC-timebase execution bounds + // read from the persistent store. If we ever have to recreate the JobStatus on + // the fly, it means we're rescheduling the job; and this means that the calculated + // elapsed timebase bounds intrinsically become correct. + this.mPersistedUtcTimes = persistedExecutionTimesUTC; + if (persistedExecutionTimesUTC != null) { + if (DEBUG) { + Slog.i(TAG, "+ restored job with RTC times because of bad boot clock"); + } + } } /** Create a new job to be rescheduled with the provided parameters. */ @@ -612,6 +646,14 @@ public final class JobStatus { return latestRunTimeElapsedMillis; } + public Pair getPersistedUtcTimes() { + return mPersistedUtcTimes; + } + + public void clearPersistedUtcTimes() { + mPersistedUtcTimes = null; + } + boolean setChargingConstraintSatisfied(boolean state) { return setConstraintSatisfied(CONSTRAINT_CHARGING, state); } @@ -799,6 +841,9 @@ public final class JobStatus { if (job.isRequireDeviceIdle()) { sb.append(" IDLE"); } + if (job.isPeriodic()) { + sb.append(" PERIODIC"); + } if (job.isPersisted()) { sb.append(" PERSISTED"); } diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 11a4eb48f64d3a72396b5a5b724efcbd11f7e1d6..74ddfc5edc372ddf1c59a04b7f7e4029a92e6d73 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -23,6 +23,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.database.Cursor; import android.hardware.location.GeofenceHardware; import android.hardware.location.GeofenceHardwareImpl; @@ -1054,8 +1055,15 @@ public class GnssLocationProvider implements LocationProviderInterface { // download tasks overrun. synchronized (mLock) { if (mDownloadXtraWakeLock.isHeld()) { - mDownloadXtraWakeLock.release(); - if (DEBUG) Log.d(TAG, "WakeLock released by handleDownloadXtraData()"); + // This wakelock may have time-out, if a timeout was specified. + // Catch (and ignore) any timeout exceptions. + try { + mDownloadXtraWakeLock.release(); + if (DEBUG) Log.d(TAG, "WakeLock released by handleDownloadXtraData()"); + } catch (Exception e) { + Log.i(TAG, "Wakelock timeout & release race exception in " + + "handleDownloadXtraData()", e); + } } else { Log.e(TAG, "WakeLock expired before release in " + "handleDownloadXtraData()"); @@ -2304,6 +2312,12 @@ public class GnssLocationProvider implements LocationProviderInterface { NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); + // On watches, Bluetooth is the most important network type. + boolean isWatch = + mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WATCH); + if (isWatch) { + networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_BLUETOOTH); + } NetworkRequest networkRequest = networkRequestBuilder.build(); mConnMgr.registerNetworkCallback(networkRequest, mNetworkConnectivityCallback); diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index f8f8ffb69d932d1ed5e0365a2562ba543a1625a3..a1a010618ec0d42dd1381b00eb329ec79132bd24 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -19,12 +19,14 @@ package com.android.server.locksettings; import static android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE; import static android.Manifest.permission.READ_CONTACTS; import static android.content.Context.KEYGUARD_SERVICE; +import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT; import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_ENABLED_KEY; import static com.android.internal.widget.LockPatternUtils.SYNTHETIC_PASSWORD_HANDLE_KEY; import static com.android.internal.widget.LockPatternUtils.USER_FRP; import static com.android.internal.widget.LockPatternUtils.frpCredentialEnabled; +import static com.android.internal.widget.LockPatternUtils.userOwnsFrpCredential; import android.annotation.UserIdInt; import android.app.ActivityManager; @@ -72,10 +74,12 @@ import android.security.KeyStore; import android.security.keystore.AndroidKeyStoreProvider; import android.security.keystore.KeyProperties; import android.security.keystore.KeyProtection; +import android.security.keystore.UserNotAuthenticatedException; import android.service.gatekeeper.GateKeeperResponse; import android.service.gatekeeper.IGateKeeperService; import android.text.TextUtils; import android.util.ArrayMap; +import android.util.EventLog; import android.util.Log; import android.util.Slog; @@ -150,7 +154,8 @@ public class LockSettingsService extends ILockSettings.Stub { private final Injector mInjector; private final Context mContext; - private final Handler mHandler; + @VisibleForTesting + protected final Handler mHandler; @VisibleForTesting protected final LockSettingsStorage mStorage; private final LockSettingsStrongAuth mStrongAuth; @@ -191,6 +196,14 @@ public class LockSettingsService extends ILockSettings.Stub { publishBinderService("lock_settings", mLockSettingsService); } + @Override + public void onBootPhase(int phase) { + super.onBootPhase(phase); + if (phase == PHASE_ACTIVITY_MANAGER_READY) { + mLockSettingsService.migrateOldDataAfterSystemReady(); + } + } + @Override public void onStartUser(int userHandle) { mLockSettingsService.onStartUser(userHandle); @@ -363,7 +376,7 @@ public class LockSettingsService extends ILockSettings.Stub { } public SyntheticPasswordManager getSyntheticPasswordManager(LockSettingsStorage storage) { - return new SyntheticPasswordManager(storage, getUserManager()); + return new SyntheticPasswordManager(getContext(), storage, getUserManager()); } public int binderGetCallingUid() { @@ -492,12 +505,34 @@ public class LockSettingsService extends ILockSettings.Stub { maybeShowEncryptionNotificationForUser(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. + */ + private void ensureProfileKeystoreUnlocked(int userId) { + final KeyStore ks = KeyStore.getInstance(); + if (ks.state(userId) == KeyStore.State.LOCKED + && tiedManagedProfileReadyToUnlock(mUserManager.getUserInfo(userId))) { + Slog.i(TAG, "Managed profile got unlocked, will unlock its keystore"); + try { + // If boot took too long and the password in vold got expired, parent keystore will + // be still locked, we ignore this case since the user will be prompted to unlock + // the device after boot. + unlockChildProfile(userId, true /* ignoreUserNotAuthenticated */); + } catch (RemoteException e) { + Slog.e(TAG, "Failed to unlock child profile"); + } + } + } + public void onUnlockUser(final int userId) { // Perform tasks which require locks in LSS on a handler, as we are callbacks from // ActivityManager.unlockUser() mHandler.post(new Runnable() { @Override public void run() { + ensureProfileKeystoreUnlocked(userId); // Hide notification first, as tie managed profile lock takes time hideEncryptionNotification(new UserHandle(userId)); @@ -550,6 +585,10 @@ public class LockSettingsService extends ILockSettings.Stub { @Override // binder interface public void systemReady() { + if (mContext.checkCallingOrSelfPermission(PERMISSION) != PERMISSION_GRANTED) { + EventLog.writeEvent(0x534e4554, "28251513", getCallingUid(), ""); // SafetyNet + } + checkWritePermission(UserHandle.USER_SYSTEM); migrateOldData(); try { getGateKeeperService(); @@ -560,6 +599,7 @@ public class LockSettingsService extends ILockSettings.Stub { mDeviceProvisionedObserver.onSystemReady(); // TODO: maybe skip this for split system user mode. mStorage.prefetchUser(UserHandle.USER_SYSTEM); + mStrongAuth.systemReady(); } private void migrateOldData() { @@ -720,6 +760,74 @@ public class LockSettingsService extends ILockSettings.Stub { } } + private void migrateOldDataAfterSystemReady() { + try { + // Migrate the FRP credential to the persistent data block + if (LockPatternUtils.frpCredentialEnabled(mContext) + && !getBoolean("migrated_frp", false, 0)) { + migrateFrpCredential(); + setBoolean("migrated_frp", true, 0); + Slog.i(TAG, "Migrated migrated_frp."); + } + } catch (RemoteException e) { + Slog.e(TAG, "Unable to migrateOldDataAfterSystemReady", e); + } + } + + /** + * Migrate the credential for the FRP credential owner user if the following are satisfied: + * - the user has a secure credential + * - the FRP credential is not set up + * - the credential is based on a synthetic password. + */ + private void migrateFrpCredential() throws RemoteException { + if (mStorage.readPersistentDataBlock() != PersistentData.NONE) { + return; + } + for (UserInfo userInfo : mUserManager.getUsers()) { + if (userOwnsFrpCredential(mContext, userInfo) && isUserSecure(userInfo.id)) { + synchronized (mSpManager) { + if (isSyntheticPasswordBasedCredentialLocked(userInfo.id)) { + int actualQuality = (int) getLong(LockPatternUtils.PASSWORD_TYPE_KEY, + DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, userInfo.id); + + mSpManager.migrateFrpPasswordLocked( + getSyntheticPasswordHandleLocked(userInfo.id), + userInfo, + redactActualQualityToMostLenientEquivalentQuality(actualQuality)); + } + } + return; + } + } + } + + /** + * Returns the lowest password quality that still presents the same UI for entering it. + * + * For the FRP credential, we do not want to leak the actual quality of the password, only what + * kind of UI it requires. However, when migrating, we only know the actual quality, not the + * originally requested quality; since this is only used to determine what input variant to + * present to the user, we just assume the lowest possible quality was requested. + */ + private int redactActualQualityToMostLenientEquivalentQuality(int quality) { + switch (quality) { + case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: + case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: + case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: + return DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC; + case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: + case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX: + return DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; + case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED: + case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: + case DevicePolicyManager.PASSWORD_QUALITY_MANAGED: + case DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK: + default: + return quality; + } + } + private final void checkWritePermission(int userId) { mContext.enforceCallingOrSelfPermission(PERMISSION, "LockSettingsWrite"); } @@ -728,6 +836,13 @@ public class LockSettingsService extends ILockSettings.Stub { mContext.enforceCallingOrSelfPermission(PERMISSION, "LockSettingsRead"); } + private final void checkPasswordHavePermission(int userId) { + if (mContext.checkCallingOrSelfPermission(PERMISSION) != PERMISSION_GRANTED) { + EventLog.writeEvent(0x534e4554, "28251513", getCallingUid(), ""); // SafetyNet + } + mContext.enforceCallingOrSelfPermission(PERMISSION, "LockSettingsHave"); + } + private final void checkReadPermission(String requestedKey, int userId) { final int callingUid = Binder.getCallingUid(); @@ -803,7 +918,7 @@ public class LockSettingsService extends ILockSettings.Stub { } @Override - public boolean getBoolean(String key, boolean defaultValue, int userId) throws RemoteException { + public boolean getBoolean(String key, boolean defaultValue, int userId) { checkReadPermission(key, userId); String value = getStringUnchecked(key, null, userId); return TextUtils.isEmpty(value) ? @@ -811,14 +926,14 @@ public class LockSettingsService extends ILockSettings.Stub { } @Override - public long getLong(String key, long defaultValue, int userId) throws RemoteException { + public long getLong(String key, long defaultValue, int userId) { checkReadPermission(key, userId); String value = getStringUnchecked(key, null, userId); return TextUtils.isEmpty(value) ? defaultValue : Long.parseLong(value); } @Override - public String getString(String key, String defaultValue, int userId) throws RemoteException { + public String getString(String key, String defaultValue, int userId) { checkReadPermission(key, userId); return getStringUnchecked(key, defaultValue, userId); } @@ -857,6 +972,7 @@ public class LockSettingsService extends ILockSettings.Stub { @Override public boolean havePassword(int userId) throws RemoteException { + checkPasswordHavePermission(userId); synchronized (mSpManager) { if (isSyntheticPasswordBasedCredentialLocked(userId)) { long handle = getSyntheticPasswordHandleLocked(userId); @@ -870,6 +986,7 @@ public class LockSettingsService extends ILockSettings.Stub { @Override public boolean havePattern(int userId) throws RemoteException { + checkPasswordHavePermission(userId); synchronized (mSpManager) { if (isSyntheticPasswordBasedCredentialLocked(userId)) { long handle = getSyntheticPasswordHandleLocked(userId); @@ -935,7 +1052,8 @@ public class LockSettingsService extends ILockSettings.Stub { return new String(decryptionResult, StandardCharsets.UTF_8); } - private void unlockChildProfile(int profileHandle) throws RemoteException { + private void unlockChildProfile(int profileHandle, boolean ignoreUserNotAuthenticated) + throws RemoteException { try { doVerifyCredential(getDecryptedPasswordForTiedProfile(profileHandle), LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, @@ -946,6 +1064,8 @@ public class LockSettingsService extends ILockSettings.Stub { | BadPaddingException | CertificateException | IOException e) { if (e instanceof FileNotFoundException) { Slog.i(TAG, "Child profile key not found"); + } else if (ignoreUserNotAuthenticated && e instanceof UserNotAuthenticatedException) { + Slog.i(TAG, "Parent keystore seems locked, ignoring"); } else { Slog.e(TAG, "Failed to decrypt child profile key", e); } @@ -989,11 +1109,8 @@ public class LockSettingsService extends ILockSettings.Stub { final List profiles = mUserManager.getProfiles(userId); for (UserInfo pi : profiles) { // Unlock managed profile with unified lock - if (pi.isManagedProfile() - && !mLockPatternUtils.isSeparateProfileChallengeEnabled(pi.id) - && mStorage.hasChildProfileLock(pi.id) - && mUserManager.isUserRunning(pi.id)) { - unlockChildProfile(pi.id); + if (tiedManagedProfileReadyToUnlock(pi)) { + unlockChildProfile(pi.id, false /* ignoreUserNotAuthenticated */); } } } @@ -1002,6 +1119,13 @@ public class LockSettingsService extends ILockSettings.Stub { } } + private boolean tiedManagedProfileReadyToUnlock(UserInfo userInfo) { + return userInfo.isManagedProfile() + && !mLockPatternUtils.isSeparateProfileChallengeEnabled(userInfo.id) + && mStorage.hasChildProfileLock(userInfo.id) + && mUserManager.isUserRunning(userInfo.id); + } + private Map getDecryptedPasswordsForAllTiedProfiles(int userId) { if (mUserManager.getUserInfo(userId).isManagedProfile()) { return null; @@ -1019,12 +1143,13 @@ public class LockSettingsService extends ILockSettings.Stub { continue; } try { - result.put(userId, getDecryptedPasswordForTiedProfile(userId)); + result.put(managedUserId, getDecryptedPasswordForTiedProfile(managedUserId)); } catch (KeyStoreException | UnrecoverableKeyException | NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException | CertificateException | IOException e) { - // ignore + Slog.e(TAG, "getDecryptedPasswordsForAllTiedProfiles failed for user " + + managedUserId, e); } } return result; @@ -1132,12 +1257,6 @@ public class LockSettingsService extends ILockSettings.Stub { fixateNewestUserKeyAuth(userId); synchronizeUnifiedWorkChallengeForProfiles(userId, null); notifyActivePasswordMetricsAvailable(null, userId); - - if (mStorage.getPersistentDataBlock() != null - && LockPatternUtils.userOwnsFrpCredential(mUserManager.getUserInfo(userId))) { - // If owner, write to persistent storage for FRP - mStorage.writePersistentDataBlock(PersistentData.TYPE_NONE, userId, 0, null); - } return; } if (credential == null) { @@ -1190,12 +1309,6 @@ public class LockSettingsService extends ILockSettings.Stub { // Refresh the auth token doVerifyCredential(credential, credentialType, true, 0, userId, null /* progressCallback */); synchronizeUnifiedWorkChallengeForProfiles(userId, null); - if (mStorage.getPersistentDataBlock() != null - && LockPatternUtils.userOwnsFrpCredential(mUserManager.getUserInfo(userId))) { - // If owner, write to persistent storage for FRP - mStorage.writePersistentDataBlock(PersistentData.TYPE_GATEKEEPER, userId, - requestedQuality, willStore.toBytes()); - } } else { throw new RemoteException("Failed to enroll " + (credentialType == LockPatternUtils.CREDENTIAL_TYPE_PASSWORD ? "password" @@ -1444,18 +1557,12 @@ public class LockSettingsService extends ILockSettings.Stub { return response; } - final CredentialHash storedHash; if (userId == USER_FRP) { - PersistentData data = mStorage.readPersistentDataBlock(); - if (data.type != PersistentData.TYPE_GATEKEEPER) { - Slog.wtf(TAG, "Expected PersistentData.TYPE_GATEKEEPER, but was: " + data.type); - return VerifyCredentialResponse.ERROR; - } - return verifyFrpCredential(credential, credentialType, data, progressCallback); - } else { - storedHash = mStorage.readCredentialHash(userId); + Slog.wtf(TAG, "Unexpected FRP credential type, should be SP based."); + return VerifyCredentialResponse.ERROR; } + final CredentialHash storedHash = mStorage.readCredentialHash(userId); if (storedHash.type != credentialType) { Slog.wtf(TAG, "doVerifyCredential type mismatch with stored credential??" + " stored: " + storedHash.type + " passed in: " + credentialType); @@ -1486,29 +1593,6 @@ public class LockSettingsService extends ILockSettings.Stub { return response; } - private VerifyCredentialResponse verifyFrpCredential(String credential, int credentialType, - PersistentData data, ICheckCredentialProgressCallback progressCallback) - throws RemoteException { - CredentialHash storedHash = CredentialHash.fromBytes(data.payload); - if (storedHash.type != credentialType) { - Slog.wtf(TAG, "doVerifyCredential type mismatch with stored credential??" - + " stored: " + storedHash.type + " passed in: " + credentialType); - return VerifyCredentialResponse.ERROR; - } - if (ArrayUtils.isEmpty(storedHash.hash) || TextUtils.isEmpty(credential)) { - Slog.e(TAG, "Stored hash or credential is empty"); - return VerifyCredentialResponse.ERROR; - } - VerifyCredentialResponse response = VerifyCredentialResponse.fromGateKeeperResponse( - getGateKeeperService().verifyChallenge(data.userId, 0 /* challenge */, - storedHash.hash, credential.getBytes())); - if (progressCallback != null - && response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) { - progressCallback.onCredentialVerified(); - } - return response; - } - @Override public VerifyCredentialResponse verifyTiedProfileChallenge(String credential, int type, long challenge, int userId) throws RemoteException { @@ -1655,6 +1739,10 @@ public class LockSettingsService extends ILockSettings.Stub { return response; } + /** + * Call this method to notify DPMS regarding the latest password metric. This should be called + * when the user is authenticating or when a new password is being set. + */ private void notifyActivePasswordMetricsAvailable(String password, @UserIdInt int userId) { final PasswordMetrics metrics; if (password == null) { @@ -1932,7 +2020,8 @@ public class LockSettingsService extends ILockSettings.Stub { * This is the untrusted credential reset, OR the user sets a new lockscreen password * FOR THE FIRST TIME on a SP-enabled device. New credential and new SID will be created */ - private AuthenticationToken initializeSyntheticPasswordLocked(byte[] credentialHash, + @VisibleForTesting + protected AuthenticationToken initializeSyntheticPasswordLocked(byte[] credentialHash, String credential, int credentialType, int requestedQuality, int userId) throws RemoteException { Slog.i(TAG, "Initialize SyntheticPassword for user: " + userId); @@ -1964,11 +2053,8 @@ public class LockSettingsService extends ILockSettings.Stub { } private long getSyntheticPasswordHandleLocked(int userId) { - try { - return getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, 0, userId); - } catch (RemoteException e) { - return SyntheticPasswordManager.DEFAULT_HANDLE; - } + return getLong(SYNTHETIC_PASSWORD_HANDLE_KEY, + SyntheticPasswordManager.DEFAULT_HANDLE, userId); } private boolean isSyntheticPasswordBasedCredentialLocked(int userId) throws RemoteException { @@ -1983,7 +2069,8 @@ public class LockSettingsService extends ILockSettings.Stub { return enabled != 0 && handle != SyntheticPasswordManager.DEFAULT_HANDLE; } - private boolean shouldMigrateToSyntheticPasswordLocked(int userId) throws RemoteException { + @VisibleForTesting + protected boolean shouldMigrateToSyntheticPasswordLocked(int userId) throws RemoteException { long handle = getSyntheticPasswordHandleLocked(userId); // This is a global setting long enabled = getLong(SYNTHETIC_PASSWORD_ENABLED_KEY, @@ -2018,6 +2105,10 @@ public class LockSettingsService extends ILockSettings.Stub { authResult = mSpManager.unwrapPasswordBasedSyntheticPassword( getGateKeeperService(), handle, userCredential, userId); + if (authResult.credentialType != credentialType) { + Slog.e(TAG, "Credential type mismatch."); + return VerifyCredentialResponse.ERROR; + } response = authResult.gkResponse; // credential has matched if (response.getResponseCode() == VerifyCredentialResponse.RESPONSE_OK) { @@ -2113,6 +2204,8 @@ public class LockSettingsService extends ILockSettings.Stub { } setLong(SYNTHETIC_PASSWORD_HANDLE_KEY, newHandle, userId); synchronizeUnifiedWorkChallengeForProfiles(userId, profilePasswords); + + notifyActivePasswordMetricsAvailable(credential, userId); return newHandle; } @@ -2137,6 +2230,14 @@ public class LockSettingsService extends ILockSettings.Stub { getGateKeeperService(), handle, savedCredential, userId); VerifyCredentialResponse response = authResult.gkResponse; AuthenticationToken auth = authResult.authToken; + + // If existing credential is provided, then it must match. + if (savedCredential != null && auth == null) { + throw new RemoteException("Failed to enroll " + + (credentialType == LockPatternUtils.CREDENTIAL_TYPE_PASSWORD ? "password" + : "pattern")); + } + if (auth != null) { // We are performing a trusted credential change i.e. a correct existing credential // is provided @@ -2154,13 +2255,13 @@ public class LockSettingsService extends ILockSettings.Stub { userId); synchronizeUnifiedWorkChallengeForProfiles(userId, null); mSpManager.destroyPasswordBasedSyntheticPassword(handle, userId); + + notifyActivePasswordMetricsAvailable(credential, userId); } else /* response == null || responseCode == VerifyCredentialResponse.RESPONSE_RETRY */ { Slog.w(TAG, "spBasedSetLockCredentialInternalLocked: " + (response != null ? "rate limit exceeded" : "failed")); return; } - notifyActivePasswordMetricsAvailable(credential, userId); - } @Override @@ -2266,6 +2367,17 @@ public class LockSettingsService extends ILockSettings.Stub { Slog.w(TAG, "Invalid escrow token supplied"); return false; } + if (result.gkResponse.getResponseCode() != VerifyCredentialResponse.RESPONSE_OK) { + // Most likely, an untrusted credential reset happened in the past which + // changed the synthetic password + Slog.e(TAG, "Obsolete token: synthetic password derived but it fails GK " + + "verification."); + return false; + } + // Update PASSWORD_TYPE_KEY since it's needed by notifyActivePasswordMetricsAvailable() + // called by setLockCredentialWithAuthTokenLocked(). + // TODO: refactor usage of PASSWORD_TYPE_KEY b/65239740 + setLong(LockPatternUtils.PASSWORD_TYPE_KEY, requestedQuality, userId); long oldHandle = getSyntheticPasswordHandleLocked(userId); setLockCredentialWithAuthTokenLocked(credential, type, result.authToken, requestedQuality, userId); @@ -2387,12 +2499,13 @@ public class LockSettingsService extends ILockSettings.Stub { if (isProvisioned()) { Slog.i(TAG, "Reporting device setup complete to IGateKeeperService"); reportDeviceSetupComplete(); + clearFrpCredentialIfOwnerNotSecure(); } } } public void onSystemReady() { - if (frpCredentialEnabled()) { + if (frpCredentialEnabled(mContext)) { updateRegistration(); } else { // If we don't intend to use frpCredentials and we're not provisioned yet, send @@ -2414,6 +2527,23 @@ public class LockSettingsService extends ILockSettings.Stub { } } + /** + * Clears the FRP credential if the user that controls it does not have a secure + * lockscreen. + */ + private void clearFrpCredentialIfOwnerNotSecure() { + List users = mUserManager.getUsers(); + for (UserInfo user : users) { + if (userOwnsFrpCredential(mContext, user)) { + if (!isUserSecure(user.id)) { + mStorage.writePersistentDataBlock(PersistentData.TYPE_NONE, user.id, + 0, null); + } + return; + } + } + } + private void updateRegistration() { boolean register = !isProvisioned(); if (register == mRegistered) { diff --git a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java index d730c56ae2ca830bcb712cdb2f07e3e182592bb6..4d2cf321b5ee76352ff7792dca5fa008a59e53d9 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java @@ -36,6 +36,8 @@ class LockSettingsShellCommand extends ShellCommand { private static final String COMMAND_CLEAR = "clear"; private static final String COMMAND_SP = "sp"; private static final String COMMAND_SET_DISABLED = "set-disabled"; + private static final String COMMAND_VERIFY = "verify"; + private static final String COMMAND_GET_DISABLED = "get-disabled"; private int mCurrentUserId; private final LockPatternUtils mLockPatternUtils; @@ -76,6 +78,12 @@ class LockSettingsShellCommand extends ShellCommand { case COMMAND_SET_DISABLED: runSetDisabled(); break; + case COMMAND_VERIFY: + runVerify(); + break; + case COMMAND_GET_DISABLED: + runGetDisabled(); + break; default: getErrPrintWriter().println("Unknown command: " + cmd); break; @@ -88,6 +96,11 @@ class LockSettingsShellCommand extends ShellCommand { } } + private void runVerify() { + // The command is only run if the credential is correct. + getOutPrintWriter().println("Lock credential verified successfully"); + } + @Override public void onHelp() { } @@ -147,21 +160,36 @@ class LockSettingsShellCommand extends ShellCommand { getOutPrintWriter().println("Lock screen disabled set to " + disabled); } - private boolean checkCredential() throws RemoteException, RequestThrottledException { + private void runGetDisabled() { + boolean isLockScreenDisabled = mLockPatternUtils.isLockScreenDisabled(mCurrentUserId); + getOutPrintWriter().println(isLockScreenDisabled); + } + + private boolean checkCredential() throws RemoteException { final boolean havePassword = mLockPatternUtils.isLockPasswordEnabled(mCurrentUserId); final boolean havePattern = mLockPatternUtils.isLockPatternEnabled(mCurrentUserId); if (havePassword || havePattern) { - boolean result; - if (havePassword) { - result = mLockPatternUtils.checkPassword(mOld, mCurrentUserId); - } else { - result = mLockPatternUtils.checkPattern(stringToPattern(mOld), - mCurrentUserId); + if (mLockPatternUtils.isManagedProfileWithUnifiedChallenge(mCurrentUserId)) { + getOutPrintWriter().println("Profile uses unified challenge"); + return false; } - if (result) { - return true; - } else { - getOutPrintWriter().println("Old password '" + mOld + "' didn't match"); + + try { + final boolean result; + if (havePassword) { + result = mLockPatternUtils.checkPassword(mOld, mCurrentUserId); + } else { + result = mLockPatternUtils.checkPattern(stringToPattern(mOld), mCurrentUserId); + } + if (!result) { + if (!mLockPatternUtils.isManagedProfileWithUnifiedChallenge(mCurrentUserId)) { + mLockPatternUtils.reportFailedPasswordAttempt(mCurrentUserId); + } + getOutPrintWriter().println("Old password '" + mOld + "' didn't match"); + } + return result; + } catch (RequestThrottledException e) { + getOutPrintWriter().println("Request throttled"); return false; } } else { diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java index 79372e483af5246472a3b3bd06ac78c19061c518..70d607227e231bfceb356c36268a955e4dfc40ee 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java @@ -635,9 +635,8 @@ class LockSettingsStorage { static final int VERSION_1_HEADER_SIZE = 1 + 1 + 4 + 4; public static final int TYPE_NONE = 0; - public static final int TYPE_GATEKEEPER = 1; - public static final int TYPE_SP = 2; - public static final int TYPE_SP_WEAVER = 3; + public static final int TYPE_SP = 1; + public static final int TYPE_SP_WEAVER = 2; public static final PersistentData NONE = new PersistentData(TYPE_NONE, UserHandle.USER_NULL, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED, null); @@ -714,12 +713,15 @@ class LockSettingsStorage { private static final String DATABASE_NAME = "locksettings.db"; private static final int DATABASE_VERSION = 2; + private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000; private Callback mCallback; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); setWriteAheadLoggingEnabled(true); + // Memory optimization - close idle connections after 30s of inactivity + setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS); } public void setCallback(Callback callback) { diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java b/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java index 096615313f940fbf3cde10aa48b734ef349db6ff..c9c93293e2eef097b35d0d9ed023966efb44e3c8 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java @@ -27,6 +27,8 @@ import android.app.AlarmManager.OnAlarmListener; import android.app.admin.DevicePolicyManager; import android.app.trust.IStrongAuthTracker; import android.content.Context; +import android.content.pm.PackageManager; +import android.hardware.fingerprint.FingerprintManager; import android.os.Binder; import android.os.DeadObjectException; import android.os.Handler; @@ -64,6 +66,7 @@ public class LockSettingsStrongAuth { private final Context mContext; private AlarmManager mAlarmManager; + private FingerprintManager mFingerprintManager; public LockSettingsStrongAuth(Context context) { mContext = context; @@ -71,6 +74,13 @@ public class LockSettingsStrongAuth { mAlarmManager = context.getSystemService(AlarmManager.class); } + public void systemReady() { + final PackageManager pm = mContext.getPackageManager(); + if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { + mFingerprintManager = mContext.getSystemService(FingerprintManager.class); + } + } + private void handleAddStrongAuthTracker(IStrongAuthTracker tracker) { for (int i = 0; i < mStrongAuthTrackers.size(); i++) { if (mStrongAuthTrackers.get(i).asBinder() == tracker.asBinder()) { @@ -188,6 +198,11 @@ public class LockSettingsStrongAuth { } public void reportSuccessfulStrongAuthUnlock(int userId) { + if (mFingerprintManager != null) { + byte[] token = null; /* TODO: pass real auth token once fp HAL supports it */ + mFingerprintManager.resetTimeout(token); + } + final int argNotUsed = 0; mHandler.obtainMessage(MSG_SCHEDULE_STRONG_AUTH_TIMEOUT, userId, argNotUsed).sendToTarget(); } diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java index f45c208db919fbaffd307cd6c4d131b2aa615401..9440f17164aa631ddec03fc3c801e5a84db5e4f4 100644 --- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java +++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java @@ -19,6 +19,8 @@ package com.android.server.locksettings; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.admin.DevicePolicyManager; +import android.content.Context; +import android.content.pm.UserInfo; import android.hardware.weaver.V1_0.IWeaver; import android.hardware.weaver.V1_0.WeaverConfig; import android.hardware.weaver.V1_0.WeaverReadResponse; @@ -127,6 +129,7 @@ public class SyntheticPasswordManager { static class AuthenticationResult { public AuthenticationToken authToken; public VerifyCredentialResponse gkResponse; + public int credentialType; } static class AuthenticationToken { @@ -253,13 +256,16 @@ public class SyntheticPasswordManager { byte[] aggregatedSecret; } + private final Context mContext; private LockSettingsStorage mStorage; private IWeaver mWeaver; private WeaverConfig mWeaverConfig; private final UserManager mUserManager; - public SyntheticPasswordManager(LockSettingsStorage storage, UserManager userManager) { + public SyntheticPasswordManager(Context context, LockSettingsStorage storage, + UserManager userManager) { + mContext = context; mStorage = storage; mUserManager = userManager; } @@ -624,8 +630,8 @@ public class SyntheticPasswordManager { PasswordData pwd = PasswordData.fromBytes(persistentData.payload); byte[] pwdToken = computePasswordToken(userCredential, pwd); - GateKeeperResponse response = gatekeeper.verify(fakeUid(persistentData.userId), - pwd.passwordHandle, passwordTokenToGkInput(pwdToken)); + GateKeeperResponse response = gatekeeper.verifyChallenge(fakeUid(persistentData.userId), + 0 /* challenge */, pwd.passwordHandle, passwordTokenToGkInput(pwdToken)); return VerifyCredentialResponse.fromGateKeeperResponse(response); } else if (persistentData.type == PersistentData.TYPE_SP_WEAVER) { PasswordData pwd = PasswordData.fromBytes(persistentData.payload); @@ -641,10 +647,27 @@ public class SyntheticPasswordManager { } + public void migrateFrpPasswordLocked(long handle, UserInfo userInfo, int requestedQuality) { + if (mStorage.getPersistentDataBlock() != null + && LockPatternUtils.userOwnsFrpCredential(mContext, userInfo)) { + PasswordData pwd = PasswordData.fromBytes(loadState(PASSWORD_DATA_NAME, handle, + userInfo.id)); + if (pwd.passwordType != LockPatternUtils.CREDENTIAL_TYPE_NONE) { + int weaverSlot = loadWeaverSlot(handle, userInfo.id); + if (weaverSlot != INVALID_WEAVER_SLOT) { + synchronizeWeaverFrpPassword(pwd, requestedQuality, userInfo.id, weaverSlot); + } else { + synchronizeFrpPassword(pwd, requestedQuality, userInfo.id); + } + } + } + } + private void synchronizeFrpPassword(PasswordData pwd, int requestedQuality, int userId) { if (mStorage.getPersistentDataBlock() != null - && LockPatternUtils.userOwnsFrpCredential(mUserManager.getUserInfo(userId))) { + && LockPatternUtils.userOwnsFrpCredential(mContext, + mUserManager.getUserInfo(userId))) { if (pwd.passwordType != LockPatternUtils.CREDENTIAL_TYPE_NONE) { mStorage.writePersistentDataBlock(PersistentData.TYPE_SP, userId, requestedQuality, pwd.toBytes()); @@ -657,7 +680,8 @@ public class SyntheticPasswordManager { private void synchronizeWeaverFrpPassword(PasswordData pwd, int requestedQuality, int userId, int weaverSlot) { if (mStorage.getPersistentDataBlock() != null - && LockPatternUtils.userOwnsFrpCredential(mUserManager.getUserInfo(userId))) { + && LockPatternUtils.userOwnsFrpCredential(mContext, + mUserManager.getUserInfo(userId))) { if (pwd.passwordType != LockPatternUtils.CREDENTIAL_TYPE_NONE) { mStorage.writePersistentDataBlock(PersistentData.TYPE_SP_WEAVER, weaverSlot, requestedQuality, pwd.toBytes()); @@ -754,6 +778,8 @@ public class SyntheticPasswordManager { * Decrypt a synthetic password by supplying the user credential and corresponding password * blob handle generated previously. If the decryption is successful, initiate a GateKeeper * verification to referesh the SID & Auth token maintained by the system. + * Note: the credential type is not validated here since there are call sites where the type is + * unknown. Caller might choose to validate it by examining AuthenticationResult.credentialType */ public AuthenticationResult unwrapPasswordBasedSyntheticPassword(IGateKeeperService gatekeeper, long handle, String credential, int userId) throws RemoteException { @@ -762,6 +788,7 @@ public class SyntheticPasswordManager { } AuthenticationResult result = new AuthenticationResult(); PasswordData pwd = PasswordData.fromBytes(loadState(PASSWORD_DATA_NAME, handle, userId)); + result.credentialType = pwd.passwordType; byte[] pwdToken = computePasswordToken(credential, pwd); final byte[] applicationId; diff --git a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java index f6f767653c83256289fc9b418f9253ea3f75a0c8..791ee821b357d16b436b830d28c4e7b8858d6224 100644 --- a/services/core/java/com/android/server/media/AudioPlaybackMonitor.java +++ b/services/core/java/com/android/server/media/AudioPlaybackMonitor.java @@ -100,7 +100,11 @@ class AudioPlaybackMonitor extends IPlaybackConfigDispatcher.Stub { * @param configs List of the current audio playback configuration */ @Override - public void dispatchPlaybackConfigChange(List configs) { + public void dispatchPlaybackConfigChange(List configs, + boolean flush) { + if (flush) { + Binder.flushPendingCommands(); + } final long token = Binder.clearCallingIdentity(); try { List newActiveAudioPlaybackClientUids = new ArrayList<>(); diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index 922df1e3dba88c415f30e0801ee1753e0e857764..1cfd5f02e8105aef41789bebc89dc6b2b0255530 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -18,9 +18,7 @@ package com.android.server.media; import com.android.internal.util.DumpUtils; import com.android.server.Watchdog; -import com.android.server.media.AudioPlaybackMonitor.OnAudioPlayerActiveStateChangedListener; -import android.Manifest; import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.Context; @@ -96,9 +94,10 @@ public final class MediaRouterService extends IMediaRouterService.Stub private final ArrayMap mAllClientRecords = new ArrayMap(); private int mCurrentUserId = -1; - private boolean mHasBluetoothRoute = false; + private boolean mGlobalBluetoothA2dpOn = false; private final IAudioService mAudioService; private final AudioPlaybackMonitor mAudioPlaybackMonitor; + private final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo(); public MediaRouterService(Context context) { mContext = context; @@ -137,13 +136,39 @@ public final class MediaRouterService extends IMediaRouterService.Stub audioRoutes = mAudioService.startWatchingRoutes(new IAudioRoutesObserver.Stub() { @Override public void dispatchAudioRoutesChanged(final AudioRoutesInfo newRoutes) { - mHasBluetoothRoute = newRoutes.bluetoothName != null; + synchronized (mLock) { + if (newRoutes.mainType != mCurAudioRoutesInfo.mainType) { + if ((newRoutes.mainType & (AudioRoutesInfo.MAIN_HEADSET + | AudioRoutesInfo.MAIN_HEADPHONES + | AudioRoutesInfo.MAIN_USB)) == 0) { + // headset was plugged out. + mGlobalBluetoothA2dpOn = newRoutes.bluetoothName != null; + } else { + // headset was plugged in. + mGlobalBluetoothA2dpOn = false; + } + mCurAudioRoutesInfo.mainType = newRoutes.mainType; + } + if (!TextUtils.equals( + newRoutes.bluetoothName, mCurAudioRoutesInfo.bluetoothName)) { + if (newRoutes.bluetoothName == null) { + // BT was disconnected. + mGlobalBluetoothA2dpOn = false; + } else { + // BT was connected or changed. + mGlobalBluetoothA2dpOn = true; + } + mCurAudioRoutesInfo.bluetoothName = newRoutes.bluetoothName; + } + } } }); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in the audio service."); } - mHasBluetoothRoute = (audioRoutes != null && audioRoutes.bluetoothName != null); + synchronized (mLock) { + mGlobalBluetoothA2dpOn = (audioRoutes != null && audioRoutes.bluetoothName != null); + } } public void systemRunning() { @@ -346,7 +371,12 @@ public final class MediaRouterService extends IMediaRouterService.Stub void restoreBluetoothA2dp() { try { - mAudioService.setBluetoothA2dpOn(mHasBluetoothRoute); + boolean a2dpOn = false; + synchronized (mLock) { + a2dpOn = mGlobalBluetoothA2dpOn; + } + Slog.v(TAG, "restoreBluetoothA2dp(" + a2dpOn + ")"); + mAudioService.setBluetoothA2dpOn(a2dpOn); } catch (RemoteException e) { Slog.w(TAG, "RemoteException while calling setBluetoothA2dpOn."); } @@ -354,12 +384,14 @@ public final class MediaRouterService extends IMediaRouterService.Stub void restoreRoute(int uid) { ClientRecord clientRecord = null; - UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid)); - if (userRecord != null && userRecord.mClientRecords != null) { - for (ClientRecord cr : userRecord.mClientRecords) { - if (validatePackageName(uid, cr.mPackageName)) { - clientRecord = cr; - break; + synchronized (mLock) { + UserRecord userRecord = mUserRecords.get(UserHandle.getUserId(uid)); + if (userRecord != null && userRecord.mClientRecords != null) { + for (ClientRecord cr : userRecord.mClientRecords) { + if (validatePackageName(uid, cr.mPackageName)) { + clientRecord = cr; + break; + } } } } diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 89e10503fcf3b7a9ab956eaa9c01e452e2dbece7..664d2f9789f081901bb5b58359d496743af69d9d 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -462,18 +462,25 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { mHandler.post(new Runnable() { @Override public void run() { - if (useSuggested) { - if (AudioSystem.isStreamActive(stream, 0)) { - mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction, - flags, packageName, uid); + try { + if (useSuggested) { + if (AudioSystem.isStreamActive(stream, 0)) { + mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, + direction, flags, packageName, uid); + } else { + mAudioManagerInternal.adjustSuggestedStreamVolumeForUid( + AudioManager.USE_DEFAULT_STREAM_TYPE, direction, + flags | previousFlagPlaySound, packageName, uid); + } } else { - mAudioManagerInternal.adjustSuggestedStreamVolumeForUid( - AudioManager.USE_DEFAULT_STREAM_TYPE, direction, - flags | previousFlagPlaySound, packageName, uid); + mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags, + packageName, uid); } - } else { - mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags, - packageName, uid); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Cannot adjust volume: direction=" + direction + ", stream=" + + stream + ", flags=" + flags + ", packageName=" + packageName + + ", uid=" + uid + ", useSuggested=" + useSuggested + + ", previousFlagPlaySound=" + previousFlagPlaySound, e); } } }); @@ -777,6 +784,14 @@ public class MediaSessionRecord implements IBinder.DeathRecipient { mService.enforcePhoneStatePermission(pid, uid); } mFlags = flags; + if ((flags & MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY) != 0) { + final long token = Binder.clearCallingIdentity(); + try { + mService.setGlobalPrioritySession(MediaSessionRecord.this); + } finally { + Binder.restoreCallingIdentity(token); + } + } mHandler.post(MessageHandler.MSG_UPDATE_SESSION_STATE); } diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index adb50f0f16099b35ac9e98ddd5d1327d3da19c70..aa652445c45a1591ab5822d03b7dfbe2dfe438fe 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -16,10 +16,8 @@ package com.android.server.media; -import android.Manifest; -import android.annotation.NonNull; -import android.app.Activity; import android.app.ActivityManager; +import android.app.INotificationManager; import android.app.KeyguardManager; import android.app.PendingIntent; import android.app.PendingIntent.CanceledException; @@ -57,13 +55,11 @@ import android.os.Process; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; -import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.speech.RecognizerIntent; import android.text.TextUtils; -import android.util.IntArray; import android.util.Log; import android.util.Slog; import android.util.SparseArray; @@ -80,7 +76,6 @@ import com.android.server.Watchdog.Monitor; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -112,6 +107,8 @@ public class MediaSessionService extends SystemService implements Monitor { private AudioManagerInternal mAudioManagerInternal; private ContentResolver mContentResolver; private SettingsObserver mSettingsObserver; + private INotificationManager mNotificationManager; + private boolean mHasFeatureLeanback; // The FullUserRecord of the current users. (i.e. The foreground user that isn't a profile) // It's always not null after the MediaSessionService is started. @@ -129,6 +126,8 @@ public class MediaSessionService extends SystemService implements Monitor { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); mMediaEventWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "handleMediaEvent"); mLongPressTimeout = ViewConfiguration.getLongPressTimeout(); + mNotificationManager = INotificationManager.Stub.asInterface( + ServiceManager.getService(Context.NOTIFICATION_SERVICE)); } @Override @@ -156,6 +155,8 @@ public class MediaSessionService extends SystemService implements Monitor { mContentResolver = getContext().getContentResolver(); mSettingsObserver = new SettingsObserver(); mSettingsObserver.observe(); + mHasFeatureLeanback = getContext().getPackageManager().hasSystemFeature( + PackageManager.FEATURE_LEANBACK); updateUser(); } @@ -177,17 +178,6 @@ public class MediaSessionService extends SystemService implements Monitor { return; } if ((record.getFlags() & MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY) != 0) { - if (mGlobalPrioritySession != record) { - Log.d(TAG, "Global priority session is changed from " + mGlobalPrioritySession - + " to " + record); - mGlobalPrioritySession = record; - if (user != null && user.mPriorityStack.contains(record)) { - // Handle the global priority session separately. - // Otherwise, it will be the media button session even after it becomes - // inactive because it has been the lastly played media app. - user.mPriorityStack.removeSession(record); - } - } if (DEBUG_KEY_EVENT) { Log.d(TAG, "Global priority session is updated, active=" + record.isActive()); } @@ -203,10 +193,27 @@ public class MediaSessionService extends SystemService implements Monitor { } } + public void setGlobalPrioritySession(MediaSessionRecord record) { + synchronized (mLock) { + FullUserRecord user = getFullUserRecordLocked(record.getUserId()); + if (mGlobalPrioritySession != record) { + Log.d(TAG, "Global priority session is changed from " + mGlobalPrioritySession + + " to " + record); + mGlobalPrioritySession = record; + if (user != null && user.mPriorityStack.contains(record)) { + // Handle the global priority session separately. + // Otherwise, it can be the media button session regardless of the active state + // because it or other system components might have been the lastly played media + // app. + user.mPriorityStack.removeSession(record); + } + } + } + } + private List getActiveSessionsLocked(int userId) { - List records; + List records = new ArrayList<>(); if (userId == UserHandle.USER_ALL) { - records = new ArrayList<>(); int size = mUserRecords.size(); for (int i = 0; i < size; i++) { records.addAll(mUserRecords.valueAt(i).mPriorityStack.getActiveSessions(userId)); @@ -215,9 +222,9 @@ public class MediaSessionService extends SystemService implements Monitor { FullUserRecord user = getFullUserRecordLocked(userId); if (user == null) { Log.w(TAG, "getSessions failed. Unknown user " + userId); - return new ArrayList<>(); + return records; } - records = user.mPriorityStack.getActiveSessions(userId); + records.addAll(user.mPriorityStack.getActiveSessions(userId)); } // Return global priority session at the first whenever it's asked. @@ -472,28 +479,11 @@ public class MediaSessionService extends SystemService implements Monitor { Log.d(TAG, "Checking if enabled notification listener " + compName); } if (compName != null) { - final String enabledNotifListeners = Settings.Secure.getStringForUser(mContentResolver, - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, - userId); - if (enabledNotifListeners != null) { - final String[] components = enabledNotifListeners.split(":"); - for (int i = 0; i < components.length; i++) { - final ComponentName component = - ComponentName.unflattenFromString(components[i]); - if (component != null) { - if (compName.equals(component)) { - if (DEBUG) { - Log.d(TAG, "ok to get sessions. " + component + - " is authorized notification listener"); - } - return true; - } - } - } - } - if (DEBUG) { - Log.d(TAG, "not ok to get sessions. " + compName + - " is not in list of ENABLED_NOTIFICATION_LISTENERS for user " + userId); + try { + return mNotificationManager.isNotificationListenerAccessGrantedForUser( + compName, userId); + } catch(RemoteException e) { + Log.w(TAG, "Dead NotificationManager in isEnabledNotificationListener", e); } } return false; @@ -1379,6 +1369,10 @@ public class MediaSessionService extends SystemService implements Monitor { flags, packageName, TAG); } catch (RemoteException e) { Log.e(TAG, "Error adjusting default volume.", e); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Cannot adjust volume: direction=" + direction + + ", suggestedStream=" + suggestedStream + ", flags=" + flags, + e); } } }); @@ -1528,7 +1522,7 @@ public class MediaSessionService extends SystemService implements Monitor { private boolean isVoiceKey(int keyCode) { return keyCode == KeyEvent.KEYCODE_HEADSETHOOK - || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE; + || (!mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE); } private boolean isUserSetupComplete() { diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 0f1cfa5a59366a5464fb32f60cecc20059464cb4..5159c70e991c8ebe20327aaeb6c2992cdd9ea1d6 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -18,8 +18,8 @@ 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.DUMP; import static android.Manifest.permission.MANAGE_NETWORK_POLICY; +import static android.Manifest.permission.MANAGE_SUBSCRIPTION_PLANS; 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,9 +33,7 @@ import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLE import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED; import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED; import static android.net.ConnectivityManager.TYPE_MOBILE; -import static android.net.ConnectivityManager.TYPE_WIMAX; -import static android.net.ConnectivityManager.isNetworkTypeMobile; -import static android.net.NetworkPolicy.CYCLE_NONE; +import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED; import static android.net.NetworkPolicy.LIMIT_DISABLED; import static android.net.NetworkPolicy.SNOOZE_NEVER; import static android.net.NetworkPolicy.WARNING_DISABLED; @@ -46,20 +44,20 @@ import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_STANDBY; import static android.net.NetworkPolicyManager.FIREWALL_RULE_ALLOW; import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT; import static android.net.NetworkPolicyManager.FIREWALL_RULE_DENY; +import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS; +import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS; import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND; import static android.net.NetworkPolicyManager.POLICY_NONE; import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; import static android.net.NetworkPolicyManager.RULE_ALLOW_ALL; import static android.net.NetworkPolicyManager.RULE_ALLOW_METERED; -import static android.net.NetworkPolicyManager.MASK_METERED_NETWORKS; -import static android.net.NetworkPolicyManager.MASK_ALL_NETWORKS; import static android.net.NetworkPolicyManager.RULE_NONE; import static android.net.NetworkPolicyManager.RULE_REJECT_ALL; import static android.net.NetworkPolicyManager.RULE_REJECT_METERED; import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED; -import static android.net.NetworkPolicyManager.computeLastCycleBoundary; import static android.net.NetworkPolicyManager.isProcStateAllowedWhileIdleOrPowerSaveMode; import static android.net.NetworkPolicyManager.isProcStateAllowedWhileOnRestrictBackground; +import static android.net.NetworkPolicyManager.resolveNetworkId; import static android.net.NetworkPolicyManager.uidPoliciesToString; import static android.net.NetworkPolicyManager.uidRulesToString; import static android.net.NetworkTemplate.MATCH_MOBILE_3G_LOWER; @@ -68,16 +66,9 @@ import static android.net.NetworkTemplate.MATCH_MOBILE_ALL; import static android.net.NetworkTemplate.MATCH_WIFI; import static android.net.NetworkTemplate.buildTemplateMobileAll; import static android.net.TrafficStats.MB_IN_BYTES; -import static android.net.wifi.WifiManager.CHANGE_REASON_ADDED; -import static android.net.wifi.WifiManager.CHANGE_REASON_REMOVED; -import static android.net.wifi.WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION; -import static android.net.wifi.WifiManager.EXTRA_CHANGE_REASON; -import static android.net.wifi.WifiManager.EXTRA_NETWORK_INFO; -import static android.net.wifi.WifiManager.EXTRA_WIFI_CONFIGURATION; -import static android.net.wifi.WifiManager.EXTRA_WIFI_INFO; import static android.telephony.CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED; -import static android.telephony.CarrierConfigManager.DATA_CYCLE_USE_PLATFORM_DEFAULT; import static android.telephony.CarrierConfigManager.DATA_CYCLE_THRESHOLD_DISABLED; +import static android.telephony.CarrierConfigManager.DATA_CYCLE_USE_PLATFORM_DEFAULT; import static android.text.format.DateUtils.DAY_IN_MILLIS; import static com.android.internal.util.ArrayUtils.appendInt; @@ -85,9 +76,11 @@ import static com.android.internal.util.Preconditions.checkNotNull; import static com.android.internal.util.XmlUtils.readBooleanAttribute; import static com.android.internal.util.XmlUtils.readIntAttribute; import static com.android.internal.util.XmlUtils.readLongAttribute; +import static com.android.internal.util.XmlUtils.readStringAttribute; import static com.android.internal.util.XmlUtils.writeBooleanAttribute; import static com.android.internal.util.XmlUtils.writeIntAttribute; import static com.android.internal.util.XmlUtils.writeLongAttribute; +import static com.android.internal.util.XmlUtils.writeStringAttribute; import static com.android.server.NetworkManagementService.LIMIT_GLOBAL_ALERT; import static com.android.server.net.NetworkStatsService.ACTION_NETWORK_STATS_UPDATED; @@ -120,22 +113,25 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.UserInfo; import android.content.res.Resources; import android.net.ConnectivityManager; +import android.net.ConnectivityManager.NetworkCallback; import android.net.IConnectivityManager; import android.net.INetworkManagementEventObserver; import android.net.INetworkPolicyListener; import android.net.INetworkPolicyManager; import android.net.INetworkStatsService; import android.net.LinkProperties; +import android.net.Network; +import android.net.NetworkCapabilities; import android.net.NetworkIdentity; -import android.net.NetworkInfo; import android.net.NetworkPolicy; +import android.net.NetworkPolicyManager; import android.net.NetworkQuotaInfo; +import android.net.NetworkRequest; import android.net.NetworkState; import android.net.NetworkTemplate; +import android.net.TrafficStats; import android.net.wifi.WifiConfiguration; -import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; -import android.os.PowerSaveState; import android.os.Binder; import android.os.Environment; import android.os.Handler; @@ -147,29 +143,35 @@ import android.os.MessageQueue.IdleHandler; import android.os.PersistableBundle; import android.os.PowerManager; import android.os.PowerManagerInternal; +import android.os.PowerSaveState; import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.ShellCallback; +import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.provider.Settings.Global; import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.telephony.SubscriptionPlan; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.Formatter; -import android.text.format.Time; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AtomicFile; import android.util.Log; import android.util.NtpTrustedTime; import android.util.Pair; +import android.util.RecurrenceRule; import android.util.Slog; +import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.TrustedTime; @@ -185,19 +187,17 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.IndentingPrintWriter; +import com.android.internal.util.Preconditions; import com.android.server.DeviceIdleController; import com.android.server.EventLogTags; import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; - import com.android.server.power.BatterySaverPolicy.ServiceType; -import libcore.io.IoUtils; -import com.google.android.collect.Lists; +import libcore.io.IoUtils; import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; import java.io.File; @@ -210,10 +210,12 @@ import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.charset.StandardCharsets; +import java.time.ZoneId; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.Calendar; +import java.util.List; import java.util.Objects; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -261,7 +263,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final int VERSION_SWITCH_APP_ID = 8; private static final int VERSION_ADDED_NETWORK_ID = 9; private static final int VERSION_SWITCH_UID = 10; - private static final int VERSION_LATEST = VERSION_SWITCH_UID; + private static final int VERSION_ADDED_CYCLE = 11; + private static final int VERSION_LATEST = VERSION_ADDED_CYCLE; /** * Max items written to {@link #ProcStateSeqHistory}. @@ -279,6 +282,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final String TAG_POLICY_LIST = "policy-list"; private static final String TAG_NETWORK_POLICY = "network-policy"; + private static final String TAG_SUBSCRIPTION_PLAN = "subscription-plan"; private static final String TAG_UID_POLICY = "uid-policy"; private static final String TAG_APP_POLICY = "app-policy"; private static final String TAG_WHITELIST = "whitelist"; @@ -290,8 +294,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final String ATTR_NETWORK_TEMPLATE = "networkTemplate"; private static final String ATTR_SUBSCRIBER_ID = "subscriberId"; private static final String ATTR_NETWORK_ID = "networkId"; - private static final String ATTR_CYCLE_DAY = "cycleDay"; - private static final String ATTR_CYCLE_TIMEZONE = "cycleTimezone"; + @Deprecated private static final String ATTR_CYCLE_DAY = "cycleDay"; + @Deprecated private static final String ATTR_CYCLE_TIMEZONE = "cycleTimezone"; + private static final String ATTR_CYCLE_START = "cycleStart"; + private static final String ATTR_CYCLE_END = "cycleEnd"; + private static final String ATTR_CYCLE_PERIOD = "cyclePeriod"; private static final String ATTR_WARNING_BYTES = "warningBytes"; private static final String ATTR_LIMIT_BYTES = "limitBytes"; private static final String ATTR_LAST_SNOOZE = "lastSnooze"; @@ -302,6 +309,13 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final String ATTR_UID = "uid"; private static final String ATTR_APP_ID = "appId"; private static final String ATTR_POLICY = "policy"; + private static final String ATTR_SUB_ID = "subId"; + private static final String ATTR_TITLE = "title"; + private static final String ATTR_SUMMARY = "summary"; + private static final String ATTR_LIMIT_BEHAVIOR = "limitBehavior"; + private static final String ATTR_USAGE_BYTES = "usageBytes"; + private static final String ATTR_USAGE_TIME = "usageTime"; + private static final String ATTR_OWNER_PACKAGE = "ownerPackage"; private static final String ACTION_ALLOW_BACKGROUND = "com.android.server.net.action.ALLOW_BACKGROUND"; @@ -318,7 +332,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private static final int MSG_UPDATE_INTERFACE_QUOTA = 10; private static final int MSG_REMOVE_INTERFACE_QUOTA = 11; private static final int MSG_POLICIES_CHANGED = 13; - private static final int MSG_SET_FIREWALL_RULES = 14; private static final int MSG_RESET_FIREWALL_RULES_BY_UID = 15; private static final int UID_MSG_STATE_CHANGED = 100; @@ -359,9 +372,15 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private final boolean mSuppressDefaultPolicy; /** Defined network policies. */ + @GuardedBy("mNetworkPoliciesSecondLock") final ArrayMap mNetworkPolicy = new ArrayMap<>(); - /** Currently active network rules for ifaces. */ - final ArrayMap mNetworkRules = new ArrayMap<>(); + + /** Map from subId to subscription plans. */ + @GuardedBy("mNetworkPoliciesSecondLock") + final SparseArray mSubscriptionPlans = new SparseArray<>(); + /** Map from subId to package name that owns subscription plans. */ + @GuardedBy("mNetworkPoliciesSecondLock") + final SparseArray mSubscriptionPlansOwner = new SparseArray<>(); /** Defined UID policies. */ @GuardedBy("mUidRulesFirstLock") final SparseIntArray mUidPolicy = new SparseIntArray(); @@ -428,6 +447,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { @GuardedBy("mUidRulesFirstLock") final SparseIntArray mUidState = new SparseIntArray(); + /** Map from network ID to last observed meteredness state */ + @GuardedBy("mNetworkPoliciesSecondLock") + private final SparseBooleanArray mNetworkMetered = new SparseBooleanArray(); + private final RemoteCallbackList mListeners = new RemoteCallbackList<>(); @@ -756,21 +779,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mContext.registerReceiver(mSnoozeWarningReceiver, snoozeWarningFilter, MANAGE_NETWORK_POLICY, mHandler); - // listen for configured wifi networks to be removed - final IntentFilter wifiConfigFilter = - new IntentFilter(CONFIGURED_NETWORKS_CHANGED_ACTION); - mContext.registerReceiver(mWifiConfigReceiver, wifiConfigFilter, null, mHandler); - - // listen for wifi state changes to catch metered hint - final IntentFilter wifiStateFilter = new IntentFilter( - WifiManager.NETWORK_STATE_CHANGED_ACTION); - mContext.registerReceiver(mWifiStateReceiver, wifiStateFilter, null, mHandler); + // listen for configured wifi networks to be loaded + final IntentFilter wifiFilter = + new IntentFilter(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION); + mContext.registerReceiver(mWifiReceiver, wifiFilter, null, mHandler); // listen for carrier config changes to update data cycle information final IntentFilter carrierConfigFilter = new IntentFilter( ACTION_CARRIER_CONFIG_CHANGED); mContext.registerReceiver(mCarrierConfigReceiver, carrierConfigFilter, null, mHandler); + // listen for meteredness changes + mContext.getSystemService(ConnectivityManager.class).registerNetworkCallback( + new NetworkRequest.Builder().build(), mNetworkCallback); + mUsageStats.addAppIdleStateChangeListener(new AppIdleStateChangeListener()); // tell systemReady() that the service has been initialized initCompleteSignal.countDown(); @@ -800,20 +822,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } final private IUidObserver mUidObserver = new IUidObserver.Stub() { - @Override public void onUidStateChanged(int uid, int procState, - long procStateSeq) throws RemoteException { + @Override public void onUidStateChanged(int uid, int procState, long procStateSeq) { mUidEventHandler.obtainMessage(UID_MSG_STATE_CHANGED, uid, procState, procStateSeq).sendToTarget(); } - @Override public void onUidGone(int uid, boolean disabled) throws RemoteException { + @Override public void onUidGone(int uid, boolean disabled) { mUidEventHandler.obtainMessage(UID_MSG_GONE, uid, 0).sendToTarget(); } - @Override public void onUidActive(int uid) throws RemoteException { + @Override public void onUidActive(int uid) { } - @Override public void onUidIdle(int uid, boolean disabled) throws RemoteException { + @Override public void onUidIdle(int uid, boolean disabled) { + } + + @Override public void onUidCachedChanged(int uid, boolean cached) { } }; @@ -958,80 +982,42 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { }; /** - * Receiver that watches for {@link WifiConfiguration} to be changed. + * Receiver that watches for {@link WifiConfiguration} to be loaded so that + * we can perform upgrade logic. After initial upgrade logic, it updates + * {@link #mMeteredIfaces} based on configuration changes. */ - final private BroadcastReceiver mWifiConfigReceiver = new BroadcastReceiver() { + final private BroadcastReceiver mWifiReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - // on background handler thread, and verified CONNECTIVITY_INTERNAL - // permission above. - - final int reason = intent.getIntExtra(EXTRA_CHANGE_REASON, CHANGE_REASON_ADDED); - if (reason == CHANGE_REASON_REMOVED) { - final WifiConfiguration config = intent.getParcelableExtra( - EXTRA_WIFI_CONFIGURATION); - if (config.SSID != null) { - final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(config.SSID); - synchronized (mUidRulesFirstLock) { - synchronized (mNetworkPoliciesSecondLock) { - if (mNetworkPolicy.containsKey(template)) { - mNetworkPolicy.remove(template); - writePolicyAL(); - } - } - } + synchronized (mUidRulesFirstLock) { + synchronized (mNetworkPoliciesSecondLock) { + upgradeWifiMeteredOverrideAL(); } } + // Only need to perform upgrade logic once + mContext.unregisterReceiver(this); } }; - /** - * Receiver that watches {@link WifiInfo} state changes to infer metered - * state. Ignores hints when policy is user-defined. - */ - final private BroadcastReceiver mWifiStateReceiver = new BroadcastReceiver() { + private final NetworkCallback mNetworkCallback = new NetworkCallback() { @Override - public void onReceive(Context context, Intent intent) { - // on background handler thread, and verified CONNECTIVITY_INTERNAL - // permission above. + public void onCapabilitiesChanged(Network network, + NetworkCapabilities networkCapabilities) { + if (network == null || networkCapabilities == null) return; - // ignore when not connected - final NetworkInfo netInfo = intent.getParcelableExtra(EXTRA_NETWORK_INFO); - if (!netInfo.isConnected()) return; - - final WifiInfo info = intent.getParcelableExtra(EXTRA_WIFI_INFO); - final boolean meteredHint = info.getMeteredHint(); + synchronized (mNetworkPoliciesSecondLock) { + final boolean oldMetered = mNetworkMetered.get(network.netId, false); + final boolean newMetered = !networkCapabilities + .hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); - final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(info.getSSID()); - synchronized (mUidRulesFirstLock) { - synchronized (mNetworkPoliciesSecondLock) { - NetworkPolicy policy = mNetworkPolicy.get(template); - if (policy == null && meteredHint) { - // policy doesn't exist, and AP is hinting that it's - // metered: create an inferred policy. - policy = newWifiPolicy(template, meteredHint); - addNetworkPolicyAL(policy); - - } else if (policy != null && policy.inferred) { - // policy exists, and was inferred: update its current - // metered state. - policy.metered = meteredHint; - - // since this is inferred for each wifi session, just update - // rules without persisting. - updateNetworkRulesNL(); - } + if ((oldMetered != newMetered) || mNetworkMetered.indexOfKey(network.netId) < 0) { + mNetworkMetered.put(network.netId, newMetered); + updateNetworkRulesNL(); } } } }; - static NetworkPolicy newWifiPolicy(NetworkTemplate template, boolean metered) { - return new NetworkPolicy(template, CYCLE_NONE, Time.TIMEZONE_UTC, - WARNING_DISABLED, LIMIT_DISABLED, SNOOZE_NEVER, SNOOZE_NEVER, - metered, true); - } - /** * Observer that watches for {@link INetworkManagementService} alerts. */ @@ -1063,15 +1049,16 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // cycle boundary to recompute notifications. // examine stats for each active policy - final long currentTime = currentTimeMillis(); for (int i = mNetworkPolicy.size()-1; i >= 0; i--) { final NetworkPolicy policy = mNetworkPolicy.valueAt(i); // ignore policies that aren't relevant to user if (!isTemplateRelevant(policy.template)) continue; if (!policy.hasCycle()) continue; - final long start = computeLastCycleBoundary(currentTime, policy); - final long end = currentTime; + final Pair cycle = NetworkPolicyManager + .cycleIterator(policy).next(); + final long start = cycle.first.toInstant().toEpochMilli(); + final long end = cycle.second.toInstant().toEpochMilli(); final long totalBytes = getTotalBytes(policy.template, start, end); if (policy.isOverLimit(totalBytes)) { @@ -1309,13 +1296,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * @param subId that has its associated NetworkPolicy updated if necessary * @return if any policies were updated */ - private boolean maybeUpdateMobilePolicyCycleNL(int subId) { - if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleNL()"); - final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); - - if (config == null) { - return false; - } + private boolean maybeUpdateMobilePolicyCycleAL(int subId) { + if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleAL()"); boolean policyUpdated = false; final String subscriberId = TelephonyManager.from(mContext).getSubscriberId(subId); @@ -1326,41 +1308,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { for (int i = mNetworkPolicy.size() - 1; i >= 0; i--) { final NetworkTemplate template = mNetworkPolicy.keyAt(i); if (template.matches(probeIdent)) { - NetworkPolicy policy = mNetworkPolicy.valueAt(i); - - // only update the policy if the user didn't change any of the defaults. - if (!policy.inferred) { - // TODO: inferred could be split, so that if a user changes their data limit or - // warning, it doesn't prevent their cycle date from being updated. - if (LOGD) Slog.v(TAG, "Didn't update NetworkPolicy because policy.inferred"); - continue; - } - - final int cycleDay = getCycleDayFromCarrierConfig(config, policy.cycleDay); - final long warningBytes = getWarningBytesFromCarrierConfig(config, - policy.warningBytes); - final long limitBytes = getLimitBytesFromCarrierConfig(config, - policy.limitBytes); - - if (policy.cycleDay == cycleDay && - policy.warningBytes == warningBytes && - policy.limitBytes == limitBytes) { - continue; - } - - policyUpdated = true; - policy.cycleDay = cycleDay; - policy.warningBytes = warningBytes; - policy.limitBytes = limitBytes; - - if (LOGD) { - Slog.d(TAG, "Updated NetworkPolicy " + policy + " which matches subscriber " - + NetworkIdentity.scrubSubscriberId(subscriberId) - + " from CarrierConfigManager"); - } + final NetworkPolicy policy = mNetworkPolicy.valueAt(i); + policyUpdated |= updateDefaultMobilePolicyAL(subId, policy); } } - return policyUpdated; } @@ -1482,7 +1433,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { synchronized (mNetworkPoliciesSecondLock) { final boolean added = ensureActiveMobilePolicyAL(subId, subscriberId); if (added) return; - final boolean updated = maybeUpdateMobilePolicyCycleNL(subId); + final boolean updated = maybeUpdateMobilePolicyCycleAL(subId); if (!updated) return; // update network and notification rules, as the data cycle changed and it's // possible that we should be triggering warnings/limits now @@ -1519,7 +1470,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // TODO: reset any policy-disabled networks when any policy is removed // completely, which is currently rare case. - final long currentTime = currentTimeMillis(); for (int i = mNetworkPolicy.size()-1; i >= 0; i--) { final NetworkPolicy policy = mNetworkPolicy.valueAt(i); // shortcut when policy has no limit @@ -1528,8 +1478,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { continue; } - final long start = computeLastCycleBoundary(currentTime, policy); - final long end = currentTime; + final Pair cycle = NetworkPolicyManager + .cycleIterator(policy).next(); + final long start = cycle.first.toInstant().toEpochMilli(); + final long end = cycle.second.toInstant().toEpochMilli(); final long totalBytes = getTotalBytes(policy.template, start, end); // disable data connection when over limit and not snoozed @@ -1568,6 +1520,22 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + /** + * Collect all ifaces from a {@link NetworkState} into the given set. + */ + private static void collectIfaces(ArraySet ifaces, NetworkState state) { + final String baseIface = state.linkProperties.getInterfaceName(); + if (baseIface != null) { + ifaces.add(baseIface); + } + for (LinkProperties stackedLink : state.linkProperties.getStackedLinks()) { + final String stackedIface = stackedLink.getInterfaceName(); + if (stackedIface != null) { + ifaces.add(stackedIface); + } + } + } + /** * Examine all connected {@link NetworkState}, looking for * {@link NetworkPolicy} that need to be enforced. When matches found, set @@ -1586,102 +1554,70 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // First, generate identities of all connected networks so we can // quickly compare them against all defined policies below. - final ArrayList> connIdents = new ArrayList<>(states.length); - final ArraySet connIfaces = new ArraySet(states.length); + final ArrayMap identified = new ArrayMap<>(); for (NetworkState state : states) { if (state.networkInfo != null && state.networkInfo.isConnected()) { final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state); - - final String baseIface = state.linkProperties.getInterfaceName(); - if (baseIface != null) { - connIdents.add(Pair.create(baseIface, ident)); - } - - // Stacked interfaces are considered to have same identity as - // their parent network. - final List stackedLinks = state.linkProperties.getStackedLinks(); - for (LinkProperties stackedLink : stackedLinks) { - final String stackedIface = stackedLink.getInterfaceName(); - if (stackedIface != null) { - connIdents.add(Pair.create(stackedIface, ident)); - } - } + identified.put(state, ident); } } - // Apply policies against all connected interfaces found above - mNetworkRules.clear(); - final ArrayList ifaceList = Lists.newArrayList(); + final ArraySet newMeteredIfaces = new ArraySet<>(); + long lowestRule = Long.MAX_VALUE; + + // For every well-defined policy, compute remaining data based on + // current cycle and historical stats, and push to kernel. + final ArraySet matchingIfaces = new ArraySet<>(); for (int i = mNetworkPolicy.size() - 1; i >= 0; i--) { - final NetworkPolicy policy = mNetworkPolicy.valueAt(i); + final NetworkPolicy policy = mNetworkPolicy.valueAt(i); - ifaceList.clear(); - for (int j = connIdents.size() - 1; j >= 0; j--) { - final Pair ident = connIdents.get(j); - if (policy.template.matches(ident.second)) { - ifaceList.add(ident.first); + // Collect all ifaces that match this policy + matchingIfaces.clear(); + for (int j = identified.size() - 1; j >= 0; j--) { + if (policy.template.matches(identified.valueAt(j))) { + collectIfaces(matchingIfaces, identified.keyAt(j)); } } - if (ifaceList.size() > 0) { - final String[] ifaces = ifaceList.toArray(new String[ifaceList.size()]); - mNetworkRules.put(policy, ifaces); - } - } - - long lowestRule = Long.MAX_VALUE; - final ArraySet newMeteredIfaces = new ArraySet(states.length); - - // apply each policy that we found ifaces for; compute remaining data - // based on current cycle and historical stats, and push to kernel. - final long currentTime = currentTimeMillis(); - for (int i = mNetworkRules.size()-1; i >= 0; i--) { - final NetworkPolicy policy = mNetworkRules.keyAt(i); - final String[] ifaces = mNetworkRules.valueAt(i); - - final long start; - final long totalBytes; - if (policy.hasCycle()) { - start = computeLastCycleBoundary(currentTime, policy); - totalBytes = getTotalBytes(policy.template, start, currentTime); - } else { - start = Long.MAX_VALUE; - totalBytes = 0; - } - if (LOGD) { - Slog.d(TAG, "applying policy " + policy + " to ifaces " + Arrays.toString(ifaces)); + Slog.d(TAG, "Applying " + policy + " to ifaces " + matchingIfaces); } final boolean hasWarning = policy.warningBytes != LIMIT_DISABLED; final boolean hasLimit = policy.limitBytes != LIMIT_DISABLED; if (hasLimit || policy.metered) { final long quotaBytes; - if (!hasLimit) { + if (hasLimit && policy.hasCycle()) { + final Pair cycle = NetworkPolicyManager + .cycleIterator(policy).next(); + final long start = cycle.first.toInstant().toEpochMilli(); + final long end = cycle.second.toInstant().toEpochMilli(); + final long totalBytes = getTotalBytes(policy.template, start, end); + + if (policy.lastLimitSnooze >= start) { + // snoozing past quota, but we still need to restrict apps, + // so push really high quota. + quotaBytes = Long.MAX_VALUE; + } else { + // remaining "quota" bytes are based on total usage in + // current cycle. kernel doesn't like 0-byte rules, so we + // set 1-byte quota and disable the radio later. + quotaBytes = Math.max(1, policy.limitBytes - totalBytes); + } + } else { // metered network, but no policy limit; we still need to // restrict apps, so push really high quota. quotaBytes = Long.MAX_VALUE; - } else if (policy.lastLimitSnooze >= start) { - // snoozing past quota, but we still need to restrict apps, - // so push really high quota. - quotaBytes = Long.MAX_VALUE; - } else { - // remaining "quota" bytes are based on total usage in - // current cycle. kernel doesn't like 0-byte rules, so we - // set 1-byte quota and disable the radio later. - quotaBytes = Math.max(1, policy.limitBytes - totalBytes); } - if (ifaces.length > 1) { + if (matchingIfaces.size() > 1) { // TODO: switch to shared quota once NMS supports Slog.w(TAG, "shared quota unsupported; generating rule for each iface"); } - for (String iface : ifaces) { - // long quotaBytes split up into two ints to fit in message - mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, - (int) (quotaBytes >> 32), (int) (quotaBytes & 0xFFFFFFFF), iface) - .sendToTarget(); + for (int j = matchingIfaces.size() - 1; j >= 0; j--) { + final String iface = matchingIfaces.valueAt(j); + setInterfaceQuotaAsync(iface, quotaBytes); newMeteredIfaces.add(iface); } } @@ -1695,29 +1631,36 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } - for (int i = connIfaces.size()-1; i >= 0; i--) { - String iface = connIfaces.valueAt(i); - // long quotaBytes split up into two ints to fit in message - mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, - (int) (Long.MAX_VALUE >> 32), (int) (Long.MAX_VALUE & 0xFFFFFFFF), iface) - .sendToTarget(); - newMeteredIfaces.add(iface); + // One final pass to catch any metered ifaces that don't have explicitly + // defined policies; typically Wi-Fi networks. + for (NetworkState state : states) { + if (state.networkInfo != null && state.networkInfo.isConnected() + && !state.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) { + matchingIfaces.clear(); + collectIfaces(matchingIfaces, state); + for (int j = matchingIfaces.size() - 1; j >= 0; j--) { + final String iface = matchingIfaces.valueAt(j); + if (!newMeteredIfaces.contains(iface)) { + setInterfaceQuotaAsync(iface, Long.MAX_VALUE); + newMeteredIfaces.add(iface); + } + } + } } - mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); - - // remove quota on any trailing interfaces + // Remove quota from any interfaces that are no longer metered. for (int i = mMeteredIfaces.size() - 1; i >= 0; i--) { final String iface = mMeteredIfaces.valueAt(i); if (!newMeteredIfaces.contains(iface)) { - mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface) - .sendToTarget(); + removeInterfaceQuotaAsync(iface); } } mMeteredIfaces = newMeteredIfaces; final String[] meteredIfaces = mMeteredIfaces.toArray(new String[mMeteredIfaces.size()]); mHandler.obtainMessage(MSG_METERED_IFACES_CHANGED, meteredIfaces).sendToTarget(); + + mHandler.obtainMessage(MSG_ADVISE_PERSIST_THRESHOLD, lowestRule).sendToTarget(); } /** @@ -1784,24 +1727,80 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { @VisibleForTesting public NetworkPolicy buildDefaultMobilePolicy(int subId, String subscriberId) { - PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); - - // assume usage cycle starts today - final Time time = new Time(); - time.setToNow(); + final NetworkTemplate template = buildTemplateMobileAll(subscriberId); + final RecurrenceRule cycleRule = NetworkPolicy + .buildRule(ZonedDateTime.now().getDayOfMonth(), ZoneId.systemDefault()); + final NetworkPolicy policy = new NetworkPolicy(template, cycleRule, + getPlatformDefaultWarningBytes(), getPlatformDefaultLimitBytes(), + SNOOZE_NEVER, SNOOZE_NEVER, true, true); + synchronized (mUidRulesFirstLock) { + synchronized (mNetworkPoliciesSecondLock) { + updateDefaultMobilePolicyAL(subId, policy); + } + } + return policy; + } - final String cycleTimezone = time.timezone; + /** + * Update the given {@link NetworkPolicy} based on any carrier-provided + * defaults via {@link SubscriptionPlan} or {@link CarrierConfigManager}. + * Leaves policy untouched if the user has modified it. + * + * @return if the policy was modified + */ + private boolean updateDefaultMobilePolicyAL(int subId, NetworkPolicy policy) { + if (!policy.inferred) { + if (LOGD) Slog.d(TAG, "Ignoring user-defined policy " + policy); + return false; + } - final int cycleDay = getCycleDayFromCarrierConfig(config, time.monthDay); - final long warningBytes = getWarningBytesFromCarrierConfig(config, - getPlatformDefaultWarningBytes()); - final long limitBytes = getLimitBytesFromCarrierConfig(config, - getPlatformDefaultLimitBytes()); + final NetworkPolicy original = new NetworkPolicy(policy.template, policy.cycleRule, + policy.warningBytes, policy.limitBytes, policy.lastWarningSnooze, + policy.lastLimitSnooze, policy.metered, policy.inferred); + + final SubscriptionPlan[] plans = mSubscriptionPlans.get(subId); + if (!ArrayUtils.isEmpty(plans)) { + final SubscriptionPlan plan = plans[0]; + policy.cycleRule = plan.getCycleRule(); + final long planLimitBytes = plan.getDataLimitBytes(); + if (planLimitBytes == SubscriptionPlan.BYTES_UNKNOWN) { + policy.warningBytes = getPlatformDefaultWarningBytes(); + policy.limitBytes = getPlatformDefaultLimitBytes(); + } else if (planLimitBytes == SubscriptionPlan.BYTES_UNLIMITED) { + policy.warningBytes = NetworkPolicy.WARNING_DISABLED; + policy.limitBytes = NetworkPolicy.LIMIT_DISABLED; + } else { + policy.warningBytes = (planLimitBytes * 9) / 10; + switch (plan.getDataLimitBehavior()) { + case SubscriptionPlan.LIMIT_BEHAVIOR_BILLED: + case SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED: + policy.limitBytes = planLimitBytes; + break; + default: + policy.limitBytes = NetworkPolicy.LIMIT_DISABLED; + break; + } + } + } else { + final PersistableBundle config = mCarrierConfigManager.getConfigForSubId(subId); + final int currentCycleDay; + if (policy.cycleRule.isMonthly()) { + currentCycleDay = policy.cycleRule.start.getDayOfMonth(); + } else { + currentCycleDay = NetworkPolicy.CYCLE_NONE; + } + final int cycleDay = getCycleDayFromCarrierConfig(config, currentCycleDay); + policy.cycleRule = NetworkPolicy.buildRule(cycleDay, ZoneId.systemDefault()); + policy.warningBytes = getWarningBytesFromCarrierConfig(config, policy.warningBytes); + policy.limitBytes = getLimitBytesFromCarrierConfig(config, policy.limitBytes); + } - final NetworkTemplate template = buildTemplateMobileAll(subscriberId); - final NetworkPolicy policy = new NetworkPolicy(template, cycleDay, cycleTimezone, - warningBytes, limitBytes, SNOOZE_NEVER, SNOOZE_NEVER, true, true); - return policy; + if (policy.equals(original)) { + return false; + } else { + Slog.d(TAG, "Updated " + original + " to " + policy); + return true; + } } private void readPolicyAL() { @@ -1809,6 +1808,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // clear any existing policy and read from disk mNetworkPolicy.clear(); + mSubscriptionPlans.clear(); + mSubscriptionPlansOwner.clear(); mUidPolicy.clear(); FileInputStream fis = null; @@ -1852,12 +1853,24 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } else { networkId = null; } - final int cycleDay = readIntAttribute(in, ATTR_CYCLE_DAY); - final String cycleTimezone; - if (version >= VERSION_ADDED_TIMEZONE) { - cycleTimezone = in.getAttributeValue(null, ATTR_CYCLE_TIMEZONE); + final RecurrenceRule cycleRule; + if (version >= VERSION_ADDED_CYCLE) { + final String start = readStringAttribute(in, ATTR_CYCLE_START); + final String end = readStringAttribute(in, ATTR_CYCLE_END); + final String period = readStringAttribute(in, ATTR_CYCLE_PERIOD); + cycleRule = new RecurrenceRule( + RecurrenceRule.convertZonedDateTime(start), + RecurrenceRule.convertZonedDateTime(end), + RecurrenceRule.convertPeriod(period)); } else { - cycleTimezone = Time.TIMEZONE_UTC; + final int cycleDay = readIntAttribute(in, ATTR_CYCLE_DAY); + final String cycleTimezone; + if (version >= VERSION_ADDED_TIMEZONE) { + cycleTimezone = in.getAttributeValue(null, ATTR_CYCLE_TIMEZONE); + } else { + cycleTimezone = "UTC"; + } + cycleRule = NetworkPolicy.buildRule(cycleDay, ZoneId.of(cycleTimezone)); } final long warningBytes = readLongAttribute(in, ATTR_WARNING_BYTES); final long limitBytes = readLongAttribute(in, ATTR_LIMIT_BYTES); @@ -1899,11 +1912,48 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { final NetworkTemplate template = new NetworkTemplate(networkTemplate, subscriberId, networkId); if (template.isPersistable()) { - mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay, - cycleTimezone, warningBytes, limitBytes, lastWarningSnooze, + mNetworkPolicy.put(template, new NetworkPolicy(template, cycleRule, + warningBytes, limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred)); } + } else if (TAG_SUBSCRIPTION_PLAN.equals(tag)) { + final String start = readStringAttribute(in, ATTR_CYCLE_START); + final String end = readStringAttribute(in, ATTR_CYCLE_END); + final String period = readStringAttribute(in, ATTR_CYCLE_PERIOD); + final SubscriptionPlan.Builder builder = new SubscriptionPlan.Builder( + RecurrenceRule.convertZonedDateTime(start), + RecurrenceRule.convertZonedDateTime(end), + RecurrenceRule.convertPeriod(period)); + builder.setTitle(readStringAttribute(in, ATTR_TITLE)); + builder.setSummary(readStringAttribute(in, ATTR_SUMMARY)); + + final long limitBytes = readLongAttribute(in, ATTR_LIMIT_BYTES, + SubscriptionPlan.BYTES_UNKNOWN); + final int limitBehavior = readIntAttribute(in, ATTR_LIMIT_BEHAVIOR, + SubscriptionPlan.LIMIT_BEHAVIOR_UNKNOWN); + if (limitBytes != SubscriptionPlan.BYTES_UNKNOWN + && limitBehavior != SubscriptionPlan.LIMIT_BEHAVIOR_UNKNOWN) { + builder.setDataLimit(limitBytes, limitBehavior); + } + + final long usageBytes = readLongAttribute(in, ATTR_USAGE_BYTES, + SubscriptionPlan.BYTES_UNKNOWN); + final long usageTime = readLongAttribute(in, ATTR_USAGE_TIME, + SubscriptionPlan.TIME_UNKNOWN); + if (usageBytes != SubscriptionPlan.BYTES_UNKNOWN + && usageTime != SubscriptionPlan.TIME_UNKNOWN) { + builder.setDataUsage(usageBytes, usageTime); + } + + final int subId = readIntAttribute(in, ATTR_SUB_ID); + final SubscriptionPlan plan = builder.build(); + mSubscriptionPlans.put(subId, ArrayUtils.appendElement( + SubscriptionPlan.class, mSubscriptionPlans.get(subId), plan)); + + final String ownerPackage = readStringAttribute(in, ATTR_OWNER_PACKAGE); + mSubscriptionPlansOwner.put(subId, ownerPackage); + } else if (TAG_UID_POLICY.equals(tag)) { final int uid = readIntAttribute(in, ATTR_UID); final int policy = readIntAttribute(in, ATTR_POLICY); @@ -1963,10 +2013,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } catch (FileNotFoundException e) { // missing policy is okay, probably first boot - upgradeLegacyBackgroundDataUL(); - } catch (IOException e) { - Log.wtf(TAG, "problem reading network policy", e); - } catch (XmlPullParserException e) { + upgradeDefaultBackgroundDataUL(); + } catch (Exception e) { Log.wtf(TAG, "problem reading network policy", e); } finally { IoUtils.closeQuietly(fis); @@ -1977,15 +2025,55 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Upgrade legacy background data flags, notifying listeners of one last * change to always-true. */ - private void upgradeLegacyBackgroundDataUL() { - mRestrictBackground = Settings.Secure.getInt( - mContext.getContentResolver(), Settings.Secure.BACKGROUND_DATA, 1) != 1; + private void upgradeDefaultBackgroundDataUL() { + // This method is only called when we're unable to find the network policy flag, which + // usually happens on first boot of a new device and not one that has received an OTA. + + // Seed from the default value configured for this device. + mRestrictBackground = Settings.Global.getInt( + mContext.getContentResolver(), Global.DEFAULT_RESTRICT_BACKGROUND_DATA, 0) == 1; + + // NOTE: We used to read the legacy setting here : + // + // final int legacyFlagValue = Settings.Secure.getInt( + // mContext.getContentResolver(), Settings.Secure.BACKGROUND_DATA, ..); + // + // This is no longer necessary because we will never upgrade directly from Gingerbread + // to O+. Devices upgrading from ICS onwards to O will have a netpolicy.xml file that + // contains the correct value that we will continue to use. + } - // kick off one last broadcast if restricted - if (mRestrictBackground) { - final Intent broadcast = new Intent( - ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED); - mContext.sendBroadcastAsUser(broadcast, UserHandle.ALL); + /** + * Perform upgrade step of moving any user-defined meterness overrides over + * into {@link WifiConfiguration}. + */ + private void upgradeWifiMeteredOverrideAL() { + boolean modified = false; + final WifiManager wm = mContext.getSystemService(WifiManager.class); + final List configs = wm.getConfiguredNetworks(); + for (int i = 0; i < mNetworkPolicy.size(); ) { + final NetworkPolicy policy = mNetworkPolicy.valueAt(i); + if (policy.template.getMatchRule() == NetworkTemplate.MATCH_WIFI + && !policy.inferred) { + mNetworkPolicy.removeAt(i); + modified = true; + + final String networkId = resolveNetworkId(policy.template.getNetworkId()); + for (WifiConfiguration config : configs) { + if (Objects.equals(resolveNetworkId(config), networkId)) { + Slog.d(TAG, "Found network " + networkId + "; upgrading metered hint"); + config.meteredOverride = policy.metered + ? WifiConfiguration.METERED_OVERRIDE_METERED + : WifiConfiguration.METERED_OVERRIDE_NOT_METERED; + wm.updateNetwork(config); + } + } + } else { + i++; + } + } + if (modified) { + writePolicyAL(); } } @@ -2020,8 +2108,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { if (networkId != null) { out.attribute(null, ATTR_NETWORK_ID, networkId); } - writeIntAttribute(out, ATTR_CYCLE_DAY, policy.cycleDay); - out.attribute(null, ATTR_CYCLE_TIMEZONE, policy.cycleTimezone); + writeStringAttribute(out, ATTR_CYCLE_START, + RecurrenceRule.convertZonedDateTime(policy.cycleRule.start)); + writeStringAttribute(out, ATTR_CYCLE_END, + RecurrenceRule.convertZonedDateTime(policy.cycleRule.end)); + writeStringAttribute(out, ATTR_CYCLE_PERIOD, + RecurrenceRule.convertPeriod(policy.cycleRule.period)); writeLongAttribute(out, ATTR_WARNING_BYTES, policy.warningBytes); writeLongAttribute(out, ATTR_LIMIT_BYTES, policy.limitBytes); writeLongAttribute(out, ATTR_LAST_WARNING_SNOOZE, policy.lastWarningSnooze); @@ -2031,6 +2123,34 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { out.endTag(null, TAG_NETWORK_POLICY); } + // write all known subscription plans + for (int i = 0; i < mSubscriptionPlans.size(); i++) { + final int subId = mSubscriptionPlans.keyAt(i); + final String ownerPackage = mSubscriptionPlansOwner.get(subId); + final SubscriptionPlan[] plans = mSubscriptionPlans.valueAt(i); + if (ArrayUtils.isEmpty(plans)) continue; + + for (SubscriptionPlan plan : plans) { + out.startTag(null, TAG_SUBSCRIPTION_PLAN); + writeIntAttribute(out, ATTR_SUB_ID, subId); + writeStringAttribute(out, ATTR_OWNER_PACKAGE, ownerPackage); + final RecurrenceRule cycleRule = plan.getCycleRule(); + writeStringAttribute(out, ATTR_CYCLE_START, + RecurrenceRule.convertZonedDateTime(cycleRule.start)); + writeStringAttribute(out, ATTR_CYCLE_END, + RecurrenceRule.convertZonedDateTime(cycleRule.end)); + writeStringAttribute(out, ATTR_CYCLE_PERIOD, + RecurrenceRule.convertPeriod(cycleRule.period)); + writeStringAttribute(out, ATTR_TITLE, plan.getTitle()); + writeStringAttribute(out, ATTR_SUMMARY, plan.getSummary()); + writeLongAttribute(out, ATTR_LIMIT_BYTES, plan.getDataLimitBytes()); + writeIntAttribute(out, ATTR_LIMIT_BEHAVIOR, plan.getDataLimitBehavior()); + writeLongAttribute(out, ATTR_USAGE_BYTES, plan.getDataUsageBytes()); + writeLongAttribute(out, ATTR_USAGE_TIME, plan.getDataUsageTime()); + out.endTag(null, TAG_SUBSCRIPTION_PLAN); + } + } + // write all known uid policies for (int i = 0; i < mUidPolicy.size(); i++) { final int uid = mUidPolicy.keyAt(i); @@ -2493,80 +2613,235 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } - private NetworkPolicy findPolicyForNetworkNL(NetworkIdentity ident) { - for (int i = mNetworkPolicy.size()-1; i >= 0; i--) { - NetworkPolicy policy = mNetworkPolicy.valueAt(i); - if (policy.template.matches(ident)) { - return policy; + @Override + public void setWifiMeteredOverride(String networkId, int meteredOverride) { + mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); + final long token = Binder.clearCallingIdentity(); + try { + final WifiManager wm = mContext.getSystemService(WifiManager.class); + final List configs = wm.getConfiguredNetworks(); + for (WifiConfiguration config : configs) { + if (Objects.equals(resolveNetworkId(config), networkId)) { + config.meteredOverride = meteredOverride; + wm.updateNetwork(config); + } } + } finally { + Binder.restoreCallingIdentity(token); } - return null; } @Override + @Deprecated public NetworkQuotaInfo getNetworkQuotaInfo(NetworkState state) { - mContext.enforceCallingOrSelfPermission(ACCESS_NETWORK_STATE, TAG); + Log.w(TAG, "Shame on UID " + Binder.getCallingUid() + + " for calling the hidden API getNetworkQuotaInfo(). Shame!"); + return new NetworkQuotaInfo(); + } - // only returns usage summary, so we don't require caller to have - // READ_NETWORK_USAGE_HISTORY. + private void enforceSubscriptionPlanAccess(int subId, int callingUid, String callingPackage) { + // Verify they're not lying about package name + mAppOps.checkPackage(callingUid, callingPackage); + + final SubscriptionInfo si; + final PersistableBundle config; final long token = Binder.clearCallingIdentity(); try { - return getNetworkQuotaInfoUnchecked(state); + si = mContext.getSystemService(SubscriptionManager.class) + .getActiveSubscriptionInfo(subId); + config = mCarrierConfigManager.getConfigForSubId(subId); } finally { Binder.restoreCallingIdentity(token); } - } - private NetworkQuotaInfo getNetworkQuotaInfoUnchecked(NetworkState state) { - final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state); - - final NetworkPolicy policy; - synchronized (mNetworkPoliciesSecondLock) { - policy = findPolicyForNetworkNL(ident); + // First check: is caller the CarrierService? + if (si != null) { + if (si.isEmbedded() && si.canManageSubscription(mContext, callingPackage)) { + return; + } } - if (policy == null || !policy.hasCycle()) { - // missing policy means we can't derive useful quota info - return null; + // Second check: has the CarrierService delegated access? + if (config != null) { + final String overridePackage = config + .getString(CarrierConfigManager.KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING, null); + if (!TextUtils.isEmpty(overridePackage) + && Objects.equals(overridePackage, callingPackage)) { + return; + } } - final long currentTime = currentTimeMillis(); - - // find total bytes used under policy - final long start = computeLastCycleBoundary(currentTime, policy); - final long end = currentTime; - final long totalBytes = getTotalBytes(policy.template, start, end); - - // report soft and hard limits under policy - final long softLimitBytes = policy.warningBytes != WARNING_DISABLED ? policy.warningBytes - : NetworkQuotaInfo.NO_LIMIT; - final long hardLimitBytes = policy.limitBytes != LIMIT_DISABLED ? policy.limitBytes - : NetworkQuotaInfo.NO_LIMIT; + // Third check: is caller the fallback/default CarrierService? + final String defaultPackage = mCarrierConfigManager.getDefaultCarrierServicePackageName(); + if (!TextUtils.isEmpty(defaultPackage) + && Objects.equals(defaultPackage, callingPackage)) { + return; + } - return new NetworkQuotaInfo(totalBytes, softLimitBytes, hardLimitBytes); + // Final check: does the caller hold a permission? + mContext.enforceCallingOrSelfPermission(MANAGE_SUBSCRIPTION_PLANS, TAG); } @Override - public boolean isNetworkMetered(NetworkState state) { - if (state.networkInfo == null) { - return false; + public SubscriptionPlan[] getSubscriptionPlans(int subId, String callingPackage) { + enforceSubscriptionPlanAccess(subId, Binder.getCallingUid(), callingPackage); + + final String fake = SystemProperties.get("fw.fake_plan"); + if (!TextUtils.isEmpty(fake)) { + final List plans = new ArrayList<>(); + if ("month_hard".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2007-03-14T00:00:00.000Z")) + .setTitle("G-Mobile") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_BILLED) + .setDataUsage(1 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(36).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2017-03-14T00:00:00.000Z")) + .setTitle("G-Mobile Happy") + .setDataLimit(SubscriptionPlan.BYTES_UNLIMITED, + SubscriptionPlan.LIMIT_BEHAVIOR_BILLED) + .setDataUsage(5 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(36).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2017-03-14T00:00:00.000Z")) + .setTitle("G-Mobile, Charged after limit") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_BILLED) + .setDataUsage(5 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(36).toInstant().toEpochMilli()) + .build()); + } else if ("month_soft".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2007-03-14T00:00:00.000Z")) + .setTitle("G-Mobile is the carriers name who this plan belongs to") + .setSummary("Crazy unlimited bandwidth plan with incredibly long title " + + "that should be cut off to prevent UI from looking terrible") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_THROTTLED) + .setDataUsage(1 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(1).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2017-03-14T00:00:00.000Z")) + .setTitle("G-Mobile, Throttled after limit") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_THROTTLED) + .setDataUsage(5 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(1).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2017-03-14T00:00:00.000Z")) + .setTitle("G-Mobile, No data connection after limit") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED) + .setDataUsage(5 * TrafficStats.GB_IN_BYTES, + ZonedDateTime.now().minusHours(1).toInstant().toEpochMilli()) + .build()); + + } else if ("month_none".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2007-03-14T00:00:00.000Z")) + .setTitle("G-Mobile") + .build()); + } else if ("prepaid".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.now().minusDays(20), + ZonedDateTime.now().plusDays(10)) + .setTitle("G-Mobile") + .setDataLimit(512 * TrafficStats.MB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED) + .setDataUsage(100 * TrafficStats.MB_IN_BYTES, + ZonedDateTime.now().minusHours(3).toInstant().toEpochMilli()) + .build()); + } else if ("prepaid_crazy".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.now().minusDays(20), + ZonedDateTime.now().plusDays(10)) + .setTitle("G-Mobile Anytime") + .setDataLimit(512 * TrafficStats.MB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED) + .setDataUsage(100 * TrafficStats.MB_IN_BYTES, + ZonedDateTime.now().minusHours(3).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.now().minusDays(10), + ZonedDateTime.now().plusDays(20)) + .setTitle("G-Mobile Nickel Nights") + .setSummary("5¢/GB between 1-5AM") + .setDataLimit(5 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_THROTTLED) + .setDataUsage(15 * TrafficStats.MB_IN_BYTES, + ZonedDateTime.now().minusHours(30).toInstant().toEpochMilli()) + .build()); + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.now().minusDays(10), + ZonedDateTime.now().plusDays(20)) + .setTitle("G-Mobile Bonus 3G") + .setSummary("Unlimited 3G data") + .setDataLimit(1 * TrafficStats.GB_IN_BYTES, + SubscriptionPlan.LIMIT_BEHAVIOR_THROTTLED) + .setDataUsage(300 * TrafficStats.MB_IN_BYTES, + ZonedDateTime.now().minusHours(1).toInstant().toEpochMilli()) + .build()); + } else if ("unlimited".equals(fake)) { + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.now().minusDays(20), + ZonedDateTime.now().plusDays(10)) + .setTitle("G-Mobile Awesome") + .setDataLimit(SubscriptionPlan.BYTES_UNLIMITED, + SubscriptionPlan.LIMIT_BEHAVIOR_THROTTLED) + .setDataUsage(50 * TrafficStats.MB_IN_BYTES, + ZonedDateTime.now().minusHours(3).toInstant().toEpochMilli()) + .build()); + } + return plans.toArray(new SubscriptionPlan[plans.size()]); } - final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state); - - final NetworkPolicy policy; synchronized (mNetworkPoliciesSecondLock) { - policy = findPolicyForNetworkNL(ident); + // Only give out plan details to the package that defined them, + // so that we don't risk leaking plans between apps. We always + // let in core system components (like the Settings app). + final String ownerPackage = mSubscriptionPlansOwner.get(subId); + if (Objects.equals(ownerPackage, callingPackage) + || (UserHandle.getCallingAppId() == android.os.Process.SYSTEM_UID)) { + return mSubscriptionPlans.get(subId); + } else { + Log.w(TAG, "Not returning plans because caller " + callingPackage + + " doesn't match owner " + ownerPackage); + return null; + } } + } - if (policy != null) { - return policy.metered; - } else { - final int type = state.networkInfo.getType(); - if ((isNetworkTypeMobile(type) && ident.getMetered()) || type == TYPE_WIMAX) { - return true; + @Override + public void setSubscriptionPlans(int subId, SubscriptionPlan[] plans, String callingPackage) { + enforceSubscriptionPlanAccess(subId, Binder.getCallingUid(), callingPackage); + + for (SubscriptionPlan plan : plans) { + Preconditions.checkNotNull(plan); + } + + final long token = Binder.clearCallingIdentity(); + try { + maybeRefreshTrustedTime(); + synchronized (mUidRulesFirstLock) { + synchronized (mNetworkPoliciesSecondLock) { + mSubscriptionPlans.put(subId, plans); + mSubscriptionPlansOwner.put(subId, callingPackage); + + final String subscriberId = mContext.getSystemService(TelephonyManager.class) + .getSubscriberId(subId); + ensureActiveMobilePolicyAL(subId, subscriberId); + maybeUpdateMobilePolicyCycleAL(subId); + handleNetworkPoliciesUpdateAL(true); + } } - return false; + } finally { + Binder.restoreCallingIdentity(token); } } @@ -2598,6 +2873,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { fout.print("Restrict background: "); fout.println(mRestrictBackground); fout.print("Restrict power: "); fout.println(mRestrictPower); fout.print("Device idle: "); fout.println(mDeviceIdleMode); + fout.print("Metered ifaces: "); fout.println(String.valueOf(mMeteredIfaces)); + + fout.println(); fout.println("Network policies:"); fout.increaseIndent(); for (int i = 0; i < mNetworkPolicy.size(); i++) { @@ -2605,8 +2883,24 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } fout.decreaseIndent(); - fout.print("Metered ifaces: "); fout.println(String.valueOf(mMeteredIfaces)); + fout.println(); + fout.println("Subscription plans:"); + fout.increaseIndent(); + for (int i = 0; i < mSubscriptionPlans.size(); i++) { + final int subId = mSubscriptionPlans.keyAt(i); + fout.println("Subscriber ID " + subId + ":"); + fout.increaseIndent(); + final SubscriptionPlan[] plans = mSubscriptionPlans.valueAt(i); + if (!ArrayUtils.isEmpty(plans)) { + for (SubscriptionPlan plan : plans) { + fout.println(plan); + } + } + fout.decreaseIndent(); + } + fout.decreaseIndent(); + fout.println(); fout.println("Policy for UIDs:"); fout.increaseIndent(); int size = mUidPolicy.size(); @@ -2775,9 +3069,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { updateRestrictBackgroundRulesOnUidStatusChangedUL(uid, oldUidState, uidState); if (isProcStateAllowedWhileIdleOrPowerSaveMode(oldUidState) != isProcStateAllowedWhileIdleOrPowerSaveMode(uidState) ) { - if (isUidIdle(uid)) { - updateRuleForAppIdleUL(uid); - } + updateRuleForAppIdleUL(uid); if (mDeviceIdleMode) { updateRuleForDeviceIdleUL(uid); } @@ -2891,9 +3183,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { uidRules.put(mUidState.keyAt(i), FIREWALL_RULE_ALLOW); } } - setUidFirewallRulesAsync(chain, uidRules, CHAIN_TOGGLE_ENABLE); + setUidFirewallRulesUL(chain, uidRules, CHAIN_TOGGLE_ENABLE); } else { - setUidFirewallRulesAsync(chain, null, CHAIN_TOGGLE_DISABLE); + setUidFirewallRulesUL(chain, null, CHAIN_TOGGLE_DISABLE); } } @@ -2960,7 +3252,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } - setUidFirewallRulesAsync(FIREWALL_CHAIN_STANDBY, uidRules, CHAIN_TOGGLE_NONE); + setUidFirewallRulesUL(FIREWALL_CHAIN_STANDBY, uidRules, CHAIN_TOGGLE_NONE); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } @@ -3661,18 +3953,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { removeInterfaceQuota((String) msg.obj); return true; } - case MSG_SET_FIREWALL_RULES: { - final int chain = msg.arg1; - final int toggle = msg.arg2; - final SparseIntArray uidRules = (SparseIntArray) msg.obj; - if (uidRules != null) { - setUidFirewallRules(chain, uidRules); - } - if (toggle != CHAIN_TOGGLE_NONE) { - enableFirewallChainUL(chain, toggle == CHAIN_TOGGLE_ENABLE); - } - return true; - } case MSG_RESET_FIREWALL_RULES_BY_UID: { resetUidFirewallRules(msg.arg1); return true; @@ -3752,6 +4032,12 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + private void setInterfaceQuotaAsync(String iface, long quotaBytes) { + // long quotaBytes split up into two ints to fit in message + mHandler.obtainMessage(MSG_UPDATE_INTERFACE_QUOTA, (int) (quotaBytes >> 32), + (int) (quotaBytes & 0xFFFFFFFF), iface).sendToTarget(); + } + private void setInterfaceQuota(String iface, long quotaBytes) { try { mNetworkManager.setInterfaceQuota(iface, quotaBytes); @@ -3762,6 +4048,10 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + private void removeInterfaceQuotaAsync(String iface) { + mHandler.obtainMessage(MSG_REMOVE_INTERFACE_QUOTA, iface).sendToTarget(); + } + private void removeInterfaceQuota(String iface) { try { mNetworkManager.removeInterfaceQuota(iface); @@ -3808,15 +4098,20 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { /** * Calls {@link #setUidFirewallRules(int, SparseIntArray)} and - * {@link #enableFirewallChainUL(int, boolean)} asynchronously. + * {@link #enableFirewallChainUL(int, boolean)} synchronously. * * @param chain firewall chain. * @param uidRules new UID rules; if {@code null}, only toggles chain state. * @param toggle whether the chain should be enabled, disabled, or not changed. */ - private void setUidFirewallRulesAsync(int chain, @Nullable SparseIntArray uidRules, + private void setUidFirewallRulesUL(int chain, @Nullable SparseIntArray uidRules, @ChainToggleType int toggle) { - mHandler.obtainMessage(MSG_SET_FIREWALL_RULES, chain, toggle, uidRules).sendToTarget(); + if (uidRules != null) { + setUidFirewallRulesUL(chain, uidRules); + } + if (toggle != CHAIN_TOGGLE_NONE) { + enableFirewallChainUL(chain, toggle == CHAIN_TOGGLE_ENABLE); + } } /** @@ -3824,7 +4119,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * here to netd. It will clean up dead rules and make sure the target chain only contains rules * specified here. */ - private void setUidFirewallRules(int chain, SparseIntArray uidRules) { + private void setUidFirewallRulesUL(int chain, SparseIntArray uidRules) { try { int size = uidRules.size(); int[] uids = new int[size]; @@ -4044,6 +4339,47 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { } } + @Override + public boolean isUidNetworkingBlocked(int uid, boolean isNetworkMetered) { + mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG); + return isUidNetworkingBlockedInternal(uid, isNetworkMetered); + } + + private boolean isUidNetworkingBlockedInternal(int uid, boolean isNetworkMetered) { + final int uidRules; + final boolean isBackgroundRestricted; + synchronized (mUidRulesFirstLock) { + uidRules = mUidRules.get(uid, RULE_NONE); + isBackgroundRestricted = mRestrictBackground; + } + if (hasRule(uidRules, RULE_REJECT_ALL)) { + if (LOGV) logUidStatus(uid, "blocked by power restrictions"); + return true; + } + if (!isNetworkMetered) { + if (LOGV) logUidStatus(uid, "allowed on unmetered network"); + return false; + } + if (hasRule(uidRules, RULE_REJECT_METERED)) { + if (LOGV) logUidStatus(uid, "blacklisted on metered network"); + return true; + } + if (hasRule(uidRules, RULE_ALLOW_METERED)) { + if (LOGV) logUidStatus(uid, "whitelisted on metered network"); + return false; + } + if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { + if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); + return false; + } + if (isBackgroundRestricted) { + if (LOGV) logUidStatus(uid, "blocked when background is restricted"); + return true; + } + if (LOGV) logUidStatus(uid, "allowed by default"); + return false; + } + private class NetworkPolicyManagerInternalImpl extends NetworkPolicyManagerInternal { @Override @@ -4081,42 +4417,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { */ @Override public boolean isUidNetworkingBlocked(int uid, String ifname) { - final int uidRules; - final boolean isBackgroundRestricted; final boolean isNetworkMetered; - synchronized (mUidRulesFirstLock) { - uidRules = mUidRules.get(uid, RULE_NONE); - isBackgroundRestricted = mRestrictBackground; - synchronized (mNetworkPoliciesSecondLock) { - isNetworkMetered = mMeteredIfaces.contains(ifname); - } - } - if (hasRule(uidRules, RULE_REJECT_ALL)) { - if (LOGV) logUidStatus(uid, "blocked by power restrictions"); - return true; - } - if (!isNetworkMetered) { - if (LOGV) logUidStatus(uid, "allowed on unmetered network"); - return false; - } - if (hasRule(uidRules, RULE_REJECT_METERED)) { - if (LOGV) logUidStatus(uid, "blacklisted on metered network"); - return true; - } - if (hasRule(uidRules, RULE_ALLOW_METERED)) { - if (LOGV) logUidStatus(uid, "whitelisted on metered network"); - return false; - } - if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) { - if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network"); - return false; - } - if (isBackgroundRestricted) { - if (LOGV) logUidStatus(uid, "blocked when background is restricted"); - return true; + synchronized (mNetworkPoliciesSecondLock) { + isNetworkMetered = mMeteredIfaces.contains(ifname); } - if (LOGV) logUidStatus(uid, "allowed by default"); - return false; + return isUidNetworkingBlockedInternal(uid, isNetworkMetered); } } diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java index 8ced1c22020be648b6b6f788a755fce8a02ac570..b65b9d7749b2cdd33bce6abecb404cf0085f72b4 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java @@ -19,26 +19,17 @@ package com.android.server.net; import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND; import static android.net.NetworkPolicyManager.POLICY_NONE; import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND; -import static android.net.wifi.WifiInfo.removeDoubleQuotes; - -import static com.android.server.net.NetworkPolicyManagerService.newWifiPolicy; -import static com.android.server.net.NetworkPolicyManagerService.TAG; - -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; import android.content.Context; import android.net.INetworkPolicyManager; -import android.net.NetworkPolicy; -import android.net.NetworkTemplate; +import android.net.NetworkPolicyManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.RemoteException; import android.os.ShellCommand; -import android.util.Log; + +import java.io.PrintWriter; +import java.util.List; class NetworkPolicyManagerShellCommand extends ShellCommand { @@ -90,7 +81,7 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { pw.println(" Adds a UID to the blacklist for restrict background usage."); pw.println(" get restrict-background"); pw.println(" Gets the global restrict background usage status."); - pw.println(" list wifi-networks [BOOLEAN]"); + pw.println(" list wifi-networks [true|false]"); pw.println(" Lists all saved wifi networks and whether they are metered or not."); pw.println(" If a boolean argument is passed, filters just the metered (or unmetered)"); pw.println(" networks."); @@ -102,7 +93,7 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { pw.println(" Removes a UID from the whitelist for restrict background usage."); pw.println(" remove restrict-background-blacklist UID"); pw.println(" Removes a UID from the blacklist for restrict background usage."); - pw.println(" set metered-network ID BOOLEAN"); + pw.println(" set metered-network ID [undefined|true|false]"); pw.println(" Toggles whether the given wi-fi network is metered."); pw.println(" set restrict-background BOOLEAN"); pw.println(" Sets the global restrict background usage status."); @@ -276,107 +267,60 @@ class NetworkPolicyManagerShellCommand extends ShellCommand { return resetUidPolicy("not blacklisted", POLICY_REJECT_METERED_BACKGROUND); } - private int listWifiNetworks() throws RemoteException { + private int listWifiNetworks() { final PrintWriter pw = getOutPrintWriter(); final String arg = getNextArg(); - final Boolean filter = arg == null ? null : Boolean.valueOf(arg); - for (NetworkPolicy policy : getWifiPolicies()) { - if (filter != null && filter.booleanValue() != policy.metered) { - continue; + final int match; + if (arg == null) { + match = WifiConfiguration.METERED_OVERRIDE_NONE; + } else if (Boolean.parseBoolean(arg)) { + match = WifiConfiguration.METERED_OVERRIDE_METERED; + } else { + match = WifiConfiguration.METERED_OVERRIDE_NOT_METERED; + } + + final List configs = mWifiManager.getConfiguredNetworks(); + for (WifiConfiguration config : configs) { + if (arg == null || config.meteredOverride == match) { + pw.print(NetworkPolicyManager.resolveNetworkId(config)); + pw.print(';'); + pw.println(overrideToString(config.meteredOverride)); } - pw.print(getNetworkId(policy)); - pw.print(';'); - pw.println(policy.metered); } return 0; } private int setMeteredWifiNetwork() throws RemoteException { final PrintWriter pw = getOutPrintWriter(); - final String id = getNextArg(); - if (id == null) { - pw.println("Error: didn't specify ID"); + final String networkId = getNextArg(); + if (networkId == null) { + pw.println("Error: didn't specify networkId"); return -1; } final String arg = getNextArg(); if (arg == null) { - pw.println("Error: didn't specify BOOLEAN"); + pw.println("Error: didn't specify meteredOverride"); return -1; } - final boolean metered = Boolean.valueOf(arg); - final NetworkPolicy[] policies = mInterface.getNetworkPolicies(null); - boolean changed = false; - // First try to find a policy with such id - for (NetworkPolicy policy : policies) { - if (policy.template.isMatchRuleMobile() || policy.metered == metered) { - continue; - } - final String networkId = getNetworkId(policy); - if (id.equals(networkId)) { - Log.i(TAG, "Changing " + networkId + " metered status to " + metered); - policy.metered = metered; - changed = true; - } - } - if (changed) { - mInterface.setNetworkPolicies(policies); - return 0; - } - // Policy not found: check if there is a saved wi-fi with such id. - for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) { - final String ssid = removeDoubleQuotes(config.SSID); - if (id.equals(ssid)) { - final NetworkPolicy policy = newPolicy(ssid); - policy.metered = true; - Log.i(TAG, "Creating new policy for " + ssid + ": " + policy); - final NetworkPolicy[] newPolicies = new NetworkPolicy[policies.length + 1]; - System.arraycopy(policies, 0, newPolicies, 0, policies.length); - newPolicies[newPolicies.length - 1] = policy; - mInterface.setNetworkPolicies(newPolicies); - return 0; - } - } - pw.print("Error: didn't find network with SSID "); pw.println(id); + mInterface.setWifiMeteredOverride(NetworkPolicyManager.resolveNetworkId(networkId), + stringToOverride(arg)); return -1; } - private List getWifiPolicies() throws RemoteException { - // First gets a list of saved wi-fi networks. - final List configs = mWifiManager.getConfiguredNetworks(); - final int size = configs != null ? configs.size() : 0; - final Set ssids = new HashSet<>(size); - if (configs != null) { - for (WifiConfiguration config : configs) { - ssids.add(removeDoubleQuotes(config.SSID)); - } - } - - // Then gets the saved policies. - final NetworkPolicy[] policies = mInterface.getNetworkPolicies(null); - final List wifiPolicies = new ArrayList(policies.length); - for (NetworkPolicy policy: policies) { - if (!policy.template.isMatchRuleMobile()) { - wifiPolicies.add(policy); - final String netId = getNetworkId(policy); - ssids.remove(netId); - } - } - // Finally, creates new default policies for saved WI-FIs not policied yet. - for (String ssid : ssids) { - final NetworkPolicy policy = newPolicy(ssid); - wifiPolicies.add(policy); + private static String overrideToString(int override) { + switch (override) { + case WifiConfiguration.METERED_OVERRIDE_METERED: return "true"; + case WifiConfiguration.METERED_OVERRIDE_NOT_METERED: return "false"; + default: return "none"; } - return wifiPolicies; } - private NetworkPolicy newPolicy(String ssid) { - final NetworkTemplate template = NetworkTemplate.buildTemplateWifi(ssid); - final NetworkPolicy policy = newWifiPolicy(template, false); - return policy; - } - - private String getNetworkId(NetworkPolicy policy) { - return removeDoubleQuotes(policy.template.getNetworkId()); + private static int stringToOverride(String override) { + switch (override) { + case "true": return WifiConfiguration.METERED_OVERRIDE_METERED; + case "false": return WifiConfiguration.METERED_OVERRIDE_NOT_METERED; + default: return WifiConfiguration.METERED_OVERRIDE_NONE; + } } private int getNextBooleanArg() { diff --git a/services/core/java/com/android/server/net/NetworkStatsCollection.java b/services/core/java/com/android/server/net/NetworkStatsCollection.java index 03543007c80ed435887b88b05a64bda5ce2fda97..4ceb592af0558404ac72461144ef465b48eabd7c 100644 --- a/services/core/java/com/android/server/net/NetworkStatsCollection.java +++ b/services/core/java/com/android/server/net/NetworkStatsCollection.java @@ -28,6 +28,8 @@ import static android.net.NetworkStats.UID_ALL; import static android.net.TrafficStats.UID_REMOVED; import static android.text.format.DateUtils.WEEK_IN_MILLIS; +import static com.android.server.net.NetworkStatsService.TAG; + import android.net.NetworkIdentity; import android.net.NetworkStats; import android.net.NetworkStatsHistory; @@ -37,20 +39,24 @@ import android.os.Binder; import android.service.NetworkStatsCollectionKeyProto; import android.service.NetworkStatsCollectionProto; import android.service.NetworkStatsCollectionStatsProto; +import android.telephony.SubscriptionPlan; import android.util.ArrayMap; import android.util.AtomicFile; import android.util.IntArray; +import android.util.Pair; +import android.util.Slog; import android.util.proto.ProtoOutputStream; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FileRotator; import com.android.internal.util.IndentingPrintWriter; +import libcore.io.IoUtils; + import com.google.android.collect.Lists; import com.google.android.collect.Maps; -import libcore.io.IoUtils; - import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; @@ -60,9 +66,11 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.ProtocolException; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.Objects; /** @@ -140,6 +148,63 @@ public class NetworkStatsCollection implements FileRotator.Reader { return mStartMillis == Long.MAX_VALUE && mEndMillis == Long.MIN_VALUE; } + @VisibleForTesting + public long roundUp(long time) { + if (time == Long.MIN_VALUE || time == Long.MAX_VALUE + || time == SubscriptionPlan.TIME_UNKNOWN) { + return time; + } else { + final long mod = time % mBucketDuration; + if (mod > 0) { + time -= mod; + time += mBucketDuration; + } + return time; + } + } + + @VisibleForTesting + public long roundDown(long time) { + if (time == Long.MIN_VALUE || time == Long.MAX_VALUE + || time == SubscriptionPlan.TIME_UNKNOWN) { + return time; + } else { + final long mod = time % mBucketDuration; + if (mod > 0) { + time -= mod; + } + return time; + } + } + + /** + * Safely multiple a value by a rational. + *

        + * Internally it uses integer-based math whenever possible, but switches + * over to double-based math if values would overflow. + */ + @VisibleForTesting + public static long multiplySafe(long value, long num, long den) { + long x = value; + long y = num; + + // Logic shamelessly borrowed from Math.multiplyExact() + long r = x * y; + long ax = Math.abs(x); + long ay = Math.abs(y); + if (((ax | ay) >>> 31 != 0)) { + // Some bits greater than 2^31 that might cause overflow + // Check the result using the divide operator + // and check for the special case of Long.MIN_VALUE * -1 + if (((y != 0) && (r / y != x)) || + (x == Long.MIN_VALUE && y == -1)) { + // Use double math to avoid overflowing + return (long) (((double) num / den) * value); + } + } + return r / den; + } + public int[] getRelevantUids(@NetworkStatsAccess.Level int accessLevel) { return getRelevantUids(accessLevel, Binder.getCallingUid()); } @@ -165,60 +230,110 @@ public class NetworkStatsCollection implements FileRotator.Reader { * Combine all {@link NetworkStatsHistory} in this collection which match * the requested parameters. */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, - @NetworkStatsAccess.Level int accessLevel) { - return getHistory(template, uid, set, tag, fields, Long.MIN_VALUE, Long.MAX_VALUE, - accessLevel); - } - - /** - * Combine all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { - return getHistory(template, uid, set, tag, fields, start, end, accessLevel, - Binder.getCallingUid()); - } - - /** - * Combine all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStatsHistory getHistory( - NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end, + public NetworkStatsHistory getHistory(NetworkTemplate template, SubscriptionPlan augmentPlan, + int uid, int set, int tag, int fields, long start, long end, @NetworkStatsAccess.Level int accessLevel, int callerUid) { if (!NetworkStatsAccess.isAccessibleToUser(uid, callerUid, accessLevel)) { throw new SecurityException("Network stats history of uid " + uid + " is forbidden for caller " + callerUid); } + final int bucketEstimate = (int) ((end - start) / mBucketDuration); final NetworkStatsHistory combined = new NetworkStatsHistory( - mBucketDuration, start == end ? 1 : estimateBuckets(), fields); + mBucketDuration, bucketEstimate, fields); // shortcut when we know stats will be empty if (start == end) return combined; + // Figure out the window of time that we should be augmenting (if any) + long augmentStart = SubscriptionPlan.TIME_UNKNOWN; + long augmentEnd = (augmentPlan != null) ? augmentPlan.getDataUsageTime() + : SubscriptionPlan.TIME_UNKNOWN; + // And if augmenting, we might need to collect more data to adjust with + long collectStart = start; + long collectEnd = end; + + if (augmentEnd != SubscriptionPlan.TIME_UNKNOWN) { + final Iterator> it = augmentPlan.cycleIterator(); + while (it.hasNext()) { + final Pair cycle = it.next(); + final long cycleStart = cycle.first.toInstant().toEpochMilli(); + final long cycleEnd = cycle.second.toInstant().toEpochMilli(); + if (cycleStart <= augmentEnd && augmentEnd < cycleEnd) { + augmentStart = cycleStart; + collectStart = Long.min(collectStart, augmentStart); + collectEnd = Long.max(collectEnd, augmentEnd); + break; + } + } + } + + if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) { + // Shrink augmentation window so we don't risk undercounting. + augmentStart = roundUp(augmentStart); + augmentEnd = roundDown(augmentEnd); + // Grow collection window so we get all the stats needed. + collectStart = roundDown(collectStart); + collectEnd = roundUp(collectEnd); + } + for (int i = 0; i < mStats.size(); i++) { final Key key = mStats.keyAt(i); if (key.uid == uid && NetworkStats.setMatches(set, key.set) && key.tag == tag && templateMatches(template, key.ident)) { final NetworkStatsHistory value = mStats.valueAt(i); - combined.recordHistory(value, start, end); + combined.recordHistory(value, collectStart, collectEnd); } } - return combined; - } - /** - * Summarize all {@link NetworkStatsHistory} in this collection which match - * the requested parameters. - */ - public NetworkStats getSummary(NetworkTemplate template, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { - return getSummary(template, start, end, accessLevel, Binder.getCallingUid()); + if (augmentStart != SubscriptionPlan.TIME_UNKNOWN) { + final NetworkStatsHistory.Entry entry = combined.getValues( + augmentStart, augmentEnd, null); + + // If we don't have any recorded data for this time period, give + // ourselves something to scale with. + if (entry.rxBytes == 0 || entry.txBytes == 0) { + combined.recordData(augmentStart, augmentEnd, + new NetworkStats.Entry(1, 0, 1, 0, 0)); + combined.getValues(augmentStart, augmentEnd, entry); + } + + final long rawBytes = entry.rxBytes + entry.txBytes; + final long rawRxBytes = entry.rxBytes; + final long rawTxBytes = entry.txBytes; + final long targetBytes = augmentPlan.getDataUsageBytes(); + final long targetRxBytes = multiplySafe(targetBytes, rawRxBytes, rawBytes); + final long targetTxBytes = multiplySafe(targetBytes, rawTxBytes, rawBytes); + + // Scale all matching buckets to reach anchor target + final long beforeTotal = combined.getTotalBytes(); + for (int i = 0; i < combined.size(); i++) { + combined.getValues(i, entry); + if (entry.bucketStart >= augmentStart + && entry.bucketStart + entry.bucketDuration <= augmentEnd) { + entry.rxBytes = multiplySafe(targetRxBytes, entry.rxBytes, rawRxBytes); + entry.txBytes = multiplySafe(targetTxBytes, entry.txBytes, rawTxBytes); + // We purposefully clear out packet counters to indicate + // that this data has been augmented. + entry.rxPackets = 0; + entry.txPackets = 0; + combined.setValues(i, entry); + } + } + + final long deltaTotal = combined.getTotalBytes() - beforeTotal; + if (deltaTotal != 0) { + Slog.d(TAG, "Augmented network usage by " + deltaTotal + " bytes"); + } + + // Finally we can slice data as originally requested + final NetworkStatsHistory sliced = new NetworkStatsHistory( + mBucketDuration, bucketEstimate, fields); + sliced.recordHistory(combined, start, end); + return sliced; + } else { + return combined; + } } /** @@ -230,6 +345,7 @@ public class NetworkStatsCollection implements FileRotator.Reader { final long now = System.currentTimeMillis(); final NetworkStats stats = new NetworkStats(end - start, 24); + // shortcut when we know stats will be empty if (start == end) return stats; diff --git a/services/core/java/com/android/server/net/NetworkStatsObservers.java b/services/core/java/com/android/server/net/NetworkStatsObservers.java index a256cbcf9030aebccd2f62cb40a52c51a9469f62..741c2062bd571ae007c6197546d29471008cf7fd 100644 --- a/services/core/java/com/android/server/net/NetworkStatsObservers.java +++ b/services/core/java/com/android/server/net/NetworkStatsObservers.java @@ -17,28 +17,26 @@ package com.android.server.net; import static android.net.TrafficStats.MB_IN_BYTES; + import static com.android.internal.util.Preconditions.checkArgument; import android.app.usage.NetworkStatsManager; import android.net.DataUsageRequest; import android.net.NetworkStats; -import android.net.NetworkStats.NonMonotonicObserver; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; -import android.os.Binder; import android.os.Bundle; -import android.os.Looper; -import android.os.Message; -import android.os.Messenger; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.Messenger; import android.os.Process; import android.os.RemoteException; import android.util.ArrayMap; -import android.util.IntArray; -import android.util.SparseArray; import android.util.Slog; +import android.util.SparseArray; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.net.VpnInfo; @@ -410,7 +408,7 @@ class NetworkStatsObservers { */ private long getTotalBytesForNetworkUid(NetworkTemplate template, int uid) { try { - NetworkStatsHistory history = mCollection.getHistory(template, uid, + NetworkStatsHistory history = mCollection.getHistory(template, null, uid, NetworkStats.SET_ALL, NetworkStats.TAG_NONE, NetworkStatsHistory.FIELD_ALL, Long.MIN_VALUE /* start */, Long.MAX_VALUE /* end */, diff --git a/services/core/java/com/android/server/net/NetworkStatsRecorder.java b/services/core/java/com/android/server/net/NetworkStatsRecorder.java index 80309e19eb428fc7403982bcab74dee395f7fe84..4bee55ef8b22508f04248548d6895b5d9649984d 100644 --- a/services/core/java/com/android/server/net/NetworkStatsRecorder.java +++ b/services/core/java/com/android/server/net/NetworkStatsRecorder.java @@ -20,6 +20,7 @@ import static android.net.NetworkStats.TAG_NONE; import static android.net.TrafficStats.KB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; import static android.text.format.DateUtils.YEAR_IN_MILLIS; + import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.Nullable; @@ -28,6 +29,7 @@ import android.net.NetworkStats.NonMonotonicObserver; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.net.TrafficStats; +import android.os.Binder; import android.os.DropBoxManager; import android.service.NetworkStatsRecorderProto; import android.util.Log; @@ -38,6 +40,9 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.net.VpnInfo; import com.android.internal.util.FileRotator; import com.android.internal.util.IndentingPrintWriter; + +import libcore.io.IoUtils; + import com.google.android.collect.Sets; import java.io.ByteArrayOutputStream; @@ -52,8 +57,6 @@ import java.util.Arrays; import java.util.HashSet; import java.util.Map; -import libcore.io.IoUtils; - /** * Logic to record deltas between periodic {@link NetworkStats} snapshots into * {@link NetworkStatsHistory} that belong to {@link NetworkStatsCollection}. @@ -150,7 +153,7 @@ public class NetworkStatsRecorder { public NetworkStats.Entry getTotalSinceBootLocked(NetworkTemplate template) { return mSinceBoot.getSummary(template, Long.MIN_VALUE, Long.MAX_VALUE, - NetworkStatsAccess.Level.DEVICE).getTotal(null); + NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotal(null); } public NetworkStatsCollection getSinceBoot() { diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 421db40adb98143f494ea1a59f84fa23b00f4f95..3af5265e6fa9bbc78d25f9bf241657232face84e 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -18,7 +18,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.MODIFY_NETWORK_ACCOUNTING; import static android.Manifest.permission.READ_NETWORK_USAGE_HISTORY; import static android.content.Intent.ACTION_SHUTDOWN; import static android.content.Intent.ACTION_UID_REMOVED; @@ -27,6 +26,8 @@ import static android.content.Intent.EXTRA_UID; import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED; import static android.net.ConnectivityManager.isNetworkTypeMobile; import static android.net.NetworkStats.IFACE_ALL; +import static android.net.NetworkStats.METERED_ALL; +import static android.net.NetworkStats.ROAMING_ALL; import static android.net.NetworkStats.SET_ALL; import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.SET_FOREGROUND; @@ -34,10 +35,12 @@ import static android.net.NetworkStats.STATS_PER_IFACE; import static android.net.NetworkStats.STATS_PER_UID; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; +import static android.net.NetworkStatsHistory.FIELD_ALL; import static android.net.NetworkTemplate.buildTemplateMobileWildcard; import static android.net.NetworkTemplate.buildTemplateWifiWildcard; import static android.net.TrafficStats.KB_IN_BYTES; import static android.net.TrafficStats.MB_IN_BYTES; +import static android.provider.Settings.Global.NETSTATS_AUGMENT_ENABLED; import static android.provider.Settings.Global.NETSTATS_DEV_BUCKET_DURATION; import static android.provider.Settings.Global.NETSTATS_DEV_DELETE_AGE; import static android.provider.Settings.Global.NETSTATS_DEV_PERSIST_BYTES; @@ -66,6 +69,7 @@ import static com.android.server.NetworkManagementSocketTagger.setKernelCounterS import android.app.AlarmManager; import android.app.PendingIntent; +import android.app.usage.NetworkStatsManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; @@ -105,6 +109,8 @@ import android.provider.Settings; import android.provider.Settings.Global; import android.service.NetworkInterfaceProto; import android.service.NetworkStatsServiceDumpProto; +import android.telephony.SubscriptionManager; +import android.telephony.SubscriptionPlan; import android.telephony.TelephonyManager; import android.text.format.DateUtils; import android.util.ArrayMap; @@ -118,6 +124,7 @@ import android.util.SparseIntArray; import android.util.TrustedTime; import android.util.proto.ProtoOutputStream; +import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.net.VpnInfo; import com.android.internal.util.ArrayUtils; @@ -140,8 +147,8 @@ import java.util.List; * other system services. */ public class NetworkStatsService extends INetworkStatsService.Stub { - private static final String TAG = "NetworkStats"; - private static final boolean LOGV = false; + static final String TAG = "NetworkStats"; + static final boolean LOGV = false; private static final int MSG_PERFORM_POLL = 1; private static final int MSG_UPDATE_IFACES = 2; @@ -195,6 +202,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { public long getPollInterval(); public long getTimeCacheMaxAge(); public boolean getSampleEnabled(); + public boolean getAugmentEnabled(); public static class Config { public final long bucketDuration; @@ -234,12 +242,17 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final DropBoxNonMonotonicObserver mNonMonotonicObserver = new DropBoxNonMonotonicObserver(); + @GuardedBy("mStatsLock") private NetworkStatsRecorder mDevRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mXtRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mUidRecorder; + @GuardedBy("mStatsLock") private NetworkStatsRecorder mUidTagRecorder; /** Cached {@link #mXtRecorder} stats. */ + @GuardedBy("mStatsLock") private NetworkStatsCollection mXtStatsCached; /** Current counter sets for each UID. */ @@ -321,15 +334,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub { return; } - // create data recorders along with historical rotators - mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false); - mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false); - mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false); - mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true); + synchronized (mStatsLock) { + // create data recorders along with historical rotators + mDevRecorder = buildRecorder(PREFIX_DEV, mSettings.getDevConfig(), false); + mXtRecorder = buildRecorder(PREFIX_XT, mSettings.getXtConfig(), false); + mUidRecorder = buildRecorder(PREFIX_UID, mSettings.getUidConfig(), false); + mUidTagRecorder = buildRecorder(PREFIX_UID_TAG, mSettings.getUidTagConfig(), true); - updatePersistThresholds(); + updatePersistThresholdsLocked(); - synchronized (mStatsLock) { // upgrade any legacy stats, migrating them to rotated files maybeUpgradeLegacyStatsLocked(); @@ -467,18 +480,20 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public INetworkStatsSession openSession() { - return createSession(null, /* poll on create */ false); + // NOTE: if callers want to get non-augmented data, they should go + // through the public API + return openSessionInternal(NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, null); } @Override - public INetworkStatsSession openSessionForUsageStats(final String callingPackage) { - return createSession(callingPackage, /* poll on create */ true); + public INetworkStatsSession openSessionForUsageStats(int flags, String callingPackage) { + return openSessionInternal(flags, callingPackage); } - private INetworkStatsSession createSession(final String callingPackage, boolean pollOnCreate) { + private INetworkStatsSession openSessionInternal(final int flags, final String callingPackage) { assertBandwidthControlEnabled(); - if (pollOnCreate) { + if ((flags & NetworkStatsManager.FLAG_POLL_ON_OPEN) != 0) { final long ident = Binder.clearCallingIdentity(); try { performPoll(FLAG_PERSIST_ALL); @@ -491,9 +506,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // for its lifetime; when caller closes only weak references remain. return new INetworkStatsSession.Stub() { + private final int mCallingUid = Binder.getCallingUid(); + private final String mCallingPackage = callingPackage; + private final @NetworkStatsAccess.Level int mAccessLevel = checkAccessLevel( + callingPackage); + private NetworkStatsCollection mUidComplete; private NetworkStatsCollection mUidTagComplete; - private String mCallingPackage = callingPackage; private NetworkStatsCollection getUidComplete() { synchronized (mStatsLock) { @@ -515,55 +534,38 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public int[] getRelevantUids() { - return getUidComplete().getRelevantUids(checkAccessLevel(mCallingPackage)); + return getUidComplete().getRelevantUids(mAccessLevel); } @Override - public NetworkStats getDeviceSummaryForNetwork(NetworkTemplate template, long start, - long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) { - throw new SecurityException("Calling package " + mCallingPackage - + " cannot access device summary network stats"); - } - NetworkStats result = new NetworkStats(end - start, 1); - final long ident = Binder.clearCallingIdentity(); - try { - // Using access level higher than the one we checked for above. - // Reason is that we are combining usage data in a way that is not PII - // anymore. - result.combineAllValues( - internalGetSummaryForNetwork(template, start, end, - NetworkStatsAccess.Level.DEVICE)); - } finally { - Binder.restoreCallingIdentity(ident); - } - return result; + public NetworkStats getDeviceSummaryForNetwork( + NetworkTemplate template, long start, long end) { + return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel, + mCallingUid); } @Override public NetworkStats getSummaryForNetwork( NetworkTemplate template, long start, long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - return internalGetSummaryForNetwork(template, start, end, accessLevel); + return internalGetSummaryForNetwork(template, flags, start, end, mAccessLevel, + mCallingUid); } @Override public NetworkStatsHistory getHistoryForNetwork(NetworkTemplate template, int fields) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - return internalGetHistoryForNetwork(template, fields, accessLevel); + return internalGetHistoryForNetwork(template, flags, fields, mAccessLevel, + mCallingUid); } @Override public NetworkStats getSummaryForAllUid( NetworkTemplate template, long start, long end, boolean includeTags) { try { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); - final NetworkStats stats = - getUidComplete().getSummary(template, start, end, accessLevel); + final NetworkStats stats = getUidComplete() + .getSummary(template, start, end, mAccessLevel, mCallingUid); if (includeTags) { final NetworkStats tagStats = getUidTagComplete() - .getSummary(template, start, end, accessLevel); + .getSummary(template, start, end, mAccessLevel, mCallingUid); stats.combineAllValues(tagStats); } return stats; @@ -577,13 +579,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public NetworkStatsHistory getHistoryForUid( NetworkTemplate template, int uid, int set, int tag, int fields) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); + // NOTE: We don't augment UID-level statistics if (tag == TAG_NONE) { - return getUidComplete().getHistory(template, uid, set, tag, fields, - accessLevel); + return getUidComplete().getHistory(template, null, uid, set, tag, fields, + Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid); } else { - return getUidTagComplete().getHistory(template, uid, set, tag, fields, - accessLevel); + return getUidTagComplete().getHistory(template, null, uid, set, tag, fields, + Long.MIN_VALUE, Long.MAX_VALUE, mAccessLevel, mCallingUid); } } @@ -591,13 +593,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub { public NetworkStatsHistory getHistoryIntervalForUid( NetworkTemplate template, int uid, int set, int tag, int fields, long start, long end) { - @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(mCallingPackage); + // NOTE: We don't augment UID-level statistics if (tag == TAG_NONE) { - return getUidComplete().getHistory(template, uid, set, tag, fields, start, end, - accessLevel); + return getUidComplete().getHistory(template, null, uid, set, tag, fields, + start, end, mAccessLevel, mCallingUid); } else if (uid == Binder.getCallingUid()) { - return getUidTagComplete().getHistory(template, uid, set, tag, fields, - start, end, accessLevel); + return getUidTagComplete().getHistory(template, null, uid, set, tag, fields, + start, end, mAccessLevel, mCallingUid); } else { throw new SecurityException("Calling package " + mCallingPackage + " cannot access tag information from a different uid"); @@ -617,37 +619,88 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mContext, Binder.getCallingUid(), callingPackage); } + /** + * Find the most relevant {@link SubscriptionPlan} for the given + * {@link NetworkTemplate} and flags. This is typically used to augment + * local measurement results to match a known anchor from the carrier. + */ + private SubscriptionPlan resolveSubscriptionPlan(NetworkTemplate template, int flags) { + SubscriptionPlan plan = null; + if ((flags & NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN) != 0 + && (template.getMatchRule() == NetworkTemplate.MATCH_MOBILE_ALL) + && mSettings.getAugmentEnabled()) { + Slog.d(TAG, "Resolving plan for " + template); + final long token = Binder.clearCallingIdentity(); + try { + final SubscriptionManager sm = mContext.getSystemService(SubscriptionManager.class); + final TelephonyManager tm = mContext.getSystemService(TelephonyManager.class); + for (int subId : sm.getActiveSubscriptionIdList()) { + if (template.matchesSubscriberId(tm.getSubscriberId(subId))) { + Slog.d(TAG, "Found active matching subId " + subId); + final List plans = sm.getSubscriptionPlans(subId); + if (!plans.isEmpty()) { + plan = plans.get(0); + } + } + } + } finally { + Binder.restoreCallingIdentity(token); + } + Slog.d(TAG, "Resolved to plan " + plan); + } + return plan; + } + /** * Return network summary, splicing between DEV and XT stats when * appropriate. */ - private NetworkStats internalGetSummaryForNetwork( - NetworkTemplate template, long start, long end, - @NetworkStatsAccess.Level int accessLevel) { + private NetworkStats internalGetSummaryForNetwork(NetworkTemplate template, int flags, + long start, long end, @NetworkStatsAccess.Level int accessLevel, int callingUid) { // We've been using pure XT stats long enough that we no longer need to // splice DEV and XT together. - return mXtStatsCached.getSummary(template, start, end, accessLevel); + final NetworkStatsHistory history = internalGetHistoryForNetwork(template, flags, FIELD_ALL, + accessLevel, callingUid); + + final long now = System.currentTimeMillis(); + final NetworkStatsHistory.Entry entry = history.getValues(start, end, now, null); + + final NetworkStats stats = new NetworkStats(end - start, 1); + stats.addValues(new NetworkStats.Entry(IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, METERED_ALL, + ROAMING_ALL, entry.rxBytes, entry.rxPackets, entry.txBytes, entry.txPackets, + entry.operations)); + return stats; } /** * Return network history, splicing between DEV and XT stats when * appropriate. */ - private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template, int fields, - @NetworkStatsAccess.Level int accessLevel) { + private NetworkStatsHistory internalGetHistoryForNetwork(NetworkTemplate template, + int flags, int fields, @NetworkStatsAccess.Level int accessLevel, int callingUid) { // We've been using pure XT stats long enough that we no longer need to // splice DEV and XT together. - return mXtStatsCached.getHistory(template, UID_ALL, SET_ALL, TAG_NONE, fields, accessLevel); + final SubscriptionPlan augmentPlan = resolveSubscriptionPlan(template, flags); + synchronized (mStatsLock) { + return mXtStatsCached.getHistory(template, augmentPlan, + UID_ALL, SET_ALL, TAG_NONE, fields, Long.MIN_VALUE, Long.MAX_VALUE, + accessLevel, callingUid); + } } @Override public long getNetworkTotalBytes(NetworkTemplate template, long start, long end) { - // Special case - since this is for internal use only, don't worry about a full access level - // check and just require the signature/privileged permission. + // Special case - since this is for internal use only, don't worry about + // a full access level check and just require the signature/privileged + // permission. mContext.enforceCallingOrSelfPermission(READ_NETWORK_USAGE_HISTORY, TAG); assertBandwidthControlEnabled(); - return internalGetSummaryForNetwork(template, start, end, NetworkStatsAccess.Level.DEVICE) - .getTotalBytes(); + + // NOTE: if callers want to get non-augmented data, they should go + // through the public API + return internalGetSummaryForNetwork(template, + NetworkStatsManager.FLAG_AUGMENT_WITH_SUBSCRIPTION_PLAN, start, end, + NetworkStatsAccess.Level.DEVICE, Binder.getCallingUid()).getTotalBytes(); } @Override @@ -691,7 +744,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public void incrementOperationCount(int uid, int tag, int operationCount) { if (Binder.getCallingUid() != uid) { - mContext.enforceCallingOrSelfPermission(MODIFY_NETWORK_ACCOUNTING, TAG); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.UPDATE_DEVICE_STATS, TAG); } if (operationCount < 0) { @@ -712,7 +766,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public void setUidForeground(int uid, boolean uidForeground) { - mContext.enforceCallingOrSelfPermission(MODIFY_NETWORK_ACCOUNTING, TAG); + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); synchronized (mStatsLock) { final int set = uidForeground ? SET_FOREGROUND : SET_DEFAULT; @@ -752,7 +806,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { @Override public void advisePersistThreshold(long thresholdBytes) { - mContext.enforceCallingOrSelfPermission(MODIFY_NETWORK_ACCOUNTING, TAG); + mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); assertBandwidthControlEnabled(); // clamp threshold into safe range @@ -768,7 +822,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { synchronized (mStatsLock) { if (!mSystemReady) return; - updatePersistThresholds(); + updatePersistThresholdsLocked(); mDevRecorder.maybePersistLocked(currentTime); mXtRecorder.maybePersistLocked(currentTime); @@ -824,7 +878,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * reflect current {@link #mPersistThreshold} value. Always defers to * {@link Global} values when defined. */ - private void updatePersistThresholds() { + private void updatePersistThresholdsLocked() { mDevRecorder.setPersistThreshold(mSettings.getDevPersistBytes(mPersistThreshold)); mXtRecorder.setPersistThreshold(mSettings.getXtPersistBytes(mPersistThreshold)); mUidRecorder.setPersistThreshold(mSettings.getUidPersistBytes(mPersistThreshold)); @@ -1266,7 +1320,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { synchronized (mStatsLock) { if (args.length > 0 && "--proto".equals(args[0])) { // In this case ignore all other arguments. - dumpProto(fd); + dumpProtoLocked(fd); return; } @@ -1342,7 +1396,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } - private void dumpProto(FileDescriptor fd) { + private void dumpProtoLocked(FileDescriptor fd) { final ProtoOutputStream proto = new ProtoOutputStream(fd); // TODO Right now it writes all history. Should it limit to the "since-boot" log? @@ -1530,6 +1584,10 @@ public class NetworkStatsService extends INetworkStatsService.Stub { return getGlobalBoolean(NETSTATS_SAMPLE_ENABLED, true); } @Override + public boolean getAugmentEnabled() { + return getGlobalBoolean(NETSTATS_AUGMENT_ENABLED, true); + } + @Override public Config getDevConfig() { return new Config(getGlobalLong(NETSTATS_DEV_BUCKET_DURATION, HOUR_IN_MILLIS), getGlobalLong(NETSTATS_DEV_ROTATE_AGE, 15 * DAY_IN_MILLIS), diff --git a/services/core/java/com/android/server/notification/AlertRateLimiter.java b/services/core/java/com/android/server/notification/AlertRateLimiter.java index 4b168c5b2ecdc423c05618a5790c2b2223cc0c62..2b01945132a915c22b435da9f59379e608e96693 100644 --- a/services/core/java/com/android/server/notification/AlertRateLimiter.java +++ b/services/core/java/com/android/server/notification/AlertRateLimiter.java @@ -24,7 +24,7 @@ public class AlertRateLimiter { static final long ALLOWED_ALERT_INTERVAL = 1000; private long mLastNotificationMillis = 0; - boolean shouldRateLimitAlert(long now) { + boolean shouldRateLimitAlert(long now) { final long millisSinceLast = now - mLastNotificationMillis; if (millisSinceLast < 0 || millisSinceLast < ALLOWED_ALERT_INTERVAL) { return true; diff --git a/services/core/java/com/android/server/notification/BadgeExtractor.java b/services/core/java/com/android/server/notification/BadgeExtractor.java index 1bd2085952f12bcdc6396833cdedf2e106468dae..184f8b27ff5ccc31838da0a1893e75a48fc76ce7 100644 --- a/services/core/java/com/android/server/notification/BadgeExtractor.java +++ b/services/core/java/com/android/server/notification/BadgeExtractor.java @@ -47,9 +47,11 @@ public class BadgeExtractor implements NotificationSignalExtractor { if (!userWantsBadges || !appCanShowBadge) { record.setShowBadge(false); } else { - record.setShowBadge(mConfig.getNotificationChannel(record.sbn.getPackageName(), - record.sbn.getUid(), record.getChannel().getId(), false).canShowBadge() - && appCanShowBadge); + if (record.getChannel() != null) { + record.setShowBadge(record.getChannel().canShowBadge() && appCanShowBadge); + } else { + record.setShowBadge(appCanShowBadge); + } } return null; diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java index c28fb67d6c2d51ba6770897f2345151c777ea61d..c0fbfbb20b9551ec94d3269f2facdf8b658756ef 100644 --- a/services/core/java/com/android/server/notification/ConditionProviders.java +++ b/services/core/java/com/android/server/notification/ConditionProviders.java @@ -16,14 +16,12 @@ package com.android.server.notification; -import android.annotation.NonNull; import android.app.INotificationManager; import android.app.NotificationManager; import android.content.ComponentName; -import android.content.ContentResolver; import android.content.Context; +import android.content.pm.IPackageManager; import android.net.Uri; -import android.os.Handler; import android.os.IBinder; import android.os.IInterface; import android.os.RemoteException; @@ -32,12 +30,12 @@ import android.provider.Settings; import android.service.notification.Condition; import android.service.notification.ConditionProviderService; import android.service.notification.IConditionProvider; -import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Slog; import com.android.internal.R; +import com.android.internal.annotations.VisibleForTesting; import com.android.server.notification.NotificationManagerService.DumpFilter; import java.io.PrintWriter; @@ -45,6 +43,10 @@ import java.util.ArrayList; import java.util.Arrays; public class ConditionProviders extends ManagedServices { + + @VisibleForTesting + static final String TAG_ENABLED_DND_APPS = "dnd_apps"; + private final ArrayList mRecords = new ArrayList<>(); private final ArraySet mSystemConditionProviderNames; private final ArraySet mSystemConditionProviders @@ -52,11 +54,12 @@ public class ConditionProviders extends ManagedServices { private Callback mCallback; - public ConditionProviders(Context context, Handler handler, UserProfiles userProfiles) { - super(context, handler, new Object(), userProfiles); + public ConditionProviders(Context context, UserProfiles userProfiles, IPackageManager pm) { + super(context, new Object(), userProfiles, pm); mSystemConditionProviderNames = safeSet(PropConfig.getStringArray(mContext, "system.condition.providers", R.array.config_system_condition_providers)); + mApprovalLevel = APPROVAL_BY_PACKAGE; } public void setCallback(Callback callback) { @@ -83,6 +86,7 @@ public class ConditionProviders extends ManagedServices { c.caption = "condition provider"; c.serviceInterface = ConditionProviderService.SERVICE_INTERFACE; c.secureSettingName = Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES; + c.xmlTag = TAG_ENABLED_DND_APPS; c.secondarySettingName = Settings.Secure.ENABLED_NOTIFICATION_LISTENERS; c.bindPermission = android.Manifest.permission.BIND_CONDITION_PROVIDER_SERVICE; c.settingsAction = Settings.ACTION_CONDITION_PROVIDER_SETTINGS; @@ -164,7 +168,7 @@ public class ConditionProviders extends ManagedServices { } @Override - public void onPackagesChanged(boolean removingPackage, String[] pkgList) { + public void onPackagesChanged(boolean removingPackage, String[] pkgList, int[] uid) { if (removingPackage) { INotificationManager inm = NotificationManager.getService(); @@ -179,7 +183,12 @@ public class ConditionProviders extends ManagedServices { } } } - super.onPackagesChanged(removingPackage, pkgList); + super.onPackagesChanged(removingPackage, pkgList, uid); + } + + @Override + protected boolean isValidEntry(String packageOrComponent, int userId) { + return true; } public ManagedServiceInfo checkServiceToken(IConditionProvider provider) { @@ -277,31 +286,6 @@ public class ConditionProviders extends ManagedServices { } } - @Override - protected @NonNull ArraySet loadComponentNamesFromSetting(String settingName, - int userId) { - final ContentResolver cr = mContext.getContentResolver(); - String settingValue = Settings.Secure.getStringForUser( - cr, - settingName, - userId); - if (TextUtils.isEmpty(settingValue)) - return new ArraySet<>(); - String[] packages = settingValue.split(ENABLED_SERVICES_SEPARATOR); - ArraySet result = new ArraySet<>(packages.length); - for (int i = 0; i < packages.length; i++) { - if (!TextUtils.isEmpty(packages[i])) { - final ComponentName component = ComponentName.unflattenFromString(packages[i]); - if (component != null) { - result.addAll(queryPackageForServices(component.getPackageName(), userId)); - } else { - result.addAll(queryPackageForServices(packages[i], userId)); - } - } - } - return result; - } - public boolean subscribeIfNecessary(ComponentName component, Uri conditionId) { synchronized (mMutex) { final ConditionRecord r = getRecordLocked(conditionId, component, false /*create*/); diff --git a/services/core/java/com/android/server/notification/CountdownConditionProvider.java b/services/core/java/com/android/server/notification/CountdownConditionProvider.java index c1a7ac63aa46a66059c55db826c3bf229adfff9d..c165fc13cc5275f07df85a80397bd859cf082126 100644 --- a/services/core/java/com/android/server/notification/CountdownConditionProvider.java +++ b/services/core/java/com/android/server/notification/CountdownConditionProvider.java @@ -52,6 +52,7 @@ public class CountdownConditionProvider extends SystemConditionProviderService { private boolean mConnected; private long mTime; + private boolean mIsAlarm; public CountdownConditionProvider() { if (DEBUG) Slog.d(TAG, "new CountdownConditionProvider()"); @@ -110,9 +111,11 @@ public class CountdownConditionProvider extends SystemConditionProviderService { public void onSubscribe(Uri conditionId) { if (DEBUG) Slog.d(TAG, "onSubscribe " + conditionId); mTime = ZenModeConfig.tryParseCountdownConditionId(conditionId); + mIsAlarm = ZenModeConfig.isValidCountdownToAlarmConditionId(conditionId); final AlarmManager alarms = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); - final Intent intent = new Intent(ACTION).putExtra(EXTRA_CONDITION_ID, conditionId) + final Intent intent = new Intent(ACTION) + .putExtra(EXTRA_CONDITION_ID, conditionId) .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT); @@ -123,7 +126,7 @@ public class CountdownConditionProvider extends SystemConditionProviderService { DateUtils.getRelativeTimeSpanString(mTime, now, DateUtils.MINUTE_IN_MILLIS); if (mTime <= now) { // in the past, already false - notifyCondition(newCondition(mTime, Condition.STATE_FALSE)); + notifyCondition(newCondition(mTime, mIsAlarm, Condition.STATE_FALSE)); } else { // in the future, set an alarm alarms.setExact(AlarmManager.RTC_WAKEUP, mTime, pendingIntent); @@ -145,17 +148,18 @@ public class CountdownConditionProvider extends SystemConditionProviderService { public void onReceive(Context context, Intent intent) { if (ACTION.equals(intent.getAction())) { final Uri conditionId = intent.getParcelableExtra(EXTRA_CONDITION_ID); + final boolean alarm = ZenModeConfig.isValidCountdownToAlarmConditionId(conditionId); final long time = ZenModeConfig.tryParseCountdownConditionId(conditionId); if (DEBUG) Slog.d(TAG, "Countdown condition fired: " + conditionId); if (time > 0) { - notifyCondition(newCondition(time, Condition.STATE_FALSE)); + notifyCondition(newCondition(time, alarm, Condition.STATE_FALSE)); } } } } - private static final Condition newCondition(long time, int state) { - return new Condition(ZenModeConfig.toCountdownConditionId(time), + private static final Condition newCondition(long time, boolean alarm, int state) { + return new Condition(ZenModeConfig.toCountdownConditionId(time, alarm), "", "", "", 0, state,Condition.FLAG_RELEVANT_NOW); } diff --git a/services/core/java/com/android/server/notification/GroupHelper.java b/services/core/java/com/android/server/notification/GroupHelper.java index 57c558cddb5488e1b27b29b48746d365240a8375..ce805aadec777709c6980c54a7550b2c2182d188 100644 --- a/services/core/java/com/android/server/notification/GroupHelper.java +++ b/services/core/java/com/android/server/notification/GroupHelper.java @@ -38,14 +38,14 @@ public class GroupHelper { private final Callback mCallback; // Map of user : . Only contains notifications that are not - // groupd by the app (aka no group or sort key). + // grouped by the app (aka no group or sort key). Map>> mUngroupedNotifications = new HashMap<>(); public GroupHelper(Callback callback) {; mCallback = callback; } - public void onNotificationPosted(StatusBarNotification sbn) { + public void onNotificationPosted(StatusBarNotification sbn, boolean autogroupSummaryExists) { if (DEBUG) Log.i(TAG, "POSTED " + sbn.getKey()); try { List notificationsToGroup = new ArrayList<>(); @@ -68,7 +68,8 @@ public class GroupHelper { notificationsForPackage.add(sbn.getKey()); ungroupedNotificationsByUser.put(sbn.getPackageName(), notificationsForPackage); - if (notificationsForPackage.size() >= AUTOGROUP_AT_COUNT) { + if (notificationsForPackage.size() >= AUTOGROUP_AT_COUNT + || autogroupSummaryExists) { notificationsToGroup.addAll(notificationsForPackage); } } @@ -120,6 +121,7 @@ public class GroupHelper { // If the status change of this notification has brought the number of loose // notifications to zero, remove the summary and un-autogroup. if (notificationsForPackage.size() == 0) { + ungroupedNotificationsByUser.remove(sbn.getPackageName()); removeSummary = true; } } diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index 5251c78f954102d39a7b0e6a0f53c0ee5c961c06..b7b91a76ebf3bf795d4608d793954f9112129c19 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -25,12 +25,10 @@ import android.annotation.NonNull; import android.app.ActivityManager; import android.app.PendingIntent; import android.app.admin.DevicePolicyManager; -import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; @@ -39,33 +37,36 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; -import android.database.ContentObserver; -import android.net.Uri; import android.os.Binder; import android.os.Build; -import android.os.Handler; import android.os.IBinder; import android.os.IInterface; import android.os.RemoteException; -import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.text.TextUtils; +import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Slog; import android.util.SparseArray; +import com.android.internal.util.XmlUtils; import com.android.server.notification.NotificationManagerService.DumpFilter; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + +import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; -import java.util.Objects; import java.util.Set; +import java.util.stream.Collectors; /** * Manages the lifecycle of application-provided services bound by system server. @@ -83,79 +84,62 @@ abstract public class ManagedServices { protected static final String ENABLED_SERVICES_SEPARATOR = ":"; + /** + * List of components and apps that can have running {@link ManagedServices}. + */ + static final String TAG_MANAGED_SERVICES = "service_listing"; + static final String ATT_APPROVED_LIST = "approved"; + static final String ATT_USER_ID = "user"; + static final String ATT_IS_PRIMARY = "primary"; + + static final int APPROVAL_BY_PACKAGE = 0; + static final int APPROVAL_BY_COMPONENT = 1; + protected final Context mContext; protected final Object mMutex; private final UserProfiles mUserProfiles; - private final SettingsObserver mSettingsObserver; private final IPackageManager mPm; + private final UserManager mUm; private final Config mConfig; - private ArraySet mRestored; // contains connections to all connected services, including app services // and system services - private final ArrayList mServices = new ArrayList(); + private final ArrayList mServices = new ArrayList<>(); // things that will be put into mServices as soon as they're ready - private final ArrayList mServicesBinding = new ArrayList(); + private final ArrayList mServicesBinding = new ArrayList<>(); // lists the component names of all enabled (and therefore potentially connected) // app services for current profiles. private ArraySet mEnabledServicesForCurrentProfiles - = new ArraySet(); + = new ArraySet<>(); // Just the packages from mEnabledServicesForCurrentProfiles - private ArraySet mEnabledServicesPackageNames = new ArraySet(); - // List of packages in restored setting across all mUserProfiles, for quick - // filtering upon package updates. - private ArraySet mRestoredPackages = new ArraySet<>(); + private ArraySet mEnabledServicesPackageNames = new ArraySet<>(); // List of enabled packages that have nevertheless asked not to be run private ArraySet mSnoozingForCurrentProfiles = new ArraySet<>(); + // List of approved packages or components (by user, then by primary/secondary) that are + // allowed to be bound as managed services. A package or component appearing in this list does + // not mean that we are currently bound to said package/component. + private ArrayMap>> mApproved = new ArrayMap<>(); // Kept to de-dupe user change events (experienced after boot, when we receive a settings and a // user change). private int[] mLastSeenProfileIds; - private final BroadcastReceiver mRestoreReceiver; + // True if approved services are stored in xml, not settings. + private boolean mUseXml; - public ManagedServices(Context context, Handler handler, Object mutex, - UserProfiles userProfiles) { + // Whether managed services are approved individually or package wide + protected int mApprovalLevel; + + public ManagedServices(Context context, Object mutex, UserProfiles userProfiles, + IPackageManager pm) { mContext = context; mMutex = mutex; mUserProfiles = userProfiles; - mPm = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); + mPm = pm; mConfig = getConfig(); - mSettingsObserver = new SettingsObserver(handler); - - mRestoreReceiver = new SettingRestoredReceiver(); - IntentFilter filter = new IntentFilter(Intent.ACTION_SETTING_RESTORED); - context.registerReceiver(mRestoreReceiver, filter); - rebuildRestoredPackages(); - } - - class SettingRestoredReceiver extends BroadcastReceiver { - @Override - public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_SETTING_RESTORED.equals(intent.getAction())) { - String element = intent.getStringExtra(Intent.EXTRA_SETTING_NAME); - if (Objects.equals(element, mConfig.secureSettingName) - || Objects.equals(element, mConfig.secondarySettingName)) { - String prevValue = intent.getStringExtra(Intent.EXTRA_SETTING_PREVIOUS_VALUE); - String newValue = intent.getStringExtra(Intent.EXTRA_SETTING_NEW_VALUE); - int restoredFromSdkInt = intent.getIntExtra( - Intent.EXTRA_SETTING_RESTORED_FROM_SDK_INT, 0); - if (restoredFromSdkInt < Build.VERSION_CODES.O) { - // automatic system grants were added in O, so append the approved apps - // rather than wiping out the setting - if (!TextUtils.isEmpty(prevValue)) { - if (!TextUtils.isEmpty(newValue)) { - newValue = newValue + ENABLED_SERVICES_SEPARATOR + prevValue; - } else { - newValue = prevValue; - } - } - } - settingRestored(element, prevValue, newValue, getSendingUserId()); - } - } - } + mApprovalLevel = APPROVAL_BY_COMPONENT; + mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE); } abstract protected Config getConfig(); @@ -180,17 +164,33 @@ abstract public class ManagedServices { protected void onServiceRemovedLocked(ManagedServiceInfo removed) { } private ManagedServiceInfo newServiceInfo(IInterface service, - ComponentName component, int userid, boolean isSystem, ServiceConnection connection, + ComponentName component, int userId, boolean isSystem, ServiceConnection connection, int targetSdkVersion) { - return new ManagedServiceInfo(service, component, userid, isSystem, connection, + return new ManagedServiceInfo(service, component, userId, isSystem, connection, targetSdkVersion); } - public void onBootPhaseAppsCanStart() { - mSettingsObserver.observe(); - } + public void onBootPhaseAppsCanStart() {} public void dump(PrintWriter pw, DumpFilter filter) { + pw.println(" Allowed " + getCaption() + "s:"); + final int N = mApproved.size(); + for (int i = 0 ; i < N; i++) { + final int userId = mApproved.keyAt(i); + final ArrayMap> approvedByType = mApproved.valueAt(i); + if (approvedByType != null) { + final int M = approvedByType.size(); + for (int j = 0; j < M; j++) { + final boolean isPrimary = approvedByType.keyAt(j); + final ArraySet approved = approvedByType.valueAt(j); + if (approvedByType != null && approvedByType.size() > 0) { + pw.println(" " + String.join(ENABLED_SERVICES_SEPARATOR, approved) + + " (user: " + userId + " isPrimary: " + isPrimary + ")"); + } + } + } + } + pw.println(" All " + getCaption() + "s (" + mEnabledServicesForCurrentProfiles.size() + ") enabled for current profiles:"); for (ComponentName cmpt : mEnabledServicesForCurrentProfiles) { @@ -214,67 +214,262 @@ abstract public class ManagedServices { } } - // By convention, restored settings are replicated to another settings - // entry, named similarly but with a disambiguation suffix. - public static String restoredSettingName(String setting) { - return setting + ":restored"; - } - - // The OS has done a restore of this service's saved state. We clone it to the - // 'restored' reserve, and then once we return and the actual write to settings is - // performed, our observer will do the work of maintaining the restored vs live - // settings data. - public void settingRestored(String element, String oldValue, String newValue, int userid) { - if (DEBUG) Slog.d(TAG, "Restored managed service setting: " + element - + " ovalue=" + oldValue + " nvalue=" + newValue); - if (mConfig.secureSettingName.equals(element) || - mConfig.secondarySettingName.equals(element)) { - if (element != null) { - Settings.Secure.putStringForUser(mContext.getContentResolver(), - restoredSettingName(element), - newValue, - userid); - if (mConfig.secureSettingName.equals(element)) { - updateSettingsAccordingToInstalledServices(element, userid); + protected void onSettingRestored(String element, String value, int backupSdkInt, int userId) { + if (!mUseXml) { + Slog.d(TAG, "Restored managed service setting: " + element); + if (mConfig.secureSettingName.equals(element) || + (mConfig.secondarySettingName != null + && mConfig.secondarySettingName.equals(element))) { + if (backupSdkInt < Build.VERSION_CODES.O) { + // automatic system grants were added in O, so append the approved apps + // rather than wiping out the setting + String currentSetting = + getApproved(userId, mConfig.secureSettingName.equals(element)); + if (!TextUtils.isEmpty(currentSetting)) { + if (!TextUtils.isEmpty(value)) { + value = value + ENABLED_SERVICES_SEPARATOR + currentSetting; + } else { + value = currentSetting; + } + } + } + Settings.Secure.putStringForUser( + mContext.getContentResolver(), element, value, userId); + loadAllowedComponentsFromSettings(); + rebindServices(false); + } + } + } + + public void writeXml(XmlSerializer out, boolean forBackup) throws IOException { + out.startTag(null, getConfig().xmlTag); + + if (forBackup) { + trimApprovedListsAccordingToInstalledServices(); + } + + final int N = mApproved.size(); + for (int i = 0 ; i < N; i++) { + final int userId = mApproved.keyAt(i); + final ArrayMap> approvedByType = mApproved.valueAt(i); + if (approvedByType != null) { + final int M = approvedByType.size(); + for (int j = 0; j < M; j++) { + final boolean isPrimary = approvedByType.keyAt(j); + final Set approved = approvedByType.valueAt(j); + if (approved != null) { + String allowedItems = String.join(ENABLED_SERVICES_SEPARATOR, approved); + out.startTag(null, TAG_MANAGED_SERVICES); + out.attribute(null, ATT_APPROVED_LIST, allowedItems); + out.attribute(null, ATT_USER_ID, Integer.toString(userId)); + out.attribute(null, ATT_IS_PRIMARY, Boolean.toString(isPrimary)); + out.endTag(null, TAG_MANAGED_SERVICES); + + if (!forBackup && isPrimary) { + // Also write values to settings, for observers who haven't migrated yet + Settings.Secure.putStringForUser(mContext.getContentResolver(), + getConfig().secureSettingName, allowedItems, userId); + } + + } + } + } + } + + out.endTag(null, getConfig().xmlTag); + } + + protected void migrateToXml() { + loadAllowedComponentsFromSettings(); + } + + public void readXml(XmlPullParser parser) + throws XmlPullParserException, IOException { + int type; + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { + String tag = parser.getName(); + if (type == XmlPullParser.END_TAG + && getConfig().xmlTag.equals(tag)) { + break; + } + if (type == XmlPullParser.START_TAG) { + if (TAG_MANAGED_SERVICES.equals(tag)) { + Slog.i(TAG, "Read " + mConfig.caption + " permissions from xml"); + final String approved = XmlUtils.readStringAttribute(parser, ATT_APPROVED_LIST); + final int userId = XmlUtils.readIntAttribute(parser, ATT_USER_ID, 0); + final boolean isPrimary = + XmlUtils.readBooleanAttribute(parser, ATT_IS_PRIMARY, true); + if (mUm.getUserInfo(userId) != null) { + addApprovedList(approved, userId, isPrimary); + } + mUseXml = true; } - rebuildRestoredPackages(); } } + rebindServices(false); } - public boolean isComponentEnabledForPackage(String pkg) { + private void loadAllowedComponentsFromSettings() { + + UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + for (UserInfo user : userManager.getUsers()) { + final ContentResolver cr = mContext.getContentResolver(); + addApprovedList(Settings.Secure.getStringForUser( + cr, + getConfig().secureSettingName, + user.id), user.id, true); + if (!TextUtils.isEmpty(getConfig().secondarySettingName)) { + addApprovedList(Settings.Secure.getStringForUser( + cr, + getConfig().secondarySettingName, + user.id), user.id, false); + } + } + Slog.d(TAG, "Done loading approved values from settings"); + } + + private void addApprovedList(String approved, int userId, boolean isPrimary) { + if (TextUtils.isEmpty(approved)) { + approved = ""; + } + ArrayMap> approvedByType = mApproved.get(userId); + if (approvedByType == null) { + approvedByType = new ArrayMap<>(); + mApproved.put(userId, approvedByType); + } + String[] approvedArray = approved.split(ENABLED_SERVICES_SEPARATOR); + final ArraySet approvedList = new ArraySet<>(); + for (String pkgOrComponent : approvedArray) { + String approvedItem = getApprovedValue(pkgOrComponent); + if (approvedItem != null) { + approvedList.add(approvedItem); + } + } + approvedByType.put(isPrimary, approvedList); + } + + protected boolean isComponentEnabledForPackage(String pkg) { return mEnabledServicesPackageNames.contains(pkg); } - public void onPackagesChanged(boolean removingPackage, String[] pkgList) { + protected void setPackageOrComponentEnabled(String pkgOrComponent, int userId, + boolean isPrimary, boolean enabled) { + Slog.i(TAG, + (enabled ? " Allowing " : "Disallowing ") + mConfig.caption + " " + pkgOrComponent); + ArrayMap> allowedByType = mApproved.get(userId); + if (allowedByType == null) { + allowedByType = new ArrayMap<>(); + mApproved.put(userId, allowedByType); + } + ArraySet approved = allowedByType.get(isPrimary); + if (approved == null) { + approved = new ArraySet<>(); + allowedByType.put(isPrimary, approved); + } + String approvedItem = getApprovedValue(pkgOrComponent); + + if (approvedItem != null) { + if (enabled) { + approved.add(approvedItem); + } else { + approved.remove(approvedItem); + } + } + + rebindServices(false); + } + + private String getApprovedValue(String pkgOrComponent) { + if (mApprovalLevel == APPROVAL_BY_COMPONENT) { + if(ComponentName.unflattenFromString(pkgOrComponent) != null) { + return pkgOrComponent; + } + return null; + } else { + return getPackageName(pkgOrComponent); + } + } + + protected String getApproved(int userId, boolean primary) { + final ArrayMap> allowedByType = + mApproved.getOrDefault(userId, new ArrayMap<>()); + ArraySet approved = allowedByType.getOrDefault(primary, new ArraySet<>()); + return String.join(ENABLED_SERVICES_SEPARATOR, approved); + } + + protected List getAllowedComponents(int userId) { + final List allowedComponents = new ArrayList<>(); + final ArrayMap> allowedByType = + mApproved.getOrDefault(userId, new ArrayMap<>()); + for (int i = 0; i < allowedByType.size(); i++) { + final ArraySet allowed = allowedByType.valueAt(i); + allowedComponents.addAll(allowed.stream().map(ComponentName::unflattenFromString) + .filter(out -> out != null).collect(Collectors.toList())); + } + return allowedComponents; + } + + protected List getAllowedPackages(int userId) { + final List allowedPackages = new ArrayList<>(); + final ArrayMap> allowedByType = + mApproved.getOrDefault(userId, new ArrayMap<>()); + for (int i = 0; i < allowedByType.size(); i++) { + final ArraySet allowed = allowedByType.valueAt(i); + allowedPackages.addAll( + allowed.stream().map(this::getPackageName).collect(Collectors.toList())); + } + return allowedPackages; + } + + protected boolean isPackageOrComponentAllowed(String pkgOrComponent, int userId) { + ArrayMap> allowedByType = + mApproved.getOrDefault(userId, new ArrayMap<>()); + for (int i = 0; i < allowedByType.size(); i++) { + ArraySet allowed = allowedByType.valueAt(i); + if (allowed.contains(pkgOrComponent)) { + return true; + } + } + return false; + } + + public void onPackagesChanged(boolean removingPackage, String[] pkgList, int[] uidList) { if (DEBUG) Slog.d(TAG, "onPackagesChanged removingPackage=" + removingPackage + " pkgList=" + (pkgList == null ? null : Arrays.asList(pkgList)) + " mEnabledServicesPackageNames=" + mEnabledServicesPackageNames); - boolean anyServicesInvolved = false; if (pkgList != null && (pkgList.length > 0)) { + boolean anyServicesInvolved = false; + // Remove notification settings for uninstalled package + if (removingPackage) { + int size = Math.min(pkgList.length, uidList.length); + for (int i = 0; i < size; i++) { + final String pkg = pkgList[i]; + final int userId = UserHandle.getUserId(uidList[i]); + anyServicesInvolved = removeUninstalledItemsFromApprovedLists(userId, pkg); + } + } for (String pkgName : pkgList) { - if (mEnabledServicesPackageNames.contains(pkgName) || - mRestoredPackages.contains(pkgName)) { + if (mEnabledServicesPackageNames.contains(pkgName)) { anyServicesInvolved = true; } } - } - if (anyServicesInvolved) { - // if we're not replacing a package, clean up orphaned bits - if (removingPackage) { - updateSettingsAccordingToInstalledServices(); - rebuildRestoredPackages(); + if (anyServicesInvolved) { + // make sure we're still bound to any of our services who may have just upgraded + rebindServices(false); } - // make sure we're still bound to any of our services who may have just upgraded - rebindServices(false); } } + public void onUserRemoved(int user) { + Slog.i(TAG, "Removing approved services for removed user " + user); + mApproved.remove(user); + rebindServices(true); + } + public void onUserSwitched(int user) { if (DEBUG) Slog.d(TAG, "onUserSwitched u=" + user); - rebuildRestoredPackages(); if (Arrays.equals(mLastSeenProfileIds, mUserProfiles.getCurrentProfileIds())) { if (DEBUG) Slog.d(TAG, "Current profile IDs didn't change, skipping rebindServices()."); return; @@ -284,11 +479,10 @@ abstract public class ManagedServices { public void onUserUnlocked(int user) { if (DEBUG) Slog.d(TAG, "onUserUnlocked u=" + user); - rebuildRestoredPackages(); rebindServices(false); } - public ManagedServiceInfo getServiceFromTokenLocked(IInterface service) { + private ManagedServiceInfo getServiceFromTokenLocked(IInterface service) { if (service == null) { return null; } @@ -301,14 +495,14 @@ abstract public class ManagedServices { return null; } - public ManagedServiceInfo checkServiceTokenLocked(IInterface service) { + protected ManagedServiceInfo checkServiceTokenLocked(IInterface service) { checkNotNull(service); ManagedServiceInfo info = getServiceFromTokenLocked(service); if (info != null) { return info; } throw new SecurityException("Disallowed call from unknown " + getCaption() + ": " - + service); + + service + " " + service.getClass()); } public void unregisterService(IInterface service, int userid) { @@ -328,9 +522,9 @@ abstract public class ManagedServices { /** * Add a service to our callbacks. The lifecycle of this service is managed externally, - * but unlike a system service, it should not be considered privledged. + * but unlike a system service, it should not be considered privileged. * */ - public void registerGuestService(ManagedServiceInfo guest) { + protected void registerGuestService(ManagedServiceInfo guest) { checkNotNull(guest.service); if (!checkType(guest.service)) { throw new IllegalArgumentException(); @@ -340,7 +534,7 @@ abstract public class ManagedServices { } } - public void setComponentState(ComponentName component, boolean enabled) { + protected void setComponentState(ComponentName component, boolean enabled) { boolean previous = !mSnoozingForCurrentProfiles.contains(component); if (previous == enabled) { return; @@ -353,11 +547,8 @@ abstract public class ManagedServices { } // State changed - if (DEBUG) { - Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + - component.flattenToShortString()); - } - + Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + + component.flattenToShortString()); synchronized (mMutex) { final int[] userIds = mUserProfiles.getCurrentProfileIds(); @@ -372,84 +563,31 @@ abstract public class ManagedServices { } } - private void rebuildRestoredPackages() { - mRestoredPackages.clear(); - String secureSettingName = restoredSettingName(mConfig.secureSettingName); - String secondarySettingName = mConfig.secondarySettingName == null - ? null : restoredSettingName(mConfig.secondarySettingName); - int[] userIds = mUserProfiles.getCurrentProfileIds(); - final int N = userIds.length; - for (int i = 0; i < N; ++i) { - ArraySet names = - loadComponentNamesFromSetting(secureSettingName, userIds[i]); - if (secondarySettingName != null) { - names.addAll(loadComponentNamesFromSetting(secondarySettingName, userIds[i])); - } - for (ComponentName name : names) { - mRestoredPackages.add(name.getPackageName()); - } - } - } - - - protected @NonNull ArraySet loadComponentNamesFromSetting(String settingName, - int userId) { - final ContentResolver cr = mContext.getContentResolver(); - String settingValue = Settings.Secure.getStringForUser( - cr, - settingName, - userId); - if (TextUtils.isEmpty(settingValue)) + private @NonNull ArraySet loadComponentNamesFromValues( + ArraySet approved, int userId) { + if (approved == null || approved.size() == 0) return new ArraySet<>(); - String[] restored = settingValue.split(ENABLED_SERVICES_SEPARATOR); - ArraySet result = new ArraySet<>(restored.length); - for (int i = 0; i < restored.length; i++) { - ComponentName value = ComponentName.unflattenFromString(restored[i]); - if (null != value) { - result.add(value); + ArraySet result = new ArraySet<>(approved.size()); + for (int i = 0; i < approved.size(); i++) { + final String packageOrComponent = approved.valueAt(i); + if (!TextUtils.isEmpty(packageOrComponent)) { + ComponentName component = ComponentName.unflattenFromString(packageOrComponent); + if (component != null) { + result.add(component); + } else { + result.addAll(queryPackageForServices(packageOrComponent, userId)); + } } } return result; } - private void storeComponentsToSetting(Set components, - String settingName, - int userId) { - String[] componentNames = null; - if (null != components) { - componentNames = new String[components.size()]; - int index = 0; - for (ComponentName c: components) { - componentNames[index++] = c.flattenToString(); - } - } - final String value = (componentNames == null) ? "" : - TextUtils.join(ENABLED_SERVICES_SEPARATOR, componentNames); - final ContentResolver cr = mContext.getContentResolver(); - Settings.Secure.putStringForUser( - cr, - settingName, - value, - userId); - } - - /** - * Remove access for any services that no longer exist. - */ - private void updateSettingsAccordingToInstalledServices() { - int[] userIds = mUserProfiles.getCurrentProfileIds(); - final int N = userIds.length; - for (int i = 0; i < N; ++i) { - updateSettingsAccordingToInstalledServices(mConfig.secureSettingName, userIds[i]); - if (mConfig.secondarySettingName != null) { - updateSettingsAccordingToInstalledServices( - mConfig.secondarySettingName, userIds[i]); - } - } - rebuildRestoredPackages(); + protected Set queryPackageForServices(String packageName, int userId) { + return queryPackageForServices(packageName, 0, userId); } - protected Set queryPackageForServices(String packageName, int userId) { + protected Set queryPackageForServices(String packageName, int extraFlags, + int userId) { Set installed = new ArraySet<>(); final PackageManager pm = mContext.getPackageManager(); Intent queryIntent = new Intent(mConfig.serviceInterface); @@ -458,7 +596,7 @@ abstract public class ManagedServices { } List installedServices = pm.queryIntentServicesAsUser( queryIntent, - PackageManager.GET_SERVICES | PackageManager.GET_META_DATA, + PackageManager.GET_SERVICES | PackageManager.GET_META_DATA | extraFlags, userId); if (DEBUG) Slog.v(TAG, mConfig.serviceInterface + " services: " + installedServices); @@ -481,50 +619,75 @@ abstract public class ManagedServices { return installed; } - private void updateSettingsAccordingToInstalledServices(String setting, int userId) { - boolean restoredChanged = false; - boolean currentChanged = false; - Set restored = - loadComponentNamesFromSetting(restoredSettingName(setting), userId); - Set current = - loadComponentNamesFromSetting(setting, userId); - // Load all services for all packages. - Set installed = queryPackageForServices(null, userId); - - ArraySet retained = new ArraySet<>(); - - for (ComponentName component : installed) { - if (null != restored) { - boolean wasRestored = restored.remove(component); - if (wasRestored) { - // Freshly installed package has service that was mentioned in restored setting. - if (DEBUG) - Slog.v(TAG, "Restoring " + component + " for user " + userId); - restoredChanged = true; - currentChanged = true; - retained.add(component); - continue; + private void trimApprovedListsAccordingToInstalledServices() { + int N = mApproved.size(); + for (int i = 0 ; i < N; i++) { + final int userId = mApproved.keyAt(i); + final ArrayMap> approvedByType = mApproved.valueAt(i); + int M = approvedByType.size(); + for (int j = 0; j < M; j++) { + final ArraySet approved = approvedByType.valueAt(j); + int P = approved.size(); + for (int k = P - 1; k >= 0; k--) { + final String approvedPackageOrComponent = approved.valueAt(k); + if (!isValidEntry(approvedPackageOrComponent, userId)){ + approved.removeAt(k); + Slog.v(TAG, "Removing " + approvedPackageOrComponent + + " from approved list; no matching services found"); + } else { + if (DEBUG) { + Slog.v(TAG, "Keeping " + approvedPackageOrComponent + + " on approved list; matching services found"); + } + } } } + } + } - if (null != current) { - if (current.contains(component)) - retained.add(component); + private boolean removeUninstalledItemsFromApprovedLists(int uninstalledUserId, String pkg) { + boolean removed = false; + final ArrayMap> approvedByType = mApproved.get(uninstalledUserId); + if (approvedByType != null) { + int M = approvedByType.size(); + for (int j = 0; j < M; j++) { + final ArraySet approved = approvedByType.valueAt(j); + int O = approved.size(); + for (int k = O - 1; k >= 0; k--) { + final String packageOrComponent = approved.valueAt(k); + final String packageName = getPackageName(packageOrComponent); + if (TextUtils.equals(pkg, packageName)) { + approved.removeAt(k); + if (DEBUG) { + Slog.v(TAG, "Removing " + packageOrComponent + + " from approved list; uninstalled"); + } + } + } } } + return removed; + } - currentChanged |= ((current == null ? 0 : current.size()) != retained.size()); - - if (currentChanged) { - if (DEBUG) Slog.v(TAG, "List of " + getCaption() + " services was updated " + current); - storeComponentsToSetting(retained, setting, userId); + protected String getPackageName(String packageOrComponent) { + final ComponentName component = ComponentName.unflattenFromString(packageOrComponent); + if (component != null) { + return component.getPackageName(); + } else { + return packageOrComponent; } + } - if (restoredChanged) { - if (DEBUG) Slog.v(TAG, - "List of " + getCaption() + " restored services was updated " + restored); - storeComponentsToSetting(restored, restoredSettingName(setting), userId); + protected boolean isValidEntry(String packageOrComponent, int userId) { + return hasMatchingServices(packageOrComponent, userId); + } + + private boolean hasMatchingServices(String packageOrComponent, int userId) { + if (!TextUtils.isEmpty(packageOrComponent)) { + final String packageName = getPackageName(packageOrComponent); + return queryPackageForServices(packageName, userId).size() > 0; } + return false; } /** @@ -539,11 +702,19 @@ abstract public class ManagedServices { final SparseArray> componentsByUser = new SparseArray<>(); for (int i = 0; i < nUserIds; ++i) { - componentsByUser.put(userIds[i], - loadComponentNamesFromSetting(mConfig.secureSettingName, userIds[i])); - if (mConfig.secondarySettingName != null) { - componentsByUser.get(userIds[i]).addAll( - loadComponentNamesFromSetting(mConfig.secondarySettingName, userIds[i])); + final int userId = userIds[i]; + final ArrayMap> approvedLists = mApproved.get(userIds[i]); + if (approvedLists != null) { + final int N = approvedLists.size(); + for (int j = 0; j < N; j++) { + ArraySet approvedByUser = componentsByUser.get(userId); + if (approvedByUser == null) { + approvedByUser = new ArraySet<>(); + componentsByUser.put(userId, approvedByUser); + } + approvedByUser.addAll( + loadComponentNamesFromValues(approvedLists.valueAt(j), userId)); + } } } @@ -565,7 +736,7 @@ abstract public class ManagedServices { // decode the list of components final ArraySet userComponents = componentsByUser.get(userIds[i]); if (null == userComponents) { - toAdd.put(userIds[i], new ArraySet()); + toAdd.put(userIds[i], new ArraySet<>()); continue; } @@ -608,7 +779,7 @@ abstract public class ManagedServices { PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userIds[i]); if (info == null || !mConfig.bindPermission.equals(info.permission)) { - Slog.w(TAG, "Skipping " + getCaption() + " service " + component + Slog.w(TAG, "Not binding " + getCaption() + " service " + component + ": it does not require the permission " + mConfig.bindPermission); continue; } @@ -663,8 +834,7 @@ abstract public class ManagedServices { if (name.equals(info.component) && info.userid == userid) { // cut old connections - if (DEBUG) Slog.v(TAG, " disconnecting old " + getCaption() + ": " - + info.service); + Slog.v(TAG, " disconnecting old " + getCaption() + ": " + info.service); removeServiceLocked(i); if (info.connection != null) { mContext.unbindService(info.connection); @@ -692,7 +862,7 @@ abstract public class ManagedServices { appInfo != null ? appInfo.targetSdkVersion : Build.VERSION_CODES.BASE; try { - if (DEBUG) Slog.v(TAG, "binding: " + intent); + Slog.v(TAG, "binding: " + intent); ServiceConnection serviceConnection = new ServiceConnection() { IInterface mService; @@ -719,6 +889,7 @@ abstract public class ManagedServices { @Override public void onServiceDisconnected(ComponentName name) { + mServicesBinding.remove(servicesBindingTag); Slog.v(TAG, getCaption() + " connection lost: " + name); } }; @@ -731,8 +902,8 @@ abstract public class ManagedServices { return; } } catch (SecurityException ex) { + mServicesBinding.remove(servicesBindingTag); Slog.e(TAG, "Unable to bind " + getCaption() + " service: " + intent, ex); - return; } } @@ -749,8 +920,7 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (name.equals(info.component) - && info.userid == userid) { + if (name.equals(info.component) && info.userid == userid) { removeServiceLocked(i); if (info.connection != null) { try { @@ -777,9 +947,8 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (info.service.asBinder() == service.asBinder() - && info.userid == userid) { - if (DEBUG) Slog.d(TAG, "Removing active service " + info.component); + if (info.service.asBinder() == service.asBinder() && info.userid == userid) { + Slog.d(TAG, "Removing active service " + info.component); serviceInfo = removeServiceLocked(i); } } @@ -829,45 +998,6 @@ abstract public class ManagedServices { } } - private class SettingsObserver extends ContentObserver { - private final Uri mSecureSettingsUri = Settings.Secure.getUriFor(mConfig.secureSettingName); - private final Uri mSecondarySettingsUri; - - private SettingsObserver(Handler handler) { - super(handler); - if (mConfig.secondarySettingName != null) { - mSecondarySettingsUri = Settings.Secure.getUriFor(mConfig.secondarySettingName); - } else { - mSecondarySettingsUri = null; - } - } - - private void observe() { - ContentResolver resolver = mContext.getContentResolver(); - resolver.registerContentObserver(mSecureSettingsUri, - false, this, UserHandle.USER_ALL); - if (mSecondarySettingsUri != null) { - resolver.registerContentObserver(mSecondarySettingsUri, - false, this, UserHandle.USER_ALL); - } - update(null); - } - - @Override - public void onChange(boolean selfChange, Uri uri) { - update(uri); - } - - private void update(Uri uri) { - if (uri == null || mSecureSettingsUri.equals(uri) - || uri.equals(mSecondarySettingsUri)) { - if (DEBUG) Slog.d(TAG, "Setting changed: uri=" + uri); - rebindServices(false); - rebuildRestoredPackages(); - } - } - } - public class ManagedServiceInfo implements IBinder.DeathRecipient { public IInterface service; public ComponentName component; @@ -1013,6 +1143,7 @@ abstract public class ManagedServices { public String serviceInterface; public String secureSettingName; public String secondarySettingName; + public String xmlTag; public String bindPermission; public String settingsAction; public int clientLabel; diff --git a/services/core/java/com/android/server/notification/NotificationAdjustmentExtractor.java b/services/core/java/com/android/server/notification/NotificationAdjustmentExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..7c8284589dddd3de2521516be85d4ed7987606a4 --- /dev/null +++ b/services/core/java/com/android/server/notification/NotificationAdjustmentExtractor.java @@ -0,0 +1,48 @@ +/** +* 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.notification; + +import android.content.Context; +import android.util.Slog; + +/** + * Applies adjustments from the group helper and notification assistant + */ +public class NotificationAdjustmentExtractor implements NotificationSignalExtractor { + private static final String TAG = "BadgeExtractor"; + private static final boolean DBG = false; + + + public void initialize(Context ctx, NotificationUsageStats usageStats) { + if (DBG) Slog.d(TAG, "Initializing " + getClass().getSimpleName() + "."); + } + + public RankingReconsideration process(NotificationRecord record) { + if (record == null || record.getNotification() == null) { + if (DBG) Slog.d(TAG, "skipping empty notification"); + return null; + } + + record.applyAdjustments(); + + return null; + } + + @Override + public void setConfig(RankingConfig config) { + // config is not used + } +} diff --git a/services/core/java/com/android/server/notification/NotificationChannelExtractor.java b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java new file mode 100644 index 0000000000000000000000000000000000000000..46ab556ffc4889c1254f67252766adaa1ddee92d --- /dev/null +++ b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java @@ -0,0 +1,55 @@ +/** +* 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.notification; + +import android.content.Context; +import android.util.Slog; + +/** + * Stores the latest notification channel information for this notification + */ +public class NotificationChannelExtractor implements NotificationSignalExtractor { + private static final String TAG = "BadgeExtractor"; + private static final boolean DBG = false; + + private RankingConfig mConfig; + + public void initialize(Context ctx, NotificationUsageStats usageStats) { + if (DBG) Slog.d(TAG, "Initializing " + getClass().getSimpleName() + "."); + } + + public RankingReconsideration process(NotificationRecord record) { + if (record == null || record.getNotification() == null) { + if (DBG) Slog.d(TAG, "skipping empty notification"); + return null; + } + + if (mConfig == null) { + if (DBG) Slog.d(TAG, "missing config"); + return null; + } + + record.updateNotificationChannel(mConfig.getNotificationChannel(record.sbn.getPackageName(), + record.sbn.getUid(), record.getChannel().getId(), false)); + + return null; + } + + @Override + public void setConfig(RankingConfig config) { + mConfig = config; + } +} diff --git a/services/core/java/com/android/server/notification/NotificationIntrusivenessExtractor.java b/services/core/java/com/android/server/notification/NotificationIntrusivenessExtractor.java index 12b29cff5c13ed144b75792850986ebe77077043..91fee4669846b84a7196e0fa8a6c483625b220d1 100644 --- a/services/core/java/com/android/server/notification/NotificationIntrusivenessExtractor.java +++ b/services/core/java/com/android/server/notification/NotificationIntrusivenessExtractor.java @@ -16,14 +16,14 @@ package com.android.server.notification; -import android.app.Notification; import android.app.NotificationManager; import android.content.Context; import android.net.Uri; -import android.service.notification.NotificationListenerService; import android.util.Log; import android.util.Slog; +import com.android.internal.annotations.VisibleForTesting; + /** * This {@link com.android.server.notification.NotificationSignalExtractor} notices noisy * notifications and marks them to get a temporary ranking bump. @@ -34,7 +34,8 @@ public class NotificationIntrusivenessExtractor implements NotificationSignalExt /** Length of time (in milliseconds) that an intrusive or noisy notification will stay at the top of the ranking order, before it falls back to its natural position. */ - private static final long HANG_TIME_MS = 10000; + @VisibleForTesting + static final long HANG_TIME_MS = 10000; public void initialize(Context ctx, NotificationUsageStats usageStats) { if (DBG) Slog.d(TAG, "Initializing " + getClass().getSimpleName() + "."); @@ -46,7 +47,8 @@ public class NotificationIntrusivenessExtractor implements NotificationSignalExt return null; } - if (record.getImportance() >= NotificationManager.IMPORTANCE_DEFAULT) { + if (record.getFreshnessMs(System.currentTimeMillis()) < HANG_TIME_MS + && record.getImportance() >= NotificationManager.IMPORTANCE_DEFAULT) { if (record.getSound() != null && record.getSound() != Uri.EMPTY) { record.setRecentlyIntrusive(true); } diff --git a/services/core/java/com/android/server/notification/NotificationManagerInternal.java b/services/core/java/com/android/server/notification/NotificationManagerInternal.java index 4923b06e9595e28331005f04ed2dee83c27ed4b5..f1476b34388b911a992d50046239fa40a53ec84e 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerInternal.java +++ b/services/core/java/com/android/server/notification/NotificationManagerInternal.java @@ -17,8 +17,10 @@ package com.android.server.notification; import android.app.Notification; +import android.app.NotificationChannel; public interface NotificationManagerInternal { + NotificationChannel getNotificationChannel(String pkg, int uid, String channelId); void enqueueNotification(String pkg, String basePkg, int callingUid, int callingPid, String tag, int id, Notification notification, int userId); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 90b385332e0bb4fed7fef055ad6a4158e39d2988..842ee9135e33f0d5d3832dee924bb0fca35e1207 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -16,11 +16,14 @@ package com.android.server.notification; +import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; import static android.content.pm.PackageManager.PERMISSION_GRANTED; +import static android.os.UserHandle.USER_NULL; import static android.service.notification.NotificationListenerService .NOTIFICATION_CHANNEL_OR_GROUP_ADDED; import static android.service.notification.NotificationListenerService @@ -55,7 +58,6 @@ import static android.service.notification.NotificationListenerService.TRIM_LIGH import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_TOAST; -import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; import android.Manifest; import android.annotation.NonNull; @@ -88,16 +90,15 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ParceledListSlice; import android.content.res.Resources; import android.database.ContentObserver; +import android.media.AudioAttributes; import android.media.AudioManager; import android.media.AudioManagerInternal; import android.media.IRingtonePlayer; -import android.media.ToneGenerator; import android.net.Uri; import android.os.Binder; import android.os.Build; @@ -111,7 +112,10 @@ import android.os.Looper; import android.os.Message; import android.os.Process; import android.os.RemoteException; +import android.os.ResultReceiver; import android.os.ServiceManager; +import android.os.ShellCallback; +import android.os.ShellCommand; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserHandle; @@ -156,11 +160,13 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.internal.os.BackgroundThread; import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.Preconditions; +import com.android.internal.util.XmlUtils; import com.android.server.DeviceIdleController; import com.android.server.EventLogTags; import com.android.server.LocalServices; @@ -184,22 +190,22 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileDescriptor; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; +import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import java.util.Objects; +import java.util.Set; import java.util.concurrent.TimeUnit; /** {@hide} */ @@ -265,6 +271,7 @@ public class NotificationManagerService extends SystemService { private static final String EXTRA_KEY = "key"; private IActivityManager mAm; + private ActivityManager mActivityManager; private IPackageManager mPackageManager; private PackageManager mPackageManagerClient; AudioManager mAudioManager; @@ -274,9 +281,10 @@ public class NotificationManagerService extends SystemService { private WindowManagerInternal mWindowManagerInternal; private AlarmManager mAlarmManager; private ICompanionDeviceManager mCompanionManager; + private AccessibilityManager mAccessibilityManager; final IBinder mForegroundToken = new Binder(); - private Handler mHandler; + private WorkerHandler mHandler; private final HandlerThread mRankingThread = new HandlerThread("ranker", Process.THREAD_PRIORITY_BACKGROUND); @@ -293,35 +301,32 @@ public class NotificationManagerService extends SystemService { private String mVibrateNotificationKey; private final SparseArray> mListenersDisablingEffects = - new SparseArray>(); - private List mEffectsSuppressors = new ArrayList(); + new SparseArray<>(); + private List mEffectsSuppressors = new ArrayList<>(); private int mListenerHints; // right now, all hints are global private int mInterruptionFilter = NotificationListenerService.INTERRUPTION_FILTER_UNKNOWN; // for enabling and disabling notification pulse behavior private boolean mScreenOn = true; - private boolean mInCall = false; + protected boolean mInCall = false; private boolean mNotificationPulseEnabled; - // for generating notification tones in-call - private ToneGenerator mInCallToneGenerator; - private final Object mInCallToneGeneratorLock = new Object(); + private Uri mInCallNotificationUri; + private AudioAttributes mInCallNotificationAudioAttributes; + private float mInCallNotificationVolume; // used as a mutex for access to all active notifications & listeners final Object mNotificationLock = new Object(); @GuardedBy("mNotificationLock") - final ArrayList mNotificationList = - new ArrayList(); + final ArrayList mNotificationList = new ArrayList<>(); @GuardedBy("mNotificationLock") - final ArrayMap mNotificationsByKey = - new ArrayMap(); + final ArrayMap mNotificationsByKey = new ArrayMap<>(); @GuardedBy("mNotificationLock") final ArrayList mEnqueuedNotifications = new ArrayList<>(); @GuardedBy("mNotificationLock") final ArrayMap> mAutobundledSummaries = new ArrayMap<>(); - final ArrayList mToastQueue = new ArrayList(); + final ArrayList mToastQueue = new ArrayList<>(); final ArrayMap mSummaryByGroupKey = new ArrayMap<>(); - final PolicyAccess mPolicyAccess = new PolicyAccess(); // The last key in this list owns the hardware. ArrayList mLights = new ArrayList<>(); @@ -343,7 +348,7 @@ public class NotificationManagerService extends SystemService { private final UserProfiles mUserProfiles = new UserProfiles(); private NotificationListeners mListeners; - private NotificationAssistants mNotificationAssistants; + private NotificationAssistants mAssistants; private ConditionProviders mConditionProviders; private NotificationUsageStats mUsageStats; @@ -406,14 +411,74 @@ public class NotificationManagerService extends SystemService { } - private void readPolicyXml(InputStream stream, boolean forRestore) + protected void readDefaultApprovedServices(int userId) { + String defaultListenerAccess = getContext().getResources().getString( + com.android.internal.R.string.config_defaultListenerAccessPackages); + if (defaultListenerAccess != null) { + for (String whitelisted : + defaultListenerAccess.split(ManagedServices.ENABLED_SERVICES_SEPARATOR)) { + // Gather all notification listener components for candidate pkgs. + Set approvedListeners = + mListeners.queryPackageForServices(whitelisted, + PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userId); + for (ComponentName cn : approvedListeners) { + try { + getBinderService().setNotificationListenerAccessGrantedForUser(cn, + userId, true); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + } + String defaultDndAccess = getContext().getResources().getString( + com.android.internal.R.string.config_defaultDndAccessPackages); + if (defaultListenerAccess != null) { + for (String whitelisted : + defaultDndAccess.split(ManagedServices.ENABLED_SERVICES_SEPARATOR)) { + try { + getBinderService().setNotificationPolicyAccessGranted(whitelisted, true); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + } + + void readPolicyXml(InputStream stream, boolean forRestore) throws XmlPullParserException, NumberFormatException, IOException { final XmlPullParser parser = Xml.newPullParser(); parser.setInput(stream, StandardCharsets.UTF_8.name()); + XmlUtils.beginDocument(parser, TAG_NOTIFICATION_POLICY); + boolean migratedManagedServices = false; + int outerDepth = parser.getDepth(); + while (XmlUtils.nextElementWithin(parser, outerDepth)) { + if (ZenModeConfig.ZEN_TAG.equals(parser.getName())) { + mZenModeHelper.readXml(parser, forRestore); + } else if (RankingHelper.TAG_RANKING.equals(parser.getName())){ + mRankingHelper.readXml(parser, forRestore); + } + // No non-system managed services are allowed on low ram devices + if (!ActivityManager.isLowRamDeviceStatic()) { + if (mListeners.getConfig().xmlTag.equals(parser.getName())) { + mListeners.readXml(parser); + migratedManagedServices = true; + } else if (mAssistants.getConfig().xmlTag.equals(parser.getName())) { + mAssistants.readXml(parser); + migratedManagedServices = true; + } else if (mConditionProviders.getConfig().xmlTag.equals(parser.getName())) { + mConditionProviders.readXml(parser); + migratedManagedServices = true; + } + } + } - while (parser.next() != END_DOCUMENT) { - mZenModeHelper.readXml(parser, forRestore); - mRankingHelper.readXml(parser, forRestore); + if (!migratedManagedServices) { + mListeners.migrateToXml(); + mAssistants.migrateToXml(); + mConditionProviders.migrateToXml(); + savePolicyFile(); } } @@ -421,12 +486,14 @@ public class NotificationManagerService extends SystemService { if (DBG) Slog.d(TAG, "loadPolicyFile"); synchronized (mPolicyFile) { - FileInputStream infile = null; + InputStream infile = null; try { infile = mPolicyFile.openRead(); readPolicyXml(infile, false /*forRestore*/); } catch (FileNotFoundException e) { // No data yet + // Load default managed services approvals + readDefaultApprovedServices(UserHandle.USER_SYSTEM); } catch (IOException e) { Log.wtf(TAG, "Unable to read notification policy", e); } catch (NumberFormatException e) { @@ -474,6 +541,9 @@ public class NotificationManagerService extends SystemService { out.attribute(null, ATTR_VERSION, Integer.toString(DB_VERSION)); mZenModeHelper.writeXml(out, forBackup); mRankingHelper.writeXml(out, forBackup); + mListeners.writeXml(out, forBackup); + mAssistants.writeXml(out, forBackup); + mConditionProviders.writeXml(out, forBackup); out.endTag(null, TAG_NOTIFICATION_POLICY); out.endDocument(); } @@ -488,7 +558,7 @@ public class NotificationManagerService extends SystemService { { final int pid; final String pkg; - final ITransientNotification callback; + ITransientNotification callback; int duration; Binder token; @@ -505,6 +575,10 @@ public class NotificationManagerService extends SystemService { this.duration = duration; } + void update(ITransientNotification callback) { + this.callback = callback; + } + void dump(PrintWriter pw, String prefix, DumpFilter filter) { if (filter != null && !filter.matches(pkg)) return; pw.println(prefix + this); @@ -685,9 +759,12 @@ public class NotificationManagerService extends SystemService { if (r != null) { r.stats.onExpansionChanged(userAction, expanded); final long now = System.currentTimeMillis(); - MetricsLogger.action(r.getLogMaker(now) - .setCategory(MetricsEvent.NOTIFICATION_ITEM) - .setType(MetricsEvent.TYPE_DETAIL)); + if (userAction) { + MetricsLogger.action(r.getLogMaker(now) + .setCategory(MetricsEvent.NOTIFICATION_ITEM) + .setType(expanded ? MetricsEvent.TYPE_DETAIL + : MetricsEvent.TYPE_COLLAPSE)); + } EventLogTags.writeNotificationExpansion(key, userAction ? 1 : 0, expanded ? 1 : 0, r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now)); @@ -729,6 +806,36 @@ public class NotificationManagerService extends SystemService { updateLightsLocked(); } + protected final BroadcastReceiver mLocaleChangeReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_LOCALE_CHANGED.equals(intent.getAction())) { + mZenModeHelper.updateDefaultZenRules(); + mRankingHelper.onLocaleChanged(context, ActivityManager.getCurrentUser()); + } + } + }; + + private final BroadcastReceiver mRestoreReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_SETTING_RESTORED.equals(intent.getAction())) { + try { + String element = intent.getStringExtra(Intent.EXTRA_SETTING_NAME); + String newValue = intent.getStringExtra(Intent.EXTRA_SETTING_NEW_VALUE); + int restoredFromSdkInt = intent.getIntExtra( + Intent.EXTRA_SETTING_RESTORED_FROM_SDK_INT, 0); + mListeners.onSettingRestored( + element, newValue, restoredFromSdkInt, getSendingUserId()); + mConditionProviders.onSettingRestored( + element, newValue, restoredFromSdkInt, getSendingUserId()); + } catch (Exception e) { + Slog.wtf(TAG, "Cannot restore managed services from settings", e); + } + } + } + }; + private final BroadcastReceiver mNotificationTimeoutReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -830,9 +937,9 @@ public class NotificationManagerService extends SystemService { } } } - mListeners.onPackagesChanged(removingPackage, pkgList); - mNotificationAssistants.onPackagesChanged(removingPackage, pkgList); - mConditionProviders.onPackagesChanged(removingPackage, pkgList); + mListeners.onPackagesChanged(removingPackage, pkgList, uidList); + mAssistants.onPackagesChanged(removingPackage, pkgList, uidList); + mConditionProviders.onPackagesChanged(removingPackage, pkgList, uidList); mRankingHelper.onPackagesChanged(removingPackage, changeUserId, pkgList, uidList); savePolicyFile(); } @@ -856,30 +963,6 @@ public class NotificationManagerService extends SystemService { mInCall = TelephonyManager.EXTRA_STATE_OFFHOOK .equals(intent.getStringExtra(TelephonyManager.EXTRA_STATE)); updateNotificationPulse(); - synchronized (mInCallToneGeneratorLock) { - if (mInCall) { - if (mInCallToneGenerator == null) { - int relativeToneVolume = getContext().getResources().getInteger( - R.integer.config_inCallNotificationVolumeRelative); - if (relativeToneVolume < ToneGenerator.MIN_VOLUME - || relativeToneVolume > ToneGenerator.MAX_VOLUME) { - relativeToneVolume = ToneGenerator.MAX_VOLUME; - } - try { - mInCallToneGenerator = new ToneGenerator( - AudioManager.STREAM_VOICE_CALL, relativeToneVolume); - } catch (RuntimeException e) { - Log.e(TAG, "Error creating local tone generator: " + e); - mInCallToneGenerator = null; - } - } - } else { - if (mInCallToneGenerator != null) { - mInCallToneGenerator.release(); - mInCallToneGenerator = null; - } - } - } } else if (action.equals(Intent.ACTION_USER_STOPPED)) { int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); if (userHandle >= 0) { @@ -896,27 +979,36 @@ public class NotificationManagerService extends SystemService { // turn off LED when user passes through lock screen mNotificationLight.turnOff(); } else if (action.equals(Intent.ACTION_USER_SWITCHED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); // reload per-user settings mSettingsObserver.update(null); mUserProfiles.updateCache(context); // Refresh managed services mConditionProviders.onUserSwitched(user); mListeners.onUserSwitched(user); - mNotificationAssistants.onUserSwitched(user); + mAssistants.onUserSwitched(user); mZenModeHelper.onUserSwitched(user); } else if (action.equals(Intent.ACTION_USER_ADDED)) { - mUserProfiles.updateCache(context); + final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); + if (userId != USER_NULL) { + mUserProfiles.updateCache(context); + if (!mUserProfiles.isManagedProfile(userId)) { + readDefaultApprovedServices(userId); + } + } } else if (action.equals(Intent.ACTION_USER_REMOVED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mZenModeHelper.onUserRemoved(user); mRankingHelper.onUserRemoved(user); + mListeners.onUserRemoved(user); + mConditionProviders.onUserRemoved(user); + mAssistants.onUserRemoved(user); savePolicyFile(); } else if (action.equals(Intent.ACTION_USER_UNLOCKED)) { - final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); + final int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, USER_NULL); mConditionProviders.onUserUnlocked(user); mListeners.onUserUnlocked(user); - mNotificationAssistants.onUserUnlocked(user); + mAssistants.onUserUnlocked(user); mZenModeHelper.onUserUnlocked(user); } } @@ -970,7 +1062,7 @@ public class NotificationManagerService extends SystemService { } private SettingsObserver mSettingsObserver; - private ZenModeHelper mZenModeHelper; + protected ZenModeHelper mZenModeHelper; static long[] getLongArray(Resources r, int resid, int maxlen, long[] def) { int[] ar = r.getIntArray(resid); @@ -1024,7 +1116,7 @@ public class NotificationManagerService extends SystemService { count--; } if (posted.sbn.isGroup() && posted.getNotification().isGroupSummary()) { - count --; + count--; } } @@ -1032,6 +1124,13 @@ public class NotificationManagerService extends SystemService { } } + void clearNotifications() { + mEnqueuedNotifications.clear(); + mNotificationList.clear(); + mNotificationsByKey.clear(); + mSummaryByGroupKey.clear(); + } + @VisibleForTesting void addNotification(NotificationRecord r) { mNotificationList.add(r); @@ -1046,13 +1145,19 @@ public class NotificationManagerService extends SystemService { mEnqueuedNotifications.add(r); } + @VisibleForTesting + NotificationRecord getNotificationRecord(String key) { + return mNotificationsByKey.get(key); + } + + @VisibleForTesting void setSystemReady(boolean systemReady) { mSystemReady = systemReady; } @VisibleForTesting - void setHandler(Handler handler) { + void setHandler(WorkerHandler handler) { mHandler = handler; } @@ -1071,6 +1176,11 @@ public class NotificationManagerService extends SystemService { mRankingHelper = rankingHelper; } + @VisibleForTesting + void setRankingHandler(RankingHandler rankingHandler) { + mRankingHandler = rankingHandler; + } + @VisibleForTesting void setIsTelevision(boolean isTelevision) { mIsTelevision = isTelevision; @@ -1081,17 +1191,28 @@ public class NotificationManagerService extends SystemService { mUsageStats = us; } + @VisibleForTesting + void setAccessibilityManager(AccessibilityManager am) { + mAccessibilityManager = am; + } + + // TODO: All tests should use this init instead of the one-off setters above. @VisibleForTesting - void init(Looper looper, IPackageManager packageManager, PackageManager packageManagerClient, + void init(Looper looper, IPackageManager packageManager, + PackageManager packageManagerClient, LightsManager lightsManager, NotificationListeners notificationListeners, + NotificationAssistants notificationAssistants, ConditionProviders conditionProviders, ICompanionDeviceManager companionManager, SnoozeHelper snoozeHelper, - NotificationUsageStats usageStats) { + NotificationUsageStats usageStats, AtomicFile policyFile, + ActivityManager activityManager, GroupHelper groupHelper) { Resources resources = getContext().getResources(); mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(), Settings.Global.MAX_NOTIFICATION_ENQUEUE_RATE, DEFAULT_MAX_NOTIFICATION_ENQUEUE_RATE); + mAccessibilityManager = + (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); mAm = ActivityManager.getService(); mPackageManager = packageManager; mPackageManagerClient = packageManagerClient; @@ -1100,6 +1221,7 @@ public class NotificationManagerService extends SystemService { mAppUsageStats = LocalServices.getService(UsageStatsManagerInternal.class); mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); mCompanionManager = companionManager; + mActivityManager = activityManager; mHandler = new WorkerHandler(looper); mRankingThread.start(); @@ -1112,11 +1234,11 @@ public class NotificationManagerService extends SystemService { mUsageStats = usageStats; mRankingHandler = new RankingHandlerWorker(mRankingThread.getLooper()); mRankingHelper = new RankingHelper(getContext(), - getContext().getPackageManager(), + mPackageManagerClient, mRankingHandler, mUsageStats, extractorNames); - mConditionProviders = new ConditionProviders(getContext(), mHandler, mUserProfiles); + mConditionProviders = conditionProviders; mZenModeHelper = new ZenModeHelper(getContext(), mHandler.getLooper(), mConditionProviders); mZenModeHelper.addCallback(new ZenModeHelper.Callback() { @Override @@ -1142,46 +1264,16 @@ public class NotificationManagerService extends SystemService { } }); mSnoozeHelper = snoozeHelper; - mGroupHelper = new GroupHelper(new GroupHelper.Callback() { - @Override - public void addAutoGroup(String key) { - synchronized (mNotificationLock) { - addAutogroupKeyLocked(key); - } - mRankingHandler.requestSort(false); - } - - @Override - public void removeAutoGroup(String key) { - synchronized (mNotificationLock) { - removeAutogroupKeyLocked(key); - } - mRankingHandler.requestSort(false); - } - - @Override - public void addAutoGroupSummary(int userId, String pkg, String triggeringKey) { - createAutoGroupSummary(userId, pkg, triggeringKey); - } - - @Override - public void removeAutoGroupSummary(int userId, String pkg) { - synchronized (mNotificationLock) { - clearAutogroupSummaryLocked(userId, pkg); - } - } - }); - - final File systemDir = new File(Environment.getDataDirectory(), "system"); - mPolicyFile = new AtomicFile(new File(systemDir, "notification_policy.xml")); - - loadPolicyFile(); + mGroupHelper = groupHelper; // This is a ManagedServices object that keeps track of the listeners. mListeners = notificationListeners; // This is a MangedServices object that keeps track of the assistant. - mNotificationAssistants = new NotificationAssistants(); + mAssistants = notificationAssistants; + + mPolicyFile = policyFile; + loadPolicyFile(); mStatusBar = getLocalService(StatusBarManagerInternal.class); if (mStatusBar != null) { @@ -1195,6 +1287,13 @@ public class NotificationManagerService extends SystemService { R.array.config_notificationFallbackVibePattern, VIBRATE_PATTERN_MAXLEN, DEFAULT_VIBRATE_PATTERN); + mInCallNotificationUri = Uri.parse("file://" + + resources.getString(R.string.config_inCallNotificationSound)); + mInCallNotificationAudioAttributes = new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) + .build(); + mInCallNotificationVolume = resources.getFloat(R.dimen.config_inCallNotificationVolume); mUseAttentionLight = resources.getBoolean(R.bool.config_useAttentionLight); @@ -1239,9 +1338,18 @@ public class NotificationManagerService extends SystemService { } }, mUserProfiles); - init(Looper.myLooper(), AppGlobals.getPackageManager(), getContext().getPackageManager(), - getLocalService(LightsManager.class), new NotificationListeners(), - null, snoozeHelper, new NotificationUsageStats(getContext())); + final File systemDir = new File(Environment.getDataDirectory(), "system"); + + init(Looper.myLooper(), + AppGlobals.getPackageManager(), getContext().getPackageManager(), + getLocalService(LightsManager.class), + new NotificationListeners(AppGlobals.getPackageManager()), + new NotificationAssistants(AppGlobals.getPackageManager()), + new ConditionProviders(getContext(), mUserProfiles, AppGlobals.getPackageManager()), + null, snoozeHelper, new NotificationUsageStats(getContext()), + new AtomicFile(new File(systemDir, "notification_policy.xml")), + (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE), + getGroupHelper()); // register for various Intents IntentFilter filter = new IntentFilter(); @@ -1280,10 +1388,46 @@ public class NotificationManagerService extends SystemService { timeoutFilter.addDataScheme(SCHEME_TIMEOUT); getContext().registerReceiver(mNotificationTimeoutReceiver, timeoutFilter); + IntentFilter settingsRestoredFilter = new IntentFilter(Intent.ACTION_SETTING_RESTORED); + getContext().registerReceiver(mRestoreReceiver, settingsRestoredFilter); + + IntentFilter localeChangedFilter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED); + getContext().registerReceiver(mLocaleChangeReceiver, localeChangedFilter); + publishBinderService(Context.NOTIFICATION_SERVICE, mService); publishLocalService(NotificationManagerInternal.class, mInternalService); } + private GroupHelper getGroupHelper() { + return new GroupHelper(new GroupHelper.Callback() { + @Override + public void addAutoGroup(String key) { + synchronized (mNotificationLock) { + addAutogroupKeyLocked(key); + } + } + + @Override + public void removeAutoGroup(String key) { + synchronized (mNotificationLock) { + removeAutogroupKeyLocked(key); + } + } + + @Override + public void addAutoGroupSummary(int userId, String pkg, String triggeringKey) { + createAutoGroupSummary(userId, pkg, triggeringKey); + } + + @Override + public void removeAutoGroupSummary(int userId, String pkg) { + synchronized (mNotificationLock) { + clearAutogroupSummaryLocked(userId, pkg); + } + } + }); + } + private void sendRegisteredOnlyBroadcast(String action) { getContext().sendBroadcastAsUser(new Intent(action) .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), UserHandle.ALL, null); @@ -1305,7 +1449,7 @@ public class NotificationManagerService extends SystemService { // bind to listener services. mSettingsObserver.observe(); mListeners.onBootPhaseAppsCanStart(); - mNotificationAssistants.onBootPhaseAppsCanStart(); + mAssistants.onBootPhaseAppsCanStart(); mConditionProviders.onBootPhaseAppsCanStart(); } } @@ -1335,33 +1479,29 @@ public class NotificationManagerService extends SystemService { if (channel.getImportance() == NotificationManager.IMPORTANCE_NONE) { // cancel cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true, - UserHandle.getUserId(Binder.getCallingUid()), REASON_CHANNEL_BANNED, + UserHandle.getUserId(uid), REASON_CHANNEL_BANNED, null); + if (isUidSystemOrPhone(uid)) { + int[] profileIds = mUserProfiles.getCurrentProfileIds(); + int N = profileIds.length; + for (int i = 0; i < N; i++) { + int profileId = profileIds[i]; + cancelAllNotificationsInt(MY_UID, MY_PID, pkg, channel.getId(), 0, 0, true, + profileId, REASON_CHANNEL_BANNED, + null); + } + } } - mRankingHelper.updateNotificationChannel(pkg, uid, channel); - - final NotificationChannel modifiedChannel = - mRankingHelper.getNotificationChannel(pkg, uid, channel.getId(), false); + mRankingHelper.updateNotificationChannel(pkg, uid, channel, true); if (!fromListener) { + final NotificationChannel modifiedChannel = + mRankingHelper.getNotificationChannel(pkg, uid, channel.getId(), false); mListeners.notifyNotificationChannelChanged( pkg, UserHandle.getUserHandleForUid(uid), modifiedChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED); } - synchronized (mNotificationLock) { - final int N = mNotificationList.size(); - for (int i = N - 1; i >= 0; --i) { - NotificationRecord r = mNotificationList.get(i); - if (r.sbn.getPackageName().equals(pkg) - && r.sbn.getUid() == uid - && channel.getId() != null - && channel.getId().equals(r.getChannel().getId())) { - r.updateNotificationChannel(modifiedChannel); - } - } - } - mRankingHandler.requestSort(true); savePolicyFile(); } @@ -1488,7 +1628,6 @@ public class NotificationManagerService extends SystemService { Slog.e(TAG, "Not doing toast. pkg=" + pkg + " callback=" + callback); return ; } - final boolean isSystemToast = isCallerSystemOrPhone() || ("android".equals(pkg)); final boolean isPackageSuspended = isPackageSuspendedForUser(pkg, Binder.getCallingUid()); @@ -1508,38 +1647,28 @@ public class NotificationManagerService extends SystemService { long callingId = Binder.clearCallingIdentity(); try { ToastRecord record; - int index = indexOfToastLocked(pkg, callback); - // If it's already in the queue, we update it in place, we don't - // move it to the end of the queue. + int index; + // All packages aside from the android package can enqueue one toast at a time + if (!isSystemToast) { + index = indexOfToastPackageLocked(pkg); + } else { + index = indexOfToastLocked(pkg, callback); + } + + // If the package already has a toast, we update its toast + // in the queue, we don't move it to the end of the queue. if (index >= 0) { record = mToastQueue.get(index); record.update(duration); + record.update(callback); } else { - // Limit the number of toasts that any given package except the android - // package can enqueue. Prevents DOS attacks and deals with leaks. - if (!isSystemToast) { - int count = 0; - final int N = mToastQueue.size(); - for (int i=0; i= MAX_PACKAGE_NOTIFICATIONS) { - Slog.e(TAG, "Package has already posted " + count - + " toasts. Not showing more. Package=" + pkg); - return; - } - } - } - } - Binder token = new Binder(); mWindowManagerInternal.addWindowToken(token, TYPE_TOAST, DEFAULT_DISPLAY); record = new ToastRecord(callingPid, pkg, callback, duration, token); mToastQueue.add(record); index = mToastQueue.size() - 1; - keepProcessAliveIfNeededLocked(callingPid); } + keepProcessAliveIfNeededLocked(callingPid); // If it's at index 0, it's the current toast. It doesn't matter if it's // new or just been updated. Call back and tell it to show itself. // If the callback fails, this will remove it from the list, so don't @@ -1842,17 +1971,20 @@ public class NotificationManagerService extends SystemService { cancelAllNotificationsInt(MY_UID, MY_PID, packageName, null, 0, 0, true, UserHandle.getUserId(Binder.getCallingUid()), REASON_CHANNEL_BANNED, null); + final String[] packages = new String[] {packageName}; + final int[] uids = new int[] {uid}; + // Listener & assistant - mListeners.onPackagesChanged(true, new String[] {packageName}); - mNotificationAssistants.onPackagesChanged(true, new String[] {packageName}); + mListeners.onPackagesChanged(true, packages, uids); + mAssistants.onPackagesChanged(true, packages, uids); // Zen - mConditionProviders.onPackagesChanged(true, new String[] {packageName}); + mConditionProviders.onPackagesChanged(true, packages, uids); // Reset notification preferences if (!fromApp) { - mRankingHelper.onPackagesChanged(true, UserHandle.getCallingUserId(), - new String[]{packageName}, new int[]{uid}); + mRankingHelper.onPackagesChanged( + true, UserHandle.getCallingUserId(), packages, uids); } savePolicyFile(); @@ -1937,9 +2069,7 @@ public class NotificationManagerService extends SystemService { private StatusBarNotification sanitizeSbn(String pkg, int userId, StatusBarNotification sbn) { - if (sbn.getPackageName().equals(pkg) && sbn.getUserId() == userId - && (sbn.getNotification().flags - & Notification.FLAG_AUTOGROUP_SUMMARY) == 0) { + if (sbn.getPackageName().equals(pkg) && sbn.getUserId() == userId) { // We could pass back a cloneLight() but clients might get confused and // try to send this thing back to notify() again, which would not work // very well. @@ -2050,8 +2180,8 @@ public class NotificationManagerService extends SystemService { long identity = Binder.clearCallingIdentity(); try { ManagedServices manager = - mNotificationAssistants.isComponentEnabledForCurrentProfiles(component) - ? mNotificationAssistants + mAssistants.isComponentEnabledForCurrentProfiles(component) + ? mAssistants : mListeners; manager.setComponentState(component, true); } finally { @@ -2171,7 +2301,7 @@ public class NotificationManagerService extends SystemService { try { synchronized (mNotificationLock) { final ManagedServiceInfo info = - mNotificationAssistants.checkServiceTokenLocked(token); + mAssistants.checkServiceTokenLocked(token); unsnoozeNotificationInt(key, info); } } finally { @@ -2496,7 +2626,8 @@ public class NotificationManagerService extends SystemService { String[] packages = getContext().getPackageManager().getPackagesForUid(uid); final int packageCount = packages.length; for (int i = 0; i < packageCount; i++) { - if (checkPolicyAccess(packages[i])) { + if (mConditionProviders.isPackageOrComponentAllowed( + packages[i], UserHandle.getUserId(uid))) { accessAllowed = true; } } @@ -2519,7 +2650,8 @@ public class NotificationManagerService extends SystemService { } private boolean checkPackagePolicyAccess(String pkg) { - return mPolicyAccess.isPackageGranted(pkg); + return mConditionProviders.isPackageOrComponentAllowed( + pkg, getCallingUserHandle().getIdentifier()); } private boolean checkPolicyAccess(String pkg) { @@ -2629,26 +2761,23 @@ public class NotificationManagerService extends SystemService { return checkPolicyAccess(pkg); } - @Override - public String[] getPackagesRequestingNotificationPolicyAccess() - throws RemoteException { - enforceSystemOrSystemUI("request policy access packages"); - final long identity = Binder.clearCallingIdentity(); - try { - return mPolicyAccess.getRequestingPackages(); - } finally { - Binder.restoreCallingIdentity(identity); - } - } - @Override public void setNotificationPolicyAccessGranted(String pkg, boolean granted) throws RemoteException { - enforceSystemOrSystemUI("grant notification policy access"); + checkCallerIsSystemOrShell(); final long identity = Binder.clearCallingIdentity(); try { - synchronized (mNotificationLock) { - mPolicyAccess.put(pkg, granted); + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled( + pkg, getCallingUserHandle().getIdentifier(), true, granted); + + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + .setPackage(pkg) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); + + savePolicyFile(); } } finally { Binder.restoreCallingIdentity(identity); @@ -2677,13 +2806,117 @@ public class NotificationManagerService extends SystemService { } } + @Override + public List getEnabledNotificationListenerPackages() { + checkCallerIsSystem(); + return mListeners.getAllowedPackages(getCallingUserHandle().getIdentifier()); + } + + @Override + public List getEnabledNotificationListeners(int userId) { + checkCallerIsSystem(); + return mListeners.getAllowedComponents(userId); + } + + @Override + public boolean isNotificationListenerAccessGranted(ComponentName listener) { + Preconditions.checkNotNull(listener); + checkCallerIsSystemOrSameApp(listener.getPackageName()); + return mListeners.isPackageOrComponentAllowed(listener.flattenToString(), + getCallingUserHandle().getIdentifier()); + } + + @Override + public boolean isNotificationListenerAccessGrantedForUser(ComponentName listener, + int userId) { + Preconditions.checkNotNull(listener); + checkCallerIsSystem(); + return mListeners.isPackageOrComponentAllowed(listener.flattenToString(), + userId); + } + + @Override + public boolean isNotificationAssistantAccessGranted(ComponentName assistant) { + Preconditions.checkNotNull(assistant); + checkCallerIsSystemOrSameApp(assistant.getPackageName()); + return mAssistants.isPackageOrComponentAllowed(assistant.flattenToString(), + getCallingUserHandle().getIdentifier()); + } + + @Override + public void setNotificationListenerAccessGranted(ComponentName listener, + boolean granted) throws RemoteException { + setNotificationListenerAccessGrantedForUser( + listener, getCallingUserHandle().getIdentifier(), granted); + } + + @Override + public void setNotificationAssistantAccessGranted(ComponentName assistant, + boolean granted) throws RemoteException { + setNotificationAssistantAccessGrantedForUser( + assistant, getCallingUserHandle().getIdentifier(), granted); + } + + @Override + public void setNotificationListenerAccessGrantedForUser(ComponentName listener, int userId, + boolean granted) throws RemoteException { + Preconditions.checkNotNull(listener); + checkCallerIsSystemOrShell(); + final long identity = Binder.clearCallingIdentity(); + try { + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled(listener.flattenToString(), + userId, false, granted); + mListeners.setPackageOrComponentEnabled(listener.flattenToString(), + userId, true, granted); + + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + + .setPackage(listener.getPackageName()) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); + + savePolicyFile(); + } + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + @Override + public void setNotificationAssistantAccessGrantedForUser(ComponentName assistant, + int userId, boolean granted) throws RemoteException { + Preconditions.checkNotNull(assistant); + checkCallerIsSystemOrShell(); + final long identity = Binder.clearCallingIdentity(); + try { + if (!mActivityManager.isLowRamDevice()) { + mConditionProviders.setPackageOrComponentEnabled(assistant.flattenToString(), + userId, false, granted); + mAssistants.setPackageOrComponentEnabled(assistant.flattenToString(), + userId, true, granted); + + getContext().sendBroadcastAsUser(new Intent( + NotificationManager.ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) + .setPackage(assistant.getPackageName()) + .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), + getCallingUserHandle(), null); + + savePolicyFile(); + } + } finally { + Binder.restoreCallingIdentity(identity); + } + } + @Override public void applyEnqueuedAdjustmentFromAssistant(INotificationListener token, Adjustment adjustment) throws RemoteException { final long identity = Binder.clearCallingIdentity(); try { synchronized (mNotificationLock) { - mNotificationAssistants.checkServiceTokenLocked(token); + mAssistants.checkServiceTokenLocked(token); int N = mEnqueuedNotifications.size(); for (int i = 0; i < N; i++) { final NotificationRecord n = mEnqueuedNotifications.get(i); @@ -2705,11 +2938,11 @@ public class NotificationManagerService extends SystemService { final long identity = Binder.clearCallingIdentity(); try { synchronized (mNotificationLock) { - mNotificationAssistants.checkServiceTokenLocked(token); + mAssistants.checkServiceTokenLocked(token); NotificationRecord n = mNotificationsByKey.get(adjustment.getKey()); applyAdjustment(n, adjustment); } - mRankingHandler.requestSort(true); + mRankingHandler.requestSort(); } finally { Binder.restoreCallingIdentity(identity); } @@ -2722,13 +2955,13 @@ public class NotificationManagerService extends SystemService { final long identity = Binder.clearCallingIdentity(); try { synchronized (mNotificationLock) { - mNotificationAssistants.checkServiceTokenLocked(token); + mAssistants.checkServiceTokenLocked(token); for (Adjustment adjustment : adjustments) { NotificationRecord n = mNotificationsByKey.get(adjustment.getKey()); applyAdjustment(n, adjustment); } } - mRankingHandler.requestSort(true); + mRankingHandler.requestSort(); } finally { Binder.restoreCallingIdentity(identity); } @@ -2793,41 +3026,57 @@ public class NotificationManagerService extends SystemService { } return uid; } + + @Override + public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err, + String[] args, ShellCallback callback, ResultReceiver resultReceiver) + throws RemoteException { + new ShellCmd().exec(this, in, out, err, args, callback, resultReceiver); + } }; - private void applyAdjustment(NotificationRecord n, Adjustment adjustment) { - if (n == null) { + private void applyAdjustment(NotificationRecord r, Adjustment adjustment) { + if (r == null) { return; } if (adjustment.getSignals() != null) { Bundle.setDefusable(adjustment.getSignals(), true); - final ArrayList people = - adjustment.getSignals().getStringArrayList(Adjustment.KEY_PEOPLE); - final ArrayList snoozeCriterionList = - adjustment.getSignals().getParcelableArrayList(Adjustment.KEY_SNOOZE_CRITERIA); - n.setPeopleOverride(people); - n.setSnoozeCriteria(snoozeCriterionList); + r.addAdjustment(adjustment); } } @GuardedBy("mNotificationLock") - private void addAutogroupKeyLocked(String key) { - NotificationRecord n = mNotificationsByKey.get(key); - if (n == null) { + void addAutogroupKeyLocked(String key) { + NotificationRecord r = mNotificationsByKey.get(key); + if (r == null) { return; } - n.setOverrideGroupKey(GroupHelper.AUTOGROUP_KEY); - EventLogTags.writeNotificationAutogrouped(key); + if (r.sbn.getOverrideGroupKey() == null) { + addAutoGroupAdjustment(r, GroupHelper.AUTOGROUP_KEY); + EventLogTags.writeNotificationAutogrouped(key); + mRankingHandler.requestSort(); + } } @GuardedBy("mNotificationLock") - private void removeAutogroupKeyLocked(String key) { - NotificationRecord n = mNotificationsByKey.get(key); - if (n == null) { + void removeAutogroupKeyLocked(String key) { + NotificationRecord r = mNotificationsByKey.get(key); + if (r == null) { return; } - n.setOverrideGroupKey(null); - EventLogTags.writeNotificationUnautogrouped(key); + if (r.sbn.getOverrideGroupKey() != null) { + addAutoGroupAdjustment(r, null); + EventLogTags.writeNotificationUnautogrouped(key); + mRankingHandler.requestSort(); + } + } + + private void addAutoGroupAdjustment(NotificationRecord r, String overrideGroupKey) { + Bundle signals = new Bundle(); + signals.putString(Adjustment.KEY_GROUP_KEY, overrideGroupKey); + Adjustment adjustment = + new Adjustment(r.sbn.getPackageName(), r.getKey(), signals, "", r.sbn.getUserId()); + r.addAdjustment(adjustment); } // Clears the 'fake' auto-group summary. @@ -2839,11 +3088,17 @@ public class NotificationManagerService extends SystemService { final NotificationRecord removed = findNotificationByKeyLocked(summaries.remove(pkg)); if (removed != null) { boolean wasPosted = removeFromNotificationListsLocked(removed); - cancelNotificationLocked(removed, false, REASON_UNAUTOBUNDLED, wasPosted); + cancelNotificationLocked(removed, false, REASON_UNAUTOBUNDLED, wasPosted, null); } } } + @GuardedBy("mNotificationLock") + private boolean hasAutoGroupSummaryLocked(StatusBarNotification sbn) { + ArrayMap summaries = mAutobundledSummaries.get(sbn.getUserId()); + return summaries != null && summaries.containsKey(sbn.getPackageName()); + } + // Posts a 'fake' summary for a package that has exceeded the solo-notification limit. private void createAutoGroupSummary(int userId, String pkg, String triggeringKey) { NotificationRecord summaryRecord = null; @@ -2900,7 +3155,7 @@ public class NotificationManagerService extends SystemService { } } if (summaryRecord != null && checkDisqualifyingFeatures(userId, MY_UID, - summaryRecord.sbn.getId(), summaryRecord.sbn.getTag(), summaryRecord)) { + summaryRecord.sbn.getId(), summaryRecord.sbn.getTag(), summaryRecord, true)) { mHandler.post(new EnqueueNotificationRunnable(userId, summaryRecord)); } } @@ -3090,7 +3345,7 @@ public class NotificationManagerService extends SystemService { } pw.println(')'); pw.println("\n Notification assistant services:"); - mNotificationAssistants.dump(pw, filter); + mAssistants.dump(pw, filter); } if (!filter.filtered || zenOnly) { @@ -3102,9 +3357,6 @@ public class NotificationManagerService extends SystemService { ZenLog.dump(pw, " "); } - pw.println("\n Policy access:"); - pw.print(" mPolicyAccess: "); pw.println(mPolicyAccess); - pw.println("\n Condition providers:"); mConditionProviders.dump(pw, filter); @@ -3129,6 +3381,12 @@ public class NotificationManagerService extends SystemService { * The private API only accessible to the system process. */ private final NotificationManagerInternal mInternalService = new NotificationManagerInternal() { + @Override + public NotificationChannel getNotificationChannel(String pkg, int uid, String + channelId) { + return mRankingHelper.getNotificationChannel(pkg, uid, channelId, false); + } + @Override public void enqueueNotification(String pkg, String opPkg, int callingUid, int callingPid, String tag, int id, Notification notification, int userId) { @@ -3171,7 +3429,6 @@ public class NotificationManagerService extends SystemService { (r.mOriginalFlags & ~Notification.FLAG_FOREGROUND_SERVICE); mRankingHelper.sort(mNotificationList); mListeners.notifyPostedLocked(sbn, sbn /* oldSbn */); - mGroupHelper.onNotificationPosted(sbn); } }; @@ -3249,7 +3506,23 @@ public class NotificationManagerService extends SystemService { user, null, System.currentTimeMillis()); final NotificationRecord r = new NotificationRecord(getContext(), n, channel); - if (!checkDisqualifyingFeatures(userId, notificationUid, id, tag, r)) { + if ((notification.flags & Notification.FLAG_FOREGROUND_SERVICE) != 0 + && (channel.getUserLockedFields() & NotificationChannel.USER_LOCKED_IMPORTANCE) == 0 + && (r.getImportance() == IMPORTANCE_MIN || r.getImportance() == IMPORTANCE_NONE)) { + // Increase the importance of foreground service notifications unless the user had an + // opinion otherwise + if (TextUtils.isEmpty(channelId) + || NotificationChannel.DEFAULT_CHANNEL_ID.equals(channelId)) { + r.setImportance(IMPORTANCE_LOW, "Bumped for foreground service"); + } else { + channel.setImportance(IMPORTANCE_LOW); + mRankingHelper.updateNotificationChannel(pkg, notificationUid, channel, false); + r.updateNotificationChannel(channel); + } + } + + if (!checkDisqualifyingFeatures(userId, notificationUid, id, tag, r, + r.sbn.getOverrideGroupKey() != null)) { return; } @@ -3304,7 +3577,7 @@ public class NotificationManagerService extends SystemService { * Has side effects. */ private boolean checkDisqualifyingFeatures(int userId, int callingUid, int id, String tag, - NotificationRecord r) { + NotificationRecord r, boolean isAutogroup) { final String pkg = r.sbn.getPackageName(); final String dialerPackage = getContext().getSystemService(TelecomManager.class).getSystemDialerPackage(); @@ -3328,7 +3601,8 @@ public class NotificationManagerService extends SystemService { // rate limit updates that aren't completed progress notifications if (mNotificationsByKey.get(r.sbn.getKey()) != null - && !r.getNotification().hasCompletedProgress()) { + && !r.getNotification().hasCompletedProgress() + && !isAutogroup) { final float appEnqueueRate = mUsageStats.getAppEnqueueRate(pkg); if (appEnqueueRate > mMaxPackageEnqueueRate) { @@ -3336,7 +3610,7 @@ public class NotificationManagerService extends SystemService { final long now = SystemClock.elapsedRealtime(); if ((now - mLastOverRateLogTime) > MIN_PACKAGE_OVERRATE_LOG_INTERVAL) { Slog.e(TAG, "Package enqueue rate is " + appEnqueueRate - + ". Shedding events. package=" + pkg); + + ". Shedding " + r.sbn.getKey() + ". package=" + pkg); mLastOverRateLogTime = now; } return false; @@ -3482,13 +3756,15 @@ public class NotificationManagerService extends SystemService { MetricsLogger.action(r.getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_SNOOZED) .setType(MetricsEvent.TYPE_CLOSE) + .addTaggedData(MetricsEvent.FIELD_NOTIFICATION_SNOOZE_DURATION_MS, + mDuration) .addTaggedData(MetricsEvent.NOTIFICATION_SNOOZED_CRITERIA, mSnoozeCriterionId == null ? 0 : 1)); boolean wasPosted = removeFromNotificationListsLocked(r); - cancelNotificationLocked(r, false, REASON_SNOOZED, wasPosted); + cancelNotificationLocked(r, false, REASON_SNOOZED, wasPosted, null); updateLightsLocked(); if (mSnoozeCriterionId != null) { - mNotificationAssistants.notifyAssistantSnoozedLocked(r.sbn, mSnoozeCriterionId); + mAssistants.notifyAssistantSnoozedLocked(r.sbn, mSnoozeCriterionId); mSnoozeHelper.snooze(r); } else { mSnoozeHelper.snooze(r, mDuration); @@ -3552,8 +3828,8 @@ public class NotificationManagerService extends SystemService { mRankingHelper.extractSignals(r); // tell the assistant service about the notification - if (mNotificationAssistants.isEnabled()) { - mNotificationAssistants.onNotificationEnqueued(r); + if (mAssistants.isEnabled()) { + mAssistants.onNotificationEnqueued(r); mHandler.postDelayed(new PostNotificationRunnable(r.getKey()), DELAY_FOR_ASSISTANT_TIME); } else { @@ -3619,12 +3895,15 @@ public class NotificationManagerService extends SystemService { if (notification.getSmallIcon() != null) { StatusBarNotification oldSbn = (old != null) ? old.sbn : null; mListeners.notifyPostedLocked(n, oldSbn); - mHandler.post(new Runnable() { - @Override - public void run() { - mGroupHelper.onNotificationPosted(n); - } - }); + if (oldSbn == null || !Objects.equals(oldSbn.getGroup(), n.getGroup())) { + mHandler.post(new Runnable() { + @Override + public void run() { + mGroupHelper.onNotificationPosted( + n, hasAutoGroupSummaryLocked(n)); + } + }); + } } else { Slog.e(TAG, "Not posting notification without small icon: " + notification); if (old != null && !old.isCanceled) { @@ -3703,7 +3982,8 @@ public class NotificationManagerService extends SystemService { // notification was a summary and the new one isn't, or when the old // notification was a summary and its group key changed. if (oldIsSummary && (!isSummary || !oldGroup.equals(group))) { - cancelGroupChildrenLocked(old, callingUid, callingPid, null, false /* sendDelete */); + cancelGroupChildrenLocked(old, callingUid, callingPid, null, false /* sendDelete */, + null); } } @@ -3744,33 +4024,37 @@ public class NotificationManagerService extends SystemService { // These are set inside the conditional if the notification is allowed to make noise. boolean hasValidVibrate = false; boolean hasValidSound = false; + boolean sentAccessibilityEvent = false; + // If the notification will appear in the status bar, it should send an accessibility + // event + if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN) { + sendAccessibilityEvent(notification, record.sbn.getPackageName()); + sentAccessibilityEvent = true; + } - if (isNotificationForCurrentUser(record)) { - // If the notification icon will appear in the status bar, AND it hasn't been blocked - // by do-not-disturb, it should generate an accessibility event - if (!record.isUpdate - && !record.isIntercepted() - && record.getImportance() > IMPORTANCE_MIN) { - sendAccessibilityEvent(notification, record.sbn.getPackageName()); - } - if (aboveThreshold && mSystemReady && mAudioManager != null) { - // this notification wants to make noise & is allowed to make noise + if (aboveThreshold && isNotificationForCurrentUser(record)) { + + if (mSystemReady && mAudioManager != null) { Uri soundUri = record.getSound(); hasValidSound = soundUri != null && !Uri.EMPTY.equals(soundUri); - long[] vibration = record.getVibration(); // Demote sound to vibration if vibration missing & phone in vibration mode. if (vibration == null && hasValidSound && (mAudioManager.getRingerModeInternal() - == AudioManager.RINGER_MODE_VIBRATE)) { + == AudioManager.RINGER_MODE_VIBRATE) + && mAudioManager.getStreamVolume( + AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) == 0) { vibration = mFallbackVibrationPattern; } hasValidVibrate = vibration != null; boolean hasAudibleAlert = hasValidSound || hasValidVibrate; - if (hasAudibleAlert && !shouldMuteNotificationLocked(record)) { + if (!sentAccessibilityEvent) { + sendAccessibilityEvent(notification, record.sbn.getPackageName()); + sentAccessibilityEvent = true; + } if (DBG) Slog.v(TAG, "Interrupting!"); if (hasValidSound) { mSoundNotificationKey = key; @@ -3866,8 +4150,9 @@ public class NotificationManagerService extends SystemService { boolean looping = (record.getNotification().flags & Notification.FLAG_INSISTENT) != 0; // do not play notifications if there is a user of exclusive audio focus // or the device is in vibrate mode - if (!mAudioManager.isAudioFocusExclusive() && mAudioManager.getRingerModeInternal() - != AudioManager.RINGER_MODE_VIBRATE) { + if (!mAudioManager.isAudioFocusExclusive() && (mAudioManager.getRingerModeInternal() + != AudioManager.RINGER_MODE_VIBRATE || mAudioManager.getStreamVolume( + AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) != 0)) { final long identity = Binder.clearCallingIdentity(); try { final IRingtonePlayer player = mAudioManager.getRingtonePlayer(); @@ -3939,21 +4224,21 @@ public class NotificationManagerService extends SystemService { mUserProfiles.isCurrentProfile(record.getUserId())); } - private void playInCallNotification() { + protected void playInCallNotification() { new Thread() { @Override public void run() { - // If toneGenerator creation fails, just continue the call - // without playing the notification sound. + final long identity = Binder.clearCallingIdentity(); try { - synchronized (mInCallToneGeneratorLock) { - if (mInCallToneGenerator != null) { - // limit this tone to 1 second; BEEP2 should in fact be much shorter - mInCallToneGenerator.startTone(ToneGenerator.TONE_PROP_BEEP2, 1000); - } + final IRingtonePlayer player = mAudioManager.getRingtonePlayer(); + if (player != null) { + player.play(new Binder(), mInCallNotificationUri, + mInCallNotificationAudioAttributes, + mInCallNotificationVolume, false); } - } catch (RuntimeException e) { - Log.w(TAG, "Exception from ToneGenerator: " + e); + } catch (RemoteException e) { + } finally { + Binder.restoreCallingIdentity(identity); } } }.start(); @@ -4038,7 +4323,21 @@ public class NotificationManagerService extends SystemService { int len = list.size(); for (int i=0; i list = mToastQueue; + int len = list.size(); + for (int i=0; i orderBefore = new ArrayList(N); - ArrayList groupOverrideBefore = new ArrayList<>(N); + // Any field that can change via one of the extractors needs to be added here. + ArrayList orderBefore = new ArrayList<>(N); int[] visibilities = new int[N]; boolean[] showBadges = new boolean[N]; + ArrayList channelBefore = new ArrayList<>(N); + ArrayList groupKeyBefore = new ArrayList<>(N); + ArrayList> overridePeopleBefore = new ArrayList<>(N); + ArrayList> snoozeCriteriaBefore = new ArrayList<>(N); for (int i = 0; i < N; i++) { final NotificationRecord r = mNotificationList.get(i); orderBefore.add(r.getKey()); - groupOverrideBefore.add(r.sbn.getGroupKey()); visibilities[i] = r.getPackageVisibilityOverride(); showBadges[i] = r.canShowBadge(); + channelBefore.add(r.getChannel()); + groupKeyBefore.add(r.getGroupKey()); + overridePeopleBefore.add(r.getPeopleOverride()); + snoozeCriteriaBefore.add(r.getSnoozeCriteria()); mRankingHelper.extractSignals(r); } mRankingHelper.sort(mNotificationList); for (int i = 0; i < N; i++) { final NotificationRecord r = mNotificationList.get(i); - if (forceUpdate - || !orderBefore.get(i).equals(r.getKey()) + if (!orderBefore.get(i).equals(r.getKey()) || visibilities[i] != r.getPackageVisibilityOverride() - || !groupOverrideBefore.get(i).equals(r.sbn.getGroupKey()) - || showBadges[i] != r.canShowBadge()) { - scheduleSendRankingUpdate(); + || showBadges[i] != r.canShowBadge() + || !Objects.equals(channelBefore.get(i), r.getChannel()) + || !Objects.equals(groupKeyBefore.get(i), r.getGroupKey()) + || !Objects.equals(overridePeopleBefore.get(i), r.getPeopleOverride()) + || !Objects.equals(snoozeCriteriaBefore.get(i), r.getSnoozeCriteria())) { + mHandler.scheduleSendRankingUpdate(); return; } } @@ -4159,13 +4463,6 @@ public class NotificationManagerService extends SystemService { return mRankingHelper.indexOf(mNotificationList, target); } - private void scheduleSendRankingUpdate() { - if (!mHandler.hasMessages(MESSAGE_SEND_RANKING_UPDATE)) { - Message m = Message.obtain(mHandler, MESSAGE_SEND_RANKING_UPDATE); - mHandler.sendMessage(m); - } - } - private void handleSendRankingUpdate() { synchronized (mNotificationLock) { mListeners.notifyRankingUpdateLocked(); @@ -4197,7 +4494,7 @@ public class NotificationManagerService extends SystemService { } } - private final class WorkerHandler extends Handler + protected class WorkerHandler extends Handler { public WorkerHandler(Looper looper) { super(looper); @@ -4226,6 +4523,13 @@ public class NotificationManagerService extends SystemService { } } + protected void scheduleSendRankingUpdate() { + if (!hasMessages(MESSAGE_SEND_RANKING_UPDATE)) { + Message m = Message.obtain(this, MESSAGE_SEND_RANKING_UPDATE); + sendMessage(m); + } + } + } private final class RankingHandlerWorker extends Handler implements RankingHandler @@ -4241,16 +4545,15 @@ public class NotificationManagerService extends SystemService { handleRankingReconsideration(msg); break; case MESSAGE_RANKING_SORT: - handleRankingSort(msg); + handleRankingSort(); break; } } - public void requestSort(boolean forceUpdate) { + public void requestSort() { removeMessages(MESSAGE_RANKING_SORT); Message msg = Message.obtain(); msg.what = MESSAGE_RANKING_SORT; - msg.obj = forceUpdate; sendMessage(msg); } @@ -4268,11 +4571,8 @@ public class NotificationManagerService extends SystemService { return (x < low) ? low : ((x > high) ? high : x); } - @VisibleForTesting void sendAccessibilityEvent(Notification notification, CharSequence packageName) { - final AccessibilityManager accessibilityManager - = AccessibilityManager.getInstance(getContext()); - if (accessibilityManager == null || !accessibilityManager.isEnabled()) { + if (!mAccessibilityManager.isEnabled()) { return; } @@ -4286,7 +4586,7 @@ public class NotificationManagerService extends SystemService { event.getText().add(tickerText); } - accessibilityManager.sendAccessibilityEvent(event); + mAccessibilityManager.sendAccessibilityEvent(event); } /** @@ -4314,7 +4614,7 @@ public class NotificationManagerService extends SystemService { @GuardedBy("mNotificationLock") private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete, int reason, - boolean wasPosted) { + boolean wasPosted, String listenerName) { final String canceledKey = r.getKey(); // Record caller. @@ -4414,7 +4714,7 @@ public class NotificationManagerService extends SystemService { .setType(MetricsEvent.TYPE_DISMISS) .setSubtype(reason)); EventLogTags.writeNotificationCanceled(canceledKey, reason, - r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now)); + r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now), listenerName); } /** @@ -4457,9 +4757,9 @@ public class NotificationManagerService extends SystemService { // Cancel the notification. boolean wasPosted = removeFromNotificationListsLocked(r); - cancelNotificationLocked(r, sendDelete, reason, wasPosted); + cancelNotificationLocked(r, sendDelete, reason, wasPosted, listenerName); cancelGroupChildrenLocked(r, callingUid, callingPid, listenerName, - sendDelete); + sendDelete, null); updateLightsLocked(); } else { // No notification was found, assume that it is snoozed and cancel it. @@ -4530,7 +4830,6 @@ public class NotificationManagerService extends SystemService { } return true; }; - cancelAllNotificationsByListLocked(mNotificationList, callingUid, callingPid, pkg, true /*nullPkgIndicatesUserSwitch*/, channelId, flagChecker, false /*includeCurrentProfiles*/, userId, false /*sendDelete*/, reason, @@ -4578,20 +4877,19 @@ public class NotificationManagerService extends SystemService { if (channelId != null && !channelId.equals(r.getChannel().getId())) { continue; } - if (canceledNotifications == null) { canceledNotifications = new ArrayList<>(); } notificationList.remove(i); mNotificationsByKey.remove(r.getKey()); canceledNotifications.add(r); - cancelNotificationLocked(r, sendDelete, reason, wasPosted); + cancelNotificationLocked(r, sendDelete, reason, wasPosted, listenerName); } if (canceledNotifications != null) { final int M = canceledNotifications.size(); for (int i = 0; i < M; i++) { cancelGroupChildrenLocked(canceledNotifications.get(i), callingUid, callingPid, - listenerName, false /* sendDelete */); + listenerName, false /* sendDelete */, flagChecker); } updateLightsLocked(); } @@ -4658,7 +4956,7 @@ public class NotificationManagerService extends SystemService { // Warning: The caller is responsible for invoking updateLightsLocked(). @GuardedBy("mNotificationLock") private void cancelGroupChildrenLocked(NotificationRecord r, int callingUid, int callingPid, - String listenerName, boolean sendDelete) { + String listenerName, boolean sendDelete, FlagChecker flagChecker) { Notification n = r.getNotification(); if (!n.isGroupSummary()) { return; @@ -4672,15 +4970,15 @@ public class NotificationManagerService extends SystemService { } cancelGroupChildrenByListLocked(mNotificationList, r, callingUid, callingPid, listenerName, - sendDelete, true); + sendDelete, true, flagChecker); cancelGroupChildrenByListLocked(mEnqueuedNotifications, r, callingUid, callingPid, - listenerName, sendDelete, false); + listenerName, sendDelete, false, flagChecker); } @GuardedBy("mNotificationLock") private void cancelGroupChildrenByListLocked(ArrayList notificationList, NotificationRecord parentNotification, int callingUid, int callingPid, - String listenerName, boolean sendDelete, boolean wasPosted) { + String listenerName, boolean sendDelete, boolean wasPosted, FlagChecker flagChecker) { final String pkg = parentNotification.sbn.getPackageName(); final int userId = parentNotification.getUserId(); final int reason = REASON_GROUP_SUMMARY_CANCELED; @@ -4689,12 +4987,13 @@ public class NotificationManagerService extends SystemService { final StatusBarNotification childSbn = childR.sbn; if ((childSbn.isGroup() && !childSbn.getNotification().isGroupSummary()) && childR.getGroupKey().equals(parentNotification.getGroupKey()) - && (childR.getFlags() & Notification.FLAG_FOREGROUND_SERVICE) == 0) { + && (childR.getFlags() & Notification.FLAG_FOREGROUND_SERVICE) == 0 + && (flagChecker == null || flagChecker.apply(childR.getFlags()))) { EventLogTags.writeNotificationCancel(callingUid, callingPid, pkg, childSbn.getId(), childSbn.getTag(), userId, 0, 0, reason, listenerName); notificationList.remove(i); mNotificationsByKey.remove(childR.getKey()); - cancelNotificationLocked(childR, sendDelete, reason, wasPosted); + cancelNotificationLocked(childR, sendDelete, reason, wasPosted, listenerName); } } } @@ -4838,6 +5137,13 @@ public class NotificationManagerService extends SystemService { return isUidSystemOrPhone(Binder.getCallingUid()); } + private void checkCallerIsSystemOrShell() { + if (Binder.getCallingUid() == Process.SHELL_UID) { + return; + } + checkCallerIsSystem(); + } + private void checkCallerIsSystem() { if (isCallerSystemOrPhone()) { return; @@ -5043,9 +5349,10 @@ public class NotificationManagerService extends SystemService { } public class NotificationAssistants extends ManagedServices { + static final String TAG_ENABLED_NOTIFICATION_ASSISTANTS = "enabled_assistants"; - public NotificationAssistants() { - super(getContext(), mHandler, mNotificationLock, mUserProfiles); + public NotificationAssistants(IPackageManager pm) { + super(getContext(), mNotificationLock, mUserProfiles, pm); } @Override @@ -5053,6 +5360,7 @@ public class NotificationManagerService extends SystemService { Config c = new Config(); c.caption = "notification assistant service"; c.serviceInterface = NotificationAssistantService.SERVICE_INTERFACE; + c.xmlTag = TAG_ENABLED_NOTIFICATION_ASSISTANTS; c.secureSettingName = Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT; c.bindPermission = Manifest.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE; c.settingsAction = Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS; @@ -5150,11 +5458,13 @@ public class NotificationManagerService extends SystemService { } public class NotificationListeners extends ManagedServices { + static final String TAG_ENABLED_NOTIFICATION_LISTENERS = "enabled_listeners"; private final ArraySet mLightTrimListeners = new ArraySet<>(); - public NotificationListeners() { - super(getContext(), mHandler, mNotificationLock, mUserProfiles); + public NotificationListeners(IPackageManager pm) { + super(getContext(), mNotificationLock, mUserProfiles, pm); + } @Override @@ -5162,6 +5472,7 @@ public class NotificationManagerService extends SystemService { Config c = new Config(); c.caption = "notification listener"; c.serviceInterface = NotificationListenerService.SERVICE_INTERFACE; + c.xmlTag = TAG_ENABLED_NOTIFICATION_LISTENERS; c.secureSettingName = Settings.Secure.ENABLED_NOTIFICATION_LISTENERS; c.bindPermission = android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE; c.settingsAction = Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS; @@ -5340,13 +5651,10 @@ public class NotificationManagerService extends SystemService { continue; } - mHandler.post(new Runnable() { - @Override - public void run() { - if (hasCompanionDevice(serviceInfo)) { - notifyNotificationChannelChanged( - serviceInfo, pkg, user, channel, modificationType); - } + BackgroundThread.getHandler().post(() -> { + if (hasCompanionDevice(serviceInfo)) { + notifyNotificationChannelChanged( + serviceInfo, pkg, user, channel, modificationType); } }); } @@ -5363,13 +5671,10 @@ public class NotificationManagerService extends SystemService { continue; } - mHandler.post(new Runnable() { - @Override - public void run() { - if (hasCompanionDevice(serviceInfo)) { - notifyNotificationChannelGroupChanged( - serviceInfo, pkg, user, group, modificationType); - } + BackgroundThread.getHandler().post(() -> { + if (hasCompanionDevice(serviceInfo)) { + notifyNotificationChannelGroupChanged( + serviceInfo, pkg, user, group, modificationType); } }); } @@ -5554,78 +5859,96 @@ public class NotificationManagerService extends SystemService { } } - private final class PolicyAccess { - private static final String SEPARATOR = ":"; - private final String[] PERM = { - android.Manifest.permission.ACCESS_NOTIFICATION_POLICY - }; + private class ShellCmd extends ShellCommand { + public static final String USAGE = "help\n" + + "allow_listener COMPONENT [user_id]\n" + + "disallow_listener COMPONENT [user_id]\n" + + "set_assistant COMPONENT\n" + + "remove_assistant COMPONENT\n" + + "allow_dnd PACKAGE\n" + + "disallow_dnd PACKAGE"; - public boolean isPackageGranted(String pkg) { - return pkg != null && getGrantedPackages().contains(pkg); - } - - public void put(String pkg, boolean granted) { - if (pkg == null) return; - final ArraySet pkgs = getGrantedPackages(); - boolean changed; - if (granted) { - changed = pkgs.add(pkg); - } else { - changed = pkgs.remove(pkg); + @Override + public int onCommand(String cmd) { + if (cmd == null) { + return handleDefaultCommands(cmd); } - if (!changed) return; - final String setting = TextUtils.join(SEPARATOR, pkgs); - final int currentUser = ActivityManager.getCurrentUser(); - Settings.Secure.putStringForUser(getContext().getContentResolver(), - Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES, - setting, - currentUser); - getContext().sendBroadcastAsUser(new Intent(NotificationManager - .ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED) - .setPackage(pkg) - .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), new UserHandle(currentUser), null); - } - - public ArraySet getGrantedPackages() { - final ArraySet pkgs = new ArraySet<>(); - - long identity = Binder.clearCallingIdentity(); + final PrintWriter pw = getOutPrintWriter(); try { - final String setting = Settings.Secure.getStringForUser( - getContext().getContentResolver(), - Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES, - ActivityManager.getCurrentUser()); - if (setting != null) { - final String[] tokens = setting.split(SEPARATOR); - for (int i = 0; i < tokens.length; i++) { - String token = tokens[i]; - if (token != null) { - token = token.trim(); + switch (cmd) { + case "allow_dnd": { + getBinderService().setNotificationPolicyAccessGranted( + getNextArgRequired(), true); + } + break; + + case "disallow_dnd": { + getBinderService().setNotificationPolicyAccessGranted( + getNextArgRequired(), false); + } + break; + case "allow_listener": { + ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired()); + if (cn == null) { + pw.println("Invalid listener - must be a ComponentName"); + return -1; } - if (TextUtils.isEmpty(token)) { - continue; + String userId = getNextArg(); + if (userId == null) { + getBinderService().setNotificationListenerAccessGranted(cn, true); + } else { + getBinderService().setNotificationListenerAccessGrantedForUser( + cn, Integer.parseInt(userId), true); + } + } + break; + case "disallow_listener": { + ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired()); + if (cn == null) { + pw.println("Invalid listener - must be a ComponentName"); + return -1; + } + String userId = getNextArg(); + if (userId == null) { + getBinderService().setNotificationListenerAccessGranted(cn, false); + } else { + getBinderService().setNotificationListenerAccessGrantedForUser( + cn, Integer.parseInt(userId), false); } - pkgs.add(token); } + break; + case "allow_assistant": { + ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired()); + if (cn == null) { + pw.println("Invalid assistant - must be a ComponentName"); + return -1; + } + getBinderService().setNotificationAssistantAccessGranted(cn, true); + } + break; + case "disallow_assistant": { + ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired()); + if (cn == null) { + pw.println("Invalid assistant - must be a ComponentName"); + return -1; + } + getBinderService().setNotificationAssistantAccessGranted(cn, false); + } + break; + + default: + return handleDefaultCommands(cmd); } - } finally { - Binder.restoreCallingIdentity(identity); + } catch (Exception e) { + pw.println("Error occurred. Check logcat for details. " + e.getMessage()); + Slog.e(TAG, "Error running shell command", e); } - return pkgs; + return 0; } - public String[] getRequestingPackages() throws RemoteException { - final ParceledListSlice list = mPackageManager - .getPackagesHoldingPermissions(PERM, 0 /*flags*/, - ActivityManager.getCurrentUser()); - final List pkgs = list.getList(); - if (pkgs == null || pkgs.isEmpty()) return new String[0]; - final int N = pkgs.size(); - final String[] rt = new String[N]; - for (int i = 0; i < N; i++) { - rt[i] = pkgs.get(i).packageName; - } - return rt; + @Override + public void onHelp() { + getOutPrintWriter().println(USAGE); } } } diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index 1dee71cf2a5b35e81a2c0ca80f360f5be4a1cfdd..77bf9e30f95da95cb9264f9b7169e83fc3f46905 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -35,8 +35,10 @@ import android.media.AudioSystem; import android.metrics.LogMaker; import android.net.Uri; import android.os.Build; +import android.os.Bundle; import android.os.UserHandle; import android.provider.Settings; +import android.service.notification.Adjustment; import android.service.notification.NotificationListenerService; import android.service.notification.NotificationRecordProto; import android.service.notification.SnoozeCriterion; @@ -57,6 +59,7 @@ import java.io.PrintWriter; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Objects; /** @@ -132,6 +135,8 @@ public final class NotificationRecord { private String mGroupLogTag; private String mChannelIdLogTag; + private final List mAdjustments; + @VisibleForTesting public NotificationRecord(Context context, StatusBarNotification sbn, NotificationChannel channel) @@ -150,6 +155,7 @@ public final class NotificationRecord { mAttributes = calculateAttributes(); mImportance = calculateImportance(); mLight = calculateLights(); + mAdjustments = new ArrayList<>(); } private boolean isPreChannelsNotification() { @@ -504,6 +510,7 @@ public final class NotificationRecord { if (getSnoozeCriteria() != null) { pw.println(prefix + "snoozeCriteria=" + TextUtils.join(",", getSnoozeCriteria())); } + pw.println(prefix + "mAdjustments=" + mAdjustments); } @@ -539,6 +546,36 @@ public final class NotificationRecord { this.sbn.getNotification()); } + public void addAdjustment(Adjustment adjustment) { + synchronized (mAdjustments) { + mAdjustments.add(adjustment); + } + } + + public void applyAdjustments() { + synchronized (mAdjustments) { + for (Adjustment adjustment: mAdjustments) { + Bundle signals = adjustment.getSignals(); + if (signals.containsKey(Adjustment.KEY_PEOPLE)) { + final ArrayList people = + adjustment.getSignals().getStringArrayList(Adjustment.KEY_PEOPLE); + setPeopleOverride(people); + } + if (signals.containsKey(Adjustment.KEY_SNOOZE_CRITERIA)) { + final ArrayList snoozeCriterionList = + adjustment.getSignals().getParcelableArrayList( + Adjustment.KEY_SNOOZE_CRITERIA); + setSnoozeCriteria(snoozeCriterionList); + } + if (signals.containsKey(Adjustment.KEY_GROUP_KEY)) { + final String groupOverrideKey = + adjustment.getSignals().getString(Adjustment.KEY_GROUP_KEY); + setOverrideGroupKey(groupOverrideKey); + } + } + } + } + public void setContactAffinity(float contactAffinity) { mContactAffinity = contactAffinity; if (mImportance < IMPORTANCE_DEFAULT && diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java index c8f4d31c3726123bed92a5beb0c4ee26a12ac818..e40dad6e83f170e641cd3db01df51e7d1e83ec0a 100644 --- a/services/core/java/com/android/server/notification/NotificationUsageStats.java +++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java @@ -1059,6 +1059,9 @@ public class NotificationUsageStats { private static final int EVENT_TYPE_CLICK = 2; private static final int EVENT_TYPE_REMOVE = 3; private static final int EVENT_TYPE_DISMISS = 4; + + private static final int IDLE_CONNECTION_TIMEOUT_MS = 30000; + private static long sLastPruneMs; private static long sNumWrites; @@ -1140,6 +1143,12 @@ public class NotificationUsageStats { ")"); } + @Override + public void onConfigure(SQLiteDatabase db) { + // Memory optimization - close idle connections after 30s of inactivity + setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS); + } + @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion != newVersion) { diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java index 36da04dfc3c66131f23383ca742f1b8351d9c57e..332ab6d7a2d73bbff222cf31ee854115afa79b68 100644 --- a/services/core/java/com/android/server/notification/RankingConfig.java +++ b/services/core/java/com/android/server/notification/RankingConfig.java @@ -38,7 +38,7 @@ public interface RankingConfig { int uid, boolean includeDeleted); void createNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromTargetApp); - void updateNotificationChannel(String pkg, int uid, NotificationChannel channel); + void updateNotificationChannel(String pkg, int uid, NotificationChannel channel, boolean fromUser); NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, boolean includeDeleted); void deleteNotificationChannel(String pkg, int uid, String channelId); void permanentlyDeleteNotificationChannel(String pkg, int uid, String channelId); diff --git a/services/core/java/com/android/server/notification/RankingHandler.java b/services/core/java/com/android/server/notification/RankingHandler.java index 656d727321a8c680fe2f3e832dc17441ba95bb57..96324d8295732ae989a337fb5966fe3976ca47bf 100644 --- a/services/core/java/com/android/server/notification/RankingHandler.java +++ b/services/core/java/com/android/server/notification/RankingHandler.java @@ -16,6 +16,6 @@ package com.android.server.notification; public interface RankingHandler { - public void requestSort(boolean forceUpdate); + public void requestSort(); public void requestReconsideration(RankingReconsideration recon); -} +} \ No newline at end of file diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java index d7b36aaa80088fee5ac3d148c4d7702b708a8037..b8e2092fd2fa2eda1cd032213ebbf61c105d78c3 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -20,6 +20,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.util.Preconditions; +import com.android.internal.util.XmlUtils; import android.app.Notification; import android.app.NotificationChannel; @@ -64,7 +65,7 @@ public class RankingHelper implements RankingConfig { private static final int XML_VERSION = 1; - private static final String TAG_RANKING = "ranking"; + static final String TAG_RANKING = "ranking"; private static final String TAG_PACKAGE = "package"; private static final String TAG_CHANNEL = "channel"; private static final String TAG_GROUP = "channelGroup"; @@ -169,7 +170,7 @@ public class RankingHelper implements RankingConfig { } if (type == XmlPullParser.START_TAG) { if (TAG_PACKAGE.equals(tag)) { - int uid = safeInt(parser, ATT_UID, Record.UNKNOWN_UID); + int uid = XmlUtils.readIntAttribute(parser, ATT_UID, Record.UNKNOWN_UID); String name = parser.getAttributeValue(null, ATT_NAME); if (!TextUtils.isEmpty(name)) { if (forRestore) { @@ -182,14 +183,21 @@ public class RankingHelper implements RankingConfig { } Record r = getOrCreateRecord(name, uid, - safeInt(parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE), - safeInt(parser, ATT_PRIORITY, DEFAULT_PRIORITY), - safeInt(parser, ATT_VISIBILITY, DEFAULT_VISIBILITY), - safeBool(parser, ATT_SHOW_BADGE, DEFAULT_SHOW_BADGE)); - r.importance = safeInt(parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE); - r.priority = safeInt(parser, ATT_PRIORITY, DEFAULT_PRIORITY); - r.visibility = safeInt(parser, ATT_VISIBILITY, DEFAULT_VISIBILITY); - r.showBadge = safeBool(parser, ATT_SHOW_BADGE, DEFAULT_SHOW_BADGE); + XmlUtils.readIntAttribute( + parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE), + XmlUtils.readIntAttribute(parser, ATT_PRIORITY, DEFAULT_PRIORITY), + XmlUtils.readIntAttribute( + parser, ATT_VISIBILITY, DEFAULT_VISIBILITY), + XmlUtils.readBooleanAttribute( + parser, ATT_SHOW_BADGE, DEFAULT_SHOW_BADGE)); + r.importance = XmlUtils.readIntAttribute( + parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE); + r.priority = XmlUtils.readIntAttribute( + parser, ATT_PRIORITY, DEFAULT_PRIORITY); + r.visibility = XmlUtils.readIntAttribute( + parser, ATT_VISIBILITY, DEFAULT_VISIBILITY); + r.showBadge = XmlUtils.readBooleanAttribute( + parser, ATT_SHOW_BADGE, DEFAULT_SHOW_BADGE); final int innerDepth = parser.getDepth(); while ((type = parser.next()) != XmlPullParser.END_DOCUMENT @@ -214,12 +222,16 @@ public class RankingHelper implements RankingConfig { if (TAG_CHANNEL.equals(tagName)) { String id = parser.getAttributeValue(null, ATT_ID); String channelName = parser.getAttributeValue(null, ATT_NAME); - int channelImportance = - safeInt(parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE); + int channelImportance = XmlUtils.readIntAttribute( + parser, ATT_IMPORTANCE, DEFAULT_IMPORTANCE); if (!TextUtils.isEmpty(id) && !TextUtils.isEmpty(channelName)) { NotificationChannel channel = new NotificationChannel(id, channelName, channelImportance); - channel.populateFromXml(parser); + if (forRestore) { + channel.populateFromXmlForRestore(parser, mContext); + } else { + channel.populateFromXml(parser); + } r.channels.put(id, channel); } } @@ -382,7 +394,11 @@ public class RankingHelper implements RankingConfig { } for (NotificationChannel channel : r.channels.values()) { - if (!forBackup || (forBackup && !channel.isDeleted())) { + if (forBackup) { + if (!channel.isDeleted()) { + channel.writeXmlForBackup(out, mContext); + } + } else { channel.writeXml(out); } } @@ -399,7 +415,7 @@ public class RankingHelper implements RankingConfig { for (int i = 0; i < N; i++) { mSignalExtractors[i].setConfig(this); } - mRankingHandler.requestSort(false); + mRankingHandler.requestSort(); } public void sort(ArrayList notificationList) { @@ -419,8 +435,7 @@ public class RankingHelper implements RankingConfig { record.setAuthoritativeRank(i); final String groupKey = record.getGroupKey(); NotificationRecord existingProxy = mProxyByGroupTmp.get(groupKey); - if (existingProxy == null - || record.getImportance() > existingProxy.getImportance()) { + if (existingProxy == null) { mProxyByGroupTmp.put(groupKey, record); } } @@ -467,26 +482,6 @@ public class RankingHelper implements RankingConfig { return Collections.binarySearch(notificationList, target, mFinalComparator); } - private static boolean safeBool(XmlPullParser parser, String att, boolean defValue) { - final String value = parser.getAttributeValue(null, att); - if (TextUtils.isEmpty(value)) return defValue; - return Boolean.parseBoolean(value); - } - - private static int safeInt(XmlPullParser parser, String att, int defValue) { - final String val = parser.getAttributeValue(null, att); - return tryParseInt(val, defValue); - } - - private static int tryParseInt(String value, int defValue) { - if (TextUtils.isEmpty(value)) return defValue; - try { - return Integer.parseInt(value); - } catch (NumberFormatException e) { - return defValue; - } - } - /** * Gets importance. */ @@ -531,7 +526,6 @@ public class RankingHelper implements RankingConfig { MetricsLogger.action(getChannelGroupLog(group.getId(), pkg)); } r.groups.put(group.getId(), group); - updateConfig(); } @Override @@ -567,6 +561,13 @@ public class RankingHelper implements RankingConfig { existing.setDescription(channel.getDescription()); existing.setBlockableSystem(channel.isBlockableSystem()); + // Apps are allowed to downgrade channel importance if the user has not changed any + // fields on this channel yet. + if (existing.getUserLockedFields() == 0 && + channel.getImportance() < existing.getImportance()) { + existing.setImportance(channel.getImportance()); + } + updateConfig(); return; } @@ -589,7 +590,6 @@ public class RankingHelper implements RankingConfig { r.channels.put(channel.getId(), channel); MetricsLogger.action(getChannelLog(channel, pkg).setType( MetricsProto.MetricsEvent.TYPE_OPEN)); - updateConfig(); } void clearLockedFields(NotificationChannel channel) { @@ -597,7 +597,8 @@ public class RankingHelper implements RankingConfig { } @Override - public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel) { + public void updateNotificationChannel(String pkg, int uid, NotificationChannel updatedChannel, + boolean fromUser) { Preconditions.checkNotNull(updatedChannel); Preconditions.checkNotNull(updatedChannel.getId()); Record r = getOrCreateRecord(pkg, uid); @@ -611,7 +612,11 @@ public class RankingHelper implements RankingConfig { if (updatedChannel.getLockscreenVisibility() == Notification.VISIBILITY_PUBLIC) { updatedChannel.setLockscreenVisibility(Ranking.VISIBILITY_NO_OVERRIDE); } - lockFieldsForUpdate(channel, updatedChannel); + updatedChannel.unlockFields(updatedChannel.getUserLockedFields()); + updatedChannel.lockFields(channel.getUserLockedFields()); + if (fromUser) { + lockFieldsForUpdate(channel, updatedChannel); + } r.channels.put(updatedChannel.getId(), updatedChannel); if (NotificationChannel.DEFAULT_CHANNEL_ID.equals(updatedChannel.getId())) { @@ -661,7 +666,6 @@ public class RankingHelper implements RankingConfig { LogMaker lm = getChannelLog(channel, pkg); lm.setType(MetricsProto.MetricsEvent.TYPE_CLOSE); MetricsLogger.action(lm); - updateConfig(); } } @@ -675,7 +679,6 @@ public class RankingHelper implements RankingConfig { return; } r.channels.remove(channelId); - updateConfig(); } @Override @@ -692,7 +695,6 @@ public class RankingHelper implements RankingConfig { r.channels.remove(key); } } - updateConfig(); } public NotificationChannelGroup getNotificationChannelGroup(String groupId, String pkg, @@ -755,7 +757,6 @@ public class RankingHelper implements RankingConfig { deletedChannels.add(nc); } } - updateConfig(); return deletedChannels; } @@ -840,8 +841,6 @@ public class RankingHelper implements RankingConfig { @VisibleForTesting void lockFieldsForUpdate(NotificationChannel original, NotificationChannel update) { - update.unlockFields(update.getUserLockedFields()); - update.lockFields(original.getUserLockedFields()); if (original.canBypassDnd() != update.canBypassDnd()) { update.lockFields(NotificationChannel.USER_LOCKED_PRIORITY); } @@ -1085,6 +1084,22 @@ public class RankingHelper implements RankingConfig { } } + protected void onLocaleChanged(Context context, int userId) { + synchronized (mRecords) { + int N = mRecords.size(); + for (int i = 0; i < N; i++) { + Record record = mRecords.valueAt(i); + if (UserHandle.getUserId(record.uid) == userId) { + if (record.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) { + record.channels.get(NotificationChannel.DEFAULT_CHANNEL_ID).setName( + context.getResources().getString( + R.string.default_notification_channel_label)); + } + } + } + } + } + public void onPackagesChanged(boolean removingPackage, int changeUserId, String[] pkgList, int[] uidList) { if (pkgList == null || pkgList.length == 0) { @@ -1170,7 +1185,7 @@ public class RankingHelper implements RankingConfig { changed |= oldValue != newValue; } if (changed) { - mRankingHandler.requestSort(false); + updateConfig(); } } diff --git a/services/core/java/com/android/server/notification/ScheduleCalendar.java b/services/core/java/com/android/server/notification/ScheduleCalendar.java index 9e8b2e34520b2c434680e8aa9eca1638d941bfd7..40230bd2ba82f2507495a431c52649623bb4816a 100644 --- a/services/core/java/com/android/server/notification/ScheduleCalendar.java +++ b/services/core/java/com/android/server/notification/ScheduleCalendar.java @@ -42,7 +42,8 @@ public class ScheduleCalendar { public void maybeSetNextAlarm(long now, long nextAlarm) { if (mSchedule != null) { - if (mSchedule.exitAtAlarm && now > mSchedule.nextAlarm) { + if (mSchedule.exitAtAlarm + && (now > mSchedule.nextAlarm || nextAlarm < mSchedule.nextAlarm)) { mSchedule.nextAlarm = nextAlarm; } } diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java index cbaad460b8883a5e13dd232b1734691ff46d880f..a7a2743dfc7f7bd79c469c95f547302c519e4d2d 100644 --- a/services/core/java/com/android/server/notification/ZenModeFiltering.java +++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java @@ -104,9 +104,6 @@ public class ZenModeFiltering { } public boolean shouldIntercept(int zen, ZenModeConfig config, NotificationRecord record) { - if (isSystem(record)) { - return false; - } switch (zen) { case Global.ZEN_MODE_NO_INTERRUPTIONS: // #notevenalarms @@ -177,10 +174,6 @@ public class ZenModeFiltering { return false; } - private static boolean isSystem(NotificationRecord record) { - return record.isCategory(Notification.CATEGORY_SYSTEM); - } - private static boolean isAlarm(NotificationRecord record) { return record.isCategory(Notification.CATEGORY_ALARM) || record.isAudioStream(AudioManager.STREAM_ALARM) diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 15e32ff6469e2309ba3c43f9f7e285a909b20a14..ffdafc5626735928a10ef02f5c6a1c2cc9d2b3a0 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -16,11 +16,6 @@ package com.android.server.notification; -import static android.media.AudioAttributes.USAGE_NOTIFICATION; -import static android.media.AudioAttributes.USAGE_NOTIFICATION_RINGTONE; -import static android.media.AudioAttributes.USAGE_UNKNOWN; -import static android.media.AudioAttributes.USAGE_VIRTUAL_SOURCE; - import android.app.AppOpsManager; import android.app.AutomaticZenRule; import android.app.NotificationManager; @@ -52,7 +47,6 @@ import android.os.UserHandle; import android.provider.Settings.Global; import android.service.notification.Condition; import android.service.notification.ConditionProviderService; -import android.service.notification.NotificationServiceDumpProto; import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig.EventInfo; import android.service.notification.ZenModeConfig.ScheduleInfo; @@ -60,6 +54,7 @@ import android.service.notification.ZenModeConfig.ZenRule; import android.service.notification.ZenModeProto; import android.util.AndroidRuntimeException; import android.util.Log; +import android.util.Slog; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; @@ -93,7 +88,7 @@ public class ZenModeHelper { private final H mHandler; private final SettingsObserver mSettingsObserver; private final AppOpsManager mAppOps; - private final ZenModeConfig mDefaultConfig; + protected ZenModeConfig mDefaultConfig; private final ArrayList mCallbacks = new ArrayList(); private final ZenModeFiltering mFiltering; private final RingerModeDelegate mRingerModeDelegate = new RingerModeDelegate(); @@ -102,11 +97,16 @@ public class ZenModeHelper { private final Metrics mMetrics = new Metrics(); private final ConditionProviders.Config mServiceConfig; + protected final ArrayList mDefaultRuleIds = new ArrayList<>(); + private final String EVENTS_DEFAULT_RULE = "EVENTS_DEFAULT_RULE"; + private final String SCHEDULED_DEFAULT_RULE_1 = "SCHEDULED_DEFAULT_RULE_1"; + private final String SCHEDULED_DEFAULT_RULE_2 = "SCHEDULED_DEFAULT_RULE_2"; + private int mZenMode; private int mUser = UserHandle.USER_SYSTEM; - private ZenModeConfig mConfig; + protected ZenModeConfig mConfig; private AudioManagerInternal mAudioManager; - private PackageManager mPm; + protected PackageManager mPm; private long mSuppressedEffects; public static final long SUPPRESSED_EFFECT_NOTIFICATIONS = 1; @@ -114,21 +114,33 @@ public class ZenModeHelper { public static final long SUPPRESSED_EFFECT_ALL = SUPPRESSED_EFFECT_CALLS | SUPPRESSED_EFFECT_NOTIFICATIONS; + protected String mDefaultRuleWeeknightsName; + protected String mDefaultRuleEventsName; + protected String mDefaultRuleWeekendsName; + public ZenModeHelper(Context context, Looper looper, ConditionProviders conditionProviders) { mContext = context; mHandler = new H(looper); addCallback(mMetrics); mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); - mDefaultConfig = readDefaultConfig(context.getResources()); - appendDefaultScheduleRules(mDefaultConfig); - appendDefaultEventRules(mDefaultConfig); + + mDefaultConfig = new ZenModeConfig(); + mDefaultRuleWeeknightsName = mContext.getResources() + .getString(R.string.zen_mode_default_weeknights_name); + mDefaultRuleWeekendsName = mContext.getResources() + .getString(R.string.zen_mode_default_weekends_name); + mDefaultRuleEventsName = mContext.getResources() + .getString(R.string.zen_mode_default_events_name); + setDefaultZenRules(mContext); mConfig = mDefaultConfig; mConfigs.put(UserHandle.USER_SYSTEM, mConfig); + mSettingsObserver = new SettingsObserver(mHandler); mSettingsObserver.observe(); mFiltering = new ZenModeFiltering(mContext); mConditions = new ZenModeConditions(this, conditionProviders); mServiceConfig = conditionProviders.getConfig(); + } public Looper getLooper() { @@ -412,6 +424,56 @@ public class ZenModeHelper { } } + public void setDefaultZenRules(Context context) { + mDefaultConfig = readDefaultConfig(context.getResources()); + + mDefaultRuleIds.add(EVENTS_DEFAULT_RULE); + mDefaultRuleIds.add(SCHEDULED_DEFAULT_RULE_1); + mDefaultRuleIds.add(SCHEDULED_DEFAULT_RULE_2); + + appendDefaultRules(mDefaultConfig); + } + + private void appendDefaultRules (ZenModeConfig config) { + appendDefaultScheduleRules(config); + appendDefaultEventRules(config); + } + + // Checks zen rule properties are the same (doesn't check creation time, name nor enabled) + // used to check if default rules were customized or not + private boolean ruleValuesEqual(AutomaticZenRule rule, ZenRule defaultRule) { + if (rule == null || defaultRule == null) { + return false; + } + return rule.getInterruptionFilter() == + NotificationManager.zenModeToInterruptionFilter(defaultRule.zenMode) + && rule.getConditionId().equals(defaultRule.conditionId) + && rule.getOwner().equals(defaultRule.component); + } + + protected void updateDefaultZenRules() { + ZenModeConfig configDefaultRules = new ZenModeConfig(); + appendDefaultRules(configDefaultRules); // "new" localized default rules + for (String ruleId : mDefaultRuleIds) { + AutomaticZenRule currRule = getAutomaticZenRule(ruleId); + ZenRule defaultRule = configDefaultRules.automaticRules.get(ruleId); + // if default rule wasn't customized, use localized name instead of previous + if (ruleValuesEqual(currRule, defaultRule) && + !defaultRule.name.equals(currRule.getName())) { + if (canManageAutomaticZenRule(defaultRule)) { + if (DEBUG) Slog.d(TAG, "Locale change - updating default zen rule name " + + "from " + currRule.getName() + " to " + defaultRule.name); + // update default rule (if locale changed, name of rule will change) + AutomaticZenRule defaultAutoRule = createAutomaticZenRule(defaultRule); + // ensure enabled state is carried over from current rule + defaultAutoRule.setEnabled(currRule.isEnabled()); + updateAutomaticZenRule(ruleId, defaultAutoRule, + "locale changed"); + } + } + } + } + private boolean isSystemRule(AutomaticZenRule rule) { return ZenModeConfig.SYSTEM_AUTHORITY.equals(rule.getOwner().getPackageName()); } @@ -453,7 +515,7 @@ public class ZenModeHelper { automaticZenRule.getInterruptionFilter(), Global.ZEN_MODE_OFF); } - private AutomaticZenRule createAutomaticZenRule(ZenRule rule) { + protected AutomaticZenRule createAutomaticZenRule(ZenRule rule) { return new AutomaticZenRule(rule.name, rule.component, rule.conditionId, NotificationManager.zenModeToInterruptionFilter(rule.zenMode), rule.enabled, rule.creationTime); @@ -675,6 +737,9 @@ public class ZenModeHelper { mConfig = config; mHandler.postApplyConfig(config, reason, setRingerMode); return true; + } catch (SecurityException e) { + Log.wtf(TAG, "Invalid rule in config", e); + return false; } finally { Binder.restoreCallingIdentity(identity); } @@ -853,12 +918,11 @@ public class ZenModeHelper { weeknights.endHour = 7; final ZenRule rule1 = new ZenRule(); rule1.enabled = false; - rule1.name = mContext.getResources() - .getString(R.string.zen_mode_default_weeknights_name); + rule1.name = mDefaultRuleWeeknightsName; rule1.conditionId = ZenModeConfig.toScheduleConditionId(weeknights); rule1.zenMode = Global.ZEN_MODE_ALARMS; rule1.component = ScheduleConditionProvider.COMPONENT; - rule1.id = ZenModeConfig.newRuleId(); + rule1.id = SCHEDULED_DEFAULT_RULE_1; rule1.creationTime = System.currentTimeMillis(); config.automaticRules.put(rule1.id, rule1); @@ -869,12 +933,11 @@ public class ZenModeHelper { weekends.endHour = 10; final ZenRule rule2 = new ZenRule(); rule2.enabled = false; - rule2.name = mContext.getResources() - .getString(R.string.zen_mode_default_weekends_name); + rule2.name = mDefaultRuleWeekendsName; rule2.conditionId = ZenModeConfig.toScheduleConditionId(weekends); rule2.zenMode = Global.ZEN_MODE_ALARMS; rule2.component = ScheduleConditionProvider.COMPONENT; - rule2.id = ZenModeConfig.newRuleId(); + rule2.id = SCHEDULED_DEFAULT_RULE_2; rule2.creationTime = System.currentTimeMillis(); config.automaticRules.put(rule2.id, rule2); } @@ -887,11 +950,11 @@ public class ZenModeHelper { events.reply = EventInfo.REPLY_YES_OR_MAYBE; final ZenRule rule = new ZenRule(); rule.enabled = false; - rule.name = mContext.getResources().getString(R.string.zen_mode_default_events_name); + rule.name = mDefaultRuleEventsName; rule.conditionId = ZenModeConfig.toEventConditionId(events); rule.zenMode = Global.ZEN_MODE_ALARMS; rule.component = EventConditionProvider.COMPONENT; - rule.id = ZenModeConfig.newRuleId(); + rule.id = EVENTS_DEFAULT_RULE; rule.creationTime = System.currentTimeMillis(); config.automaticRules.put(rule.id, rule); } diff --git a/services/core/java/com/android/server/oemlock/OemLockService.java b/services/core/java/com/android/server/oemlock/OemLockService.java index 5e19b134c4aa8e519546a1ae86a5c189a340ac68..5b3d1eca03bd0cafe443031787d72fba9be4dcc3 100644 --- a/services/core/java/com/android/server/oemlock/OemLockService.java +++ b/services/core/java/com/android/server/oemlock/OemLockService.java @@ -31,6 +31,7 @@ import android.os.UserManager; import android.os.UserManagerInternal; import android.os.UserManagerInternal.UserRestrictionsListener; import android.service.oemlock.IOemLockService; +import android.service.persistentdata.PersistentDataBlockManager; import android.util.Slog; import com.android.server.LocalServices; @@ -98,6 +99,7 @@ public class OemLockService extends SystemService { !newRestrictions.getBoolean(UserManager.DISALLOW_FACTORY_RESET); if (!unlockAllowedByAdmin) { mOemLock.setOemUnlockAllowedByDevice(false); + setPersistentDataBlockOemUnlockAllowedBit(false); } } } @@ -149,11 +151,16 @@ public class OemLockService extends SystemService { final long token = Binder.clearCallingIdentity(); try { - if (!canUserAllowOemUnlock()) { - throw new SecurityException("User cannot allow OEM unlock"); + if (!isOemUnlockAllowedByAdmin()) { + throw new SecurityException("Admin does not allow OEM unlock"); + } + + if (!mOemLock.isOemUnlockAllowedByCarrier()) { + throw new SecurityException("Carrier does not allow OEM unlock"); } mOemLock.setOemUnlockAllowedByDevice(allowedByUser); + setPersistentDataBlockOemUnlockAllowedBit(allowedByUser); } finally { Binder.restoreCallingIdentity(token); } @@ -171,18 +178,6 @@ public class OemLockService extends SystemService { } } - @Override - public boolean canUserAllowOemUnlock() { - enforceOemUnlockReadPermission(); - - final long token = Binder.clearCallingIdentity(); - try { - return isOemUnlockAllowedByAdmin() && mOemLock.isOemUnlockAllowedByCarrier(); - } finally { - Binder.restoreCallingIdentity(token); - } - } - @Override public boolean isOemUnlockAllowed() { enforceOemUnlockReadPermission(); @@ -210,6 +205,20 @@ public class OemLockService extends SystemService { } }; + /** + * Always synchronize the OemUnlockAllowed bit to the FRP partition, which + * is used to erase FRP information on a unlockable device. + */ + private void setPersistentDataBlockOemUnlockAllowedBit(boolean allowed) { + final PersistentDataBlockManager pdbm = (PersistentDataBlockManager) + mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE); + // if mOemLock is PersistentDataBlockLock, then the bit should have already been set + if (pdbm != null && !(mOemLock instanceof PersistentDataBlockLock)) { + Slog.i(TAG, "Update OEM Unlock bit in pst partition to " + allowed); + pdbm.setOemUnlockEnabled(allowed); + } + } + private boolean isOemUnlockAllowedByAdmin() { return !UserManager.get(mContext) .hasUserRestriction(UserManager.DISALLOW_FACTORY_RESET, UserHandle.SYSTEM); diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java index e5c48ccf5442bfbae44e6f0ed991ed481e76b299..423201a5251f400da7d597c585471bf92e5e49f0 100644 --- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java +++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java @@ -100,6 +100,10 @@ public class BackgroundDexOptService extends JobService { getDowngradeUnusedAppsThresholdInMillis(); public static void schedule(Context context) { + if (isBackgroundDexoptDisabled()) { + return; + } + JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); // Schedule a one-off job which scans installed packages and updates @@ -348,8 +352,7 @@ public class BackgroundDexOptService extends JobService { } } else { success = pm.performDexOpt(new DexoptOptions(pkg, - PackageManagerService.REASON_BACKGROUND_DEXOPT, - dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX)); + reason, dexoptFlags | DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX)); } if (success) { // Dexopt succeeded, remove package from the list of failing ones. @@ -477,4 +480,9 @@ public class BackgroundDexOptService extends JobService { } return TimeUnit.DAYS.toMillis(Long.parseLong(sysPropValue)); } + + private static boolean isBackgroundDexoptDisabled() { + return SystemProperties.getBoolean("pm.dexopt.disable_bg_dexopt" /* key */, + false /* default */); + } } diff --git a/services/core/java/com/android/server/pm/BasePermission.java b/services/core/java/com/android/server/pm/BasePermission.java index 21000388e746454212f95c7f95c775ad6915c272..30fda1e5665e97d09b4a9cf53316ca93787bbae1 100644 --- a/services/core/java/com/android/server/pm/BasePermission.java +++ b/services/core/java/com/android/server/pm/BasePermission.java @@ -96,7 +96,7 @@ final class BasePermission { } public boolean isInstant() { - return (protectionLevel & PermissionInfo.PROTECTION_FLAG_EPHEMERAL) != 0; + return (protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) != 0; } public boolean isRuntimeOnly() { diff --git a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java index b217677479cd172ecc1b96225a7dbd9e3e2fc55f..a3811baf2657cfb22ea8148c5e1cc5eb403f57e0 100644 --- a/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java @@ -18,6 +18,7 @@ package com.android.server.pm; import android.Manifest; import android.annotation.NonNull; +import android.app.ActivityManager; import android.app.DownloadManager; import android.app.admin.DevicePolicyManager; import android.companion.CompanionDeviceManager; @@ -582,6 +583,21 @@ final class DefaultPermissionGrantPolicy { } } + if (ActivityManager.isLowRamDeviceStatic()) { + // Allow voice search on low-ram devices + Intent globalSearchIntent = new Intent("android.search.action.GLOBAL_SEARCH"); + PackageParser.Package globalSearchPickerPackage = + getDefaultSystemHandlerActivityPackageLPr(globalSearchIntent, userId); + + if (globalSearchPickerPackage != null + && doesPackageSupportRuntimePermissions(globalSearchPickerPackage)) { + grantRuntimePermissionsLPw(globalSearchPickerPackage, + MICROPHONE_PERMISSIONS, true, userId); + grantRuntimePermissionsLPw(globalSearchPickerPackage, + LOCATION_PERMISSIONS, true, userId); + } + } + // Voice recognition Intent voiceRecoIntent = new Intent("android.speech.RecognitionService"); voiceRecoIntent.addCategory(Intent.CATEGORY_DEFAULT); @@ -624,14 +640,25 @@ final class DefaultPermissionGrantPolicy { grantRuntimePermissionsLPw(musicPackage, STORAGE_PERMISSIONS, userId); } + // Home + Intent homeIntent = new Intent(Intent.ACTION_MAIN); + homeIntent.addCategory(Intent.CATEGORY_HOME); + homeIntent.addCategory(Intent.CATEGORY_LAUNCHER_APP); + PackageParser.Package homePackage = getDefaultSystemHandlerActivityPackageLPr( + homeIntent, userId); + if (homePackage != null + && doesPackageSupportRuntimePermissions(homePackage)) { + grantRuntimePermissionsLPw(homePackage, LOCATION_PERMISSIONS, false, userId); + } + // Watches if (mService.hasSystemFeature(PackageManager.FEATURE_WATCH, 0)) { // Home application on watches - Intent homeIntent = new Intent(Intent.ACTION_MAIN); - homeIntent.addCategory(Intent.CATEGORY_HOME_MAIN); + Intent wearHomeIntent = new Intent(Intent.ACTION_MAIN); + wearHomeIntent.addCategory(Intent.CATEGORY_HOME_MAIN); PackageParser.Package wearHomePackage = getDefaultSystemHandlerActivityPackageLPr( - homeIntent, userId); + wearHomeIntent, userId); if (wearHomePackage != null && doesPackageSupportRuntimePermissions(wearHomePackage)) { diff --git a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java index 562ab3319d64761ffcbb4c42c2cefe6635637b6b..b5ddf8c511f155d28501e3c620b92263c590952c 100644 --- a/services/core/java/com/android/server/pm/EphemeralResolverConnection.java +++ b/services/core/java/com/android/server/pm/EphemeralResolverConnection.java @@ -56,9 +56,9 @@ final class EphemeralResolverConnection implements DeathRecipient { private static final String TAG = "PackageManager"; // This is running in a critical section and the timeout must be sufficiently low private static final long BIND_SERVICE_TIMEOUT_MS = - ("eng".equals(Build.TYPE)) ? 500 : 300; + Build.IS_ENG ? 500 : 300; private static final long CALL_SERVICE_TIMEOUT_MS = - ("eng".equals(Build.TYPE)) ? 200 : 100; + Build.IS_ENG ? 200 : 100; private static final boolean DEBUG_EPHEMERAL = Build.IS_DEBUGGABLE; private final Object mLock = new Object(); @@ -69,8 +69,12 @@ final class EphemeralResolverConnection implements DeathRecipient { /** Intent used to bind to the service */ private final Intent mIntent; + private static final int STATE_IDLE = 0; // no bind operation is ongoing + private static final int STATE_BINDING = 1; // someone is binding and waiting + private static final int STATE_PENDING = 2; // a bind is pending, but the caller is not waiting + @GuardedBy("mLock") - private volatile boolean mIsBinding; + private int mBindState = STATE_IDLE; @GuardedBy("mLock") private IInstantAppResolver mRemoteInstance; @@ -137,23 +141,17 @@ final class EphemeralResolverConnection implements DeathRecipient { private IInstantAppResolver getRemoteInstanceLazy(String token) throws ConnectionException, TimeoutException, InterruptedException { - synchronized (mLock) { - if (mRemoteInstance != null) { - return mRemoteInstance; - } - long binderToken = Binder.clearCallingIdentity(); - try { - bindLocked(token); - } finally { - Binder.restoreCallingIdentity(binderToken); - } - return mRemoteInstance; + long binderToken = Binder.clearCallingIdentity(); + try { + return bind(token); + } finally { + Binder.restoreCallingIdentity(binderToken); } } private void waitForBindLocked(String token) throws TimeoutException, InterruptedException { final long startMillis = SystemClock.uptimeMillis(); - while (mIsBinding) { + while (mBindState != STATE_IDLE) { if (mRemoteInstance != null) { break; } @@ -166,40 +164,81 @@ final class EphemeralResolverConnection implements DeathRecipient { } } - private void bindLocked(String token) + private IInstantAppResolver bind(String token) throws ConnectionException, TimeoutException, InterruptedException { - if (DEBUG_EPHEMERAL && mIsBinding && mRemoteInstance == null) { - Slog.i(TAG, "[" + token + "] Previous bind timed out; waiting for connection"); - } - try { - waitForBindLocked(token); - } catch (TimeoutException e) { - if (DEBUG_EPHEMERAL) { - Slog.i(TAG, "[" + token + "] Previous connection never established; rebinding"); + boolean doUnbind = false; + synchronized (mLock) { + if (mRemoteInstance != null) { + return mRemoteInstance; } - mContext.unbindService(mServiceConnection); - } - if (mRemoteInstance != null) { - return; - } - mIsBinding = true; - if (DEBUG_EPHEMERAL) { - Slog.v(TAG, "[" + token + "] Binding to instant app resolver"); + + if (mBindState == STATE_PENDING) { + // there is a pending bind, let's see if we can use it. + if (DEBUG_EPHEMERAL) { + Slog.i(TAG, "[" + token + "] Previous bind timed out; waiting for connection"); + } + try { + waitForBindLocked(token); + if (mRemoteInstance != null) { + return mRemoteInstance; + } + } catch (TimeoutException e) { + // nope, we might have to try a rebind. + doUnbind = true; + } + } + + if (mBindState == STATE_BINDING) { + // someone was binding when we called bind(), or they raced ahead while we were + // waiting in the PENDING case; wait for their result instead. Last chance! + if (DEBUG_EPHEMERAL) { + Slog.i(TAG, "[" + token + "] Another thread is binding; waiting for connection"); + } + waitForBindLocked(token); + // if the other thread's bindService() returned false, we could still have null. + if (mRemoteInstance != null) { + return mRemoteInstance; + } + throw new ConnectionException(ConnectionException.FAILURE_BIND); + } + mBindState = STATE_BINDING; // our time to shine! :) } + + // only one thread can be here at a time (the one that set STATE_BINDING) boolean wasBound = false; + IInstantAppResolver instance = null; try { + if (doUnbind) { + if (DEBUG_EPHEMERAL) { + Slog.i(TAG, "[" + token + "] Previous connection never established; rebinding"); + } + mContext.unbindService(mServiceConnection); + } + if (DEBUG_EPHEMERAL) { + Slog.v(TAG, "[" + token + "] Binding to instant app resolver"); + } final int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE; wasBound = mContext .bindServiceAsUser(mIntent, mServiceConnection, flags, UserHandle.SYSTEM); if (wasBound) { - waitForBindLocked(token); + synchronized (mLock) { + waitForBindLocked(token); + instance = mRemoteInstance; + return instance; + } } else { Slog.w(TAG, "[" + token + "] Failed to bind to: " + mIntent); throw new ConnectionException(ConnectionException.FAILURE_BIND); } } finally { - mIsBinding = wasBound && mRemoteInstance == null; - mLock.notifyAll(); + synchronized (mLock) { + if (wasBound && instance == null) { + mBindState = STATE_PENDING; + } else { + mBindState = STATE_IDLE; + } + mLock.notifyAll(); + } } } @@ -255,7 +294,9 @@ final class EphemeralResolverConnection implements DeathRecipient { } synchronized (mLock) { mRemoteInstance = IInstantAppResolver.Stub.asInterface(service); - mIsBinding = false; + if (mBindState == STATE_PENDING) { + mBindState = STATE_IDLE; + } try { service.linkToDeath(EphemeralResolverConnection.this, 0 /*flags*/); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/pm/InstantAppRegistry.java b/services/core/java/com/android/server/pm/InstantAppRegistry.java index 211a1c9f3edf9180cfcfcc2a249c433e4384122a..e1e5b355533576112a435da1496a6d9f994e6337 100644 --- a/services/core/java/com/android/server/pm/InstantAppRegistry.java +++ b/services/core/java/com/android/server/pm/InstantAppRegistry.java @@ -293,14 +293,35 @@ class InstantAppRegistry { if (currentCookieFile == null) { continue; } - File expectedCookeFile = computeInstantCookieFile(pkg, userId); - if (!currentCookieFile.equals(expectedCookeFile)) { - Slog.i(LOG_TAG, "Signature for package " + pkg.packageName - + " changed - dropping cookie"); - // Make sure a pending write for the old signed app is cancelled - mCookiePersistence.cancelPendingPersistLPw(pkg, userId); - currentCookieFile.delete(); + + // Before we used only the first signature to compute the SHA 256 but some + // apps could be singed by multiple certs and the cert order is undefined. + // We prefer the modern computation procedure where all certs are taken + // into account but also allow the value from the old computation to avoid + // data loss. + final String[] signaturesSha256Digests = PackageUtils.computeSignaturesSha256Digests( + pkg.mSignatures); + final String signaturesSha256Digest = PackageUtils.computeSignaturesSha256Digest( + signaturesSha256Digests); + + // We prefer a match based on all signatures + if (currentCookieFile.equals(computeInstantCookieFile(pkg.packageName, + signaturesSha256Digest, userId))) { + return; } + + // For backwards compatibility we accept match based on first signature + if (pkg.mSignatures.length > 1 && currentCookieFile.equals(computeInstantCookieFile( + pkg.packageName, signaturesSha256Digests[0], userId))) { + return; + } + + // Sorry, you are out of luck - different signatures - nuke data + Slog.i(LOG_TAG, "Signature for package " + pkg.packageName + + " changed - dropping cookie"); + // Make sure a pending write for the old signed app is cancelled + mCookiePersistence.cancelPendingPersistLPw(pkg, userId); + currentCookieFile.delete(); } } @@ -504,6 +525,11 @@ class InstantAppRegistry { } } + boolean hasInstantApplicationMetadataLPr(String packageName, int userId) { + return hasUninstalledInstantAppStateLPr(packageName, userId) + || hasInstantAppMetadataLPr(packageName, userId); + } + public void deleteInstantApplicationMetadataLPw(@NonNull String packageName, @UserIdInt int userId) { removeUninstalledInstantAppStateLPw((UninstalledInstantAppState state) -> @@ -547,6 +573,33 @@ class InstantAppRegistry { } } + private boolean hasUninstalledInstantAppStateLPr(String packageName, @UserIdInt int userId) { + if (mUninstalledInstantApps == null) { + return false; + } + final List uninstalledAppStates = + mUninstalledInstantApps.get(userId); + if (uninstalledAppStates == null) { + return false; + } + final int appCount = uninstalledAppStates.size(); + for (int i = 0; i < appCount; i++) { + final UninstalledInstantAppState uninstalledAppState = uninstalledAppStates.get(i); + if (packageName.equals(uninstalledAppState.mInstantAppInfo.getPackageName())) { + return true; + } + } + return false; + } + + private boolean hasInstantAppMetadataLPr(String packageName, @UserIdInt int userId) { + final File instantAppDir = getInstantApplicationDir(packageName, userId); + return new File(instantAppDir, INSTANT_APP_METADATA_FILE).exists() + || new File(instantAppDir, INSTANT_APP_ICON_FILE).exists() + || new File(instantAppDir, INSTANT_APP_ANDROID_ID_FILE).exists() + || peekInstantCookieFile(packageName, userId) != null; + } + void pruneInstantApps() { final long maxInstalledCacheDuration = Settings.Global.getLong( mService.mContext.getContentResolver(), @@ -936,11 +989,11 @@ class InstantAppRegistry { } } - private static @NonNull File computeInstantCookieFile(@NonNull PackageParser.Package pkg, - @UserIdInt int userId) { - File appDir = getInstantApplicationDir(pkg.packageName, userId); - String cookieFile = INSTANT_APP_COOKIE_FILE_PREFIX + PackageUtils.computeSha256Digest( - pkg.mSignatures[0].toByteArray()) + INSTANT_APP_COOKIE_FILE_SIFFIX; + private static @NonNull File computeInstantCookieFile(@NonNull String packageName, + @NonNull String sha256Digest, @UserIdInt int userId) { + final File appDir = getInstantApplicationDir(packageName, userId); + final String cookieFile = INSTANT_APP_COOKIE_FILE_PREFIX + + sha256Digest + INSTANT_APP_COOKIE_FILE_SIFFIX; return new File(appDir, cookieFile); } @@ -1071,7 +1124,7 @@ class InstantAppRegistry { } private static @NonNull File getInstantApplicationDir(String packageName, int userId) { - return new File (getInstantApplicationsDir(userId), packageName); + return new File(getInstantApplicationsDir(userId), packageName); } private static void deleteDir(@NonNull File dir) { @@ -1115,9 +1168,20 @@ class InstantAppRegistry { public void schedulePersistLPw(@UserIdInt int userId, @NonNull PackageParser.Package pkg, @NonNull byte[] cookie) { - File cookieFile = computeInstantCookieFile(pkg, userId); + // Before we used only the first signature to compute the SHA 256 but some + // apps could be singed by multiple certs and the cert order is undefined. + // We prefer the modern computation procedure where all certs are taken + // into account and delete the file derived via the legacy hash computation. + File newCookieFile = computeInstantCookieFile(pkg.packageName, + PackageUtils.computeSignaturesSha256Digest(pkg.mSignatures), userId); + if (pkg.mSignatures.length > 0) { + File oldCookieFile = peekInstantCookieFile(pkg.packageName, userId); + if (oldCookieFile != null && !newCookieFile.equals(oldCookieFile)) { + oldCookieFile.delete(); + } + } cancelPendingPersistLPw(pkg, userId); - addPendingPersistCookieLPw(userId, pkg, cookie, cookieFile); + addPendingPersistCookieLPw(userId, pkg, cookie, newCookieFile); sendMessageDelayed(obtainMessage(userId, pkg), PERSIST_COOKIE_DELAY_MILLIS); } diff --git a/services/core/java/com/android/server/pm/InstantAppResolver.java b/services/core/java/com/android/server/pm/InstantAppResolver.java index d0d306c580ba2d4ce1b01a969274fc96e3bc7a2c..5f54c67a35a13224130627dcbf6ab106870d2064 100644 --- a/services/core/java/com/android/server/pm/InstantAppResolver.java +++ b/services/core/java/com/android/server/pm/InstantAppResolver.java @@ -122,7 +122,7 @@ public abstract class InstantAppResolver { } } // Only log successful instant application resolution - if (resolutionStatus == RESOLUTION_SUCCESS) { + if (requestObj.resolveForStart && resolutionStatus == RESOLUTION_SUCCESS) { logMetrics(ACTION_INSTANT_APP_RESOLUTION_PHASE_ONE, startTime, token, resolutionStatus); } @@ -194,6 +194,7 @@ public abstract class InstantAppResolver { requestObj.userId, packageName, splitName, + requestObj.responseObj.installFailureActivity, versionCode, token, false /*needsPhaseTwo*/); @@ -239,6 +240,7 @@ public abstract class InstantAppResolver { int userId, @NonNull String instantAppPackageName, @Nullable String instantAppSplitName, + @Nullable ComponentName installFailureActivity, int versionCode, @Nullable String token, boolean needsPhaseTwo) { @@ -260,15 +262,25 @@ public abstract class InstantAppResolver { // We have all of the data we need; just start the installer without a second phase if (!needsPhaseTwo) { // Intent that is launched if the package couldn't be installed for any reason. - if (failureIntent != null) { + if (failureIntent != null || installFailureActivity != null) { try { + final Intent onFailureIntent; + if (installFailureActivity != null) { + onFailureIntent = new Intent(); + onFailureIntent.setComponent(installFailureActivity); + onFailureIntent.putExtra(Intent.EXTRA_SPLIT_NAME, instantAppSplitName); + onFailureIntent.putExtra(Intent.EXTRA_INTENT, origIntent); + } else { + onFailureIntent = failureIntent; + } final IIntentSender failureIntentTarget = ActivityManager.getService() .getIntentSender( ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage, null /*token*/, null /*resultWho*/, 1 /*requestCode*/, - new Intent[] { failureIntent }, + new Intent[] { onFailureIntent }, new String[] { resolvedType }, - PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT + PendingIntent.FLAG_CANCEL_CURRENT + | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE, null /*bOptions*/, userId); intent.putExtra(Intent.EXTRA_EPHEMERAL_FAILURE, diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java index 73ac05738f0f5969934dfce8c7882c6905d4cca8..6253857d1aa40f957ed979e544c7503722378c12 100644 --- a/services/core/java/com/android/server/pm/OtaDexoptService.java +++ b/services/core/java/com/android/server/pm/OtaDexoptService.java @@ -323,11 +323,6 @@ public class OtaDexoptService extends IOtaDexopt.Stub { new DexoptOptions(pkg.packageName, compilationReason, DexoptOptions.DEXOPT_BOOT_COMPLETE)); - mPackageManagerService.getDexManager().dexoptSecondaryDex( - new DexoptOptions(pkg.packageName, compilationReason, - DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX | - DexoptOptions.DEXOPT_BOOT_COMPLETE)); - return commands; } diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index c6969ed49108e55b48ade492f79d5792e8d56049..300f15fa09259296757e49dcdeab493a8afa8b37 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -110,9 +110,9 @@ public class PackageDexOptimizer { return false; } - // We do not dexopt a priv-app package when pm.dexopt.priv-apps-oob is true. + // We do not dexopt a priv-app package when pm.dexopt.priv-apps is false. if (pkg.isPrivilegedApp()) { - return !SystemProperties.getBoolean("pm.dexopt.priv-apps-oob", false); + return SystemProperties.getBoolean("pm.dexopt.priv-apps", true); } return true; diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index bf64f6427c7ccc7078a2994ec3d99da8f97e10da..1fa37b91b8e8464531536eb618f5f81df664d20f 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -16,17 +16,6 @@ package com.android.server.pm; -import static com.android.internal.util.XmlUtils.readBitmapAttribute; -import static com.android.internal.util.XmlUtils.readBooleanAttribute; -import static com.android.internal.util.XmlUtils.readIntAttribute; -import static com.android.internal.util.XmlUtils.readLongAttribute; -import static com.android.internal.util.XmlUtils.readStringAttribute; -import static com.android.internal.util.XmlUtils.readUriAttribute; -import static com.android.internal.util.XmlUtils.writeBooleanAttribute; -import static com.android.internal.util.XmlUtils.writeIntAttribute; -import static com.android.internal.util.XmlUtils.writeLongAttribute; -import static com.android.internal.util.XmlUtils.writeStringAttribute; -import static com.android.internal.util.XmlUtils.writeUriAttribute; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT; import static org.xmlpull.v1.XmlPullParser.START_TAG; @@ -54,8 +43,6 @@ import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.VersionedPackage; import android.graphics.Bitmap; -import android.graphics.Bitmap.CompressFormat; -import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Binder; import android.os.Bundle; @@ -84,9 +71,6 @@ import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.util.Xml; -import java.io.CharArrayWriter; -import libcore.io.IoUtils; - import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageHelper; @@ -97,10 +81,13 @@ import com.android.internal.util.ImageUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.IoThread; +import libcore.io.IoUtils; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlSerializer; +import java.io.CharArrayWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -125,32 +112,6 @@ public class PackageInstallerService extends IPackageInstaller.Stub { /** XML constants used in {@link #mSessionsFile} */ private static final String TAG_SESSIONS = "sessions"; - private static final String TAG_SESSION = "session"; - private static final String TAG_GRANTED_RUNTIME_PERMISSION = "granted-runtime-permission"; - private static final String ATTR_SESSION_ID = "sessionId"; - private static final String ATTR_USER_ID = "userId"; - private static final String ATTR_INSTALLER_PACKAGE_NAME = "installerPackageName"; - private static final String ATTR_INSTALLER_UID = "installerUid"; - private static final String ATTR_CREATED_MILLIS = "createdMillis"; - private static final String ATTR_SESSION_STAGE_DIR = "sessionStageDir"; - private static final String ATTR_SESSION_STAGE_CID = "sessionStageCid"; - private static final String ATTR_PREPARED = "prepared"; - private static final String ATTR_SEALED = "sealed"; - private static final String ATTR_MODE = "mode"; - private static final String ATTR_INSTALL_FLAGS = "installFlags"; - private static final String ATTR_INSTALL_LOCATION = "installLocation"; - private static final String ATTR_SIZE_BYTES = "sizeBytes"; - private static final String ATTR_APP_PACKAGE_NAME = "appPackageName"; - @Deprecated - private static final String ATTR_APP_ICON = "appIcon"; - private static final String ATTR_APP_LABEL = "appLabel"; - private static final String ATTR_ORIGINATING_URI = "originatingUri"; - private static final String ATTR_ORIGINATING_UID = "originatingUid"; - private static final String ATTR_REFERRER_URI = "referrerUri"; - private static final String ATTR_ABI_OVERRIDE = "abiOverride"; - private static final String ATTR_VOLUME_UUID = "volumeUuid"; - private static final String ATTR_NAME = "name"; - private static final String ATTR_INSTALL_REASON = "installRason"; /** Automatically destroy sessions older than this */ private static final long MAX_AGE_MILLIS = 3 * DateUtils.DAY_IN_MILLIS; @@ -357,8 +318,16 @@ public class PackageInstallerService extends IPackageInstaller.Stub { while ((type = in.next()) != END_DOCUMENT) { if (type == START_TAG) { final String tag = in.getName(); - if (TAG_SESSION.equals(tag)) { - final PackageInstallerSession session = readSessionLocked(in); + if (PackageInstallerSession.TAG_SESSION.equals(tag)) { + final PackageInstallerSession session; + try { + session = PackageInstallerSession.readFromXml(in, mInternalCallback, + mContext, mPm, mInstallThread.getLooper(), mSessionsDir); + } catch (Exception e) { + Slog.e(TAG, "Could not read session", e); + continue; + } + final long age = System.currentTimeMillis() - session.createdMillis; final boolean valid; @@ -397,53 +366,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub { session.dump(pw); mHistoricalSessions.add(writer.toString()); + int installerUid = session.getInstallerUid(); // Increment the number of sessions by this installerUid. - mHistoricalSessionsByInstaller.put( - session.installerUid, - mHistoricalSessionsByInstaller.get(session.installerUid) + 1); - } - - private PackageInstallerSession readSessionLocked(XmlPullParser in) throws IOException, - XmlPullParserException { - final int sessionId = readIntAttribute(in, ATTR_SESSION_ID); - final int userId = readIntAttribute(in, ATTR_USER_ID); - final String installerPackageName = readStringAttribute(in, ATTR_INSTALLER_PACKAGE_NAME); - final int installerUid = readIntAttribute(in, ATTR_INSTALLER_UID, mPm.getPackageUid( - installerPackageName, PackageManager.MATCH_UNINSTALLED_PACKAGES, userId)); - final long createdMillis = readLongAttribute(in, ATTR_CREATED_MILLIS); - final String stageDirRaw = readStringAttribute(in, ATTR_SESSION_STAGE_DIR); - final File stageDir = (stageDirRaw != null) ? new File(stageDirRaw) : null; - final String stageCid = readStringAttribute(in, ATTR_SESSION_STAGE_CID); - final boolean prepared = readBooleanAttribute(in, ATTR_PREPARED, true); - final boolean sealed = readBooleanAttribute(in, ATTR_SEALED); - - final SessionParams params = new SessionParams( - SessionParams.MODE_INVALID); - params.mode = readIntAttribute(in, ATTR_MODE); - params.installFlags = readIntAttribute(in, ATTR_INSTALL_FLAGS); - params.installLocation = readIntAttribute(in, ATTR_INSTALL_LOCATION); - params.sizeBytes = readLongAttribute(in, ATTR_SIZE_BYTES); - params.appPackageName = readStringAttribute(in, ATTR_APP_PACKAGE_NAME); - params.appIcon = readBitmapAttribute(in, ATTR_APP_ICON); - params.appLabel = readStringAttribute(in, ATTR_APP_LABEL); - params.originatingUri = readUriAttribute(in, ATTR_ORIGINATING_URI); - params.originatingUid = - readIntAttribute(in, ATTR_ORIGINATING_UID, SessionParams.UID_UNKNOWN); - params.referrerUri = readUriAttribute(in, ATTR_REFERRER_URI); - params.abiOverride = readStringAttribute(in, ATTR_ABI_OVERRIDE); - params.volumeUuid = readStringAttribute(in, ATTR_VOLUME_UUID); - params.grantedRuntimePermissions = readGrantedRuntimePermissions(in); - params.installReason = readIntAttribute(in, ATTR_INSTALL_REASON); - - final File appIconFile = buildAppIconFile(sessionId); - if (appIconFile.exists()) { - params.appIcon = BitmapFactory.decodeFile(appIconFile.getAbsolutePath()); - params.appIconLastModified = appIconFile.lastModified(); - } - - return new PackageInstallerSession(mInternalCallback, mContext, mPm, - mInstallThread.getLooper(), sessionId, userId, installerPackageName, installerUid, - params, createdMillis, stageDir, stageCid, prepared, sealed); + mHistoricalSessionsByInstaller.put(installerUid, + mHistoricalSessionsByInstaller.get(installerUid) + 1); } private void writeSessionsLocked() { @@ -460,7 +386,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { final int size = mSessions.size(); for (int i = 0; i < size; i++) { final PackageInstallerSession session = mSessions.valueAt(i); - writeSessionLocked(out, session); + session.write(out, mSessionsDir); } out.endTag(null, TAG_SESSIONS); out.endDocument(); @@ -473,106 +399,6 @@ public class PackageInstallerService extends IPackageInstaller.Stub { } } - private void writeSessionLocked(XmlSerializer out, PackageInstallerSession session) - throws IOException { - final SessionParams params = session.params; - - out.startTag(null, TAG_SESSION); - - writeIntAttribute(out, ATTR_SESSION_ID, session.sessionId); - writeIntAttribute(out, ATTR_USER_ID, session.userId); - writeStringAttribute(out, ATTR_INSTALLER_PACKAGE_NAME, - session.installerPackageName); - writeIntAttribute(out, ATTR_INSTALLER_UID, session.installerUid); - writeLongAttribute(out, ATTR_CREATED_MILLIS, session.createdMillis); - if (session.stageDir != null) { - writeStringAttribute(out, ATTR_SESSION_STAGE_DIR, - session.stageDir.getAbsolutePath()); - } - if (session.stageCid != null) { - writeStringAttribute(out, ATTR_SESSION_STAGE_CID, session.stageCid); - } - writeBooleanAttribute(out, ATTR_PREPARED, session.isPrepared()); - writeBooleanAttribute(out, ATTR_SEALED, session.isSealed()); - - writeIntAttribute(out, ATTR_MODE, params.mode); - writeIntAttribute(out, ATTR_INSTALL_FLAGS, params.installFlags); - writeIntAttribute(out, ATTR_INSTALL_LOCATION, params.installLocation); - writeLongAttribute(out, ATTR_SIZE_BYTES, params.sizeBytes); - writeStringAttribute(out, ATTR_APP_PACKAGE_NAME, params.appPackageName); - writeStringAttribute(out, ATTR_APP_LABEL, params.appLabel); - writeUriAttribute(out, ATTR_ORIGINATING_URI, params.originatingUri); - writeIntAttribute(out, ATTR_ORIGINATING_UID, params.originatingUid); - writeUriAttribute(out, ATTR_REFERRER_URI, params.referrerUri); - writeStringAttribute(out, ATTR_ABI_OVERRIDE, params.abiOverride); - writeStringAttribute(out, ATTR_VOLUME_UUID, params.volumeUuid); - writeIntAttribute(out, ATTR_INSTALL_REASON, params.installReason); - - // Persist app icon if changed since last written - final File appIconFile = buildAppIconFile(session.sessionId); - if (params.appIcon == null && appIconFile.exists()) { - appIconFile.delete(); - } else if (params.appIcon != null - && appIconFile.lastModified() != params.appIconLastModified) { - if (LOGD) Slog.w(TAG, "Writing changed icon " + appIconFile); - FileOutputStream os = null; - try { - os = new FileOutputStream(appIconFile); - params.appIcon.compress(CompressFormat.PNG, 90, os); - } catch (IOException e) { - Slog.w(TAG, "Failed to write icon " + appIconFile + ": " + e.getMessage()); - } finally { - IoUtils.closeQuietly(os); - } - - params.appIconLastModified = appIconFile.lastModified(); - } - - writeGrantedRuntimePermissions(out, params.grantedRuntimePermissions); - - out.endTag(null, TAG_SESSION); - } - - private static void writeGrantedRuntimePermissions(XmlSerializer out, - String[] grantedRuntimePermissions) throws IOException { - if (grantedRuntimePermissions != null) { - for (String permission : grantedRuntimePermissions) { - out.startTag(null, TAG_GRANTED_RUNTIME_PERMISSION); - writeStringAttribute(out, ATTR_NAME, permission); - out.endTag(null, TAG_GRANTED_RUNTIME_PERMISSION); - } - } - } - - private static String[] readGrantedRuntimePermissions(XmlPullParser in) - throws IOException, XmlPullParserException { - List permissions = null; - - final int outerDepth = in.getDepth(); - int type; - while ((type = in.next()) != XmlPullParser.END_DOCUMENT - && (type != XmlPullParser.END_TAG || in.getDepth() > outerDepth)) { - if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { - continue; - } - if (TAG_GRANTED_RUNTIME_PERMISSION.equals(in.getName())) { - String permission = readStringAttribute(in, ATTR_NAME); - if (permissions == null) { - permissions = new ArrayList<>(); - } - permissions.add(permission); - } - } - - if (permissions == null) { - return null; - } - - String[] permissionsArray = new String[permissions.size()]; - permissions.toArray(permissionsArray); - return permissionsArray; - } - private File buildAppIconFile(int sessionId) { return new File(mSessionsDir, "app_icon." + sessionId + ".png"); } @@ -615,6 +441,10 @@ public class PackageInstallerService extends IPackageInstaller.Stub { params.installFlags &= ~PackageManager.INSTALL_FROM_ADB; params.installFlags &= ~PackageManager.INSTALL_ALL_USERS; params.installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; + if ((params.installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0 + && !mPm.isCallerVerifier(callingUid)) { + params.installFlags &= ~PackageManager.INSTALL_VIRTUAL_PRELOAD; + } } // Only system components can circumvent runtime permissions when installing. @@ -881,9 +711,11 @@ public class PackageInstallerService extends IPackageInstaller.Stub { synchronized (mSessions) { for (int i = 0; i < mSessions.size(); i++) { final PackageInstallerSession session = mSessions.valueAt(i); - if (Objects.equals(session.installerPackageName, installerPackageName) + + SessionInfo info = session.generateInfo(false); + if (Objects.equals(info.getInstallerPackageName(), installerPackageName) && session.userId == userId) { - result.add(session.generateInfo(false)); + result.add(info); } } } @@ -958,7 +790,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { final int size = sessions.size(); for (int i = 0; i < size; i++) { final PackageInstallerSession session = sessions.valueAt(i); - if (session.installerUid == installerUid) { + if (session.getInstallerUid() == installerUid) { count++; } } @@ -970,7 +802,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { if (callingUid == Process.ROOT_UID) { return true; } else { - return (session != null) && (callingUid == session.installerUid); + return (session != null) && (callingUid == session.getInstallerUid()); } } diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index a4fb98dea28e3a625d23c8883ab2837573efe74e..bf86300a93a82714028ef4776ee4f8c3012a708c 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -25,9 +25,23 @@ import static android.system.OsConstants.O_CREAT; import static android.system.OsConstants.O_RDONLY; import static android.system.OsConstants.O_WRONLY; +import static com.android.internal.util.XmlUtils.readBitmapAttribute; +import static com.android.internal.util.XmlUtils.readBooleanAttribute; +import static com.android.internal.util.XmlUtils.readIntAttribute; +import static com.android.internal.util.XmlUtils.readLongAttribute; +import static com.android.internal.util.XmlUtils.readStringAttribute; +import static com.android.internal.util.XmlUtils.readUriAttribute; +import static com.android.internal.util.XmlUtils.writeBooleanAttribute; +import static com.android.internal.util.XmlUtils.writeIntAttribute; +import static com.android.internal.util.XmlUtils.writeLongAttribute; +import static com.android.internal.util.XmlUtils.writeStringAttribute; +import static com.android.internal.util.XmlUtils.writeUriAttribute; import static com.android.server.pm.PackageInstallerService.prepareExternalStageCid; import static com.android.server.pm.PackageInstallerService.prepareStageDir; +import android.Manifest; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.content.Intent; @@ -45,6 +59,8 @@ import android.content.pm.PackageParser.ApkLite; import android.content.pm.PackageParser.PackageLite; import android.content.pm.PackageParser.PackageParserException; import android.content.pm.Signature; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Binder; import android.os.Bundle; import android.os.FileBridge; @@ -53,6 +69,7 @@ import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.ParcelFileDescriptor; +import android.os.ParcelableException; import android.os.Process; import android.os.RemoteException; import android.os.RevocableFileDescriptor; @@ -79,9 +96,14 @@ import com.android.server.pm.PackageInstallerService.PackageInstallObserverAdapt import libcore.io.IoUtils; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; +import org.xmlpull.v1.XmlSerializer; + import java.io.File; import java.io.FileDescriptor; import java.io.FileFilter; +import java.io.FileOutputStream; import java.io.IOException; import java.security.cert.Certificate; import java.util.ArrayList; @@ -95,6 +117,35 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final String REMOVE_SPLIT_MARKER_EXTENSION = ".removed"; private static final int MSG_COMMIT = 0; + private static final int MSG_SESSION_FINISHED_WITH_EXCEPTION = 1; + + /** XML constants used for persisting a session */ + static final String TAG_SESSION = "session"; + private static final String TAG_GRANTED_RUNTIME_PERMISSION = "granted-runtime-permission"; + private static final String ATTR_SESSION_ID = "sessionId"; + private static final String ATTR_USER_ID = "userId"; + private static final String ATTR_INSTALLER_PACKAGE_NAME = "installerPackageName"; + private static final String ATTR_INSTALLER_UID = "installerUid"; + private static final String ATTR_CREATED_MILLIS = "createdMillis"; + private static final String ATTR_SESSION_STAGE_DIR = "sessionStageDir"; + private static final String ATTR_SESSION_STAGE_CID = "sessionStageCid"; + private static final String ATTR_PREPARED = "prepared"; + private static final String ATTR_SEALED = "sealed"; + private static final String ATTR_MODE = "mode"; + private static final String ATTR_INSTALL_FLAGS = "installFlags"; + private static final String ATTR_INSTALL_LOCATION = "installLocation"; + private static final String ATTR_SIZE_BYTES = "sizeBytes"; + private static final String ATTR_APP_PACKAGE_NAME = "appPackageName"; + @Deprecated + private static final String ATTR_APP_ICON = "appIcon"; + private static final String ATTR_APP_LABEL = "appLabel"; + private static final String ATTR_ORIGINATING_URI = "originatingUri"; + private static final String ATTR_ORIGINATING_UID = "originatingUid"; + private static final String ATTR_REFERRER_URI = "referrerUri"; + private static final String ATTR_ABI_OVERRIDE = "abiOverride"; + private static final String ATTR_VOLUME_UUID = "volumeUuid"; + private static final String ATTR_NAME = "name"; + private static final String ATTR_INSTALL_REASON = "installRason"; // TODO: enforce INSTALL_ALLOW_TEST // TODO: enforce INSTALL_ALLOW_DOWNGRADE @@ -103,12 +154,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private final Context mContext; private final PackageManagerService mPm; private final Handler mHandler; - private final boolean mIsInstallerDeviceOwner; final int sessionId; final int userId; - final String installerPackageName; - final int installerUid; final SessionParams params; final long createdMillis; final int defaultContainerGid; @@ -121,6 +169,17 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private final Object mLock = new Object(); + /** Uid of the creator of this session. */ + private final int mOriginalInstallerUid; + + /** Package of the owner of the installer session */ + @GuardedBy("mLock") + private String mInstallerPackageName; + + /** Uid of the owner of the installer session */ + @GuardedBy("mLock") + private int mInstallerUid; + @GuardedBy("mLock") private float mClientProgress = 0; @GuardedBy("mLock") @@ -131,18 +190,25 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @GuardedBy("mLock") private float mReportedProgress = -1; + /** State of the session. */ @GuardedBy("mLock") private boolean mPrepared = false; @GuardedBy("mLock") private boolean mSealed = false; @GuardedBy("mLock") - private boolean mPermissionsAccepted = false; + private boolean mCommitted = false; @GuardedBy("mLock") private boolean mRelinquished = false; @GuardedBy("mLock") private boolean mDestroyed = false; + /** Permissions have been accepted by the user (see {@link #setPermissionsResult}) */ + @GuardedBy("mLock") + private boolean mPermissionsManuallyAccepted = false; + + @GuardedBy("mLock") private int mFinalStatus; + @GuardedBy("mLock") private String mFinalMessage; @GuardedBy("mLock") @@ -154,9 +220,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private IPackageInstallObserver2 mRemoteObserver; /** Fields derived from commit parsing */ + @GuardedBy("mLock") private String mPackageName; + @GuardedBy("mLock") private int mVersionCode; + @GuardedBy("mLock") private Signature[] mSignatures; + @GuardedBy("mLock") private Certificate[][] mCertificates; /** @@ -204,32 +274,70 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private final Handler.Callback mHandlerCallback = new Handler.Callback() { @Override public boolean handleMessage(Message msg) { - // Cache package manager data without the lock held - final PackageInfo pkgInfo = mPm.getPackageInfo( - params.appPackageName, PackageManager.GET_SIGNATURES - | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId); - final ApplicationInfo appInfo = mPm.getApplicationInfo( - params.appPackageName, 0, userId); - - synchronized (mLock) { - if (msg.obj != null) { - mRemoteObserver = (IPackageInstallObserver2) msg.obj; - } + switch (msg.what) { + case MSG_COMMIT: + synchronized (mLock) { + try { + commitLocked(); + } catch (PackageManagerException e) { + final String completeMsg = ExceptionUtils.getCompleteMessage(e); + Slog.e(TAG, + "Commit of session " + sessionId + " failed: " + completeMsg); + destroyInternal(); + dispatchSessionFinished(e.error, completeMsg, null); + } + } - try { - commitLocked(pkgInfo, appInfo); - } catch (PackageManagerException e) { - final String completeMsg = ExceptionUtils.getCompleteMessage(e); - Slog.e(TAG, "Commit of session " + sessionId + " failed: " + completeMsg); - destroyInternal(); - dispatchSessionFinished(e.error, completeMsg, null); - } + break; + case MSG_SESSION_FINISHED_WITH_EXCEPTION: + PackageManagerException e = (PackageManagerException) msg.obj; - return true; + dispatchSessionFinished(e.error, ExceptionUtils.getCompleteMessage(e), + null); + break; } + + return true; } }; + /** + * @return {@code true} iff the installing is app an device owner? + */ + private boolean isInstallerDeviceOwnerLocked() { + DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService( + Context.DEVICE_POLICY_SERVICE); + + return (dpm != null) && dpm.isDeviceOwnerAppOnCallingUser( + mInstallerPackageName); + } + + /** + * Checks if the permissions still need to be confirmed. + * + *

        This is dependant on the identity of the installer, hence this cannot be cached if the + * installer might still {@link #transfer(String) change}. + * + * @return {@code true} iff we need to ask to confirm the permissions? + */ + private boolean needToAskForPermissionsLocked() { + if (mPermissionsManuallyAccepted) { + return false; + } + + final boolean isPermissionGranted = + (mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, + mInstallerUid) == PackageManager.PERMISSION_GRANTED); + final boolean isInstallerRoot = (mInstallerUid == Process.ROOT_UID); + final boolean forcePermissionPrompt = + (params.installFlags & PackageManager.INSTALL_FORCE_PERMISSION_PROMPT) != 0; + + // Device owners are allowed to silently install packages, so the permission check is + // waived if the installer is the device owner. + return forcePermissionPrompt || !(isPermissionGranted || isInstallerRoot + || isInstallerDeviceOwnerLocked()); + } + public PackageInstallerSession(PackageInstallerService.InternalCallback callback, Context context, PackageManagerService pm, Looper looper, int sessionId, int userId, String installerPackageName, int installerUid, SessionParams params, long createdMillis, @@ -241,8 +349,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { this.sessionId = sessionId; this.userId = userId; - this.installerPackageName = installerPackageName; - this.installerUid = installerUid; + mOriginalInstallerUid = installerUid; + mInstallerPackageName = installerPackageName; + mInstallerUid = installerUid; this.params = params; this.createdMillis = createdMillis; this.stageDir = stageDir; @@ -254,28 +363,18 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } mPrepared = prepared; - mSealed = sealed; - // Device owners are allowed to silently install packages, so the permission check is - // waived if the installer is the device owner. - DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService( - Context.DEVICE_POLICY_SERVICE); - final boolean isPermissionGranted = - (mPm.checkUidPermission(android.Manifest.permission.INSTALL_PACKAGES, installerUid) - == PackageManager.PERMISSION_GRANTED); - final boolean isInstallerRoot = (installerUid == Process.ROOT_UID); - final boolean forcePermissionPrompt = - (params.installFlags & PackageManager.INSTALL_FORCE_PERMISSION_PROMPT) != 0; - mIsInstallerDeviceOwner = (dpm != null) && dpm.isDeviceOwnerAppOnCallingUser( - installerPackageName); - if ((isPermissionGranted - || isInstallerRoot - || mIsInstallerDeviceOwner) - && !forcePermissionPrompt) { - mPermissionsAccepted = true; - } else { - mPermissionsAccepted = false; + if (sealed) { + synchronized (mLock) { + try { + sealAndValidateLocked(); + } catch (PackageManagerException | IOException e) { + destroyInternal(); + throw new IllegalArgumentException(e); + } + } } + final long identity = Binder.clearCallingIdentity(); try { final int uid = mPm.getPackageUid(PackageManagerService.DEFAULT_CONTAINER_PACKAGE, @@ -294,7 +393,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { final SessionInfo info = new SessionInfo(); synchronized (mLock) { info.sessionId = sessionId; - info.installerPackageName = installerPackageName; + info.installerPackageName = mInstallerPackageName; info.resolvedBaseCodePath = (mResolvedBaseFile != null) ? mResolvedBaseFile.getAbsolutePath() : null; info.progress = mProgress; @@ -309,6 +408,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { info.appIcon = params.appIcon; } info.appLabel = params.appLabel; + + info.installLocation = params.installLocation; + info.originatingUri = params.originatingUri; + info.originatingUid = params.originatingUid; + info.referrerUri = params.referrerUri; + info.grantedRuntimePermissions = params.grantedRuntimePermissions; + info.installFlags = params.installFlags; } return info; } @@ -325,14 +431,26 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private void assertPreparedAndNotSealed(String cookie) { - synchronized (mLock) { - if (!mPrepared) { - throw new IllegalStateException(cookie + " before prepared"); - } - if (mSealed) { - throw new SecurityException(cookie + " not allowed after commit"); - } + private void assertPreparedAndNotSealedLocked(String cookie) { + assertPreparedAndNotCommittedOrDestroyedLocked(cookie); + if (mSealed) { + throw new SecurityException(cookie + " not allowed after sealing"); + } + } + + private void assertPreparedAndNotCommittedOrDestroyedLocked(String cookie) { + assertPreparedAndNotDestroyedLocked(cookie); + if (mCommitted) { + throw new SecurityException(cookie + " not allowed after commit"); + } + } + + private void assertPreparedAndNotDestroyedLocked(String cookie) { + if (!mPrepared) { + throw new IllegalStateException(cookie + " before prepared"); + } + if (mDestroyed) { + throw new SecurityException(cookie + " not allowed after destruction"); } } @@ -341,27 +459,27 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * might point at an ASEC mount point, which is why we delay path resolution * until someone actively works with the session. */ - private File resolveStageDir() throws IOException { - synchronized (mLock) { - if (mResolvedStageDir == null) { - if (stageDir != null) { - mResolvedStageDir = stageDir; + private File resolveStageDirLocked() throws IOException { + if (mResolvedStageDir == null) { + if (stageDir != null) { + mResolvedStageDir = stageDir; + } else { + final String path = PackageHelper.getSdDir(stageCid); + if (path != null) { + mResolvedStageDir = new File(path); } else { - final String path = PackageHelper.getSdDir(stageCid); - if (path != null) { - mResolvedStageDir = new File(path); - } else { - throw new IOException("Failed to resolve path to container " + stageCid); - } + throw new IOException("Failed to resolve path to container " + stageCid); } } - return mResolvedStageDir; } + return mResolvedStageDir; } @Override public void setClientProgress(float progress) { synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + // Always publish first staging movement final boolean forcePublish = (mClientProgress == 0); mClientProgress = progress; @@ -372,6 +490,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @Override public void addClientProgress(float progress) { synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + setClientProgress(mClientProgress + progress); } } @@ -389,11 +509,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @Override public String[] getNames() { - assertPreparedAndNotSealed("getNames"); - try { - return resolveStageDir().list(); - } catch (IOException e) { - throw ExceptionUtils.wrap(e); + synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotCommittedOrDestroyedLocked("getNames"); + + try { + return resolveStageDirLocked().list(); + } catch (IOException e) { + throw ExceptionUtils.wrap(e); + } } } @@ -402,20 +526,26 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { if (TextUtils.isEmpty(params.appPackageName)) { throw new IllegalStateException("Must specify package name to remove a split"); } - try { - createRemoveSplitMarker(splitName); - } catch (IOException e) { - throw ExceptionUtils.wrap(e); + + synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotCommittedOrDestroyedLocked("removeSplit"); + + try { + createRemoveSplitMarkerLocked(splitName); + } catch (IOException e) { + throw ExceptionUtils.wrap(e); + } } } - private void createRemoveSplitMarker(String splitName) throws IOException { + private void createRemoveSplitMarkerLocked(String splitName) throws IOException { try { final String markerName = splitName + REMOVE_SPLIT_MARKER_EXTENSION; if (!FileUtils.isValidExtFilename(markerName)) { throw new IllegalArgumentException("Invalid marker: " + markerName); } - final File target = new File(resolveStageDir(), markerName); + final File target = new File(resolveStageDirLocked(), markerName); target.createNewFile(); Os.chmod(target.getAbsolutePath(), 0 /*mode*/); } catch (ErrnoException e) { @@ -439,8 +569,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // will block any attempted install transitions. final RevocableFileDescriptor fd; final FileBridge bridge; + final File stageDir; synchronized (mLock) { - assertPreparedAndNotSealed("openWrite"); + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotSealedLocked("openWrite"); if (PackageInstaller.ENABLE_REVOCABLE_FD) { fd = new RevocableFileDescriptor(); @@ -451,6 +583,8 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { bridge = new FileBridge(); mBridges.add(bridge); } + + stageDir = resolveStageDirLocked(); } try { @@ -461,7 +595,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { final File target; final long identity = Binder.clearCallingIdentity(); try { - target = new File(resolveStageDir(), name); + target = new File(stageDir, name); } finally { Binder.restoreCallingIdentity(identity); } @@ -499,55 +633,111 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @Override public ParcelFileDescriptor openRead(String name) { - try { - return openReadInternal(name); - } catch (IOException e) { - throw ExceptionUtils.wrap(e); + synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotCommittedOrDestroyedLocked("openRead"); + try { + return openReadInternalLocked(name); + } catch (IOException e) { + throw ExceptionUtils.wrap(e); + } } } - private ParcelFileDescriptor openReadInternal(String name) throws IOException { - assertPreparedAndNotSealed("openRead"); - + private ParcelFileDescriptor openReadInternalLocked(String name) throws IOException { try { if (!FileUtils.isValidExtFilename(name)) { throw new IllegalArgumentException("Invalid name: " + name); } - final File target = new File(resolveStageDir(), name); - + final File target = new File(resolveStageDirLocked(), name); final FileDescriptor targetFd = Os.open(target.getAbsolutePath(), O_RDONLY, 0); return new ParcelFileDescriptor(targetFd); - } catch (ErrnoException e) { throw e.rethrowAsIOException(); } } + /** + * Check if the caller is the owner of this session. Otherwise throw a + * {@link SecurityException}. + */ + private void assertCallerIsOwnerOrRootLocked() { + final int callingUid = Binder.getCallingUid(); + if (callingUid != Process.ROOT_UID && callingUid != mInstallerUid) { + throw new SecurityException("Session does not belong to uid " + callingUid); + } + } + + /** + * If anybody is reading or writing data of the session, throw an {@link SecurityException}. + */ + private void assertNoWriteFileTransfersOpenLocked() { + // Verify that all writers are hands-off + for (RevocableFileDescriptor fd : mFds) { + if (!fd.isRevoked()) { + throw new SecurityException("Files still open"); + } + } + for (FileBridge bridge : mBridges) { + if (!bridge.isClosed()) { + throw new SecurityException("Files still open"); + } + } + } + @Override - public void commit(IntentSender statusReceiver) { + public void commit(@NonNull IntentSender statusReceiver, boolean forTransfer) { Preconditions.checkNotNull(statusReceiver); final boolean wasSealed; synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotDestroyedLocked("commit"); + + final PackageInstallObserverAdapter adapter = new PackageInstallObserverAdapter( + mContext, statusReceiver, sessionId, isInstallerDeviceOwnerLocked(), userId); + mRemoteObserver = adapter.getBinder(); + + if (forTransfer) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, null); + + if (mInstallerUid == mOriginalInstallerUid) { + throw new IllegalArgumentException("Session has not been transferred"); + } + } else { + if (mInstallerUid != mOriginalInstallerUid) { + throw new IllegalArgumentException("Session has been transferred"); + } + } + wasSealed = mSealed; if (!mSealed) { - // Verify that all writers are hands-off - for (RevocableFileDescriptor fd : mFds) { - if (!fd.isRevoked()) { - throw new SecurityException("Files still open"); - } - } - for (FileBridge bridge : mBridges) { - if (!bridge.isClosed()) { - throw new SecurityException("Files still open"); - } + try { + sealAndValidateLocked(); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } catch (PackageManagerException e) { + destroyInternal(); + + // Cannot call dispatchFinal synchronous as this might be called from inside the + // system server on the main thread. Hence the call back scheduled in + // dispachFinal has to be scheduled on a different thread. + mHandler.obtainMessage(MSG_SESSION_FINISHED_WITH_EXCEPTION, e).sendToTarget(); + + return; } - mSealed = true; } // Client staging is fully done at this point mClientProgress = 1f; computeProgressLocked(true); + + // This ongoing commit should keep session active, even though client + // will probably close their end. + mActiveCount.incrementAndGet(); + + mCommitted = true; + mHandler.obtainMessage(MSG_COMMIT).sendToTarget(); } if (!wasSealed) { @@ -556,17 +746,98 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // the session lock, since otherwise it's a lock inversion. mCallback.onSessionSealedBlocking(this); } + } + + /** + * Seal the session to prevent further modification and validate the contents of it. + * + *

        The session will be sealed after calling this method even if it failed. + * + * @throws PackageManagerException if the session was sealed but something went wrong. If the + * session was sealed this is the only possible exception. + */ + private void sealAndValidateLocked() throws PackageManagerException, IOException { + assertNoWriteFileTransfersOpenLocked(); + assertPreparedAndNotDestroyedLocked("sealing of session"); + + final PackageInfo pkgInfo = mPm.getPackageInfo( + params.appPackageName, PackageManager.GET_SIGNATURES + | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId); - // This ongoing commit should keep session active, even though client - // will probably close their end. - mActiveCount.incrementAndGet(); + resolveStageDirLocked(); - final PackageInstallObserverAdapter adapter = new PackageInstallObserverAdapter(mContext, - statusReceiver, sessionId, mIsInstallerDeviceOwner, userId); - mHandler.obtainMessage(MSG_COMMIT, adapter.getBinder()).sendToTarget(); + mSealed = true; + + // Verify that stage looks sane with respect to existing application. + // This currently only ensures packageName, versionCode, and certificate + // consistency. + try { + validateInstallLocked(pkgInfo); + } catch (PackageManagerException e) { + throw e; + } catch (Throwable e) { + // Convert all exceptions into package manager exceptions as only those are handled + // in the code above + throw new PackageManagerException(e); + } + + // Read transfers from the original owner stay open, but as the session's data + // cannot be modified anymore, there is no leak of information. } - private void commitLocked(PackageInfo pkgInfo, ApplicationInfo appInfo) + @Override + public void transfer(String packageName) { + Preconditions.checkNotNull(packageName); + + ApplicationInfo newOwnerAppInfo = mPm.getApplicationInfo(packageName, 0, userId); + if (newOwnerAppInfo == null) { + throw new ParcelableException(new PackageManager.NameNotFoundException(packageName)); + } + + if (PackageManager.PERMISSION_GRANTED != mPm.checkUidPermission( + Manifest.permission.INSTALL_PACKAGES, newOwnerAppInfo.uid)) { + throw new SecurityException("Destination package " + packageName + " does not have " + + "the " + Manifest.permission.INSTALL_PACKAGES + " permission"); + } + + // Only install flags that can be verified by the app the session is transferred to are + // allowed. The parameters can be read via PackageInstaller.SessionInfo. + if (!params.areHiddenOptionsSet()) { + throw new SecurityException("Can only transfer sessions that use public options"); + } + + synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + assertPreparedAndNotSealedLocked("transfer"); + + try { + sealAndValidateLocked(); + } catch (IOException e) { + throw new IllegalStateException(e); + } catch (PackageManagerException e) { + // Session is sealed but could not be verified, we need to destroy it + destroyInternal(); + dispatchSessionFinished(e.error, ExceptionUtils.getCompleteMessage(e), null); + + throw new IllegalArgumentException("Package is not valid", e); + } + + if (!mPackageName.equals(mInstallerPackageName)) { + throw new SecurityException("Can only transfer sessions that update the original " + + "installer"); + } + + mInstallerPackageName = packageName; + mInstallerUid = newOwnerAppInfo.uid; + } + + // 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); + } + + private void commitLocked() throws PackageManagerException { if (mDestroyed) { throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR, "Session destroyed"); @@ -575,23 +846,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR, "Session not sealed"); } - try { - resolveStageDir(); - } catch (IOException e) { - throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR, - "Failed to resolve stage location", e); - } - - // Verify that stage looks sane with respect to existing application. - // This currently only ensures packageName, versionCode, and certificate - // consistency. - validateInstallLocked(pkgInfo, appInfo); - Preconditions.checkNotNull(mPackageName); Preconditions.checkNotNull(mSignatures); Preconditions.checkNotNull(mResolvedBaseFile); - if (!mPermissionsAccepted) { + if (needToAskForPermissionsLocked()) { // User needs to accept permissions; give installer an intent they // can use to involve user. final Intent intent = new Intent(PackageInstaller.ACTION_CONFIRM_PERMISSIONS); @@ -604,7 +863,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // Commit was keeping session marked as active until now; release // that extra refcount so session appears idle. - close(); + closeInternal(false); return; } @@ -621,7 +880,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { if (params.mode == SessionParams.MODE_INHERIT_EXISTING) { try { final List fromFiles = mResolvedInheritedFiles; - final File toDir = resolveStageDir(); + final File toDir = resolveStageDirLocked(); if (LOGD) Slog.d(TAG, "Inherited files: " + mResolvedInheritedFiles); if (!mResolvedInheritedFiles.isEmpty() && mInheritedFilesBase == null) { @@ -682,7 +941,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mRelinquished = true; mPm.installStage(mPackageName, stageDir, stageCid, localObserver, params, - installerPackageName, installerUid, user, mCertificates); + mInstallerPackageName, mInstallerUid, user, mCertificates); } /** @@ -697,7 +956,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * Note that upgrade compatibility is still performed by * {@link PackageManagerService}. */ - private void validateInstallLocked(PackageInfo pkgInfo, ApplicationInfo appInfo) + private void validateInstallLocked(@Nullable PackageInfo pkgInfo) throws PackageManagerException { mPackageName = null; mVersionCode = -1; @@ -707,6 +966,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mResolvedStagedFiles.clear(); mResolvedInheritedFiles.clear(); + try { + resolveStageDirLocked(); + } catch (IOException e) { + throw new PackageManagerException(INSTALL_FAILED_CONTAINER_ERROR, + "Failed to resolve stage location", e); + } + final File[] removedFiles = mResolvedStageDir.listFiles(sRemovedFilter); final List removeSplitList = new ArrayList<>(); if (!ArrayUtils.isEmpty(removedFiles)) { @@ -751,7 +1017,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mCertificates = apk.certificates; } - assertApkConsistent(String.valueOf(addedFile), apk); + assertApkConsistentLocked(String.valueOf(addedFile), apk); // Take this opportunity to enforce uniform naming final String targetName; @@ -779,6 +1045,11 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } if (removeSplitList.size() > 0) { + if (pkgInfo == null) { + throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, + "Missing existing base package for " + mPackageName); + } + // validate split names marked for removal for (String splitName : removeSplitList) { if (!ArrayUtils.contains(pkgInfo.splitNames, splitName)) { @@ -806,13 +1077,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } else { // Partial installs must be consistent with existing install - if (appInfo == null) { + if (pkgInfo == null || pkgInfo.applicationInfo == null) { throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, "Missing existing base package for " + mPackageName); } final PackageLite existing; final ApkLite existingBase; + ApplicationInfo appInfo = pkgInfo.applicationInfo; try { existing = PackageParser.parsePackageLite(new File(appInfo.getCodePath()), 0); existingBase = PackageParser.parseApkLite(new File(appInfo.getBaseCodePath()), @@ -821,7 +1093,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { throw PackageManagerException.from(e); } - assertApkConsistent("Existing base", existingBase); + assertApkConsistentLocked("Existing base", existingBase); // Inherit base if not overridden if (mResolvedBaseFile == null) { @@ -870,7 +1142,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - private void assertApkConsistent(String tag, ApkLite apk) + private void assertApkConsistentLocked(String tag, ApkLite apk) throws PackageManagerException { if (!mPackageName.equals(apk.packageName)) { throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, tag + " package " @@ -951,6 +1223,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return true; } + /** + * @return the uid of the owner this session + */ + public int getInstallerUid() { + synchronized (mLock) { + return mInstallerUid; + } + } + private static String getRelativePath(File file, File base) throws IOException { final String pathStr = file.getAbsolutePath(); final String baseStr = base.getAbsolutePath(); @@ -1098,9 +1379,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { if (accepted) { // Mark and kick off another install pass synchronized (mLock) { - mPermissionsAccepted = true; + mPermissionsManuallyAccepted = true; + mHandler.obtainMessage(MSG_COMMIT).sendToTarget(); } - mHandler.obtainMessage(MSG_COMMIT).sendToTarget(); } else { destroyInternal(); dispatchSessionFinished(INSTALL_FAILED_ABORTED, "User rejected permissions", null); @@ -1112,7 +1393,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { mCallback.onSessionActiveChanged(this, true); } + boolean wasPrepared; synchronized (mLock) { + wasPrepared = mPrepared; if (!mPrepared) { if (stageDir != null) { prepareStageDir(stageDir); @@ -1133,35 +1416,63 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } mPrepared = true; - mCallback.onSessionPrepared(this); } } + + if (!wasPrepared) { + mCallback.onSessionPrepared(this); + } } @Override public void close() { - if (mActiveCount.decrementAndGet() == 0) { + closeInternal(true); + } + + private void closeInternal(boolean checkCaller) { + int activeCount; + synchronized (mLock) { + if (checkCaller) { + assertCallerIsOwnerOrRootLocked(); + } + + activeCount = mActiveCount.decrementAndGet(); + } + + if (activeCount == 0) { mCallback.onSessionActiveChanged(this, false); } } @Override public void abandon() { - if (mRelinquished) { - Slog.d(TAG, "Ignoring abandon after commit relinquished control"); - return; + synchronized (mLock) { + assertCallerIsOwnerOrRootLocked(); + + if (mRelinquished) { + Slog.d(TAG, "Ignoring abandon after commit relinquished control"); + return; + } + destroyInternal(); } - destroyInternal(); + dispatchSessionFinished(INSTALL_FAILED_ABORTED, "Session was abandoned", null); } private void dispatchSessionFinished(int returnCode, String msg, Bundle extras) { - mFinalStatus = returnCode; - mFinalMessage = msg; + final IPackageInstallObserver2 observer; + final String packageName; + synchronized (mLock) { + mFinalStatus = returnCode; + mFinalMessage = msg; + + observer = mRemoteObserver; + packageName = mPackageName; + } - if (mRemoteObserver != null) { + if (observer != null) { try { - mRemoteObserver.onPackageInstalled(mPackageName, returnCode, msg, extras); + observer.onPackageInstalled(packageName, returnCode, msg, extras); } catch (RemoteException ignored) { } } @@ -1212,8 +1523,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { pw.increaseIndent(); pw.printPair("userId", userId); - pw.printPair("installerPackageName", installerPackageName); - pw.printPair("installerUid", installerUid); + pw.printPair("mOriginalInstallerUid", mOriginalInstallerUid); + pw.printPair("mInstallerPackageName", mInstallerPackageName); + pw.printPair("mInstallerUid", mInstallerUid); pw.printPair("createdMillis", createdMillis); pw.printPair("stageDir", stageDir); pw.printPair("stageCid", stageCid); @@ -1224,7 +1536,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { pw.printPair("mClientProgress", mClientProgress); pw.printPair("mProgress", mProgress); pw.printPair("mSealed", mSealed); - pw.printPair("mPermissionsAccepted", mPermissionsAccepted); + pw.printPair("mPermissionsManuallyAccepted", mPermissionsManuallyAccepted); pw.printPair("mRelinquished", mRelinquished); pw.printPair("mDestroyed", mDestroyed); pw.printPair("mFds", mFds.size()); @@ -1235,4 +1547,174 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { pw.decreaseIndent(); } + + private static void writeGrantedRuntimePermissionsLocked(XmlSerializer out, + String[] grantedRuntimePermissions) throws IOException { + if (grantedRuntimePermissions != null) { + for (String permission : grantedRuntimePermissions) { + out.startTag(null, TAG_GRANTED_RUNTIME_PERMISSION); + writeStringAttribute(out, ATTR_NAME, permission); + out.endTag(null, TAG_GRANTED_RUNTIME_PERMISSION); + } + } + } + + private static File buildAppIconFile(int sessionId, @NonNull File sessionsDir) { + return new File(sessionsDir, "app_icon." + sessionId + ".png"); + } + + /** + * Write this session to a {@link XmlSerializer}. + * + * @param out Where to write the session to + * @param sessionsDir The directory containing the sessions + */ + void write(@NonNull XmlSerializer out, @NonNull File sessionsDir) throws IOException { + synchronized (mLock) { + if (mDestroyed) { + return; + } + + out.startTag(null, TAG_SESSION); + + writeIntAttribute(out, ATTR_SESSION_ID, sessionId); + writeIntAttribute(out, ATTR_USER_ID, userId); + writeStringAttribute(out, ATTR_INSTALLER_PACKAGE_NAME, + mInstallerPackageName); + writeIntAttribute(out, ATTR_INSTALLER_UID, mInstallerUid); + writeLongAttribute(out, ATTR_CREATED_MILLIS, createdMillis); + if (stageDir != null) { + writeStringAttribute(out, ATTR_SESSION_STAGE_DIR, + stageDir.getAbsolutePath()); + } + if (stageCid != null) { + writeStringAttribute(out, ATTR_SESSION_STAGE_CID, stageCid); + } + writeBooleanAttribute(out, ATTR_PREPARED, isPrepared()); + writeBooleanAttribute(out, ATTR_SEALED, isSealed()); + + writeIntAttribute(out, ATTR_MODE, params.mode); + writeIntAttribute(out, ATTR_INSTALL_FLAGS, params.installFlags); + writeIntAttribute(out, ATTR_INSTALL_LOCATION, params.installLocation); + writeLongAttribute(out, ATTR_SIZE_BYTES, params.sizeBytes); + writeStringAttribute(out, ATTR_APP_PACKAGE_NAME, params.appPackageName); + writeStringAttribute(out, ATTR_APP_LABEL, params.appLabel); + writeUriAttribute(out, ATTR_ORIGINATING_URI, params.originatingUri); + writeIntAttribute(out, ATTR_ORIGINATING_UID, params.originatingUid); + writeUriAttribute(out, ATTR_REFERRER_URI, params.referrerUri); + writeStringAttribute(out, ATTR_ABI_OVERRIDE, params.abiOverride); + writeStringAttribute(out, ATTR_VOLUME_UUID, params.volumeUuid); + writeIntAttribute(out, ATTR_INSTALL_REASON, params.installReason); + + // Persist app icon if changed since last written + File appIconFile = buildAppIconFile(sessionId, sessionsDir); + if (params.appIcon == null && appIconFile.exists()) { + appIconFile.delete(); + } else if (params.appIcon != null + && appIconFile.lastModified() != params.appIconLastModified) { + if (LOGD) Slog.w(TAG, "Writing changed icon " + appIconFile); + FileOutputStream os = null; + try { + os = new FileOutputStream(appIconFile); + params.appIcon.compress(Bitmap.CompressFormat.PNG, 90, os); + } catch (IOException e) { + Slog.w(TAG, "Failed to write icon " + appIconFile + ": " + e.getMessage()); + } finally { + IoUtils.closeQuietly(os); + } + + params.appIconLastModified = appIconFile.lastModified(); + } + + writeGrantedRuntimePermissionsLocked(out, params.grantedRuntimePermissions); + } + + out.endTag(null, TAG_SESSION); + } + + private static String[] readGrantedRuntimePermissions(XmlPullParser in) + throws IOException, XmlPullParserException { + List permissions = null; + + final int outerDepth = in.getDepth(); + int type; + while ((type = in.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || in.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { + continue; + } + if (TAG_GRANTED_RUNTIME_PERMISSION.equals(in.getName())) { + String permission = readStringAttribute(in, ATTR_NAME); + if (permissions == null) { + permissions = new ArrayList<>(); + } + permissions.add(permission); + } + } + + if (permissions == null) { + return null; + } + + String[] permissionsArray = new String[permissions.size()]; + permissions.toArray(permissionsArray); + return permissionsArray; + } + + /** + * Read new session from a {@link XmlPullParser xml description} and create it. + * + * @param in The source of the description + * @param callback Callback the session uses to notify about changes of it's state + * @param context Context to be used by the session + * @param pm PackageManager to use by the session + * @param installerThread Thread to be used for callbacks of this session + * @param sessionsDir The directory the sessions are stored in + * + * @return The newly created session + */ + public static PackageInstallerSession readFromXml(@NonNull XmlPullParser in, + @NonNull PackageInstallerService.InternalCallback callback, @NonNull Context context, + @NonNull PackageManagerService pm, Looper installerThread, @NonNull File sessionsDir) + throws IOException, XmlPullParserException { + final int sessionId = readIntAttribute(in, ATTR_SESSION_ID); + final int userId = readIntAttribute(in, ATTR_USER_ID); + final String installerPackageName = readStringAttribute(in, ATTR_INSTALLER_PACKAGE_NAME); + final int installerUid = readIntAttribute(in, ATTR_INSTALLER_UID, pm.getPackageUid( + installerPackageName, PackageManager.MATCH_UNINSTALLED_PACKAGES, userId)); + final long createdMillis = readLongAttribute(in, ATTR_CREATED_MILLIS); + final String stageDirRaw = readStringAttribute(in, ATTR_SESSION_STAGE_DIR); + final File stageDir = (stageDirRaw != null) ? new File(stageDirRaw) : null; + final String stageCid = readStringAttribute(in, ATTR_SESSION_STAGE_CID); + final boolean prepared = readBooleanAttribute(in, ATTR_PREPARED, true); + final boolean sealed = readBooleanAttribute(in, ATTR_SEALED); + + final SessionParams params = new SessionParams( + SessionParams.MODE_INVALID); + params.mode = readIntAttribute(in, ATTR_MODE); + params.installFlags = readIntAttribute(in, ATTR_INSTALL_FLAGS); + params.installLocation = readIntAttribute(in, ATTR_INSTALL_LOCATION); + params.sizeBytes = readLongAttribute(in, ATTR_SIZE_BYTES); + params.appPackageName = readStringAttribute(in, ATTR_APP_PACKAGE_NAME); + params.appIcon = readBitmapAttribute(in, ATTR_APP_ICON); + params.appLabel = readStringAttribute(in, ATTR_APP_LABEL); + params.originatingUri = readUriAttribute(in, ATTR_ORIGINATING_URI); + params.originatingUid = + readIntAttribute(in, ATTR_ORIGINATING_UID, SessionParams.UID_UNKNOWN); + params.referrerUri = readUriAttribute(in, ATTR_REFERRER_URI); + params.abiOverride = readStringAttribute(in, ATTR_ABI_OVERRIDE); + params.volumeUuid = readStringAttribute(in, ATTR_VOLUME_UUID); + params.grantedRuntimePermissions = readGrantedRuntimePermissions(in); + params.installReason = readIntAttribute(in, ATTR_INSTALL_REASON); + + final File appIconFile = buildAppIconFile(sessionId, sessionsDir); + if (appIconFile.exists()) { + params.appIcon = BitmapFactory.decodeFile(appIconFile.getAbsolutePath()); + params.appIconLastModified = appIconFile.lastModified(); + } + + return new PackageInstallerSession(callback, context, pm, + installerThread, sessionId, userId, installerPackageName, installerUid, + params, createdMillis, stageDir, stageCid, prepared, sealed); + } } diff --git a/services/core/java/com/android/server/pm/PackageManagerException.java b/services/core/java/com/android/server/pm/PackageManagerException.java index 0e3f17360e7b1b804903cc4fc0de96e90a19e1b8..0793b091265e0c03c82a1b6eaa6c0406cc0d5a61 100644 --- a/services/core/java/com/android/server/pm/PackageManagerException.java +++ b/services/core/java/com/android/server/pm/PackageManagerException.java @@ -40,6 +40,11 @@ public class PackageManagerException extends Exception { this.error = error; } + public PackageManagerException(Throwable e) { + super(e); + this.error = PackageManager.INSTALL_FAILED_INTERNAL_ERROR; + } + public static PackageManagerException from(PackageParserException e) throws PackageManagerException { throw new PackageManagerException(e.error, e.getMessage(), e.getCause()); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 21955874c029db17ae9f7aa950fb06421b17e4f5..6dcc0895ca7143591361e3ffbfb66686be0f3108 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -58,7 +58,6 @@ import static android.content.pm.PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE import static android.content.pm.PackageManager.INSTALL_FORWARD_LOCK; import static android.content.pm.PackageManager.INSTALL_INTERNAL; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES; -import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK; @@ -78,6 +77,7 @@ import static android.content.pm.PackageManager.MOVE_FAILED_3RD_PARTY_NOT_ALLOWE import static android.content.pm.PackageManager.MOVE_FAILED_DEVICE_ADMIN; import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST; import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR; +import static android.content.pm.PackageManager.MOVE_FAILED_LOCKED_USER; import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING; import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE; import static android.content.pm.PackageManager.PERMISSION_DENIED; @@ -85,8 +85,11 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.pm.PackageParser.PARSE_IS_PRIVILEGED; import static android.content.pm.PackageParser.isApkFile; import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER; +import static android.os.storage.StorageManager.FLAG_STORAGE_CE; +import static android.os.storage.StorageManager.FLAG_STORAGE_DE; import static android.system.OsConstants.O_CREAT; import static android.system.OsConstants.O_RDWR; + import static com.android.internal.app.IntentForwarderActivity.FORWARD_INTENT_TO_MANAGED_PROFILE; import static com.android.internal.app.IntentForwarderActivity.FORWARD_INTENT_TO_PARENT; import static com.android.internal.content.NativeLibraryHelper.LIB64_DIR_NAME; @@ -102,6 +105,7 @@ import static com.android.server.pm.PackageManagerServiceCompilerMapping.getDefa import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_FAILURE; import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_SUCCESS; import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED; + import static dalvik.system.DexFile.getNonProfileGuidedCompilerFilter; import android.Manifest; @@ -130,6 +134,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.AppsQueryHelper; import android.content.pm.AuxiliaryResolveInfo; import android.content.pm.ChangedPackages; +import android.content.pm.ComponentInfo; import android.content.pm.FallbackCategoryProvider; import android.content.pm.FeatureInfo; import android.content.pm.IDexModuleRegisterCallback; @@ -140,6 +145,7 @@ import android.content.pm.IPackageDeleteObserver2; import android.content.pm.IPackageInstallObserver2; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageManager; +import android.content.pm.IPackageManagerNative; import android.content.pm.IPackageMoveObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.InstantAppInfo; @@ -223,7 +229,7 @@ import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Base64; -import android.util.BootTimingsTraceLog; +import android.util.TimingsTraceLog; import android.util.DisplayMetrics; import android.util.EventLog; import android.util.ExceptionUtils; @@ -289,6 +295,7 @@ import dalvik.system.DexFile; import dalvik.system.VMRuntime; import libcore.io.IoUtils; +import libcore.io.Streams; import libcore.util.EmptyArray; import org.xmlpull.v1.XmlPullParser; @@ -306,6 +313,8 @@ import java.io.FileOutputStream; import java.io.FileReader; import java.io.FilenameFilter; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -338,6 +347,7 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.zip.GZIPInputStream; /** * Keep track of all those APKs everywhere. @@ -391,6 +401,7 @@ public class PackageManagerService extends IPackageManager.Stub private static final boolean DEBUG_FILTERS = false; private static final boolean DEBUG_PERMISSIONS = false; private static final boolean DEBUG_SHARED_LIBRARIES = false; + private static final boolean DEBUG_COMPRESSION = Build.IS_DEBUGGABLE; // Debug output for dexopting. This is shared between PackageManagerService, OtaDexoptService // and PackageDexOptimizer. All these classes have their own flag to allow switching a single @@ -441,10 +452,15 @@ public class PackageManagerService extends IPackageManager.Stub static final int SCAN_FIRST_BOOT_OR_UPGRADE = 1<<16; static final int SCAN_AS_INSTANT_APP = 1<<17; static final int SCAN_AS_FULL_APP = 1<<18; + static final int SCAN_AS_VIRTUAL_PRELOAD = 1<<19; /** Should not be with the scan flags */ static final int FLAGS_REMOVE_CHATTY = 1<<31; private static final String STATIC_SHARED_LIB_DELIMITER = "_"; + /** Extension of the compressed packages */ + private final static String COMPRESSED_EXTENSION = ".gz"; + /** Suffix of stub packages on the system partition */ + private final static String STUB_SUFFIX = "-Stub"; private static final int[] EMPTY_INT_ARRAY = new int[0]; @@ -729,6 +745,9 @@ public class PackageManagerService extends IPackageManager.Stub final ProtectedPackages mProtectedPackages; + @GuardedBy("mLoadedVolumes") + final ArraySet mLoadedVolumes = new ArraySet<>(); + boolean mFirstBoot; PackageManagerInternal.ExternalSourcesPolicy mExternalSourcesPolicy; @@ -927,7 +946,8 @@ public class PackageManagerService extends IPackageManager.Stub final ArraySet mTransferedPackages = new ArraySet(); // Broadcast actions that are only available to the system. - final ArraySet mProtectedBroadcasts = new ArraySet(); + @GuardedBy("mProtectedBroadcasts") + final ArraySet mProtectedBroadcasts = new ArraySet<>(); /** List of packages waiting for verification. */ final SparseArray mPendingVerification @@ -1061,14 +1081,12 @@ public class PackageManagerService extends IPackageManager.Stub scheduleWriteSettingsLocked(); } } - sendVerificationRequest(userId, verificationId, ivs); + sendVerificationRequest(verificationId, ivs); } mCurrentIntentFilterVerifications.clear(); } - private void sendVerificationRequest(int userId, int verificationId, - IntentFilterVerificationState ivs) { - + private void sendVerificationRequest(int verificationId, IntentFilterVerificationState ivs) { Intent verificationIntent = new Intent(Intent.ACTION_INTENT_FILTER_NEEDS_VERIFICATION); verificationIntent.putExtra( PackageManager.EXTRA_INTENT_FILTER_VERIFICATION_ID, @@ -1088,10 +1106,9 @@ public class PackageManagerService extends IPackageManager.Stub DeviceIdleController.LocalService idleController = getDeviceIdleController(); idleController.addPowerSaveTempWhitelistApp(Process.myUid(), mIntentFilterVerifierComponent.getPackageName(), getVerificationTimeout(), - userId, false, "intent filter verifier"); + UserHandle.USER_SYSTEM, true, "intent filter verifier"); - UserHandle user = new UserHandle(userId); - mContext.sendBroadcastAsUser(verificationIntent, user); + mContext.sendBroadcastAsUser(verificationIntent, UserHandle.SYSTEM); if (DEBUG_DOMAIN_VERIFICATION) Slog.d(TAG, "Sending IntentFilter verification broadcast"); } @@ -1668,12 +1685,14 @@ public class PackageManagerService extends IPackageManager.Stub & PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0; final boolean killApp = (args.installFlags & PackageManager.INSTALL_DONT_KILL_APP) == 0; + final boolean virtualPreload = ((args.installFlags + & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0); final String[] grantedPermissions = args.installGrantPermissions; // Handle the parent package handlePackagePostInstall(parentRes, grantPermissions, killApp, - grantedPermissions, didRestore, args.installerPackageName, - args.observer); + virtualPreload, grantedPermissions, didRestore, + args.installerPackageName, args.observer); // Handle the child packages final int childCount = (parentRes.addedChildPackages != null) @@ -1681,8 +1700,8 @@ public class PackageManagerService extends IPackageManager.Stub for (int i = 0; i < childCount; i++) { PackageInstalledInfo childRes = parentRes.addedChildPackages.valueAt(i); handlePackagePostInstall(childRes, grantPermissions, killApp, - grantedPermissions, false, args.installerPackageName, - args.observer); + virtualPreload, grantedPermissions, false /*didRestore*/, + args.installerPackageName, args.observer); } // Log tracing if needed @@ -1893,7 +1912,7 @@ public class PackageManagerService extends IPackageManager.Stub } private void handlePackagePostInstall(PackageInstalledInfo res, boolean grantPermissions, - boolean killApp, String[] grantedPermissions, + boolean killApp, boolean virtualPreload, String[] grantedPermissions, boolean launchedForRestore, String installerPackage, IPackageInstallObserver2 installObserver) { if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) { @@ -1913,8 +1932,12 @@ public class PackageManagerService extends IPackageManager.Stub final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null; - final String origInstallerPackageName = res.removedInfo != null - ? res.removedInfo.installerPackageName : null; + final String installerPackageName = + res.installerPackageName != null + ? res.installerPackageName + : res.removedInfo != null + ? res.removedInfo.installerPackageName + : null; // If this is the first time we have child packages for a disabled privileged // app that had no children, we grant requested runtime permissions to the new @@ -1967,7 +1990,8 @@ public class PackageManagerService extends IPackageManager.Stub // sendPackageAddedForNewUsers also deals with system apps int appId = UserHandle.getAppId(res.uid); boolean isSystem = res.pkg.applicationInfo.isSystemApp(); - sendPackageAddedForNewUsers(packageName, isSystem, appId, firstUsers); + sendPackageAddedForNewUsers(packageName, isSystem || virtualPreload, + virtualPreload /*startReceiver*/, appId, firstUsers); // Send added for users that don't see the package for the first time Bundle extras = new Bundle(1); @@ -1978,10 +2002,10 @@ public class PackageManagerService extends IPackageManager.Stub sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, updateUsers); - if (origInstallerPackageName != null) { + if (installerPackageName != null) { sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0 /*flags*/, - origInstallerPackageName, null /*finishedReceiver*/, updateUsers); + installerPackageName, null /*finishedReceiver*/, updateUsers); } // Send replaced for users that don't see the package for the first time @@ -1990,10 +2014,10 @@ public class PackageManagerService extends IPackageManager.Stub packageName, extras, 0 /*flags*/, null /*targetPackage*/, null /*finishedReceiver*/, updateUsers); - if (origInstallerPackageName != null) { + if (installerPackageName != null) { sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras, 0 /*flags*/, - origInstallerPackageName, null /*finishedReceiver*/, updateUsers); + installerPackageName, null /*finishedReceiver*/, updateUsers); } sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null /*package*/, null /*extras*/, 0 /*flags*/, @@ -2292,6 +2316,8 @@ public class PackageManagerService extends IPackageManager.Stub factoryTest, onlyCore); m.enableSystemUserPackages(); ServiceManager.addService("package", m); + final PackageManagerNative pmn = m.new PackageManagerNative(); + ServiceManager.addService("package_native", pmn); return m; } @@ -2629,9 +2655,21 @@ public class PackageManagerService extends IPackageManager.Stub | PackageParser.PARSE_IS_SYSTEM_DIR, scanFlags, 0); // Prune any system packages that no longer exist. - final List possiblyDeletedUpdatedSystemApps = new ArrayList(); + final List possiblyDeletedUpdatedSystemApps = new ArrayList<>(); + // Stub packages must either be replaced with full versions in the /data + // partition or be disabled. + final List stubSystemApps = new ArrayList<>(); if (!mOnlyCore) { - Iterator psit = mSettings.mPackages.values().iterator(); + // do this first before mucking with mPackages for the "expecting better" case + final Iterator pkgIterator = mPackages.values().iterator(); + while (pkgIterator.hasNext()) { + final PackageParser.Package pkg = pkgIterator.next(); + if (pkg.isStub) { + stubSystemApps.add(pkg.packageName); + } + } + + final Iterator psit = mSettings.mPackages.values().iterator(); while (psit.hasNext()) { PackageSetting ps = psit.next(); @@ -2675,8 +2713,14 @@ public class PackageManagerService extends IPackageManager.Stub // Actual deletion of code and data will be handled by later // reconciliation step } else { - final PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(ps.name); - if (disabledPs.codePath == null || !disabledPs.codePath.exists()) { + // we still have a disabled system package, but, it still might have + // been removed. check the code path still exists and check there's + // still a package. the latter can happen if an OTA keeps the same + // code path, but, changes the package name. + final PackageSetting disabledPs = + mSettings.getDisabledSystemPkgLPr(ps.name); + if (disabledPs.codePath == null || !disabledPs.codePath.exists() + || disabledPs.pkg == null) { possiblyDeletedUpdatedSystemApps.add(ps.name); } } @@ -2698,9 +2742,21 @@ public class PackageManagerService extends IPackageManager.Stub //delete tmp files deleteTempPackageFiles(); + final int cachedSystemApps = PackageParser.sCachedPackageReadCount.get(); + // Remove any shared userIDs that have no associated packages mSettings.pruneSharedUsersLPw(); - + final long systemScanTime = SystemClock.uptimeMillis() - startTime; + final int systemPackagesCount = mPackages.size(); + Slog.i(TAG, "Finished scanning system apps. Time: " + systemScanTime + + " ms, packageCount: " + systemPackagesCount + + " , timePerPackage: " + + (systemPackagesCount == 0 ? 0 : systemScanTime / systemPackagesCount) + + " , cached: " + cachedSystemApps); + if (mIsUpgrade && systemPackagesCount > 0) { + MetricsLogger.histogram(null, "ota_package_manager_system_app_avg_scan_time", + ((int) systemScanTime) / systemPackagesCount); + } if (!mOnlyCore) { EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_DATA_SCAN_START, SystemClock.uptimeMillis()); @@ -2710,36 +2766,37 @@ public class PackageManagerService extends IPackageManager.Stub | PackageParser.PARSE_FORWARD_LOCK, scanFlags | SCAN_REQUIRE_KNOWN, 0); - /** - * Remove disable package settings for any updated system - * apps that were removed via an OTA. If they're not a - * previously-updated app, remove them completely. - * Otherwise, just revoke their system-level permissions. - */ + // Remove disable package settings for updated system apps that were + // removed via an OTA. If the update is no longer present, remove the + // app completely. Otherwise, revoke their system privileges. for (String deletedAppName : possiblyDeletedUpdatedSystemApps) { PackageParser.Package deletedPkg = mPackages.get(deletedAppName); mSettings.removeDisabledSystemPackageLPw(deletedAppName); - String msg; + final String msg; if (deletedPkg == null) { + // should have found an update, but, we didn't; remove everything msg = "Updated system package " + deletedAppName - + " no longer exists; it's data will be wiped"; + + " no longer exists; removing its data"; // Actual deletion of code and data will be handled by later // reconciliation step } else { - msg = "Updated system app + " + deletedAppName - + " no longer present; removing system privileges for " - + deletedAppName; + // found an update; revoke system privileges + msg = "Updated system package + " + deletedAppName + + " no longer exists; revoking system privileges"; - deletedPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_SYSTEM; + // Don't do anything if a stub is removed from the system image. If + // we were to remove the uncompressed version from the /data partition, + // this is where it'd be done. - PackageSetting deletedPs = mSettings.mPackages.get(deletedAppName); + final PackageSetting deletedPs = mSettings.mPackages.get(deletedAppName); + deletedPkg.applicationInfo.flags &= ~ApplicationInfo.FLAG_SYSTEM; deletedPs.pkgFlags &= ~ApplicationInfo.FLAG_SYSTEM; } logCriticalInfo(Log.WARN, msg); } - /** + /* * Make sure all system apps that we expected to appear on * the userdata partition actually showed up. If they never * appeared, crawl back and revive the system version. @@ -2781,6 +2838,25 @@ public class PackageManagerService extends IPackageManager.Stub } } } + + // Uncompress and install any stubbed system applications. + // This must be done last to ensure all stubs are replaced or disabled. + decompressSystemApplications(stubSystemApps, scanFlags); + + final int cachedNonSystemApps = PackageParser.sCachedPackageReadCount.get() + - cachedSystemApps; + + final long dataScanTime = SystemClock.uptimeMillis() - systemScanTime - startTime; + final int dataPackagesCount = mPackages.size() - systemPackagesCount; + Slog.i(TAG, "Finished scanning non-system apps. Time: " + dataScanTime + + " ms, packageCount: " + dataPackagesCount + + " , timePerPackage: " + + (dataPackagesCount == 0 ? 0 : dataScanTime / dataPackagesCount) + + " , cached: " + cachedNonSystemApps); + if (mIsUpgrade && dataPackagesCount > 0) { + MetricsLogger.histogram(null, "ota_package_manager_data_app_avg_scan_time", + ((int) dataScanTime) / dataPackagesCount); + } } mExpectingBetter.clear(); @@ -2880,7 +2956,7 @@ public class PackageManagerService extends IPackageManager.Stub UserHandle.USER_SYSTEM, storageFlags, true /* migrateAppData */, true /* onlyCoreApps */); mPrepareAppDataFuture = SystemServerInitThreadPool.get().submit(() -> { - BootTimingsTraceLog traceLog = new BootTimingsTraceLog("SystemServerTimingAsync", + TimingsTraceLog traceLog = new TimingsTraceLog("SystemServerTimingAsync", Trace.TRACE_TAG_PACKAGE_MANAGER); traceLog.traceBegin("AppDataFixup"); try { @@ -3010,6 +3086,10 @@ public class PackageManagerService extends IPackageManager.Stub userPackages.put(userId, getInstalledPackages(/*flags*/ 0, userId).getList()); } mDexManager.load(userPackages); + if (mIsUpgrade) { + MetricsLogger.histogram(null, "ota_package_manager_init_time", + (int) (SystemClock.uptimeMillis() - startTime)); + } } // synchronized (mPackages) } // synchronized (mInstallLock) @@ -3034,6 +3114,209 @@ public class PackageManagerService extends IPackageManager.Stub Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); } + /** + * Uncompress and install stub applications. + *

        In order to save space on the system partition, some applications are shipped in a + * compressed form. In addition the compressed bits for the full application, the + * system image contains a tiny stub comprised of only the Android manifest. + *

        During the first boot, attempt to uncompress and install the full application. If + * the application can't be installed for any reason, disable the stub and prevent + * uncompressing the full application during future boots. + *

        In order to forcefully attempt an installation of a full application, go to app + * settings and enable the application. + */ + private void decompressSystemApplications(@NonNull List stubSystemApps, int scanFlags) { + for (int i = stubSystemApps.size() - 1; i >= 0; --i) { + final String pkgName = stubSystemApps.get(i); + // skip if the system package is already disabled + if (mSettings.isDisabledSystemPackageLPr(pkgName)) { + stubSystemApps.remove(i); + continue; + } + // skip if the package isn't installed (?!); this should never happen + final PackageParser.Package pkg = mPackages.get(pkgName); + if (pkg == null) { + stubSystemApps.remove(i); + continue; + } + // skip if the package has been disabled by the user + final PackageSetting ps = mSettings.mPackages.get(pkgName); + if (ps != null) { + final int enabledState = ps.getEnabled(UserHandle.USER_SYSTEM); + if (enabledState == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) { + stubSystemApps.remove(i); + continue; + } + } + + if (DEBUG_COMPRESSION) { + Slog.i(TAG, "Uncompressing system stub; pkg: " + pkgName); + } + + // uncompress the binary to its eventual destination on /data + final File scanFile = decompressPackage(pkg); + if (scanFile == null) { + continue; + } + + // install the package to replace the stub on /system + try { + mSettings.disableSystemPackageLPw(pkgName, true /*replaced*/); + removePackageLI(pkg, true /*chatty*/); + scanPackageTracedLI(scanFile, 0 /*reparseFlags*/, scanFlags, 0, null); + ps.setEnabled(PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, + UserHandle.USER_SYSTEM, "android"); + stubSystemApps.remove(i); + continue; + } catch (PackageManagerException e) { + Slog.e(TAG, "Failed to parse uncompressed system package: " + e.getMessage()); + } + + // any failed attempt to install the package will be cleaned up later + } + + // disable any stub still left; these failed to install the full application + for (int i = stubSystemApps.size() - 1; i >= 0; --i) { + final String pkgName = stubSystemApps.get(i); + final PackageSetting ps = mSettings.mPackages.get(pkgName); + ps.setEnabled(PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + UserHandle.USER_SYSTEM, "android"); + logCriticalInfo(Log.ERROR, "Stub disabled; pkg: " + pkgName); + } + } + + private int decompressFile(File srcFile, File dstFile) throws ErrnoException { + if (DEBUG_COMPRESSION) { + Slog.i(TAG, "Decompress file" + + "; src: " + srcFile.getAbsolutePath() + + ", dst: " + dstFile.getAbsolutePath()); + } + try ( + InputStream fileIn = new GZIPInputStream(new FileInputStream(srcFile)); + OutputStream fileOut = new FileOutputStream(dstFile, false /*append*/); + ) { + Streams.copy(fileIn, fileOut); + Os.chmod(dstFile.getAbsolutePath(), 0644); + return PackageManager.INSTALL_SUCCEEDED; + } catch (IOException e) { + logCriticalInfo(Log.ERROR, "Failed to decompress file" + + "; src: " + srcFile.getAbsolutePath() + + ", dst: " + dstFile.getAbsolutePath()); + } + return PackageManager.INSTALL_FAILED_INTERNAL_ERROR; + } + + private File[] getCompressedFiles(String codePath) { + final File stubCodePath = new File(codePath); + final String stubName = stubCodePath.getName(); + + // The layout of a compressed package on a given partition is as follows : + // + // Compressed artifacts: + // + // /partition/ModuleName/foo.gz + // /partation/ModuleName/bar.gz + // + // Stub artifact: + // + // /partition/ModuleName-Stub/ModuleName-Stub.apk + // + // In other words, stub is on the same partition as the compressed artifacts + // and in a directory that's suffixed with "-Stub". + int idx = stubName.lastIndexOf(STUB_SUFFIX); + if (idx < 0 || (stubName.length() != (idx + STUB_SUFFIX.length()))) { + return null; + } + + final File stubParentDir = stubCodePath.getParentFile(); + if (stubParentDir == null) { + Slog.e(TAG, "Unable to determine stub parent dir for codePath: " + codePath); + return null; + } + + final File compressedPath = new File(stubParentDir, stubName.substring(0, idx)); + final File[] files = compressedPath.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.toLowerCase().endsWith(COMPRESSED_EXTENSION); + } + }); + + if (DEBUG_COMPRESSION && files != null && files.length > 0) { + Slog.i(TAG, "getCompressedFiles[" + codePath + "]: " + Arrays.toString(files)); + } + + return files; + } + + private boolean compressedFileExists(String codePath) { + final File[] compressedFiles = getCompressedFiles(codePath); + return compressedFiles != null && compressedFiles.length > 0; + } + + /** + * Decompresses the given package on the system image onto + * the /data partition. + * @return The directory the package was decompressed into. Otherwise, {@code null}. + */ + private File decompressPackage(PackageParser.Package pkg) { + final File[] compressedFiles = getCompressedFiles(pkg.codePath); + if (compressedFiles == null || compressedFiles.length == 0) { + if (DEBUG_COMPRESSION) { + Slog.i(TAG, "No files to decompress: " + pkg.baseCodePath); + } + return null; + } + final File dstCodePath = + getNextCodePath(Environment.getDataAppDirectory(null), pkg.packageName); + int ret = PackageManager.INSTALL_SUCCEEDED; + try { + Os.mkdir(dstCodePath.getAbsolutePath(), 0755); + Os.chmod(dstCodePath.getAbsolutePath(), 0755); + for (File srcFile : compressedFiles) { + final String srcFileName = srcFile.getName(); + final String dstFileName = srcFileName.substring( + 0, srcFileName.length() - COMPRESSED_EXTENSION.length()); + final File dstFile = new File(dstCodePath, dstFileName); + ret = decompressFile(srcFile, dstFile); + if (ret != PackageManager.INSTALL_SUCCEEDED) { + logCriticalInfo(Log.ERROR, "Failed to decompress" + + "; pkg: " + pkg.packageName + + ", file: " + dstFileName); + break; + } + } + } catch (ErrnoException e) { + logCriticalInfo(Log.ERROR, "Failed to decompress" + + "; pkg: " + pkg.packageName + + ", err: " + e.errno); + } + if (ret == PackageManager.INSTALL_SUCCEEDED) { + final File libraryRoot = new File(dstCodePath, LIB_DIR_NAME); + NativeLibraryHelper.Handle handle = null; + try { + handle = NativeLibraryHelper.Handle.create(dstCodePath); + ret = NativeLibraryHelper.copyNativeBinariesWithOverride(handle, libraryRoot, + null /*abiOverride*/); + } catch (IOException e) { + logCriticalInfo(Log.ERROR, "Failed to extract native libraries" + + "; pkg: " + pkg.packageName); + ret = PackageManager.INSTALL_FAILED_INTERNAL_ERROR; + } finally { + IoUtils.closeQuietly(handle); + } + } + if (ret != PackageManager.INSTALL_SUCCEEDED) { + if (dstCodePath == null || !dstCodePath.exists()) { + return null; + } + removeCodePathLI(dstCodePath); + return null; + } + + return dstCodePath; + } + private void updateInstantAppInstallerLocked(String modifiedPackage) { // we're only interested in updating the installer appliction when 1) it's not // already set or 2) the modified package is the installer @@ -3051,7 +3334,7 @@ public class PackageManagerService extends IPackageManager.Stub } // Disable package parsing on eng builds to allow for faster incremental development. - if ("eng".equals(Build.TYPE)) { + if (Build.IS_ENG) { return null; } @@ -3086,7 +3369,7 @@ public class PackageManagerService extends IPackageManager.Stub // NOTE: When no BUILD_NUMBER is set by the build system, it defaults to a build // that starts with "eng." to signify that this is an engineering build and not // destined for release. - if ("userdebug".equals(Build.TYPE) && Build.VERSION.INCREMENTAL.startsWith("eng.")) { + if (Build.IS_USERDEBUG && Build.VERSION.INCREMENTAL.startsWith("eng.")) { Slog.w(TAG, "Wiping cache directory because the system partition changed."); // Heuristic: If the /system directory has been modified recently due to an "adb sync" @@ -3126,7 +3409,7 @@ public class PackageManagerService extends IPackageManager.Stub final List matches = queryIntentReceiversInternal(intent, PACKAGE_MIME_TYPE, MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE, - UserHandle.USER_SYSTEM); + UserHandle.USER_SYSTEM, false /*allowDynamicSplits*/); if (matches.size() == 1) { return matches.get(0).getComponentInfo().packageName; } else if (matches.size() == 0) { @@ -3186,7 +3469,7 @@ public class PackageManagerService extends IPackageManager.Stub final List matches = queryIntentReceiversInternal(intent, PACKAGE_MIME_TYPE, MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE, - UserHandle.USER_SYSTEM); + UserHandle.USER_SYSTEM, false /*allowDynamicSplits*/); ResolveInfo best = null; final int N = matches.size(); for (int i = 0; i < N; i++) { @@ -3616,8 +3899,7 @@ public class PackageManagerService extends IPackageManager.Stub throw new SecurityException("Package " + packageName + " is currently frozen!"); } - if (!userKeyUnlocked && !(ps.pkg.applicationInfo.isDirectBootAware() - || ps.pkg.applicationInfo.isPartiallyDirectBootAware())) { + if (!userKeyUnlocked && !ps.pkg.applicationInfo.isEncryptionAware()) { throw new SecurityException("Package " + packageName + " is not encryption aware!"); } } @@ -4014,10 +4296,17 @@ public class PackageManagerService extends IPackageManager.Stub return null; } // If the caller is an app that targets pre 26 SDK drop protection flags. - final PermissionInfo permissionInfo = generatePermissionInfo(p, flags); + PermissionInfo permissionInfo = generatePermissionInfo(p, flags); if (permissionInfo != null) { - permissionInfo.protectionLevel = adjustPermissionProtectionFlagsLPr( + final int protectionLevel = adjustPermissionProtectionFlagsLPr( permissionInfo.protectionLevel, packageName, callingUid); + if (permissionInfo.protectionLevel != protectionLevel) { + // If we return different protection level, don't use the cached info + if (p.perm != null && p.perm.info == permissionInfo) { + permissionInfo = new PermissionInfo(permissionInfo); + } + permissionInfo.protectionLevel = protectionLevel; + } } return permissionInfo; } @@ -5583,7 +5872,7 @@ public class PackageManagerService extends IPackageManager.Stub if (eventIdIndex == -1) { if (AppOpsManager.permissionToOpCode(name) == AppOpsManager.OP_NONE - || "user".equals(Build.TYPE)) { + || Build.IS_USER) { Log.i(TAG, "Unknown permission " + name); return MetricsEvent.ACTION_PERMISSION_REQUEST_UNKNOWN; @@ -5857,7 +6146,7 @@ public class PackageManagerService extends IPackageManager.Stub @Override public boolean isProtectedBroadcast(String actionName) { // allow instant applications - synchronized (mPackages) { + synchronized (mProtectedBroadcasts) { if (mProtectedBroadcasts.contains(actionName)) { return true; } else if (actionName != null) { @@ -6192,8 +6481,40 @@ public class PackageManagerService extends IPackageManager.Stub } return ps.name; } + return null; } - return null; + } + + @Override + public String[] getNamesForUids(int[] uids) { + if (uids == null || uids.length == 0) { + return null; + } + final int callingUid = Binder.getCallingUid(); + if (getInstantAppPackageName(callingUid) != null) { + return null; + } + final String[] names = new String[uids.length]; + synchronized (mPackages) { + for (int i = uids.length - 1; i >= 0; i--) { + final int uid = uids[i]; + Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); + if (obj instanceof SharedUserSetting) { + final SharedUserSetting sus = (SharedUserSetting) obj; + names[i] = "shared:" + sus.name; + } else if (obj instanceof PackageSetting) { + final PackageSetting ps = (PackageSetting) obj; + if (filterAppAccessLPr(ps, callingUid, UserHandle.getUserId(callingUid))) { + names[i] = null; + } else { + names[i] = ps.name; + } + } else { + names[i] = null; + } + } + } + return names; } @Override @@ -6322,7 +6643,7 @@ public class PackageManagerService extends IPackageManager.Stub Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "queryIntentActivities"); final List query = queryIntentActivitiesInternal(intent, resolvedType, - flags, callingUid, userId, resolveForStart); + flags, callingUid, userId, resolveForStart, true /*allowDynamicSplits*/); Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER); final ResolveInfo bestChoice = @@ -6466,7 +6787,7 @@ public class PackageManagerService extends IPackageManager.Stub Bundle verificationBundle, int userId) { final Message msg = mHandler.obtainMessage(INSTANT_APP_RESOLUTION_PHASE_TWO, new InstantAppRequest(responseObj, origIntent, resolvedType, - callingPackage, userId, verificationBundle)); + callingPackage, userId, verificationBundle, false /*resolveForStart*/)); mHandler.sendMessage(msg); } @@ -6743,22 +7064,44 @@ public class PackageManagerService extends IPackageManager.Stub // Okay we found a previously set preferred or last chosen app. // If the result set is different from when this - // was created, we need to clear it and re-ask the - // user their preference, if we're looking for an "always" type entry. + // was created, and is not a subset of the preferred set, we need to + // clear it and re-ask the user their preference, if we're looking for + // an "always" type entry. if (always && !pa.mPref.sameSet(query)) { - Slog.i(TAG, "Result set changed, dropping preferred activity for " - + intent + " type " + resolvedType); - if (DEBUG_PREFERRED) { - Slog.v(TAG, "Removing preferred activity since set changed " - + pa.mPref.mComponent); + if (pa.mPref.isSuperset(query)) { + // some components of the set are no longer present in + // the query, but the preferred activity can still be reused + if (DEBUG_PREFERRED) { + Slog.i(TAG, "Result set changed, but PreferredActivity is" + + " still valid as only non-preferred components" + + " were removed for " + intent + " type " + + resolvedType); + } + // remove obsolete components and re-add the up-to-date filter + PreferredActivity freshPa = new PreferredActivity(pa, + pa.mPref.mMatch, + pa.mPref.discardObsoleteComponents(query), + pa.mPref.mComponent, + pa.mPref.mAlways); + pir.removeFilter(pa); + pir.addFilter(freshPa); + changed = true; + } else { + Slog.i(TAG, + "Result set changed, dropping preferred activity for " + + intent + " type " + resolvedType); + if (DEBUG_PREFERRED) { + Slog.v(TAG, "Removing preferred activity since set changed " + + pa.mPref.mComponent); + } + pir.removeFilter(pa); + // Re-add the filter as a "last chosen" entry (!always) + PreferredActivity lastChosen = new PreferredActivity( + pa, pa.mPref.mMatch, null, pa.mPref.mComponent, false); + pir.addFilter(lastChosen); + changed = true; + return null; } - pir.removeFilter(pa); - // Re-add the filter as a "last chosen" entry (!always) - PreferredActivity lastChosen = new PreferredActivity( - pa, pa.mPref.mMatch, null, pa.mPref.mComponent, false); - pir.addFilter(lastChosen); - changed = true; - return null; } // Yay! Either the set matched or we're looking for the last chosen @@ -6867,12 +7210,13 @@ public class PackageManagerService extends IPackageManager.Stub private @NonNull List queryIntentActivitiesInternal(Intent intent, String resolvedType, int flags, int userId) { return queryIntentActivitiesInternal( - intent, resolvedType, flags, Binder.getCallingUid(), userId, false); + intent, resolvedType, flags, Binder.getCallingUid(), userId, + false /*resolveForStart*/, true /*allowDynamicSplits*/); } private @NonNull List queryIntentActivitiesInternal(Intent intent, String resolvedType, int flags, int filterCallingUid, int userId, - boolean resolveForStart) { + boolean resolveForStart, boolean allowDynamicSplits) { if (!sUserManager.exists(userId)) return Collections.emptyList(); final String instantAppPkgName = getInstantAppPackageName(filterCallingUid); enforceCrossUserPermission(Binder.getCallingUid(), userId, @@ -6929,7 +7273,8 @@ public class PackageManagerService extends IPackageManager.Stub list.add(ri); } } - return applyPostResolutionFilter(list, instantAppPkgName); + return applyPostResolutionFilter( + list, instantAppPkgName, allowDynamicSplits, filterCallingUid, userId); } // reader @@ -6948,7 +7293,8 @@ public class PackageManagerService extends IPackageManager.Stub List xpResult = new ArrayList(1); xpResult.add(xpResolveInfo); return applyPostResolutionFilter( - filterIfNotSystemUser(xpResult, userId), instantAppPkgName); + filterIfNotSystemUser(xpResult, userId), instantAppPkgName, + allowDynamicSplits, filterCallingUid, userId); } // Check for results in the current profile. @@ -6987,13 +7333,15 @@ public class PackageManagerService extends IPackageManager.Stub // And we are not going to add emphemeral app, so we can return the // result straight away. result.add(xpDomainInfo.resolveInfo); - return applyPostResolutionFilter(result, instantAppPkgName); + return applyPostResolutionFilter(result, instantAppPkgName, + allowDynamicSplits, filterCallingUid, userId); } } else if (result.size() <= 1 && !addEphemeral) { // No result in parent user and <= 1 result in current profile, and we // are not going to add emphemeral app, so we can return the result without // further processing. - return applyPostResolutionFilter(result, instantAppPkgName); + return applyPostResolutionFilter(result, instantAppPkgName, + allowDynamicSplits, filterCallingUid, userId); } // We have more than one candidate (combining results from current and parent // profile), so we need filtering and sorting. @@ -7023,16 +7371,18 @@ public class PackageManagerService extends IPackageManager.Stub } } if (addEphemeral) { - result = maybeAddInstantAppInstaller(result, intent, resolvedType, flags, userId); + result = maybeAddInstantAppInstaller( + result, intent, resolvedType, flags, userId, resolveForStart); } if (sortResult) { Collections.sort(result, mResolvePrioritySorter); } - return applyPostResolutionFilter(result, instantAppPkgName); + return applyPostResolutionFilter( + result, instantAppPkgName, allowDynamicSplits, filterCallingUid, userId); } private List maybeAddInstantAppInstaller(List result, Intent intent, - String resolvedType, int flags, int userId) { + String resolvedType, int flags, int userId, boolean resolveForStart) { // first, check to see if we've got an instant app already installed final boolean alreadyResolvedLocally = (flags & PackageManager.MATCH_INSTANT) != 0; ResolveInfo localInstantApp = null; @@ -7081,7 +7431,8 @@ public class PackageManagerService extends IPackageManager.Stub Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "resolveEphemeral"); final InstantAppRequest requestObject = new InstantAppRequest( null /*responseObj*/, intent /*origIntent*/, resolvedType, - null /*callingPackage*/, userId, null /*verificationBundle*/); + null /*callingPackage*/, userId, null /*verificationBundle*/, + resolveForStart); auxiliaryResponse = InstantAppResolver.doInstantAppResolutionPhaseOne( mContext, mInstantAppResolverConnection, requestObject); @@ -7094,7 +7445,8 @@ public class PackageManagerService extends IPackageManager.Stub // the instant application, we'll do the right thing. final ApplicationInfo ai = localInstantApp.activityInfo.applicationInfo; auxiliaryResponse = new AuxiliaryResolveInfo( - ai.packageName, null /*splitName*/, ai.versionCode, null /*failureIntent*/); + ai.packageName, null /*splitName*/, null /*failureActivity*/, + ai.versionCode, null /*failureIntent*/); } } if (auxiliaryResponse != null) { @@ -7230,37 +7582,37 @@ public class PackageManagerService extends IPackageManager.Stub * @return A filtered list of resolved activities. */ private List applyPostResolutionFilter(List resolveInfos, - String ephemeralPkgName) { + String ephemeralPkgName, boolean allowDynamicSplits, int filterCallingUid, int userId) { for (int i = resolveInfos.size() - 1; i >= 0; i--) { final ResolveInfo info = resolveInfos.get(i); - final boolean isEphemeralApp = info.activityInfo.applicationInfo.isInstantApp(); - // TODO: When adding on-demand split support for non-instant apps, remove this check - // and always apply post filtering // allow activities that are defined in the provided package - if (isEphemeralApp) { - if (info.activityInfo.splitName != null - && !ArrayUtils.contains(info.activityInfo.applicationInfo.splitNames, - info.activityInfo.splitName)) { - // requested activity is defined in a split that hasn't been installed yet. - // add the installer to the resolve list - if (DEBUG_EPHEMERAL) { - Slog.v(TAG, "Adding ephemeral installer to the ResolveInfo list"); - } - final ResolveInfo installerInfo = new ResolveInfo(mInstantAppInstallerInfo); - installerInfo.auxiliaryInfo = new AuxiliaryResolveInfo( - info.activityInfo.packageName, info.activityInfo.splitName, - info.activityInfo.applicationInfo.versionCode, null /*failureIntent*/); - // make sure this resolver is the default - installerInfo.isDefault = true; - installerInfo.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART - | IntentFilter.MATCH_ADJUSTMENT_NORMAL; - // add a non-generic filter - installerInfo.filter = new IntentFilter(); - // load resources from the correct package - installerInfo.resolvePackageName = info.getComponentInfo().packageName; - resolveInfos.set(i, installerInfo); - continue; - } + if (allowDynamicSplits + && info.activityInfo.splitName != null + && !ArrayUtils.contains(info.activityInfo.applicationInfo.splitNames, + info.activityInfo.splitName)) { + // requested activity is defined in a split that hasn't been installed yet. + // add the installer to the resolve list + if (DEBUG_INSTALL) { + Slog.v(TAG, "Adding installer to the ResolveInfo list"); + } + final ResolveInfo installerInfo = new ResolveInfo(mInstantAppInstallerInfo); + final ComponentName installFailureActivity = findInstallFailureActivity( + info.activityInfo.packageName, filterCallingUid, userId); + installerInfo.auxiliaryInfo = new AuxiliaryResolveInfo( + info.activityInfo.packageName, info.activityInfo.splitName, + installFailureActivity, + info.activityInfo.applicationInfo.versionCode, + null /*failureIntent*/); + // make sure this resolver is the default + installerInfo.isDefault = true; + installerInfo.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART + | IntentFilter.MATCH_ADJUSTMENT_NORMAL; + // add a non-generic filter + installerInfo.filter = new IntentFilter(); + // load resources from the correct package + installerInfo.resolvePackageName = info.getComponentInfo().packageName; + resolveInfos.set(i, installerInfo); + continue; } // caller is a full app, don't need to apply any other filtering if (ephemeralPkgName == null) { @@ -7270,6 +7622,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } // allow activities that have been explicitly exposed to ephemeral apps + final boolean isEphemeralApp = info.activityInfo.applicationInfo.isInstantApp(); if (!isEphemeralApp && ((info.activityInfo.flags & ActivityInfo.FLAG_VISIBLE_TO_INSTANT_APP) != 0)) { continue; @@ -7279,6 +7632,34 @@ public class PackageManagerService extends IPackageManager.Stub return resolveInfos; } + /** + * Returns the activity component that can handle install failures. + *

        By default, the instant application installer handles failures. However, an + * application may want to handle failures on its own. Applications do this by + * creating an activity with an intent filter that handles the action + * {@link Intent#ACTION_INSTALL_FAILURE}. + */ + private @Nullable ComponentName findInstallFailureActivity( + String packageName, int filterCallingUid, int userId) { + final Intent failureActivityIntent = new Intent(Intent.ACTION_INSTALL_FAILURE); + failureActivityIntent.setPackage(packageName); + // IMPORTANT: disallow dynamic splits to avoid an infinite loop + final List result = queryIntentActivitiesInternal( + failureActivityIntent, null /*resolvedType*/, 0 /*flags*/, filterCallingUid, userId, + false /*resolveForStart*/, false /*allowDynamicSplits*/); + final int NR = result.size(); + if (NR > 0) { + for (int i = 0; i < NR; i++) { + final ResolveInfo info = result.get(i); + if (info.activityInfo.splitName != null) { + continue; + } + return new ComponentName(packageName, info.activityInfo.name); + } + } + return null; + } + /** * @param resolveInfos list of resolve infos in descending priority order * @return if the list contains a resolve info with non-negative priority @@ -7766,13 +8147,17 @@ public class PackageManagerService extends IPackageManager.Stub public @NonNull ParceledListSlice queryIntentReceivers(Intent intent, String resolvedType, int flags, int userId) { return new ParceledListSlice<>( - queryIntentReceiversInternal(intent, resolvedType, flags, userId)); + queryIntentReceiversInternal(intent, resolvedType, flags, userId, + false /*allowDynamicSplits*/)); } private @NonNull List queryIntentReceiversInternal(Intent intent, - String resolvedType, int flags, int userId) { + String resolvedType, int flags, int userId, boolean allowDynamicSplits) { if (!sUserManager.exists(userId)) return Collections.emptyList(); final int callingUid = Binder.getCallingUid(); + enforceCrossUserPermission(callingUid, userId, + false /*requireFullPermission*/, false /*checkShell*/, + "query intent receivers"); final String instantAppPkgName = getInstantAppPackageName(callingUid); flags = updateFlagsForResolve(flags, userId, intent, callingUid, false /*includeInstantApps*/); @@ -7823,7 +8208,8 @@ public class PackageManagerService extends IPackageManager.Stub list.add(ri); } } - return applyPostResolutionFilter(list, instantAppPkgName); + return applyPostResolutionFilter( + list, instantAppPkgName, allowDynamicSplits, callingUid, userId); } // reader @@ -7832,13 +8218,15 @@ public class PackageManagerService extends IPackageManager.Stub if (pkgName == null) { final List result = mReceivers.queryIntent(intent, resolvedType, flags, userId); - return applyPostResolutionFilter(result, instantAppPkgName); + return applyPostResolutionFilter( + result, instantAppPkgName, allowDynamicSplits, callingUid, userId); } final PackageParser.Package pkg = mPackages.get(pkgName); if (pkg != null) { final List result = mReceivers.queryIntentForPackage( intent, resolvedType, flags, pkg.receivers, userId); - return applyPostResolutionFilter(result, instantAppPkgName); + return applyPostResolutionFilter( + result, instantAppPkgName, allowDynamicSplits, callingUid, userId); } return Collections.emptyList(); } @@ -7879,6 +8267,9 @@ public class PackageManagerService extends IPackageManager.Stub String resolvedType, int flags, int userId, int callingUid, boolean includeInstantApps) { if (!sUserManager.exists(userId)) return Collections.emptyList(); + enforceCrossUserPermission(callingUid, userId, + false /*requireFullPermission*/, false /*checkShell*/, + "query intent receivers"); final String instantAppPkgName = getInstantAppPackageName(callingUid); flags = updateFlagsForResolve(flags, userId, intent, callingUid, includeInstantApps); ComponentName comp = intent.getComponent(); @@ -7944,8 +8335,6 @@ public class PackageManagerService extends IPackageManager.Stub private List applyPostServiceResolutionFilter(List resolveInfos, String instantAppPkgName) { - // TODO: When adding on-demand split support for non-instant apps, remove this check - // and always apply post filtering if (instantAppPkgName == null) { return resolveInfos; } @@ -7965,7 +8354,8 @@ public class PackageManagerService extends IPackageManager.Stub final ResolveInfo installerInfo = new ResolveInfo(mInstantAppInstallerInfo); installerInfo.auxiliaryInfo = new AuxiliaryResolveInfo( info.serviceInfo.packageName, info.serviceInfo.splitName, - info.serviceInfo.applicationInfo.versionCode, null /*failureIntent*/); + null /*failureActivity*/, info.serviceInfo.applicationInfo.versionCode, + null /*failureIntent*/); // make sure this resolver is the default installerInfo.isDefault = true; installerInfo.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART @@ -8065,8 +8455,6 @@ public class PackageManagerService extends IPackageManager.Stub private List applyPostContentProviderResolutionFilter( List resolveInfos, String instantAppPkgName) { - // TODO: When adding on-demand split support for non-instant applications, remove - // this check and always apply post filtering if (instantAppPkgName == null) { return resolveInfos; } @@ -8086,7 +8474,8 @@ public class PackageManagerService extends IPackageManager.Stub final ResolveInfo installerInfo = new ResolveInfo(mInstantAppInstallerInfo); installerInfo.auxiliaryInfo = new AuxiliaryResolveInfo( info.providerInfo.packageName, info.providerInfo.splitName, - info.providerInfo.applicationInfo.versionCode, null /*failureIntent*/); + null /*failureActivity*/, info.providerInfo.applicationInfo.versionCode, + null /*failureIntent*/); // make sure this resolver is the default installerInfo.isDefault = true; installerInfo.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART @@ -8132,7 +8521,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } final PackageInfo pi = generatePackageInfo(ps, flags, userId); if (pi != null) { @@ -8147,7 +8536,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } final PackageInfo pi = generatePackageInfo((PackageSetting) p.mExtras, flags, userId); @@ -8259,7 +8648,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } ai = PackageParser.generateApplicationInfo(ps.pkg, effectiveFlags, ps.readUserState(userId), userId); @@ -8285,7 +8674,7 @@ public class PackageManagerService extends IPackageManager.Stub continue; } if (filterAppAccessLPr(ps, callingUid, userId)) { - return null; + continue; } ApplicationInfo ai = PackageParser.generateApplicationInfo(p, flags, ps.readUserState(userId), userId); @@ -8306,8 +8695,10 @@ public class PackageManagerService extends IPackageManager.Stub if (HIDE_EPHEMERAL_APIS || isEphemeralDisabled()) { return null; } - mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_INSTANT_APPS, - "getEphemeralApplications"); + if (!canViewInstantApps(Binder.getCallingUid(), userId)) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_INSTANT_APPS, + "getEphemeralApplications"); + } enforceCrossUserPermission(Binder.getCallingUid(), userId, true /* requireFullPermission */, false /* checkShell */, "getEphemeralApplications"); @@ -8329,12 +8720,12 @@ public class PackageManagerService extends IPackageManager.Stub if (HIDE_EPHEMERAL_APIS || isEphemeralDisabled()) { return false; } - int callingUid = Binder.getCallingUid(); - if (Process.isIsolated(callingUid)) { - callingUid = mIsolatedOwners.get(callingUid); - } synchronized (mPackages) { + int callingUid = Binder.getCallingUid(); + if (Process.isIsolated(callingUid)) { + callingUid = mIsolatedOwners.get(callingUid); + } final PackageSetting ps = mSettings.mPackages.get(packageName); PackageParser.Package pkg = mPackages.get(packageName); final boolean returnAllowed = @@ -8392,9 +8783,10 @@ public class PackageManagerService extends IPackageManager.Stub return null; } - mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_INSTANT_APPS, - "getInstantAppIcon"); - + if (!canViewInstantApps(Binder.getCallingUid(), userId)) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_INSTANT_APPS, + "getInstantAppIcon"); + } enforceCrossUserPermission(Binder.getCallingUid(), userId, true /* requireFullPermission */, false /* checkShell */, "getInstantAppIcon"); @@ -9050,6 +9442,15 @@ public class PackageManagerService extends IPackageManager.Stub // throw an exception if we have an update to a system application, but, it's not more // recent than the package we've already scanned if (isUpdatedSystemPkg && !isUpdatedPkgBetter) { + // Set CPU Abis to application info. + if ((scanFlags & SCAN_FIRST_BOOT_OR_UPGRADE) != 0) { + final String cpuAbiOverride = deriveAbiOverride(pkg.cpuAbiOverride, updatedPkg); + derivePackageAbi(pkg, scanFile, cpuAbiOverride, false, mAppLib32InstallDir); + } else { + pkg.applicationInfo.primaryCpuAbi = updatedPkg.primaryCpuAbiString; + pkg.applicationInfo.secondaryCpuAbi = updatedPkg.secondaryCpuAbiString; + } + throw new PackageManagerException(Log.WARN, "Package " + ps.name + " at " + scanFile + " ignored: updated version " + ps.versionCode + " better than this " + pkg.mVersionCode); @@ -9134,6 +9535,9 @@ public class PackageManagerService extends IPackageManager.Stub if (ps != null && ps.getInstantApp(userId)) { scanFlags |= SCAN_AS_INSTANT_APP; } + if (ps != null && ps.getVirtulalPreload(userId)) { + scanFlags |= SCAN_AS_VIRTUAL_PRELOAD; + } // Note that we invoke the following method only if we are about to unpack an application PackageParser.Package scannedPkg = scanPackageLI(pkg, policyFlags, scanFlags @@ -9321,7 +9725,7 @@ public class PackageManagerService extends IPackageManager.Stub * and {@code numberOfPackagesFailed}. */ private int[] performDexOptUpgrade(List pkgs, boolean showDialog, - String compilerFilter, boolean bootComplete) { + final String compilerFilter, boolean bootComplete) { int numberOfPackagesVisited = 0; int numberOfPackagesOptimized = 0; @@ -9332,6 +9736,8 @@ public class PackageManagerService extends IPackageManager.Stub for (PackageParser.Package pkg : pkgs) { numberOfPackagesVisited++; + boolean useProfileForDexopt = false; + if ((isFirstBoot() || isUpgrade()) && isSystemApp(pkg)) { // Copy over initial preopt profiles since we won't get any JIT samples for methods // that are already compiled. @@ -9345,11 +9751,50 @@ public class PackageManagerService extends IPackageManager.Stub if (!mInstaller.copySystemProfile(profileFile.getAbsolutePath(), pkg.applicationInfo.uid, pkg.packageName)) { Log.e(TAG, "Installer failed to copy system profile!"); + } else { + // Disabled as this causes speed-profile compilation during first boot + // even if things are already compiled. + // useProfileForDexopt = true; } } catch (Exception e) { Log.e(TAG, "Failed to copy profile " + profileFile.getAbsolutePath() + " ", e); } + } else { + PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(pkg.packageName); + // Handle compressed APKs in this path. Only do this for stubs with profiles to + // minimize the number off apps being speed-profile compiled during first boot. + // The other paths will not change the filter. + if (disabledPs != null && disabledPs.pkg.isStub) { + // The package is the stub one, remove the stub suffix to get the normal + // package and APK names. + String systemProfilePath = + getPrebuildProfilePath(disabledPs.pkg).replace(STUB_SUFFIX, ""); + profileFile = new File(systemProfilePath); + // If we have a profile for a compressed APK, copy it to the reference + // location. + // Note that copying the profile here will cause it to override the + // reference profile every OTA even though the existing reference profile + // may have more data. We can't copy during decompression since the + // directories are not set up at that point. + if (profileFile.exists()) { + try { + // We could also do this lazily before calling dexopt in + // PackageDexOptimizer to prevent this happening on first boot. The + // issue is that we don't have a good way to say "do this only + // once". + if (!mInstaller.copySystemProfile(profileFile.getAbsolutePath(), + pkg.applicationInfo.uid, pkg.packageName)) { + Log.e(TAG, "Failed to copy system profile for stub package!"); + } else { + useProfileForDexopt = true; + } + } catch (Exception e) { + Log.e(TAG, "Failed to copy profile " + + profileFile.getAbsolutePath() + " ", e); + } + } + } } } @@ -9378,17 +9823,13 @@ public class PackageManagerService extends IPackageManager.Stub } } - // If the OTA updates a system app which was previously preopted to a non-preopted state - // the app might end up being verified at runtime. That's because by default the apps - // are verify-profile but for preopted apps there's no profile. - // Do a hacky check to ensure that if we have no profiles (a reasonable indication - // that before the OTA the app was preopted) the app gets compiled with a non-profile - // filter (by default 'quicken'). - // Note that at this stage unused apps are already filtered. - if (isSystemApp(pkg) && - DexFile.isProfileGuidedCompilerFilter(compilerFilter) && - !Environment.getReferenceProfile(pkg.packageName).exists()) { - compilerFilter = getNonProfileGuidedCompilerFilter(compilerFilter); + String pkgCompilerFilter = compilerFilter; + if (useProfileForDexopt) { + // Use background dexopt mode to try and use the profile. Note that this does not + // guarantee usage of the profile. + pkgCompilerFilter = + PackageManagerServiceCompilerMapping.getCompilerFilterForReason( + PackageManagerService.REASON_BACKGROUND_DEXOPT); } // checkProfiles is false to avoid merging profiles during boot which @@ -9399,39 +9840,22 @@ public class PackageManagerService extends IPackageManager.Stub int dexoptFlags = bootComplete ? DexoptOptions.DEXOPT_BOOT_COMPLETE : 0; int primaryDexOptStaus = performDexOptTraced(new DexoptOptions( pkg.packageName, - compilerFilter, + pkgCompilerFilter, dexoptFlags)); - boolean secondaryDexOptStatus = true; - if (pkg.isSystemApp()) { - // Only dexopt shared secondary dex files belonging to system apps to not slow down - // too much boot after an OTA. - int secondaryDexoptFlags = dexoptFlags | - DexoptOptions.DEXOPT_ONLY_SECONDARY_DEX | - DexoptOptions.DEXOPT_ONLY_SHARED_DEX; - mDexManager.dexoptSecondaryDex(new DexoptOptions( - pkg.packageName, - compilerFilter, - secondaryDexoptFlags)); - } - - if (secondaryDexOptStatus) { - switch (primaryDexOptStaus) { - case PackageDexOptimizer.DEX_OPT_PERFORMED: - numberOfPackagesOptimized++; - break; - case PackageDexOptimizer.DEX_OPT_SKIPPED: - numberOfPackagesSkipped++; - break; - case PackageDexOptimizer.DEX_OPT_FAILED: - numberOfPackagesFailed++; - break; - default: - Log.e(TAG, "Unexpected dexopt return code " + primaryDexOptStaus); - break; - } - } else { - numberOfPackagesFailed++; + switch (primaryDexOptStaus) { + case PackageDexOptimizer.DEX_OPT_PERFORMED: + numberOfPackagesOptimized++; + break; + case PackageDexOptimizer.DEX_OPT_SKIPPED: + numberOfPackagesSkipped++; + break; + case PackageDexOptimizer.DEX_OPT_FAILED: + numberOfPackagesFailed++; + break; + default: + Log.e(TAG, "Unexpected dexopt return code " + primaryDexOptStaus); + break; } } @@ -9453,14 +9877,18 @@ public class PackageManagerService extends IPackageManager.Stub return; } } - final PackageParser.Package p = mPackages.get(packageName); - if (p == null) { - return; - } - p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis(); + notifyPackageUseLocked(packageName, reason); } } + private void notifyPackageUseLocked(String packageName, int reason) { + final PackageParser.Package p = mPackages.get(packageName); + if (p == null) { + return; + } + p.mLastPackageUsageTimeInMills[reason] = System.currentTimeMillis(); + } + @Override public void notifyDexLoad(String loadingPackageName, List classLoaderNames, List classPaths, String loaderIsa) { @@ -10007,16 +10435,19 @@ public class PackageManagerService extends IPackageManager.Stub Set usesLibraryFiles = null; if (pkg.usesLibraries != null) { usesLibraryFiles = addSharedLibrariesLPw(pkg.usesLibraries, - null, null, pkg.packageName, changingLib, true, null); + null, null, pkg.packageName, changingLib, true, + pkg.applicationInfo.targetSdkVersion, null); } if (pkg.usesStaticLibraries != null) { usesLibraryFiles = addSharedLibrariesLPw(pkg.usesStaticLibraries, pkg.usesStaticLibrariesVersions, pkg.usesStaticLibrariesCertDigests, - pkg.packageName, changingLib, true, usesLibraryFiles); + pkg.packageName, changingLib, true, + pkg.applicationInfo.targetSdkVersion, usesLibraryFiles); } if (pkg.usesOptionalLibraries != null) { usesLibraryFiles = addSharedLibrariesLPw(pkg.usesOptionalLibraries, - null, null, pkg.packageName, changingLib, false, usesLibraryFiles); + null, null, pkg.packageName, changingLib, false, + pkg.applicationInfo.targetSdkVersion, usesLibraryFiles); } if (!ArrayUtils.isEmpty(usesLibraryFiles)) { pkg.usesLibraryFiles = usesLibraryFiles.toArray(new String[usesLibraryFiles.size()]); @@ -10026,9 +10457,9 @@ public class PackageManagerService extends IPackageManager.Stub } private Set addSharedLibrariesLPw(@NonNull List requestedLibraries, - @Nullable int[] requiredVersions, @Nullable String[] requiredCertDigests, + @Nullable int[] requiredVersions, @Nullable String[][] requiredCertDigests, @NonNull String packageName, @Nullable PackageParser.Package changingLib, - boolean required, @Nullable Set outUsedLibraries) + boolean required, int targetSdk, @Nullable Set outUsedLibraries) throws PackageManagerException { final int libCount = requestedLibraries.size(); for (int i = 0; i < libCount; i++) { @@ -10062,13 +10493,34 @@ public class PackageManagerService extends IPackageManager.Stub + " library; failing!"); } - String expectedCertDigest = requiredCertDigests[i]; - String libCertDigest = PackageUtils.computeCertSha256Digest( - libPkg.mSignatures[0]); - if (!libCertDigest.equalsIgnoreCase(expectedCertDigest)) { + final String[] expectedCertDigests = requiredCertDigests[i]; + // For apps targeting O MR1 we require explicit enumeration of all certs. + final String[] libCertDigests = (targetSdk > Build.VERSION_CODES.O) + ? PackageUtils.computeSignaturesSha256Digests(libPkg.mSignatures) + : PackageUtils.computeSignaturesSha256Digests( + new Signature[]{libPkg.mSignatures[0]}); + + // Take a shortcut if sizes don't match. Note that if an app doesn't + // target O we don't parse the "additional-certificate" tags similarly + // how we only consider all certs only for apps targeting O (see above). + // Therefore, the size check is safe to make. + if (expectedCertDigests.length != libCertDigests.length) { throw new PackageManagerException(INSTALL_FAILED_MISSING_SHARED_LIBRARY, "Package " + packageName + " requires differently signed" + - " static shared library; failing!"); + " static sDexLoadReporter.java:45.19hared library; failing!"); + } + + // Use a predictable order as signature order may vary + Arrays.sort(libCertDigests); + Arrays.sort(expectedCertDigests); + + final int certCount = libCertDigests.length; + for (int j = 0; j < certCount; j++) { + if (!libCertDigests[j].equalsIgnoreCase(expectedCertDigests[j])) { + throw new PackageManagerException(INSTALL_FAILED_MISSING_SHARED_LIBRARY, + "Package " + packageName + " requires differently signed" + + " static shared library; failing!"); + } } } @@ -10270,7 +10722,7 @@ public class PackageManagerService extends IPackageManager.Stub if (Build.IS_DEBUGGABLE && pkg.isPrivilegedApp() && - SystemProperties.getBoolean("pm.dexopt.priv-apps-oob", false)) { + !SystemProperties.getBoolean("pm.dexopt.priv-apps", true)) { PackageManagerServiceUtils.logPackageHasUncompressedCode(pkg); } @@ -10402,15 +10854,17 @@ public class PackageManagerService extends IPackageManager.Stub final String parentPackageName = (pkg.parentPackage != null) ? pkg.parentPackage.packageName : null; final boolean instantApp = (scanFlags & SCAN_AS_INSTANT_APP) != 0; + final boolean virtualPreload = (scanFlags & SCAN_AS_VIRTUAL_PRELOAD) != 0; // REMOVE SharedUserSetting from method; update in a separate call pkgSetting = Settings.createNewSetting(pkg.packageName, origPackage, disabledPkgSetting, realName, suid, destCodeFile, destResourceFile, pkg.applicationInfo.nativeLibraryRootDir, pkg.applicationInfo.primaryCpuAbi, pkg.applicationInfo.secondaryCpuAbi, pkg.mVersionCode, pkg.applicationInfo.flags, pkg.applicationInfo.privateFlags, user, - true /*allowInstall*/, instantApp, parentPackageName, - pkg.getChildPackageNames(), UserManagerService.getInstance(), - usesStaticLibraries, pkg.usesStaticLibrariesVersions); + true /*allowInstall*/, instantApp, virtualPreload, + parentPackageName, pkg.getChildPackageNames(), + UserManagerService.getInstance(), usesStaticLibraries, + pkg.usesStaticLibrariesVersions); // SIDE EFFECTS; updates system state; move elsewhere if (origPackage != null) { mSettings.addRenamedPackageLPw(pkg.packageName, origPackage.name); @@ -10750,6 +11204,9 @@ public class PackageManagerService extends IPackageManager.Stub r.info.encryptionAware = r.info.directBootAware = true; } } + if (compressedFileExists(pkg.codePath)) { + pkg.isStub = true; + } } else { // Only allow system apps to be flagged as core apps. pkg.coreApp = false; @@ -10986,6 +11443,10 @@ public class PackageManagerService extends IPackageManager.Stub + " but expected at " + known.codePathString + "; ignoring."); } + } else { + throw new PackageManagerException(INSTALL_FAILED_INVALID_INSTALL_LOCATION, + "Application package " + pkg.packageName + + " not found; ignoring."); } } } @@ -11536,8 +11997,10 @@ public class PackageManagerService extends IPackageManager.Stub if (pkg.protectedBroadcasts != null) { N = pkg.protectedBroadcasts.size(); - for (i=0; i wlPermissions = SystemConfig.getInstance() + final ArraySet allowedPermissions = SystemConfig.getInstance() .getPrivAppPermissions(pkg.packageName); - boolean whitelisted = wlPermissions != null && wlPermissions.contains(perm); + final boolean whitelisted = + allowedPermissions != null && allowedPermissions.contains(perm); if (!whitelisted) { Slog.w(TAG, "Privileged permission " + perm + " for package " + pkg.packageName + " - not in privapp-permissions whitelist"); // Only report violations for apps on system image if (!mSystemReady && !pkg.isUpdatedSystemApp()) { - if (mPrivappPermissionsViolations == null) { - mPrivappPermissionsViolations = new ArraySet<>(); + // it's only a reportable violation if the permission isn't explicitly denied + final ArraySet deniedPermissions = SystemConfig.getInstance() + .getPrivAppDenyPermissions(pkg.packageName); + final boolean permissionViolation = + deniedPermissions == null || !deniedPermissions.contains(perm); + if (permissionViolation) { + if (mPrivappPermissionsViolations == null) { + mPrivappPermissionsViolations = new ArraySet<>(); + } + mPrivappPermissionsViolations.add(pkg.packageName + ": " + perm); + } else { + return false; } - mPrivappPermissionsViolations.add(pkg.packageName + ": " + perm); } if (RoSystemProperties.CONTROL_PRIVAPP_PERMISSIONS_ENFORCE) { return false; @@ -14026,7 +14499,7 @@ public class PackageManagerService extends IPackageManager.Stub } if (savedInfo.second == info) { // circled back to the highest ordered item; remove from order list - mOrderResult.remove(savedInfo); + mOrderResult.remove(packageName); if (mOrderResult.size() == 0) { // no more ordered items break; @@ -14392,7 +14865,8 @@ public class PackageManagerService extends IPackageManager.Stub private void sendPackageAddedForUser(String packageName, PackageSetting pkgSetting, int userId) { final boolean isSystem = isSystemApp(pkgSetting) || isUpdatedSystemApp(pkgSetting); - sendPackageAddedForNewUsers(packageName, isSystem, pkgSetting.appId, userId); + sendPackageAddedForNewUsers(packageName, isSystem /*sendBootCompleted*/, + false /*startReceiver*/, pkgSetting.appId, userId); // Send a session commit broadcast final PackageInstaller.SessionInfo info = new PackageInstaller.SessionInfo(); @@ -14401,7 +14875,8 @@ public class PackageManagerService extends IPackageManager.Stub sendSessionCommitBroadcast(info, userId); } - public void sendPackageAddedForNewUsers(String packageName, boolean isSystem, int appId, int... userIds) { + public void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted, + boolean includeStopped, int appId, int... userIds) { if (ArrayUtils.isEmpty(userIds)) { return; } @@ -14411,10 +14886,11 @@ public class PackageManagerService extends IPackageManager.Stub sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, 0, null, null, userIds); - if (isSystem) { + if (sendBootCompleted) { mHandler.post(() -> { for (int userId : userIds) { - sendBootCompletedBroadcastToSystemApp(packageName, userId); + sendBootCompletedBroadcastToSystemApp( + packageName, includeStopped, userId); } } ); @@ -14426,7 +14902,8 @@ public class PackageManagerService extends IPackageManager.Stub * automatically without needing an explicit launch. * Send it a LOCKED_BOOT_COMPLETED/BOOT_COMPLETED if it would ordinarily have gotten ones. */ - private void sendBootCompletedBroadcastToSystemApp(String packageName, int userId) { + private void sendBootCompletedBroadcastToSystemApp(String packageName, boolean includeStopped, + int userId) { // If user is not running, the app didn't miss any broadcast if (!mUserManagerInternal.isUserRunning(userId)) { return; @@ -14436,6 +14913,9 @@ public class PackageManagerService extends IPackageManager.Stub // Deliver LOCKED_BOOT_COMPLETED first Intent lockedBcIntent = new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED) .setPackage(packageName); + if (includeStopped) { + lockedBcIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + } final String[] requiredPermissions = {Manifest.permission.RECEIVE_BOOT_COMPLETED}; am.broadcastIntent(null, lockedBcIntent, null, null, 0, null, null, requiredPermissions, android.app.AppOpsManager.OP_NONE, null, false, false, userId); @@ -14443,6 +14923,9 @@ public class PackageManagerService extends IPackageManager.Stub // Deliver BOOT_COMPLETED only if user is unlocked if (mUserManagerInternal.isUserUnlockingOrUnlocked(userId)) { Intent bcIntent = new Intent(Intent.ACTION_BOOT_COMPLETED).setPackage(packageName); + if (includeStopped) { + bcIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + } am.broadcastIntent(null, bcIntent, null, null, 0, null, null, requiredPermissions, android.app.AppOpsManager.OP_NONE, null, false, false, userId); } @@ -15108,6 +15591,11 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int getIntentVerificationStatus(String packageName, int userId) { final int callingUid = Binder.getCallingUid(); + if (UserHandle.getUserId(callingUid) != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, + "getIntentVerificationStatus" + userId); + } if (getInstantAppPackageName(callingUid) != null) { return INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; } @@ -15191,6 +15679,10 @@ public class PackageManagerService extends IPackageManager.Stub public boolean setDefaultBrowserPackageName(String packageName, int userId) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); + if (UserHandle.getCallingUserId() != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); + } synchronized (mPackages) { boolean result = mSettings.setDefaultBrowserPackageNameLPw(packageName, userId); @@ -15204,6 +15696,10 @@ public class PackageManagerService extends IPackageManager.Stub @Override public String getDefaultBrowserPackageName(int userId) { + if (UserHandle.getCallingUserId() != userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); + } if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return null; } @@ -15936,7 +16432,8 @@ public class PackageManagerService extends IPackageManager.Stub // Query all live verifiers based on current user state final List receivers = queryIntentReceiversInternal(verification, - PACKAGE_MIME_TYPE, 0, verifierUser.getIdentifier()); + PACKAGE_MIME_TYPE, 0, verifierUser.getIdentifier(), + false /*allowDynamicSplits*/); if (DEBUG_VERIFY) { Slog.d(TAG, "Found " + receivers.size() + " verifiers for intent " @@ -17001,6 +17498,7 @@ public class PackageManagerService extends IPackageManager.Stub PackageParser.Package pkg; int returnCode; String returnMsg; + String installerPackageName; PackageRemovedInfo removedInfo; ArrayMap addedChildPackages; @@ -17013,12 +17511,20 @@ public class PackageManagerService extends IPackageManager.Stub public void setError(String msg, PackageParserException e) { setReturnCode(e.error); setReturnMessage(ExceptionUtils.getCompleteMessage(msg, e)); + final int childCount = (addedChildPackages != null) ? addedChildPackages.size() : 0; + for (int i = 0; i < childCount; i++) { + addedChildPackages.valueAt(i).setError(msg, e); + } Slog.w(TAG, msg, e); } public void setError(String msg, PackageManagerException e) { returnCode = e.error; setReturnMessage(ExceptionUtils.getCompleteMessage(msg, e)); + final int childCount = (addedChildPackages != null) ? addedChildPackages.size() : 0; + for (int i = 0; i < childCount; i++) { + addedChildPackages.valueAt(i).setError(msg, e); + } Slog.w(TAG, msg, e); } @@ -17899,6 +18405,8 @@ public class PackageManagerService extends IPackageManager.Stub final boolean instantApp = ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0); final boolean fullApp = ((installFlags & PackageManager.INSTALL_FULL_APP) != 0); final boolean forceSdk = ((installFlags & PackageManager.INSTALL_FORCE_SDK) != 0); + final boolean virtualPreload = + ((installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0); boolean replace = false; int scanFlags = SCAN_NEW_INSTALL | SCAN_UPDATE_SIGNATURE; if (args.move != null) { @@ -17914,9 +18422,13 @@ public class PackageManagerService extends IPackageManager.Stub if (fullApp) { scanFlags |= SCAN_AS_FULL_APP; } + if (virtualPreload) { + scanFlags |= SCAN_AS_VIRTUAL_PRELOAD; + } // Result object to be returned res.setReturnCode(PackageManager.INSTALL_SUCCEEDED); + res.installerPackageName = installerPackageName; if (DEBUG_INSTALL) Slog.d(TAG, "installPackageLI: path=" + tmpPackageFile); @@ -18159,12 +18671,12 @@ public class PackageManagerService extends IPackageManager.Stub BasePermission bp = mSettings.mPermissions.get(perm.info.name); // Don't allow anyone but the system to define ephemeral permissions. - if ((perm.info.protectionLevel & PermissionInfo.PROTECTION_FLAG_EPHEMERAL) != 0 + if ((perm.info.protectionLevel & PermissionInfo.PROTECTION_FLAG_INSTANT) != 0 && !systemApp) { Slog.w(TAG, "Non-System package " + pkg.packageName + " attempting to delcare ephemeral permission " + perm.info.name + "; Removing ephemeral."); - perm.info.protectionLevel &= ~PermissionInfo.PROTECTION_FLAG_EPHEMERAL; + perm.info.protectionLevel &= ~PermissionInfo.PROTECTION_FLAG_INSTANT; } // Check whether the newly-scanned package wants to define an already-defined perm if (bp != null) { @@ -18792,6 +19304,12 @@ public class PackageManagerService extends IPackageManager.Stub return packageName; } + boolean isCallerVerifier(int callingUid) { + final int callingUserId = UserHandle.getUserId(callingUid); + return mRequiredVerifierPackage != null && + callingUid == getPackageUid(mRequiredVerifierPackage, 0, callingUserId); + } + private boolean isCallerAllowedToSilentlyUninstall(int callingUid, String pkgName) { if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID || UserHandle.getAppId(callingUid) == Process.SYSTEM_UID) { @@ -19065,8 +19583,8 @@ public class PackageManagerService extends IPackageManager.Stub for (int i = 0; i < packageCount; i++) { PackageInstalledInfo installedInfo = appearedChildPackages.valueAt(i); packageSender.sendPackageAddedForNewUsers(installedInfo.name, - true, UserHandle.getAppId(installedInfo.uid), - installedInfo.newUsers); + true /*sendBootCompleted*/, false /*startReceiver*/, + UserHandle.getAppId(installedInfo.uid), installedInfo.newUsers); } } @@ -19355,6 +19873,10 @@ public class PackageManagerService extends IPackageManager.Stub // writer synchronized (mPackages) { + // NOTE: The system package always needs to be enabled; even if it's for + // a compressed stub. If we don't, installing the system package fails + // during scan [scanning checks the disabled packages]. We will reverse + // this later, after we've "installed" the stub. // Reinstate the old system package enableSystemPackageLPw(disabledPs.pkg); // Remove any native libraries from the upgraded package. @@ -19363,23 +19885,38 @@ public class PackageManagerService extends IPackageManager.Stub // Install the system package if (DEBUG_REMOVE) Slog.d(TAG, "Re-installing system package: " + disabledPs); + try { + installPackageFromSystemLIF(disabledPs.codePath, false /*isPrivileged*/, allUserHandles, + outInfo.origUsers, deletedPs.getPermissionsState(), writeSettings); + } catch (PackageManagerException e) { + Slog.w(TAG, "Failed to restore system package:" + deletedPkg.packageName + ": " + + e.getMessage()); + return false; + } finally { + if (disabledPs.pkg.isStub) { + mSettings.disableSystemPackageLPw(disabledPs.name, true /*replaced*/); + } + } + return true; + } + + /** + * Installs a package that's already on the system partition. + */ + private PackageParser.Package installPackageFromSystemLIF(@NonNull File codePath, + boolean isPrivileged, @Nullable int[] allUserHandles, @Nullable int[] origUserHandles, + @Nullable PermissionsState origPermissionState, boolean writeSettings) + throws PackageManagerException { int parseFlags = mDefParseFlags | PackageParser.PARSE_MUST_BE_APK | PackageParser.PARSE_IS_SYSTEM | PackageParser.PARSE_IS_SYSTEM_DIR; - if (locationIsPrivileged(disabledPs.codePath)) { + if (isPrivileged || locationIsPrivileged(codePath)) { parseFlags |= PackageParser.PARSE_IS_PRIVILEGED; } - final PackageParser.Package newPkg; - try { - newPkg = scanPackageTracedLI(disabledPs.codePath, parseFlags, 0 /* scanFlags */, - 0 /* currentTime */, null); - } catch (PackageManagerException e) { - Slog.w(TAG, "Failed to restore system package:" + deletedPkg.packageName + ": " - + e.getMessage()); - return false; - } + final PackageParser.Package newPkg = + scanPackageTracedLI(codePath, parseFlags, 0 /*scanFlags*/, 0 /*currentTime*/, null); try { // update shared libraries for the newly re-installed system package @@ -19397,17 +19934,21 @@ public class PackageManagerService extends IPackageManager.Stub // Propagate the permissions state as we do not want to drop on the floor // runtime permissions. The update permissions method below will take // care of removing obsolete permissions and grant install permissions. - ps.getPermissionsState().copyFrom(deletedPs.getPermissionsState()); + if (origPermissionState != null) { + ps.getPermissionsState().copyFrom(origPermissionState); + } updatePermissionsLPw(newPkg.packageName, newPkg, UPDATE_PERMISSIONS_ALL | UPDATE_PERMISSIONS_REPLACE_PKG); + final boolean applyUserRestrictions + = (allUserHandles != null) && (origUserHandles != null); if (applyUserRestrictions) { boolean installedStateChanged = false; if (DEBUG_REMOVE) { Slog.d(TAG, "Propagating install state across reinstall"); } for (int userId : allUserHandles) { - final boolean installed = ArrayUtils.contains(outInfo.origUsers, userId); + final boolean installed = ArrayUtils.contains(origUserHandles, userId); if (DEBUG_REMOVE) { Slog.d(TAG, " user " + userId + " => " + installed); } @@ -19430,7 +19971,7 @@ public class PackageManagerService extends IPackageManager.Stub mSettings.writeLPr(); } } - return true; + return newPkg; } private boolean deleteInstalledPackageLIF(PackageSetting ps, @@ -19723,6 +20264,7 @@ public class PackageManagerService extends IPackageManager.Stub false /*hidden*/, false /*suspended*/, false /*instantApp*/, + false /*virtualPreload*/, null /*lastDisableAppCaller*/, null /*enabledComponents*/, null /*disabledComponents*/, @@ -19877,10 +20419,8 @@ public class PackageManagerService extends IPackageManager.Stub true /* requireFullPermission */, false /* checkShell */, "clear application data"); final PackageSetting ps = mSettings.getPackageLPr(packageName); - if (ps != null && filterAppAccessLPr(ps, callingUid, userId)) { - return; - } - if (mProtectedPackages.isPackageDataProtected(userId, packageName)) { + final boolean filterApp = (ps != null && filterAppAccessLPr(ps, callingUid, userId)); + if (!filterApp && mProtectedPackages.isPackageDataProtected(userId, packageName)) { throw new SecurityException("Cannot clear data for a protected package: " + packageName); } @@ -19889,26 +20429,30 @@ public class PackageManagerService extends IPackageManager.Stub public void run() { mHandler.removeCallbacks(this); final boolean succeeded; - try (PackageFreezer freezer = freezePackage(packageName, - "clearApplicationUserData")) { - synchronized (mInstallLock) { - succeeded = clearApplicationUserDataLIF(packageName, userId); - } - clearExternalStorageDataSync(packageName, userId, true); - synchronized (mPackages) { - mInstantAppRegistry.deleteInstantApplicationMetadataLPw( - packageName, userId); + if (!filterApp) { + try (PackageFreezer freezer = freezePackage(packageName, + "clearApplicationUserData")) { + synchronized (mInstallLock) { + succeeded = clearApplicationUserDataLIF(packageName, userId); + } + clearExternalStorageDataSync(packageName, userId, true); + synchronized (mPackages) { + mInstantAppRegistry.deleteInstantApplicationMetadataLPw( + packageName, userId); + } } - } - if (succeeded) { - // invoke DeviceStorageMonitor's update method to clear any notifications - DeviceStorageMonitorInternal dsm = LocalServices - .getService(DeviceStorageMonitorInternal.class); - if (dsm != null) { - dsm.checkMemory(); + if (succeeded) { + // invoke DeviceStorageMonitor's update method to clear any notifications + DeviceStorageMonitorInternal dsm = LocalServices + .getService(DeviceStorageMonitorInternal.class); + if (dsm != null) { + dsm.checkMemory(); + } } + } else { + succeeded = false; } - if(observer != null) { + if (observer != null) { try { observer.onRemoveCompleted(packageName, succeeded); } catch (RemoteException e) { @@ -21367,35 +21911,147 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); // unless it is a test package. int oldState = pkgSetting.getEnabled(userId); if (className == null - && - (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER - || oldState == COMPONENT_ENABLED_STATE_DEFAULT - || oldState == COMPONENT_ENABLED_STATE_ENABLED) - && - (newState == COMPONENT_ENABLED_STATE_DISABLED_USER - || newState == COMPONENT_ENABLED_STATE_DEFAULT - || newState == COMPONENT_ENABLED_STATE_ENABLED)) { + && + (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER + || oldState == COMPONENT_ENABLED_STATE_DEFAULT + || oldState == COMPONENT_ENABLED_STATE_ENABLED) + && + (newState == COMPONENT_ENABLED_STATE_DISABLED_USER + || newState == COMPONENT_ENABLED_STATE_DEFAULT + || newState == COMPONENT_ENABLED_STATE_ENABLED)) { // ok } else { throw new SecurityException( "Shell cannot change component state for " + packageName + "/" - + className + " to " + newState); + + className + " to " + newState); } } - if (className == null) { - // We're dealing with an application/package level state change + } + if (className == null) { + // We're dealing with an application/package level state change + synchronized (mPackages) { if (pkgSetting.getEnabled(userId) == newState) { // Nothing to do return; } - if (newState == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - || newState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { - // Don't care about who enables an app. - callingPackage = null; + } + // If we're enabling a system stub, there's a little more work to do. + // Prior to enabling the package, we need to decompress the APK(s) to the + // data partition and then replace the version on the system partition. + final PackageParser.Package deletedPkg = pkgSetting.pkg; + final boolean isSystemStub = deletedPkg.isStub + && deletedPkg.isSystemApp(); + if (isSystemStub + && (newState == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + || newState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED)) { + final File codePath = decompressPackage(deletedPkg); + if (codePath == null) { + Slog.e(TAG, "couldn't decompress pkg: " + pkgSetting.name); + return; } + // TODO remove direct parsing of the package object during internal cleanup + // of scan package + // We need to call parse directly here for no other reason than we need + // the new package in order to disable the old one [we use the information + // for some internal optimization to optionally create a new package setting + // object on replace]. However, we can't get the package from the scan + // because the scan modifies live structures and we need to remove the + // old [system] package from the system before a scan can be attempted. + // Once scan is indempotent we can remove this parse and use the package + // object we scanned, prior to adding it to package settings. + final PackageParser pp = new PackageParser(); + pp.setSeparateProcesses(mSeparateProcesses); + pp.setDisplayMetrics(mMetrics); + pp.setCallback(mPackageParserCallback); + final PackageParser.Package tmpPkg; + try { + final int parseFlags = mDefParseFlags + | PackageParser.PARSE_MUST_BE_APK + | PackageParser.PARSE_IS_SYSTEM + | PackageParser.PARSE_IS_SYSTEM_DIR; + tmpPkg = pp.parsePackage(codePath, parseFlags); + } catch (PackageParserException e) { + Slog.w(TAG, "Failed to parse compressed system package:" + pkgSetting.name, e); + return; + } + synchronized (mInstallLock) { + // Disable the stub and remove any package entries + removePackageLI(deletedPkg, true); + synchronized (mPackages) { + disableSystemPackageLPw(deletedPkg, tmpPkg); + } + final PackageParser.Package newPkg; + try (PackageFreezer freezer = + freezePackage(deletedPkg.packageName, "setEnabledSetting")) { + final int parseFlags = mDefParseFlags | PackageParser.PARSE_CHATTY + | PackageParser.PARSE_ENFORCE_CODE; + newPkg = scanPackageTracedLI(codePath, parseFlags, 0 /*scanFlags*/, + 0 /*currentTime*/, null /*user*/); + prepareAppDataAfterInstallLIF(newPkg); + synchronized (mPackages) { + try { + updateSharedLibrariesLPr(newPkg, null); + } catch (PackageManagerException e) { + Slog.e(TAG, "updateAllSharedLibrariesLPw failed: ", e); + } + updatePermissionsLPw(newPkg.packageName, newPkg, + UPDATE_PERMISSIONS_ALL | UPDATE_PERMISSIONS_REPLACE_PKG); + mSettings.writeLPr(); + } + } catch (PackageManagerException e) { + // Whoops! Something went wrong; try to roll back to the stub + Slog.w(TAG, "Failed to install compressed system package:" + + pkgSetting.name, e); + // Remove the failed install + removeCodePathLI(codePath); + + // Install the system package + try (PackageFreezer freezer = + freezePackage(deletedPkg.packageName, "setEnabledSetting")) { + synchronized (mPackages) { + // NOTE: The system package always needs to be enabled; even + // if it's for a compressed stub. If we don't, installing the + // system package fails during scan [scanning checks the disabled + // packages]. We will reverse this later, after we've "installed" + // the stub. + // This leaves us in a fragile state; the stub should never be + // enabled, so, cross your fingers and hope nothing goes wrong + // until we can disable the package later. + enableSystemPackageLPw(deletedPkg); + } + installPackageFromSystemLIF(new File(deletedPkg.codePath), + false /*isPrivileged*/, null /*allUserHandles*/, + null /*origUserHandles*/, null /*origPermissionsState*/, + true /*writeSettings*/); + } catch (PackageManagerException pme) { + Slog.w(TAG, "Failed to restore system package:" + + deletedPkg.packageName, pme); + } finally { + synchronized (mPackages) { + mSettings.disableSystemPackageLPw( + deletedPkg.packageName, true /*replaced*/); + mSettings.writeLPr(); + } + } + return; + } + clearAppDataLIF(newPkg, UserHandle.USER_ALL, FLAG_STORAGE_DE + | FLAG_STORAGE_CE | Installer.FLAG_CLEAR_CODE_CACHE_ONLY); + clearAppProfilesLIF(newPkg, UserHandle.USER_ALL); + mDexManager.notifyPackageUpdated(newPkg.packageName, + newPkg.baseCodePath, newPkg.splitCodePaths); + } + } + if (newState == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT + || newState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { + // Don't care about who enables an app. + callingPackage = null; + } + synchronized (mPackages) { pkgSetting.setEnabled(newState, userId, callingPackage); - // pkgSetting.pkg.mSetEnabled = newState; - } else { + } + } else { + synchronized (mPackages) { // We're dealing with a component level state change // First, verify that this is a valid class name. PackageParser.Package pkg = pkgSetting.pkg; @@ -21411,26 +22067,28 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } switch (newState) { - case COMPONENT_ENABLED_STATE_ENABLED: - if (!pkgSetting.enableComponentLPw(className, userId)) { - return; - } - break; - case COMPONENT_ENABLED_STATE_DISABLED: - if (!pkgSetting.disableComponentLPw(className, userId)) { - return; - } - break; - case COMPONENT_ENABLED_STATE_DEFAULT: - if (!pkgSetting.restoreComponentLPw(className, userId)) { + case COMPONENT_ENABLED_STATE_ENABLED: + if (!pkgSetting.enableComponentLPw(className, userId)) { + return; + } + break; + case COMPONENT_ENABLED_STATE_DISABLED: + if (!pkgSetting.disableComponentLPw(className, userId)) { + return; + } + break; + case COMPONENT_ENABLED_STATE_DEFAULT: + if (!pkgSetting.restoreComponentLPw(className, userId)) { + return; + } + break; + default: + Slog.e(TAG, "Invalid new component state: " + newState); return; - } - break; - default: - Slog.e(TAG, "Invalid new component state: " + newState); - return; } } + } + synchronized (mPackages) { scheduleWritePackageRestrictionsLocked(userId); updateSequenceNumberLP(pkgSetting, new int[] { userId }); final long callingId = Binder.clearCallingIdentity(); @@ -21798,6 +22456,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); public static final int DUMP_DEXOPT = 1 << 20; public static final int DUMP_COMPILER_STATS = 1 << 21; public static final int DUMP_CHANGES = 1 << 22; + public static final int DUMP_VOLUMES = 1 << 23; public static final int OPTION_SHOW_FILTERS = 1 << 0; @@ -22037,6 +22696,8 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); dumpState.setDump(DumpState.DUMP_INSTALLS); } else if ("frozen".equals(cmd)) { dumpState.setDump(DumpState.DUMP_FROZEN); + } else if ("volumes".equals(cmd)) { + dumpState.setDump(DumpState.DUMP_VOLUMES); } else if ("dexopt".equals(cmd)) { dumpState.setDump(DumpState.DUMP_DEXOPT); } else if ("compiler-stats".equals(cmd)) { @@ -22421,6 +23082,23 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); ipw.decreaseIndent(); } + if (!checkin && dumpState.isDumping(DumpState.DUMP_VOLUMES) && packageName == null) { + if (dumpState.onTitlePrinted()) pw.println(); + + final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ", 120); + ipw.println(); + ipw.println("Loaded volumes:"); + ipw.increaseIndent(); + if (mLoadedVolumes.size() == 0) { + ipw.println("(none)"); + } else { + for (int i = 0; i < mLoadedVolumes.size(); i++) { + ipw.println(mLoadedVolumes.valueAt(i)); + } + } + ipw.decreaseIndent(); + } + if (!checkin && dumpState.isDumping(DumpState.DUMP_DEXOPT)) { if (dumpState.onTitlePrinted()) pw.println(); dumpDexoptStateLPr(pw, packageName); @@ -23138,6 +23816,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); if (DEBUG_INSTALL) Slog.d(TAG, "Loaded packages " + loaded); sendResourcesChangedBroadcast(true, false, loaded, null); + mLoadedVolumes.add(vol.getId()); } private void unloadPrivatePackages(final VolumeInfo vol) { @@ -23189,6 +23868,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); if (DEBUG_INSTALL) Slog.d(TAG, "Unloaded packages " + unloaded); sendResourcesChangedBroadcast(false, false, unloaded, null); + mLoadedVolumes.remove(vol.getId()); // Try very hard to release any references to this path so we don't risk // the system server being killed due to open FDs @@ -23732,8 +24412,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); movePackageInternal(packageName, volumeUuid, moveId, callingUid, user); } catch (PackageManagerException e) { Slog.w(TAG, "Failed to move " + packageName, e); - mMoveCallbacks.notifyStatusChanged(moveId, - PackageManager.MOVE_FAILED_INTERNAL_ERROR); + mMoveCallbacks.notifyStatusChanged(moveId, e.error); } } }); @@ -23856,6 +24535,17 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); measurePath = Environment.getDataAppDirectory(volumeUuid); } + // If we're moving app data around, we need all the users unlocked + if (moveCompleteApp) { + for (int userId : installedUserIds) { + if (StorageManager.isFileEncryptedNativeOrEmulated() + && !StorageManager.isUserKeyUnlocked(userId)) { + throw new PackageManagerException(MOVE_FAILED_LOCKED_USER, + "User " + userId + " must be unlocked"); + } + } + } + final PackageStats stats = new PackageStats(null, -1); synchronized (mInstaller) { for (int userId : installedUserIds) { @@ -24510,6 +25200,51 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } + private class PackageManagerNative extends IPackageManagerNative.Stub { + @Override + public String[] getNamesForUids(int[] uids) throws RemoteException { + final String[] results = PackageManagerService.this.getNamesForUids(uids); + // massage results so they can be parsed by the native binder + for (int i = results.length - 1; i >= 0; --i) { + if (results[i] == null) { + results[i] = ""; + } + } + return results; + } + + // NB: this differentiates between preloads and sideloads + @Override + public String getInstallerForPackage(String packageName) throws RemoteException { + final String installerName = getInstallerPackageName(packageName); + if (!TextUtils.isEmpty(installerName)) { + return installerName; + } + // differentiate between preload and sideload + int callingUser = UserHandle.getUserId(Binder.getCallingUid()); + ApplicationInfo appInfo = getApplicationInfo(packageName, + /*flags*/ 0, + /*userId*/ callingUser); + if (appInfo != null && (appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + return "preload"; + } + return ""; + } + + @Override + public int getVersionCodeForPackage(String packageName) throws RemoteException { + try { + int callingUser = UserHandle.getUserId(Binder.getCallingUid()); + PackageInfo pInfo = getPackageInfo(packageName, 0, callingUser); + if (pInfo != null) { + return pInfo.versionCode; + } + } catch (Exception e) { + } + return 0; + } + } + private class PackageManagerInternalImpl extends PackageManagerInternal { @Override public void setLocationPackagesProvider(PackagesProvider provider) { @@ -24658,7 +25393,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); final String resolvedType = intent.resolveTypeIfNeeded(mContext.getContentResolver()); return PackageManagerService.this .queryIntentActivitiesInternal(intent, resolvedType, flags, filterCallingUid, - userId, false /*resolveForStart*/); + userId, false /*resolveForStart*/, true /*allowDynamicSplits*/); } @Override @@ -24864,6 +25599,20 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); public boolean canAccessInstantApps(int callingUid, int userId) { return PackageManagerService.this.canViewInstantApps(callingUid, userId); } + + @Override + public boolean hasInstantApplicationMetadata(String packageName, int userId) { + synchronized (mPackages) { + return mInstantAppRegistry.hasInstantApplicationMetadataLPr(packageName, userId); + } + } + + @Override + public void notifyPackageUse(String packageName, int reason) { + synchronized (mPackages) { + PackageManagerService.this.notifyPackageUseLocked(packageName, reason); + } + } } @Override @@ -25123,6 +25872,6 @@ interface PackageSender { void sendPackageBroadcast(final String action, final String pkg, final Bundle extras, final int flags, final String targetPkg, final IIntentReceiver finishedReceiver, final int[] userIds); - void sendPackageAddedForNewUsers(String packageName, boolean isSystem, - int appId, int... userIds); + void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted, + boolean includeStopped, int appId, int... userIds); } diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 0ec61df773699e39e2378ce766886b609231f95c..806abec6b3eb27050dd10f82961b60dc3cf2d8f8 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -148,6 +148,8 @@ class PackageManagerShellCommand extends ShellCommand { return runSetHomeActivity(); case "get-privapp-permissions": return runGetPrivappPermissions(); + case "get-privapp-deny-permissions": + return runGetPrivappDenyPermissions(); case "get-instantapp-resolver": return runGetInstantAppResolver(); case "has-feature": @@ -1227,6 +1229,9 @@ class PackageManagerShellCommand extends ShellCommand { case "--full": sessionParams.setInstallAsInstantApp(false /*isInstantApp*/); break; + case "--preload": + sessionParams.setInstallAsVirtualPreload(); + break; case "--user": params.userId = UserHandle.parseUserArg(getNextArgRequired()); break; @@ -1296,6 +1301,19 @@ class PackageManagerShellCommand extends ShellCommand { return 0; } + private int runGetPrivappDenyPermissions() { + final String pkg = getNextArg(); + if (pkg == null) { + System.err.println("Error: no package specified."); + return 1; + } + ArraySet privAppDenyPermissions = + SystemConfig.getInstance().getPrivAppDenyPermissions(pkg); + getOutPrintWriter().println(privAppDenyPermissions == null + ? "{}" : privAppDenyPermissions.toString()); + return 0; + } + private int runGetInstantAppResolver() { final PrintWriter pw = getOutPrintWriter(); try { diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index f68512758456445dd2210e869c62950ad19dc78a..d3ca1fda5caba4fbbb31567aed31867b8194aec6 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -420,11 +420,19 @@ abstract class PackageSettingBase extends SettingBase { modifyUserState(userId).instantApp = instantApp; } + boolean getVirtulalPreload(int userId) { + return readUserState(userId).virtualPreload; + } + + void setVirtualPreload(boolean virtualPreload, int userId) { + modifyUserState(userId).virtualPreload = virtualPreload; + } + void setUserState(int userId, long ceDataInode, int enabled, boolean installed, boolean stopped, boolean notLaunched, boolean hidden, boolean suspended, boolean instantApp, - String lastDisableAppCaller, ArraySet enabledComponents, - ArraySet disabledComponents, int domainVerifState, - int linkGeneration, int installReason) { + boolean virtualPreload, String lastDisableAppCaller, + ArraySet enabledComponents, ArraySet disabledComponents, + int domainVerifState, int linkGeneration, int installReason) { PackageUserState state = modifyUserState(userId); state.ceDataInode = ceDataInode; state.enabled = enabled; @@ -440,6 +448,7 @@ abstract class PackageSettingBase extends SettingBase { state.appLinkGeneration = linkGeneration; state.installReason = installReason; state.instantApp = instantApp; + state.virtualPreload = virtualPreload; } ArraySet getEnabledComponents(int userId) { diff --git a/services/core/java/com/android/server/pm/PermissionsState.java b/services/core/java/com/android/server/pm/PermissionsState.java index 8a427cd329e2668159e422ccdf7bafbf578b36c7..f4d2ad2c6eb0c9fb298e87fe986e2cc6396b9644 100644 --- a/services/core/java/com/android/server/pm/PermissionsState.java +++ b/services/core/java/com/android/server/pm/PermissionsState.java @@ -427,7 +427,7 @@ public final class PermissionsState { mPermissionReviewRequired.put(userId, true); } else if ((oldFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0 && (newFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) == 0) { - if (mPermissionReviewRequired != null) { + if (mPermissionReviewRequired != null && !hasPermissionRequiringReview(userId)) { mPermissionReviewRequired.delete(userId); if (mPermissionReviewRequired.size() <= 0) { mPermissionReviewRequired = null; @@ -438,6 +438,18 @@ public final class PermissionsState { return updated; } + private boolean hasPermissionRequiringReview(int userId) { + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + final PermissionData permission = mPermissions.valueAt(i); + if ((permission.getFlags(userId) + & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0) { + return true; + } + } + return false; + } + public boolean updatePermissionFlagsForAllPermissions( int userId, int flagMask, int flagValues) { enforceValidUserId(userId); diff --git a/services/core/java/com/android/server/pm/PreferredComponent.java b/services/core/java/com/android/server/pm/PreferredComponent.java index 8e2e0cde273f47bea34bda0031e99ab96023f1a0..0f4df972ca9526d0ea4d319ef2a3c45bb07749ad 100644 --- a/services/core/java/com/android/server/pm/PreferredComponent.java +++ b/services/core/java/com/android/server/pm/PreferredComponent.java @@ -30,6 +30,7 @@ import android.util.Slog; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.List; public class PreferredComponent { @@ -241,6 +242,54 @@ public class PreferredComponent { return numMatch == NS; } + public boolean isSuperset(List query) { + if (mSetPackages == null) { + return query == null; + } + if (query == null) { + return true; + } + final int NQ = query.size(); + final int NS = mSetPackages.length; + if (NS < NQ) { + return false; + } + for (int i=0; i query) { + if (mSetPackages == null || query == null) { + return new ComponentName[0]; + } + final int NQ = query.size(); + final int NS = mSetPackages.length; + ArrayList aliveComponents = new ArrayList<>(); + for (int i = 0; i < NQ; i++) { + ResolveInfo ri = query.get(i); + ActivityInfo ai = ri.activityInfo; + for (int j = 0; j < NS; j++) { + if (mSetPackages[j].equals(ai.packageName) && mSetClasses[j].equals(ai.name)) { + aliveComponents.add(new ComponentName(mSetPackages[j], mSetClasses[j])); + break; + } + } + } + return aliveComponents.toArray(new ComponentName[aliveComponents.size()]); + } + public void dump(PrintWriter out, String prefix, Object ident) { out.print(prefix); out.print( Integer.toHexString(System.identityHashCode(ident))); diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 45d0c585627b7d258e6bdd1d0e0a4d224eba5104..56835f69a3c7864e2a271bb8f36a788ed6816584 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -226,6 +226,7 @@ final class Settings { private static final String ATTR_APP_LINK_GENERATION = "app-link-generation"; private static final String ATTR_INSTALL_REASON = "install-reason"; private static final String ATTR_INSTANT_APP = "instant-app"; + private static final String ATTR_VIRTUAL_PRELOAD = "virtual-preload"; private static final String ATTR_PACKAGE_NAME = "packageName"; private static final String ATTR_FINGERPRINT = "fingerprint"; @@ -697,8 +698,9 @@ final class Settings { PackageSetting disabledPkg, String realPkgName, SharedUserSetting sharedUser, File codePath, File resourcePath, String legacyNativeLibraryPath, String primaryCpuAbi, String secondaryCpuAbi, int versionCode, int pkgFlags, int pkgPrivateFlags, - UserHandle installUser, boolean allowInstall, boolean instantApp, String parentPkgName, - List childPkgNames, UserManagerService userManager, + UserHandle installUser, boolean allowInstall, boolean instantApp, + boolean virtualPreload, String parentPkgName, List childPkgNames, + UserManagerService userManager, String[] usesStaticLibraries, int[] usesStaticLibrariesVersions) { final PackageSetting pkgSetting; if (originalPkg != null) { @@ -760,6 +762,7 @@ final class Settings { false /*hidden*/, false /*suspended*/, instantApp, + virtualPreload, null /*lastDisableAppCaller*/, null /*enabledComponents*/, null /*disabledComponents*/, @@ -1693,6 +1696,7 @@ final class Settings { false /*hidden*/, false /*suspended*/, false /*instantApp*/, + false /*virtualPreload*/, null /*lastDisableAppCaller*/, null /*enabledComponents*/, null /*disabledComponents*/, @@ -1766,6 +1770,8 @@ final class Settings { ATTR_BLOCK_UNINSTALL, false); final boolean instantApp = XmlUtils.readBooleanAttribute(parser, ATTR_INSTANT_APP, false); + final boolean virtualPreload = XmlUtils.readBooleanAttribute(parser, + ATTR_VIRTUAL_PRELOAD, false); final int enabled = XmlUtils.readIntAttribute(parser, ATTR_ENABLED, COMPONENT_ENABLED_STATE_DEFAULT); final String enabledCaller = parser.getAttributeValue(null, @@ -1805,8 +1811,8 @@ final class Settings { setBlockUninstallLPw(userId, name, true); } ps.setUserState(userId, ceDataInode, enabled, installed, stopped, notLaunched, - hidden, suspended, instantApp, enabledCaller, enabledComponents, - disabledComponents, verifState, linkGeneration, + hidden, suspended, instantApp, virtualPreload, enabledCaller, + enabledComponents, disabledComponents, verifState, linkGeneration, installReason); } else if (tagName.equals("preferred-activities")) { readPreferredActivitiesLPw(parser, userId); @@ -2117,6 +2123,9 @@ final class Settings { if (ustate.instantApp) { serializer.attribute(null, ATTR_INSTANT_APP, "true"); } + if (ustate.virtualPreload) { + serializer.attribute(null, ATTR_VIRTUAL_PRELOAD, "true"); + } if (ustate.enabled != COMPONENT_ENABLED_STATE_DEFAULT) { serializer.attribute(null, ATTR_ENABLED, Integer.toString(ustate.enabled)); @@ -4603,6 +4612,7 @@ final class Settings { pw.print(ps.getStopped(user.id) ? "S" : "s"); pw.print(ps.getNotLaunched(user.id) ? "l" : "L"); pw.print(ps.getInstantApp(user.id) ? "IA" : "ia"); + pw.print(ps.getVirtulalPreload(user.id) ? "VPI" : "vpi"); pw.print(","); pw.print(ps.getEnabled(user.id)); String lastDisabledAppCaller = ps.getLastDisabledAppCaller(user.id); @@ -4857,7 +4867,9 @@ final class Settings { pw.print(" enabled="); pw.print(ps.getEnabled(user.id)); pw.print(" instant="); - pw.println(ps.getInstantApp(user.id)); + pw.print(ps.getInstantApp(user.id)); + pw.print(" virtual="); + pw.println(ps.getVirtulalPreload(user.id)); String[] overlayPaths = ps.getOverlayPaths(user.id); if (overlayPaths != null && overlayPaths.length > 0) { diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index 6f70f4c89ad294e1bddd982f07386baf31dc9090..a0fd43640e61e1f07cf21c0ef7697df7c3c1b4b3 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -611,7 +611,8 @@ class ShortcutPackage extends ShortcutPackageItem { } checked.add(activity); - if (!s.injectIsActivityEnabledAndExported(activity, getOwnerUserId())) { + if ((activity != null) + && !s.injectIsActivityEnabledAndExported(activity, getOwnerUserId())) { return false; } } diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java index 791197267ecb505ebca39c5a9e4428214dc7d60d..15d20716a322383d4d61dda53121c0e55df11c26 100644 --- a/services/core/java/com/android/server/pm/ShortcutService.java +++ b/services/core/java/com/android/server/pm/ShortcutService.java @@ -483,22 +483,25 @@ public class ShortcutService extends IShortcutService.Stub { final private IUidObserver mUidObserver = new IUidObserver.Stub() { @Override - public void onUidStateChanged(int uid, int procState, long procStateSeq) - throws RemoteException { - handleOnUidStateChanged(uid, procState); + public void onUidStateChanged(int uid, int procState, long procStateSeq) { + injectPostToHandler(() -> handleOnUidStateChanged(uid, procState)); } @Override - public void onUidGone(int uid, boolean disabled) throws RemoteException { - handleOnUidStateChanged(uid, ActivityManager.PROCESS_STATE_NONEXISTENT); + public void onUidGone(int uid, boolean disabled) { + injectPostToHandler(() -> + handleOnUidStateChanged(uid, ActivityManager.PROCESS_STATE_NONEXISTENT)); } @Override - public void onUidActive(int uid) throws RemoteException { + public void onUidActive(int uid) { } @Override - public void onUidIdle(int uid, boolean disabled) throws RemoteException { + public void onUidIdle(int uid, boolean disabled) { + } + + @Override public void onUidCachedChanged(int uid, boolean cached) { } }; diff --git a/services/core/java/com/android/server/pm/UserDataPreparer.java b/services/core/java/com/android/server/pm/UserDataPreparer.java index fc00acc8a28128137222063ceec72867c6f65d25..b8b00af448eb9686c0d19203835cfd23b884b1a2 100644 --- a/services/core/java/com/android/server/pm/UserDataPreparer.java +++ b/services/core/java/com/android/server/pm/UserDataPreparer.java @@ -99,8 +99,7 @@ class UserDataPreparer { } catch (Exception e) { logCriticalInfo(Log.WARN, "Destroying user " + userId + " on volume " + volumeUuid + " because we failed to prepare: " + e); - destroyUserDataLI(volumeUuid, userId, - StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE); + destroyUserDataLI(volumeUuid, userId, flags); if (allowRecover) { // Try one last time; if we fail again we're really in trouble diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 62f4a301511d39bfff8d08fed1b32fcdb070e127..00ac2fa54b8584ce193fdfca5d42326da49dc655 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -128,6 +128,7 @@ import java.util.List; * * Method naming convention: *

          + *
        • Methods suffixed with "LAr" should be called within the {@link #mAppRestrictionsLock} lock. *
        • Methods suffixed with "LP" should be called within the {@link #mPackagesLock} lock. *
        • Methods suffixed with "LR" should be called within the {@link #mRestrictionsLock} lock. *
        • Methods suffixed with "LU" should be called within the {@link #mUsersLock} lock. @@ -232,6 +233,8 @@ public class UserManagerService extends IUserManager.Stub { // Short-term lock for internal state, when interaction/sync with PM is not required private final Object mUsersLock = LockGuard.installNewLock(LockGuard.INDEX_USER); private final Object mRestrictionsLock = new Object(); + // Used for serializing access to app restriction files + private final Object mAppRestrictionsLock = new Object(); private final Handler mHandler; @@ -962,7 +965,7 @@ public class UserManagerService extends IUserManager.Stub { @Override public boolean isUserUnlocked(int userId) { checkManageOrInteractPermIfCallerInOtherProfileGroup(userId, "isUserUnlocked"); - return mLocalService.isUserUnlockingOrUnlocked(userId); + return mLocalService.isUserUnlocked(userId); } @Override @@ -2341,13 +2344,11 @@ public class UserManagerService extends IUserManager.Stub { /** * Removes the app restrictions file for a specific package and user id, if it exists. */ - private void cleanAppRestrictionsForPackage(String pkg, int userId) { - synchronized (mPackagesLock) { - File dir = Environment.getUserSystemDirectory(userId); - File resFile = new File(dir, packageToRestrictionsFileName(pkg)); - if (resFile.exists()) { - resFile.delete(); - } + private static void cleanAppRestrictionsForPackageLAr(String pkg, int userId) { + File dir = Environment.getUserSystemDirectory(userId); + File resFile = new File(dir, packageToRestrictionsFileName(pkg)); + if (resFile.exists()) { + resFile.delete(); } } @@ -2693,11 +2694,6 @@ public class UserManagerService extends IUserManager.Stub { addRemovingUserIdLocked(userHandle); } - try { - mAppOpsService.removeUser(userHandle); - } catch (RemoteException e) { - Log.w(LOG_TAG, "Unable to notify AppOpsService of removing user", e); - } // Set this to a partially created user, so that the user will be purged // on next startup, in case the runtime stops now before stopping and // removing the user completely. @@ -2707,6 +2703,11 @@ public class UserManagerService extends IUserManager.Stub { userData.info.flags |= UserInfo.FLAG_DISABLED; writeUserLP(userData); } + try { + mAppOpsService.removeUser(userHandle); + } catch (RemoteException e) { + Log.w(LOG_TAG, "Unable to notify AppOpsService of removing user", e); + } if (userData.info.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && userData.info.isManagedProfile()) { @@ -2866,9 +2867,9 @@ public class UserManagerService extends IUserManager.Stub { || !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) { checkSystemOrRoot("get application restrictions for other user/app " + packageName); } - synchronized (mPackagesLock) { + synchronized (mAppRestrictionsLock) { // Read the restrictions from XML - return readApplicationRestrictionsLP(packageName, userId); + return readApplicationRestrictionsLAr(packageName, userId); } } @@ -2879,12 +2880,12 @@ public class UserManagerService extends IUserManager.Stub { if (restrictions != null) { restrictions.setDefusable(true); } - synchronized (mPackagesLock) { + synchronized (mAppRestrictionsLock) { if (restrictions == null || restrictions.isEmpty()) { - cleanAppRestrictionsForPackage(packageName, userId); + cleanAppRestrictionsForPackageLAr(packageName, userId); } else { // Write the restrictions to XML - writeApplicationRestrictionsLP(packageName, restrictions, userId); + writeApplicationRestrictionsLAr(packageName, restrictions, userId); } } @@ -2907,15 +2908,17 @@ public class UserManagerService extends IUserManager.Stub { } } - private Bundle readApplicationRestrictionsLP(String packageName, int userId) { + @GuardedBy("mAppRestrictionsLock") + private static Bundle readApplicationRestrictionsLAr(String packageName, int userId) { AtomicFile restrictionsFile = new AtomicFile(new File(Environment.getUserSystemDirectory(userId), packageToRestrictionsFileName(packageName))); - return readApplicationRestrictionsLP(restrictionsFile); + return readApplicationRestrictionsLAr(restrictionsFile); } @VisibleForTesting - static Bundle readApplicationRestrictionsLP(AtomicFile restrictionsFile) { + @GuardedBy("mAppRestrictionsLock") + static Bundle readApplicationRestrictionsLAr(AtomicFile restrictionsFile) { final Bundle restrictions = new Bundle(); final ArrayList values = new ArrayList<>(); if (!restrictionsFile.getBaseFile().exists()) { @@ -2998,16 +3001,18 @@ public class UserManagerService extends IUserManager.Stub { return childBundle; } - private void writeApplicationRestrictionsLP(String packageName, + @GuardedBy("mAppRestrictionsLock") + private static void writeApplicationRestrictionsLAr(String packageName, Bundle restrictions, int userId) { AtomicFile restrictionsFile = new AtomicFile( new File(Environment.getUserSystemDirectory(userId), packageToRestrictionsFileName(packageName))); - writeApplicationRestrictionsLP(restrictions, restrictionsFile); + writeApplicationRestrictionsLAr(restrictions, restrictionsFile); } @VisibleForTesting - static void writeApplicationRestrictionsLP(Bundle restrictions, AtomicFile restrictionsFile) { + @GuardedBy("mAppRestrictionsLock") + static void writeApplicationRestrictionsLAr(Bundle restrictions, AtomicFile restrictionsFile) { FileOutputStream fos = null; try { fos = restrictionsFile.startWrite(); @@ -3251,7 +3256,7 @@ public class UserManagerService extends IUserManager.Stub { return -1; } - private String packageToRestrictionsFileName(String packageName) { + private static String packageToRestrictionsFileName(String packageName) { return RESTRICTIONS_FILE_PREFIX + packageName + XML_SUFFIX; } @@ -3705,19 +3710,29 @@ public class UserManagerService extends IUserManager.Stub { @Override public boolean isUserUnlockingOrUnlocked(int userId) { + int state; synchronized (mUserStates) { - int state = mUserStates.get(userId, -1); - return (state == UserState.STATE_RUNNING_UNLOCKING) - || (state == UserState.STATE_RUNNING_UNLOCKED); + state = mUserStates.get(userId, -1); + } + // Special case, in the stopping/shutdown state user key can still be unlocked + if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { + return StorageManager.isUserKeyUnlocked(userId); } + return (state == UserState.STATE_RUNNING_UNLOCKING) + || (state == UserState.STATE_RUNNING_UNLOCKED); } @Override public boolean isUserUnlocked(int userId) { + int state; synchronized (mUserStates) { - int state = mUserStates.get(userId, -1); - return state == UserState.STATE_RUNNING_UNLOCKED; + state = mUserStates.get(userId, -1); + } + // Special case, in the stopping/shutdown state user key can still be unlocked + if (state == UserState.STATE_STOPPING || state == UserState.STATE_SHUTDOWN) { + return StorageManager.isUserKeyUnlocked(userId); } + return state == UserState.STATE_RUNNING_UNLOCKED; } } diff --git a/services/core/java/com/android/server/pm/dex/DexoptUtils.java b/services/core/java/com/android/server/pm/dex/DexoptUtils.java index c23b03153e583d9479024b5dc71b0dc66c3b3149..e1310a2f1ab37df514de58aa51654f91caa27ccc 100644 --- a/services/core/java/com/android/server/pm/dex/DexoptUtils.java +++ b/services/core/java/com/android/server/pm/dex/DexoptUtils.java @@ -20,6 +20,7 @@ import android.content.pm.ApplicationInfo; import android.util.Slog; import android.util.SparseArray; +import com.android.internal.os.ClassLoaderFactory; import com.android.server.pm.PackageDexOptimizer; import java.io.File; @@ -67,7 +68,7 @@ public final class DexoptUtils { // The base class loader context contains only the shared library. String sharedLibrariesClassPath = encodeClasspath(sharedLibraries); String baseApkContextClassLoader = encodeClassLoader( - sharedLibrariesClassPath, "dalvik.system.PathClassLoader"); + sharedLibrariesClassPath, info.classLoaderName); if (info.getSplitCodePaths() == null) { // The application has no splits. @@ -98,7 +99,7 @@ public final class DexoptUtils { String classpath = sharedLibrariesAndBaseClassPath; for (int i = 1; i < classLoaderContexts.length; i++) { classLoaderContexts[i] = pathsWithCode[i] - ? encodeClassLoader(classpath, "dalvik.system.PathClassLoader") : null; + ? encodeClassLoader(classpath, info.classLoaderName) : null; // Note that the splits with no code are not removed from the classpath computation. // i.e. split_n might get the split_n-1 in its classpath dependency even // if split_n-1 has no code. @@ -122,10 +123,10 @@ public final class DexoptUtils { String[] splitClassLoaderEncodingCache = new String[splitRelativeCodePaths.length]; for (int i = 0; i < splitRelativeCodePaths.length; i++) { splitClassLoaderEncodingCache[i] = encodeClassLoader(splitRelativeCodePaths[i], - "dalvik.system.PathClassLoader"); + info.splitClassLoaderNames[i]); } String splitDependencyOnBase = encodeClassLoader( - sharedLibrariesAndBaseClassPath, "dalvik.system.PathClassLoader"); + sharedLibrariesAndBaseClassPath, info.classLoaderName); SparseArray splitDependencies = info.splitDependencies; // Note that not all splits have dependencies (e.g. configuration splits) @@ -144,7 +145,7 @@ public final class DexoptUtils { // We also need to add the class loader of the current split which should // come first in the context. for (int i = 1; i < classLoaderContexts.length; i++) { - String splitClassLoader = encodeClassLoader("", "dalvik.system.PathClassLoader"); + String splitClassLoader = encodeClassLoader("", info.splitClassLoaderNames[i - 1]); if (pathsWithCode[i]) { // If classLoaderContexts[i] is null it means that the split does not have // any dependency. In this case its context equals its declared class loader. @@ -248,8 +249,10 @@ public final class DexoptUtils { return classpath; } String classLoaderDexoptEncoding = classLoaderName; - if ("dalvik.system.PathClassLoader".equals(classLoaderName)) { + if (ClassLoaderFactory.isPathClassLoaderName(classLoaderName)) { classLoaderDexoptEncoding = "PCL"; + } else if (ClassLoaderFactory.isDelegateLastClassLoaderName(classLoaderName)) { + classLoaderDexoptEncoding = "DLC"; } else { Slog.wtf(TAG, "Unsupported classLoaderName: " + classLoaderName); } @@ -315,7 +318,7 @@ public final class DexoptUtils { // is fine (they come over binder). Even if something changes we expect the sizes to be // very small and it shouldn't matter much. for (int i = 1; i < classLoadersNames.size(); i++) { - if (!isValidClassLoaderName(classLoadersNames.get(i))) { + if (!ClassLoaderFactory.isValidClassLoaderName(classLoadersNames.get(i))) { return null; } String classpath = encodeClasspath(classPaths.get(i).split(File.pathSeparator)); @@ -325,7 +328,7 @@ public final class DexoptUtils { // Now compute the class loader context for each dex file from the first classpath. String loadingClassLoader = classLoadersNames.get(0); - if (!isValidClassLoaderName(loadingClassLoader)) { + if (!ClassLoaderFactory.isValidClassLoaderName(loadingClassLoader)) { return null; } String[] loadedDexPaths = classPaths.get(0).split(File.pathSeparator); @@ -341,11 +344,6 @@ public final class DexoptUtils { return loadedDexPathsContext; } - // AOSP-only hack. - private static boolean isValidClassLoaderName(String name) { - return "dalvik.system.PathClassLoader".equals(name) || "dalvik.system.DexClassLoader".equals(name); - } - /** * Returns the relative paths of the splits declared by the application {@code info}. * Assumes that the application declares a non-null array of splits. diff --git a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java index 0b54e5e53822c792e77132e7857e4c3a8b7edd2f..55c582ed47b4bac379090477d829d2aa9e740bcd 100644 --- a/services/core/java/com/android/server/policy/AccessibilityShortcutController.java +++ b/services/core/java/com/android/server/policy/AccessibilityShortcutController.java @@ -18,11 +18,13 @@ package com.android.server.policy; import android.accessibilityservice.AccessibilityServiceInfo; import android.app.ActivityManager; +import android.app.ActivityThread; import android.app.AlertDialog; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; +import android.content.pm.PackageManager; import android.database.ContentObserver; import android.media.AudioAttributes; import android.media.Ringtone; @@ -137,13 +139,18 @@ public class AccessibilityShortcutController { final int userId = ActivityManager.getCurrentUser(); final int dialogAlreadyShown = Settings.Secure.getIntForUser( cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, userId); + // Use USAGE_ASSISTANCE_ACCESSIBILITY for TVs to ensure that TVs play the ringtone as they + // have less ways of providing feedback like vibration. + final int audioAttributesUsage = hasFeatureLeanback() + ? AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY + : AudioAttributes.USAGE_NOTIFICATION_EVENT; // Play a notification tone final Ringtone tone = RingtoneManager.getRingtone(mContext, Settings.System.DEFAULT_NOTIFICATION_URI); if (tone != null) { tone.setAudioAttributes(new AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT) + .setUsage(audioAttributesUsage) .build()); tone.play(); } @@ -212,7 +219,9 @@ public class AccessibilityShortcutController { final String warningMessage = String.format( mContext.getString(R.string.accessibility_shortcut_toogle_warning), serviceInfo.getResolveInfo().loadLabel(mContext.getPackageManager()).toString()); - final AlertDialog alertDialog = mFrameworkObjectProvider.getAlertDialogBuilder(mContext) + final AlertDialog alertDialog = mFrameworkObjectProvider.getAlertDialogBuilder( + // Use SystemUI context so we pick up any theme set in a vendor overlay + ActivityThread.currentActivityThread().getSystemUiContext()) .setTitle(R.string.accessibility_shortcut_warning_dialog_title) .setMessage(warningMessage) .setCancelable(false) @@ -251,6 +260,10 @@ public class AccessibilityShortcutController { AccessibilityServiceInfo.FEEDBACK_ALL_MASK).contains(serviceInfo); } + private boolean hasFeatureLeanback() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK); + } + // Class to allow mocking of static framework calls public static class FrameworkObjectProvider { public AccessibilityManager getAccessibilityManagerInstance(Context context) { diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java index 14fabc593991e4756866789543e301cdc1c1ea5e..8eb6d065bf25a117497d389f333e9c9d83e040c7 100644 --- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java +++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java @@ -202,11 +202,14 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn && !(mAdapter.getItem(0) instanceof LongPressAction)) { ((SinglePressAction) mAdapter.getItem(0)).onPress(); } else { - WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes(); - attrs.setTitle("LegacyGlobalActions"); - mDialog.getWindow().setAttributes(attrs); - mDialog.show(); - mDialog.getWindow().getDecorView().setSystemUiVisibility(View.STATUS_BAR_DISABLE_EXPAND); + if (mDialog != null) { + WindowManager.LayoutParams attrs = mDialog.getWindow().getAttributes(); + attrs.setTitle("LegacyGlobalActions"); + mDialog.getWindow().setAttributes(attrs); + mDialog.show(); + mDialog.getWindow().getDecorView().setSystemUiVisibility( + View.STATUS_BAR_DISABLE_EXPAND); + } } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index ae78d7c551c11036af7444ab2430f8d81b40e736..da14c360f16ab341d7cccfbb15adea812dc85d1e 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -26,8 +26,8 @@ import static android.app.AppOpsManager.OP_TOAST_WINDOW; import static android.content.Context.CONTEXT_RESTRICTED; import static android.content.Context.DISPLAY_SERVICE; import static android.content.Context.WINDOW_SERVICE; -import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.FEATURE_LEANBACK; +import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.FEATURE_WATCH; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.res.Configuration.EMPTY; @@ -35,6 +35,8 @@ import static android.content.res.Configuration.UI_MODE_TYPE_CAR; import static android.content.res.Configuration.UI_MODE_TYPE_MASK; import static android.os.Build.VERSION_CODES.M; import static android.os.Build.VERSION_CODES.O; +import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.STATE_OFF; import static android.view.WindowManager.DOCKED_LEFT; import static android.view.WindowManager.DOCKED_RIGHT; import static android.view.WindowManager.DOCKED_TOP; @@ -57,6 +59,7 @@ import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.LAST_SYSTEM_WINDOW; import static android.view.WindowManager.LayoutParams.MATCH_PARENT; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_STATUS_BAR_VISIBLE_TRANSPARENT; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; @@ -70,8 +73,8 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY; -import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; +import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static android.view.WindowManager.LayoutParams.TYPE_BOOT_PROGRESS; import static android.view.WindowManager.LayoutParams.TYPE_DISPLAY_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; @@ -120,6 +123,7 @@ import android.app.ActivityManager; import android.app.ActivityManager.StackId; import android.app.ActivityManagerInternal; import android.app.ActivityManagerInternal.SleepToken; +import android.app.ActivityThread; import android.app.AppOpsManager; import android.app.IUiModeManager; import android.app.ProgressDialog; @@ -177,8 +181,8 @@ import android.os.SystemClock; import android.os.SystemProperties; import android.os.UEventObserver; import android.os.UserHandle; -import android.os.Vibrator; import android.os.VibrationEffect; +import android.os.Vibrator; import android.provider.MediaStore; import android.provider.Settings; import android.service.dreams.DreamManagerInternal; @@ -226,6 +230,7 @@ import android.view.autofill.AutofillManagerInternal; import android.view.inputmethod.InputMethodManagerInternal; import com.android.internal.R; +import com.android.internal.annotations.GuardedBy; import com.android.internal.logging.MetricsLogger; import com.android.internal.policy.IKeyguardDismissCallback; import com.android.internal.policy.IShortcutService; @@ -240,8 +245,8 @@ import com.android.server.policy.keyguard.KeyguardServiceDelegate; import com.android.server.policy.keyguard.KeyguardServiceDelegate.DrawnListener; import com.android.server.policy.keyguard.KeyguardStateMonitor.StateCallback; import com.android.server.statusbar.StatusBarManagerInternal; -import com.android.server.wm.AppTransition; import com.android.server.vr.VrManagerInternal; +import com.android.server.wm.AppTransition; import java.io.File; import java.io.FileReader; @@ -330,6 +335,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps"; static public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; static public final String SYSTEM_DIALOG_REASON_ASSIST = "assist"; + static public final String SYSTEM_DIALOG_REASON_SCREENSHOT = "screenshot"; /** * These are the system UI flags that, when changing, can cause the layout @@ -676,6 +682,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { private boolean mLastShowingDream; boolean mDreamingLockscreen; boolean mDreamingSleepTokenNeeded; + private boolean mWindowSleepTokenNeeded; + private boolean mLastWindowSleepTokenNeeded; + + @GuardedBy("mHandler") + private SleepToken mWindowSleepToken; + SleepToken mDreamingSleepToken; SleepToken mScreenOffSleepToken; volatile boolean mKeyguardOccluded; @@ -818,6 +830,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private static final int MSG_ACCESSIBILITY_TV = 23; private static final int MSG_DISPATCH_BACK_KEY_TO_AUTOFILL = 24; private static final int MSG_SYSTEM_KEY_PRESS = 25; + private static final int MSG_HANDLE_ALL_APPS = 26; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_STATUS = 0; private static final int MSG_REQUEST_TRANSIENT_BARS_ARG_NAVIGATION = 1; @@ -910,6 +923,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { case MSG_SYSTEM_KEY_PRESS: sendSystemKeyToStatusBar(msg.arg1); break; + case MSG_HANDLE_ALL_APPS: + launchAllAppsAction(); + break; } } } @@ -1036,6 +1052,22 @@ public class PhoneWindowManager implements WindowManagerPolicy { } }; + private final Runnable mAcquireSleepTokenRunnable = () -> { + if (mWindowSleepToken != null) { + return; + } + mWindowSleepToken = mActivityManagerInternal.acquireSleepToken("WindowSleepToken", + DEFAULT_DISPLAY); + }; + + private final Runnable mReleaseSleepTokenRunnable = () -> { + if (mWindowSleepToken == null) { + return; + } + mWindowSleepToken.release(); + mWindowSleepToken = null; + }; + private ImmersiveModeConfirmation mImmersiveModeConfirmation; private SystemGesturesPointerEventListener mSystemGestures; @@ -1120,14 +1152,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { + ", mOrientationSensorEnabled=" + mOrientationSensorEnabled + ", mKeyguardDrawComplete=" + mKeyguardDrawComplete + ", mWindowManagerDrawComplete=" + mWindowManagerDrawComplete); - final boolean keyguardGoingAway = mWindowManagerInternal.isKeyguardGoingAway(); boolean disable = true; // Note: We postpone the rotating of the screen until the keyguard as well as the // window manager have reported a draw complete or the keyguard is going away in dismiss // mode. - if (mScreenOnEarly && mAwake && ((mKeyguardDrawComplete && mWindowManagerDrawComplete) - || keyguardGoingAway)) { + if (mScreenOnEarly && mAwake && ((mKeyguardDrawComplete && mWindowManagerDrawComplete))) { if (needSensorRunningLp()) { disable = false; //enable listener if not already enabled @@ -1138,7 +1168,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // the sensor reading was cleared which can cause it to relaunch the app that // will show in the wrong orientation first before correcting leading to app // launch delays. - mOrientationListener.enable(!keyguardGoingAway /* clearCurrentRotation */); + mOrientationListener.enable(true /* clearCurrentRotation */); if(localLOGV) Slog.v(TAG, "Enabling listeners"); mOrientationSensorEnabled = true; } @@ -1774,6 +1804,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void launchAllAppsAction() { Intent intent = new Intent(Intent.ACTION_ALL_APPS); + if (mHasFeatureLeanback) { + final PackageManager pm = mContext.getPackageManager(); + Intent intentLauncher = new Intent(Intent.ACTION_MAIN); + intentLauncher.addCategory(Intent.CATEGORY_HOME); + ResolveInfo resolveInfo = pm.resolveActivityAsUser(intentLauncher, + PackageManager.MATCH_SYSTEM_ONLY, + mCurrentUserId); + if (resolveInfo != null) { + intent.setPackage(resolveInfo.activityInfo.packageName); + } + } startActivityAsUser(intent, UserHandle.CURRENT); } @@ -2148,7 +2189,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // This method might be called before the policy has been fully initialized // or for other displays we don't care about. // TODO(multi-display): Define policy for secondary displays. - if (mContext == null || display.getDisplayId() != Display.DEFAULT_DISPLAY) { + if (mContext == null || display.getDisplayId() != DEFAULT_DISPLAY) { return; } mDisplay = display; @@ -2244,7 +2285,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void setDisplayOverscan(Display display, int left, int top, int right, int bottom) { // TODO(multi-display): Define policy for secondary displays. - if (display.getDisplayId() == Display.DEFAULT_DISPLAY) { + if (display.getDisplayId() == DEFAULT_DISPLAY) { mOverscanLeft = left; mOverscanTop = top; mOverscanRight = right; @@ -2580,18 +2621,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { attrs.privateFlags &= ~WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD; } - if (ActivityManager.isHighEndGfx()) { - if ((attrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0) { - attrs.subtreeSystemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; - } - final boolean forceWindowDrawsStatusBarBackground = - (attrs.privateFlags & PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND) - != 0; - if ((attrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0 - || forceWindowDrawsStatusBarBackground - && attrs.height == MATCH_PARENT && attrs.width == MATCH_PARENT) { - attrs.subtreeSystemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; - } + if ((attrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0) { + attrs.subtreeSystemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; + } + final boolean forceWindowDrawsStatusBarBackground = + (attrs.privateFlags & PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND) != 0; + if ((attrs.flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0 + || forceWindowDrawsStatusBarBackground + && attrs.height == MATCH_PARENT && attrs.width == MATCH_PARENT) { + attrs.subtreeSystemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; } } @@ -2642,7 +2680,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void onConfigurationChanged() { // TODO(multi-display): Define policy for secondary displays. - final Resources res = mContext.getResources(); + Context uiContext = ActivityThread.currentActivityThread().getSystemUiContext(); + final Resources res = uiContext.getResources(); mStatusBarHeight = res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height); @@ -2699,7 +2738,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { public int getNonDecorDisplayWidth(int fullWidth, int fullHeight, int rotation, int uiMode, int displayId) { // TODO(multi-display): Support navigation bar on secondary displays. - if (displayId == Display.DEFAULT_DISPLAY && mHasNavigationBar) { + if (displayId == DEFAULT_DISPLAY && mHasNavigationBar) { // For a basic navigation bar, when we are in landscape mode we place // the navigation bar to the side. if (mNavigationBarCanMove && fullWidth > fullHeight) { @@ -2721,7 +2760,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { public int getNonDecorDisplayHeight(int fullWidth, int fullHeight, int rotation, int uiMode, int displayId) { // TODO(multi-display): Support navigation bar on secondary displays. - if (displayId == Display.DEFAULT_DISPLAY && mHasNavigationBar) { + if (displayId == DEFAULT_DISPLAY && mHasNavigationBar) { // For a basic navigation bar, when we are in portrait mode we place // the navigation bar to the bottom. if (!mNavigationBarCanMove || fullWidth < fullHeight) { @@ -2745,7 +2784,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // we do want to exclude it since applications can't generally use that part // of the screen. // TODO(multi-display): Support status bars on secondary displays. - if (displayId == Display.DEFAULT_DISPLAY) { + if (displayId == DEFAULT_DISPLAY) { return getNonDecorDisplayHeight(fullWidth, fullHeight, rotation, uiMode, displayId) - mStatusBarHeight; } @@ -2797,7 +2836,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { boolean keyguardLocked = isKeyguardLocked(); boolean hideDockDivider = attrs.type == TYPE_DOCK_DIVIDER && !mWindowManagerInternal.isStackVisible(DOCKED_STACK_ID); - return (keyguardLocked && !allowWhenLocked && win.getDisplayId() == Display.DEFAULT_DISPLAY) + return (keyguardLocked && !allowWhenLocked && win.getDisplayId() == DEFAULT_DISPLAY) || hideDockDivider; } @@ -2967,7 +3006,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** Obtain proper context for showing splash screen on the provided display. */ private Context getDisplayContext(Context context, int displayId) { - if (displayId == Display.DEFAULT_DISPLAY) { + if (displayId == DEFAULT_DISPLAY) { // The default context fits. return context; } @@ -3370,11 +3409,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (!down) { cancelPreloadRecentApps(); - if (mHasFeatureLeanback) { - // Clear flags - mAccessibilityTvKey2Pressed = down; - } - mHomePressed = false; if (mHomeConsumed) { mHomeConsumed = false; @@ -3429,13 +3463,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { preloadRecentApps(); } } else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) { - if (mHasFeatureLeanback) { - mAccessibilityTvKey2Pressed = down; - if (interceptAccessibilityGestureTv()) { - return -1; - } - } - if (!keyguardOn) { handleLongPressOnHome(event.getDeviceId()); } @@ -3602,11 +3629,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { return 0; } else if (mHasFeatureLeanback && interceptBugreportGestureTv(keyCode, down)) { return -1; - } else if (mHasFeatureLeanback && keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { - mAccessibilityTvKey1Pressed = down; - if (interceptAccessibilityGestureTv()) { - return -1; + } else if (mHasFeatureLeanback && interceptAccessibilityGestureTv(keyCode, down)) { + return -1; + } else if (keyCode == KeyEvent.KEYCODE_ALL_APPS) { + if (!down) { + mHandler.removeMessages(MSG_HANDLE_ALL_APPS); + Message msg = mHandler.obtainMessage(MSG_HANDLE_ALL_APPS); + msg.setAsynchronous(true); + msg.sendToTarget(); } + return -1; } // Toggle Caps Lock on META-ALT. @@ -3827,20 +3859,28 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** * TV only: recognizes a remote control gesture as Accessibility shortcut. - * Shortcut: Long press (HOME + DPAD_CENTER) + * Shortcut: Long press (BACK + DPAD_DOWN) */ - private boolean interceptAccessibilityGestureTv() { + private boolean interceptAccessibilityGestureTv(int keyCode, boolean down) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + mAccessibilityTvKey1Pressed = down; + } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + mAccessibilityTvKey2Pressed = down; + } + if (mAccessibilityTvKey1Pressed && mAccessibilityTvKey2Pressed) { if (!mAccessibilityTvScheduled) { mAccessibilityTvScheduled = true; Message msg = Message.obtain(mHandler, MSG_ACCESSIBILITY_TV); msg.setAsynchronous(true); - mHandler.sendMessage(msg); + mHandler.sendMessageDelayed(msg, + ViewConfiguration.get(mContext).getAccessibilityShortcutKeyTimeout()); } } else if (mAccessibilityTvScheduled) { mHandler.removeMessages(MSG_ACCESSIBILITY_TV); mAccessibilityTvScheduled = false; } + return mAccessibilityTvScheduled; } @@ -5365,6 +5405,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mAllowLockscreenWhenOn = false; mShowingDream = false; + mWindowSleepTokenNeeded = false; } /** {@inheritDoc} */ @@ -5462,6 +5503,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { && stackId == DOCKED_STACK_ID) { mTopDockedOpaqueOrDimmingWindowState = win; } + + // Take note if a window wants to acquire a sleep token. + if (win.isVisibleLw() && (attrs.privateFlags & PRIVATE_FLAG_ACQUIRES_SLEEP_TOKEN) != 0 + && win.canAcquireSleepToken()) { + mWindowSleepTokenNeeded = true; + } } private void applyKeyguardPolicyLw(WindowState win, WindowState imeTarget) { @@ -5517,6 +5564,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { WindowManager.LayoutParams statusBarAttrs = mStatusBar.getAttrs(); boolean statusBarExpanded = statusBarAttrs.height == MATCH_PARENT && statusBarAttrs.width == MATCH_PARENT; + boolean topAppHidesStatusBar = topAppHidesStatusBar(); if (mForceStatusBar || mForceStatusBarFromKeyguard || mForceStatusBarTransparent || statusBarExpanded) { if (DEBUG_LAYOUT) Slog.v(TAG, "Showing status bar: forced"); @@ -5537,16 +5585,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } } else if (mTopFullscreenOpaqueWindowState != null) { - final int fl = PolicyControl.getWindowFlags(null, lp); - if (localLOGV) { - Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw() - + " shown position: " - + mTopFullscreenOpaqueWindowState.getShownPositionLw()); - Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs() - + " lp.flags=0x" + Integer.toHexString(fl)); - } - topIsFullscreen = (fl & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0 - || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0; + topIsFullscreen = topAppHidesStatusBar; // The subtle difference between the window for mTopFullscreenOpaqueWindowState // and mTopIsFullscreen is that mTopIsFullscreen is set only if the window // has the FLAG_FULLSCREEN set. Not sure if there is another way that to be the @@ -5569,8 +5608,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mStatusBarController.setBarShowingLw(true)) { changes |= FINISH_LAYOUT_REDO_LAYOUT; } + topAppHidesStatusBar = false; } } + mStatusBarController.setTopAppHidesStatusBar(topAppHidesStatusBar); } if (mTopIsFullscreen != topIsFullscreen) { @@ -5592,11 +5633,45 @@ public class PhoneWindowManager implements WindowManagerPolicy { mWindowManagerFuncs.notifyShowingDreamChanged(); } + updateWindowSleepToken(); + // update since mAllowLockscreenWhenOn might have changed updateLockScreenTimeout(); return changes; } + private void updateWindowSleepToken() { + if (mWindowSleepTokenNeeded && !mLastWindowSleepTokenNeeded) { + mHandler.removeCallbacks(mReleaseSleepTokenRunnable); + mHandler.post(mAcquireSleepTokenRunnable); + } else if (!mWindowSleepTokenNeeded && mLastWindowSleepTokenNeeded) { + mHandler.removeCallbacks(mAcquireSleepTokenRunnable); + mHandler.post(mReleaseSleepTokenRunnable); + } + mLastWindowSleepTokenNeeded = mWindowSleepTokenNeeded; + } + + /** + * @return Whether the top app should hide the statusbar based on the top fullscreen opaque + * window. + */ + private boolean topAppHidesStatusBar() { + if (mTopFullscreenOpaqueWindowState == null) { + return false; + } + final int fl = PolicyControl.getWindowFlags(null, + mTopFullscreenOpaqueWindowState.getAttrs()); + if (localLOGV) { + Slog.d(TAG, "frame: " + mTopFullscreenOpaqueWindowState.getFrameLw() + + " shown position: " + + mTopFullscreenOpaqueWindowState.getShownPositionLw()); + Slog.d(TAG, "attr: " + mTopFullscreenOpaqueWindowState.getAttrs() + + " lp.flags=0x" + Integer.toHexString(fl)); + } + return (fl & LayoutParams.FLAG_FULLSCREEN) != 0 + || (mLastSystemUiFlags & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0; + } + /** * Updates the occluded state of the Keyguard. * @@ -6330,7 +6405,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } private boolean shouldDispatchInputWhenNonInteractive(KeyEvent event) { - final boolean displayOff = (mDisplay == null || mDisplay.getState() == Display.STATE_OFF); + final boolean displayOff = (mDisplay == null || mDisplay.getState() == STATE_OFF); if (displayOff && !mHasFeatureWatch) { return false; @@ -7466,10 +7541,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + // TODO (multidisplay): Support multiple displays in WindowManagerPolicy. private void updateDreamingSleepToken(boolean acquire) { if (acquire) { if (mDreamingSleepToken == null) { - mDreamingSleepToken = mActivityManagerInternal.acquireSleepToken("Dream"); + mDreamingSleepToken = mActivityManagerInternal.acquireSleepToken( + "Dream", DEFAULT_DISPLAY); } } else { if (mDreamingSleepToken != null) { @@ -7479,10 +7556,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + // TODO (multidisplay): Support multiple displays in WindowManagerPolicy. private void updateScreenOffSleepToken(boolean acquire) { if (acquire) { if (mScreenOffSleepToken == null) { - mScreenOffSleepToken = mActivityManagerInternal.acquireSleepToken("ScreenOff"); + mScreenOffSleepToken = mActivityManagerInternal.acquireSleepToken( + "ScreenOff", DEFAULT_DISPLAY); } } else { if (mScreenOffSleepToken != null) { @@ -7741,13 +7820,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { private VibrationEffect getVibrationEffect(int effectId) { long[] pattern; switch (effectId) { - case HapticFeedbackConstants.VIRTUAL_KEY: - return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); case HapticFeedbackConstants.LONG_PRESS: pattern = mLongPressVibePattern; break; - case HapticFeedbackConstants.KEYBOARD_TAP: - return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); case HapticFeedbackConstants.CLOCK_TICK: return VibrationEffect.get(VibrationEffect.EFFECT_TICK); case HapticFeedbackConstants.CALENDAR_DATE: @@ -7758,10 +7833,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; case HapticFeedbackConstants.CONTEXT_CLICK: return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + case HapticFeedbackConstants.VIRTUAL_KEY: + return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); case HapticFeedbackConstants.VIRTUAL_KEY_RELEASE: - return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); + case HapticFeedbackConstants.KEYBOARD_PRESS: // == HapticFeedbackConstants.KEYBOARD_TAP + return VibrationEffect.get(VibrationEffect.EFFECT_CLICK); + case HapticFeedbackConstants.KEYBOARD_RELEASE: + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); case HapticFeedbackConstants.TEXT_HANDLE_MOVE: - return VibrationEffect.get(VibrationEffect.EFFECT_TICK); + return VibrationEffect.get(VibrationEffect.EFFECT_TICK, false); default: return null; } diff --git a/services/core/java/com/android/server/policy/StatusBarController.java b/services/core/java/com/android/server/policy/StatusBarController.java index 7d67b60a9e9fe92dfc69ee2c2034f8eb16959e41..ecc88b50a37c76e20a263f18adfcf88edb1be9b7 100644 --- a/services/core/java/com/android/server/policy/StatusBarController.java +++ b/services/core/java/com/android/server/policy/StatusBarController.java @@ -112,6 +112,14 @@ public class StatusBarController extends BarController { View.STATUS_BAR_TRANSPARENT); } + + public void setTopAppHidesStatusBar(boolean hidesStatusBar) { + StatusBarManagerInternal statusbar = getStatusBarInternal(); + if (statusbar != null) { + statusbar.setTopAppHidesStatusBar(hidesStatusBar); + } + } + @Override protected boolean skipAnimation() { return mWin.getAttrs().height == MATCH_PARENT; diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index 50e5e7bd2312dbb5b379907cc9c658e968844715..5a5471b1b4f5e98a0aebf96368c5aed51dc8282a 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -1,5 +1,7 @@ package com.android.server.policy.keyguard; +import static android.view.Display.INVALID_DISPLAY; + import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; @@ -201,7 +203,10 @@ public class KeyguardServiceDelegate { mKeyguardState.reset(); mHandler.post(() -> { try { - ActivityManager.getService().setLockScreenShown(true); + // There are no longer any keyguard windows on secondary displays, so pass + // INVALID_DISPLAY. All that means is that showWhenLocked activities on + // secondary displays now get to show. + ActivityManager.getService().setLockScreenShown(true, INVALID_DISPLAY); } catch (RemoteException e) { // Local call. } diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 855c055dc7d56c3cff4a4012c474e3a9c1beae7c..338ad2a951c926c6953a59611d5b1cedfef854c6 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -1569,12 +1569,15 @@ public final class PowerManagerService extends SystemService return true; } - private void setWakefulnessLocked(int wakefulness, int reason) { + @VisibleForTesting + void setWakefulnessLocked(int wakefulness, int reason) { if (mWakefulness != wakefulness) { mWakefulness = wakefulness; mWakefulnessChanging = true; mDirty |= DIRTY_WAKEFULNESS; - mNotifier.onWakefulnessChangeStarted(wakefulness, reason); + if (mNotifier != null) { + mNotifier.onWakefulnessChangeStarted(wakefulness, reason); + } } } @@ -2432,11 +2435,8 @@ public final class PowerManagerService extends SystemService return value >= -1.0f && value <= 1.0f; } - private int getDesiredScreenPolicyLocked() { - if (mIsVrModeEnabled) { - return DisplayPowerRequest.POLICY_VR; - } - + @VisibleForTesting + int getDesiredScreenPolicyLocked() { if (mWakefulness == WAKEFULNESS_ASLEEP || sQuiescent) { return DisplayPowerRequest.POLICY_OFF; } @@ -2452,6 +2452,13 @@ public final class PowerManagerService extends SystemService // doze after screen off. This causes the screen off transition to be skipped. } + // It is important that POLICY_VR check happens after the wakefulness checks above so + // that VR-mode does not prevent displays from transitioning to the correct state when + // dozing or sleeping. + if (mIsVrModeEnabled) { + return DisplayPowerRequest.POLICY_VR; + } + if ((mWakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0 || (mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0 || !mBootCompleted @@ -2961,8 +2968,15 @@ public final class PowerManagerService extends SystemService boolean disabled = false; final int appid = UserHandle.getAppId(wakeLock.mOwnerUid); if (appid >= Process.FIRST_APPLICATION_UID) { + // Cached inactive processes are never allowed to hold wake locks. + if (mConstants.NO_CACHED_WAKE_LOCKS) { + disabled = !wakeLock.mUidState.mActive && + wakeLock.mUidState.mProcState + != ActivityManager.PROCESS_STATE_NONEXISTENT && + wakeLock.mUidState.mProcState > ActivityManager.PROCESS_STATE_RECEIVER; + } if (mDeviceIdleMode) { - // If we are in idle mode, we will ignore all partial wake locks that are + // If we are in idle mode, we will also ignore all partial wake locks that are // for application uids that are not whitelisted. final UidState state = wakeLock.mUidState; if (Arrays.binarySearch(mDeviceIdleWhitelist, appid) < 0 && @@ -2971,11 +2985,6 @@ public final class PowerManagerService extends SystemService state.mProcState > ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { disabled = true; } - } else if (mConstants.NO_CACHED_WAKE_LOCKS) { - disabled = !wakeLock.mUidState.mActive && - wakeLock.mUidState.mProcState - != ActivityManager.PROCESS_STATE_NONEXISTENT && - wakeLock.mUidState.mProcState > ActivityManager.PROCESS_STATE_RECEIVER; } } if (wakeLock.mDisabled != disabled) { @@ -3111,6 +3120,11 @@ public final class PowerManagerService extends SystemService } } + @VisibleForTesting + void setVrModeEnabled(boolean enabled) { + mIsVrModeEnabled = enabled; + } + private void powerHintInternal(int hintId, int data) { nativeSendPowerHint(hintId, data); } @@ -3808,7 +3822,7 @@ public final class PowerManagerService extends SystemService synchronized (mLock) { if (mIsVrModeEnabled != enabled) { - mIsVrModeEnabled = enabled; + setVrModeEnabled(enabled); mDirty |= DIRTY_VR_MODE_CHANGED; updatePowerStateLocked(); } diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java index 0f61171899c4c2547388c864ed6ecbfc6caeaeb3..853e1b269c926c665229a10f62e4c79f79bd5d9b 100644 --- a/services/core/java/com/android/server/power/ShutdownThread.java +++ b/services/core/java/com/android/server/power/ShutdownThread.java @@ -45,24 +45,27 @@ import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; import android.os.SystemVibrator; +import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; import android.os.Vibrator; import android.os.storage.IStorageManager; import android.os.storage.IStorageShutdownObserver; +import android.util.ArrayMap; import android.util.Log; -import android.view.ViewGroup; +import android.util.TimingsTraceLog; import android.view.WindowManager; -import android.widget.ProgressBar; -import android.widget.TextView; import com.android.internal.telephony.ITelephony; +import com.android.server.RescueParty; import com.android.server.LocalServices; import com.android.server.pm.PackageManagerService; import com.android.server.statusbar.StatusBarManagerInternal; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; public final class ShutdownThread extends Thread { // constants @@ -107,6 +110,23 @@ public final class ShutdownThread extends Thread { .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build(); + // Metrics that will be reported to tron after reboot + private static final ArrayMap TRON_METRICS = new ArrayMap<>(); + + // File to use for save metrics + private static final String METRICS_FILE_BASENAME = "/data/system/shutdown-metrics"; + + // Metrics names to be persisted in shutdown-metrics file + private static String METRIC_SYSTEM_SERVER = "shutdown_system_server"; + private static String METRIC_SEND_BROADCAST = "shutdown_send_shutdown_broadcast"; + private static String METRIC_AM = "shutdown_activity_manager"; + private static String METRIC_PM = "shutdown_package_manager"; + private static String METRIC_RADIOS = "shutdown_radios"; + private static String METRIC_BT = "shutdown_bt"; + private static String METRIC_RADIO = "shutdown_radio"; + private static String METRIC_NFC = "shutdown_nfc"; + private static String METRIC_SM = "shutdown_storage_manager"; + private final Object mActionDoneSync = new Object(); private boolean mActionDone; private Context mContext; @@ -298,11 +318,20 @@ public final class ShutdownThread extends Thread { com.android.internal.R.string.reboot_to_update_reboot)); } } else if (mReason != null && mReason.equals(PowerManager.REBOOT_RECOVERY)) { - // Factory reset path. Set the dialog message accordingly. - pd.setTitle(context.getText(com.android.internal.R.string.reboot_to_reset_title)); - pd.setMessage(context.getText( - com.android.internal.R.string.reboot_to_reset_message)); - pd.setIndeterminate(true); + 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. + pd.setTitle(context.getText(com.android.internal.R.string.power_off)); + pd.setMessage(context.getText(com.android.internal.R.string.shutdown_progress)); + pd.setIndeterminate(true); + } else { + // Factory reset path. Set the dialog message accordingly. + pd.setTitle(context.getText(com.android.internal.R.string.reboot_to_reset_title)); + pd.setMessage(context.getText( + com.android.internal.R.string.reboot_to_reset_message)); + pd.setIndeterminate(true); + } } else { if (showSysuiReboot()) { return null; @@ -392,6 +421,10 @@ public final class ShutdownThread extends Thread { * Shuts off power regardless of radio and bluetooth state if the alloted time has passed. */ public void run() { + TimingsTraceLog shutdownTimingLog = newTimingsLog(); + shutdownTimingLog.traceBegin("SystemServerShutdown"); + metricStarted(METRIC_SYSTEM_SERVER); + BroadcastReceiver br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // We don't allow apps to cancel this, so ignore the result. @@ -417,6 +450,8 @@ public final class ShutdownThread extends Thread { SystemProperties.set(REBOOT_SAFEMODE_PROPERTY, "1"); } + metricStarted(METRIC_SEND_BROADCAST); + shutdownTimingLog.traceBegin("SendShutdownBroadcast"); Log.i(TAG, "Sending shutdown broadcast..."); // First send the high-level shut down broadcast. @@ -448,8 +483,12 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(BROADCAST_STOP_PERCENT, null); } + shutdownTimingLog.traceEnd(); // SendShutdownBroadcast + metricEnded(METRIC_SEND_BROADCAST); Log.i(TAG, "Shutting down activity manager..."); + shutdownTimingLog.traceBegin("ShutdownActivityManager"); + metricStarted(METRIC_AM); final IActivityManager am = IActivityManager.Stub.asInterface(ServiceManager.checkService("activity")); @@ -462,8 +501,12 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(ACTIVITY_MANAGER_STOP_PERCENT, null); } + shutdownTimingLog.traceEnd();// ShutdownActivityManager + metricEnded(METRIC_AM); Log.i(TAG, "Shutting down package manager..."); + shutdownTimingLog.traceBegin("ShutdownPackageManager"); + metricStarted(METRIC_PM); final PackageManagerService pm = (PackageManagerService) ServiceManager.getService("package"); @@ -473,12 +516,18 @@ public final class ShutdownThread extends Thread { if (mRebootHasProgressBar) { sInstance.setRebootProgress(PACKAGE_MANAGER_STOP_PERCENT, null); } + shutdownTimingLog.traceEnd(); // ShutdownPackageManager + metricEnded(METRIC_PM); // Shutdown radios. + shutdownTimingLog.traceBegin("ShutdownRadios"); + metricStarted(METRIC_RADIOS); shutdownRadios(MAX_RADIO_WAIT_TIME); if (mRebootHasProgressBar) { sInstance.setRebootProgress(RADIO_STOP_PERCENT, null); } + shutdownTimingLog.traceEnd(); // ShutdownRadios + metricEnded(METRIC_RADIOS); // Shutdown StorageManagerService to ensure media is in a safe state IStorageShutdownObserver observer = new IStorageShutdownObserver.Stub() { @@ -489,6 +538,8 @@ public final class ShutdownThread extends Thread { }; Log.i(TAG, "Shutting down StorageManagerService"); + shutdownTimingLog.traceBegin("ShutdownStorageManager"); + metricStarted(METRIC_SM); // Set initial variables and time out time. mActionDone = false; @@ -508,7 +559,7 @@ public final class ShutdownThread extends Thread { while (!mActionDone) { long delay = endShutTime - SystemClock.elapsedRealtime(); if (delay <= 0) { - Log.w(TAG, "Shutdown wait timed out"); + Log.w(TAG, "StorageManager shutdown wait timed out"); break; } else if (mRebootHasProgressBar) { int status = (int)((MAX_SHUTDOWN_WAIT_TIME - delay) * 1.0 * @@ -523,6 +574,9 @@ public final class ShutdownThread extends Thread { } } } + shutdownTimingLog.traceEnd(); // ShutdownStorageManager + metricEnded(METRIC_SM); + if (mRebootHasProgressBar) { sInstance.setRebootProgress(MOUNT_SERVICE_STOP_PERCENT, null); @@ -531,9 +585,29 @@ public final class ShutdownThread extends Thread { uncrypt(); } + shutdownTimingLog.traceEnd(); // SystemServerShutdown + metricEnded(METRIC_SYSTEM_SERVER); + saveMetrics(mReboot); rebootOrShutdown(mContext, mReboot, mReason); } + private static TimingsTraceLog newTimingsLog() { + return new TimingsTraceLog("ShutdownTiming", Trace.TRACE_TAG_SYSTEM_SERVER); + } + + private static void metricStarted(String metricKey) { + synchronized (TRON_METRICS) { + TRON_METRICS.put(metricKey, -1 * SystemClock.elapsedRealtime()); + } + } + + private static void metricEnded(String metricKey) { + synchronized (TRON_METRICS) { + TRON_METRICS + .put(metricKey, SystemClock.elapsedRealtime() + TRON_METRICS.get(metricKey)); + } + } + private void setRebootProgress(final int progress, final CharSequence message) { mHandler.post(new Runnable() { @Override @@ -555,6 +629,7 @@ public final class ShutdownThread extends Thread { final boolean[] done = new boolean[1]; Thread t = new Thread() { public void run() { + TimingsTraceLog shutdownTimingsTraceLog = newTimingsLog(); boolean nfcOff; boolean bluetoothReadyForShutdown; boolean radioOff; @@ -566,12 +641,12 @@ public final class ShutdownThread extends Thread { final IBluetoothManager bluetooth = IBluetoothManager.Stub.asInterface(ServiceManager.checkService( BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE)); - try { nfcOff = nfc == null || nfc.getState() == NfcAdapter.STATE_OFF; if (!nfcOff) { Log.w(TAG, "Turning off NFC..."); + metricStarted(METRIC_NFC); nfc.disable(false); // Don't persist new state } } catch (RemoteException ex) { @@ -584,6 +659,7 @@ public final class ShutdownThread extends Thread { bluetooth.getState() == BluetoothAdapter.STATE_OFF; if (!bluetoothReadyForShutdown) { Log.w(TAG, "Disabling Bluetooth..."); + metricStarted(METRIC_BT); bluetooth.disable(mContext.getPackageName(), false); // disable but don't persist new state } } catch (RemoteException ex) { @@ -595,6 +671,7 @@ public final class ShutdownThread extends Thread { radioOff = phone == null || !phone.needMobileRadioShutdown(); if (!radioOff) { Log.w(TAG, "Turning off cellular radios..."); + metricStarted(METRIC_RADIO); phone.shutdownMobileRadios(); } } catch (RemoteException ex) { @@ -627,6 +704,9 @@ public final class ShutdownThread extends Thread { } if (bluetoothReadyForShutdown) { Log.i(TAG, "Bluetooth turned off."); + metricEnded(METRIC_BT); + shutdownTimingsTraceLog + .logDuration("ShutdownBt", TRON_METRICS.get(METRIC_BT)); } } if (!radioOff) { @@ -638,6 +718,9 @@ public final class ShutdownThread extends Thread { } if (radioOff) { Log.i(TAG, "Radio turned off."); + metricEnded(METRIC_RADIO); + shutdownTimingsTraceLog + .logDuration("ShutdownRadio", TRON_METRICS.get(METRIC_RADIO)); } } if (!nfcOff) { @@ -649,6 +732,9 @@ public final class ShutdownThread extends Thread { } if (nfcOff) { Log.i(TAG, "NFC turned off."); + metricEnded(METRIC_NFC); + shutdownTimingsTraceLog + .logDuration("ShutdownNfc", TRON_METRICS.get(METRIC_NFC)); } } @@ -676,7 +762,7 @@ public final class ShutdownThread extends Thread { /** * Do not call this directly. Use {@link #reboot(Context, String, boolean)} - * or {@link #shutdown(Context, boolean)} instead. + * or {@link #shutdown(Context, String, boolean)} instead. * * @param context Context used to vibrate or null without vibration * @param reboot true to reboot or false to shutdown @@ -704,12 +790,38 @@ public final class ShutdownThread extends Thread { } catch (InterruptedException unused) { } } - // Shutdown power Log.i(TAG, "Performing low-level shutdown..."); PowerManagerService.lowLevelShutdown(reason); } + private static void saveMetrics(boolean reboot) { + StringBuilder metricValue = new StringBuilder(); + metricValue.append("reboot:"); + metricValue.append(reboot ? "y" : "n"); + final int metricsSize = TRON_METRICS.size(); + for (int i = 0; i < metricsSize; i++) { + final String name = TRON_METRICS.keyAt(i); + final long value = TRON_METRICS.valueAt(i); + if (value < 0) { + Log.e(TAG, "metricEnded wasn't called for " + name); + continue; + } + metricValue.append(',').append(name).append(':').append(value); + } + File tmp = new File(METRICS_FILE_BASENAME + ".tmp"); + boolean saved = false; + try (FileOutputStream fos = new FileOutputStream(tmp)) { + fos.write(metricValue.toString().getBytes(StandardCharsets.UTF_8)); + saved = true; + } catch (IOException e) { + Log.e(TAG,"Cannot save shutdown metrics", e); + } + if (saved) { + tmp.renameTo(new File(METRICS_FILE_BASENAME + ".txt")); + } + } + private void uncrypt() { Log.i(TAG, "Calling uncrypt and monitoring the progress..."); diff --git a/services/core/java/com/android/server/search/SearchManagerService.java b/services/core/java/com/android/server/search/SearchManagerService.java index 896977141702bd11db7eed792852fdb19e2dc9d4..c3fa82344941a23946cd9608b85b5c30e3fde094 100644 --- a/services/core/java/com/android/server/search/SearchManagerService.java +++ b/services/core/java/com/android/server/search/SearchManagerService.java @@ -17,7 +17,6 @@ package com.android.server.search; import android.app.ActivityManager; -import android.app.AppGlobals; import android.app.IActivityManager; import android.app.ISearchManager; import android.app.SearchManager; @@ -26,7 +25,6 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.database.ContentObserver; @@ -37,6 +35,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; +import android.service.voice.VoiceInteractionService; import android.util.Log; import android.util.SparseArray; @@ -272,24 +271,25 @@ public class SearchManagerService extends ISearchManager.Stub { } } + // Check and return VIS component private ComponentName getLegacyAssistComponent(int userHandle) { try { userHandle = ActivityManager.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", null); - IPackageManager pm = AppGlobals.getPackageManager(); - Intent assistIntent = new Intent(Intent.ACTION_ASSIST); - ResolveInfo info = - pm.resolveIntent(assistIntent, - assistIntent.resolveTypeIfNeeded(mContext.getContentResolver()), - PackageManager.MATCH_DEFAULT_ONLY, userHandle); - if (info != null) { + Binder.getCallingUid(), userHandle, true, false, "getLegacyAssistComponent", + null); + PackageManager pm = mContext.getPackageManager(); + Intent intentAssistProbe = new Intent(VoiceInteractionService.SERVICE_INTERFACE); + List infoListVis = pm.queryIntentServicesAsUser(intentAssistProbe, + PackageManager.MATCH_SYSTEM_ONLY, userHandle); + if (infoListVis == null || infoListVis.isEmpty()) { + return null; + } else { + ResolveInfo rInfo = infoListVis.get(0); return new ComponentName( - info.activityInfo.applicationInfo.packageName, - info.activityInfo.name); + rInfo.serviceInfo.applicationInfo.packageName, + rInfo.serviceInfo.name); + } - } catch (RemoteException re) { - // Local call - Log.e(TAG, "RemoteException in getLegacyAssistComponent: " + re); } catch (Exception e) { Log.e(TAG, "Exception in getLegacyAssistComponent: " + e); } @@ -304,9 +304,15 @@ public class SearchManagerService extends ISearchManager.Stub { } long ident = Binder.clearCallingIdentity(); try { - Intent intent = new Intent(Intent.ACTION_ASSIST); + Intent intent = new Intent(VoiceInteractionService.SERVICE_INTERFACE); intent.setComponent(comp); + IActivityManager am = ActivityManager.getService(); + if (args != null) { + args.putInt(Intent.EXTRA_KEY_EVENT, android.view.KeyEvent.KEYCODE_ASSIST); + } + intent.putExtras(args); + return am.launchAssistIntent(intent, ActivityManager.ASSIST_CONTEXT_BASIC, hint, userHandle, args); } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java index 866fdadc54d74f2be9a256ea204c37092a1580db..0884678478f6f66aef24b810a77a43a4261ba984 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java @@ -80,6 +80,13 @@ public interface StatusBarManagerInternal { void setGlobalActionsListener(GlobalActionsListener listener); void showGlobalActions(); + /** + * Set whether the top app currently hides the statusbar. + * + * @param hidesStatusBar whether it is being hidden + */ + void setTopAppHidesStatusBar(boolean hidesStatusBar); + boolean showShutdownUi(boolean isReboot, String requestString); public interface GlobalActionsListener { diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 5b252e85423819290f389ff5b9a87e922eb05726..38dc33fa4dbc72c5b8c9d09694d4a0e38266dffe 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -20,7 +20,6 @@ import android.app.ActivityThread; import android.app.StatusBarManager; import android.content.ComponentName; import android.content.Context; -import android.content.pm.PackageManager; import android.graphics.Rect; import android.os.Binder; import android.os.Bundle; @@ -331,6 +330,15 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } } + @Override + public void setTopAppHidesStatusBar(boolean hidesStatusBar) { + if (mBar != null) { + try { + mBar.setTopAppHidesStatusBar(hidesStatusBar); + } catch (RemoteException ex) {} + } + } + @Override public boolean showShutdownUi(boolean isReboot, String reason) { if (!mContext.getResources().getBoolean(R.bool.config_showSysuiShutdown)) { @@ -373,6 +381,18 @@ public class StatusBarManagerService extends IStatusBarService.Stub { } } + @Override + public void togglePanel() { + enforceExpandStatusBar(); + + if (mBar != null) { + try { + mBar.togglePanel(); + } catch (RemoteException ex) { + } + } + } + @Override public void expandSettingsPanel(String subPanel) { enforceExpandStatusBar(); @@ -936,6 +956,10 @@ public class StatusBarManagerService extends IStatusBarService.Stub { this, in, out, err, args, callback, resultReceiver); } + public String[] getStatusBarIcons() { + return mContext.getResources().getStringArray(R.array.config_statusBarIcons); + } + // ================================================================================ // Can be called from any thread // ================================================================================ diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java index 40bb4961a2bf90256d204ee557bf03bc6f9f5fd0..4e20f0177b35a2eb84f6adea40dbac635947d595 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java +++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java @@ -25,7 +25,7 @@ import java.io.PrintWriter; public class StatusBarShellCommand extends ShellCommand { - private final IStatusBarService mInterface; + private final StatusBarManagerService mInterface; public StatusBarShellCommand(StatusBarManagerService service) { mInterface = service; @@ -54,6 +54,8 @@ public class StatusBarShellCommand extends ShellCommand { final PrintWriter pw = getOutPrintWriter(); pw.println(String.valueOf(TileService.isQuickSettingsSupported())); return 0; + case "get-status-icons": + return runGetStatusIcons(); default: return handleDefaultCommands(cmd); } @@ -94,6 +96,14 @@ public class StatusBarShellCommand extends ShellCommand { return 0; } + private int runGetStatusIcons() { + final PrintWriter pw = getOutPrintWriter(); + for (String icon : mInterface.getStatusBarIcons()) { + pw.println(icon); + } + return 0; + } + @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); @@ -122,5 +132,8 @@ public class StatusBarShellCommand extends ShellCommand { pw.println(" check-support"); pw.println(" Check if this device supports QS + APIs"); pw.println(""); + pw.println(" get-status-icons"); + pw.println(" Print the list of status bar icons and the order they appear in"); + pw.println(""); } } diff --git a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java index 88b6d870afd76775b5b5599fd94a17408933d2ef..a35383f385f29eea393e4441c02c05fd8f94be59 100644 --- a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java +++ b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java @@ -29,6 +29,7 @@ import android.os.Binder; import android.os.Environment; import android.os.FileObserver; import android.os.Handler; +import android.os.HandlerThread; import android.os.Message; import android.os.ResultReceiver; import android.os.ServiceManager; @@ -154,20 +155,8 @@ public class DeviceStorageMonitorService extends SystemService { private static final String TV_NOTIFICATION_CHANNEL_ID = "devicestoragemonitor.tv"; - /** - * Handler that checks the amount of disk space on the device and sends a - * notification if the device runs low on disk space - */ - private final Handler mHandler = new Handler(IoThread.get().getLooper()) { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_CHECK: - check(); - return; - } - } - }; + private final HandlerThread mHandlerThread; + private final Handler mHandler; private State findOrCreateState(UUID uuid) { State state = mStates.get(uuid); @@ -256,6 +245,20 @@ public class DeviceStorageMonitorService extends SystemService { public DeviceStorageMonitorService(Context context) { super(context); + + mHandlerThread = new HandlerThread(TAG, android.os.Process.THREAD_PRIORITY_BACKGROUND); + mHandlerThread.start(); + + mHandler = new Handler(mHandlerThread.getLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_CHECK: + check(); + return; + } + } + }; } private static boolean isBootImageOnDisk() { diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 8ce59ed7468dce470b743baeabe545c0971e0ae4..a7cd962b7680c80fd9b74fe2cc699c81477cceb0 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -344,7 +344,7 @@ public class TrustManagerService extends SystemService { + "of user " + userInfo.id + "can unlock user profile."); } - if (!StorageManager.isUserKeyUnlocked(userInfo.id) + if (!mUserManager.isUserUnlockingOrUnlocked(userInfo.id) && !directUnlock) { if (DEBUG) Slog.d(TAG, "refreshAgentList: skipping user " + userInfo.id + "'s trust agent " + name + ": FBE still locked and " diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java index 25a0772efd7f8653cb948955451ff2afab17fe40..1afde550f02711d9e3f690ccc4d37b964282a186 100644 --- a/services/core/java/com/android/server/tv/TvInputManagerService.java +++ b/services/core/java/com/android/server/tv/TvInputManagerService.java @@ -1218,6 +1218,12 @@ public final class TvInputManagerService extends SystemService { @Override public void setMainSession(IBinder sessionToken, int userId) { + if (mContext.checkCallingPermission( + android.Manifest.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException( + "The caller does not have CHANGE_HDMI_CEC_ACTIVE_SOURCE permission"); + } if (DEBUG) { Slog.d(TAG, "setMainSession(sessionToken=" + sessionToken + ")"); } diff --git a/services/core/java/com/android/server/twilight/TwilightState.java b/services/core/java/com/android/server/twilight/TwilightState.java index 30a8cccb6ad55363c5f9948f6b6d2cdf07c8eac9..71304a7a4701a1b2c0ca7949d7ac19c98be2aa3c 100644 --- a/services/core/java/com/android/server/twilight/TwilightState.java +++ b/services/core/java/com/android/server/twilight/TwilightState.java @@ -18,7 +18,10 @@ package com.android.server.twilight; import android.text.format.DateFormat; -import java.util.Calendar; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.TimeZone; /** * The twilight state, consisting of the sunrise and sunset times (in millis) for the current @@ -45,12 +48,11 @@ public final class TwilightState { } /** - * Returns a new {@link Calendar} instance initialized to {@link #sunriseTimeMillis()}. + * Returns a new {@link LocalDateTime} instance initialized to {@link #sunriseTimeMillis()}. */ - public Calendar sunrise() { - final Calendar sunrise = Calendar.getInstance(); - sunrise.setTimeInMillis(mSunriseTimeMillis); - return sunrise; + public LocalDateTime sunrise() { + final ZoneId zoneId = TimeZone.getDefault().toZoneId(); + return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunriseTimeMillis), zoneId); } /** @@ -62,12 +64,11 @@ public final class TwilightState { } /** - * Returns a new {@link Calendar} instance initialized to {@link #sunsetTimeMillis()}. + * Returns a new {@link LocalDateTime} instance initialized to {@link #sunsetTimeMillis()}. */ - public Calendar sunset() { - final Calendar sunset = Calendar.getInstance(); - sunset.setTimeInMillis(mSunsetTimeMillis); - return sunset; + public LocalDateTime sunset() { + final ZoneId zoneId = TimeZone.getDefault().toZoneId(); + return LocalDateTime.ofInstant(Instant.ofEpochMilli(mSunsetTimeMillis), zoneId); } /** diff --git a/services/core/java/com/android/server/utils/ManagedApplicationService.java b/services/core/java/com/android/server/utils/ManagedApplicationService.java index 0f251fd8382205b9aefb66d2f7646187b8550aaa..c5553881cf6cd2d4d5491f019416311b60c99d01 100644 --- a/services/core/java/com/android/server/utils/ManagedApplicationService.java +++ b/services/core/java/com/android/server/utils/ManagedApplicationService.java @@ -16,19 +16,24 @@ package com.android.server.utils; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; +import android.os.Handler; import android.os.IBinder; import android.os.IBinder.DeathRecipient; import android.os.IInterface; import android.os.RemoteException; +import android.os.SystemClock; import android.os.UserHandle; import android.util.Slog; +import java.text.SimpleDateFormat; import java.util.Objects; +import java.util.Date; /** * Manages the lifecycle of an application-provided service bound from system server. @@ -38,39 +43,126 @@ import java.util.Objects; public class ManagedApplicationService { private final String TAG = getClass().getSimpleName(); + /** + * Attempt to reconnect service forever if an onBindingDied or onServiceDisconnected event + * is received. + */ + public static final int RETRY_FOREVER = 1; + + /** + * Never attempt to reconnect the service - a single onBindingDied or onServiceDisconnected + * event will cause this to fully unbind the service and never attempt to reconnect. + */ + public static final int RETRY_NEVER = 2; + + /** + * Attempt to reconnect the service until the maximum number of retries is reached, then stop. + * + * The first retry will occur MIN_RETRY_DURATION_MS after the disconnection, and each + * subsequent retry will occur after 2x the duration used for the previous retry up to the + * MAX_RETRY_DURATION_MS duration. + * + * In this case, retries mean a full unbindService/bindService pair to handle cases when the + * usual service re-connection logic in ActiveServices has very high backoff times or when the + * serviceconnection has fully died due to a package update or similar. + */ + public static final int RETRY_BEST_EFFORT = 3; + + // Maximum number of retries before giving up (for RETRY_BEST_EFFORT). + private static final int MAX_RETRY_COUNT = 4; + // Max time between retry attempts. + private static final long MAX_RETRY_DURATION_MS = 16000; + // Min time between retry attempts. + private static final long MIN_RETRY_DURATION_MS = 2000; + // Time since the last retry attempt after which to clear the retry attempt counter. + private static final long RETRY_RESET_TIME_MS = MAX_RETRY_DURATION_MS * 4; + private final Context mContext; private final int mUserId; private final ComponentName mComponent; private final int mClientLabel; private final String mSettingsAction; private final BinderChecker mChecker; - - private final DeathRecipient mDeathRecipient = new DeathRecipient() { - @Override - public void binderDied() { - synchronized (mLock) { - mBoundInterface = null; - } - } - }; + private final boolean mIsImportant; + private final int mRetryType; + private final Handler mHandler; + private final Runnable mRetryRunnable = this::doRetry; + private final EventCallback mEventCb; private final Object mLock = new Object(); // State protected by mLock - private ServiceConnection mPendingConnection; private ServiceConnection mConnection; private IInterface mBoundInterface; private PendingEvent mPendingEvent; + private int mRetryCount; + private long mLastRetryTimeMs; + private long mNextRetryDurationMs = MIN_RETRY_DURATION_MS; + private boolean mRetrying; + + public static interface LogFormattable { + String toLogString(SimpleDateFormat dateFormat); + } + + /** + * Lifecycle event of this managed service. + */ + public static class LogEvent implements LogFormattable { + public static final int EVENT_CONNECTED = 1; + public static final int EVENT_DISCONNECTED = 2; + public static final int EVENT_BINDING_DIED = 3; + public static final int EVENT_STOPPED_PERMANENTLY = 4; + + // Time of the events in "current time ms" timebase. + public final long timestamp; + // Name of the component for this system service. + public final ComponentName component; + // ID of the event that occurred. + public final int event; + + public LogEvent(long timestamp, ComponentName component, int event) { + this.timestamp = timestamp; + this.component = component; + this.event = event; + } + + @Override + public String toLogString(SimpleDateFormat dateFormat) { + return dateFormat.format(new Date(timestamp)) + " " + eventToString(event) + + " Managed Service: " + + ((component == null) ? "None" : component.flattenToString()); + } + + public static String eventToString(int event) { + switch (event) { + case EVENT_CONNECTED: + return "Connected"; + case EVENT_DISCONNECTED: + return "Disconnected"; + case EVENT_BINDING_DIED: + return "Binding Died For"; + case EVENT_STOPPED_PERMANENTLY: + return "Permanently Stopped"; + default: + return "Unknown Event Occurred"; + } + } + } private ManagedApplicationService(final Context context, final ComponentName component, final int userId, int clientLabel, String settingsAction, - BinderChecker binderChecker) { + BinderChecker binderChecker, boolean isImportant, int retryType, Handler handler, + EventCallback eventCallback) { mContext = context; mComponent = component; mUserId = userId; mClientLabel = clientLabel; mSettingsAction = settingsAction; mChecker = binderChecker; + mIsImportant = isImportant; + mRetryType = retryType; + mHandler = handler; + mEventCb = eventCallback; } /** @@ -85,7 +177,17 @@ public class ManagedApplicationService { * Implement to call IInterface methods after service is connected. */ public interface PendingEvent { - void runEvent(IInterface service) throws RemoteException; + void runEvent(IInterface service) throws RemoteException; + } + + /** + * Implement to be notified about any problems with remote service. + */ + public interface EventCallback { + /** + * Called when an sevice lifecycle event occurs. + */ + void onServiceEvent(LogEvent event); } /** @@ -95,19 +197,28 @@ public class ManagedApplicationService { * @param component the {@link ComponentName} of the application service to bind. * @param userId the user ID of user to bind the application service as. * @param clientLabel the resource ID of a label displayed to the user indicating the - * binding service. + * binding service, or 0 if none is desired. * @param settingsAction an action that can be used to open the Settings UI to enable/disable - * binding to these services. - * @param binderChecker an interface used to validate the returned binder object. + * binding to these services, or null if none is desired. + * @param binderChecker an interface used to validate the returned binder object, or null if + * this interface is unchecked. + * @param isImportant bind the user service with BIND_IMPORTANT. + * @param retryType reconnect behavior to have when bound service is disconnected. + * @param handler the Handler to use for retries and delivering EventCallbacks. + * @param eventCallback a callback used to deliver disconnection events, or null if you + * don't care. * @return a ManagedApplicationService instance. */ public static ManagedApplicationService build(@NonNull final Context context, - @NonNull final ComponentName component, final int userId, @NonNull int clientLabel, - @NonNull String settingsAction, @NonNull BinderChecker binderChecker) { + @NonNull final ComponentName component, final int userId, int clientLabel, + @Nullable String settingsAction, @Nullable BinderChecker binderChecker, + boolean isImportant, int retryType, @NonNull Handler handler, + @Nullable EventCallback eventCallback) { return new ManagedApplicationService(context, component, userId, clientLabel, - settingsAction, binderChecker); + settingsAction, binderChecker, isImportant, retryType, handler, eventCallback); } + /** * @return the user ID of the user that owns the bound service. */ @@ -138,13 +249,12 @@ public class ManagedApplicationService { return true; } - - /** - * Send an event to run as soon as the binder interface is available. - * - * @param event a {@link PendingEvent} to send. - */ - public void sendEvent(@NonNull PendingEvent event) { + /** + * Send an event to run as soon as the binder interface is available. + * + * @param event a {@link PendingEvent} to send. + */ + public void sendEvent(@NonNull PendingEvent event) { IInterface iface; synchronized (mLock) { iface = mBoundInterface; @@ -167,15 +277,13 @@ public class ManagedApplicationService { */ public void disconnect() { synchronized (mLock) { - // Wipe out pending connections - mPendingConnection = null; - // Unbind existing connection, if it exists - if (mConnection != null) { - mContext.unbindService(mConnection); - mConnection = null; + if (mConnection == null) { + return; } + mContext.unbindService(mConnection); + mConnection = null; mBoundInterface = null; } } @@ -185,48 +293,70 @@ public class ManagedApplicationService { */ public void connect() { synchronized (mLock) { - if (mConnection != null || mPendingConnection != null) { + if (mConnection != null) { // We're already connected or are trying to connect return; } - final PendingIntent pendingIntent = PendingIntent.getActivity( - mContext, 0, new Intent(mSettingsAction), 0); - final Intent intent = new Intent().setComponent(mComponent). - putExtra(Intent.EXTRA_CLIENT_LABEL, mClientLabel). - putExtra(Intent.EXTRA_CLIENT_INTENT, pendingIntent); + Intent intent = new Intent().setComponent(mComponent); + if (mClientLabel != 0) { + intent.putExtra(Intent.EXTRA_CLIENT_LABEL, mClientLabel); + } + if (mSettingsAction != null) { + intent.putExtra(Intent.EXTRA_CLIENT_INTENT, + PendingIntent.getActivity(mContext, 0, new Intent(mSettingsAction), 0)); + } + + mConnection = new ServiceConnection() { + @Override + public void onBindingDied(ComponentName componentName) { + final long timestamp = System.currentTimeMillis(); + Slog.w(TAG, "Service binding died: " + componentName); + synchronized (mLock) { + if (mConnection != this) { + return; + } + mHandler.post(() -> { + mEventCb.onServiceEvent(new LogEvent(timestamp, mComponent, + LogEvent.EVENT_BINDING_DIED)); + }); + + mBoundInterface = null; + startRetriesLocked(); + } + } - final ServiceConnection serviceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + final long timestamp = System.currentTimeMillis(); + Slog.i(TAG, "Service connected: " + componentName); IInterface iface = null; PendingEvent pendingEvent = null; synchronized (mLock) { - if (mPendingConnection == this) { - // No longer pending, remove from pending connection - mPendingConnection = null; - mConnection = this; - } else { - // Service connection wasn't pending, must have been disconnected - mContext.unbindService(this); + if (mConnection != this) { + // Must've been unbound. return; } + mHandler.post(() -> { + mEventCb.onServiceEvent(new LogEvent(timestamp, mComponent, + LogEvent.EVENT_CONNECTED)); + }); - try { - iBinder.linkToDeath(mDeathRecipient, 0); + stopRetriesLocked(); + + mBoundInterface = null; + if (mChecker != null) { mBoundInterface = mChecker.asInterface(iBinder); if (!mChecker.checkType(mBoundInterface)) { - // Received an invalid binder, disconnect - mContext.unbindService(this); + // Received an invalid binder, disconnect. mBoundInterface = null; + Slog.w(TAG, "Invalid binder from " + componentName); + startRetriesLocked(); + return; } iface = mBoundInterface; pendingEvent = mPendingEvent; mPendingEvent = null; - } catch (RemoteException e) { - // DOA - Slog.w(TAG, "Unable to bind service: " + intent, e); - mBoundInterface = null; } } if (iface != null && pendingEvent != null) { @@ -234,28 +364,44 @@ public class ManagedApplicationService { pendingEvent.runEvent(iface); } catch (RuntimeException | RemoteException ex) { Slog.e(TAG, "Received exception from user service: ", ex); + startRetriesLocked(); } } } @Override public void onServiceDisconnected(ComponentName componentName) { - Slog.w(TAG, "Service disconnected: " + intent); - mConnection = null; - mBoundInterface = null; + final long timestamp = System.currentTimeMillis(); + Slog.w(TAG, "Service disconnected: " + componentName); + synchronized (mLock) { + if (mConnection != this) { + return; + } + + mHandler.post(() -> { + mEventCb.onServiceEvent(new LogEvent(timestamp, mComponent, + LogEvent.EVENT_DISCONNECTED)); + }); + + mBoundInterface = null; + startRetriesLocked(); + } } }; - mPendingConnection = serviceConnection; - + int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE; + if (mIsImportant) { + flags |= Context.BIND_IMPORTANT; + } try { - if (!mContext.bindServiceAsUser(intent, serviceConnection, - Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE, + if (!mContext.bindServiceAsUser(intent, mConnection, flags, new UserHandle(mUserId))) { Slog.w(TAG, "Unable to bind service: " + intent); + startRetriesLocked(); } } catch (SecurityException e) { Slog.w(TAG, "Unable to bind service: " + intent, e); + startRetriesLocked(); } } } @@ -263,4 +409,81 @@ public class ManagedApplicationService { private boolean matches(final ComponentName component, final int userId) { return Objects.equals(mComponent, component) && mUserId == userId; } + + private void startRetriesLocked() { + if (checkAndDeliverServiceDiedCbLocked()) { + // If we delivered the service callback, disconnect and stop retrying. + disconnect(); + return; + } + + if (mRetrying) { + // Retry already queued, don't queue a new one. + return; + } + mRetrying = true; + queueRetryLocked(); + } + + private void stopRetriesLocked() { + mRetrying = false; + mHandler.removeCallbacks(mRetryRunnable); + } + + private void queueRetryLocked() { + long now = SystemClock.uptimeMillis(); + if ((now - mLastRetryTimeMs) > RETRY_RESET_TIME_MS) { + // It's been longer than the reset time since we last had to retry. Re-initialize. + mNextRetryDurationMs = MIN_RETRY_DURATION_MS; + mRetryCount = 0; + } + mLastRetryTimeMs = now; + mHandler.postDelayed(mRetryRunnable, mNextRetryDurationMs); + mNextRetryDurationMs = Math.min(2 * mNextRetryDurationMs, MAX_RETRY_DURATION_MS); + mRetryCount++; + } + + private boolean checkAndDeliverServiceDiedCbLocked() { + + if (mRetryType == RETRY_NEVER || (mRetryType == RETRY_BEST_EFFORT + && mRetryCount >= MAX_RETRY_COUNT)) { + // If we never retry, or we've exhausted our retries, post the onServiceDied callback. + Slog.e(TAG, "Service " + mComponent + " has died too much, not retrying."); + if (mEventCb != null) { + final long timestamp = System.currentTimeMillis(); + mHandler.post(() -> { + mEventCb.onServiceEvent(new LogEvent(timestamp, mComponent, + LogEvent.EVENT_STOPPED_PERMANENTLY)); + }); + } + return true; + } + return false; + } + + private void doRetry() { + synchronized (mLock) { + if (mConnection == null) { + // We disconnected for good. Don't attempt to retry. + return; + } + if (!mRetrying) { + // We successfully connected. Don't attempt to retry. + return; + } + Slog.i(TAG, "Attempting to reconnect " + mComponent + "..."); + // While frameworks may restart the remote Service if we stay bound, we have little + // control of the backoff timing for reconnecting the service. In the event of a + // process crash, the backoff time can be very large (1-30 min), which is not + // acceptable for the types of services this is used for. Instead force an unbind/bind + // sequence to cause a more immediate retry. + disconnect(); + if (checkAndDeliverServiceDiedCbLocked()) { + // No more retries. + return; + } + queueRetryLocked(); + connect(); + } + } } diff --git a/services/core/java/com/android/server/vr/Vr2dDisplay.java b/services/core/java/com/android/server/vr/Vr2dDisplay.java index 8f50a39a54245f065f49683362d5f66f01de61c5..95d03d4bda4991a5cc675b55fe0adf00cc948df1 100644 --- a/services/core/java/com/android/server/vr/Vr2dDisplay.java +++ b/services/core/java/com/android/server/vr/Vr2dDisplay.java @@ -294,6 +294,9 @@ class Vr2dDisplay { int flags = DisplayManager.VIRTUAL_DISPLAY_FLAG_SUPPORTS_TOUCH; flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_ROTATES_WITH_CONTENT; + flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC; + flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; + flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_DESTROY_CONTENT_ON_REMOVAL; mVirtualDisplay = mDisplayManager.createVirtualDisplay(null /* projection */, DISPLAY_NAME, mVirtualDisplayWidth, mVirtualDisplayHeight, mVirtualDisplayDpi, null /* surface */, flags, null /* callback */, null /* handler */, diff --git a/services/core/java/com/android/server/vr/VrManagerInternal.java b/services/core/java/com/android/server/vr/VrManagerInternal.java index bdd9de011186c3e3d7ec5db25217c60106a1d42c..7b1e12e240723019836d91467ae333a71d79134b 100644 --- a/services/core/java/com/android/server/vr/VrManagerInternal.java +++ b/services/core/java/com/android/server/vr/VrManagerInternal.java @@ -73,6 +73,13 @@ public abstract class VrManagerInternal { */ public abstract void onScreenStateChanged(boolean isScreenOn); + /** + * Set whether the keyguard is currently active/showing. + * + * @param isShowing is {@code true} if the keyguard is active/showing. + */ + public abstract void onKeyguardStateChanged(boolean isShowing); + /** * Return NO_ERROR if the given package is installed on the device and enabled as a * VrListenerService for the given current user, or a negative error code indicating a failure. diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java index 030b74cc7ea84d5af81ba49bd56c37a9d6206dca..b0fd248b2b39a5919f3e3fce3b05cf09712baffa 100644 --- a/services/core/java/com/android/server/vr/VrManagerService.java +++ b/services/core/java/com/android/server/vr/VrManagerService.java @@ -21,6 +21,7 @@ import android.Manifest; import android.app.ActivityManagerInternal; import android.app.ActivityManager; import android.app.AppOpsManager; +import android.app.INotificationManager; import android.app.Vr2dDisplayProperties; import android.app.NotificationManager; import android.annotation.NonNull; @@ -42,6 +43,7 @@ import android.os.Looper; import android.os.Message; import android.os.RemoteCallbackList; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; @@ -64,6 +66,8 @@ import com.android.server.LocalServices; import com.android.server.SystemConfig; import com.android.server.SystemService; import com.android.server.utils.ManagedApplicationService.PendingEvent; +import com.android.server.utils.ManagedApplicationService.LogEvent; +import com.android.server.utils.ManagedApplicationService.LogFormattable; import com.android.server.vr.EnabledComponentsObserver.EnabledComponentChangeListener; import com.android.server.utils.ManagedApplicationService; import com.android.server.utils.ManagedApplicationService.BinderChecker; @@ -72,10 +76,12 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.StringBuilder; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collection; import java.util.Date; +import java.util.List; import java.util.Objects; /** @@ -104,16 +110,18 @@ public class VrManagerService extends SystemService implements EnabledComponentC static final boolean DBG = false; private static final int PENDING_STATE_DELAY_MS = 300; - private static final int EVENT_LOG_SIZE = 32; + private static final int EVENT_LOG_SIZE = 64; private static final int INVALID_APPOPS_MODE = -1; /** Null set of sleep sleep flags. */ private static final int FLAG_NONE = 0; /** Flag set when the device is not sleeping. */ - private static final int FLAG_AWAKE = 1; + private static final int FLAG_AWAKE = 1 << 0; /** Flag set when the screen has been turned on. */ - private static final int FLAG_SCREEN_ON = 2; + private static final int FLAG_SCREEN_ON = 1 << 1; + /** Flag set when the keyguard is not active. */ + private static final int FLAG_KEYGUARD_UNLOCKED = 1 << 2; /** Flag indicating that all system sleep flags have been set.*/ - private static final int FLAG_ALL = FLAG_AWAKE | FLAG_SCREEN_ON; + private static final int FLAG_ALL = FLAG_AWAKE | FLAG_SCREEN_ON | FLAG_KEYGUARD_UNLOCKED; private static native void initializeNative(); private static native void setVrModeNative(boolean enabled); @@ -130,6 +138,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC private int mVrAppProcessId; private EnabledComponentsObserver mComponentObserver; private ManagedApplicationService mCurrentVrService; + private ManagedApplicationService mCurrentVrCompositorService; private ComponentName mDefaultVrService; private Context mContext; private ComponentName mCurrentVrModeComponent; @@ -143,18 +152,45 @@ public class VrManagerService extends SystemService implements EnabledComponentC private int mPreviousCoarseLocationMode = INVALID_APPOPS_MODE; private int mPreviousManageOverlayMode = INVALID_APPOPS_MODE; private VrState mPendingState; - private final ArrayDeque mLoggingDeque = new ArrayDeque<>(EVENT_LOG_SIZE); + private boolean mLogLimitHit; + private final ArrayDeque mLoggingDeque = new ArrayDeque<>(EVENT_LOG_SIZE); private final NotificationAccessManager mNotifAccessManager = new NotificationAccessManager(); + private INotificationManager mNotificationManager; /** Tracks the state of the screen and keyguard UI.*/ - private int mSystemSleepFlags = FLAG_AWAKE; + private int mSystemSleepFlags = FLAG_AWAKE | FLAG_KEYGUARD_UNLOCKED; /** * Set when ACTION_USER_UNLOCKED is fired. We shouldn't try to bind to the - * vr service before then. + * vr service before then. This gets set only once the first time the user unlocks the device + * and stays true thereafter. */ private boolean mUserUnlocked; private Vr2dDisplay mVr2dDisplay; private boolean mBootsToVr; + // Handles events from the managed services (e.g. VrListenerService and any bound VR compositor + // service). + private final ManagedApplicationService.EventCallback mEventCallback + = new ManagedApplicationService.EventCallback() { + @Override + public void onServiceEvent(LogEvent event) { + logEvent(event); + + ComponentName component = null; + synchronized (mLock) { + component = ((mCurrentVrService == null) ? null : mCurrentVrService.getComponent()); + } + + // If not on an AIO device and we permanently stopped trying to connect to the + // VrListenerService (or don't have one bound), leave persistent VR mode and VR mode. + if (!mBootsToVr && event.event == LogEvent.EVENT_STOPPED_PERMANENTLY && + (component == null || component.equals(event.component))) { + Slog.e(TAG, "VrListenerSevice has died permanently, leaving system VR mode."); + // We're not a native VR device. Leave VR + persistent mode. + setPersistentVrModeEnabled(false); + } + } + }; + private static final int MSG_VR_STATE_CHANGE = 0; private static final int MSG_PENDING_VR_STATE_CHANGE = 1; private static final int MSG_PERSISTENT_VR_MODE_STATE_CHANGE = 2; @@ -175,7 +211,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC if (mBootsToVr) { setPersistentVrModeEnabled(true); } - consumeAndApplyPendingStateLocked(); if (mBootsToVr && !mVrModeEnabled) { setVrMode(true, mDefaultVrService, 0, -1, null); } @@ -197,29 +232,40 @@ public class VrManagerService extends SystemService implements EnabledComponentC } private void setSleepState(boolean isAsleep) { - synchronized(mLock) { + setSystemState(FLAG_AWAKE, !isAsleep); + } - if (!isAsleep) { - mSystemSleepFlags |= FLAG_AWAKE; - } else { - mSystemSleepFlags &= ~FLAG_AWAKE; - } + private void setScreenOn(boolean isScreenOn) { + setSystemState(FLAG_SCREEN_ON, isScreenOn); + } - updateVrModeAllowedLocked(); - } + private void setKeyguardShowing(boolean isShowing) { + setSystemState(FLAG_KEYGUARD_UNLOCKED, !isShowing); } - private void setScreenOn(boolean isScreenOn) { + private void setSystemState(int flags, boolean isOn) { synchronized(mLock) { - if (isScreenOn) { - mSystemSleepFlags |= FLAG_SCREEN_ON; + int oldState = mSystemSleepFlags; + if (isOn) { + mSystemSleepFlags |= flags; } else { - mSystemSleepFlags &= ~FLAG_SCREEN_ON; + mSystemSleepFlags &= ~flags; + } + if (oldState != mSystemSleepFlags) { + if (DBG) Slog.d(TAG, "System state: " + getStateAsString()); + updateVrModeAllowedLocked(); } - updateVrModeAllowedLocked(); } } + private String getStateAsString() { + return new StringBuilder() + .append((mSystemSleepFlags & FLAG_AWAKE) != 0 ? "awake, " : "") + .append((mSystemSleepFlags & FLAG_SCREEN_ON) != 0 ? "screen_on, " : "") + .append((mSystemSleepFlags & FLAG_KEYGUARD_UNLOCKED) != 0 ? "keyguard_off" : "") + .toString(); + } + private void setUserUnlocked() { synchronized(mLock) { mUserUnlocked = true; @@ -271,7 +317,24 @@ public class VrManagerService extends SystemService implements EnabledComponentC } }; - private static class VrState { + // Event used to log when settings are changed for dumpsys logs. + private static class SettingEvent implements LogFormattable { + public final long timestamp; + public final String what; + + SettingEvent(String what) { + this.timestamp = System.currentTimeMillis(); + this.what = what; + } + + @Override + public String toLogString(SimpleDateFormat dateFormat) { + return dateFormat.format(new Date(timestamp)) + " " + what; + } + } + + // Event used to track changes of the primary on-screen VR activity. + private static class VrState implements LogFormattable { final boolean enabled; final boolean running2dInVr; final int userId; @@ -281,7 +344,6 @@ public class VrManagerService extends SystemService implements EnabledComponentC final long timestamp; final boolean defaultPermissionsGranted; - VrState(boolean enabled, boolean running2dInVr, ComponentName targetPackageName, int userId, int processId, ComponentName callingPackage) { this.enabled = enabled; @@ -305,6 +367,39 @@ public class VrManagerService extends SystemService implements EnabledComponentC this.defaultPermissionsGranted = defaultPermissionsGranted; this.timestamp = System.currentTimeMillis(); } + + @Override + public String toLogString(SimpleDateFormat dateFormat) { + String tab = " "; + String newLine = "\n"; + StringBuilder sb = new StringBuilder(dateFormat.format(new Date(timestamp))); + sb.append(tab); + sb.append("State changed to:"); + sb.append(tab); + sb.append((enabled) ? "ENABLED" : "DISABLED"); + sb.append(newLine); + if (enabled) { + sb.append(tab); + sb.append("User="); + sb.append(userId); + sb.append(newLine); + sb.append(tab); + sb.append("Current VR Activity="); + sb.append((callingPackage == null) ? "None" : callingPackage.flattenToString()); + sb.append(newLine); + sb.append(tab); + sb.append("Bound VrListenerService="); + sb.append((targetPackageName == null) ? "None" + : targetPackageName.flattenToString()); + sb.append(newLine); + if (defaultPermissionsGranted) { + sb.append(tab); + sb.append("Default permissions granted to the bound VrListenerService."); + sb.append(newLine); + } + } + return sb.toString(); + } } private static final BinderChecker sBinderChecker = new BinderChecker() { @@ -410,7 +505,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void registerListener(IVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -420,7 +516,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void unregisterListener(IVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -430,7 +527,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void registerPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -440,7 +538,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void unregisterPersistentVrStateListener(IPersistentVrStateCallbacks cb) { - enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER); + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); if (cb == null) { throw new IllegalArgumentException("Callback binder object is null."); } @@ -450,19 +549,28 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public boolean getVrModeState() { + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); return VrManagerService.this.getVrMode(); } + @Override + public boolean getPersistentVrModeEnabled() { + enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER, + Manifest.permission.ACCESS_VR_STATE); + return VrManagerService.this.getPersistentVrMode(); + } + @Override public void setPersistentVrModeEnabled(boolean enabled) { - enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS); + enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS); VrManagerService.this.setPersistentVrModeEnabled(enabled); } @Override public void setVr2dDisplayProperties( Vr2dDisplayProperties vr2dDisplayProp) { - enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS); + enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS); VrManagerService.this.setVr2dDisplayProperties(vr2dDisplayProp); } @@ -471,6 +579,13 @@ public class VrManagerService extends SystemService implements EnabledComponentC return VrManagerService.this.getVr2dDisplayId(); } + @Override + public void setAndBindCompositor(String componentName) { + enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS); + VrManagerService.this.setAndBindCompositor( + (componentName == null) ? null : ComponentName.unflattenFromString(componentName)); + } + @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return; @@ -479,6 +594,12 @@ public class VrManagerService extends SystemService implements EnabledComponentC pw.println("VR mode is currently: " + ((mVrModeAllowed) ? "allowed" : "disallowed")); pw.println("Persistent VR mode is currently: " + ((mPersistentVrModeEnabled) ? "enabled" : "disabled")); + pw.println("Currently bound VR listener service: " + + ((mCurrentVrCompositorService == null) + ? "None" : mCurrentVrCompositorService.getComponent().flattenToString())); + pw.println("Currently bound VR compositor service: " + + ((mCurrentVrCompositorService == null) + ? "None" : mCurrentVrCompositorService.getComponent().flattenToString())); pw.println("Previous state transitions:\n"); String tab = " "; dumpStateTransitions(pw); @@ -526,11 +647,21 @@ public class VrManagerService extends SystemService implements EnabledComponentC }; - private void enforceCallerPermission(String permission) { - if (mContext.checkCallingOrSelfPermission(permission) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Caller does not hold the permission " + permission); + /** + * Enforces that at lease one of the specified permissions is held by the caller. + * Throws SecurityException if none of the specified permissions are held. + * + * @param permissions One or more permissions to check against. + */ + private void enforceCallerPermissionAnyOf(String... permissions) { + for (String permission : permissions) { + if (mContext.checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED) { + return; + } } + throw new SecurityException("Caller does not hold at least one of the permissions: " + + Arrays.toString(permissions)); } /** @@ -553,6 +684,11 @@ public class VrManagerService extends SystemService implements EnabledComponentC VrManagerService.this.setScreenOn(isScreenOn); } + @Override + public void onKeyguardStateChanged(boolean isShowing) { + VrManagerService.this.setKeyguardShowing(isShowing); + } + @Override public boolean isCurrentVrListener(String packageName, int userId) { return VrManagerService.this.isCurrentVrListener(packageName, userId); @@ -604,6 +740,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC @Override public void onBootPhase(int phase) { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { + mNotificationManager = INotificationManager.Stub.asInterface( + ServiceManager.getService(Context.NOTIFICATION_SERVICE)); synchronized (mLock) { Looper looper = Looper.getMainLooper(); Handler handler = new Handler(looper); @@ -755,6 +893,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC + mCurrentVrService.getComponent() + " for user " + mCurrentVrService.getUserId()); mCurrentVrService.disconnect(); + updateCompositorServiceLocked(UserHandle.USER_NULL, null); mCurrentVrService = null; } else { nothingChanged = true; @@ -768,6 +907,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC Slog.i(TAG, "VR mode component changed to " + component + ", disconnecting " + mCurrentVrService.getComponent() + " for user " + mCurrentVrService.getUserId()); + updateCompositorServiceLocked(UserHandle.USER_NULL, null); createAndConnectService(component, userId); sendUpdatedCaller = true; } else { @@ -857,50 +997,28 @@ public class VrManagerService extends SystemService implements EnabledComponentC } private void grantNotificationListenerAccess(String pkg, int userId) { + NotificationManager nm = mContext.getSystemService(NotificationManager.class); PackageManager pm = mContext.getPackageManager(); ArraySet possibleServices = EnabledComponentsObserver.loadComponentNames(pm, userId, NotificationListenerService.SERVICE_INTERFACE, android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE); - ContentResolver resolver = mContext.getContentResolver(); - - ArraySet current = getNotificationListeners(resolver, userId); for (ComponentName c : possibleServices) { - String flatName = c.flattenToString(); - if (Objects.equals(c.getPackageName(), pkg) - && !current.contains(flatName)) { - current.add(flatName); + if (Objects.equals(c.getPackageName(), pkg)) { + nm.setNotificationListenerAccessGrantedForUser(c, userId, true); } } - - if (current.size() > 0) { - String flatSettings = formatSettings(current); - Settings.Secure.putStringForUser(resolver, - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, - flatSettings, userId); - } } private void revokeNotificationListenerAccess(String pkg, int userId) { - ContentResolver resolver = mContext.getContentResolver(); - - ArraySet current = getNotificationListeners(resolver, userId); - - ArrayList toRemove = new ArrayList<>(); + NotificationManager nm = mContext.getSystemService(NotificationManager.class); + List current = nm.getEnabledNotificationListeners(userId); - for (String c : current) { - ComponentName component = ComponentName.unflattenFromString(c); + for (ComponentName component : current) { if (component != null && component.getPackageName().equals(pkg)) { - toRemove.add(c); + nm.setNotificationListenerAccessGrantedForUser(component, userId, false); } } - - current.removeAll(toRemove); - - String flatSettings = formatSettings(current); - Settings.Secure.putStringForUser(resolver, - Settings.Secure.ENABLED_NOTIFICATION_LISTENERS, - flatSettings, userId); } private void grantCoarseLocationPermissionIfNeeded(String pkg, int userId) { @@ -977,7 +1095,7 @@ public class VrManagerService extends SystemService implements EnabledComponentC private void createAndConnectService(@NonNull ComponentName component, int userId) { - mCurrentVrService = VrManagerService.create(mContext, component, userId); + mCurrentVrService = createVrListenerService(component, userId); mCurrentVrService.connect(); Slog.i(TAG, "Connecting " + component + " for user " + userId); } @@ -1012,13 +1130,27 @@ public class VrManagerService extends SystemService implements EnabledComponentC } /** - * Helper function for making ManagedApplicationService instances. + * Helper function for making ManagedApplicationService for VrListenerService instances. */ - private static ManagedApplicationService create(@NonNull Context context, - @NonNull ComponentName component, int userId) { - return ManagedApplicationService.build(context, component, userId, + private ManagedApplicationService createVrListenerService(@NonNull ComponentName component, + int userId) { + int retryType = (mBootsToVr) ? ManagedApplicationService.RETRY_FOREVER + : ManagedApplicationService.RETRY_NEVER; + return ManagedApplicationService.build(mContext, component, userId, R.string.vr_listener_binding_label, Settings.ACTION_VR_LISTENER_SETTINGS, - sBinderChecker); + sBinderChecker, /*isImportant*/true, retryType, mHandler, mEventCallback); + } + + /** + * Helper function for making ManagedApplicationService for VR Compositor instances. + */ + private ManagedApplicationService createVrCompositorService(@NonNull ComponentName component, + int userId) { + int retryType = (mBootsToVr) ? ManagedApplicationService.RETRY_FOREVER + : ManagedApplicationService.RETRY_BEST_EFFORT; + return ManagedApplicationService.build(mContext, component, userId, /*clientLabel*/0, + /*settingsAction*/null, /*binderChecker*/null, /*isImportant*/true, retryType, + mHandler, /*disconnectCallback*/mEventCallback); } /** @@ -1049,44 +1181,35 @@ public class VrManagerService extends SystemService implements EnabledComponentC private void logStateLocked() { ComponentName currentBoundService = (mCurrentVrService == null) ? null : - mCurrentVrService.getComponent(); - VrState current = new VrState(mVrModeEnabled, mRunning2dInVr, currentBoundService, - mCurrentVrModeUser, mVrAppProcessId, mCurrentVrModeComponent, mWasDefaultGranted); - if (mLoggingDeque.size() == EVENT_LOG_SIZE) { - mLoggingDeque.removeFirst(); + mCurrentVrService.getComponent(); + logEvent(new VrState(mVrModeEnabled, mRunning2dInVr, currentBoundService, + mCurrentVrModeUser, mVrAppProcessId, mCurrentVrModeComponent, mWasDefaultGranted)); + } + + private void logEvent(LogFormattable event) { + synchronized (mLoggingDeque) { + if (mLoggingDeque.size() == EVENT_LOG_SIZE) { + mLoggingDeque.removeFirst(); + mLogLimitHit = true; + } + mLoggingDeque.add(event); } - mLoggingDeque.add(current); } private void dumpStateTransitions(PrintWriter pw) { SimpleDateFormat d = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); - String tab = " "; - if (mLoggingDeque.size() == 0) { - pw.print(tab); - pw.println("None"); - } - for (VrState state : mLoggingDeque) { - pw.print(d.format(new Date(state.timestamp))); - pw.print(tab); - pw.print("State changed to:"); - pw.print(tab); - pw.println((state.enabled) ? "ENABLED" : "DISABLED"); - if (state.enabled) { - pw.print(tab); - pw.print("User="); - pw.println(state.userId); - pw.print(tab); - pw.print("Current VR Activity="); - pw.println((state.callingPackage == null) ? - "None" : state.callingPackage.flattenToString()); - pw.print(tab); - pw.print("Bound VrListenerService="); - pw.println((state.targetPackageName == null) ? - "None" : state.targetPackageName.flattenToString()); - if (state.defaultPermissionsGranted) { - pw.print(tab); - pw.println("Default permissions granted to the bound VrListenerService."); - } + synchronized (mLoggingDeque) { + if (mLoggingDeque.size() == 0) { + pw.print(" "); + pw.println("None"); + } + + if (mLogLimitHit) { + pw.println("..."); // Indicates log overflow + } + + for (LogFormattable event : mLoggingDeque) { + pw.println(event.toLogString(d)); } } } @@ -1169,10 +1292,41 @@ public class VrManagerService extends SystemService implements EnabledComponentC return INVALID_DISPLAY; } + private void setAndBindCompositor(ComponentName componentName) { + final int userId = UserHandle.getCallingUserId(); + final long token = Binder.clearCallingIdentity(); + synchronized (mLock) { + updateCompositorServiceLocked(userId, componentName); + } + Binder.restoreCallingIdentity(token); + } + + private void updateCompositorServiceLocked(int userId, ComponentName componentName) { + if (mCurrentVrCompositorService != null + && mCurrentVrCompositorService.disconnectIfNotMatching(componentName, userId)) { + Slog.i(TAG, "Disconnecting compositor service: " + + mCurrentVrCompositorService.getComponent()); + // Check if existing service matches the requested one, if not (or if the requested + // component is null) disconnect it. + mCurrentVrCompositorService = null; + } + + if (componentName != null && mCurrentVrCompositorService == null) { + // We don't have an existing service matching the requested component, so attempt to + // connect one. + Slog.i(TAG, "Connecting compositor service: " + componentName); + mCurrentVrCompositorService = createVrCompositorService(componentName, userId); + mCurrentVrCompositorService.connect(); + } + } + private void setPersistentModeAndNotifyListenersLocked(boolean enabled) { if (mPersistentVrModeEnabled == enabled) { return; } + String eventName = "Persistent VR mode " + ((enabled) ? "enabled" : "disabled"); + Slog.i(TAG, eventName); + logEvent(new SettingEvent(eventName)); mPersistentVrModeEnabled = enabled; mHandler.sendMessage(mHandler.obtainMessage(MSG_PERSISTENT_VR_MODE_STATE_CHANGE, @@ -1220,4 +1374,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC return mVrModeEnabled; } } + + private boolean getPersistentVrMode() { + synchronized (mLock) { + return mPersistentVrModeEnabled; + } + } } diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index e0ad8f5d11005a33dc47c7aed489150610e2104d..b888ec21e70864147ed3d2f4584850682de56f72 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -280,14 +280,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { Slog.v(TAG, "Crop done; invoking completion callback"); } wallpaper.imageWallpaperPending = false; - if (wallpaper.setComplete != null) { - try { - wallpaper.setComplete.onWallpaperChanged(); - } catch (RemoteException e) { - // if this fails we don't really care; the setting app may just - // have crashed and that sort of thing is a fact of life. - } - } if (sysWallpaperChanged) { // If this was the system wallpaper, rebind... bindWallpaperComponentLocked(mImageWallpaper, true, @@ -311,6 +303,16 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } saveSettingsLocked(wallpaper.userId); + + // Publish completion *after* we've persisted the changes + if (wallpaper.setComplete != null) { + try { + wallpaper.setComplete.onWallpaperChanged(); + } catch (RemoteException e) { + // if this fails we don't really care; the setting app may just + // have crashed and that sort of thing is a fact of life. + } + } } } } @@ -1136,7 +1138,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { mMonitor = new MyPackageMonitor(); mMonitor.register(context, null, UserHandle.ALL, true); getWallpaperDir(UserHandle.USER_SYSTEM).mkdirs(); + + // Initialize state from the persistent store, then guarantee that the + // WallpaperData for the system imagery is instantiated & active, creating + // it from defaults if necessary. loadSettingsLocked(UserHandle.USER_SYSTEM, false); + getWallpaperSafeLocked(UserHandle.USER_SYSTEM, FLAG_SYSTEM); + mColorsChangedListeners = new SparseArray<>(); } @@ -1293,15 +1301,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } void switchUser(int userId, IRemoteCallback reply) { - WallpaperData systemWallpaper; - WallpaperData lockWallpaper; + final WallpaperData systemWallpaper; + final WallpaperData lockWallpaper; synchronized (mLock) { mCurrentUserId = userId; systemWallpaper = getWallpaperSafeLocked(userId, FLAG_SYSTEM); - lockWallpaper = mLockWallpaperMap.get(userId); - if (lockWallpaper == null) { - lockWallpaper = systemWallpaper; - } + final WallpaperData tmpLockWallpaper = mLockWallpaperMap.get(userId); + lockWallpaper = tmpLockWallpaper == null ? systemWallpaper : tmpLockWallpaper; // Not started watching yet, in case wallpaper data was loaded for other reasons. if (systemWallpaper.wallpaperObserver == null) { systemWallpaper.wallpaperObserver = new WallpaperObserver(systemWallpaper); @@ -1309,8 +1315,13 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } switchWallpaper(systemWallpaper, reply); } - notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM); - notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK); + + // Offload color extraction to another thread since switchUser will be called + // from the main thread. + FgThread.getHandler().post(() -> { + notifyWallpaperColorsChanged(systemWallpaper, FLAG_SYSTEM); + notifyWallpaperColorsChanged(lockWallpaper, FLAG_LOCK); + }); } void switchWallpaper(WallpaperData wallpaper, IRemoteCallback reply) { @@ -1589,9 +1600,30 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } } + private void enforceCallingOrSelfPermissionAndAppOp(String permission, final String callingPkg, + final int callingUid, String message) { + mContext.enforceCallingOrSelfPermission(permission, message); + + final String opName = AppOpsManager.permissionToOp(permission); + if (opName != null) { + final int appOpMode = mAppOpsManager.noteOp(opName, callingUid, callingPkg); + if (appOpMode != AppOpsManager.MODE_ALLOWED) { + throw new SecurityException( + message + ": " + callingPkg + " is not allowed to " + permission); + } + } + } + @Override - public ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb, final int which, - Bundle outParams, int wallpaperUserId) { + public ParcelFileDescriptor getWallpaper(String callingPkg, IWallpaperManagerCallback cb, + final int which, Bundle outParams, int wallpaperUserId) { + final int hasPrivilege = mContext.checkCallingOrSelfPermission( + android.Manifest.permission.READ_WALLPAPER_INTERNAL); + if (hasPrivilege != PackageManager.PERMISSION_GRANTED) { + enforceCallingOrSelfPermissionAndAppOp(android.Manifest.permission.READ_EXTERNAL_STORAGE, + callingPkg, Binder.getCallingUid(), "read wallpaper"); + } + wallpaperUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), wallpaperUserId, false, true, "getWallpaper", null); @@ -1604,13 +1636,10 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { (which == FLAG_LOCK) ? mLockWallpaperMap : mWallpaperMap; WallpaperData wallpaper = whichSet.get(wallpaperUserId); if (wallpaper == null) { - // common case, this is the first lookup post-boot of the system or - // unified lock, so we bring up the saved state lazily now and recheck. - loadSettingsLocked(wallpaperUserId, false); - wallpaper = whichSet.get(wallpaperUserId); - if (wallpaper == null) { - return null; - } + // There is no established wallpaper imagery of this type (expected + // only for lock wallpapers; a system WallpaperData is established at + // user switch) + return null; } try { if (outParams != null) { @@ -1635,7 +1664,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { @Override public WallpaperInfo getWallpaperInfo(int userId) { userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), - Binder.getCallingUid(), userId, false, true, "getWallpaperIdForUser", null); + Binder.getCallingUid(), userId, false, true, "getWallpaperInfo", null); synchronized (mLock) { WallpaperData wallpaper = mWallpaperMap.get(userId); if (wallpaper != null && wallpaper.connection != null) { @@ -2237,7 +2266,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { private void writeWallpaperAttributes(XmlSerializer out, String tag, WallpaperData wallpaper) throws IllegalArgumentException, IllegalStateException, IOException { if (DEBUG) { - Slog.v(TAG, "writeWallpaperAttributes"); + Slog.v(TAG, "writeWallpaperAttributes id=" + wallpaper.wallpaperId); } out.startTag(null, tag); out.attribute(null, "id", Integer.toString(wallpaper.wallpaperId)); @@ -2290,15 +2319,35 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } private void migrateFromOld() { - File oldWallpaper = new File(WallpaperBackupHelper.WALLPAPER_IMAGE_KEY); - File oldInfo = new File(WallpaperBackupHelper.WALLPAPER_INFO_KEY); - if (oldWallpaper.exists()) { - File newWallpaper = new File(getWallpaperDir(0), WALLPAPER); - oldWallpaper.renameTo(newWallpaper); - } - if (oldInfo.exists()) { - File newInfo = new File(getWallpaperDir(0), WALLPAPER_INFO); - oldInfo.renameTo(newInfo); + // Pre-N, what existed is the one we're now using as the display crop + File preNWallpaper = new File(getWallpaperDir(0), WALLPAPER_CROP); + // In the very-long-ago, imagery lived with the settings app + File originalWallpaper = new File(WallpaperBackupHelper.WALLPAPER_IMAGE_KEY); + File newWallpaper = new File(getWallpaperDir(0), WALLPAPER); + + // Migrations from earlier wallpaper image storage schemas + if (preNWallpaper.exists()) { + if (!newWallpaper.exists()) { + // we've got the 'wallpaper' crop file but not the nominal source image, + // so do the simple "just take everything" straight copy of legacy data + if (DEBUG) { + Slog.i(TAG, "Migrating wallpaper schema"); + } + FileUtils.copyFile(preNWallpaper, newWallpaper); + } // else we're in the usual modern case: both source & crop exist + } else if (originalWallpaper.exists()) { + // VERY old schema; make sure things exist and are in the right place + if (DEBUG) { + Slog.i(TAG, "Migrating antique wallpaper schema"); + } + File oldInfo = new File(WallpaperBackupHelper.WALLPAPER_INFO_KEY); + if (oldInfo.exists()) { + File newInfo = new File(getWallpaperDir(0), WALLPAPER_INFO); + oldInfo.renameTo(newInfo); + } + + FileUtils.copyFile(originalWallpaper, preNWallpaper); + originalWallpaper.renameTo(newWallpaper); } } @@ -2316,6 +2365,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { * the event yet. We use this safe method when we don't care about this ordering and just * want to update the data. The data is going to be applied when the user switch observer * is eventually executed. + * + * Important: this method loads settings to initialize the given user's wallpaper data if + * there is no current in-memory state. */ private WallpaperData getWallpaperSafeLocked(int userId, int which) { // We're setting either just system (work with the system wallpaper), @@ -2354,17 +2406,15 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { } private void loadSettingsLocked(int userId, boolean keepDimensionHints) { - if (DEBUG) Slog.v(TAG, "loadSettingsLocked"); - JournaledFile journal = makeJournaledFile(userId); FileInputStream stream = null; File file = journal.chooseForRead(); - if (!file.exists()) { - // This should only happen one time, when upgrading from a legacy system - migrateFromOld(); - } + WallpaperData wallpaper = mWallpaperMap.get(userId); if (wallpaper == null) { + // Do this once per boot + migrateFromOld(); + wallpaper = new WallpaperData(userId, WALLPAPER, WALLPAPER_CROP); wallpaper.allowBackup = true; mWallpaperMap.put(userId, wallpaper); @@ -2684,6 +2734,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { pw.print(" mCropHint="); pw.println(wallpaper.cropHint); pw.print(" mPadding="); pw.println(wallpaper.padding); pw.print(" mName="); pw.println(wallpaper.name); + pw.print(" mAllowBackup="); pw.println(wallpaper.allowBackup); pw.print(" mWallpaperComponent="); pw.println(wallpaper.wallpaperComponent); if (wallpaper.connection != null) { WallpaperConnection conn = wallpaper.connection; @@ -2714,6 +2765,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { pw.print(" mCropHint="); pw.println(wallpaper.cropHint); pw.print(" mPadding="); pw.println(wallpaper.padding); pw.print(" mName="); pw.println(wallpaper.name); + pw.print(" mAllowBackup="); pw.println(wallpaper.allowBackup); } } diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java index a0381f774c35d0bb57bc093214d650d84b9aeace..bf769ed46bc1d77f9de8a665441f177edc7df19e 100644 --- a/services/core/java/com/android/server/webkit/SystemImpl.java +++ b/services/core/java/com/android/server/webkit/SystemImpl.java @@ -296,7 +296,10 @@ public class SystemImpl implements SystemInterface { @Override public boolean isMultiProcessDefaultEnabled() { - return true; + // Multiprocess is enabled for all 64-bit devices, since the ability to run the renderer + // process in 32-bit when it's a separate process typically results in a net memory saving. + // Multiprocess is also enabled for 32-bit devices unless they report they are "low ram". + return Build.SUPPORTED_64_BIT_ABIS.length > 0 || !ActivityManager.isLowRamDeviceStatic(); } // flags declaring we want extra info from the package manager for webview providers diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java index 805250ad96d4f06d1ec2074989a4b1d9186a7343..6484a13d8c3e041fcda3917eb984d813e7153d6e 100644 --- a/services/core/java/com/android/server/wm/AccessibilityController.java +++ b/services/core/java/com/android/server/wm/AccessibilityController.java @@ -429,6 +429,8 @@ final class AccessibilityController { } public void getMagnificationRegionLocked(Region outMagnificationRegion) { + // Make sure we're working with the most current bounds + mMagnifedViewport.recomputeBoundsLocked(); mMagnifedViewport.getMagnificationRegionLocked(outMagnificationRegion); } diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java index b1ed35867dcf13576ceb61f3f8f6a486a3bb7f48..cda3efdf886fa4f0e3b851ce1aba23709872e50b 100644 --- a/services/core/java/com/android/server/wm/AppTransition.java +++ b/services/core/java/com/android/server/wm/AppTransition.java @@ -49,6 +49,7 @@ import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_NONE; import static com.android.server.wm.WindowStateAnimator.STACK_CLIP_AFTER_ANIM; import android.annotation.Nullable; +import android.app.ActivityManager; import android.content.Context; import android.content.res.Configuration; import android.graphics.Bitmap; @@ -255,6 +256,7 @@ public class AppTransition implements Dump { private boolean mProlongedAnimationsEnded; private final boolean mGridLayoutRecentsEnabled; + private final boolean mLowRamRecentsEnabled; AppTransition(Context context, WindowManagerService service) { mContext = context; @@ -295,6 +297,7 @@ public class AppTransition implements Dump { mClipRevealTranslationY = (int) (CLIP_REVEAL_TRANSLATION_Y_DP * mContext.getResources().getDisplayMetrics().density); mGridLayoutRecentsEnabled = SystemProperties.getBoolean("ro.recents.grid", false); + mLowRamRecentsEnabled = ActivityManager.isLowRamDeviceStatic(); } boolean isTransitionSet() { @@ -1121,7 +1124,8 @@ public class AppTransition implements Dump { */ Animation createAspectScaledThumbnailEnterExitAnimationLocked(int thumbTransitState, int uiMode, int orientation, int transit, Rect containingFrame, Rect contentInsets, - @Nullable Rect surfaceInsets, boolean freeform, int taskId) { + @Nullable Rect surfaceInsets, @Nullable Rect stableInsets, boolean freeform, + int taskId) { Animation a; final int appWidth = containingFrame.width(); final int appHeight = containingFrame.height(); @@ -1179,8 +1183,15 @@ public class AppTransition implements Dump { final float x = containingFrame.width() / 2f - containingFrame.width() / 2f * scale; final float targetY = (mTmpRect.top - containingFrame.top); - final float y = containingFrame.height() / 2f + float y = containingFrame.height() / 2f - containingFrame.height() / 2f * scale; + + // During transition may require clipping offset from any top stable insets + // such as the statusbar height when statusbar is hidden + if (mLowRamRecentsEnabled && contentInsets.top == 0 && scaleUp) { + mTmpFromClipRect.top += stableInsets.top; + y += stableInsets.top; + } final float startX = targetX - x; final float startY = targetY - y; Animation clipAnim = scaleUp @@ -1497,8 +1508,8 @@ public class AppTransition implements Dump { */ Animation loadAnimation(WindowManager.LayoutParams lp, int transit, boolean enter, int uiMode, int orientation, Rect frame, Rect displayFrame, Rect insets, - @Nullable Rect surfaceInsets, boolean isVoiceInteraction, boolean freeform, - int taskId) { + @Nullable Rect surfaceInsets, @Nullable Rect stableInsets, boolean isVoiceInteraction, + boolean freeform, int taskId) { Animation a; if (isKeyguardGoingAwayTransit(transit) && enter) { a = loadKeyguardExitAnimation(transit); @@ -1582,7 +1593,7 @@ public class AppTransition implements Dump { (mNextAppTransitionType == NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_UP); a = createAspectScaledThumbnailEnterExitAnimationLocked( getThumbnailTransitionState(enter), uiMode, orientation, transit, frame, - insets, surfaceInsets, freeform, taskId); + insets, surfaceInsets, stableInsets, freeform, taskId); if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) { String animName = mNextAppTransitionScaleUp ? "ANIM_THUMBNAIL_ASPECT_SCALE_UP" : "ANIM_THUMBNAIL_ASPECT_SCALE_DOWN"; diff --git a/services/core/java/com/android/server/wm/AppWindowAnimator.java b/services/core/java/com/android/server/wm/AppWindowAnimator.java index ddbbde1eb4218118b348c5e412d4cee000077449..c76b90593ab31778ffc584e35173504d910fcb8d 100644 --- a/services/core/java/com/android/server/wm/AppWindowAnimator.java +++ b/services/core/java/com/android/server/wm/AppWindowAnimator.java @@ -16,8 +16,8 @@ package com.android.server.wm; +import static android.view.Display.INVALID_DISPLAY; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; - import static com.android.server.wm.AppTransition.TRANSIT_UNSET; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; @@ -148,7 +148,7 @@ public class AppWindowAnimator { } // Start out animation gone if window is gone, or visible if window is visible. transformation.clear(); - transformation.setAlpha(mAppToken.hasContentToDisplay() ? 1 : 0); + transformation.setAlpha(mAppToken.isVisible() ? 1 : 0); hasTransformation = true; mStackClip = stackClip; @@ -172,7 +172,7 @@ public class AppWindowAnimator { animation = sDummyAnimation; hasTransformation = true; transformation.clear(); - transformation.setAlpha(mAppToken.hasContentToDisplay() ? 1 : 0); + transformation.setAlpha(mAppToken.isVisible() ? 1 : 0); } void setNullAnimation() { @@ -358,7 +358,7 @@ public class AppWindowAnimator { // This must be called while inside a transaction. boolean stepAnimationLocked(long currentTime) { - if (mService.okToAnimate()) { + if (mAppToken.okToAnimate()) { // We will run animations as long as the display isn't frozen. if (animation == sDummyAnimation) { @@ -423,8 +423,8 @@ public class AppWindowAnimator { if (DEBUG_ANIM) Slog.v(TAG, "Animation done in " + mAppToken + ": reportedVisible=" + mAppToken.reportedVisible - + " okToDisplay=" + mService.okToDisplay() - + " okToAnimate=" + mService.okToAnimate() + + " okToDisplay=" + mAppToken.okToDisplay() + + " okToAnimate=" + mAppToken.okToAnimate() + " startingDisplayed=" + mAppToken.startingDisplayed); transformation.clear(); @@ -450,7 +450,7 @@ public class AppWindowAnimator { return isAnimating; } - void dump(PrintWriter pw, String prefix, boolean dumpAll) { + void dump(PrintWriter pw, String prefix) { pw.print(prefix); pw.print("mAppToken="); pw.println(mAppToken); pw.print(prefix); pw.print("mAnimator="); pw.println(mAnimator); pw.print(prefix); pw.print("freezingScreen="); pw.print(freezingScreen); diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java index e9696d2ab46f98aaebcbe888f81ab362237956b3..8b9548357820201ec53e2e51a1124778c7238222 100644 --- a/services/core/java/com/android/server/wm/AppWindowContainerController.java +++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java @@ -17,6 +17,7 @@ package com.android.server.wm; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; +import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; import static com.android.server.wm.AppTransition.TRANSIT_DOCK_TASK_FROM_RECENTS; @@ -365,7 +366,6 @@ public class AppWindowContainerController // if made visible again. wtoken.removeDeadWindows(); wtoken.setVisibleBeforeClientHidden(); - mService.mUnknownAppVisibilityController.appRemovedOrHidden(wtoken); } else { if (!mService.mAppTransition.isTransitionSet() && mService.mAppTransition.isReady()) { @@ -401,7 +401,7 @@ public class AppWindowContainerController // If we are preparing an app transition, then delay changing // the visibility of this token until we execute that transition. - if (mService.okToAnimate() && mService.mAppTransition.isTransitionSet()) { + if (wtoken.okToAnimate() && mService.mAppTransition.isTransitionSet()) { // A dummy animation is a placeholder animation which informs others that an // animation is going on (in this case an application transition). If the animation // was transferred from another application/animator, no dummy animator should be @@ -478,7 +478,7 @@ public class AppWindowContainerController // If the display is frozen, we won't do anything until the actual window is // displayed so there is no reason to put in the starting window. - if (!mService.okToDisplay()) { + if (!mContainer.okToDisplay()) { return false; } @@ -631,9 +631,12 @@ public class AppWindowContainerController mContainer.startingSurface = null; mContainer.startingWindow = null; mContainer.startingDisplayed = false; - if (surface == null && DEBUG_STARTING_WINDOW) { - Slog.v(TAG_WM, "startingWindow was set but startingSurface==null, couldn't " - + "remove"); + if (surface == null) { + if (DEBUG_STARTING_WINDOW) { + Slog.v(TAG_WM, "startingWindow was set but startingSurface==null, couldn't " + + "remove"); + } + return; } } else { if (DEBUG_STARTING_WINDOW) { @@ -649,7 +652,7 @@ public class AppWindowContainerController // Use the same thread to remove the window as we used to add it, as otherwise we end up // with things in the view hierarchy being called from different threads. - mHandler.post(() -> { + mService.mAnimationHandler.post(() -> { if (DEBUG_STARTING_WINDOW) Slog.v(TAG_WM, "Removing startingView=" + surface); try { surface.remove(); @@ -699,16 +702,17 @@ public class AppWindowContainerController public void startFreezingScreen(int configChanges) { synchronized(mWindowMap) { - if (configChanges == 0 && mService.okToDisplay()) { - if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Skipping set freeze of " + mToken); - return; - } - if (mContainer == null) { Slog.w(TAG_WM, "Attempted to freeze screen with non-existing app token: " + mContainer); return; } + + if (configChanges == 0 && mContainer.okToDisplay()) { + if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Skipping set freeze of " + mToken); + return; + } + mContainer.startFreezingScreen(); } } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index d176d9455d14ade31edf883729fb2f734787e688..0a7d1c1d34609f2d73c20b067f1cf0c9efb2df5a 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -22,6 +22,7 @@ import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION; import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; +import static android.os.Build.VERSION_CODES.O_MR1; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD; import static android.view.WindowManager.LayoutParams.FLAG_SECURE; @@ -62,6 +63,7 @@ import android.util.Slog; import android.view.IApplicationToken; import android.view.SurfaceControl; import android.view.WindowManager; +import android.view.WindowManager.LayoutParams; import android.view.WindowManagerPolicy.StartingSurface; import com.android.internal.util.ToBooleanFunction; @@ -72,6 +74,8 @@ import java.io.PrintWriter; import java.util.ArrayDeque; import java.util.ArrayList; +import static android.os.Build.VERSION_CODES.O; + class AppTokenList extends ArrayList { } @@ -364,10 +368,10 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree boolean runningAppAnimation = false; + if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) { + mAppAnimator.setNullAnimation(); + } if (transit != AppTransition.TRANSIT_UNSET) { - if (mAppAnimator.animation == AppWindowAnimator.sDummyAnimation) { - mAppAnimator.setNullAnimation(); - } if (mService.applyAnimationLocked(this, lp, transit, visible, isVoiceInteraction)) { delayed = runningAppAnimation = true; } @@ -468,6 +472,20 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree return delayed; } + /** + * @return The to top most child window for which {@link LayoutParams#isFullscreen()} returns + * true. + */ + WindowState getTopFullscreenWindow() { + for (int i = mChildren.size() - 1; i >= 0; i--) { + final WindowState win = mChildren.get(i); + if (win != null && win.mAttrs.isFullscreen()) { + return win; + } + } + return null; + } + WindowState findMainWindow() { WindowState candidate = null; int j = mChildren.size(); @@ -1291,6 +1309,15 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree */ @Override int getOrientation(int candidate) { + // We do not allow non-fullscreen apps to influence orientation starting in O-MR1. While we + // do throw an exception in {@link Activity#onCreate} and + // {@link Activity#setRequestedOrientation}, we also ignore the orientation here so that + // other calculations aren't affected. + if (!fillsParent() && mTargetSdk >= O_MR1) { + // Can't specify orientation if app doesn't fill parent. + return SCREEN_ORIENTATION_UNSET; + } + if (candidate == SCREEN_ORIENTATION_BEHIND) { // Allow app to specify orientation regardless of its visibility state if the current // candidate want us to use orientation behind. I.e. the visible app on-top of this one @@ -1732,6 +1759,9 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree if (mRemovingFromDisplay) { pw.println(prefix + "mRemovingFromDisplay=" + mRemovingFromDisplay); } + if (mAppAnimator.isAnimating()) { + mAppAnimator.dump(pw, prefix + " "); + } } @Override diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java index cff2fadd76491ef75e05da55669fe4edba9d43f2..7953ee430934941e1059fd564df5388931807368 100644 --- a/services/core/java/com/android/server/wm/BoundsAnimationController.java +++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java @@ -21,7 +21,6 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.animation.AnimationHandler; -import android.animation.AnimationHandler.AnimationFrameCallbackProvider; import android.animation.Animator; import android.animation.ValueAnimator; import android.annotation.IntDef; @@ -32,13 +31,11 @@ import android.os.IBinder; import android.os.Debug; import android.util.ArrayMap; import android.util.Slog; -import android.view.Choreographer; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.view.WindowManagerInternal; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.graphics.SfVsyncFrameCallbackProvider; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -142,9 +139,6 @@ public class BoundsAnimationController { // True if this this animation was canceled and will be replaced the another animation from // the same {@link #BoundsAnimationTarget} target. private boolean mSkipFinalResize; - // True if this animation replaced a previous animation of the same - // {@link #BoundsAnimationTarget} target. - private final boolean mSkipAnimationStart; // True if this animation was canceled by the user, not as a part of a replacing animation private boolean mSkipAnimationEnd; @@ -159,6 +153,7 @@ public class BoundsAnimationController { // Whether to schedule PiP mode changes on animation start/end private @SchedulePipModeChangedState int mSchedulePipModeChangedState; + private @SchedulePipModeChangedState int mPrevSchedulePipModeChangedState; // Depending on whether we are animating from // a smaller to a larger size @@ -171,14 +166,14 @@ public class BoundsAnimationController { BoundsAnimator(BoundsAnimationTarget target, Rect from, Rect to, @SchedulePipModeChangedState int schedulePipModeChangedState, - boolean moveFromFullscreen, boolean moveToFullscreen, - boolean replacingExistingAnimation) { + @SchedulePipModeChangedState int prevShedulePipModeChangedState, + boolean moveFromFullscreen, boolean moveToFullscreen) { super(); mTarget = target; mFrom.set(from); mTo.set(to); - mSkipAnimationStart = replacingExistingAnimation; mSchedulePipModeChangedState = schedulePipModeChangedState; + mPrevSchedulePipModeChangedState = prevShedulePipModeChangedState; mMoveFromFullscreen = moveFromFullscreen; mMoveToFullscreen = moveToFullscreen; addUpdateListener(this); @@ -200,7 +195,7 @@ public class BoundsAnimationController { @Override public void onAnimationStart(Animator animation) { if (DEBUG) Slog.d(TAG, "onAnimationStart: mTarget=" + mTarget - + " mSkipAnimationStart=" + mSkipAnimationStart + + " mPrevSchedulePipModeChangedState=" + mPrevSchedulePipModeChangedState + " mSchedulePipModeChangedState=" + mSchedulePipModeChangedState); mFinishAnimationAfterTransition = false; mTmpRect.set(mFrom.left, mFrom.top, mFrom.left + mFrozenTaskWidth, @@ -210,18 +205,26 @@ public class BoundsAnimationController { // running updateBooster(); - // Ensure that we have prepared the target for animation before - // we trigger any size changes, so it can swap surfaces - // in to appropriate modes, or do as it wishes otherwise. - if (!mSkipAnimationStart) { + // Ensure that we have prepared the target for animation before we trigger any size + // changes, so it can swap surfaces in to appropriate modes, or do as it wishes + // otherwise. + if (mPrevSchedulePipModeChangedState == NO_PIP_MODE_CHANGED_CALLBACKS) { mTarget.onAnimationStart(mSchedulePipModeChangedState == - SCHEDULE_PIP_MODE_CHANGED_ON_START); + SCHEDULE_PIP_MODE_CHANGED_ON_START, false /* forceUpdate */); // When starting an animation from fullscreen, pause here and wait for the // windows-drawn signal before we start the rest of the transition down into PiP. if (mMoveFromFullscreen) { pause(); } + } else if (mPrevSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_END && + mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { + // We are replacing a running animation into PiP, but since it hasn't completed, the + // client will not currently receive any picture-in-picture mode change callbacks. + // However, we still need to report to them that they are leaving PiP, so this will + // force an update via a mode changed callback. + mTarget.onAnimationStart(true /* schedulePipModeChangedCallback */, + true /* forceUpdate */); } // Immediately update the task bounds if they have to become larger, but preserve @@ -388,6 +391,8 @@ public class BoundsAnimationController { boolean moveFromFullscreen, boolean moveToFullscreen) { final BoundsAnimator existing = mRunningAnimations.get(target); final boolean replacing = existing != null; + @SchedulePipModeChangedState int prevSchedulePipModeChangedState = + NO_PIP_MODE_CHANGED_CALLBACKS; if (DEBUG) Slog.d(TAG, "animateBounds: target=" + target + " from=" + from + " to=" + to + " schedulePipModeChangedState=" + schedulePipModeChangedState @@ -403,6 +408,9 @@ public class BoundsAnimationController { return existing; } + // Save the previous state + prevSchedulePipModeChangedState = existing.mSchedulePipModeChangedState; + // Update the PiP callback states if we are replacing the animation if (existing.mSchedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { if (schedulePipModeChangedState == SCHEDULE_PIP_MODE_CHANGED_ON_START) { @@ -428,7 +436,8 @@ public class BoundsAnimationController { existing.cancel(); } final BoundsAnimator animator = new BoundsAnimator(target, from, to, - schedulePipModeChangedState, moveFromFullscreen, moveToFullscreen, replacing); + schedulePipModeChangedState, prevSchedulePipModeChangedState, + moveFromFullscreen, moveToFullscreen); mRunningAnimations.put(target, animator); animator.setFloatValues(0f, 1f); animator.setDuration((animationDuration != -1 ? animationDuration diff --git a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java index 8b1bf7bf77dc228c1f07ccca425fb018cd806aef..647a2d6deac6210262b905b511fc7ff540bf28c5 100644 --- a/services/core/java/com/android/server/wm/BoundsAnimationTarget.java +++ b/services/core/java/com/android/server/wm/BoundsAnimationTarget.java @@ -31,7 +31,7 @@ interface BoundsAnimationTarget { * @param schedulePipModeChangedCallback whether or not to schedule the PiP mode changed * callbacks */ - void onAnimationStart(boolean schedulePipModeChangedCallback); + void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate); /** * Sets the size of the target (without any intermediate steps, like scheduling animation) diff --git a/services/core/java/com/android/server/wm/DimLayerController.java b/services/core/java/com/android/server/wm/DimLayerController.java index 741492815bd7f4e270adb39496340f8e1181a5a4..6f9e45a6690966f1718b3a4b8aa2852aeff481e8 100644 --- a/services/core/java/com/android/server/wm/DimLayerController.java +++ b/services/core/java/com/android/server/wm/DimLayerController.java @@ -290,7 +290,7 @@ class DimLayerController { state.dimLayer.setLayer(dimLayer); } if (state.dimLayer.isAnimating()) { - if (!mDisplayContent.mService.okToAnimate()) { + if (!mDisplayContent.okToAnimate()) { // Jump to the end of the animation. state.dimLayer.show(); } else { diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 5bc4a6b23392b3576ca3284a28a7a6cfe50b6e02..ba99f38f4c38583217d860f900824b86df0b4703 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -57,6 +57,7 @@ import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT; import static android.view.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER; +import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_UNOCCLUDE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_BOOT; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY; @@ -949,10 +950,10 @@ class DisplayContent extends WindowContainer w.mSeamlesslyRotated); if (seamlessRotated != null) { // We can't rotate (seamlessly or not) while waiting for the last seamless rotation @@ -961,7 +962,20 @@ class DisplayContent extends WindowContainer 0f) { mScreenshotApplicationState.screenshotReady = true; } @@ -3204,6 +3219,19 @@ class DisplayContent extends WindowContainer { defaultDisplay.pendingLayoutChanges); } - for (i = mService.mResizingWindows.size() - 1; i >= 0; i--) { - WindowState win = mService.mResizingWindows.get(i); - if (win.mAppFreezing) { - // Don't remove this window until rotation has completed. - continue; - } - // Discard the saved surface if window size is changed, it can't be reused. - if (win.mAppToken != null) { - win.mAppToken.destroySavedSurfaces(); - } - win.reportResized(); - mService.mResizingWindows.remove(i); - } + final ArraySet touchExcludeRegionUpdateDisplays = handleResizingWindows(); if (DEBUG_ORIENTATION && mService.mDisplayFrozen) Slog.v(TAG, "With display frozen, orientationChangeComplete=" + mOrientationChangeComplete); @@ -817,6 +806,16 @@ class RootWindowContainer extends WindowContainer { mService.mInputMonitor.updateInputWindowsLw(false /*force*/); } mService.setFocusTaskRegionLocked(null); + if (touchExcludeRegionUpdateDisplays != null) { + final DisplayContent focusedDc = mService.mFocusedApp != null + ? mService.mFocusedApp.getDisplayContent() : null; + for (DisplayContent dc : touchExcludeRegionUpdateDisplays) { + // The focused DisplayContent was recalcuated in setFocusTaskRegionLocked + if (focusedDc != dc) { + dc.setTouchExcludeRegion(null /* focusedTask */); + } + } + } // Check to see if we are now in a state where the screen should // be enabled, because the window obscured flags have changed. @@ -867,6 +866,37 @@ class RootWindowContainer extends WindowContainer { mService.mDisplayManagerInternal.performTraversalInTransactionFromWindowManager(); } + /** + * Handles resizing windows during surface placement. + * + * @return A set of any DisplayContent whose touch exclude region needs to be recalculated due + * to a tap-exclude window resizing, or null if no such DisplayContents were found. + */ + private ArraySet handleResizingWindows() { + ArraySet touchExcludeRegionUpdateSet = null; + for (int i = mService.mResizingWindows.size() - 1; i >= 0; i--) { + WindowState win = mService.mResizingWindows.get(i); + if (win.mAppFreezing) { + // Don't remove this window until rotation has completed. + continue; + } + // Discard the saved surface if window size is changed, it can't be reused. + if (win.mAppToken != null) { + win.mAppToken.destroySavedSurfaces(); + } + win.reportResized(); + mService.mResizingWindows.remove(i); + if (WindowManagerService.excludeWindowTypeFromTapOutTask(win.mAttrs.type)) { + final DisplayContent dc = win.getDisplayContent(); + if (touchExcludeRegionUpdateSet == null) { + touchExcludeRegionUpdateSet = new ArraySet<>(); + } + touchExcludeRegionUpdateSet.add(dc); + } + } + return touchExcludeRegionUpdateSet; + } + /** * @param w WindowState this method is applied to. * @param obscured True if there is a window on top of this obscuring the display. diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java index 83337ca98e359452e5388f70a32f06d37f67bd03..08a9caa80d1e3a4cebd3917443b982a89186e749 100644 --- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java +++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java @@ -280,7 +280,7 @@ class ScreenRotationAnimation { // capture a screenshot into the surface we just created Surface sur = new Surface(); sur.copyFrom(mSurfaceControl); - // FIXME: we should use the proper display + // TODO(multidisplay): we should use the proper display SurfaceControl.screenshot(SurfaceControl.getBuiltInDisplay( SurfaceControl.BUILT_IN_DISPLAY_ID_MAIN), sur); mSurfaceControl.setLayerStack(display.getLayerStack()); diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java index 22b0f5bcdf07571a76c95f299250dfbd2076a2ea..4dd147e5358816dcc12d2792c5651feff8d231ba 100644 --- a/services/core/java/com/android/server/wm/Session.java +++ b/services/core/java/com/android/server/wm/Session.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import static android.Manifest.permission.DEVICE_POWER; +import static android.Manifest.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static android.Manifest.permission.INTERNAL_SYSTEM_WINDOW; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER; @@ -82,6 +84,8 @@ public class Session extends IWindowSession.Stub // Set of visible alert window surfaces connected to this session. private final Set mAlertWindowSurfaces = new HashSet<>(); final boolean mCanAddInternalSystemWindow; + final boolean mCanHideNonSystemOverlayWindows; + final boolean mCanAcquireSleepToken; private AlertWindowNotification mAlertWindowNotification; private boolean mShowingAlertWindowNotificationAllowed; private boolean mClientDead = false; @@ -99,6 +103,10 @@ public class Session extends IWindowSession.Stub mLastReportedAnimatorScale = service.getCurrentAnimatorScale(); mCanAddInternalSystemWindow = service.mContext.checkCallingOrSelfPermission( INTERNAL_SYSTEM_WINDOW) == PERMISSION_GRANTED; + mCanHideNonSystemOverlayWindows = service.mContext.checkCallingOrSelfPermission( + HIDE_NON_SYSTEM_OVERLAY_WINDOWS) == PERMISSION_GRANTED; + mCanAcquireSleepToken = service.mContext.checkCallingOrSelfPermission(DEVICE_POWER) + == PERMISSION_GRANTED; mShowingAlertWindowNotificationAllowed = mService.mShowAlertWindowNotifications; StringBuilder sb = new StringBuilder(); sb.append("Session{"); @@ -711,4 +719,8 @@ public class Session extends IWindowSession.Stub public String toString() { return mStringName; } + + boolean hasAlertWindowSurfaces() { + return !mAlertWindowSurfaces.isEmpty(); + } } diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java index b8b9b9a25ac8fa3fdbd31683004f13d94ffdfb6a..a1868e6f46c333bb93f157ccf83b2d1e5dc89b3f 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotController.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java @@ -18,6 +18,8 @@ package com.android.server.wm; import static android.app.ActivityManager.ENABLE_TASK_SNAPSHOTS; +import static com.android.server.wm.TaskSnapshotPersister.DISABLE_FULL_SIZED_BITMAPS; +import static com.android.server.wm.TaskSnapshotPersister.REDUCED_SCALE; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; @@ -97,11 +99,25 @@ class TaskSnapshotController { */ private final boolean mIsRunningOnTv; + /** + * Flag indicating whether we are running on an IoT device. + */ + private final boolean mIsRunningOnIoT; + + /** + * Flag indicating whether we are running on an Android Wear device. + */ + private final boolean mIsRunningOnWear; + TaskSnapshotController(WindowManagerService service) { mService = service; mCache = new TaskSnapshotCache(mService, mLoader); mIsRunningOnTv = mService.mContext.getPackageManager().hasSystemFeature( PackageManager.FEATURE_LEANBACK); + mIsRunningOnIoT = mService.mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_EMBEDDED); + mIsRunningOnWear = mService.mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_WATCH); } void systemReady() { @@ -174,7 +190,8 @@ class TaskSnapshotController { */ @Nullable TaskSnapshot getSnapshot(int taskId, int userId, boolean restoreFromDisk, boolean reducedResolution) { - return mCache.getSnapshot(taskId, userId, restoreFromDisk, reducedResolution); + return mCache.getSnapshot(taskId, userId, restoreFromDisk, reducedResolution + || DISABLE_FULL_SIZED_BITMAPS); } /** @@ -195,18 +212,20 @@ class TaskSnapshotController { if (mainWindow == null) { return null; } + final boolean isLowRamDevice = ActivityManager.isLowRamDeviceStatic(); + final float scaleFraction = isLowRamDevice ? REDUCED_SCALE : 1f; final GraphicBuffer buffer = top.mDisplayContent.screenshotApplicationsToBuffer(top.token, - -1, -1, false, 1.0f, false, true); - if (buffer == null) { + -1, -1, false, scaleFraction, false, true); + if (buffer == null || buffer.getWidth() <= 1 || buffer.getHeight() <= 1) { return null; } return new TaskSnapshot(buffer, top.getConfiguration().orientation, - minRect(mainWindow.mContentInsets, mainWindow.mStableInsets), false /* reduced */, - 1f /* scale */); + minRect(mainWindow.mContentInsets, mainWindow.mStableInsets), + isLowRamDevice /* reduced */, scaleFraction /* scale */); } private boolean shouldDisableSnapshots() { - return !ENABLE_TASK_SNAPSHOTS || ActivityManager.isLowRamDeviceStatic() || mIsRunningOnTv; + return !ENABLE_TASK_SNAPSHOTS || mIsRunningOnWear || mIsRunningOnTv || mIsRunningOnIoT; } private Rect minRect(Rect rect1, Rect rect2) { @@ -277,10 +296,12 @@ class TaskSnapshotController { decorPainter.drawDecors(c, null /* statusBarExcludeFrame */); node.end(c); final Bitmap hwBitmap = ThreadedRenderer.createHardwareBitmap(node, width, height); - + if (hwBitmap == null) { + return null; + } return new TaskSnapshot(hwBitmap.createGraphicBufferHandle(), topChild.getConfiguration().orientation, mainWindow.mStableInsets, - false /* reduced */, 1.0f /* scale */); + ActivityManager.isLowRamDeviceStatic() /* reduced */, 1.0f /* scale */); } /** diff --git a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java index ec21d259f70e031dc42f93d1c412d16dc957d0c4..537f31775951a234c2433e273a3a480db30c66a5 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotLoader.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotLoader.java @@ -68,7 +68,7 @@ class TaskSnapshotLoader { final File bitmapFile = reducedResolution ? mPersister.getReducedResolutionBitmapFile(taskId, userId) : mPersister.getBitmapFile(taskId, userId); - if (!protoFile.exists() || !bitmapFile.exists()) { + if (bitmapFile == null || !protoFile.exists() || !bitmapFile.exists()) { return null; } try { diff --git a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java index f90b3fb6c1deb54353aa9e7434e6b7642c03c6f9..7b047a80d572dda46a53b4fbedf4019c31a27e4c 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotPersister.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotPersister.java @@ -21,6 +21,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.TestApi; +import android.app.ActivityManager; import android.app.ActivityManager.TaskSnapshot; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; @@ -52,7 +53,8 @@ class TaskSnapshotPersister { private static final String TAG = TAG_WITH_CLASS_NAME ? "TaskSnapshotPersister" : TAG_WM; private static final String SNAPSHOTS_DIRNAME = "snapshots"; private static final String REDUCED_POSTFIX = "_reduced"; - static final float REDUCED_SCALE = 0.5f; + static final float REDUCED_SCALE = ActivityManager.isLowRamDeviceStatic() ? 0.6f : 0.5f; + static final boolean DISABLE_FULL_SIZED_BITMAPS = ActivityManager.isLowRamDeviceStatic(); private static final long DELAY_MS = 100; private static final int QUALITY = 95; private static final String PROTO_EXTENSION = ".proto"; @@ -183,6 +185,11 @@ class TaskSnapshotPersister { } File getBitmapFile(int taskId, int userId) { + // Full sized bitmaps are disabled on low ram devices + if (DISABLE_FULL_SIZED_BITMAPS) { + Slog.wtf(TAG, "This device does not support full sized resolution bitmaps."); + return null; + } return new File(getDirectory(userId), taskId + BITMAP_EXTENSION); } @@ -197,11 +204,15 @@ class TaskSnapshotPersister { private void deleteSnapshot(int taskId, int userId) { final File protoFile = getProtoFile(taskId, userId); - final File bitmapFile = getBitmapFile(taskId, userId); final File bitmapReducedFile = getReducedResolutionBitmapFile(taskId, userId); protoFile.delete(); - bitmapFile.delete(); bitmapReducedFile.delete(); + + // Low ram devices do not have a full sized file to delete + if (!DISABLE_FULL_SIZED_BITMAPS) { + final File bitmapFile = getBitmapFile(taskId, userId); + bitmapFile.delete(); + } } interface DirectoryResolver { @@ -322,8 +333,6 @@ class TaskSnapshotPersister { } boolean writeBuffer() { - final File file = getBitmapFile(mTaskId, mUserId); - final File reducedFile = getReducedResolutionBitmapFile(mTaskId, mUserId); final Bitmap bitmap = Bitmap.createHardwareBitmap(mSnapshot.getSnapshot()); if (bitmap == null) { Slog.e(TAG, "Invalid task snapshot hw bitmap"); @@ -331,18 +340,33 @@ class TaskSnapshotPersister { } final Bitmap swBitmap = bitmap.copy(Config.ARGB_8888, false /* isMutable */); - final Bitmap reduced = Bitmap.createScaledBitmap(swBitmap, - (int) (bitmap.getWidth() * REDUCED_SCALE), - (int) (bitmap.getHeight() * REDUCED_SCALE), true /* filter */); + final File reducedFile = getReducedResolutionBitmapFile(mTaskId, mUserId); + final Bitmap reduced = mSnapshot.isReducedResolution() + ? swBitmap + : Bitmap.createScaledBitmap(swBitmap, + (int) (bitmap.getWidth() * REDUCED_SCALE), + (int) (bitmap.getHeight() * REDUCED_SCALE), true /* filter */); try { - FileOutputStream fos = new FileOutputStream(file); - swBitmap.compress(JPEG, QUALITY, fos); - fos.close(); FileOutputStream reducedFos = new FileOutputStream(reducedFile); reduced.compress(JPEG, QUALITY, reducedFos); reducedFos.close(); } catch (IOException e) { - Slog.e(TAG, "Unable to open " + file + " or " + reducedFile +" for persisting.", e); + Slog.e(TAG, "Unable to open " + reducedFile +" for persisting.", e); + return false; + } + + // For snapshots with reduced resolution, do not create or save full sized bitmaps + if (mSnapshot.isReducedResolution()) { + return true; + } + + final File file = getBitmapFile(mTaskId, mUserId); + try { + FileOutputStream fos = new FileOutputStream(file); + swBitmap.compress(JPEG, QUALITY, fos); + fos.close(); + } catch (IOException e) { + Slog.e(TAG, "Unable to open " + file + " for persisting.", e); return false; } return true; diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java index d7f049621632fa37560ee76c0f1ad7e431b66b6e..4698d72567c475d798d72f420ebbe6814d6d98d3 100644 --- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java +++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java @@ -33,7 +33,6 @@ import static android.view.WindowManager.LayoutParams.FLAG_SLIPPERY; import static android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH; import static android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_STATUS_BAR_BACKGROUND; -import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TASK_SNAPSHOT; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; import static com.android.internal.policy.DecorView.NAVIGATION_BAR_COLOR_VIEW_ATTRIBUTES; import static com.android.internal.policy.DecorView.STATUS_BAR_COLOR_VIEW_ATTRIBUTES; @@ -163,7 +162,7 @@ class TaskSnapshotSurface implements StartingSurface { + task); return null; } - final WindowState topFullscreenWindow = topFullscreenToken.findMainWindow(); + final WindowState topFullscreenWindow = topFullscreenToken.getTopFullscreenWindow(); if (mainWindow == null || topFullscreenWindow == null) { Slog.w(TAG, "TaskSnapshotSurface.create: Failed to find main window for token=" + token); @@ -179,8 +178,7 @@ class TaskSnapshotSurface implements StartingSurface { layoutParams.flags = (windowFlags & ~FLAG_INHERIT_EXCLUDES) | FLAG_NOT_FOCUSABLE | FLAG_NOT_TOUCHABLE; - layoutParams.privateFlags = PRIVATE_FLAG_TASK_SNAPSHOT - | (windowPrivateFlags & PRIVATE_FLAG_INHERITS); + layoutParams.privateFlags = windowPrivateFlags & PRIVATE_FLAG_INHERITS; layoutParams.token = token.token; layoutParams.width = LayoutParams.MATCH_PARENT; layoutParams.height = LayoutParams.MATCH_PARENT; @@ -322,6 +320,10 @@ class TaskSnapshotSurface implements StartingSurface { mChildSurfaceControl.show(); mChildSurfaceControl.setWindowCrop(crop); mChildSurfaceControl.setPosition(frame.left, frame.top); + + // Scale the mismatch dimensions to fill the task bounds + final float scale = 1 / mSnapshot.getScale(); + mChildSurfaceControl.setMatrix(scale, 0, 0, scale); } finally { SurfaceControl.closeTransaction(); } @@ -334,6 +336,11 @@ class TaskSnapshotSurface implements StartingSurface { mSurface.release(); } + /** + * Calculates the snapshot crop in snapshot coordinate space. + * + * @return crop rect in snapshot coordinate space. + */ @VisibleForTesting Rect calculateSnapshotCrop() { final Rect rect = new Rect(); @@ -342,16 +349,28 @@ class TaskSnapshotSurface implements StartingSurface { // Let's remove all system decorations except the status bar, but only if the task is at the // very top of the screen. - rect.inset(insets.left, mTaskBounds.top != 0 ? insets.top : 0, insets.right, insets.bottom); + rect.inset((int) (insets.left * mSnapshot.getScale()), + mTaskBounds.top != 0 ? (int) (insets.top * mSnapshot.getScale()) : 0, + (int) (insets.right * mSnapshot.getScale()), + (int) (insets.bottom * mSnapshot.getScale())); return rect; } + /** + * Calculates the snapshot frame in window coordinate space from crop. + * + * @param crop rect that is in snapshot coordinate space. + */ @VisibleForTesting Rect calculateSnapshotFrame(Rect crop) { final Rect frame = new Rect(crop); + final float scale = mSnapshot.getScale(); + + // Rescale the frame from snapshot to window coordinate space + frame.scale(1 / scale); // By default, offset it to to top/left corner - frame.offsetTo(-crop.left, -crop.top); + frame.offsetTo((int) (-crop.left / scale), (int) (-crop.top / scale)); // However, we also need to make space for the navigation bar on the left side. final int colorViewLeftInset = getColorViewLeftInset(mStableInsets.left, diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 39878ccb07ddff415b752c814409c209ff2663d6..55151a192fbff42cce5e649e25c1f652f0c92bbb 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -1498,7 +1498,7 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye } @Override // AnimatesBounds - public void onAnimationStart(boolean schedulePipModeChangedCallback) { + public void onAnimationStart(boolean schedulePipModeChangedCallback, boolean forceUpdate) { // Hold the lock since this is called from the BoundsAnimator running on the UiThread synchronized (mService.mWindowMap) { mBoundsAnimatingRequested = false; @@ -1523,9 +1523,11 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye final PinnedStackWindowController controller = (PinnedStackWindowController) getController(); if (schedulePipModeChangedCallback && controller != null) { - // We need to schedule the PiP mode change after the animation down, so use the - // final bounds - controller.updatePictureInPictureModeForPinnedStackAnimation(null); + // We need to schedule the PiP mode change before the animation up. It is possible + // in this case for the animation down to not have been completed, so always + // force-schedule and update to the client to ensure that it is notified that it + // is no longer in picture-in-picture mode + controller.updatePictureInPictureModeForPinnedStackAnimation(null, forceUpdate); } } } @@ -1553,7 +1555,7 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye // We need to schedule the PiP mode change after the animation down, so use the // final bounds controller.updatePictureInPictureModeForPinnedStackAnimation( - mBoundsAnimationTarget); + mBoundsAnimationTarget, false /* forceUpdate */); } if (finalStackSize != null) { diff --git a/services/core/java/com/android/server/wm/WindowLayersController.java b/services/core/java/com/android/server/wm/WindowLayersController.java index 5dc79f8500c0aa993388fa1c8f2791692ec12790..5d1083e2be26eb2e6b8dd98d63e744d284769f25 100644 --- a/services/core/java/com/android/server/wm/WindowLayersController.java +++ b/services/core/java/com/android/server/wm/WindowLayersController.java @@ -30,6 +30,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYERS; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; +import static com.android.server.wm.WindowManagerService.TYPE_LAYER_OFFSET; import static com.android.server.wm.WindowManagerService.WINDOW_LAYER_MULTIPLIER; /** @@ -198,7 +199,7 @@ class WindowLayersController { private void adjustSpecialWindows() { // The following adjustments are beyond the highest docked-affected layer - int layer = mHighestDockedAffectedLayer + WINDOW_LAYER_MULTIPLIER; + int layer = mHighestDockedAffectedLayer + TYPE_LAYER_OFFSET; // Adjust the docked stack windows and dock divider above only the windows that are affected // by the docked stack. When this happens, also boost the assistant window layers, otherwise diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8ba36d554db367d249f23d89ad4d4b371cf9260e..0abc84745f0ebd4be36e9fb0535c293ba186aec3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -498,12 +498,15 @@ public class WindowManagerService extends IWindowManager.Stub */ Runnable mWaitingForDrawnCallback; + /** List of window currently causing non-system overlay windows to be hidden. */ + private ArrayList mHidingNonSystemOverlayWindows = new ArrayList<>(); + /** * Stores for each user whether screencapture is disabled * This array is essentially a cache for all userId for * {@link android.app.admin.DevicePolicyManager#getScreenCaptureDisabled} */ - SparseArray mScreenCaptureDisabled = new SparseArray<>(); + private SparseArray mScreenCaptureDisabled = new SparseArray<>(); IInputMethodManager mInputMethodManager; @@ -1460,6 +1463,9 @@ public class WindowManagerService extends IWindowManager.Stub } } + final boolean hideSystemAlertWindows = !mHidingNonSystemOverlayWindows.isEmpty(); + win.setForceHideNonSystemOverlayWindowIfNeeded(hideSystemAlertWindows); + final AppWindowToken aToken = token.asAppWindowToken(); if (type == TYPE_APPLICATION_STARTING && aToken != null) { aToken.startingWindow = win; @@ -1733,6 +1739,7 @@ public class WindowManagerService extends IWindowManager.Stub } mPendingRemove.remove(win); mResizingWindows.remove(win); + updateNonSystemOverlayWindowsVisibilityIfNeeded(win, false /* surfaceShown */); mWindowsChanged = true; if (DEBUG_WINDOW_MOVEMENT) Slog.v(TAG_WM, "Final remove of window: " + win); @@ -2020,10 +2027,14 @@ public class WindowManagerService extends IWindowManager.Stub Slog.i(TAG_WM, "Relayout " + win + ": oldVis=" + oldVisibility + " newVis=" + viewVisibility, stack); } - if (viewVisibility == View.VISIBLE && - (win.mAppToken == null || win.mAttrs.type == TYPE_APPLICATION_STARTING - || !win.mAppToken.isClientHidden())) { + // We should only relayout if the view is visible, it is a starting window, or the + // associated appToken is not hidden. + final boolean shouldRelayout = viewVisibility == View.VISIBLE && + (win.mAppToken == null || win.mAttrs.type == TYPE_APPLICATION_STARTING + || !win.mAppToken.isClientHidden()); + + if (shouldRelayout) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "relayoutWindow: viewVisibility_1"); // We are about to create a surface, but we didn't run a layout yet. So better run @@ -2179,8 +2190,18 @@ public class WindowManagerService extends IWindowManager.Stub // and needs process it before handling the corresponding window frame. the variable // {@code mergedConfiguration} is an out parameter that will be passed back to the // client over IPC and checked there. - win.getMergedConfiguration(mergedConfiguration); - win.setReportedConfiguration(mergedConfiguration); + // Note: in the cases where the window is tied to an activity, we should not send a + // configuration update when the window has requested to be hidden. Doing so can lead + // to the client erroneously accepting a configuration that would have otherwise caused + // an activity restart. We instead hand back the last reported + // {@link MergedConfiguration}. + if (shouldRelayout) { + win.getMergedConfiguration(mergedConfiguration); + } else { + win.getLastReportedMergedConfiguration(mergedConfiguration); + } + + win.setLastReportedMergedConfiguration(mergedConfiguration); outFrame.set(win.mCompatFrame); outOverscanInsets.set(win.mOverscanInsets); @@ -2340,7 +2361,7 @@ public class WindowManagerService extends IWindowManager.Stub // artifacts when we unfreeze the display if some different animation // is running. Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "WM#applyAnimationLocked"); - if (okToAnimate()) { + if (atoken.okToAnimate()) { final DisplayContent displayContent = atoken.getTask().getDisplayContent(); final DisplayInfo displayInfo = displayContent.getDisplayInfo(); final int width = displayInfo.appWidth; @@ -2354,6 +2375,7 @@ public class WindowManagerService extends IWindowManager.Stub final Rect displayFrame = new Rect(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight); final Rect insets = new Rect(); + final Rect stableInsets = new Rect(); Rect surfaceInsets = null; final boolean freeform = win != null && win.inFreeformWorkspace(); if (win != null) { @@ -2368,6 +2390,7 @@ public class WindowManagerService extends IWindowManager.Stub } surfaceInsets = win.getAttrs().surfaceInsets; insets.set(win.mContentInsets); + stableInsets.set(win.mStableInsets); } if (atoken.mLaunchTaskBehind) { @@ -2382,7 +2405,7 @@ public class WindowManagerService extends IWindowManager.Stub final Configuration displayConfig = displayContent.getConfiguration(); Animation a = mAppTransition.loadAnimation(lp, transit, enter, displayConfig.uiMode, displayConfig.orientation, frame, displayFrame, insets, surfaceInsets, - isVoiceInteraction, freeform, atoken.getTask().mTaskId); + stableInsets, isVoiceInteraction, freeform, atoken.getTask().mTaskId); if (a != null) { if (DEBUG_ANIM) logWithStack(TAG, "Loaded animation " + a + " for " + atoken); final int containingWidth = frame.width(); @@ -2416,14 +2439,6 @@ public class WindowManagerService extends IWindowManager.Stub return false; } - boolean okToDisplay() { - return !mDisplayFrozen && mDisplayEnabled && mPolicy.isScreenOn(); - } - - boolean okToAnimate() { - return okToDisplay() && mPolicy.okToAnimate(); - } - @Override public void addWindowToken(IBinder binder, int type, int displayId) { if (!checkCallingPermission(MANAGE_APP_TOKENS, "addWindowToken()")) { @@ -2690,7 +2705,9 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { boolean prepared = mAppTransition.prepareAppTransitionLocked(transit, alwaysKeepCurrent, flags, forceOverride); - if (prepared && okToAnimate()) { + // TODO (multidisplay): associate app transitions with displays + final DisplayContent dc = mRoot.getDisplayContent(DEFAULT_DISPLAY); + if (prepared && dc != null && dc.okToAnimate()) { mSkipAppTransitionAnimation = false; } } @@ -2977,10 +2994,9 @@ public class WindowManagerService extends IWindowManager.Stub } public void setKeyguardGoingAway(boolean keyguardGoingAway) { -// TODO: Use of this can be removed. Revert ag/I8369723d6a77f2c602f1ef080371fa7cd9ee094e -// synchronized (mWindowMap) { -// mKeyguardGoingAway = keyguardGoingAway; -// } + synchronized (mWindowMap) { + mKeyguardGoingAway = keyguardGoingAway; + } } // ------------------------------------------------------------- @@ -3599,7 +3615,6 @@ public class WindowManagerService extends IWindowManager.Stub } private void updateCircularDisplayMaskIfNeeded() { - // we're fullscreen and not hosted in an ActivityView if (mContext.getResources().getConfiguration().isScreenRound() && mContext.getResources().getBoolean( com.android.internal.R.bool.config_windowShowCircularMask)) { @@ -5809,7 +5824,7 @@ public class WindowManagerService extends IWindowManager.Stub // If the screen is currently frozen or off, then keep // it frozen/off until this window draws at its new // orientation. - if (!okToDisplay() && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { + if (!w.mToken.okToDisplay() && mWindowsFreezingScreen != WINDOWS_FREEZING_SCREENS_TIMEOUT) { if (DEBUG_ORIENTATION) Slog.v(TAG_WM, "Changing surface while display frozen: " + w); w.setOrientationChanging(true); w.mLastFreezeDuration = 0; @@ -6025,7 +6040,7 @@ public class WindowManagerService extends IWindowManager.Stub return; } - if (!displayContent.isReady() || !mPolicy.isScreenOn() || !okToAnimate()) { + if (!displayContent.isReady() || !mPolicy.isScreenOn() || !displayContent.okToAnimate()) { // No need to freeze the screen before the display is ready, if the screen is off, // or we can't currently animate. return; @@ -6061,7 +6076,8 @@ public class WindowManagerService extends IWindowManager.Stub Debug.startMethodTracing(file.toString(), 8 * 1024 * 1024); } - if (CUSTOM_SCREEN_ROTATION) { + // TODO(multidisplay): rotation on non-default displays + if (CUSTOM_SCREEN_ROTATION && displayContent.isDefaultDisplay) { mExitAnimId = exitAnim; mEnterAnimId = enterAnim; ScreenRotationAnimation screenRotationAnimation = @@ -6073,7 +6089,6 @@ public class WindowManagerService extends IWindowManager.Stub // Check whether the current screen contains any secure content. boolean isSecure = displayContent.hasSecureWindowOnScreen(); - // TODO(multidisplay): rotation on main screen only. displayContent.updateDisplayInfo(); screenRotationAnimation = new ScreenRotationAnimation(mContext, displayContent, mFxSession, inTransaction, mPolicy.isDefaultOrientationForced(), isSecure, @@ -6526,6 +6541,21 @@ public class WindowManagerService extends IWindowManager.Stub ArrayList windows) { mRoot.dumpWindowsNoHeader(pw, dumpAll, windows); + if (!mHidingNonSystemOverlayWindows.isEmpty()) { + pw.println(); + pw.println(" Hiding System Alert Windows:"); + for (int i = mHidingNonSystemOverlayWindows.size() - 1; i >= 0; i--) { + final WindowState w = mHidingNonSystemOverlayWindows.get(i); + pw.print(" #"); pw.print(i); pw.print(' '); + pw.print(w); + if (dumpAll) { + pw.println(":"); + w.dump(pw, " ", true); + } else { + pw.println(); + } + } + } if (mPendingRemove.size() > 0) { pw.println(); pw.println(" Remove pending for:"); @@ -7404,11 +7434,6 @@ public class WindowManagerService extends IWindowManager.Stub return WindowManagerService.this.isKeyguardLocked(); } - @Override - public boolean isKeyguardGoingAway() { - return WindowManagerService.this.mKeyguardGoingAway; - } - @Override public boolean isKeyguardShowingAndNotOccluded() { return WindowManagerService.this.isKeyguardShowingAndNotOccluded(); @@ -7650,4 +7675,28 @@ public class WindowManagerService extends IWindowManager.Stub boolean hasWideColorGamutSupport() { return mHasWideColorGamutSupport; } + + void updateNonSystemOverlayWindowsVisibilityIfNeeded(WindowState win, boolean surfaceShown) { + if (!win.hideNonSystemOverlayWindowsWhenVisible()) { + return; + } + final boolean systemAlertWindowsHidden = !mHidingNonSystemOverlayWindows.isEmpty(); + if (surfaceShown) { + if (!mHidingNonSystemOverlayWindows.contains(win)) { + mHidingNonSystemOverlayWindows.add(win); + } + } else { + mHidingNonSystemOverlayWindows.remove(win); + } + + final boolean hideSystemAlertWindows = !mHidingNonSystemOverlayWindows.isEmpty(); + + if (systemAlertWindowsHidden == hideSystemAlertWindows) { + return; + } + + mRoot.forAllWindows((w) -> { + w.setForceHideNonSystemOverlayWindowIfNeeded(hideSystemAlertWindows); + }, false /* traverseTopToBottom */); + } } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 96582fc100586c251eb7ce2ed60c0b2cdc7f4b83..77a8fec7241b62ee073b872ef9099541be19d5f3 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -46,6 +46,7 @@ import static android.view.WindowManager.LayoutParams.FORMAT_CHANGED; import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW; import static android.view.WindowManager.LayoutParams.MATCH_PARENT; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW; +import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_WILL_NOT_REPLACE_ON_RELAUNCH; @@ -59,7 +60,9 @@ import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; +import static android.view.WindowManager.LayoutParams.TYPE_TOAST; import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; +import static android.view.WindowManager.LayoutParams.isSystemAlertWindowType; import static android.view.WindowManagerGlobal.RELAYOUT_RES_DRAG_RESIZING_DOCKED; import static android.view.WindowManagerGlobal.RELAYOUT_RES_DRAG_RESIZING_FREEFORM; import static android.view.WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME; @@ -208,6 +211,8 @@ class WindowState extends WindowContainer implements WindowManagerP boolean mPolicyVisibilityAfterAnim = true; private boolean mAppOpVisibility = true; boolean mPermanentlyHidden; // the window should never be shown again + // This is a non-system overlay window that is currently force hidden. + private boolean mForceHideNonSystemOverlayWindow; boolean mAppFreezing; boolean mHidden; // Used to determine if to show child windows. boolean mWallpaperVisible; // for wallpaper, what was last vis report? @@ -238,7 +243,7 @@ class WindowState extends WindowContainer implements WindowManagerP * We'll send configuration to client only if it is different from the last applied one and * client won't perform unnecessary updates. */ - private final Configuration mLastReportedConfiguration = new Configuration(); + private final MergedConfiguration mLastReportedConfiguration = new MergedConfiguration(); /** * Actual position of the surface shown on-screen (may be modified by animation). These are @@ -729,6 +734,11 @@ class WindowState extends WindowContainer implements WindowManagerP return mOwnerCanAddInternalSystemWindow; } + @Override + public boolean canAcquireSleepToken() { + return mSession.mCanAcquireSleepToken; + } + /** * Subtracts the insets calculated by intersecting {@param layoutFrame} with {@param insetFrame} * from {@param frame}. In other words, it applies the insets that would result if @@ -1231,7 +1241,7 @@ class WindowState extends WindowContainer implements WindowManagerP // this is not necessarily what the client has processed yet. Find a // better indicator consistent with the client. return (mOrientationChanging || (isVisible() - && getConfiguration().orientation != mLastReportedConfiguration.orientation)) + && getConfiguration().orientation != getLastReportedConfiguration().orientation)) && !mSeamlesslyRotated && !mOrientationChangeTimedOut; } @@ -1488,7 +1498,12 @@ class WindowState extends WindowContainer implements WindowManagerP final boolean exiting = exitingSelf || mDestroying || appExiting; final boolean translucent = mAttrs.alpha == 0.0f; - return shown && !exiting && !translucent; + + // If we are entering with a dummy animation, avoid affecting SystemUI flags until the + // transition is starting. + final boolean enteringWithDummyAnimation = + mWinAnimator.isDummyAnimation() && mWinAnimator.mShownAlpha == 0f; + return shown && !exiting && !translucent && !enteringWithDummyAnimation; } /** @@ -1706,7 +1721,7 @@ class WindowState extends WindowContainer implements WindowManagerP final boolean adjustedForMinimizedDockOrIme = task != null && (task.mStack.isAdjustedForMinimizedDockedStack() || task.mStack.isAdjustedForIme()); - if (mService.okToAnimate() + if (mToken.okToAnimate() && (mAttrs.privateFlags & PRIVATE_FLAG_NO_MOVE_ANIMATION) == 0 && !isDragResizing() && !adjustedForMinimizedDockOrIme && (task == null || getTask().mStack.hasMovementAnimations()) @@ -1754,7 +1769,7 @@ class WindowState extends WindowContainer implements WindowManagerP /** Returns true if last applied config was not yet requested by client. */ boolean isConfigChanged() { - return !mLastReportedConfiguration.equals(getConfiguration()); + return !getLastReportedConfiguration().equals(getConfiguration()); } void onWindowReplacementTimeout() { @@ -1875,7 +1890,7 @@ class WindowState extends WindowContainer implements WindowManagerP // First, see if we need to run an animation. If we do, we have to hold off on removing the // window until the animation is done. If the display is frozen, just remove immediately, // since the animation wouldn't be seen. - if (mHasSurface && mService.okToAnimate()) { + if (mHasSurface && mToken.okToAnimate()) { if (mWillReplaceWindow) { // This window is going to be replaced. We need to keep it around until the new one // gets added, then we will get rid of this one. @@ -2310,7 +2325,7 @@ class WindowState extends WindowContainer implements WindowManagerP mLayoutNeeded = true; } - if (isDrawnLw() && mService.okToAnimate()) { + if (isDrawnLw() && mToken.okToAnimate()) { mWinAnimator.applyEnterAnimationLocked(); } } @@ -2321,8 +2336,16 @@ class WindowState extends WindowContainer implements WindowManagerP outConfiguration.setConfiguration(globalConfig, overrideConfig); } - void setReportedConfiguration(MergedConfiguration config) { - mLastReportedConfiguration.setTo(config.getMergedConfiguration()); + void setLastReportedMergedConfiguration(MergedConfiguration config) { + mLastReportedConfiguration.setTo(config); + } + + void getLastReportedMergedConfiguration(MergedConfiguration config) { + config.setTo(mLastReportedConfiguration); + } + + private Configuration getLastReportedConfiguration() { + return mLastReportedConfiguration.getMergedConfiguration(); } void adjustStartingWindowFlags() { @@ -2454,6 +2477,10 @@ class WindowState extends WindowContainer implements WindowManagerP // to handle their windows being removed from under them. return false; } + if (mForceHideNonSystemOverlayWindow) { + // This is an alert window that is currently force hidden. + return false; + } if (mPolicyVisibility && mPolicyVisibilityAfterAnim) { // Already showing. return false; @@ -2462,7 +2489,7 @@ class WindowState extends WindowContainer implements WindowManagerP if (doAnimation) { if (DEBUG_VISIBILITY) Slog.v(TAG, "doAnimation: mPolicyVisibility=" + mPolicyVisibility + " mAnimation=" + mWinAnimator.mAnimation); - if (!mService.okToAnimate()) { + if (!mToken.okToAnimate()) { doAnimation = false; } else if (mPolicyVisibility && mWinAnimator.mAnimation == null) { // Check for the case where we are currently visible and @@ -2492,7 +2519,7 @@ class WindowState extends WindowContainer implements WindowManagerP boolean hideLw(boolean doAnimation, boolean requestAnim) { if (doAnimation) { - if (!mService.okToAnimate()) { + if (!mToken.okToAnimate()) { doAnimation = false; } } @@ -2530,6 +2557,22 @@ class WindowState extends WindowContainer implements WindowManagerP return true; } + void setForceHideNonSystemOverlayWindowIfNeeded(boolean forceHide) { + if (mOwnerCanAddInternalSystemWindow + || (!isSystemAlertWindowType(mAttrs.type) && mAttrs.type != TYPE_TOAST)) { + return; + } + if (mForceHideNonSystemOverlayWindow == forceHide) { + return; + } + mForceHideNonSystemOverlayWindow = forceHide; + if (forceHide) { + hideLw(true /* doAnimation */, true /* requestAnim */); + } else { + showLw(true /* doAnimation */, true /* requestAnim */); + } + } + public void setAppOpVisibilityLw(boolean state) { if (mAppOpVisibility != state) { mAppOpVisibility = state; @@ -3092,7 +3135,7 @@ class WindowState extends WindowContainer implements WindowManagerP new MergedConfiguration(mService.mRoot.getConfiguration(), getMergedOverrideConfiguration()); - setReportedConfiguration(mergedConfiguration); + setLastReportedMergedConfiguration(mergedConfiguration); if (DEBUG_ORIENTATION && mWinAnimator.mDrawState == DRAW_PENDING) Slog.i(TAG, "Resizing " + this + " WITH DRAW PENDING"); @@ -3424,7 +3467,7 @@ class WindowState extends WindowContainer implements WindowManagerP pw.println(Integer.toHexString(mSystemUiVisibility)); } if (!mPolicyVisibility || !mPolicyVisibilityAfterAnim || !mAppOpVisibility - || isParentWindowHidden()|| mPermanentlyHidden) { + || isParentWindowHidden()|| mPermanentlyHidden || mForceHideNonSystemOverlayWindow) { pw.print(prefix); pw.print("mPolicyVisibility="); pw.print(mPolicyVisibility); pw.print(" mPolicyVisibilityAfterAnim="); @@ -3432,7 +3475,9 @@ class WindowState extends WindowContainer implements WindowManagerP pw.print(" mAppOpVisibility="); pw.print(mAppOpVisibility); pw.print(" parentHidden="); pw.print(isParentWindowHidden()); - pw.print(" mPermanentlyHidden="); pw.println(mPermanentlyHidden); + pw.print(" mPermanentlyHidden="); pw.print(mPermanentlyHidden); + pw.print(" mForceHideNonSystemOverlayWindow="); pw.println( + mForceHideNonSystemOverlayWindow); } if (!mRelayoutCalled || mLayoutNeeded) { pw.print(prefix); pw.print("mRelayoutCalled="); pw.print(mRelayoutCalled); @@ -3457,7 +3502,7 @@ class WindowState extends WindowContainer implements WindowManagerP } pw.print(prefix); pw.print("mFullConfiguration="); pw.println(getConfiguration()); pw.print(prefix); pw.print("mLastReportedConfiguration="); - pw.println(mLastReportedConfiguration); + pw.println(getLastReportedConfiguration()); } pw.print(prefix); pw.print("mHasSurface="); pw.print(mHasSurface); pw.print(" mShownPosition="); mShownPosition.printShortString(pw); @@ -3518,7 +3563,7 @@ class WindowState extends WindowContainer implements WindowManagerP pw.print(prefix); pw.print("mOrientationChanging="); pw.print(mOrientationChanging); pw.print(" configOrientationChanging="); - pw.print(mLastReportedConfiguration.orientation + pw.print(getLastReportedConfiguration().orientation != getConfiguration().orientation); pw.print(" mAppFreezing="); pw.print(mAppFreezing); pw.print(" mTurnOnScreen="); pw.print(mTurnOnScreen); @@ -3692,6 +3737,17 @@ class WindowState extends WindowContainer implements WindowManagerP && (mAttrs.privateFlags & PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME) != 0; } + /** + * Returns true if any window added by an application process that if of type + * {@link android.view.WindowManager.LayoutParams#TYPE_TOAST} or that requires that requires + * {@link android.app.AppOpsManager#OP_SYSTEM_ALERT_WINDOW} permission should be hidden when + * this window is visible. + */ + boolean hideNonSystemOverlayWindowsWhenVisible() { + return (mAttrs.privateFlags & PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS) != 0 + && mSession.mCanHideNonSystemOverlayWindows; + } + /** Returns the parent window if this is a child of another window, else null. */ WindowState getParentWindow() { // NOTE: We are not calling getParent() directly as the WindowState might be a child of a @@ -3934,6 +3990,9 @@ class WindowState extends WindowContainer implements WindowManagerP windowInfo.type = mAttrs.type; windowInfo.layer = mLayer; windowInfo.token = mClient.asBinder(); + if (mAppToken != null) { + windowInfo.activityToken = mAppToken.appToken.asBinder(); + } windowInfo.title = mAttrs.accessibilityTitle; windowInfo.accessibilityIdOfAnchor = mAttrs.accessibilityIdOfAnchor; windowInfo.focused = isFocused(); diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java index 86265c297b1b14a93c2bdd5f8c6f145f60baf4d2..64ac7ac90db2b9703fe37732692b70efdffc02c6 100644 --- a/services/core/java/com/android/server/wm/WindowStateAnimator.java +++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java @@ -369,7 +369,7 @@ class WindowStateAnimator { // we just started or just stopped animating by comparing mWasAnimating with isAnimationSet(). mWasAnimating = mAnimating; final DisplayContent displayContent = mWin.getDisplayContent(); - if (displayContent != null && mService.okToAnimate()) { + if (mWin.mToken.okToAnimate()) { // We will run animations as long as the display isn't frozen. if (mWin.isDrawnLw() && mAnimation != null) { @@ -1646,15 +1646,25 @@ class WindowStateAnimator { // hidden while the screen is turning off. // TODO(b/63773439): These cases should be eliminated, though we probably still // want to process mTurnOnScreen in this way for clarity. - if (mWin.mTurnOnScreen && mWin.mAppToken.canTurnScreenOn()) { + if (mWin.mTurnOnScreen && + (mWin.mAppToken == null || mWin.mAppToken.canTurnScreenOn())) { if (DEBUG_VISIBILITY) Slog.v(TAG, "Show surface turning screen on: " + mWin); mWin.mTurnOnScreen = false; // The window should only turn the screen on once per resume, but // prepareSurfaceLocked can be called multiple times. Set canTurnScreenOn to // false so the window doesn't turn the screen on again during this resume. - mWin.mAppToken.setCanTurnScreenOn(false); - mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + if (mWin.mAppToken != null) { + mWin.mAppToken.setCanTurnScreenOn(false); + } + + // We do not add {@code SET_TURN_ON_SCREEN} when the screen is already + // interactive as the value may persist until the next animation, which could + // potentially occurring while turning off the screen. This would lead to the + // screen incorrectly turning back on. + if (!mService.mPowerManager.isInteractive()) { + mAnimator.mBulkUpdateParams |= SET_TURN_ON_SCREEN; + } } } if (hasSurface()) { @@ -1812,7 +1822,7 @@ class WindowStateAnimator { // artifacts when we unfreeze the display if some different animation // is running. Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "WSA#applyAnimationLocked"); - if (mService.okToAnimate()) { + if (mWin.mToken.okToAnimate()) { int anim = mPolicy.selectAnimationLw(mWin, transit); int attr = -1; Animation a = null; diff --git a/services/core/java/com/android/server/wm/WindowSurfaceController.java b/services/core/java/com/android/server/wm/WindowSurfaceController.java index 4819c0f35bdab91b49127d2e3e6d70d1dfd86766..110d5cb90f459451dd0f891834968fcbc9d385c0 100644 --- a/services/core/java/com/android/server/wm/WindowSurfaceController.java +++ b/services/core/java/com/android/server/wm/WindowSurfaceController.java @@ -24,10 +24,8 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_SURFACE_TRACE import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; -import static android.view.Surface.SCALING_MODE_FREEZE; import static android.view.Surface.SCALING_MODE_SCALE_TO_WINDOW; -import android.graphics.PixelFormat; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; @@ -513,6 +511,8 @@ class WindowSurfaceController { void setShown(boolean surfaceShown) { mSurfaceShown = surfaceShown; + mService.updateNonSystemOverlayWindowsVisibilityIfNeeded(mAnimator.mWin, surfaceShown); + if (mWindowSession != null) { mWindowSession.onWindowSurfaceVisibilityChanged(this, mSurfaceShown, mWindowType); } diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index e3033c9c01a8b3ad854684b6f9ffede308c58fe5..48d1618c1c915cee8735e3672ec6b19a9fed5614 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -288,4 +288,12 @@ class WindowToken extends WindowContainer { String getName() { return toString(); } + + boolean okToDisplay() { + return mDisplayContent != null && mDisplayContent.okToDisplay(); + } + + boolean okToAnimate() { + return mDisplayContent != null && mDisplayContent.okToAnimate(); + } } diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk index e2a82b74e283bef84a57830303e786c833475d91..bf9f941ad9a361bc5b3502bb41ce47d58dae821c 100644 --- a/services/core/jni/Android.mk +++ b/services/core/jni/Android.mk @@ -5,8 +5,13 @@ LOCAL_REL_DIR := core/jni LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter LOCAL_SRC_FILES += \ - $(LOCAL_REL_DIR)/JavaRef.cpp \ - $(LOCAL_REL_DIR)/NativeCallbackThread.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/JavaRef.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/NativeCallbackThread.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/BroadcastRadioService.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/Tuner.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/TunerCallback.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/convert.cpp \ + $(LOCAL_REL_DIR)/BroadcastRadio/regions.cpp \ $(LOCAL_REL_DIR)/com_android_server_AlarmManagerService.cpp \ $(LOCAL_REL_DIR)/com_android_server_am_BatteryStatsService.cpp \ $(LOCAL_REL_DIR)/com_android_server_connectivity_Vpn.cpp \ @@ -22,10 +27,6 @@ LOCAL_SRC_FILES += \ $(LOCAL_REL_DIR)/com_android_server_location_GnssLocationProvider.cpp \ $(LOCAL_REL_DIR)/com_android_server_locksettings_SyntheticPasswordManager.cpp \ $(LOCAL_REL_DIR)/com_android_server_power_PowerManagerService.cpp \ - $(LOCAL_REL_DIR)/com_android_server_radio_RadioService.cpp \ - $(LOCAL_REL_DIR)/com_android_server_radio_Tuner.cpp \ - $(LOCAL_REL_DIR)/com_android_server_radio_Tuner_TunerCallback.cpp \ - $(LOCAL_REL_DIR)/com_android_server_radio_convert.cpp \ $(LOCAL_REL_DIR)/com_android_server_SerialService.cpp \ $(LOCAL_REL_DIR)/com_android_server_storage_AppFuseBridge.cpp \ $(LOCAL_REL_DIR)/com_android_server_SystemServer.cpp \ @@ -57,6 +58,7 @@ LOCAL_C_INCLUDES += \ LOCAL_SHARED_LIBRARIES += \ libandroid_runtime \ libandroidfw \ + libaudioclient \ libbase \ libappfuse \ libbinder \ @@ -107,4 +109,6 @@ LOCAL_SHARED_LIBRARIES += \ android.frameworks.schedulerservice@1.0 \ android.frameworks.sensorservice@1.0 \ -LOCAL_STATIC_LIBRARIES += libscrypt_static +LOCAL_STATIC_LIBRARIES += \ + android.hardware.broadcastradio@1.1-utils-lib \ + libscrypt_static \ diff --git a/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp b/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b3817db1d203750c84a5938651fcf1f9589b1bf0 --- /dev/null +++ b/services/core/jni/BroadcastRadio/BroadcastRadioService.cpp @@ -0,0 +1,277 @@ +/** + * 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. + */ + +#define LOG_TAG "BroadcastRadioService.jni" +#define LOG_NDEBUG 0 + +#include "BroadcastRadioService.h" + +#include "Tuner.h" +#include "convert.h" + +#include +#include +#include +#include +#include +#include +#include + +namespace android { +namespace server { +namespace BroadcastRadio { +namespace BroadcastRadioService { + +using std::lock_guard; +using std::mutex; + +using hardware::Return; +using hardware::hidl_string; +using hardware::hidl_vec; + +namespace V1_0 = hardware::broadcastradio::V1_0; +namespace V1_1 = hardware::broadcastradio::V1_1; + +using V1_0::Class; +using V1_0::Result; + +using V1_0::BandConfig; +using V1_0::ProgramInfo; +using V1_0::MetaData; +using V1_0::ITuner; + +static mutex gContextMutex; + +static struct { + struct { + jclass clazz; + jmethodID cstor; + jmethodID add; + } ArrayList; + struct { + jclass clazz; + jmethodID cstor; + } Tuner; +} gjni; + +struct ServiceContext { + ServiceContext() {} + + std::vector> mModules; + +private: + DISALLOW_COPY_AND_ASSIGN(ServiceContext); +}; + +const std::vector gAllClasses = { + Class::AM_FM, + Class::SAT, + Class::DT, +}; + + +/** + * Always lock gContextMutex when using native context. + */ +static ServiceContext& getNativeContext(jlong nativeContextHandle) { + auto nativeContext = reinterpret_cast(nativeContextHandle); + LOG_ALWAYS_FATAL_IF(nativeContext == nullptr, "Native context not initialized"); + return *nativeContext; +} + +static jlong nativeInit(JNIEnv *env, jobject obj) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + + auto nativeContext = new ServiceContext(); + static_assert(sizeof(jlong) >= sizeof(nativeContext), "jlong is smaller than a pointer"); + return reinterpret_cast(nativeContext); +} + +static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + + auto ctx = reinterpret_cast(nativeContext); + delete ctx; +} + +static jobject nativeLoadModules(JNIEnv *env, jobject obj, jlong nativeContext) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + // Get list of registered HIDL HAL implementations. + auto manager = hardware::defaultServiceManager(); + hidl_vec services; + if (manager == nullptr) { + ALOGE("Can't reach service manager, using default service implementation only"); + services = std::vector({ "default" }); + } else { + manager->listByInterface(V1_0::IBroadcastRadioFactory::descriptor, + [&services](const hidl_vec ®istered) { + services = registered; + }); + } + + // Scan provided list for actually implemented modules. + ctx.mModules.clear(); + auto jModules = make_javaref(env, env->NewObject(gjni.ArrayList.clazz, gjni.ArrayList.cstor)); + for (auto&& serviceName : services) { + ALOGV("checking service: %s", serviceName.c_str()); + + auto factory = V1_0::IBroadcastRadioFactory::getService(serviceName); + if (factory == nullptr) { + ALOGE("can't load service %s", serviceName.c_str()); + continue; + } + + // Second level of scanning - that's unfortunate. + for (auto&& clazz : gAllClasses) { + sp module10 = nullptr; + sp module11 = nullptr; + factory->connectModule(clazz, [&](Result res, const sp& module) { + if (res == Result::OK) { + module10 = module; + module11 = V1_1::IBroadcastRadio::castFrom(module).withDefault(nullptr); + } else if (res != Result::INVALID_ARGUMENTS) { + ALOGE("couldn't load %s:%s module", + serviceName.c_str(), V1_0::toString(clazz).c_str()); + } + }); + if (module10 == nullptr) continue; + + auto idx = ctx.mModules.size(); + ctx.mModules.push_back(module10); + ALOGI("loaded broadcast radio module %zu: %s:%s", + idx, serviceName.c_str(), V1_0::toString(clazz).c_str()); + + JavaRef jModule = nullptr; + Result halResult = Result::OK; + Return hidlResult; + if (module11 != nullptr) { + hidlResult = module11->getProperties_1_1([&](const V1_1::Properties& properties) { + jModule = convert::ModulePropertiesFromHal(env, properties, idx, serviceName); + }); + } else { + hidlResult = module10->getProperties([&](Result result, + const V1_0::Properties& properties) { + halResult = result; + if (result != Result::OK) return; + jModule = convert::ModulePropertiesFromHal(env, properties, idx, serviceName); + }); + } + if (convert::ThrowIfFailed(env, hidlResult, halResult)) return nullptr; + + env->CallBooleanMethod(jModules.get(), gjni.ArrayList.add, jModule.get()); + } + } + + return jModules.release(); +} + +static jobject nativeOpenTuner(JNIEnv *env, jobject obj, long nativeContext, jint moduleId, + jobject bandConfig, bool withAudio, jobject callback) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + if (callback == nullptr) { + ALOGE("Callback is empty"); + return nullptr; + } + + if (moduleId < 0 || static_cast(moduleId) >= ctx.mModules.size()) { + ALOGE("Invalid module ID: %d", moduleId); + return nullptr; + } + auto module = ctx.mModules[moduleId]; + + HalRevision halRev; + if (V1_1::IBroadcastRadio::castFrom(module).withDefault(nullptr) != nullptr) { + ALOGI("Opening tuner %d with broadcast radio HAL 1.1", moduleId); + halRev = HalRevision::V1_1; + } else { + ALOGI("Opening tuner %d with broadcast radio HAL 1.0", moduleId); + halRev = HalRevision::V1_0; + } + + Region region; + BandConfig bandConfigHal = convert::BandConfigToHal(env, bandConfig, region); + + auto tuner = make_javaref(env, env->NewObject(gjni.Tuner.clazz, gjni.Tuner.cstor, + callback, halRev, region, withAudio, bandConfigHal.type)); + if (tuner == nullptr) { + ALOGE("Unable to create new tuner object."); + return nullptr; + } + + auto tunerCb = Tuner::getNativeCallback(env, tuner); + Result halResult; + sp halTuner = nullptr; + + auto hidlResult = module->openTuner(bandConfigHal, withAudio, tunerCb, + [&](Result result, const sp& tuner) { + halResult = result; + halTuner = tuner; + }); + if (!hidlResult.isOk() || halResult != Result::OK || halTuner == nullptr) { + ALOGE("Couldn't open tuner"); + ALOGE_IF(hidlResult.isOk(), "halResult = %d", halResult); + ALOGE_IF(!hidlResult.isOk(), "hidlResult = %s", hidlResult.description().c_str()); + return nullptr; + } + + Tuner::assignHalInterfaces(env, tuner, module, halTuner); + ALOGD("Opened tuner %p", halTuner.get()); + return tuner.release(); +} + +static const JNINativeMethod gRadioServiceMethods[] = { + { "nativeInit", "()J", (void*)nativeInit }, + { "nativeFinalize", "(J)V", (void*)nativeFinalize }, + { "nativeLoadModules", "(J)Ljava/util/List;", (void*)nativeLoadModules }, + { "nativeOpenTuner", "(JILandroid/hardware/radio/RadioManager$BandConfig;Z" + "Landroid/hardware/radio/ITunerCallback;)Lcom/android/server/broadcastradio/Tuner;", + (void*)nativeOpenTuner }, +}; + +} // namespace BroadcastRadioService +} // namespace BroadcastRadio +} // namespace server + +void register_android_server_broadcastradio_BroadcastRadioService(JNIEnv *env) { + using namespace server::BroadcastRadio::BroadcastRadioService; + + register_android_server_broadcastradio_convert(env); + + auto tunerClass = FindClassOrDie(env, "com/android/server/broadcastradio/Tuner"); + gjni.Tuner.clazz = MakeGlobalRefOrDie(env, tunerClass); + gjni.Tuner.cstor = GetMethodIDOrDie(env, tunerClass, "", + "(Landroid/hardware/radio/ITunerCallback;IIZI)V"); + + auto arrayListClass = FindClassOrDie(env, "java/util/ArrayList"); + gjni.ArrayList.clazz = MakeGlobalRefOrDie(env, arrayListClass); + gjni.ArrayList.cstor = GetMethodIDOrDie(env, arrayListClass, "", "()V"); + gjni.ArrayList.add = GetMethodIDOrDie(env, arrayListClass, "add", "(Ljava/lang/Object;)Z"); + + auto res = jniRegisterNativeMethods(env, + "com/android/server/broadcastradio/BroadcastRadioService", + gRadioServiceMethods, NELEM(gRadioServiceMethods)); + LOG_ALWAYS_FATAL_IF(res < 0, "Unable to register native methods."); +} + +} // namespace android diff --git a/services/core/jni/BroadcastRadio/BroadcastRadioService.h b/services/core/jni/BroadcastRadio/BroadcastRadioService.h new file mode 100644 index 0000000000000000000000000000000000000000..df7af893214974870e27cfcc4a8d6883becba6c4 --- /dev/null +++ b/services/core/jni/BroadcastRadio/BroadcastRadioService.h @@ -0,0 +1,28 @@ +/** + * 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. + */ + +#ifndef _ANDROID_SERVER_BROADCASTRADIO_BROADCASTRADIOSERVICE_H +#define _ANDROID_SERVER_BROADCASTRADIO_BROADCASTRADIOSERVICE_H + +#include + +namespace android { + +void register_android_server_broadcastradio_BroadcastRadioService(JNIEnv *env); + +} // namespace android + +#endif // _ANDROID_SERVER_BROADCASTRADIO_BROADCASTRADIOSERVICE_H diff --git a/services/core/jni/JavaRef.cpp b/services/core/jni/BroadcastRadio/JavaRef.cpp similarity index 79% rename from services/core/jni/JavaRef.cpp rename to services/core/jni/BroadcastRadio/JavaRef.cpp index ad07afafbda001fa9a7cb3323454b6a6f0ba583a..655ffc7078c64c6514a99ae2bc4610db036b92e1 100644 --- a/services/core/jni/JavaRef.cpp +++ b/services/core/jni/BroadcastRadio/JavaRef.cpp @@ -14,17 +14,14 @@ * limitations under the License. */ -#define LOG_TAG "JavaRef" -//#define LOG_NDEBUG 0 - #include "JavaRef.h" -#include +#include namespace android { -EnvWrapper::EnvWrapper(JNIEnv *env) : mEnv(env) { - ALOGE_IF(env == nullptr, "Environment is a nullptr"); +JavaRef make_javastr(JNIEnv *env, const std::string &str) { + return make_javaref(env, env->NewStringUTF(str.c_str())); } } // namespace android diff --git a/services/core/jni/JavaRef.h b/services/core/jni/BroadcastRadio/JavaRef.h similarity index 82% rename from services/core/jni/JavaRef.h rename to services/core/jni/BroadcastRadio/JavaRef.h index 8a572e273d0bdfe360231419320e6471381a0551..1bf146b8485901ae7d9d5d13a41de84cc7723882 100644 --- a/services/core/jni/JavaRef.h +++ b/services/core/jni/BroadcastRadio/JavaRef.h @@ -37,20 +37,7 @@ JavaRef make_javaref(JNIEnv *env, T ref) { }); } -class EnvWrapper { -public: - EnvWrapper(JNIEnv *env); - - template - JavaRef operator() (T ref) const { - return make_javaref(mEnv, ref); - } - -private: - JNIEnv *mEnv; - - DISALLOW_COPY_AND_ASSIGN(EnvWrapper); -}; +JavaRef make_javastr(JNIEnv *env, const std::string &str); } // namespace android diff --git a/services/core/jni/NativeCallbackThread.cpp b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp similarity index 58% rename from services/core/jni/NativeCallbackThread.cpp rename to services/core/jni/BroadcastRadio/NativeCallbackThread.cpp index 7d668e3183a7feb26c2ad460adf5ba1e500146dd..81d46f39d84ac0cc883b96a13d39517db7479df5 100644 --- a/services/core/jni/NativeCallbackThread.cpp +++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.cpp @@ -23,47 +23,44 @@ namespace android { -NativeCallbackThread::NativeCallbackThread(JavaVM *vm) : mExitting(false), mvm(vm) { - auto res = pthread_create(&mThread, nullptr, main, this); - if (res != 0) { - ALOGE("Couldn't start NativeCallbackThread"); - mThread = 0; - return; - } +using std::lock_guard; +using std::mutex; +using std::unique_lock; + +NativeCallbackThread::NativeCallbackThread(JavaVM *vm) : mvm(vm), mExiting(false), + mThread(&NativeCallbackThread::threadLoop, this) { ALOGD("Started native callback thread %p", this); } NativeCallbackThread::~NativeCallbackThread() { - ALOGV("~NativeCallbackThread %p", this); + ALOGV("%s %p", __func__, this); stop(); } -void* NativeCallbackThread::main(void *args) { - auto self = reinterpret_cast(args); - self->main(); - return nullptr; -} - -void NativeCallbackThread::main() { - ALOGV("NativeCallbackThread::main()"); +void NativeCallbackThread::threadLoop() { + ALOGV("%s", __func__); JNIEnv *env = nullptr; JavaVMAttachArgs aargs = {JNI_VERSION_1_4, "NativeCallbackThread", nullptr}; if (mvm->AttachCurrentThread(&env, &aargs) != JNI_OK || env == nullptr) { ALOGE("Couldn't attach thread"); + mExiting = true; return; } - while (!mExitting) { - ALOGV("Waiting for task..."); + while (true) { Task task; { - AutoMutex _l(mQueueMutex); - auto res = mQueueCond.wait(mQueueMutex); - ALOGE_IF(res != 0, "Wait failed: %d", res); - if (mExitting || res != 0) break; + unique_lock lk(mQueueMutex); + + if (mExiting) break; + if (mQueue.empty()) { + ALOGV("Waiting for task..."); + mQueueCond.wait(lk); + if (mExiting) break; + if (mQueue.empty()) continue; + } - if (mQueue.empty()) continue; task = mQueue.front(); mQueue.pop(); } @@ -81,36 +78,42 @@ void NativeCallbackThread::main() { ALOGE_IF(res != JNI_OK, "Couldn't detach thread"); ALOGV("Native callback thread %p finished", this); + ALOGD_IF(!mQueue.empty(), "Skipped execution of %zu tasks", mQueue.size()); } void NativeCallbackThread::enqueue(const Task &task) { - AutoMutex _l(mQueueMutex); + lock_guard lk(mQueueMutex); - if (mThread == 0 || mExitting) { + if (mExiting) { ALOGW("Callback thread %p is not serving calls", this); return; } + ALOGV("Adding task to the queue..."); mQueue.push(task); - mQueueCond.signal(); + mQueueCond.notify_one(); } void NativeCallbackThread::stop() { - ALOGV("stop() %p", this); + ALOGV("%s %p", __func__, this); { - AutoMutex _l(mQueueMutex); + lock_guard lk(mQueueMutex); - if (mThread == 0 || mExitting) return; + if (mExiting) return; - mExitting = true; - mQueueCond.signal(); + mExiting = true; + mQueueCond.notify_one(); } - auto ret = pthread_join(mThread, nullptr); - ALOGE_IF(ret != 0, "Couldn't join thread: %d", ret); - - ALOGD("Stopped native callback thread %p", this); + if (mThread.get_id() == std::thread::id()) { + // you can't self-join a thread, but it's ok when calling from our sub-task + ALOGD("About to stop native callback thread %p", this); + mThread.detach(); + } else { + mThread.join(); + ALOGD("Stopped native callback thread %p", this); + } } } // namespace android diff --git a/services/core/jni/NativeCallbackThread.h b/services/core/jni/BroadcastRadio/NativeCallbackThread.h similarity index 83% rename from services/core/jni/NativeCallbackThread.h rename to services/core/jni/BroadcastRadio/NativeCallbackThread.h index 4e03b119e834e24af78b4ce93c3aab87ccd26402..53990be065354275aa7a3c1b20e6a28d08173c00 100644 --- a/services/core/jni/NativeCallbackThread.h +++ b/services/core/jni/BroadcastRadio/NativeCallbackThread.h @@ -20,26 +20,23 @@ #include #include #include -#include #include -#include -#include +#include namespace android { class NativeCallbackThread { typedef std::function Task; - pthread_t mThread; - Mutex mQueueMutex; - Condition mQueueCond; - std::atomic mExitting; - JavaVM *mvm; std::queue mQueue; - static void* main(void *args); - void main(); + std::mutex mQueueMutex; + std::condition_variable mQueueCond; + std::atomic mExiting; + std::thread mThread; + + void threadLoop(); DISALLOW_COPY_AND_ASSIGN(NativeCallbackThread); diff --git a/services/core/jni/com_android_server_radio_Tuner.cpp b/services/core/jni/BroadcastRadio/Tuner.cpp similarity index 57% rename from services/core/jni/com_android_server_radio_Tuner.cpp rename to services/core/jni/BroadcastRadio/Tuner.cpp index b92136aedd03fb39939a1710eef081da25378999..e1ade4dc02da76408f02703d435cb9e03e60c104 100644 --- a/services/core/jni/com_android_server_radio_Tuner.cpp +++ b/services/core/jni/BroadcastRadio/Tuner.cpp @@ -14,37 +14,45 @@ * limitations under the License. */ -#define LOG_TAG "radio.Tuner.jni" +#define LOG_TAG "BroadcastRadioService.Tuner.jni" #define LOG_NDEBUG 0 -#include "com_android_server_radio_Tuner.h" +#include "Tuner.h" -#include "com_android_server_radio_convert.h" -#include "com_android_server_radio_Tuner_TunerCallback.h" +#include "convert.h" +#include "TunerCallback.h" #include +#include +#include #include +#include +#include #include -#include namespace android { namespace server { -namespace radio { +namespace BroadcastRadio { namespace Tuner { +using std::lock_guard; +using std::mutex; + using hardware::Return; +using hardware::hidl_death_recipient; using hardware::hidl_vec; namespace V1_0 = hardware::broadcastradio::V1_0; namespace V1_1 = hardware::broadcastradio::V1_1; +using V1_0::Band; using V1_0::BandConfig; using V1_0::MetaData; using V1_0::Result; using V1_1::ITunerCallback; using V1_1::ProgramListResult; -static Mutex gContextMutex; +static mutex gContextMutex; static struct { struct { @@ -59,12 +67,30 @@ static struct { } Tuner; } gjni; +static const char* const kAudioDeviceName = "Radio tuner source"; + +class HalDeathRecipient : public hidl_death_recipient { + wp mTunerCallback; + +public: + HalDeathRecipient(wp tunerCallback):mTunerCallback(tunerCallback) {} + + virtual void serviceDied(uint64_t cookie, const wp& who); +}; + struct TunerContext { TunerContext() {} + bool mIsClosed = false; HalRevision mHalRev; + bool mWithAudio; + bool mIsAudioConnected = false; + Band mBand; + wp mHalModule; + wp mHalModule11; sp mHalTuner; sp mHalTuner11; + sp mHalDeathRecipient; private: DISALLOW_COPY_AND_ASSIGN(TunerContext); @@ -83,47 +109,95 @@ static TunerContext& getNativeContext(JNIEnv *env, JavaRef const &jTune return getNativeContext(env->GetLongField(jTuner.get(), gjni.Tuner.nativeContext)); } -static jlong nativeInit(JNIEnv *env, jobject obj, jint halRev) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); +static jlong nativeInit(JNIEnv *env, jobject obj, jint halRev, bool withAudio, jint band) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); auto ctx = new TunerContext(); ctx->mHalRev = static_cast(halRev); + ctx->mWithAudio = withAudio; + ctx->mBand = static_cast(band); static_assert(sizeof(jlong) >= sizeof(ctx), "jlong is smaller than a pointer"); return reinterpret_cast(ctx); } static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); auto ctx = reinterpret_cast(nativeContext); delete ctx; } -void setHalTuner(JNIEnv *env, JavaRef const &jTuner, sp halTuner) { - ALOGV("setHalTuner(%p)", halTuner.get()); - ALOGE_IF(halTuner == nullptr, "HAL tuner is a nullptr"); +void HalDeathRecipient::serviceDied(uint64_t cookie __unused, + const wp& who __unused) { + ALOGW("HAL Tuner died unexpectedly"); + + auto tunerCallback = mTunerCallback.promote(); + if (tunerCallback == nullptr) return; + + tunerCallback->hardwareFailure(); +} - AutoMutex _l(gContextMutex); +// TODO(b/62713378): implement support for multiple tuners open at the same time +static void notifyAudioService(TunerContext& ctx, bool connected) { + if (!ctx.mWithAudio) return; + if (ctx.mIsAudioConnected == connected) return; + ctx.mIsAudioConnected = connected; + + ALOGD("Notifying AudioService about new state: %d", connected); + auto token = IPCThreadState::self()->clearCallingIdentity(); + AudioSystem::setDeviceConnectionState(AUDIO_DEVICE_IN_FM_TUNER, + connected ? AUDIO_POLICY_DEVICE_STATE_AVAILABLE : AUDIO_POLICY_DEVICE_STATE_UNAVAILABLE, + nullptr, kAudioDeviceName); + IPCThreadState::self()->restoreCallingIdentity(token); +} + +void assignHalInterfaces(JNIEnv *env, JavaRef const &jTuner, + sp halModule, sp halTuner) { + ALOGV("%s(%p)", __func__, halTuner.get()); + ALOGE_IF(halTuner == nullptr, "HAL tuner is a nullptr"); + lock_guard lk(gContextMutex); auto& ctx = getNativeContext(env, jTuner); + if (ctx.mIsClosed) { + ALOGD("Tuner was closed during initialization"); + // dropping the last reference will close HAL tuner + return; + } + if (ctx.mHalTuner != nullptr) { + ALOGE("HAL tuner is already set."); + return; + } + + ctx.mHalModule = halModule; + ctx.mHalModule11 = V1_1::IBroadcastRadio::castFrom(halModule).withDefault(nullptr); + ctx.mHalTuner = halTuner; ctx.mHalTuner11 = V1_1::ITuner::castFrom(halTuner).withDefault(nullptr); ALOGW_IF(ctx.mHalRev >= HalRevision::V1_1 && ctx.mHalTuner11 == nullptr, "Provided tuner does not implement 1.1 HAL"); + + ctx.mHalDeathRecipient = new HalDeathRecipient(getNativeCallback(env, jTuner)); + halTuner->linkToDeath(ctx.mHalDeathRecipient, 0); + + notifyAudioService(ctx, true); } -sp getHalTuner(jlong nativeContext) { - AutoMutex _l(gContextMutex); - auto tuner = getNativeContext(nativeContext).mHalTuner; +static sp getHalTuner(const TunerContext& ctx) { + auto tuner = ctx.mHalTuner; LOG_ALWAYS_FATAL_IF(tuner == nullptr, "HAL tuner is not open"); return tuner; } +sp getHalTuner(jlong nativeContext) { + lock_guard lk(gContextMutex); + return getHalTuner(getNativeContext(nativeContext)); +} + sp getHalTuner11(jlong nativeContext) { - AutoMutex _l(gContextMutex); + lock_guard lk(gContextMutex); return getNativeContext(nativeContext).mHalTuner11; } @@ -137,28 +211,47 @@ Region getRegion(JNIEnv *env, jobject obj) { } static void nativeClose(JNIEnv *env, jobject obj, jlong nativeContext) { - AutoMutex _l(gContextMutex); + lock_guard lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); - if (ctx.mHalTuner == nullptr) return; + + if (ctx.mIsClosed) return; + ctx.mIsClosed = true; + + if (ctx.mHalTuner == nullptr) { + ALOGI("Tuner closed during initialization"); + return; + } + ALOGI("Closing tuner %p", ctx.mHalTuner.get()); + + notifyAudioService(ctx, false); + + ctx.mHalTuner->unlinkToDeath(ctx.mHalDeathRecipient); + ctx.mHalDeathRecipient = nullptr; + ctx.mHalTuner11 = nullptr; ctx.mHalTuner = nullptr; } static void nativeSetConfiguration(JNIEnv *env, jobject obj, jlong nativeContext, jobject config) { - ALOGV("nativeSetConfiguration()"); - auto halTuner = getHalTuner(nativeContext); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + auto halTuner = getHalTuner(ctx); if (halTuner == nullptr) return; Region region_unused; BandConfig bandConfigHal = convert::BandConfigToHal(env, config, region_unused); - convert::ThrowIfFailed(env, halTuner->setConfiguration(bandConfigHal)); + if (convert::ThrowIfFailed(env, halTuner->setConfiguration(bandConfigHal))) return; + + ctx.mBand = bandConfigHal.type; } static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeContext, Region region) { - ALOGV("nativeSetConfiguration()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return nullptr; @@ -175,9 +268,17 @@ static jobject nativeGetConfiguration(JNIEnv *env, jobject obj, jlong nativeCont return convert::BandConfigFromHal(env, halConfig, region).release(); } +static void nativeSetMuted(JNIEnv *env, jobject obj, jlong nativeContext, bool mute) { + ALOGV("%s(%d)", __func__, mute); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + notifyAudioService(ctx, !mute); +} + static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext, bool directionDown, bool skipSubChannel) { - ALOGV("nativeStep()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; @@ -187,7 +288,7 @@ static void nativeStep(JNIEnv *env, jobject obj, jlong nativeContext, static void nativeScan(JNIEnv *env, jobject obj, jlong nativeContext, bool directionDown, bool skipSubChannel) { - ALOGV("nativeScan()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; @@ -195,27 +296,55 @@ static void nativeScan(JNIEnv *env, jobject obj, jlong nativeContext, convert::ThrowIfFailed(env, halTuner->scan(dir, skipSubChannel)); } -static void nativeTune(JNIEnv *env, jobject obj, jlong nativeContext, - jint channel, jint subChannel) { - ALOGV("nativeTune(%d, %d)", channel, subChannel); - auto halTuner = getHalTuner(nativeContext); - if (halTuner == nullptr) return; +static void nativeTune(JNIEnv *env, jobject obj, jlong nativeContext, jobject jSelector) { + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); - convert::ThrowIfFailed(env, halTuner->tune(channel, subChannel)); + auto halTuner10 = getHalTuner(ctx); + auto halTuner11 = ctx.mHalTuner11; + if (halTuner10 == nullptr) return; + + auto selector = convert::ProgramSelectorToHal(env, jSelector); + if (halTuner11 != nullptr) { + convert::ThrowIfFailed(env, halTuner11->tuneByProgramSelector(selector)); + } else { + uint32_t channel, subChannel; + if (!V1_1::utils::getLegacyChannel(selector, &channel, &subChannel)) { + jniThrowException(env, "java/lang/IllegalArgumentException", + "Can't tune to non-AM/FM channel with HAL<1.1"); + return; + } + convert::ThrowIfFailed(env, halTuner10->tune(channel, subChannel)); + } } static void nativeCancel(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeCancel()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return; convert::ThrowIfFailed(env, halTuner->cancel()); } +static void nativeCancelAnnouncement(JNIEnv *env, jobject obj, jlong nativeContext) { + ALOGV("%s", __func__); + auto halTuner = getHalTuner11(nativeContext); + if (halTuner == nullptr) { + ALOGI("cancelling announcements is not supported with HAL < 1.1"); + return; + } + + convert::ThrowIfFailed(env, halTuner->cancelAnnouncement()); +} + static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeGetProgramInformation()"); - auto halTuner10 = getHalTuner(nativeContext); - auto halTuner11 = getHalTuner11(nativeContext); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + auto halTuner10 = getHalTuner(ctx); + auto halTuner11 = ctx.mHalTuner11; if (halTuner10 == nullptr) return nullptr; JavaRef jInfo; @@ -233,7 +362,7 @@ static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativ const V1_0::ProgramInfo& info) { halResult = result; if (result != Result::OK) return; - jInfo = convert::ProgramInfoFromHal(env, info); + jInfo = convert::ProgramInfoFromHal(env, info, ctx.mBand); }); } @@ -243,7 +372,7 @@ static jobject nativeGetProgramInformation(JNIEnv *env, jobject obj, jlong nativ } static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeStartBackgroundScan()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { ALOGI("Background scan is not supported with HAL < 1.1"); @@ -256,9 +385,8 @@ static bool nativeStartBackgroundScan(JNIEnv *env, jobject obj, jlong nativeCont return !convert::ThrowIfFailed(env, halResult); } -static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContext, jstring jFilter) { - ALOGV("nativeGetProgramList()"); - EnvWrapper wrap(env); +static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContext, jobject jVendorFilter) { + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { ALOGI("Program list is not supported with HAL < 1.1"); @@ -267,13 +395,13 @@ static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContex JavaRef jList; ProgramListResult halResult = ProgramListResult::NOT_INITIALIZED; - auto filter = env->GetStringUTFChars(jFilter, nullptr); + auto filter = convert::VendorInfoToHal(env, jVendorFilter); auto hidlResult = halTuner->getProgramList(filter, [&](ProgramListResult result, const hidl_vec& programList) { halResult = result; if (halResult != ProgramListResult::OK) return; - jList = wrap(env->NewObject(gjni.ArrayList.clazz, gjni.ArrayList.cstor)); + jList = make_javaref(env, env->NewObject(gjni.ArrayList.clazz, gjni.ArrayList.cstor)); for (auto& program : programList) { auto jProgram = convert::ProgramInfoFromHal(env, program); env->CallBooleanMethod(jList.get(), gjni.ArrayList.add, jProgram.get()); @@ -285,8 +413,46 @@ static jobject nativeGetProgramList(JNIEnv *env, jobject obj, jlong nativeContex return jList.release(); } +static jbyteArray nativeGetImage(JNIEnv *env, jobject obj, jlong nativeContext, jint id) { + ALOGV("%s(%x)", __func__, id); + lock_guard lk(gContextMutex); + auto& ctx = getNativeContext(nativeContext); + + if (ctx.mHalModule11 == nullptr) { + jniThrowException(env, "java/lang/IllegalStateException", + "Out-of-band images are not supported with HAL < 1.1"); + return nullptr; + } + + auto halModule = ctx.mHalModule11.promote(); + if (halModule == nullptr) { + ALOGE("HAL module is gone"); + return nullptr; + } + + JavaRef jRawImage = nullptr; + + auto hidlResult = halModule->getImage(id, [&](hidl_vec rawImage) { + auto len = rawImage.size(); + if (len == 0) return; + + jRawImage = make_javaref(env, env->NewByteArray(len)); + if (jRawImage == nullptr) { + ALOGE("Failed to allocate byte array of len %zu", len); + return; + } + + env->SetByteArrayRegion(jRawImage.get(), 0, len, + reinterpret_cast(rawImage.data())); + }); + + if (convert::ThrowIfFailed(env, hidlResult)) return nullptr; + + return jRawImage.get(); +} + static bool nativeIsAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeIsAnalogForced()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", @@ -307,7 +473,7 @@ static bool nativeIsAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext) } static void nativeSetAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext, bool isForced) { - ALOGV("nativeSetAnalogForced()"); + ALOGV("%s(%d)", __func__, isForced); auto halTuner = getHalTuner11(nativeContext); if (halTuner == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", @@ -320,7 +486,7 @@ static void nativeSetAnalogForced(JNIEnv *env, jobject obj, jlong nativeContext, } static bool nativeIsAntennaConnected(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeIsAntennaConnected()"); + ALOGV("%s", __func__); auto halTuner = getHalTuner(nativeContext); if (halTuner == nullptr) return false; @@ -335,48 +501,51 @@ static bool nativeIsAntennaConnected(JNIEnv *env, jobject obj, jlong nativeConte } static const JNINativeMethod gTunerMethods[] = { - { "nativeInit", "(I)J", (void*)nativeInit }, + { "nativeInit", "(IZI)J", (void*)nativeInit }, { "nativeFinalize", "(J)V", (void*)nativeFinalize }, { "nativeClose", "(J)V", (void*)nativeClose }, { "nativeSetConfiguration", "(JLandroid/hardware/radio/RadioManager$BandConfig;)V", (void*)nativeSetConfiguration }, { "nativeGetConfiguration", "(JI)Landroid/hardware/radio/RadioManager$BandConfig;", (void*)nativeGetConfiguration }, + { "nativeSetMuted", "(JZ)V", (void*)nativeSetMuted }, { "nativeStep", "(JZZ)V", (void*)nativeStep }, { "nativeScan", "(JZZ)V", (void*)nativeScan }, - { "nativeTune", "(JII)V", (void*)nativeTune }, + { "nativeTune", "(JLandroid/hardware/radio/ProgramSelector;)V", (void*)nativeTune }, { "nativeCancel", "(J)V", (void*)nativeCancel }, + { "nativeCancelAnnouncement", "(J)V", (void*)nativeCancelAnnouncement }, { "nativeGetProgramInformation", "(J)Landroid/hardware/radio/RadioManager$ProgramInfo;", (void*)nativeGetProgramInformation }, { "nativeStartBackgroundScan", "(J)Z", (void*)nativeStartBackgroundScan }, - { "nativeGetProgramList", "(JLjava/lang/String;)Ljava/util/List;", + { "nativeGetProgramList", "(JLjava/util/Map;)Ljava/util/List;", (void*)nativeGetProgramList }, + { "nativeGetImage", "(JI)[B", (void*)nativeGetImage}, { "nativeIsAnalogForced", "(J)Z", (void*)nativeIsAnalogForced }, { "nativeSetAnalogForced", "(JZ)V", (void*)nativeSetAnalogForced }, { "nativeIsAntennaConnected", "(J)Z", (void*)nativeIsAntennaConnected }, }; } // namespace Tuner -} // namespace radio +} // namespace BroadcastRadio } // namespace server -void register_android_server_radio_Tuner(JavaVM *vm, JNIEnv *env) { - using namespace server::radio::Tuner; +void register_android_server_broadcastradio_Tuner(JavaVM *vm, JNIEnv *env) { + using namespace server::BroadcastRadio::Tuner; - register_android_server_radio_TunerCallback(vm, env); + register_android_server_broadcastradio_TunerCallback(vm, env); - auto tunerClass = FindClassOrDie(env, "com/android/server/radio/Tuner"); + auto tunerClass = FindClassOrDie(env, "com/android/server/broadcastradio/Tuner"); gjni.Tuner.nativeContext = GetFieldIDOrDie(env, tunerClass, "mNativeContext", "J"); gjni.Tuner.region = GetFieldIDOrDie(env, tunerClass, "mRegion", "I"); gjni.Tuner.tunerCallback = GetFieldIDOrDie(env, tunerClass, "mTunerCallback", - "Lcom/android/server/radio/TunerCallback;"); + "Lcom/android/server/broadcastradio/TunerCallback;"); auto arrayListClass = FindClassOrDie(env, "java/util/ArrayList"); gjni.ArrayList.clazz = MakeGlobalRefOrDie(env, arrayListClass); gjni.ArrayList.cstor = GetMethodIDOrDie(env, arrayListClass, "", "()V"); gjni.ArrayList.add = GetMethodIDOrDie(env, arrayListClass, "add", "(Ljava/lang/Object;)Z"); - auto res = jniRegisterNativeMethods(env, "com/android/server/radio/Tuner", + auto res = jniRegisterNativeMethods(env, "com/android/server/broadcastradio/Tuner", gTunerMethods, NELEM(gTunerMethods)); LOG_ALWAYS_FATAL_IF(res < 0, "Unable to register native methods."); } diff --git a/services/core/jni/com_android_server_radio_Tuner.h b/services/core/jni/BroadcastRadio/Tuner.h similarity index 69% rename from services/core/jni/com_android_server_radio_Tuner.h rename to services/core/jni/BroadcastRadio/Tuner.h index f653832c18e9a98c4797baf94ffa49f4ce37ceda..818597bc98ba861ab314bcd170474a9089133cb2 100644 --- a/services/core/jni/com_android_server_radio_Tuner.h +++ b/services/core/jni/BroadcastRadio/Tuner.h @@ -14,13 +14,14 @@ * limitations under the License. */ -#ifndef _ANDROID_SERVER_RADIO_TUNER_H -#define _ANDROID_SERVER_RADIO_TUNER_H +#ifndef _ANDROID_SERVER_BROADCASTRADIORADIO_TUNER_H +#define _ANDROID_SERVER_BROADCASTRADIORADIO_TUNER_H -#include "com_android_server_radio_types.h" +#include "types.h" #include "JavaRef.h" +#include #include #include #include @@ -28,13 +29,14 @@ namespace android { -void register_android_server_radio_Tuner(JavaVM *vm, JNIEnv *env); +void register_android_server_broadcastradio_Tuner(JavaVM *vm, JNIEnv *env); namespace server { -namespace radio { +namespace BroadcastRadio { namespace Tuner { -void setHalTuner(JNIEnv *env, JavaRef const &jTuner, +void assignHalInterfaces(JNIEnv *env, JavaRef const &jTuner, + sp halModule, sp halTuner); sp @@ -43,8 +45,8 @@ getNativeCallback(JNIEnv *env, JavaRef const &tuner); Region getRegion(JNIEnv *env, jobject obj); } // namespace Tuner -} // namespace radio +} // namespace BroadcastRadio } // namespace server } // namespace android -#endif // _ANDROID_SERVER_RADIO_TUNER_H +#endif // _ANDROID_SERVER_BROADCASTRADIORADIO_TUNER_H diff --git a/services/core/jni/com_android_server_radio_Tuner_TunerCallback.cpp b/services/core/jni/BroadcastRadio/TunerCallback.cpp similarity index 55% rename from services/core/jni/com_android_server_radio_Tuner_TunerCallback.cpp rename to services/core/jni/BroadcastRadio/TunerCallback.cpp index 1290c7ae89fbcb46d2169967cdee372882868bc2..d53721fbd082a8621734470e833d04cd71be14a8 100644 --- a/services/core/jni/com_android_server_radio_Tuner_TunerCallback.cpp +++ b/services/core/jni/BroadcastRadio/TunerCallback.cpp @@ -14,34 +14,41 @@ * limitations under the License. */ -#define LOG_TAG "radio.TunerCallback.jni" +#define LOG_TAG "BroadcastRadioService.TunerCallback.jni" #define LOG_NDEBUG 0 -#include "com_android_server_radio_Tuner_TunerCallback.h" +#include "TunerCallback.h" -#include "com_android_server_radio_convert.h" -#include "com_android_server_radio_Tuner.h" +#include "Tuner.h" +#include "convert.h" +#include #include +#include #include -#include namespace android { namespace server { -namespace radio { +namespace BroadcastRadio { namespace TunerCallback { +using std::lock_guard; +using std::mutex; + using hardware::Return; using hardware::hidl_vec; namespace V1_0 = hardware::broadcastradio::V1_0; namespace V1_1 = hardware::broadcastradio::V1_1; +using V1_0::Band; using V1_0::BandConfig; using V1_0::MetaData; using V1_0::Result; using V1_1::ITunerCallback; +using V1_1::ProgramInfo; using V1_1::ProgramListResult; +using V1_1::ProgramSelector; static JavaVM *gvm = nullptr; @@ -52,7 +59,13 @@ static struct { jmethodID handleHwFailure; jmethodID onError; jmethodID onConfigurationChanged; - jmethodID onProgramInfoChanged; + jmethodID onCurrentProgramInfoChanged; + jmethodID onTrafficAnnouncement; + jmethodID onEmergencyAnnouncement; + jmethodID onAntennaState; + jmethodID onBackgroundScanAvailabilityChange; + jmethodID onBackgroundScanComplete; + jmethodID onProgramListChanged; } TunerCallback; } gjni; @@ -63,16 +76,25 @@ enum class TunerError : jint { CANCELLED = 2, SCAN_TIMEOUT = 3, CONFIG = 4, + BACKGROUND_SCAN_UNAVAILABLE = 5, + BACKGROUND_SCAN_FAILED = 6, }; -static Mutex gContextMutex; +static mutex gContextMutex; class NativeCallback : public ITunerCallback { + mutex mMut; + jobject mJTuner; jobject mJCallback; NativeCallbackThread mCallbackThread; HalRevision mHalRev; + Band mBand; + + // Carries current program info data for 1.0 newMetadata callback. + V1_0::ProgramInfo mCurrentProgramInfo; + DISALLOW_COPY_AND_ASSIGN(NativeCallback); public: @@ -90,11 +112,11 @@ public: virtual Return emergencyAnnouncement(bool active); virtual Return newMetadata(uint32_t channel, uint32_t subChannel, const hidl_vec& metadata); - virtual Return tuneComplete_1_1(Result result, const V1_1::ProgramInfo& info); - virtual Return afSwitch_1_1(const V1_1::ProgramInfo& info); + virtual Return tuneComplete_1_1(Result result, const ProgramSelector& selector); virtual Return backgroundScanAvailable(bool isAvailable); virtual Return backgroundScanComplete(ProgramListResult result); virtual Return programListChanged(); + virtual Return currentProgramInfoChanged(const ProgramInfo& info); }; struct TunerCallbackContext { @@ -108,13 +130,13 @@ private: NativeCallback::NativeCallback(JNIEnv *env, jobject jTuner, jobject jCallback, HalRevision halRev) : mCallbackThread(gvm), mHalRev(halRev) { - ALOGV("NativeCallback()"); + ALOGV("%s", __func__); mJTuner = env->NewGlobalRef(jTuner); mJCallback = env->NewGlobalRef(jCallback); } NativeCallback::~NativeCallback() { - ALOGV("~NativeCallback()"); + ALOGV("%s", __func__); // stop callback thread before dereferencing client callback mCallbackThread.stop(); @@ -141,7 +163,7 @@ Return NativeCallback::hardwareFailure() { } Return NativeCallback::configChange(Result result, const BandConfig& config) { - ALOGV("configChange(%d)", result); + ALOGV("%s(%d)", __func__, result); mCallbackThread.enqueue([result, config, this](JNIEnv *env) { if (result == Result::OK) { @@ -159,80 +181,160 @@ Return NativeCallback::configChange(Result result, const BandConfig& confi } Return NativeCallback::tuneComplete(Result result, const V1_0::ProgramInfo& info) { - ALOGV("tuneComplete(%d)", result); + ALOGV("%s(%d)", __func__, result); if (mHalRev > HalRevision::V1_0) { - ALOGD("1.0 callback was ignored"); - return Return(); + ALOGW("1.0 callback was ignored"); + return {}; + } + + if (result == Result::OK) { + { + lock_guard lk(mMut); + mCurrentProgramInfo = info; + } + + // tuneComplete_1_1 implementation does not handle success case, see the implementation + mCallbackThread.enqueue([this, info](JNIEnv *env) { + auto jInfo = convert::ProgramInfoFromHal(env, info, mBand); + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onCurrentProgramInfoChanged, + jInfo.get()); + }); + return {}; } - V1_1::ProgramInfo info_1_1 { - .base = info, - }; - return tuneComplete_1_1(result, info_1_1); + auto selector = V1_1::utils::make_selector(mBand, info.channel, info.subChannel); + return tuneComplete_1_1(result, selector); } -Return NativeCallback::tuneComplete_1_1(Result result, const V1_1::ProgramInfo& info) { - ALOGV("tuneComplete_1_1(%d)", result); +Return NativeCallback::tuneComplete_1_1(Result result, const ProgramSelector& selector) { + ALOGV("%s(%d)", __func__, result); - mCallbackThread.enqueue([result, info, this](JNIEnv *env) { - if (result == Result::OK) { - auto jInfo = convert::ProgramInfoFromHal(env, info); - if (jInfo == nullptr) return; - env->CallVoidMethod(mJCallback, gjni.TunerCallback.onProgramInfoChanged, jInfo.get()); - } else { - TunerError cause = TunerError::CANCELLED; - if (result == Result::TIMEOUT) cause = TunerError::SCAN_TIMEOUT; - env->CallVoidMethod(mJCallback, gjni.TunerCallback.onError, cause); - } + mCallbackThread.enqueue([result, this](JNIEnv *env) { + /* for HAL 1.1, onCurrentProgramInfoChanged will be called from currentProgramInfoChanged, + * so we don't need to handle success case here. + */ + if (result == Result::OK) return; + + TunerError cause = TunerError::CANCELLED; + if (result == Result::TIMEOUT) cause = TunerError::SCAN_TIMEOUT; + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onError, cause); }); return Return(); } Return NativeCallback::afSwitch(const V1_0::ProgramInfo& info) { - ALOGE("Not implemented: afSwitch"); - return Return(); -} - -Return NativeCallback::afSwitch_1_1(const V1_1::ProgramInfo& info) { - ALOGE("Not implemented: afSwitch_1_1"); - return Return(); + ALOGV("%s", __func__); + return tuneComplete(Result::OK, info); } Return NativeCallback::antennaStateChange(bool connected) { - ALOGE("Not implemented: antennaStateChange"); + ALOGV("%s(%d)", __func__, connected); + + mCallbackThread.enqueue([this, connected](JNIEnv *env) { + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onAntennaState, connected); + }); + return Return(); } Return NativeCallback::trafficAnnouncement(bool active) { - ALOGE("Not implemented: trafficAnnouncement"); + ALOGV("%s(%d)", __func__, active); + + mCallbackThread.enqueue([this, active](JNIEnv *env) { + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onTrafficAnnouncement, active); + }); + return Return(); } Return NativeCallback::emergencyAnnouncement(bool active) { - ALOGE("Not implemented: emergencyAnnouncement"); + ALOGV("%s(%d)", __func__, active); + + mCallbackThread.enqueue([this, active](JNIEnv *env) { + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onEmergencyAnnouncement, active); + }); + return Return(); } Return NativeCallback::newMetadata(uint32_t channel, uint32_t subChannel, const hidl_vec& metadata) { - ALOGE("Not implemented: newMetadata"); - return Return(); + ALOGV("%s(%d, %d)", __func__, channel, subChannel); + + if (mHalRev > HalRevision::V1_0) { + ALOGW("1.0 callback was ignored"); + return {}; + } + + V1_0::ProgramInfo info; + { + lock_guard lk(mMut); + info = mCurrentProgramInfo; + } + if (channel != info.channel || subChannel != info.subChannel) { + ALOGE("Channel mismatch on newMetadata callback (%d.%d != %d.%d)", + channel, subChannel, info.channel, info.subChannel); + return {}; + } + info.metadata = metadata; + + mCallbackThread.enqueue([this, info](JNIEnv *env) { + auto jInfo = convert::ProgramInfoFromHal(env, info, mBand); + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onCurrentProgramInfoChanged, + jInfo.get()); + }); + + return {}; } Return NativeCallback::backgroundScanAvailable(bool isAvailable) { - ALOGE("Not implemented: backgroundScanAvailable"); + ALOGV("%s(%d)", __func__, isAvailable); + + mCallbackThread.enqueue([this, isAvailable](JNIEnv *env) { + env->CallVoidMethod(mJCallback, + gjni.TunerCallback.onBackgroundScanAvailabilityChange, isAvailable); + }); + return Return(); } Return NativeCallback::backgroundScanComplete(ProgramListResult result) { - ALOGE("Not implemented: backgroundScanComplete"); + ALOGV("%s(%d)", __func__, result); + + mCallbackThread.enqueue([this, result](JNIEnv *env) { + if (result == ProgramListResult::OK) { + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onBackgroundScanComplete); + } else { + auto cause = (result == ProgramListResult::UNAVAILABLE) ? + TunerError::BACKGROUND_SCAN_UNAVAILABLE : TunerError::BACKGROUND_SCAN_FAILED; + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onError, cause); + } + }); + return Return(); } Return NativeCallback::programListChanged() { - ALOGE("Not implemented: programListChanged"); + ALOGV("%s", __func__); + + mCallbackThread.enqueue([this](JNIEnv *env) { + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onProgramListChanged); + }); + + return Return(); +} + +Return NativeCallback::currentProgramInfoChanged(const ProgramInfo& info) { + ALOGV("%s(%s)", __func__, toString(info).substr(0, 100).c_str()); + + mCallbackThread.enqueue([this, info](JNIEnv *env) { + auto jInfo = convert::ProgramInfoFromHal(env, info); + env->CallVoidMethod(mJCallback, gjni.TunerCallback.onCurrentProgramInfoChanged, + jInfo.get()); + }); + return Return(); } @@ -250,8 +352,8 @@ static TunerCallbackContext& getNativeContext(JNIEnv *env, jobject jTunerCb) { } static jlong nativeInit(JNIEnv *env, jobject obj, jobject jTuner, jint jHalRev) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); auto halRev = static_cast(jHalRev); @@ -263,16 +365,16 @@ static jlong nativeInit(JNIEnv *env, jobject obj, jobject jTuner, jint jHalRev) } static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); auto ctx = reinterpret_cast(nativeContext); delete ctx; } static void nativeDetach(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeDetach()"); - AutoMutex _l(gContextMutex); + ALOGV("%s", __func__); + lock_guard lk(gContextMutex); auto& ctx = getNativeContext(nativeContext); if (ctx.mNativeCallback == nullptr) return; @@ -281,37 +383,49 @@ static void nativeDetach(JNIEnv *env, jobject obj, jlong nativeContext) { } sp getNativeCallback(JNIEnv *env, jobject jTunerCallback) { - AutoMutex _l(gContextMutex); + lock_guard lk(gContextMutex); auto& ctx = getNativeContext(env, jTunerCallback); return ctx.mNativeCallback; } static const JNINativeMethod gTunerCallbackMethods[] = { - { "nativeInit", "(Lcom/android/server/radio/Tuner;I)J", (void*)nativeInit }, + { "nativeInit", "(Lcom/android/server/broadcastradio/Tuner;I)J", (void*)nativeInit }, { "nativeFinalize", "(J)V", (void*)nativeFinalize }, { "nativeDetach", "(J)V", (void*)nativeDetach }, }; } // namespace TunerCallback -} // namespace radio +} // namespace BroadcastRadio } // namespace server -void register_android_server_radio_TunerCallback(JavaVM *vm, JNIEnv *env) { - using namespace server::radio::TunerCallback; +void register_android_server_broadcastradio_TunerCallback(JavaVM *vm, JNIEnv *env) { + using namespace server::BroadcastRadio::TunerCallback; gvm = vm; - auto tunerCbClass = FindClassOrDie(env, "com/android/server/radio/TunerCallback"); + auto tunerCbClass = FindClassOrDie(env, "com/android/server/broadcastradio/TunerCallback"); gjni.TunerCallback.clazz = MakeGlobalRefOrDie(env, tunerCbClass); gjni.TunerCallback.nativeContext = GetFieldIDOrDie(env, tunerCbClass, "mNativeContext", "J"); gjni.TunerCallback.handleHwFailure = GetMethodIDOrDie(env, tunerCbClass, "handleHwFailure", "()V"); gjni.TunerCallback.onError = GetMethodIDOrDie(env, tunerCbClass, "onError", "(I)V"); gjni.TunerCallback.onConfigurationChanged = GetMethodIDOrDie(env, tunerCbClass, "onConfigurationChanged", "(Landroid/hardware/radio/RadioManager$BandConfig;)V"); - gjni.TunerCallback.onProgramInfoChanged = GetMethodIDOrDie(env, tunerCbClass, - "onProgramInfoChanged", "(Landroid/hardware/radio/RadioManager$ProgramInfo;)V"); - - auto res = jniRegisterNativeMethods(env, "com/android/server/radio/TunerCallback", + gjni.TunerCallback.onCurrentProgramInfoChanged = GetMethodIDOrDie(env, tunerCbClass, + "onCurrentProgramInfoChanged", "(Landroid/hardware/radio/RadioManager$ProgramInfo;)V"); + gjni.TunerCallback.onTrafficAnnouncement = GetMethodIDOrDie(env, tunerCbClass, + "onTrafficAnnouncement", "(Z)V"); + gjni.TunerCallback.onEmergencyAnnouncement = GetMethodIDOrDie(env, tunerCbClass, + "onEmergencyAnnouncement", "(Z)V"); + gjni.TunerCallback.onAntennaState = GetMethodIDOrDie(env, tunerCbClass, + "onAntennaState", "(Z)V"); + gjni.TunerCallback.onBackgroundScanAvailabilityChange = GetMethodIDOrDie(env, tunerCbClass, + "onBackgroundScanAvailabilityChange", "(Z)V"); + gjni.TunerCallback.onBackgroundScanComplete = GetMethodIDOrDie(env, tunerCbClass, + "onBackgroundScanComplete", "()V"); + gjni.TunerCallback.onProgramListChanged = GetMethodIDOrDie(env, tunerCbClass, + "onProgramListChanged", "()V"); + + auto res = jniRegisterNativeMethods(env, "com/android/server/broadcastradio/TunerCallback", gTunerCallbackMethods, NELEM(gTunerCallbackMethods)); LOG_ALWAYS_FATAL_IF(res < 0, "Unable to register native methods."); } diff --git a/services/core/jni/com_android_server_radio_Tuner_TunerCallback.h b/services/core/jni/BroadcastRadio/TunerCallback.h similarity index 69% rename from services/core/jni/com_android_server_radio_Tuner_TunerCallback.h rename to services/core/jni/BroadcastRadio/TunerCallback.h index 35a4d695bef37f00326575a8a8f393ce1e3df782..af12d213d7276e3ac5d36c3694fbeb47472bd50c 100644 --- a/services/core/jni/com_android_server_radio_Tuner_TunerCallback.h +++ b/services/core/jni/BroadcastRadio/TunerCallback.h @@ -14,32 +14,30 @@ * limitations under the License. */ -// TODO(b/36863239): rename s/_Tuner_TunerCallback/_TunerCallback/, as this -// module is no longer a part of Tuner - it's an independent java class. -#ifndef _ANDROID_SERVER_RADIO_TUNERCALLBACK_H -#define _ANDROID_SERVER_RADIO_TUNERCALLBACK_H +#ifndef _ANDROID_SERVER_BROADCASTRADIO_TUNERCALLBACK_H +#define _ANDROID_SERVER_BROADCASTRADIO_TUNERCALLBACK_H #include "JavaRef.h" #include "NativeCallbackThread.h" -#include "com_android_server_radio_types.h" +#include "types.h" #include #include namespace android { -void register_android_server_radio_TunerCallback(JavaVM *vm, JNIEnv *env); +void register_android_server_broadcastradio_TunerCallback(JavaVM *vm, JNIEnv *env); namespace server { -namespace radio { +namespace BroadcastRadio { namespace TunerCallback { sp getNativeCallback(JNIEnv *env, jobject jTunerCallback); } // namespace TunerCallback -} // namespace radio +} // namespace BroadcastRadio } // namespace server } // namespace android -#endif // _ANDROID_SERVER_RADIO_TUNERCALLBACK_H +#endif // _ANDROID_SERVER_BROADCASTRADIO_TUNERCALLBACK_H diff --git a/services/core/jni/BroadcastRadio/convert.cpp b/services/core/jni/BroadcastRadio/convert.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ae278decff38a3e1ec88b2982f321bed6f0ea39b --- /dev/null +++ b/services/core/jni/BroadcastRadio/convert.cpp @@ -0,0 +1,718 @@ +/** + * 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. + */ + +#define LOG_TAG "BroadcastRadioService.convert.jni" +#define LOG_NDEBUG 0 + +#include "convert.h" + +#include "regions.h" + +#include +#include +#include +#include + +namespace android { +namespace server { +namespace BroadcastRadio { +namespace convert { + +namespace utils = V1_1::utils; + +using hardware::Return; +using hardware::hidl_vec; +using regions::RegionalBandConfig; + +using V1_0::Band; +using V1_0::Deemphasis; +using V1_0::Direction; +using V1_0::MetadataType; +using V1_0::Result; +using V1_0::Rds; +using V1_1::ProgramIdentifier; +using V1_1::ProgramListResult; +using V1_1::ProgramSelector; +using V1_1::VendorKeyValue; + +static JavaRef BandDescriptorFromHal(JNIEnv *env, const RegionalBandConfig &config); +static JavaRef BandDescriptorFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region); + +static struct { + struct { + jfieldID descriptor; + } BandConfig; + struct { + jclass clazz; + jmethodID cstor; + jfieldID stereo; + jfieldID rds; + jfieldID ta; + jfieldID af; + jfieldID ea; + } FmBandConfig; + struct { + jclass clazz; + jmethodID cstor; + jfieldID stereo; + } AmBandConfig; + + struct { + jclass clazz; + jfieldID region; + jfieldID type; + jfieldID lowerLimit; + jfieldID upperLimit; + jfieldID spacing; + } BandDescriptor; + struct { + jclass clazz; + jmethodID cstor; + } FmBandDescriptor; + struct { + jclass clazz; + jmethodID cstor; + } AmBandDescriptor; + + struct { + jclass clazz; + jmethodID stringMapToNative; + } Convert; + + struct { + jclass clazz; + jmethodID cstor; + } HashMap; + + struct { + jmethodID put; + } Map; + + struct { + jclass clazz; + jmethodID cstor; + } ModuleProperties; + + struct { + jclass clazz; + jmethodID cstor; + } ProgramInfo; + + struct { + jclass clazz; + jmethodID cstor; + jfieldID programType; + jfieldID primaryId; + jfieldID secondaryIds; + jfieldID vendorIds; + + struct { + jclass clazz; + jmethodID cstor; + jfieldID type; + jfieldID value; + } Identifier; + } ProgramSelector; + + struct { + jclass clazz; + jmethodID cstor; + jmethodID putIntFromNative; + jmethodID putStringFromNative; + jmethodID putBitmapFromNative; + jmethodID putClockFromNative; + } RadioMetadata; + + struct { + jclass clazz; + jmethodID cstor; + } RuntimeException; + + struct { + jclass clazz; + jmethodID cstor; + } ParcelableException; +} gjni; + +template <> +bool ThrowIfFailed(JNIEnv *env, const hardware::Return &hidlResult) { + return __ThrowIfFailedHidl(env, hidlResult); +} + +bool __ThrowIfFailedHidl(JNIEnv *env, const hardware::details::return_status &hidlResult) { + if (hidlResult.isOk()) return false; + + ThrowParcelableRuntimeException(env, "HIDL call failed: " + hidlResult.description()); + return true; +} + +bool __ThrowIfFailed(JNIEnv *env, const Result halResult) { + switch (halResult) { + case Result::OK: + return false; + case Result::NOT_INITIALIZED: + ThrowParcelableRuntimeException(env, "Result::NOT_INITIALIZED"); + return true; + case Result::INVALID_ARGUMENTS: + jniThrowException(env, "java/lang/IllegalArgumentException", + "Result::INVALID_ARGUMENTS"); + return true; + case Result::INVALID_STATE: + jniThrowException(env, "java/lang/IllegalStateException", "Result::INVALID_STATE"); + return true; + case Result::TIMEOUT: + ThrowParcelableRuntimeException(env, "Result::TIMEOUT (unexpected here)"); + return true; + default: + ThrowParcelableRuntimeException(env, "Unknown failure, result: " + + std::to_string(static_cast(halResult))); + return true; + } +} + +bool __ThrowIfFailed(JNIEnv *env, const ProgramListResult halResult) { + switch (halResult) { + case ProgramListResult::NOT_READY: + jniThrowException(env, "java/lang/IllegalStateException", "Scan is in progress"); + return true; + case ProgramListResult::NOT_STARTED: + jniThrowException(env, "java/lang/IllegalStateException", "Scan has not been started"); + return true; + case ProgramListResult::UNAVAILABLE: + ThrowParcelableRuntimeException(env, + "ProgramListResult::UNAVAILABLE (unexpected here)"); + return true; + default: + return __ThrowIfFailed(env, static_cast(halResult)); + } +} + +void ThrowParcelableRuntimeException(JNIEnv *env, const std::string& msg) { + auto jMsg = make_javastr(env, msg); + auto runtimeExc = make_javaref(env, env->NewObject(gjni.RuntimeException.clazz, + gjni.RuntimeException.cstor, jMsg.get())); + auto parcelableExc = make_javaref(env, env->NewObject(gjni.ParcelableException.clazz, + gjni.ParcelableException.cstor, runtimeExc.get())); + + auto res = env->Throw(static_cast(parcelableExc.get())); + ALOGE_IF(res != JNI_OK, "Couldn't throw parcelable runtime exception"); +} + +static JavaRef ArrayFromHal(JNIEnv *env, const hidl_vec& vec) { + auto jArr = make_javaref(env, env->NewIntArray(vec.size())); + auto jArrElements = env->GetIntArrayElements(jArr.get(), nullptr); + for (size_t i = 0; i < vec.size(); i++) { + jArrElements[i] = vec[i]; + } + env->ReleaseIntArrayElements(jArr.get(), jArrElements, 0); + return jArr; +} + +static JavaRef ArrayFromHal(JNIEnv *env, const hidl_vec& vec) { + auto jArr = make_javaref(env, env->NewLongArray(vec.size())); + auto jArrElements = env->GetLongArrayElements(jArr.get(), nullptr); + for (size_t i = 0; i < vec.size(); i++) { + jArrElements[i] = vec[i]; + } + env->ReleaseLongArrayElements(jArr.get(), jArrElements, 0); + return jArr; +} + +template +static JavaRef ArrayFromHal(JNIEnv *env, const hidl_vec& vec, + jclass jElementClass, std::function(JNIEnv*, const T&)> converter) { + auto jArr = make_javaref(env, env->NewObjectArray(vec.size(), jElementClass, nullptr)); + for (size_t i = 0; i < vec.size(); i++) { + auto jElement = converter(env, vec[i]); + env->SetObjectArrayElement(jArr.get(), i, jElement.get()); + } + return jArr; +} + +template +static JavaRef ArrayFromHal(JNIEnv *env, const hidl_vec& vec, + jclass jElementClass, JavaRef(*converter)(JNIEnv*, const T&)) { + return ArrayFromHal(env, vec, jElementClass, + std::function(JNIEnv*, const T&)>(converter)); +} + +static std::string StringFromJava(JNIEnv *env, JavaRef &jStr) { + auto cstr = (jStr == nullptr) ? nullptr : env->GetStringUTFChars(jStr.get(), nullptr); + std::string str(cstr); + env->ReleaseStringUTFChars(jStr.get(), cstr); + return str; +} + +JavaRef VendorInfoFromHal(JNIEnv *env, const hidl_vec &info) { + ALOGV("%s(%s)", __func__, toString(info).substr(0, 100).c_str()); + + auto jInfo = make_javaref(env, env->NewObject(gjni.HashMap.clazz, gjni.HashMap.cstor)); + + for (auto&& entry : info) { + auto jKey = make_javastr(env, entry.key); + auto jValue = make_javastr(env, entry.value); + env->CallObjectMethod(jInfo.get(), gjni.Map.put, jKey.get(), jValue.get()); + } + + return jInfo; +} + +hidl_vec VendorInfoToHal(JNIEnv *env, jobject jInfo) { + ALOGV("%s", __func__); + + auto jInfoArr = make_javaref(env, static_cast(env->CallStaticObjectMethod( + gjni.Convert.clazz, gjni.Convert.stringMapToNative, jInfo))); + LOG_FATAL_IF(jInfoArr == nullptr, "Converted array is null"); + + auto len = env->GetArrayLength(jInfoArr.get()); + hidl_vec vec; + vec.resize(len); + + for (jsize i = 0; i < len; i++) { + auto entry = make_javaref(env, static_cast( + env->GetObjectArrayElement(jInfoArr.get(), i))); + auto jKey = make_javaref(env, static_cast( + env->GetObjectArrayElement(entry.get(), 0))); + auto jValue = make_javaref(env, static_cast( + env->GetObjectArrayElement(entry.get(), 1))); + auto key = StringFromJava(env, jKey); + auto value = StringFromJava(env, jValue); + vec[i] = { key, value }; + } + + return vec; +} + +static Rds RdsForRegion(bool rds, Region region) { + if (!rds) return Rds::NONE; + + switch(region) { + case Region::ITU_1: + case Region::OIRT: + case Region::JAPAN: + case Region::KOREA: + return Rds::WORLD; + case Region::ITU_2: + return Rds::US; + default: + ALOGE("Unexpected region: %d", region); + return Rds::NONE; + } +} + +static Deemphasis DeemphasisForRegion(Region region) { + switch(region) { + case Region::KOREA: + case Region::ITU_2: + return Deemphasis::D75; + case Region::ITU_1: + case Region::OIRT: + case Region::JAPAN: + return Deemphasis::D50; + default: + ALOGE("Unexpected region: %d", region); + return Deemphasis::D50; + } +} + +static JavaRef ModulePropertiesFromHal(JNIEnv *env, const V1_0::Properties &prop10, + const V1_1::Properties *prop11, jint moduleId, const std::string& serviceName) { + ALOGV("%s", __func__); + using namespace std::placeholders; + + auto jServiceName = make_javastr(env, serviceName); + auto jImplementor = make_javastr(env, prop10.implementor); + auto jProduct = make_javastr(env, prop10.product); + auto jVersion = make_javastr(env, prop10.version); + auto jSerial = make_javastr(env, prop10.serial); + bool isBgScanSupported = prop11 ? prop11->supportsBackgroundScanning : false; + auto jVendorInfo = prop11 ? VendorInfoFromHal(env, prop11->vendorInfo) : nullptr; + + auto regionalBands = regions::mapRegions(prop10.bands); + auto jBands = ArrayFromHal(env, regionalBands, + gjni.BandDescriptor.clazz, BandDescriptorFromHal); + auto jSupportedProgramTypes = + prop11 ? ArrayFromHal(env, prop11->supportedProgramTypes) : nullptr; + auto jSupportedIdentifierTypes = + prop11 ? ArrayFromHal(env, prop11->supportedIdentifierTypes) : nullptr; + + return make_javaref(env, env->NewObject(gjni.ModuleProperties.clazz, + gjni.ModuleProperties.cstor, moduleId, jServiceName.get(), prop10.classId, + jImplementor.get(), jProduct.get(), jVersion.get(), jSerial.get(), prop10.numTuners, + prop10.numAudioSources, prop10.supportsCapture, jBands.get(), isBgScanSupported, + jSupportedProgramTypes.get(), jSupportedIdentifierTypes.get(), jVendorInfo.get())); +} + +JavaRef ModulePropertiesFromHal(JNIEnv *env, const V1_0::Properties &properties, + jint moduleId, const std::string& serviceName) { + return ModulePropertiesFromHal(env, properties, nullptr, moduleId, serviceName); +} + +JavaRef ModulePropertiesFromHal(JNIEnv *env, const V1_1::Properties &properties, + jint moduleId, const std::string& serviceName) { + return ModulePropertiesFromHal(env, properties.base, &properties, moduleId, serviceName); +} + +static JavaRef BandDescriptorFromHal(JNIEnv *env, const RegionalBandConfig &config) { + return BandDescriptorFromHal(env, config.bandConfig, config.region); +} + +static JavaRef BandDescriptorFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region) { + ALOGV("%s", __func__); + + jint spacing = config.spacings.size() > 0 ? config.spacings[0] : 0; + ALOGW_IF(config.spacings.size() > 1, "Multiple spacings - not a regional config"); + ALOGW_IF(config.spacings.size() == 0, "No channel spacing specified"); + + if (utils::isFm(config.type)) { + auto& fm = config.ext.fm; + return make_javaref(env, env->NewObject( + gjni.FmBandDescriptor.clazz, gjni.FmBandDescriptor.cstor, + region, config.type, config.lowerLimit, config.upperLimit, spacing, + fm.stereo, fm.rds != Rds::NONE, fm.ta, fm.af, fm.ea)); + } else if (utils::isAm(config.type)) { + auto& am = config.ext.am; + return make_javaref(env, env->NewObject( + gjni.AmBandDescriptor.clazz, gjni.AmBandDescriptor.cstor, + region, config.type, config.lowerLimit, config.upperLimit, spacing, am.stereo)); + } else { + ALOGE("Unsupported band type: %d", config.type); + return nullptr; + } +} + +JavaRef BandConfigFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region) { + ALOGV("%s", __func__); + + auto descriptor = BandDescriptorFromHal(env, config, region); + if (descriptor == nullptr) return nullptr; + + if (utils::isFm(config.type)) { + return make_javaref(env, env->NewObject( + gjni.FmBandConfig.clazz, gjni.FmBandConfig.cstor, descriptor.get())); + } else if (utils::isAm(config.type)) { + return make_javaref(env, env->NewObject( + gjni.AmBandConfig.clazz, gjni.AmBandConfig.cstor, descriptor.get())); + } else { + ALOGE("Unsupported band type: %d", config.type); + return nullptr; + } +} + +V1_0::BandConfig BandConfigToHal(JNIEnv *env, jobject jConfig, Region ®ion) { + ALOGV("%s", __func__); + auto jDescriptor = env->GetObjectField(jConfig, gjni.BandConfig.descriptor); + if (jDescriptor == nullptr) { + ALOGE("Descriptor is missing"); + return {}; + } + + region = static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.region)); + + V1_0::BandConfig config = {}; + config.type = static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.type)); + config.antennaConnected = false; // just don't set it + config.lowerLimit = env->GetIntField(jDescriptor, gjni.BandDescriptor.lowerLimit); + config.upperLimit = env->GetIntField(jDescriptor, gjni.BandDescriptor.upperLimit); + config.spacings = hidl_vec({ + static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.spacing)) + }); + + if (env->IsInstanceOf(jConfig, gjni.FmBandConfig.clazz)) { + auto& fm = config.ext.fm; + fm.deemphasis = DeemphasisForRegion(region); + fm.stereo = env->GetBooleanField(jConfig, gjni.FmBandConfig.stereo); + fm.rds = RdsForRegion(env->GetBooleanField(jConfig, gjni.FmBandConfig.rds), region); + fm.ta = env->GetBooleanField(jConfig, gjni.FmBandConfig.ta); + fm.af = env->GetBooleanField(jConfig, gjni.FmBandConfig.af); + fm.ea = env->GetBooleanField(jConfig, gjni.FmBandConfig.ea); + } else if (env->IsInstanceOf(jConfig, gjni.AmBandConfig.clazz)) { + auto& am = config.ext.am; + am.stereo = env->GetBooleanField(jConfig, gjni.AmBandConfig.stereo); + } else { + ALOGE("Unexpected band config type"); + return {}; + } + + return config; +} + +Direction DirectionToHal(bool directionDown) { + return directionDown ? Direction::DOWN : Direction::UP; +} + +JavaRef MetadataFromHal(JNIEnv *env, const hidl_vec &metadata) { + ALOGV("%s", __func__); + if (metadata.size() == 0) return nullptr; + + auto jMetadata = make_javaref(env, env->NewObject( + gjni.RadioMetadata.clazz, gjni.RadioMetadata.cstor)); + + for (auto& item : metadata) { + jint key = static_cast(item.key); + jint status = 0; + switch (item.type) { + case MetadataType::INT: + ALOGV("metadata INT %d", key); + status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putIntFromNative, + key, item.intValue); + break; + case MetadataType::TEXT: { + ALOGV("metadata TEXT %d", key); + auto value = make_javastr(env, item.stringValue); + status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putStringFromNative, + key, value.get()); + break; + } + case MetadataType::RAW: { + ALOGV("metadata RAW %d", key); + auto len = item.rawValue.size(); + if (len == 0) break; + auto value = make_javaref(env, env->NewByteArray(len)); + if (value == nullptr) { + ALOGE("Failed to allocate byte array of len %zu", len); + break; + } + env->SetByteArrayRegion(value.get(), 0, len, + reinterpret_cast(item.rawValue.data())); + status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putBitmapFromNative, + key, value.get()); + break; + } + case MetadataType::CLOCK: + ALOGV("metadata CLOCK %d", key); + status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putClockFromNative, + key, item.clockValue.utcSecondsSinceEpoch, + item.clockValue.timezoneOffsetInMinutes); + break; + default: + ALOGW("invalid metadata type %d", item.type); + } + ALOGE_IF(status != 0, "Failed inserting metadata %d (of type %d)", key, item.type); + } + + return jMetadata; +} + +static JavaRef ProgramIdentifierFromHal(JNIEnv *env, const ProgramIdentifier &id) { + ALOGV("%s", __func__); + return make_javaref(env, env->NewObject(gjni.ProgramSelector.Identifier.clazz, + gjni.ProgramSelector.Identifier.cstor, id.type, id.value)); +} + +static JavaRef ProgramSelectorFromHal(JNIEnv *env, const ProgramSelector &selector) { + ALOGV("%s", __func__); + auto jPrimary = ProgramIdentifierFromHal(env, selector.primaryId); + auto jSecondary = ArrayFromHal(env, selector.secondaryIds, + gjni.ProgramSelector.Identifier.clazz, ProgramIdentifierFromHal); + auto jVendor = ArrayFromHal(env, selector.vendorIds); + + return make_javaref(env, env->NewObject(gjni.ProgramSelector.clazz, gjni.ProgramSelector.cstor, + selector.programType, jPrimary.get(), jSecondary.get(), jVendor.get())); +} + +static ProgramIdentifier ProgramIdentifierToHal(JNIEnv *env, jobject jId) { + ALOGV("%s", __func__); + + ProgramIdentifier id = {}; + id.type = env->GetIntField(jId, gjni.ProgramSelector.Identifier.type); + id.value = env->GetLongField(jId, gjni.ProgramSelector.Identifier.value); + return id; +} + +ProgramSelector ProgramSelectorToHal(JNIEnv *env, jobject jSelector) { + ALOGV("%s", __func__); + + ProgramSelector selector = {}; + + selector.programType = env->GetIntField(jSelector, gjni.ProgramSelector.programType); + + auto jPrimary = env->GetObjectField(jSelector, gjni.ProgramSelector.primaryId); + auto jSecondary = reinterpret_cast( + env->GetObjectField(jSelector, gjni.ProgramSelector.secondaryIds)); + auto jVendor = reinterpret_cast( + env->GetObjectField(jSelector, gjni.ProgramSelector.vendorIds)); + + if (jPrimary == nullptr || jSecondary == nullptr || jVendor == nullptr) { + ALOGE("ProgramSelector object is incomplete"); + return {}; + } + + selector.primaryId = ProgramIdentifierToHal(env, jPrimary); + auto count = env->GetArrayLength(jSecondary); + selector.secondaryIds.resize(count); + for (jsize i = 0; i < count; i++) { + auto jId = env->GetObjectArrayElement(jSecondary, i); + selector.secondaryIds[i] = ProgramIdentifierToHal(env, jId); + } + + count = env->GetArrayLength(jVendor); + selector.vendorIds.resize(count); + auto jVendorElements = env->GetLongArrayElements(jVendor, nullptr); + for (jint i = 0; i < count; i++) { + selector.vendorIds[i] = jVendorElements[i]; + } + env->ReleaseLongArrayElements(jVendor, jVendorElements, 0); + + return selector; +} + +static JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10, + const V1_1::ProgramInfo *info11, const ProgramSelector &selector) { + ALOGV("%s", __func__); + + auto jMetadata = MetadataFromHal(env, info10.metadata); + auto jVendorInfo = info11 ? VendorInfoFromHal(env, info11->vendorInfo) : nullptr; + auto jSelector = ProgramSelectorFromHal(env, selector); + + return make_javaref(env, env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor, + jSelector.get(), info10.tuned, info10.stereo, info10.digital, info10.signalStrength, + jMetadata.get(), info11 ? info11->flags : 0, jVendorInfo.get())); +} + +JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info, V1_0::Band band) { + auto selector = utils::make_selector(band, info.channel, info.subChannel); + return ProgramInfoFromHal(env, info, nullptr, selector); +} + +JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info) { + return ProgramInfoFromHal(env, info.base, &info, info.selector); +} + +} // namespace convert +} // namespace BroadcastRadio +} // namespace server + +void register_android_server_broadcastradio_convert(JNIEnv *env) { + using namespace server::BroadcastRadio::convert; + + auto bandConfigClass = FindClassOrDie(env, "android/hardware/radio/RadioManager$BandConfig"); + gjni.BandConfig.descriptor = GetFieldIDOrDie(env, bandConfigClass, + "mDescriptor", "Landroid/hardware/radio/RadioManager$BandDescriptor;"); + + auto fmBandConfigClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$FmBandConfig"); + gjni.FmBandConfig.clazz = MakeGlobalRefOrDie(env, fmBandConfigClass); + gjni.FmBandConfig.cstor = GetMethodIDOrDie(env, fmBandConfigClass, + "", "(Landroid/hardware/radio/RadioManager$FmBandDescriptor;)V"); + gjni.FmBandConfig.stereo = GetFieldIDOrDie(env, fmBandConfigClass, "mStereo", "Z"); + gjni.FmBandConfig.rds = GetFieldIDOrDie(env, fmBandConfigClass, "mRds", "Z"); + gjni.FmBandConfig.ta = GetFieldIDOrDie(env, fmBandConfigClass, "mTa", "Z"); + gjni.FmBandConfig.af = GetFieldIDOrDie(env, fmBandConfigClass, "mAf", "Z"); + gjni.FmBandConfig.ea = GetFieldIDOrDie(env, fmBandConfigClass, "mEa", "Z"); + + auto amBandConfigClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$AmBandConfig"); + gjni.AmBandConfig.clazz = MakeGlobalRefOrDie(env, amBandConfigClass); + gjni.AmBandConfig.cstor = GetMethodIDOrDie(env, amBandConfigClass, + "", "(Landroid/hardware/radio/RadioManager$AmBandDescriptor;)V"); + gjni.AmBandConfig.stereo = GetFieldIDOrDie(env, amBandConfigClass, "mStereo", "Z"); + + auto bandDescriptorClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$BandDescriptor"); + gjni.BandDescriptor.clazz = MakeGlobalRefOrDie(env, bandDescriptorClass); + gjni.BandDescriptor.region = GetFieldIDOrDie(env, bandDescriptorClass, "mRegion", "I"); + gjni.BandDescriptor.type = GetFieldIDOrDie(env, bandDescriptorClass, "mType", "I"); + gjni.BandDescriptor.lowerLimit = GetFieldIDOrDie(env, bandDescriptorClass, "mLowerLimit", "I"); + gjni.BandDescriptor.upperLimit = GetFieldIDOrDie(env, bandDescriptorClass, "mUpperLimit", "I"); + gjni.BandDescriptor.spacing = GetFieldIDOrDie(env, bandDescriptorClass, "mSpacing", "I"); + + auto fmBandDescriptorClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$FmBandDescriptor"); + gjni.FmBandDescriptor.clazz = MakeGlobalRefOrDie(env, fmBandDescriptorClass); + gjni.FmBandDescriptor.cstor = GetMethodIDOrDie(env, fmBandDescriptorClass, + "", "(IIIIIZZZZZ)V"); + + auto amBandDescriptorClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$AmBandDescriptor"); + gjni.AmBandDescriptor.clazz = MakeGlobalRefOrDie(env, amBandDescriptorClass); + gjni.AmBandDescriptor.cstor = GetMethodIDOrDie(env, amBandDescriptorClass, + "", "(IIIIIZ)V"); + + auto convertClass = FindClassOrDie(env, "com/android/server/broadcastradio/Convert"); + gjni.Convert.clazz = MakeGlobalRefOrDie(env, convertClass); + gjni.Convert.stringMapToNative = GetStaticMethodIDOrDie(env, convertClass, "stringMapToNative", + "(Ljava/util/Map;)[[Ljava/lang/String;"); + + auto hashMapClass = FindClassOrDie(env, "java/util/HashMap"); + gjni.HashMap.clazz = MakeGlobalRefOrDie(env, hashMapClass); + gjni.HashMap.cstor = GetMethodIDOrDie(env, hashMapClass, "", "()V"); + + auto mapClass = FindClassOrDie(env, "java/util/Map"); + gjni.Map.put = GetMethodIDOrDie(env, mapClass, "put", + "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + + auto modulePropertiesClass = FindClassOrDie(env, + "android/hardware/radio/RadioManager$ModuleProperties"); + gjni.ModuleProperties.clazz = MakeGlobalRefOrDie(env, modulePropertiesClass); + gjni.ModuleProperties.cstor = GetMethodIDOrDie(env, modulePropertiesClass, "", + "(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;" + "Ljava/lang/String;IIZ[Landroid/hardware/radio/RadioManager$BandDescriptor;Z" + "[I[ILjava/util/Map;)V"); + + auto programInfoClass = FindClassOrDie(env, "android/hardware/radio/RadioManager$ProgramInfo"); + gjni.ProgramInfo.clazz = MakeGlobalRefOrDie(env, programInfoClass); + gjni.ProgramInfo.cstor = GetMethodIDOrDie(env, programInfoClass, "", + "(Landroid/hardware/radio/ProgramSelector;ZZZILandroid/hardware/radio/RadioMetadata;I" + "Ljava/util/Map;)V"); + + auto programSelectorClass = FindClassOrDie(env, "android/hardware/radio/ProgramSelector"); + gjni.ProgramSelector.clazz = MakeGlobalRefOrDie(env, programSelectorClass); + gjni.ProgramSelector.cstor = GetMethodIDOrDie(env, programSelectorClass, "", + "(ILandroid/hardware/radio/ProgramSelector$Identifier;" + "[Landroid/hardware/radio/ProgramSelector$Identifier;[J)V"); + gjni.ProgramSelector.programType = GetFieldIDOrDie(env, programSelectorClass, + "mProgramType", "I"); + gjni.ProgramSelector.primaryId = GetFieldIDOrDie(env, programSelectorClass, + "mPrimaryId", "Landroid/hardware/radio/ProgramSelector$Identifier;"); + gjni.ProgramSelector.secondaryIds = GetFieldIDOrDie(env, programSelectorClass, + "mSecondaryIds", "[Landroid/hardware/radio/ProgramSelector$Identifier;"); + gjni.ProgramSelector.vendorIds = GetFieldIDOrDie(env, programSelectorClass, + "mVendorIds", "[J"); + + auto progSelIdClass = FindClassOrDie(env, "android/hardware/radio/ProgramSelector$Identifier"); + gjni.ProgramSelector.Identifier.clazz = MakeGlobalRefOrDie(env, progSelIdClass); + gjni.ProgramSelector.Identifier.cstor = GetMethodIDOrDie(env, progSelIdClass, + "", "(IJ)V"); + gjni.ProgramSelector.Identifier.type = GetFieldIDOrDie(env, progSelIdClass, + "mType", "I"); + gjni.ProgramSelector.Identifier.value = GetFieldIDOrDie(env, progSelIdClass, + "mValue", "J"); + + auto radioMetadataClass = FindClassOrDie(env, "android/hardware/radio/RadioMetadata"); + gjni.RadioMetadata.clazz = MakeGlobalRefOrDie(env, radioMetadataClass); + gjni.RadioMetadata.cstor = GetMethodIDOrDie(env, radioMetadataClass, "", "()V"); + gjni.RadioMetadata.putIntFromNative = GetMethodIDOrDie(env, radioMetadataClass, + "putIntFromNative", "(II)I"); + gjni.RadioMetadata.putStringFromNative = GetMethodIDOrDie(env, radioMetadataClass, + "putStringFromNative", "(ILjava/lang/String;)I"); + gjni.RadioMetadata.putBitmapFromNative = GetMethodIDOrDie(env, radioMetadataClass, + "putBitmapFromNative", "(I[B)I"); + gjni.RadioMetadata.putClockFromNative = GetMethodIDOrDie(env, radioMetadataClass, + "putClockFromNative", "(IJI)I"); + + auto runtimeExcClass = FindClassOrDie(env, "java/lang/RuntimeException"); + gjni.RuntimeException.clazz = MakeGlobalRefOrDie(env, runtimeExcClass); + gjni.RuntimeException.cstor = GetMethodIDOrDie(env, runtimeExcClass, "", + "(Ljava/lang/String;)V"); + + auto parcelableExcClass = FindClassOrDie(env, "android/os/ParcelableException"); + gjni.ParcelableException.clazz = MakeGlobalRefOrDie(env, parcelableExcClass); + gjni.ParcelableException.cstor = GetMethodIDOrDie(env, parcelableExcClass, "", + "(Ljava/lang/Throwable;)V"); +} + +} // namespace android diff --git a/services/core/jni/com_android_server_radio_convert.h b/services/core/jni/BroadcastRadio/convert.h similarity index 66% rename from services/core/jni/com_android_server_radio_convert.h rename to services/core/jni/BroadcastRadio/convert.h index 6f6774b11b428e7d4bfee682628315ff915820ac..1fc75f06f38d62a561b6c51ef6a8acfac25ef62f 100644 --- a/services/core/jni/com_android_server_radio_convert.h +++ b/services/core/jni/BroadcastRadio/convert.h @@ -14,34 +14,45 @@ * limitations under the License. */ -#ifndef _ANDROID_SERVER_RADIO_CONVERT_H -#define _ANDROID_SERVER_RADIO_CONVERT_H +#ifndef _ANDROID_SERVER_BROADCASTRADIO_CONVERT_H +#define _ANDROID_SERVER_BROADCASTRADIO_CONVERT_H + +#include "types.h" #include "JavaRef.h" -#include "com_android_server_radio_types.h" #include #include namespace android { -void register_android_server_radio_convert(JNIEnv *env); +void register_android_server_broadcastradio_convert(JNIEnv *env); namespace server { -namespace radio { +namespace BroadcastRadio { namespace convert { namespace V1_0 = hardware::broadcastradio::V1_0; namespace V1_1 = hardware::broadcastradio::V1_1; +JavaRef VendorInfoFromHal(JNIEnv *env, const hardware::hidl_vec &info); +hardware::hidl_vec VendorInfoToHal(JNIEnv *env, jobject jInfo); + +JavaRef ModulePropertiesFromHal(JNIEnv *env, const V1_0::Properties &properties, + jint moduleId, const std::string& serviceName); +JavaRef ModulePropertiesFromHal(JNIEnv *env, const V1_1::Properties &properties, + jint moduleId, const std::string& serviceName); + JavaRef BandConfigFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region); V1_0::BandConfig BandConfigToHal(JNIEnv *env, jobject jConfig, Region ®ion); V1_0::Direction DirectionToHal(bool directionDown); -JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info); +JavaRef MetadataFromHal(JNIEnv *env, const hardware::hidl_vec &metadata); +JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info, V1_0::Band band); JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info); +V1_1::ProgramSelector ProgramSelectorToHal(JNIEnv *env, jobject jSelector); void ThrowParcelableRuntimeException(JNIEnv *env, const std::string& msg); @@ -61,9 +72,12 @@ bool ThrowIfFailed(JNIEnv *env, const hardware::Return &hidlResult) { return __ThrowIfFailedHidl(env, hidlResult) || __ThrowIfFailed(env, static_cast(hidlResult)); } +template <> +bool ThrowIfFailed(JNIEnv *env, const hardware::Return &hidlResult); + } // namespace convert -} // namespace radio +} // namespace BroadcastRadio } // namespace server } // namespace android -#endif // _ANDROID_SERVER_RADIO_CONVERT_H +#endif // _ANDROID_SERVER_BROADCASTRADIO_CONVERT_H diff --git a/services/core/jni/BroadcastRadio/regions.cpp b/services/core/jni/BroadcastRadio/regions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b85641992e6c020ab67badeda8ab00eea848f015 --- /dev/null +++ b/services/core/jni/BroadcastRadio/regions.cpp @@ -0,0 +1,196 @@ +/** + * 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. + */ + +#define LOG_TAG "BroadcastRadioService.regions.jni" +#define LOG_NDEBUG 0 + +#include "regions.h" + +#include +#include + +namespace android { +namespace server { +namespace BroadcastRadio { +namespace regions { + +namespace utils = hardware::broadcastradio::V1_1::utils; + +using hardware::hidl_vec; + +using V1_0::Band; +using V1_0::BandConfig; +using V1_0::Deemphasis; +using V1_0::Rds; + +class RegionalBandDefinition { +public: + std::vector mRegions; + std::vector mTypes; + uint32_t mLowerLimit; + uint32_t mUpperLimit; + uint32_t mSpacing; + + Deemphasis mFmDeemphasis = {}; + Rds mFmRds = Rds::NONE; + + bool fitsInsideBand(const BandConfig &bandConfig) const; + std::vector withConfig(BandConfig bandConfig) const; +}; + +static const RegionalBandDefinition kKnownRegionConfigs[] = { + { + { Region::ITU_1 }, + { Band::FM }, + 87500, + 108000, + 100, + Deemphasis::D50, + Rds::WORLD, + }, + { + { Region::ITU_2 }, + { Band::FM, Band::FM_HD }, + 87700, + 107900, + 200, + Deemphasis::D75, + Rds::US, + }, + { + { Region::OIRT }, + { Band::FM }, + 65800, + 74000, + 10, + Deemphasis::D50, + Rds::WORLD, + }, + { + { Region::JAPAN }, + { Band::FM }, + 76000, + 90000, + 100, + Deemphasis::D50, + Rds::WORLD, + }, + { + { Region::KOREA }, + { Band::FM }, + 87500, + 108000, + 100, + Deemphasis::D75, + Rds::WORLD, + }, + { // AM LW + { Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA }, + { Band::AM }, + 153, + 282, + 9, + }, + { // AM MW + { Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA }, + { Band::AM }, + 531, + 1620, + 9, + }, + { // AM SW + { Region::ITU_1, Region::OIRT, Region::JAPAN, Region::KOREA }, + { Band::AM }, + 2300, + 26100, + 5, + }, + { // AM LW ITU2 + { Region::ITU_2 }, + { Band::AM, Band::AM_HD }, + 153, + 279, + 9, + }, + { // AM MW ITU2 + { Region::ITU_2 }, + { Band::AM, Band::AM_HD }, + 530, + 1700, + 10, + }, + { // AM SW ITU2 + { Region::ITU_2 }, + { Band::AM, Band::AM_HD }, + 2300, + 26100, + 5, + }, +}; + +bool RegionalBandDefinition::fitsInsideBand(const BandConfig &bandConfig) const { + if (std::find(mTypes.begin(), mTypes.end(), bandConfig.type) == mTypes.end()) return false; + if (mLowerLimit < bandConfig.lowerLimit) return false; + if (mUpperLimit > bandConfig.upperLimit) return false; + auto&& spacings = bandConfig.spacings; + if (std::find(spacings.begin(), spacings.end(), mSpacing) == spacings.end()) return false; + if (utils::isFm(bandConfig.type)) { + if (0 == (mFmDeemphasis & bandConfig.ext.fm.deemphasis)) return false; + } + + return true; +} + +std::vector RegionalBandDefinition::withConfig(BandConfig config) const { + config.lowerLimit = mLowerLimit; + config.upperLimit = mUpperLimit; + config.spacings = hidl_vec({ mSpacing }); + if (utils::isFm(config.type)) { + auto&& fm = config.ext.fm; + fm.deemphasis = mFmDeemphasis; + fm.rds = static_cast(mFmRds & fm.rds); + } + + std::vector configs; + for (auto region : mRegions) { + configs.push_back({region, config}); + } + + return configs; +} + +std::vector mapRegions(const hidl_vec& bands) { + ALOGV("%s", __func__); + + std::vector out; + + for (auto&& regionalBand : kKnownRegionConfigs) { + for (auto&& tunerBand : bands) { + if (regionalBand.fitsInsideBand(tunerBand)) { + auto mapped = regionalBand.withConfig(tunerBand); + out.insert(out.end(), mapped.begin(), mapped.end()); + } + } + } + + ALOGI("Mapped %zu tuner bands to %zu regional bands", bands.size(), out.size()); + return out; +} + +} // namespace regions +} // namespace BroadcastRadio +} // namespace server +} // namespace android diff --git a/services/core/jni/BroadcastRadio/regions.h b/services/core/jni/BroadcastRadio/regions.h new file mode 100644 index 0000000000000000000000000000000000000000..45a32ea4888dc011a6185b76f0113f62e46741ec --- /dev/null +++ b/services/core/jni/BroadcastRadio/regions.h @@ -0,0 +1,44 @@ +/** + * 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. + */ + +#ifndef _ANDROID_SERVER_BROADCASTRADIO_REGIONS_H +#define _ANDROID_SERVER_BROADCASTRADIO_REGIONS_H + +#include "types.h" + +#include + +namespace android { +namespace server { +namespace BroadcastRadio { +namespace regions { + +namespace V1_0 = hardware::broadcastradio::V1_0; + +struct RegionalBandConfig { + Region region; + V1_0::BandConfig bandConfig; +}; + +std::vector +mapRegions(const hardware::hidl_vec& bands); + +} // namespace regions +} // namespace BroadcastRadio +} // namespace server +} // namespace android + +#endif // _ANDROID_SERVER_BROADCASTRADIO_REGIONS_H diff --git a/services/core/jni/com_android_server_radio_types.h b/services/core/jni/BroadcastRadio/types.h similarity index 90% rename from services/core/jni/com_android_server_radio_types.h rename to services/core/jni/BroadcastRadio/types.h index 36f76433a694ed532ae66a5a20719d9a52be5db8..f726af330572eef51ff8c5d8e6a66ff2764a06c5 100644 --- a/services/core/jni/com_android_server_radio_types.h +++ b/services/core/jni/BroadcastRadio/types.h @@ -14,14 +14,14 @@ * limitations under the License. */ -#ifndef _ANDROID_SERVER_RADIO_TYPES_H -#define _ANDROID_SERVER_RADIO_TYPES_H +#ifndef _ANDROID_SERVER_BROADCASTRADIO_TYPES_H +#define _ANDROID_SERVER_BROADCASTRADIO_TYPES_H #include namespace android { namespace server { -namespace radio { +namespace BroadcastRadio { /* Most of these enums are dereived from Java code, based at * frameworks/base/core/java/android/hardware/radio/RadioManager.java. @@ -53,7 +53,7 @@ enum class Region : jint { KOREA = 4, }; -} // namespace radio +} // namespace BroadcastRadio } // namespace server } // namespace android diff --git a/services/core/jni/com_android_server_HardwarePropertiesManagerService.cpp b/services/core/jni/com_android_server_HardwarePropertiesManagerService.cpp index 5f67ac1dfe8f250b1ffcbec1ce879f7a5da94557..ed79352bba21d1fca6f59e22fe52b8defd1ffea5 100644 --- a/services/core/jni/com_android_server_HardwarePropertiesManagerService.cpp +++ b/services/core/jni/com_android_server_HardwarePropertiesManagerService.cpp @@ -30,6 +30,8 @@ namespace android { +using android::hidl::base::V1_0::IBase; +using hardware::hidl_death_recipient; using hardware::hidl_vec; using hardware::thermal::V1_0::CoolingDevice; using hardware::thermal::V1_0::CpuUsage; @@ -58,7 +60,22 @@ static struct { jfloat gUndefinedTemperature; -static sp gThermalModule; +static void getThermalHalLocked(); +static std::mutex gThermalHalMutex; +static sp gThermalHal = nullptr; + +// struct ThermalHalDeathRecipient; +struct ThermalHalDeathRecipient : virtual public hidl_death_recipient { + // hidl_death_recipient interface + virtual void serviceDied(uint64_t cookie, const wp& who) override { + std::lock_guard lock(gThermalHalMutex); + ALOGE("ThermalHAL just died"); + gThermalHal = nullptr; + getThermalHalLocked(); + } +}; + +sp gThermalHalDeathRecipient = nullptr; // ---------------------------------------------------------------------------- @@ -66,25 +83,50 @@ float finalizeTemperature(float temperature) { return isnan(temperature) ? gUndefinedTemperature : temperature; } -static void nativeInit(JNIEnv* env, jobject obj) { - // TODO(b/31632518) - if (gThermalModule == nullptr) { - gThermalModule = IThermal::getService(); +// The caller must be holding gThermalHalMutex. +static void getThermalHalLocked() { + if (gThermalHal != nullptr) { + return; } - if (gThermalModule == nullptr) { + gThermalHal = IThermal::getService(); + + if (gThermalHal == nullptr) { ALOGE("Unable to get Thermal service."); + } else { + if (gThermalHalDeathRecipient == nullptr) { + gThermalHalDeathRecipient = new ThermalHalDeathRecipient(); + } + hardware::Return linked = gThermalHal->linkToDeath( + gThermalHalDeathRecipient, 0x451F /* cookie */); + if (!linked.isOk()) { + ALOGE("Transaction error in linking to ThermalHAL death: %s", + linked.description().c_str()); + gThermalHal = nullptr; + } else if (!linked) { + ALOGW("Unable to link to ThermalHal death notifications"); + gThermalHal = nullptr; + } else { + ALOGD("Link to death notification successful"); + } } } +static void nativeInit(JNIEnv* env, jobject obj) { + std::lock_guard lock(gThermalHalMutex); + getThermalHalLocked(); +} + static jfloatArray nativeGetFanSpeeds(JNIEnv *env, jclass /* clazz */) { - if (gThermalModule == nullptr) { + std::lock_guard lock(gThermalHalMutex); + getThermalHalLocked(); + if (gThermalHal == nullptr) { ALOGE("Couldn't get fan speeds because of HAL error."); return env->NewFloatArray(0); } hidl_vec list; - Return ret = gThermalModule->getCoolingDevices( + Return ret = gThermalHal->getCoolingDevices( [&list](ThermalStatus status, hidl_vec devices) { if (status.code == ThermalStatusCode::SUCCESS) { list = std::move(devices); @@ -109,12 +151,14 @@ static jfloatArray nativeGetFanSpeeds(JNIEnv *env, jclass /* clazz */) { static jfloatArray nativeGetDeviceTemperatures(JNIEnv *env, jclass /* clazz */, int type, int source) { - if (gThermalModule == nullptr) { + std::lock_guard lock(gThermalHalMutex); + getThermalHalLocked(); + if (gThermalHal == nullptr) { ALOGE("Couldn't get device temperatures because of HAL error."); return env->NewFloatArray(0); } hidl_vec list; - Return ret = gThermalModule->getTemperatures( + Return ret = gThermalHal->getTemperatures( [&list](ThermalStatus status, hidl_vec temperatures) { if (status.code == ThermalStatusCode::SUCCESS) { list = std::move(temperatures); @@ -154,12 +198,14 @@ static jfloatArray nativeGetDeviceTemperatures(JNIEnv *env, jclass /* clazz */, } static jobjectArray nativeGetCpuUsages(JNIEnv *env, jclass /* clazz */) { - if (gThermalModule == nullptr || !gCpuUsageInfoClassInfo.initMethod) { + std::lock_guard lock(gThermalHalMutex); + getThermalHalLocked(); + if (gThermalHal == nullptr || !gCpuUsageInfoClassInfo.initMethod) { ALOGE("Couldn't get CPU usages because of HAL error."); return env->NewObjectArray(0, gCpuUsageInfoClassInfo.clazz, nullptr); } hidl_vec list; - Return ret = gThermalModule->getCpuUsages( + Return ret = gThermalHal->getCpuUsages( [&list](ThermalStatus status, hidl_vec cpuUsages) { if (status.code == ThermalStatusCode::SUCCESS) { list = std::move(cpuUsages); @@ -202,7 +248,6 @@ static const JNINativeMethod gHardwarePropertiesManagerServiceMethods[] = { }; int register_android_server_HardwarePropertiesManagerService(JNIEnv* env) { - gThermalModule = nullptr; int res = jniRegisterNativeMethods(env, "com/android/server/HardwarePropertiesManagerService", gHardwarePropertiesManagerServiceMethods, NELEM(gHardwarePropertiesManagerServiceMethods)); diff --git a/services/core/jni/com_android_server_VibratorService.cpp b/services/core/jni/com_android_server_VibratorService.cpp index 0370490668ec7a41669212455c766c29fed8085e..d2f374dd9e082b3430451459acd92603be6fcb36 100644 --- a/services/core/jni/com_android_server_VibratorService.cpp +++ b/services/core/jni/com_android_server_VibratorService.cpp @@ -153,9 +153,9 @@ static jlong vibratorPerformEffect(JNIEnv*, jobject, jlong effect, jint strength if (status == Status::OK) { return lengthMs; } else if (status != Status::UNSUPPORTED_OPERATION) { - // Don't warn on UNSUPPORTED_OPERATION, that's a normal even and just means the motor - // doesn't have a pre-defined waveform to perform for it, so we should just fall back - // to the framework waveforms. + // Don't warn on UNSUPPORTED_OPERATION, that's a normal event and just means the motor + // doesn't have a pre-defined waveform to perform for it, so we should just give the + // opportunity to fall back to the framework waveforms. ALOGE("Failed to perform haptic effect: effect=%" PRId64 ", strength=%" PRId32 ", error=%" PRIu32 ").", static_cast(effect), static_cast(strength), static_cast(status)); diff --git a/services/core/jni/com_android_server_am_BatteryStatsService.cpp b/services/core/jni/com_android_server_am_BatteryStatsService.cpp index 2dc388a5873a76974e589600d658d31b3322fa75..ae7d6daa649b0dfbfe3ce8a826370cfebbb8f0d8 100644 --- a/services/core/jni/com_android_server_am_BatteryStatsService.cpp +++ b/services/core/jni/com_android_server_am_BatteryStatsService.cpp @@ -63,6 +63,12 @@ extern sp gPowerHalV1_0; extern std::mutex gPowerHalMutex; extern bool getPowerHal(); +// Java methods used in getLowPowerStats +static jmethodID jgetAndUpdatePlatformState = NULL; +static jmethodID jgetSubsystem = NULL; +static jmethodID jputVoter = NULL; +static jmethodID jputState = NULL; + static void wakeup_callback(bool success) { ALOGV("In wakeup_callback: %s", success ? "resumed from suspend" : "suspend aborted"); @@ -185,6 +191,97 @@ static jint nativeWaitWakeup(JNIEnv *env, jobject clazz, jobject outBuf) return mergedreasonpos - mergedreason; } +static void getLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject jrpmStats) { + if (jrpmStats == NULL) { + jniThrowException(env, "java/lang/NullPointerException", + "The rpmstats jni input jobject jrpmStats is null."); + return; + } + if (jgetAndUpdatePlatformState == NULL || jgetSubsystem == NULL + || jputVoter == NULL || jputState == NULL) { + ALOGE("A rpmstats jni jmethodID is null."); + return; + } + + std::lock_guard lock(gPowerHalMutex); + if (!getPowerHal()) { + ALOGE("Power Hal not loaded"); + return; + } + + Return ret = gPowerHalV1_0->getPlatformLowPowerStats( + [&env, &jrpmStats](hidl_vec states, Status status) { + + if (status != Status::SUCCESS) return; + + for (size_t i = 0; i < states.size(); i++) { + const PowerStatePlatformSleepState& state = states[i]; + + jobject jplatformState = env->CallObjectMethod(jrpmStats, + jgetAndUpdatePlatformState, + env->NewStringUTF(state.name.c_str()), + state.residencyInMsecSinceBoot, + state.totalTransitions); + if (jplatformState == NULL) { + ALOGE("The rpmstats jni jobject jplatformState is null."); + return; + } + + for (size_t j = 0; j < state.voters.size(); j++) { + const PowerStateVoter& voter = state.voters[j]; + env->CallVoidMethod(jplatformState, jputVoter, + env->NewStringUTF(voter.name.c_str()), + voter.totalTimeInMsecVotedForSinceBoot, + voter.totalNumberOfTimesVotedSinceBoot); + } + } + }); + if (!ret.isOk()) { + ALOGE("getLowPowerStats() failed: power HAL service not available"); + gPowerHalV1_0 = nullptr; + return; + } + + //Trying to cast to IPower 1.1, this will succeed only for devices supporting 1.1 + sp gPowerHal_1_1 + = android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0); + if (gPowerHal_1_1 == nullptr) { + //This device does not support IPower@1.1, exiting gracefully + return; + } + ret = gPowerHal_1_1->getSubsystemLowPowerStats( + [&env, &jrpmStats](hidl_vec subsystems, Status status) { + + if (status != Status::SUCCESS) return; + + if (subsystems.size() > 0) { + for (size_t i = 0; i < subsystems.size(); i++) { + const PowerStateSubsystem &subsystem = subsystems[i]; + + jobject jsubsystem = env->CallObjectMethod(jrpmStats, jgetSubsystem, + env->NewStringUTF(subsystem.name.c_str())); + if (jsubsystem == NULL) { + ALOGE("The rpmstats jni jobject jsubsystem is null."); + return; + } + + for (size_t j = 0; j < subsystem.states.size(); j++) { + const PowerStateSubsystemSleepState& state = subsystem.states[j]; + env->CallVoidMethod(jsubsystem, jputState, + env->NewStringUTF(state.name.c_str()), + state.residencyInMsecSinceBoot, + state.totalTransitions); + } + } + } + }); + if (!ret.isOk()) { + ALOGE("getSubsystemLowPowerStats() failed: power HAL service not available"); + gPowerHalV1_0 = nullptr; + } + // gPowerHalMutex released here +} + static jint getPlatformLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject outBuf) { char *output = (char*)env->GetDirectBufferAddress(outBuf); char *offset = output; @@ -369,12 +466,33 @@ static jint getSubsystemLowPowerStats(JNIEnv* env, jobject /* clazz */, jobject static const JNINativeMethod method_table[] = { { "nativeWaitWakeup", "(Ljava/nio/ByteBuffer;)I", (void*)nativeWaitWakeup }, + { "getLowPowerStats", "(Lcom/android/internal/os/RpmStats;)V", (void*)getLowPowerStats }, { "getPlatformLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getPlatformLowPowerStats }, { "getSubsystemLowPowerStats", "(Ljava/nio/ByteBuffer;)I", (void*)getSubsystemLowPowerStats }, }; int register_android_server_BatteryStatsService(JNIEnv *env) { + // get java classes and methods + jclass clsRpmStats = env->FindClass("com/android/internal/os/RpmStats"); + jclass clsPowerStatePlatformSleepState = + env->FindClass("com/android/internal/os/RpmStats$PowerStatePlatformSleepState"); + jclass clsPowerStateSubsystem = + env->FindClass("com/android/internal/os/RpmStats$PowerStateSubsystem"); + if (clsRpmStats == NULL || clsPowerStatePlatformSleepState == NULL + || clsPowerStateSubsystem == NULL) { + ALOGE("A rpmstats jni jclass is null."); + } else { + jgetAndUpdatePlatformState = env->GetMethodID(clsRpmStats, "getAndUpdatePlatformState", + "(Ljava/lang/String;JI)Lcom/android/internal/os/RpmStats$PowerStatePlatformSleepState;"); + jgetSubsystem = env->GetMethodID(clsRpmStats, "getSubsystem", + "(Ljava/lang/String;)Lcom/android/internal/os/RpmStats$PowerStateSubsystem;"); + jputVoter = env->GetMethodID(clsPowerStatePlatformSleepState, "putVoter", + "(Ljava/lang/String;JI)V"); + jputState = env->GetMethodID(clsPowerStateSubsystem, "putState", + "(Ljava/lang/String;JI)V"); + } + return jniRegisterNativeMethods(env, "com/android/server/am/BatteryStatsService", method_table, NELEM(method_table)); } diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index c210e149e58272d4cfef7afb3dd9a612dc294dba..21300ed37218aab3d8b8f861c82bf302cba4860f 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "InputManager-JNI" +#define ATRACE_TAG ATRACE_TAG_INPUT + //#define LOG_NDEBUG 0 // Log debug messages about InputReaderPolicy @@ -36,6 +38,7 @@ #include #include #include +#include #include #include @@ -445,16 +448,19 @@ void NativeInputManager::setDisplayViewport(int32_t type, const DisplayViewport& status_t NativeInputManager::registerInputChannel(JNIEnv* /* env */, const sp& inputChannel, const sp& inputWindowHandle, bool monitor) { + ATRACE_CALL(); return mInputManager->getDispatcher()->registerInputChannel( inputChannel, inputWindowHandle, monitor); } status_t NativeInputManager::unregisterInputChannel(JNIEnv* /* env */, const sp& inputChannel) { + ATRACE_CALL(); return mInputManager->getDispatcher()->unregisterInputChannel(inputChannel); } void NativeInputManager::getReaderConfiguration(InputReaderConfiguration* outConfig) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); jint virtualKeyQuietTime = env->CallIntMethod(mServiceObj, @@ -528,6 +534,7 @@ void NativeInputManager::getReaderConfiguration(InputReaderConfiguration* outCon } sp NativeInputManager::obtainPointerController(int32_t /* deviceId */) { + ATRACE_CALL(); AutoMutex _l(mLock); sp controller = mLocked.pointerController.promote(); @@ -560,6 +567,7 @@ void NativeInputManager::ensureSpriteControllerLocked() { } void NativeInputManager::notifyInputDevicesChanged(const Vector& inputDevices) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); size_t count = inputDevices.size(); @@ -591,6 +599,7 @@ void NativeInputManager::notifyInputDevicesChanged(const Vector sp NativeInputManager::getKeyboardLayoutOverlay( const InputDeviceIdentifier& identifier) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); sp result; @@ -616,6 +625,7 @@ sp NativeInputManager::getKeyboardLayoutOverlay( } String8 NativeInputManager::getDeviceAlias(const InputDeviceIdentifier& identifier) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); ScopedLocalRef uniqueIdObj(env, env->NewStringUTF(identifier.uniqueId.string())); @@ -636,6 +646,7 @@ void NativeInputManager::notifySwitch(nsecs_t when, ALOGD("notifySwitch - when=%lld, switchValues=0x%08x, switchMask=0x%08x, policyFlags=0x%x", when, switchValues, switchMask, policyFlags); #endif + ATRACE_CALL(); JNIEnv* env = jniEnv(); @@ -648,6 +659,7 @@ void NativeInputManager::notifyConfigurationChanged(nsecs_t when) { #if DEBUG_INPUT_DISPATCHER_POLICY ALOGD("notifyConfigurationChanged - when=%lld", when); #endif + ATRACE_CALL(); JNIEnv* env = jniEnv(); @@ -660,6 +672,7 @@ nsecs_t NativeInputManager::notifyANR(const sp& inputApp #if DEBUG_INPUT_DISPATCHER_POLICY ALOGD("notifyANR"); #endif + ATRACE_CALL(); JNIEnv* env = jniEnv(); @@ -688,6 +701,7 @@ void NativeInputManager::notifyInputChannelBroken(const sp& i #if DEBUG_INPUT_DISPATCHER_POLICY ALOGD("notifyInputChannelBroken"); #endif + ATRACE_CALL(); JNIEnv* env = jniEnv(); @@ -703,6 +717,7 @@ void NativeInputManager::notifyInputChannelBroken(const sp& i } void NativeInputManager::getDispatcherConfiguration(InputDispatcherConfiguration* outConfig) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); jint keyRepeatTimeout = env->CallIntMethod(mServiceObj, @@ -898,6 +913,7 @@ void NativeInputManager::setCustomPointerIcon(const SpriteIcon& icon) { TouchAffineTransformation NativeInputManager::getTouchAffineTransformation( JNIEnv *env, jfloatArray matrixArr) { + ATRACE_CALL(); ScopedFloatArrayRO matrix(env, matrixArr); assert(matrix.size() == 6); @@ -934,6 +950,7 @@ TouchAffineTransformation NativeInputManager::getTouchAffineTransformation( } bool NativeInputManager::filterInputEvent(const InputEvent* inputEvent, uint32_t policyFlags) { + ATRACE_CALL(); jobject inputEventObj; JNIEnv* env = jniEnv(); @@ -967,6 +984,7 @@ bool NativeInputManager::filterInputEvent(const InputEvent* inputEvent, uint32_t void NativeInputManager::interceptKeyBeforeQueueing(const KeyEvent* keyEvent, uint32_t& policyFlags) { + ATRACE_CALL(); // Policy: // - Ignore untrusted events and pass them along. // - Ask the window manager what to do with normal events and trusted injected events. @@ -1003,6 +1021,7 @@ void NativeInputManager::interceptKeyBeforeQueueing(const KeyEvent* keyEvent, } void NativeInputManager::interceptMotionBeforeQueueing(nsecs_t when, uint32_t& policyFlags) { + ATRACE_CALL(); // Policy: // - Ignore untrusted events and pass them along. // - No special filtering for injected events required at this time. @@ -1048,6 +1067,7 @@ void NativeInputManager::handleInterceptActions(jint wmActions, nsecs_t when, nsecs_t NativeInputManager::interceptKeyBeforeDispatching( const sp& inputWindowHandle, const KeyEvent* keyEvent, uint32_t policyFlags) { + ATRACE_CALL(); // Policy: // - Ignore untrusted events and pass them along. // - Filter normal events and trusted injected events through the window manager policy to @@ -1083,6 +1103,7 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching( bool NativeInputManager::dispatchUnhandledKey(const sp& inputWindowHandle, const KeyEvent* keyEvent, uint32_t policyFlags, KeyEvent* outFallbackKeyEvent) { + ATRACE_CALL(); // Policy: // - Ignore untrusted events and do not perform default handling. bool result = false; @@ -1120,12 +1141,14 @@ bool NativeInputManager::dispatchUnhandledKey(const sp& input } void NativeInputManager::pokeUserActivity(nsecs_t eventTime, int32_t eventType) { + ATRACE_CALL(); android_server_PowerManagerService_userActivity(eventTime, eventType); } bool NativeInputManager::checkInjectEventsPermissionNonReentrant( int32_t injectorPid, int32_t injectorUid) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); jboolean result = env->CallBooleanMethod(mServiceObj, gServiceClassInfo.checkInjectEventsPermission, injectorPid, injectorUid); @@ -1136,6 +1159,7 @@ bool NativeInputManager::checkInjectEventsPermissionNonReentrant( } void NativeInputManager::loadPointerIcon(SpriteIcon* icon) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); ScopedLocalRef pointerIconObj(env, env->CallObjectMethod( @@ -1155,6 +1179,7 @@ void NativeInputManager::loadPointerIcon(SpriteIcon* icon) { } void NativeInputManager::loadPointerResources(PointerResources* outResources) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); loadSystemIconAsSprite(env, mContextObj, POINTER_ICON_STYLE_SPOT_HOVER, @@ -1167,6 +1192,7 @@ void NativeInputManager::loadPointerResources(PointerResources* outResources) { void NativeInputManager::loadAdditionalMouseResources(std::map* outResources, std::map* outAnimationResources) { + ATRACE_CALL(); JNIEnv* env = jniEnv(); for (int iconId = POINTER_ICON_STYLE_CONTEXT_MENU; iconId <= POINTER_ICON_STYLE_GRABBING; diff --git a/services/core/jni/com_android_server_radio_RadioService.cpp b/services/core/jni/com_android_server_radio_RadioService.cpp deleted file mode 100644 index 73887bbd070eca3e1b1f5ed68b1cfcca3f3a9127..0000000000000000000000000000000000000000 --- a/services/core/jni/com_android_server_radio_RadioService.cpp +++ /dev/null @@ -1,208 +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. - */ - -#define LOG_TAG "radio.RadioService.jni" -#define LOG_NDEBUG 0 - -#include "com_android_server_radio_RadioService.h" - -#include "com_android_server_radio_Tuner.h" -#include "com_android_server_radio_convert.h" - -#include -#include -#include -#include -#include - -namespace android { -namespace server { -namespace radio { -namespace RadioService { - -using hardware::Return; -using hardware::hidl_vec; - -namespace V1_0 = hardware::broadcastradio::V1_0; -namespace V1_1 = hardware::broadcastradio::V1_1; - -using V1_0::Class; -using V1_0::Result; - -using V1_0::BandConfig; -using V1_0::ProgramInfo; -using V1_0::MetaData; -using V1_0::ITuner; - -static Mutex gContextMutex; - -static struct { - struct { - jclass clazz; - jmethodID cstor; - } Tuner; -} gjni; - -struct ServiceContext { - ServiceContext() {} - - sp mModule; - -private: - DISALLOW_COPY_AND_ASSIGN(ServiceContext); -}; - - -/** - * Always lock gContextMutex when using native context. - */ -static ServiceContext& getNativeContext(jlong nativeContextHandle) { - auto nativeContext = reinterpret_cast(nativeContextHandle); - LOG_ALWAYS_FATAL_IF(nativeContext == nullptr, "Native context not initialized"); - return *nativeContext; -} - -static jlong nativeInit(JNIEnv *env, jobject obj) { - ALOGV("nativeInit()"); - AutoMutex _l(gContextMutex); - - auto nativeContext = new ServiceContext(); - static_assert(sizeof(jlong) >= sizeof(nativeContext), "jlong is smaller than a pointer"); - return reinterpret_cast(nativeContext); -} - -static void nativeFinalize(JNIEnv *env, jobject obj, jlong nativeContext) { - ALOGV("nativeFinalize()"); - AutoMutex _l(gContextMutex); - - auto ctx = reinterpret_cast(nativeContext); - delete ctx; -} - -static sp getModule(jlong nativeContext) { - ALOGV("getModule()"); - AutoMutex _l(gContextMutex); - auto& ctx = getNativeContext(nativeContext); - - if (ctx.mModule != nullptr) { - return ctx.mModule; - } - - // TODO(b/36863239): what about other HAL implementations? - auto factory = V1_0::IBroadcastRadioFactory::getService(); - if (factory == nullptr) { - ALOGE("Can't retrieve radio HAL implementation"); - return nullptr; - } - - sp module = nullptr; - // TODO(b/36863239): not only AM/FM - factory->connectModule(Class::AM_FM, [&](Result retval, - const sp& result) { - if (retval == Result::OK) { - module = result; - } - }); - - ALOGE_IF(module == nullptr, "Couldn't connect module"); - ctx.mModule = module; - return module; -} - -static jobject nativeOpenTuner(JNIEnv *env, jobject obj, long nativeContext, jint moduleId, - jobject bandConfig, bool withAudio, jobject callback) { - ALOGV("nativeOpenTuner()"); - EnvWrapper wrap(env); - - if (callback == nullptr) { - ALOGE("Callback is empty"); - return nullptr; - } - - // TODO(b/36863239): use moduleId - auto module = getModule(nativeContext); - if (module == nullptr) { - return nullptr; - } - - HalRevision halRev; - if (V1_1::IBroadcastRadio::castFrom(module).withDefault(nullptr) != nullptr) { - ALOGI("Opening tuner with broadcast radio HAL 1.1"); - halRev = HalRevision::V1_1; - } else { - ALOGI("Opening tuner with broadcast radio HAL 1.0"); - halRev = HalRevision::V1_0; - } - - Region region; - BandConfig bandConfigHal = convert::BandConfigToHal(env, bandConfig, region); - - auto tuner = wrap(env->NewObject(gjni.Tuner.clazz, gjni.Tuner.cstor, - callback, halRev, region, withAudio)); - if (tuner == nullptr) { - ALOGE("Unable to create new tuner object."); - return nullptr; - } - - auto tunerCb = Tuner::getNativeCallback(env, tuner); - Result halResult; - sp halTuner = nullptr; - - auto hidlResult = module->openTuner(bandConfigHal, withAudio, tunerCb, - [&](Result result, const sp& tuner) { - halResult = result; - halTuner = tuner; - }); - if (!hidlResult.isOk() || halResult != Result::OK || halTuner == nullptr) { - ALOGE("Couldn't open tuner"); - ALOGE_IF(hidlResult.isOk(), "halResult = %d", halResult); - ALOGE_IF(!hidlResult.isOk(), "hidlResult = %s", hidlResult.description().c_str()); - return nullptr; - } - - Tuner::setHalTuner(env, tuner, halTuner); - ALOGI("Opened tuner %p", halTuner.get()); - return tuner.release(); -} - -static const JNINativeMethod gRadioServiceMethods[] = { - { "nativeInit", "()J", (void*)nativeInit }, - { "nativeFinalize", "(J)V", (void*)nativeFinalize }, - { "nativeOpenTuner", "(JILandroid/hardware/radio/RadioManager$BandConfig;Z" - "Landroid/hardware/radio/ITunerCallback;)Lcom/android/server/radio/Tuner;", - (void*)nativeOpenTuner }, -}; - -} // namespace RadioService -} // namespace radio -} // namespace server - -void register_android_server_radio_RadioService(JNIEnv *env) { - using namespace server::radio::RadioService; - - register_android_server_radio_convert(env); - - auto tunerClass = FindClassOrDie(env, "com/android/server/radio/Tuner"); - gjni.Tuner.clazz = MakeGlobalRefOrDie(env, tunerClass); - gjni.Tuner.cstor = GetMethodIDOrDie(env, tunerClass, "", - "(Landroid/hardware/radio/ITunerCallback;IIZ)V"); - - auto res = jniRegisterNativeMethods(env, "com/android/server/radio/RadioService", - gRadioServiceMethods, NELEM(gRadioServiceMethods)); - LOG_ALWAYS_FATAL_IF(res < 0, "Unable to register native methods."); -} - -} // namespace android diff --git a/services/core/jni/com_android_server_radio_convert.cpp b/services/core/jni/com_android_server_radio_convert.cpp deleted file mode 100644 index 19abf8a0f0f0784e645642f28047bbb9d816ec5b..0000000000000000000000000000000000000000 --- a/services/core/jni/com_android_server_radio_convert.cpp +++ /dev/null @@ -1,397 +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. - */ - -#define LOG_TAG "radio.convert.jni" -#define LOG_NDEBUG 0 - -#include "com_android_server_radio_convert.h" - -#include -#include -#include - -namespace android { -namespace server { -namespace radio { -namespace convert { - -using hardware::Return; -using hardware::hidl_vec; - -using V1_0::Band; -using V1_0::Deemphasis; -using V1_0::Direction; -using V1_0::MetadataType; -using V1_0::Result; -using V1_0::Rds; -using V1_1::ProgramListResult; - -static struct { - struct { - jfieldID descriptor; - } BandConfig; - struct { - jclass clazz; - jmethodID cstor; - jfieldID stereo; - jfieldID rds; - jfieldID ta; - jfieldID af; - jfieldID ea; - } FmBandConfig; - struct { - jclass clazz; - jmethodID cstor; - jfieldID stereo; - } AmBandConfig; - - struct { - jfieldID region; - jfieldID type; - jfieldID lowerLimit; - jfieldID upperLimit; - jfieldID spacing; - } BandDescriptor; - - struct { - jclass clazz; - jmethodID cstor; - } ProgramInfo; - - struct { - jclass clazz; - jmethodID cstor; - jmethodID putIntFromNative; - jmethodID putStringFromNative; - jmethodID putBitmapFromNative; - jmethodID putClockFromNative; - } RadioMetadata; - - struct { - jclass clazz; - jmethodID cstor; - } RuntimeException; - - struct { - jclass clazz; - jmethodID cstor; - } ParcelableException; -} gjni; - -bool __ThrowIfFailedHidl(JNIEnv *env, const hardware::details::return_status &hidlResult) { - if (hidlResult.isOk()) return false; - - ThrowParcelableRuntimeException(env, "HIDL call failed: " + hidlResult.description()); - return true; -} - -bool __ThrowIfFailed(JNIEnv *env, const Result halResult) { - switch (halResult) { - case Result::OK: - return false; - case Result::NOT_INITIALIZED: - ThrowParcelableRuntimeException(env, "Result::NOT_INITIALIZED"); - return true; - case Result::INVALID_ARGUMENTS: - jniThrowException(env, "java/lang/IllegalArgumentException", - "Result::INVALID_ARGUMENTS"); - return true; - case Result::INVALID_STATE: - jniThrowException(env, "java/lang/IllegalStateException", "Result::INVALID_STATE"); - return true; - case Result::TIMEOUT: - ThrowParcelableRuntimeException(env, "Result::TIMEOUT (unexpected here)"); - return true; - default: - ThrowParcelableRuntimeException(env, "Unknown failure, result: " - + std::to_string(static_cast(halResult))); - return true; - } -} - -bool __ThrowIfFailed(JNIEnv *env, const ProgramListResult halResult) { - switch (halResult) { - case ProgramListResult::NOT_READY: - jniThrowException(env, "java/lang/IllegalStateException", "Scan is in progress"); - return true; - case ProgramListResult::NOT_STARTED: - jniThrowException(env, "java/lang/IllegalStateException", "Scan has not been started"); - return true; - case ProgramListResult::UNAVAILABLE: - ThrowParcelableRuntimeException(env, - "ProgramListResult::UNAVAILABLE (unexpected here)"); - return true; - default: - return __ThrowIfFailed(env, static_cast(halResult)); - } -} - -void ThrowParcelableRuntimeException(JNIEnv *env, const std::string& msg) { - EnvWrapper wrap(env); - - auto jMsg = wrap(env->NewStringUTF(msg.c_str())); - auto runtimeExc = wrap(env->NewObject(gjni.RuntimeException.clazz, - gjni.RuntimeException.cstor, jMsg.get())); - auto parcelableExc = wrap(env->NewObject(gjni.ParcelableException.clazz, - gjni.ParcelableException.cstor, runtimeExc.get())); - - auto res = env->Throw(static_cast(parcelableExc.get())); - ALOGE_IF(res != JNI_OK, "Couldn't throw parcelable runtime exception"); -} - -static Rds RdsForRegion(bool rds, Region region) { - if (!rds) return Rds::NONE; - - switch(region) { - case Region::ITU_1: - case Region::OIRT: - case Region::JAPAN: - case Region::KOREA: - return Rds::WORLD; - case Region::ITU_2: - return Rds::US; - default: - ALOGE("Unexpected region: %d", region); - return Rds::NONE; - } -} - -static Deemphasis DeemphasisForRegion(Region region) { - switch(region) { - case Region::KOREA: - case Region::ITU_2: - return Deemphasis::D75; - case Region::ITU_1: - case Region::OIRT: - case Region::JAPAN: - return Deemphasis::D50; - default: - ALOGE("Unexpected region: %d", region); - return Deemphasis::D50; - } -} - -JavaRef BandConfigFromHal(JNIEnv *env, const V1_0::BandConfig &config, Region region) { - ALOGV("BandConfigFromHal()"); - EnvWrapper wrap(env); - - jint spacing = config.spacings.size() > 0 ? config.spacings[0] : 0; - ALOGW_IF(config.spacings.size() == 0, "No channel spacing specified"); - - switch (config.type) { - case Band::FM: - case Band::FM_HD: { - auto& fm = config.ext.fm; - return wrap(env->NewObject(gjni.FmBandConfig.clazz, gjni.FmBandConfig.cstor, - region, config.type, config.lowerLimit, config.upperLimit, spacing, - fm.stereo, fm.rds != Rds::NONE, fm.ta, fm.af, fm.ea)); - } - case Band::AM: - case Band::AM_HD: { - auto& am = config.ext.am; - return wrap(env->NewObject(gjni.AmBandConfig.clazz, gjni.AmBandConfig.cstor, - region, config.type, config.lowerLimit, config.upperLimit, spacing, - am.stereo)); - } - default: - ALOGE("Unsupported band type: %d", config.type); - return nullptr; - } -} - -V1_0::BandConfig BandConfigToHal(JNIEnv *env, jobject jConfig, Region ®ion) { - ALOGV("BandConfigToHal()"); - auto jDescriptor = env->GetObjectField(jConfig, gjni.BandConfig.descriptor); - if (jDescriptor == nullptr) { - ALOGE("Descriptor is missing"); - return {}; - } - - region = static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.region)); - - V1_0::BandConfig config = {}; - config.type = static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.type)); - config.antennaConnected = false; // just don't set it - config.lowerLimit = env->GetIntField(jDescriptor, gjni.BandDescriptor.lowerLimit); - config.upperLimit = env->GetIntField(jDescriptor, gjni.BandDescriptor.upperLimit); - config.spacings = hidl_vec({ - static_cast(env->GetIntField(jDescriptor, gjni.BandDescriptor.spacing)) - }); - - if (env->IsInstanceOf(jConfig, gjni.FmBandConfig.clazz)) { - auto& fm = config.ext.fm; - fm.deemphasis = DeemphasisForRegion(region); - fm.stereo = env->GetBooleanField(jConfig, gjni.FmBandConfig.stereo); - fm.rds = RdsForRegion(env->GetBooleanField(jConfig, gjni.FmBandConfig.rds), region); - fm.ta = env->GetBooleanField(jConfig, gjni.FmBandConfig.ta); - fm.af = env->GetBooleanField(jConfig, gjni.FmBandConfig.af); - fm.ea = env->GetBooleanField(jConfig, gjni.FmBandConfig.ea); - } else if (env->IsInstanceOf(jConfig, gjni.AmBandConfig.clazz)) { - auto& am = config.ext.am; - am.stereo = env->GetBooleanField(jConfig, gjni.AmBandConfig.stereo); - } else { - ALOGE("Unexpected band config type"); - return {}; - } - - return config; -} - -Direction DirectionToHal(bool directionDown) { - return directionDown ? Direction::DOWN : Direction::UP; -} - -static JavaRef MetadataFromHal(JNIEnv *env, const hidl_vec metadata) { - ALOGV("MetadataFromHal()"); - EnvWrapper wrap(env); - - if (metadata.size() == 0) return nullptr; - - auto jMetadata = wrap(env->NewObject(gjni.RadioMetadata.clazz, gjni.RadioMetadata.cstor)); - - for (auto& item : metadata) { - jint key = static_cast(item.key); - jint status = 0; - switch (item.type) { - case MetadataType::INT: - ALOGV("metadata INT %d", key); - status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putIntFromNative, - key, item.intValue); - break; - case MetadataType::TEXT: { - ALOGV("metadata TEXT %d", key); - auto value = wrap(env->NewStringUTF(item.stringValue.c_str())); - status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putStringFromNative, - key, value.get()); - break; - } - case MetadataType::RAW: { - ALOGV("metadata RAW %d", key); - auto len = item.rawValue.size(); - if (len == 0) break; - auto value = wrap(env->NewByteArray(len)); - if (value == nullptr) { - ALOGE("Failed to allocate byte array of len %zu", len); - break; - } - env->SetByteArrayRegion(value.get(), 0, len, - reinterpret_cast(item.rawValue.data())); - status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putBitmapFromNative, - key, value.get()); - break; - } - case MetadataType::CLOCK: - ALOGV("metadata CLOCK %d", key); - status = env->CallIntMethod(jMetadata.get(), gjni.RadioMetadata.putClockFromNative, - key, item.clockValue.utcSecondsSinceEpoch, - item.clockValue.timezoneOffsetInMinutes); - break; - default: - ALOGW("invalid metadata type %d", item.type); - } - ALOGE_IF(status != 0, "Failed inserting metadata %d (of type %d)", key, item.type); - } - - return jMetadata; -} - -static JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info10, - const V1_1::ProgramInfo *info11) { - ALOGV("ProgramInfoFromHal()"); - EnvWrapper wrap(env); - - auto jMetadata = MetadataFromHal(env, info10.metadata); - auto jVendorExtension = info11 ? - wrap(env->NewStringUTF(info11->vendorExension.c_str())) : nullptr; - - return wrap(env->NewObject(gjni.ProgramInfo.clazz, gjni.ProgramInfo.cstor, info10.channel, - info10.subChannel, info10.tuned, info10.stereo, info10.digital, info10.signalStrength, - jMetadata.get(), info11 ? info11->flags : 0, jVendorExtension.get())); -} - -JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_0::ProgramInfo &info) { - return ProgramInfoFromHal(env, info, nullptr); -} - -JavaRef ProgramInfoFromHal(JNIEnv *env, const V1_1::ProgramInfo &info) { - return ProgramInfoFromHal(env, info.base, &info); -} - -} // namespace convert -} // namespace radio -} // namespace server - -void register_android_server_radio_convert(JNIEnv *env) { - using namespace server::radio::convert; - - auto bandConfigClass = FindClassOrDie(env, "android/hardware/radio/RadioManager$BandConfig"); - gjni.BandConfig.descriptor = GetFieldIDOrDie(env, bandConfigClass, - "mDescriptor", "Landroid/hardware/radio/RadioManager$BandDescriptor;"); - - auto fmBandConfigClass = FindClassOrDie(env, - "android/hardware/radio/RadioManager$FmBandConfig"); - gjni.FmBandConfig.clazz = MakeGlobalRefOrDie(env, fmBandConfigClass); - gjni.FmBandConfig.cstor = GetMethodIDOrDie(env, fmBandConfigClass, - "", "(IIIIIZZZZZ)V"); - gjni.FmBandConfig.stereo = GetFieldIDOrDie(env, fmBandConfigClass, "mStereo", "Z"); - gjni.FmBandConfig.rds = GetFieldIDOrDie(env, fmBandConfigClass, "mRds", "Z"); - gjni.FmBandConfig.ta = GetFieldIDOrDie(env, fmBandConfigClass, "mTa", "Z"); - gjni.FmBandConfig.af = GetFieldIDOrDie(env, fmBandConfigClass, "mAf", "Z"); - gjni.FmBandConfig.ea = GetFieldIDOrDie(env, fmBandConfigClass, "mEa", "Z"); - - auto amBandConfigClass = FindClassOrDie(env, - "android/hardware/radio/RadioManager$AmBandConfig"); - gjni.AmBandConfig.clazz = MakeGlobalRefOrDie(env, amBandConfigClass); - gjni.AmBandConfig.cstor = GetMethodIDOrDie(env, amBandConfigClass, "", "(IIIIIZ)V"); - gjni.AmBandConfig.stereo = GetFieldIDOrDie(env, amBandConfigClass, "mStereo", "Z"); - - auto bandDescriptorClass = FindClassOrDie(env, - "android/hardware/radio/RadioManager$BandDescriptor"); - gjni.BandDescriptor.region = GetFieldIDOrDie(env, bandDescriptorClass, "mRegion", "I"); - gjni.BandDescriptor.type = GetFieldIDOrDie(env, bandDescriptorClass, "mType", "I"); - gjni.BandDescriptor.lowerLimit = GetFieldIDOrDie(env, bandDescriptorClass, "mLowerLimit", "I"); - gjni.BandDescriptor.upperLimit = GetFieldIDOrDie(env, bandDescriptorClass, "mUpperLimit", "I"); - gjni.BandDescriptor.spacing = GetFieldIDOrDie(env, bandDescriptorClass, "mSpacing", "I"); - - auto programInfoClass = FindClassOrDie(env, "android/hardware/radio/RadioManager$ProgramInfo"); - gjni.ProgramInfo.clazz = MakeGlobalRefOrDie(env, programInfoClass); - gjni.ProgramInfo.cstor = GetMethodIDOrDie(env, programInfoClass, "", - "(IIZZZILandroid/hardware/radio/RadioMetadata;ILjava/lang/String;)V"); - - auto radioMetadataClass = FindClassOrDie(env, "android/hardware/radio/RadioMetadata"); - gjni.RadioMetadata.clazz = MakeGlobalRefOrDie(env, radioMetadataClass); - gjni.RadioMetadata.cstor = GetMethodIDOrDie(env, radioMetadataClass, "", "()V"); - gjni.RadioMetadata.putIntFromNative = GetMethodIDOrDie(env, radioMetadataClass, - "putIntFromNative", "(II)I"); - gjni.RadioMetadata.putStringFromNative = GetMethodIDOrDie(env, radioMetadataClass, - "putStringFromNative", "(ILjava/lang/String;)I"); - gjni.RadioMetadata.putBitmapFromNative = GetMethodIDOrDie(env, radioMetadataClass, - "putBitmapFromNative", "(I[B)I"); - gjni.RadioMetadata.putClockFromNative = GetMethodIDOrDie(env, radioMetadataClass, - "putClockFromNative", "(IJI)I"); - - auto runtimeExcClass = FindClassOrDie(env, "java/lang/RuntimeException"); - gjni.RuntimeException.clazz = MakeGlobalRefOrDie(env, runtimeExcClass); - gjni.RuntimeException.cstor = GetMethodIDOrDie(env, runtimeExcClass, "", - "(Ljava/lang/String;)V"); - - auto parcelableExcClass = FindClassOrDie(env, "android/os/ParcelableException"); - gjni.ParcelableException.clazz = MakeGlobalRefOrDie(env, parcelableExcClass); - gjni.ParcelableException.cstor = GetMethodIDOrDie(env, parcelableExcClass, "", - "(Ljava/lang/Throwable;)V"); -} - -} // namespace android diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index 6e648c962ef5e071b9290bb8d711bfab009eca91..e8ef1686e1b4c7fd47a9aa4b732fd8e43e1a33fd 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -19,8 +19,8 @@ #include "utils/Log.h" #include "utils/misc.h" -#include "com_android_server_radio_RadioService.h" -#include "com_android_server_radio_Tuner.h" +#include "BroadcastRadio/BroadcastRadioService.h" +#include "BroadcastRadio/Tuner.h" namespace android { int register_android_server_AlarmManagerService(JNIEnv* env); @@ -67,8 +67,8 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) } ALOG_ASSERT(env, "Could not retrieve the env!"); - register_android_server_radio_RadioService(env); - register_android_server_radio_Tuner(vm, env); + register_android_server_broadcastradio_BroadcastRadioService(env); + register_android_server_broadcastradio_Tuner(vm, env); register_android_server_PowerManagerService(env); register_android_server_SerialService(env); register_android_server_InputApplicationHandle(env); diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index d249b0a9e1c055352e56bd2b072c3ddeb50fbefa..38d7d25dc343eb33fc16199d230e24d9a9a28740 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -99,6 +99,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManagerInternal; import android.content.pm.ParceledListSlice; +import android.content.pm.PermissionInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.StringParceledListSlice; @@ -152,6 +153,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.EventLog; import android.util.Log; import android.util.Pair; import android.util.Slog; @@ -2020,12 +2022,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void setDeviceOwnerSystemPropertyLocked() { final boolean deviceProvisioned = mInjector.settingsGlobalGetInt(Settings.Global.DEVICE_PROVISIONED, 0) != 0; + final boolean hasDeviceOwner = mOwners.hasDeviceOwner(); // If the device is not provisioned and there is currently no device owner, do not set the - // read-only system property yet, since Device owner may still be provisioned. For Wear - // devices, if there is already a device owner then it's OK to set the property to true now, - // regardless the provision state. - final boolean isWatchWithDeviceOwner = mIsWatch && mOwners.hasDeviceOwner(); - if (!isWatchWithDeviceOwner && !deviceProvisioned) { + // read-only system property yet, since Device owner may still be provisioned. + if (!hasDeviceOwner && !deviceProvisioned) { return; } // Still at the first stage of CryptKeeper double bounce, mOwners.hasDeviceOwner is @@ -2034,20 +2034,16 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return; } - if (!TextUtils.isEmpty(mInjector.systemPropertiesGet(PROPERTY_DEVICE_OWNER_PRESENT))) { + if (!mInjector.systemPropertiesGet(PROPERTY_DEVICE_OWNER_PRESENT, "").isEmpty()) { Slog.w(LOG_TAG, "Trying to set ro.device_owner, but it has already been set?"); } else { - if (mOwners.hasDeviceOwner()) { - mInjector.systemPropertiesSet(PROPERTY_DEVICE_OWNER_PRESENT, "true"); - Slog.i(LOG_TAG, "Set ro.device_owner property to true"); + final String value = Boolean.toString(hasDeviceOwner); + mInjector.systemPropertiesSet(PROPERTY_DEVICE_OWNER_PRESENT, value); + Slog.i(LOG_TAG, "Set ro.device_owner property to " + value); - if (mInjector.securityLogGetLoggingEnabledProperty()) { - mSecurityLogMonitor.start(); - maybePauseDeviceWideLoggingLocked(); - } - } else { - mInjector.systemPropertiesSet(PROPERTY_DEVICE_OWNER_PRESENT, "false"); - Slog.i(LOG_TAG, "Set ro.device_owner property to false"); + if (hasDeviceOwner && mInjector.securityLogGetLoggingEnabledProperty()) { + mSecurityLogMonitor.start(); + maybePauseDeviceWideLoggingLocked(); } } } @@ -4083,6 +4079,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return true; } enforceFullCrossUsersPermission(userHandle); + enforceUserUnlocked(userHandle, parent); synchronized (this) { // This API can only be called by an active device admin, @@ -4102,7 +4099,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { enforceManagedProfile(userHandle, "call APIs refering to the parent profile"); synchronized (this) { - int targetUser = getProfileParentId(userHandle); + final int targetUser = getProfileParentId(userHandle); + enforceUserUnlocked(targetUser, false); DevicePolicyData policy = getUserDataUnchecked(getCredentialOwner(userHandle, false)); return isActivePasswordSufficientForUserLocked(policy, targetUser, false); } @@ -4110,7 +4108,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private boolean isActivePasswordSufficientForUserLocked( DevicePolicyData policy, int userHandle, boolean parent) { - enforceUserUnlocked(userHandle, parent); + final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent); + if (requiredPasswordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { + // A special case is when there is no required password quality, then we just return + // true since any password would be sufficient. This is for the scenario when a work + // profile is first created so there is no information about the current password but + // it should be considered sufficient as there is no password requirement either. + // This is useful since it short-circuits the password checkpoint for FDE device below. + return true; + } if (!mInjector.storageManagerIsFileBasedEncryptionEnabled() && !policy.mPasswordStateHasBeenSetSinceBoot) { @@ -4122,7 +4128,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return policy.mPasswordValidAtLastCheckpoint; } - final int requiredPasswordQuality = getPasswordQuality(null, userHandle, parent); if (policy.mActivePasswordMetrics.quality < requiredPasswordQuality) { return false; } @@ -4444,7 +4449,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { result = mLockPatternUtils.setLockCredentialWithToken(password, TextUtils.isEmpty(password) ? LockPatternUtils.CREDENTIAL_TYPE_NONE : LockPatternUtils.CREDENTIAL_TYPE_PASSWORD, - tokenHandle, token, userHandle); + quality, tokenHandle, token, userHandle); } boolean requireEntry = (flags & DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY) != 0; if (requireEntry) { @@ -5448,6 +5453,11 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + /** + * Notify DPMS regarding the metric of the current password. This happens when the user changes + * the password, but also when the user just unlocks the keyguard. In comparison, + * reportPasswordChanged() is only called when the user changes the password. + */ @Override public void setActivePasswordState(PasswordMetrics metrics, int userHandle) { if (!mHasFeature) { @@ -9582,6 +9592,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { < android.os.Build.VERSION_CODES.M) { return false; } + if (!isRuntimePermission(permission)) { + EventLog.writeEvent(0x534e4554, "62623498", user.getIdentifier(), ""); + return false; + } final PackageManager packageManager = mInjector.getPackageManager(); switch (grantState) { case DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED: { @@ -9608,6 +9622,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { return true; } catch (SecurityException se) { return false; + } catch (NameNotFoundException e) { + return false; } finally { mInjector.binderRestoreCallingIdentity(ident); } @@ -9657,6 +9673,13 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + public boolean isRuntimePermission(String permissionName) throws NameNotFoundException { + final PackageManager packageManager = mInjector.getPackageManager(); + PermissionInfo permissionInfo = packageManager.getPermissionInfo(permissionName, 0); + return (permissionInfo.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE) + == PermissionInfo.PROTECTION_DANGEROUS; + } + @Override public boolean isProvisioningAllowed(String action, String packageName) { Preconditions.checkNotNull(packageName); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index d89f6d0e8aa1394537028bfa86c21f260866e02a..60f201ff4aac29c60cd0137c7abfd9a8af7b472f 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -45,7 +45,7 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.os.storage.IStorageManager; -import android.util.BootTimingsTraceLog; +import android.util.TimingsTraceLog; import android.util.DisplayMetrics; import android.util.EventLog; import android.util.Slog; @@ -98,7 +98,7 @@ import com.android.server.pm.UserManagerService; import com.android.server.policy.PhoneWindowManager; import com.android.server.power.PowerManagerService; import com.android.server.power.ShutdownThread; -import com.android.server.radio.RadioService; +import com.android.server.broadcastradio.BroadcastRadioService; import com.android.server.restrictions.RestrictionsManagerService; import com.android.server.security.KeyAttestationApplicationIdProviderService; import com.android.server.security.KeyChainSystemService; @@ -121,7 +121,6 @@ import java.io.File; import java.io.IOException; import java.util.Locale; import java.util.Timer; -import java.util.TimerTask; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Future; @@ -135,8 +134,8 @@ public final class SystemServer { // Tag for timing measurement of non-main asynchronous operations. private static final String SYSTEM_SERVER_TIMING_ASYNC_TAG = SYSTEM_SERVER_TIMING_TAG + "Async"; - private static final BootTimingsTraceLog BOOT_TIMINGS_TRACE_LOG - = new BootTimingsTraceLog(SYSTEM_SERVER_TIMING_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + private static final TimingsTraceLog BOOT_TIMINGS_TRACE_LOG + = new TimingsTraceLog(SYSTEM_SERVER_TIMING_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); private static final String ENCRYPTING_STATE = "trigger_restart_min_framework"; private static final String ENCRYPTED_STATE = "1"; @@ -171,6 +170,8 @@ public final class SystemServer { "com.android.server.wifi.aware.WifiAwareService"; private static final String WIFI_P2P_SERVICE_CLASS = "com.android.server.wifi.p2p.WifiP2pService"; + private static final String LOWPAN_SERVICE_CLASS = + "com.android.server.lowpan.LowpanService"; private static final String ETHERNET_SERVICE_CLASS = "com.android.server.ethernet.EthernetService"; private static final String JOB_SCHEDULER_SERVICE_CLASS = @@ -189,6 +190,8 @@ public final class SystemServer { "com.google.android.clockwork.connectivity.WearConnectivityService"; private static final String WEAR_DISPLAY_SERVICE_CLASS = "com.google.android.clockwork.display.WearDisplayService"; + private static final String WEAR_LEFTY_SERVICE_CLASS = + "com.google.android.clockwork.lefty.WearLeftyService"; private static final String WEAR_TIME_SERVICE_CLASS = "com.google.android.clockwork.time.WearTimeService"; private static final String ACCOUNT_SERVICE_CLASS = @@ -634,7 +637,7 @@ public final class SystemServer { // Start sensor service in a separate thread. Completion should be checked // before using it. mSensorServiceStart = SystemServerInitThreadPool.get().submit(() -> { - BootTimingsTraceLog traceLog = new BootTimingsTraceLog( + TimingsTraceLog traceLog = new TimingsTraceLog( SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); traceLog.traceBegin(START_SENSOR_SERVICE); startSensorService(); @@ -715,8 +718,7 @@ public final class SystemServer { boolean disableVrManager = SystemProperties.getBoolean("config.disable_vrmanager", false); boolean disableCameraService = SystemProperties.getBoolean("config.disable_cameraservice", false); - // TODO(b/36863239): Remove when transitioned from native service. - boolean enableRadioService = SystemProperties.getBoolean("config.enable_java_radio", false); + boolean enableLeftyService = SystemProperties.getBoolean("config.enable_lefty", false); boolean isEmulator = SystemProperties.get("ro.kernel.qemu").equals("1"); @@ -734,7 +736,7 @@ public final class SystemServer { mZygotePreload = SystemServerInitThreadPool.get().submit(() -> { try { Slog.i(TAG, SECONDARY_ZYGOTE_PRELOAD); - BootTimingsTraceLog traceLog = new BootTimingsTraceLog( + TimingsTraceLog traceLog = new TimingsTraceLog( SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); traceLog.traceBegin(SECONDARY_ZYGOTE_PRELOAD); if (!Process.zygoteProcess.preloadDefault(Build.SUPPORTED_32_BIT_ABIS[0])) { @@ -827,9 +829,11 @@ public final class SystemServer { // because it need to connect to SensorManager. This have to start // after START_SENSOR_SERVICE is done. SystemServerInitThreadPool.get().submit(() -> { - traceBeginAndSlog(START_HIDL_SERVICES); + TimingsTraceLog traceLog = new TimingsTraceLog( + SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); + traceLog.traceBegin(START_HIDL_SERVICES); startHidlServices(); - traceEnd(); + traceLog.traceEnd(); }, START_HIDL_SERVICES); if (!disableVrManager) { @@ -1104,6 +1108,13 @@ public final class SystemServer { traceEnd(); } + if (context.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_LOWPAN)) { + traceBeginAndSlog("StartLowpan"); + mSystemServiceManager.startService(LOWPAN_SERVICE_CLASS); + traceEnd(); + } + if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_ETHERNET) || mPackageManager.hasSystemFeature(PackageManager.FEATURE_USB_HOST)) { traceBeginAndSlog("StartEthernet"); @@ -1212,10 +1223,9 @@ public final class SystemServer { mSystemServiceManager.startService(AudioService.Lifecycle.class); traceEnd(); - if (enableRadioService && - mPackageManager.hasSystemFeature(PackageManager.FEATURE_RADIO)) { - traceBeginAndSlog("StartRadioService"); - mSystemServiceManager.startService(RadioService.class); + if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_BROADCAST_RADIO)) { + traceBeginAndSlog("StartBroadcastRadioService"); + mSystemServiceManager.startService(BroadcastRadioService.class); traceEnd(); } @@ -1319,11 +1329,13 @@ public final class SystemServer { traceEnd(); } - if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_VOICE_RECOGNIZERS)) { - traceBeginAndSlog("StartVoiceRecognitionManager"); - mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS); - traceEnd(); - } + // We need to always start this service, regardless of whether the + // FEATURE_VOICE_RECOGNIZERS feature is set, because it needs to take care + // of initializing various settings. It will internally modify its behavior + // based on that feature. + traceBeginAndSlog("StartVoiceRecognitionManager"); + mSystemServiceManager.startService(VOICE_RECOGNITION_MANAGER_SERVICE_CLASS); + traceEnd(); if (GestureLauncherService.isGestureLauncherEnabled(context.getResources())) { traceBeginAndSlog("StartGestureLauncher"); @@ -1520,6 +1532,12 @@ public final class SystemServer { mSystemServiceManager.startService(WEAR_DISPLAY_SERVICE_CLASS); mSystemServiceManager.startService(WEAR_TIME_SERVICE_CLASS); traceEnd(); + + if (enableLeftyService) { + traceBeginAndSlog("StartWearLeftyService"); + mSystemServiceManager.startService(WEAR_LEFTY_SERVICE_CLASS); + traceEnd(); + } } } @@ -1683,7 +1701,7 @@ public final class SystemServer { if (!mOnlyCore) { webviewPrep = SystemServerInitThreadPool.get().submit(() -> { Slog.i(TAG, WEBVIEW_PREPARATION); - BootTimingsTraceLog traceLog = new BootTimingsTraceLog( + TimingsTraceLog traceLog = new TimingsTraceLog( SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER); traceLog.traceBegin(WEBVIEW_PREPARATION); ConcurrentUtils.waitForFutureNoInterrupt(mZygotePreload, "Zygote preload"); diff --git a/services/print/java/com/android/server/print/PrintManagerService.java b/services/print/java/com/android/server/print/PrintManagerService.java index 3ec83800557a86e10810bffbbbe5db2f043a7cd4..5121c29d688d972e4cc6e696b3705f2035979079 100644 --- a/services/print/java/com/android/server/print/PrintManagerService.java +++ b/services/print/java/com/android/server/print/PrintManagerService.java @@ -263,6 +263,8 @@ public final class PrintManagerService extends SystemService { Preconditions.checkFlagsArgument(selectionFlags, PrintManager.DISABLED_SERVICES | PrintManager.ENABLED_SERVICES); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICES, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -316,6 +318,8 @@ public final class PrintManagerService extends SystemService { @Override public List getPrintServiceRecommendations(int userId) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -538,6 +542,8 @@ public final class PrintManagerService extends SystemService { int userId) throws RemoteException { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PRINT_SERVICES, + null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -560,6 +566,8 @@ public final class PrintManagerService extends SystemService { int userId) { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PRINT_SERVICES, + null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -583,6 +591,8 @@ public final class PrintManagerService extends SystemService { throws RemoteException { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -605,6 +615,8 @@ public final class PrintManagerService extends SystemService { IRecommendationsChangeListener listener, int userId) { listener = Preconditions.checkNotNull(listener); + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.READ_PRINT_SERVICE_RECOMMENDATIONS, null); final int resolvedUserId = resolveCallingUserEnforcingPermissions(userId); final UserState userState; synchronized (mLock) { @@ -724,14 +736,18 @@ public final class PrintManagerService extends SystemService { UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false, false /* enforceUserUnlockingOrUnlocked */); + boolean prunePrintServices = false; synchronized (mLock) { if (hadPrintService(userState, packageName) || hasPrintService(packageName)) { userState.updateIfNeededLocked(); + prunePrintServices = true; } } - userState.prunePrintServices(); + if (prunePrintServices) { + userState.prunePrintServices(); + } } @Override @@ -740,13 +756,17 @@ public final class PrintManagerService extends SystemService { UserState userState = getOrCreateUserStateLocked(getChangingUserId(), false, false /* enforceUserUnlockingOrUnlocked */); + boolean prunePrintServices = false; synchronized (mLock) { if (hadPrintService(userState, packageName)) { userState.updateIfNeededLocked(); + prunePrintServices = true; } } - userState.prunePrintServices(); + if (prunePrintServices) { + userState.prunePrintServices(); + } } @Override @@ -888,12 +908,12 @@ public final class PrintManagerService extends SystemService { private int resolveCallingAppEnforcingPermissions(int appId) { final int callingUid = Binder.getCallingUid(); - if (callingUid == 0 || callingUid == Process.SYSTEM_UID - || callingUid == Process.SHELL_UID) { + if (callingUid == 0) { return appId; } final int callingAppId = UserHandle.getAppId(callingUid); - if (appId == callingAppId) { + if (appId == callingAppId || callingAppId == Process.SHELL_UID + || callingAppId == Process.SYSTEM_UID) { return appId; } if (mContext.checkCallingPermission( diff --git a/services/print/java/com/android/server/print/RemotePrintSpooler.java b/services/print/java/com/android/server/print/RemotePrintSpooler.java index f4c9c86fda2ac1fa70ecaba81ca6bb0992eb8b7a..abd2244959cf7344c4fd84b3082765ab41e5cbe8 100644 --- a/services/print/java/com/android/server/print/RemotePrintSpooler.java +++ b/services/print/java/com/android/server/print/RemotePrintSpooler.java @@ -72,7 +72,7 @@ final class RemotePrintSpooler { private static final boolean DEBUG = false; private static final long BIND_SPOOLER_SERVICE_TIMEOUT = - ("eng".equals(Build.TYPE)) ? 120000 : 10000; + (Build.IS_ENG) ? 120000 : 10000; private final Object mLock = new Object(); diff --git a/services/profile-classes b/services/profile-classes deleted file mode 100644 index a2189bc1e7097b3d1cf3f67f776deb2cfdeb3085..0000000000000000000000000000000000000000 --- a/services/profile-classes +++ /dev/null @@ -1,7261 +0,0 @@ -Landroid/accessibilityservice/AccessibilityServiceInfo; -Landroid/accessibilityservice/AccessibilityServiceInfo$1; -Landroid/accessibilityservice/IAccessibilityServiceClient; -Landroid/accessibilityservice/IAccessibilityServiceConnection; -Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub; -Landroid/accounts/Account; -Landroid/accounts/Account$1; -Landroid/accounts/AccountAndUser; -Landroid/accounts/AccountManager; -Landroid/accounts/AccountManager$1; -Landroid/accounts/AccountManagerInternal; -Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener; -Landroid/accounts/AuthenticatorDescription; -Landroid/accounts/AuthenticatorDescription$1; -Landroid/accounts/IAccountAuthenticator; -Landroid/accounts/IAccountAuthenticatorResponse; -Landroid/accounts/IAccountAuthenticatorResponse$Stub; -Landroid/accounts/IAccountAuthenticator$Stub; -Landroid/accounts/IAccountAuthenticator$Stub$Proxy; -Landroid/accounts/IAccountManager; -Landroid/accounts/IAccountManagerResponse; -Landroid/accounts/IAccountManagerResponse$Stub; -Landroid/accounts/IAccountManagerResponse$Stub$Proxy; -Landroid/accounts/IAccountManager$Stub; -Landroid/animation/AnimationHandler; -Landroid/animation/AnimationHandler$1; -Landroid/animation/AnimationHandler$AnimationFrameCallback; -Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; -Landroid/animation/AnimationHandler$MyFrameCallbackProvider; -Landroid/animation/Animator; -Landroid/animation/Animator$AnimatorListener; -Landroid/animation/Animator$AnimatorPauseListener; -Landroid/animation/AnimatorListenerAdapter; -Landroid/animation/ArgbEvaluator; -Landroid/animation/FloatEvaluator; -Landroid/animation/FloatKeyframeSet; -Landroid/animation/IntEvaluator; -Landroid/animation/Keyframe; -Landroid/animation/Keyframe$FloatKeyframe; -Landroid/animation/Keyframe$ObjectKeyframe; -Landroid/animation/Keyframes; -Landroid/animation/KeyframeSet; -Landroid/animation/Keyframes$FloatKeyframes; -Landroid/animation/LayoutTransition$TransitionListener; -Landroid/animation/ObjectAnimator; -Landroid/animation/PropertyValuesHolder; -Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; -Landroid/animation/PropertyValuesHolder$PropertyValues; -Landroid/animation/RectEvaluator; -Landroid/animation/TimeInterpolator; -Landroid/animation/TypeEvaluator; -Landroid/animation/ValueAnimator; -Landroid/animation/ValueAnimator$AnimatorUpdateListener; -Landroid/app/ActionBar$LayoutParams; -Landroid/app/Activity; -Landroid/app/ActivityManager; -Landroid/app/ActivityManager$1; -Landroid/app/ActivityManagerInternal; -Landroid/app/ActivityManagerInternal$SleepToken; -Landroid/app/ActivityManager$MemoryInfo; -Landroid/app/ActivityManager$MemoryInfo$1; -Landroid/app/ActivityManager$OnUidImportanceListener; -Landroid/app/ActivityManager$RecentTaskInfo; -Landroid/app/ActivityManager$RecentTaskInfo$1; -Landroid/app/ActivityManager$RunningAppProcessInfo; -Landroid/app/ActivityManager$RunningAppProcessInfo$1; -Landroid/app/ActivityManager$RunningServiceInfo; -Landroid/app/ActivityManager$RunningServiceInfo$1; -Landroid/app/ActivityManager$RunningTaskInfo; -Landroid/app/ActivityManager$RunningTaskInfo$1; -Landroid/app/ActivityManager$StackId; -Landroid/app/ActivityManager$StackInfo; -Landroid/app/ActivityManager$StackInfo$1; -Landroid/app/ActivityManager$TaskDescription; -Landroid/app/ActivityManager$TaskDescription$1; -Landroid/app/ActivityManager$TaskSnapshot; -Landroid/app/ActivityManager$TaskSnapshot$1; -Landroid/app/ActivityManager$TaskThumbnail; -Landroid/app/ActivityManager$TaskThumbnailInfo; -Landroid/app/ActivityManager$TaskThumbnailInfo$1; -Landroid/app/ActivityManager$UidObserver; -Landroid/app/ActivityOptions; -Landroid/app/ActivityThread; -Landroid/app/ActivityThread$3; -Landroid/app/ActivityThread$ApplicationThread; -Landroid/app/ActivityThread$BindServiceData; -Landroid/app/ActivityThread$ContextCleanupInfo; -Landroid/app/ActivityThread$CreateServiceData; -Landroid/app/ActivityThread$DropBoxReporter; -Landroid/app/ActivityThread$DumpComponentInfo; -Landroid/app/ActivityThread$GcIdler; -Landroid/app/ActivityThread$H; -Landroid/app/ActivityThread$Profiler; -Landroid/app/ActivityThread$ProviderClientRecord; -Landroid/app/ActivityThread$ProviderKey; -Landroid/app/ActivityThread$ProviderRefCount; -Landroid/app/ActivityThread$ReceiverData; -Landroid/app/ActivityThread$ServiceArgsData; -Landroid/app/admin/DevicePolicyManager; -Landroid/app/admin/DevicePolicyManagerInternal; -Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener; -Landroid/app/admin/IDevicePolicyManager; -Landroid/app/admin/IDevicePolicyManager$Stub; -Landroid/app/admin/PasswordMetrics; -Landroid/app/admin/PasswordMetrics$1; -Landroid/app/admin/SecurityLog; -Landroid/app/admin/SecurityLog$SecurityEvent; -Landroid/app/admin/SecurityLog$SecurityEvent$1; -Landroid/app/admin/SystemUpdateInfo; -Landroid/app/admin/SystemUpdatePolicy; -Landroid/app/AlarmManager; -Landroid/app/AlarmManager$AlarmClockInfo; -Landroid/app/AlarmManager$ListenerWrapper; -Landroid/app/AlarmManager$OnAlarmListener; -Landroid/app/AppGlobals; -Landroid/app/Application; -Landroid/app/ApplicationErrorReport$CrashInfo; -Landroid/app/ApplicationErrorReport$ParcelableCrashInfo; -Landroid/app/ApplicationLoaders; -Landroid/app/ApplicationPackageManager; -Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate; -Landroid/app/ApplicationPackageManager$ResourceName; -Landroid/app/AppOpsManager; -Landroid/app/AppOpsManager$1; -Landroid/app/AppOpsManager$OnOpChangedInternalListener; -Landroid/app/AppOpsManager$OnOpChangedListener; -Landroid/app/AppOpsManager$OpEntry; -Landroid/app/AppOpsManager$OpEntry$1; -Landroid/app/AppOpsManager$PackageOps; -Landroid/app/AppOpsManager$PackageOps$1; -Landroid/app/assist/AssistContent; -Landroid/app/assist/AssistContent$1; -Landroid/app/assist/AssistStructure; -Landroid/app/assist/AssistStructure$1; -Landroid/app/AutomaticZenRule; -Landroid/app/backup/BackupAgent; -Landroid/app/backup/BackupDataInput; -Landroid/app/backup/BackupDataInput$EntityHeader; -Landroid/app/backup/BackupDataOutput; -Landroid/app/backup/BackupHelper; -Landroid/app/backup/BackupHelperDispatcher; -Landroid/app/backup/BackupHelperDispatcher$Header; -Landroid/app/backup/BackupManager; -Landroid/app/backup/BackupTransport; -Landroid/app/backup/BackupTransport$TransportImpl; -Landroid/app/backup/FileBackupHelperBase; -Landroid/app/backup/FullBackup; -Landroid/app/backup/FullBackupDataOutput; -Landroid/app/backup/IBackupManager; -Landroid/app/backup/IBackupManager$Stub; -Landroid/app/backup/IBackupObserver; -Landroid/app/backup/IFullBackupRestoreObserver; -Landroid/app/backup/IRestoreSession; -Landroid/app/backup/ISelectBackupTransportCallback; -Landroid/app/BroadcastOptions; -Landroid/app/ContentProviderHolder; -Landroid/app/ContentProviderHolder$1; -Landroid/app/ContextImpl; -Landroid/app/ContextImpl$ApplicationContentResolver; -Landroid/app/DownloadManager; -Landroid/app/IActivityContainer; -Landroid/app/IActivityContainerCallback; -Landroid/app/IActivityContainer$Stub; -Landroid/app/IActivityController; -Landroid/app/IActivityManager; -Landroid/app/IActivityManager$Stub; -Landroid/app/IAlarmCompleteListener; -Landroid/app/IAlarmCompleteListener$Stub; -Landroid/app/IAlarmListener; -Landroid/app/IAlarmListener$Stub; -Landroid/app/IAlarmManager; -Landroid/app/IAlarmManager$Stub; -Landroid/app/IApplicationThread; -Landroid/app/IApplicationThread$Stub; -Landroid/app/IApplicationThread$Stub$Proxy; -Landroid/app/IAppTask; -Landroid/app/IAppTask$Stub; -Landroid/app/IInstrumentationWatcher; -Landroid/app/INotificationManager; -Landroid/app/INotificationManager$Stub; -Landroid/app/Instrumentation; -Landroid/app/IntentReceiverLeaked; -Landroid/app/IProcessObserver; -Landroid/app/IProcessObserver$Stub; -Landroid/app/IProcessObserver$Stub$Proxy; -Landroid/app/ISearchManager; -Landroid/app/ISearchManager$Stub; -Landroid/app/IServiceConnection; -Landroid/app/IServiceConnection$Stub; -Landroid/app/IServiceConnection$Stub$Proxy; -Landroid/app/IStopUserCallback; -Landroid/app/ITaskStackListener; -Landroid/app/ITaskStackListener$Stub; -Landroid/app/ITaskStackListener$Stub$Proxy; -Landroid/app/ITransientNotification; -Landroid/app/ITransientNotification$Stub; -Landroid/app/ITransientNotification$Stub$Proxy; -Landroid/app/IUiAutomationConnection; -Landroid/app/IUidObserver; -Landroid/app/IUidObserver$Stub; -Landroid/app/IUiModeManager; -Landroid/app/IUiModeManager$Stub; -Landroid/app/IUserSwitchObserver; -Landroid/app/IUserSwitchObserver$Stub; -Landroid/app/IUserSwitchObserver$Stub$Proxy; -Landroid/app/IWallpaperManager; -Landroid/app/IWallpaperManagerCallback; -Landroid/app/IWallpaperManagerCallback$Stub; -Landroid/app/IWallpaperManagerCallback$Stub$Proxy; -Landroid/app/IWallpaperManager$Stub; -Landroid/app/job/IJobCallback; -Landroid/app/job/IJobCallback$Stub; -Landroid/app/job/IJobScheduler; -Landroid/app/job/IJobScheduler$Stub; -Landroid/app/job/IJobService; -Landroid/app/job/IJobService$Stub; -Landroid/app/job/IJobService$Stub$Proxy; -Landroid/app/job/JobInfo; -Landroid/app/job/JobInfo$1; -Landroid/app/job/JobInfo$Builder; -Landroid/app/job/JobInfo$TriggerContentUri; -Landroid/app/job/JobInfo$TriggerContentUri$1; -Landroid/app/job/JobParameters; -Landroid/app/job/JobParameters$1; -Landroid/app/job/JobScheduler; -Landroid/app/job/JobService; -Landroid/app/job/JobService$JobHandler; -Landroid/app/job/JobService$JobInterface; -Landroid/app/JobSchedulerImpl; -Landroid/app/KeyguardManager; -Landroid/app/LoadedApk; -Landroid/app/LoadedApk$ReceiverDispatcher; -Landroid/app/LoadedApk$ReceiverDispatcher$Args; -Landroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver; -Landroid/app/LoadedApk$ServiceDispatcher; -Landroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo; -Landroid/app/LoadedApk$ServiceDispatcher$DeathMonitor; -Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection; -Landroid/app/LoadedApk$ServiceDispatcher$RunConnection; -Landroid/app/LoadedApk$WarningContextClassLoader; -Landroid/app/NativeActivity; -Landroid/app/Notification; -Landroid/app/Notification$1; -Landroid/app/Notification$Action; -Landroid/app/Notification$Action$1; -Landroid/app/Notification$BigPictureStyle; -Landroid/app/Notification$BigTextStyle; -Landroid/app/Notification$Builder; -Landroid/app/Notification$BuilderRemoteViews; -Landroid/app/NotificationChannel; -Landroid/app/NotificationChannel$1; -Landroid/app/Notification$DecoratedCustomViewStyle; -Landroid/app/Notification$DecoratedMediaCustomViewStyle; -Landroid/app/Notification$InboxStyle; -Landroid/app/NotificationManager; -Landroid/app/NotificationManager$Policy; -Landroid/app/NotificationManager$Policy$1; -Landroid/app/Notification$MediaStyle; -Landroid/app/Notification$MessagingStyle; -Landroid/app/Notification$StandardTemplateParams; -Landroid/app/Notification$Style; -Landroid/app/PendingIntent; -Landroid/app/PendingIntent$1; -Landroid/app/PendingIntent$CanceledException; -Landroid/app/PendingIntent$FinishedDispatcher; -Landroid/app/PendingIntent$OnFinished; -Landroid/app/PendingIntent$OnMarshaledListener; -Landroid/app/PictureInPictureArgs; -Landroid/app/PictureInPictureArgs$1; -Landroid/app/ProfilerInfo; -Landroid/app/QueuedWork; -Landroid/app/QueuedWork$QueuedWorkHandler; -Landroid/app/ReceiverRestrictedContext; -Landroid/app/RemoteInput; -Landroid/app/RemoteInput$1; -Landroid/app/ResourcesManager; -Landroid/app/ResourcesManager$1; -Landroid/app/ResultInfo; -Landroid/app/ResultInfo$1; -Landroid/app/SearchableInfo; -Landroid/app/SearchableInfo$1; -Landroid/app/SearchManager; -Landroid/app/Service; -Landroid/app/ServiceConnectionLeaked; -Landroid/app/StatusBarManager; -Landroid/app/SynchronousUserSwitchObserver; -Landroid/app/SystemServiceRegistry; -Landroid/app/SystemServiceRegistry$1; -Landroid/app/SystemServiceRegistry$10; -Landroid/app/SystemServiceRegistry$11; -Landroid/app/SystemServiceRegistry$12; -Landroid/app/SystemServiceRegistry$13; -Landroid/app/SystemServiceRegistry$14; -Landroid/app/SystemServiceRegistry$15; -Landroid/app/SystemServiceRegistry$16; -Landroid/app/SystemServiceRegistry$17; -Landroid/app/SystemServiceRegistry$18; -Landroid/app/SystemServiceRegistry$19; -Landroid/app/SystemServiceRegistry$2; -Landroid/app/SystemServiceRegistry$20; -Landroid/app/SystemServiceRegistry$21; -Landroid/app/SystemServiceRegistry$22; -Landroid/app/SystemServiceRegistry$23; -Landroid/app/SystemServiceRegistry$24; -Landroid/app/SystemServiceRegistry$25; -Landroid/app/SystemServiceRegistry$26; -Landroid/app/SystemServiceRegistry$27; -Landroid/app/SystemServiceRegistry$28; -Landroid/app/SystemServiceRegistry$29; -Landroid/app/SystemServiceRegistry$3; -Landroid/app/SystemServiceRegistry$30; -Landroid/app/SystemServiceRegistry$31; -Landroid/app/SystemServiceRegistry$32; -Landroid/app/SystemServiceRegistry$33; -Landroid/app/SystemServiceRegistry$34; -Landroid/app/SystemServiceRegistry$35; -Landroid/app/SystemServiceRegistry$36; -Landroid/app/SystemServiceRegistry$37; -Landroid/app/SystemServiceRegistry$38; -Landroid/app/SystemServiceRegistry$39; -Landroid/app/SystemServiceRegistry$4; -Landroid/app/SystemServiceRegistry$40; -Landroid/app/SystemServiceRegistry$41; -Landroid/app/SystemServiceRegistry$42; -Landroid/app/SystemServiceRegistry$43; -Landroid/app/SystemServiceRegistry$44; -Landroid/app/SystemServiceRegistry$45; -Landroid/app/SystemServiceRegistry$46; -Landroid/app/SystemServiceRegistry$47; -Landroid/app/SystemServiceRegistry$48; -Landroid/app/SystemServiceRegistry$49; -Landroid/app/SystemServiceRegistry$5; -Landroid/app/SystemServiceRegistry$50; -Landroid/app/SystemServiceRegistry$51; -Landroid/app/SystemServiceRegistry$52; -Landroid/app/SystemServiceRegistry$53; -Landroid/app/SystemServiceRegistry$54; -Landroid/app/SystemServiceRegistry$55; -Landroid/app/SystemServiceRegistry$56; -Landroid/app/SystemServiceRegistry$57; -Landroid/app/SystemServiceRegistry$58; -Landroid/app/SystemServiceRegistry$59; -Landroid/app/SystemServiceRegistry$6; -Landroid/app/SystemServiceRegistry$60; -Landroid/app/SystemServiceRegistry$61; -Landroid/app/SystemServiceRegistry$62; -Landroid/app/SystemServiceRegistry$63; -Landroid/app/SystemServiceRegistry$64; -Landroid/app/SystemServiceRegistry$65; -Landroid/app/SystemServiceRegistry$66; -Landroid/app/SystemServiceRegistry$67; -Landroid/app/SystemServiceRegistry$68; -Landroid/app/SystemServiceRegistry$69; -Landroid/app/SystemServiceRegistry$7; -Landroid/app/SystemServiceRegistry$70; -Landroid/app/SystemServiceRegistry$71; -Landroid/app/SystemServiceRegistry$72; -Landroid/app/SystemServiceRegistry$73; -Landroid/app/SystemServiceRegistry$74; -Landroid/app/SystemServiceRegistry$75; -Landroid/app/SystemServiceRegistry$76; -Landroid/app/SystemServiceRegistry$77; -Landroid/app/SystemServiceRegistry$78; -Landroid/app/SystemServiceRegistry$79; -Landroid/app/SystemServiceRegistry$8; -Landroid/app/SystemServiceRegistry$9; -Landroid/app/SystemServiceRegistry$CachedServiceFetcher; -Landroid/app/SystemServiceRegistry$ServiceFetcher; -Landroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher; -Landroid/app/SystemServiceRegistry$StaticServiceFetcher; -Landroid/app/trust/IStrongAuthTracker; -Landroid/app/trust/IStrongAuthTracker$Stub; -Landroid/app/trust/IStrongAuthTracker$Stub$Proxy; -Landroid/app/trust/ITrustListener; -Landroid/app/trust/ITrustListener$Stub; -Landroid/app/trust/ITrustListener$Stub$Proxy; -Landroid/app/trust/ITrustManager; -Landroid/app/trust/ITrustManager$Stub; -Landroid/app/trust/TrustManager; -Landroid/app/UiModeManager; -Landroid/app/usage/ConfigurationStats; -Landroid/app/usage/ConfigurationStats$1; -Landroid/app/usage/ExternalStorageStats; -Landroid/app/usage/IStorageStatsManager; -Landroid/app/usage/IStorageStatsManager$Stub; -Landroid/app/usage/IUsageStatsManager; -Landroid/app/usage/IUsageStatsManager$Stub; -Landroid/app/usage/NetworkStatsManager; -Landroid/app/usage/StorageStats; -Landroid/app/usage/StorageStatsManager; -Landroid/app/usage/TimeSparseArray; -Landroid/app/usage/UsageEvents; -Landroid/app/usage/UsageEvents$1; -Landroid/app/usage/UsageEvents$Event; -Landroid/app/usage/UsageStats; -Landroid/app/usage/UsageStats$1; -Landroid/app/usage/UsageStatsManager; -Landroid/app/usage/UsageStatsManagerInternal; -Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener; -Landroid/app/UserSwitchObserver; -Landroid/app/WaitResult; -Landroid/app/WallpaperInfo; -Landroid/app/WallpaperInfo$1; -Landroid/app/WallpaperManager; -Landroid/appwidget/AppWidgetManager; -Landroid/appwidget/AppWidgetProviderInfo; -Landroid/appwidget/AppWidgetProviderInfo$1; -Landroid/bluetooth/BluetoothA2dp; -Landroid/bluetooth/BluetoothA2dp$1; -Landroid/bluetooth/BluetoothA2dp$2; -Landroid/bluetooth/BluetoothActivityEnergyInfo; -Landroid/bluetooth/BluetoothActivityEnergyInfo$1; -Landroid/bluetooth/BluetoothAdapter; -Landroid/bluetooth/BluetoothAdapter$1; -Landroid/bluetooth/BluetoothDevice; -Landroid/bluetooth/BluetoothHeadset; -Landroid/bluetooth/BluetoothHeadset$1; -Landroid/bluetooth/BluetoothHeadset$2; -Landroid/bluetooth/BluetoothHeadset$3; -Landroid/bluetooth/BluetoothManager; -Landroid/bluetooth/BluetoothProfile; -Landroid/bluetooth/BluetoothProfile$ServiceListener; -Landroid/bluetooth/IBluetooth; -Landroid/bluetooth/IBluetoothA2dp; -Landroid/bluetooth/IBluetoothA2dp$Stub; -Landroid/bluetooth/IBluetoothA2dp$Stub$Proxy; -Landroid/bluetooth/IBluetoothCallback; -Landroid/bluetooth/IBluetoothCallback$Stub; -Landroid/bluetooth/IBluetoothGatt; -Landroid/bluetooth/IBluetoothGatt$Stub; -Landroid/bluetooth/IBluetoothGatt$Stub$Proxy; -Landroid/bluetooth/IBluetoothHeadset; -Landroid/bluetooth/IBluetoothHeadsetPhone; -Landroid/bluetooth/IBluetoothHeadsetPhone$Stub; -Landroid/bluetooth/IBluetoothHeadset$Stub; -Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy; -Landroid/bluetooth/IBluetoothManager; -Landroid/bluetooth/IBluetoothManagerCallback; -Landroid/bluetooth/IBluetoothManagerCallback$Stub; -Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy; -Landroid/bluetooth/IBluetoothManager$Stub; -Landroid/bluetooth/IBluetoothProfileServiceConnection; -Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub; -Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy; -Landroid/bluetooth/IBluetoothStateChangeCallback; -Landroid/bluetooth/IBluetoothStateChangeCallback$Stub; -Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy; -Landroid/bluetooth/IBluetooth$Stub; -Landroid/bluetooth/IBluetooth$Stub$Proxy; -Landroid/bluetooth/UidTraffic; -Landroid/bluetooth/UidTraffic$1; -Landroid/content/ActivityNotFoundException; -Landroid/content/AsyncQueryHandler; -Landroid/content/AsyncQueryHandler$WorkerArgs; -Landroid/content/AsyncQueryHandler$WorkerHandler; -Landroid/content/BroadcastReceiver; -Landroid/content/BroadcastReceiver$PendingResult; -Landroid/content/ClipboardManager; -Landroid/content/ClipData; -Landroid/content/ClipDescription; -Landroid/content/ComponentCallbacks; -Landroid/content/ComponentCallbacks2; -Landroid/content/ComponentName; -Landroid/content/ComponentName$1; -Landroid/content/ContentProvider; -Landroid/content/ContentProviderNative; -Landroid/content/ContentProviderProxy; -Landroid/content/ContentProvider$Transport; -Landroid/content/ContentResolver; -Landroid/content/ContentResolver$CursorWrapperInner; -Landroid/content/ContentUris; -Landroid/content/ContentValues; -Landroid/content/ContentValues$1; -Landroid/content/Context; -Landroid/content/ContextWrapper; -Landroid/content/DialogInterface$OnCancelListener; -Landroid/content/DialogInterface$OnDismissListener; -Landroid/content/IClipboard; -Landroid/content/IClipboard$Stub; -Landroid/content/IContentProvider; -Landroid/content/IContentService; -Landroid/content/IContentService$Stub; -Landroid/content/IIntentReceiver; -Landroid/content/IIntentReceiver$Stub; -Landroid/content/IIntentReceiver$Stub$Proxy; -Landroid/content/IIntentSender; -Landroid/content/IIntentSender$Stub; -Landroid/content/Intent; -Landroid/content/Intent$1; -Landroid/content/IntentFilter; -Landroid/content/IntentFilter$1; -Landroid/content/IntentFilter$AuthorityEntry; -Landroid/content/Intent$FilterComparison; -Landroid/content/IntentFilter$MalformedMimeTypeException; -Landroid/content/IntentSender; -Landroid/content/IntentSender$SendIntentException; -Landroid/content/IOnPrimaryClipChangedListener; -Landroid/content/IOnPrimaryClipChangedListener$Stub; -Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy; -Landroid/content/IRestrictionsManager; -Landroid/content/IRestrictionsManager$Stub; -Landroid/content/ISyncAdapter; -Landroid/content/ISyncAdapter$Stub; -Landroid/content/ISyncAdapter$Stub$Proxy; -Landroid/content/ISyncContext; -Landroid/content/ISyncContext$Stub; -Landroid/content/ISyncStatusObserver; -Landroid/content/ISyncStatusObserver$Stub; -Landroid/content/ISyncStatusObserver$Stub$Proxy; -Landroid/content/PeriodicSync; -Landroid/content/PeriodicSync$1; -Landroid/content/pm/ActivityInfo; -Landroid/content/pm/ActivityInfo$1; -Landroid/content/pm/ActivityInfo$WindowLayout; -Landroid/content/pm/ApplicationInfo; -Landroid/content/pm/ApplicationInfo$1; -Landroid/content/pm/ComponentInfo; -Landroid/content/pm/ConfigurationInfo; -Landroid/content/pm/ConfigurationInfo$1; -Landroid/content/pm/EphemeralResponse; -Landroid/content/pm/FallbackCategoryProvider; -Landroid/content/pm/FeatureInfo; -Landroid/content/pm/FeatureInfo$1; -Landroid/content/pm/ILauncherApps; -Landroid/content/pm/ILauncherApps$Stub; -Landroid/content/pm/InstrumentationInfo; -Landroid/content/pm/IntentFilterVerificationInfo; -Landroid/content/pm/IntentFilterVerificationInfo$1; -Landroid/content/pm/IOnAppsChangedListener; -Landroid/content/pm/IOnAppsChangedListener$Stub; -Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy; -Landroid/content/pm/IOnPermissionsChangeListener; -Landroid/content/pm/IOnPermissionsChangeListener$Stub; -Landroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy; -Landroid/content/pm/IOtaDexopt; -Landroid/content/pm/IOtaDexopt$Stub; -Landroid/content/pm/IPackageDataObserver; -Landroid/content/pm/IPackageDeleteObserver; -Landroid/content/pm/IPackageDeleteObserver2; -Landroid/content/pm/IPackageInstaller; -Landroid/content/pm/IPackageInstallerCallback; -Landroid/content/pm/IPackageInstallerCallback$Stub; -Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy; -Landroid/content/pm/IPackageInstallerSession; -Landroid/content/pm/IPackageInstaller$Stub; -Landroid/content/pm/IPackageInstallObserver2; -Landroid/content/pm/IPackageManager; -Landroid/content/pm/IPackageManager$Stub; -Landroid/content/pm/IPackageMoveObserver; -Landroid/content/pm/IPackageMoveObserver$Stub; -Landroid/content/pm/IPackageMoveObserver$Stub$Proxy; -Landroid/content/pm/IPackageStatsObserver; -Landroid/content/pm/IPackageStatsObserver$Stub; -Landroid/content/pm/IPackageStatsObserver$Stub$Proxy; -Landroid/content/pm/IShortcutService; -Landroid/content/pm/IShortcutService$Stub; -Landroid/content/pm/KeySet; -Landroid/content/pm/LauncherApps; -Landroid/content/pm/PackageCleanItem; -Landroid/content/pm/PackageInfo; -Landroid/content/pm/PackageInfo$1; -Landroid/content/pm/PackageInstaller$SessionInfo; -Landroid/content/pm/PackageInstaller$SessionParams; -Landroid/content/pm/PackageItemInfo; -Landroid/content/pm/PackageManager; -Landroid/content/pm/PackageManagerInternal; -Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy; -Landroid/content/pm/PackageManagerInternal$PackagesProvider; -Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider; -Landroid/content/pm/PackageManager$NameNotFoundException; -Landroid/content/pm/PackageManager$OnPermissionsChangedListener; -Landroid/content/pm/PackageParser; -Landroid/content/pm/PackageParser$Activity; -Landroid/content/pm/PackageParser$Activity$1; -Landroid/content/pm/PackageParser$ActivityIntentInfo; -Landroid/content/pm/PackageParser$ApkLite; -Landroid/content/pm/PackageParser$Component; -Landroid/content/pm/PackageParser$IntentInfo; -Landroid/content/pm/PackageParser$NewPermissionInfo; -Landroid/content/pm/PackageParser$Package; -Landroid/content/pm/PackageParser$Package$1; -Landroid/content/pm/PackageParser$PackageParserException; -Landroid/content/pm/PackageParser$Permission; -Landroid/content/pm/PackageParser$Permission$1; -Landroid/content/pm/PackageParser$PermissionGroup; -Landroid/content/pm/PackageParser$PermissionGroup$1; -Landroid/content/pm/PackageParser$Provider; -Landroid/content/pm/PackageParser$Provider$1; -Landroid/content/pm/PackageParser$ProviderIntentInfo; -Landroid/content/pm/PackageParser$Service; -Landroid/content/pm/PackageParser$Service$1; -Landroid/content/pm/PackageParser$ServiceIntentInfo; -Landroid/content/pm/PackageParser$SplitNameComparator; -Landroid/content/pm/PackageParser$SplitPermissionInfo; -Landroid/content/pm/PackageStats; -Landroid/content/pm/PackageStats$1; -Landroid/content/pm/PackageUserState; -Landroid/content/pm/ParceledListSlice; -Landroid/content/pm/ParceledListSlice$1; -Landroid/content/pm/ParceledListSlice$2; -Landroid/content/pm/PathPermission; -Landroid/content/pm/PathPermission$1; -Landroid/content/pm/PermissionGroupInfo; -Landroid/content/pm/PermissionGroupInfo$1; -Landroid/content/pm/PermissionInfo; -Landroid/content/pm/PermissionInfo$1; -Landroid/content/pm/ProviderInfo; -Landroid/content/pm/ProviderInfo$1; -Landroid/content/pm/RegisteredServicesCache; -Landroid/content/pm/RegisteredServicesCache$1; -Landroid/content/pm/RegisteredServicesCache$2; -Landroid/content/pm/RegisteredServicesCache$3; -Landroid/content/pm/RegisteredServicesCacheListener; -Landroid/content/pm/RegisteredServicesCache$ServiceInfo; -Landroid/content/pm/RegisteredServicesCache$UserServices; -Landroid/content/pm/ResolveInfo; -Landroid/content/pm/ResolveInfo$1; -Landroid/content/pm/ServiceInfo; -Landroid/content/pm/ServiceInfo$1; -Landroid/content/pm/SharedLibraryInfo; -Landroid/content/pm/SharedLibraryInfo$1; -Landroid/content/pm/ShortcutInfo; -Landroid/content/pm/ShortcutInfo$1; -Landroid/content/pm/ShortcutManager; -Landroid/content/pm/ShortcutServiceInternal; -Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener; -Landroid/content/pm/Signature; -Landroid/content/pm/Signature$1; -Landroid/content/pm/UserInfo; -Landroid/content/pm/UserInfo$1; -Landroid/content/pm/VerifierDeviceIdentity; -Landroid/content/pm/VersionedPackage; -Landroid/content/pm/VersionedPackage$1; -Landroid/content/pm/XmlSerializerAndParser; -Landroid/content/res/AssetFileDescriptor; -Landroid/content/res/AssetFileDescriptor$1; -Landroid/content/res/AssetManager; -Landroid/content/res/AssetManager$AssetInputStream; -Landroid/content/res/ColorStateList; -Landroid/content/res/ColorStateList$1; -Landroid/content/res/ColorStateList$ColorStateListFactory; -Landroid/content/res/CompatibilityInfo; -Landroid/content/res/CompatibilityInfo$1; -Landroid/content/res/CompatibilityInfo$2; -Landroid/content/res/ComplexColor; -Landroid/content/res/Configuration; -Landroid/content/res/Configuration$1; -Landroid/content/res/ConfigurationBoundResourceCache; -Landroid/content/res/ConstantState; -Landroid/content/res/DrawableCache; -Landroid/content/res/GradientColor; -Landroid/content/res/ObbInfo; -Landroid/content/res/ObbInfo$1; -Landroid/content/res/ObbScanner; -Landroid/content/res/Resources; -Landroid/content/res/ResourcesImpl; -Landroid/content/res/ResourcesImpl$ThemeImpl; -Landroid/content/res/ResourcesKey; -Landroid/content/res/Resources$NotFoundException; -Landroid/content/res/Resources$Theme; -Landroid/content/res/Resources$ThemeKey; -Landroid/content/res/StringBlock; -Landroid/content/res/ThemedResourceCache; -Landroid/content/RestrictionsManager; -Landroid/content/res/TypedArray; -Landroid/content/res/XmlBlock; -Landroid/content/res/XmlBlock$Parser; -Landroid/content/res/XmlResourceParser; -Landroid/content/ServiceConnection; -Landroid/content/SyncAdaptersCache; -Landroid/content/SyncAdaptersCache$MySerializer; -Landroid/content/SyncAdapterType; -Landroid/content/SyncAdapterType$1; -Landroid/content/SyncInfo; -Landroid/content/SyncInfo$1; -Landroid/content/SyncRequest; -Landroid/content/SyncRequest$1; -Landroid/content/SyncResult; -Landroid/content/SyncResult$1; -Landroid/content/SyncStats; -Landroid/content/SyncStats$1; -Landroid/content/SyncStatusInfo; -Landroid/content/SyncStatusInfo$1; -Landroid/database/AbstractCursor; -Landroid/database/AbstractCursor$SelfContentObserver; -Landroid/database/AbstractWindowedCursor; -Landroid/database/BulkCursorDescriptor; -Landroid/database/BulkCursorDescriptor$1; -Landroid/database/BulkCursorNative; -Landroid/database/BulkCursorProxy; -Landroid/database/BulkCursorToCursorAdaptor; -Landroid/database/CharArrayBuffer; -Landroid/database/ContentObservable; -Landroid/database/ContentObserver; -Landroid/database/ContentObserver$NotificationRunnable; -Landroid/database/ContentObserver$Transport; -Landroid/database/CrossProcessCursor; -Landroid/database/CrossProcessCursorWrapper; -Landroid/database/Cursor; -Landroid/database/CursorWindow; -Landroid/database/CursorWindow$1; -Landroid/database/CursorWrapper; -Landroid/database/DatabaseErrorHandler; -Landroid/database/DatabaseUtils; -Landroid/database/DataSetObservable; -Landroid/database/DefaultDatabaseErrorHandler; -Landroid/database/IBulkCursor; -Landroid/database/IContentObserver; -Landroid/database/IContentObserver$Stub; -Landroid/database/IContentObserver$Stub$Proxy; -Landroid/database/Observable; -Landroid/database/SQLException; -Landroid/database/sqlite/DatabaseObjectNotClosedException; -Landroid/database/sqlite/SQLiteClosable; -Landroid/database/sqlite/SQLiteConnection; -Landroid/database/sqlite/SQLiteConnection$Operation; -Landroid/database/sqlite/SQLiteConnection$OperationLog; -Landroid/database/sqlite/SQLiteConnectionPool; -Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus; -Landroid/database/sqlite/SQLiteConnection$PreparedStatement; -Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; -Landroid/database/sqlite/SQLiteCursor; -Landroid/database/sqlite/SQLiteCursorDriver; -Landroid/database/sqlite/SQLiteCustomFunction; -Landroid/database/sqlite/SQLiteDatabase; -Landroid/database/sqlite/SQLiteDatabase$1; -Landroid/database/sqlite/SQLiteDatabaseConfiguration; -Landroid/database/sqlite/SQLiteDatabaseCorruptException; -Landroid/database/sqlite/SQLiteDatabaseLockedException; -Landroid/database/sqlite/SQLiteDebug; -Landroid/database/sqlite/SQLiteDebug$PagerStats; -Landroid/database/sqlite/SQLiteDirectCursorDriver; -Landroid/database/sqlite/SQLiteException; -Landroid/database/sqlite/SQLiteGlobal; -Landroid/database/sqlite/SQLiteOpenHelper; -Landroid/database/sqlite/SQLiteProgram; -Landroid/database/sqlite/SQLiteQuery; -Landroid/database/sqlite/SQLiteQueryBuilder; -Landroid/database/sqlite/SQLiteSession; -Landroid/database/sqlite/SQLiteSession$Transaction; -Landroid/database/sqlite/SQLiteStatement; -Landroid/database/sqlite/SQLiteStatementInfo; -Landroid/ddm/DdmHandleAppName; -Landroid/ddm/DdmHandleExit; -Landroid/ddm/DdmHandleHeap; -Landroid/ddm/DdmHandleHello; -Landroid/ddm/DdmHandleNativeHeap; -Landroid/ddm/DdmHandleProfiling; -Landroid/ddm/DdmHandleThread; -Landroid/ddm/DdmHandleViewDebug; -Landroid/ddm/DdmRegister; -Landroid/graphics/BaseCanvas; -Landroid/graphics/Bitmap; -Landroid/graphics/Bitmap$1; -Landroid/graphics/Bitmap$CompressFormat; -Landroid/graphics/Bitmap$Config; -Landroid/graphics/BitmapFactory; -Landroid/graphics/BitmapFactory$Options; -Landroid/graphics/BitmapRegionDecoder; -Landroid/graphics/BitmapShader; -Landroid/graphics/BlurMaskFilter; -Landroid/graphics/BlurMaskFilter$Blur; -Landroid/graphics/Camera; -Landroid/graphics/Canvas; -Landroid/graphics/Canvas$EdgeType; -Landroid/graphics/Canvas$NoImagePreloadHolder; -Landroid/graphics/CanvasProperty; -Landroid/graphics/Color; -Landroid/graphics/ColorFilter; -Landroid/graphics/ColorMatrix; -Landroid/graphics/ColorMatrixColorFilter; -Landroid/graphics/ComposePathEffect; -Landroid/graphics/ComposeShader; -Landroid/graphics/CornerPathEffect; -Landroid/graphics/DashPathEffect; -Landroid/graphics/DiscretePathEffect; -Landroid/graphics/drawable/Animatable; -Landroid/graphics/drawable/Animatable2; -Landroid/graphics/drawable/AnimatedStateListDrawable; -Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState; -Landroid/graphics/drawable/AnimatedVectorDrawable; -Landroid/graphics/drawable/AnimatedVectorDrawable$1; -Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState; -Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator; -Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator; -Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT; -Landroid/graphics/drawable/AnimationDrawable; -Landroid/graphics/drawable/AnimationDrawable$AnimationState; -Landroid/graphics/drawable/BitmapDrawable; -Landroid/graphics/drawable/BitmapDrawable$BitmapState; -Landroid/graphics/drawable/ColorDrawable; -Landroid/graphics/drawable/ColorDrawable$ColorState; -Landroid/graphics/drawable/Drawable; -Landroid/graphics/drawable/Drawable$Callback; -Landroid/graphics/drawable/Drawable$ConstantState; -Landroid/graphics/drawable/DrawableContainer; -Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; -Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; -Landroid/graphics/drawable/DrawableInflater; -Landroid/graphics/drawable/DrawableWrapper; -Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; -Landroid/graphics/drawable/GradientDrawable; -Landroid/graphics/drawable/GradientDrawable$GradientState; -Landroid/graphics/drawable/GradientDrawable$Orientation; -Landroid/graphics/drawable/Icon; -Landroid/graphics/drawable/Icon$1; -Landroid/graphics/drawable/InsetDrawable; -Landroid/graphics/drawable/InsetDrawable$InsetState; -Landroid/graphics/drawable/LayerDrawable; -Landroid/graphics/drawable/LayerDrawable$ChildDrawable; -Landroid/graphics/drawable/LayerDrawable$LayerState; -Landroid/graphics/drawable/NinePatchDrawable; -Landroid/graphics/drawable/NinePatchDrawable$NinePatchState; -Landroid/graphics/drawable/RippleBackground; -Landroid/graphics/drawable/RippleBackground$1; -Landroid/graphics/drawable/RippleBackground$BackgroundProperty; -Landroid/graphics/drawable/RippleComponent; -Landroid/graphics/drawable/RippleDrawable; -Landroid/graphics/drawable/RippleDrawable$RippleState; -Landroid/graphics/drawable/RippleForeground; -Landroid/graphics/drawable/RippleForeground$1; -Landroid/graphics/drawable/RippleForeground$2; -Landroid/graphics/drawable/RippleForeground$3; -Landroid/graphics/drawable/RippleForeground$4; -Landroid/graphics/drawable/RippleForeground$LogDecelerateInterpolator; -Landroid/graphics/drawable/ScaleDrawable; -Landroid/graphics/drawable/ScaleDrawable$ScaleState; -Landroid/graphics/drawable/StateListDrawable; -Landroid/graphics/drawable/StateListDrawable$StateListState; -Landroid/graphics/drawable/VectorDrawable; -Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; -Landroid/graphics/drawable/VectorDrawable$VectorDrawableState$1; -Landroid/graphics/drawable/VectorDrawable$VFullPath; -Landroid/graphics/drawable/VectorDrawable$VFullPath$1; -Landroid/graphics/drawable/VectorDrawable$VFullPath$10; -Landroid/graphics/drawable/VectorDrawable$VFullPath$2; -Landroid/graphics/drawable/VectorDrawable$VFullPath$3; -Landroid/graphics/drawable/VectorDrawable$VFullPath$4; -Landroid/graphics/drawable/VectorDrawable$VFullPath$5; -Landroid/graphics/drawable/VectorDrawable$VFullPath$6; -Landroid/graphics/drawable/VectorDrawable$VFullPath$7; -Landroid/graphics/drawable/VectorDrawable$VFullPath$8; -Landroid/graphics/drawable/VectorDrawable$VFullPath$9; -Landroid/graphics/drawable/VectorDrawable$VGroup; -Landroid/graphics/drawable/VectorDrawable$VGroup$1; -Landroid/graphics/drawable/VectorDrawable$VGroup$2; -Landroid/graphics/drawable/VectorDrawable$VGroup$3; -Landroid/graphics/drawable/VectorDrawable$VGroup$4; -Landroid/graphics/drawable/VectorDrawable$VGroup$5; -Landroid/graphics/drawable/VectorDrawable$VGroup$6; -Landroid/graphics/drawable/VectorDrawable$VGroup$7; -Landroid/graphics/drawable/VectorDrawable$VGroup$8; -Landroid/graphics/drawable/VectorDrawable$VGroup$9; -Landroid/graphics/drawable/VectorDrawable$VObject; -Landroid/graphics/drawable/VectorDrawable$VPath; -Landroid/graphics/drawable/VectorDrawable$VPath$1; -Landroid/graphics/DrawFilter; -Landroid/graphics/EmbossMaskFilter; -Landroid/graphics/FontFamily; -Landroid/graphics/FontListParser; -Landroid/graphics/GraphicBuffer; -Landroid/graphics/GraphicBuffer$1; -Landroid/graphics/Insets; -Landroid/graphics/Interpolator; -Landroid/graphics/LightingColorFilter; -Landroid/graphics/LinearGradient; -Landroid/graphics/MaskFilter; -Landroid/graphics/Matrix; -Landroid/graphics/Matrix$1; -Landroid/graphics/Matrix$NoImagePreloadHolder; -Landroid/graphics/Matrix$ScaleToFit; -Landroid/graphics/Movie; -Landroid/graphics/NinePatch; -Landroid/graphics/NinePatch$InsetStruct; -Landroid/graphics/Outline; -Landroid/graphics/Paint; -Landroid/graphics/Paint$Align; -Landroid/graphics/Paint$Cap; -Landroid/graphics/PaintFlagsDrawFilter; -Landroid/graphics/Paint$FontMetrics; -Landroid/graphics/Paint$FontMetricsInt; -Landroid/graphics/Paint$Join; -Landroid/graphics/Paint$NoImagePreloadHolder; -Landroid/graphics/Paint$Style; -Landroid/graphics/Path; -Landroid/graphics/PathDashPathEffect; -Landroid/graphics/PathEffect; -Landroid/graphics/Path$FillType; -Landroid/graphics/PathMeasure; -Landroid/graphics/pdf/PdfDocument; -Landroid/graphics/pdf/PdfEditor; -Landroid/graphics/pdf/PdfRenderer; -Landroid/graphics/Picture; -Landroid/graphics/PixelFormat; -Landroid/graphics/Point; -Landroid/graphics/Point$1; -Landroid/graphics/PointF; -Landroid/graphics/PointF$1; -Landroid/graphics/PorterDuff; -Landroid/graphics/PorterDuffColorFilter; -Landroid/graphics/PorterDuff$Mode; -Landroid/graphics/RadialGradient; -Landroid/graphics/Rect; -Landroid/graphics/Rect$1; -Landroid/graphics/RectF; -Landroid/graphics/RectF$1; -Landroid/graphics/Region; -Landroid/graphics/Region$1; -Landroid/graphics/RegionIterator; -Landroid/graphics/Region$Op; -Landroid/graphics/Shader; -Landroid/graphics/Shader$TileMode; -Landroid/graphics/SumPathEffect; -Landroid/graphics/SurfaceTexture; -Landroid/graphics/SweepGradient; -Landroid/graphics/TableMaskFilter; -Landroid/graphics/TemporaryBuffer; -Landroid/graphics/Typeface; -Landroid/graphics/YuvImage; -Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint; -Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback; -Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub; -Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy; -Landroid/hardware/Camera; -Landroid/hardware/camera2/CameraAccessException; -Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraManager; -Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/DngCreator; -Landroid/hardware/camera2/impl/CameraMetadataNative; -Landroid/hardware/camera2/legacy/LegacyCameraDevice; -Landroid/hardware/camera2/legacy/PerfMeasurement; -Landroid/hardware/Camera$CameraInfo; -Landroid/hardware/Camera$Face; -Landroid/hardware/ConsumerIrManager; -Landroid/hardware/display/DisplayManager; -Landroid/hardware/display/DisplayManager$DisplayListener; -Landroid/hardware/display/DisplayManagerGlobal; -Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate; -Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback; -Landroid/hardware/display/DisplayManagerInternal; -Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks; -Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest; -Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener; -Landroid/hardware/display/DisplayViewport; -Landroid/hardware/display/IDisplayManager; -Landroid/hardware/display/IDisplayManagerCallback; -Landroid/hardware/display/IDisplayManagerCallback$Stub; -Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy; -Landroid/hardware/display/IDisplayManager$Stub; -Landroid/hardware/display/IVirtualDisplayCallback; -Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplay$1; -Landroid/hardware/display/WifiDisplaySessionInfo; -Landroid/hardware/display/WifiDisplaySessionInfo$1; -Landroid/hardware/display/WifiDisplayStatus; -Landroid/hardware/display/WifiDisplayStatus$1; -Landroid/hardware/fingerprint/FingerprintManager; -Landroid/hardware/fingerprint/IFingerprintClientActiveCallback; -Landroid/hardware/fingerprint/IFingerprintService; -Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback; -Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub; -Landroid/hardware/fingerprint/IFingerprintServiceLockoutResetCallback$Stub$Proxy; -Landroid/hardware/fingerprint/IFingerprintServiceReceiver; -Landroid/hardware/fingerprint/IFingerprintService$Stub; -Landroid/hardware/HardwareBuffer; -Landroid/hardware/HardwareBuffer$1; -Landroid/hardware/hdmi/HdmiControlManager; -Landroid/hardware/hdmi/HdmiPlaybackClient$DisplayStatusCallback; -Landroid/hardware/ICameraService; -Landroid/hardware/ICameraServiceProxy; -Landroid/hardware/ICameraServiceProxy$Stub; -Landroid/hardware/ICameraService$Stub; -Landroid/hardware/ICameraService$Stub$Proxy; -Landroid/hardware/IConsumerIrService; -Landroid/hardware/IConsumerIrService$Stub; -Landroid/hardware/input/IInputDevicesChangedListener; -Landroid/hardware/input/IInputDevicesChangedListener$Stub; -Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy; -Landroid/hardware/input/IInputManager; -Landroid/hardware/input/IInputManager$Stub; -Landroid/hardware/input/InputDeviceIdentifier; -Landroid/hardware/input/InputDeviceIdentifier$1; -Landroid/hardware/input/InputManager; -Landroid/hardware/input/InputManager$InputDeviceListener; -Landroid/hardware/input/InputManagerInternal; -Landroid/hardware/input/ITabletModeChangedListener; -Landroid/hardware/input/KeyboardLayout; -Landroid/hardware/input/KeyboardLayout$1; -Landroid/hardware/input/TouchCalibration; -Landroid/hardware/input/TouchCalibration$1; -Landroid/hardware/ISerialManager; -Landroid/hardware/ISerialManager$Stub; -Landroid/hardware/location/ActivityRecognitionHardware; -Landroid/hardware/location/ContextHubInfo; -Landroid/hardware/location/ContextHubInfo$1; -Landroid/hardware/location/ContextHubManager; -Landroid/hardware/location/ContextHubMessage; -Landroid/hardware/location/ContextHubMessage$1; -Landroid/hardware/location/GeofenceHardwareImpl; -Landroid/hardware/location/GeofenceHardwareImpl$1; -Landroid/hardware/location/GeofenceHardwareImpl$2; -Landroid/hardware/location/GeofenceHardwareImpl$3; -Landroid/hardware/location/GeofenceHardwareImpl$Reaper; -Landroid/hardware/location/GeofenceHardwareService; -Landroid/hardware/location/GeofenceHardwareService$1; -Landroid/hardware/location/IActivityRecognitionHardware; -Landroid/hardware/location/IActivityRecognitionHardwareClient; -Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub; -Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy; -Landroid/hardware/location/IActivityRecognitionHardware$Stub; -Landroid/hardware/location/IActivityRecognitionHardwareWatcher; -Landroid/hardware/location/IContextHubCallback; -Landroid/hardware/location/IContextHubCallback$Stub; -Landroid/hardware/location/IContextHubCallback$Stub$Proxy; -Landroid/hardware/location/IContextHubService; -Landroid/hardware/location/IContextHubService$Stub; -Landroid/hardware/location/IGeofenceHardware; -Landroid/hardware/location/IGeofenceHardwareMonitorCallback; -Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub; -Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy; -Landroid/hardware/location/IGeofenceHardware$Stub; -Landroid/hardware/location/MemoryRegion; -Landroid/hardware/location/NanoApp; -Landroid/hardware/location/NanoAppFilter; -Landroid/hardware/location/NanoAppFilter$1; -Landroid/hardware/location/NanoAppInstanceInfo; -Landroid/hardware/location/NanoAppInstanceInfo$1; -Landroid/hardware/radio/RadioManager; -Landroid/hardware/radio/RadioManager$AmBandConfig; -Landroid/hardware/radio/RadioManager$AmBandConfig$1; -Landroid/hardware/radio/RadioManager$AmBandDescriptor; -Landroid/hardware/radio/RadioManager$AmBandDescriptor$1; -Landroid/hardware/radio/RadioManager$BandConfig; -Landroid/hardware/radio/RadioManager$BandConfig$1; -Landroid/hardware/radio/RadioManager$BandDescriptor; -Landroid/hardware/radio/RadioManager$BandDescriptor$1; -Landroid/hardware/radio/RadioManager$FmBandConfig; -Landroid/hardware/radio/RadioManager$FmBandConfig$1; -Landroid/hardware/radio/RadioManager$FmBandDescriptor; -Landroid/hardware/radio/RadioManager$FmBandDescriptor$1; -Landroid/hardware/radio/RadioManager$ModuleProperties; -Landroid/hardware/radio/RadioManager$ModuleProperties$1; -Landroid/hardware/radio/RadioManager$ProgramInfo; -Landroid/hardware/radio/RadioManager$ProgramInfo$1; -Landroid/hardware/radio/RadioMetadata; -Landroid/hardware/radio/RadioMetadata$1; -Landroid/hardware/radio/RadioModule; -Landroid/hardware/radio/RadioTuner; -Landroid/hardware/Sensor; -Landroid/hardware/SensorEvent; -Landroid/hardware/SensorEventListener; -Landroid/hardware/SensorManager; -Landroid/hardware/SerialManager; -Landroid/hardware/SerialPort; -Landroid/hardware/soundtrigger/IRecognitionStatusCallback; -Landroid/hardware/soundtrigger/SoundTrigger; -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1; -Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent; -Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent$1; -Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase$1; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent$1; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel$1; -Landroid/hardware/soundtrigger/SoundTriggerModule; -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties; -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent$1; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent$1; -Landroid/hardware/soundtrigger/SoundTrigger$StatusListener; -Landroid/hardware/SystemSensorManager; -Landroid/hardware/SystemSensorManager$BaseEventQueue; -Landroid/hardware/SystemSensorManager$SensorEventQueue; -Landroid/hardware/TriggerEvent; -Landroid/hardware/TriggerEventListener; -Landroid/hardware/usb/IUsbManager; -Landroid/hardware/usb/IUsbManager$Stub; -Landroid/hardware/usb/UsbAccessory; -Landroid/hardware/usb/UsbDevice; -Landroid/hardware/usb/UsbDeviceConnection; -Landroid/hardware/usb/UsbManager; -Landroid/hardware/usb/UsbPort; -Landroid/hardware/usb/UsbPort$1; -Landroid/hardware/usb/UsbPortStatus; -Landroid/hardware/usb/UsbPortStatus$1; -Landroid/hardware/usb/UsbRequest; -Landroid/hardware/usb/V1_0/IUsb; -Landroid/hardware/usb/V1_0/IUsbCallback; -Landroid/hardware/usb/V1_0/IUsbCallback$Stub; -Landroid/hardware/usb/V1_0/IUsb$Proxy; -Landroid/hardware/usb/V1_0/PortStatus; -Landroid/hardware/wifi/V1_0/IWifiEventCallback; -Landroid/hardware/wifi/V1_0/IWifiEventCallback$Stub; -Landroid/hidl/base/V1_0/IBase; -Landroid/hidl/manager/V1_0/IServiceManager; -Landroid/hidl/manager/V1_0/IServiceManager$Proxy; -Landroid/hidl/manager/V1_0/IServiceNotification; -Landroid/hidl/manager/V1_0/IServiceNotification$Stub; -Landroid/icu/impl/BMPSet; -Landroid/icu/impl/CacheBase; -Landroid/icu/impl/CacheValue; -Landroid/icu/impl/CacheValue$NullValue; -Landroid/icu/impl/CacheValue$SoftValue; -Landroid/icu/impl/CacheValue$Strength; -Landroid/icu/impl/CharTrie; -Landroid/icu/impl/ClassLoaderUtil; -Landroid/icu/impl/CurrencyData; -Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; -Landroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType; -Landroid/icu/impl/ICUBinary; -Landroid/icu/impl/ICUBinary$Authenticate; -Landroid/icu/impl/ICUBinary$DataFile; -Landroid/icu/impl/ICUBinary$DatPackageReader; -Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable; -Landroid/icu/impl/ICUBinary$PackageDataFile; -Landroid/icu/impl/ICUCache; -Landroid/icu/impl/ICUConfig; -Landroid/icu/impl/ICUCurrencyDisplayInfoProvider; -Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; -Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$SpacingInfoSink; -Landroid/icu/impl/ICUCurrencyMetaInfo; -Landroid/icu/impl/ICUCurrencyMetaInfo$Collector; -Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; -Landroid/icu/impl/ICUCurrencyMetaInfo$UniqueList; -Landroid/icu/impl/ICUData; -Landroid/icu/impl/ICUDebug; -Landroid/icu/impl/ICULangDataTables; -Landroid/icu/impl/ICURegionDataTables; -Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle$1; -Landroid/icu/impl/ICUResourceBundle$2; -Landroid/icu/impl/ICUResourceBundle$4; -Landroid/icu/impl/ICUResourceBundleImpl; -Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; -Landroid/icu/impl/ICUResourceBundleImpl$ResourceContainer; -Landroid/icu/impl/ICUResourceBundleImpl$ResourceInt; -Landroid/icu/impl/ICUResourceBundleImpl$ResourceString; -Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; -Landroid/icu/impl/ICUResourceBundle$Loader; -Landroid/icu/impl/ICUResourceBundle$OpenType; -Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader$Array; -Landroid/icu/impl/ICUResourceBundleReader$Array16; -Landroid/icu/impl/ICUResourceBundleReader$Array32; -Landroid/icu/impl/ICUResourceBundleReader$Container; -Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable; -Landroid/icu/impl/ICUResourceBundleReader$ReaderCache; -Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey; -Landroid/icu/impl/ICUResourceBundleReader$ReaderValue; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; -Landroid/icu/impl/ICUResourceBundleReader$Table; -Landroid/icu/impl/ICUResourceBundleReader$Table16; -Landroid/icu/impl/ICUResourceBundleReader$Table1632; -Landroid/icu/impl/ICUResourceBundle$WholeBundle; -Landroid/icu/impl/ICUResourceTableAccess; -Landroid/icu/impl/IDNA2003; -Landroid/icu/impl/locale/AsciiUtil; -Landroid/icu/impl/locale/BaseLocale; -Landroid/icu/impl/locale/BaseLocale$Cache; -Landroid/icu/impl/locale/BaseLocale$Key; -Landroid/icu/impl/LocaleDisplayNamesImpl; -Landroid/icu/impl/LocaleDisplayNamesImpl$Cache; -Landroid/icu/impl/LocaleDisplayNamesImpl$CapitalizationContextUsage; -Landroid/icu/impl/LocaleDisplayNamesImpl$DataTable; -Landroid/icu/impl/LocaleDisplayNamesImpl$DataTables; -Landroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTable; -Landroid/icu/impl/LocaleDisplayNamesImpl$ICUDataTables; -Landroid/icu/impl/LocaleDisplayNamesImpl$LangDataTables; -Landroid/icu/impl/LocaleDisplayNamesImpl$RegionDataTables; -Landroid/icu/impl/LocaleIDParser; -Landroid/icu/impl/LocaleIDs; -Landroid/icu/impl/locale/LocaleObjectCache; -Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry; -Landroid/icu/impl/locale/LocaleSyntaxException; -Landroid/icu/impl/Norm2AllModes; -Landroid/icu/impl/Norm2AllModes$1; -Landroid/icu/impl/Norm2AllModes$ComposeNormalizer2; -Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2; -Landroid/icu/impl/Norm2AllModes$FCDNormalizer2; -Landroid/icu/impl/Norm2AllModes$NFKCSingleton; -Landroid/icu/impl/Norm2AllModes$NoopNormalizer2; -Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; -Landroid/icu/impl/Norm2AllModes$Normalizer2WithImpl; -Landroid/icu/impl/Normalizer2Impl; -Landroid/icu/impl/Normalizer2Impl$1; -Landroid/icu/impl/Normalizer2Impl$IsAcceptable; -Landroid/icu/impl/Pair; -Landroid/icu/impl/ReplaceableUCharacterIterator; -Landroid/icu/impl/SimpleCache; -Landroid/icu/impl/SimpleFormatterImpl; -Landroid/icu/impl/SoftCache; -Landroid/icu/impl/StringPrepDataReader; -Landroid/icu/impl/Trie; -Landroid/icu/impl/Trie2; -Landroid/icu/impl/Trie2$1; -Landroid/icu/impl/Trie2_16; -Landroid/icu/impl/Trie2$UTrie2Header; -Landroid/icu/impl/Trie2$ValueMapper; -Landroid/icu/impl/Trie2$ValueWidth; -Landroid/icu/impl/Trie$DataManipulate; -Landroid/icu/impl/Trie$DefaultGetFoldingOffset; -Landroid/icu/impl/UBiDiProps; -Landroid/icu/impl/UBiDiProps$IsAcceptable; -Landroid/icu/impl/UCharacterProperty; -Landroid/icu/impl/UCharacterProperty$1; -Landroid/icu/impl/UCharacterProperty$10; -Landroid/icu/impl/UCharacterProperty$11; -Landroid/icu/impl/UCharacterProperty$12; -Landroid/icu/impl/UCharacterProperty$13; -Landroid/icu/impl/UCharacterProperty$14; -Landroid/icu/impl/UCharacterProperty$15; -Landroid/icu/impl/UCharacterProperty$16; -Landroid/icu/impl/UCharacterProperty$17; -Landroid/icu/impl/UCharacterProperty$18; -Landroid/icu/impl/UCharacterProperty$19; -Landroid/icu/impl/UCharacterProperty$2; -Landroid/icu/impl/UCharacterProperty$20; -Landroid/icu/impl/UCharacterProperty$21; -Landroid/icu/impl/UCharacterProperty$22; -Landroid/icu/impl/UCharacterProperty$23; -Landroid/icu/impl/UCharacterProperty$3; -Landroid/icu/impl/UCharacterProperty$4; -Landroid/icu/impl/UCharacterProperty$5; -Landroid/icu/impl/UCharacterProperty$6; -Landroid/icu/impl/UCharacterProperty$7; -Landroid/icu/impl/UCharacterProperty$8; -Landroid/icu/impl/UCharacterProperty$9; -Landroid/icu/impl/UCharacterProperty$BiDiIntProperty; -Landroid/icu/impl/UCharacterProperty$BinaryProperty; -Landroid/icu/impl/UCharacterProperty$CaseBinaryProperty; -Landroid/icu/impl/UCharacterProperty$CombiningClassIntProperty; -Landroid/icu/impl/UCharacterProperty$IntProperty; -Landroid/icu/impl/UCharacterProperty$IsAcceptable; -Landroid/icu/impl/UCharacterProperty$NormInertBinaryProperty; -Landroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty; -Landroid/icu/impl/UResource$Array; -Landroid/icu/impl/UResource$Key; -Landroid/icu/impl/UResource$Sink; -Landroid/icu/impl/UResource$Table; -Landroid/icu/impl/UResource$Value; -Landroid/icu/impl/Utility; -Landroid/icu/lang/UCharacter; -Landroid/icu/lang/UCharacterEnums$ECharacterCategory; -Landroid/icu/lang/UCharacterEnums$ECharacterDirection; -Landroid/icu/math/BigDecimal; -Landroid/icu/math/MathContext; -Landroid/icu/text/CurrencyDisplayNames; -Landroid/icu/text/CurrencyMetaInfo; -Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/DecimalFormat; -Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormatSymbols$1; -Landroid/icu/text/DecimalFormatSymbols$CacheData; -Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink; -Landroid/icu/text/DecimalFormat$Unit; -Landroid/icu/text/DigitList; -Landroid/icu/text/DisplayContext; -Landroid/icu/text/DisplayContext$Type; -Landroid/icu/text/IDNA; -Landroid/icu/text/LocaleDisplayNames; -Landroid/icu/text/LocaleDisplayNames$DialectHandling; -Landroid/icu/text/Normalizer; -Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$FCDMode; -Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFCMode; -Landroid/icu/text/Normalizer$NFDMode; -Landroid/icu/text/Normalizer$NFKCMode; -Landroid/icu/text/Normalizer$NFKDMode; -Landroid/icu/text/Normalizer$NFKDModeImpl; -Landroid/icu/text/Normalizer$NONEMode; -Landroid/icu/text/Normalizer$QuickCheckResult; -Landroid/icu/text/NumberFormat; -Landroid/icu/text/NumberFormat$Field; -Landroid/icu/text/NumberingSystem; -Landroid/icu/text/NumberingSystem$1; -Landroid/icu/text/NumberingSystem$2; -Landroid/icu/text/NumberingSystem$LocaleLookupData; -Landroid/icu/text/Replaceable; -Landroid/icu/text/ReplaceableString; -Landroid/icu/text/StringPrep; -Landroid/icu/text/StringPrepParseException; -Landroid/icu/text/TimeZoneNames$NameType; -Landroid/icu/text/UCharacterIterator; -Landroid/icu/text/UFieldPosition; -Landroid/icu/text/UFormat; -Landroid/icu/text/UForwardCharacterIterator; -Landroid/icu/text/UnicodeFilter; -Landroid/icu/text/UnicodeMatcher; -Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UTF16; -Landroid/icu/util/Currency; -Landroid/icu/util/Currency$1; -Landroid/icu/util/Currency$CurrencyUsage; -Landroid/icu/util/Currency$EquivalenceRelation; -Landroid/icu/util/Freezable; -Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit$1; -Landroid/icu/util/MeasureUnit$2; -Landroid/icu/util/MeasureUnit$3; -Landroid/icu/util/MeasureUnit$Factory; -Landroid/icu/util/TimeUnit; -Landroid/icu/util/TimeZone; -Landroid/icu/util/TimeZone$ConstantZone; -Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale$1; -Landroid/icu/util/ULocale$2; -Landroid/icu/util/ULocale$Category; -Landroid/icu/util/ULocale$JDKLocaleHelper; -Landroid/icu/util/ULocale$Type; -Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceTypeMismatchException; -Landroid/icu/util/VersionInfo; -Landroid/location/Address; -Landroid/location/Address$1; -Landroid/location/Country; -Landroid/location/Country$1; -Landroid/location/CountryDetector; -Landroid/location/CountryDetector$ListenerTransport; -Landroid/location/CountryListener; -Landroid/location/Criteria; -Landroid/location/Geocoder; -Landroid/location/GeocoderParams; -Landroid/location/GeocoderParams$1; -Landroid/location/Geofence; -Landroid/location/GnssMeasurementCallbackTransport; -Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport; -Landroid/location/GnssNavigationMessageCallbackTransport; -Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport; -Landroid/location/ICountryDetector; -Landroid/location/ICountryDetector$Stub; -Landroid/location/ICountryListener; -Landroid/location/ICountryListener$Stub; -Landroid/location/ICountryListener$Stub$Proxy; -Landroid/location/IGeocodeProvider; -Landroid/location/IGeocodeProvider$Stub; -Landroid/location/IGeocodeProvider$Stub$Proxy; -Landroid/location/IGeofenceProvider; -Landroid/location/IGeofenceProvider$Stub; -Landroid/location/IGeofenceProvider$Stub$Proxy; -Landroid/location/IGnssMeasurementsListener; -Landroid/location/IGnssMeasurementsListener$Stub; -Landroid/location/IGnssNavigationMessageListener; -Landroid/location/IGnssNavigationMessageListener$Stub; -Landroid/location/IGnssStatusListener; -Landroid/location/IGnssStatusListener$Stub; -Landroid/location/IGnssStatusListener$Stub$Proxy; -Landroid/location/IGnssStatusProvider; -Landroid/location/IGnssStatusProvider$Stub; -Landroid/location/IGpsGeofenceHardware; -Landroid/location/IGpsGeofenceHardware$Stub; -Landroid/location/ILocationListener; -Landroid/location/ILocationListener$Stub; -Landroid/location/ILocationListener$Stub$Proxy; -Landroid/location/ILocationManager; -Landroid/location/ILocationManager$Stub; -Landroid/location/INetInitiatedListener; -Landroid/location/INetInitiatedListener$Stub; -Landroid/location/LocalListenerHelper; -Landroid/location/Location; -Landroid/location/Location$1; -Landroid/location/Location$2; -Landroid/location/LocationListener; -Landroid/location/LocationManager; -Landroid/location/LocationManager$ListenerTransport; -Landroid/location/LocationManager$ListenerTransport$1; -Landroid/location/LocationManager$ListenerTransport$2; -Landroid/location/LocationRequest; -Landroid/location/LocationRequest$1; -Landroid/media/AudioAttributes; -Landroid/media/AudioAttributes$1; -Landroid/media/AudioAttributes$Builder; -Landroid/media/AudioDeviceCallback; -Landroid/media/AudioDeviceInfo; -Landroid/media/AudioDevicePort; -Landroid/media/AudioDevicePortConfig; -Landroid/media/AudioFocusInfo; -Landroid/media/AudioFocusInfo$1; -Landroid/media/AudioFormat; -Landroid/media/AudioFormat$1; -Landroid/media/AudioFormat$Builder; -Landroid/media/AudioGain; -Landroid/media/AudioGainConfig; -Landroid/media/AudioHandle; -Landroid/media/AudioManager; -Landroid/media/AudioManager$1; -Landroid/media/AudioManager$2; -Landroid/media/AudioManager$3; -Landroid/media/AudioManagerInternal; -Landroid/media/AudioManagerInternal$RingerModeDelegate; -Landroid/media/AudioManager$NativeEventHandlerDelegate; -Landroid/media/AudioManager$NativeEventHandlerDelegate$1; -Landroid/media/AudioManager$OnAmPortUpdateListener; -Landroid/media/AudioManager$OnAudioPortUpdateListener; -Landroid/media/AudioManager$ServiceEventHandlerDelegate; -Landroid/media/AudioManager$ServiceEventHandlerDelegate$1; -Landroid/media/AudioMixPort; -Landroid/media/AudioMixPortConfig; -Landroid/media/AudioPatch; -Landroid/media/AudioPlaybackConfiguration; -Landroid/media/AudioPlaybackConfiguration$1; -Landroid/media/AudioPlaybackConfiguration$IPlayerShell; -Landroid/media/AudioPlaybackConfiguration$PlayerDeathMonitor; -Landroid/media/audiopolicy/AudioMix; -Landroid/media/audiopolicy/AudioMixingRule; -Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion; -Landroid/media/audiopolicy/AudioPolicyConfig; -Landroid/media/audiopolicy/IAudioPolicyCallback; -Landroid/media/audiopolicy/IAudioPolicyCallback$Stub; -Landroid/media/AudioPort; -Landroid/media/AudioPortConfig; -Landroid/media/AudioPortEventHandler; -Landroid/media/AudioPortEventHandler$1; -Landroid/media/AudioRecord; -Landroid/media/AudioRecordingConfiguration; -Landroid/media/AudioRecordingConfiguration$1; -Landroid/media/AudioRoutesInfo; -Landroid/media/AudioRoutesInfo$1; -Landroid/media/AudioRouting; -Landroid/media/AudioSystem; -Landroid/media/AudioSystem$AudioRecordingCallback; -Landroid/media/AudioSystem$DynamicPolicyCallback; -Landroid/media/AudioSystem$ErrorCallback; -Landroid/media/AudioTimestamp; -Landroid/media/AudioTrack; -Landroid/media/CamcorderProfile; -Landroid/media/CameraProfile; -Landroid/media/DecoderCapabilities; -Landroid/media/EncoderCapabilities; -Landroid/media/IAudioFocusDispatcher; -Landroid/media/IAudioFocusDispatcher$Stub; -Landroid/media/IAudioFocusDispatcher$Stub$Proxy; -Landroid/media/IAudioRoutesObserver; -Landroid/media/IAudioRoutesObserver$Stub; -Landroid/media/IAudioRoutesObserver$Stub$Proxy; -Landroid/media/IAudioService; -Landroid/media/IAudioService$Stub; -Landroid/media/Image; -Landroid/media/ImageReader; -Landroid/media/ImageReader$SurfaceImage; -Landroid/media/ImageWriter; -Landroid/media/ImageWriter$WriterSurfaceImage; -Landroid/media/IMediaHTTPConnection; -Landroid/media/IMediaHTTPConnection$Stub; -Landroid/media/IMediaResourceMonitor; -Landroid/media/IMediaResourceMonitor$Stub; -Landroid/media/IMediaRouterClient; -Landroid/media/IMediaRouterClient$Stub; -Landroid/media/IMediaRouterClient$Stub$Proxy; -Landroid/media/IMediaRouterService; -Landroid/media/IMediaRouterService$Stub; -Landroid/media/IPlaybackConfigDispatcher; -Landroid/media/IPlaybackConfigDispatcher$Stub; -Landroid/media/IPlayer; -Landroid/media/IPlayer$Stub; -Landroid/media/IPlayer$Stub$Proxy; -Landroid/media/IRecordingConfigDispatcher; -Landroid/media/IRecordingConfigDispatcher$Stub; -Landroid/media/IRemoteVolumeController; -Landroid/media/IRemoteVolumeController$Stub; -Landroid/media/IRemoteVolumeController$Stub$Proxy; -Landroid/media/IRemoteVolumeObserver; -Landroid/media/IRemoteVolumeObserver$Stub; -Landroid/media/IRingtonePlayer; -Landroid/media/IRingtonePlayer$Stub; -Landroid/media/IRingtonePlayer$Stub$Proxy; -Landroid/media/IVolumeController; -Landroid/media/IVolumeController$Stub; -Landroid/media/IVolumeController$Stub$Proxy; -Landroid/media/JetPlayer; -Landroid/media/MediaCodec; -Landroid/media/MediaCodecList; -Landroid/media/MediaCrypto; -Landroid/media/MediaDescription; -Landroid/media/MediaDescription$1; -Landroid/media/MediaDrm; -Landroid/media/MediaExtractor; -Landroid/media/MediaHTTPConnection; -Landroid/media/MediaMetadata; -Landroid/media/MediaMetadata$1; -Landroid/media/MediaMetadata$Builder; -Landroid/media/MediaMetadataRetriever; -Landroid/media/MediaMuxer; -Landroid/media/MediaPlayer; -Landroid/media/MediaRecorder; -Landroid/media/MediaRouter; -Landroid/media/MediaRouter$Callback; -Landroid/media/MediaRouter$CallbackInfo; -Landroid/media/MediaRouterClientState; -Landroid/media/MediaRouterClientState$1; -Landroid/media/MediaRouter$RouteCategory; -Landroid/media/MediaRouter$RouteInfo; -Landroid/media/MediaRouter$RouteInfo$1; -Landroid/media/MediaRouter$SimpleCallback; -Landroid/media/MediaRouter$Static; -Landroid/media/MediaRouter$Static$1; -Landroid/media/MediaRouter$Static$Client; -Landroid/media/MediaRouter$Static$Client$1; -Landroid/media/MediaRouter$VolumeChangeReceiver; -Landroid/media/MediaRouter$WifiDisplayStatusChangedReceiver; -Landroid/media/MediaScanner; -Landroid/media/MediaSync; -Landroid/media/midi/IMidiDeviceListener; -Landroid/media/midi/IMidiDeviceOpenCallback; -Landroid/media/midi/IMidiDeviceServer; -Landroid/media/midi/IMidiManager; -Landroid/media/midi/IMidiManager$Stub; -Landroid/media/midi/MidiDeviceInfo; -Landroid/media/midi/MidiDeviceStatus; -Landroid/media/midi/MidiManager; -Landroid/media/PlaybackParams; -Landroid/media/PlaybackParams$1; -Landroid/media/PlayerBase; -Landroid/media/PlayerBase$1; -Landroid/media/PlayerBase$2; -Landroid/media/PlayerBase$PlayerIdCard; -Landroid/media/PlayerBase$PlayerIdCard$1; -Landroid/media/projection/IMediaProjection; -Landroid/media/projection/IMediaProjectionManager; -Landroid/media/projection/IMediaProjectionManager$Stub; -Landroid/media/projection/IMediaProjectionWatcherCallback; -Landroid/media/projection/IMediaProjectionWatcherCallback$Stub; -Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy; -Landroid/media/projection/MediaProjectionInfo; -Landroid/media/projection/MediaProjectionManager; -Landroid/media/Rating; -Landroid/media/Rating$1; -Landroid/media/RemoteDisplay; -Landroid/media/ResampleInputStream; -Landroid/media/session/IActiveSessionsListener; -Landroid/media/session/IActiveSessionsListener$Stub; -Landroid/media/session/IActiveSessionsListener$Stub$Proxy; -Landroid/media/session/IOnMediaKeyListener; -Landroid/media/session/IOnVolumeKeyLongPressListener; -Landroid/media/session/ISession; -Landroid/media/session/ISessionCallback; -Landroid/media/session/ISessionCallback$Stub; -Landroid/media/session/ISessionCallback$Stub$Proxy; -Landroid/media/session/ISessionController; -Landroid/media/session/ISessionControllerCallback; -Landroid/media/session/ISessionControllerCallback$Stub; -Landroid/media/session/ISessionControllerCallback$Stub$Proxy; -Landroid/media/session/ISessionController$Stub; -Landroid/media/session/ISessionManager; -Landroid/media/session/ISessionManager$Stub; -Landroid/media/session/ISession$Stub; -Landroid/media/session/MediaController; -Landroid/media/session/MediaController$CallbackStub; -Landroid/media/session/MediaController$TransportControls; -Landroid/media/session/MediaSession; -Landroid/media/session/MediaSession$Callback; -Landroid/media/session/MediaSession$CallbackMessageHandler; -Landroid/media/session/MediaSession$CallbackStub; -Landroid/media/session/MediaSessionManager; -Landroid/media/session/MediaSession$QueueItem; -Landroid/media/session/MediaSession$QueueItem$1; -Landroid/media/session/MediaSession$Token; -Landroid/media/session/MediaSession$Token$1; -Landroid/media/session/ParcelableVolumeInfo; -Landroid/media/session/ParcelableVolumeInfo$1; -Landroid/media/session/PlaybackState; -Landroid/media/session/PlaybackState$1; -Landroid/media/session/PlaybackState$Builder; -Landroid/media/session/PlaybackState$CustomAction; -Landroid/media/session/PlaybackState$CustomAction$1; -Landroid/media/SoundPool; -Landroid/media/SoundPool$Builder; -Landroid/media/SoundPool$EventHandler; -Landroid/media/SoundPool$OnLoadCompleteListener; -Landroid/media/soundtrigger/SoundTriggerManager; -Landroid/media/SubtitleController$Listener; -Landroid/media/ToneGenerator; -Landroid/media/tv/TvInputHardwareInfo$Builder; -Landroid/media/tv/TvInputManager; -Landroid/media/tv/TvStreamConfig; -Landroid/media/tv/TvStreamConfig$Builder; -Landroid/media/VolumePolicy; -Landroid/media/VolumePolicy$1; -Landroid/metrics/LogMaker; -Landroid/mtp/MtpDatabase; -Landroid/mtp/MtpDevice; -Landroid/mtp/MtpDeviceInfo; -Landroid/mtp/MtpEvent; -Landroid/mtp/MtpObjectInfo; -Landroid/mtp/MtpPropertyGroup; -Landroid/mtp/MtpPropertyList; -Landroid/mtp/MtpServer; -Landroid/mtp/MtpStorage; -Landroid/mtp/MtpStorageInfo; -Landroid/net/apf/ApfCapabilities; -Landroid/net/apf/ApfFilter; -Landroid/net/apf/ApfFilter$ProcessRaResult; -Landroid/net/apf/ApfFilter$Ra; -Landroid/net/apf/ApfFilter$ReceiveThread; -Landroid/net/apf/ApfGenerator; -Landroid/net/apf/ApfGenerator$ExtendedOpcodes; -Landroid/net/apf/ApfGenerator$IllegalInstructionException; -Landroid/net/apf/ApfGenerator$Instruction; -Landroid/net/apf/ApfGenerator$Opcodes; -Landroid/net/apf/ApfGenerator$Register; -Landroid/net/ConnectivityManager; -Landroid/net/ConnectivityManager$CallbackHandler; -Landroid/net/ConnectivityManager$NetworkCallback; -Landroid/net/ConnectivityManager$OnNetworkActiveListener; -Landroid/net/ConnectivityMetricsEvent; -Landroid/net/ConnectivityMetricsEvent$1; -Landroid/net/ConnectivityMetricsEvent$Reference; -Landroid/net/ConnectivityThread; -Landroid/net/ConnectivityThread$Singleton; -Landroid/net/Credentials; -Landroid/net/DataUsageRequest; -Landroid/net/dhcp/DhcpAckPacket; -Landroid/net/dhcp/DhcpClient; -Landroid/net/dhcp/DhcpClient$ConfiguringInterfaceState; -Landroid/net/dhcp/DhcpClient$DhcpBoundState; -Landroid/net/dhcp/DhcpClient$DhcpHaveLeaseState; -Landroid/net/dhcp/DhcpClient$DhcpInitRebootState; -Landroid/net/dhcp/DhcpClient$DhcpInitState; -Landroid/net/dhcp/DhcpClient$DhcpReacquiringState; -Landroid/net/dhcp/DhcpClient$DhcpRebindingState; -Landroid/net/dhcp/DhcpClient$DhcpRebootingState; -Landroid/net/dhcp/DhcpClient$DhcpRenewingState; -Landroid/net/dhcp/DhcpClient$DhcpRequestingState; -Landroid/net/dhcp/DhcpClient$DhcpSelectingState; -Landroid/net/dhcp/DhcpClient$DhcpState; -Landroid/net/dhcp/DhcpClient$LoggingState; -Landroid/net/dhcp/DhcpClient$PacketRetransmittingState; -Landroid/net/dhcp/DhcpClient$ReceiveThread; -Landroid/net/dhcp/DhcpClient$StoppedState; -Landroid/net/dhcp/DhcpClient$WaitBeforeOtherState; -Landroid/net/dhcp/DhcpClient$WaitBeforeRenewalState; -Landroid/net/dhcp/DhcpClient$WaitBeforeStartState; -Landroid/net/dhcp/DhcpDiscoverPacket; -Landroid/net/dhcp/DhcpOfferPacket; -Landroid/net/dhcp/DhcpPacket; -Landroid/net/dhcp/DhcpPacket$ParseException; -Landroid/net/dhcp/DhcpRequestPacket; -Landroid/net/DhcpInfo; -Landroid/net/DhcpInfo$1; -Landroid/net/DhcpResults; -Landroid/net/DhcpResults$1; -Landroid/net/EthernetManager; -Landroid/net/EthernetManager$1; -Landroid/net/EthernetManager$2; -Landroid/net/EventLogTags; -Landroid/net/IConnectivityManager; -Landroid/net/IConnectivityManager$Stub; -Landroid/net/IConnectivityMetricsLogger; -Landroid/net/IConnectivityMetricsLogger$Stub; -Landroid/net/IEthernetManager; -Landroid/net/IEthernetManager$Stub; -Landroid/net/IEthernetServiceListener; -Landroid/net/IEthernetServiceListener$Stub; -Landroid/net/IIpConnectivityMetrics; -Landroid/net/IIpConnectivityMetrics$Stub; -Landroid/net/INetd; -Landroid/net/INetdEventCallback; -Landroid/net/INetd$Stub; -Landroid/net/INetd$Stub$Proxy; -Landroid/net/INetworkManagementEventObserver; -Landroid/net/INetworkManagementEventObserver$Stub; -Landroid/net/INetworkPolicyListener; -Landroid/net/INetworkPolicyListener$Stub; -Landroid/net/INetworkPolicyListener$Stub$Proxy; -Landroid/net/INetworkPolicyManager; -Landroid/net/INetworkPolicyManager$Stub; -Landroid/net/INetworkScoreCache; -Landroid/net/INetworkScoreCache$Stub; -Landroid/net/INetworkScoreCache$Stub$Proxy; -Landroid/net/INetworkScoreService; -Landroid/net/INetworkScoreService$Stub; -Landroid/net/INetworkStatsService; -Landroid/net/INetworkStatsService$Stub; -Landroid/net/INetworkStatsSession; -Landroid/net/INetworkStatsSession$Stub; -Landroid/net/InterfaceConfiguration; -Landroid/net/InterfaceConfiguration$1; -Landroid/net/IpConfiguration; -Landroid/net/IpConfiguration$1; -Landroid/net/IpConfiguration$IpAssignment; -Landroid/net/IpConfiguration$ProxySettings; -Landroid/net/ip/ConnectivityPacketTracker; -Landroid/net/ip/ConnectivityPacketTracker$PacketListener; -Landroid/net/ip/IpManager; -Landroid/net/ip/IpManager$1; -Landroid/net/ip/IpManager$2; -Landroid/net/ip/IpManager$3; -Landroid/net/ip/IpManager$Callback; -Landroid/net/ip/IpManager$LoggingCallbackWrapper; -Landroid/net/ip/IpManager$MessageHandlingLogger; -Landroid/net/ip/IpManager$ProvisioningConfiguration; -Landroid/net/ip/IpManager$ProvisioningConfiguration$Builder; -Landroid/net/ip/IpManager$RunningState; -Landroid/net/ip/IpManager$StartedState; -Landroid/net/ip/IpManager$StoppedState; -Landroid/net/ip/IpManager$StoppingState; -Landroid/net/ip/IpReachabilityMonitor; -Landroid/net/ip/IpReachabilityMonitor$Callback; -Landroid/net/ip/IpReachabilityMonitor$NetlinkSocketObserver; -Landroid/net/IpPrefix; -Landroid/net/IpPrefix$1; -Landroid/net/LinkAddress; -Landroid/net/LinkAddress$1; -Landroid/net/LinkProperties; -Landroid/net/LinkProperties$1; -Landroid/net/LinkProperties$CompareResult; -Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LocalServerSocket; -Landroid/net/LocalSocket; -Landroid/net/LocalSocketAddress; -Landroid/net/LocalSocketAddress$Namespace; -Landroid/net/LocalSocketImpl; -Landroid/net/LocalSocketImpl$SocketInputStream; -Landroid/net/LocalSocketImpl$SocketOutputStream; -Landroid/net/metrics/ApfProgramEvent; -Landroid/net/metrics/ApfProgramEvent$1; -Landroid/net/metrics/ConnectStats; -Landroid/net/metrics/DefaultNetworkEvent; -Landroid/net/metrics/DefaultNetworkEvent$1; -Landroid/net/metrics/DhcpClientEvent; -Landroid/net/metrics/DhcpClientEvent$1; -Landroid/net/metrics/DnsEvent; -Landroid/net/metrics/DnsEvent$1; -Landroid/net/metrics/INetdEventListener; -Landroid/net/metrics/INetdEventListener$Stub; -Landroid/net/metrics/IpConnectivityLog; -Landroid/net/metrics/IpManagerEvent; -Landroid/net/metrics/IpManagerEvent$1; -Landroid/net/metrics/NetworkEvent; -Landroid/net/metrics/NetworkEvent$1; -Landroid/net/metrics/RaEvent; -Landroid/net/metrics/RaEvent$1; -Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/ValidationProbeEvent; -Landroid/net/metrics/ValidationProbeEvent$1; -Landroid/net/metrics/ValidationProbeEvent$Decoder; -Landroid/net/netlink/NetlinkConstants; -Landroid/net/netlink/NetlinkErrorMessage; -Landroid/net/netlink/NetlinkMessage; -Landroid/net/netlink/NetlinkSocket; -Landroid/net/netlink/RtNetlinkNeighborMessage; -Landroid/net/netlink/StructNdaCacheInfo; -Landroid/net/netlink/StructNdMsg; -Landroid/net/netlink/StructNlAttr; -Landroid/net/netlink/StructNlMsgHdr; -Landroid/net/Network; -Landroid/net/Network$1; -Landroid/net/Network$2; -Landroid/net/NetworkAgent; -Landroid/net/NetworkCapabilities; -Landroid/net/NetworkCapabilities$1; -Landroid/net/NetworkConfig; -Landroid/net/NetworkFactory; -Landroid/net/NetworkFactory$NetworkRequestInfo; -Landroid/net/NetworkIdentity; -Landroid/net/NetworkInfo; -Landroid/net/NetworkInfo$1; -Landroid/net/NetworkInfo$DetailedState; -Landroid/net/NetworkInfo$State; -Landroid/net/NetworkKey; -Landroid/net/NetworkKey$1; -Landroid/net/NetworkMisc; -Landroid/net/NetworkMisc$1; -Landroid/net/Network$NetworkBoundSocketFactory; -Landroid/net/NetworkPolicy; -Landroid/net/NetworkPolicyManager; -Landroid/net/NetworkQuotaInfo; -Landroid/net/NetworkRequest; -Landroid/net/NetworkRequest$1; -Landroid/net/NetworkRequest$Builder; -Landroid/net/NetworkRequest$Type; -Landroid/net/NetworkScoreManager; -Landroid/net/NetworkScorerAppManager; -Landroid/net/NetworkState; -Landroid/net/NetworkState$1; -Landroid/net/NetworkStats; -Landroid/net/NetworkStats$1; -Landroid/net/NetworkStats$Entry; -Landroid/net/NetworkStatsHistory; -Landroid/net/NetworkStatsHistory$1; -Landroid/net/NetworkStatsHistory$DataStreamUtils; -Landroid/net/NetworkStatsHistory$Entry; -Landroid/net/NetworkStatsHistory$ParcelUtils; -Landroid/net/NetworkStats$NonMonotonicObserver; -Landroid/net/NetworkTemplate; -Landroid/net/NetworkTemplate$1; -Landroid/net/NetworkUtils; -Landroid/net/nsd/INsdManager; -Landroid/net/nsd/INsdManager$Stub; -Landroid/net/nsd/NsdManager; -Landroid/net/ProxyInfo; -Landroid/net/RecommendationRequest; -Landroid/net/RecommendationResult; -Landroid/net/RouteInfo; -Landroid/net/RouteInfo$1; -Landroid/net/ScoredNetwork; -Landroid/net/SntpClient; -Landroid/net/StaticIpConfiguration; -Landroid/net/StaticIpConfiguration$1; -Landroid/net/TrafficStats; -Landroid/net/UidRange; -Landroid/net/Uri; -Landroid/net/Uri$1; -Landroid/net/Uri$AbstractHierarchicalUri; -Landroid/net/Uri$AbstractPart; -Landroid/net/Uri$Builder; -Landroid/net/Uri$HierarchicalUri; -Landroid/net/Uri$OpaqueUri; -Landroid/net/Uri$Part; -Landroid/net/Uri$Part$EmptyPart; -Landroid/net/Uri$PathPart; -Landroid/net/Uri$PathSegments; -Landroid/net/Uri$PathSegmentsBuilder; -Landroid/net/Uri$StringUri; -Landroid/net/util/BlockingSocketReader; -Landroid/net/util/ConnectivityPacketSummary; -Landroid/net/util/MultinetworkPolicyTracker; -Landroid/net/util/MultinetworkPolicyTracker$1; -Landroid/net/util/MultinetworkPolicyTracker$SettingObserver; -Landroid/net/util/NetworkConstants; -Landroid/net/util/Stopwatch; -Landroid/net/wifi/aware/WifiAwareManager; -Landroid/net/wifi/hotspot2/PasspointConfiguration; -Landroid/net/wifi/IApInterface; -Landroid/net/wifi/IClientInterface; -Landroid/net/wifi/IClientInterface$Stub; -Landroid/net/wifi/IClientInterface$Stub$Proxy; -Landroid/net/wifi/IInterfaceEventCallback; -Landroid/net/wifi/IInterfaceEventCallback$Stub; -Landroid/net/wifi/IRttManager; -Landroid/net/wifi/IRttManager$Stub; -Landroid/net/wifi/IWificond; -Landroid/net/wifi/IWificond$Stub; -Landroid/net/wifi/IWificond$Stub$Proxy; -Landroid/net/wifi/IWifiManager; -Landroid/net/wifi/IWifiManager$Stub; -Landroid/net/wifi/IWifiScanner; -Landroid/net/wifi/IWifiScanner$Stub; -Landroid/net/WifiKey; -Landroid/net/WifiKey$1; -Landroid/net/wifi/p2p/IWifiP2pManager; -Landroid/net/wifi/p2p/IWifiP2pManager$Stub; -Landroid/net/wifi/p2p/WifiP2pConfig; -Landroid/net/wifi/p2p/WifiP2pConfig$1; -Landroid/net/wifi/p2p/WifiP2pDevice; -Landroid/net/wifi/p2p/WifiP2pDevice$1; -Landroid/net/wifi/p2p/WifiP2pDeviceList; -Landroid/net/wifi/p2p/WifiP2pDeviceList$1; -Landroid/net/wifi/p2p/WifiP2pGroup; -Landroid/net/wifi/p2p/WifiP2pGroup$1; -Landroid/net/wifi/p2p/WifiP2pGroupList; -Landroid/net/wifi/p2p/WifiP2pGroupList$1; -Landroid/net/wifi/p2p/WifiP2pGroupList$2; -Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener; -Landroid/net/wifi/p2p/WifiP2pInfo; -Landroid/net/wifi/p2p/WifiP2pInfo$1; -Landroid/net/wifi/p2p/WifiP2pManager; -Landroid/net/wifi/p2p/WifiP2pWfdInfo; -Landroid/net/wifi/p2p/WifiP2pWfdInfo$1; -Landroid/net/wifi/ParcelUtil; -Landroid/net/wifi/RssiPacketCountInfo; -Landroid/net/wifi/RttManager; -Landroid/net/wifi/RttManager$RttCapabilities; -Landroid/net/wifi/ScanResult; -Landroid/net/wifi/ScanResult$1; -Landroid/net/wifi/ScanResult$InformationElement; -Landroid/net/wifi/ScanSettings; -Landroid/net/wifi/SupplicantState; -Landroid/net/wifi/SupplicantState$1; -Landroid/net/wifi/WifiActivityEnergyInfo; -Landroid/net/wifi/WifiActivityEnergyInfo$1; -Landroid/net/wifi/WifiChannel; -Landroid/net/wifi/WifiConfiguration; -Landroid/net/wifi/WifiConfiguration$1; -Landroid/net/wifi/WifiConfiguration$AuthAlgorithm; -Landroid/net/wifi/WifiConfiguration$GroupCipher; -Landroid/net/wifi/WifiConfiguration$KeyMgmt; -Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus; -Landroid/net/wifi/WifiConfiguration$PairwiseCipher; -Landroid/net/wifi/WifiConfiguration$Protocol; -Landroid/net/wifi/WifiConfiguration$Visibility; -Landroid/net/wifi/WifiConnectionStatistics; -Landroid/net/wifi/WifiConnectionStatistics$1; -Landroid/net/wifi/WifiEnterpriseConfig; -Landroid/net/wifi/WifiEnterpriseConfig$1; -Landroid/net/wifi/WifiInfo; -Landroid/net/wifi/WifiInfo$1; -Landroid/net/wifi/WifiLinkLayerStats; -Landroid/net/wifi/WifiLinkLayerStats$1; -Landroid/net/wifi/WifiManager; -Landroid/net/wifi/WifiNetworkScoreCache; -Landroid/net/wifi/WifiScanner; -Landroid/net/wifi/WifiScanner$ActionListener; -Landroid/net/wifi/WifiScanner$ChannelSpec; -Landroid/net/wifi/WifiScanner$ParcelableScanData; -Landroid/net/wifi/WifiScanner$ParcelableScanData$1; -Landroid/net/wifi/WifiScanner$ParcelableScanResults; -Landroid/net/wifi/WifiScanner$ParcelableScanResults$1; -Landroid/net/wifi/WifiScanner$PnoScanListener; -Landroid/net/wifi/WifiScanner$ScanData; -Landroid/net/wifi/WifiScanner$ScanData$1; -Landroid/net/wifi/WifiScanner$ScanListener; -Landroid/net/wifi/WifiScanner$ScanSettings; -Landroid/net/wifi/WifiScanner$ScanSettings$1; -Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork; -Landroid/net/wifi/WifiScanner$ServiceHandler; -Landroid/net/wifi/WifiSsid; -Landroid/net/wifi/WifiSsid$1; -Landroid/net/wifi/WifiWakeReasonAndCounts; -Landroid/net/wifi/WpsInfo; -Landroid/net/wifi/WpsInfo$1; -Landroid/nfc/INfcAdapter; -Landroid/nfc/INfcAdapter$Stub; -Landroid/nfc/INfcAdapter$Stub$Proxy; -Landroid/nfc/NfcManager; -Landroid/opengl/EGL14; -Landroid/opengl/EGLConfig; -Landroid/opengl/EGLContext; -Landroid/opengl/EGLDisplay; -Landroid/opengl/EGLExt; -Landroid/opengl/EGLObjectHandle; -Landroid/opengl/EGLSurface; -Landroid/opengl/ETC1; -Landroid/opengl/GLES10; -Landroid/opengl/GLES10Ext; -Landroid/opengl/GLES11; -Landroid/opengl/GLES11Ext; -Landroid/opengl/GLES20; -Landroid/opengl/GLES30; -Landroid/opengl/GLES31; -Landroid/opengl/GLES31Ext; -Landroid/opengl/GLES32; -Landroid/opengl/GLUtils; -Landroid/opengl/Matrix; -Landroid/opengl/Visibility; -Landroid/os/AsyncTask; -Landroid/os/AsyncTask$1; -Landroid/os/AsyncTask$2; -Landroid/os/AsyncTask$3; -Landroid/os/AsyncTask$AsyncTaskResult; -Landroid/os/AsyncTask$InternalHandler; -Landroid/os/AsyncTask$SerialExecutor; -Landroid/os/AsyncTask$SerialExecutor$1; -Landroid/os/AsyncTask$Status; -Landroid/os/AsyncTask$WorkerRunnable; -Landroid/os/BadParcelableException; -Landroid/os/BaseBundle; -Landroid/os/BaseBundle$NoImagePreloadHolder; -Landroid/os/BatteryManager; -Landroid/os/BatteryManagerInternal; -Landroid/os/BatteryProperties; -Landroid/os/BatteryProperties$1; -Landroid/os/BatteryStats; -Landroid/os/BatteryStats$BitDescription; -Landroid/os/BatteryStats$ControllerActivityCounter; -Landroid/os/BatteryStats$Counter; -Landroid/os/BatteryStats$DailyItem; -Landroid/os/BatteryStats$HistoryEventTracker; -Landroid/os/BatteryStats$HistoryItem; -Landroid/os/BatteryStats$HistoryPrinter; -Landroid/os/BatteryStats$HistoryStepDetails; -Landroid/os/BatteryStats$HistoryTag; -Landroid/os/BatteryStats$IntToString; -Landroid/os/BatteryStats$LevelStepTracker; -Landroid/os/BatteryStats$LongCounter; -Landroid/os/BatteryStats$PackageChange; -Landroid/os/BatteryStats$Timer; -Landroid/os/BatteryStats$Uid; -Landroid/os/BatteryStats$Uid$Pid; -Landroid/os/BatteryStats$Uid$Pkg; -Landroid/os/BatteryStats$Uid$Pkg$Serv; -Landroid/os/BatteryStats$Uid$Proc; -Landroid/os/BatteryStats$Uid$Sensor; -Landroid/os/BatteryStats$Uid$Wakelock; -Landroid/os/Binder; -Landroid/os/BinderProxy; -Landroid/os/Build; -Landroid/os/Build$VERSION; -Landroid/os/Bundle; -Landroid/os/Bundle$1; -Landroid/os/CancellationSignal; -Landroid/os/CancellationSignal$OnCancelListener; -Landroid/os/CancellationSignal$Transport; -Landroid/os/CommonTimeConfig$OnServerDiedListener; -Landroid/os/CpuUsageInfo; -Landroid/os/CpuUsageInfo$1; -Landroid/os/DeadObjectException; -Landroid/os/DeadSystemException; -Landroid/os/Debug; -Landroid/os/Debug$MemoryInfo; -Landroid/os/Debug$MemoryInfo$1; -Landroid/os/DropBoxManager; -Landroid/os/DropBoxManager$Entry; -Landroid/os/DropBoxManager$Entry$1; -Landroid/os/Environment; -Landroid/os/Environment$UserEnvironment; -Landroid/os/FactoryTest; -Landroid/os/FileObserver; -Landroid/os/FileObserver$ObserverThread; -Landroid/os/FileUtils; -Landroid/os/GraphicsEnvironment; -Landroid/os/Handler; -Landroid/os/Handler$BlockingRunnable; -Landroid/os/Handler$Callback; -Landroid/os/Handler$MessengerImpl; -Landroid/os/HandlerThread; -Landroid/os/HardwarePropertiesManager; -Landroid/os/health/HealthStatsParceler; -Landroid/os/health/SystemHealthManager; -Landroid/os/HwBinder; -Landroid/os/HwBlob; -Landroid/os/HwParcel; -Landroid/os/HwRemoteBinder; -Landroid/os/IBatteryPropertiesListener; -Landroid/os/IBatteryPropertiesListener$Stub; -Landroid/os/IBatteryPropertiesRegistrar; -Landroid/os/IBatteryPropertiesRegistrar$Stub; -Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy; -Landroid/os/IBinder; -Landroid/os/IBinder$DeathRecipient; -Landroid/os/ICancellationSignal; -Landroid/os/ICancellationSignal$Stub; -Landroid/os/IDeviceIdentifiersPolicyService; -Landroid/os/IDeviceIdentifiersPolicyService$Stub; -Landroid/os/IDeviceIdleController; -Landroid/os/IDeviceIdleController$Stub; -Landroid/os/IHardwarePropertiesManager; -Landroid/os/IHardwarePropertiesManager$Stub; -Landroid/os/IHwBinder; -Landroid/os/IHwBinder$DeathRecipient; -Landroid/os/IHwInterface; -Landroid/os/IIncidentManager; -Landroid/os/IIncidentManager$Stub; -Landroid/os/IInstalld; -Landroid/os/IInstalld$Stub; -Landroid/os/IInstalld$Stub$Proxy; -Landroid/os/IInterface; -Landroid/os/IMaintenanceActivityListener; -Landroid/os/IMessenger; -Landroid/os/IMessenger$Stub; -Landroid/os/IMessenger$Stub$Proxy; -Landroid/os/IncidentManager; -Landroid/os/INetworkActivityListener; -Landroid/os/INetworkManagementService; -Landroid/os/INetworkManagementService$Stub; -Landroid/os/IPermissionController; -Landroid/os/IPermissionController$Stub; -Landroid/os/IPowerManager; -Landroid/os/IPowerManager$Stub; -Landroid/os/IProcessInfoService; -Landroid/os/IProcessInfoService$Stub; -Landroid/os/IProgressListener; -Landroid/os/IRecoverySystem; -Landroid/os/IRecoverySystemProgressListener; -Landroid/os/IRecoverySystem$Stub; -Landroid/os/IRemoteCallback; -Landroid/os/IRemoteCallback$Stub; -Landroid/os/IRemoteCallback$Stub$Proxy; -Landroid/os/ISchedulingPolicyService; -Landroid/os/ISchedulingPolicyService$Stub; -Landroid/os/IServiceManager; -Landroid/os/IUpdateLock; -Landroid/os/IUpdateLock$Stub; -Landroid/os/IUserManager; -Landroid/os/IUserManager$Stub; -Landroid/os/IVibratorService; -Landroid/os/IVibratorService$Stub; -Landroid/os/LocaleList; -Landroid/os/LocaleList$1; -Landroid/os/Looper; -Landroid/os/MemoryFile; -Landroid/os/Message; -Landroid/os/Message$1; -Landroid/os/MessageQueue; -Landroid/os/MessageQueue$IdleHandler; -Landroid/os/Messenger; -Landroid/os/Messenger$1; -Landroid/os/OperationCanceledException; -Landroid/os/Parcel; -Landroid/os/Parcel$1; -Landroid/os/Parcelable; -Landroid/os/Parcelable$ClassLoaderCreator; -Landroid/os/Parcelable$Creator; -Landroid/os/ParcelFileDescriptor; -Landroid/os/ParcelFileDescriptor$1; -Landroid/os/ParcelFileDescriptor$AutoCloseInputStream; -Landroid/os/ParcelFileDescriptor$AutoCloseOutputStream; -Landroid/os/ParcelFormatException; -Landroid/os/ParcelUuid; -Landroid/os/PatternMatcher; -Landroid/os/PatternMatcher$1; -Landroid/os/PersistableBundle; -Landroid/os/PersistableBundle$1; -Landroid/os/PersistableBundle$MyReadMapCallback; -Landroid/os/PowerManager; -Landroid/os/PowerManagerInternal; -Landroid/os/PowerManagerInternal$LowPowerModeListener; -Landroid/os/PowerManager$WakeLock; -Landroid/os/PowerManager$WakeLock$1; -Landroid/os/Process; -Landroid/os/Process$ProcessStartResult; -Landroid/os/RecoverySystem; -Landroid/os/RemoteCallback; -Landroid/os/RemoteCallbackList; -Landroid/os/RemoteCallbackList$Callback; -Landroid/os/RemoteException; -Landroid/os/ResultReceiver; -Landroid/os/ResultReceiver$1; -Landroid/os/ResultReceiver$MyResultReceiver; -Landroid/os/SELinux; -Landroid/os/ServiceManager; -Landroid/os/ServiceManagerNative; -Landroid/os/ServiceManagerProxy; -Landroid/os/ServiceManager$ServiceNotFoundException; -Landroid/os/ServiceSpecificException; -Landroid/os/ShellCallback; -Landroid/os/ShellCallback$1; -Landroid/os/ShellCommand; -Landroid/os/StatFs; -Landroid/os/storage/DiskInfo; -Landroid/os/storage/IObbActionListener; -Landroid/os/storage/IObbActionListener$Stub; -Landroid/os/storage/IStorageEventListener; -Landroid/os/storage/IStorageEventListener$Stub; -Landroid/os/storage/IStorageEventListener$Stub$Proxy; -Landroid/os/storage/IStorageManager; -Landroid/os/storage/IStorageManager$Stub; -Landroid/os/storage/IStorageShutdownObserver; -Landroid/os/storage/StorageEventListener; -Landroid/os/storage/StorageManager; -Landroid/os/storage/StorageManagerInternal; -Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy; -Landroid/os/storage/StorageManager$ObbActionListener; -Landroid/os/storage/StorageManager$StorageEventListenerDelegate; -Landroid/os/storage/StorageVolume; -Landroid/os/storage/StorageVolume$1; -Landroid/os/storage/VolumeInfo; -Landroid/os/storage/VolumeInfo$1; -Landroid/os/storage/VolumeInfo$2; -Landroid/os/storage/VolumeRecord; -Landroid/os/StrictMode; -Landroid/os/StrictMode$1; -Landroid/os/StrictMode$2; -Landroid/os/StrictMode$3; -Landroid/os/StrictMode$4; -Landroid/os/StrictMode$5; -Landroid/os/StrictMode$6; -Landroid/os/StrictMode$7; -Landroid/os/StrictMode$8; -Landroid/os/StrictMode$9; -Landroid/os/StrictMode$AndroidBlockGuardPolicy; -Landroid/os/StrictMode$AndroidBlockGuardPolicy$1; -Landroid/os/StrictMode$AndroidCloseGuardReporter; -Landroid/os/StrictMode$InstanceCountViolation; -Landroid/os/StrictMode$Span; -Landroid/os/StrictMode$StrictModeDiskReadViolation; -Landroid/os/StrictMode$StrictModeDiskWriteViolation; -Landroid/os/StrictMode$StrictModeViolation; -Landroid/os/StrictMode$ThreadPolicy; -Landroid/os/StrictMode$ThreadSpanState; -Landroid/os/StrictMode$ViolationInfo; -Landroid/os/StrictMode$ViolationInfo$1; -Landroid/os/StrictMode$VmPolicy; -Landroid/os/StrictMode$VmPolicy$Builder; -Landroid/os/SynchronousResultReceiver; -Landroid/os/SynchronousResultReceiver$Result; -Landroid/os/SystemClock; -Landroid/os/SystemProperties; -Landroid/os/SystemService; -Landroid/os/SystemService$1; -Landroid/os/SystemService$State; -Landroid/os/SystemVibrator; -Landroid/os/TokenWatcher; -Landroid/os/TokenWatcher$1; -Landroid/os/Trace; -Landroid/os/Trace$1; -Landroid/os/TransactionTooLargeException; -Landroid/os/UEventObserver; -Landroid/os/UEventObserver$UEvent; -Landroid/os/UEventObserver$UEventThread; -Landroid/os/UpdateLock; -Landroid/os/UserHandle; -Landroid/os/UserHandle$1; -Landroid/os/UserManager; -Landroid/os/UserManagerInternal; -Landroid/os/UserManagerInternal$UserRestrictionsListener; -Landroid/os/Vibrator; -Landroid/os/WorkSource; -Landroid/os/WorkSource$1; -Landroid/os/ZygoteProcess; -Landroid/os/ZygoteProcess$ZygoteState; -Landroid/os/ZygoteStartFailedEx; -Landroid/print/IPrintDocumentAdapter; -Landroid/print/IPrinterDiscoveryObserver; -Landroid/print/IPrintJobStateChangeListener; -Landroid/print/IPrintManager; -Landroid/print/IPrintManager$Stub; -Landroid/print/IPrintServicesChangeListener; -Landroid/print/IPrintServicesChangeListener$Stub; -Landroid/print/IPrintServicesChangeListener$Stub$Proxy; -Landroid/print/IPrintSpooler; -Landroid/print/IPrintSpoolerCallbacks; -Landroid/print/IPrintSpoolerCallbacks$Stub; -Landroid/print/IPrintSpoolerClient; -Landroid/print/IPrintSpoolerClient$Stub; -Landroid/print/IPrintSpooler$Stub; -Landroid/print/IPrintSpooler$Stub$Proxy; -Landroid/print/PrintAttributes; -Landroid/print/PrinterId; -Landroid/print/PrintJobId; -Landroid/print/PrintJobInfo; -Landroid/print/PrintManager; -Landroid/printservice/IPrintServiceClient; -Landroid/printservice/IPrintServiceClient$Stub; -Landroid/printservice/PrintServiceInfo; -Landroid/printservice/PrintServiceInfo$1; -Landroid/printservice/recommendation/IRecommendationsChangeListener; -Landroid/provider/BaseColumns; -Landroid/provider/CalendarContract$Attendees; -Landroid/provider/CalendarContract$AttendeesColumns; -Landroid/provider/CalendarContract$CalendarColumns; -Landroid/provider/CalendarContract$Calendars; -Landroid/provider/CalendarContract$CalendarSyncColumns; -Landroid/provider/CalendarContract$Events; -Landroid/provider/CalendarContract$EventsColumns; -Landroid/provider/CalendarContract$Instances; -Landroid/provider/CalendarContract$SyncColumns; -Landroid/provider/CallLog$Calls; -Landroid/provider/ContactsContract; -Landroid/provider/ContactsContract$CommonDataKinds$BaseTypes; -Landroid/provider/ContactsContract$CommonDataKinds$Callable; -Landroid/provider/ContactsContract$CommonDataKinds$CommonColumns; -Landroid/provider/ContactsContract$CommonDataKinds$Phone; -Landroid/provider/ContactsContract$ContactCounts; -Landroid/provider/ContactsContract$ContactNameColumns; -Landroid/provider/ContactsContract$ContactOptionsColumns; -Landroid/provider/ContactsContract$Contacts; -Landroid/provider/ContactsContract$ContactsColumns; -Landroid/provider/ContactsContract$ContactStatusColumns; -Landroid/provider/ContactsContract$Data; -Landroid/provider/ContactsContract$DataColumns; -Landroid/provider/ContactsContract$DataColumnsWithJoins; -Landroid/provider/ContactsContract$DataUsageFeedback; -Landroid/provider/ContactsContract$DataUsageStatColumns; -Landroid/provider/ContactsContract$PhoneLookup; -Landroid/provider/ContactsContract$PhoneLookupColumns; -Landroid/provider/ContactsContract$RawContactsColumns; -Landroid/provider/ContactsContract$StatusColumns; -Landroid/provider/Downloads; -Landroid/provider/Downloads$Impl; -Landroid/provider/Settings; -Landroid/provider/Settings$ContentProviderHolder; -Landroid/provider/Settings$GenerationTracker; -Landroid/provider/Settings$Global; -Landroid/provider/Settings$NameValueCache; -Landroid/provider/Settings$NameValueTable; -Landroid/provider/Settings$Secure; -Landroid/provider/Settings$SettingNotFoundException; -Landroid/provider/Settings$System; -Landroid/provider/Settings$System$1; -Landroid/provider/Settings$System$2; -Landroid/provider/Settings$System$3; -Landroid/provider/Settings$System$4; -Landroid/provider/Settings$System$5; -Landroid/provider/Settings$System$6; -Landroid/provider/Settings$System$7; -Landroid/provider/Settings$System$8; -Landroid/provider/Settings$System$9; -Landroid/provider/Settings$System$DiscreteValueValidator; -Landroid/provider/Settings$System$InclusiveFloatRangeValidator; -Landroid/provider/Settings$System$InclusiveIntegerRangeValidator; -Landroid/provider/Settings$System$Validator; -Landroid/R$styleable; -Landroid/security/IKeyChainService; -Landroid/security/IKeyChainService$Stub; -Landroid/security/IKeyChainService$Stub$Proxy; -Landroid/security/IKeystoreService; -Landroid/security/IKeystoreService$Stub; -Landroid/security/IKeystoreService$Stub$Proxy; -Landroid/security/KeyChain; -Landroid/security/KeyChain$1; -Landroid/security/KeyChain$KeyChainConnection; -Landroid/security/keymaster/IKeyAttestationApplicationIdProvider; -Landroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub; -Landroid/security/keymaster/KeyAttestationApplicationId; -Landroid/security/KeyStore; -Landroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider; -Landroid/security/keystore/AndroidKeyStoreProvider; -Landroid/security/keystore/AndroidKeyStoreSpi; -Landroid/service/autofill/IAutoFillManagerService; -Landroid/service/autofill/IAutoFillManagerService$Stub; -Landroid/service/dreams/DreamManagerInternal; -Landroid/service/dreams/IDreamManager; -Landroid/service/dreams/IDreamManager$Stub; -Landroid/service/dreams/IDreamService; -Landroid/service/dreams/IDreamService$Stub; -Landroid/service/dreams/IDreamService$Stub$Proxy; -Landroid/service/gatekeeper/IGateKeeperService; -Landroid/service/gatekeeper/IGateKeeperService$Stub; -Landroid/service/gatekeeper/IGateKeeperService$Stub$Proxy; -Landroid/service/notification/Adjustment; -Landroid/service/notification/Condition; -Landroid/service/notification/Condition$1; -Landroid/service/notification/ConditionProviderService; -Landroid/service/notification/ConditionProviderService$H; -Landroid/service/notification/ConditionProviderService$Provider; -Landroid/service/notification/IConditionProvider; -Landroid/service/notification/IConditionProvider$Stub; -Landroid/service/notification/IConditionProvider$Stub$Proxy; -Landroid/service/notification/INotificationListener; -Landroid/service/notification/INotificationListener$Stub; -Landroid/service/notification/INotificationListener$Stub$Proxy; -Landroid/service/notification/IStatusBarNotificationHolder; -Landroid/service/notification/IStatusBarNotificationHolder$Stub; -Landroid/service/notification/NotificationListenerService$Ranking; -Landroid/service/notification/NotificationRankingUpdate; -Landroid/service/notification/NotificationRankingUpdate$1; -Landroid/service/notification/StatusBarNotification; -Landroid/service/notification/StatusBarNotification$1; -Landroid/service/notification/ZenModeConfig; -Landroid/service/notification/ZenModeConfig$1; -Landroid/service/notification/ZenModeConfig$Diff; -Landroid/service/notification/ZenModeConfig$EventInfo; -Landroid/service/notification/ZenModeConfig$ScheduleInfo; -Landroid/service/notification/ZenModeConfig$ZenRule; -Landroid/service/notification/ZenModeConfig$ZenRule$1; -Landroid/service/persistentdata/IPersistentDataBlockService; -Landroid/service/persistentdata/IPersistentDataBlockService$Stub; -Landroid/service/persistentdata/PersistentDataBlockManager; -Landroid/service/voice/IVoiceInteractionService; -Landroid/service/voice/IVoiceInteractionService$Stub; -Landroid/service/voice/IVoiceInteractionService$Stub$Proxy; -Landroid/service/voice/IVoiceInteractionSession; -Landroid/service/voice/IVoiceInteractionSessionService; -Landroid/service/voice/IVoiceInteractionSessionService$Stub; -Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy; -Landroid/service/voice/IVoiceInteractionSession$Stub; -Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy; -Landroid/service/voice/VoiceInteractionManagerInternal; -Landroid/service/voice/VoiceInteractionServiceInfo; -Landroid/service/vr/IVrManager; -Landroid/service/vr/IVrManager$Stub; -Landroid/service/vr/IVrStateCallbacks; -Landroid/service/vr/IVrStateCallbacks$Stub; -Landroid/service/vr/IVrStateCallbacks$Stub$Proxy; -Landroid/service/wallpaper/IWallpaperConnection; -Landroid/service/wallpaper/IWallpaperConnection$Stub; -Landroid/service/wallpaper/IWallpaperEngine; -Landroid/service/wallpaper/IWallpaperEngine$Stub; -Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy; -Landroid/service/wallpaper/IWallpaperService; -Landroid/service/wallpaper/IWallpaperService$Stub; -Landroid/service/wallpaper/IWallpaperService$Stub$Proxy; -Landroid/system/ErrnoException; -Landroid/system/GaiException; -Landroid/system/NetlinkSocketAddress; -Landroid/system/Os; -Landroid/system/OsConstants; -Landroid/system/PacketSocketAddress; -Landroid/system/StructAddrinfo; -Landroid/system/StructFlock; -Landroid/system/StructGroupReq; -Landroid/system/StructGroupSourceReq; -Landroid/system/StructIfaddrs; -Landroid/system/StructLinger; -Landroid/system/StructPasswd; -Landroid/system/StructPollfd; -Landroid/system/StructStat; -Landroid/system/StructStatVfs; -Landroid/system/StructTimeval; -Landroid/system/StructUcred; -Landroid/system/StructUtsname; -Landroid/system/UnixSocketAddress; -Landroid/telecom/CallAudioState; -Landroid/telecom/CallAudioState$1; -Landroid/telecom/Conferenceable; -Landroid/telecom/Connection; -Landroid/telecom/ConnectionRequest; -Landroid/telecom/ConnectionRequest$1; -Landroid/telecom/DefaultDialerManager; -Landroid/telecom/DisconnectCause; -Landroid/telecom/DisconnectCause$1; -Landroid/telecom/Log; -Landroid/telecom/Log$1; -Landroid/telecom/Logging/EventManager; -Landroid/telecom/Logging/EventManager$Event; -Landroid/telecom/Logging/EventManager$EventListener; -Landroid/telecom/Logging/EventManager$EventRecord; -Landroid/telecom/Logging/EventManager$Loggable; -Landroid/telecom/Logging/EventManager$TimedEventPair; -Landroid/telecom/Logging/Runnable; -Landroid/telecom/Logging/Runnable$1; -Landroid/telecom/Logging/Session; -Landroid/telecom/Logging/Session$Info; -Landroid/telecom/Logging/Session$Info$1; -Landroid/telecom/Logging/SessionManager; -Landroid/telecom/Logging/SessionManager$ICurrentThreadId; -Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs; -Landroid/telecom/Logging/SessionManager$ISessionIdQueryHandler; -Landroid/telecom/Logging/SessionManager$ISessionListener; -Landroid/telecom/ParcelableCall; -Landroid/telecom/ParcelableCall$1; -Landroid/telecom/ParcelableConference; -Landroid/telecom/ParcelableConnection; -Landroid/telecom/ParcelableConnection$1; -Landroid/telecom/PhoneAccount; -Landroid/telecom/PhoneAccount$1; -Landroid/telecom/PhoneAccount$Builder; -Landroid/telecom/PhoneAccountHandle; -Landroid/telecom/PhoneAccountHandle$1; -Landroid/telecom/StatusHints; -Landroid/telecom/TelecomAnalytics; -Landroid/telecom/TelecomAnalytics$SessionTiming; -Landroid/telecom/TelecomAnalytics$SessionTiming$1; -Landroid/telecom/TelecomManager; -Landroid/telecom/TimedEvent; -Landroid/telecom/VideoProfile; -Landroid/telecom/VideoProfile$1; -Landroid/telephony/CarrierConfigManager; -Landroid/telephony/CellLocation; -Landroid/telephony/gsm/GsmCellLocation; -Landroid/telephony/ModemActivityInfo; -Landroid/telephony/ModemActivityInfo$1; -Landroid/telephony/PhoneNumberUtils; -Landroid/telephony/PhoneStateListener; -Landroid/telephony/PhoneStateListener$1; -Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub; -Landroid/telephony/PreciseCallState; -Landroid/telephony/PreciseCallState$1; -Landroid/telephony/PreciseDataConnectionState; -Landroid/telephony/PreciseDataConnectionState$1; -Landroid/telephony/Rlog; -Landroid/telephony/ServiceState; -Landroid/telephony/ServiceState$1; -Landroid/telephony/SignalStrength; -Landroid/telephony/SignalStrength$1; -Landroid/telephony/SubscriptionInfo; -Landroid/telephony/SubscriptionInfo$1; -Landroid/telephony/SubscriptionManager; -Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener; -Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1; -Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$2; -Landroid/telephony/TelephonyManager; -Landroid/telephony/TelephonyManager$MultiSimVariants; -Landroid/telephony/VoLteServiceState; -Landroid/telephony/VoLteServiceState$1; -Landroid/text/AndroidBidi; -Landroid/text/AndroidCharacter; -Landroid/text/BoringLayout; -Landroid/text/BoringLayout$Metrics; -Landroid/text/ClipboardManager; -Landroid/text/Editable; -Landroid/text/Editable$Factory; -Landroid/text/FontConfig; -Landroid/text/FontConfig$1; -Landroid/text/FontConfig$Alias; -Landroid/text/FontConfig$Alias$1; -Landroid/text/FontConfig$Axis; -Landroid/text/FontConfig$Axis$1; -Landroid/text/FontConfig$Family; -Landroid/text/FontConfig$Family$1; -Landroid/text/FontConfig$Font; -Landroid/text/FontConfig$Font$1; -Landroid/text/format/DateFormat; -Landroid/text/format/Time; -Landroid/text/format/Time$TimeCalculator; -Landroid/text/GetChars; -Landroid/text/GraphicsOperations; -Landroid/text/Hyphenator; -Landroid/text/InputFilter; -Landroid/text/InputType; -Landroid/text/ITextClassificationService; -Landroid/text/ITextClassificationService$Stub; -Landroid/text/Layout; -Landroid/text/Layout$Alignment; -Landroid/text/Layout$Directions; -Landroid/text/method/AllCapsTransformationMethod; -Landroid/text/method/PasswordTransformationMethod; -Landroid/text/method/ReplacementTransformationMethod; -Landroid/text/method/SingleLineTransformationMethod; -Landroid/text/method/TransformationMethod; -Landroid/text/method/TransformationMethod2; -Landroid/text/NoCopySpan; -Landroid/text/ParcelableSpan; -Landroid/text/Selection; -Landroid/text/Selection$END; -Landroid/text/Selection$START; -Landroid/text/Spannable; -Landroid/text/Spannable$Factory; -Landroid/text/SpannableString; -Landroid/text/SpannableStringBuilder; -Landroid/text/SpannableStringInternal; -Landroid/text/Spanned; -Landroid/text/SpannedString; -Landroid/text/SpanSet; -Landroid/text/SpanWatcher; -Landroid/text/StaticLayout; -Landroid/text/StaticLayout$LineBreaks; -Landroid/text/style/CharacterStyle; -Landroid/text/style/MetricAffectingSpan; -Landroid/text/style/ParagraphStyle; -Landroid/text/style/ReplacementSpan; -Landroid/text/style/SpellCheckSpan; -Landroid/text/style/StyleSpan; -Landroid/text/style/SuggestionSpan; -Landroid/text/style/UpdateAppearance; -Landroid/text/style/UpdateLayout; -Landroid/text/TextDirectionHeuristic; -Landroid/text/TextDirectionHeuristics; -Landroid/text/TextDirectionHeuristics$AnyStrong; -Landroid/text/TextDirectionHeuristics$FirstStrong; -Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm; -Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl; -Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal; -Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale; -Landroid/text/TextLine; -Landroid/text/TextPaint; -Landroid/text/TextUtils; -Landroid/text/TextUtils$1; -Landroid/text/TextUtils$EllipsizeCallback; -Landroid/text/TextUtils$SimpleStringSplitter; -Landroid/text/TextUtils$StringSplitter; -Landroid/text/TextUtils$TruncateAt; -Landroid/text/TextWatcher; -Landroid/transition/AutoTransition; -Landroid/transition/ChangeBounds; -Landroid/transition/ChangeBounds$1; -Landroid/transition/ChangeBounds$2; -Landroid/transition/ChangeBounds$3; -Landroid/transition/ChangeBounds$4; -Landroid/transition/ChangeBounds$5; -Landroid/transition/ChangeBounds$6; -Landroid/transition/ChangeClipBounds; -Landroid/transition/ChangeImageTransform; -Landroid/transition/ChangeImageTransform$1; -Landroid/transition/ChangeImageTransform$2; -Landroid/transition/ChangeTransform; -Landroid/transition/ChangeTransform$1; -Landroid/transition/ChangeTransform$2; -Landroid/transition/Fade; -Landroid/transition/PathMotion; -Landroid/transition/Transition; -Landroid/transition/Transition$1; -Landroid/transition/TransitionInflater; -Landroid/transition/TransitionManager; -Landroid/transition/TransitionSet; -Landroid/transition/TransitionValuesMaps; -Landroid/transition/Visibility; -Landroid/util/AndroidException; -Landroid/util/AndroidRuntimeException; -Landroid/util/apk/ApkSignatureSchemeV2Verifier; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$ByteBufferDataSource; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$DataSource; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$MemoryMappedFileDataSource; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureInfo; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$SignatureNotFoundException; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerbatimX509Certificate; -Landroid/util/apk/ApkSignatureSchemeV2Verifier$WrappedX509Certificate; -Landroid/util/apk/ZipUtils; -Landroid/util/ArrayMap; -Landroid/util/ArrayMap$1; -Landroid/util/ArraySet; -Landroid/util/ArraySet$1; -Landroid/util/AtomicFile; -Landroid/util/AttributeSet; -Landroid/util/Base64; -Landroid/util/Base64$Coder; -Landroid/util/Base64$Decoder; -Landroid/util/Base64$Encoder; -Landroid/util/BootTimingsTraceLog; -Landroid/util/ContainerHelpers; -Landroid/util/DebugUtils; -Landroid/util/DisplayMetrics; -Landroid/util/EventLog; -Landroid/util/EventLog$Event; -Landroid/util/FastImmutableArraySet; -Landroid/util/FastImmutableArraySet$FastIterator; -Landroid/util/FloatProperty; -Landroid/util/IntArray; -Landroid/util/IntProperty; -Landroid/util/jar/StrictJarFile; -Landroid/util/KeyValueListParser; -Landroid/util/LocalLog; -Landroid/util/LocalLog$ReadOnlyLocalLog; -Landroid/util/Log; -Landroid/util/Log$1; -Landroid/util/Log$ImmediateLogWriter; -Landroid/util/Log$NoPreloadHolder; -Landroid/util/LogPrinter; -Landroid/util/Log$TerribleFailureHandler; -Landroid/util/LongArray; -Landroid/util/LongSparseArray; -Landroid/util/LongSparseLongArray; -Landroid/util/LruCache; -Landroid/util/MapCollections; -Landroid/util/MapCollections$ArrayIterator; -Landroid/util/MapCollections$EntrySet; -Landroid/util/MapCollections$KeySet; -Landroid/util/MapCollections$MapIterator; -Landroid/util/MapCollections$ValuesCollection; -Landroid/util/MathUtils; -Landroid/util/MemoryIntArray; -Landroid/util/MemoryIntArray$1; -Landroid/util/MutableBoolean; -Landroid/util/MutableInt; -Landroid/util/MutableLong; -Landroid/util/NtpTrustedTime; -Landroid/util/Pair; -Landroid/util/PathParser; -Landroid/util/PathParser$PathData; -Landroid/util/Pools$Pool; -Landroid/util/Pools$SimplePool; -Landroid/util/Pools$SynchronizedPool; -Landroid/util/Printer; -Landroid/util/Property; -Landroid/util/Rational; -Landroid/util/Singleton; -Landroid/util/Size; -Landroid/util/Slog; -Landroid/util/SparseArray; -Landroid/util/SparseBooleanArray; -Landroid/util/SparseIntArray; -Landroid/util/SparseLongArray; -Landroid/util/Spline; -Landroid/util/Spline$MonotoneCubicSpline; -Landroid/util/StateSet; -Landroid/util/SuperNotCalledException; -Landroid/util/TimedRemoteCaller; -Landroid/util/TimeUtils; -Landroid/util/TrustedTime; -Landroid/util/TypedValue; -Landroid/util/Xml; -Landroid/util/Xml$XmlSerializerFactory; -Landroid/view/accessibility/AccessibilityEvent; -Landroid/view/accessibility/AccessibilityEventSource; -Landroid/view/accessibility/AccessibilityManager; -Landroid/view/accessibility/AccessibilityManager$1; -Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener; -Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener; -Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener; -Landroid/view/accessibility/AccessibilityManager$MyHandler; -Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener; -Landroid/view/accessibility/AccessibilityRecord; -Landroid/view/accessibility/CaptioningManager; -Landroid/view/accessibility/IAccessibilityInteractionConnection; -Landroid/view/accessibility/IAccessibilityManager; -Landroid/view/accessibility/IAccessibilityManagerClient; -Landroid/view/accessibility/IAccessibilityManagerClient$Stub; -Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy; -Landroid/view/accessibility/IAccessibilityManager$Stub; -Landroid/view/ActionMode; -Landroid/view/ActionMode$Callback; -Landroid/view/animation/AccelerateDecelerateInterpolator; -Landroid/view/animation/AccelerateInterpolator; -Landroid/view/animation/AlphaAnimation; -Landroid/view/animation/Animation; -Landroid/view/animation/Animation$Description; -Landroid/view/animation/Animation$NoImagePreloadHolder; -Landroid/view/animation/AnimationSet; -Landroid/view/animation/AnimationUtils; -Landroid/view/animation/AnimationUtils$1; -Landroid/view/animation/AnimationUtils$AnimationState; -Landroid/view/animation/BaseInterpolator; -Landroid/view/animation/ClipRectAnimation; -Landroid/view/animation/DecelerateInterpolator; -Landroid/view/animation/Interpolator; -Landroid/view/animation/LinearInterpolator; -Landroid/view/animation/PathInterpolator; -Landroid/view/animation/RotateAnimation; -Landroid/view/animation/ScaleAnimation; -Landroid/view/animation/Transformation; -Landroid/view/animation/TranslateAnimation; -Landroid/view/AppTransitionAnimationSpec; -Landroid/view/AppTransitionAnimationSpec$1; -Landroid/view/autofill/AutoFillId; -Landroid/view/autofill/AutoFillId$1; -Landroid/view/autofill/AutoFillManager; -Landroid/view/Choreographer; -Landroid/view/Choreographer$1; -Landroid/view/Choreographer$2; -Landroid/view/Choreographer$CallbackQueue; -Landroid/view/Choreographer$CallbackRecord; -Landroid/view/Choreographer$FrameCallback; -Landroid/view/Choreographer$FrameDisplayEventReceiver; -Landroid/view/Choreographer$FrameHandler; -Landroid/view/ContextMenu; -Landroid/view/ContextThemeWrapper; -Landroid/view/Display; -Landroid/view/DisplayAdjustments; -Landroid/view/DisplayEventReceiver; -Landroid/view/Display$HdrCapabilities; -Landroid/view/Display$HdrCapabilities$1; -Landroid/view/DisplayInfo; -Landroid/view/DisplayInfo$1; -Landroid/view/DisplayListCanvas; -Landroid/view/Display$Mode; -Landroid/view/Display$Mode$1; -Landroid/view/DragEvent; -Landroid/view/FallbackEventHandler; -Landroid/view/FrameInfo; -Landroid/view/FrameMetrics; -Landroid/view/FrameMetricsObserver; -Landroid/view/FrameStats; -Landroid/view/GestureDetector; -Landroid/view/GestureDetector$GestureHandler; -Landroid/view/GestureDetector$OnContextClickListener; -Landroid/view/GestureDetector$OnDoubleTapListener; -Landroid/view/GestureDetector$OnGestureListener; -Landroid/view/GestureDetector$SimpleOnGestureListener; -Landroid/view/Gravity; -Landroid/view/HandlerActionQueue; -Landroid/view/HardwareLayer; -Landroid/view/IApplicationToken; -Landroid/view/IApplicationToken$Stub; -Landroid/view/IAppTransitionAnimationSpecsFuture; -Landroid/view/IAppTransitionAnimationSpecsFuture$Stub; -Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy; -Landroid/view/IDockedStackListener; -Landroid/view/IDockedStackListener$Stub; -Landroid/view/IDockedStackListener$Stub$Proxy; -Landroid/view/IGraphicsStats; -Landroid/view/IGraphicsStats$Stub; -Landroid/view/IInputFilter; -Landroid/view/InflateException; -Landroid/view/InputChannel; -Landroid/view/InputChannel$1; -Landroid/view/InputDevice; -Landroid/view/InputDevice$1; -Landroid/view/InputDevice$MotionRange; -Landroid/view/InputEvent; -Landroid/view/InputEvent$1; -Landroid/view/InputEventConsistencyVerifier; -Landroid/view/InputEventReceiver; -Landroid/view/InputEventReceiver$Factory; -Landroid/view/InputEventSender; -Landroid/view/inputmethod/BaseInputConnection; -Landroid/view/inputmethod/ComposingText; -Landroid/view/inputmethod/EditorInfo; -Landroid/view/inputmethod/EditorInfo$1; -Landroid/view/inputmethod/InputBinding; -Landroid/view/inputmethod/InputBinding$1; -Landroid/view/inputmethod/InputConnection; -Landroid/view/inputmethod/InputMethodInfo; -Landroid/view/inputmethod/InputMethodInfo$1; -Landroid/view/inputmethod/InputMethodManager; -Landroid/view/inputmethod/InputMethodManager$1; -Landroid/view/inputmethod/InputMethodManager$2; -Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper; -Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback; -Landroid/view/inputmethod/InputMethodManager$H; -Landroid/view/inputmethod/InputMethodManagerInternal; -Landroid/view/inputmethod/InputMethodSubtype; -Landroid/view/inputmethod/InputMethodSubtype$1; -Landroid/view/inputmethod/InputMethodSubtypeArray; -Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder; -Landroid/view/InputQueue; -Landroid/view/InputQueue$Callback; -Landroid/view/InputQueue$FinishedInputEventCallback; -Landroid/view/IOnKeyguardExitResult; -Landroid/view/IPinnedStackController; -Landroid/view/IPinnedStackController$Stub; -Landroid/view/IPinnedStackListener; -Landroid/view/IPinnedStackListener$Stub; -Landroid/view/IPinnedStackListener$Stub$Proxy; -Landroid/view/IRotationWatcher; -Landroid/view/IRotationWatcher$Stub; -Landroid/view/IRotationWatcher$Stub$Proxy; -Landroid/view/IWindow; -Landroid/view/IWindowFocusObserver; -Landroid/view/IWindowId; -Landroid/view/IWindowId$Stub; -Landroid/view/IWindowManager; -Landroid/view/IWindowManager$Stub; -Landroid/view/IWindowSession; -Landroid/view/IWindowSessionCallback; -Landroid/view/IWindowSessionCallback$Stub; -Landroid/view/IWindowSessionCallback$Stub$Proxy; -Landroid/view/IWindowSession$Stub; -Landroid/view/IWindow$Stub; -Landroid/view/IWindow$Stub$Proxy; -Landroid/view/KeyCharacterMap; -Landroid/view/KeyCharacterMap$1; -Landroid/view/KeyCharacterMap$FallbackAction; -Landroid/view/KeyEvent; -Landroid/view/KeyEvent$1; -Landroid/view/KeyEvent$Callback; -Landroid/view/KeyEvent$DispatcherState; -Landroid/view/LayoutInflater; -Landroid/view/LayoutInflater$Factory; -Landroid/view/LayoutInflater$Factory2; -Landroid/view/LayoutInflater$Filter; -Landroid/view/MagnificationSpec; -Landroid/view/Menu; -Landroid/view/MenuItem; -Landroid/view/MotionEvent; -Landroid/view/MotionEvent$1; -Landroid/view/MotionEvent$PointerCoords; -Landroid/view/MotionEvent$PointerProperties; -Landroid/view/PointerIcon; -Landroid/view/PointerIcon$1; -Landroid/view/RecordingCanvas; -Landroid/view/RenderNode; -Landroid/view/RenderNodeAnimator; -Landroid/view/RenderNodeAnimator$1; -Landroid/view/RenderNode$NoImagePreloadHolder; -Landroid/view/Surface; -Landroid/view/Surface$1; -Landroid/view/Surface$CompatibleCanvas; -Landroid/view/SurfaceControl; -Landroid/view/SurfaceControl$PhysicalDisplayInfo; -Landroid/view/SurfaceHolder; -Landroid/view/SurfaceHolder$Callback; -Landroid/view/SurfaceHolder$Callback2; -Landroid/view/Surface$HwuiContext; -Landroid/view/Surface$OutOfResourcesException; -Landroid/view/SurfaceSession; -Landroid/view/SurfaceView; -Landroid/view/textclassifier/TextClassificationManager; -Landroid/view/textservice/SpellCheckerInfo; -Landroid/view/textservice/SpellCheckerInfo$1; -Landroid/view/textservice/SpellCheckerSubtype; -Landroid/view/textservice/SpellCheckerSubtype$1; -Landroid/view/textservice/TextServicesManager; -Landroid/view/TextureView; -Landroid/view/ThreadedRenderer; -Landroid/view/ThreadedRenderer$DrawCallbacks; -Landroid/view/ThreadedRenderer$ProcessInitializer; -Landroid/view/VelocityTracker; -Landroid/view/VelocityTracker$Estimator; -Landroid/view/View; -Landroid/view/View$1; -Landroid/view/View$10; -Landroid/view/View$11; -Landroid/view/View$12; -Landroid/view/View$2; -Landroid/view/View$3; -Landroid/view/View$4; -Landroid/view/View$5; -Landroid/view/View$6; -Landroid/view/View$7; -Landroid/view/View$8; -Landroid/view/View$9; -Landroid/view/View$AttachInfo; -Landroid/view/View$AttachInfo$Callbacks; -Landroid/view/ViewConfiguration; -Landroid/view/View$ForegroundInfo; -Landroid/view/ViewGroup; -Landroid/view/ViewGroup$1; -Landroid/view/ViewGroup$2; -Landroid/view/ViewGroup$LayoutParams; -Landroid/view/ViewGroup$MarginLayoutParams; -Landroid/view/ViewGroup$TouchTarget; -Landroid/view/View$ListenerInfo; -Landroid/view/ViewManager; -Landroid/view/View$MeasureSpec; -Landroid/view/View$OnClickListener; -Landroid/view/View$OnCreateContextMenuListener; -Landroid/view/ViewOutlineProvider; -Landroid/view/ViewOutlineProvider$1; -Landroid/view/ViewOutlineProvider$2; -Landroid/view/ViewOutlineProvider$3; -Landroid/view/ViewParent; -Landroid/view/View$PerformClick; -Landroid/view/ViewPropertyAnimator; -Landroid/view/ViewPropertyAnimator$1; -Landroid/view/ViewPropertyAnimator$2; -Landroid/view/ViewPropertyAnimator$3; -Landroid/view/ViewPropertyAnimator$AnimatorEventListener; -Landroid/view/ViewPropertyAnimator$NameValuesHolder; -Landroid/view/ViewPropertyAnimator$PropertyBundle; -Landroid/view/ViewRootImpl; -Landroid/view/ViewRootImpl$1; -Landroid/view/ViewRootImpl$4; -Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager; -Landroid/view/ViewRootImpl$AsyncInputStage; -Landroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable; -Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable; -Landroid/view/ViewRootImpl$EarlyPostImeInputStage; -Landroid/view/ViewRootImpl$HighContrastTextManager; -Landroid/view/ViewRootImpl$ImeInputStage; -Landroid/view/ViewRootImpl$InputStage; -Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; -Landroid/view/ViewRootImpl$NativePostImeInputStage; -Landroid/view/ViewRootImpl$NativePreImeInputStage; -Landroid/view/ViewRootImpl$QueuedInputEvent; -Landroid/view/ViewRootImpl$SyntheticInputStage; -Landroid/view/ViewRootImpl$SyntheticJoystickHandler; -Landroid/view/ViewRootImpl$SyntheticKeyboardHandler; -Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler; -Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler$1; -Landroid/view/ViewRootImpl$SyntheticTrackballHandler; -Landroid/view/ViewRootImpl$TrackballAxis; -Landroid/view/ViewRootImpl$TraversalRunnable; -Landroid/view/ViewRootImpl$ViewPostImeInputStage; -Landroid/view/ViewRootImpl$ViewPreImeInputStage; -Landroid/view/ViewRootImpl$ViewRootHandler; -Landroid/view/ViewRootImpl$W; -Landroid/view/ViewRootImpl$WindowInputEventReceiver; -Landroid/view/ViewStub; -Landroid/view/View$TransformationInfo; -Landroid/view/ViewTreeObserver; -Landroid/view/ViewTreeObserver$CopyOnWriteArray; -Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access; -Landroid/view/ViewTreeObserver$InternalInsetsInfo; -Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener; -Landroid/view/ViewTreeObserver$OnGlobalLayoutListener; -Landroid/view/ViewTreeObserver$OnPreDrawListener; -Landroid/view/View$UnsetPressedState; -Landroid/view/Window; -Landroid/view/WindowAnimationFrameStats; -Landroid/view/WindowAnimationFrameStats$1; -Landroid/view/Window$Callback; -Landroid/view/WindowCallbacks; -Landroid/view/WindowContentFrameStats; -Landroid/view/WindowContentFrameStats$1; -Landroid/view/WindowInsets; -Landroid/view/WindowLeaked; -Landroid/view/WindowManager; -Landroid/view/WindowManager$BadTokenException; -Landroid/view/WindowManagerGlobal; -Landroid/view/WindowManagerGlobal$1; -Landroid/view/WindowManagerGlobal$2; -Landroid/view/WindowManagerImpl; -Landroid/view/WindowManagerInternal; -Landroid/view/WindowManagerInternal$AppTransitionListener; -Landroid/view/WindowManagerInternal$MagnificationCallbacks; -Landroid/view/WindowManagerInternal$OnHardKeyboardStatusChangeListener; -Landroid/view/WindowManagerInternal$WindowsForAccessibilityCallback; -Landroid/view/WindowManager$LayoutParams; -Landroid/view/WindowManager$LayoutParams$1; -Landroid/view/WindowManagerPolicy; -Landroid/view/WindowManagerPolicy$InputConsumer; -Landroid/view/WindowManagerPolicy$OnKeyguardExitResult; -Landroid/view/WindowManagerPolicy$PointerEventListener; -Landroid/view/WindowManagerPolicy$ScreenOnListener; -Landroid/view/WindowManagerPolicy$StartingSurface; -Landroid/view/WindowManagerPolicy$WindowManagerFuncs; -Landroid/view/WindowManagerPolicy$WindowState; -Landroid/view/Window$OnWindowDismissedCallback; -Landroid/view/Window$WindowControllerCallback; -Landroid/webkit/IWebViewUpdateService; -Landroid/webkit/IWebViewUpdateService$Stub; -Landroid/webkit/UserPackage; -Landroid/webkit/WebViewFactory; -Landroid/webkit/WebViewFactory$1; -Landroid/webkit/WebViewFactory$MissingWebViewPackageException; -Landroid/webkit/WebViewFactory$RelroFileCreator; -Landroid/webkit/WebViewProviderInfo; -Landroid/webkit/WebViewProviderInfo$1; -Landroid/webkit/WebViewProviderResponse; -Landroid/webkit/WebViewProviderResponse$1; -Landroid/webkit/WebViewZygote; -Landroid/widget/ActionMenuView$OnMenuItemClickListener; -Landroid/widget/Button; -Landroid/widget/FrameLayout; -Landroid/widget/FrameLayout$LayoutParams; -Landroid/widget/ImageButton; -Landroid/widget/ImageView; -Landroid/widget/ImageView$ScaleType; -Landroid/widget/LinearLayout; -Landroid/widget/LinearLayout$LayoutParams; -Landroid/widget/OverScroller; -Landroid/widget/OverScroller$SplineOverScroller; -Landroid/widget/RelativeLayout; -Landroid/widget/RelativeLayout$DependencyGraph; -Landroid/widget/RelativeLayout$DependencyGraph$Node; -Landroid/widget/RelativeLayout$LayoutParams; -Landroid/widget/RemoteViews; -Landroid/widget/RemoteViews$1; -Landroid/widget/RemoteViews$2; -Landroid/widget/RemoteViews$3; -Landroid/widget/RemoteViews$Action; -Landroid/widget/RemoteViews$ActionException; -Landroid/widget/RemoteViews$BitmapCache; -Landroid/widget/RemoteViews$BitmapReflectionAction; -Landroid/widget/RemoteViews$MemoryUsageCounter; -Landroid/widget/RemoteViews$MutablePair; -Landroid/widget/RemoteViews$OnClickHandler; -Landroid/widget/RemoteViews$ReflectionAction; -Landroid/widget/RemoteViews$RuntimeAction; -Landroid/widget/RemoteViews$SetOnClickPendingIntent; -Landroid/widget/RtlSpacingHelper; -Landroid/widget/Scroller$ViscousFluidInterpolator; -Landroid/widget/TextView; -Landroid/widget/TextView$BufferType; -Landroid/widget/TextView$CharWrapper; -Landroid/widget/Toolbar; -Landroid/widget/Toolbar$1; -Landroid/widget/Toolbar$2; -Landroid/widget/Toolbar$LayoutParams; -LB; -LC; -Lcom/android/dex/ClassData; -Lcom/android/dex/ClassData$Method; -Lcom/android/dex/ClassDef; -Lcom/android/dex/Code; -Lcom/android/dex/Dex; -Lcom/android/dex/Dex$ClassDefIterable; -Lcom/android/dex/DexException; -Lcom/android/dex/Dex$FieldIdTable; -Lcom/android/dex/DexFormat; -Lcom/android/dex/Dex$MethodIdTable; -Lcom/android/dex/Dex$ProtoIdTable; -Lcom/android/dex/Dex$Section; -Lcom/android/dex/Dex$StringTable; -Lcom/android/dex/Dex$TypeIndexToDescriptorIndexTable; -Lcom/android/dex/Dex$TypeIndexToDescriptorTable; -Lcom/android/dex/FieldId; -Lcom/android/dex/Leb128; -Lcom/android/dex/MethodId; -Lcom/android/dex/Mutf8; -Lcom/android/dex/TableOfContents; -Lcom/android/dex/TableOfContents$Section; -Lcom/android/dex/TypeList; -Lcom/android/dex/util/ByteInput; -Lcom/android/dex/util/ByteOutput; -Lcom/android/dex/util/ExceptionWithContext; -Lcom/android/dex/util/FileUtils; -Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano; -Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano; -Lcom/android/framework/protobuf/nano/InternalNano; -Lcom/android/framework/protobuf/nano/InvalidProtocolBufferNanoException; -Lcom/android/framework/protobuf/nano/MessageNano; -Lcom/android/framework/protobuf/nano/WireFormatNano; -Lcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet; -Lcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap; -Lcom/android/i18n/phonenumbers/MetadataLoader; -Lcom/android/i18n/phonenumbers/MetadataManager; -Lcom/android/i18n/phonenumbers/MetadataManager$1; -Lcom/android/i18n/phonenumbers/MetadataSource; -Lcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl; -Lcom/android/i18n/phonenumbers/NumberParseException; -Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType; -Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat; -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata; -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection; -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc; -Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; -Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource; -Lcom/android/i18n/phonenumbers/PhoneNumberUtil; -Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult; -Lcom/android/i18n/phonenumbers/RegexCache; -Lcom/android/i18n/phonenumbers/RegexCache$LRUCache; -Lcom/android/i18n/phonenumbers/RegexCache$LRUCache$1; -Lcom/android/i18n/phonenumbers/ShortNumbersRegionCodeSet; -Lcom/android/internal/alsa/AlsaCardsParser; -Lcom/android/internal/alsa/AlsaCardsParser$AlsaCardRecord; -Lcom/android/internal/alsa/AlsaDevicesParser; -Lcom/android/internal/alsa/LineTokenizer; -Lcom/android/internal/app/AssistUtils; -Lcom/android/internal/app/IAppOpsCallback; -Lcom/android/internal/app/IAppOpsCallback$Stub; -Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy; -Lcom/android/internal/app/IAppOpsService; -Lcom/android/internal/app/IAppOpsService$Stub; -Lcom/android/internal/app/IAssistScreenshotReceiver; -Lcom/android/internal/app/IAssistScreenshotReceiver$Stub; -Lcom/android/internal/app/IBatteryStats; -Lcom/android/internal/app/IBatteryStats$Stub; -Lcom/android/internal/app/IMediaContainerService; -Lcom/android/internal/app/IMediaContainerService$Stub; -Lcom/android/internal/app/IMediaContainerService$Stub$Proxy; -Lcom/android/internal/app/ISoundTriggerService; -Lcom/android/internal/app/ISoundTriggerService$Stub; -Lcom/android/internal/app/IVoiceInteractionManagerService; -Lcom/android/internal/app/IVoiceInteractionManagerService$Stub; -Lcom/android/internal/app/IVoiceInteractionSessionListener; -Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub; -Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy; -Lcom/android/internal/app/IVoiceInteractionSessionShowCallback; -Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub; -Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy; -Lcom/android/internal/app/IVoiceInteractor; -Lcom/android/internal/app/IVoiceInteractor$Stub; -Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy; -Lcom/android/internal/app/NightDisplayController; -Lcom/android/internal/app/NightDisplayController$1; -Lcom/android/internal/app/NightDisplayController$Callback; -Lcom/android/internal/app/NightDisplayController$LocalTime; -Lcom/android/internal/app/ProcessMap; -Lcom/android/internal/app/procstats/DumpUtils; -Lcom/android/internal/app/procstats/DurationsTable; -Lcom/android/internal/app/procstats/IProcessStats; -Lcom/android/internal/app/procstats/IProcessStats$Stub; -Lcom/android/internal/app/procstats/ProcessState; -Lcom/android/internal/app/procstats/ProcessState$1; -Lcom/android/internal/app/procstats/ProcessState$PssAggr; -Lcom/android/internal/app/procstats/ProcessStats; -Lcom/android/internal/app/procstats/ProcessStats$1; -Lcom/android/internal/app/procstats/ProcessStats$PackageState; -Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder; -Lcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection; -Lcom/android/internal/app/procstats/PssTable; -Lcom/android/internal/app/procstats/ServiceState; -Lcom/android/internal/app/procstats/SparseMappingTable; -Lcom/android/internal/app/procstats/SparseMappingTable$Table; -Lcom/android/internal/app/procstats/SysMemUsageTable; -Lcom/android/internal/app/ResolverActivity; -Lcom/android/internal/appwidget/IAppWidgetHost; -Lcom/android/internal/appwidget/IAppWidgetHost$Stub; -Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy; -Lcom/android/internal/appwidget/IAppWidgetService; -Lcom/android/internal/appwidget/IAppWidgetService$Stub; -Lcom/android/internal/backup/IBackupTransport; -Lcom/android/internal/backup/IBackupTransport$Stub; -Lcom/android/internal/backup/IBackupTransport$Stub$Proxy; -Lcom/android/internal/backup/LocalTransport; -Lcom/android/internal/backup/LocalTransportService; -Lcom/android/internal/content/NativeLibraryHelper; -Lcom/android/internal/content/PackageHelper; -Lcom/android/internal/content/PackageMonitor; -Lcom/android/internal/content/ReferrerIntent; -Lcom/android/internal/content/ReferrerIntent$1; -Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable; -Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState; -Lcom/android/internal/hardware/AmbientDisplayConfiguration; -Lcom/android/internal/inputmethod/IInputContentUriToken; -Lcom/android/internal/inputmethod/InputMethodSubtypeHandle; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList$1; -Lcom/android/internal/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList; -Lcom/android/internal/inputmethod/InputMethodUtils; -Lcom/android/internal/inputmethod/InputMethodUtils$1; -Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodListBuilder; -Lcom/android/internal/inputmethod/InputMethodUtils$InputMethodSettings; -Lcom/android/internal/inputmethod/LocaleUtils; -Lcom/android/internal/inputmethod/LocaleUtils$LocaleExtractor; -Lcom/android/internal/inputmethod/LocaleUtils$ScoreEntry; -Lcom/android/internal/location/GpsNetInitiatedHandler; -Lcom/android/internal/location/GpsNetInitiatedHandler$1; -Lcom/android/internal/location/GpsNetInitiatedHandler$2; -Lcom/android/internal/location/ILocationProvider; -Lcom/android/internal/location/ILocationProvider$Stub; -Lcom/android/internal/location/ILocationProvider$Stub$Proxy; -Lcom/android/internal/location/ProviderProperties; -Lcom/android/internal/location/ProviderProperties$1; -Lcom/android/internal/location/ProviderRequest; -Lcom/android/internal/location/ProviderRequest$1; -Lcom/android/internal/logging/AndroidConfig; -Lcom/android/internal/logging/AndroidHandler; -Lcom/android/internal/logging/AndroidHandler$1; -Lcom/android/internal/logging/EventLogTags; -Lcom/android/internal/logging/MetricsLogger; -Lcom/android/internal/net/LegacyVpnInfo; -Lcom/android/internal/net/NetworkStatsFactory; -Lcom/android/internal/net/VpnConfig; -Lcom/android/internal/net/VpnInfo; -Lcom/android/internal/net/VpnProfile; -Lcom/android/internal/os/AndroidPrintStream; -Lcom/android/internal/os/AppFuseMount; -Lcom/android/internal/os/AtomicFile; -Lcom/android/internal/os/BackgroundThread; -Lcom/android/internal/os/BatterySipper; -Lcom/android/internal/os/BatterySipper$DrainType; -Lcom/android/internal/os/BatteryStatsHelper; -Lcom/android/internal/os/BatteryStatsHelper$1; -Lcom/android/internal/os/BatteryStatsImpl; -Lcom/android/internal/os/BatteryStatsImpl$1; -Lcom/android/internal/os/BatteryStatsImpl$5; -Lcom/android/internal/os/BatteryStatsImpl$BatchTimer; -Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback; -Lcom/android/internal/os/BatteryStatsImpl$Clocks; -Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl; -Lcom/android/internal/os/BatteryStatsImpl$Counter; -Lcom/android/internal/os/BatteryStatsImpl$DurationTimer; -Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync; -Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter; -Lcom/android/internal/os/BatteryStatsImpl$MyHandler; -Lcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap; -Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback; -Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer; -Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer; -Lcom/android/internal/os/BatteryStatsImpl$SystemClocks; -Lcom/android/internal/os/BatteryStatsImpl$TimeBase; -Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs; -Lcom/android/internal/os/BatteryStatsImpl$Timer; -Lcom/android/internal/os/BatteryStatsImpl$Uid; -Lcom/android/internal/os/BatteryStatsImpl$Uid$1; -Lcom/android/internal/os/BatteryStatsImpl$Uid$2; -Lcom/android/internal/os/BatteryStatsImpl$Uid$3; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock; -Lcom/android/internal/os/BinderInternal; -Lcom/android/internal/os/BinderInternal$GcWatcher; -Lcom/android/internal/os/BluetoothPowerCalculator; -Lcom/android/internal/os/CameraPowerCalculator; -Lcom/android/internal/os/CpuPowerCalculator; -Lcom/android/internal/os/FlashlightPowerCalculator; -Lcom/android/internal/os/FuseAppLoop; -Lcom/android/internal/os/FuseAppLoop$1; -Lcom/android/internal/os/FuseAppLoop$UnmountedException; -Lcom/android/internal/os/HandlerCaller; -Lcom/android/internal/os/HandlerCaller$Callback; -Lcom/android/internal/os/HandlerCaller$MyHandler; -Lcom/android/internal/os/IDropBoxManagerService; -Lcom/android/internal/os/IDropBoxManagerService$Stub; -Lcom/android/internal/os/IResultReceiver; -Lcom/android/internal/os/IResultReceiver$Stub; -Lcom/android/internal/os/IResultReceiver$Stub$Proxy; -Lcom/android/internal/os/IShellCallback; -Lcom/android/internal/os/IShellCallback$Stub; -Lcom/android/internal/os/IShellCallback$Stub$Proxy; -Lcom/android/internal/os/KernelCpuSpeedReader; -Lcom/android/internal/os/KernelMemoryBandwidthStats; -Lcom/android/internal/os/KernelUidCpuTimeReader; -Lcom/android/internal/os/KernelWakelockReader; -Lcom/android/internal/os/KernelWakelockStats; -Lcom/android/internal/os/KernelWakelockStats$Entry; -Lcom/android/internal/os/LoggingPrintStream; -Lcom/android/internal/os/LoggingPrintStream$1; -Lcom/android/internal/os/MemoryPowerCalculator; -Lcom/android/internal/os/MobileRadioPowerCalculator; -Lcom/android/internal/os/PathClassLoaderFactory; -Lcom/android/internal/os/PowerCalculator; -Lcom/android/internal/os/PowerProfile; -Lcom/android/internal/os/PowerProfile$CpuClusterKey; -Lcom/android/internal/os/ProcessCpuTracker; -Lcom/android/internal/os/ProcessCpuTracker$1; -Lcom/android/internal/os/ProcessCpuTracker$FilterStats; -Lcom/android/internal/os/ProcessCpuTracker$Stats; -Lcom/android/internal/os/RoSystemProperties; -Lcom/android/internal/os/RuntimeInit; -Lcom/android/internal/os/RuntimeInit$1; -Lcom/android/internal/os/RuntimeInit$Arguments; -Lcom/android/internal/os/RuntimeInit$KillApplicationHandler; -Lcom/android/internal/os/RuntimeInit$LoggingHandler; -Lcom/android/internal/os/SamplingProfilerIntegration; -Lcom/android/internal/os/SensorPowerCalculator; -Lcom/android/internal/os/SomeArgs; -Lcom/android/internal/os/TransferPipe; -Lcom/android/internal/os/WakelockPowerCalculator; -Lcom/android/internal/os/WifiPowerCalculator; -Lcom/android/internal/os/Zygote; -Lcom/android/internal/os/ZygoteConnection; -Lcom/android/internal/os/ZygoteConnection$Arguments; -Lcom/android/internal/os/ZygoteInit; -Lcom/android/internal/os/Zygote$MethodAndArgsCaller; -Lcom/android/internal/os/ZygoteSecurityException; -Lcom/android/internal/os/ZygoteServer; -Lcom/android/internal/policy/DecorContext; -Lcom/android/internal/policy/DecorView; -Lcom/android/internal/policy/DecorView$ColorViewState; -Lcom/android/internal/policy/DividerSnapAlgorithm; -Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; -Lcom/android/internal/policy/DockedDividerUtils; -Lcom/android/internal/policy/IKeyguardDismissCallback; -Lcom/android/internal/policy/IKeyguardDrawnCallback; -Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub; -Lcom/android/internal/policy/IKeyguardExitCallback; -Lcom/android/internal/policy/IKeyguardService; -Lcom/android/internal/policy/IKeyguardService$Stub; -Lcom/android/internal/policy/IKeyguardService$Stub$Proxy; -Lcom/android/internal/policy/IKeyguardStateCallback; -Lcom/android/internal/policy/IKeyguardStateCallback$Stub; -Lcom/android/internal/policy/IShortcutService; -Lcom/android/internal/policy/IShortcutService$Stub; -Lcom/android/internal/policy/IShortcutService$Stub$Proxy; -Lcom/android/internal/policy/PhoneFallbackEventHandler; -Lcom/android/internal/policy/PhoneLayoutInflater; -Lcom/android/internal/policy/PhoneWindow; -Lcom/android/internal/policy/PhoneWindow$1; -Lcom/android/internal/policy/PhoneWindow$PanelFeatureState; -Lcom/android/internal/policy/PhoneWindow$PhoneWindowMenuCallback; -Lcom/android/internal/policy/PhoneWindow$RotationWatcher; -Lcom/android/internal/policy/PhoneWindow$RotationWatcher$1; -Lcom/android/internal/policy/PipMotionHelper; -Lcom/android/internal/policy/PipSnapAlgorithm; -Lcom/android/internal/R$styleable; -Lcom/android/internal/statusbar/IStatusBar; -Lcom/android/internal/statusbar/IStatusBarService; -Lcom/android/internal/statusbar/IStatusBarService$Stub; -Lcom/android/internal/statusbar/IStatusBar$Stub; -Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy; -Lcom/android/internal/statusbar/NotificationVisibility; -Lcom/android/internal/statusbar/NotificationVisibility$1; -Lcom/android/internal/statusbar/StatusBarIcon; -Lcom/android/internal/telecom/IConnectionService; -Lcom/android/internal/telecom/IConnectionServiceAdapter; -Lcom/android/internal/telecom/IConnectionServiceAdapter$Stub; -Lcom/android/internal/telecom/IConnectionService$Stub; -Lcom/android/internal/telecom/IConnectionService$Stub$Proxy; -Lcom/android/internal/telecom/IInCallAdapter; -Lcom/android/internal/telecom/IInCallAdapter$Stub; -Lcom/android/internal/telecom/IInCallService; -Lcom/android/internal/telecom/IInCallService$Stub; -Lcom/android/internal/telecom/IInCallService$Stub$Proxy; -Lcom/android/internal/telecom/ITelecomService; -Lcom/android/internal/telecom/ITelecomService$Stub; -Lcom/android/internal/telecom/IVideoProvider; -Lcom/android/internal/telecom/IVideoProvider$Stub; -Lcom/android/internal/telecom/RemoteServiceCallback; -Lcom/android/internal/telecom/RemoteServiceCallback$Stub; -Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy; -Lcom/android/internal/telephony/CallerInfo; -Lcom/android/internal/telephony/CallerInfoAsyncQuery; -Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler; -Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler; -Lcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper; -Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener; -Lcom/android/internal/telephony/CarrierAppUtils; -Lcom/android/internal/telephony/DefaultPhoneNotifier; -Lcom/android/internal/telephony/ICarrierConfigLoader; -Lcom/android/internal/telephony/ICarrierConfigLoader$Stub; -Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy; -Lcom/android/internal/telephony/IccCardConstants$State; -Lcom/android/internal/telephony/IMms; -Lcom/android/internal/telephony/IMms$Stub; -Lcom/android/internal/telephony/IOnSubscriptionsChangedListener; -Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub; -Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy; -Lcom/android/internal/telephony/IPhoneStateListener; -Lcom/android/internal/telephony/IPhoneStateListener$Stub; -Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy; -Lcom/android/internal/telephony/IPhoneSubInfo; -Lcom/android/internal/telephony/IPhoneSubInfo$Stub; -Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy; -Lcom/android/internal/telephony/ISub; -Lcom/android/internal/telephony/ISub$Stub; -Lcom/android/internal/telephony/ISub$Stub$Proxy; -Lcom/android/internal/telephony/ITelephony; -Lcom/android/internal/telephony/ITelephonyRegistry; -Lcom/android/internal/telephony/ITelephonyRegistry$Stub; -Lcom/android/internal/telephony/ITelephony$Stub; -Lcom/android/internal/telephony/ITelephony$Stub$Proxy; -Lcom/android/internal/telephony/PhoneConstants$DataState; -Lcom/android/internal/telephony/PhoneConstants$State; -Lcom/android/internal/telephony/PhoneNotifier; -Lcom/android/internal/telephony/SmsApplication; -Lcom/android/internal/textservice/ISpellCheckerService; -Lcom/android/internal/textservice/ISpellCheckerService$Stub; -Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy; -Lcom/android/internal/textservice/ISpellCheckerSession; -Lcom/android/internal/textservice/ISpellCheckerSessionListener; -Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub; -Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy; -Lcom/android/internal/textservice/ISpellCheckerSession$Stub; -Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy; -Lcom/android/internal/textservice/ITextServicesManager; -Lcom/android/internal/textservice/ITextServicesManager$Stub; -Lcom/android/internal/textservice/ITextServicesSessionListener; -Lcom/android/internal/textservice/ITextServicesSessionListener$Stub; -Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy; -Lcom/android/internal/util/ArrayUtils; -Lcom/android/internal/util/AsyncChannel; -Lcom/android/internal/util/AsyncChannel$AsyncChannelConnection; -Lcom/android/internal/util/AsyncChannel$DeathMonitor; -Lcom/android/internal/util/AsyncChannel$SyncMessenger; -Lcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler; -Lcom/android/internal/util/ConcurrentUtils; -Lcom/android/internal/util/ConcurrentUtils$1; -Lcom/android/internal/util/ConcurrentUtils$1$1; -Lcom/android/internal/util/DumpUtils$Dump; -Lcom/android/internal/util/FastPrintWriter; -Lcom/android/internal/util/FastPrintWriter$DummyWriter; -Lcom/android/internal/util/FastXmlSerializer; -Lcom/android/internal/util/FileRotator; -Lcom/android/internal/util/FileRotator$FileInfo; -Lcom/android/internal/util/FileRotator$Reader; -Lcom/android/internal/util/FileRotator$Rewriter; -Lcom/android/internal/util/FileRotator$Writer; -Lcom/android/internal/util/GrowingArrayUtils; -Lcom/android/internal/util/HexDump; -Lcom/android/internal/util/IndentingPrintWriter; -Lcom/android/internal/util/IState; -Lcom/android/internal/util/JournaledFile; -Lcom/android/internal/util/LineBreakBufferedWriter; -Lcom/android/internal/util/LocalLog; -Lcom/android/internal/util/MemInfoReader; -Lcom/android/internal/util/MessageUtils; -Lcom/android/internal/util/Preconditions; -Lcom/android/internal/util/ProcFileReader; -Lcom/android/internal/util/ProgressReporter; -Lcom/android/internal/util/RingBufferIndices; -Lcom/android/internal/util/ScreenShapeHelper; -Lcom/android/internal/util/State; -Lcom/android/internal/util/StateMachine; -Lcom/android/internal/util/StateMachine$LogRec; -Lcom/android/internal/util/StateMachine$LogRecords; -Lcom/android/internal/util/StateMachine$SmHandler; -Lcom/android/internal/util/StateMachine$SmHandler$HaltingState; -Lcom/android/internal/util/StateMachine$SmHandler$QuittingState; -Lcom/android/internal/util/StateMachine$SmHandler$StateInfo; -Lcom/android/internal/util/ToBooleanFunction; -Lcom/android/internal/util/TokenBucket; -Lcom/android/internal/util/VirtualRefBasePtr; -Lcom/android/internal/util/WakeupMessage; -Lcom/android/internal/util/XmlUtils; -Lcom/android/internal/util/XmlUtils$ReadMapCallback; -Lcom/android/internal/util/XmlUtils$WriteMapCallback; -Lcom/android/internal/view/animation/NativeInterpolatorFactory; -Lcom/android/internal/view/animation/NativeInterpolatorFactoryHelper; -Lcom/android/internal/view/BaseIWindow; -Lcom/android/internal/view/IInputConnectionWrapper; -Lcom/android/internal/view/IInputConnectionWrapper$MyHandler; -Lcom/android/internal/view/IInputContext; -Lcom/android/internal/view/IInputContext$Stub; -Lcom/android/internal/view/IInputContext$Stub$Proxy; -Lcom/android/internal/view/IInputMethod; -Lcom/android/internal/view/IInputMethodClient; -Lcom/android/internal/view/IInputMethodClient$Stub; -Lcom/android/internal/view/IInputMethodClient$Stub$Proxy; -Lcom/android/internal/view/IInputMethodManager; -Lcom/android/internal/view/IInputMethodManager$Stub; -Lcom/android/internal/view/IInputMethodSession; -Lcom/android/internal/view/IInputMethodSession$Stub; -Lcom/android/internal/view/IInputMethodSession$Stub$Proxy; -Lcom/android/internal/view/IInputMethod$Stub; -Lcom/android/internal/view/IInputMethod$Stub$Proxy; -Lcom/android/internal/view/IInputSessionCallback; -Lcom/android/internal/view/IInputSessionCallback$Stub; -Lcom/android/internal/view/InputBindResult; -Lcom/android/internal/view/InputBindResult$1; -Lcom/android/internal/view/menu/ActionMenuItem; -Lcom/android/internal/view/menu/MenuBuilder$Callback; -Lcom/android/internal/view/menu/MenuPresenter$Callback; -Lcom/android/internal/view/RootViewSurfaceTaker; -Lcom/android/internal/view/WindowManagerPolicyThread; -Lcom/android/internal/widget/AbsActionBarView; -Lcom/android/internal/widget/AbsActionBarView$VisibilityAnimListener; -Lcom/android/internal/widget/ActionBarContainer; -Lcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable; -Lcom/android/internal/widget/ActionBarContextView; -Lcom/android/internal/widget/ActionBarOverlayLayout; -Lcom/android/internal/widget/ActionBarOverlayLayout$1; -Lcom/android/internal/widget/ActionBarOverlayLayout$2; -Lcom/android/internal/widget/ActionBarOverlayLayout$3; -Lcom/android/internal/widget/ActionBarOverlayLayout$4; -Lcom/android/internal/widget/ActionBarOverlayLayout$5; -Lcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams; -Lcom/android/internal/widget/BackgroundFallback; -Lcom/android/internal/widget/DecorContentParent; -Lcom/android/internal/widget/DecorToolbar; -Lcom/android/internal/widget/ICheckCredentialProgressCallback; -Lcom/android/internal/widget/ILockSettings; -Lcom/android/internal/widget/ILockSettings$Stub; -Lcom/android/internal/widget/LockPatternUtils; -Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker; -Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$1; -Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H; -Lcom/android/internal/widget/ToolbarWidgetWrapper; -Lcom/android/internal/widget/ToolbarWidgetWrapper$1; -Lcom/android/internal/widget/VerifyCredentialResponse; -Lcom/android/location/fused/FusedLocationProvider; -Lcom/android/location/fused/FusedLocationProvider$1; -Lcom/android/location/fused/FusedLocationProvider$2; -Lcom/android/location/fused/FusedLocationService; -Lcom/android/location/fused/FusionEngine; -Lcom/android/location/fused/FusionEngine$Callback; -Lcom/android/location/fused/FusionEngine$ProviderStats; -Lcom/android/location/provider/LocationProviderBase; -Lcom/android/location/provider/LocationProviderBase$Service; -Lcom/android/location/provider/ProviderPropertiesUnbundled; -Lcom/android/okhttp/Address; -Lcom/android/okhttp/Authenticator; -Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/CertificatePinner$Builder; -Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/ConfigAwareConnectionPool; -Lcom/android/okhttp/Connection; -Lcom/android/okhttp/ConnectionPool; -Lcom/android/okhttp/ConnectionPool$1; -Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec$Builder; -Lcom/android/okhttp/Dispatcher; -Lcom/android/okhttp/Dns; -Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/HttpHandler; -Lcom/android/okhttp/HttpHandler$CleartextURLFilter; -Lcom/android/okhttp/HttpsHandler; -Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/internal/ConnectionSpecSelector; -Lcom/android/okhttp/internal/http/AuthenticatorAdapter; -Lcom/android/okhttp/internal/http/CacheStrategy; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory; -Lcom/android/okhttp/internal/http/Http1xStream; -Lcom/android/okhttp/internal/http/Http1xStream$AbstractSource; -Lcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource; -Lcom/android/okhttp/internal/http/HttpEngine; -Lcom/android/okhttp/internal/http/HttpEngine$1; -Lcom/android/okhttp/internal/http/HttpMethod; -Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/OkHeaders; -Lcom/android/okhttp/internal/http/OkHeaders$1; -Lcom/android/okhttp/internal/http/RealResponseBody; -Lcom/android/okhttp/internal/http/RequestException; -Lcom/android/okhttp/internal/http/RequestLine; -Lcom/android/okhttp/internal/http/RetryableSink; -Lcom/android/okhttp/internal/http/RouteException; -Lcom/android/okhttp/internal/http/RouteSelector; -Lcom/android/okhttp/internal/http/StatusLine; -Lcom/android/okhttp/internal/http/StreamAllocation; -Lcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection; -Lcom/android/okhttp/internal/huc/HttpsURLConnectionImpl; -Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl; -Lcom/android/okhttp/internal/Internal; -Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/internal/OptionalMethod; -Lcom/android/okhttp/internal/Platform; -Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/internal/tls/OkHostnameVerifier; -Lcom/android/okhttp/internal/URLFilter; -Lcom/android/okhttp/internal/Util; -Lcom/android/okhttp/internal/Util$1; -Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient$1; -Lcom/android/okhttp/okio/AsyncTimeout; -Lcom/android/okhttp/okio/AsyncTimeout$1; -Lcom/android/okhttp/okio/AsyncTimeout$2; -Lcom/android/okhttp/okio/AsyncTimeout$Watchdog; -Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSource; -Lcom/android/okhttp/okio/ForwardingTimeout; -Lcom/android/okhttp/okio/Okio; -Lcom/android/okhttp/okio/Okio$1; -Lcom/android/okhttp/okio/Okio$2; -Lcom/android/okhttp/okio/Okio$3; -Lcom/android/okhttp/okio/RealBufferedSink; -Lcom/android/okhttp/okio/RealBufferedSource; -Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/SegmentPool; -Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/okio/Source; -Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout$1; -Lcom/android/okhttp/okio/Util; -Lcom/android/okhttp/OkUrlFactory; -Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Request; -Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody$2; -Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Response; -Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Route; -Lcom/android/okhttp/TlsVersion; -Lcom/android/org/bouncycastle/asn1/ASN1Encodable; -Lcom/android/org/bouncycastle/asn1/ASN1Object; -Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier; -Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle; -Lcom/android/org/bouncycastle/asn1/ASN1Primitive; -Lcom/android/org/bouncycastle/asn1/bc/BCObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/iana/IANAObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/misc/MiscObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/nist/NISTObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/OIDTokenizer; -Lcom/android/org/bouncycastle/asn1/oiw/OIWObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/x509/X509ObjectIdentifiers; -Lcom/android/org/bouncycastle/asn1/x9/X9ObjectIdentifiers; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi; -Lcom/android/org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider; -Lcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfiguration; -Lcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission; -Lcom/android/org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider; -Lcom/android/org/bouncycastle/jcajce/provider/digest/MD5; -Lcom/android/org/bouncycastle/jcajce/provider/digest/MD5$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA1; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA1$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA224; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA224$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA256; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA256$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA384; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA384$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA512; -Lcom/android/org/bouncycastle/jcajce/provider/digest/SHA512$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi; -Lcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std; -Lcom/android/org/bouncycastle/jcajce/provider/keystore/BC$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DES; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/DES$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish; -Lcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings; -Lcom/android/org/bouncycastle/jcajce/provider/util/AlgorithmProvider; -Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider; -Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter; -Lcom/android/org/bouncycastle/jcajce/util/BCJcaJceHelper; -Lcom/android/org/bouncycastle/jcajce/util/JcaJceHelper; -Lcom/android/org/bouncycastle/jcajce/util/ProviderJcaJceHelper; -Lcom/android/org/bouncycastle/jce/interfaces/BCKeyStore; -Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider; -Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider$1; -Lcom/android/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration; -Lcom/android/org/bouncycastle/util/Arrays; -Lcom/android/org/bouncycastle/util/Encodable; -Lcom/android/org/bouncycastle/util/Strings; -Lcom/android/org/bouncycastle/util/Strings$1; -Lcom/android/org/conscrypt/AbstractOpenSSLSession; -Lcom/android/org/conscrypt/AbstractSessionContext; -Lcom/android/org/conscrypt/AbstractSessionContext$1; -Lcom/android/org/conscrypt/AddressUtils; -Lcom/android/org/conscrypt/ByteArray; -Lcom/android/org/conscrypt/CertBlacklist; -Lcom/android/org/conscrypt/CertificatePriorityComparator; -Lcom/android/org/conscrypt/ChainStrengthAnalyzer; -Lcom/android/org/conscrypt/ClientSessionContext; -Lcom/android/org/conscrypt/ClientSessionContext$HostAndPort; -Lcom/android/org/conscrypt/CryptoUpcalls; -Lcom/android/org/conscrypt/ct/CTLogInfo; -Lcom/android/org/conscrypt/ct/CTLogStore; -Lcom/android/org/conscrypt/ct/CTLogStoreImpl; -Lcom/android/org/conscrypt/ct/CTLogStoreImpl$InvalidLogFileException; -Lcom/android/org/conscrypt/ct/CTPolicy; -Lcom/android/org/conscrypt/ct/CTPolicyImpl; -Lcom/android/org/conscrypt/ct/CTVerifier; -Lcom/android/org/conscrypt/ct/KnownLogs; -Lcom/android/org/conscrypt/ct/SerializationException; -Lcom/android/org/conscrypt/EvpMdRef$MD5; -Lcom/android/org/conscrypt/EvpMdRef$SHA1; -Lcom/android/org/conscrypt/EvpMdRef$SHA256; -Lcom/android/org/conscrypt/Hex; -Lcom/android/org/conscrypt/JSSEProvider; -Lcom/android/org/conscrypt/KeyManagerFactoryImpl; -Lcom/android/org/conscrypt/KeyManagerImpl; -Lcom/android/org/conscrypt/NativeCrypto; -Lcom/android/org/conscrypt/NativeCryptoJni; -Lcom/android/org/conscrypt/NativeCrypto$SSLHandshakeCallbacks; -Lcom/android/org/conscrypt/NativeRef; -Lcom/android/org/conscrypt/NativeRef$EC_GROUP; -Lcom/android/org/conscrypt/NativeRef$EVP_MD_CTX; -Lcom/android/org/conscrypt/NativeRef$EVP_PKEY; -Lcom/android/org/conscrypt/OpenSSLBIOInputStream; -Lcom/android/org/conscrypt/OpenSSLContextImpl; -Lcom/android/org/conscrypt/OpenSSLContextImpl$TLSv12; -Lcom/android/org/conscrypt/OpenSSLECGroupContext; -Lcom/android/org/conscrypt/OpenSSLECPublicKey; -Lcom/android/org/conscrypt/OpenSSLExtendedSessionImpl; -Lcom/android/org/conscrypt/OpenSSLKey; -Lcom/android/org/conscrypt/OpenSSLKeyHolder; -Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK; -Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$MD5; -Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA1; -Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA256; -Lcom/android/org/conscrypt/OpenSSLProvider; -Lcom/android/org/conscrypt/OpenSSLRandom; -Lcom/android/org/conscrypt/OpenSSLRSAKeyFactory; -Lcom/android/org/conscrypt/OpenSSLRSAPublicKey; -Lcom/android/org/conscrypt/OpenSSLSessionImpl; -Lcom/android/org/conscrypt/OpenSSLSignature; -Lcom/android/org/conscrypt/OpenSSLSignature$EngineType; -Lcom/android/org/conscrypt/OpenSSLSignature$RSAPKCS1Padding; -Lcom/android/org/conscrypt/OpenSSLSignature$SHA256RSA; -Lcom/android/org/conscrypt/OpenSSLSocketFactoryImpl; -Lcom/android/org/conscrypt/OpenSSLSocketImpl; -Lcom/android/org/conscrypt/OpenSSLSocketImpl$SSLInputStream; -Lcom/android/org/conscrypt/OpenSSLSocketImpl$SSLOutputStream; -Lcom/android/org/conscrypt/OpenSSLSocketImplWrapper; -Lcom/android/org/conscrypt/OpenSSLX509Certificate; -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory; -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$1; -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$2; -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$Parser; -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException; -Lcom/android/org/conscrypt/OpenSSLX509CertPath; -Lcom/android/org/conscrypt/OpenSSLX509CertPath$Encoding; -Lcom/android/org/conscrypt/Platform; -Lcom/android/org/conscrypt/Platform$NoPreloadHolder; -Lcom/android/org/conscrypt/ServerSessionContext; -Lcom/android/org/conscrypt/SSLParametersImpl; -Lcom/android/org/conscrypt/SSLParametersImpl$AliasChooser; -Lcom/android/org/conscrypt/SSLParametersImpl$PSKCallbacks; -Lcom/android/org/conscrypt/TrustedCertificateIndex; -Lcom/android/org/conscrypt/TrustedCertificateKeyStoreSpi; -Lcom/android/org/conscrypt/TrustedCertificateStore; -Lcom/android/org/conscrypt/TrustedCertificateStore$1; -Lcom/android/org/conscrypt/TrustedCertificateStore$2; -Lcom/android/org/conscrypt/TrustedCertificateStore$4; -Lcom/android/org/conscrypt/TrustedCertificateStore$5; -Lcom/android/org/conscrypt/TrustedCertificateStore$CertSelector; -Lcom/android/org/conscrypt/TrustManagerFactoryImpl; -Lcom/android/org/conscrypt/TrustManagerImpl; -Lcom/android/org/conscrypt/TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker; -Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator; -Lcom/android/org/conscrypt/util/ArrayUtils; -Lcom/android/providers/settings/GenerationRegistry; -Lcom/android/providers/settings/SettingsProvider; -Lcom/android/providers/settings/SettingsProvider$1; -Lcom/android/providers/settings/SettingsProvider$2; -Lcom/android/providers/settings/SettingsProvider$SettingsRegistry; -Lcom/android/providers/settings/SettingsProvider$SettingsRegistry$MyHandler; -Lcom/android/providers/settings/SettingsProvider$SettingsRegistry$UpgradeController; -Lcom/android/providers/settings/SettingsService; -Lcom/android/providers/settings/SettingsService$MyShellCommand; -Lcom/android/providers/settings/SettingsService$MyShellCommand$CommandVerb; -Lcom/android/providers/settings/SettingsState; -Lcom/android/providers/settings/SettingsState$1; -Lcom/android/providers/settings/SettingsState$HistoricalOperation; -Lcom/android/providers/settings/SettingsState$MyHandler; -Lcom/android/providers/settings/SettingsState$Setting; -Lcom/android/server/accessibility/AccessibilityManagerService; -Lcom/android/server/accessibility/AccessibilityManagerService$1; -Lcom/android/server/accessibility/AccessibilityManagerService$2; -Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver; -Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler; -Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy; -Lcom/android/server/accessibility/AccessibilityManagerService$Service; -Lcom/android/server/accessibility/AccessibilityManagerService$UserState; -Lcom/android/server/accessibility/AccessibilityManagerService$UserState$1; -Lcom/android/server/accessibility/DisplayAdjustmentUtils; -Lcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient; -Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter; -Lcom/android/server/accounts/AccountAuthenticatorCache; -Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer; -Lcom/android/server/accounts/AccountManagerService; -Lcom/android/server/accounts/AccountManagerService$1; -Lcom/android/server/accounts/AccountManagerService$2; -Lcom/android/server/accounts/AccountManagerService$3; -Lcom/android/server/accounts/AccountManagerService$4; -Lcom/android/server/accounts/AccountManagerService$8; -Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl; -Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession; -Lcom/android/server/accounts/AccountManagerService$Injector; -Lcom/android/server/accounts/AccountManagerService$Lifecycle; -Lcom/android/server/accounts/AccountManagerService$MessageHandler; -Lcom/android/server/accounts/AccountManagerService$Session; -Lcom/android/server/accounts/AccountManagerService$TestFeaturesSession; -Lcom/android/server/accounts/AccountManagerService$UserAccounts; -Lcom/android/server/accounts/AccountsDb; -Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper; -Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper; -Lcom/android/server/accounts/IAccountAuthenticatorCache; -Lcom/android/server/accounts/TokenCache; -Lcom/android/server/accounts/TokenCache$Key; -Lcom/android/server/accounts/TokenCache$TokenLruCache; -Lcom/android/server/accounts/TokenCache$TokenLruCache$Evictor; -Lcom/android/server/accounts/TokenCache$Value; -Lcom/android/server/AlarmManagerService; -Lcom/android/server/AlarmManagerService$1; -Lcom/android/server/AlarmManagerService$2; -Lcom/android/server/AlarmManagerService$Alarm; -Lcom/android/server/AlarmManagerService$AlarmHandler; -Lcom/android/server/AlarmManagerService$AlarmThread; -Lcom/android/server/AlarmManagerService$Batch; -Lcom/android/server/AlarmManagerService$BatchTimeOrder; -Lcom/android/server/AlarmManagerService$BroadcastStats; -Lcom/android/server/AlarmManagerService$ClockReceiver; -Lcom/android/server/AlarmManagerService$Constants; -Lcom/android/server/AlarmManagerService$DeliveryTracker; -Lcom/android/server/AlarmManagerService$FilterStats; -Lcom/android/server/AlarmManagerService$IncreasingTimeOrder; -Lcom/android/server/AlarmManagerService$InFlight; -Lcom/android/server/AlarmManagerService$InteractiveStateReceiver; -Lcom/android/server/AlarmManagerService$LocalService; -Lcom/android/server/AlarmManagerService$PriorityClass; -Lcom/android/server/AlarmManagerService$UidObserver; -Lcom/android/server/AlarmManagerService$UninstallReceiver; -Lcom/android/server/am/ActiveServices; -Lcom/android/server/am/ActiveServices$1; -Lcom/android/server/am/ActiveServices$ServiceLookupResult; -Lcom/android/server/am/ActiveServices$ServiceMap; -Lcom/android/server/am/ActiveServices$ServiceRestarter; -Lcom/android/server/am/ActivityManagerConstants; -Lcom/android/server/am/ActivityManagerDebugConfig; -Lcom/android/server/am/ActivityManagerService; -Lcom/android/server/am/ActivityManagerService$1; -Lcom/android/server/am/ActivityManagerService$10; -Lcom/android/server/am/ActivityManagerService$11; -Lcom/android/server/am/ActivityManagerService$12; -Lcom/android/server/am/ActivityManagerService$13; -Lcom/android/server/am/ActivityManagerService$2; -Lcom/android/server/am/ActivityManagerService$20; -Lcom/android/server/am/ActivityManagerService$21; -Lcom/android/server/am/ActivityManagerService$22; -Lcom/android/server/am/ActivityManagerService$24; -Lcom/android/server/am/ActivityManagerService$3; -Lcom/android/server/am/ActivityManagerService$30; -Lcom/android/server/am/ActivityManagerService$4; -Lcom/android/server/am/ActivityManagerService$5; -Lcom/android/server/am/ActivityManagerService$6; -Lcom/android/server/am/ActivityManagerService$AppDeathRecipient; -Lcom/android/server/am/ActivityManagerService$AppTaskImpl; -Lcom/android/server/am/ActivityManagerService$CpuBinder; -Lcom/android/server/am/ActivityManagerService$DbBinder; -Lcom/android/server/am/ActivityManagerService$FontScaleSettingObserver; -Lcom/android/server/am/ActivityManagerService$ForegroundToken; -Lcom/android/server/am/ActivityManagerService$GrantUri; -Lcom/android/server/am/ActivityManagerService$GraphicsBinder; -Lcom/android/server/am/ActivityManagerService$Identity; -Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface; -Lcom/android/server/am/ActivityManagerService$KillHandler; -Lcom/android/server/am/ActivityManagerService$Lifecycle; -Lcom/android/server/am/ActivityManagerService$LocalService; -Lcom/android/server/am/ActivityManagerService$MainHandler; -Lcom/android/server/am/ActivityManagerService$MemBinder; -Lcom/android/server/am/ActivityManagerService$PendingAssistExtras; -Lcom/android/server/am/ActivityManagerService$PermissionController; -Lcom/android/server/am/ActivityManagerService$PriorityState; -Lcom/android/server/am/ActivityManagerService$ProcessChangeItem; -Lcom/android/server/am/ActivityManagerService$ProcessInfoService; -Lcom/android/server/am/ActivityManagerService$SleepTokenImpl; -Lcom/android/server/am/ActivityManagerService$UidObserverRegistration; -Lcom/android/server/am/ActivityManagerService$UiHandler; -Lcom/android/server/am/ActivityManagerService$UpdateConfigurationResult; -Lcom/android/server/am/ActivityMetricsLogger; -Lcom/android/server/am/ActivityRecord; -Lcom/android/server/am/ActivityRecord$Token; -Lcom/android/server/am/ActivityResult; -Lcom/android/server/am/ActivityStack; -Lcom/android/server/am/ActivityStack$ActivityStackHandler; -Lcom/android/server/am/ActivityStack$ActivityState; -Lcom/android/server/am/ActivityStackSupervisor; -Lcom/android/server/am/ActivityStackSupervisor$ActivityContainer; -Lcom/android/server/am/ActivityStackSupervisor$ActivityDisplay; -Lcom/android/server/am/ActivityStackSupervisor$ActivityStackSupervisorHandler; -Lcom/android/server/am/ActivityStackSupervisor$FindTaskResult; -Lcom/android/server/am/ActivityStarter; -Lcom/android/server/am/ActivityStartInterceptor; -Lcom/android/server/am/AppBindRecord; -Lcom/android/server/am/AppErrors; -Lcom/android/server/am/BatteryStatsService; -Lcom/android/server/am/BatteryStatsService$1; -Lcom/android/server/am/BatteryStatsService$BatteryStatsHandler; -Lcom/android/server/am/BatteryStatsService$WakeupReasonThread; -Lcom/android/server/am/BroadcastFilter; -Lcom/android/server/am/BroadcastQueue; -Lcom/android/server/am/BroadcastQueue$AppNotResponding; -Lcom/android/server/am/BroadcastQueue$BroadcastHandler; -Lcom/android/server/am/BroadcastRecord; -Lcom/android/server/am/BroadcastStats; -Lcom/android/server/am/BroadcastStats$1; -Lcom/android/server/am/BroadcastStats$ActionEntry; -Lcom/android/server/am/BroadcastStats$PackageEntry; -Lcom/android/server/am/CompatModePackages; -Lcom/android/server/am/CompatModePackages$CompatHandler; -Lcom/android/server/am/ConfigurationContainer; -Lcom/android/server/am/ConnectionRecord; -Lcom/android/server/am/ContentProviderConnection; -Lcom/android/server/am/ContentProviderRecord; -Lcom/android/server/am/CoreSettingsObserver; -Lcom/android/server/am/DumpHeapProvider; -Lcom/android/server/am/EventLogTags; -Lcom/android/server/am/InstrumentationReporter; -Lcom/android/server/am/IntentBindRecord; -Lcom/android/server/am/KeyguardController; -Lcom/android/server/am/NativeCrashListener; -Lcom/android/server/am/PendingIntentRecord; -Lcom/android/server/am/PendingIntentRecord$Key; -Lcom/android/server/am/ProcessList; -Lcom/android/server/am/ProcessRecord; -Lcom/android/server/am/ProcessStatsService; -Lcom/android/server/am/ProcessStatsService$1; -Lcom/android/server/am/ProcessStatsService$2; -Lcom/android/server/am/ProcessStatsService$3; -Lcom/android/server/am/ProviderMap; -Lcom/android/server/am/ReceiverList; -Lcom/android/server/am/RecentTasks; -Lcom/android/server/am/RecentTasks$1; -Lcom/android/server/am/ServiceRecord; -Lcom/android/server/am/ServiceRecord$1; -Lcom/android/server/am/ServiceRecord$2; -Lcom/android/server/am/ServiceRecord$3; -Lcom/android/server/am/ServiceRecord$StartItem; -Lcom/android/server/am/TaskChangeNotificationController; -Lcom/android/server/am/TaskChangeNotificationController$MainHandler; -Lcom/android/server/am/TaskChangeNotificationController$TaskStackConsumer; -Lcom/android/server/am/TaskPersister; -Lcom/android/server/am/TaskPersister$1; -Lcom/android/server/am/TaskPersister$ImageWriteQueueItem; -Lcom/android/server/am/TaskPersister$LazyTaskWriterThread; -Lcom/android/server/am/TaskPersister$TaskWriteQueueItem; -Lcom/android/server/am/TaskPersister$WriteQueueItem; -Lcom/android/server/am/TaskRecord; -Lcom/android/server/am/UidRecord; -Lcom/android/server/am/UidRecord$ChangeItem; -Lcom/android/server/am/UriPermission; -Lcom/android/server/am/UriPermissionOwner; -Lcom/android/server/am/UriPermissionOwner$ExternalToken; -Lcom/android/server/am/UserController; -Lcom/android/server/am/UserController$Injector; -Lcom/android/server/am/UserState; -Lcom/android/server/AnyMotionDetector; -Lcom/android/server/AnyMotionDetector$1; -Lcom/android/server/AnyMotionDetector$2; -Lcom/android/server/AnyMotionDetector$3; -Lcom/android/server/AnyMotionDetector$4; -Lcom/android/server/AnyMotionDetector$DeviceIdleCallback; -Lcom/android/server/AnyMotionDetector$RunningSignalStats; -Lcom/android/server/AnyMotionDetector$Vector3; -Lcom/android/server/AppOpsService; -Lcom/android/server/AppOpsService$1; -Lcom/android/server/AppOpsService$1$1; -Lcom/android/server/AppOpsService$2; -Lcom/android/server/AppOpsService$3; -Lcom/android/server/AppOpsService$Callback; -Lcom/android/server/AppOpsService$ClientRestrictionState; -Lcom/android/server/AppOpsService$ClientState; -Lcom/android/server/AppOpsService$Op; -Lcom/android/server/AppOpsService$Ops; -Lcom/android/server/AppOpsService$Restriction; -Lcom/android/server/AppOpsService$UidState; -Lcom/android/server/appwidget/AppWidgetService; -Lcom/android/server/appwidget/AppWidgetServiceImpl; -Lcom/android/server/appwidget/AppWidgetServiceImpl$1; -Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController; -Lcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler; -Lcom/android/server/appwidget/AppWidgetServiceImpl$Host; -Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId; -Lcom/android/server/appwidget/AppWidgetServiceImpl$LoadedWidgetState; -Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider; -Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId; -Lcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable; -Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy; -Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget; -Lcom/android/server/AppWidgetBackupBridge; -Lcom/android/server/AttributeCache; -Lcom/android/server/AttributeCache$Entry; -Lcom/android/server/AttributeCache$Package; -Lcom/android/server/audio/AudioService; -Lcom/android/server/audio/AudioService$1; -Lcom/android/server/audio/AudioService$2; -Lcom/android/server/audio/AudioService$3; -Lcom/android/server/audio/AudioService$4; -Lcom/android/server/audio/AudioService$AudioHandler; -Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver; -Lcom/android/server/audio/AudioService$AudioServiceInternal; -Lcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener; -Lcom/android/server/audio/AudioService$AudioSystemThread; -Lcom/android/server/audio/AudioService$ForceControlStreamClient; -Lcom/android/server/audio/AudioService$Lifecycle; -Lcom/android/server/audio/AudioService$MyDisplayStatusCallback; -Lcom/android/server/audio/AudioService$SetModeDeathHandler; -Lcom/android/server/audio/AudioService$SettingsObserver; -Lcom/android/server/audio/AudioService$SoundPoolCallback; -Lcom/android/server/audio/AudioService$SoundPoolListenerThread; -Lcom/android/server/audio/AudioService$VolumeController; -Lcom/android/server/audio/AudioService$VolumeStreamState; -Lcom/android/server/audio/FocusRequester; -Lcom/android/server/audio/MediaFocusControl; -Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler; -Lcom/android/server/audio/PlaybackActivityMonitor; -Lcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient; -Lcom/android/server/audio/RecordingActivityMonitor; -Lcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient; -Lcom/android/server/autofill/AutoFillManagerService; -Lcom/android/server/autofill/AutoFillManagerService$1; -Lcom/android/server/autofill/AutoFillManagerService$AutoFillManagerServiceStub; -Lcom/android/server/autofill/AutoFillManagerServiceImpl; -Lcom/android/server/autofill/AutoFillManagerService$SettingsObserver; -Lcom/android/server/BackgroundDexOptJobService; -Lcom/android/server/BackgroundDexOptJobService$1; -Lcom/android/server/backup/AccountSyncSettingsBackupHelper; -Lcom/android/server/backup/BackupManagerService; -Lcom/android/server/backup/BackupManagerService$1; -Lcom/android/server/backup/BackupManagerService$2; -Lcom/android/server/backup/BackupManagerService$3; -Lcom/android/server/backup/BackupManagerService$4; -Lcom/android/server/backup/BackupManagerService$6; -Lcom/android/server/backup/BackupManagerService$BackupHandler; -Lcom/android/server/backup/BackupManagerService$BackupRequest; -Lcom/android/server/backup/BackupManagerService$FullBackupEntry; -Lcom/android/server/backup/BackupManagerService$Lifecycle; -Lcom/android/server/backup/BackupManagerService$ProvisionedObserver; -Lcom/android/server/backup/BackupManagerService$RunBackupReceiver; -Lcom/android/server/backup/BackupManagerService$RunInitializeReceiver; -Lcom/android/server/backup/FullBackupJob; -Lcom/android/server/backup/KeyValueBackupJob; -Lcom/android/server/backup/PackageManagerBackupAgent; -Lcom/android/server/backup/Trampoline; -Lcom/android/server/backup/TransportManager; -Lcom/android/server/backup/TransportManager$TransportBoundListener; -Lcom/android/server/backup/TransportManager$TransportConnection; -Lcom/android/server/BatteryService; -Lcom/android/server/BatteryService$2; -Lcom/android/server/BatteryService$9; -Lcom/android/server/BatteryService$BatteryListener; -Lcom/android/server/BatteryService$BinderService; -Lcom/android/server/BatteryService$Led; -Lcom/android/server/BatteryService$LocalService; -Lcom/android/server/BluetoothManagerService; -Lcom/android/server/BluetoothManagerService$1; -Lcom/android/server/BluetoothManagerService$2; -Lcom/android/server/BluetoothManagerService$3; -Lcom/android/server/BluetoothManagerService$4; -Lcom/android/server/BluetoothManagerService$ActiveLog; -Lcom/android/server/BluetoothManagerService$BluetoothHandler; -Lcom/android/server/BluetoothManagerService$BluetoothServiceConnection; -Lcom/android/server/BluetoothManagerService$ProfileServiceConnections; -Lcom/android/server/BluetoothService; -Lcom/android/server/BootReceiver; -Lcom/android/server/BootReceiver$1; -Lcom/android/server/camera/CameraService; -Lcom/android/server/camera/CameraService$1; -Lcom/android/server/camera/CameraService$2; -Lcom/android/server/CertBlacklister; -Lcom/android/server/CertBlacklister$BlacklistObserver; -Lcom/android/server/clipboard/ClipboardService; -Lcom/android/server/clipboard/ClipboardService$ClipboardImpl; -Lcom/android/server/clipboard/ClipboardService$ListenerInfo; -Lcom/android/server/clipboard/ClipboardService$PerUserClipboard; -Lcom/android/server/CommonTimeManagementService; -Lcom/android/server/CommonTimeManagementService$1; -Lcom/android/server/CommonTimeManagementService$2; -Lcom/android/server/CommonTimeManagementService$3; -Lcom/android/server/CommonTimeManagementService$4; -Lcom/android/server/CommonTimeManagementService$5; -Lcom/android/server/CommonTimeManagementService$InterfaceScoreRule; -Lcom/android/server/connectivity/DataConnectionStats; -Lcom/android/server/connectivity/DataConnectionStats$1; -Lcom/android/server/connectivity/IpConnectivityMetrics; -Lcom/android/server/connectivity/IpConnectivityMetrics$Impl; -Lcom/android/server/connectivity/KeepalivePacketData; -Lcom/android/server/connectivity/KeepalivePacketData$InvalidPacketException; -Lcom/android/server/connectivity/KeepaliveTracker; -Lcom/android/server/connectivity/LingerMonitor; -Lcom/android/server/connectivity/MetricsLoggerService; -Lcom/android/server/connectivity/MetricsLoggerService$MetricsLoggerImpl; -Lcom/android/server/connectivity/MockableSystemProperties; -Lcom/android/server/connectivity/Nat464Xlat; -Lcom/android/server/connectivity/NetdEventListenerService; -Lcom/android/server/connectivity/NetdEventListenerService$1; -Lcom/android/server/connectivity/NetdEventListenerService$DnsEventBatch; -Lcom/android/server/connectivity/NetworkAgentInfo; -Lcom/android/server/connectivity/NetworkAgentInfo$LingerTimer; -Lcom/android/server/connectivity/NetworkMonitor; -Lcom/android/server/connectivity/NetworkMonitor$1ProbeThread; -Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalProbeResult; -Lcom/android/server/connectivity/NetworkMonitor$CaptivePortalState; -Lcom/android/server/connectivity/NetworkMonitor$DefaultState; -Lcom/android/server/connectivity/NetworkMonitor$EvaluatingState; -Lcom/android/server/connectivity/NetworkMonitor$EvaluationResult; -Lcom/android/server/connectivity/NetworkMonitor$MaybeNotifyState; -Lcom/android/server/connectivity/NetworkMonitor$ValidatedState; -Lcom/android/server/connectivity/NetworkMonitor$ValidationStage; -Lcom/android/server/connectivity/NetworkNotificationManager; -Lcom/android/server/connectivity/PacManager; -Lcom/android/server/connectivity/PacManager$1; -Lcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver; -Lcom/android/server/connectivity/PermissionMonitor; -Lcom/android/server/connectivity/PermissionMonitor$1; -Lcom/android/server/ConnectivityService; -Lcom/android/server/ConnectivityService$1; -Lcom/android/server/ConnectivityService$2; -Lcom/android/server/ConnectivityService$3; -Lcom/android/server/ConnectivityService$InternalHandler; -Lcom/android/server/ConnectivityService$LegacyTypeTracker; -Lcom/android/server/ConnectivityService$NetworkFactoryInfo; -Lcom/android/server/ConnectivityService$NetworkRequestInfo; -Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler; -Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks; -Lcom/android/server/ConnectivityService$SettingsObserver; -Lcom/android/server/ConnectivityService$UnneededFor; -Lcom/android/server/ConnectivityService$ValidationLog; -Lcom/android/server/connectivity/Tethering; -Lcom/android/server/connectivity/tethering/IControlsTethering; -Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator; -Lcom/android/server/connectivity/tethering/IPv6TetheringInterfaceServices; -Lcom/android/server/connectivity/Tethering$StateReceiver; -Lcom/android/server/connectivity/tethering/TetheringConfiguration; -Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine; -Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$InitialState; -Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$TetheredState; -Lcom/android/server/connectivity/tethering/TetherInterfaceStateMachine$UnavailableState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$ErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetDnsForwardersErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingDisabledErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingEnabledErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$SimChangeListener; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$StartTetheringErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$StopTetheringErrorState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$TetherMasterUtilState; -Lcom/android/server/connectivity/Tethering$TetherMasterSM$TetherModeAliveState; -Lcom/android/server/connectivity/Tethering$TetherState; -Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor; -Lcom/android/server/connectivity/Vpn; -Lcom/android/server/connectivity/Vpn$1; -Lcom/android/server/connectivity/Vpn$2; -Lcom/android/server/ConsumerIrService; -Lcom/android/server/content/ContentService; -Lcom/android/server/content/ContentService$1; -Lcom/android/server/content/ContentService$3; -Lcom/android/server/content/ContentService$Lifecycle; -Lcom/android/server/content/ContentService$ObserverCall; -Lcom/android/server/content/ContentService$ObserverNode; -Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry; -Lcom/android/server/content/SyncJobService; -Lcom/android/server/content/SyncManager; -Lcom/android/server/content/SyncManager$1; -Lcom/android/server/content/SyncManager$10; -Lcom/android/server/content/SyncManager$11; -Lcom/android/server/content/SyncManager$13; -Lcom/android/server/content/SyncManager$2; -Lcom/android/server/content/SyncManager$3; -Lcom/android/server/content/SyncManager$4; -Lcom/android/server/content/SyncManager$5; -Lcom/android/server/content/SyncManager$6; -Lcom/android/server/content/SyncManager$7; -Lcom/android/server/content/SyncManager$8; -Lcom/android/server/content/SyncManager$9; -Lcom/android/server/content/SyncManager$ActiveSyncContext; -Lcom/android/server/content/SyncManager$ScheduleSyncMessagePayload; -Lcom/android/server/content/SyncManager$ServiceConnectionData; -Lcom/android/server/content/SyncManager$SyncFinishedOrCancelledMessagePayload; -Lcom/android/server/content/SyncManager$SyncHandler; -Lcom/android/server/content/SyncManager$SyncTimeTracker; -Lcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload; -Lcom/android/server/content/SyncOperation; -Lcom/android/server/content/SyncStorageEngine; -Lcom/android/server/content/SyncStorageEngine$AccountInfo; -Lcom/android/server/content/SyncStorageEngine$AuthorityInfo; -Lcom/android/server/content/SyncStorageEngine$DayStats; -Lcom/android/server/content/SyncStorageEngine$EndPoint; -Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener; -Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener; -Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener; -Lcom/android/server/content/SyncStorageEngine$SyncHistoryItem; -Lcom/android/server/ContextHubSystemService; -Lcom/android/server/CountryDetectorService; -Lcom/android/server/CountryDetectorService$1; -Lcom/android/server/CountryDetectorService$1$1; -Lcom/android/server/CountryDetectorService$2; -Lcom/android/server/CountryDetectorService$Receiver; -Lcom/android/server/coverage/CoverageService; -Lcom/android/server/DeviceIdleController; -Lcom/android/server/DeviceIdleController$1; -Lcom/android/server/DeviceIdleController$2; -Lcom/android/server/DeviceIdleController$3; -Lcom/android/server/DeviceIdleController$4; -Lcom/android/server/DeviceIdleController$5; -Lcom/android/server/DeviceIdleController$6; -Lcom/android/server/DeviceIdleController$7; -Lcom/android/server/DeviceIdleController$8; -Lcom/android/server/DeviceIdleController$BinderService; -Lcom/android/server/DeviceIdleController$Constants; -Lcom/android/server/DeviceIdleController$LocalService; -Lcom/android/server/DeviceIdleController$MotionListener; -Lcom/android/server/DeviceIdleController$MyHandler; -Lcom/android/server/devicepolicy/DevicePolicyManagerService; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$1; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$2; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$3; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$4; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$4$1; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$9; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$MonitoringCertNotificationTask; -Lcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver; -Lcom/android/server/devicepolicy/Owners; -Lcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter; -Lcom/android/server/devicepolicy/Owners$FileReadWriter; -Lcom/android/server/devicepolicy/Owners$OwnerInfo; -Lcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter; -Lcom/android/server/devicepolicy/SecurityLogMonitor; -Lcom/android/server/DiskStatsService; -Lcom/android/server/display/AutomaticBrightnessController; -Lcom/android/server/display/AutomaticBrightnessController$1; -Lcom/android/server/display/AutomaticBrightnessController$2; -Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer; -Lcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler; -Lcom/android/server/display/AutomaticBrightnessController$Callbacks; -Lcom/android/server/display/ColorFade; -Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; -Lcom/android/server/display/DisplayAdapter; -Lcom/android/server/display/DisplayAdapter$1; -Lcom/android/server/display/DisplayAdapter$2; -Lcom/android/server/display/DisplayAdapter$Listener; -Lcom/android/server/display/DisplayBlanker; -Lcom/android/server/display/DisplayDevice; -Lcom/android/server/display/DisplayDeviceInfo; -Lcom/android/server/display/DisplayManagerService; -Lcom/android/server/display/DisplayManagerService$BinderService; -Lcom/android/server/display/DisplayManagerService$CallbackRecord; -Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener; -Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler; -Lcom/android/server/display/DisplayManagerService$LocalService; -Lcom/android/server/display/DisplayManagerService$LocalService$1; -Lcom/android/server/display/DisplayManagerService$SyncRoot; -Lcom/android/server/display/DisplayPowerController; -Lcom/android/server/display/DisplayPowerController$1; -Lcom/android/server/display/DisplayPowerController$2; -Lcom/android/server/display/DisplayPowerController$3; -Lcom/android/server/display/DisplayPowerController$4; -Lcom/android/server/display/DisplayPowerController$5; -Lcom/android/server/display/DisplayPowerController$6; -Lcom/android/server/display/DisplayPowerController$7; -Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler; -Lcom/android/server/display/DisplayPowerController$ScreenOnUnblocker; -Lcom/android/server/display/DisplayPowerState; -Lcom/android/server/display/DisplayPowerState$1; -Lcom/android/server/display/DisplayPowerState$2; -Lcom/android/server/display/DisplayPowerState$3; -Lcom/android/server/display/DisplayPowerState$4; -Lcom/android/server/display/DisplayPowerState$PhotonicModulator; -Lcom/android/server/display/DisplayTransformManager; -Lcom/android/server/display/HysteresisLevels; -Lcom/android/server/display/LocalDisplayAdapter; -Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord; -Lcom/android/server/display/LocalDisplayAdapter$HotplugDisplayEventReceiver; -Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice; -Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1; -Lcom/android/server/display/LogicalDisplay; -Lcom/android/server/display/NightDisplayService; -Lcom/android/server/display/NightDisplayService$1; -Lcom/android/server/display/NightDisplayService$3; -Lcom/android/server/display/NightDisplayService$4; -Lcom/android/server/display/NightDisplayService$ColorMatrixEvaluator; -Lcom/android/server/display/OverlayDisplayAdapter; -Lcom/android/server/display/OverlayDisplayAdapter$1; -Lcom/android/server/display/OverlayDisplayAdapter$1$1; -Lcom/android/server/display/PersistentDataStore; -Lcom/android/server/display/PersistentDataStore$DisplayState; -Lcom/android/server/display/RampAnimator; -Lcom/android/server/display/RampAnimator$1; -Lcom/android/server/display/RampAnimator$Listener; -Lcom/android/server/DisplayThread; -Lcom/android/server/display/VirtualDisplayAdapter; -Lcom/android/server/DockObserver; -Lcom/android/server/DockObserver$1; -Lcom/android/server/DockObserver$2; -Lcom/android/server/DockObserver$BinderService; -Lcom/android/server/dreams/DreamController; -Lcom/android/server/dreams/DreamController$1; -Lcom/android/server/dreams/DreamController$2; -Lcom/android/server/dreams/DreamController$3; -Lcom/android/server/dreams/DreamController$DreamRecord; -Lcom/android/server/dreams/DreamController$DreamRecord$1; -Lcom/android/server/dreams/DreamController$DreamRecord$3; -Lcom/android/server/dreams/DreamController$Listener; -Lcom/android/server/dreams/DreamManagerService; -Lcom/android/server/dreams/DreamManagerService$1; -Lcom/android/server/dreams/DreamManagerService$2; -Lcom/android/server/dreams/DreamManagerService$3; -Lcom/android/server/dreams/DreamManagerService$4; -Lcom/android/server/dreams/DreamManagerService$6; -Lcom/android/server/dreams/DreamManagerService$BinderService; -Lcom/android/server/dreams/DreamManagerService$DreamHandler; -Lcom/android/server/dreams/DreamManagerService$LocalService; -Lcom/android/server/DropBoxManagerService; -Lcom/android/server/DropBoxManagerService$1; -Lcom/android/server/DropBoxManagerService$1$1; -Lcom/android/server/DropBoxManagerService$2; -Lcom/android/server/DropBoxManagerService$3; -Lcom/android/server/DropBoxManagerService$4; -Lcom/android/server/DropBoxManagerService$EntryFile; -Lcom/android/server/DropBoxManagerService$FileList; -Lcom/android/server/emergency/EmergencyAffordanceService; -Lcom/android/server/emergency/EmergencyAffordanceService$1; -Lcom/android/server/emergency/EmergencyAffordanceService$2; -Lcom/android/server/emergency/EmergencyAffordanceService$3; -Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler; -Lcom/android/server/EntropyMixer; -Lcom/android/server/EntropyMixer$1; -Lcom/android/server/EntropyMixer$2; -Lcom/android/server/ethernet/EthernetConfigStore; -Lcom/android/server/ethernet/EthernetNetworkFactory; -Lcom/android/server/ethernet/EthernetNetworkFactory$InterfaceObserver; -Lcom/android/server/ethernet/EthernetNetworkFactory$LocalNetworkFactory; -Lcom/android/server/ethernet/EthernetService; -Lcom/android/server/ethernet/EthernetServiceImpl; -Lcom/android/server/EventLogTags; -Lcom/android/server/FgThread; -Lcom/android/server/fingerprint/FingerprintService; -Lcom/android/server/fingerprint/FingerprintService$1; -Lcom/android/server/fingerprint/FingerprintService$10; -Lcom/android/server/fingerprint/FingerprintService$2; -Lcom/android/server/fingerprint/FingerprintService$3; -Lcom/android/server/fingerprint/FingerprintService$4; -Lcom/android/server/fingerprint/FingerprintService$5; -Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor; -Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceLockoutResetMonitor$1; -Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper; -Lcom/android/server/fingerprint/FingerprintService$FingerprintServiceWrapper$9; -Lcom/android/server/fingerprint/FingerprintService$PerformanceStats; -Lcom/android/server/fingerprint/FingerprintsUserState; -Lcom/android/server/fingerprint/FingerprintsUserState$1; -Lcom/android/server/fingerprint/FingerprintUtils; -Lcom/android/server/firewall/AndFilter; -Lcom/android/server/firewall/AndFilter$1; -Lcom/android/server/firewall/CategoryFilter; -Lcom/android/server/firewall/CategoryFilter$1; -Lcom/android/server/firewall/Filter; -Lcom/android/server/firewall/FilterFactory; -Lcom/android/server/firewall/FilterList; -Lcom/android/server/firewall/IntentFirewall; -Lcom/android/server/firewall/IntentFirewall$AMSInterface; -Lcom/android/server/firewall/IntentFirewall$FirewallHandler; -Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver; -Lcom/android/server/firewall/IntentFirewall$Rule; -Lcom/android/server/firewall/IntentFirewall$RuleObserver; -Lcom/android/server/firewall/NotFilter; -Lcom/android/server/firewall/NotFilter$1; -Lcom/android/server/firewall/OrFilter; -Lcom/android/server/firewall/OrFilter$1; -Lcom/android/server/firewall/PortFilter; -Lcom/android/server/firewall/PortFilter$1; -Lcom/android/server/firewall/SenderFilter; -Lcom/android/server/firewall/SenderFilter$1; -Lcom/android/server/firewall/SenderFilter$2; -Lcom/android/server/firewall/SenderFilter$3; -Lcom/android/server/firewall/SenderFilter$4; -Lcom/android/server/firewall/SenderFilter$5; -Lcom/android/server/firewall/SenderPackageFilter; -Lcom/android/server/firewall/SenderPackageFilter$1; -Lcom/android/server/firewall/SenderPermissionFilter; -Lcom/android/server/firewall/SenderPermissionFilter$1; -Lcom/android/server/firewall/StringFilter; -Lcom/android/server/firewall/StringFilter$1; -Lcom/android/server/firewall/StringFilter$10; -Lcom/android/server/firewall/StringFilter$2; -Lcom/android/server/firewall/StringFilter$3; -Lcom/android/server/firewall/StringFilter$4; -Lcom/android/server/firewall/StringFilter$5; -Lcom/android/server/firewall/StringFilter$6; -Lcom/android/server/firewall/StringFilter$7; -Lcom/android/server/firewall/StringFilter$8; -Lcom/android/server/firewall/StringFilter$9; -Lcom/android/server/firewall/StringFilter$ValueProvider; -Lcom/android/server/GestureLauncherService; -Lcom/android/server/GestureLauncherService$1; -Lcom/android/server/GestureLauncherService$2; -Lcom/android/server/GestureLauncherService$GestureEventListener; -Lcom/android/server/GraphicsStatsService; -Lcom/android/server/GraphicsStatsService$ActiveBuffer; -Lcom/android/server/GraphicsStatsService$HistoricalData; -Lcom/android/server/HardwarePropertiesManagerService; -Lcom/android/server/hdmi/HdmiCecController; -Lcom/android/server/INativeDaemonConnectorCallbacks; -Lcom/android/server/input/InputApplicationHandle; -Lcom/android/server/input/InputManagerService; -Lcom/android/server/input/InputManagerService$1; -Lcom/android/server/input/InputManagerService$10; -Lcom/android/server/input/InputManagerService$11; -Lcom/android/server/input/InputManagerService$12; -Lcom/android/server/input/InputManagerService$2; -Lcom/android/server/input/InputManagerService$3; -Lcom/android/server/input/InputManagerService$5; -Lcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord; -Lcom/android/server/input/InputManagerService$InputManagerHandler; -Lcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor; -Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor; -Lcom/android/server/input/InputManagerService$LocalService; -Lcom/android/server/input/InputManagerService$WindowManagerCallbacks; -Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks; -Lcom/android/server/input/InputWindowHandle; -Lcom/android/server/InputMethodManagerService; -Lcom/android/server/InputMethodManagerService$1; -Lcom/android/server/InputMethodManagerService$2; -Lcom/android/server/InputMethodManagerService$ClientState; -Lcom/android/server/InputMethodManagerService$HardKeyboardListener; -Lcom/android/server/InputMethodManagerService$ImmsBroadcastReceiver; -Lcom/android/server/InputMethodManagerService$InputMethodFileManager; -Lcom/android/server/InputMethodManagerService$Lifecycle; -Lcom/android/server/InputMethodManagerService$LocalServiceImpl; -Lcom/android/server/InputMethodManagerService$MethodCallback; -Lcom/android/server/InputMethodManagerService$MyPackageMonitor; -Lcom/android/server/InputMethodManagerService$SessionState; -Lcom/android/server/InputMethodManagerService$SettingsObserver; -Lcom/android/server/input/PersistentDataStore; -Lcom/android/server/input/PersistentDataStore$InputDeviceState; -Lcom/android/server/IntentResolver; -Lcom/android/server/IntentResolver$1; -Lcom/android/server/IntentResolver$IteratorWrapper; -Lcom/android/server/IoThread; -Lcom/android/server/job/controllers/AppIdleController; -Lcom/android/server/job/controllers/AppIdleController$AppIdleStateChangeListener; -Lcom/android/server/job/controllers/AppIdleController$GlobalUpdateFunc; -Lcom/android/server/job/controllers/AppIdleController$PackageUpdateFunc; -Lcom/android/server/job/controllers/BatteryController; -Lcom/android/server/job/controllers/BatteryController$ChargingTracker; -Lcom/android/server/job/controllers/ConnectivityController; -Lcom/android/server/job/controllers/ConnectivityController$1; -Lcom/android/server/job/controllers/ConnectivityController$2; -Lcom/android/server/job/controllers/ContentObserverController; -Lcom/android/server/job/controllers/ContentObserverController$JobInstance; -Lcom/android/server/job/controllers/ContentObserverController$ObserverInstance; -Lcom/android/server/job/controllers/ContentObserverController$TriggerRunnable; -Lcom/android/server/job/controllers/DeviceIdleJobsController; -Lcom/android/server/job/controllers/DeviceIdleJobsController$1; -Lcom/android/server/job/controllers/DeviceIdleJobsController$2; -Lcom/android/server/job/controllers/IdleController; -Lcom/android/server/job/controllers/IdleController$IdlenessTracker; -Lcom/android/server/job/controllers/JobStatus; -Lcom/android/server/job/controllers/StateController; -Lcom/android/server/job/controllers/TimeController; -Lcom/android/server/job/controllers/TimeController$1; -Lcom/android/server/job/controllers/TimeController$2; -Lcom/android/server/job/JobCompletedListener; -Lcom/android/server/job/JobPackageTracker; -Lcom/android/server/job/JobPackageTracker$DataSet; -Lcom/android/server/job/JobPackageTracker$PackageEntry; -Lcom/android/server/job/JobSchedulerInternal; -Lcom/android/server/job/JobSchedulerService; -Lcom/android/server/job/JobSchedulerService$1; -Lcom/android/server/job/JobSchedulerService$2; -Lcom/android/server/job/JobSchedulerService$3; -Lcom/android/server/job/JobSchedulerService$Constants; -Lcom/android/server/job/JobSchedulerService$JobHandler; -Lcom/android/server/job/JobSchedulerService$JobHandler$MaybeReadyJobQueueFunctor; -Lcom/android/server/job/JobSchedulerService$JobHandler$ReadyJobQueueFunctor; -Lcom/android/server/job/JobSchedulerService$JobSchedulerStub; -Lcom/android/server/job/JobSchedulerService$LocalService; -Lcom/android/server/job/JobSchedulerService$LocalService$1; -Lcom/android/server/job/JobServiceContext; -Lcom/android/server/job/JobServiceContext$JobServiceHandler; -Lcom/android/server/job/JobStore; -Lcom/android/server/job/JobStore$JobSet; -Lcom/android/server/job/JobStore$JobStatusFunctor; -Lcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable; -Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable; -Lcom/android/server/job/JobStore$WriteJobsMapToDiskRunnable$1; -Lcom/android/server/job/StateChangedListener; -Lcom/android/server/lights/Light; -Lcom/android/server/lights/LightsManager; -Lcom/android/server/lights/LightsService; -Lcom/android/server/lights/LightsService$1; -Lcom/android/server/lights/LightsService$2; -Lcom/android/server/lights/LightsService$LightImpl; -Lcom/android/server/LocalServices; -Lcom/android/server/location/ActivityRecognitionProxy; -Lcom/android/server/location/ActivityRecognitionProxy$1; -Lcom/android/server/location/ComprehensiveCountryDetector; -Lcom/android/server/location/ComprehensiveCountryDetector$1; -Lcom/android/server/location/ComprehensiveCountryDetector$2; -Lcom/android/server/location/ComprehensiveCountryDetector$3; -Lcom/android/server/location/ComprehensiveCountryDetector$4; -Lcom/android/server/location/ContextHubService; -Lcom/android/server/location/CountryDetectorBase; -Lcom/android/server/location/FlpHardwareProvider; -Lcom/android/server/location/GeocoderProxy; -Lcom/android/server/location/GeofenceManager; -Lcom/android/server/location/GeofenceManager$GeofenceHandler; -Lcom/android/server/location/GeofenceProxy; -Lcom/android/server/location/GeofenceProxy$1; -Lcom/android/server/location/GeofenceProxy$2; -Lcom/android/server/location/GeofenceProxy$3; -Lcom/android/server/location/GnssLocationProvider; -Lcom/android/server/location/GnssLocationProvider$1; -Lcom/android/server/location/GnssLocationProvider$10; -Lcom/android/server/location/GnssLocationProvider$11; -Lcom/android/server/location/GnssLocationProvider$12; -Lcom/android/server/location/GnssLocationProvider$14; -Lcom/android/server/location/GnssLocationProvider$2; -Lcom/android/server/location/GnssLocationProvider$3; -Lcom/android/server/location/GnssLocationProvider$4; -Lcom/android/server/location/GnssLocationProvider$5; -Lcom/android/server/location/GnssLocationProvider$6; -Lcom/android/server/location/GnssLocationProvider$7; -Lcom/android/server/location/GnssLocationProvider$8; -Lcom/android/server/location/GnssLocationProvider$9; -Lcom/android/server/location/GnssLocationProvider$BackOff; -Lcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider; -Lcom/android/server/location/GnssLocationProvider$GpsRequest; -Lcom/android/server/location/GnssLocationProvider$NetworkLocationListener; -Lcom/android/server/location/GnssLocationProvider$ProviderHandler; -Lcom/android/server/location/GnssLocationProvider$SetCarrierProperty; -Lcom/android/server/location/GnssMeasurementsProvider; -Lcom/android/server/location/GnssNavigationMessageProvider; -Lcom/android/server/location/GnssNavigationMessageProvider$StatusChangedOperation; -Lcom/android/server/location/GnssStatusListenerHelper; -Lcom/android/server/location/GnssStatusListenerHelper$1; -Lcom/android/server/location/GnssStatusListenerHelper$2; -Lcom/android/server/location/GnssStatusListenerHelper$3; -Lcom/android/server/location/GnssStatusListenerHelper$4; -Lcom/android/server/location/GnssStatusListenerHelper$5; -Lcom/android/server/location/GnssStatusListenerHelper$Operation; -Lcom/android/server/location/LocationBasedCountryDetector; -Lcom/android/server/location/LocationBasedCountryDetector$1; -Lcom/android/server/location/LocationBasedCountryDetector$2; -Lcom/android/server/location/LocationBasedCountryDetector$3; -Lcom/android/server/location/LocationBlacklist; -Lcom/android/server/location/LocationFudger; -Lcom/android/server/location/LocationFudger$1; -Lcom/android/server/location/LocationProviderInterface; -Lcom/android/server/location/LocationProviderProxy; -Lcom/android/server/location/LocationProviderProxy$1; -Lcom/android/server/location/LocationRequestStatistics; -Lcom/android/server/location/LocationRequestStatistics$PackageProviderKey; -Lcom/android/server/location/LocationRequestStatistics$PackageStatistics; -Lcom/android/server/LocationManagerService; -Lcom/android/server/LocationManagerService$1; -Lcom/android/server/LocationManagerService$2; -Lcom/android/server/LocationManagerService$3; -Lcom/android/server/LocationManagerService$4; -Lcom/android/server/LocationManagerService$5; -Lcom/android/server/LocationManagerService$6; -Lcom/android/server/LocationManagerService$7; -Lcom/android/server/LocationManagerService$8; -Lcom/android/server/LocationManagerService$9; -Lcom/android/server/LocationManagerService$LocationWorkerHandler; -Lcom/android/server/LocationManagerService$Receiver; -Lcom/android/server/LocationManagerService$UpdateRecord; -Lcom/android/server/location/PassiveProvider; -Lcom/android/server/location/RemoteListenerHelper; -Lcom/android/server/location/RemoteListenerHelper$HandlerRunnable; -Lcom/android/server/location/RemoteListenerHelper$LinkedListener; -Lcom/android/server/location/RemoteListenerHelper$ListenerOperation; -Lcom/android/server/LockSettingsService; -Lcom/android/server/LockSettingsService$1; -Lcom/android/server/LockSettingsService$GateKeeperDiedRecipient; -Lcom/android/server/LockSettingsService$Injector; -Lcom/android/server/LockSettingsService$Injector$1; -Lcom/android/server/LockSettingsService$Lifecycle; -Lcom/android/server/LockSettingsService$SynchronizedStrongAuthTracker; -Lcom/android/server/LockSettingsStorage; -Lcom/android/server/LockSettingsStorage$Cache; -Lcom/android/server/LockSettingsStorage$Cache$CacheKey; -Lcom/android/server/LockSettingsStorage$Callback; -Lcom/android/server/LockSettingsStorage$CredentialHash; -Lcom/android/server/LockSettingsStorage$DatabaseHelper; -Lcom/android/server/LockSettingsStrongAuth; -Lcom/android/server/LockSettingsStrongAuth$1; -Lcom/android/server/media/MediaResourceMonitorService; -Lcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl; -Lcom/android/server/media/MediaRouterService; -Lcom/android/server/media/MediaRouterService$1; -Lcom/android/server/media/MediaRouterService$ClientRecord; -Lcom/android/server/media/MediaRouterService$UserHandler; -Lcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord; -Lcom/android/server/media/MediaRouterService$UserRecord; -Lcom/android/server/media/MediaSessionRecord; -Lcom/android/server/media/MediaSessionRecord$1; -Lcom/android/server/media/MediaSessionRecord$ControllerStub; -Lcom/android/server/media/MediaSessionRecord$MessageHandler; -Lcom/android/server/media/MediaSessionRecord$SessionCb; -Lcom/android/server/media/MediaSessionRecord$SessionStub; -Lcom/android/server/media/MediaSessionService; -Lcom/android/server/media/MediaSessionService$MessageHandler; -Lcom/android/server/media/MediaSessionService$SessionManagerImpl; -Lcom/android/server/media/MediaSessionService$SessionManagerImpl$1; -Lcom/android/server/media/MediaSessionService$SessionManagerImpl$4; -Lcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver; -Lcom/android/server/media/MediaSessionService$SessionsListenerRecord; -Lcom/android/server/media/MediaSessionService$SettingsObserver; -Lcom/android/server/media/MediaSessionService$UserRecord; -Lcom/android/server/media/MediaSessionStack; -Lcom/android/server/media/projection/MediaProjectionManagerService; -Lcom/android/server/media/projection/MediaProjectionManagerService$1; -Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService; -Lcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate; -Lcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback; -Lcom/android/server/media/RemoteDisplayProviderProxy; -Lcom/android/server/media/RemoteDisplayProviderProxy$1; -Lcom/android/server/media/RemoteDisplayProviderProxy$Callback; -Lcom/android/server/media/RemoteDisplayProviderWatcher; -Lcom/android/server/media/RemoteDisplayProviderWatcher$1; -Lcom/android/server/media/RemoteDisplayProviderWatcher$2; -Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback; -Lcom/android/server/midi/MidiService; -Lcom/android/server/midi/MidiService$1; -Lcom/android/server/midi/MidiService$Lifecycle; -Lcom/android/server/MmsServiceBroker; -Lcom/android/server/MmsServiceBroker$1; -Lcom/android/server/MmsServiceBroker$2; -Lcom/android/server/MmsServiceBroker$3; -Lcom/android/server/MmsServiceBroker$BinderService; -Lcom/android/server/MountServiceIdler; -Lcom/android/server/NativeDaemonConnector; -Lcom/android/server/NativeDaemonConnector$Command; -Lcom/android/server/NativeDaemonConnectorException; -Lcom/android/server/NativeDaemonConnector$NativeDaemonFailureException; -Lcom/android/server/NativeDaemonConnector$ResponseQueue; -Lcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd; -Lcom/android/server/NativeDaemonConnector$SensitiveArg; -Lcom/android/server/NativeDaemonEvent; -Lcom/android/server/NativeDaemonTimeoutException; -Lcom/android/server/net/BaseNetworkObserver; -Lcom/android/server/net/DelayedDiskWrite; -Lcom/android/server/net/DelayedDiskWrite$Writer; -Lcom/android/server/net/DnsServerEntry; -Lcom/android/server/net/DnsServerRepository; -Lcom/android/server/net/IpConfigStore; -Lcom/android/server/net/LockdownVpnTracker; -Lcom/android/server/net/NetlinkTracker; -Lcom/android/server/net/NetlinkTracker$Callback; -Lcom/android/server/net/NetworkIdentitySet; -Lcom/android/server/net/NetworkPolicyManagerInternal; -Lcom/android/server/net/NetworkPolicyManagerService; -Lcom/android/server/net/NetworkPolicyManagerService$1; -Lcom/android/server/net/NetworkPolicyManagerService$10; -Lcom/android/server/net/NetworkPolicyManagerService$11; -Lcom/android/server/net/NetworkPolicyManagerService$12; -Lcom/android/server/net/NetworkPolicyManagerService$13; -Lcom/android/server/net/NetworkPolicyManagerService$14; -Lcom/android/server/net/NetworkPolicyManagerService$15; -Lcom/android/server/net/NetworkPolicyManagerService$2; -Lcom/android/server/net/NetworkPolicyManagerService$3; -Lcom/android/server/net/NetworkPolicyManagerService$4; -Lcom/android/server/net/NetworkPolicyManagerService$5; -Lcom/android/server/net/NetworkPolicyManagerService$6; -Lcom/android/server/net/NetworkPolicyManagerService$7; -Lcom/android/server/net/NetworkPolicyManagerService$8; -Lcom/android/server/net/NetworkPolicyManagerService$9; -Lcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener; -Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl; -Lcom/android/server/net/NetworkStatsAccess; -Lcom/android/server/net/NetworkStatsCollection; -Lcom/android/server/net/NetworkStatsCollection$Key; -Lcom/android/server/net/NetworkStatsObservers; -Lcom/android/server/net/NetworkStatsObservers$1; -Lcom/android/server/net/NetworkStatsObservers$StatsContext; -Lcom/android/server/net/NetworkStatsRecorder; -Lcom/android/server/net/NetworkStatsRecorder$CombiningRewriter; -Lcom/android/server/net/NetworkStatsService; -Lcom/android/server/net/NetworkStatsService$1; -Lcom/android/server/net/NetworkStatsService$2; -Lcom/android/server/net/NetworkStatsService$3; -Lcom/android/server/net/NetworkStatsService$4; -Lcom/android/server/net/NetworkStatsService$5; -Lcom/android/server/net/NetworkStatsService$6; -Lcom/android/server/net/NetworkStatsService$7; -Lcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings; -Lcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver; -Lcom/android/server/net/NetworkStatsService$HandlerCallback; -Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings; -Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config; -Lcom/android/server/NetworkManagementService; -Lcom/android/server/NetworkManagementService$1; -Lcom/android/server/NetworkManagementService$IdleTimerParams; -Lcom/android/server/NetworkManagementService$NetdCallbackReceiver; -Lcom/android/server/NetworkManagementService$NetworkManagementEventCallback; -Lcom/android/server/NetworkManagementSocketTagger; -Lcom/android/server/NetworkManagementSocketTagger$1; -Lcom/android/server/NetworkManagementSocketTagger$SocketTags; -Lcom/android/server/NetworkScoreService; -Lcom/android/server/NetworkScoreService$1; -Lcom/android/server/NetworkScoreService$2; -Lcom/android/server/NetworkScoreService$DispatchingContentObserver; -Lcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor; -Lcom/android/server/NetworkScoreService$RequestRecommendationCaller; -Lcom/android/server/NetworkScoreService$RequestRecommendationCaller$1; -Lcom/android/server/NetworkScoreService$ServiceHandler; -Lcom/android/server/NetworkTimeUpdateService; -Lcom/android/server/NetworkTimeUpdateService$1; -Lcom/android/server/NetworkTimeUpdateService$2; -Lcom/android/server/NetworkTimeUpdateService$3; -Lcom/android/server/NetworkTimeUpdateService$MyHandler; -Lcom/android/server/NetworkTimeUpdateService$SettingsObserver; -Lcom/android/server/notification/BadgeExtractor; -Lcom/android/server/notification/CalendarTracker; -Lcom/android/server/notification/CalendarTracker$1; -Lcom/android/server/notification/CalendarTracker$Callback; -Lcom/android/server/notification/CalendarTracker$CheckEventResult; -Lcom/android/server/notification/ConditionProviders; -Lcom/android/server/notification/ConditionProviders$Callback; -Lcom/android/server/notification/ConditionProviders$ConditionRecord; -Lcom/android/server/notification/CountdownConditionProvider; -Lcom/android/server/notification/CountdownConditionProvider$Receiver; -Lcom/android/server/notification/EventConditionProvider; -Lcom/android/server/notification/EventConditionProvider$1; -Lcom/android/server/notification/EventConditionProvider$2; -Lcom/android/server/notification/EventConditionProvider$3; -Lcom/android/server/notification/EventConditionProvider$4; -Lcom/android/server/notification/GlobalSortKeyComparator; -Lcom/android/server/notification/GroupHelper; -Lcom/android/server/notification/GroupHelper$Callback; -Lcom/android/server/notification/ImportanceExtractor; -Lcom/android/server/notification/ManagedServices; -Lcom/android/server/notification/ManagedServices$1; -Lcom/android/server/notification/ManagedServices$Config; -Lcom/android/server/notification/ManagedServices$ManagedServiceInfo; -Lcom/android/server/notification/ManagedServices$SettingRestoredReceiver; -Lcom/android/server/notification/ManagedServices$SettingsObserver; -Lcom/android/server/notification/ManagedServices$UserProfiles; -Lcom/android/server/notification/NotificationComparator; -Lcom/android/server/notification/NotificationComparator$1; -Lcom/android/server/notification/NotificationComparator$2; -Lcom/android/server/notification/NotificationDelegate; -Lcom/android/server/notification/NotificationIntrusivenessExtractor; -Lcom/android/server/notification/NotificationIntrusivenessExtractor$1; -Lcom/android/server/notification/NotificationManagerInternal; -Lcom/android/server/notification/NotificationManagerService; -Lcom/android/server/notification/NotificationManagerService$1; -Lcom/android/server/notification/NotificationManagerService$10; -Lcom/android/server/notification/NotificationManagerService$11; -Lcom/android/server/notification/NotificationManagerService$12; -Lcom/android/server/notification/NotificationManagerService$13; -Lcom/android/server/notification/NotificationManagerService$16; -Lcom/android/server/notification/NotificationManagerService$2; -Lcom/android/server/notification/NotificationManagerService$3; -Lcom/android/server/notification/NotificationManagerService$4; -Lcom/android/server/notification/NotificationManagerService$5; -Lcom/android/server/notification/NotificationManagerService$6; -Lcom/android/server/notification/NotificationManagerService$6$1; -Lcom/android/server/notification/NotificationManagerService$7; -Lcom/android/server/notification/NotificationManagerService$7$1; -Lcom/android/server/notification/NotificationManagerService$8; -Lcom/android/server/notification/NotificationManagerService$9; -Lcom/android/server/notification/NotificationManagerService$Archive; -Lcom/android/server/notification/NotificationManagerService$DumpFilter; -Lcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable; -Lcom/android/server/notification/NotificationManagerService$FlagChecker; -Lcom/android/server/notification/NotificationManagerService$NotificationAssistants; -Lcom/android/server/notification/NotificationManagerService$NotificationListeners; -Lcom/android/server/notification/NotificationManagerService$NotificationListeners$2; -Lcom/android/server/notification/NotificationManagerService$NotificationListeners$3; -Lcom/android/server/notification/NotificationManagerService$NotificationListeners$6; -Lcom/android/server/notification/NotificationManagerService$PolicyAccess; -Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable; -Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1; -Lcom/android/server/notification/NotificationManagerService$RankingHandlerWorker; -Lcom/android/server/notification/NotificationManagerService$SettingsObserver; -Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder; -Lcom/android/server/notification/NotificationManagerService$ToastRecord; -Lcom/android/server/notification/NotificationManagerService$TrimCache; -Lcom/android/server/notification/NotificationManagerService$WorkerHandler; -Lcom/android/server/notification/NotificationRecord; -Lcom/android/server/notification/NotificationSignalExtractor; -Lcom/android/server/notification/NotificationUsageStats; -Lcom/android/server/notification/NotificationUsageStats$1; -Lcom/android/server/notification/NotificationUsageStats$AggregatedStats; -Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram; -Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats; -Lcom/android/server/notification/NotificationUsageStats$SQLiteLog; -Lcom/android/server/notification/NotificationUsageStats$SQLiteLog$1; -Lcom/android/server/notification/NotificationUsageStats$SQLiteLog$2; -Lcom/android/server/notification/PriorityExtractor; -Lcom/android/server/notification/PropConfig; -Lcom/android/server/notification/RankingConfig; -Lcom/android/server/notification/RankingHandler; -Lcom/android/server/notification/RankingHelper; -Lcom/android/server/notification/RankingHelper$Record; -Lcom/android/server/notification/RankingReconsideration; -Lcom/android/server/notification/RateEstimator; -Lcom/android/server/notification/ScheduleCalendar; -Lcom/android/server/notification/ScheduleConditionProvider; -Lcom/android/server/notification/ScheduleConditionProvider$1; -Lcom/android/server/notification/SnoozeHelper; -Lcom/android/server/notification/SnoozeHelper$1; -Lcom/android/server/notification/SnoozeHelper$Callback; -Lcom/android/server/notification/SystemConditionProviderService; -Lcom/android/server/notification/ValidateNotificationPeople; -Lcom/android/server/notification/ValidateNotificationPeople$1; -Lcom/android/server/notification/VisibilityExtractor; -Lcom/android/server/notification/ZenLog; -Lcom/android/server/notification/ZenModeConditions; -Lcom/android/server/notification/ZenModeFiltering; -Lcom/android/server/notification/ZenModeFiltering$RepeatCallers; -Lcom/android/server/notification/ZenModeHelper; -Lcom/android/server/notification/ZenModeHelper$Callback; -Lcom/android/server/notification/ZenModeHelper$H; -Lcom/android/server/notification/ZenModeHelper$H$ConfigMessageData; -Lcom/android/server/notification/ZenModeHelper$Metrics; -Lcom/android/server/notification/ZenModeHelper$RingerModeDelegate; -Lcom/android/server/notification/ZenModeHelper$SettingsObserver; -Lcom/android/server/NsdService; -Lcom/android/server/NsdService$NativeCallbackReceiver; -Lcom/android/server/NsdService$NsdStateMachine; -Lcom/android/server/NsdService$NsdStateMachine$1; -Lcom/android/server/NsdService$NsdStateMachine$DefaultState; -Lcom/android/server/NsdService$NsdStateMachine$DisabledState; -Lcom/android/server/NsdService$NsdStateMachine$EnabledState; -Lcom/android/server/os/DeviceIdentifiersPolicyService; -Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy; -Lcom/android/server/os/SchedulingPolicyService; -Lcom/android/server/PersistentDataBlockService; -Lcom/android/server/PersistentDataBlockService$1; -Lcom/android/server/PinnerService; -Lcom/android/server/PinnerService$BinderService; -Lcom/android/server/PinnerService$PinnedFile; -Lcom/android/server/PinnerService$PinnerHandler; -Lcom/android/server/pm/AbstractStatsBase; -Lcom/android/server/pm/AbstractStatsBase$1; -Lcom/android/server/pm/BasePermission; -Lcom/android/server/pm/CompilerStats; -Lcom/android/server/pm/CompilerStats$PackageStats; -Lcom/android/server/pm/CrossProfileIntentResolver; -Lcom/android/server/pm/DefaultPermissionGrantPolicy; -Lcom/android/server/pm/DefaultPermissionGrantPolicy$1; -Lcom/android/server/pm/DefaultPermissionGrantPolicy$DefaultPermissionGrant; -Lcom/android/server/pm/dex/DexManager; -Lcom/android/server/pm/dex/DexManager$DexSearchResult; -Lcom/android/server/pm/dex/DexManager$PackageCodeLocations; -Lcom/android/server/pm/dex/PackageDexUsage; -Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo; -Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo; -Lcom/android/server/pm/EphemeralResolverConnection; -Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller; -Lcom/android/server/pm/EphemeralResolverConnection$GetEphemeralResolveInfoCaller$1; -Lcom/android/server/pm/EphemeralResolverConnection$MyServiceConnection; -Lcom/android/server/pm/Installer; -Lcom/android/server/pm/Installer$1; -Lcom/android/server/pm/Installer$InstallerException; -Lcom/android/server/pm/InstantAppRegistry; -Lcom/android/server/pm/InstantAppRegistry$CookiePersistence; -Lcom/android/server/pm/InstructionSets; -Lcom/android/server/pm/KeySetHandle; -Lcom/android/server/pm/KeySetManagerService; -Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle; -Lcom/android/server/pm/LauncherAppsService; -Lcom/android/server/pm/LauncherAppsService$BroadcastCookie; -Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl; -Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor; -Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList; -Lcom/android/server/pm/OtaDexoptService; -Lcom/android/server/pm/PackageDexOptimizer; -Lcom/android/server/pm/PackageInstallerService; -Lcom/android/server/pm/PackageInstallerService$1; -Lcom/android/server/pm/PackageInstallerService$Callbacks; -Lcom/android/server/pm/PackageInstallerService$InternalCallback; -Lcom/android/server/pm/PackageKeySetData; -Lcom/android/server/pm/PackageManagerException; -Lcom/android/server/pm/PackageManagerService; -Lcom/android/server/pm/PackageManagerService$1; -Lcom/android/server/pm/PackageManagerService$11; -Lcom/android/server/pm/PackageManagerService$2; -Lcom/android/server/pm/PackageManagerService$21; -Lcom/android/server/pm/PackageManagerService$3; -Lcom/android/server/pm/PackageManagerService$8; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$ActionIterGenerator; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$AuthoritiesIterGenerator; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$CategoriesIterGenerator; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$IterGenerator; -Lcom/android/server/pm/PackageManagerService$ActivityIntentResolver$SchemesIterGenerator; -Lcom/android/server/pm/PackageManagerServiceCompilerMapping; -Lcom/android/server/pm/PackageManagerService$DefaultContainerConnection; -Lcom/android/server/pm/PackageManagerService$DumpState; -Lcom/android/server/pm/PackageManagerService$HandlerParams; -Lcom/android/server/pm/PackageManagerService$IntentFilterVerifier; -Lcom/android/server/pm/PackageManagerService$IntentVerifierProxy; -Lcom/android/server/pm/PackageManagerService$MeasureParams; -Lcom/android/server/pm/PackageManagerService$MoveCallbacks; -Lcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners; -Lcom/android/server/pm/PackageManagerService$PackageHandler; -Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl; -Lcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts; -Lcom/android/server/pm/PackageManagerService$ProviderIntentResolver; -Lcom/android/server/pm/PackageManagerService$ServiceIntentResolver; -Lcom/android/server/pm/PackageManagerService$SharedLibraryEntry; -Lcom/android/server/pm/PackageManagerServiceUtils; -Lcom/android/server/pm/PackageSetting; -Lcom/android/server/pm/PackageSettingBase; -Lcom/android/server/pm/PackageSignatures; -Lcom/android/server/pm/PackageUsage; -Lcom/android/server/pm/ParallelPackageParser; -Lcom/android/server/pm/ParallelPackageParser$ParseResult; -Lcom/android/server/pm/PermissionsState; -Lcom/android/server/pm/PermissionsState$PermissionData; -Lcom/android/server/pm/PermissionsState$PermissionState; -Lcom/android/server/pm/PersistentPreferredIntentResolver; -Lcom/android/server/pm/Policy; -Lcom/android/server/pm/PolicyComparator; -Lcom/android/server/pm/Policy$PolicyBuilder; -Lcom/android/server/pm/PreferredActivity; -Lcom/android/server/pm/PreferredComponent; -Lcom/android/server/pm/PreferredComponent$Callbacks; -Lcom/android/server/pm/PreferredIntentResolver; -Lcom/android/server/pm/ProcessLoggingHandler; -Lcom/android/server/pm/ProtectedPackages; -Lcom/android/server/pm/SELinuxMMAC; -Lcom/android/server/pm/SettingBase; -Lcom/android/server/pm/Settings; -Lcom/android/server/pm/Settings$RuntimePermissionPersistence; -Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler; -Lcom/android/server/pm/Settings$VersionInfo; -Lcom/android/server/pm/SharedUserSetting; -Lcom/android/server/pm/ShortcutLauncher; -Lcom/android/server/pm/ShortcutPackage; -Lcom/android/server/pm/ShortcutPackageInfo; -Lcom/android/server/pm/ShortcutPackageItem; -Lcom/android/server/pm/ShortcutParser; -Lcom/android/server/pm/ShortcutRequestPinProcessor; -Lcom/android/server/pm/ShortcutService; -Lcom/android/server/pm/ShortcutService$1; -Lcom/android/server/pm/ShortcutService$2; -Lcom/android/server/pm/ShortcutService$3; -Lcom/android/server/pm/ShortcutService$4; -Lcom/android/server/pm/ShortcutService$5; -Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath; -Lcom/android/server/pm/ShortcutService$InvalidFileFormatException; -Lcom/android/server/pm/ShortcutService$Lifecycle; -Lcom/android/server/pm/ShortcutService$LocalService; -Lcom/android/server/pm/ShortcutUser; -Lcom/android/server/pm/ShortcutUser$PackageWithUser; -Lcom/android/server/pm/UserDataPreparer; -Lcom/android/server/pm/UserManagerService; -Lcom/android/server/pm/UserManagerService$1; -Lcom/android/server/pm/UserManagerService$2; -Lcom/android/server/pm/UserManagerService$3; -Lcom/android/server/pm/UserManagerService$LifeCycle; -Lcom/android/server/pm/UserManagerService$LocalService; -Lcom/android/server/pm/UserManagerService$MainHandler; -Lcom/android/server/pm/UserManagerService$UserData; -Lcom/android/server/pm/UserRestrictionsUtils; -Lcom/android/server/policy/AccessibilityShortcutController; -Lcom/android/server/policy/AccessibilityShortcutController$1; -Lcom/android/server/policy/AccessibilityShortcutController$FrameworkObjectProvider; -Lcom/android/server/policy/BarController; -Lcom/android/server/policy/BarController$1; -Lcom/android/server/policy/GlobalKeyManager; -Lcom/android/server/policy/IconUtilities; -Lcom/android/server/policy/ImmersiveModeConfirmation; -Lcom/android/server/policy/ImmersiveModeConfirmation$1; -Lcom/android/server/policy/ImmersiveModeConfirmation$2; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$1; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$2; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$3; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$4; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$5; -Lcom/android/server/policy/ImmersiveModeConfirmation$ClingWindowView$5$1; -Lcom/android/server/policy/ImmersiveModeConfirmation$H; -Lcom/android/server/policy/keyguard/KeyguardServiceDelegate; -Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$1; -Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener; -Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate; -Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState; -Lcom/android/server/policy/keyguard/KeyguardServiceWrapper; -Lcom/android/server/policy/keyguard/KeyguardStateMonitor; -Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback; -Lcom/android/server/policy/LogDecelerateInterpolator; -Lcom/android/server/policy/PhoneWindowManager; -Lcom/android/server/policy/PhoneWindowManager$1; -Lcom/android/server/policy/PhoneWindowManager$10; -Lcom/android/server/policy/PhoneWindowManager$11; -Lcom/android/server/policy/PhoneWindowManager$12; -Lcom/android/server/policy/PhoneWindowManager$13; -Lcom/android/server/policy/PhoneWindowManager$16; -Lcom/android/server/policy/PhoneWindowManager$17; -Lcom/android/server/policy/PhoneWindowManager$19; -Lcom/android/server/policy/PhoneWindowManager$2; -Lcom/android/server/policy/PhoneWindowManager$3; -Lcom/android/server/policy/PhoneWindowManager$4; -Lcom/android/server/policy/PhoneWindowManager$5; -Lcom/android/server/policy/PhoneWindowManager$6; -Lcom/android/server/policy/PhoneWindowManager$7; -Lcom/android/server/policy/PhoneWindowManager$8; -Lcom/android/server/policy/PhoneWindowManager$9; -Lcom/android/server/policy/PhoneWindowManager$MyOrientationListener; -Lcom/android/server/policy/PhoneWindowManager$MyOrientationListener$1; -Lcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener; -Lcom/android/server/policy/PhoneWindowManager$PolicyHandler; -Lcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout; -Lcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable; -Lcom/android/server/policy/PhoneWindowManager$SettingsObserver; -Lcom/android/server/policy/PolicyControl; -Lcom/android/server/policy/ShortcutManager; -Lcom/android/server/policy/ShortcutManager$ShortcutInfo; -Lcom/android/server/policy/SplashScreenSurface; -Lcom/android/server/policy/StatusBarController; -Lcom/android/server/policy/StatusBarController$1; -Lcom/android/server/policy/StatusBarController$1$1; -Lcom/android/server/policy/StatusBarController$1$2; -Lcom/android/server/policy/StatusBarController$1$3; -Lcom/android/server/policy/StatusBarController$1$4; -Lcom/android/server/policy/SystemGesturesPointerEventListener; -Lcom/android/server/policy/SystemGesturesPointerEventListener$Callbacks; -Lcom/android/server/policy/SystemGesturesPointerEventListener$FlingGestureDetector; -Lcom/android/server/policy/WakeGestureListener; -Lcom/android/server/policy/WakeGestureListener$1; -Lcom/android/server/policy/WakeGestureListener$2; -Lcom/android/server/policy/WindowOrientationListener; -Lcom/android/server/policy/WindowOrientationListener$OrientationJudge; -Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge; -Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge$1; -Lcom/android/server/power/Notifier; -Lcom/android/server/power/Notifier$1; -Lcom/android/server/power/Notifier$2; -Lcom/android/server/power/Notifier$3; -Lcom/android/server/power/Notifier$4; -Lcom/android/server/power/Notifier$5; -Lcom/android/server/power/Notifier$6; -Lcom/android/server/power/Notifier$7; -Lcom/android/server/power/Notifier$8; -Lcom/android/server/power/Notifier$NotifierHandler; -Lcom/android/server/power/PowerManagerService; -Lcom/android/server/power/PowerManagerService$1; -Lcom/android/server/power/PowerManagerService$2; -Lcom/android/server/power/PowerManagerService$BatteryReceiver; -Lcom/android/server/power/PowerManagerService$BinderService; -Lcom/android/server/power/PowerManagerService$Constants; -Lcom/android/server/power/PowerManagerService$DockReceiver; -Lcom/android/server/power/PowerManagerService$DreamReceiver; -Lcom/android/server/power/PowerManagerService$LocalService; -Lcom/android/server/power/PowerManagerService$PowerManagerHandler; -Lcom/android/server/power/PowerManagerService$SettingsObserver; -Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl; -Lcom/android/server/power/PowerManagerService$UidState; -Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver; -Lcom/android/server/power/PowerManagerService$WakeLock; -Lcom/android/server/power/SuspendBlocker; -Lcom/android/server/power/WirelessChargerDetector; -Lcom/android/server/power/WirelessChargerDetector$1; -Lcom/android/server/power/WirelessChargerDetector$2; -Lcom/android/server/print/PrintManagerService; -Lcom/android/server/print/PrintManagerService$PrintManagerImpl; -Lcom/android/server/print/PrintManagerService$PrintManagerImpl$1; -Lcom/android/server/print/PrintManagerService$PrintManagerImpl$2; -Lcom/android/server/print/PrintManagerService$PrintManagerImpl$3; -Lcom/android/server/print/RemotePrintService; -Lcom/android/server/print/RemotePrintService$MyHandler; -Lcom/android/server/print/RemotePrintService$PrintServiceCallbacks; -Lcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks; -Lcom/android/server/print/RemotePrintService$RemotePrintServiceClient; -Lcom/android/server/print/RemotePrintService$RemoteServiceConneciton; -Lcom/android/server/print/RemotePrintSpooler; -Lcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks; -Lcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller; -Lcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller$1; -Lcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller; -Lcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller$1; -Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller; -Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller$1; -Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller; -Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller$1; -Lcom/android/server/print/RemotePrintSpooler$MyServiceConnection; -Lcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller; -Lcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller$1; -Lcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks; -Lcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient; -Lcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller; -Lcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller$1; -Lcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller; -Lcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller$1; -Lcom/android/server/print/UserState; -Lcom/android/server/print/UserState$4; -Lcom/android/server/print/UserState$ListenerRecord; -Lcom/android/server/print/UserState$PrintJobForAppCache; -Lcom/android/server/print/UserState$UserStateHandler; -Lcom/android/server/PruneInstantAppsJobService; -Lcom/android/server/RandomBlock; -Lcom/android/server/RecoverySystemService; -Lcom/android/server/RecoverySystemService$BinderService; -Lcom/android/server/RescueParty; -Lcom/android/server/RescueParty$BootThreshold; -Lcom/android/server/RescueParty$Threshold; -Lcom/android/server/restrictions/RestrictionsManagerService; -Lcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl; -Lcom/android/server/SamplingProfilerService; -Lcom/android/server/SamplingProfilerService$1; -Lcom/android/server/SamplingProfilerService$SamplingProfilerSettingsObserver; -Lcom/android/server/search/Searchables; -Lcom/android/server/search/Searchables$1; -Lcom/android/server/search/SearchManagerService; -Lcom/android/server/search/SearchManagerService$GlobalSearchProviderObserver; -Lcom/android/server/search/SearchManagerService$Lifecycle; -Lcom/android/server/search/SearchManagerService$Lifecycle$1; -Lcom/android/server/search/SearchManagerService$MyPackageMonitor; -Lcom/android/server/security/KeyAttestationApplicationIdProviderService; -Lcom/android/server/SensorNotificationService; -Lcom/android/server/SerialService; -Lcom/android/server/ServiceThread; -Lcom/android/server/ServiceWatcher; -Lcom/android/server/ServiceWatcher$1; -Lcom/android/server/ServiceWatcher$2; -Lcom/android/server/soundtrigger/SoundTriggerDbHelper; -Lcom/android/server/soundtrigger/SoundTriggerHelper; -Lcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener; -Lcom/android/server/soundtrigger/SoundTriggerInternal; -Lcom/android/server/soundtrigger/SoundTriggerService; -Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService; -Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub; -Lcom/android/server/statusbar/StatusBarManagerInternal; -Lcom/android/server/statusbar/StatusBarManagerService; -Lcom/android/server/statusbar/StatusBarManagerService$1; -Lcom/android/server/statusbar/StatusBarManagerService$2; -Lcom/android/server/statusbar/StatusBarManagerService$3; -Lcom/android/server/statusbar/StatusBarManagerService$4; -Lcom/android/server/statusbar/StatusBarManagerService$5; -Lcom/android/server/statusbar/StatusBarManagerService$DisableRecord; -Lcom/android/server/storage/AppFuseBridge; -Lcom/android/server/storage/DeviceStorageMonitorInternal; -Lcom/android/server/storage/DeviceStorageMonitorService; -Lcom/android/server/storage/DeviceStorageMonitorService$1; -Lcom/android/server/storage/DeviceStorageMonitorService$2; -Lcom/android/server/storage/DeviceStorageMonitorService$3; -Lcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver; -Lcom/android/server/storage/DiskStatsLoggingService; -Lcom/android/server/StorageManagerService; -Lcom/android/server/StorageManagerService$1; -Lcom/android/server/StorageManagerService$Callbacks; -Lcom/android/server/StorageManagerService$DefaultContainerConnection; -Lcom/android/server/StorageManagerService$Lifecycle; -Lcom/android/server/StorageManagerService$ObbActionHandler; -Lcom/android/server/StorageManagerService$StorageManagerInternalImpl; -Lcom/android/server/StorageManagerService$StorageManagerServiceHandler; -Lcom/android/server/SystemConfig; -Lcom/android/server/SystemConfig$PermissionEntry; -Lcom/android/server/SystemServer; -Lcom/android/server/SystemServerInitThreadPool; -Lcom/android/server/SystemService; -Lcom/android/server/SystemServiceManager; -Lcom/android/server/telecom/Analytics; -Lcom/android/server/telecom/Analytics$1; -Lcom/android/server/telecom/Analytics$2; -Lcom/android/server/telecom/Analytics$3; -Lcom/android/server/telecom/Analytics$CallInfo; -Lcom/android/server/telecom/Analytics$CallInfoImpl; -Lcom/android/server/telecom/AsyncRingtonePlayer; -Lcom/android/server/telecom/BluetoothAdapterProxy; -Lcom/android/server/telecom/bluetooth/BluetoothDeviceManager; -Lcom/android/server/telecom/bluetooth/BluetoothDeviceManager$1; -Lcom/android/server/telecom/bluetooth/BluetoothDeviceManager$2; -Lcom/android/server/telecom/bluetooth/BluetoothRouteManager; -Lcom/android/server/telecom/bluetooth/BluetoothRouteManager$1; -Lcom/android/server/telecom/bluetooth/BluetoothRouteManager$2; -Lcom/android/server/telecom/bluetooth/BluetoothRouteManager$AudioOffState; -Lcom/android/server/telecom/bluetooth/BluetoothRouteManager$BluetoothStateListener; -Lcom/android/server/telecom/BluetoothHeadsetProxy; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl$1; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl$2; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl$3; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl$4; -Lcom/android/server/telecom/BluetoothPhoneServiceImpl$BluetoothPhoneServiceImplFactory; -Lcom/android/server/telecom/Call; -Lcom/android/server/telecom/Call$1; -Lcom/android/server/telecom/CallAudioManager; -Lcom/android/server/telecom/CallAudioManager$1; -Lcom/android/server/telecom/CallAudioManager$AudioServiceFactory; -Lcom/android/server/telecom/CallAudioModeStateMachine; -Lcom/android/server/telecom/CallAudioModeStateMachine$1; -Lcom/android/server/telecom/CallAudioModeStateMachine$BaseState; -Lcom/android/server/telecom/CallAudioModeStateMachine$MessageArgs; -Lcom/android/server/telecom/CallAudioModeStateMachine$OtherFocusState; -Lcom/android/server/telecom/CallAudioModeStateMachine$RingingFocusState; -Lcom/android/server/telecom/CallAudioModeStateMachine$SimCallFocusState; -Lcom/android/server/telecom/CallAudioModeStateMachine$UnfocusedState; -Lcom/android/server/telecom/CallAudioModeStateMachine$VoipCallFocusState; -Lcom/android/server/telecom/CallAudioRoutePeripheralAdapter; -Lcom/android/server/telecom/CallAudioRouteStateMachine; -Lcom/android/server/telecom/CallAudioRouteStateMachine$1; -Lcom/android/server/telecom/CallAudioRouteStateMachine$2; -Lcom/android/server/telecom/CallAudioRouteStateMachine$3; -Lcom/android/server/telecom/CallAudioRouteStateMachine$ActiveBluetoothRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$ActiveEarpieceRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$ActiveHeadsetRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$ActiveSpeakerRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$AudioState; -Lcom/android/server/telecom/CallAudioRouteStateMachine$BluetoothRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$EarpieceRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$HeadsetRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$QuiescentBluetoothRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$QuiescentEarpieceRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$QuiescentHeadsetRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$QuiescentSpeakerRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$RingingBluetoothRoute; -Lcom/android/server/telecom/CallAudioRouteStateMachine$SpeakerRoute; -Lcom/android/server/telecom/CallerInfoAsyncQueryFactory; -Lcom/android/server/telecom/CallerInfoLookupHelper; -Lcom/android/server/telecom/CallerInfoLookupHelper$1; -Lcom/android/server/telecom/CallerInfoLookupHelper$CallerInfoQueryInfo; -Lcom/android/server/telecom/CallerInfoLookupHelper$OnQueryCompleteListener; -Lcom/android/server/telecom/callfiltering/CallFilterResultCallback; -Lcom/android/server/telecom/CallIdMapper; -Lcom/android/server/telecom/CallIdMapper$BiMap; -Lcom/android/server/telecom/CallIdMapper$ICallInfo; -Lcom/android/server/telecom/CallIntentProcessor; -Lcom/android/server/telecom/CallIntentProcessor$Adapter; -Lcom/android/server/telecom/CallIntentProcessor$AdapterImpl; -Lcom/android/server/telecom/Call$Listener; -Lcom/android/server/telecom/Call$ListenerBase; -Lcom/android/server/telecom/CallLogManager; -Lcom/android/server/telecom/CallLogManager$AddCallArgs; -Lcom/android/server/telecom/CallLogManager$LogCallAsyncTask; -Lcom/android/server/telecom/CallLogManager$LogCallCompletedListener; -Lcom/android/server/telecom/CallsManager; -Lcom/android/server/telecom/CallsManager$CallsManagerListener; -Lcom/android/server/telecom/CallsManagerListenerBase; -Lcom/android/server/telecom/CallState; -Lcom/android/server/telecom/components/BluetoothPhoneService; -Lcom/android/server/telecom/components/PrimaryCallReceiver; -Lcom/android/server/telecom/components/TelecomBroadcastReceiver; -Lcom/android/server/telecom/components/TelecomService; -Lcom/android/server/telecom/components/TelecomService$1; -Lcom/android/server/telecom/components/TelecomService$2; -Lcom/android/server/telecom/components/TelecomService$3; -Lcom/android/server/telecom/components/TelecomService$4; -Lcom/android/server/telecom/components/TelecomService$5; -Lcom/android/server/telecom/components/TelecomService$6; -Lcom/android/server/telecom/components/TelecomService$7; -Lcom/android/server/telecom/components/TelecomService$8; -Lcom/android/server/telecom/components/UserCallIntentProcessor; -Lcom/android/server/telecom/components/UserCallIntentProcessorFactory; -Lcom/android/server/telecom/ConnectionServiceRepository; -Lcom/android/server/telecom/ConnectionServiceRepository$1; -Lcom/android/server/telecom/ConnectionServiceWrapper; -Lcom/android/server/telecom/ConnectionServiceWrapper$1; -Lcom/android/server/telecom/ConnectionServiceWrapper$2; -Lcom/android/server/telecom/ConnectionServiceWrapper$Adapter; -Lcom/android/server/telecom/ContactsAsyncHelper; -Lcom/android/server/telecom/ContactsAsyncHelper$ContentResolverAdapter; -Lcom/android/server/telecom/CreateConnectionProcessor; -Lcom/android/server/telecom/CreateConnectionProcessor$CallAttemptRecord; -Lcom/android/server/telecom/CreateConnectionResponse; -Lcom/android/server/telecom/CreateConnectionTimeout; -Lcom/android/server/telecom/CurrentUserProxy; -Lcom/android/server/telecom/DefaultDialerCache; -Lcom/android/server/telecom/DefaultDialerCache$1; -Lcom/android/server/telecom/DefaultDialerCache$2; -Lcom/android/server/telecom/DefaultDialerCache$DefaultDialerManagerAdapter; -Lcom/android/server/telecom/DefaultDialerCache$DefaultDialerManagerAdapterImpl; -Lcom/android/server/telecom/DialerCodeReceiver; -Lcom/android/server/telecom/DockManager; -Lcom/android/server/telecom/DockManager$DockBroadcastReceiver; -Lcom/android/server/telecom/DockManager$Listener; -Lcom/android/server/telecom/DtmfLocalTonePlayer; -Lcom/android/server/telecom/DtmfLocalTonePlayer$1; -Lcom/android/server/telecom/EmergencyCallHelper; -Lcom/android/server/telecom/HeadsetMediaButton; -Lcom/android/server/telecom/HeadsetMediaButton$1; -Lcom/android/server/telecom/HeadsetMediaButton$2; -Lcom/android/server/telecom/HeadsetMediaButtonFactory; -Lcom/android/server/telecom/InCallAdapter; -Lcom/android/server/telecom/InCallController; -Lcom/android/server/telecom/InCallController$1; -Lcom/android/server/telecom/InCallController$2; -Lcom/android/server/telecom/InCallController$3; -Lcom/android/server/telecom/InCallController$CarSwappingInCallServiceConnection; -Lcom/android/server/telecom/InCallController$EmergencyInCallServiceConnection; -Lcom/android/server/telecom/InCallController$EmergencyInCallServiceConnection$1; -Lcom/android/server/telecom/InCallController$InCallServiceBindingConnection; -Lcom/android/server/telecom/InCallController$InCallServiceBindingConnection$1; -Lcom/android/server/telecom/InCallController$InCallServiceConnection; -Lcom/android/server/telecom/InCallController$InCallServiceConnection$Listener; -Lcom/android/server/telecom/InCallController$InCallServiceInfo; -Lcom/android/server/telecom/InCallController$NonUIInCallServiceConnectionCollection; -Lcom/android/server/telecom/InCallTonePlayer$Factory; -Lcom/android/server/telecom/InCallWakeLockController; -Lcom/android/server/telecom/InCallWakeLockControllerFactory; -Lcom/android/server/telecom/InterruptionFilterProxy; -Lcom/android/server/telecom/LogUtils; -Lcom/android/server/telecom/LogUtils$Events$Timings; -Lcom/android/server/telecom/MissedCallNotifier; -Lcom/android/server/telecom/MissedCallNotifier$CallInfoFactory; -Lcom/android/server/telecom/nano/TelecomLogClass$InCallServiceInfo; -Lcom/android/server/telecom/NewOutgoingCallIntentBroadcaster; -Lcom/android/server/telecom/NewOutgoingCallIntentBroadcaster$NewOutgoingCallBroadcastIntentReceiver; -Lcom/android/server/telecom/ParcelableCallUtils; -Lcom/android/server/telecom/PhoneAccountRegistrar; -Lcom/android/server/telecom/PhoneAccountRegistrar$1; -Lcom/android/server/telecom/PhoneAccountRegistrar$2; -Lcom/android/server/telecom/PhoneAccountRegistrar$3; -Lcom/android/server/telecom/PhoneAccountRegistrar$4; -Lcom/android/server/telecom/PhoneAccountRegistrar$5; -Lcom/android/server/telecom/PhoneAccountRegistrar$AsyncXmlWriter; -Lcom/android/server/telecom/PhoneAccountRegistrar$DefaultPhoneAccountHandle; -Lcom/android/server/telecom/PhoneAccountRegistrar$Listener; -Lcom/android/server/telecom/PhoneAccountRegistrar$PhoneAccountRegistrarWriteLock; -Lcom/android/server/telecom/PhoneAccountRegistrar$State; -Lcom/android/server/telecom/PhoneAccountRegistrar$XmlSerialization; -Lcom/android/server/telecom/PhoneNumberUtilsAdapter; -Lcom/android/server/telecom/PhoneNumberUtilsAdapterImpl; -Lcom/android/server/telecom/PhoneStateBroadcaster; -Lcom/android/server/telecom/ProximitySensorManager; -Lcom/android/server/telecom/ProximitySensorManagerFactory; -Lcom/android/server/telecom/RespondViaSmsManager; -Lcom/android/server/telecom/RespondViaSmsManager$1; -Lcom/android/server/telecom/RingbackPlayer; -Lcom/android/server/telecom/Ringer; -Lcom/android/server/telecom/RingtoneFactory; -Lcom/android/server/telecom/ServiceBinder; -Lcom/android/server/telecom/ServiceBinder$BindCallback; -Lcom/android/server/telecom/ServiceBinder$Binder2; -Lcom/android/server/telecom/ServiceBinder$Listener; -Lcom/android/server/telecom/ServiceBinder$ServiceBinderConnection; -Lcom/android/server/telecom/StatusBarNotifier; -Lcom/android/server/telecom/SystemSettingsUtil; -Lcom/android/server/telecom/SystemStateProvider; -Lcom/android/server/telecom/SystemStateProvider$1; -Lcom/android/server/telecom/SystemStateProvider$SystemStateListener; -Lcom/android/server/telecom/TelecomBroadcastIntentProcessor; -Lcom/android/server/telecom/TelecomLoaderService; -Lcom/android/server/telecom/TelecomLoaderService$1; -Lcom/android/server/telecom/TelecomLoaderService$2; -Lcom/android/server/telecom/TelecomLoaderService$3; -Lcom/android/server/telecom/TelecomLoaderService$4; -Lcom/android/server/telecom/TelecomLoaderService$5; -Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection; -Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1; -Lcom/android/server/telecom/TelecomServiceImpl; -Lcom/android/server/telecom/TelecomServiceImpl$1; -Lcom/android/server/telecom/TelecomServiceImpl$SubscriptionManagerAdapter; -Lcom/android/server/telecom/TelecomServiceImpl$SubscriptionManagerAdapterImpl; -Lcom/android/server/telecom/TelecomSystem; -Lcom/android/server/telecom/TelecomSystem$1; -Lcom/android/server/telecom/TelecomSystem$2; -Lcom/android/server/telecom/TelecomSystem$3; -Lcom/android/server/telecom/TelecomSystem$4; -Lcom/android/server/telecom/TelecomSystem$5; -Lcom/android/server/telecom/TelecomSystem$6; -Lcom/android/server/telecom/TelecomSystem$SyncRoot; -Lcom/android/server/telecom/TelecomWakeLock; -Lcom/android/server/telecom/TelecomWakeLock$WakeLockAdapter; -Lcom/android/server/telecom/TelephonyUtil; -Lcom/android/server/telecom/Timeouts; -Lcom/android/server/telecom/Timeouts$Adapter; -Lcom/android/server/telecom/TtyManager; -Lcom/android/server/telecom/TtyManager$TtyBroadcastReceiver; -Lcom/android/server/telecom/ui/MissedCallNotifierImpl; -Lcom/android/server/telecom/ui/MissedCallNotifierImpl$2; -Lcom/android/server/telecom/ui/MissedCallNotifierImpl$DefaultNotificationBuilderFactory; -Lcom/android/server/telecom/ui/MissedCallNotifierImpl$MissedCallNotifierImplFactory; -Lcom/android/server/telecom/ui/MissedCallNotifierImpl$NotificationBuilderFactory; -Lcom/android/server/telecom/UserUtil; -Lcom/android/server/telecom/VideoProviderProxy$Listener; -Lcom/android/server/telecom/WiredHeadsetManager; -Lcom/android/server/telecom/WiredHeadsetManager$Listener; -Lcom/android/server/telecom/WiredHeadsetManager$WiredHeadsetCallback; -Lcom/android/server/TelephonyRegistry; -Lcom/android/server/TelephonyRegistry$1; -Lcom/android/server/TelephonyRegistry$2; -Lcom/android/server/TelephonyRegistry$LogSSC; -Lcom/android/server/TelephonyRegistry$Record; -Lcom/android/server/TextServicesManagerService; -Lcom/android/server/TextServicesManagerService$InternalDeathRecipient; -Lcom/android/server/TextServicesManagerService$InternalServiceConnection; -Lcom/android/server/TextServicesManagerService$Lifecycle; -Lcom/android/server/TextServicesManagerService$SpellCheckerBindGroup; -Lcom/android/server/TextServicesManagerService$TextServicesBroadcastReceiver; -Lcom/android/server/TextServicesManagerService$TextServicesMonitor; -Lcom/android/server/TextServicesManagerService$TextServicesSettings; -Lcom/android/server/text/TextClassificationService; -Lcom/android/server/text/TextClassificationService$Lifecycle; -Lcom/android/server/trust/TrustArchive; -Lcom/android/server/trust/TrustManagerService; -Lcom/android/server/trust/TrustManagerService$1; -Lcom/android/server/trust/TrustManagerService$2; -Lcom/android/server/trust/TrustManagerService$3; -Lcom/android/server/trust/TrustManagerService$Receiver; -Lcom/android/server/trust/TrustManagerService$StrongAuthTracker; -Lcom/android/server/tv/TvInputHal; -Lcom/android/server/tv/UinputBridge; -Lcom/android/server/twilight/TwilightListener; -Lcom/android/server/twilight/TwilightManager; -Lcom/android/server/twilight/TwilightService; -Lcom/android/server/twilight/TwilightService$1; -Lcom/android/server/UiModeManagerService; -Lcom/android/server/UiModeManagerService$1; -Lcom/android/server/UiModeManagerService$2; -Lcom/android/server/UiModeManagerService$3; -Lcom/android/server/UiModeManagerService$4; -Lcom/android/server/UiModeManagerService$5; -Lcom/android/server/UiModeManagerService$6; -Lcom/android/server/UiThread; -Lcom/android/server/UpdateLockService; -Lcom/android/server/UpdateLockService$LockWatcher; -Lcom/android/server/usage/AppIdleHistory; -Lcom/android/server/usage/AppIdleHistory$PackageHistory; -Lcom/android/server/usage/IntervalStats; -Lcom/android/server/usage/StorageStatsService; -Lcom/android/server/usage/StorageStatsService$1; -Lcom/android/server/usage/StorageStatsService$Lifecycle; -Lcom/android/server/usage/UnixCalendar; -Lcom/android/server/usage/UsageStatsDatabase; -Lcom/android/server/usage/UsageStatsDatabase$1; -Lcom/android/server/usage/UsageStatsDatabase$StatCombiner; -Lcom/android/server/usage/UsageStatsService; -Lcom/android/server/usage/UsageStatsService$1; -Lcom/android/server/usage/UsageStatsService$2; -Lcom/android/server/usage/UsageStatsService$BinderService; -Lcom/android/server/usage/UsageStatsService$DeviceStateReceiver; -Lcom/android/server/usage/UsageStatsService$H; -Lcom/android/server/usage/UsageStatsService$LocalService; -Lcom/android/server/usage/UsageStatsService$PackageReceiver; -Lcom/android/server/usage/UsageStatsService$SettingsObserver; -Lcom/android/server/usage/UsageStatsService$UserActionsReceiver; -Lcom/android/server/usage/UsageStatsXml; -Lcom/android/server/usage/UsageStatsXmlV1; -Lcom/android/server/usage/UserUsageStatsService; -Lcom/android/server/usage/UserUsageStatsService$1; -Lcom/android/server/usage/UserUsageStatsService$2; -Lcom/android/server/usage/UserUsageStatsService$3; -Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener; -Lcom/android/server/usb/MtpNotificationManager; -Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener; -Lcom/android/server/usb/MtpNotificationManager$Receiver; -Lcom/android/server/usb/UsbAlsaManager; -Lcom/android/server/usb/UsbAlsaManager$1; -Lcom/android/server/usb/UsbAlsaManager$AlsaDevice; -Lcom/android/server/usb/UsbDebuggingManager; -Lcom/android/server/usb/UsbDebuggingManager$UsbDebuggingHandler; -Lcom/android/server/usb/UsbDebuggingManager$UsbDebuggingThread; -Lcom/android/server/usb/UsbDeviceManager; -Lcom/android/server/usb/UsbDeviceManager$1; -Lcom/android/server/usb/UsbDeviceManager$2; -Lcom/android/server/usb/UsbDeviceManager$AdbSettingsObserver; -Lcom/android/server/usb/UsbDeviceManager$UsbHandler; -Lcom/android/server/usb/UsbHostManager; -Lcom/android/server/usb/UsbHostManager$1; -Lcom/android/server/usb/UsbMidiDevice; -Lcom/android/server/usb/UsbPortManager; -Lcom/android/server/usb/UsbPortManager$1; -Lcom/android/server/usb/UsbPortManager$2; -Lcom/android/server/usb/UsbPortManager$DeathRecipient; -Lcom/android/server/usb/UsbPortManager$HALCallback; -Lcom/android/server/usb/UsbPortManager$PortInfo; -Lcom/android/server/usb/UsbPortManager$RawPortInfo; -Lcom/android/server/usb/UsbPortManager$RawPortInfo$1; -Lcom/android/server/usb/UsbPortManager$ServiceNotification; -Lcom/android/server/usb/UsbProfileGroupSettingsManager; -Lcom/android/server/usb/UsbProfileGroupSettingsManager$1; -Lcom/android/server/usb/UsbProfileGroupSettingsManager$AccessoryFilter; -Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor; -Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage; -Lcom/android/server/usb/UsbService; -Lcom/android/server/usb/UsbService$1; -Lcom/android/server/usb/UsbService$Lifecycle; -Lcom/android/server/usb/UsbSettingsManager; -Lcom/android/server/utils/ManagedApplicationService$BinderChecker; -Lcom/android/server/VibratorService; -Lcom/android/server/VibratorService$1; -Lcom/android/server/VibratorService$2; -Lcom/android/server/VibratorService$3; -Lcom/android/server/VibratorService$4; -Lcom/android/server/VibratorService$SettingsObserver; -Lcom/android/server/VibratorService$VibrateThread; -Lcom/android/server/VibratorService$Vibration; -Lcom/android/server/VibratorService$VibrationInfo; -Lcom/android/server/voiceinteraction/DatabaseHelper; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$1; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1; -Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$3; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$4; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$5; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$AssistDataForActivity; -Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback; -Lcom/android/server/vr/CompatibilityDisplay; -Lcom/android/server/vr/CompatibilityDisplay$1; -Lcom/android/server/vr/EnabledComponentsObserver; -Lcom/android/server/vr/EnabledComponentsObserver$1; -Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener; -Lcom/android/server/vr/SettingsObserver; -Lcom/android/server/vr/SettingsObserver$1; -Lcom/android/server/vr/SettingsObserver$2; -Lcom/android/server/vr/SettingsObserver$SettingChangeListener; -Lcom/android/server/vr/VrManagerInternal; -Lcom/android/server/vr/VrManagerService; -Lcom/android/server/vr/VrManagerService$1; -Lcom/android/server/vr/VrManagerService$2; -Lcom/android/server/vr/VrManagerService$3; -Lcom/android/server/vr/VrManagerService$LocalService; -Lcom/android/server/vr/VrManagerService$NotificationAccessManager; -Lcom/android/server/vr/VrManagerService$VrState; -Lcom/android/server/wallpaper/WallpaperManagerService; -Lcom/android/server/wallpaper/WallpaperManagerService$1; -Lcom/android/server/wallpaper/WallpaperManagerService$2; -Lcom/android/server/wallpaper/WallpaperManagerService$3; -Lcom/android/server/wallpaper/WallpaperManagerService$4; -Lcom/android/server/wallpaper/WallpaperManagerService$Lifecycle; -Lcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor; -Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection; -Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData; -Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver; -Lcom/android/server/Watchdog; -Lcom/android/server/Watchdog$BinderThreadMonitor; -Lcom/android/server/Watchdog$HandlerChecker; -Lcom/android/server/Watchdog$Monitor; -Lcom/android/server/Watchdog$RebootRequestReceiver; -Lcom/android/server/webkit/SystemImpl; -Lcom/android/server/webkit/SystemImpl$LazyHolder; -Lcom/android/server/webkit/SystemInterface; -Lcom/android/server/webkit/WebViewUpdateService; -Lcom/android/server/webkit/WebViewUpdateService$1; -Lcom/android/server/webkit/WebViewUpdateService$BinderService; -Lcom/android/server/webkit/WebViewUpdateServiceImpl; -Lcom/android/server/webkit/WebViewUpdateServiceImpl$WebViewUpdater; -Lcom/android/server/webkit/WebViewUpdateServiceImpl$WebViewUpdater$ProviderAndPackageInfo; -Lcom/android/server/webkit/WebViewUpdateServiceImpl$WebViewUpdater$WebViewPackageMissingException; -Lcom/android/server/WidgetBackupProvider; -Lcom/android/server/wifi/BackupManagerProxy; -Lcom/android/server/wifi/BaseWifiDiagnostics; -Lcom/android/server/wifi/BuildProperties; -Lcom/android/server/wifi/Clock; -Lcom/android/server/wifi/ConfigurationMap; -Lcom/android/server/wifi/ExternalScoreEvaluator; -Lcom/android/server/wifi/FrameworkFacade; -Lcom/android/server/wifi/HalDeviceManager; -Lcom/android/server/wifi/HalDeviceManager$ManagerStatusListener; -Lcom/android/server/wifi/HalDeviceManager$WifiEventCallback; -Lcom/android/server/wifi/hotspot2/AnqpCache; -Lcom/android/server/wifi/hotspot2/anqp/Constants$ANQPElementType; -Lcom/android/server/wifi/hotspot2/ANQPRequestManager; -Lcom/android/server/wifi/hotspot2/NetworkDetail; -Lcom/android/server/wifi/hotspot2/NetworkDetail$Ant; -Lcom/android/server/wifi/hotspot2/NetworkDetail$HSRelease; -Lcom/android/server/wifi/hotspot2/PasspointEventHandler; -Lcom/android/server/wifi/hotspot2/PasspointEventHandler$Callbacks; -Lcom/android/server/wifi/hotspot2/PasspointManager; -Lcom/android/server/wifi/hotspot2/PasspointManager$CallbackHandler; -Lcom/android/server/wifi/hotspot2/PasspointNetworkEvaluator; -Lcom/android/server/wifi/hotspot2/PasspointObjectFactory; -Lcom/android/server/wifi/hotspot2/Utils; -Lcom/android/server/wifi/LastMileLogger; -Lcom/android/server/wifi/LogcatLog; -Lcom/android/server/wifi/LogcatLog$RealLogMessage; -Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount; -Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent; -Lcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint; -Lcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount; -Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket; -Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount; -Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog; -Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry; -Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry; -Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount; -Lcom/android/server/wifi/p2p/WifiP2pService; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$1; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$ClientHandler; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$1; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$DefaultState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$FrequencyConflictState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupCreatedState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupCreatingState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$GroupNegotiationState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$InactiveState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$OngoingGroupRemovalState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisabledState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pDisablingState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnabledState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pEnablingState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$P2pNotSupportedState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$ProvisionDiscoveryState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingInviteRequestState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingJoinState; -Lcom/android/server/wifi/p2p/WifiP2pServiceImpl$P2pStateMachine$UserAuthorizingNegotiationRequestState; -Lcom/android/server/wifi/PropertyService; -Lcom/android/server/wifi/RecommendedNetworkEvaluator; -Lcom/android/server/wifi/RecommendedNetworkEvaluator$1; -Lcom/android/server/wifi/RttService; -Lcom/android/server/wifi/RttService$RttServiceImpl; -Lcom/android/server/wifi/RttService$RttServiceImpl$1; -Lcom/android/server/wifi/RttService$RttServiceImpl$2; -Lcom/android/server/wifi/RttService$RttServiceImpl$ClientHandler; -Lcom/android/server/wifi/RttService$RttServiceImpl$ClientInfo; -Lcom/android/server/wifi/RttService$RttServiceImpl$InterfaceEventHandler; -Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine; -Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$DefaultState; -Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$EnabledState; -Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$InitiatorEnabledState; -Lcom/android/server/wifi/RttService$RttServiceImpl$RttStateMachine$ResponderEnabledState; -Lcom/android/server/wifi/SavedNetworkEvaluator; -Lcom/android/server/wifi/SavedNetworkEvaluator$1; -Lcom/android/server/wifi/ScanDetail; -Lcom/android/server/wifi/ScanDetailCache; -Lcom/android/server/wifi/scanner/BackgroundScanScheduler; -Lcom/android/server/wifi/scanner/BackgroundScanScheduler$Bucket; -Lcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList; -Lcom/android/server/wifi/scanner/BackgroundScanScheduler$BucketList$1; -Lcom/android/server/wifi/scanner/ChannelHelper; -Lcom/android/server/wifi/scanner/ChannelHelper$ChannelCollection; -Lcom/android/server/wifi/scanner/HalChannelHelper; -Lcom/android/server/wifi/scanner/HalWifiScannerImpl; -Lcom/android/server/wifi/scanner/KnownBandsChannelHelper; -Lcom/android/server/wifi/scanner/KnownBandsChannelHelper$KnownBandsChannelCollection; -Lcom/android/server/wifi/scanner/ScanScheduleUtil; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$1; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$2; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$3; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$ChangeBuffer; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$HwPnoDebouncer; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$HwPnoDebouncer$1; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$HwPnoDebouncer$Listener; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$LastScanSettings; -Lcom/android/server/wifi/scanner/SupplicantWifiScannerImpl$ScanBuffer; -Lcom/android/server/wifi/scanner/WifiScannerImpl; -Lcom/android/server/wifi/scanner/WifiScannerImpl$1; -Lcom/android/server/wifi/scanner/WifiScannerImpl$2; -Lcom/android/server/wifi/scanner/WifiScannerImpl$WifiScannerImplFactory; -Lcom/android/server/wifi/scanner/WifiScanningService; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$1; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientHandler; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ClientInfo; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$ExternalClientInfo; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestInfo; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$RequestList; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$DefaultState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$PausedState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiBackgroundScanStateMachine$StartedState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiChangeStateMachine; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiChangeStateMachine$DefaultState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiChangeStateMachine$MovingState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiChangeStateMachine$StationaryState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$DefaultState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$HwPnoScanState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$SingleScanState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$StartedState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiPnoScanStateMachine$SwPnoScanState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DefaultState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$DriverStartedState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$IdleState; -Lcom/android/server/wifi/scanner/WifiScanningServiceImpl$WifiSingleScanStateMachine$ScanningState; -Lcom/android/server/wifi/SIMAccessor; -Lcom/android/server/wifi/StateChangeResult; -Lcom/android/server/wifi/StateMachineDeathRecipient; -Lcom/android/server/wifi/SupplicantStateTracker; -Lcom/android/server/wifi/SupplicantStateTracker$CompletedState; -Lcom/android/server/wifi/SupplicantStateTracker$ConnectionActiveState; -Lcom/android/server/wifi/SupplicantStateTracker$DefaultState; -Lcom/android/server/wifi/SupplicantStateTracker$DisconnectedState; -Lcom/android/server/wifi/SupplicantStateTracker$DormantState; -Lcom/android/server/wifi/SupplicantStateTracker$HandshakeState; -Lcom/android/server/wifi/SupplicantStateTracker$InactiveState; -Lcom/android/server/wifi/SupplicantStateTracker$ScanState; -Lcom/android/server/wifi/SupplicantStateTracker$UninitializedState; -Lcom/android/server/wifi/SystemBuildProperties; -Lcom/android/server/wifi/SystemPropertyService; -Lcom/android/server/wifi/util/ByteArrayRingBuffer; -Lcom/android/server/wifi/util/InformationElementUtil; -Lcom/android/server/wifi/util/InformationElementUtil$BssLoad; -Lcom/android/server/wifi/util/InformationElementUtil$Capabilities; -Lcom/android/server/wifi/util/InformationElementUtil$ExtendedCapabilities; -Lcom/android/server/wifi/util/InformationElementUtil$HtOperation; -Lcom/android/server/wifi/util/InformationElementUtil$Interworking; -Lcom/android/server/wifi/util/InformationElementUtil$RoamingConsortium; -Lcom/android/server/wifi/util/InformationElementUtil$SupportedRates; -Lcom/android/server/wifi/util/InformationElementUtil$TrafficIndicationMap; -Lcom/android/server/wifi/util/InformationElementUtil$VhtOperation; -Lcom/android/server/wifi/util/InformationElementUtil$Vsa; -Lcom/android/server/wifi/util/InformationElementUtil$WifiMode; -Lcom/android/server/wifi/util/ScanResultUtil; -Lcom/android/server/wifi/util/TelephonyUtil; -Lcom/android/server/wifi/util/TelephonyUtil$SimAuthRequestData; -Lcom/android/server/wifi/util/TelephonyUtil$SimAuthResponseData; -Lcom/android/server/wifi/util/WifiAsyncChannel; -Lcom/android/server/wifi/util/WifiHandler; -Lcom/android/server/wifi/util/WifiPermissionsUtil; -Lcom/android/server/wifi/util/WifiPermissionsWrapper; -Lcom/android/server/wifi/util/XmlUtil; -Lcom/android/server/wifi/util/XmlUtil$IpConfigurationXmlUtil; -Lcom/android/server/wifi/util/XmlUtil$NetworkSelectionStatusXmlUtil; -Lcom/android/server/wifi/util/XmlUtil$WifiConfigurationXmlUtil; -Lcom/android/server/wifi/WifiApConfigStore; -Lcom/android/server/wifi/WifiBackupRestore; -Lcom/android/server/wifi/WifiCertManager; -Lcom/android/server/wifi/WifiCertManager$1; -Lcom/android/server/wifi/WifiConfigManager; -Lcom/android/server/wifi/WifiConfigManager$1; -Lcom/android/server/wifi/WifiConfigStore; -Lcom/android/server/wifi/WifiConfigStore$1; -Lcom/android/server/wifi/WifiConfigStoreData; -Lcom/android/server/wifi/WifiConfigStoreData$SharedData; -Lcom/android/server/wifi/WifiConfigStoreData$UserData; -Lcom/android/server/wifi/WifiConfigStoreLegacy; -Lcom/android/server/wifi/WifiConfigStore$StoreFile; -Lcom/android/server/wifi/WifiConfigurationUtil; -Lcom/android/server/wifi/WifiConfigurationUtil$WifiConfigurationComparator; -Lcom/android/server/wifi/WifiConnectivityManager; -Lcom/android/server/wifi/WifiConnectivityManager$1; -Lcom/android/server/wifi/WifiConnectivityManager$2; -Lcom/android/server/wifi/WifiConnectivityManager$3; -Lcom/android/server/wifi/WifiConnectivityManager$AllSingleScanListener; -Lcom/android/server/wifi/WifiConnectivityManager$PnoScanListener; -Lcom/android/server/wifi/WifiConnectivityManager$SingleScanListener; -Lcom/android/server/wifi/WifiController; -Lcom/android/server/wifi/WifiController$1; -Lcom/android/server/wifi/WifiController$2; -Lcom/android/server/wifi/WifiController$3; -Lcom/android/server/wifi/WifiController$4; -Lcom/android/server/wifi/WifiController$ApEnabledState; -Lcom/android/server/wifi/WifiController$ApStaDisabledState; -Lcom/android/server/wifi/WifiController$DefaultState; -Lcom/android/server/wifi/WifiController$DeviceActiveState; -Lcom/android/server/wifi/WifiController$DeviceInactiveState; -Lcom/android/server/wifi/WifiController$EcmState; -Lcom/android/server/wifi/WifiController$FullHighPerfLockHeldState; -Lcom/android/server/wifi/WifiController$FullLockHeldState; -Lcom/android/server/wifi/WifiController$NoLockHeldState; -Lcom/android/server/wifi/WifiController$ScanOnlyLockHeldState; -Lcom/android/server/wifi/WifiController$StaDisabledWithScanState; -Lcom/android/server/wifi/WifiController$StaEnabledState; -Lcom/android/server/wifi/WifiCountryCode; -Lcom/android/server/wifi/WifiDiagnostics; -Lcom/android/server/wifi/WifiDiagnostics$1; -Lcom/android/server/wifi/WifiDiagnostics$LimitedCircularArray; -Lcom/android/server/wifi/WifiInjector; -Lcom/android/server/wifi/WifiKeyStore; -Lcom/android/server/wifi/WifiLastResortWatchdog; -Lcom/android/server/wifi/WifiLastResortWatchdog$AvailableNetworkFailureCount; -Lcom/android/server/wifi/WifiLockManager; -Lcom/android/server/wifi/WifiLockManager$WifiLock; -Lcom/android/server/wifi/WifiLog; -Lcom/android/server/wifi/WifiLog$LogMessage; -Lcom/android/server/wifi/WifiMetrics; -Lcom/android/server/wifi/WifiMetrics$ConnectionEvent; -Lcom/android/server/wifi/WifiMetrics$RouterFingerPrint; -Lcom/android/server/wifi/WifiMonitor; -Lcom/android/server/wifi/WifiMonitor$1; -Lcom/android/server/wifi/WifiMonitor$MonitorThread; -Lcom/android/server/wifi/WifiMulticastLockManager; -Lcom/android/server/wifi/WifiMulticastLockManager$FilterController; -Lcom/android/server/wifi/WifiMulticastLockManager$Multicaster; -Lcom/android/server/wifi/WifiNative; -Lcom/android/server/wifi/WifiNative$BucketSettings; -Lcom/android/server/wifi/WifiNative$ChannelSettings; -Lcom/android/server/wifi/WifiNative$HotlistEventHandler; -Lcom/android/server/wifi/WifiNative$MonitorThread; -Lcom/android/server/wifi/WifiNative$PnoEventHandler; -Lcom/android/server/wifi/WifiNative$RingBufferStatus; -Lcom/android/server/wifi/WifiNative$RttEventHandler; -Lcom/android/server/wifi/WifiNative$ScanCapabilities; -Lcom/android/server/wifi/WifiNative$ScanEventHandler; -Lcom/android/server/wifi/WifiNative$ScanSettings; -Lcom/android/server/wifi/WifiNative$SignificantWifiChangeEventHandler; -Lcom/android/server/wifi/WifiNative$WifiLoggerEventHandler; -Lcom/android/server/wifi/WifiNative$WifiRssiEventHandler; -Lcom/android/server/wifi/WifiNetworkHistory; -Lcom/android/server/wifi/WifiNetworkHistory$1; -Lcom/android/server/wifi/WifiNetworkSelector; -Lcom/android/server/wifi/WifiNetworkSelector$BssidBlacklistStatus; -Lcom/android/server/wifi/WifiNetworkSelector$NetworkEvaluator; -Lcom/android/server/wifi/WifiScoreReport; -Lcom/android/server/wifi/WifiService; -Lcom/android/server/wifi/WifiServiceImpl; -Lcom/android/server/wifi/WifiServiceImpl$1; -Lcom/android/server/wifi/WifiServiceImpl$2; -Lcom/android/server/wifi/WifiServiceImpl$3; -Lcom/android/server/wifi/WifiServiceImpl$4; -Lcom/android/server/wifi/WifiServiceImpl$5; -Lcom/android/server/wifi/WifiServiceImpl$ClientHandler; -Lcom/android/server/wifi/WifiServiceImpl$WifiStateMachineHandler; -Lcom/android/server/wifi/WifiSettingsStore; -Lcom/android/server/wifi/WifiStateMachine; -Lcom/android/server/wifi/WifiStateMachine$1; -Lcom/android/server/wifi/WifiStateMachine$2; -Lcom/android/server/wifi/WifiStateMachine$3; -Lcom/android/server/wifi/WifiStateMachine$4; -Lcom/android/server/wifi/WifiStateMachine$ConnectedState; -Lcom/android/server/wifi/WifiStateMachine$ConnectModeState; -Lcom/android/server/wifi/WifiStateMachine$DefaultState; -Lcom/android/server/wifi/WifiStateMachine$DisconnectedState; -Lcom/android/server/wifi/WifiStateMachine$DisconnectingState; -Lcom/android/server/wifi/WifiStateMachine$InitialState; -Lcom/android/server/wifi/WifiStateMachine$IpManagerCallback; -Lcom/android/server/wifi/WifiStateMachine$L2ConnectedState; -Lcom/android/server/wifi/WifiStateMachine$ObtainingIpState; -Lcom/android/server/wifi/WifiStateMachine$RoamingState; -Lcom/android/server/wifi/WifiStateMachine$ScanModeState; -Lcom/android/server/wifi/WifiStateMachine$SoftApState; -Lcom/android/server/wifi/WifiStateMachine$SupplicantStartedState; -Lcom/android/server/wifi/WifiStateMachine$SupplicantStartingState; -Lcom/android/server/wifi/WifiStateMachine$SupplicantStoppingState; -Lcom/android/server/wifi/WifiStateMachine$UntrustedWifiNetworkFactory; -Lcom/android/server/wifi/WifiStateMachine$WaitForP2pDisableState; -Lcom/android/server/wifi/WifiStateMachine$WifiNetworkAgent; -Lcom/android/server/wifi/WifiStateMachine$WifiNetworkFactory; -Lcom/android/server/wifi/WifiStateMachine$WpsRunningState; -Lcom/android/server/wifi/WifiSupplicantControl; -Lcom/android/server/wifi/WifiSupplicantControl$WpaConfigFileObserver; -Lcom/android/server/wifi/WifiSupplicantHal; -Lcom/android/server/wifi/WifiSupplicantHal$HalDeviceManagerStatusListener; -Lcom/android/server/wifi/WifiTrafficPoller; -Lcom/android/server/wifi/WifiTrafficPoller$1; -Lcom/android/server/wifi/WifiTrafficPoller$TrafficHandler; -Lcom/android/server/wifi/WifiVendorHal; -Lcom/android/server/wifi/WifiVendorHal$HalDeviceManagerStatusListener; -Lcom/android/server/WiredAccessoryManager; -Lcom/android/server/WiredAccessoryManager$1; -Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver; -Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo; -Lcom/android/server/wm/animation/ClipRectLRAnimation; -Lcom/android/server/wm/animation/ClipRectTBAnimation; -Lcom/android/server/wm/AppTokenList; -Lcom/android/server/wm/AppTransition; -Lcom/android/server/wm/AppTransition$1; -Lcom/android/server/wm/AppTransition$2; -Lcom/android/server/wm/AppTransition$4; -Lcom/android/server/wm/AppWindowAnimator; -Lcom/android/server/wm/AppWindowAnimator$DummyAnimation; -Lcom/android/server/wm/AppWindowContainerController; -Lcom/android/server/wm/AppWindowContainerListener; -Lcom/android/server/wm/AppWindowToken; -Lcom/android/server/wm/BlackFrame; -Lcom/android/server/wm/BlackFrame$BlackSurface; -Lcom/android/server/wm/BoundsAnimationController; -Lcom/android/server/wm/BoundsAnimationController$AnimateBoundsUser; -Lcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier; -Lcom/android/server/wm/DimLayer; -Lcom/android/server/wm/DimLayerController; -Lcom/android/server/wm/DimLayerController$DimLayerState; -Lcom/android/server/wm/DimLayer$DimLayerUser; -Lcom/android/server/wm/DisplayContent; -Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState; -Lcom/android/server/wm/DisplayContent$DisplayChildWindowContainer; -Lcom/android/server/wm/DisplayContent$NonAppWindowContainers; -Lcom/android/server/wm/DisplayContent$ScreenshotApplicationState; -Lcom/android/server/wm/DisplayContent$Screenshoter; -Lcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult; -Lcom/android/server/wm/DisplayContent$TaskStackContainers; -Lcom/android/server/wm/DisplaySettings; -Lcom/android/server/wm/DisplaySettings$Entry; -Lcom/android/server/wm/DockedStackDividerController; -Lcom/android/server/wm/InputConsumerImpl; -Lcom/android/server/wm/InputMonitor; -Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer; -Lcom/android/server/wm/KeyguardDisableHandler; -Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto; -Lcom/android/server/wm/PinnedStackController; -Lcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback; -Lcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler; -Lcom/android/server/wm/PointerEventDispatcher; -Lcom/android/server/wm/RootWindowContainer; -Lcom/android/server/wm/ScreenRotationAnimation; -Lcom/android/server/wm/Session; -Lcom/android/server/wm/SnapshotStartingData; -Lcom/android/server/wm/SplashScreenStartingData; -Lcom/android/server/wm/StackWindowController; -Lcom/android/server/wm/StackWindowController$H; -Lcom/android/server/wm/StackWindowListener; -Lcom/android/server/wm/StartingData; -Lcom/android/server/wm/Task; -Lcom/android/server/wm/TaskSnapshotCache; -Lcom/android/server/wm/TaskSnapshotCache$CacheEntry; -Lcom/android/server/wm/TaskSnapshotController; -Lcom/android/server/wm/TaskSnapshotLoader; -Lcom/android/server/wm/TaskSnapshotPersister; -Lcom/android/server/wm/TaskSnapshotPersister$1; -Lcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem; -Lcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver; -Lcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem; -Lcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem; -Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem; -Lcom/android/server/wm/TaskSnapshotSurface; -Lcom/android/server/wm/TaskSnapshotSurface$1; -Lcom/android/server/wm/TaskSnapshotSurface$Window; -Lcom/android/server/wm/TaskStack; -Lcom/android/server/wm/TaskTapPointerEventListener; -Lcom/android/server/wm/TaskWindowContainerController; -Lcom/android/server/wm/TaskWindowContainerController$H; -Lcom/android/server/wm/TaskWindowContainerListener; -Lcom/android/server/wm/UnknownAppVisibilityController; -Lcom/android/server/wm/WallpaperController; -Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult; -Lcom/android/server/wm/WallpaperWindowToken; -Lcom/android/server/wm/WindowAnimator; -Lcom/android/server/wm/WindowAnimator$1; -Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator; -Lcom/android/server/wm/WindowContainer; -Lcom/android/server/wm/WindowContainerController; -Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper; -Lcom/android/server/wm/WindowContainerListener; -Lcom/android/server/wm/WindowLayersController; -Lcom/android/server/wm/WindowManagerService; -Lcom/android/server/wm/WindowManagerService$1; -Lcom/android/server/wm/WindowManagerService$2; -Lcom/android/server/wm/WindowManagerService$3; -Lcom/android/server/wm/WindowManagerService$4; -Lcom/android/server/wm/WindowManagerService$6; -Lcom/android/server/wm/WindowManagerService$AppFreezeListener; -Lcom/android/server/wm/WindowManagerService$H; -Lcom/android/server/wm/WindowManagerService$LocalService; -Lcom/android/server/wm/WindowManagerService$MousePositionTracker; -Lcom/android/server/wm/WindowManagerService$RotationWatcher; -Lcom/android/server/wm/WindowManagerService$SettingsObserver; -Lcom/android/server/wm/WindowState; -Lcom/android/server/wm/WindowState$1; -Lcom/android/server/wm/WindowState$2; -Lcom/android/server/wm/WindowState$3; -Lcom/android/server/wm/WindowStateAnimator; -Lcom/android/server/wm/WindowState$DeathRecipient; -Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults; -Lcom/android/server/wm/WindowSurfaceController; -Lcom/android/server/wm/WindowSurfaceController$SurfaceControlWithBackground; -Lcom/android/server/wm/WindowSurfacePlacer; -Lcom/android/server/wm/WindowSurfacePlacer$LayerAndToken; -Lcom/android/server/wm/WindowToken; -Lcom/google/android/collect/Lists; -Lcom/google/android/collect/Maps; -Lcom/google/android/collect/Sets; -Lcom/google/android/gles_jni/EGLImpl; -Lcom/google/android/gles_jni/GLImpl; -Lcom/google/protobuf/nano/InvalidProtocolBufferNanoException; -Lcom/google/protobuf/nano/MessageNano; -LD; -Ldalvik/annotation/optimization/CriticalNative; -Ldalvik/annotation/optimization/FastNative; -Ldalvik/system/BaseDexClassLoader; -Ldalvik/system/BaseDexClassLoader$Reporter; -Ldalvik/system/BlockGuard; -Ldalvik/system/BlockGuard$1; -Ldalvik/system/BlockGuard$2; -Ldalvik/system/BlockGuard$BlockGuardPolicyException; -Ldalvik/system/BlockGuard$Policy; -Ldalvik/system/ClassExt; -Ldalvik/system/CloseGuard; -Ldalvik/system/CloseGuard$DefaultReporter; -Ldalvik/system/CloseGuard$DefaultTracker; -Ldalvik/system/CloseGuard$Reporter; -Ldalvik/system/CloseGuard$Tracker; -Ldalvik/system/DalvikLogHandler; -Ldalvik/system/DexClassLoader; -Ldalvik/system/DexFile; -Ldalvik/system/DexFile$DFEnum; -Ldalvik/system/DexPathList; -Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList$NativeLibraryElement; -Ldalvik/system/EmulatedStackFrame; -Ldalvik/system/EmulatedStackFrame$Range; -Ldalvik/system/InMemoryDexClassLoader$DexData; -Ldalvik/system/PathClassLoader; -Ldalvik/system/SocketTagger; -Ldalvik/system/SocketTagger$1; -Ldalvik/system/VMDebug; -Ldalvik/system/VMRuntime; -Ldalvik/system/VMStack; -Ldalvik/system/ZygoteHooks; -LF; -LI; -LJ; -Ljava/io/Bits; -Ljava/io/BufferedInputStream; -Ljava/io/BufferedOutputStream; -Ljava/io/BufferedReader; -Ljava/io/BufferedWriter; -Ljava/io/ByteArrayInputStream; -Ljava/io/ByteArrayOutputStream; -Ljava/io/CharArrayWriter; -Ljava/io/Closeable; -Ljava/io/Console; -Ljava/io/DataInput; -Ljava/io/DataInputStream; -Ljava/io/DataOutput; -Ljava/io/DataOutputStream; -Ljava/io/DefaultFileSystem; -Ljava/io/EOFException; -Ljava/io/ExpiringCache; -Ljava/io/ExpiringCache$1; -Ljava/io/ExpiringCache$Entry; -Ljava/io/Externalizable; -Ljava/io/File; -Ljava/io/FileDescriptor; -Ljava/io/FileDescriptor$1; -Ljava/io/FileInputStream; -Ljava/io/FileInputStream$UseManualSkipException; -Ljava/io/FilenameFilter; -Ljava/io/FileNotFoundException; -Ljava/io/FileOutputStream; -Ljava/io/File$PathStatus; -Ljava/io/FileReader; -Ljava/io/FileSystem; -Ljava/io/File$TempDirectory; -Ljava/io/FileWriter; -Ljava/io/FilterInputStream; -Ljava/io/FilterOutputStream; -Ljava/io/Flushable; -Ljava/io/InputStream; -Ljava/io/InputStreamReader; -Ljava/io/InterruptedIOException; -Ljava/io/InvalidObjectException; -Ljava/io/IOException; -Ljava/io/ObjectInput; -Ljava/io/ObjectInputStream; -Ljava/io/ObjectInputStream$BlockDataInputStream; -Ljava/io/ObjectInputStream$HandleTable; -Ljava/io/ObjectInputStream$HandleTable$HandleList; -Ljava/io/ObjectInputStream$PeekInputStream; -Ljava/io/ObjectInputStream$ValidationList; -Ljava/io/ObjectOutput; -Ljava/io/ObjectOutputStream; -Ljava/io/ObjectOutputStream$PutField; -Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamConstants; -Ljava/io/ObjectStreamException; -Ljava/io/ObjectStreamField; -Ljava/io/OutputStream; -Ljava/io/OutputStreamWriter; -Ljava/io/PrintStream; -Ljava/io/PrintWriter; -Ljava/io/PushbackInputStream; -Ljava/io/RandomAccessFile; -Ljava/io/Reader; -Ljava/io/Serializable; -Ljava/io/SerializablePermission; -Ljava/io/StringWriter; -Ljava/io/UnixFileSystem; -Ljava/io/UnsupportedEncodingException; -Ljava/io/UTFDataFormatException; -Ljava/io/Writer; -Ljava/lang/AbstractMethodError; -Ljava/lang/AbstractStringBuilder; -Ljava/lang/AndroidHardcodedSystemProperties; -Ljava/lang/annotation/Annotation; -Ljava/lang/annotation/AnnotationTypeMismatchException; -Ljava/lang/annotation/IncompleteAnnotationException; -Ljava/lang/annotation/Inherited; -Ljava/lang/Appendable; -Ljava/lang/ArithmeticException; -Ljava/lang/ArrayIndexOutOfBoundsException; -Ljava/lang/ArrayStoreException; -Ljava/lang/AssertionError; -Ljava/lang/AutoCloseable; -Ljava/lang/Boolean; -Ljava/lang/BootClassLoader; -Ljava/lang/Byte; -Ljava/lang/Byte$ByteCache; -Ljava/lang/CaseMapper; -Ljava/lang/CaseMapper$1; -Ljava/lang/Character; -Ljava/lang/Character$CharacterCache; -Ljava/lang/Character$Subset; -Ljava/lang/Character$UnicodeBlock; -Ljava/lang/CharSequence; -Ljava/lang/CharSequence$1CharIterator; -Ljava/lang/CharSequence$1CodePointIterator; -Ljava/lang/Class; -Ljava/lang/Class$Caches; -Ljava/lang/ClassCastException; -Ljava/lang/ClassLoader; -Ljava/lang/ClassLoader$SystemClassLoader; -Ljava/lang/ClassNotFoundException; -Ljava/lang/Cloneable; -Ljava/lang/CloneNotSupportedException; -Ljava/lang/Comparable; -Ljava/lang/Daemons; -Ljava/lang/Daemons$Daemon; -Ljava/lang/Daemons$FinalizerDaemon; -Ljava/lang/Daemons$FinalizerWatchdogDaemon; -Ljava/lang/Daemons$HeapTaskDaemon; -Ljava/lang/Daemons$ReferenceQueueDaemon; -Ljava/lang/DexCache; -Ljava/lang/Double; -Ljava/lang/Enum; -Ljava/lang/Enum$1; -Ljava/lang/EnumConstantNotPresentException; -Ljava/lang/Error; -Ljava/lang/Exception; -Ljava/lang/ExceptionInInitializerError; -Ljava/lang/Float; -Ljava/lang/IllegalAccessError; -Ljava/lang/IllegalAccessException; -Ljava/lang/IllegalArgumentException; -Ljava/lang/IllegalStateException; -Ljava/lang/IllegalThreadStateException; -Ljava/lang/IncompatibleClassChangeError; -Ljava/lang/IndexOutOfBoundsException; -Ljava/lang/InheritableThreadLocal; -Ljava/lang/InstantiationException; -Ljava/lang/Integer; -Ljava/lang/Integer$IntegerCache; -Ljava/lang/InternalError; -Ljava/lang/InterruptedException; -Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandleImpl; -Ljava/lang/invoke/MethodHandleImpl$HandleInfo; -Ljava/lang/invoke/MethodHandleInfo; -Ljava/lang/invoke/MethodHandles; -Ljava/lang/invoke/MethodHandleStatics; -Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry; -Ljava/lang/invoke/MethodTypeForm; -Ljava/lang/invoke/Transformers$BindTo; -Ljava/lang/invoke/Transformers$Collector; -Ljava/lang/invoke/Transformers$Spreader; -Ljava/lang/invoke/Transformers$Transformer; -Ljava/lang/invoke/Transformers$VarargsCollector; -Ljava/lang/invoke/WrongMethodTypeException; -Ljava/lang/Iterable; -Ljava/lang/JavaLangAccess; -Ljava/lang/LinkageError; -Ljava/lang/Long; -Ljava/lang/Long$LongCache; -Ljava/lang/Math; -Ljava/lang/Math$RandomNumberGeneratorHolder; -Ljava/lang/NoClassDefFoundError; -Ljava/lang/NoSuchFieldError; -Ljava/lang/NoSuchFieldException; -Ljava/lang/NoSuchMethodError; -Ljava/lang/NoSuchMethodException; -Ljava/lang/NullPointerException; -Ljava/lang/Number; -Ljava/lang/NumberFormatException; -Ljava/lang/Object; -Ljava/lang/OutOfMemoryError; -Ljava/lang/Package; -Ljava/lang/Process; -Ljava/lang/ProcessBuilder; -Ljava/lang/ProcessEnvironment; -Ljava/lang/Readable; -Ljava/lang/ref/FinalizerReference; -Ljava/lang/ref/FinalizerReference$Sentinel; -Ljava/lang/reflect/AccessibleObject; -Ljava/lang/reflect/AnnotatedElement; -Ljava/lang/reflect/Array; -Ljava/lang/reflect/Constructor; -Ljava/lang/reflect/Executable; -Ljava/lang/reflect/Executable$GenericInfo; -Ljava/lang/reflect/Field; -Ljava/lang/reflect/GenericDeclaration; -Ljava/lang/reflect/InvocationHandler; -Ljava/lang/reflect/InvocationTargetException; -Ljava/lang/ReflectiveOperationException; -Ljava/lang/reflect/MalformedParametersException; -Ljava/lang/reflect/Member; -Ljava/lang/reflect/Method; -Ljava/lang/reflect/Method$1; -Ljava/lang/reflect/Modifier; -Ljava/lang/reflect/Parameter; -Ljava/lang/reflect/ParameterizedType; -Ljava/lang/reflect/Proxy; -Ljava/lang/reflect/Proxy$1; -Ljava/lang/reflect/Proxy$Key1; -Ljava/lang/reflect/Proxy$Key2; -Ljava/lang/reflect/Proxy$KeyFactory; -Ljava/lang/reflect/Proxy$KeyX; -Ljava/lang/reflect/Proxy$ProxyClassFactory; -Ljava/lang/reflect/Type; -Ljava/lang/reflect/TypeVariable; -Ljava/lang/reflect/WeakCache; -Ljava/lang/reflect/WeakCache$CacheKey; -Ljava/lang/reflect/WeakCache$Factory; -Ljava/lang/reflect/WeakCache$LookupValue; -Ljava/lang/reflect/WeakCache$Value; -Ljava/lang/ref/PhantomReference; -Ljava/lang/ref/Reference; -Ljava/lang/ref/ReferenceQueue; -Ljava/lang/ref/SoftReference; -Ljava/lang/ref/WeakReference; -Ljava/lang/Runnable; -Ljava/lang/Runtime; -Ljava/lang/RuntimeException; -Ljava/lang/RuntimePermission; -Ljava/lang/SecurityException; -Ljava/lang/Short; -Ljava/lang/Short$ShortCache; -Ljava/lang/StackOverflowError; -Ljava/lang/StackTraceElement; -Ljava/lang/StrictMath; -Ljava/lang/String; -Ljava/lang/StringBuffer; -Ljava/lang/StringBuilder; -Ljava/lang/String$CaseInsensitiveComparator; -Ljava/lang/StringFactory; -Ljava/lang/StringIndexOutOfBoundsException; -Ljava/lang/System; -Ljava/lang/System$PropertiesWithNonOverrideableDefaults; -Ljava/lang/Thread; -Ljava/lang/Thread$1; -Ljava/lang/Thread$Caches; -Ljava/lang/ThreadDeath; -Ljava/lang/ThreadGroup; -Ljava/lang/ThreadLocal; -Ljava/lang/ThreadLocal$ThreadLocalMap; -Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; -Ljava/lang/Thread$State; -Ljava/lang/Thread$UncaughtExceptionHandler; -Ljava/lang/Thread$WeakClassKey; -Ljava/lang/Throwable; -Ljava/lang/Throwable$PrintStreamOrWriter; -Ljava/lang/Throwable$SentinelHolder; -Ljava/lang/Throwable$WrappedPrintStream; -Ljava/lang/Throwable$WrappedPrintWriter; -Ljava/lang/TypeNotPresentException; -Ljava/lang/UNIXProcess; -Ljava/lang/UnsatisfiedLinkError; -Ljava/lang/UnsupportedOperationException; -Ljava/lang/VirtualMachineError; -Ljava/lang/VMClassLoader; -Ljava/lang/Void; -Ljava/math/BigInt; -Ljava/math/BigInteger; -Ljava/math/NativeBN; -Ljava/math/RoundingMode; -Ljava/net/AbstractPlainDatagramSocketImpl; -Ljava/net/AbstractPlainSocketImpl; -Ljava/net/AddressCache; -Ljava/net/AddressCache$AddressCacheEntry; -Ljava/net/AddressCache$AddressCacheKey; -Ljava/net/ConnectException; -Ljava/net/CookieHandler; -Ljava/net/DatagramPacket; -Ljava/net/DatagramSocket; -Ljava/net/DatagramSocket$1; -Ljava/net/DatagramSocketImpl; -Ljava/net/DefaultDatagramSocketImplFactory; -Ljava/net/DefaultInterface; -Ljava/net/HttpURLConnection; -Ljava/net/IDN; -Ljava/net/Inet4Address; -Ljava/net/Inet6Address; -Ljava/net/Inet6AddressImpl; -Ljava/net/Inet6Address$Inet6AddressHolder; -Ljava/net/InetAddress; -Ljava/net/InetAddress$1; -Ljava/net/InetAddressImpl; -Ljava/net/InetAddress$InetAddressHolder; -Ljava/net/InetSocketAddress; -Ljava/net/InetSocketAddress$InetSocketAddressHolder; -Ljava/net/InterfaceAddress; -Ljava/net/JarURLConnection; -Ljava/net/MalformedURLException; -Ljava/net/MulticastSocket; -Ljava/net/NetworkInterface; -Ljava/net/Parts; -Ljava/net/PlainDatagramSocketImpl; -Ljava/net/PlainSocketImpl; -Ljava/net/ProtocolException; -Ljava/net/Proxy; -Ljava/net/ProxySelector; -Ljava/net/Proxy$Type; -Ljava/net/ResponseCache; -Ljava/net/ServerSocket; -Ljava/net/Socket; -Ljava/net/Socket$2; -Ljava/net/Socket$3; -Ljava/net/SocketAddress; -Ljava/net/SocketException; -Ljava/net/SocketImpl; -Ljava/net/SocketInputStream; -Ljava/net/SocketOptions; -Ljava/net/SocketOutputStream; -Ljava/net/SocketTimeoutException; -Ljava/net/SocksConsts; -Ljava/net/SocksSocketImpl; -Ljava/net/UnknownHostException; -Ljava/net/URI; -Ljava/net/URI$Parser; -Ljava/net/URISyntaxException; -Ljava/net/URL; -Ljava/net/URLConnection; -Ljava/net/URLEncoder; -Ljava/net/URLStreamHandler; -Ljava/net/URLStreamHandlerFactory; -Ljava/nio/Bits; -Ljava/nio/Buffer; -Ljava/nio/BufferOverflowException; -Ljava/nio/BufferUnderflowException; -Ljava/nio/ByteBuffer; -Ljava/nio/ByteBufferAsCharBuffer; -Ljava/nio/ByteBufferAsDoubleBuffer; -Ljava/nio/ByteBufferAsFloatBuffer; -Ljava/nio/ByteBufferAsIntBuffer; -Ljava/nio/ByteBufferAsLongBuffer; -Ljava/nio/ByteBufferAsShortBuffer; -Ljava/nio/ByteOrder; -Ljava/nio/channels/AsynchronousCloseException; -Ljava/nio/channels/ByteChannel; -Ljava/nio/channels/Channel; -Ljava/nio/channels/Channels; -Ljava/nio/channels/ClosedByInterruptException; -Ljava/nio/channels/ClosedChannelException; -Ljava/nio/channels/DatagramChannel; -Ljava/nio/channels/FileChannel; -Ljava/nio/channels/FileChannel$MapMode; -Ljava/nio/channels/GatheringByteChannel; -Ljava/nio/channels/InterruptibleChannel; -Ljava/nio/channels/MulticastChannel; -Ljava/nio/channels/NetworkChannel; -Ljava/nio/channels/ReadableByteChannel; -Ljava/nio/channels/ScatteringByteChannel; -Ljava/nio/channels/SeekableByteChannel; -Ljava/nio/channels/SelectableChannel; -Ljava/nio/channels/ServerSocketChannel; -Ljava/nio/channels/SocketChannel; -Ljava/nio/channels/spi/AbstractInterruptibleChannel; -Ljava/nio/channels/spi/AbstractInterruptibleChannel$1; -Ljava/nio/channels/spi/AbstractSelectableChannel; -Ljava/nio/channels/WritableByteChannel; -Ljava/nio/CharBuffer; -Ljava/nio/charset/CharacterCodingException; -Ljava/nio/charset/Charset; -Ljava/nio/charset/CharsetDecoder; -Ljava/nio/charset/CharsetDecoderICU; -Ljava/nio/charset/CharsetEncoder; -Ljava/nio/charset/CharsetEncoderICU; -Ljava/nio/charset/CharsetICU; -Ljava/nio/charset/CoderResult; -Ljava/nio/charset/CoderResult$1; -Ljava/nio/charset/CoderResult$2; -Ljava/nio/charset/CoderResult$Cache; -Ljava/nio/charset/CodingErrorAction; -Ljava/nio/charset/IllegalCharsetNameException; -Ljava/nio/charset/StandardCharsets; -Ljava/nio/charset/UnsupportedCharsetException; -Ljava/nio/DirectByteBuffer; -Ljava/nio/DirectByteBuffer$MemoryRef; -Ljava/nio/DoubleBuffer; -Ljava/nio/file/attribute/BasicFileAttributes; -Ljava/nio/file/attribute/FileAttribute; -Ljava/nio/file/attribute/PosixFileAttributes; -Ljava/nio/file/FileAlreadyExistsException; -Ljava/nio/file/Files; -Ljava/nio/file/FileSystem; -Ljava/nio/file/FileSystemException; -Ljava/nio/file/FileSystems; -Ljava/nio/file/FileSystems$DefaultFileSystemHolder; -Ljava/nio/file/FileSystems$DefaultFileSystemHolder$1; -Ljava/nio/file/NoSuchFileException; -Ljava/nio/file/OpenOption; -Ljava/nio/file/Path; -Ljava/nio/file/spi/FileSystemProvider; -Ljava/nio/file/Watchable; -Ljava/nio/FloatBuffer; -Ljava/nio/HeapByteBuffer; -Ljava/nio/HeapCharBuffer; -Ljava/nio/IntBuffer; -Ljava/nio/InvalidMarkException; -Ljava/nio/LongBuffer; -Ljava/nio/MappedByteBuffer; -Ljava/nio/NIOAccess; -Ljava/nio/NioUtils; -Ljava/nio/ReadOnlyBufferException; -Ljava/nio/ShortBuffer; -Ljava/nio/StringCharBuffer; -Ljava/security/AccessControlContext; -Ljava/security/AccessControlException; -Ljava/security/AccessController; -Ljava/security/AlgorithmConstraints; -Ljava/security/BasicPermission; -Ljava/security/cert/Certificate; -Ljava/security/cert/CertificateEncodingException; -Ljava/security/cert/CertificateException; -Ljava/security/cert/CertificateExpiredException; -Ljava/security/cert/CertificateFactory; -Ljava/security/cert/CertificateFactorySpi; -Ljava/security/cert/CertificateNotYetValidException; -Ljava/security/cert/CertificateParsingException; -Ljava/security/cert/CertPath; -Ljava/security/cert/CertPathChecker; -Ljava/security/cert/CertPathHelperImpl; -Ljava/security/cert/CertPathParameters; -Ljava/security/cert/CertPathValidator; -Ljava/security/cert/CertPathValidatorException; -Ljava/security/cert/CertPathValidatorResult; -Ljava/security/cert/CertPathValidatorSpi; -Ljava/security/cert/CertSelector; -Ljava/security/cert/CRLException; -Ljava/security/cert/Extension; -Ljava/security/cert/PKIXCertPathChecker; -Ljava/security/cert/PKIXCertPathValidatorResult; -Ljava/security/cert/PKIXParameters; -Ljava/security/cert/PKIXRevocationChecker; -Ljava/security/cert/PolicyNode; -Ljava/security/cert/TrustAnchor; -Ljava/security/cert/X509Certificate; -Ljava/security/cert/X509CertSelector; -Ljava/security/cert/X509Extension; -Ljava/security/CryptoPrimitive; -Ljava/security/DigestException; -Ljava/security/GeneralSecurityException; -Ljava/security/Guard; -Ljava/security/interfaces/DSAKey; -Ljava/security/interfaces/DSAPublicKey; -Ljava/security/interfaces/ECKey; -Ljava/security/interfaces/ECPrivateKey; -Ljava/security/interfaces/ECPublicKey; -Ljava/security/interfaces/RSAKey; -Ljava/security/interfaces/RSAPrivateKey; -Ljava/security/interfaces/RSAPublicKey; -Ljava/security/InvalidAlgorithmParameterException; -Ljava/security/InvalidKeyException; -Ljava/security/Key; -Ljava/security/KeyException; -Ljava/security/KeyFactory; -Ljava/security/KeyFactorySpi; -Ljava/security/KeyManagementException; -Ljava/security/KeyStore; -Ljava/security/KeyStore$1; -Ljava/security/KeyStoreException; -Ljava/security/KeyStoreSpi; -Ljava/security/MessageDigest; -Ljava/security/MessageDigest$Delegate; -Ljava/security/MessageDigestSpi; -Ljava/security/NoSuchAlgorithmException; -Ljava/security/NoSuchProviderException; -Ljava/security/Permission; -Ljava/security/PermissionCollection; -Ljava/security/Permissions; -Ljava/security/Principal; -Ljava/security/PrivateKey; -Ljava/security/PrivilegedAction; -Ljava/security/PrivilegedActionException; -Ljava/security/PrivilegedExceptionAction; -Ljava/security/ProtectionDomain; -Ljava/security/Provider; -Ljava/security/Provider$EngineDescription; -Ljava/security/Provider$Service; -Ljava/security/Provider$ServiceKey; -Ljava/security/Provider$UString; -Ljava/security/PublicKey; -Ljava/security/SecureRandom; -Ljava/security/SecureRandomSpi; -Ljava/security/Security; -Ljava/security/Signature; -Ljava/security/Signature$Delegate; -Ljava/security/SignatureException; -Ljava/security/SignatureSpi; -Ljava/security/spec/AlgorithmParameterSpec; -Ljava/security/spec/EncodedKeySpec; -Ljava/security/spec/InvalidKeySpecException; -Ljava/security/spec/KeySpec; -Ljava/security/spec/RSAPublicKeySpec; -Ljava/security/spec/X509EncodedKeySpec; -Ljava/security/UnrecoverableEntryException; -Ljava/security/UnrecoverableKeyException; -Ljava/text/AttributedCharacterIterator$Attribute; -Ljava/text/DateFormat; -Ljava/text/DateFormat$Field; -Ljava/text/DateFormatSymbols; -Ljava/text/DecimalFormat; -Ljava/text/DecimalFormatSymbols; -Ljava/text/DontCareFieldPosition; -Ljava/text/DontCareFieldPosition$1; -Ljava/text/FieldPosition; -Ljava/text/FieldPosition$Delegate; -Ljava/text/Format; -Ljava/text/Format$Field; -Ljava/text/Format$FieldDelegate; -Ljava/text/Normalizer; -Ljava/text/Normalizer$Form; -Ljava/text/NumberFormat; -Ljava/text/ParseException; -Ljava/text/SimpleDateFormat; -Ljava/time/DateTimeException; -Ljava/util/AbstractCollection; -Ljava/util/AbstractList; -Ljava/util/AbstractList$Itr; -Ljava/util/AbstractList$ListItr; -Ljava/util/AbstractMap; -Ljava/util/AbstractMap$1; -Ljava/util/AbstractMap$2; -Ljava/util/AbstractMap$SimpleImmutableEntry; -Ljava/util/AbstractQueue; -Ljava/util/AbstractSequentialList; -Ljava/util/AbstractSet; -Ljava/util/ArrayDeque; -Ljava/util/ArrayDeque$DeqIterator; -Ljava/util/ArrayList; -Ljava/util/ArrayList$ArrayListSpliterator; -Ljava/util/ArrayList$Itr; -Ljava/util/ArrayList$ListItr; -Ljava/util/ArrayList$SubList; -Ljava/util/ArrayList$SubList$1; -Ljava/util/ArrayPrefixHelpers$CumulateTask; -Ljava/util/ArrayPrefixHelpers$DoubleCumulateTask; -Ljava/util/ArrayPrefixHelpers$IntCumulateTask; -Ljava/util/ArrayPrefixHelpers$LongCumulateTask; -Ljava/util/Arrays; -Ljava/util/Arrays$ArrayList; -Ljava/util/Arrays$NaturalOrder; -Ljava/util/ArraysParallelSortHelpers$FJByte$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJChar$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJDouble$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJFloat$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJInt$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJLong$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJObject$Sorter; -Ljava/util/ArraysParallelSortHelpers$FJShort$Sorter; -Ljava/util/Base64; -Ljava/util/Base64$Decoder; -Ljava/util/Base64$Encoder; -Ljava/util/BitSet; -Ljava/util/Calendar; -Ljava/util/Collection; -Ljava/util/Collections; -Ljava/util/Collections$1; -Ljava/util/Collections$2; -Ljava/util/Collections$3; -Ljava/util/Collections$AsLIFOQueue; -Ljava/util/Collections$CheckedCollection; -Ljava/util/Collections$CheckedList; -Ljava/util/Collections$CheckedMap; -Ljava/util/Collections$CheckedNavigableMap; -Ljava/util/Collections$CheckedNavigableSet; -Ljava/util/Collections$CheckedQueue; -Ljava/util/Collections$CheckedRandomAccessList; -Ljava/util/Collections$CheckedSet; -Ljava/util/Collections$CheckedSortedMap; -Ljava/util/Collections$CheckedSortedSet; -Ljava/util/Collections$CopiesList; -Ljava/util/Collections$EmptyEnumeration; -Ljava/util/Collections$EmptyIterator; -Ljava/util/Collections$EmptyList; -Ljava/util/Collections$EmptyListIterator; -Ljava/util/Collections$EmptyMap; -Ljava/util/Collections$EmptySet; -Ljava/util/Collections$ReverseComparator; -Ljava/util/Collections$ReverseComparator2; -Ljava/util/Collections$SetFromMap; -Ljava/util/Collections$SingletonList; -Ljava/util/Collections$SingletonMap; -Ljava/util/Collections$SingletonSet; -Ljava/util/Collections$SynchronizedCollection; -Ljava/util/Collections$SynchronizedList; -Ljava/util/Collections$SynchronizedMap; -Ljava/util/Collections$SynchronizedNavigableMap; -Ljava/util/Collections$SynchronizedNavigableSet; -Ljava/util/Collections$SynchronizedRandomAccessList; -Ljava/util/Collections$SynchronizedSet; -Ljava/util/Collections$SynchronizedSortedMap; -Ljava/util/Collections$SynchronizedSortedSet; -Ljava/util/Collections$UnmodifiableCollection; -Ljava/util/Collections$UnmodifiableCollection$1; -Ljava/util/Collections$UnmodifiableList; -Ljava/util/Collections$UnmodifiableList$1; -Ljava/util/Collections$UnmodifiableMap; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry; -Ljava/util/Collections$UnmodifiableNavigableMap; -Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap; -Ljava/util/Collections$UnmodifiableNavigableSet; -Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet; -Ljava/util/Collections$UnmodifiableRandomAccessList; -Ljava/util/Collections$UnmodifiableSet; -Ljava/util/Collections$UnmodifiableSortedMap; -Ljava/util/Collections$UnmodifiableSortedSet; -Ljava/util/ComparableTimSort; -Ljava/util/Comparator; -Ljava/util/Comparators$NaturalOrderComparator; -Ljava/util/Comparators$NullComparator; -Ljava/util/concurrent/AbstractExecutorService; -Ljava/util/concurrent/ArrayBlockingQueue; -Ljava/util/concurrent/atomic/AtomicBoolean; -Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl; -Ljava/util/concurrent/BlockingQueue; -Ljava/util/concurrent/Callable; -Ljava/util/concurrent/CancellationException; -Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$AltResult; -Ljava/util/concurrent/CompletableFuture$AsynchronousCompletionTask; -Ljava/util/concurrent/CompletableFuture$Completion; -Ljava/util/concurrent/CompletableFuture$Signaller; -Ljava/util/concurrent/CompletionStage; -Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator; -Ljava/util/concurrent/ConcurrentHashMap$BulkTask; -Ljava/util/concurrent/ConcurrentHashMap$CollectionView; -Ljava/util/concurrent/ConcurrentHashMap$CounterCell; -Ljava/util/concurrent/ConcurrentHashMap$EntryIterator; -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView; -Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask; -Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask; -Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode; -Ljava/util/concurrent/ConcurrentHashMap$KeyIterator; -Ljava/util/concurrent/ConcurrentHashMap$KeySetView; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReservationNode; -Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask; -Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$Segment; -Ljava/util/concurrent/ConcurrentHashMap$Traverser; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$ValueIterator; -Ljava/util/concurrent/ConcurrentHashMap$ValuesView; -Ljava/util/concurrent/ConcurrentLinkedQueue; -Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentMap; -Ljava/util/concurrent/CopyOnWriteArrayList; -Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator; -Ljava/util/concurrent/CopyOnWriteArraySet; -Ljava/util/concurrent/CountDownLatch; -Ljava/util/concurrent/CountDownLatch$Sync; -Ljava/util/concurrent/CountedCompleter; -Ljava/util/concurrent/ExecutionException; -Ljava/util/concurrent/Executor; -Ljava/util/concurrent/Executors; -Ljava/util/concurrent/Executors$DefaultThreadFactory; -Ljava/util/concurrent/Executors$DelegatedExecutorService; -Ljava/util/concurrent/ExecutorService; -Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService; -Ljava/util/concurrent/Executors$RunnableAdapter; -Ljava/util/concurrent/ForkJoinPool; -Ljava/util/concurrent/ForkJoinPool$1; -Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory; -Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory; -Ljava/util/concurrent/ForkJoinPool$ManagedBlocker; -Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinTask$ExceptionNode; -Ljava/util/concurrent/ForkJoinWorkerThread; -Ljava/util/concurrent/Future; -Ljava/util/concurrent/FutureTask; -Ljava/util/concurrent/FutureTask$WaitNode; -Ljava/util/concurrent/LinkedBlockingQueue; -Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/locks/AbstractOwnableSynchronizer; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/locks/Lock; -Ljava/util/concurrent/locks/LockSupport; -Ljava/util/concurrent/locks/ReadWriteLock; -Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; -Ljava/util/concurrent/locks/ReentrantLock$Sync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock; -Ljava/util/ConcurrentModificationException; -Ljava/util/concurrent/RejectedExecutionHandler; -Ljava/util/concurrent/RunnableFuture; -Ljava/util/concurrent/ThreadFactory; -Ljava/util/concurrent/ThreadLocalRandom; -Ljava/util/concurrent/ThreadPoolExecutor; -Ljava/util/concurrent/ThreadPoolExecutor$AbortPolicy; -Ljava/util/concurrent/ThreadPoolExecutor$Worker; -Ljava/util/concurrent/TimeoutException; -Ljava/util/concurrent/TimeUnit; -Ljava/util/concurrent/TimeUnit$1; -Ljava/util/concurrent/TimeUnit$2; -Ljava/util/concurrent/TimeUnit$3; -Ljava/util/concurrent/TimeUnit$4; -Ljava/util/concurrent/TimeUnit$5; -Ljava/util/concurrent/TimeUnit$6; -Ljava/util/concurrent/TimeUnit$7; -Ljava/util/Currency; -Ljava/util/Date; -Ljava/util/Deque; -Ljava/util/Dictionary; -Ljava/util/DualPivotQuicksort; -Ljava/util/Enumeration; -Ljava/util/EnumMap; -Ljava/util/EnumMap$1; -Ljava/util/EnumSet; -Ljava/util/Formattable; -Ljava/util/Formatter; -Ljava/util/Formatter$Conversion; -Ljava/util/Formatter$DateTime; -Ljava/util/Formatter$FixedString; -Ljava/util/Formatter$Flags; -Ljava/util/Formatter$FormatSpecifier; -Ljava/util/Formatter$FormatSpecifierParser; -Ljava/util/Formatter$FormatString; -Ljava/util/function/BiConsumer; -Ljava/util/function/BiFunction; -Ljava/util/function/BinaryOperator; -Ljava/util/function/Consumer; -Ljava/util/function/DoubleBinaryOperator; -Ljava/util/function/Function; -Ljava/util/function/IntBinaryOperator; -Ljava/util/function/IntConsumer; -Ljava/util/function/IntFunction; -Ljava/util/function/IntToDoubleFunction; -Ljava/util/function/IntToLongFunction; -Ljava/util/function/IntUnaryOperator; -Ljava/util/function/LongBinaryOperator; -Ljava/util/function/LongUnaryOperator; -Ljava/util/function/Predicate; -Ljava/util/function/Supplier; -Ljava/util/function/ToDoubleBiFunction; -Ljava/util/function/ToDoubleFunction; -Ljava/util/function/ToIntBiFunction; -Ljava/util/function/ToIntFunction; -Ljava/util/function/ToLongBiFunction; -Ljava/util/function/ToLongFunction; -Ljava/util/function/UnaryOperator; -Ljava/util/GregorianCalendar; -Ljava/util/HashMap; -Ljava/util/HashMap$EntryIterator; -Ljava/util/HashMap$EntrySet; -Ljava/util/HashMap$HashIterator; -Ljava/util/HashMap$KeyIterator; -Ljava/util/HashMap$KeySet; -Ljava/util/HashMap$Node; -Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$ValueIterator; -Ljava/util/HashMap$Values; -Ljava/util/HashSet; -Ljava/util/Hashtable; -Ljava/util/Hashtable$Enumerator; -Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable$KeySet; -Ljava/util/Hashtable$ValueCollection; -Ljava/util/IdentityHashMap; -Ljava/util/IdentityHashMap$KeySet; -Ljava/util/IllegalFormatException; -Ljava/util/IllformedLocaleException; -Ljava/util/Iterator; -Ljava/util/jar/JarEntry; -Ljava/util/jar/JarFile; -Ljava/util/jar/JarFile$JarEntryIterator; -Ljava/util/jar/JarFile$JarFileEntry; -Ljava/util/LinkedHashMap; -Ljava/util/LinkedHashMap$LinkedEntryIterator; -Ljava/util/LinkedHashMap$LinkedEntrySet; -Ljava/util/LinkedHashMap$LinkedHashIterator; -Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedKeyIterator; -Ljava/util/LinkedHashMap$LinkedKeySet; -Ljava/util/LinkedHashMap$LinkedValueIterator; -Ljava/util/LinkedHashMap$LinkedValues; -Ljava/util/LinkedHashSet; -Ljava/util/LinkedList; -Ljava/util/LinkedList$ListItr; -Ljava/util/LinkedList$Node; -Ljava/util/List; -Ljava/util/ListIterator; -Ljava/util/Locale; -Ljava/util/Locale$Builder; -Ljava/util/Locale$Cache; -Ljava/util/Locale$Category; -Ljava/util/Locale$FilteringMode; -Ljava/util/Locale$LanguageRange; -Ljava/util/Locale$LocaleKey; -Ljava/util/logging/ErrorManager; -Ljava/util/logging/Formatter; -Ljava/util/logging/Handler; -Ljava/util/logging/Level; -Ljava/util/logging/Level$KnownLevel; -Ljava/util/logging/Logger; -Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/LoggingPermission; -Ljava/util/logging/LoggingProxyImpl; -Ljava/util/logging/LogManager; -Ljava/util/logging/LogManager$1; -Ljava/util/logging/LogManager$2; -Ljava/util/logging/LogManager$3; -Ljava/util/logging/LogManager$5; -Ljava/util/logging/LogManager$Cleaner; -Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogManager$LoggerContext$1; -Ljava/util/logging/LogManager$LoggerWeakRef; -Ljava/util/logging/LogManager$LogNode; -Ljava/util/logging/LogManager$RootLogger; -Ljava/util/logging/LogManager$SystemLoggerContext; -Ljava/util/Map; -Ljava/util/Map$Entry; -Ljava/util/MissingResourceException; -Ljava/util/NavigableMap; -Ljava/util/NavigableSet; -Ljava/util/NoSuchElementException; -Ljava/util/Objects; -Ljava/util/prefs/AbstractPreferences; -Ljava/util/prefs/FileSystemPreferences; -Ljava/util/prefs/Preferences; -Ljava/util/PrimitiveIterator; -Ljava/util/PrimitiveIterator$OfInt; -Ljava/util/Properties; -Ljava/util/Properties$LineReader; -Ljava/util/Queue; -Ljava/util/Random; -Ljava/util/RandomAccess; -Ljava/util/RandomAccessSubList; -Ljava/util/regex/Matcher; -Ljava/util/regex/MatchResult; -Ljava/util/regex/Pattern; -Ljava/util/regex/PatternSyntaxException; -Ljava/util/RegularEnumSet; -Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle$1; -Ljava/util/Set; -Ljava/util/SimpleTimeZone; -Ljava/util/SortedMap; -Ljava/util/SortedSet; -Ljava/util/Spliterator; -Ljava/util/Spliterator$OfDouble; -Ljava/util/Spliterator$OfInt; -Ljava/util/Spliterator$OfLong; -Ljava/util/Spliterator$OfPrimitive; -Ljava/util/Spliterators; -Ljava/util/Spliterators$EmptySpliterator; -Ljava/util/Spliterators$EmptySpliterator$OfDouble; -Ljava/util/Spliterators$EmptySpliterator$OfInt; -Ljava/util/Spliterators$EmptySpliterator$OfLong; -Ljava/util/Spliterators$EmptySpliterator$OfRef; -Ljava/util/Stack; -Ljava/util/stream/BaseStream; -Ljava/util/stream/DoubleStream; -Ljava/util/stream/IntStream; -Ljava/util/stream/LongStream; -Ljava/util/stream/Stream; -Ljava/util/stream/StreamSupport; -Ljava/util/StringJoiner; -Ljava/util/StringTokenizer; -Ljava/util/SubList; -Ljava/util/TaskQueue; -Ljava/util/Timer; -Ljava/util/Timer$1; -Ljava/util/TimerTask; -Ljava/util/TimerThread; -Ljava/util/TimeZone; -Ljava/util/TimSort; -Ljava/util/TreeMap; -Ljava/util/TreeMap$AscendingSubMap; -Ljava/util/TreeMap$AscendingSubMap$AscendingEntrySetView; -Ljava/util/TreeMap$EntryIterator; -Ljava/util/TreeMap$EntrySet; -Ljava/util/TreeMap$KeyIterator; -Ljava/util/TreeMap$KeySet; -Ljava/util/TreeMap$NavigableSubMap; -Ljava/util/TreeMap$NavigableSubMap$EntrySetView; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator; -Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator; -Ljava/util/TreeMap$PrivateEntryIterator; -Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$ValueIterator; -Ljava/util/TreeMap$Values; -Ljava/util/TreeSet; -Ljava/util/UUID; -Ljava/util/UUID$Holder; -Ljava/util/Vector; -Ljava/util/Vector$Itr; -Ljava/util/WeakHashMap; -Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$EntrySet; -Ljava/util/WeakHashMap$KeySet; -Ljava/util/WeakHashMap$Values; -Ljava/util/zip/Adler32; -Ljava/util/zip/Checksum; -Ljava/util/zip/CRC32; -Ljava/util/zip/DataFormatException; -Ljava/util/zip/Deflater; -Ljava/util/zip/DeflaterOutputStream; -Ljava/util/zip/GZIPOutputStream; -Ljava/util/zip/Inflater; -Ljava/util/zip/InflaterInputStream; -Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZipConstants; -Ljava/util/zip/ZipEntry; -Ljava/util/zip/ZipFile; -Ljava/util/zip/ZipFile$ZipEntryIterator; -Ljava/util/zip/ZipFile$ZipFileInflaterInputStream; -Ljava/util/zip/ZipFile$ZipFileInputStream; -Ljava/util/zip/ZipUtils; -Ljava/util/zip/ZStreamRef; -Ljavax/crypto/BadPaddingException; -Ljavax/crypto/IllegalBlockSizeException; -Ljavax/crypto/NoSuchPaddingException; -Ljavax/crypto/SecretKey; -Ljavax/microedition/khronos/egl/EGL; -Ljavax/microedition/khronos/egl/EGL10; -Ljavax/microedition/khronos/opengles/GL; -Ljavax/microedition/khronos/opengles/GL10; -Ljavax/microedition/khronos/opengles/GL10Ext; -Ljavax/microedition/khronos/opengles/GL11; -Ljavax/microedition/khronos/opengles/GL11Ext; -Ljavax/microedition/khronos/opengles/GL11ExtensionPack; -Ljavax/net/SocketFactory; -Ljavax/net/ssl/ExtendedSSLSession; -Ljavax/net/ssl/HostnameVerifier; -Ljavax/net/ssl/HttpsURLConnection; -Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder; -Ljavax/net/ssl/KeyManager; -Ljavax/net/ssl/KeyManagerFactory; -Ljavax/net/ssl/KeyManagerFactory$1; -Ljavax/net/ssl/KeyManagerFactorySpi; -Ljavax/net/ssl/SNIHostName; -Ljavax/net/ssl/SNIServerName; -Ljavax/net/ssl/SSLContext; -Ljavax/net/ssl/SSLContextSpi; -Ljavax/net/ssl/SSLException; -Ljavax/net/ssl/SSLParameters; -Ljavax/net/ssl/SSLPeerUnverifiedException; -Ljavax/net/ssl/SSLProtocolException; -Ljavax/net/ssl/SSLSession; -Ljavax/net/ssl/SSLSessionContext; -Ljavax/net/ssl/SSLSocket; -Ljavax/net/ssl/SSLSocketFactory; -Ljavax/net/ssl/SSLSocketFactory$1; -Ljavax/net/ssl/TrustManager; -Ljavax/net/ssl/TrustManagerFactory; -Ljavax/net/ssl/TrustManagerFactory$1; -Ljavax/net/ssl/TrustManagerFactorySpi; -Ljavax/net/ssl/X509ExtendedKeyManager; -Ljavax/net/ssl/X509ExtendedTrustManager; -Ljavax/net/ssl/X509KeyManager; -Ljavax/net/ssl/X509TrustManager; -Ljavax/security/auth/callback/UnsupportedCallbackException; -Ljavax/security/auth/Destroyable; -Ljavax/security/auth/x500/X500Principal; -Ljavax/security/cert/CertificateException; -Llibcore/icu/ICU; -Llibcore/icu/LocaleData; -Llibcore/icu/NativeConverter; -Llibcore/icu/TimeZoneNames; -Llibcore/icu/TimeZoneNames$1; -Llibcore/icu/TimeZoneNames$ZoneStringsCache; -Llibcore/internal/StringPool; -Llibcore/io/AsynchronousCloseMonitor; -Llibcore/io/BlockGuardOs; -Llibcore/io/BufferIterator; -Llibcore/io/ClassPathURLStreamHandler; -Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection; -Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1; -Llibcore/io/DropBox; -Llibcore/io/DropBox$DefaultReporter; -Llibcore/io/DropBox$Reporter; -Llibcore/io/ForwardingOs; -Llibcore/io/IoBridge; -Llibcore/io/IoTracker; -Llibcore/io/IoTracker$Mode; -Llibcore/io/IoUtils; -Llibcore/io/IoUtils$FileReader; -Llibcore/io/Libcore; -Llibcore/io/Memory; -Llibcore/io/MemoryMappedFile; -Llibcore/io/NioBufferIterator; -Llibcore/io/Os; -Llibcore/io/Posix; -Llibcore/io/Streams; -Llibcore/net/event/NetworkEventDispatcher; -Llibcore/net/NetworkSecurityPolicy; -Llibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy; -Llibcore/net/UriCodec; -Llibcore/reflect/AnnotatedElements; -Llibcore/reflect/AnnotationFactory; -Llibcore/reflect/AnnotationMember; -Llibcore/reflect/AnnotationMember$DefaultValues; -Llibcore/reflect/GenericSignatureParser; -Llibcore/reflect/InternalNames; -Llibcore/reflect/ListOfTypes; -Llibcore/reflect/Types; -Llibcore/util/BasicLruCache; -Llibcore/util/CharsetUtils; -Llibcore/util/CollectionUtils; -Llibcore/util/EmptyArray; -Llibcore/util/HexEncoding; -Llibcore/util/NativeAllocationRegistry; -Llibcore/util/NativeAllocationRegistry$CleanerRunner; -Llibcore/util/NativeAllocationRegistry$CleanerThunk; -Llibcore/util/Objects; -Llibcore/util/ZoneInfo; -Llibcore/util/ZoneInfo$CheckedArithmeticException; -Llibcore/util/ZoneInfoDB; -Llibcore/util/ZoneInfoDB$TzData; -Llibcore/util/ZoneInfoDB$TzData$1; -Llibcore/util/ZoneInfo$WallTime; -Lorg/apache/harmony/dalvik/ddmc/Chunk; -Lorg/apache/harmony/dalvik/ddmc/ChunkHandler; -Lorg/apache/harmony/dalvik/ddmc/DdmServer; -Lorg/apache/harmony/dalvik/ddmc/DdmVmInternal; -Lorg/apache/harmony/dalvik/NativeTestTarget; -Lorg/apache/harmony/luni/internal/util/TimezoneGetter; -Lorg/apache/harmony/xml/ExpatAttributes; -Lorg/apache/harmony/xml/ExpatParser; -Lorg/json/JSON; -Lorg/json/JSONArray; -Lorg/json/JSONException; -Lorg/json/JSONObject; -Lorg/json/JSONObject$1; -Lorg/json/JSONStringer; -Lorg/json/JSONStringer$Scope; -Lorg/json/JSONTokener; -Lorg/kxml2/io/KXmlParser; -Lorg/kxml2/io/KXmlParser$ValueContext; -Lorg/kxml2/io/KXmlSerializer; -Lorg/xmlpull/v1/XmlPullParser; -Lorg/xmlpull/v1/XmlPullParserException; -Lorg/xmlpull/v1/XmlPullParserFactory; -Lorg/xmlpull/v1/XmlSerializer; -Lorg/xml/sax/Attributes; -LS; -Lsun/invoke/util/BytecodeDescriptor; -Lsun/invoke/util/Wrapper; -Lsun/misc/Cleaner; -Lsun/misc/CompoundEnumeration; -Lsun/misc/FDBigInteger; -Lsun/misc/FloatingDecimal; -Lsun/misc/FloatingDecimal$1; -Lsun/misc/FloatingDecimal$ASCIIToBinaryBuffer; -Lsun/misc/FloatingDecimal$ASCIIToBinaryConverter; -Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer; -Lsun/misc/FloatingDecimal$BinaryToASCIIConverter; -Lsun/misc/FloatingDecimal$ExceptionalBinaryToASCIIBuffer; -Lsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer; -Lsun/misc/FormattedFloatingDecimal; -Lsun/misc/FormattedFloatingDecimal$1; -Lsun/misc/FormattedFloatingDecimal$Form; -Lsun/misc/IOUtils; -Lsun/misc/JavaIOFileDescriptorAccess; -Lsun/misc/SharedSecrets; -Lsun/misc/Unsafe; -Lsun/misc/Version; -Lsun/misc/VM; -Lsun/net/ConnectionResetException; -Lsun/net/NetHooks; -Lsun/net/ResourceManager; -Lsun/net/spi/DefaultProxySelector; -Lsun/net/spi/nameservice/NameService; -Lsun/net/util/IPAddressUtil; -Lsun/net/www/ParseUtil; -Lsun/net/www/protocol/file/Handler; -Lsun/net/www/protocol/jar/Handler; -Lsun/nio/ch/ChannelInputStream; -Lsun/nio/ch/DatagramChannelImpl; -Lsun/nio/ch/DatagramDispatcher; -Lsun/nio/ch/DirectBuffer; -Lsun/nio/ch/EPollArrayWrapper; -Lsun/nio/ch/FileChannelImpl; -Lsun/nio/ch/FileChannelImpl$Unmapper; -Lsun/nio/ch/FileDispatcher; -Lsun/nio/ch/FileDispatcherImpl; -Lsun/nio/ch/FileKey; -Lsun/nio/ch/Interruptible; -Lsun/nio/ch/IOStatus; -Lsun/nio/ch/IOUtil; -Lsun/nio/ch/NativeDispatcher; -Lsun/nio/ch/NativeThread; -Lsun/nio/ch/NativeThreadSet; -Lsun/nio/ch/Net; -Lsun/nio/ch/SelChImpl; -Lsun/nio/ch/ServerSocketChannelImpl; -Lsun/nio/ch/SocketChannelImpl; -Lsun/nio/ch/Util; -Lsun/nio/ch/Util$1; -Lsun/nio/ch/Util$BufferCache; -Lsun/nio/cs/ArrayEncoder; -Lsun/nio/cs/StreamDecoder; -Lsun/nio/cs/StreamEncoder; -Lsun/nio/fs/AbstractFileSystemProvider; -Lsun/nio/fs/AbstractPath; -Lsun/nio/fs/DefaultFileSystemProvider; -Lsun/nio/fs/LinuxFileSystem; -Lsun/nio/fs/LinuxFileSystemProvider; -Lsun/nio/fs/NativeBuffer; -Lsun/nio/fs/NativeBuffer$Deallocator; -Lsun/nio/fs/NativeBuffers; -Lsun/nio/fs/UnixChannelFactory; -Lsun/nio/fs/UnixChannelFactory$Flags; -Lsun/nio/fs/UnixConstants; -Lsun/nio/fs/UnixException; -Lsun/nio/fs/UnixFileAttributes; -Lsun/nio/fs/UnixFileModeAttribute; -Lsun/nio/fs/UnixFileStoreAttributes; -Lsun/nio/fs/UnixFileSystem; -Lsun/nio/fs/UnixFileSystemProvider; -Lsun/nio/fs/UnixMountEntry; -Lsun/nio/fs/UnixNativeDispatcher; -Lsun/nio/fs/UnixPath; -Lsun/nio/fs/Util; -Lsun/security/action/GetBooleanAction; -Lsun/security/action/GetPropertyAction; -Lsun/security/jca/GetInstance; -Lsun/security/jca/GetInstance$Instance; -Lsun/security/jca/ProviderConfig; -Lsun/security/jca/ProviderConfig$2; -Lsun/security/jca/ProviderList; -Lsun/security/jca/ProviderList$1; -Lsun/security/jca/ProviderList$2; -Lsun/security/jca/ProviderList$3; -Lsun/security/jca/ProviderList$ServiceList; -Lsun/security/jca/ProviderList$ServiceList$1; -Lsun/security/jca/Providers; -Lsun/security/jca/ServiceId; -Lsun/security/pkcs/PKCS9Attribute; -Lsun/security/pkcs/SignerInfo; -Lsun/security/provider/certpath/AdaptableX509CertSelector; -Lsun/security/provider/certpath/AlgorithmChecker; -Lsun/security/provider/certpath/BasicChecker; -Lsun/security/provider/certpath/CertPathHelper; -Lsun/security/provider/certpath/ConstraintsChecker; -Lsun/security/provider/certpath/KeyChecker; -Lsun/security/provider/certpath/PKIX; -Lsun/security/provider/certpath/PKIXCertPathValidator; -Lsun/security/provider/certpath/PKIXMasterCertPathValidator; -Lsun/security/provider/certpath/PKIX$ValidatorParams; -Lsun/security/provider/certpath/PolicyChecker; -Lsun/security/provider/certpath/PolicyNodeImpl; -Lsun/security/provider/CertPathProvider; -Lsun/security/provider/X509Factory; -Lsun/security/util/AbstractAlgorithmConstraints; -Lsun/security/util/AlgorithmDecomposer; -Lsun/security/util/BitArray; -Lsun/security/util/ByteArrayLexOrder; -Lsun/security/util/ByteArrayTagOrder; -Lsun/security/util/Cache; -Lsun/security/util/Cache$EqualByteArray; -Lsun/security/util/Debug; -Lsun/security/util/DerEncoder; -Lsun/security/util/DerIndefLenConverter; -Lsun/security/util/DerInputBuffer; -Lsun/security/util/DerInputStream; -Lsun/security/util/DerOutputStream; -Lsun/security/util/DerValue; -Lsun/security/util/DisabledAlgorithmConstraints; -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint; -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraints; -Lsun/security/util/KeyUtil; -Lsun/security/util/Length; -Lsun/security/util/MemoryCache; -Lsun/security/util/MemoryCache$CacheEntry; -Lsun/security/util/MemoryCache$SoftCacheEntry; -Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/AccessDescription; -Lsun/security/x509/AlgorithmId; -Lsun/security/x509/AuthorityInfoAccessExtension; -Lsun/security/x509/AuthorityKeyIdentifierExtension; -Lsun/security/x509/AVA; -Lsun/security/x509/AVAKeyword; -Lsun/security/x509/BasicConstraintsExtension; -Lsun/security/x509/CertAttrSet; -Lsun/security/x509/CertificateAlgorithmId; -Lsun/security/x509/CertificateExtensions; -Lsun/security/x509/CertificateIssuerExtension; -Lsun/security/x509/CertificatePoliciesExtension; -Lsun/security/x509/CertificatePolicyId; -Lsun/security/x509/CertificateSerialNumber; -Lsun/security/x509/CertificateValidity; -Lsun/security/x509/CertificateVersion; -Lsun/security/x509/CertificateX509Key; -Lsun/security/x509/CRLDistributionPointsExtension; -Lsun/security/x509/CRLNumberExtension; -Lsun/security/x509/CRLReasonCodeExtension; -Lsun/security/x509/DeltaCRLIndicatorExtension; -Lsun/security/x509/DistributionPoint; -Lsun/security/x509/DNSName; -Lsun/security/x509/ExtendedKeyUsageExtension; -Lsun/security/x509/Extension; -Lsun/security/x509/FreshestCRLExtension; -Lsun/security/x509/GeneralName; -Lsun/security/x509/GeneralNameInterface; -Lsun/security/x509/GeneralNames; -Lsun/security/x509/InhibitAnyPolicyExtension; -Lsun/security/x509/IssuerAlternativeNameExtension; -Lsun/security/x509/IssuingDistributionPointExtension; -Lsun/security/x509/KeyIdentifier; -Lsun/security/x509/KeyUsageExtension; -Lsun/security/x509/NameConstraintsExtension; -Lsun/security/x509/NetscapeCertTypeExtension; -Lsun/security/x509/OCSPNoCheckExtension; -Lsun/security/x509/OIDMap; -Lsun/security/x509/OIDMap$OIDInfo; -Lsun/security/x509/PKIXExtensions; -Lsun/security/x509/PolicyConstraintsExtension; -Lsun/security/x509/PolicyInformation; -Lsun/security/x509/PolicyMappingsExtension; -Lsun/security/x509/PrivateKeyUsageExtension; -Lsun/security/x509/RDN; -Lsun/security/x509/SerialNumber; -Lsun/security/x509/SubjectAlternativeNameExtension; -Lsun/security/x509/SubjectInfoAccessExtension; -Lsun/security/x509/SubjectKeyIdentifierExtension; -Lsun/security/x509/URIName; -Lsun/security/x509/X500Name; -Lsun/security/x509/X500Name$1; -Lsun/security/x509/X509AttributeName; -Lsun/security/x509/X509CertImpl; -Lsun/security/x509/X509CertInfo; -Lsun/security/x509/X509Key; -Lsun/util/calendar/AbstractCalendar; -Lsun/util/calendar/BaseCalendar; -Lsun/util/calendar/BaseCalendar$Date; -Lsun/util/calendar/CalendarDate; -Lsun/util/calendar/CalendarSystem; -Lsun/util/calendar/CalendarUtils; -Lsun/util/calendar/Gregorian; -Lsun/util/calendar/Gregorian$Date; -Lsun/util/calendar/JulianCalendar; -Lsun/util/calendar/LocalGregorianCalendar; -Lsun/util/locale/BaseLocale; -Lsun/util/locale/BaseLocale$Cache; -Lsun/util/locale/BaseLocale$Key; -Lsun/util/locale/InternalLocaleBuilder; -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar; -Lsun/util/locale/LanguageTag; -Lsun/util/locale/LocaleObjectCache; -Lsun/util/locale/LocaleObjectCache$CacheEntry; -Lsun/util/locale/LocaleSyntaxException; -Lsun/util/locale/LocaleUtils; -Lsun/util/locale/ParseStatus; -Lsun/util/locale/StringTokenIterator; -Lsun/util/logging/LoggingProxy; -Lsun/util/logging/LoggingSupport; -Lsun/util/logging/LoggingSupport$1; -Lsun/util/logging/PlatformLogger; -Lsun/util/logging/PlatformLogger$1; -Lsun/util/logging/PlatformLogger$Level; -LV; -LZ; diff --git a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java index ef347fd8d451bcf5a3cc861f178c489e55e15ebd..0b4d61fb783e0964b3774cc2c120f8990cc74d10 100644 --- a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java +++ b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java @@ -19,6 +19,7 @@ import static android.app.Notification.GROUP_ALERT_ALL; import static android.app.Notification.GROUP_ALERT_CHILDREN; import static android.app.Notification.GROUP_ALERT_SUMMARY; import static android.app.NotificationManager.IMPORTANCE_HIGH; +import static android.app.NotificationManager.IMPORTANCE_MIN; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; @@ -30,7 +31,12 @@ import static org.mockito.Matchers.anyObject; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.timeout; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.Notification; @@ -52,9 +58,13 @@ import android.provider.Settings; import android.service.notification.StatusBarNotification; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; +import android.util.Slog; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; +import android.view.accessibility.IAccessibilityManager; +import android.view.accessibility.IAccessibilityManagerClient; +import com.android.internal.util.IntPair; import com.android.server.lights.Light; import org.junit.Before; @@ -64,6 +74,8 @@ import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; @SmallTest @RunWith(AndroidJUnit4.class) @@ -73,8 +85,12 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { @Mock Vibrator mVibrator; @Mock android.media.IRingtonePlayer mRingtonePlayer; @Mock Light mLight; - @Mock Handler mHandler; - @Mock NotificationUsageStats mUsageStats; + @Mock + NotificationManagerService.WorkerHandler mHandler; + @Mock + NotificationUsageStats mUsageStats; + @Mock + IAccessibilityManager mAccessibilityService; private NotificationManagerService mService; private String mPkg = "com.android.server.notification"; @@ -106,21 +122,25 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { private static final int MAX_VIBRATION_DELAY = 1000; @Before - public void setUp() { - // Magic to allow spying package-private methods on system classes - System.setProperty("dexmaker.share_classloader", "true"); - + public void setUp() throws Exception { MockitoAnnotations.initMocks(this); when(mAudioManager.isAudioFocusExclusive()).thenReturn(false); when(mAudioManager.getRingtonePlayer()).thenReturn(mRingtonePlayer); when(mAudioManager.getStreamVolume(anyInt())).thenReturn(10); when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL); - when(mUsageStats.isAlertRateLimited(any())).thenReturn(false); + long serviceReturnValue = IntPair.of( + AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED, + AccessibilityEvent.TYPES_ALL_MASK); + when(mAccessibilityService.addClient(any(), anyInt())).thenReturn(serviceReturnValue); + AccessibilityManager accessibilityManager = + new AccessibilityManager(Handler.getMain(), mAccessibilityService, 0); + verify(mAccessibilityService).addClient(any(IAccessibilityManagerClient.class), anyInt()); + assertTrue(accessibilityManager.isEnabled()); + mService = spy(new NotificationManagerService(getContext())); - doNothing().when(mService).sendAccessibilityEvent((Notification) any(), anyString()); mService.setAudioManager(mAudioManager); mService.setVibrator(mVibrator); mService.setSystemReady(true); @@ -129,6 +149,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { mService.setScreenOn(false); mService.setFallbackVibrationPattern(FALLBACK_VIBRATION_PATTERN); mService.setUsageStats(mUsageStats); + mService.setAccessibilityManager(accessibilityManager); } // @@ -358,16 +379,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { eq(CUSTOM_LIGHT_COLOR), anyInt(), eq(CUSTOM_LIGHT_ON), eq(CUSTOM_LIGHT_OFF)); } - private void verifySendAccessibilityEvent() { - verify(mService, times(1)) - .sendAccessibilityEvent((Notification) anyObject(), anyString()); - } - - private void verifyNoAccessibilityEvent() { - verify(mService, never()) - .sendAccessibilityEvent((Notification) anyObject(), anyString()); - } - // // Tests // @@ -390,7 +401,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyBeepLooped(); verifyNeverVibrate(); - verifySendAccessibilityEvent(); + verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt()); } @Test @@ -400,7 +411,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { mService.buzzBeepBlinkLocked(r); verifyBeep(); - verifySendAccessibilityEvent(); } @Test @@ -421,7 +431,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyNeverBeep(); verifyNeverVibrate(); - verifyNoAccessibilityEvent(); } @Test @@ -433,7 +442,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyNeverBeep(); verifyNeverVibrate(); - verifyNoAccessibilityEvent(); } @Test @@ -448,6 +456,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { r.isUpdate = true; mService.buzzBeepBlinkLocked(r); verifyBeepLooped(); + verify(mAccessibilityService, times(2)).sendAccessibilityEvent(any(), anyInt()); } @Test @@ -459,12 +468,11 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { // set up internal state mService.buzzBeepBlinkLocked(r); Mockito.reset(mRingtonePlayer); - Mockito.reset(mService); // update should not beep mService.buzzBeepBlinkLocked(s); verifyNeverBeep(); - verifyNoAccessibilityEvent(); + verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt()); } @Test @@ -551,6 +559,21 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyStopAudio(); } + @Test + public void testInCallNotification() throws Exception { + NotificationRecord r = getBeepyNotification(); + + // set up internal state + mService.buzzBeepBlinkLocked(r); + Mockito.reset(mRingtonePlayer); + + mService.mInCall = true; + mService.buzzBeepBlinkLocked(r); + + verify(mService, times(1)).playInCallNotification(); + verifyNeverBeep(); // doesn't play normal beep + } + @Test public void testNoDemoteSoundToVibrateIfVibrateGiven() throws Exception { NotificationRecord r = getBuzzyBeepyNotification(); @@ -558,6 +581,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { // the phone is quiet when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE); + when(mAudioManager.getStreamVolume(anyInt())).thenReturn(0); mService.buzzBeepBlinkLocked(r); @@ -567,6 +591,22 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { eq(effect), (AudioAttributes) anyObject()); } + @Test + public void testNoDemoteSoundToVibrateIfNonNotificationStream() throws Exception { + NotificationRecord r = getBeepyNotification(); + assertTrue(r.getSound() != null); + assertNull(r.getVibration()); + + // the phone is quiet + when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE); + when(mAudioManager.getStreamVolume(anyInt())).thenReturn(1); + + mService.buzzBeepBlinkLocked(r); + + verifyNeverVibrate(); + verifyBeepLooped(); + } + @Test public void testDemoteSoundToVibrate() throws Exception { NotificationRecord r = getBeepyNotification(); @@ -575,6 +615,7 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { // the phone is quiet when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE); + when(mAudioManager.getStreamVolume(anyInt())).thenReturn(0); mService.buzzBeepBlinkLocked(r); @@ -607,7 +648,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyNeverBeep(); verifyVibrate(); - verifySendAccessibilityEvent(); } @Test @@ -706,12 +746,10 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { // set up internal state mService.buzzBeepBlinkLocked(r); Mockito.reset(mVibrator); - Mockito.reset(mService); // update should not beep mService.buzzBeepBlinkLocked(s); verifyNeverVibrate(); - verifyNoAccessibilityEvent(); } @Test @@ -827,7 +865,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { mService.addNotification(r); mService.buzzBeepBlinkLocked(r); - verifyNeverBeep(); } @@ -855,7 +892,6 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { summary.getNotification().flags |= Notification.FLAG_GROUP_SUMMARY; mService.buzzBeepBlinkLocked(summary); - verify(mUsageStats, never()).isAlertRateLimited(any()); } @@ -874,6 +910,30 @@ public class BuzzBeepBlinkTest extends NotificationTestCase { verifyNeverBeep(); } + @Test + public void testA11yMinInitialPost() throws Exception { + NotificationRecord r = getQuietNotification(); + r.setImportance(IMPORTANCE_MIN, ""); + mService.buzzBeepBlinkLocked(r); + verify(mAccessibilityService, never()).sendAccessibilityEvent(any(), anyInt()); + } + + @Test + public void testA11yQuietInitialPost() throws Exception { + NotificationRecord r = getQuietNotification(); + mService.buzzBeepBlinkLocked(r); + verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt()); + } + + @Test + public void testA11yQuietUpdate() throws Exception { + NotificationRecord r = getQuietNotification(); + mService.buzzBeepBlinkLocked(r); + r.isUpdate = true; + mService.buzzBeepBlinkLocked(r); + verify(mAccessibilityService, times(1)).sendAccessibilityEvent(any(), anyInt()); + } + static class VibrateRepeatMatcher implements ArgumentMatcher { private final int mRepeatIndex; diff --git a/services/tests/notification/src/com/android/server/notification/GroupHelperTest.java b/services/tests/notification/src/com/android/server/notification/GroupHelperTest.java index 8dd177921022d883db1ed791004c1669c868317d..f75c648f3c3e5f3349147fa408a9234a9f37ddde 100644 --- a/services/tests/notification/src/com/android/server/notification/GroupHelperTest.java +++ b/services/tests/notification/src/com/android/server/notification/GroupHelperTest.java @@ -15,6 +15,9 @@ */ package com.android.server.notification; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; + import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; @@ -29,18 +32,16 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import android.app.AlarmManager; import android.app.Notification; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.app.PendingIntent; import android.os.UserHandle; import android.service.notification.StatusBarNotification; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; @SmallTest @RunWith(AndroidJUnit4.class) @@ -77,7 +78,8 @@ public class GroupHelperTest extends NotificationTestCase { public void testNoGroup_postingUnderLimit() throws Exception { final String pkg = "package"; for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT - 1; i++) { - mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM)); + mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), + false); } verify(mCallback, never()).addAutoGroupSummary( eq(UserHandle.USER_SYSTEM), eq(pkg), anyString()); @@ -91,10 +93,11 @@ public class GroupHelperTest extends NotificationTestCase { final String pkg = "package"; final String pkg2 = "package2"; for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT - 1; i++) { - mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM)); + mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), + false); } mGroupHelper.onNotificationPosted( - getSbn(pkg2, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.SYSTEM)); + getSbn(pkg2, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.SYSTEM), false); verify(mCallback, never()).addAutoGroupSummary( eq(UserHandle.USER_SYSTEM), eq(pkg), anyString()); verify(mCallback, never()).addAutoGroup(anyString()); @@ -106,10 +109,12 @@ public class GroupHelperTest extends NotificationTestCase { public void testNoGroup_multiUser() throws Exception { final String pkg = "package"; for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT - 1; i++) { - mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM)); + mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), + false); } mGroupHelper.onNotificationPosted( - getSbn(pkg, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.ALL)); + getSbn(pkg, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.ALL), + false); verify(mCallback, never()).addAutoGroupSummary(anyInt(), eq(pkg), anyString()); verify(mCallback, never()).addAutoGroup(anyString()); verify(mCallback, never()).removeAutoGroup(anyString()); @@ -120,10 +125,12 @@ public class GroupHelperTest extends NotificationTestCase { public void testNoGroup_someAreGrouped() throws Exception { final String pkg = "package"; for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT - 1; i++) { - mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM)); + mGroupHelper.onNotificationPosted( + getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), false); } mGroupHelper.onNotificationPosted( - getSbn(pkg, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.SYSTEM, "a")); + getSbn(pkg, GroupHelper.AUTOGROUP_AT_COUNT, "four", UserHandle.SYSTEM, "a"), + false); verify(mCallback, never()).addAutoGroupSummary( eq(UserHandle.USER_SYSTEM), eq(pkg), anyString()); verify(mCallback, never()).addAutoGroup(anyString()); @@ -136,7 +143,8 @@ public class GroupHelperTest extends NotificationTestCase { public void testPostingOverLimit() throws Exception { final String pkg = "package"; for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT; i++) { - mGroupHelper.onNotificationPosted(getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM)); + mGroupHelper.onNotificationPosted( + getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM), false); } verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString()); verify(mCallback, times(GroupHelper.AUTOGROUP_AT_COUNT)).addAutoGroup(anyString()); @@ -151,7 +159,7 @@ public class GroupHelperTest extends NotificationTestCase { for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT; i++) { final StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM); posted.add(sbn); - mGroupHelper.onNotificationPosted(sbn); + mGroupHelper.onNotificationPosted(sbn, false); } verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString()); verify(mCallback, times(GroupHelper.AUTOGROUP_AT_COUNT)).addAutoGroup(anyString()); @@ -178,7 +186,7 @@ public class GroupHelperTest extends NotificationTestCase { for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT; i++) { final StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM); posted.add(sbn); - mGroupHelper.onNotificationPosted(sbn); + mGroupHelper.onNotificationPosted(sbn, false); } verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString()); verify(mCallback, times(GroupHelper.AUTOGROUP_AT_COUNT)).addAutoGroup(anyString()); @@ -190,7 +198,7 @@ public class GroupHelperTest extends NotificationTestCase { for (i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT - 2; i++) { final StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM, "app group"); - mGroupHelper.onNotificationPosted(sbn); + mGroupHelper.onNotificationPosted(sbn, false); } verify(mCallback, times(GroupHelper.AUTOGROUP_AT_COUNT - 2)).removeAutoGroup(anyString()); verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString()); @@ -199,9 +207,48 @@ public class GroupHelperTest extends NotificationTestCase { for (; i < GroupHelper.AUTOGROUP_AT_COUNT; i++) { final StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM, "app group"); - mGroupHelper.onNotificationPosted(sbn); + mGroupHelper.onNotificationPosted(sbn, false); } verify(mCallback, times(2)).removeAutoGroup(anyString()); verify(mCallback, times(1)).removeAutoGroupSummary(anyInt(), anyString()); } + + @Test + public void testNewNotificationsAddedToAutogroup_ifOriginalNotificationsCanceled() + throws Exception { + final String pkg = "package"; + List posted = new ArrayList<>(); + for (int i = 0; i < GroupHelper.AUTOGROUP_AT_COUNT; i++) { + final StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM); + posted.add(sbn); + mGroupHelper.onNotificationPosted(sbn, false); + } + verify(mCallback, times(1)).addAutoGroupSummary(anyInt(), eq(pkg), anyString()); + verify(mCallback, times(GroupHelper.AUTOGROUP_AT_COUNT)).addAutoGroup(anyString()); + verify(mCallback, never()).removeAutoGroup(anyString()); + verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString()); + Mockito.reset(mCallback); + + for (int i = posted.size() - 2; i >= 0; i--) { + mGroupHelper.onNotificationRemoved(posted.remove(i)); + } + verify(mCallback, never()).removeAutoGroup(anyString()); + verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString()); + Mockito.reset(mCallback); + + // only one child remains + Map> ungroupedForUser = + mGroupHelper.mUngroupedNotifications.get(UserHandle.USER_SYSTEM); + assertNotNull(ungroupedForUser); + assertEquals(1, ungroupedForUser.get(pkg).size()); + + // Add new notification; it should be autogrouped even though the total count is + // < AUTOGROUP_AT_COUNT + final StatusBarNotification sbn = getSbn(pkg, 5, String.valueOf(5), UserHandle.SYSTEM); + posted.add(sbn); + mGroupHelper.onNotificationPosted(sbn, true); + verify(mCallback, times(posted.size())).addAutoGroup(anyString()); + verify(mCallback, never()).removeAutoGroup(anyString()); + verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString()); + } } diff --git a/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a4b9b256aa075f3eda4d2b612ce1eec4471bd684 --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/ManagedServicesTest.java @@ -0,0 +1,803 @@ +/* + * 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.notification; + +import static com.android.server.notification.ManagedServices.APPROVAL_BY_COMPONENT; +import static com.android.server.notification.ManagedServices.APPROVAL_BY_PACKAGE; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.IPackageManager; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.content.pm.ServiceInfo; +import android.content.pm.UserInfo; +import android.os.Build; +import android.os.IBinder; +import android.os.IInterface; +import android.os.UserHandle; +import android.os.UserManager; +import android.provider.Settings; +import android.text.TextUtils; +import android.util.ArrayMap; +import android.util.Xml; + +import com.android.internal.util.FastXmlSerializer; + +import com.google.android.collect.Lists; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlSerializer; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.List; + +public class ManagedServicesTest extends NotificationTestCase { + + @Mock + private IPackageManager mIpm; + @Mock + private PackageManager mPm; + @Mock + private UserManager mUm; + @Mock + private ManagedServices.UserProfiles mUserProfiles; + Object mLock = new Object(); + + UserInfo mZero = new UserInfo(0, "zero", 0); + UserInfo mTen = new UserInfo(10, "ten", 0); + + private static final String SETTING = "setting"; + private static final String SECONDARY_SETTING = "secondary_setting"; + + private ArrayMap mExpectedPrimaryPackages; + private ArrayMap mExpectedPrimaryComponentNames; + private ArrayMap mExpectedSecondaryPackages; + private ArrayMap mExpectedSecondaryComponentNames; + + // type : user : list of approved + private ArrayMap> mExpectedPrimary = new ArrayMap<>(); + private ArrayMap> mExpectedSecondary = new ArrayMap<>(); + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + + getContext().setMockPackageManager(mPm); + getContext().addMockSystemService(Context.USER_SERVICE, mUm); + + List users = new ArrayList<>(); + users.add(mZero); + users.add(mTen); + users.add(new UserInfo(11, "11", 0)); + users.add(new UserInfo(12, "12", 0)); + for (UserInfo user : users) { + when(mUm.getUserInfo(eq(user.id))).thenReturn(user); + } + when(mUm.getUsers()).thenReturn(users); + when(mUserProfiles.getCurrentProfileIds()).thenReturn(new int[] {0, 10, 11, 12}); + + mExpectedPrimaryPackages = new ArrayMap<>(); + mExpectedPrimaryPackages.put(0, "this.is.a.package.name:another.package"); + mExpectedPrimaryPackages.put(10, "this.is.another.package"); + mExpectedPrimaryPackages.put(11, ""); + mExpectedPrimaryPackages.put(12, "bananas!"); + mExpectedPrimaryComponentNames = new ArrayMap<>(); + mExpectedPrimaryComponentNames.put(0, "this.is.a.package.name/Ba:another.package/B1"); + mExpectedPrimaryComponentNames.put(10, "this.is.another.package/M1"); + mExpectedPrimaryComponentNames.put(11, ""); + mExpectedPrimaryComponentNames.put(12, "bananas!/Bananas!"); + mExpectedPrimary.put(APPROVAL_BY_PACKAGE, mExpectedPrimaryPackages); + mExpectedPrimary.put(APPROVAL_BY_COMPONENT, mExpectedPrimaryComponentNames); + + mExpectedSecondaryComponentNames = new ArrayMap<>(); + mExpectedSecondaryComponentNames.put(0, "secondary/component.Name"); + mExpectedSecondaryComponentNames.put(10, + "this.is.another.package/with.Component:component/2:package/component2"); + mExpectedSecondaryPackages = new ArrayMap<>(); + mExpectedSecondaryPackages.put(0, "secondary"); + mExpectedSecondaryPackages.put(10, + "this.is.another.package:component:package"); + mExpectedSecondary.put(APPROVAL_BY_PACKAGE, mExpectedSecondaryPackages); + mExpectedSecondary.put(APPROVAL_BY_COMPONENT, mExpectedSecondaryComponentNames); + } + + @Test + public void testBackupAndRestore_migration() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + + for (int userId : mExpectedPrimary.get(approvalLevel).keySet()) { + service.onSettingRestored( + service.getConfig().secureSettingName, + mExpectedPrimary.get(approvalLevel).get(userId), + Build.VERSION_CODES.O, userId); + } + verifyExpectedApprovedEntries(service, true); + + for (int userId : mExpectedSecondary.get(approvalLevel).keySet()) { + service.onSettingRestored(service.getConfig().secondarySettingName, + mExpectedSecondary.get(approvalLevel).get(userId), Build.VERSION_CODES.O, + userId); + } + verifyExpectedApprovedEntries(service); + } + } + + @Test + public void testBackupAndRestore_migration_preO() throws Exception { + ArrayMap backupPrimaryPackages = new ArrayMap<>(); + backupPrimaryPackages.put(0, "backup.0:backup:0a"); + backupPrimaryPackages.put(10, "10.backup"); + backupPrimaryPackages.put(11, "eleven"); + backupPrimaryPackages.put(12, ""); + ArrayMap backupPrimaryComponentNames = new ArrayMap<>(); + backupPrimaryComponentNames.put(0, "backup.first/whatever:a/b"); + backupPrimaryComponentNames.put(10, "again/M1"); + backupPrimaryComponentNames.put(11, "orange/youglad:itisnot/banana"); + backupPrimaryComponentNames.put(12, ""); + ArrayMap> backupPrimary = new ArrayMap<>(); + backupPrimary.put(APPROVAL_BY_PACKAGE, backupPrimaryPackages); + backupPrimary.put(APPROVAL_BY_COMPONENT, backupPrimaryComponentNames); + + ArrayMap backupSecondaryComponentNames = new ArrayMap<>(); + backupSecondaryComponentNames.put(0, "secondary.1/component.Name"); + backupSecondaryComponentNames.put(10, + "this.is.another.package.backup/with.Component:component.backup/2"); + ArrayMap backupSecondaryPackages = new ArrayMap<>(); + backupSecondaryPackages.put(0, ""); + backupSecondaryPackages.put(10, + "this.is.another.package.backup:package.backup"); + ArrayMap> backupSecondary = new ArrayMap<>(); + backupSecondary.put(APPROVAL_BY_PACKAGE, backupSecondaryPackages); + backupSecondary.put(APPROVAL_BY_COMPONENT, backupSecondaryComponentNames); + + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + + // not an expected flow but a way to get data into the settings + for (int userId : mExpectedPrimary.get(approvalLevel).keySet()) { + service.onSettingRestored( + service.getConfig().secureSettingName, + mExpectedPrimary.get(approvalLevel).get(userId), + Build.VERSION_CODES.O, userId); + } + + for (int userId : mExpectedSecondary.get(approvalLevel).keySet()) { + service.onSettingRestored(service.getConfig().secondarySettingName, + mExpectedSecondary.get(approvalLevel).get(userId), Build.VERSION_CODES.O, + userId); + } + + // actual test + for (int userId : backupPrimary.get(approvalLevel).keySet()) { + service.onSettingRestored( + service.getConfig().secureSettingName, + backupPrimary.get(approvalLevel).get(userId), + Build.VERSION_CODES.N_MR1, userId); + } + verifyExpectedApprovedEntries(service, true); + + for (int userId : backupSecondary.get(approvalLevel).keySet()) { + service.onSettingRestored(service.getConfig().secondarySettingName, + backupSecondary.get(approvalLevel).get(userId), + Build.VERSION_CODES.N_MR1, userId); + } + verifyExpectedApprovedEntries(service); + verifyExpectedApprovedEntries(service, backupPrimary.get(approvalLevel)); + verifyExpectedApprovedEntries(service, backupSecondary.get(approvalLevel)); + } + } + + @Test + public void testReadXml_migrationFromSettings() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + + // approved services aren't in xml + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(new BufferedInputStream(new ByteArrayInputStream(new byte[]{})), + null); + writeExpectedValuesToSettings(approvalLevel); + + service.migrateToXml(); + + verifyExpectedApprovedEntries(service); + } + } + + @Test + public void testReadXml() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + + loadXml(service); + + verifyExpectedApprovedEntries(service); + + int[] invalidUsers = new int[] {98, 99}; + for (int invalidUser : invalidUsers) { + assertFalse("service type " + service.mApprovalLevel + ":" + + invalidUser + " is allowed for user " + invalidUser, + service.isPackageOrComponentAllowed( + String.valueOf(invalidUser), invalidUser)); + } + } + } + + @Test + public void testWriteXml_trimsMissingServices() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + loadXml(service); + + // remove missing + mExpectedPrimaryPackages.put(0, "another.package"); + mExpectedPrimaryPackages.remove(12); + mExpectedPrimaryComponentNames.put(0, "another.package/B1"); + mExpectedPrimaryComponentNames.remove(12); + mExpectedSecondaryPackages.put(10, "this.is.another.package:component"); + mExpectedSecondaryComponentNames.put( + 10, "this.is.another.package/with.Component:component/2"); + + for (UserInfo userInfo : mUm.getUsers()) { + List entriesExpectedToHaveServices = new ArrayList<>(); + if (mExpectedPrimary.get(approvalLevel).containsKey(userInfo.id)) { + for (String packageOrComponent : + mExpectedPrimary.get(approvalLevel).get(userInfo.id).split(":")) { + if (!TextUtils.isEmpty(packageOrComponent)) { + entriesExpectedToHaveServices.add( + service.getPackageName(packageOrComponent)); + } + } + } + if (mExpectedSecondary.get(approvalLevel).containsKey(userInfo.id)) { + for (String packageOrComponent : + mExpectedSecondary.get(approvalLevel).get(userInfo.id).split(":")) { + if (!TextUtils.isEmpty(packageOrComponent)) { + entriesExpectedToHaveServices.add( + service.getPackageName(packageOrComponent)); + } + } + } + addExpectedServices(service, entriesExpectedToHaveServices, userInfo.id); + } + + XmlSerializer serializer = new FastXmlSerializer(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + serializer.setOutput(new BufferedOutputStream(baos), "utf-8"); + serializer.startDocument(null, true); + service.writeXml(serializer, true); + serializer.endDocument(); + serializer.flush(); + + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(new BufferedInputStream( + new ByteArrayInputStream(baos.toByteArray())), null); + parser.nextTag(); + service.readXml(parser); + + verifyExpectedApprovedEntries(service); + assertFalse(service.isPackageOrComponentAllowed("this.is.a.package.name", 0)); + assertFalse(service.isPackageOrComponentAllowed("bananas!", 12)); + assertFalse(service.isPackageOrComponentAllowed("package/component2", 10)); + } + } + + @Test + public void testWriteXml_writesSetting() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + loadXml(service); + + XmlSerializer serializer = new FastXmlSerializer(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + serializer.setOutput(new BufferedOutputStream(baos), "utf-8"); + serializer.startDocument(null, true); + service.writeXml(serializer, false); + serializer.endDocument(); + serializer.flush(); + + for (int userId : mUserProfiles.getCurrentProfileIds()) { + List expected = + stringToList(mExpectedPrimary.get(approvalLevel).get(userId)); + List actual = stringToList(Settings.Secure.getStringForUser( + getContext().getContentResolver(), + service.getConfig().secureSettingName, userId)); + assertContentsInAnyOrder(actual, expected); + } + } + } + + @Test + public void rebindServices_onlyBindsExactMatchesIfComponent() throws Exception { + // If the primary and secondary lists contain component names, only those components within + // the package should be matched + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, + ManagedServices.APPROVAL_BY_COMPONENT); + + List packages = new ArrayList<>(); + packages.add("package"); + packages.add("anotherPackage"); + addExpectedServices(service, packages, 0); + + // only 2 components are approved per package + mExpectedPrimaryComponentNames.clear(); + mExpectedPrimaryComponentNames.put(0, "package/C1:package/C2"); + mExpectedSecondaryComponentNames.clear(); + mExpectedSecondaryComponentNames.put(0, "anotherPackage/C1:anotherPackage/C2"); + + loadXml(service); + + // verify the 2 components per package are enabled (bound) + verifyExpectedBoundEntries(service, true); + verifyExpectedBoundEntries(service, false); + + // verify the last component per package is not enabled/we don't try to bind to it + for (String pkg : packages) { + ComponentName unapprovedAdditionalComponent = + ComponentName.unflattenFromString(pkg + "/C3"); + assertFalse( + service.isComponentEnabledForCurrentProfiles( + unapprovedAdditionalComponent)); + verify(mIpm, never()).getServiceInfo( + eq(unapprovedAdditionalComponent), anyInt(), anyInt()); + } + } + + @Test + public void rebindServices_bindsEverythingInAPackage() throws Exception { + // If the primary and secondary lists contain packages, all components within those packages + // should be bound + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, mIpm, + APPROVAL_BY_PACKAGE); + + List packages = new ArrayList<>(); + packages.add("package"); + packages.add("packagea"); + addExpectedServices(service, packages, 0); + + // 2 approved packages + mExpectedPrimaryPackages.clear(); + mExpectedPrimaryPackages.put(0, "package"); + mExpectedSecondaryPackages.clear(); + mExpectedSecondaryPackages.put(0, "packagea"); + + loadXml(service); + + // verify the 3 components per package are enabled (bound) + verifyExpectedBoundEntries(service, true); + verifyExpectedBoundEntries(service, false); + } + + @Test + public void testPackageUninstall_packageNoLongerInApprovedList() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + writeExpectedValuesToSettings(approvalLevel); + service.migrateToXml(); + + mExpectedPrimaryPackages.put(0, "another.package"); + mExpectedPrimaryComponentNames.put(0, "another.package/B1"); + service.onPackagesChanged(true, new String[]{"this.is.a.package.name"}, new int[]{103}); + + verifyExpectedApprovedEntries(service); + } + } + + @Test + public void testPackageUninstall_componentNoLongerInApprovedList() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + writeExpectedValuesToSettings(approvalLevel); + service.migrateToXml(); + + mExpectedSecondaryComponentNames.put(10, "component/2"); + mExpectedSecondaryPackages.put(10, "component"); + service.onPackagesChanged(true, new String[]{"this.is.another.package"}, new int[]{ + UserHandle.PER_USER_RANGE + 1}); + + verifyExpectedApprovedEntries(service); + } + } + + @Test + public void testSetPackageOrComponentEnabled() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + ArrayMap> expectedEnabled = new ArrayMap<>(); + expectedEnabled.put(0, + Lists.newArrayList(new String[]{"package/Comp", "package/C2", "again/M4"})); + expectedEnabled.put(10, + Lists.newArrayList(new String[]{"user10package/B", "user10/Component", + "user10package1/K", "user10.3/Component", "user10package2/L", + "user10.4/Component"})); + + for (int userId : expectedEnabled.keySet()) { + ArrayList expectedForUser = expectedEnabled.get(userId); + for (int i = 0; i < expectedForUser.size(); i++) { + boolean primary = i % 2 == 0; + service.setPackageOrComponentEnabled(expectedForUser.get(i), userId, primary, + true); + } + } + + // verify everything added is approved + for (int userId : expectedEnabled.keySet()) { + ArrayList expectedForUser = expectedEnabled.get(userId); + for (int i = 0; i < expectedForUser.size(); i++) { + String verifyValue = (approvalLevel == APPROVAL_BY_COMPONENT) + ? expectedForUser.get(i) + : service.getPackageName(expectedForUser.get(i)); + assertTrue("Not allowed: user: " + userId + " entry: " + verifyValue + + " for approval level " + approvalLevel, + service.isPackageOrComponentAllowed(verifyValue, userId)); + } + } + + ArrayMap> expectedNoAccess = new ArrayMap<>(); + for (int userId : expectedEnabled.keySet()) { + ArrayList expectedForUser = expectedEnabled.get(userId); + for (int i = expectedForUser.size() - 1; i >= 0; i--) { + ArrayList removed = new ArrayList<>(); + if (i % 3 == 0) { + String revokeAccessFor = expectedForUser.remove(i); + removed.add(revokeAccessFor); + service.setPackageOrComponentEnabled( + revokeAccessFor, userId, i % 2 == 0, false); + } + expectedNoAccess.put(userId, removed); + } + } + + // verify everything still there is approved + for (int userId : expectedEnabled.keySet()) { + ArrayList expectedForUser = expectedEnabled.get(userId); + for (int i = 0; i < expectedForUser.size(); i++) { + String verifyValue = (approvalLevel == APPROVAL_BY_COMPONENT) + ? expectedForUser.get(i) + : service.getPackageName(expectedForUser.get(i)); + assertTrue("Not allowed: user: " + userId + " entry: " + verifyValue, + service.isPackageOrComponentAllowed(verifyValue, userId)); + } + } + // verify everything removed isn't + for (int userId : expectedNoAccess.keySet()) { + ArrayList notExpectedForUser = expectedNoAccess.get(userId); + for (int i = 0; i < notExpectedForUser.size(); i++) { + assertFalse( + "Is allowed: user: " + userId + " entry: " + notExpectedForUser.get(i), + service.isPackageOrComponentAllowed(notExpectedForUser.get(i), userId)); + } + } + } + } + + @Test + public void testGetAllowedPackages() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + loadXml(service); + + List allowedPackagesForUser0 = new ArrayList<>(); + allowedPackagesForUser0.add("this.is.a.package.name"); + allowedPackagesForUser0.add("another.package"); + allowedPackagesForUser0.add("secondary"); + + List actual = service.getAllowedPackages(0); + assertEquals(3, actual.size()); + for (String pkg : allowedPackagesForUser0) { + assertTrue(actual.contains(pkg)); + } + + List allowedPackagesForUser10 = new ArrayList<>(); + allowedPackagesForUser10.add("this.is.another.package"); + allowedPackagesForUser10.add("package"); + allowedPackagesForUser10.add("this.is.another.package"); + allowedPackagesForUser10.add("component"); + + actual = service.getAllowedPackages(10); + assertEquals(4, actual.size()); + for (String pkg : allowedPackagesForUser10) { + assertTrue(actual.contains(pkg)); + } + } + } + + @Test + public void testGetAllowedComponents() throws Exception { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, mIpm, + APPROVAL_BY_COMPONENT); + loadXml(service); + + List expected = new ArrayList<>(); + expected.add(ComponentName.unflattenFromString("this.is.another.package/M1")); + expected.add(ComponentName.unflattenFromString("this.is.another.package/with.Component")); + expected.add(ComponentName.unflattenFromString("component/2")); + expected.add(ComponentName.unflattenFromString("package/component2")); + + List actual = service.getAllowedComponents(10); + + assertContentsInAnyOrder(expected, actual); + + assertEquals(expected.size(), actual.size()); + + for (ComponentName cn : expected) { + assertTrue("Actual missing " + cn, actual.contains(cn)); + } + + for (ComponentName cn : actual) { + assertTrue("Actual contains extra " + cn, expected.contains(cn)); + } + } + + @Test + public void testGetAllowedComponents_approvalByPackage() throws Exception { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, mIpm, + APPROVAL_BY_PACKAGE); + loadXml(service); + + assertEquals(0, service.getAllowedComponents(10).size()); + } + + @Test + public void testOnUserRemoved() throws Exception { + for (int approvalLevel : new int[] {APPROVAL_BY_COMPONENT, APPROVAL_BY_PACKAGE}) { + ManagedServices service = new TestManagedServices(getContext(), mLock, mUserProfiles, + mIpm, approvalLevel); + loadXml(service); + + ArrayMap verifyMap = mExpectedPrimary.get(service.mApprovalLevel); + String user0 = verifyMap.remove(0); + verifyMap = mExpectedSecondary.get(service.mApprovalLevel); + user0 = user0 + ":" + verifyMap.remove(0); + + service.onUserRemoved(0); + + for (String verifyValue : user0.split(":")) { + if (!TextUtils.isEmpty(verifyValue)) { + assertFalse("service type " + service.mApprovalLevel + ":" + verifyValue + + " is still allowed", + service.isPackageOrComponentAllowed(verifyValue, 0)); + } + } + + verifyExpectedApprovedEntries(service); + } + } + + private void loadXml(ManagedServices service) throws Exception { + final StringBuffer xml = new StringBuffer(); + xml.append("<" + service.getConfig().xmlTag + ">\n"); + for (int userId : mExpectedPrimary.get(service.mApprovalLevel).keySet()) { + xml.append(getXmlEntry( + mExpectedPrimary.get(service.mApprovalLevel).get(userId), userId, true)); + } + for (int userId : mExpectedSecondary.get(service.mApprovalLevel).keySet()) { + xml.append(getXmlEntry( + mExpectedSecondary.get(service.mApprovalLevel).get(userId), userId, false)); + } + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"99\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"true\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"99\" />\n"); + xml.append("<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"98\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"false\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"98\" />\n"); + xml.append(""); + + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(new BufferedInputStream( + new ByteArrayInputStream(xml.toString().getBytes())), null); + parser.nextTag(); + service.readXml(parser); + } + + private void addExpectedServices(final ManagedServices service, final List packages, + int userId) { + when(mPm.queryIntentServicesAsUser(any(), anyInt(), eq(userId))). + thenAnswer(new Answer>() { + @Override + public List answer(InvocationOnMock invocationOnMock) + throws Throwable { + Object[] args = invocationOnMock.getArguments(); + Intent invocationIntent = (Intent) args[0]; + if (invocationIntent != null) { + if (invocationIntent.getAction().equals( + service.getConfig().serviceInterface) + && packages.contains(invocationIntent.getPackage())) { + List dummyServices = new ArrayList<>(); + for (int i = 1; i <= 3; i ++) { + ResolveInfo resolveInfo = new ResolveInfo(); + ServiceInfo serviceInfo = new ServiceInfo(); + serviceInfo.packageName = invocationIntent.getPackage(); + serviceInfo.name = "C"+i; + serviceInfo.permission = service.getConfig().bindPermission; + resolveInfo.serviceInfo = serviceInfo; + dummyServices.add(resolveInfo); + } + return dummyServices; + } + } + return new ArrayList<>(); + } + }); + } + + private List stringToList(String list) { + if (list == null) { + list = ""; + } + return new ArrayList<>(Lists.newArrayList(list.split( + ManagedServices.ENABLED_SERVICES_SEPARATOR))); + } + + private void assertContentsInAnyOrder(List expected, List actual) { + assertEquals(expected.size(), actual.size()); + + for (Object o : expected) { + assertTrue("Actual missing " + o, actual.contains(o)); + } + + for (Object o : actual) { + assertTrue("Actual contains extra " + o, expected.contains(o)); + } + } + + private void verifyExpectedBoundEntries(ManagedServices service, boolean primary) + throws Exception { + ArrayMap verifyMap = primary ? mExpectedPrimary.get(service.mApprovalLevel) + : mExpectedSecondary.get(service.mApprovalLevel); + for (int userId : verifyMap.keySet()) { + for (String packageOrComponent : verifyMap.get(userId).split(":")) { + if (!TextUtils.isEmpty(packageOrComponent)) { + if (service.mApprovalLevel == APPROVAL_BY_PACKAGE) { + assertTrue(packageOrComponent, + service.isComponentEnabledForPackage(packageOrComponent)); + for (int i = 1; i <= 3; i ++) { + ComponentName componentName = ComponentName.unflattenFromString( + packageOrComponent +"/C" + i); + assertTrue(service.isComponentEnabledForCurrentProfiles( + componentName)); + verify(mIpm, times(1)).getServiceInfo( + eq(componentName), anyInt(), anyInt()); + } + } else { + ComponentName componentName = + ComponentName.unflattenFromString(packageOrComponent); + assertTrue(service.isComponentEnabledForCurrentProfiles(componentName)); + verify(mIpm, times(1)).getServiceInfo( + eq(componentName), anyInt(), anyInt()); + } + } + } + } + } + + private void verifyExpectedApprovedEntries(ManagedServices service) { + verifyExpectedApprovedEntries(service, true); + verifyExpectedApprovedEntries(service, false); + } + + private void verifyExpectedApprovedEntries(ManagedServices service, boolean primary) { + ArrayMap verifyMap = primary + ? mExpectedPrimary.get(service.mApprovalLevel) + : mExpectedSecondary.get(service.mApprovalLevel); + verifyExpectedApprovedEntries(service, verifyMap); + } + + private void verifyExpectedApprovedEntries(ManagedServices service, + ArrayMap verifyMap) { + for (int userId : verifyMap.keySet()) { + for (String verifyValue : verifyMap.get(userId).split(":")) { + if (!TextUtils.isEmpty(verifyValue)) { + assertTrue("service type " + service.mApprovalLevel + ":" + + verifyValue + " is not allowed for user " + userId, + service.isPackageOrComponentAllowed(verifyValue, userId)); + } + } + } + } + + private void writeExpectedValuesToSettings(int approvalLevel) { + for (int userId : mExpectedPrimary.get(approvalLevel).keySet()) { + Settings.Secure.putStringForUser(getContext().getContentResolver(), SETTING, + mExpectedPrimary.get(approvalLevel).get(userId), userId); + } + for (int userId : mExpectedSecondary.get(approvalLevel).keySet()) { + Settings.Secure.putStringForUser(getContext().getContentResolver(), SECONDARY_SETTING, + mExpectedSecondary.get(approvalLevel).get(userId), userId); + } + } + + private String getXmlEntry(String approved, int userId, boolean isPrimary) { + return "<" + ManagedServices.TAG_MANAGED_SERVICES + " " + + ManagedServices.ATT_USER_ID + "=\"" + userId +"\" " + + ManagedServices.ATT_IS_PRIMARY + "=\"" + isPrimary +"\" " + + ManagedServices.ATT_APPROVED_LIST + "=\"" + approved +"\" " + + "/>\n"; + } + + class TestManagedServices extends ManagedServices { + + public TestManagedServices(Context context, Object mutex, UserProfiles userProfiles, + IPackageManager pm, int approvedServiceType) { + super(context, mutex, userProfiles, pm); + mApprovalLevel = approvedServiceType; + } + + @Override + protected Config getConfig() { + final Config c = new Config(); + c.xmlTag = "test"; + c.secureSettingName = SETTING; + c.secondarySettingName = SECONDARY_SETTING; + c.bindPermission = "permission"; + c.serviceInterface = "serviceInterface"; + return c; + } + + @Override + protected IInterface asInterface(IBinder binder) { + return null; + } + + @Override + protected boolean checkType(IInterface service) { + return false; + } + + @Override + protected void onServiceAdded(ManagedServiceInfo info) { + + } + } +} diff --git a/services/tests/notification/src/com/android/server/notification/NotificationAdjustmentExtractorTest.java b/services/tests/notification/src/com/android/server/notification/NotificationAdjustmentExtractorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e52764450ee5a19571a0b3adfeb34ea1be5fd5ee --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/NotificationAdjustmentExtractorTest.java @@ -0,0 +1,115 @@ +/* + * 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.notification; + +import static android.app.NotificationManager.IMPORTANCE_LOW; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNull; +import static junit.framework.Assert.assertTrue; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.os.Bundle; +import android.os.UserHandle; +import android.service.notification.Adjustment; +import android.service.notification.SnoozeCriterion; +import android.service.notification.StatusBarNotification; + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Objects; + +public class NotificationAdjustmentExtractorTest extends NotificationTestCase { + + @Test + public void testExtractsAdjustment() { + NotificationAdjustmentExtractor extractor = new NotificationAdjustmentExtractor(); + + NotificationRecord r = generateRecord(); + + Bundle signals = new Bundle(); + signals.putString(Adjustment.KEY_GROUP_KEY, GroupHelper.AUTOGROUP_KEY); + ArrayList snoozeCriteria = new ArrayList<>(); + snoozeCriteria.add(new SnoozeCriterion("n", "n", "n")); + signals.putParcelableArrayList(Adjustment.KEY_SNOOZE_CRITERIA, snoozeCriteria); + ArrayList people = new ArrayList<>(); + people.add("you"); + signals.putStringArrayList(Adjustment.KEY_PEOPLE, people); + Adjustment adjustment = new Adjustment("pkg", r.getKey(), signals, "", 0); + r.addAdjustment(adjustment); + + assertFalse(r.getGroupKey().contains(GroupHelper.AUTOGROUP_KEY)); + assertFalse(Objects.equals(people, r.getPeopleOverride())); + assertFalse(Objects.equals(snoozeCriteria, r.getSnoozeCriteria())); + + assertNull(extractor.process(r)); + + assertTrue(r.getGroupKey().contains(GroupHelper.AUTOGROUP_KEY)); + assertEquals(people, r.getPeopleOverride()); + assertEquals(snoozeCriteria, r.getSnoozeCriteria()); + } + + @Test + public void testExtractsAdjustments() { + NotificationAdjustmentExtractor extractor = new NotificationAdjustmentExtractor(); + + NotificationRecord r = generateRecord(); + + Bundle pSignals = new Bundle(); + ArrayList people = new ArrayList<>(); + people.add("you"); + pSignals.putStringArrayList(Adjustment.KEY_PEOPLE, people); + Adjustment pAdjustment = new Adjustment("pkg", r.getKey(), pSignals, "", 0); + r.addAdjustment(pAdjustment); + + Bundle sSignals = new Bundle(); + ArrayList snoozeCriteria = new ArrayList<>(); + snoozeCriteria.add(new SnoozeCriterion("n", "n", "n")); + sSignals.putParcelableArrayList(Adjustment.KEY_SNOOZE_CRITERIA, snoozeCriteria); + Adjustment sAdjustment = new Adjustment("pkg", r.getKey(), sSignals, "", 0); + r.addAdjustment(sAdjustment); + + Bundle gSignals = new Bundle(); + gSignals.putString(Adjustment.KEY_GROUP_KEY, GroupHelper.AUTOGROUP_KEY); + Adjustment gAdjustment = new Adjustment("pkg", r.getKey(), gSignals, "", 0); + r.addAdjustment(gAdjustment); + + assertFalse(r.getGroupKey().contains(GroupHelper.AUTOGROUP_KEY)); + assertFalse(Objects.equals(people, r.getPeopleOverride())); + assertFalse(Objects.equals(snoozeCriteria, r.getSnoozeCriteria())); + + assertNull(extractor.process(r)); + + assertTrue(r.getGroupKey().contains(GroupHelper.AUTOGROUP_KEY)); + assertEquals(people, r.getPeopleOverride()); + assertEquals(snoozeCriteria, r.getSnoozeCriteria()); + } + + private NotificationRecord generateRecord() { + NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_LOW); + final Notification.Builder builder = new Notification.Builder(getContext()) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon); + Notification n = builder.build(); + StatusBarNotification sbn = new StatusBarNotification("", "", 0, "", 0, + 0, n, UserHandle.ALL, null, System.currentTimeMillis()); + return new NotificationRecord(getContext(), sbn, channel); + } +} diff --git a/services/tests/notification/src/com/android/server/notification/NotificationChannelExtractorTest.java b/services/tests/notification/src/com/android/server/notification/NotificationChannelExtractorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d75213c3e7731bde2840b9cb49f5165150fd3853 --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/NotificationChannelExtractorTest.java @@ -0,0 +1,76 @@ +/* + * 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.notification; + +import static android.app.NotificationManager.IMPORTANCE_DEFAULT; +import static android.app.NotificationManager.IMPORTANCE_HIGH; +import static android.app.NotificationManager.IMPORTANCE_LOW; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.when; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.PendingIntent; +import android.content.Intent; +import android.os.UserHandle; +import android.service.notification.StatusBarNotification; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +public class NotificationChannelExtractorTest extends NotificationTestCase { + + @Mock RankingConfig mConfig; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testExtractsUpdatedChannel() { + NotificationChannelExtractor extractor = new NotificationChannelExtractor(); + extractor.setConfig(mConfig); + + NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_LOW); + final Notification.Builder builder = new Notification.Builder(getContext()) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon); + Notification n = builder.build(); + StatusBarNotification sbn = new StatusBarNotification("", "", 0, "", 0, + 0, n, UserHandle.ALL, null, System.currentTimeMillis()); + NotificationRecord r = new NotificationRecord(getContext(), sbn, channel); + + NotificationChannel updatedChannel = + new NotificationChannel("a", "", IMPORTANCE_HIGH); + when(mConfig.getNotificationChannel(any(), anyInt(), eq("a"), eq(false))) + .thenReturn(updatedChannel); + + assertNull(extractor.process(r)); + assertEquals(updatedChannel, r.getChannel()); + } + +} diff --git a/services/tests/notification/src/com/android/server/notification/NotificationIntrusivenessExtractorTest.java b/services/tests/notification/src/com/android/server/notification/NotificationIntrusivenessExtractorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..85852f90c2815cbbdd08d43dbbcd4dd68c36116d --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/NotificationIntrusivenessExtractorTest.java @@ -0,0 +1,90 @@ +/* + * 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.notification; + +import static android.app.NotificationManager.IMPORTANCE_DEFAULT; +import static android.app.NotificationManager.IMPORTANCE_LOW; + +import static com.android.server.notification.NotificationIntrusivenessExtractor.HANG_TIME_MS; + +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.PendingIntent; +import android.content.Intent; +import android.os.UserHandle; +import android.service.notification.StatusBarNotification; + +import org.junit.Test; + +public class NotificationIntrusivenessExtractorTest extends NotificationTestCase { + + @Test + public void testNonIntrusive() { + NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_LOW); + final Notification.Builder builder = new Notification.Builder(getContext()) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon); + + Notification n = builder.build(); + StatusBarNotification sbn = new StatusBarNotification("", "", 0, "", 0, + 0, n, UserHandle.ALL, null, System.currentTimeMillis()); + NotificationRecord r = new NotificationRecord(getContext(), sbn, channel); + + assertNull(new NotificationIntrusivenessExtractor().process(r)); + } + + @Test + public void testIntrusive_fillScreen() { + NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT); + final Notification.Builder builder = new Notification.Builder(getContext()) + .setContentTitle("foo") + .setFullScreenIntent(PendingIntent.getActivity( + getContext(), 0, new Intent(""), 0), true) + .setSmallIcon(android.R.drawable.sym_def_app_icon); + + Notification n = builder.build(); + StatusBarNotification sbn = new StatusBarNotification("", "", 0, "", 0, + 0, n, UserHandle.ALL, null, + System.currentTimeMillis()); + NotificationRecord r = new NotificationRecord(getContext(), sbn, channel); + + assertNotNull(new NotificationIntrusivenessExtractor().process(r)); + } + + @Test + public void testOldNotificationsNotIntrusive() { + NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT); + final Notification.Builder builder = new Notification.Builder(getContext()) + .setContentTitle("foo") + .setFullScreenIntent(PendingIntent.getActivity( + getContext(), 0, new Intent(""), 0), true) + .setSmallIcon(android.R.drawable.sym_def_app_icon); + + Notification n = builder.build(); + StatusBarNotification sbn = new StatusBarNotification("", "", 0, "", 0, + 0, n, UserHandle.ALL, null, + System.currentTimeMillis() - HANG_TIME_MS); + + NotificationRecord r = new NotificationRecord(getContext(), sbn, channel); + assertNull(new NotificationIntrusivenessExtractor().process(r)); + assertFalse(r.isRecentlyIntrusive()); + } +} diff --git a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java index 38016971af34f4c0ae1a4a4a7dd42596c36caa71..7ea42daa617b53a6129f50cc9913959d08052151 100644 --- a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -16,12 +16,15 @@ package com.android.server.notification; +import static android.app.NotificationManager.IMPORTANCE_HIGH; import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; import static junit.framework.Assert.fail; @@ -31,6 +34,7 @@ import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; @@ -38,6 +42,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.ActivityManager; import android.app.INotificationManager; import android.app.Notification; import android.app.NotificationChannel; @@ -46,6 +51,7 @@ import android.app.NotificationManager; import android.companion.ICompanionDeviceManager; import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; @@ -53,6 +59,7 @@ import android.content.pm.ParceledListSlice; import android.graphics.Color; import android.media.AudioManager; import android.os.Binder; +import android.os.Build; import android.os.Process; import android.os.UserHandle; import android.provider.Settings.Secure; @@ -62,19 +69,31 @@ import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; +import android.util.ArrayMap; +import android.util.AtomicFile; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import com.android.server.lights.Light; +import com.android.server.lights.LightsManager; +import com.android.server.notification.NotificationManagerService.NotificationAssistants; +import com.android.server.notification.NotificationManagerService.NotificationListeners; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.mockito.stubbing.Answer; -import com.android.server.lights.Light; -import com.android.server.lights.LightsManager; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; @SmallTest @RunWith(AndroidTestingRunner.class) @@ -94,17 +113,26 @@ public class NotificationManagerServiceTest extends NotificationTestCase { private TestableLooper mTestableLooper; @Mock private RankingHelper mRankingHelper; + AtomicFile mPolicyFile; + File mFile; @Mock private NotificationUsageStats mUsageStats; @Mock private AudioManager mAudioManager; + @Mock + ActivityManager mActivityManager; + NotificationManagerService.WorkerHandler mHandler; + private NotificationChannel mTestNotificationChannel = new NotificationChannel( TEST_CHANNEL_ID, TEST_CHANNEL_ID, NotificationManager.IMPORTANCE_DEFAULT); @Mock - private NotificationManagerService.NotificationListeners mNotificationListeners; + private NotificationListeners mListeners; + @Mock private NotificationAssistants mAssistants; + @Mock private ConditionProviders mConditionProviders; private ManagedServices.ManagedServiceInfo mListener; @Mock private ICompanionDeviceManager mCompanionMgr; @Mock SnoozeHelper mSnoozeHelper; + @Mock GroupHelper mGroupHelper; // Use a Testable subclass so we can simulate calls from the system without failing. private static class TestableNotificationManagerService extends NotificationManagerService { @@ -137,6 +165,9 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mNotificationManagerService = new TestableNotificationManagerService(mContext); + // Use this testable looper. + mTestableLooper = TestableLooper.get(this); + mHandler = mNotificationManagerService.new WorkerHandler(mTestableLooper.getLooper()); // MockPackageManager - default returns ApplicationInfo with matching calling UID final ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.uid = mUid; @@ -147,22 +178,44 @@ public class NotificationManagerServiceTest extends NotificationTestCase { final LightsManager mockLightsManager = mock(LightsManager.class); when(mockLightsManager.getLight(anyInt())).thenReturn(mock(Light.class)); when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL); - // Use this testable looper. - mTestableLooper = TestableLooper.get(this); - mListener = mNotificationListeners.new ManagedServiceInfo( + // write to a test file; the system file isn't readable from tests + mFile = new File(mContext.getCacheDir(), "test.xml"); + mFile.createNewFile(); + final String preupgradeXml = ""; + mPolicyFile = new AtomicFile(mFile); + FileOutputStream fos = mPolicyFile.startWrite(); + fos.write(preupgradeXml.getBytes()); + mPolicyFile.finishWrite(fos); + FileInputStream fStream = new FileInputStream(mFile); + + // Setup managed services + mListener = mListeners.new ManagedServiceInfo( null, new ComponentName(PKG, "test_class"), mUid, true, null, 0); - when(mNotificationListeners.checkServiceTokenLocked(any())).thenReturn(mListener); + when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); + ManagedServices.Config listenerConfig = new ManagedServices.Config(); + listenerConfig.xmlTag = NotificationListeners.TAG_ENABLED_NOTIFICATION_LISTENERS; + when(mListeners.getConfig()).thenReturn(listenerConfig); + ManagedServices.Config assistantConfig = new ManagedServices.Config(); + assistantConfig.xmlTag = NotificationAssistants.TAG_ENABLED_NOTIFICATION_ASSISTANTS; + when(mAssistants.getConfig()).thenReturn(assistantConfig); + ManagedServices.Config dndConfig = new ManagedServices.Config(); + dndConfig.xmlTag = ConditionProviders.TAG_ENABLED_DND_APPS; + when(mConditionProviders.getConfig()).thenReturn(dndConfig); + try { - mNotificationManagerService.init(mTestableLooper.getLooper(), mPackageManager, - mPackageManagerClient, mockLightsManager, mNotificationListeners, - mCompanionMgr, mSnoozeHelper, mUsageStats); + mNotificationManagerService.init(mTestableLooper.getLooper(), + mPackageManager, mPackageManagerClient, mockLightsManager, + mListeners, mAssistants, mConditionProviders, + mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager, + mGroupHelper); } catch (SecurityException e) { if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { throw e; } } mNotificationManagerService.setAudioManager(mAudioManager); + // Tests call directly into the Binder. mBinderService = mNotificationManagerService.getBinderService(); mInternalService = mNotificationManagerService.getInternalService(); @@ -171,6 +224,11 @@ public class NotificationManagerServiceTest extends NotificationTestCase { PKG, new ParceledListSlice(Arrays.asList(mTestNotificationChannel))); } + @After + public void tearDown() throws Exception { + mFile.delete(); + } + public void waitForIdle() throws Exception { mTestableLooper.processAllMessages(); } @@ -187,6 +245,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { nb.build(), new UserHandle(mUid), null, 0); return new NotificationRecord(mContext, sbn, channel); } + private NotificationRecord generateNotificationRecord(NotificationChannel channel) { return generateNotificationRecord(channel, null); } @@ -207,6 +266,43 @@ public class NotificationManagerServiceTest extends NotificationTestCase { return new NotificationRecord(mContext, sbn, channel); } + private Map getSignalExtractorSideEffects() { + Map answers = new ArrayMap<>(); + + answers.put("override group key", invocationOnMock -> { + ((NotificationRecord) invocationOnMock.getArguments()[0]) + .setOverrideGroupKey("bananas"); + return null; + }); + answers.put("override people", invocationOnMock -> { + ((NotificationRecord) invocationOnMock.getArguments()[0]) + .setPeopleOverride(new ArrayList<>()); + return null; + }); + answers.put("snooze criteria", invocationOnMock -> { + ((NotificationRecord) invocationOnMock.getArguments()[0]) + .setSnoozeCriteria(new ArrayList<>()); + return null; + }); + answers.put("notification channel", invocationOnMock -> { + ((NotificationRecord) invocationOnMock.getArguments()[0]) + .updateNotificationChannel(new NotificationChannel("a", "", IMPORTANCE_LOW)); + return null; + }); + answers.put("badging", invocationOnMock -> { + NotificationRecord r = (NotificationRecord) invocationOnMock.getArguments()[0]; + r.setShowBadge(!r.canShowBadge()); + return null; + }); + answers.put("package visibility", invocationOnMock -> { + ((NotificationRecord) invocationOnMock.getArguments()[0]).setPackageVisibilityOverride( + Notification.VISIBILITY_SECRET); + return null; + }); + + return answers; + } + @Test public void testCreateNotificationChannels_SingleChannel() throws Exception { final NotificationChannel channel = @@ -241,6 +337,42 @@ public class NotificationManagerServiceTest extends NotificationTestCase { assertTrue(mBinderService.getNotificationChannel(PKG, "id2") != null); } + @Test + public void testCreateNotificationChannels_SecondCreateDoesNotChangeImportance() + throws Exception { + final NotificationChannel channel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(channel))); + + // Recreating the channel doesn't throw, but ignores importance. + final NotificationChannel dupeChannel = + new NotificationChannel("id", "name", IMPORTANCE_HIGH); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(dupeChannel))); + final NotificationChannel createdChannel = + mBinderService.getNotificationChannel(PKG, "id"); + assertEquals(NotificationManager.IMPORTANCE_DEFAULT, createdChannel.getImportance()); + } + + @Test + public void testCreateNotificationChannels_SecondCreateAllowedToDowngradeImportance() + throws Exception { + final NotificationChannel channel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(channel))); + + // Recreating with a lower importance is allowed to modify the channel. + final NotificationChannel dupeChannel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_LOW); + mBinderService.createNotificationChannels(PKG, + new ParceledListSlice(Arrays.asList(dupeChannel))); + final NotificationChannel createdChannel = + mBinderService.getNotificationChannel(PKG, "id"); + assertEquals(NotificationManager.IMPORTANCE_LOW, createdChannel.getImportance()); + } + @Test public void testCreateNotificationChannels_CannotDowngradeImportanceIfAlreadyUpdated() throws Exception { @@ -251,7 +383,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // The user modifies importance directly, can no longer be changed by the app. final NotificationChannel updatedChannel = - new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + new NotificationChannel("id", "name", IMPORTANCE_HIGH); mBinderService.updateNotificationChannelForPackage(PKG, mUid, updatedChannel); // Recreating with a lower importance leaves channel unchanged. @@ -261,7 +393,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { new ParceledListSlice(Arrays.asList(dupeChannel))); final NotificationChannel createdChannel = mBinderService.getNotificationChannel(PKG, "id"); - assertEquals(NotificationManager.IMPORTANCE_HIGH, createdChannel.getImportance()); + assertEquals(IMPORTANCE_HIGH, createdChannel.getImportance()); } @Test @@ -270,7 +402,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { final NotificationChannel channel1 = new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); final NotificationChannel channel2 = - new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_HIGH); + new NotificationChannel("id", "name", IMPORTANCE_HIGH); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(channel1, channel2))); final NotificationChannel createdChannel = @@ -283,7 +415,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(true); NotificationChannel channel = new NotificationChannel("id", "name", - NotificationManager.IMPORTANCE_HIGH); + IMPORTANCE_HIGH); NotificationRecord r = generateNotificationRecord(channel); assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats)); verify(mUsageStats, times(1)).registerSuspendedByAdmin(eq(r)); @@ -294,11 +426,68 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); NotificationChannel channel = new NotificationChannel("id", "name", - NotificationManager.IMPORTANCE_HIGH); - channel.setImportance(NotificationManager.IMPORTANCE_NONE); + NotificationManager.IMPORTANCE_NONE); NotificationRecord r = generateNotificationRecord(channel); assertTrue(mNotificationManagerService.isBlocked(r, mUsageStats)); verify(mUsageStats, times(1)).registerBlocked(eq(r)); + + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + } + + @Test + public void testEnqueuedBlockedNotifications_appBlockedChannelForegroundService() + throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + NotificationChannel channel = new NotificationChannel("blocked", "name", + NotificationManager.IMPORTANCE_NONE); + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(1, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + assertEquals(IMPORTANCE_LOW, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); + } + + @Test + public void testEnqueuedBlockedNotifications_userBlockedChannelForegroundService() + throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + NotificationChannel channel = + new NotificationChannel("blockedbyuser", "name", IMPORTANCE_HIGH); + mBinderService.createNotificationChannels( + PKG, new ParceledListSlice(Arrays.asList(channel))); + + NotificationChannel update = + new NotificationChannel("blockedbyuser", "name", IMPORTANCE_NONE); + mBinderService.updateNotificationChannelForPackage(PKG, mUid, update); + waitForIdle(); + assertEquals(IMPORTANCE_NONE, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); + + final StatusBarNotification sbn = generateNotificationRecord(channel).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey())); + assertEquals(IMPORTANCE_NONE, + mBinderService.getNotificationChannel(PKG, channel.getId()).getImportance()); } @Test @@ -314,6 +503,21 @@ public class NotificationManagerServiceTest extends NotificationTestCase { assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); } + @Test + public void testEnqueuedBlockedNotifications_blockedAppForegroundService() throws Exception { + when(mPackageManager.isPackageSuspendedForUser(anyString(), anyInt())).thenReturn(false); + + mBinderService.setNotificationsEnabledForPackage(PKG, mUid, false); + + final StatusBarNotification sbn = generateNotificationRecord(null).sbn; + sbn.getNotification().flags |= Notification.FLAG_FOREGROUND_SERVICE; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(0, mBinderService.getActiveNotifications(sbn.getPackageName()).length); + assertNull(mNotificationManagerService.getNotificationRecord(sbn.getKey())); + } + @Test public void testEnqueueNotificationWithTag_PopulatesGetActiveNotifications() throws Exception { mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0, @@ -509,6 +713,93 @@ public class NotificationManagerServiceTest extends NotificationTestCase { assertEquals(1, mNotificationManagerService.getNotificationRecordCount()); } + @Test + public void testAppInitiatedCancelAllNotifications_CancelsNoClearFlag() throws Exception { + final StatusBarNotification sbn = generateNotificationRecord(null).sbn; + sbn.getNotification().flags |= Notification.FLAG_NO_CLEAR; + mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + mBinderService.cancelAllNotifications(PKG, sbn.getUserId()); + waitForIdle(); + StatusBarNotification[] notifs = + mBinderService.getActiveNotifications(sbn.getPackageName()); + assertEquals(0, notifs.length); + } + + @Test + public void testCancelAllNotifications_CancelsNoClearFlag() throws Exception { + final NotificationRecord notif = generateNotificationRecord( + mTestNotificationChannel, 1, "group", true); + notif.getNotification().flags |= Notification.FLAG_NO_CLEAR; + mNotificationManagerService.addNotification(notif); + mNotificationManagerService.cancelAllNotificationsInt(mUid, 0, PKG, null, 0, 0, true, + notif.getUserId(), 0, null); + waitForIdle(); + StatusBarNotification[] notifs = + mBinderService.getActiveNotifications(notif.sbn.getPackageName()); + assertEquals(0, notifs.length); + } + + @Test + public void testUserInitiatedCancelAllOnClearAll_NoClearFlag() throws Exception { + final NotificationRecord notif = generateNotificationRecord( + mTestNotificationChannel, 1, "group", true); + notif.getNotification().flags |= Notification.FLAG_NO_CLEAR; + mNotificationManagerService.addNotification(notif); + + mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), + notif.getUserId()); + waitForIdle(); + StatusBarNotification[] notifs = + mBinderService.getActiveNotifications(notif.sbn.getPackageName()); + assertEquals(1, notifs.length); + } + + @Test + public void testCancelAllCancelNotificationsFromListener_NoClearFlag() throws Exception { + final NotificationRecord parent = generateNotificationRecord( + mTestNotificationChannel, 1, "group", true); + final NotificationRecord child = generateNotificationRecord( + mTestNotificationChannel, 2, "group", false); + final NotificationRecord child2 = generateNotificationRecord( + mTestNotificationChannel, 3, "group", false); + child2.getNotification().flags |= Notification.FLAG_NO_CLEAR; + final NotificationRecord newGroup = generateNotificationRecord( + mTestNotificationChannel, 4, "group2", false); + mNotificationManagerService.addNotification(parent); + mNotificationManagerService.addNotification(child); + mNotificationManagerService.addNotification(child2); + mNotificationManagerService.addNotification(newGroup); + mNotificationManagerService.getBinderService().cancelNotificationsFromListener(null, null); + waitForIdle(); + StatusBarNotification[] notifs = + mBinderService.getActiveNotifications(parent.sbn.getPackageName()); + assertEquals(1, notifs.length); + } + + @Test + public void testUserInitiatedCancelAllWithGroup_NoClearFlag() throws Exception { + final NotificationRecord parent = generateNotificationRecord( + mTestNotificationChannel, 1, "group", true); + final NotificationRecord child = generateNotificationRecord( + mTestNotificationChannel, 2, "group", false); + final NotificationRecord child2 = generateNotificationRecord( + mTestNotificationChannel, 3, "group", false); + child2.getNotification().flags |= Notification.FLAG_NO_CLEAR; + final NotificationRecord newGroup = generateNotificationRecord( + mTestNotificationChannel, 4, "group2", false); + mNotificationManagerService.addNotification(parent); + mNotificationManagerService.addNotification(child); + mNotificationManagerService.addNotification(child2); + mNotificationManagerService.addNotification(newGroup); + mNotificationManagerService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(), + parent.getUserId()); + waitForIdle(); + StatusBarNotification[] notifs = + mBinderService.getActiveNotifications(parent.sbn.getPackageName()); + assertEquals(1, notifs.length); + } + @Test public void testRemoveForegroundServiceFlag_ImmediatelyAfterEnqueue() throws Exception { final StatusBarNotification sbn = generateNotificationRecord(null).sbn; @@ -584,7 +875,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mNotificationManagerService.setRankingHelper(mRankingHelper); when(mRankingHelper.getNotificationChannel( anyString(), anyInt(), eq("foo"), anyBoolean())).thenReturn( - new NotificationChannel("foo", "foo", NotificationManager.IMPORTANCE_HIGH)); + new NotificationChannel("foo", "foo", IMPORTANCE_HIGH)); Notification.TvExtender tv = new Notification.TvExtender().setChannelId("foo"); mBinderService.enqueueNotificationWithTag(PKG, "opPkg", "tag", 0, @@ -622,13 +913,13 @@ public class NotificationManagerServiceTest extends NotificationTestCase { eq(channel2.getId()), anyBoolean())) .thenReturn(channel2); - reset(mNotificationListeners); + reset(mListeners); mBinderService.createNotificationChannels(PKG, new ParceledListSlice(Arrays.asList(mTestNotificationChannel, channel2))); - verify(mNotificationListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); - verify(mNotificationListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(channel2), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); } @@ -642,13 +933,13 @@ public class NotificationManagerServiceTest extends NotificationTestCase { NotificationChannelGroup group1 = new NotificationChannelGroup("a", "b"); NotificationChannelGroup group2 = new NotificationChannelGroup("n", "m"); - reset(mNotificationListeners); + reset(mListeners); mBinderService.createNotificationChannelGroups(PKG, new ParceledListSlice(Arrays.asList(group1, group2))); - verify(mNotificationListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), eq(Process.myUserHandle()), eq(group1), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); - verify(mNotificationListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), eq(Process.myUserHandle()), eq(group2), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED)); } @@ -664,9 +955,9 @@ public class NotificationManagerServiceTest extends NotificationTestCase { eq(mTestNotificationChannel.getId()), anyBoolean())) .thenReturn(mTestNotificationChannel); - reset(mNotificationListeners); + reset(mListeners); mBinderService.updateNotificationChannelForPackage(PKG, 0, mTestNotificationChannel); - verify(mNotificationListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED)); } @@ -680,9 +971,9 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mRankingHelper.getNotificationChannel(eq(PKG), anyInt(), eq(mTestNotificationChannel.getId()), anyBoolean())) .thenReturn(mTestNotificationChannel); - reset(mNotificationListeners); + reset(mListeners); mBinderService.deleteNotificationChannel(PKG, mTestNotificationChannel.getId()); - verify(mNotificationListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_DELETED)); } @@ -696,9 +987,9 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mNotificationManagerService.setRankingHelper(mRankingHelper); when(mRankingHelper.getNotificationChannelGroup(eq(ncg.getId()), eq(PKG), anyInt())) .thenReturn(ncg); - reset(mNotificationListeners); + reset(mListeners); mBinderService.deleteNotificationChannelGroup(PKG, ncg.getId()); - verify(mNotificationListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), + verify(mListeners, times(1)).notifyNotificationChannelGroupChanged(eq(PKG), eq(Process.myUserHandle()), eq(ncg), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_DELETED)); } @@ -713,9 +1004,10 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mBinderService.updateNotificationChannelFromPrivilegedListener( null, PKG, Process.myUserHandle(), mTestNotificationChannel); - verify(mRankingHelper, times(1)).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, times(1)).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); - verify(mNotificationListeners, never()).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED)); } @@ -734,9 +1026,10 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // pass } - verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, never()).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); - verify(mNotificationListeners, never()).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED)); } @@ -750,7 +1043,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mListener = mock(ManagedServices.ManagedServiceInfo.class); mListener.component = new ComponentName(PKG, PKG); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(false); - when(mNotificationListeners.checkServiceTokenLocked(any())).thenReturn(mListener); + when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); try { mBinderService.updateNotificationChannelFromPrivilegedListener( @@ -760,9 +1053,10 @@ public class NotificationManagerServiceTest extends NotificationTestCase { // pass } - verify(mRankingHelper, never()).updateNotificationChannel(anyString(), anyInt(), any()); + verify(mRankingHelper, never()).updateNotificationChannel( + anyString(), anyInt(), any(), anyBoolean()); - verify(mNotificationListeners, never()).notifyNotificationChannelChanged(eq(PKG), + verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG), eq(Process.myUserHandle()), eq(mTestNotificationChannel), eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED)); } @@ -807,7 +1101,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mCompanionMgr.getAssociations(PKG, mUid)).thenReturn(associations); mListener = mock(ManagedServices.ManagedServiceInfo.class); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(false); - when(mNotificationListeners.checkServiceTokenLocked(any())).thenReturn(mListener); + when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); try { mBinderService.getNotificationChannelsFromPrivilegedListener( @@ -858,7 +1152,7 @@ public class NotificationManagerServiceTest extends NotificationTestCase { when(mCompanionMgr.getAssociations(PKG, mUid)).thenReturn(associations); mListener = mock(ManagedServices.ManagedServiceInfo.class); when(mListener.enabledAndUserMatches(anyInt())).thenReturn(false); - when(mNotificationListeners.checkServiceTokenLocked(any())).thenReturn(mListener); + when(mListeners.checkServiceTokenLocked(any())).thenReturn(mListener); try { mBinderService.getNotificationChannelGroupsFromPrivilegedListener( @@ -1016,6 +1310,151 @@ public class NotificationManagerServiceTest extends NotificationTestCase { verify(mSnoozeHelper, never()).repostGroupSummary(anyString(), anyInt(), anyString()); } + @Test + public void testSetListenerAccess() throws Exception { + ComponentName c = ComponentName.unflattenFromString("package/Component"); + try { + mBinderService.setNotificationListenerAccessGranted(c, true); + } catch (SecurityException e) { + if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { + throw e; + } + } + + verify(mListeners, times(1)).setPackageOrComponentEnabled( + c.flattenToString(), 0, true, true); + verify(mConditionProviders, times(1)).setPackageOrComponentEnabled( + c.flattenToString(), 0, false, true); + verify(mAssistants, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testSetAssistantAccess() throws Exception { + ComponentName c = ComponentName.unflattenFromString("package/Component"); + try { + mBinderService.setNotificationAssistantAccessGranted(c, true); + } catch (SecurityException e) { + if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { + throw e; + } + } + + verify(mAssistants, times(1)).setPackageOrComponentEnabled( + c.flattenToString(), 0, true, true); + verify(mConditionProviders, times(1)).setPackageOrComponentEnabled( + c.flattenToString(), 0, false, true); + verify(mListeners, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testSetDndAccess() throws Exception { + ComponentName c = ComponentName.unflattenFromString("package/Component"); + try { + mBinderService.setNotificationPolicyAccessGranted(c.getPackageName(), true); + } catch (SecurityException e) { + if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { + throw e; + } + } + + verify(mConditionProviders, times(1)).setPackageOrComponentEnabled( + c.getPackageName(), 0, true, true); + verify(mAssistants, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + verify(mListeners, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testSetListenerAccess_doesNothingOnLowRam() throws Exception { + when(mActivityManager.isLowRamDevice()).thenReturn(true); + ComponentName c = ComponentName.unflattenFromString("package/Component"); + mBinderService.setNotificationListenerAccessGranted(c, true); + + verify(mListeners, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, true, true); + verify(mConditionProviders, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, false, true); + verify(mAssistants, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testSetAssistantAccess_doesNothingOnLowRam() throws Exception { + when(mActivityManager.isLowRamDevice()).thenReturn(true); + ComponentName c = ComponentName.unflattenFromString("package/Component"); + mBinderService.setNotificationAssistantAccessGranted(c, true); + + + verify(mListeners, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, true, true); + verify(mConditionProviders, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, false, true); + verify(mAssistants, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testSetDndAccess_doesNothingOnLowRam() throws Exception { + when(mActivityManager.isLowRamDevice()).thenReturn(true); + ComponentName c = ComponentName.unflattenFromString("package/Component"); + mBinderService.setNotificationPolicyAccessGranted(c.getPackageName(), true); + + verify(mListeners, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, true, true); + verify(mConditionProviders, never()).setPackageOrComponentEnabled( + c.flattenToString(), 0, false, true); + verify(mAssistants, never()).setPackageOrComponentEnabled( + any(), anyInt(), anyBoolean(), anyBoolean()); + } + + @Test + public void testOnlyAutogroupIfGroupChanged_noPriorNoti_autogroups() throws Exception { + NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 0, null, false); + mNotificationManagerService.addEnqueuedNotification(r); + NotificationManagerService.PostNotificationRunnable runnable = + mNotificationManagerService.new PostNotificationRunnable(r.getKey()); + runnable.run(); + waitForIdle(); + + verify(mGroupHelper, times(1)).onNotificationPosted(any(), anyBoolean()); + } + + @Test + public void testOnlyAutogroupIfGroupChanged_groupChanged_autogroups() + throws Exception { + NotificationRecord r = + generateNotificationRecord(mTestNotificationChannel, 0, "group", false); + mNotificationManagerService.addNotification(r); + + r = generateNotificationRecord(mTestNotificationChannel, 0, null, false); + mNotificationManagerService.addEnqueuedNotification(r); + NotificationManagerService.PostNotificationRunnable runnable = + mNotificationManagerService.new PostNotificationRunnable(r.getKey()); + runnable.run(); + waitForIdle(); + + verify(mGroupHelper, times(1)).onNotificationPosted(any(), anyBoolean()); + } + + @Test + public void testOnlyAutogroupIfGroupChanged_noGroupChanged_autogroups() + throws Exception { + NotificationRecord r = generateNotificationRecord(mTestNotificationChannel, 0, "group", + false); + mNotificationManagerService.addNotification(r); + mNotificationManagerService.addEnqueuedNotification(r); + + NotificationManagerService.PostNotificationRunnable runnable = + mNotificationManagerService.new PostNotificationRunnable(r.getKey()); + runnable.run(); + waitForIdle(); + + verify(mGroupHelper, never()).onNotificationPosted(any(), anyBoolean()); + } + @Test public void testNoFakeColorizedPermission() throws Exception { when(mPackageManagerClient.checkPermission(any(), any())).thenReturn(PERMISSION_DENIED); @@ -1066,15 +1505,191 @@ public class NotificationManagerServiceTest extends NotificationTestCase { mNotificationManagerService.addNotification(otherPackage); // Same notifications are enqueued as posted, everything counts b/c id and tag don't match - assertEquals(40, mNotificationManagerService.getNotificationCountLocked( - PKG, new UserHandle(mUid).getIdentifier(), 0, null)); - assertEquals(40, mNotificationManagerService.getNotificationCountLocked( - PKG, new UserHandle(mUid).getIdentifier(), 0, "tag2")); - assertEquals(2, mNotificationManagerService.getNotificationCountLocked( - "a", new UserHandle(mUid).getIdentifier(), 0, "banana")); + int userId = new UserHandle(mUid).getIdentifier(); + assertEquals(40, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, null)); + assertEquals(40, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag2")); + assertEquals(2, + mNotificationManagerService.getNotificationCountLocked("a", userId, 0, "banana")); // exclude a known notification - it's excluded from only the posted list, not enqueued - assertEquals(39, mNotificationManagerService.getNotificationCountLocked( - PKG, new UserHandle(mUid).getIdentifier(), 0, "tag")); + assertEquals(39, + mNotificationManagerService.getNotificationCountLocked(PKG, userId, 0, "tag")); + } + + @Test + public void testAddAutogroup_requestsSort() throws Exception { + RankingHandler rh = mock(RankingHandler.class); + mNotificationManagerService.setRankingHandler(rh); + + final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel); + mNotificationManagerService.addNotification(r); + mNotificationManagerService.addAutogroupKeyLocked(r.getKey()); + + verify(rh, times(1)).requestSort(); + } + + @Test + public void testRemoveAutogroup_requestsSort() throws Exception { + RankingHandler rh = mock(RankingHandler.class); + mNotificationManagerService.setRankingHandler(rh); + + final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel); + r.setOverrideGroupKey("TEST"); + mNotificationManagerService.addNotification(r); + mNotificationManagerService.removeAutogroupKeyLocked(r.getKey()); + + verify(rh, times(1)).requestSort(); + } + + @Test + public void testReaddAutogroup_noSort() throws Exception { + RankingHandler rh = mock(RankingHandler.class); + mNotificationManagerService.setRankingHandler(rh); + + final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel); + r.setOverrideGroupKey("TEST"); + mNotificationManagerService.addNotification(r); + mNotificationManagerService.addAutogroupKeyLocked(r.getKey()); + + verify(rh, never()).requestSort(); + } + + @Test + public void testHandleRankingSort_sendsUpdateOnSignalExtractorChange() throws Exception { + mNotificationManagerService.setRankingHelper(mRankingHelper); + NotificationManagerService.WorkerHandler handler = mock( + NotificationManagerService.WorkerHandler.class); + mNotificationManagerService.setHandler(handler); + + Map answers = getSignalExtractorSideEffects(); + for (String message : answers.keySet()) { + mNotificationManagerService.clearNotifications(); + final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel); + mNotificationManagerService.addNotification(r); + + doAnswer(answers.get(message)).when(mRankingHelper).extractSignals(r); + + mNotificationManagerService.handleRankingSort(); + } + verify(handler, times(answers.size())).scheduleSendRankingUpdate(); + } + + @Test + public void testHandleRankingSort_noUpdateWhenNoSignalChange() throws Exception { + mNotificationManagerService.setRankingHelper(mRankingHelper); + NotificationManagerService.WorkerHandler handler = mock( + NotificationManagerService.WorkerHandler.class); + mNotificationManagerService.setHandler(handler); + + final NotificationRecord r = generateNotificationRecord(mTestNotificationChannel); + mNotificationManagerService.addNotification(r); + + mNotificationManagerService.handleRankingSort(); + verify(handler, never()).scheduleSendRankingUpdate(); + } + + @Test + public void testReadPolicyXml_readApprovedServicesFromXml() throws Exception { + final String preupgradeXml = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + mNotificationManagerService.readPolicyXml( + new BufferedInputStream(new ByteArrayInputStream(preupgradeXml.getBytes())), false); + verify(mListeners, times(1)).readXml(any()); + verify(mConditionProviders, times(1)).readXml(any()); + verify(mAssistants, times(1)).readXml(any()); + + // numbers are inflated for setup + verify(mListeners, times(1)).migrateToXml(); + verify(mConditionProviders, times(1)).migrateToXml(); + verify(mAssistants, times(1)).migrateToXml(); + } + + @Test + public void testReadPolicyXml_readApprovedServicesFromSettings() throws Exception { + final String preupgradeXml = "" + + "" + + "" + + ""; + mNotificationManagerService.readPolicyXml( + new BufferedInputStream(new ByteArrayInputStream(preupgradeXml.getBytes())), false); + verify(mListeners, never()).readXml(any()); + verify(mConditionProviders, never()).readXml(any()); + verify(mAssistants, never()).readXml(any()); + + // numbers are inflated for setup + verify(mListeners, times(2)).migrateToXml(); + verify(mConditionProviders, times(2)).migrateToXml(); + verify(mAssistants, times(2)).migrateToXml(); + } + + + @Test + public void testLocaleChangedCallsUpdateDefaultZenModeRules() throws Exception { + ZenModeHelper mZenModeHelper = mock(ZenModeHelper.class); + mNotificationManagerService.mZenModeHelper = mZenModeHelper; + mNotificationManagerService.mLocaleChangeReceiver.onReceive(mContext, + new Intent(Intent.ACTION_LOCALE_CHANGED)); + + verify(mZenModeHelper, times(1)).updateDefaultZenRules(); + } + + @Test + public void testBumpFGImportance_noChannelChangePreOApp() throws Exception { + String preOPkg = "preO"; + int preOUid = 145; + final ApplicationInfo legacy = new ApplicationInfo(); + legacy.targetSdkVersion = Build.VERSION_CODES.N_MR1; + when(mPackageManagerClient.getApplicationInfoAsUser(eq(preOPkg), anyInt(), anyInt())) + .thenReturn(legacy); + when(mPackageManagerClient.getPackageUidAsUser(eq(preOPkg), anyInt())).thenReturn(preOUid); + getContext().setMockPackageManager(mPackageManagerClient); + + Notification.Builder nb = new Notification.Builder(mContext, + NotificationChannel.DEFAULT_CHANNEL_ID) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true) + .setPriority(Notification.PRIORITY_MIN); + + StatusBarNotification sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid, + 0, nb.build(), new UserHandle(preOUid), null, 0); + + mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + + nb = new Notification.Builder(mContext) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .setFlag(Notification.FLAG_FOREGROUND_SERVICE, true) + .setPriority(Notification.PRIORITY_MIN); + + sbn = new StatusBarNotification(preOPkg, preOPkg, 9, "tag", preOUid, + 0, nb.build(), new UserHandle(preOUid), null, 0); + + mBinderService.enqueueNotificationWithTag(preOPkg, preOPkg, "tag", + sbn.getId(), sbn.getNotification(), sbn.getUserId()); + waitForIdle(); + assertEquals(IMPORTANCE_LOW, + mNotificationManagerService.getNotificationRecord(sbn.getKey()).getImportance()); + + NotificationChannel defaultChannel = mBinderService.getNotificationChannel( + preOPkg, NotificationChannel.DEFAULT_CHANNEL_ID); + assertEquals(IMPORTANCE_UNSPECIFIED, defaultChannel.getImportance()); } } diff --git a/services/tests/notification/src/com/android/server/notification/NotificationTest.java b/services/tests/notification/src/com/android/server/notification/NotificationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4165e9e0aceb20fc3f5e2a0795ae4e9925773fcc --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/NotificationTest.java @@ -0,0 +1,114 @@ +/* + * 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.notification; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import android.app.ActivityManager; +import android.app.Notification; +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.graphics.Color; +import android.os.Build; +import android.support.test.filters.SmallTest; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class NotificationTest extends NotificationTestCase { + + @Mock + ActivityManager mAm; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void testStripsExtendersInLowRamMode() { + Notification.Builder nb = new Notification.Builder(mContext, "channel"); + nb.extend(new Notification.CarExtender().setColor(Color.RED)); + nb.extend(new Notification.TvExtender().setChannelId("different channel")); + nb.extend(new Notification.WearableExtender().setDismissalId("dismiss")); + Notification before = nb.build(); + + Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, true); + + assertEquals("different channel", new Notification.TvExtender(before).getChannelId()); + assertNull(new Notification.TvExtender(after).getChannelId()); + + assertEquals(Color.RED, new Notification.CarExtender(before).getColor()); + assertEquals(Notification.COLOR_DEFAULT, new Notification.CarExtender(after).getColor()); + + assertEquals("dismiss", new Notification.WearableExtender(before).getDismissalId()); + assertNull(new Notification.WearableExtender(after).getDismissalId()); + } + + @Test + public void testStripsRemoteViewsInLowRamMode() { + Context context = spy(getContext()); + ApplicationInfo ai = new ApplicationInfo(); + ai.targetSdkVersion = Build.VERSION_CODES.M; + when(context.getApplicationInfo()).thenReturn(ai); + + final Notification.BigTextStyle style = new Notification.BigTextStyle() + .bigText("hello") + .setSummaryText("And the summary"); + Notification before = new Notification.Builder(context, "channel") + .setContentText("hi") + .setStyle(style) + .build(); + + Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, true); + assertNotNull(before.contentView); + assertNotNull(before.bigContentView); + assertNotNull(before.headsUpContentView); + assertNull(after.contentView); + assertNull(after.bigContentView); + assertNull(after.headsUpContentView); + } + + @Test + public void testDoesNotStripsExtendersInNormalRamMode() { + Notification.Builder nb = new Notification.Builder(mContext, "channel"); + nb.extend(new Notification.CarExtender().setColor(Color.RED)); + nb.extend(new Notification.TvExtender().setChannelId("different channel")); + nb.extend(new Notification.WearableExtender().setDismissalId("dismiss")); + Notification before = nb.build(); + Notification after = Notification.Builder.maybeCloneStrippedForDelivery(before, false); + + assertTrue(before == after); + + assertEquals("different channel", new Notification.TvExtender(before).getChannelId()); + assertEquals(Color.RED, new Notification.CarExtender(before).getColor()); + assertEquals("dismiss", new Notification.WearableExtender(before).getDismissalId()); + } +} + diff --git a/services/tests/notification/src/com/android/server/notification/NotificationTestCase.java b/services/tests/notification/src/com/android/server/notification/NotificationTestCase.java index cc30aab68aa268dce12eae094f697067773740b9..1ee34122f65a076d0a432cab049cc434764d6c11 100644 --- a/services/tests/notification/src/com/android/server/notification/NotificationTestCase.java +++ b/services/tests/notification/src/com/android/server/notification/NotificationTestCase.java @@ -27,7 +27,7 @@ public class NotificationTestCase { public final TestableContext mContext = new TestableContext(InstrumentationRegistry.getContext(), null); - protected Context getContext() { + protected TestableContext getContext() { return mContext; } } diff --git a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java index 5a72e6ba665a896edbf168d8a5e4e6b53d1644da..c382e53802a6d2cefc4a3b46bfcc5920d4bb6660 100644 --- a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java +++ b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java @@ -25,40 +25,43 @@ import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.fail; -import org.json.JSONArray; -import org.json.JSONObject; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; - -import com.android.internal.util.FastXmlSerializer; - -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlSerializer; - import android.app.Notification; -import android.app.NotificationChannelGroup; -import android.content.Context; import android.app.NotificationChannel; +import android.app.NotificationChannelGroup; import android.app.NotificationManager; +import android.content.ContentProvider; +import android.content.Context; +import android.content.IContentProvider; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.res.Resources; import android.graphics.Color; import android.media.AudioAttributes; import android.net.Uri; import android.os.Build; import android.os.UserHandle; +import android.provider.Settings; import android.provider.Settings.Secure; import android.service.notification.StatusBarNotification; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; +import android.testing.TestableContentResolver; import android.util.ArrayMap; import android.util.Xml; +import com.android.internal.util.FastXmlSerializer; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlSerializer; + import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; @@ -75,9 +78,14 @@ 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 static org.mockito.ArgumentMatchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @SmallTest @@ -90,10 +98,17 @@ public class RankingHelperTest extends NotificationTestCase { private static final int UID2 = 1111; private static final UserHandle USER2 = UserHandle.of(10); private static final String TEST_CHANNEL_ID = "test_channel_id"; + private static final String TEST_AUTHORITY = "test"; + private static final Uri SOUND_URI = + Uri.parse("content://" + TEST_AUTHORITY + "/internal/audio/media/10"); + private static final Uri CANONICAL_SOUND_URI = + Uri.parse("content://" + TEST_AUTHORITY + + "/internal/audio/media/10?title=Test&canonical=1"); @Mock NotificationUsageStats mUsageStats; @Mock RankingHandler mHandler; @Mock PackageManager mPm; + @Mock IContentProvider mTestIContentProvider; @Mock Context mContext; private Notification mNotiGroupGSortA; @@ -124,12 +139,27 @@ public class RankingHelperTest extends NotificationTestCase { when(mPm.getPackageUidAsUser(eq(UPDATED_PKG), anyInt())).thenReturn(UID2); when(mContext.getResources()).thenReturn( InstrumentationRegistry.getContext().getResources()); + when(mContext.getContentResolver()).thenReturn( + InstrumentationRegistry.getContext().getContentResolver()); when(mContext.getPackageManager()).thenReturn(mPm); when(mContext.getApplicationInfo()).thenReturn(legacy); // most tests assume badging is enabled - Secure.putIntForUser(getContext().getContentResolver(), + TestableContentResolver contentResolver = getContext().getContentResolver(); + contentResolver.setFallbackToExisting(false); + Secure.putIntForUser(contentResolver, Secure.NOTIFICATION_BADGING, 1, UserHandle.getUserId(UID)); + ContentProvider testContentProvider = mock(ContentProvider.class); + when(testContentProvider.getIContentProvider()).thenReturn(mTestIContentProvider); + contentResolver.addProvider(TEST_AUTHORITY, testContentProvider); + + when(mTestIContentProvider.canonicalize(any(), eq(SOUND_URI))) + .thenReturn(CANONICAL_SOUND_URI); + when(mTestIContentProvider.canonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(CANONICAL_SOUND_URI); + when(mTestIContentProvider.uncanonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(SOUND_URI); + mHelper = new RankingHelper(getContext(), mPm, mHandler, mUsageStats, new String[] {ImportanceExtractor.class.getName()}); @@ -207,9 +237,12 @@ public class RankingHelperTest extends NotificationTestCase { } private void loadStreamXml(ByteArrayOutputStream stream, boolean forRestore) throws Exception { + loadByteArrayXml(stream.toByteArray(), forRestore); + } + + private void loadByteArrayXml(byte[] byteArray, boolean forRestore) throws Exception { XmlPullParser parser = Xml.newPullParser(); - parser.setInput(new BufferedInputStream(new ByteArrayInputStream(stream.toByteArray())), - null); + parser.setInput(new BufferedInputStream(new ByteArrayInputStream(byteArray)), null); parser.nextTag(); mHelper.readXml(parser, forRestore); } @@ -357,7 +390,7 @@ public class RankingHelperTest extends NotificationTestCase { NotificationChannel channel2 = new NotificationChannel("id2", "name2", IMPORTANCE_LOW); channel2.setDescription("descriptions for all"); - channel2.setSound(new Uri.Builder().scheme("test").build(), mAudioAttributes); + channel2.setSound(SOUND_URI, mAudioAttributes); channel2.enableLights(true); channel2.setBypassDnd(true); channel2.setLockscreenVisibility(Notification.VISIBILITY_SECRET); @@ -418,6 +451,109 @@ public class RankingHelperTest extends NotificationTestCase { assertTrue(foundChannel2Group); } + @Test + public void testBackupXml_backupCanonicalizedSoundUri() throws Exception { + NotificationChannel channel = + new NotificationChannel("id", "name", IMPORTANCE_LOW); + channel.setSound(SOUND_URI, mAudioAttributes); + mHelper.createNotificationChannel(PKG, UID, channel, true); + + ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, true, channel.getId()); + + // Testing that in restore we are given the canonical version + loadStreamXml(baos, true); + verify(mTestIContentProvider).uncanonicalize(any(), eq(CANONICAL_SOUND_URI)); + } + + @Test + public void testRestoreXml_withExistentCanonicalizedSoundUri() throws Exception { + Uri localUri = Uri.parse("content://" + TEST_AUTHORITY + "/local/url"); + Uri canonicalBasedOnLocal = localUri.buildUpon() + .appendQueryParameter("title", "Test") + .appendQueryParameter("canonical", "1") + .build(); + when(mTestIContentProvider.canonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(canonicalBasedOnLocal); + when(mTestIContentProvider.uncanonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(localUri); + when(mTestIContentProvider.uncanonicalize(any(), eq(canonicalBasedOnLocal))) + .thenReturn(localUri); + + NotificationChannel channel = + new NotificationChannel("id", "name", IMPORTANCE_LOW); + channel.setSound(SOUND_URI, mAudioAttributes); + mHelper.createNotificationChannel(PKG, UID, channel, true); + ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, true, channel.getId()); + + loadStreamXml(baos, true); + + NotificationChannel actualChannel = mHelper.getNotificationChannel( + PKG, UID, channel.getId(), false); + assertEquals(localUri, actualChannel.getSound()); + } + + @Test + public void testRestoreXml_withNonExistentCanonicalizedSoundUri() throws Exception { + Thread.sleep(3000); + when(mTestIContentProvider.canonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(null); + when(mTestIContentProvider.uncanonicalize(any(), eq(CANONICAL_SOUND_URI))) + .thenReturn(null); + + NotificationChannel channel = + new NotificationChannel("id", "name", IMPORTANCE_LOW); + channel.setSound(SOUND_URI, mAudioAttributes); + mHelper.createNotificationChannel(PKG, UID, channel, true); + ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, true, channel.getId()); + + loadStreamXml(baos, true); + + NotificationChannel actualChannel = mHelper.getNotificationChannel( + PKG, UID, channel.getId(), false); + assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + } + + + /** + * Although we don't make backups with uncanonicalized uris anymore, we used to, so we have to + * handle its restore properly. + */ + @Test + public void testRestoreXml_withUncanonicalizedNonLocalSoundUri() throws Exception { + // Not a local uncanonicalized uri, simulating that it fails to exist locally + when(mTestIContentProvider.canonicalize(any(), eq(SOUND_URI))).thenReturn(null); + String id = "id"; + String backupWithUncanonicalizedSoundUri = "\n" + + "\n" + + "\n" + + "\n" + + "\n" + + "\n"; + + loadByteArrayXml(backupWithUncanonicalizedSoundUri.getBytes(), true); + + NotificationChannel actualChannel = mHelper.getNotificationChannel(PKG, UID, id, false); + assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + } + + @Test + public void testBackupRestoreXml_withNullSoundUri() throws Exception { + NotificationChannel channel = + new NotificationChannel("id", "name", IMPORTANCE_LOW); + channel.setSound(null, mAudioAttributes); + mHelper.createNotificationChannel(PKG, UID, channel, true); + ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, true, channel.getId()); + + loadStreamXml(baos, true); + + NotificationChannel actualChannel = mHelper.getNotificationChannel( + PKG, UID, channel.getId(), false); + assertEquals(null, actualChannel.getSound()); + } + @Test public void testChannelXml_backup() throws Exception { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); @@ -477,7 +613,7 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel defaultChannel = mHelper.getNotificationChannel(PKG, UID, NotificationChannel.DEFAULT_CHANNEL_ID, false); defaultChannel.setImportance(NotificationManager.IMPORTANCE_LOW); - mHelper.updateNotificationChannel(PKG, UID, defaultChannel); + mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true); ByteArrayOutputStream baos = writeXmlAndPurge(PKG, UID, false, NotificationChannel.DEFAULT_CHANNEL_ID); @@ -626,10 +762,12 @@ public class RankingHelperTest extends NotificationTestCase { channel2.setBypassDnd(false); channel2.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); - mHelper.updateNotificationChannel(PKG, UID, channel2); + mHelper.updateNotificationChannel(PKG, UID, channel2, true); // all fields should be changed assertEquals(channel2, mHelper.getNotificationChannel(PKG, UID, channel.getId(), false)); + + verify(mHandler, times(1)).requestSort(); } @Test @@ -648,7 +786,7 @@ public class RankingHelperTest extends NotificationTestCase { defaultChannel.setBypassDnd(true); defaultChannel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, defaultChannel); + mHelper.updateNotificationChannel(PKG, UID, defaultChannel, true); // ensure app level fields are changed assertFalse(mHelper.canShowBadge(PKG, UID)); @@ -672,7 +810,7 @@ public class RankingHelperTest extends NotificationTestCase { channel.setBypassDnd(true); channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, channel); + mHelper.updateNotificationChannel(PKG, UID, channel, true); // ensure app level fields are not changed assertTrue(mHelper.canShowBadge(PKG, UID)); @@ -712,6 +850,8 @@ public class RankingHelperTest extends NotificationTestCase { assertFalse(savedChannel.canBypassDnd()); assertFalse(Notification.VISIBILITY_SECRET == savedChannel.getLockscreenVisibility()); assertEquals(channel.canShowBadge(), savedChannel.canShowBadge()); + + verify(mHandler, never()).requestSort(); } @Test @@ -761,14 +901,14 @@ public class RankingHelperTest extends NotificationTestCase { update1.setSound(new Uri.Builder().scheme("test").build(), new AudioAttributes.Builder().build()); update1.lockFields(NotificationChannel.USER_LOCKED_PRIORITY); // should be ignored - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_SOUND, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); NotificationChannel update2 = getChannel(); update2.enableVibration(true); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_SOUND | NotificationChannel.USER_LOCKED_VIBRATION, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -781,14 +921,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setVibrationPattern(new long[]{7945, 46 ,246}); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_VIBRATION, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.enableLights(true); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_VIBRATION | NotificationChannel.USER_LOCKED_LIGHTS, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -801,14 +941,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setLightColor(Color.GREEN); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_LIGHTS, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.setImportance(IMPORTANCE_DEFAULT); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_LIGHTS | NotificationChannel.USER_LOCKED_IMPORTANCE, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -824,14 +964,14 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update1 = getChannel(); update1.setBypassDnd(true); - mHelper.updateNotificationChannel(PKG, UID, update1); + mHelper.updateNotificationChannel(PKG, UID, update1, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY, mHelper.getNotificationChannel(PKG, UID, update1.getId(), false) .getUserLockedFields()); final NotificationChannel update2 = getChannel(); update2.setLockscreenVisibility(Notification.VISIBILITY_SECRET); - mHelper.updateNotificationChannel(PKG, UID, update2); + mHelper.updateNotificationChannel(PKG, UID, update2, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY | NotificationChannel.USER_LOCKED_VISIBILITY, mHelper.getNotificationChannel(PKG, UID, update2.getId(), false) @@ -839,7 +979,7 @@ public class RankingHelperTest extends NotificationTestCase { final NotificationChannel update3 = getChannel(); update3.setShowBadge(false); - mHelper.updateNotificationChannel(PKG, UID, update3); + mHelper.updateNotificationChannel(PKG, UID, update3, true); assertEquals(NotificationChannel.USER_LOCKED_PRIORITY | NotificationChannel.USER_LOCKED_VISIBILITY | NotificationChannel.USER_LOCKED_SHOW_BADGE, @@ -1058,6 +1198,8 @@ public class RankingHelperTest extends NotificationTestCase { // notDeleted assertEquals(1, mHelper.getNotificationChannelGroups(PKG, UID).size()); + + verify(mHandler, never()).requestSort(); } @Test @@ -1159,6 +1301,7 @@ public class RankingHelperTest extends NotificationTestCase { NotificationChannelGroup ncg = new NotificationChannelGroup("group1", "name1"); mHelper.createNotificationChannelGroup(PKG, UID, ncg, true); assertEquals(ncg, mHelper.getNotificationChannelGroups(PKG, UID).iterator().next()); + verify(mHandler, never()).requestSort(); } @Test @@ -1249,7 +1392,7 @@ public class RankingHelperTest extends NotificationTestCase { mHelper.getNotificationChannelGroups(PKG, UID, true).getList(); channel1.setImportance(IMPORTANCE_LOW); - mHelper.updateNotificationChannel(PKG, UID, channel1); + mHelper.updateNotificationChannel(PKG, UID, channel1, true); List actual = mHelper.getNotificationChannelGroups(PKG, UID, true).getList(); @@ -1275,6 +1418,8 @@ public class RankingHelperTest extends NotificationTestCase { actual = mHelper.getNotificationChannel(PKG, UID, "id", false); assertEquals("goodbye", actual.getName()); assertEquals(IMPORTANCE_DEFAULT, actual.getImportance()); + + verify(mHandler, times(1)).requestSort(); } @Test @@ -1354,4 +1499,22 @@ public class RankingHelperTest extends NotificationTestCase { assertFalse(mHelper.badgingEnabled(USER)); assertTrue(mHelper.badgingEnabled(USER2)); } + + @Test + public void testOnLocaleChanged_updatesDefaultChannels() throws Exception { + String newLabel = "bananas!"; + final NotificationChannel defaultChannel = mHelper.getNotificationChannel(PKG, UID, + NotificationChannel.DEFAULT_CHANNEL_ID, false); + assertFalse(newLabel.equals(defaultChannel.getName())); + + Resources res = mock(Resources.class); + when(mContext.getResources()).thenReturn(res); + when(res.getString(com.android.internal.R.string.default_notification_channel_label)) + .thenReturn(newLabel); + + mHelper.onLocaleChanged(mContext, USER.getIdentifier()); + + assertEquals(newLabel, mHelper.getNotificationChannel(PKG, UID, + NotificationChannel.DEFAULT_CHANNEL_ID, false).getName()); + } } diff --git a/services/tests/servicestests/Android.mk b/services/tests/servicestests/Android.mk index 507b4830e455b529ba9a5025c5feaec5840c44b8..19396d43e15e4d9a7bdd6efe35276934787a8fd9 100644 --- a/services/tests/servicestests/Android.mk +++ b/services/tests/servicestests/Android.mk @@ -29,7 +29,8 @@ LOCAL_STATIC_JAVA_LIBRARIES := \ LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/aidl -LOCAL_SRC_FILES += aidl/com/android/servicestests/aidl/INetworkStateObserver.aidl +LOCAL_SRC_FILES += aidl/com/android/servicestests/aidl/INetworkStateObserver.aidl \ + aidl/com/android/servicestests/aidl/ICmdReceiverService.aidl LOCAL_JAVA_LIBRARIES := android.test.mock legacy-android-test @@ -61,3 +62,5 @@ LOCAL_DX_FLAGS := --multi-dex LOCAL_STATIC_JAVA_LIBRARIES += ub-uiautomator include $(BUILD_PACKAGE) + +include $(call all-makefiles-under, $(LOCAL_PATH)) \ No newline at end of file diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml index e12032d8d4c01b63febf7ebd05ce10987b27b992..59d205ecab720ca6c3291367f767740d84037701 100644 --- a/services/tests/servicestests/AndroidManifest.xml +++ b/services/tests/servicestests/AndroidManifest.xml @@ -35,7 +35,6 @@ - diff --git a/services/tests/servicestests/AndroidTest.xml b/services/tests/servicestests/AndroidTest.xml index 63f3b7560467740ed62e6983856e14c3548e201b..6a9983e87d903a6f180d02026ab516e76588cff0 100644 --- a/services/tests/servicestests/AndroidTest.xml +++ b/services/tests/servicestests/AndroidTest.xml @@ -16,6 +16,7 @@
        • "); + } + + @Override + public void closeListItem() { + mStringBuilder.append("
        • "); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java b/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java deleted file mode 100644 index c98789d880a0217926602395b6da902c5a290e5a..0000000000000000000000000000000000000000 --- a/services/usb/java/com/android/server/usb/descriptors/report/HTMLReporter.java +++ /dev/null @@ -1,572 +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.usb.descriptors.report; - -import android.hardware.usb.UsbDeviceConnection; - -import com.android.server.usb.descriptors.UsbACAudioControlEndpoint; -import com.android.server.usb.descriptors.UsbACAudioStreamEndpoint; -import com.android.server.usb.descriptors.UsbACFeatureUnit; -import com.android.server.usb.descriptors.UsbACHeader; -import com.android.server.usb.descriptors.UsbACInputTerminal; -import com.android.server.usb.descriptors.UsbACInterface; -import com.android.server.usb.descriptors.UsbACMidiEndpoint; -import com.android.server.usb.descriptors.UsbACMixerUnit; -import com.android.server.usb.descriptors.UsbACOutputTerminal; -import com.android.server.usb.descriptors.UsbACSelectorUnit; -import com.android.server.usb.descriptors.UsbACTerminal; -import com.android.server.usb.descriptors.UsbASFormat; -import com.android.server.usb.descriptors.UsbASFormatI; -import com.android.server.usb.descriptors.UsbASFormatII; -import com.android.server.usb.descriptors.UsbASGeneral; -import com.android.server.usb.descriptors.UsbConfigDescriptor; -import com.android.server.usb.descriptors.UsbDescriptor; -import com.android.server.usb.descriptors.UsbDeviceDescriptor; -import com.android.server.usb.descriptors.UsbEndpointDescriptor; -import com.android.server.usb.descriptors.UsbHIDDescriptor; -import com.android.server.usb.descriptors.UsbInterfaceAssoc; -import com.android.server.usb.descriptors.UsbInterfaceDescriptor; -import com.android.server.usb.descriptors.UsbMSMidiHeader; -import com.android.server.usb.descriptors.UsbMSMidiInputJack; -import com.android.server.usb.descriptors.UsbMSMidiOutputJack; -import com.android.server.usb.descriptors.UsbUnknown; - -/** - * Implements the Reporter inteface to provide HTML reporting for UsbDescriptor subclasses. - */ -public class HTMLReporter implements Reporter { - private final StringBuilder mStringBuilder; - private final UsbDeviceConnection mConnection; - - public HTMLReporter(StringBuilder stringBuilder, UsbDeviceConnection connection) { - mStringBuilder = stringBuilder; - mConnection = connection; - } - - /* - * HTML Helpers - */ - private void writeHeader(int level, String text) { - mStringBuilder - .append("') - .append(text) - .append("'); - } - - private void openParagraph() { - mStringBuilder.append("

          "); - } - - private void closeParagraph() { - mStringBuilder.append("

          "); - } - - private void writeParagraph(String text) { - openParagraph(); - mStringBuilder.append(text); - closeParagraph(); - } - - private void openList() { - mStringBuilder.append("
            "); - } - - private void closeList() { - mStringBuilder.append("
          "); - } - - private void openListItem() { - mStringBuilder.append("
        • "); - } - - private void closeListItem() { - mStringBuilder.append("
        • "); - } - - private void writeListItem(String text) { - openListItem(); - mStringBuilder.append(text); - closeListItem(); - } - - /* - * Data Formating Helpers - */ - private static String getHexString(byte value) { - return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase(); - } - - private static String getBCDString(int value) { - int major = value >> 8; - int minor = (value >> 4) & 0x0F; - int subminor = value & 0x0F; - - return "" + major + "." + minor + subminor; - } - - private static String getHexString(int value) { - int intValue = value & 0xFFFF; - return "0x" + Integer.toHexString(intValue).toUpperCase(); - } - - private void dumpHexArray(byte[] rawData, StringBuilder builder) { - if (rawData != null) { - // Assume the type and Length and perhaps sub-type have been displayed - openParagraph(); - for (int index = 0; index < rawData.length; index++) { - builder.append(getHexString(rawData[index]) + " "); - } - closeParagraph(); - } - } - - /** - * Decode ACTUAL UsbDescriptor sub classes and call type-specific report methods. - */ - @Override - public void report(UsbDescriptor descriptor) { - if (descriptor instanceof UsbDeviceDescriptor) { - tsReport((UsbDeviceDescriptor) descriptor); - } else if (descriptor instanceof UsbConfigDescriptor) { - tsReport((UsbConfigDescriptor) descriptor); - } else if (descriptor instanceof UsbInterfaceDescriptor) { - tsReport((UsbInterfaceDescriptor) descriptor); - } else if (descriptor instanceof UsbEndpointDescriptor) { - tsReport((UsbEndpointDescriptor) descriptor); - } else if (descriptor instanceof UsbHIDDescriptor) { - tsReport((UsbHIDDescriptor) descriptor); - } else if (descriptor instanceof UsbACAudioControlEndpoint) { - tsReport((UsbACAudioControlEndpoint) descriptor); - } else if (descriptor instanceof UsbACAudioStreamEndpoint) { - tsReport((UsbACAudioStreamEndpoint) descriptor); - } else if (descriptor instanceof UsbACHeader) { - tsReport((UsbACHeader) descriptor); - } else if (descriptor instanceof UsbACFeatureUnit) { - tsReport((UsbACFeatureUnit) descriptor); - } else if (descriptor instanceof UsbACInputTerminal) { - tsReport((UsbACInputTerminal) descriptor); - } else if (descriptor instanceof UsbACOutputTerminal) { - tsReport((UsbACOutputTerminal) descriptor); - } else if (descriptor instanceof UsbACMidiEndpoint) { - tsReport((UsbACMidiEndpoint) descriptor); - } else if (descriptor instanceof UsbACMixerUnit) { - tsReport((UsbACMixerUnit) descriptor); - } else if (descriptor instanceof UsbACSelectorUnit) { - tsReport((UsbACSelectorUnit) descriptor); - } else if (descriptor instanceof UsbASFormatI) { - tsReport((UsbASFormatI) descriptor); - } else if (descriptor instanceof UsbASFormatII) { - tsReport((UsbASFormatII) descriptor); - } else if (descriptor instanceof UsbASFormat) { - tsReport((UsbASFormat) descriptor); - } else if (descriptor instanceof UsbASGeneral) { - tsReport((UsbASGeneral) descriptor); - } else if (descriptor instanceof UsbInterfaceAssoc) { - tsReport((UsbInterfaceAssoc) descriptor); - } else if (descriptor instanceof UsbMSMidiHeader) { - tsReport((UsbMSMidiHeader) descriptor); - } else if (descriptor instanceof UsbMSMidiInputJack) { - tsReport((UsbMSMidiInputJack) descriptor); - } else if (descriptor instanceof UsbMSMidiOutputJack) { - tsReport((UsbMSMidiOutputJack) descriptor); - } else if (descriptor instanceof UsbUnknown) { - tsReport((UsbUnknown) descriptor); - } else if (descriptor instanceof UsbACInterface) { - tsReport((UsbACInterface) descriptor); - } else if (descriptor instanceof UsbDescriptor) { - tsReport((UsbDescriptor) descriptor); - } - } - - // - // Type-specific report() implementations - // - private void tsReport(UsbDescriptor descriptor) { - int length = descriptor.getLength(); - byte type = descriptor.getType(); - int status = descriptor.getStatus(); - - String descTypeStr = UsbStrings.getDescriptorName(type); - writeParagraph(descTypeStr + ":" + type + " l:" + length + " s:" + status); - } - - private void tsReport(UsbDeviceDescriptor descriptor) { - writeHeader(1, "Device len:" + descriptor.getLength()); - openList(); - - int spec = descriptor.getSpec(); - writeListItem("spec:" + getBCDString(spec)); - - byte devClass = descriptor.getDevClass(); - String classStr = UsbStrings.getClassName(devClass); - byte devSubClass = descriptor.getDevSubClass(); - String subClasStr = UsbStrings.getClassName(devSubClass); - writeListItem("class " + devClass + ":" + classStr + " subclass" - + devSubClass + ":" + subClasStr); - writeListItem("vendorID:" + descriptor.getVendorID() - + " prodID:" + descriptor.getProductID() - + " prodRel:" + getBCDString(descriptor.getDeviceRelease())); - - byte mfgIndex = descriptor.getMfgIndex(); - String manufacturer = UsbDescriptor.getUsbDescriptorString(mConnection, mfgIndex); - byte productIndex = descriptor.getProductIndex(); - String product = UsbDescriptor.getUsbDescriptorString(mConnection, productIndex); - - writeListItem("mfg " + mfgIndex + ":" + manufacturer - + " prod " + productIndex + ":" + product); - closeList(); - } - - private void tsReport(UsbConfigDescriptor descriptor) { - writeHeader(2, "Config #" + descriptor.getConfigValue() - + " len:" + descriptor.getLength()); - - openList(); - writeListItem(descriptor.getNumInterfaces() + " interfaces."); - writeListItem("attribs:" + getHexString(descriptor.getAttribs())); - closeList(); - } - - private void tsReport(UsbInterfaceDescriptor descriptor) { - byte usbClass = descriptor.getUsbClass(); - byte usbSubclass = descriptor.getUsbSubclass(); - String descr = UsbStrings.getDescriptorName(descriptor.getType()); - String className = UsbStrings.getClassName(usbClass); - String subclassName = ""; - if (usbClass == UsbDescriptor.CLASSID_AUDIO) { - subclassName = UsbStrings.getAudioSubclassName(usbSubclass); - } - - writeHeader(2, descr + " #" + descriptor.getInterfaceNumber() - + " len:" + descriptor.getLength()); - String descrStr = - UsbDescriptor.getUsbDescriptorString(mConnection, descriptor.getDescrIndex()); - if (descrStr.length() > 0) { - mStringBuilder.append("
          " + descrStr); - } - openList(); - writeListItem("class " + getHexString(usbClass) + ":" + className - + " subclass " + getHexString(usbSubclass) + ":" + subclassName); - writeListItem("" + descriptor.getNumEndpoints() + " endpoints"); - closeList(); - } - - private void tsReport(UsbEndpointDescriptor descriptor) { - writeHeader(3, "Endpoint " + getHexString(descriptor.getType()) - + " len:" + descriptor.getLength()); - openList(); - - byte address = descriptor.getEndpointAddress(); - writeListItem("address:" - + getHexString(address & UsbEndpointDescriptor.MASK_ENDPOINT_ADDRESS) - + ((address & UsbEndpointDescriptor.MASK_ENDPOINT_DIRECTION) - == UsbEndpointDescriptor.DIRECTION_OUTPUT ? " [out]" : " [in]")); - - byte attributes = descriptor.getAttributes(); - openListItem(); - mStringBuilder.append("attribs:" + getHexString(attributes) + " "); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) { - case UsbEndpointDescriptor.TRANSTYPE_CONTROL: - mStringBuilder.append("Control"); - break; - case UsbEndpointDescriptor.TRANSTYPE_ISO: - mStringBuilder.append("Iso"); - break; - case UsbEndpointDescriptor.TRANSTYPE_BULK: - mStringBuilder.append("Bulk"); - break; - case UsbEndpointDescriptor.TRANSTYPE_INTERRUPT: - mStringBuilder.append("Interrupt"); - break; - } - closeListItem(); - - // These flags are only relevant for ISO transfer type - if ((attributes & UsbEndpointDescriptor.MASK_ATTRIBS_TRANSTYPE) - == UsbEndpointDescriptor.TRANSTYPE_ISO) { - openListItem(); - mStringBuilder.append("sync:"); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_SYNCTYPE) { - case UsbEndpointDescriptor.SYNCTYPE_NONE: - mStringBuilder.append("NONE"); - break; - case UsbEndpointDescriptor.SYNCTYPE_ASYNC: - mStringBuilder.append("ASYNC"); - break; - case UsbEndpointDescriptor.SYNCTYPE_ADAPTSYNC: - mStringBuilder.append("ADAPTIVE ASYNC"); - break; - } - closeListItem(); - - openListItem(); - mStringBuilder.append("useage:"); - switch (attributes & UsbEndpointDescriptor.MASK_ATTRIBS_USEAGE) { - case UsbEndpointDescriptor.USEAGE_DATA: - mStringBuilder.append("DATA"); - break; - case UsbEndpointDescriptor.USEAGE_FEEDBACK: - mStringBuilder.append("FEEDBACK"); - break; - case UsbEndpointDescriptor.USEAGE_EXPLICIT: - mStringBuilder.append("EXPLICIT FEEDBACK"); - break; - case UsbEndpointDescriptor.USEAGE_RESERVED: - mStringBuilder.append("RESERVED"); - break; - } - closeListItem(); - } - writeListItem("package size:" + descriptor.getPacketSize()); - writeListItem("interval:" + descriptor.getInterval()); - closeList(); - } - - private void tsReport(UsbHIDDescriptor descriptor) { - String descr = UsbStrings.getDescriptorName(descriptor.getType()); - writeHeader(2, descr + " len:" + descriptor.getLength()); - openList(); - writeListItem("spec:" + getBCDString(descriptor.getRelease())); - writeListItem("type:" + getBCDString(descriptor.getDescriptorType())); - writeListItem("descriptor.getNumDescriptors() descriptors len:" - + descriptor.getDescriptorLen()); - closeList(); - } - - private void tsReport(UsbACAudioControlEndpoint descriptor) { - writeHeader(3, "AC Audio Control Endpoint:" + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - } - - private void tsReport(UsbACAudioStreamEndpoint descriptor) { - writeHeader(3, "AC Audio Streaming Endpoint:" - + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - } - - private void tsReport(UsbACHeader descriptor) { - tsReport((UsbACInterface) descriptor); - - openList(); - writeListItem("spec:" + getBCDString(descriptor.getADCRelease())); - int numInterfaces = descriptor.getNumInterfaces(); - writeListItem("" + numInterfaces + " interfaces"); - if (numInterfaces > 0) { - openListItem(); - mStringBuilder.append("["); - byte[] interfaceNums = descriptor.getInterfaceNums(); - if (numInterfaces != 0 && interfaceNums != null) { - for (int index = 0; index < numInterfaces; index++) { - mStringBuilder.append("" + interfaceNums[index]); - if (index < numInterfaces - 1) { - mStringBuilder.append(" "); - } - } - } - mStringBuilder.append("]"); - closeListItem(); - } - writeListItem("controls:" + getHexString(descriptor.getControls())); - closeList(); - } - - private void tsReport(UsbACFeatureUnit descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbACInterface descriptor) { - String subClassName = - descriptor.getSubclass() == UsbDescriptor.AUDIO_AUDIOCONTROL - ? "AC Control" - : "AC Streaming"; - byte subtype = descriptor.getSubtype(); - String subTypeStr = UsbStrings.getACControlInterfaceName(subtype); - writeHeader(4, subClassName + " - " + getHexString(subtype) - + ":" + subTypeStr + " len:" + descriptor.getLength()); - } - - private void tsReport(UsbACTerminal descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbACInputTerminal descriptor) { - tsReport((UsbACTerminal) descriptor); - - openList(); - writeListItem("ID:" + getHexString(descriptor.getTerminalID())); - int terminalType = descriptor.getTerminalType(); - writeListItem("Type:" + getHexString(terminalType) + ":" - + UsbStrings.getTerminalName(terminalType) + ""); - writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal())); - writeListItem("" + descriptor.getNrChannels() + " chans. config:" - + getHexString(descriptor.getChannelConfig())); - closeList(); - } - - private void tsReport(UsbACOutputTerminal descriptor) { - tsReport((UsbACTerminal) descriptor); - - openList(); - writeListItem("ID:" + getHexString(descriptor.getTerminalID())); - int terminalType = descriptor.getTerminalType(); - writeListItem("Type:" + getHexString(terminalType) + ":" - + UsbStrings.getTerminalName(terminalType) + ""); - writeListItem("AssocTerminal:" + getHexString(descriptor.getAssocTerminal())); - writeListItem("Source:" + getHexString(descriptor.getSourceID())); - closeList(); - } - - private void tsReport(UsbACMidiEndpoint descriptor) { - writeHeader(3, "AC Midi Endpoint:" + getHexString(descriptor.getType()) - + " length:" + descriptor.getLength()); - openList(); - writeListItem("" + descriptor.getNumJacks() + " jacks."); - closeList(); - } - - private void tsReport(UsbACMixerUnit descriptor) { - tsReport((UsbACInterface) descriptor); - openList(); - - writeListItem("Unit ID:" + getHexString(descriptor.getUnitID())); - byte numInputs = descriptor.getNumInputs(); - byte[] inputIDs = descriptor.getInputIDs(); - openListItem(); - mStringBuilder.append("Num Inputs:" + numInputs + " ["); - for (int input = 0; input < numInputs; input++) { - mStringBuilder.append("" + getHexString(inputIDs[input])); - if (input < numInputs - 1) { - mStringBuilder.append(" "); - } - } - mStringBuilder.append("]"); - closeListItem(); - - writeListItem("Num Outputs:" + descriptor.getNumOutputs()); - writeListItem("Chan Config:" + getHexString(descriptor.getChannelConfig())); - - byte[] controls = descriptor.getControls(); - openListItem(); - mStringBuilder.append("controls:" + controls.length + " ["); - for (int ctrl = 0; ctrl < controls.length; ctrl++) { - mStringBuilder.append("" + controls[ctrl]); - if (ctrl < controls.length - 1) { - mStringBuilder.append(" "); - } - } - mStringBuilder.append("]"); - closeListItem(); - closeList(); - // byte mChanNameID; // First channel name string descriptor ID - // byte mNameID; // string descriptor ID of mixer name - } - - private void tsReport(UsbACSelectorUnit descriptor) { - tsReport((UsbACInterface) descriptor); - } - - private void tsReport(UsbASFormat descriptor) { - writeHeader(4, "AC Streaming Format " - + (descriptor.getFormatType() == UsbASFormat.FORMAT_TYPE_I ? "I" : "II") - + " - " + getHexString(descriptor.getSubtype()) + ":" - + " len:" + descriptor.getLength()); - } - - private void tsReport(UsbASFormatI descriptor) { - tsReport((UsbASFormat) descriptor); - openList(); - writeListItem("chans:" + descriptor.getNumChannels()); - writeListItem("subframe size:" + descriptor.getSubframeSize()); - writeListItem("bit resolution:" + descriptor.getBitResolution()); - byte sampleFreqType = descriptor.getSampleFreqType(); - int[] sampleRates = descriptor.getSampleRates(); - writeListItem("sample freq type:" + sampleFreqType); - if (sampleFreqType == 0) { - openList(); - writeListItem("min:" + sampleRates[0]); - writeListItem("max:" + sampleRates[1]); - closeList(); - } else { - openList(); - for (int index = 0; index < sampleFreqType; index++) { - writeListItem("" + sampleRates[index]); - } - closeList(); - } - closeList(); - } - - private void tsReport(UsbASFormatII descriptor) { - tsReport((UsbASFormat) descriptor); - openList(); - writeListItem("max bit rate:" + descriptor.getMaxBitRate()); - writeListItem("samples per frame:" + descriptor.getMaxBitRate()); - byte sampleFreqType = descriptor.getSamFreqType(); - int[] sampleRates = descriptor.getSampleRates(); - writeListItem("sample freq type:" + sampleFreqType); - if (sampleFreqType == 0) { - openList(); - writeListItem("min:" + sampleRates[0]); - writeListItem("max:" + sampleRates[1]); - closeList(); - } else { - openList(); - for (int index = 0; index < sampleFreqType; index++) { - writeListItem("" + sampleRates[index]); - } - closeList(); - } - - closeList(); - } - - private void tsReport(UsbASGeneral descriptor) { - tsReport((UsbACInterface) descriptor); - openList(); - int formatTag = descriptor.getFormatTag(); - writeListItem("fmt:" + UsbStrings.getAudioFormatName(formatTag) + " - " - + getHexString(formatTag)); - closeList(); - } - - private void tsReport(UsbInterfaceAssoc descriptor) { - tsReport((UsbDescriptor) descriptor); - } - - private void tsReport(UsbMSMidiHeader descriptor) { - writeHeader(3, "MS Midi Header:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbMSMidiInputJack descriptor) { - writeHeader(3, "MS Midi Input Jack:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbMSMidiOutputJack descriptor) { - writeHeader(3, "MS Midi Output Jack:" + getHexString(descriptor.getType()) - + " subType:" + getHexString(descriptor.getSubclass()) - + " length:" + descriptor.getSubclass()); - } - - private void tsReport(UsbUnknown descriptor) { - writeParagraph("Unknown Descriptor " + getHexString(descriptor.getType()) - + " len:" + descriptor.getLength() + ""); - dumpHexArray(descriptor.getRawData(), mStringBuilder); - } -} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java new file mode 100644 index 0000000000000000000000000000000000000000..9e0adf55d87bc849edb8ec4328ec2bdb19276ed3 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/report/ReportCanvas.java @@ -0,0 +1,174 @@ +/* + * 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.usb.descriptors.report; + +import android.hardware.usb.UsbDeviceConnection; + +/** + * @hide + * Defines a class for generating report data in a variety of potential formats. + */ +public abstract class ReportCanvas { + private static final String TAG = "ReportCanvas"; + + private final UsbDeviceConnection mConnection; + + /** + * Constructor. + * @param connection The USB connection object used to retrieve strings + * from the USB device. + */ + public ReportCanvas(UsbDeviceConnection connection) { + mConnection = connection; + } + + /** + * @returns the UsbDeviceConnection member (mConnection). + */ + public UsbDeviceConnection getConnection() { + return mConnection; + } + + /** + * Writes a plain string to the output. + */ + public abstract void write(String text); + + /** + * Opens a "header" formatted section in the output. + * @param level Specifies the logical level of the header. + */ + public abstract void openHeader(int level); + + /** + * Closes a "header" formatted section in the output. + * @param level Specifies the logical level of the header. + */ + public abstract void closeHeader(int level); + + /** + * Writes a "header" formatted string to the output. + * @param level Specifies the logical level of the header. + * @param text Specifies the text to display in the header. + */ + public void writeHeader(int level, String text) { + openHeader(level); + write(text); + closeHeader(level); + } + + /** + * Opens a paragraph construct in the output. + * @param emphasis Specifies whether the text in the paragraph should + * be displayed with "emphasis" formatting. + */ + public abstract void openParagraph(boolean emphasis); + + /** + * Closes a paragraph construct in the output. + */ + public abstract void closeParagraph(); + + /** + * Writes a paragraph construct to the output. + * @param text The text to display with "paragraph" formatting. + * @param emphasis Specifies whether the text in the paragraph should + * be displayed with "emphasis" formatting. + */ + public abstract void writeParagraph(String text, boolean emphasis); + + /** + * Opens a "list" formatted section in the output. + */ + public abstract void openList(); + + /** + * Closes a "list" formatted section in the output. + */ + public abstract void closeList(); + + /** + * Opens a "list item" formatted section in the output. + */ + public abstract void openListItem(); + + /** + * Closes a "list item" formatted section in the output. + */ + public abstract void closeListItem(); + + /** + * Writes a "list item" formatted section in the output. + * @param text Specifies the text of the list item. + */ + public void writeListItem(String text) { + openListItem(); + write(text); + closeListItem(); + } + + /* + * Data Formating Helpers + */ + /** + * Generates a hex representation of the specified byte value. + * @param value The value to format. + */ + //TODO Look into renaming the "getHexString()" functions to be more + // representative of the types they handle. + public static String getHexString(byte value) { + return "0x" + Integer.toHexString(((int) value) & 0xFF).toUpperCase(); + } + + /** + * Generates a string representing a USB Binary-Coded Decimal value. + * @param valueBCD The value to format. + */ + public static String getBCDString(int valueBCD) { + int major = (valueBCD >> 8) & 0x0F; + int minor = (valueBCD >> 4) & 0x0F; + int subminor = valueBCD & 0x0F; + + return "" + major + "." + minor + subminor; + } + + /** + * Generates a hex representation of the specified 16-bit integer value. + * @param value The value to format. + */ + //TODO Look into renaming the "getHexString()" functions to be more + // representative of the types they handle. + public static String getHexString(int value) { + int intValue = value & 0xFFFF; + return "0x" + Integer.toHexString(intValue).toUpperCase(); + } + + /** + * Writes out the specified byte array to the provided StringBuilder. + * @param rawData The byte values. + * @param builder The StringBuilder to write text into. + */ + public void dumpHexArray(byte[] rawData, StringBuilder builder) { + if (rawData != null) { + // Assume the type and Length and perhaps sub-type have been displayed + openParagraph(false); + for (int index = 0; index < rawData.length; index++) { + builder.append(getHexString(rawData[index]) + " "); + } + closeParagraph(); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java deleted file mode 100644 index 2944c10796f6a87e6e41bea8088164d6f10f8e7c..0000000000000000000000000000000000000000 --- a/services/usb/java/com/android/server/usb/descriptors/report/Reporter.java +++ /dev/null @@ -1,40 +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.usb.descriptors.report; - -import com.android.server.usb.descriptors.UsbDescriptor; - -/** - * Declares the Reporter interface to provide HTML reporting for UsbDescriptor (sub)classes. - * - * NOTE: It is the responsibility of the implementor of this interface to correctly - * interpret/decode the SPECIFIC UsbDescriptor subclass (perhaps with 'instanceof') that is - * passed and handle that in the appropriate manner. This appears to be a - * not very object-oriented approach, and that is true. This approach DOES however move the - * complexity and 'plumbing' of reporting into the Reporter implementation and avoids needing - * a (trivial) type-specific call to 'report()' in each UsbDescriptor (sub)class, instead - * having just one in the top-level UsbDescriptor class. It also removes the need to add new - * type-specific 'report()' methods to be added to Reporter interface whenever a - * new UsbDescriptor subclass is defined. This seems like a pretty good trade-off. - * - * See HTMLReporter.java in this package for an example of type decoding. - */ -public interface Reporter { - /** - * Generate report for this UsbDescriptor descriptor - */ - void report(UsbDescriptor descriptor); -} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java index c13111b3e81c04d40697d284a5704bbf04de9aaf..be7c12e4a52130c38035ba2751fc62d51ae3c1d8 100644 --- a/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java +++ b/services/usb/java/com/android/server/usb/descriptors/report/Reporting.java @@ -16,12 +16,16 @@ package com.android.server.usb.descriptors.report; /** - * Declares the interface for classes that provide reporting functionality. - * (This is the double-indirection aspect of the "Visitor" pattern. + * @hide */ public interface Reporting { /** - * Declares the report method that UsbDescriptor subclasses call. + * TBD */ - void report(Reporter reporter); + void report(ReportCanvas canvas); + + /** + * TBD + */ + void shortReport(ReportCanvas canvas); } diff --git a/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java new file mode 100644 index 0000000000000000000000000000000000000000..a43569d40a673fe28aac0e3c55bfba6909447cc7 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/report/TextReportCanvas.java @@ -0,0 +1,106 @@ +/* + * 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.usb.descriptors.report; + +import android.hardware.usb.UsbDeviceConnection; + +/** + * @hide + * A concrete implementation of ReportCanvas class which generates "Plain Text" output. + */ +public final class TextReportCanvas extends ReportCanvas { + private static final String TAG = "TextReportCanvas"; + + private final StringBuilder mStringBuilder; + private int mListIndent; + private static final int LIST_INDENT_AMNT = 2; + + /** + * Constructor. Connects plain-text output to the provided StringBuilder. + * @param connection The USB connection object used to retrieve strings + * from the USB device. + * @param stringBuilder Generated output gets written into this object. + */ + public TextReportCanvas(UsbDeviceConnection connection, StringBuilder stringBuilder) { + super(connection); + + mStringBuilder = stringBuilder; + } + + private void writeListIndent() { + for (int space = 0; space < mListIndent; space++) { + mStringBuilder.append(" "); + } + } + + @Override + public void write(String text) { + mStringBuilder.append(text); + } + + @Override + public void openHeader(int level) { + writeListIndent(); + mStringBuilder.append("["); + } + + @Override + public void closeHeader(int level) { + mStringBuilder.append("]\n"); + } + + @Override + public void openParagraph(boolean emphasis) { + writeListIndent(); + } + + @Override + public void closeParagraph() { + mStringBuilder.append("\n"); + } + + @Override + public void writeParagraph(String text, boolean inRed) { + openParagraph(inRed); + if (inRed) { + mStringBuilder.append("*" + text + "*"); + } else { + mStringBuilder.append(text); + } + closeParagraph(); + } + + @Override + public void openList() { + mListIndent += LIST_INDENT_AMNT; + } + + @Override + public void closeList() { + mListIndent -= LIST_INDENT_AMNT; + } + + @Override + public void openListItem() { + writeListIndent(); + mStringBuilder.append("- "); + } + + @Override + public void closeListItem() { + mStringBuilder.append("\n"); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java index 0461150abd275fa4a4df30cec2349c2e6d601e42..64ecebc29db6e308d79a713cfea5a8b7eb86240e 100644 --- a/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java +++ b/services/usb/java/com/android/server/usb/descriptors/report/UsbStrings.java @@ -16,6 +16,7 @@ package com.android.server.usb.descriptors.report; import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.UsbASFormat; import com.android.server.usb.descriptors.UsbDescriptor; import com.android.server.usb.descriptors.UsbTerminalTypes; @@ -25,7 +26,7 @@ import java.util.HashMap; * @hide * A class to provide human-readable strings for various USB constants. */ -public class UsbStrings { +public final class UsbStrings { private static final String TAG = "UsbStrings"; private static HashMap sDescriptorNames; @@ -35,6 +36,11 @@ public class UsbStrings { private static HashMap sAudioSubclassNames; private static HashMap sAudioEncodingNames; private static HashMap sTerminalNames; + private static HashMap sFormatNames; + + static { + allocUsbStrings(); + } private static void initDescriptorNames() { sDescriptorNames = new HashMap(); @@ -70,6 +76,11 @@ public class UsbStrings { sACControlInterfaceNames.put(UsbACInterface.ACI_FEATURE_UNIT, "Feature Unit"); sACControlInterfaceNames.put(UsbACInterface.ACI_PROCESSING_UNIT, "Processing Unit"); sACControlInterfaceNames.put(UsbACInterface.ACI_EXTENSION_UNIT, "Extension Unit"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SOURCE, "Clock Source"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_SELECTOR, "Clock Selector"); + sACControlInterfaceNames.put(UsbACInterface.ACI_CLOCK_MULTIPLIER, "Clock Multiplier"); + sACControlInterfaceNames.put(UsbACInterface.ACI_SAMPLE_RATE_CONVERTER, + "Sample Rate Converter"); } private static void initACStreamingInterfaceNames() { @@ -213,10 +224,33 @@ public class UsbStrings { ? name : "Unknown Terminal Type 0x" + Integer.toHexString(terminalType); } + + private static void initFormatNames() { + sFormatNames = new HashMap(); + + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_I, "FORMAT_TYPE_I"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_II, "FORMAT_TYPE_II"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_III, "FORMAT_TYPE_III"); + sFormatNames.put((int) UsbASFormat.FORMAT_TYPE_IV, "FORMAT_TYPE_IV"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_I, "EXT_FORMAT_TYPE_I"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_II, "EXT_FORMAT_TYPE_II"); + sFormatNames.put((int) UsbASFormat.EXT_FORMAT_TYPE_III, "EXT_FORMAT_TYPE_III"); + } + + /** + * Retrieves the name for the specified format (encoding) type ID. + */ + public static String getFormatName(int format) { + String name = sFormatNames.get(format); + return name != null + ? name + : "Unknown Format Type 0x" + Integer.toHexString(format); + } + /** * Initializes string tables. */ - public static void allocUsbStrings() { + private static void allocUsbStrings() { initDescriptorNames(); initACControlInterfaceNames(); initACStreamingInterfaceNames(); @@ -224,19 +258,7 @@ public class UsbStrings { initAudioSubclassNames(); initAudioEncodingNames(); initTerminalNames(); - } - - /** - * Initializes string tables. - */ - public static void releaseUsbStrings() { - sDescriptorNames = null; - sACControlInterfaceNames = null; - sACStreamingInterfaceNames = null; - sClassNames = null; - sAudioSubclassNames = null; - sAudioEncodingNames = null; - sTerminalNames = null; + initFormatNames(); } /** @@ -309,4 +331,11 @@ public class UsbStrings { : "Unknown Format (encoding) ID [0x" + Integer.toHexString(formatID) + ":" + formatID + "]"; } + + /** + * Retrieves the name for the specified USB audio interface subclass ID. + */ + public static String getACInterfaceSubclassName(byte subClassID) { + return subClassID == UsbDescriptor.AUDIO_AUDIOCONTROL ? "AC Control" : "AC Streaming"; + } } diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java new file mode 100644 index 0000000000000000000000000000000000000000..6dbf415ce7f915c5cac0992a0b7fb613685d6c1d --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsACInterfaceNode.java @@ -0,0 +1,46 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * A tree node containing some sort-of Audio Class Descriptor. + */ +public final class UsbDescriptorsACInterfaceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsACInterfaceNode"; + + private final UsbACInterface mACInterface; + + /** + * Constructor. + * @param acInterface The Audio Class Inteface object wrapped by this tree node. + */ + public UsbDescriptorsACInterfaceNode(UsbACInterface acInterface) { + mACInterface = acInterface; + } + + @Override + public void report(ReportCanvas canvas) { + canvas.writeListItem("AC Interface type: 0x" + + Integer.toHexString(mACInterface.getSubtype())); + canvas.openList(); + mACInterface.report(canvas); + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java new file mode 100644 index 0000000000000000000000000000000000000000..64f9496ae7c86ece8a6a2dbe48eaf6e45f519f2f --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsConfigNode.java @@ -0,0 +1,63 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbConfigDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * Represents a configuration in the descriptors tree. + */ +public final class UsbDescriptorsConfigNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsConfigNode"; + + private final UsbConfigDescriptor mConfigDescriptor; + + private final ArrayList mInterfaceNodes = new ArrayList<>(); + + /** + * Constructor. + * @param configDescriptor The Config Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsConfigNode(UsbConfigDescriptor configDescriptor) { + mConfigDescriptor = configDescriptor; + } + + /** + * Adds the inteface node logical contained in this configuration. + * @param interfaceNode The inteface treenode to assocate with this configuration. + */ + public void addInterfaceNode(UsbDescriptorsInterfaceNode interfaceNode) { + mInterfaceNodes.add(interfaceNode); + } + + @Override + public void report(ReportCanvas canvas) { + mConfigDescriptor.report(canvas); + + canvas.openList(); + + // Interfaces + for (UsbDescriptorsInterfaceNode node : mInterfaceNodes) { + node.report(canvas); + } + + canvas.closeList(); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java new file mode 100644 index 0000000000000000000000000000000000000000..898a06ecdafccfc60499b6a6ca864630ab89e771 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsDeviceNode.java @@ -0,0 +1,56 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbDeviceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * A class to contain THE device descriptor at the root of the tree. + */ +public final class UsbDescriptorsDeviceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsDeviceNode"; + + private final UsbDeviceDescriptor mDeviceDescriptor; + + private final ArrayList mConfigNodes = new ArrayList<>(); + + /** + * Constructor. + * @param deviceDescriptor The Device Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsDeviceNode(UsbDeviceDescriptor deviceDescriptor) { + mDeviceDescriptor = deviceDescriptor; + } + + /** + * Adds a Configuration node to the assocated device node. + */ + public void addConfigDescriptorNode(UsbDescriptorsConfigNode configNode) { + mConfigNodes.add(configNode); + } + + @Override + public void report(ReportCanvas canvas) { + mDeviceDescriptor.report(canvas); + for (UsbDescriptorsConfigNode node : mConfigNodes) { + node.report(canvas); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java new file mode 100644 index 0000000000000000000000000000000000000000..72864172147e57b3ad8931a76e8be0134fcc9564 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsEndpointNode.java @@ -0,0 +1,42 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbEndpointDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +/** + * @hide + * Represents an endpoint in the descriptors tree. + */ +public final class UsbDescriptorsEndpointNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsEndpointNode"; + + private final UsbEndpointDescriptor mEndpointDescriptor; + + /** + * Constructor. + * @param endpointDescriptor The Device Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsEndpointNode(UsbEndpointDescriptor endpointDescriptor) { + mEndpointDescriptor = endpointDescriptor; + } + + @Override + public void report(ReportCanvas canvas) { + mEndpointDescriptor.report(canvas); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java new file mode 100644 index 0000000000000000000000000000000000000000..d49d88db98820939f6d19ddc9cc975e3675a4018 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsInterfaceNode.java @@ -0,0 +1,83 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbInterfaceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/** + * @hide + * Represents an interface in the descriptors tree. + */ +public final class UsbDescriptorsInterfaceNode extends UsbDescriptorsTreeNode { + private static final String TAG = "UsbDescriptorsInterfaceNode"; + + private final UsbInterfaceDescriptor mInterfaceDescriptor; + + private final ArrayList mEndpointNodes = new ArrayList<>(); + private final ArrayList mACInterfaceNodes = new ArrayList<>(); + + /** + * Constructor. + * @param interfaceDescriptor The Interface Descriptor object wrapped by this tree node. + */ + public UsbDescriptorsInterfaceNode(UsbInterfaceDescriptor interfaceDescriptor) { + mInterfaceDescriptor = interfaceDescriptor; + } + + /** + * Adds an endpoint descriptor as a child of this interface node. + * @param endpointNode The endpoint descriptor node to add to this interface node. + */ + public void addEndpointNode(UsbDescriptorsEndpointNode endpointNode) { + mEndpointNodes.add(endpointNode); + } + + /** + * Adds an Audio-class interface descriptor as a child of this interface node. + * @param acInterfaceNode The audio-class descriptor node to add to this interface node. + */ + public void addACInterfaceNode(UsbDescriptorsACInterfaceNode acInterfaceNode) { + mACInterfaceNodes.add(acInterfaceNode); + } + + @Override + public void report(ReportCanvas canvas) { + mInterfaceDescriptor.report(canvas); + + // Audio Class Interfaces + if (mACInterfaceNodes.size() > 0) { + canvas.writeParagraph("Audio Class Interfaces", false); + canvas.openList(); + for (UsbDescriptorsACInterfaceNode node : mACInterfaceNodes) { + node.report(canvas); + } + canvas.closeList(); + } + + // Endpoints + if (mEndpointNodes.size() > 0) { + canvas.writeParagraph("Endpoints", false); + canvas.openList(); + for (UsbDescriptorsEndpointNode node : mEndpointNodes) { + node.report(canvas); + } + canvas.closeList(); + } + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java new file mode 100644 index 0000000000000000000000000000000000000000..1aa30fa94f420f384f1d8a5874812edbc586a911 --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTree.java @@ -0,0 +1,145 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.UsbACInterface; +import com.android.server.usb.descriptors.UsbConfigDescriptor; +import com.android.server.usb.descriptors.UsbDescriptor; +import com.android.server.usb.descriptors.UsbDescriptorParser; +import com.android.server.usb.descriptors.UsbDeviceDescriptor; +import com.android.server.usb.descriptors.UsbEndpointDescriptor; +import com.android.server.usb.descriptors.UsbInterfaceDescriptor; +import com.android.server.usb.descriptors.report.ReportCanvas; + +import java.util.ArrayList; + +/* + * The general layout of the tree looks like this, though no guarentee about + * ordering of descriptors beyond the Device -> Config -> Interface. + * + * Device Descriptor + * +- Config Descriptor + * +- Interface Descriptor + * | +- Audio Class Interface + * | +- Audio Class Interface + * | +- Audio Class Interface + * | +- Endpoint Descriptor + * | +- Endpoint Descriptor + * +- Interface Descriptor + * +- Endpoint Descriptor + */ +/** + * @hide + * + * A class which builds a tree representation from the results of a (linear) + * parse of USB descriptors. + * + * @see {@link com.android.server.usb.descriptors.UsbDescriptorsParser UsbDescriptorsParser} + */ +public final class UsbDescriptorsTree { + private static final String TAG = "UsbDescriptorsTree"; + + private UsbDescriptorsDeviceNode mDeviceNode; + private UsbDescriptorsConfigNode mConfigNode; // being parsed + private UsbDescriptorsInterfaceNode mInterfaceNode; // being parsed + + /** + * Adds THE device descriptor as the root of the tree. + */ + private void addDeviceDescriptor(UsbDeviceDescriptor deviceDescriptor) { + mDeviceNode = new UsbDescriptorsDeviceNode(deviceDescriptor); + } + + /** + * Adds A config descriptor to the tree. + */ + private void addConfigDescriptor(UsbConfigDescriptor configDescriptor) { + mConfigNode = new UsbDescriptorsConfigNode(configDescriptor); + mDeviceNode.addConfigDescriptorNode(mConfigNode); + } + + /** + * Adds AN interface descriptor to the current configuration in the tree. + */ + private void addInterfaceDescriptor(UsbInterfaceDescriptor interfaceDescriptor) { + mInterfaceNode = new UsbDescriptorsInterfaceNode(interfaceDescriptor); + mConfigNode.addInterfaceNode(mInterfaceNode); + } + + /** + * Adds an endpoint descriptor to the current interface in the tree. + */ + private void addEndpointDescriptor(UsbEndpointDescriptor endpointDescriptor) { + mInterfaceNode.addEndpointNode(new UsbDescriptorsEndpointNode(endpointDescriptor)); + } + + /** + * Adds an audio-class interface descriptor to the current interface in the tree. + */ + private void addACInterface(UsbACInterface acInterface) { + mInterfaceNode.addACInterfaceNode(new UsbDescriptorsACInterfaceNode(acInterface)); + } + + /** + * Parses the linear descriptor list contained in the parser argument, into a tree + * representation corresponding to the logical structure of the USB descriptors. + */ + public void parse(UsbDescriptorParser parser) { + + ArrayList descriptors = parser.getDescriptors(); + + for (int descrIndex = 0; descrIndex < descriptors.size(); descrIndex++) { + UsbDescriptor descriptor = descriptors.get(descrIndex); + switch (descriptor.getType()) { + // + // Basic Descriptors + // + case UsbDescriptor.DESCRIPTORTYPE_DEVICE: + addDeviceDescriptor((UsbDeviceDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_CONFIG: + addConfigDescriptor((UsbConfigDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_INTERFACE: + addInterfaceDescriptor((UsbInterfaceDescriptor) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_ENDPOINT: + addEndpointDescriptor((UsbEndpointDescriptor) descriptor); + break; + + // + // Audio Class Descriptors + // + case UsbDescriptor.DESCRIPTORTYPE_AUDIO_INTERFACE: + addACInterface((UsbACInterface) descriptor); + break; + + case UsbDescriptor.DESCRIPTORTYPE_AUDIO_ENDPOINT: + break; + } + } + } + + /** + * Generate a report of the descriptors tree. + */ + public void report(ReportCanvas canvas) { + mDeviceNode.report(canvas); + } +} diff --git a/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java new file mode 100644 index 0000000000000000000000000000000000000000..aca3cd907372032d1eb45313078a5d95df31bdde --- /dev/null +++ b/services/usb/java/com/android/server/usb/descriptors/tree/UsbDescriptorsTreeNode.java @@ -0,0 +1,41 @@ +/* + * 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.usb.descriptors.tree; + +import com.android.server.usb.descriptors.report.ReportCanvas; +import com.android.server.usb.descriptors.report.Reporting; + +/** + * @hide + * A shared super class for UsbDescriptor tree nodes. + */ +public class UsbDescriptorsTreeNode implements Reporting { + private static final String TAG = "UsbDescriptorsTreeNode"; + + /** + * Implements generate a comprehehensive report of descriptor. + */ + @Override + public void report(ReportCanvas canvas) { + } + + /** + * Implements generate an abreviated report of descriptor. + */ + @Override + public void shortReport(ReportCanvas canvas) { + } +} diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 4ffacfd7056aab369f66eee83eec7d070823e5ca..1569ac32128be0a4ec7c8ae7200359c2fb33aaf3 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -183,7 +183,7 @@ public class VoiceInteractionManagerService extends SystemService { private final boolean mEnableService; VoiceInteractionManagerServiceStub() { - mEnableService = shouldEnableService(mContext.getResources()); + mEnableService = shouldEnableService(mContext); } // TODO: VI Make sure the caller is the current user or profile @@ -348,10 +348,15 @@ public class VoiceInteractionManagerService extends SystemService { } } - private boolean shouldEnableService(Resources res) { - // VoiceInteractionService should not be enabled on low ram devices unless it has the config flag. - return !ActivityManager.isLowRamDeviceStatic() || - getForceVoiceInteractionServicePackage(res) != null; + private boolean shouldEnableService(Context context) { + // VoiceInteractionService should not be enabled on any low RAM devices + // or devices that have not declared the recognition feature, unless the + // device's configuration has explicitly set the config flag for a fixed + // voice interaction service. + return (!ActivityManager.isLowRamDeviceStatic() + && context.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_VOICE_RECOGNIZERS)) || + getForceVoiceInteractionServicePackage(context.getResources()) != null; } private String getForceVoiceInteractionServicePackage(Resources res) { diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index f81c89af8abfa6d12e67ff0f770d9b8b2b937155..a07f2bbf332327b70726d66bb3f2500d81763b5c 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -19,7 +19,6 @@ package android.telecom; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.SystemApi; -import android.annotation.TestApi; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -1147,8 +1146,8 @@ public final class Call { return new String(mReadBuffer, 0, numRead); } catch (IOException e) { Log.w(this, "Exception encountered when reading from InputStreamReader: %s", e); + return null; } - return null; } /** @@ -1156,12 +1155,14 @@ public final class Call { * be read. * @return A string containing text entered by the user, or {@code null} if the user has * not entered any new text yet. - * @hide */ - @TestApi public String readImmediately() throws IOException { if (mReceiveStream.ready()) { - return read(); + int numRead = mReceiveStream.read(mReadBuffer, 0, READ_BUFFER_SIZE); + if (numRead < 0) { + return null; + } + return new String(mReadBuffer, 0, numRead); } else { return null; } diff --git a/telecomm/java/android/telecom/DefaultDialerManager.java b/telecomm/java/android/telecom/DefaultDialerManager.java index 2a707c91ebe40635e1940d24def5548c75aaf543..1806aee27e31f9d877ea03a475019c8be1808b42 100644 --- a/telecomm/java/android/telecom/DefaultDialerManager.java +++ b/telecomm/java/android/telecom/DefaultDialerManager.java @@ -22,6 +22,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Process; +import android.os.UserHandle; import android.provider.Settings; import android.text.TextUtils; @@ -163,7 +164,10 @@ public class DefaultDialerManager { for (ResolveInfo resolveInfo : resolveInfoList) { final ActivityInfo activityInfo = resolveInfo.activityInfo; - if (activityInfo != null && !packageNames.contains(activityInfo.packageName)) { + if (activityInfo != null + && !packageNames.contains(activityInfo.packageName) + // ignore cross profile intent handler + && resolveInfo.targetUserId == UserHandle.USER_CURRENT) { packageNames.add(activityInfo.packageName); } } diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index de205380c3a7502ffd0d35563729810418611fee..3361b5b6e7777e2384617a5fa93ae1834b711c06 100644 --- a/telecomm/java/android/telecom/Log.java +++ b/telecomm/java/android/telecom/Log.java @@ -56,7 +56,7 @@ public class Log { public static boolean ERROR = isLoggable(android.util.Log.ERROR); private static final boolean FORCE_LOGGING = false; /* STOP SHIP if true */ - private static final boolean USER_BUILD = Build.TYPE.equals("user"); + private static final boolean USER_BUILD = Build.IS_USER; // Used to synchronize singleton logging lazy initialization private static final Object sSingletonSync = new Object(); diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 4d57dc2d974a144cab776fff47402e34a220fb78..62be2c5ea28d56d2c34a4b8ad2e762e9a9363c4d 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -26,6 +26,7 @@ import android.content.Context; import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ServiceManager; +import android.service.carrier.CarrierService; import com.android.ims.ImsReasonInfo; import com.android.internal.telephony.ICarrierConfigLoader; @@ -267,6 +268,19 @@ public class CarrierConfigManager { public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string"; + /** + * Override the package that will manage {@link SubscriptionPlan} + * information instead of the {@link CarrierService} that defines this + * value. + * + * @see SubscriptionManager#getSubscriptionPlans(int) + * @see SubscriptionManager#setSubscriptionPlans(int, java.util.List) + * @hide + */ + @SystemApi + public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = + "config_plans_package_override_string"; + /** * Override the platform's notion of a network operator being considered roaming. * Value is string array of SIDs to be considered roaming for 3GPP2 RATs. @@ -762,6 +776,18 @@ public class CarrierConfigManager { */ public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int"; + /** + * Some carriers will send call forwarding responses for voicemail in a format that is not 3gpp + * compliant, which causes issues during parsing. This causes the + * {@link com.android.internal.telephony.CallForwardInfo#number} to contain non-numerical + * characters instead of a number. + * + * If true, we will detect the non-numerical characters and replace them with "Voicemail". + * @hide + */ + public static final String KEY_CALL_FORWARDING_MAP_NON_NUMBER_TO_VOICEMAIL_BOOL = + "call_forwarding_map_non_number_to_voicemail_bool"; + /** * Determines whether conference calls are supported by a carrier. When {@code true}, * conference calling is supported, {@code false otherwise}. @@ -798,7 +824,6 @@ public class CarrierConfigManager { * Determines whether High Definition audio property is displayed in the dialer UI. * If {@code false}, remove the HD audio property from the connection so that HD audio related * UI is not displayed. If {@code true}, keep HD audio property as it is configured. - * @hide */ public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool"; @@ -1211,8 +1236,6 @@ public class CarrierConfigManager { /** @hide */ public static final int CDMA_ROAMING_MODE_AFFILIATED = 1; /** @hide */ - public static final int IMSI_ENCRYPTION_DAYS_TIME_DISABLED = -1; - /** @hide */ public static final int CDMA_ROAMING_MODE_ANY = 2; /** * Boolean indicating if support is provided for directly dialing FDN number from FDN list. @@ -1406,6 +1429,16 @@ public class CarrierConfigManager { public static final String KEY_PREF_NETWORK_NOTIFICATION_DELAY_INT = "network_notification_delay_int"; + /** + * Time delay (in ms) after which we show the notification for emergency calls, + * while the device is registered over WFC. Default value is -1, which indicates + * that this notification is not pertinent for a particular carrier. We've added a delay + * to prevent false positives. + * @hide + */ + public static final String KEY_EMERGENCY_NOTIFICATION_DELAY_INT = + "emergency_notification_delay_int"; + /** * When {@code true}, the carrier allows the user of the * {@link TelephonyManager#sendUssdRequest(String, TelephonyManager.UssdResponseCallback, @@ -1442,17 +1475,6 @@ public class CarrierConfigManager { public static final String KEY_NOTIFY_INTERNATIONAL_CALL_ON_WFC_BOOL = "notify_international_call_on_wfc_bool"; - /** - * Determine whether user edited tether APN (type dun) has effect - * {@code false} - Default. APN with dun type in telephony database has no effect. - * - * {@code true} - DUN APN added/edited in ApnEditor will be used for tethering data call. - * - * @hide - */ - public static final String KEY_EDITABLE_TETHER_APN_BOOL = - "editable_tether_apn_bool"; - /** * An array containing custom call forwarding number prefixes that will be blocked while the * device is reporting that it is roaming. By default, there are no custom call @@ -1468,11 +1490,11 @@ public class CarrierConfigManager { /** * The day of the month (1-31) on which the data cycle rolls over. *

          - * If the current month does not have this day, the cycle will roll over at the start of the - * next month. + * If the current month does not have this day, the cycle will roll over at + * the start of the next month. *

          - * This setting may be still overridden by explicit user choice. By default, the platform value - * will be used. + * This setting may be still overridden by explicit user choice. By default, + * the platform value will be used. */ public static final String KEY_MONTHLY_DATA_CYCLE_DAY_INT = "monthly_data_cycle_day_int"; @@ -1484,6 +1506,7 @@ public class CarrierConfigManager { * * @hide */ + @Deprecated public static final int DATA_CYCLE_USE_PLATFORM_DEFAULT = -1; /** @@ -1589,14 +1612,15 @@ public class CarrierConfigManager { public static final String IMSI_KEY_DOWNLOAD_URL_STRING = "imsi_key_download_url_string"; /** - * Time in days, after which the key will expire, and a new key will need to be downloaded. - * default value is {@link IMSI_ENCRYPTION_DAYS_TIME_DISABLED}, and indicates that IMSI - * encryption is not enabled by default for a carrier. Value of 0 indicates that the key - * does not expire. + * Identifies if the key is available for WLAN or EPDG or both. The value is a bitmask. + * 0 indicates that neither EPDG or WLAN is enabled. + * 1 indicates that key type {@link TelephonyManager#KEY_TYPE_EPDG} is enabled. + * 2 indicates that key type {@link TelephonyManager#KEY_TYPE_WLAN} is enabled. + * 3 indicates that both are enabled. * @hide */ - public static final String IMSI_KEY_EXPIRATION_DAYS_TIME_INT = - "imsi_key_expiration_days_time_int"; + public static final String IMSI_KEY_AVAILABILITY_INT = "imsi_key_availability_int"; + /** * Key identifying if the CDMA Caller ID presentation and suppression MMI codes @@ -1608,7 +1632,7 @@ public class CarrierConfigManager { */ public static final String KEY_CONVERT_CDMA_CALLER_ID_MMI_CODES_WHILE_ROAMING_ON_3GPP_BOOL = "convert_cdma_caller_id_mmi_codes_while_roaming_on_3gpp_bool"; - + /** * Flag specifying whether IMS registration state menu is shown in Status Info setting, * default to false. @@ -1802,6 +1826,7 @@ public class CarrierConfigManager { sDefaults.putInt(KEY_GSM_DTMF_TONE_DELAY_INT, 0); 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.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); @@ -1872,8 +1897,8 @@ public class CarrierConfigManager { sDefaults.putString(KEY_CARRIER_SETUP_APP_STRING, ""); sDefaults.putStringArray(KEY_CARRIER_APP_WAKE_SIGNAL_CONFIG_STRING_ARRAY, new String[]{ - "com.android.carrierdefaultapp/.CarrierDefaultBroadcastReceiver:" + - "com.android.internal.telephony.CARRIER_SIGNAL_RESET" + "com.android.carrierdefaultapp/.CarrierDefaultBroadcastReceiver:" + + "com.android.internal.telephony.CARRIER_SIGNAL_RESET" }); sDefaults.putStringArray(KEY_CARRIER_APP_NO_WAKE_SIGNAL_CONFIG_STRING_ARRAY, null); @@ -1926,19 +1951,19 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_PERSIST_LPP_MODE_BOOL, false); sDefaults.putStringArray(KEY_CARRIER_WIFI_STRING_ARRAY, null); sDefaults.putInt(KEY_PREF_NETWORK_NOTIFICATION_DELAY_INT, -1); + sDefaults.putInt(KEY_EMERGENCY_NOTIFICATION_DELAY_INT, -1); sDefaults.putBoolean(KEY_ALLOW_USSD_REQUESTS_VIA_TELEPHONY_MANAGER_BOOL, true); sDefaults.putBoolean(KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL, true); sDefaults.putBoolean(KEY_DISPLAY_VOICEMAIL_NUMBER_AS_DEFAULT_CALL_FORWARDING_NUMBER_BOOL, false); sDefaults.putBoolean(KEY_NOTIFY_INTERNATIONAL_CALL_ON_WFC_BOOL, false); - sDefaults.putBoolean(KEY_EDITABLE_TETHER_APN_BOOL, false); sDefaults.putStringArray(KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY, null); sDefaults.putInt(KEY_LTE_EARFCNS_RSRP_BOOST_INT, 0); sDefaults.putStringArray(KEY_BOOSTED_LTE_EARFCNS_STRING_ARRAY, null); sDefaults.putBoolean(KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL, false); sDefaults.putBoolean(KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL, false); - sDefaults.putInt(IMSI_KEY_EXPIRATION_DAYS_TIME_INT, IMSI_ENCRYPTION_DAYS_TIME_DISABLED); + sDefaults.putInt(IMSI_KEY_AVAILABILITY_INT, 0); sDefaults.putString(IMSI_KEY_DOWNLOAD_URL_STRING, null); sDefaults.putBoolean(KEY_CONVERT_CDMA_CALLER_ID_MMI_CODES_WHILE_ROAMING_ON_3GPP_BOOL, false); @@ -2048,6 +2073,15 @@ public class CarrierConfigManager { } } + /** {@hide} */ + public String getDefaultCarrierServicePackageName() { + try { + return getICarrierConfigLoader().getDefaultCarrierServicePackageName(); + } catch (Throwable t) { + return null; + } + } + /** * Returns a new bundle with the default value for every supported configuration variable. * diff --git a/telephony/java/android/telephony/ImsiEncryptionInfo.java b/telephony/java/android/telephony/ImsiEncryptionInfo.java index 674bd455cd4a72d19af2bc668a177b2d53d3998c..d2680ad66ed1037c9bf42b99c85805b539988082 100644 --- a/telephony/java/android/telephony/ImsiEncryptionInfo.java +++ b/telephony/java/android/telephony/ImsiEncryptionInfo.java @@ -36,6 +36,7 @@ public final class ImsiEncryptionInfo implements Parcelable { private static final String LOG_TAG = "ImsiEncryptionInfo"; + private final String mcc; private final String mnc; private final PublicKey publicKey; diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index 1b942de860bebb6cf43b627614a454b6ebd2c60c..ff6711632252fe6f81895726affb35897f6c728f 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -2617,11 +2617,11 @@ public class PhoneNumberUtils } // Split a phone number like "+20(123)-456#" using spaces, ignoring anything that is not - // a digit, to produce a result like "20 123 456". + // a digit or the characters * and #, to produce a result like "20 123 456#". private static String splitAtNonNumerics(CharSequence number) { StringBuilder sb = new StringBuilder(number.length()); for (int i = 0; i < number.length(); i++) { - sb.append(PhoneNumberUtils.isISODigit(number.charAt(i)) + sb.append(PhoneNumberUtils.is12Key(number.charAt(i)) ? number.charAt(i) : " "); } diff --git a/telephony/java/android/telephony/Rlog.java b/telephony/java/android/telephony/Rlog.java index 2a31e3a7bda285539aa385a5c11f454cd044cff5..e0b46e10eab5d7373bd23985ef6129c45101b2e1 100644 --- a/telephony/java/android/telephony/Rlog.java +++ b/telephony/java/android/telephony/Rlog.java @@ -33,7 +33,7 @@ import java.security.NoSuchAlgorithmException; */ public final class Rlog { - private static final boolean USER_BUILD = Build.TYPE.equals("user"); + private static final boolean USER_BUILD = Build.IS_USER; private Rlog() { } diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index d2fd0979df2286bd47ebe8f2828088080a97bb81..c84db959d0c5627ef2bfbaff85fc315086f1a344 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -18,12 +18,14 @@ package android.telephony; import android.annotation.NonNull; import android.annotation.SdkConstant; -import android.annotation.SystemService; +import android.annotation.SystemApi; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.SystemService; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; +import android.net.INetworkPolicyManager; import android.net.Uri; import android.os.Handler; import android.os.Looper; @@ -31,13 +33,13 @@ import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.util.DisplayMetrics; - import com.android.internal.telephony.IOnSubscriptionsChangedListener; import com.android.internal.telephony.ISub; import com.android.internal.telephony.ITelephonyRegistry; import com.android.internal.telephony.PhoneConstants; - import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -58,7 +60,7 @@ public class SubscriptionManager { /** Base value for Dummy SUBSCRIPTION_ID's. */ /** FIXME: Remove DummySubId's, but for now have them map just below INVALID_SUBSCRIPTION_ID - /** @hide */ + /** @hide */ public static final int DUMMY_SUBSCRIPTION_ID_BASE = INVALID_SUBSCRIPTION_ID - 1; /** An invalid phone identifier */ @@ -367,7 +369,7 @@ public class SubscriptionManager { */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String SUB_DEFAULT_CHANGED_ACTION = - "android.intent.action.SUB_DEFAULT_CHANGED"; + "android.intent.action.SUB_DEFAULT_CHANGED"; /** * Broadcast Action: The default subscription has changed. This has the following @@ -643,7 +645,7 @@ public class SubscriptionManager { } if (result == null) { - result = new ArrayList(); + result = new ArrayList<>(); } return result; } @@ -1472,8 +1474,8 @@ public class SubscriptionManager { try { ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); if (iSub != null) { - resultValue = iSub.getSubscriptionProperty(subId, propKey, - context.getOpPackageName()); + resultValue = iSub.getSubscriptionProperty(subId, propKey, + context.getOpPackageName()); } } catch (RemoteException ex) { // ignore it @@ -1563,4 +1565,63 @@ public class SubscriptionManager { } return false; } + + /** + * Get the description of the billing relationship plan between a carrier + * and a specific subscriber. + *

          + * This method is only accessible to the following narrow set of apps: + *

            + *
          • The carrier app for this subscriberId, as determined by + * {@link TelephonyManager#hasCarrierPrivileges(int)}. + *
          • The carrier app explicitly delegated access through + * {@link CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING}. + *
          + * + * @param subId the subscriber this relationship applies to + * @hide + */ + @SystemApi + public @NonNull List getSubscriptionPlans(int subId) { + final INetworkPolicyManager npm = INetworkPolicyManager.Stub + .asInterface(ServiceManager.getService(Context.NETWORK_POLICY_SERVICE)); + try { + SubscriptionPlan[] subscriptionPlans = + npm.getSubscriptionPlans(subId, mContext.getOpPackageName()); + return subscriptionPlans == null + ? Collections.emptyList() : Arrays.asList(subscriptionPlans); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Set the description of the billing relationship plan between a carrier + * and a specific subscriber. + *

          + * This method is only accessible to the following narrow set of apps: + *

            + *
          • The carrier app for this subscriberId, as determined by + * {@link TelephonyManager#hasCarrierPrivileges(int)}. + *
          • The carrier app explicitly delegated access through + * {@link CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING}. + *
          + * + * @param subId the subscriber this relationship applies to + * @param plans the list of plans. The first plan is always the primary and + * most important plan. Any additional plans are secondary and + * may not be displayed or used by decision making logic. + * @hide + */ + @SystemApi + public void setSubscriptionPlans(int subId, @NonNull List plans) { + final INetworkPolicyManager npm = INetworkPolicyManager.Stub + .asInterface(ServiceManager.getService(Context.NETWORK_POLICY_SERVICE)); + try { + npm.setSubscriptionPlans(subId, plans.toArray(new SubscriptionPlan[plans.size()]), + mContext.getOpPackageName()); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/telephony/java/android/telephony/SubscriptionPlan.aidl b/telephony/java/android/telephony/SubscriptionPlan.aidl new file mode 100755 index 0000000000000000000000000000000000000000..655df3a71b3d96f79ce5e6bfc31e0707fd071f67 --- /dev/null +++ b/telephony/java/android/telephony/SubscriptionPlan.aidl @@ -0,0 +1,19 @@ +/* + * 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.telephony; + +parcelable SubscriptionPlan; diff --git a/telephony/java/android/telephony/SubscriptionPlan.java b/telephony/java/android/telephony/SubscriptionPlan.java new file mode 100644 index 0000000000000000000000000000000000000000..265e3e7c8a014cdc3176925959163afecf5bfa65 --- /dev/null +++ b/telephony/java/android/telephony/SubscriptionPlan.java @@ -0,0 +1,301 @@ +/* + * 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.telephony; + +import android.annotation.BytesLong; +import android.annotation.CurrentTimeMillisLong; +import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.SystemApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Pair; +import android.util.RecurrenceRule; + +import com.android.internal.util.Preconditions; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.time.Period; +import java.time.ZonedDateTime; +import java.util.Iterator; + +/** + * Description of a billing relationship plan between a carrier and a specific + * subscriber. This information is used to present more useful UI to users, such + * as explaining how much mobile data they have remaining, and what will happen + * when they run out. + * + * @see SubscriptionManager#setSubscriptionPlans(int, java.util.List) + * @see SubscriptionManager#getSubscriptionPlans(int) + * @hide + */ +@SystemApi +public final class SubscriptionPlan implements Parcelable { + /** {@hide} */ + @IntDef(prefix = "LIMIT_BEHAVIOR_", value = { + LIMIT_BEHAVIOR_UNKNOWN, + LIMIT_BEHAVIOR_DISABLED, + LIMIT_BEHAVIOR_BILLED, + LIMIT_BEHAVIOR_THROTTLED, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface LimitBehavior {} + + /** When a resource limit is hit, the behavior is unknown. */ + public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; + /** When a resource limit is hit, access is disabled. */ + public static final int LIMIT_BEHAVIOR_DISABLED = 0; + /** When a resource limit is hit, the user is billed automatically. */ + public static final int LIMIT_BEHAVIOR_BILLED = 1; + /** When a resource limit is hit, access is throttled to a slower rate. */ + public static final int LIMIT_BEHAVIOR_THROTTLED = 2; + + /** Value indicating a number of bytes is unknown. */ + public static final long BYTES_UNKNOWN = -1; + /** Value indicating a number of bytes is unlimited. */ + public static final long BYTES_UNLIMITED = Long.MAX_VALUE; + + /** Value indicating a timestamp is unknown. */ + public static final long TIME_UNKNOWN = -1; + + private final RecurrenceRule cycleRule; + private CharSequence title; + private CharSequence summary; + private long dataLimitBytes = BYTES_UNKNOWN; + private int dataLimitBehavior = LIMIT_BEHAVIOR_UNKNOWN; + private long dataUsageBytes = BYTES_UNKNOWN; + private long dataUsageTime = TIME_UNKNOWN; + + private SubscriptionPlan(RecurrenceRule cycleRule) { + this.cycleRule = Preconditions.checkNotNull(cycleRule); + } + + private SubscriptionPlan(Parcel source) { + cycleRule = source.readParcelable(null); + title = source.readCharSequence(); + summary = source.readCharSequence(); + dataLimitBytes = source.readLong(); + dataLimitBehavior = source.readInt(); + dataUsageBytes = source.readLong(); + dataUsageTime = source.readLong(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(cycleRule, flags); + dest.writeCharSequence(title); + dest.writeCharSequence(summary); + dest.writeLong(dataLimitBytes); + dest.writeInt(dataLimitBehavior); + dest.writeLong(dataUsageBytes); + dest.writeLong(dataUsageTime); + } + + @Override + public String toString() { + return new StringBuilder("SubscriptionPlan{") + .append("cycleRule=").append(cycleRule) + .append(" title=").append(title) + .append(" summary=").append(summary) + .append(" dataLimitBytes=").append(dataLimitBytes) + .append(" dataLimitBehavior=").append(dataLimitBehavior) + .append(" dataUsageBytes=").append(dataUsageBytes) + .append(" dataUsageTime=").append(dataUsageTime) + .append("}").toString(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override + public SubscriptionPlan createFromParcel(Parcel source) { + return new SubscriptionPlan(source); + } + + @Override + public SubscriptionPlan[] newArray(int size) { + return new SubscriptionPlan[size]; + } + }; + + /** {@hide} */ + public @NonNull RecurrenceRule getCycleRule() { + return cycleRule; + } + + /** Return the short title of this plan. */ + public @Nullable CharSequence getTitle() { + return title; + } + + /** Return the short summary of this plan. */ + public @Nullable CharSequence getSummary() { + return summary; + } + + /** + * Return the usage threshold at which data access changes according to + * {@link #getDataLimitBehavior()}. + */ + public @BytesLong long getDataLimitBytes() { + return dataLimitBytes; + } + + /** + * Return the behavior of data access when usage reaches + * {@link #getDataLimitBytes()}. + */ + public @LimitBehavior int getDataLimitBehavior() { + return dataLimitBehavior; + } + + /** + * Return a snapshot of currently known mobile data usage at + * {@link #getDataUsageTime()}. + */ + public @BytesLong long getDataUsageBytes() { + return dataUsageBytes; + } + + /** + * Return the time at which {@link #getDataUsageBytes()} was valid. + */ + public @CurrentTimeMillisLong long getDataUsageTime() { + return dataUsageTime; + } + + /** + * Return an iterator that will return all valid data usage cycles based on + * any recurrence rules. The iterator starts from the currently active cycle + * and walks backwards through time. + */ + public Iterator> cycleIterator() { + return cycleRule.cycleIterator(); + } + + /** + * Builder for a {@link SubscriptionPlan}. + */ + public static class Builder { + private final SubscriptionPlan plan; + + /** {@hide} */ + public Builder(ZonedDateTime start, ZonedDateTime end, Period period) { + plan = new SubscriptionPlan(new RecurrenceRule(start, end, period)); + } + + /** + * Start defining a {@link SubscriptionPlan} that covers a very specific + * window of time, and never automatically recurs. + */ + public static Builder createNonrecurring(ZonedDateTime start, ZonedDateTime end) { + if (!end.isAfter(start)) { + throw new IllegalArgumentException( + "End " + end + " isn't after start " + start); + } + return new Builder(start, end, null); + } + + /** + * Start defining a {@link SubscriptionPlan} that will recur + * automatically every month. It will always recur on the same day of a + * particular month. When a particular month ends before the defined + * recurrence day, the plan will recur on the last instant of that + * month. + */ + public static Builder createRecurringMonthly(ZonedDateTime start) { + return new Builder(start, null, Period.ofMonths(1)); + } + + /** + * Start defining a {@link SubscriptionPlan} that will recur + * automatically every week. + */ + public static Builder createRecurringWeekly(ZonedDateTime start) { + return new Builder(start, null, Period.ofDays(7)); + } + + /** + * Start defining a {@link SubscriptionPlan} that will recur + * automatically every day. + */ + public static Builder createRecurringDaily(ZonedDateTime start) { + return new Builder(start, null, Period.ofDays(1)); + } + + public SubscriptionPlan build() { + return plan; + } + + /** Set the short title of this plan. */ + public Builder setTitle(@Nullable CharSequence title) { + plan.title = title; + return this; + } + + /** Set the short summary of this plan. */ + public Builder setSummary(@Nullable CharSequence summary) { + plan.summary = summary; + return this; + } + + /** + * Set the usage threshold at which data access changes. + * + * @param dataLimitBytes the usage threshold at which data access + * changes + * @param dataLimitBehavior the behavior of data access when usage + * reaches the threshold + */ + public Builder setDataLimit(@BytesLong long dataLimitBytes, + @LimitBehavior int dataLimitBehavior) { + if (dataLimitBytes < 0) { + throw new IllegalArgumentException("Limit bytes must be positive"); + } + if (dataLimitBehavior < 0) { + throw new IllegalArgumentException("Limit behavior must be defined"); + } + plan.dataLimitBytes = dataLimitBytes; + plan.dataLimitBehavior = dataLimitBehavior; + return this; + } + + /** + * Set a snapshot of currently known mobile data usage. + * + * @param dataUsageBytes the currently known mobile data usage + * @param dataUsageTime the time at which this snapshot was valid + */ + public Builder setDataUsage(@BytesLong long dataUsageBytes, + @CurrentTimeMillisLong long dataUsageTime) { + if (dataUsageBytes < 0) { + throw new IllegalArgumentException("Usage bytes must be positive"); + } + if (dataUsageTime < 0) { + throw new IllegalArgumentException("Usage time must be positive"); + } + plan.dataUsageBytes = dataUsageBytes; + plan.dataUsageTime = dataUsageTime; + return this; + } + } +} diff --git a/telephony/java/android/telephony/Telephony.java b/telephony/java/android/telephony/Telephony.java index 66ff6e4c0a75dba878f73c8021c0e90a0007ca98..d7b6142a5de6c77bd110d83a6baac11cd39b2e6a 100644 --- a/telephony/java/android/telephony/Telephony.java +++ b/telephony/java/android/telephony/Telephony.java @@ -1175,6 +1175,29 @@ public final class Telephony { } } + /** + * Base column for the table that contain Carrier Public key. + * @hide + */ + public interface CarrierColumns extends BaseColumns { + + public static final String MCC = "mcc"; + public static final String MNC = "mnc"; + public static final String KEY_TYPE = "key_type"; + public static final String MVNO_TYPE = "mvno_type"; + public static final String MVNO_MATCH_DATA = "mvno_match_data"; + public static final String PUBLIC_KEY = "public_key"; + public static final String KEY_IDENTIFIER = "key_identifier"; + public static final String EXPIRATION_TIME = "expiration_time"; + public static final String LAST_MODIFIED = "last_modified"; + + /** + * The {@code content://} style URL for this table. + * @hide + */ + public static final Uri CONTENT_URI = Uri.parse("content://carrier_information/carrier"); + } + /** * Base columns for tables that contain MMSs. */ diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 6b26dbb50c62ce866071d6f82ecdbbae3c600cc4..00aa4498967b5752179bc3f4ccf7dd596dd6cc96 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -136,7 +136,7 @@ public class TelephonyManager { /** @hide */ - static public final int KEY_TYPE_EPDDG = 1; + static public final int KEY_TYPE_EPDG = 1; /** @hide */ static public final int KEY_TYPE_WLAN = 2; @@ -764,12 +764,15 @@ public class TelephonyManager { * The {@link #EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT} extra is a * {@link android.app.PendingIntent} that will launch the voicemail settings. This extra is only * available when the voicemail number is not set. + * The {@link #EXTRA_IS_REFRESH} extra indicates whether the notification is a refresh or a new + * notification. * * @see #EXTRA_PHONE_ACCOUNT_HANDLE * @see #EXTRA_NOTIFICATION_COUNT * @see #EXTRA_VOICEMAIL_NUMBER * @see #EXTRA_CALL_VOICEMAIL_INTENT * @see #EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT + * @see #EXTRA_IS_REFRESH */ public static final String ACTION_SHOW_VOICEMAIL_NOTIFICATION = "android.telephony.action.SHOW_VOICEMAIL_NOTIFICATION"; @@ -808,6 +811,15 @@ public class TelephonyManager { public static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT = "android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT"; + /** + * Boolean value representing whether the {@link + * TelephonyManager#ACTION_SHOW_VOICEMAIL_NOTIFICATION} is new or a refresh of an existing + * notification. Notification refresh happens after reboot or connectivity changes. The user has + * already been notified for the voicemail so it should not alert the user, and should not be + * shown again if the user has dismissed it. + */ + public static final String EXTRA_IS_REFRESH = "android.telephony.extra.IS_REFRESH"; + /** * {@link android.telecom.Connection} event used to indicate that an IMS call has be * successfully handed over from WIFI to LTE. @@ -2366,31 +2378,73 @@ public class TelephonyManager { * Requires Permission: * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * @param keyType whether the key is being used for wlan or epdg. Valid key types are - * {@link TelephonyManager#KEY_TYPE_EPDDG} or + * {@link TelephonyManager#KEY_TYPE_EPDG} or * {@link TelephonyManager#KEY_TYPE_WLAN}. * @return ImsiEncryptionInfo Carrier specific information that will be used to encrypt the * IMSI and IMPI. This includes the public key and the key identifier. This information - * will be stored in the device keystore. + * will be stored in the device keystore. The system will return a null when no key was + * found, and the carrier does not require a key. The system will throw the following + * exceptions: + * 1. IllegalArgumentException when an invalid key is sent. + * 2. RuntimeException if the key is required but not found; and also if there was an + * internal exception. * @hide */ public ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int keyType) { try { IPhoneSubInfo info = getSubscriberInfo(); - if (info == null) return null; + if (info == null) { + throw new RuntimeException("IMSI error: Subscriber Info is null"); + } int subId = getSubId(SubscriptionManager.getDefaultDataSubscriptionId()); - if (keyType != KEY_TYPE_EPDDG && keyType != KEY_TYPE_WLAN) { - throw new IllegalArgumentException("Invalid key type"); + if (keyType != KEY_TYPE_EPDG && keyType != KEY_TYPE_WLAN) { + throw new IllegalArgumentException("IMSI error: Invalid key type"); + } + ImsiEncryptionInfo imsiEncryptionInfo = info.getCarrierInfoForImsiEncryption( + subId, keyType, mContext.getOpPackageName()); + if (imsiEncryptionInfo == null + && isImsiEncryptionRequired(subId, keyType)) { + Rlog.e(TAG, "IMSI error: key is required but not found"); + throw new RuntimeException("IMSI error: key is required but not found"); } - return info.getCarrierInfoForImsiEncryption(subId, keyType, - mContext.getOpPackageName()); + return imsiEncryptionInfo; } catch (RemoteException ex) { - Rlog.e(TAG, "getCarrierInfoForImsiEncryption RemoteException", ex); - return null; + Rlog.e(TAG, "getCarrierInfoForImsiEncryption RemoteException" + ex); + throw new RuntimeException("IMSI error: Remote Exception"); } catch (NullPointerException ex) { // This could happen before phone restarts due to crashing - Rlog.e(TAG, "getCarrierInfoForImsiEncryption NullPointerException", ex); - return null; + Rlog.e(TAG, "getCarrierInfoForImsiEncryption NullPointerException" + ex); + throw new RuntimeException("IMSI error: Null Pointer exception"); + } + } + + /** + * @param keyAvailability bitmask that defines the availabilty of keys for a type. + * @param keyType the key type which is being checked. (WLAN, EPDG) + * @return true if the digit at position keyType is 1, else false. + * @hide + */ + private static boolean isKeyEnabled(int keyAvailability, int keyType) { + int returnValue = (keyAvailability >> (keyType - 1)) & 1; + return (returnValue == 1) ? true : false; + } + + /** + * If Carrier requires Imsi to be encrypted. + * @hide + */ + private boolean isImsiEncryptionRequired(int subId, int keyType) { + CarrierConfigManager configManager = + (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE); + if (configManager == null) { + return false; + } + PersistableBundle pb = configManager.getConfigForSubId(subId); + if (pb == null) { + return false; } + int keyAvailability = pb.getInt(CarrierConfigManager.IMSI_KEY_AVAILABILITY_INT); + return isKeyEnabled(keyAvailability, keyType); } /** diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java index 8304d84d8a2b89ce9856df84b3c355f29c57d255..a13af5f4b90bb63a2710cc5ba708f492f53c091d 100644 --- a/telephony/java/android/telephony/euicc/EuiccManager.java +++ b/telephony/java/android/telephony/euicc/EuiccManager.java @@ -153,6 +153,14 @@ public class EuiccManager { public static final String EXTRA_EMBEDDED_SUBSCRIPTION_RESOLUTION_CALLBACK_INTENT = "android.telephony.euicc.extra.EMBEDDED_SUBSCRIPTION_RESOLUTION_CALLBACK_INTENT"; + /** + * Key for an extra set on the {@link #ACTION_PROVISION_EMBEDDED_SUBSCRIPTION} intent for + * whether the user choses to use eUICC to set up network in SUW. + * @hide + */ + public static final String EXTRA_FORCE_PROVISION = + "android.telephony.euicc.extra.FORCE_PROVISION"; + /** * Optional meta-data attribute for a carrier app providing an icon to use to represent the * carrier. If not provided, the app's launcher icon will be used as a fallback. diff --git a/telephony/java/com/android/internal/telephony/DctConstants.java b/telephony/java/com/android/internal/telephony/DctConstants.java index 256e13b57d614a60ee3a47844d5a42913cdd91dd..91032f342045890a3a6fc558cb09fffaf399adf0 100644 --- a/telephony/java/com/android/internal/telephony/DctConstants.java +++ b/telephony/java/com/android/internal/telephony/DctConstants.java @@ -107,6 +107,7 @@ public class DctConstants { public static final int EVENT_PCO_DATA_RECEIVED = BASE + 45; public static final int EVENT_SET_CARRIER_DATA_ENABLED = BASE + 46; public static final int EVENT_DATA_RECONNECT = BASE + 47; + public static final int EVENT_ROAMING_SETTING_CHANGE = BASE + 48; /***** Constants *****/ diff --git a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl index d77b27f8295ad4b41a1e8dd1df7e9a4b811d4bd4..511573170bb03ab3a9f657fdae5290e651e5c6c6 100644 --- a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl +++ b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl @@ -28,4 +28,7 @@ interface ICarrierConfigLoader { void notifyConfigChangedForSubId(int subId); void updateConfigForPhoneId(int phoneId, String simState); + + String getDefaultCarrierServicePackageName(); + } diff --git a/test-runner/Android.mk b/test-runner/Android.mk index a642fdfb58a03bacee8911bfcf868c4b3ba87cdd..060a51895474f2b975feab5cdf480dc6f0971a53 100644 --- a/test-runner/Android.mk +++ b/test-runner/Android.mk @@ -16,23 +16,142 @@ LOCAL_PATH:= $(call my-dir) +android_test_mock_source_files := $(call all-java-files-under, src/android/test/mock) + # Build the android.test.runner library # ===================================== include $(CLEAR_VARS) -LOCAL_SRC_FILES := $(call all-java-files-under, src) +LOCAL_SRC_FILES := \ + $(filter-out $(android_test_mock_source_files), $(call all-java-files-under, src)) -LOCAL_JAVA_LIBRARIES := core-oj core-libart framework legacy-test +LOCAL_JAVA_LIBRARIES := \ + core-oj \ + core-libart \ + framework \ + legacy-test \ + android.test.mock \ LOCAL_MODULE:= android.test.runner include $(BUILD_JAVA_LIBRARY) +# Build the repackaged.android.test.runner library +# ================================================ +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_JAVA_LIBRARIES := core-oj core-libart framework legacy-test + +LOCAL_JARJAR_RULES := $(LOCAL_PATH)/../legacy-test/jarjar-rules.txt + +LOCAL_MODULE:= repackaged.android.test.runner + +include $(BUILD_STATIC_JAVA_LIBRARY) + +# Generate the stub source files for android.test.runner.stubs +# ============================================================ +include $(CLEAR_VARS) + +# Exclude android.test.mock classes as stubs for them are created in the +# android.test.mock.stubs target +LOCAL_SRC_FILES := \ + $(filter-out $(android_test_mock_source_files), $(call all-java-files-under, src)) + +LOCAL_JAVA_LIBRARIES := \ + core-oj \ + core-libart \ + framework \ + legacy-test \ + android.test.mock \ + +LOCAL_MODULE_CLASS := JAVA_LIBRARIES +LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src + +ANDROID_TEST_RUNNER_OUTPUT_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.runner.stubs_intermediates/api.txt +ANDROID_TEST_RUNNER_OUTPUT_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.runner.stubs_intermediates/removed.txt + +ANDROID_TEST_RUNNER_API_FILE := $(LOCAL_PATH)/api/android-test-runner-current.txt +ANDROID_TEST_RUNNER_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-runner-removed.txt + +LOCAL_DROIDDOC_OPTIONS:= \ + -stubpackages android.test:android.test.suitebuilder:junit.runner:junit.textui \ + -stubsourceonly \ + -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.runner.stubs_intermediates/src \ + -nodocs \ + -api $(ANDROID_TEST_RUNNER_OUTPUT_API_FILE) \ + -removedApi $(ANDROID_TEST_RUNNER_OUTPUT_REMOVED_API_FILE) \ + +LOCAL_UNINSTALLABLE_MODULE := true +LOCAL_MODULE := android-test-runner-api-stubs-gen + +include $(BUILD_DROIDDOC) + +# Remember the target that will trigger the code generation. +android_test_runner_api_gen_stamp := $(full_target) + +# Add some additional dependencies +$(ANDROID_TEST_RUNNER_OUTPUT_API_FILE): $(full_target) +$(ANDROID_TEST_RUNNER_OUTPUT_REMOVED_API_FILE): $(full_target) + +# Build the android.test.runner.stubs library +# =========================================== +include $(CLEAR_VARS) + +LOCAL_MODULE := android.test.runner.stubs + +LOCAL_JAVA_LIBRARIES := \ + legacy.test.stubs \ + android.test.mock.stubs \ + +LOCAL_SOURCE_FILES_ALL_GENERATED := true + +# Make sure to run droiddoc first to generate the stub source files. +LOCAL_ADDITIONAL_DEPENDENCIES := $(android_test_runner_api_gen_stamp) + +include $(BUILD_STATIC_JAVA_LIBRARY) + +# Archive a copy of the classes.jar in SDK build. +$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.runner.stubs.jar) + +# Check that the android.test.runner.stubs library has not changed +# ================================================================ + +# Check that the API we're building hasn't changed from the not-yet-released +# SDK version. +$(eval $(call check-api, \ + check-android-test-runner-api-current, \ + $(ANDROID_TEST_RUNNER_API_FILE), \ + $(ANDROID_TEST_RUNNER_OUTPUT_API_FILE), \ + $(ANDROID_TEST_RUNNER_REMOVED_API_FILE), \ + $(ANDROID_TEST_RUNNER_OUTPUT_REMOVED_API_FILE), \ + -error 2 -error 3 -error 4 -error 5 -error 6 \ + -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ + -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ + -error 25 -error 26 -error 27, \ + cat $(LOCAL_PATH)/api/apicheck_msg_android_test_runner.txt, \ + check-android-test-runner-api, \ + $(call doc-timestamp-for,android-test-runner-api-stubs-gen) \ + )) + +.PHONY: check-android-test-runner-api +checkapi: check-android-test-runner-api + +.PHONY: update-android-test-runner-api +update-api: update-android-test-runner-api + +update-android-test-runner-api: $(ANDROID_TEST_RUNNER_OUTPUT_API_FILE) | $(ACP) + @echo Copying current.txt + $(hide) $(ACP) $(ANDROID_TEST_RUNNER_OUTPUT_API_FILE) $(ANDROID_TEST_RUNNER_API_FILE) + @echo Copying removed.txt + $(hide) $(ACP) $(ANDROID_TEST_RUNNER_OUTPUT_REMOVED_API_FILE) $(ANDROID_TEST_RUNNER_REMOVED_API_FILE) + # Build the android.test.mock library # =================================== include $(CLEAR_VARS) -LOCAL_SRC_FILES := $(call all-java-files-under, src/android/test/mock) +LOCAL_SRC_FILES := $(android_test_mock_source_files) LOCAL_JAVA_LIBRARIES := core-oj core-libart framework @@ -40,33 +159,45 @@ LOCAL_MODULE:= android.test.mock include $(BUILD_JAVA_LIBRARY) -# Generate the stub source files for android.test.mock.sdk -# ======================================================== +# Generate the stub source files for android.test.mock.stubs +# ========================================================== include $(CLEAR_VARS) -LOCAL_SRC_FILES := $(call all-java-files-under, src/android/test/mock) +LOCAL_SRC_FILES := $(android_test_mock_source_files) LOCAL_JAVA_LIBRARIES := core-oj core-libart framework LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src/android/test/mock +ANDROID_TEST_MOCK_OUTPUT_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.mock.stubs_intermediates/api.txt +ANDROID_TEST_MOCK_OUTPUT_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.mock.stubs_intermediates/removed.txt + +ANDROID_TEST_MOCK_API_FILE := $(LOCAL_PATH)/api/android-test-mock-current.txt +ANDROID_TEST_MOCK_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-removed.txt + LOCAL_DROIDDOC_OPTIONS:= \ -stubpackages android.test.mock \ - -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.mock.sdk_intermediates/src \ - -nodocs + -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.mock.stubs_intermediates/src \ + -nodocs \ + -api $(ANDROID_TEST_MOCK_OUTPUT_API_FILE) \ + -removedApi $(ANDROID_TEST_MOCK_OUTPUT_REMOVED_API_FILE) \ LOCAL_UNINSTALLABLE_MODULE := true -LOCAL_MODULE := android-test-mock-stubs-gen +LOCAL_MODULE := android-test-mock-api-stubs-gen include $(BUILD_DROIDDOC) # Remember the target that will trigger the code generation. android_test_mock_gen_stamp := $(full_target) -# Build the android.test.mock.sdk library -# ======================================= +# Add some additional dependencies +$(ANDROID_TEST_MOCK_OUTPUT_API_FILE): $(full_target) +$(ANDROID_TEST_MOCK_OUTPUT_REMOVED_API_FILE): $(full_target) + +# Build the android.test.mock.stubs library +# ========================================= include $(CLEAR_VARS) -LOCAL_MODULE := android.test.mock.sdk +LOCAL_MODULE := android.test.mock.stubs LOCAL_SOURCE_FILES_ALL_GENERATED := true @@ -76,7 +207,49 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(android_test_mock_gen_stamp) include $(BUILD_STATIC_JAVA_LIBRARY) # Archive a copy of the classes.jar in SDK build. -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.jar) +$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs.jar) + +# Check that the android.test.mock.stubs library has not changed +# ============================================================== + +# Check that the API we're building hasn't changed from the not-yet-released +# SDK version. +$(eval $(call check-api, \ + check-android-test-mock-api-current, \ + $(ANDROID_TEST_MOCK_API_FILE), \ + $(ANDROID_TEST_MOCK_OUTPUT_API_FILE), \ + $(ANDROID_TEST_MOCK_REMOVED_API_FILE), \ + $(ANDROID_TEST_MOCK_OUTPUT_REMOVED_API_FILE), \ + -error 2 -error 3 -error 4 -error 5 -error 6 \ + -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ + -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ + -error 25 -error 26 -error 27, \ + cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock.txt, \ + check-android-test-mock-api, \ + $(call doc-timestamp-for,android-test-mock-api-stubs-gen) \ + )) + +.PHONY: check-android-test-mock-api +checkapi: check-android-test-mock-api + +.PHONY: update-android-test-mock-api +update-api: update-android-test-mock-api + +update-android-test-mock-api: $(ANDROID_TEST_MOCK_OUTPUT_API_FILE) | $(ACP) + @echo Copying current.txt + $(hide) $(ACP) $(ANDROID_TEST_MOCK_OUTPUT_API_FILE) $(ANDROID_TEST_MOCK_API_FILE) + @echo Copying removed.txt + $(hide) $(ACP) $(ANDROID_TEST_MOCK_OUTPUT_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_REMOVED_API_FILE) + +# Build the android.test.mock.sdk library +# ======================================= +include $(CLEAR_VARS) + +LOCAL_MODULE := android.test.mock.sdk + +LOCAL_STATIC_JAVA_LIBRARIES := android.test.mock.stubs + +include $(BUILD_STATIC_JAVA_LIBRARY) # additionally, build unit tests in a separate .apk include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/test-runner/api/android-test-mock-current.txt b/test-runner/api/android-test-mock-current.txt new file mode 100644 index 0000000000000000000000000000000000000000..93bbf6c5c024e8083d780ff763c75fd979ef80fd --- /dev/null +++ b/test-runner/api/android-test-mock-current.txt @@ -0,0 +1,414 @@ +package android.test.mock { + + public deprecated class MockApplication extends android.app.Application { + ctor public MockApplication(); + } + + public class MockContentProvider extends android.content.ContentProvider { + ctor protected MockContentProvider(); + ctor public MockContentProvider(android.content.Context); + ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); + method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList); + method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); + method public java.lang.String getType(android.net.Uri); + method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); + method public boolean onCreate(); + method public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle); + method public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String); + method public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]); + } + + public class MockContentResolver extends android.content.ContentResolver { + ctor public MockContentResolver(); + ctor public MockContentResolver(android.content.Context); + method protected android.content.IContentProvider acquireProvider(android.content.Context, java.lang.String); + method protected android.content.IContentProvider acquireUnstableProvider(android.content.Context, java.lang.String); + method public void addProvider(java.lang.String, android.content.ContentProvider); + method public boolean releaseProvider(android.content.IContentProvider); + method public boolean releaseUnstableProvider(android.content.IContentProvider); + method public void unstableProviderDied(android.content.IContentProvider); + } + + public class MockContext extends android.content.Context { + ctor public MockContext(); + method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int); + method public boolean canLoadUnsafeResources(); + method public int checkCallingOrSelfPermission(java.lang.String); + method public int checkCallingOrSelfUriPermission(android.net.Uri, int); + method public int checkCallingPermission(java.lang.String); + method public int checkCallingUriPermission(android.net.Uri, int); + method public int checkPermission(java.lang.String, int, int); + method public int checkPermission(java.lang.String, int, int, android.os.IBinder); + method public int checkSelfPermission(java.lang.String); + method public int checkUriPermission(android.net.Uri, int, int, int); + method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int); + method public int checkUriPermission(android.net.Uri, int, int, int, android.os.IBinder); + method public void clearWallpaper(); + method public android.content.Context createApplicationContext(android.content.pm.ApplicationInfo, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.Context createConfigurationContext(android.content.res.Configuration); + method public android.content.Context createContextForSplit(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.Context createCredentialProtectedStorageContext(); + method public android.content.Context createDeviceProtectedStorageContext(); + method public android.content.Context createDisplayContext(android.view.Display); + method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.lang.String[] databaseList(); + method public boolean deleteDatabase(java.lang.String); + method public boolean deleteFile(java.lang.String); + method public boolean deleteSharedPreferences(java.lang.String); + method public void enforceCallingOrSelfPermission(java.lang.String, java.lang.String); + method public void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String); + method public void enforceCallingPermission(java.lang.String, java.lang.String); + method public void enforceCallingUriPermission(android.net.Uri, int, java.lang.String); + method public void enforcePermission(java.lang.String, int, int, java.lang.String); + method public void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String); + method public void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String); + method public java.lang.String[] fileList(); + method public android.content.Context getApplicationContext(); + method public android.content.pm.ApplicationInfo getApplicationInfo(); + method public android.content.res.AssetManager getAssets(); + method public java.lang.String getBasePackageName(); + method public java.io.File getCacheDir(); + method public java.lang.ClassLoader getClassLoader(); + method public java.io.File getCodeCacheDir(); + method public android.content.ContentResolver getContentResolver(); + method public java.io.File getDataDir(); + method public java.io.File getDatabasePath(java.lang.String); + method public java.io.File getDir(java.lang.String, int); + method public android.view.Display getDisplay(); + method public android.view.DisplayAdjustments getDisplayAdjustments(int); + method public java.io.File getExternalCacheDir(); + method public java.io.File[] getExternalCacheDirs(); + method public java.io.File getExternalFilesDir(java.lang.String); + method public java.io.File[] getExternalFilesDirs(java.lang.String); + method public java.io.File[] getExternalMediaDirs(); + method public java.io.File getFileStreamPath(java.lang.String); + method public java.io.File getFilesDir(); + method public android.os.Looper getMainLooper(); + method public java.io.File getNoBackupFilesDir(); + method public java.io.File getObbDir(); + method public java.io.File[] getObbDirs(); + method public java.lang.String getOpPackageName(); + method public java.lang.String getPackageCodePath(); + method public android.content.pm.PackageManager getPackageManager(); + method public java.lang.String getPackageName(); + method public java.lang.String getPackageResourcePath(); + method public java.io.File getPreloadsFileCache(); + method public android.content.res.Resources getResources(); + method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int); + method public android.content.SharedPreferences getSharedPreferences(java.io.File, int); + method public java.io.File getSharedPreferencesPath(java.lang.String); + method public java.lang.Object getSystemService(java.lang.String); + method public java.lang.String getSystemServiceName(java.lang.Class); + method public android.content.res.Resources.Theme getTheme(); + method public int getUserId(); + method public android.graphics.drawable.Drawable getWallpaper(); + method public int getWallpaperDesiredMinimumHeight(); + method public int getWallpaperDesiredMinimumWidth(); + method public void grantUriPermission(java.lang.String, android.net.Uri, int); + method public boolean isCredentialProtectedStorage(); + method public boolean isDeviceProtectedStorage(); + method public boolean moveDatabaseFrom(android.content.Context, java.lang.String); + method public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String); + method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException; + method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException; + method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory); + method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); + method public android.graphics.drawable.Drawable peekWallpaper(); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); + method public android.content.Intent registerReceiverAsUser(android.content.BroadcastReceiver, android.os.UserHandle, android.content.IntentFilter, java.lang.String, android.os.Handler); + method public void reloadSharedPreferences(); + method public void removeStickyBroadcast(android.content.Intent); + method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); + method public void revokeUriPermission(android.net.Uri, int); + method public void revokeUriPermission(java.lang.String, android.net.Uri, int); + method public void sendBroadcast(android.content.Intent); + method public void sendBroadcast(android.content.Intent, java.lang.String); + method public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle); + method public void sendBroadcast(android.content.Intent, java.lang.String, int); + method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle); + method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String); + method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle); + method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int); + method public void sendBroadcastMultiplePermissions(android.content.Intent, java.lang.String[]); + method public void sendOrderedBroadcast(android.content.Intent, java.lang.String); + method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendStickyBroadcast(android.content.Intent); + method public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); + method public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.os.Bundle); + method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); + method public void setTheme(int); + method public void setWallpaper(android.graphics.Bitmap) throws java.io.IOException; + method public void setWallpaper(java.io.InputStream) throws java.io.IOException; + method public void startActivities(android.content.Intent[]); + method public void startActivities(android.content.Intent[], android.os.Bundle); + method public void startActivity(android.content.Intent); + method public void startActivity(android.content.Intent, android.os.Bundle); + method public android.content.ComponentName startForegroundService(android.content.Intent); + method public android.content.ComponentName startForegroundServiceAsUser(android.content.Intent, android.os.UserHandle); + method public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle); + method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException; + method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException; + method public android.content.ComponentName startService(android.content.Intent); + method public android.content.ComponentName startServiceAsUser(android.content.Intent, android.os.UserHandle); + method public boolean stopService(android.content.Intent); + method public boolean stopServiceAsUser(android.content.Intent, android.os.UserHandle); + method public void unbindService(android.content.ServiceConnection); + method public void unregisterReceiver(android.content.BroadcastReceiver); + method public void updateDisplay(int); + } + + public deprecated class MockCursor implements android.database.Cursor { + ctor public MockCursor(); + method public void close(); + method public void copyStringToBuffer(int, android.database.CharArrayBuffer); + method public deprecated void deactivate(); + method public byte[] getBlob(int); + method public int getColumnCount(); + method public int getColumnIndex(java.lang.String); + method public int getColumnIndexOrThrow(java.lang.String); + method public java.lang.String getColumnName(int); + method public java.lang.String[] getColumnNames(); + method public int getCount(); + method public double getDouble(int); + method public android.os.Bundle getExtras(); + method public float getFloat(int); + method public int getInt(int); + method public long getLong(int); + method public android.net.Uri getNotificationUri(); + method public int getPosition(); + method public short getShort(int); + method public java.lang.String getString(int); + method public int getType(int); + method public boolean getWantsAllOnMoveCalls(); + method public boolean isAfterLast(); + method public boolean isBeforeFirst(); + method public boolean isClosed(); + method public boolean isFirst(); + method public boolean isLast(); + method public boolean isNull(int); + method public boolean move(int); + method public boolean moveToFirst(); + method public boolean moveToLast(); + method public boolean moveToNext(); + method public boolean moveToPosition(int); + method public boolean moveToPrevious(); + method public void registerContentObserver(android.database.ContentObserver); + method public void registerDataSetObserver(android.database.DataSetObserver); + method public deprecated boolean requery(); + method public android.os.Bundle respond(android.os.Bundle); + method public void setExtras(android.os.Bundle); + method public void setNotificationUri(android.content.ContentResolver, android.net.Uri); + method public void unregisterContentObserver(android.database.ContentObserver); + method public void unregisterDataSetObserver(android.database.DataSetObserver); + } + + public deprecated class MockDialogInterface implements android.content.DialogInterface { + ctor public MockDialogInterface(); + method public void cancel(); + method public void dismiss(); + } + + public deprecated class MockPackageManager extends android.content.pm.PackageManager { + ctor public MockPackageManager(); + method public void addCrossProfileIntentFilter(android.content.IntentFilter, int, int, int); + method public void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); + method public void addPackageToPreferred(java.lang.String); + method public boolean addPermission(android.content.pm.PermissionInfo); + method public boolean addPermissionAsync(android.content.pm.PermissionInfo); + method public void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName); + method public boolean canRequestPackageInstalls(); + method public java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]); + method public int checkPermission(java.lang.String, java.lang.String); + method public int checkSignatures(java.lang.String, java.lang.String); + method public int checkSignatures(int, int); + method public void clearApplicationUserData(java.lang.String, android.content.pm.IPackageDataObserver); + method public void clearCrossProfileIntentFilters(int); + method public void clearInstantAppCookie(); + method public void clearPackagePreferredActivities(java.lang.String); + method public java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]); + method public void deleteApplicationCacheFiles(java.lang.String, android.content.pm.IPackageDataObserver); + method public void deleteApplicationCacheFilesAsUser(java.lang.String, int, android.content.pm.IPackageDataObserver); + method public void deletePackage(java.lang.String, android.content.pm.IPackageDeleteObserver, int); + method public void deletePackageAsUser(java.lang.String, android.content.pm.IPackageDeleteObserver, int, int); + method public void extendVerificationTimeout(int, int, long); + method public void flushPackageRestrictionsAsUser(int); + method public void freeStorage(java.lang.String, long, android.content.IntentSender); + method public void freeStorageAndNotify(java.lang.String, long, android.content.pm.IPackageDataObserver); + method public android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.graphics.drawable.Drawable getActivityIcon(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.graphics.drawable.Drawable getActivityLogo(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.util.List getAllIntentFilters(java.lang.String); + method public java.util.List getAllPermissionGroups(int); + method public android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo); + method public android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public int getApplicationEnabledSetting(java.lang.String); + method public boolean getApplicationHiddenSettingAsUser(java.lang.String, android.os.UserHandle); + method public android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo); + method public android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.ApplicationInfo getApplicationInfoAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo); + method public android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo); + method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.ChangedPackages getChangedPackages(int); + method public int getComponentEnabledSetting(android.content.ComponentName); + method public android.graphics.drawable.Drawable getDefaultActivityIcon(); + method public java.lang.String getDefaultBrowserPackageNameAsUser(int); + method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); + method public android.content.ComponentName getHomeActivities(java.util.List); + method public int getInstallReason(java.lang.String, android.os.UserHandle); + method public java.util.List getInstalledApplications(int); + method public java.util.List getInstalledApplicationsAsUser(int, int); + method public java.util.List getInstalledPackages(int); + method public java.util.List getInstalledPackagesAsUser(int, int); + method public java.lang.String getInstallerPackageName(java.lang.String); + method public java.lang.String getInstantAppAndroidId(java.lang.String, android.os.UserHandle); + method public byte[] getInstantAppCookie(); + method public int getInstantAppCookieMaxBytes(); + method public int getInstantAppCookieMaxSize(); + method public android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String); + method public android.content.ComponentName getInstantAppInstallerComponent(); + method public android.content.ComponentName getInstantAppResolverSettingsComponent(); + method public java.util.List getInstantApps(); + method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.util.List getIntentFilterVerifications(java.lang.String); + method public int getIntentVerificationStatusAsUser(java.lang.String, int); + method public android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); + method public android.content.Intent getLaunchIntentForPackage(java.lang.String); + method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); + method public int getMoveStatus(int); + method public java.lang.String getNameForUid(int); + method public java.lang.String[] getNamesForUids(int[]); + method public java.util.List getPackageCandidateVolumes(android.content.pm.ApplicationInfo); + method public android.os.storage.VolumeInfo getPackageCurrentVolume(android.content.pm.ApplicationInfo); + method public int[] getPackageGids(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public int[] getPackageGids(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.PackageInfo getPackageInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.PackageInfo getPackageInfoAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.PackageInstaller getPackageInstaller(); + method public void getPackageSizeInfoAsUser(java.lang.String, int, android.content.pm.IPackageStatsObserver); + method public int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public int getPackageUidAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public int getPackageUidAsUser(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.lang.String[] getPackagesForUid(int); + method public java.util.List getPackagesHoldingPermissions(java.lang.String[], int); + method public java.lang.String getPermissionControllerPackageName(); + method public int getPermissionFlags(java.lang.String, java.lang.String, android.os.UserHandle); + method public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public int getPreferredActivities(java.util.List, java.util.List, java.lang.String); + method public java.util.List getPreferredPackages(int); + method public java.util.List getPrimaryStorageCandidateVolumes(); + method public android.os.storage.VolumeInfo getPrimaryStorageCurrentVolume(); + method public android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.res.Resources getResourcesForActivity(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo); + method public android.content.res.Resources getResourcesForApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public android.content.res.Resources getResourcesForApplicationAsUser(java.lang.String, int); + method public android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public java.lang.String getServicesSystemSharedLibraryPackageName(); + method public java.util.List getSharedLibraries(int); + method public java.util.List getSharedLibrariesAsUser(int, int); + method public java.lang.String getSharedSystemSharedLibraryPackageName(); + method public android.content.pm.KeySet getSigningKeySet(java.lang.String); + method public android.content.pm.FeatureInfo[] getSystemAvailableFeatures(); + method public java.lang.String[] getSystemSharedLibraryNames(); + method public java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo); + method public int getUidForSharedUser(java.lang.String); + method public android.graphics.drawable.Drawable getUserBadgeForDensity(android.os.UserHandle, int); + method public android.graphics.drawable.Drawable getUserBadgeForDensityNoBackground(android.os.UserHandle, int); + method public android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int); + method public android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle); + method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); + method public android.content.pm.VerifierDeviceIdentity getVerifierDeviceIdentity(); + method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); + method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); + method public boolean hasSystemFeature(java.lang.String); + method public boolean hasSystemFeature(java.lang.String, int); + method public int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; + method public int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public int installExistingPackageAsUser(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public void installPackage(android.net.Uri, android.content.pm.IPackageInstallObserver, int, java.lang.String); + method public void installPackage(android.net.Uri, android.app.PackageInstallObserver, int, java.lang.String); + method public boolean isInstantApp(); + method public boolean isInstantApp(java.lang.String); + method public boolean isPackageAvailable(java.lang.String); + method public boolean isPackageSuspendedForUser(java.lang.String, int); + method public boolean isPermissionReviewModeEnabled(); + method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); + method public boolean isSafeMode(); + method public boolean isSignedBy(java.lang.String, android.content.pm.KeySet); + method public boolean isSignedByExactly(java.lang.String, android.content.pm.KeySet); + method public boolean isUpgrade(); + method public android.graphics.drawable.Drawable loadItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo); + method public android.graphics.drawable.Drawable loadUnbadgedItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo); + method public int movePackage(java.lang.String, android.os.storage.VolumeInfo); + method public int movePrimaryStorage(android.os.storage.VolumeInfo); + method public java.util.List queryBroadcastReceivers(android.content.Intent, int); + method public java.util.List queryBroadcastReceiversAsUser(android.content.Intent, int, int); + method public java.util.List queryContentProviders(java.lang.String, int, int); + method public java.util.List queryInstrumentation(java.lang.String, int); + method public java.util.List queryIntentActivities(android.content.Intent, int); + method public java.util.List queryIntentActivitiesAsUser(android.content.Intent, int, int); + method public java.util.List queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int); + method public java.util.List queryIntentContentProviders(android.content.Intent, int); + method public java.util.List queryIntentContentProvidersAsUser(android.content.Intent, int, int); + method public java.util.List queryIntentServices(android.content.Intent, int); + method public java.util.List queryIntentServicesAsUser(android.content.Intent, int, int); + method public java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; + method public void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); + method public void registerMoveCallback(android.content.pm.PackageManager.MoveCallback, android.os.Handler); + method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); + method public void removePackageFromPreferred(java.lang.String); + method public void removePermission(java.lang.String); + method public void replacePreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName); + method public android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int); + method public android.content.pm.ResolveInfo resolveActivityAsUser(android.content.Intent, int, int); + method public android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int); + method public android.content.pm.ProviderInfo resolveContentProviderAsUser(java.lang.String, int, int); + method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int); + method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); + method public void setApplicationCategoryHint(java.lang.String, int); + method public void setApplicationEnabledSetting(java.lang.String, int, int); + method public boolean setApplicationHiddenSettingAsUser(java.lang.String, boolean, android.os.UserHandle); + method public void setComponentEnabledSetting(android.content.ComponentName, int, int); + method public boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int); + method public void setInstallerPackageName(java.lang.String, java.lang.String); + method public boolean setInstantAppCookie(byte[]); + method public java.lang.String[] setPackagesSuspendedAsUser(java.lang.String[], boolean, int); + method public void setUpdateAvailable(java.lang.String, boolean); + method public boolean shouldShowRequestPermissionRationale(java.lang.String); + method public void unregisterMoveCallback(android.content.pm.PackageManager.MoveCallback); + method public void updateInstantAppCookie(byte[]); + method public boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int); + method public void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle); + method public void verifyIntentFilter(int, int, java.util.List); + method public void verifyPendingInstall(int, int); + } + + public deprecated class MockResources extends android.content.res.Resources { + ctor public MockResources(); + method public int getColor(int) throws android.content.res.Resources.NotFoundException; + method public android.content.res.ColorStateList getColorStateList(int) throws android.content.res.Resources.NotFoundException; + method public android.graphics.drawable.Drawable getDrawable(int) throws android.content.res.Resources.NotFoundException; + method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); + } + +} + diff --git a/test-runner/api/android-test-mock-removed.txt b/test-runner/api/android-test-mock-removed.txt new file mode 100644 index 0000000000000000000000000000000000000000..9920f63d16326dc42d463b6f42fc3b894f84df22 --- /dev/null +++ b/test-runner/api/android-test-mock-removed.txt @@ -0,0 +1,9 @@ +package android.test.mock { + + public deprecated class MockPackageManager extends android.content.pm.PackageManager { + method public deprecated java.lang.String getDefaultBrowserPackageName(int); + method public deprecated boolean setDefaultBrowserPackageName(java.lang.String, int); + } + +} + diff --git a/test-runner/api/android-test-runner-current.txt b/test-runner/api/android-test-runner-current.txt new file mode 100644 index 0000000000000000000000000000000000000000..905cfe701ab684ce1b5d745fb97143a1e0f70fee --- /dev/null +++ b/test-runner/api/android-test-runner-current.txt @@ -0,0 +1,336 @@ +package android.test { + + public abstract deprecated class ActivityInstrumentationTestCase extends android.test.ActivityTestCase { + ctor public ActivityInstrumentationTestCase(java.lang.String, java.lang.Class); + ctor public ActivityInstrumentationTestCase(java.lang.String, java.lang.Class, boolean); + method public T getActivity(); + method public void testActivityTestCaseSetUpProperly() throws java.lang.Exception; + } + + public abstract deprecated class ActivityInstrumentationTestCase2 extends android.test.ActivityTestCase { + ctor public deprecated ActivityInstrumentationTestCase2(java.lang.String, java.lang.Class); + ctor public ActivityInstrumentationTestCase2(java.lang.Class); + method public T getActivity(); + method public void setActivityInitialTouchMode(boolean); + method public void setActivityIntent(android.content.Intent); + } + + public abstract deprecated class ActivityTestCase extends android.test.InstrumentationTestCase { + ctor public ActivityTestCase(); + method protected android.app.Activity getActivity(); + method protected void scrubClass(java.lang.Class) throws java.lang.IllegalAccessException; + method protected void setActivity(android.app.Activity); + } + + public abstract deprecated class ActivityUnitTestCase extends android.test.ActivityTestCase { + ctor public ActivityUnitTestCase(java.lang.Class); + method public T getActivity(); + method public int getFinishedActivityRequest(); + method public int getRequestedOrientation(); + method public android.content.Intent getStartedActivityIntent(); + method public int getStartedActivityRequest(); + method public boolean isFinishCalled(); + method public void setActivityContext(android.content.Context); + method public void setApplication(android.app.Application); + method protected T startActivity(android.content.Intent, android.os.Bundle, java.lang.Object); + } + + public deprecated class AndroidTestRunner extends junit.runner.BaseTestRunner { + ctor public AndroidTestRunner(); + method public void addTestListener(junit.framework.TestListener); + method public void clearTestListeners(); + method protected junit.framework.TestResult createTestResult(); + method public java.util.List getTestCases(); + method public java.lang.String getTestClassName(); + method public junit.framework.TestResult getTestResult(); + method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException; + method protected void runFailed(java.lang.String); + method public void runTest(); + method public void runTest(junit.framework.TestResult); + method public void setContext(android.content.Context); + method public deprecated void setInstrumentaiton(android.app.Instrumentation); + method public void setInstrumentation(android.app.Instrumentation); + method public void setTest(junit.framework.Test); + method public void setTestClassName(java.lang.String, java.lang.String); + method public void testEnded(java.lang.String); + method public void testFailed(int, junit.framework.Test, java.lang.Throwable); + method public void testStarted(java.lang.String); + } + + public abstract deprecated class ApplicationTestCase extends android.test.AndroidTestCase { + ctor public ApplicationTestCase(java.lang.Class); + method protected final void createApplication(); + method public T getApplication(); + method public android.content.Context getSystemContext(); + method protected final void terminateApplication(); + method public final void testApplicationTestCaseSetUpProperly() throws java.lang.Exception; + } + + public deprecated class AssertionFailedError extends java.lang.Error { + ctor public AssertionFailedError(); + ctor public AssertionFailedError(java.lang.String); + } + + public deprecated class ComparisonFailure extends android.test.AssertionFailedError { + ctor public ComparisonFailure(java.lang.String, java.lang.String, java.lang.String); + } + + public deprecated class InstrumentationTestRunner extends android.app.Instrumentation implements android.test.TestSuiteProvider { + ctor public InstrumentationTestRunner(); + method public junit.framework.TestSuite getAllTests(); + method protected android.test.AndroidTestRunner getAndroidTestRunner(); + method public android.os.Bundle getArguments(); + method public java.lang.ClassLoader getLoader(); + method public junit.framework.TestSuite getTestSuite(); + field public static final java.lang.String REPORT_KEY_NAME_CLASS = "class"; + field public static final java.lang.String REPORT_KEY_NAME_TEST = "test"; + field public static final java.lang.String REPORT_KEY_NUM_CURRENT = "current"; + field public static final java.lang.String REPORT_KEY_NUM_TOTAL = "numtests"; + field public static final java.lang.String REPORT_KEY_STACK = "stack"; + field public static final java.lang.String REPORT_VALUE_ID = "InstrumentationTestRunner"; + field public static final int REPORT_VALUE_RESULT_ERROR = -1; // 0xffffffff + field public static final int REPORT_VALUE_RESULT_FAILURE = -2; // 0xfffffffe + field public static final int REPORT_VALUE_RESULT_OK = 0; // 0x0 + field public static final int REPORT_VALUE_RESULT_START = 1; // 0x1 + } + + public deprecated class IsolatedContext extends android.content.ContextWrapper { + ctor public IsolatedContext(android.content.ContentResolver, android.content.Context); + method public java.util.List getAndClearBroadcastIntents(); + } + + public class LoaderTestCase extends android.test.AndroidTestCase { + ctor public LoaderTestCase(); + method public T getLoaderResultSynchronously(android.content.Loader); + } + + public final deprecated class MoreAsserts { + method public static void assertAssignableFrom(java.lang.Class, java.lang.Object); + method public static void assertAssignableFrom(java.lang.Class, java.lang.Class); + method public static java.util.regex.MatchResult assertContainsRegex(java.lang.String, java.lang.String, java.lang.String); + method public static java.util.regex.MatchResult assertContainsRegex(java.lang.String, java.lang.String); + method public static void assertContentsInAnyOrder(java.lang.String, java.lang.Iterable, java.lang.Object...); + method public static void assertContentsInAnyOrder(java.lang.Iterable, java.lang.Object...); + method public static void assertContentsInOrder(java.lang.String, java.lang.Iterable, java.lang.Object...); + method public static void assertContentsInOrder(java.lang.Iterable, java.lang.Object...); + method public static void assertEmpty(java.lang.String, java.lang.Iterable); + method public static void assertEmpty(java.lang.Iterable); + method public static void assertEmpty(java.lang.String, java.util.Map); + method public static void assertEmpty(java.util.Map); + method public static void assertEquals(java.lang.String, byte[], byte[]); + method public static void assertEquals(byte[], byte[]); + method public static void assertEquals(java.lang.String, int[], int[]); + method public static void assertEquals(int[], int[]); + method public static void assertEquals(java.lang.String, double[], double[]); + method public static void assertEquals(double[], double[]); + method public static void assertEquals(java.lang.String, java.lang.Object[], java.lang.Object[]); + method public static void assertEquals(java.lang.Object[], java.lang.Object[]); + method public static void assertEquals(java.lang.String, java.util.Set, java.util.Set); + method public static void assertEquals(java.util.Set, java.util.Set); + method public static java.util.regex.MatchResult assertMatchesRegex(java.lang.String, java.lang.String, java.lang.String); + method public static java.util.regex.MatchResult assertMatchesRegex(java.lang.String, java.lang.String); + method public static void assertNotContainsRegex(java.lang.String, java.lang.String, java.lang.String); + method public static void assertNotContainsRegex(java.lang.String, java.lang.String); + method public static void assertNotEmpty(java.lang.String, java.lang.Iterable); + method public static void assertNotEmpty(java.lang.Iterable); + method public static void assertNotEmpty(java.lang.String, java.util.Map); + method public static void assertNotEmpty(java.util.Map); + method public static void assertNotEqual(java.lang.String, java.lang.Object, java.lang.Object); + method public static void assertNotEqual(java.lang.Object, java.lang.Object); + method public static void assertNotMatchesRegex(java.lang.String, java.lang.String, java.lang.String); + method public static void assertNotMatchesRegex(java.lang.String, java.lang.String); + method public static void checkEqualsAndHashCodeMethods(java.lang.String, java.lang.Object, java.lang.Object, boolean); + method public static void checkEqualsAndHashCodeMethods(java.lang.Object, java.lang.Object, boolean); + } + + public abstract deprecated class ProviderTestCase extends android.test.InstrumentationTestCase { + ctor public ProviderTestCase(java.lang.Class, java.lang.String); + method public android.test.mock.MockContentResolver getMockContentResolver(); + method public android.test.IsolatedContext getMockContext(); + method public T getProvider(); + method public static android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, java.lang.Class, java.lang.String, java.lang.String, int, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException; + } + + public abstract class ProviderTestCase2 extends android.test.AndroidTestCase { + ctor public ProviderTestCase2(java.lang.Class, java.lang.String); + method public android.test.mock.MockContentResolver getMockContentResolver(); + method public android.test.IsolatedContext getMockContext(); + method public T getProvider(); + method public static android.content.ContentResolver newResolverWithContentProviderFromSql(android.content.Context, java.lang.String, java.lang.Class, java.lang.String, java.lang.String, int, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException; + } + + public deprecated class RenamingDelegatingContext extends android.content.ContextWrapper { + ctor public RenamingDelegatingContext(android.content.Context, java.lang.String); + ctor public RenamingDelegatingContext(android.content.Context, android.content.Context, java.lang.String); + method public java.lang.String getDatabasePrefix(); + method public void makeExistingFilesAndDbsAccessible(); + method public static T providerWithRenamedContext(java.lang.Class, android.content.Context, java.lang.String) throws java.lang.IllegalAccessException, java.lang.InstantiationException; + method public static T providerWithRenamedContext(java.lang.Class, android.content.Context, java.lang.String, boolean) throws java.lang.IllegalAccessException, java.lang.InstantiationException; + } + + public abstract deprecated class ServiceTestCase extends android.test.AndroidTestCase { + ctor public ServiceTestCase(java.lang.Class); + method protected android.os.IBinder bindService(android.content.Intent); + method public android.app.Application getApplication(); + method public T getService(); + method public android.content.Context getSystemContext(); + method public void setApplication(android.app.Application); + method protected void setupService(); + method protected void shutdownService(); + method protected void startService(android.content.Intent); + method public void testServiceTestCaseSetUpProperly() throws java.lang.Exception; + } + + public abstract deprecated class SingleLaunchActivityTestCase extends android.test.InstrumentationTestCase { + ctor public SingleLaunchActivityTestCase(java.lang.String, java.lang.Class); + method public T getActivity(); + method public void testActivityTestCaseSetUpProperly() throws java.lang.Exception; + } + + public deprecated class SyncBaseInstrumentation extends android.test.InstrumentationTestCase { + ctor public SyncBaseInstrumentation(); + method protected void cancelSyncsandDisableAutoSync(); + method protected void syncProvider(android.net.Uri, java.lang.String, java.lang.String) throws java.lang.Exception; + } + + public abstract deprecated interface TestSuiteProvider { + method public abstract junit.framework.TestSuite getTestSuite(); + } + + public deprecated class TouchUtils { + ctor public TouchUtils(); + method public static void clickView(android.test.InstrumentationTestCase, android.view.View); + method public static deprecated void drag(android.test.ActivityInstrumentationTestCase, float, float, float, float, int); + method public static void drag(android.test.InstrumentationTestCase, float, float, float, float, int); + method public static deprecated void dragQuarterScreenDown(android.test.ActivityInstrumentationTestCase); + method public static void dragQuarterScreenDown(android.test.InstrumentationTestCase, android.app.Activity); + method public static deprecated void dragQuarterScreenUp(android.test.ActivityInstrumentationTestCase); + method public static void dragQuarterScreenUp(android.test.InstrumentationTestCase, android.app.Activity); + method public static deprecated int dragViewBy(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int); + method public static deprecated int dragViewBy(android.test.InstrumentationTestCase, android.view.View, int, int, int); + method public static deprecated int dragViewTo(android.test.ActivityInstrumentationTestCase, android.view.View, int, int, int); + method public static int dragViewTo(android.test.InstrumentationTestCase, android.view.View, int, int, int); + method public static deprecated void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View); + method public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View); + method public static deprecated void dragViewToBottom(android.test.ActivityInstrumentationTestCase, android.view.View, int); + method public static void dragViewToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.View, int); + method public static deprecated void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View); + method public static deprecated void dragViewToTop(android.test.ActivityInstrumentationTestCase, android.view.View, int); + method public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View); + method public static void dragViewToTop(android.test.InstrumentationTestCase, android.view.View, int); + method public static deprecated int dragViewToX(android.test.ActivityInstrumentationTestCase, android.view.View, int, int); + method public static int dragViewToX(android.test.InstrumentationTestCase, android.view.View, int, int); + method public static deprecated int dragViewToY(android.test.ActivityInstrumentationTestCase, android.view.View, int, int); + method public static int dragViewToY(android.test.InstrumentationTestCase, android.view.View, int, int); + method public static deprecated void longClickView(android.test.ActivityInstrumentationTestCase, android.view.View); + method public static void longClickView(android.test.InstrumentationTestCase, android.view.View); + method public static deprecated void scrollToBottom(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup); + method public static void scrollToBottom(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup); + method public static deprecated void scrollToTop(android.test.ActivityInstrumentationTestCase, android.view.ViewGroup); + method public static void scrollToTop(android.test.InstrumentationTestCase, android.app.Activity, android.view.ViewGroup); + method public static void tapView(android.test.InstrumentationTestCase, android.view.View); + method public static void touchAndCancelView(android.test.InstrumentationTestCase, android.view.View); + } + + public deprecated class ViewAsserts { + method public static void assertBaselineAligned(android.view.View, android.view.View); + method public static void assertBottomAligned(android.view.View, android.view.View); + method public static void assertBottomAligned(android.view.View, android.view.View, int); + method public static void assertGroupContains(android.view.ViewGroup, android.view.View); + method public static void assertGroupIntegrity(android.view.ViewGroup); + method public static void assertGroupNotContains(android.view.ViewGroup, android.view.View); + method public static void assertHasScreenCoordinates(android.view.View, android.view.View, int, int); + method public static void assertHorizontalCenterAligned(android.view.View, android.view.View); + method public static void assertLeftAligned(android.view.View, android.view.View); + method public static void assertLeftAligned(android.view.View, android.view.View, int); + method public static void assertOffScreenAbove(android.view.View, android.view.View); + method public static void assertOffScreenBelow(android.view.View, android.view.View); + method public static void assertOnScreen(android.view.View, android.view.View); + method public static void assertRightAligned(android.view.View, android.view.View); + method public static void assertRightAligned(android.view.View, android.view.View, int); + method public static void assertTopAligned(android.view.View, android.view.View); + method public static void assertTopAligned(android.view.View, android.view.View, int); + method public static void assertVerticalCenterAligned(android.view.View, android.view.View); + } + +} + +package android.test.suitebuilder { + + public deprecated class TestMethod { + ctor public TestMethod(java.lang.reflect.Method, java.lang.Class); + ctor public TestMethod(java.lang.String, java.lang.Class); + ctor public TestMethod(junit.framework.TestCase); + method public junit.framework.TestCase createTest() throws java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.reflect.InvocationTargetException; + method public T getAnnotation(java.lang.Class); + method public java.lang.Class getEnclosingClass(); + method public java.lang.String getEnclosingClassname(); + method public java.lang.String getName(); + } + + public deprecated class TestSuiteBuilder { + ctor public TestSuiteBuilder(java.lang.Class); + ctor public TestSuiteBuilder(java.lang.String, java.lang.ClassLoader); + method public android.test.suitebuilder.TestSuiteBuilder addRequirements(java.util.List>); + method public final android.test.suitebuilder.TestSuiteBuilder addRequirements(com.android.internal.util.Predicate...); + method public final junit.framework.TestSuite build(); + method public android.test.suitebuilder.TestSuiteBuilder excludePackages(java.lang.String...); + method protected java.lang.String getSuiteName(); + method public final android.test.suitebuilder.TestSuiteBuilder includeAllPackagesUnderHere(); + method public android.test.suitebuilder.TestSuiteBuilder includePackages(java.lang.String...); + method public android.test.suitebuilder.TestSuiteBuilder named(java.lang.String); + } + + public static deprecated class TestSuiteBuilder.FailedToCreateTests extends junit.framework.TestCase { + ctor public TestSuiteBuilder.FailedToCreateTests(java.lang.Exception); + method public void testSuiteConstructionFailed(); + } + +} + +package junit.runner { + + public abstract class BaseTestRunner implements junit.framework.TestListener { + ctor public BaseTestRunner(); + method public synchronized void addError(junit.framework.Test, java.lang.Throwable); + method public synchronized void addFailure(junit.framework.Test, junit.framework.AssertionFailedError); + method protected void clearStatus(); + method public java.lang.String elapsedTimeAsString(long); + method public synchronized void endTest(junit.framework.Test); + method public java.lang.String extractClassName(java.lang.String); + method public static java.lang.String getFilteredTrace(java.lang.Throwable); + method public static java.lang.String getFilteredTrace(java.lang.String); + method public deprecated junit.runner.TestSuiteLoader getLoader(); + method public static java.lang.String getPreference(java.lang.String); + method public static int getPreference(java.lang.String, int); + method protected static java.util.Properties getPreferences(); + method public junit.framework.Test getTest(java.lang.String); + method public static deprecated boolean inVAJava(); + method protected java.lang.Class loadSuiteClass(java.lang.String) throws java.lang.ClassNotFoundException; + method protected java.lang.String processArguments(java.lang.String[]); + method protected abstract void runFailed(java.lang.String); + method public static void savePreferences() throws java.io.IOException; + method public void setLoading(boolean); + method public void setPreference(java.lang.String, java.lang.String); + method protected static void setPreferences(java.util.Properties); + method protected static boolean showStackRaw(); + method public synchronized void startTest(junit.framework.Test); + method public abstract void testEnded(java.lang.String); + method public abstract void testFailed(int, junit.framework.Test, java.lang.Throwable); + method public abstract void testStarted(java.lang.String); + method public static java.lang.String truncate(java.lang.String); + method protected boolean useReloadingTestSuiteLoader(); + field public static final java.lang.String SUITE_METHODNAME = "suite"; + } + + public abstract interface TestSuiteLoader { + method public abstract java.lang.Class load(java.lang.String) throws java.lang.ClassNotFoundException; + method public abstract java.lang.Class reload(java.lang.Class) throws java.lang.ClassNotFoundException; + } + + public class Version { + method public static java.lang.String id(); + } + +} + diff --git a/test-runner/api/android-test-runner-removed.txt b/test-runner/api/android-test-runner-removed.txt new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test-runner/api/apicheck_msg_android_test_mock.txt b/test-runner/api/apicheck_msg_android_test_mock.txt new file mode 100644 index 0000000000000000000000000000000000000000..e388935bf798e525e05b056c41158bf33817c271 --- /dev/null +++ b/test-runner/api/apicheck_msg_android_test_mock.txt @@ -0,0 +1,17 @@ + +****************************** +You have tried to change the API from what has been previously approved. + +To make these errors go away, you have two choices: + 1) You can add "@hide" javadoc comments to the methods, etc. listed in the + errors above. + + 2) You can update android-test-mock-current.txt by executing the following command: + make update-android-test-mock-api + + To submit the revised android-test-mock-current.txt to the main Android repository, + you will need approval. +****************************** + + + diff --git a/test-runner/api/apicheck_msg_android_test_runner.txt b/test-runner/api/apicheck_msg_android_test_runner.txt new file mode 100644 index 0000000000000000000000000000000000000000..cf2d15ee1ee1260bd15838526447a09d872d5ac8 --- /dev/null +++ b/test-runner/api/apicheck_msg_android_test_runner.txt @@ -0,0 +1,17 @@ + +****************************** +You have tried to change the API from what has been previously approved. + +To make these errors go away, you have two choices: + 1) You can add "@hide" javadoc comments to the methods, etc. listed in the + errors above. + + 2) You can update android-test-runner-current.txt by executing the following command: + make update-android-test-runner-api + + To submit the revised android-test-runner-current.txt to the main Android repository, + you will need approval. +****************************** + + + diff --git a/test-runner/src/android/test/AndroidTestRunner.java b/test-runner/src/android/test/AndroidTestRunner.java index 7313a2880ea213f680fcbfd44f1e52ed015f1200..f898516a001b1c63b4433b42b132febd772871cb 100644 --- a/test-runner/src/android/test/AndroidTestRunner.java +++ b/test-runner/src/android/test/AndroidTestRunner.java @@ -18,7 +18,6 @@ package android.test; import android.app.Instrumentation; import android.content.Context; -import android.os.PerformanceCollector.PerformanceResultsWriter; import java.util.ArrayList; import junit.framework.Test; @@ -49,7 +48,6 @@ public class AndroidTestRunner extends BaseTestRunner { private List mTestListeners = new ArrayList<>(); private Instrumentation mInstrumentation; - private PerformanceResultsWriter mPerfWriter; @SuppressWarnings("unchecked") public void setTestClassName(String testClassName, String testMethodName) { @@ -194,7 +192,6 @@ public class AndroidTestRunner extends BaseTestRunner { for (TestCase testCase : mTestCases) { setContextIfAndroidTestCase(testCase, mContext, testContext); setInstrumentationIfInstrumentationTestCase(testCase, mInstrumentation); - setPerformanceWriterIfPerformanceCollectorTestCase(testCase, mPerfWriter); testCase.run(mTestResult); } } @@ -217,13 +214,6 @@ public class AndroidTestRunner extends BaseTestRunner { } } - private void setPerformanceWriterIfPerformanceCollectorTestCase( - Test test, PerformanceResultsWriter writer) { - if (PerformanceCollectorTestCase.class.isAssignableFrom(test.getClass())) { - ((PerformanceCollectorTestCase) test).setPerformanceResultsWriter(writer); - } - } - public void setInstrumentation(Instrumentation instrumentation) { mInstrumentation = instrumentation; } @@ -237,13 +227,6 @@ public class AndroidTestRunner extends BaseTestRunner { setInstrumentation(instrumentation); } - /** - * {@hide} Pending approval for public API. - */ - public void setPerformanceResultsWriter(PerformanceResultsWriter writer) { - mPerfWriter = writer; - } - @Override protected Class loadSuiteClass(String suiteClassName) throws ClassNotFoundException { return mContext.getClassLoader().loadClass(suiteClassName); diff --git a/test-runner/src/android/test/InstrumentationTestRunner.java b/test-runner/src/android/test/InstrumentationTestRunner.java index 3f8b7a7137e8ef1a8eea60758faea274710d385d..b2582c19b548f798be18106a8c756e77a56c5106 100644 --- a/test-runner/src/android/test/InstrumentationTestRunner.java +++ b/test-runner/src/android/test/InstrumentationTestRunner.java @@ -25,9 +25,6 @@ import android.app.Instrumentation; import android.os.Bundle; import android.os.Debug; import android.os.Looper; -import android.os.Parcelable; -import android.os.PerformanceCollector; -import android.os.PerformanceCollector.PerformanceResultsWriter; import android.test.suitebuilder.TestMethod; import android.test.suitebuilder.TestPredicates; import android.test.suitebuilder.TestSuiteBuilder; @@ -398,7 +395,6 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu WatcherResultPrinter resultPrinter = new WatcherResultPrinter(mTestCount); mTestRunner.addTestListener(new TestPrinter("TestRunner", false)); mTestRunner.addTestListener(resultPrinter); - mTestRunner.setPerformanceResultsWriter(resultPrinter); } start(); } @@ -751,15 +747,12 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu /** * This class sends status reports back to the IInstrumentationWatcher */ - private class WatcherResultPrinter implements TestListener, PerformanceResultsWriter { + private class WatcherResultPrinter implements TestListener { private final Bundle mResultTemplate; Bundle mTestResult; int mTestNum = 0; int mTestResultCode = 0; String mTestClass = null; - PerformanceCollector mPerfCollector = new PerformanceCollector(); - boolean mIsTimedTest = false; - boolean mIncludeDetailedStats = false; public WatcherResultPrinter(int numTests) { mResultTemplate = new Bundle(); @@ -814,30 +807,6 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu sendStatus(REPORT_VALUE_RESULT_START, mTestResult); mTestResultCode = 0; - - mIsTimedTest = false; - mIncludeDetailedStats = false; - try { - // Look for TimedTest annotation on both test class and test method - if (testMethod != null && testMethod.isAnnotationPresent(TimedTest.class)) { - mIsTimedTest = true; - mIncludeDetailedStats = testMethod.getAnnotation( - TimedTest.class).includeDetailedStats(); - } else if (test.getClass().isAnnotationPresent(TimedTest.class)) { - mIsTimedTest = true; - mIncludeDetailedStats = test.getClass().getAnnotation( - TimedTest.class).includeDetailedStats(); - } - } catch (SecurityException e) { - // ignore - the test with given name cannot be accessed. Will be handled during - // test execution - } - - if (mIsTimedTest && mIncludeDetailedStats) { - mPerfCollector.beginSnapshot(""); - } else if (mIsTimedTest) { - mPerfCollector.startTiming(""); - } } /** @@ -868,12 +837,6 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu * @see junit.framework.TestListener#endTest(Test) */ public void endTest(Test test) { - if (mIsTimedTest && mIncludeDetailedStats) { - mTestResult.putAll(mPerfCollector.endSnapshot()); - } else if (mIsTimedTest) { - writeStopTiming(mPerfCollector.stopTiming("")); - } - if (mTestResultCode == 0) { mTestResult.putString(Instrumentation.REPORT_KEY_STREAMRESULT, "."); } @@ -886,50 +849,6 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu } } - public void writeBeginSnapshot(String label) { - // Do nothing - } - - public void writeEndSnapshot(Bundle results) { - // Copy all snapshot data fields into mResults, which is outputted - // via Instrumentation.finish - mResults.putAll(results); - } - - public void writeStartTiming(String label) { - // Do nothing - } - - public void writeStopTiming(Bundle results) { - // Copy results into mTestResult by flattening list of iterations, - // which is outputted via WatcherResultPrinter.endTest - int i = 0; - for (Parcelable p : - results.getParcelableArrayList(PerformanceCollector.METRIC_KEY_ITERATIONS)) { - Bundle iteration = (Bundle)p; - String index = "iteration" + i + "."; - mTestResult.putString(index + PerformanceCollector.METRIC_KEY_LABEL, - iteration.getString(PerformanceCollector.METRIC_KEY_LABEL)); - mTestResult.putLong(index + PerformanceCollector.METRIC_KEY_CPU_TIME, - iteration.getLong(PerformanceCollector.METRIC_KEY_CPU_TIME)); - mTestResult.putLong(index + PerformanceCollector.METRIC_KEY_EXECUTION_TIME, - iteration.getLong(PerformanceCollector.METRIC_KEY_EXECUTION_TIME)); - i++; - } - } - - public void writeMeasurement(String label, long value) { - mTestResult.putLong(label, value); - } - - public void writeMeasurement(String label, float value) { - mTestResult.putFloat(label, value); - } - - public void writeMeasurement(String label, String value) { - mTestResult.putString(label, value); - } - // TODO report the end of the cycle } } diff --git a/test-runner/src/android/test/PerformanceCollectorTestCase.java b/test-runner/src/android/test/PerformanceCollectorTestCase.java deleted file mode 100644 index 3a5dafc0db75cdd49e12b058e718f0fd5f934417..0000000000000000000000000000000000000000 --- a/test-runner/src/android/test/PerformanceCollectorTestCase.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.test; - -import android.os.PerformanceCollector; -import android.os.PerformanceCollector.PerformanceResultsWriter; - -/** - * A simple interface for passing in a PerformanceResultsWriter instance to be used with - * PerformanceCollector. - *

          - * A one line implementation of {@link #setPerformanceResultsWriter(PerformanceResultsWriter)} - * is sufficient in most cases: - *

          - * mPerfCollector.setPerformanceResultsWriter(writer); - * - * {@hide} Not needed for SDK. - */ -@Deprecated -public interface PerformanceCollectorTestCase { - public PerformanceCollector mPerfCollector = new PerformanceCollector(); - - public void setPerformanceResultsWriter(PerformanceResultsWriter writer); -} diff --git a/test-runner/src/android/test/TimedTest.java b/test-runner/src/android/test/TimedTest.java deleted file mode 100644 index cb15ef9070505abe1b83ea0219536d7e063810e0..0000000000000000000000000000000000000000 --- a/test-runner/src/android/test/TimedTest.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.test; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * This annotation can be used on an {@link junit.framework.TestCase}'s test methods. When the - * annotation is present, the test method is timed and the results written through instrumentation - * output. It can also be used on the class itself, which is equivalent to tagging all test methods - * with this annotation. - *

          - * Setting {@link #includeDetailedStats()} to true causes additional metrics such as memory usage - * and binder transactions to be gathered and written through instrumentation output. - * - * {@hide} Pending approval for public API. - */ -@Deprecated -@Retention(RetentionPolicy.RUNTIME) -public @interface TimedTest { - boolean includeDetailedStats() default false; -} diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 3cb1f39ffaf01d5afa7d4dda2594cf29bde17e1a..7e08f51cd87d5bfff5fb51252f4c7fe97503eba0 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -321,6 +321,12 @@ public class MockPackageManager extends PackageManager { throw new UnsupportedOperationException(); } + /** @hide */ + @Override + public String[] getNamesForUids(int uid[]) { + throw new UnsupportedOperationException(); + } + /** * @hide - to match hiding in superclass */ diff --git a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java index 4d2f97f2a5fcd8c79e9f447bf9a84e6fe560da4b..1443fc1ae3ee8973828b50156b59fb455eef2df5 100644 --- a/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java +++ b/tests/AppLaunch/src/com/android/tests/applaunch/AppLaunch.java @@ -101,7 +101,7 @@ public class AppLaunch extends InstrumentationTestCase { private static final String PROFILE_COMPILE_SUCCESS = "Success"; private static final String THIS_TIME = "ThisTime:"; private static final String LAUNCH_ITERATION = "LAUNCH_ITERATION - %d"; - private static final String TRACE_ITERATION = "TRACE_ITERATION - %d"; + private static final String TRACE_ITERATION = "TRACE_ITERATION-%d"; private static final String LAUNCH_ITERATION_PREFIX = "LAUNCH_ITERATION"; private static final String TRACE_ITERATION_PREFIX = "TRACE_ITERATION"; private static final String LAUNCH_ORDER_CYCLIC = "cyclic"; diff --git a/tests/Compatibility/Android.mk b/tests/Compatibility/Android.mk index feeae0216dc211d63acac4bfde6065ee55c9e0db..82e212688637b92d6224f8d1879f10d7eabde313 100644 --- a/tests/Compatibility/Android.mk +++ b/tests/Compatibility/Android.mk @@ -17,9 +17,7 @@ include $(CLEAR_VARS) # We only want this apk build for tests. LOCAL_MODULE_TAGS := tests - -LOCAL_JAVA_LIBRARIES := legacy-android-test -LOCAL_STATIC_JAVA_LIBRARIES := junit +LOCAL_STATIC_JAVA_LIBRARIES := android-support-test # Include all test java files. LOCAL_SRC_FILES := \ $(call all-java-files-under, src) diff --git a/tests/Compatibility/AndroidManifest.xml b/tests/Compatibility/AndroidManifest.xml index 70174315f9dfaa9f32a4c8b612cc7695e289d8df..5d1317e10354b20ac7850e158b90f31559efc034 100644 --- a/tests/Compatibility/AndroidManifest.xml +++ b/tests/Compatibility/AndroidManifest.xml @@ -15,12 +15,12 @@ --> + package="com.android.compatibilitytest" + android:sharedUserId="android.uid.system"> - - - + + DROPBOX_TAGS = new HashSet<>(); + static { + DROPBOX_TAGS.add("SYSTEM_TOMBSTONE"); + DROPBOX_TAGS.add("system_app_anr"); + DROPBOX_TAGS.add("system_app_native_crash"); + DROPBOX_TAGS.add("system_app_crash"); + DROPBOX_TAGS.add("data_app_anr"); + DROPBOX_TAGS.add("data_app_native_crash"); + DROPBOX_TAGS.add("data_app_crash"); + } + // time waiting for app to launch private int mAppLaunchTimeout = 7000; + // time waiting for launcher home screen to show up private int mWorkspaceLaunchTimeout = 2000; private Context mContext; private ActivityManager mActivityManager; private PackageManager mPackageManager; - private AppCompatibilityRunner mRunner; private Bundle mArgs; + private Instrumentation mInstrumentation; + private String mLauncherPackageName; + private IActivityController mCrashSupressor = new CrashSuppressor(); + private Map> mAppErrors = new HashMap<>(); - @Override + @Before public void setUp() throws Exception { - super.setUp(); - mRunner = (AppCompatibilityRunner) getInstrumentation(); - assertNotNull("Could not fetch InstrumentationTestRunner.", mRunner); - - mContext = mRunner.getTargetContext(); - Assert.assertNotNull("Could not get the Context", mContext); - - mActivityManager = (ActivityManager) - mContext.getSystemService(Context.ACTIVITY_SERVICE); - Assert.assertNotNull("Could not get Activity Manager", mActivityManager); - + mInstrumentation = InstrumentationRegistry.getInstrumentation(); + mContext = InstrumentationRegistry.getTargetContext(); + mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); mPackageManager = mContext.getPackageManager(); - Assert.assertNotNull("Missing Package Manager", mPackageManager); + mArgs = InstrumentationRegistry.getArguments(); - mArgs = mRunner.getBundle(); + // resolve launcher package name + Intent intent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME); + ResolveInfo resolveInfo = mPackageManager.resolveActivity( + intent, PackageManager.MATCH_DEFAULT_ONLY); + mLauncherPackageName = resolveInfo.activityInfo.packageName; + Assert.assertNotNull("failed to resolve package name for launcher", mLauncherPackageName); + Log.v(TAG, "Using launcher package name: " + mLauncherPackageName); // Parse optional inputs. String appLaunchTimeoutMsecs = mArgs.getString(APP_LAUNCH_TIMEOUT_MSECS); @@ -83,13 +112,20 @@ public class AppCompatibility extends InstrumentationTestCase { if (workspaceLaunchTimeoutMsecs != null) { mWorkspaceLaunchTimeout = Integer.parseInt(workspaceLaunchTimeoutMsecs); } - getInstrumentation().getUiAutomation().setRotation(UiAutomation.ROTATION_FREEZE_0); + mInstrumentation.getUiAutomation().setRotation(UiAutomation.ROTATION_FREEZE_0); + + // set activity controller to suppress crash dialogs and collects them by process name + mAppErrors.clear(); + IActivityManager.Stub.asInterface(ServiceManager.checkService(Context.ACTIVITY_SERVICE)) + .setActivityController(mCrashSupressor, false); } - @Override - protected void tearDown() throws Exception { - getInstrumentation().getUiAutomation().setRotation(UiAutomation.ROTATION_UNFREEZE); - super.tearDown(); + @After + public void tearDown() throws Exception { + // unset activity controller + IActivityManager.Stub.asInterface(ServiceManager.checkService(Context.ACTIVITY_SERVICE)) + .setActivityController(null, false); + mInstrumentation.getUiAutomation().setRotation(UiAutomation.ROTATION_UNFREEZE); } /** @@ -98,6 +134,7 @@ public class AppCompatibility extends InstrumentationTestCase { * * @throws Exception */ + @Test public void testAppStability() throws Exception { String packageName = mArgs.getString(PACKAGE_TO_LAUNCH); if (packageName != null) { @@ -107,13 +144,23 @@ public class AppCompatibility extends InstrumentationTestCase { Log.w(TAG, String.format("Skipping %s; no launch intent", packageName)); return; } - ProcessErrorStateInfo err = launchActivity(packageName, intent); - // Make sure there are no errors when launching the application, - // otherwise raise an - // exception with the first error encountered. - assertNull(getStackTrace(err), err); + long startTime = System.currentTimeMillis(); + launchActivity(packageName, intent); try { - assertTrue("App crashed after launch.", processStillUp(packageName)); + checkDropbox(startTime, packageName); + if (mAppErrors.containsKey(packageName)) { + StringBuilder message = new StringBuilder("Error detected for package: ") + .append(packageName); + for (String err : mAppErrors.get(packageName)) { + message.append("\n\n"); + message.append(err); + } + Assert.fail(message.toString()); + } + // last check: see if app process is still running + Assert.assertTrue("app package \"" + packageName + "\" no longer found in running " + + "tasks, but no explicit crashes were detected; check logcat for details", + processStillUp(packageName)); } finally { returnHome(); } @@ -124,31 +171,30 @@ public class AppCompatibility extends InstrumentationTestCase { } /** - * Gets the stack trace for the error. - * - * @param in {@link ProcessErrorStateInfo} to parse. - * @return {@link String} the long message of the error. + * Check dropbox for entries of interest regarding the specified process + * @param startTime if not 0, only check entries with timestamp later than the start time + * @param processName the process name to check for */ - private String getStackTrace(ProcessErrorStateInfo in) { - if (in == null) { - return null; - } else { - return in.stackTrace; - } - } - - /** - * Returns the process name that the package is going to use. - * - * @param packageName name of the package - * @return process name of the package - */ - private String getProcessName(String packageName) { - try { - PackageInfo pi = mPackageManager.getPackageInfo(packageName, 0); - return pi.applicationInfo.processName; - } catch (NameNotFoundException e) { - return packageName; + private void checkDropbox(long startTime, String processName) { + DropBoxManager dropbox = (DropBoxManager) mContext + .getSystemService(Context.DROPBOX_SERVICE); + DropBoxManager.Entry entry = null; + while (null != (entry = dropbox.getNextEntry(null, startTime))) { + try { + // only check entries with tag that's of interest + String tag = entry.getTag(); + if (DROPBOX_TAGS.contains(tag)) { + String content = entry.getText(4096); + if (content != null) { + if (content.contains(processName)) { + addProcessError(processName, "dropbox:" + tag, content); + } + } + } + startTime = entry.getTimeMillis(); + } finally { + entry.close(); + } } } @@ -166,8 +212,7 @@ public class AppCompatibility extends InstrumentationTestCase { } private Intent getLaunchIntentForPackage(String packageName) { - UiModeManager umm = (UiModeManager) - getInstrumentation().getContext().getSystemService(Context.UI_MODE_SERVICE); + UiModeManager umm = (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE); boolean isLeanback = umm.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION; Intent intent = null; if (isLeanback) { @@ -186,35 +231,32 @@ public class AppCompatibility extends InstrumentationTestCase { * @return {@link Collection} of {@link ProcessErrorStateInfo} detected * during the app launch. */ - private ProcessErrorStateInfo launchActivity(String packageName, Intent intent) { + private void launchActivity(String packageName, Intent intent) { Log.d(TAG, String.format("launching package \"%s\" with intent: %s", packageName, intent.toString())); - String processName = getProcessName(packageName); - // Launch Activity mContext.startActivity(intent); try { + // artificial delay: in case app crashes after doing some work during launch Thread.sleep(mAppLaunchTimeout); } catch (InterruptedException e) { // ignore } + } - // See if there are any errors. We wait until down here to give ANRs as much time as - // possible to occur. - final Collection postErr = - mActivityManager.getProcessesInErrorState(); - - if (postErr == null) { - return null; + private void addProcessError(String processName, String errorType, String errorInfo) { + // parse out the package name if necessary, for apps with multiple proceses + String pkgName = processName.split(":", 2)[0]; + List errors; + if (mAppErrors.containsKey(pkgName)) { + errors = mAppErrors.get(pkgName); + } else { + errors = new ArrayList<>(); } - for (ProcessErrorStateInfo error : postErr) { - if (error.processName.equals(processName)) { - return error; - } - } - return null; + errors.add(String.format("type: %s details:\n%s", errorType, errorInfo)); + mAppErrors.put(pkgName, errors); } /** @@ -233,4 +275,55 @@ public class AppCompatibility extends InstrumentationTestCase { } return false; } + + /** + * An {@link IActivityController} that instructs framework to kill processes hitting crashes + * directly without showing crash dialogs + * + */ + private class CrashSuppressor extends IActivityController.Stub { + + @Override + public boolean activityStarting(Intent intent, String pkg) throws RemoteException { + Log.d(TAG, "activity starting: " + intent.getComponent().toShortString()); + return true; + } + + @Override + public boolean activityResuming(String pkg) throws RemoteException { + Log.d(TAG, "activity resuming: " + pkg); + return true; + } + + @Override + public boolean appCrashed(String processName, int pid, String shortMsg, String longMsg, + long timeMillis, String stackTrace) throws RemoteException { + Log.d(TAG, "app crash: " + processName); + addProcessError(processName, "crash", stackTrace); + // don't show dialog + return false; + } + + @Override + public int appEarlyNotResponding(String processName, int pid, String annotation) + throws RemoteException { + // ignore + return 0; + } + + @Override + public int appNotResponding(String processName, int pid, String processStats) + throws RemoteException { + Log.d(TAG, "app ANR: " + processName); + addProcessError(processName, "ANR", processStats); + // don't show dialog + return -1; + } + + @Override + public int systemNotResponding(String msg) throws RemoteException { + // ignore + return -1; + } + } } diff --git a/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibilityRunner.java b/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibilityRunner.java index 258937f59f51c41971017ef3730aa7fb6de263b9..b61ec346f0419006dbd5567655ba7274149c0836 100644 --- a/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibilityRunner.java +++ b/tests/Compatibility/src/com/android/compatibilitytest/AppCompatibilityRunner.java @@ -16,20 +16,7 @@ package com.android.compatibilitytest; -import android.os.Bundle; -import android.test.InstrumentationTestRunner; +import android.support.test.runner.AndroidJUnitRunner; -public class AppCompatibilityRunner extends InstrumentationTestRunner { - - private Bundle mArgs; - - @Override - public void onCreate(Bundle args) { - super.onCreate(args); - mArgs = args; - } - - public Bundle getBundle() { - return mArgs; - } -} +// empty subclass to maintain backwards compatibility on host-side harness +public class AppCompatibilityRunner extends AndroidJUnitRunner {} diff --git a/tests/Internal/src/android/app/WallpaperColorsTest.java b/tests/Internal/src/android/app/WallpaperColorsTest.java index fb529b936e5cee761393084e67f039506a2781ab..881f6284413f4ab409c785656d3bcb798fe3d84d 100644 --- a/tests/Internal/src/android/app/WallpaperColorsTest.java +++ b/tests/Internal/src/android/app/WallpaperColorsTest.java @@ -36,12 +36,12 @@ public class WallpaperColorsTest { final Color color = Color.valueOf(Color.WHITE); // Default should not support dark text! WallpaperColors colors = new WallpaperColors(color, null, null, 0); - Assert.assertTrue("Default behavior is not to support dark text", + Assert.assertTrue("Default behavior is not to support dark text.", (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0); // Override it colors = new WallpaperColors(color, null, null, WallpaperColors.HINT_SUPPORTS_DARK_TEXT); - Assert.assertFalse("Forcing dark text support doesn't work", + Assert.assertFalse("Forcing dark text support doesn't work.", (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0); } @@ -57,15 +57,18 @@ public class WallpaperColorsTest { int hints = WallpaperColors.fromBitmap(image).getColorHints(); boolean supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; boolean supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; - Assert.assertTrue("White surface should support dark text", supportsDarkText); - Assert.assertFalse("White surface shouldn't support dark theme", supportsDarkTheme); + boolean fromBitmap = (hints & WallpaperColors.HINT_FROM_BITMAP) != 0; + Assert.assertTrue("White surface should support dark text.", supportsDarkText); + Assert.assertFalse("White surface shouldn't support dark theme.", supportsDarkTheme); + Assert.assertTrue("From bitmap should be true if object was created " + + "using WallpaperColors#fromBitmap.", fromBitmap); canvas.drawColor(Color.BLACK); hints = WallpaperColors.fromBitmap(image).getColorHints(); supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; - Assert.assertFalse("Black surface shouldn't support dark text", supportsDarkText); - Assert.assertTrue("Black surface should support dark theme", supportsDarkTheme); + Assert.assertFalse("Black surface shouldn't support dark text.", supportsDarkText); + Assert.assertTrue("Black surface should support dark theme.", supportsDarkTheme); Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); @@ -75,7 +78,12 @@ public class WallpaperColorsTest { supportsDarkText = (WallpaperColors.fromBitmap(image) .getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; Assert.assertFalse("Light surface shouldn't support dark text " - + "when it contains dark pixels", supportsDarkText); + + "when it contains dark pixels.", supportsDarkText); + + WallpaperColors colors = new WallpaperColors(Color.valueOf(Color.GREEN), null, null); + fromBitmap = (colors.getColorHints() & WallpaperColors.HINT_FROM_BITMAP) != 0; + Assert.assertFalse("Object created from public constructor should not contain " + + "HINT_FROM_BITMAP.", fromBitmap); } /** diff --git a/tests/Internal/src/com/android/internal/colorextraction/types/TonalTest.java b/tests/Internal/src/com/android/internal/colorextraction/types/TonalTest.java index 6dc9ba7b621fb4924999e1724ff271d15e37159e..d46fff4db65a884543ce7b18ca6051f0cd785451 100644 --- a/tests/Internal/src/com/android/internal/colorextraction/types/TonalTest.java +++ b/tests/Internal/src/com/android/internal/colorextraction/types/TonalTest.java @@ -99,20 +99,39 @@ public class TonalTest { } @Test - public void tonal_excludeBlacklistedColor() { + public void tonal_blacklistTest() { // Make sure that palette generation will fail. - Tonal tonal = new Tonal(InstrumentationRegistry.getContext()); + final Tonal tonal = new Tonal(InstrumentationRegistry.getContext()); // Creating a WallpaperColors object that contains *only* blacklisted colors. - float[] hsl = tonal.getBlacklistedColors().get(0).getCenter(); - WallpaperColors colors = new WallpaperColors(Color.valueOf(ColorUtils.HSLToColor(hsl)), - null, null, 0); + final float[] hsl = tonal.getBlacklistedColors().get(0).getCenter(); + final int blacklistedColor = ColorUtils.HSLToColor(hsl); + WallpaperColors colorsFromBitmap = new WallpaperColors(Color.valueOf(blacklistedColor), + null, null, WallpaperColors.HINT_FROM_BITMAP); // Make sure that palette generation will fail - GradientColors normal = new GradientColors(); - tonal.extractInto(colors, normal, new GradientColors(), + final GradientColors normal = new GradientColors(); + tonal.extractInto(colorsFromBitmap, normal, new GradientColors(), new GradientColors()); assertTrue("Cannot generate a tonal palette from blacklisted colors.", normal.getMainColor() == Tonal.MAIN_COLOR_DARK); } + + @Test + public void tonal_ignoreBlacklistTest() { + final Tonal tonal = new Tonal(InstrumentationRegistry.getContext()); + + // Creating a WallpaperColors object that contains *only* blacklisted colors. + final float[] hsl = tonal.getBlacklistedColors().get(0).getCenter(); + final int blacklistedColor = ColorUtils.HSLToColor(hsl); + WallpaperColors colors = new WallpaperColors(Color.valueOf(blacklistedColor), + null, null); + + // Blacklist should be ignored when HINT_FROM_BITMAP isn't present. + final GradientColors normal = new GradientColors(); + tonal.extractInto(colors, normal, new GradientColors(), + new GradientColors()); + assertTrue("Blacklist should never be used on WallpaperColors generated using " + + "default constructor.", normal.getMainColor() == blacklistedColor); + } } diff --git a/tests/MusicBrowserDemo/AndroidManifest.xml b/tests/MusicBrowserDemo/AndroidManifest.xml deleted file mode 100644 index d2acfe2ad871ef29e68c9bff29f742e229fb92ee..0000000000000000000000000000000000000000 --- a/tests/MusicBrowserDemo/AndroidManifest.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/tests/MusicBrowserDemo/res/drawable-hdpi/ic_launcher.png b/tests/MusicBrowserDemo/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 47d6854e26d5da581349cb94029645a9b827ce8c..0000000000000000000000000000000000000000 Binary files a/tests/MusicBrowserDemo/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicBrowserDemo/res/drawable-mdpi/ic_launcher.png b/tests/MusicBrowserDemo/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 01b53fd505e89f490db6d15a507e80979692b2a7..0000000000000000000000000000000000000000 Binary files a/tests/MusicBrowserDemo/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicBrowserDemo/res/drawable-xhdpi/ic_launcher.png b/tests/MusicBrowserDemo/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index af762f2bee4e14c97d6c58f15e247c8434b02af1..0000000000000000000000000000000000000000 Binary files a/tests/MusicBrowserDemo/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicBrowserDemo/res/drawable-xxhdpi/ic_launcher.png b/tests/MusicBrowserDemo/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index eef47aa34b404e6791b3b10d2f56a151190daa3f..0000000000000000000000000000000000000000 Binary files a/tests/MusicBrowserDemo/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicBrowserDemo/res/values/strings.xml b/tests/MusicBrowserDemo/res/values/strings.xml deleted file mode 100644 index 858f278fa74fc7beb7664f6f0cdf9a84122bc42c..0000000000000000000000000000000000000000 --- a/tests/MusicBrowserDemo/res/values/strings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Music Browser - - diff --git a/tests/MusicBrowserDemo/res/values/styles.xml b/tests/MusicBrowserDemo/res/values/styles.xml deleted file mode 100644 index b83662d6fdec0234f8fc43ac2f2daebdac00906d..0000000000000000000000000000000000000000 --- a/tests/MusicBrowserDemo/res/values/styles.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/tests/MusicBrowserDemo/src/com/example/android/musicbrowserdemo/AppListFragment.java b/tests/MusicBrowserDemo/src/com/example/android/musicbrowserdemo/AppListFragment.java deleted file mode 100644 index 4e18ce91b7aba3cea2e676de346f93b644bdab65..0000000000000000000000000000000000000000 --- a/tests/MusicBrowserDemo/src/com/example/android/musicbrowserdemo/AppListFragment.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Copyright (C) 2014 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.example.android.musicbrowserdemo; - -import android.content.Context; -import android.content.ComponentName; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.service.media.MediaBrowserService; -import android.os.Bundle; -import android.support.v4.app.FragmentActivity; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.app.ListFragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ListView; -import android.widget.TextView; - -import java.util.ArrayList; -import java.util.List; - -// TODO: Include an icon. - -public class AppListFragment extends ListFragment { - - private Adapter mAdapter; - private List mItems; - - public AppListFragment() { - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - mAdapter = new Adapter(); - setListAdapter(mAdapter); - } - - @Override - public void onListItemClick(ListView l, View v, int position, long id) { - final Item item = mItems.get(position); - - Log.i("AppListFragment", "Item clicked: " + position + " -- " + item.component); - - final BrowserListFragment fragment = new BrowserListFragment(); - - final Bundle args = new Bundle(); - args.putParcelable(BrowserListFragment.ARG_COMPONENT, item.component); - fragment.setArguments(args); - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, fragment) - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) - .addToBackStack(null) - .commit(); - } - - private static class Item { - final String label; - final ComponentName component; - - Item(String l, ComponentName c) { - this.label = l; - this.component = c; - } - } - - private class Adapter extends BaseAdapter { - private final LayoutInflater mInflater; - - Adapter() { - super(); - - final Context context = getActivity(); - mInflater = LayoutInflater.from(context); - - // Load the data - final PackageManager pm = context.getPackageManager(); - final Intent intent = new Intent(MediaBrowserService.SERVICE_INTERFACE); - final List list = pm.queryIntentServices(intent, 0); - final int N = list.size(); - mItems = new ArrayList(N); - for (int i=0; i mItems = new ArrayList(); - private ComponentName mComponent; - private String mNodeId; - private MediaBrowser mBrowser; - - private static class Item { - final MediaBrowser.MediaItem media; - - Item(MediaBrowser.MediaItem m) { - this.media = m; - } - } - - public BrowserListFragment() { - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - Log.d(TAG, "onActivityCreated -- " + hashCode()); - mAdapter = new Adapter(); - setListAdapter(mAdapter); - - // Get our arguments - final Bundle args = getArguments(); - mComponent = args.getParcelable(ARG_COMPONENT); - mNodeId = args.getString(ARG_ID); - - // A hint about who we are, so the service can customize the results if it wants to. - final Bundle rootHints = new Bundle(); - rootHints.putBoolean(HINT_DISPLAY, true); - - mBrowser = new MediaBrowser(getActivity(), mComponent, mConnectionCallbacks, rootHints); - } - - @Override - public void onStart() { - super.onStart(); - mBrowser.connect(); - } - - @Override - public void onStop() { - super.onStop(); - mBrowser.disconnect(); - } - - @Override - public void onListItemClick(ListView l, View v, int position, long id) { - final Item item = mItems.get(position); - - Log.i("BrowserListFragment", "Item clicked: " + position + " -- " - + mAdapter.getItem(position).media.getDescription().getIconUri()); - - final BrowserListFragment fragment = new BrowserListFragment(); - - final Bundle args = new Bundle(); - args.putParcelable(BrowserListFragment.ARG_COMPONENT, mComponent); - args.putParcelable(BrowserListFragment.ARG_ID, item.media.getDescription().getIconUri()); - fragment.setArguments(args); - - getFragmentManager().beginTransaction() - .replace(android.R.id.content, fragment) - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) - .addToBackStack(null) - .commit(); - - } - - final MediaBrowser.ConnectionCallback mConnectionCallbacks - = new MediaBrowser.ConnectionCallback() { - @Override - public void onConnected() { - Log.d(TAG, "mConnectionCallbacks.onConnected"); - if (mNodeId == null) { - mNodeId = mBrowser.getRoot(); - } - mBrowser.subscribe(mNodeId, new MediaBrowser.SubscriptionCallback() { - @Override - public void onChildrenLoaded(String parentId, - List children) { - Log.d(TAG, "onChildrenLoaded parentId=" + parentId - + " children= " + children); - mItems.clear(); - final int N = children.size(); - for (int i=0; i - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/MusicServiceDemo/proguard-project.txt b/tests/MusicServiceDemo/proguard-project.txt deleted file mode 100644 index f2fe1559a217865a5454add526dcc446f892385b..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/tests/MusicServiceDemo/res/drawable-hdpi/ic_launcher.png b/tests/MusicServiceDemo/res/drawable-hdpi/ic_launcher.png deleted file mode 100644 index 47d6854e26d5da581349cb94029645a9b827ce8c..0000000000000000000000000000000000000000 Binary files a/tests/MusicServiceDemo/res/drawable-hdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicServiceDemo/res/drawable-mdpi/ic_launcher.png b/tests/MusicServiceDemo/res/drawable-mdpi/ic_launcher.png deleted file mode 100644 index 01b53fd505e89f490db6d15a507e80979692b2a7..0000000000000000000000000000000000000000 Binary files a/tests/MusicServiceDemo/res/drawable-mdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicServiceDemo/res/drawable-xhdpi/ic_launcher.png b/tests/MusicServiceDemo/res/drawable-xhdpi/ic_launcher.png deleted file mode 100644 index af762f2bee4e14c97d6c58f15e247c8434b02af1..0000000000000000000000000000000000000000 Binary files a/tests/MusicServiceDemo/res/drawable-xhdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicServiceDemo/res/drawable-xxhdpi/ic_launcher.png b/tests/MusicServiceDemo/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100644 index eef47aa34b404e6791b3b10d2f56a151190daa3f..0000000000000000000000000000000000000000 Binary files a/tests/MusicServiceDemo/res/drawable-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/tests/MusicServiceDemo/res/drawable-xxhdpi/thumbsup.png b/tests/MusicServiceDemo/res/drawable-xxhdpi/thumbsup.png deleted file mode 100644 index ea98c95bbbd8c1cea9f2ff9445351699333217f6..0000000000000000000000000000000000000000 Binary files a/tests/MusicServiceDemo/res/drawable-xxhdpi/thumbsup.png and /dev/null differ diff --git a/tests/MusicServiceDemo/res/layout/activity_main.xml b/tests/MusicServiceDemo/res/layout/activity_main.xml deleted file mode 100644 index 71753e3405874a9dbf11fe3e54cce41736b26ffa..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/res/layout/activity_main.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/tests/MusicServiceDemo/res/values/dimens.xml b/tests/MusicServiceDemo/res/values/dimens.xml deleted file mode 100644 index 9f63ef29d0e10ee2b4063ed2c85858f8688a4bf0..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/res/values/dimens.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - 16dp - 16dp - - diff --git a/tests/MusicServiceDemo/res/values/strings.xml b/tests/MusicServiceDemo/res/values/strings.xml deleted file mode 100644 index 14c01711f624b8adb2f7cf86aa17ee58dfa8afec..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/res/values/strings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Music Service Demo - Settings - Thumbs Up - No music found - Now Playing - - diff --git a/tests/MusicServiceDemo/res/values/styles.xml b/tests/MusicServiceDemo/res/values/styles.xml deleted file mode 100644 index b83662d6fdec0234f8fc43ac2f2daebdac00906d..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/res/values/styles.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/BrowserService.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/BrowserService.java deleted file mode 100644 index 4e2e47e07754e589aabadc2f5bec55ac96ab012b..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/BrowserService.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (C) 2014 Google Inc. All Rights Reserved. - * - * 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.example.android.musicservicedemo; - -import android.app.SearchManager; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.content.UriMatcher; -import android.content.res.Resources.NotFoundException; -import android.database.MatrixCursor; -import android.graphics.Bitmap; -import android.media.AudioManager; -import android.media.MediaDescription; -import android.media.MediaPlayer; -import android.media.MediaPlayer.OnCompletionListener; -import android.media.MediaPlayer.OnErrorListener; -import android.media.MediaPlayer.OnPreparedListener; -import android.media.browse.MediaBrowser; -import android.service.media.MediaBrowserService; -import android.service.media.MediaBrowserService.BrowserRoot; -import android.media.session.MediaSession; -import android.net.Uri; -import android.net.wifi.WifiManager; -import android.net.wifi.WifiManager.WifiLock; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Message; -import android.os.PowerManager; -import android.os.RemoteException; -import android.os.SystemClock; -import android.util.Log; - -import com.example.android.musicservicedemo.browser.MusicProvider; -import com.example.android.musicservicedemo.browser.MusicProviderTask; -import com.example.android.musicservicedemo.browser.MusicProviderTaskListener; -import com.example.android.musicservicedemo.browser.MusicTrack; - -import org.json.JSONException; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -/** - * Service that implements MediaBrowserService and returns our menu hierarchy. - */ -public class BrowserService extends MediaBrowserService { - private static final String TAG = "BrowserService"; - - // URI paths for browsing music - public static final String BROWSE_ROOT_BASE_PATH = "browse"; - public static final String NOW_PLAYING_PATH = "now_playing"; - public static final String PIANO_BASE_PATH = "piano"; - public static final String VOICE_BASE_PATH = "voice"; - - // Content URIs - public static final String AUTHORITY = "com.example.android.automotive.musicplayer"; - public static final Uri BASE_URI = Uri.parse("content://" + AUTHORITY); - public static final Uri BROWSE_URI = Uri.withAppendedPath(BASE_URI, BROWSE_ROOT_BASE_PATH); - - // URI matcher constants for browsing paths - public static final int BROWSE_ROOT = 1; - public static final int NOW_PLAYING = 2; - public static final int PIANO = 3; - public static final int VOICE = 4; - - // Map the the URI paths with the URI matcher constants - private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); - static { - sUriMatcher.addURI(AUTHORITY, BROWSE_ROOT_BASE_PATH, BROWSE_ROOT); - sUriMatcher.addURI(AUTHORITY, NOW_PLAYING_PATH, NOW_PLAYING); - sUriMatcher.addURI(AUTHORITY, PIANO_BASE_PATH, PIANO); - sUriMatcher.addURI(AUTHORITY, VOICE_BASE_PATH, VOICE); - } - - // Media metadata that will be provided for a media container - public static final String[] MEDIA_CONTAINER_PROJECTION = { - "uri", - "title", - "subtitle", - "image_uri", - "supported_actions" - }; - - // MusicProvider will download the music catalog - private MusicProvider mMusicProvider; - - private MediaSession mSession; - - @Override - public void onCreate() { - super.onCreate(); - - mSession = new MediaSession(this, "com.example.android.musicservicedemo.BrowserService"); - setSessionToken(mSession.getSessionToken()); - } - - @Override - public void onDestroy() { - super.onDestroy(); - } - - @Override - public BrowserRoot onGetRoot(String clientPackageName, int clientUid, Bundle rootHints) { - return new BrowserRoot(BROWSE_URI.toString(), null); - } - - @Override - public void onLoadChildren(final String parentId, - final Result> result) { - new Handler().postDelayed(new Runnable() { - public void run() { - final ArrayList list = new ArrayList(); - - for (int i=0; i<10; i++) { - MediaDescription.Builder bob = new MediaDescription.Builder(); - bob.setTitle("Title " + i); - bob.setSubtitle("Summary " + i); - bob.setMediaId(Uri.withAppendedPath(BASE_URI, - Integer.toString(i)).toString()); - list.add(new MediaBrowser.MediaItem(bob.build(), - MediaBrowser.MediaItem.FLAG_BROWSABLE)); - } - - result.sendResult(list); - } - }, 2000); - result.detach(); - } - - /* - @Override - public void query(final Query query, final IMetadataResultHandler metadataResultHandler, - final IErrorHandler errorHandler) - throws RemoteException { - Log.d(TAG, "query: " + query); - Utils.checkNotNull(query); - Utils.checkNotNull(metadataResultHandler); - Utils.checkNotNull(errorHandler); - - // Handle async response - new Thread(new Runnable() { - public void run() { - try { - // Pre-load the list of music - List musicTracks = getMusicList(); - if (musicTracks == null) { - notifyListenersOnPlaybackStateUpdate(getCurrentPlaybackState()); - errorHandler.onError(new Error(Error.UNKNOWN, - getString(R.string.music_error))); - return; - } - - final Uri uri = query.getUri(); - int match = sUriMatcher.match(uri); - Log.d(TAG, "Queried: " + uri + "; match: " + match); - switch (match) { - case BROWSE_ROOT: - { - Log.d(TAG, "Browse_root"); - - try { - MatrixCursor matrixCursor = mMusicProvider - .getRootContainerCurser(); - DataHolder holder = new DataHolder(MEDIA_CONTAINER_PROJECTION, - matrixCursor, null); - - Log.d(TAG, "on metadata response called " + holder.getCount()); - metadataResultHandler.onMetadataResponse(holder); - } catch (RemoteException e) { - Log.w(TAG, "Error delivering metadata in the callback.", e); - } - break; - } - case NOW_PLAYING: - { - try { - Log.d(TAG, "query NOW_PLAYING"); - MatrixCursor matrixCursor = mMusicProvider - .getRootItemCursor( - PIANO); - DataHolder holder = new DataHolder(MEDIA_CONTAINER_PROJECTION, - matrixCursor, null); - Log.d(TAG, "on metadata response called " + holder.getCount()); - metadataResultHandler.onMetadataResponse(holder); - } catch (RemoteException e) { - Log.w(TAG, "Error querying NOW_PLAYING"); - } - break; - } - case PIANO: - { - try { - Log.d(TAG, "query PIANO"); - MatrixCursor matrixCursor = mMusicProvider - .getRootItemCursor( - PIANO); - DataHolder holder = new DataHolder(MEDIA_CONTAINER_PROJECTION, - matrixCursor, null); - Log.d(TAG, "on metadata response called " + holder.getCount()); - metadataResultHandler.onMetadataResponse(holder); - } catch (RemoteException e) { - Log.w(TAG, "Error querying PIANO"); - } - break; - } - case VOICE: - { - try { - Log.d(TAG, "query VOICE"); - MatrixCursor matrixCursor = mMusicProvider - .getRootItemCursor( - VOICE); - DataHolder holder = new DataHolder(MEDIA_CONTAINER_PROJECTION, - matrixCursor, null); - Log.d(TAG, "on metadata response called " + holder.getCount()); - metadataResultHandler.onMetadataResponse(holder); - } catch (RemoteException e) { - Log.w(TAG, "Error querying VOICE"); - } - break; - } - default: - { - Log.w(TAG, "Skipping unmatched URI: " + uri); - } - } - } catch (NotFoundException e) { - Log.e(TAG, "::run:", e); - } catch (RemoteException e) { - Log.e(TAG, "::run:", e); - } - } // end run - }).start(); - } - - */ -} diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/MainActivity.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/MainActivity.java deleted file mode 100644 index 99d44e65954b8fc782ae5adc3e4356a1471b5270..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/MainActivity.java +++ /dev/null @@ -1,101 +0,0 @@ -/* Copyright 2014 Google Inc. All Rights Reserved. - * - * 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.example.android.musicservicedemo; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v7.app.AppCompatActivity; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; - -import com.example.android.musicservicedemo.R; - -// TODO Local UI - -/** - * Main activity of the app. - */ -public class MainActivity extends AppCompatActivity { - - private static final String LOG = "MainActivity"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - if (savedInstanceState == null) { - getSupportFragmentManager().beginTransaction() - .add(R.id.container, new PlaceholderFragment()) - .commit(); - } - - } - - /* - * (non-Javadoc) - * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - - // Inflate the menu; this adds items to the action bar if it is present. - //getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - /* - * (non-Javadoc) - * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) - */ - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - // if (id == R.id.action_settings) { - // return true; - // } - return super.onOptionsItemSelected(item); - } - - /** - * A placeholder fragment containing a simple view. - */ - public static class PlaceholderFragment extends Fragment { - - public PlaceholderFragment() { - } - - /* - * (non-Javadoc) - * @see - * android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater - * , android.view.ViewGroup, android.os.Bundle) - */ - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_main, container, false); - return rootView; - } - } - -} diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/Utils.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/Utils.java deleted file mode 100644 index 35897611e8d66b9292a20f71b6eec7bf625700ce..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/Utils.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2014 Google Inc. All Rights Reserved. - * - * 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.example.android.musicservicedemo; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.util.Log; - -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; - -public class Utils { - - private static final String TAG = "Utils"; - - /** - * Utility method to check that parameters are not null - * - * @param object - */ - public static final void checkNotNull(Object object) { - if (object == null) { - throw new NullPointerException(); - } - } - - /** - * Utility to download a bitmap - * - * @param source - * @return - */ - public static Bitmap getBitmapFromURL(String source) { - try { - URL url = new URL(source); - HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection(); - httpConnection.setDoInput(true); - httpConnection.connect(); - InputStream inputStream = httpConnection.getInputStream(); - return BitmapFactory.decodeStream(inputStream); - } catch (IOException e) { - Log.e(TAG, "getBitmapFromUrl: " + source, e); - } - return null; - } - - /** - * Utility method to wrap an index - * - * @param i - * @param size - * @return - */ - public static int wrapIndex(int i, int size) { - int m = i % size; - if (m < 0) { // java modulus can be negative - m += size; - } - return m; - } -} diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProvider.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProvider.java deleted file mode 100644 index 15038d78f2edd02565ad464f5830541e4079b1f2..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProvider.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (C) 2014 Google Inc. All Rights Reserved. - * - * 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.example.android.musicservicedemo.browser; - -import android.database.MatrixCursor; -import android.media.session.PlaybackState; -import android.net.Uri; -import android.util.Log; - -import com.example.android.musicservicedemo.BrowserService; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.BufferedInputStream; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; - -/** - * Utility class to get a list of MusicTrack's based on a server-side JSON - * configuration. - */ -public class MusicProvider { - - private static final String TAG = "MusicProvider"; - - private static final String MUSIC_URL = "http://storage.googleapis.com/automotive-media/music.json"; - - private static String MUSIC = "music"; - private static String TITLE = "title"; - private static String ALBUM = "album"; - private static String ARTIST = "artist"; - private static String GENRE = "genre"; - private static String SOURCE = "source"; - private static String IMAGE = "image"; - private static String TRACK_NUMBER = "trackNumber"; - private static String TOTAL_TRACK_COUNT = "totalTrackCount"; - private static String DURATION = "duration"; - - // Cache for music track data - private static List mMusicList; - - /** - * Get the cached list of music tracks - * - * @return - * @throws JSONException - */ - public List getMedia() throws JSONException { - if (null != mMusicList && mMusicList.size() > 0) { - return mMusicList; - } - return null; - } - - /** - * Get the list of music tracks from a server and return the list of - * MusicTrack objects. - * - * @return - * @throws JSONException - */ - public List retreiveMedia() throws JSONException { - if (null != mMusicList) { - return mMusicList; - } - int slashPos = MUSIC_URL.lastIndexOf('/'); - String path = MUSIC_URL.substring(0, slashPos + 1); - JSONObject jsonObj = parseUrl(MUSIC_URL); - - try { - JSONArray videos = jsonObj.getJSONArray(MUSIC); - if (null != videos) { - mMusicList = new ArrayList(); - for (int j = 0; j < videos.length(); j++) { - JSONObject music = videos.getJSONObject(j); - String title = music.getString(TITLE); - String album = music.getString(ALBUM); - String artist = music.getString(ARTIST); - String genre = music.getString(GENRE); - String source = music.getString(SOURCE); - // Media is stored relative to JSON file - if (!source.startsWith("http")) { - source = path + source; - } - String image = music.getString(IMAGE); - if (!image.startsWith("http")) { - image = path + image; - } - int trackNumber = music.getInt(TRACK_NUMBER); - int totalTrackCount = music.getInt(TOTAL_TRACK_COUNT); - int duration = music.getInt(DURATION) * 1000; // ms - - mMusicList.add(new MusicTrack(title, album, artist, genre, source, - image, trackNumber, totalTrackCount, duration)); - } - } - } catch (NullPointerException e) { - Log.e(TAG, "retreiveMedia", e); - } - return mMusicList; - } - - /** - * Download a JSON file from a server, parse the content and return the JSON - * object. - * - * @param urlString - * @return - */ - private JSONObject parseUrl(String urlString) { - InputStream is = null; - try { - java.net.URL url = new java.net.URL(urlString); - URLConnection urlConnection = url.openConnection(); - is = new BufferedInputStream(urlConnection.getInputStream()); - BufferedReader reader = new BufferedReader(new InputStreamReader( - urlConnection.getInputStream(), "iso-8859-1"), 8); - StringBuilder sb = new StringBuilder(); - String line = null; - while ((line = reader.readLine()) != null) { - sb.append(line); - } - return new JSONObject(sb.toString()); - } catch (Exception e) { - Log.d(TAG, "Failed to parse the json for media list", e); - return null; - } finally { - if (null != is) { - try { - is.close(); - } catch (IOException e) { - // ignore - } - } - } - } - - public MatrixCursor getRootContainerCurser() { - MatrixCursor matrixCursor = new MatrixCursor(BrowserService.MEDIA_CONTAINER_PROJECTION); - Uri.Builder pianoBuilder = new Uri.Builder(); - pianoBuilder.authority(BrowserService.AUTHORITY); - pianoBuilder.appendPath(BrowserService.PIANO_BASE_PATH); - matrixCursor.addRow(new Object[] { - pianoBuilder.build(), - BrowserService.PIANO_BASE_PATH, - "subtitle", - null, - 0 - }); - - Uri.Builder voiceBuilder = new Uri.Builder(); - voiceBuilder.authority(BrowserService.AUTHORITY); - voiceBuilder.appendPath(BrowserService.VOICE_BASE_PATH); - matrixCursor.addRow(new Object[] { - voiceBuilder.build(), - BrowserService.VOICE_BASE_PATH, - "subtitle", - null, - 0 - }); - return matrixCursor; - } - - public MatrixCursor getRootItemCursor(int type) { - if (type == BrowserService.NOW_PLAYING) { - MatrixCursor matrixCursor = new MatrixCursor(BrowserService.MEDIA_CONTAINER_PROJECTION); - - try { - // Just return all of the tracks for now - List musicTracks = retreiveMedia(); - for (MusicTrack musicTrack : musicTracks) { - Uri.Builder builder = new Uri.Builder(); - builder.authority(BrowserService.AUTHORITY); - builder.appendPath(BrowserService.NOW_PLAYING_PATH); - builder.appendPath(musicTrack.getTitle()); - matrixCursor.addRow(new Object[] { - builder.build(), - musicTrack.getTitle(), - musicTrack.getArtist(), - musicTrack.getImage(), - PlaybackState.ACTION_PLAY - }); - Log.d(TAG, "Uri " + builder.build()); - } - } catch (JSONException e) { - Log.e(TAG, "::getRootItemCursor:", e); - } - - Log.d(TAG, "cursor: " + matrixCursor.getCount()); - return matrixCursor; - } else if (type == BrowserService.PIANO) { - MatrixCursor matrixCursor = new MatrixCursor(BrowserService.MEDIA_CONTAINER_PROJECTION); - - try { - List musicTracks = retreiveMedia(); - for (MusicTrack musicTrack : musicTracks) { - Uri.Builder builder = new Uri.Builder(); - builder.authority(BrowserService.AUTHORITY); - builder.appendPath(BrowserService.PIANO_BASE_PATH); - builder.appendPath(musicTrack.getTitle()); - matrixCursor.addRow(new Object[] { - builder.build(), - musicTrack.getTitle(), - musicTrack.getArtist(), - musicTrack.getImage(), - PlaybackState.ACTION_PLAY - }); - Log.d(TAG, "Uri " + builder.build()); - } - } catch (JSONException e) { - Log.e(TAG, "::getRootItemCursor:", e); - } - - Log.d(TAG, "cursor: " + matrixCursor.getCount()); - return matrixCursor; - } else if (type == BrowserService.VOICE) { - MatrixCursor matrixCursor = new MatrixCursor(BrowserService.MEDIA_CONTAINER_PROJECTION); - - try { - List musicTracks = retreiveMedia(); - for (MusicTrack musicTrack : musicTracks) { - Uri.Builder builder = new Uri.Builder(); - builder.authority(BrowserService.AUTHORITY); - builder.appendPath(BrowserService.VOICE_BASE_PATH); - builder.appendPath(musicTrack.getTitle()); - matrixCursor.addRow(new Object[] { - builder.build(), - musicTrack.getTitle(), - musicTrack.getArtist(), - musicTrack.getImage(), - PlaybackState.ACTION_PLAY - }); - Log.d(TAG, "Uri " + builder.build()); - } - } catch (JSONException e) { - Log.e(TAG, "::getRootItemCursor:", e); - } - - Log.d(TAG, "cursor: " + matrixCursor.getCount()); - return matrixCursor; - - } - return null; - } -} diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTask.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTask.java deleted file mode 100644 index ffda1108e662b7c84d4423d198f1004825589c21..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicProviderTask.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2014 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.example.android.musicservicedemo.browser; - -import android.os.AsyncTask; -import android.util.Log; - -import org.json.JSONException; - -/** - * Asynchronous task to retrieve the music data using MusicProvider. - */ -public class MusicProviderTask extends AsyncTask { - - private static final String TAG = "MusicProviderTask"; - - MusicProvider mMusicProvider; - MusicProviderTaskListener mMusicProviderTaskListener; - - /** - * Initialize the task with the provider to download the music data and the - * listener to be informed when the task is done. - * - * @param musicProvider - * @param listener - */ - public MusicProviderTask(MusicProvider musicProvider, - MusicProviderTaskListener listener) { - mMusicProvider = musicProvider; - mMusicProviderTaskListener = listener; - } - - /* - * (non-Javadoc) - * @see android.os.AsyncTask#doInBackground(java.lang.Object[]) - */ - @Override - protected Void doInBackground(Void... arg0) { - try { - mMusicProvider.retreiveMedia(); - } catch (JSONException e) { - Log.e(TAG, "::doInBackground:", e); - } - return null; - } - - /* - * (non-Javadoc) - * @see android.os.AsyncTask#onPostExecute(java.lang.Object) - */ - @Override - protected void onPostExecute(Void result) { - mMusicProviderTaskListener.onMusicProviderTaskCompleted(); - } - -} diff --git a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicTrack.java b/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicTrack.java deleted file mode 100644 index 02ea89918f7df97f41b3a942e423b290e5c67518..0000000000000000000000000000000000000000 --- a/tests/MusicServiceDemo/src/com/example/android/musicservicedemo/browser/MusicTrack.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2014 Google Inc. All Rights Reserved. - * - * 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.example.android.musicservicedemo.browser; - -/** - * A class to model music track metadata. - */ -public class MusicTrack { - - private static final String TAG = "MusicTrack"; - - private String mTitle; - private String mAlbum; - private String mArtist; - private String mGenre; - private String mSource; - private String mImage; - private int mTrackNumber; - private int mTotalTrackCount; - private int mDuration; - - /** - * Constructor creating a MusicTrack instance. - * - * @param title - * @param album - * @param artist - * @param genre - * @param source - * @param image - * @param trackNumber - * @param totalTrackCount - * @param duration - */ - public MusicTrack(String title, String album, String artist, String genre, String source, - String image, int trackNumber, int totalTrackCount, int duration) { - this.mTitle = title; - this.mAlbum = album; - this.mArtist = artist; - this.mGenre = genre; - this.mSource = source; - this.mImage = image; - this.mTrackNumber = trackNumber; - this.mTotalTrackCount = totalTrackCount; - this.mDuration = duration; - } - - public String getTitle() { - return mTitle; - } - - public void setTitle(String mTitle) { - this.mTitle = mTitle; - } - - public String getAlbum() { - return mAlbum; - } - - public void setAlbum(String mAlbum) { - this.mAlbum = mAlbum; - } - - public String getArtist() { - return mArtist; - } - - public void setArtist(String mArtist) { - this.mArtist = mArtist; - } - - public String getGenre() { - return mGenre; - } - - public void setGenre(String mGenre) { - this.mGenre = mGenre; - } - - public String getSource() { - return mSource; - } - - public void setSource(String mSource) { - this.mSource = mSource; - } - - public String getImage() { - return mImage; - } - - public void setImage(String mImage) { - this.mImage = mImage; - } - - public int getTrackNumber() { - return mTrackNumber; - } - - public void setTrackNumber(int mTrackNumber) { - this.mTrackNumber = mTrackNumber; - } - - public int getTotalTrackCount() { - return mTotalTrackCount; - } - - public void setTotalTrackCount(int mTotalTrackCount) { - this.mTotalTrackCount = mTotalTrackCount; - } - - public int getDuration() { - return mDuration; - } - - public void setDuration(int mDuration) { - this.mDuration = mDuration; - } - - public String toString() { - return mTitle; - } - -} diff --git a/tests/ServiceCrashTest/Android.mk b/tests/ServiceCrashTest/Android.mk new file mode 100644 index 0000000000000000000000000000000000000000..d1f845623be8a3ecb28d975df8363358762a2a29 --- /dev/null +++ b/tests/ServiceCrashTest/Android.mk @@ -0,0 +1,19 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := tests + +# Only compile source java files in this apk. +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := ServiceCrashTest + +LOCAL_CERTIFICATE := platform +LOCAL_JAVA_LIBRARIES := legacy-android-test + +LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util android-support-test + +include $(BUILD_PACKAGE) + +# Use the following include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/tests/ServiceCrashTest/AndroidManifest.xml b/tests/ServiceCrashTest/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..387c8b8ae36b3734e37d71e131cc588bb8bd4a9c --- /dev/null +++ b/tests/ServiceCrashTest/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/CrashingService.java b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/CrashingService.java new file mode 100644 index 0000000000000000000000000000000000000000..8593bcea9c3d0fe921ae33ac66d5ea7115843764 --- /dev/null +++ b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/CrashingService.java @@ -0,0 +1,66 @@ +/* + * 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.tests.servicecrashtest; + +import android.app.Service; +import android.content.Intent; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.Process; +import android.widget.Toast; + +public class CrashingService extends Service { + private ServiceHandler mServiceHandler; + + static long CRASH_DELAY = 1000; + + // Handler that receives messages from the thread + private final class ServiceHandler extends Handler { + public ServiceHandler(Looper looper) { + super(looper); + } + + @Override + public void handleMessage(Message msg) { + throw new RuntimeException("Crashing!"); + } + } + + @Override + public void onCreate() { + mServiceHandler = new ServiceHandler(Looper.getMainLooper()); + Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show(); + + Message msg = mServiceHandler.obtainMessage(); + mServiceHandler.sendMessageDelayed(msg, CRASH_DELAY); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + // If we get killed, after returning from here, restart + return START_STICKY; + } + + @Override + public IBinder onBind(Intent intent) { + // We don't provide binding, so return null + return null; + } +} \ No newline at end of file diff --git a/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/MainActivity.java b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/MainActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..8fffecc41dbd5400140da6ba1f2aa2c03c99c620 --- /dev/null +++ b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/MainActivity.java @@ -0,0 +1,70 @@ +/* + * 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.tests.servicecrashtest; + +import android.app.Activity; +import android.app.Service; +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; +import android.widget.TextView; + +import java.util.concurrent.CountDownLatch; + +public class MainActivity extends Activity { + + private static final String TAG = "ServiceCrashTest"; + + static final CountDownLatch sBindingDiedLatch = new CountDownLatch(1); + + private ServiceConnection mServiceConnection = new ServiceConnection() { + + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.i(TAG, "Service connected"); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + Log.i(TAG, "Service disconnected"); + } + + @Override + public void onBindingDied(ComponentName componentName) { + Log.i(TAG, "Binding died"); + sBindingDiedLatch.countDown(); + } + }; + + @Override + public void onCreate(Bundle savedInstance) { + super.onCreate(savedInstance); + + setContentView(new TextView(this)); + } + + public void onResume() { + Intent intent = new Intent(); + intent.setClass(this, CrashingService.class); + bindService(intent, mServiceConnection, Service.BIND_AUTO_CREATE); + + super.onResume(); + } +} diff --git a/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/ServiceCrashTest.java b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/ServiceCrashTest.java new file mode 100644 index 0000000000000000000000000000000000000000..fb0fa4b86185b033b053e936358ffc19e365a455 --- /dev/null +++ b/tests/ServiceCrashTest/src/com/android/tests/servicecrashtest/ServiceCrashTest.java @@ -0,0 +1,76 @@ +/* + * 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.tests.servicecrashtest; + +import android.app.UiAutomation; +import android.content.Context; +import android.content.Intent; +import android.os.RemoteException; +import android.provider.Settings; +import android.test.InstrumentationTestCase; + +import com.android.compatibility.common.util.SystemUtil; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +public class ServiceCrashTest extends InstrumentationTestCase { + + private static final String TAG = ServiceCrashTest.class.getSimpleName(); + + private String mResetConstants = "foo=bar"; + + @Override + protected void setUp() throws Exception { + super.setUp(); + mResetConstants = Settings.Global.getString( + getInstrumentation().getContext().getContentResolver(), + Settings.Global.ACTIVITY_MANAGER_CONSTANTS); + setAMConstants("service_crash_restart_duration=5000,service_crash_max_retry=4"); + } + + @Override + protected void tearDown() throws Exception { + // Reset the activity manager constants + setAMConstants(mResetConstants); + super.tearDown(); + } + + private void setAMConstants(String value) throws IOException { + // Set the activity manager constants + if (value == null) { + SystemUtil.runShellCommand(getInstrumentation(), + "settings delete global activity_manager_constants"); + } else { + SystemUtil.runShellCommand(getInstrumentation(), "settings put global " + + "activity_manager_constants " + value); + } + } + + public void testCrashQuickly() throws RemoteException { + Context ctx = getInstrumentation().getContext(); + // Start the activity, which will bind the crashing service + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_MAIN); + intent.setClass(ctx, MainActivity.class); + ctx.startActivity(intent); + try { + assertTrue(MainActivity.sBindingDiedLatch.await(200, TimeUnit.SECONDS)); + } catch (InterruptedException ie) { + } + } +} diff --git a/tests/ShowWhenLockedApp/Android.mk b/tests/ShowWhenLockedApp/Android.mk new file mode 100644 index 0000000000000000000000000000000000000000..006416791dd965d855585afdee63b21bc17605b9 --- /dev/null +++ b/tests/ShowWhenLockedApp/Android.mk @@ -0,0 +1,10 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := ShowWhenLocked + +LOCAL_MODULE_TAGS := tests + +include $(BUILD_PACKAGE) \ No newline at end of file diff --git a/tests/ShowWhenLockedApp/AndroidManifest.xml b/tests/ShowWhenLockedApp/AndroidManifest.xml new file mode 100644 index 0000000000000000000000000000000000000000..a872e061526fdebf2fb3eff21968316b7d469ace --- /dev/null +++ b/tests/ShowWhenLockedApp/AndroidManifest.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/tests/ShowWhenLockedApp/src/com/android/showwhenlocked/ShowWhenLockedActivity.java b/tests/ShowWhenLockedApp/src/com/android/showwhenlocked/ShowWhenLockedActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..f7148318267694dfe10af63e8cebef1a367d351a --- /dev/null +++ b/tests/ShowWhenLockedApp/src/com/android/showwhenlocked/ShowWhenLockedActivity.java @@ -0,0 +1,164 @@ +/* + * 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.showwhenlocked; + +import android.app.Activity; +import android.app.KeyguardManager; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; + +/** + * Sample app to test the manifest attrs {@link android.R.attr#showWhenLocked} + * and {@link android.R.attr#turnScreenOn}. + * + *

          Run with adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity to test + * when the phone has a keyguard enabled and/or the screen is off. + * + * Use the extra {@link #EXTRA_SHOW_WHEN_LOCKED} and {@link #EXTRA_TURN_SCREEN_ON} to test + * multiple scenarios. + * + * Ex: adb shell am start -n com.android.showwhenlocked/.ShowWhenLockedActivity --ez \ + * showWhenLocked false \ + * setTurnScreenOnAtStop false + * + * Note: Behavior may change if values are set to true after the Activity is already created + * and only brought to the front. For example, turnScreenOn only takes effect on the next launch + * if set using the extra value. + */ +public class ShowWhenLockedActivity extends Activity { + private static final String TAG = ShowWhenLockedActivity.class.getSimpleName(); + + /** + * The value set for this extra sets {@link #setShowWhenLocked(boolean)} as soon as the app + * is launched. This may cause delays in when the value set takes affect. + */ + private static final String EXTRA_SHOW_WHEN_LOCKED = "showWhenLocked"; + + /** + * The value set for this extra sets {@link #setTurnScreenOn(boolean)} as soon as the app + * is launched. This may cause delays in when the value set takes affect. + */ + private static final String EXTRA_TURN_SCREEN_ON = "turnScreenOn"; + + /** + * The value set for this extra will call {@link #setShowWhenLocked(boolean)} at onStop so + * it take effect on the next launch. + */ + private static final String EXTRA_SHOW_WHEN_LOCKED_STOP = "setShowWhenLockedAtStop"; + + /** + * The value set for this extra will call {@link #setTurnScreenOn(boolean)} at onStop so + * it take effect on the next launch. + */ + private static final String EXTRA_TURN_SCREEN_ON_STOP = "setTurnScreenOnAtStop"; + + /** + * The value set for this extra will call + * {@link KeyguardManager#requestDismissKeyguard(Activity, KeyguardManager.KeyguardDismissCallback)} + * as soon as the app is launched. + */ + private static final String EXTRA_DISMISS_KEYGUARD = "dismissKeyguard"; + + private boolean showWhenLockedAtStop = true; + private boolean turnScreenOnAtStop = true; + + private KeyguardManager mKeyguardManager; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.v(TAG, "onCreate"); + mKeyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); + handleExtras(getIntent().getExtras()); + } + + @Override + protected void onStart() { + super.onStart(); + Log.v(TAG, "onStart"); + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + handleExtras(intent.getExtras()); + } + + @Override + protected void onResume() { + super.onResume(); + Log.v(TAG, "onResume"); + } + + @Override + protected void onPause() { + super.onPause(); + Log.v(TAG, "onPause"); + } + + @Override + protected void onStop() { + super.onStop(); + Log.v(TAG, "onStop"); + + setShowWhenLocked(showWhenLockedAtStop); + setTurnScreenOn(turnScreenOnAtStop); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + Log.v(TAG, "onDestroy"); + } + + private void handleExtras(Bundle extras) { + if (extras == null) { + return; + } + + if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED)) { + boolean showWhenLocked = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED, true); + Log.v(TAG, "Setting showWhenLocked to " + showWhenLocked); + setShowWhenLocked(showWhenLocked); + } + + if (extras.containsKey(EXTRA_TURN_SCREEN_ON)) { + boolean turnScreenOn = extras.getBoolean(EXTRA_TURN_SCREEN_ON, true); + Log.v(TAG, "Setting turnScreenOn to " + turnScreenOn); + setTurnScreenOn(turnScreenOn); + } + + if (extras.containsKey(EXTRA_SHOW_WHEN_LOCKED_STOP)) { + showWhenLockedAtStop = extras.getBoolean(EXTRA_SHOW_WHEN_LOCKED_STOP, true); + Log.v(TAG, "Setting showWhenLockedAtStop to " + showWhenLockedAtStop); + } + + if (extras.containsKey(EXTRA_TURN_SCREEN_ON_STOP)) { + turnScreenOnAtStop = extras.getBoolean(EXTRA_TURN_SCREEN_ON_STOP, true); + Log.v(TAG, "Setting turnScreenOnAtStop to " + turnScreenOnAtStop); + } + + if (extras.containsKey(EXTRA_DISMISS_KEYGUARD)) { + if (extras.getBoolean(EXTRA_DISMISS_KEYGUARD, false)) { + Log.v(TAG, "Requesting dismiss keyguard"); + mKeyguardManager.requestDismissKeyguard(this, null); + } + } + } +} + diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java index 82104034ca6eaf1f9e22d9e64edaf96d559aae74..163250d9d666f637f90dd01fc44ce62495446efd 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java @@ -296,6 +296,7 @@ public class NotificationTestList extends TestActivity Notification n = new Notification.Builder(NotificationTestList.this, "min") .setSmallIcon(R.drawable.icon2) .setContentTitle("Min priority") + .setTicker("Min priority") .build(); mNM.notify("min", 7000, n); } @@ -306,6 +307,7 @@ public class NotificationTestList extends TestActivity Notification n = new Notification.Builder(NotificationTestList.this, "low") .setSmallIcon(R.drawable.icon2) .setContentTitle("Low priority") + .setTicker("Low priority") .build(); mNM.notify("low", 7002, n); } @@ -326,6 +328,7 @@ public class NotificationTestList extends TestActivity Notification n = new Notification.Builder(NotificationTestList.this, "high") .setSmallIcon(R.drawable.icon2) .setContentTitle("High priority") + .setTicker("High priority") .build(); mNM.notify("high", 7006, n); } diff --git a/tests/TouchLatency/.gitignore b/tests/TouchLatency/.gitignore index cfb71643044b91d20b4d578e29d9f94910a0c112..bd79078a904e742e22b2ee26488a6aadb64d5e71 100644 --- a/tests/TouchLatency/.gitignore +++ b/tests/TouchLatency/.gitignore @@ -3,3 +3,4 @@ /.idea .DS_Store /build +.iml diff --git a/tests/TouchLatency/Android.mk b/tests/TouchLatency/Android.mk index 6ad47057e8e811d18a377a24df416cf3cadb3fb8..969283df4af7acde2e402ad8865579287845bb74 100644 --- a/tests/TouchLatency/Android.mk +++ b/tests/TouchLatency/Android.mk @@ -8,19 +8,11 @@ LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml # omit gradle 'build' dir LOCAL_SRC_FILES := $(call all-java-files-under,app/src/main/java) -# use appcompat/support lib from the tree, so improvements/ -# regressions are reflected in test data LOCAL_RESOURCE_DIR := \ - $(LOCAL_PATH)/app/src/main/res \ - frameworks/support/v7/appcompat/res + $(LOCAL_PATH)/app/src/main/res LOCAL_AAPT_FLAGS := \ - --auto-add-overlay \ - --extra-packages android.support.v7.appcompat - -LOCAL_STATIC_JAVA_LIBRARIES := \ - android-support-v4 \ - android-support-v7-appcompat + --auto-add-overlay LOCAL_PACKAGE_NAME := TouchLatency diff --git a/tests/TouchLatency/TouchLatency.iml b/tests/TouchLatency/TouchLatency.iml deleted file mode 100644 index cd87cea19f1d1ab2ddb02db3d3cac19de93a0da8..0000000000000000000000000000000000000000 --- a/tests/TouchLatency/TouchLatency.iml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/TouchLatency/app/app.iml b/tests/TouchLatency/app/app.iml deleted file mode 100644 index 689e5e0024da921defbc6874408b09f582d6dfd6..0000000000000000000000000000000000000000 --- a/tests/TouchLatency/app/app.iml +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/tests/TouchLatency/app/build.gradle b/tests/TouchLatency/app/build.gradle index 7133beb8efeee65bda54add1f8150149b202c663..233711055eb807bbd9e65c00513dcb7065ea6056 100644 --- a/tests/TouchLatency/app/build.gradle +++ b/tests/TouchLatency/app/build.gradle @@ -18,8 +18,3 @@ android { } } } - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:21.0.3' -} diff --git a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java index 55440c849ebcfe12d6e27aeb7e1c9b2f00a3aaf0..b763c78207deec50fba61ca935cb5d80db6f2ba5 100644 --- a/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java +++ b/tests/TouchLatency/app/src/main/java/com/prefabulated/touchlatency/TouchLatencyActivity.java @@ -16,12 +16,12 @@ package com.prefabulated.touchlatency; +import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.CountDownTimer; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.method.Touch; import android.util.AttributeSet; @@ -173,7 +173,7 @@ class TouchLatencyView extends View implements View.OnTouchListener { private float mVelocityX, mVelocityY; } -public class TouchLatencyActivity extends AppCompatActivity { +public class TouchLatencyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml b/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml index 1824f4a6899582cd42f4bcbc049795c1ba04e0aa..5aef72e8d383e61844f53ca8a8aa8ad30919d85c 100644 --- a/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml +++ b/tests/TouchLatency/app/src/main/res/menu/menu_touch_latency.xml @@ -14,8 +14,7 @@ limitations under the License. -->

          + android:orderInCategory="100" android:showAsAction="always" /> diff --git a/tests/TouchLatency/app/src/main/res/values/styles.xml b/tests/TouchLatency/app/src/main/res/values/styles.xml index aa7c09fff40dffcccc545121935d72ae5d128532..22da7c1d050b0d75b28b0e96bd4222de29780e97 100644 --- a/tests/TouchLatency/app/src/main/res/values/styles.xml +++ b/tests/TouchLatency/app/src/main/res/values/styles.xml @@ -16,7 +16,7 @@ - diff --git a/tests/UiBench/Android.mk b/tests/UiBench/Android.mk index 71067aef52c7df0d43922d7c572bf11f93bded44..e6af4b024700d1b42f12983aaa2345d62778d1fc 100644 --- a/tests/UiBench/Android.mk +++ b/tests/UiBench/Android.mk @@ -15,21 +15,24 @@ LOCAL_RESOURCE_DIR := \ frameworks/support/design/res \ frameworks/support/v7/appcompat/res \ frameworks/support/v7/cardview/res \ - frameworks/support/v7/recyclerview/res + frameworks/support/v7/recyclerview/res \ + frameworks/support/v17/leanback/res LOCAL_AAPT_FLAGS := \ --auto-add-overlay \ --extra-packages android.support.design \ --extra-packages android.support.v7.appcompat \ --extra-packages android.support.v7.cardview \ - --extra-packages android.support.v7.recyclerview + --extra-packages android.support.v7.recyclerview \ + --extra-packages android.support.v17.leanback LOCAL_STATIC_JAVA_LIBRARIES := \ android-support-design \ android-support-v4 \ android-support-v7-appcompat \ android-support-v7-cardview \ - android-support-v7-recyclerview + android-support-v7-recyclerview \ + android-support-v17-leanback LOCAL_PACKAGE_NAME := UiBench diff --git a/tests/UiBench/AndroidManifest.xml b/tests/UiBench/AndroidManifest.xml index c20be5141df5d580286d7c728455429ee72b51a2..2521dc9f82ae751a51d7805be19106b4c2022abf 100644 --- a/tests/UiBench/AndroidManifest.xml +++ b/tests/UiBench/AndroidManifest.xml @@ -257,5 +257,15 @@ + + + + + + + diff --git a/tests/UiBench/build.gradle b/tests/UiBench/build.gradle index 03ef7f106de599456f419a65180de2d051fa3660..fa2cfcd438fd853d7f38ac7194c27c52f75a91ef 100644 --- a/tests/UiBench/build.gradle +++ b/tests/UiBench/build.gradle @@ -36,4 +36,5 @@ dependencies { compile 'com.android.support:cardview-v7:23.0.1' compile 'com.android.support:recyclerview-v7:23.0.1' compile 'com.android.support:design:23.0.1' + compile 'com.android.support:leanback-v17:23.0.1' } diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/BitmapLoader.java b/tests/UiBench/src/com/android/test/uibench/leanback/BitmapLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..8af9d3bca647280cb25e4ed3fba8d37aaddb2797 --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/BitmapLoader.java @@ -0,0 +1,144 @@ +/* + * 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.test.uibench.leanback; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.os.AsyncTask; +import android.support.v4.util.LruCache; +import android.util.DisplayMetrics; +import android.widget.ImageView; + +/** + * This class simulates a typical Bitmap memory cache with up to 1.5 times of screen pixels. + * The sample bitmap is generated in worker threads in AsyncTask.THREAD_POOL_EXECUTOR. + * The class does not involve decoding, disk cache i/o, network i/o, as the test is mostly focusing + * on the graphics side. + * There will be two general use cases for cards in leanback test: + * 1. As a typical app, each card has its own id and load its own Bitmap, the test result will + * include impact of texture upload. + * 2. All cards share same id/Bitmap and there wont be texture upload. + */ +public class BitmapLoader { + + /** + * Caches bitmaps with bytes adds up to 1.5 x screen + * DO NOT CHANGE this defines baseline of test result. + */ + static final float CACHE_SIZE_TO_SCREEN = 1.5f; + /** + * 4 bytes per pixel for RGBA_8888 + */ + static final int BYTES_PER_PIXEL = 4; + + static LruCache sLruCache; + static Paint sTextPaint = new Paint(); + + static { + sTextPaint.setColor(Color.BLACK); + } + + /** + * get or initialize LruCache, the max is set to full screen pixels. + */ + static LruCache getLruCache(Context context) { + if (sLruCache == null) { + DisplayMetrics metrics = context.getResources().getDisplayMetrics(); + int width = metrics.widthPixels; + int height = metrics.heightPixels; + int maxBytes = (int) (width * height * BYTES_PER_PIXEL * CACHE_SIZE_TO_SCREEN); + sLruCache = new LruCache(maxBytes) { + @Override + protected int sizeOf(Long key, Bitmap value) { + return value.getByteCount(); + } + }; + } + return sLruCache; + } + + static class BitmapAsyncTask extends AsyncTask { + + ImageView mImageView; + long mId; + int mWidth; + int mHeight; + + BitmapAsyncTask(ImageView view, long id, int width, int height) { + mImageView = view; + mId = id; + mImageView.setTag(this); + mWidth = width; + mHeight = height; + } + + @Override + protected Bitmap doInBackground(Void... voids) { + // generate a sample bitmap: white background and text showing id + Bitmap bitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawARGB(0xff, 0xff, 0xff, 0xff); + canvas.drawText(Long.toString(mId), 0f, mHeight / 2, sTextPaint); + canvas.setBitmap(null); + bitmap.prepareToDraw(); + return bitmap; + } + + @Override + protected void onCancelled() { + if (mImageView.getTag() == this) { + mImageView.setTag(null); + } + } + + @Override + protected void onPostExecute(Bitmap bitmap) { + if (mImageView.getTag() == this) { + mImageView.setTag(null); + sLruCache.put(mId, bitmap); + mImageView.setImageBitmap(bitmap); + } + } + } + + public static void loadBitmap(ImageView view, long id, int width, int height) { + Context context = view.getContext(); + Bitmap bitmap = getLruCache(context).get(id); + if (bitmap != null) { + view.setImageBitmap(bitmap); + return; + } + new BitmapAsyncTask(view, id, width, height) + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } + + public static void cancel(ImageView view) { + BitmapAsyncTask task = (BitmapAsyncTask) view.getTag(); + if (task != null && task.mImageView == view) { + task.mImageView.setTag(null); + task.cancel(false); + } + } + + public static void clear() { + if (sLruCache != null) { + sLruCache.evictAll(); + } + } +} diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/BrowseActivity.java b/tests/UiBench/src/com/android/test/uibench/leanback/BrowseActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..d29f0eaf6fdc8f98c12808e481e13d070bbd7adf --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/BrowseActivity.java @@ -0,0 +1,31 @@ +/* + * 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.test.uibench.leanback; + +import android.support.v4.app.FragmentActivity; +import android.app.Activity; +import android.os.Bundle; + +public class BrowseActivity extends FragmentActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (savedInstanceState == null) { + getSupportFragmentManager().beginTransaction() + .add(android.R.id.content, new BrowseFragment()) + .commit(); + } + } + +} diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/BrowseFragment.java b/tests/UiBench/src/com/android/test/uibench/leanback/BrowseFragment.java new file mode 100644 index 0000000000000000000000000000000000000000..11ea36132dcc6e6025ca1f9a907a2b02b77a7f39 --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/BrowseFragment.java @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.test.uibench.leanback; + +import android.os.Bundle; + +public class BrowseFragment extends android.support.v17.leanback.app.BrowseSupportFragment { + + public BrowseFragment() { + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + BitmapLoader.clear(); + TestHelper.initBackground(getActivity()); + boolean runEntranceTransition = TestHelper.runEntranceTransition(getActivity()); + if (runEntranceTransition) { + prepareEntranceTransition(); + } + setAdapter(TestHelper.initRowsAdapterBuilder(getActivity()).build()); + if (runEntranceTransition) { + startEntranceTransition(); + } + } + +} diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/CardPresenter.java b/tests/UiBench/src/com/android/test/uibench/leanback/CardPresenter.java new file mode 100644 index 0000000000000000000000000000000000000000..5194555aca01ec911a76857dbbf6a2bd5504374e --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/CardPresenter.java @@ -0,0 +1,62 @@ +/* + * 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.test.uibench.leanback; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.support.v17.leanback.widget.ImageCardView; +import android.support.v17.leanback.widget.Presenter; +import android.support.v4.content.res.ResourcesCompat; +import android.view.ContextThemeWrapper; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; + +public class CardPresenter extends Presenter { + + private int mImageWidth = 0; + private int mImageHeight = 0; + + public CardPresenter(int width, int height) { + mImageWidth = width; + mImageHeight = height; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent) { + Context context = parent.getContext(); + ImageCardView v = new ImageCardView(context); + v.setFocusable(true); + v.setFocusableInTouchMode(true); + v.setMainImageAdjustViewBounds(true); + v.setMainImageDimensions(mImageWidth, mImageHeight); + return new ViewHolder(v); + } + + @Override + public void onBindViewHolder(ViewHolder viewHolder, Object item) { + PhotoItem photoItem = (PhotoItem) item; + ImageCardView cardView = (ImageCardView) viewHolder.view; + cardView.setTitleText(photoItem.getTitle()); + BitmapLoader.loadBitmap(cardView.getMainImageView(), photoItem.getId(), + mImageWidth, mImageHeight); + } + + @Override + public void onUnbindViewHolder(ViewHolder viewHolder) { + ImageCardView cardView = (ImageCardView) viewHolder.view; + BitmapLoader.cancel(cardView.getMainImageView()); + } +} diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/PhotoItem.java b/tests/UiBench/src/com/android/test/uibench/leanback/PhotoItem.java new file mode 100644 index 0000000000000000000000000000000000000000..acb9a5d05a7fea3f3dbcb53cec3a2f39a7511895 --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/PhotoItem.java @@ -0,0 +1,72 @@ +/* + * 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.test.uibench.leanback; + +import android.os.Parcel; +import android.os.Parcelable; + +public class PhotoItem implements Parcelable { + + private String mTitle; + private long mId; + + public PhotoItem(String title, long id) { + mTitle = title; + mId = id; + } + + public long getId() { + return mId; + } + + public String getTitle() { + return mTitle; + } + + @Override + public String toString() { + return mTitle; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(mTitle); + dest.writeLong(mId); + } + + public static final Creator CREATOR + = new Creator() { + @Override + public PhotoItem createFromParcel(Parcel in) { + return new PhotoItem(in); + } + + @Override + public PhotoItem[] newArray(int size) { + return new PhotoItem[size]; + } + }; + + private PhotoItem(Parcel in) { + mTitle = in.readString(); + mId = in.readLong(); + } +} diff --git a/tests/UiBench/src/com/android/test/uibench/leanback/TestHelper.java b/tests/UiBench/src/com/android/test/uibench/leanback/TestHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..2bf388501ba091dab1f59e94b8c62d4036e53b8c --- /dev/null +++ b/tests/UiBench/src/com/android/test/uibench/leanback/TestHelper.java @@ -0,0 +1,238 @@ +/* + * 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.test.uibench.leanback; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.support.v17.leanback.app.BackgroundManager; +import android.support.v17.leanback.widget.ArrayObjectAdapter; +import android.support.v17.leanback.widget.HeaderItem; +import android.support.v17.leanback.widget.ListRow; +import android.support.v17.leanback.widget.ListRowPresenter; +import android.support.v17.leanback.widget.ObjectAdapter; +import android.support.v17.leanback.widget.Presenter; +import android.util.DisplayMetrics; +import android.util.TypedValue; + +public class TestHelper { + + public static final String EXTRA_BACKGROUND = "extra_bg"; + public static final String EXTRA_ROWS = "extra_rows"; + public static final String EXTRA_CARDS_PER_ROW = "extra_cards_per_row"; + public static final String EXTRA_CARD_HEIGHT_DP = "extra_card_height"; + public static final String EXTRA_CARD_WIDTH_DP = "extra_card_width"; + public static final String EXTRA_CARD_SHADOW = "extra_card_shadow"; + public static final String EXTRA_CARD_ROUND_RECT = "extra_card_round_rect"; + public static final String EXTRA_ENTRANCE_TRANSITION = "extra_entrance_transition"; + public static final String EXTRA_BITMAP_UPLOAD = "extra_bitmap_upload"; + + /** + * Dont change the default values, they gave baseline for measuring the performance + */ + static final int DEFAULT_CARD_HEIGHT_DP = 180; + static final int DEFAULT_CARD_WIDTH_DP = 125; + static final int DEFAULT_CARDS_PER_ROW = 20; + static final int DEFAULT_ROWS = 10; + static final boolean DEFAULT_ENTRANCE_TRANSITION = false; + static final boolean DEFAULT_BACKGROUND = true; + static final boolean DEFAULT_CARD_SHADOW = true; + static final boolean DEFAULT_CARD_ROUND_RECT = true; + static final boolean DEFAULT_BITMAP_UPLOAD = true; + + static long sCardIdSeed = 0; + static long sRowIdSeed = 0; + + public static class ListRowPresenterBuilder { + + boolean mShadow = DEFAULT_CARD_SHADOW; + boolean mRoundedCorner = DEFAULT_CARD_ROUND_RECT; + + ListRowPresenterBuilder(Context context) { + } + + public ListRowPresenterBuilder configShadow(boolean shadow) { + mShadow = shadow; + return this; + } + + public ListRowPresenterBuilder configRoundedCorner(boolean roundedCorner) { + mRoundedCorner = roundedCorner; + return this; + } + + public ListRowPresenter build() { + ListRowPresenter listRowPresenter = new ListRowPresenter(); + listRowPresenter.setShadowEnabled(mShadow); + listRowPresenter.enableChildRoundedCorners(mRoundedCorner); + return listRowPresenter; + } + } + + public static class CardPresenterBuilder { + Context mContext; + int mWidthDP = DEFAULT_CARD_WIDTH_DP; + int mHeightDP = DEFAULT_CARD_HEIGHT_DP; + + CardPresenterBuilder(Context context) { + mContext = context; + } + + public CardPresenterBuilder configWidthDP(int widthDP) { + mWidthDP = widthDP; + return this; + } + + public CardPresenterBuilder configHeightDP(int hightDP) { + mHeightDP = hightDP; + return this; + } + + public Presenter build() { + DisplayMetrics dm = mContext.getResources().getDisplayMetrics(); + return new CardPresenter( + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, mWidthDP, dm), + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, mHeightDP, dm)); + } + } + + public static class RowsAdapterBuilder { + + Context mContext; + int mCardsPerRow = DEFAULT_CARDS_PER_ROW; + int mRows = DEFAULT_ROWS; + CardPresenterBuilder mCardPresenterBuilder; + ListRowPresenterBuilder mListRowPresenterBuilder; + Presenter mCardPresenter; + boolean mBitmapUpload = DEFAULT_BITMAP_UPLOAD; + + static final String[] sSampleStrings = new String[] { + "Hello world", "This is a test", "Android TV", "UI Jank Test", + "Scroll Up", "Scroll Down", "Load Bitmaps" + }; + + /** + * Create a RowsAdapterBuilder with default settings + */ + public RowsAdapterBuilder(Context context) { + mContext = context; + mCardPresenterBuilder = new CardPresenterBuilder(context); + mListRowPresenterBuilder = new ListRowPresenterBuilder(context); + } + + public ListRowPresenterBuilder getListRowPresenterBuilder() { + return mListRowPresenterBuilder; + } + + public CardPresenterBuilder getCardPresenterBuilder() { + return mCardPresenterBuilder; + } + + public RowsAdapterBuilder configRows(int rows) { + mRows = rows; + return this; + } + + public RowsAdapterBuilder configCardsPerRow(int cardsPerRow) { + mCardsPerRow = cardsPerRow; + return this; + } + + public RowsAdapterBuilder configBitmapUpLoad(boolean bitmapUpload) { + mBitmapUpload = bitmapUpload; + return this; + } + + public ListRow buildListRow() { + ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter); + ListRow listRow = new ListRow(new HeaderItem(sRowIdSeed++, "Row"), listRowAdapter); + int indexSample = 0; + for (int i = 0; i < mCardsPerRow; i++) { + // when doing bitmap upload, use different id so each card has different bitmap + // otherwise all cards share the same bitmap + listRowAdapter.add(new PhotoItem(sSampleStrings[indexSample], + (mBitmapUpload ? sCardIdSeed++ : 0))); + indexSample++; + if (indexSample >= sSampleStrings.length) { + indexSample = 0; + } + } + return listRow; + } + + public ObjectAdapter build() { + try { + mCardPresenter = mCardPresenterBuilder.build(); + ArrayObjectAdapter adapter = new ArrayObjectAdapter( + mListRowPresenterBuilder.build()); + for (int i = 0; i < mRows; i++) { + adapter.add(buildListRow()); + } + return adapter; + } finally { + mCardPresenter = null; + } + } + } + + public static boolean runEntranceTransition(Activity activity) { + return activity.getIntent().getBooleanExtra(EXTRA_ENTRANCE_TRANSITION, + DEFAULT_ENTRANCE_TRANSITION); + } + + public static RowsAdapterBuilder initRowsAdapterBuilder(Activity activity) { + RowsAdapterBuilder builder = new RowsAdapterBuilder(activity); + boolean shadow = activity.getIntent().getBooleanExtra(EXTRA_CARD_SHADOW, + DEFAULT_CARD_SHADOW); + boolean roundRect = activity.getIntent().getBooleanExtra(EXTRA_CARD_ROUND_RECT, + DEFAULT_CARD_ROUND_RECT); + int widthDp = activity.getIntent().getIntExtra(EXTRA_CARD_WIDTH_DP, + DEFAULT_CARD_WIDTH_DP); + int heightDp = activity.getIntent().getIntExtra(EXTRA_CARD_HEIGHT_DP, + DEFAULT_CARD_HEIGHT_DP); + int rows = activity.getIntent().getIntExtra(EXTRA_ROWS, DEFAULT_ROWS); + int cardsPerRow = activity.getIntent().getIntExtra(EXTRA_CARDS_PER_ROW, + DEFAULT_CARDS_PER_ROW); + boolean bitmapUpload = activity.getIntent().getBooleanExtra(EXTRA_BITMAP_UPLOAD, + DEFAULT_BITMAP_UPLOAD); + builder.configRows(rows) + .configCardsPerRow(cardsPerRow) + .configBitmapUpLoad(bitmapUpload); + builder.getListRowPresenterBuilder() + .configRoundedCorner(roundRect) + .configShadow(shadow); + builder.getCardPresenterBuilder() + .configWidthDP(widthDp) + .configHeightDP(heightDp); + return builder; + } + + public static void initBackground(Activity activity) { + if (activity.getIntent().getBooleanExtra(EXTRA_BACKGROUND, DEFAULT_BACKGROUND)) { + BackgroundManager manager = BackgroundManager.getInstance(activity); + manager.attach(activity.getWindow()); + DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); + int width = metrics.widthPixels; + int height = metrics.heightPixels; + Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.drawARGB(255, 128, 128, 128); + canvas.setBitmap(null); + manager.setBitmap(bitmap); + } + } +} diff --git a/tests/net/AndroidManifest.xml b/tests/net/AndroidManifest.xml index e069dd052d82c45bc4b1d7e41baa1adbe375341f..ba1a2ead8beb2890063ab8dcb33d8a6597a93ded 100644 --- a/tests/net/AndroidManifest.xml +++ b/tests/net/AndroidManifest.xml @@ -32,7 +32,6 @@ - diff --git a/tests/net/java/android/net/NetworkCapabilitiesTest.java b/tests/net/java/android/net/NetworkCapabilitiesTest.java index cd2d0985c7938a4c654d916dee2025368cdad3a6..e6170cb42cbb3007e719bc737677c0bd37ee522b 100644 --- a/tests/net/java/android/net/NetworkCapabilitiesTest.java +++ b/tests/net/java/android/net/NetworkCapabilitiesTest.java @@ -18,6 +18,7 @@ package android.net; import static android.net.NetworkCapabilities.LINK_BANDWIDTH_UNSPECIFIED; import static android.net.NetworkCapabilities.NET_CAPABILITY_CBS; +import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN; import static android.net.NetworkCapabilities.NET_CAPABILITY_EIMS; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED; @@ -143,6 +144,14 @@ public class NetworkCapabilitiesTest { assertEquals("", nc1.describeImmutableDifferences(nc2)); assertEquals("", nc1.describeImmutableDifferences(nc1)); + // DUN changing (http://b/65257223) + nc1 = new NetworkCapabilities() + .addCapability(NET_CAPABILITY_DUN) + .addCapability(NET_CAPABILITY_INTERNET); + nc2 = new NetworkCapabilities().addCapability(NET_CAPABILITY_INTERNET); + assertEquals("", nc1.describeImmutableDifferences(nc2)); + assertEquals("", nc1.describeImmutableDifferences(nc1)); + // Immutable capability changing nc1 = new NetworkCapabilities() .addCapability(NET_CAPABILITY_INTERNET) diff --git a/tests/net/java/android/net/NetworkStatsHistoryTest.java b/tests/net/java/android/net/NetworkStatsHistoryTest.java index e7b91b568d746c3a31259901d65ccdff527dee09..1c0c14eac08bc5b87803c1012501430b2776e270 100644 --- a/tests/net/java/android/net/NetworkStatsHistoryTest.java +++ b/tests/net/java/android/net/NetworkStatsHistoryTest.java @@ -485,6 +485,21 @@ public class NetworkStatsHistoryTest extends AndroidTestCase { assertTrue(stats.intersects(Long.MIN_VALUE, TEST_START + 1)); } + public void testSetValues() throws Exception { + stats = new NetworkStatsHistory(HOUR_IN_MILLIS); + stats.recordData(TEST_START, TEST_START + 1, + new NetworkStats.Entry(1024L, 10L, 2048L, 20L, 2L)); + + assertEquals(1024L + 2048L, stats.getTotalBytes()); + + final NetworkStatsHistory.Entry entry = stats.getValues(0, null); + entry.rxBytes /= 2; + entry.txBytes *= 2; + stats.setValues(0, entry); + + assertEquals(512L + 4096L, stats.getTotalBytes()); + } + private static void assertIndexBeforeAfter( NetworkStatsHistory stats, int before, int after, long time) { assertEquals("unexpected before", before, stats.getIndexBefore(time)); diff --git a/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java b/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java index 2a32b73d56dadbc0a1fcfc1da6348cbb5b50f42c..9c102646561227c51bbe3cc27f626693eacf45d7 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java @@ -17,26 +17,39 @@ package com.android.server.net; import static android.net.ConnectivityManager.TYPE_MOBILE; +import static android.net.NetworkStats.SET_ALL; import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; +import static android.net.NetworkStatsHistory.FIELD_ALL; import static android.net.NetworkTemplate.buildTemplateMobileAll; +import static android.os.Process.myUid; import static android.text.format.DateUtils.HOUR_IN_MILLIS; import static android.text.format.DateUtils.MINUTE_IN_MILLIS; +import static com.android.server.net.NetworkStatsCollection.multiplySafe; + import android.content.res.Resources; +import android.net.ConnectivityManager; import android.net.NetworkIdentity; import android.net.NetworkStats; +import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.os.Process; import android.os.UserHandle; +import android.telephony.SubscriptionPlan; import android.telephony.TelephonyManager; -import android.support.test.filters.SmallTest; import android.test.AndroidTestCase; import android.test.MoreAsserts; +import android.test.suitebuilder.annotation.SmallTest; +import android.text.format.DateUtils; +import android.util.RecurrenceRule; import com.android.frameworks.tests.net.R; +import libcore.io.IoUtils; +import libcore.io.Streams; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -44,9 +57,12 @@ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; - -import libcore.io.IoUtils; -import libcore.io.Streams; +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.List; /** * Tests for {@link NetworkStatsCollection}. @@ -57,14 +73,31 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { private static final String TEST_FILE = "test.bin"; private static final String TEST_IMSI = "310260000000000"; + private static final long TIME_A = 1326088800000L; // UTC: Monday 9th January 2012 06:00:00 AM + private static final long TIME_B = 1326110400000L; // UTC: Monday 9th January 2012 12:00:00 PM + private static final long TIME_C = 1326132000000L; // UTC: Monday 9th January 2012 06:00:00 PM + + private static Clock sOriginalClock; + @Override public void setUp() throws Exception { super.setUp(); + sOriginalClock = RecurrenceRule.sClock; // ignore any device overlay while testing NetworkTemplate.forceAllNetworkTypes(); } + @Override + protected void tearDown() throws Exception { + super.tearDown(); + RecurrenceRule.sClock = sOriginalClock; + } + + private void setClock(Instant instant) { + RecurrenceRule.sClock = Clock.fixed(instant, ZoneId.systemDefault()); + } + public void testReadLegacyNetwork() throws Exception { final File testFile = new File(getContext().getFilesDir(), TEST_FILE); stageFile(R.raw.netstats_v1, testFile); @@ -198,11 +231,11 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { collection.getRelevantUids(NetworkStatsAccess.Level.DEVICE)); // Verify security check in getHistory. - assertNotNull(collection.getHistory(buildTemplateMobileAll(TEST_IMSI), myUid, SET_DEFAULT, - TAG_NONE, 0, NetworkStatsAccess.Level.DEFAULT)); + assertNotNull(collection.getHistory(buildTemplateMobileAll(TEST_IMSI), null, myUid, SET_DEFAULT, + TAG_NONE, 0, 0L, 0L, NetworkStatsAccess.Level.DEFAULT, myUid)); try { - collection.getHistory(buildTemplateMobileAll(TEST_IMSI), otherUidInSameUser, - SET_DEFAULT, TAG_NONE, 0, NetworkStatsAccess.Level.DEFAULT); + collection.getHistory(buildTemplateMobileAll(TEST_IMSI), null, otherUidInSameUser, + SET_DEFAULT, TAG_NONE, 0, 0L, 0L, NetworkStatsAccess.Level.DEFAULT, myUid); fail("Should have thrown SecurityException for accessing different UID"); } catch (SecurityException e) { // expected @@ -217,6 +250,257 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { 0, NetworkStatsAccess.Level.DEVICE); } + public void testAugmentPlan() throws Exception { + final File testFile = new File(getContext().getFilesDir(), TEST_FILE); + stageFile(R.raw.netstats_v1, testFile); + + final NetworkStatsCollection emptyCollection = new NetworkStatsCollection(30 * MINUTE_IN_MILLIS); + final NetworkStatsCollection collection = new NetworkStatsCollection(30 * MINUTE_IN_MILLIS); + collection.readLegacyNetwork(testFile); + + // We're in the future, but not that far off + setClock(Instant.parse("2012-06-01T00:00:00.00Z")); + + // Test a bunch of plans that should result in no augmentation + final List plans = new ArrayList<>(); + + // No plan + plans.add(null); + // No usage anchor + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2011-01-14T00:00:00.00Z")).build()); + // Usage anchor far in past + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2011-01-14T00:00:00.00Z")) + .setDataUsage(1000L, TIME_A - DateUtils.YEAR_IN_MILLIS).build()); + // Usage anchor far in future + plans.add(SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2011-01-14T00:00:00.00Z")) + .setDataUsage(1000L, TIME_A + DateUtils.YEAR_IN_MILLIS).build()); + // Usage anchor near but outside cycle + plans.add(SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.parse("2012-01-09T09:00:00.00Z"), + ZonedDateTime.parse("2012-01-09T15:00:00.00Z")) + .setDataUsage(1000L, TIME_C).build()); + + for (SubscriptionPlan plan : plans) { + int i; + NetworkStatsHistory history; + + // Empty collection should be untouched + history = getHistory(emptyCollection, plan, TIME_A, TIME_C); + assertEquals(0L, history.getTotalBytes()); + + // Normal collection should be untouched + history = getHistory(collection, plan, TIME_A, TIME_C); i = 0; + assertEntry(100647, 197, 23649, 185, history.getValues(i++, null)); + assertEntry(100647, 196, 23648, 185, history.getValues(i++, null)); + assertEntry(18323, 76, 15032, 76, history.getValues(i++, null)); + assertEntry(18322, 75, 15031, 75, history.getValues(i++, null)); + assertEntry(527798, 761, 78570, 652, history.getValues(i++, null)); + assertEntry(527797, 760, 78570, 651, history.getValues(i++, null)); + assertEntry(10747, 50, 16838, 55, history.getValues(i++, null)); + assertEntry(10747, 49, 16838, 54, history.getValues(i++, null)); + assertEntry(89191, 151, 18021, 140, history.getValues(i++, null)); + assertEntry(89190, 150, 18020, 139, history.getValues(i++, null)); + assertEntry(3821, 22, 4525, 26, history.getValues(i++, null)); + assertEntry(3820, 22, 4524, 26, history.getValues(i++, null)); + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(113914, 174, 18364, 157, history.getValues(i++, null)); + assertEntry(113913, 173, 18364, 157, history.getValues(i++, null)); + assertEntry(11378, 49, 9261, 49, history.getValues(i++, null)); + assertEntry(11377, 48, 9261, 49, history.getValues(i++, null)); + assertEntry(201765, 328, 41808, 291, history.getValues(i++, null)); + assertEntry(201765, 328, 41807, 290, history.getValues(i++, null)); + assertEntry(106106, 218, 39917, 201, history.getValues(i++, null)); + assertEntry(106105, 217, 39917, 201, history.getValues(i++, null)); + assertEquals(history.size(), i); + + // Slice from middle should be untouched + history = getHistory(collection, plan, TIME_B - HOUR_IN_MILLIS, + TIME_B + HOUR_IN_MILLIS); i = 0; + assertEntry(3821, 22, 4525, 26, history.getValues(i++, null)); + assertEntry(3820, 22, 4524, 26, history.getValues(i++, null)); + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEquals(history.size(), i); + } + + // Lower anchor in the middle of plan + { + int i; + NetworkStatsHistory history; + + final SubscriptionPlan plan = SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.parse("2012-01-09T09:00:00.00Z"), + ZonedDateTime.parse("2012-01-09T15:00:00.00Z")) + .setDataUsage(200000L, TIME_B).build(); + + // Empty collection should be augmented + history = getHistory(emptyCollection, plan, TIME_A, TIME_C); + assertEquals(200000L, history.getTotalBytes()); + + // Normal collection should be augmented + history = getHistory(collection, plan, TIME_A, TIME_C); i = 0; + assertEntry(100647, 197, 23649, 185, history.getValues(i++, null)); + assertEntry(100647, 196, 23648, 185, history.getValues(i++, null)); + assertEntry(18323, 76, 15032, 76, history.getValues(i++, null)); + assertEntry(18322, 75, 15031, 75, history.getValues(i++, null)); + assertEntry(527798, 761, 78570, 652, history.getValues(i++, null)); + assertEntry(527797, 760, 78570, 651, history.getValues(i++, null)); + // Cycle point; start data normalization + assertEntry(7507, 0, 11763, 0, history.getValues(i++, null)); + assertEntry(7507, 0, 11763, 0, history.getValues(i++, null)); + assertEntry(62309, 0, 12589, 0, history.getValues(i++, null)); + assertEntry(62309, 0, 12588, 0, history.getValues(i++, null)); + assertEntry(2669, 0, 3161, 0, history.getValues(i++, null)); + assertEntry(2668, 0, 3160, 0, history.getValues(i++, null)); + // Anchor point; end data normalization + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(113914, 174, 18364, 157, history.getValues(i++, null)); + assertEntry(113913, 173, 18364, 157, history.getValues(i++, null)); + // Cycle point + assertEntry(11378, 49, 9261, 49, history.getValues(i++, null)); + assertEntry(11377, 48, 9261, 49, history.getValues(i++, null)); + assertEntry(201765, 328, 41808, 291, history.getValues(i++, null)); + assertEntry(201765, 328, 41807, 290, history.getValues(i++, null)); + assertEntry(106106, 218, 39917, 201, history.getValues(i++, null)); + assertEntry(106105, 217, 39917, 201, history.getValues(i++, null)); + assertEquals(history.size(), i); + + // Slice from middle should be augmented + history = getHistory(collection, plan, TIME_B - HOUR_IN_MILLIS, + TIME_B + HOUR_IN_MILLIS); i = 0; + assertEntry(2669, 0, 3161, 0, history.getValues(i++, null)); + assertEntry(2668, 0, 3160, 0, history.getValues(i++, null)); + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEquals(history.size(), i); + } + + // Higher anchor in the middle of plan + { + int i; + NetworkStatsHistory history; + + final SubscriptionPlan plan = SubscriptionPlan.Builder + .createNonrecurring(ZonedDateTime.parse("2012-01-09T09:00:00.00Z"), + ZonedDateTime.parse("2012-01-09T15:00:00.00Z")) + .setDataUsage(400000L, TIME_B + MINUTE_IN_MILLIS).build(); + + // Empty collection should be augmented + history = getHistory(emptyCollection, plan, TIME_A, TIME_C); + assertEquals(400000L, history.getTotalBytes()); + + // Normal collection should be augmented + history = getHistory(collection, plan, TIME_A, TIME_C); i = 0; + assertEntry(100647, 197, 23649, 185, history.getValues(i++, null)); + assertEntry(100647, 196, 23648, 185, history.getValues(i++, null)); + assertEntry(18323, 76, 15032, 76, history.getValues(i++, null)); + assertEntry(18322, 75, 15031, 75, history.getValues(i++, null)); + assertEntry(527798, 761, 78570, 652, history.getValues(i++, null)); + assertEntry(527797, 760, 78570, 651, history.getValues(i++, null)); + // Cycle point; start data normalization + assertEntry(15015, 0, 23526, 0, history.getValues(i++, null)); + assertEntry(15015, 0, 23526, 0, history.getValues(i++, null)); + assertEntry(124619, 0, 25179, 0, history.getValues(i++, null)); + assertEntry(124618, 0, 25177, 0, history.getValues(i++, null)); + assertEntry(5338, 0, 6322, 0, history.getValues(i++, null)); + assertEntry(5337, 0, 6320, 0, history.getValues(i++, null)); + // Anchor point; end data normalization + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(8289, 35, 6863, 38, history.getValues(i++, null)); + assertEntry(113914, 174, 18364, 157, history.getValues(i++, null)); + assertEntry(113913, 173, 18364, 157, history.getValues(i++, null)); + // Cycle point + assertEntry(11378, 49, 9261, 49, history.getValues(i++, null)); + assertEntry(11377, 48, 9261, 49, history.getValues(i++, null)); + assertEntry(201765, 328, 41808, 291, history.getValues(i++, null)); + assertEntry(201765, 328, 41807, 290, history.getValues(i++, null)); + assertEntry(106106, 218, 39917, 201, history.getValues(i++, null)); + assertEntry(106105, 217, 39917, 201, history.getValues(i++, null)); + + // Slice from middle should be augmented + history = getHistory(collection, plan, TIME_B - HOUR_IN_MILLIS, + TIME_B + HOUR_IN_MILLIS); i = 0; + assertEntry(5338, 0, 6322, 0, history.getValues(i++, null)); + assertEntry(5337, 0, 6320, 0, history.getValues(i++, null)); + assertEntry(91686, 159, 18575, 146, history.getValues(i++, null)); + assertEntry(91685, 159, 18575, 146, history.getValues(i++, null)); + assertEquals(history.size(), i); + } + } + + public void testAugmentPlanGigantic() throws Exception { + // We're in the future, but not that far off + setClock(Instant.parse("2012-06-01T00:00:00.00Z")); + + // Create a simple history with a ton of measured usage + final NetworkStatsCollection large = new NetworkStatsCollection(HOUR_IN_MILLIS); + final NetworkIdentitySet ident = new NetworkIdentitySet(); + ident.add(new NetworkIdentity(ConnectivityManager.TYPE_MOBILE, -1, TEST_IMSI, null, + false, true)); + large.recordData(ident, UID_ALL, SET_ALL, TAG_NONE, TIME_A, TIME_B, + new NetworkStats.Entry(12_730_893_164L, 1, 0, 0, 0)); + + // Verify untouched total + assertEquals(12_730_893_164L, getHistory(large, null, TIME_A, TIME_C).getTotalBytes()); + + // Verify anchor that might cause overflows + final SubscriptionPlan plan = SubscriptionPlan.Builder + .createRecurringMonthly(ZonedDateTime.parse("2012-01-09T00:00:00.00Z")) + .setDataUsage(4_939_212_390L, TIME_B).build(); + assertEquals(4_939_212_386L, getHistory(large, plan, TIME_A, TIME_C).getTotalBytes()); + } + + public void testRounding() throws Exception { + final NetworkStatsCollection coll = new NetworkStatsCollection(HOUR_IN_MILLIS); + + // Special values should remain unchanged + for (long time : new long[] { + Long.MIN_VALUE, Long.MAX_VALUE, SubscriptionPlan.TIME_UNKNOWN + }) { + assertEquals(time, coll.roundUp(time)); + assertEquals(time, coll.roundDown(time)); + } + + assertEquals(TIME_A, coll.roundUp(TIME_A)); + assertEquals(TIME_A, coll.roundDown(TIME_A)); + + assertEquals(TIME_A + HOUR_IN_MILLIS, coll.roundUp(TIME_A + 1)); + assertEquals(TIME_A, coll.roundDown(TIME_A + 1)); + + assertEquals(TIME_A, coll.roundUp(TIME_A - 1)); + assertEquals(TIME_A - HOUR_IN_MILLIS, coll.roundDown(TIME_A - 1)); + } + + public void testMultiplySafe() { + assertEquals(25, multiplySafe(50, 1, 2)); + assertEquals(100, multiplySafe(50, 2, 1)); + + assertEquals(-10, multiplySafe(30, -1, 3)); + assertEquals(0, multiplySafe(30, 0, 3)); + assertEquals(10, multiplySafe(30, 1, 3)); + assertEquals(20, multiplySafe(30, 2, 3)); + assertEquals(30, multiplySafe(30, 3, 3)); + assertEquals(40, multiplySafe(30, 4, 3)); + + assertEquals(100_000_000_000L, + multiplySafe(300_000_000_000L, 10_000_000_000L, 30_000_000_000L)); + assertEquals(100_000_000_010L, + multiplySafe(300_000_000_000L, 10_000_000_001L, 30_000_000_000L)); + assertEquals(823_202_048L, + multiplySafe(4_939_212_288L, 2_121_815_528L, 12_730_893_165L)); + } + /** * Copy a {@link Resources#openRawResource(int)} into {@link File} for * testing purposes. @@ -235,28 +519,50 @@ public class NetworkStatsCollectionTest extends AndroidTestCase { } } + private static NetworkStatsHistory getHistory(NetworkStatsCollection collection, + SubscriptionPlan augmentPlan, long start, long end) { + return collection.getHistory(buildTemplateMobileAll(TEST_IMSI), augmentPlan, UID_ALL, + SET_ALL, TAG_NONE, FIELD_ALL, start, end, NetworkStatsAccess.Level.DEVICE, myUid()); + } + private static void assertSummaryTotal(NetworkStatsCollection collection, NetworkTemplate template, long rxBytes, long rxPackets, long txBytes, long txPackets, @NetworkStatsAccess.Level int accessLevel) { - final NetworkStats.Entry entry = collection.getSummary( - template, Long.MIN_VALUE, Long.MAX_VALUE, accessLevel) + final NetworkStats.Entry actual = collection.getSummary( + template, Long.MIN_VALUE, Long.MAX_VALUE, accessLevel, myUid()) .getTotal(null); - assertEntry(entry, rxBytes, rxPackets, txBytes, txPackets); + assertEntry(rxBytes, rxPackets, txBytes, txPackets, actual); } private static void assertSummaryTotalIncludingTags(NetworkStatsCollection collection, NetworkTemplate template, long rxBytes, long rxPackets, long txBytes, long txPackets) { - final NetworkStats.Entry entry = collection.getSummary( - template, Long.MIN_VALUE, Long.MAX_VALUE, NetworkStatsAccess.Level.DEVICE) + final NetworkStats.Entry actual = collection.getSummary( + template, Long.MIN_VALUE, Long.MAX_VALUE, NetworkStatsAccess.Level.DEVICE, myUid()) .getTotalIncludingTags(null); - assertEntry(entry, rxBytes, rxPackets, txBytes, txPackets); + assertEntry(rxBytes, rxPackets, txBytes, txPackets, actual); + } + + private static void assertEntry(long rxBytes, long rxPackets, long txBytes, long txPackets, + NetworkStats.Entry actual) { + assertEntry(new NetworkStats.Entry(rxBytes, rxPackets, txBytes, txPackets, 0L), actual); + } + + private static void assertEntry(long rxBytes, long rxPackets, long txBytes, long txPackets, + NetworkStatsHistory.Entry actual) { + assertEntry(new NetworkStats.Entry(rxBytes, rxPackets, txBytes, txPackets, 0L), actual); + } + + private static void assertEntry(NetworkStats.Entry expected, + NetworkStatsHistory.Entry actual) { + assertEntry(expected, new NetworkStats.Entry(actual.rxBytes, actual.rxPackets, + actual.txBytes, actual.txPackets, 0L)); } - private static void assertEntry( - NetworkStats.Entry entry, long rxBytes, long rxPackets, long txBytes, long txPackets) { - assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes); - assertEquals("unexpected rxPackets", rxPackets, entry.rxPackets); - assertEquals("unexpected txBytes", txBytes, entry.txBytes); - assertEquals("unexpected txPackets", txPackets, entry.txPackets); + private static void assertEntry(NetworkStats.Entry expected, + NetworkStats.Entry actual) { + assertEquals("unexpected rxBytes", expected.rxBytes, actual.rxBytes); + assertEquals("unexpected rxPackets", expected.rxPackets, actual.rxPackets); + assertEquals("unexpected txBytes", expected.txBytes, actual.txBytes); + assertEquals("unexpected txPackets", expected.txPackets, actual.txPackets); } } diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java index 375b418bead623d0ad1d303f88e6dd3dcd31e402..ecc99323d7d7f63ba15124b1c239bdda098b1d2f 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java @@ -46,19 +46,17 @@ import static android.text.format.DateUtils.HOUR_IN_MILLIS; import static android.text.format.DateUtils.MINUTE_IN_MILLIS; import static android.text.format.DateUtils.WEEK_IN_MILLIS; -import static com.android.server.net.NetworkStatsService.ACTION_NETWORK_STATS_POLL; import static com.android.internal.util.TestUtils.waitForIdleHandler; +import static com.android.server.net.NetworkStatsService.ACTION_NETWORK_STATS_POLL; 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 static org.junit.Assert.fail; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Mockito.when; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.AlarmManager; import android.app.usage.NetworkStatsManager; @@ -79,24 +77,21 @@ import android.net.NetworkTemplate; import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; -import android.os.INetworkManagementService; import android.os.IBinder; +import android.os.INetworkManagementService; import android.os.Looper; -import android.os.Messenger; -import android.os.MessageQueue; -import android.os.MessageQueue.IdleHandler; import android.os.Message; +import android.os.Messenger; import android.os.PowerManager; import android.support.test.InstrumentationRegistry; -import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.telephony.TelephonyManager; -import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; +import android.util.Log; import android.util.TrustedTime; import com.android.internal.net.VpnInfo; import com.android.internal.util.test.BroadcastInterceptingContext; -import com.android.server.net.NetworkStatsService; import com.android.server.net.NetworkStatsService.NetworkStatsSettings; import com.android.server.net.NetworkStatsService.NetworkStatsSettings.Config; @@ -112,9 +107,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.io.File; -import java.util.ArrayList; import java.util.Objects; -import java.util.List; /** * Tests for {@link NetworkStatsService}. @@ -983,7 +976,7 @@ public class NetworkStatsServiceTest { // verify summary API final NetworkStats stats = mSession.getSummaryForNetwork(template, start, end); - assertValues(stats, IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, METERED_ALL, ROAMING_NO, + assertValues(stats, IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, rxBytes, rxPackets, txBytes, txPackets, operations); } @@ -1107,28 +1100,25 @@ public class NetworkStatsServiceTest { int tag, int metered, int roaming, long rxBytes, long rxPackets, long txBytes, long txPackets, int operations) { final NetworkStats.Entry entry = new NetworkStats.Entry(); - List sets = new ArrayList<>(); - if (set == SET_DEFAULT || set == SET_ALL) { - sets.add(SET_DEFAULT); - } - if (set == SET_FOREGROUND || set == SET_ALL) { - sets.add(SET_FOREGROUND); + final int[] sets; + if (set == SET_ALL) { + sets = new int[] { SET_ALL, SET_DEFAULT, SET_FOREGROUND }; + } else { + sets = new int[] { set }; } - List roamings = new ArrayList<>(); - if (roaming == ROAMING_NO || roaming == ROAMING_ALL) { - roamings.add(ROAMING_NO); - } - if (roaming == ROAMING_YES || roaming == ROAMING_ALL) { - roamings.add(ROAMING_YES); + final int[] roamings; + if (roaming == ROAMING_ALL) { + roamings = new int[] { ROAMING_ALL, ROAMING_YES, ROAMING_NO }; + } else { + roamings = new int[] { roaming }; } - List meterings = new ArrayList<>(); - if (metered == METERED_NO || metered == METERED_ALL) { - meterings.add(METERED_NO); - } - if (metered == METERED_YES || metered == METERED_ALL) { - meterings.add(METERED_YES); + final int[] meterings; + if (metered == METERED_ALL) { + meterings = new int[] { METERED_ALL, METERED_YES, METERED_NO }; + } else { + meterings = new int[] { metered }; } for (int s : sets) { diff --git a/tests/testables/src/android/testing/TestableSettingsProvider.java b/tests/testables/src/android/testing/TestableSettingsProvider.java index fe97bca1ef41f31a22055fde1cab93d478f614bd..5f2a2244b8413d16bee5ea4a47c04ad932321572 100644 --- a/tests/testables/src/android/testing/TestableSettingsProvider.java +++ b/tests/testables/src/android/testing/TestableSettingsProvider.java @@ -36,7 +36,7 @@ import static org.junit.Assert.*; public class TestableSettingsProvider extends MockContentProvider { private static final String TAG = "TestableSettingsProvider"; - private static final boolean DEBUG = false; + private static final boolean DEBUG = true; private static final String MY_UNIQUE_KEY = "Key_" + TestableSettingsProvider.class.getName(); private static TestableSettingsProvider sInstance; diff --git a/tools/aapt/AaptXml.cpp b/tools/aapt/AaptXml.cpp index b04a55d91b9c299d0515f23db01c9d95b1060f02..6801a4ec7325901360aaa4be67bcfcdf04658f5b 100644 --- a/tools/aapt/AaptXml.cpp +++ b/tools/aapt/AaptXml.cpp @@ -99,24 +99,40 @@ String8 getResolvedAttribute(const ResTable& resTable, const ResXMLTree& tree, if (idx < 0) { return String8(); } + Res_value value; - if (tree.getAttributeValue(idx, &value) != NO_ERROR) { - if (value.dataType == Res_value::TYPE_STRING) { - size_t len; - const char16_t* str = tree.getAttributeStringValue(idx, &len); - return str ? String8(str, len) : String8(); + if (tree.getAttributeValue(idx, &value) == BAD_TYPE) { + if (outError != NULL) { + *outError = "attribute value is corrupt"; } - resTable.resolveReference(&value, 0); - if (value.dataType != Res_value::TYPE_STRING) { - if (outError != NULL) { - *outError = "attribute is not a string value"; - } - return String8(); + return String8(); + } + + // Check if the string is inline in the XML. + if (value.dataType == Res_value::TYPE_STRING) { + size_t len; + const char16_t* str = tree.getAttributeStringValue(idx, &len); + return str ? String8(str, len) : String8(); + } + + // Resolve the reference if there is one. + ssize_t block = resTable.resolveReference(&value, 0); + if (block < 0) { + if (outError != NULL) { + *outError = "attribute value reference does not exist"; + } + return String8(); + } + + if (value.dataType != Res_value::TYPE_STRING) { + if (outError != NULL) { + *outError = "attribute is not a string value"; } + return String8(); } + size_t len; - const Res_value* value2 = &value; - const char16_t* str = resTable.valueToString(value2, 0, NULL, &len); + const char16_t* str = resTable.valueToString(&value, static_cast(block), NULL, &len); return str ? String8(str, len) : String8(); } diff --git a/tools/aapt/SdkConstants.h b/tools/aapt/SdkConstants.h index d92de062bcf083ea8ccc870645bf19563c91ba1d..bf56ec024699494208249fcbf3094958c0bd4e38 100644 --- a/tools/aapt/SdkConstants.h +++ b/tools/aapt/SdkConstants.h @@ -41,7 +41,8 @@ enum { SDK_MNC = 23, SDK_NOUGAT = 24, SDK_NOUGAT_MR1 = 25, - SDK_O = 26, // STOPSHIP replace with real version + SDK_O = 26, + SDK_O_MR1 = 27, }; #endif // H_AAPT_SDK_CONSTANTS diff --git a/tools/aapt/pseudolocalize.cpp b/tools/aapt/pseudolocalize.cpp index c7fee2c193421a85a74ba6d97c33d7ddc2df1329..5c47e0fa8a16c6d0d99bad7a1794c93b2445052a 100644 --- a/tools/aapt/pseudolocalize.cpp +++ b/tools/aapt/pseudolocalize.cpp @@ -360,9 +360,15 @@ String16 PseudoMethodBidi::text(const String16& source) String16 result; bool lastspace = true; bool space = true; + bool escape = false; + const char16_t ESCAPE_CHAR = '\\'; for (size_t i=0; imcc = 0; + if (out) out->mnc = 0; return true; } const char* c = name; @@ -967,8 +967,6 @@ bool ConfigDescription::ConflictsWith(const ConfigDescription& o) const { o.screenLayout & MASK_LAYOUTDIR) || !pred(screenLayout & MASK_SCREENLONG, o.screenLayout & MASK_SCREENLONG) || - !pred(screenLayout & MASK_UI_MODE_TYPE, - o.screenLayout & MASK_UI_MODE_TYPE) || !pred(uiMode & MASK_UI_MODE_TYPE, o.uiMode & MASK_UI_MODE_TYPE) || !pred(uiMode & MASK_UI_MODE_NIGHT, o.uiMode & MASK_UI_MODE_NIGHT) || !pred(screenLayout2 & MASK_SCREENROUND, diff --git a/tools/aapt2/ConfigDescription_test.cpp b/tools/aapt2/ConfigDescription_test.cpp index 14a565624e012b6e58cbac97c6482efbe5c50763..1f351bf7481d944124f2378bb2cb211697287f77 100644 --- a/tools/aapt2/ConfigDescription_test.cpp +++ b/tools/aapt2/ConfigDescription_test.cpp @@ -140,4 +140,16 @@ TEST(ConfigDescriptionTest, ParseVrAttribute) { EXPECT_EQ(std::string("vrheadset-v26"), config.toString().string()); } +TEST(ConfigDescriptionTest, RangeQualifiersDoNotConflict) { + using test::ParseConfigOrDie; + + EXPECT_FALSE(ParseConfigOrDie("large").ConflictsWith(ParseConfigOrDie("normal-land"))); + EXPECT_FALSE(ParseConfigOrDie("long-hdpi").ConflictsWith(ParseConfigOrDie("xhdpi"))); + EXPECT_FALSE(ParseConfigOrDie("sw600dp").ConflictsWith(ParseConfigOrDie("sw700dp"))); + EXPECT_FALSE(ParseConfigOrDie("v11").ConflictsWith(ParseConfigOrDie("v21"))); + EXPECT_FALSE(ParseConfigOrDie("h600dp").ConflictsWith(ParseConfigOrDie("h300dp"))); + EXPECT_FALSE(ParseConfigOrDie("w400dp").ConflictsWith(ParseConfigOrDie("w300dp"))); + EXPECT_FALSE(ParseConfigOrDie("600x400").ConflictsWith(ParseConfigOrDie("300x200"))); +} + } // namespace aapt diff --git a/tools/aapt2/Debug.cpp b/tools/aapt2/Debug.cpp index b872ebbeb159806a7f882fa507786464be0eb9e2..49ed7780f9501b0c34a35e39a9a1bc2f4c2ff2c2 100644 --- a/tools/aapt2/Debug.cpp +++ b/tools/aapt2/Debug.cpp @@ -33,6 +33,8 @@ namespace aapt { +namespace { + class PrintVisitor : public ValueVisitor { public: using ValueVisitor::Visit; @@ -88,9 +90,13 @@ class PrintVisitor : public ValueVisitor { } } - void Visit(Array* array) override { array->Print(&std::cout); } + void Visit(Array* array) override { + array->Print(&std::cout); + } - void Visit(Plural* plural) override { plural->Print(&std::cout); } + void Visit(Plural* plural) override { + plural->Print(&std::cout); + } void Visit(Styleable* styleable) override { std::cout << "(styleable)"; @@ -110,11 +116,14 @@ class PrintVisitor : public ValueVisitor { } } - void VisitItem(Item* item) override { item->Print(&std::cout); } + void VisitItem(Item* item) override { + item->Print(&std::cout); + } }; -void Debug::PrintTable(ResourceTable* table, - const DebugPrintTableOptions& options) { +} // namespace + +void Debug::PrintTable(ResourceTable* table, const DebugPrintTableOptions& options) { PrintVisitor visitor; for (auto& package : table->packages) { @@ -148,10 +157,9 @@ void Debug::PrintTable(ResourceTable* table, } for (const ResourceEntry* entry : sorted_entries) { - ResourceId id(package->id ? package->id.value() : uint8_t(0), - type->id ? type->id.value() : uint8_t(0), - entry->id ? entry->id.value() : uint16_t(0)); - ResourceName name(package->name, type->type, entry->name); + const ResourceId id(package->id.value_or_default(0), type->id.value_or_default(0), + entry->id.value_or_default(0)); + const ResourceName name(package->name, type->type, entry->name); std::cout << " spec resource " << id << " " << name; switch (entry->symbol_status.state) { @@ -180,16 +188,14 @@ void Debug::PrintTable(ResourceTable* table, } } -static size_t GetNodeIndex(const std::vector& names, - const ResourceName& name) { +static size_t GetNodeIndex(const std::vector& names, const ResourceName& name) { auto iter = std::lower_bound(names.begin(), names.end(), name); CHECK(iter != names.end()); CHECK(*iter == name); return std::distance(names.begin(), iter); } -void Debug::PrintStyleGraph(ResourceTable* table, - const ResourceName& target_style) { +void Debug::PrintStyleGraph(ResourceTable* table, const ResourceName& target_style) { std::map> graph; std::queue styles_to_visit; @@ -223,8 +229,7 @@ void Debug::PrintStyleGraph(ResourceTable* table, std::cout << "digraph styles {\n"; for (const auto& name : names) { - std::cout << " node_" << GetNodeIndex(names, name) << " [label=\"" << name - << "\"];\n"; + std::cout << " node_" << GetNodeIndex(names, name) << " [label=\"" << name << "\"];\n"; } for (const auto& entry : graph) { @@ -243,8 +248,7 @@ void Debug::PrintStyleGraph(ResourceTable* table, void Debug::DumpHex(const void* data, size_t len) { const uint8_t* d = (const uint8_t*)data; for (size_t i = 0; i < len; i++) { - std::cerr << std::hex << std::setfill('0') << std::setw(2) << (uint32_t)d[i] - << " "; + std::cerr << std::hex << std::setfill('0') << std::setw(2) << (uint32_t)d[i] << " "; if (i % 8 == 7) { std::cerr << "\n"; } @@ -262,8 +266,15 @@ class XmlPrinter : public xml::Visitor { using xml::Visitor::Visit; void Visit(xml::Element* el) override { - std::cerr << prefix_; - std::cerr << "E: "; + const size_t previous_size = prefix_.size(); + + for (const xml::NamespaceDecl& decl : el->namespace_decls) { + std::cerr << prefix_ << "N: " << decl.prefix << "=" << decl.uri + << " (line=" << decl.line_number << ")\n"; + prefix_ += " "; + } + + std::cerr << prefix_ << "E: "; if (!el->namespace_uri.empty()) { std::cerr << el->namespace_uri << ":"; } @@ -283,26 +294,13 @@ class XmlPrinter : public xml::Visitor { std::cerr << "=" << attr.value << "\n"; } - const size_t previous_size = prefix_.size(); prefix_ += " "; xml::Visitor::Visit(el); prefix_.resize(previous_size); } - void Visit(xml::Namespace* ns) override { - std::cerr << prefix_; - std::cerr << "N: " << ns->namespace_prefix << "=" << ns->namespace_uri - << " (line=" << ns->line_number << ")\n"; - - const size_t previous_size = prefix_.size(); - prefix_ += " "; - xml::Visitor::Visit(ns); - prefix_.resize(previous_size); - } - void Visit(xml::Text* text) override { - std::cerr << prefix_; - std::cerr << "T: '" << text->text << "'\n"; + std::cerr << prefix_ << "T: '" << text->text << "'\n"; } private: diff --git a/tools/aapt2/Format.proto b/tools/aapt2/Format.proto deleted file mode 100644 index 870b735f70a7bf6d34114c2f276c34d3f1794e75..0000000000000000000000000000000000000000 --- a/tools/aapt2/Format.proto +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -syntax = "proto2"; - -option optimize_for = LITE_RUNTIME; - -package aapt.pb; - -message ConfigDescription { - optional bytes data = 1; - optional string product = 2; -} - -message StringPool { - optional bytes data = 1; -} - -message CompiledFile { - message Symbol { - optional string resource_name = 1; - optional uint32 line_no = 2; - } - - optional string resource_name = 1; - optional ConfigDescription config = 2; - optional string source_path = 3; - repeated Symbol exported_symbols = 4; -} - -message ResourceTable { - optional StringPool string_pool = 1; - optional StringPool source_pool = 2; - optional StringPool symbol_pool = 3; - repeated Package packages = 4; -} - -message Package { - optional uint32 package_id = 1; - optional string package_name = 2; - repeated Type types = 3; -} - -message Type { - optional uint32 id = 1; - optional string name = 2; - repeated Entry entries = 3; -} - -message SymbolStatus { - enum Visibility { - Unknown = 0; - Private = 1; - Public = 2; - } - optional Visibility visibility = 1; - optional Source source = 2; - optional string comment = 3; - optional bool allow_new = 4; -} - -message Entry { - optional uint32 id = 1; - optional string name = 2; - optional SymbolStatus symbol_status = 3; - repeated ConfigValue config_values = 4; -} - -message ConfigValue { - optional ConfigDescription config = 1; - optional Value value = 2; -} - -message Source { - optional uint32 path_idx = 1; - optional uint32 line_no = 2; - optional uint32 col_no = 3; -} - -message Reference { - enum Type { - Ref = 0; - Attr = 1; - } - optional Type type = 1; - optional uint32 id = 2; - optional uint32 symbol_idx = 3; - optional bool private = 4; -} - -message Id { -} - -message String { - optional uint32 idx = 1; -} - -message RawString { - optional uint32 idx = 1; -} - -message FileReference { - optional uint32 path_idx = 1; -} - -message Primitive { - optional uint32 type = 1; - optional uint32 data = 2; -} - -message Attribute { - message Symbol { - optional Source source = 1; - optional string comment = 2; - optional Reference name = 3; - optional uint32 value = 4; - } - optional uint32 format_flags = 1; - optional int32 min_int = 2; - optional int32 max_int = 3; - repeated Symbol symbols = 4; -} - -message Style { - message Entry { - optional Source source = 1; - optional string comment = 2; - optional Reference key = 3; - optional Item item = 4; - } - - optional Reference parent = 1; - optional Source parent_source = 2; - repeated Entry entries = 3; -} - -message Styleable { - message Entry { - optional Source source = 1; - optional string comment = 2; - optional Reference attr = 3; - } - repeated Entry entries = 1; -} - -message Array { - message Entry { - optional Source source = 1; - optional string comment = 2; - optional Item item = 3; - } - repeated Entry entries = 1; -} - -message Plural { - enum Arity { - Zero = 0; - One = 1; - Two = 2; - Few = 3; - Many = 4; - Other = 5; - } - - message Entry { - optional Source source = 1; - optional string comment = 2; - optional Arity arity = 3; - optional Item item = 4; - } - repeated Entry entries = 1; -} - -message Item { - optional Reference ref = 1; - optional String str = 2; - optional RawString raw_str = 3; - optional FileReference file = 4; - optional Id id = 5; - optional Primitive prim = 6; -} - -message CompoundValue { - optional Attribute attr = 1; - optional Style style = 2; - optional Styleable styleable = 3; - optional Array array = 4; - optional Plural plural = 5; -} - -message Value { - optional Source source = 1; - optional string comment = 2; - optional bool weak = 3; - - optional Item item = 4; - optional CompoundValue compound_value = 5; -} diff --git a/tools/aapt2/LoadedApk.cpp b/tools/aapt2/LoadedApk.cpp index 8a8f8be205e7ea10dfb1772ecaeb34528e994cd1..7e5efa15f61b86ee46b18c644b42240e90901ade 100644 --- a/tools/aapt2/LoadedApk.cpp +++ b/tools/aapt2/LoadedApk.cpp @@ -57,6 +57,12 @@ std::unique_ptr LoadedApk::LoadApkFromPath(IAaptContext* context, bool LoadedApk::WriteToArchive(IAaptContext* context, const TableFlattenerOptions& options, IArchiveWriter* writer) { + FilterChain empty; + return WriteToArchive(context, options, &empty, writer); +} + +bool LoadedApk::WriteToArchive(IAaptContext* context, const TableFlattenerOptions& options, + FilterChain* filters, IArchiveWriter* writer) { std::set referenced_resources; // List the files being referenced in the resource table. for (auto& pkg : table_->packages) { @@ -89,6 +95,13 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, const TableFlattenerOption continue; } + if (!filters->Keep(path)) { + if (context->IsVerbose()) { + context->GetDiagnostics()->Note(DiagMessage() << "Filtered '" << path << "' from APK."); + } + continue; + } + // The resource table needs to be re-serialized since it might have changed. if (path == "resources.arsc") { BigBuffer buffer(4096); diff --git a/tools/aapt2/LoadedApk.h b/tools/aapt2/LoadedApk.h index 59eb8161a868bfef7c3f9282dbf6445a00f5abfa..8aa9674aa2ed93ce7baa671f3e2a4c7da24211a2 100644 --- a/tools/aapt2/LoadedApk.h +++ b/tools/aapt2/LoadedApk.h @@ -20,6 +20,7 @@ #include "androidfw/StringPiece.h" #include "ResourceTable.h" +#include "filter/Filter.h" #include "flatten/Archive.h" #include "flatten/TableFlattener.h" #include "io/ZipArchive.h" @@ -49,6 +50,14 @@ class LoadedApk { bool WriteToArchive(IAaptContext* context, const TableFlattenerOptions& options, IArchiveWriter* writer); + /** + * Writes the APK on disk at the given path, while also removing the resource + * files that are not referenced in the resource table. The provided filter + * chain is applied to each entry in the APK file. + */ + bool WriteToArchive(IAaptContext* context, const TableFlattenerOptions& options, + FilterChain* filters, IArchiveWriter* writer); + static std::unique_ptr LoadApkFromPath(IAaptContext* context, const android::StringPiece& path); diff --git a/tools/aapt2/Main.cpp b/tools/aapt2/Main.cpp index 1d2e3a4f2df0dc7380f92ea7191e1449481f5dc1..36ab30c7fb6e467f114a04b2d5880f90b4e46465 100644 --- a/tools/aapt2/Main.cpp +++ b/tools/aapt2/Main.cpp @@ -14,12 +14,26 @@ * limitations under the License. */ +#ifdef _WIN32 +// clang-format off +#include +#include +// clang-format on +#endif + #include #include +#include "android-base/stringprintf.h" +#include "android-base/utf8.h" #include "androidfw/StringPiece.h" #include "Diagnostics.h" +#include "util/Files.h" +#include "util/Util.h" + +using ::android::StringPiece; +using ::android::base::StringPrintf; namespace aapt { @@ -27,54 +41,136 @@ namespace aapt { static const char* sMajorVersion = "2"; // Update minor version whenever a feature or flag is added. -static const char* sMinorVersion = "16"; +static const char* sMinorVersion = "19"; -int PrintVersion() { - std::cerr << "Android Asset Packaging Tool (aapt) " << sMajorVersion << "." - << sMinorVersion << std::endl; - return 0; +static void PrintVersion() { + std::cerr << StringPrintf("Android Asset Packaging Tool (aapt) %s:%s", sMajorVersion, + sMinorVersion) + << std::endl; +} + +static void PrintUsage() { + std::cerr << "\nusage: aapt2 [compile|link|dump|diff|optimize|version] ..." << std::endl; } -extern int Compile(const std::vector& args, IDiagnostics* diagnostics); -extern int Link(const std::vector& args, IDiagnostics* diagnostics); -extern int Dump(const std::vector& args); -extern int Diff(const std::vector& args); -extern int Optimize(const std::vector& args); +extern int Compile(const std::vector& args, IDiagnostics* diagnostics); +extern int Link(const std::vector& args, IDiagnostics* diagnostics); +extern int Dump(const std::vector& args); +extern int Diff(const std::vector& args); +extern int Optimize(const std::vector& args); -} // namespace aapt +static int ExecuteCommand(const StringPiece& command, const std::vector& args, + IDiagnostics* diagnostics) { + if (command == "compile" || command == "c") { + return Compile(args, diagnostics); + } else if (command == "link" || command == "l") { + return Link(args, diagnostics); + } else if (command == "dump" || command == "d") { + return Dump(args); + } else if (command == "diff") { + return Diff(args); + } else if (command == "optimize") { + return Optimize(args); + } else if (command == "version") { + PrintVersion(); + return 0; + } + diagnostics->Error(DiagMessage() << "unknown command '" << command << "'"); + return -1; +} -int main(int argc, char** argv) { - if (argc >= 2) { - argv += 1; - argc -= 1; +static void RunDaemon(IDiagnostics* diagnostics) { + std::cout << "Ready" << std::endl; - std::vector args; - for (int i = 1; i < argc; i++) { - args.push_back(argv[i]); + // Run in daemon mode. The first line of input is the command. This can be 'quit' which ends + // the daemon mode. Each subsequent line is a single parameter to the command. The end of a + // invocation is signaled by providing an empty line. At any point, an EOF signal or the + // command 'quit' will end the daemon mode. + while (true) { + std::vector raw_args; + for (std::string line; std::getline(std::cin, line) && !line.empty();) { + raw_args.push_back(line); } - android::StringPiece command(argv[0]); - if (command == "compile" || command == "c") { - aapt::StdErrDiagnostics diagnostics; - return aapt::Compile(args, &diagnostics); - } else if (command == "link" || command == "l") { - aapt::StdErrDiagnostics diagnostics; - return aapt::Link(args, &diagnostics); - } else if (command == "dump" || command == "d") { - return aapt::Dump(args); - } else if (command == "diff") { - return aapt::Diff(args); - } else if (command == "optimize") { - return aapt::Optimize(args); - } else if (command == "version") { - return aapt::PrintVersion(); + if (!std::cin) { + break; } - std::cerr << "unknown command '" << command << "'\n"; - } else { + + // An empty command does nothing. + if (raw_args.empty()) { + continue; + } + + if (raw_args[0] == "quit") { + break; + } + + std::vector args; + args.insert(args.end(), ++raw_args.begin(), raw_args.end()); + int ret = ExecuteCommand(raw_args[0], args, diagnostics); + if (ret != 0) { + std::cerr << "Error" << std::endl; + } + std::cerr << "Done" << std::endl; + } + std::cout << "Exiting daemon" << std::endl; +} + +} // namespace aapt + +int MainImpl(int argc, char** argv) { + if (argc < 2) { std::cerr << "no command specified\n"; + aapt::PrintUsage(); + return -1; } - std::cerr << "\nusage: aapt2 [compile|link|dump|diff|optimize|version] ..." - << std::endl; - return 1; + argv += 1; + argc -= 1; + + aapt::StdErrDiagnostics diagnostics; + + // Collect the arguments starting after the program name and command name. + std::vector args; + for (int i = 1; i < argc; i++) { + args.push_back(argv[i]); + } + + const StringPiece command(argv[0]); + if (command != "daemon" && command != "m") { + // Single execution. + const int result = aapt::ExecuteCommand(command, args, &diagnostics); + if (result < 0) { + aapt::PrintUsage(); + } + return result; + } + + aapt::RunDaemon(&diagnostics); + return 0; +} + +int main(int argc, char** argv) { +#ifdef _WIN32 + LPWSTR* wide_argv = CommandLineToArgvW(GetCommandLineW(), &argc); + CHECK(wide_argv != nullptr) << "invalid command line parameters passed to process"; + + std::vector utf8_args; + for (int i = 0; i < argc; i++) { + std::string utf8_arg; + if (!::android::base::WideToUTF8(wide_argv[i], &utf8_arg)) { + std::cerr << "error converting input arguments to UTF-8" << std::endl; + return 1; + } + utf8_args.push_back(std::move(utf8_arg)); + } + LocalFree(wide_argv); + + std::unique_ptr utf8_argv(new char*[utf8_args.size()]); + for (int i = 0; i < argc; i++) { + utf8_argv[i] = const_cast(utf8_args[i].c_str()); + } + argv = utf8_argv.get(); +#endif + return MainImpl(argc, argv); } diff --git a/tools/aapt2/OWNERS b/tools/aapt2/OWNERS new file mode 100644 index 0000000000000000000000000000000000000000..d76233ec78ba4fc160e7cbd1b842ee93e3c0833f --- /dev/null +++ b/tools/aapt2/OWNERS @@ -0,0 +1,2 @@ +set noparent +adamlesinski@google.com diff --git a/tools/aapt2/Resource.cpp b/tools/aapt2/Resource.cpp index 35971e7bd99b661e8def5883d423121c1abb3fc2..a9f5f298e019f1d379a58af3cb13ccf03747a614 100644 --- a/tools/aapt2/Resource.cpp +++ b/tools/aapt2/Resource.cpp @@ -61,6 +61,8 @@ StringPiece ToString(ResourceType type) { return "menu"; case ResourceType::kMipmap: return "mipmap"; + case ResourceType::kNavigation: + return "navigation"; case ResourceType::kPlurals: return "plurals"; case ResourceType::kRaw: @@ -98,6 +100,7 @@ static const std::map sResourceTypeMap{ {"layout", ResourceType::kLayout}, {"menu", ResourceType::kMenu}, {"mipmap", ResourceType::kMipmap}, + {"navigation", ResourceType::kNavigation}, {"plurals", ResourceType::kPlurals}, {"raw", ResourceType::kRaw}, {"string", ResourceType::kString}, diff --git a/tools/aapt2/Resource.h b/tools/aapt2/Resource.h index 0a74c1a0f77dfd930fbd55916cb8739681104079..cbcc8fb805aa1585d3fa034575b39b9b1d76ed01 100644 --- a/tools/aapt2/Resource.h +++ b/tools/aapt2/Resource.h @@ -59,6 +59,7 @@ enum class ResourceType { kLayout, kMenu, kMipmap, + kNavigation, kPlurals, kRaw, kString, diff --git a/tools/aapt2/ResourceParser.cpp b/tools/aapt2/ResourceParser.cpp index 9a37913f0edcb11d6e2049bf65a0521b770fb62f..1c3ac2ad4f1719d9f561fcc265d223b1a367aaaa 100644 --- a/tools/aapt2/ResourceParser.cpp +++ b/tools/aapt2/ResourceParser.cpp @@ -268,8 +268,7 @@ bool ResourceParser::Parse(xml::XmlPullParser* parser) { continue; } - if (!parser->element_namespace().empty() || - parser->element_name() != "resources") { + if (!parser->element_namespace().empty() || parser->element_name() != "resources") { diag_->Error(DiagMessage(source_.WithLine(parser->line_number())) << "root element must be "); return false; @@ -328,8 +327,7 @@ bool ResourceParser::ParseResources(xml::XmlPullParser* parser) { parsed_resource.comment = std::move(comment); // Extract the product name if it exists. - if (Maybe maybe_product = - xml::FindNonEmptyAttribute(parser, "product")) { + if (Maybe maybe_product = xml::FindNonEmptyAttribute(parser, "product")) { parsed_resource.product = maybe_product.value().to_string(); } @@ -348,10 +346,8 @@ bool ResourceParser::ParseResources(xml::XmlPullParser* parser) { for (const ResourceName& stripped_resource : stripped_resources) { if (!table_->FindResource(stripped_resource)) { // Failed to find the resource. - diag_->Error(DiagMessage(source_) - << "resource '" << stripped_resource - << "' " - "was filtered out but no product variant remains"); + diag_->Error(DiagMessage(source_) << "resource '" << stripped_resource + << "' was filtered out but no product variant remains"); error = true; } } @@ -589,7 +585,7 @@ std::unique_ptr ResourceParser::ParseXml(xml::XmlPullParser* parser, // This can only be a StyledString. std::unique_ptr styled_string = util::make_unique(table_->string_pool.MakeRef( - style_string, StringPool::Context(StringPool::Context::kStylePriority, config_))); + style_string, StringPool::Context(StringPool::Context::kNormalPriority, config_))); styled_string->untranslatable_sections = std::move(untranslatable_sections); return std::move(styled_string); } @@ -1223,7 +1219,7 @@ bool ResourceParser::ParseArrayImpl(xml::XmlPullParser* parser, continue; } item->SetSource(item_source); - array->items.emplace_back(std::move(item)); + array->elements.emplace_back(std::move(item)); } else if (!ShouldIgnoreElement(element_namespace, element_name)) { diag_->Error(DiagMessage(source_.WithLine(parser->line_number())) diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp index c6382b177f420fa65acb87711396f5cbe1f2687d..144ebd22e1054df5c01569c367f6d301ed048892 100644 --- a/tools/aapt2/ResourceParser_test.cpp +++ b/tools/aapt2/ResourceParser_test.cpp @@ -22,14 +22,22 @@ #include "ResourceTable.h" #include "ResourceUtils.h" #include "ResourceValues.h" +#include "io/StringInputStream.h" #include "test/Test.h" #include "xml/XmlPullParser.h" +using ::aapt::io::StringInputStream; +using ::aapt::test::StrValueEq; using ::aapt::test::ValueEq; +using ::android::ResTable_map; +using ::android::Res_value; using ::android::StringPiece; using ::testing::Eq; +using ::testing::IsEmpty; +using ::testing::IsNull; using ::testing::NotNull; using ::testing::Pointee; +using ::testing::SizeIs; namespace aapt { @@ -37,11 +45,13 @@ constexpr const char* kXmlPreamble = " TEST(ResourceParserSingleTest, FailToParseWithNoRootResourcesElement) { std::unique_ptr context = test::ContextBuilder().Build(); - std::stringstream input(kXmlPreamble); - input << R"()" << std::endl; ResourceTable table; ResourceParser parser(context->GetDiagnostics(), &table, Source{"test"}, {}); - xml::XmlPullParser xml_parser(input); + + std::string input = kXmlPreamble; + input += R"()"; + StringInputStream in(input); + xml::XmlPullParser xml_parser(&in); ASSERT_FALSE(parser.Parse(&xml_parser)); } @@ -56,12 +66,16 @@ class ResourceParserTest : public ::testing::Test { } ::testing::AssertionResult TestParse(const StringPiece& str, const ConfigDescription& config) { - std::stringstream input(kXmlPreamble); - input << "\n" << str << "\n" << std::endl; ResourceParserOptions parserOptions; ResourceParser parser(context_->GetDiagnostics(), &table_, Source{"test"}, config, parserOptions); - xml::XmlPullParser xmlParser(input); + + std::string input = kXmlPreamble; + input += "\n"; + input.append(str.data(), str.size()); + input += "\n"; + StringInputStream in(input); + xml::XmlPullParser xmlParser(&in); if (parser.Parse(&xmlParser)) { return ::testing::AssertionSuccess(); } @@ -74,31 +88,31 @@ class ResourceParserTest : public ::testing::Test { }; TEST_F(ResourceParserTest, ParseQuotedString) { - std::string input = " \" hey there \" "; - ASSERT_TRUE(TestParse(input)); + ASSERT_TRUE(TestParse(R"( " hey there " )")); String* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(std::string(" hey there "), *str->value); - EXPECT_TRUE(str->untranslatable_sections.empty()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq(" hey there ")); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); } TEST_F(ResourceParserTest, ParseEscapedString) { - std::string input = "\\?123"; - ASSERT_TRUE(TestParse(input)); + ASSERT_TRUE(TestParse(R"(\?123)")); String* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(std::string("?123"), *str->value); - EXPECT_TRUE(str->untranslatable_sections.empty()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("?123")); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); + + ASSERT_TRUE(TestParse(R"(This isn\’t a bad string)")); + str = test::GetValue(&table_, "string/bar"); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("This isn’t a bad string")); } TEST_F(ResourceParserTest, ParseFormattedString) { - std::string input = "%d %s"; - ASSERT_FALSE(TestParse(input)); - - input = "%1$d %2$s"; - ASSERT_TRUE(TestParse(input)); + ASSERT_FALSE(TestParse(R"(%d %s)")); + ASSERT_TRUE(TestParse(R"(%1$d %2$s)")); } TEST_F(ResourceParserTest, ParseStyledString) { @@ -109,98 +123,93 @@ TEST_F(ResourceParserTest, ParseStyledString) { ASSERT_TRUE(TestParse(input)); StyledString* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); + ASSERT_THAT(str, NotNull()); - const std::string expected_str = "This is my aunt\u2019s fickle string"; - EXPECT_EQ(expected_str, *str->value->str); - EXPECT_EQ(2u, str->value->spans.size()); - EXPECT_TRUE(str->untranslatable_sections.empty()); + EXPECT_THAT(str->value->value, Eq("This is my aunt\u2019s fickle string")); + EXPECT_THAT(str->value->spans, SizeIs(2)); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); - EXPECT_EQ(std::string("b"), *str->value->spans[0].name); - EXPECT_EQ(17u, str->value->spans[0].first_char); - EXPECT_EQ(30u, str->value->spans[0].last_char); + EXPECT_THAT(*str->value->spans[0].name, Eq("b")); + EXPECT_THAT(str->value->spans[0].first_char, Eq(17u)); + EXPECT_THAT(str->value->spans[0].last_char, Eq(30u)); - EXPECT_EQ(std::string("small"), *str->value->spans[1].name); - EXPECT_EQ(24u, str->value->spans[1].first_char); - EXPECT_EQ(30u, str->value->spans[1].last_char); + EXPECT_THAT(*str->value->spans[1].name, Eq("small")); + EXPECT_THAT(str->value->spans[1].first_char, Eq(24u)); + EXPECT_THAT(str->value->spans[1].last_char, Eq(30u)); } TEST_F(ResourceParserTest, ParseStringWithWhitespace) { - std::string input = " This is what I think "; - ASSERT_TRUE(TestParse(input)); + ASSERT_TRUE(TestParse(R"( This is what I think )")); String* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(std::string("This is what I think"), *str->value); - EXPECT_TRUE(str->untranslatable_sections.empty()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str->value, Eq("This is what I think")); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); - input = "\" This is what I think \""; - ASSERT_TRUE(TestParse(input)); + ASSERT_TRUE(TestParse(R"(" This is what I think ")")); str = test::GetValue(&table_, "string/foo2"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(std::string(" This is what I think "), *str->value); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq(" This is what I think ")); } TEST_F(ResourceParserTest, IgnoreXliffTagsOtherThanG) { - std::string input = R"EOF( + std::string input = R"( - There are no apples)EOF"; + There are no apples)"; ASSERT_TRUE(TestParse(input)); String* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(StringPiece("There are no apples"), StringPiece(*str->value)); - EXPECT_TRUE(str->untranslatable_sections.empty()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("There are no apples")); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); } TEST_F(ResourceParserTest, NestedXliffGTagsAreIllegal) { - std::string input = R"EOF( + std::string input = R"( - Do not translate this)EOF"; + Do not translate this)"; EXPECT_FALSE(TestParse(input)); } TEST_F(ResourceParserTest, RecordUntranslateableXliffSectionsInString) { - std::string input = R"EOF( + std::string input = R"( - There are %1$d apples)EOF"; + There are %1$d apples)"; ASSERT_TRUE(TestParse(input)); String* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(StringPiece("There are %1$d apples"), StringPiece(*str->value)); - - ASSERT_EQ(1u, str->untranslatable_sections.size()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("There are %1$d apples")); + ASSERT_THAT(str->untranslatable_sections, SizeIs(1)); // We expect indices and lengths that span to include the whitespace // before %1$d. This is due to how the StringBuilder withholds whitespace unless // needed (to deal with line breaks, etc.). - EXPECT_EQ(9u, str->untranslatable_sections[0].start); - EXPECT_EQ(14u, str->untranslatable_sections[0].end); + EXPECT_THAT(str->untranslatable_sections[0].start, Eq(9u)); + EXPECT_THAT(str->untranslatable_sections[0].end, Eq(14u)); } TEST_F(ResourceParserTest, RecordUntranslateableXliffSectionsInStyledString) { - std::string input = R"EOF( + std::string input = R"( - There are %1$d apples)EOF"; + There are %1$d apples)"; ASSERT_TRUE(TestParse(input)); StyledString* str = test::GetValue(&table_, "string/foo"); - ASSERT_NE(nullptr, str); - EXPECT_EQ(StringPiece("There are %1$d apples"), StringPiece(*str->value->str)); - - ASSERT_EQ(1u, str->untranslatable_sections.size()); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(str->value->value, Eq("There are %1$d apples")); + ASSERT_THAT(str->untranslatable_sections, SizeIs(1)); // We expect indices and lengths that span to include the whitespace // before %1$d. This is due to how the StringBuilder withholds whitespace unless // needed (to deal with line breaks, etc.). - EXPECT_EQ(9u, str->untranslatable_sections[0].start); - EXPECT_EQ(14u, str->untranslatable_sections[0].end); + EXPECT_THAT(str->untranslatable_sections[0].start, Eq(9u)); + EXPECT_THAT(str->untranslatable_sections[0].end, Eq(14u)); } TEST_F(ResourceParserTest, ParseNull) { - std::string input = "@null"; + std::string input = R"(@null)"; ASSERT_TRUE(TestParse(input)); // The Android runtime treats a value of android::Res_value::TYPE_NULL as @@ -211,38 +220,36 @@ TEST_F(ResourceParserTest, ParseNull) { ASSERT_THAT(null_ref, NotNull()); EXPECT_FALSE(null_ref->name); EXPECT_FALSE(null_ref->id); - EXPECT_EQ(Reference::Type::kResource, null_ref->reference_type); + EXPECT_THAT(null_ref->reference_type, Eq(Reference::Type::kResource)); } TEST_F(ResourceParserTest, ParseEmpty) { - std::string input = "@empty"; + std::string input = R"(@empty)"; ASSERT_TRUE(TestParse(input)); BinaryPrimitive* integer = test::GetValue(&table_, "integer/foo"); - ASSERT_NE(nullptr, integer); - EXPECT_EQ(uint16_t(android::Res_value::TYPE_NULL), integer->value.dataType); - EXPECT_EQ(uint32_t(android::Res_value::DATA_NULL_EMPTY), integer->value.data); + ASSERT_THAT(integer, NotNull()); + EXPECT_THAT(integer->value.dataType, Eq(Res_value::TYPE_NULL)); + EXPECT_THAT(integer->value.data, Eq(Res_value::DATA_NULL_EMPTY)); } TEST_F(ResourceParserTest, ParseAttr) { - std::string input = - "\n" - ""; + std::string input = R"( + + )"; ASSERT_TRUE(TestParse(input)); Attribute* attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(nullptr, attr); - EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_STRING), attr->type_mask); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->type_mask, Eq(ResTable_map::TYPE_STRING)); attr = test::GetValue(&table_, "attr/bar"); - ASSERT_NE(nullptr, attr); - EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_ANY), attr->type_mask); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->type_mask, Eq(ResTable_map::TYPE_ANY)); } -// Old AAPT allowed attributes to be defined under different configurations, but -// ultimately -// stored them with the default configuration. Check that we have the same -// behavior. +// Old AAPT allowed attributes to be defined under different configurations, but ultimately +// stored them with the default configuration. Check that we have the same behavior. TEST_F(ResourceParserTest, ParseAttrAndDeclareStyleableUnderConfigButRecordAsNoConfig) { const ConfigDescription watch_config = test::ParseConfigOrDie("watch"); std::string input = R"( @@ -252,583 +259,519 @@ TEST_F(ResourceParserTest, ParseAttrAndDeclareStyleableUnderConfigButRecordAsNoC )"; ASSERT_TRUE(TestParse(input, watch_config)); - EXPECT_EQ(nullptr, test::GetValueForConfig(&table_, "attr/foo", watch_config)); - EXPECT_EQ(nullptr, test::GetValueForConfig(&table_, "attr/baz", watch_config)); - EXPECT_EQ(nullptr, test::GetValueForConfig(&table_, "styleable/bar", watch_config)); + EXPECT_THAT(test::GetValueForConfig(&table_, "attr/foo", watch_config), IsNull()); + EXPECT_THAT(test::GetValueForConfig(&table_, "attr/baz", watch_config), IsNull()); + EXPECT_THAT(test::GetValueForConfig(&table_, "styleable/bar", watch_config), IsNull()); - EXPECT_NE(nullptr, test::GetValue(&table_, "attr/foo")); - EXPECT_NE(nullptr, test::GetValue(&table_, "attr/baz")); - EXPECT_NE(nullptr, test::GetValue(&table_, "styleable/bar")); + EXPECT_THAT(test::GetValue(&table_, "attr/foo"), NotNull()); + EXPECT_THAT(test::GetValue(&table_, "attr/baz"), NotNull()); + EXPECT_THAT(test::GetValue(&table_, "styleable/bar"), NotNull()); } TEST_F(ResourceParserTest, ParseAttrWithMinMax) { - std::string input = - ""; + std::string input = R"()"; ASSERT_TRUE(TestParse(input)); Attribute* attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(nullptr, attr); - EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_INTEGER), attr->type_mask); - EXPECT_EQ(10, attr->min_int); - EXPECT_EQ(23, attr->max_int); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->type_mask, Eq(ResTable_map::TYPE_INTEGER)); + EXPECT_THAT(attr->min_int, Eq(10)); + EXPECT_THAT(attr->max_int, Eq(23)); } TEST_F(ResourceParserTest, FailParseAttrWithMinMaxButNotInteger) { - std::string input = - ""; - ASSERT_FALSE(TestParse(input)); + ASSERT_FALSE(TestParse(R"()")); } TEST_F(ResourceParserTest, ParseUseAndDeclOfAttr) { - std::string input = - "\n" - " \n" - "\n" - ""; + std::string input = R"( + + + + )"; ASSERT_TRUE(TestParse(input)); Attribute* attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(nullptr, attr); - EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_STRING), attr->type_mask); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->type_mask, Eq(ResTable_map::TYPE_STRING)); } TEST_F(ResourceParserTest, ParseDoubleUseOfAttr) { - std::string input = - "" - " \n" - "\n" - "\n" - " \n" - ""; + std::string input = R"( + + + + + + )"; ASSERT_TRUE(TestParse(input)); Attribute* attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(nullptr, attr); - EXPECT_EQ(uint32_t(android::ResTable_map::TYPE_BOOLEAN), attr->type_mask); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->type_mask, Eq(ResTable_map::TYPE_BOOLEAN)); } TEST_F(ResourceParserTest, ParseEnumAttr) { - std::string input = - "\n" - " \n" - " \n" - " \n" - ""; + std::string input = R"( + + + + + )"; ASSERT_TRUE(TestParse(input)); Attribute* enum_attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(enum_attr, nullptr); - EXPECT_EQ(enum_attr->type_mask, android::ResTable_map::TYPE_ENUM); - ASSERT_EQ(enum_attr->symbols.size(), 3u); + ASSERT_THAT(enum_attr, NotNull()); + EXPECT_THAT(enum_attr->type_mask, Eq(ResTable_map::TYPE_ENUM)); + ASSERT_THAT(enum_attr->symbols, SizeIs(3)); - AAPT_ASSERT_TRUE(enum_attr->symbols[0].symbol.name); - EXPECT_EQ(enum_attr->symbols[0].symbol.name.value().entry, "bar"); - EXPECT_EQ(enum_attr->symbols[0].value, 0u); + ASSERT_TRUE(enum_attr->symbols[0].symbol.name); + EXPECT_THAT(enum_attr->symbols[0].symbol.name.value().entry, Eq("bar")); + EXPECT_THAT(enum_attr->symbols[0].value, Eq(0u)); - AAPT_ASSERT_TRUE(enum_attr->symbols[1].symbol.name); - EXPECT_EQ(enum_attr->symbols[1].symbol.name.value().entry, "bat"); - EXPECT_EQ(enum_attr->symbols[1].value, 1u); + ASSERT_TRUE(enum_attr->symbols[1].symbol.name); + EXPECT_THAT(enum_attr->symbols[1].symbol.name.value().entry, Eq("bat")); + EXPECT_THAT(enum_attr->symbols[1].value, Eq(1u)); - AAPT_ASSERT_TRUE(enum_attr->symbols[2].symbol.name); - EXPECT_EQ(enum_attr->symbols[2].symbol.name.value().entry, "baz"); - EXPECT_EQ(enum_attr->symbols[2].value, 2u); + ASSERT_TRUE(enum_attr->symbols[2].symbol.name); + EXPECT_THAT(enum_attr->symbols[2].symbol.name.value().entry, Eq("baz")); + EXPECT_THAT(enum_attr->symbols[2].value, Eq(2u)); } TEST_F(ResourceParserTest, ParseFlagAttr) { - std::string input = - "\n" - " \n" - " \n" - " \n" - ""; + std::string input = R"( + + + + + )"; ASSERT_TRUE(TestParse(input)); Attribute* flag_attr = test::GetValue(&table_, "attr/foo"); - ASSERT_NE(nullptr, flag_attr); - EXPECT_EQ(flag_attr->type_mask, android::ResTable_map::TYPE_FLAGS); - ASSERT_EQ(flag_attr->symbols.size(), 3u); + ASSERT_THAT(flag_attr, NotNull()); + EXPECT_THAT(flag_attr->type_mask, Eq(ResTable_map::TYPE_FLAGS)); + ASSERT_THAT(flag_attr->symbols, SizeIs(3)); - AAPT_ASSERT_TRUE(flag_attr->symbols[0].symbol.name); - EXPECT_EQ(flag_attr->symbols[0].symbol.name.value().entry, "bar"); - EXPECT_EQ(flag_attr->symbols[0].value, 0u); + ASSERT_TRUE(flag_attr->symbols[0].symbol.name); + EXPECT_THAT(flag_attr->symbols[0].symbol.name.value().entry, Eq("bar")); + EXPECT_THAT(flag_attr->symbols[0].value, Eq(0u)); - AAPT_ASSERT_TRUE(flag_attr->symbols[1].symbol.name); - EXPECT_EQ(flag_attr->symbols[1].symbol.name.value().entry, "bat"); - EXPECT_EQ(flag_attr->symbols[1].value, 1u); + ASSERT_TRUE(flag_attr->symbols[1].symbol.name); + EXPECT_THAT(flag_attr->symbols[1].symbol.name.value().entry, Eq("bat")); + EXPECT_THAT(flag_attr->symbols[1].value, Eq(1u)); - AAPT_ASSERT_TRUE(flag_attr->symbols[2].symbol.name); - EXPECT_EQ(flag_attr->symbols[2].symbol.name.value().entry, "baz"); - EXPECT_EQ(flag_attr->symbols[2].value, 2u); + ASSERT_TRUE(flag_attr->symbols[2].symbol.name); + EXPECT_THAT(flag_attr->symbols[2].symbol.name.value().entry, Eq("baz")); + EXPECT_THAT(flag_attr->symbols[2].value, Eq(2u)); std::unique_ptr flag_value = ResourceUtils::TryParseFlagSymbol(flag_attr, "baz|bat"); - ASSERT_NE(nullptr, flag_value); - EXPECT_EQ(flag_value->value.data, 1u | 2u); + ASSERT_THAT(flag_value, NotNull()); + EXPECT_THAT(flag_value->value.data, Eq(1u | 2u)); } TEST_F(ResourceParserTest, FailToParseEnumAttrWithNonUniqueKeys) { - std::string input = - "\n" - " \n" - " \n" - " \n" - ""; + std::string input = R"( + + + + + )"; ASSERT_FALSE(TestParse(input)); } TEST_F(ResourceParserTest, ParseStyle) { - std::string input = - ""; + std::string input = R"( + )"; ASSERT_TRUE(TestParse(input)); Style* style = test::GetValue"; + std::string input = R"( + )"; ASSERT_TRUE(TestParse(input)); Style* style = test::GetValue @string/wow diff --git a/tools/aapt2/io/FileInputStream.cpp b/tools/aapt2/io/FileInputStream.cpp new file mode 100644 index 0000000000000000000000000000000000000000..07dbb5a98add7a7c93f7f34a65d54152c03d41ba --- /dev/null +++ b/tools/aapt2/io/FileInputStream.cpp @@ -0,0 +1,102 @@ +/* + * 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. + */ + +#include "io/FileInputStream.h" + +#include // for errno +#include // for O_RDONLY +#include // for read + +#include "android-base/errors.h" +#include "android-base/file.h" // for O_BINARY +#include "android-base/macros.h" +#include "android-base/utf8.h" + +using ::android::base::SystemErrorCodeToString; + +namespace aapt { +namespace io { + +FileInputStream::FileInputStream(const std::string& path, size_t buffer_capacity) + : FileInputStream(::android::base::utf8::open(path.c_str(), O_RDONLY | O_BINARY), + buffer_capacity) { +} + +FileInputStream::FileInputStream(int fd, size_t buffer_capacity) + : fd_(fd), + buffer_capacity_(buffer_capacity), + buffer_offset_(0u), + buffer_size_(0u), + total_byte_count_(0u) { + if (fd_ == -1) { + error_ = SystemErrorCodeToString(errno); + } else { + buffer_.reset(new uint8_t[buffer_capacity_]); + } +} + +bool FileInputStream::Next(const void** data, size_t* size) { + if (HadError()) { + return false; + } + + // Deal with any remaining bytes after BackUp was called. + if (buffer_offset_ != buffer_size_) { + *data = buffer_.get() + buffer_offset_; + *size = buffer_size_ - buffer_offset_; + total_byte_count_ += buffer_size_ - buffer_offset_; + buffer_offset_ = buffer_size_; + return true; + } + + ssize_t n = TEMP_FAILURE_RETRY(read(fd_, buffer_.get(), buffer_capacity_)); + if (n < 0) { + error_ = SystemErrorCodeToString(errno); + fd_.reset(); + return false; + } + + buffer_size_ = static_cast(n); + buffer_offset_ = buffer_size_; + total_byte_count_ += buffer_size_; + + *data = buffer_.get(); + *size = buffer_size_; + return buffer_size_ != 0u; +} + +void FileInputStream::BackUp(size_t count) { + if (count > buffer_offset_) { + count = buffer_offset_; + } + buffer_offset_ -= count; + total_byte_count_ -= count; +} + +size_t FileInputStream::ByteCount() const { + return total_byte_count_; +} + +bool FileInputStream::HadError() const { + return !error_.empty(); +} + +std::string FileInputStream::GetError() const { + return error_; +} + +} // namespace io +} // namespace aapt diff --git a/tools/aapt2/io/FileInputStream.h b/tools/aapt2/io/FileInputStream.h new file mode 100644 index 0000000000000000000000000000000000000000..6beb9a186ce5e16c04a7d717c96526c9cbc6ee39 --- /dev/null +++ b/tools/aapt2/io/FileInputStream.h @@ -0,0 +1,63 @@ +/* + * 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. + */ + +#ifndef AAPT_IO_FILEINPUTSTREAM_H +#define AAPT_IO_FILEINPUTSTREAM_H + +#include "io/Io.h" + +#include +#include + +#include "android-base/macros.h" +#include "android-base/unique_fd.h" + +namespace aapt { +namespace io { + +class FileInputStream : public InputStream { + public: + explicit FileInputStream(const std::string& path, size_t buffer_capacity = 4096); + + // Takes ownership of `fd`. + explicit FileInputStream(int fd, size_t buffer_capacity = 4096); + + bool Next(const void** data, size_t* size) override; + + void BackUp(size_t count) override; + + size_t ByteCount() const override; + + bool HadError() const override; + + std::string GetError() const override; + + private: + DISALLOW_COPY_AND_ASSIGN(FileInputStream); + + android::base::unique_fd fd_; + std::string error_; + std::unique_ptr buffer_; + size_t buffer_capacity_; + size_t buffer_offset_; + size_t buffer_size_; + size_t total_byte_count_; +}; + +} // namespace io +} // namespace aapt + +#endif // AAPT_IO_FILEINPUTSTREAM_H diff --git a/tools/aapt2/io/FileInputStream_test.cpp b/tools/aapt2/io/FileInputStream_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7314ab7beebaec2377222bd149f7a00bd4a8c9ff --- /dev/null +++ b/tools/aapt2/io/FileInputStream_test.cpp @@ -0,0 +1,87 @@ +/* + * 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. + */ + +#include "io/FileInputStream.h" + +#include "android-base/macros.h" +#include "android-base/test_utils.h" + +#include "test/Test.h" + +using ::android::StringPiece; +using ::testing::Eq; +using ::testing::NotNull; +using ::testing::StrEq; + +namespace aapt { +namespace io { + +TEST(FileInputStreamTest, NextAndBackup) { + std::string input = "this is a cool string"; + TemporaryFile file; + ASSERT_THAT(TEMP_FAILURE_RETRY(write(file.fd, input.c_str(), input.size())), Eq(21)); + lseek64(file.fd, 0, SEEK_SET); + + // Use a small buffer size so that we can call Next() a few times. + FileInputStream in(file.fd, 10u); + ASSERT_FALSE(in.HadError()); + EXPECT_THAT(in.ByteCount(), Eq(0u)); + + const char* buffer; + size_t size; + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)) << in.GetError(); + ASSERT_THAT(size, Eq(10u)); + ASSERT_THAT(buffer, NotNull()); + EXPECT_THAT(in.ByteCount(), Eq(10u)); + EXPECT_THAT(StringPiece(buffer, size), Eq("this is a ")); + + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(10u)); + ASSERT_THAT(buffer, NotNull()); + EXPECT_THAT(in.ByteCount(), Eq(20u)); + EXPECT_THAT(StringPiece(buffer, size), Eq("cool strin")); + + in.BackUp(5u); + EXPECT_THAT(in.ByteCount(), Eq(15u)); + + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(5u)); + ASSERT_THAT(buffer, NotNull()); + ASSERT_THAT(in.ByteCount(), Eq(20u)); + EXPECT_THAT(StringPiece(buffer, size), Eq("strin")); + + // Backup 1 more than possible. Should clamp. + in.BackUp(11u); + EXPECT_THAT(in.ByteCount(), Eq(10u)); + + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(10u)); + ASSERT_THAT(buffer, NotNull()); + ASSERT_THAT(in.ByteCount(), Eq(20u)); + EXPECT_THAT(StringPiece(buffer, size), Eq("cool strin")); + + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(1u)); + ASSERT_THAT(buffer, NotNull()); + ASSERT_THAT(in.ByteCount(), Eq(21u)); + EXPECT_THAT(StringPiece(buffer, size), Eq("g")); + + EXPECT_FALSE(in.Next(reinterpret_cast(&buffer), &size)); + EXPECT_FALSE(in.HadError()); +} + +} // namespace io +} // namespace aapt diff --git a/tools/aapt2/io/StringInputStream.cpp b/tools/aapt2/io/StringInputStream.cpp new file mode 100644 index 0000000000000000000000000000000000000000..51a18a7d8a9f8ff926e332b58150fa4ccf52099d --- /dev/null +++ b/tools/aapt2/io/StringInputStream.cpp @@ -0,0 +1,50 @@ +/* + * 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. + */ + +#include "io/StringInputStream.h" + +using ::android::StringPiece; + +namespace aapt { +namespace io { + +StringInputStream::StringInputStream(const StringPiece& str) : str_(str), offset_(0u) { +} + +bool StringInputStream::Next(const void** data, size_t* size) { + if (offset_ == str_.size()) { + return false; + } + + *data = str_.data() + offset_; + *size = str_.size() - offset_; + offset_ = str_.size(); + return true; +} + +void StringInputStream::BackUp(size_t count) { + if (count > offset_) { + count = offset_; + } + offset_ -= count; +} + +size_t StringInputStream::ByteCount() const { + return offset_; +} + +} // namespace io +} // namespace aapt diff --git a/tools/aapt2/io/StringInputStream.h b/tools/aapt2/io/StringInputStream.h new file mode 100644 index 0000000000000000000000000000000000000000..ff5b112ef274a71e9a1f56f2a15be0f319ecec5d --- /dev/null +++ b/tools/aapt2/io/StringInputStream.h @@ -0,0 +1,56 @@ +/* + * 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. + */ + +#ifndef AAPT_IO_STRINGINPUTSTREAM_H +#define AAPT_IO_STRINGINPUTSTREAM_H + +#include "io/Io.h" + +#include "android-base/macros.h" +#include "androidfw/StringPiece.h" + +namespace aapt { +namespace io { + +class StringInputStream : public InputStream { + public: + explicit StringInputStream(const android::StringPiece& str); + + bool Next(const void** data, size_t* size) override; + + void BackUp(size_t count) override; + + size_t ByteCount() const override; + + inline bool HadError() const override { + return false; + } + + inline std::string GetError() const override { + return {}; + } + + private: + DISALLOW_COPY_AND_ASSIGN(StringInputStream); + + android::StringPiece str_; + size_t offset_; +}; + +} // namespace io +} // namespace aapt + +#endif // AAPT_IO_STRINGINPUTSTREAM_H diff --git a/tools/aapt2/io/StringInputStream_test.cpp b/tools/aapt2/io/StringInputStream_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cc57bc498313b9b3b2d12651e438a75c7f17d11b --- /dev/null +++ b/tools/aapt2/io/StringInputStream_test.cpp @@ -0,0 +1,72 @@ +/* + * 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. + */ + +#include "io/StringInputStream.h" + +#include "test/Test.h" + +using ::android::StringPiece; +using ::testing::Eq; +using ::testing::NotNull; +using ::testing::StrEq; + +namespace aapt { +namespace io { + +TEST(StringInputStreamTest, OneCallToNextShouldReturnEntireBuffer) { + constexpr const size_t kCount = 1000; + std::string input; + input.resize(kCount, 0x7f); + input[0] = 0x00; + input[kCount - 1] = 0xff; + StringInputStream in(input); + + const char* buffer; + size_t size; + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(kCount)); + ASSERT_THAT(buffer, NotNull()); + + EXPECT_THAT(buffer[0], Eq(0x00)); + EXPECT_THAT(buffer[kCount - 1], Eq('\xff')); + + EXPECT_FALSE(in.Next(reinterpret_cast(&buffer), &size)); + EXPECT_FALSE(in.HadError()); +} + +TEST(StringInputStreamTest, BackUp) { + std::string input = "hello this is a string"; + StringInputStream in(input); + + const char* buffer; + size_t size; + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(input.size())); + ASSERT_THAT(buffer, NotNull()); + EXPECT_THAT(in.ByteCount(), Eq(input.size())); + + in.BackUp(6u); + EXPECT_THAT(in.ByteCount(), Eq(input.size() - 6u)); + + ASSERT_TRUE(in.Next(reinterpret_cast(&buffer), &size)); + ASSERT_THAT(size, Eq(6u)); + ASSERT_THAT(buffer, NotNull()); + ASSERT_THAT(buffer, StrEq("string")); + EXPECT_THAT(in.ByteCount(), Eq(input.size())); +} + +} // namespace io +} // namespace aapt diff --git a/tools/aapt2/java/AnnotationProcessor.cpp b/tools/aapt2/java/AnnotationProcessor.cpp index a0ef00b1ea1ff6edcfad1aff76026f393b6167cd..1f83fa098d746b233647f2d9a66699a60d058f09 100644 --- a/tools/aapt2/java/AnnotationProcessor.cpp +++ b/tools/aapt2/java/AnnotationProcessor.cpp @@ -18,12 +18,29 @@ #include +#include "text/Unicode.h" +#include "text/Utf8Iterator.h" #include "util/Util.h" -using android::StringPiece; +using ::aapt::text::Utf8Iterator; +using ::android::StringPiece; namespace aapt { +StringPiece AnnotationProcessor::ExtractFirstSentence(const StringPiece& comment) { + Utf8Iterator iter(comment); + while (iter.HasNext()) { + const char32_t codepoint = iter.Next(); + if (codepoint == U'.') { + const size_t current_position = iter.Position(); + if (!iter.HasNext() || text::IsWhitespace(iter.Next())) { + return comment.substr(0, current_position); + } + } + } + return comment; +} + void AnnotationProcessor::AppendCommentLine(std::string& comment) { static const std::string sDeprecated = "@deprecated"; static const std::string sSystemApi = "@SystemApi"; diff --git a/tools/aapt2/java/AnnotationProcessor.h b/tools/aapt2/java/AnnotationProcessor.h index 99cd44fd2cc1fda6106a2d31858c18de52734b96..a06eda0f9c5c742c47674a72435268b0965dff17 100644 --- a/tools/aapt2/java/AnnotationProcessor.h +++ b/tools/aapt2/java/AnnotationProcessor.h @@ -53,6 +53,8 @@ namespace aapt { */ class AnnotationProcessor { public: + static android::StringPiece ExtractFirstSentence(const android::StringPiece& comment); + /** * Adds more comments. Since resources can have various values with different * configurations, diff --git a/tools/aapt2/java/AnnotationProcessor_test.cpp b/tools/aapt2/java/AnnotationProcessor_test.cpp index 3e43c4295c0780f69c88b5c63210ba6ec305a29c..9ccac8888426258413a72579dd317be89dc0850e 100644 --- a/tools/aapt2/java/AnnotationProcessor_test.cpp +++ b/tools/aapt2/java/AnnotationProcessor_test.cpp @@ -18,6 +18,10 @@ #include "test/Test.h" +using ::testing::Eq; +using ::testing::HasSubstr; +using ::testing::Not; + namespace aapt { TEST(AnnotationProcessorTest, EmitsDeprecated) { @@ -33,7 +37,7 @@ TEST(AnnotationProcessorTest, EmitsDeprecated) { processor.WriteToStream(&result, ""); std::string annotations = result.str(); - EXPECT_NE(std::string::npos, annotations.find("@Deprecated")); + EXPECT_THAT(annotations, HasSubstr("@Deprecated")); } TEST(AnnotationProcessorTest, EmitsSystemApiAnnotationAndRemovesFromComment) { @@ -44,10 +48,20 @@ TEST(AnnotationProcessorTest, EmitsSystemApiAnnotationAndRemovesFromComment) { processor.WriteToStream(&result, ""); std::string annotations = result.str(); - EXPECT_NE(std::string::npos, - annotations.find("@android.annotation.SystemApi")); - EXPECT_EQ(std::string::npos, annotations.find("@SystemApi")); - EXPECT_NE(std::string::npos, annotations.find("This is a system API")); + EXPECT_THAT(annotations, HasSubstr("@android.annotation.SystemApi")); + EXPECT_THAT(annotations, Not(HasSubstr("@SystemApi"))); + EXPECT_THAT(annotations, HasSubstr("This is a system API")); +} + +TEST(AnnotationProcessor, ExtractsFirstSentence) { + EXPECT_THAT(AnnotationProcessor::ExtractFirstSentence("This is the only sentence"), + Eq("This is the only sentence")); + EXPECT_THAT(AnnotationProcessor::ExtractFirstSentence( + "This is the\n first sentence. This is the rest of the paragraph."), + Eq("This is the\n first sentence.")); + EXPECT_THAT(AnnotationProcessor::ExtractFirstSentence( + "This is the first sentence with a {@link android.R.styleable.Theme}."), + Eq("This is the first sentence with a {@link android.R.styleable.Theme}.")); } } // namespace aapt diff --git a/tools/aapt2/java/ClassDefinition.cpp b/tools/aapt2/java/ClassDefinition.cpp index 0cec9ae407f59153c211f7181ac72893e2f5b826..c139b73db296361718c03cca9ce29f82cea16fcf 100644 --- a/tools/aapt2/java/ClassDefinition.cpp +++ b/tools/aapt2/java/ClassDefinition.cpp @@ -39,9 +39,23 @@ void MethodDefinition::WriteToStream(const StringPiece& prefix, bool final, *out << prefix << "}"; } +ClassDefinition::Result ClassDefinition::AddMember(std::unique_ptr member) { + Result result = Result::kAdded; + auto iter = indexed_members_.find(member->GetName()); + if (iter != indexed_members_.end()) { + // Overwrite the entry. + ordered_members_[iter->second].reset(); + result = Result::kOverridden; + } + + indexed_members_[member->GetName()] = ordered_members_.size(); + ordered_members_.push_back(std::move(member)); + return result; +} + bool ClassDefinition::empty() const { - for (const std::unique_ptr& member : members_) { - if (!member->empty()) { + for (const std::unique_ptr& member : ordered_members_) { + if (member != nullptr && !member->empty()) { return false; } } @@ -50,7 +64,7 @@ bool ClassDefinition::empty() const { void ClassDefinition::WriteToStream(const StringPiece& prefix, bool final, std::ostream* out) const { - if (members_.empty() && !create_if_empty_) { + if (empty() && !create_if_empty_) { return; } @@ -65,9 +79,14 @@ void ClassDefinition::WriteToStream(const StringPiece& prefix, bool final, std::string new_prefix = prefix.to_string(); new_prefix.append(kIndent); - for (const std::unique_ptr& member : members_) { - member->WriteToStream(new_prefix, final, out); - *out << "\n"; + for (const std::unique_ptr& member : ordered_members_) { + // There can be nullptr members when a member is added to the ClassDefinition + // and takes precedence over a previous member with the same name. The overridden member is + // set to nullptr. + if (member != nullptr) { + member->WriteToStream(new_prefix, final, out); + *out << "\n"; + } } *out << prefix << "}"; diff --git a/tools/aapt2/java/ClassDefinition.h b/tools/aapt2/java/ClassDefinition.h index ca76421390d6a5437204d284dc7768906b0060b4..28a3489e71a43814a9b7be5e7d714485ac0cf1b6 100644 --- a/tools/aapt2/java/ClassDefinition.h +++ b/tools/aapt2/java/ClassDefinition.h @@ -19,6 +19,8 @@ #include #include +#include +#include #include "android-base/macros.h" #include "androidfw/StringPiece.h" @@ -37,10 +39,14 @@ class ClassMember { public: virtual ~ClassMember() = default; - AnnotationProcessor* GetCommentBuilder() { return &processor_; } + AnnotationProcessor* GetCommentBuilder() { + return &processor_; + } virtual bool empty() const = 0; + virtual const std::string& GetName() const = 0; + // Writes the class member to the out stream. Subclasses should derive this method // to write their own data. Call this base method from the subclass to write out // this member's comments/annotations. @@ -57,33 +63,42 @@ class PrimitiveMember : public ClassMember { PrimitiveMember(const android::StringPiece& name, const T& val) : name_(name.to_string()), val_(val) {} - bool empty() const override { return false; } + bool empty() const override { + return false; + } + + const std::string& GetName() const override { + return name_; + } void WriteToStream(const android::StringPiece& prefix, bool final, std::ostream* out) const override { ClassMember::WriteToStream(prefix, final, out); - - *out << prefix << "public static " << (final ? "final " : "") << "int " - << name_ << "=" << val_ << ";"; + *out << prefix << "public static " << (final ? "final " : "") << "int " << name_ << "=" << val_ + << ";"; } private: + DISALLOW_COPY_AND_ASSIGN(PrimitiveMember); + std::string name_; T val_; - - DISALLOW_COPY_AND_ASSIGN(PrimitiveMember); }; -/** - * Specialization for strings so they get the right type and are quoted with "". - */ +// Specialization for strings so they get the right type and are quoted with "". template <> class PrimitiveMember : public ClassMember { public: PrimitiveMember(const android::StringPiece& name, const std::string& val) : name_(name.to_string()), val_(val) {} - bool empty() const override { return false; } + bool empty() const override { + return false; + } + + const std::string& GetName() const override { + return name_; + } void WriteToStream(const android::StringPiece& prefix, bool final, std::ostream* out) const override { @@ -94,10 +109,10 @@ class PrimitiveMember : public ClassMember { } private: + DISALLOW_COPY_AND_ASSIGN(PrimitiveMember); + std::string name_; std::string val_; - - DISALLOW_COPY_AND_ASSIGN(PrimitiveMember); }; using IntMember = PrimitiveMember; @@ -109,9 +124,17 @@ class PrimitiveArrayMember : public ClassMember { public: explicit PrimitiveArrayMember(const android::StringPiece& name) : name_(name.to_string()) {} - void AddElement(const T& val) { elements_.push_back(val); } + void AddElement(const T& val) { + elements_.push_back(val); + } - bool empty() const override { return false; } + bool empty() const override { + return false; + } + + const std::string& GetName() const override { + return name_; + } void WriteToStream(const android::StringPiece& prefix, bool final, std::ostream* out) const override { @@ -135,10 +158,10 @@ class PrimitiveArrayMember : public ClassMember { } private: + DISALLOW_COPY_AND_ASSIGN(PrimitiveArrayMember); + std::string name_; std::vector elements_; - - DISALLOW_COPY_AND_ASSIGN(PrimitiveArrayMember); }; using ResourceArrayMember = PrimitiveArrayMember; @@ -154,13 +177,22 @@ class MethodDefinition : public ClassMember { // formatting may be broken. void AppendStatement(const android::StringPiece& statement); + // Not quite the same as a name, but good enough. + const std::string& GetName() const override { + return signature_; + } + // Even if the method is empty, we always want to write the method signature. - bool empty() const override { return false; } + bool empty() const override { + return false; + } void WriteToStream(const android::StringPiece& prefix, bool final, std::ostream* out) const override; private: + DISALLOW_COPY_AND_ASSIGN(MethodDefinition); + std::string signature_; std::vector statements_; }; @@ -175,21 +207,30 @@ class ClassDefinition : public ClassMember { ClassDefinition(const android::StringPiece& name, ClassQualifier qualifier, bool createIfEmpty) : name_(name.to_string()), qualifier_(qualifier), create_if_empty_(createIfEmpty) {} - void AddMember(std::unique_ptr member) { - members_.push_back(std::move(member)); - } + enum class Result { + kAdded, + kOverridden, + }; + + Result AddMember(std::unique_ptr member); bool empty() const override; + + const std::string& GetName() const override { + return name_; + } + void WriteToStream(const android::StringPiece& prefix, bool final, std::ostream* out) const override; private: + DISALLOW_COPY_AND_ASSIGN(ClassDefinition); + std::string name_; ClassQualifier qualifier_; bool create_if_empty_; - std::vector> members_; - - DISALLOW_COPY_AND_ASSIGN(ClassDefinition); + std::vector> ordered_members_; + std::unordered_map indexed_members_; }; } // namespace aapt diff --git a/tools/aapt2/java/JavaClassGenerator.cpp b/tools/aapt2/java/JavaClassGenerator.cpp index 2a23aa9e5372b00a49050fa35fe3424388a5d2fb..44fa0f19a0e5bf197fff7d2f059bc7f370375cde 100644 --- a/tools/aapt2/java/JavaClassGenerator.cpp +++ b/tools/aapt2/java/JavaClassGenerator.cpp @@ -299,24 +299,16 @@ void JavaClassGenerator::ProcessStyleable(const ResourceNameRef& name, const Res } const ResourceName& attr_name = entry.attr_ref->name.value(); - styleable_comment << ""; - styleable_comment << "{@link #" << entry.field_name << " " - << (!attr_name.package.empty() - ? attr_name.package - : context_->GetCompilationPackage()) - << ":" << attr_name.entry << "}"; - styleable_comment << ""; - - styleable_comment << ""; + styleable_comment << "{@link #" << entry.field_name << " " + << (!attr_name.package.empty() ? attr_name.package + : context_->GetCompilationPackage()) + << ":" << attr_name.entry << "}"; // Only use the comment up until the first '.'. This is to stay compatible with // the way old AAPT did it (presumably to keep it short and to avoid including // annotations like @hide which would affect this Styleable). - auto iter = std::find(attr_comment_line.begin(), attr_comment_line.end(), '.'); - if (iter != attr_comment_line.end()) { - attr_comment_line = attr_comment_line.substr(0, (iter - attr_comment_line.begin()) + 1); - } - styleable_comment << attr_comment_line << "\n"; + styleable_comment << "" << AnnotationProcessor::ExtractFirstSentence(attr_comment_line) + << "\n"; } styleable_comment << "\n"; diff --git a/tools/aapt2/java/JavaClassGenerator_test.cpp b/tools/aapt2/java/JavaClassGenerator_test.cpp index 271279ff5e92af759164c7e6fcf50f74d9b98f23..84bf04134ad9c41fbed276cec2f83caadb9e2747 100644 --- a/tools/aapt2/java/JavaClassGenerator_test.cpp +++ b/tools/aapt2/java/JavaClassGenerator_test.cpp @@ -23,6 +23,8 @@ #include "util/Util.h" using android::StringPiece; +using ::testing::Lt; +using ::testing::Ne; namespace aapt { @@ -329,6 +331,53 @@ TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent) EXPECT_NE(std::string::npos, actual.find(styleable.GetComment().data())); } +TEST(JavaClassGeneratorTest, StyleableAndIndicesAreColocated) { + std::unique_ptr table = + test::ResourceTableBuilder() + .SetPackageId("android", 0x01) + .AddValue("android:attr/layout_gravity", util::make_unique()) + .AddValue("android:attr/background", util::make_unique()) + .AddValue("android:styleable/ActionBar", + test::StyleableBuilder() + .AddItem("android:attr/background", ResourceId(0x01010000)) + .Build()) + .AddValue("android:styleable/ActionBar.LayoutParams", + test::StyleableBuilder() + .AddItem("android:attr/layout_gravity", ResourceId(0x01010001)) + .Build()) + .Build(); + + std::unique_ptr context = + test::ContextBuilder() + .AddSymbolSource(util::make_unique(table.get())) + .SetNameManglerPolicy(NameManglerPolicy{"android"}) + .Build(); + + JavaClassGeneratorOptions options; + JavaClassGenerator generator(context.get(), table.get(), {}); + std::stringstream out; + ASSERT_TRUE(generator.Generate("android", &out)); + std::string output = out.str(); + + std::string::size_type actionbar_pos = output.find("int[] ActionBar"); + ASSERT_THAT(actionbar_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_background_pos = output.find("int ActionBar_background"); + ASSERT_THAT(actionbar_background_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_layout_params_pos = output.find("int[] ActionBar_LayoutParams"); + ASSERT_THAT(actionbar_layout_params_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_layout_params_layout_gravity_pos = + output.find("int ActionBar_LayoutParams_layout_gravity"); + ASSERT_THAT(actionbar_layout_params_layout_gravity_pos, Ne(std::string::npos)); + + EXPECT_THAT(actionbar_pos, Lt(actionbar_background_pos)); + EXPECT_THAT(actionbar_pos, Lt(actionbar_layout_params_pos)); + EXPECT_THAT(actionbar_background_pos, Lt(actionbar_layout_params_pos)); + EXPECT_THAT(actionbar_layout_params_pos, Lt(actionbar_layout_params_layout_gravity_pos)); +} + TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) { Attribute attr(false); attr.SetComment(StringPiece("removed")); diff --git a/tools/aapt2/java/ManifestClassGenerator.cpp b/tools/aapt2/java/ManifestClassGenerator.cpp index f49e4985fcf19af0cf951ac905d131f2325f5470..cad4c6c7c94fd03ef801efa25494164df3c3b0f8 100644 --- a/tools/aapt2/java/ManifestClassGenerator.cpp +++ b/tools/aapt2/java/ManifestClassGenerator.cpp @@ -81,7 +81,10 @@ static bool WriteSymbol(const Source& source, IDiagnostics* diag, util::make_unique(result.value(), attr->value); string_member->GetCommentBuilder()->AppendComment(el->comment); - class_def->AddMember(std::move(string_member)); + if (class_def->AddMember(std::move(string_member)) == ClassDefinition::Result::kOverridden) { + diag->Warn(DiagMessage(source.WithLine(el->line_number)) + << "duplicate definitions of '" << result.value() << "', overriding previous"); + } return true; } diff --git a/tools/aapt2/java/ManifestClassGenerator_test.cpp b/tools/aapt2/java/ManifestClassGenerator_test.cpp index 5ebf508807e8a677eee902259b3e7576eed2917c..44b6a1ffd5aeeebaada7b54ca1e20824ea7cb3eb 100644 --- a/tools/aapt2/java/ManifestClassGenerator_test.cpp +++ b/tools/aapt2/java/ManifestClassGenerator_test.cpp @@ -18,124 +18,130 @@ #include "test/Test.h" -namespace aapt { +using ::testing::HasSubstr; +using ::testing::Not; -static ::testing::AssertionResult GetManifestClassText(IAaptContext* context, - xml::XmlResource* res, - std::string* out_str) { - std::unique_ptr manifest_class = - GenerateManifestClass(context->GetDiagnostics(), res); - if (!manifest_class) { - return ::testing::AssertionFailure() << "manifest_class == nullptr"; - } - - std::stringstream out; - if (!manifest_class->WriteJavaFile(manifest_class.get(), "android", true, - &out)) { - return ::testing::AssertionFailure() << "failed to write java file"; - } +namespace aapt { - *out_str = out.str(); - return ::testing::AssertionSuccess(); -} +static ::testing::AssertionResult GetManifestClassText(IAaptContext* context, xml::XmlResource* res, + std::string* out_str); TEST(ManifestClassGeneratorTest, NameIsProperlyGeneratedFromSymbol) { std::unique_ptr context = test::ContextBuilder().Build(); - std::unique_ptr manifest = test::BuildXmlDom(R"EOF( - - - - - - )EOF"); + std::unique_ptr manifest = test::BuildXmlDom(R"( + + + + + + )"); std::string actual; ASSERT_TRUE(GetManifestClassText(context.get(), manifest.get(), &actual)); - const size_t permission_class_pos = - actual.find("public static final class permission {"); - const size_t permission_croup_class_pos = + ASSERT_THAT(actual, HasSubstr("public static final class permission {")); + ASSERT_THAT(actual, HasSubstr("public static final class permission_group {")); + + const size_t permission_start_pos = actual.find("public static final class permission {"); + const size_t permission_group_start_pos = actual.find("public static final class permission_group {"); - ASSERT_NE(std::string::npos, permission_class_pos); - ASSERT_NE(std::string::npos, permission_croup_class_pos); // // Make sure these permissions are in the permission class. // - - size_t pos = actual.find( - "public static final String ACCESS_INTERNET=" - "\"android.permission.ACCESS_INTERNET\";"); - EXPECT_GT(pos, permission_class_pos); - EXPECT_LT(pos, permission_croup_class_pos); - - pos = actual.find( - "public static final String DO_DANGEROUS_THINGS=" - "\"android.DO_DANGEROUS_THINGS\";"); - EXPECT_GT(pos, permission_class_pos); - EXPECT_LT(pos, permission_croup_class_pos); - - pos = actual.find( - "public static final String HUH=\"com.test.sample.permission.HUH\";"); - EXPECT_GT(pos, permission_class_pos); - EXPECT_LT(pos, permission_croup_class_pos); + const std::string permission_class = + actual.substr(permission_start_pos, permission_group_start_pos - permission_start_pos); + + EXPECT_THAT( + permission_class, + HasSubstr( + "public static final String ACCESS_INTERNET=\"android.permission.ACCESS_INTERNET\";")); + EXPECT_THAT( + permission_class, + HasSubstr("public static final String DO_DANGEROUS_THINGS=\"android.DO_DANGEROUS_THINGS\";")); + EXPECT_THAT(permission_class, + HasSubstr("public static final String HUH=\"com.test.sample.permission.HUH\";")); // // Make sure these permissions are in the permission_group class // + const std::string permission_group_class = actual.substr(permission_group_start_pos); - pos = actual.find( - "public static final String PERMISSION=" - "\"foo.bar.PERMISSION\";"); - EXPECT_GT(pos, permission_croup_class_pos); - EXPECT_LT(pos, std::string::npos); + EXPECT_THAT(permission_group_class, + HasSubstr("public static final String PERMISSION=\"foo.bar.PERMISSION\";")); } TEST(ManifestClassGeneratorTest, CommentsAndAnnotationsArePresent) { std::unique_ptr context = test::ContextBuilder().Build(); - std::unique_ptr manifest = test::BuildXmlDom(R"EOF( - - - - - - - - )EOF"); + std::unique_ptr manifest = test::BuildXmlDom(R"( + + + + + + + + )"); std::string actual; ASSERT_TRUE(GetManifestClassText(context.get(), manifest.get(), &actual)); - const char* expected_access_internet = - R"EOF( /** + const char* expected_access_internet = R"( /** * Required to access the internet. * Added in API 1. */ - public static final String ACCESS_INTERNET="android.permission.ACCESS_INTERNET";)EOF"; + public static final String ACCESS_INTERNET="android.permission.ACCESS_INTERNET";)"; + EXPECT_THAT(actual, HasSubstr(expected_access_internet)); - EXPECT_NE(std::string::npos, actual.find(expected_access_internet)); - - const char* expected_play_outside = - R"EOF( /** + const char* expected_play_outside = R"( /** * @deprecated This permission is for playing outside. */ @Deprecated - public static final String PLAY_OUTSIDE="android.permission.PLAY_OUTSIDE";)EOF"; - - EXPECT_NE(std::string::npos, actual.find(expected_play_outside)); + public static final String PLAY_OUTSIDE="android.permission.PLAY_OUTSIDE";)"; + EXPECT_THAT(actual, HasSubstr(expected_play_outside)); - const char* expected_secret = - R"EOF( /** + const char* expected_secret = R"( /** * This is a private permission for system only! * @hide */ @android.annotation.SystemApi - public static final String SECRET="android.permission.SECRET";)EOF"; + public static final String SECRET="android.permission.SECRET";)"; + EXPECT_THAT(actual, HasSubstr(expected_secret)); +} + +// This is bad but part of public API behaviour so we need to preserve it. +TEST(ManifestClassGeneratorTest, LastSeenPermissionWithSameLeafNameTakesPrecedence) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr manifest = test::BuildXmlDom(R"( + + + + )"); + + std::string actual; + ASSERT_TRUE(GetManifestClassText(context.get(), manifest.get(), &actual)); + EXPECT_THAT(actual, HasSubstr("ACCESS_INTERNET=\"com.android.aapt.test.ACCESS_INTERNET\";")); + EXPECT_THAT(actual, Not(HasSubstr("ACCESS_INTERNET=\"android.permission.ACCESS_INTERNET\";"))); +} + +static ::testing::AssertionResult GetManifestClassText(IAaptContext* context, xml::XmlResource* res, + std::string* out_str) { + std::unique_ptr manifest_class = + GenerateManifestClass(context->GetDiagnostics(), res); + if (!manifest_class) { + return ::testing::AssertionFailure() << "manifest_class == nullptr"; + } + + std::stringstream out; + if (!manifest_class->WriteJavaFile(manifest_class.get(), "android", true, &out)) { + return ::testing::AssertionFailure() << "failed to write java file"; + } - EXPECT_NE(std::string::npos, actual.find(expected_secret)); + *out_str = out.str(); + return ::testing::AssertionSuccess(); } } // namespace aapt diff --git a/tools/aapt2/java/ProguardRules.cpp b/tools/aapt2/java/ProguardRules.cpp index 624a559c4daedef28a4df829b209fa73223aebb4..10c46101123cc02601bb0d669d77b7f8da35e3d6 100644 --- a/tools/aapt2/java/ProguardRules.cpp +++ b/tools/aapt2/java/ProguardRules.cpp @@ -29,18 +29,12 @@ namespace proguard { class BaseVisitor : public xml::Visitor { public: - BaseVisitor(const Source& source, KeepSet* keep_set) - : source_(source), keep_set_(keep_set) {} + using xml::Visitor::Visit; - virtual void Visit(xml::Text*) override{}; - - virtual void Visit(xml::Namespace* node) override { - for (const auto& child : node->children) { - child->Accept(this); - } + BaseVisitor(const Source& source, KeepSet* keep_set) : source_(source), keep_set_(keep_set) { } - virtual void Visit(xml::Element* node) override { + void Visit(xml::Element* node) override { if (!node->namespace_uri.empty()) { Maybe maybe_package = xml::ExtractPackageFromNamespace(node->namespace_uri); @@ -78,14 +72,18 @@ class BaseVisitor : public xml::Visitor { class LayoutVisitor : public BaseVisitor { public: - LayoutVisitor(const Source& source, KeepSet* keep_set) - : BaseVisitor(source, keep_set) {} + LayoutVisitor(const Source& source, KeepSet* keep_set) : BaseVisitor(source, keep_set) { + } - virtual void Visit(xml::Element* node) override { + void Visit(xml::Element* node) override { bool check_class = false; bool check_name = false; if (node->namespace_uri.empty()) { - check_class = node->name == "view" || node->name == "fragment"; + if (node->name == "view") { + check_class = true; + } else if (node->name == "fragment") { + check_class = check_name = true; + } } else if (node->namespace_uri == xml::kSchemaAndroid) { check_name = node->name == "fragment"; } @@ -110,12 +108,38 @@ class LayoutVisitor : public BaseVisitor { DISALLOW_COPY_AND_ASSIGN(LayoutVisitor); }; +class MenuVisitor : public BaseVisitor { + public: + MenuVisitor(const Source& source, KeepSet* keep_set) : BaseVisitor(source, keep_set) { + } + + void Visit(xml::Element* node) override { + if (node->namespace_uri.empty() && node->name == "item") { + for (const auto& attr : node->attributes) { + if (attr.namespace_uri == xml::kSchemaAndroid) { + if ((attr.name == "actionViewClass" || attr.name == "actionProviderClass") && + util::IsJavaClassName(attr.value)) { + AddClass(node->line_number, attr.value); + } else if (attr.name == "onClick") { + AddMethod(node->line_number, attr.value); + } + } + } + } + + BaseVisitor::Visit(node); + } + + private: + DISALLOW_COPY_AND_ASSIGN(MenuVisitor); +}; + class XmlResourceVisitor : public BaseVisitor { public: - XmlResourceVisitor(const Source& source, KeepSet* keep_set) - : BaseVisitor(source, keep_set) {} + XmlResourceVisitor(const Source& source, KeepSet* keep_set) : BaseVisitor(source, keep_set) { + } - virtual void Visit(xml::Element* node) override { + void Visit(xml::Element* node) override { bool check_fragment = false; if (node->namespace_uri.empty()) { check_fragment = @@ -139,13 +163,12 @@ class XmlResourceVisitor : public BaseVisitor { class TransitionVisitor : public BaseVisitor { public: - TransitionVisitor(const Source& source, KeepSet* keep_set) - : BaseVisitor(source, keep_set) {} + TransitionVisitor(const Source& source, KeepSet* keep_set) : BaseVisitor(source, keep_set) { + } - virtual void Visit(xml::Element* node) override { + void Visit(xml::Element* node) override { bool check_class = - node->namespace_uri.empty() && - (node->name == "transition" || node->name == "pathMotion"); + node->namespace_uri.empty() && (node->name == "transition" || node->name == "pathMotion"); if (check_class) { xml::Attribute* attr = node->FindAttribute({}, "class"); if (attr && util::IsJavaClassName(attr->value)) { @@ -165,7 +188,7 @@ class ManifestVisitor : public BaseVisitor { ManifestVisitor(const Source& source, KeepSet* keep_set, bool main_dex_only) : BaseVisitor(source, keep_set), main_dex_only_(main_dex_only) {} - virtual void Visit(xml::Element* node) override { + void Visit(xml::Element* node) override { if (node->namespace_uri.empty()) { bool get_name = false; if (node->name == "manifest") { @@ -175,18 +198,15 @@ class ManifestVisitor : public BaseVisitor { } } else if (node->name == "application") { get_name = true; - xml::Attribute* attr = - node->FindAttribute(xml::kSchemaAndroid, "backupAgent"); + xml::Attribute* attr = node->FindAttribute(xml::kSchemaAndroid, "backupAgent"); if (attr) { - Maybe result = - util::GetFullyQualifiedClassName(package_, attr->value); + Maybe result = util::GetFullyQualifiedClassName(package_, attr->value); if (result) { AddClass(node->line_number, result.value()); } } if (main_dex_only_) { - xml::Attribute* default_process = - node->FindAttribute(xml::kSchemaAndroid, "process"); + xml::Attribute* default_process = node->FindAttribute(xml::kSchemaAndroid, "process"); if (default_process) { default_process_ = default_process->value; } @@ -196,8 +216,7 @@ class ManifestVisitor : public BaseVisitor { get_name = true; if (main_dex_only_) { - xml::Attribute* component_process = - node->FindAttribute(xml::kSchemaAndroid, "process"); + xml::Attribute* component_process = node->FindAttribute(xml::kSchemaAndroid, "process"); const std::string& process = component_process ? component_process->value : default_process_; @@ -212,8 +231,7 @@ class ManifestVisitor : public BaseVisitor { get_name = attr != nullptr; if (get_name) { - Maybe result = - util::GetFullyQualifiedClassName(package_, attr->value); + Maybe result = util::GetFullyQualifiedClassName(package_, attr->value); if (result) { AddClass(node->line_number, result.value()); } @@ -231,8 +249,7 @@ class ManifestVisitor : public BaseVisitor { std::string default_process_; }; -bool CollectProguardRulesForManifest(const Source& source, - xml::XmlResource* res, KeepSet* keep_set, +bool CollectProguardRulesForManifest(const Source& source, xml::XmlResource* res, KeepSet* keep_set, bool main_dex_only) { ManifestVisitor visitor(source, keep_set, main_dex_only); if (res->root) { @@ -242,8 +259,7 @@ bool CollectProguardRulesForManifest(const Source& source, return false; } -bool CollectProguardRules(const Source& source, xml::XmlResource* res, - KeepSet* keep_set) { +bool CollectProguardRules(const Source& source, xml::XmlResource* res, KeepSet* keep_set) { if (!res->root) { return false; } @@ -267,6 +283,12 @@ bool CollectProguardRules(const Source& source, xml::XmlResource* res, break; } + case ResourceType::kMenu: { + MenuVisitor visitor(source, keep_set); + res->root->Accept(&visitor); + break; + } + default: break; } @@ -285,8 +307,7 @@ bool WriteKeepSet(std::ostream* out, const KeepSet& keep_set) { for (const Source& source : entry.second) { *out << "# Referenced at " << source << "\n"; } - *out << "-keepclassmembers class * { *** " << entry.first << "(...); }\n" - << std::endl; + *out << "-keepclassmembers class * { *** " << entry.first << "(...); }\n" << std::endl; } return true; } diff --git a/tools/aapt2/java/ProguardRules_test.cpp b/tools/aapt2/java/ProguardRules_test.cpp new file mode 100644 index 0000000000000000000000000000000000000000..900b07339715efa3ca9c130c384d9743b157388c --- /dev/null +++ b/tools/aapt2/java/ProguardRules_test.cpp @@ -0,0 +1,119 @@ +/* + * 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. + */ + +#include "java/ProguardRules.h" + +#include "test/Test.h" + +using ::testing::HasSubstr; +using ::testing::Not; + +namespace aapt { + +TEST(ProguardRulesTest, FragmentNameRuleIsEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr layout = test::BuildXmlDom(R"( + )"); + layout->file.name = test::ParseNameOrDie("layout/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules({}, layout.get(), &set)); + + std::stringstream out; + ASSERT_TRUE(proguard::WriteKeepSet(&out, set)); + + std::string actual = out.str(); + EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); +} + +TEST(ProguardRulesTest, FragmentClassRuleIsEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr layout = + test::BuildXmlDom(R"()"); + layout->file.name = test::ParseNameOrDie("layout/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules({}, layout.get(), &set)); + + std::stringstream out; + ASSERT_TRUE(proguard::WriteKeepSet(&out, set)); + + std::string actual = out.str(); + EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); +} + +TEST(ProguardRulesTest, FragmentNameAndClassRulesAreEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr layout = test::BuildXmlDom(R"( + )"); + layout->file.name = test::ParseNameOrDie("layout/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules({}, layout.get(), &set)); + + std::stringstream out; + ASSERT_TRUE(proguard::WriteKeepSet(&out, set)); + + std::string actual = out.str(); + EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); + EXPECT_THAT(actual, HasSubstr("com.foo.Baz")); +} + +TEST(ProguardRulesTest, ViewOnClickRuleIsEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr layout = test::BuildXmlDom(R"( + )"); + layout->file.name = test::ParseNameOrDie("layout/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules({}, layout.get(), &set)); + + std::stringstream out; + ASSERT_TRUE(proguard::WriteKeepSet(&out, set)); + + std::string actual = out.str(); + EXPECT_THAT(actual, HasSubstr("bar_method")); +} + +TEST(ProguardRulesTest, MenuRulesAreEmitted) { + std::unique_ptr context = test::ContextBuilder().Build(); + std::unique_ptr menu = test::BuildXmlDom(R"( + + + )"); + menu->file.name = test::ParseNameOrDie("menu/foo"); + + proguard::KeepSet set; + ASSERT_TRUE(proguard::CollectProguardRules({}, menu.get(), &set)); + + std::stringstream out; + ASSERT_TRUE(proguard::WriteKeepSet(&out, set)); + + std::string actual = out.str(); + EXPECT_THAT(actual, HasSubstr("on_click")); + EXPECT_THAT(actual, HasSubstr("com.foo.Bar")); + EXPECT_THAT(actual, HasSubstr("com.foo.Baz")); + EXPECT_THAT(actual, Not(HasSubstr("com.foo.Bat"))); +} + +} // namespace aapt diff --git a/tools/aapt2/link/AutoVersioner_test.cpp b/tools/aapt2/link/AutoVersioner_test.cpp index 755af0a1c6cc9907ae4cf8a09c2b848e42ee0317..49639f8ad5495e80e9ddf6a12d6a05ad8af21efb 100644 --- a/tools/aapt2/link/AutoVersioner_test.cpp +++ b/tools/aapt2/link/AutoVersioner_test.cpp @@ -19,43 +19,34 @@ #include "ConfigDescription.h" #include "test/Test.h" +using ::testing::NotNull; + namespace aapt { TEST(AutoVersionerTest, GenerateVersionedResources) { const ConfigDescription land_config = test::ParseConfigOrDie("land"); - const ConfigDescription sw600dp_land_config = - test::ParseConfigOrDie("sw600dp-land"); + const ConfigDescription sw600dp_land_config = test::ParseConfigOrDie("sw600dp-land"); ResourceEntry entry("foo"); - entry.values.push_back(util::make_unique( - ConfigDescription::DefaultConfig(), "")); - entry.values.push_back( - util::make_unique(land_config, "")); - entry.values.push_back( - util::make_unique(sw600dp_land_config, "")); - - EXPECT_TRUE(ShouldGenerateVersionedResource( - &entry, ConfigDescription::DefaultConfig(), 17)); + entry.values.push_back(util::make_unique(ConfigDescription::DefaultConfig(), "")); + entry.values.push_back(util::make_unique(land_config, "")); + entry.values.push_back(util::make_unique(sw600dp_land_config, "")); + + EXPECT_TRUE(ShouldGenerateVersionedResource(&entry, ConfigDescription::DefaultConfig(), 17)); EXPECT_TRUE(ShouldGenerateVersionedResource(&entry, land_config, 17)); } TEST(AutoVersionerTest, GenerateVersionedResourceWhenHigherVersionExists) { - const ConfigDescription sw600dp_v13_config = - test::ParseConfigOrDie("sw600dp-v13"); + const ConfigDescription sw600dp_v13_config = test::ParseConfigOrDie("sw600dp-v13"); const ConfigDescription v21_config = test::ParseConfigOrDie("v21"); ResourceEntry entry("foo"); - entry.values.push_back(util::make_unique( - ConfigDescription::DefaultConfig(), "")); - entry.values.push_back( - util::make_unique(sw600dp_v13_config, "")); - entry.values.push_back( - util::make_unique(v21_config, "")); - - EXPECT_TRUE(ShouldGenerateVersionedResource( - &entry, ConfigDescription::DefaultConfig(), 17)); - EXPECT_FALSE(ShouldGenerateVersionedResource( - &entry, ConfigDescription::DefaultConfig(), 22)); + entry.values.push_back(util::make_unique(ConfigDescription::DefaultConfig(), "")); + entry.values.push_back(util::make_unique(sw600dp_v13_config, "")); + entry.values.push_back(util::make_unique(v21_config, "")); + + EXPECT_TRUE(ShouldGenerateVersionedResource(&entry, ConfigDescription::DefaultConfig(), 17)); + EXPECT_FALSE(ShouldGenerateVersionedResource(&entry, ConfigDescription::DefaultConfig(), 22)); } TEST(AutoVersionerTest, VersionStylesForTable) { @@ -92,46 +83,28 @@ TEST(AutoVersionerTest, VersionStylesForTable) { AutoVersioner versioner; ASSERT_TRUE(versioner.Consume(context.get(), table.get())); - Style* style = test::GetValueForConfig